AceTime  1.1.2
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/src/AceTime/src/ace_time/zonedb --tz_version 2020d --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/2020d
7 //
8 // Policies: 65
9 // Rules: 362
10 // Memory (8-bit): 3648
11 // Memory (32-bit): 5156
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: 13
1980 // Memory (8-bit): 123
1981 // Memory (32-bit): 168
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 only - Nov Sun>=8 2:00 1:00 -
2106  {
2107  19 /*fromYearTiny*/,
2108  19 /*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  // Rule Fiji 2020 only - Dec 20 2:00 1:00 -
2118  {
2119  20 /*fromYearTiny*/,
2120  20 /*toYearTiny*/,
2121  12 /*inMonth*/,
2122  0 /*onDayOfWeek*/,
2123  20 /*onDayOfMonth*/,
2124  8 /*atTimeCode*/,
2125  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2126  4 /*deltaCode*/,
2127  '-' /*letter*/,
2128  },
2129  // Rule Fiji 2021 max - Nov Sun>=8 2:00 1:00 -
2130  {
2131  21 /*fromYearTiny*/,
2132  126 /*toYearTiny*/,
2133  11 /*inMonth*/,
2134  7 /*onDayOfWeek*/,
2135  8 /*onDayOfMonth*/,
2136  8 /*atTimeCode*/,
2137  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2138  4 /*deltaCode*/,
2139  '-' /*letter*/,
2140  },
2141 
2142 };
2143 
2144 
2145 
2146 const basic::ZonePolicy kPolicyFiji ACE_TIME_PROGMEM = {
2147  kZoneRulesFiji /*rules*/,
2148  nullptr /* letters */,
2149  13 /*numRules*/,
2150  0 /* numLetters */,
2151 };
2152 
2153 //---------------------------------------------------------------------------
2154 // Policy name: Ghana
2155 // Rules: 1
2156 // Memory (8-bit): 15
2157 // Memory (32-bit): 24
2158 //---------------------------------------------------------------------------
2159 
2160 static const basic::ZoneRule kZoneRulesGhana[] ACE_TIME_PROGMEM = {
2161  // Rule Ghana 1920 1942 - Dec 31 0:00 0 -
2162  {
2163  -80 /*fromYearTiny*/,
2164  -58 /*toYearTiny*/,
2165  12 /*inMonth*/,
2166  0 /*onDayOfWeek*/,
2167  31 /*onDayOfMonth*/,
2168  0 /*atTimeCode*/,
2169  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2170  0 /*deltaCode*/,
2171  '-' /*letter*/,
2172  },
2173 
2174 };
2175 
2176 
2177 
2178 const basic::ZonePolicy kPolicyGhana ACE_TIME_PROGMEM = {
2179  kZoneRulesGhana /*rules*/,
2180  nullptr /* letters */,
2181  1 /*numRules*/,
2182  0 /* numLetters */,
2183 };
2184 
2185 //---------------------------------------------------------------------------
2186 // Policy name: Guat
2187 // Rules: 3
2188 // Memory (8-bit): 33
2189 // Memory (32-bit): 48
2190 //---------------------------------------------------------------------------
2191 
2192 static const basic::ZoneRule kZoneRulesGuat[] ACE_TIME_PROGMEM = {
2193  // Rule Guat 1991 only - Sep 7 0:00 0 S
2194  {
2195  -9 /*fromYearTiny*/,
2196  -9 /*toYearTiny*/,
2197  9 /*inMonth*/,
2198  0 /*onDayOfWeek*/,
2199  7 /*onDayOfMonth*/,
2200  0 /*atTimeCode*/,
2201  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2202  0 /*deltaCode*/,
2203  'S' /*letter*/,
2204  },
2205  // Rule Guat 2006 only - Apr 30 0:00 1:00 D
2206  {
2207  6 /*fromYearTiny*/,
2208  6 /*toYearTiny*/,
2209  4 /*inMonth*/,
2210  0 /*onDayOfWeek*/,
2211  30 /*onDayOfMonth*/,
2212  0 /*atTimeCode*/,
2213  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2214  4 /*deltaCode*/,
2215  'D' /*letter*/,
2216  },
2217  // Rule Guat 2006 only - Oct 1 0:00 0 S
2218  {
2219  6 /*fromYearTiny*/,
2220  6 /*toYearTiny*/,
2221  10 /*inMonth*/,
2222  0 /*onDayOfWeek*/,
2223  1 /*onDayOfMonth*/,
2224  0 /*atTimeCode*/,
2225  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2226  0 /*deltaCode*/,
2227  'S' /*letter*/,
2228  },
2229 
2230 };
2231 
2232 
2233 
2234 const basic::ZonePolicy kPolicyGuat ACE_TIME_PROGMEM = {
2235  kZoneRulesGuat /*rules*/,
2236  nullptr /* letters */,
2237  3 /*numRules*/,
2238  0 /* numLetters */,
2239 };
2240 
2241 //---------------------------------------------------------------------------
2242 // Policy name: HK
2243 // Rules: 1
2244 // Memory (8-bit): 15
2245 // Memory (32-bit): 24
2246 //---------------------------------------------------------------------------
2247 
2248 static const basic::ZoneRule kZoneRulesHK[] ACE_TIME_PROGMEM = {
2249  // Rule HK 1979 only - Oct 21 3:30 0 -
2250  {
2251  -21 /*fromYearTiny*/,
2252  -21 /*toYearTiny*/,
2253  10 /*inMonth*/,
2254  0 /*onDayOfWeek*/,
2255  21 /*onDayOfMonth*/,
2256  14 /*atTimeCode*/,
2257  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2258  0 /*deltaCode*/,
2259  '-' /*letter*/,
2260  },
2261 
2262 };
2263 
2264 
2265 
2266 const basic::ZonePolicy kPolicyHK ACE_TIME_PROGMEM = {
2267  kZoneRulesHK /*rules*/,
2268  nullptr /* letters */,
2269  1 /*numRules*/,
2270  0 /* numLetters */,
2271 };
2272 
2273 //---------------------------------------------------------------------------
2274 // Policy name: Haiti
2275 // Rules: 7
2276 // Memory (8-bit): 69
2277 // Memory (32-bit): 96
2278 //---------------------------------------------------------------------------
2279 
2280 static const basic::ZoneRule kZoneRulesHaiti[] ACE_TIME_PROGMEM = {
2281  // Rule Haiti 1988 1997 - Oct lastSun 1:00s 0 S
2282  {
2283  -12 /*fromYearTiny*/,
2284  -3 /*toYearTiny*/,
2285  10 /*inMonth*/,
2286  7 /*onDayOfWeek*/,
2287  0 /*onDayOfMonth*/,
2288  4 /*atTimeCode*/,
2289  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
2290  0 /*deltaCode*/,
2291  'S' /*letter*/,
2292  },
2293  // Rule Haiti 2005 2006 - Apr Sun>=1 0:00 1:00 D
2294  {
2295  5 /*fromYearTiny*/,
2296  6 /*toYearTiny*/,
2297  4 /*inMonth*/,
2298  7 /*onDayOfWeek*/,
2299  1 /*onDayOfMonth*/,
2300  0 /*atTimeCode*/,
2301  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2302  4 /*deltaCode*/,
2303  'D' /*letter*/,
2304  },
2305  // Rule Haiti 2005 2006 - Oct lastSun 0:00 0 S
2306  {
2307  5 /*fromYearTiny*/,
2308  6 /*toYearTiny*/,
2309  10 /*inMonth*/,
2310  7 /*onDayOfWeek*/,
2311  0 /*onDayOfMonth*/,
2312  0 /*atTimeCode*/,
2313  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2314  0 /*deltaCode*/,
2315  'S' /*letter*/,
2316  },
2317  // Rule Haiti 2012 2015 - Mar Sun>=8 2:00 1:00 D
2318  {
2319  12 /*fromYearTiny*/,
2320  15 /*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 2012 2015 - Nov Sun>=1 2:00 0 S
2330  {
2331  12 /*fromYearTiny*/,
2332  15 /*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  // Rule Haiti 2017 max - Mar Sun>=8 2:00 1:00 D
2342  {
2343  17 /*fromYearTiny*/,
2344  126 /*toYearTiny*/,
2345  3 /*inMonth*/,
2346  7 /*onDayOfWeek*/,
2347  8 /*onDayOfMonth*/,
2348  8 /*atTimeCode*/,
2349  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2350  4 /*deltaCode*/,
2351  'D' /*letter*/,
2352  },
2353  // Rule Haiti 2017 max - Nov Sun>=1 2:00 0 S
2354  {
2355  17 /*fromYearTiny*/,
2356  126 /*toYearTiny*/,
2357  11 /*inMonth*/,
2358  7 /*onDayOfWeek*/,
2359  1 /*onDayOfMonth*/,
2360  8 /*atTimeCode*/,
2361  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2362  0 /*deltaCode*/,
2363  'S' /*letter*/,
2364  },
2365 
2366 };
2367 
2368 
2369 
2370 const basic::ZonePolicy kPolicyHaiti ACE_TIME_PROGMEM = {
2371  kZoneRulesHaiti /*rules*/,
2372  nullptr /* letters */,
2373  7 /*numRules*/,
2374  0 /* numLetters */,
2375 };
2376 
2377 //---------------------------------------------------------------------------
2378 // Policy name: Holiday
2379 // Rules: 1
2380 // Memory (8-bit): 15
2381 // Memory (32-bit): 24
2382 //---------------------------------------------------------------------------
2383 
2384 static const basic::ZoneRule kZoneRulesHoliday[] ACE_TIME_PROGMEM = {
2385  // Rule Holiday 1993 1994 - Mar Sun>=1 2:00s 0 S
2386  {
2387  -7 /*fromYearTiny*/,
2388  -6 /*toYearTiny*/,
2389  3 /*inMonth*/,
2390  7 /*onDayOfWeek*/,
2391  1 /*onDayOfMonth*/,
2392  8 /*atTimeCode*/,
2393  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
2394  0 /*deltaCode*/,
2395  'S' /*letter*/,
2396  },
2397 
2398 };
2399 
2400 
2401 
2402 const basic::ZonePolicy kPolicyHoliday ACE_TIME_PROGMEM = {
2403  kZoneRulesHoliday /*rules*/,
2404  nullptr /* letters */,
2405  1 /*numRules*/,
2406  0 /* numLetters */,
2407 };
2408 
2409 //---------------------------------------------------------------------------
2410 // Policy name: Hond
2411 // Rules: 3
2412 // Memory (8-bit): 33
2413 // Memory (32-bit): 48
2414 //---------------------------------------------------------------------------
2415 
2416 static const basic::ZoneRule kZoneRulesHond[] ACE_TIME_PROGMEM = {
2417  // Rule Hond 1987 1988 - Sep lastSun 0:00 0 S
2418  {
2419  -13 /*fromYearTiny*/,
2420  -12 /*toYearTiny*/,
2421  9 /*inMonth*/,
2422  7 /*onDayOfWeek*/,
2423  0 /*onDayOfMonth*/,
2424  0 /*atTimeCode*/,
2425  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2426  0 /*deltaCode*/,
2427  'S' /*letter*/,
2428  },
2429  // Rule Hond 2006 only - May Sun>=1 0:00 1:00 D
2430  {
2431  6 /*fromYearTiny*/,
2432  6 /*toYearTiny*/,
2433  5 /*inMonth*/,
2434  7 /*onDayOfWeek*/,
2435  1 /*onDayOfMonth*/,
2436  0 /*atTimeCode*/,
2437  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2438  4 /*deltaCode*/,
2439  'D' /*letter*/,
2440  },
2441  // Rule Hond 2006 only - Aug Mon>=1 0:00 0 S
2442  {
2443  6 /*fromYearTiny*/,
2444  6 /*toYearTiny*/,
2445  8 /*inMonth*/,
2446  1 /*onDayOfWeek*/,
2447  1 /*onDayOfMonth*/,
2448  0 /*atTimeCode*/,
2449  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2450  0 /*deltaCode*/,
2451  'S' /*letter*/,
2452  },
2453 
2454 };
2455 
2456 
2457 
2458 const basic::ZonePolicy kPolicyHond ACE_TIME_PROGMEM = {
2459  kZoneRulesHond /*rules*/,
2460  nullptr /* letters */,
2461  3 /*numRules*/,
2462  0 /* numLetters */,
2463 };
2464 
2465 //---------------------------------------------------------------------------
2466 // Policy name: Iran
2467 // Rules: 55
2468 // Memory (8-bit): 501
2469 // Memory (32-bit): 672
2470 //---------------------------------------------------------------------------
2471 
2472 static const basic::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = {
2473  // Rule Iran 1996 only - Sep 20 24:00 0 -
2474  {
2475  -4 /*fromYearTiny*/,
2476  -4 /*toYearTiny*/,
2477  9 /*inMonth*/,
2478  0 /*onDayOfWeek*/,
2479  20 /*onDayOfMonth*/,
2480  96 /*atTimeCode*/,
2481  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2482  0 /*deltaCode*/,
2483  '-' /*letter*/,
2484  },
2485  // Rule Iran 1997 1999 - Mar 21 24:00 1:00 -
2486  {
2487  -3 /*fromYearTiny*/,
2488  -1 /*toYearTiny*/,
2489  3 /*inMonth*/,
2490  0 /*onDayOfWeek*/,
2491  21 /*onDayOfMonth*/,
2492  96 /*atTimeCode*/,
2493  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2494  4 /*deltaCode*/,
2495  '-' /*letter*/,
2496  },
2497  // Rule Iran 1997 1999 - Sep 21 24:00 0 -
2498  {
2499  -3 /*fromYearTiny*/,
2500  -1 /*toYearTiny*/,
2501  9 /*inMonth*/,
2502  0 /*onDayOfWeek*/,
2503  21 /*onDayOfMonth*/,
2504  96 /*atTimeCode*/,
2505  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2506  0 /*deltaCode*/,
2507  '-' /*letter*/,
2508  },
2509  // Rule Iran 2000 only - Mar 20 24:00 1:00 -
2510  {
2511  0 /*fromYearTiny*/,
2512  0 /*toYearTiny*/,
2513  3 /*inMonth*/,
2514  0 /*onDayOfWeek*/,
2515  20 /*onDayOfMonth*/,
2516  96 /*atTimeCode*/,
2517  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2518  4 /*deltaCode*/,
2519  '-' /*letter*/,
2520  },
2521  // Rule Iran 2000 only - Sep 20 24:00 0 -
2522  {
2523  0 /*fromYearTiny*/,
2524  0 /*toYearTiny*/,
2525  9 /*inMonth*/,
2526  0 /*onDayOfWeek*/,
2527  20 /*onDayOfMonth*/,
2528  96 /*atTimeCode*/,
2529  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2530  0 /*deltaCode*/,
2531  '-' /*letter*/,
2532  },
2533  // Rule Iran 2001 2003 - Mar 21 24:00 1:00 -
2534  {
2535  1 /*fromYearTiny*/,
2536  3 /*toYearTiny*/,
2537  3 /*inMonth*/,
2538  0 /*onDayOfWeek*/,
2539  21 /*onDayOfMonth*/,
2540  96 /*atTimeCode*/,
2541  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2542  4 /*deltaCode*/,
2543  '-' /*letter*/,
2544  },
2545  // Rule Iran 2001 2003 - Sep 21 24:00 0 -
2546  {
2547  1 /*fromYearTiny*/,
2548  3 /*toYearTiny*/,
2549  9 /*inMonth*/,
2550  0 /*onDayOfWeek*/,
2551  21 /*onDayOfMonth*/,
2552  96 /*atTimeCode*/,
2553  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2554  0 /*deltaCode*/,
2555  '-' /*letter*/,
2556  },
2557  // Rule Iran 2004 only - Mar 20 24:00 1:00 -
2558  {
2559  4 /*fromYearTiny*/,
2560  4 /*toYearTiny*/,
2561  3 /*inMonth*/,
2562  0 /*onDayOfWeek*/,
2563  20 /*onDayOfMonth*/,
2564  96 /*atTimeCode*/,
2565  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2566  4 /*deltaCode*/,
2567  '-' /*letter*/,
2568  },
2569  // Rule Iran 2004 only - Sep 20 24:00 0 -
2570  {
2571  4 /*fromYearTiny*/,
2572  4 /*toYearTiny*/,
2573  9 /*inMonth*/,
2574  0 /*onDayOfWeek*/,
2575  20 /*onDayOfMonth*/,
2576  96 /*atTimeCode*/,
2577  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2578  0 /*deltaCode*/,
2579  '-' /*letter*/,
2580  },
2581  // Rule Iran 2005 only - Mar 21 24:00 1:00 -
2582  {
2583  5 /*fromYearTiny*/,
2584  5 /*toYearTiny*/,
2585  3 /*inMonth*/,
2586  0 /*onDayOfWeek*/,
2587  21 /*onDayOfMonth*/,
2588  96 /*atTimeCode*/,
2589  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2590  4 /*deltaCode*/,
2591  '-' /*letter*/,
2592  },
2593  // Rule Iran 2005 only - Sep 21 24:00 0 -
2594  {
2595  5 /*fromYearTiny*/,
2596  5 /*toYearTiny*/,
2597  9 /*inMonth*/,
2598  0 /*onDayOfWeek*/,
2599  21 /*onDayOfMonth*/,
2600  96 /*atTimeCode*/,
2601  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2602  0 /*deltaCode*/,
2603  '-' /*letter*/,
2604  },
2605  // Rule Iran 2008 only - Mar 20 24:00 1:00 -
2606  {
2607  8 /*fromYearTiny*/,
2608  8 /*toYearTiny*/,
2609  3 /*inMonth*/,
2610  0 /*onDayOfWeek*/,
2611  20 /*onDayOfMonth*/,
2612  96 /*atTimeCode*/,
2613  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2614  4 /*deltaCode*/,
2615  '-' /*letter*/,
2616  },
2617  // Rule Iran 2008 only - Sep 20 24:00 0 -
2618  {
2619  8 /*fromYearTiny*/,
2620  8 /*toYearTiny*/,
2621  9 /*inMonth*/,
2622  0 /*onDayOfWeek*/,
2623  20 /*onDayOfMonth*/,
2624  96 /*atTimeCode*/,
2625  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2626  0 /*deltaCode*/,
2627  '-' /*letter*/,
2628  },
2629  // Rule Iran 2009 2011 - Mar 21 24:00 1:00 -
2630  {
2631  9 /*fromYearTiny*/,
2632  11 /*toYearTiny*/,
2633  3 /*inMonth*/,
2634  0 /*onDayOfWeek*/,
2635  21 /*onDayOfMonth*/,
2636  96 /*atTimeCode*/,
2637  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2638  4 /*deltaCode*/,
2639  '-' /*letter*/,
2640  },
2641  // Rule Iran 2009 2011 - Sep 21 24:00 0 -
2642  {
2643  9 /*fromYearTiny*/,
2644  11 /*toYearTiny*/,
2645  9 /*inMonth*/,
2646  0 /*onDayOfWeek*/,
2647  21 /*onDayOfMonth*/,
2648  96 /*atTimeCode*/,
2649  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2650  0 /*deltaCode*/,
2651  '-' /*letter*/,
2652  },
2653  // Rule Iran 2012 only - Mar 20 24:00 1:00 -
2654  {
2655  12 /*fromYearTiny*/,
2656  12 /*toYearTiny*/,
2657  3 /*inMonth*/,
2658  0 /*onDayOfWeek*/,
2659  20 /*onDayOfMonth*/,
2660  96 /*atTimeCode*/,
2661  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2662  4 /*deltaCode*/,
2663  '-' /*letter*/,
2664  },
2665  // Rule Iran 2012 only - Sep 20 24:00 0 -
2666  {
2667  12 /*fromYearTiny*/,
2668  12 /*toYearTiny*/,
2669  9 /*inMonth*/,
2670  0 /*onDayOfWeek*/,
2671  20 /*onDayOfMonth*/,
2672  96 /*atTimeCode*/,
2673  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2674  0 /*deltaCode*/,
2675  '-' /*letter*/,
2676  },
2677  // Rule Iran 2013 2015 - Mar 21 24:00 1:00 -
2678  {
2679  13 /*fromYearTiny*/,
2680  15 /*toYearTiny*/,
2681  3 /*inMonth*/,
2682  0 /*onDayOfWeek*/,
2683  21 /*onDayOfMonth*/,
2684  96 /*atTimeCode*/,
2685  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2686  4 /*deltaCode*/,
2687  '-' /*letter*/,
2688  },
2689  // Rule Iran 2013 2015 - Sep 21 24:00 0 -
2690  {
2691  13 /*fromYearTiny*/,
2692  15 /*toYearTiny*/,
2693  9 /*inMonth*/,
2694  0 /*onDayOfWeek*/,
2695  21 /*onDayOfMonth*/,
2696  96 /*atTimeCode*/,
2697  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2698  0 /*deltaCode*/,
2699  '-' /*letter*/,
2700  },
2701  // Rule Iran 2016 only - Mar 20 24:00 1:00 -
2702  {
2703  16 /*fromYearTiny*/,
2704  16 /*toYearTiny*/,
2705  3 /*inMonth*/,
2706  0 /*onDayOfWeek*/,
2707  20 /*onDayOfMonth*/,
2708  96 /*atTimeCode*/,
2709  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2710  4 /*deltaCode*/,
2711  '-' /*letter*/,
2712  },
2713  // Rule Iran 2016 only - Sep 20 24:00 0 -
2714  {
2715  16 /*fromYearTiny*/,
2716  16 /*toYearTiny*/,
2717  9 /*inMonth*/,
2718  0 /*onDayOfWeek*/,
2719  20 /*onDayOfMonth*/,
2720  96 /*atTimeCode*/,
2721  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2722  0 /*deltaCode*/,
2723  '-' /*letter*/,
2724  },
2725  // Rule Iran 2017 2019 - Mar 21 24:00 1:00 -
2726  {
2727  17 /*fromYearTiny*/,
2728  19 /*toYearTiny*/,
2729  3 /*inMonth*/,
2730  0 /*onDayOfWeek*/,
2731  21 /*onDayOfMonth*/,
2732  96 /*atTimeCode*/,
2733  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2734  4 /*deltaCode*/,
2735  '-' /*letter*/,
2736  },
2737  // Rule Iran 2017 2019 - Sep 21 24:00 0 -
2738  {
2739  17 /*fromYearTiny*/,
2740  19 /*toYearTiny*/,
2741  9 /*inMonth*/,
2742  0 /*onDayOfWeek*/,
2743  21 /*onDayOfMonth*/,
2744  96 /*atTimeCode*/,
2745  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2746  0 /*deltaCode*/,
2747  '-' /*letter*/,
2748  },
2749  // Rule Iran 2020 only - Mar 20 24:00 1:00 -
2750  {
2751  20 /*fromYearTiny*/,
2752  20 /*toYearTiny*/,
2753  3 /*inMonth*/,
2754  0 /*onDayOfWeek*/,
2755  20 /*onDayOfMonth*/,
2756  96 /*atTimeCode*/,
2757  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2758  4 /*deltaCode*/,
2759  '-' /*letter*/,
2760  },
2761  // Rule Iran 2020 only - Sep 20 24:00 0 -
2762  {
2763  20 /*fromYearTiny*/,
2764  20 /*toYearTiny*/,
2765  9 /*inMonth*/,
2766  0 /*onDayOfWeek*/,
2767  20 /*onDayOfMonth*/,
2768  96 /*atTimeCode*/,
2769  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2770  0 /*deltaCode*/,
2771  '-' /*letter*/,
2772  },
2773  // Rule Iran 2021 2023 - Mar 21 24:00 1:00 -
2774  {
2775  21 /*fromYearTiny*/,
2776  23 /*toYearTiny*/,
2777  3 /*inMonth*/,
2778  0 /*onDayOfWeek*/,
2779  21 /*onDayOfMonth*/,
2780  96 /*atTimeCode*/,
2781  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2782  4 /*deltaCode*/,
2783  '-' /*letter*/,
2784  },
2785  // Rule Iran 2021 2023 - Sep 21 24:00 0 -
2786  {
2787  21 /*fromYearTiny*/,
2788  23 /*toYearTiny*/,
2789  9 /*inMonth*/,
2790  0 /*onDayOfWeek*/,
2791  21 /*onDayOfMonth*/,
2792  96 /*atTimeCode*/,
2793  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2794  0 /*deltaCode*/,
2795  '-' /*letter*/,
2796  },
2797  // Rule Iran 2024 only - Mar 20 24:00 1:00 -
2798  {
2799  24 /*fromYearTiny*/,
2800  24 /*toYearTiny*/,
2801  3 /*inMonth*/,
2802  0 /*onDayOfWeek*/,
2803  20 /*onDayOfMonth*/,
2804  96 /*atTimeCode*/,
2805  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2806  4 /*deltaCode*/,
2807  '-' /*letter*/,
2808  },
2809  // Rule Iran 2024 only - Sep 20 24:00 0 -
2810  {
2811  24 /*fromYearTiny*/,
2812  24 /*toYearTiny*/,
2813  9 /*inMonth*/,
2814  0 /*onDayOfWeek*/,
2815  20 /*onDayOfMonth*/,
2816  96 /*atTimeCode*/,
2817  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2818  0 /*deltaCode*/,
2819  '-' /*letter*/,
2820  },
2821  // Rule Iran 2025 2027 - Mar 21 24:00 1:00 -
2822  {
2823  25 /*fromYearTiny*/,
2824  27 /*toYearTiny*/,
2825  3 /*inMonth*/,
2826  0 /*onDayOfWeek*/,
2827  21 /*onDayOfMonth*/,
2828  96 /*atTimeCode*/,
2829  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2830  4 /*deltaCode*/,
2831  '-' /*letter*/,
2832  },
2833  // Rule Iran 2025 2027 - Sep 21 24:00 0 -
2834  {
2835  25 /*fromYearTiny*/,
2836  27 /*toYearTiny*/,
2837  9 /*inMonth*/,
2838  0 /*onDayOfWeek*/,
2839  21 /*onDayOfMonth*/,
2840  96 /*atTimeCode*/,
2841  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2842  0 /*deltaCode*/,
2843  '-' /*letter*/,
2844  },
2845  // Rule Iran 2028 2029 - Mar 20 24:00 1:00 -
2846  {
2847  28 /*fromYearTiny*/,
2848  29 /*toYearTiny*/,
2849  3 /*inMonth*/,
2850  0 /*onDayOfWeek*/,
2851  20 /*onDayOfMonth*/,
2852  96 /*atTimeCode*/,
2853  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2854  4 /*deltaCode*/,
2855  '-' /*letter*/,
2856  },
2857  // Rule Iran 2028 2029 - Sep 20 24:00 0 -
2858  {
2859  28 /*fromYearTiny*/,
2860  29 /*toYearTiny*/,
2861  9 /*inMonth*/,
2862  0 /*onDayOfWeek*/,
2863  20 /*onDayOfMonth*/,
2864  96 /*atTimeCode*/,
2865  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2866  0 /*deltaCode*/,
2867  '-' /*letter*/,
2868  },
2869  // Rule Iran 2030 2031 - Mar 21 24:00 1:00 -
2870  {
2871  30 /*fromYearTiny*/,
2872  31 /*toYearTiny*/,
2873  3 /*inMonth*/,
2874  0 /*onDayOfWeek*/,
2875  21 /*onDayOfMonth*/,
2876  96 /*atTimeCode*/,
2877  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2878  4 /*deltaCode*/,
2879  '-' /*letter*/,
2880  },
2881  // Rule Iran 2030 2031 - Sep 21 24:00 0 -
2882  {
2883  30 /*fromYearTiny*/,
2884  31 /*toYearTiny*/,
2885  9 /*inMonth*/,
2886  0 /*onDayOfWeek*/,
2887  21 /*onDayOfMonth*/,
2888  96 /*atTimeCode*/,
2889  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2890  0 /*deltaCode*/,
2891  '-' /*letter*/,
2892  },
2893  // Rule Iran 2032 2033 - Mar 20 24:00 1:00 -
2894  {
2895  32 /*fromYearTiny*/,
2896  33 /*toYearTiny*/,
2897  3 /*inMonth*/,
2898  0 /*onDayOfWeek*/,
2899  20 /*onDayOfMonth*/,
2900  96 /*atTimeCode*/,
2901  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2902  4 /*deltaCode*/,
2903  '-' /*letter*/,
2904  },
2905  // Rule Iran 2032 2033 - Sep 20 24:00 0 -
2906  {
2907  32 /*fromYearTiny*/,
2908  33 /*toYearTiny*/,
2909  9 /*inMonth*/,
2910  0 /*onDayOfWeek*/,
2911  20 /*onDayOfMonth*/,
2912  96 /*atTimeCode*/,
2913  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2914  0 /*deltaCode*/,
2915  '-' /*letter*/,
2916  },
2917  // Rule Iran 2034 2035 - Mar 21 24:00 1:00 -
2918  {
2919  34 /*fromYearTiny*/,
2920  35 /*toYearTiny*/,
2921  3 /*inMonth*/,
2922  0 /*onDayOfWeek*/,
2923  21 /*onDayOfMonth*/,
2924  96 /*atTimeCode*/,
2925  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2926  4 /*deltaCode*/,
2927  '-' /*letter*/,
2928  },
2929  // Rule Iran 2034 2035 - Sep 21 24:00 0 -
2930  {
2931  34 /*fromYearTiny*/,
2932  35 /*toYearTiny*/,
2933  9 /*inMonth*/,
2934  0 /*onDayOfWeek*/,
2935  21 /*onDayOfMonth*/,
2936  96 /*atTimeCode*/,
2937  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2938  0 /*deltaCode*/,
2939  '-' /*letter*/,
2940  },
2941  // Rule Iran 2036 2037 - Mar 20 24:00 1:00 -
2942  {
2943  36 /*fromYearTiny*/,
2944  37 /*toYearTiny*/,
2945  3 /*inMonth*/,
2946  0 /*onDayOfWeek*/,
2947  20 /*onDayOfMonth*/,
2948  96 /*atTimeCode*/,
2949  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2950  4 /*deltaCode*/,
2951  '-' /*letter*/,
2952  },
2953  // Rule Iran 2036 2037 - Sep 20 24:00 0 -
2954  {
2955  36 /*fromYearTiny*/,
2956  37 /*toYearTiny*/,
2957  9 /*inMonth*/,
2958  0 /*onDayOfWeek*/,
2959  20 /*onDayOfMonth*/,
2960  96 /*atTimeCode*/,
2961  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2962  0 /*deltaCode*/,
2963  '-' /*letter*/,
2964  },
2965  // Rule Iran 2038 2039 - Mar 21 24:00 1:00 -
2966  {
2967  38 /*fromYearTiny*/,
2968  39 /*toYearTiny*/,
2969  3 /*inMonth*/,
2970  0 /*onDayOfWeek*/,
2971  21 /*onDayOfMonth*/,
2972  96 /*atTimeCode*/,
2973  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2974  4 /*deltaCode*/,
2975  '-' /*letter*/,
2976  },
2977  // Rule Iran 2038 2039 - Sep 21 24:00 0 -
2978  {
2979  38 /*fromYearTiny*/,
2980  39 /*toYearTiny*/,
2981  9 /*inMonth*/,
2982  0 /*onDayOfWeek*/,
2983  21 /*onDayOfMonth*/,
2984  96 /*atTimeCode*/,
2985  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2986  0 /*deltaCode*/,
2987  '-' /*letter*/,
2988  },
2989  // Rule Iran 2040 2041 - Mar 20 24:00 1:00 -
2990  {
2991  40 /*fromYearTiny*/,
2992  41 /*toYearTiny*/,
2993  3 /*inMonth*/,
2994  0 /*onDayOfWeek*/,
2995  20 /*onDayOfMonth*/,
2996  96 /*atTimeCode*/,
2997  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
2998  4 /*deltaCode*/,
2999  '-' /*letter*/,
3000  },
3001  // Rule Iran 2040 2041 - Sep 20 24:00 0 -
3002  {
3003  40 /*fromYearTiny*/,
3004  41 /*toYearTiny*/,
3005  9 /*inMonth*/,
3006  0 /*onDayOfWeek*/,
3007  20 /*onDayOfMonth*/,
3008  96 /*atTimeCode*/,
3009  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3010  0 /*deltaCode*/,
3011  '-' /*letter*/,
3012  },
3013  // Rule Iran 2042 2043 - Mar 21 24:00 1:00 -
3014  {
3015  42 /*fromYearTiny*/,
3016  43 /*toYearTiny*/,
3017  3 /*inMonth*/,
3018  0 /*onDayOfWeek*/,
3019  21 /*onDayOfMonth*/,
3020  96 /*atTimeCode*/,
3021  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3022  4 /*deltaCode*/,
3023  '-' /*letter*/,
3024  },
3025  // Rule Iran 2042 2043 - Sep 21 24:00 0 -
3026  {
3027  42 /*fromYearTiny*/,
3028  43 /*toYearTiny*/,
3029  9 /*inMonth*/,
3030  0 /*onDayOfWeek*/,
3031  21 /*onDayOfMonth*/,
3032  96 /*atTimeCode*/,
3033  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3034  0 /*deltaCode*/,
3035  '-' /*letter*/,
3036  },
3037  // Rule Iran 2044 2045 - Mar 20 24:00 1:00 -
3038  {
3039  44 /*fromYearTiny*/,
3040  45 /*toYearTiny*/,
3041  3 /*inMonth*/,
3042  0 /*onDayOfWeek*/,
3043  20 /*onDayOfMonth*/,
3044  96 /*atTimeCode*/,
3045  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3046  4 /*deltaCode*/,
3047  '-' /*letter*/,
3048  },
3049  // Rule Iran 2044 2045 - Sep 20 24:00 0 -
3050  {
3051  44 /*fromYearTiny*/,
3052  45 /*toYearTiny*/,
3053  9 /*inMonth*/,
3054  0 /*onDayOfWeek*/,
3055  20 /*onDayOfMonth*/,
3056  96 /*atTimeCode*/,
3057  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3058  0 /*deltaCode*/,
3059  '-' /*letter*/,
3060  },
3061  // Rule Iran 2046 2047 - Mar 21 24:00 1:00 -
3062  {
3063  46 /*fromYearTiny*/,
3064  47 /*toYearTiny*/,
3065  3 /*inMonth*/,
3066  0 /*onDayOfWeek*/,
3067  21 /*onDayOfMonth*/,
3068  96 /*atTimeCode*/,
3069  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3070  4 /*deltaCode*/,
3071  '-' /*letter*/,
3072  },
3073  // Rule Iran 2046 2047 - Sep 21 24:00 0 -
3074  {
3075  46 /*fromYearTiny*/,
3076  47 /*toYearTiny*/,
3077  9 /*inMonth*/,
3078  0 /*onDayOfWeek*/,
3079  21 /*onDayOfMonth*/,
3080  96 /*atTimeCode*/,
3081  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3082  0 /*deltaCode*/,
3083  '-' /*letter*/,
3084  },
3085  // Rule Iran 2048 2049 - Mar 20 24:00 1:00 -
3086  {
3087  48 /*fromYearTiny*/,
3088  49 /*toYearTiny*/,
3089  3 /*inMonth*/,
3090  0 /*onDayOfWeek*/,
3091  20 /*onDayOfMonth*/,
3092  96 /*atTimeCode*/,
3093  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3094  4 /*deltaCode*/,
3095  '-' /*letter*/,
3096  },
3097  // Rule Iran 2048 2049 - Sep 20 24:00 0 -
3098  {
3099  48 /*fromYearTiny*/,
3100  49 /*toYearTiny*/,
3101  9 /*inMonth*/,
3102  0 /*onDayOfWeek*/,
3103  20 /*onDayOfMonth*/,
3104  96 /*atTimeCode*/,
3105  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3106  0 /*deltaCode*/,
3107  '-' /*letter*/,
3108  },
3109  // Rule Iran 2050 2051 - Mar 21 24:00 1:00 -
3110  {
3111  50 /*fromYearTiny*/,
3112  51 /*toYearTiny*/,
3113  3 /*inMonth*/,
3114  0 /*onDayOfWeek*/,
3115  21 /*onDayOfMonth*/,
3116  96 /*atTimeCode*/,
3117  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3118  4 /*deltaCode*/,
3119  '-' /*letter*/,
3120  },
3121  // Rule Iran 2050 2051 - Sep 21 24:00 0 -
3122  {
3123  50 /*fromYearTiny*/,
3124  51 /*toYearTiny*/,
3125  9 /*inMonth*/,
3126  0 /*onDayOfWeek*/,
3127  21 /*onDayOfMonth*/,
3128  96 /*atTimeCode*/,
3129  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3130  0 /*deltaCode*/,
3131  '-' /*letter*/,
3132  },
3133 
3134 };
3135 
3136 
3137 
3138 const basic::ZonePolicy kPolicyIran ACE_TIME_PROGMEM = {
3139  kZoneRulesIran /*rules*/,
3140  nullptr /* letters */,
3141  55 /*numRules*/,
3142  0 /* numLetters */,
3143 };
3144 
3145 //---------------------------------------------------------------------------
3146 // Policy name: Iraq
3147 // Rules: 3
3148 // Memory (8-bit): 33
3149 // Memory (32-bit): 48
3150 //---------------------------------------------------------------------------
3151 
3152 static const basic::ZoneRule kZoneRulesIraq[] ACE_TIME_PROGMEM = {
3153  // Rule Iraq 1985 1990 - Sep lastSun 1:00s 0 -
3154  {
3155  -15 /*fromYearTiny*/,
3156  -10 /*toYearTiny*/,
3157  9 /*inMonth*/,
3158  7 /*onDayOfWeek*/,
3159  0 /*onDayOfMonth*/,
3160  4 /*atTimeCode*/,
3161  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
3162  0 /*deltaCode*/,
3163  '-' /*letter*/,
3164  },
3165  // Rule Iraq 1991 2007 - Apr 1 3:00s 1:00 -
3166  {
3167  -9 /*fromYearTiny*/,
3168  7 /*toYearTiny*/,
3169  4 /*inMonth*/,
3170  0 /*onDayOfWeek*/,
3171  1 /*onDayOfMonth*/,
3172  12 /*atTimeCode*/,
3173  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
3174  4 /*deltaCode*/,
3175  '-' /*letter*/,
3176  },
3177  // Rule Iraq 1991 2007 - Oct 1 3:00s 0 -
3178  {
3179  -9 /*fromYearTiny*/,
3180  7 /*toYearTiny*/,
3181  10 /*inMonth*/,
3182  0 /*onDayOfWeek*/,
3183  1 /*onDayOfMonth*/,
3184  12 /*atTimeCode*/,
3185  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
3186  0 /*deltaCode*/,
3187  '-' /*letter*/,
3188  },
3189 
3190 };
3191 
3192 
3193 
3194 const basic::ZonePolicy kPolicyIraq ACE_TIME_PROGMEM = {
3195  kZoneRulesIraq /*rules*/,
3196  nullptr /* letters */,
3197  3 /*numRules*/,
3198  0 /* numLetters */,
3199 };
3200 
3201 //---------------------------------------------------------------------------
3202 // Policy name: Japan
3203 // Rules: 1
3204 // Memory (8-bit): 15
3205 // Memory (32-bit): 24
3206 //---------------------------------------------------------------------------
3207 
3208 static const basic::ZoneRule kZoneRulesJapan[] ACE_TIME_PROGMEM = {
3209  // Rule Japan 1948 1951 - Sep Sat>=8 25:00 0 S
3210  {
3211  -52 /*fromYearTiny*/,
3212  -49 /*toYearTiny*/,
3213  9 /*inMonth*/,
3214  6 /*onDayOfWeek*/,
3215  8 /*onDayOfMonth*/,
3216  100 /*atTimeCode*/,
3217  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3218  0 /*deltaCode*/,
3219  'S' /*letter*/,
3220  },
3221 
3222 };
3223 
3224 
3225 
3226 const basic::ZonePolicy kPolicyJapan ACE_TIME_PROGMEM = {
3227  kZoneRulesJapan /*rules*/,
3228  nullptr /* letters */,
3229  1 /*numRules*/,
3230  0 /* numLetters */,
3231 };
3232 
3233 //---------------------------------------------------------------------------
3234 // Policy name: Jordan
3235 // Rules: 12
3236 // Memory (8-bit): 114
3237 // Memory (32-bit): 156
3238 //---------------------------------------------------------------------------
3239 
3240 static const basic::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = {
3241  // Rule Jordan 1995 1998 - Sep Fri>=15 0:00s 0 -
3242  {
3243  -5 /*fromYearTiny*/,
3244  -2 /*toYearTiny*/,
3245  9 /*inMonth*/,
3246  5 /*onDayOfWeek*/,
3247  15 /*onDayOfMonth*/,
3248  0 /*atTimeCode*/,
3249  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
3250  0 /*deltaCode*/,
3251  '-' /*letter*/,
3252  },
3253  // Rule Jordan 1999 only - Jul 1 0:00s 1:00 S
3254  {
3255  -1 /*fromYearTiny*/,
3256  -1 /*toYearTiny*/,
3257  7 /*inMonth*/,
3258  0 /*onDayOfWeek*/,
3259  1 /*onDayOfMonth*/,
3260  0 /*atTimeCode*/,
3261  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
3262  4 /*deltaCode*/,
3263  'S' /*letter*/,
3264  },
3265  // Rule Jordan 1999 2002 - Sep lastFri 0:00s 0 -
3266  {
3267  -1 /*fromYearTiny*/,
3268  2 /*toYearTiny*/,
3269  9 /*inMonth*/,
3270  5 /*onDayOfWeek*/,
3271  0 /*onDayOfMonth*/,
3272  0 /*atTimeCode*/,
3273  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
3274  0 /*deltaCode*/,
3275  '-' /*letter*/,
3276  },
3277  // Rule Jordan 2000 2001 - Mar lastThu 0:00s 1:00 S
3278  {
3279  0 /*fromYearTiny*/,
3280  1 /*toYearTiny*/,
3281  3 /*inMonth*/,
3282  4 /*onDayOfWeek*/,
3283  0 /*onDayOfMonth*/,
3284  0 /*atTimeCode*/,
3285  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
3286  4 /*deltaCode*/,
3287  'S' /*letter*/,
3288  },
3289  // Rule Jordan 2002 2012 - Mar lastThu 24:00 1:00 S
3290  {
3291  2 /*fromYearTiny*/,
3292  12 /*toYearTiny*/,
3293  3 /*inMonth*/,
3294  4 /*onDayOfWeek*/,
3295  0 /*onDayOfMonth*/,
3296  96 /*atTimeCode*/,
3297  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3298  4 /*deltaCode*/,
3299  'S' /*letter*/,
3300  },
3301  // Rule Jordan 2003 only - Oct 24 0:00s 0 -
3302  {
3303  3 /*fromYearTiny*/,
3304  3 /*toYearTiny*/,
3305  10 /*inMonth*/,
3306  0 /*onDayOfWeek*/,
3307  24 /*onDayOfMonth*/,
3308  0 /*atTimeCode*/,
3309  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
3310  0 /*deltaCode*/,
3311  '-' /*letter*/,
3312  },
3313  // Rule Jordan 2004 only - Oct 15 0:00s 0 -
3314  {
3315  4 /*fromYearTiny*/,
3316  4 /*toYearTiny*/,
3317  10 /*inMonth*/,
3318  0 /*onDayOfWeek*/,
3319  15 /*onDayOfMonth*/,
3320  0 /*atTimeCode*/,
3321  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
3322  0 /*deltaCode*/,
3323  '-' /*letter*/,
3324  },
3325  // Rule Jordan 2005 only - Sep lastFri 0:00s 0 -
3326  {
3327  5 /*fromYearTiny*/,
3328  5 /*toYearTiny*/,
3329  9 /*inMonth*/,
3330  5 /*onDayOfWeek*/,
3331  0 /*onDayOfMonth*/,
3332  0 /*atTimeCode*/,
3333  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
3334  0 /*deltaCode*/,
3335  '-' /*letter*/,
3336  },
3337  // Rule Jordan 2006 2011 - Oct lastFri 0:00s 0 -
3338  {
3339  6 /*fromYearTiny*/,
3340  11 /*toYearTiny*/,
3341  10 /*inMonth*/,
3342  5 /*onDayOfWeek*/,
3343  0 /*onDayOfMonth*/,
3344  0 /*atTimeCode*/,
3345  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
3346  0 /*deltaCode*/,
3347  '-' /*letter*/,
3348  },
3349  // Rule Jordan 2013 only - Dec 20 0:00 0 -
3350  {
3351  13 /*fromYearTiny*/,
3352  13 /*toYearTiny*/,
3353  12 /*inMonth*/,
3354  0 /*onDayOfWeek*/,
3355  20 /*onDayOfMonth*/,
3356  0 /*atTimeCode*/,
3357  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3358  0 /*deltaCode*/,
3359  '-' /*letter*/,
3360  },
3361  // Rule Jordan 2014 max - Mar lastThu 24:00 1:00 S
3362  {
3363  14 /*fromYearTiny*/,
3364  126 /*toYearTiny*/,
3365  3 /*inMonth*/,
3366  4 /*onDayOfWeek*/,
3367  0 /*onDayOfMonth*/,
3368  96 /*atTimeCode*/,
3369  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3370  4 /*deltaCode*/,
3371  'S' /*letter*/,
3372  },
3373  // Rule Jordan 2014 max - Oct lastFri 0:00s 0 -
3374  {
3375  14 /*fromYearTiny*/,
3376  126 /*toYearTiny*/,
3377  10 /*inMonth*/,
3378  5 /*onDayOfWeek*/,
3379  0 /*onDayOfMonth*/,
3380  0 /*atTimeCode*/,
3381  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
3382  0 /*deltaCode*/,
3383  '-' /*letter*/,
3384  },
3385 
3386 };
3387 
3388 
3389 
3390 const basic::ZonePolicy kPolicyJordan ACE_TIME_PROGMEM = {
3391  kZoneRulesJordan /*rules*/,
3392  nullptr /* letters */,
3393  12 /*numRules*/,
3394  0 /* numLetters */,
3395 };
3396 
3397 //---------------------------------------------------------------------------
3398 // Policy name: LH
3399 // Rules: 9
3400 // Memory (8-bit): 87
3401 // Memory (32-bit): 120
3402 //---------------------------------------------------------------------------
3403 
3404 static const basic::ZoneRule kZoneRulesLH[] ACE_TIME_PROGMEM = {
3405  // Rule LH 1987 1999 - Oct lastSun 2:00 0:30 -
3406  {
3407  -13 /*fromYearTiny*/,
3408  -1 /*toYearTiny*/,
3409  10 /*inMonth*/,
3410  7 /*onDayOfWeek*/,
3411  0 /*onDayOfMonth*/,
3412  8 /*atTimeCode*/,
3413  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3414  2 /*deltaCode*/,
3415  '-' /*letter*/,
3416  },
3417  // Rule LH 1990 1995 - Mar Sun>=1 2:00 0 -
3418  {
3419  -10 /*fromYearTiny*/,
3420  -5 /*toYearTiny*/,
3421  3 /*inMonth*/,
3422  7 /*onDayOfWeek*/,
3423  1 /*onDayOfMonth*/,
3424  8 /*atTimeCode*/,
3425  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3426  0 /*deltaCode*/,
3427  '-' /*letter*/,
3428  },
3429  // Rule LH 1996 2005 - Mar lastSun 2:00 0 -
3430  {
3431  -4 /*fromYearTiny*/,
3432  5 /*toYearTiny*/,
3433  3 /*inMonth*/,
3434  7 /*onDayOfWeek*/,
3435  0 /*onDayOfMonth*/,
3436  8 /*atTimeCode*/,
3437  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3438  0 /*deltaCode*/,
3439  '-' /*letter*/,
3440  },
3441  // Rule LH 2000 only - Aug lastSun 2:00 0:30 -
3442  {
3443  0 /*fromYearTiny*/,
3444  0 /*toYearTiny*/,
3445  8 /*inMonth*/,
3446  7 /*onDayOfWeek*/,
3447  0 /*onDayOfMonth*/,
3448  8 /*atTimeCode*/,
3449  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3450  2 /*deltaCode*/,
3451  '-' /*letter*/,
3452  },
3453  // Rule LH 2001 2007 - Oct lastSun 2:00 0:30 -
3454  {
3455  1 /*fromYearTiny*/,
3456  7 /*toYearTiny*/,
3457  10 /*inMonth*/,
3458  7 /*onDayOfWeek*/,
3459  0 /*onDayOfMonth*/,
3460  8 /*atTimeCode*/,
3461  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3462  2 /*deltaCode*/,
3463  '-' /*letter*/,
3464  },
3465  // Rule LH 2006 only - Apr Sun>=1 2:00 0 -
3466  {
3467  6 /*fromYearTiny*/,
3468  6 /*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 2007 only - Mar lastSun 2:00 0 -
3478  {
3479  7 /*fromYearTiny*/,
3480  7 /*toYearTiny*/,
3481  3 /*inMonth*/,
3482  7 /*onDayOfWeek*/,
3483  0 /*onDayOfMonth*/,
3484  8 /*atTimeCode*/,
3485  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3486  0 /*deltaCode*/,
3487  '-' /*letter*/,
3488  },
3489  // Rule LH 2008 max - Apr Sun>=1 2:00 0 -
3490  {
3491  8 /*fromYearTiny*/,
3492  126 /*toYearTiny*/,
3493  4 /*inMonth*/,
3494  7 /*onDayOfWeek*/,
3495  1 /*onDayOfMonth*/,
3496  8 /*atTimeCode*/,
3497  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3498  0 /*deltaCode*/,
3499  '-' /*letter*/,
3500  },
3501  // Rule LH 2008 max - Oct Sun>=1 2:00 0:30 -
3502  {
3503  8 /*fromYearTiny*/,
3504  126 /*toYearTiny*/,
3505  10 /*inMonth*/,
3506  7 /*onDayOfWeek*/,
3507  1 /*onDayOfMonth*/,
3508  8 /*atTimeCode*/,
3509  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3510  2 /*deltaCode*/,
3511  '-' /*letter*/,
3512  },
3513 
3514 };
3515 
3516 
3517 
3518 const basic::ZonePolicy kPolicyLH ACE_TIME_PROGMEM = {
3519  kZoneRulesLH /*rules*/,
3520  nullptr /* letters */,
3521  9 /*numRules*/,
3522  0 /* numLetters */,
3523 };
3524 
3525 //---------------------------------------------------------------------------
3526 // Policy name: Lebanon
3527 // Rules: 3
3528 // Memory (8-bit): 33
3529 // Memory (32-bit): 48
3530 //---------------------------------------------------------------------------
3531 
3532 static const basic::ZoneRule kZoneRulesLebanon[] ACE_TIME_PROGMEM = {
3533  // Rule Lebanon 1993 max - Mar lastSun 0:00 1:00 S
3534  {
3535  -7 /*fromYearTiny*/,
3536  126 /*toYearTiny*/,
3537  3 /*inMonth*/,
3538  7 /*onDayOfWeek*/,
3539  0 /*onDayOfMonth*/,
3540  0 /*atTimeCode*/,
3541  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3542  4 /*deltaCode*/,
3543  'S' /*letter*/,
3544  },
3545  // Rule Lebanon 1993 1998 - Sep lastSun 0:00 0 -
3546  {
3547  -7 /*fromYearTiny*/,
3548  -2 /*toYearTiny*/,
3549  9 /*inMonth*/,
3550  7 /*onDayOfWeek*/,
3551  0 /*onDayOfMonth*/,
3552  0 /*atTimeCode*/,
3553  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3554  0 /*deltaCode*/,
3555  '-' /*letter*/,
3556  },
3557  // Rule Lebanon 1999 max - Oct lastSun 0:00 0 -
3558  {
3559  -1 /*fromYearTiny*/,
3560  126 /*toYearTiny*/,
3561  10 /*inMonth*/,
3562  7 /*onDayOfWeek*/,
3563  0 /*onDayOfMonth*/,
3564  0 /*atTimeCode*/,
3565  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3566  0 /*deltaCode*/,
3567  '-' /*letter*/,
3568  },
3569 
3570 };
3571 
3572 
3573 
3574 const basic::ZonePolicy kPolicyLebanon ACE_TIME_PROGMEM = {
3575  kZoneRulesLebanon /*rules*/,
3576  nullptr /* letters */,
3577  3 /*numRules*/,
3578  0 /* numLetters */,
3579 };
3580 
3581 //---------------------------------------------------------------------------
3582 // Policy name: Macau
3583 // Rules: 1
3584 // Memory (8-bit): 15
3585 // Memory (32-bit): 24
3586 //---------------------------------------------------------------------------
3587 
3588 static const basic::ZoneRule kZoneRulesMacau[] ACE_TIME_PROGMEM = {
3589  // Rule Macau 1979 only - Oct Sun>=16 03:30 0 S
3590  {
3591  -21 /*fromYearTiny*/,
3592  -21 /*toYearTiny*/,
3593  10 /*inMonth*/,
3594  7 /*onDayOfWeek*/,
3595  16 /*onDayOfMonth*/,
3596  14 /*atTimeCode*/,
3597  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3598  0 /*deltaCode*/,
3599  'S' /*letter*/,
3600  },
3601 
3602 };
3603 
3604 
3605 
3606 const basic::ZonePolicy kPolicyMacau ACE_TIME_PROGMEM = {
3607  kZoneRulesMacau /*rules*/,
3608  nullptr /* letters */,
3609  1 /*numRules*/,
3610  0 /* numLetters */,
3611 };
3612 
3613 //---------------------------------------------------------------------------
3614 // Policy name: Mauritius
3615 // Rules: 3
3616 // Memory (8-bit): 33
3617 // Memory (32-bit): 48
3618 //---------------------------------------------------------------------------
3619 
3620 static const basic::ZoneRule kZoneRulesMauritius[] ACE_TIME_PROGMEM = {
3621  // Rule Mauritius 1983 only - Mar 21 0:00 0 -
3622  {
3623  -17 /*fromYearTiny*/,
3624  -17 /*toYearTiny*/,
3625  3 /*inMonth*/,
3626  0 /*onDayOfWeek*/,
3627  21 /*onDayOfMonth*/,
3628  0 /*atTimeCode*/,
3629  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3630  0 /*deltaCode*/,
3631  '-' /*letter*/,
3632  },
3633  // Rule Mauritius 2008 only - Oct lastSun 2:00 1:00 -
3634  {
3635  8 /*fromYearTiny*/,
3636  8 /*toYearTiny*/,
3637  10 /*inMonth*/,
3638  7 /*onDayOfWeek*/,
3639  0 /*onDayOfMonth*/,
3640  8 /*atTimeCode*/,
3641  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3642  4 /*deltaCode*/,
3643  '-' /*letter*/,
3644  },
3645  // Rule Mauritius 2009 only - Mar lastSun 2:00 0 -
3646  {
3647  9 /*fromYearTiny*/,
3648  9 /*toYearTiny*/,
3649  3 /*inMonth*/,
3650  7 /*onDayOfWeek*/,
3651  0 /*onDayOfMonth*/,
3652  8 /*atTimeCode*/,
3653  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3654  0 /*deltaCode*/,
3655  '-' /*letter*/,
3656  },
3657 
3658 };
3659 
3660 
3661 
3662 const basic::ZonePolicy kPolicyMauritius ACE_TIME_PROGMEM = {
3663  kZoneRulesMauritius /*rules*/,
3664  nullptr /* letters */,
3665  3 /*numRules*/,
3666  0 /* numLetters */,
3667 };
3668 
3669 //---------------------------------------------------------------------------
3670 // Policy name: Mexico
3671 // Rules: 7
3672 // Memory (8-bit): 69
3673 // Memory (32-bit): 96
3674 //---------------------------------------------------------------------------
3675 
3676 static const basic::ZoneRule kZoneRulesMexico[] ACE_TIME_PROGMEM = {
3677  // Rule Mexico 1950 only - Jul 30 0:00 0 S
3678  {
3679  -50 /*fromYearTiny*/,
3680  -50 /*toYearTiny*/,
3681  7 /*inMonth*/,
3682  0 /*onDayOfWeek*/,
3683  30 /*onDayOfMonth*/,
3684  0 /*atTimeCode*/,
3685  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3686  0 /*deltaCode*/,
3687  'S' /*letter*/,
3688  },
3689  // Rule Mexico 1996 2000 - Apr Sun>=1 2:00 1:00 D
3690  {
3691  -4 /*fromYearTiny*/,
3692  0 /*toYearTiny*/,
3693  4 /*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 1996 2000 - Oct lastSun 2:00 0 S
3702  {
3703  -4 /*fromYearTiny*/,
3704  0 /*toYearTiny*/,
3705  10 /*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 2001 only - May Sun>=1 2:00 1:00 D
3714  {
3715  1 /*fromYearTiny*/,
3716  1 /*toYearTiny*/,
3717  5 /*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 2001 only - Sep lastSun 2:00 0 S
3726  {
3727  1 /*fromYearTiny*/,
3728  1 /*toYearTiny*/,
3729  9 /*inMonth*/,
3730  7 /*onDayOfWeek*/,
3731  0 /*onDayOfMonth*/,
3732  8 /*atTimeCode*/,
3733  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3734  0 /*deltaCode*/,
3735  'S' /*letter*/,
3736  },
3737  // Rule Mexico 2002 max - Apr Sun>=1 2:00 1:00 D
3738  {
3739  2 /*fromYearTiny*/,
3740  126 /*toYearTiny*/,
3741  4 /*inMonth*/,
3742  7 /*onDayOfWeek*/,
3743  1 /*onDayOfMonth*/,
3744  8 /*atTimeCode*/,
3745  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3746  4 /*deltaCode*/,
3747  'D' /*letter*/,
3748  },
3749  // Rule Mexico 2002 max - Oct lastSun 2:00 0 S
3750  {
3751  2 /*fromYearTiny*/,
3752  126 /*toYearTiny*/,
3753  10 /*inMonth*/,
3754  7 /*onDayOfWeek*/,
3755  0 /*onDayOfMonth*/,
3756  8 /*atTimeCode*/,
3757  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3758  0 /*deltaCode*/,
3759  'S' /*letter*/,
3760  },
3761 
3762 };
3763 
3764 
3765 
3766 const basic::ZonePolicy kPolicyMexico ACE_TIME_PROGMEM = {
3767  kZoneRulesMexico /*rules*/,
3768  nullptr /* letters */,
3769  7 /*numRules*/,
3770  0 /* numLetters */,
3771 };
3772 
3773 //---------------------------------------------------------------------------
3774 // Policy name: Moldova
3775 // Rules: 2
3776 // Memory (8-bit): 24
3777 // Memory (32-bit): 36
3778 //---------------------------------------------------------------------------
3779 
3780 static const basic::ZoneRule kZoneRulesMoldova[] ACE_TIME_PROGMEM = {
3781  // Rule Moldova 1997 max - Mar lastSun 2:00 1:00 S
3782  {
3783  -3 /*fromYearTiny*/,
3784  126 /*toYearTiny*/,
3785  3 /*inMonth*/,
3786  7 /*onDayOfWeek*/,
3787  0 /*onDayOfMonth*/,
3788  8 /*atTimeCode*/,
3789  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3790  4 /*deltaCode*/,
3791  'S' /*letter*/,
3792  },
3793  // Rule Moldova 1997 max - Oct lastSun 3:00 0 -
3794  {
3795  -3 /*fromYearTiny*/,
3796  126 /*toYearTiny*/,
3797  10 /*inMonth*/,
3798  7 /*onDayOfWeek*/,
3799  0 /*onDayOfMonth*/,
3800  12 /*atTimeCode*/,
3801  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3802  0 /*deltaCode*/,
3803  '-' /*letter*/,
3804  },
3805 
3806 };
3807 
3808 
3809 
3810 const basic::ZonePolicy kPolicyMoldova ACE_TIME_PROGMEM = {
3811  kZoneRulesMoldova /*rules*/,
3812  nullptr /* letters */,
3813  2 /*numRules*/,
3814  0 /* numLetters */,
3815 };
3816 
3817 //---------------------------------------------------------------------------
3818 // Policy name: Moncton
3819 // Rules: 3
3820 // Memory (8-bit): 33
3821 // Memory (32-bit): 48
3822 //---------------------------------------------------------------------------
3823 
3824 static const basic::ZoneRule kZoneRulesMoncton[] ACE_TIME_PROGMEM = {
3825  // Rule Moncton 1957 1972 - Oct lastSun 2:00 0 S
3826  {
3827  -43 /*fromYearTiny*/,
3828  -28 /*toYearTiny*/,
3829  10 /*inMonth*/,
3830  7 /*onDayOfWeek*/,
3831  0 /*onDayOfMonth*/,
3832  8 /*atTimeCode*/,
3833  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3834  0 /*deltaCode*/,
3835  'S' /*letter*/,
3836  },
3837  // Rule Moncton 1993 2006 - Apr Sun>=1 0:01 1:00 D
3838  {
3839  -7 /*fromYearTiny*/,
3840  6 /*toYearTiny*/,
3841  4 /*inMonth*/,
3842  7 /*onDayOfWeek*/,
3843  1 /*onDayOfMonth*/,
3844  0 /*atTimeCode*/,
3845  basic::ZoneContext::kSuffixW + 1 /*atTimeModifier*/,
3846  4 /*deltaCode*/,
3847  'D' /*letter*/,
3848  },
3849  // Rule Moncton 1993 2006 - Oct lastSun 0:01 0 S
3850  {
3851  -7 /*fromYearTiny*/,
3852  6 /*toYearTiny*/,
3853  10 /*inMonth*/,
3854  7 /*onDayOfWeek*/,
3855  0 /*onDayOfMonth*/,
3856  0 /*atTimeCode*/,
3857  basic::ZoneContext::kSuffixW + 1 /*atTimeModifier*/,
3858  0 /*deltaCode*/,
3859  'S' /*letter*/,
3860  },
3861 
3862 };
3863 
3864 
3865 
3866 const basic::ZonePolicy kPolicyMoncton ACE_TIME_PROGMEM = {
3867  kZoneRulesMoncton /*rules*/,
3868  nullptr /* letters */,
3869  3 /*numRules*/,
3870  0 /* numLetters */,
3871 };
3872 
3873 //---------------------------------------------------------------------------
3874 // Policy name: Mongol
3875 // Rules: 6
3876 // Memory (8-bit): 60
3877 // Memory (32-bit): 84
3878 //---------------------------------------------------------------------------
3879 
3880 static const basic::ZoneRule kZoneRulesMongol[] ACE_TIME_PROGMEM = {
3881  // Rule Mongol 1984 1998 - Sep lastSun 0:00 0 -
3882  {
3883  -16 /*fromYearTiny*/,
3884  -2 /*toYearTiny*/,
3885  9 /*inMonth*/,
3886  7 /*onDayOfWeek*/,
3887  0 /*onDayOfMonth*/,
3888  0 /*atTimeCode*/,
3889  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3890  0 /*deltaCode*/,
3891  '-' /*letter*/,
3892  },
3893  // Rule Mongol 2001 only - Apr lastSat 2:00 1:00 -
3894  {
3895  1 /*fromYearTiny*/,
3896  1 /*toYearTiny*/,
3897  4 /*inMonth*/,
3898  6 /*onDayOfWeek*/,
3899  0 /*onDayOfMonth*/,
3900  8 /*atTimeCode*/,
3901  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3902  4 /*deltaCode*/,
3903  '-' /*letter*/,
3904  },
3905  // Rule Mongol 2001 2006 - Sep lastSat 2:00 0 -
3906  {
3907  1 /*fromYearTiny*/,
3908  6 /*toYearTiny*/,
3909  9 /*inMonth*/,
3910  6 /*onDayOfWeek*/,
3911  0 /*onDayOfMonth*/,
3912  8 /*atTimeCode*/,
3913  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3914  0 /*deltaCode*/,
3915  '-' /*letter*/,
3916  },
3917  // Rule Mongol 2002 2006 - Mar lastSat 2:00 1:00 -
3918  {
3919  2 /*fromYearTiny*/,
3920  6 /*toYearTiny*/,
3921  3 /*inMonth*/,
3922  6 /*onDayOfWeek*/,
3923  0 /*onDayOfMonth*/,
3924  8 /*atTimeCode*/,
3925  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3926  4 /*deltaCode*/,
3927  '-' /*letter*/,
3928  },
3929  // Rule Mongol 2015 2016 - Mar lastSat 2:00 1:00 -
3930  {
3931  15 /*fromYearTiny*/,
3932  16 /*toYearTiny*/,
3933  3 /*inMonth*/,
3934  6 /*onDayOfWeek*/,
3935  0 /*onDayOfMonth*/,
3936  8 /*atTimeCode*/,
3937  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3938  4 /*deltaCode*/,
3939  '-' /*letter*/,
3940  },
3941  // Rule Mongol 2015 2016 - Sep lastSat 0:00 0 -
3942  {
3943  15 /*fromYearTiny*/,
3944  16 /*toYearTiny*/,
3945  9 /*inMonth*/,
3946  6 /*onDayOfWeek*/,
3947  0 /*onDayOfMonth*/,
3948  0 /*atTimeCode*/,
3949  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
3950  0 /*deltaCode*/,
3951  '-' /*letter*/,
3952  },
3953 
3954 };
3955 
3956 
3957 
3958 const basic::ZonePolicy kPolicyMongol ACE_TIME_PROGMEM = {
3959  kZoneRulesMongol /*rules*/,
3960  nullptr /* letters */,
3961  6 /*numRules*/,
3962  0 /* numLetters */,
3963 };
3964 
3965 //---------------------------------------------------------------------------
3966 // Policy name: NC
3967 // Rules: 1
3968 // Memory (8-bit): 15
3969 // Memory (32-bit): 24
3970 //---------------------------------------------------------------------------
3971 
3972 static const basic::ZoneRule kZoneRulesNC[] ACE_TIME_PROGMEM = {
3973  // Rule NC 1997 only - Mar 2 2:00s 0 -
3974  {
3975  -3 /*fromYearTiny*/,
3976  -3 /*toYearTiny*/,
3977  3 /*inMonth*/,
3978  0 /*onDayOfWeek*/,
3979  2 /*onDayOfMonth*/,
3980  8 /*atTimeCode*/,
3981  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
3982  0 /*deltaCode*/,
3983  '-' /*letter*/,
3984  },
3985 
3986 };
3987 
3988 
3989 
3990 const basic::ZonePolicy kPolicyNC ACE_TIME_PROGMEM = {
3991  kZoneRulesNC /*rules*/,
3992  nullptr /* letters */,
3993  1 /*numRules*/,
3994  0 /* numLetters */,
3995 };
3996 
3997 //---------------------------------------------------------------------------
3998 // Policy name: NZ
3999 // Rules: 5
4000 // Memory (8-bit): 51
4001 // Memory (32-bit): 72
4002 //---------------------------------------------------------------------------
4003 
4004 static const basic::ZoneRule kZoneRulesNZ[] ACE_TIME_PROGMEM = {
4005  // Rule NZ 1989 only - Oct Sun>=8 2:00s 1:00 D
4006  {
4007  -11 /*fromYearTiny*/,
4008  -11 /*toYearTiny*/,
4009  10 /*inMonth*/,
4010  7 /*onDayOfWeek*/,
4011  8 /*onDayOfMonth*/,
4012  8 /*atTimeCode*/,
4013  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
4014  4 /*deltaCode*/,
4015  'D' /*letter*/,
4016  },
4017  // Rule NZ 1990 2006 - Oct Sun>=1 2:00s 1:00 D
4018  {
4019  -10 /*fromYearTiny*/,
4020  6 /*toYearTiny*/,
4021  10 /*inMonth*/,
4022  7 /*onDayOfWeek*/,
4023  1 /*onDayOfMonth*/,
4024  8 /*atTimeCode*/,
4025  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
4026  4 /*deltaCode*/,
4027  'D' /*letter*/,
4028  },
4029  // Rule NZ 1990 2007 - Mar Sun>=15 2:00s 0 S
4030  {
4031  -10 /*fromYearTiny*/,
4032  7 /*toYearTiny*/,
4033  3 /*inMonth*/,
4034  7 /*onDayOfWeek*/,
4035  15 /*onDayOfMonth*/,
4036  8 /*atTimeCode*/,
4037  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
4038  0 /*deltaCode*/,
4039  'S' /*letter*/,
4040  },
4041  // Rule NZ 2007 max - Sep lastSun 2:00s 1:00 D
4042  {
4043  7 /*fromYearTiny*/,
4044  126 /*toYearTiny*/,
4045  9 /*inMonth*/,
4046  7 /*onDayOfWeek*/,
4047  0 /*onDayOfMonth*/,
4048  8 /*atTimeCode*/,
4049  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
4050  4 /*deltaCode*/,
4051  'D' /*letter*/,
4052  },
4053  // Rule NZ 2008 max - Apr Sun>=1 2:00s 0 S
4054  {
4055  8 /*fromYearTiny*/,
4056  126 /*toYearTiny*/,
4057  4 /*inMonth*/,
4058  7 /*onDayOfWeek*/,
4059  1 /*onDayOfMonth*/,
4060  8 /*atTimeCode*/,
4061  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
4062  0 /*deltaCode*/,
4063  'S' /*letter*/,
4064  },
4065 
4066 };
4067 
4068 
4069 
4070 const basic::ZonePolicy kPolicyNZ ACE_TIME_PROGMEM = {
4071  kZoneRulesNZ /*rules*/,
4072  nullptr /* letters */,
4073  5 /*numRules*/,
4074  0 /* numLetters */,
4075 };
4076 
4077 //---------------------------------------------------------------------------
4078 // Policy name: Nic
4079 // Rules: 5
4080 // Memory (8-bit): 51
4081 // Memory (32-bit): 72
4082 //---------------------------------------------------------------------------
4083 
4084 static const basic::ZoneRule kZoneRulesNic[] ACE_TIME_PROGMEM = {
4085  // Rule Nic 1979 1980 - Jun Mon>=23 0:00 0 S
4086  {
4087  -21 /*fromYearTiny*/,
4088  -20 /*toYearTiny*/,
4089  6 /*inMonth*/,
4090  1 /*onDayOfWeek*/,
4091  23 /*onDayOfMonth*/,
4092  0 /*atTimeCode*/,
4093  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4094  0 /*deltaCode*/,
4095  'S' /*letter*/,
4096  },
4097  // Rule Nic 2005 only - Apr 10 0:00 1:00 D
4098  {
4099  5 /*fromYearTiny*/,
4100  5 /*toYearTiny*/,
4101  4 /*inMonth*/,
4102  0 /*onDayOfWeek*/,
4103  10 /*onDayOfMonth*/,
4104  0 /*atTimeCode*/,
4105  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4106  4 /*deltaCode*/,
4107  'D' /*letter*/,
4108  },
4109  // Rule Nic 2005 only - Oct Sun>=1 0:00 0 S
4110  {
4111  5 /*fromYearTiny*/,
4112  5 /*toYearTiny*/,
4113  10 /*inMonth*/,
4114  7 /*onDayOfWeek*/,
4115  1 /*onDayOfMonth*/,
4116  0 /*atTimeCode*/,
4117  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4118  0 /*deltaCode*/,
4119  'S' /*letter*/,
4120  },
4121  // Rule Nic 2006 only - Apr 30 2:00 1:00 D
4122  {
4123  6 /*fromYearTiny*/,
4124  6 /*toYearTiny*/,
4125  4 /*inMonth*/,
4126  0 /*onDayOfWeek*/,
4127  30 /*onDayOfMonth*/,
4128  8 /*atTimeCode*/,
4129  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4130  4 /*deltaCode*/,
4131  'D' /*letter*/,
4132  },
4133  // Rule Nic 2006 only - Oct Sun>=1 1:00 0 S
4134  {
4135  6 /*fromYearTiny*/,
4136  6 /*toYearTiny*/,
4137  10 /*inMonth*/,
4138  7 /*onDayOfWeek*/,
4139  1 /*onDayOfMonth*/,
4140  4 /*atTimeCode*/,
4141  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4142  0 /*deltaCode*/,
4143  'S' /*letter*/,
4144  },
4145 
4146 };
4147 
4148 
4149 
4150 const basic::ZonePolicy kPolicyNic ACE_TIME_PROGMEM = {
4151  kZoneRulesNic /*rules*/,
4152  nullptr /* letters */,
4153  5 /*numRules*/,
4154  0 /* numLetters */,
4155 };
4156 
4157 //---------------------------------------------------------------------------
4158 // Policy name: PRC
4159 // Rules: 1
4160 // Memory (8-bit): 15
4161 // Memory (32-bit): 24
4162 //---------------------------------------------------------------------------
4163 
4164 static const basic::ZoneRule kZoneRulesPRC[] ACE_TIME_PROGMEM = {
4165  // Rule PRC 1986 1991 - Sep Sun>=11 2:00 0 S
4166  {
4167  -14 /*fromYearTiny*/,
4168  -9 /*toYearTiny*/,
4169  9 /*inMonth*/,
4170  7 /*onDayOfWeek*/,
4171  11 /*onDayOfMonth*/,
4172  8 /*atTimeCode*/,
4173  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4174  0 /*deltaCode*/,
4175  'S' /*letter*/,
4176  },
4177 
4178 };
4179 
4180 
4181 
4182 const basic::ZonePolicy kPolicyPRC ACE_TIME_PROGMEM = {
4183  kZoneRulesPRC /*rules*/,
4184  nullptr /* letters */,
4185  1 /*numRules*/,
4186  0 /* numLetters */,
4187 };
4188 
4189 //---------------------------------------------------------------------------
4190 // Policy name: Pakistan
4191 // Rules: 6
4192 // Memory (8-bit): 60
4193 // Memory (32-bit): 84
4194 //---------------------------------------------------------------------------
4195 
4196 static const basic::ZoneRule kZoneRulesPakistan[] ACE_TIME_PROGMEM = {
4197  // Anchor: Rule Pakistan 2002 only - Oct Sun>=2 0:00 0 -
4198  {
4199  -127 /*fromYearTiny*/,
4200  -127 /*toYearTiny*/,
4201  1 /*inMonth*/,
4202  0 /*onDayOfWeek*/,
4203  1 /*onDayOfMonth*/,
4204  0 /*atTimeCode*/,
4205  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4206  0 /*deltaCode*/,
4207  '-' /*letter*/,
4208  },
4209  // Rule Pakistan 2002 only - Apr Sun>=2 0:00 1:00 S
4210  {
4211  2 /*fromYearTiny*/,
4212  2 /*toYearTiny*/,
4213  4 /*inMonth*/,
4214  7 /*onDayOfWeek*/,
4215  2 /*onDayOfMonth*/,
4216  0 /*atTimeCode*/,
4217  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4218  4 /*deltaCode*/,
4219  'S' /*letter*/,
4220  },
4221  // Rule Pakistan 2002 only - Oct Sun>=2 0:00 0 -
4222  {
4223  2 /*fromYearTiny*/,
4224  2 /*toYearTiny*/,
4225  10 /*inMonth*/,
4226  7 /*onDayOfWeek*/,
4227  2 /*onDayOfMonth*/,
4228  0 /*atTimeCode*/,
4229  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4230  0 /*deltaCode*/,
4231  '-' /*letter*/,
4232  },
4233  // Rule Pakistan 2008 only - Jun 1 0:00 1:00 S
4234  {
4235  8 /*fromYearTiny*/,
4236  8 /*toYearTiny*/,
4237  6 /*inMonth*/,
4238  0 /*onDayOfWeek*/,
4239  1 /*onDayOfMonth*/,
4240  0 /*atTimeCode*/,
4241  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4242  4 /*deltaCode*/,
4243  'S' /*letter*/,
4244  },
4245  // Rule Pakistan 2008 2009 - Nov 1 0:00 0 -
4246  {
4247  8 /*fromYearTiny*/,
4248  9 /*toYearTiny*/,
4249  11 /*inMonth*/,
4250  0 /*onDayOfWeek*/,
4251  1 /*onDayOfMonth*/,
4252  0 /*atTimeCode*/,
4253  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4254  0 /*deltaCode*/,
4255  '-' /*letter*/,
4256  },
4257  // Rule Pakistan 2009 only - Apr 15 0:00 1:00 S
4258  {
4259  9 /*fromYearTiny*/,
4260  9 /*toYearTiny*/,
4261  4 /*inMonth*/,
4262  0 /*onDayOfWeek*/,
4263  15 /*onDayOfMonth*/,
4264  0 /*atTimeCode*/,
4265  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4266  4 /*deltaCode*/,
4267  'S' /*letter*/,
4268  },
4269 
4270 };
4271 
4272 
4273 
4274 const basic::ZonePolicy kPolicyPakistan ACE_TIME_PROGMEM = {
4275  kZoneRulesPakistan /*rules*/,
4276  nullptr /* letters */,
4277  6 /*numRules*/,
4278  0 /* numLetters */,
4279 };
4280 
4281 //---------------------------------------------------------------------------
4282 // Policy name: Para
4283 // Rules: 10
4284 // Memory (8-bit): 96
4285 // Memory (32-bit): 132
4286 //---------------------------------------------------------------------------
4287 
4288 static const basic::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = {
4289  // Rule Para 1996 2001 - Oct Sun>=1 0:00 1:00 -
4290  {
4291  -4 /*fromYearTiny*/,
4292  1 /*toYearTiny*/,
4293  10 /*inMonth*/,
4294  7 /*onDayOfWeek*/,
4295  1 /*onDayOfMonth*/,
4296  0 /*atTimeCode*/,
4297  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4298  4 /*deltaCode*/,
4299  '-' /*letter*/,
4300  },
4301  // Rule Para 1997 only - Feb lastSun 0:00 0 -
4302  {
4303  -3 /*fromYearTiny*/,
4304  -3 /*toYearTiny*/,
4305  2 /*inMonth*/,
4306  7 /*onDayOfWeek*/,
4307  0 /*onDayOfMonth*/,
4308  0 /*atTimeCode*/,
4309  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4310  0 /*deltaCode*/,
4311  '-' /*letter*/,
4312  },
4313  // Rule Para 1998 2001 - Mar Sun>=1 0:00 0 -
4314  {
4315  -2 /*fromYearTiny*/,
4316  1 /*toYearTiny*/,
4317  3 /*inMonth*/,
4318  7 /*onDayOfWeek*/,
4319  1 /*onDayOfMonth*/,
4320  0 /*atTimeCode*/,
4321  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4322  0 /*deltaCode*/,
4323  '-' /*letter*/,
4324  },
4325  // Rule Para 2002 2004 - Apr Sun>=1 0:00 0 -
4326  {
4327  2 /*fromYearTiny*/,
4328  4 /*toYearTiny*/,
4329  4 /*inMonth*/,
4330  7 /*onDayOfWeek*/,
4331  1 /*onDayOfMonth*/,
4332  0 /*atTimeCode*/,
4333  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4334  0 /*deltaCode*/,
4335  '-' /*letter*/,
4336  },
4337  // Rule Para 2002 2003 - Sep Sun>=1 0:00 1:00 -
4338  {
4339  2 /*fromYearTiny*/,
4340  3 /*toYearTiny*/,
4341  9 /*inMonth*/,
4342  7 /*onDayOfWeek*/,
4343  1 /*onDayOfMonth*/,
4344  0 /*atTimeCode*/,
4345  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4346  4 /*deltaCode*/,
4347  '-' /*letter*/,
4348  },
4349  // Rule Para 2004 2009 - Oct Sun>=15 0:00 1:00 -
4350  {
4351  4 /*fromYearTiny*/,
4352  9 /*toYearTiny*/,
4353  10 /*inMonth*/,
4354  7 /*onDayOfWeek*/,
4355  15 /*onDayOfMonth*/,
4356  0 /*atTimeCode*/,
4357  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4358  4 /*deltaCode*/,
4359  '-' /*letter*/,
4360  },
4361  // Rule Para 2005 2009 - Mar Sun>=8 0:00 0 -
4362  {
4363  5 /*fromYearTiny*/,
4364  9 /*toYearTiny*/,
4365  3 /*inMonth*/,
4366  7 /*onDayOfWeek*/,
4367  8 /*onDayOfMonth*/,
4368  0 /*atTimeCode*/,
4369  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4370  0 /*deltaCode*/,
4371  '-' /*letter*/,
4372  },
4373  // Rule Para 2010 max - Oct Sun>=1 0:00 1:00 -
4374  {
4375  10 /*fromYearTiny*/,
4376  126 /*toYearTiny*/,
4377  10 /*inMonth*/,
4378  7 /*onDayOfWeek*/,
4379  1 /*onDayOfMonth*/,
4380  0 /*atTimeCode*/,
4381  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4382  4 /*deltaCode*/,
4383  '-' /*letter*/,
4384  },
4385  // Rule Para 2010 2012 - Apr Sun>=8 0:00 0 -
4386  {
4387  10 /*fromYearTiny*/,
4388  12 /*toYearTiny*/,
4389  4 /*inMonth*/,
4390  7 /*onDayOfWeek*/,
4391  8 /*onDayOfMonth*/,
4392  0 /*atTimeCode*/,
4393  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4394  0 /*deltaCode*/,
4395  '-' /*letter*/,
4396  },
4397  // Rule Para 2013 max - Mar Sun>=22 0:00 0 -
4398  {
4399  13 /*fromYearTiny*/,
4400  126 /*toYearTiny*/,
4401  3 /*inMonth*/,
4402  7 /*onDayOfWeek*/,
4403  22 /*onDayOfMonth*/,
4404  0 /*atTimeCode*/,
4405  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4406  0 /*deltaCode*/,
4407  '-' /*letter*/,
4408  },
4409 
4410 };
4411 
4412 
4413 
4414 const basic::ZonePolicy kPolicyPara ACE_TIME_PROGMEM = {
4415  kZoneRulesPara /*rules*/,
4416  nullptr /* letters */,
4417  10 /*numRules*/,
4418  0 /* numLetters */,
4419 };
4420 
4421 //---------------------------------------------------------------------------
4422 // Policy name: Peru
4423 // Rules: 1
4424 // Memory (8-bit): 15
4425 // Memory (32-bit): 24
4426 //---------------------------------------------------------------------------
4427 
4428 static const basic::ZoneRule kZoneRulesPeru[] ACE_TIME_PROGMEM = {
4429  // Rule Peru 1994 only - Apr 1 0:00 0 -
4430  {
4431  -6 /*fromYearTiny*/,
4432  -6 /*toYearTiny*/,
4433  4 /*inMonth*/,
4434  0 /*onDayOfWeek*/,
4435  1 /*onDayOfMonth*/,
4436  0 /*atTimeCode*/,
4437  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4438  0 /*deltaCode*/,
4439  '-' /*letter*/,
4440  },
4441 
4442 };
4443 
4444 
4445 
4446 const basic::ZonePolicy kPolicyPeru ACE_TIME_PROGMEM = {
4447  kZoneRulesPeru /*rules*/,
4448  nullptr /* letters */,
4449  1 /*numRules*/,
4450  0 /* numLetters */,
4451 };
4452 
4453 //---------------------------------------------------------------------------
4454 // Policy name: Phil
4455 // Rules: 1
4456 // Memory (8-bit): 15
4457 // Memory (32-bit): 24
4458 //---------------------------------------------------------------------------
4459 
4460 static const basic::ZoneRule kZoneRulesPhil[] ACE_TIME_PROGMEM = {
4461  // Rule Phil 1978 only - Sep 21 0:00 0 S
4462  {
4463  -22 /*fromYearTiny*/,
4464  -22 /*toYearTiny*/,
4465  9 /*inMonth*/,
4466  0 /*onDayOfWeek*/,
4467  21 /*onDayOfMonth*/,
4468  0 /*atTimeCode*/,
4469  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4470  0 /*deltaCode*/,
4471  'S' /*letter*/,
4472  },
4473 
4474 };
4475 
4476 
4477 
4478 const basic::ZonePolicy kPolicyPhil ACE_TIME_PROGMEM = {
4479  kZoneRulesPhil /*rules*/,
4480  nullptr /* letters */,
4481  1 /*numRules*/,
4482  0 /* numLetters */,
4483 };
4484 
4485 //---------------------------------------------------------------------------
4486 // Policy name: ROK
4487 // Rules: 1
4488 // Memory (8-bit): 15
4489 // Memory (32-bit): 24
4490 //---------------------------------------------------------------------------
4491 
4492 static const basic::ZoneRule kZoneRulesROK[] ACE_TIME_PROGMEM = {
4493  // Rule ROK 1987 1988 - Oct Sun>=8 3:00 0 S
4494  {
4495  -13 /*fromYearTiny*/,
4496  -12 /*toYearTiny*/,
4497  10 /*inMonth*/,
4498  7 /*onDayOfWeek*/,
4499  8 /*onDayOfMonth*/,
4500  12 /*atTimeCode*/,
4501  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4502  0 /*deltaCode*/,
4503  'S' /*letter*/,
4504  },
4505 
4506 };
4507 
4508 
4509 
4510 const basic::ZonePolicy kPolicyROK ACE_TIME_PROGMEM = {
4511  kZoneRulesROK /*rules*/,
4512  nullptr /* letters */,
4513  1 /*numRules*/,
4514  0 /* numLetters */,
4515 };
4516 
4517 //---------------------------------------------------------------------------
4518 // Policy name: RussiaAsia
4519 // Rules: 3
4520 // Memory (8-bit): 33
4521 // Memory (32-bit): 48
4522 //---------------------------------------------------------------------------
4523 
4524 static const basic::ZoneRule kZoneRulesRussiaAsia[] ACE_TIME_PROGMEM = {
4525  // Rule RussiaAsia 1984 1995 - Sep lastSun 2:00s 0 -
4526  {
4527  -16 /*fromYearTiny*/,
4528  -5 /*toYearTiny*/,
4529  9 /*inMonth*/,
4530  7 /*onDayOfWeek*/,
4531  0 /*onDayOfMonth*/,
4532  8 /*atTimeCode*/,
4533  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
4534  0 /*deltaCode*/,
4535  '-' /*letter*/,
4536  },
4537  // Rule RussiaAsia 1985 2010 - Mar lastSun 2:00s 1:00 -
4538  {
4539  -15 /*fromYearTiny*/,
4540  10 /*toYearTiny*/,
4541  3 /*inMonth*/,
4542  7 /*onDayOfWeek*/,
4543  0 /*onDayOfMonth*/,
4544  8 /*atTimeCode*/,
4545  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
4546  4 /*deltaCode*/,
4547  '-' /*letter*/,
4548  },
4549  // Rule RussiaAsia 1996 2010 - Oct lastSun 2:00s 0 -
4550  {
4551  -4 /*fromYearTiny*/,
4552  10 /*toYearTiny*/,
4553  10 /*inMonth*/,
4554  7 /*onDayOfWeek*/,
4555  0 /*onDayOfMonth*/,
4556  8 /*atTimeCode*/,
4557  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
4558  0 /*deltaCode*/,
4559  '-' /*letter*/,
4560  },
4561 
4562 };
4563 
4564 
4565 
4566 const basic::ZonePolicy kPolicyRussiaAsia ACE_TIME_PROGMEM = {
4567  kZoneRulesRussiaAsia /*rules*/,
4568  nullptr /* letters */,
4569  3 /*numRules*/,
4570  0 /* numLetters */,
4571 };
4572 
4573 //---------------------------------------------------------------------------
4574 // Policy name: SA
4575 // Rules: 1
4576 // Memory (8-bit): 15
4577 // Memory (32-bit): 24
4578 //---------------------------------------------------------------------------
4579 
4580 static const basic::ZoneRule kZoneRulesSA[] ACE_TIME_PROGMEM = {
4581  // Rule SA 1943 1944 - Mar Sun>=15 2:00 0 -
4582  {
4583  -57 /*fromYearTiny*/,
4584  -56 /*toYearTiny*/,
4585  3 /*inMonth*/,
4586  7 /*onDayOfWeek*/,
4587  15 /*onDayOfMonth*/,
4588  8 /*atTimeCode*/,
4589  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4590  0 /*deltaCode*/,
4591  '-' /*letter*/,
4592  },
4593 
4594 };
4595 
4596 
4597 
4598 const basic::ZonePolicy kPolicySA ACE_TIME_PROGMEM = {
4599  kZoneRulesSA /*rules*/,
4600  nullptr /* letters */,
4601  1 /*numRules*/,
4602  0 /* numLetters */,
4603 };
4604 
4605 //---------------------------------------------------------------------------
4606 // Policy name: Salv
4607 // Rules: 1
4608 // Memory (8-bit): 15
4609 // Memory (32-bit): 24
4610 //---------------------------------------------------------------------------
4611 
4612 static const basic::ZoneRule kZoneRulesSalv[] ACE_TIME_PROGMEM = {
4613  // Rule Salv 1987 1988 - Sep lastSun 0:00 0 S
4614  {
4615  -13 /*fromYearTiny*/,
4616  -12 /*toYearTiny*/,
4617  9 /*inMonth*/,
4618  7 /*onDayOfWeek*/,
4619  0 /*onDayOfMonth*/,
4620  0 /*atTimeCode*/,
4621  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4622  0 /*deltaCode*/,
4623  'S' /*letter*/,
4624  },
4625 
4626 };
4627 
4628 
4629 
4630 const basic::ZonePolicy kPolicySalv ACE_TIME_PROGMEM = {
4631  kZoneRulesSalv /*rules*/,
4632  nullptr /* letters */,
4633  1 /*numRules*/,
4634  0 /* numLetters */,
4635 };
4636 
4637 //---------------------------------------------------------------------------
4638 // Policy name: Syria
4639 // Rules: 12
4640 // Memory (8-bit): 114
4641 // Memory (32-bit): 156
4642 //---------------------------------------------------------------------------
4643 
4644 static const basic::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = {
4645  // Rule Syria 1994 2005 - Oct 1 0:00 0 -
4646  {
4647  -6 /*fromYearTiny*/,
4648  5 /*toYearTiny*/,
4649  10 /*inMonth*/,
4650  0 /*onDayOfWeek*/,
4651  1 /*onDayOfMonth*/,
4652  0 /*atTimeCode*/,
4653  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4654  0 /*deltaCode*/,
4655  '-' /*letter*/,
4656  },
4657  // Rule Syria 1997 1998 - Mar lastMon 0:00 1:00 S
4658  {
4659  -3 /*fromYearTiny*/,
4660  -2 /*toYearTiny*/,
4661  3 /*inMonth*/,
4662  1 /*onDayOfWeek*/,
4663  0 /*onDayOfMonth*/,
4664  0 /*atTimeCode*/,
4665  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4666  4 /*deltaCode*/,
4667  'S' /*letter*/,
4668  },
4669  // Rule Syria 1999 2006 - Apr 1 0:00 1:00 S
4670  {
4671  -1 /*fromYearTiny*/,
4672  6 /*toYearTiny*/,
4673  4 /*inMonth*/,
4674  0 /*onDayOfWeek*/,
4675  1 /*onDayOfMonth*/,
4676  0 /*atTimeCode*/,
4677  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4678  4 /*deltaCode*/,
4679  'S' /*letter*/,
4680  },
4681  // Rule Syria 2006 only - Sep 22 0:00 0 -
4682  {
4683  6 /*fromYearTiny*/,
4684  6 /*toYearTiny*/,
4685  9 /*inMonth*/,
4686  0 /*onDayOfWeek*/,
4687  22 /*onDayOfMonth*/,
4688  0 /*atTimeCode*/,
4689  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4690  0 /*deltaCode*/,
4691  '-' /*letter*/,
4692  },
4693  // Rule Syria 2007 only - Mar lastFri 0:00 1:00 S
4694  {
4695  7 /*fromYearTiny*/,
4696  7 /*toYearTiny*/,
4697  3 /*inMonth*/,
4698  5 /*onDayOfWeek*/,
4699  0 /*onDayOfMonth*/,
4700  0 /*atTimeCode*/,
4701  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4702  4 /*deltaCode*/,
4703  'S' /*letter*/,
4704  },
4705  // Rule Syria 2007 only - Nov Fri>=1 0:00 0 -
4706  {
4707  7 /*fromYearTiny*/,
4708  7 /*toYearTiny*/,
4709  11 /*inMonth*/,
4710  5 /*onDayOfWeek*/,
4711  1 /*onDayOfMonth*/,
4712  0 /*atTimeCode*/,
4713  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4714  0 /*deltaCode*/,
4715  '-' /*letter*/,
4716  },
4717  // Rule Syria 2008 only - Apr Fri>=1 0:00 1:00 S
4718  {
4719  8 /*fromYearTiny*/,
4720  8 /*toYearTiny*/,
4721  4 /*inMonth*/,
4722  5 /*onDayOfWeek*/,
4723  1 /*onDayOfMonth*/,
4724  0 /*atTimeCode*/,
4725  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4726  4 /*deltaCode*/,
4727  'S' /*letter*/,
4728  },
4729  // Rule Syria 2008 only - Nov 1 0:00 0 -
4730  {
4731  8 /*fromYearTiny*/,
4732  8 /*toYearTiny*/,
4733  11 /*inMonth*/,
4734  0 /*onDayOfWeek*/,
4735  1 /*onDayOfMonth*/,
4736  0 /*atTimeCode*/,
4737  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4738  0 /*deltaCode*/,
4739  '-' /*letter*/,
4740  },
4741  // Rule Syria 2009 only - Mar lastFri 0:00 1:00 S
4742  {
4743  9 /*fromYearTiny*/,
4744  9 /*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 2010 2011 - Apr Fri>=1 0:00 1:00 S
4754  {
4755  10 /*fromYearTiny*/,
4756  11 /*toYearTiny*/,
4757  4 /*inMonth*/,
4758  5 /*onDayOfWeek*/,
4759  1 /*onDayOfMonth*/,
4760  0 /*atTimeCode*/,
4761  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4762  4 /*deltaCode*/,
4763  'S' /*letter*/,
4764  },
4765  // Rule Syria 2012 max - Mar lastFri 0:00 1:00 S
4766  {
4767  12 /*fromYearTiny*/,
4768  126 /*toYearTiny*/,
4769  3 /*inMonth*/,
4770  5 /*onDayOfWeek*/,
4771  0 /*onDayOfMonth*/,
4772  0 /*atTimeCode*/,
4773  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4774  4 /*deltaCode*/,
4775  'S' /*letter*/,
4776  },
4777  // Rule Syria 2009 max - Oct lastFri 0:00 0 -
4778  {
4779  9 /*fromYearTiny*/,
4780  126 /*toYearTiny*/,
4781  10 /*inMonth*/,
4782  5 /*onDayOfWeek*/,
4783  0 /*onDayOfMonth*/,
4784  0 /*atTimeCode*/,
4785  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4786  0 /*deltaCode*/,
4787  '-' /*letter*/,
4788  },
4789 
4790 };
4791 
4792 
4793 
4794 const basic::ZonePolicy kPolicySyria ACE_TIME_PROGMEM = {
4795  kZoneRulesSyria /*rules*/,
4796  nullptr /* letters */,
4797  12 /*numRules*/,
4798  0 /* numLetters */,
4799 };
4800 
4801 //---------------------------------------------------------------------------
4802 // Policy name: Taiwan
4803 // Rules: 1
4804 // Memory (8-bit): 15
4805 // Memory (32-bit): 24
4806 //---------------------------------------------------------------------------
4807 
4808 static const basic::ZoneRule kZoneRulesTaiwan[] ACE_TIME_PROGMEM = {
4809  // Rule Taiwan 1979 only - Oct 1 0:00 0 S
4810  {
4811  -21 /*fromYearTiny*/,
4812  -21 /*toYearTiny*/,
4813  10 /*inMonth*/,
4814  0 /*onDayOfWeek*/,
4815  1 /*onDayOfMonth*/,
4816  0 /*atTimeCode*/,
4817  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4818  0 /*deltaCode*/,
4819  'S' /*letter*/,
4820  },
4821 
4822 };
4823 
4824 
4825 
4826 const basic::ZonePolicy kPolicyTaiwan ACE_TIME_PROGMEM = {
4827  kZoneRulesTaiwan /*rules*/,
4828  nullptr /* letters */,
4829  1 /*numRules*/,
4830  0 /* numLetters */,
4831 };
4832 
4833 //---------------------------------------------------------------------------
4834 // Policy name: Thule
4835 // Rules: 5
4836 // Memory (8-bit): 51
4837 // Memory (32-bit): 72
4838 //---------------------------------------------------------------------------
4839 
4840 static const basic::ZoneRule kZoneRulesThule[] ACE_TIME_PROGMEM = {
4841  // Rule Thule 1991 1992 - Sep lastSun 2:00 0 S
4842  {
4843  -9 /*fromYearTiny*/,
4844  -8 /*toYearTiny*/,
4845  9 /*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 1993 2006 - Apr Sun>=1 2:00 1:00 D
4854  {
4855  -7 /*fromYearTiny*/,
4856  6 /*toYearTiny*/,
4857  4 /*inMonth*/,
4858  7 /*onDayOfWeek*/,
4859  1 /*onDayOfMonth*/,
4860  8 /*atTimeCode*/,
4861  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4862  4 /*deltaCode*/,
4863  'D' /*letter*/,
4864  },
4865  // Rule Thule 1993 2006 - Oct lastSun 2:00 0 S
4866  {
4867  -7 /*fromYearTiny*/,
4868  6 /*toYearTiny*/,
4869  10 /*inMonth*/,
4870  7 /*onDayOfWeek*/,
4871  0 /*onDayOfMonth*/,
4872  8 /*atTimeCode*/,
4873  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4874  0 /*deltaCode*/,
4875  'S' /*letter*/,
4876  },
4877  // Rule Thule 2007 max - Mar Sun>=8 2:00 1:00 D
4878  {
4879  7 /*fromYearTiny*/,
4880  126 /*toYearTiny*/,
4881  3 /*inMonth*/,
4882  7 /*onDayOfWeek*/,
4883  8 /*onDayOfMonth*/,
4884  8 /*atTimeCode*/,
4885  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4886  4 /*deltaCode*/,
4887  'D' /*letter*/,
4888  },
4889  // Rule Thule 2007 max - Nov Sun>=1 2:00 0 S
4890  {
4891  7 /*fromYearTiny*/,
4892  126 /*toYearTiny*/,
4893  11 /*inMonth*/,
4894  7 /*onDayOfWeek*/,
4895  1 /*onDayOfMonth*/,
4896  8 /*atTimeCode*/,
4897  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4898  0 /*deltaCode*/,
4899  'S' /*letter*/,
4900  },
4901 
4902 };
4903 
4904 
4905 
4906 const basic::ZonePolicy kPolicyThule ACE_TIME_PROGMEM = {
4907  kZoneRulesThule /*rules*/,
4908  nullptr /* letters */,
4909  5 /*numRules*/,
4910  0 /* numLetters */,
4911 };
4912 
4913 //---------------------------------------------------------------------------
4914 // Policy name: Tonga
4915 // Rules: 7
4916 // Memory (8-bit): 69
4917 // Memory (32-bit): 96
4918 //---------------------------------------------------------------------------
4919 
4920 static const basic::ZoneRule kZoneRulesTonga[] ACE_TIME_PROGMEM = {
4921  // Anchor: Rule Tonga 2000 only - Mar 19 2:00s 0 -
4922  {
4923  -127 /*fromYearTiny*/,
4924  -127 /*toYearTiny*/,
4925  1 /*inMonth*/,
4926  0 /*onDayOfWeek*/,
4927  1 /*onDayOfMonth*/,
4928  0 /*atTimeCode*/,
4929  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4930  0 /*deltaCode*/,
4931  '-' /*letter*/,
4932  },
4933  // Rule Tonga 1999 only - Oct 7 2:00s 1:00 -
4934  {
4935  -1 /*fromYearTiny*/,
4936  -1 /*toYearTiny*/,
4937  10 /*inMonth*/,
4938  0 /*onDayOfWeek*/,
4939  7 /*onDayOfMonth*/,
4940  8 /*atTimeCode*/,
4941  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
4942  4 /*deltaCode*/,
4943  '-' /*letter*/,
4944  },
4945  // Rule Tonga 2000 only - Mar 19 2:00s 0 -
4946  {
4947  0 /*fromYearTiny*/,
4948  0 /*toYearTiny*/,
4949  3 /*inMonth*/,
4950  0 /*onDayOfWeek*/,
4951  19 /*onDayOfMonth*/,
4952  8 /*atTimeCode*/,
4953  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
4954  0 /*deltaCode*/,
4955  '-' /*letter*/,
4956  },
4957  // Rule Tonga 2000 2001 - Nov Sun>=1 2:00 1:00 -
4958  {
4959  0 /*fromYearTiny*/,
4960  1 /*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 2001 2002 - Jan lastSun 2:00 0 -
4970  {
4971  1 /*fromYearTiny*/,
4972  2 /*toYearTiny*/,
4973  1 /*inMonth*/,
4974  7 /*onDayOfWeek*/,
4975  0 /*onDayOfMonth*/,
4976  8 /*atTimeCode*/,
4977  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4978  0 /*deltaCode*/,
4979  '-' /*letter*/,
4980  },
4981  // Rule Tonga 2016 only - Nov Sun>=1 2:00 1:00 -
4982  {
4983  16 /*fromYearTiny*/,
4984  16 /*toYearTiny*/,
4985  11 /*inMonth*/,
4986  7 /*onDayOfWeek*/,
4987  1 /*onDayOfMonth*/,
4988  8 /*atTimeCode*/,
4989  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
4990  4 /*deltaCode*/,
4991  '-' /*letter*/,
4992  },
4993  // Rule Tonga 2017 only - Jan Sun>=15 3:00 0 -
4994  {
4995  17 /*fromYearTiny*/,
4996  17 /*toYearTiny*/,
4997  1 /*inMonth*/,
4998  7 /*onDayOfWeek*/,
4999  15 /*onDayOfMonth*/,
5000  12 /*atTimeCode*/,
5001  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5002  0 /*deltaCode*/,
5003  '-' /*letter*/,
5004  },
5005 
5006 };
5007 
5008 
5009 
5010 const basic::ZonePolicy kPolicyTonga ACE_TIME_PROGMEM = {
5011  kZoneRulesTonga /*rules*/,
5012  nullptr /* letters */,
5013  7 /*numRules*/,
5014  0 /* numLetters */,
5015 };
5016 
5017 //---------------------------------------------------------------------------
5018 // Policy name: Tunisia
5019 // Rules: 5
5020 // Memory (8-bit): 51
5021 // Memory (32-bit): 72
5022 //---------------------------------------------------------------------------
5023 
5024 static const basic::ZoneRule kZoneRulesTunisia[] ACE_TIME_PROGMEM = {
5025  // Rule Tunisia 1988 1990 - Sep lastSun 0:00s 0 -
5026  {
5027  -12 /*fromYearTiny*/,
5028  -10 /*toYearTiny*/,
5029  9 /*inMonth*/,
5030  7 /*onDayOfWeek*/,
5031  0 /*onDayOfMonth*/,
5032  0 /*atTimeCode*/,
5033  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
5034  0 /*deltaCode*/,
5035  '-' /*letter*/,
5036  },
5037  // Rule Tunisia 2005 only - May 1 0:00s 1:00 S
5038  {
5039  5 /*fromYearTiny*/,
5040  5 /*toYearTiny*/,
5041  5 /*inMonth*/,
5042  0 /*onDayOfWeek*/,
5043  1 /*onDayOfMonth*/,
5044  0 /*atTimeCode*/,
5045  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
5046  4 /*deltaCode*/,
5047  'S' /*letter*/,
5048  },
5049  // Rule Tunisia 2005 only - Sep 30 1:00s 0 -
5050  {
5051  5 /*fromYearTiny*/,
5052  5 /*toYearTiny*/,
5053  9 /*inMonth*/,
5054  0 /*onDayOfWeek*/,
5055  30 /*onDayOfMonth*/,
5056  4 /*atTimeCode*/,
5057  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
5058  0 /*deltaCode*/,
5059  '-' /*letter*/,
5060  },
5061  // Rule Tunisia 2006 2008 - Mar lastSun 2:00s 1:00 S
5062  {
5063  6 /*fromYearTiny*/,
5064  8 /*toYearTiny*/,
5065  3 /*inMonth*/,
5066  7 /*onDayOfWeek*/,
5067  0 /*onDayOfMonth*/,
5068  8 /*atTimeCode*/,
5069  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
5070  4 /*deltaCode*/,
5071  'S' /*letter*/,
5072  },
5073  // Rule Tunisia 2006 2008 - Oct lastSun 2:00s 0 -
5074  {
5075  6 /*fromYearTiny*/,
5076  8 /*toYearTiny*/,
5077  10 /*inMonth*/,
5078  7 /*onDayOfWeek*/,
5079  0 /*onDayOfMonth*/,
5080  8 /*atTimeCode*/,
5081  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
5082  0 /*deltaCode*/,
5083  '-' /*letter*/,
5084  },
5085 
5086 };
5087 
5088 
5089 
5090 const basic::ZonePolicy kPolicyTunisia ACE_TIME_PROGMEM = {
5091  kZoneRulesTunisia /*rules*/,
5092  nullptr /* letters */,
5093  5 /*numRules*/,
5094  0 /* numLetters */,
5095 };
5096 
5097 //---------------------------------------------------------------------------
5098 // Policy name: US
5099 // Rules: 5
5100 // Memory (8-bit): 51
5101 // Memory (32-bit): 72
5102 //---------------------------------------------------------------------------
5103 
5104 static const basic::ZoneRule kZoneRulesUS[] ACE_TIME_PROGMEM = {
5105  // Rule US 1967 2006 - Oct lastSun 2:00 0 S
5106  {
5107  -33 /*fromYearTiny*/,
5108  6 /*toYearTiny*/,
5109  10 /*inMonth*/,
5110  7 /*onDayOfWeek*/,
5111  0 /*onDayOfMonth*/,
5112  8 /*atTimeCode*/,
5113  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5114  0 /*deltaCode*/,
5115  'S' /*letter*/,
5116  },
5117  // Rule US 1976 1986 - Apr lastSun 2:00 1:00 D
5118  {
5119  -24 /*fromYearTiny*/,
5120  -14 /*toYearTiny*/,
5121  4 /*inMonth*/,
5122  7 /*onDayOfWeek*/,
5123  0 /*onDayOfMonth*/,
5124  8 /*atTimeCode*/,
5125  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5126  4 /*deltaCode*/,
5127  'D' /*letter*/,
5128  },
5129  // Rule US 1987 2006 - Apr Sun>=1 2:00 1:00 D
5130  {
5131  -13 /*fromYearTiny*/,
5132  6 /*toYearTiny*/,
5133  4 /*inMonth*/,
5134  7 /*onDayOfWeek*/,
5135  1 /*onDayOfMonth*/,
5136  8 /*atTimeCode*/,
5137  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5138  4 /*deltaCode*/,
5139  'D' /*letter*/,
5140  },
5141  // Rule US 2007 max - Mar Sun>=8 2:00 1:00 D
5142  {
5143  7 /*fromYearTiny*/,
5144  126 /*toYearTiny*/,
5145  3 /*inMonth*/,
5146  7 /*onDayOfWeek*/,
5147  8 /*onDayOfMonth*/,
5148  8 /*atTimeCode*/,
5149  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5150  4 /*deltaCode*/,
5151  'D' /*letter*/,
5152  },
5153  // Rule US 2007 max - Nov Sun>=1 2:00 0 S
5154  {
5155  7 /*fromYearTiny*/,
5156  126 /*toYearTiny*/,
5157  11 /*inMonth*/,
5158  7 /*onDayOfWeek*/,
5159  1 /*onDayOfMonth*/,
5160  8 /*atTimeCode*/,
5161  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5162  0 /*deltaCode*/,
5163  'S' /*letter*/,
5164  },
5165 
5166 };
5167 
5168 
5169 
5170 const basic::ZonePolicy kPolicyUS ACE_TIME_PROGMEM = {
5171  kZoneRulesUS /*rules*/,
5172  nullptr /* letters */,
5173  5 /*numRules*/,
5174  0 /* numLetters */,
5175 };
5176 
5177 //---------------------------------------------------------------------------
5178 // Policy name: Uruguay
5179 // Rules: 6
5180 // Memory (8-bit): 60
5181 // Memory (32-bit): 84
5182 //---------------------------------------------------------------------------
5183 
5184 static const basic::ZoneRule kZoneRulesUruguay[] ACE_TIME_PROGMEM = {
5185  // Rule Uruguay 1993 only - Feb 28 0:00 0 -
5186  {
5187  -7 /*fromYearTiny*/,
5188  -7 /*toYearTiny*/,
5189  2 /*inMonth*/,
5190  0 /*onDayOfWeek*/,
5191  28 /*onDayOfMonth*/,
5192  0 /*atTimeCode*/,
5193  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5194  0 /*deltaCode*/,
5195  '-' /*letter*/,
5196  },
5197  // Rule Uruguay 2004 only - Sep 19 0:00 1:00 -
5198  {
5199  4 /*fromYearTiny*/,
5200  4 /*toYearTiny*/,
5201  9 /*inMonth*/,
5202  0 /*onDayOfWeek*/,
5203  19 /*onDayOfMonth*/,
5204  0 /*atTimeCode*/,
5205  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5206  4 /*deltaCode*/,
5207  '-' /*letter*/,
5208  },
5209  // Rule Uruguay 2005 only - Mar 27 2:00 0 -
5210  {
5211  5 /*fromYearTiny*/,
5212  5 /*toYearTiny*/,
5213  3 /*inMonth*/,
5214  0 /*onDayOfWeek*/,
5215  27 /*onDayOfMonth*/,
5216  8 /*atTimeCode*/,
5217  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5218  0 /*deltaCode*/,
5219  '-' /*letter*/,
5220  },
5221  // Rule Uruguay 2005 only - Oct 9 2:00 1:00 -
5222  {
5223  5 /*fromYearTiny*/,
5224  5 /*toYearTiny*/,
5225  10 /*inMonth*/,
5226  0 /*onDayOfWeek*/,
5227  9 /*onDayOfMonth*/,
5228  8 /*atTimeCode*/,
5229  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5230  4 /*deltaCode*/,
5231  '-' /*letter*/,
5232  },
5233  // Rule Uruguay 2006 2015 - Mar Sun>=8 2:00 0 -
5234  {
5235  6 /*fromYearTiny*/,
5236  15 /*toYearTiny*/,
5237  3 /*inMonth*/,
5238  7 /*onDayOfWeek*/,
5239  8 /*onDayOfMonth*/,
5240  8 /*atTimeCode*/,
5241  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5242  0 /*deltaCode*/,
5243  '-' /*letter*/,
5244  },
5245  // Rule Uruguay 2006 2014 - Oct Sun>=1 2:00 1:00 -
5246  {
5247  6 /*fromYearTiny*/,
5248  14 /*toYearTiny*/,
5249  10 /*inMonth*/,
5250  7 /*onDayOfWeek*/,
5251  1 /*onDayOfMonth*/,
5252  8 /*atTimeCode*/,
5253  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5254  4 /*deltaCode*/,
5255  '-' /*letter*/,
5256  },
5257 
5258 };
5259 
5260 
5261 
5262 const basic::ZonePolicy kPolicyUruguay ACE_TIME_PROGMEM = {
5263  kZoneRulesUruguay /*rules*/,
5264  nullptr /* letters */,
5265  6 /*numRules*/,
5266  0 /* numLetters */,
5267 };
5268 
5269 //---------------------------------------------------------------------------
5270 // Policy name: Vanuatu
5271 // Rules: 1
5272 // Memory (8-bit): 15
5273 // Memory (32-bit): 24
5274 //---------------------------------------------------------------------------
5275 
5276 static const basic::ZoneRule kZoneRulesVanuatu[] ACE_TIME_PROGMEM = {
5277  // Rule Vanuatu 1992 1993 - Jan Sun>=23 0:00 0 -
5278  {
5279  -8 /*fromYearTiny*/,
5280  -7 /*toYearTiny*/,
5281  1 /*inMonth*/,
5282  7 /*onDayOfWeek*/,
5283  23 /*onDayOfMonth*/,
5284  0 /*atTimeCode*/,
5285  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5286  0 /*deltaCode*/,
5287  '-' /*letter*/,
5288  },
5289 
5290 };
5291 
5292 
5293 
5294 const basic::ZonePolicy kPolicyVanuatu ACE_TIME_PROGMEM = {
5295  kZoneRulesVanuatu /*rules*/,
5296  nullptr /* letters */,
5297  1 /*numRules*/,
5298  0 /* numLetters */,
5299 };
5300 
5301 //---------------------------------------------------------------------------
5302 // Policy name: Winn
5303 // Rules: 3
5304 // Memory (8-bit): 33
5305 // Memory (32-bit): 48
5306 //---------------------------------------------------------------------------
5307 
5308 static const basic::ZoneRule kZoneRulesWinn[] ACE_TIME_PROGMEM = {
5309  // Rule Winn 1966 1986 - Apr lastSun 2:00s 1:00 D
5310  {
5311  -34 /*fromYearTiny*/,
5312  -14 /*toYearTiny*/,
5313  4 /*inMonth*/,
5314  7 /*onDayOfWeek*/,
5315  0 /*onDayOfMonth*/,
5316  8 /*atTimeCode*/,
5317  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
5318  4 /*deltaCode*/,
5319  'D' /*letter*/,
5320  },
5321  // Rule Winn 1966 2005 - Oct lastSun 2:00s 0 S
5322  {
5323  -34 /*fromYearTiny*/,
5324  5 /*toYearTiny*/,
5325  10 /*inMonth*/,
5326  7 /*onDayOfWeek*/,
5327  0 /*onDayOfMonth*/,
5328  8 /*atTimeCode*/,
5329  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
5330  0 /*deltaCode*/,
5331  'S' /*letter*/,
5332  },
5333  // Rule Winn 1987 2005 - Apr Sun>=1 2:00s 1:00 D
5334  {
5335  -13 /*fromYearTiny*/,
5336  5 /*toYearTiny*/,
5337  4 /*inMonth*/,
5338  7 /*onDayOfWeek*/,
5339  1 /*onDayOfMonth*/,
5340  8 /*atTimeCode*/,
5341  basic::ZoneContext::kSuffixS /*atTimeModifier*/,
5342  4 /*deltaCode*/,
5343  'D' /*letter*/,
5344  },
5345 
5346 };
5347 
5348 
5349 
5350 const basic::ZonePolicy kPolicyWinn ACE_TIME_PROGMEM = {
5351  kZoneRulesWinn /*rules*/,
5352  nullptr /* letters */,
5353  3 /*numRules*/,
5354  0 /* numLetters */,
5355 };
5356 
5357 //---------------------------------------------------------------------------
5358 // Policy name: Zion
5359 // Rules: 24
5360 // Memory (8-bit): 222
5361 // Memory (32-bit): 300
5362 //---------------------------------------------------------------------------
5363 
5364 static const basic::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = {
5365  // Rule Zion 1998 only - Sep 6 0:00 0 S
5366  {
5367  -2 /*fromYearTiny*/,
5368  -2 /*toYearTiny*/,
5369  9 /*inMonth*/,
5370  0 /*onDayOfWeek*/,
5371  6 /*onDayOfMonth*/,
5372  0 /*atTimeCode*/,
5373  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5374  0 /*deltaCode*/,
5375  'S' /*letter*/,
5376  },
5377  // Rule Zion 1999 only - Apr 2 2:00 1:00 D
5378  {
5379  -1 /*fromYearTiny*/,
5380  -1 /*toYearTiny*/,
5381  4 /*inMonth*/,
5382  0 /*onDayOfWeek*/,
5383  2 /*onDayOfMonth*/,
5384  8 /*atTimeCode*/,
5385  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5386  4 /*deltaCode*/,
5387  'D' /*letter*/,
5388  },
5389  // Rule Zion 1999 only - Sep 3 2:00 0 S
5390  {
5391  -1 /*fromYearTiny*/,
5392  -1 /*toYearTiny*/,
5393  9 /*inMonth*/,
5394  0 /*onDayOfWeek*/,
5395  3 /*onDayOfMonth*/,
5396  8 /*atTimeCode*/,
5397  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5398  0 /*deltaCode*/,
5399  'S' /*letter*/,
5400  },
5401  // Rule Zion 2000 only - Apr 14 2:00 1:00 D
5402  {
5403  0 /*fromYearTiny*/,
5404  0 /*toYearTiny*/,
5405  4 /*inMonth*/,
5406  0 /*onDayOfWeek*/,
5407  14 /*onDayOfMonth*/,
5408  8 /*atTimeCode*/,
5409  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5410  4 /*deltaCode*/,
5411  'D' /*letter*/,
5412  },
5413  // Rule Zion 2000 only - Oct 6 1:00 0 S
5414  {
5415  0 /*fromYearTiny*/,
5416  0 /*toYearTiny*/,
5417  10 /*inMonth*/,
5418  0 /*onDayOfWeek*/,
5419  6 /*onDayOfMonth*/,
5420  4 /*atTimeCode*/,
5421  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5422  0 /*deltaCode*/,
5423  'S' /*letter*/,
5424  },
5425  // Rule Zion 2001 only - Apr 9 1:00 1:00 D
5426  {
5427  1 /*fromYearTiny*/,
5428  1 /*toYearTiny*/,
5429  4 /*inMonth*/,
5430  0 /*onDayOfWeek*/,
5431  9 /*onDayOfMonth*/,
5432  4 /*atTimeCode*/,
5433  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5434  4 /*deltaCode*/,
5435  'D' /*letter*/,
5436  },
5437  // Rule Zion 2001 only - Sep 24 1:00 0 S
5438  {
5439  1 /*fromYearTiny*/,
5440  1 /*toYearTiny*/,
5441  9 /*inMonth*/,
5442  0 /*onDayOfWeek*/,
5443  24 /*onDayOfMonth*/,
5444  4 /*atTimeCode*/,
5445  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5446  0 /*deltaCode*/,
5447  'S' /*letter*/,
5448  },
5449  // Rule Zion 2002 only - Mar 29 1:00 1:00 D
5450  {
5451  2 /*fromYearTiny*/,
5452  2 /*toYearTiny*/,
5453  3 /*inMonth*/,
5454  0 /*onDayOfWeek*/,
5455  29 /*onDayOfMonth*/,
5456  4 /*atTimeCode*/,
5457  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5458  4 /*deltaCode*/,
5459  'D' /*letter*/,
5460  },
5461  // Rule Zion 2002 only - Oct 7 1:00 0 S
5462  {
5463  2 /*fromYearTiny*/,
5464  2 /*toYearTiny*/,
5465  10 /*inMonth*/,
5466  0 /*onDayOfWeek*/,
5467  7 /*onDayOfMonth*/,
5468  4 /*atTimeCode*/,
5469  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5470  0 /*deltaCode*/,
5471  'S' /*letter*/,
5472  },
5473  // Rule Zion 2003 only - Mar 28 1:00 1:00 D
5474  {
5475  3 /*fromYearTiny*/,
5476  3 /*toYearTiny*/,
5477  3 /*inMonth*/,
5478  0 /*onDayOfWeek*/,
5479  28 /*onDayOfMonth*/,
5480  4 /*atTimeCode*/,
5481  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5482  4 /*deltaCode*/,
5483  'D' /*letter*/,
5484  },
5485  // Rule Zion 2003 only - Oct 3 1:00 0 S
5486  {
5487  3 /*fromYearTiny*/,
5488  3 /*toYearTiny*/,
5489  10 /*inMonth*/,
5490  0 /*onDayOfWeek*/,
5491  3 /*onDayOfMonth*/,
5492  4 /*atTimeCode*/,
5493  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5494  0 /*deltaCode*/,
5495  'S' /*letter*/,
5496  },
5497  // Rule Zion 2004 only - Apr 7 1:00 1:00 D
5498  {
5499  4 /*fromYearTiny*/,
5500  4 /*toYearTiny*/,
5501  4 /*inMonth*/,
5502  0 /*onDayOfWeek*/,
5503  7 /*onDayOfMonth*/,
5504  4 /*atTimeCode*/,
5505  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5506  4 /*deltaCode*/,
5507  'D' /*letter*/,
5508  },
5509  // Rule Zion 2004 only - Sep 22 1:00 0 S
5510  {
5511  4 /*fromYearTiny*/,
5512  4 /*toYearTiny*/,
5513  9 /*inMonth*/,
5514  0 /*onDayOfWeek*/,
5515  22 /*onDayOfMonth*/,
5516  4 /*atTimeCode*/,
5517  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5518  0 /*deltaCode*/,
5519  'S' /*letter*/,
5520  },
5521  // Rule Zion 2005 2012 - Apr Fri<=1 2:00 1:00 D
5522  {
5523  5 /*fromYearTiny*/,
5524  12 /*toYearTiny*/,
5525  4 /*inMonth*/,
5526  5 /*onDayOfWeek*/,
5527  -1 /*onDayOfMonth*/,
5528  8 /*atTimeCode*/,
5529  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5530  4 /*deltaCode*/,
5531  'D' /*letter*/,
5532  },
5533  // Rule Zion 2005 only - Oct 9 2:00 0 S
5534  {
5535  5 /*fromYearTiny*/,
5536  5 /*toYearTiny*/,
5537  10 /*inMonth*/,
5538  0 /*onDayOfWeek*/,
5539  9 /*onDayOfMonth*/,
5540  8 /*atTimeCode*/,
5541  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5542  0 /*deltaCode*/,
5543  'S' /*letter*/,
5544  },
5545  // Rule Zion 2006 only - Oct 1 2:00 0 S
5546  {
5547  6 /*fromYearTiny*/,
5548  6 /*toYearTiny*/,
5549  10 /*inMonth*/,
5550  0 /*onDayOfWeek*/,
5551  1 /*onDayOfMonth*/,
5552  8 /*atTimeCode*/,
5553  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5554  0 /*deltaCode*/,
5555  'S' /*letter*/,
5556  },
5557  // Rule Zion 2007 only - Sep 16 2:00 0 S
5558  {
5559  7 /*fromYearTiny*/,
5560  7 /*toYearTiny*/,
5561  9 /*inMonth*/,
5562  0 /*onDayOfWeek*/,
5563  16 /*onDayOfMonth*/,
5564  8 /*atTimeCode*/,
5565  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5566  0 /*deltaCode*/,
5567  'S' /*letter*/,
5568  },
5569  // Rule Zion 2008 only - Oct 5 2:00 0 S
5570  {
5571  8 /*fromYearTiny*/,
5572  8 /*toYearTiny*/,
5573  10 /*inMonth*/,
5574  0 /*onDayOfWeek*/,
5575  5 /*onDayOfMonth*/,
5576  8 /*atTimeCode*/,
5577  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5578  0 /*deltaCode*/,
5579  'S' /*letter*/,
5580  },
5581  // Rule Zion 2009 only - Sep 27 2:00 0 S
5582  {
5583  9 /*fromYearTiny*/,
5584  9 /*toYearTiny*/,
5585  9 /*inMonth*/,
5586  0 /*onDayOfWeek*/,
5587  27 /*onDayOfMonth*/,
5588  8 /*atTimeCode*/,
5589  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5590  0 /*deltaCode*/,
5591  'S' /*letter*/,
5592  },
5593  // Rule Zion 2010 only - Sep 12 2:00 0 S
5594  {
5595  10 /*fromYearTiny*/,
5596  10 /*toYearTiny*/,
5597  9 /*inMonth*/,
5598  0 /*onDayOfWeek*/,
5599  12 /*onDayOfMonth*/,
5600  8 /*atTimeCode*/,
5601  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5602  0 /*deltaCode*/,
5603  'S' /*letter*/,
5604  },
5605  // Rule Zion 2011 only - Oct 2 2:00 0 S
5606  {
5607  11 /*fromYearTiny*/,
5608  11 /*toYearTiny*/,
5609  10 /*inMonth*/,
5610  0 /*onDayOfWeek*/,
5611  2 /*onDayOfMonth*/,
5612  8 /*atTimeCode*/,
5613  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5614  0 /*deltaCode*/,
5615  'S' /*letter*/,
5616  },
5617  // Rule Zion 2012 only - Sep 23 2:00 0 S
5618  {
5619  12 /*fromYearTiny*/,
5620  12 /*toYearTiny*/,
5621  9 /*inMonth*/,
5622  0 /*onDayOfWeek*/,
5623  23 /*onDayOfMonth*/,
5624  8 /*atTimeCode*/,
5625  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5626  0 /*deltaCode*/,
5627  'S' /*letter*/,
5628  },
5629  // Rule Zion 2013 max - Mar Fri>=23 2:00 1:00 D
5630  {
5631  13 /*fromYearTiny*/,
5632  126 /*toYearTiny*/,
5633  3 /*inMonth*/,
5634  5 /*onDayOfWeek*/,
5635  23 /*onDayOfMonth*/,
5636  8 /*atTimeCode*/,
5637  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5638  4 /*deltaCode*/,
5639  'D' /*letter*/,
5640  },
5641  // Rule Zion 2013 max - Oct lastSun 2:00 0 S
5642  {
5643  13 /*fromYearTiny*/,
5644  126 /*toYearTiny*/,
5645  10 /*inMonth*/,
5646  7 /*onDayOfWeek*/,
5647  0 /*onDayOfMonth*/,
5648  8 /*atTimeCode*/,
5649  basic::ZoneContext::kSuffixW /*atTimeModifier*/,
5650  0 /*deltaCode*/,
5651  'S' /*letter*/,
5652  },
5653 
5654 };
5655 
5656 
5657 
5658 const basic::ZonePolicy kPolicyZion ACE_TIME_PROGMEM = {
5659  kZoneRulesZion /*rules*/,
5660  nullptr /* letters */,
5661  24 /*numRules*/,
5662  0 /* numLetters */,
5663 };
5664 
5665 
5666 
5667 }
5668 }
compat.h