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