AceTime  0.6
Date and time classes for Arduino that support timezones from the TZ Database, and a system clock that can synchronize from an NTP server or an RTC chip.
zone_policies.cpp
1 // This file was generated by the following script:
2 //
3 // $ ../../../tools/tzcompiler.py --input_dir ../../../tools/../../tz --output_dir /home/brian/dev/AceTime/src/ace_time/zonedb --tz_version 2019a --action zonedb --language arduino --scope basic --start_year 2000 --until_year 2050
4 //
5 // using the TZ Database files from
6 // https://github.com/eggert/tz/releases/tag/2019a
7 //
8 // Policies: 65
9 // Rules: 370
10 // Memory (8-bit): 3720
11 // Memory (32-bit): 5252
12 //
13 // DO NOT EDIT
14 
15 #include <ace_time/common/compat.h>
16 #include "zone_policies.h"
17 
18 namespace ace_time {
19 namespace zonedb {
20 
21 //---------------------------------------------------------------------------
22 // Policy name: AN
23 // Rules: 9
24 // Memory (8-bit): 87
25 // Memory (32-bit): 120
26 //---------------------------------------------------------------------------
27 
28 static const basic::ZoneRule kZoneRulesAN[] ACE_TIME_PROGMEM = {
29  // Rule AN 1987 1999 - Oct lastSun 2:00s 1:00 D
30  {
31  -13 /*fromYearTiny*/,
32  -1 /*toYearTiny*/,
33  10 /*inMonth*/,
34  7 /*onDayOfWeek*/,
35  0 /*onDayOfMonth*/,
36  8 /*atTimeCode*/,
37  's' /*atTimeModifier*/,
38  4 /*deltaCode*/,
39  'D' /*letter*/,
40  },
41  // Rule AN 1990 1995 - Mar Sun>=1 2:00s 0 S
42  {
43  -10 /*fromYearTiny*/,
44  -5 /*toYearTiny*/,
45  3 /*inMonth*/,
46  7 /*onDayOfWeek*/,
47  1 /*onDayOfMonth*/,
48  8 /*atTimeCode*/,
49  's' /*atTimeModifier*/,
50  0 /*deltaCode*/,
51  'S' /*letter*/,
52  },
53  // Rule AN 1996 2005 - Mar lastSun 2:00s 0 S
54  {
55  -4 /*fromYearTiny*/,
56  5 /*toYearTiny*/,
57  3 /*inMonth*/,
58  7 /*onDayOfWeek*/,
59  0 /*onDayOfMonth*/,
60  8 /*atTimeCode*/,
61  's' /*atTimeModifier*/,
62  0 /*deltaCode*/,
63  'S' /*letter*/,
64  },
65  // Rule AN 2000 only - Aug lastSun 2:00s 1:00 D
66  {
67  0 /*fromYearTiny*/,
68  0 /*toYearTiny*/,
69  8 /*inMonth*/,
70  7 /*onDayOfWeek*/,
71  0 /*onDayOfMonth*/,
72  8 /*atTimeCode*/,
73  's' /*atTimeModifier*/,
74  4 /*deltaCode*/,
75  'D' /*letter*/,
76  },
77  // Rule AN 2001 2007 - Oct lastSun 2:00s 1:00 D
78  {
79  1 /*fromYearTiny*/,
80  7 /*toYearTiny*/,
81  10 /*inMonth*/,
82  7 /*onDayOfWeek*/,
83  0 /*onDayOfMonth*/,
84  8 /*atTimeCode*/,
85  's' /*atTimeModifier*/,
86  4 /*deltaCode*/,
87  'D' /*letter*/,
88  },
89  // Rule AN 2006 only - Apr Sun>=1 2:00s 0 S
90  {
91  6 /*fromYearTiny*/,
92  6 /*toYearTiny*/,
93  4 /*inMonth*/,
94  7 /*onDayOfWeek*/,
95  1 /*onDayOfMonth*/,
96  8 /*atTimeCode*/,
97  's' /*atTimeModifier*/,
98  0 /*deltaCode*/,
99  'S' /*letter*/,
100  },
101  // Rule AN 2007 only - Mar lastSun 2:00s 0 S
102  {
103  7 /*fromYearTiny*/,
104  7 /*toYearTiny*/,
105  3 /*inMonth*/,
106  7 /*onDayOfWeek*/,
107  0 /*onDayOfMonth*/,
108  8 /*atTimeCode*/,
109  's' /*atTimeModifier*/,
110  0 /*deltaCode*/,
111  'S' /*letter*/,
112  },
113  // Rule AN 2008 max - Apr Sun>=1 2:00s 0 S
114  {
115  8 /*fromYearTiny*/,
116  126 /*toYearTiny*/,
117  4 /*inMonth*/,
118  7 /*onDayOfWeek*/,
119  1 /*onDayOfMonth*/,
120  8 /*atTimeCode*/,
121  's' /*atTimeModifier*/,
122  0 /*deltaCode*/,
123  'S' /*letter*/,
124  },
125  // Rule AN 2008 max - Oct Sun>=1 2:00s 1:00 D
126  {
127  8 /*fromYearTiny*/,
128  126 /*toYearTiny*/,
129  10 /*inMonth*/,
130  7 /*onDayOfWeek*/,
131  1 /*onDayOfMonth*/,
132  8 /*atTimeCode*/,
133  's' /*atTimeModifier*/,
134  4 /*deltaCode*/,
135  'D' /*letter*/,
136  },
137 
138 };
139 
140 
141 
142 const basic::ZonePolicy kPolicyAN ACE_TIME_PROGMEM = {
143  kZoneRulesAN /*rules*/,
144  nullptr /* letters */,
145  9 /*numRules*/,
146  0 /* numLetters */,
147 };
148 
149 //---------------------------------------------------------------------------
150 // Policy name: AQ
151 // Rules: 1
152 // Memory (8-bit): 15
153 // Memory (32-bit): 24
154 //---------------------------------------------------------------------------
155 
156 static const basic::ZoneRule kZoneRulesAQ[] ACE_TIME_PROGMEM = {
157  // Rule AQ 1990 1992 - Mar Sun>=1 2:00s 0 S
158  {
159  -10 /*fromYearTiny*/,
160  -8 /*toYearTiny*/,
161  3 /*inMonth*/,
162  7 /*onDayOfWeek*/,
163  1 /*onDayOfMonth*/,
164  8 /*atTimeCode*/,
165  's' /*atTimeModifier*/,
166  0 /*deltaCode*/,
167  'S' /*letter*/,
168  },
169 
170 };
171 
172 
173 
174 const basic::ZonePolicy kPolicyAQ ACE_TIME_PROGMEM = {
175  kZoneRulesAQ /*rules*/,
176  nullptr /* letters */,
177  1 /*numRules*/,
178  0 /* numLetters */,
179 };
180 
181 //---------------------------------------------------------------------------
182 // Policy name: AS
183 // Rules: 7
184 // Memory (8-bit): 69
185 // Memory (32-bit): 96
186 //---------------------------------------------------------------------------
187 
188 static const basic::ZoneRule kZoneRulesAS[] ACE_TIME_PROGMEM = {
189  // Rule AS 1987 2007 - Oct lastSun 2:00s 1:00 D
190  {
191  -13 /*fromYearTiny*/,
192  7 /*toYearTiny*/,
193  10 /*inMonth*/,
194  7 /*onDayOfWeek*/,
195  0 /*onDayOfMonth*/,
196  8 /*atTimeCode*/,
197  's' /*atTimeModifier*/,
198  4 /*deltaCode*/,
199  'D' /*letter*/,
200  },
201  // Rule AS 1994 only - Mar 20 2:00s 0 S
202  {
203  -6 /*fromYearTiny*/,
204  -6 /*toYearTiny*/,
205  3 /*inMonth*/,
206  0 /*onDayOfWeek*/,
207  20 /*onDayOfMonth*/,
208  8 /*atTimeCode*/,
209  's' /*atTimeModifier*/,
210  0 /*deltaCode*/,
211  'S' /*letter*/,
212  },
213  // Rule AS 1995 2005 - Mar lastSun 2:00s 0 S
214  {
215  -5 /*fromYearTiny*/,
216  5 /*toYearTiny*/,
217  3 /*inMonth*/,
218  7 /*onDayOfWeek*/,
219  0 /*onDayOfMonth*/,
220  8 /*atTimeCode*/,
221  's' /*atTimeModifier*/,
222  0 /*deltaCode*/,
223  'S' /*letter*/,
224  },
225  // Rule AS 2006 only - Apr 2 2:00s 0 S
226  {
227  6 /*fromYearTiny*/,
228  6 /*toYearTiny*/,
229  4 /*inMonth*/,
230  0 /*onDayOfWeek*/,
231  2 /*onDayOfMonth*/,
232  8 /*atTimeCode*/,
233  's' /*atTimeModifier*/,
234  0 /*deltaCode*/,
235  'S' /*letter*/,
236  },
237  // Rule AS 2007 only - Mar lastSun 2:00s 0 S
238  {
239  7 /*fromYearTiny*/,
240  7 /*toYearTiny*/,
241  3 /*inMonth*/,
242  7 /*onDayOfWeek*/,
243  0 /*onDayOfMonth*/,
244  8 /*atTimeCode*/,
245  's' /*atTimeModifier*/,
246  0 /*deltaCode*/,
247  'S' /*letter*/,
248  },
249  // Rule AS 2008 max - Apr Sun>=1 2:00s 0 S
250  {
251  8 /*fromYearTiny*/,
252  126 /*toYearTiny*/,
253  4 /*inMonth*/,
254  7 /*onDayOfWeek*/,
255  1 /*onDayOfMonth*/,
256  8 /*atTimeCode*/,
257  's' /*atTimeModifier*/,
258  0 /*deltaCode*/,
259  'S' /*letter*/,
260  },
261  // Rule AS 2008 max - Oct Sun>=1 2:00s 1:00 D
262  {
263  8 /*fromYearTiny*/,
264  126 /*toYearTiny*/,
265  10 /*inMonth*/,
266  7 /*onDayOfWeek*/,
267  1 /*onDayOfMonth*/,
268  8 /*atTimeCode*/,
269  's' /*atTimeModifier*/,
270  4 /*deltaCode*/,
271  'D' /*letter*/,
272  },
273 
274 };
275 
276 
277 
278 const basic::ZonePolicy kPolicyAS ACE_TIME_PROGMEM = {
279  kZoneRulesAS /*rules*/,
280  nullptr /* letters */,
281  7 /*numRules*/,
282  0 /* numLetters */,
283 };
284 
285 //---------------------------------------------------------------------------
286 // Policy name: AT
287 // Rules: 8
288 // Memory (8-bit): 78
289 // Memory (32-bit): 108
290 //---------------------------------------------------------------------------
291 
292 static const basic::ZoneRule kZoneRulesAT[] ACE_TIME_PROGMEM = {
293  // Rule AT 1988 1990 - Oct lastSun 2:00s 1:00 D
294  {
295  -12 /*fromYearTiny*/,
296  -10 /*toYearTiny*/,
297  10 /*inMonth*/,
298  7 /*onDayOfWeek*/,
299  0 /*onDayOfMonth*/,
300  8 /*atTimeCode*/,
301  's' /*atTimeModifier*/,
302  4 /*deltaCode*/,
303  'D' /*letter*/,
304  },
305  // Rule AT 1991 1999 - Oct Sun>=1 2:00s 1:00 D
306  {
307  -9 /*fromYearTiny*/,
308  -1 /*toYearTiny*/,
309  10 /*inMonth*/,
310  7 /*onDayOfWeek*/,
311  1 /*onDayOfMonth*/,
312  8 /*atTimeCode*/,
313  's' /*atTimeModifier*/,
314  4 /*deltaCode*/,
315  'D' /*letter*/,
316  },
317  // Rule AT 1991 2005 - Mar lastSun 2:00s 0 S
318  {
319  -9 /*fromYearTiny*/,
320  5 /*toYearTiny*/,
321  3 /*inMonth*/,
322  7 /*onDayOfWeek*/,
323  0 /*onDayOfMonth*/,
324  8 /*atTimeCode*/,
325  's' /*atTimeModifier*/,
326  0 /*deltaCode*/,
327  'S' /*letter*/,
328  },
329  // Rule AT 2000 only - Aug lastSun 2:00s 1:00 D
330  {
331  0 /*fromYearTiny*/,
332  0 /*toYearTiny*/,
333  8 /*inMonth*/,
334  7 /*onDayOfWeek*/,
335  0 /*onDayOfMonth*/,
336  8 /*atTimeCode*/,
337  's' /*atTimeModifier*/,
338  4 /*deltaCode*/,
339  'D' /*letter*/,
340  },
341  // Rule AT 2001 max - Oct Sun>=1 2:00s 1:00 D
342  {
343  1 /*fromYearTiny*/,
344  126 /*toYearTiny*/,
345  10 /*inMonth*/,
346  7 /*onDayOfWeek*/,
347  1 /*onDayOfMonth*/,
348  8 /*atTimeCode*/,
349  's' /*atTimeModifier*/,
350  4 /*deltaCode*/,
351  'D' /*letter*/,
352  },
353  // Rule AT 2006 only - Apr Sun>=1 2:00s 0 S
354  {
355  6 /*fromYearTiny*/,
356  6 /*toYearTiny*/,
357  4 /*inMonth*/,
358  7 /*onDayOfWeek*/,
359  1 /*onDayOfMonth*/,
360  8 /*atTimeCode*/,
361  's' /*atTimeModifier*/,
362  0 /*deltaCode*/,
363  'S' /*letter*/,
364  },
365  // Rule AT 2007 only - Mar lastSun 2:00s 0 S
366  {
367  7 /*fromYearTiny*/,
368  7 /*toYearTiny*/,
369  3 /*inMonth*/,
370  7 /*onDayOfWeek*/,
371  0 /*onDayOfMonth*/,
372  8 /*atTimeCode*/,
373  's' /*atTimeModifier*/,
374  0 /*deltaCode*/,
375  'S' /*letter*/,
376  },
377  // Rule AT 2008 max - Apr Sun>=1 2:00s 0 S
378  {
379  8 /*fromYearTiny*/,
380  126 /*toYearTiny*/,
381  4 /*inMonth*/,
382  7 /*onDayOfWeek*/,
383  1 /*onDayOfMonth*/,
384  8 /*atTimeCode*/,
385  's' /*atTimeModifier*/,
386  0 /*deltaCode*/,
387  'S' /*letter*/,
388  },
389 
390 };
391 
392 
393 
394 const basic::ZonePolicy kPolicyAT ACE_TIME_PROGMEM = {
395  kZoneRulesAT /*rules*/,
396  nullptr /* letters */,
397  8 /*numRules*/,
398  0 /* numLetters */,
399 };
400 
401 //---------------------------------------------------------------------------
402 // Policy name: AV
403 // Rules: 9
404 // Memory (8-bit): 87
405 // Memory (32-bit): 120
406 //---------------------------------------------------------------------------
407 
408 static const basic::ZoneRule kZoneRulesAV[] ACE_TIME_PROGMEM = {
409  // Rule AV 1988 1999 - Oct lastSun 2:00s 1:00 D
410  {
411  -12 /*fromYearTiny*/,
412  -1 /*toYearTiny*/,
413  10 /*inMonth*/,
414  7 /*onDayOfWeek*/,
415  0 /*onDayOfMonth*/,
416  8 /*atTimeCode*/,
417  's' /*atTimeModifier*/,
418  4 /*deltaCode*/,
419  'D' /*letter*/,
420  },
421  // Rule AV 1991 1994 - Mar Sun>=1 2:00s 0 S
422  {
423  -9 /*fromYearTiny*/,
424  -6 /*toYearTiny*/,
425  3 /*inMonth*/,
426  7 /*onDayOfWeek*/,
427  1 /*onDayOfMonth*/,
428  8 /*atTimeCode*/,
429  's' /*atTimeModifier*/,
430  0 /*deltaCode*/,
431  'S' /*letter*/,
432  },
433  // Rule AV 1995 2005 - Mar lastSun 2:00s 0 S
434  {
435  -5 /*fromYearTiny*/,
436  5 /*toYearTiny*/,
437  3 /*inMonth*/,
438  7 /*onDayOfWeek*/,
439  0 /*onDayOfMonth*/,
440  8 /*atTimeCode*/,
441  's' /*atTimeModifier*/,
442  0 /*deltaCode*/,
443  'S' /*letter*/,
444  },
445  // Rule AV 2000 only - Aug lastSun 2:00s 1:00 D
446  {
447  0 /*fromYearTiny*/,
448  0 /*toYearTiny*/,
449  8 /*inMonth*/,
450  7 /*onDayOfWeek*/,
451  0 /*onDayOfMonth*/,
452  8 /*atTimeCode*/,
453  's' /*atTimeModifier*/,
454  4 /*deltaCode*/,
455  'D' /*letter*/,
456  },
457  // Rule AV 2001 2007 - Oct lastSun 2:00s 1:00 D
458  {
459  1 /*fromYearTiny*/,
460  7 /*toYearTiny*/,
461  10 /*inMonth*/,
462  7 /*onDayOfWeek*/,
463  0 /*onDayOfMonth*/,
464  8 /*atTimeCode*/,
465  's' /*atTimeModifier*/,
466  4 /*deltaCode*/,
467  'D' /*letter*/,
468  },
469  // Rule AV 2006 only - Apr Sun>=1 2:00s 0 S
470  {
471  6 /*fromYearTiny*/,
472  6 /*toYearTiny*/,
473  4 /*inMonth*/,
474  7 /*onDayOfWeek*/,
475  1 /*onDayOfMonth*/,
476  8 /*atTimeCode*/,
477  's' /*atTimeModifier*/,
478  0 /*deltaCode*/,
479  'S' /*letter*/,
480  },
481  // Rule AV 2007 only - Mar lastSun 2:00s 0 S
482  {
483  7 /*fromYearTiny*/,
484  7 /*toYearTiny*/,
485  3 /*inMonth*/,
486  7 /*onDayOfWeek*/,
487  0 /*onDayOfMonth*/,
488  8 /*atTimeCode*/,
489  's' /*atTimeModifier*/,
490  0 /*deltaCode*/,
491  'S' /*letter*/,
492  },
493  // Rule AV 2008 max - Apr Sun>=1 2:00s 0 S
494  {
495  8 /*fromYearTiny*/,
496  126 /*toYearTiny*/,
497  4 /*inMonth*/,
498  7 /*onDayOfWeek*/,
499  1 /*onDayOfMonth*/,
500  8 /*atTimeCode*/,
501  's' /*atTimeModifier*/,
502  0 /*deltaCode*/,
503  'S' /*letter*/,
504  },
505  // Rule AV 2008 max - Oct Sun>=1 2:00s 1:00 D
506  {
507  8 /*fromYearTiny*/,
508  126 /*toYearTiny*/,
509  10 /*inMonth*/,
510  7 /*onDayOfWeek*/,
511  1 /*onDayOfMonth*/,
512  8 /*atTimeCode*/,
513  's' /*atTimeModifier*/,
514  4 /*deltaCode*/,
515  'D' /*letter*/,
516  },
517 
518 };
519 
520 
521 
522 const basic::ZonePolicy kPolicyAV ACE_TIME_PROGMEM = {
523  kZoneRulesAV /*rules*/,
524  nullptr /* letters */,
525  9 /*numRules*/,
526  0 /* numLetters */,
527 };
528 
529 //---------------------------------------------------------------------------
530 // Policy name: AW
531 // Rules: 4
532 // Memory (8-bit): 42
533 // Memory (32-bit): 60
534 //---------------------------------------------------------------------------
535 
536 static const basic::ZoneRule kZoneRulesAW[] ACE_TIME_PROGMEM = {
537  // Rule AW 1992 only - Mar Sun>=1 2:00s 0 S
538  {
539  -8 /*fromYearTiny*/,
540  -8 /*toYearTiny*/,
541  3 /*inMonth*/,
542  7 /*onDayOfWeek*/,
543  1 /*onDayOfMonth*/,
544  8 /*atTimeCode*/,
545  's' /*atTimeModifier*/,
546  0 /*deltaCode*/,
547  'S' /*letter*/,
548  },
549  // Rule AW 2006 only - Dec 3 2:00s 1:00 D
550  {
551  6 /*fromYearTiny*/,
552  6 /*toYearTiny*/,
553  12 /*inMonth*/,
554  0 /*onDayOfWeek*/,
555  3 /*onDayOfMonth*/,
556  8 /*atTimeCode*/,
557  's' /*atTimeModifier*/,
558  4 /*deltaCode*/,
559  'D' /*letter*/,
560  },
561  // Rule AW 2007 2009 - Mar lastSun 2:00s 0 S
562  {
563  7 /*fromYearTiny*/,
564  9 /*toYearTiny*/,
565  3 /*inMonth*/,
566  7 /*onDayOfWeek*/,
567  0 /*onDayOfMonth*/,
568  8 /*atTimeCode*/,
569  's' /*atTimeModifier*/,
570  0 /*deltaCode*/,
571  'S' /*letter*/,
572  },
573  // Rule AW 2007 2008 - Oct lastSun 2:00s 1:00 D
574  {
575  7 /*fromYearTiny*/,
576  8 /*toYearTiny*/,
577  10 /*inMonth*/,
578  7 /*onDayOfWeek*/,
579  0 /*onDayOfMonth*/,
580  8 /*atTimeCode*/,
581  's' /*atTimeModifier*/,
582  4 /*deltaCode*/,
583  'D' /*letter*/,
584  },
585 
586 };
587 
588 
589 
590 const basic::ZonePolicy kPolicyAW ACE_TIME_PROGMEM = {
591  kZoneRulesAW /*rules*/,
592  nullptr /* letters */,
593  4 /*numRules*/,
594  0 /* numLetters */,
595 };
596 
597 //---------------------------------------------------------------------------
598 // Policy name: Armenia
599 // Rules: 3
600 // Memory (8-bit): 33
601 // Memory (32-bit): 48
602 //---------------------------------------------------------------------------
603 
604 static const basic::ZoneRule kZoneRulesArmenia[] ACE_TIME_PROGMEM = {
605  // Anchor: Rule Armenia 2011 only - Oct lastSun 2:00s 0 -
606  {
607  -127 /*fromYearTiny*/,
608  -127 /*toYearTiny*/,
609  1 /*inMonth*/,
610  0 /*onDayOfWeek*/,
611  1 /*onDayOfMonth*/,
612  0 /*atTimeCode*/,
613  'w' /*atTimeModifier*/,
614  0 /*deltaCode*/,
615  '-' /*letter*/,
616  },
617  // Rule Armenia 2011 only - Mar lastSun 2:00s 1:00 -
618  {
619  11 /*fromYearTiny*/,
620  11 /*toYearTiny*/,
621  3 /*inMonth*/,
622  7 /*onDayOfWeek*/,
623  0 /*onDayOfMonth*/,
624  8 /*atTimeCode*/,
625  's' /*atTimeModifier*/,
626  4 /*deltaCode*/,
627  '-' /*letter*/,
628  },
629  // Rule Armenia 2011 only - Oct lastSun 2:00s 0 -
630  {
631  11 /*fromYearTiny*/,
632  11 /*toYearTiny*/,
633  10 /*inMonth*/,
634  7 /*onDayOfWeek*/,
635  0 /*onDayOfMonth*/,
636  8 /*atTimeCode*/,
637  's' /*atTimeModifier*/,
638  0 /*deltaCode*/,
639  '-' /*letter*/,
640  },
641 
642 };
643 
644 
645 
646 const basic::ZonePolicy kPolicyArmenia ACE_TIME_PROGMEM = {
647  kZoneRulesArmenia /*rules*/,
648  nullptr /* letters */,
649  3 /*numRules*/,
650  0 /* numLetters */,
651 };
652 
653 //---------------------------------------------------------------------------
654 // Policy name: Aus
655 // Rules: 1
656 // Memory (8-bit): 15
657 // Memory (32-bit): 24
658 //---------------------------------------------------------------------------
659 
660 static const basic::ZoneRule kZoneRulesAus[] ACE_TIME_PROGMEM = {
661  // Rule Aus 1943 1944 - Mar lastSun 2:00 0 S
662  {
663  -57 /*fromYearTiny*/,
664  -56 /*toYearTiny*/,
665  3 /*inMonth*/,
666  7 /*onDayOfWeek*/,
667  0 /*onDayOfMonth*/,
668  8 /*atTimeCode*/,
669  'w' /*atTimeModifier*/,
670  0 /*deltaCode*/,
671  'S' /*letter*/,
672  },
673 
674 };
675 
676 
677 
678 const basic::ZonePolicy kPolicyAus ACE_TIME_PROGMEM = {
679  kZoneRulesAus /*rules*/,
680  nullptr /* letters */,
681  1 /*numRules*/,
682  0 /* numLetters */,
683 };
684 
685 //---------------------------------------------------------------------------
686 // Policy name: Azer
687 // Rules: 2
688 // Memory (8-bit): 24
689 // Memory (32-bit): 36
690 //---------------------------------------------------------------------------
691 
692 static const basic::ZoneRule kZoneRulesAzer[] ACE_TIME_PROGMEM = {
693  // Rule Azer 1997 2015 - Mar lastSun 4:00 1:00 -
694  {
695  -3 /*fromYearTiny*/,
696  15 /*toYearTiny*/,
697  3 /*inMonth*/,
698  7 /*onDayOfWeek*/,
699  0 /*onDayOfMonth*/,
700  16 /*atTimeCode*/,
701  'w' /*atTimeModifier*/,
702  4 /*deltaCode*/,
703  '-' /*letter*/,
704  },
705  // Rule Azer 1997 2015 - Oct lastSun 5:00 0 -
706  {
707  -3 /*fromYearTiny*/,
708  15 /*toYearTiny*/,
709  10 /*inMonth*/,
710  7 /*onDayOfWeek*/,
711  0 /*onDayOfMonth*/,
712  20 /*atTimeCode*/,
713  'w' /*atTimeModifier*/,
714  0 /*deltaCode*/,
715  '-' /*letter*/,
716  },
717 
718 };
719 
720 
721 
722 const basic::ZonePolicy kPolicyAzer ACE_TIME_PROGMEM = {
723  kZoneRulesAzer /*rules*/,
724  nullptr /* letters */,
725  2 /*numRules*/,
726  0 /* numLetters */,
727 };
728 
729 //---------------------------------------------------------------------------
730 // Policy name: Barb
731 // Rules: 1
732 // Memory (8-bit): 15
733 // Memory (32-bit): 24
734 //---------------------------------------------------------------------------
735 
736 static const basic::ZoneRule kZoneRulesBarb[] ACE_TIME_PROGMEM = {
737  // Rule Barb 1980 only - Sep 25 2:00 0 S
738  {
739  -20 /*fromYearTiny*/,
740  -20 /*toYearTiny*/,
741  9 /*inMonth*/,
742  0 /*onDayOfWeek*/,
743  25 /*onDayOfMonth*/,
744  8 /*atTimeCode*/,
745  'w' /*atTimeModifier*/,
746  0 /*deltaCode*/,
747  'S' /*letter*/,
748  },
749 
750 };
751 
752 
753 
754 const basic::ZonePolicy kPolicyBarb ACE_TIME_PROGMEM = {
755  kZoneRulesBarb /*rules*/,
756  nullptr /* letters */,
757  1 /*numRules*/,
758  0 /* numLetters */,
759 };
760 
761 //---------------------------------------------------------------------------
762 // Policy name: Brazil
763 // Rules: 28
764 // Memory (8-bit): 258
765 // Memory (32-bit): 348
766 //---------------------------------------------------------------------------
767 
768 static const basic::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = {
769  // Rule Brazil 1998 only - Oct 11 0:00 1:00 -
770  {
771  -2 /*fromYearTiny*/,
772  -2 /*toYearTiny*/,
773  10 /*inMonth*/,
774  0 /*onDayOfWeek*/,
775  11 /*onDayOfMonth*/,
776  0 /*atTimeCode*/,
777  'w' /*atTimeModifier*/,
778  4 /*deltaCode*/,
779  '-' /*letter*/,
780  },
781  // Rule Brazil 1999 only - Feb 21 0:00 0 -
782  {
783  -1 /*fromYearTiny*/,
784  -1 /*toYearTiny*/,
785  2 /*inMonth*/,
786  0 /*onDayOfWeek*/,
787  21 /*onDayOfMonth*/,
788  0 /*atTimeCode*/,
789  'w' /*atTimeModifier*/,
790  0 /*deltaCode*/,
791  '-' /*letter*/,
792  },
793  // Rule Brazil 1999 only - Oct 3 0:00 1:00 -
794  {
795  -1 /*fromYearTiny*/,
796  -1 /*toYearTiny*/,
797  10 /*inMonth*/,
798  0 /*onDayOfWeek*/,
799  3 /*onDayOfMonth*/,
800  0 /*atTimeCode*/,
801  'w' /*atTimeModifier*/,
802  4 /*deltaCode*/,
803  '-' /*letter*/,
804  },
805  // Rule Brazil 2000 only - Feb 27 0:00 0 -
806  {
807  0 /*fromYearTiny*/,
808  0 /*toYearTiny*/,
809  2 /*inMonth*/,
810  0 /*onDayOfWeek*/,
811  27 /*onDayOfMonth*/,
812  0 /*atTimeCode*/,
813  'w' /*atTimeModifier*/,
814  0 /*deltaCode*/,
815  '-' /*letter*/,
816  },
817  // Rule Brazil 2000 2001 - Oct Sun>=8 0:00 1:00 -
818  {
819  0 /*fromYearTiny*/,
820  1 /*toYearTiny*/,
821  10 /*inMonth*/,
822  7 /*onDayOfWeek*/,
823  8 /*onDayOfMonth*/,
824  0 /*atTimeCode*/,
825  'w' /*atTimeModifier*/,
826  4 /*deltaCode*/,
827  '-' /*letter*/,
828  },
829  // Rule Brazil 2001 2006 - Feb Sun>=15 0:00 0 -
830  {
831  1 /*fromYearTiny*/,
832  6 /*toYearTiny*/,
833  2 /*inMonth*/,
834  7 /*onDayOfWeek*/,
835  15 /*onDayOfMonth*/,
836  0 /*atTimeCode*/,
837  'w' /*atTimeModifier*/,
838  0 /*deltaCode*/,
839  '-' /*letter*/,
840  },
841  // Rule Brazil 2002 only - Nov 3 0:00 1:00 -
842  {
843  2 /*fromYearTiny*/,
844  2 /*toYearTiny*/,
845  11 /*inMonth*/,
846  0 /*onDayOfWeek*/,
847  3 /*onDayOfMonth*/,
848  0 /*atTimeCode*/,
849  'w' /*atTimeModifier*/,
850  4 /*deltaCode*/,
851  '-' /*letter*/,
852  },
853  // Rule Brazil 2003 only - Oct 19 0:00 1:00 -
854  {
855  3 /*fromYearTiny*/,
856  3 /*toYearTiny*/,
857  10 /*inMonth*/,
858  0 /*onDayOfWeek*/,
859  19 /*onDayOfMonth*/,
860  0 /*atTimeCode*/,
861  'w' /*atTimeModifier*/,
862  4 /*deltaCode*/,
863  '-' /*letter*/,
864  },
865  // Rule Brazil 2004 only - Nov 2 0:00 1:00 -
866  {
867  4 /*fromYearTiny*/,
868  4 /*toYearTiny*/,
869  11 /*inMonth*/,
870  0 /*onDayOfWeek*/,
871  2 /*onDayOfMonth*/,
872  0 /*atTimeCode*/,
873  'w' /*atTimeModifier*/,
874  4 /*deltaCode*/,
875  '-' /*letter*/,
876  },
877  // Rule Brazil 2005 only - Oct 16 0:00 1:00 -
878  {
879  5 /*fromYearTiny*/,
880  5 /*toYearTiny*/,
881  10 /*inMonth*/,
882  0 /*onDayOfWeek*/,
883  16 /*onDayOfMonth*/,
884  0 /*atTimeCode*/,
885  'w' /*atTimeModifier*/,
886  4 /*deltaCode*/,
887  '-' /*letter*/,
888  },
889  // Rule Brazil 2006 only - Nov 5 0:00 1:00 -
890  {
891  6 /*fromYearTiny*/,
892  6 /*toYearTiny*/,
893  11 /*inMonth*/,
894  0 /*onDayOfWeek*/,
895  5 /*onDayOfMonth*/,
896  0 /*atTimeCode*/,
897  'w' /*atTimeModifier*/,
898  4 /*deltaCode*/,
899  '-' /*letter*/,
900  },
901  // Rule Brazil 2007 only - Feb 25 0:00 0 -
902  {
903  7 /*fromYearTiny*/,
904  7 /*toYearTiny*/,
905  2 /*inMonth*/,
906  0 /*onDayOfWeek*/,
907  25 /*onDayOfMonth*/,
908  0 /*atTimeCode*/,
909  'w' /*atTimeModifier*/,
910  0 /*deltaCode*/,
911  '-' /*letter*/,
912  },
913  // Rule Brazil 2007 only - Oct Sun>=8 0:00 1:00 -
914  {
915  7 /*fromYearTiny*/,
916  7 /*toYearTiny*/,
917  10 /*inMonth*/,
918  7 /*onDayOfWeek*/,
919  8 /*onDayOfMonth*/,
920  0 /*atTimeCode*/,
921  'w' /*atTimeModifier*/,
922  4 /*deltaCode*/,
923  '-' /*letter*/,
924  },
925  // Rule Brazil 2008 2017 - Oct Sun>=15 0:00 1:00 -
926  {
927  8 /*fromYearTiny*/,
928  17 /*toYearTiny*/,
929  10 /*inMonth*/,
930  7 /*onDayOfWeek*/,
931  15 /*onDayOfMonth*/,
932  0 /*atTimeCode*/,
933  'w' /*atTimeModifier*/,
934  4 /*deltaCode*/,
935  '-' /*letter*/,
936  },
937  // Rule Brazil 2008 2011 - Feb Sun>=15 0:00 0 -
938  {
939  8 /*fromYearTiny*/,
940  11 /*toYearTiny*/,
941  2 /*inMonth*/,
942  7 /*onDayOfWeek*/,
943  15 /*onDayOfMonth*/,
944  0 /*atTimeCode*/,
945  'w' /*atTimeModifier*/,
946  0 /*deltaCode*/,
947  '-' /*letter*/,
948  },
949  // Rule Brazil 2012 only - Feb Sun>=22 0:00 0 -
950  {
951  12 /*fromYearTiny*/,
952  12 /*toYearTiny*/,
953  2 /*inMonth*/,
954  7 /*onDayOfWeek*/,
955  22 /*onDayOfMonth*/,
956  0 /*atTimeCode*/,
957  'w' /*atTimeModifier*/,
958  0 /*deltaCode*/,
959  '-' /*letter*/,
960  },
961  // Rule Brazil 2013 2014 - Feb Sun>=15 0:00 0 -
962  {
963  13 /*fromYearTiny*/,
964  14 /*toYearTiny*/,
965  2 /*inMonth*/,
966  7 /*onDayOfWeek*/,
967  15 /*onDayOfMonth*/,
968  0 /*atTimeCode*/,
969  'w' /*atTimeModifier*/,
970  0 /*deltaCode*/,
971  '-' /*letter*/,
972  },
973  // Rule Brazil 2015 only - Feb Sun>=22 0:00 0 -
974  {
975  15 /*fromYearTiny*/,
976  15 /*toYearTiny*/,
977  2 /*inMonth*/,
978  7 /*onDayOfWeek*/,
979  22 /*onDayOfMonth*/,
980  0 /*atTimeCode*/,
981  'w' /*atTimeModifier*/,
982  0 /*deltaCode*/,
983  '-' /*letter*/,
984  },
985  // Rule Brazil 2016 2022 - Feb Sun>=15 0:00 0 -
986  {
987  16 /*fromYearTiny*/,
988  22 /*toYearTiny*/,
989  2 /*inMonth*/,
990  7 /*onDayOfWeek*/,
991  15 /*onDayOfMonth*/,
992  0 /*atTimeCode*/,
993  'w' /*atTimeModifier*/,
994  0 /*deltaCode*/,
995  '-' /*letter*/,
996  },
997  // Rule Brazil 2018 max - Nov Sun>=1 0:00 1:00 -
998  {
999  18 /*fromYearTiny*/,
1000  126 /*toYearTiny*/,
1001  11 /*inMonth*/,
1002  7 /*onDayOfWeek*/,
1003  1 /*onDayOfMonth*/,
1004  0 /*atTimeCode*/,
1005  'w' /*atTimeModifier*/,
1006  4 /*deltaCode*/,
1007  '-' /*letter*/,
1008  },
1009  // Rule Brazil 2023 only - Feb Sun>=22 0:00 0 -
1010  {
1011  23 /*fromYearTiny*/,
1012  23 /*toYearTiny*/,
1013  2 /*inMonth*/,
1014  7 /*onDayOfWeek*/,
1015  22 /*onDayOfMonth*/,
1016  0 /*atTimeCode*/,
1017  'w' /*atTimeModifier*/,
1018  0 /*deltaCode*/,
1019  '-' /*letter*/,
1020  },
1021  // Rule Brazil 2024 2025 - Feb Sun>=15 0:00 0 -
1022  {
1023  24 /*fromYearTiny*/,
1024  25 /*toYearTiny*/,
1025  2 /*inMonth*/,
1026  7 /*onDayOfWeek*/,
1027  15 /*onDayOfMonth*/,
1028  0 /*atTimeCode*/,
1029  'w' /*atTimeModifier*/,
1030  0 /*deltaCode*/,
1031  '-' /*letter*/,
1032  },
1033  // Rule Brazil 2026 only - Feb Sun>=22 0:00 0 -
1034  {
1035  26 /*fromYearTiny*/,
1036  26 /*toYearTiny*/,
1037  2 /*inMonth*/,
1038  7 /*onDayOfWeek*/,
1039  22 /*onDayOfMonth*/,
1040  0 /*atTimeCode*/,
1041  'w' /*atTimeModifier*/,
1042  0 /*deltaCode*/,
1043  '-' /*letter*/,
1044  },
1045  // Rule Brazil 2027 2033 - Feb Sun>=15 0:00 0 -
1046  {
1047  27 /*fromYearTiny*/,
1048  33 /*toYearTiny*/,
1049  2 /*inMonth*/,
1050  7 /*onDayOfWeek*/,
1051  15 /*onDayOfMonth*/,
1052  0 /*atTimeCode*/,
1053  'w' /*atTimeModifier*/,
1054  0 /*deltaCode*/,
1055  '-' /*letter*/,
1056  },
1057  // Rule Brazil 2034 only - Feb Sun>=22 0:00 0 -
1058  {
1059  34 /*fromYearTiny*/,
1060  34 /*toYearTiny*/,
1061  2 /*inMonth*/,
1062  7 /*onDayOfWeek*/,
1063  22 /*onDayOfMonth*/,
1064  0 /*atTimeCode*/,
1065  'w' /*atTimeModifier*/,
1066  0 /*deltaCode*/,
1067  '-' /*letter*/,
1068  },
1069  // Rule Brazil 2035 2036 - Feb Sun>=15 0:00 0 -
1070  {
1071  35 /*fromYearTiny*/,
1072  36 /*toYearTiny*/,
1073  2 /*inMonth*/,
1074  7 /*onDayOfWeek*/,
1075  15 /*onDayOfMonth*/,
1076  0 /*atTimeCode*/,
1077  'w' /*atTimeModifier*/,
1078  0 /*deltaCode*/,
1079  '-' /*letter*/,
1080  },
1081  // Rule Brazil 2037 only - Feb Sun>=22 0:00 0 -
1082  {
1083  37 /*fromYearTiny*/,
1084  37 /*toYearTiny*/,
1085  2 /*inMonth*/,
1086  7 /*onDayOfWeek*/,
1087  22 /*onDayOfMonth*/,
1088  0 /*atTimeCode*/,
1089  'w' /*atTimeModifier*/,
1090  0 /*deltaCode*/,
1091  '-' /*letter*/,
1092  },
1093  // Rule Brazil 2038 max - Feb Sun>=15 0:00 0 -
1094  {
1095  38 /*fromYearTiny*/,
1096  126 /*toYearTiny*/,
1097  2 /*inMonth*/,
1098  7 /*onDayOfWeek*/,
1099  15 /*onDayOfMonth*/,
1100  0 /*atTimeCode*/,
1101  'w' /*atTimeModifier*/,
1102  0 /*deltaCode*/,
1103  '-' /*letter*/,
1104  },
1105 
1106 };
1107 
1108 
1109 
1110 const basic::ZonePolicy kPolicyBrazil ACE_TIME_PROGMEM = {
1111  kZoneRulesBrazil /*rules*/,
1112  nullptr /* letters */,
1113  28 /*numRules*/,
1114  0 /* numLetters */,
1115 };
1116 
1117 //---------------------------------------------------------------------------
1118 // Policy name: C_Eur
1119 // Rules: 3
1120 // Memory (8-bit): 33
1121 // Memory (32-bit): 48
1122 //---------------------------------------------------------------------------
1123 
1124 static const basic::ZoneRule kZoneRulesC_Eur[] ACE_TIME_PROGMEM = {
1125  // Rule C-Eur 1979 1995 - Sep lastSun 2:00s 0 -
1126  {
1127  -21 /*fromYearTiny*/,
1128  -5 /*toYearTiny*/,
1129  9 /*inMonth*/,
1130  7 /*onDayOfWeek*/,
1131  0 /*onDayOfMonth*/,
1132  8 /*atTimeCode*/,
1133  's' /*atTimeModifier*/,
1134  0 /*deltaCode*/,
1135  '-' /*letter*/,
1136  },
1137  // Rule C-Eur 1981 max - Mar lastSun 2:00s 1:00 S
1138  {
1139  -19 /*fromYearTiny*/,
1140  126 /*toYearTiny*/,
1141  3 /*inMonth*/,
1142  7 /*onDayOfWeek*/,
1143  0 /*onDayOfMonth*/,
1144  8 /*atTimeCode*/,
1145  's' /*atTimeModifier*/,
1146  4 /*deltaCode*/,
1147  'S' /*letter*/,
1148  },
1149  // Rule C-Eur 1996 max - Oct lastSun 2:00s 0 -
1150  {
1151  -4 /*fromYearTiny*/,
1152  126 /*toYearTiny*/,
1153  10 /*inMonth*/,
1154  7 /*onDayOfWeek*/,
1155  0 /*onDayOfMonth*/,
1156  8 /*atTimeCode*/,
1157  's' /*atTimeModifier*/,
1158  0 /*deltaCode*/,
1159  '-' /*letter*/,
1160  },
1161 
1162 };
1163 
1164 
1165 
1166 const basic::ZonePolicy kPolicyC_Eur ACE_TIME_PROGMEM = {
1167  kZoneRulesC_Eur /*rules*/,
1168  nullptr /* letters */,
1169  3 /*numRules*/,
1170  0 /* numLetters */,
1171 };
1172 
1173 //---------------------------------------------------------------------------
1174 // Policy name: CO
1175 // Rules: 1
1176 // Memory (8-bit): 15
1177 // Memory (32-bit): 24
1178 //---------------------------------------------------------------------------
1179 
1180 static const basic::ZoneRule kZoneRulesCO[] ACE_TIME_PROGMEM = {
1181  // Rule CO 1993 only - Apr 4 0:00 0 -
1182  {
1183  -7 /*fromYearTiny*/,
1184  -7 /*toYearTiny*/,
1185  4 /*inMonth*/,
1186  0 /*onDayOfWeek*/,
1187  4 /*onDayOfMonth*/,
1188  0 /*atTimeCode*/,
1189  'w' /*atTimeModifier*/,
1190  0 /*deltaCode*/,
1191  '-' /*letter*/,
1192  },
1193 
1194 };
1195 
1196 
1197 
1198 const basic::ZonePolicy kPolicyCO ACE_TIME_PROGMEM = {
1199  kZoneRulesCO /*rules*/,
1200  nullptr /* letters */,
1201  1 /*numRules*/,
1202  0 /* numLetters */,
1203 };
1204 
1205 //---------------------------------------------------------------------------
1206 // Policy name: CR
1207 // Rules: 1
1208 // Memory (8-bit): 15
1209 // Memory (32-bit): 24
1210 //---------------------------------------------------------------------------
1211 
1212 static const basic::ZoneRule kZoneRulesCR[] ACE_TIME_PROGMEM = {
1213  // Rule CR 1992 only - Mar 15 0:00 0 S
1214  {
1215  -8 /*fromYearTiny*/,
1216  -8 /*toYearTiny*/,
1217  3 /*inMonth*/,
1218  0 /*onDayOfWeek*/,
1219  15 /*onDayOfMonth*/,
1220  0 /*atTimeCode*/,
1221  'w' /*atTimeModifier*/,
1222  0 /*deltaCode*/,
1223  'S' /*letter*/,
1224  },
1225 
1226 };
1227 
1228 
1229 
1230 const basic::ZonePolicy kPolicyCR ACE_TIME_PROGMEM = {
1231  kZoneRulesCR /*rules*/,
1232  nullptr /* letters */,
1233  1 /*numRules*/,
1234  0 /* numLetters */,
1235 };
1236 
1237 //---------------------------------------------------------------------------
1238 // Policy name: Canada
1239 // Rules: 5
1240 // Memory (8-bit): 51
1241 // Memory (32-bit): 72
1242 //---------------------------------------------------------------------------
1243 
1244 static const basic::ZoneRule kZoneRulesCanada[] ACE_TIME_PROGMEM = {
1245  // Rule Canada 1974 1986 - Apr lastSun 2:00 1:00 D
1246  {
1247  -26 /*fromYearTiny*/,
1248  -14 /*toYearTiny*/,
1249  4 /*inMonth*/,
1250  7 /*onDayOfWeek*/,
1251  0 /*onDayOfMonth*/,
1252  8 /*atTimeCode*/,
1253  'w' /*atTimeModifier*/,
1254  4 /*deltaCode*/,
1255  'D' /*letter*/,
1256  },
1257  // Rule Canada 1974 2006 - Oct lastSun 2:00 0 S
1258  {
1259  -26 /*fromYearTiny*/,
1260  6 /*toYearTiny*/,
1261  10 /*inMonth*/,
1262  7 /*onDayOfWeek*/,
1263  0 /*onDayOfMonth*/,
1264  8 /*atTimeCode*/,
1265  'w' /*atTimeModifier*/,
1266  0 /*deltaCode*/,
1267  'S' /*letter*/,
1268  },
1269  // Rule Canada 1987 2006 - Apr Sun>=1 2:00 1:00 D
1270  {
1271  -13 /*fromYearTiny*/,
1272  6 /*toYearTiny*/,
1273  4 /*inMonth*/,
1274  7 /*onDayOfWeek*/,
1275  1 /*onDayOfMonth*/,
1276  8 /*atTimeCode*/,
1277  'w' /*atTimeModifier*/,
1278  4 /*deltaCode*/,
1279  'D' /*letter*/,
1280  },
1281  // Rule Canada 2007 max - Mar Sun>=8 2:00 1:00 D
1282  {
1283  7 /*fromYearTiny*/,
1284  126 /*toYearTiny*/,
1285  3 /*inMonth*/,
1286  7 /*onDayOfWeek*/,
1287  8 /*onDayOfMonth*/,
1288  8 /*atTimeCode*/,
1289  'w' /*atTimeModifier*/,
1290  4 /*deltaCode*/,
1291  'D' /*letter*/,
1292  },
1293  // Rule Canada 2007 max - Nov Sun>=1 2:00 0 S
1294  {
1295  7 /*fromYearTiny*/,
1296  126 /*toYearTiny*/,
1297  11 /*inMonth*/,
1298  7 /*onDayOfWeek*/,
1299  1 /*onDayOfMonth*/,
1300  8 /*atTimeCode*/,
1301  'w' /*atTimeModifier*/,
1302  0 /*deltaCode*/,
1303  'S' /*letter*/,
1304  },
1305 
1306 };
1307 
1308 
1309 
1310 const basic::ZonePolicy kPolicyCanada ACE_TIME_PROGMEM = {
1311  kZoneRulesCanada /*rules*/,
1312  nullptr /* letters */,
1313  5 /*numRules*/,
1314  0 /* numLetters */,
1315 };
1316 
1317 //---------------------------------------------------------------------------
1318 // Policy name: Chatham
1319 // Rules: 5
1320 // Memory (8-bit): 51
1321 // Memory (32-bit): 72
1322 //---------------------------------------------------------------------------
1323 
1324 static const basic::ZoneRule kZoneRulesChatham[] ACE_TIME_PROGMEM = {
1325  // Rule Chatham 1989 only - Oct Sun>=8 2:45s 1:00 -
1326  {
1327  -11 /*fromYearTiny*/,
1328  -11 /*toYearTiny*/,
1329  10 /*inMonth*/,
1330  7 /*onDayOfWeek*/,
1331  8 /*onDayOfMonth*/,
1332  11 /*atTimeCode*/,
1333  's' /*atTimeModifier*/,
1334  4 /*deltaCode*/,
1335  '-' /*letter*/,
1336  },
1337  // Rule Chatham 1990 2006 - Oct Sun>=1 2:45s 1:00 -
1338  {
1339  -10 /*fromYearTiny*/,
1340  6 /*toYearTiny*/,
1341  10 /*inMonth*/,
1342  7 /*onDayOfWeek*/,
1343  1 /*onDayOfMonth*/,
1344  11 /*atTimeCode*/,
1345  's' /*atTimeModifier*/,
1346  4 /*deltaCode*/,
1347  '-' /*letter*/,
1348  },
1349  // Rule Chatham 1990 2007 - Mar Sun>=15 2:45s 0 -
1350  {
1351  -10 /*fromYearTiny*/,
1352  7 /*toYearTiny*/,
1353  3 /*inMonth*/,
1354  7 /*onDayOfWeek*/,
1355  15 /*onDayOfMonth*/,
1356  11 /*atTimeCode*/,
1357  's' /*atTimeModifier*/,
1358  0 /*deltaCode*/,
1359  '-' /*letter*/,
1360  },
1361  // Rule Chatham 2007 max - Sep lastSun 2:45s 1:00 -
1362  {
1363  7 /*fromYearTiny*/,
1364  126 /*toYearTiny*/,
1365  9 /*inMonth*/,
1366  7 /*onDayOfWeek*/,
1367  0 /*onDayOfMonth*/,
1368  11 /*atTimeCode*/,
1369  's' /*atTimeModifier*/,
1370  4 /*deltaCode*/,
1371  '-' /*letter*/,
1372  },
1373  // Rule Chatham 2008 max - Apr Sun>=1 2:45s 0 -
1374  {
1375  8 /*fromYearTiny*/,
1376  126 /*toYearTiny*/,
1377  4 /*inMonth*/,
1378  7 /*onDayOfWeek*/,
1379  1 /*onDayOfMonth*/,
1380  11 /*atTimeCode*/,
1381  's' /*atTimeModifier*/,
1382  0 /*deltaCode*/,
1383  '-' /*letter*/,
1384  },
1385 
1386 };
1387 
1388 
1389 
1390 const basic::ZonePolicy kPolicyChatham ACE_TIME_PROGMEM = {
1391  kZoneRulesChatham /*rules*/,
1392  nullptr /* letters */,
1393  5 /*numRules*/,
1394  0 /* numLetters */,
1395 };
1396 
1397 //---------------------------------------------------------------------------
1398 // Policy name: Chile
1399 // Rules: 15
1400 // Memory (8-bit): 141
1401 // Memory (32-bit): 192
1402 //---------------------------------------------------------------------------
1403 
1404 static const basic::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = {
1405  // Rule Chile 1998 only - Sep 27 4:00u 1:00 -
1406  {
1407  -2 /*fromYearTiny*/,
1408  -2 /*toYearTiny*/,
1409  9 /*inMonth*/,
1410  0 /*onDayOfWeek*/,
1411  27 /*onDayOfMonth*/,
1412  16 /*atTimeCode*/,
1413  'u' /*atTimeModifier*/,
1414  4 /*deltaCode*/,
1415  '-' /*letter*/,
1416  },
1417  // Rule Chile 1999 only - Apr 4 3:00u 0 -
1418  {
1419  -1 /*fromYearTiny*/,
1420  -1 /*toYearTiny*/,
1421  4 /*inMonth*/,
1422  0 /*onDayOfWeek*/,
1423  4 /*onDayOfMonth*/,
1424  12 /*atTimeCode*/,
1425  'u' /*atTimeModifier*/,
1426  0 /*deltaCode*/,
1427  '-' /*letter*/,
1428  },
1429  // Rule Chile 1999 2010 - Oct Sun>=9 4:00u 1:00 -
1430  {
1431  -1 /*fromYearTiny*/,
1432  10 /*toYearTiny*/,
1433  10 /*inMonth*/,
1434  7 /*onDayOfWeek*/,
1435  9 /*onDayOfMonth*/,
1436  16 /*atTimeCode*/,
1437  'u' /*atTimeModifier*/,
1438  4 /*deltaCode*/,
1439  '-' /*letter*/,
1440  },
1441  // Rule Chile 2000 2007 - Mar Sun>=9 3:00u 0 -
1442  {
1443  0 /*fromYearTiny*/,
1444  7 /*toYearTiny*/,
1445  3 /*inMonth*/,
1446  7 /*onDayOfWeek*/,
1447  9 /*onDayOfMonth*/,
1448  12 /*atTimeCode*/,
1449  'u' /*atTimeModifier*/,
1450  0 /*deltaCode*/,
1451  '-' /*letter*/,
1452  },
1453  // Rule Chile 2008 only - Mar 30 3:00u 0 -
1454  {
1455  8 /*fromYearTiny*/,
1456  8 /*toYearTiny*/,
1457  3 /*inMonth*/,
1458  0 /*onDayOfWeek*/,
1459  30 /*onDayOfMonth*/,
1460  12 /*atTimeCode*/,
1461  'u' /*atTimeModifier*/,
1462  0 /*deltaCode*/,
1463  '-' /*letter*/,
1464  },
1465  // Rule Chile 2009 only - Mar Sun>=9 3:00u 0 -
1466  {
1467  9 /*fromYearTiny*/,
1468  9 /*toYearTiny*/,
1469  3 /*inMonth*/,
1470  7 /*onDayOfWeek*/,
1471  9 /*onDayOfMonth*/,
1472  12 /*atTimeCode*/,
1473  'u' /*atTimeModifier*/,
1474  0 /*deltaCode*/,
1475  '-' /*letter*/,
1476  },
1477  // Rule Chile 2010 only - Apr Sun>=1 3:00u 0 -
1478  {
1479  10 /*fromYearTiny*/,
1480  10 /*toYearTiny*/,
1481  4 /*inMonth*/,
1482  7 /*onDayOfWeek*/,
1483  1 /*onDayOfMonth*/,
1484  12 /*atTimeCode*/,
1485  'u' /*atTimeModifier*/,
1486  0 /*deltaCode*/,
1487  '-' /*letter*/,
1488  },
1489  // Rule Chile 2011 only - May Sun>=2 3:00u 0 -
1490  {
1491  11 /*fromYearTiny*/,
1492  11 /*toYearTiny*/,
1493  5 /*inMonth*/,
1494  7 /*onDayOfWeek*/,
1495  2 /*onDayOfMonth*/,
1496  12 /*atTimeCode*/,
1497  'u' /*atTimeModifier*/,
1498  0 /*deltaCode*/,
1499  '-' /*letter*/,
1500  },
1501  // Rule Chile 2011 only - Aug Sun>=16 4:00u 1:00 -
1502  {
1503  11 /*fromYearTiny*/,
1504  11 /*toYearTiny*/,
1505  8 /*inMonth*/,
1506  7 /*onDayOfWeek*/,
1507  16 /*onDayOfMonth*/,
1508  16 /*atTimeCode*/,
1509  'u' /*atTimeModifier*/,
1510  4 /*deltaCode*/,
1511  '-' /*letter*/,
1512  },
1513  // Rule Chile 2012 2014 - Apr Sun>=23 3:00u 0 -
1514  {
1515  12 /*fromYearTiny*/,
1516  14 /*toYearTiny*/,
1517  4 /*inMonth*/,
1518  7 /*onDayOfWeek*/,
1519  23 /*onDayOfMonth*/,
1520  12 /*atTimeCode*/,
1521  'u' /*atTimeModifier*/,
1522  0 /*deltaCode*/,
1523  '-' /*letter*/,
1524  },
1525  // Rule Chile 2012 2014 - Sep Sun>=2 4:00u 1:00 -
1526  {
1527  12 /*fromYearTiny*/,
1528  14 /*toYearTiny*/,
1529  9 /*inMonth*/,
1530  7 /*onDayOfWeek*/,
1531  2 /*onDayOfMonth*/,
1532  16 /*atTimeCode*/,
1533  'u' /*atTimeModifier*/,
1534  4 /*deltaCode*/,
1535  '-' /*letter*/,
1536  },
1537  // Rule Chile 2016 2018 - May Sun>=9 3:00u 0 -
1538  {
1539  16 /*fromYearTiny*/,
1540  18 /*toYearTiny*/,
1541  5 /*inMonth*/,
1542  7 /*onDayOfWeek*/,
1543  9 /*onDayOfMonth*/,
1544  12 /*atTimeCode*/,
1545  'u' /*atTimeModifier*/,
1546  0 /*deltaCode*/,
1547  '-' /*letter*/,
1548  },
1549  // Rule Chile 2016 2018 - Aug Sun>=9 4:00u 1:00 -
1550  {
1551  16 /*fromYearTiny*/,
1552  18 /*toYearTiny*/,
1553  8 /*inMonth*/,
1554  7 /*onDayOfWeek*/,
1555  9 /*onDayOfMonth*/,
1556  16 /*atTimeCode*/,
1557  'u' /*atTimeModifier*/,
1558  4 /*deltaCode*/,
1559  '-' /*letter*/,
1560  },
1561  // Rule Chile 2019 max - Apr Sun>=2 3:00u 0 -
1562  {
1563  19 /*fromYearTiny*/,
1564  126 /*toYearTiny*/,
1565  4 /*inMonth*/,
1566  7 /*onDayOfWeek*/,
1567  2 /*onDayOfMonth*/,
1568  12 /*atTimeCode*/,
1569  'u' /*atTimeModifier*/,
1570  0 /*deltaCode*/,
1571  '-' /*letter*/,
1572  },
1573  // Rule Chile 2019 max - Sep Sun>=2 4:00u 1:00 -
1574  {
1575  19 /*fromYearTiny*/,
1576  126 /*toYearTiny*/,
1577  9 /*inMonth*/,
1578  7 /*onDayOfWeek*/,
1579  2 /*onDayOfMonth*/,
1580  16 /*atTimeCode*/,
1581  'u' /*atTimeModifier*/,
1582  4 /*deltaCode*/,
1583  '-' /*letter*/,
1584  },
1585 
1586 };
1587 
1588 
1589 
1590 const basic::ZonePolicy kPolicyChile ACE_TIME_PROGMEM = {
1591  kZoneRulesChile /*rules*/,
1592  nullptr /* letters */,
1593  15 /*numRules*/,
1594  0 /* numLetters */,
1595 };
1596 
1597 //---------------------------------------------------------------------------
1598 // Policy name: Cook
1599 // Rules: 1
1600 // Memory (8-bit): 15
1601 // Memory (32-bit): 24
1602 //---------------------------------------------------------------------------
1603 
1604 static const basic::ZoneRule kZoneRulesCook[] ACE_TIME_PROGMEM = {
1605  // Rule Cook 1979 1991 - Mar Sun>=1 0:00 0 -
1606  {
1607  -21 /*fromYearTiny*/,
1608  -9 /*toYearTiny*/,
1609  3 /*inMonth*/,
1610  7 /*onDayOfWeek*/,
1611  1 /*onDayOfMonth*/,
1612  0 /*atTimeCode*/,
1613  'w' /*atTimeModifier*/,
1614  0 /*deltaCode*/,
1615  '-' /*letter*/,
1616  },
1617 
1618 };
1619 
1620 
1621 
1622 const basic::ZonePolicy kPolicyCook ACE_TIME_PROGMEM = {
1623  kZoneRulesCook /*rules*/,
1624  nullptr /* letters */,
1625  1 /*numRules*/,
1626  0 /* numLetters */,
1627 };
1628 
1629 //---------------------------------------------------------------------------
1630 // Policy name: Cuba
1631 // Rules: 14
1632 // Memory (8-bit): 132
1633 // Memory (32-bit): 180
1634 //---------------------------------------------------------------------------
1635 
1636 static const basic::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = {
1637  // Rule Cuba 1997 only - Oct 12 0:00s 0 S
1638  {
1639  -3 /*fromYearTiny*/,
1640  -3 /*toYearTiny*/,
1641  10 /*inMonth*/,
1642  0 /*onDayOfWeek*/,
1643  12 /*onDayOfMonth*/,
1644  0 /*atTimeCode*/,
1645  's' /*atTimeModifier*/,
1646  0 /*deltaCode*/,
1647  'S' /*letter*/,
1648  },
1649  // Rule Cuba 1998 1999 - Mar lastSun 0:00s 1:00 D
1650  {
1651  -2 /*fromYearTiny*/,
1652  -1 /*toYearTiny*/,
1653  3 /*inMonth*/,
1654  7 /*onDayOfWeek*/,
1655  0 /*onDayOfMonth*/,
1656  0 /*atTimeCode*/,
1657  's' /*atTimeModifier*/,
1658  4 /*deltaCode*/,
1659  'D' /*letter*/,
1660  },
1661  // Rule Cuba 1998 2003 - Oct lastSun 0:00s 0 S
1662  {
1663  -2 /*fromYearTiny*/,
1664  3 /*toYearTiny*/,
1665  10 /*inMonth*/,
1666  7 /*onDayOfWeek*/,
1667  0 /*onDayOfMonth*/,
1668  0 /*atTimeCode*/,
1669  's' /*atTimeModifier*/,
1670  0 /*deltaCode*/,
1671  'S' /*letter*/,
1672  },
1673  // Rule Cuba 2000 2003 - Apr Sun>=1 0:00s 1:00 D
1674  {
1675  0 /*fromYearTiny*/,
1676  3 /*toYearTiny*/,
1677  4 /*inMonth*/,
1678  7 /*onDayOfWeek*/,
1679  1 /*onDayOfMonth*/,
1680  0 /*atTimeCode*/,
1681  's' /*atTimeModifier*/,
1682  4 /*deltaCode*/,
1683  'D' /*letter*/,
1684  },
1685  // Rule Cuba 2004 only - Mar lastSun 0:00s 1:00 D
1686  {
1687  4 /*fromYearTiny*/,
1688  4 /*toYearTiny*/,
1689  3 /*inMonth*/,
1690  7 /*onDayOfWeek*/,
1691  0 /*onDayOfMonth*/,
1692  0 /*atTimeCode*/,
1693  's' /*atTimeModifier*/,
1694  4 /*deltaCode*/,
1695  'D' /*letter*/,
1696  },
1697  // Rule Cuba 2006 2010 - Oct lastSun 0:00s 0 S
1698  {
1699  6 /*fromYearTiny*/,
1700  10 /*toYearTiny*/,
1701  10 /*inMonth*/,
1702  7 /*onDayOfWeek*/,
1703  0 /*onDayOfMonth*/,
1704  0 /*atTimeCode*/,
1705  's' /*atTimeModifier*/,
1706  0 /*deltaCode*/,
1707  'S' /*letter*/,
1708  },
1709  // Rule Cuba 2007 only - Mar Sun>=8 0:00s 1:00 D
1710  {
1711  7 /*fromYearTiny*/,
1712  7 /*toYearTiny*/,
1713  3 /*inMonth*/,
1714  7 /*onDayOfWeek*/,
1715  8 /*onDayOfMonth*/,
1716  0 /*atTimeCode*/,
1717  's' /*atTimeModifier*/,
1718  4 /*deltaCode*/,
1719  'D' /*letter*/,
1720  },
1721  // Rule Cuba 2008 only - Mar Sun>=15 0:00s 1:00 D
1722  {
1723  8 /*fromYearTiny*/,
1724  8 /*toYearTiny*/,
1725  3 /*inMonth*/,
1726  7 /*onDayOfWeek*/,
1727  15 /*onDayOfMonth*/,
1728  0 /*atTimeCode*/,
1729  's' /*atTimeModifier*/,
1730  4 /*deltaCode*/,
1731  'D' /*letter*/,
1732  },
1733  // Rule Cuba 2009 2010 - Mar Sun>=8 0:00s 1:00 D
1734  {
1735  9 /*fromYearTiny*/,
1736  10 /*toYearTiny*/,
1737  3 /*inMonth*/,
1738  7 /*onDayOfWeek*/,
1739  8 /*onDayOfMonth*/,
1740  0 /*atTimeCode*/,
1741  's' /*atTimeModifier*/,
1742  4 /*deltaCode*/,
1743  'D' /*letter*/,
1744  },
1745  // Rule Cuba 2011 only - Mar Sun>=15 0:00s 1:00 D
1746  {
1747  11 /*fromYearTiny*/,
1748  11 /*toYearTiny*/,
1749  3 /*inMonth*/,
1750  7 /*onDayOfWeek*/,
1751  15 /*onDayOfMonth*/,
1752  0 /*atTimeCode*/,
1753  's' /*atTimeModifier*/,
1754  4 /*deltaCode*/,
1755  'D' /*letter*/,
1756  },
1757  // Rule Cuba 2011 only - Nov 13 0:00s 0 S
1758  {
1759  11 /*fromYearTiny*/,
1760  11 /*toYearTiny*/,
1761  11 /*inMonth*/,
1762  0 /*onDayOfWeek*/,
1763  13 /*onDayOfMonth*/,
1764  0 /*atTimeCode*/,
1765  's' /*atTimeModifier*/,
1766  0 /*deltaCode*/,
1767  'S' /*letter*/,
1768  },
1769  // Rule Cuba 2012 only - Apr 1 0:00s 1:00 D
1770  {
1771  12 /*fromYearTiny*/,
1772  12 /*toYearTiny*/,
1773  4 /*inMonth*/,
1774  0 /*onDayOfWeek*/,
1775  1 /*onDayOfMonth*/,
1776  0 /*atTimeCode*/,
1777  's' /*atTimeModifier*/,
1778  4 /*deltaCode*/,
1779  'D' /*letter*/,
1780  },
1781  // Rule Cuba 2012 max - Nov Sun>=1 0:00s 0 S
1782  {
1783  12 /*fromYearTiny*/,
1784  126 /*toYearTiny*/,
1785  11 /*inMonth*/,
1786  7 /*onDayOfWeek*/,
1787  1 /*onDayOfMonth*/,
1788  0 /*atTimeCode*/,
1789  's' /*atTimeModifier*/,
1790  0 /*deltaCode*/,
1791  'S' /*letter*/,
1792  },
1793  // Rule Cuba 2013 max - Mar Sun>=8 0:00s 1:00 D
1794  {
1795  13 /*fromYearTiny*/,
1796  126 /*toYearTiny*/,
1797  3 /*inMonth*/,
1798  7 /*onDayOfWeek*/,
1799  8 /*onDayOfMonth*/,
1800  0 /*atTimeCode*/,
1801  's' /*atTimeModifier*/,
1802  4 /*deltaCode*/,
1803  'D' /*letter*/,
1804  },
1805 
1806 };
1807 
1808 
1809 
1810 const basic::ZonePolicy kPolicyCuba ACE_TIME_PROGMEM = {
1811  kZoneRulesCuba /*rules*/,
1812  nullptr /* letters */,
1813  14 /*numRules*/,
1814  0 /* numLetters */,
1815 };
1816 
1817 //---------------------------------------------------------------------------
1818 // Policy name: Dhaka
1819 // Rules: 3
1820 // Memory (8-bit): 33
1821 // Memory (32-bit): 48
1822 //---------------------------------------------------------------------------
1823 
1824 static const basic::ZoneRule kZoneRulesDhaka[] ACE_TIME_PROGMEM = {
1825  // Anchor: Rule Dhaka 2009 only - Dec 31 24:00 0 -
1826  {
1827  -127 /*fromYearTiny*/,
1828  -127 /*toYearTiny*/,
1829  1 /*inMonth*/,
1830  0 /*onDayOfWeek*/,
1831  1 /*onDayOfMonth*/,
1832  0 /*atTimeCode*/,
1833  'w' /*atTimeModifier*/,
1834  0 /*deltaCode*/,
1835  '-' /*letter*/,
1836  },
1837  // Rule Dhaka 2009 only - Jun 19 23:00 1:00 -
1838  {
1839  9 /*fromYearTiny*/,
1840  9 /*toYearTiny*/,
1841  6 /*inMonth*/,
1842  0 /*onDayOfWeek*/,
1843  19 /*onDayOfMonth*/,
1844  92 /*atTimeCode*/,
1845  'w' /*atTimeModifier*/,
1846  4 /*deltaCode*/,
1847  '-' /*letter*/,
1848  },
1849  // Rule Dhaka 2009 only - Dec 31 24:00 0 -
1850  {
1851  9 /*fromYearTiny*/,
1852  9 /*toYearTiny*/,
1853  12 /*inMonth*/,
1854  0 /*onDayOfWeek*/,
1855  31 /*onDayOfMonth*/,
1856  96 /*atTimeCode*/,
1857  'w' /*atTimeModifier*/,
1858  0 /*deltaCode*/,
1859  '-' /*letter*/,
1860  },
1861 
1862 };
1863 
1864 
1865 
1866 const basic::ZonePolicy kPolicyDhaka ACE_TIME_PROGMEM = {
1867  kZoneRulesDhaka /*rules*/,
1868  nullptr /* letters */,
1869  3 /*numRules*/,
1870  0 /* numLetters */,
1871 };
1872 
1873 //---------------------------------------------------------------------------
1874 // Policy name: EU
1875 // Rules: 3
1876 // Memory (8-bit): 33
1877 // Memory (32-bit): 48
1878 //---------------------------------------------------------------------------
1879 
1880 static const basic::ZoneRule kZoneRulesEU[] ACE_TIME_PROGMEM = {
1881  // Rule EU 1979 1995 - Sep lastSun 1:00u 0 -
1882  {
1883  -21 /*fromYearTiny*/,
1884  -5 /*toYearTiny*/,
1885  9 /*inMonth*/,
1886  7 /*onDayOfWeek*/,
1887  0 /*onDayOfMonth*/,
1888  4 /*atTimeCode*/,
1889  'u' /*atTimeModifier*/,
1890  0 /*deltaCode*/,
1891  '-' /*letter*/,
1892  },
1893  // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
1894  {
1895  -19 /*fromYearTiny*/,
1896  126 /*toYearTiny*/,
1897  3 /*inMonth*/,
1898  7 /*onDayOfWeek*/,
1899  0 /*onDayOfMonth*/,
1900  4 /*atTimeCode*/,
1901  'u' /*atTimeModifier*/,
1902  4 /*deltaCode*/,
1903  'S' /*letter*/,
1904  },
1905  // Rule EU 1996 max - Oct lastSun 1:00u 0 -
1906  {
1907  -4 /*fromYearTiny*/,
1908  126 /*toYearTiny*/,
1909  10 /*inMonth*/,
1910  7 /*onDayOfWeek*/,
1911  0 /*onDayOfMonth*/,
1912  4 /*atTimeCode*/,
1913  'u' /*atTimeModifier*/,
1914  0 /*deltaCode*/,
1915  '-' /*letter*/,
1916  },
1917 
1918 };
1919 
1920 
1921 
1922 const basic::ZonePolicy kPolicyEU ACE_TIME_PROGMEM = {
1923  kZoneRulesEU /*rules*/,
1924  nullptr /* letters */,
1925  3 /*numRules*/,
1926  0 /* numLetters */,
1927 };
1928 
1929 //---------------------------------------------------------------------------
1930 // Policy name: EUAsia
1931 // Rules: 3
1932 // Memory (8-bit): 33
1933 // Memory (32-bit): 48
1934 //---------------------------------------------------------------------------
1935 
1936 static const basic::ZoneRule kZoneRulesEUAsia[] ACE_TIME_PROGMEM = {
1937  // Rule EUAsia 1981 max - Mar lastSun 1:00u 1:00 S
1938  {
1939  -19 /*fromYearTiny*/,
1940  126 /*toYearTiny*/,
1941  3 /*inMonth*/,
1942  7 /*onDayOfWeek*/,
1943  0 /*onDayOfMonth*/,
1944  4 /*atTimeCode*/,
1945  'u' /*atTimeModifier*/,
1946  4 /*deltaCode*/,
1947  'S' /*letter*/,
1948  },
1949  // Rule EUAsia 1979 1995 - Sep lastSun 1:00u 0 -
1950  {
1951  -21 /*fromYearTiny*/,
1952  -5 /*toYearTiny*/,
1953  9 /*inMonth*/,
1954  7 /*onDayOfWeek*/,
1955  0 /*onDayOfMonth*/,
1956  4 /*atTimeCode*/,
1957  'u' /*atTimeModifier*/,
1958  0 /*deltaCode*/,
1959  '-' /*letter*/,
1960  },
1961  // Rule EUAsia 1996 max - Oct lastSun 1:00u 0 -
1962  {
1963  -4 /*fromYearTiny*/,
1964  126 /*toYearTiny*/,
1965  10 /*inMonth*/,
1966  7 /*onDayOfWeek*/,
1967  0 /*onDayOfMonth*/,
1968  4 /*atTimeCode*/,
1969  'u' /*atTimeModifier*/,
1970  0 /*deltaCode*/,
1971  '-' /*letter*/,
1972  },
1973 
1974 };
1975 
1976 
1977 
1978 const basic::ZonePolicy kPolicyEUAsia ACE_TIME_PROGMEM = {
1979  kZoneRulesEUAsia /*rules*/,
1980  nullptr /* letters */,
1981  3 /*numRules*/,
1982  0 /* numLetters */,
1983 };
1984 
1985 //---------------------------------------------------------------------------
1986 // Policy name: Ecuador
1987 // Rules: 1
1988 // Memory (8-bit): 15
1989 // Memory (32-bit): 24
1990 //---------------------------------------------------------------------------
1991 
1992 static const basic::ZoneRule kZoneRulesEcuador[] ACE_TIME_PROGMEM = {
1993  // Rule Ecuador 1993 only - Feb 5 0:00 0 -
1994  {
1995  -7 /*fromYearTiny*/,
1996  -7 /*toYearTiny*/,
1997  2 /*inMonth*/,
1998  0 /*onDayOfWeek*/,
1999  5 /*onDayOfMonth*/,
2000  0 /*atTimeCode*/,
2001  'w' /*atTimeModifier*/,
2002  0 /*deltaCode*/,
2003  '-' /*letter*/,
2004  },
2005 
2006 };
2007 
2008 
2009 
2010 const basic::ZonePolicy kPolicyEcuador ACE_TIME_PROGMEM = {
2011  kZoneRulesEcuador /*rules*/,
2012  nullptr /* letters */,
2013  1 /*numRules*/,
2014  0 /* numLetters */,
2015 };
2016 
2017 //---------------------------------------------------------------------------
2018 // Policy name: Eire
2019 // Rules: 3
2020 // Memory (8-bit): 33
2021 // Memory (32-bit): 48
2022 //---------------------------------------------------------------------------
2023 
2024 static const basic::ZoneRule kZoneRulesEire[] ACE_TIME_PROGMEM = {
2025  // Rule Eire 1981 max - Mar lastSun 1:00u 0 -
2026  {
2027  -19 /*fromYearTiny*/,
2028  126 /*toYearTiny*/,
2029  3 /*inMonth*/,
2030  7 /*onDayOfWeek*/,
2031  0 /*onDayOfMonth*/,
2032  4 /*atTimeCode*/,
2033  'u' /*atTimeModifier*/,
2034  0 /*deltaCode*/,
2035  '-' /*letter*/,
2036  },
2037  // Rule Eire 1990 1995 - Oct Sun>=22 1:00u -1:00 -
2038  {
2039  -10 /*fromYearTiny*/,
2040  -5 /*toYearTiny*/,
2041  10 /*inMonth*/,
2042  7 /*onDayOfWeek*/,
2043  22 /*onDayOfMonth*/,
2044  4 /*atTimeCode*/,
2045  'u' /*atTimeModifier*/,
2046  -4 /*deltaCode*/,
2047  '-' /*letter*/,
2048  },
2049  // Rule Eire 1996 max - Oct lastSun 1:00u -1:00 -
2050  {
2051  -4 /*fromYearTiny*/,
2052  126 /*toYearTiny*/,
2053  10 /*inMonth*/,
2054  7 /*onDayOfWeek*/,
2055  0 /*onDayOfMonth*/,
2056  4 /*atTimeCode*/,
2057  'u' /*atTimeModifier*/,
2058  -4 /*deltaCode*/,
2059  '-' /*letter*/,
2060  },
2061 
2062 };
2063 
2064 
2065 
2066 const basic::ZonePolicy kPolicyEire ACE_TIME_PROGMEM = {
2067  kZoneRulesEire /*rules*/,
2068  nullptr /* letters */,
2069  3 /*numRules*/,
2070  0 /* numLetters */,
2071 };
2072 
2073 //---------------------------------------------------------------------------
2074 // Policy name: Fiji
2075 // Rules: 10
2076 // Memory (8-bit): 96
2077 // Memory (32-bit): 132
2078 //---------------------------------------------------------------------------
2079 
2080 static const basic::ZoneRule kZoneRulesFiji[] ACE_TIME_PROGMEM = {
2081  // Rule Fiji 1998 1999 - Nov Sun>=1 2:00 1:00 -
2082  {
2083  -2 /*fromYearTiny*/,
2084  -1 /*toYearTiny*/,
2085  11 /*inMonth*/,
2086  7 /*onDayOfWeek*/,
2087  1 /*onDayOfMonth*/,
2088  8 /*atTimeCode*/,
2089  'w' /*atTimeModifier*/,
2090  4 /*deltaCode*/,
2091  '-' /*letter*/,
2092  },
2093  // Rule Fiji 1999 2000 - Feb lastSun 3:00 0 -
2094  {
2095  -1 /*fromYearTiny*/,
2096  0 /*toYearTiny*/,
2097  2 /*inMonth*/,
2098  7 /*onDayOfWeek*/,
2099  0 /*onDayOfMonth*/,
2100  12 /*atTimeCode*/,
2101  'w' /*atTimeModifier*/,
2102  0 /*deltaCode*/,
2103  '-' /*letter*/,
2104  },
2105  // Rule Fiji 2009 only - Nov 29 2:00 1:00 -
2106  {
2107  9 /*fromYearTiny*/,
2108  9 /*toYearTiny*/,
2109  11 /*inMonth*/,
2110  0 /*onDayOfWeek*/,
2111  29 /*onDayOfMonth*/,
2112  8 /*atTimeCode*/,
2113  'w' /*atTimeModifier*/,
2114  4 /*deltaCode*/,
2115  '-' /*letter*/,
2116  },
2117  // Rule Fiji 2010 only - Mar lastSun 3:00 0 -
2118  {
2119  10 /*fromYearTiny*/,
2120  10 /*toYearTiny*/,
2121  3 /*inMonth*/,
2122  7 /*onDayOfWeek*/,
2123  0 /*onDayOfMonth*/,
2124  12 /*atTimeCode*/,
2125  'w' /*atTimeModifier*/,
2126  0 /*deltaCode*/,
2127  '-' /*letter*/,
2128  },
2129  // Rule Fiji 2010 2013 - Oct Sun>=21 2:00 1:00 -
2130  {
2131  10 /*fromYearTiny*/,
2132  13 /*toYearTiny*/,
2133  10 /*inMonth*/,
2134  7 /*onDayOfWeek*/,
2135  21 /*onDayOfMonth*/,
2136  8 /*atTimeCode*/,
2137  'w' /*atTimeModifier*/,
2138  4 /*deltaCode*/,
2139  '-' /*letter*/,
2140  },
2141  // Rule Fiji 2011 only - Mar Sun>=1 3:00 0 -
2142  {
2143  11 /*fromYearTiny*/,
2144  11 /*toYearTiny*/,
2145  3 /*inMonth*/,
2146  7 /*onDayOfWeek*/,
2147  1 /*onDayOfMonth*/,
2148  12 /*atTimeCode*/,
2149  'w' /*atTimeModifier*/,
2150  0 /*deltaCode*/,
2151  '-' /*letter*/,
2152  },
2153  // Rule Fiji 2012 2013 - Jan Sun>=18 3:00 0 -
2154  {
2155  12 /*fromYearTiny*/,
2156  13 /*toYearTiny*/,
2157  1 /*inMonth*/,
2158  7 /*onDayOfWeek*/,
2159  18 /*onDayOfMonth*/,
2160  12 /*atTimeCode*/,
2161  'w' /*atTimeModifier*/,
2162  0 /*deltaCode*/,
2163  '-' /*letter*/,
2164  },
2165  // Rule Fiji 2014 only - Jan Sun>=18 2:00 0 -
2166  {
2167  14 /*fromYearTiny*/,
2168  14 /*toYearTiny*/,
2169  1 /*inMonth*/,
2170  7 /*onDayOfWeek*/,
2171  18 /*onDayOfMonth*/,
2172  8 /*atTimeCode*/,
2173  'w' /*atTimeModifier*/,
2174  0 /*deltaCode*/,
2175  '-' /*letter*/,
2176  },
2177  // Rule Fiji 2014 max - Nov Sun>=1 2:00 1:00 -
2178  {
2179  14 /*fromYearTiny*/,
2180  126 /*toYearTiny*/,
2181  11 /*inMonth*/,
2182  7 /*onDayOfWeek*/,
2183  1 /*onDayOfMonth*/,
2184  8 /*atTimeCode*/,
2185  'w' /*atTimeModifier*/,
2186  4 /*deltaCode*/,
2187  '-' /*letter*/,
2188  },
2189  // Rule Fiji 2015 max - Jan Sun>=13 3:00 0 -
2190  {
2191  15 /*fromYearTiny*/,
2192  126 /*toYearTiny*/,
2193  1 /*inMonth*/,
2194  7 /*onDayOfWeek*/,
2195  13 /*onDayOfMonth*/,
2196  12 /*atTimeCode*/,
2197  'w' /*atTimeModifier*/,
2198  0 /*deltaCode*/,
2199  '-' /*letter*/,
2200  },
2201 
2202 };
2203 
2204 
2205 
2206 const basic::ZonePolicy kPolicyFiji ACE_TIME_PROGMEM = {
2207  kZoneRulesFiji /*rules*/,
2208  nullptr /* letters */,
2209  10 /*numRules*/,
2210  0 /* numLetters */,
2211 };
2212 
2213 //---------------------------------------------------------------------------
2214 // Policy name: Ghana
2215 // Rules: 1
2216 // Memory (8-bit): 15
2217 // Memory (32-bit): 24
2218 //---------------------------------------------------------------------------
2219 
2220 static const basic::ZoneRule kZoneRulesGhana[] ACE_TIME_PROGMEM = {
2221  // Rule Ghana 1920 1942 - Dec 31 0:00 0 -
2222  {
2223  -80 /*fromYearTiny*/,
2224  -58 /*toYearTiny*/,
2225  12 /*inMonth*/,
2226  0 /*onDayOfWeek*/,
2227  31 /*onDayOfMonth*/,
2228  0 /*atTimeCode*/,
2229  'w' /*atTimeModifier*/,
2230  0 /*deltaCode*/,
2231  '-' /*letter*/,
2232  },
2233 
2234 };
2235 
2236 
2237 
2238 const basic::ZonePolicy kPolicyGhana ACE_TIME_PROGMEM = {
2239  kZoneRulesGhana /*rules*/,
2240  nullptr /* letters */,
2241  1 /*numRules*/,
2242  0 /* numLetters */,
2243 };
2244 
2245 //---------------------------------------------------------------------------
2246 // Policy name: Guat
2247 // Rules: 3
2248 // Memory (8-bit): 33
2249 // Memory (32-bit): 48
2250 //---------------------------------------------------------------------------
2251 
2252 static const basic::ZoneRule kZoneRulesGuat[] ACE_TIME_PROGMEM = {
2253  // Rule Guat 1991 only - Sep 7 0:00 0 S
2254  {
2255  -9 /*fromYearTiny*/,
2256  -9 /*toYearTiny*/,
2257  9 /*inMonth*/,
2258  0 /*onDayOfWeek*/,
2259  7 /*onDayOfMonth*/,
2260  0 /*atTimeCode*/,
2261  'w' /*atTimeModifier*/,
2262  0 /*deltaCode*/,
2263  'S' /*letter*/,
2264  },
2265  // Rule Guat 2006 only - Apr 30 0:00 1:00 D
2266  {
2267  6 /*fromYearTiny*/,
2268  6 /*toYearTiny*/,
2269  4 /*inMonth*/,
2270  0 /*onDayOfWeek*/,
2271  30 /*onDayOfMonth*/,
2272  0 /*atTimeCode*/,
2273  'w' /*atTimeModifier*/,
2274  4 /*deltaCode*/,
2275  'D' /*letter*/,
2276  },
2277  // Rule Guat 2006 only - Oct 1 0:00 0 S
2278  {
2279  6 /*fromYearTiny*/,
2280  6 /*toYearTiny*/,
2281  10 /*inMonth*/,
2282  0 /*onDayOfWeek*/,
2283  1 /*onDayOfMonth*/,
2284  0 /*atTimeCode*/,
2285  'w' /*atTimeModifier*/,
2286  0 /*deltaCode*/,
2287  'S' /*letter*/,
2288  },
2289 
2290 };
2291 
2292 
2293 
2294 const basic::ZonePolicy kPolicyGuat ACE_TIME_PROGMEM = {
2295  kZoneRulesGuat /*rules*/,
2296  nullptr /* letters */,
2297  3 /*numRules*/,
2298  0 /* numLetters */,
2299 };
2300 
2301 //---------------------------------------------------------------------------
2302 // Policy name: HK
2303 // Rules: 1
2304 // Memory (8-bit): 15
2305 // Memory (32-bit): 24
2306 //---------------------------------------------------------------------------
2307 
2308 static const basic::ZoneRule kZoneRulesHK[] ACE_TIME_PROGMEM = {
2309  // Rule HK 1979 only - Oct Sun>=16 3:30 0 -
2310  {
2311  -21 /*fromYearTiny*/,
2312  -21 /*toYearTiny*/,
2313  10 /*inMonth*/,
2314  7 /*onDayOfWeek*/,
2315  16 /*onDayOfMonth*/,
2316  14 /*atTimeCode*/,
2317  'w' /*atTimeModifier*/,
2318  0 /*deltaCode*/,
2319  '-' /*letter*/,
2320  },
2321 
2322 };
2323 
2324 
2325 
2326 const basic::ZonePolicy kPolicyHK ACE_TIME_PROGMEM = {
2327  kZoneRulesHK /*rules*/,
2328  nullptr /* letters */,
2329  1 /*numRules*/,
2330  0 /* numLetters */,
2331 };
2332 
2333 //---------------------------------------------------------------------------
2334 // Policy name: Haiti
2335 // Rules: 7
2336 // Memory (8-bit): 69
2337 // Memory (32-bit): 96
2338 //---------------------------------------------------------------------------
2339 
2340 static const basic::ZoneRule kZoneRulesHaiti[] ACE_TIME_PROGMEM = {
2341  // Rule Haiti 1988 1997 - Oct lastSun 1:00s 0 S
2342  {
2343  -12 /*fromYearTiny*/,
2344  -3 /*toYearTiny*/,
2345  10 /*inMonth*/,
2346  7 /*onDayOfWeek*/,
2347  0 /*onDayOfMonth*/,
2348  4 /*atTimeCode*/,
2349  's' /*atTimeModifier*/,
2350  0 /*deltaCode*/,
2351  'S' /*letter*/,
2352  },
2353  // Rule Haiti 2005 2006 - Apr Sun>=1 0:00 1:00 D
2354  {
2355  5 /*fromYearTiny*/,
2356  6 /*toYearTiny*/,
2357  4 /*inMonth*/,
2358  7 /*onDayOfWeek*/,
2359  1 /*onDayOfMonth*/,
2360  0 /*atTimeCode*/,
2361  'w' /*atTimeModifier*/,
2362  4 /*deltaCode*/,
2363  'D' /*letter*/,
2364  },
2365  // Rule Haiti 2005 2006 - Oct lastSun 0:00 0 S
2366  {
2367  5 /*fromYearTiny*/,
2368  6 /*toYearTiny*/,
2369  10 /*inMonth*/,
2370  7 /*onDayOfWeek*/,
2371  0 /*onDayOfMonth*/,
2372  0 /*atTimeCode*/,
2373  'w' /*atTimeModifier*/,
2374  0 /*deltaCode*/,
2375  'S' /*letter*/,
2376  },
2377  // Rule Haiti 2012 2015 - Mar Sun>=8 2:00 1:00 D
2378  {
2379  12 /*fromYearTiny*/,
2380  15 /*toYearTiny*/,
2381  3 /*inMonth*/,
2382  7 /*onDayOfWeek*/,
2383  8 /*onDayOfMonth*/,
2384  8 /*atTimeCode*/,
2385  'w' /*atTimeModifier*/,
2386  4 /*deltaCode*/,
2387  'D' /*letter*/,
2388  },
2389  // Rule Haiti 2012 2015 - Nov Sun>=1 2:00 0 S
2390  {
2391  12 /*fromYearTiny*/,
2392  15 /*toYearTiny*/,
2393  11 /*inMonth*/,
2394  7 /*onDayOfWeek*/,
2395  1 /*onDayOfMonth*/,
2396  8 /*atTimeCode*/,
2397  'w' /*atTimeModifier*/,
2398  0 /*deltaCode*/,
2399  'S' /*letter*/,
2400  },
2401  // Rule Haiti 2017 max - Mar Sun>=8 2:00 1:00 D
2402  {
2403  17 /*fromYearTiny*/,
2404  126 /*toYearTiny*/,
2405  3 /*inMonth*/,
2406  7 /*onDayOfWeek*/,
2407  8 /*onDayOfMonth*/,
2408  8 /*atTimeCode*/,
2409  'w' /*atTimeModifier*/,
2410  4 /*deltaCode*/,
2411  'D' /*letter*/,
2412  },
2413  // Rule Haiti 2017 max - Nov Sun>=1 2:00 0 S
2414  {
2415  17 /*fromYearTiny*/,
2416  126 /*toYearTiny*/,
2417  11 /*inMonth*/,
2418  7 /*onDayOfWeek*/,
2419  1 /*onDayOfMonth*/,
2420  8 /*atTimeCode*/,
2421  'w' /*atTimeModifier*/,
2422  0 /*deltaCode*/,
2423  'S' /*letter*/,
2424  },
2425 
2426 };
2427 
2428 
2429 
2430 const basic::ZonePolicy kPolicyHaiti ACE_TIME_PROGMEM = {
2431  kZoneRulesHaiti /*rules*/,
2432  nullptr /* letters */,
2433  7 /*numRules*/,
2434  0 /* numLetters */,
2435 };
2436 
2437 //---------------------------------------------------------------------------
2438 // Policy name: Holiday
2439 // Rules: 1
2440 // Memory (8-bit): 15
2441 // Memory (32-bit): 24
2442 //---------------------------------------------------------------------------
2443 
2444 static const basic::ZoneRule kZoneRulesHoliday[] ACE_TIME_PROGMEM = {
2445  // Rule Holiday 1993 1994 - Mar Sun>=1 2:00s 0 S
2446  {
2447  -7 /*fromYearTiny*/,
2448  -6 /*toYearTiny*/,
2449  3 /*inMonth*/,
2450  7 /*onDayOfWeek*/,
2451  1 /*onDayOfMonth*/,
2452  8 /*atTimeCode*/,
2453  's' /*atTimeModifier*/,
2454  0 /*deltaCode*/,
2455  'S' /*letter*/,
2456  },
2457 
2458 };
2459 
2460 
2461 
2462 const basic::ZonePolicy kPolicyHoliday ACE_TIME_PROGMEM = {
2463  kZoneRulesHoliday /*rules*/,
2464  nullptr /* letters */,
2465  1 /*numRules*/,
2466  0 /* numLetters */,
2467 };
2468 
2469 //---------------------------------------------------------------------------
2470 // Policy name: Hond
2471 // Rules: 3
2472 // Memory (8-bit): 33
2473 // Memory (32-bit): 48
2474 //---------------------------------------------------------------------------
2475 
2476 static const basic::ZoneRule kZoneRulesHond[] ACE_TIME_PROGMEM = {
2477  // Rule Hond 1987 1988 - Sep lastSun 0:00 0 S
2478  {
2479  -13 /*fromYearTiny*/,
2480  -12 /*toYearTiny*/,
2481  9 /*inMonth*/,
2482  7 /*onDayOfWeek*/,
2483  0 /*onDayOfMonth*/,
2484  0 /*atTimeCode*/,
2485  'w' /*atTimeModifier*/,
2486  0 /*deltaCode*/,
2487  'S' /*letter*/,
2488  },
2489  // Rule Hond 2006 only - May Sun>=1 0:00 1:00 D
2490  {
2491  6 /*fromYearTiny*/,
2492  6 /*toYearTiny*/,
2493  5 /*inMonth*/,
2494  7 /*onDayOfWeek*/,
2495  1 /*onDayOfMonth*/,
2496  0 /*atTimeCode*/,
2497  'w' /*atTimeModifier*/,
2498  4 /*deltaCode*/,
2499  'D' /*letter*/,
2500  },
2501  // Rule Hond 2006 only - Aug Mon>=1 0:00 0 S
2502  {
2503  6 /*fromYearTiny*/,
2504  6 /*toYearTiny*/,
2505  8 /*inMonth*/,
2506  1 /*onDayOfWeek*/,
2507  1 /*onDayOfMonth*/,
2508  0 /*atTimeCode*/,
2509  'w' /*atTimeModifier*/,
2510  0 /*deltaCode*/,
2511  'S' /*letter*/,
2512  },
2513 
2514 };
2515 
2516 
2517 
2518 const basic::ZonePolicy kPolicyHond ACE_TIME_PROGMEM = {
2519  kZoneRulesHond /*rules*/,
2520  nullptr /* letters */,
2521  3 /*numRules*/,
2522  0 /* numLetters */,
2523 };
2524 
2525 //---------------------------------------------------------------------------
2526 // Policy name: Iran
2527 // Rules: 55
2528 // Memory (8-bit): 501
2529 // Memory (32-bit): 672
2530 //---------------------------------------------------------------------------
2531 
2532 static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = {
2533  // Rule Iran 1996 only - Sep 20 24:00 0 -
2534  {
2535  -4 /*fromYearTiny*/,
2536  -4 /*toYearTiny*/,
2537  9 /*inMonth*/,
2538  0 /*onDayOfWeek*/,
2539  20 /*onDayOfMonth*/,
2540  96 /*atTimeCode*/,
2541  'w' /*atTimeModifier*/,
2542  0 /*deltaCode*/,
2543  '-' /*letter*/,
2544  },
2545  // Rule Iran 1997 1999 - Mar 21 24:00 1:00 -
2546  {
2547  -3 /*fromYearTiny*/,
2548  -1 /*toYearTiny*/,
2549  3 /*inMonth*/,
2550  0 /*onDayOfWeek*/,
2551  21 /*onDayOfMonth*/,
2552  96 /*atTimeCode*/,
2553  'w' /*atTimeModifier*/,
2554  4 /*deltaCode*/,
2555  '-' /*letter*/,
2556  },
2557  // Rule Iran 1997 1999 - Sep 21 24:00 0 -
2558  {
2559  -3 /*fromYearTiny*/,
2560  -1 /*toYearTiny*/,
2561  9 /*inMonth*/,
2562  0 /*onDayOfWeek*/,
2563  21 /*onDayOfMonth*/,
2564  96 /*atTimeCode*/,
2565  'w' /*atTimeModifier*/,
2566  0 /*deltaCode*/,
2567  '-' /*letter*/,
2568  },
2569  // Rule Iran 2000 only - Mar 20 24:00 1:00 -
2570  {
2571  0 /*fromYearTiny*/,
2572  0 /*toYearTiny*/,
2573  3 /*inMonth*/,
2574  0 /*onDayOfWeek*/,
2575  20 /*onDayOfMonth*/,
2576  96 /*atTimeCode*/,
2577  'w' /*atTimeModifier*/,
2578  4 /*deltaCode*/,
2579  '-' /*letter*/,
2580  },
2581  // Rule Iran 2000 only - Sep 20 24:00 0 -
2582  {
2583  0 /*fromYearTiny*/,
2584  0 /*toYearTiny*/,
2585  9 /*inMonth*/,
2586  0 /*onDayOfWeek*/,
2587  20 /*onDayOfMonth*/,
2588  96 /*atTimeCode*/,
2589  'w' /*atTimeModifier*/,
2590  0 /*deltaCode*/,
2591  '-' /*letter*/,
2592  },
2593  // Rule Iran 2001 2003 - Mar 21 24:00 1:00 -
2594  {
2595  1 /*fromYearTiny*/,
2596  3 /*toYearTiny*/,
2597  3 /*inMonth*/,
2598  0 /*onDayOfWeek*/,
2599  21 /*onDayOfMonth*/,
2600  96 /*atTimeCode*/,
2601  'w' /*atTimeModifier*/,
2602  4 /*deltaCode*/,
2603  '-' /*letter*/,
2604  },
2605  // Rule Iran 2001 2003 - Sep 21 24:00 0 -
2606  {
2607  1 /*fromYearTiny*/,
2608  3 /*toYearTiny*/,
2609  9 /*inMonth*/,
2610  0 /*onDayOfWeek*/,
2611  21 /*onDayOfMonth*/,
2612  96 /*atTimeCode*/,
2613  'w' /*atTimeModifier*/,
2614  0 /*deltaCode*/,
2615  '-' /*letter*/,
2616  },
2617  // Rule Iran 2004 only - Mar 20 24:00 1:00 -
2618  {
2619  4 /*fromYearTiny*/,
2620  4 /*toYearTiny*/,
2621  3 /*inMonth*/,
2622  0 /*onDayOfWeek*/,
2623  20 /*onDayOfMonth*/,
2624  96 /*atTimeCode*/,
2625  'w' /*atTimeModifier*/,
2626  4 /*deltaCode*/,
2627  '-' /*letter*/,
2628  },
2629  // Rule Iran 2004 only - Sep 20 24:00 0 -
2630  {
2631  4 /*fromYearTiny*/,
2632  4 /*toYearTiny*/,
2633  9 /*inMonth*/,
2634  0 /*onDayOfWeek*/,
2635  20 /*onDayOfMonth*/,
2636  96 /*atTimeCode*/,
2637  'w' /*atTimeModifier*/,
2638  0 /*deltaCode*/,
2639  '-' /*letter*/,
2640  },
2641  // Rule Iran 2005 only - Mar 21 24:00 1:00 -
2642  {
2643  5 /*fromYearTiny*/,
2644  5 /*toYearTiny*/,
2645  3 /*inMonth*/,
2646  0 /*onDayOfWeek*/,
2647  21 /*onDayOfMonth*/,
2648  96 /*atTimeCode*/,
2649  'w' /*atTimeModifier*/,
2650  4 /*deltaCode*/,
2651  '-' /*letter*/,
2652  },
2653  // Rule Iran 2005 only - Sep 21 24:00 0 -
2654  {
2655  5 /*fromYearTiny*/,
2656  5 /*toYearTiny*/,
2657  9 /*inMonth*/,
2658  0 /*onDayOfWeek*/,
2659  21 /*onDayOfMonth*/,
2660  96 /*atTimeCode*/,
2661  'w' /*atTimeModifier*/,
2662  0 /*deltaCode*/,
2663  '-' /*letter*/,
2664  },
2665  // Rule Iran 2008 only - Mar 20 24:00 1:00 -
2666  {
2667  8 /*fromYearTiny*/,
2668  8 /*toYearTiny*/,
2669  3 /*inMonth*/,
2670  0 /*onDayOfWeek*/,
2671  20 /*onDayOfMonth*/,
2672  96 /*atTimeCode*/,
2673  'w' /*atTimeModifier*/,
2674  4 /*deltaCode*/,
2675  '-' /*letter*/,
2676  },
2677  // Rule Iran 2008 only - Sep 20 24:00 0 -
2678  {
2679  8 /*fromYearTiny*/,
2680  8 /*toYearTiny*/,
2681  9 /*inMonth*/,
2682  0 /*onDayOfWeek*/,
2683  20 /*onDayOfMonth*/,
2684  96 /*atTimeCode*/,
2685  'w' /*atTimeModifier*/,
2686  0 /*deltaCode*/,
2687  '-' /*letter*/,
2688  },
2689  // Rule Iran 2009 2011 - Mar 21 24:00 1:00 -
2690  {
2691  9 /*fromYearTiny*/,
2692  11 /*toYearTiny*/,
2693  3 /*inMonth*/,
2694  0 /*onDayOfWeek*/,
2695  21 /*onDayOfMonth*/,
2696  96 /*atTimeCode*/,
2697  'w' /*atTimeModifier*/,
2698  4 /*deltaCode*/,
2699  '-' /*letter*/,
2700  },
2701  // Rule Iran 2009 2011 - Sep 21 24:00 0 -
2702  {
2703  9 /*fromYearTiny*/,
2704  11 /*toYearTiny*/,
2705  9 /*inMonth*/,
2706  0 /*onDayOfWeek*/,
2707  21 /*onDayOfMonth*/,
2708  96 /*atTimeCode*/,
2709  'w' /*atTimeModifier*/,
2710  0 /*deltaCode*/,
2711  '-' /*letter*/,
2712  },
2713  // Rule Iran 2012 only - Mar 20 24:00 1:00 -
2714  {
2715  12 /*fromYearTiny*/,
2716  12 /*toYearTiny*/,
2717  3 /*inMonth*/,
2718  0 /*onDayOfWeek*/,
2719  20 /*onDayOfMonth*/,
2720  96 /*atTimeCode*/,
2721  'w' /*atTimeModifier*/,
2722  4 /*deltaCode*/,
2723  '-' /*letter*/,
2724  },
2725  // Rule Iran 2012 only - Sep 20 24:00 0 -
2726  {
2727  12 /*fromYearTiny*/,
2728  12 /*toYearTiny*/,
2729  9 /*inMonth*/,
2730  0 /*onDayOfWeek*/,
2731  20 /*onDayOfMonth*/,
2732  96 /*atTimeCode*/,
2733  'w' /*atTimeModifier*/,
2734  0 /*deltaCode*/,
2735  '-' /*letter*/,
2736  },
2737  // Rule Iran 2013 2015 - Mar 21 24:00 1:00 -
2738  {
2739  13 /*fromYearTiny*/,
2740  15 /*toYearTiny*/,
2741  3 /*inMonth*/,
2742  0 /*onDayOfWeek*/,
2743  21 /*onDayOfMonth*/,
2744  96 /*atTimeCode*/,
2745  'w' /*atTimeModifier*/,
2746  4 /*deltaCode*/,
2747  '-' /*letter*/,
2748  },
2749  // Rule Iran 2013 2015 - Sep 21 24:00 0 -
2750  {
2751  13 /*fromYearTiny*/,
2752  15 /*toYearTiny*/,
2753  9 /*inMonth*/,
2754  0 /*onDayOfWeek*/,
2755  21 /*onDayOfMonth*/,
2756  96 /*atTimeCode*/,
2757  'w' /*atTimeModifier*/,
2758  0 /*deltaCode*/,
2759  '-' /*letter*/,
2760  },
2761  // Rule Iran 2016 only - Mar 20 24:00 1:00 -
2762  {
2763  16 /*fromYearTiny*/,
2764  16 /*toYearTiny*/,
2765  3 /*inMonth*/,
2766  0 /*onDayOfWeek*/,
2767  20 /*onDayOfMonth*/,
2768  96 /*atTimeCode*/,
2769  'w' /*atTimeModifier*/,
2770  4 /*deltaCode*/,
2771  '-' /*letter*/,
2772  },
2773  // Rule Iran 2016 only - Sep 20 24:00 0 -
2774  {
2775  16 /*fromYearTiny*/,
2776  16 /*toYearTiny*/,
2777  9 /*inMonth*/,
2778  0 /*onDayOfWeek*/,
2779  20 /*onDayOfMonth*/,
2780  96 /*atTimeCode*/,
2781  'w' /*atTimeModifier*/,
2782  0 /*deltaCode*/,
2783  '-' /*letter*/,
2784  },
2785  // Rule Iran 2017 2019 - Mar 21 24:00 1:00 -
2786  {
2787  17 /*fromYearTiny*/,
2788  19 /*toYearTiny*/,
2789  3 /*inMonth*/,
2790  0 /*onDayOfWeek*/,
2791  21 /*onDayOfMonth*/,
2792  96 /*atTimeCode*/,
2793  'w' /*atTimeModifier*/,
2794  4 /*deltaCode*/,
2795  '-' /*letter*/,
2796  },
2797  // Rule Iran 2017 2019 - Sep 21 24:00 0 -
2798  {
2799  17 /*fromYearTiny*/,
2800  19 /*toYearTiny*/,
2801  9 /*inMonth*/,
2802  0 /*onDayOfWeek*/,
2803  21 /*onDayOfMonth*/,
2804  96 /*atTimeCode*/,
2805  'w' /*atTimeModifier*/,
2806  0 /*deltaCode*/,
2807  '-' /*letter*/,
2808  },
2809  // Rule Iran 2020 only - Mar 20 24:00 1:00 -
2810  {
2811  20 /*fromYearTiny*/,
2812  20 /*toYearTiny*/,
2813  3 /*inMonth*/,
2814  0 /*onDayOfWeek*/,
2815  20 /*onDayOfMonth*/,
2816  96 /*atTimeCode*/,
2817  'w' /*atTimeModifier*/,
2818  4 /*deltaCode*/,
2819  '-' /*letter*/,
2820  },
2821  // Rule Iran 2020 only - Sep 20 24:00 0 -
2822  {
2823  20 /*fromYearTiny*/,
2824  20 /*toYearTiny*/,
2825  9 /*inMonth*/,
2826  0 /*onDayOfWeek*/,
2827  20 /*onDayOfMonth*/,
2828  96 /*atTimeCode*/,
2829  'w' /*atTimeModifier*/,
2830  0 /*deltaCode*/,
2831  '-' /*letter*/,
2832  },
2833  // Rule Iran 2021 2023 - Mar 21 24:00 1:00 -
2834  {
2835  21 /*fromYearTiny*/,
2836  23 /*toYearTiny*/,
2837  3 /*inMonth*/,
2838  0 /*onDayOfWeek*/,
2839  21 /*onDayOfMonth*/,
2840  96 /*atTimeCode*/,
2841  'w' /*atTimeModifier*/,
2842  4 /*deltaCode*/,
2843  '-' /*letter*/,
2844  },
2845  // Rule Iran 2021 2023 - Sep 21 24:00 0 -
2846  {
2847  21 /*fromYearTiny*/,
2848  23 /*toYearTiny*/,
2849  9 /*inMonth*/,
2850  0 /*onDayOfWeek*/,
2851  21 /*onDayOfMonth*/,
2852  96 /*atTimeCode*/,
2853  'w' /*atTimeModifier*/,
2854  0 /*deltaCode*/,
2855  '-' /*letter*/,
2856  },
2857  // Rule Iran 2024 only - Mar 20 24:00 1:00 -
2858  {
2859  24 /*fromYearTiny*/,
2860  24 /*toYearTiny*/,
2861  3 /*inMonth*/,
2862  0 /*onDayOfWeek*/,
2863  20 /*onDayOfMonth*/,
2864  96 /*atTimeCode*/,
2865  'w' /*atTimeModifier*/,
2866  4 /*deltaCode*/,
2867  '-' /*letter*/,
2868  },
2869  // Rule Iran 2024 only - Sep 20 24:00 0 -
2870  {
2871  24 /*fromYearTiny*/,
2872  24 /*toYearTiny*/,
2873  9 /*inMonth*/,
2874  0 /*onDayOfWeek*/,
2875  20 /*onDayOfMonth*/,
2876  96 /*atTimeCode*/,
2877  'w' /*atTimeModifier*/,
2878  0 /*deltaCode*/,
2879  '-' /*letter*/,
2880  },
2881  // Rule Iran 2025 2027 - Mar 21 24:00 1:00 -
2882  {
2883  25 /*fromYearTiny*/,
2884  27 /*toYearTiny*/,
2885  3 /*inMonth*/,
2886  0 /*onDayOfWeek*/,
2887  21 /*onDayOfMonth*/,
2888  96 /*atTimeCode*/,
2889  'w' /*atTimeModifier*/,
2890  4 /*deltaCode*/,
2891  '-' /*letter*/,
2892  },
2893  // Rule Iran 2025 2027 - Sep 21 24:00 0 -
2894  {
2895  25 /*fromYearTiny*/,
2896  27 /*toYearTiny*/,
2897  9 /*inMonth*/,
2898  0 /*onDayOfWeek*/,
2899  21 /*onDayOfMonth*/,
2900  96 /*atTimeCode*/,
2901  'w' /*atTimeModifier*/,
2902  0 /*deltaCode*/,
2903  '-' /*letter*/,
2904  },
2905  // Rule Iran 2028 2029 - Mar 20 24:00 1:00 -
2906  {
2907  28 /*fromYearTiny*/,
2908  29 /*toYearTiny*/,
2909  3 /*inMonth*/,
2910  0 /*onDayOfWeek*/,
2911  20 /*onDayOfMonth*/,
2912  96 /*atTimeCode*/,
2913  'w' /*atTimeModifier*/,
2914  4 /*deltaCode*/,
2915  '-' /*letter*/,
2916  },
2917  // Rule Iran 2028 2029 - Sep 20 24:00 0 -
2918  {
2919  28 /*fromYearTiny*/,
2920  29 /*toYearTiny*/,
2921  9 /*inMonth*/,
2922  0 /*onDayOfWeek*/,
2923  20 /*onDayOfMonth*/,
2924  96 /*atTimeCode*/,
2925  'w' /*atTimeModifier*/,
2926  0 /*deltaCode*/,
2927  '-' /*letter*/,
2928  },
2929  // Rule Iran 2030 2031 - Mar 21 24:00 1:00 -
2930  {
2931  30 /*fromYearTiny*/,
2932  31 /*toYearTiny*/,
2933  3 /*inMonth*/,
2934  0 /*onDayOfWeek*/,
2935  21 /*onDayOfMonth*/,
2936  96 /*atTimeCode*/,
2937  'w' /*atTimeModifier*/,
2938  4 /*deltaCode*/,
2939  '-' /*letter*/,
2940  },
2941  // Rule Iran 2030 2031 - Sep 21 24:00 0 -
2942  {
2943  30 /*fromYearTiny*/,
2944  31 /*toYearTiny*/,
2945  9 /*inMonth*/,
2946  0 /*onDayOfWeek*/,
2947  21 /*onDayOfMonth*/,
2948  96 /*atTimeCode*/,
2949  'w' /*atTimeModifier*/,
2950  0 /*deltaCode*/,
2951  '-' /*letter*/,
2952  },
2953  // Rule Iran 2032 2033 - Mar 20 24:00 1:00 -
2954  {
2955  32 /*fromYearTiny*/,
2956  33 /*toYearTiny*/,
2957  3 /*inMonth*/,
2958  0 /*onDayOfWeek*/,
2959  20 /*onDayOfMonth*/,
2960  96 /*atTimeCode*/,
2961  'w' /*atTimeModifier*/,
2962  4 /*deltaCode*/,
2963  '-' /*letter*/,
2964  },
2965  // Rule Iran 2032 2033 - Sep 20 24:00 0 -
2966  {
2967  32 /*fromYearTiny*/,
2968  33 /*toYearTiny*/,
2969  9 /*inMonth*/,
2970  0 /*onDayOfWeek*/,
2971  20 /*onDayOfMonth*/,
2972  96 /*atTimeCode*/,
2973  'w' /*atTimeModifier*/,
2974  0 /*deltaCode*/,
2975  '-' /*letter*/,
2976  },
2977  // Rule Iran 2034 2035 - Mar 21 24:00 1:00 -
2978  {
2979  34 /*fromYearTiny*/,
2980  35 /*toYearTiny*/,
2981  3 /*inMonth*/,
2982  0 /*onDayOfWeek*/,
2983  21 /*onDayOfMonth*/,
2984  96 /*atTimeCode*/,
2985  'w' /*atTimeModifier*/,
2986  4 /*deltaCode*/,
2987  '-' /*letter*/,
2988  },
2989  // Rule Iran 2034 2035 - Sep 21 24:00 0 -
2990  {
2991  34 /*fromYearTiny*/,
2992  35 /*toYearTiny*/,
2993  9 /*inMonth*/,
2994  0 /*onDayOfWeek*/,
2995  21 /*onDayOfMonth*/,
2996  96 /*atTimeCode*/,
2997  'w' /*atTimeModifier*/,
2998  0 /*deltaCode*/,
2999  '-' /*letter*/,
3000  },
3001  // Rule Iran 2036 2037 - Mar 20 24:00 1:00 -
3002  {
3003  36 /*fromYearTiny*/,
3004  37 /*toYearTiny*/,
3005  3 /*inMonth*/,
3006  0 /*onDayOfWeek*/,
3007  20 /*onDayOfMonth*/,
3008  96 /*atTimeCode*/,
3009  'w' /*atTimeModifier*/,
3010  4 /*deltaCode*/,
3011  '-' /*letter*/,
3012  },
3013  // Rule Iran 2036 2037 - Sep 20 24:00 0 -
3014  {
3015  36 /*fromYearTiny*/,
3016  37 /*toYearTiny*/,
3017  9 /*inMonth*/,
3018  0 /*onDayOfWeek*/,
3019  20 /*onDayOfMonth*/,
3020  96 /*atTimeCode*/,
3021  'w' /*atTimeModifier*/,
3022  0 /*deltaCode*/,
3023  '-' /*letter*/,
3024  },
3025  // Rule Iran 2038 2039 - Mar 21 24:00 1:00 -
3026  {
3027  38 /*fromYearTiny*/,
3028  39 /*toYearTiny*/,
3029  3 /*inMonth*/,
3030  0 /*onDayOfWeek*/,
3031  21 /*onDayOfMonth*/,
3032  96 /*atTimeCode*/,
3033  'w' /*atTimeModifier*/,
3034  4 /*deltaCode*/,
3035  '-' /*letter*/,
3036  },
3037  // Rule Iran 2038 2039 - Sep 21 24:00 0 -
3038  {
3039  38 /*fromYearTiny*/,
3040  39 /*toYearTiny*/,
3041  9 /*inMonth*/,
3042  0 /*onDayOfWeek*/,
3043  21 /*onDayOfMonth*/,
3044  96 /*atTimeCode*/,
3045  'w' /*atTimeModifier*/,
3046  0 /*deltaCode*/,
3047  '-' /*letter*/,
3048  },
3049  // Rule Iran 2040 2041 - Mar 20 24:00 1:00 -
3050  {
3051  40 /*fromYearTiny*/,
3052  41 /*toYearTiny*/,
3053  3 /*inMonth*/,
3054  0 /*onDayOfWeek*/,
3055  20 /*onDayOfMonth*/,
3056  96 /*atTimeCode*/,
3057  'w' /*atTimeModifier*/,
3058  4 /*deltaCode*/,
3059  '-' /*letter*/,
3060  },
3061  // Rule Iran 2040 2041 - Sep 20 24:00 0 -
3062  {
3063  40 /*fromYearTiny*/,
3064  41 /*toYearTiny*/,
3065  9 /*inMonth*/,
3066  0 /*onDayOfWeek*/,
3067  20 /*onDayOfMonth*/,
3068  96 /*atTimeCode*/,
3069  'w' /*atTimeModifier*/,
3070  0 /*deltaCode*/,
3071  '-' /*letter*/,
3072  },
3073  // Rule Iran 2042 2043 - Mar 21 24:00 1:00 -
3074  {
3075  42 /*fromYearTiny*/,
3076  43 /*toYearTiny*/,
3077  3 /*inMonth*/,
3078  0 /*onDayOfWeek*/,
3079  21 /*onDayOfMonth*/,
3080  96 /*atTimeCode*/,
3081  'w' /*atTimeModifier*/,
3082  4 /*deltaCode*/,
3083  '-' /*letter*/,
3084  },
3085  // Rule Iran 2042 2043 - Sep 21 24:00 0 -
3086  {
3087  42 /*fromYearTiny*/,
3088  43 /*toYearTiny*/,
3089  9 /*inMonth*/,
3090  0 /*onDayOfWeek*/,
3091  21 /*onDayOfMonth*/,
3092  96 /*atTimeCode*/,
3093  'w' /*atTimeModifier*/,
3094  0 /*deltaCode*/,
3095  '-' /*letter*/,
3096  },
3097  // Rule Iran 2044 2045 - Mar 20 24:00 1:00 -
3098  {
3099  44 /*fromYearTiny*/,
3100  45 /*toYearTiny*/,
3101  3 /*inMonth*/,
3102  0 /*onDayOfWeek*/,
3103  20 /*onDayOfMonth*/,
3104  96 /*atTimeCode*/,
3105  'w' /*atTimeModifier*/,
3106  4 /*deltaCode*/,
3107  '-' /*letter*/,
3108  },
3109  // Rule Iran 2044 2045 - Sep 20 24:00 0 -
3110  {
3111  44 /*fromYearTiny*/,
3112  45 /*toYearTiny*/,
3113  9 /*inMonth*/,
3114  0 /*onDayOfWeek*/,
3115  20 /*onDayOfMonth*/,
3116  96 /*atTimeCode*/,
3117  'w' /*atTimeModifier*/,
3118  0 /*deltaCode*/,
3119  '-' /*letter*/,
3120  },
3121  // Rule Iran 2046 2047 - Mar 21 24:00 1:00 -
3122  {
3123  46 /*fromYearTiny*/,
3124  47 /*toYearTiny*/,
3125  3 /*inMonth*/,
3126  0 /*onDayOfWeek*/,
3127  21 /*onDayOfMonth*/,
3128  96 /*atTimeCode*/,
3129  'w' /*atTimeModifier*/,
3130  4 /*deltaCode*/,
3131  '-' /*letter*/,
3132  },
3133  // Rule Iran 2046 2047 - Sep 21 24:00 0 -
3134  {
3135  46 /*fromYearTiny*/,
3136  47 /*toYearTiny*/,
3137  9 /*inMonth*/,
3138  0 /*onDayOfWeek*/,
3139  21 /*onDayOfMonth*/,
3140  96 /*atTimeCode*/,
3141  'w' /*atTimeModifier*/,
3142  0 /*deltaCode*/,
3143  '-' /*letter*/,
3144  },
3145  // Rule Iran 2048 2049 - Mar 20 24:00 1:00 -
3146  {
3147  48 /*fromYearTiny*/,
3148  49 /*toYearTiny*/,
3149  3 /*inMonth*/,
3150  0 /*onDayOfWeek*/,
3151  20 /*onDayOfMonth*/,
3152  96 /*atTimeCode*/,
3153  'w' /*atTimeModifier*/,
3154  4 /*deltaCode*/,
3155  '-' /*letter*/,
3156  },
3157  // Rule Iran 2048 2049 - Sep 20 24:00 0 -
3158  {
3159  48 /*fromYearTiny*/,
3160  49 /*toYearTiny*/,
3161  9 /*inMonth*/,
3162  0 /*onDayOfWeek*/,
3163  20 /*onDayOfMonth*/,
3164  96 /*atTimeCode*/,
3165  'w' /*atTimeModifier*/,
3166  0 /*deltaCode*/,
3167  '-' /*letter*/,
3168  },
3169  // Rule Iran 2050 2051 - Mar 21 24:00 1:00 -
3170  {
3171  50 /*fromYearTiny*/,
3172  51 /*toYearTiny*/,
3173  3 /*inMonth*/,
3174  0 /*onDayOfWeek*/,
3175  21 /*onDayOfMonth*/,
3176  96 /*atTimeCode*/,
3177  'w' /*atTimeModifier*/,
3178  4 /*deltaCode*/,
3179  '-' /*letter*/,
3180  },
3181  // Rule Iran 2050 2051 - Sep 21 24:00 0 -
3182  {
3183  50 /*fromYearTiny*/,
3184  51 /*toYearTiny*/,
3185  9 /*inMonth*/,
3186  0 /*onDayOfWeek*/,
3187  21 /*onDayOfMonth*/,
3188  96 /*atTimeCode*/,
3189  'w' /*atTimeModifier*/,
3190  0 /*deltaCode*/,
3191  '-' /*letter*/,
3192  },
3193 
3194 };
3195 
3196 
3197 
3198 const basic::ZonePolicy kPolicyIran ACE_TIME_PROGMEM = {
3199  kZoneRulesIran /*rules*/,
3200  nullptr /* letters */,
3201  55 /*numRules*/,
3202  0 /* numLetters */,
3203 };
3204 
3205 //---------------------------------------------------------------------------
3206 // Policy name: Iraq
3207 // Rules: 3
3208 // Memory (8-bit): 33
3209 // Memory (32-bit): 48
3210 //---------------------------------------------------------------------------
3211 
3212 static const basic::ZoneRule kZoneRulesIraq[] ACE_TIME_PROGMEM = {
3213  // Rule Iraq 1985 1990 - Sep lastSun 1:00s 0 -
3214  {
3215  -15 /*fromYearTiny*/,
3216  -10 /*toYearTiny*/,
3217  9 /*inMonth*/,
3218  7 /*onDayOfWeek*/,
3219  0 /*onDayOfMonth*/,
3220  4 /*atTimeCode*/,
3221  's' /*atTimeModifier*/,
3222  0 /*deltaCode*/,
3223  '-' /*letter*/,
3224  },
3225  // Rule Iraq 1991 2007 - Apr 1 3:00s 1:00 -
3226  {
3227  -9 /*fromYearTiny*/,
3228  7 /*toYearTiny*/,
3229  4 /*inMonth*/,
3230  0 /*onDayOfWeek*/,
3231  1 /*onDayOfMonth*/,
3232  12 /*atTimeCode*/,
3233  's' /*atTimeModifier*/,
3234  4 /*deltaCode*/,
3235  '-' /*letter*/,
3236  },
3237  // Rule Iraq 1991 2007 - Oct 1 3:00s 0 -
3238  {
3239  -9 /*fromYearTiny*/,
3240  7 /*toYearTiny*/,
3241  10 /*inMonth*/,
3242  0 /*onDayOfWeek*/,
3243  1 /*onDayOfMonth*/,
3244  12 /*atTimeCode*/,
3245  's' /*atTimeModifier*/,
3246  0 /*deltaCode*/,
3247  '-' /*letter*/,
3248  },
3249 
3250 };
3251 
3252 
3253 
3254 const basic::ZonePolicy kPolicyIraq ACE_TIME_PROGMEM = {
3255  kZoneRulesIraq /*rules*/,
3256  nullptr /* letters */,
3257  3 /*numRules*/,
3258  0 /* numLetters */,
3259 };
3260 
3261 //---------------------------------------------------------------------------
3262 // Policy name: Japan
3263 // Rules: 1
3264 // Memory (8-bit): 15
3265 // Memory (32-bit): 24
3266 //---------------------------------------------------------------------------
3267 
3268 static const basic::ZoneRule kZoneRulesJapan[] ACE_TIME_PROGMEM = {
3269  // Rule Japan 1948 1951 - Sep Sat>=8 25:00 0 S
3270  {
3271  -52 /*fromYearTiny*/,
3272  -49 /*toYearTiny*/,
3273  9 /*inMonth*/,
3274  6 /*onDayOfWeek*/,
3275  8 /*onDayOfMonth*/,
3276  100 /*atTimeCode*/,
3277  'w' /*atTimeModifier*/,
3278  0 /*deltaCode*/,
3279  'S' /*letter*/,
3280  },
3281 
3282 };
3283 
3284 
3285 
3286 const basic::ZonePolicy kPolicyJapan ACE_TIME_PROGMEM = {
3287  kZoneRulesJapan /*rules*/,
3288  nullptr /* letters */,
3289  1 /*numRules*/,
3290  0 /* numLetters */,
3291 };
3292 
3293 //---------------------------------------------------------------------------
3294 // Policy name: Jordan
3295 // Rules: 12
3296 // Memory (8-bit): 114
3297 // Memory (32-bit): 156
3298 //---------------------------------------------------------------------------
3299 
3300 static const basic::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = {
3301  // Rule Jordan 1995 1998 - Sep Fri>=15 0:00s 0 -
3302  {
3303  -5 /*fromYearTiny*/,
3304  -2 /*toYearTiny*/,
3305  9 /*inMonth*/,
3306  5 /*onDayOfWeek*/,
3307  15 /*onDayOfMonth*/,
3308  0 /*atTimeCode*/,
3309  's' /*atTimeModifier*/,
3310  0 /*deltaCode*/,
3311  '-' /*letter*/,
3312  },
3313  // Rule Jordan 1999 only - Jul 1 0:00s 1:00 S
3314  {
3315  -1 /*fromYearTiny*/,
3316  -1 /*toYearTiny*/,
3317  7 /*inMonth*/,
3318  0 /*onDayOfWeek*/,
3319  1 /*onDayOfMonth*/,
3320  0 /*atTimeCode*/,
3321  's' /*atTimeModifier*/,
3322  4 /*deltaCode*/,
3323  'S' /*letter*/,
3324  },
3325  // Rule Jordan 1999 2002 - Sep lastFri 0:00s 0 -
3326  {
3327  -1 /*fromYearTiny*/,
3328  2 /*toYearTiny*/,
3329  9 /*inMonth*/,
3330  5 /*onDayOfWeek*/,
3331  0 /*onDayOfMonth*/,
3332  0 /*atTimeCode*/,
3333  's' /*atTimeModifier*/,
3334  0 /*deltaCode*/,
3335  '-' /*letter*/,
3336  },
3337  // Rule Jordan 2000 2001 - Mar lastThu 0:00s 1:00 S
3338  {
3339  0 /*fromYearTiny*/,
3340  1 /*toYearTiny*/,
3341  3 /*inMonth*/,
3342  4 /*onDayOfWeek*/,
3343  0 /*onDayOfMonth*/,
3344  0 /*atTimeCode*/,
3345  's' /*atTimeModifier*/,
3346  4 /*deltaCode*/,
3347  'S' /*letter*/,
3348  },
3349  // Rule Jordan 2002 2012 - Mar lastThu 24:00 1:00 S
3350  {
3351  2 /*fromYearTiny*/,
3352  12 /*toYearTiny*/,
3353  3 /*inMonth*/,
3354  4 /*onDayOfWeek*/,
3355  0 /*onDayOfMonth*/,
3356  96 /*atTimeCode*/,
3357  'w' /*atTimeModifier*/,
3358  4 /*deltaCode*/,
3359  'S' /*letter*/,
3360  },
3361  // Rule Jordan 2003 only - Oct 24 0:00s 0 -
3362  {
3363  3 /*fromYearTiny*/,
3364  3 /*toYearTiny*/,
3365  10 /*inMonth*/,
3366  0 /*onDayOfWeek*/,
3367  24 /*onDayOfMonth*/,
3368  0 /*atTimeCode*/,
3369  's' /*atTimeModifier*/,
3370  0 /*deltaCode*/,
3371  '-' /*letter*/,
3372  },
3373  // Rule Jordan 2004 only - Oct 15 0:00s 0 -
3374  {
3375  4 /*fromYearTiny*/,
3376  4 /*toYearTiny*/,
3377  10 /*inMonth*/,
3378  0 /*onDayOfWeek*/,
3379  15 /*onDayOfMonth*/,
3380  0 /*atTimeCode*/,
3381  's' /*atTimeModifier*/,
3382  0 /*deltaCode*/,
3383  '-' /*letter*/,
3384  },
3385  // Rule Jordan 2005 only - Sep lastFri 0:00s 0 -
3386  {
3387  5 /*fromYearTiny*/,
3388  5 /*toYearTiny*/,
3389  9 /*inMonth*/,
3390  5 /*onDayOfWeek*/,
3391  0 /*onDayOfMonth*/,
3392  0 /*atTimeCode*/,
3393  's' /*atTimeModifier*/,
3394  0 /*deltaCode*/,
3395  '-' /*letter*/,
3396  },
3397  // Rule Jordan 2006 2011 - Oct lastFri 0:00s 0 -
3398  {
3399  6 /*fromYearTiny*/,
3400  11 /*toYearTiny*/,
3401  10 /*inMonth*/,
3402  5 /*onDayOfWeek*/,
3403  0 /*onDayOfMonth*/,
3404  0 /*atTimeCode*/,
3405  's' /*atTimeModifier*/,
3406  0 /*deltaCode*/,
3407  '-' /*letter*/,
3408  },
3409  // Rule Jordan 2013 only - Dec 20 0:00 0 -
3410  {
3411  13 /*fromYearTiny*/,
3412  13 /*toYearTiny*/,
3413  12 /*inMonth*/,
3414  0 /*onDayOfWeek*/,
3415  20 /*onDayOfMonth*/,
3416  0 /*atTimeCode*/,
3417  'w' /*atTimeModifier*/,
3418  0 /*deltaCode*/,
3419  '-' /*letter*/,
3420  },
3421  // Rule Jordan 2014 max - Mar lastThu 24:00 1:00 S
3422  {
3423  14 /*fromYearTiny*/,
3424  126 /*toYearTiny*/,
3425  3 /*inMonth*/,
3426  4 /*onDayOfWeek*/,
3427  0 /*onDayOfMonth*/,
3428  96 /*atTimeCode*/,
3429  'w' /*atTimeModifier*/,
3430  4 /*deltaCode*/,
3431  'S' /*letter*/,
3432  },
3433  // Rule Jordan 2014 max - Oct lastFri 0:00s 0 -
3434  {
3435  14 /*fromYearTiny*/,
3436  126 /*toYearTiny*/,
3437  10 /*inMonth*/,
3438  5 /*onDayOfWeek*/,
3439  0 /*onDayOfMonth*/,
3440  0 /*atTimeCode*/,
3441  's' /*atTimeModifier*/,
3442  0 /*deltaCode*/,
3443  '-' /*letter*/,
3444  },
3445 
3446 };
3447 
3448 
3449 
3450 const basic::ZonePolicy kPolicyJordan ACE_TIME_PROGMEM = {
3451  kZoneRulesJordan /*rules*/,
3452  nullptr /* letters */,
3453  12 /*numRules*/,
3454  0 /* numLetters */,
3455 };
3456 
3457 //---------------------------------------------------------------------------
3458 // Policy name: LH
3459 // Rules: 9
3460 // Memory (8-bit): 87
3461 // Memory (32-bit): 120
3462 //---------------------------------------------------------------------------
3463 
3464 static const basic::ZoneRule kZoneRulesLH[] ACE_TIME_PROGMEM = {
3465  // Rule LH 1987 1999 - Oct lastSun 2:00 0:30 -
3466  {
3467  -13 /*fromYearTiny*/,
3468  -1 /*toYearTiny*/,
3469  10 /*inMonth*/,
3470  7 /*onDayOfWeek*/,
3471  0 /*onDayOfMonth*/,
3472  8 /*atTimeCode*/,
3473  'w' /*atTimeModifier*/,
3474  2 /*deltaCode*/,
3475  '-' /*letter*/,
3476  },
3477  // Rule LH 1990 1995 - Mar Sun>=1 2:00 0 -
3478  {
3479  -10 /*fromYearTiny*/,
3480  -5 /*toYearTiny*/,
3481  3 /*inMonth*/,
3482  7 /*onDayOfWeek*/,
3483  1 /*onDayOfMonth*/,
3484  8 /*atTimeCode*/,
3485  'w' /*atTimeModifier*/,
3486  0 /*deltaCode*/,
3487  '-' /*letter*/,
3488  },
3489  // Rule LH 1996 2005 - Mar lastSun 2:00 0 -
3490  {
3491  -4 /*fromYearTiny*/,
3492  5 /*toYearTiny*/,
3493  3 /*inMonth*/,
3494  7 /*onDayOfWeek*/,
3495  0 /*onDayOfMonth*/,
3496  8 /*atTimeCode*/,
3497  'w' /*atTimeModifier*/,
3498  0 /*deltaCode*/,
3499  '-' /*letter*/,
3500  },
3501  // Rule LH 2000 only - Aug lastSun 2:00 0:30 -
3502  {
3503  0 /*fromYearTiny*/,
3504  0 /*toYearTiny*/,
3505  8 /*inMonth*/,
3506  7 /*onDayOfWeek*/,
3507  0 /*onDayOfMonth*/,
3508  8 /*atTimeCode*/,
3509  'w' /*atTimeModifier*/,
3510  2 /*deltaCode*/,
3511  '-' /*letter*/,
3512  },
3513  // Rule LH 2001 2007 - Oct lastSun 2:00 0:30 -
3514  {
3515  1 /*fromYearTiny*/,
3516  7 /*toYearTiny*/,
3517  10 /*inMonth*/,
3518  7 /*onDayOfWeek*/,
3519  0 /*onDayOfMonth*/,
3520  8 /*atTimeCode*/,
3521  'w' /*atTimeModifier*/,
3522  2 /*deltaCode*/,
3523  '-' /*letter*/,
3524  },
3525  // Rule LH 2006 only - Apr Sun>=1 2:00 0 -
3526  {
3527  6 /*fromYearTiny*/,
3528  6 /*toYearTiny*/,
3529  4 /*inMonth*/,
3530  7 /*onDayOfWeek*/,
3531  1 /*onDayOfMonth*/,
3532  8 /*atTimeCode*/,
3533  'w' /*atTimeModifier*/,
3534  0 /*deltaCode*/,
3535  '-' /*letter*/,
3536  },
3537  // Rule LH 2007 only - Mar lastSun 2:00 0 -
3538  {
3539  7 /*fromYearTiny*/,
3540  7 /*toYearTiny*/,
3541  3 /*inMonth*/,
3542  7 /*onDayOfWeek*/,
3543  0 /*onDayOfMonth*/,
3544  8 /*atTimeCode*/,
3545  'w' /*atTimeModifier*/,
3546  0 /*deltaCode*/,
3547  '-' /*letter*/,
3548  },
3549  // Rule LH 2008 max - Apr Sun>=1 2:00 0 -
3550  {
3551  8 /*fromYearTiny*/,
3552  126 /*toYearTiny*/,
3553  4 /*inMonth*/,
3554  7 /*onDayOfWeek*/,
3555  1 /*onDayOfMonth*/,
3556  8 /*atTimeCode*/,
3557  'w' /*atTimeModifier*/,
3558  0 /*deltaCode*/,
3559  '-' /*letter*/,
3560  },
3561  // Rule LH 2008 max - Oct Sun>=1 2:00 0:30 -
3562  {
3563  8 /*fromYearTiny*/,
3564  126 /*toYearTiny*/,
3565  10 /*inMonth*/,
3566  7 /*onDayOfWeek*/,
3567  1 /*onDayOfMonth*/,
3568  8 /*atTimeCode*/,
3569  'w' /*atTimeModifier*/,
3570  2 /*deltaCode*/,
3571  '-' /*letter*/,
3572  },
3573 
3574 };
3575 
3576 
3577 
3578 const basic::ZonePolicy kPolicyLH ACE_TIME_PROGMEM = {
3579  kZoneRulesLH /*rules*/,
3580  nullptr /* letters */,
3581  9 /*numRules*/,
3582  0 /* numLetters */,
3583 };
3584 
3585 //---------------------------------------------------------------------------
3586 // Policy name: Lebanon
3587 // Rules: 3
3588 // Memory (8-bit): 33
3589 // Memory (32-bit): 48
3590 //---------------------------------------------------------------------------
3591 
3592 static const basic::ZoneRule kZoneRulesLebanon[] ACE_TIME_PROGMEM = {
3593  // Rule Lebanon 1993 max - Mar lastSun 0:00 1:00 S
3594  {
3595  -7 /*fromYearTiny*/,
3596  126 /*toYearTiny*/,
3597  3 /*inMonth*/,
3598  7 /*onDayOfWeek*/,
3599  0 /*onDayOfMonth*/,
3600  0 /*atTimeCode*/,
3601  'w' /*atTimeModifier*/,
3602  4 /*deltaCode*/,
3603  'S' /*letter*/,
3604  },
3605  // Rule Lebanon 1993 1998 - Sep lastSun 0:00 0 -
3606  {
3607  -7 /*fromYearTiny*/,
3608  -2 /*toYearTiny*/,
3609  9 /*inMonth*/,
3610  7 /*onDayOfWeek*/,
3611  0 /*onDayOfMonth*/,
3612  0 /*atTimeCode*/,
3613  'w' /*atTimeModifier*/,
3614  0 /*deltaCode*/,
3615  '-' /*letter*/,
3616  },
3617  // Rule Lebanon 1999 max - Oct lastSun 0:00 0 -
3618  {
3619  -1 /*fromYearTiny*/,
3620  126 /*toYearTiny*/,
3621  10 /*inMonth*/,
3622  7 /*onDayOfWeek*/,
3623  0 /*onDayOfMonth*/,
3624  0 /*atTimeCode*/,
3625  'w' /*atTimeModifier*/,
3626  0 /*deltaCode*/,
3627  '-' /*letter*/,
3628  },
3629 
3630 };
3631 
3632 
3633 
3634 const basic::ZonePolicy kPolicyLebanon ACE_TIME_PROGMEM = {
3635  kZoneRulesLebanon /*rules*/,
3636  nullptr /* letters */,
3637  3 /*numRules*/,
3638  0 /* numLetters */,
3639 };
3640 
3641 //---------------------------------------------------------------------------
3642 // Policy name: Macau
3643 // Rules: 1
3644 // Memory (8-bit): 15
3645 // Memory (32-bit): 24
3646 //---------------------------------------------------------------------------
3647 
3648 static const basic::ZoneRule kZoneRulesMacau[] ACE_TIME_PROGMEM = {
3649  // Rule Macau 1979 only - Oct Sun>=16 03:30 0 S
3650  {
3651  -21 /*fromYearTiny*/,
3652  -21 /*toYearTiny*/,
3653  10 /*inMonth*/,
3654  7 /*onDayOfWeek*/,
3655  16 /*onDayOfMonth*/,
3656  14 /*atTimeCode*/,
3657  'w' /*atTimeModifier*/,
3658  0 /*deltaCode*/,
3659  'S' /*letter*/,
3660  },
3661 
3662 };
3663 
3664 
3665 
3666 const basic::ZonePolicy kPolicyMacau ACE_TIME_PROGMEM = {
3667  kZoneRulesMacau /*rules*/,
3668  nullptr /* letters */,
3669  1 /*numRules*/,
3670  0 /* numLetters */,
3671 };
3672 
3673 //---------------------------------------------------------------------------
3674 // Policy name: Mauritius
3675 // Rules: 3
3676 // Memory (8-bit): 33
3677 // Memory (32-bit): 48
3678 //---------------------------------------------------------------------------
3679 
3680 static const basic::ZoneRule kZoneRulesMauritius[] ACE_TIME_PROGMEM = {
3681  // Rule Mauritius 1983 only - Mar 21 0:00 0 -
3682  {
3683  -17 /*fromYearTiny*/,
3684  -17 /*toYearTiny*/,
3685  3 /*inMonth*/,
3686  0 /*onDayOfWeek*/,
3687  21 /*onDayOfMonth*/,
3688  0 /*atTimeCode*/,
3689  'w' /*atTimeModifier*/,
3690  0 /*deltaCode*/,
3691  '-' /*letter*/,
3692  },
3693  // Rule Mauritius 2008 only - Oct lastSun 2:00 1:00 -
3694  {
3695  8 /*fromYearTiny*/,
3696  8 /*toYearTiny*/,
3697  10 /*inMonth*/,
3698  7 /*onDayOfWeek*/,
3699  0 /*onDayOfMonth*/,
3700  8 /*atTimeCode*/,
3701  'w' /*atTimeModifier*/,
3702  4 /*deltaCode*/,
3703  '-' /*letter*/,
3704  },
3705  // Rule Mauritius 2009 only - Mar lastSun 2:00 0 -
3706  {
3707  9 /*fromYearTiny*/,
3708  9 /*toYearTiny*/,
3709  3 /*inMonth*/,
3710  7 /*onDayOfWeek*/,
3711  0 /*onDayOfMonth*/,
3712  8 /*atTimeCode*/,
3713  'w' /*atTimeModifier*/,
3714  0 /*deltaCode*/,
3715  '-' /*letter*/,
3716  },
3717 
3718 };
3719 
3720 
3721 
3722 const basic::ZonePolicy kPolicyMauritius ACE_TIME_PROGMEM = {
3723  kZoneRulesMauritius /*rules*/,
3724  nullptr /* letters */,
3725  3 /*numRules*/,
3726  0 /* numLetters */,
3727 };
3728 
3729 //---------------------------------------------------------------------------
3730 // Policy name: Mexico
3731 // Rules: 7
3732 // Memory (8-bit): 69
3733 // Memory (32-bit): 96
3734 //---------------------------------------------------------------------------
3735 
3736 static const basic::ZoneRule kZoneRulesMexico[] ACE_TIME_PROGMEM = {
3737  // Rule Mexico 1950 only - Jul 30 0:00 0 S
3738  {
3739  -50 /*fromYearTiny*/,
3740  -50 /*toYearTiny*/,
3741  7 /*inMonth*/,
3742  0 /*onDayOfWeek*/,
3743  30 /*onDayOfMonth*/,
3744  0 /*atTimeCode*/,
3745  'w' /*atTimeModifier*/,
3746  0 /*deltaCode*/,
3747  'S' /*letter*/,
3748  },
3749  // Rule Mexico 1996 2000 - Apr Sun>=1 2:00 1:00 D
3750  {
3751  -4 /*fromYearTiny*/,
3752  0 /*toYearTiny*/,
3753  4 /*inMonth*/,
3754  7 /*onDayOfWeek*/,
3755  1 /*onDayOfMonth*/,
3756  8 /*atTimeCode*/,
3757  'w' /*atTimeModifier*/,
3758  4 /*deltaCode*/,
3759  'D' /*letter*/,
3760  },
3761  // Rule Mexico 1996 2000 - Oct lastSun 2:00 0 S
3762  {
3763  -4 /*fromYearTiny*/,
3764  0 /*toYearTiny*/,
3765  10 /*inMonth*/,
3766  7 /*onDayOfWeek*/,
3767  0 /*onDayOfMonth*/,
3768  8 /*atTimeCode*/,
3769  'w' /*atTimeModifier*/,
3770  0 /*deltaCode*/,
3771  'S' /*letter*/,
3772  },
3773  // Rule Mexico 2001 only - May Sun>=1 2:00 1:00 D
3774  {
3775  1 /*fromYearTiny*/,
3776  1 /*toYearTiny*/,
3777  5 /*inMonth*/,
3778  7 /*onDayOfWeek*/,
3779  1 /*onDayOfMonth*/,
3780  8 /*atTimeCode*/,
3781  'w' /*atTimeModifier*/,
3782  4 /*deltaCode*/,
3783  'D' /*letter*/,
3784  },
3785  // Rule Mexico 2001 only - Sep lastSun 2:00 0 S
3786  {
3787  1 /*fromYearTiny*/,
3788  1 /*toYearTiny*/,
3789  9 /*inMonth*/,
3790  7 /*onDayOfWeek*/,
3791  0 /*onDayOfMonth*/,
3792  8 /*atTimeCode*/,
3793  'w' /*atTimeModifier*/,
3794  0 /*deltaCode*/,
3795  'S' /*letter*/,
3796  },
3797  // Rule Mexico 2002 max - Apr Sun>=1 2:00 1:00 D
3798  {
3799  2 /*fromYearTiny*/,
3800  126 /*toYearTiny*/,
3801  4 /*inMonth*/,
3802  7 /*onDayOfWeek*/,
3803  1 /*onDayOfMonth*/,
3804  8 /*atTimeCode*/,
3805  'w' /*atTimeModifier*/,
3806  4 /*deltaCode*/,
3807  'D' /*letter*/,
3808  },
3809  // Rule Mexico 2002 max - Oct lastSun 2:00 0 S
3810  {
3811  2 /*fromYearTiny*/,
3812  126 /*toYearTiny*/,
3813  10 /*inMonth*/,
3814  7 /*onDayOfWeek*/,
3815  0 /*onDayOfMonth*/,
3816  8 /*atTimeCode*/,
3817  'w' /*atTimeModifier*/,
3818  0 /*deltaCode*/,
3819  'S' /*letter*/,
3820  },
3821 
3822 };
3823 
3824 
3825 
3826 const basic::ZonePolicy kPolicyMexico ACE_TIME_PROGMEM = {
3827  kZoneRulesMexico /*rules*/,
3828  nullptr /* letters */,
3829  7 /*numRules*/,
3830  0 /* numLetters */,
3831 };
3832 
3833 //---------------------------------------------------------------------------
3834 // Policy name: Moldova
3835 // Rules: 2
3836 // Memory (8-bit): 24
3837 // Memory (32-bit): 36
3838 //---------------------------------------------------------------------------
3839 
3840 static const basic::ZoneRule kZoneRulesMoldova[] ACE_TIME_PROGMEM = {
3841  // Rule Moldova 1997 max - Mar lastSun 2:00 1:00 S
3842  {
3843  -3 /*fromYearTiny*/,
3844  126 /*toYearTiny*/,
3845  3 /*inMonth*/,
3846  7 /*onDayOfWeek*/,
3847  0 /*onDayOfMonth*/,
3848  8 /*atTimeCode*/,
3849  'w' /*atTimeModifier*/,
3850  4 /*deltaCode*/,
3851  'S' /*letter*/,
3852  },
3853  // Rule Moldova 1997 max - Oct lastSun 3:00 0 -
3854  {
3855  -3 /*fromYearTiny*/,
3856  126 /*toYearTiny*/,
3857  10 /*inMonth*/,
3858  7 /*onDayOfWeek*/,
3859  0 /*onDayOfMonth*/,
3860  12 /*atTimeCode*/,
3861  'w' /*atTimeModifier*/,
3862  0 /*deltaCode*/,
3863  '-' /*letter*/,
3864  },
3865 
3866 };
3867 
3868 
3869 
3870 const basic::ZonePolicy kPolicyMoldova ACE_TIME_PROGMEM = {
3871  kZoneRulesMoldova /*rules*/,
3872  nullptr /* letters */,
3873  2 /*numRules*/,
3874  0 /* numLetters */,
3875 };
3876 
3877 //---------------------------------------------------------------------------
3878 // Policy name: Moncton
3879 // Rules: 3
3880 // Memory (8-bit): 33
3881 // Memory (32-bit): 48
3882 //---------------------------------------------------------------------------
3883 
3884 static const basic::ZoneRule kZoneRulesMoncton[] ACE_TIME_PROGMEM = {
3885  // Rule Moncton 1957 1972 - Oct lastSun 2:00 0 S
3886  {
3887  -43 /*fromYearTiny*/,
3888  -28 /*toYearTiny*/,
3889  10 /*inMonth*/,
3890  7 /*onDayOfWeek*/,
3891  0 /*onDayOfMonth*/,
3892  8 /*atTimeCode*/,
3893  'w' /*atTimeModifier*/,
3894  0 /*deltaCode*/,
3895  'S' /*letter*/,
3896  },
3897  // Rule Moncton 1993 2006 - Apr Sun>=1 0:01 1:00 D
3898  {
3899  -7 /*fromYearTiny*/,
3900  6 /*toYearTiny*/,
3901  4 /*inMonth*/,
3902  7 /*onDayOfWeek*/,
3903  1 /*onDayOfMonth*/,
3904  0 /*atTimeCode*/,
3905  'w' /*atTimeModifier*/,
3906  4 /*deltaCode*/,
3907  'D' /*letter*/,
3908  },
3909  // Rule Moncton 1993 2006 - Oct lastSun 0:01 0 S
3910  {
3911  -7 /*fromYearTiny*/,
3912  6 /*toYearTiny*/,
3913  10 /*inMonth*/,
3914  7 /*onDayOfWeek*/,
3915  0 /*onDayOfMonth*/,
3916  0 /*atTimeCode*/,
3917  'w' /*atTimeModifier*/,
3918  0 /*deltaCode*/,
3919  'S' /*letter*/,
3920  },
3921 
3922 };
3923 
3924 
3925 
3926 const basic::ZonePolicy kPolicyMoncton ACE_TIME_PROGMEM = {
3927  kZoneRulesMoncton /*rules*/,
3928  nullptr /* letters */,
3929  3 /*numRules*/,
3930  0 /* numLetters */,
3931 };
3932 
3933 //---------------------------------------------------------------------------
3934 // Policy name: Mongol
3935 // Rules: 6
3936 // Memory (8-bit): 60
3937 // Memory (32-bit): 84
3938 //---------------------------------------------------------------------------
3939 
3940 static const basic::ZoneRule kZoneRulesMongol[] ACE_TIME_PROGMEM = {
3941  // Rule Mongol 1984 1998 - Sep lastSun 0:00 0 -
3942  {
3943  -16 /*fromYearTiny*/,
3944  -2 /*toYearTiny*/,
3945  9 /*inMonth*/,
3946  7 /*onDayOfWeek*/,
3947  0 /*onDayOfMonth*/,
3948  0 /*atTimeCode*/,
3949  'w' /*atTimeModifier*/,
3950  0 /*deltaCode*/,
3951  '-' /*letter*/,
3952  },
3953  // Rule Mongol 2001 only - Apr lastSat 2:00 1:00 -
3954  {
3955  1 /*fromYearTiny*/,
3956  1 /*toYearTiny*/,
3957  4 /*inMonth*/,
3958  6 /*onDayOfWeek*/,
3959  0 /*onDayOfMonth*/,
3960  8 /*atTimeCode*/,
3961  'w' /*atTimeModifier*/,
3962  4 /*deltaCode*/,
3963  '-' /*letter*/,
3964  },
3965  // Rule Mongol 2001 2006 - Sep lastSat 2:00 0 -
3966  {
3967  1 /*fromYearTiny*/,
3968  6 /*toYearTiny*/,
3969  9 /*inMonth*/,
3970  6 /*onDayOfWeek*/,
3971  0 /*onDayOfMonth*/,
3972  8 /*atTimeCode*/,
3973  'w' /*atTimeModifier*/,
3974  0 /*deltaCode*/,
3975  '-' /*letter*/,
3976  },
3977  // Rule Mongol 2002 2006 - Mar lastSat 2:00 1:00 -
3978  {
3979  2 /*fromYearTiny*/,
3980  6 /*toYearTiny*/,
3981  3 /*inMonth*/,
3982  6 /*onDayOfWeek*/,
3983  0 /*onDayOfMonth*/,
3984  8 /*atTimeCode*/,
3985  'w' /*atTimeModifier*/,
3986  4 /*deltaCode*/,
3987  '-' /*letter*/,
3988  },
3989  // Rule Mongol 2015 2016 - Mar lastSat 2:00 1:00 -
3990  {
3991  15 /*fromYearTiny*/,
3992  16 /*toYearTiny*/,
3993  3 /*inMonth*/,
3994  6 /*onDayOfWeek*/,
3995  0 /*onDayOfMonth*/,
3996  8 /*atTimeCode*/,
3997  'w' /*atTimeModifier*/,
3998  4 /*deltaCode*/,
3999  '-' /*letter*/,
4000  },
4001  // Rule Mongol 2015 2016 - Sep lastSat 0:00 0 -
4002  {
4003  15 /*fromYearTiny*/,
4004  16 /*toYearTiny*/,
4005  9 /*inMonth*/,
4006  6 /*onDayOfWeek*/,
4007  0 /*onDayOfMonth*/,
4008  0 /*atTimeCode*/,
4009  'w' /*atTimeModifier*/,
4010  0 /*deltaCode*/,
4011  '-' /*letter*/,
4012  },
4013 
4014 };
4015 
4016 
4017 
4018 const basic::ZonePolicy kPolicyMongol ACE_TIME_PROGMEM = {
4019  kZoneRulesMongol /*rules*/,
4020  nullptr /* letters */,
4021  6 /*numRules*/,
4022  0 /* numLetters */,
4023 };
4024 
4025 //---------------------------------------------------------------------------
4026 // Policy name: NC
4027 // Rules: 1
4028 // Memory (8-bit): 15
4029 // Memory (32-bit): 24
4030 //---------------------------------------------------------------------------
4031 
4032 static const basic::ZoneRule kZoneRulesNC[] ACE_TIME_PROGMEM = {
4033  // Rule NC 1997 only - Mar 2 2:00s 0 -
4034  {
4035  -3 /*fromYearTiny*/,
4036  -3 /*toYearTiny*/,
4037  3 /*inMonth*/,
4038  0 /*onDayOfWeek*/,
4039  2 /*onDayOfMonth*/,
4040  8 /*atTimeCode*/,
4041  's' /*atTimeModifier*/,
4042  0 /*deltaCode*/,
4043  '-' /*letter*/,
4044  },
4045 
4046 };
4047 
4048 
4049 
4050 const basic::ZonePolicy kPolicyNC ACE_TIME_PROGMEM = {
4051  kZoneRulesNC /*rules*/,
4052  nullptr /* letters */,
4053  1 /*numRules*/,
4054  0 /* numLetters */,
4055 };
4056 
4057 //---------------------------------------------------------------------------
4058 // Policy name: NZ
4059 // Rules: 5
4060 // Memory (8-bit): 51
4061 // Memory (32-bit): 72
4062 //---------------------------------------------------------------------------
4063 
4064 static const basic::ZoneRule kZoneRulesNZ[] ACE_TIME_PROGMEM = {
4065  // Rule NZ 1989 only - Oct Sun>=8 2:00s 1:00 D
4066  {
4067  -11 /*fromYearTiny*/,
4068  -11 /*toYearTiny*/,
4069  10 /*inMonth*/,
4070  7 /*onDayOfWeek*/,
4071  8 /*onDayOfMonth*/,
4072  8 /*atTimeCode*/,
4073  's' /*atTimeModifier*/,
4074  4 /*deltaCode*/,
4075  'D' /*letter*/,
4076  },
4077  // Rule NZ 1990 2006 - Oct Sun>=1 2:00s 1:00 D
4078  {
4079  -10 /*fromYearTiny*/,
4080  6 /*toYearTiny*/,
4081  10 /*inMonth*/,
4082  7 /*onDayOfWeek*/,
4083  1 /*onDayOfMonth*/,
4084  8 /*atTimeCode*/,
4085  's' /*atTimeModifier*/,
4086  4 /*deltaCode*/,
4087  'D' /*letter*/,
4088  },
4089  // Rule NZ 1990 2007 - Mar Sun>=15 2:00s 0 S
4090  {
4091  -10 /*fromYearTiny*/,
4092  7 /*toYearTiny*/,
4093  3 /*inMonth*/,
4094  7 /*onDayOfWeek*/,
4095  15 /*onDayOfMonth*/,
4096  8 /*atTimeCode*/,
4097  's' /*atTimeModifier*/,
4098  0 /*deltaCode*/,
4099  'S' /*letter*/,
4100  },
4101  // Rule NZ 2007 max - Sep lastSun 2:00s 1:00 D
4102  {
4103  7 /*fromYearTiny*/,
4104  126 /*toYearTiny*/,
4105  9 /*inMonth*/,
4106  7 /*onDayOfWeek*/,
4107  0 /*onDayOfMonth*/,
4108  8 /*atTimeCode*/,
4109  's' /*atTimeModifier*/,
4110  4 /*deltaCode*/,
4111  'D' /*letter*/,
4112  },
4113  // Rule NZ 2008 max - Apr Sun>=1 2:00s 0 S
4114  {
4115  8 /*fromYearTiny*/,
4116  126 /*toYearTiny*/,
4117  4 /*inMonth*/,
4118  7 /*onDayOfWeek*/,
4119  1 /*onDayOfMonth*/,
4120  8 /*atTimeCode*/,
4121  's' /*atTimeModifier*/,
4122  0 /*deltaCode*/,
4123  'S' /*letter*/,
4124  },
4125 
4126 };
4127 
4128 
4129 
4130 const basic::ZonePolicy kPolicyNZ ACE_TIME_PROGMEM = {
4131  kZoneRulesNZ /*rules*/,
4132  nullptr /* letters */,
4133  5 /*numRules*/,
4134  0 /* numLetters */,
4135 };
4136 
4137 //---------------------------------------------------------------------------
4138 // Policy name: Nic
4139 // Rules: 5
4140 // Memory (8-bit): 51
4141 // Memory (32-bit): 72
4142 //---------------------------------------------------------------------------
4143 
4144 static const basic::ZoneRule kZoneRulesNic[] ACE_TIME_PROGMEM = {
4145  // Rule Nic 1979 1980 - Jun Mon>=23 0:00 0 S
4146  {
4147  -21 /*fromYearTiny*/,
4148  -20 /*toYearTiny*/,
4149  6 /*inMonth*/,
4150  1 /*onDayOfWeek*/,
4151  23 /*onDayOfMonth*/,
4152  0 /*atTimeCode*/,
4153  'w' /*atTimeModifier*/,
4154  0 /*deltaCode*/,
4155  'S' /*letter*/,
4156  },
4157  // Rule Nic 2005 only - Apr 10 0:00 1:00 D
4158  {
4159  5 /*fromYearTiny*/,
4160  5 /*toYearTiny*/,
4161  4 /*inMonth*/,
4162  0 /*onDayOfWeek*/,
4163  10 /*onDayOfMonth*/,
4164  0 /*atTimeCode*/,
4165  'w' /*atTimeModifier*/,
4166  4 /*deltaCode*/,
4167  'D' /*letter*/,
4168  },
4169  // Rule Nic 2005 only - Oct Sun>=1 0:00 0 S
4170  {
4171  5 /*fromYearTiny*/,
4172  5 /*toYearTiny*/,
4173  10 /*inMonth*/,
4174  7 /*onDayOfWeek*/,
4175  1 /*onDayOfMonth*/,
4176  0 /*atTimeCode*/,
4177  'w' /*atTimeModifier*/,
4178  0 /*deltaCode*/,
4179  'S' /*letter*/,
4180  },
4181  // Rule Nic 2006 only - Apr 30 2:00 1:00 D
4182  {
4183  6 /*fromYearTiny*/,
4184  6 /*toYearTiny*/,
4185  4 /*inMonth*/,
4186  0 /*onDayOfWeek*/,
4187  30 /*onDayOfMonth*/,
4188  8 /*atTimeCode*/,
4189  'w' /*atTimeModifier*/,
4190  4 /*deltaCode*/,
4191  'D' /*letter*/,
4192  },
4193  // Rule Nic 2006 only - Oct Sun>=1 1:00 0 S
4194  {
4195  6 /*fromYearTiny*/,
4196  6 /*toYearTiny*/,
4197  10 /*inMonth*/,
4198  7 /*onDayOfWeek*/,
4199  1 /*onDayOfMonth*/,
4200  4 /*atTimeCode*/,
4201  'w' /*atTimeModifier*/,
4202  0 /*deltaCode*/,
4203  'S' /*letter*/,
4204  },
4205 
4206 };
4207 
4208 
4209 
4210 const basic::ZonePolicy kPolicyNic ACE_TIME_PROGMEM = {
4211  kZoneRulesNic /*rules*/,
4212  nullptr /* letters */,
4213  5 /*numRules*/,
4214  0 /* numLetters */,
4215 };
4216 
4217 //---------------------------------------------------------------------------
4218 // Policy name: PRC
4219 // Rules: 1
4220 // Memory (8-bit): 15
4221 // Memory (32-bit): 24
4222 //---------------------------------------------------------------------------
4223 
4224 static const basic::ZoneRule kZoneRulesPRC[] ACE_TIME_PROGMEM = {
4225  // Rule PRC 1986 1991 - Sep Sun>=11 2:00 0 S
4226  {
4227  -14 /*fromYearTiny*/,
4228  -9 /*toYearTiny*/,
4229  9 /*inMonth*/,
4230  7 /*onDayOfWeek*/,
4231  11 /*onDayOfMonth*/,
4232  8 /*atTimeCode*/,
4233  'w' /*atTimeModifier*/,
4234  0 /*deltaCode*/,
4235  'S' /*letter*/,
4236  },
4237 
4238 };
4239 
4240 
4241 
4242 const basic::ZonePolicy kPolicyPRC ACE_TIME_PROGMEM = {
4243  kZoneRulesPRC /*rules*/,
4244  nullptr /* letters */,
4245  1 /*numRules*/,
4246  0 /* numLetters */,
4247 };
4248 
4249 //---------------------------------------------------------------------------
4250 // Policy name: Pakistan
4251 // Rules: 6
4252 // Memory (8-bit): 60
4253 // Memory (32-bit): 84
4254 //---------------------------------------------------------------------------
4255 
4256 static const basic::ZoneRule kZoneRulesPakistan[] ACE_TIME_PROGMEM = {
4257  // Anchor: Rule Pakistan 2002 only - Oct Sun>=2 0:00 0 -
4258  {
4259  -127 /*fromYearTiny*/,
4260  -127 /*toYearTiny*/,
4261  1 /*inMonth*/,
4262  0 /*onDayOfWeek*/,
4263  1 /*onDayOfMonth*/,
4264  0 /*atTimeCode*/,
4265  'w' /*atTimeModifier*/,
4266  0 /*deltaCode*/,
4267  '-' /*letter*/,
4268  },
4269  // Rule Pakistan 2002 only - Apr Sun>=2 0:00 1:00 S
4270  {
4271  2 /*fromYearTiny*/,
4272  2 /*toYearTiny*/,
4273  4 /*inMonth*/,
4274  7 /*onDayOfWeek*/,
4275  2 /*onDayOfMonth*/,
4276  0 /*atTimeCode*/,
4277  'w' /*atTimeModifier*/,
4278  4 /*deltaCode*/,
4279  'S' /*letter*/,
4280  },
4281  // Rule Pakistan 2002 only - Oct Sun>=2 0:00 0 -
4282  {
4283  2 /*fromYearTiny*/,
4284  2 /*toYearTiny*/,
4285  10 /*inMonth*/,
4286  7 /*onDayOfWeek*/,
4287  2 /*onDayOfMonth*/,
4288  0 /*atTimeCode*/,
4289  'w' /*atTimeModifier*/,
4290  0 /*deltaCode*/,
4291  '-' /*letter*/,
4292  },
4293  // Rule Pakistan 2008 only - Jun 1 0:00 1:00 S
4294  {
4295  8 /*fromYearTiny*/,
4296  8 /*toYearTiny*/,
4297  6 /*inMonth*/,
4298  0 /*onDayOfWeek*/,
4299  1 /*onDayOfMonth*/,
4300  0 /*atTimeCode*/,
4301  'w' /*atTimeModifier*/,
4302  4 /*deltaCode*/,
4303  'S' /*letter*/,
4304  },
4305  // Rule Pakistan 2008 2009 - Nov 1 0:00 0 -
4306  {
4307  8 /*fromYearTiny*/,
4308  9 /*toYearTiny*/,
4309  11 /*inMonth*/,
4310  0 /*onDayOfWeek*/,
4311  1 /*onDayOfMonth*/,
4312  0 /*atTimeCode*/,
4313  'w' /*atTimeModifier*/,
4314  0 /*deltaCode*/,
4315  '-' /*letter*/,
4316  },
4317  // Rule Pakistan 2009 only - Apr 15 0:00 1:00 S
4318  {
4319  9 /*fromYearTiny*/,
4320  9 /*toYearTiny*/,
4321  4 /*inMonth*/,
4322  0 /*onDayOfWeek*/,
4323  15 /*onDayOfMonth*/,
4324  0 /*atTimeCode*/,
4325  'w' /*atTimeModifier*/,
4326  4 /*deltaCode*/,
4327  'S' /*letter*/,
4328  },
4329 
4330 };
4331 
4332 
4333 
4334 const basic::ZonePolicy kPolicyPakistan ACE_TIME_PROGMEM = {
4335  kZoneRulesPakistan /*rules*/,
4336  nullptr /* letters */,
4337  6 /*numRules*/,
4338  0 /* numLetters */,
4339 };
4340 
4341 //---------------------------------------------------------------------------
4342 // Policy name: Para
4343 // Rules: 10
4344 // Memory (8-bit): 96
4345 // Memory (32-bit): 132
4346 //---------------------------------------------------------------------------
4347 
4348 static const basic::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = {
4349  // Rule Para 1996 2001 - Oct Sun>=1 0:00 1:00 -
4350  {
4351  -4 /*fromYearTiny*/,
4352  1 /*toYearTiny*/,
4353  10 /*inMonth*/,
4354  7 /*onDayOfWeek*/,
4355  1 /*onDayOfMonth*/,
4356  0 /*atTimeCode*/,
4357  'w' /*atTimeModifier*/,
4358  4 /*deltaCode*/,
4359  '-' /*letter*/,
4360  },
4361  // Rule Para 1997 only - Feb lastSun 0:00 0 -
4362  {
4363  -3 /*fromYearTiny*/,
4364  -3 /*toYearTiny*/,
4365  2 /*inMonth*/,
4366  7 /*onDayOfWeek*/,
4367  0 /*onDayOfMonth*/,
4368  0 /*atTimeCode*/,
4369  'w' /*atTimeModifier*/,
4370  0 /*deltaCode*/,
4371  '-' /*letter*/,
4372  },
4373  // Rule Para 1998 2001 - Mar Sun>=1 0:00 0 -
4374  {
4375  -2 /*fromYearTiny*/,
4376  1 /*toYearTiny*/,
4377  3 /*inMonth*/,
4378  7 /*onDayOfWeek*/,
4379  1 /*onDayOfMonth*/,
4380  0 /*atTimeCode*/,
4381  'w' /*atTimeModifier*/,
4382  0 /*deltaCode*/,
4383  '-' /*letter*/,
4384  },
4385  // Rule Para 2002 2004 - Apr Sun>=1 0:00 0 -
4386  {
4387  2 /*fromYearTiny*/,
4388  4 /*toYearTiny*/,
4389  4 /*inMonth*/,
4390  7 /*onDayOfWeek*/,
4391  1 /*onDayOfMonth*/,
4392  0 /*atTimeCode*/,
4393  'w' /*atTimeModifier*/,
4394  0 /*deltaCode*/,
4395  '-' /*letter*/,
4396  },
4397  // Rule Para 2002 2003 - Sep Sun>=1 0:00 1:00 -
4398  {
4399  2 /*fromYearTiny*/,
4400  3 /*toYearTiny*/,
4401  9 /*inMonth*/,
4402  7 /*onDayOfWeek*/,
4403  1 /*onDayOfMonth*/,
4404  0 /*atTimeCode*/,
4405  'w' /*atTimeModifier*/,
4406  4 /*deltaCode*/,
4407  '-' /*letter*/,
4408  },
4409  // Rule Para 2004 2009 - Oct Sun>=15 0:00 1:00 -
4410  {
4411  4 /*fromYearTiny*/,
4412  9 /*toYearTiny*/,
4413  10 /*inMonth*/,
4414  7 /*onDayOfWeek*/,
4415  15 /*onDayOfMonth*/,
4416  0 /*atTimeCode*/,
4417  'w' /*atTimeModifier*/,
4418  4 /*deltaCode*/,
4419  '-' /*letter*/,
4420  },
4421  // Rule Para 2005 2009 - Mar Sun>=8 0:00 0 -
4422  {
4423  5 /*fromYearTiny*/,
4424  9 /*toYearTiny*/,
4425  3 /*inMonth*/,
4426  7 /*onDayOfWeek*/,
4427  8 /*onDayOfMonth*/,
4428  0 /*atTimeCode*/,
4429  'w' /*atTimeModifier*/,
4430  0 /*deltaCode*/,
4431  '-' /*letter*/,
4432  },
4433  // Rule Para 2010 max - Oct Sun>=1 0:00 1:00 -
4434  {
4435  10 /*fromYearTiny*/,
4436  126 /*toYearTiny*/,
4437  10 /*inMonth*/,
4438  7 /*onDayOfWeek*/,
4439  1 /*onDayOfMonth*/,
4440  0 /*atTimeCode*/,
4441  'w' /*atTimeModifier*/,
4442  4 /*deltaCode*/,
4443  '-' /*letter*/,
4444  },
4445  // Rule Para 2010 2012 - Apr Sun>=8 0:00 0 -
4446  {
4447  10 /*fromYearTiny*/,
4448  12 /*toYearTiny*/,
4449  4 /*inMonth*/,
4450  7 /*onDayOfWeek*/,
4451  8 /*onDayOfMonth*/,
4452  0 /*atTimeCode*/,
4453  'w' /*atTimeModifier*/,
4454  0 /*deltaCode*/,
4455  '-' /*letter*/,
4456  },
4457  // Rule Para 2013 max - Mar Sun>=22 0:00 0 -
4458  {
4459  13 /*fromYearTiny*/,
4460  126 /*toYearTiny*/,
4461  3 /*inMonth*/,
4462  7 /*onDayOfWeek*/,
4463  22 /*onDayOfMonth*/,
4464  0 /*atTimeCode*/,
4465  'w' /*atTimeModifier*/,
4466  0 /*deltaCode*/,
4467  '-' /*letter*/,
4468  },
4469 
4470 };
4471 
4472 
4473 
4474 const basic::ZonePolicy kPolicyPara ACE_TIME_PROGMEM = {
4475  kZoneRulesPara /*rules*/,
4476  nullptr /* letters */,
4477  10 /*numRules*/,
4478  0 /* numLetters */,
4479 };
4480 
4481 //---------------------------------------------------------------------------
4482 // Policy name: Peru
4483 // Rules: 1
4484 // Memory (8-bit): 15
4485 // Memory (32-bit): 24
4486 //---------------------------------------------------------------------------
4487 
4488 static const basic::ZoneRule kZoneRulesPeru[] ACE_TIME_PROGMEM = {
4489  // Rule Peru 1994 only - Apr 1 0:00 0 -
4490  {
4491  -6 /*fromYearTiny*/,
4492  -6 /*toYearTiny*/,
4493  4 /*inMonth*/,
4494  0 /*onDayOfWeek*/,
4495  1 /*onDayOfMonth*/,
4496  0 /*atTimeCode*/,
4497  'w' /*atTimeModifier*/,
4498  0 /*deltaCode*/,
4499  '-' /*letter*/,
4500  },
4501 
4502 };
4503 
4504 
4505 
4506 const basic::ZonePolicy kPolicyPeru ACE_TIME_PROGMEM = {
4507  kZoneRulesPeru /*rules*/,
4508  nullptr /* letters */,
4509  1 /*numRules*/,
4510  0 /* numLetters */,
4511 };
4512 
4513 //---------------------------------------------------------------------------
4514 // Policy name: Phil
4515 // Rules: 1
4516 // Memory (8-bit): 15
4517 // Memory (32-bit): 24
4518 //---------------------------------------------------------------------------
4519 
4520 static const basic::ZoneRule kZoneRulesPhil[] ACE_TIME_PROGMEM = {
4521  // Rule Phil 1978 only - Sep 21 0:00 0 S
4522  {
4523  -22 /*fromYearTiny*/,
4524  -22 /*toYearTiny*/,
4525  9 /*inMonth*/,
4526  0 /*onDayOfWeek*/,
4527  21 /*onDayOfMonth*/,
4528  0 /*atTimeCode*/,
4529  'w' /*atTimeModifier*/,
4530  0 /*deltaCode*/,
4531  'S' /*letter*/,
4532  },
4533 
4534 };
4535 
4536 
4537 
4538 const basic::ZonePolicy kPolicyPhil ACE_TIME_PROGMEM = {
4539  kZoneRulesPhil /*rules*/,
4540  nullptr /* letters */,
4541  1 /*numRules*/,
4542  0 /* numLetters */,
4543 };
4544 
4545 //---------------------------------------------------------------------------
4546 // Policy name: ROK
4547 // Rules: 1
4548 // Memory (8-bit): 15
4549 // Memory (32-bit): 24
4550 //---------------------------------------------------------------------------
4551 
4552 static const basic::ZoneRule kZoneRulesROK[] ACE_TIME_PROGMEM = {
4553  // Rule ROK 1987 1988 - Oct Sun>=8 3:00 0 S
4554  {
4555  -13 /*fromYearTiny*/,
4556  -12 /*toYearTiny*/,
4557  10 /*inMonth*/,
4558  7 /*onDayOfWeek*/,
4559  8 /*onDayOfMonth*/,
4560  12 /*atTimeCode*/,
4561  'w' /*atTimeModifier*/,
4562  0 /*deltaCode*/,
4563  'S' /*letter*/,
4564  },
4565 
4566 };
4567 
4568 
4569 
4570 const basic::ZonePolicy kPolicyROK ACE_TIME_PROGMEM = {
4571  kZoneRulesROK /*rules*/,
4572  nullptr /* letters */,
4573  1 /*numRules*/,
4574  0 /* numLetters */,
4575 };
4576 
4577 //---------------------------------------------------------------------------
4578 // Policy name: RussiaAsia
4579 // Rules: 3
4580 // Memory (8-bit): 33
4581 // Memory (32-bit): 48
4582 //---------------------------------------------------------------------------
4583 
4584 static const basic::ZoneRule kZoneRulesRussiaAsia[] ACE_TIME_PROGMEM = {
4585  // Rule RussiaAsia 1984 1995 - Sep lastSun 2:00s 0 -
4586  {
4587  -16 /*fromYearTiny*/,
4588  -5 /*toYearTiny*/,
4589  9 /*inMonth*/,
4590  7 /*onDayOfWeek*/,
4591  0 /*onDayOfMonth*/,
4592  8 /*atTimeCode*/,
4593  's' /*atTimeModifier*/,
4594  0 /*deltaCode*/,
4595  '-' /*letter*/,
4596  },
4597  // Rule RussiaAsia 1985 2010 - Mar lastSun 2:00s 1:00 -
4598  {
4599  -15 /*fromYearTiny*/,
4600  10 /*toYearTiny*/,
4601  3 /*inMonth*/,
4602  7 /*onDayOfWeek*/,
4603  0 /*onDayOfMonth*/,
4604  8 /*atTimeCode*/,
4605  's' /*atTimeModifier*/,
4606  4 /*deltaCode*/,
4607  '-' /*letter*/,
4608  },
4609  // Rule RussiaAsia 1996 2010 - Oct lastSun 2:00s 0 -
4610  {
4611  -4 /*fromYearTiny*/,
4612  10 /*toYearTiny*/,
4613  10 /*inMonth*/,
4614  7 /*onDayOfWeek*/,
4615  0 /*onDayOfMonth*/,
4616  8 /*atTimeCode*/,
4617  's' /*atTimeModifier*/,
4618  0 /*deltaCode*/,
4619  '-' /*letter*/,
4620  },
4621 
4622 };
4623 
4624 
4625 
4626 const basic::ZonePolicy kPolicyRussiaAsia ACE_TIME_PROGMEM = {
4627  kZoneRulesRussiaAsia /*rules*/,
4628  nullptr /* letters */,
4629  3 /*numRules*/,
4630  0 /* numLetters */,
4631 };
4632 
4633 //---------------------------------------------------------------------------
4634 // Policy name: SA
4635 // Rules: 1
4636 // Memory (8-bit): 15
4637 // Memory (32-bit): 24
4638 //---------------------------------------------------------------------------
4639 
4640 static const basic::ZoneRule kZoneRulesSA[] ACE_TIME_PROGMEM = {
4641  // Rule SA 1943 1944 - Mar Sun>=15 2:00 0 -
4642  {
4643  -57 /*fromYearTiny*/,
4644  -56 /*toYearTiny*/,
4645  3 /*inMonth*/,
4646  7 /*onDayOfWeek*/,
4647  15 /*onDayOfMonth*/,
4648  8 /*atTimeCode*/,
4649  'w' /*atTimeModifier*/,
4650  0 /*deltaCode*/,
4651  '-' /*letter*/,
4652  },
4653 
4654 };
4655 
4656 
4657 
4658 const basic::ZonePolicy kPolicySA ACE_TIME_PROGMEM = {
4659  kZoneRulesSA /*rules*/,
4660  nullptr /* letters */,
4661  1 /*numRules*/,
4662  0 /* numLetters */,
4663 };
4664 
4665 //---------------------------------------------------------------------------
4666 // Policy name: Salv
4667 // Rules: 1
4668 // Memory (8-bit): 15
4669 // Memory (32-bit): 24
4670 //---------------------------------------------------------------------------
4671 
4672 static const basic::ZoneRule kZoneRulesSalv[] ACE_TIME_PROGMEM = {
4673  // Rule Salv 1987 1988 - Sep lastSun 0:00 0 S
4674  {
4675  -13 /*fromYearTiny*/,
4676  -12 /*toYearTiny*/,
4677  9 /*inMonth*/,
4678  7 /*onDayOfWeek*/,
4679  0 /*onDayOfMonth*/,
4680  0 /*atTimeCode*/,
4681  'w' /*atTimeModifier*/,
4682  0 /*deltaCode*/,
4683  'S' /*letter*/,
4684  },
4685 
4686 };
4687 
4688 
4689 
4690 const basic::ZonePolicy kPolicySalv ACE_TIME_PROGMEM = {
4691  kZoneRulesSalv /*rules*/,
4692  nullptr /* letters */,
4693  1 /*numRules*/,
4694  0 /* numLetters */,
4695 };
4696 
4697 //---------------------------------------------------------------------------
4698 // Policy name: Syria
4699 // Rules: 12
4700 // Memory (8-bit): 114
4701 // Memory (32-bit): 156
4702 //---------------------------------------------------------------------------
4703 
4704 static const basic::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = {
4705  // Rule Syria 1994 2005 - Oct 1 0:00 0 -
4706  {
4707  -6 /*fromYearTiny*/,
4708  5 /*toYearTiny*/,
4709  10 /*inMonth*/,
4710  0 /*onDayOfWeek*/,
4711  1 /*onDayOfMonth*/,
4712  0 /*atTimeCode*/,
4713  'w' /*atTimeModifier*/,
4714  0 /*deltaCode*/,
4715  '-' /*letter*/,
4716  },
4717  // Rule Syria 1997 1998 - Mar lastMon 0:00 1:00 S
4718  {
4719  -3 /*fromYearTiny*/,
4720  -2 /*toYearTiny*/,
4721  3 /*inMonth*/,
4722  1 /*onDayOfWeek*/,
4723  0 /*onDayOfMonth*/,
4724  0 /*atTimeCode*/,
4725  'w' /*atTimeModifier*/,
4726  4 /*deltaCode*/,
4727  'S' /*letter*/,
4728  },
4729  // Rule Syria 1999 2006 - Apr 1 0:00 1:00 S
4730  {
4731  -1 /*fromYearTiny*/,
4732  6 /*toYearTiny*/,
4733  4 /*inMonth*/,
4734  0 /*onDayOfWeek*/,
4735  1 /*onDayOfMonth*/,
4736  0 /*atTimeCode*/,
4737  'w' /*atTimeModifier*/,
4738  4 /*deltaCode*/,
4739  'S' /*letter*/,
4740  },
4741  // Rule Syria 2006 only - Sep 22 0:00 0 -
4742  {
4743  6 /*fromYearTiny*/,
4744  6 /*toYearTiny*/,
4745  9 /*inMonth*/,
4746  0 /*onDayOfWeek*/,
4747  22 /*onDayOfMonth*/,
4748  0 /*atTimeCode*/,
4749  'w' /*atTimeModifier*/,
4750  0 /*deltaCode*/,
4751  '-' /*letter*/,
4752  },
4753  // Rule Syria 2007 only - Mar lastFri 0:00 1:00 S
4754  {
4755  7 /*fromYearTiny*/,
4756  7 /*toYearTiny*/,
4757  3 /*inMonth*/,
4758  5 /*onDayOfWeek*/,
4759  0 /*onDayOfMonth*/,
4760  0 /*atTimeCode*/,
4761  'w' /*atTimeModifier*/,
4762  4 /*deltaCode*/,
4763  'S' /*letter*/,
4764  },
4765  // Rule Syria 2007 only - Nov Fri>=1 0:00 0 -
4766  {
4767  7 /*fromYearTiny*/,
4768  7 /*toYearTiny*/,
4769  11 /*inMonth*/,
4770  5 /*onDayOfWeek*/,
4771  1 /*onDayOfMonth*/,
4772  0 /*atTimeCode*/,
4773  'w' /*atTimeModifier*/,
4774  0 /*deltaCode*/,
4775  '-' /*letter*/,
4776  },
4777  // Rule Syria 2008 only - Apr Fri>=1 0:00 1:00 S
4778  {
4779  8 /*fromYearTiny*/,
4780  8 /*toYearTiny*/,
4781  4 /*inMonth*/,
4782  5 /*onDayOfWeek*/,
4783  1 /*onDayOfMonth*/,
4784  0 /*atTimeCode*/,
4785  'w' /*atTimeModifier*/,
4786  4 /*deltaCode*/,
4787  'S' /*letter*/,
4788  },
4789  // Rule Syria 2008 only - Nov 1 0:00 0 -
4790  {
4791  8 /*fromYearTiny*/,
4792  8 /*toYearTiny*/,
4793  11 /*inMonth*/,
4794  0 /*onDayOfWeek*/,
4795  1 /*onDayOfMonth*/,
4796  0 /*atTimeCode*/,
4797  'w' /*atTimeModifier*/,
4798  0 /*deltaCode*/,
4799  '-' /*letter*/,
4800  },
4801  // Rule Syria 2009 only - Mar lastFri 0:00 1:00 S
4802  {
4803  9 /*fromYearTiny*/,
4804  9 /*toYearTiny*/,
4805  3 /*inMonth*/,
4806  5 /*onDayOfWeek*/,
4807  0 /*onDayOfMonth*/,
4808  0 /*atTimeCode*/,
4809  'w' /*atTimeModifier*/,
4810  4 /*deltaCode*/,
4811  'S' /*letter*/,
4812  },
4813  // Rule Syria 2010 2011 - Apr Fri>=1 0:00 1:00 S
4814  {
4815  10 /*fromYearTiny*/,
4816  11 /*toYearTiny*/,
4817  4 /*inMonth*/,
4818  5 /*onDayOfWeek*/,
4819  1 /*onDayOfMonth*/,
4820  0 /*atTimeCode*/,
4821  'w' /*atTimeModifier*/,
4822  4 /*deltaCode*/,
4823  'S' /*letter*/,
4824  },
4825  // Rule Syria 2012 max - Mar lastFri 0:00 1:00 S
4826  {
4827  12 /*fromYearTiny*/,
4828  126 /*toYearTiny*/,
4829  3 /*inMonth*/,
4830  5 /*onDayOfWeek*/,
4831  0 /*onDayOfMonth*/,
4832  0 /*atTimeCode*/,
4833  'w' /*atTimeModifier*/,
4834  4 /*deltaCode*/,
4835  'S' /*letter*/,
4836  },
4837  // Rule Syria 2009 max - Oct lastFri 0:00 0 -
4838  {
4839  9 /*fromYearTiny*/,
4840  126 /*toYearTiny*/,
4841  10 /*inMonth*/,
4842  5 /*onDayOfWeek*/,
4843  0 /*onDayOfMonth*/,
4844  0 /*atTimeCode*/,
4845  'w' /*atTimeModifier*/,
4846  0 /*deltaCode*/,
4847  '-' /*letter*/,
4848  },
4849 
4850 };
4851 
4852 
4853 
4854 const basic::ZonePolicy kPolicySyria ACE_TIME_PROGMEM = {
4855  kZoneRulesSyria /*rules*/,
4856  nullptr /* letters */,
4857  12 /*numRules*/,
4858  0 /* numLetters */,
4859 };
4860 
4861 //---------------------------------------------------------------------------
4862 // Policy name: Taiwan
4863 // Rules: 1
4864 // Memory (8-bit): 15
4865 // Memory (32-bit): 24
4866 //---------------------------------------------------------------------------
4867 
4868 static const basic::ZoneRule kZoneRulesTaiwan[] ACE_TIME_PROGMEM = {
4869  // Rule Taiwan 1979 only - Oct 1 0:00 0 S
4870  {
4871  -21 /*fromYearTiny*/,
4872  -21 /*toYearTiny*/,
4873  10 /*inMonth*/,
4874  0 /*onDayOfWeek*/,
4875  1 /*onDayOfMonth*/,
4876  0 /*atTimeCode*/,
4877  'w' /*atTimeModifier*/,
4878  0 /*deltaCode*/,
4879  'S' /*letter*/,
4880  },
4881 
4882 };
4883 
4884 
4885 
4886 const basic::ZonePolicy kPolicyTaiwan ACE_TIME_PROGMEM = {
4887  kZoneRulesTaiwan /*rules*/,
4888  nullptr /* letters */,
4889  1 /*numRules*/,
4890  0 /* numLetters */,
4891 };
4892 
4893 //---------------------------------------------------------------------------
4894 // Policy name: Thule
4895 // Rules: 5
4896 // Memory (8-bit): 51
4897 // Memory (32-bit): 72
4898 //---------------------------------------------------------------------------
4899 
4900 static const basic::ZoneRule kZoneRulesThule[] ACE_TIME_PROGMEM = {
4901  // Rule Thule 1991 1992 - Sep lastSun 2:00 0 S
4902  {
4903  -9 /*fromYearTiny*/,
4904  -8 /*toYearTiny*/,
4905  9 /*inMonth*/,
4906  7 /*onDayOfWeek*/,
4907  0 /*onDayOfMonth*/,
4908  8 /*atTimeCode*/,
4909  'w' /*atTimeModifier*/,
4910  0 /*deltaCode*/,
4911  'S' /*letter*/,
4912  },
4913  // Rule Thule 1993 2006 - Apr Sun>=1 2:00 1:00 D
4914  {
4915  -7 /*fromYearTiny*/,
4916  6 /*toYearTiny*/,
4917  4 /*inMonth*/,
4918  7 /*onDayOfWeek*/,
4919  1 /*onDayOfMonth*/,
4920  8 /*atTimeCode*/,
4921  'w' /*atTimeModifier*/,
4922  4 /*deltaCode*/,
4923  'D' /*letter*/,
4924  },
4925  // Rule Thule 1993 2006 - Oct lastSun 2:00 0 S
4926  {
4927  -7 /*fromYearTiny*/,
4928  6 /*toYearTiny*/,
4929  10 /*inMonth*/,
4930  7 /*onDayOfWeek*/,
4931  0 /*onDayOfMonth*/,
4932  8 /*atTimeCode*/,
4933  'w' /*atTimeModifier*/,
4934  0 /*deltaCode*/,
4935  'S' /*letter*/,
4936  },
4937  // Rule Thule 2007 max - Mar Sun>=8 2:00 1:00 D
4938  {
4939  7 /*fromYearTiny*/,
4940  126 /*toYearTiny*/,
4941  3 /*inMonth*/,
4942  7 /*onDayOfWeek*/,
4943  8 /*onDayOfMonth*/,
4944  8 /*atTimeCode*/,
4945  'w' /*atTimeModifier*/,
4946  4 /*deltaCode*/,
4947  'D' /*letter*/,
4948  },
4949  // Rule Thule 2007 max - Nov Sun>=1 2:00 0 S
4950  {
4951  7 /*fromYearTiny*/,
4952  126 /*toYearTiny*/,
4953  11 /*inMonth*/,
4954  7 /*onDayOfWeek*/,
4955  1 /*onDayOfMonth*/,
4956  8 /*atTimeCode*/,
4957  'w' /*atTimeModifier*/,
4958  0 /*deltaCode*/,
4959  'S' /*letter*/,
4960  },
4961 
4962 };
4963 
4964 
4965 
4966 const basic::ZonePolicy kPolicyThule ACE_TIME_PROGMEM = {
4967  kZoneRulesThule /*rules*/,
4968  nullptr /* letters */,
4969  5 /*numRules*/,
4970  0 /* numLetters */,
4971 };
4972 
4973 //---------------------------------------------------------------------------
4974 // Policy name: Tonga
4975 // Rules: 7
4976 // Memory (8-bit): 69
4977 // Memory (32-bit): 96
4978 //---------------------------------------------------------------------------
4979 
4980 static const basic::ZoneRule kZoneRulesTonga[] ACE_TIME_PROGMEM = {
4981  // Anchor: Rule Tonga 2000 only - Mar 19 2:00s 0 -
4982  {
4983  -127 /*fromYearTiny*/,
4984  -127 /*toYearTiny*/,
4985  1 /*inMonth*/,
4986  0 /*onDayOfWeek*/,
4987  1 /*onDayOfMonth*/,
4988  0 /*atTimeCode*/,
4989  'w' /*atTimeModifier*/,
4990  0 /*deltaCode*/,
4991  '-' /*letter*/,
4992  },
4993  // Rule Tonga 1999 only - Oct 7 2:00s 1:00 -
4994  {
4995  -1 /*fromYearTiny*/,
4996  -1 /*toYearTiny*/,
4997  10 /*inMonth*/,
4998  0 /*onDayOfWeek*/,
4999  7 /*onDayOfMonth*/,
5000  8 /*atTimeCode*/,
5001  's' /*atTimeModifier*/,
5002  4 /*deltaCode*/,
5003  '-' /*letter*/,
5004  },
5005  // Rule Tonga 2000 only - Mar 19 2:00s 0 -
5006  {
5007  0 /*fromYearTiny*/,
5008  0 /*toYearTiny*/,
5009  3 /*inMonth*/,
5010  0 /*onDayOfWeek*/,
5011  19 /*onDayOfMonth*/,
5012  8 /*atTimeCode*/,
5013  's' /*atTimeModifier*/,
5014  0 /*deltaCode*/,
5015  '-' /*letter*/,
5016  },
5017  // Rule Tonga 2000 2001 - Nov Sun>=1 2:00 1:00 -
5018  {
5019  0 /*fromYearTiny*/,
5020  1 /*toYearTiny*/,
5021  11 /*inMonth*/,
5022  7 /*onDayOfWeek*/,
5023  1 /*onDayOfMonth*/,
5024  8 /*atTimeCode*/,
5025  'w' /*atTimeModifier*/,
5026  4 /*deltaCode*/,
5027  '-' /*letter*/,
5028  },
5029  // Rule Tonga 2001 2002 - Jan lastSun 2:00 0 -
5030  {
5031  1 /*fromYearTiny*/,
5032  2 /*toYearTiny*/,
5033  1 /*inMonth*/,
5034  7 /*onDayOfWeek*/,
5035  0 /*onDayOfMonth*/,
5036  8 /*atTimeCode*/,
5037  'w' /*atTimeModifier*/,
5038  0 /*deltaCode*/,
5039  '-' /*letter*/,
5040  },
5041  // Rule Tonga 2016 only - Nov Sun>=1 2:00 1:00 -
5042  {
5043  16 /*fromYearTiny*/,
5044  16 /*toYearTiny*/,
5045  11 /*inMonth*/,
5046  7 /*onDayOfWeek*/,
5047  1 /*onDayOfMonth*/,
5048  8 /*atTimeCode*/,
5049  'w' /*atTimeModifier*/,
5050  4 /*deltaCode*/,
5051  '-' /*letter*/,
5052  },
5053  // Rule Tonga 2017 only - Jan Sun>=15 3:00 0 -
5054  {
5055  17 /*fromYearTiny*/,
5056  17 /*toYearTiny*/,
5057  1 /*inMonth*/,
5058  7 /*onDayOfWeek*/,
5059  15 /*onDayOfMonth*/,
5060  12 /*atTimeCode*/,
5061  'w' /*atTimeModifier*/,
5062  0 /*deltaCode*/,
5063  '-' /*letter*/,
5064  },
5065 
5066 };
5067 
5068 
5069 
5070 const basic::ZonePolicy kPolicyTonga ACE_TIME_PROGMEM = {
5071  kZoneRulesTonga /*rules*/,
5072  nullptr /* letters */,
5073  7 /*numRules*/,
5074  0 /* numLetters */,
5075 };
5076 
5077 //---------------------------------------------------------------------------
5078 // Policy name: Tunisia
5079 // Rules: 5
5080 // Memory (8-bit): 51
5081 // Memory (32-bit): 72
5082 //---------------------------------------------------------------------------
5083 
5084 static const basic::ZoneRule kZoneRulesTunisia[] ACE_TIME_PROGMEM = {
5085  // Rule Tunisia 1988 1990 - Sep lastSun 0:00s 0 -
5086  {
5087  -12 /*fromYearTiny*/,
5088  -10 /*toYearTiny*/,
5089  9 /*inMonth*/,
5090  7 /*onDayOfWeek*/,
5091  0 /*onDayOfMonth*/,
5092  0 /*atTimeCode*/,
5093  's' /*atTimeModifier*/,
5094  0 /*deltaCode*/,
5095  '-' /*letter*/,
5096  },
5097  // Rule Tunisia 2005 only - May 1 0:00s 1:00 S
5098  {
5099  5 /*fromYearTiny*/,
5100  5 /*toYearTiny*/,
5101  5 /*inMonth*/,
5102  0 /*onDayOfWeek*/,
5103  1 /*onDayOfMonth*/,
5104  0 /*atTimeCode*/,
5105  's' /*atTimeModifier*/,
5106  4 /*deltaCode*/,
5107  'S' /*letter*/,
5108  },
5109  // Rule Tunisia 2005 only - Sep 30 1:00s 0 -
5110  {
5111  5 /*fromYearTiny*/,
5112  5 /*toYearTiny*/,
5113  9 /*inMonth*/,
5114  0 /*onDayOfWeek*/,
5115  30 /*onDayOfMonth*/,
5116  4 /*atTimeCode*/,
5117  's' /*atTimeModifier*/,
5118  0 /*deltaCode*/,
5119  '-' /*letter*/,
5120  },
5121  // Rule Tunisia 2006 2008 - Mar lastSun 2:00s 1:00 S
5122  {
5123  6 /*fromYearTiny*/,
5124  8 /*toYearTiny*/,
5125  3 /*inMonth*/,
5126  7 /*onDayOfWeek*/,
5127  0 /*onDayOfMonth*/,
5128  8 /*atTimeCode*/,
5129  's' /*atTimeModifier*/,
5130  4 /*deltaCode*/,
5131  'S' /*letter*/,
5132  },
5133  // Rule Tunisia 2006 2008 - Oct lastSun 2:00s 0 -
5134  {
5135  6 /*fromYearTiny*/,
5136  8 /*toYearTiny*/,
5137  10 /*inMonth*/,
5138  7 /*onDayOfWeek*/,
5139  0 /*onDayOfMonth*/,
5140  8 /*atTimeCode*/,
5141  's' /*atTimeModifier*/,
5142  0 /*deltaCode*/,
5143  '-' /*letter*/,
5144  },
5145 
5146 };
5147 
5148 
5149 
5150 const basic::ZonePolicy kPolicyTunisia ACE_TIME_PROGMEM = {
5151  kZoneRulesTunisia /*rules*/,
5152  nullptr /* letters */,
5153  5 /*numRules*/,
5154  0 /* numLetters */,
5155 };
5156 
5157 //---------------------------------------------------------------------------
5158 // Policy name: US
5159 // Rules: 5
5160 // Memory (8-bit): 51
5161 // Memory (32-bit): 72
5162 //---------------------------------------------------------------------------
5163 
5164 static const basic::ZoneRule kZoneRulesUS[] ACE_TIME_PROGMEM = {
5165  // Rule US 1967 2006 - Oct lastSun 2:00 0 S
5166  {
5167  -33 /*fromYearTiny*/,
5168  6 /*toYearTiny*/,
5169  10 /*inMonth*/,
5170  7 /*onDayOfWeek*/,
5171  0 /*onDayOfMonth*/,
5172  8 /*atTimeCode*/,
5173  'w' /*atTimeModifier*/,
5174  0 /*deltaCode*/,
5175  'S' /*letter*/,
5176  },
5177  // Rule US 1976 1986 - Apr lastSun 2:00 1:00 D
5178  {
5179  -24 /*fromYearTiny*/,
5180  -14 /*toYearTiny*/,
5181  4 /*inMonth*/,
5182  7 /*onDayOfWeek*/,
5183  0 /*onDayOfMonth*/,
5184  8 /*atTimeCode*/,
5185  'w' /*atTimeModifier*/,
5186  4 /*deltaCode*/,
5187  'D' /*letter*/,
5188  },
5189  // Rule US 1987 2006 - Apr Sun>=1 2:00 1:00 D
5190  {
5191  -13 /*fromYearTiny*/,
5192  6 /*toYearTiny*/,
5193  4 /*inMonth*/,
5194  7 /*onDayOfWeek*/,
5195  1 /*onDayOfMonth*/,
5196  8 /*atTimeCode*/,
5197  'w' /*atTimeModifier*/,
5198  4 /*deltaCode*/,
5199  'D' /*letter*/,
5200  },
5201  // Rule US 2007 max - Mar Sun>=8 2:00 1:00 D
5202  {
5203  7 /*fromYearTiny*/,
5204  126 /*toYearTiny*/,
5205  3 /*inMonth*/,
5206  7 /*onDayOfWeek*/,
5207  8 /*onDayOfMonth*/,
5208  8 /*atTimeCode*/,
5209  'w' /*atTimeModifier*/,
5210  4 /*deltaCode*/,
5211  'D' /*letter*/,
5212  },
5213  // Rule US 2007 max - Nov Sun>=1 2:00 0 S
5214  {
5215  7 /*fromYearTiny*/,
5216  126 /*toYearTiny*/,
5217  11 /*inMonth*/,
5218  7 /*onDayOfWeek*/,
5219  1 /*onDayOfMonth*/,
5220  8 /*atTimeCode*/,
5221  'w' /*atTimeModifier*/,
5222  0 /*deltaCode*/,
5223  'S' /*letter*/,
5224  },
5225 
5226 };
5227 
5228 
5229 
5230 const basic::ZonePolicy kPolicyUS ACE_TIME_PROGMEM = {
5231  kZoneRulesUS /*rules*/,
5232  nullptr /* letters */,
5233  5 /*numRules*/,
5234  0 /* numLetters */,
5235 };
5236 
5237 //---------------------------------------------------------------------------
5238 // Policy name: Uruguay
5239 // Rules: 6
5240 // Memory (8-bit): 60
5241 // Memory (32-bit): 84
5242 //---------------------------------------------------------------------------
5243 
5244 static const basic::ZoneRule kZoneRulesUruguay[] ACE_TIME_PROGMEM = {
5245  // Rule Uruguay 1993 only - Feb 28 0:00 0 -
5246  {
5247  -7 /*fromYearTiny*/,
5248  -7 /*toYearTiny*/,
5249  2 /*inMonth*/,
5250  0 /*onDayOfWeek*/,
5251  28 /*onDayOfMonth*/,
5252  0 /*atTimeCode*/,
5253  'w' /*atTimeModifier*/,
5254  0 /*deltaCode*/,
5255  '-' /*letter*/,
5256  },
5257  // Rule Uruguay 2004 only - Sep 19 0:00 1:00 -
5258  {
5259  4 /*fromYearTiny*/,
5260  4 /*toYearTiny*/,
5261  9 /*inMonth*/,
5262  0 /*onDayOfWeek*/,
5263  19 /*onDayOfMonth*/,
5264  0 /*atTimeCode*/,
5265  'w' /*atTimeModifier*/,
5266  4 /*deltaCode*/,
5267  '-' /*letter*/,
5268  },
5269  // Rule Uruguay 2005 only - Mar 27 2:00 0 -
5270  {
5271  5 /*fromYearTiny*/,
5272  5 /*toYearTiny*/,
5273  3 /*inMonth*/,
5274  0 /*onDayOfWeek*/,
5275  27 /*onDayOfMonth*/,
5276  8 /*atTimeCode*/,
5277  'w' /*atTimeModifier*/,
5278  0 /*deltaCode*/,
5279  '-' /*letter*/,
5280  },
5281  // Rule Uruguay 2005 only - Oct 9 2:00 1:00 -
5282  {
5283  5 /*fromYearTiny*/,
5284  5 /*toYearTiny*/,
5285  10 /*inMonth*/,
5286  0 /*onDayOfWeek*/,
5287  9 /*onDayOfMonth*/,
5288  8 /*atTimeCode*/,
5289  'w' /*atTimeModifier*/,
5290  4 /*deltaCode*/,
5291  '-' /*letter*/,
5292  },
5293  // Rule Uruguay 2006 2015 - Mar Sun>=8 2:00 0 -
5294  {
5295  6 /*fromYearTiny*/,
5296  15 /*toYearTiny*/,
5297  3 /*inMonth*/,
5298  7 /*onDayOfWeek*/,
5299  8 /*onDayOfMonth*/,
5300  8 /*atTimeCode*/,
5301  'w' /*atTimeModifier*/,
5302  0 /*deltaCode*/,
5303  '-' /*letter*/,
5304  },
5305  // Rule Uruguay 2006 2014 - Oct Sun>=1 2:00 1:00 -
5306  {
5307  6 /*fromYearTiny*/,
5308  14 /*toYearTiny*/,
5309  10 /*inMonth*/,
5310  7 /*onDayOfWeek*/,
5311  1 /*onDayOfMonth*/,
5312  8 /*atTimeCode*/,
5313  'w' /*atTimeModifier*/,
5314  4 /*deltaCode*/,
5315  '-' /*letter*/,
5316  },
5317 
5318 };
5319 
5320 
5321 
5322 const basic::ZonePolicy kPolicyUruguay ACE_TIME_PROGMEM = {
5323  kZoneRulesUruguay /*rules*/,
5324  nullptr /* letters */,
5325  6 /*numRules*/,
5326  0 /* numLetters */,
5327 };
5328 
5329 //---------------------------------------------------------------------------
5330 // Policy name: Vanuatu
5331 // Rules: 1
5332 // Memory (8-bit): 15
5333 // Memory (32-bit): 24
5334 //---------------------------------------------------------------------------
5335 
5336 static const basic::ZoneRule kZoneRulesVanuatu[] ACE_TIME_PROGMEM = {
5337  // Rule Vanuatu 1992 1993 - Jan Sun>=23 0:00 0 -
5338  {
5339  -8 /*fromYearTiny*/,
5340  -7 /*toYearTiny*/,
5341  1 /*inMonth*/,
5342  7 /*onDayOfWeek*/,
5343  23 /*onDayOfMonth*/,
5344  0 /*atTimeCode*/,
5345  'w' /*atTimeModifier*/,
5346  0 /*deltaCode*/,
5347  '-' /*letter*/,
5348  },
5349 
5350 };
5351 
5352 
5353 
5354 const basic::ZonePolicy kPolicyVanuatu ACE_TIME_PROGMEM = {
5355  kZoneRulesVanuatu /*rules*/,
5356  nullptr /* letters */,
5357  1 /*numRules*/,
5358  0 /* numLetters */,
5359 };
5360 
5361 //---------------------------------------------------------------------------
5362 // Policy name: Winn
5363 // Rules: 3
5364 // Memory (8-bit): 33
5365 // Memory (32-bit): 48
5366 //---------------------------------------------------------------------------
5367 
5368 static const basic::ZoneRule kZoneRulesWinn[] ACE_TIME_PROGMEM = {
5369  // Rule Winn 1966 1986 - Apr lastSun 2:00s 1:00 D
5370  {
5371  -34 /*fromYearTiny*/,
5372  -14 /*toYearTiny*/,
5373  4 /*inMonth*/,
5374  7 /*onDayOfWeek*/,
5375  0 /*onDayOfMonth*/,
5376  8 /*atTimeCode*/,
5377  's' /*atTimeModifier*/,
5378  4 /*deltaCode*/,
5379  'D' /*letter*/,
5380  },
5381  // Rule Winn 1966 2005 - Oct lastSun 2:00s 0 S
5382  {
5383  -34 /*fromYearTiny*/,
5384  5 /*toYearTiny*/,
5385  10 /*inMonth*/,
5386  7 /*onDayOfWeek*/,
5387  0 /*onDayOfMonth*/,
5388  8 /*atTimeCode*/,
5389  's' /*atTimeModifier*/,
5390  0 /*deltaCode*/,
5391  'S' /*letter*/,
5392  },
5393  // Rule Winn 1987 2005 - Apr Sun>=1 2:00s 1:00 D
5394  {
5395  -13 /*fromYearTiny*/,
5396  5 /*toYearTiny*/,
5397  4 /*inMonth*/,
5398  7 /*onDayOfWeek*/,
5399  1 /*onDayOfMonth*/,
5400  8 /*atTimeCode*/,
5401  's' /*atTimeModifier*/,
5402  4 /*deltaCode*/,
5403  'D' /*letter*/,
5404  },
5405 
5406 };
5407 
5408 
5409 
5410 const basic::ZonePolicy kPolicyWinn ACE_TIME_PROGMEM = {
5411  kZoneRulesWinn /*rules*/,
5412  nullptr /* letters */,
5413  3 /*numRules*/,
5414  0 /* numLetters */,
5415 };
5416 
5417 //---------------------------------------------------------------------------
5418 // Policy name: Zion
5419 // Rules: 27
5420 // Memory (8-bit): 249
5421 // Memory (32-bit): 336
5422 //---------------------------------------------------------------------------
5423 
5424 static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = {
5425  // Rule Zion 1998 only - Sep 6 0:00 0 S
5426  {
5427  -2 /*fromYearTiny*/,
5428  -2 /*toYearTiny*/,
5429  9 /*inMonth*/,
5430  0 /*onDayOfWeek*/,
5431  6 /*onDayOfMonth*/,
5432  0 /*atTimeCode*/,
5433  'w' /*atTimeModifier*/,
5434  0 /*deltaCode*/,
5435  'S' /*letter*/,
5436  },
5437  // Rule Zion 1999 only - Apr 2 2:00 1:00 D
5438  {
5439  -1 /*fromYearTiny*/,
5440  -1 /*toYearTiny*/,
5441  4 /*inMonth*/,
5442  0 /*onDayOfWeek*/,
5443  2 /*onDayOfMonth*/,
5444  8 /*atTimeCode*/,
5445  'w' /*atTimeModifier*/,
5446  4 /*deltaCode*/,
5447  'D' /*letter*/,
5448  },
5449  // Rule Zion 1999 only - Sep 3 2:00 0 S
5450  {
5451  -1 /*fromYearTiny*/,
5452  -1 /*toYearTiny*/,
5453  9 /*inMonth*/,
5454  0 /*onDayOfWeek*/,
5455  3 /*onDayOfMonth*/,
5456  8 /*atTimeCode*/,
5457  'w' /*atTimeModifier*/,
5458  0 /*deltaCode*/,
5459  'S' /*letter*/,
5460  },
5461  // Rule Zion 2000 only - Apr 14 2:00 1:00 D
5462  {
5463  0 /*fromYearTiny*/,
5464  0 /*toYearTiny*/,
5465  4 /*inMonth*/,
5466  0 /*onDayOfWeek*/,
5467  14 /*onDayOfMonth*/,
5468  8 /*atTimeCode*/,
5469  'w' /*atTimeModifier*/,
5470  4 /*deltaCode*/,
5471  'D' /*letter*/,
5472  },
5473  // Rule Zion 2000 only - Oct 6 1:00 0 S
5474  {
5475  0 /*fromYearTiny*/,
5476  0 /*toYearTiny*/,
5477  10 /*inMonth*/,
5478  0 /*onDayOfWeek*/,
5479  6 /*onDayOfMonth*/,
5480  4 /*atTimeCode*/,
5481  'w' /*atTimeModifier*/,
5482  0 /*deltaCode*/,
5483  'S' /*letter*/,
5484  },
5485  // Rule Zion 2001 only - Apr 9 1:00 1:00 D
5486  {
5487  1 /*fromYearTiny*/,
5488  1 /*toYearTiny*/,
5489  4 /*inMonth*/,
5490  0 /*onDayOfWeek*/,
5491  9 /*onDayOfMonth*/,
5492  4 /*atTimeCode*/,
5493  'w' /*atTimeModifier*/,
5494  4 /*deltaCode*/,
5495  'D' /*letter*/,
5496  },
5497  // Rule Zion 2001 only - Sep 24 1:00 0 S
5498  {
5499  1 /*fromYearTiny*/,
5500  1 /*toYearTiny*/,
5501  9 /*inMonth*/,
5502  0 /*onDayOfWeek*/,
5503  24 /*onDayOfMonth*/,
5504  4 /*atTimeCode*/,
5505  'w' /*atTimeModifier*/,
5506  0 /*deltaCode*/,
5507  'S' /*letter*/,
5508  },
5509  // Rule Zion 2002 only - Mar 29 1:00 1:00 D
5510  {
5511  2 /*fromYearTiny*/,
5512  2 /*toYearTiny*/,
5513  3 /*inMonth*/,
5514  0 /*onDayOfWeek*/,
5515  29 /*onDayOfMonth*/,
5516  4 /*atTimeCode*/,
5517  'w' /*atTimeModifier*/,
5518  4 /*deltaCode*/,
5519  'D' /*letter*/,
5520  },
5521  // Rule Zion 2002 only - Oct 7 1:00 0 S
5522  {
5523  2 /*fromYearTiny*/,
5524  2 /*toYearTiny*/,
5525  10 /*inMonth*/,
5526  0 /*onDayOfWeek*/,
5527  7 /*onDayOfMonth*/,
5528  4 /*atTimeCode*/,
5529  'w' /*atTimeModifier*/,
5530  0 /*deltaCode*/,
5531  'S' /*letter*/,
5532  },
5533  // Rule Zion 2003 only - Mar 28 1:00 1:00 D
5534  {
5535  3 /*fromYearTiny*/,
5536  3 /*toYearTiny*/,
5537  3 /*inMonth*/,
5538  0 /*onDayOfWeek*/,
5539  28 /*onDayOfMonth*/,
5540  4 /*atTimeCode*/,
5541  'w' /*atTimeModifier*/,
5542  4 /*deltaCode*/,
5543  'D' /*letter*/,
5544  },
5545  // Rule Zion 2003 only - Oct 3 1:00 0 S
5546  {
5547  3 /*fromYearTiny*/,
5548  3 /*toYearTiny*/,
5549  10 /*inMonth*/,
5550  0 /*onDayOfWeek*/,
5551  3 /*onDayOfMonth*/,
5552  4 /*atTimeCode*/,
5553  'w' /*atTimeModifier*/,
5554  0 /*deltaCode*/,
5555  'S' /*letter*/,
5556  },
5557  // Rule Zion 2004 only - Apr 7 1:00 1:00 D
5558  {
5559  4 /*fromYearTiny*/,
5560  4 /*toYearTiny*/,
5561  4 /*inMonth*/,
5562  0 /*onDayOfWeek*/,
5563  7 /*onDayOfMonth*/,
5564  4 /*atTimeCode*/,
5565  'w' /*atTimeModifier*/,
5566  4 /*deltaCode*/,
5567  'D' /*letter*/,
5568  },
5569  // Rule Zion 2004 only - Sep 22 1:00 0 S
5570  {
5571  4 /*fromYearTiny*/,
5572  4 /*toYearTiny*/,
5573  9 /*inMonth*/,
5574  0 /*onDayOfWeek*/,
5575  22 /*onDayOfMonth*/,
5576  4 /*atTimeCode*/,
5577  'w' /*atTimeModifier*/,
5578  0 /*deltaCode*/,
5579  'S' /*letter*/,
5580  },
5581  // Rule Zion 2005 only - Apr 1 2:00 1:00 D
5582  {
5583  5 /*fromYearTiny*/,
5584  5 /*toYearTiny*/,
5585  4 /*inMonth*/,
5586  0 /*onDayOfWeek*/,
5587  1 /*onDayOfMonth*/,
5588  8 /*atTimeCode*/,
5589  'w' /*atTimeModifier*/,
5590  4 /*deltaCode*/,
5591  'D' /*letter*/,
5592  },
5593  // Rule Zion 2005 only - Oct 9 2:00 0 S
5594  {
5595  5 /*fromYearTiny*/,
5596  5 /*toYearTiny*/,
5597  10 /*inMonth*/,
5598  0 /*onDayOfWeek*/,
5599  9 /*onDayOfMonth*/,
5600  8 /*atTimeCode*/,
5601  'w' /*atTimeModifier*/,
5602  0 /*deltaCode*/,
5603  'S' /*letter*/,
5604  },
5605  // Rule Zion 2006 2010 - Mar Fri>=26 2:00 1:00 D
5606  {
5607  6 /*fromYearTiny*/,
5608  10 /*toYearTiny*/,
5609  3 /*inMonth*/,
5610  5 /*onDayOfWeek*/,
5611  26 /*onDayOfMonth*/,
5612  8 /*atTimeCode*/,
5613  'w' /*atTimeModifier*/,
5614  4 /*deltaCode*/,
5615  'D' /*letter*/,
5616  },
5617  // Rule Zion 2006 only - Oct 1 2:00 0 S
5618  {
5619  6 /*fromYearTiny*/,
5620  6 /*toYearTiny*/,
5621  10 /*inMonth*/,
5622  0 /*onDayOfWeek*/,
5623  1 /*onDayOfMonth*/,
5624  8 /*atTimeCode*/,
5625  'w' /*atTimeModifier*/,
5626  0 /*deltaCode*/,
5627  'S' /*letter*/,
5628  },
5629  // Rule Zion 2007 only - Sep 16 2:00 0 S
5630  {
5631  7 /*fromYearTiny*/,
5632  7 /*toYearTiny*/,
5633  9 /*inMonth*/,
5634  0 /*onDayOfWeek*/,
5635  16 /*onDayOfMonth*/,
5636  8 /*atTimeCode*/,
5637  'w' /*atTimeModifier*/,
5638  0 /*deltaCode*/,
5639  'S' /*letter*/,
5640  },
5641  // Rule Zion 2008 only - Oct 5 2:00 0 S
5642  {
5643  8 /*fromYearTiny*/,
5644  8 /*toYearTiny*/,
5645  10 /*inMonth*/,
5646  0 /*onDayOfWeek*/,
5647  5 /*onDayOfMonth*/,
5648  8 /*atTimeCode*/,
5649  'w' /*atTimeModifier*/,
5650  0 /*deltaCode*/,
5651  'S' /*letter*/,
5652  },
5653  // Rule Zion 2009 only - Sep 27 2:00 0 S
5654  {
5655  9 /*fromYearTiny*/,
5656  9 /*toYearTiny*/,
5657  9 /*inMonth*/,
5658  0 /*onDayOfWeek*/,
5659  27 /*onDayOfMonth*/,
5660  8 /*atTimeCode*/,
5661  'w' /*atTimeModifier*/,
5662  0 /*deltaCode*/,
5663  'S' /*letter*/,
5664  },
5665  // Rule Zion 2010 only - Sep 12 2:00 0 S
5666  {
5667  10 /*fromYearTiny*/,
5668  10 /*toYearTiny*/,
5669  9 /*inMonth*/,
5670  0 /*onDayOfWeek*/,
5671  12 /*onDayOfMonth*/,
5672  8 /*atTimeCode*/,
5673  'w' /*atTimeModifier*/,
5674  0 /*deltaCode*/,
5675  'S' /*letter*/,
5676  },
5677  // Rule Zion 2011 only - Apr 1 2:00 1:00 D
5678  {
5679  11 /*fromYearTiny*/,
5680  11 /*toYearTiny*/,
5681  4 /*inMonth*/,
5682  0 /*onDayOfWeek*/,
5683  1 /*onDayOfMonth*/,
5684  8 /*atTimeCode*/,
5685  'w' /*atTimeModifier*/,
5686  4 /*deltaCode*/,
5687  'D' /*letter*/,
5688  },
5689  // Rule Zion 2011 only - Oct 2 2:00 0 S
5690  {
5691  11 /*fromYearTiny*/,
5692  11 /*toYearTiny*/,
5693  10 /*inMonth*/,
5694  0 /*onDayOfWeek*/,
5695  2 /*onDayOfMonth*/,
5696  8 /*atTimeCode*/,
5697  'w' /*atTimeModifier*/,
5698  0 /*deltaCode*/,
5699  'S' /*letter*/,
5700  },
5701  // Rule Zion 2012 only - Mar Fri>=26 2:00 1:00 D
5702  {
5703  12 /*fromYearTiny*/,
5704  12 /*toYearTiny*/,
5705  3 /*inMonth*/,
5706  5 /*onDayOfWeek*/,
5707  26 /*onDayOfMonth*/,
5708  8 /*atTimeCode*/,
5709  'w' /*atTimeModifier*/,
5710  4 /*deltaCode*/,
5711  'D' /*letter*/,
5712  },
5713  // Rule Zion 2012 only - Sep 23 2:00 0 S
5714  {
5715  12 /*fromYearTiny*/,
5716  12 /*toYearTiny*/,
5717  9 /*inMonth*/,
5718  0 /*onDayOfWeek*/,
5719  23 /*onDayOfMonth*/,
5720  8 /*atTimeCode*/,
5721  'w' /*atTimeModifier*/,
5722  0 /*deltaCode*/,
5723  'S' /*letter*/,
5724  },
5725  // Rule Zion 2013 max - Mar Fri>=23 2:00 1:00 D
5726  {
5727  13 /*fromYearTiny*/,
5728  126 /*toYearTiny*/,
5729  3 /*inMonth*/,
5730  5 /*onDayOfWeek*/,
5731  23 /*onDayOfMonth*/,
5732  8 /*atTimeCode*/,
5733  'w' /*atTimeModifier*/,
5734  4 /*deltaCode*/,
5735  'D' /*letter*/,
5736  },
5737  // Rule Zion 2013 max - Oct lastSun 2:00 0 S
5738  {
5739  13 /*fromYearTiny*/,
5740  126 /*toYearTiny*/,
5741  10 /*inMonth*/,
5742  7 /*onDayOfWeek*/,
5743  0 /*onDayOfMonth*/,
5744  8 /*atTimeCode*/,
5745  'w' /*atTimeModifier*/,
5746  0 /*deltaCode*/,
5747  'S' /*letter*/,
5748  },
5749 
5750 };
5751 
5752 
5753 
5754 const basic::ZonePolicy kPolicyZion ACE_TIME_PROGMEM = {
5755  kZoneRulesZion /*rules*/,
5756  nullptr /* letters */,
5757  27 /*numRules*/,
5758  0 /* numLetters */,
5759 };
5760 
5761 
5762 
5763 }
5764 }
Macros and definitions that provide a consistency layer among the various Arduino boards for compatib...