AceTime  2.3.0
Date and time classes for Arduino that support timezones from the TZ Database.
zone_policies.cpp
1 // This file was generated by the following script:
2 //
3 // $ /home/brian/src/AceTimeTools/src/acetimetools/tzcompiler.py
4 // --input_dir /home/brian/src/AceTime/src/zonedbc/tzfiles
5 // --output_dir /home/brian/src/AceTime/src/zonedbc
6 // --tz_version 2023c
7 // --action zonedb
8 // --language arduino
9 // --scope complete
10 // --db_namespace zonedbc
11 // --start_year 1800
12 // --until_year 2200
13 //
14 // using the TZ Database files
15 //
16 // africa
17 // antarctica
18 // asia
19 // australasia
20 // backward
21 // etcetera
22 // europe
23 // northamerica
24 // southamerica
25 //
26 // from https://github.com/eggert/tz/releases/tag/2023c
27 //
28 // Supported Zones: 596 (350 zones, 246 links)
29 // Unsupported Zones: 0 (0 zones, 0 links)
30 //
31 // Requested Years: [1800,2200]
32 // Accurate Years: [-32767,32767]
33 //
34 // Original Years: [1844,2087]
35 // Generated Years: [1844,2087]
36 // Lower/Upper Truncated: [False,False]
37 //
38 // Estimator Years: [1800,2090]
39 // Max Buffer Size: 8
40 //
41 // Records:
42 // Infos: 596
43 // Eras: 1949
44 // Policies: 134
45 // Rules: 2238
46 //
47 // Memory (8-bits):
48 // Context: 16
49 // Rules: 26856
50 // Policies: 402
51 // Eras: 29235
52 // Zones: 4550
53 // Links: 3198
54 // Registry: 1192
55 // Formats: 1032
56 // Letters: 160
57 // Fragments: 150
58 // Names: 5649 (original: 9076)
59 // TOTAL: 72440
60 //
61 // Memory (32-bits):
62 // Context: 24
63 // Rules: 26856
64 // Policies: 1072
65 // Eras: 38980
66 // Zones: 8400
67 // Links: 5904
68 // Registry: 2384
69 // Formats: 1032
70 // Letters: 216
71 // Fragments: 178
72 // Names: 5649 (original: 9076)
73 // TOTAL: 90695
74 //
75 // DO NOT EDIT
76 
77 #include <zoneinfo/compat.h>
78 #include "zone_policies.h"
79 
80 namespace ace_time {
81 namespace zonedbc {
82 
83 //---------------------------------------------------------------------------
84 // Policies: 134
85 // Rules: 2238
86 //---------------------------------------------------------------------------
87 
88 //---------------------------------------------------------------------------
89 // Policy name: AN
90 // Rules: 17
91 //---------------------------------------------------------------------------
92 
93 static const complete::ZoneRule kZoneRulesAN[] ACE_TIME_PROGMEM = {
94  // Anchor: Rule AN 1972 only - Feb 27 2:00s 0 S
95  {
96  -32767 /*fromYear*/,
97  -32767 /*toYear*/,
98  1 /*inMonth*/,
99  0 /*onDayOfWeek*/,
100  1 /*onDayOfMonth*/,
101  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
102  0 /*atTimeCode (0/15)*/,
103  0 /*deltaMinutes*/,
104  25 /*letterIndex ("S")*/,
105  },
106  // Rule AN 1971 1985 - Oct lastSun 2:00s 1:00 D
107  {
108  1971 /*fromYear*/,
109  1985 /*toYear*/,
110  10 /*inMonth*/,
111  7 /*onDayOfWeek*/,
112  0 /*onDayOfMonth*/,
113  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
114  480 /*atTimeCode (7200/15)*/,
115  60 /*deltaMinutes*/,
116  13 /*letterIndex ("D")*/,
117  },
118  // Rule AN 1972 only - Feb 27 2:00s 0 S
119  {
120  1972 /*fromYear*/,
121  1972 /*toYear*/,
122  2 /*inMonth*/,
123  0 /*onDayOfWeek*/,
124  27 /*onDayOfMonth*/,
125  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
126  480 /*atTimeCode (7200/15)*/,
127  0 /*deltaMinutes*/,
128  25 /*letterIndex ("S")*/,
129  },
130  // Rule AN 1973 1981 - Mar Sun>=1 2:00s 0 S
131  {
132  1973 /*fromYear*/,
133  1981 /*toYear*/,
134  3 /*inMonth*/,
135  7 /*onDayOfWeek*/,
136  1 /*onDayOfMonth*/,
137  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
138  480 /*atTimeCode (7200/15)*/,
139  0 /*deltaMinutes*/,
140  25 /*letterIndex ("S")*/,
141  },
142  // Rule AN 1982 only - Apr Sun>=1 2:00s 0 S
143  {
144  1982 /*fromYear*/,
145  1982 /*toYear*/,
146  4 /*inMonth*/,
147  7 /*onDayOfWeek*/,
148  1 /*onDayOfMonth*/,
149  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
150  480 /*atTimeCode (7200/15)*/,
151  0 /*deltaMinutes*/,
152  25 /*letterIndex ("S")*/,
153  },
154  // Rule AN 1983 1985 - Mar Sun>=1 2:00s 0 S
155  {
156  1983 /*fromYear*/,
157  1985 /*toYear*/,
158  3 /*inMonth*/,
159  7 /*onDayOfWeek*/,
160  1 /*onDayOfMonth*/,
161  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
162  480 /*atTimeCode (7200/15)*/,
163  0 /*deltaMinutes*/,
164  25 /*letterIndex ("S")*/,
165  },
166  // Rule AN 1986 1989 - Mar Sun>=15 2:00s 0 S
167  {
168  1986 /*fromYear*/,
169  1989 /*toYear*/,
170  3 /*inMonth*/,
171  7 /*onDayOfWeek*/,
172  15 /*onDayOfMonth*/,
173  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
174  480 /*atTimeCode (7200/15)*/,
175  0 /*deltaMinutes*/,
176  25 /*letterIndex ("S")*/,
177  },
178  // Rule AN 1986 only - Oct 19 2:00s 1:00 D
179  {
180  1986 /*fromYear*/,
181  1986 /*toYear*/,
182  10 /*inMonth*/,
183  0 /*onDayOfWeek*/,
184  19 /*onDayOfMonth*/,
185  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
186  480 /*atTimeCode (7200/15)*/,
187  60 /*deltaMinutes*/,
188  13 /*letterIndex ("D")*/,
189  },
190  // Rule AN 1987 1999 - Oct lastSun 2:00s 1:00 D
191  {
192  1987 /*fromYear*/,
193  1999 /*toYear*/,
194  10 /*inMonth*/,
195  7 /*onDayOfWeek*/,
196  0 /*onDayOfMonth*/,
197  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
198  480 /*atTimeCode (7200/15)*/,
199  60 /*deltaMinutes*/,
200  13 /*letterIndex ("D")*/,
201  },
202  // Rule AN 1990 1995 - Mar Sun>=1 2:00s 0 S
203  {
204  1990 /*fromYear*/,
205  1995 /*toYear*/,
206  3 /*inMonth*/,
207  7 /*onDayOfWeek*/,
208  1 /*onDayOfMonth*/,
209  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
210  480 /*atTimeCode (7200/15)*/,
211  0 /*deltaMinutes*/,
212  25 /*letterIndex ("S")*/,
213  },
214  // Rule AN 1996 2005 - Mar lastSun 2:00s 0 S
215  {
216  1996 /*fromYear*/,
217  2005 /*toYear*/,
218  3 /*inMonth*/,
219  7 /*onDayOfWeek*/,
220  0 /*onDayOfMonth*/,
221  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
222  480 /*atTimeCode (7200/15)*/,
223  0 /*deltaMinutes*/,
224  25 /*letterIndex ("S")*/,
225  },
226  // Rule AN 2000 only - Aug lastSun 2:00s 1:00 D
227  {
228  2000 /*fromYear*/,
229  2000 /*toYear*/,
230  8 /*inMonth*/,
231  7 /*onDayOfWeek*/,
232  0 /*onDayOfMonth*/,
233  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
234  480 /*atTimeCode (7200/15)*/,
235  60 /*deltaMinutes*/,
236  13 /*letterIndex ("D")*/,
237  },
238  // Rule AN 2001 2007 - Oct lastSun 2:00s 1:00 D
239  {
240  2001 /*fromYear*/,
241  2007 /*toYear*/,
242  10 /*inMonth*/,
243  7 /*onDayOfWeek*/,
244  0 /*onDayOfMonth*/,
245  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
246  480 /*atTimeCode (7200/15)*/,
247  60 /*deltaMinutes*/,
248  13 /*letterIndex ("D")*/,
249  },
250  // Rule AN 2006 only - Apr Sun>=1 2:00s 0 S
251  {
252  2006 /*fromYear*/,
253  2006 /*toYear*/,
254  4 /*inMonth*/,
255  7 /*onDayOfWeek*/,
256  1 /*onDayOfMonth*/,
257  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
258  480 /*atTimeCode (7200/15)*/,
259  0 /*deltaMinutes*/,
260  25 /*letterIndex ("S")*/,
261  },
262  // Rule AN 2007 only - Mar lastSun 2:00s 0 S
263  {
264  2007 /*fromYear*/,
265  2007 /*toYear*/,
266  3 /*inMonth*/,
267  7 /*onDayOfWeek*/,
268  0 /*onDayOfMonth*/,
269  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
270  480 /*atTimeCode (7200/15)*/,
271  0 /*deltaMinutes*/,
272  25 /*letterIndex ("S")*/,
273  },
274  // Rule AN 2008 max - Apr Sun>=1 2:00s 0 S
275  {
276  2008 /*fromYear*/,
277  32766 /*toYear*/,
278  4 /*inMonth*/,
279  7 /*onDayOfWeek*/,
280  1 /*onDayOfMonth*/,
281  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
282  480 /*atTimeCode (7200/15)*/,
283  0 /*deltaMinutes*/,
284  25 /*letterIndex ("S")*/,
285  },
286  // Rule AN 2008 max - Oct Sun>=1 2:00s 1:00 D
287  {
288  2008 /*fromYear*/,
289  32766 /*toYear*/,
290  10 /*inMonth*/,
291  7 /*onDayOfWeek*/,
292  1 /*onDayOfMonth*/,
293  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
294  480 /*atTimeCode (7200/15)*/,
295  60 /*deltaMinutes*/,
296  13 /*letterIndex ("D")*/,
297  },
298 
299 };
300 
301 const complete::ZonePolicy kZonePolicyAN ACE_TIME_PROGMEM = {
302  kZoneRulesAN /*rules*/,
303  17 /*numRules*/,
304 };
305 
306 //---------------------------------------------------------------------------
307 // Policy name: AQ
308 // Rules: 5
309 //---------------------------------------------------------------------------
310 
311 static const complete::ZoneRule kZoneRulesAQ[] ACE_TIME_PROGMEM = {
312  // Anchor: Rule AQ 1972 only - Feb lastSun 2:00s 0 S
313  {
314  -32767 /*fromYear*/,
315  -32767 /*toYear*/,
316  1 /*inMonth*/,
317  0 /*onDayOfWeek*/,
318  1 /*onDayOfMonth*/,
319  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
320  0 /*atTimeCode (0/15)*/,
321  0 /*deltaMinutes*/,
322  25 /*letterIndex ("S")*/,
323  },
324  // Rule AQ 1971 only - Oct lastSun 2:00s 1:00 D
325  {
326  1971 /*fromYear*/,
327  1971 /*toYear*/,
328  10 /*inMonth*/,
329  7 /*onDayOfWeek*/,
330  0 /*onDayOfMonth*/,
331  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
332  480 /*atTimeCode (7200/15)*/,
333  60 /*deltaMinutes*/,
334  13 /*letterIndex ("D")*/,
335  },
336  // Rule AQ 1972 only - Feb lastSun 2:00s 0 S
337  {
338  1972 /*fromYear*/,
339  1972 /*toYear*/,
340  2 /*inMonth*/,
341  7 /*onDayOfWeek*/,
342  0 /*onDayOfMonth*/,
343  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
344  480 /*atTimeCode (7200/15)*/,
345  0 /*deltaMinutes*/,
346  25 /*letterIndex ("S")*/,
347  },
348  // Rule AQ 1989 1991 - Oct lastSun 2:00s 1:00 D
349  {
350  1989 /*fromYear*/,
351  1991 /*toYear*/,
352  10 /*inMonth*/,
353  7 /*onDayOfWeek*/,
354  0 /*onDayOfMonth*/,
355  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
356  480 /*atTimeCode (7200/15)*/,
357  60 /*deltaMinutes*/,
358  13 /*letterIndex ("D")*/,
359  },
360  // Rule AQ 1990 1992 - Mar Sun>=1 2:00s 0 S
361  {
362  1990 /*fromYear*/,
363  1992 /*toYear*/,
364  3 /*inMonth*/,
365  7 /*onDayOfWeek*/,
366  1 /*onDayOfMonth*/,
367  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
368  480 /*atTimeCode (7200/15)*/,
369  0 /*deltaMinutes*/,
370  25 /*letterIndex ("S")*/,
371  },
372 
373 };
374 
375 const complete::ZonePolicy kZonePolicyAQ ACE_TIME_PROGMEM = {
376  kZoneRulesAQ /*rules*/,
377  5 /*numRules*/,
378 };
379 
380 //---------------------------------------------------------------------------
381 // Policy name: AS
382 // Rules: 16
383 //---------------------------------------------------------------------------
384 
385 static const complete::ZoneRule kZoneRulesAS[] ACE_TIME_PROGMEM = {
386  // Anchor: Rule AS 1972 only - Feb 27 2:00s 0 S
387  {
388  -32767 /*fromYear*/,
389  -32767 /*toYear*/,
390  1 /*inMonth*/,
391  0 /*onDayOfWeek*/,
392  1 /*onDayOfMonth*/,
393  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
394  0 /*atTimeCode (0/15)*/,
395  0 /*deltaMinutes*/,
396  25 /*letterIndex ("S")*/,
397  },
398  // Rule AS 1971 1985 - Oct lastSun 2:00s 1:00 D
399  {
400  1971 /*fromYear*/,
401  1985 /*toYear*/,
402  10 /*inMonth*/,
403  7 /*onDayOfWeek*/,
404  0 /*onDayOfMonth*/,
405  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
406  480 /*atTimeCode (7200/15)*/,
407  60 /*deltaMinutes*/,
408  13 /*letterIndex ("D")*/,
409  },
410  // Rule AS 1986 only - Oct 19 2:00s 1:00 D
411  {
412  1986 /*fromYear*/,
413  1986 /*toYear*/,
414  10 /*inMonth*/,
415  0 /*onDayOfWeek*/,
416  19 /*onDayOfMonth*/,
417  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
418  480 /*atTimeCode (7200/15)*/,
419  60 /*deltaMinutes*/,
420  13 /*letterIndex ("D")*/,
421  },
422  // Rule AS 1987 2007 - Oct lastSun 2:00s 1:00 D
423  {
424  1987 /*fromYear*/,
425  2007 /*toYear*/,
426  10 /*inMonth*/,
427  7 /*onDayOfWeek*/,
428  0 /*onDayOfMonth*/,
429  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
430  480 /*atTimeCode (7200/15)*/,
431  60 /*deltaMinutes*/,
432  13 /*letterIndex ("D")*/,
433  },
434  // Rule AS 1972 only - Feb 27 2:00s 0 S
435  {
436  1972 /*fromYear*/,
437  1972 /*toYear*/,
438  2 /*inMonth*/,
439  0 /*onDayOfWeek*/,
440  27 /*onDayOfMonth*/,
441  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
442  480 /*atTimeCode (7200/15)*/,
443  0 /*deltaMinutes*/,
444  25 /*letterIndex ("S")*/,
445  },
446  // Rule AS 1973 1985 - Mar Sun>=1 2:00s 0 S
447  {
448  1973 /*fromYear*/,
449  1985 /*toYear*/,
450  3 /*inMonth*/,
451  7 /*onDayOfWeek*/,
452  1 /*onDayOfMonth*/,
453  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
454  480 /*atTimeCode (7200/15)*/,
455  0 /*deltaMinutes*/,
456  25 /*letterIndex ("S")*/,
457  },
458  // Rule AS 1986 1990 - Mar Sun>=15 2:00s 0 S
459  {
460  1986 /*fromYear*/,
461  1990 /*toYear*/,
462  3 /*inMonth*/,
463  7 /*onDayOfWeek*/,
464  15 /*onDayOfMonth*/,
465  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
466  480 /*atTimeCode (7200/15)*/,
467  0 /*deltaMinutes*/,
468  25 /*letterIndex ("S")*/,
469  },
470  // Rule AS 1991 only - Mar 3 2:00s 0 S
471  {
472  1991 /*fromYear*/,
473  1991 /*toYear*/,
474  3 /*inMonth*/,
475  0 /*onDayOfWeek*/,
476  3 /*onDayOfMonth*/,
477  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
478  480 /*atTimeCode (7200/15)*/,
479  0 /*deltaMinutes*/,
480  25 /*letterIndex ("S")*/,
481  },
482  // Rule AS 1992 only - Mar 22 2:00s 0 S
483  {
484  1992 /*fromYear*/,
485  1992 /*toYear*/,
486  3 /*inMonth*/,
487  0 /*onDayOfWeek*/,
488  22 /*onDayOfMonth*/,
489  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
490  480 /*atTimeCode (7200/15)*/,
491  0 /*deltaMinutes*/,
492  25 /*letterIndex ("S")*/,
493  },
494  // Rule AS 1993 only - Mar 7 2:00s 0 S
495  {
496  1993 /*fromYear*/,
497  1993 /*toYear*/,
498  3 /*inMonth*/,
499  0 /*onDayOfWeek*/,
500  7 /*onDayOfMonth*/,
501  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
502  480 /*atTimeCode (7200/15)*/,
503  0 /*deltaMinutes*/,
504  25 /*letterIndex ("S")*/,
505  },
506  // Rule AS 1994 only - Mar 20 2:00s 0 S
507  {
508  1994 /*fromYear*/,
509  1994 /*toYear*/,
510  3 /*inMonth*/,
511  0 /*onDayOfWeek*/,
512  20 /*onDayOfMonth*/,
513  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
514  480 /*atTimeCode (7200/15)*/,
515  0 /*deltaMinutes*/,
516  25 /*letterIndex ("S")*/,
517  },
518  // Rule AS 1995 2005 - Mar lastSun 2:00s 0 S
519  {
520  1995 /*fromYear*/,
521  2005 /*toYear*/,
522  3 /*inMonth*/,
523  7 /*onDayOfWeek*/,
524  0 /*onDayOfMonth*/,
525  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
526  480 /*atTimeCode (7200/15)*/,
527  0 /*deltaMinutes*/,
528  25 /*letterIndex ("S")*/,
529  },
530  // Rule AS 2006 only - Apr 2 2:00s 0 S
531  {
532  2006 /*fromYear*/,
533  2006 /*toYear*/,
534  4 /*inMonth*/,
535  0 /*onDayOfWeek*/,
536  2 /*onDayOfMonth*/,
537  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
538  480 /*atTimeCode (7200/15)*/,
539  0 /*deltaMinutes*/,
540  25 /*letterIndex ("S")*/,
541  },
542  // Rule AS 2007 only - Mar lastSun 2:00s 0 S
543  {
544  2007 /*fromYear*/,
545  2007 /*toYear*/,
546  3 /*inMonth*/,
547  7 /*onDayOfWeek*/,
548  0 /*onDayOfMonth*/,
549  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
550  480 /*atTimeCode (7200/15)*/,
551  0 /*deltaMinutes*/,
552  25 /*letterIndex ("S")*/,
553  },
554  // Rule AS 2008 max - Apr Sun>=1 2:00s 0 S
555  {
556  2008 /*fromYear*/,
557  32766 /*toYear*/,
558  4 /*inMonth*/,
559  7 /*onDayOfWeek*/,
560  1 /*onDayOfMonth*/,
561  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
562  480 /*atTimeCode (7200/15)*/,
563  0 /*deltaMinutes*/,
564  25 /*letterIndex ("S")*/,
565  },
566  // Rule AS 2008 max - Oct Sun>=1 2:00s 1:00 D
567  {
568  2008 /*fromYear*/,
569  32766 /*toYear*/,
570  10 /*inMonth*/,
571  7 /*onDayOfWeek*/,
572  1 /*onDayOfMonth*/,
573  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
574  480 /*atTimeCode (7200/15)*/,
575  60 /*deltaMinutes*/,
576  13 /*letterIndex ("D")*/,
577  },
578 
579 };
580 
581 const complete::ZonePolicy kZonePolicyAS ACE_TIME_PROGMEM = {
582  kZoneRulesAS /*rules*/,
583  16 /*numRules*/,
584 };
585 
586 //---------------------------------------------------------------------------
587 // Policy name: AT
588 // Rules: 24
589 //---------------------------------------------------------------------------
590 
591 static const complete::ZoneRule kZoneRulesAT[] ACE_TIME_PROGMEM = {
592  // Anchor: Rule AT 1917 only - Mar lastSun 2:00s 0 S
593  {
594  -32767 /*fromYear*/,
595  -32767 /*toYear*/,
596  1 /*inMonth*/,
597  0 /*onDayOfWeek*/,
598  1 /*onDayOfMonth*/,
599  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
600  0 /*atTimeCode (0/15)*/,
601  0 /*deltaMinutes*/,
602  25 /*letterIndex ("S")*/,
603  },
604  // Rule AT 1916 only - Oct Sun>=1 2:00s 1:00 D
605  {
606  1916 /*fromYear*/,
607  1916 /*toYear*/,
608  10 /*inMonth*/,
609  7 /*onDayOfWeek*/,
610  1 /*onDayOfMonth*/,
611  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
612  480 /*atTimeCode (7200/15)*/,
613  60 /*deltaMinutes*/,
614  13 /*letterIndex ("D")*/,
615  },
616  // Rule AT 1917 only - Mar lastSun 2:00s 0 S
617  {
618  1917 /*fromYear*/,
619  1917 /*toYear*/,
620  3 /*inMonth*/,
621  7 /*onDayOfWeek*/,
622  0 /*onDayOfMonth*/,
623  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
624  480 /*atTimeCode (7200/15)*/,
625  0 /*deltaMinutes*/,
626  25 /*letterIndex ("S")*/,
627  },
628  // Rule AT 1917 1918 - Oct Sun>=22 2:00s 1:00 D
629  {
630  1917 /*fromYear*/,
631  1918 /*toYear*/,
632  10 /*inMonth*/,
633  7 /*onDayOfWeek*/,
634  22 /*onDayOfMonth*/,
635  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
636  480 /*atTimeCode (7200/15)*/,
637  60 /*deltaMinutes*/,
638  13 /*letterIndex ("D")*/,
639  },
640  // Rule AT 1918 1919 - Mar Sun>=1 2:00s 0 S
641  {
642  1918 /*fromYear*/,
643  1919 /*toYear*/,
644  3 /*inMonth*/,
645  7 /*onDayOfWeek*/,
646  1 /*onDayOfMonth*/,
647  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
648  480 /*atTimeCode (7200/15)*/,
649  0 /*deltaMinutes*/,
650  25 /*letterIndex ("S")*/,
651  },
652  // Rule AT 1967 only - Oct Sun>=1 2:00s 1:00 D
653  {
654  1967 /*fromYear*/,
655  1967 /*toYear*/,
656  10 /*inMonth*/,
657  7 /*onDayOfWeek*/,
658  1 /*onDayOfMonth*/,
659  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
660  480 /*atTimeCode (7200/15)*/,
661  60 /*deltaMinutes*/,
662  13 /*letterIndex ("D")*/,
663  },
664  // Rule AT 1968 only - Mar Sun>=29 2:00s 0 S
665  {
666  1968 /*fromYear*/,
667  1968 /*toYear*/,
668  3 /*inMonth*/,
669  7 /*onDayOfWeek*/,
670  29 /*onDayOfMonth*/,
671  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
672  480 /*atTimeCode (7200/15)*/,
673  0 /*deltaMinutes*/,
674  25 /*letterIndex ("S")*/,
675  },
676  // Rule AT 1968 1985 - Oct lastSun 2:00s 1:00 D
677  {
678  1968 /*fromYear*/,
679  1985 /*toYear*/,
680  10 /*inMonth*/,
681  7 /*onDayOfWeek*/,
682  0 /*onDayOfMonth*/,
683  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
684  480 /*atTimeCode (7200/15)*/,
685  60 /*deltaMinutes*/,
686  13 /*letterIndex ("D")*/,
687  },
688  // Rule AT 1969 1971 - Mar Sun>=8 2:00s 0 S
689  {
690  1969 /*fromYear*/,
691  1971 /*toYear*/,
692  3 /*inMonth*/,
693  7 /*onDayOfWeek*/,
694  8 /*onDayOfMonth*/,
695  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
696  480 /*atTimeCode (7200/15)*/,
697  0 /*deltaMinutes*/,
698  25 /*letterIndex ("S")*/,
699  },
700  // Rule AT 1972 only - Feb lastSun 2:00s 0 S
701  {
702  1972 /*fromYear*/,
703  1972 /*toYear*/,
704  2 /*inMonth*/,
705  7 /*onDayOfWeek*/,
706  0 /*onDayOfMonth*/,
707  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
708  480 /*atTimeCode (7200/15)*/,
709  0 /*deltaMinutes*/,
710  25 /*letterIndex ("S")*/,
711  },
712  // Rule AT 1973 1981 - Mar Sun>=1 2:00s 0 S
713  {
714  1973 /*fromYear*/,
715  1981 /*toYear*/,
716  3 /*inMonth*/,
717  7 /*onDayOfWeek*/,
718  1 /*onDayOfMonth*/,
719  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
720  480 /*atTimeCode (7200/15)*/,
721  0 /*deltaMinutes*/,
722  25 /*letterIndex ("S")*/,
723  },
724  // Rule AT 1982 1983 - Mar lastSun 2:00s 0 S
725  {
726  1982 /*fromYear*/,
727  1983 /*toYear*/,
728  3 /*inMonth*/,
729  7 /*onDayOfWeek*/,
730  0 /*onDayOfMonth*/,
731  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
732  480 /*atTimeCode (7200/15)*/,
733  0 /*deltaMinutes*/,
734  25 /*letterIndex ("S")*/,
735  },
736  // Rule AT 1984 1986 - Mar Sun>=1 2:00s 0 S
737  {
738  1984 /*fromYear*/,
739  1986 /*toYear*/,
740  3 /*inMonth*/,
741  7 /*onDayOfWeek*/,
742  1 /*onDayOfMonth*/,
743  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
744  480 /*atTimeCode (7200/15)*/,
745  0 /*deltaMinutes*/,
746  25 /*letterIndex ("S")*/,
747  },
748  // Rule AT 1986 only - Oct Sun>=15 2:00s 1:00 D
749  {
750  1986 /*fromYear*/,
751  1986 /*toYear*/,
752  10 /*inMonth*/,
753  7 /*onDayOfWeek*/,
754  15 /*onDayOfMonth*/,
755  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
756  480 /*atTimeCode (7200/15)*/,
757  60 /*deltaMinutes*/,
758  13 /*letterIndex ("D")*/,
759  },
760  // Rule AT 1987 1990 - Mar Sun>=15 2:00s 0 S
761  {
762  1987 /*fromYear*/,
763  1990 /*toYear*/,
764  3 /*inMonth*/,
765  7 /*onDayOfWeek*/,
766  15 /*onDayOfMonth*/,
767  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
768  480 /*atTimeCode (7200/15)*/,
769  0 /*deltaMinutes*/,
770  25 /*letterIndex ("S")*/,
771  },
772  // Rule AT 1987 only - Oct Sun>=22 2:00s 1:00 D
773  {
774  1987 /*fromYear*/,
775  1987 /*toYear*/,
776  10 /*inMonth*/,
777  7 /*onDayOfWeek*/,
778  22 /*onDayOfMonth*/,
779  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
780  480 /*atTimeCode (7200/15)*/,
781  60 /*deltaMinutes*/,
782  13 /*letterIndex ("D")*/,
783  },
784  // Rule AT 1988 1990 - Oct lastSun 2:00s 1:00 D
785  {
786  1988 /*fromYear*/,
787  1990 /*toYear*/,
788  10 /*inMonth*/,
789  7 /*onDayOfWeek*/,
790  0 /*onDayOfMonth*/,
791  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
792  480 /*atTimeCode (7200/15)*/,
793  60 /*deltaMinutes*/,
794  13 /*letterIndex ("D")*/,
795  },
796  // Rule AT 1991 1999 - Oct Sun>=1 2:00s 1:00 D
797  {
798  1991 /*fromYear*/,
799  1999 /*toYear*/,
800  10 /*inMonth*/,
801  7 /*onDayOfWeek*/,
802  1 /*onDayOfMonth*/,
803  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
804  480 /*atTimeCode (7200/15)*/,
805  60 /*deltaMinutes*/,
806  13 /*letterIndex ("D")*/,
807  },
808  // Rule AT 1991 2005 - Mar lastSun 2:00s 0 S
809  {
810  1991 /*fromYear*/,
811  2005 /*toYear*/,
812  3 /*inMonth*/,
813  7 /*onDayOfWeek*/,
814  0 /*onDayOfMonth*/,
815  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
816  480 /*atTimeCode (7200/15)*/,
817  0 /*deltaMinutes*/,
818  25 /*letterIndex ("S")*/,
819  },
820  // Rule AT 2000 only - Aug lastSun 2:00s 1:00 D
821  {
822  2000 /*fromYear*/,
823  2000 /*toYear*/,
824  8 /*inMonth*/,
825  7 /*onDayOfWeek*/,
826  0 /*onDayOfMonth*/,
827  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
828  480 /*atTimeCode (7200/15)*/,
829  60 /*deltaMinutes*/,
830  13 /*letterIndex ("D")*/,
831  },
832  // Rule AT 2001 max - Oct Sun>=1 2:00s 1:00 D
833  {
834  2001 /*fromYear*/,
835  32766 /*toYear*/,
836  10 /*inMonth*/,
837  7 /*onDayOfWeek*/,
838  1 /*onDayOfMonth*/,
839  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
840  480 /*atTimeCode (7200/15)*/,
841  60 /*deltaMinutes*/,
842  13 /*letterIndex ("D")*/,
843  },
844  // Rule AT 2006 only - Apr Sun>=1 2:00s 0 S
845  {
846  2006 /*fromYear*/,
847  2006 /*toYear*/,
848  4 /*inMonth*/,
849  7 /*onDayOfWeek*/,
850  1 /*onDayOfMonth*/,
851  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
852  480 /*atTimeCode (7200/15)*/,
853  0 /*deltaMinutes*/,
854  25 /*letterIndex ("S")*/,
855  },
856  // Rule AT 2007 only - Mar lastSun 2:00s 0 S
857  {
858  2007 /*fromYear*/,
859  2007 /*toYear*/,
860  3 /*inMonth*/,
861  7 /*onDayOfWeek*/,
862  0 /*onDayOfMonth*/,
863  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
864  480 /*atTimeCode (7200/15)*/,
865  0 /*deltaMinutes*/,
866  25 /*letterIndex ("S")*/,
867  },
868  // Rule AT 2008 max - Apr Sun>=1 2:00s 0 S
869  {
870  2008 /*fromYear*/,
871  32766 /*toYear*/,
872  4 /*inMonth*/,
873  7 /*onDayOfWeek*/,
874  1 /*onDayOfMonth*/,
875  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
876  480 /*atTimeCode (7200/15)*/,
877  0 /*deltaMinutes*/,
878  25 /*letterIndex ("S")*/,
879  },
880 
881 };
882 
883 const complete::ZonePolicy kZonePolicyAT ACE_TIME_PROGMEM = {
884  kZoneRulesAT /*rules*/,
885  24 /*numRules*/,
886 };
887 
888 //---------------------------------------------------------------------------
889 // Policy name: AV
890 // Rules: 15
891 //---------------------------------------------------------------------------
892 
893 static const complete::ZoneRule kZoneRulesAV[] ACE_TIME_PROGMEM = {
894  // Anchor: Rule AV 1972 only - Feb lastSun 2:00s 0 S
895  {
896  -32767 /*fromYear*/,
897  -32767 /*toYear*/,
898  1 /*inMonth*/,
899  0 /*onDayOfWeek*/,
900  1 /*onDayOfMonth*/,
901  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
902  0 /*atTimeCode (0/15)*/,
903  0 /*deltaMinutes*/,
904  25 /*letterIndex ("S")*/,
905  },
906  // Rule AV 1971 1985 - Oct lastSun 2:00s 1:00 D
907  {
908  1971 /*fromYear*/,
909  1985 /*toYear*/,
910  10 /*inMonth*/,
911  7 /*onDayOfWeek*/,
912  0 /*onDayOfMonth*/,
913  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
914  480 /*atTimeCode (7200/15)*/,
915  60 /*deltaMinutes*/,
916  13 /*letterIndex ("D")*/,
917  },
918  // Rule AV 1972 only - Feb lastSun 2:00s 0 S
919  {
920  1972 /*fromYear*/,
921  1972 /*toYear*/,
922  2 /*inMonth*/,
923  7 /*onDayOfWeek*/,
924  0 /*onDayOfMonth*/,
925  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
926  480 /*atTimeCode (7200/15)*/,
927  0 /*deltaMinutes*/,
928  25 /*letterIndex ("S")*/,
929  },
930  // Rule AV 1973 1985 - Mar Sun>=1 2:00s 0 S
931  {
932  1973 /*fromYear*/,
933  1985 /*toYear*/,
934  3 /*inMonth*/,
935  7 /*onDayOfWeek*/,
936  1 /*onDayOfMonth*/,
937  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
938  480 /*atTimeCode (7200/15)*/,
939  0 /*deltaMinutes*/,
940  25 /*letterIndex ("S")*/,
941  },
942  // Rule AV 1986 1990 - Mar Sun>=15 2:00s 0 S
943  {
944  1986 /*fromYear*/,
945  1990 /*toYear*/,
946  3 /*inMonth*/,
947  7 /*onDayOfWeek*/,
948  15 /*onDayOfMonth*/,
949  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
950  480 /*atTimeCode (7200/15)*/,
951  0 /*deltaMinutes*/,
952  25 /*letterIndex ("S")*/,
953  },
954  // Rule AV 1986 1987 - Oct Sun>=15 2:00s 1:00 D
955  {
956  1986 /*fromYear*/,
957  1987 /*toYear*/,
958  10 /*inMonth*/,
959  7 /*onDayOfWeek*/,
960  15 /*onDayOfMonth*/,
961  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
962  480 /*atTimeCode (7200/15)*/,
963  60 /*deltaMinutes*/,
964  13 /*letterIndex ("D")*/,
965  },
966  // Rule AV 1988 1999 - Oct lastSun 2:00s 1:00 D
967  {
968  1988 /*fromYear*/,
969  1999 /*toYear*/,
970  10 /*inMonth*/,
971  7 /*onDayOfWeek*/,
972  0 /*onDayOfMonth*/,
973  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
974  480 /*atTimeCode (7200/15)*/,
975  60 /*deltaMinutes*/,
976  13 /*letterIndex ("D")*/,
977  },
978  // Rule AV 1991 1994 - Mar Sun>=1 2:00s 0 S
979  {
980  1991 /*fromYear*/,
981  1994 /*toYear*/,
982  3 /*inMonth*/,
983  7 /*onDayOfWeek*/,
984  1 /*onDayOfMonth*/,
985  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
986  480 /*atTimeCode (7200/15)*/,
987  0 /*deltaMinutes*/,
988  25 /*letterIndex ("S")*/,
989  },
990  // Rule AV 1995 2005 - Mar lastSun 2:00s 0 S
991  {
992  1995 /*fromYear*/,
993  2005 /*toYear*/,
994  3 /*inMonth*/,
995  7 /*onDayOfWeek*/,
996  0 /*onDayOfMonth*/,
997  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
998  480 /*atTimeCode (7200/15)*/,
999  0 /*deltaMinutes*/,
1000  25 /*letterIndex ("S")*/,
1001  },
1002  // Rule AV 2000 only - Aug lastSun 2:00s 1:00 D
1003  {
1004  2000 /*fromYear*/,
1005  2000 /*toYear*/,
1006  8 /*inMonth*/,
1007  7 /*onDayOfWeek*/,
1008  0 /*onDayOfMonth*/,
1009  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
1010  480 /*atTimeCode (7200/15)*/,
1011  60 /*deltaMinutes*/,
1012  13 /*letterIndex ("D")*/,
1013  },
1014  // Rule AV 2001 2007 - Oct lastSun 2:00s 1:00 D
1015  {
1016  2001 /*fromYear*/,
1017  2007 /*toYear*/,
1018  10 /*inMonth*/,
1019  7 /*onDayOfWeek*/,
1020  0 /*onDayOfMonth*/,
1021  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
1022  480 /*atTimeCode (7200/15)*/,
1023  60 /*deltaMinutes*/,
1024  13 /*letterIndex ("D")*/,
1025  },
1026  // Rule AV 2006 only - Apr Sun>=1 2:00s 0 S
1027  {
1028  2006 /*fromYear*/,
1029  2006 /*toYear*/,
1030  4 /*inMonth*/,
1031  7 /*onDayOfWeek*/,
1032  1 /*onDayOfMonth*/,
1033  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
1034  480 /*atTimeCode (7200/15)*/,
1035  0 /*deltaMinutes*/,
1036  25 /*letterIndex ("S")*/,
1037  },
1038  // Rule AV 2007 only - Mar lastSun 2:00s 0 S
1039  {
1040  2007 /*fromYear*/,
1041  2007 /*toYear*/,
1042  3 /*inMonth*/,
1043  7 /*onDayOfWeek*/,
1044  0 /*onDayOfMonth*/,
1045  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
1046  480 /*atTimeCode (7200/15)*/,
1047  0 /*deltaMinutes*/,
1048  25 /*letterIndex ("S")*/,
1049  },
1050  // Rule AV 2008 max - Apr Sun>=1 2:00s 0 S
1051  {
1052  2008 /*fromYear*/,
1053  32766 /*toYear*/,
1054  4 /*inMonth*/,
1055  7 /*onDayOfWeek*/,
1056  1 /*onDayOfMonth*/,
1057  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
1058  480 /*atTimeCode (7200/15)*/,
1059  0 /*deltaMinutes*/,
1060  25 /*letterIndex ("S")*/,
1061  },
1062  // Rule AV 2008 max - Oct Sun>=1 2:00s 1:00 D
1063  {
1064  2008 /*fromYear*/,
1065  32766 /*toYear*/,
1066  10 /*inMonth*/,
1067  7 /*onDayOfWeek*/,
1068  1 /*onDayOfMonth*/,
1069  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
1070  480 /*atTimeCode (7200/15)*/,
1071  60 /*deltaMinutes*/,
1072  13 /*letterIndex ("D")*/,
1073  },
1074 
1075 };
1076 
1077 const complete::ZonePolicy kZonePolicyAV ACE_TIME_PROGMEM = {
1078  kZoneRulesAV /*rules*/,
1079  15 /*numRules*/,
1080 };
1081 
1082 //---------------------------------------------------------------------------
1083 // Policy name: AW
1084 // Rules: 10
1085 //---------------------------------------------------------------------------
1086 
1087 static const complete::ZoneRule kZoneRulesAW[] ACE_TIME_PROGMEM = {
1088  // Anchor: Rule AW 1975 only - Mar Sun>=1 2:00s 0 S
1089  {
1090  -32767 /*fromYear*/,
1091  -32767 /*toYear*/,
1092  1 /*inMonth*/,
1093  0 /*onDayOfWeek*/,
1094  1 /*onDayOfMonth*/,
1095  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1096  0 /*atTimeCode (0/15)*/,
1097  0 /*deltaMinutes*/,
1098  25 /*letterIndex ("S")*/,
1099  },
1100  // Rule AW 1974 only - Oct lastSun 2:00s 1:00 D
1101  {
1102  1974 /*fromYear*/,
1103  1974 /*toYear*/,
1104  10 /*inMonth*/,
1105  7 /*onDayOfWeek*/,
1106  0 /*onDayOfMonth*/,
1107  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
1108  480 /*atTimeCode (7200/15)*/,
1109  60 /*deltaMinutes*/,
1110  13 /*letterIndex ("D")*/,
1111  },
1112  // Rule AW 1975 only - Mar Sun>=1 2:00s 0 S
1113  {
1114  1975 /*fromYear*/,
1115  1975 /*toYear*/,
1116  3 /*inMonth*/,
1117  7 /*onDayOfWeek*/,
1118  1 /*onDayOfMonth*/,
1119  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
1120  480 /*atTimeCode (7200/15)*/,
1121  0 /*deltaMinutes*/,
1122  25 /*letterIndex ("S")*/,
1123  },
1124  // Rule AW 1983 only - Oct lastSun 2:00s 1:00 D
1125  {
1126  1983 /*fromYear*/,
1127  1983 /*toYear*/,
1128  10 /*inMonth*/,
1129  7 /*onDayOfWeek*/,
1130  0 /*onDayOfMonth*/,
1131  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
1132  480 /*atTimeCode (7200/15)*/,
1133  60 /*deltaMinutes*/,
1134  13 /*letterIndex ("D")*/,
1135  },
1136  // Rule AW 1984 only - Mar Sun>=1 2:00s 0 S
1137  {
1138  1984 /*fromYear*/,
1139  1984 /*toYear*/,
1140  3 /*inMonth*/,
1141  7 /*onDayOfWeek*/,
1142  1 /*onDayOfMonth*/,
1143  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
1144  480 /*atTimeCode (7200/15)*/,
1145  0 /*deltaMinutes*/,
1146  25 /*letterIndex ("S")*/,
1147  },
1148  // Rule AW 1991 only - Nov 17 2:00s 1:00 D
1149  {
1150  1991 /*fromYear*/,
1151  1991 /*toYear*/,
1152  11 /*inMonth*/,
1153  0 /*onDayOfWeek*/,
1154  17 /*onDayOfMonth*/,
1155  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
1156  480 /*atTimeCode (7200/15)*/,
1157  60 /*deltaMinutes*/,
1158  13 /*letterIndex ("D")*/,
1159  },
1160  // Rule AW 1992 only - Mar Sun>=1 2:00s 0 S
1161  {
1162  1992 /*fromYear*/,
1163  1992 /*toYear*/,
1164  3 /*inMonth*/,
1165  7 /*onDayOfWeek*/,
1166  1 /*onDayOfMonth*/,
1167  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
1168  480 /*atTimeCode (7200/15)*/,
1169  0 /*deltaMinutes*/,
1170  25 /*letterIndex ("S")*/,
1171  },
1172  // Rule AW 2006 only - Dec 3 2:00s 1:00 D
1173  {
1174  2006 /*fromYear*/,
1175  2006 /*toYear*/,
1176  12 /*inMonth*/,
1177  0 /*onDayOfWeek*/,
1178  3 /*onDayOfMonth*/,
1179  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
1180  480 /*atTimeCode (7200/15)*/,
1181  60 /*deltaMinutes*/,
1182  13 /*letterIndex ("D")*/,
1183  },
1184  // Rule AW 2007 2009 - Mar lastSun 2:00s 0 S
1185  {
1186  2007 /*fromYear*/,
1187  2009 /*toYear*/,
1188  3 /*inMonth*/,
1189  7 /*onDayOfWeek*/,
1190  0 /*onDayOfMonth*/,
1191  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
1192  480 /*atTimeCode (7200/15)*/,
1193  0 /*deltaMinutes*/,
1194  25 /*letterIndex ("S")*/,
1195  },
1196  // Rule AW 2007 2008 - Oct lastSun 2:00s 1:00 D
1197  {
1198  2007 /*fromYear*/,
1199  2008 /*toYear*/,
1200  10 /*inMonth*/,
1201  7 /*onDayOfWeek*/,
1202  0 /*onDayOfMonth*/,
1203  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
1204  480 /*atTimeCode (7200/15)*/,
1205  60 /*deltaMinutes*/,
1206  13 /*letterIndex ("D")*/,
1207  },
1208 
1209 };
1210 
1211 const complete::ZonePolicy kZonePolicyAW ACE_TIME_PROGMEM = {
1212  kZoneRulesAW /*rules*/,
1213  10 /*numRules*/,
1214 };
1215 
1216 //---------------------------------------------------------------------------
1217 // Policy name: Albania
1218 // Rules: 26
1219 //---------------------------------------------------------------------------
1220 
1221 static const complete::ZoneRule kZoneRulesAlbania[] ACE_TIME_PROGMEM = {
1222  // Anchor: Rule Albania 1942 only - Nov 2 3:00 0 -
1223  {
1224  -32767 /*fromYear*/,
1225  -32767 /*toYear*/,
1226  1 /*inMonth*/,
1227  0 /*onDayOfWeek*/,
1228  1 /*onDayOfMonth*/,
1229  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1230  0 /*atTimeCode (0/15)*/,
1231  0 /*deltaMinutes*/,
1232  0 /*letterIndex ("")*/,
1233  },
1234  // Rule Albania 1940 only - Jun 16 0:00 1:00 S
1235  {
1236  1940 /*fromYear*/,
1237  1940 /*toYear*/,
1238  6 /*inMonth*/,
1239  0 /*onDayOfWeek*/,
1240  16 /*onDayOfMonth*/,
1241  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1242  0 /*atTimeCode (0/15)*/,
1243  60 /*deltaMinutes*/,
1244  25 /*letterIndex ("S")*/,
1245  },
1246  // Rule Albania 1942 only - Nov 2 3:00 0 -
1247  {
1248  1942 /*fromYear*/,
1249  1942 /*toYear*/,
1250  11 /*inMonth*/,
1251  0 /*onDayOfWeek*/,
1252  2 /*onDayOfMonth*/,
1253  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1254  720 /*atTimeCode (10800/15)*/,
1255  0 /*deltaMinutes*/,
1256  0 /*letterIndex ("")*/,
1257  },
1258  // Rule Albania 1943 only - Mar 29 2:00 1:00 S
1259  {
1260  1943 /*fromYear*/,
1261  1943 /*toYear*/,
1262  3 /*inMonth*/,
1263  0 /*onDayOfWeek*/,
1264  29 /*onDayOfMonth*/,
1265  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1266  480 /*atTimeCode (7200/15)*/,
1267  60 /*deltaMinutes*/,
1268  25 /*letterIndex ("S")*/,
1269  },
1270  // Rule Albania 1943 only - Apr 10 3:00 0 -
1271  {
1272  1943 /*fromYear*/,
1273  1943 /*toYear*/,
1274  4 /*inMonth*/,
1275  0 /*onDayOfWeek*/,
1276  10 /*onDayOfMonth*/,
1277  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1278  720 /*atTimeCode (10800/15)*/,
1279  0 /*deltaMinutes*/,
1280  0 /*letterIndex ("")*/,
1281  },
1282  // Rule Albania 1974 only - May 4 0:00 1:00 S
1283  {
1284  1974 /*fromYear*/,
1285  1974 /*toYear*/,
1286  5 /*inMonth*/,
1287  0 /*onDayOfWeek*/,
1288  4 /*onDayOfMonth*/,
1289  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1290  0 /*atTimeCode (0/15)*/,
1291  60 /*deltaMinutes*/,
1292  25 /*letterIndex ("S")*/,
1293  },
1294  // Rule Albania 1974 only - Oct 2 0:00 0 -
1295  {
1296  1974 /*fromYear*/,
1297  1974 /*toYear*/,
1298  10 /*inMonth*/,
1299  0 /*onDayOfWeek*/,
1300  2 /*onDayOfMonth*/,
1301  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1302  0 /*atTimeCode (0/15)*/,
1303  0 /*deltaMinutes*/,
1304  0 /*letterIndex ("")*/,
1305  },
1306  // Rule Albania 1975 only - May 1 0:00 1:00 S
1307  {
1308  1975 /*fromYear*/,
1309  1975 /*toYear*/,
1310  5 /*inMonth*/,
1311  0 /*onDayOfWeek*/,
1312  1 /*onDayOfMonth*/,
1313  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1314  0 /*atTimeCode (0/15)*/,
1315  60 /*deltaMinutes*/,
1316  25 /*letterIndex ("S")*/,
1317  },
1318  // Rule Albania 1975 only - Oct 2 0:00 0 -
1319  {
1320  1975 /*fromYear*/,
1321  1975 /*toYear*/,
1322  10 /*inMonth*/,
1323  0 /*onDayOfWeek*/,
1324  2 /*onDayOfMonth*/,
1325  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1326  0 /*atTimeCode (0/15)*/,
1327  0 /*deltaMinutes*/,
1328  0 /*letterIndex ("")*/,
1329  },
1330  // Rule Albania 1976 only - May 2 0:00 1:00 S
1331  {
1332  1976 /*fromYear*/,
1333  1976 /*toYear*/,
1334  5 /*inMonth*/,
1335  0 /*onDayOfWeek*/,
1336  2 /*onDayOfMonth*/,
1337  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1338  0 /*atTimeCode (0/15)*/,
1339  60 /*deltaMinutes*/,
1340  25 /*letterIndex ("S")*/,
1341  },
1342  // Rule Albania 1976 only - Oct 3 0:00 0 -
1343  {
1344  1976 /*fromYear*/,
1345  1976 /*toYear*/,
1346  10 /*inMonth*/,
1347  0 /*onDayOfWeek*/,
1348  3 /*onDayOfMonth*/,
1349  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1350  0 /*atTimeCode (0/15)*/,
1351  0 /*deltaMinutes*/,
1352  0 /*letterIndex ("")*/,
1353  },
1354  // Rule Albania 1977 only - May 8 0:00 1:00 S
1355  {
1356  1977 /*fromYear*/,
1357  1977 /*toYear*/,
1358  5 /*inMonth*/,
1359  0 /*onDayOfWeek*/,
1360  8 /*onDayOfMonth*/,
1361  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1362  0 /*atTimeCode (0/15)*/,
1363  60 /*deltaMinutes*/,
1364  25 /*letterIndex ("S")*/,
1365  },
1366  // Rule Albania 1977 only - Oct 2 0:00 0 -
1367  {
1368  1977 /*fromYear*/,
1369  1977 /*toYear*/,
1370  10 /*inMonth*/,
1371  0 /*onDayOfWeek*/,
1372  2 /*onDayOfMonth*/,
1373  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1374  0 /*atTimeCode (0/15)*/,
1375  0 /*deltaMinutes*/,
1376  0 /*letterIndex ("")*/,
1377  },
1378  // Rule Albania 1978 only - May 6 0:00 1:00 S
1379  {
1380  1978 /*fromYear*/,
1381  1978 /*toYear*/,
1382  5 /*inMonth*/,
1383  0 /*onDayOfWeek*/,
1384  6 /*onDayOfMonth*/,
1385  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1386  0 /*atTimeCode (0/15)*/,
1387  60 /*deltaMinutes*/,
1388  25 /*letterIndex ("S")*/,
1389  },
1390  // Rule Albania 1978 only - Oct 1 0:00 0 -
1391  {
1392  1978 /*fromYear*/,
1393  1978 /*toYear*/,
1394  10 /*inMonth*/,
1395  0 /*onDayOfWeek*/,
1396  1 /*onDayOfMonth*/,
1397  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1398  0 /*atTimeCode (0/15)*/,
1399  0 /*deltaMinutes*/,
1400  0 /*letterIndex ("")*/,
1401  },
1402  // Rule Albania 1979 only - May 5 0:00 1:00 S
1403  {
1404  1979 /*fromYear*/,
1405  1979 /*toYear*/,
1406  5 /*inMonth*/,
1407  0 /*onDayOfWeek*/,
1408  5 /*onDayOfMonth*/,
1409  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1410  0 /*atTimeCode (0/15)*/,
1411  60 /*deltaMinutes*/,
1412  25 /*letterIndex ("S")*/,
1413  },
1414  // Rule Albania 1979 only - Sep 30 0:00 0 -
1415  {
1416  1979 /*fromYear*/,
1417  1979 /*toYear*/,
1418  9 /*inMonth*/,
1419  0 /*onDayOfWeek*/,
1420  30 /*onDayOfMonth*/,
1421  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1422  0 /*atTimeCode (0/15)*/,
1423  0 /*deltaMinutes*/,
1424  0 /*letterIndex ("")*/,
1425  },
1426  // Rule Albania 1980 only - May 3 0:00 1:00 S
1427  {
1428  1980 /*fromYear*/,
1429  1980 /*toYear*/,
1430  5 /*inMonth*/,
1431  0 /*onDayOfWeek*/,
1432  3 /*onDayOfMonth*/,
1433  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1434  0 /*atTimeCode (0/15)*/,
1435  60 /*deltaMinutes*/,
1436  25 /*letterIndex ("S")*/,
1437  },
1438  // Rule Albania 1980 only - Oct 4 0:00 0 -
1439  {
1440  1980 /*fromYear*/,
1441  1980 /*toYear*/,
1442  10 /*inMonth*/,
1443  0 /*onDayOfWeek*/,
1444  4 /*onDayOfMonth*/,
1445  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1446  0 /*atTimeCode (0/15)*/,
1447  0 /*deltaMinutes*/,
1448  0 /*letterIndex ("")*/,
1449  },
1450  // Rule Albania 1981 only - Apr 26 0:00 1:00 S
1451  {
1452  1981 /*fromYear*/,
1453  1981 /*toYear*/,
1454  4 /*inMonth*/,
1455  0 /*onDayOfWeek*/,
1456  26 /*onDayOfMonth*/,
1457  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1458  0 /*atTimeCode (0/15)*/,
1459  60 /*deltaMinutes*/,
1460  25 /*letterIndex ("S")*/,
1461  },
1462  // Rule Albania 1981 only - Sep 27 0:00 0 -
1463  {
1464  1981 /*fromYear*/,
1465  1981 /*toYear*/,
1466  9 /*inMonth*/,
1467  0 /*onDayOfWeek*/,
1468  27 /*onDayOfMonth*/,
1469  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1470  0 /*atTimeCode (0/15)*/,
1471  0 /*deltaMinutes*/,
1472  0 /*letterIndex ("")*/,
1473  },
1474  // Rule Albania 1982 only - May 2 0:00 1:00 S
1475  {
1476  1982 /*fromYear*/,
1477  1982 /*toYear*/,
1478  5 /*inMonth*/,
1479  0 /*onDayOfWeek*/,
1480  2 /*onDayOfMonth*/,
1481  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1482  0 /*atTimeCode (0/15)*/,
1483  60 /*deltaMinutes*/,
1484  25 /*letterIndex ("S")*/,
1485  },
1486  // Rule Albania 1982 only - Oct 3 0:00 0 -
1487  {
1488  1982 /*fromYear*/,
1489  1982 /*toYear*/,
1490  10 /*inMonth*/,
1491  0 /*onDayOfWeek*/,
1492  3 /*onDayOfMonth*/,
1493  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1494  0 /*atTimeCode (0/15)*/,
1495  0 /*deltaMinutes*/,
1496  0 /*letterIndex ("")*/,
1497  },
1498  // Rule Albania 1983 only - Apr 18 0:00 1:00 S
1499  {
1500  1983 /*fromYear*/,
1501  1983 /*toYear*/,
1502  4 /*inMonth*/,
1503  0 /*onDayOfWeek*/,
1504  18 /*onDayOfMonth*/,
1505  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1506  0 /*atTimeCode (0/15)*/,
1507  60 /*deltaMinutes*/,
1508  25 /*letterIndex ("S")*/,
1509  },
1510  // Rule Albania 1983 only - Oct 1 0:00 0 -
1511  {
1512  1983 /*fromYear*/,
1513  1983 /*toYear*/,
1514  10 /*inMonth*/,
1515  0 /*onDayOfWeek*/,
1516  1 /*onDayOfMonth*/,
1517  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1518  0 /*atTimeCode (0/15)*/,
1519  0 /*deltaMinutes*/,
1520  0 /*letterIndex ("")*/,
1521  },
1522  // Rule Albania 1984 only - Apr 1 0:00 1:00 S
1523  {
1524  1984 /*fromYear*/,
1525  1984 /*toYear*/,
1526  4 /*inMonth*/,
1527  0 /*onDayOfWeek*/,
1528  1 /*onDayOfMonth*/,
1529  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1530  0 /*atTimeCode (0/15)*/,
1531  60 /*deltaMinutes*/,
1532  25 /*letterIndex ("S")*/,
1533  },
1534 
1535 };
1536 
1537 const complete::ZonePolicy kZonePolicyAlbania ACE_TIME_PROGMEM = {
1538  kZoneRulesAlbania /*rules*/,
1539  26 /*numRules*/,
1540 };
1541 
1542 //---------------------------------------------------------------------------
1543 // Policy name: Algeria
1544 // Rules: 23
1545 //---------------------------------------------------------------------------
1546 
1547 static const complete::ZoneRule kZoneRulesAlgeria[] ACE_TIME_PROGMEM = {
1548  // Anchor: Rule Algeria 1916 1919 - Oct Sun>=1 23:00s 0 -
1549  {
1550  -32767 /*fromYear*/,
1551  -32767 /*toYear*/,
1552  1 /*inMonth*/,
1553  0 /*onDayOfWeek*/,
1554  1 /*onDayOfMonth*/,
1555  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1556  0 /*atTimeCode (0/15)*/,
1557  0 /*deltaMinutes*/,
1558  0 /*letterIndex ("")*/,
1559  },
1560  // Rule Algeria 1916 only - Jun 14 23:00s 1:00 S
1561  {
1562  1916 /*fromYear*/,
1563  1916 /*toYear*/,
1564  6 /*inMonth*/,
1565  0 /*onDayOfWeek*/,
1566  14 /*onDayOfMonth*/,
1567  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
1568  5520 /*atTimeCode (82800/15)*/,
1569  60 /*deltaMinutes*/,
1570  25 /*letterIndex ("S")*/,
1571  },
1572  // Rule Algeria 1916 1919 - Oct Sun>=1 23:00s 0 -
1573  {
1574  1916 /*fromYear*/,
1575  1919 /*toYear*/,
1576  10 /*inMonth*/,
1577  7 /*onDayOfWeek*/,
1578  1 /*onDayOfMonth*/,
1579  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
1580  5520 /*atTimeCode (82800/15)*/,
1581  0 /*deltaMinutes*/,
1582  0 /*letterIndex ("")*/,
1583  },
1584  // Rule Algeria 1917 only - Mar 24 23:00s 1:00 S
1585  {
1586  1917 /*fromYear*/,
1587  1917 /*toYear*/,
1588  3 /*inMonth*/,
1589  0 /*onDayOfWeek*/,
1590  24 /*onDayOfMonth*/,
1591  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
1592  5520 /*atTimeCode (82800/15)*/,
1593  60 /*deltaMinutes*/,
1594  25 /*letterIndex ("S")*/,
1595  },
1596  // Rule Algeria 1918 only - Mar 9 23:00s 1:00 S
1597  {
1598  1918 /*fromYear*/,
1599  1918 /*toYear*/,
1600  3 /*inMonth*/,
1601  0 /*onDayOfWeek*/,
1602  9 /*onDayOfMonth*/,
1603  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
1604  5520 /*atTimeCode (82800/15)*/,
1605  60 /*deltaMinutes*/,
1606  25 /*letterIndex ("S")*/,
1607  },
1608  // Rule Algeria 1919 only - Mar 1 23:00s 1:00 S
1609  {
1610  1919 /*fromYear*/,
1611  1919 /*toYear*/,
1612  3 /*inMonth*/,
1613  0 /*onDayOfWeek*/,
1614  1 /*onDayOfMonth*/,
1615  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
1616  5520 /*atTimeCode (82800/15)*/,
1617  60 /*deltaMinutes*/,
1618  25 /*letterIndex ("S")*/,
1619  },
1620  // Rule Algeria 1920 only - Feb 14 23:00s 1:00 S
1621  {
1622  1920 /*fromYear*/,
1623  1920 /*toYear*/,
1624  2 /*inMonth*/,
1625  0 /*onDayOfWeek*/,
1626  14 /*onDayOfMonth*/,
1627  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
1628  5520 /*atTimeCode (82800/15)*/,
1629  60 /*deltaMinutes*/,
1630  25 /*letterIndex ("S")*/,
1631  },
1632  // Rule Algeria 1920 only - Oct 23 23:00s 0 -
1633  {
1634  1920 /*fromYear*/,
1635  1920 /*toYear*/,
1636  10 /*inMonth*/,
1637  0 /*onDayOfWeek*/,
1638  23 /*onDayOfMonth*/,
1639  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
1640  5520 /*atTimeCode (82800/15)*/,
1641  0 /*deltaMinutes*/,
1642  0 /*letterIndex ("")*/,
1643  },
1644  // Rule Algeria 1921 only - Mar 14 23:00s 1:00 S
1645  {
1646  1921 /*fromYear*/,
1647  1921 /*toYear*/,
1648  3 /*inMonth*/,
1649  0 /*onDayOfWeek*/,
1650  14 /*onDayOfMonth*/,
1651  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
1652  5520 /*atTimeCode (82800/15)*/,
1653  60 /*deltaMinutes*/,
1654  25 /*letterIndex ("S")*/,
1655  },
1656  // Rule Algeria 1921 only - Jun 21 23:00s 0 -
1657  {
1658  1921 /*fromYear*/,
1659  1921 /*toYear*/,
1660  6 /*inMonth*/,
1661  0 /*onDayOfWeek*/,
1662  21 /*onDayOfMonth*/,
1663  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
1664  5520 /*atTimeCode (82800/15)*/,
1665  0 /*deltaMinutes*/,
1666  0 /*letterIndex ("")*/,
1667  },
1668  // Rule Algeria 1939 only - Sep 11 23:00s 1:00 S
1669  {
1670  1939 /*fromYear*/,
1671  1939 /*toYear*/,
1672  9 /*inMonth*/,
1673  0 /*onDayOfWeek*/,
1674  11 /*onDayOfMonth*/,
1675  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
1676  5520 /*atTimeCode (82800/15)*/,
1677  60 /*deltaMinutes*/,
1678  25 /*letterIndex ("S")*/,
1679  },
1680  // Rule Algeria 1939 only - Nov 19 1:00 0 -
1681  {
1682  1939 /*fromYear*/,
1683  1939 /*toYear*/,
1684  11 /*inMonth*/,
1685  0 /*onDayOfWeek*/,
1686  19 /*onDayOfMonth*/,
1687  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1688  240 /*atTimeCode (3600/15)*/,
1689  0 /*deltaMinutes*/,
1690  0 /*letterIndex ("")*/,
1691  },
1692  // Rule Algeria 1944 1945 - Apr Mon>=1 2:00 1:00 S
1693  {
1694  1944 /*fromYear*/,
1695  1945 /*toYear*/,
1696  4 /*inMonth*/,
1697  1 /*onDayOfWeek*/,
1698  1 /*onDayOfMonth*/,
1699  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1700  480 /*atTimeCode (7200/15)*/,
1701  60 /*deltaMinutes*/,
1702  25 /*letterIndex ("S")*/,
1703  },
1704  // Rule Algeria 1944 only - Oct 8 2:00 0 -
1705  {
1706  1944 /*fromYear*/,
1707  1944 /*toYear*/,
1708  10 /*inMonth*/,
1709  0 /*onDayOfWeek*/,
1710  8 /*onDayOfMonth*/,
1711  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1712  480 /*atTimeCode (7200/15)*/,
1713  0 /*deltaMinutes*/,
1714  0 /*letterIndex ("")*/,
1715  },
1716  // Rule Algeria 1945 only - Sep 16 1:00 0 -
1717  {
1718  1945 /*fromYear*/,
1719  1945 /*toYear*/,
1720  9 /*inMonth*/,
1721  0 /*onDayOfWeek*/,
1722  16 /*onDayOfMonth*/,
1723  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1724  240 /*atTimeCode (3600/15)*/,
1725  0 /*deltaMinutes*/,
1726  0 /*letterIndex ("")*/,
1727  },
1728  // Rule Algeria 1971 only - Apr 25 23:00s 1:00 S
1729  {
1730  1971 /*fromYear*/,
1731  1971 /*toYear*/,
1732  4 /*inMonth*/,
1733  0 /*onDayOfWeek*/,
1734  25 /*onDayOfMonth*/,
1735  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
1736  5520 /*atTimeCode (82800/15)*/,
1737  60 /*deltaMinutes*/,
1738  25 /*letterIndex ("S")*/,
1739  },
1740  // Rule Algeria 1971 only - Sep 26 23:00s 0 -
1741  {
1742  1971 /*fromYear*/,
1743  1971 /*toYear*/,
1744  9 /*inMonth*/,
1745  0 /*onDayOfWeek*/,
1746  26 /*onDayOfMonth*/,
1747  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
1748  5520 /*atTimeCode (82800/15)*/,
1749  0 /*deltaMinutes*/,
1750  0 /*letterIndex ("")*/,
1751  },
1752  // Rule Algeria 1977 only - May 6 0:00 1:00 S
1753  {
1754  1977 /*fromYear*/,
1755  1977 /*toYear*/,
1756  5 /*inMonth*/,
1757  0 /*onDayOfWeek*/,
1758  6 /*onDayOfMonth*/,
1759  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1760  0 /*atTimeCode (0/15)*/,
1761  60 /*deltaMinutes*/,
1762  25 /*letterIndex ("S")*/,
1763  },
1764  // Rule Algeria 1977 only - Oct 21 0:00 0 -
1765  {
1766  1977 /*fromYear*/,
1767  1977 /*toYear*/,
1768  10 /*inMonth*/,
1769  0 /*onDayOfWeek*/,
1770  21 /*onDayOfMonth*/,
1771  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1772  0 /*atTimeCode (0/15)*/,
1773  0 /*deltaMinutes*/,
1774  0 /*letterIndex ("")*/,
1775  },
1776  // Rule Algeria 1978 only - Mar 24 1:00 1:00 S
1777  {
1778  1978 /*fromYear*/,
1779  1978 /*toYear*/,
1780  3 /*inMonth*/,
1781  0 /*onDayOfWeek*/,
1782  24 /*onDayOfMonth*/,
1783  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1784  240 /*atTimeCode (3600/15)*/,
1785  60 /*deltaMinutes*/,
1786  25 /*letterIndex ("S")*/,
1787  },
1788  // Rule Algeria 1978 only - Sep 22 3:00 0 -
1789  {
1790  1978 /*fromYear*/,
1791  1978 /*toYear*/,
1792  9 /*inMonth*/,
1793  0 /*onDayOfWeek*/,
1794  22 /*onDayOfMonth*/,
1795  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1796  720 /*atTimeCode (10800/15)*/,
1797  0 /*deltaMinutes*/,
1798  0 /*letterIndex ("")*/,
1799  },
1800  // Rule Algeria 1980 only - Apr 25 0:00 1:00 S
1801  {
1802  1980 /*fromYear*/,
1803  1980 /*toYear*/,
1804  4 /*inMonth*/,
1805  0 /*onDayOfWeek*/,
1806  25 /*onDayOfMonth*/,
1807  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1808  0 /*atTimeCode (0/15)*/,
1809  60 /*deltaMinutes*/,
1810  25 /*letterIndex ("S")*/,
1811  },
1812  // Rule Algeria 1980 only - Oct 31 2:00 0 -
1813  {
1814  1980 /*fromYear*/,
1815  1980 /*toYear*/,
1816  10 /*inMonth*/,
1817  0 /*onDayOfWeek*/,
1818  31 /*onDayOfMonth*/,
1819  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1820  480 /*atTimeCode (7200/15)*/,
1821  0 /*deltaMinutes*/,
1822  0 /*letterIndex ("")*/,
1823  },
1824 
1825 };
1826 
1827 const complete::ZonePolicy kZonePolicyAlgeria ACE_TIME_PROGMEM = {
1828  kZoneRulesAlgeria /*rules*/,
1829  23 /*numRules*/,
1830 };
1831 
1832 //---------------------------------------------------------------------------
1833 // Policy name: Arg
1834 // Rules: 30
1835 //---------------------------------------------------------------------------
1836 
1837 static const complete::ZoneRule kZoneRulesArg[] ACE_TIME_PROGMEM = {
1838  // Anchor: Rule Arg 1931 only - Apr 1 0:00 0 -
1839  {
1840  -32767 /*fromYear*/,
1841  -32767 /*toYear*/,
1842  1 /*inMonth*/,
1843  0 /*onDayOfWeek*/,
1844  1 /*onDayOfMonth*/,
1845  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1846  0 /*atTimeCode (0/15)*/,
1847  0 /*deltaMinutes*/,
1848  0 /*letterIndex ("")*/,
1849  },
1850  // Rule Arg 1930 only - Dec 1 0:00 1:00 -
1851  {
1852  1930 /*fromYear*/,
1853  1930 /*toYear*/,
1854  12 /*inMonth*/,
1855  0 /*onDayOfWeek*/,
1856  1 /*onDayOfMonth*/,
1857  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1858  0 /*atTimeCode (0/15)*/,
1859  60 /*deltaMinutes*/,
1860  0 /*letterIndex ("")*/,
1861  },
1862  // Rule Arg 1931 only - Apr 1 0:00 0 -
1863  {
1864  1931 /*fromYear*/,
1865  1931 /*toYear*/,
1866  4 /*inMonth*/,
1867  0 /*onDayOfWeek*/,
1868  1 /*onDayOfMonth*/,
1869  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1870  0 /*atTimeCode (0/15)*/,
1871  0 /*deltaMinutes*/,
1872  0 /*letterIndex ("")*/,
1873  },
1874  // Rule Arg 1931 only - Oct 15 0:00 1:00 -
1875  {
1876  1931 /*fromYear*/,
1877  1931 /*toYear*/,
1878  10 /*inMonth*/,
1879  0 /*onDayOfWeek*/,
1880  15 /*onDayOfMonth*/,
1881  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1882  0 /*atTimeCode (0/15)*/,
1883  60 /*deltaMinutes*/,
1884  0 /*letterIndex ("")*/,
1885  },
1886  // Rule Arg 1932 1940 - Mar 1 0:00 0 -
1887  {
1888  1932 /*fromYear*/,
1889  1940 /*toYear*/,
1890  3 /*inMonth*/,
1891  0 /*onDayOfWeek*/,
1892  1 /*onDayOfMonth*/,
1893  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1894  0 /*atTimeCode (0/15)*/,
1895  0 /*deltaMinutes*/,
1896  0 /*letterIndex ("")*/,
1897  },
1898  // Rule Arg 1932 1939 - Nov 1 0:00 1:00 -
1899  {
1900  1932 /*fromYear*/,
1901  1939 /*toYear*/,
1902  11 /*inMonth*/,
1903  0 /*onDayOfWeek*/,
1904  1 /*onDayOfMonth*/,
1905  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1906  0 /*atTimeCode (0/15)*/,
1907  60 /*deltaMinutes*/,
1908  0 /*letterIndex ("")*/,
1909  },
1910  // Rule Arg 1940 only - Jul 1 0:00 1:00 -
1911  {
1912  1940 /*fromYear*/,
1913  1940 /*toYear*/,
1914  7 /*inMonth*/,
1915  0 /*onDayOfWeek*/,
1916  1 /*onDayOfMonth*/,
1917  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1918  0 /*atTimeCode (0/15)*/,
1919  60 /*deltaMinutes*/,
1920  0 /*letterIndex ("")*/,
1921  },
1922  // Rule Arg 1941 only - Jun 15 0:00 0 -
1923  {
1924  1941 /*fromYear*/,
1925  1941 /*toYear*/,
1926  6 /*inMonth*/,
1927  0 /*onDayOfWeek*/,
1928  15 /*onDayOfMonth*/,
1929  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1930  0 /*atTimeCode (0/15)*/,
1931  0 /*deltaMinutes*/,
1932  0 /*letterIndex ("")*/,
1933  },
1934  // Rule Arg 1941 only - Oct 15 0:00 1:00 -
1935  {
1936  1941 /*fromYear*/,
1937  1941 /*toYear*/,
1938  10 /*inMonth*/,
1939  0 /*onDayOfWeek*/,
1940  15 /*onDayOfMonth*/,
1941  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1942  0 /*atTimeCode (0/15)*/,
1943  60 /*deltaMinutes*/,
1944  0 /*letterIndex ("")*/,
1945  },
1946  // Rule Arg 1943 only - Aug 1 0:00 0 -
1947  {
1948  1943 /*fromYear*/,
1949  1943 /*toYear*/,
1950  8 /*inMonth*/,
1951  0 /*onDayOfWeek*/,
1952  1 /*onDayOfMonth*/,
1953  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1954  0 /*atTimeCode (0/15)*/,
1955  0 /*deltaMinutes*/,
1956  0 /*letterIndex ("")*/,
1957  },
1958  // Rule Arg 1943 only - Oct 15 0:00 1:00 -
1959  {
1960  1943 /*fromYear*/,
1961  1943 /*toYear*/,
1962  10 /*inMonth*/,
1963  0 /*onDayOfWeek*/,
1964  15 /*onDayOfMonth*/,
1965  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1966  0 /*atTimeCode (0/15)*/,
1967  60 /*deltaMinutes*/,
1968  0 /*letterIndex ("")*/,
1969  },
1970  // Rule Arg 1946 only - Mar 1 0:00 0 -
1971  {
1972  1946 /*fromYear*/,
1973  1946 /*toYear*/,
1974  3 /*inMonth*/,
1975  0 /*onDayOfWeek*/,
1976  1 /*onDayOfMonth*/,
1977  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1978  0 /*atTimeCode (0/15)*/,
1979  0 /*deltaMinutes*/,
1980  0 /*letterIndex ("")*/,
1981  },
1982  // Rule Arg 1946 only - Oct 1 0:00 1:00 -
1983  {
1984  1946 /*fromYear*/,
1985  1946 /*toYear*/,
1986  10 /*inMonth*/,
1987  0 /*onDayOfWeek*/,
1988  1 /*onDayOfMonth*/,
1989  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1990  0 /*atTimeCode (0/15)*/,
1991  60 /*deltaMinutes*/,
1992  0 /*letterIndex ("")*/,
1993  },
1994  // Rule Arg 1963 only - Oct 1 0:00 0 -
1995  {
1996  1963 /*fromYear*/,
1997  1963 /*toYear*/,
1998  10 /*inMonth*/,
1999  0 /*onDayOfWeek*/,
2000  1 /*onDayOfMonth*/,
2001  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2002  0 /*atTimeCode (0/15)*/,
2003  0 /*deltaMinutes*/,
2004  0 /*letterIndex ("")*/,
2005  },
2006  // Rule Arg 1963 only - Dec 15 0:00 1:00 -
2007  {
2008  1963 /*fromYear*/,
2009  1963 /*toYear*/,
2010  12 /*inMonth*/,
2011  0 /*onDayOfWeek*/,
2012  15 /*onDayOfMonth*/,
2013  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2014  0 /*atTimeCode (0/15)*/,
2015  60 /*deltaMinutes*/,
2016  0 /*letterIndex ("")*/,
2017  },
2018  // Rule Arg 1964 1966 - Mar 1 0:00 0 -
2019  {
2020  1964 /*fromYear*/,
2021  1966 /*toYear*/,
2022  3 /*inMonth*/,
2023  0 /*onDayOfWeek*/,
2024  1 /*onDayOfMonth*/,
2025  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2026  0 /*atTimeCode (0/15)*/,
2027  0 /*deltaMinutes*/,
2028  0 /*letterIndex ("")*/,
2029  },
2030  // Rule Arg 1964 1966 - Oct 15 0:00 1:00 -
2031  {
2032  1964 /*fromYear*/,
2033  1966 /*toYear*/,
2034  10 /*inMonth*/,
2035  0 /*onDayOfWeek*/,
2036  15 /*onDayOfMonth*/,
2037  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2038  0 /*atTimeCode (0/15)*/,
2039  60 /*deltaMinutes*/,
2040  0 /*letterIndex ("")*/,
2041  },
2042  // Rule Arg 1967 only - Apr 2 0:00 0 -
2043  {
2044  1967 /*fromYear*/,
2045  1967 /*toYear*/,
2046  4 /*inMonth*/,
2047  0 /*onDayOfWeek*/,
2048  2 /*onDayOfMonth*/,
2049  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2050  0 /*atTimeCode (0/15)*/,
2051  0 /*deltaMinutes*/,
2052  0 /*letterIndex ("")*/,
2053  },
2054  // Rule Arg 1967 1968 - Oct Sun>=1 0:00 1:00 -
2055  {
2056  1967 /*fromYear*/,
2057  1968 /*toYear*/,
2058  10 /*inMonth*/,
2059  7 /*onDayOfWeek*/,
2060  1 /*onDayOfMonth*/,
2061  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2062  0 /*atTimeCode (0/15)*/,
2063  60 /*deltaMinutes*/,
2064  0 /*letterIndex ("")*/,
2065  },
2066  // Rule Arg 1968 1969 - Apr Sun>=1 0:00 0 -
2067  {
2068  1968 /*fromYear*/,
2069  1969 /*toYear*/,
2070  4 /*inMonth*/,
2071  7 /*onDayOfWeek*/,
2072  1 /*onDayOfMonth*/,
2073  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2074  0 /*atTimeCode (0/15)*/,
2075  0 /*deltaMinutes*/,
2076  0 /*letterIndex ("")*/,
2077  },
2078  // Rule Arg 1974 only - Jan 23 0:00 1:00 -
2079  {
2080  1974 /*fromYear*/,
2081  1974 /*toYear*/,
2082  1 /*inMonth*/,
2083  0 /*onDayOfWeek*/,
2084  23 /*onDayOfMonth*/,
2085  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2086  0 /*atTimeCode (0/15)*/,
2087  60 /*deltaMinutes*/,
2088  0 /*letterIndex ("")*/,
2089  },
2090  // Rule Arg 1974 only - May 1 0:00 0 -
2091  {
2092  1974 /*fromYear*/,
2093  1974 /*toYear*/,
2094  5 /*inMonth*/,
2095  0 /*onDayOfWeek*/,
2096  1 /*onDayOfMonth*/,
2097  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2098  0 /*atTimeCode (0/15)*/,
2099  0 /*deltaMinutes*/,
2100  0 /*letterIndex ("")*/,
2101  },
2102  // Rule Arg 1988 only - Dec 1 0:00 1:00 -
2103  {
2104  1988 /*fromYear*/,
2105  1988 /*toYear*/,
2106  12 /*inMonth*/,
2107  0 /*onDayOfWeek*/,
2108  1 /*onDayOfMonth*/,
2109  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2110  0 /*atTimeCode (0/15)*/,
2111  60 /*deltaMinutes*/,
2112  0 /*letterIndex ("")*/,
2113  },
2114  // Rule Arg 1989 1993 - Mar Sun>=1 0:00 0 -
2115  {
2116  1989 /*fromYear*/,
2117  1993 /*toYear*/,
2118  3 /*inMonth*/,
2119  7 /*onDayOfWeek*/,
2120  1 /*onDayOfMonth*/,
2121  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2122  0 /*atTimeCode (0/15)*/,
2123  0 /*deltaMinutes*/,
2124  0 /*letterIndex ("")*/,
2125  },
2126  // Rule Arg 1989 1992 - Oct Sun>=15 0:00 1:00 -
2127  {
2128  1989 /*fromYear*/,
2129  1992 /*toYear*/,
2130  10 /*inMonth*/,
2131  7 /*onDayOfWeek*/,
2132  15 /*onDayOfMonth*/,
2133  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2134  0 /*atTimeCode (0/15)*/,
2135  60 /*deltaMinutes*/,
2136  0 /*letterIndex ("")*/,
2137  },
2138  // Rule Arg 1999 only - Oct Sun>=1 0:00 1:00 -
2139  {
2140  1999 /*fromYear*/,
2141  1999 /*toYear*/,
2142  10 /*inMonth*/,
2143  7 /*onDayOfWeek*/,
2144  1 /*onDayOfMonth*/,
2145  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2146  0 /*atTimeCode (0/15)*/,
2147  60 /*deltaMinutes*/,
2148  0 /*letterIndex ("")*/,
2149  },
2150  // Rule Arg 2000 only - Mar 3 0:00 0 -
2151  {
2152  2000 /*fromYear*/,
2153  2000 /*toYear*/,
2154  3 /*inMonth*/,
2155  0 /*onDayOfWeek*/,
2156  3 /*onDayOfMonth*/,
2157  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2158  0 /*atTimeCode (0/15)*/,
2159  0 /*deltaMinutes*/,
2160  0 /*letterIndex ("")*/,
2161  },
2162  // Rule Arg 2007 only - Dec 30 0:00 1:00 -
2163  {
2164  2007 /*fromYear*/,
2165  2007 /*toYear*/,
2166  12 /*inMonth*/,
2167  0 /*onDayOfWeek*/,
2168  30 /*onDayOfMonth*/,
2169  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2170  0 /*atTimeCode (0/15)*/,
2171  60 /*deltaMinutes*/,
2172  0 /*letterIndex ("")*/,
2173  },
2174  // Rule Arg 2008 2009 - Mar Sun>=15 0:00 0 -
2175  {
2176  2008 /*fromYear*/,
2177  2009 /*toYear*/,
2178  3 /*inMonth*/,
2179  7 /*onDayOfWeek*/,
2180  15 /*onDayOfMonth*/,
2181  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2182  0 /*atTimeCode (0/15)*/,
2183  0 /*deltaMinutes*/,
2184  0 /*letterIndex ("")*/,
2185  },
2186  // Rule Arg 2008 only - Oct Sun>=15 0:00 1:00 -
2187  {
2188  2008 /*fromYear*/,
2189  2008 /*toYear*/,
2190  10 /*inMonth*/,
2191  7 /*onDayOfWeek*/,
2192  15 /*onDayOfMonth*/,
2193  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2194  0 /*atTimeCode (0/15)*/,
2195  60 /*deltaMinutes*/,
2196  0 /*letterIndex ("")*/,
2197  },
2198 
2199 };
2200 
2201 const complete::ZonePolicy kZonePolicyArg ACE_TIME_PROGMEM = {
2202  kZoneRulesArg /*rules*/,
2203  30 /*numRules*/,
2204 };
2205 
2206 //---------------------------------------------------------------------------
2207 // Policy name: Armenia
2208 // Rules: 3
2209 //---------------------------------------------------------------------------
2210 
2211 static const complete::ZoneRule kZoneRulesArmenia[] ACE_TIME_PROGMEM = {
2212  // Anchor: Rule Armenia 2011 only - Oct lastSun 2:00s 0 -
2213  {
2214  -32767 /*fromYear*/,
2215  -32767 /*toYear*/,
2216  1 /*inMonth*/,
2217  0 /*onDayOfWeek*/,
2218  1 /*onDayOfMonth*/,
2219  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2220  0 /*atTimeCode (0/15)*/,
2221  0 /*deltaMinutes*/,
2222  0 /*letterIndex ("")*/,
2223  },
2224  // Rule Armenia 2011 only - Mar lastSun 2:00s 1:00 -
2225  {
2226  2011 /*fromYear*/,
2227  2011 /*toYear*/,
2228  3 /*inMonth*/,
2229  7 /*onDayOfWeek*/,
2230  0 /*onDayOfMonth*/,
2231  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2232  480 /*atTimeCode (7200/15)*/,
2233  60 /*deltaMinutes*/,
2234  0 /*letterIndex ("")*/,
2235  },
2236  // Rule Armenia 2011 only - Oct lastSun 2:00s 0 -
2237  {
2238  2011 /*fromYear*/,
2239  2011 /*toYear*/,
2240  10 /*inMonth*/,
2241  7 /*onDayOfWeek*/,
2242  0 /*onDayOfMonth*/,
2243  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2244  480 /*atTimeCode (7200/15)*/,
2245  0 /*deltaMinutes*/,
2246  0 /*letterIndex ("")*/,
2247  },
2248 
2249 };
2250 
2251 const complete::ZonePolicy kZonePolicyArmenia ACE_TIME_PROGMEM = {
2252  kZoneRulesArmenia /*rules*/,
2253  3 /*numRules*/,
2254 };
2255 
2256 //---------------------------------------------------------------------------
2257 // Policy name: Aus
2258 // Rules: 8
2259 //---------------------------------------------------------------------------
2260 
2261 static const complete::ZoneRule kZoneRulesAus[] ACE_TIME_PROGMEM = {
2262  // Anchor: Rule Aus 1917 only - Mar lastSun 2:00s 0 S
2263  {
2264  -32767 /*fromYear*/,
2265  -32767 /*toYear*/,
2266  1 /*inMonth*/,
2267  0 /*onDayOfWeek*/,
2268  1 /*onDayOfMonth*/,
2269  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2270  0 /*atTimeCode (0/15)*/,
2271  0 /*deltaMinutes*/,
2272  25 /*letterIndex ("S")*/,
2273  },
2274  // Rule Aus 1917 only - Jan 1 2:00s 1:00 D
2275  {
2276  1917 /*fromYear*/,
2277  1917 /*toYear*/,
2278  1 /*inMonth*/,
2279  0 /*onDayOfWeek*/,
2280  1 /*onDayOfMonth*/,
2281  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2282  480 /*atTimeCode (7200/15)*/,
2283  60 /*deltaMinutes*/,
2284  13 /*letterIndex ("D")*/,
2285  },
2286  // Rule Aus 1917 only - Mar lastSun 2:00s 0 S
2287  {
2288  1917 /*fromYear*/,
2289  1917 /*toYear*/,
2290  3 /*inMonth*/,
2291  7 /*onDayOfWeek*/,
2292  0 /*onDayOfMonth*/,
2293  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2294  480 /*atTimeCode (7200/15)*/,
2295  0 /*deltaMinutes*/,
2296  25 /*letterIndex ("S")*/,
2297  },
2298  // Rule Aus 1942 only - Jan 1 2:00s 1:00 D
2299  {
2300  1942 /*fromYear*/,
2301  1942 /*toYear*/,
2302  1 /*inMonth*/,
2303  0 /*onDayOfWeek*/,
2304  1 /*onDayOfMonth*/,
2305  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2306  480 /*atTimeCode (7200/15)*/,
2307  60 /*deltaMinutes*/,
2308  13 /*letterIndex ("D")*/,
2309  },
2310  // Rule Aus 1942 only - Mar lastSun 2:00s 0 S
2311  {
2312  1942 /*fromYear*/,
2313  1942 /*toYear*/,
2314  3 /*inMonth*/,
2315  7 /*onDayOfWeek*/,
2316  0 /*onDayOfMonth*/,
2317  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2318  480 /*atTimeCode (7200/15)*/,
2319  0 /*deltaMinutes*/,
2320  25 /*letterIndex ("S")*/,
2321  },
2322  // Rule Aus 1942 only - Sep 27 2:00s 1:00 D
2323  {
2324  1942 /*fromYear*/,
2325  1942 /*toYear*/,
2326  9 /*inMonth*/,
2327  0 /*onDayOfWeek*/,
2328  27 /*onDayOfMonth*/,
2329  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2330  480 /*atTimeCode (7200/15)*/,
2331  60 /*deltaMinutes*/,
2332  13 /*letterIndex ("D")*/,
2333  },
2334  // Rule Aus 1943 1944 - Mar lastSun 2:00s 0 S
2335  {
2336  1943 /*fromYear*/,
2337  1944 /*toYear*/,
2338  3 /*inMonth*/,
2339  7 /*onDayOfWeek*/,
2340  0 /*onDayOfMonth*/,
2341  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2342  480 /*atTimeCode (7200/15)*/,
2343  0 /*deltaMinutes*/,
2344  25 /*letterIndex ("S")*/,
2345  },
2346  // Rule Aus 1943 only - Oct 3 2:00s 1:00 D
2347  {
2348  1943 /*fromYear*/,
2349  1943 /*toYear*/,
2350  10 /*inMonth*/,
2351  0 /*onDayOfWeek*/,
2352  3 /*onDayOfMonth*/,
2353  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2354  480 /*atTimeCode (7200/15)*/,
2355  60 /*deltaMinutes*/,
2356  13 /*letterIndex ("D")*/,
2357  },
2358 
2359 };
2360 
2361 const complete::ZonePolicy kZonePolicyAus ACE_TIME_PROGMEM = {
2362  kZoneRulesAus /*rules*/,
2363  8 /*numRules*/,
2364 };
2365 
2366 //---------------------------------------------------------------------------
2367 // Policy name: Austria
2368 // Rules: 10
2369 //---------------------------------------------------------------------------
2370 
2371 static const complete::ZoneRule kZoneRulesAustria[] ACE_TIME_PROGMEM = {
2372  // Anchor: Rule Austria 1920 only - Sep 13 2:00s 0 -
2373  {
2374  -32767 /*fromYear*/,
2375  -32767 /*toYear*/,
2376  1 /*inMonth*/,
2377  0 /*onDayOfWeek*/,
2378  1 /*onDayOfMonth*/,
2379  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2380  0 /*atTimeCode (0/15)*/,
2381  0 /*deltaMinutes*/,
2382  0 /*letterIndex ("")*/,
2383  },
2384  // Rule Austria 1920 only - Apr 5 2:00s 1:00 S
2385  {
2386  1920 /*fromYear*/,
2387  1920 /*toYear*/,
2388  4 /*inMonth*/,
2389  0 /*onDayOfWeek*/,
2390  5 /*onDayOfMonth*/,
2391  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2392  480 /*atTimeCode (7200/15)*/,
2393  60 /*deltaMinutes*/,
2394  25 /*letterIndex ("S")*/,
2395  },
2396  // Rule Austria 1920 only - Sep 13 2:00s 0 -
2397  {
2398  1920 /*fromYear*/,
2399  1920 /*toYear*/,
2400  9 /*inMonth*/,
2401  0 /*onDayOfWeek*/,
2402  13 /*onDayOfMonth*/,
2403  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2404  480 /*atTimeCode (7200/15)*/,
2405  0 /*deltaMinutes*/,
2406  0 /*letterIndex ("")*/,
2407  },
2408  // Rule Austria 1946 only - Apr 14 2:00s 1:00 S
2409  {
2410  1946 /*fromYear*/,
2411  1946 /*toYear*/,
2412  4 /*inMonth*/,
2413  0 /*onDayOfWeek*/,
2414  14 /*onDayOfMonth*/,
2415  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2416  480 /*atTimeCode (7200/15)*/,
2417  60 /*deltaMinutes*/,
2418  25 /*letterIndex ("S")*/,
2419  },
2420  // Rule Austria 1946 only - Oct 7 2:00s 0 -
2421  {
2422  1946 /*fromYear*/,
2423  1946 /*toYear*/,
2424  10 /*inMonth*/,
2425  0 /*onDayOfWeek*/,
2426  7 /*onDayOfMonth*/,
2427  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2428  480 /*atTimeCode (7200/15)*/,
2429  0 /*deltaMinutes*/,
2430  0 /*letterIndex ("")*/,
2431  },
2432  // Rule Austria 1947 1948 - Oct Sun>=1 2:00s 0 -
2433  {
2434  1947 /*fromYear*/,
2435  1948 /*toYear*/,
2436  10 /*inMonth*/,
2437  7 /*onDayOfWeek*/,
2438  1 /*onDayOfMonth*/,
2439  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2440  480 /*atTimeCode (7200/15)*/,
2441  0 /*deltaMinutes*/,
2442  0 /*letterIndex ("")*/,
2443  },
2444  // Rule Austria 1947 only - Apr 6 2:00s 1:00 S
2445  {
2446  1947 /*fromYear*/,
2447  1947 /*toYear*/,
2448  4 /*inMonth*/,
2449  0 /*onDayOfWeek*/,
2450  6 /*onDayOfMonth*/,
2451  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2452  480 /*atTimeCode (7200/15)*/,
2453  60 /*deltaMinutes*/,
2454  25 /*letterIndex ("S")*/,
2455  },
2456  // Rule Austria 1948 only - Apr 18 2:00s 1:00 S
2457  {
2458  1948 /*fromYear*/,
2459  1948 /*toYear*/,
2460  4 /*inMonth*/,
2461  0 /*onDayOfWeek*/,
2462  18 /*onDayOfMonth*/,
2463  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2464  480 /*atTimeCode (7200/15)*/,
2465  60 /*deltaMinutes*/,
2466  25 /*letterIndex ("S")*/,
2467  },
2468  // Rule Austria 1980 only - Apr 6 0:00 1:00 S
2469  {
2470  1980 /*fromYear*/,
2471  1980 /*toYear*/,
2472  4 /*inMonth*/,
2473  0 /*onDayOfWeek*/,
2474  6 /*onDayOfMonth*/,
2475  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2476  0 /*atTimeCode (0/15)*/,
2477  60 /*deltaMinutes*/,
2478  25 /*letterIndex ("S")*/,
2479  },
2480  // Rule Austria 1980 only - Sep 28 0:00 0 -
2481  {
2482  1980 /*fromYear*/,
2483  1980 /*toYear*/,
2484  9 /*inMonth*/,
2485  0 /*onDayOfWeek*/,
2486  28 /*onDayOfMonth*/,
2487  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2488  0 /*atTimeCode (0/15)*/,
2489  0 /*deltaMinutes*/,
2490  0 /*letterIndex ("")*/,
2491  },
2492 
2493 };
2494 
2495 const complete::ZonePolicy kZonePolicyAustria ACE_TIME_PROGMEM = {
2496  kZoneRulesAustria /*rules*/,
2497  10 /*numRules*/,
2498 };
2499 
2500 //---------------------------------------------------------------------------
2501 // Policy name: Azer
2502 // Rules: 3
2503 //---------------------------------------------------------------------------
2504 
2505 static const complete::ZoneRule kZoneRulesAzer[] ACE_TIME_PROGMEM = {
2506  // Anchor: Rule Azer 1997 2015 - Oct lastSun 5:00 0 -
2507  {
2508  -32767 /*fromYear*/,
2509  -32767 /*toYear*/,
2510  1 /*inMonth*/,
2511  0 /*onDayOfWeek*/,
2512  1 /*onDayOfMonth*/,
2513  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2514  0 /*atTimeCode (0/15)*/,
2515  0 /*deltaMinutes*/,
2516  0 /*letterIndex ("")*/,
2517  },
2518  // Rule Azer 1997 2015 - Mar lastSun 4:00 1:00 -
2519  {
2520  1997 /*fromYear*/,
2521  2015 /*toYear*/,
2522  3 /*inMonth*/,
2523  7 /*onDayOfWeek*/,
2524  0 /*onDayOfMonth*/,
2525  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2526  960 /*atTimeCode (14400/15)*/,
2527  60 /*deltaMinutes*/,
2528  0 /*letterIndex ("")*/,
2529  },
2530  // Rule Azer 1997 2015 - Oct lastSun 5:00 0 -
2531  {
2532  1997 /*fromYear*/,
2533  2015 /*toYear*/,
2534  10 /*inMonth*/,
2535  7 /*onDayOfWeek*/,
2536  0 /*onDayOfMonth*/,
2537  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2538  1200 /*atTimeCode (18000/15)*/,
2539  0 /*deltaMinutes*/,
2540  0 /*letterIndex ("")*/,
2541  },
2542 
2543 };
2544 
2545 const complete::ZonePolicy kZonePolicyAzer ACE_TIME_PROGMEM = {
2546  kZoneRulesAzer /*rules*/,
2547  3 /*numRules*/,
2548 };
2549 
2550 //---------------------------------------------------------------------------
2551 // Policy name: Barb
2552 // Rules: 12
2553 //---------------------------------------------------------------------------
2554 
2555 static const complete::ZoneRule kZoneRulesBarb[] ACE_TIME_PROGMEM = {
2556  // Anchor: Rule Barb 1942 only - Aug 31 6:00u 0 S
2557  {
2558  -32767 /*fromYear*/,
2559  -32767 /*toYear*/,
2560  1 /*inMonth*/,
2561  0 /*onDayOfWeek*/,
2562  1 /*onDayOfMonth*/,
2563  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2564  0 /*atTimeCode (0/15)*/,
2565  0 /*deltaMinutes*/,
2566  25 /*letterIndex ("S")*/,
2567  },
2568  // Rule Barb 1942 only - Apr 19 5:00u 1:00 D
2569  {
2570  1942 /*fromYear*/,
2571  1942 /*toYear*/,
2572  4 /*inMonth*/,
2573  0 /*onDayOfWeek*/,
2574  19 /*onDayOfMonth*/,
2575  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
2576  1200 /*atTimeCode (18000/15)*/,
2577  60 /*deltaMinutes*/,
2578  13 /*letterIndex ("D")*/,
2579  },
2580  // Rule Barb 1942 only - Aug 31 6:00u 0 S
2581  {
2582  1942 /*fromYear*/,
2583  1942 /*toYear*/,
2584  8 /*inMonth*/,
2585  0 /*onDayOfWeek*/,
2586  31 /*onDayOfMonth*/,
2587  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
2588  1440 /*atTimeCode (21600/15)*/,
2589  0 /*deltaMinutes*/,
2590  25 /*letterIndex ("S")*/,
2591  },
2592  // Rule Barb 1943 only - May 2 5:00u 1:00 D
2593  {
2594  1943 /*fromYear*/,
2595  1943 /*toYear*/,
2596  5 /*inMonth*/,
2597  0 /*onDayOfWeek*/,
2598  2 /*onDayOfMonth*/,
2599  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
2600  1200 /*atTimeCode (18000/15)*/,
2601  60 /*deltaMinutes*/,
2602  13 /*letterIndex ("D")*/,
2603  },
2604  // Rule Barb 1943 only - Sep 5 6:00u 0 S
2605  {
2606  1943 /*fromYear*/,
2607  1943 /*toYear*/,
2608  9 /*inMonth*/,
2609  0 /*onDayOfWeek*/,
2610  5 /*onDayOfMonth*/,
2611  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
2612  1440 /*atTimeCode (21600/15)*/,
2613  0 /*deltaMinutes*/,
2614  25 /*letterIndex ("S")*/,
2615  },
2616  // Rule Barb 1944 only - Apr 10 5:00u 0:30 -
2617  {
2618  1944 /*fromYear*/,
2619  1944 /*toYear*/,
2620  4 /*inMonth*/,
2621  0 /*onDayOfWeek*/,
2622  10 /*onDayOfMonth*/,
2623  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
2624  1200 /*atTimeCode (18000/15)*/,
2625  30 /*deltaMinutes*/,
2626  0 /*letterIndex ("")*/,
2627  },
2628  // Rule Barb 1944 only - Sep 10 6:00u 0 S
2629  {
2630  1944 /*fromYear*/,
2631  1944 /*toYear*/,
2632  9 /*inMonth*/,
2633  0 /*onDayOfWeek*/,
2634  10 /*onDayOfMonth*/,
2635  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
2636  1440 /*atTimeCode (21600/15)*/,
2637  0 /*deltaMinutes*/,
2638  25 /*letterIndex ("S")*/,
2639  },
2640  // Rule Barb 1977 only - Jun 12 2:00 1:00 D
2641  {
2642  1977 /*fromYear*/,
2643  1977 /*toYear*/,
2644  6 /*inMonth*/,
2645  0 /*onDayOfWeek*/,
2646  12 /*onDayOfMonth*/,
2647  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2648  480 /*atTimeCode (7200/15)*/,
2649  60 /*deltaMinutes*/,
2650  13 /*letterIndex ("D")*/,
2651  },
2652  // Rule Barb 1977 1978 - Oct Sun>=1 2:00 0 S
2653  {
2654  1977 /*fromYear*/,
2655  1978 /*toYear*/,
2656  10 /*inMonth*/,
2657  7 /*onDayOfWeek*/,
2658  1 /*onDayOfMonth*/,
2659  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2660  480 /*atTimeCode (7200/15)*/,
2661  0 /*deltaMinutes*/,
2662  25 /*letterIndex ("S")*/,
2663  },
2664  // Rule Barb 1978 1980 - Apr Sun>=15 2:00 1:00 D
2665  {
2666  1978 /*fromYear*/,
2667  1980 /*toYear*/,
2668  4 /*inMonth*/,
2669  7 /*onDayOfWeek*/,
2670  15 /*onDayOfMonth*/,
2671  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2672  480 /*atTimeCode (7200/15)*/,
2673  60 /*deltaMinutes*/,
2674  13 /*letterIndex ("D")*/,
2675  },
2676  // Rule Barb 1979 only - Sep 30 2:00 0 S
2677  {
2678  1979 /*fromYear*/,
2679  1979 /*toYear*/,
2680  9 /*inMonth*/,
2681  0 /*onDayOfWeek*/,
2682  30 /*onDayOfMonth*/,
2683  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2684  480 /*atTimeCode (7200/15)*/,
2685  0 /*deltaMinutes*/,
2686  25 /*letterIndex ("S")*/,
2687  },
2688  // Rule Barb 1980 only - Sep 25 2:00 0 S
2689  {
2690  1980 /*fromYear*/,
2691  1980 /*toYear*/,
2692  9 /*inMonth*/,
2693  0 /*onDayOfWeek*/,
2694  25 /*onDayOfMonth*/,
2695  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2696  480 /*atTimeCode (7200/15)*/,
2697  0 /*deltaMinutes*/,
2698  25 /*letterIndex ("S")*/,
2699  },
2700 
2701 };
2702 
2703 const complete::ZonePolicy kZonePolicyBarb ACE_TIME_PROGMEM = {
2704  kZoneRulesBarb /*rules*/,
2705  12 /*numRules*/,
2706 };
2707 
2708 //---------------------------------------------------------------------------
2709 // Policy name: Belgium
2710 // Rules: 35
2711 //---------------------------------------------------------------------------
2712 
2713 static const complete::ZoneRule kZoneRulesBelgium[] ACE_TIME_PROGMEM = {
2714  // Anchor: Rule Belgium 1918 1919 - Oct Sat>=1 23:00s 0 -
2715  {
2716  -32767 /*fromYear*/,
2717  -32767 /*toYear*/,
2718  1 /*inMonth*/,
2719  0 /*onDayOfWeek*/,
2720  1 /*onDayOfMonth*/,
2721  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2722  0 /*atTimeCode (0/15)*/,
2723  0 /*deltaMinutes*/,
2724  0 /*letterIndex ("")*/,
2725  },
2726  // Rule Belgium 1918 only - Mar 9 0:00s 1:00 S
2727  {
2728  1918 /*fromYear*/,
2729  1918 /*toYear*/,
2730  3 /*inMonth*/,
2731  0 /*onDayOfWeek*/,
2732  9 /*onDayOfMonth*/,
2733  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2734  0 /*atTimeCode (0/15)*/,
2735  60 /*deltaMinutes*/,
2736  25 /*letterIndex ("S")*/,
2737  },
2738  // Rule Belgium 1918 1919 - Oct Sat>=1 23:00s 0 -
2739  {
2740  1918 /*fromYear*/,
2741  1919 /*toYear*/,
2742  10 /*inMonth*/,
2743  6 /*onDayOfWeek*/,
2744  1 /*onDayOfMonth*/,
2745  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2746  5520 /*atTimeCode (82800/15)*/,
2747  0 /*deltaMinutes*/,
2748  0 /*letterIndex ("")*/,
2749  },
2750  // Rule Belgium 1919 only - Mar 1 23:00s 1:00 S
2751  {
2752  1919 /*fromYear*/,
2753  1919 /*toYear*/,
2754  3 /*inMonth*/,
2755  0 /*onDayOfWeek*/,
2756  1 /*onDayOfMonth*/,
2757  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2758  5520 /*atTimeCode (82800/15)*/,
2759  60 /*deltaMinutes*/,
2760  25 /*letterIndex ("S")*/,
2761  },
2762  // Rule Belgium 1920 only - Feb 14 23:00s 1:00 S
2763  {
2764  1920 /*fromYear*/,
2765  1920 /*toYear*/,
2766  2 /*inMonth*/,
2767  0 /*onDayOfWeek*/,
2768  14 /*onDayOfMonth*/,
2769  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2770  5520 /*atTimeCode (82800/15)*/,
2771  60 /*deltaMinutes*/,
2772  25 /*letterIndex ("S")*/,
2773  },
2774  // Rule Belgium 1920 only - Oct 23 23:00s 0 -
2775  {
2776  1920 /*fromYear*/,
2777  1920 /*toYear*/,
2778  10 /*inMonth*/,
2779  0 /*onDayOfWeek*/,
2780  23 /*onDayOfMonth*/,
2781  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2782  5520 /*atTimeCode (82800/15)*/,
2783  0 /*deltaMinutes*/,
2784  0 /*letterIndex ("")*/,
2785  },
2786  // Rule Belgium 1921 only - Mar 14 23:00s 1:00 S
2787  {
2788  1921 /*fromYear*/,
2789  1921 /*toYear*/,
2790  3 /*inMonth*/,
2791  0 /*onDayOfWeek*/,
2792  14 /*onDayOfMonth*/,
2793  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2794  5520 /*atTimeCode (82800/15)*/,
2795  60 /*deltaMinutes*/,
2796  25 /*letterIndex ("S")*/,
2797  },
2798  // Rule Belgium 1921 only - Oct 25 23:00s 0 -
2799  {
2800  1921 /*fromYear*/,
2801  1921 /*toYear*/,
2802  10 /*inMonth*/,
2803  0 /*onDayOfWeek*/,
2804  25 /*onDayOfMonth*/,
2805  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2806  5520 /*atTimeCode (82800/15)*/,
2807  0 /*deltaMinutes*/,
2808  0 /*letterIndex ("")*/,
2809  },
2810  // Rule Belgium 1922 only - Mar 25 23:00s 1:00 S
2811  {
2812  1922 /*fromYear*/,
2813  1922 /*toYear*/,
2814  3 /*inMonth*/,
2815  0 /*onDayOfWeek*/,
2816  25 /*onDayOfMonth*/,
2817  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2818  5520 /*atTimeCode (82800/15)*/,
2819  60 /*deltaMinutes*/,
2820  25 /*letterIndex ("S")*/,
2821  },
2822  // Rule Belgium 1922 1927 - Oct Sat>=1 23:00s 0 -
2823  {
2824  1922 /*fromYear*/,
2825  1927 /*toYear*/,
2826  10 /*inMonth*/,
2827  6 /*onDayOfWeek*/,
2828  1 /*onDayOfMonth*/,
2829  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2830  5520 /*atTimeCode (82800/15)*/,
2831  0 /*deltaMinutes*/,
2832  0 /*letterIndex ("")*/,
2833  },
2834  // Rule Belgium 1923 only - Apr 21 23:00s 1:00 S
2835  {
2836  1923 /*fromYear*/,
2837  1923 /*toYear*/,
2838  4 /*inMonth*/,
2839  0 /*onDayOfWeek*/,
2840  21 /*onDayOfMonth*/,
2841  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2842  5520 /*atTimeCode (82800/15)*/,
2843  60 /*deltaMinutes*/,
2844  25 /*letterIndex ("S")*/,
2845  },
2846  // Rule Belgium 1924 only - Mar 29 23:00s 1:00 S
2847  {
2848  1924 /*fromYear*/,
2849  1924 /*toYear*/,
2850  3 /*inMonth*/,
2851  0 /*onDayOfWeek*/,
2852  29 /*onDayOfMonth*/,
2853  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2854  5520 /*atTimeCode (82800/15)*/,
2855  60 /*deltaMinutes*/,
2856  25 /*letterIndex ("S")*/,
2857  },
2858  // Rule Belgium 1925 only - Apr 4 23:00s 1:00 S
2859  {
2860  1925 /*fromYear*/,
2861  1925 /*toYear*/,
2862  4 /*inMonth*/,
2863  0 /*onDayOfWeek*/,
2864  4 /*onDayOfMonth*/,
2865  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2866  5520 /*atTimeCode (82800/15)*/,
2867  60 /*deltaMinutes*/,
2868  25 /*letterIndex ("S")*/,
2869  },
2870  // Rule Belgium 1926 only - Apr 17 23:00s 1:00 S
2871  {
2872  1926 /*fromYear*/,
2873  1926 /*toYear*/,
2874  4 /*inMonth*/,
2875  0 /*onDayOfWeek*/,
2876  17 /*onDayOfMonth*/,
2877  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2878  5520 /*atTimeCode (82800/15)*/,
2879  60 /*deltaMinutes*/,
2880  25 /*letterIndex ("S")*/,
2881  },
2882  // Rule Belgium 1927 only - Apr 9 23:00s 1:00 S
2883  {
2884  1927 /*fromYear*/,
2885  1927 /*toYear*/,
2886  4 /*inMonth*/,
2887  0 /*onDayOfWeek*/,
2888  9 /*onDayOfMonth*/,
2889  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2890  5520 /*atTimeCode (82800/15)*/,
2891  60 /*deltaMinutes*/,
2892  25 /*letterIndex ("S")*/,
2893  },
2894  // Rule Belgium 1928 only - Apr 14 23:00s 1:00 S
2895  {
2896  1928 /*fromYear*/,
2897  1928 /*toYear*/,
2898  4 /*inMonth*/,
2899  0 /*onDayOfWeek*/,
2900  14 /*onDayOfMonth*/,
2901  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2902  5520 /*atTimeCode (82800/15)*/,
2903  60 /*deltaMinutes*/,
2904  25 /*letterIndex ("S")*/,
2905  },
2906  // Rule Belgium 1928 1938 - Oct Sun>=2 2:00s 0 -
2907  {
2908  1928 /*fromYear*/,
2909  1938 /*toYear*/,
2910  10 /*inMonth*/,
2911  7 /*onDayOfWeek*/,
2912  2 /*onDayOfMonth*/,
2913  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2914  480 /*atTimeCode (7200/15)*/,
2915  0 /*deltaMinutes*/,
2916  0 /*letterIndex ("")*/,
2917  },
2918  // Rule Belgium 1929 only - Apr 21 2:00s 1:00 S
2919  {
2920  1929 /*fromYear*/,
2921  1929 /*toYear*/,
2922  4 /*inMonth*/,
2923  0 /*onDayOfWeek*/,
2924  21 /*onDayOfMonth*/,
2925  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2926  480 /*atTimeCode (7200/15)*/,
2927  60 /*deltaMinutes*/,
2928  25 /*letterIndex ("S")*/,
2929  },
2930  // Rule Belgium 1930 only - Apr 13 2:00s 1:00 S
2931  {
2932  1930 /*fromYear*/,
2933  1930 /*toYear*/,
2934  4 /*inMonth*/,
2935  0 /*onDayOfWeek*/,
2936  13 /*onDayOfMonth*/,
2937  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2938  480 /*atTimeCode (7200/15)*/,
2939  60 /*deltaMinutes*/,
2940  25 /*letterIndex ("S")*/,
2941  },
2942  // Rule Belgium 1931 only - Apr 19 2:00s 1:00 S
2943  {
2944  1931 /*fromYear*/,
2945  1931 /*toYear*/,
2946  4 /*inMonth*/,
2947  0 /*onDayOfWeek*/,
2948  19 /*onDayOfMonth*/,
2949  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2950  480 /*atTimeCode (7200/15)*/,
2951  60 /*deltaMinutes*/,
2952  25 /*letterIndex ("S")*/,
2953  },
2954  // Rule Belgium 1932 only - Apr 3 2:00s 1:00 S
2955  {
2956  1932 /*fromYear*/,
2957  1932 /*toYear*/,
2958  4 /*inMonth*/,
2959  0 /*onDayOfWeek*/,
2960  3 /*onDayOfMonth*/,
2961  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2962  480 /*atTimeCode (7200/15)*/,
2963  60 /*deltaMinutes*/,
2964  25 /*letterIndex ("S")*/,
2965  },
2966  // Rule Belgium 1933 only - Mar 26 2:00s 1:00 S
2967  {
2968  1933 /*fromYear*/,
2969  1933 /*toYear*/,
2970  3 /*inMonth*/,
2971  0 /*onDayOfWeek*/,
2972  26 /*onDayOfMonth*/,
2973  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2974  480 /*atTimeCode (7200/15)*/,
2975  60 /*deltaMinutes*/,
2976  25 /*letterIndex ("S")*/,
2977  },
2978  // Rule Belgium 1934 only - Apr 8 2:00s 1:00 S
2979  {
2980  1934 /*fromYear*/,
2981  1934 /*toYear*/,
2982  4 /*inMonth*/,
2983  0 /*onDayOfWeek*/,
2984  8 /*onDayOfMonth*/,
2985  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2986  480 /*atTimeCode (7200/15)*/,
2987  60 /*deltaMinutes*/,
2988  25 /*letterIndex ("S")*/,
2989  },
2990  // Rule Belgium 1935 only - Mar 31 2:00s 1:00 S
2991  {
2992  1935 /*fromYear*/,
2993  1935 /*toYear*/,
2994  3 /*inMonth*/,
2995  0 /*onDayOfWeek*/,
2996  31 /*onDayOfMonth*/,
2997  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2998  480 /*atTimeCode (7200/15)*/,
2999  60 /*deltaMinutes*/,
3000  25 /*letterIndex ("S")*/,
3001  },
3002  // Rule Belgium 1936 only - Apr 19 2:00s 1:00 S
3003  {
3004  1936 /*fromYear*/,
3005  1936 /*toYear*/,
3006  4 /*inMonth*/,
3007  0 /*onDayOfWeek*/,
3008  19 /*onDayOfMonth*/,
3009  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
3010  480 /*atTimeCode (7200/15)*/,
3011  60 /*deltaMinutes*/,
3012  25 /*letterIndex ("S")*/,
3013  },
3014  // Rule Belgium 1937 only - Apr 4 2:00s 1:00 S
3015  {
3016  1937 /*fromYear*/,
3017  1937 /*toYear*/,
3018  4 /*inMonth*/,
3019  0 /*onDayOfWeek*/,
3020  4 /*onDayOfMonth*/,
3021  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
3022  480 /*atTimeCode (7200/15)*/,
3023  60 /*deltaMinutes*/,
3024  25 /*letterIndex ("S")*/,
3025  },
3026  // Rule Belgium 1938 only - Mar 27 2:00s 1:00 S
3027  {
3028  1938 /*fromYear*/,
3029  1938 /*toYear*/,
3030  3 /*inMonth*/,
3031  0 /*onDayOfWeek*/,
3032  27 /*onDayOfMonth*/,
3033  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
3034  480 /*atTimeCode (7200/15)*/,
3035  60 /*deltaMinutes*/,
3036  25 /*letterIndex ("S")*/,
3037  },
3038  // Rule Belgium 1939 only - Apr 16 2:00s 1:00 S
3039  {
3040  1939 /*fromYear*/,
3041  1939 /*toYear*/,
3042  4 /*inMonth*/,
3043  0 /*onDayOfWeek*/,
3044  16 /*onDayOfMonth*/,
3045  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
3046  480 /*atTimeCode (7200/15)*/,
3047  60 /*deltaMinutes*/,
3048  25 /*letterIndex ("S")*/,
3049  },
3050  // Rule Belgium 1939 only - Nov 19 2:00s 0 -
3051  {
3052  1939 /*fromYear*/,
3053  1939 /*toYear*/,
3054  11 /*inMonth*/,
3055  0 /*onDayOfWeek*/,
3056  19 /*onDayOfMonth*/,
3057  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
3058  480 /*atTimeCode (7200/15)*/,
3059  0 /*deltaMinutes*/,
3060  0 /*letterIndex ("")*/,
3061  },
3062  // Rule Belgium 1940 only - Feb 25 2:00s 1:00 S
3063  {
3064  1940 /*fromYear*/,
3065  1940 /*toYear*/,
3066  2 /*inMonth*/,
3067  0 /*onDayOfWeek*/,
3068  25 /*onDayOfMonth*/,
3069  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
3070  480 /*atTimeCode (7200/15)*/,
3071  60 /*deltaMinutes*/,
3072  25 /*letterIndex ("S")*/,
3073  },
3074  // Rule Belgium 1944 only - Sep 17 2:00s 0 -
3075  {
3076  1944 /*fromYear*/,
3077  1944 /*toYear*/,
3078  9 /*inMonth*/,
3079  0 /*onDayOfWeek*/,
3080  17 /*onDayOfMonth*/,
3081  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
3082  480 /*atTimeCode (7200/15)*/,
3083  0 /*deltaMinutes*/,
3084  0 /*letterIndex ("")*/,
3085  },
3086  // Rule Belgium 1945 only - Apr 2 2:00s 1:00 S
3087  {
3088  1945 /*fromYear*/,
3089  1945 /*toYear*/,
3090  4 /*inMonth*/,
3091  0 /*onDayOfWeek*/,
3092  2 /*onDayOfMonth*/,
3093  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
3094  480 /*atTimeCode (7200/15)*/,
3095  60 /*deltaMinutes*/,
3096  25 /*letterIndex ("S")*/,
3097  },
3098  // Rule Belgium 1945 only - Sep 16 2:00s 0 -
3099  {
3100  1945 /*fromYear*/,
3101  1945 /*toYear*/,
3102  9 /*inMonth*/,
3103  0 /*onDayOfWeek*/,
3104  16 /*onDayOfMonth*/,
3105  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
3106  480 /*atTimeCode (7200/15)*/,
3107  0 /*deltaMinutes*/,
3108  0 /*letterIndex ("")*/,
3109  },
3110  // Rule Belgium 1946 only - May 19 2:00s 1:00 S
3111  {
3112  1946 /*fromYear*/,
3113  1946 /*toYear*/,
3114  5 /*inMonth*/,
3115  0 /*onDayOfWeek*/,
3116  19 /*onDayOfMonth*/,
3117  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
3118  480 /*atTimeCode (7200/15)*/,
3119  60 /*deltaMinutes*/,
3120  25 /*letterIndex ("S")*/,
3121  },
3122  // Rule Belgium 1946 only - Oct 7 2:00s 0 -
3123  {
3124  1946 /*fromYear*/,
3125  1946 /*toYear*/,
3126  10 /*inMonth*/,
3127  0 /*onDayOfWeek*/,
3128  7 /*onDayOfMonth*/,
3129  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
3130  480 /*atTimeCode (7200/15)*/,
3131  0 /*deltaMinutes*/,
3132  0 /*letterIndex ("")*/,
3133  },
3134 
3135 };
3136 
3137 const complete::ZonePolicy kZonePolicyBelgium ACE_TIME_PROGMEM = {
3138  kZoneRulesBelgium /*rules*/,
3139  35 /*numRules*/,
3140 };
3141 
3142 //---------------------------------------------------------------------------
3143 // Policy name: Belize
3144 // Rules: 12
3145 //---------------------------------------------------------------------------
3146 
3147 static const complete::ZoneRule kZoneRulesBelize[] ACE_TIME_PROGMEM = {
3148  // Anchor: Rule Belize 1919 1942 - Feb Sat>=8 24:00 0 CST
3149  {
3150  -32767 /*fromYear*/,
3151  -32767 /*toYear*/,
3152  1 /*inMonth*/,
3153  0 /*onDayOfWeek*/,
3154  1 /*onDayOfMonth*/,
3155  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3156  0 /*atTimeCode (0/15)*/,
3157  0 /*deltaMinutes*/,
3158  11 /*letterIndex ("CST")*/,
3159  },
3160  // Rule Belize 1918 1941 - Oct Sat>=1 24:00 0:30 -0530
3161  {
3162  1918 /*fromYear*/,
3163  1941 /*toYear*/,
3164  10 /*inMonth*/,
3165  6 /*onDayOfWeek*/,
3166  1 /*onDayOfMonth*/,
3167  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3168  5760 /*atTimeCode (86400/15)*/,
3169  30 /*deltaMinutes*/,
3170  5 /*letterIndex ("-0530")*/,
3171  },
3172  // Rule Belize 1919 1942 - Feb Sat>=8 24:00 0 CST
3173  {
3174  1919 /*fromYear*/,
3175  1942 /*toYear*/,
3176  2 /*inMonth*/,
3177  6 /*onDayOfWeek*/,
3178  8 /*onDayOfMonth*/,
3179  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3180  5760 /*atTimeCode (86400/15)*/,
3181  0 /*deltaMinutes*/,
3182  11 /*letterIndex ("CST")*/,
3183  },
3184  // Rule Belize 1942 only - Jun 27 24:00 1:00 CWT
3185  {
3186  1942 /*fromYear*/,
3187  1942 /*toYear*/,
3188  6 /*inMonth*/,
3189  0 /*onDayOfWeek*/,
3190  27 /*onDayOfMonth*/,
3191  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3192  5760 /*atTimeCode (86400/15)*/,
3193  60 /*deltaMinutes*/,
3194  12 /*letterIndex ("CWT")*/,
3195  },
3196  // Rule Belize 1945 only - Aug 14 23:00u 1:00 CPT
3197  {
3198  1945 /*fromYear*/,
3199  1945 /*toYear*/,
3200  8 /*inMonth*/,
3201  0 /*onDayOfWeek*/,
3202  14 /*onDayOfMonth*/,
3203  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
3204  5520 /*atTimeCode (82800/15)*/,
3205  60 /*deltaMinutes*/,
3206  10 /*letterIndex ("CPT")*/,
3207  },
3208  // Rule Belize 1945 only - Dec 15 24:00 0 CST
3209  {
3210  1945 /*fromYear*/,
3211  1945 /*toYear*/,
3212  12 /*inMonth*/,
3213  0 /*onDayOfWeek*/,
3214  15 /*onDayOfMonth*/,
3215  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3216  5760 /*atTimeCode (86400/15)*/,
3217  0 /*deltaMinutes*/,
3218  11 /*letterIndex ("CST")*/,
3219  },
3220  // Rule Belize 1947 1967 - Oct Sat>=1 24:00 0:30 -0530
3221  {
3222  1947 /*fromYear*/,
3223  1967 /*toYear*/,
3224  10 /*inMonth*/,
3225  6 /*onDayOfWeek*/,
3226  1 /*onDayOfMonth*/,
3227  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3228  5760 /*atTimeCode (86400/15)*/,
3229  30 /*deltaMinutes*/,
3230  5 /*letterIndex ("-0530")*/,
3231  },
3232  // Rule Belize 1948 1968 - Feb Sat>=8 24:00 0 CST
3233  {
3234  1948 /*fromYear*/,
3235  1968 /*toYear*/,
3236  2 /*inMonth*/,
3237  6 /*onDayOfWeek*/,
3238  8 /*onDayOfMonth*/,
3239  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3240  5760 /*atTimeCode (86400/15)*/,
3241  0 /*deltaMinutes*/,
3242  11 /*letterIndex ("CST")*/,
3243  },
3244  // Rule Belize 1973 only - Dec 5 0:00 1:00 CDT
3245  {
3246  1973 /*fromYear*/,
3247  1973 /*toYear*/,
3248  12 /*inMonth*/,
3249  0 /*onDayOfWeek*/,
3250  5 /*onDayOfMonth*/,
3251  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3252  0 /*atTimeCode (0/15)*/,
3253  60 /*deltaMinutes*/,
3254  9 /*letterIndex ("CDT")*/,
3255  },
3256  // Rule Belize 1974 only - Feb 9 0:00 0 CST
3257  {
3258  1974 /*fromYear*/,
3259  1974 /*toYear*/,
3260  2 /*inMonth*/,
3261  0 /*onDayOfWeek*/,
3262  9 /*onDayOfMonth*/,
3263  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3264  0 /*atTimeCode (0/15)*/,
3265  0 /*deltaMinutes*/,
3266  11 /*letterIndex ("CST")*/,
3267  },
3268  // Rule Belize 1982 only - Dec 18 0:00 1:00 CDT
3269  {
3270  1982 /*fromYear*/,
3271  1982 /*toYear*/,
3272  12 /*inMonth*/,
3273  0 /*onDayOfWeek*/,
3274  18 /*onDayOfMonth*/,
3275  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3276  0 /*atTimeCode (0/15)*/,
3277  60 /*deltaMinutes*/,
3278  9 /*letterIndex ("CDT")*/,
3279  },
3280  // Rule Belize 1983 only - Feb 12 0:00 0 CST
3281  {
3282  1983 /*fromYear*/,
3283  1983 /*toYear*/,
3284  2 /*inMonth*/,
3285  0 /*onDayOfWeek*/,
3286  12 /*onDayOfMonth*/,
3287  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3288  0 /*atTimeCode (0/15)*/,
3289  0 /*deltaMinutes*/,
3290  11 /*letterIndex ("CST")*/,
3291  },
3292 
3293 };
3294 
3295 const complete::ZonePolicy kZonePolicyBelize ACE_TIME_PROGMEM = {
3296  kZoneRulesBelize /*rules*/,
3297  12 /*numRules*/,
3298 };
3299 
3300 //---------------------------------------------------------------------------
3301 // Policy name: Bermuda
3302 // Rules: 17
3303 //---------------------------------------------------------------------------
3304 
3305 static const complete::ZoneRule kZoneRulesBermuda[] ACE_TIME_PROGMEM = {
3306  // Anchor: Rule Bermuda 1917 only - Sep 30 24:00 0 -
3307  {
3308  -32767 /*fromYear*/,
3309  -32767 /*toYear*/,
3310  1 /*inMonth*/,
3311  0 /*onDayOfWeek*/,
3312  1 /*onDayOfMonth*/,
3313  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3314  0 /*atTimeCode (0/15)*/,
3315  0 /*deltaMinutes*/,
3316  0 /*letterIndex ("")*/,
3317  },
3318  // Rule Bermuda 1917 only - Apr 5 24:00 1:00 -
3319  {
3320  1917 /*fromYear*/,
3321  1917 /*toYear*/,
3322  4 /*inMonth*/,
3323  0 /*onDayOfWeek*/,
3324  5 /*onDayOfMonth*/,
3325  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3326  5760 /*atTimeCode (86400/15)*/,
3327  60 /*deltaMinutes*/,
3328  0 /*letterIndex ("")*/,
3329  },
3330  // Rule Bermuda 1917 only - Sep 30 24:00 0 -
3331  {
3332  1917 /*fromYear*/,
3333  1917 /*toYear*/,
3334  9 /*inMonth*/,
3335  0 /*onDayOfWeek*/,
3336  30 /*onDayOfMonth*/,
3337  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3338  5760 /*atTimeCode (86400/15)*/,
3339  0 /*deltaMinutes*/,
3340  0 /*letterIndex ("")*/,
3341  },
3342  // Rule Bermuda 1918 only - Apr 13 24:00 1:00 -
3343  {
3344  1918 /*fromYear*/,
3345  1918 /*toYear*/,
3346  4 /*inMonth*/,
3347  0 /*onDayOfWeek*/,
3348  13 /*onDayOfMonth*/,
3349  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3350  5760 /*atTimeCode (86400/15)*/,
3351  60 /*deltaMinutes*/,
3352  0 /*letterIndex ("")*/,
3353  },
3354  // Rule Bermuda 1918 only - Sep 15 24:00 0 S
3355  {
3356  1918 /*fromYear*/,
3357  1918 /*toYear*/,
3358  9 /*inMonth*/,
3359  0 /*onDayOfWeek*/,
3360  15 /*onDayOfMonth*/,
3361  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3362  5760 /*atTimeCode (86400/15)*/,
3363  0 /*deltaMinutes*/,
3364  25 /*letterIndex ("S")*/,
3365  },
3366  // Rule Bermuda 1942 only - Jan 11 2:00 1:00 D
3367  {
3368  1942 /*fromYear*/,
3369  1942 /*toYear*/,
3370  1 /*inMonth*/,
3371  0 /*onDayOfWeek*/,
3372  11 /*onDayOfMonth*/,
3373  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3374  480 /*atTimeCode (7200/15)*/,
3375  60 /*deltaMinutes*/,
3376  13 /*letterIndex ("D")*/,
3377  },
3378  // Rule Bermuda 1942 only - Oct 18 2:00 0 S
3379  {
3380  1942 /*fromYear*/,
3381  1942 /*toYear*/,
3382  10 /*inMonth*/,
3383  0 /*onDayOfWeek*/,
3384  18 /*onDayOfMonth*/,
3385  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3386  480 /*atTimeCode (7200/15)*/,
3387  0 /*deltaMinutes*/,
3388  25 /*letterIndex ("S")*/,
3389  },
3390  // Rule Bermuda 1943 only - Mar 21 2:00 1:00 D
3391  {
3392  1943 /*fromYear*/,
3393  1943 /*toYear*/,
3394  3 /*inMonth*/,
3395  0 /*onDayOfWeek*/,
3396  21 /*onDayOfMonth*/,
3397  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3398  480 /*atTimeCode (7200/15)*/,
3399  60 /*deltaMinutes*/,
3400  13 /*letterIndex ("D")*/,
3401  },
3402  // Rule Bermuda 1943 only - Oct 31 2:00 0 S
3403  {
3404  1943 /*fromYear*/,
3405  1943 /*toYear*/,
3406  10 /*inMonth*/,
3407  0 /*onDayOfWeek*/,
3408  31 /*onDayOfMonth*/,
3409  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3410  480 /*atTimeCode (7200/15)*/,
3411  0 /*deltaMinutes*/,
3412  25 /*letterIndex ("S")*/,
3413  },
3414  // Rule Bermuda 1944 1945 - Mar Sun>=8 2:00 1:00 D
3415  {
3416  1944 /*fromYear*/,
3417  1945 /*toYear*/,
3418  3 /*inMonth*/,
3419  7 /*onDayOfWeek*/,
3420  8 /*onDayOfMonth*/,
3421  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3422  480 /*atTimeCode (7200/15)*/,
3423  60 /*deltaMinutes*/,
3424  13 /*letterIndex ("D")*/,
3425  },
3426  // Rule Bermuda 1944 1945 - Nov Sun>=1 2:00 0 S
3427  {
3428  1944 /*fromYear*/,
3429  1945 /*toYear*/,
3430  11 /*inMonth*/,
3431  7 /*onDayOfWeek*/,
3432  1 /*onDayOfMonth*/,
3433  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3434  480 /*atTimeCode (7200/15)*/,
3435  0 /*deltaMinutes*/,
3436  25 /*letterIndex ("S")*/,
3437  },
3438  // Rule Bermuda 1947 only - May Sun>=15 2:00 1:00 D
3439  {
3440  1947 /*fromYear*/,
3441  1947 /*toYear*/,
3442  5 /*inMonth*/,
3443  7 /*onDayOfWeek*/,
3444  15 /*onDayOfMonth*/,
3445  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3446  480 /*atTimeCode (7200/15)*/,
3447  60 /*deltaMinutes*/,
3448  13 /*letterIndex ("D")*/,
3449  },
3450  // Rule Bermuda 1947 only - Sep Sun>=8 2:00 0 S
3451  {
3452  1947 /*fromYear*/,
3453  1947 /*toYear*/,
3454  9 /*inMonth*/,
3455  7 /*onDayOfWeek*/,
3456  8 /*onDayOfMonth*/,
3457  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3458  480 /*atTimeCode (7200/15)*/,
3459  0 /*deltaMinutes*/,
3460  25 /*letterIndex ("S")*/,
3461  },
3462  // Rule Bermuda 1948 1952 - May Sun>=22 2:00 1:00 D
3463  {
3464  1948 /*fromYear*/,
3465  1952 /*toYear*/,
3466  5 /*inMonth*/,
3467  7 /*onDayOfWeek*/,
3468  22 /*onDayOfMonth*/,
3469  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3470  480 /*atTimeCode (7200/15)*/,
3471  60 /*deltaMinutes*/,
3472  13 /*letterIndex ("D")*/,
3473  },
3474  // Rule Bermuda 1948 1952 - Sep Sun>=1 2:00 0 S
3475  {
3476  1948 /*fromYear*/,
3477  1952 /*toYear*/,
3478  9 /*inMonth*/,
3479  7 /*onDayOfWeek*/,
3480  1 /*onDayOfMonth*/,
3481  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3482  480 /*atTimeCode (7200/15)*/,
3483  0 /*deltaMinutes*/,
3484  25 /*letterIndex ("S")*/,
3485  },
3486  // Rule Bermuda 1956 only - May Sun>=22 2:00 1:00 D
3487  {
3488  1956 /*fromYear*/,
3489  1956 /*toYear*/,
3490  5 /*inMonth*/,
3491  7 /*onDayOfWeek*/,
3492  22 /*onDayOfMonth*/,
3493  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3494  480 /*atTimeCode (7200/15)*/,
3495  60 /*deltaMinutes*/,
3496  13 /*letterIndex ("D")*/,
3497  },
3498  // Rule Bermuda 1956 only - Oct lastSun 2:00 0 S
3499  {
3500  1956 /*fromYear*/,
3501  1956 /*toYear*/,
3502  10 /*inMonth*/,
3503  7 /*onDayOfWeek*/,
3504  0 /*onDayOfMonth*/,
3505  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3506  480 /*atTimeCode (7200/15)*/,
3507  0 /*deltaMinutes*/,
3508  25 /*letterIndex ("S")*/,
3509  },
3510 
3511 };
3512 
3513 const complete::ZonePolicy kZonePolicyBermuda ACE_TIME_PROGMEM = {
3514  kZoneRulesBermuda /*rules*/,
3515  17 /*numRules*/,
3516 };
3517 
3518 //---------------------------------------------------------------------------
3519 // Policy name: Brazil
3520 // Rules: 58
3521 //---------------------------------------------------------------------------
3522 
3523 static const complete::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = {
3524  // Anchor: Rule Brazil 1932 1933 - Apr 1 0:00 0 -
3525  {
3526  -32767 /*fromYear*/,
3527  -32767 /*toYear*/,
3528  1 /*inMonth*/,
3529  0 /*onDayOfWeek*/,
3530  1 /*onDayOfMonth*/,
3531  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3532  0 /*atTimeCode (0/15)*/,
3533  0 /*deltaMinutes*/,
3534  0 /*letterIndex ("")*/,
3535  },
3536  // Rule Brazil 1931 only - Oct 3 11:00 1:00 -
3537  {
3538  1931 /*fromYear*/,
3539  1931 /*toYear*/,
3540  10 /*inMonth*/,
3541  0 /*onDayOfWeek*/,
3542  3 /*onDayOfMonth*/,
3543  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3544  2640 /*atTimeCode (39600/15)*/,
3545  60 /*deltaMinutes*/,
3546  0 /*letterIndex ("")*/,
3547  },
3548  // Rule Brazil 1932 1933 - Apr 1 0:00 0 -
3549  {
3550  1932 /*fromYear*/,
3551  1933 /*toYear*/,
3552  4 /*inMonth*/,
3553  0 /*onDayOfWeek*/,
3554  1 /*onDayOfMonth*/,
3555  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3556  0 /*atTimeCode (0/15)*/,
3557  0 /*deltaMinutes*/,
3558  0 /*letterIndex ("")*/,
3559  },
3560  // Rule Brazil 1932 only - Oct 3 0:00 1:00 -
3561  {
3562  1932 /*fromYear*/,
3563  1932 /*toYear*/,
3564  10 /*inMonth*/,
3565  0 /*onDayOfWeek*/,
3566  3 /*onDayOfMonth*/,
3567  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3568  0 /*atTimeCode (0/15)*/,
3569  60 /*deltaMinutes*/,
3570  0 /*letterIndex ("")*/,
3571  },
3572  // Rule Brazil 1949 1952 - Dec 1 0:00 1:00 -
3573  {
3574  1949 /*fromYear*/,
3575  1952 /*toYear*/,
3576  12 /*inMonth*/,
3577  0 /*onDayOfWeek*/,
3578  1 /*onDayOfMonth*/,
3579  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3580  0 /*atTimeCode (0/15)*/,
3581  60 /*deltaMinutes*/,
3582  0 /*letterIndex ("")*/,
3583  },
3584  // Rule Brazil 1950 only - Apr 16 1:00 0 -
3585  {
3586  1950 /*fromYear*/,
3587  1950 /*toYear*/,
3588  4 /*inMonth*/,
3589  0 /*onDayOfWeek*/,
3590  16 /*onDayOfMonth*/,
3591  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3592  240 /*atTimeCode (3600/15)*/,
3593  0 /*deltaMinutes*/,
3594  0 /*letterIndex ("")*/,
3595  },
3596  // Rule Brazil 1951 1952 - Apr 1 0:00 0 -
3597  {
3598  1951 /*fromYear*/,
3599  1952 /*toYear*/,
3600  4 /*inMonth*/,
3601  0 /*onDayOfWeek*/,
3602  1 /*onDayOfMonth*/,
3603  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3604  0 /*atTimeCode (0/15)*/,
3605  0 /*deltaMinutes*/,
3606  0 /*letterIndex ("")*/,
3607  },
3608  // Rule Brazil 1953 only - Mar 1 0:00 0 -
3609  {
3610  1953 /*fromYear*/,
3611  1953 /*toYear*/,
3612  3 /*inMonth*/,
3613  0 /*onDayOfWeek*/,
3614  1 /*onDayOfMonth*/,
3615  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3616  0 /*atTimeCode (0/15)*/,
3617  0 /*deltaMinutes*/,
3618  0 /*letterIndex ("")*/,
3619  },
3620  // Rule Brazil 1963 only - Dec 9 0:00 1:00 -
3621  {
3622  1963 /*fromYear*/,
3623  1963 /*toYear*/,
3624  12 /*inMonth*/,
3625  0 /*onDayOfWeek*/,
3626  9 /*onDayOfMonth*/,
3627  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3628  0 /*atTimeCode (0/15)*/,
3629  60 /*deltaMinutes*/,
3630  0 /*letterIndex ("")*/,
3631  },
3632  // Rule Brazil 1964 only - Mar 1 0:00 0 -
3633  {
3634  1964 /*fromYear*/,
3635  1964 /*toYear*/,
3636  3 /*inMonth*/,
3637  0 /*onDayOfWeek*/,
3638  1 /*onDayOfMonth*/,
3639  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3640  0 /*atTimeCode (0/15)*/,
3641  0 /*deltaMinutes*/,
3642  0 /*letterIndex ("")*/,
3643  },
3644  // Rule Brazil 1965 only - Jan 31 0:00 1:00 -
3645  {
3646  1965 /*fromYear*/,
3647  1965 /*toYear*/,
3648  1 /*inMonth*/,
3649  0 /*onDayOfWeek*/,
3650  31 /*onDayOfMonth*/,
3651  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3652  0 /*atTimeCode (0/15)*/,
3653  60 /*deltaMinutes*/,
3654  0 /*letterIndex ("")*/,
3655  },
3656  // Rule Brazil 1965 only - Mar 31 0:00 0 -
3657  {
3658  1965 /*fromYear*/,
3659  1965 /*toYear*/,
3660  3 /*inMonth*/,
3661  0 /*onDayOfWeek*/,
3662  31 /*onDayOfMonth*/,
3663  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3664  0 /*atTimeCode (0/15)*/,
3665  0 /*deltaMinutes*/,
3666  0 /*letterIndex ("")*/,
3667  },
3668  // Rule Brazil 1965 only - Dec 1 0:00 1:00 -
3669  {
3670  1965 /*fromYear*/,
3671  1965 /*toYear*/,
3672  12 /*inMonth*/,
3673  0 /*onDayOfWeek*/,
3674  1 /*onDayOfMonth*/,
3675  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3676  0 /*atTimeCode (0/15)*/,
3677  60 /*deltaMinutes*/,
3678  0 /*letterIndex ("")*/,
3679  },
3680  // Rule Brazil 1966 1968 - Mar 1 0:00 0 -
3681  {
3682  1966 /*fromYear*/,
3683  1968 /*toYear*/,
3684  3 /*inMonth*/,
3685  0 /*onDayOfWeek*/,
3686  1 /*onDayOfMonth*/,
3687  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3688  0 /*atTimeCode (0/15)*/,
3689  0 /*deltaMinutes*/,
3690  0 /*letterIndex ("")*/,
3691  },
3692  // Rule Brazil 1966 1967 - Nov 1 0:00 1:00 -
3693  {
3694  1966 /*fromYear*/,
3695  1967 /*toYear*/,
3696  11 /*inMonth*/,
3697  0 /*onDayOfWeek*/,
3698  1 /*onDayOfMonth*/,
3699  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3700  0 /*atTimeCode (0/15)*/,
3701  60 /*deltaMinutes*/,
3702  0 /*letterIndex ("")*/,
3703  },
3704  // Rule Brazil 1985 only - Nov 2 0:00 1:00 -
3705  {
3706  1985 /*fromYear*/,
3707  1985 /*toYear*/,
3708  11 /*inMonth*/,
3709  0 /*onDayOfWeek*/,
3710  2 /*onDayOfMonth*/,
3711  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3712  0 /*atTimeCode (0/15)*/,
3713  60 /*deltaMinutes*/,
3714  0 /*letterIndex ("")*/,
3715  },
3716  // Rule Brazil 1986 only - Mar 15 0:00 0 -
3717  {
3718  1986 /*fromYear*/,
3719  1986 /*toYear*/,
3720  3 /*inMonth*/,
3721  0 /*onDayOfWeek*/,
3722  15 /*onDayOfMonth*/,
3723  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3724  0 /*atTimeCode (0/15)*/,
3725  0 /*deltaMinutes*/,
3726  0 /*letterIndex ("")*/,
3727  },
3728  // Rule Brazil 1986 only - Oct 25 0:00 1:00 -
3729  {
3730  1986 /*fromYear*/,
3731  1986 /*toYear*/,
3732  10 /*inMonth*/,
3733  0 /*onDayOfWeek*/,
3734  25 /*onDayOfMonth*/,
3735  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3736  0 /*atTimeCode (0/15)*/,
3737  60 /*deltaMinutes*/,
3738  0 /*letterIndex ("")*/,
3739  },
3740  // Rule Brazil 1987 only - Feb 14 0:00 0 -
3741  {
3742  1987 /*fromYear*/,
3743  1987 /*toYear*/,
3744  2 /*inMonth*/,
3745  0 /*onDayOfWeek*/,
3746  14 /*onDayOfMonth*/,
3747  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3748  0 /*atTimeCode (0/15)*/,
3749  0 /*deltaMinutes*/,
3750  0 /*letterIndex ("")*/,
3751  },
3752  // Rule Brazil 1987 only - Oct 25 0:00 1:00 -
3753  {
3754  1987 /*fromYear*/,
3755  1987 /*toYear*/,
3756  10 /*inMonth*/,
3757  0 /*onDayOfWeek*/,
3758  25 /*onDayOfMonth*/,
3759  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3760  0 /*atTimeCode (0/15)*/,
3761  60 /*deltaMinutes*/,
3762  0 /*letterIndex ("")*/,
3763  },
3764  // Rule Brazil 1988 only - Feb 7 0:00 0 -
3765  {
3766  1988 /*fromYear*/,
3767  1988 /*toYear*/,
3768  2 /*inMonth*/,
3769  0 /*onDayOfWeek*/,
3770  7 /*onDayOfMonth*/,
3771  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3772  0 /*atTimeCode (0/15)*/,
3773  0 /*deltaMinutes*/,
3774  0 /*letterIndex ("")*/,
3775  },
3776  // Rule Brazil 1988 only - Oct 16 0:00 1:00 -
3777  {
3778  1988 /*fromYear*/,
3779  1988 /*toYear*/,
3780  10 /*inMonth*/,
3781  0 /*onDayOfWeek*/,
3782  16 /*onDayOfMonth*/,
3783  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3784  0 /*atTimeCode (0/15)*/,
3785  60 /*deltaMinutes*/,
3786  0 /*letterIndex ("")*/,
3787  },
3788  // Rule Brazil 1989 only - Jan 29 0:00 0 -
3789  {
3790  1989 /*fromYear*/,
3791  1989 /*toYear*/,
3792  1 /*inMonth*/,
3793  0 /*onDayOfWeek*/,
3794  29 /*onDayOfMonth*/,
3795  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3796  0 /*atTimeCode (0/15)*/,
3797  0 /*deltaMinutes*/,
3798  0 /*letterIndex ("")*/,
3799  },
3800  // Rule Brazil 1989 only - Oct 15 0:00 1:00 -
3801  {
3802  1989 /*fromYear*/,
3803  1989 /*toYear*/,
3804  10 /*inMonth*/,
3805  0 /*onDayOfWeek*/,
3806  15 /*onDayOfMonth*/,
3807  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3808  0 /*atTimeCode (0/15)*/,
3809  60 /*deltaMinutes*/,
3810  0 /*letterIndex ("")*/,
3811  },
3812  // Rule Brazil 1990 only - Feb 11 0:00 0 -
3813  {
3814  1990 /*fromYear*/,
3815  1990 /*toYear*/,
3816  2 /*inMonth*/,
3817  0 /*onDayOfWeek*/,
3818  11 /*onDayOfMonth*/,
3819  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3820  0 /*atTimeCode (0/15)*/,
3821  0 /*deltaMinutes*/,
3822  0 /*letterIndex ("")*/,
3823  },
3824  // Rule Brazil 1990 only - Oct 21 0:00 1:00 -
3825  {
3826  1990 /*fromYear*/,
3827  1990 /*toYear*/,
3828  10 /*inMonth*/,
3829  0 /*onDayOfWeek*/,
3830  21 /*onDayOfMonth*/,
3831  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3832  0 /*atTimeCode (0/15)*/,
3833  60 /*deltaMinutes*/,
3834  0 /*letterIndex ("")*/,
3835  },
3836  // Rule Brazil 1991 only - Feb 17 0:00 0 -
3837  {
3838  1991 /*fromYear*/,
3839  1991 /*toYear*/,
3840  2 /*inMonth*/,
3841  0 /*onDayOfWeek*/,
3842  17 /*onDayOfMonth*/,
3843  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3844  0 /*atTimeCode (0/15)*/,
3845  0 /*deltaMinutes*/,
3846  0 /*letterIndex ("")*/,
3847  },
3848  // Rule Brazil 1991 only - Oct 20 0:00 1:00 -
3849  {
3850  1991 /*fromYear*/,
3851  1991 /*toYear*/,
3852  10 /*inMonth*/,
3853  0 /*onDayOfWeek*/,
3854  20 /*onDayOfMonth*/,
3855  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3856  0 /*atTimeCode (0/15)*/,
3857  60 /*deltaMinutes*/,
3858  0 /*letterIndex ("")*/,
3859  },
3860  // Rule Brazil 1992 only - Feb 9 0:00 0 -
3861  {
3862  1992 /*fromYear*/,
3863  1992 /*toYear*/,
3864  2 /*inMonth*/,
3865  0 /*onDayOfWeek*/,
3866  9 /*onDayOfMonth*/,
3867  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3868  0 /*atTimeCode (0/15)*/,
3869  0 /*deltaMinutes*/,
3870  0 /*letterIndex ("")*/,
3871  },
3872  // Rule Brazil 1992 only - Oct 25 0:00 1:00 -
3873  {
3874  1992 /*fromYear*/,
3875  1992 /*toYear*/,
3876  10 /*inMonth*/,
3877  0 /*onDayOfWeek*/,
3878  25 /*onDayOfMonth*/,
3879  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3880  0 /*atTimeCode (0/15)*/,
3881  60 /*deltaMinutes*/,
3882  0 /*letterIndex ("")*/,
3883  },
3884  // Rule Brazil 1993 only - Jan 31 0:00 0 -
3885  {
3886  1993 /*fromYear*/,
3887  1993 /*toYear*/,
3888  1 /*inMonth*/,
3889  0 /*onDayOfWeek*/,
3890  31 /*onDayOfMonth*/,
3891  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3892  0 /*atTimeCode (0/15)*/,
3893  0 /*deltaMinutes*/,
3894  0 /*letterIndex ("")*/,
3895  },
3896  // Rule Brazil 1993 1995 - Oct Sun>=11 0:00 1:00 -
3897  {
3898  1993 /*fromYear*/,
3899  1995 /*toYear*/,
3900  10 /*inMonth*/,
3901  7 /*onDayOfWeek*/,
3902  11 /*onDayOfMonth*/,
3903  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3904  0 /*atTimeCode (0/15)*/,
3905  60 /*deltaMinutes*/,
3906  0 /*letterIndex ("")*/,
3907  },
3908  // Rule Brazil 1994 1995 - Feb Sun>=15 0:00 0 -
3909  {
3910  1994 /*fromYear*/,
3911  1995 /*toYear*/,
3912  2 /*inMonth*/,
3913  7 /*onDayOfWeek*/,
3914  15 /*onDayOfMonth*/,
3915  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3916  0 /*atTimeCode (0/15)*/,
3917  0 /*deltaMinutes*/,
3918  0 /*letterIndex ("")*/,
3919  },
3920  // Rule Brazil 1996 only - Feb 11 0:00 0 -
3921  {
3922  1996 /*fromYear*/,
3923  1996 /*toYear*/,
3924  2 /*inMonth*/,
3925  0 /*onDayOfWeek*/,
3926  11 /*onDayOfMonth*/,
3927  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3928  0 /*atTimeCode (0/15)*/,
3929  0 /*deltaMinutes*/,
3930  0 /*letterIndex ("")*/,
3931  },
3932  // Rule Brazil 1996 only - Oct 6 0:00 1:00 -
3933  {
3934  1996 /*fromYear*/,
3935  1996 /*toYear*/,
3936  10 /*inMonth*/,
3937  0 /*onDayOfWeek*/,
3938  6 /*onDayOfMonth*/,
3939  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3940  0 /*atTimeCode (0/15)*/,
3941  60 /*deltaMinutes*/,
3942  0 /*letterIndex ("")*/,
3943  },
3944  // Rule Brazil 1997 only - Feb 16 0:00 0 -
3945  {
3946  1997 /*fromYear*/,
3947  1997 /*toYear*/,
3948  2 /*inMonth*/,
3949  0 /*onDayOfWeek*/,
3950  16 /*onDayOfMonth*/,
3951  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3952  0 /*atTimeCode (0/15)*/,
3953  0 /*deltaMinutes*/,
3954  0 /*letterIndex ("")*/,
3955  },
3956  // Rule Brazil 1997 only - Oct 6 0:00 1:00 -
3957  {
3958  1997 /*fromYear*/,
3959  1997 /*toYear*/,
3960  10 /*inMonth*/,
3961  0 /*onDayOfWeek*/,
3962  6 /*onDayOfMonth*/,
3963  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3964  0 /*atTimeCode (0/15)*/,
3965  60 /*deltaMinutes*/,
3966  0 /*letterIndex ("")*/,
3967  },
3968  // Rule Brazil 1998 only - Mar 1 0:00 0 -
3969  {
3970  1998 /*fromYear*/,
3971  1998 /*toYear*/,
3972  3 /*inMonth*/,
3973  0 /*onDayOfWeek*/,
3974  1 /*onDayOfMonth*/,
3975  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3976  0 /*atTimeCode (0/15)*/,
3977  0 /*deltaMinutes*/,
3978  0 /*letterIndex ("")*/,
3979  },
3980  // Rule Brazil 1998 only - Oct 11 0:00 1:00 -
3981  {
3982  1998 /*fromYear*/,
3983  1998 /*toYear*/,
3984  10 /*inMonth*/,
3985  0 /*onDayOfWeek*/,
3986  11 /*onDayOfMonth*/,
3987  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
3988  0 /*atTimeCode (0/15)*/,
3989  60 /*deltaMinutes*/,
3990  0 /*letterIndex ("")*/,
3991  },
3992  // Rule Brazil 1999 only - Feb 21 0:00 0 -
3993  {
3994  1999 /*fromYear*/,
3995  1999 /*toYear*/,
3996  2 /*inMonth*/,
3997  0 /*onDayOfWeek*/,
3998  21 /*onDayOfMonth*/,
3999  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4000  0 /*atTimeCode (0/15)*/,
4001  0 /*deltaMinutes*/,
4002  0 /*letterIndex ("")*/,
4003  },
4004  // Rule Brazil 1999 only - Oct 3 0:00 1:00 -
4005  {
4006  1999 /*fromYear*/,
4007  1999 /*toYear*/,
4008  10 /*inMonth*/,
4009  0 /*onDayOfWeek*/,
4010  3 /*onDayOfMonth*/,
4011  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4012  0 /*atTimeCode (0/15)*/,
4013  60 /*deltaMinutes*/,
4014  0 /*letterIndex ("")*/,
4015  },
4016  // Rule Brazil 2000 only - Feb 27 0:00 0 -
4017  {
4018  2000 /*fromYear*/,
4019  2000 /*toYear*/,
4020  2 /*inMonth*/,
4021  0 /*onDayOfWeek*/,
4022  27 /*onDayOfMonth*/,
4023  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4024  0 /*atTimeCode (0/15)*/,
4025  0 /*deltaMinutes*/,
4026  0 /*letterIndex ("")*/,
4027  },
4028  // Rule Brazil 2000 2001 - Oct Sun>=8 0:00 1:00 -
4029  {
4030  2000 /*fromYear*/,
4031  2001 /*toYear*/,
4032  10 /*inMonth*/,
4033  7 /*onDayOfWeek*/,
4034  8 /*onDayOfMonth*/,
4035  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4036  0 /*atTimeCode (0/15)*/,
4037  60 /*deltaMinutes*/,
4038  0 /*letterIndex ("")*/,
4039  },
4040  // Rule Brazil 2001 2006 - Feb Sun>=15 0:00 0 -
4041  {
4042  2001 /*fromYear*/,
4043  2006 /*toYear*/,
4044  2 /*inMonth*/,
4045  7 /*onDayOfWeek*/,
4046  15 /*onDayOfMonth*/,
4047  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4048  0 /*atTimeCode (0/15)*/,
4049  0 /*deltaMinutes*/,
4050  0 /*letterIndex ("")*/,
4051  },
4052  // Rule Brazil 2002 only - Nov 3 0:00 1:00 -
4053  {
4054  2002 /*fromYear*/,
4055  2002 /*toYear*/,
4056  11 /*inMonth*/,
4057  0 /*onDayOfWeek*/,
4058  3 /*onDayOfMonth*/,
4059  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4060  0 /*atTimeCode (0/15)*/,
4061  60 /*deltaMinutes*/,
4062  0 /*letterIndex ("")*/,
4063  },
4064  // Rule Brazil 2003 only - Oct 19 0:00 1:00 -
4065  {
4066  2003 /*fromYear*/,
4067  2003 /*toYear*/,
4068  10 /*inMonth*/,
4069  0 /*onDayOfWeek*/,
4070  19 /*onDayOfMonth*/,
4071  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4072  0 /*atTimeCode (0/15)*/,
4073  60 /*deltaMinutes*/,
4074  0 /*letterIndex ("")*/,
4075  },
4076  // Rule Brazil 2004 only - Nov 2 0:00 1:00 -
4077  {
4078  2004 /*fromYear*/,
4079  2004 /*toYear*/,
4080  11 /*inMonth*/,
4081  0 /*onDayOfWeek*/,
4082  2 /*onDayOfMonth*/,
4083  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4084  0 /*atTimeCode (0/15)*/,
4085  60 /*deltaMinutes*/,
4086  0 /*letterIndex ("")*/,
4087  },
4088  // Rule Brazil 2005 only - Oct 16 0:00 1:00 -
4089  {
4090  2005 /*fromYear*/,
4091  2005 /*toYear*/,
4092  10 /*inMonth*/,
4093  0 /*onDayOfWeek*/,
4094  16 /*onDayOfMonth*/,
4095  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4096  0 /*atTimeCode (0/15)*/,
4097  60 /*deltaMinutes*/,
4098  0 /*letterIndex ("")*/,
4099  },
4100  // Rule Brazil 2006 only - Nov 5 0:00 1:00 -
4101  {
4102  2006 /*fromYear*/,
4103  2006 /*toYear*/,
4104  11 /*inMonth*/,
4105  0 /*onDayOfWeek*/,
4106  5 /*onDayOfMonth*/,
4107  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4108  0 /*atTimeCode (0/15)*/,
4109  60 /*deltaMinutes*/,
4110  0 /*letterIndex ("")*/,
4111  },
4112  // Rule Brazil 2007 only - Feb 25 0:00 0 -
4113  {
4114  2007 /*fromYear*/,
4115  2007 /*toYear*/,
4116  2 /*inMonth*/,
4117  0 /*onDayOfWeek*/,
4118  25 /*onDayOfMonth*/,
4119  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4120  0 /*atTimeCode (0/15)*/,
4121  0 /*deltaMinutes*/,
4122  0 /*letterIndex ("")*/,
4123  },
4124  // Rule Brazil 2007 only - Oct Sun>=8 0:00 1:00 -
4125  {
4126  2007 /*fromYear*/,
4127  2007 /*toYear*/,
4128  10 /*inMonth*/,
4129  7 /*onDayOfWeek*/,
4130  8 /*onDayOfMonth*/,
4131  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4132  0 /*atTimeCode (0/15)*/,
4133  60 /*deltaMinutes*/,
4134  0 /*letterIndex ("")*/,
4135  },
4136  // Rule Brazil 2008 2017 - Oct Sun>=15 0:00 1:00 -
4137  {
4138  2008 /*fromYear*/,
4139  2017 /*toYear*/,
4140  10 /*inMonth*/,
4141  7 /*onDayOfWeek*/,
4142  15 /*onDayOfMonth*/,
4143  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4144  0 /*atTimeCode (0/15)*/,
4145  60 /*deltaMinutes*/,
4146  0 /*letterIndex ("")*/,
4147  },
4148  // Rule Brazil 2008 2011 - Feb Sun>=15 0:00 0 -
4149  {
4150  2008 /*fromYear*/,
4151  2011 /*toYear*/,
4152  2 /*inMonth*/,
4153  7 /*onDayOfWeek*/,
4154  15 /*onDayOfMonth*/,
4155  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4156  0 /*atTimeCode (0/15)*/,
4157  0 /*deltaMinutes*/,
4158  0 /*letterIndex ("")*/,
4159  },
4160  // Rule Brazil 2012 only - Feb Sun>=22 0:00 0 -
4161  {
4162  2012 /*fromYear*/,
4163  2012 /*toYear*/,
4164  2 /*inMonth*/,
4165  7 /*onDayOfWeek*/,
4166  22 /*onDayOfMonth*/,
4167  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4168  0 /*atTimeCode (0/15)*/,
4169  0 /*deltaMinutes*/,
4170  0 /*letterIndex ("")*/,
4171  },
4172  // Rule Brazil 2013 2014 - Feb Sun>=15 0:00 0 -
4173  {
4174  2013 /*fromYear*/,
4175  2014 /*toYear*/,
4176  2 /*inMonth*/,
4177  7 /*onDayOfWeek*/,
4178  15 /*onDayOfMonth*/,
4179  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4180  0 /*atTimeCode (0/15)*/,
4181  0 /*deltaMinutes*/,
4182  0 /*letterIndex ("")*/,
4183  },
4184  // Rule Brazil 2015 only - Feb Sun>=22 0:00 0 -
4185  {
4186  2015 /*fromYear*/,
4187  2015 /*toYear*/,
4188  2 /*inMonth*/,
4189  7 /*onDayOfWeek*/,
4190  22 /*onDayOfMonth*/,
4191  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4192  0 /*atTimeCode (0/15)*/,
4193  0 /*deltaMinutes*/,
4194  0 /*letterIndex ("")*/,
4195  },
4196  // Rule Brazil 2016 2019 - Feb Sun>=15 0:00 0 -
4197  {
4198  2016 /*fromYear*/,
4199  2019 /*toYear*/,
4200  2 /*inMonth*/,
4201  7 /*onDayOfWeek*/,
4202  15 /*onDayOfMonth*/,
4203  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4204  0 /*atTimeCode (0/15)*/,
4205  0 /*deltaMinutes*/,
4206  0 /*letterIndex ("")*/,
4207  },
4208  // Rule Brazil 2018 only - Nov Sun>=1 0:00 1:00 -
4209  {
4210  2018 /*fromYear*/,
4211  2018 /*toYear*/,
4212  11 /*inMonth*/,
4213  7 /*onDayOfWeek*/,
4214  1 /*onDayOfMonth*/,
4215  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4216  0 /*atTimeCode (0/15)*/,
4217  60 /*deltaMinutes*/,
4218  0 /*letterIndex ("")*/,
4219  },
4220 
4221 };
4222 
4223 const complete::ZonePolicy kZonePolicyBrazil ACE_TIME_PROGMEM = {
4224  kZoneRulesBrazil /*rules*/,
4225  58 /*numRules*/,
4226 };
4227 
4228 //---------------------------------------------------------------------------
4229 // Policy name: Bulg
4230 // Rules: 6
4231 //---------------------------------------------------------------------------
4232 
4233 static const complete::ZoneRule kZoneRulesBulg[] ACE_TIME_PROGMEM = {
4234  // Anchor: Rule Bulg 1979 only - Oct 1 1:00 0 -
4235  {
4236  -32767 /*fromYear*/,
4237  -32767 /*toYear*/,
4238  1 /*inMonth*/,
4239  0 /*onDayOfWeek*/,
4240  1 /*onDayOfMonth*/,
4241  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4242  0 /*atTimeCode (0/15)*/,
4243  0 /*deltaMinutes*/,
4244  0 /*letterIndex ("")*/,
4245  },
4246  // Rule Bulg 1979 only - Mar 31 23:00 1:00 S
4247  {
4248  1979 /*fromYear*/,
4249  1979 /*toYear*/,
4250  3 /*inMonth*/,
4251  0 /*onDayOfWeek*/,
4252  31 /*onDayOfMonth*/,
4253  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4254  5520 /*atTimeCode (82800/15)*/,
4255  60 /*deltaMinutes*/,
4256  25 /*letterIndex ("S")*/,
4257  },
4258  // Rule Bulg 1979 only - Oct 1 1:00 0 -
4259  {
4260  1979 /*fromYear*/,
4261  1979 /*toYear*/,
4262  10 /*inMonth*/,
4263  0 /*onDayOfWeek*/,
4264  1 /*onDayOfMonth*/,
4265  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4266  240 /*atTimeCode (3600/15)*/,
4267  0 /*deltaMinutes*/,
4268  0 /*letterIndex ("")*/,
4269  },
4270  // Rule Bulg 1980 1982 - Apr Sat>=1 23:00 1:00 S
4271  {
4272  1980 /*fromYear*/,
4273  1982 /*toYear*/,
4274  4 /*inMonth*/,
4275  6 /*onDayOfWeek*/,
4276  1 /*onDayOfMonth*/,
4277  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4278  5520 /*atTimeCode (82800/15)*/,
4279  60 /*deltaMinutes*/,
4280  25 /*letterIndex ("S")*/,
4281  },
4282  // Rule Bulg 1980 only - Sep 29 1:00 0 -
4283  {
4284  1980 /*fromYear*/,
4285  1980 /*toYear*/,
4286  9 /*inMonth*/,
4287  0 /*onDayOfWeek*/,
4288  29 /*onDayOfMonth*/,
4289  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4290  240 /*atTimeCode (3600/15)*/,
4291  0 /*deltaMinutes*/,
4292  0 /*letterIndex ("")*/,
4293  },
4294  // Rule Bulg 1981 only - Sep 27 2:00 0 -
4295  {
4296  1981 /*fromYear*/,
4297  1981 /*toYear*/,
4298  9 /*inMonth*/,
4299  0 /*onDayOfWeek*/,
4300  27 /*onDayOfMonth*/,
4301  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4302  480 /*atTimeCode (7200/15)*/,
4303  0 /*deltaMinutes*/,
4304  0 /*letterIndex ("")*/,
4305  },
4306 
4307 };
4308 
4309 const complete::ZonePolicy kZonePolicyBulg ACE_TIME_PROGMEM = {
4310  kZoneRulesBulg /*rules*/,
4311  6 /*numRules*/,
4312 };
4313 
4314 //---------------------------------------------------------------------------
4315 // Policy name: C-Eur
4316 // Rules: 18
4317 //---------------------------------------------------------------------------
4318 
4319 static const complete::ZoneRule kZoneRulesC_Eur[] ACE_TIME_PROGMEM = {
4320  // Anchor: Rule C-Eur 1916 only - Oct 1 1:00 0 -
4321  {
4322  -32767 /*fromYear*/,
4323  -32767 /*toYear*/,
4324  1 /*inMonth*/,
4325  0 /*onDayOfWeek*/,
4326  1 /*onDayOfMonth*/,
4327  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4328  0 /*atTimeCode (0/15)*/,
4329  0 /*deltaMinutes*/,
4330  0 /*letterIndex ("")*/,
4331  },
4332  // Rule C-Eur 1916 only - Apr 30 23:00 1:00 S
4333  {
4334  1916 /*fromYear*/,
4335  1916 /*toYear*/,
4336  4 /*inMonth*/,
4337  0 /*onDayOfWeek*/,
4338  30 /*onDayOfMonth*/,
4339  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4340  5520 /*atTimeCode (82800/15)*/,
4341  60 /*deltaMinutes*/,
4342  25 /*letterIndex ("S")*/,
4343  },
4344  // Rule C-Eur 1916 only - Oct 1 1:00 0 -
4345  {
4346  1916 /*fromYear*/,
4347  1916 /*toYear*/,
4348  10 /*inMonth*/,
4349  0 /*onDayOfWeek*/,
4350  1 /*onDayOfMonth*/,
4351  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4352  240 /*atTimeCode (3600/15)*/,
4353  0 /*deltaMinutes*/,
4354  0 /*letterIndex ("")*/,
4355  },
4356  // Rule C-Eur 1917 1918 - Apr Mon>=15 2:00s 1:00 S
4357  {
4358  1917 /*fromYear*/,
4359  1918 /*toYear*/,
4360  4 /*inMonth*/,
4361  1 /*onDayOfWeek*/,
4362  15 /*onDayOfMonth*/,
4363  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
4364  480 /*atTimeCode (7200/15)*/,
4365  60 /*deltaMinutes*/,
4366  25 /*letterIndex ("S")*/,
4367  },
4368  // Rule C-Eur 1917 1918 - Sep Mon>=15 2:00s 0 -
4369  {
4370  1917 /*fromYear*/,
4371  1918 /*toYear*/,
4372  9 /*inMonth*/,
4373  1 /*onDayOfWeek*/,
4374  15 /*onDayOfMonth*/,
4375  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
4376  480 /*atTimeCode (7200/15)*/,
4377  0 /*deltaMinutes*/,
4378  0 /*letterIndex ("")*/,
4379  },
4380  // Rule C-Eur 1940 only - Apr 1 2:00s 1:00 S
4381  {
4382  1940 /*fromYear*/,
4383  1940 /*toYear*/,
4384  4 /*inMonth*/,
4385  0 /*onDayOfWeek*/,
4386  1 /*onDayOfMonth*/,
4387  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
4388  480 /*atTimeCode (7200/15)*/,
4389  60 /*deltaMinutes*/,
4390  25 /*letterIndex ("S")*/,
4391  },
4392  // Rule C-Eur 1942 only - Nov 2 2:00s 0 -
4393  {
4394  1942 /*fromYear*/,
4395  1942 /*toYear*/,
4396  11 /*inMonth*/,
4397  0 /*onDayOfWeek*/,
4398  2 /*onDayOfMonth*/,
4399  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
4400  480 /*atTimeCode (7200/15)*/,
4401  0 /*deltaMinutes*/,
4402  0 /*letterIndex ("")*/,
4403  },
4404  // Rule C-Eur 1943 only - Mar 29 2:00s 1:00 S
4405  {
4406  1943 /*fromYear*/,
4407  1943 /*toYear*/,
4408  3 /*inMonth*/,
4409  0 /*onDayOfWeek*/,
4410  29 /*onDayOfMonth*/,
4411  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
4412  480 /*atTimeCode (7200/15)*/,
4413  60 /*deltaMinutes*/,
4414  25 /*letterIndex ("S")*/,
4415  },
4416  // Rule C-Eur 1943 only - Oct 4 2:00s 0 -
4417  {
4418  1943 /*fromYear*/,
4419  1943 /*toYear*/,
4420  10 /*inMonth*/,
4421  0 /*onDayOfWeek*/,
4422  4 /*onDayOfMonth*/,
4423  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
4424  480 /*atTimeCode (7200/15)*/,
4425  0 /*deltaMinutes*/,
4426  0 /*letterIndex ("")*/,
4427  },
4428  // Rule C-Eur 1944 1945 - Apr Mon>=1 2:00s 1:00 S
4429  {
4430  1944 /*fromYear*/,
4431  1945 /*toYear*/,
4432  4 /*inMonth*/,
4433  1 /*onDayOfWeek*/,
4434  1 /*onDayOfMonth*/,
4435  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
4436  480 /*atTimeCode (7200/15)*/,
4437  60 /*deltaMinutes*/,
4438  25 /*letterIndex ("S")*/,
4439  },
4440  // Rule C-Eur 1944 only - Oct 2 2:00s 0 -
4441  {
4442  1944 /*fromYear*/,
4443  1944 /*toYear*/,
4444  10 /*inMonth*/,
4445  0 /*onDayOfWeek*/,
4446  2 /*onDayOfMonth*/,
4447  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
4448  480 /*atTimeCode (7200/15)*/,
4449  0 /*deltaMinutes*/,
4450  0 /*letterIndex ("")*/,
4451  },
4452  // Rule C-Eur 1945 only - Sep 16 2:00s 0 -
4453  {
4454  1945 /*fromYear*/,
4455  1945 /*toYear*/,
4456  9 /*inMonth*/,
4457  0 /*onDayOfWeek*/,
4458  16 /*onDayOfMonth*/,
4459  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
4460  480 /*atTimeCode (7200/15)*/,
4461  0 /*deltaMinutes*/,
4462  0 /*letterIndex ("")*/,
4463  },
4464  // Rule C-Eur 1977 1980 - Apr Sun>=1 2:00s 1:00 S
4465  {
4466  1977 /*fromYear*/,
4467  1980 /*toYear*/,
4468  4 /*inMonth*/,
4469  7 /*onDayOfWeek*/,
4470  1 /*onDayOfMonth*/,
4471  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
4472  480 /*atTimeCode (7200/15)*/,
4473  60 /*deltaMinutes*/,
4474  25 /*letterIndex ("S")*/,
4475  },
4476  // Rule C-Eur 1977 only - Sep lastSun 2:00s 0 -
4477  {
4478  1977 /*fromYear*/,
4479  1977 /*toYear*/,
4480  9 /*inMonth*/,
4481  7 /*onDayOfWeek*/,
4482  0 /*onDayOfMonth*/,
4483  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
4484  480 /*atTimeCode (7200/15)*/,
4485  0 /*deltaMinutes*/,
4486  0 /*letterIndex ("")*/,
4487  },
4488  // Rule C-Eur 1978 only - Oct 1 2:00s 0 -
4489  {
4490  1978 /*fromYear*/,
4491  1978 /*toYear*/,
4492  10 /*inMonth*/,
4493  0 /*onDayOfWeek*/,
4494  1 /*onDayOfMonth*/,
4495  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
4496  480 /*atTimeCode (7200/15)*/,
4497  0 /*deltaMinutes*/,
4498  0 /*letterIndex ("")*/,
4499  },
4500  // Rule C-Eur 1979 1995 - Sep lastSun 2:00s 0 -
4501  {
4502  1979 /*fromYear*/,
4503  1995 /*toYear*/,
4504  9 /*inMonth*/,
4505  7 /*onDayOfWeek*/,
4506  0 /*onDayOfMonth*/,
4507  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
4508  480 /*atTimeCode (7200/15)*/,
4509  0 /*deltaMinutes*/,
4510  0 /*letterIndex ("")*/,
4511  },
4512  // Rule C-Eur 1981 max - Mar lastSun 2:00s 1:00 S
4513  {
4514  1981 /*fromYear*/,
4515  32766 /*toYear*/,
4516  3 /*inMonth*/,
4517  7 /*onDayOfWeek*/,
4518  0 /*onDayOfMonth*/,
4519  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
4520  480 /*atTimeCode (7200/15)*/,
4521  60 /*deltaMinutes*/,
4522  25 /*letterIndex ("S")*/,
4523  },
4524  // Rule C-Eur 1996 max - Oct lastSun 2:00s 0 -
4525  {
4526  1996 /*fromYear*/,
4527  32766 /*toYear*/,
4528  10 /*inMonth*/,
4529  7 /*onDayOfWeek*/,
4530  0 /*onDayOfMonth*/,
4531  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
4532  480 /*atTimeCode (7200/15)*/,
4533  0 /*deltaMinutes*/,
4534  0 /*letterIndex ("")*/,
4535  },
4536 
4537 };
4538 
4539 const complete::ZonePolicy kZonePolicyC_Eur ACE_TIME_PROGMEM = {
4540  kZoneRulesC_Eur /*rules*/,
4541  18 /*numRules*/,
4542 };
4543 
4544 //---------------------------------------------------------------------------
4545 // Policy name: CA
4546 // Rules: 6
4547 //---------------------------------------------------------------------------
4548 
4549 static const complete::ZoneRule kZoneRulesCA[] ACE_TIME_PROGMEM = {
4550  // Anchor: Rule CA 1949 only - Jan 1 2:00 0 S
4551  {
4552  -32767 /*fromYear*/,
4553  -32767 /*toYear*/,
4554  1 /*inMonth*/,
4555  0 /*onDayOfWeek*/,
4556  1 /*onDayOfMonth*/,
4557  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4558  0 /*atTimeCode (0/15)*/,
4559  0 /*deltaMinutes*/,
4560  25 /*letterIndex ("S")*/,
4561  },
4562  // Rule CA 1948 only - Mar 14 2:01 1:00 D
4563  {
4564  1948 /*fromYear*/,
4565  1948 /*toYear*/,
4566  3 /*inMonth*/,
4567  0 /*onDayOfWeek*/,
4568  14 /*onDayOfMonth*/,
4569  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4570  484 /*atTimeCode (7260/15)*/,
4571  60 /*deltaMinutes*/,
4572  13 /*letterIndex ("D")*/,
4573  },
4574  // Rule CA 1949 only - Jan 1 2:00 0 S
4575  {
4576  1949 /*fromYear*/,
4577  1949 /*toYear*/,
4578  1 /*inMonth*/,
4579  0 /*onDayOfWeek*/,
4580  1 /*onDayOfMonth*/,
4581  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4582  480 /*atTimeCode (7200/15)*/,
4583  0 /*deltaMinutes*/,
4584  25 /*letterIndex ("S")*/,
4585  },
4586  // Rule CA 1950 1966 - Apr lastSun 1:00 1:00 D
4587  {
4588  1950 /*fromYear*/,
4589  1966 /*toYear*/,
4590  4 /*inMonth*/,
4591  7 /*onDayOfWeek*/,
4592  0 /*onDayOfMonth*/,
4593  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4594  240 /*atTimeCode (3600/15)*/,
4595  60 /*deltaMinutes*/,
4596  13 /*letterIndex ("D")*/,
4597  },
4598  // Rule CA 1950 1961 - Sep lastSun 2:00 0 S
4599  {
4600  1950 /*fromYear*/,
4601  1961 /*toYear*/,
4602  9 /*inMonth*/,
4603  7 /*onDayOfWeek*/,
4604  0 /*onDayOfMonth*/,
4605  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4606  480 /*atTimeCode (7200/15)*/,
4607  0 /*deltaMinutes*/,
4608  25 /*letterIndex ("S")*/,
4609  },
4610  // Rule CA 1962 1966 - Oct lastSun 2:00 0 S
4611  {
4612  1962 /*fromYear*/,
4613  1966 /*toYear*/,
4614  10 /*inMonth*/,
4615  7 /*onDayOfWeek*/,
4616  0 /*onDayOfMonth*/,
4617  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4618  480 /*atTimeCode (7200/15)*/,
4619  0 /*deltaMinutes*/,
4620  25 /*letterIndex ("S")*/,
4621  },
4622 
4623 };
4624 
4625 const complete::ZonePolicy kZonePolicyCA ACE_TIME_PROGMEM = {
4626  kZoneRulesCA /*rules*/,
4627  6 /*numRules*/,
4628 };
4629 
4630 //---------------------------------------------------------------------------
4631 // Policy name: CO
4632 // Rules: 3
4633 //---------------------------------------------------------------------------
4634 
4635 static const complete::ZoneRule kZoneRulesCO[] ACE_TIME_PROGMEM = {
4636  // Anchor: Rule CO 1993 only - Feb 6 24:00 0 -
4637  {
4638  -32767 /*fromYear*/,
4639  -32767 /*toYear*/,
4640  1 /*inMonth*/,
4641  0 /*onDayOfWeek*/,
4642  1 /*onDayOfMonth*/,
4643  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4644  0 /*atTimeCode (0/15)*/,
4645  0 /*deltaMinutes*/,
4646  0 /*letterIndex ("")*/,
4647  },
4648  // Rule CO 1992 only - May 3 0:00 1:00 -
4649  {
4650  1992 /*fromYear*/,
4651  1992 /*toYear*/,
4652  5 /*inMonth*/,
4653  0 /*onDayOfWeek*/,
4654  3 /*onDayOfMonth*/,
4655  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4656  0 /*atTimeCode (0/15)*/,
4657  60 /*deltaMinutes*/,
4658  0 /*letterIndex ("")*/,
4659  },
4660  // Rule CO 1993 only - Feb 6 24:00 0 -
4661  {
4662  1993 /*fromYear*/,
4663  1993 /*toYear*/,
4664  2 /*inMonth*/,
4665  0 /*onDayOfWeek*/,
4666  6 /*onDayOfMonth*/,
4667  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4668  5760 /*atTimeCode (86400/15)*/,
4669  0 /*deltaMinutes*/,
4670  0 /*letterIndex ("")*/,
4671  },
4672 
4673 };
4674 
4675 const complete::ZonePolicy kZonePolicyCO ACE_TIME_PROGMEM = {
4676  kZoneRulesCO /*rules*/,
4677  3 /*numRules*/,
4678 };
4679 
4680 //---------------------------------------------------------------------------
4681 // Policy name: CR
4682 // Rules: 6
4683 //---------------------------------------------------------------------------
4684 
4685 static const complete::ZoneRule kZoneRulesCR[] ACE_TIME_PROGMEM = {
4686  // Anchor: Rule CR 1979 1980 - Jun Sun>=1 0:00 0 S
4687  {
4688  -32767 /*fromYear*/,
4689  -32767 /*toYear*/,
4690  1 /*inMonth*/,
4691  0 /*onDayOfWeek*/,
4692  1 /*onDayOfMonth*/,
4693  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4694  0 /*atTimeCode (0/15)*/,
4695  0 /*deltaMinutes*/,
4696  25 /*letterIndex ("S")*/,
4697  },
4698  // Rule CR 1979 1980 - Feb lastSun 0:00 1:00 D
4699  {
4700  1979 /*fromYear*/,
4701  1980 /*toYear*/,
4702  2 /*inMonth*/,
4703  7 /*onDayOfWeek*/,
4704  0 /*onDayOfMonth*/,
4705  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4706  0 /*atTimeCode (0/15)*/,
4707  60 /*deltaMinutes*/,
4708  13 /*letterIndex ("D")*/,
4709  },
4710  // Rule CR 1979 1980 - Jun Sun>=1 0:00 0 S
4711  {
4712  1979 /*fromYear*/,
4713  1980 /*toYear*/,
4714  6 /*inMonth*/,
4715  7 /*onDayOfWeek*/,
4716  1 /*onDayOfMonth*/,
4717  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4718  0 /*atTimeCode (0/15)*/,
4719  0 /*deltaMinutes*/,
4720  25 /*letterIndex ("S")*/,
4721  },
4722  // Rule CR 1991 1992 - Jan Sat>=15 0:00 1:00 D
4723  {
4724  1991 /*fromYear*/,
4725  1992 /*toYear*/,
4726  1 /*inMonth*/,
4727  6 /*onDayOfWeek*/,
4728  15 /*onDayOfMonth*/,
4729  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4730  0 /*atTimeCode (0/15)*/,
4731  60 /*deltaMinutes*/,
4732  13 /*letterIndex ("D")*/,
4733  },
4734  // Rule CR 1991 only - Jul 1 0:00 0 S
4735  {
4736  1991 /*fromYear*/,
4737  1991 /*toYear*/,
4738  7 /*inMonth*/,
4739  0 /*onDayOfWeek*/,
4740  1 /*onDayOfMonth*/,
4741  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4742  0 /*atTimeCode (0/15)*/,
4743  0 /*deltaMinutes*/,
4744  25 /*letterIndex ("S")*/,
4745  },
4746  // Rule CR 1992 only - Mar 15 0:00 0 S
4747  {
4748  1992 /*fromYear*/,
4749  1992 /*toYear*/,
4750  3 /*inMonth*/,
4751  0 /*onDayOfWeek*/,
4752  15 /*onDayOfMonth*/,
4753  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4754  0 /*atTimeCode (0/15)*/,
4755  0 /*deltaMinutes*/,
4756  25 /*letterIndex ("S")*/,
4757  },
4758 
4759 };
4760 
4761 const complete::ZonePolicy kZonePolicyCR ACE_TIME_PROGMEM = {
4762  kZoneRulesCR /*rules*/,
4763  6 /*numRules*/,
4764 };
4765 
4766 //---------------------------------------------------------------------------
4767 // Policy name: Canada
4768 // Rules: 11
4769 //---------------------------------------------------------------------------
4770 
4771 static const complete::ZoneRule kZoneRulesCanada[] ACE_TIME_PROGMEM = {
4772  // Anchor: Rule Canada 1918 only - Oct 27 2:00 0 S
4773  {
4774  -32767 /*fromYear*/,
4775  -32767 /*toYear*/,
4776  1 /*inMonth*/,
4777  0 /*onDayOfWeek*/,
4778  1 /*onDayOfMonth*/,
4779  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4780  0 /*atTimeCode (0/15)*/,
4781  0 /*deltaMinutes*/,
4782  25 /*letterIndex ("S")*/,
4783  },
4784  // Rule Canada 1918 only - Apr 14 2:00 1:00 D
4785  {
4786  1918 /*fromYear*/,
4787  1918 /*toYear*/,
4788  4 /*inMonth*/,
4789  0 /*onDayOfWeek*/,
4790  14 /*onDayOfMonth*/,
4791  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4792  480 /*atTimeCode (7200/15)*/,
4793  60 /*deltaMinutes*/,
4794  13 /*letterIndex ("D")*/,
4795  },
4796  // Rule Canada 1918 only - Oct 27 2:00 0 S
4797  {
4798  1918 /*fromYear*/,
4799  1918 /*toYear*/,
4800  10 /*inMonth*/,
4801  0 /*onDayOfWeek*/,
4802  27 /*onDayOfMonth*/,
4803  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4804  480 /*atTimeCode (7200/15)*/,
4805  0 /*deltaMinutes*/,
4806  25 /*letterIndex ("S")*/,
4807  },
4808  // Rule Canada 1942 only - Feb 9 2:00 1:00 W
4809  {
4810  1942 /*fromYear*/,
4811  1942 /*toYear*/,
4812  2 /*inMonth*/,
4813  0 /*onDayOfWeek*/,
4814  9 /*onDayOfMonth*/,
4815  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4816  480 /*atTimeCode (7200/15)*/,
4817  60 /*deltaMinutes*/,
4818  26 /*letterIndex ("W")*/,
4819  },
4820  // Rule Canada 1945 only - Aug 14 23:00u 1:00 P
4821  {
4822  1945 /*fromYear*/,
4823  1945 /*toYear*/,
4824  8 /*inMonth*/,
4825  0 /*onDayOfWeek*/,
4826  14 /*onDayOfMonth*/,
4827  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
4828  5520 /*atTimeCode (82800/15)*/,
4829  60 /*deltaMinutes*/,
4830  24 /*letterIndex ("P")*/,
4831  },
4832  // Rule Canada 1945 only - Sep 30 2:00 0 S
4833  {
4834  1945 /*fromYear*/,
4835  1945 /*toYear*/,
4836  9 /*inMonth*/,
4837  0 /*onDayOfWeek*/,
4838  30 /*onDayOfMonth*/,
4839  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4840  480 /*atTimeCode (7200/15)*/,
4841  0 /*deltaMinutes*/,
4842  25 /*letterIndex ("S")*/,
4843  },
4844  // Rule Canada 1974 1986 - Apr lastSun 2:00 1:00 D
4845  {
4846  1974 /*fromYear*/,
4847  1986 /*toYear*/,
4848  4 /*inMonth*/,
4849  7 /*onDayOfWeek*/,
4850  0 /*onDayOfMonth*/,
4851  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4852  480 /*atTimeCode (7200/15)*/,
4853  60 /*deltaMinutes*/,
4854  13 /*letterIndex ("D")*/,
4855  },
4856  // Rule Canada 1974 2006 - Oct lastSun 2:00 0 S
4857  {
4858  1974 /*fromYear*/,
4859  2006 /*toYear*/,
4860  10 /*inMonth*/,
4861  7 /*onDayOfWeek*/,
4862  0 /*onDayOfMonth*/,
4863  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4864  480 /*atTimeCode (7200/15)*/,
4865  0 /*deltaMinutes*/,
4866  25 /*letterIndex ("S")*/,
4867  },
4868  // Rule Canada 1987 2006 - Apr Sun>=1 2:00 1:00 D
4869  {
4870  1987 /*fromYear*/,
4871  2006 /*toYear*/,
4872  4 /*inMonth*/,
4873  7 /*onDayOfWeek*/,
4874  1 /*onDayOfMonth*/,
4875  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4876  480 /*atTimeCode (7200/15)*/,
4877  60 /*deltaMinutes*/,
4878  13 /*letterIndex ("D")*/,
4879  },
4880  // Rule Canada 2007 max - Mar Sun>=8 2:00 1:00 D
4881  {
4882  2007 /*fromYear*/,
4883  32766 /*toYear*/,
4884  3 /*inMonth*/,
4885  7 /*onDayOfWeek*/,
4886  8 /*onDayOfMonth*/,
4887  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4888  480 /*atTimeCode (7200/15)*/,
4889  60 /*deltaMinutes*/,
4890  13 /*letterIndex ("D")*/,
4891  },
4892  // Rule Canada 2007 max - Nov Sun>=1 2:00 0 S
4893  {
4894  2007 /*fromYear*/,
4895  32766 /*toYear*/,
4896  11 /*inMonth*/,
4897  7 /*onDayOfWeek*/,
4898  1 /*onDayOfMonth*/,
4899  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4900  480 /*atTimeCode (7200/15)*/,
4901  0 /*deltaMinutes*/,
4902  25 /*letterIndex ("S")*/,
4903  },
4904 
4905 };
4906 
4907 const complete::ZonePolicy kZonePolicyCanada ACE_TIME_PROGMEM = {
4908  kZoneRulesCanada /*rules*/,
4909  11 /*numRules*/,
4910 };
4911 
4912 //---------------------------------------------------------------------------
4913 // Policy name: Chatham
4914 // Rules: 10
4915 //---------------------------------------------------------------------------
4916 
4917 static const complete::ZoneRule kZoneRulesChatham[] ACE_TIME_PROGMEM = {
4918  // Anchor: Rule Chatham 1975 only - Feb lastSun 2:45s 0 -
4919  {
4920  -32767 /*fromYear*/,
4921  -32767 /*toYear*/,
4922  1 /*inMonth*/,
4923  0 /*onDayOfWeek*/,
4924  1 /*onDayOfMonth*/,
4925  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
4926  0 /*atTimeCode (0/15)*/,
4927  0 /*deltaMinutes*/,
4928  0 /*letterIndex ("")*/,
4929  },
4930  // Rule Chatham 1974 only - Nov Sun>=1 2:45s 1:00 -
4931  {
4932  1974 /*fromYear*/,
4933  1974 /*toYear*/,
4934  11 /*inMonth*/,
4935  7 /*onDayOfWeek*/,
4936  1 /*onDayOfMonth*/,
4937  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
4938  660 /*atTimeCode (9900/15)*/,
4939  60 /*deltaMinutes*/,
4940  0 /*letterIndex ("")*/,
4941  },
4942  // Rule Chatham 1975 only - Feb lastSun 2:45s 0 -
4943  {
4944  1975 /*fromYear*/,
4945  1975 /*toYear*/,
4946  2 /*inMonth*/,
4947  7 /*onDayOfWeek*/,
4948  0 /*onDayOfMonth*/,
4949  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
4950  660 /*atTimeCode (9900/15)*/,
4951  0 /*deltaMinutes*/,
4952  0 /*letterIndex ("")*/,
4953  },
4954  // Rule Chatham 1975 1988 - Oct lastSun 2:45s 1:00 -
4955  {
4956  1975 /*fromYear*/,
4957  1988 /*toYear*/,
4958  10 /*inMonth*/,
4959  7 /*onDayOfWeek*/,
4960  0 /*onDayOfMonth*/,
4961  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
4962  660 /*atTimeCode (9900/15)*/,
4963  60 /*deltaMinutes*/,
4964  0 /*letterIndex ("")*/,
4965  },
4966  // Rule Chatham 1976 1989 - Mar Sun>=1 2:45s 0 -
4967  {
4968  1976 /*fromYear*/,
4969  1989 /*toYear*/,
4970  3 /*inMonth*/,
4971  7 /*onDayOfWeek*/,
4972  1 /*onDayOfMonth*/,
4973  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
4974  660 /*atTimeCode (9900/15)*/,
4975  0 /*deltaMinutes*/,
4976  0 /*letterIndex ("")*/,
4977  },
4978  // Rule Chatham 1989 only - Oct Sun>=8 2:45s 1:00 -
4979  {
4980  1989 /*fromYear*/,
4981  1989 /*toYear*/,
4982  10 /*inMonth*/,
4983  7 /*onDayOfWeek*/,
4984  8 /*onDayOfMonth*/,
4985  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
4986  660 /*atTimeCode (9900/15)*/,
4987  60 /*deltaMinutes*/,
4988  0 /*letterIndex ("")*/,
4989  },
4990  // Rule Chatham 1990 2006 - Oct Sun>=1 2:45s 1:00 -
4991  {
4992  1990 /*fromYear*/,
4993  2006 /*toYear*/,
4994  10 /*inMonth*/,
4995  7 /*onDayOfWeek*/,
4996  1 /*onDayOfMonth*/,
4997  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
4998  660 /*atTimeCode (9900/15)*/,
4999  60 /*deltaMinutes*/,
5000  0 /*letterIndex ("")*/,
5001  },
5002  // Rule Chatham 1990 2007 - Mar Sun>=15 2:45s 0 -
5003  {
5004  1990 /*fromYear*/,
5005  2007 /*toYear*/,
5006  3 /*inMonth*/,
5007  7 /*onDayOfWeek*/,
5008  15 /*onDayOfMonth*/,
5009  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
5010  660 /*atTimeCode (9900/15)*/,
5011  0 /*deltaMinutes*/,
5012  0 /*letterIndex ("")*/,
5013  },
5014  // Rule Chatham 2007 max - Sep lastSun 2:45s 1:00 -
5015  {
5016  2007 /*fromYear*/,
5017  32766 /*toYear*/,
5018  9 /*inMonth*/,
5019  7 /*onDayOfWeek*/,
5020  0 /*onDayOfMonth*/,
5021  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
5022  660 /*atTimeCode (9900/15)*/,
5023  60 /*deltaMinutes*/,
5024  0 /*letterIndex ("")*/,
5025  },
5026  // Rule Chatham 2008 max - Apr Sun>=1 2:45s 0 -
5027  {
5028  2008 /*fromYear*/,
5029  32766 /*toYear*/,
5030  4 /*inMonth*/,
5031  7 /*onDayOfWeek*/,
5032  1 /*onDayOfMonth*/,
5033  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
5034  660 /*atTimeCode (9900/15)*/,
5035  0 /*deltaMinutes*/,
5036  0 /*letterIndex ("")*/,
5037  },
5038 
5039 };
5040 
5041 const complete::ZonePolicy kZonePolicyChatham ACE_TIME_PROGMEM = {
5042  kZoneRulesChatham /*rules*/,
5043  10 /*numRules*/,
5044 };
5045 
5046 //---------------------------------------------------------------------------
5047 // Policy name: Chicago
5048 // Rules: 7
5049 //---------------------------------------------------------------------------
5050 
5051 static const complete::ZoneRule kZoneRulesChicago[] ACE_TIME_PROGMEM = {
5052  // Anchor: Rule Chicago 1920 1921 - Oct lastSun 2:00 0 S
5053  {
5054  -32767 /*fromYear*/,
5055  -32767 /*toYear*/,
5056  1 /*inMonth*/,
5057  0 /*onDayOfWeek*/,
5058  1 /*onDayOfMonth*/,
5059  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
5060  0 /*atTimeCode (0/15)*/,
5061  0 /*deltaMinutes*/,
5062  25 /*letterIndex ("S")*/,
5063  },
5064  // Rule Chicago 1920 only - Jun 13 2:00 1:00 D
5065  {
5066  1920 /*fromYear*/,
5067  1920 /*toYear*/,
5068  6 /*inMonth*/,
5069  0 /*onDayOfWeek*/,
5070  13 /*onDayOfMonth*/,
5071  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
5072  480 /*atTimeCode (7200/15)*/,
5073  60 /*deltaMinutes*/,
5074  13 /*letterIndex ("D")*/,
5075  },
5076  // Rule Chicago 1920 1921 - Oct lastSun 2:00 0 S
5077  {
5078  1920 /*fromYear*/,
5079  1921 /*toYear*/,
5080  10 /*inMonth*/,
5081  7 /*onDayOfWeek*/,
5082  0 /*onDayOfMonth*/,
5083  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
5084  480 /*atTimeCode (7200/15)*/,
5085  0 /*deltaMinutes*/,
5086  25 /*letterIndex ("S")*/,
5087  },
5088  // Rule Chicago 1921 only - Mar lastSun 2:00 1:00 D
5089  {
5090  1921 /*fromYear*/,
5091  1921 /*toYear*/,
5092  3 /*inMonth*/,
5093  7 /*onDayOfWeek*/,
5094  0 /*onDayOfMonth*/,
5095  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
5096  480 /*atTimeCode (7200/15)*/,
5097  60 /*deltaMinutes*/,
5098  13 /*letterIndex ("D")*/,
5099  },
5100  // Rule Chicago 1922 1966 - Apr lastSun 2:00 1:00 D
5101  {
5102  1922 /*fromYear*/,
5103  1966 /*toYear*/,
5104  4 /*inMonth*/,
5105  7 /*onDayOfWeek*/,
5106  0 /*onDayOfMonth*/,
5107  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
5108  480 /*atTimeCode (7200/15)*/,
5109  60 /*deltaMinutes*/,
5110  13 /*letterIndex ("D")*/,
5111  },
5112  // Rule Chicago 1922 1954 - Sep lastSun 2:00 0 S
5113  {
5114  1922 /*fromYear*/,
5115  1954 /*toYear*/,
5116  9 /*inMonth*/,
5117  7 /*onDayOfWeek*/,
5118  0 /*onDayOfMonth*/,
5119  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
5120  480 /*atTimeCode (7200/15)*/,
5121  0 /*deltaMinutes*/,
5122  25 /*letterIndex ("S")*/,
5123  },
5124  // Rule Chicago 1955 1966 - Oct lastSun 2:00 0 S
5125  {
5126  1955 /*fromYear*/,
5127  1966 /*toYear*/,
5128  10 /*inMonth*/,
5129  7 /*onDayOfWeek*/,
5130  0 /*onDayOfMonth*/,
5131  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
5132  480 /*atTimeCode (7200/15)*/,
5133  0 /*deltaMinutes*/,
5134  25 /*letterIndex ("S")*/,
5135  },
5136 
5137 };
5138 
5139 const complete::ZonePolicy kZonePolicyChicago ACE_TIME_PROGMEM = {
5140  kZoneRulesChicago /*rules*/,
5141  7 /*numRules*/,
5142 };
5143 
5144 //---------------------------------------------------------------------------
5145 // Policy name: Chile
5146 // Rules: 37
5147 //---------------------------------------------------------------------------
5148 
5149 static const complete::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = {
5150  // Anchor: Rule Chile 1928 1932 - Apr 1 0:00 0 -
5151  {
5152  -32767 /*fromYear*/,
5153  -32767 /*toYear*/,
5154  1 /*inMonth*/,
5155  0 /*onDayOfWeek*/,
5156  1 /*onDayOfMonth*/,
5157  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
5158  0 /*atTimeCode (0/15)*/,
5159  0 /*deltaMinutes*/,
5160  0 /*letterIndex ("")*/,
5161  },
5162  // Rule Chile 1927 1931 - Sep 1 0:00 1:00 -
5163  {
5164  1927 /*fromYear*/,
5165  1931 /*toYear*/,
5166  9 /*inMonth*/,
5167  0 /*onDayOfWeek*/,
5168  1 /*onDayOfMonth*/,
5169  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
5170  0 /*atTimeCode (0/15)*/,
5171  60 /*deltaMinutes*/,
5172  0 /*letterIndex ("")*/,
5173  },
5174  // Rule Chile 1928 1932 - Apr 1 0:00 0 -
5175  {
5176  1928 /*fromYear*/,
5177  1932 /*toYear*/,
5178  4 /*inMonth*/,
5179  0 /*onDayOfWeek*/,
5180  1 /*onDayOfMonth*/,
5181  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
5182  0 /*atTimeCode (0/15)*/,
5183  0 /*deltaMinutes*/,
5184  0 /*letterIndex ("")*/,
5185  },
5186  // Rule Chile 1968 only - Nov 3 4:00u 1:00 -
5187  {
5188  1968 /*fromYear*/,
5189  1968 /*toYear*/,
5190  11 /*inMonth*/,
5191  0 /*onDayOfWeek*/,
5192  3 /*onDayOfMonth*/,
5193  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
5194  960 /*atTimeCode (14400/15)*/,
5195  60 /*deltaMinutes*/,
5196  0 /*letterIndex ("")*/,
5197  },
5198  // Rule Chile 1969 only - Mar 30 3:00u 0 -
5199  {
5200  1969 /*fromYear*/,
5201  1969 /*toYear*/,
5202  3 /*inMonth*/,
5203  0 /*onDayOfWeek*/,
5204  30 /*onDayOfMonth*/,
5205  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
5206  720 /*atTimeCode (10800/15)*/,
5207  0 /*deltaMinutes*/,
5208  0 /*letterIndex ("")*/,
5209  },
5210  // Rule Chile 1969 only - Nov 23 4:00u 1:00 -
5211  {
5212  1969 /*fromYear*/,
5213  1969 /*toYear*/,
5214  11 /*inMonth*/,
5215  0 /*onDayOfWeek*/,
5216  23 /*onDayOfMonth*/,
5217  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
5218  960 /*atTimeCode (14400/15)*/,
5219  60 /*deltaMinutes*/,
5220  0 /*letterIndex ("")*/,
5221  },
5222  // Rule Chile 1970 only - Mar 29 3:00u 0 -
5223  {
5224  1970 /*fromYear*/,
5225  1970 /*toYear*/,
5226  3 /*inMonth*/,
5227  0 /*onDayOfWeek*/,
5228  29 /*onDayOfMonth*/,
5229  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
5230  720 /*atTimeCode (10800/15)*/,
5231  0 /*deltaMinutes*/,
5232  0 /*letterIndex ("")*/,
5233  },
5234  // Rule Chile 1971 only - Mar 14 3:00u 0 -
5235  {
5236  1971 /*fromYear*/,
5237  1971 /*toYear*/,
5238  3 /*inMonth*/,
5239  0 /*onDayOfWeek*/,
5240  14 /*onDayOfMonth*/,
5241  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
5242  720 /*atTimeCode (10800/15)*/,
5243  0 /*deltaMinutes*/,
5244  0 /*letterIndex ("")*/,
5245  },
5246  // Rule Chile 1970 1972 - Oct Sun>=9 4:00u 1:00 -
5247  {
5248  1970 /*fromYear*/,
5249  1972 /*toYear*/,
5250  10 /*inMonth*/,
5251  7 /*onDayOfWeek*/,
5252  9 /*onDayOfMonth*/,
5253  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
5254  960 /*atTimeCode (14400/15)*/,
5255  60 /*deltaMinutes*/,
5256  0 /*letterIndex ("")*/,
5257  },
5258  // Rule Chile 1972 1986 - Mar Sun>=9 3:00u 0 -
5259  {
5260  1972 /*fromYear*/,
5261  1986 /*toYear*/,
5262  3 /*inMonth*/,
5263  7 /*onDayOfWeek*/,
5264  9 /*onDayOfMonth*/,
5265  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
5266  720 /*atTimeCode (10800/15)*/,
5267  0 /*deltaMinutes*/,
5268  0 /*letterIndex ("")*/,
5269  },
5270  // Rule Chile 1973 only - Sep 30 4:00u 1:00 -
5271  {
5272  1973 /*fromYear*/,
5273  1973 /*toYear*/,
5274  9 /*inMonth*/,
5275  0 /*onDayOfWeek*/,
5276  30 /*onDayOfMonth*/,
5277  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
5278  960 /*atTimeCode (14400/15)*/,
5279  60 /*deltaMinutes*/,
5280  0 /*letterIndex ("")*/,
5281  },
5282  // Rule Chile 1974 1987 - Oct Sun>=9 4:00u 1:00 -
5283  {
5284  1974 /*fromYear*/,
5285  1987 /*toYear*/,
5286  10 /*inMonth*/,
5287  7 /*onDayOfWeek*/,
5288  9 /*onDayOfMonth*/,
5289  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
5290  960 /*atTimeCode (14400/15)*/,
5291  60 /*deltaMinutes*/,
5292  0 /*letterIndex ("")*/,
5293  },
5294  // Rule Chile 1987 only - Apr 12 3:00u 0 -
5295  {
5296  1987 /*fromYear*/,
5297  1987 /*toYear*/,
5298  4 /*inMonth*/,
5299  0 /*onDayOfWeek*/,
5300  12 /*onDayOfMonth*/,
5301  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
5302  720 /*atTimeCode (10800/15)*/,
5303  0 /*deltaMinutes*/,
5304  0 /*letterIndex ("")*/,
5305  },
5306  // Rule Chile 1988 1990 - Mar Sun>=9 3:00u 0 -
5307  {
5308  1988 /*fromYear*/,
5309  1990 /*toYear*/,
5310  3 /*inMonth*/,
5311  7 /*onDayOfWeek*/,
5312  9 /*onDayOfMonth*/,
5313  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
5314  720 /*atTimeCode (10800/15)*/,
5315  0 /*deltaMinutes*/,
5316  0 /*letterIndex ("")*/,
5317  },
5318  // Rule Chile 1988 1989 - Oct Sun>=9 4:00u 1:00 -
5319  {
5320  1988 /*fromYear*/,
5321  1989 /*toYear*/,
5322  10 /*inMonth*/,
5323  7 /*onDayOfWeek*/,
5324  9 /*onDayOfMonth*/,
5325  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
5326  960 /*atTimeCode (14400/15)*/,
5327  60 /*deltaMinutes*/,
5328  0 /*letterIndex ("")*/,
5329  },
5330  // Rule Chile 1990 only - Sep 16 4:00u 1:00 -
5331  {
5332  1990 /*fromYear*/,
5333  1990 /*toYear*/,
5334  9 /*inMonth*/,
5335  0 /*onDayOfWeek*/,
5336  16 /*onDayOfMonth*/,
5337  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
5338  960 /*atTimeCode (14400/15)*/,
5339  60 /*deltaMinutes*/,
5340  0 /*letterIndex ("")*/,
5341  },
5342  // Rule Chile 1991 1996 - Mar Sun>=9 3:00u 0 -
5343  {
5344  1991 /*fromYear*/,
5345  1996 /*toYear*/,
5346  3 /*inMonth*/,
5347  7 /*onDayOfWeek*/,
5348  9 /*onDayOfMonth*/,
5349  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
5350  720 /*atTimeCode (10800/15)*/,
5351  0 /*deltaMinutes*/,
5352  0 /*letterIndex ("")*/,
5353  },
5354  // Rule Chile 1991 1997 - Oct Sun>=9 4:00u 1:00 -
5355  {
5356  1991 /*fromYear*/,
5357  1997 /*toYear*/,
5358  10 /*inMonth*/,
5359  7 /*onDayOfWeek*/,
5360  9 /*onDayOfMonth*/,
5361  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
5362  960 /*atTimeCode (14400/15)*/,
5363  60 /*deltaMinutes*/,
5364  0 /*letterIndex ("")*/,
5365  },
5366  // Rule Chile 1997 only - Mar 30 3:00u 0 -
5367  {
5368  1997 /*fromYear*/,
5369  1997 /*toYear*/,
5370  3 /*inMonth*/,
5371  0 /*onDayOfWeek*/,
5372  30 /*onDayOfMonth*/,
5373  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
5374  720 /*atTimeCode (10800/15)*/,
5375  0 /*deltaMinutes*/,
5376  0 /*letterIndex ("")*/,
5377  },
5378  // Rule Chile 1998 only - Mar Sun>=9 3:00u 0 -
5379  {
5380  1998 /*fromYear*/,
5381  1998 /*toYear*/,
5382  3 /*inMonth*/,
5383  7 /*onDayOfWeek*/,
5384  9 /*onDayOfMonth*/,
5385  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
5386  720 /*atTimeCode (10800/15)*/,
5387  0 /*deltaMinutes*/,
5388  0 /*letterIndex ("")*/,
5389  },
5390  // Rule Chile 1998 only - Sep 27 4:00u 1:00 -
5391  {
5392  1998 /*fromYear*/,
5393  1998 /*toYear*/,
5394  9 /*inMonth*/,
5395  0 /*onDayOfWeek*/,
5396  27 /*onDayOfMonth*/,
5397  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
5398  960 /*atTimeCode (14400/15)*/,
5399  60 /*deltaMinutes*/,
5400  0 /*letterIndex ("")*/,
5401  },
5402  // Rule Chile 1999 only - Apr 4 3:00u 0 -
5403  {
5404  1999 /*fromYear*/,
5405  1999 /*toYear*/,
5406  4 /*inMonth*/,
5407  0 /*onDayOfWeek*/,
5408  4 /*onDayOfMonth*/,
5409  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
5410  720 /*atTimeCode (10800/15)*/,
5411  0 /*deltaMinutes*/,
5412  0 /*letterIndex ("")*/,
5413  },
5414  // Rule Chile 1999 2010 - Oct Sun>=9 4:00u 1:00 -
5415  {
5416  1999 /*fromYear*/,
5417  2010 /*toYear*/,
5418  10 /*inMonth*/,
5419  7 /*onDayOfWeek*/,
5420  9 /*onDayOfMonth*/,
5421  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
5422  960 /*atTimeCode (14400/15)*/,
5423  60 /*deltaMinutes*/,
5424  0 /*letterIndex ("")*/,
5425  },
5426  // Rule Chile 2000 2007 - Mar Sun>=9 3:00u 0 -
5427  {
5428  2000 /*fromYear*/,
5429  2007 /*toYear*/,
5430  3 /*inMonth*/,
5431  7 /*onDayOfWeek*/,
5432  9 /*onDayOfMonth*/,
5433  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
5434  720 /*atTimeCode (10800/15)*/,
5435  0 /*deltaMinutes*/,
5436  0 /*letterIndex ("")*/,
5437  },
5438  // Rule Chile 2008 only - Mar 30 3:00u 0 -
5439  {
5440  2008 /*fromYear*/,
5441  2008 /*toYear*/,
5442  3 /*inMonth*/,
5443  0 /*onDayOfWeek*/,
5444  30 /*onDayOfMonth*/,
5445  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
5446  720 /*atTimeCode (10800/15)*/,
5447  0 /*deltaMinutes*/,
5448  0 /*letterIndex ("")*/,
5449  },
5450  // Rule Chile 2009 only - Mar Sun>=9 3:00u 0 -
5451  {
5452  2009 /*fromYear*/,
5453  2009 /*toYear*/,
5454  3 /*inMonth*/,
5455  7 /*onDayOfWeek*/,
5456  9 /*onDayOfMonth*/,
5457  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
5458  720 /*atTimeCode (10800/15)*/,
5459  0 /*deltaMinutes*/,
5460  0 /*letterIndex ("")*/,
5461  },
5462  // Rule Chile 2010 only - Apr Sun>=1 3:00u 0 -
5463  {
5464  2010 /*fromYear*/,
5465  2010 /*toYear*/,
5466  4 /*inMonth*/,
5467  7 /*onDayOfWeek*/,
5468  1 /*onDayOfMonth*/,
5469  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
5470  720 /*atTimeCode (10800/15)*/,
5471  0 /*deltaMinutes*/,
5472  0 /*letterIndex ("")*/,
5473  },
5474  // Rule Chile 2011 only - May Sun>=2 3:00u 0 -
5475  {
5476  2011 /*fromYear*/,
5477  2011 /*toYear*/,
5478  5 /*inMonth*/,
5479  7 /*onDayOfWeek*/,
5480  2 /*onDayOfMonth*/,
5481  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
5482  720 /*atTimeCode (10800/15)*/,
5483  0 /*deltaMinutes*/,
5484  0 /*letterIndex ("")*/,
5485  },
5486  // Rule Chile 2011 only - Aug Sun>=16 4:00u 1:00 -
5487  {
5488  2011 /*fromYear*/,
5489  2011 /*toYear*/,
5490  8 /*inMonth*/,
5491  7 /*onDayOfWeek*/,
5492  16 /*onDayOfMonth*/,
5493  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
5494  960 /*atTimeCode (14400/15)*/,
5495  60 /*deltaMinutes*/,
5496  0 /*letterIndex ("")*/,
5497  },
5498  // Rule Chile 2012 2014 - Apr Sun>=23 3:00u 0 -
5499  {
5500  2012 /*fromYear*/,
5501  2014 /*toYear*/,
5502  4 /*inMonth*/,
5503  7 /*onDayOfWeek*/,
5504  23 /*onDayOfMonth*/,
5505  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
5506  720 /*atTimeCode (10800/15)*/,
5507  0 /*deltaMinutes*/,
5508  0 /*letterIndex ("")*/,
5509  },
5510  // Rule Chile 2012 2014 - Sep Sun>=2 4:00u 1:00 -
5511  {
5512  2012 /*fromYear*/,
5513  2014 /*toYear*/,
5514  9 /*inMonth*/,
5515  7 /*onDayOfWeek*/,
5516  2 /*onDayOfMonth*/,
5517  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
5518  960 /*atTimeCode (14400/15)*/,
5519  60 /*deltaMinutes*/,
5520  0 /*letterIndex ("")*/,
5521  },
5522  // Rule Chile 2016 2018 - May Sun>=9 3:00u 0 -
5523  {
5524  2016 /*fromYear*/,
5525  2018 /*toYear*/,
5526  5 /*inMonth*/,
5527  7 /*onDayOfWeek*/,
5528  9 /*onDayOfMonth*/,
5529  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
5530  720 /*atTimeCode (10800/15)*/,
5531  0 /*deltaMinutes*/,
5532  0 /*letterIndex ("")*/,
5533  },
5534  // Rule Chile 2016 2018 - Aug Sun>=9 4:00u 1:00 -
5535  {
5536  2016 /*fromYear*/,
5537  2018 /*toYear*/,
5538  8 /*inMonth*/,
5539  7 /*onDayOfWeek*/,
5540  9 /*onDayOfMonth*/,
5541  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
5542  960 /*atTimeCode (14400/15)*/,
5543  60 /*deltaMinutes*/,
5544  0 /*letterIndex ("")*/,
5545  },
5546  // Rule Chile 2019 max - Apr Sun>=2 3:00u 0 -
5547  {
5548  2019 /*fromYear*/,
5549  32766 /*toYear*/,
5550  4 /*inMonth*/,
5551  7 /*onDayOfWeek*/,
5552  2 /*onDayOfMonth*/,
5553  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
5554  720 /*atTimeCode (10800/15)*/,
5555  0 /*deltaMinutes*/,
5556  0 /*letterIndex ("")*/,
5557  },
5558  // Rule Chile 2019 2021 - Sep Sun>=2 4:00u 1:00 -
5559  {
5560  2019 /*fromYear*/,
5561  2021 /*toYear*/,
5562  9 /*inMonth*/,
5563  7 /*onDayOfWeek*/,
5564  2 /*onDayOfMonth*/,
5565  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
5566  960 /*atTimeCode (14400/15)*/,
5567  60 /*deltaMinutes*/,
5568  0 /*letterIndex ("")*/,
5569  },
5570  // Rule Chile 2022 only - Sep Sun>=9 4:00u 1:00 -
5571  {
5572  2022 /*fromYear*/,
5573  2022 /*toYear*/,
5574  9 /*inMonth*/,
5575  7 /*onDayOfWeek*/,
5576  9 /*onDayOfMonth*/,
5577  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
5578  960 /*atTimeCode (14400/15)*/,
5579  60 /*deltaMinutes*/,
5580  0 /*letterIndex ("")*/,
5581  },
5582  // Rule Chile 2023 max - Sep Sun>=2 4:00u 1:00 -
5583  {
5584  2023 /*fromYear*/,
5585  32766 /*toYear*/,
5586  9 /*inMonth*/,
5587  7 /*onDayOfWeek*/,
5588  2 /*onDayOfMonth*/,
5589  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
5590  960 /*atTimeCode (14400/15)*/,
5591  60 /*deltaMinutes*/,
5592  0 /*letterIndex ("")*/,
5593  },
5594 
5595 };
5596 
5597 const complete::ZonePolicy kZonePolicyChile ACE_TIME_PROGMEM = {
5598  kZoneRulesChile /*rules*/,
5599  37 /*numRules*/,
5600 };
5601 
5602 //---------------------------------------------------------------------------
5603 // Policy name: Cook
5604 // Rules: 4
5605 //---------------------------------------------------------------------------
5606 
5607 static const complete::ZoneRule kZoneRulesCook[] ACE_TIME_PROGMEM = {
5608  // Anchor: Rule Cook 1979 1991 - Mar Sun>=1 0:00 0 -
5609  {
5610  -32767 /*fromYear*/,
5611  -32767 /*toYear*/,
5612  1 /*inMonth*/,
5613  0 /*onDayOfWeek*/,
5614  1 /*onDayOfMonth*/,
5615  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
5616  0 /*atTimeCode (0/15)*/,
5617  0 /*deltaMinutes*/,
5618  0 /*letterIndex ("")*/,
5619  },
5620  // Rule Cook 1978 only - Nov 12 0:00 0:30 -
5621  {
5622  1978 /*fromYear*/,
5623  1978 /*toYear*/,
5624  11 /*inMonth*/,
5625  0 /*onDayOfWeek*/,
5626  12 /*onDayOfMonth*/,
5627  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
5628  0 /*atTimeCode (0/15)*/,
5629  30 /*deltaMinutes*/,
5630  0 /*letterIndex ("")*/,
5631  },
5632  // Rule Cook 1979 1991 - Mar Sun>=1 0:00 0 -
5633  {
5634  1979 /*fromYear*/,
5635  1991 /*toYear*/,
5636  3 /*inMonth*/,
5637  7 /*onDayOfWeek*/,
5638  1 /*onDayOfMonth*/,
5639  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
5640  0 /*atTimeCode (0/15)*/,
5641  0 /*deltaMinutes*/,
5642  0 /*letterIndex ("")*/,
5643  },
5644  // Rule Cook 1979 1990 - Oct lastSun 0:00 0:30 -
5645  {
5646  1979 /*fromYear*/,
5647  1990 /*toYear*/,
5648  10 /*inMonth*/,
5649  7 /*onDayOfWeek*/,
5650  0 /*onDayOfMonth*/,
5651  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
5652  0 /*atTimeCode (0/15)*/,
5653  30 /*deltaMinutes*/,
5654  0 /*letterIndex ("")*/,
5655  },
5656 
5657 };
5658 
5659 const complete::ZonePolicy kZonePolicyCook ACE_TIME_PROGMEM = {
5660  kZoneRulesCook /*rules*/,
5661  4 /*numRules*/,
5662 };
5663 
5664 //---------------------------------------------------------------------------
5665 // Policy name: Cuba
5666 // Rules: 40
5667 //---------------------------------------------------------------------------
5668 
5669 static const complete::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = {
5670  // Anchor: Rule Cuba 1928 only - Oct 10 0:00 0 S
5671  {
5672  -32767 /*fromYear*/,
5673  -32767 /*toYear*/,
5674  1 /*inMonth*/,
5675  0 /*onDayOfWeek*/,
5676  1 /*onDayOfMonth*/,
5677  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
5678  0 /*atTimeCode (0/15)*/,
5679  0 /*deltaMinutes*/,
5680  25 /*letterIndex ("S")*/,
5681  },
5682  // Rule Cuba 1928 only - Jun 10 0:00 1:00 D
5683  {
5684  1928 /*fromYear*/,
5685  1928 /*toYear*/,
5686  6 /*inMonth*/,
5687  0 /*onDayOfWeek*/,
5688  10 /*onDayOfMonth*/,
5689  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
5690  0 /*atTimeCode (0/15)*/,
5691  60 /*deltaMinutes*/,
5692  13 /*letterIndex ("D")*/,
5693  },
5694  // Rule Cuba 1928 only - Oct 10 0:00 0 S
5695  {
5696  1928 /*fromYear*/,
5697  1928 /*toYear*/,
5698  10 /*inMonth*/,
5699  0 /*onDayOfWeek*/,
5700  10 /*onDayOfMonth*/,
5701  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
5702  0 /*atTimeCode (0/15)*/,
5703  0 /*deltaMinutes*/,
5704  25 /*letterIndex ("S")*/,
5705  },
5706  // Rule Cuba 1940 1942 - Jun Sun>=1 0:00 1:00 D
5707  {
5708  1940 /*fromYear*/,
5709  1942 /*toYear*/,
5710  6 /*inMonth*/,
5711  7 /*onDayOfWeek*/,
5712  1 /*onDayOfMonth*/,
5713  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
5714  0 /*atTimeCode (0/15)*/,
5715  60 /*deltaMinutes*/,
5716  13 /*letterIndex ("D")*/,
5717  },
5718  // Rule Cuba 1940 1942 - Sep Sun>=1 0:00 0 S
5719  {
5720  1940 /*fromYear*/,
5721  1942 /*toYear*/,
5722  9 /*inMonth*/,
5723  7 /*onDayOfWeek*/,
5724  1 /*onDayOfMonth*/,
5725  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
5726  0 /*atTimeCode (0/15)*/,
5727  0 /*deltaMinutes*/,
5728  25 /*letterIndex ("S")*/,
5729  },
5730  // Rule Cuba 1945 1946 - Jun Sun>=1 0:00 1:00 D
5731  {
5732  1945 /*fromYear*/,
5733  1946 /*toYear*/,
5734  6 /*inMonth*/,
5735  7 /*onDayOfWeek*/,
5736  1 /*onDayOfMonth*/,
5737  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
5738  0 /*atTimeCode (0/15)*/,
5739  60 /*deltaMinutes*/,
5740  13 /*letterIndex ("D")*/,
5741  },
5742  // Rule Cuba 1945 1946 - Sep Sun>=1 0:00 0 S
5743  {
5744  1945 /*fromYear*/,
5745  1946 /*toYear*/,
5746  9 /*inMonth*/,
5747  7 /*onDayOfWeek*/,
5748  1 /*onDayOfMonth*/,
5749  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
5750  0 /*atTimeCode (0/15)*/,
5751  0 /*deltaMinutes*/,
5752  25 /*letterIndex ("S")*/,
5753  },
5754  // Rule Cuba 1965 only - Jun 1 0:00 1:00 D
5755  {
5756  1965 /*fromYear*/,
5757  1965 /*toYear*/,
5758  6 /*inMonth*/,
5759  0 /*onDayOfWeek*/,
5760  1 /*onDayOfMonth*/,
5761  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
5762  0 /*atTimeCode (0/15)*/,
5763  60 /*deltaMinutes*/,
5764  13 /*letterIndex ("D")*/,
5765  },
5766  // Rule Cuba 1965 only - Sep 30 0:00 0 S
5767  {
5768  1965 /*fromYear*/,
5769  1965 /*toYear*/,
5770  9 /*inMonth*/,
5771  0 /*onDayOfWeek*/,
5772  30 /*onDayOfMonth*/,
5773  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
5774  0 /*atTimeCode (0/15)*/,
5775  0 /*deltaMinutes*/,
5776  25 /*letterIndex ("S")*/,
5777  },
5778  // Rule Cuba 1966 only - May 29 0:00 1:00 D
5779  {
5780  1966 /*fromYear*/,
5781  1966 /*toYear*/,
5782  5 /*inMonth*/,
5783  0 /*onDayOfWeek*/,
5784  29 /*onDayOfMonth*/,
5785  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
5786  0 /*atTimeCode (0/15)*/,
5787  60 /*deltaMinutes*/,
5788  13 /*letterIndex ("D")*/,
5789  },
5790  // Rule Cuba 1966 only - Oct 2 0:00 0 S
5791  {
5792  1966 /*fromYear*/,
5793  1966 /*toYear*/,
5794  10 /*inMonth*/,
5795  0 /*onDayOfWeek*/,
5796  2 /*onDayOfMonth*/,
5797  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
5798  0 /*atTimeCode (0/15)*/,
5799  0 /*deltaMinutes*/,
5800  25 /*letterIndex ("S")*/,
5801  },
5802  // Rule Cuba 1967 only - Apr 8 0:00 1:00 D
5803  {
5804  1967 /*fromYear*/,
5805  1967 /*toYear*/,
5806  4 /*inMonth*/,
5807  0 /*onDayOfWeek*/,
5808  8 /*onDayOfMonth*/,
5809  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
5810  0 /*atTimeCode (0/15)*/,
5811  60 /*deltaMinutes*/,
5812  13 /*letterIndex ("D")*/,
5813  },
5814  // Rule Cuba 1967 1968 - Sep Sun>=8 0:00 0 S
5815  {
5816  1967 /*fromYear*/,
5817  1968 /*toYear*/,
5818  9 /*inMonth*/,
5819  7 /*onDayOfWeek*/,
5820  8 /*onDayOfMonth*/,
5821  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
5822  0 /*atTimeCode (0/15)*/,
5823  0 /*deltaMinutes*/,
5824  25 /*letterIndex ("S")*/,
5825  },
5826  // Rule Cuba 1968 only - Apr 14 0:00 1:00 D
5827  {
5828  1968 /*fromYear*/,
5829  1968 /*toYear*/,
5830  4 /*inMonth*/,
5831  0 /*onDayOfWeek*/,
5832  14 /*onDayOfMonth*/,
5833  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
5834  0 /*atTimeCode (0/15)*/,
5835  60 /*deltaMinutes*/,
5836  13 /*letterIndex ("D")*/,
5837  },
5838  // Rule Cuba 1969 1977 - Apr lastSun 0:00 1:00 D
5839  {
5840  1969 /*fromYear*/,
5841  1977 /*toYear*/,
5842  4 /*inMonth*/,
5843  7 /*onDayOfWeek*/,
5844  0 /*onDayOfMonth*/,
5845  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
5846  0 /*atTimeCode (0/15)*/,
5847  60 /*deltaMinutes*/,
5848  13 /*letterIndex ("D")*/,
5849  },
5850  // Rule Cuba 1969 1971 - Oct lastSun 0:00 0 S
5851  {
5852  1969 /*fromYear*/,
5853  1971 /*toYear*/,
5854  10 /*inMonth*/,
5855  7 /*onDayOfWeek*/,
5856  0 /*onDayOfMonth*/,
5857  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
5858  0 /*atTimeCode (0/15)*/,
5859  0 /*deltaMinutes*/,
5860  25 /*letterIndex ("S")*/,
5861  },
5862  // Rule Cuba 1972 1974 - Oct 8 0:00 0 S
5863  {
5864  1972 /*fromYear*/,
5865  1974 /*toYear*/,
5866  10 /*inMonth*/,
5867  0 /*onDayOfWeek*/,
5868  8 /*onDayOfMonth*/,
5869  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
5870  0 /*atTimeCode (0/15)*/,
5871  0 /*deltaMinutes*/,
5872  25 /*letterIndex ("S")*/,
5873  },
5874  // Rule Cuba 1975 1977 - Oct lastSun 0:00 0 S
5875  {
5876  1975 /*fromYear*/,
5877  1977 /*toYear*/,
5878  10 /*inMonth*/,
5879  7 /*onDayOfWeek*/,
5880  0 /*onDayOfMonth*/,
5881  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
5882  0 /*atTimeCode (0/15)*/,
5883  0 /*deltaMinutes*/,
5884  25 /*letterIndex ("S")*/,
5885  },
5886  // Rule Cuba 1978 only - May 7 0:00 1:00 D
5887  {
5888  1978 /*fromYear*/,
5889  1978 /*toYear*/,
5890  5 /*inMonth*/,
5891  0 /*onDayOfWeek*/,
5892  7 /*onDayOfMonth*/,
5893  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
5894  0 /*atTimeCode (0/15)*/,
5895  60 /*deltaMinutes*/,
5896  13 /*letterIndex ("D")*/,
5897  },
5898  // Rule Cuba 1978 1990 - Oct Sun>=8 0:00 0 S
5899  {
5900  1978 /*fromYear*/,
5901  1990 /*toYear*/,
5902  10 /*inMonth*/,
5903  7 /*onDayOfWeek*/,
5904  8 /*onDayOfMonth*/,
5905  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
5906  0 /*atTimeCode (0/15)*/,
5907  0 /*deltaMinutes*/,
5908  25 /*letterIndex ("S")*/,
5909  },
5910  // Rule Cuba 1979 1980 - Mar Sun>=15 0:00 1:00 D
5911  {
5912  1979 /*fromYear*/,
5913  1980 /*toYear*/,
5914  3 /*inMonth*/,
5915  7 /*onDayOfWeek*/,
5916  15 /*onDayOfMonth*/,
5917  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
5918  0 /*atTimeCode (0/15)*/,
5919  60 /*deltaMinutes*/,
5920  13 /*letterIndex ("D")*/,
5921  },
5922  // Rule Cuba 1981 1985 - May Sun>=5 0:00 1:00 D
5923  {
5924  1981 /*fromYear*/,
5925  1985 /*toYear*/,
5926  5 /*inMonth*/,
5927  7 /*onDayOfWeek*/,
5928  5 /*onDayOfMonth*/,
5929  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
5930  0 /*atTimeCode (0/15)*/,
5931  60 /*deltaMinutes*/,
5932  13 /*letterIndex ("D")*/,
5933  },
5934  // Rule Cuba 1986 1989 - Mar Sun>=14 0:00 1:00 D
5935  {
5936  1986 /*fromYear*/,
5937  1989 /*toYear*/,
5938  3 /*inMonth*/,
5939  7 /*onDayOfWeek*/,
5940  14 /*onDayOfMonth*/,
5941  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
5942  0 /*atTimeCode (0/15)*/,
5943  60 /*deltaMinutes*/,
5944  13 /*letterIndex ("D")*/,
5945  },
5946  // Rule Cuba 1990 1997 - Apr Sun>=1 0:00 1:00 D
5947  {
5948  1990 /*fromYear*/,
5949  1997 /*toYear*/,
5950  4 /*inMonth*/,
5951  7 /*onDayOfWeek*/,
5952  1 /*onDayOfMonth*/,
5953  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
5954  0 /*atTimeCode (0/15)*/,
5955  60 /*deltaMinutes*/,
5956  13 /*letterIndex ("D")*/,
5957  },
5958  // Rule Cuba 1991 1995 - Oct Sun>=8 0:00s 0 S
5959  {
5960  1991 /*fromYear*/,
5961  1995 /*toYear*/,
5962  10 /*inMonth*/,
5963  7 /*onDayOfWeek*/,
5964  8 /*onDayOfMonth*/,
5965  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
5966  0 /*atTimeCode (0/15)*/,
5967  0 /*deltaMinutes*/,
5968  25 /*letterIndex ("S")*/,
5969  },
5970  // Rule Cuba 1996 only - Oct 6 0:00s 0 S
5971  {
5972  1996 /*fromYear*/,
5973  1996 /*toYear*/,
5974  10 /*inMonth*/,
5975  0 /*onDayOfWeek*/,
5976  6 /*onDayOfMonth*/,
5977  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
5978  0 /*atTimeCode (0/15)*/,
5979  0 /*deltaMinutes*/,
5980  25 /*letterIndex ("S")*/,
5981  },
5982  // Rule Cuba 1997 only - Oct 12 0:00s 0 S
5983  {
5984  1997 /*fromYear*/,
5985  1997 /*toYear*/,
5986  10 /*inMonth*/,
5987  0 /*onDayOfWeek*/,
5988  12 /*onDayOfMonth*/,
5989  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
5990  0 /*atTimeCode (0/15)*/,
5991  0 /*deltaMinutes*/,
5992  25 /*letterIndex ("S")*/,
5993  },
5994  // Rule Cuba 1998 1999 - Mar lastSun 0:00s 1:00 D
5995  {
5996  1998 /*fromYear*/,
5997  1999 /*toYear*/,
5998  3 /*inMonth*/,
5999  7 /*onDayOfWeek*/,
6000  0 /*onDayOfMonth*/,
6001  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
6002  0 /*atTimeCode (0/15)*/,
6003  60 /*deltaMinutes*/,
6004  13 /*letterIndex ("D")*/,
6005  },
6006  // Rule Cuba 1998 2003 - Oct lastSun 0:00s 0 S
6007  {
6008  1998 /*fromYear*/,
6009  2003 /*toYear*/,
6010  10 /*inMonth*/,
6011  7 /*onDayOfWeek*/,
6012  0 /*onDayOfMonth*/,
6013  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
6014  0 /*atTimeCode (0/15)*/,
6015  0 /*deltaMinutes*/,
6016  25 /*letterIndex ("S")*/,
6017  },
6018  // Rule Cuba 2000 2003 - Apr Sun>=1 0:00s 1:00 D
6019  {
6020  2000 /*fromYear*/,
6021  2003 /*toYear*/,
6022  4 /*inMonth*/,
6023  7 /*onDayOfWeek*/,
6024  1 /*onDayOfMonth*/,
6025  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
6026  0 /*atTimeCode (0/15)*/,
6027  60 /*deltaMinutes*/,
6028  13 /*letterIndex ("D")*/,
6029  },
6030  // Rule Cuba 2004 only - Mar lastSun 0:00s 1:00 D
6031  {
6032  2004 /*fromYear*/,
6033  2004 /*toYear*/,
6034  3 /*inMonth*/,
6035  7 /*onDayOfWeek*/,
6036  0 /*onDayOfMonth*/,
6037  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
6038  0 /*atTimeCode (0/15)*/,
6039  60 /*deltaMinutes*/,
6040  13 /*letterIndex ("D")*/,
6041  },
6042  // Rule Cuba 2006 2010 - Oct lastSun 0:00s 0 S
6043  {
6044  2006 /*fromYear*/,
6045  2010 /*toYear*/,
6046  10 /*inMonth*/,
6047  7 /*onDayOfWeek*/,
6048  0 /*onDayOfMonth*/,
6049  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
6050  0 /*atTimeCode (0/15)*/,
6051  0 /*deltaMinutes*/,
6052  25 /*letterIndex ("S")*/,
6053  },
6054  // Rule Cuba 2007 only - Mar Sun>=8 0:00s 1:00 D
6055  {
6056  2007 /*fromYear*/,
6057  2007 /*toYear*/,
6058  3 /*inMonth*/,
6059  7 /*onDayOfWeek*/,
6060  8 /*onDayOfMonth*/,
6061  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
6062  0 /*atTimeCode (0/15)*/,
6063  60 /*deltaMinutes*/,
6064  13 /*letterIndex ("D")*/,
6065  },
6066  // Rule Cuba 2008 only - Mar Sun>=15 0:00s 1:00 D
6067  {
6068  2008 /*fromYear*/,
6069  2008 /*toYear*/,
6070  3 /*inMonth*/,
6071  7 /*onDayOfWeek*/,
6072  15 /*onDayOfMonth*/,
6073  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
6074  0 /*atTimeCode (0/15)*/,
6075  60 /*deltaMinutes*/,
6076  13 /*letterIndex ("D")*/,
6077  },
6078  // Rule Cuba 2009 2010 - Mar Sun>=8 0:00s 1:00 D
6079  {
6080  2009 /*fromYear*/,
6081  2010 /*toYear*/,
6082  3 /*inMonth*/,
6083  7 /*onDayOfWeek*/,
6084  8 /*onDayOfMonth*/,
6085  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
6086  0 /*atTimeCode (0/15)*/,
6087  60 /*deltaMinutes*/,
6088  13 /*letterIndex ("D")*/,
6089  },
6090  // Rule Cuba 2011 only - Mar Sun>=15 0:00s 1:00 D
6091  {
6092  2011 /*fromYear*/,
6093  2011 /*toYear*/,
6094  3 /*inMonth*/,
6095  7 /*onDayOfWeek*/,
6096  15 /*onDayOfMonth*/,
6097  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
6098  0 /*atTimeCode (0/15)*/,
6099  60 /*deltaMinutes*/,
6100  13 /*letterIndex ("D")*/,
6101  },
6102  // Rule Cuba 2011 only - Nov 13 0:00s 0 S
6103  {
6104  2011 /*fromYear*/,
6105  2011 /*toYear*/,
6106  11 /*inMonth*/,
6107  0 /*onDayOfWeek*/,
6108  13 /*onDayOfMonth*/,
6109  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
6110  0 /*atTimeCode (0/15)*/,
6111  0 /*deltaMinutes*/,
6112  25 /*letterIndex ("S")*/,
6113  },
6114  // Rule Cuba 2012 only - Apr 1 0:00s 1:00 D
6115  {
6116  2012 /*fromYear*/,
6117  2012 /*toYear*/,
6118  4 /*inMonth*/,
6119  0 /*onDayOfWeek*/,
6120  1 /*onDayOfMonth*/,
6121  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
6122  0 /*atTimeCode (0/15)*/,
6123  60 /*deltaMinutes*/,
6124  13 /*letterIndex ("D")*/,
6125  },
6126  // Rule Cuba 2012 max - Nov Sun>=1 0:00s 0 S
6127  {
6128  2012 /*fromYear*/,
6129  32766 /*toYear*/,
6130  11 /*inMonth*/,
6131  7 /*onDayOfWeek*/,
6132  1 /*onDayOfMonth*/,
6133  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
6134  0 /*atTimeCode (0/15)*/,
6135  0 /*deltaMinutes*/,
6136  25 /*letterIndex ("S")*/,
6137  },
6138  // Rule Cuba 2013 max - Mar Sun>=8 0:00s 1:00 D
6139  {
6140  2013 /*fromYear*/,
6141  32766 /*toYear*/,
6142  3 /*inMonth*/,
6143  7 /*onDayOfWeek*/,
6144  8 /*onDayOfMonth*/,
6145  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
6146  0 /*atTimeCode (0/15)*/,
6147  60 /*deltaMinutes*/,
6148  13 /*letterIndex ("D")*/,
6149  },
6150 
6151 };
6152 
6153 const complete::ZonePolicy kZonePolicyCuba ACE_TIME_PROGMEM = {
6154  kZoneRulesCuba /*rules*/,
6155  40 /*numRules*/,
6156 };
6157 
6158 //---------------------------------------------------------------------------
6159 // Policy name: Cyprus
6160 // Rules: 10
6161 //---------------------------------------------------------------------------
6162 
6163 static const complete::ZoneRule kZoneRulesCyprus[] ACE_TIME_PROGMEM = {
6164  // Anchor: Rule Cyprus 1975 only - Oct 12 0:00 0 -
6165  {
6166  -32767 /*fromYear*/,
6167  -32767 /*toYear*/,
6168  1 /*inMonth*/,
6169  0 /*onDayOfWeek*/,
6170  1 /*onDayOfMonth*/,
6171  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
6172  0 /*atTimeCode (0/15)*/,
6173  0 /*deltaMinutes*/,
6174  0 /*letterIndex ("")*/,
6175  },
6176  // Rule Cyprus 1975 only - Apr 13 0:00 1:00 S
6177  {
6178  1975 /*fromYear*/,
6179  1975 /*toYear*/,
6180  4 /*inMonth*/,
6181  0 /*onDayOfWeek*/,
6182  13 /*onDayOfMonth*/,
6183  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
6184  0 /*atTimeCode (0/15)*/,
6185  60 /*deltaMinutes*/,
6186  25 /*letterIndex ("S")*/,
6187  },
6188  // Rule Cyprus 1975 only - Oct 12 0:00 0 -
6189  {
6190  1975 /*fromYear*/,
6191  1975 /*toYear*/,
6192  10 /*inMonth*/,
6193  0 /*onDayOfWeek*/,
6194  12 /*onDayOfMonth*/,
6195  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
6196  0 /*atTimeCode (0/15)*/,
6197  0 /*deltaMinutes*/,
6198  0 /*letterIndex ("")*/,
6199  },
6200  // Rule Cyprus 1976 only - May 15 0:00 1:00 S
6201  {
6202  1976 /*fromYear*/,
6203  1976 /*toYear*/,
6204  5 /*inMonth*/,
6205  0 /*onDayOfWeek*/,
6206  15 /*onDayOfMonth*/,
6207  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
6208  0 /*atTimeCode (0/15)*/,
6209  60 /*deltaMinutes*/,
6210  25 /*letterIndex ("S")*/,
6211  },
6212  // Rule Cyprus 1976 only - Oct 11 0:00 0 -
6213  {
6214  1976 /*fromYear*/,
6215  1976 /*toYear*/,
6216  10 /*inMonth*/,
6217  0 /*onDayOfWeek*/,
6218  11 /*onDayOfMonth*/,
6219  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
6220  0 /*atTimeCode (0/15)*/,
6221  0 /*deltaMinutes*/,
6222  0 /*letterIndex ("")*/,
6223  },
6224  // Rule Cyprus 1977 1980 - Apr Sun>=1 0:00 1:00 S
6225  {
6226  1977 /*fromYear*/,
6227  1980 /*toYear*/,
6228  4 /*inMonth*/,
6229  7 /*onDayOfWeek*/,
6230  1 /*onDayOfMonth*/,
6231  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
6232  0 /*atTimeCode (0/15)*/,
6233  60 /*deltaMinutes*/,
6234  25 /*letterIndex ("S")*/,
6235  },
6236  // Rule Cyprus 1977 only - Sep 25 0:00 0 -
6237  {
6238  1977 /*fromYear*/,
6239  1977 /*toYear*/,
6240  9 /*inMonth*/,
6241  0 /*onDayOfWeek*/,
6242  25 /*onDayOfMonth*/,
6243  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
6244  0 /*atTimeCode (0/15)*/,
6245  0 /*deltaMinutes*/,
6246  0 /*letterIndex ("")*/,
6247  },
6248  // Rule Cyprus 1978 only - Oct 2 0:00 0 -
6249  {
6250  1978 /*fromYear*/,
6251  1978 /*toYear*/,
6252  10 /*inMonth*/,
6253  0 /*onDayOfWeek*/,
6254  2 /*onDayOfMonth*/,
6255  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
6256  0 /*atTimeCode (0/15)*/,
6257  0 /*deltaMinutes*/,
6258  0 /*letterIndex ("")*/,
6259  },
6260  // Rule Cyprus 1979 1997 - Sep lastSun 0:00 0 -
6261  {
6262  1979 /*fromYear*/,
6263  1997 /*toYear*/,
6264  9 /*inMonth*/,
6265  7 /*onDayOfWeek*/,
6266  0 /*onDayOfMonth*/,
6267  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
6268  0 /*atTimeCode (0/15)*/,
6269  0 /*deltaMinutes*/,
6270  0 /*letterIndex ("")*/,
6271  },
6272  // Rule Cyprus 1981 1998 - Mar lastSun 0:00 1:00 S
6273  {
6274  1981 /*fromYear*/,
6275  1998 /*toYear*/,
6276  3 /*inMonth*/,
6277  7 /*onDayOfWeek*/,
6278  0 /*onDayOfMonth*/,
6279  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
6280  0 /*atTimeCode (0/15)*/,
6281  60 /*deltaMinutes*/,
6282  25 /*letterIndex ("S")*/,
6283  },
6284 
6285 };
6286 
6287 const complete::ZonePolicy kZonePolicyCyprus ACE_TIME_PROGMEM = {
6288  kZoneRulesCyprus /*rules*/,
6289  10 /*numRules*/,
6290 };
6291 
6292 //---------------------------------------------------------------------------
6293 // Policy name: Czech
6294 // Rules: 7
6295 //---------------------------------------------------------------------------
6296 
6297 static const complete::ZoneRule kZoneRulesCzech[] ACE_TIME_PROGMEM = {
6298  // Anchor: Rule Czech 1945 only - Oct 1 2:00s 0 -
6299  {
6300  -32767 /*fromYear*/,
6301  -32767 /*toYear*/,
6302  1 /*inMonth*/,
6303  0 /*onDayOfWeek*/,
6304  1 /*onDayOfMonth*/,
6305  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
6306  0 /*atTimeCode (0/15)*/,
6307  0 /*deltaMinutes*/,
6308  0 /*letterIndex ("")*/,
6309  },
6310  // Rule Czech 1945 only - Apr Mon>=1 2:00s 1:00 S
6311  {
6312  1945 /*fromYear*/,
6313  1945 /*toYear*/,
6314  4 /*inMonth*/,
6315  1 /*onDayOfWeek*/,
6316  1 /*onDayOfMonth*/,
6317  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
6318  480 /*atTimeCode (7200/15)*/,
6319  60 /*deltaMinutes*/,
6320  25 /*letterIndex ("S")*/,
6321  },
6322  // Rule Czech 1945 only - Oct 1 2:00s 0 -
6323  {
6324  1945 /*fromYear*/,
6325  1945 /*toYear*/,
6326  10 /*inMonth*/,
6327  0 /*onDayOfWeek*/,
6328  1 /*onDayOfMonth*/,
6329  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
6330  480 /*atTimeCode (7200/15)*/,
6331  0 /*deltaMinutes*/,
6332  0 /*letterIndex ("")*/,
6333  },
6334  // Rule Czech 1946 only - May 6 2:00s 1:00 S
6335  {
6336  1946 /*fromYear*/,
6337  1946 /*toYear*/,
6338  5 /*inMonth*/,
6339  0 /*onDayOfWeek*/,
6340  6 /*onDayOfMonth*/,
6341  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
6342  480 /*atTimeCode (7200/15)*/,
6343  60 /*deltaMinutes*/,
6344  25 /*letterIndex ("S")*/,
6345  },
6346  // Rule Czech 1946 1949 - Oct Sun>=1 2:00s 0 -
6347  {
6348  1946 /*fromYear*/,
6349  1949 /*toYear*/,
6350  10 /*inMonth*/,
6351  7 /*onDayOfWeek*/,
6352  1 /*onDayOfMonth*/,
6353  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
6354  480 /*atTimeCode (7200/15)*/,
6355  0 /*deltaMinutes*/,
6356  0 /*letterIndex ("")*/,
6357  },
6358  // Rule Czech 1947 1948 - Apr Sun>=15 2:00s 1:00 S
6359  {
6360  1947 /*fromYear*/,
6361  1948 /*toYear*/,
6362  4 /*inMonth*/,
6363  7 /*onDayOfWeek*/,
6364  15 /*onDayOfMonth*/,
6365  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
6366  480 /*atTimeCode (7200/15)*/,
6367  60 /*deltaMinutes*/,
6368  25 /*letterIndex ("S")*/,
6369  },
6370  // Rule Czech 1949 only - Apr 9 2:00s 1:00 S
6371  {
6372  1949 /*fromYear*/,
6373  1949 /*toYear*/,
6374  4 /*inMonth*/,
6375  0 /*onDayOfWeek*/,
6376  9 /*onDayOfMonth*/,
6377  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
6378  480 /*atTimeCode (7200/15)*/,
6379  60 /*deltaMinutes*/,
6380  25 /*letterIndex ("S")*/,
6381  },
6382 
6383 };
6384 
6385 const complete::ZonePolicy kZonePolicyCzech ACE_TIME_PROGMEM = {
6386  kZoneRulesCzech /*rules*/,
6387  7 /*numRules*/,
6388 };
6389 
6390 //---------------------------------------------------------------------------
6391 // Policy name: DR
6392 // Rules: 7
6393 //---------------------------------------------------------------------------
6394 
6395 static const complete::ZoneRule kZoneRulesDR[] ACE_TIME_PROGMEM = {
6396  // Anchor: Rule DR 1967 only - Feb 28 0:00 0 EST
6397  {
6398  -32767 /*fromYear*/,
6399  -32767 /*toYear*/,
6400  1 /*inMonth*/,
6401  0 /*onDayOfWeek*/,
6402  1 /*onDayOfMonth*/,
6403  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
6404  0 /*atTimeCode (0/15)*/,
6405  0 /*deltaMinutes*/,
6406  16 /*letterIndex ("EST")*/,
6407  },
6408  // Rule DR 1966 only - Oct 30 0:00 1:00 EDT
6409  {
6410  1966 /*fromYear*/,
6411  1966 /*toYear*/,
6412  10 /*inMonth*/,
6413  0 /*onDayOfWeek*/,
6414  30 /*onDayOfMonth*/,
6415  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
6416  0 /*atTimeCode (0/15)*/,
6417  60 /*deltaMinutes*/,
6418  15 /*letterIndex ("EDT")*/,
6419  },
6420  // Rule DR 1967 only - Feb 28 0:00 0 EST
6421  {
6422  1967 /*fromYear*/,
6423  1967 /*toYear*/,
6424  2 /*inMonth*/,
6425  0 /*onDayOfWeek*/,
6426  28 /*onDayOfMonth*/,
6427  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
6428  0 /*atTimeCode (0/15)*/,
6429  0 /*deltaMinutes*/,
6430  16 /*letterIndex ("EST")*/,
6431  },
6432  // Rule DR 1969 1973 - Oct lastSun 0:00 0:30 -0430
6433  {
6434  1969 /*fromYear*/,
6435  1973 /*toYear*/,
6436  10 /*inMonth*/,
6437  7 /*onDayOfWeek*/,
6438  0 /*onDayOfMonth*/,
6439  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
6440  0 /*atTimeCode (0/15)*/,
6441  30 /*deltaMinutes*/,
6442  4 /*letterIndex ("-0430")*/,
6443  },
6444  // Rule DR 1970 only - Feb 21 0:00 0 EST
6445  {
6446  1970 /*fromYear*/,
6447  1970 /*toYear*/,
6448  2 /*inMonth*/,
6449  0 /*onDayOfWeek*/,
6450  21 /*onDayOfMonth*/,
6451  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
6452  0 /*atTimeCode (0/15)*/,
6453  0 /*deltaMinutes*/,
6454  16 /*letterIndex ("EST")*/,
6455  },
6456  // Rule DR 1971 only - Jan 20 0:00 0 EST
6457  {
6458  1971 /*fromYear*/,
6459  1971 /*toYear*/,
6460  1 /*inMonth*/,
6461  0 /*onDayOfWeek*/,
6462  20 /*onDayOfMonth*/,
6463  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
6464  0 /*atTimeCode (0/15)*/,
6465  0 /*deltaMinutes*/,
6466  16 /*letterIndex ("EST")*/,
6467  },
6468  // Rule DR 1972 1974 - Jan 21 0:00 0 EST
6469  {
6470  1972 /*fromYear*/,
6471  1974 /*toYear*/,
6472  1 /*inMonth*/,
6473  0 /*onDayOfWeek*/,
6474  21 /*onDayOfMonth*/,
6475  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
6476  0 /*atTimeCode (0/15)*/,
6477  0 /*deltaMinutes*/,
6478  16 /*letterIndex ("EST")*/,
6479  },
6480 
6481 };
6482 
6483 const complete::ZonePolicy kZonePolicyDR ACE_TIME_PROGMEM = {
6484  kZoneRulesDR /*rules*/,
6485  7 /*numRules*/,
6486 };
6487 
6488 //---------------------------------------------------------------------------
6489 // Policy name: Denver
6490 // Rules: 6
6491 //---------------------------------------------------------------------------
6492 
6493 static const complete::ZoneRule kZoneRulesDenver[] ACE_TIME_PROGMEM = {
6494  // Anchor: Rule Denver 1920 only - Oct lastSun 2:00 0 S
6495  {
6496  -32767 /*fromYear*/,
6497  -32767 /*toYear*/,
6498  1 /*inMonth*/,
6499  0 /*onDayOfWeek*/,
6500  1 /*onDayOfMonth*/,
6501  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
6502  0 /*atTimeCode (0/15)*/,
6503  0 /*deltaMinutes*/,
6504  25 /*letterIndex ("S")*/,
6505  },
6506  // Rule Denver 1920 1921 - Mar lastSun 2:00 1:00 D
6507  {
6508  1920 /*fromYear*/,
6509  1921 /*toYear*/,
6510  3 /*inMonth*/,
6511  7 /*onDayOfWeek*/,
6512  0 /*onDayOfMonth*/,
6513  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
6514  480 /*atTimeCode (7200/15)*/,
6515  60 /*deltaMinutes*/,
6516  13 /*letterIndex ("D")*/,
6517  },
6518  // Rule Denver 1920 only - Oct lastSun 2:00 0 S
6519  {
6520  1920 /*fromYear*/,
6521  1920 /*toYear*/,
6522  10 /*inMonth*/,
6523  7 /*onDayOfWeek*/,
6524  0 /*onDayOfMonth*/,
6525  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
6526  480 /*atTimeCode (7200/15)*/,
6527  0 /*deltaMinutes*/,
6528  25 /*letterIndex ("S")*/,
6529  },
6530  // Rule Denver 1921 only - May 22 2:00 0 S
6531  {
6532  1921 /*fromYear*/,
6533  1921 /*toYear*/,
6534  5 /*inMonth*/,
6535  0 /*onDayOfWeek*/,
6536  22 /*onDayOfMonth*/,
6537  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
6538  480 /*atTimeCode (7200/15)*/,
6539  0 /*deltaMinutes*/,
6540  25 /*letterIndex ("S")*/,
6541  },
6542  // Rule Denver 1965 1966 - Apr lastSun 2:00 1:00 D
6543  {
6544  1965 /*fromYear*/,
6545  1966 /*toYear*/,
6546  4 /*inMonth*/,
6547  7 /*onDayOfWeek*/,
6548  0 /*onDayOfMonth*/,
6549  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
6550  480 /*atTimeCode (7200/15)*/,
6551  60 /*deltaMinutes*/,
6552  13 /*letterIndex ("D")*/,
6553  },
6554  // Rule Denver 1965 1966 - Oct lastSun 2:00 0 S
6555  {
6556  1965 /*fromYear*/,
6557  1966 /*toYear*/,
6558  10 /*inMonth*/,
6559  7 /*onDayOfWeek*/,
6560  0 /*onDayOfMonth*/,
6561  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
6562  480 /*atTimeCode (7200/15)*/,
6563  0 /*deltaMinutes*/,
6564  25 /*letterIndex ("S")*/,
6565  },
6566 
6567 };
6568 
6569 const complete::ZonePolicy kZonePolicyDenver ACE_TIME_PROGMEM = {
6570  kZoneRulesDenver /*rules*/,
6571  6 /*numRules*/,
6572 };
6573 
6574 //---------------------------------------------------------------------------
6575 // Policy name: Detroit
6576 // Rules: 3
6577 //---------------------------------------------------------------------------
6578 
6579 static const complete::ZoneRule kZoneRulesDetroit[] ACE_TIME_PROGMEM = {
6580  // Anchor: Rule Detroit 1948 only - Sep lastSun 2:00 0 S
6581  {
6582  -32767 /*fromYear*/,
6583  -32767 /*toYear*/,
6584  1 /*inMonth*/,
6585  0 /*onDayOfWeek*/,
6586  1 /*onDayOfMonth*/,
6587  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
6588  0 /*atTimeCode (0/15)*/,
6589  0 /*deltaMinutes*/,
6590  25 /*letterIndex ("S")*/,
6591  },
6592  // Rule Detroit 1948 only - Apr lastSun 2:00 1:00 D
6593  {
6594  1948 /*fromYear*/,
6595  1948 /*toYear*/,
6596  4 /*inMonth*/,
6597  7 /*onDayOfWeek*/,
6598  0 /*onDayOfMonth*/,
6599  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
6600  480 /*atTimeCode (7200/15)*/,
6601  60 /*deltaMinutes*/,
6602  13 /*letterIndex ("D")*/,
6603  },
6604  // Rule Detroit 1948 only - Sep lastSun 2:00 0 S
6605  {
6606  1948 /*fromYear*/,
6607  1948 /*toYear*/,
6608  9 /*inMonth*/,
6609  7 /*onDayOfWeek*/,
6610  0 /*onDayOfMonth*/,
6611  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
6612  480 /*atTimeCode (7200/15)*/,
6613  0 /*deltaMinutes*/,
6614  25 /*letterIndex ("S")*/,
6615  },
6616 
6617 };
6618 
6619 const complete::ZonePolicy kZonePolicyDetroit ACE_TIME_PROGMEM = {
6620  kZoneRulesDetroit /*rules*/,
6621  3 /*numRules*/,
6622 };
6623 
6624 //---------------------------------------------------------------------------
6625 // Policy name: Dhaka
6626 // Rules: 3
6627 //---------------------------------------------------------------------------
6628 
6629 static const complete::ZoneRule kZoneRulesDhaka[] ACE_TIME_PROGMEM = {
6630  // Anchor: Rule Dhaka 2009 only - Dec 31 24:00 0 -
6631  {
6632  -32767 /*fromYear*/,
6633  -32767 /*toYear*/,
6634  1 /*inMonth*/,
6635  0 /*onDayOfWeek*/,
6636  1 /*onDayOfMonth*/,
6637  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
6638  0 /*atTimeCode (0/15)*/,
6639  0 /*deltaMinutes*/,
6640  0 /*letterIndex ("")*/,
6641  },
6642  // Rule Dhaka 2009 only - Jun 19 23:00 1:00 -
6643  {
6644  2009 /*fromYear*/,
6645  2009 /*toYear*/,
6646  6 /*inMonth*/,
6647  0 /*onDayOfWeek*/,
6648  19 /*onDayOfMonth*/,
6649  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
6650  5520 /*atTimeCode (82800/15)*/,
6651  60 /*deltaMinutes*/,
6652  0 /*letterIndex ("")*/,
6653  },
6654  // Rule Dhaka 2009 only - Dec 31 24:00 0 -
6655  {
6656  2009 /*fromYear*/,
6657  2009 /*toYear*/,
6658  12 /*inMonth*/,
6659  0 /*onDayOfWeek*/,
6660  31 /*onDayOfMonth*/,
6661  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
6662  5760 /*atTimeCode (86400/15)*/,
6663  0 /*deltaMinutes*/,
6664  0 /*letterIndex ("")*/,
6665  },
6666 
6667 };
6668 
6669 const complete::ZonePolicy kZonePolicyDhaka ACE_TIME_PROGMEM = {
6670  kZoneRulesDhaka /*rules*/,
6671  3 /*numRules*/,
6672 };
6673 
6674 //---------------------------------------------------------------------------
6675 // Policy name: E-Eur
6676 // Rules: 7
6677 //---------------------------------------------------------------------------
6678 
6679 static const complete::ZoneRule kZoneRulesE_Eur[] ACE_TIME_PROGMEM = {
6680  // Anchor: Rule E-Eur 1977 only - Sep lastSun 0:00 0 -
6681  {
6682  -32767 /*fromYear*/,
6683  -32767 /*toYear*/,
6684  1 /*inMonth*/,
6685  0 /*onDayOfWeek*/,
6686  1 /*onDayOfMonth*/,
6687  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
6688  0 /*atTimeCode (0/15)*/,
6689  0 /*deltaMinutes*/,
6690  0 /*letterIndex ("")*/,
6691  },
6692  // Rule E-Eur 1977 1980 - Apr Sun>=1 0:00 1:00 S
6693  {
6694  1977 /*fromYear*/,
6695  1980 /*toYear*/,
6696  4 /*inMonth*/,
6697  7 /*onDayOfWeek*/,
6698  1 /*onDayOfMonth*/,
6699  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
6700  0 /*atTimeCode (0/15)*/,
6701  60 /*deltaMinutes*/,
6702  25 /*letterIndex ("S")*/,
6703  },
6704  // Rule E-Eur 1977 only - Sep lastSun 0:00 0 -
6705  {
6706  1977 /*fromYear*/,
6707  1977 /*toYear*/,
6708  9 /*inMonth*/,
6709  7 /*onDayOfWeek*/,
6710  0 /*onDayOfMonth*/,
6711  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
6712  0 /*atTimeCode (0/15)*/,
6713  0 /*deltaMinutes*/,
6714  0 /*letterIndex ("")*/,
6715  },
6716  // Rule E-Eur 1978 only - Oct 1 0:00 0 -
6717  {
6718  1978 /*fromYear*/,
6719  1978 /*toYear*/,
6720  10 /*inMonth*/,
6721  0 /*onDayOfWeek*/,
6722  1 /*onDayOfMonth*/,
6723  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
6724  0 /*atTimeCode (0/15)*/,
6725  0 /*deltaMinutes*/,
6726  0 /*letterIndex ("")*/,
6727  },
6728  // Rule E-Eur 1979 1995 - Sep lastSun 0:00 0 -
6729  {
6730  1979 /*fromYear*/,
6731  1995 /*toYear*/,
6732  9 /*inMonth*/,
6733  7 /*onDayOfWeek*/,
6734  0 /*onDayOfMonth*/,
6735  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
6736  0 /*atTimeCode (0/15)*/,
6737  0 /*deltaMinutes*/,
6738  0 /*letterIndex ("")*/,
6739  },
6740  // Rule E-Eur 1981 max - Mar lastSun 0:00 1:00 S
6741  {
6742  1981 /*fromYear*/,
6743  32766 /*toYear*/,
6744  3 /*inMonth*/,
6745  7 /*onDayOfWeek*/,
6746  0 /*onDayOfMonth*/,
6747  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
6748  0 /*atTimeCode (0/15)*/,
6749  60 /*deltaMinutes*/,
6750  25 /*letterIndex ("S")*/,
6751  },
6752  // Rule E-Eur 1996 max - Oct lastSun 0:00 0 -
6753  {
6754  1996 /*fromYear*/,
6755  32766 /*toYear*/,
6756  10 /*inMonth*/,
6757  7 /*onDayOfWeek*/,
6758  0 /*onDayOfMonth*/,
6759  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
6760  0 /*atTimeCode (0/15)*/,
6761  0 /*deltaMinutes*/,
6762  0 /*letterIndex ("")*/,
6763  },
6764 
6765 };
6766 
6767 const complete::ZonePolicy kZonePolicyE_Eur ACE_TIME_PROGMEM = {
6768  kZoneRulesE_Eur /*rules*/,
6769  7 /*numRules*/,
6770 };
6771 
6772 //---------------------------------------------------------------------------
6773 // Policy name: E-EurAsia
6774 // Rules: 4
6775 //---------------------------------------------------------------------------
6776 
6777 static const complete::ZoneRule kZoneRulesE_EurAsia[] ACE_TIME_PROGMEM = {
6778  // Anchor: Rule E-EurAsia 1979 1995 - Sep lastSun 0:00 0 -
6779  {
6780  -32767 /*fromYear*/,
6781  -32767 /*toYear*/,
6782  1 /*inMonth*/,
6783  0 /*onDayOfWeek*/,
6784  1 /*onDayOfMonth*/,
6785  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
6786  0 /*atTimeCode (0/15)*/,
6787  0 /*deltaMinutes*/,
6788  0 /*letterIndex ("")*/,
6789  },
6790  // Rule E-EurAsia 1981 max - Mar lastSun 0:00 1:00 -
6791  {
6792  1981 /*fromYear*/,
6793  32766 /*toYear*/,
6794  3 /*inMonth*/,
6795  7 /*onDayOfWeek*/,
6796  0 /*onDayOfMonth*/,
6797  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
6798  0 /*atTimeCode (0/15)*/,
6799  60 /*deltaMinutes*/,
6800  0 /*letterIndex ("")*/,
6801  },
6802  // Rule E-EurAsia 1979 1995 - Sep lastSun 0:00 0 -
6803  {
6804  1979 /*fromYear*/,
6805  1995 /*toYear*/,
6806  9 /*inMonth*/,
6807  7 /*onDayOfWeek*/,
6808  0 /*onDayOfMonth*/,
6809  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
6810  0 /*atTimeCode (0/15)*/,
6811  0 /*deltaMinutes*/,
6812  0 /*letterIndex ("")*/,
6813  },
6814  // Rule E-EurAsia 1996 max - Oct lastSun 0:00 0 -
6815  {
6816  1996 /*fromYear*/,
6817  32766 /*toYear*/,
6818  10 /*inMonth*/,
6819  7 /*onDayOfWeek*/,
6820  0 /*onDayOfMonth*/,
6821  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
6822  0 /*atTimeCode (0/15)*/,
6823  0 /*deltaMinutes*/,
6824  0 /*letterIndex ("")*/,
6825  },
6826 
6827 };
6828 
6829 const complete::ZonePolicy kZonePolicyE_EurAsia ACE_TIME_PROGMEM = {
6830  kZoneRulesE_EurAsia /*rules*/,
6831  4 /*numRules*/,
6832 };
6833 
6834 //---------------------------------------------------------------------------
6835 // Policy name: EU
6836 // Rules: 7
6837 //---------------------------------------------------------------------------
6838 
6839 static const complete::ZoneRule kZoneRulesEU[] ACE_TIME_PROGMEM = {
6840  // Anchor: Rule EU 1977 only - Sep lastSun 1:00u 0 -
6841  {
6842  -32767 /*fromYear*/,
6843  -32767 /*toYear*/,
6844  1 /*inMonth*/,
6845  0 /*onDayOfWeek*/,
6846  1 /*onDayOfMonth*/,
6847  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
6848  0 /*atTimeCode (0/15)*/,
6849  0 /*deltaMinutes*/,
6850  0 /*letterIndex ("")*/,
6851  },
6852  // Rule EU 1977 1980 - Apr Sun>=1 1:00u 1:00 S
6853  {
6854  1977 /*fromYear*/,
6855  1980 /*toYear*/,
6856  4 /*inMonth*/,
6857  7 /*onDayOfWeek*/,
6858  1 /*onDayOfMonth*/,
6859  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
6860  240 /*atTimeCode (3600/15)*/,
6861  60 /*deltaMinutes*/,
6862  25 /*letterIndex ("S")*/,
6863  },
6864  // Rule EU 1977 only - Sep lastSun 1:00u 0 -
6865  {
6866  1977 /*fromYear*/,
6867  1977 /*toYear*/,
6868  9 /*inMonth*/,
6869  7 /*onDayOfWeek*/,
6870  0 /*onDayOfMonth*/,
6871  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
6872  240 /*atTimeCode (3600/15)*/,
6873  0 /*deltaMinutes*/,
6874  0 /*letterIndex ("")*/,
6875  },
6876  // Rule EU 1978 only - Oct 1 1:00u 0 -
6877  {
6878  1978 /*fromYear*/,
6879  1978 /*toYear*/,
6880  10 /*inMonth*/,
6881  0 /*onDayOfWeek*/,
6882  1 /*onDayOfMonth*/,
6883  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
6884  240 /*atTimeCode (3600/15)*/,
6885  0 /*deltaMinutes*/,
6886  0 /*letterIndex ("")*/,
6887  },
6888  // Rule EU 1979 1995 - Sep lastSun 1:00u 0 -
6889  {
6890  1979 /*fromYear*/,
6891  1995 /*toYear*/,
6892  9 /*inMonth*/,
6893  7 /*onDayOfWeek*/,
6894  0 /*onDayOfMonth*/,
6895  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
6896  240 /*atTimeCode (3600/15)*/,
6897  0 /*deltaMinutes*/,
6898  0 /*letterIndex ("")*/,
6899  },
6900  // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
6901  {
6902  1981 /*fromYear*/,
6903  32766 /*toYear*/,
6904  3 /*inMonth*/,
6905  7 /*onDayOfWeek*/,
6906  0 /*onDayOfMonth*/,
6907  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
6908  240 /*atTimeCode (3600/15)*/,
6909  60 /*deltaMinutes*/,
6910  25 /*letterIndex ("S")*/,
6911  },
6912  // Rule EU 1996 max - Oct lastSun 1:00u 0 -
6913  {
6914  1996 /*fromYear*/,
6915  32766 /*toYear*/,
6916  10 /*inMonth*/,
6917  7 /*onDayOfWeek*/,
6918  0 /*onDayOfMonth*/,
6919  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
6920  240 /*atTimeCode (3600/15)*/,
6921  0 /*deltaMinutes*/,
6922  0 /*letterIndex ("")*/,
6923  },
6924 
6925 };
6926 
6927 const complete::ZonePolicy kZonePolicyEU ACE_TIME_PROGMEM = {
6928  kZoneRulesEU /*rules*/,
6929  7 /*numRules*/,
6930 };
6931 
6932 //---------------------------------------------------------------------------
6933 // Policy name: EUAsia
6934 // Rules: 4
6935 //---------------------------------------------------------------------------
6936 
6937 static const complete::ZoneRule kZoneRulesEUAsia[] ACE_TIME_PROGMEM = {
6938  // Anchor: Rule EUAsia 1979 1995 - Sep lastSun 1:00u 0 -
6939  {
6940  -32767 /*fromYear*/,
6941  -32767 /*toYear*/,
6942  1 /*inMonth*/,
6943  0 /*onDayOfWeek*/,
6944  1 /*onDayOfMonth*/,
6945  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
6946  0 /*atTimeCode (0/15)*/,
6947  0 /*deltaMinutes*/,
6948  0 /*letterIndex ("")*/,
6949  },
6950  // Rule EUAsia 1981 max - Mar lastSun 1:00u 1:00 S
6951  {
6952  1981 /*fromYear*/,
6953  32766 /*toYear*/,
6954  3 /*inMonth*/,
6955  7 /*onDayOfWeek*/,
6956  0 /*onDayOfMonth*/,
6957  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
6958  240 /*atTimeCode (3600/15)*/,
6959  60 /*deltaMinutes*/,
6960  25 /*letterIndex ("S")*/,
6961  },
6962  // Rule EUAsia 1979 1995 - Sep lastSun 1:00u 0 -
6963  {
6964  1979 /*fromYear*/,
6965  1995 /*toYear*/,
6966  9 /*inMonth*/,
6967  7 /*onDayOfWeek*/,
6968  0 /*onDayOfMonth*/,
6969  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
6970  240 /*atTimeCode (3600/15)*/,
6971  0 /*deltaMinutes*/,
6972  0 /*letterIndex ("")*/,
6973  },
6974  // Rule EUAsia 1996 max - Oct lastSun 1:00u 0 -
6975  {
6976  1996 /*fromYear*/,
6977  32766 /*toYear*/,
6978  10 /*inMonth*/,
6979  7 /*onDayOfWeek*/,
6980  0 /*onDayOfMonth*/,
6981  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
6982  240 /*atTimeCode (3600/15)*/,
6983  0 /*deltaMinutes*/,
6984  0 /*letterIndex ("")*/,
6985  },
6986 
6987 };
6988 
6989 const complete::ZonePolicy kZonePolicyEUAsia ACE_TIME_PROGMEM = {
6990  kZoneRulesEUAsia /*rules*/,
6991  4 /*numRules*/,
6992 };
6993 
6994 //---------------------------------------------------------------------------
6995 // Policy name: Ecuador
6996 // Rules: 3
6997 //---------------------------------------------------------------------------
6998 
6999 static const complete::ZoneRule kZoneRulesEcuador[] ACE_TIME_PROGMEM = {
7000  // Anchor: Rule Ecuador 1993 only - Feb 5 0:00 0 -
7001  {
7002  -32767 /*fromYear*/,
7003  -32767 /*toYear*/,
7004  1 /*inMonth*/,
7005  0 /*onDayOfWeek*/,
7006  1 /*onDayOfMonth*/,
7007  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7008  0 /*atTimeCode (0/15)*/,
7009  0 /*deltaMinutes*/,
7010  0 /*letterIndex ("")*/,
7011  },
7012  // Rule Ecuador 1992 only - Nov 28 0:00 1:00 -
7013  {
7014  1992 /*fromYear*/,
7015  1992 /*toYear*/,
7016  11 /*inMonth*/,
7017  0 /*onDayOfWeek*/,
7018  28 /*onDayOfMonth*/,
7019  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7020  0 /*atTimeCode (0/15)*/,
7021  60 /*deltaMinutes*/,
7022  0 /*letterIndex ("")*/,
7023  },
7024  // Rule Ecuador 1993 only - Feb 5 0:00 0 -
7025  {
7026  1993 /*fromYear*/,
7027  1993 /*toYear*/,
7028  2 /*inMonth*/,
7029  0 /*onDayOfWeek*/,
7030  5 /*onDayOfMonth*/,
7031  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7032  0 /*atTimeCode (0/15)*/,
7033  0 /*deltaMinutes*/,
7034  0 /*letterIndex ("")*/,
7035  },
7036 
7037 };
7038 
7039 const complete::ZonePolicy kZonePolicyEcuador ACE_TIME_PROGMEM = {
7040  kZoneRulesEcuador /*rules*/,
7041  3 /*numRules*/,
7042 };
7043 
7044 //---------------------------------------------------------------------------
7045 // Policy name: Edm
7046 // Rules: 14
7047 //---------------------------------------------------------------------------
7048 
7049 static const complete::ZoneRule kZoneRulesEdm[] ACE_TIME_PROGMEM = {
7050  // Anchor: Rule Edm 1918 only - Oct 27 2:00 0 S
7051  {
7052  -32767 /*fromYear*/,
7053  -32767 /*toYear*/,
7054  1 /*inMonth*/,
7055  0 /*onDayOfWeek*/,
7056  1 /*onDayOfMonth*/,
7057  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7058  0 /*atTimeCode (0/15)*/,
7059  0 /*deltaMinutes*/,
7060  25 /*letterIndex ("S")*/,
7061  },
7062  // Rule Edm 1918 1919 - Apr Sun>=8 2:00 1:00 D
7063  {
7064  1918 /*fromYear*/,
7065  1919 /*toYear*/,
7066  4 /*inMonth*/,
7067  7 /*onDayOfWeek*/,
7068  8 /*onDayOfMonth*/,
7069  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7070  480 /*atTimeCode (7200/15)*/,
7071  60 /*deltaMinutes*/,
7072  13 /*letterIndex ("D")*/,
7073  },
7074  // Rule Edm 1918 only - Oct 27 2:00 0 S
7075  {
7076  1918 /*fromYear*/,
7077  1918 /*toYear*/,
7078  10 /*inMonth*/,
7079  0 /*onDayOfWeek*/,
7080  27 /*onDayOfMonth*/,
7081  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7082  480 /*atTimeCode (7200/15)*/,
7083  0 /*deltaMinutes*/,
7084  25 /*letterIndex ("S")*/,
7085  },
7086  // Rule Edm 1919 only - May 27 2:00 0 S
7087  {
7088  1919 /*fromYear*/,
7089  1919 /*toYear*/,
7090  5 /*inMonth*/,
7091  0 /*onDayOfWeek*/,
7092  27 /*onDayOfMonth*/,
7093  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7094  480 /*atTimeCode (7200/15)*/,
7095  0 /*deltaMinutes*/,
7096  25 /*letterIndex ("S")*/,
7097  },
7098  // Rule Edm 1920 1923 - Apr lastSun 2:00 1:00 D
7099  {
7100  1920 /*fromYear*/,
7101  1923 /*toYear*/,
7102  4 /*inMonth*/,
7103  7 /*onDayOfWeek*/,
7104  0 /*onDayOfMonth*/,
7105  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7106  480 /*atTimeCode (7200/15)*/,
7107  60 /*deltaMinutes*/,
7108  13 /*letterIndex ("D")*/,
7109  },
7110  // Rule Edm 1920 only - Oct lastSun 2:00 0 S
7111  {
7112  1920 /*fromYear*/,
7113  1920 /*toYear*/,
7114  10 /*inMonth*/,
7115  7 /*onDayOfWeek*/,
7116  0 /*onDayOfMonth*/,
7117  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7118  480 /*atTimeCode (7200/15)*/,
7119  0 /*deltaMinutes*/,
7120  25 /*letterIndex ("S")*/,
7121  },
7122  // Rule Edm 1921 1923 - Sep lastSun 2:00 0 S
7123  {
7124  1921 /*fromYear*/,
7125  1923 /*toYear*/,
7126  9 /*inMonth*/,
7127  7 /*onDayOfWeek*/,
7128  0 /*onDayOfMonth*/,
7129  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7130  480 /*atTimeCode (7200/15)*/,
7131  0 /*deltaMinutes*/,
7132  25 /*letterIndex ("S")*/,
7133  },
7134  // Rule Edm 1942 only - Feb 9 2:00 1:00 W
7135  {
7136  1942 /*fromYear*/,
7137  1942 /*toYear*/,
7138  2 /*inMonth*/,
7139  0 /*onDayOfWeek*/,
7140  9 /*onDayOfMonth*/,
7141  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7142  480 /*atTimeCode (7200/15)*/,
7143  60 /*deltaMinutes*/,
7144  26 /*letterIndex ("W")*/,
7145  },
7146  // Rule Edm 1945 only - Aug 14 23:00u 1:00 P
7147  {
7148  1945 /*fromYear*/,
7149  1945 /*toYear*/,
7150  8 /*inMonth*/,
7151  0 /*onDayOfWeek*/,
7152  14 /*onDayOfMonth*/,
7153  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
7154  5520 /*atTimeCode (82800/15)*/,
7155  60 /*deltaMinutes*/,
7156  24 /*letterIndex ("P")*/,
7157  },
7158  // Rule Edm 1945 only - Sep lastSun 2:00 0 S
7159  {
7160  1945 /*fromYear*/,
7161  1945 /*toYear*/,
7162  9 /*inMonth*/,
7163  7 /*onDayOfWeek*/,
7164  0 /*onDayOfMonth*/,
7165  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7166  480 /*atTimeCode (7200/15)*/,
7167  0 /*deltaMinutes*/,
7168  25 /*letterIndex ("S")*/,
7169  },
7170  // Rule Edm 1947 only - Apr lastSun 2:00 1:00 D
7171  {
7172  1947 /*fromYear*/,
7173  1947 /*toYear*/,
7174  4 /*inMonth*/,
7175  7 /*onDayOfWeek*/,
7176  0 /*onDayOfMonth*/,
7177  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7178  480 /*atTimeCode (7200/15)*/,
7179  60 /*deltaMinutes*/,
7180  13 /*letterIndex ("D")*/,
7181  },
7182  // Rule Edm 1947 only - Sep lastSun 2:00 0 S
7183  {
7184  1947 /*fromYear*/,
7185  1947 /*toYear*/,
7186  9 /*inMonth*/,
7187  7 /*onDayOfWeek*/,
7188  0 /*onDayOfMonth*/,
7189  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7190  480 /*atTimeCode (7200/15)*/,
7191  0 /*deltaMinutes*/,
7192  25 /*letterIndex ("S")*/,
7193  },
7194  // Rule Edm 1972 1986 - Apr lastSun 2:00 1:00 D
7195  {
7196  1972 /*fromYear*/,
7197  1986 /*toYear*/,
7198  4 /*inMonth*/,
7199  7 /*onDayOfWeek*/,
7200  0 /*onDayOfMonth*/,
7201  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7202  480 /*atTimeCode (7200/15)*/,
7203  60 /*deltaMinutes*/,
7204  13 /*letterIndex ("D")*/,
7205  },
7206  // Rule Edm 1972 2006 - Oct lastSun 2:00 0 S
7207  {
7208  1972 /*fromYear*/,
7209  2006 /*toYear*/,
7210  10 /*inMonth*/,
7211  7 /*onDayOfWeek*/,
7212  0 /*onDayOfMonth*/,
7213  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7214  480 /*atTimeCode (7200/15)*/,
7215  0 /*deltaMinutes*/,
7216  25 /*letterIndex ("S")*/,
7217  },
7218 
7219 };
7220 
7221 const complete::ZonePolicy kZonePolicyEdm ACE_TIME_PROGMEM = {
7222  kZoneRulesEdm /*rules*/,
7223  14 /*numRules*/,
7224 };
7225 
7226 //---------------------------------------------------------------------------
7227 // Policy name: Egypt
7228 // Rules: 35
7229 //---------------------------------------------------------------------------
7230 
7231 static const complete::ZoneRule kZoneRulesEgypt[] ACE_TIME_PROGMEM = {
7232  // Anchor: Rule Egypt 1940 only - Oct 1 0:00 0 -
7233  {
7234  -32767 /*fromYear*/,
7235  -32767 /*toYear*/,
7236  1 /*inMonth*/,
7237  0 /*onDayOfWeek*/,
7238  1 /*onDayOfMonth*/,
7239  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7240  0 /*atTimeCode (0/15)*/,
7241  0 /*deltaMinutes*/,
7242  0 /*letterIndex ("")*/,
7243  },
7244  // Rule Egypt 1940 only - Jul 15 0:00 1:00 S
7245  {
7246  1940 /*fromYear*/,
7247  1940 /*toYear*/,
7248  7 /*inMonth*/,
7249  0 /*onDayOfWeek*/,
7250  15 /*onDayOfMonth*/,
7251  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7252  0 /*atTimeCode (0/15)*/,
7253  60 /*deltaMinutes*/,
7254  25 /*letterIndex ("S")*/,
7255  },
7256  // Rule Egypt 1940 only - Oct 1 0:00 0 -
7257  {
7258  1940 /*fromYear*/,
7259  1940 /*toYear*/,
7260  10 /*inMonth*/,
7261  0 /*onDayOfWeek*/,
7262  1 /*onDayOfMonth*/,
7263  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7264  0 /*atTimeCode (0/15)*/,
7265  0 /*deltaMinutes*/,
7266  0 /*letterIndex ("")*/,
7267  },
7268  // Rule Egypt 1941 only - Apr 15 0:00 1:00 S
7269  {
7270  1941 /*fromYear*/,
7271  1941 /*toYear*/,
7272  4 /*inMonth*/,
7273  0 /*onDayOfWeek*/,
7274  15 /*onDayOfMonth*/,
7275  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7276  0 /*atTimeCode (0/15)*/,
7277  60 /*deltaMinutes*/,
7278  25 /*letterIndex ("S")*/,
7279  },
7280  // Rule Egypt 1941 only - Sep 16 0:00 0 -
7281  {
7282  1941 /*fromYear*/,
7283  1941 /*toYear*/,
7284  9 /*inMonth*/,
7285  0 /*onDayOfWeek*/,
7286  16 /*onDayOfMonth*/,
7287  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7288  0 /*atTimeCode (0/15)*/,
7289  0 /*deltaMinutes*/,
7290  0 /*letterIndex ("")*/,
7291  },
7292  // Rule Egypt 1942 1944 - Apr 1 0:00 1:00 S
7293  {
7294  1942 /*fromYear*/,
7295  1944 /*toYear*/,
7296  4 /*inMonth*/,
7297  0 /*onDayOfWeek*/,
7298  1 /*onDayOfMonth*/,
7299  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7300  0 /*atTimeCode (0/15)*/,
7301  60 /*deltaMinutes*/,
7302  25 /*letterIndex ("S")*/,
7303  },
7304  // Rule Egypt 1942 only - Oct 27 0:00 0 -
7305  {
7306  1942 /*fromYear*/,
7307  1942 /*toYear*/,
7308  10 /*inMonth*/,
7309  0 /*onDayOfWeek*/,
7310  27 /*onDayOfMonth*/,
7311  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7312  0 /*atTimeCode (0/15)*/,
7313  0 /*deltaMinutes*/,
7314  0 /*letterIndex ("")*/,
7315  },
7316  // Rule Egypt 1943 1945 - Nov 1 0:00 0 -
7317  {
7318  1943 /*fromYear*/,
7319  1945 /*toYear*/,
7320  11 /*inMonth*/,
7321  0 /*onDayOfWeek*/,
7322  1 /*onDayOfMonth*/,
7323  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7324  0 /*atTimeCode (0/15)*/,
7325  0 /*deltaMinutes*/,
7326  0 /*letterIndex ("")*/,
7327  },
7328  // Rule Egypt 1945 only - Apr 16 0:00 1:00 S
7329  {
7330  1945 /*fromYear*/,
7331  1945 /*toYear*/,
7332  4 /*inMonth*/,
7333  0 /*onDayOfWeek*/,
7334  16 /*onDayOfMonth*/,
7335  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7336  0 /*atTimeCode (0/15)*/,
7337  60 /*deltaMinutes*/,
7338  25 /*letterIndex ("S")*/,
7339  },
7340  // Rule Egypt 1957 only - May 10 0:00 1:00 S
7341  {
7342  1957 /*fromYear*/,
7343  1957 /*toYear*/,
7344  5 /*inMonth*/,
7345  0 /*onDayOfWeek*/,
7346  10 /*onDayOfMonth*/,
7347  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7348  0 /*atTimeCode (0/15)*/,
7349  60 /*deltaMinutes*/,
7350  25 /*letterIndex ("S")*/,
7351  },
7352  // Rule Egypt 1957 1958 - Oct 1 0:00 0 -
7353  {
7354  1957 /*fromYear*/,
7355  1958 /*toYear*/,
7356  10 /*inMonth*/,
7357  0 /*onDayOfWeek*/,
7358  1 /*onDayOfMonth*/,
7359  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7360  0 /*atTimeCode (0/15)*/,
7361  0 /*deltaMinutes*/,
7362  0 /*letterIndex ("")*/,
7363  },
7364  // Rule Egypt 1958 only - May 1 0:00 1:00 S
7365  {
7366  1958 /*fromYear*/,
7367  1958 /*toYear*/,
7368  5 /*inMonth*/,
7369  0 /*onDayOfWeek*/,
7370  1 /*onDayOfMonth*/,
7371  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7372  0 /*atTimeCode (0/15)*/,
7373  60 /*deltaMinutes*/,
7374  25 /*letterIndex ("S")*/,
7375  },
7376  // Rule Egypt 1959 1981 - May 1 1:00 1:00 S
7377  {
7378  1959 /*fromYear*/,
7379  1981 /*toYear*/,
7380  5 /*inMonth*/,
7381  0 /*onDayOfWeek*/,
7382  1 /*onDayOfMonth*/,
7383  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7384  240 /*atTimeCode (3600/15)*/,
7385  60 /*deltaMinutes*/,
7386  25 /*letterIndex ("S")*/,
7387  },
7388  // Rule Egypt 1959 1965 - Sep 30 3:00 0 -
7389  {
7390  1959 /*fromYear*/,
7391  1965 /*toYear*/,
7392  9 /*inMonth*/,
7393  0 /*onDayOfWeek*/,
7394  30 /*onDayOfMonth*/,
7395  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7396  720 /*atTimeCode (10800/15)*/,
7397  0 /*deltaMinutes*/,
7398  0 /*letterIndex ("")*/,
7399  },
7400  // Rule Egypt 1966 1994 - Oct 1 3:00 0 -
7401  {
7402  1966 /*fromYear*/,
7403  1994 /*toYear*/,
7404  10 /*inMonth*/,
7405  0 /*onDayOfWeek*/,
7406  1 /*onDayOfMonth*/,
7407  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7408  720 /*atTimeCode (10800/15)*/,
7409  0 /*deltaMinutes*/,
7410  0 /*letterIndex ("")*/,
7411  },
7412  // Rule Egypt 1982 only - Jul 25 1:00 1:00 S
7413  {
7414  1982 /*fromYear*/,
7415  1982 /*toYear*/,
7416  7 /*inMonth*/,
7417  0 /*onDayOfWeek*/,
7418  25 /*onDayOfMonth*/,
7419  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7420  240 /*atTimeCode (3600/15)*/,
7421  60 /*deltaMinutes*/,
7422  25 /*letterIndex ("S")*/,
7423  },
7424  // Rule Egypt 1983 only - Jul 12 1:00 1:00 S
7425  {
7426  1983 /*fromYear*/,
7427  1983 /*toYear*/,
7428  7 /*inMonth*/,
7429  0 /*onDayOfWeek*/,
7430  12 /*onDayOfMonth*/,
7431  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7432  240 /*atTimeCode (3600/15)*/,
7433  60 /*deltaMinutes*/,
7434  25 /*letterIndex ("S")*/,
7435  },
7436  // Rule Egypt 1984 1988 - May 1 1:00 1:00 S
7437  {
7438  1984 /*fromYear*/,
7439  1988 /*toYear*/,
7440  5 /*inMonth*/,
7441  0 /*onDayOfWeek*/,
7442  1 /*onDayOfMonth*/,
7443  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7444  240 /*atTimeCode (3600/15)*/,
7445  60 /*deltaMinutes*/,
7446  25 /*letterIndex ("S")*/,
7447  },
7448  // Rule Egypt 1989 only - May 6 1:00 1:00 S
7449  {
7450  1989 /*fromYear*/,
7451  1989 /*toYear*/,
7452  5 /*inMonth*/,
7453  0 /*onDayOfWeek*/,
7454  6 /*onDayOfMonth*/,
7455  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7456  240 /*atTimeCode (3600/15)*/,
7457  60 /*deltaMinutes*/,
7458  25 /*letterIndex ("S")*/,
7459  },
7460  // Rule Egypt 1990 1994 - May 1 1:00 1:00 S
7461  {
7462  1990 /*fromYear*/,
7463  1994 /*toYear*/,
7464  5 /*inMonth*/,
7465  0 /*onDayOfWeek*/,
7466  1 /*onDayOfMonth*/,
7467  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7468  240 /*atTimeCode (3600/15)*/,
7469  60 /*deltaMinutes*/,
7470  25 /*letterIndex ("S")*/,
7471  },
7472  // Rule Egypt 1995 2010 - Apr lastFri 0:00s 1:00 S
7473  {
7474  1995 /*fromYear*/,
7475  2010 /*toYear*/,
7476  4 /*inMonth*/,
7477  5 /*onDayOfWeek*/,
7478  0 /*onDayOfMonth*/,
7479  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
7480  0 /*atTimeCode (0/15)*/,
7481  60 /*deltaMinutes*/,
7482  25 /*letterIndex ("S")*/,
7483  },
7484  // Rule Egypt 1995 2005 - Sep lastThu 24:00 0 -
7485  {
7486  1995 /*fromYear*/,
7487  2005 /*toYear*/,
7488  9 /*inMonth*/,
7489  4 /*onDayOfWeek*/,
7490  0 /*onDayOfMonth*/,
7491  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7492  5760 /*atTimeCode (86400/15)*/,
7493  0 /*deltaMinutes*/,
7494  0 /*letterIndex ("")*/,
7495  },
7496  // Rule Egypt 2006 only - Sep 21 24:00 0 -
7497  {
7498  2006 /*fromYear*/,
7499  2006 /*toYear*/,
7500  9 /*inMonth*/,
7501  0 /*onDayOfWeek*/,
7502  21 /*onDayOfMonth*/,
7503  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7504  5760 /*atTimeCode (86400/15)*/,
7505  0 /*deltaMinutes*/,
7506  0 /*letterIndex ("")*/,
7507  },
7508  // Rule Egypt 2007 only - Sep Thu>=1 24:00 0 -
7509  {
7510  2007 /*fromYear*/,
7511  2007 /*toYear*/,
7512  9 /*inMonth*/,
7513  4 /*onDayOfWeek*/,
7514  1 /*onDayOfMonth*/,
7515  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7516  5760 /*atTimeCode (86400/15)*/,
7517  0 /*deltaMinutes*/,
7518  0 /*letterIndex ("")*/,
7519  },
7520  // Rule Egypt 2008 only - Aug lastThu 24:00 0 -
7521  {
7522  2008 /*fromYear*/,
7523  2008 /*toYear*/,
7524  8 /*inMonth*/,
7525  4 /*onDayOfWeek*/,
7526  0 /*onDayOfMonth*/,
7527  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7528  5760 /*atTimeCode (86400/15)*/,
7529  0 /*deltaMinutes*/,
7530  0 /*letterIndex ("")*/,
7531  },
7532  // Rule Egypt 2009 only - Aug 20 24:00 0 -
7533  {
7534  2009 /*fromYear*/,
7535  2009 /*toYear*/,
7536  8 /*inMonth*/,
7537  0 /*onDayOfWeek*/,
7538  20 /*onDayOfMonth*/,
7539  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7540  5760 /*atTimeCode (86400/15)*/,
7541  0 /*deltaMinutes*/,
7542  0 /*letterIndex ("")*/,
7543  },
7544  // Rule Egypt 2010 only - Aug 10 24:00 0 -
7545  {
7546  2010 /*fromYear*/,
7547  2010 /*toYear*/,
7548  8 /*inMonth*/,
7549  0 /*onDayOfWeek*/,
7550  10 /*onDayOfMonth*/,
7551  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7552  5760 /*atTimeCode (86400/15)*/,
7553  0 /*deltaMinutes*/,
7554  0 /*letterIndex ("")*/,
7555  },
7556  // Rule Egypt 2010 only - Sep 9 24:00 1:00 S
7557  {
7558  2010 /*fromYear*/,
7559  2010 /*toYear*/,
7560  9 /*inMonth*/,
7561  0 /*onDayOfWeek*/,
7562  9 /*onDayOfMonth*/,
7563  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7564  5760 /*atTimeCode (86400/15)*/,
7565  60 /*deltaMinutes*/,
7566  25 /*letterIndex ("S")*/,
7567  },
7568  // Rule Egypt 2010 only - Sep lastThu 24:00 0 -
7569  {
7570  2010 /*fromYear*/,
7571  2010 /*toYear*/,
7572  9 /*inMonth*/,
7573  4 /*onDayOfWeek*/,
7574  0 /*onDayOfMonth*/,
7575  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7576  5760 /*atTimeCode (86400/15)*/,
7577  0 /*deltaMinutes*/,
7578  0 /*letterIndex ("")*/,
7579  },
7580  // Rule Egypt 2014 only - May 15 24:00 1:00 S
7581  {
7582  2014 /*fromYear*/,
7583  2014 /*toYear*/,
7584  5 /*inMonth*/,
7585  0 /*onDayOfWeek*/,
7586  15 /*onDayOfMonth*/,
7587  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7588  5760 /*atTimeCode (86400/15)*/,
7589  60 /*deltaMinutes*/,
7590  25 /*letterIndex ("S")*/,
7591  },
7592  // Rule Egypt 2014 only - Jun 26 24:00 0 -
7593  {
7594  2014 /*fromYear*/,
7595  2014 /*toYear*/,
7596  6 /*inMonth*/,
7597  0 /*onDayOfWeek*/,
7598  26 /*onDayOfMonth*/,
7599  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7600  5760 /*atTimeCode (86400/15)*/,
7601  0 /*deltaMinutes*/,
7602  0 /*letterIndex ("")*/,
7603  },
7604  // Rule Egypt 2014 only - Jul 31 24:00 1:00 S
7605  {
7606  2014 /*fromYear*/,
7607  2014 /*toYear*/,
7608  7 /*inMonth*/,
7609  0 /*onDayOfWeek*/,
7610  31 /*onDayOfMonth*/,
7611  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7612  5760 /*atTimeCode (86400/15)*/,
7613  60 /*deltaMinutes*/,
7614  25 /*letterIndex ("S")*/,
7615  },
7616  // Rule Egypt 2014 only - Sep lastThu 24:00 0 -
7617  {
7618  2014 /*fromYear*/,
7619  2014 /*toYear*/,
7620  9 /*inMonth*/,
7621  4 /*onDayOfWeek*/,
7622  0 /*onDayOfMonth*/,
7623  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7624  5760 /*atTimeCode (86400/15)*/,
7625  0 /*deltaMinutes*/,
7626  0 /*letterIndex ("")*/,
7627  },
7628  // Rule Egypt 2023 max - Apr lastFri 0:00 1:00 S
7629  {
7630  2023 /*fromYear*/,
7631  32766 /*toYear*/,
7632  4 /*inMonth*/,
7633  5 /*onDayOfWeek*/,
7634  0 /*onDayOfMonth*/,
7635  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7636  0 /*atTimeCode (0/15)*/,
7637  60 /*deltaMinutes*/,
7638  25 /*letterIndex ("S")*/,
7639  },
7640  // Rule Egypt 2023 max - Oct lastThu 24:00 0 -
7641  {
7642  2023 /*fromYear*/,
7643  32766 /*toYear*/,
7644  10 /*inMonth*/,
7645  4 /*onDayOfWeek*/,
7646  0 /*onDayOfMonth*/,
7647  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7648  5760 /*atTimeCode (86400/15)*/,
7649  0 /*deltaMinutes*/,
7650  0 /*letterIndex ("")*/,
7651  },
7652 
7653 };
7654 
7655 const complete::ZonePolicy kZonePolicyEgypt ACE_TIME_PROGMEM = {
7656  kZoneRulesEgypt /*rules*/,
7657  35 /*numRules*/,
7658 };
7659 
7660 //---------------------------------------------------------------------------
7661 // Policy name: EgyptAsia
7662 // Rules: 7
7663 //---------------------------------------------------------------------------
7664 
7665 static const complete::ZoneRule kZoneRulesEgyptAsia[] ACE_TIME_PROGMEM = {
7666  // Anchor: Rule EgyptAsia 1957 1958 - Oct 1 0:00 0 -
7667  {
7668  -32767 /*fromYear*/,
7669  -32767 /*toYear*/,
7670  1 /*inMonth*/,
7671  0 /*onDayOfWeek*/,
7672  1 /*onDayOfMonth*/,
7673  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7674  0 /*atTimeCode (0/15)*/,
7675  0 /*deltaMinutes*/,
7676  0 /*letterIndex ("")*/,
7677  },
7678  // Rule EgyptAsia 1957 only - May 10 0:00 1:00 S
7679  {
7680  1957 /*fromYear*/,
7681  1957 /*toYear*/,
7682  5 /*inMonth*/,
7683  0 /*onDayOfWeek*/,
7684  10 /*onDayOfMonth*/,
7685  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7686  0 /*atTimeCode (0/15)*/,
7687  60 /*deltaMinutes*/,
7688  25 /*letterIndex ("S")*/,
7689  },
7690  // Rule EgyptAsia 1957 1958 - Oct 1 0:00 0 -
7691  {
7692  1957 /*fromYear*/,
7693  1958 /*toYear*/,
7694  10 /*inMonth*/,
7695  0 /*onDayOfWeek*/,
7696  1 /*onDayOfMonth*/,
7697  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7698  0 /*atTimeCode (0/15)*/,
7699  0 /*deltaMinutes*/,
7700  0 /*letterIndex ("")*/,
7701  },
7702  // Rule EgyptAsia 1958 only - May 1 0:00 1:00 S
7703  {
7704  1958 /*fromYear*/,
7705  1958 /*toYear*/,
7706  5 /*inMonth*/,
7707  0 /*onDayOfWeek*/,
7708  1 /*onDayOfMonth*/,
7709  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7710  0 /*atTimeCode (0/15)*/,
7711  60 /*deltaMinutes*/,
7712  25 /*letterIndex ("S")*/,
7713  },
7714  // Rule EgyptAsia 1959 1967 - May 1 1:00 1:00 S
7715  {
7716  1959 /*fromYear*/,
7717  1967 /*toYear*/,
7718  5 /*inMonth*/,
7719  0 /*onDayOfWeek*/,
7720  1 /*onDayOfMonth*/,
7721  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7722  240 /*atTimeCode (3600/15)*/,
7723  60 /*deltaMinutes*/,
7724  25 /*letterIndex ("S")*/,
7725  },
7726  // Rule EgyptAsia 1959 1965 - Sep 30 3:00 0 -
7727  {
7728  1959 /*fromYear*/,
7729  1965 /*toYear*/,
7730  9 /*inMonth*/,
7731  0 /*onDayOfWeek*/,
7732  30 /*onDayOfMonth*/,
7733  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7734  720 /*atTimeCode (10800/15)*/,
7735  0 /*deltaMinutes*/,
7736  0 /*letterIndex ("")*/,
7737  },
7738  // Rule EgyptAsia 1966 only - Oct 1 3:00 0 -
7739  {
7740  1966 /*fromYear*/,
7741  1966 /*toYear*/,
7742  10 /*inMonth*/,
7743  0 /*onDayOfWeek*/,
7744  1 /*onDayOfMonth*/,
7745  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7746  720 /*atTimeCode (10800/15)*/,
7747  0 /*deltaMinutes*/,
7748  0 /*letterIndex ("")*/,
7749  },
7750 
7751 };
7752 
7753 const complete::ZonePolicy kZonePolicyEgyptAsia ACE_TIME_PROGMEM = {
7754  kZoneRulesEgyptAsia /*rules*/,
7755  7 /*numRules*/,
7756 };
7757 
7758 //---------------------------------------------------------------------------
7759 // Policy name: Eire
7760 // Rules: 8
7761 //---------------------------------------------------------------------------
7762 
7763 static const complete::ZoneRule kZoneRulesEire[] ACE_TIME_PROGMEM = {
7764  // Anchor: Rule Eire 1972 1980 - Mar Sun>=16 2:00u 0 -
7765  {
7766  -32767 /*fromYear*/,
7767  -32767 /*toYear*/,
7768  1 /*inMonth*/,
7769  0 /*onDayOfWeek*/,
7770  1 /*onDayOfMonth*/,
7771  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7772  0 /*atTimeCode (0/15)*/,
7773  0 /*deltaMinutes*/,
7774  0 /*letterIndex ("")*/,
7775  },
7776  // Rule Eire 1971 only - Oct 31 2:00u -1:00 -
7777  {
7778  1971 /*fromYear*/,
7779  1971 /*toYear*/,
7780  10 /*inMonth*/,
7781  0 /*onDayOfWeek*/,
7782  31 /*onDayOfMonth*/,
7783  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
7784  480 /*atTimeCode (7200/15)*/,
7785  -60 /*deltaMinutes*/,
7786  0 /*letterIndex ("")*/,
7787  },
7788  // Rule Eire 1972 1980 - Mar Sun>=16 2:00u 0 -
7789  {
7790  1972 /*fromYear*/,
7791  1980 /*toYear*/,
7792  3 /*inMonth*/,
7793  7 /*onDayOfWeek*/,
7794  16 /*onDayOfMonth*/,
7795  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
7796  480 /*atTimeCode (7200/15)*/,
7797  0 /*deltaMinutes*/,
7798  0 /*letterIndex ("")*/,
7799  },
7800  // Rule Eire 1972 1980 - Oct Sun>=23 2:00u -1:00 -
7801  {
7802  1972 /*fromYear*/,
7803  1980 /*toYear*/,
7804  10 /*inMonth*/,
7805  7 /*onDayOfWeek*/,
7806  23 /*onDayOfMonth*/,
7807  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
7808  480 /*atTimeCode (7200/15)*/,
7809  -60 /*deltaMinutes*/,
7810  0 /*letterIndex ("")*/,
7811  },
7812  // Rule Eire 1981 max - Mar lastSun 1:00u 0 -
7813  {
7814  1981 /*fromYear*/,
7815  32766 /*toYear*/,
7816  3 /*inMonth*/,
7817  7 /*onDayOfWeek*/,
7818  0 /*onDayOfMonth*/,
7819  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
7820  240 /*atTimeCode (3600/15)*/,
7821  0 /*deltaMinutes*/,
7822  0 /*letterIndex ("")*/,
7823  },
7824  // Rule Eire 1981 1989 - Oct Sun>=23 1:00u -1:00 -
7825  {
7826  1981 /*fromYear*/,
7827  1989 /*toYear*/,
7828  10 /*inMonth*/,
7829  7 /*onDayOfWeek*/,
7830  23 /*onDayOfMonth*/,
7831  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
7832  240 /*atTimeCode (3600/15)*/,
7833  -60 /*deltaMinutes*/,
7834  0 /*letterIndex ("")*/,
7835  },
7836  // Rule Eire 1990 1995 - Oct Sun>=22 1:00u -1:00 -
7837  {
7838  1990 /*fromYear*/,
7839  1995 /*toYear*/,
7840  10 /*inMonth*/,
7841  7 /*onDayOfWeek*/,
7842  22 /*onDayOfMonth*/,
7843  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
7844  240 /*atTimeCode (3600/15)*/,
7845  -60 /*deltaMinutes*/,
7846  0 /*letterIndex ("")*/,
7847  },
7848  // Rule Eire 1996 max - Oct lastSun 1:00u -1:00 -
7849  {
7850  1996 /*fromYear*/,
7851  32766 /*toYear*/,
7852  10 /*inMonth*/,
7853  7 /*onDayOfWeek*/,
7854  0 /*onDayOfMonth*/,
7855  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
7856  240 /*atTimeCode (3600/15)*/,
7857  -60 /*deltaMinutes*/,
7858  0 /*letterIndex ("")*/,
7859  },
7860 
7861 };
7862 
7863 const complete::ZonePolicy kZonePolicyEire ACE_TIME_PROGMEM = {
7864  kZoneRulesEire /*rules*/,
7865  8 /*numRules*/,
7866 };
7867 
7868 //---------------------------------------------------------------------------
7869 // Policy name: Falk
7870 // Rules: 13
7871 //---------------------------------------------------------------------------
7872 
7873 static const complete::ZoneRule kZoneRulesFalk[] ACE_TIME_PROGMEM = {
7874  // Anchor: Rule Falk 1938 1942 - Mar Sun>=19 0:00 0 -
7875  {
7876  -32767 /*fromYear*/,
7877  -32767 /*toYear*/,
7878  1 /*inMonth*/,
7879  0 /*onDayOfWeek*/,
7880  1 /*onDayOfMonth*/,
7881  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7882  0 /*atTimeCode (0/15)*/,
7883  0 /*deltaMinutes*/,
7884  0 /*letterIndex ("")*/,
7885  },
7886  // Rule Falk 1937 1938 - Sep lastSun 0:00 1:00 -
7887  {
7888  1937 /*fromYear*/,
7889  1938 /*toYear*/,
7890  9 /*inMonth*/,
7891  7 /*onDayOfWeek*/,
7892  0 /*onDayOfMonth*/,
7893  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7894  0 /*atTimeCode (0/15)*/,
7895  60 /*deltaMinutes*/,
7896  0 /*letterIndex ("")*/,
7897  },
7898  // Rule Falk 1938 1942 - Mar Sun>=19 0:00 0 -
7899  {
7900  1938 /*fromYear*/,
7901  1942 /*toYear*/,
7902  3 /*inMonth*/,
7903  7 /*onDayOfWeek*/,
7904  19 /*onDayOfMonth*/,
7905  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7906  0 /*atTimeCode (0/15)*/,
7907  0 /*deltaMinutes*/,
7908  0 /*letterIndex ("")*/,
7909  },
7910  // Rule Falk 1939 only - Oct 1 0:00 1:00 -
7911  {
7912  1939 /*fromYear*/,
7913  1939 /*toYear*/,
7914  10 /*inMonth*/,
7915  0 /*onDayOfWeek*/,
7916  1 /*onDayOfMonth*/,
7917  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7918  0 /*atTimeCode (0/15)*/,
7919  60 /*deltaMinutes*/,
7920  0 /*letterIndex ("")*/,
7921  },
7922  // Rule Falk 1940 1942 - Sep lastSun 0:00 1:00 -
7923  {
7924  1940 /*fromYear*/,
7925  1942 /*toYear*/,
7926  9 /*inMonth*/,
7927  7 /*onDayOfWeek*/,
7928  0 /*onDayOfMonth*/,
7929  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7930  0 /*atTimeCode (0/15)*/,
7931  60 /*deltaMinutes*/,
7932  0 /*letterIndex ("")*/,
7933  },
7934  // Rule Falk 1943 only - Jan 1 0:00 0 -
7935  {
7936  1943 /*fromYear*/,
7937  1943 /*toYear*/,
7938  1 /*inMonth*/,
7939  0 /*onDayOfWeek*/,
7940  1 /*onDayOfMonth*/,
7941  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7942  0 /*atTimeCode (0/15)*/,
7943  0 /*deltaMinutes*/,
7944  0 /*letterIndex ("")*/,
7945  },
7946  // Rule Falk 1983 only - Sep lastSun 0:00 1:00 -
7947  {
7948  1983 /*fromYear*/,
7949  1983 /*toYear*/,
7950  9 /*inMonth*/,
7951  7 /*onDayOfWeek*/,
7952  0 /*onDayOfMonth*/,
7953  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7954  0 /*atTimeCode (0/15)*/,
7955  60 /*deltaMinutes*/,
7956  0 /*letterIndex ("")*/,
7957  },
7958  // Rule Falk 1984 1985 - Apr lastSun 0:00 0 -
7959  {
7960  1984 /*fromYear*/,
7961  1985 /*toYear*/,
7962  4 /*inMonth*/,
7963  7 /*onDayOfWeek*/,
7964  0 /*onDayOfMonth*/,
7965  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7966  0 /*atTimeCode (0/15)*/,
7967  0 /*deltaMinutes*/,
7968  0 /*letterIndex ("")*/,
7969  },
7970  // Rule Falk 1984 only - Sep 16 0:00 1:00 -
7971  {
7972  1984 /*fromYear*/,
7973  1984 /*toYear*/,
7974  9 /*inMonth*/,
7975  0 /*onDayOfWeek*/,
7976  16 /*onDayOfMonth*/,
7977  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7978  0 /*atTimeCode (0/15)*/,
7979  60 /*deltaMinutes*/,
7980  0 /*letterIndex ("")*/,
7981  },
7982  // Rule Falk 1985 2000 - Sep Sun>=9 0:00 1:00 -
7983  {
7984  1985 /*fromYear*/,
7985  2000 /*toYear*/,
7986  9 /*inMonth*/,
7987  7 /*onDayOfWeek*/,
7988  9 /*onDayOfMonth*/,
7989  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
7990  0 /*atTimeCode (0/15)*/,
7991  60 /*deltaMinutes*/,
7992  0 /*letterIndex ("")*/,
7993  },
7994  // Rule Falk 1986 2000 - Apr Sun>=16 0:00 0 -
7995  {
7996  1986 /*fromYear*/,
7997  2000 /*toYear*/,
7998  4 /*inMonth*/,
7999  7 /*onDayOfWeek*/,
8000  16 /*onDayOfMonth*/,
8001  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
8002  0 /*atTimeCode (0/15)*/,
8003  0 /*deltaMinutes*/,
8004  0 /*letterIndex ("")*/,
8005  },
8006  // Rule Falk 2001 2010 - Apr Sun>=15 2:00 0 -
8007  {
8008  2001 /*fromYear*/,
8009  2010 /*toYear*/,
8010  4 /*inMonth*/,
8011  7 /*onDayOfWeek*/,
8012  15 /*onDayOfMonth*/,
8013  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
8014  480 /*atTimeCode (7200/15)*/,
8015  0 /*deltaMinutes*/,
8016  0 /*letterIndex ("")*/,
8017  },
8018  // Rule Falk 2001 2010 - Sep Sun>=1 2:00 1:00 -
8019  {
8020  2001 /*fromYear*/,
8021  2010 /*toYear*/,
8022  9 /*inMonth*/,
8023  7 /*onDayOfWeek*/,
8024  1 /*onDayOfMonth*/,
8025  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
8026  480 /*atTimeCode (7200/15)*/,
8027  60 /*deltaMinutes*/,
8028  0 /*letterIndex ("")*/,
8029  },
8030 
8031 };
8032 
8033 const complete::ZonePolicy kZonePolicyFalk ACE_TIME_PROGMEM = {
8034  kZoneRulesFalk /*rules*/,
8035  13 /*numRules*/,
8036 };
8037 
8038 //---------------------------------------------------------------------------
8039 // Policy name: Fiji
8040 // Rules: 13
8041 //---------------------------------------------------------------------------
8042 
8043 static const complete::ZoneRule kZoneRulesFiji[] ACE_TIME_PROGMEM = {
8044  // Anchor: Rule Fiji 1999 2000 - Feb lastSun 3:00 0 -
8045  {
8046  -32767 /*fromYear*/,
8047  -32767 /*toYear*/,
8048  1 /*inMonth*/,
8049  0 /*onDayOfWeek*/,
8050  1 /*onDayOfMonth*/,
8051  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
8052  0 /*atTimeCode (0/15)*/,
8053  0 /*deltaMinutes*/,
8054  0 /*letterIndex ("")*/,
8055  },
8056  // Rule Fiji 1998 1999 - Nov Sun>=1 2:00 1:00 -
8057  {
8058  1998 /*fromYear*/,
8059  1999 /*toYear*/,
8060  11 /*inMonth*/,
8061  7 /*onDayOfWeek*/,
8062  1 /*onDayOfMonth*/,
8063  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
8064  480 /*atTimeCode (7200/15)*/,
8065  60 /*deltaMinutes*/,
8066  0 /*letterIndex ("")*/,
8067  },
8068  // Rule Fiji 1999 2000 - Feb lastSun 3:00 0 -
8069  {
8070  1999 /*fromYear*/,
8071  2000 /*toYear*/,
8072  2 /*inMonth*/,
8073  7 /*onDayOfWeek*/,
8074  0 /*onDayOfMonth*/,
8075  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
8076  720 /*atTimeCode (10800/15)*/,
8077  0 /*deltaMinutes*/,
8078  0 /*letterIndex ("")*/,
8079  },
8080  // Rule Fiji 2009 only - Nov 29 2:00 1:00 -
8081  {
8082  2009 /*fromYear*/,
8083  2009 /*toYear*/,
8084  11 /*inMonth*/,
8085  0 /*onDayOfWeek*/,
8086  29 /*onDayOfMonth*/,
8087  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
8088  480 /*atTimeCode (7200/15)*/,
8089  60 /*deltaMinutes*/,
8090  0 /*letterIndex ("")*/,
8091  },
8092  // Rule Fiji 2010 only - Mar lastSun 3:00 0 -
8093  {
8094  2010 /*fromYear*/,
8095  2010 /*toYear*/,
8096  3 /*inMonth*/,
8097  7 /*onDayOfWeek*/,
8098  0 /*onDayOfMonth*/,
8099  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
8100  720 /*atTimeCode (10800/15)*/,
8101  0 /*deltaMinutes*/,
8102  0 /*letterIndex ("")*/,
8103  },
8104  // Rule Fiji 2010 2013 - Oct Sun>=21 2:00 1:00 -
8105  {
8106  2010 /*fromYear*/,
8107  2013 /*toYear*/,
8108  10 /*inMonth*/,
8109  7 /*onDayOfWeek*/,
8110  21 /*onDayOfMonth*/,
8111  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
8112  480 /*atTimeCode (7200/15)*/,
8113  60 /*deltaMinutes*/,
8114  0 /*letterIndex ("")*/,
8115  },
8116  // Rule Fiji 2011 only - Mar Sun>=1 3:00 0 -
8117  {
8118  2011 /*fromYear*/,
8119  2011 /*toYear*/,
8120  3 /*inMonth*/,
8121  7 /*onDayOfWeek*/,
8122  1 /*onDayOfMonth*/,
8123  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
8124  720 /*atTimeCode (10800/15)*/,
8125  0 /*deltaMinutes*/,
8126  0 /*letterIndex ("")*/,
8127  },
8128  // Rule Fiji 2012 2013 - Jan Sun>=18 3:00 0 -
8129  {
8130  2012 /*fromYear*/,
8131  2013 /*toYear*/,
8132  1 /*inMonth*/,
8133  7 /*onDayOfWeek*/,
8134  18 /*onDayOfMonth*/,
8135  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
8136  720 /*atTimeCode (10800/15)*/,
8137  0 /*deltaMinutes*/,
8138  0 /*letterIndex ("")*/,
8139  },
8140  // Rule Fiji 2014 only - Jan Sun>=18 2:00 0 -
8141  {
8142  2014 /*fromYear*/,
8143  2014 /*toYear*/,
8144  1 /*inMonth*/,
8145  7 /*onDayOfWeek*/,
8146  18 /*onDayOfMonth*/,
8147  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
8148  480 /*atTimeCode (7200/15)*/,
8149  0 /*deltaMinutes*/,
8150  0 /*letterIndex ("")*/,
8151  },
8152  // Rule Fiji 2014 2018 - Nov Sun>=1 2:00 1:00 -
8153  {
8154  2014 /*fromYear*/,
8155  2018 /*toYear*/,
8156  11 /*inMonth*/,
8157  7 /*onDayOfWeek*/,
8158  1 /*onDayOfMonth*/,
8159  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
8160  480 /*atTimeCode (7200/15)*/,
8161  60 /*deltaMinutes*/,
8162  0 /*letterIndex ("")*/,
8163  },
8164  // Rule Fiji 2015 2021 - Jan Sun>=12 3:00 0 -
8165  {
8166  2015 /*fromYear*/,
8167  2021 /*toYear*/,
8168  1 /*inMonth*/,
8169  7 /*onDayOfWeek*/,
8170  12 /*onDayOfMonth*/,
8171  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
8172  720 /*atTimeCode (10800/15)*/,
8173  0 /*deltaMinutes*/,
8174  0 /*letterIndex ("")*/,
8175  },
8176  // Rule Fiji 2019 only - Nov Sun>=8 2:00 1:00 -
8177  {
8178  2019 /*fromYear*/,
8179  2019 /*toYear*/,
8180  11 /*inMonth*/,
8181  7 /*onDayOfWeek*/,
8182  8 /*onDayOfMonth*/,
8183  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
8184  480 /*atTimeCode (7200/15)*/,
8185  60 /*deltaMinutes*/,
8186  0 /*letterIndex ("")*/,
8187  },
8188  // Rule Fiji 2020 only - Dec 20 2:00 1:00 -
8189  {
8190  2020 /*fromYear*/,
8191  2020 /*toYear*/,
8192  12 /*inMonth*/,
8193  0 /*onDayOfWeek*/,
8194  20 /*onDayOfMonth*/,
8195  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
8196  480 /*atTimeCode (7200/15)*/,
8197  60 /*deltaMinutes*/,
8198  0 /*letterIndex ("")*/,
8199  },
8200 
8201 };
8202 
8203 const complete::ZonePolicy kZonePolicyFiji ACE_TIME_PROGMEM = {
8204  kZoneRulesFiji /*rules*/,
8205  13 /*numRules*/,
8206 };
8207 
8208 //---------------------------------------------------------------------------
8209 // Policy name: Finland
8210 // Rules: 5
8211 //---------------------------------------------------------------------------
8212 
8213 static const complete::ZoneRule kZoneRulesFinland[] ACE_TIME_PROGMEM = {
8214  // Anchor: Rule Finland 1942 only - Oct 4 1:00 0 -
8215  {
8216  -32767 /*fromYear*/,
8217  -32767 /*toYear*/,
8218  1 /*inMonth*/,
8219  0 /*onDayOfWeek*/,
8220  1 /*onDayOfMonth*/,
8221  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
8222  0 /*atTimeCode (0/15)*/,
8223  0 /*deltaMinutes*/,
8224  0 /*letterIndex ("")*/,
8225  },
8226  // Rule Finland 1942 only - Apr 2 24:00 1:00 S
8227  {
8228  1942 /*fromYear*/,
8229  1942 /*toYear*/,
8230  4 /*inMonth*/,
8231  0 /*onDayOfWeek*/,
8232  2 /*onDayOfMonth*/,
8233  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
8234  5760 /*atTimeCode (86400/15)*/,
8235  60 /*deltaMinutes*/,
8236  25 /*letterIndex ("S")*/,
8237  },
8238  // Rule Finland 1942 only - Oct 4 1:00 0 -
8239  {
8240  1942 /*fromYear*/,
8241  1942 /*toYear*/,
8242  10 /*inMonth*/,
8243  0 /*onDayOfWeek*/,
8244  4 /*onDayOfMonth*/,
8245  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
8246  240 /*atTimeCode (3600/15)*/,
8247  0 /*deltaMinutes*/,
8248  0 /*letterIndex ("")*/,
8249  },
8250  // Rule Finland 1981 1982 - Mar lastSun 2:00 1:00 S
8251  {
8252  1981 /*fromYear*/,
8253  1982 /*toYear*/,
8254  3 /*inMonth*/,
8255  7 /*onDayOfWeek*/,
8256  0 /*onDayOfMonth*/,
8257  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
8258  480 /*atTimeCode (7200/15)*/,
8259  60 /*deltaMinutes*/,
8260  25 /*letterIndex ("S")*/,
8261  },
8262  // Rule Finland 1981 1982 - Sep lastSun 3:00 0 -
8263  {
8264  1981 /*fromYear*/,
8265  1982 /*toYear*/,
8266  9 /*inMonth*/,
8267  7 /*onDayOfWeek*/,
8268  0 /*onDayOfMonth*/,
8269  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
8270  720 /*atTimeCode (10800/15)*/,
8271  0 /*deltaMinutes*/,
8272  0 /*letterIndex ("")*/,
8273  },
8274 
8275 };
8276 
8277 const complete::ZonePolicy kZonePolicyFinland ACE_TIME_PROGMEM = {
8278  kZoneRulesFinland /*rules*/,
8279  5 /*numRules*/,
8280 };
8281 
8282 //---------------------------------------------------------------------------
8283 // Policy name: France
8284 // Rules: 43
8285 //---------------------------------------------------------------------------
8286 
8287 static const complete::ZoneRule kZoneRulesFrance[] ACE_TIME_PROGMEM = {
8288  // Anchor: Rule France 1916 1919 - Oct Sun>=1 23:00s 0 -
8289  {
8290  -32767 /*fromYear*/,
8291  -32767 /*toYear*/,
8292  1 /*inMonth*/,
8293  0 /*onDayOfWeek*/,
8294  1 /*onDayOfMonth*/,
8295  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
8296  0 /*atTimeCode (0/15)*/,
8297  0 /*deltaMinutes*/,
8298  0 /*letterIndex ("")*/,
8299  },
8300  // Rule France 1916 only - Jun 14 23:00s 1:00 S
8301  {
8302  1916 /*fromYear*/,
8303  1916 /*toYear*/,
8304  6 /*inMonth*/,
8305  0 /*onDayOfWeek*/,
8306  14 /*onDayOfMonth*/,
8307  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
8308  5520 /*atTimeCode (82800/15)*/,
8309  60 /*deltaMinutes*/,
8310  25 /*letterIndex ("S")*/,
8311  },
8312  // Rule France 1916 1919 - Oct Sun>=1 23:00s 0 -
8313  {
8314  1916 /*fromYear*/,
8315  1919 /*toYear*/,
8316  10 /*inMonth*/,
8317  7 /*onDayOfWeek*/,
8318  1 /*onDayOfMonth*/,
8319  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
8320  5520 /*atTimeCode (82800/15)*/,
8321  0 /*deltaMinutes*/,
8322  0 /*letterIndex ("")*/,
8323  },
8324  // Rule France 1917 only - Mar 24 23:00s 1:00 S
8325  {
8326  1917 /*fromYear*/,
8327  1917 /*toYear*/,
8328  3 /*inMonth*/,
8329  0 /*onDayOfWeek*/,
8330  24 /*onDayOfMonth*/,
8331  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
8332  5520 /*atTimeCode (82800/15)*/,
8333  60 /*deltaMinutes*/,
8334  25 /*letterIndex ("S")*/,
8335  },
8336  // Rule France 1918 only - Mar 9 23:00s 1:00 S
8337  {
8338  1918 /*fromYear*/,
8339  1918 /*toYear*/,
8340  3 /*inMonth*/,
8341  0 /*onDayOfWeek*/,
8342  9 /*onDayOfMonth*/,
8343  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
8344  5520 /*atTimeCode (82800/15)*/,
8345  60 /*deltaMinutes*/,
8346  25 /*letterIndex ("S")*/,
8347  },
8348  // Rule France 1919 only - Mar 1 23:00s 1:00 S
8349  {
8350  1919 /*fromYear*/,
8351  1919 /*toYear*/,
8352  3 /*inMonth*/,
8353  0 /*onDayOfWeek*/,
8354  1 /*onDayOfMonth*/,
8355  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
8356  5520 /*atTimeCode (82800/15)*/,
8357  60 /*deltaMinutes*/,
8358  25 /*letterIndex ("S")*/,
8359  },
8360  // Rule France 1920 only - Feb 14 23:00s 1:00 S
8361  {
8362  1920 /*fromYear*/,
8363  1920 /*toYear*/,
8364  2 /*inMonth*/,
8365  0 /*onDayOfWeek*/,
8366  14 /*onDayOfMonth*/,
8367  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
8368  5520 /*atTimeCode (82800/15)*/,
8369  60 /*deltaMinutes*/,
8370  25 /*letterIndex ("S")*/,
8371  },
8372  // Rule France 1920 only - Oct 23 23:00s 0 -
8373  {
8374  1920 /*fromYear*/,
8375  1920 /*toYear*/,
8376  10 /*inMonth*/,
8377  0 /*onDayOfWeek*/,
8378  23 /*onDayOfMonth*/,
8379  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
8380  5520 /*atTimeCode (82800/15)*/,
8381  0 /*deltaMinutes*/,
8382  0 /*letterIndex ("")*/,
8383  },
8384  // Rule France 1921 only - Mar 14 23:00s 1:00 S
8385  {
8386  1921 /*fromYear*/,
8387  1921 /*toYear*/,
8388  3 /*inMonth*/,
8389  0 /*onDayOfWeek*/,
8390  14 /*onDayOfMonth*/,
8391  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
8392  5520 /*atTimeCode (82800/15)*/,
8393  60 /*deltaMinutes*/,
8394  25 /*letterIndex ("S")*/,
8395  },
8396  // Rule France 1921 only - Oct 25 23:00s 0 -
8397  {
8398  1921 /*fromYear*/,
8399  1921 /*toYear*/,
8400  10 /*inMonth*/,
8401  0 /*onDayOfWeek*/,
8402  25 /*onDayOfMonth*/,
8403  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
8404  5520 /*atTimeCode (82800/15)*/,
8405  0 /*deltaMinutes*/,
8406  0 /*letterIndex ("")*/,
8407  },
8408  // Rule France 1922 only - Mar 25 23:00s 1:00 S
8409  {
8410  1922 /*fromYear*/,
8411  1922 /*toYear*/,
8412  3 /*inMonth*/,
8413  0 /*onDayOfWeek*/,
8414  25 /*onDayOfMonth*/,
8415  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
8416  5520 /*atTimeCode (82800/15)*/,
8417  60 /*deltaMinutes*/,
8418  25 /*letterIndex ("S")*/,
8419  },
8420  // Rule France 1922 1938 - Oct Sat>=1 23:00s 0 -
8421  {
8422  1922 /*fromYear*/,
8423  1938 /*toYear*/,
8424  10 /*inMonth*/,
8425  6 /*onDayOfWeek*/,
8426  1 /*onDayOfMonth*/,
8427  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
8428  5520 /*atTimeCode (82800/15)*/,
8429  0 /*deltaMinutes*/,
8430  0 /*letterIndex ("")*/,
8431  },
8432  // Rule France 1923 only - May 26 23:00s 1:00 S
8433  {
8434  1923 /*fromYear*/,
8435  1923 /*toYear*/,
8436  5 /*inMonth*/,
8437  0 /*onDayOfWeek*/,
8438  26 /*onDayOfMonth*/,
8439  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
8440  5520 /*atTimeCode (82800/15)*/,
8441  60 /*deltaMinutes*/,
8442  25 /*letterIndex ("S")*/,
8443  },
8444  // Rule France 1924 only - Mar 29 23:00s 1:00 S
8445  {
8446  1924 /*fromYear*/,
8447  1924 /*toYear*/,
8448  3 /*inMonth*/,
8449  0 /*onDayOfWeek*/,
8450  29 /*onDayOfMonth*/,
8451  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
8452  5520 /*atTimeCode (82800/15)*/,
8453  60 /*deltaMinutes*/,
8454  25 /*letterIndex ("S")*/,
8455  },
8456  // Rule France 1925 only - Apr 4 23:00s 1:00 S
8457  {
8458  1925 /*fromYear*/,
8459  1925 /*toYear*/,
8460  4 /*inMonth*/,
8461  0 /*onDayOfWeek*/,
8462  4 /*onDayOfMonth*/,
8463  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
8464  5520 /*atTimeCode (82800/15)*/,
8465  60 /*deltaMinutes*/,
8466  25 /*letterIndex ("S")*/,
8467  },
8468  // Rule France 1926 only - Apr 17 23:00s 1:00 S
8469  {
8470  1926 /*fromYear*/,
8471  1926 /*toYear*/,
8472  4 /*inMonth*/,
8473  0 /*onDayOfWeek*/,
8474  17 /*onDayOfMonth*/,
8475  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
8476  5520 /*atTimeCode (82800/15)*/,
8477  60 /*deltaMinutes*/,
8478  25 /*letterIndex ("S")*/,
8479  },
8480  // Rule France 1927 only - Apr 9 23:00s 1:00 S
8481  {
8482  1927 /*fromYear*/,
8483  1927 /*toYear*/,
8484  4 /*inMonth*/,
8485  0 /*onDayOfWeek*/,
8486  9 /*onDayOfMonth*/,
8487  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
8488  5520 /*atTimeCode (82800/15)*/,
8489  60 /*deltaMinutes*/,
8490  25 /*letterIndex ("S")*/,
8491  },
8492  // Rule France 1928 only - Apr 14 23:00s 1:00 S
8493  {
8494  1928 /*fromYear*/,
8495  1928 /*toYear*/,
8496  4 /*inMonth*/,
8497  0 /*onDayOfWeek*/,
8498  14 /*onDayOfMonth*/,
8499  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
8500  5520 /*atTimeCode (82800/15)*/,
8501  60 /*deltaMinutes*/,
8502  25 /*letterIndex ("S")*/,
8503  },
8504  // Rule France 1929 only - Apr 20 23:00s 1:00 S
8505  {
8506  1929 /*fromYear*/,
8507  1929 /*toYear*/,
8508  4 /*inMonth*/,
8509  0 /*onDayOfWeek*/,
8510  20 /*onDayOfMonth*/,
8511  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
8512  5520 /*atTimeCode (82800/15)*/,
8513  60 /*deltaMinutes*/,
8514  25 /*letterIndex ("S")*/,
8515  },
8516  // Rule France 1930 only - Apr 12 23:00s 1:00 S
8517  {
8518  1930 /*fromYear*/,
8519  1930 /*toYear*/,
8520  4 /*inMonth*/,
8521  0 /*onDayOfWeek*/,
8522  12 /*onDayOfMonth*/,
8523  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
8524  5520 /*atTimeCode (82800/15)*/,
8525  60 /*deltaMinutes*/,
8526  25 /*letterIndex ("S")*/,
8527  },
8528  // Rule France 1931 only - Apr 18 23:00s 1:00 S
8529  {
8530  1931 /*fromYear*/,
8531  1931 /*toYear*/,
8532  4 /*inMonth*/,
8533  0 /*onDayOfWeek*/,
8534  18 /*onDayOfMonth*/,
8535  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
8536  5520 /*atTimeCode (82800/15)*/,
8537  60 /*deltaMinutes*/,
8538  25 /*letterIndex ("S")*/,
8539  },
8540  // Rule France 1932 only - Apr 2 23:00s 1:00 S
8541  {
8542  1932 /*fromYear*/,
8543  1932 /*toYear*/,
8544  4 /*inMonth*/,
8545  0 /*onDayOfWeek*/,
8546  2 /*onDayOfMonth*/,
8547  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
8548  5520 /*atTimeCode (82800/15)*/,
8549  60 /*deltaMinutes*/,
8550  25 /*letterIndex ("S")*/,
8551  },
8552  // Rule France 1933 only - Mar 25 23:00s 1:00 S
8553  {
8554  1933 /*fromYear*/,
8555  1933 /*toYear*/,
8556  3 /*inMonth*/,
8557  0 /*onDayOfWeek*/,
8558  25 /*onDayOfMonth*/,
8559  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
8560  5520 /*atTimeCode (82800/15)*/,
8561  60 /*deltaMinutes*/,
8562  25 /*letterIndex ("S")*/,
8563  },
8564  // Rule France 1934 only - Apr 7 23:00s 1:00 S
8565  {
8566  1934 /*fromYear*/,
8567  1934 /*toYear*/,
8568  4 /*inMonth*/,
8569  0 /*onDayOfWeek*/,
8570  7 /*onDayOfMonth*/,
8571  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
8572  5520 /*atTimeCode (82800/15)*/,
8573  60 /*deltaMinutes*/,
8574  25 /*letterIndex ("S")*/,
8575  },
8576  // Rule France 1935 only - Mar 30 23:00s 1:00 S
8577  {
8578  1935 /*fromYear*/,
8579  1935 /*toYear*/,
8580  3 /*inMonth*/,
8581  0 /*onDayOfWeek*/,
8582  30 /*onDayOfMonth*/,
8583  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
8584  5520 /*atTimeCode (82800/15)*/,
8585  60 /*deltaMinutes*/,
8586  25 /*letterIndex ("S")*/,
8587  },
8588  // Rule France 1936 only - Apr 18 23:00s 1:00 S
8589  {
8590  1936 /*fromYear*/,
8591  1936 /*toYear*/,
8592  4 /*inMonth*/,
8593  0 /*onDayOfWeek*/,
8594  18 /*onDayOfMonth*/,
8595  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
8596  5520 /*atTimeCode (82800/15)*/,
8597  60 /*deltaMinutes*/,
8598  25 /*letterIndex ("S")*/,
8599  },
8600  // Rule France 1937 only - Apr 3 23:00s 1:00 S
8601  {
8602  1937 /*fromYear*/,
8603  1937 /*toYear*/,
8604  4 /*inMonth*/,
8605  0 /*onDayOfWeek*/,
8606  3 /*onDayOfMonth*/,
8607  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
8608  5520 /*atTimeCode (82800/15)*/,
8609  60 /*deltaMinutes*/,
8610  25 /*letterIndex ("S")*/,
8611  },
8612  // Rule France 1938 only - Mar 26 23:00s 1:00 S
8613  {
8614  1938 /*fromYear*/,
8615  1938 /*toYear*/,
8616  3 /*inMonth*/,
8617  0 /*onDayOfWeek*/,
8618  26 /*onDayOfMonth*/,
8619  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
8620  5520 /*atTimeCode (82800/15)*/,
8621  60 /*deltaMinutes*/,
8622  25 /*letterIndex ("S")*/,
8623  },
8624  // Rule France 1939 only - Apr 15 23:00s 1:00 S
8625  {
8626  1939 /*fromYear*/,
8627  1939 /*toYear*/,
8628  4 /*inMonth*/,
8629  0 /*onDayOfWeek*/,
8630  15 /*onDayOfMonth*/,
8631  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
8632  5520 /*atTimeCode (82800/15)*/,
8633  60 /*deltaMinutes*/,
8634  25 /*letterIndex ("S")*/,
8635  },
8636  // Rule France 1939 only - Nov 18 23:00s 0 -
8637  {
8638  1939 /*fromYear*/,
8639  1939 /*toYear*/,
8640  11 /*inMonth*/,
8641  0 /*onDayOfWeek*/,
8642  18 /*onDayOfMonth*/,
8643  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
8644  5520 /*atTimeCode (82800/15)*/,
8645  0 /*deltaMinutes*/,
8646  0 /*letterIndex ("")*/,
8647  },
8648  // Rule France 1940 only - Feb 25 2:00 1:00 S
8649  {
8650  1940 /*fromYear*/,
8651  1940 /*toYear*/,
8652  2 /*inMonth*/,
8653  0 /*onDayOfWeek*/,
8654  25 /*onDayOfMonth*/,
8655  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
8656  480 /*atTimeCode (7200/15)*/,
8657  60 /*deltaMinutes*/,
8658  25 /*letterIndex ("S")*/,
8659  },
8660  // Rule France 1941 only - May 5 0:00 2:00 M
8661  {
8662  1941 /*fromYear*/,
8663  1941 /*toYear*/,
8664  5 /*inMonth*/,
8665  0 /*onDayOfWeek*/,
8666  5 /*onDayOfMonth*/,
8667  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
8668  0 /*atTimeCode (0/15)*/,
8669  120 /*deltaMinutes*/,
8670  18 /*letterIndex ("M")*/,
8671  },
8672  // Rule France 1941 only - Oct 6 0:00 1:00 S
8673  {
8674  1941 /*fromYear*/,
8675  1941 /*toYear*/,
8676  10 /*inMonth*/,
8677  0 /*onDayOfWeek*/,
8678  6 /*onDayOfMonth*/,
8679  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
8680  0 /*atTimeCode (0/15)*/,
8681  60 /*deltaMinutes*/,
8682  25 /*letterIndex ("S")*/,
8683  },
8684  // Rule France 1942 only - Mar 9 0:00 2:00 M
8685  {
8686  1942 /*fromYear*/,
8687  1942 /*toYear*/,
8688  3 /*inMonth*/,
8689  0 /*onDayOfWeek*/,
8690  9 /*onDayOfMonth*/,
8691  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
8692  0 /*atTimeCode (0/15)*/,
8693  120 /*deltaMinutes*/,
8694  18 /*letterIndex ("M")*/,
8695  },
8696  // Rule France 1942 only - Nov 2 3:00 1:00 S
8697  {
8698  1942 /*fromYear*/,
8699  1942 /*toYear*/,
8700  11 /*inMonth*/,
8701  0 /*onDayOfWeek*/,
8702  2 /*onDayOfMonth*/,
8703  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
8704  720 /*atTimeCode (10800/15)*/,
8705  60 /*deltaMinutes*/,
8706  25 /*letterIndex ("S")*/,
8707  },
8708  // Rule France 1943 only - Mar 29 2:00 2:00 M
8709  {
8710  1943 /*fromYear*/,
8711  1943 /*toYear*/,
8712  3 /*inMonth*/,
8713  0 /*onDayOfWeek*/,
8714  29 /*onDayOfMonth*/,
8715  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
8716  480 /*atTimeCode (7200/15)*/,
8717  120 /*deltaMinutes*/,
8718  18 /*letterIndex ("M")*/,
8719  },
8720  // Rule France 1943 only - Oct 4 3:00 1:00 S
8721  {
8722  1943 /*fromYear*/,
8723  1943 /*toYear*/,
8724  10 /*inMonth*/,
8725  0 /*onDayOfWeek*/,
8726  4 /*onDayOfMonth*/,
8727  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
8728  720 /*atTimeCode (10800/15)*/,
8729  60 /*deltaMinutes*/,
8730  25 /*letterIndex ("S")*/,
8731  },
8732  // Rule France 1944 only - Apr 3 2:00 2:00 M
8733  {
8734  1944 /*fromYear*/,
8735  1944 /*toYear*/,
8736  4 /*inMonth*/,
8737  0 /*onDayOfWeek*/,
8738  3 /*onDayOfMonth*/,
8739  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
8740  480 /*atTimeCode (7200/15)*/,
8741  120 /*deltaMinutes*/,
8742  18 /*letterIndex ("M")*/,
8743  },
8744  // Rule France 1944 only - Oct 8 1:00 1:00 S
8745  {
8746  1944 /*fromYear*/,
8747  1944 /*toYear*/,
8748  10 /*inMonth*/,
8749  0 /*onDayOfWeek*/,
8750  8 /*onDayOfMonth*/,
8751  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
8752  240 /*atTimeCode (3600/15)*/,
8753  60 /*deltaMinutes*/,
8754  25 /*letterIndex ("S")*/,
8755  },
8756  // Rule France 1945 only - Apr 2 2:00 2:00 M
8757  {
8758  1945 /*fromYear*/,
8759  1945 /*toYear*/,
8760  4 /*inMonth*/,
8761  0 /*onDayOfWeek*/,
8762  2 /*onDayOfMonth*/,
8763  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
8764  480 /*atTimeCode (7200/15)*/,
8765  120 /*deltaMinutes*/,
8766  18 /*letterIndex ("M")*/,
8767  },
8768  // Rule France 1945 only - Sep 16 3:00 0 -
8769  {
8770  1945 /*fromYear*/,
8771  1945 /*toYear*/,
8772  9 /*inMonth*/,
8773  0 /*onDayOfWeek*/,
8774  16 /*onDayOfMonth*/,
8775  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
8776  720 /*atTimeCode (10800/15)*/,
8777  0 /*deltaMinutes*/,
8778  0 /*letterIndex ("")*/,
8779  },
8780  // Rule France 1976 only - Mar 28 1:00 1:00 S
8781  {
8782  1976 /*fromYear*/,
8783  1976 /*toYear*/,
8784  3 /*inMonth*/,
8785  0 /*onDayOfWeek*/,
8786  28 /*onDayOfMonth*/,
8787  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
8788  240 /*atTimeCode (3600/15)*/,
8789  60 /*deltaMinutes*/,
8790  25 /*letterIndex ("S")*/,
8791  },
8792  // Rule France 1976 only - Sep 26 1:00 0 -
8793  {
8794  1976 /*fromYear*/,
8795  1976 /*toYear*/,
8796  9 /*inMonth*/,
8797  0 /*onDayOfWeek*/,
8798  26 /*onDayOfMonth*/,
8799  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
8800  240 /*atTimeCode (3600/15)*/,
8801  0 /*deltaMinutes*/,
8802  0 /*letterIndex ("")*/,
8803  },
8804 
8805 };
8806 
8807 const complete::ZonePolicy kZonePolicyFrance ACE_TIME_PROGMEM = {
8808  kZoneRulesFrance /*rules*/,
8809  43 /*numRules*/,
8810 };
8811 
8812 //---------------------------------------------------------------------------
8813 // Policy name: GB-Eire
8814 // Rules: 66
8815 //---------------------------------------------------------------------------
8816 
8817 static const complete::ZoneRule kZoneRulesGB_Eire[] ACE_TIME_PROGMEM = {
8818  // Anchor: Rule GB-Eire 1916 only - Oct 1 2:00s 0 GMT
8819  {
8820  -32767 /*fromYear*/,
8821  -32767 /*toYear*/,
8822  1 /*inMonth*/,
8823  0 /*onDayOfWeek*/,
8824  1 /*onDayOfMonth*/,
8825  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
8826  0 /*atTimeCode (0/15)*/,
8827  0 /*deltaMinutes*/,
8828  17 /*letterIndex ("GMT")*/,
8829  },
8830  // Rule GB-Eire 1916 only - May 21 2:00s 1:00 BST
8831  {
8832  1916 /*fromYear*/,
8833  1916 /*toYear*/,
8834  5 /*inMonth*/,
8835  0 /*onDayOfWeek*/,
8836  21 /*onDayOfMonth*/,
8837  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
8838  480 /*atTimeCode (7200/15)*/,
8839  60 /*deltaMinutes*/,
8840  7 /*letterIndex ("BST")*/,
8841  },
8842  // Rule GB-Eire 1916 only - Oct 1 2:00s 0 GMT
8843  {
8844  1916 /*fromYear*/,
8845  1916 /*toYear*/,
8846  10 /*inMonth*/,
8847  0 /*onDayOfWeek*/,
8848  1 /*onDayOfMonth*/,
8849  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
8850  480 /*atTimeCode (7200/15)*/,
8851  0 /*deltaMinutes*/,
8852  17 /*letterIndex ("GMT")*/,
8853  },
8854  // Rule GB-Eire 1917 only - Apr 8 2:00s 1:00 BST
8855  {
8856  1917 /*fromYear*/,
8857  1917 /*toYear*/,
8858  4 /*inMonth*/,
8859  0 /*onDayOfWeek*/,
8860  8 /*onDayOfMonth*/,
8861  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
8862  480 /*atTimeCode (7200/15)*/,
8863  60 /*deltaMinutes*/,
8864  7 /*letterIndex ("BST")*/,
8865  },
8866  // Rule GB-Eire 1917 only - Sep 17 2:00s 0 GMT
8867  {
8868  1917 /*fromYear*/,
8869  1917 /*toYear*/,
8870  9 /*inMonth*/,
8871  0 /*onDayOfWeek*/,
8872  17 /*onDayOfMonth*/,
8873  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
8874  480 /*atTimeCode (7200/15)*/,
8875  0 /*deltaMinutes*/,
8876  17 /*letterIndex ("GMT")*/,
8877  },
8878  // Rule GB-Eire 1918 only - Mar 24 2:00s 1:00 BST
8879  {
8880  1918 /*fromYear*/,
8881  1918 /*toYear*/,
8882  3 /*inMonth*/,
8883  0 /*onDayOfWeek*/,
8884  24 /*onDayOfMonth*/,
8885  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
8886  480 /*atTimeCode (7200/15)*/,
8887  60 /*deltaMinutes*/,
8888  7 /*letterIndex ("BST")*/,
8889  },
8890  // Rule GB-Eire 1918 only - Sep 30 2:00s 0 GMT
8891  {
8892  1918 /*fromYear*/,
8893  1918 /*toYear*/,
8894  9 /*inMonth*/,
8895  0 /*onDayOfWeek*/,
8896  30 /*onDayOfMonth*/,
8897  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
8898  480 /*atTimeCode (7200/15)*/,
8899  0 /*deltaMinutes*/,
8900  17 /*letterIndex ("GMT")*/,
8901  },
8902  // Rule GB-Eire 1919 only - Mar 30 2:00s 1:00 BST
8903  {
8904  1919 /*fromYear*/,
8905  1919 /*toYear*/,
8906  3 /*inMonth*/,
8907  0 /*onDayOfWeek*/,
8908  30 /*onDayOfMonth*/,
8909  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
8910  480 /*atTimeCode (7200/15)*/,
8911  60 /*deltaMinutes*/,
8912  7 /*letterIndex ("BST")*/,
8913  },
8914  // Rule GB-Eire 1919 only - Sep 29 2:00s 0 GMT
8915  {
8916  1919 /*fromYear*/,
8917  1919 /*toYear*/,
8918  9 /*inMonth*/,
8919  0 /*onDayOfWeek*/,
8920  29 /*onDayOfMonth*/,
8921  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
8922  480 /*atTimeCode (7200/15)*/,
8923  0 /*deltaMinutes*/,
8924  17 /*letterIndex ("GMT")*/,
8925  },
8926  // Rule GB-Eire 1920 only - Mar 28 2:00s 1:00 BST
8927  {
8928  1920 /*fromYear*/,
8929  1920 /*toYear*/,
8930  3 /*inMonth*/,
8931  0 /*onDayOfWeek*/,
8932  28 /*onDayOfMonth*/,
8933  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
8934  480 /*atTimeCode (7200/15)*/,
8935  60 /*deltaMinutes*/,
8936  7 /*letterIndex ("BST")*/,
8937  },
8938  // Rule GB-Eire 1920 only - Oct 25 2:00s 0 GMT
8939  {
8940  1920 /*fromYear*/,
8941  1920 /*toYear*/,
8942  10 /*inMonth*/,
8943  0 /*onDayOfWeek*/,
8944  25 /*onDayOfMonth*/,
8945  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
8946  480 /*atTimeCode (7200/15)*/,
8947  0 /*deltaMinutes*/,
8948  17 /*letterIndex ("GMT")*/,
8949  },
8950  // Rule GB-Eire 1921 only - Apr 3 2:00s 1:00 BST
8951  {
8952  1921 /*fromYear*/,
8953  1921 /*toYear*/,
8954  4 /*inMonth*/,
8955  0 /*onDayOfWeek*/,
8956  3 /*onDayOfMonth*/,
8957  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
8958  480 /*atTimeCode (7200/15)*/,
8959  60 /*deltaMinutes*/,
8960  7 /*letterIndex ("BST")*/,
8961  },
8962  // Rule GB-Eire 1921 only - Oct 3 2:00s 0 GMT
8963  {
8964  1921 /*fromYear*/,
8965  1921 /*toYear*/,
8966  10 /*inMonth*/,
8967  0 /*onDayOfWeek*/,
8968  3 /*onDayOfMonth*/,
8969  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
8970  480 /*atTimeCode (7200/15)*/,
8971  0 /*deltaMinutes*/,
8972  17 /*letterIndex ("GMT")*/,
8973  },
8974  // Rule GB-Eire 1922 only - Mar 26 2:00s 1:00 BST
8975  {
8976  1922 /*fromYear*/,
8977  1922 /*toYear*/,
8978  3 /*inMonth*/,
8979  0 /*onDayOfWeek*/,
8980  26 /*onDayOfMonth*/,
8981  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
8982  480 /*atTimeCode (7200/15)*/,
8983  60 /*deltaMinutes*/,
8984  7 /*letterIndex ("BST")*/,
8985  },
8986  // Rule GB-Eire 1922 only - Oct 8 2:00s 0 GMT
8987  {
8988  1922 /*fromYear*/,
8989  1922 /*toYear*/,
8990  10 /*inMonth*/,
8991  0 /*onDayOfWeek*/,
8992  8 /*onDayOfMonth*/,
8993  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
8994  480 /*atTimeCode (7200/15)*/,
8995  0 /*deltaMinutes*/,
8996  17 /*letterIndex ("GMT")*/,
8997  },
8998  // Rule GB-Eire 1923 only - Apr Sun>=16 2:00s 1:00 BST
8999  {
9000  1923 /*fromYear*/,
9001  1923 /*toYear*/,
9002  4 /*inMonth*/,
9003  7 /*onDayOfWeek*/,
9004  16 /*onDayOfMonth*/,
9005  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9006  480 /*atTimeCode (7200/15)*/,
9007  60 /*deltaMinutes*/,
9008  7 /*letterIndex ("BST")*/,
9009  },
9010  // Rule GB-Eire 1923 1924 - Sep Sun>=16 2:00s 0 GMT
9011  {
9012  1923 /*fromYear*/,
9013  1924 /*toYear*/,
9014  9 /*inMonth*/,
9015  7 /*onDayOfWeek*/,
9016  16 /*onDayOfMonth*/,
9017  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9018  480 /*atTimeCode (7200/15)*/,
9019  0 /*deltaMinutes*/,
9020  17 /*letterIndex ("GMT")*/,
9021  },
9022  // Rule GB-Eire 1924 only - Apr Sun>=9 2:00s 1:00 BST
9023  {
9024  1924 /*fromYear*/,
9025  1924 /*toYear*/,
9026  4 /*inMonth*/,
9027  7 /*onDayOfWeek*/,
9028  9 /*onDayOfMonth*/,
9029  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9030  480 /*atTimeCode (7200/15)*/,
9031  60 /*deltaMinutes*/,
9032  7 /*letterIndex ("BST")*/,
9033  },
9034  // Rule GB-Eire 1925 1926 - Apr Sun>=16 2:00s 1:00 BST
9035  {
9036  1925 /*fromYear*/,
9037  1926 /*toYear*/,
9038  4 /*inMonth*/,
9039  7 /*onDayOfWeek*/,
9040  16 /*onDayOfMonth*/,
9041  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9042  480 /*atTimeCode (7200/15)*/,
9043  60 /*deltaMinutes*/,
9044  7 /*letterIndex ("BST")*/,
9045  },
9046  // Rule GB-Eire 1925 1938 - Oct Sun>=2 2:00s 0 GMT
9047  {
9048  1925 /*fromYear*/,
9049  1938 /*toYear*/,
9050  10 /*inMonth*/,
9051  7 /*onDayOfWeek*/,
9052  2 /*onDayOfMonth*/,
9053  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9054  480 /*atTimeCode (7200/15)*/,
9055  0 /*deltaMinutes*/,
9056  17 /*letterIndex ("GMT")*/,
9057  },
9058  // Rule GB-Eire 1927 only - Apr Sun>=9 2:00s 1:00 BST
9059  {
9060  1927 /*fromYear*/,
9061  1927 /*toYear*/,
9062  4 /*inMonth*/,
9063  7 /*onDayOfWeek*/,
9064  9 /*onDayOfMonth*/,
9065  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9066  480 /*atTimeCode (7200/15)*/,
9067  60 /*deltaMinutes*/,
9068  7 /*letterIndex ("BST")*/,
9069  },
9070  // Rule GB-Eire 1928 1929 - Apr Sun>=16 2:00s 1:00 BST
9071  {
9072  1928 /*fromYear*/,
9073  1929 /*toYear*/,
9074  4 /*inMonth*/,
9075  7 /*onDayOfWeek*/,
9076  16 /*onDayOfMonth*/,
9077  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9078  480 /*atTimeCode (7200/15)*/,
9079  60 /*deltaMinutes*/,
9080  7 /*letterIndex ("BST")*/,
9081  },
9082  // Rule GB-Eire 1930 only - Apr Sun>=9 2:00s 1:00 BST
9083  {
9084  1930 /*fromYear*/,
9085  1930 /*toYear*/,
9086  4 /*inMonth*/,
9087  7 /*onDayOfWeek*/,
9088  9 /*onDayOfMonth*/,
9089  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9090  480 /*atTimeCode (7200/15)*/,
9091  60 /*deltaMinutes*/,
9092  7 /*letterIndex ("BST")*/,
9093  },
9094  // Rule GB-Eire 1931 1932 - Apr Sun>=16 2:00s 1:00 BST
9095  {
9096  1931 /*fromYear*/,
9097  1932 /*toYear*/,
9098  4 /*inMonth*/,
9099  7 /*onDayOfWeek*/,
9100  16 /*onDayOfMonth*/,
9101  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9102  480 /*atTimeCode (7200/15)*/,
9103  60 /*deltaMinutes*/,
9104  7 /*letterIndex ("BST")*/,
9105  },
9106  // Rule GB-Eire 1933 only - Apr Sun>=9 2:00s 1:00 BST
9107  {
9108  1933 /*fromYear*/,
9109  1933 /*toYear*/,
9110  4 /*inMonth*/,
9111  7 /*onDayOfWeek*/,
9112  9 /*onDayOfMonth*/,
9113  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9114  480 /*atTimeCode (7200/15)*/,
9115  60 /*deltaMinutes*/,
9116  7 /*letterIndex ("BST")*/,
9117  },
9118  // Rule GB-Eire 1934 only - Apr Sun>=16 2:00s 1:00 BST
9119  {
9120  1934 /*fromYear*/,
9121  1934 /*toYear*/,
9122  4 /*inMonth*/,
9123  7 /*onDayOfWeek*/,
9124  16 /*onDayOfMonth*/,
9125  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9126  480 /*atTimeCode (7200/15)*/,
9127  60 /*deltaMinutes*/,
9128  7 /*letterIndex ("BST")*/,
9129  },
9130  // Rule GB-Eire 1935 only - Apr Sun>=9 2:00s 1:00 BST
9131  {
9132  1935 /*fromYear*/,
9133  1935 /*toYear*/,
9134  4 /*inMonth*/,
9135  7 /*onDayOfWeek*/,
9136  9 /*onDayOfMonth*/,
9137  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9138  480 /*atTimeCode (7200/15)*/,
9139  60 /*deltaMinutes*/,
9140  7 /*letterIndex ("BST")*/,
9141  },
9142  // Rule GB-Eire 1936 1937 - Apr Sun>=16 2:00s 1:00 BST
9143  {
9144  1936 /*fromYear*/,
9145  1937 /*toYear*/,
9146  4 /*inMonth*/,
9147  7 /*onDayOfWeek*/,
9148  16 /*onDayOfMonth*/,
9149  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9150  480 /*atTimeCode (7200/15)*/,
9151  60 /*deltaMinutes*/,
9152  7 /*letterIndex ("BST")*/,
9153  },
9154  // Rule GB-Eire 1938 only - Apr Sun>=9 2:00s 1:00 BST
9155  {
9156  1938 /*fromYear*/,
9157  1938 /*toYear*/,
9158  4 /*inMonth*/,
9159  7 /*onDayOfWeek*/,
9160  9 /*onDayOfMonth*/,
9161  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9162  480 /*atTimeCode (7200/15)*/,
9163  60 /*deltaMinutes*/,
9164  7 /*letterIndex ("BST")*/,
9165  },
9166  // Rule GB-Eire 1939 only - Apr Sun>=16 2:00s 1:00 BST
9167  {
9168  1939 /*fromYear*/,
9169  1939 /*toYear*/,
9170  4 /*inMonth*/,
9171  7 /*onDayOfWeek*/,
9172  16 /*onDayOfMonth*/,
9173  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9174  480 /*atTimeCode (7200/15)*/,
9175  60 /*deltaMinutes*/,
9176  7 /*letterIndex ("BST")*/,
9177  },
9178  // Rule GB-Eire 1939 only - Nov Sun>=16 2:00s 0 GMT
9179  {
9180  1939 /*fromYear*/,
9181  1939 /*toYear*/,
9182  11 /*inMonth*/,
9183  7 /*onDayOfWeek*/,
9184  16 /*onDayOfMonth*/,
9185  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9186  480 /*atTimeCode (7200/15)*/,
9187  0 /*deltaMinutes*/,
9188  17 /*letterIndex ("GMT")*/,
9189  },
9190  // Rule GB-Eire 1940 only - Feb Sun>=23 2:00s 1:00 BST
9191  {
9192  1940 /*fromYear*/,
9193  1940 /*toYear*/,
9194  2 /*inMonth*/,
9195  7 /*onDayOfWeek*/,
9196  23 /*onDayOfMonth*/,
9197  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9198  480 /*atTimeCode (7200/15)*/,
9199  60 /*deltaMinutes*/,
9200  7 /*letterIndex ("BST")*/,
9201  },
9202  // Rule GB-Eire 1941 only - May Sun>=2 1:00s 2:00 BDST
9203  {
9204  1941 /*fromYear*/,
9205  1941 /*toYear*/,
9206  5 /*inMonth*/,
9207  7 /*onDayOfWeek*/,
9208  2 /*onDayOfMonth*/,
9209  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9210  240 /*atTimeCode (3600/15)*/,
9211  120 /*deltaMinutes*/,
9212  6 /*letterIndex ("BDST")*/,
9213  },
9214  // Rule GB-Eire 1941 1943 - Aug Sun>=9 1:00s 1:00 BST
9215  {
9216  1941 /*fromYear*/,
9217  1943 /*toYear*/,
9218  8 /*inMonth*/,
9219  7 /*onDayOfWeek*/,
9220  9 /*onDayOfMonth*/,
9221  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9222  240 /*atTimeCode (3600/15)*/,
9223  60 /*deltaMinutes*/,
9224  7 /*letterIndex ("BST")*/,
9225  },
9226  // Rule GB-Eire 1942 1944 - Apr Sun>=2 1:00s 2:00 BDST
9227  {
9228  1942 /*fromYear*/,
9229  1944 /*toYear*/,
9230  4 /*inMonth*/,
9231  7 /*onDayOfWeek*/,
9232  2 /*onDayOfMonth*/,
9233  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9234  240 /*atTimeCode (3600/15)*/,
9235  120 /*deltaMinutes*/,
9236  6 /*letterIndex ("BDST")*/,
9237  },
9238  // Rule GB-Eire 1944 only - Sep Sun>=16 1:00s 1:00 BST
9239  {
9240  1944 /*fromYear*/,
9241  1944 /*toYear*/,
9242  9 /*inMonth*/,
9243  7 /*onDayOfWeek*/,
9244  16 /*onDayOfMonth*/,
9245  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9246  240 /*atTimeCode (3600/15)*/,
9247  60 /*deltaMinutes*/,
9248  7 /*letterIndex ("BST")*/,
9249  },
9250  // Rule GB-Eire 1945 only - Apr Mon>=2 1:00s 2:00 BDST
9251  {
9252  1945 /*fromYear*/,
9253  1945 /*toYear*/,
9254  4 /*inMonth*/,
9255  1 /*onDayOfWeek*/,
9256  2 /*onDayOfMonth*/,
9257  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9258  240 /*atTimeCode (3600/15)*/,
9259  120 /*deltaMinutes*/,
9260  6 /*letterIndex ("BDST")*/,
9261  },
9262  // Rule GB-Eire 1945 only - Jul Sun>=9 1:00s 1:00 BST
9263  {
9264  1945 /*fromYear*/,
9265  1945 /*toYear*/,
9266  7 /*inMonth*/,
9267  7 /*onDayOfWeek*/,
9268  9 /*onDayOfMonth*/,
9269  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9270  240 /*atTimeCode (3600/15)*/,
9271  60 /*deltaMinutes*/,
9272  7 /*letterIndex ("BST")*/,
9273  },
9274  // Rule GB-Eire 1945 1946 - Oct Sun>=2 2:00s 0 GMT
9275  {
9276  1945 /*fromYear*/,
9277  1946 /*toYear*/,
9278  10 /*inMonth*/,
9279  7 /*onDayOfWeek*/,
9280  2 /*onDayOfMonth*/,
9281  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9282  480 /*atTimeCode (7200/15)*/,
9283  0 /*deltaMinutes*/,
9284  17 /*letterIndex ("GMT")*/,
9285  },
9286  // Rule GB-Eire 1946 only - Apr Sun>=9 2:00s 1:00 BST
9287  {
9288  1946 /*fromYear*/,
9289  1946 /*toYear*/,
9290  4 /*inMonth*/,
9291  7 /*onDayOfWeek*/,
9292  9 /*onDayOfMonth*/,
9293  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9294  480 /*atTimeCode (7200/15)*/,
9295  60 /*deltaMinutes*/,
9296  7 /*letterIndex ("BST")*/,
9297  },
9298  // Rule GB-Eire 1947 only - Mar 16 2:00s 1:00 BST
9299  {
9300  1947 /*fromYear*/,
9301  1947 /*toYear*/,
9302  3 /*inMonth*/,
9303  0 /*onDayOfWeek*/,
9304  16 /*onDayOfMonth*/,
9305  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9306  480 /*atTimeCode (7200/15)*/,
9307  60 /*deltaMinutes*/,
9308  7 /*letterIndex ("BST")*/,
9309  },
9310  // Rule GB-Eire 1947 only - Apr 13 1:00s 2:00 BDST
9311  {
9312  1947 /*fromYear*/,
9313  1947 /*toYear*/,
9314  4 /*inMonth*/,
9315  0 /*onDayOfWeek*/,
9316  13 /*onDayOfMonth*/,
9317  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9318  240 /*atTimeCode (3600/15)*/,
9319  120 /*deltaMinutes*/,
9320  6 /*letterIndex ("BDST")*/,
9321  },
9322  // Rule GB-Eire 1947 only - Aug 10 1:00s 1:00 BST
9323  {
9324  1947 /*fromYear*/,
9325  1947 /*toYear*/,
9326  8 /*inMonth*/,
9327  0 /*onDayOfWeek*/,
9328  10 /*onDayOfMonth*/,
9329  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9330  240 /*atTimeCode (3600/15)*/,
9331  60 /*deltaMinutes*/,
9332  7 /*letterIndex ("BST")*/,
9333  },
9334  // Rule GB-Eire 1947 only - Nov 2 2:00s 0 GMT
9335  {
9336  1947 /*fromYear*/,
9337  1947 /*toYear*/,
9338  11 /*inMonth*/,
9339  0 /*onDayOfWeek*/,
9340  2 /*onDayOfMonth*/,
9341  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9342  480 /*atTimeCode (7200/15)*/,
9343  0 /*deltaMinutes*/,
9344  17 /*letterIndex ("GMT")*/,
9345  },
9346  // Rule GB-Eire 1948 only - Mar 14 2:00s 1:00 BST
9347  {
9348  1948 /*fromYear*/,
9349  1948 /*toYear*/,
9350  3 /*inMonth*/,
9351  0 /*onDayOfWeek*/,
9352  14 /*onDayOfMonth*/,
9353  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9354  480 /*atTimeCode (7200/15)*/,
9355  60 /*deltaMinutes*/,
9356  7 /*letterIndex ("BST")*/,
9357  },
9358  // Rule GB-Eire 1948 only - Oct 31 2:00s 0 GMT
9359  {
9360  1948 /*fromYear*/,
9361  1948 /*toYear*/,
9362  10 /*inMonth*/,
9363  0 /*onDayOfWeek*/,
9364  31 /*onDayOfMonth*/,
9365  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9366  480 /*atTimeCode (7200/15)*/,
9367  0 /*deltaMinutes*/,
9368  17 /*letterIndex ("GMT")*/,
9369  },
9370  // Rule GB-Eire 1949 only - Apr 3 2:00s 1:00 BST
9371  {
9372  1949 /*fromYear*/,
9373  1949 /*toYear*/,
9374  4 /*inMonth*/,
9375  0 /*onDayOfWeek*/,
9376  3 /*onDayOfMonth*/,
9377  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9378  480 /*atTimeCode (7200/15)*/,
9379  60 /*deltaMinutes*/,
9380  7 /*letterIndex ("BST")*/,
9381  },
9382  // Rule GB-Eire 1949 only - Oct 30 2:00s 0 GMT
9383  {
9384  1949 /*fromYear*/,
9385  1949 /*toYear*/,
9386  10 /*inMonth*/,
9387  0 /*onDayOfWeek*/,
9388  30 /*onDayOfMonth*/,
9389  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9390  480 /*atTimeCode (7200/15)*/,
9391  0 /*deltaMinutes*/,
9392  17 /*letterIndex ("GMT")*/,
9393  },
9394  // Rule GB-Eire 1950 1952 - Apr Sun>=14 2:00s 1:00 BST
9395  {
9396  1950 /*fromYear*/,
9397  1952 /*toYear*/,
9398  4 /*inMonth*/,
9399  7 /*onDayOfWeek*/,
9400  14 /*onDayOfMonth*/,
9401  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9402  480 /*atTimeCode (7200/15)*/,
9403  60 /*deltaMinutes*/,
9404  7 /*letterIndex ("BST")*/,
9405  },
9406  // Rule GB-Eire 1950 1952 - Oct Sun>=21 2:00s 0 GMT
9407  {
9408  1950 /*fromYear*/,
9409  1952 /*toYear*/,
9410  10 /*inMonth*/,
9411  7 /*onDayOfWeek*/,
9412  21 /*onDayOfMonth*/,
9413  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9414  480 /*atTimeCode (7200/15)*/,
9415  0 /*deltaMinutes*/,
9416  17 /*letterIndex ("GMT")*/,
9417  },
9418  // Rule GB-Eire 1953 only - Apr Sun>=16 2:00s 1:00 BST
9419  {
9420  1953 /*fromYear*/,
9421  1953 /*toYear*/,
9422  4 /*inMonth*/,
9423  7 /*onDayOfWeek*/,
9424  16 /*onDayOfMonth*/,
9425  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9426  480 /*atTimeCode (7200/15)*/,
9427  60 /*deltaMinutes*/,
9428  7 /*letterIndex ("BST")*/,
9429  },
9430  // Rule GB-Eire 1953 1960 - Oct Sun>=2 2:00s 0 GMT
9431  {
9432  1953 /*fromYear*/,
9433  1960 /*toYear*/,
9434  10 /*inMonth*/,
9435  7 /*onDayOfWeek*/,
9436  2 /*onDayOfMonth*/,
9437  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9438  480 /*atTimeCode (7200/15)*/,
9439  0 /*deltaMinutes*/,
9440  17 /*letterIndex ("GMT")*/,
9441  },
9442  // Rule GB-Eire 1954 only - Apr Sun>=9 2:00s 1:00 BST
9443  {
9444  1954 /*fromYear*/,
9445  1954 /*toYear*/,
9446  4 /*inMonth*/,
9447  7 /*onDayOfWeek*/,
9448  9 /*onDayOfMonth*/,
9449  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9450  480 /*atTimeCode (7200/15)*/,
9451  60 /*deltaMinutes*/,
9452  7 /*letterIndex ("BST")*/,
9453  },
9454  // Rule GB-Eire 1955 1956 - Apr Sun>=16 2:00s 1:00 BST
9455  {
9456  1955 /*fromYear*/,
9457  1956 /*toYear*/,
9458  4 /*inMonth*/,
9459  7 /*onDayOfWeek*/,
9460  16 /*onDayOfMonth*/,
9461  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9462  480 /*atTimeCode (7200/15)*/,
9463  60 /*deltaMinutes*/,
9464  7 /*letterIndex ("BST")*/,
9465  },
9466  // Rule GB-Eire 1957 only - Apr Sun>=9 2:00s 1:00 BST
9467  {
9468  1957 /*fromYear*/,
9469  1957 /*toYear*/,
9470  4 /*inMonth*/,
9471  7 /*onDayOfWeek*/,
9472  9 /*onDayOfMonth*/,
9473  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9474  480 /*atTimeCode (7200/15)*/,
9475  60 /*deltaMinutes*/,
9476  7 /*letterIndex ("BST")*/,
9477  },
9478  // Rule GB-Eire 1958 1959 - Apr Sun>=16 2:00s 1:00 BST
9479  {
9480  1958 /*fromYear*/,
9481  1959 /*toYear*/,
9482  4 /*inMonth*/,
9483  7 /*onDayOfWeek*/,
9484  16 /*onDayOfMonth*/,
9485  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9486  480 /*atTimeCode (7200/15)*/,
9487  60 /*deltaMinutes*/,
9488  7 /*letterIndex ("BST")*/,
9489  },
9490  // Rule GB-Eire 1960 only - Apr Sun>=9 2:00s 1:00 BST
9491  {
9492  1960 /*fromYear*/,
9493  1960 /*toYear*/,
9494  4 /*inMonth*/,
9495  7 /*onDayOfWeek*/,
9496  9 /*onDayOfMonth*/,
9497  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9498  480 /*atTimeCode (7200/15)*/,
9499  60 /*deltaMinutes*/,
9500  7 /*letterIndex ("BST")*/,
9501  },
9502  // Rule GB-Eire 1961 1963 - Mar lastSun 2:00s 1:00 BST
9503  {
9504  1961 /*fromYear*/,
9505  1963 /*toYear*/,
9506  3 /*inMonth*/,
9507  7 /*onDayOfWeek*/,
9508  0 /*onDayOfMonth*/,
9509  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9510  480 /*atTimeCode (7200/15)*/,
9511  60 /*deltaMinutes*/,
9512  7 /*letterIndex ("BST")*/,
9513  },
9514  // Rule GB-Eire 1961 1968 - Oct Sun>=23 2:00s 0 GMT
9515  {
9516  1961 /*fromYear*/,
9517  1968 /*toYear*/,
9518  10 /*inMonth*/,
9519  7 /*onDayOfWeek*/,
9520  23 /*onDayOfMonth*/,
9521  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9522  480 /*atTimeCode (7200/15)*/,
9523  0 /*deltaMinutes*/,
9524  17 /*letterIndex ("GMT")*/,
9525  },
9526  // Rule GB-Eire 1964 1967 - Mar Sun>=19 2:00s 1:00 BST
9527  {
9528  1964 /*fromYear*/,
9529  1967 /*toYear*/,
9530  3 /*inMonth*/,
9531  7 /*onDayOfWeek*/,
9532  19 /*onDayOfMonth*/,
9533  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9534  480 /*atTimeCode (7200/15)*/,
9535  60 /*deltaMinutes*/,
9536  7 /*letterIndex ("BST")*/,
9537  },
9538  // Rule GB-Eire 1968 only - Feb 18 2:00s 1:00 BST
9539  {
9540  1968 /*fromYear*/,
9541  1968 /*toYear*/,
9542  2 /*inMonth*/,
9543  0 /*onDayOfWeek*/,
9544  18 /*onDayOfMonth*/,
9545  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9546  480 /*atTimeCode (7200/15)*/,
9547  60 /*deltaMinutes*/,
9548  7 /*letterIndex ("BST")*/,
9549  },
9550  // Rule GB-Eire 1972 1980 - Mar Sun>=16 2:00s 1:00 BST
9551  {
9552  1972 /*fromYear*/,
9553  1980 /*toYear*/,
9554  3 /*inMonth*/,
9555  7 /*onDayOfWeek*/,
9556  16 /*onDayOfMonth*/,
9557  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9558  480 /*atTimeCode (7200/15)*/,
9559  60 /*deltaMinutes*/,
9560  7 /*letterIndex ("BST")*/,
9561  },
9562  // Rule GB-Eire 1972 1980 - Oct Sun>=23 2:00s 0 GMT
9563  {
9564  1972 /*fromYear*/,
9565  1980 /*toYear*/,
9566  10 /*inMonth*/,
9567  7 /*onDayOfWeek*/,
9568  23 /*onDayOfMonth*/,
9569  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9570  480 /*atTimeCode (7200/15)*/,
9571  0 /*deltaMinutes*/,
9572  17 /*letterIndex ("GMT")*/,
9573  },
9574  // Rule GB-Eire 1981 1995 - Mar lastSun 1:00u 1:00 BST
9575  {
9576  1981 /*fromYear*/,
9577  1995 /*toYear*/,
9578  3 /*inMonth*/,
9579  7 /*onDayOfWeek*/,
9580  0 /*onDayOfMonth*/,
9581  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
9582  240 /*atTimeCode (3600/15)*/,
9583  60 /*deltaMinutes*/,
9584  7 /*letterIndex ("BST")*/,
9585  },
9586  // Rule GB-Eire 1981 1989 - Oct Sun>=23 1:00u 0 GMT
9587  {
9588  1981 /*fromYear*/,
9589  1989 /*toYear*/,
9590  10 /*inMonth*/,
9591  7 /*onDayOfWeek*/,
9592  23 /*onDayOfMonth*/,
9593  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
9594  240 /*atTimeCode (3600/15)*/,
9595  0 /*deltaMinutes*/,
9596  17 /*letterIndex ("GMT")*/,
9597  },
9598  // Rule GB-Eire 1990 1995 - Oct Sun>=22 1:00u 0 GMT
9599  {
9600  1990 /*fromYear*/,
9601  1995 /*toYear*/,
9602  10 /*inMonth*/,
9603  7 /*onDayOfWeek*/,
9604  22 /*onDayOfMonth*/,
9605  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
9606  240 /*atTimeCode (3600/15)*/,
9607  0 /*deltaMinutes*/,
9608  17 /*letterIndex ("GMT")*/,
9609  },
9610 
9611 };
9612 
9613 const complete::ZonePolicy kZonePolicyGB_Eire ACE_TIME_PROGMEM = {
9614  kZoneRulesGB_Eire /*rules*/,
9615  66 /*numRules*/,
9616 };
9617 
9618 //---------------------------------------------------------------------------
9619 // Policy name: Germany
9620 // Rules: 9
9621 //---------------------------------------------------------------------------
9622 
9623 static const complete::ZoneRule kZoneRulesGermany[] ACE_TIME_PROGMEM = {
9624  // Anchor: Rule Germany 1946 only - Oct 7 2:00s 0 -
9625  {
9626  -32767 /*fromYear*/,
9627  -32767 /*toYear*/,
9628  1 /*inMonth*/,
9629  0 /*onDayOfWeek*/,
9630  1 /*onDayOfMonth*/,
9631  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
9632  0 /*atTimeCode (0/15)*/,
9633  0 /*deltaMinutes*/,
9634  0 /*letterIndex ("")*/,
9635  },
9636  // Rule Germany 1946 only - Apr 14 2:00s 1:00 S
9637  {
9638  1946 /*fromYear*/,
9639  1946 /*toYear*/,
9640  4 /*inMonth*/,
9641  0 /*onDayOfWeek*/,
9642  14 /*onDayOfMonth*/,
9643  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9644  480 /*atTimeCode (7200/15)*/,
9645  60 /*deltaMinutes*/,
9646  25 /*letterIndex ("S")*/,
9647  },
9648  // Rule Germany 1946 only - Oct 7 2:00s 0 -
9649  {
9650  1946 /*fromYear*/,
9651  1946 /*toYear*/,
9652  10 /*inMonth*/,
9653  0 /*onDayOfWeek*/,
9654  7 /*onDayOfMonth*/,
9655  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9656  480 /*atTimeCode (7200/15)*/,
9657  0 /*deltaMinutes*/,
9658  0 /*letterIndex ("")*/,
9659  },
9660  // Rule Germany 1947 1949 - Oct Sun>=1 2:00s 0 -
9661  {
9662  1947 /*fromYear*/,
9663  1949 /*toYear*/,
9664  10 /*inMonth*/,
9665  7 /*onDayOfWeek*/,
9666  1 /*onDayOfMonth*/,
9667  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9668  480 /*atTimeCode (7200/15)*/,
9669  0 /*deltaMinutes*/,
9670  0 /*letterIndex ("")*/,
9671  },
9672  // Rule Germany 1947 only - Apr 6 3:00s 1:00 S
9673  {
9674  1947 /*fromYear*/,
9675  1947 /*toYear*/,
9676  4 /*inMonth*/,
9677  0 /*onDayOfWeek*/,
9678  6 /*onDayOfMonth*/,
9679  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9680  720 /*atTimeCode (10800/15)*/,
9681  60 /*deltaMinutes*/,
9682  25 /*letterIndex ("S")*/,
9683  },
9684  // Rule Germany 1947 only - May 11 2:00s 2:00 M
9685  {
9686  1947 /*fromYear*/,
9687  1947 /*toYear*/,
9688  5 /*inMonth*/,
9689  0 /*onDayOfWeek*/,
9690  11 /*onDayOfMonth*/,
9691  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9692  480 /*atTimeCode (7200/15)*/,
9693  120 /*deltaMinutes*/,
9694  18 /*letterIndex ("M")*/,
9695  },
9696  // Rule Germany 1947 only - Jun 29 3:00 1:00 S
9697  {
9698  1947 /*fromYear*/,
9699  1947 /*toYear*/,
9700  6 /*inMonth*/,
9701  0 /*onDayOfWeek*/,
9702  29 /*onDayOfMonth*/,
9703  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
9704  720 /*atTimeCode (10800/15)*/,
9705  60 /*deltaMinutes*/,
9706  25 /*letterIndex ("S")*/,
9707  },
9708  // Rule Germany 1948 only - Apr 18 2:00s 1:00 S
9709  {
9710  1948 /*fromYear*/,
9711  1948 /*toYear*/,
9712  4 /*inMonth*/,
9713  0 /*onDayOfWeek*/,
9714  18 /*onDayOfMonth*/,
9715  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9716  480 /*atTimeCode (7200/15)*/,
9717  60 /*deltaMinutes*/,
9718  25 /*letterIndex ("S")*/,
9719  },
9720  // Rule Germany 1949 only - Apr 10 2:00s 1:00 S
9721  {
9722  1949 /*fromYear*/,
9723  1949 /*toYear*/,
9724  4 /*inMonth*/,
9725  0 /*onDayOfWeek*/,
9726  10 /*onDayOfMonth*/,
9727  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9728  480 /*atTimeCode (7200/15)*/,
9729  60 /*deltaMinutes*/,
9730  25 /*letterIndex ("S")*/,
9731  },
9732 
9733 };
9734 
9735 const complete::ZonePolicy kZonePolicyGermany ACE_TIME_PROGMEM = {
9736  kZoneRulesGermany /*rules*/,
9737  9 /*numRules*/,
9738 };
9739 
9740 //---------------------------------------------------------------------------
9741 // Policy name: Greece
9742 // Rules: 20
9743 //---------------------------------------------------------------------------
9744 
9745 static const complete::ZoneRule kZoneRulesGreece[] ACE_TIME_PROGMEM = {
9746  // Anchor: Rule Greece 1932 only - Sep 1 0:00 0 -
9747  {
9748  -32767 /*fromYear*/,
9749  -32767 /*toYear*/,
9750  1 /*inMonth*/,
9751  0 /*onDayOfWeek*/,
9752  1 /*onDayOfMonth*/,
9753  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
9754  0 /*atTimeCode (0/15)*/,
9755  0 /*deltaMinutes*/,
9756  0 /*letterIndex ("")*/,
9757  },
9758  // Rule Greece 1932 only - Jul 7 0:00 1:00 S
9759  {
9760  1932 /*fromYear*/,
9761  1932 /*toYear*/,
9762  7 /*inMonth*/,
9763  0 /*onDayOfWeek*/,
9764  7 /*onDayOfMonth*/,
9765  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
9766  0 /*atTimeCode (0/15)*/,
9767  60 /*deltaMinutes*/,
9768  25 /*letterIndex ("S")*/,
9769  },
9770  // Rule Greece 1932 only - Sep 1 0:00 0 -
9771  {
9772  1932 /*fromYear*/,
9773  1932 /*toYear*/,
9774  9 /*inMonth*/,
9775  0 /*onDayOfWeek*/,
9776  1 /*onDayOfMonth*/,
9777  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
9778  0 /*atTimeCode (0/15)*/,
9779  0 /*deltaMinutes*/,
9780  0 /*letterIndex ("")*/,
9781  },
9782  // Rule Greece 1941 only - Apr 7 0:00 1:00 S
9783  {
9784  1941 /*fromYear*/,
9785  1941 /*toYear*/,
9786  4 /*inMonth*/,
9787  0 /*onDayOfWeek*/,
9788  7 /*onDayOfMonth*/,
9789  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
9790  0 /*atTimeCode (0/15)*/,
9791  60 /*deltaMinutes*/,
9792  25 /*letterIndex ("S")*/,
9793  },
9794  // Rule Greece 1942 only - Nov 2 3:00 0 -
9795  {
9796  1942 /*fromYear*/,
9797  1942 /*toYear*/,
9798  11 /*inMonth*/,
9799  0 /*onDayOfWeek*/,
9800  2 /*onDayOfMonth*/,
9801  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
9802  720 /*atTimeCode (10800/15)*/,
9803  0 /*deltaMinutes*/,
9804  0 /*letterIndex ("")*/,
9805  },
9806  // Rule Greece 1943 only - Mar 30 0:00 1:00 S
9807  {
9808  1943 /*fromYear*/,
9809  1943 /*toYear*/,
9810  3 /*inMonth*/,
9811  0 /*onDayOfWeek*/,
9812  30 /*onDayOfMonth*/,
9813  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
9814  0 /*atTimeCode (0/15)*/,
9815  60 /*deltaMinutes*/,
9816  25 /*letterIndex ("S")*/,
9817  },
9818  // Rule Greece 1943 only - Oct 4 0:00 0 -
9819  {
9820  1943 /*fromYear*/,
9821  1943 /*toYear*/,
9822  10 /*inMonth*/,
9823  0 /*onDayOfWeek*/,
9824  4 /*onDayOfMonth*/,
9825  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
9826  0 /*atTimeCode (0/15)*/,
9827  0 /*deltaMinutes*/,
9828  0 /*letterIndex ("")*/,
9829  },
9830  // Rule Greece 1952 only - Jul 1 0:00 1:00 S
9831  {
9832  1952 /*fromYear*/,
9833  1952 /*toYear*/,
9834  7 /*inMonth*/,
9835  0 /*onDayOfWeek*/,
9836  1 /*onDayOfMonth*/,
9837  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
9838  0 /*atTimeCode (0/15)*/,
9839  60 /*deltaMinutes*/,
9840  25 /*letterIndex ("S")*/,
9841  },
9842  // Rule Greece 1952 only - Nov 2 0:00 0 -
9843  {
9844  1952 /*fromYear*/,
9845  1952 /*toYear*/,
9846  11 /*inMonth*/,
9847  0 /*onDayOfWeek*/,
9848  2 /*onDayOfMonth*/,
9849  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
9850  0 /*atTimeCode (0/15)*/,
9851  0 /*deltaMinutes*/,
9852  0 /*letterIndex ("")*/,
9853  },
9854  // Rule Greece 1975 only - Apr 12 0:00s 1:00 S
9855  {
9856  1975 /*fromYear*/,
9857  1975 /*toYear*/,
9858  4 /*inMonth*/,
9859  0 /*onDayOfWeek*/,
9860  12 /*onDayOfMonth*/,
9861  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9862  0 /*atTimeCode (0/15)*/,
9863  60 /*deltaMinutes*/,
9864  25 /*letterIndex ("S")*/,
9865  },
9866  // Rule Greece 1975 only - Nov 26 0:00s 0 -
9867  {
9868  1975 /*fromYear*/,
9869  1975 /*toYear*/,
9870  11 /*inMonth*/,
9871  0 /*onDayOfWeek*/,
9872  26 /*onDayOfMonth*/,
9873  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9874  0 /*atTimeCode (0/15)*/,
9875  0 /*deltaMinutes*/,
9876  0 /*letterIndex ("")*/,
9877  },
9878  // Rule Greece 1976 only - Apr 11 2:00s 1:00 S
9879  {
9880  1976 /*fromYear*/,
9881  1976 /*toYear*/,
9882  4 /*inMonth*/,
9883  0 /*onDayOfWeek*/,
9884  11 /*onDayOfMonth*/,
9885  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9886  480 /*atTimeCode (7200/15)*/,
9887  60 /*deltaMinutes*/,
9888  25 /*letterIndex ("S")*/,
9889  },
9890  // Rule Greece 1976 only - Oct 10 2:00s 0 -
9891  {
9892  1976 /*fromYear*/,
9893  1976 /*toYear*/,
9894  10 /*inMonth*/,
9895  0 /*onDayOfWeek*/,
9896  10 /*onDayOfMonth*/,
9897  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9898  480 /*atTimeCode (7200/15)*/,
9899  0 /*deltaMinutes*/,
9900  0 /*letterIndex ("")*/,
9901  },
9902  // Rule Greece 1977 1978 - Apr Sun>=1 2:00s 1:00 S
9903  {
9904  1977 /*fromYear*/,
9905  1978 /*toYear*/,
9906  4 /*inMonth*/,
9907  7 /*onDayOfWeek*/,
9908  1 /*onDayOfMonth*/,
9909  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9910  480 /*atTimeCode (7200/15)*/,
9911  60 /*deltaMinutes*/,
9912  25 /*letterIndex ("S")*/,
9913  },
9914  // Rule Greece 1977 only - Sep 26 2:00s 0 -
9915  {
9916  1977 /*fromYear*/,
9917  1977 /*toYear*/,
9918  9 /*inMonth*/,
9919  0 /*onDayOfWeek*/,
9920  26 /*onDayOfMonth*/,
9921  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
9922  480 /*atTimeCode (7200/15)*/,
9923  0 /*deltaMinutes*/,
9924  0 /*letterIndex ("")*/,
9925  },
9926  // Rule Greece 1978 only - Sep 24 4:00 0 -
9927  {
9928  1978 /*fromYear*/,
9929  1978 /*toYear*/,
9930  9 /*inMonth*/,
9931  0 /*onDayOfWeek*/,
9932  24 /*onDayOfMonth*/,
9933  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
9934  960 /*atTimeCode (14400/15)*/,
9935  0 /*deltaMinutes*/,
9936  0 /*letterIndex ("")*/,
9937  },
9938  // Rule Greece 1979 only - Apr 1 9:00 1:00 S
9939  {
9940  1979 /*fromYear*/,
9941  1979 /*toYear*/,
9942  4 /*inMonth*/,
9943  0 /*onDayOfWeek*/,
9944  1 /*onDayOfMonth*/,
9945  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
9946  2160 /*atTimeCode (32400/15)*/,
9947  60 /*deltaMinutes*/,
9948  25 /*letterIndex ("S")*/,
9949  },
9950  // Rule Greece 1979 only - Sep 29 2:00 0 -
9951  {
9952  1979 /*fromYear*/,
9953  1979 /*toYear*/,
9954  9 /*inMonth*/,
9955  0 /*onDayOfWeek*/,
9956  29 /*onDayOfMonth*/,
9957  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
9958  480 /*atTimeCode (7200/15)*/,
9959  0 /*deltaMinutes*/,
9960  0 /*letterIndex ("")*/,
9961  },
9962  // Rule Greece 1980 only - Apr 1 0:00 1:00 S
9963  {
9964  1980 /*fromYear*/,
9965  1980 /*toYear*/,
9966  4 /*inMonth*/,
9967  0 /*onDayOfWeek*/,
9968  1 /*onDayOfMonth*/,
9969  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
9970  0 /*atTimeCode (0/15)*/,
9971  60 /*deltaMinutes*/,
9972  25 /*letterIndex ("S")*/,
9973  },
9974  // Rule Greece 1980 only - Sep 28 0:00 0 -
9975  {
9976  1980 /*fromYear*/,
9977  1980 /*toYear*/,
9978  9 /*inMonth*/,
9979  0 /*onDayOfWeek*/,
9980  28 /*onDayOfMonth*/,
9981  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
9982  0 /*atTimeCode (0/15)*/,
9983  0 /*deltaMinutes*/,
9984  0 /*letterIndex ("")*/,
9985  },
9986 
9987 };
9988 
9989 const complete::ZonePolicy kZonePolicyGreece ACE_TIME_PROGMEM = {
9990  kZoneRulesGreece /*rules*/,
9991  20 /*numRules*/,
9992 };
9993 
9994 //---------------------------------------------------------------------------
9995 // Policy name: Guam
9996 // Rules: 15
9997 //---------------------------------------------------------------------------
9998 
9999 static const complete::ZoneRule kZoneRulesGuam[] ACE_TIME_PROGMEM = {
10000  // Anchor: Rule Guam 1961 only - Jan 29 2:00 0 S
10001  {
10002  -32767 /*fromYear*/,
10003  -32767 /*toYear*/,
10004  1 /*inMonth*/,
10005  0 /*onDayOfWeek*/,
10006  1 /*onDayOfMonth*/,
10007  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10008  0 /*atTimeCode (0/15)*/,
10009  0 /*deltaMinutes*/,
10010  25 /*letterIndex ("S")*/,
10011  },
10012  // Rule Guam 1959 only - Jun 27 2:00 1:00 D
10013  {
10014  1959 /*fromYear*/,
10015  1959 /*toYear*/,
10016  6 /*inMonth*/,
10017  0 /*onDayOfWeek*/,
10018  27 /*onDayOfMonth*/,
10019  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10020  480 /*atTimeCode (7200/15)*/,
10021  60 /*deltaMinutes*/,
10022  13 /*letterIndex ("D")*/,
10023  },
10024  // Rule Guam 1961 only - Jan 29 2:00 0 S
10025  {
10026  1961 /*fromYear*/,
10027  1961 /*toYear*/,
10028  1 /*inMonth*/,
10029  0 /*onDayOfWeek*/,
10030  29 /*onDayOfMonth*/,
10031  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10032  480 /*atTimeCode (7200/15)*/,
10033  0 /*deltaMinutes*/,
10034  25 /*letterIndex ("S")*/,
10035  },
10036  // Rule Guam 1967 only - Sep 1 2:00 1:00 D
10037  {
10038  1967 /*fromYear*/,
10039  1967 /*toYear*/,
10040  9 /*inMonth*/,
10041  0 /*onDayOfWeek*/,
10042  1 /*onDayOfMonth*/,
10043  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10044  480 /*atTimeCode (7200/15)*/,
10045  60 /*deltaMinutes*/,
10046  13 /*letterIndex ("D")*/,
10047  },
10048  // Rule Guam 1969 only - Jan 26 0:01 0 S
10049  {
10050  1969 /*fromYear*/,
10051  1969 /*toYear*/,
10052  1 /*inMonth*/,
10053  0 /*onDayOfWeek*/,
10054  26 /*onDayOfMonth*/,
10055  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10056  4 /*atTimeCode (60/15)*/,
10057  0 /*deltaMinutes*/,
10058  25 /*letterIndex ("S")*/,
10059  },
10060  // Rule Guam 1969 only - Jun 22 2:00 1:00 D
10061  {
10062  1969 /*fromYear*/,
10063  1969 /*toYear*/,
10064  6 /*inMonth*/,
10065  0 /*onDayOfWeek*/,
10066  22 /*onDayOfMonth*/,
10067  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10068  480 /*atTimeCode (7200/15)*/,
10069  60 /*deltaMinutes*/,
10070  13 /*letterIndex ("D")*/,
10071  },
10072  // Rule Guam 1969 only - Aug 31 2:00 0 S
10073  {
10074  1969 /*fromYear*/,
10075  1969 /*toYear*/,
10076  8 /*inMonth*/,
10077  0 /*onDayOfWeek*/,
10078  31 /*onDayOfMonth*/,
10079  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10080  480 /*atTimeCode (7200/15)*/,
10081  0 /*deltaMinutes*/,
10082  25 /*letterIndex ("S")*/,
10083  },
10084  // Rule Guam 1970 1971 - Apr lastSun 2:00 1:00 D
10085  {
10086  1970 /*fromYear*/,
10087  1971 /*toYear*/,
10088  4 /*inMonth*/,
10089  7 /*onDayOfWeek*/,
10090  0 /*onDayOfMonth*/,
10091  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10092  480 /*atTimeCode (7200/15)*/,
10093  60 /*deltaMinutes*/,
10094  13 /*letterIndex ("D")*/,
10095  },
10096  // Rule Guam 1970 1971 - Sep Sun>=1 2:00 0 S
10097  {
10098  1970 /*fromYear*/,
10099  1971 /*toYear*/,
10100  9 /*inMonth*/,
10101  7 /*onDayOfWeek*/,
10102  1 /*onDayOfMonth*/,
10103  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10104  480 /*atTimeCode (7200/15)*/,
10105  0 /*deltaMinutes*/,
10106  25 /*letterIndex ("S")*/,
10107  },
10108  // Rule Guam 1973 only - Dec 16 2:00 1:00 D
10109  {
10110  1973 /*fromYear*/,
10111  1973 /*toYear*/,
10112  12 /*inMonth*/,
10113  0 /*onDayOfWeek*/,
10114  16 /*onDayOfMonth*/,
10115  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10116  480 /*atTimeCode (7200/15)*/,
10117  60 /*deltaMinutes*/,
10118  13 /*letterIndex ("D")*/,
10119  },
10120  // Rule Guam 1974 only - Feb 24 2:00 0 S
10121  {
10122  1974 /*fromYear*/,
10123  1974 /*toYear*/,
10124  2 /*inMonth*/,
10125  0 /*onDayOfWeek*/,
10126  24 /*onDayOfMonth*/,
10127  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10128  480 /*atTimeCode (7200/15)*/,
10129  0 /*deltaMinutes*/,
10130  25 /*letterIndex ("S")*/,
10131  },
10132  // Rule Guam 1976 only - May 26 2:00 1:00 D
10133  {
10134  1976 /*fromYear*/,
10135  1976 /*toYear*/,
10136  5 /*inMonth*/,
10137  0 /*onDayOfWeek*/,
10138  26 /*onDayOfMonth*/,
10139  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10140  480 /*atTimeCode (7200/15)*/,
10141  60 /*deltaMinutes*/,
10142  13 /*letterIndex ("D")*/,
10143  },
10144  // Rule Guam 1976 only - Aug 22 2:01 0 S
10145  {
10146  1976 /*fromYear*/,
10147  1976 /*toYear*/,
10148  8 /*inMonth*/,
10149  0 /*onDayOfWeek*/,
10150  22 /*onDayOfMonth*/,
10151  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10152  484 /*atTimeCode (7260/15)*/,
10153  0 /*deltaMinutes*/,
10154  25 /*letterIndex ("S")*/,
10155  },
10156  // Rule Guam 1977 only - Apr 24 2:00 1:00 D
10157  {
10158  1977 /*fromYear*/,
10159  1977 /*toYear*/,
10160  4 /*inMonth*/,
10161  0 /*onDayOfWeek*/,
10162  24 /*onDayOfMonth*/,
10163  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10164  480 /*atTimeCode (7200/15)*/,
10165  60 /*deltaMinutes*/,
10166  13 /*letterIndex ("D")*/,
10167  },
10168  // Rule Guam 1977 only - Aug 28 2:00 0 S
10169  {
10170  1977 /*fromYear*/,
10171  1977 /*toYear*/,
10172  8 /*inMonth*/,
10173  0 /*onDayOfWeek*/,
10174  28 /*onDayOfMonth*/,
10175  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10176  480 /*atTimeCode (7200/15)*/,
10177  0 /*deltaMinutes*/,
10178  25 /*letterIndex ("S")*/,
10179  },
10180 
10181 };
10182 
10183 const complete::ZonePolicy kZonePolicyGuam ACE_TIME_PROGMEM = {
10184  kZoneRulesGuam /*rules*/,
10185  15 /*numRules*/,
10186 };
10187 
10188 //---------------------------------------------------------------------------
10189 // Policy name: Guat
10190 // Rules: 9
10191 //---------------------------------------------------------------------------
10192 
10193 static const complete::ZoneRule kZoneRulesGuat[] ACE_TIME_PROGMEM = {
10194  // Anchor: Rule Guat 1974 only - Feb 24 0:00 0 S
10195  {
10196  -32767 /*fromYear*/,
10197  -32767 /*toYear*/,
10198  1 /*inMonth*/,
10199  0 /*onDayOfWeek*/,
10200  1 /*onDayOfMonth*/,
10201  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10202  0 /*atTimeCode (0/15)*/,
10203  0 /*deltaMinutes*/,
10204  25 /*letterIndex ("S")*/,
10205  },
10206  // Rule Guat 1973 only - Nov 25 0:00 1:00 D
10207  {
10208  1973 /*fromYear*/,
10209  1973 /*toYear*/,
10210  11 /*inMonth*/,
10211  0 /*onDayOfWeek*/,
10212  25 /*onDayOfMonth*/,
10213  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10214  0 /*atTimeCode (0/15)*/,
10215  60 /*deltaMinutes*/,
10216  13 /*letterIndex ("D")*/,
10217  },
10218  // Rule Guat 1974 only - Feb 24 0:00 0 S
10219  {
10220  1974 /*fromYear*/,
10221  1974 /*toYear*/,
10222  2 /*inMonth*/,
10223  0 /*onDayOfWeek*/,
10224  24 /*onDayOfMonth*/,
10225  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10226  0 /*atTimeCode (0/15)*/,
10227  0 /*deltaMinutes*/,
10228  25 /*letterIndex ("S")*/,
10229  },
10230  // Rule Guat 1983 only - May 21 0:00 1:00 D
10231  {
10232  1983 /*fromYear*/,
10233  1983 /*toYear*/,
10234  5 /*inMonth*/,
10235  0 /*onDayOfWeek*/,
10236  21 /*onDayOfMonth*/,
10237  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10238  0 /*atTimeCode (0/15)*/,
10239  60 /*deltaMinutes*/,
10240  13 /*letterIndex ("D")*/,
10241  },
10242  // Rule Guat 1983 only - Sep 22 0:00 0 S
10243  {
10244  1983 /*fromYear*/,
10245  1983 /*toYear*/,
10246  9 /*inMonth*/,
10247  0 /*onDayOfWeek*/,
10248  22 /*onDayOfMonth*/,
10249  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10250  0 /*atTimeCode (0/15)*/,
10251  0 /*deltaMinutes*/,
10252  25 /*letterIndex ("S")*/,
10253  },
10254  // Rule Guat 1991 only - Mar 23 0:00 1:00 D
10255  {
10256  1991 /*fromYear*/,
10257  1991 /*toYear*/,
10258  3 /*inMonth*/,
10259  0 /*onDayOfWeek*/,
10260  23 /*onDayOfMonth*/,
10261  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10262  0 /*atTimeCode (0/15)*/,
10263  60 /*deltaMinutes*/,
10264  13 /*letterIndex ("D")*/,
10265  },
10266  // Rule Guat 1991 only - Sep 7 0:00 0 S
10267  {
10268  1991 /*fromYear*/,
10269  1991 /*toYear*/,
10270  9 /*inMonth*/,
10271  0 /*onDayOfWeek*/,
10272  7 /*onDayOfMonth*/,
10273  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10274  0 /*atTimeCode (0/15)*/,
10275  0 /*deltaMinutes*/,
10276  25 /*letterIndex ("S")*/,
10277  },
10278  // Rule Guat 2006 only - Apr 30 0:00 1:00 D
10279  {
10280  2006 /*fromYear*/,
10281  2006 /*toYear*/,
10282  4 /*inMonth*/,
10283  0 /*onDayOfWeek*/,
10284  30 /*onDayOfMonth*/,
10285  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10286  0 /*atTimeCode (0/15)*/,
10287  60 /*deltaMinutes*/,
10288  13 /*letterIndex ("D")*/,
10289  },
10290  // Rule Guat 2006 only - Oct 1 0:00 0 S
10291  {
10292  2006 /*fromYear*/,
10293  2006 /*toYear*/,
10294  10 /*inMonth*/,
10295  0 /*onDayOfWeek*/,
10296  1 /*onDayOfMonth*/,
10297  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10298  0 /*atTimeCode (0/15)*/,
10299  0 /*deltaMinutes*/,
10300  25 /*letterIndex ("S")*/,
10301  },
10302 
10303 };
10304 
10305 const complete::ZonePolicy kZonePolicyGuat ACE_TIME_PROGMEM = {
10306  kZoneRulesGuat /*rules*/,
10307  9 /*numRules*/,
10308 };
10309 
10310 //---------------------------------------------------------------------------
10311 // Policy name: HK
10312 // Rules: 15
10313 //---------------------------------------------------------------------------
10314 
10315 static const complete::ZoneRule kZoneRulesHK[] ACE_TIME_PROGMEM = {
10316  // Anchor: Rule HK 1946 only - Dec 1 3:30s 0 -
10317  {
10318  -32767 /*fromYear*/,
10319  -32767 /*toYear*/,
10320  1 /*inMonth*/,
10321  0 /*onDayOfWeek*/,
10322  1 /*onDayOfMonth*/,
10323  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10324  0 /*atTimeCode (0/15)*/,
10325  0 /*deltaMinutes*/,
10326  0 /*letterIndex ("")*/,
10327  },
10328  // Rule HK 1946 only - Apr 21 0:00 1:00 S
10329  {
10330  1946 /*fromYear*/,
10331  1946 /*toYear*/,
10332  4 /*inMonth*/,
10333  0 /*onDayOfWeek*/,
10334  21 /*onDayOfMonth*/,
10335  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10336  0 /*atTimeCode (0/15)*/,
10337  60 /*deltaMinutes*/,
10338  25 /*letterIndex ("S")*/,
10339  },
10340  // Rule HK 1946 only - Dec 1 3:30s 0 -
10341  {
10342  1946 /*fromYear*/,
10343  1946 /*toYear*/,
10344  12 /*inMonth*/,
10345  0 /*onDayOfWeek*/,
10346  1 /*onDayOfMonth*/,
10347  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
10348  840 /*atTimeCode (12600/15)*/,
10349  0 /*deltaMinutes*/,
10350  0 /*letterIndex ("")*/,
10351  },
10352  // Rule HK 1947 only - Apr 13 3:30s 1:00 S
10353  {
10354  1947 /*fromYear*/,
10355  1947 /*toYear*/,
10356  4 /*inMonth*/,
10357  0 /*onDayOfWeek*/,
10358  13 /*onDayOfMonth*/,
10359  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
10360  840 /*atTimeCode (12600/15)*/,
10361  60 /*deltaMinutes*/,
10362  25 /*letterIndex ("S")*/,
10363  },
10364  // Rule HK 1947 only - Nov 30 3:30s 0 -
10365  {
10366  1947 /*fromYear*/,
10367  1947 /*toYear*/,
10368  11 /*inMonth*/,
10369  0 /*onDayOfWeek*/,
10370  30 /*onDayOfMonth*/,
10371  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
10372  840 /*atTimeCode (12600/15)*/,
10373  0 /*deltaMinutes*/,
10374  0 /*letterIndex ("")*/,
10375  },
10376  // Rule HK 1948 only - May 2 3:30s 1:00 S
10377  {
10378  1948 /*fromYear*/,
10379  1948 /*toYear*/,
10380  5 /*inMonth*/,
10381  0 /*onDayOfWeek*/,
10382  2 /*onDayOfMonth*/,
10383  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
10384  840 /*atTimeCode (12600/15)*/,
10385  60 /*deltaMinutes*/,
10386  25 /*letterIndex ("S")*/,
10387  },
10388  // Rule HK 1948 1952 - Oct Sun>=28 3:30s 0 -
10389  {
10390  1948 /*fromYear*/,
10391  1952 /*toYear*/,
10392  10 /*inMonth*/,
10393  7 /*onDayOfWeek*/,
10394  28 /*onDayOfMonth*/,
10395  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
10396  840 /*atTimeCode (12600/15)*/,
10397  0 /*deltaMinutes*/,
10398  0 /*letterIndex ("")*/,
10399  },
10400  // Rule HK 1949 1953 - Apr Sun>=1 3:30 1:00 S
10401  {
10402  1949 /*fromYear*/,
10403  1953 /*toYear*/,
10404  4 /*inMonth*/,
10405  7 /*onDayOfWeek*/,
10406  1 /*onDayOfMonth*/,
10407  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10408  840 /*atTimeCode (12600/15)*/,
10409  60 /*deltaMinutes*/,
10410  25 /*letterIndex ("S")*/,
10411  },
10412  // Rule HK 1953 1964 - Oct Sun>=31 3:30 0 -
10413  {
10414  1953 /*fromYear*/,
10415  1964 /*toYear*/,
10416  10 /*inMonth*/,
10417  7 /*onDayOfWeek*/,
10418  31 /*onDayOfMonth*/,
10419  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10420  840 /*atTimeCode (12600/15)*/,
10421  0 /*deltaMinutes*/,
10422  0 /*letterIndex ("")*/,
10423  },
10424  // Rule HK 1954 1964 - Mar Sun>=18 3:30 1:00 S
10425  {
10426  1954 /*fromYear*/,
10427  1964 /*toYear*/,
10428  3 /*inMonth*/,
10429  7 /*onDayOfWeek*/,
10430  18 /*onDayOfMonth*/,
10431  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10432  840 /*atTimeCode (12600/15)*/,
10433  60 /*deltaMinutes*/,
10434  25 /*letterIndex ("S")*/,
10435  },
10436  // Rule HK 1965 1976 - Apr Sun>=16 3:30 1:00 S
10437  {
10438  1965 /*fromYear*/,
10439  1976 /*toYear*/,
10440  4 /*inMonth*/,
10441  7 /*onDayOfWeek*/,
10442  16 /*onDayOfMonth*/,
10443  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10444  840 /*atTimeCode (12600/15)*/,
10445  60 /*deltaMinutes*/,
10446  25 /*letterIndex ("S")*/,
10447  },
10448  // Rule HK 1965 1976 - Oct Sun>=16 3:30 0 -
10449  {
10450  1965 /*fromYear*/,
10451  1976 /*toYear*/,
10452  10 /*inMonth*/,
10453  7 /*onDayOfWeek*/,
10454  16 /*onDayOfMonth*/,
10455  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10456  840 /*atTimeCode (12600/15)*/,
10457  0 /*deltaMinutes*/,
10458  0 /*letterIndex ("")*/,
10459  },
10460  // Rule HK 1973 only - Dec 30 3:30 1:00 S
10461  {
10462  1973 /*fromYear*/,
10463  1973 /*toYear*/,
10464  12 /*inMonth*/,
10465  0 /*onDayOfWeek*/,
10466  30 /*onDayOfMonth*/,
10467  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10468  840 /*atTimeCode (12600/15)*/,
10469  60 /*deltaMinutes*/,
10470  25 /*letterIndex ("S")*/,
10471  },
10472  // Rule HK 1979 only - May 13 3:30 1:00 S
10473  {
10474  1979 /*fromYear*/,
10475  1979 /*toYear*/,
10476  5 /*inMonth*/,
10477  0 /*onDayOfWeek*/,
10478  13 /*onDayOfMonth*/,
10479  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10480  840 /*atTimeCode (12600/15)*/,
10481  60 /*deltaMinutes*/,
10482  25 /*letterIndex ("S")*/,
10483  },
10484  // Rule HK 1979 only - Oct 21 3:30 0 -
10485  {
10486  1979 /*fromYear*/,
10487  1979 /*toYear*/,
10488  10 /*inMonth*/,
10489  0 /*onDayOfWeek*/,
10490  21 /*onDayOfMonth*/,
10491  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10492  840 /*atTimeCode (12600/15)*/,
10493  0 /*deltaMinutes*/,
10494  0 /*letterIndex ("")*/,
10495  },
10496 
10497 };
10498 
10499 const complete::ZonePolicy kZonePolicyHK ACE_TIME_PROGMEM = {
10500  kZoneRulesHK /*rules*/,
10501  15 /*numRules*/,
10502 };
10503 
10504 //---------------------------------------------------------------------------
10505 // Policy name: Haiti
10506 // Rules: 12
10507 //---------------------------------------------------------------------------
10508 
10509 static const complete::ZoneRule kZoneRulesHaiti[] ACE_TIME_PROGMEM = {
10510  // Anchor: Rule Haiti 1983 1987 - Oct lastSun 0:00 0 S
10511  {
10512  -32767 /*fromYear*/,
10513  -32767 /*toYear*/,
10514  1 /*inMonth*/,
10515  0 /*onDayOfWeek*/,
10516  1 /*onDayOfMonth*/,
10517  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10518  0 /*atTimeCode (0/15)*/,
10519  0 /*deltaMinutes*/,
10520  25 /*letterIndex ("S")*/,
10521  },
10522  // Rule Haiti 1983 only - May 8 0:00 1:00 D
10523  {
10524  1983 /*fromYear*/,
10525  1983 /*toYear*/,
10526  5 /*inMonth*/,
10527  0 /*onDayOfWeek*/,
10528  8 /*onDayOfMonth*/,
10529  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10530  0 /*atTimeCode (0/15)*/,
10531  60 /*deltaMinutes*/,
10532  13 /*letterIndex ("D")*/,
10533  },
10534  // Rule Haiti 1984 1987 - Apr lastSun 0:00 1:00 D
10535  {
10536  1984 /*fromYear*/,
10537  1987 /*toYear*/,
10538  4 /*inMonth*/,
10539  7 /*onDayOfWeek*/,
10540  0 /*onDayOfMonth*/,
10541  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10542  0 /*atTimeCode (0/15)*/,
10543  60 /*deltaMinutes*/,
10544  13 /*letterIndex ("D")*/,
10545  },
10546  // Rule Haiti 1983 1987 - Oct lastSun 0:00 0 S
10547  {
10548  1983 /*fromYear*/,
10549  1987 /*toYear*/,
10550  10 /*inMonth*/,
10551  7 /*onDayOfWeek*/,
10552  0 /*onDayOfMonth*/,
10553  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10554  0 /*atTimeCode (0/15)*/,
10555  0 /*deltaMinutes*/,
10556  25 /*letterIndex ("S")*/,
10557  },
10558  // Rule Haiti 1988 1997 - Apr Sun>=1 1:00s 1:00 D
10559  {
10560  1988 /*fromYear*/,
10561  1997 /*toYear*/,
10562  4 /*inMonth*/,
10563  7 /*onDayOfWeek*/,
10564  1 /*onDayOfMonth*/,
10565  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
10566  240 /*atTimeCode (3600/15)*/,
10567  60 /*deltaMinutes*/,
10568  13 /*letterIndex ("D")*/,
10569  },
10570  // Rule Haiti 1988 1997 - Oct lastSun 1:00s 0 S
10571  {
10572  1988 /*fromYear*/,
10573  1997 /*toYear*/,
10574  10 /*inMonth*/,
10575  7 /*onDayOfWeek*/,
10576  0 /*onDayOfMonth*/,
10577  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
10578  240 /*atTimeCode (3600/15)*/,
10579  0 /*deltaMinutes*/,
10580  25 /*letterIndex ("S")*/,
10581  },
10582  // Rule Haiti 2005 2006 - Apr Sun>=1 0:00 1:00 D
10583  {
10584  2005 /*fromYear*/,
10585  2006 /*toYear*/,
10586  4 /*inMonth*/,
10587  7 /*onDayOfWeek*/,
10588  1 /*onDayOfMonth*/,
10589  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10590  0 /*atTimeCode (0/15)*/,
10591  60 /*deltaMinutes*/,
10592  13 /*letterIndex ("D")*/,
10593  },
10594  // Rule Haiti 2005 2006 - Oct lastSun 0:00 0 S
10595  {
10596  2005 /*fromYear*/,
10597  2006 /*toYear*/,
10598  10 /*inMonth*/,
10599  7 /*onDayOfWeek*/,
10600  0 /*onDayOfMonth*/,
10601  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10602  0 /*atTimeCode (0/15)*/,
10603  0 /*deltaMinutes*/,
10604  25 /*letterIndex ("S")*/,
10605  },
10606  // Rule Haiti 2012 2015 - Mar Sun>=8 2:00 1:00 D
10607  {
10608  2012 /*fromYear*/,
10609  2015 /*toYear*/,
10610  3 /*inMonth*/,
10611  7 /*onDayOfWeek*/,
10612  8 /*onDayOfMonth*/,
10613  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10614  480 /*atTimeCode (7200/15)*/,
10615  60 /*deltaMinutes*/,
10616  13 /*letterIndex ("D")*/,
10617  },
10618  // Rule Haiti 2012 2015 - Nov Sun>=1 2:00 0 S
10619  {
10620  2012 /*fromYear*/,
10621  2015 /*toYear*/,
10622  11 /*inMonth*/,
10623  7 /*onDayOfWeek*/,
10624  1 /*onDayOfMonth*/,
10625  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10626  480 /*atTimeCode (7200/15)*/,
10627  0 /*deltaMinutes*/,
10628  25 /*letterIndex ("S")*/,
10629  },
10630  // Rule Haiti 2017 max - Mar Sun>=8 2:00 1:00 D
10631  {
10632  2017 /*fromYear*/,
10633  32766 /*toYear*/,
10634  3 /*inMonth*/,
10635  7 /*onDayOfWeek*/,
10636  8 /*onDayOfMonth*/,
10637  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10638  480 /*atTimeCode (7200/15)*/,
10639  60 /*deltaMinutes*/,
10640  13 /*letterIndex ("D")*/,
10641  },
10642  // Rule Haiti 2017 max - Nov Sun>=1 2:00 0 S
10643  {
10644  2017 /*fromYear*/,
10645  32766 /*toYear*/,
10646  11 /*inMonth*/,
10647  7 /*onDayOfWeek*/,
10648  1 /*onDayOfMonth*/,
10649  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10650  480 /*atTimeCode (7200/15)*/,
10651  0 /*deltaMinutes*/,
10652  25 /*letterIndex ("S")*/,
10653  },
10654 
10655 };
10656 
10657 const complete::ZonePolicy kZonePolicyHaiti ACE_TIME_PROGMEM = {
10658  kZoneRulesHaiti /*rules*/,
10659  12 /*numRules*/,
10660 };
10661 
10662 //---------------------------------------------------------------------------
10663 // Policy name: Halifax
10664 // Rules: 42
10665 //---------------------------------------------------------------------------
10666 
10667 static const complete::ZoneRule kZoneRulesHalifax[] ACE_TIME_PROGMEM = {
10668  // Anchor: Rule Halifax 1916 only - Oct 1 0:00 0 S
10669  {
10670  -32767 /*fromYear*/,
10671  -32767 /*toYear*/,
10672  1 /*inMonth*/,
10673  0 /*onDayOfWeek*/,
10674  1 /*onDayOfMonth*/,
10675  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10676  0 /*atTimeCode (0/15)*/,
10677  0 /*deltaMinutes*/,
10678  25 /*letterIndex ("S")*/,
10679  },
10680  // Rule Halifax 1916 only - Apr 1 0:00 1:00 D
10681  {
10682  1916 /*fromYear*/,
10683  1916 /*toYear*/,
10684  4 /*inMonth*/,
10685  0 /*onDayOfWeek*/,
10686  1 /*onDayOfMonth*/,
10687  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10688  0 /*atTimeCode (0/15)*/,
10689  60 /*deltaMinutes*/,
10690  13 /*letterIndex ("D")*/,
10691  },
10692  // Rule Halifax 1916 only - Oct 1 0:00 0 S
10693  {
10694  1916 /*fromYear*/,
10695  1916 /*toYear*/,
10696  10 /*inMonth*/,
10697  0 /*onDayOfWeek*/,
10698  1 /*onDayOfMonth*/,
10699  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10700  0 /*atTimeCode (0/15)*/,
10701  0 /*deltaMinutes*/,
10702  25 /*letterIndex ("S")*/,
10703  },
10704  // Rule Halifax 1920 only - May 9 0:00 1:00 D
10705  {
10706  1920 /*fromYear*/,
10707  1920 /*toYear*/,
10708  5 /*inMonth*/,
10709  0 /*onDayOfWeek*/,
10710  9 /*onDayOfMonth*/,
10711  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10712  0 /*atTimeCode (0/15)*/,
10713  60 /*deltaMinutes*/,
10714  13 /*letterIndex ("D")*/,
10715  },
10716  // Rule Halifax 1920 only - Aug 29 0:00 0 S
10717  {
10718  1920 /*fromYear*/,
10719  1920 /*toYear*/,
10720  8 /*inMonth*/,
10721  0 /*onDayOfWeek*/,
10722  29 /*onDayOfMonth*/,
10723  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10724  0 /*atTimeCode (0/15)*/,
10725  0 /*deltaMinutes*/,
10726  25 /*letterIndex ("S")*/,
10727  },
10728  // Rule Halifax 1921 only - May 6 0:00 1:00 D
10729  {
10730  1921 /*fromYear*/,
10731  1921 /*toYear*/,
10732  5 /*inMonth*/,
10733  0 /*onDayOfWeek*/,
10734  6 /*onDayOfMonth*/,
10735  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10736  0 /*atTimeCode (0/15)*/,
10737  60 /*deltaMinutes*/,
10738  13 /*letterIndex ("D")*/,
10739  },
10740  // Rule Halifax 1921 1922 - Sep 5 0:00 0 S
10741  {
10742  1921 /*fromYear*/,
10743  1922 /*toYear*/,
10744  9 /*inMonth*/,
10745  0 /*onDayOfWeek*/,
10746  5 /*onDayOfMonth*/,
10747  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10748  0 /*atTimeCode (0/15)*/,
10749  0 /*deltaMinutes*/,
10750  25 /*letterIndex ("S")*/,
10751  },
10752  // Rule Halifax 1922 only - Apr 30 0:00 1:00 D
10753  {
10754  1922 /*fromYear*/,
10755  1922 /*toYear*/,
10756  4 /*inMonth*/,
10757  0 /*onDayOfWeek*/,
10758  30 /*onDayOfMonth*/,
10759  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10760  0 /*atTimeCode (0/15)*/,
10761  60 /*deltaMinutes*/,
10762  13 /*letterIndex ("D")*/,
10763  },
10764  // Rule Halifax 1923 1925 - May Sun>=1 0:00 1:00 D
10765  {
10766  1923 /*fromYear*/,
10767  1925 /*toYear*/,
10768  5 /*inMonth*/,
10769  7 /*onDayOfWeek*/,
10770  1 /*onDayOfMonth*/,
10771  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10772  0 /*atTimeCode (0/15)*/,
10773  60 /*deltaMinutes*/,
10774  13 /*letterIndex ("D")*/,
10775  },
10776  // Rule Halifax 1923 only - Sep 4 0:00 0 S
10777  {
10778  1923 /*fromYear*/,
10779  1923 /*toYear*/,
10780  9 /*inMonth*/,
10781  0 /*onDayOfWeek*/,
10782  4 /*onDayOfMonth*/,
10783  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10784  0 /*atTimeCode (0/15)*/,
10785  0 /*deltaMinutes*/,
10786  25 /*letterIndex ("S")*/,
10787  },
10788  // Rule Halifax 1924 only - Sep 15 0:00 0 S
10789  {
10790  1924 /*fromYear*/,
10791  1924 /*toYear*/,
10792  9 /*inMonth*/,
10793  0 /*onDayOfWeek*/,
10794  15 /*onDayOfMonth*/,
10795  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10796  0 /*atTimeCode (0/15)*/,
10797  0 /*deltaMinutes*/,
10798  25 /*letterIndex ("S")*/,
10799  },
10800  // Rule Halifax 1925 only - Sep 28 0:00 0 S
10801  {
10802  1925 /*fromYear*/,
10803  1925 /*toYear*/,
10804  9 /*inMonth*/,
10805  0 /*onDayOfWeek*/,
10806  28 /*onDayOfMonth*/,
10807  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10808  0 /*atTimeCode (0/15)*/,
10809  0 /*deltaMinutes*/,
10810  25 /*letterIndex ("S")*/,
10811  },
10812  // Rule Halifax 1926 only - May 16 0:00 1:00 D
10813  {
10814  1926 /*fromYear*/,
10815  1926 /*toYear*/,
10816  5 /*inMonth*/,
10817  0 /*onDayOfWeek*/,
10818  16 /*onDayOfMonth*/,
10819  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10820  0 /*atTimeCode (0/15)*/,
10821  60 /*deltaMinutes*/,
10822  13 /*letterIndex ("D")*/,
10823  },
10824  // Rule Halifax 1926 only - Sep 13 0:00 0 S
10825  {
10826  1926 /*fromYear*/,
10827  1926 /*toYear*/,
10828  9 /*inMonth*/,
10829  0 /*onDayOfWeek*/,
10830  13 /*onDayOfMonth*/,
10831  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10832  0 /*atTimeCode (0/15)*/,
10833  0 /*deltaMinutes*/,
10834  25 /*letterIndex ("S")*/,
10835  },
10836  // Rule Halifax 1927 only - May 1 0:00 1:00 D
10837  {
10838  1927 /*fromYear*/,
10839  1927 /*toYear*/,
10840  5 /*inMonth*/,
10841  0 /*onDayOfWeek*/,
10842  1 /*onDayOfMonth*/,
10843  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10844  0 /*atTimeCode (0/15)*/,
10845  60 /*deltaMinutes*/,
10846  13 /*letterIndex ("D")*/,
10847  },
10848  // Rule Halifax 1927 only - Sep 26 0:00 0 S
10849  {
10850  1927 /*fromYear*/,
10851  1927 /*toYear*/,
10852  9 /*inMonth*/,
10853  0 /*onDayOfWeek*/,
10854  26 /*onDayOfMonth*/,
10855  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10856  0 /*atTimeCode (0/15)*/,
10857  0 /*deltaMinutes*/,
10858  25 /*letterIndex ("S")*/,
10859  },
10860  // Rule Halifax 1928 1931 - May Sun>=8 0:00 1:00 D
10861  {
10862  1928 /*fromYear*/,
10863  1931 /*toYear*/,
10864  5 /*inMonth*/,
10865  7 /*onDayOfWeek*/,
10866  8 /*onDayOfMonth*/,
10867  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10868  0 /*atTimeCode (0/15)*/,
10869  60 /*deltaMinutes*/,
10870  13 /*letterIndex ("D")*/,
10871  },
10872  // Rule Halifax 1928 only - Sep 9 0:00 0 S
10873  {
10874  1928 /*fromYear*/,
10875  1928 /*toYear*/,
10876  9 /*inMonth*/,
10877  0 /*onDayOfWeek*/,
10878  9 /*onDayOfMonth*/,
10879  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10880  0 /*atTimeCode (0/15)*/,
10881  0 /*deltaMinutes*/,
10882  25 /*letterIndex ("S")*/,
10883  },
10884  // Rule Halifax 1929 only - Sep 3 0:00 0 S
10885  {
10886  1929 /*fromYear*/,
10887  1929 /*toYear*/,
10888  9 /*inMonth*/,
10889  0 /*onDayOfWeek*/,
10890  3 /*onDayOfMonth*/,
10891  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10892  0 /*atTimeCode (0/15)*/,
10893  0 /*deltaMinutes*/,
10894  25 /*letterIndex ("S")*/,
10895  },
10896  // Rule Halifax 1930 only - Sep 15 0:00 0 S
10897  {
10898  1930 /*fromYear*/,
10899  1930 /*toYear*/,
10900  9 /*inMonth*/,
10901  0 /*onDayOfWeek*/,
10902  15 /*onDayOfMonth*/,
10903  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10904  0 /*atTimeCode (0/15)*/,
10905  0 /*deltaMinutes*/,
10906  25 /*letterIndex ("S")*/,
10907  },
10908  // Rule Halifax 1931 1932 - Sep Mon>=24 0:00 0 S
10909  {
10910  1931 /*fromYear*/,
10911  1932 /*toYear*/,
10912  9 /*inMonth*/,
10913  1 /*onDayOfWeek*/,
10914  24 /*onDayOfMonth*/,
10915  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10916  0 /*atTimeCode (0/15)*/,
10917  0 /*deltaMinutes*/,
10918  25 /*letterIndex ("S")*/,
10919  },
10920  // Rule Halifax 1932 only - May 1 0:00 1:00 D
10921  {
10922  1932 /*fromYear*/,
10923  1932 /*toYear*/,
10924  5 /*inMonth*/,
10925  0 /*onDayOfWeek*/,
10926  1 /*onDayOfMonth*/,
10927  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10928  0 /*atTimeCode (0/15)*/,
10929  60 /*deltaMinutes*/,
10930  13 /*letterIndex ("D")*/,
10931  },
10932  // Rule Halifax 1933 only - Apr 30 0:00 1:00 D
10933  {
10934  1933 /*fromYear*/,
10935  1933 /*toYear*/,
10936  4 /*inMonth*/,
10937  0 /*onDayOfWeek*/,
10938  30 /*onDayOfMonth*/,
10939  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10940  0 /*atTimeCode (0/15)*/,
10941  60 /*deltaMinutes*/,
10942  13 /*letterIndex ("D")*/,
10943  },
10944  // Rule Halifax 1933 only - Oct 2 0:00 0 S
10945  {
10946  1933 /*fromYear*/,
10947  1933 /*toYear*/,
10948  10 /*inMonth*/,
10949  0 /*onDayOfWeek*/,
10950  2 /*onDayOfMonth*/,
10951  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10952  0 /*atTimeCode (0/15)*/,
10953  0 /*deltaMinutes*/,
10954  25 /*letterIndex ("S")*/,
10955  },
10956  // Rule Halifax 1934 only - May 20 0:00 1:00 D
10957  {
10958  1934 /*fromYear*/,
10959  1934 /*toYear*/,
10960  5 /*inMonth*/,
10961  0 /*onDayOfWeek*/,
10962  20 /*onDayOfMonth*/,
10963  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10964  0 /*atTimeCode (0/15)*/,
10965  60 /*deltaMinutes*/,
10966  13 /*letterIndex ("D")*/,
10967  },
10968  // Rule Halifax 1934 only - Sep 16 0:00 0 S
10969  {
10970  1934 /*fromYear*/,
10971  1934 /*toYear*/,
10972  9 /*inMonth*/,
10973  0 /*onDayOfWeek*/,
10974  16 /*onDayOfMonth*/,
10975  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10976  0 /*atTimeCode (0/15)*/,
10977  0 /*deltaMinutes*/,
10978  25 /*letterIndex ("S")*/,
10979  },
10980  // Rule Halifax 1935 only - Jun 2 0:00 1:00 D
10981  {
10982  1935 /*fromYear*/,
10983  1935 /*toYear*/,
10984  6 /*inMonth*/,
10985  0 /*onDayOfWeek*/,
10986  2 /*onDayOfMonth*/,
10987  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
10988  0 /*atTimeCode (0/15)*/,
10989  60 /*deltaMinutes*/,
10990  13 /*letterIndex ("D")*/,
10991  },
10992  // Rule Halifax 1935 only - Sep 30 0:00 0 S
10993  {
10994  1935 /*fromYear*/,
10995  1935 /*toYear*/,
10996  9 /*inMonth*/,
10997  0 /*onDayOfWeek*/,
10998  30 /*onDayOfMonth*/,
10999  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11000  0 /*atTimeCode (0/15)*/,
11001  0 /*deltaMinutes*/,
11002  25 /*letterIndex ("S")*/,
11003  },
11004  // Rule Halifax 1936 only - Jun 1 0:00 1:00 D
11005  {
11006  1936 /*fromYear*/,
11007  1936 /*toYear*/,
11008  6 /*inMonth*/,
11009  0 /*onDayOfWeek*/,
11010  1 /*onDayOfMonth*/,
11011  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11012  0 /*atTimeCode (0/15)*/,
11013  60 /*deltaMinutes*/,
11014  13 /*letterIndex ("D")*/,
11015  },
11016  // Rule Halifax 1936 only - Sep 14 0:00 0 S
11017  {
11018  1936 /*fromYear*/,
11019  1936 /*toYear*/,
11020  9 /*inMonth*/,
11021  0 /*onDayOfWeek*/,
11022  14 /*onDayOfMonth*/,
11023  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11024  0 /*atTimeCode (0/15)*/,
11025  0 /*deltaMinutes*/,
11026  25 /*letterIndex ("S")*/,
11027  },
11028  // Rule Halifax 1937 1938 - May Sun>=1 0:00 1:00 D
11029  {
11030  1937 /*fromYear*/,
11031  1938 /*toYear*/,
11032  5 /*inMonth*/,
11033  7 /*onDayOfWeek*/,
11034  1 /*onDayOfMonth*/,
11035  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11036  0 /*atTimeCode (0/15)*/,
11037  60 /*deltaMinutes*/,
11038  13 /*letterIndex ("D")*/,
11039  },
11040  // Rule Halifax 1937 1941 - Sep Mon>=24 0:00 0 S
11041  {
11042  1937 /*fromYear*/,
11043  1941 /*toYear*/,
11044  9 /*inMonth*/,
11045  1 /*onDayOfWeek*/,
11046  24 /*onDayOfMonth*/,
11047  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11048  0 /*atTimeCode (0/15)*/,
11049  0 /*deltaMinutes*/,
11050  25 /*letterIndex ("S")*/,
11051  },
11052  // Rule Halifax 1939 only - May 28 0:00 1:00 D
11053  {
11054  1939 /*fromYear*/,
11055  1939 /*toYear*/,
11056  5 /*inMonth*/,
11057  0 /*onDayOfWeek*/,
11058  28 /*onDayOfMonth*/,
11059  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11060  0 /*atTimeCode (0/15)*/,
11061  60 /*deltaMinutes*/,
11062  13 /*letterIndex ("D")*/,
11063  },
11064  // Rule Halifax 1940 1941 - May Sun>=1 0:00 1:00 D
11065  {
11066  1940 /*fromYear*/,
11067  1941 /*toYear*/,
11068  5 /*inMonth*/,
11069  7 /*onDayOfWeek*/,
11070  1 /*onDayOfMonth*/,
11071  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11072  0 /*atTimeCode (0/15)*/,
11073  60 /*deltaMinutes*/,
11074  13 /*letterIndex ("D")*/,
11075  },
11076  // Rule Halifax 1946 1949 - Apr lastSun 2:00 1:00 D
11077  {
11078  1946 /*fromYear*/,
11079  1949 /*toYear*/,
11080  4 /*inMonth*/,
11081  7 /*onDayOfWeek*/,
11082  0 /*onDayOfMonth*/,
11083  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11084  480 /*atTimeCode (7200/15)*/,
11085  60 /*deltaMinutes*/,
11086  13 /*letterIndex ("D")*/,
11087  },
11088  // Rule Halifax 1946 1949 - Sep lastSun 2:00 0 S
11089  {
11090  1946 /*fromYear*/,
11091  1949 /*toYear*/,
11092  9 /*inMonth*/,
11093  7 /*onDayOfWeek*/,
11094  0 /*onDayOfMonth*/,
11095  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11096  480 /*atTimeCode (7200/15)*/,
11097  0 /*deltaMinutes*/,
11098  25 /*letterIndex ("S")*/,
11099  },
11100  // Rule Halifax 1951 1954 - Apr lastSun 2:00 1:00 D
11101  {
11102  1951 /*fromYear*/,
11103  1954 /*toYear*/,
11104  4 /*inMonth*/,
11105  7 /*onDayOfWeek*/,
11106  0 /*onDayOfMonth*/,
11107  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11108  480 /*atTimeCode (7200/15)*/,
11109  60 /*deltaMinutes*/,
11110  13 /*letterIndex ("D")*/,
11111  },
11112  // Rule Halifax 1951 1954 - Sep lastSun 2:00 0 S
11113  {
11114  1951 /*fromYear*/,
11115  1954 /*toYear*/,
11116  9 /*inMonth*/,
11117  7 /*onDayOfWeek*/,
11118  0 /*onDayOfMonth*/,
11119  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11120  480 /*atTimeCode (7200/15)*/,
11121  0 /*deltaMinutes*/,
11122  25 /*letterIndex ("S")*/,
11123  },
11124  // Rule Halifax 1956 1959 - Apr lastSun 2:00 1:00 D
11125  {
11126  1956 /*fromYear*/,
11127  1959 /*toYear*/,
11128  4 /*inMonth*/,
11129  7 /*onDayOfWeek*/,
11130  0 /*onDayOfMonth*/,
11131  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11132  480 /*atTimeCode (7200/15)*/,
11133  60 /*deltaMinutes*/,
11134  13 /*letterIndex ("D")*/,
11135  },
11136  // Rule Halifax 1956 1959 - Sep lastSun 2:00 0 S
11137  {
11138  1956 /*fromYear*/,
11139  1959 /*toYear*/,
11140  9 /*inMonth*/,
11141  7 /*onDayOfWeek*/,
11142  0 /*onDayOfMonth*/,
11143  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11144  480 /*atTimeCode (7200/15)*/,
11145  0 /*deltaMinutes*/,
11146  25 /*letterIndex ("S")*/,
11147  },
11148  // Rule Halifax 1962 1973 - Apr lastSun 2:00 1:00 D
11149  {
11150  1962 /*fromYear*/,
11151  1973 /*toYear*/,
11152  4 /*inMonth*/,
11153  7 /*onDayOfWeek*/,
11154  0 /*onDayOfMonth*/,
11155  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11156  480 /*atTimeCode (7200/15)*/,
11157  60 /*deltaMinutes*/,
11158  13 /*letterIndex ("D")*/,
11159  },
11160  // Rule Halifax 1962 1973 - Oct lastSun 2:00 0 S
11161  {
11162  1962 /*fromYear*/,
11163  1973 /*toYear*/,
11164  10 /*inMonth*/,
11165  7 /*onDayOfWeek*/,
11166  0 /*onDayOfMonth*/,
11167  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11168  480 /*atTimeCode (7200/15)*/,
11169  0 /*deltaMinutes*/,
11170  25 /*letterIndex ("S")*/,
11171  },
11172 
11173 };
11174 
11175 const complete::ZonePolicy kZonePolicyHalifax ACE_TIME_PROGMEM = {
11176  kZoneRulesHalifax /*rules*/,
11177  42 /*numRules*/,
11178 };
11179 
11180 //---------------------------------------------------------------------------
11181 // Policy name: Holiday
11182 // Rules: 3
11183 //---------------------------------------------------------------------------
11184 
11185 static const complete::ZoneRule kZoneRulesHoliday[] ACE_TIME_PROGMEM = {
11186  // Anchor: Rule Holiday 1993 1994 - Mar Sun>=1 2:00s 0 S
11187  {
11188  -32767 /*fromYear*/,
11189  -32767 /*toYear*/,
11190  1 /*inMonth*/,
11191  0 /*onDayOfWeek*/,
11192  1 /*onDayOfMonth*/,
11193  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11194  0 /*atTimeCode (0/15)*/,
11195  0 /*deltaMinutes*/,
11196  25 /*letterIndex ("S")*/,
11197  },
11198  // Rule Holiday 1992 1993 - Oct lastSun 2:00s 1:00 D
11199  {
11200  1992 /*fromYear*/,
11201  1993 /*toYear*/,
11202  10 /*inMonth*/,
11203  7 /*onDayOfWeek*/,
11204  0 /*onDayOfMonth*/,
11205  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
11206  480 /*atTimeCode (7200/15)*/,
11207  60 /*deltaMinutes*/,
11208  13 /*letterIndex ("D")*/,
11209  },
11210  // Rule Holiday 1993 1994 - Mar Sun>=1 2:00s 0 S
11211  {
11212  1993 /*fromYear*/,
11213  1994 /*toYear*/,
11214  3 /*inMonth*/,
11215  7 /*onDayOfWeek*/,
11216  1 /*onDayOfMonth*/,
11217  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
11218  480 /*atTimeCode (7200/15)*/,
11219  0 /*deltaMinutes*/,
11220  25 /*letterIndex ("S")*/,
11221  },
11222 
11223 };
11224 
11225 const complete::ZonePolicy kZonePolicyHoliday ACE_TIME_PROGMEM = {
11226  kZoneRulesHoliday /*rules*/,
11227  3 /*numRules*/,
11228 };
11229 
11230 //---------------------------------------------------------------------------
11231 // Policy name: Hond
11232 // Rules: 5
11233 //---------------------------------------------------------------------------
11234 
11235 static const complete::ZoneRule kZoneRulesHond[] ACE_TIME_PROGMEM = {
11236  // Anchor: Rule Hond 1987 1988 - Sep lastSun 0:00 0 S
11237  {
11238  -32767 /*fromYear*/,
11239  -32767 /*toYear*/,
11240  1 /*inMonth*/,
11241  0 /*onDayOfWeek*/,
11242  1 /*onDayOfMonth*/,
11243  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11244  0 /*atTimeCode (0/15)*/,
11245  0 /*deltaMinutes*/,
11246  25 /*letterIndex ("S")*/,
11247  },
11248  // Rule Hond 1987 1988 - May Sun>=1 0:00 1:00 D
11249  {
11250  1987 /*fromYear*/,
11251  1988 /*toYear*/,
11252  5 /*inMonth*/,
11253  7 /*onDayOfWeek*/,
11254  1 /*onDayOfMonth*/,
11255  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11256  0 /*atTimeCode (0/15)*/,
11257  60 /*deltaMinutes*/,
11258  13 /*letterIndex ("D")*/,
11259  },
11260  // Rule Hond 1987 1988 - Sep lastSun 0:00 0 S
11261  {
11262  1987 /*fromYear*/,
11263  1988 /*toYear*/,
11264  9 /*inMonth*/,
11265  7 /*onDayOfWeek*/,
11266  0 /*onDayOfMonth*/,
11267  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11268  0 /*atTimeCode (0/15)*/,
11269  0 /*deltaMinutes*/,
11270  25 /*letterIndex ("S")*/,
11271  },
11272  // Rule Hond 2006 only - May Sun>=1 0:00 1:00 D
11273  {
11274  2006 /*fromYear*/,
11275  2006 /*toYear*/,
11276  5 /*inMonth*/,
11277  7 /*onDayOfWeek*/,
11278  1 /*onDayOfMonth*/,
11279  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11280  0 /*atTimeCode (0/15)*/,
11281  60 /*deltaMinutes*/,
11282  13 /*letterIndex ("D")*/,
11283  },
11284  // Rule Hond 2006 only - Aug Mon>=1 0:00 0 S
11285  {
11286  2006 /*fromYear*/,
11287  2006 /*toYear*/,
11288  8 /*inMonth*/,
11289  1 /*onDayOfWeek*/,
11290  1 /*onDayOfMonth*/,
11291  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11292  0 /*atTimeCode (0/15)*/,
11293  0 /*deltaMinutes*/,
11294  25 /*letterIndex ("S")*/,
11295  },
11296 
11297 };
11298 
11299 const complete::ZonePolicy kZonePolicyHond ACE_TIME_PROGMEM = {
11300  kZoneRulesHond /*rules*/,
11301  5 /*numRules*/,
11302 };
11303 
11304 //---------------------------------------------------------------------------
11305 // Policy name: Hungary
11306 // Rules: 20
11307 //---------------------------------------------------------------------------
11308 
11309 static const complete::ZoneRule kZoneRulesHungary[] ACE_TIME_PROGMEM = {
11310  // Anchor: Rule Hungary 1918 1920 - Sep Mon>=15 3:00 0 -
11311  {
11312  -32767 /*fromYear*/,
11313  -32767 /*toYear*/,
11314  1 /*inMonth*/,
11315  0 /*onDayOfWeek*/,
11316  1 /*onDayOfMonth*/,
11317  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11318  0 /*atTimeCode (0/15)*/,
11319  0 /*deltaMinutes*/,
11320  0 /*letterIndex ("")*/,
11321  },
11322  // Rule Hungary 1918 1919 - Apr 15 2:00 1:00 S
11323  {
11324  1918 /*fromYear*/,
11325  1919 /*toYear*/,
11326  4 /*inMonth*/,
11327  0 /*onDayOfWeek*/,
11328  15 /*onDayOfMonth*/,
11329  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11330  480 /*atTimeCode (7200/15)*/,
11331  60 /*deltaMinutes*/,
11332  25 /*letterIndex ("S")*/,
11333  },
11334  // Rule Hungary 1918 1920 - Sep Mon>=15 3:00 0 -
11335  {
11336  1918 /*fromYear*/,
11337  1920 /*toYear*/,
11338  9 /*inMonth*/,
11339  1 /*onDayOfWeek*/,
11340  15 /*onDayOfMonth*/,
11341  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11342  720 /*atTimeCode (10800/15)*/,
11343  0 /*deltaMinutes*/,
11344  0 /*letterIndex ("")*/,
11345  },
11346  // Rule Hungary 1920 only - Apr 5 2:00 1:00 S
11347  {
11348  1920 /*fromYear*/,
11349  1920 /*toYear*/,
11350  4 /*inMonth*/,
11351  0 /*onDayOfWeek*/,
11352  5 /*onDayOfMonth*/,
11353  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11354  480 /*atTimeCode (7200/15)*/,
11355  60 /*deltaMinutes*/,
11356  25 /*letterIndex ("S")*/,
11357  },
11358  // Rule Hungary 1945 only - May 1 23:00 1:00 S
11359  {
11360  1945 /*fromYear*/,
11361  1945 /*toYear*/,
11362  5 /*inMonth*/,
11363  0 /*onDayOfWeek*/,
11364  1 /*onDayOfMonth*/,
11365  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11366  5520 /*atTimeCode (82800/15)*/,
11367  60 /*deltaMinutes*/,
11368  25 /*letterIndex ("S")*/,
11369  },
11370  // Rule Hungary 1945 only - Nov 1 1:00 0 -
11371  {
11372  1945 /*fromYear*/,
11373  1945 /*toYear*/,
11374  11 /*inMonth*/,
11375  0 /*onDayOfWeek*/,
11376  1 /*onDayOfMonth*/,
11377  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11378  240 /*atTimeCode (3600/15)*/,
11379  0 /*deltaMinutes*/,
11380  0 /*letterIndex ("")*/,
11381  },
11382  // Rule Hungary 1946 only - Mar 31 2:00s 1:00 S
11383  {
11384  1946 /*fromYear*/,
11385  1946 /*toYear*/,
11386  3 /*inMonth*/,
11387  0 /*onDayOfWeek*/,
11388  31 /*onDayOfMonth*/,
11389  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
11390  480 /*atTimeCode (7200/15)*/,
11391  60 /*deltaMinutes*/,
11392  25 /*letterIndex ("S")*/,
11393  },
11394  // Rule Hungary 1946 only - Oct 7 2:00 0 -
11395  {
11396  1946 /*fromYear*/,
11397  1946 /*toYear*/,
11398  10 /*inMonth*/,
11399  0 /*onDayOfWeek*/,
11400  7 /*onDayOfMonth*/,
11401  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11402  480 /*atTimeCode (7200/15)*/,
11403  0 /*deltaMinutes*/,
11404  0 /*letterIndex ("")*/,
11405  },
11406  // Rule Hungary 1947 1949 - Apr Sun>=4 2:00s 1:00 S
11407  {
11408  1947 /*fromYear*/,
11409  1949 /*toYear*/,
11410  4 /*inMonth*/,
11411  7 /*onDayOfWeek*/,
11412  4 /*onDayOfMonth*/,
11413  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
11414  480 /*atTimeCode (7200/15)*/,
11415  60 /*deltaMinutes*/,
11416  25 /*letterIndex ("S")*/,
11417  },
11418  // Rule Hungary 1947 1949 - Oct Sun>=1 2:00s 0 -
11419  {
11420  1947 /*fromYear*/,
11421  1949 /*toYear*/,
11422  10 /*inMonth*/,
11423  7 /*onDayOfWeek*/,
11424  1 /*onDayOfMonth*/,
11425  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
11426  480 /*atTimeCode (7200/15)*/,
11427  0 /*deltaMinutes*/,
11428  0 /*letterIndex ("")*/,
11429  },
11430  // Rule Hungary 1954 only - May 23 0:00 1:00 S
11431  {
11432  1954 /*fromYear*/,
11433  1954 /*toYear*/,
11434  5 /*inMonth*/,
11435  0 /*onDayOfWeek*/,
11436  23 /*onDayOfMonth*/,
11437  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11438  0 /*atTimeCode (0/15)*/,
11439  60 /*deltaMinutes*/,
11440  25 /*letterIndex ("S")*/,
11441  },
11442  // Rule Hungary 1954 only - Oct 3 0:00 0 -
11443  {
11444  1954 /*fromYear*/,
11445  1954 /*toYear*/,
11446  10 /*inMonth*/,
11447  0 /*onDayOfWeek*/,
11448  3 /*onDayOfMonth*/,
11449  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11450  0 /*atTimeCode (0/15)*/,
11451  0 /*deltaMinutes*/,
11452  0 /*letterIndex ("")*/,
11453  },
11454  // Rule Hungary 1955 only - May 22 2:00 1:00 S
11455  {
11456  1955 /*fromYear*/,
11457  1955 /*toYear*/,
11458  5 /*inMonth*/,
11459  0 /*onDayOfWeek*/,
11460  22 /*onDayOfMonth*/,
11461  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11462  480 /*atTimeCode (7200/15)*/,
11463  60 /*deltaMinutes*/,
11464  25 /*letterIndex ("S")*/,
11465  },
11466  // Rule Hungary 1955 only - Oct 2 3:00 0 -
11467  {
11468  1955 /*fromYear*/,
11469  1955 /*toYear*/,
11470  10 /*inMonth*/,
11471  0 /*onDayOfWeek*/,
11472  2 /*onDayOfMonth*/,
11473  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11474  720 /*atTimeCode (10800/15)*/,
11475  0 /*deltaMinutes*/,
11476  0 /*letterIndex ("")*/,
11477  },
11478  // Rule Hungary 1956 1957 - Jun Sun>=1 2:00 1:00 S
11479  {
11480  1956 /*fromYear*/,
11481  1957 /*toYear*/,
11482  6 /*inMonth*/,
11483  7 /*onDayOfWeek*/,
11484  1 /*onDayOfMonth*/,
11485  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11486  480 /*atTimeCode (7200/15)*/,
11487  60 /*deltaMinutes*/,
11488  25 /*letterIndex ("S")*/,
11489  },
11490  // Rule Hungary 1956 1957 - Sep lastSun 3:00 0 -
11491  {
11492  1956 /*fromYear*/,
11493  1957 /*toYear*/,
11494  9 /*inMonth*/,
11495  7 /*onDayOfWeek*/,
11496  0 /*onDayOfMonth*/,
11497  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11498  720 /*atTimeCode (10800/15)*/,
11499  0 /*deltaMinutes*/,
11500  0 /*letterIndex ("")*/,
11501  },
11502  // Rule Hungary 1980 only - Apr 6 0:00 1:00 S
11503  {
11504  1980 /*fromYear*/,
11505  1980 /*toYear*/,
11506  4 /*inMonth*/,
11507  0 /*onDayOfWeek*/,
11508  6 /*onDayOfMonth*/,
11509  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11510  0 /*atTimeCode (0/15)*/,
11511  60 /*deltaMinutes*/,
11512  25 /*letterIndex ("S")*/,
11513  },
11514  // Rule Hungary 1980 only - Sep 28 1:00 0 -
11515  {
11516  1980 /*fromYear*/,
11517  1980 /*toYear*/,
11518  9 /*inMonth*/,
11519  0 /*onDayOfWeek*/,
11520  28 /*onDayOfMonth*/,
11521  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11522  240 /*atTimeCode (3600/15)*/,
11523  0 /*deltaMinutes*/,
11524  0 /*letterIndex ("")*/,
11525  },
11526  // Rule Hungary 1981 1983 - Mar lastSun 0:00 1:00 S
11527  {
11528  1981 /*fromYear*/,
11529  1983 /*toYear*/,
11530  3 /*inMonth*/,
11531  7 /*onDayOfWeek*/,
11532  0 /*onDayOfMonth*/,
11533  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11534  0 /*atTimeCode (0/15)*/,
11535  60 /*deltaMinutes*/,
11536  25 /*letterIndex ("S")*/,
11537  },
11538  // Rule Hungary 1981 1983 - Sep lastSun 1:00 0 -
11539  {
11540  1981 /*fromYear*/,
11541  1983 /*toYear*/,
11542  9 /*inMonth*/,
11543  7 /*onDayOfWeek*/,
11544  0 /*onDayOfMonth*/,
11545  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11546  240 /*atTimeCode (3600/15)*/,
11547  0 /*deltaMinutes*/,
11548  0 /*letterIndex ("")*/,
11549  },
11550 
11551 };
11552 
11553 const complete::ZonePolicy kZonePolicyHungary ACE_TIME_PROGMEM = {
11554  kZoneRulesHungary /*rules*/,
11555  20 /*numRules*/,
11556 };
11557 
11558 //---------------------------------------------------------------------------
11559 // Policy name: Indianapolis
11560 // Rules: 4
11561 //---------------------------------------------------------------------------
11562 
11563 static const complete::ZoneRule kZoneRulesIndianapolis[] ACE_TIME_PROGMEM = {
11564  // Anchor: Rule Indianapolis 1941 1954 - Sep lastSun 2:00 0 S
11565  {
11566  -32767 /*fromYear*/,
11567  -32767 /*toYear*/,
11568  1 /*inMonth*/,
11569  0 /*onDayOfWeek*/,
11570  1 /*onDayOfMonth*/,
11571  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11572  0 /*atTimeCode (0/15)*/,
11573  0 /*deltaMinutes*/,
11574  25 /*letterIndex ("S")*/,
11575  },
11576  // Rule Indianapolis 1941 only - Jun 22 2:00 1:00 D
11577  {
11578  1941 /*fromYear*/,
11579  1941 /*toYear*/,
11580  6 /*inMonth*/,
11581  0 /*onDayOfWeek*/,
11582  22 /*onDayOfMonth*/,
11583  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11584  480 /*atTimeCode (7200/15)*/,
11585  60 /*deltaMinutes*/,
11586  13 /*letterIndex ("D")*/,
11587  },
11588  // Rule Indianapolis 1941 1954 - Sep lastSun 2:00 0 S
11589  {
11590  1941 /*fromYear*/,
11591  1954 /*toYear*/,
11592  9 /*inMonth*/,
11593  7 /*onDayOfWeek*/,
11594  0 /*onDayOfMonth*/,
11595  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11596  480 /*atTimeCode (7200/15)*/,
11597  0 /*deltaMinutes*/,
11598  25 /*letterIndex ("S")*/,
11599  },
11600  // Rule Indianapolis 1946 1954 - Apr lastSun 2:00 1:00 D
11601  {
11602  1946 /*fromYear*/,
11603  1954 /*toYear*/,
11604  4 /*inMonth*/,
11605  7 /*onDayOfWeek*/,
11606  0 /*onDayOfMonth*/,
11607  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11608  480 /*atTimeCode (7200/15)*/,
11609  60 /*deltaMinutes*/,
11610  13 /*letterIndex ("D")*/,
11611  },
11612 
11613 };
11614 
11615 const complete::ZonePolicy kZonePolicyIndianapolis ACE_TIME_PROGMEM = {
11616  kZoneRulesIndianapolis /*rules*/,
11617  4 /*numRules*/,
11618 };
11619 
11620 //---------------------------------------------------------------------------
11621 // Policy name: Iran
11622 // Rules: 41
11623 //---------------------------------------------------------------------------
11624 
11625 static const complete::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = {
11626  // Anchor: Rule Iran 1910 only - Jan 1 00:00 0 -
11627  {
11628  -32767 /*fromYear*/,
11629  -32767 /*toYear*/,
11630  1 /*inMonth*/,
11631  0 /*onDayOfWeek*/,
11632  1 /*onDayOfMonth*/,
11633  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11634  0 /*atTimeCode (0/15)*/,
11635  0 /*deltaMinutes*/,
11636  0 /*letterIndex ("")*/,
11637  },
11638  // Rule Iran 1910 only - Jan 1 00:00 0 -
11639  {
11640  1910 /*fromYear*/,
11641  1910 /*toYear*/,
11642  1 /*inMonth*/,
11643  0 /*onDayOfWeek*/,
11644  1 /*onDayOfMonth*/,
11645  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11646  0 /*atTimeCode (0/15)*/,
11647  0 /*deltaMinutes*/,
11648  0 /*letterIndex ("")*/,
11649  },
11650  // Rule Iran 1977 only - Mar 21 23:00 1:00 -
11651  {
11652  1977 /*fromYear*/,
11653  1977 /*toYear*/,
11654  3 /*inMonth*/,
11655  0 /*onDayOfWeek*/,
11656  21 /*onDayOfMonth*/,
11657  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11658  5520 /*atTimeCode (82800/15)*/,
11659  60 /*deltaMinutes*/,
11660  0 /*letterIndex ("")*/,
11661  },
11662  // Rule Iran 1977 only - Oct 20 24:00 0 -
11663  {
11664  1977 /*fromYear*/,
11665  1977 /*toYear*/,
11666  10 /*inMonth*/,
11667  0 /*onDayOfWeek*/,
11668  20 /*onDayOfMonth*/,
11669  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11670  5760 /*atTimeCode (86400/15)*/,
11671  0 /*deltaMinutes*/,
11672  0 /*letterIndex ("")*/,
11673  },
11674  // Rule Iran 1978 only - Mar 24 24:00 1:00 -
11675  {
11676  1978 /*fromYear*/,
11677  1978 /*toYear*/,
11678  3 /*inMonth*/,
11679  0 /*onDayOfWeek*/,
11680  24 /*onDayOfMonth*/,
11681  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11682  5760 /*atTimeCode (86400/15)*/,
11683  60 /*deltaMinutes*/,
11684  0 /*letterIndex ("")*/,
11685  },
11686  // Rule Iran 1978 only - Aug 5 01:00 0 -
11687  {
11688  1978 /*fromYear*/,
11689  1978 /*toYear*/,
11690  8 /*inMonth*/,
11691  0 /*onDayOfWeek*/,
11692  5 /*onDayOfMonth*/,
11693  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11694  240 /*atTimeCode (3600/15)*/,
11695  0 /*deltaMinutes*/,
11696  0 /*letterIndex ("")*/,
11697  },
11698  // Rule Iran 1979 only - May 26 24:00 1:00 -
11699  {
11700  1979 /*fromYear*/,
11701  1979 /*toYear*/,
11702  5 /*inMonth*/,
11703  0 /*onDayOfWeek*/,
11704  26 /*onDayOfMonth*/,
11705  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11706  5760 /*atTimeCode (86400/15)*/,
11707  60 /*deltaMinutes*/,
11708  0 /*letterIndex ("")*/,
11709  },
11710  // Rule Iran 1979 only - Sep 18 24:00 0 -
11711  {
11712  1979 /*fromYear*/,
11713  1979 /*toYear*/,
11714  9 /*inMonth*/,
11715  0 /*onDayOfWeek*/,
11716  18 /*onDayOfMonth*/,
11717  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11718  5760 /*atTimeCode (86400/15)*/,
11719  0 /*deltaMinutes*/,
11720  0 /*letterIndex ("")*/,
11721  },
11722  // Rule Iran 1980 only - Mar 20 24:00 1:00 -
11723  {
11724  1980 /*fromYear*/,
11725  1980 /*toYear*/,
11726  3 /*inMonth*/,
11727  0 /*onDayOfWeek*/,
11728  20 /*onDayOfMonth*/,
11729  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11730  5760 /*atTimeCode (86400/15)*/,
11731  60 /*deltaMinutes*/,
11732  0 /*letterIndex ("")*/,
11733  },
11734  // Rule Iran 1980 only - Sep 22 24:00 0 -
11735  {
11736  1980 /*fromYear*/,
11737  1980 /*toYear*/,
11738  9 /*inMonth*/,
11739  0 /*onDayOfWeek*/,
11740  22 /*onDayOfMonth*/,
11741  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11742  5760 /*atTimeCode (86400/15)*/,
11743  0 /*deltaMinutes*/,
11744  0 /*letterIndex ("")*/,
11745  },
11746  // Rule Iran 1991 only - May 2 24:00 1:00 -
11747  {
11748  1991 /*fromYear*/,
11749  1991 /*toYear*/,
11750  5 /*inMonth*/,
11751  0 /*onDayOfWeek*/,
11752  2 /*onDayOfMonth*/,
11753  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11754  5760 /*atTimeCode (86400/15)*/,
11755  60 /*deltaMinutes*/,
11756  0 /*letterIndex ("")*/,
11757  },
11758  // Rule Iran 1992 1995 - Mar 21 24:00 1:00 -
11759  {
11760  1992 /*fromYear*/,
11761  1995 /*toYear*/,
11762  3 /*inMonth*/,
11763  0 /*onDayOfWeek*/,
11764  21 /*onDayOfMonth*/,
11765  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11766  5760 /*atTimeCode (86400/15)*/,
11767  60 /*deltaMinutes*/,
11768  0 /*letterIndex ("")*/,
11769  },
11770  // Rule Iran 1991 1995 - Sep 21 24:00 0 -
11771  {
11772  1991 /*fromYear*/,
11773  1995 /*toYear*/,
11774  9 /*inMonth*/,
11775  0 /*onDayOfWeek*/,
11776  21 /*onDayOfMonth*/,
11777  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11778  5760 /*atTimeCode (86400/15)*/,
11779  0 /*deltaMinutes*/,
11780  0 /*letterIndex ("")*/,
11781  },
11782  // Rule Iran 1996 only - Mar 20 24:00 1:00 -
11783  {
11784  1996 /*fromYear*/,
11785  1996 /*toYear*/,
11786  3 /*inMonth*/,
11787  0 /*onDayOfWeek*/,
11788  20 /*onDayOfMonth*/,
11789  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11790  5760 /*atTimeCode (86400/15)*/,
11791  60 /*deltaMinutes*/,
11792  0 /*letterIndex ("")*/,
11793  },
11794  // Rule Iran 1996 only - Sep 20 24:00 0 -
11795  {
11796  1996 /*fromYear*/,
11797  1996 /*toYear*/,
11798  9 /*inMonth*/,
11799  0 /*onDayOfWeek*/,
11800  20 /*onDayOfMonth*/,
11801  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11802  5760 /*atTimeCode (86400/15)*/,
11803  0 /*deltaMinutes*/,
11804  0 /*letterIndex ("")*/,
11805  },
11806  // Rule Iran 1997 1999 - Mar 21 24:00 1:00 -
11807  {
11808  1997 /*fromYear*/,
11809  1999 /*toYear*/,
11810  3 /*inMonth*/,
11811  0 /*onDayOfWeek*/,
11812  21 /*onDayOfMonth*/,
11813  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11814  5760 /*atTimeCode (86400/15)*/,
11815  60 /*deltaMinutes*/,
11816  0 /*letterIndex ("")*/,
11817  },
11818  // Rule Iran 1997 1999 - Sep 21 24:00 0 -
11819  {
11820  1997 /*fromYear*/,
11821  1999 /*toYear*/,
11822  9 /*inMonth*/,
11823  0 /*onDayOfWeek*/,
11824  21 /*onDayOfMonth*/,
11825  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11826  5760 /*atTimeCode (86400/15)*/,
11827  0 /*deltaMinutes*/,
11828  0 /*letterIndex ("")*/,
11829  },
11830  // Rule Iran 2000 only - Mar 20 24:00 1:00 -
11831  {
11832  2000 /*fromYear*/,
11833  2000 /*toYear*/,
11834  3 /*inMonth*/,
11835  0 /*onDayOfWeek*/,
11836  20 /*onDayOfMonth*/,
11837  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11838  5760 /*atTimeCode (86400/15)*/,
11839  60 /*deltaMinutes*/,
11840  0 /*letterIndex ("")*/,
11841  },
11842  // Rule Iran 2000 only - Sep 20 24:00 0 -
11843  {
11844  2000 /*fromYear*/,
11845  2000 /*toYear*/,
11846  9 /*inMonth*/,
11847  0 /*onDayOfWeek*/,
11848  20 /*onDayOfMonth*/,
11849  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11850  5760 /*atTimeCode (86400/15)*/,
11851  0 /*deltaMinutes*/,
11852  0 /*letterIndex ("")*/,
11853  },
11854  // Rule Iran 2001 2003 - Mar 21 24:00 1:00 -
11855  {
11856  2001 /*fromYear*/,
11857  2003 /*toYear*/,
11858  3 /*inMonth*/,
11859  0 /*onDayOfWeek*/,
11860  21 /*onDayOfMonth*/,
11861  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11862  5760 /*atTimeCode (86400/15)*/,
11863  60 /*deltaMinutes*/,
11864  0 /*letterIndex ("")*/,
11865  },
11866  // Rule Iran 2001 2003 - Sep 21 24:00 0 -
11867  {
11868  2001 /*fromYear*/,
11869  2003 /*toYear*/,
11870  9 /*inMonth*/,
11871  0 /*onDayOfWeek*/,
11872  21 /*onDayOfMonth*/,
11873  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11874  5760 /*atTimeCode (86400/15)*/,
11875  0 /*deltaMinutes*/,
11876  0 /*letterIndex ("")*/,
11877  },
11878  // Rule Iran 2004 only - Mar 20 24:00 1:00 -
11879  {
11880  2004 /*fromYear*/,
11881  2004 /*toYear*/,
11882  3 /*inMonth*/,
11883  0 /*onDayOfWeek*/,
11884  20 /*onDayOfMonth*/,
11885  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11886  5760 /*atTimeCode (86400/15)*/,
11887  60 /*deltaMinutes*/,
11888  0 /*letterIndex ("")*/,
11889  },
11890  // Rule Iran 2004 only - Sep 20 24:00 0 -
11891  {
11892  2004 /*fromYear*/,
11893  2004 /*toYear*/,
11894  9 /*inMonth*/,
11895  0 /*onDayOfWeek*/,
11896  20 /*onDayOfMonth*/,
11897  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11898  5760 /*atTimeCode (86400/15)*/,
11899  0 /*deltaMinutes*/,
11900  0 /*letterIndex ("")*/,
11901  },
11902  // Rule Iran 2005 only - Mar 21 24:00 1:00 -
11903  {
11904  2005 /*fromYear*/,
11905  2005 /*toYear*/,
11906  3 /*inMonth*/,
11907  0 /*onDayOfWeek*/,
11908  21 /*onDayOfMonth*/,
11909  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11910  5760 /*atTimeCode (86400/15)*/,
11911  60 /*deltaMinutes*/,
11912  0 /*letterIndex ("")*/,
11913  },
11914  // Rule Iran 2005 only - Sep 21 24:00 0 -
11915  {
11916  2005 /*fromYear*/,
11917  2005 /*toYear*/,
11918  9 /*inMonth*/,
11919  0 /*onDayOfWeek*/,
11920  21 /*onDayOfMonth*/,
11921  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11922  5760 /*atTimeCode (86400/15)*/,
11923  0 /*deltaMinutes*/,
11924  0 /*letterIndex ("")*/,
11925  },
11926  // Rule Iran 2008 only - Mar 20 24:00 1:00 -
11927  {
11928  2008 /*fromYear*/,
11929  2008 /*toYear*/,
11930  3 /*inMonth*/,
11931  0 /*onDayOfWeek*/,
11932  20 /*onDayOfMonth*/,
11933  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11934  5760 /*atTimeCode (86400/15)*/,
11935  60 /*deltaMinutes*/,
11936  0 /*letterIndex ("")*/,
11937  },
11938  // Rule Iran 2008 only - Sep 20 24:00 0 -
11939  {
11940  2008 /*fromYear*/,
11941  2008 /*toYear*/,
11942  9 /*inMonth*/,
11943  0 /*onDayOfWeek*/,
11944  20 /*onDayOfMonth*/,
11945  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11946  5760 /*atTimeCode (86400/15)*/,
11947  0 /*deltaMinutes*/,
11948  0 /*letterIndex ("")*/,
11949  },
11950  // Rule Iran 2009 2011 - Mar 21 24:00 1:00 -
11951  {
11952  2009 /*fromYear*/,
11953  2011 /*toYear*/,
11954  3 /*inMonth*/,
11955  0 /*onDayOfWeek*/,
11956  21 /*onDayOfMonth*/,
11957  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11958  5760 /*atTimeCode (86400/15)*/,
11959  60 /*deltaMinutes*/,
11960  0 /*letterIndex ("")*/,
11961  },
11962  // Rule Iran 2009 2011 - Sep 21 24:00 0 -
11963  {
11964  2009 /*fromYear*/,
11965  2011 /*toYear*/,
11966  9 /*inMonth*/,
11967  0 /*onDayOfWeek*/,
11968  21 /*onDayOfMonth*/,
11969  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11970  5760 /*atTimeCode (86400/15)*/,
11971  0 /*deltaMinutes*/,
11972  0 /*letterIndex ("")*/,
11973  },
11974  // Rule Iran 2012 only - Mar 20 24:00 1:00 -
11975  {
11976  2012 /*fromYear*/,
11977  2012 /*toYear*/,
11978  3 /*inMonth*/,
11979  0 /*onDayOfWeek*/,
11980  20 /*onDayOfMonth*/,
11981  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11982  5760 /*atTimeCode (86400/15)*/,
11983  60 /*deltaMinutes*/,
11984  0 /*letterIndex ("")*/,
11985  },
11986  // Rule Iran 2012 only - Sep 20 24:00 0 -
11987  {
11988  2012 /*fromYear*/,
11989  2012 /*toYear*/,
11990  9 /*inMonth*/,
11991  0 /*onDayOfWeek*/,
11992  20 /*onDayOfMonth*/,
11993  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
11994  5760 /*atTimeCode (86400/15)*/,
11995  0 /*deltaMinutes*/,
11996  0 /*letterIndex ("")*/,
11997  },
11998  // Rule Iran 2013 2015 - Mar 21 24:00 1:00 -
11999  {
12000  2013 /*fromYear*/,
12001  2015 /*toYear*/,
12002  3 /*inMonth*/,
12003  0 /*onDayOfWeek*/,
12004  21 /*onDayOfMonth*/,
12005  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
12006  5760 /*atTimeCode (86400/15)*/,
12007  60 /*deltaMinutes*/,
12008  0 /*letterIndex ("")*/,
12009  },
12010  // Rule Iran 2013 2015 - Sep 21 24:00 0 -
12011  {
12012  2013 /*fromYear*/,
12013  2015 /*toYear*/,
12014  9 /*inMonth*/,
12015  0 /*onDayOfWeek*/,
12016  21 /*onDayOfMonth*/,
12017  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
12018  5760 /*atTimeCode (86400/15)*/,
12019  0 /*deltaMinutes*/,
12020  0 /*letterIndex ("")*/,
12021  },
12022  // Rule Iran 2016 only - Mar 20 24:00 1:00 -
12023  {
12024  2016 /*fromYear*/,
12025  2016 /*toYear*/,
12026  3 /*inMonth*/,
12027  0 /*onDayOfWeek*/,
12028  20 /*onDayOfMonth*/,
12029  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
12030  5760 /*atTimeCode (86400/15)*/,
12031  60 /*deltaMinutes*/,
12032  0 /*letterIndex ("")*/,
12033  },
12034  // Rule Iran 2016 only - Sep 20 24:00 0 -
12035  {
12036  2016 /*fromYear*/,
12037  2016 /*toYear*/,
12038  9 /*inMonth*/,
12039  0 /*onDayOfWeek*/,
12040  20 /*onDayOfMonth*/,
12041  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
12042  5760 /*atTimeCode (86400/15)*/,
12043  0 /*deltaMinutes*/,
12044  0 /*letterIndex ("")*/,
12045  },
12046  // Rule Iran 2017 2019 - Mar 21 24:00 1:00 -
12047  {
12048  2017 /*fromYear*/,
12049  2019 /*toYear*/,
12050  3 /*inMonth*/,
12051  0 /*onDayOfWeek*/,
12052  21 /*onDayOfMonth*/,
12053  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
12054  5760 /*atTimeCode (86400/15)*/,
12055  60 /*deltaMinutes*/,
12056  0 /*letterIndex ("")*/,
12057  },
12058  // Rule Iran 2017 2019 - Sep 21 24:00 0 -
12059  {
12060  2017 /*fromYear*/,
12061  2019 /*toYear*/,
12062  9 /*inMonth*/,
12063  0 /*onDayOfWeek*/,
12064  21 /*onDayOfMonth*/,
12065  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
12066  5760 /*atTimeCode (86400/15)*/,
12067  0 /*deltaMinutes*/,
12068  0 /*letterIndex ("")*/,
12069  },
12070  // Rule Iran 2020 only - Mar 20 24:00 1:00 -
12071  {
12072  2020 /*fromYear*/,
12073  2020 /*toYear*/,
12074  3 /*inMonth*/,
12075  0 /*onDayOfWeek*/,
12076  20 /*onDayOfMonth*/,
12077  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
12078  5760 /*atTimeCode (86400/15)*/,
12079  60 /*deltaMinutes*/,
12080  0 /*letterIndex ("")*/,
12081  },
12082  // Rule Iran 2020 only - Sep 20 24:00 0 -
12083  {
12084  2020 /*fromYear*/,
12085  2020 /*toYear*/,
12086  9 /*inMonth*/,
12087  0 /*onDayOfWeek*/,
12088  20 /*onDayOfMonth*/,
12089  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
12090  5760 /*atTimeCode (86400/15)*/,
12091  0 /*deltaMinutes*/,
12092  0 /*letterIndex ("")*/,
12093  },
12094  // Rule Iran 2021 2022 - Mar 21 24:00 1:00 -
12095  {
12096  2021 /*fromYear*/,
12097  2022 /*toYear*/,
12098  3 /*inMonth*/,
12099  0 /*onDayOfWeek*/,
12100  21 /*onDayOfMonth*/,
12101  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
12102  5760 /*atTimeCode (86400/15)*/,
12103  60 /*deltaMinutes*/,
12104  0 /*letterIndex ("")*/,
12105  },
12106  // Rule Iran 2021 2022 - Sep 21 24:00 0 -
12107  {
12108  2021 /*fromYear*/,
12109  2022 /*toYear*/,
12110  9 /*inMonth*/,
12111  0 /*onDayOfWeek*/,
12112  21 /*onDayOfMonth*/,
12113  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
12114  5760 /*atTimeCode (86400/15)*/,
12115  0 /*deltaMinutes*/,
12116  0 /*letterIndex ("")*/,
12117  },
12118 
12119 };
12120 
12121 const complete::ZonePolicy kZonePolicyIran ACE_TIME_PROGMEM = {
12122  kZoneRulesIran /*rules*/,
12123  41 /*numRules*/,
12124 };
12125 
12126 //---------------------------------------------------------------------------
12127 // Policy name: Iraq
12128 // Rules: 9
12129 //---------------------------------------------------------------------------
12130 
12131 static const complete::ZoneRule kZoneRulesIraq[] ACE_TIME_PROGMEM = {
12132  // Anchor: Rule Iraq 1982 1984 - Oct 1 0:00 0 -
12133  {
12134  -32767 /*fromYear*/,
12135  -32767 /*toYear*/,
12136  1 /*inMonth*/,
12137  0 /*onDayOfWeek*/,
12138  1 /*onDayOfMonth*/,
12139  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
12140  0 /*atTimeCode (0/15)*/,
12141  0 /*deltaMinutes*/,
12142  0 /*letterIndex ("")*/,
12143  },
12144  // Rule Iraq 1982 only - May 1 0:00 1:00 -
12145  {
12146  1982 /*fromYear*/,
12147  1982 /*toYear*/,
12148  5 /*inMonth*/,
12149  0 /*onDayOfWeek*/,
12150  1 /*onDayOfMonth*/,
12151  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
12152  0 /*atTimeCode (0/15)*/,
12153  60 /*deltaMinutes*/,
12154  0 /*letterIndex ("")*/,
12155  },
12156  // Rule Iraq 1982 1984 - Oct 1 0:00 0 -
12157  {
12158  1982 /*fromYear*/,
12159  1984 /*toYear*/,
12160  10 /*inMonth*/,
12161  0 /*onDayOfWeek*/,
12162  1 /*onDayOfMonth*/,
12163  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
12164  0 /*atTimeCode (0/15)*/,
12165  0 /*deltaMinutes*/,
12166  0 /*letterIndex ("")*/,
12167  },
12168  // Rule Iraq 1983 only - Mar 31 0:00 1:00 -
12169  {
12170  1983 /*fromYear*/,
12171  1983 /*toYear*/,
12172  3 /*inMonth*/,
12173  0 /*onDayOfWeek*/,
12174  31 /*onDayOfMonth*/,
12175  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
12176  0 /*atTimeCode (0/15)*/,
12177  60 /*deltaMinutes*/,
12178  0 /*letterIndex ("")*/,
12179  },
12180  // Rule Iraq 1984 1985 - Apr 1 0:00 1:00 -
12181  {
12182  1984 /*fromYear*/,
12183  1985 /*toYear*/,
12184  4 /*inMonth*/,
12185  0 /*onDayOfWeek*/,
12186  1 /*onDayOfMonth*/,
12187  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
12188  0 /*atTimeCode (0/15)*/,
12189  60 /*deltaMinutes*/,
12190  0 /*letterIndex ("")*/,
12191  },
12192  // Rule Iraq 1985 1990 - Sep lastSun 1:00s 0 -
12193  {
12194  1985 /*fromYear*/,
12195  1990 /*toYear*/,
12196  9 /*inMonth*/,
12197  7 /*onDayOfWeek*/,
12198  0 /*onDayOfMonth*/,
12199  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
12200  240 /*atTimeCode (3600/15)*/,
12201  0 /*deltaMinutes*/,
12202  0 /*letterIndex ("")*/,
12203  },
12204  // Rule Iraq 1986 1990 - Mar lastSun 1:00s 1:00 -
12205  {
12206  1986 /*fromYear*/,
12207  1990 /*toYear*/,
12208  3 /*inMonth*/,
12209  7 /*onDayOfWeek*/,
12210  0 /*onDayOfMonth*/,
12211  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
12212  240 /*atTimeCode (3600/15)*/,
12213  60 /*deltaMinutes*/,
12214  0 /*letterIndex ("")*/,
12215  },
12216  // Rule Iraq 1991 2007 - Apr 1 3:00s 1:00 -
12217  {
12218  1991 /*fromYear*/,
12219  2007 /*toYear*/,
12220  4 /*inMonth*/,
12221  0 /*onDayOfWeek*/,
12222  1 /*onDayOfMonth*/,
12223  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
12224  720 /*atTimeCode (10800/15)*/,
12225  60 /*deltaMinutes*/,
12226  0 /*letterIndex ("")*/,
12227  },
12228  // Rule Iraq 1991 2007 - Oct 1 3:00s 0 -
12229  {
12230  1991 /*fromYear*/,
12231  2007 /*toYear*/,
12232  10 /*inMonth*/,
12233  0 /*onDayOfWeek*/,
12234  1 /*onDayOfMonth*/,
12235  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
12236  720 /*atTimeCode (10800/15)*/,
12237  0 /*deltaMinutes*/,
12238  0 /*letterIndex ("")*/,
12239  },
12240 
12241 };
12242 
12243 const complete::ZonePolicy kZonePolicyIraq ACE_TIME_PROGMEM = {
12244  kZoneRulesIraq /*rules*/,
12245  9 /*numRules*/,
12246 };
12247 
12248 //---------------------------------------------------------------------------
12249 // Policy name: Italy
12250 // Rules: 42
12251 //---------------------------------------------------------------------------
12252 
12253 static const complete::ZoneRule kZoneRulesItaly[] ACE_TIME_PROGMEM = {
12254  // Anchor: Rule Italy 1916 1917 - Sep 30 24:00 0 -
12255  {
12256  -32767 /*fromYear*/,
12257  -32767 /*toYear*/,
12258  1 /*inMonth*/,
12259  0 /*onDayOfWeek*/,
12260  1 /*onDayOfMonth*/,
12261  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
12262  0 /*atTimeCode (0/15)*/,
12263  0 /*deltaMinutes*/,
12264  0 /*letterIndex ("")*/,
12265  },
12266  // Rule Italy 1916 only - Jun 3 24:00 1:00 S
12267  {
12268  1916 /*fromYear*/,
12269  1916 /*toYear*/,
12270  6 /*inMonth*/,
12271  0 /*onDayOfWeek*/,
12272  3 /*onDayOfMonth*/,
12273  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
12274  5760 /*atTimeCode (86400/15)*/,
12275  60 /*deltaMinutes*/,
12276  25 /*letterIndex ("S")*/,
12277  },
12278  // Rule Italy 1916 1917 - Sep 30 24:00 0 -
12279  {
12280  1916 /*fromYear*/,
12281  1917 /*toYear*/,
12282  9 /*inMonth*/,
12283  0 /*onDayOfWeek*/,
12284  30 /*onDayOfMonth*/,
12285  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
12286  5760 /*atTimeCode (86400/15)*/,
12287  0 /*deltaMinutes*/,
12288  0 /*letterIndex ("")*/,
12289  },
12290  // Rule Italy 1917 only - Mar 31 24:00 1:00 S
12291  {
12292  1917 /*fromYear*/,
12293  1917 /*toYear*/,
12294  3 /*inMonth*/,
12295  0 /*onDayOfWeek*/,
12296  31 /*onDayOfMonth*/,
12297  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
12298  5760 /*atTimeCode (86400/15)*/,
12299  60 /*deltaMinutes*/,
12300  25 /*letterIndex ("S")*/,
12301  },
12302  // Rule Italy 1918 only - Mar 9 24:00 1:00 S
12303  {
12304  1918 /*fromYear*/,
12305  1918 /*toYear*/,
12306  3 /*inMonth*/,
12307  0 /*onDayOfWeek*/,
12308  9 /*onDayOfMonth*/,
12309  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
12310  5760 /*atTimeCode (86400/15)*/,
12311  60 /*deltaMinutes*/,
12312  25 /*letterIndex ("S")*/,
12313  },
12314  // Rule Italy 1918 only - Oct 6 24:00 0 -
12315  {
12316  1918 /*fromYear*/,
12317  1918 /*toYear*/,
12318  10 /*inMonth*/,
12319  0 /*onDayOfWeek*/,
12320  6 /*onDayOfMonth*/,
12321  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
12322  5760 /*atTimeCode (86400/15)*/,
12323  0 /*deltaMinutes*/,
12324  0 /*letterIndex ("")*/,
12325  },
12326  // Rule Italy 1919 only - Mar 1 24:00 1:00 S
12327  {
12328  1919 /*fromYear*/,
12329  1919 /*toYear*/,
12330  3 /*inMonth*/,
12331  0 /*onDayOfWeek*/,
12332  1 /*onDayOfMonth*/,
12333  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
12334  5760 /*atTimeCode (86400/15)*/,
12335  60 /*deltaMinutes*/,
12336  25 /*letterIndex ("S")*/,
12337  },
12338  // Rule Italy 1919 only - Oct 4 24:00 0 -
12339  {
12340  1919 /*fromYear*/,
12341  1919 /*toYear*/,
12342  10 /*inMonth*/,
12343  0 /*onDayOfWeek*/,
12344  4 /*onDayOfMonth*/,
12345  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
12346  5760 /*atTimeCode (86400/15)*/,
12347  0 /*deltaMinutes*/,
12348  0 /*letterIndex ("")*/,
12349  },
12350  // Rule Italy 1920 only - Mar 20 24:00 1:00 S
12351  {
12352  1920 /*fromYear*/,
12353  1920 /*toYear*/,
12354  3 /*inMonth*/,
12355  0 /*onDayOfWeek*/,
12356  20 /*onDayOfMonth*/,
12357  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
12358  5760 /*atTimeCode (86400/15)*/,
12359  60 /*deltaMinutes*/,
12360  25 /*letterIndex ("S")*/,
12361  },
12362  // Rule Italy 1920 only - Sep 18 24:00 0 -
12363  {
12364  1920 /*fromYear*/,
12365  1920 /*toYear*/,
12366  9 /*inMonth*/,
12367  0 /*onDayOfWeek*/,
12368  18 /*onDayOfMonth*/,
12369  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
12370  5760 /*atTimeCode (86400/15)*/,
12371  0 /*deltaMinutes*/,
12372  0 /*letterIndex ("")*/,
12373  },
12374  // Rule Italy 1940 only - Jun 14 24:00 1:00 S
12375  {
12376  1940 /*fromYear*/,
12377  1940 /*toYear*/,
12378  6 /*inMonth*/,
12379  0 /*onDayOfWeek*/,
12380  14 /*onDayOfMonth*/,
12381  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
12382  5760 /*atTimeCode (86400/15)*/,
12383  60 /*deltaMinutes*/,
12384  25 /*letterIndex ("S")*/,
12385  },
12386  // Rule Italy 1942 only - Nov 2 2:00s 0 -
12387  {
12388  1942 /*fromYear*/,
12389  1942 /*toYear*/,
12390  11 /*inMonth*/,
12391  0 /*onDayOfWeek*/,
12392  2 /*onDayOfMonth*/,
12393  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
12394  480 /*atTimeCode (7200/15)*/,
12395  0 /*deltaMinutes*/,
12396  0 /*letterIndex ("")*/,
12397  },
12398  // Rule Italy 1943 only - Mar 29 2:00s 1:00 S
12399  {
12400  1943 /*fromYear*/,
12401  1943 /*toYear*/,
12402  3 /*inMonth*/,
12403  0 /*onDayOfWeek*/,
12404  29 /*onDayOfMonth*/,
12405  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
12406  480 /*atTimeCode (7200/15)*/,
12407  60 /*deltaMinutes*/,
12408  25 /*letterIndex ("S")*/,
12409  },
12410  // Rule Italy 1943 only - Oct 4 2:00s 0 -
12411  {
12412  1943 /*fromYear*/,
12413  1943 /*toYear*/,
12414  10 /*inMonth*/,
12415  0 /*onDayOfWeek*/,
12416  4 /*onDayOfMonth*/,
12417  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
12418  480 /*atTimeCode (7200/15)*/,
12419  0 /*deltaMinutes*/,
12420  0 /*letterIndex ("")*/,
12421  },
12422  // Rule Italy 1944 only - Apr 2 2:00s 1:00 S
12423  {
12424  1944 /*fromYear*/,
12425  1944 /*toYear*/,
12426  4 /*inMonth*/,
12427  0 /*onDayOfWeek*/,
12428  2 /*onDayOfMonth*/,
12429  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
12430  480 /*atTimeCode (7200/15)*/,
12431  60 /*deltaMinutes*/,
12432  25 /*letterIndex ("S")*/,
12433  },
12434  // Rule Italy 1944 only - Sep 17 2:00s 0 -
12435  {
12436  1944 /*fromYear*/,
12437  1944 /*toYear*/,
12438  9 /*inMonth*/,
12439  0 /*onDayOfWeek*/,
12440  17 /*onDayOfMonth*/,
12441  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
12442  480 /*atTimeCode (7200/15)*/,
12443  0 /*deltaMinutes*/,
12444  0 /*letterIndex ("")*/,
12445  },
12446  // Rule Italy 1945 only - Apr 2 2:00 1:00 S
12447  {
12448  1945 /*fromYear*/,
12449  1945 /*toYear*/,
12450  4 /*inMonth*/,
12451  0 /*onDayOfWeek*/,
12452  2 /*onDayOfMonth*/,
12453  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
12454  480 /*atTimeCode (7200/15)*/,
12455  60 /*deltaMinutes*/,
12456  25 /*letterIndex ("S")*/,
12457  },
12458  // Rule Italy 1945 only - Sep 15 1:00 0 -
12459  {
12460  1945 /*fromYear*/,
12461  1945 /*toYear*/,
12462  9 /*inMonth*/,
12463  0 /*onDayOfWeek*/,
12464  15 /*onDayOfMonth*/,
12465  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
12466  240 /*atTimeCode (3600/15)*/,
12467  0 /*deltaMinutes*/,
12468  0 /*letterIndex ("")*/,
12469  },
12470  // Rule Italy 1946 only - Mar 17 2:00s 1:00 S
12471  {
12472  1946 /*fromYear*/,
12473  1946 /*toYear*/,
12474  3 /*inMonth*/,
12475  0 /*onDayOfWeek*/,
12476  17 /*onDayOfMonth*/,
12477  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
12478  480 /*atTimeCode (7200/15)*/,
12479  60 /*deltaMinutes*/,
12480  25 /*letterIndex ("S")*/,
12481  },
12482  // Rule Italy 1946 only - Oct 6 2:00s 0 -
12483  {
12484  1946 /*fromYear*/,
12485  1946 /*toYear*/,
12486  10 /*inMonth*/,
12487  0 /*onDayOfWeek*/,
12488  6 /*onDayOfMonth*/,
12489  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
12490  480 /*atTimeCode (7200/15)*/,
12491  0 /*deltaMinutes*/,
12492  0 /*letterIndex ("")*/,
12493  },
12494  // Rule Italy 1947 only - Mar 16 0:00s 1:00 S
12495  {
12496  1947 /*fromYear*/,
12497  1947 /*toYear*/,
12498  3 /*inMonth*/,
12499  0 /*onDayOfWeek*/,
12500  16 /*onDayOfMonth*/,
12501  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
12502  0 /*atTimeCode (0/15)*/,
12503  60 /*deltaMinutes*/,
12504  25 /*letterIndex ("S")*/,
12505  },
12506  // Rule Italy 1947 only - Oct 5 0:00s 0 -
12507  {
12508  1947 /*fromYear*/,
12509  1947 /*toYear*/,
12510  10 /*inMonth*/,
12511  0 /*onDayOfWeek*/,
12512  5 /*onDayOfMonth*/,
12513  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
12514  0 /*atTimeCode (0/15)*/,
12515  0 /*deltaMinutes*/,
12516  0 /*letterIndex ("")*/,
12517  },
12518  // Rule Italy 1948 only - Feb 29 2:00s 1:00 S
12519  {
12520  1948 /*fromYear*/,
12521  1948 /*toYear*/,
12522  2 /*inMonth*/,
12523  0 /*onDayOfWeek*/,
12524  29 /*onDayOfMonth*/,
12525  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
12526  480 /*atTimeCode (7200/15)*/,
12527  60 /*deltaMinutes*/,
12528  25 /*letterIndex ("S")*/,
12529  },
12530  // Rule Italy 1948 only - Oct 3 2:00s 0 -
12531  {
12532  1948 /*fromYear*/,
12533  1948 /*toYear*/,
12534  10 /*inMonth*/,
12535  0 /*onDayOfWeek*/,
12536  3 /*onDayOfMonth*/,
12537  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
12538  480 /*atTimeCode (7200/15)*/,
12539  0 /*deltaMinutes*/,
12540  0 /*letterIndex ("")*/,
12541  },
12542  // Rule Italy 1966 1968 - May Sun>=22 0:00s 1:00 S
12543  {
12544  1966 /*fromYear*/,
12545  1968 /*toYear*/,
12546  5 /*inMonth*/,
12547  7 /*onDayOfWeek*/,
12548  22 /*onDayOfMonth*/,
12549  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
12550  0 /*atTimeCode (0/15)*/,
12551  60 /*deltaMinutes*/,
12552  25 /*letterIndex ("S")*/,
12553  },
12554  // Rule Italy 1966 only - Sep 24 24:00 0 -
12555  {
12556  1966 /*fromYear*/,
12557  1966 /*toYear*/,
12558  9 /*inMonth*/,
12559  0 /*onDayOfWeek*/,
12560  24 /*onDayOfMonth*/,
12561  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
12562  5760 /*atTimeCode (86400/15)*/,
12563  0 /*deltaMinutes*/,
12564  0 /*letterIndex ("")*/,
12565  },
12566  // Rule Italy 1967 1969 - Sep Sun>=22 0:00s 0 -
12567  {
12568  1967 /*fromYear*/,
12569  1969 /*toYear*/,
12570  9 /*inMonth*/,
12571  7 /*onDayOfWeek*/,
12572  22 /*onDayOfMonth*/,
12573  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
12574  0 /*atTimeCode (0/15)*/,
12575  0 /*deltaMinutes*/,
12576  0 /*letterIndex ("")*/,
12577  },
12578  // Rule Italy 1969 only - Jun 1 0:00s 1:00 S
12579  {
12580  1969 /*fromYear*/,
12581  1969 /*toYear*/,
12582  6 /*inMonth*/,
12583  0 /*onDayOfWeek*/,
12584  1 /*onDayOfMonth*/,
12585  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
12586  0 /*atTimeCode (0/15)*/,
12587  60 /*deltaMinutes*/,
12588  25 /*letterIndex ("S")*/,
12589  },
12590  // Rule Italy 1970 only - May 31 0:00s 1:00 S
12591  {
12592  1970 /*fromYear*/,
12593  1970 /*toYear*/,
12594  5 /*inMonth*/,
12595  0 /*onDayOfWeek*/,
12596  31 /*onDayOfMonth*/,
12597  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
12598  0 /*atTimeCode (0/15)*/,
12599  60 /*deltaMinutes*/,
12600  25 /*letterIndex ("S")*/,
12601  },
12602  // Rule Italy 1970 only - Sep lastSun 0:00s 0 -
12603  {
12604  1970 /*fromYear*/,
12605  1970 /*toYear*/,
12606  9 /*inMonth*/,
12607  7 /*onDayOfWeek*/,
12608  0 /*onDayOfMonth*/,
12609  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
12610  0 /*atTimeCode (0/15)*/,
12611  0 /*deltaMinutes*/,
12612  0 /*letterIndex ("")*/,
12613  },
12614  // Rule Italy 1971 1972 - May Sun>=22 0:00s 1:00 S
12615  {
12616  1971 /*fromYear*/,
12617  1972 /*toYear*/,
12618  5 /*inMonth*/,
12619  7 /*onDayOfWeek*/,
12620  22 /*onDayOfMonth*/,
12621  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
12622  0 /*atTimeCode (0/15)*/,
12623  60 /*deltaMinutes*/,
12624  25 /*letterIndex ("S")*/,
12625  },
12626  // Rule Italy 1971 only - Sep lastSun 0:00s 0 -
12627  {
12628  1971 /*fromYear*/,
12629  1971 /*toYear*/,
12630  9 /*inMonth*/,
12631  7 /*onDayOfWeek*/,
12632  0 /*onDayOfMonth*/,
12633  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
12634  0 /*atTimeCode (0/15)*/,
12635  0 /*deltaMinutes*/,
12636  0 /*letterIndex ("")*/,
12637  },
12638  // Rule Italy 1972 only - Oct 1 0:00s 0 -
12639  {
12640  1972 /*fromYear*/,
12641  1972 /*toYear*/,
12642  10 /*inMonth*/,
12643  0 /*onDayOfWeek*/,
12644  1 /*onDayOfMonth*/,
12645  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
12646  0 /*atTimeCode (0/15)*/,
12647  0 /*deltaMinutes*/,
12648  0 /*letterIndex ("")*/,
12649  },
12650  // Rule Italy 1973 only - Jun 3 0:00s 1:00 S
12651  {
12652  1973 /*fromYear*/,
12653  1973 /*toYear*/,
12654  6 /*inMonth*/,
12655  0 /*onDayOfWeek*/,
12656  3 /*onDayOfMonth*/,
12657  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
12658  0 /*atTimeCode (0/15)*/,
12659  60 /*deltaMinutes*/,
12660  25 /*letterIndex ("S")*/,
12661  },
12662  // Rule Italy 1973 1974 - Sep lastSun 0:00s 0 -
12663  {
12664  1973 /*fromYear*/,
12665  1974 /*toYear*/,
12666  9 /*inMonth*/,
12667  7 /*onDayOfWeek*/,
12668  0 /*onDayOfMonth*/,
12669  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
12670  0 /*atTimeCode (0/15)*/,
12671  0 /*deltaMinutes*/,
12672  0 /*letterIndex ("")*/,
12673  },
12674  // Rule Italy 1974 only - May 26 0:00s 1:00 S
12675  {
12676  1974 /*fromYear*/,
12677  1974 /*toYear*/,
12678  5 /*inMonth*/,
12679  0 /*onDayOfWeek*/,
12680  26 /*onDayOfMonth*/,
12681  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
12682  0 /*atTimeCode (0/15)*/,
12683  60 /*deltaMinutes*/,
12684  25 /*letterIndex ("S")*/,
12685  },
12686  // Rule Italy 1975 only - Jun 1 0:00s 1:00 S
12687  {
12688  1975 /*fromYear*/,
12689  1975 /*toYear*/,
12690  6 /*inMonth*/,
12691  0 /*onDayOfWeek*/,
12692  1 /*onDayOfMonth*/,
12693  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
12694  0 /*atTimeCode (0/15)*/,
12695  60 /*deltaMinutes*/,
12696  25 /*letterIndex ("S")*/,
12697  },
12698  // Rule Italy 1975 1977 - Sep lastSun 0:00s 0 -
12699  {
12700  1975 /*fromYear*/,
12701  1977 /*toYear*/,
12702  9 /*inMonth*/,
12703  7 /*onDayOfWeek*/,
12704  0 /*onDayOfMonth*/,
12705  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
12706  0 /*atTimeCode (0/15)*/,
12707  0 /*deltaMinutes*/,
12708  0 /*letterIndex ("")*/,
12709  },
12710  // Rule Italy 1976 only - May 30 0:00s 1:00 S
12711  {
12712  1976 /*fromYear*/,
12713  1976 /*toYear*/,
12714  5 /*inMonth*/,
12715  0 /*onDayOfWeek*/,
12716  30 /*onDayOfMonth*/,
12717  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
12718  0 /*atTimeCode (0/15)*/,
12719  60 /*deltaMinutes*/,
12720  25 /*letterIndex ("S")*/,
12721  },
12722  // Rule Italy 1977 1979 - May Sun>=22 0:00s 1:00 S
12723  {
12724  1977 /*fromYear*/,
12725  1979 /*toYear*/,
12726  5 /*inMonth*/,
12727  7 /*onDayOfWeek*/,
12728  22 /*onDayOfMonth*/,
12729  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
12730  0 /*atTimeCode (0/15)*/,
12731  60 /*deltaMinutes*/,
12732  25 /*letterIndex ("S")*/,
12733  },
12734  // Rule Italy 1978 only - Oct 1 0:00s 0 -
12735  {
12736  1978 /*fromYear*/,
12737  1978 /*toYear*/,
12738  10 /*inMonth*/,
12739  0 /*onDayOfWeek*/,
12740  1 /*onDayOfMonth*/,
12741  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
12742  0 /*atTimeCode (0/15)*/,
12743  0 /*deltaMinutes*/,
12744  0 /*letterIndex ("")*/,
12745  },
12746  // Rule Italy 1979 only - Sep 30 0:00s 0 -
12747  {
12748  1979 /*fromYear*/,
12749  1979 /*toYear*/,
12750  9 /*inMonth*/,
12751  0 /*onDayOfWeek*/,
12752  30 /*onDayOfMonth*/,
12753  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
12754  0 /*atTimeCode (0/15)*/,
12755  0 /*deltaMinutes*/,
12756  0 /*letterIndex ("")*/,
12757  },
12758 
12759 };
12760 
12761 const complete::ZonePolicy kZonePolicyItaly ACE_TIME_PROGMEM = {
12762  kZoneRulesItaly /*rules*/,
12763  42 /*numRules*/,
12764 };
12765 
12766 //---------------------------------------------------------------------------
12767 // Policy name: Japan
12768 // Rules: 5
12769 //---------------------------------------------------------------------------
12770 
12771 static const complete::ZoneRule kZoneRulesJapan[] ACE_TIME_PROGMEM = {
12772  // Anchor: Rule Japan 1948 1951 - Sep Sat>=8 25:00 0 S
12773  {
12774  -32767 /*fromYear*/,
12775  -32767 /*toYear*/,
12776  1 /*inMonth*/,
12777  0 /*onDayOfWeek*/,
12778  1 /*onDayOfMonth*/,
12779  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
12780  0 /*atTimeCode (0/15)*/,
12781  0 /*deltaMinutes*/,
12782  25 /*letterIndex ("S")*/,
12783  },
12784  // Rule Japan 1948 only - May Sat>=1 24:00 1:00 D
12785  {
12786  1948 /*fromYear*/,
12787  1948 /*toYear*/,
12788  5 /*inMonth*/,
12789  6 /*onDayOfWeek*/,
12790  1 /*onDayOfMonth*/,
12791  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
12792  5760 /*atTimeCode (86400/15)*/,
12793  60 /*deltaMinutes*/,
12794  13 /*letterIndex ("D")*/,
12795  },
12796  // Rule Japan 1948 1951 - Sep Sat>=8 25:00 0 S
12797  {
12798  1948 /*fromYear*/,
12799  1951 /*toYear*/,
12800  9 /*inMonth*/,
12801  6 /*onDayOfWeek*/,
12802  8 /*onDayOfMonth*/,
12803  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
12804  6000 /*atTimeCode (90000/15)*/,
12805  0 /*deltaMinutes*/,
12806  25 /*letterIndex ("S")*/,
12807  },
12808  // Rule Japan 1949 only - Apr Sat>=1 24:00 1:00 D
12809  {
12810  1949 /*fromYear*/,
12811  1949 /*toYear*/,
12812  4 /*inMonth*/,
12813  6 /*onDayOfWeek*/,
12814  1 /*onDayOfMonth*/,
12815  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
12816  5760 /*atTimeCode (86400/15)*/,
12817  60 /*deltaMinutes*/,
12818  13 /*letterIndex ("D")*/,
12819  },
12820  // Rule Japan 1950 1951 - May Sat>=1 24:00 1:00 D
12821  {
12822  1950 /*fromYear*/,
12823  1951 /*toYear*/,
12824  5 /*inMonth*/,
12825  6 /*onDayOfWeek*/,
12826  1 /*onDayOfMonth*/,
12827  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
12828  5760 /*atTimeCode (86400/15)*/,
12829  60 /*deltaMinutes*/,
12830  13 /*letterIndex ("D")*/,
12831  },
12832 
12833 };
12834 
12835 const complete::ZonePolicy kZonePolicyJapan ACE_TIME_PROGMEM = {
12836  kZoneRulesJapan /*rules*/,
12837  5 /*numRules*/,
12838 };
12839 
12840 //---------------------------------------------------------------------------
12841 // Policy name: Jordan
12842 // Rules: 33
12843 //---------------------------------------------------------------------------
12844 
12845 static const complete::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = {
12846  // Anchor: Rule Jordan 1973 1975 - Oct 1 0:00 0 -
12847  {
12848  -32767 /*fromYear*/,
12849  -32767 /*toYear*/,
12850  1 /*inMonth*/,
12851  0 /*onDayOfWeek*/,
12852  1 /*onDayOfMonth*/,
12853  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
12854  0 /*atTimeCode (0/15)*/,
12855  0 /*deltaMinutes*/,
12856  0 /*letterIndex ("")*/,
12857  },
12858  // Rule Jordan 1973 only - Jun 6 0:00 1:00 S
12859  {
12860  1973 /*fromYear*/,
12861  1973 /*toYear*/,
12862  6 /*inMonth*/,
12863  0 /*onDayOfWeek*/,
12864  6 /*onDayOfMonth*/,
12865  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
12866  0 /*atTimeCode (0/15)*/,
12867  60 /*deltaMinutes*/,
12868  25 /*letterIndex ("S")*/,
12869  },
12870  // Rule Jordan 1973 1975 - Oct 1 0:00 0 -
12871  {
12872  1973 /*fromYear*/,
12873  1975 /*toYear*/,
12874  10 /*inMonth*/,
12875  0 /*onDayOfWeek*/,
12876  1 /*onDayOfMonth*/,
12877  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
12878  0 /*atTimeCode (0/15)*/,
12879  0 /*deltaMinutes*/,
12880  0 /*letterIndex ("")*/,
12881  },
12882  // Rule Jordan 1974 1977 - May 1 0:00 1:00 S
12883  {
12884  1974 /*fromYear*/,
12885  1977 /*toYear*/,
12886  5 /*inMonth*/,
12887  0 /*onDayOfWeek*/,
12888  1 /*onDayOfMonth*/,
12889  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
12890  0 /*atTimeCode (0/15)*/,
12891  60 /*deltaMinutes*/,
12892  25 /*letterIndex ("S")*/,
12893  },
12894  // Rule Jordan 1976 only - Nov 1 0:00 0 -
12895  {
12896  1976 /*fromYear*/,
12897  1976 /*toYear*/,
12898  11 /*inMonth*/,
12899  0 /*onDayOfWeek*/,
12900  1 /*onDayOfMonth*/,
12901  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
12902  0 /*atTimeCode (0/15)*/,
12903  0 /*deltaMinutes*/,
12904  0 /*letterIndex ("")*/,
12905  },
12906  // Rule Jordan 1977 only - Oct 1 0:00 0 -
12907  {
12908  1977 /*fromYear*/,
12909  1977 /*toYear*/,
12910  10 /*inMonth*/,
12911  0 /*onDayOfWeek*/,
12912  1 /*onDayOfMonth*/,
12913  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
12914  0 /*atTimeCode (0/15)*/,
12915  0 /*deltaMinutes*/,
12916  0 /*letterIndex ("")*/,
12917  },
12918  // Rule Jordan 1978 only - Apr 30 0:00 1:00 S
12919  {
12920  1978 /*fromYear*/,
12921  1978 /*toYear*/,
12922  4 /*inMonth*/,
12923  0 /*onDayOfWeek*/,
12924  30 /*onDayOfMonth*/,
12925  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
12926  0 /*atTimeCode (0/15)*/,
12927  60 /*deltaMinutes*/,
12928  25 /*letterIndex ("S")*/,
12929  },
12930  // Rule Jordan 1978 only - Sep 30 0:00 0 -
12931  {
12932  1978 /*fromYear*/,
12933  1978 /*toYear*/,
12934  9 /*inMonth*/,
12935  0 /*onDayOfWeek*/,
12936  30 /*onDayOfMonth*/,
12937  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
12938  0 /*atTimeCode (0/15)*/,
12939  0 /*deltaMinutes*/,
12940  0 /*letterIndex ("")*/,
12941  },
12942  // Rule Jordan 1985 only - Apr 1 0:00 1:00 S
12943  {
12944  1985 /*fromYear*/,
12945  1985 /*toYear*/,
12946  4 /*inMonth*/,
12947  0 /*onDayOfWeek*/,
12948  1 /*onDayOfMonth*/,
12949  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
12950  0 /*atTimeCode (0/15)*/,
12951  60 /*deltaMinutes*/,
12952  25 /*letterIndex ("S")*/,
12953  },
12954  // Rule Jordan 1985 only - Oct 1 0:00 0 -
12955  {
12956  1985 /*fromYear*/,
12957  1985 /*toYear*/,
12958  10 /*inMonth*/,
12959  0 /*onDayOfWeek*/,
12960  1 /*onDayOfMonth*/,
12961  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
12962  0 /*atTimeCode (0/15)*/,
12963  0 /*deltaMinutes*/,
12964  0 /*letterIndex ("")*/,
12965  },
12966  // Rule Jordan 1986 1988 - Apr Fri>=1 0:00 1:00 S
12967  {
12968  1986 /*fromYear*/,
12969  1988 /*toYear*/,
12970  4 /*inMonth*/,
12971  5 /*onDayOfWeek*/,
12972  1 /*onDayOfMonth*/,
12973  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
12974  0 /*atTimeCode (0/15)*/,
12975  60 /*deltaMinutes*/,
12976  25 /*letterIndex ("S")*/,
12977  },
12978  // Rule Jordan 1986 1990 - Oct Fri>=1 0:00 0 -
12979  {
12980  1986 /*fromYear*/,
12981  1990 /*toYear*/,
12982  10 /*inMonth*/,
12983  5 /*onDayOfWeek*/,
12984  1 /*onDayOfMonth*/,
12985  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
12986  0 /*atTimeCode (0/15)*/,
12987  0 /*deltaMinutes*/,
12988  0 /*letterIndex ("")*/,
12989  },
12990  // Rule Jordan 1989 only - May 8 0:00 1:00 S
12991  {
12992  1989 /*fromYear*/,
12993  1989 /*toYear*/,
12994  5 /*inMonth*/,
12995  0 /*onDayOfWeek*/,
12996  8 /*onDayOfMonth*/,
12997  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
12998  0 /*atTimeCode (0/15)*/,
12999  60 /*deltaMinutes*/,
13000  25 /*letterIndex ("S")*/,
13001  },
13002  // Rule Jordan 1990 only - Apr 27 0:00 1:00 S
13003  {
13004  1990 /*fromYear*/,
13005  1990 /*toYear*/,
13006  4 /*inMonth*/,
13007  0 /*onDayOfWeek*/,
13008  27 /*onDayOfMonth*/,
13009  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13010  0 /*atTimeCode (0/15)*/,
13011  60 /*deltaMinutes*/,
13012  25 /*letterIndex ("S")*/,
13013  },
13014  // Rule Jordan 1991 only - Apr 17 0:00 1:00 S
13015  {
13016  1991 /*fromYear*/,
13017  1991 /*toYear*/,
13018  4 /*inMonth*/,
13019  0 /*onDayOfWeek*/,
13020  17 /*onDayOfMonth*/,
13021  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13022  0 /*atTimeCode (0/15)*/,
13023  60 /*deltaMinutes*/,
13024  25 /*letterIndex ("S")*/,
13025  },
13026  // Rule Jordan 1991 only - Sep 27 0:00 0 -
13027  {
13028  1991 /*fromYear*/,
13029  1991 /*toYear*/,
13030  9 /*inMonth*/,
13031  0 /*onDayOfWeek*/,
13032  27 /*onDayOfMonth*/,
13033  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13034  0 /*atTimeCode (0/15)*/,
13035  0 /*deltaMinutes*/,
13036  0 /*letterIndex ("")*/,
13037  },
13038  // Rule Jordan 1992 only - Apr 10 0:00 1:00 S
13039  {
13040  1992 /*fromYear*/,
13041  1992 /*toYear*/,
13042  4 /*inMonth*/,
13043  0 /*onDayOfWeek*/,
13044  10 /*onDayOfMonth*/,
13045  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13046  0 /*atTimeCode (0/15)*/,
13047  60 /*deltaMinutes*/,
13048  25 /*letterIndex ("S")*/,
13049  },
13050  // Rule Jordan 1992 1993 - Oct Fri>=1 0:00 0 -
13051  {
13052  1992 /*fromYear*/,
13053  1993 /*toYear*/,
13054  10 /*inMonth*/,
13055  5 /*onDayOfWeek*/,
13056  1 /*onDayOfMonth*/,
13057  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13058  0 /*atTimeCode (0/15)*/,
13059  0 /*deltaMinutes*/,
13060  0 /*letterIndex ("")*/,
13061  },
13062  // Rule Jordan 1993 1998 - Apr Fri>=1 0:00 1:00 S
13063  {
13064  1993 /*fromYear*/,
13065  1998 /*toYear*/,
13066  4 /*inMonth*/,
13067  5 /*onDayOfWeek*/,
13068  1 /*onDayOfMonth*/,
13069  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13070  0 /*atTimeCode (0/15)*/,
13071  60 /*deltaMinutes*/,
13072  25 /*letterIndex ("S")*/,
13073  },
13074  // Rule Jordan 1994 only - Sep Fri>=15 0:00 0 -
13075  {
13076  1994 /*fromYear*/,
13077  1994 /*toYear*/,
13078  9 /*inMonth*/,
13079  5 /*onDayOfWeek*/,
13080  15 /*onDayOfMonth*/,
13081  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13082  0 /*atTimeCode (0/15)*/,
13083  0 /*deltaMinutes*/,
13084  0 /*letterIndex ("")*/,
13085  },
13086  // Rule Jordan 1995 1998 - Sep Fri>=15 0:00s 0 -
13087  {
13088  1995 /*fromYear*/,
13089  1998 /*toYear*/,
13090  9 /*inMonth*/,
13091  5 /*onDayOfWeek*/,
13092  15 /*onDayOfMonth*/,
13093  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
13094  0 /*atTimeCode (0/15)*/,
13095  0 /*deltaMinutes*/,
13096  0 /*letterIndex ("")*/,
13097  },
13098  // Rule Jordan 1999 only - Jul 1 0:00s 1:00 S
13099  {
13100  1999 /*fromYear*/,
13101  1999 /*toYear*/,
13102  7 /*inMonth*/,
13103  0 /*onDayOfWeek*/,
13104  1 /*onDayOfMonth*/,
13105  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
13106  0 /*atTimeCode (0/15)*/,
13107  60 /*deltaMinutes*/,
13108  25 /*letterIndex ("S")*/,
13109  },
13110  // Rule Jordan 1999 2002 - Sep lastFri 0:00s 0 -
13111  {
13112  1999 /*fromYear*/,
13113  2002 /*toYear*/,
13114  9 /*inMonth*/,
13115  5 /*onDayOfWeek*/,
13116  0 /*onDayOfMonth*/,
13117  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
13118  0 /*atTimeCode (0/15)*/,
13119  0 /*deltaMinutes*/,
13120  0 /*letterIndex ("")*/,
13121  },
13122  // Rule Jordan 2000 2001 - Mar lastThu 0:00s 1:00 S
13123  {
13124  2000 /*fromYear*/,
13125  2001 /*toYear*/,
13126  3 /*inMonth*/,
13127  4 /*onDayOfWeek*/,
13128  0 /*onDayOfMonth*/,
13129  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
13130  0 /*atTimeCode (0/15)*/,
13131  60 /*deltaMinutes*/,
13132  25 /*letterIndex ("S")*/,
13133  },
13134  // Rule Jordan 2002 2012 - Mar lastThu 24:00 1:00 S
13135  {
13136  2002 /*fromYear*/,
13137  2012 /*toYear*/,
13138  3 /*inMonth*/,
13139  4 /*onDayOfWeek*/,
13140  0 /*onDayOfMonth*/,
13141  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13142  5760 /*atTimeCode (86400/15)*/,
13143  60 /*deltaMinutes*/,
13144  25 /*letterIndex ("S")*/,
13145  },
13146  // Rule Jordan 2003 only - Oct 24 0:00s 0 -
13147  {
13148  2003 /*fromYear*/,
13149  2003 /*toYear*/,
13150  10 /*inMonth*/,
13151  0 /*onDayOfWeek*/,
13152  24 /*onDayOfMonth*/,
13153  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
13154  0 /*atTimeCode (0/15)*/,
13155  0 /*deltaMinutes*/,
13156  0 /*letterIndex ("")*/,
13157  },
13158  // Rule Jordan 2004 only - Oct 15 0:00s 0 -
13159  {
13160  2004 /*fromYear*/,
13161  2004 /*toYear*/,
13162  10 /*inMonth*/,
13163  0 /*onDayOfWeek*/,
13164  15 /*onDayOfMonth*/,
13165  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
13166  0 /*atTimeCode (0/15)*/,
13167  0 /*deltaMinutes*/,
13168  0 /*letterIndex ("")*/,
13169  },
13170  // Rule Jordan 2005 only - Sep lastFri 0:00s 0 -
13171  {
13172  2005 /*fromYear*/,
13173  2005 /*toYear*/,
13174  9 /*inMonth*/,
13175  5 /*onDayOfWeek*/,
13176  0 /*onDayOfMonth*/,
13177  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
13178  0 /*atTimeCode (0/15)*/,
13179  0 /*deltaMinutes*/,
13180  0 /*letterIndex ("")*/,
13181  },
13182  // Rule Jordan 2006 2011 - Oct lastFri 0:00s 0 -
13183  {
13184  2006 /*fromYear*/,
13185  2011 /*toYear*/,
13186  10 /*inMonth*/,
13187  5 /*onDayOfWeek*/,
13188  0 /*onDayOfMonth*/,
13189  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
13190  0 /*atTimeCode (0/15)*/,
13191  0 /*deltaMinutes*/,
13192  0 /*letterIndex ("")*/,
13193  },
13194  // Rule Jordan 2013 only - Dec 20 0:00 0 -
13195  {
13196  2013 /*fromYear*/,
13197  2013 /*toYear*/,
13198  12 /*inMonth*/,
13199  0 /*onDayOfWeek*/,
13200  20 /*onDayOfMonth*/,
13201  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13202  0 /*atTimeCode (0/15)*/,
13203  0 /*deltaMinutes*/,
13204  0 /*letterIndex ("")*/,
13205  },
13206  // Rule Jordan 2014 2021 - Mar lastThu 24:00 1:00 S
13207  {
13208  2014 /*fromYear*/,
13209  2021 /*toYear*/,
13210  3 /*inMonth*/,
13211  4 /*onDayOfWeek*/,
13212  0 /*onDayOfMonth*/,
13213  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13214  5760 /*atTimeCode (86400/15)*/,
13215  60 /*deltaMinutes*/,
13216  25 /*letterIndex ("S")*/,
13217  },
13218  // Rule Jordan 2014 2022 - Oct lastFri 0:00s 0 -
13219  {
13220  2014 /*fromYear*/,
13221  2022 /*toYear*/,
13222  10 /*inMonth*/,
13223  5 /*onDayOfWeek*/,
13224  0 /*onDayOfMonth*/,
13225  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
13226  0 /*atTimeCode (0/15)*/,
13227  0 /*deltaMinutes*/,
13228  0 /*letterIndex ("")*/,
13229  },
13230  // Rule Jordan 2022 only - Feb lastThu 24:00 1:00 S
13231  {
13232  2022 /*fromYear*/,
13233  2022 /*toYear*/,
13234  2 /*inMonth*/,
13235  4 /*onDayOfWeek*/,
13236  0 /*onDayOfMonth*/,
13237  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13238  5760 /*atTimeCode (86400/15)*/,
13239  60 /*deltaMinutes*/,
13240  25 /*letterIndex ("S")*/,
13241  },
13242 
13243 };
13244 
13245 const complete::ZonePolicy kZonePolicyJordan ACE_TIME_PROGMEM = {
13246  kZoneRulesJordan /*rules*/,
13247  33 /*numRules*/,
13248 };
13249 
13250 //---------------------------------------------------------------------------
13251 // Policy name: Kyrgyz
13252 // Rules: 5
13253 //---------------------------------------------------------------------------
13254 
13255 static const complete::ZoneRule kZoneRulesKyrgyz[] ACE_TIME_PROGMEM = {
13256  // Anchor: Rule Kyrgyz 1992 1996 - Sep lastSun 0:00 0 -
13257  {
13258  -32767 /*fromYear*/,
13259  -32767 /*toYear*/,
13260  1 /*inMonth*/,
13261  0 /*onDayOfWeek*/,
13262  1 /*onDayOfMonth*/,
13263  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13264  0 /*atTimeCode (0/15)*/,
13265  0 /*deltaMinutes*/,
13266  0 /*letterIndex ("")*/,
13267  },
13268  // Rule Kyrgyz 1992 1996 - Apr Sun>=7 0:00s 1:00 -
13269  {
13270  1992 /*fromYear*/,
13271  1996 /*toYear*/,
13272  4 /*inMonth*/,
13273  7 /*onDayOfWeek*/,
13274  7 /*onDayOfMonth*/,
13275  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
13276  0 /*atTimeCode (0/15)*/,
13277  60 /*deltaMinutes*/,
13278  0 /*letterIndex ("")*/,
13279  },
13280  // Rule Kyrgyz 1992 1996 - Sep lastSun 0:00 0 -
13281  {
13282  1992 /*fromYear*/,
13283  1996 /*toYear*/,
13284  9 /*inMonth*/,
13285  7 /*onDayOfWeek*/,
13286  0 /*onDayOfMonth*/,
13287  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13288  0 /*atTimeCode (0/15)*/,
13289  0 /*deltaMinutes*/,
13290  0 /*letterIndex ("")*/,
13291  },
13292  // Rule Kyrgyz 1997 2005 - Mar lastSun 2:30 1:00 -
13293  {
13294  1997 /*fromYear*/,
13295  2005 /*toYear*/,
13296  3 /*inMonth*/,
13297  7 /*onDayOfWeek*/,
13298  0 /*onDayOfMonth*/,
13299  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13300  600 /*atTimeCode (9000/15)*/,
13301  60 /*deltaMinutes*/,
13302  0 /*letterIndex ("")*/,
13303  },
13304  // Rule Kyrgyz 1997 2004 - Oct lastSun 2:30 0 -
13305  {
13306  1997 /*fromYear*/,
13307  2004 /*toYear*/,
13308  10 /*inMonth*/,
13309  7 /*onDayOfWeek*/,
13310  0 /*onDayOfMonth*/,
13311  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13312  600 /*atTimeCode (9000/15)*/,
13313  0 /*deltaMinutes*/,
13314  0 /*letterIndex ("")*/,
13315  },
13316 
13317 };
13318 
13319 const complete::ZonePolicy kZonePolicyKyrgyz ACE_TIME_PROGMEM = {
13320  kZoneRulesKyrgyz /*rules*/,
13321  5 /*numRules*/,
13322 };
13323 
13324 //---------------------------------------------------------------------------
13325 // Policy name: LH
13326 // Rules: 15
13327 //---------------------------------------------------------------------------
13328 
13329 static const complete::ZoneRule kZoneRulesLH[] ACE_TIME_PROGMEM = {
13330  // Anchor: Rule LH 1982 1985 - Mar Sun>=1 2:00 0 -
13331  {
13332  -32767 /*fromYear*/,
13333  -32767 /*toYear*/,
13334  1 /*inMonth*/,
13335  0 /*onDayOfWeek*/,
13336  1 /*onDayOfMonth*/,
13337  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13338  0 /*atTimeCode (0/15)*/,
13339  0 /*deltaMinutes*/,
13340  0 /*letterIndex ("")*/,
13341  },
13342  // Rule LH 1981 1984 - Oct lastSun 2:00 1:00 -
13343  {
13344  1981 /*fromYear*/,
13345  1984 /*toYear*/,
13346  10 /*inMonth*/,
13347  7 /*onDayOfWeek*/,
13348  0 /*onDayOfMonth*/,
13349  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13350  480 /*atTimeCode (7200/15)*/,
13351  60 /*deltaMinutes*/,
13352  0 /*letterIndex ("")*/,
13353  },
13354  // Rule LH 1982 1985 - Mar Sun>=1 2:00 0 -
13355  {
13356  1982 /*fromYear*/,
13357  1985 /*toYear*/,
13358  3 /*inMonth*/,
13359  7 /*onDayOfWeek*/,
13360  1 /*onDayOfMonth*/,
13361  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13362  480 /*atTimeCode (7200/15)*/,
13363  0 /*deltaMinutes*/,
13364  0 /*letterIndex ("")*/,
13365  },
13366  // Rule LH 1985 only - Oct lastSun 2:00 0:30 -
13367  {
13368  1985 /*fromYear*/,
13369  1985 /*toYear*/,
13370  10 /*inMonth*/,
13371  7 /*onDayOfWeek*/,
13372  0 /*onDayOfMonth*/,
13373  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13374  480 /*atTimeCode (7200/15)*/,
13375  30 /*deltaMinutes*/,
13376  0 /*letterIndex ("")*/,
13377  },
13378  // Rule LH 1986 1989 - Mar Sun>=15 2:00 0 -
13379  {
13380  1986 /*fromYear*/,
13381  1989 /*toYear*/,
13382  3 /*inMonth*/,
13383  7 /*onDayOfWeek*/,
13384  15 /*onDayOfMonth*/,
13385  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13386  480 /*atTimeCode (7200/15)*/,
13387  0 /*deltaMinutes*/,
13388  0 /*letterIndex ("")*/,
13389  },
13390  // Rule LH 1986 only - Oct 19 2:00 0:30 -
13391  {
13392  1986 /*fromYear*/,
13393  1986 /*toYear*/,
13394  10 /*inMonth*/,
13395  0 /*onDayOfWeek*/,
13396  19 /*onDayOfMonth*/,
13397  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13398  480 /*atTimeCode (7200/15)*/,
13399  30 /*deltaMinutes*/,
13400  0 /*letterIndex ("")*/,
13401  },
13402  // Rule LH 1987 1999 - Oct lastSun 2:00 0:30 -
13403  {
13404  1987 /*fromYear*/,
13405  1999 /*toYear*/,
13406  10 /*inMonth*/,
13407  7 /*onDayOfWeek*/,
13408  0 /*onDayOfMonth*/,
13409  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13410  480 /*atTimeCode (7200/15)*/,
13411  30 /*deltaMinutes*/,
13412  0 /*letterIndex ("")*/,
13413  },
13414  // Rule LH 1990 1995 - Mar Sun>=1 2:00 0 -
13415  {
13416  1990 /*fromYear*/,
13417  1995 /*toYear*/,
13418  3 /*inMonth*/,
13419  7 /*onDayOfWeek*/,
13420  1 /*onDayOfMonth*/,
13421  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13422  480 /*atTimeCode (7200/15)*/,
13423  0 /*deltaMinutes*/,
13424  0 /*letterIndex ("")*/,
13425  },
13426  // Rule LH 1996 2005 - Mar lastSun 2:00 0 -
13427  {
13428  1996 /*fromYear*/,
13429  2005 /*toYear*/,
13430  3 /*inMonth*/,
13431  7 /*onDayOfWeek*/,
13432  0 /*onDayOfMonth*/,
13433  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13434  480 /*atTimeCode (7200/15)*/,
13435  0 /*deltaMinutes*/,
13436  0 /*letterIndex ("")*/,
13437  },
13438  // Rule LH 2000 only - Aug lastSun 2:00 0:30 -
13439  {
13440  2000 /*fromYear*/,
13441  2000 /*toYear*/,
13442  8 /*inMonth*/,
13443  7 /*onDayOfWeek*/,
13444  0 /*onDayOfMonth*/,
13445  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13446  480 /*atTimeCode (7200/15)*/,
13447  30 /*deltaMinutes*/,
13448  0 /*letterIndex ("")*/,
13449  },
13450  // Rule LH 2001 2007 - Oct lastSun 2:00 0:30 -
13451  {
13452  2001 /*fromYear*/,
13453  2007 /*toYear*/,
13454  10 /*inMonth*/,
13455  7 /*onDayOfWeek*/,
13456  0 /*onDayOfMonth*/,
13457  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13458  480 /*atTimeCode (7200/15)*/,
13459  30 /*deltaMinutes*/,
13460  0 /*letterIndex ("")*/,
13461  },
13462  // Rule LH 2006 only - Apr Sun>=1 2:00 0 -
13463  {
13464  2006 /*fromYear*/,
13465  2006 /*toYear*/,
13466  4 /*inMonth*/,
13467  7 /*onDayOfWeek*/,
13468  1 /*onDayOfMonth*/,
13469  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13470  480 /*atTimeCode (7200/15)*/,
13471  0 /*deltaMinutes*/,
13472  0 /*letterIndex ("")*/,
13473  },
13474  // Rule LH 2007 only - Mar lastSun 2:00 0 -
13475  {
13476  2007 /*fromYear*/,
13477  2007 /*toYear*/,
13478  3 /*inMonth*/,
13479  7 /*onDayOfWeek*/,
13480  0 /*onDayOfMonth*/,
13481  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13482  480 /*atTimeCode (7200/15)*/,
13483  0 /*deltaMinutes*/,
13484  0 /*letterIndex ("")*/,
13485  },
13486  // Rule LH 2008 max - Apr Sun>=1 2:00 0 -
13487  {
13488  2008 /*fromYear*/,
13489  32766 /*toYear*/,
13490  4 /*inMonth*/,
13491  7 /*onDayOfWeek*/,
13492  1 /*onDayOfMonth*/,
13493  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13494  480 /*atTimeCode (7200/15)*/,
13495  0 /*deltaMinutes*/,
13496  0 /*letterIndex ("")*/,
13497  },
13498  // Rule LH 2008 max - Oct Sun>=1 2:00 0:30 -
13499  {
13500  2008 /*fromYear*/,
13501  32766 /*toYear*/,
13502  10 /*inMonth*/,
13503  7 /*onDayOfWeek*/,
13504  1 /*onDayOfMonth*/,
13505  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13506  480 /*atTimeCode (7200/15)*/,
13507  30 /*deltaMinutes*/,
13508  0 /*letterIndex ("")*/,
13509  },
13510 
13511 };
13512 
13513 const complete::ZonePolicy kZonePolicyLH ACE_TIME_PROGMEM = {
13514  kZoneRulesLH /*rules*/,
13515  15 /*numRules*/,
13516 };
13517 
13518 //---------------------------------------------------------------------------
13519 // Policy name: Latvia
13520 // Rules: 3
13521 //---------------------------------------------------------------------------
13522 
13523 static const complete::ZoneRule kZoneRulesLatvia[] ACE_TIME_PROGMEM = {
13524  // Anchor: Rule Latvia 1989 1996 - Sep lastSun 2:00s 0 -
13525  {
13526  -32767 /*fromYear*/,
13527  -32767 /*toYear*/,
13528  1 /*inMonth*/,
13529  0 /*onDayOfWeek*/,
13530  1 /*onDayOfMonth*/,
13531  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13532  0 /*atTimeCode (0/15)*/,
13533  0 /*deltaMinutes*/,
13534  0 /*letterIndex ("")*/,
13535  },
13536  // Rule Latvia 1989 1996 - Mar lastSun 2:00s 1:00 S
13537  {
13538  1989 /*fromYear*/,
13539  1996 /*toYear*/,
13540  3 /*inMonth*/,
13541  7 /*onDayOfWeek*/,
13542  0 /*onDayOfMonth*/,
13543  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
13544  480 /*atTimeCode (7200/15)*/,
13545  60 /*deltaMinutes*/,
13546  25 /*letterIndex ("S")*/,
13547  },
13548  // Rule Latvia 1989 1996 - Sep lastSun 2:00s 0 -
13549  {
13550  1989 /*fromYear*/,
13551  1996 /*toYear*/,
13552  9 /*inMonth*/,
13553  7 /*onDayOfWeek*/,
13554  0 /*onDayOfMonth*/,
13555  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
13556  480 /*atTimeCode (7200/15)*/,
13557  0 /*deltaMinutes*/,
13558  0 /*letterIndex ("")*/,
13559  },
13560 
13561 };
13562 
13563 const complete::ZonePolicy kZonePolicyLatvia ACE_TIME_PROGMEM = {
13564  kZoneRulesLatvia /*rules*/,
13565  3 /*numRules*/,
13566 };
13567 
13568 //---------------------------------------------------------------------------
13569 // Policy name: Lebanon
13570 // Rules: 25
13571 //---------------------------------------------------------------------------
13572 
13573 static const complete::ZoneRule kZoneRulesLebanon[] ACE_TIME_PROGMEM = {
13574  // Anchor: Rule Lebanon 1920 only - Oct 25 0:00 0 -
13575  {
13576  -32767 /*fromYear*/,
13577  -32767 /*toYear*/,
13578  1 /*inMonth*/,
13579  0 /*onDayOfWeek*/,
13580  1 /*onDayOfMonth*/,
13581  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13582  0 /*atTimeCode (0/15)*/,
13583  0 /*deltaMinutes*/,
13584  0 /*letterIndex ("")*/,
13585  },
13586  // Rule Lebanon 1920 only - Mar 28 0:00 1:00 S
13587  {
13588  1920 /*fromYear*/,
13589  1920 /*toYear*/,
13590  3 /*inMonth*/,
13591  0 /*onDayOfWeek*/,
13592  28 /*onDayOfMonth*/,
13593  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13594  0 /*atTimeCode (0/15)*/,
13595  60 /*deltaMinutes*/,
13596  25 /*letterIndex ("S")*/,
13597  },
13598  // Rule Lebanon 1920 only - Oct 25 0:00 0 -
13599  {
13600  1920 /*fromYear*/,
13601  1920 /*toYear*/,
13602  10 /*inMonth*/,
13603  0 /*onDayOfWeek*/,
13604  25 /*onDayOfMonth*/,
13605  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13606  0 /*atTimeCode (0/15)*/,
13607  0 /*deltaMinutes*/,
13608  0 /*letterIndex ("")*/,
13609  },
13610  // Rule Lebanon 1921 only - Apr 3 0:00 1:00 S
13611  {
13612  1921 /*fromYear*/,
13613  1921 /*toYear*/,
13614  4 /*inMonth*/,
13615  0 /*onDayOfWeek*/,
13616  3 /*onDayOfMonth*/,
13617  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13618  0 /*atTimeCode (0/15)*/,
13619  60 /*deltaMinutes*/,
13620  25 /*letterIndex ("S")*/,
13621  },
13622  // Rule Lebanon 1921 only - Oct 3 0:00 0 -
13623  {
13624  1921 /*fromYear*/,
13625  1921 /*toYear*/,
13626  10 /*inMonth*/,
13627  0 /*onDayOfWeek*/,
13628  3 /*onDayOfMonth*/,
13629  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13630  0 /*atTimeCode (0/15)*/,
13631  0 /*deltaMinutes*/,
13632  0 /*letterIndex ("")*/,
13633  },
13634  // Rule Lebanon 1922 only - Mar 26 0:00 1:00 S
13635  {
13636  1922 /*fromYear*/,
13637  1922 /*toYear*/,
13638  3 /*inMonth*/,
13639  0 /*onDayOfWeek*/,
13640  26 /*onDayOfMonth*/,
13641  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13642  0 /*atTimeCode (0/15)*/,
13643  60 /*deltaMinutes*/,
13644  25 /*letterIndex ("S")*/,
13645  },
13646  // Rule Lebanon 1922 only - Oct 8 0:00 0 -
13647  {
13648  1922 /*fromYear*/,
13649  1922 /*toYear*/,
13650  10 /*inMonth*/,
13651  0 /*onDayOfWeek*/,
13652  8 /*onDayOfMonth*/,
13653  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13654  0 /*atTimeCode (0/15)*/,
13655  0 /*deltaMinutes*/,
13656  0 /*letterIndex ("")*/,
13657  },
13658  // Rule Lebanon 1923 only - Apr 22 0:00 1:00 S
13659  {
13660  1923 /*fromYear*/,
13661  1923 /*toYear*/,
13662  4 /*inMonth*/,
13663  0 /*onDayOfWeek*/,
13664  22 /*onDayOfMonth*/,
13665  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13666  0 /*atTimeCode (0/15)*/,
13667  60 /*deltaMinutes*/,
13668  25 /*letterIndex ("S")*/,
13669  },
13670  // Rule Lebanon 1923 only - Sep 16 0:00 0 -
13671  {
13672  1923 /*fromYear*/,
13673  1923 /*toYear*/,
13674  9 /*inMonth*/,
13675  0 /*onDayOfWeek*/,
13676  16 /*onDayOfMonth*/,
13677  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13678  0 /*atTimeCode (0/15)*/,
13679  0 /*deltaMinutes*/,
13680  0 /*letterIndex ("")*/,
13681  },
13682  // Rule Lebanon 1957 1961 - May 1 0:00 1:00 S
13683  {
13684  1957 /*fromYear*/,
13685  1961 /*toYear*/,
13686  5 /*inMonth*/,
13687  0 /*onDayOfWeek*/,
13688  1 /*onDayOfMonth*/,
13689  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13690  0 /*atTimeCode (0/15)*/,
13691  60 /*deltaMinutes*/,
13692  25 /*letterIndex ("S")*/,
13693  },
13694  // Rule Lebanon 1957 1961 - Oct 1 0:00 0 -
13695  {
13696  1957 /*fromYear*/,
13697  1961 /*toYear*/,
13698  10 /*inMonth*/,
13699  0 /*onDayOfWeek*/,
13700  1 /*onDayOfMonth*/,
13701  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13702  0 /*atTimeCode (0/15)*/,
13703  0 /*deltaMinutes*/,
13704  0 /*letterIndex ("")*/,
13705  },
13706  // Rule Lebanon 1972 only - Jun 22 0:00 1:00 S
13707  {
13708  1972 /*fromYear*/,
13709  1972 /*toYear*/,
13710  6 /*inMonth*/,
13711  0 /*onDayOfWeek*/,
13712  22 /*onDayOfMonth*/,
13713  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13714  0 /*atTimeCode (0/15)*/,
13715  60 /*deltaMinutes*/,
13716  25 /*letterIndex ("S")*/,
13717  },
13718  // Rule Lebanon 1972 1977 - Oct 1 0:00 0 -
13719  {
13720  1972 /*fromYear*/,
13721  1977 /*toYear*/,
13722  10 /*inMonth*/,
13723  0 /*onDayOfWeek*/,
13724  1 /*onDayOfMonth*/,
13725  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13726  0 /*atTimeCode (0/15)*/,
13727  0 /*deltaMinutes*/,
13728  0 /*letterIndex ("")*/,
13729  },
13730  // Rule Lebanon 1973 1977 - May 1 0:00 1:00 S
13731  {
13732  1973 /*fromYear*/,
13733  1977 /*toYear*/,
13734  5 /*inMonth*/,
13735  0 /*onDayOfWeek*/,
13736  1 /*onDayOfMonth*/,
13737  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13738  0 /*atTimeCode (0/15)*/,
13739  60 /*deltaMinutes*/,
13740  25 /*letterIndex ("S")*/,
13741  },
13742  // Rule Lebanon 1978 only - Apr 30 0:00 1:00 S
13743  {
13744  1978 /*fromYear*/,
13745  1978 /*toYear*/,
13746  4 /*inMonth*/,
13747  0 /*onDayOfWeek*/,
13748  30 /*onDayOfMonth*/,
13749  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13750  0 /*atTimeCode (0/15)*/,
13751  60 /*deltaMinutes*/,
13752  25 /*letterIndex ("S")*/,
13753  },
13754  // Rule Lebanon 1978 only - Sep 30 0:00 0 -
13755  {
13756  1978 /*fromYear*/,
13757  1978 /*toYear*/,
13758  9 /*inMonth*/,
13759  0 /*onDayOfWeek*/,
13760  30 /*onDayOfMonth*/,
13761  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13762  0 /*atTimeCode (0/15)*/,
13763  0 /*deltaMinutes*/,
13764  0 /*letterIndex ("")*/,
13765  },
13766  // Rule Lebanon 1984 1987 - May 1 0:00 1:00 S
13767  {
13768  1984 /*fromYear*/,
13769  1987 /*toYear*/,
13770  5 /*inMonth*/,
13771  0 /*onDayOfWeek*/,
13772  1 /*onDayOfMonth*/,
13773  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13774  0 /*atTimeCode (0/15)*/,
13775  60 /*deltaMinutes*/,
13776  25 /*letterIndex ("S")*/,
13777  },
13778  // Rule Lebanon 1984 1991 - Oct 16 0:00 0 -
13779  {
13780  1984 /*fromYear*/,
13781  1991 /*toYear*/,
13782  10 /*inMonth*/,
13783  0 /*onDayOfWeek*/,
13784  16 /*onDayOfMonth*/,
13785  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13786  0 /*atTimeCode (0/15)*/,
13787  0 /*deltaMinutes*/,
13788  0 /*letterIndex ("")*/,
13789  },
13790  // Rule Lebanon 1988 only - Jun 1 0:00 1:00 S
13791  {
13792  1988 /*fromYear*/,
13793  1988 /*toYear*/,
13794  6 /*inMonth*/,
13795  0 /*onDayOfWeek*/,
13796  1 /*onDayOfMonth*/,
13797  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13798  0 /*atTimeCode (0/15)*/,
13799  60 /*deltaMinutes*/,
13800  25 /*letterIndex ("S")*/,
13801  },
13802  // Rule Lebanon 1989 only - May 10 0:00 1:00 S
13803  {
13804  1989 /*fromYear*/,
13805  1989 /*toYear*/,
13806  5 /*inMonth*/,
13807  0 /*onDayOfWeek*/,
13808  10 /*onDayOfMonth*/,
13809  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13810  0 /*atTimeCode (0/15)*/,
13811  60 /*deltaMinutes*/,
13812  25 /*letterIndex ("S")*/,
13813  },
13814  // Rule Lebanon 1990 1992 - May 1 0:00 1:00 S
13815  {
13816  1990 /*fromYear*/,
13817  1992 /*toYear*/,
13818  5 /*inMonth*/,
13819  0 /*onDayOfWeek*/,
13820  1 /*onDayOfMonth*/,
13821  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13822  0 /*atTimeCode (0/15)*/,
13823  60 /*deltaMinutes*/,
13824  25 /*letterIndex ("S")*/,
13825  },
13826  // Rule Lebanon 1992 only - Oct 4 0:00 0 -
13827  {
13828  1992 /*fromYear*/,
13829  1992 /*toYear*/,
13830  10 /*inMonth*/,
13831  0 /*onDayOfWeek*/,
13832  4 /*onDayOfMonth*/,
13833  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13834  0 /*atTimeCode (0/15)*/,
13835  0 /*deltaMinutes*/,
13836  0 /*letterIndex ("")*/,
13837  },
13838  // Rule Lebanon 1993 max - Mar lastSun 0:00 1:00 S
13839  {
13840  1993 /*fromYear*/,
13841  32766 /*toYear*/,
13842  3 /*inMonth*/,
13843  7 /*onDayOfWeek*/,
13844  0 /*onDayOfMonth*/,
13845  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13846  0 /*atTimeCode (0/15)*/,
13847  60 /*deltaMinutes*/,
13848  25 /*letterIndex ("S")*/,
13849  },
13850  // Rule Lebanon 1993 1998 - Sep lastSun 0:00 0 -
13851  {
13852  1993 /*fromYear*/,
13853  1998 /*toYear*/,
13854  9 /*inMonth*/,
13855  7 /*onDayOfWeek*/,
13856  0 /*onDayOfMonth*/,
13857  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13858  0 /*atTimeCode (0/15)*/,
13859  0 /*deltaMinutes*/,
13860  0 /*letterIndex ("")*/,
13861  },
13862  // Rule Lebanon 1999 max - Oct lastSun 0:00 0 -
13863  {
13864  1999 /*fromYear*/,
13865  32766 /*toYear*/,
13866  10 /*inMonth*/,
13867  7 /*onDayOfWeek*/,
13868  0 /*onDayOfMonth*/,
13869  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13870  0 /*atTimeCode (0/15)*/,
13871  0 /*deltaMinutes*/,
13872  0 /*letterIndex ("")*/,
13873  },
13874 
13875 };
13876 
13877 const complete::ZonePolicy kZonePolicyLebanon ACE_TIME_PROGMEM = {
13878  kZoneRulesLebanon /*rules*/,
13879  25 /*numRules*/,
13880 };
13881 
13882 //---------------------------------------------------------------------------
13883 // Policy name: Libya
13884 // Rules: 18
13885 //---------------------------------------------------------------------------
13886 
13887 static const complete::ZoneRule kZoneRulesLibya[] ACE_TIME_PROGMEM = {
13888  // Anchor: Rule Libya 1952 only - Jan 1 0:00 0 -
13889  {
13890  -32767 /*fromYear*/,
13891  -32767 /*toYear*/,
13892  1 /*inMonth*/,
13893  0 /*onDayOfWeek*/,
13894  1 /*onDayOfMonth*/,
13895  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13896  0 /*atTimeCode (0/15)*/,
13897  0 /*deltaMinutes*/,
13898  0 /*letterIndex ("")*/,
13899  },
13900  // Rule Libya 1951 only - Oct 14 2:00 1:00 S
13901  {
13902  1951 /*fromYear*/,
13903  1951 /*toYear*/,
13904  10 /*inMonth*/,
13905  0 /*onDayOfWeek*/,
13906  14 /*onDayOfMonth*/,
13907  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13908  480 /*atTimeCode (7200/15)*/,
13909  60 /*deltaMinutes*/,
13910  25 /*letterIndex ("S")*/,
13911  },
13912  // Rule Libya 1952 only - Jan 1 0:00 0 -
13913  {
13914  1952 /*fromYear*/,
13915  1952 /*toYear*/,
13916  1 /*inMonth*/,
13917  0 /*onDayOfWeek*/,
13918  1 /*onDayOfMonth*/,
13919  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13920  0 /*atTimeCode (0/15)*/,
13921  0 /*deltaMinutes*/,
13922  0 /*letterIndex ("")*/,
13923  },
13924  // Rule Libya 1953 only - Oct 9 2:00 1:00 S
13925  {
13926  1953 /*fromYear*/,
13927  1953 /*toYear*/,
13928  10 /*inMonth*/,
13929  0 /*onDayOfWeek*/,
13930  9 /*onDayOfMonth*/,
13931  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13932  480 /*atTimeCode (7200/15)*/,
13933  60 /*deltaMinutes*/,
13934  25 /*letterIndex ("S")*/,
13935  },
13936  // Rule Libya 1954 only - Jan 1 0:00 0 -
13937  {
13938  1954 /*fromYear*/,
13939  1954 /*toYear*/,
13940  1 /*inMonth*/,
13941  0 /*onDayOfWeek*/,
13942  1 /*onDayOfMonth*/,
13943  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13944  0 /*atTimeCode (0/15)*/,
13945  0 /*deltaMinutes*/,
13946  0 /*letterIndex ("")*/,
13947  },
13948  // Rule Libya 1955 only - Sep 30 0:00 1:00 S
13949  {
13950  1955 /*fromYear*/,
13951  1955 /*toYear*/,
13952  9 /*inMonth*/,
13953  0 /*onDayOfWeek*/,
13954  30 /*onDayOfMonth*/,
13955  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13956  0 /*atTimeCode (0/15)*/,
13957  60 /*deltaMinutes*/,
13958  25 /*letterIndex ("S")*/,
13959  },
13960  // Rule Libya 1956 only - Jan 1 0:00 0 -
13961  {
13962  1956 /*fromYear*/,
13963  1956 /*toYear*/,
13964  1 /*inMonth*/,
13965  0 /*onDayOfWeek*/,
13966  1 /*onDayOfMonth*/,
13967  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13968  0 /*atTimeCode (0/15)*/,
13969  0 /*deltaMinutes*/,
13970  0 /*letterIndex ("")*/,
13971  },
13972  // Rule Libya 1982 1984 - Apr 1 0:00 1:00 S
13973  {
13974  1982 /*fromYear*/,
13975  1984 /*toYear*/,
13976  4 /*inMonth*/,
13977  0 /*onDayOfWeek*/,
13978  1 /*onDayOfMonth*/,
13979  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13980  0 /*atTimeCode (0/15)*/,
13981  60 /*deltaMinutes*/,
13982  25 /*letterIndex ("S")*/,
13983  },
13984  // Rule Libya 1982 1985 - Oct 1 0:00 0 -
13985  {
13986  1982 /*fromYear*/,
13987  1985 /*toYear*/,
13988  10 /*inMonth*/,
13989  0 /*onDayOfWeek*/,
13990  1 /*onDayOfMonth*/,
13991  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
13992  0 /*atTimeCode (0/15)*/,
13993  0 /*deltaMinutes*/,
13994  0 /*letterIndex ("")*/,
13995  },
13996  // Rule Libya 1985 only - Apr 6 0:00 1:00 S
13997  {
13998  1985 /*fromYear*/,
13999  1985 /*toYear*/,
14000  4 /*inMonth*/,
14001  0 /*onDayOfWeek*/,
14002  6 /*onDayOfMonth*/,
14003  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14004  0 /*atTimeCode (0/15)*/,
14005  60 /*deltaMinutes*/,
14006  25 /*letterIndex ("S")*/,
14007  },
14008  // Rule Libya 1986 only - Apr 4 0:00 1:00 S
14009  {
14010  1986 /*fromYear*/,
14011  1986 /*toYear*/,
14012  4 /*inMonth*/,
14013  0 /*onDayOfWeek*/,
14014  4 /*onDayOfMonth*/,
14015  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14016  0 /*atTimeCode (0/15)*/,
14017  60 /*deltaMinutes*/,
14018  25 /*letterIndex ("S")*/,
14019  },
14020  // Rule Libya 1986 only - Oct 3 0:00 0 -
14021  {
14022  1986 /*fromYear*/,
14023  1986 /*toYear*/,
14024  10 /*inMonth*/,
14025  0 /*onDayOfWeek*/,
14026  3 /*onDayOfMonth*/,
14027  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14028  0 /*atTimeCode (0/15)*/,
14029  0 /*deltaMinutes*/,
14030  0 /*letterIndex ("")*/,
14031  },
14032  // Rule Libya 1987 1989 - Apr 1 0:00 1:00 S
14033  {
14034  1987 /*fromYear*/,
14035  1989 /*toYear*/,
14036  4 /*inMonth*/,
14037  0 /*onDayOfWeek*/,
14038  1 /*onDayOfMonth*/,
14039  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14040  0 /*atTimeCode (0/15)*/,
14041  60 /*deltaMinutes*/,
14042  25 /*letterIndex ("S")*/,
14043  },
14044  // Rule Libya 1987 1989 - Oct 1 0:00 0 -
14045  {
14046  1987 /*fromYear*/,
14047  1989 /*toYear*/,
14048  10 /*inMonth*/,
14049  0 /*onDayOfWeek*/,
14050  1 /*onDayOfMonth*/,
14051  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14052  0 /*atTimeCode (0/15)*/,
14053  0 /*deltaMinutes*/,
14054  0 /*letterIndex ("")*/,
14055  },
14056  // Rule Libya 1997 only - Apr 4 0:00 1:00 S
14057  {
14058  1997 /*fromYear*/,
14059  1997 /*toYear*/,
14060  4 /*inMonth*/,
14061  0 /*onDayOfWeek*/,
14062  4 /*onDayOfMonth*/,
14063  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14064  0 /*atTimeCode (0/15)*/,
14065  60 /*deltaMinutes*/,
14066  25 /*letterIndex ("S")*/,
14067  },
14068  // Rule Libya 1997 only - Oct 4 0:00 0 -
14069  {
14070  1997 /*fromYear*/,
14071  1997 /*toYear*/,
14072  10 /*inMonth*/,
14073  0 /*onDayOfWeek*/,
14074  4 /*onDayOfMonth*/,
14075  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14076  0 /*atTimeCode (0/15)*/,
14077  0 /*deltaMinutes*/,
14078  0 /*letterIndex ("")*/,
14079  },
14080  // Rule Libya 2013 only - Mar lastFri 1:00 1:00 S
14081  {
14082  2013 /*fromYear*/,
14083  2013 /*toYear*/,
14084  3 /*inMonth*/,
14085  5 /*onDayOfWeek*/,
14086  0 /*onDayOfMonth*/,
14087  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14088  240 /*atTimeCode (3600/15)*/,
14089  60 /*deltaMinutes*/,
14090  25 /*letterIndex ("S")*/,
14091  },
14092  // Rule Libya 2013 only - Oct lastFri 2:00 0 -
14093  {
14094  2013 /*fromYear*/,
14095  2013 /*toYear*/,
14096  10 /*inMonth*/,
14097  5 /*onDayOfWeek*/,
14098  0 /*onDayOfMonth*/,
14099  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14100  480 /*atTimeCode (7200/15)*/,
14101  0 /*deltaMinutes*/,
14102  0 /*letterIndex ("")*/,
14103  },
14104 
14105 };
14106 
14107 const complete::ZonePolicy kZonePolicyLibya ACE_TIME_PROGMEM = {
14108  kZoneRulesLibya /*rules*/,
14109  18 /*numRules*/,
14110 };
14111 
14112 //---------------------------------------------------------------------------
14113 // Policy name: Louisville
14114 // Rules: 10
14115 //---------------------------------------------------------------------------
14116 
14117 static const complete::ZoneRule kZoneRulesLouisville[] ACE_TIME_PROGMEM = {
14118  // Anchor: Rule Louisville 1921 only - Sep 1 2:00 0 S
14119  {
14120  -32767 /*fromYear*/,
14121  -32767 /*toYear*/,
14122  1 /*inMonth*/,
14123  0 /*onDayOfWeek*/,
14124  1 /*onDayOfMonth*/,
14125  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14126  0 /*atTimeCode (0/15)*/,
14127  0 /*deltaMinutes*/,
14128  25 /*letterIndex ("S")*/,
14129  },
14130  // Rule Louisville 1921 only - May 1 2:00 1:00 D
14131  {
14132  1921 /*fromYear*/,
14133  1921 /*toYear*/,
14134  5 /*inMonth*/,
14135  0 /*onDayOfWeek*/,
14136  1 /*onDayOfMonth*/,
14137  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14138  480 /*atTimeCode (7200/15)*/,
14139  60 /*deltaMinutes*/,
14140  13 /*letterIndex ("D")*/,
14141  },
14142  // Rule Louisville 1921 only - Sep 1 2:00 0 S
14143  {
14144  1921 /*fromYear*/,
14145  1921 /*toYear*/,
14146  9 /*inMonth*/,
14147  0 /*onDayOfWeek*/,
14148  1 /*onDayOfMonth*/,
14149  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14150  480 /*atTimeCode (7200/15)*/,
14151  0 /*deltaMinutes*/,
14152  25 /*letterIndex ("S")*/,
14153  },
14154  // Rule Louisville 1941 only - Apr lastSun 2:00 1:00 D
14155  {
14156  1941 /*fromYear*/,
14157  1941 /*toYear*/,
14158  4 /*inMonth*/,
14159  7 /*onDayOfWeek*/,
14160  0 /*onDayOfMonth*/,
14161  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14162  480 /*atTimeCode (7200/15)*/,
14163  60 /*deltaMinutes*/,
14164  13 /*letterIndex ("D")*/,
14165  },
14166  // Rule Louisville 1941 only - Sep lastSun 2:00 0 S
14167  {
14168  1941 /*fromYear*/,
14169  1941 /*toYear*/,
14170  9 /*inMonth*/,
14171  7 /*onDayOfWeek*/,
14172  0 /*onDayOfMonth*/,
14173  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14174  480 /*atTimeCode (7200/15)*/,
14175  0 /*deltaMinutes*/,
14176  25 /*letterIndex ("S")*/,
14177  },
14178  // Rule Louisville 1946 only - Apr lastSun 0:01 1:00 D
14179  {
14180  1946 /*fromYear*/,
14181  1946 /*toYear*/,
14182  4 /*inMonth*/,
14183  7 /*onDayOfWeek*/,
14184  0 /*onDayOfMonth*/,
14185  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14186  4 /*atTimeCode (60/15)*/,
14187  60 /*deltaMinutes*/,
14188  13 /*letterIndex ("D")*/,
14189  },
14190  // Rule Louisville 1946 only - Jun 2 2:00 0 S
14191  {
14192  1946 /*fromYear*/,
14193  1946 /*toYear*/,
14194  6 /*inMonth*/,
14195  0 /*onDayOfWeek*/,
14196  2 /*onDayOfMonth*/,
14197  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14198  480 /*atTimeCode (7200/15)*/,
14199  0 /*deltaMinutes*/,
14200  25 /*letterIndex ("S")*/,
14201  },
14202  // Rule Louisville 1950 1961 - Apr lastSun 2:00 1:00 D
14203  {
14204  1950 /*fromYear*/,
14205  1961 /*toYear*/,
14206  4 /*inMonth*/,
14207  7 /*onDayOfWeek*/,
14208  0 /*onDayOfMonth*/,
14209  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14210  480 /*atTimeCode (7200/15)*/,
14211  60 /*deltaMinutes*/,
14212  13 /*letterIndex ("D")*/,
14213  },
14214  // Rule Louisville 1950 1955 - Sep lastSun 2:00 0 S
14215  {
14216  1950 /*fromYear*/,
14217  1955 /*toYear*/,
14218  9 /*inMonth*/,
14219  7 /*onDayOfWeek*/,
14220  0 /*onDayOfMonth*/,
14221  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14222  480 /*atTimeCode (7200/15)*/,
14223  0 /*deltaMinutes*/,
14224  25 /*letterIndex ("S")*/,
14225  },
14226  // Rule Louisville 1956 1961 - Oct lastSun 2:00 0 S
14227  {
14228  1956 /*fromYear*/,
14229  1961 /*toYear*/,
14230  10 /*inMonth*/,
14231  7 /*onDayOfWeek*/,
14232  0 /*onDayOfMonth*/,
14233  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14234  480 /*atTimeCode (7200/15)*/,
14235  0 /*deltaMinutes*/,
14236  25 /*letterIndex ("S")*/,
14237  },
14238 
14239 };
14240 
14241 const complete::ZonePolicy kZonePolicyLouisville ACE_TIME_PROGMEM = {
14242  kZoneRulesLouisville /*rules*/,
14243  10 /*numRules*/,
14244 };
14245 
14246 //---------------------------------------------------------------------------
14247 // Policy name: Macau
14248 // Rules: 28
14249 //---------------------------------------------------------------------------
14250 
14251 static const complete::ZoneRule kZoneRulesMacau[] ACE_TIME_PROGMEM = {
14252  // Anchor: Rule Macau 1942 only - Nov 17 23:00 0 -
14253  {
14254  -32767 /*fromYear*/,
14255  -32767 /*toYear*/,
14256  1 /*inMonth*/,
14257  0 /*onDayOfWeek*/,
14258  1 /*onDayOfMonth*/,
14259  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14260  0 /*atTimeCode (0/15)*/,
14261  0 /*deltaMinutes*/,
14262  0 /*letterIndex ("")*/,
14263  },
14264  // Rule Macau 1942 1943 - Apr 30 23:00 1:00 -
14265  {
14266  1942 /*fromYear*/,
14267  1943 /*toYear*/,
14268  4 /*inMonth*/,
14269  0 /*onDayOfWeek*/,
14270  30 /*onDayOfMonth*/,
14271  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14272  5520 /*atTimeCode (82800/15)*/,
14273  60 /*deltaMinutes*/,
14274  0 /*letterIndex ("")*/,
14275  },
14276  // Rule Macau 1942 only - Nov 17 23:00 0 -
14277  {
14278  1942 /*fromYear*/,
14279  1942 /*toYear*/,
14280  11 /*inMonth*/,
14281  0 /*onDayOfWeek*/,
14282  17 /*onDayOfMonth*/,
14283  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14284  5520 /*atTimeCode (82800/15)*/,
14285  0 /*deltaMinutes*/,
14286  0 /*letterIndex ("")*/,
14287  },
14288  // Rule Macau 1943 only - Sep 30 23:00 0 S
14289  {
14290  1943 /*fromYear*/,
14291  1943 /*toYear*/,
14292  9 /*inMonth*/,
14293  0 /*onDayOfWeek*/,
14294  30 /*onDayOfMonth*/,
14295  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14296  5520 /*atTimeCode (82800/15)*/,
14297  0 /*deltaMinutes*/,
14298  25 /*letterIndex ("S")*/,
14299  },
14300  // Rule Macau 1946 only - Apr 30 23:00s 1:00 D
14301  {
14302  1946 /*fromYear*/,
14303  1946 /*toYear*/,
14304  4 /*inMonth*/,
14305  0 /*onDayOfWeek*/,
14306  30 /*onDayOfMonth*/,
14307  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
14308  5520 /*atTimeCode (82800/15)*/,
14309  60 /*deltaMinutes*/,
14310  13 /*letterIndex ("D")*/,
14311  },
14312  // Rule Macau 1946 only - Sep 30 23:00s 0 S
14313  {
14314  1946 /*fromYear*/,
14315  1946 /*toYear*/,
14316  9 /*inMonth*/,
14317  0 /*onDayOfWeek*/,
14318  30 /*onDayOfMonth*/,
14319  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
14320  5520 /*atTimeCode (82800/15)*/,
14321  0 /*deltaMinutes*/,
14322  25 /*letterIndex ("S")*/,
14323  },
14324  // Rule Macau 1947 only - Apr 19 23:00s 1:00 D
14325  {
14326  1947 /*fromYear*/,
14327  1947 /*toYear*/,
14328  4 /*inMonth*/,
14329  0 /*onDayOfWeek*/,
14330  19 /*onDayOfMonth*/,
14331  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
14332  5520 /*atTimeCode (82800/15)*/,
14333  60 /*deltaMinutes*/,
14334  13 /*letterIndex ("D")*/,
14335  },
14336  // Rule Macau 1947 only - Nov 30 23:00s 0 S
14337  {
14338  1947 /*fromYear*/,
14339  1947 /*toYear*/,
14340  11 /*inMonth*/,
14341  0 /*onDayOfWeek*/,
14342  30 /*onDayOfMonth*/,
14343  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
14344  5520 /*atTimeCode (82800/15)*/,
14345  0 /*deltaMinutes*/,
14346  25 /*letterIndex ("S")*/,
14347  },
14348  // Rule Macau 1948 only - May 2 23:00s 1:00 D
14349  {
14350  1948 /*fromYear*/,
14351  1948 /*toYear*/,
14352  5 /*inMonth*/,
14353  0 /*onDayOfWeek*/,
14354  2 /*onDayOfMonth*/,
14355  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
14356  5520 /*atTimeCode (82800/15)*/,
14357  60 /*deltaMinutes*/,
14358  13 /*letterIndex ("D")*/,
14359  },
14360  // Rule Macau 1948 only - Oct 31 23:00s 0 S
14361  {
14362  1948 /*fromYear*/,
14363  1948 /*toYear*/,
14364  10 /*inMonth*/,
14365  0 /*onDayOfWeek*/,
14366  31 /*onDayOfMonth*/,
14367  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
14368  5520 /*atTimeCode (82800/15)*/,
14369  0 /*deltaMinutes*/,
14370  25 /*letterIndex ("S")*/,
14371  },
14372  // Rule Macau 1949 1950 - Apr Sat>=1 23:00s 1:00 D
14373  {
14374  1949 /*fromYear*/,
14375  1950 /*toYear*/,
14376  4 /*inMonth*/,
14377  6 /*onDayOfWeek*/,
14378  1 /*onDayOfMonth*/,
14379  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
14380  5520 /*atTimeCode (82800/15)*/,
14381  60 /*deltaMinutes*/,
14382  13 /*letterIndex ("D")*/,
14383  },
14384  // Rule Macau 1949 1950 - Oct lastSat 23:00s 0 S
14385  {
14386  1949 /*fromYear*/,
14387  1950 /*toYear*/,
14388  10 /*inMonth*/,
14389  6 /*onDayOfWeek*/,
14390  0 /*onDayOfMonth*/,
14391  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
14392  5520 /*atTimeCode (82800/15)*/,
14393  0 /*deltaMinutes*/,
14394  25 /*letterIndex ("S")*/,
14395  },
14396  // Rule Macau 1951 only - Mar 31 23:00s 1:00 D
14397  {
14398  1951 /*fromYear*/,
14399  1951 /*toYear*/,
14400  3 /*inMonth*/,
14401  0 /*onDayOfWeek*/,
14402  31 /*onDayOfMonth*/,
14403  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
14404  5520 /*atTimeCode (82800/15)*/,
14405  60 /*deltaMinutes*/,
14406  13 /*letterIndex ("D")*/,
14407  },
14408  // Rule Macau 1951 only - Oct 28 23:00s 0 S
14409  {
14410  1951 /*fromYear*/,
14411  1951 /*toYear*/,
14412  10 /*inMonth*/,
14413  0 /*onDayOfWeek*/,
14414  28 /*onDayOfMonth*/,
14415  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
14416  5520 /*atTimeCode (82800/15)*/,
14417  0 /*deltaMinutes*/,
14418  25 /*letterIndex ("S")*/,
14419  },
14420  // Rule Macau 1952 1953 - Apr Sat>=1 23:00s 1:00 D
14421  {
14422  1952 /*fromYear*/,
14423  1953 /*toYear*/,
14424  4 /*inMonth*/,
14425  6 /*onDayOfWeek*/,
14426  1 /*onDayOfMonth*/,
14427  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
14428  5520 /*atTimeCode (82800/15)*/,
14429  60 /*deltaMinutes*/,
14430  13 /*letterIndex ("D")*/,
14431  },
14432  // Rule Macau 1952 only - Nov 1 23:00s 0 S
14433  {
14434  1952 /*fromYear*/,
14435  1952 /*toYear*/,
14436  11 /*inMonth*/,
14437  0 /*onDayOfWeek*/,
14438  1 /*onDayOfMonth*/,
14439  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
14440  5520 /*atTimeCode (82800/15)*/,
14441  0 /*deltaMinutes*/,
14442  25 /*letterIndex ("S")*/,
14443  },
14444  // Rule Macau 1953 1954 - Oct lastSat 23:00s 0 S
14445  {
14446  1953 /*fromYear*/,
14447  1954 /*toYear*/,
14448  10 /*inMonth*/,
14449  6 /*onDayOfWeek*/,
14450  0 /*onDayOfMonth*/,
14451  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
14452  5520 /*atTimeCode (82800/15)*/,
14453  0 /*deltaMinutes*/,
14454  25 /*letterIndex ("S")*/,
14455  },
14456  // Rule Macau 1954 1956 - Mar Sat>=17 23:00s 1:00 D
14457  {
14458  1954 /*fromYear*/,
14459  1956 /*toYear*/,
14460  3 /*inMonth*/,
14461  6 /*onDayOfWeek*/,
14462  17 /*onDayOfMonth*/,
14463  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
14464  5520 /*atTimeCode (82800/15)*/,
14465  60 /*deltaMinutes*/,
14466  13 /*letterIndex ("D")*/,
14467  },
14468  // Rule Macau 1955 only - Nov 5 23:00s 0 S
14469  {
14470  1955 /*fromYear*/,
14471  1955 /*toYear*/,
14472  11 /*inMonth*/,
14473  0 /*onDayOfWeek*/,
14474  5 /*onDayOfMonth*/,
14475  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
14476  5520 /*atTimeCode (82800/15)*/,
14477  0 /*deltaMinutes*/,
14478  25 /*letterIndex ("S")*/,
14479  },
14480  // Rule Macau 1956 1964 - Nov Sun>=1 03:30 0 S
14481  {
14482  1956 /*fromYear*/,
14483  1964 /*toYear*/,
14484  11 /*inMonth*/,
14485  7 /*onDayOfWeek*/,
14486  1 /*onDayOfMonth*/,
14487  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14488  840 /*atTimeCode (12600/15)*/,
14489  0 /*deltaMinutes*/,
14490  25 /*letterIndex ("S")*/,
14491  },
14492  // Rule Macau 1957 1964 - Mar Sun>=18 03:30 1:00 D
14493  {
14494  1957 /*fromYear*/,
14495  1964 /*toYear*/,
14496  3 /*inMonth*/,
14497  7 /*onDayOfWeek*/,
14498  18 /*onDayOfMonth*/,
14499  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14500  840 /*atTimeCode (12600/15)*/,
14501  60 /*deltaMinutes*/,
14502  13 /*letterIndex ("D")*/,
14503  },
14504  // Rule Macau 1965 1973 - Apr Sun>=16 03:30 1:00 D
14505  {
14506  1965 /*fromYear*/,
14507  1973 /*toYear*/,
14508  4 /*inMonth*/,
14509  7 /*onDayOfWeek*/,
14510  16 /*onDayOfMonth*/,
14511  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14512  840 /*atTimeCode (12600/15)*/,
14513  60 /*deltaMinutes*/,
14514  13 /*letterIndex ("D")*/,
14515  },
14516  // Rule Macau 1965 1966 - Oct Sun>=16 02:30 0 S
14517  {
14518  1965 /*fromYear*/,
14519  1966 /*toYear*/,
14520  10 /*inMonth*/,
14521  7 /*onDayOfWeek*/,
14522  16 /*onDayOfMonth*/,
14523  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14524  600 /*atTimeCode (9000/15)*/,
14525  0 /*deltaMinutes*/,
14526  25 /*letterIndex ("S")*/,
14527  },
14528  // Rule Macau 1967 1976 - Oct Sun>=16 03:30 0 S
14529  {
14530  1967 /*fromYear*/,
14531  1976 /*toYear*/,
14532  10 /*inMonth*/,
14533  7 /*onDayOfWeek*/,
14534  16 /*onDayOfMonth*/,
14535  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14536  840 /*atTimeCode (12600/15)*/,
14537  0 /*deltaMinutes*/,
14538  25 /*letterIndex ("S")*/,
14539  },
14540  // Rule Macau 1973 only - Dec 30 03:30 1:00 D
14541  {
14542  1973 /*fromYear*/,
14543  1973 /*toYear*/,
14544  12 /*inMonth*/,
14545  0 /*onDayOfWeek*/,
14546  30 /*onDayOfMonth*/,
14547  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14548  840 /*atTimeCode (12600/15)*/,
14549  60 /*deltaMinutes*/,
14550  13 /*letterIndex ("D")*/,
14551  },
14552  // Rule Macau 1975 1976 - Apr Sun>=16 03:30 1:00 D
14553  {
14554  1975 /*fromYear*/,
14555  1976 /*toYear*/,
14556  4 /*inMonth*/,
14557  7 /*onDayOfWeek*/,
14558  16 /*onDayOfMonth*/,
14559  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14560  840 /*atTimeCode (12600/15)*/,
14561  60 /*deltaMinutes*/,
14562  13 /*letterIndex ("D")*/,
14563  },
14564  // Rule Macau 1979 only - May 13 03:30 1:00 D
14565  {
14566  1979 /*fromYear*/,
14567  1979 /*toYear*/,
14568  5 /*inMonth*/,
14569  0 /*onDayOfWeek*/,
14570  13 /*onDayOfMonth*/,
14571  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14572  840 /*atTimeCode (12600/15)*/,
14573  60 /*deltaMinutes*/,
14574  13 /*letterIndex ("D")*/,
14575  },
14576  // Rule Macau 1979 only - Oct Sun>=16 03:30 0 S
14577  {
14578  1979 /*fromYear*/,
14579  1979 /*toYear*/,
14580  10 /*inMonth*/,
14581  7 /*onDayOfWeek*/,
14582  16 /*onDayOfMonth*/,
14583  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14584  840 /*atTimeCode (12600/15)*/,
14585  0 /*deltaMinutes*/,
14586  25 /*letterIndex ("S")*/,
14587  },
14588 
14589 };
14590 
14591 const complete::ZonePolicy kZonePolicyMacau ACE_TIME_PROGMEM = {
14592  kZoneRulesMacau /*rules*/,
14593  28 /*numRules*/,
14594 };
14595 
14596 //---------------------------------------------------------------------------
14597 // Policy name: Malta
14598 // Rules: 8
14599 //---------------------------------------------------------------------------
14600 
14601 static const complete::ZoneRule kZoneRulesMalta[] ACE_TIME_PROGMEM = {
14602  // Anchor: Rule Malta 1973 only - Sep 29 0:00s 0 -
14603  {
14604  -32767 /*fromYear*/,
14605  -32767 /*toYear*/,
14606  1 /*inMonth*/,
14607  0 /*onDayOfWeek*/,
14608  1 /*onDayOfMonth*/,
14609  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14610  0 /*atTimeCode (0/15)*/,
14611  0 /*deltaMinutes*/,
14612  0 /*letterIndex ("")*/,
14613  },
14614  // Rule Malta 1973 only - Mar 31 0:00s 1:00 S
14615  {
14616  1973 /*fromYear*/,
14617  1973 /*toYear*/,
14618  3 /*inMonth*/,
14619  0 /*onDayOfWeek*/,
14620  31 /*onDayOfMonth*/,
14621  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
14622  0 /*atTimeCode (0/15)*/,
14623  60 /*deltaMinutes*/,
14624  25 /*letterIndex ("S")*/,
14625  },
14626  // Rule Malta 1973 only - Sep 29 0:00s 0 -
14627  {
14628  1973 /*fromYear*/,
14629  1973 /*toYear*/,
14630  9 /*inMonth*/,
14631  0 /*onDayOfWeek*/,
14632  29 /*onDayOfMonth*/,
14633  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
14634  0 /*atTimeCode (0/15)*/,
14635  0 /*deltaMinutes*/,
14636  0 /*letterIndex ("")*/,
14637  },
14638  // Rule Malta 1974 only - Apr 21 0:00s 1:00 S
14639  {
14640  1974 /*fromYear*/,
14641  1974 /*toYear*/,
14642  4 /*inMonth*/,
14643  0 /*onDayOfWeek*/,
14644  21 /*onDayOfMonth*/,
14645  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
14646  0 /*atTimeCode (0/15)*/,
14647  60 /*deltaMinutes*/,
14648  25 /*letterIndex ("S")*/,
14649  },
14650  // Rule Malta 1974 only - Sep 16 0:00s 0 -
14651  {
14652  1974 /*fromYear*/,
14653  1974 /*toYear*/,
14654  9 /*inMonth*/,
14655  0 /*onDayOfWeek*/,
14656  16 /*onDayOfMonth*/,
14657  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
14658  0 /*atTimeCode (0/15)*/,
14659  0 /*deltaMinutes*/,
14660  0 /*letterIndex ("")*/,
14661  },
14662  // Rule Malta 1975 1979 - Apr Sun>=15 2:00 1:00 S
14663  {
14664  1975 /*fromYear*/,
14665  1979 /*toYear*/,
14666  4 /*inMonth*/,
14667  7 /*onDayOfWeek*/,
14668  15 /*onDayOfMonth*/,
14669  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14670  480 /*atTimeCode (7200/15)*/,
14671  60 /*deltaMinutes*/,
14672  25 /*letterIndex ("S")*/,
14673  },
14674  // Rule Malta 1975 1980 - Sep Sun>=15 2:00 0 -
14675  {
14676  1975 /*fromYear*/,
14677  1980 /*toYear*/,
14678  9 /*inMonth*/,
14679  7 /*onDayOfWeek*/,
14680  15 /*onDayOfMonth*/,
14681  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14682  480 /*atTimeCode (7200/15)*/,
14683  0 /*deltaMinutes*/,
14684  0 /*letterIndex ("")*/,
14685  },
14686  // Rule Malta 1980 only - Mar 31 2:00 1:00 S
14687  {
14688  1980 /*fromYear*/,
14689  1980 /*toYear*/,
14690  3 /*inMonth*/,
14691  0 /*onDayOfWeek*/,
14692  31 /*onDayOfMonth*/,
14693  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14694  480 /*atTimeCode (7200/15)*/,
14695  60 /*deltaMinutes*/,
14696  25 /*letterIndex ("S")*/,
14697  },
14698 
14699 };
14700 
14701 const complete::ZonePolicy kZonePolicyMalta ACE_TIME_PROGMEM = {
14702  kZoneRulesMalta /*rules*/,
14703  8 /*numRules*/,
14704 };
14705 
14706 //---------------------------------------------------------------------------
14707 // Policy name: Marengo
14708 // Rules: 5
14709 //---------------------------------------------------------------------------
14710 
14711 static const complete::ZoneRule kZoneRulesMarengo[] ACE_TIME_PROGMEM = {
14712  // Anchor: Rule Marengo 1951 only - Sep lastSun 2:00 0 S
14713  {
14714  -32767 /*fromYear*/,
14715  -32767 /*toYear*/,
14716  1 /*inMonth*/,
14717  0 /*onDayOfWeek*/,
14718  1 /*onDayOfMonth*/,
14719  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14720  0 /*atTimeCode (0/15)*/,
14721  0 /*deltaMinutes*/,
14722  25 /*letterIndex ("S")*/,
14723  },
14724  // Rule Marengo 1951 only - Apr lastSun 2:00 1:00 D
14725  {
14726  1951 /*fromYear*/,
14727  1951 /*toYear*/,
14728  4 /*inMonth*/,
14729  7 /*onDayOfWeek*/,
14730  0 /*onDayOfMonth*/,
14731  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14732  480 /*atTimeCode (7200/15)*/,
14733  60 /*deltaMinutes*/,
14734  13 /*letterIndex ("D")*/,
14735  },
14736  // Rule Marengo 1951 only - Sep lastSun 2:00 0 S
14737  {
14738  1951 /*fromYear*/,
14739  1951 /*toYear*/,
14740  9 /*inMonth*/,
14741  7 /*onDayOfWeek*/,
14742  0 /*onDayOfMonth*/,
14743  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14744  480 /*atTimeCode (7200/15)*/,
14745  0 /*deltaMinutes*/,
14746  25 /*letterIndex ("S")*/,
14747  },
14748  // Rule Marengo 1954 1960 - Apr lastSun 2:00 1:00 D
14749  {
14750  1954 /*fromYear*/,
14751  1960 /*toYear*/,
14752  4 /*inMonth*/,
14753  7 /*onDayOfWeek*/,
14754  0 /*onDayOfMonth*/,
14755  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14756  480 /*atTimeCode (7200/15)*/,
14757  60 /*deltaMinutes*/,
14758  13 /*letterIndex ("D")*/,
14759  },
14760  // Rule Marengo 1954 1960 - Sep lastSun 2:00 0 S
14761  {
14762  1954 /*fromYear*/,
14763  1960 /*toYear*/,
14764  9 /*inMonth*/,
14765  7 /*onDayOfWeek*/,
14766  0 /*onDayOfMonth*/,
14767  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14768  480 /*atTimeCode (7200/15)*/,
14769  0 /*deltaMinutes*/,
14770  25 /*letterIndex ("S")*/,
14771  },
14772 
14773 };
14774 
14775 const complete::ZonePolicy kZonePolicyMarengo ACE_TIME_PROGMEM = {
14776  kZoneRulesMarengo /*rules*/,
14777  5 /*numRules*/,
14778 };
14779 
14780 //---------------------------------------------------------------------------
14781 // Policy name: Mauritius
14782 // Rules: 5
14783 //---------------------------------------------------------------------------
14784 
14785 static const complete::ZoneRule kZoneRulesMauritius[] ACE_TIME_PROGMEM = {
14786  // Anchor: Rule Mauritius 1983 only - Mar 21 0:00 0 -
14787  {
14788  -32767 /*fromYear*/,
14789  -32767 /*toYear*/,
14790  1 /*inMonth*/,
14791  0 /*onDayOfWeek*/,
14792  1 /*onDayOfMonth*/,
14793  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14794  0 /*atTimeCode (0/15)*/,
14795  0 /*deltaMinutes*/,
14796  0 /*letterIndex ("")*/,
14797  },
14798  // Rule Mauritius 1982 only - Oct 10 0:00 1:00 -
14799  {
14800  1982 /*fromYear*/,
14801  1982 /*toYear*/,
14802  10 /*inMonth*/,
14803  0 /*onDayOfWeek*/,
14804  10 /*onDayOfMonth*/,
14805  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14806  0 /*atTimeCode (0/15)*/,
14807  60 /*deltaMinutes*/,
14808  0 /*letterIndex ("")*/,
14809  },
14810  // Rule Mauritius 1983 only - Mar 21 0:00 0 -
14811  {
14812  1983 /*fromYear*/,
14813  1983 /*toYear*/,
14814  3 /*inMonth*/,
14815  0 /*onDayOfWeek*/,
14816  21 /*onDayOfMonth*/,
14817  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14818  0 /*atTimeCode (0/15)*/,
14819  0 /*deltaMinutes*/,
14820  0 /*letterIndex ("")*/,
14821  },
14822  // Rule Mauritius 2008 only - Oct lastSun 2:00 1:00 -
14823  {
14824  2008 /*fromYear*/,
14825  2008 /*toYear*/,
14826  10 /*inMonth*/,
14827  7 /*onDayOfWeek*/,
14828  0 /*onDayOfMonth*/,
14829  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14830  480 /*atTimeCode (7200/15)*/,
14831  60 /*deltaMinutes*/,
14832  0 /*letterIndex ("")*/,
14833  },
14834  // Rule Mauritius 2009 only - Mar lastSun 2:00 0 -
14835  {
14836  2009 /*fromYear*/,
14837  2009 /*toYear*/,
14838  3 /*inMonth*/,
14839  7 /*onDayOfWeek*/,
14840  0 /*onDayOfMonth*/,
14841  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14842  480 /*atTimeCode (7200/15)*/,
14843  0 /*deltaMinutes*/,
14844  0 /*letterIndex ("")*/,
14845  },
14846 
14847 };
14848 
14849 const complete::ZonePolicy kZonePolicyMauritius ACE_TIME_PROGMEM = {
14850  kZoneRulesMauritius /*rules*/,
14851  5 /*numRules*/,
14852 };
14853 
14854 //---------------------------------------------------------------------------
14855 // Policy name: Menominee
14856 // Rules: 5
14857 //---------------------------------------------------------------------------
14858 
14859 static const complete::ZoneRule kZoneRulesMenominee[] ACE_TIME_PROGMEM = {
14860  // Anchor: Rule Menominee 1946 only - Sep lastSun 2:00 0 S
14861  {
14862  -32767 /*fromYear*/,
14863  -32767 /*toYear*/,
14864  1 /*inMonth*/,
14865  0 /*onDayOfWeek*/,
14866  1 /*onDayOfMonth*/,
14867  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14868  0 /*atTimeCode (0/15)*/,
14869  0 /*deltaMinutes*/,
14870  25 /*letterIndex ("S")*/,
14871  },
14872  // Rule Menominee 1946 only - Apr lastSun 2:00 1:00 D
14873  {
14874  1946 /*fromYear*/,
14875  1946 /*toYear*/,
14876  4 /*inMonth*/,
14877  7 /*onDayOfWeek*/,
14878  0 /*onDayOfMonth*/,
14879  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14880  480 /*atTimeCode (7200/15)*/,
14881  60 /*deltaMinutes*/,
14882  13 /*letterIndex ("D")*/,
14883  },
14884  // Rule Menominee 1946 only - Sep lastSun 2:00 0 S
14885  {
14886  1946 /*fromYear*/,
14887  1946 /*toYear*/,
14888  9 /*inMonth*/,
14889  7 /*onDayOfWeek*/,
14890  0 /*onDayOfMonth*/,
14891  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14892  480 /*atTimeCode (7200/15)*/,
14893  0 /*deltaMinutes*/,
14894  25 /*letterIndex ("S")*/,
14895  },
14896  // Rule Menominee 1966 only - Apr lastSun 2:00 1:00 D
14897  {
14898  1966 /*fromYear*/,
14899  1966 /*toYear*/,
14900  4 /*inMonth*/,
14901  7 /*onDayOfWeek*/,
14902  0 /*onDayOfMonth*/,
14903  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14904  480 /*atTimeCode (7200/15)*/,
14905  60 /*deltaMinutes*/,
14906  13 /*letterIndex ("D")*/,
14907  },
14908  // Rule Menominee 1966 only - Oct lastSun 2:00 0 S
14909  {
14910  1966 /*fromYear*/,
14911  1966 /*toYear*/,
14912  10 /*inMonth*/,
14913  7 /*onDayOfWeek*/,
14914  0 /*onDayOfMonth*/,
14915  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14916  480 /*atTimeCode (7200/15)*/,
14917  0 /*deltaMinutes*/,
14918  25 /*letterIndex ("S")*/,
14919  },
14920 
14921 };
14922 
14923 const complete::ZonePolicy kZonePolicyMenominee ACE_TIME_PROGMEM = {
14924  kZoneRulesMenominee /*rules*/,
14925  5 /*numRules*/,
14926 };
14927 
14928 //---------------------------------------------------------------------------
14929 // Policy name: Mexico
14930 // Rules: 17
14931 //---------------------------------------------------------------------------
14932 
14933 static const complete::ZoneRule kZoneRulesMexico[] ACE_TIME_PROGMEM = {
14934  // Anchor: Rule Mexico 1931 only - Oct 1 0:00 0 S
14935  {
14936  -32767 /*fromYear*/,
14937  -32767 /*toYear*/,
14938  1 /*inMonth*/,
14939  0 /*onDayOfWeek*/,
14940  1 /*onDayOfMonth*/,
14941  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14942  0 /*atTimeCode (0/15)*/,
14943  0 /*deltaMinutes*/,
14944  25 /*letterIndex ("S")*/,
14945  },
14946  // Rule Mexico 1931 only - May 1 23:00 1:00 D
14947  {
14948  1931 /*fromYear*/,
14949  1931 /*toYear*/,
14950  5 /*inMonth*/,
14951  0 /*onDayOfWeek*/,
14952  1 /*onDayOfMonth*/,
14953  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14954  5520 /*atTimeCode (82800/15)*/,
14955  60 /*deltaMinutes*/,
14956  13 /*letterIndex ("D")*/,
14957  },
14958  // Rule Mexico 1931 only - Oct 1 0:00 0 S
14959  {
14960  1931 /*fromYear*/,
14961  1931 /*toYear*/,
14962  10 /*inMonth*/,
14963  0 /*onDayOfWeek*/,
14964  1 /*onDayOfMonth*/,
14965  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14966  0 /*atTimeCode (0/15)*/,
14967  0 /*deltaMinutes*/,
14968  25 /*letterIndex ("S")*/,
14969  },
14970  // Rule Mexico 1939 only - Feb 5 0:00 1:00 D
14971  {
14972  1939 /*fromYear*/,
14973  1939 /*toYear*/,
14974  2 /*inMonth*/,
14975  0 /*onDayOfWeek*/,
14976  5 /*onDayOfMonth*/,
14977  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14978  0 /*atTimeCode (0/15)*/,
14979  60 /*deltaMinutes*/,
14980  13 /*letterIndex ("D")*/,
14981  },
14982  // Rule Mexico 1939 only - Jun 25 0:00 0 S
14983  {
14984  1939 /*fromYear*/,
14985  1939 /*toYear*/,
14986  6 /*inMonth*/,
14987  0 /*onDayOfWeek*/,
14988  25 /*onDayOfMonth*/,
14989  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
14990  0 /*atTimeCode (0/15)*/,
14991  0 /*deltaMinutes*/,
14992  25 /*letterIndex ("S")*/,
14993  },
14994  // Rule Mexico 1940 only - Dec 9 0:00 1:00 D
14995  {
14996  1940 /*fromYear*/,
14997  1940 /*toYear*/,
14998  12 /*inMonth*/,
14999  0 /*onDayOfWeek*/,
15000  9 /*onDayOfMonth*/,
15001  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15002  0 /*atTimeCode (0/15)*/,
15003  60 /*deltaMinutes*/,
15004  13 /*letterIndex ("D")*/,
15005  },
15006  // Rule Mexico 1941 only - Apr 1 0:00 0 S
15007  {
15008  1941 /*fromYear*/,
15009  1941 /*toYear*/,
15010  4 /*inMonth*/,
15011  0 /*onDayOfWeek*/,
15012  1 /*onDayOfMonth*/,
15013  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15014  0 /*atTimeCode (0/15)*/,
15015  0 /*deltaMinutes*/,
15016  25 /*letterIndex ("S")*/,
15017  },
15018  // Rule Mexico 1943 only - Dec 16 0:00 1:00 W
15019  {
15020  1943 /*fromYear*/,
15021  1943 /*toYear*/,
15022  12 /*inMonth*/,
15023  0 /*onDayOfWeek*/,
15024  16 /*onDayOfMonth*/,
15025  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15026  0 /*atTimeCode (0/15)*/,
15027  60 /*deltaMinutes*/,
15028  26 /*letterIndex ("W")*/,
15029  },
15030  // Rule Mexico 1944 only - May 1 0:00 0 S
15031  {
15032  1944 /*fromYear*/,
15033  1944 /*toYear*/,
15034  5 /*inMonth*/,
15035  0 /*onDayOfWeek*/,
15036  1 /*onDayOfMonth*/,
15037  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15038  0 /*atTimeCode (0/15)*/,
15039  0 /*deltaMinutes*/,
15040  25 /*letterIndex ("S")*/,
15041  },
15042  // Rule Mexico 1950 only - Feb 12 0:00 1:00 D
15043  {
15044  1950 /*fromYear*/,
15045  1950 /*toYear*/,
15046  2 /*inMonth*/,
15047  0 /*onDayOfWeek*/,
15048  12 /*onDayOfMonth*/,
15049  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15050  0 /*atTimeCode (0/15)*/,
15051  60 /*deltaMinutes*/,
15052  13 /*letterIndex ("D")*/,
15053  },
15054  // Rule Mexico 1950 only - Jul 30 0:00 0 S
15055  {
15056  1950 /*fromYear*/,
15057  1950 /*toYear*/,
15058  7 /*inMonth*/,
15059  0 /*onDayOfWeek*/,
15060  30 /*onDayOfMonth*/,
15061  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15062  0 /*atTimeCode (0/15)*/,
15063  0 /*deltaMinutes*/,
15064  25 /*letterIndex ("S")*/,
15065  },
15066  // Rule Mexico 1996 2000 - Apr Sun>=1 2:00 1:00 D
15067  {
15068  1996 /*fromYear*/,
15069  2000 /*toYear*/,
15070  4 /*inMonth*/,
15071  7 /*onDayOfWeek*/,
15072  1 /*onDayOfMonth*/,
15073  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15074  480 /*atTimeCode (7200/15)*/,
15075  60 /*deltaMinutes*/,
15076  13 /*letterIndex ("D")*/,
15077  },
15078  // Rule Mexico 1996 2000 - Oct lastSun 2:00 0 S
15079  {
15080  1996 /*fromYear*/,
15081  2000 /*toYear*/,
15082  10 /*inMonth*/,
15083  7 /*onDayOfWeek*/,
15084  0 /*onDayOfMonth*/,
15085  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15086  480 /*atTimeCode (7200/15)*/,
15087  0 /*deltaMinutes*/,
15088  25 /*letterIndex ("S")*/,
15089  },
15090  // Rule Mexico 2001 only - May Sun>=1 2:00 1:00 D
15091  {
15092  2001 /*fromYear*/,
15093  2001 /*toYear*/,
15094  5 /*inMonth*/,
15095  7 /*onDayOfWeek*/,
15096  1 /*onDayOfMonth*/,
15097  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15098  480 /*atTimeCode (7200/15)*/,
15099  60 /*deltaMinutes*/,
15100  13 /*letterIndex ("D")*/,
15101  },
15102  // Rule Mexico 2001 only - Sep lastSun 2:00 0 S
15103  {
15104  2001 /*fromYear*/,
15105  2001 /*toYear*/,
15106  9 /*inMonth*/,
15107  7 /*onDayOfWeek*/,
15108  0 /*onDayOfMonth*/,
15109  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15110  480 /*atTimeCode (7200/15)*/,
15111  0 /*deltaMinutes*/,
15112  25 /*letterIndex ("S")*/,
15113  },
15114  // Rule Mexico 2002 2022 - Apr Sun>=1 2:00 1:00 D
15115  {
15116  2002 /*fromYear*/,
15117  2022 /*toYear*/,
15118  4 /*inMonth*/,
15119  7 /*onDayOfWeek*/,
15120  1 /*onDayOfMonth*/,
15121  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15122  480 /*atTimeCode (7200/15)*/,
15123  60 /*deltaMinutes*/,
15124  13 /*letterIndex ("D")*/,
15125  },
15126  // Rule Mexico 2002 2022 - Oct lastSun 2:00 0 S
15127  {
15128  2002 /*fromYear*/,
15129  2022 /*toYear*/,
15130  10 /*inMonth*/,
15131  7 /*onDayOfWeek*/,
15132  0 /*onDayOfMonth*/,
15133  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15134  480 /*atTimeCode (7200/15)*/,
15135  0 /*deltaMinutes*/,
15136  25 /*letterIndex ("S")*/,
15137  },
15138 
15139 };
15140 
15141 const complete::ZonePolicy kZonePolicyMexico ACE_TIME_PROGMEM = {
15142  kZoneRulesMexico /*rules*/,
15143  17 /*numRules*/,
15144 };
15145 
15146 //---------------------------------------------------------------------------
15147 // Policy name: Moldova
15148 // Rules: 3
15149 //---------------------------------------------------------------------------
15150 
15151 static const complete::ZoneRule kZoneRulesMoldova[] ACE_TIME_PROGMEM = {
15152  // Anchor: Rule Moldova 1997 max - Oct lastSun 3:00 0 -
15153  {
15154  -32767 /*fromYear*/,
15155  -32767 /*toYear*/,
15156  1 /*inMonth*/,
15157  0 /*onDayOfWeek*/,
15158  1 /*onDayOfMonth*/,
15159  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15160  0 /*atTimeCode (0/15)*/,
15161  0 /*deltaMinutes*/,
15162  0 /*letterIndex ("")*/,
15163  },
15164  // Rule Moldova 1997 max - Mar lastSun 2:00 1:00 S
15165  {
15166  1997 /*fromYear*/,
15167  32766 /*toYear*/,
15168  3 /*inMonth*/,
15169  7 /*onDayOfWeek*/,
15170  0 /*onDayOfMonth*/,
15171  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15172  480 /*atTimeCode (7200/15)*/,
15173  60 /*deltaMinutes*/,
15174  25 /*letterIndex ("S")*/,
15175  },
15176  // Rule Moldova 1997 max - Oct lastSun 3:00 0 -
15177  {
15178  1997 /*fromYear*/,
15179  32766 /*toYear*/,
15180  10 /*inMonth*/,
15181  7 /*onDayOfWeek*/,
15182  0 /*onDayOfMonth*/,
15183  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15184  720 /*atTimeCode (10800/15)*/,
15185  0 /*deltaMinutes*/,
15186  0 /*letterIndex ("")*/,
15187  },
15188 
15189 };
15190 
15191 const complete::ZonePolicy kZonePolicyMoldova ACE_TIME_PROGMEM = {
15192  kZoneRulesMoldova /*rules*/,
15193  3 /*numRules*/,
15194 };
15195 
15196 //---------------------------------------------------------------------------
15197 // Policy name: Moncton
15198 // Rules: 14
15199 //---------------------------------------------------------------------------
15200 
15201 static const complete::ZoneRule kZoneRulesMoncton[] ACE_TIME_PROGMEM = {
15202  // Anchor: Rule Moncton 1933 1935 - Sep Sun>=8 1:00 0 S
15203  {
15204  -32767 /*fromYear*/,
15205  -32767 /*toYear*/,
15206  1 /*inMonth*/,
15207  0 /*onDayOfWeek*/,
15208  1 /*onDayOfMonth*/,
15209  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15210  0 /*atTimeCode (0/15)*/,
15211  0 /*deltaMinutes*/,
15212  25 /*letterIndex ("S")*/,
15213  },
15214  // Rule Moncton 1933 1935 - Jun Sun>=8 1:00 1:00 D
15215  {
15216  1933 /*fromYear*/,
15217  1935 /*toYear*/,
15218  6 /*inMonth*/,
15219  7 /*onDayOfWeek*/,
15220  8 /*onDayOfMonth*/,
15221  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15222  240 /*atTimeCode (3600/15)*/,
15223  60 /*deltaMinutes*/,
15224  13 /*letterIndex ("D")*/,
15225  },
15226  // Rule Moncton 1933 1935 - Sep Sun>=8 1:00 0 S
15227  {
15228  1933 /*fromYear*/,
15229  1935 /*toYear*/,
15230  9 /*inMonth*/,
15231  7 /*onDayOfWeek*/,
15232  8 /*onDayOfMonth*/,
15233  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15234  240 /*atTimeCode (3600/15)*/,
15235  0 /*deltaMinutes*/,
15236  25 /*letterIndex ("S")*/,
15237  },
15238  // Rule Moncton 1936 1938 - Jun Sun>=1 1:00 1:00 D
15239  {
15240  1936 /*fromYear*/,
15241  1938 /*toYear*/,
15242  6 /*inMonth*/,
15243  7 /*onDayOfWeek*/,
15244  1 /*onDayOfMonth*/,
15245  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15246  240 /*atTimeCode (3600/15)*/,
15247  60 /*deltaMinutes*/,
15248  13 /*letterIndex ("D")*/,
15249  },
15250  // Rule Moncton 1936 1938 - Sep Sun>=1 1:00 0 S
15251  {
15252  1936 /*fromYear*/,
15253  1938 /*toYear*/,
15254  9 /*inMonth*/,
15255  7 /*onDayOfWeek*/,
15256  1 /*onDayOfMonth*/,
15257  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15258  240 /*atTimeCode (3600/15)*/,
15259  0 /*deltaMinutes*/,
15260  25 /*letterIndex ("S")*/,
15261  },
15262  // Rule Moncton 1939 only - May 27 1:00 1:00 D
15263  {
15264  1939 /*fromYear*/,
15265  1939 /*toYear*/,
15266  5 /*inMonth*/,
15267  0 /*onDayOfWeek*/,
15268  27 /*onDayOfMonth*/,
15269  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15270  240 /*atTimeCode (3600/15)*/,
15271  60 /*deltaMinutes*/,
15272  13 /*letterIndex ("D")*/,
15273  },
15274  // Rule Moncton 1939 1941 - Sep Sat>=21 1:00 0 S
15275  {
15276  1939 /*fromYear*/,
15277  1941 /*toYear*/,
15278  9 /*inMonth*/,
15279  6 /*onDayOfWeek*/,
15280  21 /*onDayOfMonth*/,
15281  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15282  240 /*atTimeCode (3600/15)*/,
15283  0 /*deltaMinutes*/,
15284  25 /*letterIndex ("S")*/,
15285  },
15286  // Rule Moncton 1940 only - May 19 1:00 1:00 D
15287  {
15288  1940 /*fromYear*/,
15289  1940 /*toYear*/,
15290  5 /*inMonth*/,
15291  0 /*onDayOfWeek*/,
15292  19 /*onDayOfMonth*/,
15293  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15294  240 /*atTimeCode (3600/15)*/,
15295  60 /*deltaMinutes*/,
15296  13 /*letterIndex ("D")*/,
15297  },
15298  // Rule Moncton 1941 only - May 4 1:00 1:00 D
15299  {
15300  1941 /*fromYear*/,
15301  1941 /*toYear*/,
15302  5 /*inMonth*/,
15303  0 /*onDayOfWeek*/,
15304  4 /*onDayOfMonth*/,
15305  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15306  240 /*atTimeCode (3600/15)*/,
15307  60 /*deltaMinutes*/,
15308  13 /*letterIndex ("D")*/,
15309  },
15310  // Rule Moncton 1946 1972 - Apr lastSun 2:00 1:00 D
15311  {
15312  1946 /*fromYear*/,
15313  1972 /*toYear*/,
15314  4 /*inMonth*/,
15315  7 /*onDayOfWeek*/,
15316  0 /*onDayOfMonth*/,
15317  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15318  480 /*atTimeCode (7200/15)*/,
15319  60 /*deltaMinutes*/,
15320  13 /*letterIndex ("D")*/,
15321  },
15322  // Rule Moncton 1946 1956 - Sep lastSun 2:00 0 S
15323  {
15324  1946 /*fromYear*/,
15325  1956 /*toYear*/,
15326  9 /*inMonth*/,
15327  7 /*onDayOfWeek*/,
15328  0 /*onDayOfMonth*/,
15329  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15330  480 /*atTimeCode (7200/15)*/,
15331  0 /*deltaMinutes*/,
15332  25 /*letterIndex ("S")*/,
15333  },
15334  // Rule Moncton 1957 1972 - Oct lastSun 2:00 0 S
15335  {
15336  1957 /*fromYear*/,
15337  1972 /*toYear*/,
15338  10 /*inMonth*/,
15339  7 /*onDayOfWeek*/,
15340  0 /*onDayOfMonth*/,
15341  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15342  480 /*atTimeCode (7200/15)*/,
15343  0 /*deltaMinutes*/,
15344  25 /*letterIndex ("S")*/,
15345  },
15346  // Rule Moncton 1993 2006 - Apr Sun>=1 0:01 1:00 D
15347  {
15348  1993 /*fromYear*/,
15349  2006 /*toYear*/,
15350  4 /*inMonth*/,
15351  7 /*onDayOfWeek*/,
15352  1 /*onDayOfMonth*/,
15353  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15354  4 /*atTimeCode (60/15)*/,
15355  60 /*deltaMinutes*/,
15356  13 /*letterIndex ("D")*/,
15357  },
15358  // Rule Moncton 1993 2006 - Oct lastSun 0:01 0 S
15359  {
15360  1993 /*fromYear*/,
15361  2006 /*toYear*/,
15362  10 /*inMonth*/,
15363  7 /*onDayOfWeek*/,
15364  0 /*onDayOfMonth*/,
15365  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15366  4 /*atTimeCode (60/15)*/,
15367  0 /*deltaMinutes*/,
15368  25 /*letterIndex ("S")*/,
15369  },
15370 
15371 };
15372 
15373 const complete::ZonePolicy kZonePolicyMoncton ACE_TIME_PROGMEM = {
15374  kZoneRulesMoncton /*rules*/,
15375  14 /*numRules*/,
15376 };
15377 
15378 //---------------------------------------------------------------------------
15379 // Policy name: Mongol
15380 // Rules: 10
15381 //---------------------------------------------------------------------------
15382 
15383 static const complete::ZoneRule kZoneRulesMongol[] ACE_TIME_PROGMEM = {
15384  // Anchor: Rule Mongol 1983 only - Oct 1 0:00 0 -
15385  {
15386  -32767 /*fromYear*/,
15387  -32767 /*toYear*/,
15388  1 /*inMonth*/,
15389  0 /*onDayOfWeek*/,
15390  1 /*onDayOfMonth*/,
15391  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15392  0 /*atTimeCode (0/15)*/,
15393  0 /*deltaMinutes*/,
15394  0 /*letterIndex ("")*/,
15395  },
15396  // Rule Mongol 1983 1984 - Apr 1 0:00 1:00 -
15397  {
15398  1983 /*fromYear*/,
15399  1984 /*toYear*/,
15400  4 /*inMonth*/,
15401  0 /*onDayOfWeek*/,
15402  1 /*onDayOfMonth*/,
15403  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15404  0 /*atTimeCode (0/15)*/,
15405  60 /*deltaMinutes*/,
15406  0 /*letterIndex ("")*/,
15407  },
15408  // Rule Mongol 1983 only - Oct 1 0:00 0 -
15409  {
15410  1983 /*fromYear*/,
15411  1983 /*toYear*/,
15412  10 /*inMonth*/,
15413  0 /*onDayOfWeek*/,
15414  1 /*onDayOfMonth*/,
15415  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15416  0 /*atTimeCode (0/15)*/,
15417  0 /*deltaMinutes*/,
15418  0 /*letterIndex ("")*/,
15419  },
15420  // Rule Mongol 1985 1998 - Mar lastSun 0:00 1:00 -
15421  {
15422  1985 /*fromYear*/,
15423  1998 /*toYear*/,
15424  3 /*inMonth*/,
15425  7 /*onDayOfWeek*/,
15426  0 /*onDayOfMonth*/,
15427  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15428  0 /*atTimeCode (0/15)*/,
15429  60 /*deltaMinutes*/,
15430  0 /*letterIndex ("")*/,
15431  },
15432  // Rule Mongol 1984 1998 - Sep lastSun 0:00 0 -
15433  {
15434  1984 /*fromYear*/,
15435  1998 /*toYear*/,
15436  9 /*inMonth*/,
15437  7 /*onDayOfWeek*/,
15438  0 /*onDayOfMonth*/,
15439  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15440  0 /*atTimeCode (0/15)*/,
15441  0 /*deltaMinutes*/,
15442  0 /*letterIndex ("")*/,
15443  },
15444  // Rule Mongol 2001 only - Apr lastSat 2:00 1:00 -
15445  {
15446  2001 /*fromYear*/,
15447  2001 /*toYear*/,
15448  4 /*inMonth*/,
15449  6 /*onDayOfWeek*/,
15450  0 /*onDayOfMonth*/,
15451  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15452  480 /*atTimeCode (7200/15)*/,
15453  60 /*deltaMinutes*/,
15454  0 /*letterIndex ("")*/,
15455  },
15456  // Rule Mongol 2001 2006 - Sep lastSat 2:00 0 -
15457  {
15458  2001 /*fromYear*/,
15459  2006 /*toYear*/,
15460  9 /*inMonth*/,
15461  6 /*onDayOfWeek*/,
15462  0 /*onDayOfMonth*/,
15463  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15464  480 /*atTimeCode (7200/15)*/,
15465  0 /*deltaMinutes*/,
15466  0 /*letterIndex ("")*/,
15467  },
15468  // Rule Mongol 2002 2006 - Mar lastSat 2:00 1:00 -
15469  {
15470  2002 /*fromYear*/,
15471  2006 /*toYear*/,
15472  3 /*inMonth*/,
15473  6 /*onDayOfWeek*/,
15474  0 /*onDayOfMonth*/,
15475  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15476  480 /*atTimeCode (7200/15)*/,
15477  60 /*deltaMinutes*/,
15478  0 /*letterIndex ("")*/,
15479  },
15480  // Rule Mongol 2015 2016 - Mar lastSat 2:00 1:00 -
15481  {
15482  2015 /*fromYear*/,
15483  2016 /*toYear*/,
15484  3 /*inMonth*/,
15485  6 /*onDayOfWeek*/,
15486  0 /*onDayOfMonth*/,
15487  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15488  480 /*atTimeCode (7200/15)*/,
15489  60 /*deltaMinutes*/,
15490  0 /*letterIndex ("")*/,
15491  },
15492  // Rule Mongol 2015 2016 - Sep lastSat 0:00 0 -
15493  {
15494  2015 /*fromYear*/,
15495  2016 /*toYear*/,
15496  9 /*inMonth*/,
15497  6 /*onDayOfWeek*/,
15498  0 /*onDayOfMonth*/,
15499  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15500  0 /*atTimeCode (0/15)*/,
15501  0 /*deltaMinutes*/,
15502  0 /*letterIndex ("")*/,
15503  },
15504 
15505 };
15506 
15507 const complete::ZonePolicy kZonePolicyMongol ACE_TIME_PROGMEM = {
15508  kZoneRulesMongol /*rules*/,
15509  10 /*numRules*/,
15510 };
15511 
15512 //---------------------------------------------------------------------------
15513 // Policy name: Morocco
15514 // Rules: 184
15515 //---------------------------------------------------------------------------
15516 
15517 static const complete::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = {
15518  // Anchor: Rule Morocco 1939 only - Nov 19 0:00 0 -
15519  {
15520  -32767 /*fromYear*/,
15521  -32767 /*toYear*/,
15522  1 /*inMonth*/,
15523  0 /*onDayOfWeek*/,
15524  1 /*onDayOfMonth*/,
15525  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15526  0 /*atTimeCode (0/15)*/,
15527  0 /*deltaMinutes*/,
15528  0 /*letterIndex ("")*/,
15529  },
15530  // Rule Morocco 1939 only - Sep 12 0:00 1:00 -
15531  {
15532  1939 /*fromYear*/,
15533  1939 /*toYear*/,
15534  9 /*inMonth*/,
15535  0 /*onDayOfWeek*/,
15536  12 /*onDayOfMonth*/,
15537  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15538  0 /*atTimeCode (0/15)*/,
15539  60 /*deltaMinutes*/,
15540  0 /*letterIndex ("")*/,
15541  },
15542  // Rule Morocco 1939 only - Nov 19 0:00 0 -
15543  {
15544  1939 /*fromYear*/,
15545  1939 /*toYear*/,
15546  11 /*inMonth*/,
15547  0 /*onDayOfWeek*/,
15548  19 /*onDayOfMonth*/,
15549  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15550  0 /*atTimeCode (0/15)*/,
15551  0 /*deltaMinutes*/,
15552  0 /*letterIndex ("")*/,
15553  },
15554  // Rule Morocco 1940 only - Feb 25 0:00 1:00 -
15555  {
15556  1940 /*fromYear*/,
15557  1940 /*toYear*/,
15558  2 /*inMonth*/,
15559  0 /*onDayOfWeek*/,
15560  25 /*onDayOfMonth*/,
15561  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15562  0 /*atTimeCode (0/15)*/,
15563  60 /*deltaMinutes*/,
15564  0 /*letterIndex ("")*/,
15565  },
15566  // Rule Morocco 1945 only - Nov 18 0:00 0 -
15567  {
15568  1945 /*fromYear*/,
15569  1945 /*toYear*/,
15570  11 /*inMonth*/,
15571  0 /*onDayOfWeek*/,
15572  18 /*onDayOfMonth*/,
15573  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15574  0 /*atTimeCode (0/15)*/,
15575  0 /*deltaMinutes*/,
15576  0 /*letterIndex ("")*/,
15577  },
15578  // Rule Morocco 1950 only - Jun 11 0:00 1:00 -
15579  {
15580  1950 /*fromYear*/,
15581  1950 /*toYear*/,
15582  6 /*inMonth*/,
15583  0 /*onDayOfWeek*/,
15584  11 /*onDayOfMonth*/,
15585  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15586  0 /*atTimeCode (0/15)*/,
15587  60 /*deltaMinutes*/,
15588  0 /*letterIndex ("")*/,
15589  },
15590  // Rule Morocco 1950 only - Oct 29 0:00 0 -
15591  {
15592  1950 /*fromYear*/,
15593  1950 /*toYear*/,
15594  10 /*inMonth*/,
15595  0 /*onDayOfWeek*/,
15596  29 /*onDayOfMonth*/,
15597  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15598  0 /*atTimeCode (0/15)*/,
15599  0 /*deltaMinutes*/,
15600  0 /*letterIndex ("")*/,
15601  },
15602  // Rule Morocco 1967 only - Jun 3 12:00 1:00 -
15603  {
15604  1967 /*fromYear*/,
15605  1967 /*toYear*/,
15606  6 /*inMonth*/,
15607  0 /*onDayOfWeek*/,
15608  3 /*onDayOfMonth*/,
15609  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15610  2880 /*atTimeCode (43200/15)*/,
15611  60 /*deltaMinutes*/,
15612  0 /*letterIndex ("")*/,
15613  },
15614  // Rule Morocco 1967 only - Oct 1 0:00 0 -
15615  {
15616  1967 /*fromYear*/,
15617  1967 /*toYear*/,
15618  10 /*inMonth*/,
15619  0 /*onDayOfWeek*/,
15620  1 /*onDayOfMonth*/,
15621  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15622  0 /*atTimeCode (0/15)*/,
15623  0 /*deltaMinutes*/,
15624  0 /*letterIndex ("")*/,
15625  },
15626  // Rule Morocco 1974 only - Jun 24 0:00 1:00 -
15627  {
15628  1974 /*fromYear*/,
15629  1974 /*toYear*/,
15630  6 /*inMonth*/,
15631  0 /*onDayOfWeek*/,
15632  24 /*onDayOfMonth*/,
15633  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15634  0 /*atTimeCode (0/15)*/,
15635  60 /*deltaMinutes*/,
15636  0 /*letterIndex ("")*/,
15637  },
15638  // Rule Morocco 1974 only - Sep 1 0:00 0 -
15639  {
15640  1974 /*fromYear*/,
15641  1974 /*toYear*/,
15642  9 /*inMonth*/,
15643  0 /*onDayOfWeek*/,
15644  1 /*onDayOfMonth*/,
15645  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15646  0 /*atTimeCode (0/15)*/,
15647  0 /*deltaMinutes*/,
15648  0 /*letterIndex ("")*/,
15649  },
15650  // Rule Morocco 1976 1977 - May 1 0:00 1:00 -
15651  {
15652  1976 /*fromYear*/,
15653  1977 /*toYear*/,
15654  5 /*inMonth*/,
15655  0 /*onDayOfWeek*/,
15656  1 /*onDayOfMonth*/,
15657  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15658  0 /*atTimeCode (0/15)*/,
15659  60 /*deltaMinutes*/,
15660  0 /*letterIndex ("")*/,
15661  },
15662  // Rule Morocco 1976 only - Aug 1 0:00 0 -
15663  {
15664  1976 /*fromYear*/,
15665  1976 /*toYear*/,
15666  8 /*inMonth*/,
15667  0 /*onDayOfWeek*/,
15668  1 /*onDayOfMonth*/,
15669  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15670  0 /*atTimeCode (0/15)*/,
15671  0 /*deltaMinutes*/,
15672  0 /*letterIndex ("")*/,
15673  },
15674  // Rule Morocco 1977 only - Sep 28 0:00 0 -
15675  {
15676  1977 /*fromYear*/,
15677  1977 /*toYear*/,
15678  9 /*inMonth*/,
15679  0 /*onDayOfWeek*/,
15680  28 /*onDayOfMonth*/,
15681  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15682  0 /*atTimeCode (0/15)*/,
15683  0 /*deltaMinutes*/,
15684  0 /*letterIndex ("")*/,
15685  },
15686  // Rule Morocco 1978 only - Jun 1 0:00 1:00 -
15687  {
15688  1978 /*fromYear*/,
15689  1978 /*toYear*/,
15690  6 /*inMonth*/,
15691  0 /*onDayOfWeek*/,
15692  1 /*onDayOfMonth*/,
15693  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15694  0 /*atTimeCode (0/15)*/,
15695  60 /*deltaMinutes*/,
15696  0 /*letterIndex ("")*/,
15697  },
15698  // Rule Morocco 1978 only - Aug 4 0:00 0 -
15699  {
15700  1978 /*fromYear*/,
15701  1978 /*toYear*/,
15702  8 /*inMonth*/,
15703  0 /*onDayOfWeek*/,
15704  4 /*onDayOfMonth*/,
15705  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15706  0 /*atTimeCode (0/15)*/,
15707  0 /*deltaMinutes*/,
15708  0 /*letterIndex ("")*/,
15709  },
15710  // Rule Morocco 2008 only - Jun 1 0:00 1:00 -
15711  {
15712  2008 /*fromYear*/,
15713  2008 /*toYear*/,
15714  6 /*inMonth*/,
15715  0 /*onDayOfWeek*/,
15716  1 /*onDayOfMonth*/,
15717  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15718  0 /*atTimeCode (0/15)*/,
15719  60 /*deltaMinutes*/,
15720  0 /*letterIndex ("")*/,
15721  },
15722  // Rule Morocco 2008 only - Sep 1 0:00 0 -
15723  {
15724  2008 /*fromYear*/,
15725  2008 /*toYear*/,
15726  9 /*inMonth*/,
15727  0 /*onDayOfWeek*/,
15728  1 /*onDayOfMonth*/,
15729  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15730  0 /*atTimeCode (0/15)*/,
15731  0 /*deltaMinutes*/,
15732  0 /*letterIndex ("")*/,
15733  },
15734  // Rule Morocco 2009 only - Jun 1 0:00 1:00 -
15735  {
15736  2009 /*fromYear*/,
15737  2009 /*toYear*/,
15738  6 /*inMonth*/,
15739  0 /*onDayOfWeek*/,
15740  1 /*onDayOfMonth*/,
15741  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15742  0 /*atTimeCode (0/15)*/,
15743  60 /*deltaMinutes*/,
15744  0 /*letterIndex ("")*/,
15745  },
15746  // Rule Morocco 2009 only - Aug 21 0:00 0 -
15747  {
15748  2009 /*fromYear*/,
15749  2009 /*toYear*/,
15750  8 /*inMonth*/,
15751  0 /*onDayOfWeek*/,
15752  21 /*onDayOfMonth*/,
15753  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15754  0 /*atTimeCode (0/15)*/,
15755  0 /*deltaMinutes*/,
15756  0 /*letterIndex ("")*/,
15757  },
15758  // Rule Morocco 2010 only - May 2 0:00 1:00 -
15759  {
15760  2010 /*fromYear*/,
15761  2010 /*toYear*/,
15762  5 /*inMonth*/,
15763  0 /*onDayOfWeek*/,
15764  2 /*onDayOfMonth*/,
15765  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15766  0 /*atTimeCode (0/15)*/,
15767  60 /*deltaMinutes*/,
15768  0 /*letterIndex ("")*/,
15769  },
15770  // Rule Morocco 2010 only - Aug 8 0:00 0 -
15771  {
15772  2010 /*fromYear*/,
15773  2010 /*toYear*/,
15774  8 /*inMonth*/,
15775  0 /*onDayOfWeek*/,
15776  8 /*onDayOfMonth*/,
15777  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15778  0 /*atTimeCode (0/15)*/,
15779  0 /*deltaMinutes*/,
15780  0 /*letterIndex ("")*/,
15781  },
15782  // Rule Morocco 2011 only - Apr 3 0:00 1:00 -
15783  {
15784  2011 /*fromYear*/,
15785  2011 /*toYear*/,
15786  4 /*inMonth*/,
15787  0 /*onDayOfWeek*/,
15788  3 /*onDayOfMonth*/,
15789  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15790  0 /*atTimeCode (0/15)*/,
15791  60 /*deltaMinutes*/,
15792  0 /*letterIndex ("")*/,
15793  },
15794  // Rule Morocco 2011 only - Jul 31 0:00 0 -
15795  {
15796  2011 /*fromYear*/,
15797  2011 /*toYear*/,
15798  7 /*inMonth*/,
15799  0 /*onDayOfWeek*/,
15800  31 /*onDayOfMonth*/,
15801  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15802  0 /*atTimeCode (0/15)*/,
15803  0 /*deltaMinutes*/,
15804  0 /*letterIndex ("")*/,
15805  },
15806  // Rule Morocco 2012 2013 - Apr lastSun 2:00 1:00 -
15807  {
15808  2012 /*fromYear*/,
15809  2013 /*toYear*/,
15810  4 /*inMonth*/,
15811  7 /*onDayOfWeek*/,
15812  0 /*onDayOfMonth*/,
15813  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15814  480 /*atTimeCode (7200/15)*/,
15815  60 /*deltaMinutes*/,
15816  0 /*letterIndex ("")*/,
15817  },
15818  // Rule Morocco 2012 only - Jul 20 3:00 0 -
15819  {
15820  2012 /*fromYear*/,
15821  2012 /*toYear*/,
15822  7 /*inMonth*/,
15823  0 /*onDayOfWeek*/,
15824  20 /*onDayOfMonth*/,
15825  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15826  720 /*atTimeCode (10800/15)*/,
15827  0 /*deltaMinutes*/,
15828  0 /*letterIndex ("")*/,
15829  },
15830  // Rule Morocco 2012 only - Aug 20 2:00 1:00 -
15831  {
15832  2012 /*fromYear*/,
15833  2012 /*toYear*/,
15834  8 /*inMonth*/,
15835  0 /*onDayOfWeek*/,
15836  20 /*onDayOfMonth*/,
15837  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15838  480 /*atTimeCode (7200/15)*/,
15839  60 /*deltaMinutes*/,
15840  0 /*letterIndex ("")*/,
15841  },
15842  // Rule Morocco 2012 only - Sep 30 3:00 0 -
15843  {
15844  2012 /*fromYear*/,
15845  2012 /*toYear*/,
15846  9 /*inMonth*/,
15847  0 /*onDayOfWeek*/,
15848  30 /*onDayOfMonth*/,
15849  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15850  720 /*atTimeCode (10800/15)*/,
15851  0 /*deltaMinutes*/,
15852  0 /*letterIndex ("")*/,
15853  },
15854  // Rule Morocco 2013 only - Jul 7 3:00 0 -
15855  {
15856  2013 /*fromYear*/,
15857  2013 /*toYear*/,
15858  7 /*inMonth*/,
15859  0 /*onDayOfWeek*/,
15860  7 /*onDayOfMonth*/,
15861  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15862  720 /*atTimeCode (10800/15)*/,
15863  0 /*deltaMinutes*/,
15864  0 /*letterIndex ("")*/,
15865  },
15866  // Rule Morocco 2013 only - Aug 10 2:00 1:00 -
15867  {
15868  2013 /*fromYear*/,
15869  2013 /*toYear*/,
15870  8 /*inMonth*/,
15871  0 /*onDayOfWeek*/,
15872  10 /*onDayOfMonth*/,
15873  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15874  480 /*atTimeCode (7200/15)*/,
15875  60 /*deltaMinutes*/,
15876  0 /*letterIndex ("")*/,
15877  },
15878  // Rule Morocco 2013 2018 - Oct lastSun 3:00 0 -
15879  {
15880  2013 /*fromYear*/,
15881  2018 /*toYear*/,
15882  10 /*inMonth*/,
15883  7 /*onDayOfWeek*/,
15884  0 /*onDayOfMonth*/,
15885  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15886  720 /*atTimeCode (10800/15)*/,
15887  0 /*deltaMinutes*/,
15888  0 /*letterIndex ("")*/,
15889  },
15890  // Rule Morocco 2014 2018 - Mar lastSun 2:00 1:00 -
15891  {
15892  2014 /*fromYear*/,
15893  2018 /*toYear*/,
15894  3 /*inMonth*/,
15895  7 /*onDayOfWeek*/,
15896  0 /*onDayOfMonth*/,
15897  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15898  480 /*atTimeCode (7200/15)*/,
15899  60 /*deltaMinutes*/,
15900  0 /*letterIndex ("")*/,
15901  },
15902  // Rule Morocco 2014 only - Jun 28 3:00 0 -
15903  {
15904  2014 /*fromYear*/,
15905  2014 /*toYear*/,
15906  6 /*inMonth*/,
15907  0 /*onDayOfWeek*/,
15908  28 /*onDayOfMonth*/,
15909  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15910  720 /*atTimeCode (10800/15)*/,
15911  0 /*deltaMinutes*/,
15912  0 /*letterIndex ("")*/,
15913  },
15914  // Rule Morocco 2014 only - Aug 2 2:00 1:00 -
15915  {
15916  2014 /*fromYear*/,
15917  2014 /*toYear*/,
15918  8 /*inMonth*/,
15919  0 /*onDayOfWeek*/,
15920  2 /*onDayOfMonth*/,
15921  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15922  480 /*atTimeCode (7200/15)*/,
15923  60 /*deltaMinutes*/,
15924  0 /*letterIndex ("")*/,
15925  },
15926  // Rule Morocco 2015 only - Jun 14 3:00 0 -
15927  {
15928  2015 /*fromYear*/,
15929  2015 /*toYear*/,
15930  6 /*inMonth*/,
15931  0 /*onDayOfWeek*/,
15932  14 /*onDayOfMonth*/,
15933  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15934  720 /*atTimeCode (10800/15)*/,
15935  0 /*deltaMinutes*/,
15936  0 /*letterIndex ("")*/,
15937  },
15938  // Rule Morocco 2015 only - Jul 19 2:00 1:00 -
15939  {
15940  2015 /*fromYear*/,
15941  2015 /*toYear*/,
15942  7 /*inMonth*/,
15943  0 /*onDayOfWeek*/,
15944  19 /*onDayOfMonth*/,
15945  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15946  480 /*atTimeCode (7200/15)*/,
15947  60 /*deltaMinutes*/,
15948  0 /*letterIndex ("")*/,
15949  },
15950  // Rule Morocco 2016 only - Jun 5 3:00 0 -
15951  {
15952  2016 /*fromYear*/,
15953  2016 /*toYear*/,
15954  6 /*inMonth*/,
15955  0 /*onDayOfWeek*/,
15956  5 /*onDayOfMonth*/,
15957  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15958  720 /*atTimeCode (10800/15)*/,
15959  0 /*deltaMinutes*/,
15960  0 /*letterIndex ("")*/,
15961  },
15962  // Rule Morocco 2016 only - Jul 10 2:00 1:00 -
15963  {
15964  2016 /*fromYear*/,
15965  2016 /*toYear*/,
15966  7 /*inMonth*/,
15967  0 /*onDayOfWeek*/,
15968  10 /*onDayOfMonth*/,
15969  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15970  480 /*atTimeCode (7200/15)*/,
15971  60 /*deltaMinutes*/,
15972  0 /*letterIndex ("")*/,
15973  },
15974  // Rule Morocco 2017 only - May 21 3:00 0 -
15975  {
15976  2017 /*fromYear*/,
15977  2017 /*toYear*/,
15978  5 /*inMonth*/,
15979  0 /*onDayOfWeek*/,
15980  21 /*onDayOfMonth*/,
15981  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15982  720 /*atTimeCode (10800/15)*/,
15983  0 /*deltaMinutes*/,
15984  0 /*letterIndex ("")*/,
15985  },
15986  // Rule Morocco 2017 only - Jul 2 2:00 1:00 -
15987  {
15988  2017 /*fromYear*/,
15989  2017 /*toYear*/,
15990  7 /*inMonth*/,
15991  0 /*onDayOfWeek*/,
15992  2 /*onDayOfMonth*/,
15993  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
15994  480 /*atTimeCode (7200/15)*/,
15995  60 /*deltaMinutes*/,
15996  0 /*letterIndex ("")*/,
15997  },
15998  // Rule Morocco 2018 only - May 13 3:00 0 -
15999  {
16000  2018 /*fromYear*/,
16001  2018 /*toYear*/,
16002  5 /*inMonth*/,
16003  0 /*onDayOfWeek*/,
16004  13 /*onDayOfMonth*/,
16005  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16006  720 /*atTimeCode (10800/15)*/,
16007  0 /*deltaMinutes*/,
16008  0 /*letterIndex ("")*/,
16009  },
16010  // Rule Morocco 2018 only - Jun 17 2:00 1:00 -
16011  {
16012  2018 /*fromYear*/,
16013  2018 /*toYear*/,
16014  6 /*inMonth*/,
16015  0 /*onDayOfWeek*/,
16016  17 /*onDayOfMonth*/,
16017  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16018  480 /*atTimeCode (7200/15)*/,
16019  60 /*deltaMinutes*/,
16020  0 /*letterIndex ("")*/,
16021  },
16022  // Rule Morocco 2019 only - May 5 3:00 -1:00 -
16023  {
16024  2019 /*fromYear*/,
16025  2019 /*toYear*/,
16026  5 /*inMonth*/,
16027  0 /*onDayOfWeek*/,
16028  5 /*onDayOfMonth*/,
16029  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16030  720 /*atTimeCode (10800/15)*/,
16031  -60 /*deltaMinutes*/,
16032  0 /*letterIndex ("")*/,
16033  },
16034  // Rule Morocco 2019 only - Jun 9 2:00 0 -
16035  {
16036  2019 /*fromYear*/,
16037  2019 /*toYear*/,
16038  6 /*inMonth*/,
16039  0 /*onDayOfWeek*/,
16040  9 /*onDayOfMonth*/,
16041  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16042  480 /*atTimeCode (7200/15)*/,
16043  0 /*deltaMinutes*/,
16044  0 /*letterIndex ("")*/,
16045  },
16046  // Rule Morocco 2020 only - Apr 19 3:00 -1:00 -
16047  {
16048  2020 /*fromYear*/,
16049  2020 /*toYear*/,
16050  4 /*inMonth*/,
16051  0 /*onDayOfWeek*/,
16052  19 /*onDayOfMonth*/,
16053  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16054  720 /*atTimeCode (10800/15)*/,
16055  -60 /*deltaMinutes*/,
16056  0 /*letterIndex ("")*/,
16057  },
16058  // Rule Morocco 2020 only - May 31 2:00 0 -
16059  {
16060  2020 /*fromYear*/,
16061  2020 /*toYear*/,
16062  5 /*inMonth*/,
16063  0 /*onDayOfWeek*/,
16064  31 /*onDayOfMonth*/,
16065  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16066  480 /*atTimeCode (7200/15)*/,
16067  0 /*deltaMinutes*/,
16068  0 /*letterIndex ("")*/,
16069  },
16070  // Rule Morocco 2021 only - Apr 11 3:00 -1:00 -
16071  {
16072  2021 /*fromYear*/,
16073  2021 /*toYear*/,
16074  4 /*inMonth*/,
16075  0 /*onDayOfWeek*/,
16076  11 /*onDayOfMonth*/,
16077  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16078  720 /*atTimeCode (10800/15)*/,
16079  -60 /*deltaMinutes*/,
16080  0 /*letterIndex ("")*/,
16081  },
16082  // Rule Morocco 2021 only - May 16 2:00 0 -
16083  {
16084  2021 /*fromYear*/,
16085  2021 /*toYear*/,
16086  5 /*inMonth*/,
16087  0 /*onDayOfWeek*/,
16088  16 /*onDayOfMonth*/,
16089  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16090  480 /*atTimeCode (7200/15)*/,
16091  0 /*deltaMinutes*/,
16092  0 /*letterIndex ("")*/,
16093  },
16094  // Rule Morocco 2022 only - Mar 27 3:00 -1:00 -
16095  {
16096  2022 /*fromYear*/,
16097  2022 /*toYear*/,
16098  3 /*inMonth*/,
16099  0 /*onDayOfWeek*/,
16100  27 /*onDayOfMonth*/,
16101  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16102  720 /*atTimeCode (10800/15)*/,
16103  -60 /*deltaMinutes*/,
16104  0 /*letterIndex ("")*/,
16105  },
16106  // Rule Morocco 2022 only - May 8 2:00 0 -
16107  {
16108  2022 /*fromYear*/,
16109  2022 /*toYear*/,
16110  5 /*inMonth*/,
16111  0 /*onDayOfWeek*/,
16112  8 /*onDayOfMonth*/,
16113  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16114  480 /*atTimeCode (7200/15)*/,
16115  0 /*deltaMinutes*/,
16116  0 /*letterIndex ("")*/,
16117  },
16118  // Rule Morocco 2023 only - Mar 19 3:00 -1:00 -
16119  {
16120  2023 /*fromYear*/,
16121  2023 /*toYear*/,
16122  3 /*inMonth*/,
16123  0 /*onDayOfWeek*/,
16124  19 /*onDayOfMonth*/,
16125  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16126  720 /*atTimeCode (10800/15)*/,
16127  -60 /*deltaMinutes*/,
16128  0 /*letterIndex ("")*/,
16129  },
16130  // Rule Morocco 2023 only - Apr 23 2:00 0 -
16131  {
16132  2023 /*fromYear*/,
16133  2023 /*toYear*/,
16134  4 /*inMonth*/,
16135  0 /*onDayOfWeek*/,
16136  23 /*onDayOfMonth*/,
16137  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16138  480 /*atTimeCode (7200/15)*/,
16139  0 /*deltaMinutes*/,
16140  0 /*letterIndex ("")*/,
16141  },
16142  // Rule Morocco 2024 only - Mar 10 3:00 -1:00 -
16143  {
16144  2024 /*fromYear*/,
16145  2024 /*toYear*/,
16146  3 /*inMonth*/,
16147  0 /*onDayOfWeek*/,
16148  10 /*onDayOfMonth*/,
16149  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16150  720 /*atTimeCode (10800/15)*/,
16151  -60 /*deltaMinutes*/,
16152  0 /*letterIndex ("")*/,
16153  },
16154  // Rule Morocco 2024 only - Apr 14 2:00 0 -
16155  {
16156  2024 /*fromYear*/,
16157  2024 /*toYear*/,
16158  4 /*inMonth*/,
16159  0 /*onDayOfWeek*/,
16160  14 /*onDayOfMonth*/,
16161  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16162  480 /*atTimeCode (7200/15)*/,
16163  0 /*deltaMinutes*/,
16164  0 /*letterIndex ("")*/,
16165  },
16166  // Rule Morocco 2025 only - Feb 23 3:00 -1:00 -
16167  {
16168  2025 /*fromYear*/,
16169  2025 /*toYear*/,
16170  2 /*inMonth*/,
16171  0 /*onDayOfWeek*/,
16172  23 /*onDayOfMonth*/,
16173  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16174  720 /*atTimeCode (10800/15)*/,
16175  -60 /*deltaMinutes*/,
16176  0 /*letterIndex ("")*/,
16177  },
16178  // Rule Morocco 2025 only - Apr 6 2:00 0 -
16179  {
16180  2025 /*fromYear*/,
16181  2025 /*toYear*/,
16182  4 /*inMonth*/,
16183  0 /*onDayOfWeek*/,
16184  6 /*onDayOfMonth*/,
16185  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16186  480 /*atTimeCode (7200/15)*/,
16187  0 /*deltaMinutes*/,
16188  0 /*letterIndex ("")*/,
16189  },
16190  // Rule Morocco 2026 only - Feb 15 3:00 -1:00 -
16191  {
16192  2026 /*fromYear*/,
16193  2026 /*toYear*/,
16194  2 /*inMonth*/,
16195  0 /*onDayOfWeek*/,
16196  15 /*onDayOfMonth*/,
16197  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16198  720 /*atTimeCode (10800/15)*/,
16199  -60 /*deltaMinutes*/,
16200  0 /*letterIndex ("")*/,
16201  },
16202  // Rule Morocco 2026 only - Mar 22 2:00 0 -
16203  {
16204  2026 /*fromYear*/,
16205  2026 /*toYear*/,
16206  3 /*inMonth*/,
16207  0 /*onDayOfWeek*/,
16208  22 /*onDayOfMonth*/,
16209  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16210  480 /*atTimeCode (7200/15)*/,
16211  0 /*deltaMinutes*/,
16212  0 /*letterIndex ("")*/,
16213  },
16214  // Rule Morocco 2027 only - Feb 7 3:00 -1:00 -
16215  {
16216  2027 /*fromYear*/,
16217  2027 /*toYear*/,
16218  2 /*inMonth*/,
16219  0 /*onDayOfWeek*/,
16220  7 /*onDayOfMonth*/,
16221  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16222  720 /*atTimeCode (10800/15)*/,
16223  -60 /*deltaMinutes*/,
16224  0 /*letterIndex ("")*/,
16225  },
16226  // Rule Morocco 2027 only - Mar 14 2:00 0 -
16227  {
16228  2027 /*fromYear*/,
16229  2027 /*toYear*/,
16230  3 /*inMonth*/,
16231  0 /*onDayOfWeek*/,
16232  14 /*onDayOfMonth*/,
16233  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16234  480 /*atTimeCode (7200/15)*/,
16235  0 /*deltaMinutes*/,
16236  0 /*letterIndex ("")*/,
16237  },
16238  // Rule Morocco 2028 only - Jan 23 3:00 -1:00 -
16239  {
16240  2028 /*fromYear*/,
16241  2028 /*toYear*/,
16242  1 /*inMonth*/,
16243  0 /*onDayOfWeek*/,
16244  23 /*onDayOfMonth*/,
16245  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16246  720 /*atTimeCode (10800/15)*/,
16247  -60 /*deltaMinutes*/,
16248  0 /*letterIndex ("")*/,
16249  },
16250  // Rule Morocco 2028 only - Mar 5 2:00 0 -
16251  {
16252  2028 /*fromYear*/,
16253  2028 /*toYear*/,
16254  3 /*inMonth*/,
16255  0 /*onDayOfWeek*/,
16256  5 /*onDayOfMonth*/,
16257  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16258  480 /*atTimeCode (7200/15)*/,
16259  0 /*deltaMinutes*/,
16260  0 /*letterIndex ("")*/,
16261  },
16262  // Rule Morocco 2029 only - Jan 14 3:00 -1:00 -
16263  {
16264  2029 /*fromYear*/,
16265  2029 /*toYear*/,
16266  1 /*inMonth*/,
16267  0 /*onDayOfWeek*/,
16268  14 /*onDayOfMonth*/,
16269  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16270  720 /*atTimeCode (10800/15)*/,
16271  -60 /*deltaMinutes*/,
16272  0 /*letterIndex ("")*/,
16273  },
16274  // Rule Morocco 2029 only - Feb 18 2:00 0 -
16275  {
16276  2029 /*fromYear*/,
16277  2029 /*toYear*/,
16278  2 /*inMonth*/,
16279  0 /*onDayOfWeek*/,
16280  18 /*onDayOfMonth*/,
16281  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16282  480 /*atTimeCode (7200/15)*/,
16283  0 /*deltaMinutes*/,
16284  0 /*letterIndex ("")*/,
16285  },
16286  // Rule Morocco 2029 only - Dec 30 3:00 -1:00 -
16287  {
16288  2029 /*fromYear*/,
16289  2029 /*toYear*/,
16290  12 /*inMonth*/,
16291  0 /*onDayOfWeek*/,
16292  30 /*onDayOfMonth*/,
16293  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16294  720 /*atTimeCode (10800/15)*/,
16295  -60 /*deltaMinutes*/,
16296  0 /*letterIndex ("")*/,
16297  },
16298  // Rule Morocco 2030 only - Feb 10 2:00 0 -
16299  {
16300  2030 /*fromYear*/,
16301  2030 /*toYear*/,
16302  2 /*inMonth*/,
16303  0 /*onDayOfWeek*/,
16304  10 /*onDayOfMonth*/,
16305  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16306  480 /*atTimeCode (7200/15)*/,
16307  0 /*deltaMinutes*/,
16308  0 /*letterIndex ("")*/,
16309  },
16310  // Rule Morocco 2030 only - Dec 22 3:00 -1:00 -
16311  {
16312  2030 /*fromYear*/,
16313  2030 /*toYear*/,
16314  12 /*inMonth*/,
16315  0 /*onDayOfWeek*/,
16316  22 /*onDayOfMonth*/,
16317  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16318  720 /*atTimeCode (10800/15)*/,
16319  -60 /*deltaMinutes*/,
16320  0 /*letterIndex ("")*/,
16321  },
16322  // Rule Morocco 2031 only - Jan 26 2:00 0 -
16323  {
16324  2031 /*fromYear*/,
16325  2031 /*toYear*/,
16326  1 /*inMonth*/,
16327  0 /*onDayOfWeek*/,
16328  26 /*onDayOfMonth*/,
16329  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16330  480 /*atTimeCode (7200/15)*/,
16331  0 /*deltaMinutes*/,
16332  0 /*letterIndex ("")*/,
16333  },
16334  // Rule Morocco 2031 only - Dec 14 3:00 -1:00 -
16335  {
16336  2031 /*fromYear*/,
16337  2031 /*toYear*/,
16338  12 /*inMonth*/,
16339  0 /*onDayOfWeek*/,
16340  14 /*onDayOfMonth*/,
16341  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16342  720 /*atTimeCode (10800/15)*/,
16343  -60 /*deltaMinutes*/,
16344  0 /*letterIndex ("")*/,
16345  },
16346  // Rule Morocco 2032 only - Jan 18 2:00 0 -
16347  {
16348  2032 /*fromYear*/,
16349  2032 /*toYear*/,
16350  1 /*inMonth*/,
16351  0 /*onDayOfWeek*/,
16352  18 /*onDayOfMonth*/,
16353  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16354  480 /*atTimeCode (7200/15)*/,
16355  0 /*deltaMinutes*/,
16356  0 /*letterIndex ("")*/,
16357  },
16358  // Rule Morocco 2032 only - Nov 28 3:00 -1:00 -
16359  {
16360  2032 /*fromYear*/,
16361  2032 /*toYear*/,
16362  11 /*inMonth*/,
16363  0 /*onDayOfWeek*/,
16364  28 /*onDayOfMonth*/,
16365  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16366  720 /*atTimeCode (10800/15)*/,
16367  -60 /*deltaMinutes*/,
16368  0 /*letterIndex ("")*/,
16369  },
16370  // Rule Morocco 2033 only - Jan 9 2:00 0 -
16371  {
16372  2033 /*fromYear*/,
16373  2033 /*toYear*/,
16374  1 /*inMonth*/,
16375  0 /*onDayOfWeek*/,
16376  9 /*onDayOfMonth*/,
16377  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16378  480 /*atTimeCode (7200/15)*/,
16379  0 /*deltaMinutes*/,
16380  0 /*letterIndex ("")*/,
16381  },
16382  // Rule Morocco 2033 only - Nov 20 3:00 -1:00 -
16383  {
16384  2033 /*fromYear*/,
16385  2033 /*toYear*/,
16386  11 /*inMonth*/,
16387  0 /*onDayOfWeek*/,
16388  20 /*onDayOfMonth*/,
16389  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16390  720 /*atTimeCode (10800/15)*/,
16391  -60 /*deltaMinutes*/,
16392  0 /*letterIndex ("")*/,
16393  },
16394  // Rule Morocco 2033 only - Dec 25 2:00 0 -
16395  {
16396  2033 /*fromYear*/,
16397  2033 /*toYear*/,
16398  12 /*inMonth*/,
16399  0 /*onDayOfWeek*/,
16400  25 /*onDayOfMonth*/,
16401  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16402  480 /*atTimeCode (7200/15)*/,
16403  0 /*deltaMinutes*/,
16404  0 /*letterIndex ("")*/,
16405  },
16406  // Rule Morocco 2034 only - Nov 5 3:00 -1:00 -
16407  {
16408  2034 /*fromYear*/,
16409  2034 /*toYear*/,
16410  11 /*inMonth*/,
16411  0 /*onDayOfWeek*/,
16412  5 /*onDayOfMonth*/,
16413  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16414  720 /*atTimeCode (10800/15)*/,
16415  -60 /*deltaMinutes*/,
16416  0 /*letterIndex ("")*/,
16417  },
16418  // Rule Morocco 2034 only - Dec 17 2:00 0 -
16419  {
16420  2034 /*fromYear*/,
16421  2034 /*toYear*/,
16422  12 /*inMonth*/,
16423  0 /*onDayOfWeek*/,
16424  17 /*onDayOfMonth*/,
16425  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16426  480 /*atTimeCode (7200/15)*/,
16427  0 /*deltaMinutes*/,
16428  0 /*letterIndex ("")*/,
16429  },
16430  // Rule Morocco 2035 only - Oct 28 3:00 -1:00 -
16431  {
16432  2035 /*fromYear*/,
16433  2035 /*toYear*/,
16434  10 /*inMonth*/,
16435  0 /*onDayOfWeek*/,
16436  28 /*onDayOfMonth*/,
16437  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16438  720 /*atTimeCode (10800/15)*/,
16439  -60 /*deltaMinutes*/,
16440  0 /*letterIndex ("")*/,
16441  },
16442  // Rule Morocco 2035 only - Dec 9 2:00 0 -
16443  {
16444  2035 /*fromYear*/,
16445  2035 /*toYear*/,
16446  12 /*inMonth*/,
16447  0 /*onDayOfWeek*/,
16448  9 /*onDayOfMonth*/,
16449  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16450  480 /*atTimeCode (7200/15)*/,
16451  0 /*deltaMinutes*/,
16452  0 /*letterIndex ("")*/,
16453  },
16454  // Rule Morocco 2036 only - Oct 19 3:00 -1:00 -
16455  {
16456  2036 /*fromYear*/,
16457  2036 /*toYear*/,
16458  10 /*inMonth*/,
16459  0 /*onDayOfWeek*/,
16460  19 /*onDayOfMonth*/,
16461  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16462  720 /*atTimeCode (10800/15)*/,
16463  -60 /*deltaMinutes*/,
16464  0 /*letterIndex ("")*/,
16465  },
16466  // Rule Morocco 2036 only - Nov 23 2:00 0 -
16467  {
16468  2036 /*fromYear*/,
16469  2036 /*toYear*/,
16470  11 /*inMonth*/,
16471  0 /*onDayOfWeek*/,
16472  23 /*onDayOfMonth*/,
16473  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16474  480 /*atTimeCode (7200/15)*/,
16475  0 /*deltaMinutes*/,
16476  0 /*letterIndex ("")*/,
16477  },
16478  // Rule Morocco 2037 only - Oct 4 3:00 -1:00 -
16479  {
16480  2037 /*fromYear*/,
16481  2037 /*toYear*/,
16482  10 /*inMonth*/,
16483  0 /*onDayOfWeek*/,
16484  4 /*onDayOfMonth*/,
16485  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16486  720 /*atTimeCode (10800/15)*/,
16487  -60 /*deltaMinutes*/,
16488  0 /*letterIndex ("")*/,
16489  },
16490  // Rule Morocco 2037 only - Nov 15 2:00 0 -
16491  {
16492  2037 /*fromYear*/,
16493  2037 /*toYear*/,
16494  11 /*inMonth*/,
16495  0 /*onDayOfWeek*/,
16496  15 /*onDayOfMonth*/,
16497  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16498  480 /*atTimeCode (7200/15)*/,
16499  0 /*deltaMinutes*/,
16500  0 /*letterIndex ("")*/,
16501  },
16502  // Rule Morocco 2038 only - Sep 26 3:00 -1:00 -
16503  {
16504  2038 /*fromYear*/,
16505  2038 /*toYear*/,
16506  9 /*inMonth*/,
16507  0 /*onDayOfWeek*/,
16508  26 /*onDayOfMonth*/,
16509  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16510  720 /*atTimeCode (10800/15)*/,
16511  -60 /*deltaMinutes*/,
16512  0 /*letterIndex ("")*/,
16513  },
16514  // Rule Morocco 2038 only - Oct 31 2:00 0 -
16515  {
16516  2038 /*fromYear*/,
16517  2038 /*toYear*/,
16518  10 /*inMonth*/,
16519  0 /*onDayOfWeek*/,
16520  31 /*onDayOfMonth*/,
16521  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16522  480 /*atTimeCode (7200/15)*/,
16523  0 /*deltaMinutes*/,
16524  0 /*letterIndex ("")*/,
16525  },
16526  // Rule Morocco 2039 only - Sep 18 3:00 -1:00 -
16527  {
16528  2039 /*fromYear*/,
16529  2039 /*toYear*/,
16530  9 /*inMonth*/,
16531  0 /*onDayOfWeek*/,
16532  18 /*onDayOfMonth*/,
16533  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16534  720 /*atTimeCode (10800/15)*/,
16535  -60 /*deltaMinutes*/,
16536  0 /*letterIndex ("")*/,
16537  },
16538  // Rule Morocco 2039 only - Oct 23 2:00 0 -
16539  {
16540  2039 /*fromYear*/,
16541  2039 /*toYear*/,
16542  10 /*inMonth*/,
16543  0 /*onDayOfWeek*/,
16544  23 /*onDayOfMonth*/,
16545  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16546  480 /*atTimeCode (7200/15)*/,
16547  0 /*deltaMinutes*/,
16548  0 /*letterIndex ("")*/,
16549  },
16550  // Rule Morocco 2040 only - Sep 2 3:00 -1:00 -
16551  {
16552  2040 /*fromYear*/,
16553  2040 /*toYear*/,
16554  9 /*inMonth*/,
16555  0 /*onDayOfWeek*/,
16556  2 /*onDayOfMonth*/,
16557  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16558  720 /*atTimeCode (10800/15)*/,
16559  -60 /*deltaMinutes*/,
16560  0 /*letterIndex ("")*/,
16561  },
16562  // Rule Morocco 2040 only - Oct 14 2:00 0 -
16563  {
16564  2040 /*fromYear*/,
16565  2040 /*toYear*/,
16566  10 /*inMonth*/,
16567  0 /*onDayOfWeek*/,
16568  14 /*onDayOfMonth*/,
16569  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16570  480 /*atTimeCode (7200/15)*/,
16571  0 /*deltaMinutes*/,
16572  0 /*letterIndex ("")*/,
16573  },
16574  // Rule Morocco 2041 only - Aug 25 3:00 -1:00 -
16575  {
16576  2041 /*fromYear*/,
16577  2041 /*toYear*/,
16578  8 /*inMonth*/,
16579  0 /*onDayOfWeek*/,
16580  25 /*onDayOfMonth*/,
16581  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16582  720 /*atTimeCode (10800/15)*/,
16583  -60 /*deltaMinutes*/,
16584  0 /*letterIndex ("")*/,
16585  },
16586  // Rule Morocco 2041 only - Sep 29 2:00 0 -
16587  {
16588  2041 /*fromYear*/,
16589  2041 /*toYear*/,
16590  9 /*inMonth*/,
16591  0 /*onDayOfWeek*/,
16592  29 /*onDayOfMonth*/,
16593  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16594  480 /*atTimeCode (7200/15)*/,
16595  0 /*deltaMinutes*/,
16596  0 /*letterIndex ("")*/,
16597  },
16598  // Rule Morocco 2042 only - Aug 10 3:00 -1:00 -
16599  {
16600  2042 /*fromYear*/,
16601  2042 /*toYear*/,
16602  8 /*inMonth*/,
16603  0 /*onDayOfWeek*/,
16604  10 /*onDayOfMonth*/,
16605  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16606  720 /*atTimeCode (10800/15)*/,
16607  -60 /*deltaMinutes*/,
16608  0 /*letterIndex ("")*/,
16609  },
16610  // Rule Morocco 2042 only - Sep 21 2:00 0 -
16611  {
16612  2042 /*fromYear*/,
16613  2042 /*toYear*/,
16614  9 /*inMonth*/,
16615  0 /*onDayOfWeek*/,
16616  21 /*onDayOfMonth*/,
16617  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16618  480 /*atTimeCode (7200/15)*/,
16619  0 /*deltaMinutes*/,
16620  0 /*letterIndex ("")*/,
16621  },
16622  // Rule Morocco 2043 only - Aug 2 3:00 -1:00 -
16623  {
16624  2043 /*fromYear*/,
16625  2043 /*toYear*/,
16626  8 /*inMonth*/,
16627  0 /*onDayOfWeek*/,
16628  2 /*onDayOfMonth*/,
16629  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16630  720 /*atTimeCode (10800/15)*/,
16631  -60 /*deltaMinutes*/,
16632  0 /*letterIndex ("")*/,
16633  },
16634  // Rule Morocco 2043 only - Sep 13 2:00 0 -
16635  {
16636  2043 /*fromYear*/,
16637  2043 /*toYear*/,
16638  9 /*inMonth*/,
16639  0 /*onDayOfWeek*/,
16640  13 /*onDayOfMonth*/,
16641  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16642  480 /*atTimeCode (7200/15)*/,
16643  0 /*deltaMinutes*/,
16644  0 /*letterIndex ("")*/,
16645  },
16646  // Rule Morocco 2044 only - Jul 24 3:00 -1:00 -
16647  {
16648  2044 /*fromYear*/,
16649  2044 /*toYear*/,
16650  7 /*inMonth*/,
16651  0 /*onDayOfWeek*/,
16652  24 /*onDayOfMonth*/,
16653  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16654  720 /*atTimeCode (10800/15)*/,
16655  -60 /*deltaMinutes*/,
16656  0 /*letterIndex ("")*/,
16657  },
16658  // Rule Morocco 2044 only - Aug 28 2:00 0 -
16659  {
16660  2044 /*fromYear*/,
16661  2044 /*toYear*/,
16662  8 /*inMonth*/,
16663  0 /*onDayOfWeek*/,
16664  28 /*onDayOfMonth*/,
16665  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16666  480 /*atTimeCode (7200/15)*/,
16667  0 /*deltaMinutes*/,
16668  0 /*letterIndex ("")*/,
16669  },
16670  // Rule Morocco 2045 only - Jul 9 3:00 -1:00 -
16671  {
16672  2045 /*fromYear*/,
16673  2045 /*toYear*/,
16674  7 /*inMonth*/,
16675  0 /*onDayOfWeek*/,
16676  9 /*onDayOfMonth*/,
16677  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16678  720 /*atTimeCode (10800/15)*/,
16679  -60 /*deltaMinutes*/,
16680  0 /*letterIndex ("")*/,
16681  },
16682  // Rule Morocco 2045 only - Aug 20 2:00 0 -
16683  {
16684  2045 /*fromYear*/,
16685  2045 /*toYear*/,
16686  8 /*inMonth*/,
16687  0 /*onDayOfWeek*/,
16688  20 /*onDayOfMonth*/,
16689  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16690  480 /*atTimeCode (7200/15)*/,
16691  0 /*deltaMinutes*/,
16692  0 /*letterIndex ("")*/,
16693  },
16694  // Rule Morocco 2046 only - Jul 1 3:00 -1:00 -
16695  {
16696  2046 /*fromYear*/,
16697  2046 /*toYear*/,
16698  7 /*inMonth*/,
16699  0 /*onDayOfWeek*/,
16700  1 /*onDayOfMonth*/,
16701  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16702  720 /*atTimeCode (10800/15)*/,
16703  -60 /*deltaMinutes*/,
16704  0 /*letterIndex ("")*/,
16705  },
16706  // Rule Morocco 2046 only - Aug 5 2:00 0 -
16707  {
16708  2046 /*fromYear*/,
16709  2046 /*toYear*/,
16710  8 /*inMonth*/,
16711  0 /*onDayOfWeek*/,
16712  5 /*onDayOfMonth*/,
16713  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16714  480 /*atTimeCode (7200/15)*/,
16715  0 /*deltaMinutes*/,
16716  0 /*letterIndex ("")*/,
16717  },
16718  // Rule Morocco 2047 only - Jun 23 3:00 -1:00 -
16719  {
16720  2047 /*fromYear*/,
16721  2047 /*toYear*/,
16722  6 /*inMonth*/,
16723  0 /*onDayOfWeek*/,
16724  23 /*onDayOfMonth*/,
16725  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16726  720 /*atTimeCode (10800/15)*/,
16727  -60 /*deltaMinutes*/,
16728  0 /*letterIndex ("")*/,
16729  },
16730  // Rule Morocco 2047 only - Jul 28 2:00 0 -
16731  {
16732  2047 /*fromYear*/,
16733  2047 /*toYear*/,
16734  7 /*inMonth*/,
16735  0 /*onDayOfWeek*/,
16736  28 /*onDayOfMonth*/,
16737  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16738  480 /*atTimeCode (7200/15)*/,
16739  0 /*deltaMinutes*/,
16740  0 /*letterIndex ("")*/,
16741  },
16742  // Rule Morocco 2048 only - Jun 7 3:00 -1:00 -
16743  {
16744  2048 /*fromYear*/,
16745  2048 /*toYear*/,
16746  6 /*inMonth*/,
16747  0 /*onDayOfWeek*/,
16748  7 /*onDayOfMonth*/,
16749  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16750  720 /*atTimeCode (10800/15)*/,
16751  -60 /*deltaMinutes*/,
16752  0 /*letterIndex ("")*/,
16753  },
16754  // Rule Morocco 2048 only - Jul 19 2:00 0 -
16755  {
16756  2048 /*fromYear*/,
16757  2048 /*toYear*/,
16758  7 /*inMonth*/,
16759  0 /*onDayOfWeek*/,
16760  19 /*onDayOfMonth*/,
16761  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16762  480 /*atTimeCode (7200/15)*/,
16763  0 /*deltaMinutes*/,
16764  0 /*letterIndex ("")*/,
16765  },
16766  // Rule Morocco 2049 only - May 30 3:00 -1:00 -
16767  {
16768  2049 /*fromYear*/,
16769  2049 /*toYear*/,
16770  5 /*inMonth*/,
16771  0 /*onDayOfWeek*/,
16772  30 /*onDayOfMonth*/,
16773  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16774  720 /*atTimeCode (10800/15)*/,
16775  -60 /*deltaMinutes*/,
16776  0 /*letterIndex ("")*/,
16777  },
16778  // Rule Morocco 2049 only - Jul 4 2:00 0 -
16779  {
16780  2049 /*fromYear*/,
16781  2049 /*toYear*/,
16782  7 /*inMonth*/,
16783  0 /*onDayOfWeek*/,
16784  4 /*onDayOfMonth*/,
16785  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16786  480 /*atTimeCode (7200/15)*/,
16787  0 /*deltaMinutes*/,
16788  0 /*letterIndex ("")*/,
16789  },
16790  // Rule Morocco 2050 only - May 15 3:00 -1:00 -
16791  {
16792  2050 /*fromYear*/,
16793  2050 /*toYear*/,
16794  5 /*inMonth*/,
16795  0 /*onDayOfWeek*/,
16796  15 /*onDayOfMonth*/,
16797  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16798  720 /*atTimeCode (10800/15)*/,
16799  -60 /*deltaMinutes*/,
16800  0 /*letterIndex ("")*/,
16801  },
16802  // Rule Morocco 2050 only - Jun 26 2:00 0 -
16803  {
16804  2050 /*fromYear*/,
16805  2050 /*toYear*/,
16806  6 /*inMonth*/,
16807  0 /*onDayOfWeek*/,
16808  26 /*onDayOfMonth*/,
16809  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16810  480 /*atTimeCode (7200/15)*/,
16811  0 /*deltaMinutes*/,
16812  0 /*letterIndex ("")*/,
16813  },
16814  // Rule Morocco 2051 only - May 7 3:00 -1:00 -
16815  {
16816  2051 /*fromYear*/,
16817  2051 /*toYear*/,
16818  5 /*inMonth*/,
16819  0 /*onDayOfWeek*/,
16820  7 /*onDayOfMonth*/,
16821  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16822  720 /*atTimeCode (10800/15)*/,
16823  -60 /*deltaMinutes*/,
16824  0 /*letterIndex ("")*/,
16825  },
16826  // Rule Morocco 2051 only - Jun 18 2:00 0 -
16827  {
16828  2051 /*fromYear*/,
16829  2051 /*toYear*/,
16830  6 /*inMonth*/,
16831  0 /*onDayOfWeek*/,
16832  18 /*onDayOfMonth*/,
16833  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16834  480 /*atTimeCode (7200/15)*/,
16835  0 /*deltaMinutes*/,
16836  0 /*letterIndex ("")*/,
16837  },
16838  // Rule Morocco 2052 only - Apr 28 3:00 -1:00 -
16839  {
16840  2052 /*fromYear*/,
16841  2052 /*toYear*/,
16842  4 /*inMonth*/,
16843  0 /*onDayOfWeek*/,
16844  28 /*onDayOfMonth*/,
16845  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16846  720 /*atTimeCode (10800/15)*/,
16847  -60 /*deltaMinutes*/,
16848  0 /*letterIndex ("")*/,
16849  },
16850  // Rule Morocco 2052 only - Jun 2 2:00 0 -
16851  {
16852  2052 /*fromYear*/,
16853  2052 /*toYear*/,
16854  6 /*inMonth*/,
16855  0 /*onDayOfWeek*/,
16856  2 /*onDayOfMonth*/,
16857  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16858  480 /*atTimeCode (7200/15)*/,
16859  0 /*deltaMinutes*/,
16860  0 /*letterIndex ("")*/,
16861  },
16862  // Rule Morocco 2053 only - Apr 13 3:00 -1:00 -
16863  {
16864  2053 /*fromYear*/,
16865  2053 /*toYear*/,
16866  4 /*inMonth*/,
16867  0 /*onDayOfWeek*/,
16868  13 /*onDayOfMonth*/,
16869  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16870  720 /*atTimeCode (10800/15)*/,
16871  -60 /*deltaMinutes*/,
16872  0 /*letterIndex ("")*/,
16873  },
16874  // Rule Morocco 2053 only - May 25 2:00 0 -
16875  {
16876  2053 /*fromYear*/,
16877  2053 /*toYear*/,
16878  5 /*inMonth*/,
16879  0 /*onDayOfWeek*/,
16880  25 /*onDayOfMonth*/,
16881  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16882  480 /*atTimeCode (7200/15)*/,
16883  0 /*deltaMinutes*/,
16884  0 /*letterIndex ("")*/,
16885  },
16886  // Rule Morocco 2054 only - Apr 5 3:00 -1:00 -
16887  {
16888  2054 /*fromYear*/,
16889  2054 /*toYear*/,
16890  4 /*inMonth*/,
16891  0 /*onDayOfWeek*/,
16892  5 /*onDayOfMonth*/,
16893  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16894  720 /*atTimeCode (10800/15)*/,
16895  -60 /*deltaMinutes*/,
16896  0 /*letterIndex ("")*/,
16897  },
16898  // Rule Morocco 2054 only - May 10 2:00 0 -
16899  {
16900  2054 /*fromYear*/,
16901  2054 /*toYear*/,
16902  5 /*inMonth*/,
16903  0 /*onDayOfWeek*/,
16904  10 /*onDayOfMonth*/,
16905  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16906  480 /*atTimeCode (7200/15)*/,
16907  0 /*deltaMinutes*/,
16908  0 /*letterIndex ("")*/,
16909  },
16910  // Rule Morocco 2055 only - Mar 28 3:00 -1:00 -
16911  {
16912  2055 /*fromYear*/,
16913  2055 /*toYear*/,
16914  3 /*inMonth*/,
16915  0 /*onDayOfWeek*/,
16916  28 /*onDayOfMonth*/,
16917  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16918  720 /*atTimeCode (10800/15)*/,
16919  -60 /*deltaMinutes*/,
16920  0 /*letterIndex ("")*/,
16921  },
16922  // Rule Morocco 2055 only - May 2 2:00 0 -
16923  {
16924  2055 /*fromYear*/,
16925  2055 /*toYear*/,
16926  5 /*inMonth*/,
16927  0 /*onDayOfWeek*/,
16928  2 /*onDayOfMonth*/,
16929  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16930  480 /*atTimeCode (7200/15)*/,
16931  0 /*deltaMinutes*/,
16932  0 /*letterIndex ("")*/,
16933  },
16934  // Rule Morocco 2056 only - Mar 12 3:00 -1:00 -
16935  {
16936  2056 /*fromYear*/,
16937  2056 /*toYear*/,
16938  3 /*inMonth*/,
16939  0 /*onDayOfWeek*/,
16940  12 /*onDayOfMonth*/,
16941  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16942  720 /*atTimeCode (10800/15)*/,
16943  -60 /*deltaMinutes*/,
16944  0 /*letterIndex ("")*/,
16945  },
16946  // Rule Morocco 2056 only - Apr 23 2:00 0 -
16947  {
16948  2056 /*fromYear*/,
16949  2056 /*toYear*/,
16950  4 /*inMonth*/,
16951  0 /*onDayOfWeek*/,
16952  23 /*onDayOfMonth*/,
16953  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16954  480 /*atTimeCode (7200/15)*/,
16955  0 /*deltaMinutes*/,
16956  0 /*letterIndex ("")*/,
16957  },
16958  // Rule Morocco 2057 only - Mar 4 3:00 -1:00 -
16959  {
16960  2057 /*fromYear*/,
16961  2057 /*toYear*/,
16962  3 /*inMonth*/,
16963  0 /*onDayOfWeek*/,
16964  4 /*onDayOfMonth*/,
16965  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16966  720 /*atTimeCode (10800/15)*/,
16967  -60 /*deltaMinutes*/,
16968  0 /*letterIndex ("")*/,
16969  },
16970  // Rule Morocco 2057 only - Apr 8 2:00 0 -
16971  {
16972  2057 /*fromYear*/,
16973  2057 /*toYear*/,
16974  4 /*inMonth*/,
16975  0 /*onDayOfWeek*/,
16976  8 /*onDayOfMonth*/,
16977  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16978  480 /*atTimeCode (7200/15)*/,
16979  0 /*deltaMinutes*/,
16980  0 /*letterIndex ("")*/,
16981  },
16982  // Rule Morocco 2058 only - Feb 17 3:00 -1:00 -
16983  {
16984  2058 /*fromYear*/,
16985  2058 /*toYear*/,
16986  2 /*inMonth*/,
16987  0 /*onDayOfWeek*/,
16988  17 /*onDayOfMonth*/,
16989  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
16990  720 /*atTimeCode (10800/15)*/,
16991  -60 /*deltaMinutes*/,
16992  0 /*letterIndex ("")*/,
16993  },
16994  // Rule Morocco 2058 only - Mar 31 2:00 0 -
16995  {
16996  2058 /*fromYear*/,
16997  2058 /*toYear*/,
16998  3 /*inMonth*/,
16999  0 /*onDayOfWeek*/,
17000  31 /*onDayOfMonth*/,
17001  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17002  480 /*atTimeCode (7200/15)*/,
17003  0 /*deltaMinutes*/,
17004  0 /*letterIndex ("")*/,
17005  },
17006  // Rule Morocco 2059 only - Feb 9 3:00 -1:00 -
17007  {
17008  2059 /*fromYear*/,
17009  2059 /*toYear*/,
17010  2 /*inMonth*/,
17011  0 /*onDayOfWeek*/,
17012  9 /*onDayOfMonth*/,
17013  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17014  720 /*atTimeCode (10800/15)*/,
17015  -60 /*deltaMinutes*/,
17016  0 /*letterIndex ("")*/,
17017  },
17018  // Rule Morocco 2059 only - Mar 23 2:00 0 -
17019  {
17020  2059 /*fromYear*/,
17021  2059 /*toYear*/,
17022  3 /*inMonth*/,
17023  0 /*onDayOfWeek*/,
17024  23 /*onDayOfMonth*/,
17025  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17026  480 /*atTimeCode (7200/15)*/,
17027  0 /*deltaMinutes*/,
17028  0 /*letterIndex ("")*/,
17029  },
17030  // Rule Morocco 2060 only - Feb 1 3:00 -1:00 -
17031  {
17032  2060 /*fromYear*/,
17033  2060 /*toYear*/,
17034  2 /*inMonth*/,
17035  0 /*onDayOfWeek*/,
17036  1 /*onDayOfMonth*/,
17037  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17038  720 /*atTimeCode (10800/15)*/,
17039  -60 /*deltaMinutes*/,
17040  0 /*letterIndex ("")*/,
17041  },
17042  // Rule Morocco 2060 only - Mar 7 2:00 0 -
17043  {
17044  2060 /*fromYear*/,
17045  2060 /*toYear*/,
17046  3 /*inMonth*/,
17047  0 /*onDayOfWeek*/,
17048  7 /*onDayOfMonth*/,
17049  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17050  480 /*atTimeCode (7200/15)*/,
17051  0 /*deltaMinutes*/,
17052  0 /*letterIndex ("")*/,
17053  },
17054  // Rule Morocco 2061 only - Jan 16 3:00 -1:00 -
17055  {
17056  2061 /*fromYear*/,
17057  2061 /*toYear*/,
17058  1 /*inMonth*/,
17059  0 /*onDayOfWeek*/,
17060  16 /*onDayOfMonth*/,
17061  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17062  720 /*atTimeCode (10800/15)*/,
17063  -60 /*deltaMinutes*/,
17064  0 /*letterIndex ("")*/,
17065  },
17066  // Rule Morocco 2061 only - Feb 27 2:00 0 -
17067  {
17068  2061 /*fromYear*/,
17069  2061 /*toYear*/,
17070  2 /*inMonth*/,
17071  0 /*onDayOfWeek*/,
17072  27 /*onDayOfMonth*/,
17073  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17074  480 /*atTimeCode (7200/15)*/,
17075  0 /*deltaMinutes*/,
17076  0 /*letterIndex ("")*/,
17077  },
17078  // Rule Morocco 2062 only - Jan 8 3:00 -1:00 -
17079  {
17080  2062 /*fromYear*/,
17081  2062 /*toYear*/,
17082  1 /*inMonth*/,
17083  0 /*onDayOfWeek*/,
17084  8 /*onDayOfMonth*/,
17085  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17086  720 /*atTimeCode (10800/15)*/,
17087  -60 /*deltaMinutes*/,
17088  0 /*letterIndex ("")*/,
17089  },
17090  // Rule Morocco 2062 only - Feb 12 2:00 0 -
17091  {
17092  2062 /*fromYear*/,
17093  2062 /*toYear*/,
17094  2 /*inMonth*/,
17095  0 /*onDayOfWeek*/,
17096  12 /*onDayOfMonth*/,
17097  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17098  480 /*atTimeCode (7200/15)*/,
17099  0 /*deltaMinutes*/,
17100  0 /*letterIndex ("")*/,
17101  },
17102  // Rule Morocco 2062 only - Dec 31 3:00 -1:00 -
17103  {
17104  2062 /*fromYear*/,
17105  2062 /*toYear*/,
17106  12 /*inMonth*/,
17107  0 /*onDayOfWeek*/,
17108  31 /*onDayOfMonth*/,
17109  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17110  720 /*atTimeCode (10800/15)*/,
17111  -60 /*deltaMinutes*/,
17112  0 /*letterIndex ("")*/,
17113  },
17114  // Rule Morocco 2063 only - Feb 4 2:00 0 -
17115  {
17116  2063 /*fromYear*/,
17117  2063 /*toYear*/,
17118  2 /*inMonth*/,
17119  0 /*onDayOfWeek*/,
17120  4 /*onDayOfMonth*/,
17121  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17122  480 /*atTimeCode (7200/15)*/,
17123  0 /*deltaMinutes*/,
17124  0 /*letterIndex ("")*/,
17125  },
17126  // Rule Morocco 2063 only - Dec 16 3:00 -1:00 -
17127  {
17128  2063 /*fromYear*/,
17129  2063 /*toYear*/,
17130  12 /*inMonth*/,
17131  0 /*onDayOfWeek*/,
17132  16 /*onDayOfMonth*/,
17133  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17134  720 /*atTimeCode (10800/15)*/,
17135  -60 /*deltaMinutes*/,
17136  0 /*letterIndex ("")*/,
17137  },
17138  // Rule Morocco 2064 only - Jan 27 2:00 0 -
17139  {
17140  2064 /*fromYear*/,
17141  2064 /*toYear*/,
17142  1 /*inMonth*/,
17143  0 /*onDayOfWeek*/,
17144  27 /*onDayOfMonth*/,
17145  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17146  480 /*atTimeCode (7200/15)*/,
17147  0 /*deltaMinutes*/,
17148  0 /*letterIndex ("")*/,
17149  },
17150  // Rule Morocco 2064 only - Dec 7 3:00 -1:00 -
17151  {
17152  2064 /*fromYear*/,
17153  2064 /*toYear*/,
17154  12 /*inMonth*/,
17155  0 /*onDayOfWeek*/,
17156  7 /*onDayOfMonth*/,
17157  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17158  720 /*atTimeCode (10800/15)*/,
17159  -60 /*deltaMinutes*/,
17160  0 /*letterIndex ("")*/,
17161  },
17162  // Rule Morocco 2065 only - Jan 11 2:00 0 -
17163  {
17164  2065 /*fromYear*/,
17165  2065 /*toYear*/,
17166  1 /*inMonth*/,
17167  0 /*onDayOfWeek*/,
17168  11 /*onDayOfMonth*/,
17169  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17170  480 /*atTimeCode (7200/15)*/,
17171  0 /*deltaMinutes*/,
17172  0 /*letterIndex ("")*/,
17173  },
17174  // Rule Morocco 2065 only - Nov 22 3:00 -1:00 -
17175  {
17176  2065 /*fromYear*/,
17177  2065 /*toYear*/,
17178  11 /*inMonth*/,
17179  0 /*onDayOfWeek*/,
17180  22 /*onDayOfMonth*/,
17181  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17182  720 /*atTimeCode (10800/15)*/,
17183  -60 /*deltaMinutes*/,
17184  0 /*letterIndex ("")*/,
17185  },
17186  // Rule Morocco 2066 only - Jan 3 2:00 0 -
17187  {
17188  2066 /*fromYear*/,
17189  2066 /*toYear*/,
17190  1 /*inMonth*/,
17191  0 /*onDayOfWeek*/,
17192  3 /*onDayOfMonth*/,
17193  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17194  480 /*atTimeCode (7200/15)*/,
17195  0 /*deltaMinutes*/,
17196  0 /*letterIndex ("")*/,
17197  },
17198  // Rule Morocco 2066 only - Nov 14 3:00 -1:00 -
17199  {
17200  2066 /*fromYear*/,
17201  2066 /*toYear*/,
17202  11 /*inMonth*/,
17203  0 /*onDayOfWeek*/,
17204  14 /*onDayOfMonth*/,
17205  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17206  720 /*atTimeCode (10800/15)*/,
17207  -60 /*deltaMinutes*/,
17208  0 /*letterIndex ("")*/,
17209  },
17210  // Rule Morocco 2066 only - Dec 26 2:00 0 -
17211  {
17212  2066 /*fromYear*/,
17213  2066 /*toYear*/,
17214  12 /*inMonth*/,
17215  0 /*onDayOfWeek*/,
17216  26 /*onDayOfMonth*/,
17217  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17218  480 /*atTimeCode (7200/15)*/,
17219  0 /*deltaMinutes*/,
17220  0 /*letterIndex ("")*/,
17221  },
17222  // Rule Morocco 2067 only - Nov 6 3:00 -1:00 -
17223  {
17224  2067 /*fromYear*/,
17225  2067 /*toYear*/,
17226  11 /*inMonth*/,
17227  0 /*onDayOfWeek*/,
17228  6 /*onDayOfMonth*/,
17229  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17230  720 /*atTimeCode (10800/15)*/,
17231  -60 /*deltaMinutes*/,
17232  0 /*letterIndex ("")*/,
17233  },
17234  // Rule Morocco 2067 only - Dec 11 2:00 0 -
17235  {
17236  2067 /*fromYear*/,
17237  2067 /*toYear*/,
17238  12 /*inMonth*/,
17239  0 /*onDayOfWeek*/,
17240  11 /*onDayOfMonth*/,
17241  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17242  480 /*atTimeCode (7200/15)*/,
17243  0 /*deltaMinutes*/,
17244  0 /*letterIndex ("")*/,
17245  },
17246  // Rule Morocco 2068 only - Oct 21 3:00 -1:00 -
17247  {
17248  2068 /*fromYear*/,
17249  2068 /*toYear*/,
17250  10 /*inMonth*/,
17251  0 /*onDayOfWeek*/,
17252  21 /*onDayOfMonth*/,
17253  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17254  720 /*atTimeCode (10800/15)*/,
17255  -60 /*deltaMinutes*/,
17256  0 /*letterIndex ("")*/,
17257  },
17258  // Rule Morocco 2068 only - Dec 2 2:00 0 -
17259  {
17260  2068 /*fromYear*/,
17261  2068 /*toYear*/,
17262  12 /*inMonth*/,
17263  0 /*onDayOfWeek*/,
17264  2 /*onDayOfMonth*/,
17265  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17266  480 /*atTimeCode (7200/15)*/,
17267  0 /*deltaMinutes*/,
17268  0 /*letterIndex ("")*/,
17269  },
17270  // Rule Morocco 2069 only - Oct 13 3:00 -1:00 -
17271  {
17272  2069 /*fromYear*/,
17273  2069 /*toYear*/,
17274  10 /*inMonth*/,
17275  0 /*onDayOfWeek*/,
17276  13 /*onDayOfMonth*/,
17277  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17278  720 /*atTimeCode (10800/15)*/,
17279  -60 /*deltaMinutes*/,
17280  0 /*letterIndex ("")*/,
17281  },
17282  // Rule Morocco 2069 only - Nov 17 2:00 0 -
17283  {
17284  2069 /*fromYear*/,
17285  2069 /*toYear*/,
17286  11 /*inMonth*/,
17287  0 /*onDayOfWeek*/,
17288  17 /*onDayOfMonth*/,
17289  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17290  480 /*atTimeCode (7200/15)*/,
17291  0 /*deltaMinutes*/,
17292  0 /*letterIndex ("")*/,
17293  },
17294  // Rule Morocco 2070 only - Oct 5 3:00 -1:00 -
17295  {
17296  2070 /*fromYear*/,
17297  2070 /*toYear*/,
17298  10 /*inMonth*/,
17299  0 /*onDayOfWeek*/,
17300  5 /*onDayOfMonth*/,
17301  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17302  720 /*atTimeCode (10800/15)*/,
17303  -60 /*deltaMinutes*/,
17304  0 /*letterIndex ("")*/,
17305  },
17306  // Rule Morocco 2070 only - Nov 9 2:00 0 -
17307  {
17308  2070 /*fromYear*/,
17309  2070 /*toYear*/,
17310  11 /*inMonth*/,
17311  0 /*onDayOfWeek*/,
17312  9 /*onDayOfMonth*/,
17313  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17314  480 /*atTimeCode (7200/15)*/,
17315  0 /*deltaMinutes*/,
17316  0 /*letterIndex ("")*/,
17317  },
17318  // Rule Morocco 2071 only - Sep 20 3:00 -1:00 -
17319  {
17320  2071 /*fromYear*/,
17321  2071 /*toYear*/,
17322  9 /*inMonth*/,
17323  0 /*onDayOfWeek*/,
17324  20 /*onDayOfMonth*/,
17325  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17326  720 /*atTimeCode (10800/15)*/,
17327  -60 /*deltaMinutes*/,
17328  0 /*letterIndex ("")*/,
17329  },
17330  // Rule Morocco 2071 only - Nov 1 2:00 0 -
17331  {
17332  2071 /*fromYear*/,
17333  2071 /*toYear*/,
17334  11 /*inMonth*/,
17335  0 /*onDayOfWeek*/,
17336  1 /*onDayOfMonth*/,
17337  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17338  480 /*atTimeCode (7200/15)*/,
17339  0 /*deltaMinutes*/,
17340  0 /*letterIndex ("")*/,
17341  },
17342  // Rule Morocco 2072 only - Sep 11 3:00 -1:00 -
17343  {
17344  2072 /*fromYear*/,
17345  2072 /*toYear*/,
17346  9 /*inMonth*/,
17347  0 /*onDayOfWeek*/,
17348  11 /*onDayOfMonth*/,
17349  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17350  720 /*atTimeCode (10800/15)*/,
17351  -60 /*deltaMinutes*/,
17352  0 /*letterIndex ("")*/,
17353  },
17354  // Rule Morocco 2072 only - Oct 16 2:00 0 -
17355  {
17356  2072 /*fromYear*/,
17357  2072 /*toYear*/,
17358  10 /*inMonth*/,
17359  0 /*onDayOfWeek*/,
17360  16 /*onDayOfMonth*/,
17361  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17362  480 /*atTimeCode (7200/15)*/,
17363  0 /*deltaMinutes*/,
17364  0 /*letterIndex ("")*/,
17365  },
17366  // Rule Morocco 2073 only - Aug 27 3:00 -1:00 -
17367  {
17368  2073 /*fromYear*/,
17369  2073 /*toYear*/,
17370  8 /*inMonth*/,
17371  0 /*onDayOfWeek*/,
17372  27 /*onDayOfMonth*/,
17373  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17374  720 /*atTimeCode (10800/15)*/,
17375  -60 /*deltaMinutes*/,
17376  0 /*letterIndex ("")*/,
17377  },
17378  // Rule Morocco 2073 only - Oct 8 2:00 0 -
17379  {
17380  2073 /*fromYear*/,
17381  2073 /*toYear*/,
17382  10 /*inMonth*/,
17383  0 /*onDayOfWeek*/,
17384  8 /*onDayOfMonth*/,
17385  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17386  480 /*atTimeCode (7200/15)*/,
17387  0 /*deltaMinutes*/,
17388  0 /*letterIndex ("")*/,
17389  },
17390  // Rule Morocco 2074 only - Aug 19 3:00 -1:00 -
17391  {
17392  2074 /*fromYear*/,
17393  2074 /*toYear*/,
17394  8 /*inMonth*/,
17395  0 /*onDayOfWeek*/,
17396  19 /*onDayOfMonth*/,
17397  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17398  720 /*atTimeCode (10800/15)*/,
17399  -60 /*deltaMinutes*/,
17400  0 /*letterIndex ("")*/,
17401  },
17402  // Rule Morocco 2074 only - Sep 30 2:00 0 -
17403  {
17404  2074 /*fromYear*/,
17405  2074 /*toYear*/,
17406  9 /*inMonth*/,
17407  0 /*onDayOfWeek*/,
17408  30 /*onDayOfMonth*/,
17409  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17410  480 /*atTimeCode (7200/15)*/,
17411  0 /*deltaMinutes*/,
17412  0 /*letterIndex ("")*/,
17413  },
17414  // Rule Morocco 2075 only - Aug 11 3:00 -1:00 -
17415  {
17416  2075 /*fromYear*/,
17417  2075 /*toYear*/,
17418  8 /*inMonth*/,
17419  0 /*onDayOfWeek*/,
17420  11 /*onDayOfMonth*/,
17421  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17422  720 /*atTimeCode (10800/15)*/,
17423  -60 /*deltaMinutes*/,
17424  0 /*letterIndex ("")*/,
17425  },
17426  // Rule Morocco 2075 only - Sep 15 2:00 0 -
17427  {
17428  2075 /*fromYear*/,
17429  2075 /*toYear*/,
17430  9 /*inMonth*/,
17431  0 /*onDayOfWeek*/,
17432  15 /*onDayOfMonth*/,
17433  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17434  480 /*atTimeCode (7200/15)*/,
17435  0 /*deltaMinutes*/,
17436  0 /*letterIndex ("")*/,
17437  },
17438  // Rule Morocco 2076 only - Jul 26 3:00 -1:00 -
17439  {
17440  2076 /*fromYear*/,
17441  2076 /*toYear*/,
17442  7 /*inMonth*/,
17443  0 /*onDayOfWeek*/,
17444  26 /*onDayOfMonth*/,
17445  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17446  720 /*atTimeCode (10800/15)*/,
17447  -60 /*deltaMinutes*/,
17448  0 /*letterIndex ("")*/,
17449  },
17450  // Rule Morocco 2076 only - Sep 6 2:00 0 -
17451  {
17452  2076 /*fromYear*/,
17453  2076 /*toYear*/,
17454  9 /*inMonth*/,
17455  0 /*onDayOfWeek*/,
17456  6 /*onDayOfMonth*/,
17457  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17458  480 /*atTimeCode (7200/15)*/,
17459  0 /*deltaMinutes*/,
17460  0 /*letterIndex ("")*/,
17461  },
17462  // Rule Morocco 2077 only - Jul 18 3:00 -1:00 -
17463  {
17464  2077 /*fromYear*/,
17465  2077 /*toYear*/,
17466  7 /*inMonth*/,
17467  0 /*onDayOfWeek*/,
17468  18 /*onDayOfMonth*/,
17469  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17470  720 /*atTimeCode (10800/15)*/,
17471  -60 /*deltaMinutes*/,
17472  0 /*letterIndex ("")*/,
17473  },
17474  // Rule Morocco 2077 only - Aug 22 2:00 0 -
17475  {
17476  2077 /*fromYear*/,
17477  2077 /*toYear*/,
17478  8 /*inMonth*/,
17479  0 /*onDayOfWeek*/,
17480  22 /*onDayOfMonth*/,
17481  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17482  480 /*atTimeCode (7200/15)*/,
17483  0 /*deltaMinutes*/,
17484  0 /*letterIndex ("")*/,
17485  },
17486  // Rule Morocco 2078 only - Jul 10 3:00 -1:00 -
17487  {
17488  2078 /*fromYear*/,
17489  2078 /*toYear*/,
17490  7 /*inMonth*/,
17491  0 /*onDayOfWeek*/,
17492  10 /*onDayOfMonth*/,
17493  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17494  720 /*atTimeCode (10800/15)*/,
17495  -60 /*deltaMinutes*/,
17496  0 /*letterIndex ("")*/,
17497  },
17498  // Rule Morocco 2078 only - Aug 14 2:00 0 -
17499  {
17500  2078 /*fromYear*/,
17501  2078 /*toYear*/,
17502  8 /*inMonth*/,
17503  0 /*onDayOfWeek*/,
17504  14 /*onDayOfMonth*/,
17505  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17506  480 /*atTimeCode (7200/15)*/,
17507  0 /*deltaMinutes*/,
17508  0 /*letterIndex ("")*/,
17509  },
17510  // Rule Morocco 2079 only - Jun 25 3:00 -1:00 -
17511  {
17512  2079 /*fromYear*/,
17513  2079 /*toYear*/,
17514  6 /*inMonth*/,
17515  0 /*onDayOfWeek*/,
17516  25 /*onDayOfMonth*/,
17517  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17518  720 /*atTimeCode (10800/15)*/,
17519  -60 /*deltaMinutes*/,
17520  0 /*letterIndex ("")*/,
17521  },
17522  // Rule Morocco 2079 only - Aug 6 2:00 0 -
17523  {
17524  2079 /*fromYear*/,
17525  2079 /*toYear*/,
17526  8 /*inMonth*/,
17527  0 /*onDayOfWeek*/,
17528  6 /*onDayOfMonth*/,
17529  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17530  480 /*atTimeCode (7200/15)*/,
17531  0 /*deltaMinutes*/,
17532  0 /*letterIndex ("")*/,
17533  },
17534  // Rule Morocco 2080 only - Jun 16 3:00 -1:00 -
17535  {
17536  2080 /*fromYear*/,
17537  2080 /*toYear*/,
17538  6 /*inMonth*/,
17539  0 /*onDayOfWeek*/,
17540  16 /*onDayOfMonth*/,
17541  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17542  720 /*atTimeCode (10800/15)*/,
17543  -60 /*deltaMinutes*/,
17544  0 /*letterIndex ("")*/,
17545  },
17546  // Rule Morocco 2080 only - Jul 21 2:00 0 -
17547  {
17548  2080 /*fromYear*/,
17549  2080 /*toYear*/,
17550  7 /*inMonth*/,
17551  0 /*onDayOfWeek*/,
17552  21 /*onDayOfMonth*/,
17553  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17554  480 /*atTimeCode (7200/15)*/,
17555  0 /*deltaMinutes*/,
17556  0 /*letterIndex ("")*/,
17557  },
17558  // Rule Morocco 2081 only - Jun 1 3:00 -1:00 -
17559  {
17560  2081 /*fromYear*/,
17561  2081 /*toYear*/,
17562  6 /*inMonth*/,
17563  0 /*onDayOfWeek*/,
17564  1 /*onDayOfMonth*/,
17565  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17566  720 /*atTimeCode (10800/15)*/,
17567  -60 /*deltaMinutes*/,
17568  0 /*letterIndex ("")*/,
17569  },
17570  // Rule Morocco 2081 only - Jul 13 2:00 0 -
17571  {
17572  2081 /*fromYear*/,
17573  2081 /*toYear*/,
17574  7 /*inMonth*/,
17575  0 /*onDayOfWeek*/,
17576  13 /*onDayOfMonth*/,
17577  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17578  480 /*atTimeCode (7200/15)*/,
17579  0 /*deltaMinutes*/,
17580  0 /*letterIndex ("")*/,
17581  },
17582  // Rule Morocco 2082 only - May 24 3:00 -1:00 -
17583  {
17584  2082 /*fromYear*/,
17585  2082 /*toYear*/,
17586  5 /*inMonth*/,
17587  0 /*onDayOfWeek*/,
17588  24 /*onDayOfMonth*/,
17589  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17590  720 /*atTimeCode (10800/15)*/,
17591  -60 /*deltaMinutes*/,
17592  0 /*letterIndex ("")*/,
17593  },
17594  // Rule Morocco 2082 only - Jun 28 2:00 0 -
17595  {
17596  2082 /*fromYear*/,
17597  2082 /*toYear*/,
17598  6 /*inMonth*/,
17599  0 /*onDayOfWeek*/,
17600  28 /*onDayOfMonth*/,
17601  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17602  480 /*atTimeCode (7200/15)*/,
17603  0 /*deltaMinutes*/,
17604  0 /*letterIndex ("")*/,
17605  },
17606  // Rule Morocco 2083 only - May 16 3:00 -1:00 -
17607  {
17608  2083 /*fromYear*/,
17609  2083 /*toYear*/,
17610  5 /*inMonth*/,
17611  0 /*onDayOfWeek*/,
17612  16 /*onDayOfMonth*/,
17613  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17614  720 /*atTimeCode (10800/15)*/,
17615  -60 /*deltaMinutes*/,
17616  0 /*letterIndex ("")*/,
17617  },
17618  // Rule Morocco 2083 only - Jun 20 2:00 0 -
17619  {
17620  2083 /*fromYear*/,
17621  2083 /*toYear*/,
17622  6 /*inMonth*/,
17623  0 /*onDayOfWeek*/,
17624  20 /*onDayOfMonth*/,
17625  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17626  480 /*atTimeCode (7200/15)*/,
17627  0 /*deltaMinutes*/,
17628  0 /*letterIndex ("")*/,
17629  },
17630  // Rule Morocco 2084 only - Apr 30 3:00 -1:00 -
17631  {
17632  2084 /*fromYear*/,
17633  2084 /*toYear*/,
17634  4 /*inMonth*/,
17635  0 /*onDayOfWeek*/,
17636  30 /*onDayOfMonth*/,
17637  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17638  720 /*atTimeCode (10800/15)*/,
17639  -60 /*deltaMinutes*/,
17640  0 /*letterIndex ("")*/,
17641  },
17642  // Rule Morocco 2084 only - Jun 11 2:00 0 -
17643  {
17644  2084 /*fromYear*/,
17645  2084 /*toYear*/,
17646  6 /*inMonth*/,
17647  0 /*onDayOfWeek*/,
17648  11 /*onDayOfMonth*/,
17649  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17650  480 /*atTimeCode (7200/15)*/,
17651  0 /*deltaMinutes*/,
17652  0 /*letterIndex ("")*/,
17653  },
17654  // Rule Morocco 2085 only - Apr 22 3:00 -1:00 -
17655  {
17656  2085 /*fromYear*/,
17657  2085 /*toYear*/,
17658  4 /*inMonth*/,
17659  0 /*onDayOfWeek*/,
17660  22 /*onDayOfMonth*/,
17661  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17662  720 /*atTimeCode (10800/15)*/,
17663  -60 /*deltaMinutes*/,
17664  0 /*letterIndex ("")*/,
17665  },
17666  // Rule Morocco 2085 only - May 27 2:00 0 -
17667  {
17668  2085 /*fromYear*/,
17669  2085 /*toYear*/,
17670  5 /*inMonth*/,
17671  0 /*onDayOfWeek*/,
17672  27 /*onDayOfMonth*/,
17673  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17674  480 /*atTimeCode (7200/15)*/,
17675  0 /*deltaMinutes*/,
17676  0 /*letterIndex ("")*/,
17677  },
17678  // Rule Morocco 2086 only - Apr 14 3:00 -1:00 -
17679  {
17680  2086 /*fromYear*/,
17681  2086 /*toYear*/,
17682  4 /*inMonth*/,
17683  0 /*onDayOfWeek*/,
17684  14 /*onDayOfMonth*/,
17685  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17686  720 /*atTimeCode (10800/15)*/,
17687  -60 /*deltaMinutes*/,
17688  0 /*letterIndex ("")*/,
17689  },
17690  // Rule Morocco 2086 only - May 19 2:00 0 -
17691  {
17692  2086 /*fromYear*/,
17693  2086 /*toYear*/,
17694  5 /*inMonth*/,
17695  0 /*onDayOfWeek*/,
17696  19 /*onDayOfMonth*/,
17697  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17698  480 /*atTimeCode (7200/15)*/,
17699  0 /*deltaMinutes*/,
17700  0 /*letterIndex ("")*/,
17701  },
17702  // Rule Morocco 2087 only - Mar 30 3:00 -1:00 -
17703  {
17704  2087 /*fromYear*/,
17705  2087 /*toYear*/,
17706  3 /*inMonth*/,
17707  0 /*onDayOfWeek*/,
17708  30 /*onDayOfMonth*/,
17709  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17710  720 /*atTimeCode (10800/15)*/,
17711  -60 /*deltaMinutes*/,
17712  0 /*letterIndex ("")*/,
17713  },
17714  // Rule Morocco 2087 only - May 11 2:00 0 -
17715  {
17716  2087 /*fromYear*/,
17717  2087 /*toYear*/,
17718  5 /*inMonth*/,
17719  0 /*onDayOfWeek*/,
17720  11 /*onDayOfMonth*/,
17721  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17722  480 /*atTimeCode (7200/15)*/,
17723  0 /*deltaMinutes*/,
17724  0 /*letterIndex ("")*/,
17725  },
17726 
17727 };
17728 
17729 const complete::ZonePolicy kZonePolicyMorocco ACE_TIME_PROGMEM = {
17730  kZoneRulesMorocco /*rules*/,
17731  184 /*numRules*/,
17732 };
17733 
17734 //---------------------------------------------------------------------------
17735 // Policy name: NBorneo
17736 // Rules: 3
17737 //---------------------------------------------------------------------------
17738 
17739 static const complete::ZoneRule kZoneRulesNBorneo[] ACE_TIME_PROGMEM = {
17740  // Anchor: Rule NBorneo 1935 1941 - Dec 14 0:00 0 -
17741  {
17742  -32767 /*fromYear*/,
17743  -32767 /*toYear*/,
17744  1 /*inMonth*/,
17745  0 /*onDayOfWeek*/,
17746  1 /*onDayOfMonth*/,
17747  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17748  0 /*atTimeCode (0/15)*/,
17749  0 /*deltaMinutes*/,
17750  0 /*letterIndex ("")*/,
17751  },
17752  // Rule NBorneo 1935 1941 - Sep 14 0:00 0:20 -
17753  {
17754  1935 /*fromYear*/,
17755  1941 /*toYear*/,
17756  9 /*inMonth*/,
17757  0 /*onDayOfWeek*/,
17758  14 /*onDayOfMonth*/,
17759  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17760  0 /*atTimeCode (0/15)*/,
17761  20 /*deltaMinutes*/,
17762  0 /*letterIndex ("")*/,
17763  },
17764  // Rule NBorneo 1935 1941 - Dec 14 0:00 0 -
17765  {
17766  1935 /*fromYear*/,
17767  1941 /*toYear*/,
17768  12 /*inMonth*/,
17769  0 /*onDayOfWeek*/,
17770  14 /*onDayOfMonth*/,
17771  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17772  0 /*atTimeCode (0/15)*/,
17773  0 /*deltaMinutes*/,
17774  0 /*letterIndex ("")*/,
17775  },
17776 
17777 };
17778 
17779 const complete::ZonePolicy kZonePolicyNBorneo ACE_TIME_PROGMEM = {
17780  kZoneRulesNBorneo /*rules*/,
17781  3 /*numRules*/,
17782 };
17783 
17784 //---------------------------------------------------------------------------
17785 // Policy name: NC
17786 // Rules: 5
17787 //---------------------------------------------------------------------------
17788 
17789 static const complete::ZoneRule kZoneRulesNC[] ACE_TIME_PROGMEM = {
17790  // Anchor: Rule NC 1978 1979 - Feb 27 0:00 0 -
17791  {
17792  -32767 /*fromYear*/,
17793  -32767 /*toYear*/,
17794  1 /*inMonth*/,
17795  0 /*onDayOfWeek*/,
17796  1 /*onDayOfMonth*/,
17797  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17798  0 /*atTimeCode (0/15)*/,
17799  0 /*deltaMinutes*/,
17800  0 /*letterIndex ("")*/,
17801  },
17802  // Rule NC 1977 1978 - Dec Sun>=1 0:00 1:00 -
17803  {
17804  1977 /*fromYear*/,
17805  1978 /*toYear*/,
17806  12 /*inMonth*/,
17807  7 /*onDayOfWeek*/,
17808  1 /*onDayOfMonth*/,
17809  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17810  0 /*atTimeCode (0/15)*/,
17811  60 /*deltaMinutes*/,
17812  0 /*letterIndex ("")*/,
17813  },
17814  // Rule NC 1978 1979 - Feb 27 0:00 0 -
17815  {
17816  1978 /*fromYear*/,
17817  1979 /*toYear*/,
17818  2 /*inMonth*/,
17819  0 /*onDayOfWeek*/,
17820  27 /*onDayOfMonth*/,
17821  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17822  0 /*atTimeCode (0/15)*/,
17823  0 /*deltaMinutes*/,
17824  0 /*letterIndex ("")*/,
17825  },
17826  // Rule NC 1996 only - Dec 1 2:00s 1:00 -
17827  {
17828  1996 /*fromYear*/,
17829  1996 /*toYear*/,
17830  12 /*inMonth*/,
17831  0 /*onDayOfWeek*/,
17832  1 /*onDayOfMonth*/,
17833  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
17834  480 /*atTimeCode (7200/15)*/,
17835  60 /*deltaMinutes*/,
17836  0 /*letterIndex ("")*/,
17837  },
17838  // Rule NC 1997 only - Mar 2 2:00s 0 -
17839  {
17840  1997 /*fromYear*/,
17841  1997 /*toYear*/,
17842  3 /*inMonth*/,
17843  0 /*onDayOfWeek*/,
17844  2 /*onDayOfMonth*/,
17845  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
17846  480 /*atTimeCode (7200/15)*/,
17847  0 /*deltaMinutes*/,
17848  0 /*letterIndex ("")*/,
17849  },
17850 
17851 };
17852 
17853 const complete::ZonePolicy kZonePolicyNC ACE_TIME_PROGMEM = {
17854  kZoneRulesNC /*rules*/,
17855  5 /*numRules*/,
17856 };
17857 
17858 //---------------------------------------------------------------------------
17859 // Policy name: NT_YK
17860 // Rules: 11
17861 //---------------------------------------------------------------------------
17862 
17863 static const complete::ZoneRule kZoneRulesNT_YK[] ACE_TIME_PROGMEM = {
17864  // Anchor: Rule NT_YK 1918 only - Oct 27 2:00 0 S
17865  {
17866  -32767 /*fromYear*/,
17867  -32767 /*toYear*/,
17868  1 /*inMonth*/,
17869  0 /*onDayOfWeek*/,
17870  1 /*onDayOfMonth*/,
17871  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17872  0 /*atTimeCode (0/15)*/,
17873  0 /*deltaMinutes*/,
17874  25 /*letterIndex ("S")*/,
17875  },
17876  // Rule NT_YK 1918 only - Apr 14 2:00 1:00 D
17877  {
17878  1918 /*fromYear*/,
17879  1918 /*toYear*/,
17880  4 /*inMonth*/,
17881  0 /*onDayOfWeek*/,
17882  14 /*onDayOfMonth*/,
17883  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17884  480 /*atTimeCode (7200/15)*/,
17885  60 /*deltaMinutes*/,
17886  13 /*letterIndex ("D")*/,
17887  },
17888  // Rule NT_YK 1918 only - Oct 27 2:00 0 S
17889  {
17890  1918 /*fromYear*/,
17891  1918 /*toYear*/,
17892  10 /*inMonth*/,
17893  0 /*onDayOfWeek*/,
17894  27 /*onDayOfMonth*/,
17895  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17896  480 /*atTimeCode (7200/15)*/,
17897  0 /*deltaMinutes*/,
17898  25 /*letterIndex ("S")*/,
17899  },
17900  // Rule NT_YK 1919 only - May 25 2:00 1:00 D
17901  {
17902  1919 /*fromYear*/,
17903  1919 /*toYear*/,
17904  5 /*inMonth*/,
17905  0 /*onDayOfWeek*/,
17906  25 /*onDayOfMonth*/,
17907  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17908  480 /*atTimeCode (7200/15)*/,
17909  60 /*deltaMinutes*/,
17910  13 /*letterIndex ("D")*/,
17911  },
17912  // Rule NT_YK 1919 only - Nov 1 0:00 0 S
17913  {
17914  1919 /*fromYear*/,
17915  1919 /*toYear*/,
17916  11 /*inMonth*/,
17917  0 /*onDayOfWeek*/,
17918  1 /*onDayOfMonth*/,
17919  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17920  0 /*atTimeCode (0/15)*/,
17921  0 /*deltaMinutes*/,
17922  25 /*letterIndex ("S")*/,
17923  },
17924  // Rule NT_YK 1942 only - Feb 9 2:00 1:00 W
17925  {
17926  1942 /*fromYear*/,
17927  1942 /*toYear*/,
17928  2 /*inMonth*/,
17929  0 /*onDayOfWeek*/,
17930  9 /*onDayOfMonth*/,
17931  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17932  480 /*atTimeCode (7200/15)*/,
17933  60 /*deltaMinutes*/,
17934  26 /*letterIndex ("W")*/,
17935  },
17936  // Rule NT_YK 1945 only - Aug 14 23:00u 1:00 P
17937  {
17938  1945 /*fromYear*/,
17939  1945 /*toYear*/,
17940  8 /*inMonth*/,
17941  0 /*onDayOfWeek*/,
17942  14 /*onDayOfMonth*/,
17943  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
17944  5520 /*atTimeCode (82800/15)*/,
17945  60 /*deltaMinutes*/,
17946  24 /*letterIndex ("P")*/,
17947  },
17948  // Rule NT_YK 1945 only - Sep 30 2:00 0 S
17949  {
17950  1945 /*fromYear*/,
17951  1945 /*toYear*/,
17952  9 /*inMonth*/,
17953  0 /*onDayOfWeek*/,
17954  30 /*onDayOfMonth*/,
17955  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17956  480 /*atTimeCode (7200/15)*/,
17957  0 /*deltaMinutes*/,
17958  25 /*letterIndex ("S")*/,
17959  },
17960  // Rule NT_YK 1972 1986 - Apr lastSun 2:00 1:00 D
17961  {
17962  1972 /*fromYear*/,
17963  1986 /*toYear*/,
17964  4 /*inMonth*/,
17965  7 /*onDayOfWeek*/,
17966  0 /*onDayOfMonth*/,
17967  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17968  480 /*atTimeCode (7200/15)*/,
17969  60 /*deltaMinutes*/,
17970  13 /*letterIndex ("D")*/,
17971  },
17972  // Rule NT_YK 1972 2006 - Oct lastSun 2:00 0 S
17973  {
17974  1972 /*fromYear*/,
17975  2006 /*toYear*/,
17976  10 /*inMonth*/,
17977  7 /*onDayOfWeek*/,
17978  0 /*onDayOfMonth*/,
17979  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17980  480 /*atTimeCode (7200/15)*/,
17981  0 /*deltaMinutes*/,
17982  25 /*letterIndex ("S")*/,
17983  },
17984  // Rule NT_YK 1987 2006 - Apr Sun>=1 2:00 1:00 D
17985  {
17986  1987 /*fromYear*/,
17987  2006 /*toYear*/,
17988  4 /*inMonth*/,
17989  7 /*onDayOfWeek*/,
17990  1 /*onDayOfMonth*/,
17991  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
17992  480 /*atTimeCode (7200/15)*/,
17993  60 /*deltaMinutes*/,
17994  13 /*letterIndex ("D")*/,
17995  },
17996 
17997 };
17998 
17999 const complete::ZonePolicy kZonePolicyNT_YK ACE_TIME_PROGMEM = {
18000  kZoneRulesNT_YK /*rules*/,
18001  11 /*numRules*/,
18002 };
18003 
18004 //---------------------------------------------------------------------------
18005 // Policy name: NYC
18006 // Rules: 6
18007 //---------------------------------------------------------------------------
18008 
18009 static const complete::ZoneRule kZoneRulesNYC[] ACE_TIME_PROGMEM = {
18010  // Anchor: Rule NYC 1920 only - Oct lastSun 2:00 0 S
18011  {
18012  -32767 /*fromYear*/,
18013  -32767 /*toYear*/,
18014  1 /*inMonth*/,
18015  0 /*onDayOfWeek*/,
18016  1 /*onDayOfMonth*/,
18017  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18018  0 /*atTimeCode (0/15)*/,
18019  0 /*deltaMinutes*/,
18020  25 /*letterIndex ("S")*/,
18021  },
18022  // Rule NYC 1920 only - Mar lastSun 2:00 1:00 D
18023  {
18024  1920 /*fromYear*/,
18025  1920 /*toYear*/,
18026  3 /*inMonth*/,
18027  7 /*onDayOfWeek*/,
18028  0 /*onDayOfMonth*/,
18029  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18030  480 /*atTimeCode (7200/15)*/,
18031  60 /*deltaMinutes*/,
18032  13 /*letterIndex ("D")*/,
18033  },
18034  // Rule NYC 1920 only - Oct lastSun 2:00 0 S
18035  {
18036  1920 /*fromYear*/,
18037  1920 /*toYear*/,
18038  10 /*inMonth*/,
18039  7 /*onDayOfWeek*/,
18040  0 /*onDayOfMonth*/,
18041  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18042  480 /*atTimeCode (7200/15)*/,
18043  0 /*deltaMinutes*/,
18044  25 /*letterIndex ("S")*/,
18045  },
18046  // Rule NYC 1921 1966 - Apr lastSun 2:00 1:00 D
18047  {
18048  1921 /*fromYear*/,
18049  1966 /*toYear*/,
18050  4 /*inMonth*/,
18051  7 /*onDayOfWeek*/,
18052  0 /*onDayOfMonth*/,
18053  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18054  480 /*atTimeCode (7200/15)*/,
18055  60 /*deltaMinutes*/,
18056  13 /*letterIndex ("D")*/,
18057  },
18058  // Rule NYC 1921 1954 - Sep lastSun 2:00 0 S
18059  {
18060  1921 /*fromYear*/,
18061  1954 /*toYear*/,
18062  9 /*inMonth*/,
18063  7 /*onDayOfWeek*/,
18064  0 /*onDayOfMonth*/,
18065  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18066  480 /*atTimeCode (7200/15)*/,
18067  0 /*deltaMinutes*/,
18068  25 /*letterIndex ("S")*/,
18069  },
18070  // Rule NYC 1955 1966 - Oct lastSun 2:00 0 S
18071  {
18072  1955 /*fromYear*/,
18073  1966 /*toYear*/,
18074  10 /*inMonth*/,
18075  7 /*onDayOfWeek*/,
18076  0 /*onDayOfMonth*/,
18077  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18078  480 /*atTimeCode (7200/15)*/,
18079  0 /*deltaMinutes*/,
18080  25 /*letterIndex ("S")*/,
18081  },
18082 
18083 };
18084 
18085 const complete::ZonePolicy kZonePolicyNYC ACE_TIME_PROGMEM = {
18086  kZoneRulesNYC /*rules*/,
18087  6 /*numRules*/,
18088 };
18089 
18090 //---------------------------------------------------------------------------
18091 // Policy name: NZ
18092 // Rules: 17
18093 //---------------------------------------------------------------------------
18094 
18095 static const complete::ZoneRule kZoneRulesNZ[] ACE_TIME_PROGMEM = {
18096  // Anchor: Rule NZ 1928 only - Mar 4 2:00 0 M
18097  {
18098  -32767 /*fromYear*/,
18099  -32767 /*toYear*/,
18100  1 /*inMonth*/,
18101  0 /*onDayOfWeek*/,
18102  1 /*onDayOfMonth*/,
18103  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18104  0 /*atTimeCode (0/15)*/,
18105  0 /*deltaMinutes*/,
18106  18 /*letterIndex ("M")*/,
18107  },
18108  // Rule NZ 1927 only - Nov 6 2:00 1:00 S
18109  {
18110  1927 /*fromYear*/,
18111  1927 /*toYear*/,
18112  11 /*inMonth*/,
18113  0 /*onDayOfWeek*/,
18114  6 /*onDayOfMonth*/,
18115  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18116  480 /*atTimeCode (7200/15)*/,
18117  60 /*deltaMinutes*/,
18118  25 /*letterIndex ("S")*/,
18119  },
18120  // Rule NZ 1928 only - Mar 4 2:00 0 M
18121  {
18122  1928 /*fromYear*/,
18123  1928 /*toYear*/,
18124  3 /*inMonth*/,
18125  0 /*onDayOfWeek*/,
18126  4 /*onDayOfMonth*/,
18127  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18128  480 /*atTimeCode (7200/15)*/,
18129  0 /*deltaMinutes*/,
18130  18 /*letterIndex ("M")*/,
18131  },
18132  // Rule NZ 1928 1933 - Oct Sun>=8 2:00 0:30 S
18133  {
18134  1928 /*fromYear*/,
18135  1933 /*toYear*/,
18136  10 /*inMonth*/,
18137  7 /*onDayOfWeek*/,
18138  8 /*onDayOfMonth*/,
18139  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18140  480 /*atTimeCode (7200/15)*/,
18141  30 /*deltaMinutes*/,
18142  25 /*letterIndex ("S")*/,
18143  },
18144  // Rule NZ 1929 1933 - Mar Sun>=15 2:00 0 M
18145  {
18146  1929 /*fromYear*/,
18147  1933 /*toYear*/,
18148  3 /*inMonth*/,
18149  7 /*onDayOfWeek*/,
18150  15 /*onDayOfMonth*/,
18151  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18152  480 /*atTimeCode (7200/15)*/,
18153  0 /*deltaMinutes*/,
18154  18 /*letterIndex ("M")*/,
18155  },
18156  // Rule NZ 1934 1940 - Apr lastSun 2:00 0 M
18157  {
18158  1934 /*fromYear*/,
18159  1940 /*toYear*/,
18160  4 /*inMonth*/,
18161  7 /*onDayOfWeek*/,
18162  0 /*onDayOfMonth*/,
18163  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18164  480 /*atTimeCode (7200/15)*/,
18165  0 /*deltaMinutes*/,
18166  18 /*letterIndex ("M")*/,
18167  },
18168  // Rule NZ 1934 1940 - Sep lastSun 2:00 0:30 S
18169  {
18170  1934 /*fromYear*/,
18171  1940 /*toYear*/,
18172  9 /*inMonth*/,
18173  7 /*onDayOfWeek*/,
18174  0 /*onDayOfMonth*/,
18175  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18176  480 /*atTimeCode (7200/15)*/,
18177  30 /*deltaMinutes*/,
18178  25 /*letterIndex ("S")*/,
18179  },
18180  // Rule NZ 1946 only - Jan 1 0:00 0 S
18181  {
18182  1946 /*fromYear*/,
18183  1946 /*toYear*/,
18184  1 /*inMonth*/,
18185  0 /*onDayOfWeek*/,
18186  1 /*onDayOfMonth*/,
18187  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18188  0 /*atTimeCode (0/15)*/,
18189  0 /*deltaMinutes*/,
18190  25 /*letterIndex ("S")*/,
18191  },
18192  // Rule NZ 1974 only - Nov Sun>=1 2:00s 1:00 D
18193  {
18194  1974 /*fromYear*/,
18195  1974 /*toYear*/,
18196  11 /*inMonth*/,
18197  7 /*onDayOfWeek*/,
18198  1 /*onDayOfMonth*/,
18199  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
18200  480 /*atTimeCode (7200/15)*/,
18201  60 /*deltaMinutes*/,
18202  13 /*letterIndex ("D")*/,
18203  },
18204  // Rule NZ 1975 only - Feb lastSun 2:00s 0 S
18205  {
18206  1975 /*fromYear*/,
18207  1975 /*toYear*/,
18208  2 /*inMonth*/,
18209  7 /*onDayOfWeek*/,
18210  0 /*onDayOfMonth*/,
18211  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
18212  480 /*atTimeCode (7200/15)*/,
18213  0 /*deltaMinutes*/,
18214  25 /*letterIndex ("S")*/,
18215  },
18216  // Rule NZ 1975 1988 - Oct lastSun 2:00s 1:00 D
18217  {
18218  1975 /*fromYear*/,
18219  1988 /*toYear*/,
18220  10 /*inMonth*/,
18221  7 /*onDayOfWeek*/,
18222  0 /*onDayOfMonth*/,
18223  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
18224  480 /*atTimeCode (7200/15)*/,
18225  60 /*deltaMinutes*/,
18226  13 /*letterIndex ("D")*/,
18227  },
18228  // Rule NZ 1976 1989 - Mar Sun>=1 2:00s 0 S
18229  {
18230  1976 /*fromYear*/,
18231  1989 /*toYear*/,
18232  3 /*inMonth*/,
18233  7 /*onDayOfWeek*/,
18234  1 /*onDayOfMonth*/,
18235  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
18236  480 /*atTimeCode (7200/15)*/,
18237  0 /*deltaMinutes*/,
18238  25 /*letterIndex ("S")*/,
18239  },
18240  // Rule NZ 1989 only - Oct Sun>=8 2:00s 1:00 D
18241  {
18242  1989 /*fromYear*/,
18243  1989 /*toYear*/,
18244  10 /*inMonth*/,
18245  7 /*onDayOfWeek*/,
18246  8 /*onDayOfMonth*/,
18247  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
18248  480 /*atTimeCode (7200/15)*/,
18249  60 /*deltaMinutes*/,
18250  13 /*letterIndex ("D")*/,
18251  },
18252  // Rule NZ 1990 2006 - Oct Sun>=1 2:00s 1:00 D
18253  {
18254  1990 /*fromYear*/,
18255  2006 /*toYear*/,
18256  10 /*inMonth*/,
18257  7 /*onDayOfWeek*/,
18258  1 /*onDayOfMonth*/,
18259  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
18260  480 /*atTimeCode (7200/15)*/,
18261  60 /*deltaMinutes*/,
18262  13 /*letterIndex ("D")*/,
18263  },
18264  // Rule NZ 1990 2007 - Mar Sun>=15 2:00s 0 S
18265  {
18266  1990 /*fromYear*/,
18267  2007 /*toYear*/,
18268  3 /*inMonth*/,
18269  7 /*onDayOfWeek*/,
18270  15 /*onDayOfMonth*/,
18271  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
18272  480 /*atTimeCode (7200/15)*/,
18273  0 /*deltaMinutes*/,
18274  25 /*letterIndex ("S")*/,
18275  },
18276  // Rule NZ 2007 max - Sep lastSun 2:00s 1:00 D
18277  {
18278  2007 /*fromYear*/,
18279  32766 /*toYear*/,
18280  9 /*inMonth*/,
18281  7 /*onDayOfWeek*/,
18282  0 /*onDayOfMonth*/,
18283  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
18284  480 /*atTimeCode (7200/15)*/,
18285  60 /*deltaMinutes*/,
18286  13 /*letterIndex ("D")*/,
18287  },
18288  // Rule NZ 2008 max - Apr Sun>=1 2:00s 0 S
18289  {
18290  2008 /*fromYear*/,
18291  32766 /*toYear*/,
18292  4 /*inMonth*/,
18293  7 /*onDayOfWeek*/,
18294  1 /*onDayOfMonth*/,
18295  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
18296  480 /*atTimeCode (7200/15)*/,
18297  0 /*deltaMinutes*/,
18298  25 /*letterIndex ("S")*/,
18299  },
18300 
18301 };
18302 
18303 const complete::ZonePolicy kZonePolicyNZ ACE_TIME_PROGMEM = {
18304  kZoneRulesNZ /*rules*/,
18305  17 /*numRules*/,
18306 };
18307 
18308 //---------------------------------------------------------------------------
18309 // Policy name: Namibia
18310 // Rules: 4
18311 //---------------------------------------------------------------------------
18312 
18313 static const complete::ZoneRule kZoneRulesNamibia[] ACE_TIME_PROGMEM = {
18314  // Anchor: Rule Namibia 1994 2017 - Sep Sun>=1 2:00 0 CAT
18315  {
18316  -32767 /*fromYear*/,
18317  -32767 /*toYear*/,
18318  1 /*inMonth*/,
18319  0 /*onDayOfWeek*/,
18320  1 /*onDayOfMonth*/,
18321  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18322  0 /*atTimeCode (0/15)*/,
18323  0 /*deltaMinutes*/,
18324  8 /*letterIndex ("CAT")*/,
18325  },
18326  // Rule Namibia 1994 only - Mar 21 0:00 -1:00 WAT
18327  {
18328  1994 /*fromYear*/,
18329  1994 /*toYear*/,
18330  3 /*inMonth*/,
18331  0 /*onDayOfWeek*/,
18332  21 /*onDayOfMonth*/,
18333  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18334  0 /*atTimeCode (0/15)*/,
18335  -60 /*deltaMinutes*/,
18336  27 /*letterIndex ("WAT")*/,
18337  },
18338  // Rule Namibia 1994 2017 - Sep Sun>=1 2:00 0 CAT
18339  {
18340  1994 /*fromYear*/,
18341  2017 /*toYear*/,
18342  9 /*inMonth*/,
18343  7 /*onDayOfWeek*/,
18344  1 /*onDayOfMonth*/,
18345  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18346  480 /*atTimeCode (7200/15)*/,
18347  0 /*deltaMinutes*/,
18348  8 /*letterIndex ("CAT")*/,
18349  },
18350  // Rule Namibia 1995 2017 - Apr Sun>=1 2:00 -1:00 WAT
18351  {
18352  1995 /*fromYear*/,
18353  2017 /*toYear*/,
18354  4 /*inMonth*/,
18355  7 /*onDayOfWeek*/,
18356  1 /*onDayOfMonth*/,
18357  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18358  480 /*atTimeCode (7200/15)*/,
18359  -60 /*deltaMinutes*/,
18360  27 /*letterIndex ("WAT")*/,
18361  },
18362 
18363 };
18364 
18365 const complete::ZonePolicy kZonePolicyNamibia ACE_TIME_PROGMEM = {
18366  kZoneRulesNamibia /*rules*/,
18367  4 /*numRules*/,
18368 };
18369 
18370 //---------------------------------------------------------------------------
18371 // Policy name: Nic
18372 // Rules: 7
18373 //---------------------------------------------------------------------------
18374 
18375 static const complete::ZoneRule kZoneRulesNic[] ACE_TIME_PROGMEM = {
18376  // Anchor: Rule Nic 1979 1980 - Jun Mon>=23 0:00 0 S
18377  {
18378  -32767 /*fromYear*/,
18379  -32767 /*toYear*/,
18380  1 /*inMonth*/,
18381  0 /*onDayOfWeek*/,
18382  1 /*onDayOfMonth*/,
18383  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18384  0 /*atTimeCode (0/15)*/,
18385  0 /*deltaMinutes*/,
18386  25 /*letterIndex ("S")*/,
18387  },
18388  // Rule Nic 1979 1980 - Mar Sun>=16 0:00 1:00 D
18389  {
18390  1979 /*fromYear*/,
18391  1980 /*toYear*/,
18392  3 /*inMonth*/,
18393  7 /*onDayOfWeek*/,
18394  16 /*onDayOfMonth*/,
18395  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18396  0 /*atTimeCode (0/15)*/,
18397  60 /*deltaMinutes*/,
18398  13 /*letterIndex ("D")*/,
18399  },
18400  // Rule Nic 1979 1980 - Jun Mon>=23 0:00 0 S
18401  {
18402  1979 /*fromYear*/,
18403  1980 /*toYear*/,
18404  6 /*inMonth*/,
18405  1 /*onDayOfWeek*/,
18406  23 /*onDayOfMonth*/,
18407  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18408  0 /*atTimeCode (0/15)*/,
18409  0 /*deltaMinutes*/,
18410  25 /*letterIndex ("S")*/,
18411  },
18412  // Rule Nic 2005 only - Apr 10 0:00 1:00 D
18413  {
18414  2005 /*fromYear*/,
18415  2005 /*toYear*/,
18416  4 /*inMonth*/,
18417  0 /*onDayOfWeek*/,
18418  10 /*onDayOfMonth*/,
18419  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18420  0 /*atTimeCode (0/15)*/,
18421  60 /*deltaMinutes*/,
18422  13 /*letterIndex ("D")*/,
18423  },
18424  // Rule Nic 2005 only - Oct Sun>=1 0:00 0 S
18425  {
18426  2005 /*fromYear*/,
18427  2005 /*toYear*/,
18428  10 /*inMonth*/,
18429  7 /*onDayOfWeek*/,
18430  1 /*onDayOfMonth*/,
18431  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18432  0 /*atTimeCode (0/15)*/,
18433  0 /*deltaMinutes*/,
18434  25 /*letterIndex ("S")*/,
18435  },
18436  // Rule Nic 2006 only - Apr 30 2:00 1:00 D
18437  {
18438  2006 /*fromYear*/,
18439  2006 /*toYear*/,
18440  4 /*inMonth*/,
18441  0 /*onDayOfWeek*/,
18442  30 /*onDayOfMonth*/,
18443  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18444  480 /*atTimeCode (7200/15)*/,
18445  60 /*deltaMinutes*/,
18446  13 /*letterIndex ("D")*/,
18447  },
18448  // Rule Nic 2006 only - Oct Sun>=1 1:00 0 S
18449  {
18450  2006 /*fromYear*/,
18451  2006 /*toYear*/,
18452  10 /*inMonth*/,
18453  7 /*onDayOfWeek*/,
18454  1 /*onDayOfMonth*/,
18455  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18456  240 /*atTimeCode (3600/15)*/,
18457  0 /*deltaMinutes*/,
18458  25 /*letterIndex ("S")*/,
18459  },
18460 
18461 };
18462 
18463 const complete::ZonePolicy kZonePolicyNic ACE_TIME_PROGMEM = {
18464  kZoneRulesNic /*rules*/,
18465  7 /*numRules*/,
18466 };
18467 
18468 //---------------------------------------------------------------------------
18469 // Policy name: PRC
18470 // Rules: 4
18471 //---------------------------------------------------------------------------
18472 
18473 static const complete::ZoneRule kZoneRulesPRC[] ACE_TIME_PROGMEM = {
18474  // Anchor: Rule PRC 1986 1991 - Sep Sun>=11 2:00 0 S
18475  {
18476  -32767 /*fromYear*/,
18477  -32767 /*toYear*/,
18478  1 /*inMonth*/,
18479  0 /*onDayOfWeek*/,
18480  1 /*onDayOfMonth*/,
18481  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18482  0 /*atTimeCode (0/15)*/,
18483  0 /*deltaMinutes*/,
18484  25 /*letterIndex ("S")*/,
18485  },
18486  // Rule PRC 1986 only - May 4 2:00 1:00 D
18487  {
18488  1986 /*fromYear*/,
18489  1986 /*toYear*/,
18490  5 /*inMonth*/,
18491  0 /*onDayOfWeek*/,
18492  4 /*onDayOfMonth*/,
18493  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18494  480 /*atTimeCode (7200/15)*/,
18495  60 /*deltaMinutes*/,
18496  13 /*letterIndex ("D")*/,
18497  },
18498  // Rule PRC 1986 1991 - Sep Sun>=11 2:00 0 S
18499  {
18500  1986 /*fromYear*/,
18501  1991 /*toYear*/,
18502  9 /*inMonth*/,
18503  7 /*onDayOfWeek*/,
18504  11 /*onDayOfMonth*/,
18505  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18506  480 /*atTimeCode (7200/15)*/,
18507  0 /*deltaMinutes*/,
18508  25 /*letterIndex ("S")*/,
18509  },
18510  // Rule PRC 1987 1991 - Apr Sun>=11 2:00 1:00 D
18511  {
18512  1987 /*fromYear*/,
18513  1991 /*toYear*/,
18514  4 /*inMonth*/,
18515  7 /*onDayOfWeek*/,
18516  11 /*onDayOfMonth*/,
18517  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18518  480 /*atTimeCode (7200/15)*/,
18519  60 /*deltaMinutes*/,
18520  13 /*letterIndex ("D")*/,
18521  },
18522 
18523 };
18524 
18525 const complete::ZonePolicy kZonePolicyPRC ACE_TIME_PROGMEM = {
18526  kZoneRulesPRC /*rules*/,
18527  4 /*numRules*/,
18528 };
18529 
18530 //---------------------------------------------------------------------------
18531 // Policy name: Pakistan
18532 // Rules: 6
18533 //---------------------------------------------------------------------------
18534 
18535 static const complete::ZoneRule kZoneRulesPakistan[] ACE_TIME_PROGMEM = {
18536  // Anchor: Rule Pakistan 2002 only - Oct Sun>=2 0:00 0 -
18537  {
18538  -32767 /*fromYear*/,
18539  -32767 /*toYear*/,
18540  1 /*inMonth*/,
18541  0 /*onDayOfWeek*/,
18542  1 /*onDayOfMonth*/,
18543  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18544  0 /*atTimeCode (0/15)*/,
18545  0 /*deltaMinutes*/,
18546  0 /*letterIndex ("")*/,
18547  },
18548  // Rule Pakistan 2002 only - Apr Sun>=2 0:00 1:00 S
18549  {
18550  2002 /*fromYear*/,
18551  2002 /*toYear*/,
18552  4 /*inMonth*/,
18553  7 /*onDayOfWeek*/,
18554  2 /*onDayOfMonth*/,
18555  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18556  0 /*atTimeCode (0/15)*/,
18557  60 /*deltaMinutes*/,
18558  25 /*letterIndex ("S")*/,
18559  },
18560  // Rule Pakistan 2002 only - Oct Sun>=2 0:00 0 -
18561  {
18562  2002 /*fromYear*/,
18563  2002 /*toYear*/,
18564  10 /*inMonth*/,
18565  7 /*onDayOfWeek*/,
18566  2 /*onDayOfMonth*/,
18567  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18568  0 /*atTimeCode (0/15)*/,
18569  0 /*deltaMinutes*/,
18570  0 /*letterIndex ("")*/,
18571  },
18572  // Rule Pakistan 2008 only - Jun 1 0:00 1:00 S
18573  {
18574  2008 /*fromYear*/,
18575  2008 /*toYear*/,
18576  6 /*inMonth*/,
18577  0 /*onDayOfWeek*/,
18578  1 /*onDayOfMonth*/,
18579  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18580  0 /*atTimeCode (0/15)*/,
18581  60 /*deltaMinutes*/,
18582  25 /*letterIndex ("S")*/,
18583  },
18584  // Rule Pakistan 2008 2009 - Nov 1 0:00 0 -
18585  {
18586  2008 /*fromYear*/,
18587  2009 /*toYear*/,
18588  11 /*inMonth*/,
18589  0 /*onDayOfWeek*/,
18590  1 /*onDayOfMonth*/,
18591  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18592  0 /*atTimeCode (0/15)*/,
18593  0 /*deltaMinutes*/,
18594  0 /*letterIndex ("")*/,
18595  },
18596  // Rule Pakistan 2009 only - Apr 15 0:00 1:00 S
18597  {
18598  2009 /*fromYear*/,
18599  2009 /*toYear*/,
18600  4 /*inMonth*/,
18601  0 /*onDayOfWeek*/,
18602  15 /*onDayOfMonth*/,
18603  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18604  0 /*atTimeCode (0/15)*/,
18605  60 /*deltaMinutes*/,
18606  25 /*letterIndex ("S")*/,
18607  },
18608 
18609 };
18610 
18611 const complete::ZonePolicy kZonePolicyPakistan ACE_TIME_PROGMEM = {
18612  kZoneRulesPakistan /*rules*/,
18613  6 /*numRules*/,
18614 };
18615 
18616 //---------------------------------------------------------------------------
18617 // Policy name: Palestine
18618 // Rules: 111
18619 //---------------------------------------------------------------------------
18620 
18621 static const complete::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = {
18622  // Anchor: Rule Palestine 1999 2003 - Oct Fri>=15 0:00 0 -
18623  {
18624  -32767 /*fromYear*/,
18625  -32767 /*toYear*/,
18626  1 /*inMonth*/,
18627  0 /*onDayOfWeek*/,
18628  1 /*onDayOfMonth*/,
18629  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18630  0 /*atTimeCode (0/15)*/,
18631  0 /*deltaMinutes*/,
18632  0 /*letterIndex ("")*/,
18633  },
18634  // Rule Palestine 1999 2005 - Apr Fri>=15 0:00 1:00 S
18635  {
18636  1999 /*fromYear*/,
18637  2005 /*toYear*/,
18638  4 /*inMonth*/,
18639  5 /*onDayOfWeek*/,
18640  15 /*onDayOfMonth*/,
18641  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18642  0 /*atTimeCode (0/15)*/,
18643  60 /*deltaMinutes*/,
18644  25 /*letterIndex ("S")*/,
18645  },
18646  // Rule Palestine 1999 2003 - Oct Fri>=15 0:00 0 -
18647  {
18648  1999 /*fromYear*/,
18649  2003 /*toYear*/,
18650  10 /*inMonth*/,
18651  5 /*onDayOfWeek*/,
18652  15 /*onDayOfMonth*/,
18653  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18654  0 /*atTimeCode (0/15)*/,
18655  0 /*deltaMinutes*/,
18656  0 /*letterIndex ("")*/,
18657  },
18658  // Rule Palestine 2004 only - Oct 1 1:00 0 -
18659  {
18660  2004 /*fromYear*/,
18661  2004 /*toYear*/,
18662  10 /*inMonth*/,
18663  0 /*onDayOfWeek*/,
18664  1 /*onDayOfMonth*/,
18665  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18666  240 /*atTimeCode (3600/15)*/,
18667  0 /*deltaMinutes*/,
18668  0 /*letterIndex ("")*/,
18669  },
18670  // Rule Palestine 2005 only - Oct 4 2:00 0 -
18671  {
18672  2005 /*fromYear*/,
18673  2005 /*toYear*/,
18674  10 /*inMonth*/,
18675  0 /*onDayOfWeek*/,
18676  4 /*onDayOfMonth*/,
18677  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18678  480 /*atTimeCode (7200/15)*/,
18679  0 /*deltaMinutes*/,
18680  0 /*letterIndex ("")*/,
18681  },
18682  // Rule Palestine 2006 2007 - Apr 1 0:00 1:00 S
18683  {
18684  2006 /*fromYear*/,
18685  2007 /*toYear*/,
18686  4 /*inMonth*/,
18687  0 /*onDayOfWeek*/,
18688  1 /*onDayOfMonth*/,
18689  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18690  0 /*atTimeCode (0/15)*/,
18691  60 /*deltaMinutes*/,
18692  25 /*letterIndex ("S")*/,
18693  },
18694  // Rule Palestine 2006 only - Sep 22 0:00 0 -
18695  {
18696  2006 /*fromYear*/,
18697  2006 /*toYear*/,
18698  9 /*inMonth*/,
18699  0 /*onDayOfWeek*/,
18700  22 /*onDayOfMonth*/,
18701  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18702  0 /*atTimeCode (0/15)*/,
18703  0 /*deltaMinutes*/,
18704  0 /*letterIndex ("")*/,
18705  },
18706  // Rule Palestine 2007 only - Sep 13 2:00 0 -
18707  {
18708  2007 /*fromYear*/,
18709  2007 /*toYear*/,
18710  9 /*inMonth*/,
18711  0 /*onDayOfWeek*/,
18712  13 /*onDayOfMonth*/,
18713  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18714  480 /*atTimeCode (7200/15)*/,
18715  0 /*deltaMinutes*/,
18716  0 /*letterIndex ("")*/,
18717  },
18718  // Rule Palestine 2008 2009 - Mar lastFri 0:00 1:00 S
18719  {
18720  2008 /*fromYear*/,
18721  2009 /*toYear*/,
18722  3 /*inMonth*/,
18723  5 /*onDayOfWeek*/,
18724  0 /*onDayOfMonth*/,
18725  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18726  0 /*atTimeCode (0/15)*/,
18727  60 /*deltaMinutes*/,
18728  25 /*letterIndex ("S")*/,
18729  },
18730  // Rule Palestine 2008 only - Sep 1 0:00 0 -
18731  {
18732  2008 /*fromYear*/,
18733  2008 /*toYear*/,
18734  9 /*inMonth*/,
18735  0 /*onDayOfWeek*/,
18736  1 /*onDayOfMonth*/,
18737  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18738  0 /*atTimeCode (0/15)*/,
18739  0 /*deltaMinutes*/,
18740  0 /*letterIndex ("")*/,
18741  },
18742  // Rule Palestine 2009 only - Sep 4 1:00 0 -
18743  {
18744  2009 /*fromYear*/,
18745  2009 /*toYear*/,
18746  9 /*inMonth*/,
18747  0 /*onDayOfWeek*/,
18748  4 /*onDayOfMonth*/,
18749  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18750  240 /*atTimeCode (3600/15)*/,
18751  0 /*deltaMinutes*/,
18752  0 /*letterIndex ("")*/,
18753  },
18754  // Rule Palestine 2010 only - Mar 26 0:00 1:00 S
18755  {
18756  2010 /*fromYear*/,
18757  2010 /*toYear*/,
18758  3 /*inMonth*/,
18759  0 /*onDayOfWeek*/,
18760  26 /*onDayOfMonth*/,
18761  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18762  0 /*atTimeCode (0/15)*/,
18763  60 /*deltaMinutes*/,
18764  25 /*letterIndex ("S")*/,
18765  },
18766  // Rule Palestine 2010 only - Aug 11 0:00 0 -
18767  {
18768  2010 /*fromYear*/,
18769  2010 /*toYear*/,
18770  8 /*inMonth*/,
18771  0 /*onDayOfWeek*/,
18772  11 /*onDayOfMonth*/,
18773  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18774  0 /*atTimeCode (0/15)*/,
18775  0 /*deltaMinutes*/,
18776  0 /*letterIndex ("")*/,
18777  },
18778  // Rule Palestine 2011 only - Apr 1 0:01 1:00 S
18779  {
18780  2011 /*fromYear*/,
18781  2011 /*toYear*/,
18782  4 /*inMonth*/,
18783  0 /*onDayOfWeek*/,
18784  1 /*onDayOfMonth*/,
18785  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18786  4 /*atTimeCode (60/15)*/,
18787  60 /*deltaMinutes*/,
18788  25 /*letterIndex ("S")*/,
18789  },
18790  // Rule Palestine 2011 only - Aug 1 0:00 0 -
18791  {
18792  2011 /*fromYear*/,
18793  2011 /*toYear*/,
18794  8 /*inMonth*/,
18795  0 /*onDayOfWeek*/,
18796  1 /*onDayOfMonth*/,
18797  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18798  0 /*atTimeCode (0/15)*/,
18799  0 /*deltaMinutes*/,
18800  0 /*letterIndex ("")*/,
18801  },
18802  // Rule Palestine 2011 only - Aug 30 0:00 1:00 S
18803  {
18804  2011 /*fromYear*/,
18805  2011 /*toYear*/,
18806  8 /*inMonth*/,
18807  0 /*onDayOfWeek*/,
18808  30 /*onDayOfMonth*/,
18809  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18810  0 /*atTimeCode (0/15)*/,
18811  60 /*deltaMinutes*/,
18812  25 /*letterIndex ("S")*/,
18813  },
18814  // Rule Palestine 2011 only - Sep 30 0:00 0 -
18815  {
18816  2011 /*fromYear*/,
18817  2011 /*toYear*/,
18818  9 /*inMonth*/,
18819  0 /*onDayOfWeek*/,
18820  30 /*onDayOfMonth*/,
18821  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18822  0 /*atTimeCode (0/15)*/,
18823  0 /*deltaMinutes*/,
18824  0 /*letterIndex ("")*/,
18825  },
18826  // Rule Palestine 2012 2014 - Mar lastThu 24:00 1:00 S
18827  {
18828  2012 /*fromYear*/,
18829  2014 /*toYear*/,
18830  3 /*inMonth*/,
18831  4 /*onDayOfWeek*/,
18832  0 /*onDayOfMonth*/,
18833  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18834  5760 /*atTimeCode (86400/15)*/,
18835  60 /*deltaMinutes*/,
18836  25 /*letterIndex ("S")*/,
18837  },
18838  // Rule Palestine 2012 only - Sep 21 1:00 0 -
18839  {
18840  2012 /*fromYear*/,
18841  2012 /*toYear*/,
18842  9 /*inMonth*/,
18843  0 /*onDayOfWeek*/,
18844  21 /*onDayOfMonth*/,
18845  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18846  240 /*atTimeCode (3600/15)*/,
18847  0 /*deltaMinutes*/,
18848  0 /*letterIndex ("")*/,
18849  },
18850  // Rule Palestine 2013 only - Sep 27 0:00 0 -
18851  {
18852  2013 /*fromYear*/,
18853  2013 /*toYear*/,
18854  9 /*inMonth*/,
18855  0 /*onDayOfWeek*/,
18856  27 /*onDayOfMonth*/,
18857  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18858  0 /*atTimeCode (0/15)*/,
18859  0 /*deltaMinutes*/,
18860  0 /*letterIndex ("")*/,
18861  },
18862  // Rule Palestine 2014 only - Oct 24 0:00 0 -
18863  {
18864  2014 /*fromYear*/,
18865  2014 /*toYear*/,
18866  10 /*inMonth*/,
18867  0 /*onDayOfWeek*/,
18868  24 /*onDayOfMonth*/,
18869  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18870  0 /*atTimeCode (0/15)*/,
18871  0 /*deltaMinutes*/,
18872  0 /*letterIndex ("")*/,
18873  },
18874  // Rule Palestine 2015 only - Mar 28 0:00 1:00 S
18875  {
18876  2015 /*fromYear*/,
18877  2015 /*toYear*/,
18878  3 /*inMonth*/,
18879  0 /*onDayOfWeek*/,
18880  28 /*onDayOfMonth*/,
18881  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18882  0 /*atTimeCode (0/15)*/,
18883  60 /*deltaMinutes*/,
18884  25 /*letterIndex ("S")*/,
18885  },
18886  // Rule Palestine 2015 only - Oct 23 1:00 0 -
18887  {
18888  2015 /*fromYear*/,
18889  2015 /*toYear*/,
18890  10 /*inMonth*/,
18891  0 /*onDayOfWeek*/,
18892  23 /*onDayOfMonth*/,
18893  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18894  240 /*atTimeCode (3600/15)*/,
18895  0 /*deltaMinutes*/,
18896  0 /*letterIndex ("")*/,
18897  },
18898  // Rule Palestine 2016 2018 - Mar Sat<=30 1:00 1:00 S
18899  {
18900  2016 /*fromYear*/,
18901  2018 /*toYear*/,
18902  3 /*inMonth*/,
18903  6 /*onDayOfWeek*/,
18904  -30 /*onDayOfMonth*/,
18905  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18906  240 /*atTimeCode (3600/15)*/,
18907  60 /*deltaMinutes*/,
18908  25 /*letterIndex ("S")*/,
18909  },
18910  // Rule Palestine 2016 2018 - Oct Sat<=30 1:00 0 -
18911  {
18912  2016 /*fromYear*/,
18913  2018 /*toYear*/,
18914  10 /*inMonth*/,
18915  6 /*onDayOfWeek*/,
18916  -30 /*onDayOfMonth*/,
18917  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18918  240 /*atTimeCode (3600/15)*/,
18919  0 /*deltaMinutes*/,
18920  0 /*letterIndex ("")*/,
18921  },
18922  // Rule Palestine 2019 only - Mar 29 0:00 1:00 S
18923  {
18924  2019 /*fromYear*/,
18925  2019 /*toYear*/,
18926  3 /*inMonth*/,
18927  0 /*onDayOfWeek*/,
18928  29 /*onDayOfMonth*/,
18929  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18930  0 /*atTimeCode (0/15)*/,
18931  60 /*deltaMinutes*/,
18932  25 /*letterIndex ("S")*/,
18933  },
18934  // Rule Palestine 2019 only - Oct Sat<=30 0:00 0 -
18935  {
18936  2019 /*fromYear*/,
18937  2019 /*toYear*/,
18938  10 /*inMonth*/,
18939  6 /*onDayOfWeek*/,
18940  -30 /*onDayOfMonth*/,
18941  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18942  0 /*atTimeCode (0/15)*/,
18943  0 /*deltaMinutes*/,
18944  0 /*letterIndex ("")*/,
18945  },
18946  // Rule Palestine 2020 2021 - Mar Sat<=30 0:00 1:00 S
18947  {
18948  2020 /*fromYear*/,
18949  2021 /*toYear*/,
18950  3 /*inMonth*/,
18951  6 /*onDayOfWeek*/,
18952  -30 /*onDayOfMonth*/,
18953  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18954  0 /*atTimeCode (0/15)*/,
18955  60 /*deltaMinutes*/,
18956  25 /*letterIndex ("S")*/,
18957  },
18958  // Rule Palestine 2020 only - Oct 24 1:00 0 -
18959  {
18960  2020 /*fromYear*/,
18961  2020 /*toYear*/,
18962  10 /*inMonth*/,
18963  0 /*onDayOfWeek*/,
18964  24 /*onDayOfMonth*/,
18965  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18966  240 /*atTimeCode (3600/15)*/,
18967  0 /*deltaMinutes*/,
18968  0 /*letterIndex ("")*/,
18969  },
18970  // Rule Palestine 2021 only - Oct 29 1:00 0 -
18971  {
18972  2021 /*fromYear*/,
18973  2021 /*toYear*/,
18974  10 /*inMonth*/,
18975  0 /*onDayOfWeek*/,
18976  29 /*onDayOfMonth*/,
18977  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18978  240 /*atTimeCode (3600/15)*/,
18979  0 /*deltaMinutes*/,
18980  0 /*letterIndex ("")*/,
18981  },
18982  // Rule Palestine 2022 only - Mar 27 0:00 1:00 S
18983  {
18984  2022 /*fromYear*/,
18985  2022 /*toYear*/,
18986  3 /*inMonth*/,
18987  0 /*onDayOfWeek*/,
18988  27 /*onDayOfMonth*/,
18989  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
18990  0 /*atTimeCode (0/15)*/,
18991  60 /*deltaMinutes*/,
18992  25 /*letterIndex ("S")*/,
18993  },
18994  // Rule Palestine 2022 2035 - Oct Sat<=30 2:00 0 -
18995  {
18996  2022 /*fromYear*/,
18997  2035 /*toYear*/,
18998  10 /*inMonth*/,
18999  6 /*onDayOfWeek*/,
19000  -30 /*onDayOfMonth*/,
19001  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19002  480 /*atTimeCode (7200/15)*/,
19003  0 /*deltaMinutes*/,
19004  0 /*letterIndex ("")*/,
19005  },
19006  // Rule Palestine 2023 only - Apr 29 2:00 1:00 S
19007  {
19008  2023 /*fromYear*/,
19009  2023 /*toYear*/,
19010  4 /*inMonth*/,
19011  0 /*onDayOfWeek*/,
19012  29 /*onDayOfMonth*/,
19013  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19014  480 /*atTimeCode (7200/15)*/,
19015  60 /*deltaMinutes*/,
19016  25 /*letterIndex ("S")*/,
19017  },
19018  // Rule Palestine 2024 only - Apr 13 2:00 1:00 S
19019  {
19020  2024 /*fromYear*/,
19021  2024 /*toYear*/,
19022  4 /*inMonth*/,
19023  0 /*onDayOfWeek*/,
19024  13 /*onDayOfMonth*/,
19025  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19026  480 /*atTimeCode (7200/15)*/,
19027  60 /*deltaMinutes*/,
19028  25 /*letterIndex ("S")*/,
19029  },
19030  // Rule Palestine 2025 only - Apr 5 2:00 1:00 S
19031  {
19032  2025 /*fromYear*/,
19033  2025 /*toYear*/,
19034  4 /*inMonth*/,
19035  0 /*onDayOfWeek*/,
19036  5 /*onDayOfMonth*/,
19037  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19038  480 /*atTimeCode (7200/15)*/,
19039  60 /*deltaMinutes*/,
19040  25 /*letterIndex ("S")*/,
19041  },
19042  // Rule Palestine 2026 2054 - Mar Sat<=30 2:00 1:00 S
19043  {
19044  2026 /*fromYear*/,
19045  2054 /*toYear*/,
19046  3 /*inMonth*/,
19047  6 /*onDayOfWeek*/,
19048  -30 /*onDayOfMonth*/,
19049  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19050  480 /*atTimeCode (7200/15)*/,
19051  60 /*deltaMinutes*/,
19052  25 /*letterIndex ("S")*/,
19053  },
19054  // Rule Palestine 2036 only - Oct 18 2:00 0 -
19055  {
19056  2036 /*fromYear*/,
19057  2036 /*toYear*/,
19058  10 /*inMonth*/,
19059  0 /*onDayOfWeek*/,
19060  18 /*onDayOfMonth*/,
19061  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19062  480 /*atTimeCode (7200/15)*/,
19063  0 /*deltaMinutes*/,
19064  0 /*letterIndex ("")*/,
19065  },
19066  // Rule Palestine 2037 only - Oct 10 2:00 0 -
19067  {
19068  2037 /*fromYear*/,
19069  2037 /*toYear*/,
19070  10 /*inMonth*/,
19071  0 /*onDayOfWeek*/,
19072  10 /*onDayOfMonth*/,
19073  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19074  480 /*atTimeCode (7200/15)*/,
19075  0 /*deltaMinutes*/,
19076  0 /*letterIndex ("")*/,
19077  },
19078  // Rule Palestine 2038 only - Sep 25 2:00 0 -
19079  {
19080  2038 /*fromYear*/,
19081  2038 /*toYear*/,
19082  9 /*inMonth*/,
19083  0 /*onDayOfWeek*/,
19084  25 /*onDayOfMonth*/,
19085  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19086  480 /*atTimeCode (7200/15)*/,
19087  0 /*deltaMinutes*/,
19088  0 /*letterIndex ("")*/,
19089  },
19090  // Rule Palestine 2039 only - Sep 17 2:00 0 -
19091  {
19092  2039 /*fromYear*/,
19093  2039 /*toYear*/,
19094  9 /*inMonth*/,
19095  0 /*onDayOfWeek*/,
19096  17 /*onDayOfMonth*/,
19097  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19098  480 /*atTimeCode (7200/15)*/,
19099  0 /*deltaMinutes*/,
19100  0 /*letterIndex ("")*/,
19101  },
19102  // Rule Palestine 2039 only - Oct 22 2:00 1:00 S
19103  {
19104  2039 /*fromYear*/,
19105  2039 /*toYear*/,
19106  10 /*inMonth*/,
19107  0 /*onDayOfWeek*/,
19108  22 /*onDayOfMonth*/,
19109  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19110  480 /*atTimeCode (7200/15)*/,
19111  60 /*deltaMinutes*/,
19112  25 /*letterIndex ("S")*/,
19113  },
19114  // Rule Palestine 2039 2067 - Oct Sat<=30 2:00 0 -
19115  {
19116  2039 /*fromYear*/,
19117  2067 /*toYear*/,
19118  10 /*inMonth*/,
19119  6 /*onDayOfWeek*/,
19120  -30 /*onDayOfMonth*/,
19121  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19122  480 /*atTimeCode (7200/15)*/,
19123  0 /*deltaMinutes*/,
19124  0 /*letterIndex ("")*/,
19125  },
19126  // Rule Palestine 2040 only - Sep 1 2:00 0 -
19127  {
19128  2040 /*fromYear*/,
19129  2040 /*toYear*/,
19130  9 /*inMonth*/,
19131  0 /*onDayOfWeek*/,
19132  1 /*onDayOfMonth*/,
19133  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19134  480 /*atTimeCode (7200/15)*/,
19135  0 /*deltaMinutes*/,
19136  0 /*letterIndex ("")*/,
19137  },
19138  // Rule Palestine 2040 only - Oct 13 2:00 1:00 S
19139  {
19140  2040 /*fromYear*/,
19141  2040 /*toYear*/,
19142  10 /*inMonth*/,
19143  0 /*onDayOfWeek*/,
19144  13 /*onDayOfMonth*/,
19145  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19146  480 /*atTimeCode (7200/15)*/,
19147  60 /*deltaMinutes*/,
19148  25 /*letterIndex ("S")*/,
19149  },
19150  // Rule Palestine 2041 only - Aug 24 2:00 0 -
19151  {
19152  2041 /*fromYear*/,
19153  2041 /*toYear*/,
19154  8 /*inMonth*/,
19155  0 /*onDayOfWeek*/,
19156  24 /*onDayOfMonth*/,
19157  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19158  480 /*atTimeCode (7200/15)*/,
19159  0 /*deltaMinutes*/,
19160  0 /*letterIndex ("")*/,
19161  },
19162  // Rule Palestine 2041 only - Sep 28 2:00 1:00 S
19163  {
19164  2041 /*fromYear*/,
19165  2041 /*toYear*/,
19166  9 /*inMonth*/,
19167  0 /*onDayOfWeek*/,
19168  28 /*onDayOfMonth*/,
19169  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19170  480 /*atTimeCode (7200/15)*/,
19171  60 /*deltaMinutes*/,
19172  25 /*letterIndex ("S")*/,
19173  },
19174  // Rule Palestine 2042 only - Aug 16 2:00 0 -
19175  {
19176  2042 /*fromYear*/,
19177  2042 /*toYear*/,
19178  8 /*inMonth*/,
19179  0 /*onDayOfWeek*/,
19180  16 /*onDayOfMonth*/,
19181  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19182  480 /*atTimeCode (7200/15)*/,
19183  0 /*deltaMinutes*/,
19184  0 /*letterIndex ("")*/,
19185  },
19186  // Rule Palestine 2042 only - Sep 20 2:00 1:00 S
19187  {
19188  2042 /*fromYear*/,
19189  2042 /*toYear*/,
19190  9 /*inMonth*/,
19191  0 /*onDayOfWeek*/,
19192  20 /*onDayOfMonth*/,
19193  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19194  480 /*atTimeCode (7200/15)*/,
19195  60 /*deltaMinutes*/,
19196  25 /*letterIndex ("S")*/,
19197  },
19198  // Rule Palestine 2043 only - Aug 1 2:00 0 -
19199  {
19200  2043 /*fromYear*/,
19201  2043 /*toYear*/,
19202  8 /*inMonth*/,
19203  0 /*onDayOfWeek*/,
19204  1 /*onDayOfMonth*/,
19205  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19206  480 /*atTimeCode (7200/15)*/,
19207  0 /*deltaMinutes*/,
19208  0 /*letterIndex ("")*/,
19209  },
19210  // Rule Palestine 2043 only - Sep 12 2:00 1:00 S
19211  {
19212  2043 /*fromYear*/,
19213  2043 /*toYear*/,
19214  9 /*inMonth*/,
19215  0 /*onDayOfWeek*/,
19216  12 /*onDayOfMonth*/,
19217  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19218  480 /*atTimeCode (7200/15)*/,
19219  60 /*deltaMinutes*/,
19220  25 /*letterIndex ("S")*/,
19221  },
19222  // Rule Palestine 2044 only - Jul 23 2:00 0 -
19223  {
19224  2044 /*fromYear*/,
19225  2044 /*toYear*/,
19226  7 /*inMonth*/,
19227  0 /*onDayOfWeek*/,
19228  23 /*onDayOfMonth*/,
19229  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19230  480 /*atTimeCode (7200/15)*/,
19231  0 /*deltaMinutes*/,
19232  0 /*letterIndex ("")*/,
19233  },
19234  // Rule Palestine 2044 only - Aug 27 2:00 1:00 S
19235  {
19236  2044 /*fromYear*/,
19237  2044 /*toYear*/,
19238  8 /*inMonth*/,
19239  0 /*onDayOfWeek*/,
19240  27 /*onDayOfMonth*/,
19241  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19242  480 /*atTimeCode (7200/15)*/,
19243  60 /*deltaMinutes*/,
19244  25 /*letterIndex ("S")*/,
19245  },
19246  // Rule Palestine 2045 only - Jul 15 2:00 0 -
19247  {
19248  2045 /*fromYear*/,
19249  2045 /*toYear*/,
19250  7 /*inMonth*/,
19251  0 /*onDayOfWeek*/,
19252  15 /*onDayOfMonth*/,
19253  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19254  480 /*atTimeCode (7200/15)*/,
19255  0 /*deltaMinutes*/,
19256  0 /*letterIndex ("")*/,
19257  },
19258  // Rule Palestine 2045 only - Aug 19 2:00 1:00 S
19259  {
19260  2045 /*fromYear*/,
19261  2045 /*toYear*/,
19262  8 /*inMonth*/,
19263  0 /*onDayOfWeek*/,
19264  19 /*onDayOfMonth*/,
19265  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19266  480 /*atTimeCode (7200/15)*/,
19267  60 /*deltaMinutes*/,
19268  25 /*letterIndex ("S")*/,
19269  },
19270  // Rule Palestine 2046 only - Jun 30 2:00 0 -
19271  {
19272  2046 /*fromYear*/,
19273  2046 /*toYear*/,
19274  6 /*inMonth*/,
19275  0 /*onDayOfWeek*/,
19276  30 /*onDayOfMonth*/,
19277  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19278  480 /*atTimeCode (7200/15)*/,
19279  0 /*deltaMinutes*/,
19280  0 /*letterIndex ("")*/,
19281  },
19282  // Rule Palestine 2046 only - Aug 11 2:00 1:00 S
19283  {
19284  2046 /*fromYear*/,
19285  2046 /*toYear*/,
19286  8 /*inMonth*/,
19287  0 /*onDayOfWeek*/,
19288  11 /*onDayOfMonth*/,
19289  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19290  480 /*atTimeCode (7200/15)*/,
19291  60 /*deltaMinutes*/,
19292  25 /*letterIndex ("S")*/,
19293  },
19294  // Rule Palestine 2047 only - Jun 22 2:00 0 -
19295  {
19296  2047 /*fromYear*/,
19297  2047 /*toYear*/,
19298  6 /*inMonth*/,
19299  0 /*onDayOfWeek*/,
19300  22 /*onDayOfMonth*/,
19301  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19302  480 /*atTimeCode (7200/15)*/,
19303  0 /*deltaMinutes*/,
19304  0 /*letterIndex ("")*/,
19305  },
19306  // Rule Palestine 2047 only - Jul 27 2:00 1:00 S
19307  {
19308  2047 /*fromYear*/,
19309  2047 /*toYear*/,
19310  7 /*inMonth*/,
19311  0 /*onDayOfWeek*/,
19312  27 /*onDayOfMonth*/,
19313  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19314  480 /*atTimeCode (7200/15)*/,
19315  60 /*deltaMinutes*/,
19316  25 /*letterIndex ("S")*/,
19317  },
19318  // Rule Palestine 2048 only - Jun 6 2:00 0 -
19319  {
19320  2048 /*fromYear*/,
19321  2048 /*toYear*/,
19322  6 /*inMonth*/,
19323  0 /*onDayOfWeek*/,
19324  6 /*onDayOfMonth*/,
19325  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19326  480 /*atTimeCode (7200/15)*/,
19327  0 /*deltaMinutes*/,
19328  0 /*letterIndex ("")*/,
19329  },
19330  // Rule Palestine 2048 only - Jul 18 2:00 1:00 S
19331  {
19332  2048 /*fromYear*/,
19333  2048 /*toYear*/,
19334  7 /*inMonth*/,
19335  0 /*onDayOfWeek*/,
19336  18 /*onDayOfMonth*/,
19337  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19338  480 /*atTimeCode (7200/15)*/,
19339  60 /*deltaMinutes*/,
19340  25 /*letterIndex ("S")*/,
19341  },
19342  // Rule Palestine 2049 only - May 29 2:00 0 -
19343  {
19344  2049 /*fromYear*/,
19345  2049 /*toYear*/,
19346  5 /*inMonth*/,
19347  0 /*onDayOfWeek*/,
19348  29 /*onDayOfMonth*/,
19349  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19350  480 /*atTimeCode (7200/15)*/,
19351  0 /*deltaMinutes*/,
19352  0 /*letterIndex ("")*/,
19353  },
19354  // Rule Palestine 2049 only - Jul 3 2:00 1:00 S
19355  {
19356  2049 /*fromYear*/,
19357  2049 /*toYear*/,
19358  7 /*inMonth*/,
19359  0 /*onDayOfWeek*/,
19360  3 /*onDayOfMonth*/,
19361  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19362  480 /*atTimeCode (7200/15)*/,
19363  60 /*deltaMinutes*/,
19364  25 /*letterIndex ("S")*/,
19365  },
19366  // Rule Palestine 2050 only - May 21 2:00 0 -
19367  {
19368  2050 /*fromYear*/,
19369  2050 /*toYear*/,
19370  5 /*inMonth*/,
19371  0 /*onDayOfWeek*/,
19372  21 /*onDayOfMonth*/,
19373  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19374  480 /*atTimeCode (7200/15)*/,
19375  0 /*deltaMinutes*/,
19376  0 /*letterIndex ("")*/,
19377  },
19378  // Rule Palestine 2050 only - Jun 25 2:00 1:00 S
19379  {
19380  2050 /*fromYear*/,
19381  2050 /*toYear*/,
19382  6 /*inMonth*/,
19383  0 /*onDayOfWeek*/,
19384  25 /*onDayOfMonth*/,
19385  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19386  480 /*atTimeCode (7200/15)*/,
19387  60 /*deltaMinutes*/,
19388  25 /*letterIndex ("S")*/,
19389  },
19390  // Rule Palestine 2051 only - May 6 2:00 0 -
19391  {
19392  2051 /*fromYear*/,
19393  2051 /*toYear*/,
19394  5 /*inMonth*/,
19395  0 /*onDayOfWeek*/,
19396  6 /*onDayOfMonth*/,
19397  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19398  480 /*atTimeCode (7200/15)*/,
19399  0 /*deltaMinutes*/,
19400  0 /*letterIndex ("")*/,
19401  },
19402  // Rule Palestine 2051 only - Jun 17 2:00 1:00 S
19403  {
19404  2051 /*fromYear*/,
19405  2051 /*toYear*/,
19406  6 /*inMonth*/,
19407  0 /*onDayOfWeek*/,
19408  17 /*onDayOfMonth*/,
19409  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19410  480 /*atTimeCode (7200/15)*/,
19411  60 /*deltaMinutes*/,
19412  25 /*letterIndex ("S")*/,
19413  },
19414  // Rule Palestine 2052 only - Apr 27 2:00 0 -
19415  {
19416  2052 /*fromYear*/,
19417  2052 /*toYear*/,
19418  4 /*inMonth*/,
19419  0 /*onDayOfWeek*/,
19420  27 /*onDayOfMonth*/,
19421  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19422  480 /*atTimeCode (7200/15)*/,
19423  0 /*deltaMinutes*/,
19424  0 /*letterIndex ("")*/,
19425  },
19426  // Rule Palestine 2052 only - Jun 1 2:00 1:00 S
19427  {
19428  2052 /*fromYear*/,
19429  2052 /*toYear*/,
19430  6 /*inMonth*/,
19431  0 /*onDayOfWeek*/,
19432  1 /*onDayOfMonth*/,
19433  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19434  480 /*atTimeCode (7200/15)*/,
19435  60 /*deltaMinutes*/,
19436  25 /*letterIndex ("S")*/,
19437  },
19438  // Rule Palestine 2053 only - Apr 12 2:00 0 -
19439  {
19440  2053 /*fromYear*/,
19441  2053 /*toYear*/,
19442  4 /*inMonth*/,
19443  0 /*onDayOfWeek*/,
19444  12 /*onDayOfMonth*/,
19445  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19446  480 /*atTimeCode (7200/15)*/,
19447  0 /*deltaMinutes*/,
19448  0 /*letterIndex ("")*/,
19449  },
19450  // Rule Palestine 2053 only - May 24 2:00 1:00 S
19451  {
19452  2053 /*fromYear*/,
19453  2053 /*toYear*/,
19454  5 /*inMonth*/,
19455  0 /*onDayOfWeek*/,
19456  24 /*onDayOfMonth*/,
19457  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19458  480 /*atTimeCode (7200/15)*/,
19459  60 /*deltaMinutes*/,
19460  25 /*letterIndex ("S")*/,
19461  },
19462  // Rule Palestine 2054 only - Apr 4 2:00 0 -
19463  {
19464  2054 /*fromYear*/,
19465  2054 /*toYear*/,
19466  4 /*inMonth*/,
19467  0 /*onDayOfWeek*/,
19468  4 /*onDayOfMonth*/,
19469  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19470  480 /*atTimeCode (7200/15)*/,
19471  0 /*deltaMinutes*/,
19472  0 /*letterIndex ("")*/,
19473  },
19474  // Rule Palestine 2054 only - May 16 2:00 1:00 S
19475  {
19476  2054 /*fromYear*/,
19477  2054 /*toYear*/,
19478  5 /*inMonth*/,
19479  0 /*onDayOfWeek*/,
19480  16 /*onDayOfMonth*/,
19481  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19482  480 /*atTimeCode (7200/15)*/,
19483  60 /*deltaMinutes*/,
19484  25 /*letterIndex ("S")*/,
19485  },
19486  // Rule Palestine 2055 only - May 1 2:00 1:00 S
19487  {
19488  2055 /*fromYear*/,
19489  2055 /*toYear*/,
19490  5 /*inMonth*/,
19491  0 /*onDayOfWeek*/,
19492  1 /*onDayOfMonth*/,
19493  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19494  480 /*atTimeCode (7200/15)*/,
19495  60 /*deltaMinutes*/,
19496  25 /*letterIndex ("S")*/,
19497  },
19498  // Rule Palestine 2056 only - Apr 22 2:00 1:00 S
19499  {
19500  2056 /*fromYear*/,
19501  2056 /*toYear*/,
19502  4 /*inMonth*/,
19503  0 /*onDayOfWeek*/,
19504  22 /*onDayOfMonth*/,
19505  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19506  480 /*atTimeCode (7200/15)*/,
19507  60 /*deltaMinutes*/,
19508  25 /*letterIndex ("S")*/,
19509  },
19510  // Rule Palestine 2057 only - Apr 7 2:00 1:00 S
19511  {
19512  2057 /*fromYear*/,
19513  2057 /*toYear*/,
19514  4 /*inMonth*/,
19515  0 /*onDayOfWeek*/,
19516  7 /*onDayOfMonth*/,
19517  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19518  480 /*atTimeCode (7200/15)*/,
19519  60 /*deltaMinutes*/,
19520  25 /*letterIndex ("S")*/,
19521  },
19522  // Rule Palestine 2058 max - Mar Sat<=30 2:00 1:00 S
19523  {
19524  2058 /*fromYear*/,
19525  32766 /*toYear*/,
19526  3 /*inMonth*/,
19527  6 /*onDayOfWeek*/,
19528  -30 /*onDayOfMonth*/,
19529  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19530  480 /*atTimeCode (7200/15)*/,
19531  60 /*deltaMinutes*/,
19532  25 /*letterIndex ("S")*/,
19533  },
19534  // Rule Palestine 2068 only - Oct 20 2:00 0 -
19535  {
19536  2068 /*fromYear*/,
19537  2068 /*toYear*/,
19538  10 /*inMonth*/,
19539  0 /*onDayOfWeek*/,
19540  20 /*onDayOfMonth*/,
19541  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19542  480 /*atTimeCode (7200/15)*/,
19543  0 /*deltaMinutes*/,
19544  0 /*letterIndex ("")*/,
19545  },
19546  // Rule Palestine 2069 only - Oct 12 2:00 0 -
19547  {
19548  2069 /*fromYear*/,
19549  2069 /*toYear*/,
19550  10 /*inMonth*/,
19551  0 /*onDayOfWeek*/,
19552  12 /*onDayOfMonth*/,
19553  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19554  480 /*atTimeCode (7200/15)*/,
19555  0 /*deltaMinutes*/,
19556  0 /*letterIndex ("")*/,
19557  },
19558  // Rule Palestine 2070 only - Oct 4 2:00 0 -
19559  {
19560  2070 /*fromYear*/,
19561  2070 /*toYear*/,
19562  10 /*inMonth*/,
19563  0 /*onDayOfWeek*/,
19564  4 /*onDayOfMonth*/,
19565  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19566  480 /*atTimeCode (7200/15)*/,
19567  0 /*deltaMinutes*/,
19568  0 /*letterIndex ("")*/,
19569  },
19570  // Rule Palestine 2071 only - Sep 19 2:00 0 -
19571  {
19572  2071 /*fromYear*/,
19573  2071 /*toYear*/,
19574  9 /*inMonth*/,
19575  0 /*onDayOfWeek*/,
19576  19 /*onDayOfMonth*/,
19577  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19578  480 /*atTimeCode (7200/15)*/,
19579  0 /*deltaMinutes*/,
19580  0 /*letterIndex ("")*/,
19581  },
19582  // Rule Palestine 2072 only - Sep 10 2:00 0 -
19583  {
19584  2072 /*fromYear*/,
19585  2072 /*toYear*/,
19586  9 /*inMonth*/,
19587  0 /*onDayOfWeek*/,
19588  10 /*onDayOfMonth*/,
19589  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19590  480 /*atTimeCode (7200/15)*/,
19591  0 /*deltaMinutes*/,
19592  0 /*letterIndex ("")*/,
19593  },
19594  // Rule Palestine 2072 only - Oct 15 2:00 1:00 S
19595  {
19596  2072 /*fromYear*/,
19597  2072 /*toYear*/,
19598  10 /*inMonth*/,
19599  0 /*onDayOfWeek*/,
19600  15 /*onDayOfMonth*/,
19601  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19602  480 /*atTimeCode (7200/15)*/,
19603  60 /*deltaMinutes*/,
19604  25 /*letterIndex ("S")*/,
19605  },
19606  // Rule Palestine 2073 only - Sep 2 2:00 0 -
19607  {
19608  2073 /*fromYear*/,
19609  2073 /*toYear*/,
19610  9 /*inMonth*/,
19611  0 /*onDayOfWeek*/,
19612  2 /*onDayOfMonth*/,
19613  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19614  480 /*atTimeCode (7200/15)*/,
19615  0 /*deltaMinutes*/,
19616  0 /*letterIndex ("")*/,
19617  },
19618  // Rule Palestine 2073 only - Oct 7 2:00 1:00 S
19619  {
19620  2073 /*fromYear*/,
19621  2073 /*toYear*/,
19622  10 /*inMonth*/,
19623  0 /*onDayOfWeek*/,
19624  7 /*onDayOfMonth*/,
19625  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19626  480 /*atTimeCode (7200/15)*/,
19627  60 /*deltaMinutes*/,
19628  25 /*letterIndex ("S")*/,
19629  },
19630  // Rule Palestine 2074 only - Aug 18 2:00 0 -
19631  {
19632  2074 /*fromYear*/,
19633  2074 /*toYear*/,
19634  8 /*inMonth*/,
19635  0 /*onDayOfWeek*/,
19636  18 /*onDayOfMonth*/,
19637  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19638  480 /*atTimeCode (7200/15)*/,
19639  0 /*deltaMinutes*/,
19640  0 /*letterIndex ("")*/,
19641  },
19642  // Rule Palestine 2074 only - Sep 29 2:00 1:00 S
19643  {
19644  2074 /*fromYear*/,
19645  2074 /*toYear*/,
19646  9 /*inMonth*/,
19647  0 /*onDayOfWeek*/,
19648  29 /*onDayOfMonth*/,
19649  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19650  480 /*atTimeCode (7200/15)*/,
19651  60 /*deltaMinutes*/,
19652  25 /*letterIndex ("S")*/,
19653  },
19654  // Rule Palestine 2075 only - Aug 10 2:00 0 -
19655  {
19656  2075 /*fromYear*/,
19657  2075 /*toYear*/,
19658  8 /*inMonth*/,
19659  0 /*onDayOfWeek*/,
19660  10 /*onDayOfMonth*/,
19661  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19662  480 /*atTimeCode (7200/15)*/,
19663  0 /*deltaMinutes*/,
19664  0 /*letterIndex ("")*/,
19665  },
19666  // Rule Palestine 2075 only - Sep 14 2:00 1:00 S
19667  {
19668  2075 /*fromYear*/,
19669  2075 /*toYear*/,
19670  9 /*inMonth*/,
19671  0 /*onDayOfWeek*/,
19672  14 /*onDayOfMonth*/,
19673  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19674  480 /*atTimeCode (7200/15)*/,
19675  60 /*deltaMinutes*/,
19676  25 /*letterIndex ("S")*/,
19677  },
19678  // Rule Palestine 2075 max - Oct Sat<=30 2:00 0 -
19679  {
19680  2075 /*fromYear*/,
19681  32766 /*toYear*/,
19682  10 /*inMonth*/,
19683  6 /*onDayOfWeek*/,
19684  -30 /*onDayOfMonth*/,
19685  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19686  480 /*atTimeCode (7200/15)*/,
19687  0 /*deltaMinutes*/,
19688  0 /*letterIndex ("")*/,
19689  },
19690  // Rule Palestine 2076 only - Jul 25 2:00 0 -
19691  {
19692  2076 /*fromYear*/,
19693  2076 /*toYear*/,
19694  7 /*inMonth*/,
19695  0 /*onDayOfWeek*/,
19696  25 /*onDayOfMonth*/,
19697  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19698  480 /*atTimeCode (7200/15)*/,
19699  0 /*deltaMinutes*/,
19700  0 /*letterIndex ("")*/,
19701  },
19702  // Rule Palestine 2076 only - Sep 5 2:00 1:00 S
19703  {
19704  2076 /*fromYear*/,
19705  2076 /*toYear*/,
19706  9 /*inMonth*/,
19707  0 /*onDayOfWeek*/,
19708  5 /*onDayOfMonth*/,
19709  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19710  480 /*atTimeCode (7200/15)*/,
19711  60 /*deltaMinutes*/,
19712  25 /*letterIndex ("S")*/,
19713  },
19714  // Rule Palestine 2077 only - Jul 17 2:00 0 -
19715  {
19716  2077 /*fromYear*/,
19717  2077 /*toYear*/,
19718  7 /*inMonth*/,
19719  0 /*onDayOfWeek*/,
19720  17 /*onDayOfMonth*/,
19721  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19722  480 /*atTimeCode (7200/15)*/,
19723  0 /*deltaMinutes*/,
19724  0 /*letterIndex ("")*/,
19725  },
19726  // Rule Palestine 2077 only - Aug 28 2:00 1:00 S
19727  {
19728  2077 /*fromYear*/,
19729  2077 /*toYear*/,
19730  8 /*inMonth*/,
19731  0 /*onDayOfWeek*/,
19732  28 /*onDayOfMonth*/,
19733  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19734  480 /*atTimeCode (7200/15)*/,
19735  60 /*deltaMinutes*/,
19736  25 /*letterIndex ("S")*/,
19737  },
19738  // Rule Palestine 2078 only - Jul 9 2:00 0 -
19739  {
19740  2078 /*fromYear*/,
19741  2078 /*toYear*/,
19742  7 /*inMonth*/,
19743  0 /*onDayOfWeek*/,
19744  9 /*onDayOfMonth*/,
19745  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19746  480 /*atTimeCode (7200/15)*/,
19747  0 /*deltaMinutes*/,
19748  0 /*letterIndex ("")*/,
19749  },
19750  // Rule Palestine 2078 only - Aug 13 2:00 1:00 S
19751  {
19752  2078 /*fromYear*/,
19753  2078 /*toYear*/,
19754  8 /*inMonth*/,
19755  0 /*onDayOfWeek*/,
19756  13 /*onDayOfMonth*/,
19757  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19758  480 /*atTimeCode (7200/15)*/,
19759  60 /*deltaMinutes*/,
19760  25 /*letterIndex ("S")*/,
19761  },
19762  // Rule Palestine 2079 only - Jun 24 2:00 0 -
19763  {
19764  2079 /*fromYear*/,
19765  2079 /*toYear*/,
19766  6 /*inMonth*/,
19767  0 /*onDayOfWeek*/,
19768  24 /*onDayOfMonth*/,
19769  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19770  480 /*atTimeCode (7200/15)*/,
19771  0 /*deltaMinutes*/,
19772  0 /*letterIndex ("")*/,
19773  },
19774  // Rule Palestine 2079 only - Aug 5 2:00 1:00 S
19775  {
19776  2079 /*fromYear*/,
19777  2079 /*toYear*/,
19778  8 /*inMonth*/,
19779  0 /*onDayOfWeek*/,
19780  5 /*onDayOfMonth*/,
19781  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19782  480 /*atTimeCode (7200/15)*/,
19783  60 /*deltaMinutes*/,
19784  25 /*letterIndex ("S")*/,
19785  },
19786  // Rule Palestine 2080 only - Jun 15 2:00 0 -
19787  {
19788  2080 /*fromYear*/,
19789  2080 /*toYear*/,
19790  6 /*inMonth*/,
19791  0 /*onDayOfWeek*/,
19792  15 /*onDayOfMonth*/,
19793  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19794  480 /*atTimeCode (7200/15)*/,
19795  0 /*deltaMinutes*/,
19796  0 /*letterIndex ("")*/,
19797  },
19798  // Rule Palestine 2080 only - Jul 20 2:00 1:00 S
19799  {
19800  2080 /*fromYear*/,
19801  2080 /*toYear*/,
19802  7 /*inMonth*/,
19803  0 /*onDayOfWeek*/,
19804  20 /*onDayOfMonth*/,
19805  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19806  480 /*atTimeCode (7200/15)*/,
19807  60 /*deltaMinutes*/,
19808  25 /*letterIndex ("S")*/,
19809  },
19810  // Rule Palestine 2081 only - Jun 7 2:00 0 -
19811  {
19812  2081 /*fromYear*/,
19813  2081 /*toYear*/,
19814  6 /*inMonth*/,
19815  0 /*onDayOfWeek*/,
19816  7 /*onDayOfMonth*/,
19817  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19818  480 /*atTimeCode (7200/15)*/,
19819  0 /*deltaMinutes*/,
19820  0 /*letterIndex ("")*/,
19821  },
19822  // Rule Palestine 2081 only - Jul 12 2:00 1:00 S
19823  {
19824  2081 /*fromYear*/,
19825  2081 /*toYear*/,
19826  7 /*inMonth*/,
19827  0 /*onDayOfWeek*/,
19828  12 /*onDayOfMonth*/,
19829  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19830  480 /*atTimeCode (7200/15)*/,
19831  60 /*deltaMinutes*/,
19832  25 /*letterIndex ("S")*/,
19833  },
19834  // Rule Palestine 2082 only - May 23 2:00 0 -
19835  {
19836  2082 /*fromYear*/,
19837  2082 /*toYear*/,
19838  5 /*inMonth*/,
19839  0 /*onDayOfWeek*/,
19840  23 /*onDayOfMonth*/,
19841  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19842  480 /*atTimeCode (7200/15)*/,
19843  0 /*deltaMinutes*/,
19844  0 /*letterIndex ("")*/,
19845  },
19846  // Rule Palestine 2082 only - Jul 4 2:00 1:00 S
19847  {
19848  2082 /*fromYear*/,
19849  2082 /*toYear*/,
19850  7 /*inMonth*/,
19851  0 /*onDayOfWeek*/,
19852  4 /*onDayOfMonth*/,
19853  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19854  480 /*atTimeCode (7200/15)*/,
19855  60 /*deltaMinutes*/,
19856  25 /*letterIndex ("S")*/,
19857  },
19858  // Rule Palestine 2083 only - May 15 2:00 0 -
19859  {
19860  2083 /*fromYear*/,
19861  2083 /*toYear*/,
19862  5 /*inMonth*/,
19863  0 /*onDayOfWeek*/,
19864  15 /*onDayOfMonth*/,
19865  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19866  480 /*atTimeCode (7200/15)*/,
19867  0 /*deltaMinutes*/,
19868  0 /*letterIndex ("")*/,
19869  },
19870  // Rule Palestine 2083 only - Jun 19 2:00 1:00 S
19871  {
19872  2083 /*fromYear*/,
19873  2083 /*toYear*/,
19874  6 /*inMonth*/,
19875  0 /*onDayOfWeek*/,
19876  19 /*onDayOfMonth*/,
19877  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19878  480 /*atTimeCode (7200/15)*/,
19879  60 /*deltaMinutes*/,
19880  25 /*letterIndex ("S")*/,
19881  },
19882  // Rule Palestine 2084 only - Apr 29 2:00 0 -
19883  {
19884  2084 /*fromYear*/,
19885  2084 /*toYear*/,
19886  4 /*inMonth*/,
19887  0 /*onDayOfWeek*/,
19888  29 /*onDayOfMonth*/,
19889  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19890  480 /*atTimeCode (7200/15)*/,
19891  0 /*deltaMinutes*/,
19892  0 /*letterIndex ("")*/,
19893  },
19894  // Rule Palestine 2084 only - Jun 10 2:00 1:00 S
19895  {
19896  2084 /*fromYear*/,
19897  2084 /*toYear*/,
19898  6 /*inMonth*/,
19899  0 /*onDayOfWeek*/,
19900  10 /*onDayOfMonth*/,
19901  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19902  480 /*atTimeCode (7200/15)*/,
19903  60 /*deltaMinutes*/,
19904  25 /*letterIndex ("S")*/,
19905  },
19906  // Rule Palestine 2085 only - Apr 21 2:00 0 -
19907  {
19908  2085 /*fromYear*/,
19909  2085 /*toYear*/,
19910  4 /*inMonth*/,
19911  0 /*onDayOfWeek*/,
19912  21 /*onDayOfMonth*/,
19913  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19914  480 /*atTimeCode (7200/15)*/,
19915  0 /*deltaMinutes*/,
19916  0 /*letterIndex ("")*/,
19917  },
19918  // Rule Palestine 2085 only - Jun 2 2:00 1:00 S
19919  {
19920  2085 /*fromYear*/,
19921  2085 /*toYear*/,
19922  6 /*inMonth*/,
19923  0 /*onDayOfWeek*/,
19924  2 /*onDayOfMonth*/,
19925  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19926  480 /*atTimeCode (7200/15)*/,
19927  60 /*deltaMinutes*/,
19928  25 /*letterIndex ("S")*/,
19929  },
19930  // Rule Palestine 2086 only - Apr 13 2:00 0 -
19931  {
19932  2086 /*fromYear*/,
19933  2086 /*toYear*/,
19934  4 /*inMonth*/,
19935  0 /*onDayOfWeek*/,
19936  13 /*onDayOfMonth*/,
19937  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19938  480 /*atTimeCode (7200/15)*/,
19939  0 /*deltaMinutes*/,
19940  0 /*letterIndex ("")*/,
19941  },
19942  // Rule Palestine 2086 only - May 18 2:00 1:00 S
19943  {
19944  2086 /*fromYear*/,
19945  2086 /*toYear*/,
19946  5 /*inMonth*/,
19947  0 /*onDayOfWeek*/,
19948  18 /*onDayOfMonth*/,
19949  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19950  480 /*atTimeCode (7200/15)*/,
19951  60 /*deltaMinutes*/,
19952  25 /*letterIndex ("S")*/,
19953  },
19954 
19955 };
19956 
19957 const complete::ZonePolicy kZonePolicyPalestine ACE_TIME_PROGMEM = {
19958  kZoneRulesPalestine /*rules*/,
19959  111 /*numRules*/,
19960 };
19961 
19962 //---------------------------------------------------------------------------
19963 // Policy name: Para
19964 // Rules: 23
19965 //---------------------------------------------------------------------------
19966 
19967 static const complete::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = {
19968  // Anchor: Rule Para 1975 1978 - Mar 1 0:00 0 -
19969  {
19970  -32767 /*fromYear*/,
19971  -32767 /*toYear*/,
19972  1 /*inMonth*/,
19973  0 /*onDayOfWeek*/,
19974  1 /*onDayOfMonth*/,
19975  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19976  0 /*atTimeCode (0/15)*/,
19977  0 /*deltaMinutes*/,
19978  0 /*letterIndex ("")*/,
19979  },
19980  // Rule Para 1975 1988 - Oct 1 0:00 1:00 -
19981  {
19982  1975 /*fromYear*/,
19983  1988 /*toYear*/,
19984  10 /*inMonth*/,
19985  0 /*onDayOfWeek*/,
19986  1 /*onDayOfMonth*/,
19987  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
19988  0 /*atTimeCode (0/15)*/,
19989  60 /*deltaMinutes*/,
19990  0 /*letterIndex ("")*/,
19991  },
19992  // Rule Para 1975 1978 - Mar 1 0:00 0 -
19993  {
19994  1975 /*fromYear*/,
19995  1978 /*toYear*/,
19996  3 /*inMonth*/,
19997  0 /*onDayOfWeek*/,
19998  1 /*onDayOfMonth*/,
19999  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20000  0 /*atTimeCode (0/15)*/,
20001  0 /*deltaMinutes*/,
20002  0 /*letterIndex ("")*/,
20003  },
20004  // Rule Para 1979 1991 - Apr 1 0:00 0 -
20005  {
20006  1979 /*fromYear*/,
20007  1991 /*toYear*/,
20008  4 /*inMonth*/,
20009  0 /*onDayOfWeek*/,
20010  1 /*onDayOfMonth*/,
20011  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20012  0 /*atTimeCode (0/15)*/,
20013  0 /*deltaMinutes*/,
20014  0 /*letterIndex ("")*/,
20015  },
20016  // Rule Para 1989 only - Oct 22 0:00 1:00 -
20017  {
20018  1989 /*fromYear*/,
20019  1989 /*toYear*/,
20020  10 /*inMonth*/,
20021  0 /*onDayOfWeek*/,
20022  22 /*onDayOfMonth*/,
20023  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20024  0 /*atTimeCode (0/15)*/,
20025  60 /*deltaMinutes*/,
20026  0 /*letterIndex ("")*/,
20027  },
20028  // Rule Para 1990 only - Oct 1 0:00 1:00 -
20029  {
20030  1990 /*fromYear*/,
20031  1990 /*toYear*/,
20032  10 /*inMonth*/,
20033  0 /*onDayOfWeek*/,
20034  1 /*onDayOfMonth*/,
20035  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20036  0 /*atTimeCode (0/15)*/,
20037  60 /*deltaMinutes*/,
20038  0 /*letterIndex ("")*/,
20039  },
20040  // Rule Para 1991 only - Oct 6 0:00 1:00 -
20041  {
20042  1991 /*fromYear*/,
20043  1991 /*toYear*/,
20044  10 /*inMonth*/,
20045  0 /*onDayOfWeek*/,
20046  6 /*onDayOfMonth*/,
20047  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20048  0 /*atTimeCode (0/15)*/,
20049  60 /*deltaMinutes*/,
20050  0 /*letterIndex ("")*/,
20051  },
20052  // Rule Para 1992 only - Mar 1 0:00 0 -
20053  {
20054  1992 /*fromYear*/,
20055  1992 /*toYear*/,
20056  3 /*inMonth*/,
20057  0 /*onDayOfWeek*/,
20058  1 /*onDayOfMonth*/,
20059  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20060  0 /*atTimeCode (0/15)*/,
20061  0 /*deltaMinutes*/,
20062  0 /*letterIndex ("")*/,
20063  },
20064  // Rule Para 1992 only - Oct 5 0:00 1:00 -
20065  {
20066  1992 /*fromYear*/,
20067  1992 /*toYear*/,
20068  10 /*inMonth*/,
20069  0 /*onDayOfWeek*/,
20070  5 /*onDayOfMonth*/,
20071  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20072  0 /*atTimeCode (0/15)*/,
20073  60 /*deltaMinutes*/,
20074  0 /*letterIndex ("")*/,
20075  },
20076  // Rule Para 1993 only - Mar 31 0:00 0 -
20077  {
20078  1993 /*fromYear*/,
20079  1993 /*toYear*/,
20080  3 /*inMonth*/,
20081  0 /*onDayOfWeek*/,
20082  31 /*onDayOfMonth*/,
20083  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20084  0 /*atTimeCode (0/15)*/,
20085  0 /*deltaMinutes*/,
20086  0 /*letterIndex ("")*/,
20087  },
20088  // Rule Para 1993 1995 - Oct 1 0:00 1:00 -
20089  {
20090  1993 /*fromYear*/,
20091  1995 /*toYear*/,
20092  10 /*inMonth*/,
20093  0 /*onDayOfWeek*/,
20094  1 /*onDayOfMonth*/,
20095  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20096  0 /*atTimeCode (0/15)*/,
20097  60 /*deltaMinutes*/,
20098  0 /*letterIndex ("")*/,
20099  },
20100  // Rule Para 1994 1995 - Feb lastSun 0:00 0 -
20101  {
20102  1994 /*fromYear*/,
20103  1995 /*toYear*/,
20104  2 /*inMonth*/,
20105  7 /*onDayOfWeek*/,
20106  0 /*onDayOfMonth*/,
20107  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20108  0 /*atTimeCode (0/15)*/,
20109  0 /*deltaMinutes*/,
20110  0 /*letterIndex ("")*/,
20111  },
20112  // Rule Para 1996 only - Mar 1 0:00 0 -
20113  {
20114  1996 /*fromYear*/,
20115  1996 /*toYear*/,
20116  3 /*inMonth*/,
20117  0 /*onDayOfWeek*/,
20118  1 /*onDayOfMonth*/,
20119  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20120  0 /*atTimeCode (0/15)*/,
20121  0 /*deltaMinutes*/,
20122  0 /*letterIndex ("")*/,
20123  },
20124  // Rule Para 1996 2001 - Oct Sun>=1 0:00 1:00 -
20125  {
20126  1996 /*fromYear*/,
20127  2001 /*toYear*/,
20128  10 /*inMonth*/,
20129  7 /*onDayOfWeek*/,
20130  1 /*onDayOfMonth*/,
20131  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20132  0 /*atTimeCode (0/15)*/,
20133  60 /*deltaMinutes*/,
20134  0 /*letterIndex ("")*/,
20135  },
20136  // Rule Para 1997 only - Feb lastSun 0:00 0 -
20137  {
20138  1997 /*fromYear*/,
20139  1997 /*toYear*/,
20140  2 /*inMonth*/,
20141  7 /*onDayOfWeek*/,
20142  0 /*onDayOfMonth*/,
20143  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20144  0 /*atTimeCode (0/15)*/,
20145  0 /*deltaMinutes*/,
20146  0 /*letterIndex ("")*/,
20147  },
20148  // Rule Para 1998 2001 - Mar Sun>=1 0:00 0 -
20149  {
20150  1998 /*fromYear*/,
20151  2001 /*toYear*/,
20152  3 /*inMonth*/,
20153  7 /*onDayOfWeek*/,
20154  1 /*onDayOfMonth*/,
20155  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20156  0 /*atTimeCode (0/15)*/,
20157  0 /*deltaMinutes*/,
20158  0 /*letterIndex ("")*/,
20159  },
20160  // Rule Para 2002 2004 - Apr Sun>=1 0:00 0 -
20161  {
20162  2002 /*fromYear*/,
20163  2004 /*toYear*/,
20164  4 /*inMonth*/,
20165  7 /*onDayOfWeek*/,
20166  1 /*onDayOfMonth*/,
20167  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20168  0 /*atTimeCode (0/15)*/,
20169  0 /*deltaMinutes*/,
20170  0 /*letterIndex ("")*/,
20171  },
20172  // Rule Para 2002 2003 - Sep Sun>=1 0:00 1:00 -
20173  {
20174  2002 /*fromYear*/,
20175  2003 /*toYear*/,
20176  9 /*inMonth*/,
20177  7 /*onDayOfWeek*/,
20178  1 /*onDayOfMonth*/,
20179  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20180  0 /*atTimeCode (0/15)*/,
20181  60 /*deltaMinutes*/,
20182  0 /*letterIndex ("")*/,
20183  },
20184  // Rule Para 2004 2009 - Oct Sun>=15 0:00 1:00 -
20185  {
20186  2004 /*fromYear*/,
20187  2009 /*toYear*/,
20188  10 /*inMonth*/,
20189  7 /*onDayOfWeek*/,
20190  15 /*onDayOfMonth*/,
20191  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20192  0 /*atTimeCode (0/15)*/,
20193  60 /*deltaMinutes*/,
20194  0 /*letterIndex ("")*/,
20195  },
20196  // Rule Para 2005 2009 - Mar Sun>=8 0:00 0 -
20197  {
20198  2005 /*fromYear*/,
20199  2009 /*toYear*/,
20200  3 /*inMonth*/,
20201  7 /*onDayOfWeek*/,
20202  8 /*onDayOfMonth*/,
20203  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20204  0 /*atTimeCode (0/15)*/,
20205  0 /*deltaMinutes*/,
20206  0 /*letterIndex ("")*/,
20207  },
20208  // Rule Para 2010 max - Oct Sun>=1 0:00 1:00 -
20209  {
20210  2010 /*fromYear*/,
20211  32766 /*toYear*/,
20212  10 /*inMonth*/,
20213  7 /*onDayOfWeek*/,
20214  1 /*onDayOfMonth*/,
20215  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20216  0 /*atTimeCode (0/15)*/,
20217  60 /*deltaMinutes*/,
20218  0 /*letterIndex ("")*/,
20219  },
20220  // Rule Para 2010 2012 - Apr Sun>=8 0:00 0 -
20221  {
20222  2010 /*fromYear*/,
20223  2012 /*toYear*/,
20224  4 /*inMonth*/,
20225  7 /*onDayOfWeek*/,
20226  8 /*onDayOfMonth*/,
20227  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20228  0 /*atTimeCode (0/15)*/,
20229  0 /*deltaMinutes*/,
20230  0 /*letterIndex ("")*/,
20231  },
20232  // Rule Para 2013 max - Mar Sun>=22 0:00 0 -
20233  {
20234  2013 /*fromYear*/,
20235  32766 /*toYear*/,
20236  3 /*inMonth*/,
20237  7 /*onDayOfWeek*/,
20238  22 /*onDayOfMonth*/,
20239  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20240  0 /*atTimeCode (0/15)*/,
20241  0 /*deltaMinutes*/,
20242  0 /*letterIndex ("")*/,
20243  },
20244 
20245 };
20246 
20247 const complete::ZonePolicy kZonePolicyPara ACE_TIME_PROGMEM = {
20248  kZoneRulesPara /*rules*/,
20249  23 /*numRules*/,
20250 };
20251 
20252 //---------------------------------------------------------------------------
20253 // Policy name: Perry
20254 // Rules: 5
20255 //---------------------------------------------------------------------------
20256 
20257 static const complete::ZoneRule kZoneRulesPerry[] ACE_TIME_PROGMEM = {
20258  // Anchor: Rule Perry 1955 1960 - Sep lastSun 2:00 0 S
20259  {
20260  -32767 /*fromYear*/,
20261  -32767 /*toYear*/,
20262  1 /*inMonth*/,
20263  0 /*onDayOfWeek*/,
20264  1 /*onDayOfMonth*/,
20265  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20266  0 /*atTimeCode (0/15)*/,
20267  0 /*deltaMinutes*/,
20268  25 /*letterIndex ("S")*/,
20269  },
20270  // Rule Perry 1955 only - May 1 0:00 1:00 D
20271  {
20272  1955 /*fromYear*/,
20273  1955 /*toYear*/,
20274  5 /*inMonth*/,
20275  0 /*onDayOfWeek*/,
20276  1 /*onDayOfMonth*/,
20277  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20278  0 /*atTimeCode (0/15)*/,
20279  60 /*deltaMinutes*/,
20280  13 /*letterIndex ("D")*/,
20281  },
20282  // Rule Perry 1955 1960 - Sep lastSun 2:00 0 S
20283  {
20284  1955 /*fromYear*/,
20285  1960 /*toYear*/,
20286  9 /*inMonth*/,
20287  7 /*onDayOfWeek*/,
20288  0 /*onDayOfMonth*/,
20289  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20290  480 /*atTimeCode (7200/15)*/,
20291  0 /*deltaMinutes*/,
20292  25 /*letterIndex ("S")*/,
20293  },
20294  // Rule Perry 1956 1963 - Apr lastSun 2:00 1:00 D
20295  {
20296  1956 /*fromYear*/,
20297  1963 /*toYear*/,
20298  4 /*inMonth*/,
20299  7 /*onDayOfWeek*/,
20300  0 /*onDayOfMonth*/,
20301  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20302  480 /*atTimeCode (7200/15)*/,
20303  60 /*deltaMinutes*/,
20304  13 /*letterIndex ("D")*/,
20305  },
20306  // Rule Perry 1961 1963 - Oct lastSun 2:00 0 S
20307  {
20308  1961 /*fromYear*/,
20309  1963 /*toYear*/,
20310  10 /*inMonth*/,
20311  7 /*onDayOfWeek*/,
20312  0 /*onDayOfMonth*/,
20313  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20314  480 /*atTimeCode (7200/15)*/,
20315  0 /*deltaMinutes*/,
20316  25 /*letterIndex ("S")*/,
20317  },
20318 
20319 };
20320 
20321 const complete::ZonePolicy kZonePolicyPerry ACE_TIME_PROGMEM = {
20322  kZoneRulesPerry /*rules*/,
20323  5 /*numRules*/,
20324 };
20325 
20326 //---------------------------------------------------------------------------
20327 // Policy name: Peru
20328 // Rules: 11
20329 //---------------------------------------------------------------------------
20330 
20331 static const complete::ZoneRule kZoneRulesPeru[] ACE_TIME_PROGMEM = {
20332  // Anchor: Rule Peru 1938 only - Apr 1 0:00 0 -
20333  {
20334  -32767 /*fromYear*/,
20335  -32767 /*toYear*/,
20336  1 /*inMonth*/,
20337  0 /*onDayOfWeek*/,
20338  1 /*onDayOfMonth*/,
20339  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20340  0 /*atTimeCode (0/15)*/,
20341  0 /*deltaMinutes*/,
20342  0 /*letterIndex ("")*/,
20343  },
20344  // Rule Peru 1938 only - Jan 1 0:00 1:00 -
20345  {
20346  1938 /*fromYear*/,
20347  1938 /*toYear*/,
20348  1 /*inMonth*/,
20349  0 /*onDayOfWeek*/,
20350  1 /*onDayOfMonth*/,
20351  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20352  0 /*atTimeCode (0/15)*/,
20353  60 /*deltaMinutes*/,
20354  0 /*letterIndex ("")*/,
20355  },
20356  // Rule Peru 1938 only - Apr 1 0:00 0 -
20357  {
20358  1938 /*fromYear*/,
20359  1938 /*toYear*/,
20360  4 /*inMonth*/,
20361  0 /*onDayOfWeek*/,
20362  1 /*onDayOfMonth*/,
20363  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20364  0 /*atTimeCode (0/15)*/,
20365  0 /*deltaMinutes*/,
20366  0 /*letterIndex ("")*/,
20367  },
20368  // Rule Peru 1938 1939 - Sep lastSun 0:00 1:00 -
20369  {
20370  1938 /*fromYear*/,
20371  1939 /*toYear*/,
20372  9 /*inMonth*/,
20373  7 /*onDayOfWeek*/,
20374  0 /*onDayOfMonth*/,
20375  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20376  0 /*atTimeCode (0/15)*/,
20377  60 /*deltaMinutes*/,
20378  0 /*letterIndex ("")*/,
20379  },
20380  // Rule Peru 1939 1940 - Mar Sun>=24 0:00 0 -
20381  {
20382  1939 /*fromYear*/,
20383  1940 /*toYear*/,
20384  3 /*inMonth*/,
20385  7 /*onDayOfWeek*/,
20386  24 /*onDayOfMonth*/,
20387  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20388  0 /*atTimeCode (0/15)*/,
20389  0 /*deltaMinutes*/,
20390  0 /*letterIndex ("")*/,
20391  },
20392  // Rule Peru 1986 1987 - Jan 1 0:00 1:00 -
20393  {
20394  1986 /*fromYear*/,
20395  1987 /*toYear*/,
20396  1 /*inMonth*/,
20397  0 /*onDayOfWeek*/,
20398  1 /*onDayOfMonth*/,
20399  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20400  0 /*atTimeCode (0/15)*/,
20401  60 /*deltaMinutes*/,
20402  0 /*letterIndex ("")*/,
20403  },
20404  // Rule Peru 1986 1987 - Apr 1 0:00 0 -
20405  {
20406  1986 /*fromYear*/,
20407  1987 /*toYear*/,
20408  4 /*inMonth*/,
20409  0 /*onDayOfWeek*/,
20410  1 /*onDayOfMonth*/,
20411  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20412  0 /*atTimeCode (0/15)*/,
20413  0 /*deltaMinutes*/,
20414  0 /*letterIndex ("")*/,
20415  },
20416  // Rule Peru 1990 only - Jan 1 0:00 1:00 -
20417  {
20418  1990 /*fromYear*/,
20419  1990 /*toYear*/,
20420  1 /*inMonth*/,
20421  0 /*onDayOfWeek*/,
20422  1 /*onDayOfMonth*/,
20423  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20424  0 /*atTimeCode (0/15)*/,
20425  60 /*deltaMinutes*/,
20426  0 /*letterIndex ("")*/,
20427  },
20428  // Rule Peru 1990 only - Apr 1 0:00 0 -
20429  {
20430  1990 /*fromYear*/,
20431  1990 /*toYear*/,
20432  4 /*inMonth*/,
20433  0 /*onDayOfWeek*/,
20434  1 /*onDayOfMonth*/,
20435  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20436  0 /*atTimeCode (0/15)*/,
20437  0 /*deltaMinutes*/,
20438  0 /*letterIndex ("")*/,
20439  },
20440  // Rule Peru 1994 only - Jan 1 0:00 1:00 -
20441  {
20442  1994 /*fromYear*/,
20443  1994 /*toYear*/,
20444  1 /*inMonth*/,
20445  0 /*onDayOfWeek*/,
20446  1 /*onDayOfMonth*/,
20447  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20448  0 /*atTimeCode (0/15)*/,
20449  60 /*deltaMinutes*/,
20450  0 /*letterIndex ("")*/,
20451  },
20452  // Rule Peru 1994 only - Apr 1 0:00 0 -
20453  {
20454  1994 /*fromYear*/,
20455  1994 /*toYear*/,
20456  4 /*inMonth*/,
20457  0 /*onDayOfWeek*/,
20458  1 /*onDayOfMonth*/,
20459  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20460  0 /*atTimeCode (0/15)*/,
20461  0 /*deltaMinutes*/,
20462  0 /*letterIndex ("")*/,
20463  },
20464 
20465 };
20466 
20467 const complete::ZonePolicy kZonePolicyPeru ACE_TIME_PROGMEM = {
20468  kZoneRulesPeru /*rules*/,
20469  11 /*numRules*/,
20470 };
20471 
20472 //---------------------------------------------------------------------------
20473 // Policy name: Phil
20474 // Rules: 7
20475 //---------------------------------------------------------------------------
20476 
20477 static const complete::ZoneRule kZoneRulesPhil[] ACE_TIME_PROGMEM = {
20478  // Anchor: Rule Phil 1937 only - Feb 1 0:00 0 S
20479  {
20480  -32767 /*fromYear*/,
20481  -32767 /*toYear*/,
20482  1 /*inMonth*/,
20483  0 /*onDayOfWeek*/,
20484  1 /*onDayOfMonth*/,
20485  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20486  0 /*atTimeCode (0/15)*/,
20487  0 /*deltaMinutes*/,
20488  25 /*letterIndex ("S")*/,
20489  },
20490  // Rule Phil 1936 only - Nov 1 0:00 1:00 D
20491  {
20492  1936 /*fromYear*/,
20493  1936 /*toYear*/,
20494  11 /*inMonth*/,
20495  0 /*onDayOfWeek*/,
20496  1 /*onDayOfMonth*/,
20497  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20498  0 /*atTimeCode (0/15)*/,
20499  60 /*deltaMinutes*/,
20500  13 /*letterIndex ("D")*/,
20501  },
20502  // Rule Phil 1937 only - Feb 1 0:00 0 S
20503  {
20504  1937 /*fromYear*/,
20505  1937 /*toYear*/,
20506  2 /*inMonth*/,
20507  0 /*onDayOfWeek*/,
20508  1 /*onDayOfMonth*/,
20509  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20510  0 /*atTimeCode (0/15)*/,
20511  0 /*deltaMinutes*/,
20512  25 /*letterIndex ("S")*/,
20513  },
20514  // Rule Phil 1954 only - Apr 12 0:00 1:00 D
20515  {
20516  1954 /*fromYear*/,
20517  1954 /*toYear*/,
20518  4 /*inMonth*/,
20519  0 /*onDayOfWeek*/,
20520  12 /*onDayOfMonth*/,
20521  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20522  0 /*atTimeCode (0/15)*/,
20523  60 /*deltaMinutes*/,
20524  13 /*letterIndex ("D")*/,
20525  },
20526  // Rule Phil 1954 only - Jul 1 0:00 0 S
20527  {
20528  1954 /*fromYear*/,
20529  1954 /*toYear*/,
20530  7 /*inMonth*/,
20531  0 /*onDayOfWeek*/,
20532  1 /*onDayOfMonth*/,
20533  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20534  0 /*atTimeCode (0/15)*/,
20535  0 /*deltaMinutes*/,
20536  25 /*letterIndex ("S")*/,
20537  },
20538  // Rule Phil 1978 only - Mar 22 0:00 1:00 D
20539  {
20540  1978 /*fromYear*/,
20541  1978 /*toYear*/,
20542  3 /*inMonth*/,
20543  0 /*onDayOfWeek*/,
20544  22 /*onDayOfMonth*/,
20545  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20546  0 /*atTimeCode (0/15)*/,
20547  60 /*deltaMinutes*/,
20548  13 /*letterIndex ("D")*/,
20549  },
20550  // Rule Phil 1978 only - Sep 21 0:00 0 S
20551  {
20552  1978 /*fromYear*/,
20553  1978 /*toYear*/,
20554  9 /*inMonth*/,
20555  0 /*onDayOfWeek*/,
20556  21 /*onDayOfMonth*/,
20557  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20558  0 /*atTimeCode (0/15)*/,
20559  0 /*deltaMinutes*/,
20560  25 /*letterIndex ("S")*/,
20561  },
20562 
20563 };
20564 
20565 const complete::ZonePolicy kZonePolicyPhil ACE_TIME_PROGMEM = {
20566  kZoneRulesPhil /*rules*/,
20567  7 /*numRules*/,
20568 };
20569 
20570 //---------------------------------------------------------------------------
20571 // Policy name: Pike
20572 // Rules: 5
20573 //---------------------------------------------------------------------------
20574 
20575 static const complete::ZoneRule kZoneRulesPike[] ACE_TIME_PROGMEM = {
20576  // Anchor: Rule Pike 1955 1960 - Sep lastSun 2:00 0 S
20577  {
20578  -32767 /*fromYear*/,
20579  -32767 /*toYear*/,
20580  1 /*inMonth*/,
20581  0 /*onDayOfWeek*/,
20582  1 /*onDayOfMonth*/,
20583  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20584  0 /*atTimeCode (0/15)*/,
20585  0 /*deltaMinutes*/,
20586  25 /*letterIndex ("S")*/,
20587  },
20588  // Rule Pike 1955 only - May 1 0:00 1:00 D
20589  {
20590  1955 /*fromYear*/,
20591  1955 /*toYear*/,
20592  5 /*inMonth*/,
20593  0 /*onDayOfWeek*/,
20594  1 /*onDayOfMonth*/,
20595  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20596  0 /*atTimeCode (0/15)*/,
20597  60 /*deltaMinutes*/,
20598  13 /*letterIndex ("D")*/,
20599  },
20600  // Rule Pike 1955 1960 - Sep lastSun 2:00 0 S
20601  {
20602  1955 /*fromYear*/,
20603  1960 /*toYear*/,
20604  9 /*inMonth*/,
20605  7 /*onDayOfWeek*/,
20606  0 /*onDayOfMonth*/,
20607  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20608  480 /*atTimeCode (7200/15)*/,
20609  0 /*deltaMinutes*/,
20610  25 /*letterIndex ("S")*/,
20611  },
20612  // Rule Pike 1956 1964 - Apr lastSun 2:00 1:00 D
20613  {
20614  1956 /*fromYear*/,
20615  1964 /*toYear*/,
20616  4 /*inMonth*/,
20617  7 /*onDayOfWeek*/,
20618  0 /*onDayOfMonth*/,
20619  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20620  480 /*atTimeCode (7200/15)*/,
20621  60 /*deltaMinutes*/,
20622  13 /*letterIndex ("D")*/,
20623  },
20624  // Rule Pike 1961 1964 - Oct lastSun 2:00 0 S
20625  {
20626  1961 /*fromYear*/,
20627  1964 /*toYear*/,
20628  10 /*inMonth*/,
20629  7 /*onDayOfWeek*/,
20630  0 /*onDayOfMonth*/,
20631  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20632  480 /*atTimeCode (7200/15)*/,
20633  0 /*deltaMinutes*/,
20634  25 /*letterIndex ("S")*/,
20635  },
20636 
20637 };
20638 
20639 const complete::ZonePolicy kZonePolicyPike ACE_TIME_PROGMEM = {
20640  kZoneRulesPike /*rules*/,
20641  5 /*numRules*/,
20642 };
20643 
20644 //---------------------------------------------------------------------------
20645 // Policy name: Poland
20646 // Rules: 21
20647 //---------------------------------------------------------------------------
20648 
20649 static const complete::ZoneRule kZoneRulesPoland[] ACE_TIME_PROGMEM = {
20650  // Anchor: Rule Poland 1918 1919 - Sep 16 2:00s 0 -
20651  {
20652  -32767 /*fromYear*/,
20653  -32767 /*toYear*/,
20654  1 /*inMonth*/,
20655  0 /*onDayOfWeek*/,
20656  1 /*onDayOfMonth*/,
20657  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20658  0 /*atTimeCode (0/15)*/,
20659  0 /*deltaMinutes*/,
20660  0 /*letterIndex ("")*/,
20661  },
20662  // Rule Poland 1918 1919 - Sep 16 2:00s 0 -
20663  {
20664  1918 /*fromYear*/,
20665  1919 /*toYear*/,
20666  9 /*inMonth*/,
20667  0 /*onDayOfWeek*/,
20668  16 /*onDayOfMonth*/,
20669  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
20670  480 /*atTimeCode (7200/15)*/,
20671  0 /*deltaMinutes*/,
20672  0 /*letterIndex ("")*/,
20673  },
20674  // Rule Poland 1919 only - Apr 15 2:00s 1:00 S
20675  {
20676  1919 /*fromYear*/,
20677  1919 /*toYear*/,
20678  4 /*inMonth*/,
20679  0 /*onDayOfWeek*/,
20680  15 /*onDayOfMonth*/,
20681  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
20682  480 /*atTimeCode (7200/15)*/,
20683  60 /*deltaMinutes*/,
20684  25 /*letterIndex ("S")*/,
20685  },
20686  // Rule Poland 1944 only - Apr 3 2:00s 1:00 S
20687  {
20688  1944 /*fromYear*/,
20689  1944 /*toYear*/,
20690  4 /*inMonth*/,
20691  0 /*onDayOfWeek*/,
20692  3 /*onDayOfMonth*/,
20693  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
20694  480 /*atTimeCode (7200/15)*/,
20695  60 /*deltaMinutes*/,
20696  25 /*letterIndex ("S")*/,
20697  },
20698  // Rule Poland 1944 only - Oct 4 2:00 0 -
20699  {
20700  1944 /*fromYear*/,
20701  1944 /*toYear*/,
20702  10 /*inMonth*/,
20703  0 /*onDayOfWeek*/,
20704  4 /*onDayOfMonth*/,
20705  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20706  480 /*atTimeCode (7200/15)*/,
20707  0 /*deltaMinutes*/,
20708  0 /*letterIndex ("")*/,
20709  },
20710  // Rule Poland 1945 only - Apr 29 0:00 1:00 S
20711  {
20712  1945 /*fromYear*/,
20713  1945 /*toYear*/,
20714  4 /*inMonth*/,
20715  0 /*onDayOfWeek*/,
20716  29 /*onDayOfMonth*/,
20717  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20718  0 /*atTimeCode (0/15)*/,
20719  60 /*deltaMinutes*/,
20720  25 /*letterIndex ("S")*/,
20721  },
20722  // Rule Poland 1945 only - Nov 1 0:00 0 -
20723  {
20724  1945 /*fromYear*/,
20725  1945 /*toYear*/,
20726  11 /*inMonth*/,
20727  0 /*onDayOfWeek*/,
20728  1 /*onDayOfMonth*/,
20729  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20730  0 /*atTimeCode (0/15)*/,
20731  0 /*deltaMinutes*/,
20732  0 /*letterIndex ("")*/,
20733  },
20734  // Rule Poland 1946 only - Apr 14 0:00s 1:00 S
20735  {
20736  1946 /*fromYear*/,
20737  1946 /*toYear*/,
20738  4 /*inMonth*/,
20739  0 /*onDayOfWeek*/,
20740  14 /*onDayOfMonth*/,
20741  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
20742  0 /*atTimeCode (0/15)*/,
20743  60 /*deltaMinutes*/,
20744  25 /*letterIndex ("S")*/,
20745  },
20746  // Rule Poland 1946 only - Oct 7 2:00s 0 -
20747  {
20748  1946 /*fromYear*/,
20749  1946 /*toYear*/,
20750  10 /*inMonth*/,
20751  0 /*onDayOfWeek*/,
20752  7 /*onDayOfMonth*/,
20753  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
20754  480 /*atTimeCode (7200/15)*/,
20755  0 /*deltaMinutes*/,
20756  0 /*letterIndex ("")*/,
20757  },
20758  // Rule Poland 1947 only - May 4 2:00s 1:00 S
20759  {
20760  1947 /*fromYear*/,
20761  1947 /*toYear*/,
20762  5 /*inMonth*/,
20763  0 /*onDayOfWeek*/,
20764  4 /*onDayOfMonth*/,
20765  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
20766  480 /*atTimeCode (7200/15)*/,
20767  60 /*deltaMinutes*/,
20768  25 /*letterIndex ("S")*/,
20769  },
20770  // Rule Poland 1947 1949 - Oct Sun>=1 2:00s 0 -
20771  {
20772  1947 /*fromYear*/,
20773  1949 /*toYear*/,
20774  10 /*inMonth*/,
20775  7 /*onDayOfWeek*/,
20776  1 /*onDayOfMonth*/,
20777  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
20778  480 /*atTimeCode (7200/15)*/,
20779  0 /*deltaMinutes*/,
20780  0 /*letterIndex ("")*/,
20781  },
20782  // Rule Poland 1948 only - Apr 18 2:00s 1:00 S
20783  {
20784  1948 /*fromYear*/,
20785  1948 /*toYear*/,
20786  4 /*inMonth*/,
20787  0 /*onDayOfWeek*/,
20788  18 /*onDayOfMonth*/,
20789  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
20790  480 /*atTimeCode (7200/15)*/,
20791  60 /*deltaMinutes*/,
20792  25 /*letterIndex ("S")*/,
20793  },
20794  // Rule Poland 1949 only - Apr 10 2:00s 1:00 S
20795  {
20796  1949 /*fromYear*/,
20797  1949 /*toYear*/,
20798  4 /*inMonth*/,
20799  0 /*onDayOfWeek*/,
20800  10 /*onDayOfMonth*/,
20801  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
20802  480 /*atTimeCode (7200/15)*/,
20803  60 /*deltaMinutes*/,
20804  25 /*letterIndex ("S")*/,
20805  },
20806  // Rule Poland 1957 only - Jun 2 1:00s 1:00 S
20807  {
20808  1957 /*fromYear*/,
20809  1957 /*toYear*/,
20810  6 /*inMonth*/,
20811  0 /*onDayOfWeek*/,
20812  2 /*onDayOfMonth*/,
20813  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
20814  240 /*atTimeCode (3600/15)*/,
20815  60 /*deltaMinutes*/,
20816  25 /*letterIndex ("S")*/,
20817  },
20818  // Rule Poland 1957 1958 - Sep lastSun 1:00s 0 -
20819  {
20820  1957 /*fromYear*/,
20821  1958 /*toYear*/,
20822  9 /*inMonth*/,
20823  7 /*onDayOfWeek*/,
20824  0 /*onDayOfMonth*/,
20825  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
20826  240 /*atTimeCode (3600/15)*/,
20827  0 /*deltaMinutes*/,
20828  0 /*letterIndex ("")*/,
20829  },
20830  // Rule Poland 1958 only - Mar 30 1:00s 1:00 S
20831  {
20832  1958 /*fromYear*/,
20833  1958 /*toYear*/,
20834  3 /*inMonth*/,
20835  0 /*onDayOfWeek*/,
20836  30 /*onDayOfMonth*/,
20837  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
20838  240 /*atTimeCode (3600/15)*/,
20839  60 /*deltaMinutes*/,
20840  25 /*letterIndex ("S")*/,
20841  },
20842  // Rule Poland 1959 only - May 31 1:00s 1:00 S
20843  {
20844  1959 /*fromYear*/,
20845  1959 /*toYear*/,
20846  5 /*inMonth*/,
20847  0 /*onDayOfWeek*/,
20848  31 /*onDayOfMonth*/,
20849  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
20850  240 /*atTimeCode (3600/15)*/,
20851  60 /*deltaMinutes*/,
20852  25 /*letterIndex ("S")*/,
20853  },
20854  // Rule Poland 1959 1961 - Oct Sun>=1 1:00s 0 -
20855  {
20856  1959 /*fromYear*/,
20857  1961 /*toYear*/,
20858  10 /*inMonth*/,
20859  7 /*onDayOfWeek*/,
20860  1 /*onDayOfMonth*/,
20861  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
20862  240 /*atTimeCode (3600/15)*/,
20863  0 /*deltaMinutes*/,
20864  0 /*letterIndex ("")*/,
20865  },
20866  // Rule Poland 1960 only - Apr 3 1:00s 1:00 S
20867  {
20868  1960 /*fromYear*/,
20869  1960 /*toYear*/,
20870  4 /*inMonth*/,
20871  0 /*onDayOfWeek*/,
20872  3 /*onDayOfMonth*/,
20873  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
20874  240 /*atTimeCode (3600/15)*/,
20875  60 /*deltaMinutes*/,
20876  25 /*letterIndex ("S")*/,
20877  },
20878  // Rule Poland 1961 1964 - May lastSun 1:00s 1:00 S
20879  {
20880  1961 /*fromYear*/,
20881  1964 /*toYear*/,
20882  5 /*inMonth*/,
20883  7 /*onDayOfWeek*/,
20884  0 /*onDayOfMonth*/,
20885  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
20886  240 /*atTimeCode (3600/15)*/,
20887  60 /*deltaMinutes*/,
20888  25 /*letterIndex ("S")*/,
20889  },
20890  // Rule Poland 1962 1964 - Sep lastSun 1:00s 0 -
20891  {
20892  1962 /*fromYear*/,
20893  1964 /*toYear*/,
20894  9 /*inMonth*/,
20895  7 /*onDayOfWeek*/,
20896  0 /*onDayOfMonth*/,
20897  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
20898  240 /*atTimeCode (3600/15)*/,
20899  0 /*deltaMinutes*/,
20900  0 /*letterIndex ("")*/,
20901  },
20902 
20903 };
20904 
20905 const complete::ZonePolicy kZonePolicyPoland ACE_TIME_PROGMEM = {
20906  kZoneRulesPoland /*rules*/,
20907  21 /*numRules*/,
20908 };
20909 
20910 //---------------------------------------------------------------------------
20911 // Policy name: Port
20912 // Rules: 49
20913 //---------------------------------------------------------------------------
20914 
20915 static const complete::ZoneRule kZoneRulesPort[] ACE_TIME_PROGMEM = {
20916  // Anchor: Rule Port 1916 only - Nov 1 1:00 0 -
20917  {
20918  -32767 /*fromYear*/,
20919  -32767 /*toYear*/,
20920  1 /*inMonth*/,
20921  0 /*onDayOfWeek*/,
20922  1 /*onDayOfMonth*/,
20923  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20924  0 /*atTimeCode (0/15)*/,
20925  0 /*deltaMinutes*/,
20926  0 /*letterIndex ("")*/,
20927  },
20928  // Rule Port 1916 only - Jun 17 23:00 1:00 S
20929  {
20930  1916 /*fromYear*/,
20931  1916 /*toYear*/,
20932  6 /*inMonth*/,
20933  0 /*onDayOfWeek*/,
20934  17 /*onDayOfMonth*/,
20935  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20936  5520 /*atTimeCode (82800/15)*/,
20937  60 /*deltaMinutes*/,
20938  25 /*letterIndex ("S")*/,
20939  },
20940  // Rule Port 1916 only - Nov 1 1:00 0 -
20941  {
20942  1916 /*fromYear*/,
20943  1916 /*toYear*/,
20944  11 /*inMonth*/,
20945  0 /*onDayOfWeek*/,
20946  1 /*onDayOfMonth*/,
20947  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
20948  240 /*atTimeCode (3600/15)*/,
20949  0 /*deltaMinutes*/,
20950  0 /*letterIndex ("")*/,
20951  },
20952  // Rule Port 1917 only - Feb 28 23:00s 1:00 S
20953  {
20954  1917 /*fromYear*/,
20955  1917 /*toYear*/,
20956  2 /*inMonth*/,
20957  0 /*onDayOfWeek*/,
20958  28 /*onDayOfMonth*/,
20959  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
20960  5520 /*atTimeCode (82800/15)*/,
20961  60 /*deltaMinutes*/,
20962  25 /*letterIndex ("S")*/,
20963  },
20964  // Rule Port 1917 1921 - Oct 14 23:00s 0 -
20965  {
20966  1917 /*fromYear*/,
20967  1921 /*toYear*/,
20968  10 /*inMonth*/,
20969  0 /*onDayOfWeek*/,
20970  14 /*onDayOfMonth*/,
20971  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
20972  5520 /*atTimeCode (82800/15)*/,
20973  0 /*deltaMinutes*/,
20974  0 /*letterIndex ("")*/,
20975  },
20976  // Rule Port 1918 only - Mar 1 23:00s 1:00 S
20977  {
20978  1918 /*fromYear*/,
20979  1918 /*toYear*/,
20980  3 /*inMonth*/,
20981  0 /*onDayOfWeek*/,
20982  1 /*onDayOfMonth*/,
20983  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
20984  5520 /*atTimeCode (82800/15)*/,
20985  60 /*deltaMinutes*/,
20986  25 /*letterIndex ("S")*/,
20987  },
20988  // Rule Port 1919 only - Feb 28 23:00s 1:00 S
20989  {
20990  1919 /*fromYear*/,
20991  1919 /*toYear*/,
20992  2 /*inMonth*/,
20993  0 /*onDayOfWeek*/,
20994  28 /*onDayOfMonth*/,
20995  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
20996  5520 /*atTimeCode (82800/15)*/,
20997  60 /*deltaMinutes*/,
20998  25 /*letterIndex ("S")*/,
20999  },
21000  // Rule Port 1920 only - Feb 29 23:00s 1:00 S
21001  {
21002  1920 /*fromYear*/,
21003  1920 /*toYear*/,
21004  2 /*inMonth*/,
21005  0 /*onDayOfWeek*/,
21006  29 /*onDayOfMonth*/,
21007  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
21008  5520 /*atTimeCode (82800/15)*/,
21009  60 /*deltaMinutes*/,
21010  25 /*letterIndex ("S")*/,
21011  },
21012  // Rule Port 1921 only - Feb 28 23:00s 1:00 S
21013  {
21014  1921 /*fromYear*/,
21015  1921 /*toYear*/,
21016  2 /*inMonth*/,
21017  0 /*onDayOfWeek*/,
21018  28 /*onDayOfMonth*/,
21019  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
21020  5520 /*atTimeCode (82800/15)*/,
21021  60 /*deltaMinutes*/,
21022  25 /*letterIndex ("S")*/,
21023  },
21024  // Rule Port 1924 only - Apr 16 23:00s 1:00 S
21025  {
21026  1924 /*fromYear*/,
21027  1924 /*toYear*/,
21028  4 /*inMonth*/,
21029  0 /*onDayOfWeek*/,
21030  16 /*onDayOfMonth*/,
21031  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
21032  5520 /*atTimeCode (82800/15)*/,
21033  60 /*deltaMinutes*/,
21034  25 /*letterIndex ("S")*/,
21035  },
21036  // Rule Port 1924 only - Oct 14 23:00s 0 -
21037  {
21038  1924 /*fromYear*/,
21039  1924 /*toYear*/,
21040  10 /*inMonth*/,
21041  0 /*onDayOfWeek*/,
21042  14 /*onDayOfMonth*/,
21043  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
21044  5520 /*atTimeCode (82800/15)*/,
21045  0 /*deltaMinutes*/,
21046  0 /*letterIndex ("")*/,
21047  },
21048  // Rule Port 1926 only - Apr 17 23:00s 1:00 S
21049  {
21050  1926 /*fromYear*/,
21051  1926 /*toYear*/,
21052  4 /*inMonth*/,
21053  0 /*onDayOfWeek*/,
21054  17 /*onDayOfMonth*/,
21055  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
21056  5520 /*atTimeCode (82800/15)*/,
21057  60 /*deltaMinutes*/,
21058  25 /*letterIndex ("S")*/,
21059  },
21060  // Rule Port 1926 1929 - Oct Sat>=1 23:00s 0 -
21061  {
21062  1926 /*fromYear*/,
21063  1929 /*toYear*/,
21064  10 /*inMonth*/,
21065  6 /*onDayOfWeek*/,
21066  1 /*onDayOfMonth*/,
21067  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
21068  5520 /*atTimeCode (82800/15)*/,
21069  0 /*deltaMinutes*/,
21070  0 /*letterIndex ("")*/,
21071  },
21072  // Rule Port 1927 only - Apr 9 23:00s 1:00 S
21073  {
21074  1927 /*fromYear*/,
21075  1927 /*toYear*/,
21076  4 /*inMonth*/,
21077  0 /*onDayOfWeek*/,
21078  9 /*onDayOfMonth*/,
21079  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
21080  5520 /*atTimeCode (82800/15)*/,
21081  60 /*deltaMinutes*/,
21082  25 /*letterIndex ("S")*/,
21083  },
21084  // Rule Port 1928 only - Apr 14 23:00s 1:00 S
21085  {
21086  1928 /*fromYear*/,
21087  1928 /*toYear*/,
21088  4 /*inMonth*/,
21089  0 /*onDayOfWeek*/,
21090  14 /*onDayOfMonth*/,
21091  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
21092  5520 /*atTimeCode (82800/15)*/,
21093  60 /*deltaMinutes*/,
21094  25 /*letterIndex ("S")*/,
21095  },
21096  // Rule Port 1929 only - Apr 20 23:00s 1:00 S
21097  {
21098  1929 /*fromYear*/,
21099  1929 /*toYear*/,
21100  4 /*inMonth*/,
21101  0 /*onDayOfWeek*/,
21102  20 /*onDayOfMonth*/,
21103  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
21104  5520 /*atTimeCode (82800/15)*/,
21105  60 /*deltaMinutes*/,
21106  25 /*letterIndex ("S")*/,
21107  },
21108  // Rule Port 1931 only - Apr 18 23:00s 1:00 S
21109  {
21110  1931 /*fromYear*/,
21111  1931 /*toYear*/,
21112  4 /*inMonth*/,
21113  0 /*onDayOfWeek*/,
21114  18 /*onDayOfMonth*/,
21115  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
21116  5520 /*atTimeCode (82800/15)*/,
21117  60 /*deltaMinutes*/,
21118  25 /*letterIndex ("S")*/,
21119  },
21120  // Rule Port 1931 1932 - Oct Sat>=1 23:00s 0 -
21121  {
21122  1931 /*fromYear*/,
21123  1932 /*toYear*/,
21124  10 /*inMonth*/,
21125  6 /*onDayOfWeek*/,
21126  1 /*onDayOfMonth*/,
21127  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
21128  5520 /*atTimeCode (82800/15)*/,
21129  0 /*deltaMinutes*/,
21130  0 /*letterIndex ("")*/,
21131  },
21132  // Rule Port 1932 only - Apr 2 23:00s 1:00 S
21133  {
21134  1932 /*fromYear*/,
21135  1932 /*toYear*/,
21136  4 /*inMonth*/,
21137  0 /*onDayOfWeek*/,
21138  2 /*onDayOfMonth*/,
21139  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
21140  5520 /*atTimeCode (82800/15)*/,
21141  60 /*deltaMinutes*/,
21142  25 /*letterIndex ("S")*/,
21143  },
21144  // Rule Port 1934 only - Apr 7 23:00s 1:00 S
21145  {
21146  1934 /*fromYear*/,
21147  1934 /*toYear*/,
21148  4 /*inMonth*/,
21149  0 /*onDayOfWeek*/,
21150  7 /*onDayOfMonth*/,
21151  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
21152  5520 /*atTimeCode (82800/15)*/,
21153  60 /*deltaMinutes*/,
21154  25 /*letterIndex ("S")*/,
21155  },
21156  // Rule Port 1934 1938 - Oct Sat>=1 23:00s 0 -
21157  {
21158  1934 /*fromYear*/,
21159  1938 /*toYear*/,
21160  10 /*inMonth*/,
21161  6 /*onDayOfWeek*/,
21162  1 /*onDayOfMonth*/,
21163  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
21164  5520 /*atTimeCode (82800/15)*/,
21165  0 /*deltaMinutes*/,
21166  0 /*letterIndex ("")*/,
21167  },
21168  // Rule Port 1935 only - Mar 30 23:00s 1:00 S
21169  {
21170  1935 /*fromYear*/,
21171  1935 /*toYear*/,
21172  3 /*inMonth*/,
21173  0 /*onDayOfWeek*/,
21174  30 /*onDayOfMonth*/,
21175  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
21176  5520 /*atTimeCode (82800/15)*/,
21177  60 /*deltaMinutes*/,
21178  25 /*letterIndex ("S")*/,
21179  },
21180  // Rule Port 1936 only - Apr 18 23:00s 1:00 S
21181  {
21182  1936 /*fromYear*/,
21183  1936 /*toYear*/,
21184  4 /*inMonth*/,
21185  0 /*onDayOfWeek*/,
21186  18 /*onDayOfMonth*/,
21187  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
21188  5520 /*atTimeCode (82800/15)*/,
21189  60 /*deltaMinutes*/,
21190  25 /*letterIndex ("S")*/,
21191  },
21192  // Rule Port 1937 only - Apr 3 23:00s 1:00 S
21193  {
21194  1937 /*fromYear*/,
21195  1937 /*toYear*/,
21196  4 /*inMonth*/,
21197  0 /*onDayOfWeek*/,
21198  3 /*onDayOfMonth*/,
21199  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
21200  5520 /*atTimeCode (82800/15)*/,
21201  60 /*deltaMinutes*/,
21202  25 /*letterIndex ("S")*/,
21203  },
21204  // Rule Port 1938 only - Mar 26 23:00s 1:00 S
21205  {
21206  1938 /*fromYear*/,
21207  1938 /*toYear*/,
21208  3 /*inMonth*/,
21209  0 /*onDayOfWeek*/,
21210  26 /*onDayOfMonth*/,
21211  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
21212  5520 /*atTimeCode (82800/15)*/,
21213  60 /*deltaMinutes*/,
21214  25 /*letterIndex ("S")*/,
21215  },
21216  // Rule Port 1939 only - Apr 15 23:00s 1:00 S
21217  {
21218  1939 /*fromYear*/,
21219  1939 /*toYear*/,
21220  4 /*inMonth*/,
21221  0 /*onDayOfWeek*/,
21222  15 /*onDayOfMonth*/,
21223  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
21224  5520 /*atTimeCode (82800/15)*/,
21225  60 /*deltaMinutes*/,
21226  25 /*letterIndex ("S")*/,
21227  },
21228  // Rule Port 1939 only - Nov 18 23:00s 0 -
21229  {
21230  1939 /*fromYear*/,
21231  1939 /*toYear*/,
21232  11 /*inMonth*/,
21233  0 /*onDayOfWeek*/,
21234  18 /*onDayOfMonth*/,
21235  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
21236  5520 /*atTimeCode (82800/15)*/,
21237  0 /*deltaMinutes*/,
21238  0 /*letterIndex ("")*/,
21239  },
21240  // Rule Port 1940 only - Feb 24 23:00s 1:00 S
21241  {
21242  1940 /*fromYear*/,
21243  1940 /*toYear*/,
21244  2 /*inMonth*/,
21245  0 /*onDayOfWeek*/,
21246  24 /*onDayOfMonth*/,
21247  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
21248  5520 /*atTimeCode (82800/15)*/,
21249  60 /*deltaMinutes*/,
21250  25 /*letterIndex ("S")*/,
21251  },
21252  // Rule Port 1940 1941 - Oct 5 23:00s 0 -
21253  {
21254  1940 /*fromYear*/,
21255  1941 /*toYear*/,
21256  10 /*inMonth*/,
21257  0 /*onDayOfWeek*/,
21258  5 /*onDayOfMonth*/,
21259  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
21260  5520 /*atTimeCode (82800/15)*/,
21261  0 /*deltaMinutes*/,
21262  0 /*letterIndex ("")*/,
21263  },
21264  // Rule Port 1941 only - Apr 5 23:00s 1:00 S
21265  {
21266  1941 /*fromYear*/,
21267  1941 /*toYear*/,
21268  4 /*inMonth*/,
21269  0 /*onDayOfWeek*/,
21270  5 /*onDayOfMonth*/,
21271  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
21272  5520 /*atTimeCode (82800/15)*/,
21273  60 /*deltaMinutes*/,
21274  25 /*letterIndex ("S")*/,
21275  },
21276  // Rule Port 1942 1945 - Mar Sat>=8 23:00s 1:00 S
21277  {
21278  1942 /*fromYear*/,
21279  1945 /*toYear*/,
21280  3 /*inMonth*/,
21281  6 /*onDayOfWeek*/,
21282  8 /*onDayOfMonth*/,
21283  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
21284  5520 /*atTimeCode (82800/15)*/,
21285  60 /*deltaMinutes*/,
21286  25 /*letterIndex ("S")*/,
21287  },
21288  // Rule Port 1942 only - Apr 25 22:00s 2:00 M
21289  {
21290  1942 /*fromYear*/,
21291  1942 /*toYear*/,
21292  4 /*inMonth*/,
21293  0 /*onDayOfWeek*/,
21294  25 /*onDayOfMonth*/,
21295  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
21296  5280 /*atTimeCode (79200/15)*/,
21297  120 /*deltaMinutes*/,
21298  18 /*letterIndex ("M")*/,
21299  },
21300  // Rule Port 1942 only - Aug 15 22:00s 1:00 S
21301  {
21302  1942 /*fromYear*/,
21303  1942 /*toYear*/,
21304  8 /*inMonth*/,
21305  0 /*onDayOfWeek*/,
21306  15 /*onDayOfMonth*/,
21307  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
21308  5280 /*atTimeCode (79200/15)*/,
21309  60 /*deltaMinutes*/,
21310  25 /*letterIndex ("S")*/,
21311  },
21312  // Rule Port 1942 1945 - Oct Sat>=24 23:00s 0 -
21313  {
21314  1942 /*fromYear*/,
21315  1945 /*toYear*/,
21316  10 /*inMonth*/,
21317  6 /*onDayOfWeek*/,
21318  24 /*onDayOfMonth*/,
21319  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
21320  5520 /*atTimeCode (82800/15)*/,
21321  0 /*deltaMinutes*/,
21322  0 /*letterIndex ("")*/,
21323  },
21324  // Rule Port 1943 only - Apr 17 22:00s 2:00 M
21325  {
21326  1943 /*fromYear*/,
21327  1943 /*toYear*/,
21328  4 /*inMonth*/,
21329  0 /*onDayOfWeek*/,
21330  17 /*onDayOfMonth*/,
21331  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
21332  5280 /*atTimeCode (79200/15)*/,
21333  120 /*deltaMinutes*/,
21334  18 /*letterIndex ("M")*/,
21335  },
21336  // Rule Port 1943 1945 - Aug Sat>=25 22:00s 1:00 S
21337  {
21338  1943 /*fromYear*/,
21339  1945 /*toYear*/,
21340  8 /*inMonth*/,
21341  6 /*onDayOfWeek*/,
21342  25 /*onDayOfMonth*/,
21343  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
21344  5280 /*atTimeCode (79200/15)*/,
21345  60 /*deltaMinutes*/,
21346  25 /*letterIndex ("S")*/,
21347  },
21348  // Rule Port 1944 1945 - Apr Sat>=21 22:00s 2:00 M
21349  {
21350  1944 /*fromYear*/,
21351  1945 /*toYear*/,
21352  4 /*inMonth*/,
21353  6 /*onDayOfWeek*/,
21354  21 /*onDayOfMonth*/,
21355  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
21356  5280 /*atTimeCode (79200/15)*/,
21357  120 /*deltaMinutes*/,
21358  18 /*letterIndex ("M")*/,
21359  },
21360  // Rule Port 1946 only - Apr Sat>=1 23:00s 1:00 S
21361  {
21362  1946 /*fromYear*/,
21363  1946 /*toYear*/,
21364  4 /*inMonth*/,
21365  6 /*onDayOfWeek*/,
21366  1 /*onDayOfMonth*/,
21367  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
21368  5520 /*atTimeCode (82800/15)*/,
21369  60 /*deltaMinutes*/,
21370  25 /*letterIndex ("S")*/,
21371  },
21372  // Rule Port 1946 only - Oct Sat>=1 23:00s 0 -
21373  {
21374  1946 /*fromYear*/,
21375  1946 /*toYear*/,
21376  10 /*inMonth*/,
21377  6 /*onDayOfWeek*/,
21378  1 /*onDayOfMonth*/,
21379  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
21380  5520 /*atTimeCode (82800/15)*/,
21381  0 /*deltaMinutes*/,
21382  0 /*letterIndex ("")*/,
21383  },
21384  // Rule Port 1947 1965 - Apr Sun>=1 2:00s 1:00 S
21385  {
21386  1947 /*fromYear*/,
21387  1965 /*toYear*/,
21388  4 /*inMonth*/,
21389  7 /*onDayOfWeek*/,
21390  1 /*onDayOfMonth*/,
21391  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
21392  480 /*atTimeCode (7200/15)*/,
21393  60 /*deltaMinutes*/,
21394  25 /*letterIndex ("S")*/,
21395  },
21396  // Rule Port 1947 1965 - Oct Sun>=1 2:00s 0 -
21397  {
21398  1947 /*fromYear*/,
21399  1965 /*toYear*/,
21400  10 /*inMonth*/,
21401  7 /*onDayOfWeek*/,
21402  1 /*onDayOfMonth*/,
21403  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
21404  480 /*atTimeCode (7200/15)*/,
21405  0 /*deltaMinutes*/,
21406  0 /*letterIndex ("")*/,
21407  },
21408  // Rule Port 1977 only - Mar 27 0:00s 1:00 S
21409  {
21410  1977 /*fromYear*/,
21411  1977 /*toYear*/,
21412  3 /*inMonth*/,
21413  0 /*onDayOfWeek*/,
21414  27 /*onDayOfMonth*/,
21415  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
21416  0 /*atTimeCode (0/15)*/,
21417  60 /*deltaMinutes*/,
21418  25 /*letterIndex ("S")*/,
21419  },
21420  // Rule Port 1977 only - Sep 25 0:00s 0 -
21421  {
21422  1977 /*fromYear*/,
21423  1977 /*toYear*/,
21424  9 /*inMonth*/,
21425  0 /*onDayOfWeek*/,
21426  25 /*onDayOfMonth*/,
21427  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
21428  0 /*atTimeCode (0/15)*/,
21429  0 /*deltaMinutes*/,
21430  0 /*letterIndex ("")*/,
21431  },
21432  // Rule Port 1978 1979 - Apr Sun>=1 0:00s 1:00 S
21433  {
21434  1978 /*fromYear*/,
21435  1979 /*toYear*/,
21436  4 /*inMonth*/,
21437  7 /*onDayOfWeek*/,
21438  1 /*onDayOfMonth*/,
21439  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
21440  0 /*atTimeCode (0/15)*/,
21441  60 /*deltaMinutes*/,
21442  25 /*letterIndex ("S")*/,
21443  },
21444  // Rule Port 1978 only - Oct 1 0:00s 0 -
21445  {
21446  1978 /*fromYear*/,
21447  1978 /*toYear*/,
21448  10 /*inMonth*/,
21449  0 /*onDayOfWeek*/,
21450  1 /*onDayOfMonth*/,
21451  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
21452  0 /*atTimeCode (0/15)*/,
21453  0 /*deltaMinutes*/,
21454  0 /*letterIndex ("")*/,
21455  },
21456  // Rule Port 1979 1982 - Sep lastSun 1:00s 0 -
21457  {
21458  1979 /*fromYear*/,
21459  1982 /*toYear*/,
21460  9 /*inMonth*/,
21461  7 /*onDayOfWeek*/,
21462  0 /*onDayOfMonth*/,
21463  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
21464  240 /*atTimeCode (3600/15)*/,
21465  0 /*deltaMinutes*/,
21466  0 /*letterIndex ("")*/,
21467  },
21468  // Rule Port 1980 only - Mar lastSun 0:00s 1:00 S
21469  {
21470  1980 /*fromYear*/,
21471  1980 /*toYear*/,
21472  3 /*inMonth*/,
21473  7 /*onDayOfWeek*/,
21474  0 /*onDayOfMonth*/,
21475  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
21476  0 /*atTimeCode (0/15)*/,
21477  60 /*deltaMinutes*/,
21478  25 /*letterIndex ("S")*/,
21479  },
21480  // Rule Port 1981 1982 - Mar lastSun 1:00s 1:00 S
21481  {
21482  1981 /*fromYear*/,
21483  1982 /*toYear*/,
21484  3 /*inMonth*/,
21485  7 /*onDayOfWeek*/,
21486  0 /*onDayOfMonth*/,
21487  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
21488  240 /*atTimeCode (3600/15)*/,
21489  60 /*deltaMinutes*/,
21490  25 /*letterIndex ("S")*/,
21491  },
21492  // Rule Port 1983 only - Mar lastSun 2:00s 1:00 S
21493  {
21494  1983 /*fromYear*/,
21495  1983 /*toYear*/,
21496  3 /*inMonth*/,
21497  7 /*onDayOfWeek*/,
21498  0 /*onDayOfMonth*/,
21499  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
21500  480 /*atTimeCode (7200/15)*/,
21501  60 /*deltaMinutes*/,
21502  25 /*letterIndex ("S")*/,
21503  },
21504 
21505 };
21506 
21507 const complete::ZonePolicy kZonePolicyPort ACE_TIME_PROGMEM = {
21508  kZoneRulesPort /*rules*/,
21509  49 /*numRules*/,
21510 };
21511 
21512 //---------------------------------------------------------------------------
21513 // Policy name: Pulaski
21514 // Rules: 5
21515 //---------------------------------------------------------------------------
21516 
21517 static const complete::ZoneRule kZoneRulesPulaski[] ACE_TIME_PROGMEM = {
21518  // Anchor: Rule Pulaski 1946 1954 - Sep lastSun 2:00 0 S
21519  {
21520  -32767 /*fromYear*/,
21521  -32767 /*toYear*/,
21522  1 /*inMonth*/,
21523  0 /*onDayOfWeek*/,
21524  1 /*onDayOfMonth*/,
21525  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
21526  0 /*atTimeCode (0/15)*/,
21527  0 /*deltaMinutes*/,
21528  25 /*letterIndex ("S")*/,
21529  },
21530  // Rule Pulaski 1946 1960 - Apr lastSun 2:00 1:00 D
21531  {
21532  1946 /*fromYear*/,
21533  1960 /*toYear*/,
21534  4 /*inMonth*/,
21535  7 /*onDayOfWeek*/,
21536  0 /*onDayOfMonth*/,
21537  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
21538  480 /*atTimeCode (7200/15)*/,
21539  60 /*deltaMinutes*/,
21540  13 /*letterIndex ("D")*/,
21541  },
21542  // Rule Pulaski 1946 1954 - Sep lastSun 2:00 0 S
21543  {
21544  1946 /*fromYear*/,
21545  1954 /*toYear*/,
21546  9 /*inMonth*/,
21547  7 /*onDayOfWeek*/,
21548  0 /*onDayOfMonth*/,
21549  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
21550  480 /*atTimeCode (7200/15)*/,
21551  0 /*deltaMinutes*/,
21552  25 /*letterIndex ("S")*/,
21553  },
21554  // Rule Pulaski 1955 1956 - Oct lastSun 2:00 0 S
21555  {
21556  1955 /*fromYear*/,
21557  1956 /*toYear*/,
21558  10 /*inMonth*/,
21559  7 /*onDayOfWeek*/,
21560  0 /*onDayOfMonth*/,
21561  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
21562  480 /*atTimeCode (7200/15)*/,
21563  0 /*deltaMinutes*/,
21564  25 /*letterIndex ("S")*/,
21565  },
21566  // Rule Pulaski 1957 1960 - Sep lastSun 2:00 0 S
21567  {
21568  1957 /*fromYear*/,
21569  1960 /*toYear*/,
21570  9 /*inMonth*/,
21571  7 /*onDayOfWeek*/,
21572  0 /*onDayOfMonth*/,
21573  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
21574  480 /*atTimeCode (7200/15)*/,
21575  0 /*deltaMinutes*/,
21576  25 /*letterIndex ("S")*/,
21577  },
21578 
21579 };
21580 
21581 const complete::ZonePolicy kZonePolicyPulaski ACE_TIME_PROGMEM = {
21582  kZoneRulesPulaski /*rules*/,
21583  5 /*numRules*/,
21584 };
21585 
21586 //---------------------------------------------------------------------------
21587 // Policy name: ROK
21588 // Rules: 15
21589 //---------------------------------------------------------------------------
21590 
21591 static const complete::ZoneRule kZoneRulesROK[] ACE_TIME_PROGMEM = {
21592  // Anchor: Rule ROK 1948 only - Sep 12 24:00 0 S
21593  {
21594  -32767 /*fromYear*/,
21595  -32767 /*toYear*/,
21596  1 /*inMonth*/,
21597  0 /*onDayOfWeek*/,
21598  1 /*onDayOfMonth*/,
21599  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
21600  0 /*atTimeCode (0/15)*/,
21601  0 /*deltaMinutes*/,
21602  25 /*letterIndex ("S")*/,
21603  },
21604  // Rule ROK 1948 only - Jun 1 0:00 1:00 D
21605  {
21606  1948 /*fromYear*/,
21607  1948 /*toYear*/,
21608  6 /*inMonth*/,
21609  0 /*onDayOfWeek*/,
21610  1 /*onDayOfMonth*/,
21611  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
21612  0 /*atTimeCode (0/15)*/,
21613  60 /*deltaMinutes*/,
21614  13 /*letterIndex ("D")*/,
21615  },
21616  // Rule ROK 1948 only - Sep 12 24:00 0 S
21617  {
21618  1948 /*fromYear*/,
21619  1948 /*toYear*/,
21620  9 /*inMonth*/,
21621  0 /*onDayOfWeek*/,
21622  12 /*onDayOfMonth*/,
21623  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
21624  5760 /*atTimeCode (86400/15)*/,
21625  0 /*deltaMinutes*/,
21626  25 /*letterIndex ("S")*/,
21627  },
21628  // Rule ROK 1949 only - Apr 3 0:00 1:00 D
21629  {
21630  1949 /*fromYear*/,
21631  1949 /*toYear*/,
21632  4 /*inMonth*/,
21633  0 /*onDayOfWeek*/,
21634  3 /*onDayOfMonth*/,
21635  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
21636  0 /*atTimeCode (0/15)*/,
21637  60 /*deltaMinutes*/,
21638  13 /*letterIndex ("D")*/,
21639  },
21640  // Rule ROK 1949 1951 - Sep Sat>=7 24:00 0 S
21641  {
21642  1949 /*fromYear*/,
21643  1951 /*toYear*/,
21644  9 /*inMonth*/,
21645  6 /*onDayOfWeek*/,
21646  7 /*onDayOfMonth*/,
21647  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
21648  5760 /*atTimeCode (86400/15)*/,
21649  0 /*deltaMinutes*/,
21650  25 /*letterIndex ("S")*/,
21651  },
21652  // Rule ROK 1950 only - Apr 1 0:00 1:00 D
21653  {
21654  1950 /*fromYear*/,
21655  1950 /*toYear*/,
21656  4 /*inMonth*/,
21657  0 /*onDayOfWeek*/,
21658  1 /*onDayOfMonth*/,
21659  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
21660  0 /*atTimeCode (0/15)*/,
21661  60 /*deltaMinutes*/,
21662  13 /*letterIndex ("D")*/,
21663  },
21664  // Rule ROK 1951 only - May 6 0:00 1:00 D
21665  {
21666  1951 /*fromYear*/,
21667  1951 /*toYear*/,
21668  5 /*inMonth*/,
21669  0 /*onDayOfWeek*/,
21670  6 /*onDayOfMonth*/,
21671  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
21672  0 /*atTimeCode (0/15)*/,
21673  60 /*deltaMinutes*/,
21674  13 /*letterIndex ("D")*/,
21675  },
21676  // Rule ROK 1955 only - May 5 0:00 1:00 D
21677  {
21678  1955 /*fromYear*/,
21679  1955 /*toYear*/,
21680  5 /*inMonth*/,
21681  0 /*onDayOfWeek*/,
21682  5 /*onDayOfMonth*/,
21683  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
21684  0 /*atTimeCode (0/15)*/,
21685  60 /*deltaMinutes*/,
21686  13 /*letterIndex ("D")*/,
21687  },
21688  // Rule ROK 1955 only - Sep 8 24:00 0 S
21689  {
21690  1955 /*fromYear*/,
21691  1955 /*toYear*/,
21692  9 /*inMonth*/,
21693  0 /*onDayOfWeek*/,
21694  8 /*onDayOfMonth*/,
21695  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
21696  5760 /*atTimeCode (86400/15)*/,
21697  0 /*deltaMinutes*/,
21698  25 /*letterIndex ("S")*/,
21699  },
21700  // Rule ROK 1956 only - May 20 0:00 1:00 D
21701  {
21702  1956 /*fromYear*/,
21703  1956 /*toYear*/,
21704  5 /*inMonth*/,
21705  0 /*onDayOfWeek*/,
21706  20 /*onDayOfMonth*/,
21707  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
21708  0 /*atTimeCode (0/15)*/,
21709  60 /*deltaMinutes*/,
21710  13 /*letterIndex ("D")*/,
21711  },
21712  // Rule ROK 1956 only - Sep 29 24:00 0 S
21713  {
21714  1956 /*fromYear*/,
21715  1956 /*toYear*/,
21716  9 /*inMonth*/,
21717  0 /*onDayOfWeek*/,
21718  29 /*onDayOfMonth*/,
21719  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
21720  5760 /*atTimeCode (86400/15)*/,
21721  0 /*deltaMinutes*/,
21722  25 /*letterIndex ("S")*/,
21723  },
21724  // Rule ROK 1957 1960 - May Sun>=1 0:00 1:00 D
21725  {
21726  1957 /*fromYear*/,
21727  1960 /*toYear*/,
21728  5 /*inMonth*/,
21729  7 /*onDayOfWeek*/,
21730  1 /*onDayOfMonth*/,
21731  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
21732  0 /*atTimeCode (0/15)*/,
21733  60 /*deltaMinutes*/,
21734  13 /*letterIndex ("D")*/,
21735  },
21736  // Rule ROK 1957 1960 - Sep Sat>=17 24:00 0 S
21737  {
21738  1957 /*fromYear*/,
21739  1960 /*toYear*/,
21740  9 /*inMonth*/,
21741  6 /*onDayOfWeek*/,
21742  17 /*onDayOfMonth*/,
21743  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
21744  5760 /*atTimeCode (86400/15)*/,
21745  0 /*deltaMinutes*/,
21746  25 /*letterIndex ("S")*/,
21747  },
21748  // Rule ROK 1987 1988 - May Sun>=8 2:00 1:00 D
21749  {
21750  1987 /*fromYear*/,
21751  1988 /*toYear*/,
21752  5 /*inMonth*/,
21753  7 /*onDayOfWeek*/,
21754  8 /*onDayOfMonth*/,
21755  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
21756  480 /*atTimeCode (7200/15)*/,
21757  60 /*deltaMinutes*/,
21758  13 /*letterIndex ("D")*/,
21759  },
21760  // Rule ROK 1987 1988 - Oct Sun>=8 3:00 0 S
21761  {
21762  1987 /*fromYear*/,
21763  1988 /*toYear*/,
21764  10 /*inMonth*/,
21765  7 /*onDayOfWeek*/,
21766  8 /*onDayOfMonth*/,
21767  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
21768  720 /*atTimeCode (10800/15)*/,
21769  0 /*deltaMinutes*/,
21770  25 /*letterIndex ("S")*/,
21771  },
21772 
21773 };
21774 
21775 const complete::ZonePolicy kZonePolicyROK ACE_TIME_PROGMEM = {
21776  kZoneRulesROK /*rules*/,
21777  15 /*numRules*/,
21778 };
21779 
21780 //---------------------------------------------------------------------------
21781 // Policy name: Regina
21782 // Rules: 18
21783 //---------------------------------------------------------------------------
21784 
21785 static const complete::ZoneRule kZoneRulesRegina[] ACE_TIME_PROGMEM = {
21786  // Anchor: Rule Regina 1918 only - Oct 27 2:00 0 S
21787  {
21788  -32767 /*fromYear*/,
21789  -32767 /*toYear*/,
21790  1 /*inMonth*/,
21791  0 /*onDayOfWeek*/,
21792  1 /*onDayOfMonth*/,
21793  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
21794  0 /*atTimeCode (0/15)*/,
21795  0 /*deltaMinutes*/,
21796  25 /*letterIndex ("S")*/,
21797  },
21798  // Rule Regina 1918 only - Apr 14 2:00 1:00 D
21799  {
21800  1918 /*fromYear*/,
21801  1918 /*toYear*/,
21802  4 /*inMonth*/,
21803  0 /*onDayOfWeek*/,
21804  14 /*onDayOfMonth*/,
21805  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
21806  480 /*atTimeCode (7200/15)*/,
21807  60 /*deltaMinutes*/,
21808  13 /*letterIndex ("D")*/,
21809  },
21810  // Rule Regina 1918 only - Oct 27 2:00 0 S
21811  {
21812  1918 /*fromYear*/,
21813  1918 /*toYear*/,
21814  10 /*inMonth*/,
21815  0 /*onDayOfWeek*/,
21816  27 /*onDayOfMonth*/,
21817  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
21818  480 /*atTimeCode (7200/15)*/,
21819  0 /*deltaMinutes*/,
21820  25 /*letterIndex ("S")*/,
21821  },
21822  // Rule Regina 1930 1934 - May Sun>=1 0:00 1:00 D
21823  {
21824  1930 /*fromYear*/,
21825  1934 /*toYear*/,
21826  5 /*inMonth*/,
21827  7 /*onDayOfWeek*/,
21828  1 /*onDayOfMonth*/,
21829  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
21830  0 /*atTimeCode (0/15)*/,
21831  60 /*deltaMinutes*/,
21832  13 /*letterIndex ("D")*/,
21833  },
21834  // Rule Regina 1930 1934 - Oct Sun>=1 0:00 0 S
21835  {
21836  1930 /*fromYear*/,
21837  1934 /*toYear*/,
21838  10 /*inMonth*/,
21839  7 /*onDayOfWeek*/,
21840  1 /*onDayOfMonth*/,
21841  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
21842  0 /*atTimeCode (0/15)*/,
21843  0 /*deltaMinutes*/,
21844  25 /*letterIndex ("S")*/,
21845  },
21846  // Rule Regina 1937 1941 - Apr Sun>=8 0:00 1:00 D
21847  {
21848  1937 /*fromYear*/,
21849  1941 /*toYear*/,
21850  4 /*inMonth*/,
21851  7 /*onDayOfWeek*/,
21852  8 /*onDayOfMonth*/,
21853  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
21854  0 /*atTimeCode (0/15)*/,
21855  60 /*deltaMinutes*/,
21856  13 /*letterIndex ("D")*/,
21857  },
21858  // Rule Regina 1937 only - Oct Sun>=8 0:00 0 S
21859  {
21860  1937 /*fromYear*/,
21861  1937 /*toYear*/,
21862  10 /*inMonth*/,
21863  7 /*onDayOfWeek*/,
21864  8 /*onDayOfMonth*/,
21865  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
21866  0 /*atTimeCode (0/15)*/,
21867  0 /*deltaMinutes*/,
21868  25 /*letterIndex ("S")*/,
21869  },
21870  // Rule Regina 1938 only - Oct Sun>=1 0:00 0 S
21871  {
21872  1938 /*fromYear*/,
21873  1938 /*toYear*/,
21874  10 /*inMonth*/,
21875  7 /*onDayOfWeek*/,
21876  1 /*onDayOfMonth*/,
21877  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
21878  0 /*atTimeCode (0/15)*/,
21879  0 /*deltaMinutes*/,
21880  25 /*letterIndex ("S")*/,
21881  },
21882  // Rule Regina 1939 1941 - Oct Sun>=8 0:00 0 S
21883  {
21884  1939 /*fromYear*/,
21885  1941 /*toYear*/,
21886  10 /*inMonth*/,
21887  7 /*onDayOfWeek*/,
21888  8 /*onDayOfMonth*/,
21889  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
21890  0 /*atTimeCode (0/15)*/,
21891  0 /*deltaMinutes*/,
21892  25 /*letterIndex ("S")*/,
21893  },
21894  // Rule Regina 1942 only - Feb 9 2:00 1:00 W
21895  {
21896  1942 /*fromYear*/,
21897  1942 /*toYear*/,
21898  2 /*inMonth*/,
21899  0 /*onDayOfWeek*/,
21900  9 /*onDayOfMonth*/,
21901  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
21902  480 /*atTimeCode (7200/15)*/,
21903  60 /*deltaMinutes*/,
21904  26 /*letterIndex ("W")*/,
21905  },
21906  // Rule Regina 1945 only - Aug 14 23:00u 1:00 P
21907  {
21908  1945 /*fromYear*/,
21909  1945 /*toYear*/,
21910  8 /*inMonth*/,
21911  0 /*onDayOfWeek*/,
21912  14 /*onDayOfMonth*/,
21913  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
21914  5520 /*atTimeCode (82800/15)*/,
21915  60 /*deltaMinutes*/,
21916  24 /*letterIndex ("P")*/,
21917  },
21918  // Rule Regina 1945 only - Sep lastSun 2:00 0 S
21919  {
21920  1945 /*fromYear*/,
21921  1945 /*toYear*/,
21922  9 /*inMonth*/,
21923  7 /*onDayOfWeek*/,
21924  0 /*onDayOfMonth*/,
21925  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
21926  480 /*atTimeCode (7200/15)*/,
21927  0 /*deltaMinutes*/,
21928  25 /*letterIndex ("S")*/,
21929  },
21930  // Rule Regina 1946 only - Apr Sun>=8 2:00 1:00 D
21931  {
21932  1946 /*fromYear*/,
21933  1946 /*toYear*/,
21934  4 /*inMonth*/,
21935  7 /*onDayOfWeek*/,
21936  8 /*onDayOfMonth*/,
21937  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
21938  480 /*atTimeCode (7200/15)*/,
21939  60 /*deltaMinutes*/,
21940  13 /*letterIndex ("D")*/,
21941  },
21942  // Rule Regina 1946 only - Oct Sun>=8 2:00 0 S
21943  {
21944  1946 /*fromYear*/,
21945  1946 /*toYear*/,
21946  10 /*inMonth*/,
21947  7 /*onDayOfWeek*/,
21948  8 /*onDayOfMonth*/,
21949  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
21950  480 /*atTimeCode (7200/15)*/,
21951  0 /*deltaMinutes*/,
21952  25 /*letterIndex ("S")*/,
21953  },
21954  // Rule Regina 1947 1957 - Apr lastSun 2:00 1:00 D
21955  {
21956  1947 /*fromYear*/,
21957  1957 /*toYear*/,
21958  4 /*inMonth*/,
21959  7 /*onDayOfWeek*/,
21960  0 /*onDayOfMonth*/,
21961  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
21962  480 /*atTimeCode (7200/15)*/,
21963  60 /*deltaMinutes*/,
21964  13 /*letterIndex ("D")*/,
21965  },
21966  // Rule Regina 1947 1957 - Sep lastSun 2:00 0 S
21967  {
21968  1947 /*fromYear*/,
21969  1957 /*toYear*/,
21970  9 /*inMonth*/,
21971  7 /*onDayOfWeek*/,
21972  0 /*onDayOfMonth*/,
21973  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
21974  480 /*atTimeCode (7200/15)*/,
21975  0 /*deltaMinutes*/,
21976  25 /*letterIndex ("S")*/,
21977  },
21978  // Rule Regina 1959 only - Apr lastSun 2:00 1:00 D
21979  {
21980  1959 /*fromYear*/,
21981  1959 /*toYear*/,
21982  4 /*inMonth*/,
21983  7 /*onDayOfWeek*/,
21984  0 /*onDayOfMonth*/,
21985  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
21986  480 /*atTimeCode (7200/15)*/,
21987  60 /*deltaMinutes*/,
21988  13 /*letterIndex ("D")*/,
21989  },
21990  // Rule Regina 1959 only - Oct lastSun 2:00 0 S
21991  {
21992  1959 /*fromYear*/,
21993  1959 /*toYear*/,
21994  10 /*inMonth*/,
21995  7 /*onDayOfWeek*/,
21996  0 /*onDayOfMonth*/,
21997  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
21998  480 /*atTimeCode (7200/15)*/,
21999  0 /*deltaMinutes*/,
22000  25 /*letterIndex ("S")*/,
22001  },
22002 
22003 };
22004 
22005 const complete::ZonePolicy kZonePolicyRegina ACE_TIME_PROGMEM = {
22006  kZoneRulesRegina /*rules*/,
22007  18 /*numRules*/,
22008 };
22009 
22010 //---------------------------------------------------------------------------
22011 // Policy name: Romania
22012 // Rules: 10
22013 //---------------------------------------------------------------------------
22014 
22015 static const complete::ZoneRule kZoneRulesRomania[] ACE_TIME_PROGMEM = {
22016  // Anchor: Rule Romania 1932 1939 - Oct Sun>=1 0:00s 0 -
22017  {
22018  -32767 /*fromYear*/,
22019  -32767 /*toYear*/,
22020  1 /*inMonth*/,
22021  0 /*onDayOfWeek*/,
22022  1 /*onDayOfMonth*/,
22023  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22024  0 /*atTimeCode (0/15)*/,
22025  0 /*deltaMinutes*/,
22026  0 /*letterIndex ("")*/,
22027  },
22028  // Rule Romania 1932 only - May 21 0:00s 1:00 S
22029  {
22030  1932 /*fromYear*/,
22031  1932 /*toYear*/,
22032  5 /*inMonth*/,
22033  0 /*onDayOfWeek*/,
22034  21 /*onDayOfMonth*/,
22035  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
22036  0 /*atTimeCode (0/15)*/,
22037  60 /*deltaMinutes*/,
22038  25 /*letterIndex ("S")*/,
22039  },
22040  // Rule Romania 1932 1939 - Oct Sun>=1 0:00s 0 -
22041  {
22042  1932 /*fromYear*/,
22043  1939 /*toYear*/,
22044  10 /*inMonth*/,
22045  7 /*onDayOfWeek*/,
22046  1 /*onDayOfMonth*/,
22047  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
22048  0 /*atTimeCode (0/15)*/,
22049  0 /*deltaMinutes*/,
22050  0 /*letterIndex ("")*/,
22051  },
22052  // Rule Romania 1933 1939 - Apr Sun>=2 0:00s 1:00 S
22053  {
22054  1933 /*fromYear*/,
22055  1939 /*toYear*/,
22056  4 /*inMonth*/,
22057  7 /*onDayOfWeek*/,
22058  2 /*onDayOfMonth*/,
22059  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
22060  0 /*atTimeCode (0/15)*/,
22061  60 /*deltaMinutes*/,
22062  25 /*letterIndex ("S")*/,
22063  },
22064  // Rule Romania 1979 only - May 27 0:00 1:00 S
22065  {
22066  1979 /*fromYear*/,
22067  1979 /*toYear*/,
22068  5 /*inMonth*/,
22069  0 /*onDayOfWeek*/,
22070  27 /*onDayOfMonth*/,
22071  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22072  0 /*atTimeCode (0/15)*/,
22073  60 /*deltaMinutes*/,
22074  25 /*letterIndex ("S")*/,
22075  },
22076  // Rule Romania 1979 only - Sep lastSun 0:00 0 -
22077  {
22078  1979 /*fromYear*/,
22079  1979 /*toYear*/,
22080  9 /*inMonth*/,
22081  7 /*onDayOfWeek*/,
22082  0 /*onDayOfMonth*/,
22083  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22084  0 /*atTimeCode (0/15)*/,
22085  0 /*deltaMinutes*/,
22086  0 /*letterIndex ("")*/,
22087  },
22088  // Rule Romania 1980 only - Apr 5 23:00 1:00 S
22089  {
22090  1980 /*fromYear*/,
22091  1980 /*toYear*/,
22092  4 /*inMonth*/,
22093  0 /*onDayOfWeek*/,
22094  5 /*onDayOfMonth*/,
22095  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22096  5520 /*atTimeCode (82800/15)*/,
22097  60 /*deltaMinutes*/,
22098  25 /*letterIndex ("S")*/,
22099  },
22100  // Rule Romania 1980 only - Sep lastSun 1:00 0 -
22101  {
22102  1980 /*fromYear*/,
22103  1980 /*toYear*/,
22104  9 /*inMonth*/,
22105  7 /*onDayOfWeek*/,
22106  0 /*onDayOfMonth*/,
22107  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22108  240 /*atTimeCode (3600/15)*/,
22109  0 /*deltaMinutes*/,
22110  0 /*letterIndex ("")*/,
22111  },
22112  // Rule Romania 1991 1993 - Mar lastSun 0:00s 1:00 S
22113  {
22114  1991 /*fromYear*/,
22115  1993 /*toYear*/,
22116  3 /*inMonth*/,
22117  7 /*onDayOfWeek*/,
22118  0 /*onDayOfMonth*/,
22119  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
22120  0 /*atTimeCode (0/15)*/,
22121  60 /*deltaMinutes*/,
22122  25 /*letterIndex ("S")*/,
22123  },
22124  // Rule Romania 1991 1993 - Sep lastSun 0:00s 0 -
22125  {
22126  1991 /*fromYear*/,
22127  1993 /*toYear*/,
22128  9 /*inMonth*/,
22129  7 /*onDayOfWeek*/,
22130  0 /*onDayOfMonth*/,
22131  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
22132  0 /*atTimeCode (0/15)*/,
22133  0 /*deltaMinutes*/,
22134  0 /*letterIndex ("")*/,
22135  },
22136 
22137 };
22138 
22139 const complete::ZonePolicy kZonePolicyRomania ACE_TIME_PROGMEM = {
22140  kZoneRulesRomania /*rules*/,
22141  10 /*numRules*/,
22142 };
22143 
22144 //---------------------------------------------------------------------------
22145 // Policy name: Russia
22146 // Rules: 17
22147 //---------------------------------------------------------------------------
22148 
22149 static const complete::ZoneRule kZoneRulesRussia[] ACE_TIME_PROGMEM = {
22150  // Anchor: Rule Russia 1917 only - Dec 28 0:00 0 MMT
22151  {
22152  -32767 /*fromYear*/,
22153  -32767 /*toYear*/,
22154  1 /*inMonth*/,
22155  0 /*onDayOfWeek*/,
22156  1 /*onDayOfMonth*/,
22157  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22158  0 /*atTimeCode (0/15)*/,
22159  0 /*deltaMinutes*/,
22160  20 /*letterIndex ("MMT")*/,
22161  },
22162  // Rule Russia 1917 only - Jul 1 23:00 1:00 MST
22163  {
22164  1917 /*fromYear*/,
22165  1917 /*toYear*/,
22166  7 /*inMonth*/,
22167  0 /*onDayOfWeek*/,
22168  1 /*onDayOfMonth*/,
22169  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22170  5520 /*atTimeCode (82800/15)*/,
22171  60 /*deltaMinutes*/,
22172  23 /*letterIndex ("MST")*/,
22173  },
22174  // Rule Russia 1917 only - Dec 28 0:00 0 MMT
22175  {
22176  1917 /*fromYear*/,
22177  1917 /*toYear*/,
22178  12 /*inMonth*/,
22179  0 /*onDayOfWeek*/,
22180  28 /*onDayOfMonth*/,
22181  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22182  0 /*atTimeCode (0/15)*/,
22183  0 /*deltaMinutes*/,
22184  20 /*letterIndex ("MMT")*/,
22185  },
22186  // Rule Russia 1918 only - May 31 22:00 2:00 MDST
22187  {
22188  1918 /*fromYear*/,
22189  1918 /*toYear*/,
22190  5 /*inMonth*/,
22191  0 /*onDayOfWeek*/,
22192  31 /*onDayOfMonth*/,
22193  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22194  5280 /*atTimeCode (79200/15)*/,
22195  120 /*deltaMinutes*/,
22196  19 /*letterIndex ("MDST")*/,
22197  },
22198  // Rule Russia 1918 only - Sep 16 1:00 1:00 MST
22199  {
22200  1918 /*fromYear*/,
22201  1918 /*toYear*/,
22202  9 /*inMonth*/,
22203  0 /*onDayOfWeek*/,
22204  16 /*onDayOfMonth*/,
22205  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22206  240 /*atTimeCode (3600/15)*/,
22207  60 /*deltaMinutes*/,
22208  23 /*letterIndex ("MST")*/,
22209  },
22210  // Rule Russia 1919 only - May 31 23:00 2:00 MDST
22211  {
22212  1919 /*fromYear*/,
22213  1919 /*toYear*/,
22214  5 /*inMonth*/,
22215  0 /*onDayOfWeek*/,
22216  31 /*onDayOfMonth*/,
22217  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22218  5520 /*atTimeCode (82800/15)*/,
22219  120 /*deltaMinutes*/,
22220  19 /*letterIndex ("MDST")*/,
22221  },
22222  // Rule Russia 1919 only - Jul 1 0:00u 1:00 MSD
22223  {
22224  1919 /*fromYear*/,
22225  1919 /*toYear*/,
22226  7 /*inMonth*/,
22227  0 /*onDayOfWeek*/,
22228  1 /*onDayOfMonth*/,
22229  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
22230  0 /*atTimeCode (0/15)*/,
22231  60 /*deltaMinutes*/,
22232  21 /*letterIndex ("MSD")*/,
22233  },
22234  // Rule Russia 1919 only - Aug 16 0:00 0 MSK
22235  {
22236  1919 /*fromYear*/,
22237  1919 /*toYear*/,
22238  8 /*inMonth*/,
22239  0 /*onDayOfWeek*/,
22240  16 /*onDayOfMonth*/,
22241  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22242  0 /*atTimeCode (0/15)*/,
22243  0 /*deltaMinutes*/,
22244  22 /*letterIndex ("MSK")*/,
22245  },
22246  // Rule Russia 1921 only - Feb 14 23:00 1:00 MSD
22247  {
22248  1921 /*fromYear*/,
22249  1921 /*toYear*/,
22250  2 /*inMonth*/,
22251  0 /*onDayOfWeek*/,
22252  14 /*onDayOfMonth*/,
22253  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22254  5520 /*atTimeCode (82800/15)*/,
22255  60 /*deltaMinutes*/,
22256  21 /*letterIndex ("MSD")*/,
22257  },
22258  // Rule Russia 1921 only - Mar 20 23:00 2:00 +05
22259  {
22260  1921 /*fromYear*/,
22261  1921 /*toYear*/,
22262  3 /*inMonth*/,
22263  0 /*onDayOfWeek*/,
22264  20 /*onDayOfMonth*/,
22265  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22266  5520 /*atTimeCode (82800/15)*/,
22267  120 /*deltaMinutes*/,
22268  3 /*letterIndex ("+05")*/,
22269  },
22270  // Rule Russia 1921 only - Sep 1 0:00 1:00 MSD
22271  {
22272  1921 /*fromYear*/,
22273  1921 /*toYear*/,
22274  9 /*inMonth*/,
22275  0 /*onDayOfWeek*/,
22276  1 /*onDayOfMonth*/,
22277  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22278  0 /*atTimeCode (0/15)*/,
22279  60 /*deltaMinutes*/,
22280  21 /*letterIndex ("MSD")*/,
22281  },
22282  // Rule Russia 1921 only - Oct 1 0:00 0 -
22283  {
22284  1921 /*fromYear*/,
22285  1921 /*toYear*/,
22286  10 /*inMonth*/,
22287  0 /*onDayOfWeek*/,
22288  1 /*onDayOfMonth*/,
22289  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22290  0 /*atTimeCode (0/15)*/,
22291  0 /*deltaMinutes*/,
22292  0 /*letterIndex ("")*/,
22293  },
22294  // Rule Russia 1981 1984 - Apr 1 0:00 1:00 S
22295  {
22296  1981 /*fromYear*/,
22297  1984 /*toYear*/,
22298  4 /*inMonth*/,
22299  0 /*onDayOfWeek*/,
22300  1 /*onDayOfMonth*/,
22301  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22302  0 /*atTimeCode (0/15)*/,
22303  60 /*deltaMinutes*/,
22304  25 /*letterIndex ("S")*/,
22305  },
22306  // Rule Russia 1981 1983 - Oct 1 0:00 0 -
22307  {
22308  1981 /*fromYear*/,
22309  1983 /*toYear*/,
22310  10 /*inMonth*/,
22311  0 /*onDayOfWeek*/,
22312  1 /*onDayOfMonth*/,
22313  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22314  0 /*atTimeCode (0/15)*/,
22315  0 /*deltaMinutes*/,
22316  0 /*letterIndex ("")*/,
22317  },
22318  // Rule Russia 1984 1995 - Sep lastSun 2:00s 0 -
22319  {
22320  1984 /*fromYear*/,
22321  1995 /*toYear*/,
22322  9 /*inMonth*/,
22323  7 /*onDayOfWeek*/,
22324  0 /*onDayOfMonth*/,
22325  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
22326  480 /*atTimeCode (7200/15)*/,
22327  0 /*deltaMinutes*/,
22328  0 /*letterIndex ("")*/,
22329  },
22330  // Rule Russia 1985 2010 - Mar lastSun 2:00s 1:00 S
22331  {
22332  1985 /*fromYear*/,
22333  2010 /*toYear*/,
22334  3 /*inMonth*/,
22335  7 /*onDayOfWeek*/,
22336  0 /*onDayOfMonth*/,
22337  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
22338  480 /*atTimeCode (7200/15)*/,
22339  60 /*deltaMinutes*/,
22340  25 /*letterIndex ("S")*/,
22341  },
22342  // Rule Russia 1996 2010 - Oct lastSun 2:00s 0 -
22343  {
22344  1996 /*fromYear*/,
22345  2010 /*toYear*/,
22346  10 /*inMonth*/,
22347  7 /*onDayOfWeek*/,
22348  0 /*onDayOfMonth*/,
22349  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
22350  480 /*atTimeCode (7200/15)*/,
22351  0 /*deltaMinutes*/,
22352  0 /*letterIndex ("")*/,
22353  },
22354 
22355 };
22356 
22357 const complete::ZonePolicy kZonePolicyRussia ACE_TIME_PROGMEM = {
22358  kZoneRulesRussia /*rules*/,
22359  17 /*numRules*/,
22360 };
22361 
22362 //---------------------------------------------------------------------------
22363 // Policy name: RussiaAsia
22364 // Rules: 6
22365 //---------------------------------------------------------------------------
22366 
22367 static const complete::ZoneRule kZoneRulesRussiaAsia[] ACE_TIME_PROGMEM = {
22368  // Anchor: Rule RussiaAsia 1981 1983 - Oct 1 0:00 0 -
22369  {
22370  -32767 /*fromYear*/,
22371  -32767 /*toYear*/,
22372  1 /*inMonth*/,
22373  0 /*onDayOfWeek*/,
22374  1 /*onDayOfMonth*/,
22375  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22376  0 /*atTimeCode (0/15)*/,
22377  0 /*deltaMinutes*/,
22378  0 /*letterIndex ("")*/,
22379  },
22380  // Rule RussiaAsia 1981 1984 - Apr 1 0:00 1:00 -
22381  {
22382  1981 /*fromYear*/,
22383  1984 /*toYear*/,
22384  4 /*inMonth*/,
22385  0 /*onDayOfWeek*/,
22386  1 /*onDayOfMonth*/,
22387  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22388  0 /*atTimeCode (0/15)*/,
22389  60 /*deltaMinutes*/,
22390  0 /*letterIndex ("")*/,
22391  },
22392  // Rule RussiaAsia 1981 1983 - Oct 1 0:00 0 -
22393  {
22394  1981 /*fromYear*/,
22395  1983 /*toYear*/,
22396  10 /*inMonth*/,
22397  0 /*onDayOfWeek*/,
22398  1 /*onDayOfMonth*/,
22399  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22400  0 /*atTimeCode (0/15)*/,
22401  0 /*deltaMinutes*/,
22402  0 /*letterIndex ("")*/,
22403  },
22404  // Rule RussiaAsia 1984 1995 - Sep lastSun 2:00s 0 -
22405  {
22406  1984 /*fromYear*/,
22407  1995 /*toYear*/,
22408  9 /*inMonth*/,
22409  7 /*onDayOfWeek*/,
22410  0 /*onDayOfMonth*/,
22411  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
22412  480 /*atTimeCode (7200/15)*/,
22413  0 /*deltaMinutes*/,
22414  0 /*letterIndex ("")*/,
22415  },
22416  // Rule RussiaAsia 1985 2010 - Mar lastSun 2:00s 1:00 -
22417  {
22418  1985 /*fromYear*/,
22419  2010 /*toYear*/,
22420  3 /*inMonth*/,
22421  7 /*onDayOfWeek*/,
22422  0 /*onDayOfMonth*/,
22423  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
22424  480 /*atTimeCode (7200/15)*/,
22425  60 /*deltaMinutes*/,
22426  0 /*letterIndex ("")*/,
22427  },
22428  // Rule RussiaAsia 1996 2010 - Oct lastSun 2:00s 0 -
22429  {
22430  1996 /*fromYear*/,
22431  2010 /*toYear*/,
22432  10 /*inMonth*/,
22433  7 /*onDayOfWeek*/,
22434  0 /*onDayOfMonth*/,
22435  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
22436  480 /*atTimeCode (7200/15)*/,
22437  0 /*deltaMinutes*/,
22438  0 /*letterIndex ("")*/,
22439  },
22440 
22441 };
22442 
22443 const complete::ZonePolicy kZonePolicyRussiaAsia ACE_TIME_PROGMEM = {
22444  kZoneRulesRussiaAsia /*rules*/,
22445  6 /*numRules*/,
22446 };
22447 
22448 //---------------------------------------------------------------------------
22449 // Policy name: SA
22450 // Rules: 3
22451 //---------------------------------------------------------------------------
22452 
22453 static const complete::ZoneRule kZoneRulesSA[] ACE_TIME_PROGMEM = {
22454  // Anchor: Rule SA 1943 1944 - Mar Sun>=15 2:00 0 -
22455  {
22456  -32767 /*fromYear*/,
22457  -32767 /*toYear*/,
22458  1 /*inMonth*/,
22459  0 /*onDayOfWeek*/,
22460  1 /*onDayOfMonth*/,
22461  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22462  0 /*atTimeCode (0/15)*/,
22463  0 /*deltaMinutes*/,
22464  0 /*letterIndex ("")*/,
22465  },
22466  // Rule SA 1942 1943 - Sep Sun>=15 2:00 1:00 -
22467  {
22468  1942 /*fromYear*/,
22469  1943 /*toYear*/,
22470  9 /*inMonth*/,
22471  7 /*onDayOfWeek*/,
22472  15 /*onDayOfMonth*/,
22473  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22474  480 /*atTimeCode (7200/15)*/,
22475  60 /*deltaMinutes*/,
22476  0 /*letterIndex ("")*/,
22477  },
22478  // Rule SA 1943 1944 - Mar Sun>=15 2:00 0 -
22479  {
22480  1943 /*fromYear*/,
22481  1944 /*toYear*/,
22482  3 /*inMonth*/,
22483  7 /*onDayOfWeek*/,
22484  15 /*onDayOfMonth*/,
22485  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22486  480 /*atTimeCode (7200/15)*/,
22487  0 /*deltaMinutes*/,
22488  0 /*letterIndex ("")*/,
22489  },
22490 
22491 };
22492 
22493 const complete::ZonePolicy kZonePolicySA ACE_TIME_PROGMEM = {
22494  kZoneRulesSA /*rules*/,
22495  3 /*numRules*/,
22496 };
22497 
22498 //---------------------------------------------------------------------------
22499 // Policy name: Salv
22500 // Rules: 3
22501 //---------------------------------------------------------------------------
22502 
22503 static const complete::ZoneRule kZoneRulesSalv[] ACE_TIME_PROGMEM = {
22504  // Anchor: Rule Salv 1987 1988 - Sep lastSun 0:00 0 S
22505  {
22506  -32767 /*fromYear*/,
22507  -32767 /*toYear*/,
22508  1 /*inMonth*/,
22509  0 /*onDayOfWeek*/,
22510  1 /*onDayOfMonth*/,
22511  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22512  0 /*atTimeCode (0/15)*/,
22513  0 /*deltaMinutes*/,
22514  25 /*letterIndex ("S")*/,
22515  },
22516  // Rule Salv 1987 1988 - May Sun>=1 0:00 1:00 D
22517  {
22518  1987 /*fromYear*/,
22519  1988 /*toYear*/,
22520  5 /*inMonth*/,
22521  7 /*onDayOfWeek*/,
22522  1 /*onDayOfMonth*/,
22523  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22524  0 /*atTimeCode (0/15)*/,
22525  60 /*deltaMinutes*/,
22526  13 /*letterIndex ("D")*/,
22527  },
22528  // Rule Salv 1987 1988 - Sep lastSun 0:00 0 S
22529  {
22530  1987 /*fromYear*/,
22531  1988 /*toYear*/,
22532  9 /*inMonth*/,
22533  7 /*onDayOfWeek*/,
22534  0 /*onDayOfMonth*/,
22535  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22536  0 /*atTimeCode (0/15)*/,
22537  0 /*deltaMinutes*/,
22538  25 /*letterIndex ("S")*/,
22539  },
22540 
22541 };
22542 
22543 const complete::ZonePolicy kZonePolicySalv ACE_TIME_PROGMEM = {
22544  kZoneRulesSalv /*rules*/,
22545  3 /*numRules*/,
22546 };
22547 
22548 //---------------------------------------------------------------------------
22549 // Policy name: SanLuis
22550 // Rules: 3
22551 //---------------------------------------------------------------------------
22552 
22553 static const complete::ZoneRule kZoneRulesSanLuis[] ACE_TIME_PROGMEM = {
22554  // Anchor: Rule SanLuis 2008 2009 - Mar Sun>=8 0:00 0 -
22555  {
22556  -32767 /*fromYear*/,
22557  -32767 /*toYear*/,
22558  1 /*inMonth*/,
22559  0 /*onDayOfWeek*/,
22560  1 /*onDayOfMonth*/,
22561  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22562  0 /*atTimeCode (0/15)*/,
22563  0 /*deltaMinutes*/,
22564  0 /*letterIndex ("")*/,
22565  },
22566  // Rule SanLuis 2008 2009 - Mar Sun>=8 0:00 0 -
22567  {
22568  2008 /*fromYear*/,
22569  2009 /*toYear*/,
22570  3 /*inMonth*/,
22571  7 /*onDayOfWeek*/,
22572  8 /*onDayOfMonth*/,
22573  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22574  0 /*atTimeCode (0/15)*/,
22575  0 /*deltaMinutes*/,
22576  0 /*letterIndex ("")*/,
22577  },
22578  // Rule SanLuis 2007 2008 - Oct Sun>=8 0:00 1:00 -
22579  {
22580  2007 /*fromYear*/,
22581  2008 /*toYear*/,
22582  10 /*inMonth*/,
22583  7 /*onDayOfWeek*/,
22584  8 /*onDayOfMonth*/,
22585  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22586  0 /*atTimeCode (0/15)*/,
22587  60 /*deltaMinutes*/,
22588  0 /*letterIndex ("")*/,
22589  },
22590 
22591 };
22592 
22593 const complete::ZonePolicy kZonePolicySanLuis ACE_TIME_PROGMEM = {
22594  kZoneRulesSanLuis /*rules*/,
22595  3 /*numRules*/,
22596 };
22597 
22598 //---------------------------------------------------------------------------
22599 // Policy name: Shang
22600 // Rules: 15
22601 //---------------------------------------------------------------------------
22602 
22603 static const complete::ZoneRule kZoneRulesShang[] ACE_TIME_PROGMEM = {
22604  // Anchor: Rule Shang 1919 only - Sep 30 24:00 0 S
22605  {
22606  -32767 /*fromYear*/,
22607  -32767 /*toYear*/,
22608  1 /*inMonth*/,
22609  0 /*onDayOfWeek*/,
22610  1 /*onDayOfMonth*/,
22611  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22612  0 /*atTimeCode (0/15)*/,
22613  0 /*deltaMinutes*/,
22614  25 /*letterIndex ("S")*/,
22615  },
22616  // Rule Shang 1919 only - Apr 12 24:00 1:00 D
22617  {
22618  1919 /*fromYear*/,
22619  1919 /*toYear*/,
22620  4 /*inMonth*/,
22621  0 /*onDayOfWeek*/,
22622  12 /*onDayOfMonth*/,
22623  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22624  5760 /*atTimeCode (86400/15)*/,
22625  60 /*deltaMinutes*/,
22626  13 /*letterIndex ("D")*/,
22627  },
22628  // Rule Shang 1919 only - Sep 30 24:00 0 S
22629  {
22630  1919 /*fromYear*/,
22631  1919 /*toYear*/,
22632  9 /*inMonth*/,
22633  0 /*onDayOfWeek*/,
22634  30 /*onDayOfMonth*/,
22635  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22636  5760 /*atTimeCode (86400/15)*/,
22637  0 /*deltaMinutes*/,
22638  25 /*letterIndex ("S")*/,
22639  },
22640  // Rule Shang 1940 only - Jun 1 0:00 1:00 D
22641  {
22642  1940 /*fromYear*/,
22643  1940 /*toYear*/,
22644  6 /*inMonth*/,
22645  0 /*onDayOfWeek*/,
22646  1 /*onDayOfMonth*/,
22647  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22648  0 /*atTimeCode (0/15)*/,
22649  60 /*deltaMinutes*/,
22650  13 /*letterIndex ("D")*/,
22651  },
22652  // Rule Shang 1940 only - Oct 12 24:00 0 S
22653  {
22654  1940 /*fromYear*/,
22655  1940 /*toYear*/,
22656  10 /*inMonth*/,
22657  0 /*onDayOfWeek*/,
22658  12 /*onDayOfMonth*/,
22659  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22660  5760 /*atTimeCode (86400/15)*/,
22661  0 /*deltaMinutes*/,
22662  25 /*letterIndex ("S")*/,
22663  },
22664  // Rule Shang 1941 only - Mar 15 0:00 1:00 D
22665  {
22666  1941 /*fromYear*/,
22667  1941 /*toYear*/,
22668  3 /*inMonth*/,
22669  0 /*onDayOfWeek*/,
22670  15 /*onDayOfMonth*/,
22671  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22672  0 /*atTimeCode (0/15)*/,
22673  60 /*deltaMinutes*/,
22674  13 /*letterIndex ("D")*/,
22675  },
22676  // Rule Shang 1941 only - Nov 1 24:00 0 S
22677  {
22678  1941 /*fromYear*/,
22679  1941 /*toYear*/,
22680  11 /*inMonth*/,
22681  0 /*onDayOfWeek*/,
22682  1 /*onDayOfMonth*/,
22683  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22684  5760 /*atTimeCode (86400/15)*/,
22685  0 /*deltaMinutes*/,
22686  25 /*letterIndex ("S")*/,
22687  },
22688  // Rule Shang 1942 only - Jan 31 0:00 1:00 D
22689  {
22690  1942 /*fromYear*/,
22691  1942 /*toYear*/,
22692  1 /*inMonth*/,
22693  0 /*onDayOfWeek*/,
22694  31 /*onDayOfMonth*/,
22695  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22696  0 /*atTimeCode (0/15)*/,
22697  60 /*deltaMinutes*/,
22698  13 /*letterIndex ("D")*/,
22699  },
22700  // Rule Shang 1945 only - Sep 1 24:00 0 S
22701  {
22702  1945 /*fromYear*/,
22703  1945 /*toYear*/,
22704  9 /*inMonth*/,
22705  0 /*onDayOfWeek*/,
22706  1 /*onDayOfMonth*/,
22707  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22708  5760 /*atTimeCode (86400/15)*/,
22709  0 /*deltaMinutes*/,
22710  25 /*letterIndex ("S")*/,
22711  },
22712  // Rule Shang 1946 only - May 15 0:00 1:00 D
22713  {
22714  1946 /*fromYear*/,
22715  1946 /*toYear*/,
22716  5 /*inMonth*/,
22717  0 /*onDayOfWeek*/,
22718  15 /*onDayOfMonth*/,
22719  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22720  0 /*atTimeCode (0/15)*/,
22721  60 /*deltaMinutes*/,
22722  13 /*letterIndex ("D")*/,
22723  },
22724  // Rule Shang 1946 only - Sep 30 24:00 0 S
22725  {
22726  1946 /*fromYear*/,
22727  1946 /*toYear*/,
22728  9 /*inMonth*/,
22729  0 /*onDayOfWeek*/,
22730  30 /*onDayOfMonth*/,
22731  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22732  5760 /*atTimeCode (86400/15)*/,
22733  0 /*deltaMinutes*/,
22734  25 /*letterIndex ("S")*/,
22735  },
22736  // Rule Shang 1947 only - Apr 15 0:00 1:00 D
22737  {
22738  1947 /*fromYear*/,
22739  1947 /*toYear*/,
22740  4 /*inMonth*/,
22741  0 /*onDayOfWeek*/,
22742  15 /*onDayOfMonth*/,
22743  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22744  0 /*atTimeCode (0/15)*/,
22745  60 /*deltaMinutes*/,
22746  13 /*letterIndex ("D")*/,
22747  },
22748  // Rule Shang 1947 only - Oct 31 24:00 0 S
22749  {
22750  1947 /*fromYear*/,
22751  1947 /*toYear*/,
22752  10 /*inMonth*/,
22753  0 /*onDayOfWeek*/,
22754  31 /*onDayOfMonth*/,
22755  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22756  5760 /*atTimeCode (86400/15)*/,
22757  0 /*deltaMinutes*/,
22758  25 /*letterIndex ("S")*/,
22759  },
22760  // Rule Shang 1948 1949 - May 1 0:00 1:00 D
22761  {
22762  1948 /*fromYear*/,
22763  1949 /*toYear*/,
22764  5 /*inMonth*/,
22765  0 /*onDayOfWeek*/,
22766  1 /*onDayOfMonth*/,
22767  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22768  0 /*atTimeCode (0/15)*/,
22769  60 /*deltaMinutes*/,
22770  13 /*letterIndex ("D")*/,
22771  },
22772  // Rule Shang 1948 1949 - Sep 30 24:00 0 S
22773  {
22774  1948 /*fromYear*/,
22775  1949 /*toYear*/,
22776  9 /*inMonth*/,
22777  0 /*onDayOfWeek*/,
22778  30 /*onDayOfMonth*/,
22779  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22780  5760 /*atTimeCode (86400/15)*/,
22781  0 /*deltaMinutes*/,
22782  25 /*letterIndex ("S")*/,
22783  },
22784 
22785 };
22786 
22787 const complete::ZonePolicy kZonePolicyShang ACE_TIME_PROGMEM = {
22788  kZoneRulesShang /*rules*/,
22789  15 /*numRules*/,
22790 };
22791 
22792 //---------------------------------------------------------------------------
22793 // Policy name: SovietZone
22794 // Rules: 4
22795 //---------------------------------------------------------------------------
22796 
22797 static const complete::ZoneRule kZoneRulesSovietZone[] ACE_TIME_PROGMEM = {
22798  // Anchor: Rule SovietZone 1945 only - Nov 18 2:00s 0 -
22799  {
22800  -32767 /*fromYear*/,
22801  -32767 /*toYear*/,
22802  1 /*inMonth*/,
22803  0 /*onDayOfWeek*/,
22804  1 /*onDayOfMonth*/,
22805  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22806  0 /*atTimeCode (0/15)*/,
22807  0 /*deltaMinutes*/,
22808  0 /*letterIndex ("")*/,
22809  },
22810  // Rule SovietZone 1945 only - May 24 2:00 2:00 M
22811  {
22812  1945 /*fromYear*/,
22813  1945 /*toYear*/,
22814  5 /*inMonth*/,
22815  0 /*onDayOfWeek*/,
22816  24 /*onDayOfMonth*/,
22817  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22818  480 /*atTimeCode (7200/15)*/,
22819  120 /*deltaMinutes*/,
22820  18 /*letterIndex ("M")*/,
22821  },
22822  // Rule SovietZone 1945 only - Sep 24 3:00 1:00 S
22823  {
22824  1945 /*fromYear*/,
22825  1945 /*toYear*/,
22826  9 /*inMonth*/,
22827  0 /*onDayOfWeek*/,
22828  24 /*onDayOfMonth*/,
22829  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22830  720 /*atTimeCode (10800/15)*/,
22831  60 /*deltaMinutes*/,
22832  25 /*letterIndex ("S")*/,
22833  },
22834  // Rule SovietZone 1945 only - Nov 18 2:00s 0 -
22835  {
22836  1945 /*fromYear*/,
22837  1945 /*toYear*/,
22838  11 /*inMonth*/,
22839  0 /*onDayOfWeek*/,
22840  18 /*onDayOfMonth*/,
22841  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
22842  480 /*atTimeCode (7200/15)*/,
22843  0 /*deltaMinutes*/,
22844  0 /*letterIndex ("")*/,
22845  },
22846 
22847 };
22848 
22849 const complete::ZonePolicy kZonePolicySovietZone ACE_TIME_PROGMEM = {
22850  kZoneRulesSovietZone /*rules*/,
22851  4 /*numRules*/,
22852 };
22853 
22854 //---------------------------------------------------------------------------
22855 // Policy name: Spain
22856 // Rules: 31
22857 //---------------------------------------------------------------------------
22858 
22859 static const complete::ZoneRule kZoneRulesSpain[] ACE_TIME_PROGMEM = {
22860  // Anchor: Rule Spain 1918 1919 - Oct 6 24:00s 0 -
22861  {
22862  -32767 /*fromYear*/,
22863  -32767 /*toYear*/,
22864  1 /*inMonth*/,
22865  0 /*onDayOfWeek*/,
22866  1 /*onDayOfMonth*/,
22867  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22868  0 /*atTimeCode (0/15)*/,
22869  0 /*deltaMinutes*/,
22870  0 /*letterIndex ("")*/,
22871  },
22872  // Rule Spain 1918 only - Apr 15 23:00 1:00 S
22873  {
22874  1918 /*fromYear*/,
22875  1918 /*toYear*/,
22876  4 /*inMonth*/,
22877  0 /*onDayOfWeek*/,
22878  15 /*onDayOfMonth*/,
22879  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22880  5520 /*atTimeCode (82800/15)*/,
22881  60 /*deltaMinutes*/,
22882  25 /*letterIndex ("S")*/,
22883  },
22884  // Rule Spain 1918 1919 - Oct 6 24:00s 0 -
22885  {
22886  1918 /*fromYear*/,
22887  1919 /*toYear*/,
22888  10 /*inMonth*/,
22889  0 /*onDayOfWeek*/,
22890  6 /*onDayOfMonth*/,
22891  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
22892  5760 /*atTimeCode (86400/15)*/,
22893  0 /*deltaMinutes*/,
22894  0 /*letterIndex ("")*/,
22895  },
22896  // Rule Spain 1919 only - Apr 6 23:00 1:00 S
22897  {
22898  1919 /*fromYear*/,
22899  1919 /*toYear*/,
22900  4 /*inMonth*/,
22901  0 /*onDayOfWeek*/,
22902  6 /*onDayOfMonth*/,
22903  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22904  5520 /*atTimeCode (82800/15)*/,
22905  60 /*deltaMinutes*/,
22906  25 /*letterIndex ("S")*/,
22907  },
22908  // Rule Spain 1924 only - Apr 16 23:00 1:00 S
22909  {
22910  1924 /*fromYear*/,
22911  1924 /*toYear*/,
22912  4 /*inMonth*/,
22913  0 /*onDayOfWeek*/,
22914  16 /*onDayOfMonth*/,
22915  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22916  5520 /*atTimeCode (82800/15)*/,
22917  60 /*deltaMinutes*/,
22918  25 /*letterIndex ("S")*/,
22919  },
22920  // Rule Spain 1924 only - Oct 4 24:00s 0 -
22921  {
22922  1924 /*fromYear*/,
22923  1924 /*toYear*/,
22924  10 /*inMonth*/,
22925  0 /*onDayOfWeek*/,
22926  4 /*onDayOfMonth*/,
22927  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
22928  5760 /*atTimeCode (86400/15)*/,
22929  0 /*deltaMinutes*/,
22930  0 /*letterIndex ("")*/,
22931  },
22932  // Rule Spain 1926 only - Apr 17 23:00 1:00 S
22933  {
22934  1926 /*fromYear*/,
22935  1926 /*toYear*/,
22936  4 /*inMonth*/,
22937  0 /*onDayOfWeek*/,
22938  17 /*onDayOfMonth*/,
22939  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22940  5520 /*atTimeCode (82800/15)*/,
22941  60 /*deltaMinutes*/,
22942  25 /*letterIndex ("S")*/,
22943  },
22944  // Rule Spain 1926 1929 - Oct Sat>=1 24:00s 0 -
22945  {
22946  1926 /*fromYear*/,
22947  1929 /*toYear*/,
22948  10 /*inMonth*/,
22949  6 /*onDayOfWeek*/,
22950  1 /*onDayOfMonth*/,
22951  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
22952  5760 /*atTimeCode (86400/15)*/,
22953  0 /*deltaMinutes*/,
22954  0 /*letterIndex ("")*/,
22955  },
22956  // Rule Spain 1927 only - Apr 9 23:00 1:00 S
22957  {
22958  1927 /*fromYear*/,
22959  1927 /*toYear*/,
22960  4 /*inMonth*/,
22961  0 /*onDayOfWeek*/,
22962  9 /*onDayOfMonth*/,
22963  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22964  5520 /*atTimeCode (82800/15)*/,
22965  60 /*deltaMinutes*/,
22966  25 /*letterIndex ("S")*/,
22967  },
22968  // Rule Spain 1928 only - Apr 15 0:00 1:00 S
22969  {
22970  1928 /*fromYear*/,
22971  1928 /*toYear*/,
22972  4 /*inMonth*/,
22973  0 /*onDayOfWeek*/,
22974  15 /*onDayOfMonth*/,
22975  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22976  0 /*atTimeCode (0/15)*/,
22977  60 /*deltaMinutes*/,
22978  25 /*letterIndex ("S")*/,
22979  },
22980  // Rule Spain 1929 only - Apr 20 23:00 1:00 S
22981  {
22982  1929 /*fromYear*/,
22983  1929 /*toYear*/,
22984  4 /*inMonth*/,
22985  0 /*onDayOfWeek*/,
22986  20 /*onDayOfMonth*/,
22987  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
22988  5520 /*atTimeCode (82800/15)*/,
22989  60 /*deltaMinutes*/,
22990  25 /*letterIndex ("S")*/,
22991  },
22992  // Rule Spain 1937 only - Jun 16 23:00 1:00 S
22993  {
22994  1937 /*fromYear*/,
22995  1937 /*toYear*/,
22996  6 /*inMonth*/,
22997  0 /*onDayOfWeek*/,
22998  16 /*onDayOfMonth*/,
22999  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23000  5520 /*atTimeCode (82800/15)*/,
23001  60 /*deltaMinutes*/,
23002  25 /*letterIndex ("S")*/,
23003  },
23004  // Rule Spain 1937 only - Oct 2 24:00s 0 -
23005  {
23006  1937 /*fromYear*/,
23007  1937 /*toYear*/,
23008  10 /*inMonth*/,
23009  0 /*onDayOfWeek*/,
23010  2 /*onDayOfMonth*/,
23011  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
23012  5760 /*atTimeCode (86400/15)*/,
23013  0 /*deltaMinutes*/,
23014  0 /*letterIndex ("")*/,
23015  },
23016  // Rule Spain 1938 only - Apr 2 23:00 1:00 S
23017  {
23018  1938 /*fromYear*/,
23019  1938 /*toYear*/,
23020  4 /*inMonth*/,
23021  0 /*onDayOfWeek*/,
23022  2 /*onDayOfMonth*/,
23023  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23024  5520 /*atTimeCode (82800/15)*/,
23025  60 /*deltaMinutes*/,
23026  25 /*letterIndex ("S")*/,
23027  },
23028  // Rule Spain 1938 only - Apr 30 23:00 2:00 M
23029  {
23030  1938 /*fromYear*/,
23031  1938 /*toYear*/,
23032  4 /*inMonth*/,
23033  0 /*onDayOfWeek*/,
23034  30 /*onDayOfMonth*/,
23035  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23036  5520 /*atTimeCode (82800/15)*/,
23037  120 /*deltaMinutes*/,
23038  18 /*letterIndex ("M")*/,
23039  },
23040  // Rule Spain 1938 only - Oct 2 24:00 1:00 S
23041  {
23042  1938 /*fromYear*/,
23043  1938 /*toYear*/,
23044  10 /*inMonth*/,
23045  0 /*onDayOfWeek*/,
23046  2 /*onDayOfMonth*/,
23047  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23048  5760 /*atTimeCode (86400/15)*/,
23049  60 /*deltaMinutes*/,
23050  25 /*letterIndex ("S")*/,
23051  },
23052  // Rule Spain 1939 only - Oct 7 24:00s 0 -
23053  {
23054  1939 /*fromYear*/,
23055  1939 /*toYear*/,
23056  10 /*inMonth*/,
23057  0 /*onDayOfWeek*/,
23058  7 /*onDayOfMonth*/,
23059  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
23060  5760 /*atTimeCode (86400/15)*/,
23061  0 /*deltaMinutes*/,
23062  0 /*letterIndex ("")*/,
23063  },
23064  // Rule Spain 1942 only - May 2 23:00 1:00 S
23065  {
23066  1942 /*fromYear*/,
23067  1942 /*toYear*/,
23068  5 /*inMonth*/,
23069  0 /*onDayOfWeek*/,
23070  2 /*onDayOfMonth*/,
23071  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23072  5520 /*atTimeCode (82800/15)*/,
23073  60 /*deltaMinutes*/,
23074  25 /*letterIndex ("S")*/,
23075  },
23076  // Rule Spain 1942 only - Sep 1 1:00 0 -
23077  {
23078  1942 /*fromYear*/,
23079  1942 /*toYear*/,
23080  9 /*inMonth*/,
23081  0 /*onDayOfWeek*/,
23082  1 /*onDayOfMonth*/,
23083  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23084  240 /*atTimeCode (3600/15)*/,
23085  0 /*deltaMinutes*/,
23086  0 /*letterIndex ("")*/,
23087  },
23088  // Rule Spain 1943 1946 - Apr Sat>=13 23:00 1:00 S
23089  {
23090  1943 /*fromYear*/,
23091  1946 /*toYear*/,
23092  4 /*inMonth*/,
23093  6 /*onDayOfWeek*/,
23094  13 /*onDayOfMonth*/,
23095  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23096  5520 /*atTimeCode (82800/15)*/,
23097  60 /*deltaMinutes*/,
23098  25 /*letterIndex ("S")*/,
23099  },
23100  // Rule Spain 1943 1944 - Oct Sun>=1 1:00 0 -
23101  {
23102  1943 /*fromYear*/,
23103  1944 /*toYear*/,
23104  10 /*inMonth*/,
23105  7 /*onDayOfWeek*/,
23106  1 /*onDayOfMonth*/,
23107  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23108  240 /*atTimeCode (3600/15)*/,
23109  0 /*deltaMinutes*/,
23110  0 /*letterIndex ("")*/,
23111  },
23112  // Rule Spain 1945 1946 - Sep lastSun 1:00 0 -
23113  {
23114  1945 /*fromYear*/,
23115  1946 /*toYear*/,
23116  9 /*inMonth*/,
23117  7 /*onDayOfWeek*/,
23118  0 /*onDayOfMonth*/,
23119  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23120  240 /*atTimeCode (3600/15)*/,
23121  0 /*deltaMinutes*/,
23122  0 /*letterIndex ("")*/,
23123  },
23124  // Rule Spain 1949 only - Apr 30 23:00 1:00 S
23125  {
23126  1949 /*fromYear*/,
23127  1949 /*toYear*/,
23128  4 /*inMonth*/,
23129  0 /*onDayOfWeek*/,
23130  30 /*onDayOfMonth*/,
23131  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23132  5520 /*atTimeCode (82800/15)*/,
23133  60 /*deltaMinutes*/,
23134  25 /*letterIndex ("S")*/,
23135  },
23136  // Rule Spain 1949 only - Oct 2 1:00 0 -
23137  {
23138  1949 /*fromYear*/,
23139  1949 /*toYear*/,
23140  10 /*inMonth*/,
23141  0 /*onDayOfWeek*/,
23142  2 /*onDayOfMonth*/,
23143  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23144  240 /*atTimeCode (3600/15)*/,
23145  0 /*deltaMinutes*/,
23146  0 /*letterIndex ("")*/,
23147  },
23148  // Rule Spain 1974 1975 - Apr Sat>=12 23:00 1:00 S
23149  {
23150  1974 /*fromYear*/,
23151  1975 /*toYear*/,
23152  4 /*inMonth*/,
23153  6 /*onDayOfWeek*/,
23154  12 /*onDayOfMonth*/,
23155  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23156  5520 /*atTimeCode (82800/15)*/,
23157  60 /*deltaMinutes*/,
23158  25 /*letterIndex ("S")*/,
23159  },
23160  // Rule Spain 1974 1975 - Oct Sun>=1 1:00 0 -
23161  {
23162  1974 /*fromYear*/,
23163  1975 /*toYear*/,
23164  10 /*inMonth*/,
23165  7 /*onDayOfWeek*/,
23166  1 /*onDayOfMonth*/,
23167  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23168  240 /*atTimeCode (3600/15)*/,
23169  0 /*deltaMinutes*/,
23170  0 /*letterIndex ("")*/,
23171  },
23172  // Rule Spain 1976 only - Mar 27 23:00 1:00 S
23173  {
23174  1976 /*fromYear*/,
23175  1976 /*toYear*/,
23176  3 /*inMonth*/,
23177  0 /*onDayOfWeek*/,
23178  27 /*onDayOfMonth*/,
23179  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23180  5520 /*atTimeCode (82800/15)*/,
23181  60 /*deltaMinutes*/,
23182  25 /*letterIndex ("S")*/,
23183  },
23184  // Rule Spain 1976 1977 - Sep lastSun 1:00 0 -
23185  {
23186  1976 /*fromYear*/,
23187  1977 /*toYear*/,
23188  9 /*inMonth*/,
23189  7 /*onDayOfWeek*/,
23190  0 /*onDayOfMonth*/,
23191  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23192  240 /*atTimeCode (3600/15)*/,
23193  0 /*deltaMinutes*/,
23194  0 /*letterIndex ("")*/,
23195  },
23196  // Rule Spain 1977 only - Apr 2 23:00 1:00 S
23197  {
23198  1977 /*fromYear*/,
23199  1977 /*toYear*/,
23200  4 /*inMonth*/,
23201  0 /*onDayOfWeek*/,
23202  2 /*onDayOfMonth*/,
23203  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23204  5520 /*atTimeCode (82800/15)*/,
23205  60 /*deltaMinutes*/,
23206  25 /*letterIndex ("S")*/,
23207  },
23208  // Rule Spain 1978 only - Apr 2 2:00s 1:00 S
23209  {
23210  1978 /*fromYear*/,
23211  1978 /*toYear*/,
23212  4 /*inMonth*/,
23213  0 /*onDayOfWeek*/,
23214  2 /*onDayOfMonth*/,
23215  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
23216  480 /*atTimeCode (7200/15)*/,
23217  60 /*deltaMinutes*/,
23218  25 /*letterIndex ("S")*/,
23219  },
23220  // Rule Spain 1978 only - Oct 1 2:00s 0 -
23221  {
23222  1978 /*fromYear*/,
23223  1978 /*toYear*/,
23224  10 /*inMonth*/,
23225  0 /*onDayOfWeek*/,
23226  1 /*onDayOfMonth*/,
23227  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
23228  480 /*atTimeCode (7200/15)*/,
23229  0 /*deltaMinutes*/,
23230  0 /*letterIndex ("")*/,
23231  },
23232 
23233 };
23234 
23235 const complete::ZonePolicy kZonePolicySpain ACE_TIME_PROGMEM = {
23236  kZoneRulesSpain /*rules*/,
23237  31 /*numRules*/,
23238 };
23239 
23240 //---------------------------------------------------------------------------
23241 // Policy name: SpainAfrica
23242 // Rules: 10
23243 //---------------------------------------------------------------------------
23244 
23245 static const complete::ZoneRule kZoneRulesSpainAfrica[] ACE_TIME_PROGMEM = {
23246  // Anchor: Rule SpainAfrica 1967 only - Oct 1 0:00 0 -
23247  {
23248  -32767 /*fromYear*/,
23249  -32767 /*toYear*/,
23250  1 /*inMonth*/,
23251  0 /*onDayOfWeek*/,
23252  1 /*onDayOfMonth*/,
23253  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23254  0 /*atTimeCode (0/15)*/,
23255  0 /*deltaMinutes*/,
23256  0 /*letterIndex ("")*/,
23257  },
23258  // Rule SpainAfrica 1967 only - Jun 3 12:00 1:00 S
23259  {
23260  1967 /*fromYear*/,
23261  1967 /*toYear*/,
23262  6 /*inMonth*/,
23263  0 /*onDayOfWeek*/,
23264  3 /*onDayOfMonth*/,
23265  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23266  2880 /*atTimeCode (43200/15)*/,
23267  60 /*deltaMinutes*/,
23268  25 /*letterIndex ("S")*/,
23269  },
23270  // Rule SpainAfrica 1967 only - Oct 1 0:00 0 -
23271  {
23272  1967 /*fromYear*/,
23273  1967 /*toYear*/,
23274  10 /*inMonth*/,
23275  0 /*onDayOfWeek*/,
23276  1 /*onDayOfMonth*/,
23277  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23278  0 /*atTimeCode (0/15)*/,
23279  0 /*deltaMinutes*/,
23280  0 /*letterIndex ("")*/,
23281  },
23282  // Rule SpainAfrica 1974 only - Jun 24 0:00 1:00 S
23283  {
23284  1974 /*fromYear*/,
23285  1974 /*toYear*/,
23286  6 /*inMonth*/,
23287  0 /*onDayOfWeek*/,
23288  24 /*onDayOfMonth*/,
23289  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23290  0 /*atTimeCode (0/15)*/,
23291  60 /*deltaMinutes*/,
23292  25 /*letterIndex ("S")*/,
23293  },
23294  // Rule SpainAfrica 1974 only - Sep 1 0:00 0 -
23295  {
23296  1974 /*fromYear*/,
23297  1974 /*toYear*/,
23298  9 /*inMonth*/,
23299  0 /*onDayOfWeek*/,
23300  1 /*onDayOfMonth*/,
23301  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23302  0 /*atTimeCode (0/15)*/,
23303  0 /*deltaMinutes*/,
23304  0 /*letterIndex ("")*/,
23305  },
23306  // Rule SpainAfrica 1976 1977 - May 1 0:00 1:00 S
23307  {
23308  1976 /*fromYear*/,
23309  1977 /*toYear*/,
23310  5 /*inMonth*/,
23311  0 /*onDayOfWeek*/,
23312  1 /*onDayOfMonth*/,
23313  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23314  0 /*atTimeCode (0/15)*/,
23315  60 /*deltaMinutes*/,
23316  25 /*letterIndex ("S")*/,
23317  },
23318  // Rule SpainAfrica 1976 only - Aug 1 0:00 0 -
23319  {
23320  1976 /*fromYear*/,
23321  1976 /*toYear*/,
23322  8 /*inMonth*/,
23323  0 /*onDayOfWeek*/,
23324  1 /*onDayOfMonth*/,
23325  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23326  0 /*atTimeCode (0/15)*/,
23327  0 /*deltaMinutes*/,
23328  0 /*letterIndex ("")*/,
23329  },
23330  // Rule SpainAfrica 1977 only - Sep 28 0:00 0 -
23331  {
23332  1977 /*fromYear*/,
23333  1977 /*toYear*/,
23334  9 /*inMonth*/,
23335  0 /*onDayOfWeek*/,
23336  28 /*onDayOfMonth*/,
23337  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23338  0 /*atTimeCode (0/15)*/,
23339  0 /*deltaMinutes*/,
23340  0 /*letterIndex ("")*/,
23341  },
23342  // Rule SpainAfrica 1978 only - Jun 1 0:00 1:00 S
23343  {
23344  1978 /*fromYear*/,
23345  1978 /*toYear*/,
23346  6 /*inMonth*/,
23347  0 /*onDayOfWeek*/,
23348  1 /*onDayOfMonth*/,
23349  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23350  0 /*atTimeCode (0/15)*/,
23351  60 /*deltaMinutes*/,
23352  25 /*letterIndex ("S")*/,
23353  },
23354  // Rule SpainAfrica 1978 only - Aug 4 0:00 0 -
23355  {
23356  1978 /*fromYear*/,
23357  1978 /*toYear*/,
23358  8 /*inMonth*/,
23359  0 /*onDayOfWeek*/,
23360  4 /*onDayOfMonth*/,
23361  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23362  0 /*atTimeCode (0/15)*/,
23363  0 /*deltaMinutes*/,
23364  0 /*letterIndex ("")*/,
23365  },
23366 
23367 };
23368 
23369 const complete::ZonePolicy kZonePolicySpainAfrica ACE_TIME_PROGMEM = {
23370  kZoneRulesSpainAfrica /*rules*/,
23371  10 /*numRules*/,
23372 };
23373 
23374 //---------------------------------------------------------------------------
23375 // Policy name: StJohns
23376 // Rules: 20
23377 //---------------------------------------------------------------------------
23378 
23379 static const complete::ZoneRule kZoneRulesStJohns[] ACE_TIME_PROGMEM = {
23380  // Anchor: Rule StJohns 1917 only - Sep 17 2:00 0 S
23381  {
23382  -32767 /*fromYear*/,
23383  -32767 /*toYear*/,
23384  1 /*inMonth*/,
23385  0 /*onDayOfWeek*/,
23386  1 /*onDayOfMonth*/,
23387  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23388  0 /*atTimeCode (0/15)*/,
23389  0 /*deltaMinutes*/,
23390  25 /*letterIndex ("S")*/,
23391  },
23392  // Rule StJohns 1917 only - Apr 8 2:00 1:00 D
23393  {
23394  1917 /*fromYear*/,
23395  1917 /*toYear*/,
23396  4 /*inMonth*/,
23397  0 /*onDayOfWeek*/,
23398  8 /*onDayOfMonth*/,
23399  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23400  480 /*atTimeCode (7200/15)*/,
23401  60 /*deltaMinutes*/,
23402  13 /*letterIndex ("D")*/,
23403  },
23404  // Rule StJohns 1917 only - Sep 17 2:00 0 S
23405  {
23406  1917 /*fromYear*/,
23407  1917 /*toYear*/,
23408  9 /*inMonth*/,
23409  0 /*onDayOfWeek*/,
23410  17 /*onDayOfMonth*/,
23411  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23412  480 /*atTimeCode (7200/15)*/,
23413  0 /*deltaMinutes*/,
23414  25 /*letterIndex ("S")*/,
23415  },
23416  // Rule StJohns 1919 only - May 5 23:00 1:00 D
23417  {
23418  1919 /*fromYear*/,
23419  1919 /*toYear*/,
23420  5 /*inMonth*/,
23421  0 /*onDayOfWeek*/,
23422  5 /*onDayOfMonth*/,
23423  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23424  5520 /*atTimeCode (82800/15)*/,
23425  60 /*deltaMinutes*/,
23426  13 /*letterIndex ("D")*/,
23427  },
23428  // Rule StJohns 1919 only - Aug 12 23:00 0 S
23429  {
23430  1919 /*fromYear*/,
23431  1919 /*toYear*/,
23432  8 /*inMonth*/,
23433  0 /*onDayOfWeek*/,
23434  12 /*onDayOfMonth*/,
23435  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23436  5520 /*atTimeCode (82800/15)*/,
23437  0 /*deltaMinutes*/,
23438  25 /*letterIndex ("S")*/,
23439  },
23440  // Rule StJohns 1920 1935 - May Sun>=1 23:00 1:00 D
23441  {
23442  1920 /*fromYear*/,
23443  1935 /*toYear*/,
23444  5 /*inMonth*/,
23445  7 /*onDayOfWeek*/,
23446  1 /*onDayOfMonth*/,
23447  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23448  5520 /*atTimeCode (82800/15)*/,
23449  60 /*deltaMinutes*/,
23450  13 /*letterIndex ("D")*/,
23451  },
23452  // Rule StJohns 1920 1935 - Oct lastSun 23:00 0 S
23453  {
23454  1920 /*fromYear*/,
23455  1935 /*toYear*/,
23456  10 /*inMonth*/,
23457  7 /*onDayOfWeek*/,
23458  0 /*onDayOfMonth*/,
23459  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23460  5520 /*atTimeCode (82800/15)*/,
23461  0 /*deltaMinutes*/,
23462  25 /*letterIndex ("S")*/,
23463  },
23464  // Rule StJohns 1936 1941 - May Mon>=9 0:00 1:00 D
23465  {
23466  1936 /*fromYear*/,
23467  1941 /*toYear*/,
23468  5 /*inMonth*/,
23469  1 /*onDayOfWeek*/,
23470  9 /*onDayOfMonth*/,
23471  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23472  0 /*atTimeCode (0/15)*/,
23473  60 /*deltaMinutes*/,
23474  13 /*letterIndex ("D")*/,
23475  },
23476  // Rule StJohns 1936 1941 - Oct Mon>=2 0:00 0 S
23477  {
23478  1936 /*fromYear*/,
23479  1941 /*toYear*/,
23480  10 /*inMonth*/,
23481  1 /*onDayOfWeek*/,
23482  2 /*onDayOfMonth*/,
23483  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23484  0 /*atTimeCode (0/15)*/,
23485  0 /*deltaMinutes*/,
23486  25 /*letterIndex ("S")*/,
23487  },
23488  // Rule StJohns 1946 1950 - May Sun>=8 2:00 1:00 D
23489  {
23490  1946 /*fromYear*/,
23491  1950 /*toYear*/,
23492  5 /*inMonth*/,
23493  7 /*onDayOfWeek*/,
23494  8 /*onDayOfMonth*/,
23495  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23496  480 /*atTimeCode (7200/15)*/,
23497  60 /*deltaMinutes*/,
23498  13 /*letterIndex ("D")*/,
23499  },
23500  // Rule StJohns 1946 1950 - Oct Sun>=2 2:00 0 S
23501  {
23502  1946 /*fromYear*/,
23503  1950 /*toYear*/,
23504  10 /*inMonth*/,
23505  7 /*onDayOfWeek*/,
23506  2 /*onDayOfMonth*/,
23507  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23508  480 /*atTimeCode (7200/15)*/,
23509  0 /*deltaMinutes*/,
23510  25 /*letterIndex ("S")*/,
23511  },
23512  // Rule StJohns 1951 1986 - Apr lastSun 2:00 1:00 D
23513  {
23514  1951 /*fromYear*/,
23515  1986 /*toYear*/,
23516  4 /*inMonth*/,
23517  7 /*onDayOfWeek*/,
23518  0 /*onDayOfMonth*/,
23519  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23520  480 /*atTimeCode (7200/15)*/,
23521  60 /*deltaMinutes*/,
23522  13 /*letterIndex ("D")*/,
23523  },
23524  // Rule StJohns 1951 1959 - Sep lastSun 2:00 0 S
23525  {
23526  1951 /*fromYear*/,
23527  1959 /*toYear*/,
23528  9 /*inMonth*/,
23529  7 /*onDayOfWeek*/,
23530  0 /*onDayOfMonth*/,
23531  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23532  480 /*atTimeCode (7200/15)*/,
23533  0 /*deltaMinutes*/,
23534  25 /*letterIndex ("S")*/,
23535  },
23536  // Rule StJohns 1960 1986 - Oct lastSun 2:00 0 S
23537  {
23538  1960 /*fromYear*/,
23539  1986 /*toYear*/,
23540  10 /*inMonth*/,
23541  7 /*onDayOfWeek*/,
23542  0 /*onDayOfMonth*/,
23543  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23544  480 /*atTimeCode (7200/15)*/,
23545  0 /*deltaMinutes*/,
23546  25 /*letterIndex ("S")*/,
23547  },
23548  // Rule StJohns 1987 only - Apr Sun>=1 0:01 1:00 D
23549  {
23550  1987 /*fromYear*/,
23551  1987 /*toYear*/,
23552  4 /*inMonth*/,
23553  7 /*onDayOfWeek*/,
23554  1 /*onDayOfMonth*/,
23555  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23556  4 /*atTimeCode (60/15)*/,
23557  60 /*deltaMinutes*/,
23558  13 /*letterIndex ("D")*/,
23559  },
23560  // Rule StJohns 1987 2006 - Oct lastSun 0:01 0 S
23561  {
23562  1987 /*fromYear*/,
23563  2006 /*toYear*/,
23564  10 /*inMonth*/,
23565  7 /*onDayOfWeek*/,
23566  0 /*onDayOfMonth*/,
23567  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23568  4 /*atTimeCode (60/15)*/,
23569  0 /*deltaMinutes*/,
23570  25 /*letterIndex ("S")*/,
23571  },
23572  // Rule StJohns 1988 only - Apr Sun>=1 0:01 2:00 DD
23573  {
23574  1988 /*fromYear*/,
23575  1988 /*toYear*/,
23576  4 /*inMonth*/,
23577  7 /*onDayOfWeek*/,
23578  1 /*onDayOfMonth*/,
23579  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23580  4 /*atTimeCode (60/15)*/,
23581  120 /*deltaMinutes*/,
23582  14 /*letterIndex ("DD")*/,
23583  },
23584  // Rule StJohns 1989 2006 - Apr Sun>=1 0:01 1:00 D
23585  {
23586  1989 /*fromYear*/,
23587  2006 /*toYear*/,
23588  4 /*inMonth*/,
23589  7 /*onDayOfWeek*/,
23590  1 /*onDayOfMonth*/,
23591  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23592  4 /*atTimeCode (60/15)*/,
23593  60 /*deltaMinutes*/,
23594  13 /*letterIndex ("D")*/,
23595  },
23596  // Rule StJohns 2007 2011 - Mar Sun>=8 0:01 1:00 D
23597  {
23598  2007 /*fromYear*/,
23599  2011 /*toYear*/,
23600  3 /*inMonth*/,
23601  7 /*onDayOfWeek*/,
23602  8 /*onDayOfMonth*/,
23603  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23604  4 /*atTimeCode (60/15)*/,
23605  60 /*deltaMinutes*/,
23606  13 /*letterIndex ("D")*/,
23607  },
23608  // Rule StJohns 2007 2010 - Nov Sun>=1 0:01 0 S
23609  {
23610  2007 /*fromYear*/,
23611  2010 /*toYear*/,
23612  11 /*inMonth*/,
23613  7 /*onDayOfWeek*/,
23614  1 /*onDayOfMonth*/,
23615  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23616  4 /*atTimeCode (60/15)*/,
23617  0 /*deltaMinutes*/,
23618  25 /*letterIndex ("S")*/,
23619  },
23620 
23621 };
23622 
23623 const complete::ZonePolicy kZonePolicyStJohns ACE_TIME_PROGMEM = {
23624  kZoneRulesStJohns /*rules*/,
23625  20 /*numRules*/,
23626 };
23627 
23628 //---------------------------------------------------------------------------
23629 // Policy name: Starke
23630 // Rules: 6
23631 //---------------------------------------------------------------------------
23632 
23633 static const complete::ZoneRule kZoneRulesStarke[] ACE_TIME_PROGMEM = {
23634  // Anchor: Rule Starke 1947 1954 - Sep lastSun 2:00 0 S
23635  {
23636  -32767 /*fromYear*/,
23637  -32767 /*toYear*/,
23638  1 /*inMonth*/,
23639  0 /*onDayOfWeek*/,
23640  1 /*onDayOfMonth*/,
23641  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23642  0 /*atTimeCode (0/15)*/,
23643  0 /*deltaMinutes*/,
23644  25 /*letterIndex ("S")*/,
23645  },
23646  // Rule Starke 1947 1961 - Apr lastSun 2:00 1:00 D
23647  {
23648  1947 /*fromYear*/,
23649  1961 /*toYear*/,
23650  4 /*inMonth*/,
23651  7 /*onDayOfWeek*/,
23652  0 /*onDayOfMonth*/,
23653  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23654  480 /*atTimeCode (7200/15)*/,
23655  60 /*deltaMinutes*/,
23656  13 /*letterIndex ("D")*/,
23657  },
23658  // Rule Starke 1947 1954 - Sep lastSun 2:00 0 S
23659  {
23660  1947 /*fromYear*/,
23661  1954 /*toYear*/,
23662  9 /*inMonth*/,
23663  7 /*onDayOfWeek*/,
23664  0 /*onDayOfMonth*/,
23665  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23666  480 /*atTimeCode (7200/15)*/,
23667  0 /*deltaMinutes*/,
23668  25 /*letterIndex ("S")*/,
23669  },
23670  // Rule Starke 1955 1956 - Oct lastSun 2:00 0 S
23671  {
23672  1955 /*fromYear*/,
23673  1956 /*toYear*/,
23674  10 /*inMonth*/,
23675  7 /*onDayOfWeek*/,
23676  0 /*onDayOfMonth*/,
23677  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23678  480 /*atTimeCode (7200/15)*/,
23679  0 /*deltaMinutes*/,
23680  25 /*letterIndex ("S")*/,
23681  },
23682  // Rule Starke 1957 1958 - Sep lastSun 2:00 0 S
23683  {
23684  1957 /*fromYear*/,
23685  1958 /*toYear*/,
23686  9 /*inMonth*/,
23687  7 /*onDayOfWeek*/,
23688  0 /*onDayOfMonth*/,
23689  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23690  480 /*atTimeCode (7200/15)*/,
23691  0 /*deltaMinutes*/,
23692  25 /*letterIndex ("S")*/,
23693  },
23694  // Rule Starke 1959 1961 - Oct lastSun 2:00 0 S
23695  {
23696  1959 /*fromYear*/,
23697  1961 /*toYear*/,
23698  10 /*inMonth*/,
23699  7 /*onDayOfWeek*/,
23700  0 /*onDayOfMonth*/,
23701  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23702  480 /*atTimeCode (7200/15)*/,
23703  0 /*deltaMinutes*/,
23704  25 /*letterIndex ("S")*/,
23705  },
23706 
23707 };
23708 
23709 const complete::ZonePolicy kZonePolicyStarke ACE_TIME_PROGMEM = {
23710  kZoneRulesStarke /*rules*/,
23711  6 /*numRules*/,
23712 };
23713 
23714 //---------------------------------------------------------------------------
23715 // Policy name: Sudan
23716 // Rules: 5
23717 //---------------------------------------------------------------------------
23718 
23719 static const complete::ZoneRule kZoneRulesSudan[] ACE_TIME_PROGMEM = {
23720  // Anchor: Rule Sudan 1970 1985 - Oct 15 0:00 0 -
23721  {
23722  -32767 /*fromYear*/,
23723  -32767 /*toYear*/,
23724  1 /*inMonth*/,
23725  0 /*onDayOfWeek*/,
23726  1 /*onDayOfMonth*/,
23727  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23728  0 /*atTimeCode (0/15)*/,
23729  0 /*deltaMinutes*/,
23730  0 /*letterIndex ("")*/,
23731  },
23732  // Rule Sudan 1970 only - May 1 0:00 1:00 S
23733  {
23734  1970 /*fromYear*/,
23735  1970 /*toYear*/,
23736  5 /*inMonth*/,
23737  0 /*onDayOfWeek*/,
23738  1 /*onDayOfMonth*/,
23739  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23740  0 /*atTimeCode (0/15)*/,
23741  60 /*deltaMinutes*/,
23742  25 /*letterIndex ("S")*/,
23743  },
23744  // Rule Sudan 1970 1985 - Oct 15 0:00 0 -
23745  {
23746  1970 /*fromYear*/,
23747  1985 /*toYear*/,
23748  10 /*inMonth*/,
23749  0 /*onDayOfWeek*/,
23750  15 /*onDayOfMonth*/,
23751  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23752  0 /*atTimeCode (0/15)*/,
23753  0 /*deltaMinutes*/,
23754  0 /*letterIndex ("")*/,
23755  },
23756  // Rule Sudan 1971 only - Apr 30 0:00 1:00 S
23757  {
23758  1971 /*fromYear*/,
23759  1971 /*toYear*/,
23760  4 /*inMonth*/,
23761  0 /*onDayOfWeek*/,
23762  30 /*onDayOfMonth*/,
23763  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23764  0 /*atTimeCode (0/15)*/,
23765  60 /*deltaMinutes*/,
23766  25 /*letterIndex ("S")*/,
23767  },
23768  // Rule Sudan 1972 1985 - Apr lastSun 0:00 1:00 S
23769  {
23770  1972 /*fromYear*/,
23771  1985 /*toYear*/,
23772  4 /*inMonth*/,
23773  7 /*onDayOfWeek*/,
23774  0 /*onDayOfMonth*/,
23775  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23776  0 /*atTimeCode (0/15)*/,
23777  60 /*deltaMinutes*/,
23778  25 /*letterIndex ("S")*/,
23779  },
23780 
23781 };
23782 
23783 const complete::ZonePolicy kZonePolicySudan ACE_TIME_PROGMEM = {
23784  kZoneRulesSudan /*rules*/,
23785  5 /*numRules*/,
23786 };
23787 
23788 //---------------------------------------------------------------------------
23789 // Policy name: Swift
23790 // Rules: 6
23791 //---------------------------------------------------------------------------
23792 
23793 static const complete::ZoneRule kZoneRulesSwift[] ACE_TIME_PROGMEM = {
23794  // Anchor: Rule Swift 1957 only - Oct lastSun 2:00 0 S
23795  {
23796  -32767 /*fromYear*/,
23797  -32767 /*toYear*/,
23798  1 /*inMonth*/,
23799  0 /*onDayOfWeek*/,
23800  1 /*onDayOfMonth*/,
23801  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23802  0 /*atTimeCode (0/15)*/,
23803  0 /*deltaMinutes*/,
23804  25 /*letterIndex ("S")*/,
23805  },
23806  // Rule Swift 1957 only - Apr lastSun 2:00 1:00 D
23807  {
23808  1957 /*fromYear*/,
23809  1957 /*toYear*/,
23810  4 /*inMonth*/,
23811  7 /*onDayOfWeek*/,
23812  0 /*onDayOfMonth*/,
23813  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23814  480 /*atTimeCode (7200/15)*/,
23815  60 /*deltaMinutes*/,
23816  13 /*letterIndex ("D")*/,
23817  },
23818  // Rule Swift 1957 only - Oct lastSun 2:00 0 S
23819  {
23820  1957 /*fromYear*/,
23821  1957 /*toYear*/,
23822  10 /*inMonth*/,
23823  7 /*onDayOfWeek*/,
23824  0 /*onDayOfMonth*/,
23825  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23826  480 /*atTimeCode (7200/15)*/,
23827  0 /*deltaMinutes*/,
23828  25 /*letterIndex ("S")*/,
23829  },
23830  // Rule Swift 1959 1961 - Apr lastSun 2:00 1:00 D
23831  {
23832  1959 /*fromYear*/,
23833  1961 /*toYear*/,
23834  4 /*inMonth*/,
23835  7 /*onDayOfWeek*/,
23836  0 /*onDayOfMonth*/,
23837  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23838  480 /*atTimeCode (7200/15)*/,
23839  60 /*deltaMinutes*/,
23840  13 /*letterIndex ("D")*/,
23841  },
23842  // Rule Swift 1959 only - Oct lastSun 2:00 0 S
23843  {
23844  1959 /*fromYear*/,
23845  1959 /*toYear*/,
23846  10 /*inMonth*/,
23847  7 /*onDayOfWeek*/,
23848  0 /*onDayOfMonth*/,
23849  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23850  480 /*atTimeCode (7200/15)*/,
23851  0 /*deltaMinutes*/,
23852  25 /*letterIndex ("S")*/,
23853  },
23854  // Rule Swift 1960 1961 - Sep lastSun 2:00 0 S
23855  {
23856  1960 /*fromYear*/,
23857  1961 /*toYear*/,
23858  9 /*inMonth*/,
23859  7 /*onDayOfWeek*/,
23860  0 /*onDayOfMonth*/,
23861  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23862  480 /*atTimeCode (7200/15)*/,
23863  0 /*deltaMinutes*/,
23864  25 /*letterIndex ("S")*/,
23865  },
23866 
23867 };
23868 
23869 const complete::ZonePolicy kZonePolicySwift ACE_TIME_PROGMEM = {
23870  kZoneRulesSwift /*rules*/,
23871  6 /*numRules*/,
23872 };
23873 
23874 //---------------------------------------------------------------------------
23875 // Policy name: Swiss
23876 // Rules: 3
23877 //---------------------------------------------------------------------------
23878 
23879 static const complete::ZoneRule kZoneRulesSwiss[] ACE_TIME_PROGMEM = {
23880  // Anchor: Rule Swiss 1941 1942 - Oct Mon>=1 2:00 0 -
23881  {
23882  -32767 /*fromYear*/,
23883  -32767 /*toYear*/,
23884  1 /*inMonth*/,
23885  0 /*onDayOfWeek*/,
23886  1 /*onDayOfMonth*/,
23887  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23888  0 /*atTimeCode (0/15)*/,
23889  0 /*deltaMinutes*/,
23890  0 /*letterIndex ("")*/,
23891  },
23892  // Rule Swiss 1941 1942 - May Mon>=1 1:00 1:00 S
23893  {
23894  1941 /*fromYear*/,
23895  1942 /*toYear*/,
23896  5 /*inMonth*/,
23897  1 /*onDayOfWeek*/,
23898  1 /*onDayOfMonth*/,
23899  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23900  240 /*atTimeCode (3600/15)*/,
23901  60 /*deltaMinutes*/,
23902  25 /*letterIndex ("S")*/,
23903  },
23904  // Rule Swiss 1941 1942 - Oct Mon>=1 2:00 0 -
23905  {
23906  1941 /*fromYear*/,
23907  1942 /*toYear*/,
23908  10 /*inMonth*/,
23909  1 /*onDayOfWeek*/,
23910  1 /*onDayOfMonth*/,
23911  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23912  480 /*atTimeCode (7200/15)*/,
23913  0 /*deltaMinutes*/,
23914  0 /*letterIndex ("")*/,
23915  },
23916 
23917 };
23918 
23919 const complete::ZonePolicy kZonePolicySwiss ACE_TIME_PROGMEM = {
23920  kZoneRulesSwiss /*rules*/,
23921  3 /*numRules*/,
23922 };
23923 
23924 //---------------------------------------------------------------------------
23925 // Policy name: Syria
23926 // Rules: 42
23927 //---------------------------------------------------------------------------
23928 
23929 static const complete::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = {
23930  // Anchor: Rule Syria 1920 1923 - Oct Sun>=1 2:00 0 -
23931  {
23932  -32767 /*fromYear*/,
23933  -32767 /*toYear*/,
23934  1 /*inMonth*/,
23935  0 /*onDayOfWeek*/,
23936  1 /*onDayOfMonth*/,
23937  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23938  0 /*atTimeCode (0/15)*/,
23939  0 /*deltaMinutes*/,
23940  0 /*letterIndex ("")*/,
23941  },
23942  // Rule Syria 1920 1923 - Apr Sun>=15 2:00 1:00 S
23943  {
23944  1920 /*fromYear*/,
23945  1923 /*toYear*/,
23946  4 /*inMonth*/,
23947  7 /*onDayOfWeek*/,
23948  15 /*onDayOfMonth*/,
23949  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23950  480 /*atTimeCode (7200/15)*/,
23951  60 /*deltaMinutes*/,
23952  25 /*letterIndex ("S")*/,
23953  },
23954  // Rule Syria 1920 1923 - Oct Sun>=1 2:00 0 -
23955  {
23956  1920 /*fromYear*/,
23957  1923 /*toYear*/,
23958  10 /*inMonth*/,
23959  7 /*onDayOfWeek*/,
23960  1 /*onDayOfMonth*/,
23961  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23962  480 /*atTimeCode (7200/15)*/,
23963  0 /*deltaMinutes*/,
23964  0 /*letterIndex ("")*/,
23965  },
23966  // Rule Syria 1962 only - Apr 29 2:00 1:00 S
23967  {
23968  1962 /*fromYear*/,
23969  1962 /*toYear*/,
23970  4 /*inMonth*/,
23971  0 /*onDayOfWeek*/,
23972  29 /*onDayOfMonth*/,
23973  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23974  480 /*atTimeCode (7200/15)*/,
23975  60 /*deltaMinutes*/,
23976  25 /*letterIndex ("S")*/,
23977  },
23978  // Rule Syria 1962 only - Oct 1 2:00 0 -
23979  {
23980  1962 /*fromYear*/,
23981  1962 /*toYear*/,
23982  10 /*inMonth*/,
23983  0 /*onDayOfWeek*/,
23984  1 /*onDayOfMonth*/,
23985  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23986  480 /*atTimeCode (7200/15)*/,
23987  0 /*deltaMinutes*/,
23988  0 /*letterIndex ("")*/,
23989  },
23990  // Rule Syria 1963 1965 - May 1 2:00 1:00 S
23991  {
23992  1963 /*fromYear*/,
23993  1965 /*toYear*/,
23994  5 /*inMonth*/,
23995  0 /*onDayOfWeek*/,
23996  1 /*onDayOfMonth*/,
23997  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
23998  480 /*atTimeCode (7200/15)*/,
23999  60 /*deltaMinutes*/,
24000  25 /*letterIndex ("S")*/,
24001  },
24002  // Rule Syria 1963 only - Sep 30 2:00 0 -
24003  {
24004  1963 /*fromYear*/,
24005  1963 /*toYear*/,
24006  9 /*inMonth*/,
24007  0 /*onDayOfWeek*/,
24008  30 /*onDayOfMonth*/,
24009  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24010  480 /*atTimeCode (7200/15)*/,
24011  0 /*deltaMinutes*/,
24012  0 /*letterIndex ("")*/,
24013  },
24014  // Rule Syria 1964 only - Oct 1 2:00 0 -
24015  {
24016  1964 /*fromYear*/,
24017  1964 /*toYear*/,
24018  10 /*inMonth*/,
24019  0 /*onDayOfWeek*/,
24020  1 /*onDayOfMonth*/,
24021  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24022  480 /*atTimeCode (7200/15)*/,
24023  0 /*deltaMinutes*/,
24024  0 /*letterIndex ("")*/,
24025  },
24026  // Rule Syria 1965 only - Sep 30 2:00 0 -
24027  {
24028  1965 /*fromYear*/,
24029  1965 /*toYear*/,
24030  9 /*inMonth*/,
24031  0 /*onDayOfWeek*/,
24032  30 /*onDayOfMonth*/,
24033  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24034  480 /*atTimeCode (7200/15)*/,
24035  0 /*deltaMinutes*/,
24036  0 /*letterIndex ("")*/,
24037  },
24038  // Rule Syria 1966 only - Apr 24 2:00 1:00 S
24039  {
24040  1966 /*fromYear*/,
24041  1966 /*toYear*/,
24042  4 /*inMonth*/,
24043  0 /*onDayOfWeek*/,
24044  24 /*onDayOfMonth*/,
24045  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24046  480 /*atTimeCode (7200/15)*/,
24047  60 /*deltaMinutes*/,
24048  25 /*letterIndex ("S")*/,
24049  },
24050  // Rule Syria 1966 1976 - Oct 1 2:00 0 -
24051  {
24052  1966 /*fromYear*/,
24053  1976 /*toYear*/,
24054  10 /*inMonth*/,
24055  0 /*onDayOfWeek*/,
24056  1 /*onDayOfMonth*/,
24057  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24058  480 /*atTimeCode (7200/15)*/,
24059  0 /*deltaMinutes*/,
24060  0 /*letterIndex ("")*/,
24061  },
24062  // Rule Syria 1967 1978 - May 1 2:00 1:00 S
24063  {
24064  1967 /*fromYear*/,
24065  1978 /*toYear*/,
24066  5 /*inMonth*/,
24067  0 /*onDayOfWeek*/,
24068  1 /*onDayOfMonth*/,
24069  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24070  480 /*atTimeCode (7200/15)*/,
24071  60 /*deltaMinutes*/,
24072  25 /*letterIndex ("S")*/,
24073  },
24074  // Rule Syria 1977 1978 - Sep 1 2:00 0 -
24075  {
24076  1977 /*fromYear*/,
24077  1978 /*toYear*/,
24078  9 /*inMonth*/,
24079  0 /*onDayOfWeek*/,
24080  1 /*onDayOfMonth*/,
24081  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24082  480 /*atTimeCode (7200/15)*/,
24083  0 /*deltaMinutes*/,
24084  0 /*letterIndex ("")*/,
24085  },
24086  // Rule Syria 1983 1984 - Apr 9 2:00 1:00 S
24087  {
24088  1983 /*fromYear*/,
24089  1984 /*toYear*/,
24090  4 /*inMonth*/,
24091  0 /*onDayOfWeek*/,
24092  9 /*onDayOfMonth*/,
24093  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24094  480 /*atTimeCode (7200/15)*/,
24095  60 /*deltaMinutes*/,
24096  25 /*letterIndex ("S")*/,
24097  },
24098  // Rule Syria 1983 1984 - Oct 1 2:00 0 -
24099  {
24100  1983 /*fromYear*/,
24101  1984 /*toYear*/,
24102  10 /*inMonth*/,
24103  0 /*onDayOfWeek*/,
24104  1 /*onDayOfMonth*/,
24105  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24106  480 /*atTimeCode (7200/15)*/,
24107  0 /*deltaMinutes*/,
24108  0 /*letterIndex ("")*/,
24109  },
24110  // Rule Syria 1986 only - Feb 16 2:00 1:00 S
24111  {
24112  1986 /*fromYear*/,
24113  1986 /*toYear*/,
24114  2 /*inMonth*/,
24115  0 /*onDayOfWeek*/,
24116  16 /*onDayOfMonth*/,
24117  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24118  480 /*atTimeCode (7200/15)*/,
24119  60 /*deltaMinutes*/,
24120  25 /*letterIndex ("S")*/,
24121  },
24122  // Rule Syria 1986 only - Oct 9 2:00 0 -
24123  {
24124  1986 /*fromYear*/,
24125  1986 /*toYear*/,
24126  10 /*inMonth*/,
24127  0 /*onDayOfWeek*/,
24128  9 /*onDayOfMonth*/,
24129  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24130  480 /*atTimeCode (7200/15)*/,
24131  0 /*deltaMinutes*/,
24132  0 /*letterIndex ("")*/,
24133  },
24134  // Rule Syria 1987 only - Mar 1 2:00 1:00 S
24135  {
24136  1987 /*fromYear*/,
24137  1987 /*toYear*/,
24138  3 /*inMonth*/,
24139  0 /*onDayOfWeek*/,
24140  1 /*onDayOfMonth*/,
24141  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24142  480 /*atTimeCode (7200/15)*/,
24143  60 /*deltaMinutes*/,
24144  25 /*letterIndex ("S")*/,
24145  },
24146  // Rule Syria 1987 1988 - Oct 31 2:00 0 -
24147  {
24148  1987 /*fromYear*/,
24149  1988 /*toYear*/,
24150  10 /*inMonth*/,
24151  0 /*onDayOfWeek*/,
24152  31 /*onDayOfMonth*/,
24153  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24154  480 /*atTimeCode (7200/15)*/,
24155  0 /*deltaMinutes*/,
24156  0 /*letterIndex ("")*/,
24157  },
24158  // Rule Syria 1988 only - Mar 15 2:00 1:00 S
24159  {
24160  1988 /*fromYear*/,
24161  1988 /*toYear*/,
24162  3 /*inMonth*/,
24163  0 /*onDayOfWeek*/,
24164  15 /*onDayOfMonth*/,
24165  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24166  480 /*atTimeCode (7200/15)*/,
24167  60 /*deltaMinutes*/,
24168  25 /*letterIndex ("S")*/,
24169  },
24170  // Rule Syria 1989 only - Mar 31 2:00 1:00 S
24171  {
24172  1989 /*fromYear*/,
24173  1989 /*toYear*/,
24174  3 /*inMonth*/,
24175  0 /*onDayOfWeek*/,
24176  31 /*onDayOfMonth*/,
24177  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24178  480 /*atTimeCode (7200/15)*/,
24179  60 /*deltaMinutes*/,
24180  25 /*letterIndex ("S")*/,
24181  },
24182  // Rule Syria 1989 only - Oct 1 2:00 0 -
24183  {
24184  1989 /*fromYear*/,
24185  1989 /*toYear*/,
24186  10 /*inMonth*/,
24187  0 /*onDayOfWeek*/,
24188  1 /*onDayOfMonth*/,
24189  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24190  480 /*atTimeCode (7200/15)*/,
24191  0 /*deltaMinutes*/,
24192  0 /*letterIndex ("")*/,
24193  },
24194  // Rule Syria 1990 only - Apr 1 2:00 1:00 S
24195  {
24196  1990 /*fromYear*/,
24197  1990 /*toYear*/,
24198  4 /*inMonth*/,
24199  0 /*onDayOfWeek*/,
24200  1 /*onDayOfMonth*/,
24201  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24202  480 /*atTimeCode (7200/15)*/,
24203  60 /*deltaMinutes*/,
24204  25 /*letterIndex ("S")*/,
24205  },
24206  // Rule Syria 1990 only - Sep 30 2:00 0 -
24207  {
24208  1990 /*fromYear*/,
24209  1990 /*toYear*/,
24210  9 /*inMonth*/,
24211  0 /*onDayOfWeek*/,
24212  30 /*onDayOfMonth*/,
24213  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24214  480 /*atTimeCode (7200/15)*/,
24215  0 /*deltaMinutes*/,
24216  0 /*letterIndex ("")*/,
24217  },
24218  // Rule Syria 1991 only - Apr 1 0:00 1:00 S
24219  {
24220  1991 /*fromYear*/,
24221  1991 /*toYear*/,
24222  4 /*inMonth*/,
24223  0 /*onDayOfWeek*/,
24224  1 /*onDayOfMonth*/,
24225  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24226  0 /*atTimeCode (0/15)*/,
24227  60 /*deltaMinutes*/,
24228  25 /*letterIndex ("S")*/,
24229  },
24230  // Rule Syria 1991 1992 - Oct 1 0:00 0 -
24231  {
24232  1991 /*fromYear*/,
24233  1992 /*toYear*/,
24234  10 /*inMonth*/,
24235  0 /*onDayOfWeek*/,
24236  1 /*onDayOfMonth*/,
24237  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24238  0 /*atTimeCode (0/15)*/,
24239  0 /*deltaMinutes*/,
24240  0 /*letterIndex ("")*/,
24241  },
24242  // Rule Syria 1992 only - Apr 8 0:00 1:00 S
24243  {
24244  1992 /*fromYear*/,
24245  1992 /*toYear*/,
24246  4 /*inMonth*/,
24247  0 /*onDayOfWeek*/,
24248  8 /*onDayOfMonth*/,
24249  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24250  0 /*atTimeCode (0/15)*/,
24251  60 /*deltaMinutes*/,
24252  25 /*letterIndex ("S")*/,
24253  },
24254  // Rule Syria 1993 only - Mar 26 0:00 1:00 S
24255  {
24256  1993 /*fromYear*/,
24257  1993 /*toYear*/,
24258  3 /*inMonth*/,
24259  0 /*onDayOfWeek*/,
24260  26 /*onDayOfMonth*/,
24261  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24262  0 /*atTimeCode (0/15)*/,
24263  60 /*deltaMinutes*/,
24264  25 /*letterIndex ("S")*/,
24265  },
24266  // Rule Syria 1993 only - Sep 25 0:00 0 -
24267  {
24268  1993 /*fromYear*/,
24269  1993 /*toYear*/,
24270  9 /*inMonth*/,
24271  0 /*onDayOfWeek*/,
24272  25 /*onDayOfMonth*/,
24273  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24274  0 /*atTimeCode (0/15)*/,
24275  0 /*deltaMinutes*/,
24276  0 /*letterIndex ("")*/,
24277  },
24278  // Rule Syria 1994 1996 - Apr 1 0:00 1:00 S
24279  {
24280  1994 /*fromYear*/,
24281  1996 /*toYear*/,
24282  4 /*inMonth*/,
24283  0 /*onDayOfWeek*/,
24284  1 /*onDayOfMonth*/,
24285  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24286  0 /*atTimeCode (0/15)*/,
24287  60 /*deltaMinutes*/,
24288  25 /*letterIndex ("S")*/,
24289  },
24290  // Rule Syria 1994 2005 - Oct 1 0:00 0 -
24291  {
24292  1994 /*fromYear*/,
24293  2005 /*toYear*/,
24294  10 /*inMonth*/,
24295  0 /*onDayOfWeek*/,
24296  1 /*onDayOfMonth*/,
24297  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24298  0 /*atTimeCode (0/15)*/,
24299  0 /*deltaMinutes*/,
24300  0 /*letterIndex ("")*/,
24301  },
24302  // Rule Syria 1997 1998 - Mar lastMon 0:00 1:00 S
24303  {
24304  1997 /*fromYear*/,
24305  1998 /*toYear*/,
24306  3 /*inMonth*/,
24307  1 /*onDayOfWeek*/,
24308  0 /*onDayOfMonth*/,
24309  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24310  0 /*atTimeCode (0/15)*/,
24311  60 /*deltaMinutes*/,
24312  25 /*letterIndex ("S")*/,
24313  },
24314  // Rule Syria 1999 2006 - Apr 1 0:00 1:00 S
24315  {
24316  1999 /*fromYear*/,
24317  2006 /*toYear*/,
24318  4 /*inMonth*/,
24319  0 /*onDayOfWeek*/,
24320  1 /*onDayOfMonth*/,
24321  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24322  0 /*atTimeCode (0/15)*/,
24323  60 /*deltaMinutes*/,
24324  25 /*letterIndex ("S")*/,
24325  },
24326  // Rule Syria 2006 only - Sep 22 0:00 0 -
24327  {
24328  2006 /*fromYear*/,
24329  2006 /*toYear*/,
24330  9 /*inMonth*/,
24331  0 /*onDayOfWeek*/,
24332  22 /*onDayOfMonth*/,
24333  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24334  0 /*atTimeCode (0/15)*/,
24335  0 /*deltaMinutes*/,
24336  0 /*letterIndex ("")*/,
24337  },
24338  // Rule Syria 2007 only - Mar lastFri 0:00 1:00 S
24339  {
24340  2007 /*fromYear*/,
24341  2007 /*toYear*/,
24342  3 /*inMonth*/,
24343  5 /*onDayOfWeek*/,
24344  0 /*onDayOfMonth*/,
24345  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24346  0 /*atTimeCode (0/15)*/,
24347  60 /*deltaMinutes*/,
24348  25 /*letterIndex ("S")*/,
24349  },
24350  // Rule Syria 2007 only - Nov Fri>=1 0:00 0 -
24351  {
24352  2007 /*fromYear*/,
24353  2007 /*toYear*/,
24354  11 /*inMonth*/,
24355  5 /*onDayOfWeek*/,
24356  1 /*onDayOfMonth*/,
24357  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24358  0 /*atTimeCode (0/15)*/,
24359  0 /*deltaMinutes*/,
24360  0 /*letterIndex ("")*/,
24361  },
24362  // Rule Syria 2008 only - Apr Fri>=1 0:00 1:00 S
24363  {
24364  2008 /*fromYear*/,
24365  2008 /*toYear*/,
24366  4 /*inMonth*/,
24367  5 /*onDayOfWeek*/,
24368  1 /*onDayOfMonth*/,
24369  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24370  0 /*atTimeCode (0/15)*/,
24371  60 /*deltaMinutes*/,
24372  25 /*letterIndex ("S")*/,
24373  },
24374  // Rule Syria 2008 only - Nov 1 0:00 0 -
24375  {
24376  2008 /*fromYear*/,
24377  2008 /*toYear*/,
24378  11 /*inMonth*/,
24379  0 /*onDayOfWeek*/,
24380  1 /*onDayOfMonth*/,
24381  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24382  0 /*atTimeCode (0/15)*/,
24383  0 /*deltaMinutes*/,
24384  0 /*letterIndex ("")*/,
24385  },
24386  // Rule Syria 2009 only - Mar lastFri 0:00 1:00 S
24387  {
24388  2009 /*fromYear*/,
24389  2009 /*toYear*/,
24390  3 /*inMonth*/,
24391  5 /*onDayOfWeek*/,
24392  0 /*onDayOfMonth*/,
24393  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24394  0 /*atTimeCode (0/15)*/,
24395  60 /*deltaMinutes*/,
24396  25 /*letterIndex ("S")*/,
24397  },
24398  // Rule Syria 2010 2011 - Apr Fri>=1 0:00 1:00 S
24399  {
24400  2010 /*fromYear*/,
24401  2011 /*toYear*/,
24402  4 /*inMonth*/,
24403  5 /*onDayOfWeek*/,
24404  1 /*onDayOfMonth*/,
24405  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24406  0 /*atTimeCode (0/15)*/,
24407  60 /*deltaMinutes*/,
24408  25 /*letterIndex ("S")*/,
24409  },
24410  // Rule Syria 2012 2022 - Mar lastFri 0:00 1:00 S
24411  {
24412  2012 /*fromYear*/,
24413  2022 /*toYear*/,
24414  3 /*inMonth*/,
24415  5 /*onDayOfWeek*/,
24416  0 /*onDayOfMonth*/,
24417  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24418  0 /*atTimeCode (0/15)*/,
24419  60 /*deltaMinutes*/,
24420  25 /*letterIndex ("S")*/,
24421  },
24422  // Rule Syria 2009 2022 - Oct lastFri 0:00 0 -
24423  {
24424  2009 /*fromYear*/,
24425  2022 /*toYear*/,
24426  10 /*inMonth*/,
24427  5 /*onDayOfWeek*/,
24428  0 /*onDayOfMonth*/,
24429  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24430  0 /*atTimeCode (0/15)*/,
24431  0 /*deltaMinutes*/,
24432  0 /*letterIndex ("")*/,
24433  },
24434 
24435 };
24436 
24437 const complete::ZonePolicy kZonePolicySyria ACE_TIME_PROGMEM = {
24438  kZoneRulesSyria /*rules*/,
24439  42 /*numRules*/,
24440 };
24441 
24442 //---------------------------------------------------------------------------
24443 // Policy name: Taiwan
24444 // Rules: 16
24445 //---------------------------------------------------------------------------
24446 
24447 static const complete::ZoneRule kZoneRulesTaiwan[] ACE_TIME_PROGMEM = {
24448  // Anchor: Rule Taiwan 1946 only - Oct 1 0:00 0 S
24449  {
24450  -32767 /*fromYear*/,
24451  -32767 /*toYear*/,
24452  1 /*inMonth*/,
24453  0 /*onDayOfWeek*/,
24454  1 /*onDayOfMonth*/,
24455  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24456  0 /*atTimeCode (0/15)*/,
24457  0 /*deltaMinutes*/,
24458  25 /*letterIndex ("S")*/,
24459  },
24460  // Rule Taiwan 1946 only - May 15 0:00 1:00 D
24461  {
24462  1946 /*fromYear*/,
24463  1946 /*toYear*/,
24464  5 /*inMonth*/,
24465  0 /*onDayOfWeek*/,
24466  15 /*onDayOfMonth*/,
24467  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24468  0 /*atTimeCode (0/15)*/,
24469  60 /*deltaMinutes*/,
24470  13 /*letterIndex ("D")*/,
24471  },
24472  // Rule Taiwan 1946 only - Oct 1 0:00 0 S
24473  {
24474  1946 /*fromYear*/,
24475  1946 /*toYear*/,
24476  10 /*inMonth*/,
24477  0 /*onDayOfWeek*/,
24478  1 /*onDayOfMonth*/,
24479  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24480  0 /*atTimeCode (0/15)*/,
24481  0 /*deltaMinutes*/,
24482  25 /*letterIndex ("S")*/,
24483  },
24484  // Rule Taiwan 1947 only - Apr 15 0:00 1:00 D
24485  {
24486  1947 /*fromYear*/,
24487  1947 /*toYear*/,
24488  4 /*inMonth*/,
24489  0 /*onDayOfWeek*/,
24490  15 /*onDayOfMonth*/,
24491  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24492  0 /*atTimeCode (0/15)*/,
24493  60 /*deltaMinutes*/,
24494  13 /*letterIndex ("D")*/,
24495  },
24496  // Rule Taiwan 1947 only - Nov 1 0:00 0 S
24497  {
24498  1947 /*fromYear*/,
24499  1947 /*toYear*/,
24500  11 /*inMonth*/,
24501  0 /*onDayOfWeek*/,
24502  1 /*onDayOfMonth*/,
24503  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24504  0 /*atTimeCode (0/15)*/,
24505  0 /*deltaMinutes*/,
24506  25 /*letterIndex ("S")*/,
24507  },
24508  // Rule Taiwan 1948 1951 - May 1 0:00 1:00 D
24509  {
24510  1948 /*fromYear*/,
24511  1951 /*toYear*/,
24512  5 /*inMonth*/,
24513  0 /*onDayOfWeek*/,
24514  1 /*onDayOfMonth*/,
24515  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24516  0 /*atTimeCode (0/15)*/,
24517  60 /*deltaMinutes*/,
24518  13 /*letterIndex ("D")*/,
24519  },
24520  // Rule Taiwan 1948 1951 - Oct 1 0:00 0 S
24521  {
24522  1948 /*fromYear*/,
24523  1951 /*toYear*/,
24524  10 /*inMonth*/,
24525  0 /*onDayOfWeek*/,
24526  1 /*onDayOfMonth*/,
24527  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24528  0 /*atTimeCode (0/15)*/,
24529  0 /*deltaMinutes*/,
24530  25 /*letterIndex ("S")*/,
24531  },
24532  // Rule Taiwan 1952 only - Mar 1 0:00 1:00 D
24533  {
24534  1952 /*fromYear*/,
24535  1952 /*toYear*/,
24536  3 /*inMonth*/,
24537  0 /*onDayOfWeek*/,
24538  1 /*onDayOfMonth*/,
24539  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24540  0 /*atTimeCode (0/15)*/,
24541  60 /*deltaMinutes*/,
24542  13 /*letterIndex ("D")*/,
24543  },
24544  // Rule Taiwan 1952 1954 - Nov 1 0:00 0 S
24545  {
24546  1952 /*fromYear*/,
24547  1954 /*toYear*/,
24548  11 /*inMonth*/,
24549  0 /*onDayOfWeek*/,
24550  1 /*onDayOfMonth*/,
24551  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24552  0 /*atTimeCode (0/15)*/,
24553  0 /*deltaMinutes*/,
24554  25 /*letterIndex ("S")*/,
24555  },
24556  // Rule Taiwan 1953 1959 - Apr 1 0:00 1:00 D
24557  {
24558  1953 /*fromYear*/,
24559  1959 /*toYear*/,
24560  4 /*inMonth*/,
24561  0 /*onDayOfWeek*/,
24562  1 /*onDayOfMonth*/,
24563  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24564  0 /*atTimeCode (0/15)*/,
24565  60 /*deltaMinutes*/,
24566  13 /*letterIndex ("D")*/,
24567  },
24568  // Rule Taiwan 1955 1961 - Oct 1 0:00 0 S
24569  {
24570  1955 /*fromYear*/,
24571  1961 /*toYear*/,
24572  10 /*inMonth*/,
24573  0 /*onDayOfWeek*/,
24574  1 /*onDayOfMonth*/,
24575  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24576  0 /*atTimeCode (0/15)*/,
24577  0 /*deltaMinutes*/,
24578  25 /*letterIndex ("S")*/,
24579  },
24580  // Rule Taiwan 1960 1961 - Jun 1 0:00 1:00 D
24581  {
24582  1960 /*fromYear*/,
24583  1961 /*toYear*/,
24584  6 /*inMonth*/,
24585  0 /*onDayOfWeek*/,
24586  1 /*onDayOfMonth*/,
24587  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24588  0 /*atTimeCode (0/15)*/,
24589  60 /*deltaMinutes*/,
24590  13 /*letterIndex ("D")*/,
24591  },
24592  // Rule Taiwan 1974 1975 - Apr 1 0:00 1:00 D
24593  {
24594  1974 /*fromYear*/,
24595  1975 /*toYear*/,
24596  4 /*inMonth*/,
24597  0 /*onDayOfWeek*/,
24598  1 /*onDayOfMonth*/,
24599  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24600  0 /*atTimeCode (0/15)*/,
24601  60 /*deltaMinutes*/,
24602  13 /*letterIndex ("D")*/,
24603  },
24604  // Rule Taiwan 1974 1975 - Oct 1 0:00 0 S
24605  {
24606  1974 /*fromYear*/,
24607  1975 /*toYear*/,
24608  10 /*inMonth*/,
24609  0 /*onDayOfWeek*/,
24610  1 /*onDayOfMonth*/,
24611  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24612  0 /*atTimeCode (0/15)*/,
24613  0 /*deltaMinutes*/,
24614  25 /*letterIndex ("S")*/,
24615  },
24616  // Rule Taiwan 1979 only - Jul 1 0:00 1:00 D
24617  {
24618  1979 /*fromYear*/,
24619  1979 /*toYear*/,
24620  7 /*inMonth*/,
24621  0 /*onDayOfWeek*/,
24622  1 /*onDayOfMonth*/,
24623  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24624  0 /*atTimeCode (0/15)*/,
24625  60 /*deltaMinutes*/,
24626  13 /*letterIndex ("D")*/,
24627  },
24628  // Rule Taiwan 1979 only - Oct 1 0:00 0 S
24629  {
24630  1979 /*fromYear*/,
24631  1979 /*toYear*/,
24632  10 /*inMonth*/,
24633  0 /*onDayOfWeek*/,
24634  1 /*onDayOfMonth*/,
24635  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24636  0 /*atTimeCode (0/15)*/,
24637  0 /*deltaMinutes*/,
24638  25 /*letterIndex ("S")*/,
24639  },
24640 
24641 };
24642 
24643 const complete::ZonePolicy kZonePolicyTaiwan ACE_TIME_PROGMEM = {
24644  kZoneRulesTaiwan /*rules*/,
24645  16 /*numRules*/,
24646 };
24647 
24648 //---------------------------------------------------------------------------
24649 // Policy name: Thule
24650 // Rules: 7
24651 //---------------------------------------------------------------------------
24652 
24653 static const complete::ZoneRule kZoneRulesThule[] ACE_TIME_PROGMEM = {
24654  // Anchor: Rule Thule 1991 1992 - Sep lastSun 2:00 0 S
24655  {
24656  -32767 /*fromYear*/,
24657  -32767 /*toYear*/,
24658  1 /*inMonth*/,
24659  0 /*onDayOfWeek*/,
24660  1 /*onDayOfMonth*/,
24661  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24662  0 /*atTimeCode (0/15)*/,
24663  0 /*deltaMinutes*/,
24664  25 /*letterIndex ("S")*/,
24665  },
24666  // Rule Thule 1991 1992 - Mar lastSun 2:00 1:00 D
24667  {
24668  1991 /*fromYear*/,
24669  1992 /*toYear*/,
24670  3 /*inMonth*/,
24671  7 /*onDayOfWeek*/,
24672  0 /*onDayOfMonth*/,
24673  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24674  480 /*atTimeCode (7200/15)*/,
24675  60 /*deltaMinutes*/,
24676  13 /*letterIndex ("D")*/,
24677  },
24678  // Rule Thule 1991 1992 - Sep lastSun 2:00 0 S
24679  {
24680  1991 /*fromYear*/,
24681  1992 /*toYear*/,
24682  9 /*inMonth*/,
24683  7 /*onDayOfWeek*/,
24684  0 /*onDayOfMonth*/,
24685  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24686  480 /*atTimeCode (7200/15)*/,
24687  0 /*deltaMinutes*/,
24688  25 /*letterIndex ("S")*/,
24689  },
24690  // Rule Thule 1993 2006 - Apr Sun>=1 2:00 1:00 D
24691  {
24692  1993 /*fromYear*/,
24693  2006 /*toYear*/,
24694  4 /*inMonth*/,
24695  7 /*onDayOfWeek*/,
24696  1 /*onDayOfMonth*/,
24697  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24698  480 /*atTimeCode (7200/15)*/,
24699  60 /*deltaMinutes*/,
24700  13 /*letterIndex ("D")*/,
24701  },
24702  // Rule Thule 1993 2006 - Oct lastSun 2:00 0 S
24703  {
24704  1993 /*fromYear*/,
24705  2006 /*toYear*/,
24706  10 /*inMonth*/,
24707  7 /*onDayOfWeek*/,
24708  0 /*onDayOfMonth*/,
24709  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24710  480 /*atTimeCode (7200/15)*/,
24711  0 /*deltaMinutes*/,
24712  25 /*letterIndex ("S")*/,
24713  },
24714  // Rule Thule 2007 max - Mar Sun>=8 2:00 1:00 D
24715  {
24716  2007 /*fromYear*/,
24717  32766 /*toYear*/,
24718  3 /*inMonth*/,
24719  7 /*onDayOfWeek*/,
24720  8 /*onDayOfMonth*/,
24721  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24722  480 /*atTimeCode (7200/15)*/,
24723  60 /*deltaMinutes*/,
24724  13 /*letterIndex ("D")*/,
24725  },
24726  // Rule Thule 2007 max - Nov Sun>=1 2:00 0 S
24727  {
24728  2007 /*fromYear*/,
24729  32766 /*toYear*/,
24730  11 /*inMonth*/,
24731  7 /*onDayOfWeek*/,
24732  1 /*onDayOfMonth*/,
24733  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24734  480 /*atTimeCode (7200/15)*/,
24735  0 /*deltaMinutes*/,
24736  25 /*letterIndex ("S")*/,
24737  },
24738 
24739 };
24740 
24741 const complete::ZonePolicy kZonePolicyThule ACE_TIME_PROGMEM = {
24742  kZoneRulesThule /*rules*/,
24743  7 /*numRules*/,
24744 };
24745 
24746 //---------------------------------------------------------------------------
24747 // Policy name: Tonga
24748 // Rules: 7
24749 //---------------------------------------------------------------------------
24750 
24751 static const complete::ZoneRule kZoneRulesTonga[] ACE_TIME_PROGMEM = {
24752  // Anchor: Rule Tonga 2000 only - Mar 19 2:00s 0 -
24753  {
24754  -32767 /*fromYear*/,
24755  -32767 /*toYear*/,
24756  1 /*inMonth*/,
24757  0 /*onDayOfWeek*/,
24758  1 /*onDayOfMonth*/,
24759  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24760  0 /*atTimeCode (0/15)*/,
24761  0 /*deltaMinutes*/,
24762  0 /*letterIndex ("")*/,
24763  },
24764  // Rule Tonga 1999 only - Oct 7 2:00s 1:00 -
24765  {
24766  1999 /*fromYear*/,
24767  1999 /*toYear*/,
24768  10 /*inMonth*/,
24769  0 /*onDayOfWeek*/,
24770  7 /*onDayOfMonth*/,
24771  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
24772  480 /*atTimeCode (7200/15)*/,
24773  60 /*deltaMinutes*/,
24774  0 /*letterIndex ("")*/,
24775  },
24776  // Rule Tonga 2000 only - Mar 19 2:00s 0 -
24777  {
24778  2000 /*fromYear*/,
24779  2000 /*toYear*/,
24780  3 /*inMonth*/,
24781  0 /*onDayOfWeek*/,
24782  19 /*onDayOfMonth*/,
24783  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
24784  480 /*atTimeCode (7200/15)*/,
24785  0 /*deltaMinutes*/,
24786  0 /*letterIndex ("")*/,
24787  },
24788  // Rule Tonga 2000 2001 - Nov Sun>=1 2:00 1:00 -
24789  {
24790  2000 /*fromYear*/,
24791  2001 /*toYear*/,
24792  11 /*inMonth*/,
24793  7 /*onDayOfWeek*/,
24794  1 /*onDayOfMonth*/,
24795  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24796  480 /*atTimeCode (7200/15)*/,
24797  60 /*deltaMinutes*/,
24798  0 /*letterIndex ("")*/,
24799  },
24800  // Rule Tonga 2001 2002 - Jan lastSun 2:00 0 -
24801  {
24802  2001 /*fromYear*/,
24803  2002 /*toYear*/,
24804  1 /*inMonth*/,
24805  7 /*onDayOfWeek*/,
24806  0 /*onDayOfMonth*/,
24807  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24808  480 /*atTimeCode (7200/15)*/,
24809  0 /*deltaMinutes*/,
24810  0 /*letterIndex ("")*/,
24811  },
24812  // Rule Tonga 2016 only - Nov Sun>=1 2:00 1:00 -
24813  {
24814  2016 /*fromYear*/,
24815  2016 /*toYear*/,
24816  11 /*inMonth*/,
24817  7 /*onDayOfWeek*/,
24818  1 /*onDayOfMonth*/,
24819  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24820  480 /*atTimeCode (7200/15)*/,
24821  60 /*deltaMinutes*/,
24822  0 /*letterIndex ("")*/,
24823  },
24824  // Rule Tonga 2017 only - Jan Sun>=15 3:00 0 -
24825  {
24826  2017 /*fromYear*/,
24827  2017 /*toYear*/,
24828  1 /*inMonth*/,
24829  7 /*onDayOfWeek*/,
24830  15 /*onDayOfMonth*/,
24831  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24832  720 /*atTimeCode (10800/15)*/,
24833  0 /*deltaMinutes*/,
24834  0 /*letterIndex ("")*/,
24835  },
24836 
24837 };
24838 
24839 const complete::ZonePolicy kZonePolicyTonga ACE_TIME_PROGMEM = {
24840  kZoneRulesTonga /*rules*/,
24841  7 /*numRules*/,
24842 };
24843 
24844 //---------------------------------------------------------------------------
24845 // Policy name: Toronto
24846 // Rules: 23
24847 //---------------------------------------------------------------------------
24848 
24849 static const complete::ZoneRule kZoneRulesToronto[] ACE_TIME_PROGMEM = {
24850  // Anchor: Rule Toronto 1919 only - Oct 26 0:00 0 S
24851  {
24852  -32767 /*fromYear*/,
24853  -32767 /*toYear*/,
24854  1 /*inMonth*/,
24855  0 /*onDayOfWeek*/,
24856  1 /*onDayOfMonth*/,
24857  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24858  0 /*atTimeCode (0/15)*/,
24859  0 /*deltaMinutes*/,
24860  25 /*letterIndex ("S")*/,
24861  },
24862  // Rule Toronto 1919 only - Mar 30 23:30 1:00 D
24863  {
24864  1919 /*fromYear*/,
24865  1919 /*toYear*/,
24866  3 /*inMonth*/,
24867  0 /*onDayOfWeek*/,
24868  30 /*onDayOfMonth*/,
24869  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24870  5640 /*atTimeCode (84600/15)*/,
24871  60 /*deltaMinutes*/,
24872  13 /*letterIndex ("D")*/,
24873  },
24874  // Rule Toronto 1919 only - Oct 26 0:00 0 S
24875  {
24876  1919 /*fromYear*/,
24877  1919 /*toYear*/,
24878  10 /*inMonth*/,
24879  0 /*onDayOfWeek*/,
24880  26 /*onDayOfMonth*/,
24881  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24882  0 /*atTimeCode (0/15)*/,
24883  0 /*deltaMinutes*/,
24884  25 /*letterIndex ("S")*/,
24885  },
24886  // Rule Toronto 1920 only - May 2 2:00 1:00 D
24887  {
24888  1920 /*fromYear*/,
24889  1920 /*toYear*/,
24890  5 /*inMonth*/,
24891  0 /*onDayOfWeek*/,
24892  2 /*onDayOfMonth*/,
24893  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24894  480 /*atTimeCode (7200/15)*/,
24895  60 /*deltaMinutes*/,
24896  13 /*letterIndex ("D")*/,
24897  },
24898  // Rule Toronto 1920 only - Sep 26 0:00 0 S
24899  {
24900  1920 /*fromYear*/,
24901  1920 /*toYear*/,
24902  9 /*inMonth*/,
24903  0 /*onDayOfWeek*/,
24904  26 /*onDayOfMonth*/,
24905  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24906  0 /*atTimeCode (0/15)*/,
24907  0 /*deltaMinutes*/,
24908  25 /*letterIndex ("S")*/,
24909  },
24910  // Rule Toronto 1921 only - May 15 2:00 1:00 D
24911  {
24912  1921 /*fromYear*/,
24913  1921 /*toYear*/,
24914  5 /*inMonth*/,
24915  0 /*onDayOfWeek*/,
24916  15 /*onDayOfMonth*/,
24917  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24918  480 /*atTimeCode (7200/15)*/,
24919  60 /*deltaMinutes*/,
24920  13 /*letterIndex ("D")*/,
24921  },
24922  // Rule Toronto 1921 only - Sep 15 2:00 0 S
24923  {
24924  1921 /*fromYear*/,
24925  1921 /*toYear*/,
24926  9 /*inMonth*/,
24927  0 /*onDayOfWeek*/,
24928  15 /*onDayOfMonth*/,
24929  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24930  480 /*atTimeCode (7200/15)*/,
24931  0 /*deltaMinutes*/,
24932  25 /*letterIndex ("S")*/,
24933  },
24934  // Rule Toronto 1922 1923 - May Sun>=8 2:00 1:00 D
24935  {
24936  1922 /*fromYear*/,
24937  1923 /*toYear*/,
24938  5 /*inMonth*/,
24939  7 /*onDayOfWeek*/,
24940  8 /*onDayOfMonth*/,
24941  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24942  480 /*atTimeCode (7200/15)*/,
24943  60 /*deltaMinutes*/,
24944  13 /*letterIndex ("D")*/,
24945  },
24946  // Rule Toronto 1922 1926 - Sep Sun>=15 2:00 0 S
24947  {
24948  1922 /*fromYear*/,
24949  1926 /*toYear*/,
24950  9 /*inMonth*/,
24951  7 /*onDayOfWeek*/,
24952  15 /*onDayOfMonth*/,
24953  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24954  480 /*atTimeCode (7200/15)*/,
24955  0 /*deltaMinutes*/,
24956  25 /*letterIndex ("S")*/,
24957  },
24958  // Rule Toronto 1924 1927 - May Sun>=1 2:00 1:00 D
24959  {
24960  1924 /*fromYear*/,
24961  1927 /*toYear*/,
24962  5 /*inMonth*/,
24963  7 /*onDayOfWeek*/,
24964  1 /*onDayOfMonth*/,
24965  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24966  480 /*atTimeCode (7200/15)*/,
24967  60 /*deltaMinutes*/,
24968  13 /*letterIndex ("D")*/,
24969  },
24970  // Rule Toronto 1927 1937 - Sep Sun>=25 2:00 0 S
24971  {
24972  1927 /*fromYear*/,
24973  1937 /*toYear*/,
24974  9 /*inMonth*/,
24975  7 /*onDayOfWeek*/,
24976  25 /*onDayOfMonth*/,
24977  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24978  480 /*atTimeCode (7200/15)*/,
24979  0 /*deltaMinutes*/,
24980  25 /*letterIndex ("S")*/,
24981  },
24982  // Rule Toronto 1928 1937 - Apr Sun>=25 2:00 1:00 D
24983  {
24984  1928 /*fromYear*/,
24985  1937 /*toYear*/,
24986  4 /*inMonth*/,
24987  7 /*onDayOfWeek*/,
24988  25 /*onDayOfMonth*/,
24989  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
24990  480 /*atTimeCode (7200/15)*/,
24991  60 /*deltaMinutes*/,
24992  13 /*letterIndex ("D")*/,
24993  },
24994  // Rule Toronto 1938 1940 - Apr lastSun 2:00 1:00 D
24995  {
24996  1938 /*fromYear*/,
24997  1940 /*toYear*/,
24998  4 /*inMonth*/,
24999  7 /*onDayOfWeek*/,
25000  0 /*onDayOfMonth*/,
25001  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25002  480 /*atTimeCode (7200/15)*/,
25003  60 /*deltaMinutes*/,
25004  13 /*letterIndex ("D")*/,
25005  },
25006  // Rule Toronto 1938 1939 - Sep lastSun 2:00 0 S
25007  {
25008  1938 /*fromYear*/,
25009  1939 /*toYear*/,
25010  9 /*inMonth*/,
25011  7 /*onDayOfWeek*/,
25012  0 /*onDayOfMonth*/,
25013  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25014  480 /*atTimeCode (7200/15)*/,
25015  0 /*deltaMinutes*/,
25016  25 /*letterIndex ("S")*/,
25017  },
25018  // Rule Toronto 1945 1946 - Sep lastSun 2:00 0 S
25019  {
25020  1945 /*fromYear*/,
25021  1946 /*toYear*/,
25022  9 /*inMonth*/,
25023  7 /*onDayOfWeek*/,
25024  0 /*onDayOfMonth*/,
25025  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25026  480 /*atTimeCode (7200/15)*/,
25027  0 /*deltaMinutes*/,
25028  25 /*letterIndex ("S")*/,
25029  },
25030  // Rule Toronto 1946 only - Apr lastSun 2:00 1:00 D
25031  {
25032  1946 /*fromYear*/,
25033  1946 /*toYear*/,
25034  4 /*inMonth*/,
25035  7 /*onDayOfWeek*/,
25036  0 /*onDayOfMonth*/,
25037  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25038  480 /*atTimeCode (7200/15)*/,
25039  60 /*deltaMinutes*/,
25040  13 /*letterIndex ("D")*/,
25041  },
25042  // Rule Toronto 1947 1949 - Apr lastSun 0:00 1:00 D
25043  {
25044  1947 /*fromYear*/,
25045  1949 /*toYear*/,
25046  4 /*inMonth*/,
25047  7 /*onDayOfWeek*/,
25048  0 /*onDayOfMonth*/,
25049  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25050  0 /*atTimeCode (0/15)*/,
25051  60 /*deltaMinutes*/,
25052  13 /*letterIndex ("D")*/,
25053  },
25054  // Rule Toronto 1947 1948 - Sep lastSun 0:00 0 S
25055  {
25056  1947 /*fromYear*/,
25057  1948 /*toYear*/,
25058  9 /*inMonth*/,
25059  7 /*onDayOfWeek*/,
25060  0 /*onDayOfMonth*/,
25061  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25062  0 /*atTimeCode (0/15)*/,
25063  0 /*deltaMinutes*/,
25064  25 /*letterIndex ("S")*/,
25065  },
25066  // Rule Toronto 1949 only - Nov lastSun 0:00 0 S
25067  {
25068  1949 /*fromYear*/,
25069  1949 /*toYear*/,
25070  11 /*inMonth*/,
25071  7 /*onDayOfWeek*/,
25072  0 /*onDayOfMonth*/,
25073  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25074  0 /*atTimeCode (0/15)*/,
25075  0 /*deltaMinutes*/,
25076  25 /*letterIndex ("S")*/,
25077  },
25078  // Rule Toronto 1950 1973 - Apr lastSun 2:00 1:00 D
25079  {
25080  1950 /*fromYear*/,
25081  1973 /*toYear*/,
25082  4 /*inMonth*/,
25083  7 /*onDayOfWeek*/,
25084  0 /*onDayOfMonth*/,
25085  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25086  480 /*atTimeCode (7200/15)*/,
25087  60 /*deltaMinutes*/,
25088  13 /*letterIndex ("D")*/,
25089  },
25090  // Rule Toronto 1950 only - Nov lastSun 2:00 0 S
25091  {
25092  1950 /*fromYear*/,
25093  1950 /*toYear*/,
25094  11 /*inMonth*/,
25095  7 /*onDayOfWeek*/,
25096  0 /*onDayOfMonth*/,
25097  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25098  480 /*atTimeCode (7200/15)*/,
25099  0 /*deltaMinutes*/,
25100  25 /*letterIndex ("S")*/,
25101  },
25102  // Rule Toronto 1951 1956 - Sep lastSun 2:00 0 S
25103  {
25104  1951 /*fromYear*/,
25105  1956 /*toYear*/,
25106  9 /*inMonth*/,
25107  7 /*onDayOfWeek*/,
25108  0 /*onDayOfMonth*/,
25109  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25110  480 /*atTimeCode (7200/15)*/,
25111  0 /*deltaMinutes*/,
25112  25 /*letterIndex ("S")*/,
25113  },
25114  // Rule Toronto 1957 1973 - Oct lastSun 2:00 0 S
25115  {
25116  1957 /*fromYear*/,
25117  1973 /*toYear*/,
25118  10 /*inMonth*/,
25119  7 /*onDayOfWeek*/,
25120  0 /*onDayOfMonth*/,
25121  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25122  480 /*atTimeCode (7200/15)*/,
25123  0 /*deltaMinutes*/,
25124  25 /*letterIndex ("S")*/,
25125  },
25126 
25127 };
25128 
25129 const complete::ZonePolicy kZonePolicyToronto ACE_TIME_PROGMEM = {
25130  kZoneRulesToronto /*rules*/,
25131  23 /*numRules*/,
25132 };
25133 
25134 //---------------------------------------------------------------------------
25135 // Policy name: Troll
25136 // Rules: 3
25137 //---------------------------------------------------------------------------
25138 
25139 static const complete::ZoneRule kZoneRulesTroll[] ACE_TIME_PROGMEM = {
25140  // Anchor: Rule Troll 2004 max - Oct lastSun 1:00u 0:00 +00
25141  {
25142  -32767 /*fromYear*/,
25143  -32767 /*toYear*/,
25144  1 /*inMonth*/,
25145  0 /*onDayOfWeek*/,
25146  1 /*onDayOfMonth*/,
25147  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25148  0 /*atTimeCode (0/15)*/,
25149  0 /*deltaMinutes*/,
25150  1 /*letterIndex ("+00")*/,
25151  },
25152  // Rule Troll 2005 max - Mar lastSun 1:00u 2:00 +02
25153  {
25154  2005 /*fromYear*/,
25155  32766 /*toYear*/,
25156  3 /*inMonth*/,
25157  7 /*onDayOfWeek*/,
25158  0 /*onDayOfMonth*/,
25159  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
25160  240 /*atTimeCode (3600/15)*/,
25161  120 /*deltaMinutes*/,
25162  2 /*letterIndex ("+02")*/,
25163  },
25164  // Rule Troll 2004 max - Oct lastSun 1:00u 0:00 +00
25165  {
25166  2004 /*fromYear*/,
25167  32766 /*toYear*/,
25168  10 /*inMonth*/,
25169  7 /*onDayOfWeek*/,
25170  0 /*onDayOfMonth*/,
25171  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
25172  240 /*atTimeCode (3600/15)*/,
25173  0 /*deltaMinutes*/,
25174  1 /*letterIndex ("+00")*/,
25175  },
25176 
25177 };
25178 
25179 const complete::ZonePolicy kZonePolicyTroll ACE_TIME_PROGMEM = {
25180  kZoneRulesTroll /*rules*/,
25181  3 /*numRules*/,
25182 };
25183 
25184 //---------------------------------------------------------------------------
25185 // Policy name: Tunisia
25186 // Rules: 26
25187 //---------------------------------------------------------------------------
25188 
25189 static const complete::ZoneRule kZoneRulesTunisia[] ACE_TIME_PROGMEM = {
25190  // Anchor: Rule Tunisia 1939 only - Nov 18 23:00s 0 -
25191  {
25192  -32767 /*fromYear*/,
25193  -32767 /*toYear*/,
25194  1 /*inMonth*/,
25195  0 /*onDayOfWeek*/,
25196  1 /*onDayOfMonth*/,
25197  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25198  0 /*atTimeCode (0/15)*/,
25199  0 /*deltaMinutes*/,
25200  0 /*letterIndex ("")*/,
25201  },
25202  // Rule Tunisia 1939 only - Apr 15 23:00s 1:00 S
25203  {
25204  1939 /*fromYear*/,
25205  1939 /*toYear*/,
25206  4 /*inMonth*/,
25207  0 /*onDayOfWeek*/,
25208  15 /*onDayOfMonth*/,
25209  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
25210  5520 /*atTimeCode (82800/15)*/,
25211  60 /*deltaMinutes*/,
25212  25 /*letterIndex ("S")*/,
25213  },
25214  // Rule Tunisia 1939 only - Nov 18 23:00s 0 -
25215  {
25216  1939 /*fromYear*/,
25217  1939 /*toYear*/,
25218  11 /*inMonth*/,
25219  0 /*onDayOfWeek*/,
25220  18 /*onDayOfMonth*/,
25221  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
25222  5520 /*atTimeCode (82800/15)*/,
25223  0 /*deltaMinutes*/,
25224  0 /*letterIndex ("")*/,
25225  },
25226  // Rule Tunisia 1940 only - Feb 25 23:00s 1:00 S
25227  {
25228  1940 /*fromYear*/,
25229  1940 /*toYear*/,
25230  2 /*inMonth*/,
25231  0 /*onDayOfWeek*/,
25232  25 /*onDayOfMonth*/,
25233  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
25234  5520 /*atTimeCode (82800/15)*/,
25235  60 /*deltaMinutes*/,
25236  25 /*letterIndex ("S")*/,
25237  },
25238  // Rule Tunisia 1941 only - Oct 6 0:00 0 -
25239  {
25240  1941 /*fromYear*/,
25241  1941 /*toYear*/,
25242  10 /*inMonth*/,
25243  0 /*onDayOfWeek*/,
25244  6 /*onDayOfMonth*/,
25245  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25246  0 /*atTimeCode (0/15)*/,
25247  0 /*deltaMinutes*/,
25248  0 /*letterIndex ("")*/,
25249  },
25250  // Rule Tunisia 1942 only - Mar 9 0:00 1:00 S
25251  {
25252  1942 /*fromYear*/,
25253  1942 /*toYear*/,
25254  3 /*inMonth*/,
25255  0 /*onDayOfWeek*/,
25256  9 /*onDayOfMonth*/,
25257  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25258  0 /*atTimeCode (0/15)*/,
25259  60 /*deltaMinutes*/,
25260  25 /*letterIndex ("S")*/,
25261  },
25262  // Rule Tunisia 1942 only - Nov 2 3:00 0 -
25263  {
25264  1942 /*fromYear*/,
25265  1942 /*toYear*/,
25266  11 /*inMonth*/,
25267  0 /*onDayOfWeek*/,
25268  2 /*onDayOfMonth*/,
25269  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25270  720 /*atTimeCode (10800/15)*/,
25271  0 /*deltaMinutes*/,
25272  0 /*letterIndex ("")*/,
25273  },
25274  // Rule Tunisia 1943 only - Mar 29 2:00 1:00 S
25275  {
25276  1943 /*fromYear*/,
25277  1943 /*toYear*/,
25278  3 /*inMonth*/,
25279  0 /*onDayOfWeek*/,
25280  29 /*onDayOfMonth*/,
25281  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25282  480 /*atTimeCode (7200/15)*/,
25283  60 /*deltaMinutes*/,
25284  25 /*letterIndex ("S")*/,
25285  },
25286  // Rule Tunisia 1943 only - Apr 17 2:00 0 -
25287  {
25288  1943 /*fromYear*/,
25289  1943 /*toYear*/,
25290  4 /*inMonth*/,
25291  0 /*onDayOfWeek*/,
25292  17 /*onDayOfMonth*/,
25293  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25294  480 /*atTimeCode (7200/15)*/,
25295  0 /*deltaMinutes*/,
25296  0 /*letterIndex ("")*/,
25297  },
25298  // Rule Tunisia 1943 only - Apr 25 2:00 1:00 S
25299  {
25300  1943 /*fromYear*/,
25301  1943 /*toYear*/,
25302  4 /*inMonth*/,
25303  0 /*onDayOfWeek*/,
25304  25 /*onDayOfMonth*/,
25305  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25306  480 /*atTimeCode (7200/15)*/,
25307  60 /*deltaMinutes*/,
25308  25 /*letterIndex ("S")*/,
25309  },
25310  // Rule Tunisia 1943 only - Oct 4 2:00 0 -
25311  {
25312  1943 /*fromYear*/,
25313  1943 /*toYear*/,
25314  10 /*inMonth*/,
25315  0 /*onDayOfWeek*/,
25316  4 /*onDayOfMonth*/,
25317  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25318  480 /*atTimeCode (7200/15)*/,
25319  0 /*deltaMinutes*/,
25320  0 /*letterIndex ("")*/,
25321  },
25322  // Rule Tunisia 1944 1945 - Apr Mon>=1 2:00 1:00 S
25323  {
25324  1944 /*fromYear*/,
25325  1945 /*toYear*/,
25326  4 /*inMonth*/,
25327  1 /*onDayOfWeek*/,
25328  1 /*onDayOfMonth*/,
25329  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25330  480 /*atTimeCode (7200/15)*/,
25331  60 /*deltaMinutes*/,
25332  25 /*letterIndex ("S")*/,
25333  },
25334  // Rule Tunisia 1944 only - Oct 8 0:00 0 -
25335  {
25336  1944 /*fromYear*/,
25337  1944 /*toYear*/,
25338  10 /*inMonth*/,
25339  0 /*onDayOfWeek*/,
25340  8 /*onDayOfMonth*/,
25341  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25342  0 /*atTimeCode (0/15)*/,
25343  0 /*deltaMinutes*/,
25344  0 /*letterIndex ("")*/,
25345  },
25346  // Rule Tunisia 1945 only - Sep 16 0:00 0 -
25347  {
25348  1945 /*fromYear*/,
25349  1945 /*toYear*/,
25350  9 /*inMonth*/,
25351  0 /*onDayOfWeek*/,
25352  16 /*onDayOfMonth*/,
25353  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25354  0 /*atTimeCode (0/15)*/,
25355  0 /*deltaMinutes*/,
25356  0 /*letterIndex ("")*/,
25357  },
25358  // Rule Tunisia 1977 only - Apr 30 0:00s 1:00 S
25359  {
25360  1977 /*fromYear*/,
25361  1977 /*toYear*/,
25362  4 /*inMonth*/,
25363  0 /*onDayOfWeek*/,
25364  30 /*onDayOfMonth*/,
25365  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
25366  0 /*atTimeCode (0/15)*/,
25367  60 /*deltaMinutes*/,
25368  25 /*letterIndex ("S")*/,
25369  },
25370  // Rule Tunisia 1977 only - Sep 24 0:00s 0 -
25371  {
25372  1977 /*fromYear*/,
25373  1977 /*toYear*/,
25374  9 /*inMonth*/,
25375  0 /*onDayOfWeek*/,
25376  24 /*onDayOfMonth*/,
25377  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
25378  0 /*atTimeCode (0/15)*/,
25379  0 /*deltaMinutes*/,
25380  0 /*letterIndex ("")*/,
25381  },
25382  // Rule Tunisia 1978 only - May 1 0:00s 1:00 S
25383  {
25384  1978 /*fromYear*/,
25385  1978 /*toYear*/,
25386  5 /*inMonth*/,
25387  0 /*onDayOfWeek*/,
25388  1 /*onDayOfMonth*/,
25389  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
25390  0 /*atTimeCode (0/15)*/,
25391  60 /*deltaMinutes*/,
25392  25 /*letterIndex ("S")*/,
25393  },
25394  // Rule Tunisia 1978 only - Oct 1 0:00s 0 -
25395  {
25396  1978 /*fromYear*/,
25397  1978 /*toYear*/,
25398  10 /*inMonth*/,
25399  0 /*onDayOfWeek*/,
25400  1 /*onDayOfMonth*/,
25401  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
25402  0 /*atTimeCode (0/15)*/,
25403  0 /*deltaMinutes*/,
25404  0 /*letterIndex ("")*/,
25405  },
25406  // Rule Tunisia 1988 only - Jun 1 0:00s 1:00 S
25407  {
25408  1988 /*fromYear*/,
25409  1988 /*toYear*/,
25410  6 /*inMonth*/,
25411  0 /*onDayOfWeek*/,
25412  1 /*onDayOfMonth*/,
25413  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
25414  0 /*atTimeCode (0/15)*/,
25415  60 /*deltaMinutes*/,
25416  25 /*letterIndex ("S")*/,
25417  },
25418  // Rule Tunisia 1988 1990 - Sep lastSun 0:00s 0 -
25419  {
25420  1988 /*fromYear*/,
25421  1990 /*toYear*/,
25422  9 /*inMonth*/,
25423  7 /*onDayOfWeek*/,
25424  0 /*onDayOfMonth*/,
25425  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
25426  0 /*atTimeCode (0/15)*/,
25427  0 /*deltaMinutes*/,
25428  0 /*letterIndex ("")*/,
25429  },
25430  // Rule Tunisia 1989 only - Mar 26 0:00s 1:00 S
25431  {
25432  1989 /*fromYear*/,
25433  1989 /*toYear*/,
25434  3 /*inMonth*/,
25435  0 /*onDayOfWeek*/,
25436  26 /*onDayOfMonth*/,
25437  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
25438  0 /*atTimeCode (0/15)*/,
25439  60 /*deltaMinutes*/,
25440  25 /*letterIndex ("S")*/,
25441  },
25442  // Rule Tunisia 1990 only - May 1 0:00s 1:00 S
25443  {
25444  1990 /*fromYear*/,
25445  1990 /*toYear*/,
25446  5 /*inMonth*/,
25447  0 /*onDayOfWeek*/,
25448  1 /*onDayOfMonth*/,
25449  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
25450  0 /*atTimeCode (0/15)*/,
25451  60 /*deltaMinutes*/,
25452  25 /*letterIndex ("S")*/,
25453  },
25454  // Rule Tunisia 2005 only - May 1 0:00s 1:00 S
25455  {
25456  2005 /*fromYear*/,
25457  2005 /*toYear*/,
25458  5 /*inMonth*/,
25459  0 /*onDayOfWeek*/,
25460  1 /*onDayOfMonth*/,
25461  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
25462  0 /*atTimeCode (0/15)*/,
25463  60 /*deltaMinutes*/,
25464  25 /*letterIndex ("S")*/,
25465  },
25466  // Rule Tunisia 2005 only - Sep 30 1:00s 0 -
25467  {
25468  2005 /*fromYear*/,
25469  2005 /*toYear*/,
25470  9 /*inMonth*/,
25471  0 /*onDayOfWeek*/,
25472  30 /*onDayOfMonth*/,
25473  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
25474  240 /*atTimeCode (3600/15)*/,
25475  0 /*deltaMinutes*/,
25476  0 /*letterIndex ("")*/,
25477  },
25478  // Rule Tunisia 2006 2008 - Mar lastSun 2:00s 1:00 S
25479  {
25480  2006 /*fromYear*/,
25481  2008 /*toYear*/,
25482  3 /*inMonth*/,
25483  7 /*onDayOfWeek*/,
25484  0 /*onDayOfMonth*/,
25485  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
25486  480 /*atTimeCode (7200/15)*/,
25487  60 /*deltaMinutes*/,
25488  25 /*letterIndex ("S")*/,
25489  },
25490  // Rule Tunisia 2006 2008 - Oct lastSun 2:00s 0 -
25491  {
25492  2006 /*fromYear*/,
25493  2008 /*toYear*/,
25494  10 /*inMonth*/,
25495  7 /*onDayOfWeek*/,
25496  0 /*onDayOfMonth*/,
25497  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
25498  480 /*atTimeCode (7200/15)*/,
25499  0 /*deltaMinutes*/,
25500  0 /*letterIndex ("")*/,
25501  },
25502 
25503 };
25504 
25505 const complete::ZonePolicy kZonePolicyTunisia ACE_TIME_PROGMEM = {
25506  kZoneRulesTunisia /*rules*/,
25507  26 /*numRules*/,
25508 };
25509 
25510 //---------------------------------------------------------------------------
25511 // Policy name: Turkey
25512 // Rules: 46
25513 //---------------------------------------------------------------------------
25514 
25515 static const complete::ZoneRule kZoneRulesTurkey[] ACE_TIME_PROGMEM = {
25516  // Anchor: Rule Turkey 1916 only - Oct 1 0:00 0 -
25517  {
25518  -32767 /*fromYear*/,
25519  -32767 /*toYear*/,
25520  1 /*inMonth*/,
25521  0 /*onDayOfWeek*/,
25522  1 /*onDayOfMonth*/,
25523  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25524  0 /*atTimeCode (0/15)*/,
25525  0 /*deltaMinutes*/,
25526  0 /*letterIndex ("")*/,
25527  },
25528  // Rule Turkey 1916 only - May 1 0:00 1:00 S
25529  {
25530  1916 /*fromYear*/,
25531  1916 /*toYear*/,
25532  5 /*inMonth*/,
25533  0 /*onDayOfWeek*/,
25534  1 /*onDayOfMonth*/,
25535  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25536  0 /*atTimeCode (0/15)*/,
25537  60 /*deltaMinutes*/,
25538  25 /*letterIndex ("S")*/,
25539  },
25540  // Rule Turkey 1916 only - Oct 1 0:00 0 -
25541  {
25542  1916 /*fromYear*/,
25543  1916 /*toYear*/,
25544  10 /*inMonth*/,
25545  0 /*onDayOfWeek*/,
25546  1 /*onDayOfMonth*/,
25547  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25548  0 /*atTimeCode (0/15)*/,
25549  0 /*deltaMinutes*/,
25550  0 /*letterIndex ("")*/,
25551  },
25552  // Rule Turkey 1920 only - Mar 28 0:00 1:00 S
25553  {
25554  1920 /*fromYear*/,
25555  1920 /*toYear*/,
25556  3 /*inMonth*/,
25557  0 /*onDayOfWeek*/,
25558  28 /*onDayOfMonth*/,
25559  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25560  0 /*atTimeCode (0/15)*/,
25561  60 /*deltaMinutes*/,
25562  25 /*letterIndex ("S")*/,
25563  },
25564  // Rule Turkey 1920 only - Oct 25 0:00 0 -
25565  {
25566  1920 /*fromYear*/,
25567  1920 /*toYear*/,
25568  10 /*inMonth*/,
25569  0 /*onDayOfWeek*/,
25570  25 /*onDayOfMonth*/,
25571  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25572  0 /*atTimeCode (0/15)*/,
25573  0 /*deltaMinutes*/,
25574  0 /*letterIndex ("")*/,
25575  },
25576  // Rule Turkey 1921 only - Apr 3 0:00 1:00 S
25577  {
25578  1921 /*fromYear*/,
25579  1921 /*toYear*/,
25580  4 /*inMonth*/,
25581  0 /*onDayOfWeek*/,
25582  3 /*onDayOfMonth*/,
25583  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25584  0 /*atTimeCode (0/15)*/,
25585  60 /*deltaMinutes*/,
25586  25 /*letterIndex ("S")*/,
25587  },
25588  // Rule Turkey 1921 only - Oct 3 0:00 0 -
25589  {
25590  1921 /*fromYear*/,
25591  1921 /*toYear*/,
25592  10 /*inMonth*/,
25593  0 /*onDayOfWeek*/,
25594  3 /*onDayOfMonth*/,
25595  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25596  0 /*atTimeCode (0/15)*/,
25597  0 /*deltaMinutes*/,
25598  0 /*letterIndex ("")*/,
25599  },
25600  // Rule Turkey 1922 only - Mar 26 0:00 1:00 S
25601  {
25602  1922 /*fromYear*/,
25603  1922 /*toYear*/,
25604  3 /*inMonth*/,
25605  0 /*onDayOfWeek*/,
25606  26 /*onDayOfMonth*/,
25607  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25608  0 /*atTimeCode (0/15)*/,
25609  60 /*deltaMinutes*/,
25610  25 /*letterIndex ("S")*/,
25611  },
25612  // Rule Turkey 1922 only - Oct 8 0:00 0 -
25613  {
25614  1922 /*fromYear*/,
25615  1922 /*toYear*/,
25616  10 /*inMonth*/,
25617  0 /*onDayOfWeek*/,
25618  8 /*onDayOfMonth*/,
25619  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25620  0 /*atTimeCode (0/15)*/,
25621  0 /*deltaMinutes*/,
25622  0 /*letterIndex ("")*/,
25623  },
25624  // Rule Turkey 1924 only - May 13 0:00 1:00 S
25625  {
25626  1924 /*fromYear*/,
25627  1924 /*toYear*/,
25628  5 /*inMonth*/,
25629  0 /*onDayOfWeek*/,
25630  13 /*onDayOfMonth*/,
25631  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25632  0 /*atTimeCode (0/15)*/,
25633  60 /*deltaMinutes*/,
25634  25 /*letterIndex ("S")*/,
25635  },
25636  // Rule Turkey 1924 1925 - Oct 1 0:00 0 -
25637  {
25638  1924 /*fromYear*/,
25639  1925 /*toYear*/,
25640  10 /*inMonth*/,
25641  0 /*onDayOfWeek*/,
25642  1 /*onDayOfMonth*/,
25643  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25644  0 /*atTimeCode (0/15)*/,
25645  0 /*deltaMinutes*/,
25646  0 /*letterIndex ("")*/,
25647  },
25648  // Rule Turkey 1925 only - May 1 0:00 1:00 S
25649  {
25650  1925 /*fromYear*/,
25651  1925 /*toYear*/,
25652  5 /*inMonth*/,
25653  0 /*onDayOfWeek*/,
25654  1 /*onDayOfMonth*/,
25655  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25656  0 /*atTimeCode (0/15)*/,
25657  60 /*deltaMinutes*/,
25658  25 /*letterIndex ("S")*/,
25659  },
25660  // Rule Turkey 1940 only - Jul 1 0:00 1:00 S
25661  {
25662  1940 /*fromYear*/,
25663  1940 /*toYear*/,
25664  7 /*inMonth*/,
25665  0 /*onDayOfWeek*/,
25666  1 /*onDayOfMonth*/,
25667  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25668  0 /*atTimeCode (0/15)*/,
25669  60 /*deltaMinutes*/,
25670  25 /*letterIndex ("S")*/,
25671  },
25672  // Rule Turkey 1940 only - Oct 6 0:00 0 -
25673  {
25674  1940 /*fromYear*/,
25675  1940 /*toYear*/,
25676  10 /*inMonth*/,
25677  0 /*onDayOfWeek*/,
25678  6 /*onDayOfMonth*/,
25679  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25680  0 /*atTimeCode (0/15)*/,
25681  0 /*deltaMinutes*/,
25682  0 /*letterIndex ("")*/,
25683  },
25684  // Rule Turkey 1940 only - Dec 1 0:00 1:00 S
25685  {
25686  1940 /*fromYear*/,
25687  1940 /*toYear*/,
25688  12 /*inMonth*/,
25689  0 /*onDayOfWeek*/,
25690  1 /*onDayOfMonth*/,
25691  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25692  0 /*atTimeCode (0/15)*/,
25693  60 /*deltaMinutes*/,
25694  25 /*letterIndex ("S")*/,
25695  },
25696  // Rule Turkey 1941 only - Sep 21 0:00 0 -
25697  {
25698  1941 /*fromYear*/,
25699  1941 /*toYear*/,
25700  9 /*inMonth*/,
25701  0 /*onDayOfWeek*/,
25702  21 /*onDayOfMonth*/,
25703  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25704  0 /*atTimeCode (0/15)*/,
25705  0 /*deltaMinutes*/,
25706  0 /*letterIndex ("")*/,
25707  },
25708  // Rule Turkey 1942 only - Apr 1 0:00 1:00 S
25709  {
25710  1942 /*fromYear*/,
25711  1942 /*toYear*/,
25712  4 /*inMonth*/,
25713  0 /*onDayOfWeek*/,
25714  1 /*onDayOfMonth*/,
25715  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25716  0 /*atTimeCode (0/15)*/,
25717  60 /*deltaMinutes*/,
25718  25 /*letterIndex ("S")*/,
25719  },
25720  // Rule Turkey 1945 only - Oct 8 0:00 0 -
25721  {
25722  1945 /*fromYear*/,
25723  1945 /*toYear*/,
25724  10 /*inMonth*/,
25725  0 /*onDayOfWeek*/,
25726  8 /*onDayOfMonth*/,
25727  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25728  0 /*atTimeCode (0/15)*/,
25729  0 /*deltaMinutes*/,
25730  0 /*letterIndex ("")*/,
25731  },
25732  // Rule Turkey 1946 only - Jun 1 0:00 1:00 S
25733  {
25734  1946 /*fromYear*/,
25735  1946 /*toYear*/,
25736  6 /*inMonth*/,
25737  0 /*onDayOfWeek*/,
25738  1 /*onDayOfMonth*/,
25739  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25740  0 /*atTimeCode (0/15)*/,
25741  60 /*deltaMinutes*/,
25742  25 /*letterIndex ("S")*/,
25743  },
25744  // Rule Turkey 1946 only - Oct 1 0:00 0 -
25745  {
25746  1946 /*fromYear*/,
25747  1946 /*toYear*/,
25748  10 /*inMonth*/,
25749  0 /*onDayOfWeek*/,
25750  1 /*onDayOfMonth*/,
25751  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25752  0 /*atTimeCode (0/15)*/,
25753  0 /*deltaMinutes*/,
25754  0 /*letterIndex ("")*/,
25755  },
25756  // Rule Turkey 1947 1948 - Apr Sun>=16 0:00 1:00 S
25757  {
25758  1947 /*fromYear*/,
25759  1948 /*toYear*/,
25760  4 /*inMonth*/,
25761  7 /*onDayOfWeek*/,
25762  16 /*onDayOfMonth*/,
25763  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25764  0 /*atTimeCode (0/15)*/,
25765  60 /*deltaMinutes*/,
25766  25 /*letterIndex ("S")*/,
25767  },
25768  // Rule Turkey 1947 1951 - Oct Sun>=2 0:00 0 -
25769  {
25770  1947 /*fromYear*/,
25771  1951 /*toYear*/,
25772  10 /*inMonth*/,
25773  7 /*onDayOfWeek*/,
25774  2 /*onDayOfMonth*/,
25775  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25776  0 /*atTimeCode (0/15)*/,
25777  0 /*deltaMinutes*/,
25778  0 /*letterIndex ("")*/,
25779  },
25780  // Rule Turkey 1949 only - Apr 10 0:00 1:00 S
25781  {
25782  1949 /*fromYear*/,
25783  1949 /*toYear*/,
25784  4 /*inMonth*/,
25785  0 /*onDayOfWeek*/,
25786  10 /*onDayOfMonth*/,
25787  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25788  0 /*atTimeCode (0/15)*/,
25789  60 /*deltaMinutes*/,
25790  25 /*letterIndex ("S")*/,
25791  },
25792  // Rule Turkey 1950 only - Apr 16 0:00 1:00 S
25793  {
25794  1950 /*fromYear*/,
25795  1950 /*toYear*/,
25796  4 /*inMonth*/,
25797  0 /*onDayOfWeek*/,
25798  16 /*onDayOfMonth*/,
25799  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25800  0 /*atTimeCode (0/15)*/,
25801  60 /*deltaMinutes*/,
25802  25 /*letterIndex ("S")*/,
25803  },
25804  // Rule Turkey 1951 only - Apr 22 0:00 1:00 S
25805  {
25806  1951 /*fromYear*/,
25807  1951 /*toYear*/,
25808  4 /*inMonth*/,
25809  0 /*onDayOfWeek*/,
25810  22 /*onDayOfMonth*/,
25811  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25812  0 /*atTimeCode (0/15)*/,
25813  60 /*deltaMinutes*/,
25814  25 /*letterIndex ("S")*/,
25815  },
25816  // Rule Turkey 1962 only - Jul 15 0:00 1:00 S
25817  {
25818  1962 /*fromYear*/,
25819  1962 /*toYear*/,
25820  7 /*inMonth*/,
25821  0 /*onDayOfWeek*/,
25822  15 /*onDayOfMonth*/,
25823  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25824  0 /*atTimeCode (0/15)*/,
25825  60 /*deltaMinutes*/,
25826  25 /*letterIndex ("S")*/,
25827  },
25828  // Rule Turkey 1963 only - Oct 30 0:00 0 -
25829  {
25830  1963 /*fromYear*/,
25831  1963 /*toYear*/,
25832  10 /*inMonth*/,
25833  0 /*onDayOfWeek*/,
25834  30 /*onDayOfMonth*/,
25835  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25836  0 /*atTimeCode (0/15)*/,
25837  0 /*deltaMinutes*/,
25838  0 /*letterIndex ("")*/,
25839  },
25840  // Rule Turkey 1964 only - May 15 0:00 1:00 S
25841  {
25842  1964 /*fromYear*/,
25843  1964 /*toYear*/,
25844  5 /*inMonth*/,
25845  0 /*onDayOfWeek*/,
25846  15 /*onDayOfMonth*/,
25847  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25848  0 /*atTimeCode (0/15)*/,
25849  60 /*deltaMinutes*/,
25850  25 /*letterIndex ("S")*/,
25851  },
25852  // Rule Turkey 1964 only - Oct 1 0:00 0 -
25853  {
25854  1964 /*fromYear*/,
25855  1964 /*toYear*/,
25856  10 /*inMonth*/,
25857  0 /*onDayOfWeek*/,
25858  1 /*onDayOfMonth*/,
25859  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25860  0 /*atTimeCode (0/15)*/,
25861  0 /*deltaMinutes*/,
25862  0 /*letterIndex ("")*/,
25863  },
25864  // Rule Turkey 1973 only - Jun 3 1:00 1:00 S
25865  {
25866  1973 /*fromYear*/,
25867  1973 /*toYear*/,
25868  6 /*inMonth*/,
25869  0 /*onDayOfWeek*/,
25870  3 /*onDayOfMonth*/,
25871  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25872  240 /*atTimeCode (3600/15)*/,
25873  60 /*deltaMinutes*/,
25874  25 /*letterIndex ("S")*/,
25875  },
25876  // Rule Turkey 1973 1976 - Oct Sun>=31 2:00 0 -
25877  {
25878  1973 /*fromYear*/,
25879  1976 /*toYear*/,
25880  10 /*inMonth*/,
25881  7 /*onDayOfWeek*/,
25882  31 /*onDayOfMonth*/,
25883  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25884  480 /*atTimeCode (7200/15)*/,
25885  0 /*deltaMinutes*/,
25886  0 /*letterIndex ("")*/,
25887  },
25888  // Rule Turkey 1974 only - Mar 31 2:00 1:00 S
25889  {
25890  1974 /*fromYear*/,
25891  1974 /*toYear*/,
25892  3 /*inMonth*/,
25893  0 /*onDayOfWeek*/,
25894  31 /*onDayOfMonth*/,
25895  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25896  480 /*atTimeCode (7200/15)*/,
25897  60 /*deltaMinutes*/,
25898  25 /*letterIndex ("S")*/,
25899  },
25900  // Rule Turkey 1975 only - Mar 22 2:00 1:00 S
25901  {
25902  1975 /*fromYear*/,
25903  1975 /*toYear*/,
25904  3 /*inMonth*/,
25905  0 /*onDayOfWeek*/,
25906  22 /*onDayOfMonth*/,
25907  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25908  480 /*atTimeCode (7200/15)*/,
25909  60 /*deltaMinutes*/,
25910  25 /*letterIndex ("S")*/,
25911  },
25912  // Rule Turkey 1976 only - Mar 21 2:00 1:00 S
25913  {
25914  1976 /*fromYear*/,
25915  1976 /*toYear*/,
25916  3 /*inMonth*/,
25917  0 /*onDayOfWeek*/,
25918  21 /*onDayOfMonth*/,
25919  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25920  480 /*atTimeCode (7200/15)*/,
25921  60 /*deltaMinutes*/,
25922  25 /*letterIndex ("S")*/,
25923  },
25924  // Rule Turkey 1977 1978 - Apr Sun>=1 2:00 1:00 S
25925  {
25926  1977 /*fromYear*/,
25927  1978 /*toYear*/,
25928  4 /*inMonth*/,
25929  7 /*onDayOfWeek*/,
25930  1 /*onDayOfMonth*/,
25931  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25932  480 /*atTimeCode (7200/15)*/,
25933  60 /*deltaMinutes*/,
25934  25 /*letterIndex ("S")*/,
25935  },
25936  // Rule Turkey 1977 1978 - Oct Sun>=15 2:00 0 -
25937  {
25938  1977 /*fromYear*/,
25939  1978 /*toYear*/,
25940  10 /*inMonth*/,
25941  7 /*onDayOfWeek*/,
25942  15 /*onDayOfMonth*/,
25943  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25944  480 /*atTimeCode (7200/15)*/,
25945  0 /*deltaMinutes*/,
25946  0 /*letterIndex ("")*/,
25947  },
25948  // Rule Turkey 1978 only - Jun 29 0:00 0 -
25949  {
25950  1978 /*fromYear*/,
25951  1978 /*toYear*/,
25952  6 /*inMonth*/,
25953  0 /*onDayOfWeek*/,
25954  29 /*onDayOfMonth*/,
25955  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25956  0 /*atTimeCode (0/15)*/,
25957  0 /*deltaMinutes*/,
25958  0 /*letterIndex ("")*/,
25959  },
25960  // Rule Turkey 1983 only - Jul 31 2:00 1:00 S
25961  {
25962  1983 /*fromYear*/,
25963  1983 /*toYear*/,
25964  7 /*inMonth*/,
25965  0 /*onDayOfWeek*/,
25966  31 /*onDayOfMonth*/,
25967  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25968  480 /*atTimeCode (7200/15)*/,
25969  60 /*deltaMinutes*/,
25970  25 /*letterIndex ("S")*/,
25971  },
25972  // Rule Turkey 1983 only - Oct 2 2:00 0 -
25973  {
25974  1983 /*fromYear*/,
25975  1983 /*toYear*/,
25976  10 /*inMonth*/,
25977  0 /*onDayOfWeek*/,
25978  2 /*onDayOfMonth*/,
25979  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
25980  480 /*atTimeCode (7200/15)*/,
25981  0 /*deltaMinutes*/,
25982  0 /*letterIndex ("")*/,
25983  },
25984  // Rule Turkey 1985 only - Apr 20 1:00s 1:00 S
25985  {
25986  1985 /*fromYear*/,
25987  1985 /*toYear*/,
25988  4 /*inMonth*/,
25989  0 /*onDayOfWeek*/,
25990  20 /*onDayOfMonth*/,
25991  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
25992  240 /*atTimeCode (3600/15)*/,
25993  60 /*deltaMinutes*/,
25994  25 /*letterIndex ("S")*/,
25995  },
25996  // Rule Turkey 1985 only - Sep 28 1:00s 0 -
25997  {
25998  1985 /*fromYear*/,
25999  1985 /*toYear*/,
26000  9 /*inMonth*/,
26001  0 /*onDayOfWeek*/,
26002  28 /*onDayOfMonth*/,
26003  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
26004  240 /*atTimeCode (3600/15)*/,
26005  0 /*deltaMinutes*/,
26006  0 /*letterIndex ("")*/,
26007  },
26008  // Rule Turkey 1986 1993 - Mar lastSun 1:00s 1:00 S
26009  {
26010  1986 /*fromYear*/,
26011  1993 /*toYear*/,
26012  3 /*inMonth*/,
26013  7 /*onDayOfWeek*/,
26014  0 /*onDayOfMonth*/,
26015  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
26016  240 /*atTimeCode (3600/15)*/,
26017  60 /*deltaMinutes*/,
26018  25 /*letterIndex ("S")*/,
26019  },
26020  // Rule Turkey 1986 1995 - Sep lastSun 1:00s 0 -
26021  {
26022  1986 /*fromYear*/,
26023  1995 /*toYear*/,
26024  9 /*inMonth*/,
26025  7 /*onDayOfWeek*/,
26026  0 /*onDayOfMonth*/,
26027  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
26028  240 /*atTimeCode (3600/15)*/,
26029  0 /*deltaMinutes*/,
26030  0 /*letterIndex ("")*/,
26031  },
26032  // Rule Turkey 1994 only - Mar 20 1:00s 1:00 S
26033  {
26034  1994 /*fromYear*/,
26035  1994 /*toYear*/,
26036  3 /*inMonth*/,
26037  0 /*onDayOfWeek*/,
26038  20 /*onDayOfMonth*/,
26039  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
26040  240 /*atTimeCode (3600/15)*/,
26041  60 /*deltaMinutes*/,
26042  25 /*letterIndex ("S")*/,
26043  },
26044  // Rule Turkey 1995 2006 - Mar lastSun 1:00s 1:00 S
26045  {
26046  1995 /*fromYear*/,
26047  2006 /*toYear*/,
26048  3 /*inMonth*/,
26049  7 /*onDayOfWeek*/,
26050  0 /*onDayOfMonth*/,
26051  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
26052  240 /*atTimeCode (3600/15)*/,
26053  60 /*deltaMinutes*/,
26054  25 /*letterIndex ("S")*/,
26055  },
26056  // Rule Turkey 1996 2006 - Oct lastSun 1:00s 0 -
26057  {
26058  1996 /*fromYear*/,
26059  2006 /*toYear*/,
26060  10 /*inMonth*/,
26061  7 /*onDayOfWeek*/,
26062  0 /*onDayOfMonth*/,
26063  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
26064  240 /*atTimeCode (3600/15)*/,
26065  0 /*deltaMinutes*/,
26066  0 /*letterIndex ("")*/,
26067  },
26068 
26069 };
26070 
26071 const complete::ZonePolicy kZonePolicyTurkey ACE_TIME_PROGMEM = {
26072  kZoneRulesTurkey /*rules*/,
26073  46 /*numRules*/,
26074 };
26075 
26076 //---------------------------------------------------------------------------
26077 // Policy name: US
26078 // Rules: 14
26079 //---------------------------------------------------------------------------
26080 
26081 static const complete::ZoneRule kZoneRulesUS[] ACE_TIME_PROGMEM = {
26082  // Anchor: Rule US 1918 1919 - Oct lastSun 2:00 0 S
26083  {
26084  -32767 /*fromYear*/,
26085  -32767 /*toYear*/,
26086  1 /*inMonth*/,
26087  0 /*onDayOfWeek*/,
26088  1 /*onDayOfMonth*/,
26089  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26090  0 /*atTimeCode (0/15)*/,
26091  0 /*deltaMinutes*/,
26092  25 /*letterIndex ("S")*/,
26093  },
26094  // Rule US 1918 1919 - Mar lastSun 2:00 1:00 D
26095  {
26096  1918 /*fromYear*/,
26097  1919 /*toYear*/,
26098  3 /*inMonth*/,
26099  7 /*onDayOfWeek*/,
26100  0 /*onDayOfMonth*/,
26101  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26102  480 /*atTimeCode (7200/15)*/,
26103  60 /*deltaMinutes*/,
26104  13 /*letterIndex ("D")*/,
26105  },
26106  // Rule US 1918 1919 - Oct lastSun 2:00 0 S
26107  {
26108  1918 /*fromYear*/,
26109  1919 /*toYear*/,
26110  10 /*inMonth*/,
26111  7 /*onDayOfWeek*/,
26112  0 /*onDayOfMonth*/,
26113  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26114  480 /*atTimeCode (7200/15)*/,
26115  0 /*deltaMinutes*/,
26116  25 /*letterIndex ("S")*/,
26117  },
26118  // Rule US 1942 only - Feb 9 2:00 1:00 W
26119  {
26120  1942 /*fromYear*/,
26121  1942 /*toYear*/,
26122  2 /*inMonth*/,
26123  0 /*onDayOfWeek*/,
26124  9 /*onDayOfMonth*/,
26125  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26126  480 /*atTimeCode (7200/15)*/,
26127  60 /*deltaMinutes*/,
26128  26 /*letterIndex ("W")*/,
26129  },
26130  // Rule US 1945 only - Aug 14 23:00u 1:00 P
26131  {
26132  1945 /*fromYear*/,
26133  1945 /*toYear*/,
26134  8 /*inMonth*/,
26135  0 /*onDayOfWeek*/,
26136  14 /*onDayOfMonth*/,
26137  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
26138  5520 /*atTimeCode (82800/15)*/,
26139  60 /*deltaMinutes*/,
26140  24 /*letterIndex ("P")*/,
26141  },
26142  // Rule US 1945 only - Sep 30 2:00 0 S
26143  {
26144  1945 /*fromYear*/,
26145  1945 /*toYear*/,
26146  9 /*inMonth*/,
26147  0 /*onDayOfWeek*/,
26148  30 /*onDayOfMonth*/,
26149  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26150  480 /*atTimeCode (7200/15)*/,
26151  0 /*deltaMinutes*/,
26152  25 /*letterIndex ("S")*/,
26153  },
26154  // Rule US 1967 2006 - Oct lastSun 2:00 0 S
26155  {
26156  1967 /*fromYear*/,
26157  2006 /*toYear*/,
26158  10 /*inMonth*/,
26159  7 /*onDayOfWeek*/,
26160  0 /*onDayOfMonth*/,
26161  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26162  480 /*atTimeCode (7200/15)*/,
26163  0 /*deltaMinutes*/,
26164  25 /*letterIndex ("S")*/,
26165  },
26166  // Rule US 1967 1973 - Apr lastSun 2:00 1:00 D
26167  {
26168  1967 /*fromYear*/,
26169  1973 /*toYear*/,
26170  4 /*inMonth*/,
26171  7 /*onDayOfWeek*/,
26172  0 /*onDayOfMonth*/,
26173  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26174  480 /*atTimeCode (7200/15)*/,
26175  60 /*deltaMinutes*/,
26176  13 /*letterIndex ("D")*/,
26177  },
26178  // Rule US 1974 only - Jan 6 2:00 1:00 D
26179  {
26180  1974 /*fromYear*/,
26181  1974 /*toYear*/,
26182  1 /*inMonth*/,
26183  0 /*onDayOfWeek*/,
26184  6 /*onDayOfMonth*/,
26185  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26186  480 /*atTimeCode (7200/15)*/,
26187  60 /*deltaMinutes*/,
26188  13 /*letterIndex ("D")*/,
26189  },
26190  // Rule US 1975 only - Feb lastSun 2:00 1:00 D
26191  {
26192  1975 /*fromYear*/,
26193  1975 /*toYear*/,
26194  2 /*inMonth*/,
26195  7 /*onDayOfWeek*/,
26196  0 /*onDayOfMonth*/,
26197  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26198  480 /*atTimeCode (7200/15)*/,
26199  60 /*deltaMinutes*/,
26200  13 /*letterIndex ("D")*/,
26201  },
26202  // Rule US 1976 1986 - Apr lastSun 2:00 1:00 D
26203  {
26204  1976 /*fromYear*/,
26205  1986 /*toYear*/,
26206  4 /*inMonth*/,
26207  7 /*onDayOfWeek*/,
26208  0 /*onDayOfMonth*/,
26209  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26210  480 /*atTimeCode (7200/15)*/,
26211  60 /*deltaMinutes*/,
26212  13 /*letterIndex ("D")*/,
26213  },
26214  // Rule US 1987 2006 - Apr Sun>=1 2:00 1:00 D
26215  {
26216  1987 /*fromYear*/,
26217  2006 /*toYear*/,
26218  4 /*inMonth*/,
26219  7 /*onDayOfWeek*/,
26220  1 /*onDayOfMonth*/,
26221  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26222  480 /*atTimeCode (7200/15)*/,
26223  60 /*deltaMinutes*/,
26224  13 /*letterIndex ("D")*/,
26225  },
26226  // Rule US 2007 max - Mar Sun>=8 2:00 1:00 D
26227  {
26228  2007 /*fromYear*/,
26229  32766 /*toYear*/,
26230  3 /*inMonth*/,
26231  7 /*onDayOfWeek*/,
26232  8 /*onDayOfMonth*/,
26233  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26234  480 /*atTimeCode (7200/15)*/,
26235  60 /*deltaMinutes*/,
26236  13 /*letterIndex ("D")*/,
26237  },
26238  // Rule US 2007 max - Nov Sun>=1 2:00 0 S
26239  {
26240  2007 /*fromYear*/,
26241  32766 /*toYear*/,
26242  11 /*inMonth*/,
26243  7 /*onDayOfWeek*/,
26244  1 /*onDayOfMonth*/,
26245  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26246  480 /*atTimeCode (7200/15)*/,
26247  0 /*deltaMinutes*/,
26248  25 /*letterIndex ("S")*/,
26249  },
26250 
26251 };
26252 
26253 const complete::ZonePolicy kZonePolicyUS ACE_TIME_PROGMEM = {
26254  kZoneRulesUS /*rules*/,
26255  14 /*numRules*/,
26256 };
26257 
26258 //---------------------------------------------------------------------------
26259 // Policy name: Uruguay
26260 // Rules: 49
26261 //---------------------------------------------------------------------------
26262 
26263 static const complete::ZoneRule kZoneRulesUruguay[] ACE_TIME_PROGMEM = {
26264  // Anchor: Rule Uruguay 1924 1926 - Apr 1 0:00 0 -
26265  {
26266  -32767 /*fromYear*/,
26267  -32767 /*toYear*/,
26268  1 /*inMonth*/,
26269  0 /*onDayOfWeek*/,
26270  1 /*onDayOfMonth*/,
26271  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26272  0 /*atTimeCode (0/15)*/,
26273  0 /*deltaMinutes*/,
26274  0 /*letterIndex ("")*/,
26275  },
26276  // Rule Uruguay 1923 1925 - Oct 1 0:00 0:30 -
26277  {
26278  1923 /*fromYear*/,
26279  1925 /*toYear*/,
26280  10 /*inMonth*/,
26281  0 /*onDayOfWeek*/,
26282  1 /*onDayOfMonth*/,
26283  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26284  0 /*atTimeCode (0/15)*/,
26285  30 /*deltaMinutes*/,
26286  0 /*letterIndex ("")*/,
26287  },
26288  // Rule Uruguay 1924 1926 - Apr 1 0:00 0 -
26289  {
26290  1924 /*fromYear*/,
26291  1926 /*toYear*/,
26292  4 /*inMonth*/,
26293  0 /*onDayOfWeek*/,
26294  1 /*onDayOfMonth*/,
26295  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26296  0 /*atTimeCode (0/15)*/,
26297  0 /*deltaMinutes*/,
26298  0 /*letterIndex ("")*/,
26299  },
26300  // Rule Uruguay 1933 1938 - Oct lastSun 0:00 0:30 -
26301  {
26302  1933 /*fromYear*/,
26303  1938 /*toYear*/,
26304  10 /*inMonth*/,
26305  7 /*onDayOfWeek*/,
26306  0 /*onDayOfMonth*/,
26307  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26308  0 /*atTimeCode (0/15)*/,
26309  30 /*deltaMinutes*/,
26310  0 /*letterIndex ("")*/,
26311  },
26312  // Rule Uruguay 1934 1941 - Mar lastSat 24:00 0 -
26313  {
26314  1934 /*fromYear*/,
26315  1941 /*toYear*/,
26316  3 /*inMonth*/,
26317  6 /*onDayOfWeek*/,
26318  0 /*onDayOfMonth*/,
26319  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26320  5760 /*atTimeCode (86400/15)*/,
26321  0 /*deltaMinutes*/,
26322  0 /*letterIndex ("")*/,
26323  },
26324  // Rule Uruguay 1939 only - Oct 1 0:00 0:30 -
26325  {
26326  1939 /*fromYear*/,
26327  1939 /*toYear*/,
26328  10 /*inMonth*/,
26329  0 /*onDayOfWeek*/,
26330  1 /*onDayOfMonth*/,
26331  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26332  0 /*atTimeCode (0/15)*/,
26333  30 /*deltaMinutes*/,
26334  0 /*letterIndex ("")*/,
26335  },
26336  // Rule Uruguay 1940 only - Oct 27 0:00 0:30 -
26337  {
26338  1940 /*fromYear*/,
26339  1940 /*toYear*/,
26340  10 /*inMonth*/,
26341  0 /*onDayOfWeek*/,
26342  27 /*onDayOfMonth*/,
26343  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26344  0 /*atTimeCode (0/15)*/,
26345  30 /*deltaMinutes*/,
26346  0 /*letterIndex ("")*/,
26347  },
26348  // Rule Uruguay 1941 only - Aug 1 0:00 0:30 -
26349  {
26350  1941 /*fromYear*/,
26351  1941 /*toYear*/,
26352  8 /*inMonth*/,
26353  0 /*onDayOfWeek*/,
26354  1 /*onDayOfMonth*/,
26355  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26356  0 /*atTimeCode (0/15)*/,
26357  30 /*deltaMinutes*/,
26358  0 /*letterIndex ("")*/,
26359  },
26360  // Rule Uruguay 1942 only - Dec 14 0:00 0:30 -
26361  {
26362  1942 /*fromYear*/,
26363  1942 /*toYear*/,
26364  12 /*inMonth*/,
26365  0 /*onDayOfWeek*/,
26366  14 /*onDayOfMonth*/,
26367  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26368  0 /*atTimeCode (0/15)*/,
26369  30 /*deltaMinutes*/,
26370  0 /*letterIndex ("")*/,
26371  },
26372  // Rule Uruguay 1943 only - Mar 14 0:00 0 -
26373  {
26374  1943 /*fromYear*/,
26375  1943 /*toYear*/,
26376  3 /*inMonth*/,
26377  0 /*onDayOfWeek*/,
26378  14 /*onDayOfMonth*/,
26379  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26380  0 /*atTimeCode (0/15)*/,
26381  0 /*deltaMinutes*/,
26382  0 /*letterIndex ("")*/,
26383  },
26384  // Rule Uruguay 1959 only - May 24 0:00 0:30 -
26385  {
26386  1959 /*fromYear*/,
26387  1959 /*toYear*/,
26388  5 /*inMonth*/,
26389  0 /*onDayOfWeek*/,
26390  24 /*onDayOfMonth*/,
26391  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26392  0 /*atTimeCode (0/15)*/,
26393  30 /*deltaMinutes*/,
26394  0 /*letterIndex ("")*/,
26395  },
26396  // Rule Uruguay 1959 only - Nov 15 0:00 0 -
26397  {
26398  1959 /*fromYear*/,
26399  1959 /*toYear*/,
26400  11 /*inMonth*/,
26401  0 /*onDayOfWeek*/,
26402  15 /*onDayOfMonth*/,
26403  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26404  0 /*atTimeCode (0/15)*/,
26405  0 /*deltaMinutes*/,
26406  0 /*letterIndex ("")*/,
26407  },
26408  // Rule Uruguay 1960 only - Jan 17 0:00 1:00 -
26409  {
26410  1960 /*fromYear*/,
26411  1960 /*toYear*/,
26412  1 /*inMonth*/,
26413  0 /*onDayOfWeek*/,
26414  17 /*onDayOfMonth*/,
26415  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26416  0 /*atTimeCode (0/15)*/,
26417  60 /*deltaMinutes*/,
26418  0 /*letterIndex ("")*/,
26419  },
26420  // Rule Uruguay 1960 only - Mar 6 0:00 0 -
26421  {
26422  1960 /*fromYear*/,
26423  1960 /*toYear*/,
26424  3 /*inMonth*/,
26425  0 /*onDayOfWeek*/,
26426  6 /*onDayOfMonth*/,
26427  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26428  0 /*atTimeCode (0/15)*/,
26429  0 /*deltaMinutes*/,
26430  0 /*letterIndex ("")*/,
26431  },
26432  // Rule Uruguay 1965 only - Apr 4 0:00 1:00 -
26433  {
26434  1965 /*fromYear*/,
26435  1965 /*toYear*/,
26436  4 /*inMonth*/,
26437  0 /*onDayOfWeek*/,
26438  4 /*onDayOfMonth*/,
26439  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26440  0 /*atTimeCode (0/15)*/,
26441  60 /*deltaMinutes*/,
26442  0 /*letterIndex ("")*/,
26443  },
26444  // Rule Uruguay 1965 only - Sep 26 0:00 0 -
26445  {
26446  1965 /*fromYear*/,
26447  1965 /*toYear*/,
26448  9 /*inMonth*/,
26449  0 /*onDayOfWeek*/,
26450  26 /*onDayOfMonth*/,
26451  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26452  0 /*atTimeCode (0/15)*/,
26453  0 /*deltaMinutes*/,
26454  0 /*letterIndex ("")*/,
26455  },
26456  // Rule Uruguay 1968 only - May 27 0:00 0:30 -
26457  {
26458  1968 /*fromYear*/,
26459  1968 /*toYear*/,
26460  5 /*inMonth*/,
26461  0 /*onDayOfWeek*/,
26462  27 /*onDayOfMonth*/,
26463  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26464  0 /*atTimeCode (0/15)*/,
26465  30 /*deltaMinutes*/,
26466  0 /*letterIndex ("")*/,
26467  },
26468  // Rule Uruguay 1968 only - Dec 1 0:00 0 -
26469  {
26470  1968 /*fromYear*/,
26471  1968 /*toYear*/,
26472  12 /*inMonth*/,
26473  0 /*onDayOfWeek*/,
26474  1 /*onDayOfMonth*/,
26475  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26476  0 /*atTimeCode (0/15)*/,
26477  0 /*deltaMinutes*/,
26478  0 /*letterIndex ("")*/,
26479  },
26480  // Rule Uruguay 1970 only - Apr 25 0:00 1:00 -
26481  {
26482  1970 /*fromYear*/,
26483  1970 /*toYear*/,
26484  4 /*inMonth*/,
26485  0 /*onDayOfWeek*/,
26486  25 /*onDayOfMonth*/,
26487  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26488  0 /*atTimeCode (0/15)*/,
26489  60 /*deltaMinutes*/,
26490  0 /*letterIndex ("")*/,
26491  },
26492  // Rule Uruguay 1970 only - Jun 14 0:00 0 -
26493  {
26494  1970 /*fromYear*/,
26495  1970 /*toYear*/,
26496  6 /*inMonth*/,
26497  0 /*onDayOfWeek*/,
26498  14 /*onDayOfMonth*/,
26499  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26500  0 /*atTimeCode (0/15)*/,
26501  0 /*deltaMinutes*/,
26502  0 /*letterIndex ("")*/,
26503  },
26504  // Rule Uruguay 1972 only - Apr 23 0:00 1:00 -
26505  {
26506  1972 /*fromYear*/,
26507  1972 /*toYear*/,
26508  4 /*inMonth*/,
26509  0 /*onDayOfWeek*/,
26510  23 /*onDayOfMonth*/,
26511  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26512  0 /*atTimeCode (0/15)*/,
26513  60 /*deltaMinutes*/,
26514  0 /*letterIndex ("")*/,
26515  },
26516  // Rule Uruguay 1972 only - Jul 16 0:00 0 -
26517  {
26518  1972 /*fromYear*/,
26519  1972 /*toYear*/,
26520  7 /*inMonth*/,
26521  0 /*onDayOfWeek*/,
26522  16 /*onDayOfMonth*/,
26523  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26524  0 /*atTimeCode (0/15)*/,
26525  0 /*deltaMinutes*/,
26526  0 /*letterIndex ("")*/,
26527  },
26528  // Rule Uruguay 1974 only - Jan 13 0:00 1:30 -
26529  {
26530  1974 /*fromYear*/,
26531  1974 /*toYear*/,
26532  1 /*inMonth*/,
26533  0 /*onDayOfWeek*/,
26534  13 /*onDayOfMonth*/,
26535  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26536  0 /*atTimeCode (0/15)*/,
26537  90 /*deltaMinutes*/,
26538  0 /*letterIndex ("")*/,
26539  },
26540  // Rule Uruguay 1974 only - Mar 10 0:00 0:30 -
26541  {
26542  1974 /*fromYear*/,
26543  1974 /*toYear*/,
26544  3 /*inMonth*/,
26545  0 /*onDayOfWeek*/,
26546  10 /*onDayOfMonth*/,
26547  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26548  0 /*atTimeCode (0/15)*/,
26549  30 /*deltaMinutes*/,
26550  0 /*letterIndex ("")*/,
26551  },
26552  // Rule Uruguay 1974 only - Sep 1 0:00 0 -
26553  {
26554  1974 /*fromYear*/,
26555  1974 /*toYear*/,
26556  9 /*inMonth*/,
26557  0 /*onDayOfWeek*/,
26558  1 /*onDayOfMonth*/,
26559  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26560  0 /*atTimeCode (0/15)*/,
26561  0 /*deltaMinutes*/,
26562  0 /*letterIndex ("")*/,
26563  },
26564  // Rule Uruguay 1974 only - Dec 22 0:00 1:00 -
26565  {
26566  1974 /*fromYear*/,
26567  1974 /*toYear*/,
26568  12 /*inMonth*/,
26569  0 /*onDayOfWeek*/,
26570  22 /*onDayOfMonth*/,
26571  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26572  0 /*atTimeCode (0/15)*/,
26573  60 /*deltaMinutes*/,
26574  0 /*letterIndex ("")*/,
26575  },
26576  // Rule Uruguay 1975 only - Mar 30 0:00 0 -
26577  {
26578  1975 /*fromYear*/,
26579  1975 /*toYear*/,
26580  3 /*inMonth*/,
26581  0 /*onDayOfWeek*/,
26582  30 /*onDayOfMonth*/,
26583  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26584  0 /*atTimeCode (0/15)*/,
26585  0 /*deltaMinutes*/,
26586  0 /*letterIndex ("")*/,
26587  },
26588  // Rule Uruguay 1976 only - Dec 19 0:00 1:00 -
26589  {
26590  1976 /*fromYear*/,
26591  1976 /*toYear*/,
26592  12 /*inMonth*/,
26593  0 /*onDayOfWeek*/,
26594  19 /*onDayOfMonth*/,
26595  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26596  0 /*atTimeCode (0/15)*/,
26597  60 /*deltaMinutes*/,
26598  0 /*letterIndex ("")*/,
26599  },
26600  // Rule Uruguay 1977 only - Mar 6 0:00 0 -
26601  {
26602  1977 /*fromYear*/,
26603  1977 /*toYear*/,
26604  3 /*inMonth*/,
26605  0 /*onDayOfWeek*/,
26606  6 /*onDayOfMonth*/,
26607  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26608  0 /*atTimeCode (0/15)*/,
26609  0 /*deltaMinutes*/,
26610  0 /*letterIndex ("")*/,
26611  },
26612  // Rule Uruguay 1977 only - Dec 4 0:00 1:00 -
26613  {
26614  1977 /*fromYear*/,
26615  1977 /*toYear*/,
26616  12 /*inMonth*/,
26617  0 /*onDayOfWeek*/,
26618  4 /*onDayOfMonth*/,
26619  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26620  0 /*atTimeCode (0/15)*/,
26621  60 /*deltaMinutes*/,
26622  0 /*letterIndex ("")*/,
26623  },
26624  // Rule Uruguay 1978 1979 - Mar Sun>=1 0:00 0 -
26625  {
26626  1978 /*fromYear*/,
26627  1979 /*toYear*/,
26628  3 /*inMonth*/,
26629  7 /*onDayOfWeek*/,
26630  1 /*onDayOfMonth*/,
26631  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26632  0 /*atTimeCode (0/15)*/,
26633  0 /*deltaMinutes*/,
26634  0 /*letterIndex ("")*/,
26635  },
26636  // Rule Uruguay 1978 only - Dec 17 0:00 1:00 -
26637  {
26638  1978 /*fromYear*/,
26639  1978 /*toYear*/,
26640  12 /*inMonth*/,
26641  0 /*onDayOfWeek*/,
26642  17 /*onDayOfMonth*/,
26643  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26644  0 /*atTimeCode (0/15)*/,
26645  60 /*deltaMinutes*/,
26646  0 /*letterIndex ("")*/,
26647  },
26648  // Rule Uruguay 1979 only - Apr 29 0:00 1:00 -
26649  {
26650  1979 /*fromYear*/,
26651  1979 /*toYear*/,
26652  4 /*inMonth*/,
26653  0 /*onDayOfWeek*/,
26654  29 /*onDayOfMonth*/,
26655  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26656  0 /*atTimeCode (0/15)*/,
26657  60 /*deltaMinutes*/,
26658  0 /*letterIndex ("")*/,
26659  },
26660  // Rule Uruguay 1980 only - Mar 16 0:00 0 -
26661  {
26662  1980 /*fromYear*/,
26663  1980 /*toYear*/,
26664  3 /*inMonth*/,
26665  0 /*onDayOfWeek*/,
26666  16 /*onDayOfMonth*/,
26667  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26668  0 /*atTimeCode (0/15)*/,
26669  0 /*deltaMinutes*/,
26670  0 /*letterIndex ("")*/,
26671  },
26672  // Rule Uruguay 1987 only - Dec 14 0:00 1:00 -
26673  {
26674  1987 /*fromYear*/,
26675  1987 /*toYear*/,
26676  12 /*inMonth*/,
26677  0 /*onDayOfWeek*/,
26678  14 /*onDayOfMonth*/,
26679  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26680  0 /*atTimeCode (0/15)*/,
26681  60 /*deltaMinutes*/,
26682  0 /*letterIndex ("")*/,
26683  },
26684  // Rule Uruguay 1988 only - Feb 28 0:00 0 -
26685  {
26686  1988 /*fromYear*/,
26687  1988 /*toYear*/,
26688  2 /*inMonth*/,
26689  0 /*onDayOfWeek*/,
26690  28 /*onDayOfMonth*/,
26691  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26692  0 /*atTimeCode (0/15)*/,
26693  0 /*deltaMinutes*/,
26694  0 /*letterIndex ("")*/,
26695  },
26696  // Rule Uruguay 1988 only - Dec 11 0:00 1:00 -
26697  {
26698  1988 /*fromYear*/,
26699  1988 /*toYear*/,
26700  12 /*inMonth*/,
26701  0 /*onDayOfWeek*/,
26702  11 /*onDayOfMonth*/,
26703  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26704  0 /*atTimeCode (0/15)*/,
26705  60 /*deltaMinutes*/,
26706  0 /*letterIndex ("")*/,
26707  },
26708  // Rule Uruguay 1989 only - Mar 5 0:00 0 -
26709  {
26710  1989 /*fromYear*/,
26711  1989 /*toYear*/,
26712  3 /*inMonth*/,
26713  0 /*onDayOfWeek*/,
26714  5 /*onDayOfMonth*/,
26715  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26716  0 /*atTimeCode (0/15)*/,
26717  0 /*deltaMinutes*/,
26718  0 /*letterIndex ("")*/,
26719  },
26720  // Rule Uruguay 1989 only - Oct 29 0:00 1:00 -
26721  {
26722  1989 /*fromYear*/,
26723  1989 /*toYear*/,
26724  10 /*inMonth*/,
26725  0 /*onDayOfWeek*/,
26726  29 /*onDayOfMonth*/,
26727  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26728  0 /*atTimeCode (0/15)*/,
26729  60 /*deltaMinutes*/,
26730  0 /*letterIndex ("")*/,
26731  },
26732  // Rule Uruguay 1990 only - Feb 25 0:00 0 -
26733  {
26734  1990 /*fromYear*/,
26735  1990 /*toYear*/,
26736  2 /*inMonth*/,
26737  0 /*onDayOfWeek*/,
26738  25 /*onDayOfMonth*/,
26739  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26740  0 /*atTimeCode (0/15)*/,
26741  0 /*deltaMinutes*/,
26742  0 /*letterIndex ("")*/,
26743  },
26744  // Rule Uruguay 1990 1991 - Oct Sun>=21 0:00 1:00 -
26745  {
26746  1990 /*fromYear*/,
26747  1991 /*toYear*/,
26748  10 /*inMonth*/,
26749  7 /*onDayOfWeek*/,
26750  21 /*onDayOfMonth*/,
26751  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26752  0 /*atTimeCode (0/15)*/,
26753  60 /*deltaMinutes*/,
26754  0 /*letterIndex ("")*/,
26755  },
26756  // Rule Uruguay 1991 1992 - Mar Sun>=1 0:00 0 -
26757  {
26758  1991 /*fromYear*/,
26759  1992 /*toYear*/,
26760  3 /*inMonth*/,
26761  7 /*onDayOfWeek*/,
26762  1 /*onDayOfMonth*/,
26763  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26764  0 /*atTimeCode (0/15)*/,
26765  0 /*deltaMinutes*/,
26766  0 /*letterIndex ("")*/,
26767  },
26768  // Rule Uruguay 1992 only - Oct 18 0:00 1:00 -
26769  {
26770  1992 /*fromYear*/,
26771  1992 /*toYear*/,
26772  10 /*inMonth*/,
26773  0 /*onDayOfWeek*/,
26774  18 /*onDayOfMonth*/,
26775  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26776  0 /*atTimeCode (0/15)*/,
26777  60 /*deltaMinutes*/,
26778  0 /*letterIndex ("")*/,
26779  },
26780  // Rule Uruguay 1993 only - Feb 28 0:00 0 -
26781  {
26782  1993 /*fromYear*/,
26783  1993 /*toYear*/,
26784  2 /*inMonth*/,
26785  0 /*onDayOfWeek*/,
26786  28 /*onDayOfMonth*/,
26787  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26788  0 /*atTimeCode (0/15)*/,
26789  0 /*deltaMinutes*/,
26790  0 /*letterIndex ("")*/,
26791  },
26792  // Rule Uruguay 2004 only - Sep 19 0:00 1:00 -
26793  {
26794  2004 /*fromYear*/,
26795  2004 /*toYear*/,
26796  9 /*inMonth*/,
26797  0 /*onDayOfWeek*/,
26798  19 /*onDayOfMonth*/,
26799  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26800  0 /*atTimeCode (0/15)*/,
26801  60 /*deltaMinutes*/,
26802  0 /*letterIndex ("")*/,
26803  },
26804  // Rule Uruguay 2005 only - Mar 27 2:00 0 -
26805  {
26806  2005 /*fromYear*/,
26807  2005 /*toYear*/,
26808  3 /*inMonth*/,
26809  0 /*onDayOfWeek*/,
26810  27 /*onDayOfMonth*/,
26811  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26812  480 /*atTimeCode (7200/15)*/,
26813  0 /*deltaMinutes*/,
26814  0 /*letterIndex ("")*/,
26815  },
26816  // Rule Uruguay 2005 only - Oct 9 2:00 1:00 -
26817  {
26818  2005 /*fromYear*/,
26819  2005 /*toYear*/,
26820  10 /*inMonth*/,
26821  0 /*onDayOfWeek*/,
26822  9 /*onDayOfMonth*/,
26823  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26824  480 /*atTimeCode (7200/15)*/,
26825  60 /*deltaMinutes*/,
26826  0 /*letterIndex ("")*/,
26827  },
26828  // Rule Uruguay 2006 2015 - Mar Sun>=8 2:00 0 -
26829  {
26830  2006 /*fromYear*/,
26831  2015 /*toYear*/,
26832  3 /*inMonth*/,
26833  7 /*onDayOfWeek*/,
26834  8 /*onDayOfMonth*/,
26835  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26836  480 /*atTimeCode (7200/15)*/,
26837  0 /*deltaMinutes*/,
26838  0 /*letterIndex ("")*/,
26839  },
26840  // Rule Uruguay 2006 2014 - Oct Sun>=1 2:00 1:00 -
26841  {
26842  2006 /*fromYear*/,
26843  2014 /*toYear*/,
26844  10 /*inMonth*/,
26845  7 /*onDayOfWeek*/,
26846  1 /*onDayOfMonth*/,
26847  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26848  480 /*atTimeCode (7200/15)*/,
26849  60 /*deltaMinutes*/,
26850  0 /*letterIndex ("")*/,
26851  },
26852 
26853 };
26854 
26855 const complete::ZonePolicy kZonePolicyUruguay ACE_TIME_PROGMEM = {
26856  kZoneRulesUruguay /*rules*/,
26857  49 /*numRules*/,
26858 };
26859 
26860 //---------------------------------------------------------------------------
26861 // Policy name: Vanc
26862 // Rules: 10
26863 //---------------------------------------------------------------------------
26864 
26865 static const complete::ZoneRule kZoneRulesVanc[] ACE_TIME_PROGMEM = {
26866  // Anchor: Rule Vanc 1918 only - Oct 27 2:00 0 S
26867  {
26868  -32767 /*fromYear*/,
26869  -32767 /*toYear*/,
26870  1 /*inMonth*/,
26871  0 /*onDayOfWeek*/,
26872  1 /*onDayOfMonth*/,
26873  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26874  0 /*atTimeCode (0/15)*/,
26875  0 /*deltaMinutes*/,
26876  25 /*letterIndex ("S")*/,
26877  },
26878  // Rule Vanc 1918 only - Apr 14 2:00 1:00 D
26879  {
26880  1918 /*fromYear*/,
26881  1918 /*toYear*/,
26882  4 /*inMonth*/,
26883  0 /*onDayOfWeek*/,
26884  14 /*onDayOfMonth*/,
26885  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26886  480 /*atTimeCode (7200/15)*/,
26887  60 /*deltaMinutes*/,
26888  13 /*letterIndex ("D")*/,
26889  },
26890  // Rule Vanc 1918 only - Oct 27 2:00 0 S
26891  {
26892  1918 /*fromYear*/,
26893  1918 /*toYear*/,
26894  10 /*inMonth*/,
26895  0 /*onDayOfWeek*/,
26896  27 /*onDayOfMonth*/,
26897  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26898  480 /*atTimeCode (7200/15)*/,
26899  0 /*deltaMinutes*/,
26900  25 /*letterIndex ("S")*/,
26901  },
26902  // Rule Vanc 1942 only - Feb 9 2:00 1:00 W
26903  {
26904  1942 /*fromYear*/,
26905  1942 /*toYear*/,
26906  2 /*inMonth*/,
26907  0 /*onDayOfWeek*/,
26908  9 /*onDayOfMonth*/,
26909  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26910  480 /*atTimeCode (7200/15)*/,
26911  60 /*deltaMinutes*/,
26912  26 /*letterIndex ("W")*/,
26913  },
26914  // Rule Vanc 1945 only - Aug 14 23:00u 1:00 P
26915  {
26916  1945 /*fromYear*/,
26917  1945 /*toYear*/,
26918  8 /*inMonth*/,
26919  0 /*onDayOfWeek*/,
26920  14 /*onDayOfMonth*/,
26921  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
26922  5520 /*atTimeCode (82800/15)*/,
26923  60 /*deltaMinutes*/,
26924  24 /*letterIndex ("P")*/,
26925  },
26926  // Rule Vanc 1945 only - Sep 30 2:00 0 S
26927  {
26928  1945 /*fromYear*/,
26929  1945 /*toYear*/,
26930  9 /*inMonth*/,
26931  0 /*onDayOfWeek*/,
26932  30 /*onDayOfMonth*/,
26933  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26934  480 /*atTimeCode (7200/15)*/,
26935  0 /*deltaMinutes*/,
26936  25 /*letterIndex ("S")*/,
26937  },
26938  // Rule Vanc 1946 1986 - Apr lastSun 2:00 1:00 D
26939  {
26940  1946 /*fromYear*/,
26941  1986 /*toYear*/,
26942  4 /*inMonth*/,
26943  7 /*onDayOfWeek*/,
26944  0 /*onDayOfMonth*/,
26945  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26946  480 /*atTimeCode (7200/15)*/,
26947  60 /*deltaMinutes*/,
26948  13 /*letterIndex ("D")*/,
26949  },
26950  // Rule Vanc 1946 only - Sep 29 2:00 0 S
26951  {
26952  1946 /*fromYear*/,
26953  1946 /*toYear*/,
26954  9 /*inMonth*/,
26955  0 /*onDayOfWeek*/,
26956  29 /*onDayOfMonth*/,
26957  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26958  480 /*atTimeCode (7200/15)*/,
26959  0 /*deltaMinutes*/,
26960  25 /*letterIndex ("S")*/,
26961  },
26962  // Rule Vanc 1947 1961 - Sep lastSun 2:00 0 S
26963  {
26964  1947 /*fromYear*/,
26965  1961 /*toYear*/,
26966  9 /*inMonth*/,
26967  7 /*onDayOfWeek*/,
26968  0 /*onDayOfMonth*/,
26969  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26970  480 /*atTimeCode (7200/15)*/,
26971  0 /*deltaMinutes*/,
26972  25 /*letterIndex ("S")*/,
26973  },
26974  // Rule Vanc 1962 2006 - Oct lastSun 2:00 0 S
26975  {
26976  1962 /*fromYear*/,
26977  2006 /*toYear*/,
26978  10 /*inMonth*/,
26979  7 /*onDayOfWeek*/,
26980  0 /*onDayOfMonth*/,
26981  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
26982  480 /*atTimeCode (7200/15)*/,
26983  0 /*deltaMinutes*/,
26984  25 /*letterIndex ("S")*/,
26985  },
26986 
26987 };
26988 
26989 const complete::ZonePolicy kZonePolicyVanc ACE_TIME_PROGMEM = {
26990  kZoneRulesVanc /*rules*/,
26991  10 /*numRules*/,
26992 };
26993 
26994 //---------------------------------------------------------------------------
26995 // Policy name: Vanuatu
26996 // Rules: 7
26997 //---------------------------------------------------------------------------
26998 
26999 static const complete::ZoneRule kZoneRulesVanuatu[] ACE_TIME_PROGMEM = {
27000  // Anchor: Rule Vanuatu 1974 only - Mar 30 12:00u 0 -
27001  {
27002  -32767 /*fromYear*/,
27003  -32767 /*toYear*/,
27004  1 /*inMonth*/,
27005  0 /*onDayOfWeek*/,
27006  1 /*onDayOfMonth*/,
27007  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
27008  0 /*atTimeCode (0/15)*/,
27009  0 /*deltaMinutes*/,
27010  0 /*letterIndex ("")*/,
27011  },
27012  // Rule Vanuatu 1973 only - Dec 22 12:00u 1:00 -
27013  {
27014  1973 /*fromYear*/,
27015  1973 /*toYear*/,
27016  12 /*inMonth*/,
27017  0 /*onDayOfWeek*/,
27018  22 /*onDayOfMonth*/,
27019  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
27020  2880 /*atTimeCode (43200/15)*/,
27021  60 /*deltaMinutes*/,
27022  0 /*letterIndex ("")*/,
27023  },
27024  // Rule Vanuatu 1974 only - Mar 30 12:00u 0 -
27025  {
27026  1974 /*fromYear*/,
27027  1974 /*toYear*/,
27028  3 /*inMonth*/,
27029  0 /*onDayOfWeek*/,
27030  30 /*onDayOfMonth*/,
27031  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
27032  2880 /*atTimeCode (43200/15)*/,
27033  0 /*deltaMinutes*/,
27034  0 /*letterIndex ("")*/,
27035  },
27036  // Rule Vanuatu 1983 1991 - Sep Sat>=22 24:00 1:00 -
27037  {
27038  1983 /*fromYear*/,
27039  1991 /*toYear*/,
27040  9 /*inMonth*/,
27041  6 /*onDayOfWeek*/,
27042  22 /*onDayOfMonth*/,
27043  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
27044  5760 /*atTimeCode (86400/15)*/,
27045  60 /*deltaMinutes*/,
27046  0 /*letterIndex ("")*/,
27047  },
27048  // Rule Vanuatu 1984 1991 - Mar Sat>=22 24:00 0 -
27049  {
27050  1984 /*fromYear*/,
27051  1991 /*toYear*/,
27052  3 /*inMonth*/,
27053  6 /*onDayOfWeek*/,
27054  22 /*onDayOfMonth*/,
27055  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
27056  5760 /*atTimeCode (86400/15)*/,
27057  0 /*deltaMinutes*/,
27058  0 /*letterIndex ("")*/,
27059  },
27060  // Rule Vanuatu 1992 1993 - Jan Sat>=22 24:00 0 -
27061  {
27062  1992 /*fromYear*/,
27063  1993 /*toYear*/,
27064  1 /*inMonth*/,
27065  6 /*onDayOfWeek*/,
27066  22 /*onDayOfMonth*/,
27067  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
27068  5760 /*atTimeCode (86400/15)*/,
27069  0 /*deltaMinutes*/,
27070  0 /*letterIndex ("")*/,
27071  },
27072  // Rule Vanuatu 1992 only - Oct Sat>=22 24:00 1:00 -
27073  {
27074  1992 /*fromYear*/,
27075  1992 /*toYear*/,
27076  10 /*inMonth*/,
27077  6 /*onDayOfWeek*/,
27078  22 /*onDayOfMonth*/,
27079  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
27080  5760 /*atTimeCode (86400/15)*/,
27081  60 /*deltaMinutes*/,
27082  0 /*letterIndex ("")*/,
27083  },
27084 
27085 };
27086 
27087 const complete::ZonePolicy kZonePolicyVanuatu ACE_TIME_PROGMEM = {
27088  kZoneRulesVanuatu /*rules*/,
27089  7 /*numRules*/,
27090 };
27091 
27092 //---------------------------------------------------------------------------
27093 // Policy name: Vincennes
27094 // Rules: 10
27095 //---------------------------------------------------------------------------
27096 
27097 static const complete::ZoneRule kZoneRulesVincennes[] ACE_TIME_PROGMEM = {
27098  // Anchor: Rule Vincennes 1946 only - Sep lastSun 2:00 0 S
27099  {
27100  -32767 /*fromYear*/,
27101  -32767 /*toYear*/,
27102  1 /*inMonth*/,
27103  0 /*onDayOfWeek*/,
27104  1 /*onDayOfMonth*/,
27105  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
27106  0 /*atTimeCode (0/15)*/,
27107  0 /*deltaMinutes*/,
27108  25 /*letterIndex ("S")*/,
27109  },
27110  // Rule Vincennes 1946 only - Apr lastSun 2:00 1:00 D
27111  {
27112  1946 /*fromYear*/,
27113  1946 /*toYear*/,
27114  4 /*inMonth*/,
27115  7 /*onDayOfWeek*/,
27116  0 /*onDayOfMonth*/,
27117  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
27118  480 /*atTimeCode (7200/15)*/,
27119  60 /*deltaMinutes*/,
27120  13 /*letterIndex ("D")*/,
27121  },
27122  // Rule Vincennes 1946 only - Sep lastSun 2:00 0 S
27123  {
27124  1946 /*fromYear*/,
27125  1946 /*toYear*/,
27126  9 /*inMonth*/,
27127  7 /*onDayOfWeek*/,
27128  0 /*onDayOfMonth*/,
27129  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
27130  480 /*atTimeCode (7200/15)*/,
27131  0 /*deltaMinutes*/,
27132  25 /*letterIndex ("S")*/,
27133  },
27134  // Rule Vincennes 1953 1954 - Apr lastSun 2:00 1:00 D
27135  {
27136  1953 /*fromYear*/,
27137  1954 /*toYear*/,
27138  4 /*inMonth*/,
27139  7 /*onDayOfWeek*/,
27140  0 /*onDayOfMonth*/,
27141  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
27142  480 /*atTimeCode (7200/15)*/,
27143  60 /*deltaMinutes*/,
27144  13 /*letterIndex ("D")*/,
27145  },
27146  // Rule Vincennes 1953 1959 - Sep lastSun 2:00 0 S
27147  {
27148  1953 /*fromYear*/,
27149  1959 /*toYear*/,
27150  9 /*inMonth*/,
27151  7 /*onDayOfWeek*/,
27152  0 /*onDayOfMonth*/,
27153  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
27154  480 /*atTimeCode (7200/15)*/,
27155  0 /*deltaMinutes*/,
27156  25 /*letterIndex ("S")*/,
27157  },
27158  // Rule Vincennes 1955 only - May 1 0:00 1:00 D
27159  {
27160  1955 /*fromYear*/,
27161  1955 /*toYear*/,
27162  5 /*inMonth*/,
27163  0 /*onDayOfWeek*/,
27164  1 /*onDayOfMonth*/,
27165  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
27166  0 /*atTimeCode (0/15)*/,
27167  60 /*deltaMinutes*/,
27168  13 /*letterIndex ("D")*/,
27169  },
27170  // Rule Vincennes 1956 1963 - Apr lastSun 2:00 1:00 D
27171  {
27172  1956 /*fromYear*/,
27173  1963 /*toYear*/,
27174  4 /*inMonth*/,
27175  7 /*onDayOfWeek*/,
27176  0 /*onDayOfMonth*/,
27177  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
27178  480 /*atTimeCode (7200/15)*/,
27179  60 /*deltaMinutes*/,
27180  13 /*letterIndex ("D")*/,
27181  },
27182  // Rule Vincennes 1960 only - Oct lastSun 2:00 0 S
27183  {
27184  1960 /*fromYear*/,
27185  1960 /*toYear*/,
27186  10 /*inMonth*/,
27187  7 /*onDayOfWeek*/,
27188  0 /*onDayOfMonth*/,
27189  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
27190  480 /*atTimeCode (7200/15)*/,
27191  0 /*deltaMinutes*/,
27192  25 /*letterIndex ("S")*/,
27193  },
27194  // Rule Vincennes 1961 only - Sep lastSun 2:00 0 S
27195  {
27196  1961 /*fromYear*/,
27197  1961 /*toYear*/,
27198  9 /*inMonth*/,
27199  7 /*onDayOfWeek*/,
27200  0 /*onDayOfMonth*/,
27201  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
27202  480 /*atTimeCode (7200/15)*/,
27203  0 /*deltaMinutes*/,
27204  25 /*letterIndex ("S")*/,
27205  },
27206  // Rule Vincennes 1962 1963 - Oct lastSun 2:00 0 S
27207  {
27208  1962 /*fromYear*/,
27209  1963 /*toYear*/,
27210  10 /*inMonth*/,
27211  7 /*onDayOfWeek*/,
27212  0 /*onDayOfMonth*/,
27213  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
27214  480 /*atTimeCode (7200/15)*/,
27215  0 /*deltaMinutes*/,
27216  25 /*letterIndex ("S")*/,
27217  },
27218 
27219 };
27220 
27221 const complete::ZonePolicy kZonePolicyVincennes ACE_TIME_PROGMEM = {
27222  kZoneRulesVincennes /*rules*/,
27223  10 /*numRules*/,
27224 };
27225 
27226 //---------------------------------------------------------------------------
27227 // Policy name: W-Eur
27228 // Rules: 7
27229 //---------------------------------------------------------------------------
27230 
27231 static const complete::ZoneRule kZoneRulesW_Eur[] ACE_TIME_PROGMEM = {
27232  // Anchor: Rule W-Eur 1977 only - Sep lastSun 1:00s 0 -
27233  {
27234  -32767 /*fromYear*/,
27235  -32767 /*toYear*/,
27236  1 /*inMonth*/,
27237  0 /*onDayOfWeek*/,
27238  1 /*onDayOfMonth*/,
27239  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
27240  0 /*atTimeCode (0/15)*/,
27241  0 /*deltaMinutes*/,
27242  0 /*letterIndex ("")*/,
27243  },
27244  // Rule W-Eur 1977 1980 - Apr Sun>=1 1:00s 1:00 S
27245  {
27246  1977 /*fromYear*/,
27247  1980 /*toYear*/,
27248  4 /*inMonth*/,
27249  7 /*onDayOfWeek*/,
27250  1 /*onDayOfMonth*/,
27251  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
27252  240 /*atTimeCode (3600/15)*/,
27253  60 /*deltaMinutes*/,
27254  25 /*letterIndex ("S")*/,
27255  },
27256  // Rule W-Eur 1977 only - Sep lastSun 1:00s 0 -
27257  {
27258  1977 /*fromYear*/,
27259  1977 /*toYear*/,
27260  9 /*inMonth*/,
27261  7 /*onDayOfWeek*/,
27262  0 /*onDayOfMonth*/,
27263  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
27264  240 /*atTimeCode (3600/15)*/,
27265  0 /*deltaMinutes*/,
27266  0 /*letterIndex ("")*/,
27267  },
27268  // Rule W-Eur 1978 only - Oct 1 1:00s 0 -
27269  {
27270  1978 /*fromYear*/,
27271  1978 /*toYear*/,
27272  10 /*inMonth*/,
27273  0 /*onDayOfWeek*/,
27274  1 /*onDayOfMonth*/,
27275  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
27276  240 /*atTimeCode (3600/15)*/,
27277  0 /*deltaMinutes*/,
27278  0 /*letterIndex ("")*/,
27279  },
27280  // Rule W-Eur 1979 1995 - Sep lastSun 1:00s 0 -
27281  {
27282  1979 /*fromYear*/,
27283  1995 /*toYear*/,
27284  9 /*inMonth*/,
27285  7 /*onDayOfWeek*/,
27286  0 /*onDayOfMonth*/,
27287  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
27288  240 /*atTimeCode (3600/15)*/,
27289  0 /*deltaMinutes*/,
27290  0 /*letterIndex ("")*/,
27291  },
27292  // Rule W-Eur 1981 max - Mar lastSun 1:00s 1:00 S
27293  {
27294  1981 /*fromYear*/,
27295  32766 /*toYear*/,
27296  3 /*inMonth*/,
27297  7 /*onDayOfWeek*/,
27298  0 /*onDayOfMonth*/,
27299  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
27300  240 /*atTimeCode (3600/15)*/,
27301  60 /*deltaMinutes*/,
27302  25 /*letterIndex ("S")*/,
27303  },
27304  // Rule W-Eur 1996 max - Oct lastSun 1:00s 0 -
27305  {
27306  1996 /*fromYear*/,
27307  32766 /*toYear*/,
27308  10 /*inMonth*/,
27309  7 /*onDayOfWeek*/,
27310  0 /*onDayOfMonth*/,
27311  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
27312  240 /*atTimeCode (3600/15)*/,
27313  0 /*deltaMinutes*/,
27314  0 /*letterIndex ("")*/,
27315  },
27316 
27317 };
27318 
27319 const complete::ZonePolicy kZonePolicyW_Eur ACE_TIME_PROGMEM = {
27320  kZoneRulesW_Eur /*rules*/,
27321  7 /*numRules*/,
27322 };
27323 
27324 //---------------------------------------------------------------------------
27325 // Policy name: WS
27326 // Rules: 6
27327 //---------------------------------------------------------------------------
27328 
27329 static const complete::ZoneRule kZoneRulesWS[] ACE_TIME_PROGMEM = {
27330  // Anchor: Rule WS 2011 only - Apr Sat>=1 4:00 0 -
27331  {
27332  -32767 /*fromYear*/,
27333  -32767 /*toYear*/,
27334  1 /*inMonth*/,
27335  0 /*onDayOfWeek*/,
27336  1 /*onDayOfMonth*/,
27337  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
27338  0 /*atTimeCode (0/15)*/,
27339  0 /*deltaMinutes*/,
27340  0 /*letterIndex ("")*/,
27341  },
27342  // Rule WS 2010 only - Sep lastSun 0:00 1 -
27343  {
27344  2010 /*fromYear*/,
27345  2010 /*toYear*/,
27346  9 /*inMonth*/,
27347  7 /*onDayOfWeek*/,
27348  0 /*onDayOfMonth*/,
27349  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
27350  0 /*atTimeCode (0/15)*/,
27351  60 /*deltaMinutes*/,
27352  0 /*letterIndex ("")*/,
27353  },
27354  // Rule WS 2011 only - Apr Sat>=1 4:00 0 -
27355  {
27356  2011 /*fromYear*/,
27357  2011 /*toYear*/,
27358  4 /*inMonth*/,
27359  6 /*onDayOfWeek*/,
27360  1 /*onDayOfMonth*/,
27361  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
27362  960 /*atTimeCode (14400/15)*/,
27363  0 /*deltaMinutes*/,
27364  0 /*letterIndex ("")*/,
27365  },
27366  // Rule WS 2011 only - Sep lastSat 3:00 1 -
27367  {
27368  2011 /*fromYear*/,
27369  2011 /*toYear*/,
27370  9 /*inMonth*/,
27371  6 /*onDayOfWeek*/,
27372  0 /*onDayOfMonth*/,
27373  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
27374  720 /*atTimeCode (10800/15)*/,
27375  60 /*deltaMinutes*/,
27376  0 /*letterIndex ("")*/,
27377  },
27378  // Rule WS 2012 2021 - Apr Sun>=1 4:00 0 -
27379  {
27380  2012 /*fromYear*/,
27381  2021 /*toYear*/,
27382  4 /*inMonth*/,
27383  7 /*onDayOfWeek*/,
27384  1 /*onDayOfMonth*/,
27385  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
27386  960 /*atTimeCode (14400/15)*/,
27387  0 /*deltaMinutes*/,
27388  0 /*letterIndex ("")*/,
27389  },
27390  // Rule WS 2012 2020 - Sep lastSun 3:00 1 -
27391  {
27392  2012 /*fromYear*/,
27393  2020 /*toYear*/,
27394  9 /*inMonth*/,
27395  7 /*onDayOfWeek*/,
27396  0 /*onDayOfMonth*/,
27397  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
27398  720 /*atTimeCode (10800/15)*/,
27399  60 /*deltaMinutes*/,
27400  0 /*letterIndex ("")*/,
27401  },
27402 
27403 };
27404 
27405 const complete::ZonePolicy kZonePolicyWS ACE_TIME_PROGMEM = {
27406  kZoneRulesWS /*rules*/,
27407  6 /*numRules*/,
27408 };
27409 
27410 //---------------------------------------------------------------------------
27411 // Policy name: Winn
27412 // Rules: 25
27413 //---------------------------------------------------------------------------
27414 
27415 static const complete::ZoneRule kZoneRulesWinn[] ACE_TIME_PROGMEM = {
27416  // Anchor: Rule Winn 1916 only - Sep 17 0:00 0 S
27417  {
27418  -32767 /*fromYear*/,
27419  -32767 /*toYear*/,
27420  1 /*inMonth*/,
27421  0 /*onDayOfWeek*/,
27422  1 /*onDayOfMonth*/,
27423  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
27424  0 /*atTimeCode (0/15)*/,
27425  0 /*deltaMinutes*/,
27426  25 /*letterIndex ("S")*/,
27427  },
27428  // Rule Winn 1916 only - Apr 23 0:00 1:00 D
27429  {
27430  1916 /*fromYear*/,
27431  1916 /*toYear*/,
27432  4 /*inMonth*/,
27433  0 /*onDayOfWeek*/,
27434  23 /*onDayOfMonth*/,
27435  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
27436  0 /*atTimeCode (0/15)*/,
27437  60 /*deltaMinutes*/,
27438  13 /*letterIndex ("D")*/,
27439  },
27440  // Rule Winn 1916 only - Sep 17 0:00 0 S
27441  {
27442  1916 /*fromYear*/,
27443  1916 /*toYear*/,
27444  9 /*inMonth*/,
27445  0 /*onDayOfWeek*/,
27446  17 /*onDayOfMonth*/,
27447  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
27448  0 /*atTimeCode (0/15)*/,
27449  0 /*deltaMinutes*/,
27450  25 /*letterIndex ("S")*/,
27451  },
27452  // Rule Winn 1918 only - Apr 14 2:00 1:00 D
27453  {
27454  1918 /*fromYear*/,
27455  1918 /*toYear*/,
27456  4 /*inMonth*/,
27457  0 /*onDayOfWeek*/,
27458  14 /*onDayOfMonth*/,
27459  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
27460  480 /*atTimeCode (7200/15)*/,
27461  60 /*deltaMinutes*/,
27462  13 /*letterIndex ("D")*/,
27463  },
27464  // Rule Winn 1918 only - Oct 27 2:00 0 S
27465  {
27466  1918 /*fromYear*/,
27467  1918 /*toYear*/,
27468  10 /*inMonth*/,
27469  0 /*onDayOfWeek*/,
27470  27 /*onDayOfMonth*/,
27471  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
27472  480 /*atTimeCode (7200/15)*/,
27473  0 /*deltaMinutes*/,
27474  25 /*letterIndex ("S")*/,
27475  },
27476  // Rule Winn 1937 only - May 16 2:00 1:00 D
27477  {
27478  1937 /*fromYear*/,
27479  1937 /*toYear*/,
27480  5 /*inMonth*/,
27481  0 /*onDayOfWeek*/,
27482  16 /*onDayOfMonth*/,
27483  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
27484  480 /*atTimeCode (7200/15)*/,
27485  60 /*deltaMinutes*/,
27486  13 /*letterIndex ("D")*/,
27487  },
27488  // Rule Winn 1937 only - Sep 26 2:00 0 S
27489  {
27490  1937 /*fromYear*/,
27491  1937 /*toYear*/,
27492  9 /*inMonth*/,
27493  0 /*onDayOfWeek*/,
27494  26 /*onDayOfMonth*/,
27495  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
27496  480 /*atTimeCode (7200/15)*/,
27497  0 /*deltaMinutes*/,
27498  25 /*letterIndex ("S")*/,
27499  },
27500  // Rule Winn 1942 only - Feb 9 2:00 1:00 W
27501  {
27502  1942 /*fromYear*/,
27503  1942 /*toYear*/,
27504  2 /*inMonth*/,
27505  0 /*onDayOfWeek*/,
27506  9 /*onDayOfMonth*/,
27507  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
27508  480 /*atTimeCode (7200/15)*/,
27509  60 /*deltaMinutes*/,
27510  26 /*letterIndex ("W")*/,
27511  },
27512  // Rule Winn 1945 only - Aug 14 23:00u 1:00 P
27513  {
27514  1945 /*fromYear*/,
27515  1945 /*toYear*/,
27516  8 /*inMonth*/,
27517  0 /*onDayOfWeek*/,
27518  14 /*onDayOfMonth*/,
27519  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
27520  5520 /*atTimeCode (82800/15)*/,
27521  60 /*deltaMinutes*/,
27522  24 /*letterIndex ("P")*/,
27523  },
27524  // Rule Winn 1945 only - Sep lastSun 2:00 0 S
27525  {
27526  1945 /*fromYear*/,
27527  1945 /*toYear*/,
27528  9 /*inMonth*/,
27529  7 /*onDayOfWeek*/,
27530  0 /*onDayOfMonth*/,
27531  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
27532  480 /*atTimeCode (7200/15)*/,
27533  0 /*deltaMinutes*/,
27534  25 /*letterIndex ("S")*/,
27535  },
27536  // Rule Winn 1946 only - May 12 2:00 1:00 D
27537  {
27538  1946 /*fromYear*/,
27539  1946 /*toYear*/,
27540  5 /*inMonth*/,
27541  0 /*onDayOfWeek*/,
27542  12 /*onDayOfMonth*/,
27543  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
27544  480 /*atTimeCode (7200/15)*/,
27545  60 /*deltaMinutes*/,
27546  13 /*letterIndex ("D")*/,
27547  },
27548  // Rule Winn 1946 only - Oct 13 2:00 0 S
27549  {
27550  1946 /*fromYear*/,
27551  1946 /*toYear*/,
27552  10 /*inMonth*/,
27553  0 /*onDayOfWeek*/,
27554  13 /*onDayOfMonth*/,
27555  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
27556  480 /*atTimeCode (7200/15)*/,
27557  0 /*deltaMinutes*/,
27558  25 /*letterIndex ("S")*/,
27559  },
27560  // Rule Winn 1947 1949 - Apr lastSun 2:00 1:00 D
27561  {
27562  1947 /*fromYear*/,
27563  1949 /*toYear*/,
27564  4 /*inMonth*/,
27565  7 /*onDayOfWeek*/,
27566  0 /*onDayOfMonth*/,
27567  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
27568  480 /*atTimeCode (7200/15)*/,
27569  60 /*deltaMinutes*/,
27570  13 /*letterIndex ("D")*/,
27571  },
27572  // Rule Winn 1947 1949 - Sep lastSun 2:00 0 S
27573  {
27574  1947 /*fromYear*/,
27575  1949 /*toYear*/,
27576  9 /*inMonth*/,
27577  7 /*onDayOfWeek*/,
27578  0 /*onDayOfMonth*/,
27579  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
27580  480 /*atTimeCode (7200/15)*/,
27581  0 /*deltaMinutes*/,
27582  25 /*letterIndex ("S")*/,
27583  },
27584  // Rule Winn 1950 only - May 1 2:00 1:00 D
27585  {
27586  1950 /*fromYear*/,
27587  1950 /*toYear*/,
27588  5 /*inMonth*/,
27589  0 /*onDayOfWeek*/,
27590  1 /*onDayOfMonth*/,
27591  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
27592  480 /*atTimeCode (7200/15)*/,
27593  60 /*deltaMinutes*/,
27594  13 /*letterIndex ("D")*/,
27595  },
27596  // Rule Winn 1950 only - Sep 30 2:00 0 S
27597  {
27598  1950 /*fromYear*/,
27599  1950 /*toYear*/,
27600  9 /*inMonth*/,
27601  0 /*onDayOfWeek*/,
27602  30 /*onDayOfMonth*/,
27603  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
27604  480 /*atTimeCode (7200/15)*/,
27605  0 /*deltaMinutes*/,
27606  25 /*letterIndex ("S")*/,
27607  },
27608  // Rule Winn 1951 1960 - Apr lastSun 2:00 1:00 D
27609  {
27610  1951 /*fromYear*/,
27611  1960 /*toYear*/,
27612  4 /*inMonth*/,
27613  7 /*onDayOfWeek*/,
27614  0 /*onDayOfMonth*/,
27615  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
27616  480 /*atTimeCode (7200/15)*/,
27617  60 /*deltaMinutes*/,
27618  13 /*letterIndex ("D")*/,
27619  },
27620  // Rule Winn 1951 1958 - Sep lastSun 2:00 0 S
27621  {
27622  1951 /*fromYear*/,
27623  1958 /*toYear*/,
27624  9 /*inMonth*/,
27625  7 /*onDayOfWeek*/,
27626  0 /*onDayOfMonth*/,
27627  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
27628  480 /*atTimeCode (7200/15)*/,
27629  0 /*deltaMinutes*/,
27630  25 /*letterIndex ("S")*/,
27631  },
27632  // Rule Winn 1959 only - Oct lastSun 2:00 0 S
27633  {
27634  1959 /*fromYear*/,
27635  1959 /*toYear*/,
27636  10 /*inMonth*/,
27637  7 /*onDayOfWeek*/,
27638  0 /*onDayOfMonth*/,
27639  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
27640  480 /*atTimeCode (7200/15)*/,
27641  0 /*deltaMinutes*/,
27642  25 /*letterIndex ("S")*/,
27643  },
27644  // Rule Winn 1960 only - Sep lastSun 2:00 0 S
27645  {
27646  1960 /*fromYear*/,
27647  1960 /*toYear*/,
27648  9 /*inMonth*/,
27649  7 /*onDayOfWeek*/,
27650  0 /*onDayOfMonth*/,
27651  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
27652  480 /*atTimeCode (7200/15)*/,
27653  0 /*deltaMinutes*/,
27654  25 /*letterIndex ("S")*/,
27655  },
27656  // Rule Winn 1963 only - Apr lastSun 2:00 1:00 D
27657  {
27658  1963 /*fromYear*/,
27659  1963 /*toYear*/,
27660  4 /*inMonth*/,
27661  7 /*onDayOfWeek*/,
27662  0 /*onDayOfMonth*/,
27663  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
27664  480 /*atTimeCode (7200/15)*/,
27665  60 /*deltaMinutes*/,
27666  13 /*letterIndex ("D")*/,
27667  },
27668  // Rule Winn 1963 only - Sep 22 2:00 0 S
27669  {
27670  1963 /*fromYear*/,
27671  1963 /*toYear*/,
27672  9 /*inMonth*/,
27673  0 /*onDayOfWeek*/,
27674  22 /*onDayOfMonth*/,
27675  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
27676  480 /*atTimeCode (7200/15)*/,
27677  0 /*deltaMinutes*/,
27678  25 /*letterIndex ("S")*/,
27679  },
27680  // Rule Winn 1966 1986 - Apr lastSun 2:00s 1:00 D
27681  {
27682  1966 /*fromYear*/,
27683  1986 /*toYear*/,
27684  4 /*inMonth*/,
27685  7 /*onDayOfWeek*/,
27686  0 /*onDayOfMonth*/,
27687  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
27688  480 /*atTimeCode (7200/15)*/,
27689  60 /*deltaMinutes*/,
27690  13 /*letterIndex ("D")*/,
27691  },
27692  // Rule Winn 1966 2005 - Oct lastSun 2:00s 0 S
27693  {
27694  1966 /*fromYear*/,
27695  2005 /*toYear*/,
27696  10 /*inMonth*/,
27697  7 /*onDayOfWeek*/,
27698  0 /*onDayOfMonth*/,
27699  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
27700  480 /*atTimeCode (7200/15)*/,
27701  0 /*deltaMinutes*/,
27702  25 /*letterIndex ("S")*/,
27703  },
27704  // Rule Winn 1987 2005 - Apr Sun>=1 2:00s 1:00 D
27705  {
27706  1987 /*fromYear*/,
27707  2005 /*toYear*/,
27708  4 /*inMonth*/,
27709  7 /*onDayOfWeek*/,
27710  1 /*onDayOfMonth*/,
27711  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
27712  480 /*atTimeCode (7200/15)*/,
27713  60 /*deltaMinutes*/,
27714  13 /*letterIndex ("D")*/,
27715  },
27716 
27717 };
27718 
27719 const complete::ZonePolicy kZonePolicyWinn ACE_TIME_PROGMEM = {
27720  kZoneRulesWinn /*rules*/,
27721  25 /*numRules*/,
27722 };
27723 
27724 //---------------------------------------------------------------------------
27725 // Policy name: Yukon
27726 // Rules: 3
27727 //---------------------------------------------------------------------------
27728 
27729 static const complete::ZoneRule kZoneRulesYukon[] ACE_TIME_PROGMEM = {
27730  // Anchor: Rule Yukon 1965 only - Oct lastSun 2:00 0 S
27731  {
27732  -32767 /*fromYear*/,
27733  -32767 /*toYear*/,
27734  1 /*inMonth*/,
27735  0 /*onDayOfWeek*/,
27736  1 /*onDayOfMonth*/,
27737  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
27738  0 /*atTimeCode (0/15)*/,
27739  0 /*deltaMinutes*/,
27740  25 /*letterIndex ("S")*/,
27741  },
27742  // Rule Yukon 1965 only - Apr lastSun 0:00 2:00 DD
27743  {
27744  1965 /*fromYear*/,
27745  1965 /*toYear*/,
27746  4 /*inMonth*/,
27747  7 /*onDayOfWeek*/,
27748  0 /*onDayOfMonth*/,
27749  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
27750  0 /*atTimeCode (0/15)*/,
27751  120 /*deltaMinutes*/,
27752  14 /*letterIndex ("DD")*/,
27753  },
27754  // Rule Yukon 1965 only - Oct lastSun 2:00 0 S
27755  {
27756  1965 /*fromYear*/,
27757  1965 /*toYear*/,
27758  10 /*inMonth*/,
27759  7 /*onDayOfWeek*/,
27760  0 /*onDayOfMonth*/,
27761  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
27762  480 /*atTimeCode (7200/15)*/,
27763  0 /*deltaMinutes*/,
27764  25 /*letterIndex ("S")*/,
27765  },
27766 
27767 };
27768 
27769 const complete::ZonePolicy kZonePolicyYukon ACE_TIME_PROGMEM = {
27770  kZoneRulesYukon /*rules*/,
27771  3 /*numRules*/,
27772 };
27773 
27774 //---------------------------------------------------------------------------
27775 // Policy name: Zion
27776 // Rules: 86
27777 //---------------------------------------------------------------------------
27778 
27779 static const complete::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = {
27780  // Anchor: Rule Zion 1940 only - Sep 30 24:00u 0 S
27781  {
27782  -32767 /*fromYear*/,
27783  -32767 /*toYear*/,
27784  1 /*inMonth*/,
27785  0 /*onDayOfWeek*/,
27786  1 /*onDayOfMonth*/,
27787  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
27788  0 /*atTimeCode (0/15)*/,
27789  0 /*deltaMinutes*/,
27790  25 /*letterIndex ("S")*/,
27791  },
27792  // Rule Zion 1940 only - May 31 24:00u 1:00 D
27793  {
27794  1940 /*fromYear*/,
27795  1940 /*toYear*/,
27796  5 /*inMonth*/,
27797  0 /*onDayOfWeek*/,
27798  31 /*onDayOfMonth*/,
27799  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
27800  5760 /*atTimeCode (86400/15)*/,
27801  60 /*deltaMinutes*/,
27802  13 /*letterIndex ("D")*/,
27803  },
27804  // Rule Zion 1940 only - Sep 30 24:00u 0 S
27805  {
27806  1940 /*fromYear*/,
27807  1940 /*toYear*/,
27808  9 /*inMonth*/,
27809  0 /*onDayOfWeek*/,
27810  30 /*onDayOfMonth*/,
27811  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
27812  5760 /*atTimeCode (86400/15)*/,
27813  0 /*deltaMinutes*/,
27814  25 /*letterIndex ("S")*/,
27815  },
27816  // Rule Zion 1940 only - Nov 16 24:00u 1:00 D
27817  {
27818  1940 /*fromYear*/,
27819  1940 /*toYear*/,
27820  11 /*inMonth*/,
27821  0 /*onDayOfWeek*/,
27822  16 /*onDayOfMonth*/,
27823  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
27824  5760 /*atTimeCode (86400/15)*/,
27825  60 /*deltaMinutes*/,
27826  13 /*letterIndex ("D")*/,
27827  },
27828  // Rule Zion 1942 1946 - Oct 31 24:00u 0 S
27829  {
27830  1942 /*fromYear*/,
27831  1946 /*toYear*/,
27832  10 /*inMonth*/,
27833  0 /*onDayOfWeek*/,
27834  31 /*onDayOfMonth*/,
27835  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
27836  5760 /*atTimeCode (86400/15)*/,
27837  0 /*deltaMinutes*/,
27838  25 /*letterIndex ("S")*/,
27839  },
27840  // Rule Zion 1943 1944 - Mar 31 24:00u 1:00 D
27841  {
27842  1943 /*fromYear*/,
27843  1944 /*toYear*/,
27844  3 /*inMonth*/,
27845  0 /*onDayOfWeek*/,
27846  31 /*onDayOfMonth*/,
27847  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
27848  5760 /*atTimeCode (86400/15)*/,
27849  60 /*deltaMinutes*/,
27850  13 /*letterIndex ("D")*/,
27851  },
27852  // Rule Zion 1945 1946 - Apr 15 24:00u 1:00 D
27853  {
27854  1945 /*fromYear*/,
27855  1946 /*toYear*/,
27856  4 /*inMonth*/,
27857  0 /*onDayOfWeek*/,
27858  15 /*onDayOfMonth*/,
27859  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
27860  5760 /*atTimeCode (86400/15)*/,
27861  60 /*deltaMinutes*/,
27862  13 /*letterIndex ("D")*/,
27863  },
27864  // Rule Zion 1948 only - May 22 24:00u 2:00 DD
27865  {
27866  1948 /*fromYear*/,
27867  1948 /*toYear*/,
27868  5 /*inMonth*/,
27869  0 /*onDayOfWeek*/,
27870  22 /*onDayOfMonth*/,
27871  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
27872  5760 /*atTimeCode (86400/15)*/,
27873  120 /*deltaMinutes*/,
27874  14 /*letterIndex ("DD")*/,
27875  },
27876  // Rule Zion 1948 only - Aug 31 24:00u 1:00 D
27877  {
27878  1948 /*fromYear*/,
27879  1948 /*toYear*/,
27880  8 /*inMonth*/,
27881  0 /*onDayOfWeek*/,
27882  31 /*onDayOfMonth*/,
27883  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
27884  5760 /*atTimeCode (86400/15)*/,
27885  60 /*deltaMinutes*/,
27886  13 /*letterIndex ("D")*/,
27887  },
27888  // Rule Zion 1948 1949 - Oct 31 24:00u 0 S
27889  {
27890  1948 /*fromYear*/,
27891  1949 /*toYear*/,
27892  10 /*inMonth*/,
27893  0 /*onDayOfWeek*/,
27894  31 /*onDayOfMonth*/,
27895  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
27896  5760 /*atTimeCode (86400/15)*/,
27897  0 /*deltaMinutes*/,
27898  25 /*letterIndex ("S")*/,
27899  },
27900  // Rule Zion 1949 only - Apr 30 24:00u 1:00 D
27901  {
27902  1949 /*fromYear*/,
27903  1949 /*toYear*/,
27904  4 /*inMonth*/,
27905  0 /*onDayOfWeek*/,
27906  30 /*onDayOfMonth*/,
27907  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
27908  5760 /*atTimeCode (86400/15)*/,
27909  60 /*deltaMinutes*/,
27910  13 /*letterIndex ("D")*/,
27911  },
27912  // Rule Zion 1950 only - Apr 15 24:00u 1:00 D
27913  {
27914  1950 /*fromYear*/,
27915  1950 /*toYear*/,
27916  4 /*inMonth*/,
27917  0 /*onDayOfWeek*/,
27918  15 /*onDayOfMonth*/,
27919  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
27920  5760 /*atTimeCode (86400/15)*/,
27921  60 /*deltaMinutes*/,
27922  13 /*letterIndex ("D")*/,
27923  },
27924  // Rule Zion 1950 only - Sep 14 24:00u 0 S
27925  {
27926  1950 /*fromYear*/,
27927  1950 /*toYear*/,
27928  9 /*inMonth*/,
27929  0 /*onDayOfWeek*/,
27930  14 /*onDayOfMonth*/,
27931  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
27932  5760 /*atTimeCode (86400/15)*/,
27933  0 /*deltaMinutes*/,
27934  25 /*letterIndex ("S")*/,
27935  },
27936  // Rule Zion 1951 only - Mar 31 24:00u 1:00 D
27937  {
27938  1951 /*fromYear*/,
27939  1951 /*toYear*/,
27940  3 /*inMonth*/,
27941  0 /*onDayOfWeek*/,
27942  31 /*onDayOfMonth*/,
27943  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
27944  5760 /*atTimeCode (86400/15)*/,
27945  60 /*deltaMinutes*/,
27946  13 /*letterIndex ("D")*/,
27947  },
27948  // Rule Zion 1951 only - Nov 10 24:00u 0 S
27949  {
27950  1951 /*fromYear*/,
27951  1951 /*toYear*/,
27952  11 /*inMonth*/,
27953  0 /*onDayOfWeek*/,
27954  10 /*onDayOfMonth*/,
27955  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
27956  5760 /*atTimeCode (86400/15)*/,
27957  0 /*deltaMinutes*/,
27958  25 /*letterIndex ("S")*/,
27959  },
27960  // Rule Zion 1952 only - Apr 19 24:00u 1:00 D
27961  {
27962  1952 /*fromYear*/,
27963  1952 /*toYear*/,
27964  4 /*inMonth*/,
27965  0 /*onDayOfWeek*/,
27966  19 /*onDayOfMonth*/,
27967  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
27968  5760 /*atTimeCode (86400/15)*/,
27969  60 /*deltaMinutes*/,
27970  13 /*letterIndex ("D")*/,
27971  },
27972  // Rule Zion 1952 only - Oct 18 24:00u 0 S
27973  {
27974  1952 /*fromYear*/,
27975  1952 /*toYear*/,
27976  10 /*inMonth*/,
27977  0 /*onDayOfWeek*/,
27978  18 /*onDayOfMonth*/,
27979  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
27980  5760 /*atTimeCode (86400/15)*/,
27981  0 /*deltaMinutes*/,
27982  25 /*letterIndex ("S")*/,
27983  },
27984  // Rule Zion 1953 only - Apr 11 24:00u 1:00 D
27985  {
27986  1953 /*fromYear*/,
27987  1953 /*toYear*/,
27988  4 /*inMonth*/,
27989  0 /*onDayOfWeek*/,
27990  11 /*onDayOfMonth*/,
27991  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
27992  5760 /*atTimeCode (86400/15)*/,
27993  60 /*deltaMinutes*/,
27994  13 /*letterIndex ("D")*/,
27995  },
27996  // Rule Zion 1953 only - Sep 12 24:00u 0 S
27997  {
27998  1953 /*fromYear*/,
27999  1953 /*toYear*/,
28000  9 /*inMonth*/,
28001  0 /*onDayOfWeek*/,
28002  12 /*onDayOfMonth*/,
28003  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
28004  5760 /*atTimeCode (86400/15)*/,
28005  0 /*deltaMinutes*/,
28006  25 /*letterIndex ("S")*/,
28007  },
28008  // Rule Zion 1954 only - Jun 12 24:00u 1:00 D
28009  {
28010  1954 /*fromYear*/,
28011  1954 /*toYear*/,
28012  6 /*inMonth*/,
28013  0 /*onDayOfWeek*/,
28014  12 /*onDayOfMonth*/,
28015  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
28016  5760 /*atTimeCode (86400/15)*/,
28017  60 /*deltaMinutes*/,
28018  13 /*letterIndex ("D")*/,
28019  },
28020  // Rule Zion 1954 only - Sep 11 24:00u 0 S
28021  {
28022  1954 /*fromYear*/,
28023  1954 /*toYear*/,
28024  9 /*inMonth*/,
28025  0 /*onDayOfWeek*/,
28026  11 /*onDayOfMonth*/,
28027  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
28028  5760 /*atTimeCode (86400/15)*/,
28029  0 /*deltaMinutes*/,
28030  25 /*letterIndex ("S")*/,
28031  },
28032  // Rule Zion 1955 only - Jun 11 24:00u 1:00 D
28033  {
28034  1955 /*fromYear*/,
28035  1955 /*toYear*/,
28036  6 /*inMonth*/,
28037  0 /*onDayOfWeek*/,
28038  11 /*onDayOfMonth*/,
28039  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
28040  5760 /*atTimeCode (86400/15)*/,
28041  60 /*deltaMinutes*/,
28042  13 /*letterIndex ("D")*/,
28043  },
28044  // Rule Zion 1955 only - Sep 10 24:00u 0 S
28045  {
28046  1955 /*fromYear*/,
28047  1955 /*toYear*/,
28048  9 /*inMonth*/,
28049  0 /*onDayOfWeek*/,
28050  10 /*onDayOfMonth*/,
28051  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
28052  5760 /*atTimeCode (86400/15)*/,
28053  0 /*deltaMinutes*/,
28054  25 /*letterIndex ("S")*/,
28055  },
28056  // Rule Zion 1956 only - Jun 2 24:00u 1:00 D
28057  {
28058  1956 /*fromYear*/,
28059  1956 /*toYear*/,
28060  6 /*inMonth*/,
28061  0 /*onDayOfWeek*/,
28062  2 /*onDayOfMonth*/,
28063  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
28064  5760 /*atTimeCode (86400/15)*/,
28065  60 /*deltaMinutes*/,
28066  13 /*letterIndex ("D")*/,
28067  },
28068  // Rule Zion 1956 only - Sep 29 24:00u 0 S
28069  {
28070  1956 /*fromYear*/,
28071  1956 /*toYear*/,
28072  9 /*inMonth*/,
28073  0 /*onDayOfWeek*/,
28074  29 /*onDayOfMonth*/,
28075  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
28076  5760 /*atTimeCode (86400/15)*/,
28077  0 /*deltaMinutes*/,
28078  25 /*letterIndex ("S")*/,
28079  },
28080  // Rule Zion 1957 only - Apr 27 24:00u 1:00 D
28081  {
28082  1957 /*fromYear*/,
28083  1957 /*toYear*/,
28084  4 /*inMonth*/,
28085  0 /*onDayOfWeek*/,
28086  27 /*onDayOfMonth*/,
28087  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
28088  5760 /*atTimeCode (86400/15)*/,
28089  60 /*deltaMinutes*/,
28090  13 /*letterIndex ("D")*/,
28091  },
28092  // Rule Zion 1957 only - Sep 21 24:00u 0 S
28093  {
28094  1957 /*fromYear*/,
28095  1957 /*toYear*/,
28096  9 /*inMonth*/,
28097  0 /*onDayOfWeek*/,
28098  21 /*onDayOfMonth*/,
28099  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
28100  5760 /*atTimeCode (86400/15)*/,
28101  0 /*deltaMinutes*/,
28102  25 /*letterIndex ("S")*/,
28103  },
28104  // Rule Zion 1974 only - Jul 6 24:00 1:00 D
28105  {
28106  1974 /*fromYear*/,
28107  1974 /*toYear*/,
28108  7 /*inMonth*/,
28109  0 /*onDayOfWeek*/,
28110  6 /*onDayOfMonth*/,
28111  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28112  5760 /*atTimeCode (86400/15)*/,
28113  60 /*deltaMinutes*/,
28114  13 /*letterIndex ("D")*/,
28115  },
28116  // Rule Zion 1974 only - Oct 12 24:00 0 S
28117  {
28118  1974 /*fromYear*/,
28119  1974 /*toYear*/,
28120  10 /*inMonth*/,
28121  0 /*onDayOfWeek*/,
28122  12 /*onDayOfMonth*/,
28123  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28124  5760 /*atTimeCode (86400/15)*/,
28125  0 /*deltaMinutes*/,
28126  25 /*letterIndex ("S")*/,
28127  },
28128  // Rule Zion 1975 only - Apr 19 24:00 1:00 D
28129  {
28130  1975 /*fromYear*/,
28131  1975 /*toYear*/,
28132  4 /*inMonth*/,
28133  0 /*onDayOfWeek*/,
28134  19 /*onDayOfMonth*/,
28135  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28136  5760 /*atTimeCode (86400/15)*/,
28137  60 /*deltaMinutes*/,
28138  13 /*letterIndex ("D")*/,
28139  },
28140  // Rule Zion 1975 only - Aug 30 24:00 0 S
28141  {
28142  1975 /*fromYear*/,
28143  1975 /*toYear*/,
28144  8 /*inMonth*/,
28145  0 /*onDayOfWeek*/,
28146  30 /*onDayOfMonth*/,
28147  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28148  5760 /*atTimeCode (86400/15)*/,
28149  0 /*deltaMinutes*/,
28150  25 /*letterIndex ("S")*/,
28151  },
28152  // Rule Zion 1980 only - Aug 2 24:00s 1:00 D
28153  {
28154  1980 /*fromYear*/,
28155  1980 /*toYear*/,
28156  8 /*inMonth*/,
28157  0 /*onDayOfWeek*/,
28158  2 /*onDayOfMonth*/,
28159  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
28160  5760 /*atTimeCode (86400/15)*/,
28161  60 /*deltaMinutes*/,
28162  13 /*letterIndex ("D")*/,
28163  },
28164  // Rule Zion 1980 only - Sep 13 24:00s 0 S
28165  {
28166  1980 /*fromYear*/,
28167  1980 /*toYear*/,
28168  9 /*inMonth*/,
28169  0 /*onDayOfWeek*/,
28170  13 /*onDayOfMonth*/,
28171  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
28172  5760 /*atTimeCode (86400/15)*/,
28173  0 /*deltaMinutes*/,
28174  25 /*letterIndex ("S")*/,
28175  },
28176  // Rule Zion 1984 only - May 5 24:00s 1:00 D
28177  {
28178  1984 /*fromYear*/,
28179  1984 /*toYear*/,
28180  5 /*inMonth*/,
28181  0 /*onDayOfWeek*/,
28182  5 /*onDayOfMonth*/,
28183  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
28184  5760 /*atTimeCode (86400/15)*/,
28185  60 /*deltaMinutes*/,
28186  13 /*letterIndex ("D")*/,
28187  },
28188  // Rule Zion 1984 only - Aug 25 24:00s 0 S
28189  {
28190  1984 /*fromYear*/,
28191  1984 /*toYear*/,
28192  8 /*inMonth*/,
28193  0 /*onDayOfWeek*/,
28194  25 /*onDayOfMonth*/,
28195  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
28196  5760 /*atTimeCode (86400/15)*/,
28197  0 /*deltaMinutes*/,
28198  25 /*letterIndex ("S")*/,
28199  },
28200  // Rule Zion 1985 only - Apr 13 24:00 1:00 D
28201  {
28202  1985 /*fromYear*/,
28203  1985 /*toYear*/,
28204  4 /*inMonth*/,
28205  0 /*onDayOfWeek*/,
28206  13 /*onDayOfMonth*/,
28207  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28208  5760 /*atTimeCode (86400/15)*/,
28209  60 /*deltaMinutes*/,
28210  13 /*letterIndex ("D")*/,
28211  },
28212  // Rule Zion 1985 only - Aug 31 24:00 0 S
28213  {
28214  1985 /*fromYear*/,
28215  1985 /*toYear*/,
28216  8 /*inMonth*/,
28217  0 /*onDayOfWeek*/,
28218  31 /*onDayOfMonth*/,
28219  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28220  5760 /*atTimeCode (86400/15)*/,
28221  0 /*deltaMinutes*/,
28222  25 /*letterIndex ("S")*/,
28223  },
28224  // Rule Zion 1986 only - May 17 24:00 1:00 D
28225  {
28226  1986 /*fromYear*/,
28227  1986 /*toYear*/,
28228  5 /*inMonth*/,
28229  0 /*onDayOfWeek*/,
28230  17 /*onDayOfMonth*/,
28231  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28232  5760 /*atTimeCode (86400/15)*/,
28233  60 /*deltaMinutes*/,
28234  13 /*letterIndex ("D")*/,
28235  },
28236  // Rule Zion 1986 only - Sep 6 24:00 0 S
28237  {
28238  1986 /*fromYear*/,
28239  1986 /*toYear*/,
28240  9 /*inMonth*/,
28241  0 /*onDayOfWeek*/,
28242  6 /*onDayOfMonth*/,
28243  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28244  5760 /*atTimeCode (86400/15)*/,
28245  0 /*deltaMinutes*/,
28246  25 /*letterIndex ("S")*/,
28247  },
28248  // Rule Zion 1987 only - Apr 14 24:00 1:00 D
28249  {
28250  1987 /*fromYear*/,
28251  1987 /*toYear*/,
28252  4 /*inMonth*/,
28253  0 /*onDayOfWeek*/,
28254  14 /*onDayOfMonth*/,
28255  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28256  5760 /*atTimeCode (86400/15)*/,
28257  60 /*deltaMinutes*/,
28258  13 /*letterIndex ("D")*/,
28259  },
28260  // Rule Zion 1987 only - Sep 12 24:00 0 S
28261  {
28262  1987 /*fromYear*/,
28263  1987 /*toYear*/,
28264  9 /*inMonth*/,
28265  0 /*onDayOfWeek*/,
28266  12 /*onDayOfMonth*/,
28267  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28268  5760 /*atTimeCode (86400/15)*/,
28269  0 /*deltaMinutes*/,
28270  25 /*letterIndex ("S")*/,
28271  },
28272  // Rule Zion 1988 only - Apr 9 24:00 1:00 D
28273  {
28274  1988 /*fromYear*/,
28275  1988 /*toYear*/,
28276  4 /*inMonth*/,
28277  0 /*onDayOfWeek*/,
28278  9 /*onDayOfMonth*/,
28279  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28280  5760 /*atTimeCode (86400/15)*/,
28281  60 /*deltaMinutes*/,
28282  13 /*letterIndex ("D")*/,
28283  },
28284  // Rule Zion 1988 only - Sep 3 24:00 0 S
28285  {
28286  1988 /*fromYear*/,
28287  1988 /*toYear*/,
28288  9 /*inMonth*/,
28289  0 /*onDayOfWeek*/,
28290  3 /*onDayOfMonth*/,
28291  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28292  5760 /*atTimeCode (86400/15)*/,
28293  0 /*deltaMinutes*/,
28294  25 /*letterIndex ("S")*/,
28295  },
28296  // Rule Zion 1989 only - Apr 29 24:00 1:00 D
28297  {
28298  1989 /*fromYear*/,
28299  1989 /*toYear*/,
28300  4 /*inMonth*/,
28301  0 /*onDayOfWeek*/,
28302  29 /*onDayOfMonth*/,
28303  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28304  5760 /*atTimeCode (86400/15)*/,
28305  60 /*deltaMinutes*/,
28306  13 /*letterIndex ("D")*/,
28307  },
28308  // Rule Zion 1989 only - Sep 2 24:00 0 S
28309  {
28310  1989 /*fromYear*/,
28311  1989 /*toYear*/,
28312  9 /*inMonth*/,
28313  0 /*onDayOfWeek*/,
28314  2 /*onDayOfMonth*/,
28315  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28316  5760 /*atTimeCode (86400/15)*/,
28317  0 /*deltaMinutes*/,
28318  25 /*letterIndex ("S")*/,
28319  },
28320  // Rule Zion 1990 only - Mar 24 24:00 1:00 D
28321  {
28322  1990 /*fromYear*/,
28323  1990 /*toYear*/,
28324  3 /*inMonth*/,
28325  0 /*onDayOfWeek*/,
28326  24 /*onDayOfMonth*/,
28327  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28328  5760 /*atTimeCode (86400/15)*/,
28329  60 /*deltaMinutes*/,
28330  13 /*letterIndex ("D")*/,
28331  },
28332  // Rule Zion 1990 only - Aug 25 24:00 0 S
28333  {
28334  1990 /*fromYear*/,
28335  1990 /*toYear*/,
28336  8 /*inMonth*/,
28337  0 /*onDayOfWeek*/,
28338  25 /*onDayOfMonth*/,
28339  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28340  5760 /*atTimeCode (86400/15)*/,
28341  0 /*deltaMinutes*/,
28342  25 /*letterIndex ("S")*/,
28343  },
28344  // Rule Zion 1991 only - Mar 23 24:00 1:00 D
28345  {
28346  1991 /*fromYear*/,
28347  1991 /*toYear*/,
28348  3 /*inMonth*/,
28349  0 /*onDayOfWeek*/,
28350  23 /*onDayOfMonth*/,
28351  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28352  5760 /*atTimeCode (86400/15)*/,
28353  60 /*deltaMinutes*/,
28354  13 /*letterIndex ("D")*/,
28355  },
28356  // Rule Zion 1991 only - Aug 31 24:00 0 S
28357  {
28358  1991 /*fromYear*/,
28359  1991 /*toYear*/,
28360  8 /*inMonth*/,
28361  0 /*onDayOfWeek*/,
28362  31 /*onDayOfMonth*/,
28363  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28364  5760 /*atTimeCode (86400/15)*/,
28365  0 /*deltaMinutes*/,
28366  25 /*letterIndex ("S")*/,
28367  },
28368  // Rule Zion 1992 only - Mar 28 24:00 1:00 D
28369  {
28370  1992 /*fromYear*/,
28371  1992 /*toYear*/,
28372  3 /*inMonth*/,
28373  0 /*onDayOfWeek*/,
28374  28 /*onDayOfMonth*/,
28375  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28376  5760 /*atTimeCode (86400/15)*/,
28377  60 /*deltaMinutes*/,
28378  13 /*letterIndex ("D")*/,
28379  },
28380  // Rule Zion 1992 only - Sep 5 24:00 0 S
28381  {
28382  1992 /*fromYear*/,
28383  1992 /*toYear*/,
28384  9 /*inMonth*/,
28385  0 /*onDayOfWeek*/,
28386  5 /*onDayOfMonth*/,
28387  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28388  5760 /*atTimeCode (86400/15)*/,
28389  0 /*deltaMinutes*/,
28390  25 /*letterIndex ("S")*/,
28391  },
28392  // Rule Zion 1993 only - Apr 2 0:00 1:00 D
28393  {
28394  1993 /*fromYear*/,
28395  1993 /*toYear*/,
28396  4 /*inMonth*/,
28397  0 /*onDayOfWeek*/,
28398  2 /*onDayOfMonth*/,
28399  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28400  0 /*atTimeCode (0/15)*/,
28401  60 /*deltaMinutes*/,
28402  13 /*letterIndex ("D")*/,
28403  },
28404  // Rule Zion 1993 only - Sep 5 0:00 0 S
28405  {
28406  1993 /*fromYear*/,
28407  1993 /*toYear*/,
28408  9 /*inMonth*/,
28409  0 /*onDayOfWeek*/,
28410  5 /*onDayOfMonth*/,
28411  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28412  0 /*atTimeCode (0/15)*/,
28413  0 /*deltaMinutes*/,
28414  25 /*letterIndex ("S")*/,
28415  },
28416  // Rule Zion 1994 only - Apr 1 0:00 1:00 D
28417  {
28418  1994 /*fromYear*/,
28419  1994 /*toYear*/,
28420  4 /*inMonth*/,
28421  0 /*onDayOfWeek*/,
28422  1 /*onDayOfMonth*/,
28423  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28424  0 /*atTimeCode (0/15)*/,
28425  60 /*deltaMinutes*/,
28426  13 /*letterIndex ("D")*/,
28427  },
28428  // Rule Zion 1994 only - Aug 28 0:00 0 S
28429  {
28430  1994 /*fromYear*/,
28431  1994 /*toYear*/,
28432  8 /*inMonth*/,
28433  0 /*onDayOfWeek*/,
28434  28 /*onDayOfMonth*/,
28435  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28436  0 /*atTimeCode (0/15)*/,
28437  0 /*deltaMinutes*/,
28438  25 /*letterIndex ("S")*/,
28439  },
28440  // Rule Zion 1995 only - Mar 31 0:00 1:00 D
28441  {
28442  1995 /*fromYear*/,
28443  1995 /*toYear*/,
28444  3 /*inMonth*/,
28445  0 /*onDayOfWeek*/,
28446  31 /*onDayOfMonth*/,
28447  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28448  0 /*atTimeCode (0/15)*/,
28449  60 /*deltaMinutes*/,
28450  13 /*letterIndex ("D")*/,
28451  },
28452  // Rule Zion 1995 only - Sep 3 0:00 0 S
28453  {
28454  1995 /*fromYear*/,
28455  1995 /*toYear*/,
28456  9 /*inMonth*/,
28457  0 /*onDayOfWeek*/,
28458  3 /*onDayOfMonth*/,
28459  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28460  0 /*atTimeCode (0/15)*/,
28461  0 /*deltaMinutes*/,
28462  25 /*letterIndex ("S")*/,
28463  },
28464  // Rule Zion 1996 only - Mar 14 24:00 1:00 D
28465  {
28466  1996 /*fromYear*/,
28467  1996 /*toYear*/,
28468  3 /*inMonth*/,
28469  0 /*onDayOfWeek*/,
28470  14 /*onDayOfMonth*/,
28471  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28472  5760 /*atTimeCode (86400/15)*/,
28473  60 /*deltaMinutes*/,
28474  13 /*letterIndex ("D")*/,
28475  },
28476  // Rule Zion 1996 only - Sep 15 24:00 0 S
28477  {
28478  1996 /*fromYear*/,
28479  1996 /*toYear*/,
28480  9 /*inMonth*/,
28481  0 /*onDayOfWeek*/,
28482  15 /*onDayOfMonth*/,
28483  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28484  5760 /*atTimeCode (86400/15)*/,
28485  0 /*deltaMinutes*/,
28486  25 /*letterIndex ("S")*/,
28487  },
28488  // Rule Zion 1997 only - Mar 20 24:00 1:00 D
28489  {
28490  1997 /*fromYear*/,
28491  1997 /*toYear*/,
28492  3 /*inMonth*/,
28493  0 /*onDayOfWeek*/,
28494  20 /*onDayOfMonth*/,
28495  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28496  5760 /*atTimeCode (86400/15)*/,
28497  60 /*deltaMinutes*/,
28498  13 /*letterIndex ("D")*/,
28499  },
28500  // Rule Zion 1997 only - Sep 13 24:00 0 S
28501  {
28502  1997 /*fromYear*/,
28503  1997 /*toYear*/,
28504  9 /*inMonth*/,
28505  0 /*onDayOfWeek*/,
28506  13 /*onDayOfMonth*/,
28507  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28508  5760 /*atTimeCode (86400/15)*/,
28509  0 /*deltaMinutes*/,
28510  25 /*letterIndex ("S")*/,
28511  },
28512  // Rule Zion 1998 only - Mar 20 0:00 1:00 D
28513  {
28514  1998 /*fromYear*/,
28515  1998 /*toYear*/,
28516  3 /*inMonth*/,
28517  0 /*onDayOfWeek*/,
28518  20 /*onDayOfMonth*/,
28519  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28520  0 /*atTimeCode (0/15)*/,
28521  60 /*deltaMinutes*/,
28522  13 /*letterIndex ("D")*/,
28523  },
28524  // Rule Zion 1998 only - Sep 6 0:00 0 S
28525  {
28526  1998 /*fromYear*/,
28527  1998 /*toYear*/,
28528  9 /*inMonth*/,
28529  0 /*onDayOfWeek*/,
28530  6 /*onDayOfMonth*/,
28531  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28532  0 /*atTimeCode (0/15)*/,
28533  0 /*deltaMinutes*/,
28534  25 /*letterIndex ("S")*/,
28535  },
28536  // Rule Zion 1999 only - Apr 2 2:00 1:00 D
28537  {
28538  1999 /*fromYear*/,
28539  1999 /*toYear*/,
28540  4 /*inMonth*/,
28541  0 /*onDayOfWeek*/,
28542  2 /*onDayOfMonth*/,
28543  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28544  480 /*atTimeCode (7200/15)*/,
28545  60 /*deltaMinutes*/,
28546  13 /*letterIndex ("D")*/,
28547  },
28548  // Rule Zion 1999 only - Sep 3 2:00 0 S
28549  {
28550  1999 /*fromYear*/,
28551  1999 /*toYear*/,
28552  9 /*inMonth*/,
28553  0 /*onDayOfWeek*/,
28554  3 /*onDayOfMonth*/,
28555  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28556  480 /*atTimeCode (7200/15)*/,
28557  0 /*deltaMinutes*/,
28558  25 /*letterIndex ("S")*/,
28559  },
28560  // Rule Zion 2000 only - Apr 14 2:00 1:00 D
28561  {
28562  2000 /*fromYear*/,
28563  2000 /*toYear*/,
28564  4 /*inMonth*/,
28565  0 /*onDayOfWeek*/,
28566  14 /*onDayOfMonth*/,
28567  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28568  480 /*atTimeCode (7200/15)*/,
28569  60 /*deltaMinutes*/,
28570  13 /*letterIndex ("D")*/,
28571  },
28572  // Rule Zion 2000 only - Oct 6 1:00 0 S
28573  {
28574  2000 /*fromYear*/,
28575  2000 /*toYear*/,
28576  10 /*inMonth*/,
28577  0 /*onDayOfWeek*/,
28578  6 /*onDayOfMonth*/,
28579  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28580  240 /*atTimeCode (3600/15)*/,
28581  0 /*deltaMinutes*/,
28582  25 /*letterIndex ("S")*/,
28583  },
28584  // Rule Zion 2001 only - Apr 9 1:00 1:00 D
28585  {
28586  2001 /*fromYear*/,
28587  2001 /*toYear*/,
28588  4 /*inMonth*/,
28589  0 /*onDayOfWeek*/,
28590  9 /*onDayOfMonth*/,
28591  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28592  240 /*atTimeCode (3600/15)*/,
28593  60 /*deltaMinutes*/,
28594  13 /*letterIndex ("D")*/,
28595  },
28596  // Rule Zion 2001 only - Sep 24 1:00 0 S
28597  {
28598  2001 /*fromYear*/,
28599  2001 /*toYear*/,
28600  9 /*inMonth*/,
28601  0 /*onDayOfWeek*/,
28602  24 /*onDayOfMonth*/,
28603  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28604  240 /*atTimeCode (3600/15)*/,
28605  0 /*deltaMinutes*/,
28606  25 /*letterIndex ("S")*/,
28607  },
28608  // Rule Zion 2002 only - Mar 29 1:00 1:00 D
28609  {
28610  2002 /*fromYear*/,
28611  2002 /*toYear*/,
28612  3 /*inMonth*/,
28613  0 /*onDayOfWeek*/,
28614  29 /*onDayOfMonth*/,
28615  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28616  240 /*atTimeCode (3600/15)*/,
28617  60 /*deltaMinutes*/,
28618  13 /*letterIndex ("D")*/,
28619  },
28620  // Rule Zion 2002 only - Oct 7 1:00 0 S
28621  {
28622  2002 /*fromYear*/,
28623  2002 /*toYear*/,
28624  10 /*inMonth*/,
28625  0 /*onDayOfWeek*/,
28626  7 /*onDayOfMonth*/,
28627  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28628  240 /*atTimeCode (3600/15)*/,
28629  0 /*deltaMinutes*/,
28630  25 /*letterIndex ("S")*/,
28631  },
28632  // Rule Zion 2003 only - Mar 28 1:00 1:00 D
28633  {
28634  2003 /*fromYear*/,
28635  2003 /*toYear*/,
28636  3 /*inMonth*/,
28637  0 /*onDayOfWeek*/,
28638  28 /*onDayOfMonth*/,
28639  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28640  240 /*atTimeCode (3600/15)*/,
28641  60 /*deltaMinutes*/,
28642  13 /*letterIndex ("D")*/,
28643  },
28644  // Rule Zion 2003 only - Oct 3 1:00 0 S
28645  {
28646  2003 /*fromYear*/,
28647  2003 /*toYear*/,
28648  10 /*inMonth*/,
28649  0 /*onDayOfWeek*/,
28650  3 /*onDayOfMonth*/,
28651  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28652  240 /*atTimeCode (3600/15)*/,
28653  0 /*deltaMinutes*/,
28654  25 /*letterIndex ("S")*/,
28655  },
28656  // Rule Zion 2004 only - Apr 7 1:00 1:00 D
28657  {
28658  2004 /*fromYear*/,
28659  2004 /*toYear*/,
28660  4 /*inMonth*/,
28661  0 /*onDayOfWeek*/,
28662  7 /*onDayOfMonth*/,
28663  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28664  240 /*atTimeCode (3600/15)*/,
28665  60 /*deltaMinutes*/,
28666  13 /*letterIndex ("D")*/,
28667  },
28668  // Rule Zion 2004 only - Sep 22 1:00 0 S
28669  {
28670  2004 /*fromYear*/,
28671  2004 /*toYear*/,
28672  9 /*inMonth*/,
28673  0 /*onDayOfWeek*/,
28674  22 /*onDayOfMonth*/,
28675  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28676  240 /*atTimeCode (3600/15)*/,
28677  0 /*deltaMinutes*/,
28678  25 /*letterIndex ("S")*/,
28679  },
28680  // Rule Zion 2005 2012 - Apr Fri<=1 2:00 1:00 D
28681  {
28682  2005 /*fromYear*/,
28683  2012 /*toYear*/,
28684  4 /*inMonth*/,
28685  5 /*onDayOfWeek*/,
28686  -1 /*onDayOfMonth*/,
28687  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28688  480 /*atTimeCode (7200/15)*/,
28689  60 /*deltaMinutes*/,
28690  13 /*letterIndex ("D")*/,
28691  },
28692  // Rule Zion 2005 only - Oct 9 2:00 0 S
28693  {
28694  2005 /*fromYear*/,
28695  2005 /*toYear*/,
28696  10 /*inMonth*/,
28697  0 /*onDayOfWeek*/,
28698  9 /*onDayOfMonth*/,
28699  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28700  480 /*atTimeCode (7200/15)*/,
28701  0 /*deltaMinutes*/,
28702  25 /*letterIndex ("S")*/,
28703  },
28704  // Rule Zion 2006 only - Oct 1 2:00 0 S
28705  {
28706  2006 /*fromYear*/,
28707  2006 /*toYear*/,
28708  10 /*inMonth*/,
28709  0 /*onDayOfWeek*/,
28710  1 /*onDayOfMonth*/,
28711  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28712  480 /*atTimeCode (7200/15)*/,
28713  0 /*deltaMinutes*/,
28714  25 /*letterIndex ("S")*/,
28715  },
28716  // Rule Zion 2007 only - Sep 16 2:00 0 S
28717  {
28718  2007 /*fromYear*/,
28719  2007 /*toYear*/,
28720  9 /*inMonth*/,
28721  0 /*onDayOfWeek*/,
28722  16 /*onDayOfMonth*/,
28723  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28724  480 /*atTimeCode (7200/15)*/,
28725  0 /*deltaMinutes*/,
28726  25 /*letterIndex ("S")*/,
28727  },
28728  // Rule Zion 2008 only - Oct 5 2:00 0 S
28729  {
28730  2008 /*fromYear*/,
28731  2008 /*toYear*/,
28732  10 /*inMonth*/,
28733  0 /*onDayOfWeek*/,
28734  5 /*onDayOfMonth*/,
28735  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28736  480 /*atTimeCode (7200/15)*/,
28737  0 /*deltaMinutes*/,
28738  25 /*letterIndex ("S")*/,
28739  },
28740  // Rule Zion 2009 only - Sep 27 2:00 0 S
28741  {
28742  2009 /*fromYear*/,
28743  2009 /*toYear*/,
28744  9 /*inMonth*/,
28745  0 /*onDayOfWeek*/,
28746  27 /*onDayOfMonth*/,
28747  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28748  480 /*atTimeCode (7200/15)*/,
28749  0 /*deltaMinutes*/,
28750  25 /*letterIndex ("S")*/,
28751  },
28752  // Rule Zion 2010 only - Sep 12 2:00 0 S
28753  {
28754  2010 /*fromYear*/,
28755  2010 /*toYear*/,
28756  9 /*inMonth*/,
28757  0 /*onDayOfWeek*/,
28758  12 /*onDayOfMonth*/,
28759  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28760  480 /*atTimeCode (7200/15)*/,
28761  0 /*deltaMinutes*/,
28762  25 /*letterIndex ("S")*/,
28763  },
28764  // Rule Zion 2011 only - Oct 2 2:00 0 S
28765  {
28766  2011 /*fromYear*/,
28767  2011 /*toYear*/,
28768  10 /*inMonth*/,
28769  0 /*onDayOfWeek*/,
28770  2 /*onDayOfMonth*/,
28771  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28772  480 /*atTimeCode (7200/15)*/,
28773  0 /*deltaMinutes*/,
28774  25 /*letterIndex ("S")*/,
28775  },
28776  // Rule Zion 2012 only - Sep 23 2:00 0 S
28777  {
28778  2012 /*fromYear*/,
28779  2012 /*toYear*/,
28780  9 /*inMonth*/,
28781  0 /*onDayOfWeek*/,
28782  23 /*onDayOfMonth*/,
28783  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28784  480 /*atTimeCode (7200/15)*/,
28785  0 /*deltaMinutes*/,
28786  25 /*letterIndex ("S")*/,
28787  },
28788  // Rule Zion 2013 max - Mar Fri>=23 2:00 1:00 D
28789  {
28790  2013 /*fromYear*/,
28791  32766 /*toYear*/,
28792  3 /*inMonth*/,
28793  5 /*onDayOfWeek*/,
28794  23 /*onDayOfMonth*/,
28795  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28796  480 /*atTimeCode (7200/15)*/,
28797  60 /*deltaMinutes*/,
28798  13 /*letterIndex ("D")*/,
28799  },
28800  // Rule Zion 2013 max - Oct lastSun 2:00 0 S
28801  {
28802  2013 /*fromYear*/,
28803  32766 /*toYear*/,
28804  10 /*inMonth*/,
28805  7 /*onDayOfWeek*/,
28806  0 /*onDayOfMonth*/,
28807  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
28808  480 /*atTimeCode (7200/15)*/,
28809  0 /*deltaMinutes*/,
28810  25 /*letterIndex ("S")*/,
28811  },
28812 
28813 };
28814 
28815 const complete::ZonePolicy kZonePolicyZion ACE_TIME_PROGMEM = {
28816  kZoneRulesZion /*rules*/,
28817  86 /*numRules*/,
28818 };
28819 
28820 
28821 
28822 }
28823 }
Macros and definitions that provide a consistency layer among the various Arduino boards for compatib...