AceTime  1.11.1
Date and time classes for Arduino that support timezones from the TZ Database.
zone_policies.cpp
1 // This file was generated by the following script:
2 //
3 // $ /home/brian/src/AceTimeTools/src/acetimetools/tzcompiler.py
4 // --input_dir /home/brian/dev/tz
5 // --output_dir /home/brian/src/AceTime/src/ace_time/zonedbx
6 // --tz_version 2021e
7 // --action zonedb
8 // --language arduino
9 // --scope extended
10 // --start_year 2000
11 // --until_year 2050
12 //
13 // using the TZ Database files
14 //
15 // africa
16 // antarctica
17 // asia
18 // australasia
19 // backward
20 // etcetera
21 // europe
22 // northamerica
23 // southamerica
24 //
25 // from https://github.com/eggert/tz/releases/tag/2021e
26 //
27 // Policies: 83
28 // Rules: 553
29 // Letter Size (bytes): 23
30 // Total Memory 8-bit (bytes): 5510
31 // Total Memory 32-bit (bytes): 7679
32 //
33 // DO NOT EDIT
34 
35 #include <ace_time/common/compat.h>
36 #include "zone_policies.h"
37 
38 namespace ace_time {
39 namespace zonedbx {
40 
41 //---------------------------------------------------------------------------
42 // Policy name: AN
43 // Rules: 9
44 // Memory (8-bit): 87
45 // Memory (32-bit): 120
46 //---------------------------------------------------------------------------
47 
48 static const extended::ZoneRule kZoneRulesAN[] ACE_TIME_PROGMEM = {
49  // Rule AN 1987 1999 - Oct lastSun 2:00s 1:00 D
50  {
51  -13 /*fromYearTiny*/,
52  -1 /*toYearTiny*/,
53  10 /*inMonth*/,
54  7 /*onDayOfWeek*/,
55  0 /*onDayOfMonth*/,
56  8 /*atTimeCode*/,
57  16 /*atTimeModifier (kSuffixS + minute=0)*/,
58  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
59  'D' /*letter*/,
60  },
61  // Rule AN 1990 1995 - Mar Sun>=1 2:00s 0 S
62  {
63  -10 /*fromYearTiny*/,
64  -5 /*toYearTiny*/,
65  3 /*inMonth*/,
66  7 /*onDayOfWeek*/,
67  1 /*onDayOfMonth*/,
68  8 /*atTimeCode*/,
69  16 /*atTimeModifier (kSuffixS + minute=0)*/,
70  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
71  'S' /*letter*/,
72  },
73  // Rule AN 1996 2005 - Mar lastSun 2:00s 0 S
74  {
75  -4 /*fromYearTiny*/,
76  5 /*toYearTiny*/,
77  3 /*inMonth*/,
78  7 /*onDayOfWeek*/,
79  0 /*onDayOfMonth*/,
80  8 /*atTimeCode*/,
81  16 /*atTimeModifier (kSuffixS + minute=0)*/,
82  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
83  'S' /*letter*/,
84  },
85  // Rule AN 2000 only - Aug lastSun 2:00s 1:00 D
86  {
87  0 /*fromYearTiny*/,
88  0 /*toYearTiny*/,
89  8 /*inMonth*/,
90  7 /*onDayOfWeek*/,
91  0 /*onDayOfMonth*/,
92  8 /*atTimeCode*/,
93  16 /*atTimeModifier (kSuffixS + minute=0)*/,
94  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
95  'D' /*letter*/,
96  },
97  // Rule AN 2001 2007 - Oct lastSun 2:00s 1:00 D
98  {
99  1 /*fromYearTiny*/,
100  7 /*toYearTiny*/,
101  10 /*inMonth*/,
102  7 /*onDayOfWeek*/,
103  0 /*onDayOfMonth*/,
104  8 /*atTimeCode*/,
105  16 /*atTimeModifier (kSuffixS + minute=0)*/,
106  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
107  'D' /*letter*/,
108  },
109  // Rule AN 2006 only - Apr Sun>=1 2:00s 0 S
110  {
111  6 /*fromYearTiny*/,
112  6 /*toYearTiny*/,
113  4 /*inMonth*/,
114  7 /*onDayOfWeek*/,
115  1 /*onDayOfMonth*/,
116  8 /*atTimeCode*/,
117  16 /*atTimeModifier (kSuffixS + minute=0)*/,
118  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
119  'S' /*letter*/,
120  },
121  // Rule AN 2007 only - Mar lastSun 2:00s 0 S
122  {
123  7 /*fromYearTiny*/,
124  7 /*toYearTiny*/,
125  3 /*inMonth*/,
126  7 /*onDayOfWeek*/,
127  0 /*onDayOfMonth*/,
128  8 /*atTimeCode*/,
129  16 /*atTimeModifier (kSuffixS + minute=0)*/,
130  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
131  'S' /*letter*/,
132  },
133  // Rule AN 2008 max - Apr Sun>=1 2:00s 0 S
134  {
135  8 /*fromYearTiny*/,
136  126 /*toYearTiny*/,
137  4 /*inMonth*/,
138  7 /*onDayOfWeek*/,
139  1 /*onDayOfMonth*/,
140  8 /*atTimeCode*/,
141  16 /*atTimeModifier (kSuffixS + minute=0)*/,
142  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
143  'S' /*letter*/,
144  },
145  // Rule AN 2008 max - Oct Sun>=1 2:00s 1:00 D
146  {
147  8 /*fromYearTiny*/,
148  126 /*toYearTiny*/,
149  10 /*inMonth*/,
150  7 /*onDayOfWeek*/,
151  1 /*onDayOfMonth*/,
152  8 /*atTimeCode*/,
153  16 /*atTimeModifier (kSuffixS + minute=0)*/,
154  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
155  'D' /*letter*/,
156  },
157 
158 };
159 
160 
161 
162 const extended::ZonePolicy kPolicyAN ACE_TIME_PROGMEM = {
163  kZoneRulesAN /*rules*/,
164  nullptr /*letters*/,
165  9 /*numRules*/,
166  0 /*numLetters*/,
167 };
168 
169 //---------------------------------------------------------------------------
170 // Policy name: AQ
171 // Rules: 1
172 // Memory (8-bit): 15
173 // Memory (32-bit): 24
174 //---------------------------------------------------------------------------
175 
176 static const extended::ZoneRule kZoneRulesAQ[] ACE_TIME_PROGMEM = {
177  // Rule AQ 1990 1992 - Mar Sun>=1 2:00s 0 S
178  {
179  -10 /*fromYearTiny*/,
180  -8 /*toYearTiny*/,
181  3 /*inMonth*/,
182  7 /*onDayOfWeek*/,
183  1 /*onDayOfMonth*/,
184  8 /*atTimeCode*/,
185  16 /*atTimeModifier (kSuffixS + minute=0)*/,
186  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
187  'S' /*letter*/,
188  },
189 
190 };
191 
192 
193 
194 const extended::ZonePolicy kPolicyAQ ACE_TIME_PROGMEM = {
195  kZoneRulesAQ /*rules*/,
196  nullptr /*letters*/,
197  1 /*numRules*/,
198  0 /*numLetters*/,
199 };
200 
201 //---------------------------------------------------------------------------
202 // Policy name: AS
203 // Rules: 7
204 // Memory (8-bit): 69
205 // Memory (32-bit): 96
206 //---------------------------------------------------------------------------
207 
208 static const extended::ZoneRule kZoneRulesAS[] ACE_TIME_PROGMEM = {
209  // Rule AS 1987 2007 - Oct lastSun 2:00s 1:00 D
210  {
211  -13 /*fromYearTiny*/,
212  7 /*toYearTiny*/,
213  10 /*inMonth*/,
214  7 /*onDayOfWeek*/,
215  0 /*onDayOfMonth*/,
216  8 /*atTimeCode*/,
217  16 /*atTimeModifier (kSuffixS + minute=0)*/,
218  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
219  'D' /*letter*/,
220  },
221  // Rule AS 1994 only - Mar 20 2:00s 0 S
222  {
223  -6 /*fromYearTiny*/,
224  -6 /*toYearTiny*/,
225  3 /*inMonth*/,
226  0 /*onDayOfWeek*/,
227  20 /*onDayOfMonth*/,
228  8 /*atTimeCode*/,
229  16 /*atTimeModifier (kSuffixS + minute=0)*/,
230  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
231  'S' /*letter*/,
232  },
233  // Rule AS 1995 2005 - Mar lastSun 2:00s 0 S
234  {
235  -5 /*fromYearTiny*/,
236  5 /*toYearTiny*/,
237  3 /*inMonth*/,
238  7 /*onDayOfWeek*/,
239  0 /*onDayOfMonth*/,
240  8 /*atTimeCode*/,
241  16 /*atTimeModifier (kSuffixS + minute=0)*/,
242  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
243  'S' /*letter*/,
244  },
245  // Rule AS 2006 only - Apr 2 2:00s 0 S
246  {
247  6 /*fromYearTiny*/,
248  6 /*toYearTiny*/,
249  4 /*inMonth*/,
250  0 /*onDayOfWeek*/,
251  2 /*onDayOfMonth*/,
252  8 /*atTimeCode*/,
253  16 /*atTimeModifier (kSuffixS + minute=0)*/,
254  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
255  'S' /*letter*/,
256  },
257  // Rule AS 2007 only - Mar lastSun 2:00s 0 S
258  {
259  7 /*fromYearTiny*/,
260  7 /*toYearTiny*/,
261  3 /*inMonth*/,
262  7 /*onDayOfWeek*/,
263  0 /*onDayOfMonth*/,
264  8 /*atTimeCode*/,
265  16 /*atTimeModifier (kSuffixS + minute=0)*/,
266  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
267  'S' /*letter*/,
268  },
269  // Rule AS 2008 max - Apr Sun>=1 2:00s 0 S
270  {
271  8 /*fromYearTiny*/,
272  126 /*toYearTiny*/,
273  4 /*inMonth*/,
274  7 /*onDayOfWeek*/,
275  1 /*onDayOfMonth*/,
276  8 /*atTimeCode*/,
277  16 /*atTimeModifier (kSuffixS + minute=0)*/,
278  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
279  'S' /*letter*/,
280  },
281  // Rule AS 2008 max - Oct Sun>=1 2:00s 1:00 D
282  {
283  8 /*fromYearTiny*/,
284  126 /*toYearTiny*/,
285  10 /*inMonth*/,
286  7 /*onDayOfWeek*/,
287  1 /*onDayOfMonth*/,
288  8 /*atTimeCode*/,
289  16 /*atTimeModifier (kSuffixS + minute=0)*/,
290  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
291  'D' /*letter*/,
292  },
293 
294 };
295 
296 
297 
298 const extended::ZonePolicy kPolicyAS ACE_TIME_PROGMEM = {
299  kZoneRulesAS /*rules*/,
300  nullptr /*letters*/,
301  7 /*numRules*/,
302  0 /*numLetters*/,
303 };
304 
305 //---------------------------------------------------------------------------
306 // Policy name: AT
307 // Rules: 8
308 // Memory (8-bit): 78
309 // Memory (32-bit): 108
310 //---------------------------------------------------------------------------
311 
312 static const extended::ZoneRule kZoneRulesAT[] ACE_TIME_PROGMEM = {
313  // Rule AT 1988 1990 - Oct lastSun 2:00s 1:00 D
314  {
315  -12 /*fromYearTiny*/,
316  -10 /*toYearTiny*/,
317  10 /*inMonth*/,
318  7 /*onDayOfWeek*/,
319  0 /*onDayOfMonth*/,
320  8 /*atTimeCode*/,
321  16 /*atTimeModifier (kSuffixS + minute=0)*/,
322  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
323  'D' /*letter*/,
324  },
325  // Rule AT 1991 1999 - Oct Sun>=1 2:00s 1:00 D
326  {
327  -9 /*fromYearTiny*/,
328  -1 /*toYearTiny*/,
329  10 /*inMonth*/,
330  7 /*onDayOfWeek*/,
331  1 /*onDayOfMonth*/,
332  8 /*atTimeCode*/,
333  16 /*atTimeModifier (kSuffixS + minute=0)*/,
334  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
335  'D' /*letter*/,
336  },
337  // Rule AT 1991 2005 - Mar lastSun 2:00s 0 S
338  {
339  -9 /*fromYearTiny*/,
340  5 /*toYearTiny*/,
341  3 /*inMonth*/,
342  7 /*onDayOfWeek*/,
343  0 /*onDayOfMonth*/,
344  8 /*atTimeCode*/,
345  16 /*atTimeModifier (kSuffixS + minute=0)*/,
346  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
347  'S' /*letter*/,
348  },
349  // Rule AT 2000 only - Aug lastSun 2:00s 1:00 D
350  {
351  0 /*fromYearTiny*/,
352  0 /*toYearTiny*/,
353  8 /*inMonth*/,
354  7 /*onDayOfWeek*/,
355  0 /*onDayOfMonth*/,
356  8 /*atTimeCode*/,
357  16 /*atTimeModifier (kSuffixS + minute=0)*/,
358  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
359  'D' /*letter*/,
360  },
361  // Rule AT 2001 max - Oct Sun>=1 2:00s 1:00 D
362  {
363  1 /*fromYearTiny*/,
364  126 /*toYearTiny*/,
365  10 /*inMonth*/,
366  7 /*onDayOfWeek*/,
367  1 /*onDayOfMonth*/,
368  8 /*atTimeCode*/,
369  16 /*atTimeModifier (kSuffixS + minute=0)*/,
370  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
371  'D' /*letter*/,
372  },
373  // Rule AT 2006 only - Apr Sun>=1 2:00s 0 S
374  {
375  6 /*fromYearTiny*/,
376  6 /*toYearTiny*/,
377  4 /*inMonth*/,
378  7 /*onDayOfWeek*/,
379  1 /*onDayOfMonth*/,
380  8 /*atTimeCode*/,
381  16 /*atTimeModifier (kSuffixS + minute=0)*/,
382  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
383  'S' /*letter*/,
384  },
385  // Rule AT 2007 only - Mar lastSun 2:00s 0 S
386  {
387  7 /*fromYearTiny*/,
388  7 /*toYearTiny*/,
389  3 /*inMonth*/,
390  7 /*onDayOfWeek*/,
391  0 /*onDayOfMonth*/,
392  8 /*atTimeCode*/,
393  16 /*atTimeModifier (kSuffixS + minute=0)*/,
394  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
395  'S' /*letter*/,
396  },
397  // Rule AT 2008 max - Apr Sun>=1 2:00s 0 S
398  {
399  8 /*fromYearTiny*/,
400  126 /*toYearTiny*/,
401  4 /*inMonth*/,
402  7 /*onDayOfWeek*/,
403  1 /*onDayOfMonth*/,
404  8 /*atTimeCode*/,
405  16 /*atTimeModifier (kSuffixS + minute=0)*/,
406  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
407  'S' /*letter*/,
408  },
409 
410 };
411 
412 
413 
414 const extended::ZonePolicy kPolicyAT ACE_TIME_PROGMEM = {
415  kZoneRulesAT /*rules*/,
416  nullptr /*letters*/,
417  8 /*numRules*/,
418  0 /*numLetters*/,
419 };
420 
421 //---------------------------------------------------------------------------
422 // Policy name: AV
423 // Rules: 9
424 // Memory (8-bit): 87
425 // Memory (32-bit): 120
426 //---------------------------------------------------------------------------
427 
428 static const extended::ZoneRule kZoneRulesAV[] ACE_TIME_PROGMEM = {
429  // Rule AV 1988 1999 - Oct lastSun 2:00s 1:00 D
430  {
431  -12 /*fromYearTiny*/,
432  -1 /*toYearTiny*/,
433  10 /*inMonth*/,
434  7 /*onDayOfWeek*/,
435  0 /*onDayOfMonth*/,
436  8 /*atTimeCode*/,
437  16 /*atTimeModifier (kSuffixS + minute=0)*/,
438  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
439  'D' /*letter*/,
440  },
441  // Rule AV 1991 1994 - Mar Sun>=1 2:00s 0 S
442  {
443  -9 /*fromYearTiny*/,
444  -6 /*toYearTiny*/,
445  3 /*inMonth*/,
446  7 /*onDayOfWeek*/,
447  1 /*onDayOfMonth*/,
448  8 /*atTimeCode*/,
449  16 /*atTimeModifier (kSuffixS + minute=0)*/,
450  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
451  'S' /*letter*/,
452  },
453  // Rule AV 1995 2005 - Mar lastSun 2:00s 0 S
454  {
455  -5 /*fromYearTiny*/,
456  5 /*toYearTiny*/,
457  3 /*inMonth*/,
458  7 /*onDayOfWeek*/,
459  0 /*onDayOfMonth*/,
460  8 /*atTimeCode*/,
461  16 /*atTimeModifier (kSuffixS + minute=0)*/,
462  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
463  'S' /*letter*/,
464  },
465  // Rule AV 2000 only - Aug lastSun 2:00s 1:00 D
466  {
467  0 /*fromYearTiny*/,
468  0 /*toYearTiny*/,
469  8 /*inMonth*/,
470  7 /*onDayOfWeek*/,
471  0 /*onDayOfMonth*/,
472  8 /*atTimeCode*/,
473  16 /*atTimeModifier (kSuffixS + minute=0)*/,
474  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
475  'D' /*letter*/,
476  },
477  // Rule AV 2001 2007 - Oct lastSun 2:00s 1:00 D
478  {
479  1 /*fromYearTiny*/,
480  7 /*toYearTiny*/,
481  10 /*inMonth*/,
482  7 /*onDayOfWeek*/,
483  0 /*onDayOfMonth*/,
484  8 /*atTimeCode*/,
485  16 /*atTimeModifier (kSuffixS + minute=0)*/,
486  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
487  'D' /*letter*/,
488  },
489  // Rule AV 2006 only - Apr Sun>=1 2:00s 0 S
490  {
491  6 /*fromYearTiny*/,
492  6 /*toYearTiny*/,
493  4 /*inMonth*/,
494  7 /*onDayOfWeek*/,
495  1 /*onDayOfMonth*/,
496  8 /*atTimeCode*/,
497  16 /*atTimeModifier (kSuffixS + minute=0)*/,
498  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
499  'S' /*letter*/,
500  },
501  // Rule AV 2007 only - Mar lastSun 2:00s 0 S
502  {
503  7 /*fromYearTiny*/,
504  7 /*toYearTiny*/,
505  3 /*inMonth*/,
506  7 /*onDayOfWeek*/,
507  0 /*onDayOfMonth*/,
508  8 /*atTimeCode*/,
509  16 /*atTimeModifier (kSuffixS + minute=0)*/,
510  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
511  'S' /*letter*/,
512  },
513  // Rule AV 2008 max - Apr Sun>=1 2:00s 0 S
514  {
515  8 /*fromYearTiny*/,
516  126 /*toYearTiny*/,
517  4 /*inMonth*/,
518  7 /*onDayOfWeek*/,
519  1 /*onDayOfMonth*/,
520  8 /*atTimeCode*/,
521  16 /*atTimeModifier (kSuffixS + minute=0)*/,
522  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
523  'S' /*letter*/,
524  },
525  // Rule AV 2008 max - Oct Sun>=1 2:00s 1:00 D
526  {
527  8 /*fromYearTiny*/,
528  126 /*toYearTiny*/,
529  10 /*inMonth*/,
530  7 /*onDayOfWeek*/,
531  1 /*onDayOfMonth*/,
532  8 /*atTimeCode*/,
533  16 /*atTimeModifier (kSuffixS + minute=0)*/,
534  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
535  'D' /*letter*/,
536  },
537 
538 };
539 
540 
541 
542 const extended::ZonePolicy kPolicyAV ACE_TIME_PROGMEM = {
543  kZoneRulesAV /*rules*/,
544  nullptr /*letters*/,
545  9 /*numRules*/,
546  0 /*numLetters*/,
547 };
548 
549 //---------------------------------------------------------------------------
550 // Policy name: AW
551 // Rules: 4
552 // Memory (8-bit): 42
553 // Memory (32-bit): 60
554 //---------------------------------------------------------------------------
555 
556 static const extended::ZoneRule kZoneRulesAW[] ACE_TIME_PROGMEM = {
557  // Rule AW 1992 only - Mar Sun>=1 2:00s 0 S
558  {
559  -8 /*fromYearTiny*/,
560  -8 /*toYearTiny*/,
561  3 /*inMonth*/,
562  7 /*onDayOfWeek*/,
563  1 /*onDayOfMonth*/,
564  8 /*atTimeCode*/,
565  16 /*atTimeModifier (kSuffixS + minute=0)*/,
566  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
567  'S' /*letter*/,
568  },
569  // Rule AW 2006 only - Dec 3 2:00s 1:00 D
570  {
571  6 /*fromYearTiny*/,
572  6 /*toYearTiny*/,
573  12 /*inMonth*/,
574  0 /*onDayOfWeek*/,
575  3 /*onDayOfMonth*/,
576  8 /*atTimeCode*/,
577  16 /*atTimeModifier (kSuffixS + minute=0)*/,
578  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
579  'D' /*letter*/,
580  },
581  // Rule AW 2007 2009 - Mar lastSun 2:00s 0 S
582  {
583  7 /*fromYearTiny*/,
584  9 /*toYearTiny*/,
585  3 /*inMonth*/,
586  7 /*onDayOfWeek*/,
587  0 /*onDayOfMonth*/,
588  8 /*atTimeCode*/,
589  16 /*atTimeModifier (kSuffixS + minute=0)*/,
590  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
591  'S' /*letter*/,
592  },
593  // Rule AW 2007 2008 - Oct lastSun 2:00s 1:00 D
594  {
595  7 /*fromYearTiny*/,
596  8 /*toYearTiny*/,
597  10 /*inMonth*/,
598  7 /*onDayOfWeek*/,
599  0 /*onDayOfMonth*/,
600  8 /*atTimeCode*/,
601  16 /*atTimeModifier (kSuffixS + minute=0)*/,
602  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
603  'D' /*letter*/,
604  },
605 
606 };
607 
608 
609 
610 const extended::ZonePolicy kPolicyAW ACE_TIME_PROGMEM = {
611  kZoneRulesAW /*rules*/,
612  nullptr /*letters*/,
613  4 /*numRules*/,
614  0 /*numLetters*/,
615 };
616 
617 //---------------------------------------------------------------------------
618 // Policy name: Arg
619 // Rules: 6
620 // Memory (8-bit): 60
621 // Memory (32-bit): 84
622 //---------------------------------------------------------------------------
623 
624 static const extended::ZoneRule kZoneRulesArg[] ACE_TIME_PROGMEM = {
625  // Rule Arg 1989 1993 - Mar Sun>=1 0:00 0 -
626  {
627  -11 /*fromYearTiny*/,
628  -7 /*toYearTiny*/,
629  3 /*inMonth*/,
630  7 /*onDayOfWeek*/,
631  1 /*onDayOfMonth*/,
632  0 /*atTimeCode*/,
633  0 /*atTimeModifier (kSuffixW + minute=0)*/,
634  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
635  '-' /*letter*/,
636  },
637  // Rule Arg 1999 only - Oct Sun>=1 0:00 1:00 -
638  {
639  -1 /*fromYearTiny*/,
640  -1 /*toYearTiny*/,
641  10 /*inMonth*/,
642  7 /*onDayOfWeek*/,
643  1 /*onDayOfMonth*/,
644  0 /*atTimeCode*/,
645  0 /*atTimeModifier (kSuffixW + minute=0)*/,
646  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
647  '-' /*letter*/,
648  },
649  // Rule Arg 2000 only - Mar 3 0:00 0 -
650  {
651  0 /*fromYearTiny*/,
652  0 /*toYearTiny*/,
653  3 /*inMonth*/,
654  0 /*onDayOfWeek*/,
655  3 /*onDayOfMonth*/,
656  0 /*atTimeCode*/,
657  0 /*atTimeModifier (kSuffixW + minute=0)*/,
658  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
659  '-' /*letter*/,
660  },
661  // Rule Arg 2007 only - Dec 30 0:00 1:00 -
662  {
663  7 /*fromYearTiny*/,
664  7 /*toYearTiny*/,
665  12 /*inMonth*/,
666  0 /*onDayOfWeek*/,
667  30 /*onDayOfMonth*/,
668  0 /*atTimeCode*/,
669  0 /*atTimeModifier (kSuffixW + minute=0)*/,
670  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
671  '-' /*letter*/,
672  },
673  // Rule Arg 2008 2009 - Mar Sun>=15 0:00 0 -
674  {
675  8 /*fromYearTiny*/,
676  9 /*toYearTiny*/,
677  3 /*inMonth*/,
678  7 /*onDayOfWeek*/,
679  15 /*onDayOfMonth*/,
680  0 /*atTimeCode*/,
681  0 /*atTimeModifier (kSuffixW + minute=0)*/,
682  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
683  '-' /*letter*/,
684  },
685  // Rule Arg 2008 only - Oct Sun>=15 0:00 1:00 -
686  {
687  8 /*fromYearTiny*/,
688  8 /*toYearTiny*/,
689  10 /*inMonth*/,
690  7 /*onDayOfWeek*/,
691  15 /*onDayOfMonth*/,
692  0 /*atTimeCode*/,
693  0 /*atTimeModifier (kSuffixW + minute=0)*/,
694  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
695  '-' /*letter*/,
696  },
697 
698 };
699 
700 
701 
702 const extended::ZonePolicy kPolicyArg ACE_TIME_PROGMEM = {
703  kZoneRulesArg /*rules*/,
704  nullptr /*letters*/,
705  6 /*numRules*/,
706  0 /*numLetters*/,
707 };
708 
709 //---------------------------------------------------------------------------
710 // Policy name: Armenia
711 // Rules: 3
712 // Memory (8-bit): 33
713 // Memory (32-bit): 48
714 //---------------------------------------------------------------------------
715 
716 static const extended::ZoneRule kZoneRulesArmenia[] ACE_TIME_PROGMEM = {
717  // Anchor: Rule Armenia 2011 only - Oct lastSun 2:00s 0 -
718  {
719  -127 /*fromYearTiny*/,
720  -127 /*toYearTiny*/,
721  1 /*inMonth*/,
722  0 /*onDayOfWeek*/,
723  1 /*onDayOfMonth*/,
724  0 /*atTimeCode*/,
725  0 /*atTimeModifier (kSuffixW + minute=0)*/,
726  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
727  '-' /*letter*/,
728  },
729  // Rule Armenia 2011 only - Mar lastSun 2:00s 1:00 -
730  {
731  11 /*fromYearTiny*/,
732  11 /*toYearTiny*/,
733  3 /*inMonth*/,
734  7 /*onDayOfWeek*/,
735  0 /*onDayOfMonth*/,
736  8 /*atTimeCode*/,
737  16 /*atTimeModifier (kSuffixS + minute=0)*/,
738  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
739  '-' /*letter*/,
740  },
741  // Rule Armenia 2011 only - Oct lastSun 2:00s 0 -
742  {
743  11 /*fromYearTiny*/,
744  11 /*toYearTiny*/,
745  10 /*inMonth*/,
746  7 /*onDayOfWeek*/,
747  0 /*onDayOfMonth*/,
748  8 /*atTimeCode*/,
749  16 /*atTimeModifier (kSuffixS + minute=0)*/,
750  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
751  '-' /*letter*/,
752  },
753 
754 };
755 
756 
757 
758 const extended::ZonePolicy kPolicyArmenia ACE_TIME_PROGMEM = {
759  kZoneRulesArmenia /*rules*/,
760  nullptr /*letters*/,
761  3 /*numRules*/,
762  0 /*numLetters*/,
763 };
764 
765 //---------------------------------------------------------------------------
766 // Policy name: Aus
767 // Rules: 1
768 // Memory (8-bit): 15
769 // Memory (32-bit): 24
770 //---------------------------------------------------------------------------
771 
772 static const extended::ZoneRule kZoneRulesAus[] ACE_TIME_PROGMEM = {
773  // Rule Aus 1943 1944 - Mar lastSun 2:00s 0 S
774  {
775  -57 /*fromYearTiny*/,
776  -56 /*toYearTiny*/,
777  3 /*inMonth*/,
778  7 /*onDayOfWeek*/,
779  0 /*onDayOfMonth*/,
780  8 /*atTimeCode*/,
781  16 /*atTimeModifier (kSuffixS + minute=0)*/,
782  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
783  'S' /*letter*/,
784  },
785 
786 };
787 
788 
789 
790 const extended::ZonePolicy kPolicyAus ACE_TIME_PROGMEM = {
791  kZoneRulesAus /*rules*/,
792  nullptr /*letters*/,
793  1 /*numRules*/,
794  0 /*numLetters*/,
795 };
796 
797 //---------------------------------------------------------------------------
798 // Policy name: Azer
799 // Rules: 2
800 // Memory (8-bit): 24
801 // Memory (32-bit): 36
802 //---------------------------------------------------------------------------
803 
804 static const extended::ZoneRule kZoneRulesAzer[] ACE_TIME_PROGMEM = {
805  // Rule Azer 1997 2015 - Mar lastSun 4:00 1:00 -
806  {
807  -3 /*fromYearTiny*/,
808  15 /*toYearTiny*/,
809  3 /*inMonth*/,
810  7 /*onDayOfWeek*/,
811  0 /*onDayOfMonth*/,
812  16 /*atTimeCode*/,
813  0 /*atTimeModifier (kSuffixW + minute=0)*/,
814  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
815  '-' /*letter*/,
816  },
817  // Rule Azer 1997 2015 - Oct lastSun 5:00 0 -
818  {
819  -3 /*fromYearTiny*/,
820  15 /*toYearTiny*/,
821  10 /*inMonth*/,
822  7 /*onDayOfWeek*/,
823  0 /*onDayOfMonth*/,
824  20 /*atTimeCode*/,
825  0 /*atTimeModifier (kSuffixW + minute=0)*/,
826  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
827  '-' /*letter*/,
828  },
829 
830 };
831 
832 
833 
834 const extended::ZonePolicy kPolicyAzer ACE_TIME_PROGMEM = {
835  kZoneRulesAzer /*rules*/,
836  nullptr /*letters*/,
837  2 /*numRules*/,
838  0 /*numLetters*/,
839 };
840 
841 //---------------------------------------------------------------------------
842 // Policy name: Barb
843 // Rules: 1
844 // Memory (8-bit): 15
845 // Memory (32-bit): 24
846 //---------------------------------------------------------------------------
847 
848 static const extended::ZoneRule kZoneRulesBarb[] ACE_TIME_PROGMEM = {
849  // Rule Barb 1980 only - Sep 25 2:00 0 S
850  {
851  -20 /*fromYearTiny*/,
852  -20 /*toYearTiny*/,
853  9 /*inMonth*/,
854  0 /*onDayOfWeek*/,
855  25 /*onDayOfMonth*/,
856  8 /*atTimeCode*/,
857  0 /*atTimeModifier (kSuffixW + minute=0)*/,
858  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
859  'S' /*letter*/,
860  },
861 
862 };
863 
864 
865 
866 const extended::ZonePolicy kPolicyBarb ACE_TIME_PROGMEM = {
867  kZoneRulesBarb /*rules*/,
868  nullptr /*letters*/,
869  1 /*numRules*/,
870  0 /*numLetters*/,
871 };
872 
873 //---------------------------------------------------------------------------
874 // Policy name: Belize
875 // Rules: 1
876 // Memory (8-bit): 21
877 // Memory (32-bit): 32
878 //---------------------------------------------------------------------------
879 
880 static const extended::ZoneRule kZoneRulesBelize[] ACE_TIME_PROGMEM = {
881  // Rule Belize 1983 only - Feb 12 0:00 0 CST
882  {
883  -17 /*fromYearTiny*/,
884  -17 /*toYearTiny*/,
885  2 /*inMonth*/,
886  0 /*onDayOfWeek*/,
887  12 /*onDayOfMonth*/,
888  0 /*atTimeCode*/,
889  0 /*atTimeModifier (kSuffixW + minute=0)*/,
890  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
891  0 /*letter (index to "CST")*/,
892  },
893 
894 };
895 
896 static const char* const kLettersBelize[] ACE_TIME_PROGMEM = {
897  /*0*/ "CST",
898 
899 };
900 
901 
902 const extended::ZonePolicy kPolicyBelize ACE_TIME_PROGMEM = {
903  kZoneRulesBelize /*rules*/,
904  kLettersBelize /*letters*/,
905  1 /*numRules*/,
906  1 /*numLetters*/,
907 };
908 
909 //---------------------------------------------------------------------------
910 // Policy name: Brazil
911 // Rules: 20
912 // Memory (8-bit): 186
913 // Memory (32-bit): 252
914 //---------------------------------------------------------------------------
915 
916 static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = {
917  // Rule Brazil 1998 only - Oct 11 0:00 1:00 -
918  {
919  -2 /*fromYearTiny*/,
920  -2 /*toYearTiny*/,
921  10 /*inMonth*/,
922  0 /*onDayOfWeek*/,
923  11 /*onDayOfMonth*/,
924  0 /*atTimeCode*/,
925  0 /*atTimeModifier (kSuffixW + minute=0)*/,
926  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
927  '-' /*letter*/,
928  },
929  // Rule Brazil 1999 only - Feb 21 0:00 0 -
930  {
931  -1 /*fromYearTiny*/,
932  -1 /*toYearTiny*/,
933  2 /*inMonth*/,
934  0 /*onDayOfWeek*/,
935  21 /*onDayOfMonth*/,
936  0 /*atTimeCode*/,
937  0 /*atTimeModifier (kSuffixW + minute=0)*/,
938  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
939  '-' /*letter*/,
940  },
941  // Rule Brazil 1999 only - Oct 3 0:00 1:00 -
942  {
943  -1 /*fromYearTiny*/,
944  -1 /*toYearTiny*/,
945  10 /*inMonth*/,
946  0 /*onDayOfWeek*/,
947  3 /*onDayOfMonth*/,
948  0 /*atTimeCode*/,
949  0 /*atTimeModifier (kSuffixW + minute=0)*/,
950  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
951  '-' /*letter*/,
952  },
953  // Rule Brazil 2000 only - Feb 27 0:00 0 -
954  {
955  0 /*fromYearTiny*/,
956  0 /*toYearTiny*/,
957  2 /*inMonth*/,
958  0 /*onDayOfWeek*/,
959  27 /*onDayOfMonth*/,
960  0 /*atTimeCode*/,
961  0 /*atTimeModifier (kSuffixW + minute=0)*/,
962  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
963  '-' /*letter*/,
964  },
965  // Rule Brazil 2000 2001 - Oct Sun>=8 0:00 1:00 -
966  {
967  0 /*fromYearTiny*/,
968  1 /*toYearTiny*/,
969  10 /*inMonth*/,
970  7 /*onDayOfWeek*/,
971  8 /*onDayOfMonth*/,
972  0 /*atTimeCode*/,
973  0 /*atTimeModifier (kSuffixW + minute=0)*/,
974  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
975  '-' /*letter*/,
976  },
977  // Rule Brazil 2001 2006 - Feb Sun>=15 0:00 0 -
978  {
979  1 /*fromYearTiny*/,
980  6 /*toYearTiny*/,
981  2 /*inMonth*/,
982  7 /*onDayOfWeek*/,
983  15 /*onDayOfMonth*/,
984  0 /*atTimeCode*/,
985  0 /*atTimeModifier (kSuffixW + minute=0)*/,
986  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
987  '-' /*letter*/,
988  },
989  // Rule Brazil 2002 only - Nov 3 0:00 1:00 -
990  {
991  2 /*fromYearTiny*/,
992  2 /*toYearTiny*/,
993  11 /*inMonth*/,
994  0 /*onDayOfWeek*/,
995  3 /*onDayOfMonth*/,
996  0 /*atTimeCode*/,
997  0 /*atTimeModifier (kSuffixW + minute=0)*/,
998  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
999  '-' /*letter*/,
1000  },
1001  // Rule Brazil 2003 only - Oct 19 0:00 1:00 -
1002  {
1003  3 /*fromYearTiny*/,
1004  3 /*toYearTiny*/,
1005  10 /*inMonth*/,
1006  0 /*onDayOfWeek*/,
1007  19 /*onDayOfMonth*/,
1008  0 /*atTimeCode*/,
1009  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1010  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1011  '-' /*letter*/,
1012  },
1013  // Rule Brazil 2004 only - Nov 2 0:00 1:00 -
1014  {
1015  4 /*fromYearTiny*/,
1016  4 /*toYearTiny*/,
1017  11 /*inMonth*/,
1018  0 /*onDayOfWeek*/,
1019  2 /*onDayOfMonth*/,
1020  0 /*atTimeCode*/,
1021  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1022  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1023  '-' /*letter*/,
1024  },
1025  // Rule Brazil 2005 only - Oct 16 0:00 1:00 -
1026  {
1027  5 /*fromYearTiny*/,
1028  5 /*toYearTiny*/,
1029  10 /*inMonth*/,
1030  0 /*onDayOfWeek*/,
1031  16 /*onDayOfMonth*/,
1032  0 /*atTimeCode*/,
1033  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1034  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1035  '-' /*letter*/,
1036  },
1037  // Rule Brazil 2006 only - Nov 5 0:00 1:00 -
1038  {
1039  6 /*fromYearTiny*/,
1040  6 /*toYearTiny*/,
1041  11 /*inMonth*/,
1042  0 /*onDayOfWeek*/,
1043  5 /*onDayOfMonth*/,
1044  0 /*atTimeCode*/,
1045  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1046  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1047  '-' /*letter*/,
1048  },
1049  // Rule Brazil 2007 only - Feb 25 0:00 0 -
1050  {
1051  7 /*fromYearTiny*/,
1052  7 /*toYearTiny*/,
1053  2 /*inMonth*/,
1054  0 /*onDayOfWeek*/,
1055  25 /*onDayOfMonth*/,
1056  0 /*atTimeCode*/,
1057  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1058  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1059  '-' /*letter*/,
1060  },
1061  // Rule Brazil 2007 only - Oct Sun>=8 0:00 1:00 -
1062  {
1063  7 /*fromYearTiny*/,
1064  7 /*toYearTiny*/,
1065  10 /*inMonth*/,
1066  7 /*onDayOfWeek*/,
1067  8 /*onDayOfMonth*/,
1068  0 /*atTimeCode*/,
1069  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1070  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1071  '-' /*letter*/,
1072  },
1073  // Rule Brazil 2008 2017 - Oct Sun>=15 0:00 1:00 -
1074  {
1075  8 /*fromYearTiny*/,
1076  17 /*toYearTiny*/,
1077  10 /*inMonth*/,
1078  7 /*onDayOfWeek*/,
1079  15 /*onDayOfMonth*/,
1080  0 /*atTimeCode*/,
1081  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1082  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1083  '-' /*letter*/,
1084  },
1085  // Rule Brazil 2008 2011 - Feb Sun>=15 0:00 0 -
1086  {
1087  8 /*fromYearTiny*/,
1088  11 /*toYearTiny*/,
1089  2 /*inMonth*/,
1090  7 /*onDayOfWeek*/,
1091  15 /*onDayOfMonth*/,
1092  0 /*atTimeCode*/,
1093  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1094  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1095  '-' /*letter*/,
1096  },
1097  // Rule Brazil 2012 only - Feb Sun>=22 0:00 0 -
1098  {
1099  12 /*fromYearTiny*/,
1100  12 /*toYearTiny*/,
1101  2 /*inMonth*/,
1102  7 /*onDayOfWeek*/,
1103  22 /*onDayOfMonth*/,
1104  0 /*atTimeCode*/,
1105  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1106  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1107  '-' /*letter*/,
1108  },
1109  // Rule Brazil 2013 2014 - Feb Sun>=15 0:00 0 -
1110  {
1111  13 /*fromYearTiny*/,
1112  14 /*toYearTiny*/,
1113  2 /*inMonth*/,
1114  7 /*onDayOfWeek*/,
1115  15 /*onDayOfMonth*/,
1116  0 /*atTimeCode*/,
1117  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1118  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1119  '-' /*letter*/,
1120  },
1121  // Rule Brazil 2015 only - Feb Sun>=22 0:00 0 -
1122  {
1123  15 /*fromYearTiny*/,
1124  15 /*toYearTiny*/,
1125  2 /*inMonth*/,
1126  7 /*onDayOfWeek*/,
1127  22 /*onDayOfMonth*/,
1128  0 /*atTimeCode*/,
1129  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1130  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1131  '-' /*letter*/,
1132  },
1133  // Rule Brazil 2016 2019 - Feb Sun>=15 0:00 0 -
1134  {
1135  16 /*fromYearTiny*/,
1136  19 /*toYearTiny*/,
1137  2 /*inMonth*/,
1138  7 /*onDayOfWeek*/,
1139  15 /*onDayOfMonth*/,
1140  0 /*atTimeCode*/,
1141  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1142  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1143  '-' /*letter*/,
1144  },
1145  // Rule Brazil 2018 only - Nov Sun>=1 0:00 1:00 -
1146  {
1147  18 /*fromYearTiny*/,
1148  18 /*toYearTiny*/,
1149  11 /*inMonth*/,
1150  7 /*onDayOfWeek*/,
1151  1 /*onDayOfMonth*/,
1152  0 /*atTimeCode*/,
1153  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1154  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1155  '-' /*letter*/,
1156  },
1157 
1158 };
1159 
1160 
1161 
1162 const extended::ZonePolicy kPolicyBrazil ACE_TIME_PROGMEM = {
1163  kZoneRulesBrazil /*rules*/,
1164  nullptr /*letters*/,
1165  20 /*numRules*/,
1166  0 /*numLetters*/,
1167 };
1168 
1169 //---------------------------------------------------------------------------
1170 // Policy name: C_Eur
1171 // Rules: 3
1172 // Memory (8-bit): 33
1173 // Memory (32-bit): 48
1174 //---------------------------------------------------------------------------
1175 
1176 static const extended::ZoneRule kZoneRulesC_Eur[] ACE_TIME_PROGMEM = {
1177  // Rule C-Eur 1979 1995 - Sep lastSun 2:00s 0 -
1178  {
1179  -21 /*fromYearTiny*/,
1180  -5 /*toYearTiny*/,
1181  9 /*inMonth*/,
1182  7 /*onDayOfWeek*/,
1183  0 /*onDayOfMonth*/,
1184  8 /*atTimeCode*/,
1185  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1186  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1187  '-' /*letter*/,
1188  },
1189  // Rule C-Eur 1981 max - Mar lastSun 2:00s 1:00 S
1190  {
1191  -19 /*fromYearTiny*/,
1192  126 /*toYearTiny*/,
1193  3 /*inMonth*/,
1194  7 /*onDayOfWeek*/,
1195  0 /*onDayOfMonth*/,
1196  8 /*atTimeCode*/,
1197  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1198  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1199  'S' /*letter*/,
1200  },
1201  // Rule C-Eur 1996 max - Oct lastSun 2:00s 0 -
1202  {
1203  -4 /*fromYearTiny*/,
1204  126 /*toYearTiny*/,
1205  10 /*inMonth*/,
1206  7 /*onDayOfWeek*/,
1207  0 /*onDayOfMonth*/,
1208  8 /*atTimeCode*/,
1209  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1210  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1211  '-' /*letter*/,
1212  },
1213 
1214 };
1215 
1216 
1217 
1218 const extended::ZonePolicy kPolicyC_Eur ACE_TIME_PROGMEM = {
1219  kZoneRulesC_Eur /*rules*/,
1220  nullptr /*letters*/,
1221  3 /*numRules*/,
1222  0 /*numLetters*/,
1223 };
1224 
1225 //---------------------------------------------------------------------------
1226 // Policy name: CO
1227 // Rules: 1
1228 // Memory (8-bit): 15
1229 // Memory (32-bit): 24
1230 //---------------------------------------------------------------------------
1231 
1232 static const extended::ZoneRule kZoneRulesCO[] ACE_TIME_PROGMEM = {
1233  // Rule CO 1993 only - Apr 4 0:00 0 -
1234  {
1235  -7 /*fromYearTiny*/,
1236  -7 /*toYearTiny*/,
1237  4 /*inMonth*/,
1238  0 /*onDayOfWeek*/,
1239  4 /*onDayOfMonth*/,
1240  0 /*atTimeCode*/,
1241  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1242  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1243  '-' /*letter*/,
1244  },
1245 
1246 };
1247 
1248 
1249 
1250 const extended::ZonePolicy kPolicyCO ACE_TIME_PROGMEM = {
1251  kZoneRulesCO /*rules*/,
1252  nullptr /*letters*/,
1253  1 /*numRules*/,
1254  0 /*numLetters*/,
1255 };
1256 
1257 //---------------------------------------------------------------------------
1258 // Policy name: CR
1259 // Rules: 1
1260 // Memory (8-bit): 15
1261 // Memory (32-bit): 24
1262 //---------------------------------------------------------------------------
1263 
1264 static const extended::ZoneRule kZoneRulesCR[] ACE_TIME_PROGMEM = {
1265  // Rule CR 1992 only - Mar 15 0:00 0 S
1266  {
1267  -8 /*fromYearTiny*/,
1268  -8 /*toYearTiny*/,
1269  3 /*inMonth*/,
1270  0 /*onDayOfWeek*/,
1271  15 /*onDayOfMonth*/,
1272  0 /*atTimeCode*/,
1273  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1274  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1275  'S' /*letter*/,
1276  },
1277 
1278 };
1279 
1280 
1281 
1282 const extended::ZonePolicy kPolicyCR ACE_TIME_PROGMEM = {
1283  kZoneRulesCR /*rules*/,
1284  nullptr /*letters*/,
1285  1 /*numRules*/,
1286  0 /*numLetters*/,
1287 };
1288 
1289 //---------------------------------------------------------------------------
1290 // Policy name: Canada
1291 // Rules: 5
1292 // Memory (8-bit): 51
1293 // Memory (32-bit): 72
1294 //---------------------------------------------------------------------------
1295 
1296 static const extended::ZoneRule kZoneRulesCanada[] ACE_TIME_PROGMEM = {
1297  // Rule Canada 1974 1986 - Apr lastSun 2:00 1:00 D
1298  {
1299  -26 /*fromYearTiny*/,
1300  -14 /*toYearTiny*/,
1301  4 /*inMonth*/,
1302  7 /*onDayOfWeek*/,
1303  0 /*onDayOfMonth*/,
1304  8 /*atTimeCode*/,
1305  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1306  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1307  'D' /*letter*/,
1308  },
1309  // Rule Canada 1974 2006 - Oct lastSun 2:00 0 S
1310  {
1311  -26 /*fromYearTiny*/,
1312  6 /*toYearTiny*/,
1313  10 /*inMonth*/,
1314  7 /*onDayOfWeek*/,
1315  0 /*onDayOfMonth*/,
1316  8 /*atTimeCode*/,
1317  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1318  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1319  'S' /*letter*/,
1320  },
1321  // Rule Canada 1987 2006 - Apr Sun>=1 2:00 1:00 D
1322  {
1323  -13 /*fromYearTiny*/,
1324  6 /*toYearTiny*/,
1325  4 /*inMonth*/,
1326  7 /*onDayOfWeek*/,
1327  1 /*onDayOfMonth*/,
1328  8 /*atTimeCode*/,
1329  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1330  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1331  'D' /*letter*/,
1332  },
1333  // Rule Canada 2007 max - Mar Sun>=8 2:00 1:00 D
1334  {
1335  7 /*fromYearTiny*/,
1336  126 /*toYearTiny*/,
1337  3 /*inMonth*/,
1338  7 /*onDayOfWeek*/,
1339  8 /*onDayOfMonth*/,
1340  8 /*atTimeCode*/,
1341  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1342  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1343  'D' /*letter*/,
1344  },
1345  // Rule Canada 2007 max - Nov Sun>=1 2:00 0 S
1346  {
1347  7 /*fromYearTiny*/,
1348  126 /*toYearTiny*/,
1349  11 /*inMonth*/,
1350  7 /*onDayOfWeek*/,
1351  1 /*onDayOfMonth*/,
1352  8 /*atTimeCode*/,
1353  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1354  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1355  'S' /*letter*/,
1356  },
1357 
1358 };
1359 
1360 
1361 
1362 const extended::ZonePolicy kPolicyCanada ACE_TIME_PROGMEM = {
1363  kZoneRulesCanada /*rules*/,
1364  nullptr /*letters*/,
1365  5 /*numRules*/,
1366  0 /*numLetters*/,
1367 };
1368 
1369 //---------------------------------------------------------------------------
1370 // Policy name: Chatham
1371 // Rules: 5
1372 // Memory (8-bit): 51
1373 // Memory (32-bit): 72
1374 //---------------------------------------------------------------------------
1375 
1376 static const extended::ZoneRule kZoneRulesChatham[] ACE_TIME_PROGMEM = {
1377  // Rule Chatham 1989 only - Oct Sun>=8 2:45s 1:00 -
1378  {
1379  -11 /*fromYearTiny*/,
1380  -11 /*toYearTiny*/,
1381  10 /*inMonth*/,
1382  7 /*onDayOfWeek*/,
1383  8 /*onDayOfMonth*/,
1384  11 /*atTimeCode*/,
1385  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1386  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1387  '-' /*letter*/,
1388  },
1389  // Rule Chatham 1990 2006 - Oct Sun>=1 2:45s 1:00 -
1390  {
1391  -10 /*fromYearTiny*/,
1392  6 /*toYearTiny*/,
1393  10 /*inMonth*/,
1394  7 /*onDayOfWeek*/,
1395  1 /*onDayOfMonth*/,
1396  11 /*atTimeCode*/,
1397  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1398  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1399  '-' /*letter*/,
1400  },
1401  // Rule Chatham 1990 2007 - Mar Sun>=15 2:45s 0 -
1402  {
1403  -10 /*fromYearTiny*/,
1404  7 /*toYearTiny*/,
1405  3 /*inMonth*/,
1406  7 /*onDayOfWeek*/,
1407  15 /*onDayOfMonth*/,
1408  11 /*atTimeCode*/,
1409  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1410  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1411  '-' /*letter*/,
1412  },
1413  // Rule Chatham 2007 max - Sep lastSun 2:45s 1:00 -
1414  {
1415  7 /*fromYearTiny*/,
1416  126 /*toYearTiny*/,
1417  9 /*inMonth*/,
1418  7 /*onDayOfWeek*/,
1419  0 /*onDayOfMonth*/,
1420  11 /*atTimeCode*/,
1421  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1422  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1423  '-' /*letter*/,
1424  },
1425  // Rule Chatham 2008 max - Apr Sun>=1 2:45s 0 -
1426  {
1427  8 /*fromYearTiny*/,
1428  126 /*toYearTiny*/,
1429  4 /*inMonth*/,
1430  7 /*onDayOfWeek*/,
1431  1 /*onDayOfMonth*/,
1432  11 /*atTimeCode*/,
1433  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1434  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1435  '-' /*letter*/,
1436  },
1437 
1438 };
1439 
1440 
1441 
1442 const extended::ZonePolicy kPolicyChatham ACE_TIME_PROGMEM = {
1443  kZoneRulesChatham /*rules*/,
1444  nullptr /*letters*/,
1445  5 /*numRules*/,
1446  0 /*numLetters*/,
1447 };
1448 
1449 //---------------------------------------------------------------------------
1450 // Policy name: Chile
1451 // Rules: 15
1452 // Memory (8-bit): 141
1453 // Memory (32-bit): 192
1454 //---------------------------------------------------------------------------
1455 
1456 static const extended::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = {
1457  // Rule Chile 1998 only - Sep 27 4:00u 1:00 -
1458  {
1459  -2 /*fromYearTiny*/,
1460  -2 /*toYearTiny*/,
1461  9 /*inMonth*/,
1462  0 /*onDayOfWeek*/,
1463  27 /*onDayOfMonth*/,
1464  16 /*atTimeCode*/,
1465  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1466  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1467  '-' /*letter*/,
1468  },
1469  // Rule Chile 1999 only - Apr 4 3:00u 0 -
1470  {
1471  -1 /*fromYearTiny*/,
1472  -1 /*toYearTiny*/,
1473  4 /*inMonth*/,
1474  0 /*onDayOfWeek*/,
1475  4 /*onDayOfMonth*/,
1476  12 /*atTimeCode*/,
1477  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1478  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1479  '-' /*letter*/,
1480  },
1481  // Rule Chile 1999 2010 - Oct Sun>=9 4:00u 1:00 -
1482  {
1483  -1 /*fromYearTiny*/,
1484  10 /*toYearTiny*/,
1485  10 /*inMonth*/,
1486  7 /*onDayOfWeek*/,
1487  9 /*onDayOfMonth*/,
1488  16 /*atTimeCode*/,
1489  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1490  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1491  '-' /*letter*/,
1492  },
1493  // Rule Chile 2000 2007 - Mar Sun>=9 3:00u 0 -
1494  {
1495  0 /*fromYearTiny*/,
1496  7 /*toYearTiny*/,
1497  3 /*inMonth*/,
1498  7 /*onDayOfWeek*/,
1499  9 /*onDayOfMonth*/,
1500  12 /*atTimeCode*/,
1501  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1502  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1503  '-' /*letter*/,
1504  },
1505  // Rule Chile 2008 only - Mar 30 3:00u 0 -
1506  {
1507  8 /*fromYearTiny*/,
1508  8 /*toYearTiny*/,
1509  3 /*inMonth*/,
1510  0 /*onDayOfWeek*/,
1511  30 /*onDayOfMonth*/,
1512  12 /*atTimeCode*/,
1513  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1514  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1515  '-' /*letter*/,
1516  },
1517  // Rule Chile 2009 only - Mar Sun>=9 3:00u 0 -
1518  {
1519  9 /*fromYearTiny*/,
1520  9 /*toYearTiny*/,
1521  3 /*inMonth*/,
1522  7 /*onDayOfWeek*/,
1523  9 /*onDayOfMonth*/,
1524  12 /*atTimeCode*/,
1525  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1526  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1527  '-' /*letter*/,
1528  },
1529  // Rule Chile 2010 only - Apr Sun>=1 3:00u 0 -
1530  {
1531  10 /*fromYearTiny*/,
1532  10 /*toYearTiny*/,
1533  4 /*inMonth*/,
1534  7 /*onDayOfWeek*/,
1535  1 /*onDayOfMonth*/,
1536  12 /*atTimeCode*/,
1537  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1538  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1539  '-' /*letter*/,
1540  },
1541  // Rule Chile 2011 only - May Sun>=2 3:00u 0 -
1542  {
1543  11 /*fromYearTiny*/,
1544  11 /*toYearTiny*/,
1545  5 /*inMonth*/,
1546  7 /*onDayOfWeek*/,
1547  2 /*onDayOfMonth*/,
1548  12 /*atTimeCode*/,
1549  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1550  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1551  '-' /*letter*/,
1552  },
1553  // Rule Chile 2011 only - Aug Sun>=16 4:00u 1:00 -
1554  {
1555  11 /*fromYearTiny*/,
1556  11 /*toYearTiny*/,
1557  8 /*inMonth*/,
1558  7 /*onDayOfWeek*/,
1559  16 /*onDayOfMonth*/,
1560  16 /*atTimeCode*/,
1561  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1562  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1563  '-' /*letter*/,
1564  },
1565  // Rule Chile 2012 2014 - Apr Sun>=23 3:00u 0 -
1566  {
1567  12 /*fromYearTiny*/,
1568  14 /*toYearTiny*/,
1569  4 /*inMonth*/,
1570  7 /*onDayOfWeek*/,
1571  23 /*onDayOfMonth*/,
1572  12 /*atTimeCode*/,
1573  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1574  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1575  '-' /*letter*/,
1576  },
1577  // Rule Chile 2012 2014 - Sep Sun>=2 4:00u 1:00 -
1578  {
1579  12 /*fromYearTiny*/,
1580  14 /*toYearTiny*/,
1581  9 /*inMonth*/,
1582  7 /*onDayOfWeek*/,
1583  2 /*onDayOfMonth*/,
1584  16 /*atTimeCode*/,
1585  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1586  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1587  '-' /*letter*/,
1588  },
1589  // Rule Chile 2016 2018 - May Sun>=9 3:00u 0 -
1590  {
1591  16 /*fromYearTiny*/,
1592  18 /*toYearTiny*/,
1593  5 /*inMonth*/,
1594  7 /*onDayOfWeek*/,
1595  9 /*onDayOfMonth*/,
1596  12 /*atTimeCode*/,
1597  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1598  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1599  '-' /*letter*/,
1600  },
1601  // Rule Chile 2016 2018 - Aug Sun>=9 4:00u 1:00 -
1602  {
1603  16 /*fromYearTiny*/,
1604  18 /*toYearTiny*/,
1605  8 /*inMonth*/,
1606  7 /*onDayOfWeek*/,
1607  9 /*onDayOfMonth*/,
1608  16 /*atTimeCode*/,
1609  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1610  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1611  '-' /*letter*/,
1612  },
1613  // Rule Chile 2019 max - Apr Sun>=2 3:00u 0 -
1614  {
1615  19 /*fromYearTiny*/,
1616  126 /*toYearTiny*/,
1617  4 /*inMonth*/,
1618  7 /*onDayOfWeek*/,
1619  2 /*onDayOfMonth*/,
1620  12 /*atTimeCode*/,
1621  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1622  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1623  '-' /*letter*/,
1624  },
1625  // Rule Chile 2019 max - Sep Sun>=2 4:00u 1:00 -
1626  {
1627  19 /*fromYearTiny*/,
1628  126 /*toYearTiny*/,
1629  9 /*inMonth*/,
1630  7 /*onDayOfWeek*/,
1631  2 /*onDayOfMonth*/,
1632  16 /*atTimeCode*/,
1633  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1634  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1635  '-' /*letter*/,
1636  },
1637 
1638 };
1639 
1640 
1641 
1642 const extended::ZonePolicy kPolicyChile ACE_TIME_PROGMEM = {
1643  kZoneRulesChile /*rules*/,
1644  nullptr /*letters*/,
1645  15 /*numRules*/,
1646  0 /*numLetters*/,
1647 };
1648 
1649 //---------------------------------------------------------------------------
1650 // Policy name: Cook
1651 // Rules: 1
1652 // Memory (8-bit): 15
1653 // Memory (32-bit): 24
1654 //---------------------------------------------------------------------------
1655 
1656 static const extended::ZoneRule kZoneRulesCook[] ACE_TIME_PROGMEM = {
1657  // Rule Cook 1979 1991 - Mar Sun>=1 0:00 0 -
1658  {
1659  -21 /*fromYearTiny*/,
1660  -9 /*toYearTiny*/,
1661  3 /*inMonth*/,
1662  7 /*onDayOfWeek*/,
1663  1 /*onDayOfMonth*/,
1664  0 /*atTimeCode*/,
1665  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1666  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1667  '-' /*letter*/,
1668  },
1669 
1670 };
1671 
1672 
1673 
1674 const extended::ZonePolicy kPolicyCook ACE_TIME_PROGMEM = {
1675  kZoneRulesCook /*rules*/,
1676  nullptr /*letters*/,
1677  1 /*numRules*/,
1678  0 /*numLetters*/,
1679 };
1680 
1681 //---------------------------------------------------------------------------
1682 // Policy name: Cuba
1683 // Rules: 14
1684 // Memory (8-bit): 132
1685 // Memory (32-bit): 180
1686 //---------------------------------------------------------------------------
1687 
1688 static const extended::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = {
1689  // Rule Cuba 1997 only - Oct 12 0:00s 0 S
1690  {
1691  -3 /*fromYearTiny*/,
1692  -3 /*toYearTiny*/,
1693  10 /*inMonth*/,
1694  0 /*onDayOfWeek*/,
1695  12 /*onDayOfMonth*/,
1696  0 /*atTimeCode*/,
1697  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1698  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1699  'S' /*letter*/,
1700  },
1701  // Rule Cuba 1998 1999 - Mar lastSun 0:00s 1:00 D
1702  {
1703  -2 /*fromYearTiny*/,
1704  -1 /*toYearTiny*/,
1705  3 /*inMonth*/,
1706  7 /*onDayOfWeek*/,
1707  0 /*onDayOfMonth*/,
1708  0 /*atTimeCode*/,
1709  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1710  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1711  'D' /*letter*/,
1712  },
1713  // Rule Cuba 1998 2003 - Oct lastSun 0:00s 0 S
1714  {
1715  -2 /*fromYearTiny*/,
1716  3 /*toYearTiny*/,
1717  10 /*inMonth*/,
1718  7 /*onDayOfWeek*/,
1719  0 /*onDayOfMonth*/,
1720  0 /*atTimeCode*/,
1721  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1722  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1723  'S' /*letter*/,
1724  },
1725  // Rule Cuba 2000 2003 - Apr Sun>=1 0:00s 1:00 D
1726  {
1727  0 /*fromYearTiny*/,
1728  3 /*toYearTiny*/,
1729  4 /*inMonth*/,
1730  7 /*onDayOfWeek*/,
1731  1 /*onDayOfMonth*/,
1732  0 /*atTimeCode*/,
1733  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1734  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1735  'D' /*letter*/,
1736  },
1737  // Rule Cuba 2004 only - Mar lastSun 0:00s 1:00 D
1738  {
1739  4 /*fromYearTiny*/,
1740  4 /*toYearTiny*/,
1741  3 /*inMonth*/,
1742  7 /*onDayOfWeek*/,
1743  0 /*onDayOfMonth*/,
1744  0 /*atTimeCode*/,
1745  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1746  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1747  'D' /*letter*/,
1748  },
1749  // Rule Cuba 2006 2010 - Oct lastSun 0:00s 0 S
1750  {
1751  6 /*fromYearTiny*/,
1752  10 /*toYearTiny*/,
1753  10 /*inMonth*/,
1754  7 /*onDayOfWeek*/,
1755  0 /*onDayOfMonth*/,
1756  0 /*atTimeCode*/,
1757  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1758  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1759  'S' /*letter*/,
1760  },
1761  // Rule Cuba 2007 only - Mar Sun>=8 0:00s 1:00 D
1762  {
1763  7 /*fromYearTiny*/,
1764  7 /*toYearTiny*/,
1765  3 /*inMonth*/,
1766  7 /*onDayOfWeek*/,
1767  8 /*onDayOfMonth*/,
1768  0 /*atTimeCode*/,
1769  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1770  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1771  'D' /*letter*/,
1772  },
1773  // Rule Cuba 2008 only - Mar Sun>=15 0:00s 1:00 D
1774  {
1775  8 /*fromYearTiny*/,
1776  8 /*toYearTiny*/,
1777  3 /*inMonth*/,
1778  7 /*onDayOfWeek*/,
1779  15 /*onDayOfMonth*/,
1780  0 /*atTimeCode*/,
1781  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1782  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1783  'D' /*letter*/,
1784  },
1785  // Rule Cuba 2009 2010 - Mar Sun>=8 0:00s 1:00 D
1786  {
1787  9 /*fromYearTiny*/,
1788  10 /*toYearTiny*/,
1789  3 /*inMonth*/,
1790  7 /*onDayOfWeek*/,
1791  8 /*onDayOfMonth*/,
1792  0 /*atTimeCode*/,
1793  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1794  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1795  'D' /*letter*/,
1796  },
1797  // Rule Cuba 2011 only - Mar Sun>=15 0:00s 1:00 D
1798  {
1799  11 /*fromYearTiny*/,
1800  11 /*toYearTiny*/,
1801  3 /*inMonth*/,
1802  7 /*onDayOfWeek*/,
1803  15 /*onDayOfMonth*/,
1804  0 /*atTimeCode*/,
1805  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1806  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1807  'D' /*letter*/,
1808  },
1809  // Rule Cuba 2011 only - Nov 13 0:00s 0 S
1810  {
1811  11 /*fromYearTiny*/,
1812  11 /*toYearTiny*/,
1813  11 /*inMonth*/,
1814  0 /*onDayOfWeek*/,
1815  13 /*onDayOfMonth*/,
1816  0 /*atTimeCode*/,
1817  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1818  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1819  'S' /*letter*/,
1820  },
1821  // Rule Cuba 2012 only - Apr 1 0:00s 1:00 D
1822  {
1823  12 /*fromYearTiny*/,
1824  12 /*toYearTiny*/,
1825  4 /*inMonth*/,
1826  0 /*onDayOfWeek*/,
1827  1 /*onDayOfMonth*/,
1828  0 /*atTimeCode*/,
1829  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1830  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1831  'D' /*letter*/,
1832  },
1833  // Rule Cuba 2012 max - Nov Sun>=1 0:00s 0 S
1834  {
1835  12 /*fromYearTiny*/,
1836  126 /*toYearTiny*/,
1837  11 /*inMonth*/,
1838  7 /*onDayOfWeek*/,
1839  1 /*onDayOfMonth*/,
1840  0 /*atTimeCode*/,
1841  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1842  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1843  'S' /*letter*/,
1844  },
1845  // Rule Cuba 2013 max - Mar Sun>=8 0:00s 1:00 D
1846  {
1847  13 /*fromYearTiny*/,
1848  126 /*toYearTiny*/,
1849  3 /*inMonth*/,
1850  7 /*onDayOfWeek*/,
1851  8 /*onDayOfMonth*/,
1852  0 /*atTimeCode*/,
1853  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1854  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1855  'D' /*letter*/,
1856  },
1857 
1858 };
1859 
1860 
1861 
1862 const extended::ZonePolicy kPolicyCuba ACE_TIME_PROGMEM = {
1863  kZoneRulesCuba /*rules*/,
1864  nullptr /*letters*/,
1865  14 /*numRules*/,
1866  0 /*numLetters*/,
1867 };
1868 
1869 //---------------------------------------------------------------------------
1870 // Policy name: Dhaka
1871 // Rules: 3
1872 // Memory (8-bit): 33
1873 // Memory (32-bit): 48
1874 //---------------------------------------------------------------------------
1875 
1876 static const extended::ZoneRule kZoneRulesDhaka[] ACE_TIME_PROGMEM = {
1877  // Anchor: Rule Dhaka 2009 only - Dec 31 24:00 0 -
1878  {
1879  -127 /*fromYearTiny*/,
1880  -127 /*toYearTiny*/,
1881  1 /*inMonth*/,
1882  0 /*onDayOfWeek*/,
1883  1 /*onDayOfMonth*/,
1884  0 /*atTimeCode*/,
1885  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1886  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1887  '-' /*letter*/,
1888  },
1889  // Rule Dhaka 2009 only - Jun 19 23:00 1:00 -
1890  {
1891  9 /*fromYearTiny*/,
1892  9 /*toYearTiny*/,
1893  6 /*inMonth*/,
1894  0 /*onDayOfWeek*/,
1895  19 /*onDayOfMonth*/,
1896  92 /*atTimeCode*/,
1897  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1898  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1899  '-' /*letter*/,
1900  },
1901  // Rule Dhaka 2009 only - Dec 31 24:00 0 -
1902  {
1903  9 /*fromYearTiny*/,
1904  9 /*toYearTiny*/,
1905  12 /*inMonth*/,
1906  0 /*onDayOfWeek*/,
1907  31 /*onDayOfMonth*/,
1908  96 /*atTimeCode*/,
1909  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1910  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1911  '-' /*letter*/,
1912  },
1913 
1914 };
1915 
1916 
1917 
1918 const extended::ZonePolicy kPolicyDhaka ACE_TIME_PROGMEM = {
1919  kZoneRulesDhaka /*rules*/,
1920  nullptr /*letters*/,
1921  3 /*numRules*/,
1922  0 /*numLetters*/,
1923 };
1924 
1925 //---------------------------------------------------------------------------
1926 // Policy name: E_EurAsia
1927 // Rules: 3
1928 // Memory (8-bit): 33
1929 // Memory (32-bit): 48
1930 //---------------------------------------------------------------------------
1931 
1932 static const extended::ZoneRule kZoneRulesE_EurAsia[] ACE_TIME_PROGMEM = {
1933  // Rule E-EurAsia 1981 max - Mar lastSun 0:00 1:00 -
1934  {
1935  -19 /*fromYearTiny*/,
1936  126 /*toYearTiny*/,
1937  3 /*inMonth*/,
1938  7 /*onDayOfWeek*/,
1939  0 /*onDayOfMonth*/,
1940  0 /*atTimeCode*/,
1941  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1942  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1943  '-' /*letter*/,
1944  },
1945  // Rule E-EurAsia 1979 1995 - Sep lastSun 0:00 0 -
1946  {
1947  -21 /*fromYearTiny*/,
1948  -5 /*toYearTiny*/,
1949  9 /*inMonth*/,
1950  7 /*onDayOfWeek*/,
1951  0 /*onDayOfMonth*/,
1952  0 /*atTimeCode*/,
1953  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1954  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1955  '-' /*letter*/,
1956  },
1957  // Rule E-EurAsia 1996 max - Oct lastSun 0:00 0 -
1958  {
1959  -4 /*fromYearTiny*/,
1960  126 /*toYearTiny*/,
1961  10 /*inMonth*/,
1962  7 /*onDayOfWeek*/,
1963  0 /*onDayOfMonth*/,
1964  0 /*atTimeCode*/,
1965  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1966  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1967  '-' /*letter*/,
1968  },
1969 
1970 };
1971 
1972 
1973 
1974 const extended::ZonePolicy kPolicyE_EurAsia ACE_TIME_PROGMEM = {
1975  kZoneRulesE_EurAsia /*rules*/,
1976  nullptr /*letters*/,
1977  3 /*numRules*/,
1978  0 /*numLetters*/,
1979 };
1980 
1981 //---------------------------------------------------------------------------
1982 // Policy name: EU
1983 // Rules: 3
1984 // Memory (8-bit): 33
1985 // Memory (32-bit): 48
1986 //---------------------------------------------------------------------------
1987 
1988 static const extended::ZoneRule kZoneRulesEU[] ACE_TIME_PROGMEM = {
1989  // Rule EU 1979 1995 - Sep lastSun 1:00u 0 -
1990  {
1991  -21 /*fromYearTiny*/,
1992  -5 /*toYearTiny*/,
1993  9 /*inMonth*/,
1994  7 /*onDayOfWeek*/,
1995  0 /*onDayOfMonth*/,
1996  4 /*atTimeCode*/,
1997  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1998  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1999  '-' /*letter*/,
2000  },
2001  // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
2002  {
2003  -19 /*fromYearTiny*/,
2004  126 /*toYearTiny*/,
2005  3 /*inMonth*/,
2006  7 /*onDayOfWeek*/,
2007  0 /*onDayOfMonth*/,
2008  4 /*atTimeCode*/,
2009  32 /*atTimeModifier (kSuffixU + minute=0)*/,
2010  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2011  'S' /*letter*/,
2012  },
2013  // Rule EU 1996 max - Oct lastSun 1:00u 0 -
2014  {
2015  -4 /*fromYearTiny*/,
2016  126 /*toYearTiny*/,
2017  10 /*inMonth*/,
2018  7 /*onDayOfWeek*/,
2019  0 /*onDayOfMonth*/,
2020  4 /*atTimeCode*/,
2021  32 /*atTimeModifier (kSuffixU + minute=0)*/,
2022  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2023  '-' /*letter*/,
2024  },
2025 
2026 };
2027 
2028 
2029 
2030 const extended::ZonePolicy kPolicyEU ACE_TIME_PROGMEM = {
2031  kZoneRulesEU /*rules*/,
2032  nullptr /*letters*/,
2033  3 /*numRules*/,
2034  0 /*numLetters*/,
2035 };
2036 
2037 //---------------------------------------------------------------------------
2038 // Policy name: EUAsia
2039 // Rules: 3
2040 // Memory (8-bit): 33
2041 // Memory (32-bit): 48
2042 //---------------------------------------------------------------------------
2043 
2044 static const extended::ZoneRule kZoneRulesEUAsia[] ACE_TIME_PROGMEM = {
2045  // Rule EUAsia 1981 max - Mar lastSun 1:00u 1:00 S
2046  {
2047  -19 /*fromYearTiny*/,
2048  126 /*toYearTiny*/,
2049  3 /*inMonth*/,
2050  7 /*onDayOfWeek*/,
2051  0 /*onDayOfMonth*/,
2052  4 /*atTimeCode*/,
2053  32 /*atTimeModifier (kSuffixU + minute=0)*/,
2054  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2055  'S' /*letter*/,
2056  },
2057  // Rule EUAsia 1979 1995 - Sep lastSun 1:00u 0 -
2058  {
2059  -21 /*fromYearTiny*/,
2060  -5 /*toYearTiny*/,
2061  9 /*inMonth*/,
2062  7 /*onDayOfWeek*/,
2063  0 /*onDayOfMonth*/,
2064  4 /*atTimeCode*/,
2065  32 /*atTimeModifier (kSuffixU + minute=0)*/,
2066  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2067  '-' /*letter*/,
2068  },
2069  // Rule EUAsia 1996 max - Oct lastSun 1:00u 0 -
2070  {
2071  -4 /*fromYearTiny*/,
2072  126 /*toYearTiny*/,
2073  10 /*inMonth*/,
2074  7 /*onDayOfWeek*/,
2075  0 /*onDayOfMonth*/,
2076  4 /*atTimeCode*/,
2077  32 /*atTimeModifier (kSuffixU + minute=0)*/,
2078  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2079  '-' /*letter*/,
2080  },
2081 
2082 };
2083 
2084 
2085 
2086 const extended::ZonePolicy kPolicyEUAsia ACE_TIME_PROGMEM = {
2087  kZoneRulesEUAsia /*rules*/,
2088  nullptr /*letters*/,
2089  3 /*numRules*/,
2090  0 /*numLetters*/,
2091 };
2092 
2093 //---------------------------------------------------------------------------
2094 // Policy name: Ecuador
2095 // Rules: 1
2096 // Memory (8-bit): 15
2097 // Memory (32-bit): 24
2098 //---------------------------------------------------------------------------
2099 
2100 static const extended::ZoneRule kZoneRulesEcuador[] ACE_TIME_PROGMEM = {
2101  // Rule Ecuador 1993 only - Feb 5 0:00 0 -
2102  {
2103  -7 /*fromYearTiny*/,
2104  -7 /*toYearTiny*/,
2105  2 /*inMonth*/,
2106  0 /*onDayOfWeek*/,
2107  5 /*onDayOfMonth*/,
2108  0 /*atTimeCode*/,
2109  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2110  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2111  '-' /*letter*/,
2112  },
2113 
2114 };
2115 
2116 
2117 
2118 const extended::ZonePolicy kPolicyEcuador ACE_TIME_PROGMEM = {
2119  kZoneRulesEcuador /*rules*/,
2120  nullptr /*letters*/,
2121  1 /*numRules*/,
2122  0 /*numLetters*/,
2123 };
2124 
2125 //---------------------------------------------------------------------------
2126 // Policy name: Egypt
2127 // Rules: 14
2128 // Memory (8-bit): 132
2129 // Memory (32-bit): 180
2130 //---------------------------------------------------------------------------
2131 
2132 static const extended::ZoneRule kZoneRulesEgypt[] ACE_TIME_PROGMEM = {
2133  // Rule Egypt 1966 1994 - Oct 1 3:00 0 -
2134  {
2135  -34 /*fromYearTiny*/,
2136  -6 /*toYearTiny*/,
2137  10 /*inMonth*/,
2138  0 /*onDayOfWeek*/,
2139  1 /*onDayOfMonth*/,
2140  12 /*atTimeCode*/,
2141  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2142  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2143  '-' /*letter*/,
2144  },
2145  // Rule Egypt 1995 2010 - Apr lastFri 0:00s 1:00 S
2146  {
2147  -5 /*fromYearTiny*/,
2148  10 /*toYearTiny*/,
2149  4 /*inMonth*/,
2150  5 /*onDayOfWeek*/,
2151  0 /*onDayOfMonth*/,
2152  0 /*atTimeCode*/,
2153  16 /*atTimeModifier (kSuffixS + minute=0)*/,
2154  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2155  'S' /*letter*/,
2156  },
2157  // Rule Egypt 1995 2005 - Sep lastThu 24:00 0 -
2158  {
2159  -5 /*fromYearTiny*/,
2160  5 /*toYearTiny*/,
2161  9 /*inMonth*/,
2162  4 /*onDayOfWeek*/,
2163  0 /*onDayOfMonth*/,
2164  96 /*atTimeCode*/,
2165  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2166  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2167  '-' /*letter*/,
2168  },
2169  // Rule Egypt 2006 only - Sep 21 24:00 0 -
2170  {
2171  6 /*fromYearTiny*/,
2172  6 /*toYearTiny*/,
2173  9 /*inMonth*/,
2174  0 /*onDayOfWeek*/,
2175  21 /*onDayOfMonth*/,
2176  96 /*atTimeCode*/,
2177  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2178  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2179  '-' /*letter*/,
2180  },
2181  // Rule Egypt 2007 only - Sep Thu>=1 24:00 0 -
2182  {
2183  7 /*fromYearTiny*/,
2184  7 /*toYearTiny*/,
2185  9 /*inMonth*/,
2186  4 /*onDayOfWeek*/,
2187  1 /*onDayOfMonth*/,
2188  96 /*atTimeCode*/,
2189  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2190  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2191  '-' /*letter*/,
2192  },
2193  // Rule Egypt 2008 only - Aug lastThu 24:00 0 -
2194  {
2195  8 /*fromYearTiny*/,
2196  8 /*toYearTiny*/,
2197  8 /*inMonth*/,
2198  4 /*onDayOfWeek*/,
2199  0 /*onDayOfMonth*/,
2200  96 /*atTimeCode*/,
2201  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2202  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2203  '-' /*letter*/,
2204  },
2205  // Rule Egypt 2009 only - Aug 20 24:00 0 -
2206  {
2207  9 /*fromYearTiny*/,
2208  9 /*toYearTiny*/,
2209  8 /*inMonth*/,
2210  0 /*onDayOfWeek*/,
2211  20 /*onDayOfMonth*/,
2212  96 /*atTimeCode*/,
2213  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2214  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2215  '-' /*letter*/,
2216  },
2217  // Rule Egypt 2010 only - Aug 10 24:00 0 -
2218  {
2219  10 /*fromYearTiny*/,
2220  10 /*toYearTiny*/,
2221  8 /*inMonth*/,
2222  0 /*onDayOfWeek*/,
2223  10 /*onDayOfMonth*/,
2224  96 /*atTimeCode*/,
2225  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2226  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2227  '-' /*letter*/,
2228  },
2229  // Rule Egypt 2010 only - Sep 9 24:00 1:00 S
2230  {
2231  10 /*fromYearTiny*/,
2232  10 /*toYearTiny*/,
2233  9 /*inMonth*/,
2234  0 /*onDayOfWeek*/,
2235  9 /*onDayOfMonth*/,
2236  96 /*atTimeCode*/,
2237  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2238  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2239  'S' /*letter*/,
2240  },
2241  // Rule Egypt 2010 only - Sep lastThu 24:00 0 -
2242  {
2243  10 /*fromYearTiny*/,
2244  10 /*toYearTiny*/,
2245  9 /*inMonth*/,
2246  4 /*onDayOfWeek*/,
2247  0 /*onDayOfMonth*/,
2248  96 /*atTimeCode*/,
2249  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2250  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2251  '-' /*letter*/,
2252  },
2253  // Rule Egypt 2014 only - May 15 24:00 1:00 S
2254  {
2255  14 /*fromYearTiny*/,
2256  14 /*toYearTiny*/,
2257  5 /*inMonth*/,
2258  0 /*onDayOfWeek*/,
2259  15 /*onDayOfMonth*/,
2260  96 /*atTimeCode*/,
2261  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2262  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2263  'S' /*letter*/,
2264  },
2265  // Rule Egypt 2014 only - Jun 26 24:00 0 -
2266  {
2267  14 /*fromYearTiny*/,
2268  14 /*toYearTiny*/,
2269  6 /*inMonth*/,
2270  0 /*onDayOfWeek*/,
2271  26 /*onDayOfMonth*/,
2272  96 /*atTimeCode*/,
2273  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2274  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2275  '-' /*letter*/,
2276  },
2277  // Rule Egypt 2014 only - Jul 31 24:00 1:00 S
2278  {
2279  14 /*fromYearTiny*/,
2280  14 /*toYearTiny*/,
2281  7 /*inMonth*/,
2282  0 /*onDayOfWeek*/,
2283  31 /*onDayOfMonth*/,
2284  96 /*atTimeCode*/,
2285  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2286  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2287  'S' /*letter*/,
2288  },
2289  // Rule Egypt 2014 only - Sep lastThu 24:00 0 -
2290  {
2291  14 /*fromYearTiny*/,
2292  14 /*toYearTiny*/,
2293  9 /*inMonth*/,
2294  4 /*onDayOfWeek*/,
2295  0 /*onDayOfMonth*/,
2296  96 /*atTimeCode*/,
2297  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2298  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2299  '-' /*letter*/,
2300  },
2301 
2302 };
2303 
2304 
2305 
2306 const extended::ZonePolicy kPolicyEgypt ACE_TIME_PROGMEM = {
2307  kZoneRulesEgypt /*rules*/,
2308  nullptr /*letters*/,
2309  14 /*numRules*/,
2310  0 /*numLetters*/,
2311 };
2312 
2313 //---------------------------------------------------------------------------
2314 // Policy name: Eire
2315 // Rules: 3
2316 // Memory (8-bit): 33
2317 // Memory (32-bit): 48
2318 //---------------------------------------------------------------------------
2319 
2320 static const extended::ZoneRule kZoneRulesEire[] ACE_TIME_PROGMEM = {
2321  // Rule Eire 1981 max - Mar lastSun 1:00u 0 -
2322  {
2323  -19 /*fromYearTiny*/,
2324  126 /*toYearTiny*/,
2325  3 /*inMonth*/,
2326  7 /*onDayOfWeek*/,
2327  0 /*onDayOfMonth*/,
2328  4 /*atTimeCode*/,
2329  32 /*atTimeModifier (kSuffixU + minute=0)*/,
2330  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2331  '-' /*letter*/,
2332  },
2333  // Rule Eire 1990 1995 - Oct Sun>=22 1:00u -1:00 -
2334  {
2335  -10 /*fromYearTiny*/,
2336  -5 /*toYearTiny*/,
2337  10 /*inMonth*/,
2338  7 /*onDayOfWeek*/,
2339  22 /*onDayOfMonth*/,
2340  4 /*atTimeCode*/,
2341  32 /*atTimeModifier (kSuffixU + minute=0)*/,
2342  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
2343  '-' /*letter*/,
2344  },
2345  // Rule Eire 1996 max - Oct lastSun 1:00u -1:00 -
2346  {
2347  -4 /*fromYearTiny*/,
2348  126 /*toYearTiny*/,
2349  10 /*inMonth*/,
2350  7 /*onDayOfWeek*/,
2351  0 /*onDayOfMonth*/,
2352  4 /*atTimeCode*/,
2353  32 /*atTimeModifier (kSuffixU + minute=0)*/,
2354  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
2355  '-' /*letter*/,
2356  },
2357 
2358 };
2359 
2360 
2361 
2362 const extended::ZonePolicy kPolicyEire ACE_TIME_PROGMEM = {
2363  kZoneRulesEire /*rules*/,
2364  nullptr /*letters*/,
2365  3 /*numRules*/,
2366  0 /*numLetters*/,
2367 };
2368 
2369 //---------------------------------------------------------------------------
2370 // Policy name: Falk
2371 // Rules: 5
2372 // Memory (8-bit): 51
2373 // Memory (32-bit): 72
2374 //---------------------------------------------------------------------------
2375 
2376 static const extended::ZoneRule kZoneRulesFalk[] ACE_TIME_PROGMEM = {
2377  // Rule Falk 1984 1985 - Apr lastSun 0:00 0 -
2378  {
2379  -16 /*fromYearTiny*/,
2380  -15 /*toYearTiny*/,
2381  4 /*inMonth*/,
2382  7 /*onDayOfWeek*/,
2383  0 /*onDayOfMonth*/,
2384  0 /*atTimeCode*/,
2385  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2386  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2387  '-' /*letter*/,
2388  },
2389  // Rule Falk 1985 2000 - Sep Sun>=9 0:00 1:00 -
2390  {
2391  -15 /*fromYearTiny*/,
2392  0 /*toYearTiny*/,
2393  9 /*inMonth*/,
2394  7 /*onDayOfWeek*/,
2395  9 /*onDayOfMonth*/,
2396  0 /*atTimeCode*/,
2397  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2398  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2399  '-' /*letter*/,
2400  },
2401  // Rule Falk 1986 2000 - Apr Sun>=16 0:00 0 -
2402  {
2403  -14 /*fromYearTiny*/,
2404  0 /*toYearTiny*/,
2405  4 /*inMonth*/,
2406  7 /*onDayOfWeek*/,
2407  16 /*onDayOfMonth*/,
2408  0 /*atTimeCode*/,
2409  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2410  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2411  '-' /*letter*/,
2412  },
2413  // Rule Falk 2001 2010 - Apr Sun>=15 2:00 0 -
2414  {
2415  1 /*fromYearTiny*/,
2416  10 /*toYearTiny*/,
2417  4 /*inMonth*/,
2418  7 /*onDayOfWeek*/,
2419  15 /*onDayOfMonth*/,
2420  8 /*atTimeCode*/,
2421  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2422  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2423  '-' /*letter*/,
2424  },
2425  // Rule Falk 2001 2010 - Sep Sun>=1 2:00 1:00 -
2426  {
2427  1 /*fromYearTiny*/,
2428  10 /*toYearTiny*/,
2429  9 /*inMonth*/,
2430  7 /*onDayOfWeek*/,
2431  1 /*onDayOfMonth*/,
2432  8 /*atTimeCode*/,
2433  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2434  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2435  '-' /*letter*/,
2436  },
2437 
2438 };
2439 
2440 
2441 
2442 const extended::ZonePolicy kPolicyFalk ACE_TIME_PROGMEM = {
2443  kZoneRulesFalk /*rules*/,
2444  nullptr /*letters*/,
2445  5 /*numRules*/,
2446  0 /*numLetters*/,
2447 };
2448 
2449 //---------------------------------------------------------------------------
2450 // Policy name: Fiji
2451 // Rules: 14
2452 // Memory (8-bit): 132
2453 // Memory (32-bit): 180
2454 //---------------------------------------------------------------------------
2455 
2456 static const extended::ZoneRule kZoneRulesFiji[] ACE_TIME_PROGMEM = {
2457  // Rule Fiji 1998 1999 - Nov Sun>=1 2:00 1:00 -
2458  {
2459  -2 /*fromYearTiny*/,
2460  -1 /*toYearTiny*/,
2461  11 /*inMonth*/,
2462  7 /*onDayOfWeek*/,
2463  1 /*onDayOfMonth*/,
2464  8 /*atTimeCode*/,
2465  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2466  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2467  '-' /*letter*/,
2468  },
2469  // Rule Fiji 1999 2000 - Feb lastSun 3:00 0 -
2470  {
2471  -1 /*fromYearTiny*/,
2472  0 /*toYearTiny*/,
2473  2 /*inMonth*/,
2474  7 /*onDayOfWeek*/,
2475  0 /*onDayOfMonth*/,
2476  12 /*atTimeCode*/,
2477  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2478  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2479  '-' /*letter*/,
2480  },
2481  // Rule Fiji 2009 only - Nov 29 2:00 1:00 -
2482  {
2483  9 /*fromYearTiny*/,
2484  9 /*toYearTiny*/,
2485  11 /*inMonth*/,
2486  0 /*onDayOfWeek*/,
2487  29 /*onDayOfMonth*/,
2488  8 /*atTimeCode*/,
2489  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2490  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2491  '-' /*letter*/,
2492  },
2493  // Rule Fiji 2010 only - Mar lastSun 3:00 0 -
2494  {
2495  10 /*fromYearTiny*/,
2496  10 /*toYearTiny*/,
2497  3 /*inMonth*/,
2498  7 /*onDayOfWeek*/,
2499  0 /*onDayOfMonth*/,
2500  12 /*atTimeCode*/,
2501  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2502  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2503  '-' /*letter*/,
2504  },
2505  // Rule Fiji 2010 2013 - Oct Sun>=21 2:00 1:00 -
2506  {
2507  10 /*fromYearTiny*/,
2508  13 /*toYearTiny*/,
2509  10 /*inMonth*/,
2510  7 /*onDayOfWeek*/,
2511  21 /*onDayOfMonth*/,
2512  8 /*atTimeCode*/,
2513  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2514  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2515  '-' /*letter*/,
2516  },
2517  // Rule Fiji 2011 only - Mar Sun>=1 3:00 0 -
2518  {
2519  11 /*fromYearTiny*/,
2520  11 /*toYearTiny*/,
2521  3 /*inMonth*/,
2522  7 /*onDayOfWeek*/,
2523  1 /*onDayOfMonth*/,
2524  12 /*atTimeCode*/,
2525  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2526  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2527  '-' /*letter*/,
2528  },
2529  // Rule Fiji 2012 2013 - Jan Sun>=18 3:00 0 -
2530  {
2531  12 /*fromYearTiny*/,
2532  13 /*toYearTiny*/,
2533  1 /*inMonth*/,
2534  7 /*onDayOfWeek*/,
2535  18 /*onDayOfMonth*/,
2536  12 /*atTimeCode*/,
2537  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2538  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2539  '-' /*letter*/,
2540  },
2541  // Rule Fiji 2014 only - Jan Sun>=18 2:00 0 -
2542  {
2543  14 /*fromYearTiny*/,
2544  14 /*toYearTiny*/,
2545  1 /*inMonth*/,
2546  7 /*onDayOfWeek*/,
2547  18 /*onDayOfMonth*/,
2548  8 /*atTimeCode*/,
2549  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2550  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2551  '-' /*letter*/,
2552  },
2553  // Rule Fiji 2014 2018 - Nov Sun>=1 2:00 1:00 -
2554  {
2555  14 /*fromYearTiny*/,
2556  18 /*toYearTiny*/,
2557  11 /*inMonth*/,
2558  7 /*onDayOfWeek*/,
2559  1 /*onDayOfMonth*/,
2560  8 /*atTimeCode*/,
2561  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2562  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2563  '-' /*letter*/,
2564  },
2565  // Rule Fiji 2015 2021 - Jan Sun>=12 3:00 0 -
2566  {
2567  15 /*fromYearTiny*/,
2568  21 /*toYearTiny*/,
2569  1 /*inMonth*/,
2570  7 /*onDayOfWeek*/,
2571  12 /*onDayOfMonth*/,
2572  12 /*atTimeCode*/,
2573  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2574  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2575  '-' /*letter*/,
2576  },
2577  // Rule Fiji 2019 only - Nov Sun>=8 2:00 1:00 -
2578  {
2579  19 /*fromYearTiny*/,
2580  19 /*toYearTiny*/,
2581  11 /*inMonth*/,
2582  7 /*onDayOfWeek*/,
2583  8 /*onDayOfMonth*/,
2584  8 /*atTimeCode*/,
2585  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2586  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2587  '-' /*letter*/,
2588  },
2589  // Rule Fiji 2020 only - Dec 20 2:00 1:00 -
2590  {
2591  20 /*fromYearTiny*/,
2592  20 /*toYearTiny*/,
2593  12 /*inMonth*/,
2594  0 /*onDayOfWeek*/,
2595  20 /*onDayOfMonth*/,
2596  8 /*atTimeCode*/,
2597  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2598  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2599  '-' /*letter*/,
2600  },
2601  // Rule Fiji 2022 max - Nov Sun>=8 2:00 1:00 -
2602  {
2603  22 /*fromYearTiny*/,
2604  126 /*toYearTiny*/,
2605  11 /*inMonth*/,
2606  7 /*onDayOfWeek*/,
2607  8 /*onDayOfMonth*/,
2608  8 /*atTimeCode*/,
2609  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2610  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2611  '-' /*letter*/,
2612  },
2613  // Rule Fiji 2023 max - Jan Sun>=12 3:00 0 -
2614  {
2615  23 /*fromYearTiny*/,
2616  126 /*toYearTiny*/,
2617  1 /*inMonth*/,
2618  7 /*onDayOfWeek*/,
2619  12 /*onDayOfMonth*/,
2620  12 /*atTimeCode*/,
2621  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2622  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2623  '-' /*letter*/,
2624  },
2625 
2626 };
2627 
2628 
2629 
2630 const extended::ZonePolicy kPolicyFiji ACE_TIME_PROGMEM = {
2631  kZoneRulesFiji /*rules*/,
2632  nullptr /*letters*/,
2633  14 /*numRules*/,
2634  0 /*numLetters*/,
2635 };
2636 
2637 //---------------------------------------------------------------------------
2638 // Policy name: Guam
2639 // Rules: 1
2640 // Memory (8-bit): 15
2641 // Memory (32-bit): 24
2642 //---------------------------------------------------------------------------
2643 
2644 static const extended::ZoneRule kZoneRulesGuam[] ACE_TIME_PROGMEM = {
2645  // Rule Guam 1977 only - Aug 28 2:00 0 S
2646  {
2647  -23 /*fromYearTiny*/,
2648  -23 /*toYearTiny*/,
2649  8 /*inMonth*/,
2650  0 /*onDayOfWeek*/,
2651  28 /*onDayOfMonth*/,
2652  8 /*atTimeCode*/,
2653  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2654  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2655  'S' /*letter*/,
2656  },
2657 
2658 };
2659 
2660 
2661 
2662 const extended::ZonePolicy kPolicyGuam ACE_TIME_PROGMEM = {
2663  kZoneRulesGuam /*rules*/,
2664  nullptr /*letters*/,
2665  1 /*numRules*/,
2666  0 /*numLetters*/,
2667 };
2668 
2669 //---------------------------------------------------------------------------
2670 // Policy name: Guat
2671 // Rules: 3
2672 // Memory (8-bit): 33
2673 // Memory (32-bit): 48
2674 //---------------------------------------------------------------------------
2675 
2676 static const extended::ZoneRule kZoneRulesGuat[] ACE_TIME_PROGMEM = {
2677  // Rule Guat 1991 only - Sep 7 0:00 0 S
2678  {
2679  -9 /*fromYearTiny*/,
2680  -9 /*toYearTiny*/,
2681  9 /*inMonth*/,
2682  0 /*onDayOfWeek*/,
2683  7 /*onDayOfMonth*/,
2684  0 /*atTimeCode*/,
2685  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2686  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2687  'S' /*letter*/,
2688  },
2689  // Rule Guat 2006 only - Apr 30 0:00 1:00 D
2690  {
2691  6 /*fromYearTiny*/,
2692  6 /*toYearTiny*/,
2693  4 /*inMonth*/,
2694  0 /*onDayOfWeek*/,
2695  30 /*onDayOfMonth*/,
2696  0 /*atTimeCode*/,
2697  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2698  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2699  'D' /*letter*/,
2700  },
2701  // Rule Guat 2006 only - Oct 1 0:00 0 S
2702  {
2703  6 /*fromYearTiny*/,
2704  6 /*toYearTiny*/,
2705  10 /*inMonth*/,
2706  0 /*onDayOfWeek*/,
2707  1 /*onDayOfMonth*/,
2708  0 /*atTimeCode*/,
2709  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2710  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2711  'S' /*letter*/,
2712  },
2713 
2714 };
2715 
2716 
2717 
2718 const extended::ZonePolicy kPolicyGuat ACE_TIME_PROGMEM = {
2719  kZoneRulesGuat /*rules*/,
2720  nullptr /*letters*/,
2721  3 /*numRules*/,
2722  0 /*numLetters*/,
2723 };
2724 
2725 //---------------------------------------------------------------------------
2726 // Policy name: HK
2727 // Rules: 1
2728 // Memory (8-bit): 15
2729 // Memory (32-bit): 24
2730 //---------------------------------------------------------------------------
2731 
2732 static const extended::ZoneRule kZoneRulesHK[] ACE_TIME_PROGMEM = {
2733  // Rule HK 1979 only - Oct 21 3:30 0 -
2734  {
2735  -21 /*fromYearTiny*/,
2736  -21 /*toYearTiny*/,
2737  10 /*inMonth*/,
2738  0 /*onDayOfWeek*/,
2739  21 /*onDayOfMonth*/,
2740  14 /*atTimeCode*/,
2741  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2742  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2743  '-' /*letter*/,
2744  },
2745 
2746 };
2747 
2748 
2749 
2750 const extended::ZonePolicy kPolicyHK ACE_TIME_PROGMEM = {
2751  kZoneRulesHK /*rules*/,
2752  nullptr /*letters*/,
2753  1 /*numRules*/,
2754  0 /*numLetters*/,
2755 };
2756 
2757 //---------------------------------------------------------------------------
2758 // Policy name: Haiti
2759 // Rules: 7
2760 // Memory (8-bit): 69
2761 // Memory (32-bit): 96
2762 //---------------------------------------------------------------------------
2763 
2764 static const extended::ZoneRule kZoneRulesHaiti[] ACE_TIME_PROGMEM = {
2765  // Rule Haiti 1988 1997 - Oct lastSun 1:00s 0 S
2766  {
2767  -12 /*fromYearTiny*/,
2768  -3 /*toYearTiny*/,
2769  10 /*inMonth*/,
2770  7 /*onDayOfWeek*/,
2771  0 /*onDayOfMonth*/,
2772  4 /*atTimeCode*/,
2773  16 /*atTimeModifier (kSuffixS + minute=0)*/,
2774  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2775  'S' /*letter*/,
2776  },
2777  // Rule Haiti 2005 2006 - Apr Sun>=1 0:00 1:00 D
2778  {
2779  5 /*fromYearTiny*/,
2780  6 /*toYearTiny*/,
2781  4 /*inMonth*/,
2782  7 /*onDayOfWeek*/,
2783  1 /*onDayOfMonth*/,
2784  0 /*atTimeCode*/,
2785  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2786  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2787  'D' /*letter*/,
2788  },
2789  // Rule Haiti 2005 2006 - Oct lastSun 0:00 0 S
2790  {
2791  5 /*fromYearTiny*/,
2792  6 /*toYearTiny*/,
2793  10 /*inMonth*/,
2794  7 /*onDayOfWeek*/,
2795  0 /*onDayOfMonth*/,
2796  0 /*atTimeCode*/,
2797  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2798  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2799  'S' /*letter*/,
2800  },
2801  // Rule Haiti 2012 2015 - Mar Sun>=8 2:00 1:00 D
2802  {
2803  12 /*fromYearTiny*/,
2804  15 /*toYearTiny*/,
2805  3 /*inMonth*/,
2806  7 /*onDayOfWeek*/,
2807  8 /*onDayOfMonth*/,
2808  8 /*atTimeCode*/,
2809  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2810  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2811  'D' /*letter*/,
2812  },
2813  // Rule Haiti 2012 2015 - Nov Sun>=1 2:00 0 S
2814  {
2815  12 /*fromYearTiny*/,
2816  15 /*toYearTiny*/,
2817  11 /*inMonth*/,
2818  7 /*onDayOfWeek*/,
2819  1 /*onDayOfMonth*/,
2820  8 /*atTimeCode*/,
2821  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2822  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2823  'S' /*letter*/,
2824  },
2825  // Rule Haiti 2017 max - Mar Sun>=8 2:00 1:00 D
2826  {
2827  17 /*fromYearTiny*/,
2828  126 /*toYearTiny*/,
2829  3 /*inMonth*/,
2830  7 /*onDayOfWeek*/,
2831  8 /*onDayOfMonth*/,
2832  8 /*atTimeCode*/,
2833  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2834  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2835  'D' /*letter*/,
2836  },
2837  // Rule Haiti 2017 max - Nov Sun>=1 2:00 0 S
2838  {
2839  17 /*fromYearTiny*/,
2840  126 /*toYearTiny*/,
2841  11 /*inMonth*/,
2842  7 /*onDayOfWeek*/,
2843  1 /*onDayOfMonth*/,
2844  8 /*atTimeCode*/,
2845  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2846  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2847  'S' /*letter*/,
2848  },
2849 
2850 };
2851 
2852 
2853 
2854 const extended::ZonePolicy kPolicyHaiti ACE_TIME_PROGMEM = {
2855  kZoneRulesHaiti /*rules*/,
2856  nullptr /*letters*/,
2857  7 /*numRules*/,
2858  0 /*numLetters*/,
2859 };
2860 
2861 //---------------------------------------------------------------------------
2862 // Policy name: Holiday
2863 // Rules: 1
2864 // Memory (8-bit): 15
2865 // Memory (32-bit): 24
2866 //---------------------------------------------------------------------------
2867 
2868 static const extended::ZoneRule kZoneRulesHoliday[] ACE_TIME_PROGMEM = {
2869  // Rule Holiday 1993 1994 - Mar Sun>=1 2:00s 0 S
2870  {
2871  -7 /*fromYearTiny*/,
2872  -6 /*toYearTiny*/,
2873  3 /*inMonth*/,
2874  7 /*onDayOfWeek*/,
2875  1 /*onDayOfMonth*/,
2876  8 /*atTimeCode*/,
2877  16 /*atTimeModifier (kSuffixS + minute=0)*/,
2878  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2879  'S' /*letter*/,
2880  },
2881 
2882 };
2883 
2884 
2885 
2886 const extended::ZonePolicy kPolicyHoliday ACE_TIME_PROGMEM = {
2887  kZoneRulesHoliday /*rules*/,
2888  nullptr /*letters*/,
2889  1 /*numRules*/,
2890  0 /*numLetters*/,
2891 };
2892 
2893 //---------------------------------------------------------------------------
2894 // Policy name: Hond
2895 // Rules: 3
2896 // Memory (8-bit): 33
2897 // Memory (32-bit): 48
2898 //---------------------------------------------------------------------------
2899 
2900 static const extended::ZoneRule kZoneRulesHond[] ACE_TIME_PROGMEM = {
2901  // Rule Hond 1987 1988 - Sep lastSun 0:00 0 S
2902  {
2903  -13 /*fromYearTiny*/,
2904  -12 /*toYearTiny*/,
2905  9 /*inMonth*/,
2906  7 /*onDayOfWeek*/,
2907  0 /*onDayOfMonth*/,
2908  0 /*atTimeCode*/,
2909  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2910  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2911  'S' /*letter*/,
2912  },
2913  // Rule Hond 2006 only - May Sun>=1 0:00 1:00 D
2914  {
2915  6 /*fromYearTiny*/,
2916  6 /*toYearTiny*/,
2917  5 /*inMonth*/,
2918  7 /*onDayOfWeek*/,
2919  1 /*onDayOfMonth*/,
2920  0 /*atTimeCode*/,
2921  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2922  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2923  'D' /*letter*/,
2924  },
2925  // Rule Hond 2006 only - Aug Mon>=1 0:00 0 S
2926  {
2927  6 /*fromYearTiny*/,
2928  6 /*toYearTiny*/,
2929  8 /*inMonth*/,
2930  1 /*onDayOfWeek*/,
2931  1 /*onDayOfMonth*/,
2932  0 /*atTimeCode*/,
2933  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2934  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2935  'S' /*letter*/,
2936  },
2937 
2938 };
2939 
2940 
2941 
2942 const extended::ZonePolicy kPolicyHond ACE_TIME_PROGMEM = {
2943  kZoneRulesHond /*rules*/,
2944  nullptr /*letters*/,
2945  3 /*numRules*/,
2946  0 /*numLetters*/,
2947 };
2948 
2949 //---------------------------------------------------------------------------
2950 // Policy name: Iran
2951 // Rules: 55
2952 // Memory (8-bit): 501
2953 // Memory (32-bit): 672
2954 //---------------------------------------------------------------------------
2955 
2956 static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = {
2957  // Rule Iran 1996 only - Sep 20 24:00 0 -
2958  {
2959  -4 /*fromYearTiny*/,
2960  -4 /*toYearTiny*/,
2961  9 /*inMonth*/,
2962  0 /*onDayOfWeek*/,
2963  20 /*onDayOfMonth*/,
2964  96 /*atTimeCode*/,
2965  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2966  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2967  '-' /*letter*/,
2968  },
2969  // Rule Iran 1997 1999 - Mar 21 24:00 1:00 -
2970  {
2971  -3 /*fromYearTiny*/,
2972  -1 /*toYearTiny*/,
2973  3 /*inMonth*/,
2974  0 /*onDayOfWeek*/,
2975  21 /*onDayOfMonth*/,
2976  96 /*atTimeCode*/,
2977  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2978  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2979  '-' /*letter*/,
2980  },
2981  // Rule Iran 1997 1999 - Sep 21 24:00 0 -
2982  {
2983  -3 /*fromYearTiny*/,
2984  -1 /*toYearTiny*/,
2985  9 /*inMonth*/,
2986  0 /*onDayOfWeek*/,
2987  21 /*onDayOfMonth*/,
2988  96 /*atTimeCode*/,
2989  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2990  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2991  '-' /*letter*/,
2992  },
2993  // Rule Iran 2000 only - Mar 20 24:00 1:00 -
2994  {
2995  0 /*fromYearTiny*/,
2996  0 /*toYearTiny*/,
2997  3 /*inMonth*/,
2998  0 /*onDayOfWeek*/,
2999  20 /*onDayOfMonth*/,
3000  96 /*atTimeCode*/,
3001  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3002  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3003  '-' /*letter*/,
3004  },
3005  // Rule Iran 2000 only - Sep 20 24:00 0 -
3006  {
3007  0 /*fromYearTiny*/,
3008  0 /*toYearTiny*/,
3009  9 /*inMonth*/,
3010  0 /*onDayOfWeek*/,
3011  20 /*onDayOfMonth*/,
3012  96 /*atTimeCode*/,
3013  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3014  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3015  '-' /*letter*/,
3016  },
3017  // Rule Iran 2001 2003 - Mar 21 24:00 1:00 -
3018  {
3019  1 /*fromYearTiny*/,
3020  3 /*toYearTiny*/,
3021  3 /*inMonth*/,
3022  0 /*onDayOfWeek*/,
3023  21 /*onDayOfMonth*/,
3024  96 /*atTimeCode*/,
3025  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3026  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3027  '-' /*letter*/,
3028  },
3029  // Rule Iran 2001 2003 - Sep 21 24:00 0 -
3030  {
3031  1 /*fromYearTiny*/,
3032  3 /*toYearTiny*/,
3033  9 /*inMonth*/,
3034  0 /*onDayOfWeek*/,
3035  21 /*onDayOfMonth*/,
3036  96 /*atTimeCode*/,
3037  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3038  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3039  '-' /*letter*/,
3040  },
3041  // Rule Iran 2004 only - Mar 20 24:00 1:00 -
3042  {
3043  4 /*fromYearTiny*/,
3044  4 /*toYearTiny*/,
3045  3 /*inMonth*/,
3046  0 /*onDayOfWeek*/,
3047  20 /*onDayOfMonth*/,
3048  96 /*atTimeCode*/,
3049  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3050  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3051  '-' /*letter*/,
3052  },
3053  // Rule Iran 2004 only - Sep 20 24:00 0 -
3054  {
3055  4 /*fromYearTiny*/,
3056  4 /*toYearTiny*/,
3057  9 /*inMonth*/,
3058  0 /*onDayOfWeek*/,
3059  20 /*onDayOfMonth*/,
3060  96 /*atTimeCode*/,
3061  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3062  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3063  '-' /*letter*/,
3064  },
3065  // Rule Iran 2005 only - Mar 21 24:00 1:00 -
3066  {
3067  5 /*fromYearTiny*/,
3068  5 /*toYearTiny*/,
3069  3 /*inMonth*/,
3070  0 /*onDayOfWeek*/,
3071  21 /*onDayOfMonth*/,
3072  96 /*atTimeCode*/,
3073  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3074  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3075  '-' /*letter*/,
3076  },
3077  // Rule Iran 2005 only - Sep 21 24:00 0 -
3078  {
3079  5 /*fromYearTiny*/,
3080  5 /*toYearTiny*/,
3081  9 /*inMonth*/,
3082  0 /*onDayOfWeek*/,
3083  21 /*onDayOfMonth*/,
3084  96 /*atTimeCode*/,
3085  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3086  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3087  '-' /*letter*/,
3088  },
3089  // Rule Iran 2008 only - Mar 20 24:00 1:00 -
3090  {
3091  8 /*fromYearTiny*/,
3092  8 /*toYearTiny*/,
3093  3 /*inMonth*/,
3094  0 /*onDayOfWeek*/,
3095  20 /*onDayOfMonth*/,
3096  96 /*atTimeCode*/,
3097  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3098  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3099  '-' /*letter*/,
3100  },
3101  // Rule Iran 2008 only - Sep 20 24:00 0 -
3102  {
3103  8 /*fromYearTiny*/,
3104  8 /*toYearTiny*/,
3105  9 /*inMonth*/,
3106  0 /*onDayOfWeek*/,
3107  20 /*onDayOfMonth*/,
3108  96 /*atTimeCode*/,
3109  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3110  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3111  '-' /*letter*/,
3112  },
3113  // Rule Iran 2009 2011 - Mar 21 24:00 1:00 -
3114  {
3115  9 /*fromYearTiny*/,
3116  11 /*toYearTiny*/,
3117  3 /*inMonth*/,
3118  0 /*onDayOfWeek*/,
3119  21 /*onDayOfMonth*/,
3120  96 /*atTimeCode*/,
3121  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3122  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3123  '-' /*letter*/,
3124  },
3125  // Rule Iran 2009 2011 - Sep 21 24:00 0 -
3126  {
3127  9 /*fromYearTiny*/,
3128  11 /*toYearTiny*/,
3129  9 /*inMonth*/,
3130  0 /*onDayOfWeek*/,
3131  21 /*onDayOfMonth*/,
3132  96 /*atTimeCode*/,
3133  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3134  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3135  '-' /*letter*/,
3136  },
3137  // Rule Iran 2012 only - Mar 20 24:00 1:00 -
3138  {
3139  12 /*fromYearTiny*/,
3140  12 /*toYearTiny*/,
3141  3 /*inMonth*/,
3142  0 /*onDayOfWeek*/,
3143  20 /*onDayOfMonth*/,
3144  96 /*atTimeCode*/,
3145  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3146  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3147  '-' /*letter*/,
3148  },
3149  // Rule Iran 2012 only - Sep 20 24:00 0 -
3150  {
3151  12 /*fromYearTiny*/,
3152  12 /*toYearTiny*/,
3153  9 /*inMonth*/,
3154  0 /*onDayOfWeek*/,
3155  20 /*onDayOfMonth*/,
3156  96 /*atTimeCode*/,
3157  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3158  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3159  '-' /*letter*/,
3160  },
3161  // Rule Iran 2013 2015 - Mar 21 24:00 1:00 -
3162  {
3163  13 /*fromYearTiny*/,
3164  15 /*toYearTiny*/,
3165  3 /*inMonth*/,
3166  0 /*onDayOfWeek*/,
3167  21 /*onDayOfMonth*/,
3168  96 /*atTimeCode*/,
3169  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3170  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3171  '-' /*letter*/,
3172  },
3173  // Rule Iran 2013 2015 - Sep 21 24:00 0 -
3174  {
3175  13 /*fromYearTiny*/,
3176  15 /*toYearTiny*/,
3177  9 /*inMonth*/,
3178  0 /*onDayOfWeek*/,
3179  21 /*onDayOfMonth*/,
3180  96 /*atTimeCode*/,
3181  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3182  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3183  '-' /*letter*/,
3184  },
3185  // Rule Iran 2016 only - Mar 20 24:00 1:00 -
3186  {
3187  16 /*fromYearTiny*/,
3188  16 /*toYearTiny*/,
3189  3 /*inMonth*/,
3190  0 /*onDayOfWeek*/,
3191  20 /*onDayOfMonth*/,
3192  96 /*atTimeCode*/,
3193  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3194  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3195  '-' /*letter*/,
3196  },
3197  // Rule Iran 2016 only - Sep 20 24:00 0 -
3198  {
3199  16 /*fromYearTiny*/,
3200  16 /*toYearTiny*/,
3201  9 /*inMonth*/,
3202  0 /*onDayOfWeek*/,
3203  20 /*onDayOfMonth*/,
3204  96 /*atTimeCode*/,
3205  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3206  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3207  '-' /*letter*/,
3208  },
3209  // Rule Iran 2017 2019 - Mar 21 24:00 1:00 -
3210  {
3211  17 /*fromYearTiny*/,
3212  19 /*toYearTiny*/,
3213  3 /*inMonth*/,
3214  0 /*onDayOfWeek*/,
3215  21 /*onDayOfMonth*/,
3216  96 /*atTimeCode*/,
3217  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3218  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3219  '-' /*letter*/,
3220  },
3221  // Rule Iran 2017 2019 - Sep 21 24:00 0 -
3222  {
3223  17 /*fromYearTiny*/,
3224  19 /*toYearTiny*/,
3225  9 /*inMonth*/,
3226  0 /*onDayOfWeek*/,
3227  21 /*onDayOfMonth*/,
3228  96 /*atTimeCode*/,
3229  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3230  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3231  '-' /*letter*/,
3232  },
3233  // Rule Iran 2020 only - Mar 20 24:00 1:00 -
3234  {
3235  20 /*fromYearTiny*/,
3236  20 /*toYearTiny*/,
3237  3 /*inMonth*/,
3238  0 /*onDayOfWeek*/,
3239  20 /*onDayOfMonth*/,
3240  96 /*atTimeCode*/,
3241  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3242  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3243  '-' /*letter*/,
3244  },
3245  // Rule Iran 2020 only - Sep 20 24:00 0 -
3246  {
3247  20 /*fromYearTiny*/,
3248  20 /*toYearTiny*/,
3249  9 /*inMonth*/,
3250  0 /*onDayOfWeek*/,
3251  20 /*onDayOfMonth*/,
3252  96 /*atTimeCode*/,
3253  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3254  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3255  '-' /*letter*/,
3256  },
3257  // Rule Iran 2021 2023 - Mar 21 24:00 1:00 -
3258  {
3259  21 /*fromYearTiny*/,
3260  23 /*toYearTiny*/,
3261  3 /*inMonth*/,
3262  0 /*onDayOfWeek*/,
3263  21 /*onDayOfMonth*/,
3264  96 /*atTimeCode*/,
3265  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3266  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3267  '-' /*letter*/,
3268  },
3269  // Rule Iran 2021 2023 - Sep 21 24:00 0 -
3270  {
3271  21 /*fromYearTiny*/,
3272  23 /*toYearTiny*/,
3273  9 /*inMonth*/,
3274  0 /*onDayOfWeek*/,
3275  21 /*onDayOfMonth*/,
3276  96 /*atTimeCode*/,
3277  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3278  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3279  '-' /*letter*/,
3280  },
3281  // Rule Iran 2024 only - Mar 20 24:00 1:00 -
3282  {
3283  24 /*fromYearTiny*/,
3284  24 /*toYearTiny*/,
3285  3 /*inMonth*/,
3286  0 /*onDayOfWeek*/,
3287  20 /*onDayOfMonth*/,
3288  96 /*atTimeCode*/,
3289  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3290  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3291  '-' /*letter*/,
3292  },
3293  // Rule Iran 2024 only - Sep 20 24:00 0 -
3294  {
3295  24 /*fromYearTiny*/,
3296  24 /*toYearTiny*/,
3297  9 /*inMonth*/,
3298  0 /*onDayOfWeek*/,
3299  20 /*onDayOfMonth*/,
3300  96 /*atTimeCode*/,
3301  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3302  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3303  '-' /*letter*/,
3304  },
3305  // Rule Iran 2025 2027 - Mar 21 24:00 1:00 -
3306  {
3307  25 /*fromYearTiny*/,
3308  27 /*toYearTiny*/,
3309  3 /*inMonth*/,
3310  0 /*onDayOfWeek*/,
3311  21 /*onDayOfMonth*/,
3312  96 /*atTimeCode*/,
3313  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3314  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3315  '-' /*letter*/,
3316  },
3317  // Rule Iran 2025 2027 - Sep 21 24:00 0 -
3318  {
3319  25 /*fromYearTiny*/,
3320  27 /*toYearTiny*/,
3321  9 /*inMonth*/,
3322  0 /*onDayOfWeek*/,
3323  21 /*onDayOfMonth*/,
3324  96 /*atTimeCode*/,
3325  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3326  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3327  '-' /*letter*/,
3328  },
3329  // Rule Iran 2028 2029 - Mar 20 24:00 1:00 -
3330  {
3331  28 /*fromYearTiny*/,
3332  29 /*toYearTiny*/,
3333  3 /*inMonth*/,
3334  0 /*onDayOfWeek*/,
3335  20 /*onDayOfMonth*/,
3336  96 /*atTimeCode*/,
3337  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3338  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3339  '-' /*letter*/,
3340  },
3341  // Rule Iran 2028 2029 - Sep 20 24:00 0 -
3342  {
3343  28 /*fromYearTiny*/,
3344  29 /*toYearTiny*/,
3345  9 /*inMonth*/,
3346  0 /*onDayOfWeek*/,
3347  20 /*onDayOfMonth*/,
3348  96 /*atTimeCode*/,
3349  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3350  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3351  '-' /*letter*/,
3352  },
3353  // Rule Iran 2030 2031 - Mar 21 24:00 1:00 -
3354  {
3355  30 /*fromYearTiny*/,
3356  31 /*toYearTiny*/,
3357  3 /*inMonth*/,
3358  0 /*onDayOfWeek*/,
3359  21 /*onDayOfMonth*/,
3360  96 /*atTimeCode*/,
3361  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3362  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3363  '-' /*letter*/,
3364  },
3365  // Rule Iran 2030 2031 - Sep 21 24:00 0 -
3366  {
3367  30 /*fromYearTiny*/,
3368  31 /*toYearTiny*/,
3369  9 /*inMonth*/,
3370  0 /*onDayOfWeek*/,
3371  21 /*onDayOfMonth*/,
3372  96 /*atTimeCode*/,
3373  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3374  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3375  '-' /*letter*/,
3376  },
3377  // Rule Iran 2032 2033 - Mar 20 24:00 1:00 -
3378  {
3379  32 /*fromYearTiny*/,
3380  33 /*toYearTiny*/,
3381  3 /*inMonth*/,
3382  0 /*onDayOfWeek*/,
3383  20 /*onDayOfMonth*/,
3384  96 /*atTimeCode*/,
3385  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3386  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3387  '-' /*letter*/,
3388  },
3389  // Rule Iran 2032 2033 - Sep 20 24:00 0 -
3390  {
3391  32 /*fromYearTiny*/,
3392  33 /*toYearTiny*/,
3393  9 /*inMonth*/,
3394  0 /*onDayOfWeek*/,
3395  20 /*onDayOfMonth*/,
3396  96 /*atTimeCode*/,
3397  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3398  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3399  '-' /*letter*/,
3400  },
3401  // Rule Iran 2034 2035 - Mar 21 24:00 1:00 -
3402  {
3403  34 /*fromYearTiny*/,
3404  35 /*toYearTiny*/,
3405  3 /*inMonth*/,
3406  0 /*onDayOfWeek*/,
3407  21 /*onDayOfMonth*/,
3408  96 /*atTimeCode*/,
3409  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3410  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3411  '-' /*letter*/,
3412  },
3413  // Rule Iran 2034 2035 - Sep 21 24:00 0 -
3414  {
3415  34 /*fromYearTiny*/,
3416  35 /*toYearTiny*/,
3417  9 /*inMonth*/,
3418  0 /*onDayOfWeek*/,
3419  21 /*onDayOfMonth*/,
3420  96 /*atTimeCode*/,
3421  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3422  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3423  '-' /*letter*/,
3424  },
3425  // Rule Iran 2036 2037 - Mar 20 24:00 1:00 -
3426  {
3427  36 /*fromYearTiny*/,
3428  37 /*toYearTiny*/,
3429  3 /*inMonth*/,
3430  0 /*onDayOfWeek*/,
3431  20 /*onDayOfMonth*/,
3432  96 /*atTimeCode*/,
3433  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3434  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3435  '-' /*letter*/,
3436  },
3437  // Rule Iran 2036 2037 - Sep 20 24:00 0 -
3438  {
3439  36 /*fromYearTiny*/,
3440  37 /*toYearTiny*/,
3441  9 /*inMonth*/,
3442  0 /*onDayOfWeek*/,
3443  20 /*onDayOfMonth*/,
3444  96 /*atTimeCode*/,
3445  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3446  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3447  '-' /*letter*/,
3448  },
3449  // Rule Iran 2038 2039 - Mar 21 24:00 1:00 -
3450  {
3451  38 /*fromYearTiny*/,
3452  39 /*toYearTiny*/,
3453  3 /*inMonth*/,
3454  0 /*onDayOfWeek*/,
3455  21 /*onDayOfMonth*/,
3456  96 /*atTimeCode*/,
3457  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3458  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3459  '-' /*letter*/,
3460  },
3461  // Rule Iran 2038 2039 - Sep 21 24:00 0 -
3462  {
3463  38 /*fromYearTiny*/,
3464  39 /*toYearTiny*/,
3465  9 /*inMonth*/,
3466  0 /*onDayOfWeek*/,
3467  21 /*onDayOfMonth*/,
3468  96 /*atTimeCode*/,
3469  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3470  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3471  '-' /*letter*/,
3472  },
3473  // Rule Iran 2040 2041 - Mar 20 24:00 1:00 -
3474  {
3475  40 /*fromYearTiny*/,
3476  41 /*toYearTiny*/,
3477  3 /*inMonth*/,
3478  0 /*onDayOfWeek*/,
3479  20 /*onDayOfMonth*/,
3480  96 /*atTimeCode*/,
3481  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3482  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3483  '-' /*letter*/,
3484  },
3485  // Rule Iran 2040 2041 - Sep 20 24:00 0 -
3486  {
3487  40 /*fromYearTiny*/,
3488  41 /*toYearTiny*/,
3489  9 /*inMonth*/,
3490  0 /*onDayOfWeek*/,
3491  20 /*onDayOfMonth*/,
3492  96 /*atTimeCode*/,
3493  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3494  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3495  '-' /*letter*/,
3496  },
3497  // Rule Iran 2042 2043 - Mar 21 24:00 1:00 -
3498  {
3499  42 /*fromYearTiny*/,
3500  43 /*toYearTiny*/,
3501  3 /*inMonth*/,
3502  0 /*onDayOfWeek*/,
3503  21 /*onDayOfMonth*/,
3504  96 /*atTimeCode*/,
3505  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3506  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3507  '-' /*letter*/,
3508  },
3509  // Rule Iran 2042 2043 - Sep 21 24:00 0 -
3510  {
3511  42 /*fromYearTiny*/,
3512  43 /*toYearTiny*/,
3513  9 /*inMonth*/,
3514  0 /*onDayOfWeek*/,
3515  21 /*onDayOfMonth*/,
3516  96 /*atTimeCode*/,
3517  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3518  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3519  '-' /*letter*/,
3520  },
3521  // Rule Iran 2044 2045 - Mar 20 24:00 1:00 -
3522  {
3523  44 /*fromYearTiny*/,
3524  45 /*toYearTiny*/,
3525  3 /*inMonth*/,
3526  0 /*onDayOfWeek*/,
3527  20 /*onDayOfMonth*/,
3528  96 /*atTimeCode*/,
3529  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3530  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3531  '-' /*letter*/,
3532  },
3533  // Rule Iran 2044 2045 - Sep 20 24:00 0 -
3534  {
3535  44 /*fromYearTiny*/,
3536  45 /*toYearTiny*/,
3537  9 /*inMonth*/,
3538  0 /*onDayOfWeek*/,
3539  20 /*onDayOfMonth*/,
3540  96 /*atTimeCode*/,
3541  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3542  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3543  '-' /*letter*/,
3544  },
3545  // Rule Iran 2046 2047 - Mar 21 24:00 1:00 -
3546  {
3547  46 /*fromYearTiny*/,
3548  47 /*toYearTiny*/,
3549  3 /*inMonth*/,
3550  0 /*onDayOfWeek*/,
3551  21 /*onDayOfMonth*/,
3552  96 /*atTimeCode*/,
3553  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3554  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3555  '-' /*letter*/,
3556  },
3557  // Rule Iran 2046 2047 - Sep 21 24:00 0 -
3558  {
3559  46 /*fromYearTiny*/,
3560  47 /*toYearTiny*/,
3561  9 /*inMonth*/,
3562  0 /*onDayOfWeek*/,
3563  21 /*onDayOfMonth*/,
3564  96 /*atTimeCode*/,
3565  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3566  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3567  '-' /*letter*/,
3568  },
3569  // Rule Iran 2048 2049 - Mar 20 24:00 1:00 -
3570  {
3571  48 /*fromYearTiny*/,
3572  49 /*toYearTiny*/,
3573  3 /*inMonth*/,
3574  0 /*onDayOfWeek*/,
3575  20 /*onDayOfMonth*/,
3576  96 /*atTimeCode*/,
3577  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3578  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3579  '-' /*letter*/,
3580  },
3581  // Rule Iran 2048 2049 - Sep 20 24:00 0 -
3582  {
3583  48 /*fromYearTiny*/,
3584  49 /*toYearTiny*/,
3585  9 /*inMonth*/,
3586  0 /*onDayOfWeek*/,
3587  20 /*onDayOfMonth*/,
3588  96 /*atTimeCode*/,
3589  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3590  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3591  '-' /*letter*/,
3592  },
3593  // Rule Iran 2050 2051 - Mar 21 24:00 1:00 -
3594  {
3595  50 /*fromYearTiny*/,
3596  51 /*toYearTiny*/,
3597  3 /*inMonth*/,
3598  0 /*onDayOfWeek*/,
3599  21 /*onDayOfMonth*/,
3600  96 /*atTimeCode*/,
3601  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3602  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3603  '-' /*letter*/,
3604  },
3605  // Rule Iran 2050 2051 - Sep 21 24:00 0 -
3606  {
3607  50 /*fromYearTiny*/,
3608  51 /*toYearTiny*/,
3609  9 /*inMonth*/,
3610  0 /*onDayOfWeek*/,
3611  21 /*onDayOfMonth*/,
3612  96 /*atTimeCode*/,
3613  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3614  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3615  '-' /*letter*/,
3616  },
3617 
3618 };
3619 
3620 
3621 
3622 const extended::ZonePolicy kPolicyIran ACE_TIME_PROGMEM = {
3623  kZoneRulesIran /*rules*/,
3624  nullptr /*letters*/,
3625  55 /*numRules*/,
3626  0 /*numLetters*/,
3627 };
3628 
3629 //---------------------------------------------------------------------------
3630 // Policy name: Iraq
3631 // Rules: 3
3632 // Memory (8-bit): 33
3633 // Memory (32-bit): 48
3634 //---------------------------------------------------------------------------
3635 
3636 static const extended::ZoneRule kZoneRulesIraq[] ACE_TIME_PROGMEM = {
3637  // Rule Iraq 1985 1990 - Sep lastSun 1:00s 0 -
3638  {
3639  -15 /*fromYearTiny*/,
3640  -10 /*toYearTiny*/,
3641  9 /*inMonth*/,
3642  7 /*onDayOfWeek*/,
3643  0 /*onDayOfMonth*/,
3644  4 /*atTimeCode*/,
3645  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3646  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3647  '-' /*letter*/,
3648  },
3649  // Rule Iraq 1991 2007 - Apr 1 3:00s 1:00 -
3650  {
3651  -9 /*fromYearTiny*/,
3652  7 /*toYearTiny*/,
3653  4 /*inMonth*/,
3654  0 /*onDayOfWeek*/,
3655  1 /*onDayOfMonth*/,
3656  12 /*atTimeCode*/,
3657  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3658  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3659  '-' /*letter*/,
3660  },
3661  // Rule Iraq 1991 2007 - Oct 1 3:00s 0 -
3662  {
3663  -9 /*fromYearTiny*/,
3664  7 /*toYearTiny*/,
3665  10 /*inMonth*/,
3666  0 /*onDayOfWeek*/,
3667  1 /*onDayOfMonth*/,
3668  12 /*atTimeCode*/,
3669  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3670  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3671  '-' /*letter*/,
3672  },
3673 
3674 };
3675 
3676 
3677 
3678 const extended::ZonePolicy kPolicyIraq ACE_TIME_PROGMEM = {
3679  kZoneRulesIraq /*rules*/,
3680  nullptr /*letters*/,
3681  3 /*numRules*/,
3682  0 /*numLetters*/,
3683 };
3684 
3685 //---------------------------------------------------------------------------
3686 // Policy name: Japan
3687 // Rules: 1
3688 // Memory (8-bit): 15
3689 // Memory (32-bit): 24
3690 //---------------------------------------------------------------------------
3691 
3692 static const extended::ZoneRule kZoneRulesJapan[] ACE_TIME_PROGMEM = {
3693  // Rule Japan 1948 1951 - Sep Sat>=8 25:00 0 S
3694  {
3695  -52 /*fromYearTiny*/,
3696  -49 /*toYearTiny*/,
3697  9 /*inMonth*/,
3698  6 /*onDayOfWeek*/,
3699  8 /*onDayOfMonth*/,
3700  100 /*atTimeCode*/,
3701  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3702  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3703  'S' /*letter*/,
3704  },
3705 
3706 };
3707 
3708 
3709 
3710 const extended::ZonePolicy kPolicyJapan ACE_TIME_PROGMEM = {
3711  kZoneRulesJapan /*rules*/,
3712  nullptr /*letters*/,
3713  1 /*numRules*/,
3714  0 /*numLetters*/,
3715 };
3716 
3717 //---------------------------------------------------------------------------
3718 // Policy name: Jordan
3719 // Rules: 13
3720 // Memory (8-bit): 123
3721 // Memory (32-bit): 168
3722 //---------------------------------------------------------------------------
3723 
3724 static const extended::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = {
3725  // Rule Jordan 1995 1998 - Sep Fri>=15 0:00s 0 -
3726  {
3727  -5 /*fromYearTiny*/,
3728  -2 /*toYearTiny*/,
3729  9 /*inMonth*/,
3730  5 /*onDayOfWeek*/,
3731  15 /*onDayOfMonth*/,
3732  0 /*atTimeCode*/,
3733  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3734  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3735  '-' /*letter*/,
3736  },
3737  // Rule Jordan 1999 only - Jul 1 0:00s 1:00 S
3738  {
3739  -1 /*fromYearTiny*/,
3740  -1 /*toYearTiny*/,
3741  7 /*inMonth*/,
3742  0 /*onDayOfWeek*/,
3743  1 /*onDayOfMonth*/,
3744  0 /*atTimeCode*/,
3745  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3746  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3747  'S' /*letter*/,
3748  },
3749  // Rule Jordan 1999 2002 - Sep lastFri 0:00s 0 -
3750  {
3751  -1 /*fromYearTiny*/,
3752  2 /*toYearTiny*/,
3753  9 /*inMonth*/,
3754  5 /*onDayOfWeek*/,
3755  0 /*onDayOfMonth*/,
3756  0 /*atTimeCode*/,
3757  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3758  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3759  '-' /*letter*/,
3760  },
3761  // Rule Jordan 2000 2001 - Mar lastThu 0:00s 1:00 S
3762  {
3763  0 /*fromYearTiny*/,
3764  1 /*toYearTiny*/,
3765  3 /*inMonth*/,
3766  4 /*onDayOfWeek*/,
3767  0 /*onDayOfMonth*/,
3768  0 /*atTimeCode*/,
3769  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3770  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3771  'S' /*letter*/,
3772  },
3773  // Rule Jordan 2002 2012 - Mar lastThu 24:00 1:00 S
3774  {
3775  2 /*fromYearTiny*/,
3776  12 /*toYearTiny*/,
3777  3 /*inMonth*/,
3778  4 /*onDayOfWeek*/,
3779  0 /*onDayOfMonth*/,
3780  96 /*atTimeCode*/,
3781  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3782  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3783  'S' /*letter*/,
3784  },
3785  // Rule Jordan 2003 only - Oct 24 0:00s 0 -
3786  {
3787  3 /*fromYearTiny*/,
3788  3 /*toYearTiny*/,
3789  10 /*inMonth*/,
3790  0 /*onDayOfWeek*/,
3791  24 /*onDayOfMonth*/,
3792  0 /*atTimeCode*/,
3793  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3794  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3795  '-' /*letter*/,
3796  },
3797  // Rule Jordan 2004 only - Oct 15 0:00s 0 -
3798  {
3799  4 /*fromYearTiny*/,
3800  4 /*toYearTiny*/,
3801  10 /*inMonth*/,
3802  0 /*onDayOfWeek*/,
3803  15 /*onDayOfMonth*/,
3804  0 /*atTimeCode*/,
3805  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3806  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3807  '-' /*letter*/,
3808  },
3809  // Rule Jordan 2005 only - Sep lastFri 0:00s 0 -
3810  {
3811  5 /*fromYearTiny*/,
3812  5 /*toYearTiny*/,
3813  9 /*inMonth*/,
3814  5 /*onDayOfWeek*/,
3815  0 /*onDayOfMonth*/,
3816  0 /*atTimeCode*/,
3817  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3818  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3819  '-' /*letter*/,
3820  },
3821  // Rule Jordan 2006 2011 - Oct lastFri 0:00s 0 -
3822  {
3823  6 /*fromYearTiny*/,
3824  11 /*toYearTiny*/,
3825  10 /*inMonth*/,
3826  5 /*onDayOfWeek*/,
3827  0 /*onDayOfMonth*/,
3828  0 /*atTimeCode*/,
3829  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3830  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3831  '-' /*letter*/,
3832  },
3833  // Rule Jordan 2013 only - Dec 20 0:00 0 -
3834  {
3835  13 /*fromYearTiny*/,
3836  13 /*toYearTiny*/,
3837  12 /*inMonth*/,
3838  0 /*onDayOfWeek*/,
3839  20 /*onDayOfMonth*/,
3840  0 /*atTimeCode*/,
3841  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3842  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3843  '-' /*letter*/,
3844  },
3845  // Rule Jordan 2014 2021 - Mar lastThu 24:00 1:00 S
3846  {
3847  14 /*fromYearTiny*/,
3848  21 /*toYearTiny*/,
3849  3 /*inMonth*/,
3850  4 /*onDayOfWeek*/,
3851  0 /*onDayOfMonth*/,
3852  96 /*atTimeCode*/,
3853  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3854  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3855  'S' /*letter*/,
3856  },
3857  // Rule Jordan 2014 max - Oct lastFri 0:00s 0 -
3858  {
3859  14 /*fromYearTiny*/,
3860  126 /*toYearTiny*/,
3861  10 /*inMonth*/,
3862  5 /*onDayOfWeek*/,
3863  0 /*onDayOfMonth*/,
3864  0 /*atTimeCode*/,
3865  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3866  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3867  '-' /*letter*/,
3868  },
3869  // Rule Jordan 2022 max - Feb lastThu 24:00 1:00 S
3870  {
3871  22 /*fromYearTiny*/,
3872  126 /*toYearTiny*/,
3873  2 /*inMonth*/,
3874  4 /*onDayOfWeek*/,
3875  0 /*onDayOfMonth*/,
3876  96 /*atTimeCode*/,
3877  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3878  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3879  'S' /*letter*/,
3880  },
3881 
3882 };
3883 
3884 
3885 
3886 const extended::ZonePolicy kPolicyJordan ACE_TIME_PROGMEM = {
3887  kZoneRulesJordan /*rules*/,
3888  nullptr /*letters*/,
3889  13 /*numRules*/,
3890  0 /*numLetters*/,
3891 };
3892 
3893 //---------------------------------------------------------------------------
3894 // Policy name: Kyrgyz
3895 // Rules: 3
3896 // Memory (8-bit): 33
3897 // Memory (32-bit): 48
3898 //---------------------------------------------------------------------------
3899 
3900 static const extended::ZoneRule kZoneRulesKyrgyz[] ACE_TIME_PROGMEM = {
3901  // Rule Kyrgyz 1992 1996 - Sep lastSun 0:00 0 -
3902  {
3903  -8 /*fromYearTiny*/,
3904  -4 /*toYearTiny*/,
3905  9 /*inMonth*/,
3906  7 /*onDayOfWeek*/,
3907  0 /*onDayOfMonth*/,
3908  0 /*atTimeCode*/,
3909  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3910  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3911  '-' /*letter*/,
3912  },
3913  // Rule Kyrgyz 1997 2005 - Mar lastSun 2:30 1:00 -
3914  {
3915  -3 /*fromYearTiny*/,
3916  5 /*toYearTiny*/,
3917  3 /*inMonth*/,
3918  7 /*onDayOfWeek*/,
3919  0 /*onDayOfMonth*/,
3920  10 /*atTimeCode*/,
3921  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3922  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3923  '-' /*letter*/,
3924  },
3925  // Rule Kyrgyz 1997 2004 - Oct lastSun 2:30 0 -
3926  {
3927  -3 /*fromYearTiny*/,
3928  4 /*toYearTiny*/,
3929  10 /*inMonth*/,
3930  7 /*onDayOfWeek*/,
3931  0 /*onDayOfMonth*/,
3932  10 /*atTimeCode*/,
3933  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3934  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3935  '-' /*letter*/,
3936  },
3937 
3938 };
3939 
3940 
3941 
3942 const extended::ZonePolicy kPolicyKyrgyz ACE_TIME_PROGMEM = {
3943  kZoneRulesKyrgyz /*rules*/,
3944  nullptr /*letters*/,
3945  3 /*numRules*/,
3946  0 /*numLetters*/,
3947 };
3948 
3949 //---------------------------------------------------------------------------
3950 // Policy name: LH
3951 // Rules: 9
3952 // Memory (8-bit): 87
3953 // Memory (32-bit): 120
3954 //---------------------------------------------------------------------------
3955 
3956 static const extended::ZoneRule kZoneRulesLH[] ACE_TIME_PROGMEM = {
3957  // Rule LH 1987 1999 - Oct lastSun 2:00 0:30 -
3958  {
3959  -13 /*fromYearTiny*/,
3960  -1 /*toYearTiny*/,
3961  10 /*inMonth*/,
3962  7 /*onDayOfWeek*/,
3963  0 /*onDayOfMonth*/,
3964  8 /*atTimeCode*/,
3965  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3966  6 /*deltaCode ((deltaMinutes=30)/15 + 4)*/,
3967  '-' /*letter*/,
3968  },
3969  // Rule LH 1990 1995 - Mar Sun>=1 2:00 0 -
3970  {
3971  -10 /*fromYearTiny*/,
3972  -5 /*toYearTiny*/,
3973  3 /*inMonth*/,
3974  7 /*onDayOfWeek*/,
3975  1 /*onDayOfMonth*/,
3976  8 /*atTimeCode*/,
3977  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3978  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3979  '-' /*letter*/,
3980  },
3981  // Rule LH 1996 2005 - Mar lastSun 2:00 0 -
3982  {
3983  -4 /*fromYearTiny*/,
3984  5 /*toYearTiny*/,
3985  3 /*inMonth*/,
3986  7 /*onDayOfWeek*/,
3987  0 /*onDayOfMonth*/,
3988  8 /*atTimeCode*/,
3989  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3990  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3991  '-' /*letter*/,
3992  },
3993  // Rule LH 2000 only - Aug lastSun 2:00 0:30 -
3994  {
3995  0 /*fromYearTiny*/,
3996  0 /*toYearTiny*/,
3997  8 /*inMonth*/,
3998  7 /*onDayOfWeek*/,
3999  0 /*onDayOfMonth*/,
4000  8 /*atTimeCode*/,
4001  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4002  6 /*deltaCode ((deltaMinutes=30)/15 + 4)*/,
4003  '-' /*letter*/,
4004  },
4005  // Rule LH 2001 2007 - Oct lastSun 2:00 0:30 -
4006  {
4007  1 /*fromYearTiny*/,
4008  7 /*toYearTiny*/,
4009  10 /*inMonth*/,
4010  7 /*onDayOfWeek*/,
4011  0 /*onDayOfMonth*/,
4012  8 /*atTimeCode*/,
4013  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4014  6 /*deltaCode ((deltaMinutes=30)/15 + 4)*/,
4015  '-' /*letter*/,
4016  },
4017  // Rule LH 2006 only - Apr Sun>=1 2:00 0 -
4018  {
4019  6 /*fromYearTiny*/,
4020  6 /*toYearTiny*/,
4021  4 /*inMonth*/,
4022  7 /*onDayOfWeek*/,
4023  1 /*onDayOfMonth*/,
4024  8 /*atTimeCode*/,
4025  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4026  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4027  '-' /*letter*/,
4028  },
4029  // Rule LH 2007 only - Mar lastSun 2:00 0 -
4030  {
4031  7 /*fromYearTiny*/,
4032  7 /*toYearTiny*/,
4033  3 /*inMonth*/,
4034  7 /*onDayOfWeek*/,
4035  0 /*onDayOfMonth*/,
4036  8 /*atTimeCode*/,
4037  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4038  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4039  '-' /*letter*/,
4040  },
4041  // Rule LH 2008 max - Apr Sun>=1 2:00 0 -
4042  {
4043  8 /*fromYearTiny*/,
4044  126 /*toYearTiny*/,
4045  4 /*inMonth*/,
4046  7 /*onDayOfWeek*/,
4047  1 /*onDayOfMonth*/,
4048  8 /*atTimeCode*/,
4049  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4050  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4051  '-' /*letter*/,
4052  },
4053  // Rule LH 2008 max - Oct Sun>=1 2:00 0:30 -
4054  {
4055  8 /*fromYearTiny*/,
4056  126 /*toYearTiny*/,
4057  10 /*inMonth*/,
4058  7 /*onDayOfWeek*/,
4059  1 /*onDayOfMonth*/,
4060  8 /*atTimeCode*/,
4061  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4062  6 /*deltaCode ((deltaMinutes=30)/15 + 4)*/,
4063  '-' /*letter*/,
4064  },
4065 
4066 };
4067 
4068 
4069 
4070 const extended::ZonePolicy kPolicyLH ACE_TIME_PROGMEM = {
4071  kZoneRulesLH /*rules*/,
4072  nullptr /*letters*/,
4073  9 /*numRules*/,
4074  0 /*numLetters*/,
4075 };
4076 
4077 //---------------------------------------------------------------------------
4078 // Policy name: Lebanon
4079 // Rules: 3
4080 // Memory (8-bit): 33
4081 // Memory (32-bit): 48
4082 //---------------------------------------------------------------------------
4083 
4084 static const extended::ZoneRule kZoneRulesLebanon[] ACE_TIME_PROGMEM = {
4085  // Rule Lebanon 1993 max - Mar lastSun 0:00 1:00 S
4086  {
4087  -7 /*fromYearTiny*/,
4088  126 /*toYearTiny*/,
4089  3 /*inMonth*/,
4090  7 /*onDayOfWeek*/,
4091  0 /*onDayOfMonth*/,
4092  0 /*atTimeCode*/,
4093  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4094  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4095  'S' /*letter*/,
4096  },
4097  // Rule Lebanon 1993 1998 - Sep lastSun 0:00 0 -
4098  {
4099  -7 /*fromYearTiny*/,
4100  -2 /*toYearTiny*/,
4101  9 /*inMonth*/,
4102  7 /*onDayOfWeek*/,
4103  0 /*onDayOfMonth*/,
4104  0 /*atTimeCode*/,
4105  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4106  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4107  '-' /*letter*/,
4108  },
4109  // Rule Lebanon 1999 max - Oct lastSun 0:00 0 -
4110  {
4111  -1 /*fromYearTiny*/,
4112  126 /*toYearTiny*/,
4113  10 /*inMonth*/,
4114  7 /*onDayOfWeek*/,
4115  0 /*onDayOfMonth*/,
4116  0 /*atTimeCode*/,
4117  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4118  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4119  '-' /*letter*/,
4120  },
4121 
4122 };
4123 
4124 
4125 
4126 const extended::ZonePolicy kPolicyLebanon ACE_TIME_PROGMEM = {
4127  kZoneRulesLebanon /*rules*/,
4128  nullptr /*letters*/,
4129  3 /*numRules*/,
4130  0 /*numLetters*/,
4131 };
4132 
4133 //---------------------------------------------------------------------------
4134 // Policy name: Libya
4135 // Rules: 3
4136 // Memory (8-bit): 33
4137 // Memory (32-bit): 48
4138 //---------------------------------------------------------------------------
4139 
4140 static const extended::ZoneRule kZoneRulesLibya[] ACE_TIME_PROGMEM = {
4141  // Rule Libya 1997 only - Oct 4 0:00 0 -
4142  {
4143  -3 /*fromYearTiny*/,
4144  -3 /*toYearTiny*/,
4145  10 /*inMonth*/,
4146  0 /*onDayOfWeek*/,
4147  4 /*onDayOfMonth*/,
4148  0 /*atTimeCode*/,
4149  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4150  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4151  '-' /*letter*/,
4152  },
4153  // Rule Libya 2013 only - Mar lastFri 1:00 1:00 S
4154  {
4155  13 /*fromYearTiny*/,
4156  13 /*toYearTiny*/,
4157  3 /*inMonth*/,
4158  5 /*onDayOfWeek*/,
4159  0 /*onDayOfMonth*/,
4160  4 /*atTimeCode*/,
4161  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4162  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4163  'S' /*letter*/,
4164  },
4165  // Rule Libya 2013 only - Oct lastFri 2:00 0 -
4166  {
4167  13 /*fromYearTiny*/,
4168  13 /*toYearTiny*/,
4169  10 /*inMonth*/,
4170  5 /*onDayOfWeek*/,
4171  0 /*onDayOfMonth*/,
4172  8 /*atTimeCode*/,
4173  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4174  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4175  '-' /*letter*/,
4176  },
4177 
4178 };
4179 
4180 
4181 
4182 const extended::ZonePolicy kPolicyLibya ACE_TIME_PROGMEM = {
4183  kZoneRulesLibya /*rules*/,
4184  nullptr /*letters*/,
4185  3 /*numRules*/,
4186  0 /*numLetters*/,
4187 };
4188 
4189 //---------------------------------------------------------------------------
4190 // Policy name: Macau
4191 // Rules: 1
4192 // Memory (8-bit): 15
4193 // Memory (32-bit): 24
4194 //---------------------------------------------------------------------------
4195 
4196 static const extended::ZoneRule kZoneRulesMacau[] ACE_TIME_PROGMEM = {
4197  // Rule Macau 1979 only - Oct Sun>=16 03:30 0 S
4198  {
4199  -21 /*fromYearTiny*/,
4200  -21 /*toYearTiny*/,
4201  10 /*inMonth*/,
4202  7 /*onDayOfWeek*/,
4203  16 /*onDayOfMonth*/,
4204  14 /*atTimeCode*/,
4205  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4206  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4207  'S' /*letter*/,
4208  },
4209 
4210 };
4211 
4212 
4213 
4214 const extended::ZonePolicy kPolicyMacau ACE_TIME_PROGMEM = {
4215  kZoneRulesMacau /*rules*/,
4216  nullptr /*letters*/,
4217  1 /*numRules*/,
4218  0 /*numLetters*/,
4219 };
4220 
4221 //---------------------------------------------------------------------------
4222 // Policy name: Mauritius
4223 // Rules: 3
4224 // Memory (8-bit): 33
4225 // Memory (32-bit): 48
4226 //---------------------------------------------------------------------------
4227 
4228 static const extended::ZoneRule kZoneRulesMauritius[] ACE_TIME_PROGMEM = {
4229  // Rule Mauritius 1983 only - Mar 21 0:00 0 -
4230  {
4231  -17 /*fromYearTiny*/,
4232  -17 /*toYearTiny*/,
4233  3 /*inMonth*/,
4234  0 /*onDayOfWeek*/,
4235  21 /*onDayOfMonth*/,
4236  0 /*atTimeCode*/,
4237  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4238  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4239  '-' /*letter*/,
4240  },
4241  // Rule Mauritius 2008 only - Oct lastSun 2:00 1:00 -
4242  {
4243  8 /*fromYearTiny*/,
4244  8 /*toYearTiny*/,
4245  10 /*inMonth*/,
4246  7 /*onDayOfWeek*/,
4247  0 /*onDayOfMonth*/,
4248  8 /*atTimeCode*/,
4249  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4250  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4251  '-' /*letter*/,
4252  },
4253  // Rule Mauritius 2009 only - Mar lastSun 2:00 0 -
4254  {
4255  9 /*fromYearTiny*/,
4256  9 /*toYearTiny*/,
4257  3 /*inMonth*/,
4258  7 /*onDayOfWeek*/,
4259  0 /*onDayOfMonth*/,
4260  8 /*atTimeCode*/,
4261  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4262  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4263  '-' /*letter*/,
4264  },
4265 
4266 };
4267 
4268 
4269 
4270 const extended::ZonePolicy kPolicyMauritius ACE_TIME_PROGMEM = {
4271  kZoneRulesMauritius /*rules*/,
4272  nullptr /*letters*/,
4273  3 /*numRules*/,
4274  0 /*numLetters*/,
4275 };
4276 
4277 //---------------------------------------------------------------------------
4278 // Policy name: Mexico
4279 // Rules: 7
4280 // Memory (8-bit): 69
4281 // Memory (32-bit): 96
4282 //---------------------------------------------------------------------------
4283 
4284 static const extended::ZoneRule kZoneRulesMexico[] ACE_TIME_PROGMEM = {
4285  // Rule Mexico 1950 only - Jul 30 0:00 0 S
4286  {
4287  -50 /*fromYearTiny*/,
4288  -50 /*toYearTiny*/,
4289  7 /*inMonth*/,
4290  0 /*onDayOfWeek*/,
4291  30 /*onDayOfMonth*/,
4292  0 /*atTimeCode*/,
4293  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4294  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4295  'S' /*letter*/,
4296  },
4297  // Rule Mexico 1996 2000 - Apr Sun>=1 2:00 1:00 D
4298  {
4299  -4 /*fromYearTiny*/,
4300  0 /*toYearTiny*/,
4301  4 /*inMonth*/,
4302  7 /*onDayOfWeek*/,
4303  1 /*onDayOfMonth*/,
4304  8 /*atTimeCode*/,
4305  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4306  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4307  'D' /*letter*/,
4308  },
4309  // Rule Mexico 1996 2000 - Oct lastSun 2:00 0 S
4310  {
4311  -4 /*fromYearTiny*/,
4312  0 /*toYearTiny*/,
4313  10 /*inMonth*/,
4314  7 /*onDayOfWeek*/,
4315  0 /*onDayOfMonth*/,
4316  8 /*atTimeCode*/,
4317  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4318  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4319  'S' /*letter*/,
4320  },
4321  // Rule Mexico 2001 only - May Sun>=1 2:00 1:00 D
4322  {
4323  1 /*fromYearTiny*/,
4324  1 /*toYearTiny*/,
4325  5 /*inMonth*/,
4326  7 /*onDayOfWeek*/,
4327  1 /*onDayOfMonth*/,
4328  8 /*atTimeCode*/,
4329  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4330  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4331  'D' /*letter*/,
4332  },
4333  // Rule Mexico 2001 only - Sep lastSun 2:00 0 S
4334  {
4335  1 /*fromYearTiny*/,
4336  1 /*toYearTiny*/,
4337  9 /*inMonth*/,
4338  7 /*onDayOfWeek*/,
4339  0 /*onDayOfMonth*/,
4340  8 /*atTimeCode*/,
4341  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4342  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4343  'S' /*letter*/,
4344  },
4345  // Rule Mexico 2002 max - Apr Sun>=1 2:00 1:00 D
4346  {
4347  2 /*fromYearTiny*/,
4348  126 /*toYearTiny*/,
4349  4 /*inMonth*/,
4350  7 /*onDayOfWeek*/,
4351  1 /*onDayOfMonth*/,
4352  8 /*atTimeCode*/,
4353  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4354  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4355  'D' /*letter*/,
4356  },
4357  // Rule Mexico 2002 max - Oct lastSun 2:00 0 S
4358  {
4359  2 /*fromYearTiny*/,
4360  126 /*toYearTiny*/,
4361  10 /*inMonth*/,
4362  7 /*onDayOfWeek*/,
4363  0 /*onDayOfMonth*/,
4364  8 /*atTimeCode*/,
4365  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4366  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4367  'S' /*letter*/,
4368  },
4369 
4370 };
4371 
4372 
4373 
4374 const extended::ZonePolicy kPolicyMexico ACE_TIME_PROGMEM = {
4375  kZoneRulesMexico /*rules*/,
4376  nullptr /*letters*/,
4377  7 /*numRules*/,
4378  0 /*numLetters*/,
4379 };
4380 
4381 //---------------------------------------------------------------------------
4382 // Policy name: Moldova
4383 // Rules: 2
4384 // Memory (8-bit): 24
4385 // Memory (32-bit): 36
4386 //---------------------------------------------------------------------------
4387 
4388 static const extended::ZoneRule kZoneRulesMoldova[] ACE_TIME_PROGMEM = {
4389  // Rule Moldova 1997 max - Mar lastSun 2:00 1:00 S
4390  {
4391  -3 /*fromYearTiny*/,
4392  126 /*toYearTiny*/,
4393  3 /*inMonth*/,
4394  7 /*onDayOfWeek*/,
4395  0 /*onDayOfMonth*/,
4396  8 /*atTimeCode*/,
4397  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4398  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4399  'S' /*letter*/,
4400  },
4401  // Rule Moldova 1997 max - Oct lastSun 3:00 0 -
4402  {
4403  -3 /*fromYearTiny*/,
4404  126 /*toYearTiny*/,
4405  10 /*inMonth*/,
4406  7 /*onDayOfWeek*/,
4407  0 /*onDayOfMonth*/,
4408  12 /*atTimeCode*/,
4409  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4410  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4411  '-' /*letter*/,
4412  },
4413 
4414 };
4415 
4416 
4417 
4418 const extended::ZonePolicy kPolicyMoldova ACE_TIME_PROGMEM = {
4419  kZoneRulesMoldova /*rules*/,
4420  nullptr /*letters*/,
4421  2 /*numRules*/,
4422  0 /*numLetters*/,
4423 };
4424 
4425 //---------------------------------------------------------------------------
4426 // Policy name: Moncton
4427 // Rules: 3
4428 // Memory (8-bit): 33
4429 // Memory (32-bit): 48
4430 //---------------------------------------------------------------------------
4431 
4432 static const extended::ZoneRule kZoneRulesMoncton[] ACE_TIME_PROGMEM = {
4433  // Rule Moncton 1957 1972 - Oct lastSun 2:00 0 S
4434  {
4435  -43 /*fromYearTiny*/,
4436  -28 /*toYearTiny*/,
4437  10 /*inMonth*/,
4438  7 /*onDayOfWeek*/,
4439  0 /*onDayOfMonth*/,
4440  8 /*atTimeCode*/,
4441  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4442  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4443  'S' /*letter*/,
4444  },
4445  // Rule Moncton 1993 2006 - Apr Sun>=1 0:01 1:00 D
4446  {
4447  -7 /*fromYearTiny*/,
4448  6 /*toYearTiny*/,
4449  4 /*inMonth*/,
4450  7 /*onDayOfWeek*/,
4451  1 /*onDayOfMonth*/,
4452  0 /*atTimeCode*/,
4453  1 /*atTimeModifier (kSuffixW + minute=1)*/,
4454  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4455  'D' /*letter*/,
4456  },
4457  // Rule Moncton 1993 2006 - Oct lastSun 0:01 0 S
4458  {
4459  -7 /*fromYearTiny*/,
4460  6 /*toYearTiny*/,
4461  10 /*inMonth*/,
4462  7 /*onDayOfWeek*/,
4463  0 /*onDayOfMonth*/,
4464  0 /*atTimeCode*/,
4465  1 /*atTimeModifier (kSuffixW + minute=1)*/,
4466  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4467  'S' /*letter*/,
4468  },
4469 
4470 };
4471 
4472 
4473 
4474 const extended::ZonePolicy kPolicyMoncton ACE_TIME_PROGMEM = {
4475  kZoneRulesMoncton /*rules*/,
4476  nullptr /*letters*/,
4477  3 /*numRules*/,
4478  0 /*numLetters*/,
4479 };
4480 
4481 //---------------------------------------------------------------------------
4482 // Policy name: Mongol
4483 // Rules: 6
4484 // Memory (8-bit): 60
4485 // Memory (32-bit): 84
4486 //---------------------------------------------------------------------------
4487 
4488 static const extended::ZoneRule kZoneRulesMongol[] ACE_TIME_PROGMEM = {
4489  // Rule Mongol 1984 1998 - Sep lastSun 0:00 0 -
4490  {
4491  -16 /*fromYearTiny*/,
4492  -2 /*toYearTiny*/,
4493  9 /*inMonth*/,
4494  7 /*onDayOfWeek*/,
4495  0 /*onDayOfMonth*/,
4496  0 /*atTimeCode*/,
4497  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4498  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4499  '-' /*letter*/,
4500  },
4501  // Rule Mongol 2001 only - Apr lastSat 2:00 1:00 -
4502  {
4503  1 /*fromYearTiny*/,
4504  1 /*toYearTiny*/,
4505  4 /*inMonth*/,
4506  6 /*onDayOfWeek*/,
4507  0 /*onDayOfMonth*/,
4508  8 /*atTimeCode*/,
4509  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4510  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4511  '-' /*letter*/,
4512  },
4513  // Rule Mongol 2001 2006 - Sep lastSat 2:00 0 -
4514  {
4515  1 /*fromYearTiny*/,
4516  6 /*toYearTiny*/,
4517  9 /*inMonth*/,
4518  6 /*onDayOfWeek*/,
4519  0 /*onDayOfMonth*/,
4520  8 /*atTimeCode*/,
4521  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4522  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4523  '-' /*letter*/,
4524  },
4525  // Rule Mongol 2002 2006 - Mar lastSat 2:00 1:00 -
4526  {
4527  2 /*fromYearTiny*/,
4528  6 /*toYearTiny*/,
4529  3 /*inMonth*/,
4530  6 /*onDayOfWeek*/,
4531  0 /*onDayOfMonth*/,
4532  8 /*atTimeCode*/,
4533  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4534  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4535  '-' /*letter*/,
4536  },
4537  // Rule Mongol 2015 2016 - Mar lastSat 2:00 1:00 -
4538  {
4539  15 /*fromYearTiny*/,
4540  16 /*toYearTiny*/,
4541  3 /*inMonth*/,
4542  6 /*onDayOfWeek*/,
4543  0 /*onDayOfMonth*/,
4544  8 /*atTimeCode*/,
4545  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4546  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4547  '-' /*letter*/,
4548  },
4549  // Rule Mongol 2015 2016 - Sep lastSat 0:00 0 -
4550  {
4551  15 /*fromYearTiny*/,
4552  16 /*toYearTiny*/,
4553  9 /*inMonth*/,
4554  6 /*onDayOfWeek*/,
4555  0 /*onDayOfMonth*/,
4556  0 /*atTimeCode*/,
4557  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4558  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4559  '-' /*letter*/,
4560  },
4561 
4562 };
4563 
4564 
4565 
4566 const extended::ZonePolicy kPolicyMongol ACE_TIME_PROGMEM = {
4567  kZoneRulesMongol /*rules*/,
4568  nullptr /*letters*/,
4569  6 /*numRules*/,
4570  0 /*numLetters*/,
4571 };
4572 
4573 //---------------------------------------------------------------------------
4574 // Policy name: Morocco
4575 // Rules: 94
4576 // Memory (8-bit): 852
4577 // Memory (32-bit): 1140
4578 //---------------------------------------------------------------------------
4579 
4580 static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = {
4581  // Rule Morocco 1978 only - Aug 4 0:00 0 -
4582  {
4583  -22 /*fromYearTiny*/,
4584  -22 /*toYearTiny*/,
4585  8 /*inMonth*/,
4586  0 /*onDayOfWeek*/,
4587  4 /*onDayOfMonth*/,
4588  0 /*atTimeCode*/,
4589  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4590  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4591  '-' /*letter*/,
4592  },
4593  // Rule Morocco 2008 only - Jun 1 0:00 1:00 -
4594  {
4595  8 /*fromYearTiny*/,
4596  8 /*toYearTiny*/,
4597  6 /*inMonth*/,
4598  0 /*onDayOfWeek*/,
4599  1 /*onDayOfMonth*/,
4600  0 /*atTimeCode*/,
4601  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4602  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4603  '-' /*letter*/,
4604  },
4605  // Rule Morocco 2008 only - Sep 1 0:00 0 -
4606  {
4607  8 /*fromYearTiny*/,
4608  8 /*toYearTiny*/,
4609  9 /*inMonth*/,
4610  0 /*onDayOfWeek*/,
4611  1 /*onDayOfMonth*/,
4612  0 /*atTimeCode*/,
4613  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4614  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4615  '-' /*letter*/,
4616  },
4617  // Rule Morocco 2009 only - Jun 1 0:00 1:00 -
4618  {
4619  9 /*fromYearTiny*/,
4620  9 /*toYearTiny*/,
4621  6 /*inMonth*/,
4622  0 /*onDayOfWeek*/,
4623  1 /*onDayOfMonth*/,
4624  0 /*atTimeCode*/,
4625  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4626  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4627  '-' /*letter*/,
4628  },
4629  // Rule Morocco 2009 only - Aug 21 0:00 0 -
4630  {
4631  9 /*fromYearTiny*/,
4632  9 /*toYearTiny*/,
4633  8 /*inMonth*/,
4634  0 /*onDayOfWeek*/,
4635  21 /*onDayOfMonth*/,
4636  0 /*atTimeCode*/,
4637  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4638  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4639  '-' /*letter*/,
4640  },
4641  // Rule Morocco 2010 only - May 2 0:00 1:00 -
4642  {
4643  10 /*fromYearTiny*/,
4644  10 /*toYearTiny*/,
4645  5 /*inMonth*/,
4646  0 /*onDayOfWeek*/,
4647  2 /*onDayOfMonth*/,
4648  0 /*atTimeCode*/,
4649  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4650  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4651  '-' /*letter*/,
4652  },
4653  // Rule Morocco 2010 only - Aug 8 0:00 0 -
4654  {
4655  10 /*fromYearTiny*/,
4656  10 /*toYearTiny*/,
4657  8 /*inMonth*/,
4658  0 /*onDayOfWeek*/,
4659  8 /*onDayOfMonth*/,
4660  0 /*atTimeCode*/,
4661  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4662  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4663  '-' /*letter*/,
4664  },
4665  // Rule Morocco 2011 only - Apr 3 0:00 1:00 -
4666  {
4667  11 /*fromYearTiny*/,
4668  11 /*toYearTiny*/,
4669  4 /*inMonth*/,
4670  0 /*onDayOfWeek*/,
4671  3 /*onDayOfMonth*/,
4672  0 /*atTimeCode*/,
4673  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4674  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4675  '-' /*letter*/,
4676  },
4677  // Rule Morocco 2011 only - Jul 31 0:00 0 -
4678  {
4679  11 /*fromYearTiny*/,
4680  11 /*toYearTiny*/,
4681  7 /*inMonth*/,
4682  0 /*onDayOfWeek*/,
4683  31 /*onDayOfMonth*/,
4684  0 /*atTimeCode*/,
4685  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4686  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4687  '-' /*letter*/,
4688  },
4689  // Rule Morocco 2012 2013 - Apr lastSun 2:00 1:00 -
4690  {
4691  12 /*fromYearTiny*/,
4692  13 /*toYearTiny*/,
4693  4 /*inMonth*/,
4694  7 /*onDayOfWeek*/,
4695  0 /*onDayOfMonth*/,
4696  8 /*atTimeCode*/,
4697  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4698  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4699  '-' /*letter*/,
4700  },
4701  // Rule Morocco 2012 only - Jul 20 3:00 0 -
4702  {
4703  12 /*fromYearTiny*/,
4704  12 /*toYearTiny*/,
4705  7 /*inMonth*/,
4706  0 /*onDayOfWeek*/,
4707  20 /*onDayOfMonth*/,
4708  12 /*atTimeCode*/,
4709  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4710  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4711  '-' /*letter*/,
4712  },
4713  // Rule Morocco 2012 only - Aug 20 2:00 1:00 -
4714  {
4715  12 /*fromYearTiny*/,
4716  12 /*toYearTiny*/,
4717  8 /*inMonth*/,
4718  0 /*onDayOfWeek*/,
4719  20 /*onDayOfMonth*/,
4720  8 /*atTimeCode*/,
4721  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4722  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4723  '-' /*letter*/,
4724  },
4725  // Rule Morocco 2012 only - Sep 30 3:00 0 -
4726  {
4727  12 /*fromYearTiny*/,
4728  12 /*toYearTiny*/,
4729  9 /*inMonth*/,
4730  0 /*onDayOfWeek*/,
4731  30 /*onDayOfMonth*/,
4732  12 /*atTimeCode*/,
4733  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4734  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4735  '-' /*letter*/,
4736  },
4737  // Rule Morocco 2013 only - Jul 7 3:00 0 -
4738  {
4739  13 /*fromYearTiny*/,
4740  13 /*toYearTiny*/,
4741  7 /*inMonth*/,
4742  0 /*onDayOfWeek*/,
4743  7 /*onDayOfMonth*/,
4744  12 /*atTimeCode*/,
4745  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4746  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4747  '-' /*letter*/,
4748  },
4749  // Rule Morocco 2013 only - Aug 10 2:00 1:00 -
4750  {
4751  13 /*fromYearTiny*/,
4752  13 /*toYearTiny*/,
4753  8 /*inMonth*/,
4754  0 /*onDayOfWeek*/,
4755  10 /*onDayOfMonth*/,
4756  8 /*atTimeCode*/,
4757  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4758  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4759  '-' /*letter*/,
4760  },
4761  // Rule Morocco 2013 2018 - Oct lastSun 3:00 0 -
4762  {
4763  13 /*fromYearTiny*/,
4764  18 /*toYearTiny*/,
4765  10 /*inMonth*/,
4766  7 /*onDayOfWeek*/,
4767  0 /*onDayOfMonth*/,
4768  12 /*atTimeCode*/,
4769  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4770  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4771  '-' /*letter*/,
4772  },
4773  // Rule Morocco 2014 2018 - Mar lastSun 2:00 1:00 -
4774  {
4775  14 /*fromYearTiny*/,
4776  18 /*toYearTiny*/,
4777  3 /*inMonth*/,
4778  7 /*onDayOfWeek*/,
4779  0 /*onDayOfMonth*/,
4780  8 /*atTimeCode*/,
4781  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4782  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4783  '-' /*letter*/,
4784  },
4785  // Rule Morocco 2014 only - Jun 28 3:00 0 -
4786  {
4787  14 /*fromYearTiny*/,
4788  14 /*toYearTiny*/,
4789  6 /*inMonth*/,
4790  0 /*onDayOfWeek*/,
4791  28 /*onDayOfMonth*/,
4792  12 /*atTimeCode*/,
4793  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4794  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4795  '-' /*letter*/,
4796  },
4797  // Rule Morocco 2014 only - Aug 2 2:00 1:00 -
4798  {
4799  14 /*fromYearTiny*/,
4800  14 /*toYearTiny*/,
4801  8 /*inMonth*/,
4802  0 /*onDayOfWeek*/,
4803  2 /*onDayOfMonth*/,
4804  8 /*atTimeCode*/,
4805  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4806  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4807  '-' /*letter*/,
4808  },
4809  // Rule Morocco 2015 only - Jun 14 3:00 0 -
4810  {
4811  15 /*fromYearTiny*/,
4812  15 /*toYearTiny*/,
4813  6 /*inMonth*/,
4814  0 /*onDayOfWeek*/,
4815  14 /*onDayOfMonth*/,
4816  12 /*atTimeCode*/,
4817  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4818  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4819  '-' /*letter*/,
4820  },
4821  // Rule Morocco 2015 only - Jul 19 2:00 1:00 -
4822  {
4823  15 /*fromYearTiny*/,
4824  15 /*toYearTiny*/,
4825  7 /*inMonth*/,
4826  0 /*onDayOfWeek*/,
4827  19 /*onDayOfMonth*/,
4828  8 /*atTimeCode*/,
4829  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4830  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4831  '-' /*letter*/,
4832  },
4833  // Rule Morocco 2016 only - Jun 5 3:00 0 -
4834  {
4835  16 /*fromYearTiny*/,
4836  16 /*toYearTiny*/,
4837  6 /*inMonth*/,
4838  0 /*onDayOfWeek*/,
4839  5 /*onDayOfMonth*/,
4840  12 /*atTimeCode*/,
4841  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4842  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4843  '-' /*letter*/,
4844  },
4845  // Rule Morocco 2016 only - Jul 10 2:00 1:00 -
4846  {
4847  16 /*fromYearTiny*/,
4848  16 /*toYearTiny*/,
4849  7 /*inMonth*/,
4850  0 /*onDayOfWeek*/,
4851  10 /*onDayOfMonth*/,
4852  8 /*atTimeCode*/,
4853  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4854  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4855  '-' /*letter*/,
4856  },
4857  // Rule Morocco 2017 only - May 21 3:00 0 -
4858  {
4859  17 /*fromYearTiny*/,
4860  17 /*toYearTiny*/,
4861  5 /*inMonth*/,
4862  0 /*onDayOfWeek*/,
4863  21 /*onDayOfMonth*/,
4864  12 /*atTimeCode*/,
4865  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4866  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4867  '-' /*letter*/,
4868  },
4869  // Rule Morocco 2017 only - Jul 2 2:00 1:00 -
4870  {
4871  17 /*fromYearTiny*/,
4872  17 /*toYearTiny*/,
4873  7 /*inMonth*/,
4874  0 /*onDayOfWeek*/,
4875  2 /*onDayOfMonth*/,
4876  8 /*atTimeCode*/,
4877  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4878  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4879  '-' /*letter*/,
4880  },
4881  // Rule Morocco 2018 only - May 13 3:00 0 -
4882  {
4883  18 /*fromYearTiny*/,
4884  18 /*toYearTiny*/,
4885  5 /*inMonth*/,
4886  0 /*onDayOfWeek*/,
4887  13 /*onDayOfMonth*/,
4888  12 /*atTimeCode*/,
4889  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4890  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4891  '-' /*letter*/,
4892  },
4893  // Rule Morocco 2018 only - Jun 17 2:00 1:00 -
4894  {
4895  18 /*fromYearTiny*/,
4896  18 /*toYearTiny*/,
4897  6 /*inMonth*/,
4898  0 /*onDayOfWeek*/,
4899  17 /*onDayOfMonth*/,
4900  8 /*atTimeCode*/,
4901  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4902  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4903  '-' /*letter*/,
4904  },
4905  // Rule Morocco 2019 only - May 5 3:00 -1:00 -
4906  {
4907  19 /*fromYearTiny*/,
4908  19 /*toYearTiny*/,
4909  5 /*inMonth*/,
4910  0 /*onDayOfWeek*/,
4911  5 /*onDayOfMonth*/,
4912  12 /*atTimeCode*/,
4913  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4914  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
4915  '-' /*letter*/,
4916  },
4917  // Rule Morocco 2019 only - Jun 9 2:00 0 -
4918  {
4919  19 /*fromYearTiny*/,
4920  19 /*toYearTiny*/,
4921  6 /*inMonth*/,
4922  0 /*onDayOfWeek*/,
4923  9 /*onDayOfMonth*/,
4924  8 /*atTimeCode*/,
4925  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4926  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4927  '-' /*letter*/,
4928  },
4929  // Rule Morocco 2020 only - Apr 19 3:00 -1:00 -
4930  {
4931  20 /*fromYearTiny*/,
4932  20 /*toYearTiny*/,
4933  4 /*inMonth*/,
4934  0 /*onDayOfWeek*/,
4935  19 /*onDayOfMonth*/,
4936  12 /*atTimeCode*/,
4937  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4938  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
4939  '-' /*letter*/,
4940  },
4941  // Rule Morocco 2020 only - May 31 2:00 0 -
4942  {
4943  20 /*fromYearTiny*/,
4944  20 /*toYearTiny*/,
4945  5 /*inMonth*/,
4946  0 /*onDayOfWeek*/,
4947  31 /*onDayOfMonth*/,
4948  8 /*atTimeCode*/,
4949  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4950  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4951  '-' /*letter*/,
4952  },
4953  // Rule Morocco 2021 only - Apr 11 3:00 -1:00 -
4954  {
4955  21 /*fromYearTiny*/,
4956  21 /*toYearTiny*/,
4957  4 /*inMonth*/,
4958  0 /*onDayOfWeek*/,
4959  11 /*onDayOfMonth*/,
4960  12 /*atTimeCode*/,
4961  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4962  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
4963  '-' /*letter*/,
4964  },
4965  // Rule Morocco 2021 only - May 16 2:00 0 -
4966  {
4967  21 /*fromYearTiny*/,
4968  21 /*toYearTiny*/,
4969  5 /*inMonth*/,
4970  0 /*onDayOfWeek*/,
4971  16 /*onDayOfMonth*/,
4972  8 /*atTimeCode*/,
4973  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4974  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4975  '-' /*letter*/,
4976  },
4977  // Rule Morocco 2022 only - Mar 27 3:00 -1:00 -
4978  {
4979  22 /*fromYearTiny*/,
4980  22 /*toYearTiny*/,
4981  3 /*inMonth*/,
4982  0 /*onDayOfWeek*/,
4983  27 /*onDayOfMonth*/,
4984  12 /*atTimeCode*/,
4985  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4986  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
4987  '-' /*letter*/,
4988  },
4989  // Rule Morocco 2022 only - May 8 2:00 0 -
4990  {
4991  22 /*fromYearTiny*/,
4992  22 /*toYearTiny*/,
4993  5 /*inMonth*/,
4994  0 /*onDayOfWeek*/,
4995  8 /*onDayOfMonth*/,
4996  8 /*atTimeCode*/,
4997  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4998  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4999  '-' /*letter*/,
5000  },
5001  // Rule Morocco 2023 only - Mar 19 3:00 -1:00 -
5002  {
5003  23 /*fromYearTiny*/,
5004  23 /*toYearTiny*/,
5005  3 /*inMonth*/,
5006  0 /*onDayOfWeek*/,
5007  19 /*onDayOfMonth*/,
5008  12 /*atTimeCode*/,
5009  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5010  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5011  '-' /*letter*/,
5012  },
5013  // Rule Morocco 2023 only - Apr 30 2:00 0 -
5014  {
5015  23 /*fromYearTiny*/,
5016  23 /*toYearTiny*/,
5017  4 /*inMonth*/,
5018  0 /*onDayOfWeek*/,
5019  30 /*onDayOfMonth*/,
5020  8 /*atTimeCode*/,
5021  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5022  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5023  '-' /*letter*/,
5024  },
5025  // Rule Morocco 2024 only - Mar 10 3:00 -1:00 -
5026  {
5027  24 /*fromYearTiny*/,
5028  24 /*toYearTiny*/,
5029  3 /*inMonth*/,
5030  0 /*onDayOfWeek*/,
5031  10 /*onDayOfMonth*/,
5032  12 /*atTimeCode*/,
5033  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5034  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5035  '-' /*letter*/,
5036  },
5037  // Rule Morocco 2024 only - Apr 14 2:00 0 -
5038  {
5039  24 /*fromYearTiny*/,
5040  24 /*toYearTiny*/,
5041  4 /*inMonth*/,
5042  0 /*onDayOfWeek*/,
5043  14 /*onDayOfMonth*/,
5044  8 /*atTimeCode*/,
5045  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5046  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5047  '-' /*letter*/,
5048  },
5049  // Rule Morocco 2025 only - Feb 23 3:00 -1:00 -
5050  {
5051  25 /*fromYearTiny*/,
5052  25 /*toYearTiny*/,
5053  2 /*inMonth*/,
5054  0 /*onDayOfWeek*/,
5055  23 /*onDayOfMonth*/,
5056  12 /*atTimeCode*/,
5057  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5058  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5059  '-' /*letter*/,
5060  },
5061  // Rule Morocco 2025 only - Apr 6 2:00 0 -
5062  {
5063  25 /*fromYearTiny*/,
5064  25 /*toYearTiny*/,
5065  4 /*inMonth*/,
5066  0 /*onDayOfWeek*/,
5067  6 /*onDayOfMonth*/,
5068  8 /*atTimeCode*/,
5069  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5070  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5071  '-' /*letter*/,
5072  },
5073  // Rule Morocco 2026 only - Feb 15 3:00 -1:00 -
5074  {
5075  26 /*fromYearTiny*/,
5076  26 /*toYearTiny*/,
5077  2 /*inMonth*/,
5078  0 /*onDayOfWeek*/,
5079  15 /*onDayOfMonth*/,
5080  12 /*atTimeCode*/,
5081  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5082  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5083  '-' /*letter*/,
5084  },
5085  // Rule Morocco 2026 only - Mar 22 2:00 0 -
5086  {
5087  26 /*fromYearTiny*/,
5088  26 /*toYearTiny*/,
5089  3 /*inMonth*/,
5090  0 /*onDayOfWeek*/,
5091  22 /*onDayOfMonth*/,
5092  8 /*atTimeCode*/,
5093  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5094  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5095  '-' /*letter*/,
5096  },
5097  // Rule Morocco 2027 only - Feb 7 3:00 -1:00 -
5098  {
5099  27 /*fromYearTiny*/,
5100  27 /*toYearTiny*/,
5101  2 /*inMonth*/,
5102  0 /*onDayOfWeek*/,
5103  7 /*onDayOfMonth*/,
5104  12 /*atTimeCode*/,
5105  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5106  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5107  '-' /*letter*/,
5108  },
5109  // Rule Morocco 2027 only - Mar 14 2:00 0 -
5110  {
5111  27 /*fromYearTiny*/,
5112  27 /*toYearTiny*/,
5113  3 /*inMonth*/,
5114  0 /*onDayOfWeek*/,
5115  14 /*onDayOfMonth*/,
5116  8 /*atTimeCode*/,
5117  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5118  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5119  '-' /*letter*/,
5120  },
5121  // Rule Morocco 2028 only - Jan 23 3:00 -1:00 -
5122  {
5123  28 /*fromYearTiny*/,
5124  28 /*toYearTiny*/,
5125  1 /*inMonth*/,
5126  0 /*onDayOfWeek*/,
5127  23 /*onDayOfMonth*/,
5128  12 /*atTimeCode*/,
5129  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5130  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5131  '-' /*letter*/,
5132  },
5133  // Rule Morocco 2028 only - Mar 5 2:00 0 -
5134  {
5135  28 /*fromYearTiny*/,
5136  28 /*toYearTiny*/,
5137  3 /*inMonth*/,
5138  0 /*onDayOfWeek*/,
5139  5 /*onDayOfMonth*/,
5140  8 /*atTimeCode*/,
5141  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5142  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5143  '-' /*letter*/,
5144  },
5145  // Rule Morocco 2029 only - Jan 14 3:00 -1:00 -
5146  {
5147  29 /*fromYearTiny*/,
5148  29 /*toYearTiny*/,
5149  1 /*inMonth*/,
5150  0 /*onDayOfWeek*/,
5151  14 /*onDayOfMonth*/,
5152  12 /*atTimeCode*/,
5153  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5154  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5155  '-' /*letter*/,
5156  },
5157  // Rule Morocco 2029 only - Feb 18 2:00 0 -
5158  {
5159  29 /*fromYearTiny*/,
5160  29 /*toYearTiny*/,
5161  2 /*inMonth*/,
5162  0 /*onDayOfWeek*/,
5163  18 /*onDayOfMonth*/,
5164  8 /*atTimeCode*/,
5165  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5166  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5167  '-' /*letter*/,
5168  },
5169  // Rule Morocco 2029 only - Dec 30 3:00 -1:00 -
5170  {
5171  29 /*fromYearTiny*/,
5172  29 /*toYearTiny*/,
5173  12 /*inMonth*/,
5174  0 /*onDayOfWeek*/,
5175  30 /*onDayOfMonth*/,
5176  12 /*atTimeCode*/,
5177  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5178  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5179  '-' /*letter*/,
5180  },
5181  // Rule Morocco 2030 only - Feb 10 2:00 0 -
5182  {
5183  30 /*fromYearTiny*/,
5184  30 /*toYearTiny*/,
5185  2 /*inMonth*/,
5186  0 /*onDayOfWeek*/,
5187  10 /*onDayOfMonth*/,
5188  8 /*atTimeCode*/,
5189  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5190  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5191  '-' /*letter*/,
5192  },
5193  // Rule Morocco 2030 only - Dec 22 3:00 -1:00 -
5194  {
5195  30 /*fromYearTiny*/,
5196  30 /*toYearTiny*/,
5197  12 /*inMonth*/,
5198  0 /*onDayOfWeek*/,
5199  22 /*onDayOfMonth*/,
5200  12 /*atTimeCode*/,
5201  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5202  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5203  '-' /*letter*/,
5204  },
5205  // Rule Morocco 2031 only - Feb 2 2:00 0 -
5206  {
5207  31 /*fromYearTiny*/,
5208  31 /*toYearTiny*/,
5209  2 /*inMonth*/,
5210  0 /*onDayOfWeek*/,
5211  2 /*onDayOfMonth*/,
5212  8 /*atTimeCode*/,
5213  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5214  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5215  '-' /*letter*/,
5216  },
5217  // Rule Morocco 2031 only - Dec 14 3:00 -1:00 -
5218  {
5219  31 /*fromYearTiny*/,
5220  31 /*toYearTiny*/,
5221  12 /*inMonth*/,
5222  0 /*onDayOfWeek*/,
5223  14 /*onDayOfMonth*/,
5224  12 /*atTimeCode*/,
5225  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5226  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5227  '-' /*letter*/,
5228  },
5229  // Rule Morocco 2032 only - Jan 18 2:00 0 -
5230  {
5231  32 /*fromYearTiny*/,
5232  32 /*toYearTiny*/,
5233  1 /*inMonth*/,
5234  0 /*onDayOfWeek*/,
5235  18 /*onDayOfMonth*/,
5236  8 /*atTimeCode*/,
5237  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5238  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5239  '-' /*letter*/,
5240  },
5241  // Rule Morocco 2032 only - Nov 28 3:00 -1:00 -
5242  {
5243  32 /*fromYearTiny*/,
5244  32 /*toYearTiny*/,
5245  11 /*inMonth*/,
5246  0 /*onDayOfWeek*/,
5247  28 /*onDayOfMonth*/,
5248  12 /*atTimeCode*/,
5249  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5250  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5251  '-' /*letter*/,
5252  },
5253  // Rule Morocco 2033 only - Jan 9 2:00 0 -
5254  {
5255  33 /*fromYearTiny*/,
5256  33 /*toYearTiny*/,
5257  1 /*inMonth*/,
5258  0 /*onDayOfWeek*/,
5259  9 /*onDayOfMonth*/,
5260  8 /*atTimeCode*/,
5261  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5262  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5263  '-' /*letter*/,
5264  },
5265  // Rule Morocco 2033 only - Nov 20 3:00 -1:00 -
5266  {
5267  33 /*fromYearTiny*/,
5268  33 /*toYearTiny*/,
5269  11 /*inMonth*/,
5270  0 /*onDayOfWeek*/,
5271  20 /*onDayOfMonth*/,
5272  12 /*atTimeCode*/,
5273  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5274  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5275  '-' /*letter*/,
5276  },
5277  // Rule Morocco 2033 only - Dec 25 2:00 0 -
5278  {
5279  33 /*fromYearTiny*/,
5280  33 /*toYearTiny*/,
5281  12 /*inMonth*/,
5282  0 /*onDayOfWeek*/,
5283  25 /*onDayOfMonth*/,
5284  8 /*atTimeCode*/,
5285  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5286  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5287  '-' /*letter*/,
5288  },
5289  // Rule Morocco 2034 only - Nov 5 3:00 -1:00 -
5290  {
5291  34 /*fromYearTiny*/,
5292  34 /*toYearTiny*/,
5293  11 /*inMonth*/,
5294  0 /*onDayOfWeek*/,
5295  5 /*onDayOfMonth*/,
5296  12 /*atTimeCode*/,
5297  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5298  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5299  '-' /*letter*/,
5300  },
5301  // Rule Morocco 2034 only - Dec 17 2:00 0 -
5302  {
5303  34 /*fromYearTiny*/,
5304  34 /*toYearTiny*/,
5305  12 /*inMonth*/,
5306  0 /*onDayOfWeek*/,
5307  17 /*onDayOfMonth*/,
5308  8 /*atTimeCode*/,
5309  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5310  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5311  '-' /*letter*/,
5312  },
5313  // Rule Morocco 2035 only - Oct 28 3:00 -1:00 -
5314  {
5315  35 /*fromYearTiny*/,
5316  35 /*toYearTiny*/,
5317  10 /*inMonth*/,
5318  0 /*onDayOfWeek*/,
5319  28 /*onDayOfMonth*/,
5320  12 /*atTimeCode*/,
5321  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5322  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5323  '-' /*letter*/,
5324  },
5325  // Rule Morocco 2035 only - Dec 9 2:00 0 -
5326  {
5327  35 /*fromYearTiny*/,
5328  35 /*toYearTiny*/,
5329  12 /*inMonth*/,
5330  0 /*onDayOfWeek*/,
5331  9 /*onDayOfMonth*/,
5332  8 /*atTimeCode*/,
5333  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5334  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5335  '-' /*letter*/,
5336  },
5337  // Rule Morocco 2036 only - Oct 19 3:00 -1:00 -
5338  {
5339  36 /*fromYearTiny*/,
5340  36 /*toYearTiny*/,
5341  10 /*inMonth*/,
5342  0 /*onDayOfWeek*/,
5343  19 /*onDayOfMonth*/,
5344  12 /*atTimeCode*/,
5345  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5346  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5347  '-' /*letter*/,
5348  },
5349  // Rule Morocco 2036 only - Nov 23 2:00 0 -
5350  {
5351  36 /*fromYearTiny*/,
5352  36 /*toYearTiny*/,
5353  11 /*inMonth*/,
5354  0 /*onDayOfWeek*/,
5355  23 /*onDayOfMonth*/,
5356  8 /*atTimeCode*/,
5357  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5358  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5359  '-' /*letter*/,
5360  },
5361  // Rule Morocco 2037 only - Oct 4 3:00 -1:00 -
5362  {
5363  37 /*fromYearTiny*/,
5364  37 /*toYearTiny*/,
5365  10 /*inMonth*/,
5366  0 /*onDayOfWeek*/,
5367  4 /*onDayOfMonth*/,
5368  12 /*atTimeCode*/,
5369  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5370  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5371  '-' /*letter*/,
5372  },
5373  // Rule Morocco 2037 only - Nov 15 2:00 0 -
5374  {
5375  37 /*fromYearTiny*/,
5376  37 /*toYearTiny*/,
5377  11 /*inMonth*/,
5378  0 /*onDayOfWeek*/,
5379  15 /*onDayOfMonth*/,
5380  8 /*atTimeCode*/,
5381  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5382  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5383  '-' /*letter*/,
5384  },
5385  // Rule Morocco 2038 only - Sep 26 3:00 -1:00 -
5386  {
5387  38 /*fromYearTiny*/,
5388  38 /*toYearTiny*/,
5389  9 /*inMonth*/,
5390  0 /*onDayOfWeek*/,
5391  26 /*onDayOfMonth*/,
5392  12 /*atTimeCode*/,
5393  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5394  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5395  '-' /*letter*/,
5396  },
5397  // Rule Morocco 2038 only - Nov 7 2:00 0 -
5398  {
5399  38 /*fromYearTiny*/,
5400  38 /*toYearTiny*/,
5401  11 /*inMonth*/,
5402  0 /*onDayOfWeek*/,
5403  7 /*onDayOfMonth*/,
5404  8 /*atTimeCode*/,
5405  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5406  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5407  '-' /*letter*/,
5408  },
5409  // Rule Morocco 2039 only - Sep 18 3:00 -1:00 -
5410  {
5411  39 /*fromYearTiny*/,
5412  39 /*toYearTiny*/,
5413  9 /*inMonth*/,
5414  0 /*onDayOfWeek*/,
5415  18 /*onDayOfMonth*/,
5416  12 /*atTimeCode*/,
5417  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5418  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5419  '-' /*letter*/,
5420  },
5421  // Rule Morocco 2039 only - Oct 23 2:00 0 -
5422  {
5423  39 /*fromYearTiny*/,
5424  39 /*toYearTiny*/,
5425  10 /*inMonth*/,
5426  0 /*onDayOfWeek*/,
5427  23 /*onDayOfMonth*/,
5428  8 /*atTimeCode*/,
5429  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5430  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5431  '-' /*letter*/,
5432  },
5433  // Rule Morocco 2040 only - Sep 2 3:00 -1:00 -
5434  {
5435  40 /*fromYearTiny*/,
5436  40 /*toYearTiny*/,
5437  9 /*inMonth*/,
5438  0 /*onDayOfWeek*/,
5439  2 /*onDayOfMonth*/,
5440  12 /*atTimeCode*/,
5441  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5442  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5443  '-' /*letter*/,
5444  },
5445  // Rule Morocco 2040 only - Oct 14 2:00 0 -
5446  {
5447  40 /*fromYearTiny*/,
5448  40 /*toYearTiny*/,
5449  10 /*inMonth*/,
5450  0 /*onDayOfWeek*/,
5451  14 /*onDayOfMonth*/,
5452  8 /*atTimeCode*/,
5453  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5454  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5455  '-' /*letter*/,
5456  },
5457  // Rule Morocco 2041 only - Aug 25 3:00 -1:00 -
5458  {
5459  41 /*fromYearTiny*/,
5460  41 /*toYearTiny*/,
5461  8 /*inMonth*/,
5462  0 /*onDayOfWeek*/,
5463  25 /*onDayOfMonth*/,
5464  12 /*atTimeCode*/,
5465  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5466  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5467  '-' /*letter*/,
5468  },
5469  // Rule Morocco 2041 only - Sep 29 2:00 0 -
5470  {
5471  41 /*fromYearTiny*/,
5472  41 /*toYearTiny*/,
5473  9 /*inMonth*/,
5474  0 /*onDayOfWeek*/,
5475  29 /*onDayOfMonth*/,
5476  8 /*atTimeCode*/,
5477  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5478  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5479  '-' /*letter*/,
5480  },
5481  // Rule Morocco 2042 only - Aug 10 3:00 -1:00 -
5482  {
5483  42 /*fromYearTiny*/,
5484  42 /*toYearTiny*/,
5485  8 /*inMonth*/,
5486  0 /*onDayOfWeek*/,
5487  10 /*onDayOfMonth*/,
5488  12 /*atTimeCode*/,
5489  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5490  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5491  '-' /*letter*/,
5492  },
5493  // Rule Morocco 2042 only - Sep 21 2:00 0 -
5494  {
5495  42 /*fromYearTiny*/,
5496  42 /*toYearTiny*/,
5497  9 /*inMonth*/,
5498  0 /*onDayOfWeek*/,
5499  21 /*onDayOfMonth*/,
5500  8 /*atTimeCode*/,
5501  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5502  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5503  '-' /*letter*/,
5504  },
5505  // Rule Morocco 2043 only - Aug 2 3:00 -1:00 -
5506  {
5507  43 /*fromYearTiny*/,
5508  43 /*toYearTiny*/,
5509  8 /*inMonth*/,
5510  0 /*onDayOfWeek*/,
5511  2 /*onDayOfMonth*/,
5512  12 /*atTimeCode*/,
5513  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5514  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5515  '-' /*letter*/,
5516  },
5517  // Rule Morocco 2043 only - Sep 13 2:00 0 -
5518  {
5519  43 /*fromYearTiny*/,
5520  43 /*toYearTiny*/,
5521  9 /*inMonth*/,
5522  0 /*onDayOfWeek*/,
5523  13 /*onDayOfMonth*/,
5524  8 /*atTimeCode*/,
5525  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5526  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5527  '-' /*letter*/,
5528  },
5529  // Rule Morocco 2044 only - Jul 24 3:00 -1:00 -
5530  {
5531  44 /*fromYearTiny*/,
5532  44 /*toYearTiny*/,
5533  7 /*inMonth*/,
5534  0 /*onDayOfWeek*/,
5535  24 /*onDayOfMonth*/,
5536  12 /*atTimeCode*/,
5537  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5538  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5539  '-' /*letter*/,
5540  },
5541  // Rule Morocco 2044 only - Aug 28 2:00 0 -
5542  {
5543  44 /*fromYearTiny*/,
5544  44 /*toYearTiny*/,
5545  8 /*inMonth*/,
5546  0 /*onDayOfWeek*/,
5547  28 /*onDayOfMonth*/,
5548  8 /*atTimeCode*/,
5549  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5550  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5551  '-' /*letter*/,
5552  },
5553  // Rule Morocco 2045 only - Jul 9 3:00 -1:00 -
5554  {
5555  45 /*fromYearTiny*/,
5556  45 /*toYearTiny*/,
5557  7 /*inMonth*/,
5558  0 /*onDayOfWeek*/,
5559  9 /*onDayOfMonth*/,
5560  12 /*atTimeCode*/,
5561  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5562  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5563  '-' /*letter*/,
5564  },
5565  // Rule Morocco 2045 only - Aug 20 2:00 0 -
5566  {
5567  45 /*fromYearTiny*/,
5568  45 /*toYearTiny*/,
5569  8 /*inMonth*/,
5570  0 /*onDayOfWeek*/,
5571  20 /*onDayOfMonth*/,
5572  8 /*atTimeCode*/,
5573  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5574  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5575  '-' /*letter*/,
5576  },
5577  // Rule Morocco 2046 only - Jul 1 3:00 -1:00 -
5578  {
5579  46 /*fromYearTiny*/,
5580  46 /*toYearTiny*/,
5581  7 /*inMonth*/,
5582  0 /*onDayOfWeek*/,
5583  1 /*onDayOfMonth*/,
5584  12 /*atTimeCode*/,
5585  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5586  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5587  '-' /*letter*/,
5588  },
5589  // Rule Morocco 2046 only - Aug 12 2:00 0 -
5590  {
5591  46 /*fromYearTiny*/,
5592  46 /*toYearTiny*/,
5593  8 /*inMonth*/,
5594  0 /*onDayOfWeek*/,
5595  12 /*onDayOfMonth*/,
5596  8 /*atTimeCode*/,
5597  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5598  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5599  '-' /*letter*/,
5600  },
5601  // Rule Morocco 2047 only - Jun 23 3:00 -1:00 -
5602  {
5603  47 /*fromYearTiny*/,
5604  47 /*toYearTiny*/,
5605  6 /*inMonth*/,
5606  0 /*onDayOfWeek*/,
5607  23 /*onDayOfMonth*/,
5608  12 /*atTimeCode*/,
5609  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5610  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5611  '-' /*letter*/,
5612  },
5613  // Rule Morocco 2047 only - Jul 28 2:00 0 -
5614  {
5615  47 /*fromYearTiny*/,
5616  47 /*toYearTiny*/,
5617  7 /*inMonth*/,
5618  0 /*onDayOfWeek*/,
5619  28 /*onDayOfMonth*/,
5620  8 /*atTimeCode*/,
5621  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5622  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5623  '-' /*letter*/,
5624  },
5625  // Rule Morocco 2048 only - Jun 7 3:00 -1:00 -
5626  {
5627  48 /*fromYearTiny*/,
5628  48 /*toYearTiny*/,
5629  6 /*inMonth*/,
5630  0 /*onDayOfWeek*/,
5631  7 /*onDayOfMonth*/,
5632  12 /*atTimeCode*/,
5633  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5634  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5635  '-' /*letter*/,
5636  },
5637  // Rule Morocco 2048 only - Jul 19 2:00 0 -
5638  {
5639  48 /*fromYearTiny*/,
5640  48 /*toYearTiny*/,
5641  7 /*inMonth*/,
5642  0 /*onDayOfWeek*/,
5643  19 /*onDayOfMonth*/,
5644  8 /*atTimeCode*/,
5645  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5646  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5647  '-' /*letter*/,
5648  },
5649  // Rule Morocco 2049 only - May 30 3:00 -1:00 -
5650  {
5651  49 /*fromYearTiny*/,
5652  49 /*toYearTiny*/,
5653  5 /*inMonth*/,
5654  0 /*onDayOfWeek*/,
5655  30 /*onDayOfMonth*/,
5656  12 /*atTimeCode*/,
5657  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5658  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5659  '-' /*letter*/,
5660  },
5661  // Rule Morocco 2049 only - Jul 4 2:00 0 -
5662  {
5663  49 /*fromYearTiny*/,
5664  49 /*toYearTiny*/,
5665  7 /*inMonth*/,
5666  0 /*onDayOfWeek*/,
5667  4 /*onDayOfMonth*/,
5668  8 /*atTimeCode*/,
5669  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5670  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5671  '-' /*letter*/,
5672  },
5673  // Rule Morocco 2050 only - May 15 3:00 -1:00 -
5674  {
5675  50 /*fromYearTiny*/,
5676  50 /*toYearTiny*/,
5677  5 /*inMonth*/,
5678  0 /*onDayOfWeek*/,
5679  15 /*onDayOfMonth*/,
5680  12 /*atTimeCode*/,
5681  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5682  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5683  '-' /*letter*/,
5684  },
5685  // Rule Morocco 2050 only - Jun 26 2:00 0 -
5686  {
5687  50 /*fromYearTiny*/,
5688  50 /*toYearTiny*/,
5689  6 /*inMonth*/,
5690  0 /*onDayOfWeek*/,
5691  26 /*onDayOfMonth*/,
5692  8 /*atTimeCode*/,
5693  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5694  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5695  '-' /*letter*/,
5696  },
5697  // Rule Morocco 2051 only - May 7 3:00 -1:00 -
5698  {
5699  51 /*fromYearTiny*/,
5700  51 /*toYearTiny*/,
5701  5 /*inMonth*/,
5702  0 /*onDayOfWeek*/,
5703  7 /*onDayOfMonth*/,
5704  12 /*atTimeCode*/,
5705  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5706  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5707  '-' /*letter*/,
5708  },
5709 
5710 };
5711 
5712 
5713 
5714 const extended::ZonePolicy kPolicyMorocco ACE_TIME_PROGMEM = {
5715  kZoneRulesMorocco /*rules*/,
5716  nullptr /*letters*/,
5717  94 /*numRules*/,
5718  0 /*numLetters*/,
5719 };
5720 
5721 //---------------------------------------------------------------------------
5722 // Policy name: NC
5723 // Rules: 1
5724 // Memory (8-bit): 15
5725 // Memory (32-bit): 24
5726 //---------------------------------------------------------------------------
5727 
5728 static const extended::ZoneRule kZoneRulesNC[] ACE_TIME_PROGMEM = {
5729  // Rule NC 1997 only - Mar 2 2:00s 0 -
5730  {
5731  -3 /*fromYearTiny*/,
5732  -3 /*toYearTiny*/,
5733  3 /*inMonth*/,
5734  0 /*onDayOfWeek*/,
5735  2 /*onDayOfMonth*/,
5736  8 /*atTimeCode*/,
5737  16 /*atTimeModifier (kSuffixS + minute=0)*/,
5738  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5739  '-' /*letter*/,
5740  },
5741 
5742 };
5743 
5744 
5745 
5746 const extended::ZonePolicy kPolicyNC ACE_TIME_PROGMEM = {
5747  kZoneRulesNC /*rules*/,
5748  nullptr /*letters*/,
5749  1 /*numRules*/,
5750  0 /*numLetters*/,
5751 };
5752 
5753 //---------------------------------------------------------------------------
5754 // Policy name: NT_YK
5755 // Rules: 3
5756 // Memory (8-bit): 33
5757 // Memory (32-bit): 48
5758 //---------------------------------------------------------------------------
5759 
5760 static const extended::ZoneRule kZoneRulesNT_YK[] ACE_TIME_PROGMEM = {
5761  // Rule NT_YK 1980 1986 - Apr lastSun 2:00 1:00 D
5762  {
5763  -20 /*fromYearTiny*/,
5764  -14 /*toYearTiny*/,
5765  4 /*inMonth*/,
5766  7 /*onDayOfWeek*/,
5767  0 /*onDayOfMonth*/,
5768  8 /*atTimeCode*/,
5769  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5770  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
5771  'D' /*letter*/,
5772  },
5773  // Rule NT_YK 1980 2006 - Oct lastSun 2:00 0 S
5774  {
5775  -20 /*fromYearTiny*/,
5776  6 /*toYearTiny*/,
5777  10 /*inMonth*/,
5778  7 /*onDayOfWeek*/,
5779  0 /*onDayOfMonth*/,
5780  8 /*atTimeCode*/,
5781  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5782  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5783  'S' /*letter*/,
5784  },
5785  // Rule NT_YK 1987 2006 - Apr Sun>=1 2:00 1:00 D
5786  {
5787  -13 /*fromYearTiny*/,
5788  6 /*toYearTiny*/,
5789  4 /*inMonth*/,
5790  7 /*onDayOfWeek*/,
5791  1 /*onDayOfMonth*/,
5792  8 /*atTimeCode*/,
5793  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5794  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
5795  'D' /*letter*/,
5796  },
5797 
5798 };
5799 
5800 
5801 
5802 const extended::ZonePolicy kPolicyNT_YK ACE_TIME_PROGMEM = {
5803  kZoneRulesNT_YK /*rules*/,
5804  nullptr /*letters*/,
5805  3 /*numRules*/,
5806  0 /*numLetters*/,
5807 };
5808 
5809 //---------------------------------------------------------------------------
5810 // Policy name: NZ
5811 // Rules: 5
5812 // Memory (8-bit): 51
5813 // Memory (32-bit): 72
5814 //---------------------------------------------------------------------------
5815 
5816 static const extended::ZoneRule kZoneRulesNZ[] ACE_TIME_PROGMEM = {
5817  // Rule NZ 1989 only - Oct Sun>=8 2:00s 1:00 D
5818  {
5819  -11 /*fromYearTiny*/,
5820  -11 /*toYearTiny*/,
5821  10 /*inMonth*/,
5822  7 /*onDayOfWeek*/,
5823  8 /*onDayOfMonth*/,
5824  8 /*atTimeCode*/,
5825  16 /*atTimeModifier (kSuffixS + minute=0)*/,
5826  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
5827  'D' /*letter*/,
5828  },
5829  // Rule NZ 1990 2006 - Oct Sun>=1 2:00s 1:00 D
5830  {
5831  -10 /*fromYearTiny*/,
5832  6 /*toYearTiny*/,
5833  10 /*inMonth*/,
5834  7 /*onDayOfWeek*/,
5835  1 /*onDayOfMonth*/,
5836  8 /*atTimeCode*/,
5837  16 /*atTimeModifier (kSuffixS + minute=0)*/,
5838  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
5839  'D' /*letter*/,
5840  },
5841  // Rule NZ 1990 2007 - Mar Sun>=15 2:00s 0 S
5842  {
5843  -10 /*fromYearTiny*/,
5844  7 /*toYearTiny*/,
5845  3 /*inMonth*/,
5846  7 /*onDayOfWeek*/,
5847  15 /*onDayOfMonth*/,
5848  8 /*atTimeCode*/,
5849  16 /*atTimeModifier (kSuffixS + minute=0)*/,
5850  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5851  'S' /*letter*/,
5852  },
5853  // Rule NZ 2007 max - Sep lastSun 2:00s 1:00 D
5854  {
5855  7 /*fromYearTiny*/,
5856  126 /*toYearTiny*/,
5857  9 /*inMonth*/,
5858  7 /*onDayOfWeek*/,
5859  0 /*onDayOfMonth*/,
5860  8 /*atTimeCode*/,
5861  16 /*atTimeModifier (kSuffixS + minute=0)*/,
5862  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
5863  'D' /*letter*/,
5864  },
5865  // Rule NZ 2008 max - Apr Sun>=1 2:00s 0 S
5866  {
5867  8 /*fromYearTiny*/,
5868  126 /*toYearTiny*/,
5869  4 /*inMonth*/,
5870  7 /*onDayOfWeek*/,
5871  1 /*onDayOfMonth*/,
5872  8 /*atTimeCode*/,
5873  16 /*atTimeModifier (kSuffixS + minute=0)*/,
5874  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5875  'S' /*letter*/,
5876  },
5877 
5878 };
5879 
5880 
5881 
5882 const extended::ZonePolicy kPolicyNZ ACE_TIME_PROGMEM = {
5883  kZoneRulesNZ /*rules*/,
5884  nullptr /*letters*/,
5885  5 /*numRules*/,
5886  0 /*numLetters*/,
5887 };
5888 
5889 //---------------------------------------------------------------------------
5890 // Policy name: Namibia
5891 // Rules: 3
5892 // Memory (8-bit): 45
5893 // Memory (32-bit): 64
5894 //---------------------------------------------------------------------------
5895 
5896 static const extended::ZoneRule kZoneRulesNamibia[] ACE_TIME_PROGMEM = {
5897  // Rule Namibia 1994 only - Mar 21 0:00 -1:00 WAT
5898  {
5899  -6 /*fromYearTiny*/,
5900  -6 /*toYearTiny*/,
5901  3 /*inMonth*/,
5902  0 /*onDayOfWeek*/,
5903  21 /*onDayOfMonth*/,
5904  0 /*atTimeCode*/,
5905  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5906  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5907  1 /*letter (index to "WAT")*/,
5908  },
5909  // Rule Namibia 1994 2017 - Sep Sun>=1 2:00 0 CAT
5910  {
5911  -6 /*fromYearTiny*/,
5912  17 /*toYearTiny*/,
5913  9 /*inMonth*/,
5914  7 /*onDayOfWeek*/,
5915  1 /*onDayOfMonth*/,
5916  8 /*atTimeCode*/,
5917  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5918  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5919  0 /*letter (index to "CAT")*/,
5920  },
5921  // Rule Namibia 1995 2017 - Apr Sun>=1 2:00 -1:00 WAT
5922  {
5923  -5 /*fromYearTiny*/,
5924  17 /*toYearTiny*/,
5925  4 /*inMonth*/,
5926  7 /*onDayOfWeek*/,
5927  1 /*onDayOfMonth*/,
5928  8 /*atTimeCode*/,
5929  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5930  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5931  1 /*letter (index to "WAT")*/,
5932  },
5933 
5934 };
5935 
5936 static const char* const kLettersNamibia[] ACE_TIME_PROGMEM = {
5937  /*0*/ "CAT",
5938  /*1*/ "WAT",
5939 
5940 };
5941 
5942 
5943 const extended::ZonePolicy kPolicyNamibia ACE_TIME_PROGMEM = {
5944  kZoneRulesNamibia /*rules*/,
5945  kLettersNamibia /*letters*/,
5946  3 /*numRules*/,
5947  2 /*numLetters*/,
5948 };
5949 
5950 //---------------------------------------------------------------------------
5951 // Policy name: Nic
5952 // Rules: 5
5953 // Memory (8-bit): 51
5954 // Memory (32-bit): 72
5955 //---------------------------------------------------------------------------
5956 
5957 static const extended::ZoneRule kZoneRulesNic[] ACE_TIME_PROGMEM = {
5958  // Rule Nic 1979 1980 - Jun Mon>=23 0:00 0 S
5959  {
5960  -21 /*fromYearTiny*/,
5961  -20 /*toYearTiny*/,
5962  6 /*inMonth*/,
5963  1 /*onDayOfWeek*/,
5964  23 /*onDayOfMonth*/,
5965  0 /*atTimeCode*/,
5966  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5967  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5968  'S' /*letter*/,
5969  },
5970  // Rule Nic 2005 only - Apr 10 0:00 1:00 D
5971  {
5972  5 /*fromYearTiny*/,
5973  5 /*toYearTiny*/,
5974  4 /*inMonth*/,
5975  0 /*onDayOfWeek*/,
5976  10 /*onDayOfMonth*/,
5977  0 /*atTimeCode*/,
5978  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5979  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
5980  'D' /*letter*/,
5981  },
5982  // Rule Nic 2005 only - Oct Sun>=1 0:00 0 S
5983  {
5984  5 /*fromYearTiny*/,
5985  5 /*toYearTiny*/,
5986  10 /*inMonth*/,
5987  7 /*onDayOfWeek*/,
5988  1 /*onDayOfMonth*/,
5989  0 /*atTimeCode*/,
5990  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5991  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5992  'S' /*letter*/,
5993  },
5994  // Rule Nic 2006 only - Apr 30 2:00 1:00 D
5995  {
5996  6 /*fromYearTiny*/,
5997  6 /*toYearTiny*/,
5998  4 /*inMonth*/,
5999  0 /*onDayOfWeek*/,
6000  30 /*onDayOfMonth*/,
6001  8 /*atTimeCode*/,
6002  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6003  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6004  'D' /*letter*/,
6005  },
6006  // Rule Nic 2006 only - Oct Sun>=1 1:00 0 S
6007  {
6008  6 /*fromYearTiny*/,
6009  6 /*toYearTiny*/,
6010  10 /*inMonth*/,
6011  7 /*onDayOfWeek*/,
6012  1 /*onDayOfMonth*/,
6013  4 /*atTimeCode*/,
6014  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6015  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6016  'S' /*letter*/,
6017  },
6018 
6019 };
6020 
6021 
6022 
6023 const extended::ZonePolicy kPolicyNic ACE_TIME_PROGMEM = {
6024  kZoneRulesNic /*rules*/,
6025  nullptr /*letters*/,
6026  5 /*numRules*/,
6027  0 /*numLetters*/,
6028 };
6029 
6030 //---------------------------------------------------------------------------
6031 // Policy name: PRC
6032 // Rules: 1
6033 // Memory (8-bit): 15
6034 // Memory (32-bit): 24
6035 //---------------------------------------------------------------------------
6036 
6037 static const extended::ZoneRule kZoneRulesPRC[] ACE_TIME_PROGMEM = {
6038  // Rule PRC 1986 1991 - Sep Sun>=11 2:00 0 S
6039  {
6040  -14 /*fromYearTiny*/,
6041  -9 /*toYearTiny*/,
6042  9 /*inMonth*/,
6043  7 /*onDayOfWeek*/,
6044  11 /*onDayOfMonth*/,
6045  8 /*atTimeCode*/,
6046  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6047  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6048  'S' /*letter*/,
6049  },
6050 
6051 };
6052 
6053 
6054 
6055 const extended::ZonePolicy kPolicyPRC ACE_TIME_PROGMEM = {
6056  kZoneRulesPRC /*rules*/,
6057  nullptr /*letters*/,
6058  1 /*numRules*/,
6059  0 /*numLetters*/,
6060 };
6061 
6062 //---------------------------------------------------------------------------
6063 // Policy name: Pakistan
6064 // Rules: 6
6065 // Memory (8-bit): 60
6066 // Memory (32-bit): 84
6067 //---------------------------------------------------------------------------
6068 
6069 static const extended::ZoneRule kZoneRulesPakistan[] ACE_TIME_PROGMEM = {
6070  // Anchor: Rule Pakistan 2002 only - Oct Sun>=2 0:00 0 -
6071  {
6072  -127 /*fromYearTiny*/,
6073  -127 /*toYearTiny*/,
6074  1 /*inMonth*/,
6075  0 /*onDayOfWeek*/,
6076  1 /*onDayOfMonth*/,
6077  0 /*atTimeCode*/,
6078  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6079  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6080  '-' /*letter*/,
6081  },
6082  // Rule Pakistan 2002 only - Apr Sun>=2 0:00 1:00 S
6083  {
6084  2 /*fromYearTiny*/,
6085  2 /*toYearTiny*/,
6086  4 /*inMonth*/,
6087  7 /*onDayOfWeek*/,
6088  2 /*onDayOfMonth*/,
6089  0 /*atTimeCode*/,
6090  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6091  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6092  'S' /*letter*/,
6093  },
6094  // Rule Pakistan 2002 only - Oct Sun>=2 0:00 0 -
6095  {
6096  2 /*fromYearTiny*/,
6097  2 /*toYearTiny*/,
6098  10 /*inMonth*/,
6099  7 /*onDayOfWeek*/,
6100  2 /*onDayOfMonth*/,
6101  0 /*atTimeCode*/,
6102  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6103  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6104  '-' /*letter*/,
6105  },
6106  // Rule Pakistan 2008 only - Jun 1 0:00 1:00 S
6107  {
6108  8 /*fromYearTiny*/,
6109  8 /*toYearTiny*/,
6110  6 /*inMonth*/,
6111  0 /*onDayOfWeek*/,
6112  1 /*onDayOfMonth*/,
6113  0 /*atTimeCode*/,
6114  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6115  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6116  'S' /*letter*/,
6117  },
6118  // Rule Pakistan 2008 2009 - Nov 1 0:00 0 -
6119  {
6120  8 /*fromYearTiny*/,
6121  9 /*toYearTiny*/,
6122  11 /*inMonth*/,
6123  0 /*onDayOfWeek*/,
6124  1 /*onDayOfMonth*/,
6125  0 /*atTimeCode*/,
6126  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6127  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6128  '-' /*letter*/,
6129  },
6130  // Rule Pakistan 2009 only - Apr 15 0:00 1:00 S
6131  {
6132  9 /*fromYearTiny*/,
6133  9 /*toYearTiny*/,
6134  4 /*inMonth*/,
6135  0 /*onDayOfWeek*/,
6136  15 /*onDayOfMonth*/,
6137  0 /*atTimeCode*/,
6138  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6139  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6140  'S' /*letter*/,
6141  },
6142 
6143 };
6144 
6145 
6146 
6147 const extended::ZonePolicy kPolicyPakistan ACE_TIME_PROGMEM = {
6148  kZoneRulesPakistan /*rules*/,
6149  nullptr /*letters*/,
6150  6 /*numRules*/,
6151  0 /*numLetters*/,
6152 };
6153 
6154 //---------------------------------------------------------------------------
6155 // Policy name: Palestine
6156 // Rules: 30
6157 // Memory (8-bit): 276
6158 // Memory (32-bit): 372
6159 //---------------------------------------------------------------------------
6160 
6161 static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = {
6162  // Anchor: Rule Palestine 1999 2003 - Oct Fri>=15 0:00 0 -
6163  {
6164  -127 /*fromYearTiny*/,
6165  -127 /*toYearTiny*/,
6166  1 /*inMonth*/,
6167  0 /*onDayOfWeek*/,
6168  1 /*onDayOfMonth*/,
6169  0 /*atTimeCode*/,
6170  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6171  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6172  '-' /*letter*/,
6173  },
6174  // Rule Palestine 1999 2005 - Apr Fri>=15 0:00 1:00 S
6175  {
6176  -1 /*fromYearTiny*/,
6177  5 /*toYearTiny*/,
6178  4 /*inMonth*/,
6179  5 /*onDayOfWeek*/,
6180  15 /*onDayOfMonth*/,
6181  0 /*atTimeCode*/,
6182  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6183  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6184  'S' /*letter*/,
6185  },
6186  // Rule Palestine 1999 2003 - Oct Fri>=15 0:00 0 -
6187  {
6188  -1 /*fromYearTiny*/,
6189  3 /*toYearTiny*/,
6190  10 /*inMonth*/,
6191  5 /*onDayOfWeek*/,
6192  15 /*onDayOfMonth*/,
6193  0 /*atTimeCode*/,
6194  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6195  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6196  '-' /*letter*/,
6197  },
6198  // Rule Palestine 2004 only - Oct 1 1:00 0 -
6199  {
6200  4 /*fromYearTiny*/,
6201  4 /*toYearTiny*/,
6202  10 /*inMonth*/,
6203  0 /*onDayOfWeek*/,
6204  1 /*onDayOfMonth*/,
6205  4 /*atTimeCode*/,
6206  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6207  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6208  '-' /*letter*/,
6209  },
6210  // Rule Palestine 2005 only - Oct 4 2:00 0 -
6211  {
6212  5 /*fromYearTiny*/,
6213  5 /*toYearTiny*/,
6214  10 /*inMonth*/,
6215  0 /*onDayOfWeek*/,
6216  4 /*onDayOfMonth*/,
6217  8 /*atTimeCode*/,
6218  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6219  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6220  '-' /*letter*/,
6221  },
6222  // Rule Palestine 2006 2007 - Apr 1 0:00 1:00 S
6223  {
6224  6 /*fromYearTiny*/,
6225  7 /*toYearTiny*/,
6226  4 /*inMonth*/,
6227  0 /*onDayOfWeek*/,
6228  1 /*onDayOfMonth*/,
6229  0 /*atTimeCode*/,
6230  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6231  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6232  'S' /*letter*/,
6233  },
6234  // Rule Palestine 2006 only - Sep 22 0:00 0 -
6235  {
6236  6 /*fromYearTiny*/,
6237  6 /*toYearTiny*/,
6238  9 /*inMonth*/,
6239  0 /*onDayOfWeek*/,
6240  22 /*onDayOfMonth*/,
6241  0 /*atTimeCode*/,
6242  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6243  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6244  '-' /*letter*/,
6245  },
6246  // Rule Palestine 2007 only - Sep 13 2:00 0 -
6247  {
6248  7 /*fromYearTiny*/,
6249  7 /*toYearTiny*/,
6250  9 /*inMonth*/,
6251  0 /*onDayOfWeek*/,
6252  13 /*onDayOfMonth*/,
6253  8 /*atTimeCode*/,
6254  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6255  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6256  '-' /*letter*/,
6257  },
6258  // Rule Palestine 2008 2009 - Mar lastFri 0:00 1:00 S
6259  {
6260  8 /*fromYearTiny*/,
6261  9 /*toYearTiny*/,
6262  3 /*inMonth*/,
6263  5 /*onDayOfWeek*/,
6264  0 /*onDayOfMonth*/,
6265  0 /*atTimeCode*/,
6266  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6267  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6268  'S' /*letter*/,
6269  },
6270  // Rule Palestine 2008 only - Sep 1 0:00 0 -
6271  {
6272  8 /*fromYearTiny*/,
6273  8 /*toYearTiny*/,
6274  9 /*inMonth*/,
6275  0 /*onDayOfWeek*/,
6276  1 /*onDayOfMonth*/,
6277  0 /*atTimeCode*/,
6278  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6279  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6280  '-' /*letter*/,
6281  },
6282  // Rule Palestine 2009 only - Sep 4 1:00 0 -
6283  {
6284  9 /*fromYearTiny*/,
6285  9 /*toYearTiny*/,
6286  9 /*inMonth*/,
6287  0 /*onDayOfWeek*/,
6288  4 /*onDayOfMonth*/,
6289  4 /*atTimeCode*/,
6290  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6291  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6292  '-' /*letter*/,
6293  },
6294  // Rule Palestine 2010 only - Mar 26 0:00 1:00 S
6295  {
6296  10 /*fromYearTiny*/,
6297  10 /*toYearTiny*/,
6298  3 /*inMonth*/,
6299  0 /*onDayOfWeek*/,
6300  26 /*onDayOfMonth*/,
6301  0 /*atTimeCode*/,
6302  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6303  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6304  'S' /*letter*/,
6305  },
6306  // Rule Palestine 2010 only - Aug 11 0:00 0 -
6307  {
6308  10 /*fromYearTiny*/,
6309  10 /*toYearTiny*/,
6310  8 /*inMonth*/,
6311  0 /*onDayOfWeek*/,
6312  11 /*onDayOfMonth*/,
6313  0 /*atTimeCode*/,
6314  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6315  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6316  '-' /*letter*/,
6317  },
6318  // Rule Palestine 2011 only - Apr 1 0:01 1:00 S
6319  {
6320  11 /*fromYearTiny*/,
6321  11 /*toYearTiny*/,
6322  4 /*inMonth*/,
6323  0 /*onDayOfWeek*/,
6324  1 /*onDayOfMonth*/,
6325  0 /*atTimeCode*/,
6326  1 /*atTimeModifier (kSuffixW + minute=1)*/,
6327  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6328  'S' /*letter*/,
6329  },
6330  // Rule Palestine 2011 only - Aug 1 0:00 0 -
6331  {
6332  11 /*fromYearTiny*/,
6333  11 /*toYearTiny*/,
6334  8 /*inMonth*/,
6335  0 /*onDayOfWeek*/,
6336  1 /*onDayOfMonth*/,
6337  0 /*atTimeCode*/,
6338  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6339  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6340  '-' /*letter*/,
6341  },
6342  // Rule Palestine 2011 only - Aug 30 0:00 1:00 S
6343  {
6344  11 /*fromYearTiny*/,
6345  11 /*toYearTiny*/,
6346  8 /*inMonth*/,
6347  0 /*onDayOfWeek*/,
6348  30 /*onDayOfMonth*/,
6349  0 /*atTimeCode*/,
6350  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6351  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6352  'S' /*letter*/,
6353  },
6354  // Rule Palestine 2011 only - Sep 30 0:00 0 -
6355  {
6356  11 /*fromYearTiny*/,
6357  11 /*toYearTiny*/,
6358  9 /*inMonth*/,
6359  0 /*onDayOfWeek*/,
6360  30 /*onDayOfMonth*/,
6361  0 /*atTimeCode*/,
6362  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6363  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6364  '-' /*letter*/,
6365  },
6366  // Rule Palestine 2012 2014 - Mar lastThu 24:00 1:00 S
6367  {
6368  12 /*fromYearTiny*/,
6369  14 /*toYearTiny*/,
6370  3 /*inMonth*/,
6371  4 /*onDayOfWeek*/,
6372  0 /*onDayOfMonth*/,
6373  96 /*atTimeCode*/,
6374  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6375  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6376  'S' /*letter*/,
6377  },
6378  // Rule Palestine 2012 only - Sep 21 1:00 0 -
6379  {
6380  12 /*fromYearTiny*/,
6381  12 /*toYearTiny*/,
6382  9 /*inMonth*/,
6383  0 /*onDayOfWeek*/,
6384  21 /*onDayOfMonth*/,
6385  4 /*atTimeCode*/,
6386  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6387  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6388  '-' /*letter*/,
6389  },
6390  // Rule Palestine 2013 only - Sep 27 0:00 0 -
6391  {
6392  13 /*fromYearTiny*/,
6393  13 /*toYearTiny*/,
6394  9 /*inMonth*/,
6395  0 /*onDayOfWeek*/,
6396  27 /*onDayOfMonth*/,
6397  0 /*atTimeCode*/,
6398  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6399  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6400  '-' /*letter*/,
6401  },
6402  // Rule Palestine 2014 only - Oct 24 0:00 0 -
6403  {
6404  14 /*fromYearTiny*/,
6405  14 /*toYearTiny*/,
6406  10 /*inMonth*/,
6407  0 /*onDayOfWeek*/,
6408  24 /*onDayOfMonth*/,
6409  0 /*atTimeCode*/,
6410  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6411  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6412  '-' /*letter*/,
6413  },
6414  // Rule Palestine 2015 only - Mar 28 0:00 1:00 S
6415  {
6416  15 /*fromYearTiny*/,
6417  15 /*toYearTiny*/,
6418  3 /*inMonth*/,
6419  0 /*onDayOfWeek*/,
6420  28 /*onDayOfMonth*/,
6421  0 /*atTimeCode*/,
6422  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6423  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6424  'S' /*letter*/,
6425  },
6426  // Rule Palestine 2015 only - Oct 23 1:00 0 -
6427  {
6428  15 /*fromYearTiny*/,
6429  15 /*toYearTiny*/,
6430  10 /*inMonth*/,
6431  0 /*onDayOfWeek*/,
6432  23 /*onDayOfMonth*/,
6433  4 /*atTimeCode*/,
6434  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6435  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6436  '-' /*letter*/,
6437  },
6438  // Rule Palestine 2016 2018 - Mar Sat>=24 1:00 1:00 S
6439  {
6440  16 /*fromYearTiny*/,
6441  18 /*toYearTiny*/,
6442  3 /*inMonth*/,
6443  6 /*onDayOfWeek*/,
6444  24 /*onDayOfMonth*/,
6445  4 /*atTimeCode*/,
6446  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6447  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6448  'S' /*letter*/,
6449  },
6450  // Rule Palestine 2016 2018 - Oct Sat>=24 1:00 0 -
6451  {
6452  16 /*fromYearTiny*/,
6453  18 /*toYearTiny*/,
6454  10 /*inMonth*/,
6455  6 /*onDayOfWeek*/,
6456  24 /*onDayOfMonth*/,
6457  4 /*atTimeCode*/,
6458  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6459  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6460  '-' /*letter*/,
6461  },
6462  // Rule Palestine 2019 only - Mar 29 0:00 1:00 S
6463  {
6464  19 /*fromYearTiny*/,
6465  19 /*toYearTiny*/,
6466  3 /*inMonth*/,
6467  0 /*onDayOfWeek*/,
6468  29 /*onDayOfMonth*/,
6469  0 /*atTimeCode*/,
6470  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6471  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6472  'S' /*letter*/,
6473  },
6474  // Rule Palestine 2019 only - Oct Sat>=24 0:00 0 -
6475  {
6476  19 /*fromYearTiny*/,
6477  19 /*toYearTiny*/,
6478  10 /*inMonth*/,
6479  6 /*onDayOfWeek*/,
6480  24 /*onDayOfMonth*/,
6481  0 /*atTimeCode*/,
6482  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6483  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6484  '-' /*letter*/,
6485  },
6486  // Rule Palestine 2020 max - Mar Sat>=24 0:00 1:00 S
6487  {
6488  20 /*fromYearTiny*/,
6489  126 /*toYearTiny*/,
6490  3 /*inMonth*/,
6491  6 /*onDayOfWeek*/,
6492  24 /*onDayOfMonth*/,
6493  0 /*atTimeCode*/,
6494  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6495  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6496  'S' /*letter*/,
6497  },
6498  // Rule Palestine 2020 only - Oct 24 1:00 0 -
6499  {
6500  20 /*fromYearTiny*/,
6501  20 /*toYearTiny*/,
6502  10 /*inMonth*/,
6503  0 /*onDayOfWeek*/,
6504  24 /*onDayOfMonth*/,
6505  4 /*atTimeCode*/,
6506  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6507  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6508  '-' /*letter*/,
6509  },
6510  // Rule Palestine 2021 max - Oct lastFri 1:00 0 -
6511  {
6512  21 /*fromYearTiny*/,
6513  126 /*toYearTiny*/,
6514  10 /*inMonth*/,
6515  5 /*onDayOfWeek*/,
6516  0 /*onDayOfMonth*/,
6517  4 /*atTimeCode*/,
6518  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6519  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6520  '-' /*letter*/,
6521  },
6522 
6523 };
6524 
6525 
6526 
6527 const extended::ZonePolicy kPolicyPalestine ACE_TIME_PROGMEM = {
6528  kZoneRulesPalestine /*rules*/,
6529  nullptr /*letters*/,
6530  30 /*numRules*/,
6531  0 /*numLetters*/,
6532 };
6533 
6534 //---------------------------------------------------------------------------
6535 // Policy name: Para
6536 // Rules: 10
6537 // Memory (8-bit): 96
6538 // Memory (32-bit): 132
6539 //---------------------------------------------------------------------------
6540 
6541 static const extended::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = {
6542  // Rule Para 1996 2001 - Oct Sun>=1 0:00 1:00 -
6543  {
6544  -4 /*fromYearTiny*/,
6545  1 /*toYearTiny*/,
6546  10 /*inMonth*/,
6547  7 /*onDayOfWeek*/,
6548  1 /*onDayOfMonth*/,
6549  0 /*atTimeCode*/,
6550  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6551  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6552  '-' /*letter*/,
6553  },
6554  // Rule Para 1997 only - Feb lastSun 0:00 0 -
6555  {
6556  -3 /*fromYearTiny*/,
6557  -3 /*toYearTiny*/,
6558  2 /*inMonth*/,
6559  7 /*onDayOfWeek*/,
6560  0 /*onDayOfMonth*/,
6561  0 /*atTimeCode*/,
6562  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6563  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6564  '-' /*letter*/,
6565  },
6566  // Rule Para 1998 2001 - Mar Sun>=1 0:00 0 -
6567  {
6568  -2 /*fromYearTiny*/,
6569  1 /*toYearTiny*/,
6570  3 /*inMonth*/,
6571  7 /*onDayOfWeek*/,
6572  1 /*onDayOfMonth*/,
6573  0 /*atTimeCode*/,
6574  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6575  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6576  '-' /*letter*/,
6577  },
6578  // Rule Para 2002 2004 - Apr Sun>=1 0:00 0 -
6579  {
6580  2 /*fromYearTiny*/,
6581  4 /*toYearTiny*/,
6582  4 /*inMonth*/,
6583  7 /*onDayOfWeek*/,
6584  1 /*onDayOfMonth*/,
6585  0 /*atTimeCode*/,
6586  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6587  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6588  '-' /*letter*/,
6589  },
6590  // Rule Para 2002 2003 - Sep Sun>=1 0:00 1:00 -
6591  {
6592  2 /*fromYearTiny*/,
6593  3 /*toYearTiny*/,
6594  9 /*inMonth*/,
6595  7 /*onDayOfWeek*/,
6596  1 /*onDayOfMonth*/,
6597  0 /*atTimeCode*/,
6598  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6599  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6600  '-' /*letter*/,
6601  },
6602  // Rule Para 2004 2009 - Oct Sun>=15 0:00 1:00 -
6603  {
6604  4 /*fromYearTiny*/,
6605  9 /*toYearTiny*/,
6606  10 /*inMonth*/,
6607  7 /*onDayOfWeek*/,
6608  15 /*onDayOfMonth*/,
6609  0 /*atTimeCode*/,
6610  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6611  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6612  '-' /*letter*/,
6613  },
6614  // Rule Para 2005 2009 - Mar Sun>=8 0:00 0 -
6615  {
6616  5 /*fromYearTiny*/,
6617  9 /*toYearTiny*/,
6618  3 /*inMonth*/,
6619  7 /*onDayOfWeek*/,
6620  8 /*onDayOfMonth*/,
6621  0 /*atTimeCode*/,
6622  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6623  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6624  '-' /*letter*/,
6625  },
6626  // Rule Para 2010 max - Oct Sun>=1 0:00 1:00 -
6627  {
6628  10 /*fromYearTiny*/,
6629  126 /*toYearTiny*/,
6630  10 /*inMonth*/,
6631  7 /*onDayOfWeek*/,
6632  1 /*onDayOfMonth*/,
6633  0 /*atTimeCode*/,
6634  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6635  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6636  '-' /*letter*/,
6637  },
6638  // Rule Para 2010 2012 - Apr Sun>=8 0:00 0 -
6639  {
6640  10 /*fromYearTiny*/,
6641  12 /*toYearTiny*/,
6642  4 /*inMonth*/,
6643  7 /*onDayOfWeek*/,
6644  8 /*onDayOfMonth*/,
6645  0 /*atTimeCode*/,
6646  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6647  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6648  '-' /*letter*/,
6649  },
6650  // Rule Para 2013 max - Mar Sun>=22 0:00 0 -
6651  {
6652  13 /*fromYearTiny*/,
6653  126 /*toYearTiny*/,
6654  3 /*inMonth*/,
6655  7 /*onDayOfWeek*/,
6656  22 /*onDayOfMonth*/,
6657  0 /*atTimeCode*/,
6658  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6659  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6660  '-' /*letter*/,
6661  },
6662 
6663 };
6664 
6665 
6666 
6667 const extended::ZonePolicy kPolicyPara ACE_TIME_PROGMEM = {
6668  kZoneRulesPara /*rules*/,
6669  nullptr /*letters*/,
6670  10 /*numRules*/,
6671  0 /*numLetters*/,
6672 };
6673 
6674 //---------------------------------------------------------------------------
6675 // Policy name: Peru
6676 // Rules: 1
6677 // Memory (8-bit): 15
6678 // Memory (32-bit): 24
6679 //---------------------------------------------------------------------------
6680 
6681 static const extended::ZoneRule kZoneRulesPeru[] ACE_TIME_PROGMEM = {
6682  // Rule Peru 1994 only - Apr 1 0:00 0 -
6683  {
6684  -6 /*fromYearTiny*/,
6685  -6 /*toYearTiny*/,
6686  4 /*inMonth*/,
6687  0 /*onDayOfWeek*/,
6688  1 /*onDayOfMonth*/,
6689  0 /*atTimeCode*/,
6690  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6691  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6692  '-' /*letter*/,
6693  },
6694 
6695 };
6696 
6697 
6698 
6699 const extended::ZonePolicy kPolicyPeru ACE_TIME_PROGMEM = {
6700  kZoneRulesPeru /*rules*/,
6701  nullptr /*letters*/,
6702  1 /*numRules*/,
6703  0 /*numLetters*/,
6704 };
6705 
6706 //---------------------------------------------------------------------------
6707 // Policy name: Phil
6708 // Rules: 1
6709 // Memory (8-bit): 15
6710 // Memory (32-bit): 24
6711 //---------------------------------------------------------------------------
6712 
6713 static const extended::ZoneRule kZoneRulesPhil[] ACE_TIME_PROGMEM = {
6714  // Rule Phil 1978 only - Sep 21 0:00 0 S
6715  {
6716  -22 /*fromYearTiny*/,
6717  -22 /*toYearTiny*/,
6718  9 /*inMonth*/,
6719  0 /*onDayOfWeek*/,
6720  21 /*onDayOfMonth*/,
6721  0 /*atTimeCode*/,
6722  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6723  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6724  'S' /*letter*/,
6725  },
6726 
6727 };
6728 
6729 
6730 
6731 const extended::ZonePolicy kPolicyPhil ACE_TIME_PROGMEM = {
6732  kZoneRulesPhil /*rules*/,
6733  nullptr /*letters*/,
6734  1 /*numRules*/,
6735  0 /*numLetters*/,
6736 };
6737 
6738 //---------------------------------------------------------------------------
6739 // Policy name: ROK
6740 // Rules: 1
6741 // Memory (8-bit): 15
6742 // Memory (32-bit): 24
6743 //---------------------------------------------------------------------------
6744 
6745 static const extended::ZoneRule kZoneRulesROK[] ACE_TIME_PROGMEM = {
6746  // Rule ROK 1987 1988 - Oct Sun>=8 3:00 0 S
6747  {
6748  -13 /*fromYearTiny*/,
6749  -12 /*toYearTiny*/,
6750  10 /*inMonth*/,
6751  7 /*onDayOfWeek*/,
6752  8 /*onDayOfMonth*/,
6753  12 /*atTimeCode*/,
6754  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6755  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6756  'S' /*letter*/,
6757  },
6758 
6759 };
6760 
6761 
6762 
6763 const extended::ZonePolicy kPolicyROK ACE_TIME_PROGMEM = {
6764  kZoneRulesROK /*rules*/,
6765  nullptr /*letters*/,
6766  1 /*numRules*/,
6767  0 /*numLetters*/,
6768 };
6769 
6770 //---------------------------------------------------------------------------
6771 // Policy name: Russia
6772 // Rules: 3
6773 // Memory (8-bit): 33
6774 // Memory (32-bit): 48
6775 //---------------------------------------------------------------------------
6776 
6777 static const extended::ZoneRule kZoneRulesRussia[] ACE_TIME_PROGMEM = {
6778  // Rule Russia 1984 1995 - Sep lastSun 2:00s 0 -
6779  {
6780  -16 /*fromYearTiny*/,
6781  -5 /*toYearTiny*/,
6782  9 /*inMonth*/,
6783  7 /*onDayOfWeek*/,
6784  0 /*onDayOfMonth*/,
6785  8 /*atTimeCode*/,
6786  16 /*atTimeModifier (kSuffixS + minute=0)*/,
6787  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6788  '-' /*letter*/,
6789  },
6790  // Rule Russia 1985 2010 - Mar lastSun 2:00s 1:00 S
6791  {
6792  -15 /*fromYearTiny*/,
6793  10 /*toYearTiny*/,
6794  3 /*inMonth*/,
6795  7 /*onDayOfWeek*/,
6796  0 /*onDayOfMonth*/,
6797  8 /*atTimeCode*/,
6798  16 /*atTimeModifier (kSuffixS + minute=0)*/,
6799  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6800  'S' /*letter*/,
6801  },
6802  // Rule Russia 1996 2010 - Oct lastSun 2:00s 0 -
6803  {
6804  -4 /*fromYearTiny*/,
6805  10 /*toYearTiny*/,
6806  10 /*inMonth*/,
6807  7 /*onDayOfWeek*/,
6808  0 /*onDayOfMonth*/,
6809  8 /*atTimeCode*/,
6810  16 /*atTimeModifier (kSuffixS + minute=0)*/,
6811  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6812  '-' /*letter*/,
6813  },
6814 
6815 };
6816 
6817 
6818 
6819 const extended::ZonePolicy kPolicyRussia ACE_TIME_PROGMEM = {
6820  kZoneRulesRussia /*rules*/,
6821  nullptr /*letters*/,
6822  3 /*numRules*/,
6823  0 /*numLetters*/,
6824 };
6825 
6826 //---------------------------------------------------------------------------
6827 // Policy name: RussiaAsia
6828 // Rules: 3
6829 // Memory (8-bit): 33
6830 // Memory (32-bit): 48
6831 //---------------------------------------------------------------------------
6832 
6833 static const extended::ZoneRule kZoneRulesRussiaAsia[] ACE_TIME_PROGMEM = {
6834  // Rule RussiaAsia 1984 1995 - Sep lastSun 2:00s 0 -
6835  {
6836  -16 /*fromYearTiny*/,
6837  -5 /*toYearTiny*/,
6838  9 /*inMonth*/,
6839  7 /*onDayOfWeek*/,
6840  0 /*onDayOfMonth*/,
6841  8 /*atTimeCode*/,
6842  16 /*atTimeModifier (kSuffixS + minute=0)*/,
6843  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6844  '-' /*letter*/,
6845  },
6846  // Rule RussiaAsia 1985 2010 - Mar lastSun 2:00s 1:00 -
6847  {
6848  -15 /*fromYearTiny*/,
6849  10 /*toYearTiny*/,
6850  3 /*inMonth*/,
6851  7 /*onDayOfWeek*/,
6852  0 /*onDayOfMonth*/,
6853  8 /*atTimeCode*/,
6854  16 /*atTimeModifier (kSuffixS + minute=0)*/,
6855  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6856  '-' /*letter*/,
6857  },
6858  // Rule RussiaAsia 1996 2010 - Oct lastSun 2:00s 0 -
6859  {
6860  -4 /*fromYearTiny*/,
6861  10 /*toYearTiny*/,
6862  10 /*inMonth*/,
6863  7 /*onDayOfWeek*/,
6864  0 /*onDayOfMonth*/,
6865  8 /*atTimeCode*/,
6866  16 /*atTimeModifier (kSuffixS + minute=0)*/,
6867  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6868  '-' /*letter*/,
6869  },
6870 
6871 };
6872 
6873 
6874 
6875 const extended::ZonePolicy kPolicyRussiaAsia ACE_TIME_PROGMEM = {
6876  kZoneRulesRussiaAsia /*rules*/,
6877  nullptr /*letters*/,
6878  3 /*numRules*/,
6879  0 /*numLetters*/,
6880 };
6881 
6882 //---------------------------------------------------------------------------
6883 // Policy name: SA
6884 // Rules: 1
6885 // Memory (8-bit): 15
6886 // Memory (32-bit): 24
6887 //---------------------------------------------------------------------------
6888 
6889 static const extended::ZoneRule kZoneRulesSA[] ACE_TIME_PROGMEM = {
6890  // Rule SA 1943 1944 - Mar Sun>=15 2:00 0 -
6891  {
6892  -57 /*fromYearTiny*/,
6893  -56 /*toYearTiny*/,
6894  3 /*inMonth*/,
6895  7 /*onDayOfWeek*/,
6896  15 /*onDayOfMonth*/,
6897  8 /*atTimeCode*/,
6898  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6899  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6900  '-' /*letter*/,
6901  },
6902 
6903 };
6904 
6905 
6906 
6907 const extended::ZonePolicy kPolicySA ACE_TIME_PROGMEM = {
6908  kZoneRulesSA /*rules*/,
6909  nullptr /*letters*/,
6910  1 /*numRules*/,
6911  0 /*numLetters*/,
6912 };
6913 
6914 //---------------------------------------------------------------------------
6915 // Policy name: Salv
6916 // Rules: 1
6917 // Memory (8-bit): 15
6918 // Memory (32-bit): 24
6919 //---------------------------------------------------------------------------
6920 
6921 static const extended::ZoneRule kZoneRulesSalv[] ACE_TIME_PROGMEM = {
6922  // Rule Salv 1987 1988 - Sep lastSun 0:00 0 S
6923  {
6924  -13 /*fromYearTiny*/,
6925  -12 /*toYearTiny*/,
6926  9 /*inMonth*/,
6927  7 /*onDayOfWeek*/,
6928  0 /*onDayOfMonth*/,
6929  0 /*atTimeCode*/,
6930  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6931  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6932  'S' /*letter*/,
6933  },
6934 
6935 };
6936 
6937 
6938 
6939 const extended::ZonePolicy kPolicySalv ACE_TIME_PROGMEM = {
6940  kZoneRulesSalv /*rules*/,
6941  nullptr /*letters*/,
6942  1 /*numRules*/,
6943  0 /*numLetters*/,
6944 };
6945 
6946 //---------------------------------------------------------------------------
6947 // Policy name: SanLuis
6948 // Rules: 3
6949 // Memory (8-bit): 33
6950 // Memory (32-bit): 48
6951 //---------------------------------------------------------------------------
6952 
6953 static const extended::ZoneRule kZoneRulesSanLuis[] ACE_TIME_PROGMEM = {
6954  // Anchor: Rule SanLuis 2008 2009 - Mar Sun>=8 0:00 0 -
6955  {
6956  -127 /*fromYearTiny*/,
6957  -127 /*toYearTiny*/,
6958  1 /*inMonth*/,
6959  0 /*onDayOfWeek*/,
6960  1 /*onDayOfMonth*/,
6961  0 /*atTimeCode*/,
6962  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6963  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6964  '-' /*letter*/,
6965  },
6966  // Rule SanLuis 2008 2009 - Mar Sun>=8 0:00 0 -
6967  {
6968  8 /*fromYearTiny*/,
6969  9 /*toYearTiny*/,
6970  3 /*inMonth*/,
6971  7 /*onDayOfWeek*/,
6972  8 /*onDayOfMonth*/,
6973  0 /*atTimeCode*/,
6974  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6975  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6976  '-' /*letter*/,
6977  },
6978  // Rule SanLuis 2007 2008 - Oct Sun>=8 0:00 1:00 -
6979  {
6980  7 /*fromYearTiny*/,
6981  8 /*toYearTiny*/,
6982  10 /*inMonth*/,
6983  7 /*onDayOfWeek*/,
6984  8 /*onDayOfMonth*/,
6985  0 /*atTimeCode*/,
6986  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6987  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6988  '-' /*letter*/,
6989  },
6990 
6991 };
6992 
6993 
6994 
6995 const extended::ZonePolicy kPolicySanLuis ACE_TIME_PROGMEM = {
6996  kZoneRulesSanLuis /*rules*/,
6997  nullptr /*letters*/,
6998  3 /*numRules*/,
6999  0 /*numLetters*/,
7000 };
7001 
7002 //---------------------------------------------------------------------------
7003 // Policy name: StJohns
7004 // Rules: 5
7005 // Memory (8-bit): 56
7006 // Memory (32-bit): 79
7007 //---------------------------------------------------------------------------
7008 
7009 static const extended::ZoneRule kZoneRulesStJohns[] ACE_TIME_PROGMEM = {
7010  // Rule StJohns 1987 2006 - Oct lastSun 0:01 0 S
7011  {
7012  -13 /*fromYearTiny*/,
7013  6 /*toYearTiny*/,
7014  10 /*inMonth*/,
7015  7 /*onDayOfWeek*/,
7016  0 /*onDayOfMonth*/,
7017  0 /*atTimeCode*/,
7018  1 /*atTimeModifier (kSuffixW + minute=1)*/,
7019  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7020  'S' /*letter*/,
7021  },
7022  // Rule StJohns 1988 only - Apr Sun>=1 0:01 2:00 DD
7023  {
7024  -12 /*fromYearTiny*/,
7025  -12 /*toYearTiny*/,
7026  4 /*inMonth*/,
7027  7 /*onDayOfWeek*/,
7028  1 /*onDayOfMonth*/,
7029  0 /*atTimeCode*/,
7030  1 /*atTimeModifier (kSuffixW + minute=1)*/,
7031  12 /*deltaCode ((deltaMinutes=120)/15 + 4)*/,
7032  0 /*letter (index to "DD")*/,
7033  },
7034  // Rule StJohns 1989 2006 - Apr Sun>=1 0:01 1:00 D
7035  {
7036  -11 /*fromYearTiny*/,
7037  6 /*toYearTiny*/,
7038  4 /*inMonth*/,
7039  7 /*onDayOfWeek*/,
7040  1 /*onDayOfMonth*/,
7041  0 /*atTimeCode*/,
7042  1 /*atTimeModifier (kSuffixW + minute=1)*/,
7043  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7044  'D' /*letter*/,
7045  },
7046  // Rule StJohns 2007 2011 - Mar Sun>=8 0:01 1:00 D
7047  {
7048  7 /*fromYearTiny*/,
7049  11 /*toYearTiny*/,
7050  3 /*inMonth*/,
7051  7 /*onDayOfWeek*/,
7052  8 /*onDayOfMonth*/,
7053  0 /*atTimeCode*/,
7054  1 /*atTimeModifier (kSuffixW + minute=1)*/,
7055  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7056  'D' /*letter*/,
7057  },
7058  // Rule StJohns 2007 2010 - Nov Sun>=1 0:01 0 S
7059  {
7060  7 /*fromYearTiny*/,
7061  10 /*toYearTiny*/,
7062  11 /*inMonth*/,
7063  7 /*onDayOfWeek*/,
7064  1 /*onDayOfMonth*/,
7065  0 /*atTimeCode*/,
7066  1 /*atTimeModifier (kSuffixW + minute=1)*/,
7067  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7068  'S' /*letter*/,
7069  },
7070 
7071 };
7072 
7073 static const char* const kLettersStJohns[] ACE_TIME_PROGMEM = {
7074  /*0*/ "DD",
7075 
7076 };
7077 
7078 
7079 const extended::ZonePolicy kPolicyStJohns ACE_TIME_PROGMEM = {
7080  kZoneRulesStJohns /*rules*/,
7081  kLettersStJohns /*letters*/,
7082  5 /*numRules*/,
7083  1 /*numLetters*/,
7084 };
7085 
7086 //---------------------------------------------------------------------------
7087 // Policy name: Sudan
7088 // Rules: 1
7089 // Memory (8-bit): 15
7090 // Memory (32-bit): 24
7091 //---------------------------------------------------------------------------
7092 
7093 static const extended::ZoneRule kZoneRulesSudan[] ACE_TIME_PROGMEM = {
7094  // Rule Sudan 1970 1985 - Oct 15 0:00 0 -
7095  {
7096  -30 /*fromYearTiny*/,
7097  -15 /*toYearTiny*/,
7098  10 /*inMonth*/,
7099  0 /*onDayOfWeek*/,
7100  15 /*onDayOfMonth*/,
7101  0 /*atTimeCode*/,
7102  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7103  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7104  '-' /*letter*/,
7105  },
7106 
7107 };
7108 
7109 
7110 
7111 const extended::ZonePolicy kPolicySudan ACE_TIME_PROGMEM = {
7112  kZoneRulesSudan /*rules*/,
7113  nullptr /*letters*/,
7114  1 /*numRules*/,
7115  0 /*numLetters*/,
7116 };
7117 
7118 //---------------------------------------------------------------------------
7119 // Policy name: Syria
7120 // Rules: 12
7121 // Memory (8-bit): 114
7122 // Memory (32-bit): 156
7123 //---------------------------------------------------------------------------
7124 
7125 static const extended::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = {
7126  // Rule Syria 1994 2005 - Oct 1 0:00 0 -
7127  {
7128  -6 /*fromYearTiny*/,
7129  5 /*toYearTiny*/,
7130  10 /*inMonth*/,
7131  0 /*onDayOfWeek*/,
7132  1 /*onDayOfMonth*/,
7133  0 /*atTimeCode*/,
7134  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7135  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7136  '-' /*letter*/,
7137  },
7138  // Rule Syria 1997 1998 - Mar lastMon 0:00 1:00 S
7139  {
7140  -3 /*fromYearTiny*/,
7141  -2 /*toYearTiny*/,
7142  3 /*inMonth*/,
7143  1 /*onDayOfWeek*/,
7144  0 /*onDayOfMonth*/,
7145  0 /*atTimeCode*/,
7146  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7147  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7148  'S' /*letter*/,
7149  },
7150  // Rule Syria 1999 2006 - Apr 1 0:00 1:00 S
7151  {
7152  -1 /*fromYearTiny*/,
7153  6 /*toYearTiny*/,
7154  4 /*inMonth*/,
7155  0 /*onDayOfWeek*/,
7156  1 /*onDayOfMonth*/,
7157  0 /*atTimeCode*/,
7158  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7159  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7160  'S' /*letter*/,
7161  },
7162  // Rule Syria 2006 only - Sep 22 0:00 0 -
7163  {
7164  6 /*fromYearTiny*/,
7165  6 /*toYearTiny*/,
7166  9 /*inMonth*/,
7167  0 /*onDayOfWeek*/,
7168  22 /*onDayOfMonth*/,
7169  0 /*atTimeCode*/,
7170  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7171  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7172  '-' /*letter*/,
7173  },
7174  // Rule Syria 2007 only - Mar lastFri 0:00 1:00 S
7175  {
7176  7 /*fromYearTiny*/,
7177  7 /*toYearTiny*/,
7178  3 /*inMonth*/,
7179  5 /*onDayOfWeek*/,
7180  0 /*onDayOfMonth*/,
7181  0 /*atTimeCode*/,
7182  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7183  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7184  'S' /*letter*/,
7185  },
7186  // Rule Syria 2007 only - Nov Fri>=1 0:00 0 -
7187  {
7188  7 /*fromYearTiny*/,
7189  7 /*toYearTiny*/,
7190  11 /*inMonth*/,
7191  5 /*onDayOfWeek*/,
7192  1 /*onDayOfMonth*/,
7193  0 /*atTimeCode*/,
7194  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7195  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7196  '-' /*letter*/,
7197  },
7198  // Rule Syria 2008 only - Apr Fri>=1 0:00 1:00 S
7199  {
7200  8 /*fromYearTiny*/,
7201  8 /*toYearTiny*/,
7202  4 /*inMonth*/,
7203  5 /*onDayOfWeek*/,
7204  1 /*onDayOfMonth*/,
7205  0 /*atTimeCode*/,
7206  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7207  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7208  'S' /*letter*/,
7209  },
7210  // Rule Syria 2008 only - Nov 1 0:00 0 -
7211  {
7212  8 /*fromYearTiny*/,
7213  8 /*toYearTiny*/,
7214  11 /*inMonth*/,
7215  0 /*onDayOfWeek*/,
7216  1 /*onDayOfMonth*/,
7217  0 /*atTimeCode*/,
7218  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7219  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7220  '-' /*letter*/,
7221  },
7222  // Rule Syria 2009 only - Mar lastFri 0:00 1:00 S
7223  {
7224  9 /*fromYearTiny*/,
7225  9 /*toYearTiny*/,
7226  3 /*inMonth*/,
7227  5 /*onDayOfWeek*/,
7228  0 /*onDayOfMonth*/,
7229  0 /*atTimeCode*/,
7230  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7231  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7232  'S' /*letter*/,
7233  },
7234  // Rule Syria 2010 2011 - Apr Fri>=1 0:00 1:00 S
7235  {
7236  10 /*fromYearTiny*/,
7237  11 /*toYearTiny*/,
7238  4 /*inMonth*/,
7239  5 /*onDayOfWeek*/,
7240  1 /*onDayOfMonth*/,
7241  0 /*atTimeCode*/,
7242  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7243  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7244  'S' /*letter*/,
7245  },
7246  // Rule Syria 2012 max - Mar lastFri 0:00 1:00 S
7247  {
7248  12 /*fromYearTiny*/,
7249  126 /*toYearTiny*/,
7250  3 /*inMonth*/,
7251  5 /*onDayOfWeek*/,
7252  0 /*onDayOfMonth*/,
7253  0 /*atTimeCode*/,
7254  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7255  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7256  'S' /*letter*/,
7257  },
7258  // Rule Syria 2009 max - Oct lastFri 0:00 0 -
7259  {
7260  9 /*fromYearTiny*/,
7261  126 /*toYearTiny*/,
7262  10 /*inMonth*/,
7263  5 /*onDayOfWeek*/,
7264  0 /*onDayOfMonth*/,
7265  0 /*atTimeCode*/,
7266  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7267  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7268  '-' /*letter*/,
7269  },
7270 
7271 };
7272 
7273 
7274 
7275 const extended::ZonePolicy kPolicySyria ACE_TIME_PROGMEM = {
7276  kZoneRulesSyria /*rules*/,
7277  nullptr /*letters*/,
7278  12 /*numRules*/,
7279  0 /*numLetters*/,
7280 };
7281 
7282 //---------------------------------------------------------------------------
7283 // Policy name: Taiwan
7284 // Rules: 1
7285 // Memory (8-bit): 15
7286 // Memory (32-bit): 24
7287 //---------------------------------------------------------------------------
7288 
7289 static const extended::ZoneRule kZoneRulesTaiwan[] ACE_TIME_PROGMEM = {
7290  // Rule Taiwan 1979 only - Oct 1 0:00 0 S
7291  {
7292  -21 /*fromYearTiny*/,
7293  -21 /*toYearTiny*/,
7294  10 /*inMonth*/,
7295  0 /*onDayOfWeek*/,
7296  1 /*onDayOfMonth*/,
7297  0 /*atTimeCode*/,
7298  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7299  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7300  'S' /*letter*/,
7301  },
7302 
7303 };
7304 
7305 
7306 
7307 const extended::ZonePolicy kPolicyTaiwan ACE_TIME_PROGMEM = {
7308  kZoneRulesTaiwan /*rules*/,
7309  nullptr /*letters*/,
7310  1 /*numRules*/,
7311  0 /*numLetters*/,
7312 };
7313 
7314 //---------------------------------------------------------------------------
7315 // Policy name: Thule
7316 // Rules: 5
7317 // Memory (8-bit): 51
7318 // Memory (32-bit): 72
7319 //---------------------------------------------------------------------------
7320 
7321 static const extended::ZoneRule kZoneRulesThule[] ACE_TIME_PROGMEM = {
7322  // Rule Thule 1991 1992 - Sep lastSun 2:00 0 S
7323  {
7324  -9 /*fromYearTiny*/,
7325  -8 /*toYearTiny*/,
7326  9 /*inMonth*/,
7327  7 /*onDayOfWeek*/,
7328  0 /*onDayOfMonth*/,
7329  8 /*atTimeCode*/,
7330  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7331  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7332  'S' /*letter*/,
7333  },
7334  // Rule Thule 1993 2006 - Apr Sun>=1 2:00 1:00 D
7335  {
7336  -7 /*fromYearTiny*/,
7337  6 /*toYearTiny*/,
7338  4 /*inMonth*/,
7339  7 /*onDayOfWeek*/,
7340  1 /*onDayOfMonth*/,
7341  8 /*atTimeCode*/,
7342  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7343  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7344  'D' /*letter*/,
7345  },
7346  // Rule Thule 1993 2006 - Oct lastSun 2:00 0 S
7347  {
7348  -7 /*fromYearTiny*/,
7349  6 /*toYearTiny*/,
7350  10 /*inMonth*/,
7351  7 /*onDayOfWeek*/,
7352  0 /*onDayOfMonth*/,
7353  8 /*atTimeCode*/,
7354  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7355  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7356  'S' /*letter*/,
7357  },
7358  // Rule Thule 2007 max - Mar Sun>=8 2:00 1:00 D
7359  {
7360  7 /*fromYearTiny*/,
7361  126 /*toYearTiny*/,
7362  3 /*inMonth*/,
7363  7 /*onDayOfWeek*/,
7364  8 /*onDayOfMonth*/,
7365  8 /*atTimeCode*/,
7366  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7367  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7368  'D' /*letter*/,
7369  },
7370  // Rule Thule 2007 max - Nov Sun>=1 2:00 0 S
7371  {
7372  7 /*fromYearTiny*/,
7373  126 /*toYearTiny*/,
7374  11 /*inMonth*/,
7375  7 /*onDayOfWeek*/,
7376  1 /*onDayOfMonth*/,
7377  8 /*atTimeCode*/,
7378  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7379  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7380  'S' /*letter*/,
7381  },
7382 
7383 };
7384 
7385 
7386 
7387 const extended::ZonePolicy kPolicyThule ACE_TIME_PROGMEM = {
7388  kZoneRulesThule /*rules*/,
7389  nullptr /*letters*/,
7390  5 /*numRules*/,
7391  0 /*numLetters*/,
7392 };
7393 
7394 //---------------------------------------------------------------------------
7395 // Policy name: Tonga
7396 // Rules: 7
7397 // Memory (8-bit): 69
7398 // Memory (32-bit): 96
7399 //---------------------------------------------------------------------------
7400 
7401 static const extended::ZoneRule kZoneRulesTonga[] ACE_TIME_PROGMEM = {
7402  // Anchor: Rule Tonga 2000 only - Mar 19 2:00s 0 -
7403  {
7404  -127 /*fromYearTiny*/,
7405  -127 /*toYearTiny*/,
7406  1 /*inMonth*/,
7407  0 /*onDayOfWeek*/,
7408  1 /*onDayOfMonth*/,
7409  0 /*atTimeCode*/,
7410  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7411  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7412  '-' /*letter*/,
7413  },
7414  // Rule Tonga 1999 only - Oct 7 2:00s 1:00 -
7415  {
7416  -1 /*fromYearTiny*/,
7417  -1 /*toYearTiny*/,
7418  10 /*inMonth*/,
7419  0 /*onDayOfWeek*/,
7420  7 /*onDayOfMonth*/,
7421  8 /*atTimeCode*/,
7422  16 /*atTimeModifier (kSuffixS + minute=0)*/,
7423  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7424  '-' /*letter*/,
7425  },
7426  // Rule Tonga 2000 only - Mar 19 2:00s 0 -
7427  {
7428  0 /*fromYearTiny*/,
7429  0 /*toYearTiny*/,
7430  3 /*inMonth*/,
7431  0 /*onDayOfWeek*/,
7432  19 /*onDayOfMonth*/,
7433  8 /*atTimeCode*/,
7434  16 /*atTimeModifier (kSuffixS + minute=0)*/,
7435  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7436  '-' /*letter*/,
7437  },
7438  // Rule Tonga 2000 2001 - Nov Sun>=1 2:00 1:00 -
7439  {
7440  0 /*fromYearTiny*/,
7441  1 /*toYearTiny*/,
7442  11 /*inMonth*/,
7443  7 /*onDayOfWeek*/,
7444  1 /*onDayOfMonth*/,
7445  8 /*atTimeCode*/,
7446  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7447  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7448  '-' /*letter*/,
7449  },
7450  // Rule Tonga 2001 2002 - Jan lastSun 2:00 0 -
7451  {
7452  1 /*fromYearTiny*/,
7453  2 /*toYearTiny*/,
7454  1 /*inMonth*/,
7455  7 /*onDayOfWeek*/,
7456  0 /*onDayOfMonth*/,
7457  8 /*atTimeCode*/,
7458  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7459  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7460  '-' /*letter*/,
7461  },
7462  // Rule Tonga 2016 only - Nov Sun>=1 2:00 1:00 -
7463  {
7464  16 /*fromYearTiny*/,
7465  16 /*toYearTiny*/,
7466  11 /*inMonth*/,
7467  7 /*onDayOfWeek*/,
7468  1 /*onDayOfMonth*/,
7469  8 /*atTimeCode*/,
7470  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7471  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7472  '-' /*letter*/,
7473  },
7474  // Rule Tonga 2017 only - Jan Sun>=15 3:00 0 -
7475  {
7476  17 /*fromYearTiny*/,
7477  17 /*toYearTiny*/,
7478  1 /*inMonth*/,
7479  7 /*onDayOfWeek*/,
7480  15 /*onDayOfMonth*/,
7481  12 /*atTimeCode*/,
7482  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7483  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7484  '-' /*letter*/,
7485  },
7486 
7487 };
7488 
7489 
7490 
7491 const extended::ZonePolicy kPolicyTonga ACE_TIME_PROGMEM = {
7492  kZoneRulesTonga /*rules*/,
7493  nullptr /*letters*/,
7494  7 /*numRules*/,
7495  0 /*numLetters*/,
7496 };
7497 
7498 //---------------------------------------------------------------------------
7499 // Policy name: Troll
7500 // Rules: 3
7501 // Memory (8-bit): 45
7502 // Memory (32-bit): 64
7503 //---------------------------------------------------------------------------
7504 
7505 static const extended::ZoneRule kZoneRulesTroll[] ACE_TIME_PROGMEM = {
7506  // Anchor: Rule Troll 2004 max - Oct lastSun 1:00u 0:00 +00
7507  {
7508  -127 /*fromYearTiny*/,
7509  -127 /*toYearTiny*/,
7510  1 /*inMonth*/,
7511  0 /*onDayOfWeek*/,
7512  1 /*onDayOfMonth*/,
7513  0 /*atTimeCode*/,
7514  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7515  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7516  0 /*letter (index to "+00")*/,
7517  },
7518  // Rule Troll 2005 max - Mar lastSun 1:00u 2:00 +02
7519  {
7520  5 /*fromYearTiny*/,
7521  126 /*toYearTiny*/,
7522  3 /*inMonth*/,
7523  7 /*onDayOfWeek*/,
7524  0 /*onDayOfMonth*/,
7525  4 /*atTimeCode*/,
7526  32 /*atTimeModifier (kSuffixU + minute=0)*/,
7527  12 /*deltaCode ((deltaMinutes=120)/15 + 4)*/,
7528  1 /*letter (index to "+02")*/,
7529  },
7530  // Rule Troll 2004 max - Oct lastSun 1:00u 0:00 +00
7531  {
7532  4 /*fromYearTiny*/,
7533  126 /*toYearTiny*/,
7534  10 /*inMonth*/,
7535  7 /*onDayOfWeek*/,
7536  0 /*onDayOfMonth*/,
7537  4 /*atTimeCode*/,
7538  32 /*atTimeModifier (kSuffixU + minute=0)*/,
7539  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7540  0 /*letter (index to "+00")*/,
7541  },
7542 
7543 };
7544 
7545 static const char* const kLettersTroll[] ACE_TIME_PROGMEM = {
7546  /*0*/ "+00",
7547  /*1*/ "+02",
7548 
7549 };
7550 
7551 
7552 const extended::ZonePolicy kPolicyTroll ACE_TIME_PROGMEM = {
7553  kZoneRulesTroll /*rules*/,
7554  kLettersTroll /*letters*/,
7555  3 /*numRules*/,
7556  2 /*numLetters*/,
7557 };
7558 
7559 //---------------------------------------------------------------------------
7560 // Policy name: Tunisia
7561 // Rules: 5
7562 // Memory (8-bit): 51
7563 // Memory (32-bit): 72
7564 //---------------------------------------------------------------------------
7565 
7566 static const extended::ZoneRule kZoneRulesTunisia[] ACE_TIME_PROGMEM = {
7567  // Rule Tunisia 1988 1990 - Sep lastSun 0:00s 0 -
7568  {
7569  -12 /*fromYearTiny*/,
7570  -10 /*toYearTiny*/,
7571  9 /*inMonth*/,
7572  7 /*onDayOfWeek*/,
7573  0 /*onDayOfMonth*/,
7574  0 /*atTimeCode*/,
7575  16 /*atTimeModifier (kSuffixS + minute=0)*/,
7576  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7577  '-' /*letter*/,
7578  },
7579  // Rule Tunisia 2005 only - May 1 0:00s 1:00 S
7580  {
7581  5 /*fromYearTiny*/,
7582  5 /*toYearTiny*/,
7583  5 /*inMonth*/,
7584  0 /*onDayOfWeek*/,
7585  1 /*onDayOfMonth*/,
7586  0 /*atTimeCode*/,
7587  16 /*atTimeModifier (kSuffixS + minute=0)*/,
7588  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7589  'S' /*letter*/,
7590  },
7591  // Rule Tunisia 2005 only - Sep 30 1:00s 0 -
7592  {
7593  5 /*fromYearTiny*/,
7594  5 /*toYearTiny*/,
7595  9 /*inMonth*/,
7596  0 /*onDayOfWeek*/,
7597  30 /*onDayOfMonth*/,
7598  4 /*atTimeCode*/,
7599  16 /*atTimeModifier (kSuffixS + minute=0)*/,
7600  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7601  '-' /*letter*/,
7602  },
7603  // Rule Tunisia 2006 2008 - Mar lastSun 2:00s 1:00 S
7604  {
7605  6 /*fromYearTiny*/,
7606  8 /*toYearTiny*/,
7607  3 /*inMonth*/,
7608  7 /*onDayOfWeek*/,
7609  0 /*onDayOfMonth*/,
7610  8 /*atTimeCode*/,
7611  16 /*atTimeModifier (kSuffixS + minute=0)*/,
7612  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7613  'S' /*letter*/,
7614  },
7615  // Rule Tunisia 2006 2008 - Oct lastSun 2:00s 0 -
7616  {
7617  6 /*fromYearTiny*/,
7618  8 /*toYearTiny*/,
7619  10 /*inMonth*/,
7620  7 /*onDayOfWeek*/,
7621  0 /*onDayOfMonth*/,
7622  8 /*atTimeCode*/,
7623  16 /*atTimeModifier (kSuffixS + minute=0)*/,
7624  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7625  '-' /*letter*/,
7626  },
7627 
7628 };
7629 
7630 
7631 
7632 const extended::ZonePolicy kPolicyTunisia ACE_TIME_PROGMEM = {
7633  kZoneRulesTunisia /*rules*/,
7634  nullptr /*letters*/,
7635  5 /*numRules*/,
7636  0 /*numLetters*/,
7637 };
7638 
7639 //---------------------------------------------------------------------------
7640 // Policy name: Turkey
7641 // Rules: 3
7642 // Memory (8-bit): 33
7643 // Memory (32-bit): 48
7644 //---------------------------------------------------------------------------
7645 
7646 static const extended::ZoneRule kZoneRulesTurkey[] ACE_TIME_PROGMEM = {
7647  // Rule Turkey 1986 1995 - Sep lastSun 1:00s 0 -
7648  {
7649  -14 /*fromYearTiny*/,
7650  -5 /*toYearTiny*/,
7651  9 /*inMonth*/,
7652  7 /*onDayOfWeek*/,
7653  0 /*onDayOfMonth*/,
7654  4 /*atTimeCode*/,
7655  16 /*atTimeModifier (kSuffixS + minute=0)*/,
7656  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7657  '-' /*letter*/,
7658  },
7659  // Rule Turkey 1995 2006 - Mar lastSun 1:00s 1:00 S
7660  {
7661  -5 /*fromYearTiny*/,
7662  6 /*toYearTiny*/,
7663  3 /*inMonth*/,
7664  7 /*onDayOfWeek*/,
7665  0 /*onDayOfMonth*/,
7666  4 /*atTimeCode*/,
7667  16 /*atTimeModifier (kSuffixS + minute=0)*/,
7668  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7669  'S' /*letter*/,
7670  },
7671  // Rule Turkey 1996 2006 - Oct lastSun 1:00s 0 -
7672  {
7673  -4 /*fromYearTiny*/,
7674  6 /*toYearTiny*/,
7675  10 /*inMonth*/,
7676  7 /*onDayOfWeek*/,
7677  0 /*onDayOfMonth*/,
7678  4 /*atTimeCode*/,
7679  16 /*atTimeModifier (kSuffixS + minute=0)*/,
7680  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7681  '-' /*letter*/,
7682  },
7683 
7684 };
7685 
7686 
7687 
7688 const extended::ZonePolicy kPolicyTurkey ACE_TIME_PROGMEM = {
7689  kZoneRulesTurkey /*rules*/,
7690  nullptr /*letters*/,
7691  3 /*numRules*/,
7692  0 /*numLetters*/,
7693 };
7694 
7695 //---------------------------------------------------------------------------
7696 // Policy name: US
7697 // Rules: 5
7698 // Memory (8-bit): 51
7699 // Memory (32-bit): 72
7700 //---------------------------------------------------------------------------
7701 
7702 static const extended::ZoneRule kZoneRulesUS[] ACE_TIME_PROGMEM = {
7703  // Rule US 1967 2006 - Oct lastSun 2:00 0 S
7704  {
7705  -33 /*fromYearTiny*/,
7706  6 /*toYearTiny*/,
7707  10 /*inMonth*/,
7708  7 /*onDayOfWeek*/,
7709  0 /*onDayOfMonth*/,
7710  8 /*atTimeCode*/,
7711  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7712  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7713  'S' /*letter*/,
7714  },
7715  // Rule US 1976 1986 - Apr lastSun 2:00 1:00 D
7716  {
7717  -24 /*fromYearTiny*/,
7718  -14 /*toYearTiny*/,
7719  4 /*inMonth*/,
7720  7 /*onDayOfWeek*/,
7721  0 /*onDayOfMonth*/,
7722  8 /*atTimeCode*/,
7723  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7724  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7725  'D' /*letter*/,
7726  },
7727  // Rule US 1987 2006 - Apr Sun>=1 2:00 1:00 D
7728  {
7729  -13 /*fromYearTiny*/,
7730  6 /*toYearTiny*/,
7731  4 /*inMonth*/,
7732  7 /*onDayOfWeek*/,
7733  1 /*onDayOfMonth*/,
7734  8 /*atTimeCode*/,
7735  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7736  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7737  'D' /*letter*/,
7738  },
7739  // Rule US 2007 max - Mar Sun>=8 2:00 1:00 D
7740  {
7741  7 /*fromYearTiny*/,
7742  126 /*toYearTiny*/,
7743  3 /*inMonth*/,
7744  7 /*onDayOfWeek*/,
7745  8 /*onDayOfMonth*/,
7746  8 /*atTimeCode*/,
7747  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7748  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7749  'D' /*letter*/,
7750  },
7751  // Rule US 2007 max - Nov Sun>=1 2:00 0 S
7752  {
7753  7 /*fromYearTiny*/,
7754  126 /*toYearTiny*/,
7755  11 /*inMonth*/,
7756  7 /*onDayOfWeek*/,
7757  1 /*onDayOfMonth*/,
7758  8 /*atTimeCode*/,
7759  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7760  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7761  'S' /*letter*/,
7762  },
7763 
7764 };
7765 
7766 
7767 
7768 const extended::ZonePolicy kPolicyUS ACE_TIME_PROGMEM = {
7769  kZoneRulesUS /*rules*/,
7770  nullptr /*letters*/,
7771  5 /*numRules*/,
7772  0 /*numLetters*/,
7773 };
7774 
7775 //---------------------------------------------------------------------------
7776 // Policy name: Uruguay
7777 // Rules: 6
7778 // Memory (8-bit): 60
7779 // Memory (32-bit): 84
7780 //---------------------------------------------------------------------------
7781 
7782 static const extended::ZoneRule kZoneRulesUruguay[] ACE_TIME_PROGMEM = {
7783  // Rule Uruguay 1993 only - Feb 28 0:00 0 -
7784  {
7785  -7 /*fromYearTiny*/,
7786  -7 /*toYearTiny*/,
7787  2 /*inMonth*/,
7788  0 /*onDayOfWeek*/,
7789  28 /*onDayOfMonth*/,
7790  0 /*atTimeCode*/,
7791  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7792  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7793  '-' /*letter*/,
7794  },
7795  // Rule Uruguay 2004 only - Sep 19 0:00 1:00 -
7796  {
7797  4 /*fromYearTiny*/,
7798  4 /*toYearTiny*/,
7799  9 /*inMonth*/,
7800  0 /*onDayOfWeek*/,
7801  19 /*onDayOfMonth*/,
7802  0 /*atTimeCode*/,
7803  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7804  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7805  '-' /*letter*/,
7806  },
7807  // Rule Uruguay 2005 only - Mar 27 2:00 0 -
7808  {
7809  5 /*fromYearTiny*/,
7810  5 /*toYearTiny*/,
7811  3 /*inMonth*/,
7812  0 /*onDayOfWeek*/,
7813  27 /*onDayOfMonth*/,
7814  8 /*atTimeCode*/,
7815  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7816  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7817  '-' /*letter*/,
7818  },
7819  // Rule Uruguay 2005 only - Oct 9 2:00 1:00 -
7820  {
7821  5 /*fromYearTiny*/,
7822  5 /*toYearTiny*/,
7823  10 /*inMonth*/,
7824  0 /*onDayOfWeek*/,
7825  9 /*onDayOfMonth*/,
7826  8 /*atTimeCode*/,
7827  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7828  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7829  '-' /*letter*/,
7830  },
7831  // Rule Uruguay 2006 2015 - Mar Sun>=8 2:00 0 -
7832  {
7833  6 /*fromYearTiny*/,
7834  15 /*toYearTiny*/,
7835  3 /*inMonth*/,
7836  7 /*onDayOfWeek*/,
7837  8 /*onDayOfMonth*/,
7838  8 /*atTimeCode*/,
7839  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7840  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7841  '-' /*letter*/,
7842  },
7843  // Rule Uruguay 2006 2014 - Oct Sun>=1 2:00 1:00 -
7844  {
7845  6 /*fromYearTiny*/,
7846  14 /*toYearTiny*/,
7847  10 /*inMonth*/,
7848  7 /*onDayOfWeek*/,
7849  1 /*onDayOfMonth*/,
7850  8 /*atTimeCode*/,
7851  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7852  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7853  '-' /*letter*/,
7854  },
7855 
7856 };
7857 
7858 
7859 
7860 const extended::ZonePolicy kPolicyUruguay ACE_TIME_PROGMEM = {
7861  kZoneRulesUruguay /*rules*/,
7862  nullptr /*letters*/,
7863  6 /*numRules*/,
7864  0 /*numLetters*/,
7865 };
7866 
7867 //---------------------------------------------------------------------------
7868 // Policy name: Vanuatu
7869 // Rules: 1
7870 // Memory (8-bit): 15
7871 // Memory (32-bit): 24
7872 //---------------------------------------------------------------------------
7873 
7874 static const extended::ZoneRule kZoneRulesVanuatu[] ACE_TIME_PROGMEM = {
7875  // Rule Vanuatu 1992 1993 - Jan Sat>=22 24:00 0 -
7876  {
7877  -8 /*fromYearTiny*/,
7878  -7 /*toYearTiny*/,
7879  1 /*inMonth*/,
7880  6 /*onDayOfWeek*/,
7881  22 /*onDayOfMonth*/,
7882  96 /*atTimeCode*/,
7883  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7884  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7885  '-' /*letter*/,
7886  },
7887 
7888 };
7889 
7890 
7891 
7892 const extended::ZonePolicy kPolicyVanuatu ACE_TIME_PROGMEM = {
7893  kZoneRulesVanuatu /*rules*/,
7894  nullptr /*letters*/,
7895  1 /*numRules*/,
7896  0 /*numLetters*/,
7897 };
7898 
7899 //---------------------------------------------------------------------------
7900 // Policy name: WS
7901 // Rules: 6
7902 // Memory (8-bit): 60
7903 // Memory (32-bit): 84
7904 //---------------------------------------------------------------------------
7905 
7906 static const extended::ZoneRule kZoneRulesWS[] ACE_TIME_PROGMEM = {
7907  // Anchor: Rule WS 2011 only - Apr Sat>=1 4:00 0 -
7908  {
7909  -127 /*fromYearTiny*/,
7910  -127 /*toYearTiny*/,
7911  1 /*inMonth*/,
7912  0 /*onDayOfWeek*/,
7913  1 /*onDayOfMonth*/,
7914  0 /*atTimeCode*/,
7915  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7916  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7917  '-' /*letter*/,
7918  },
7919  // Rule WS 2010 only - Sep lastSun 0:00 1 -
7920  {
7921  10 /*fromYearTiny*/,
7922  10 /*toYearTiny*/,
7923  9 /*inMonth*/,
7924  7 /*onDayOfWeek*/,
7925  0 /*onDayOfMonth*/,
7926  0 /*atTimeCode*/,
7927  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7928  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7929  '-' /*letter*/,
7930  },
7931  // Rule WS 2011 only - Apr Sat>=1 4:00 0 -
7932  {
7933  11 /*fromYearTiny*/,
7934  11 /*toYearTiny*/,
7935  4 /*inMonth*/,
7936  6 /*onDayOfWeek*/,
7937  1 /*onDayOfMonth*/,
7938  16 /*atTimeCode*/,
7939  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7940  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7941  '-' /*letter*/,
7942  },
7943  // Rule WS 2011 only - Sep lastSat 3:00 1 -
7944  {
7945  11 /*fromYearTiny*/,
7946  11 /*toYearTiny*/,
7947  9 /*inMonth*/,
7948  6 /*onDayOfWeek*/,
7949  0 /*onDayOfMonth*/,
7950  12 /*atTimeCode*/,
7951  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7952  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7953  '-' /*letter*/,
7954  },
7955  // Rule WS 2012 2021 - Apr Sun>=1 4:00 0 -
7956  {
7957  12 /*fromYearTiny*/,
7958  21 /*toYearTiny*/,
7959  4 /*inMonth*/,
7960  7 /*onDayOfWeek*/,
7961  1 /*onDayOfMonth*/,
7962  16 /*atTimeCode*/,
7963  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7964  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7965  '-' /*letter*/,
7966  },
7967  // Rule WS 2012 2020 - Sep lastSun 3:00 1 -
7968  {
7969  12 /*fromYearTiny*/,
7970  20 /*toYearTiny*/,
7971  9 /*inMonth*/,
7972  7 /*onDayOfWeek*/,
7973  0 /*onDayOfMonth*/,
7974  12 /*atTimeCode*/,
7975  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7976  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7977  '-' /*letter*/,
7978  },
7979 
7980 };
7981 
7982 
7983 
7984 const extended::ZonePolicy kPolicyWS ACE_TIME_PROGMEM = {
7985  kZoneRulesWS /*rules*/,
7986  nullptr /*letters*/,
7987  6 /*numRules*/,
7988  0 /*numLetters*/,
7989 };
7990 
7991 //---------------------------------------------------------------------------
7992 // Policy name: Winn
7993 // Rules: 3
7994 // Memory (8-bit): 33
7995 // Memory (32-bit): 48
7996 //---------------------------------------------------------------------------
7997 
7998 static const extended::ZoneRule kZoneRulesWinn[] ACE_TIME_PROGMEM = {
7999  // Rule Winn 1966 1986 - Apr lastSun 2:00s 1:00 D
8000  {
8001  -34 /*fromYearTiny*/,
8002  -14 /*toYearTiny*/,
8003  4 /*inMonth*/,
8004  7 /*onDayOfWeek*/,
8005  0 /*onDayOfMonth*/,
8006  8 /*atTimeCode*/,
8007  16 /*atTimeModifier (kSuffixS + minute=0)*/,
8008  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8009  'D' /*letter*/,
8010  },
8011  // Rule Winn 1966 2005 - Oct lastSun 2:00s 0 S
8012  {
8013  -34 /*fromYearTiny*/,
8014  5 /*toYearTiny*/,
8015  10 /*inMonth*/,
8016  7 /*onDayOfWeek*/,
8017  0 /*onDayOfMonth*/,
8018  8 /*atTimeCode*/,
8019  16 /*atTimeModifier (kSuffixS + minute=0)*/,
8020  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8021  'S' /*letter*/,
8022  },
8023  // Rule Winn 1987 2005 - Apr Sun>=1 2:00s 1:00 D
8024  {
8025  -13 /*fromYearTiny*/,
8026  5 /*toYearTiny*/,
8027  4 /*inMonth*/,
8028  7 /*onDayOfWeek*/,
8029  1 /*onDayOfMonth*/,
8030  8 /*atTimeCode*/,
8031  16 /*atTimeModifier (kSuffixS + minute=0)*/,
8032  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8033  'D' /*letter*/,
8034  },
8035 
8036 };
8037 
8038 
8039 
8040 const extended::ZonePolicy kPolicyWinn ACE_TIME_PROGMEM = {
8041  kZoneRulesWinn /*rules*/,
8042  nullptr /*letters*/,
8043  3 /*numRules*/,
8044  0 /*numLetters*/,
8045 };
8046 
8047 //---------------------------------------------------------------------------
8048 // Policy name: Zion
8049 // Rules: 24
8050 // Memory (8-bit): 222
8051 // Memory (32-bit): 300
8052 //---------------------------------------------------------------------------
8053 
8054 static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = {
8055  // Rule Zion 1998 only - Sep 6 0:00 0 S
8056  {
8057  -2 /*fromYearTiny*/,
8058  -2 /*toYearTiny*/,
8059  9 /*inMonth*/,
8060  0 /*onDayOfWeek*/,
8061  6 /*onDayOfMonth*/,
8062  0 /*atTimeCode*/,
8063  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8064  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8065  'S' /*letter*/,
8066  },
8067  // Rule Zion 1999 only - Apr 2 2:00 1:00 D
8068  {
8069  -1 /*fromYearTiny*/,
8070  -1 /*toYearTiny*/,
8071  4 /*inMonth*/,
8072  0 /*onDayOfWeek*/,
8073  2 /*onDayOfMonth*/,
8074  8 /*atTimeCode*/,
8075  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8076  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8077  'D' /*letter*/,
8078  },
8079  // Rule Zion 1999 only - Sep 3 2:00 0 S
8080  {
8081  -1 /*fromYearTiny*/,
8082  -1 /*toYearTiny*/,
8083  9 /*inMonth*/,
8084  0 /*onDayOfWeek*/,
8085  3 /*onDayOfMonth*/,
8086  8 /*atTimeCode*/,
8087  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8088  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8089  'S' /*letter*/,
8090  },
8091  // Rule Zion 2000 only - Apr 14 2:00 1:00 D
8092  {
8093  0 /*fromYearTiny*/,
8094  0 /*toYearTiny*/,
8095  4 /*inMonth*/,
8096  0 /*onDayOfWeek*/,
8097  14 /*onDayOfMonth*/,
8098  8 /*atTimeCode*/,
8099  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8100  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8101  'D' /*letter*/,
8102  },
8103  // Rule Zion 2000 only - Oct 6 1:00 0 S
8104  {
8105  0 /*fromYearTiny*/,
8106  0 /*toYearTiny*/,
8107  10 /*inMonth*/,
8108  0 /*onDayOfWeek*/,
8109  6 /*onDayOfMonth*/,
8110  4 /*atTimeCode*/,
8111  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8112  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8113  'S' /*letter*/,
8114  },
8115  // Rule Zion 2001 only - Apr 9 1:00 1:00 D
8116  {
8117  1 /*fromYearTiny*/,
8118  1 /*toYearTiny*/,
8119  4 /*inMonth*/,
8120  0 /*onDayOfWeek*/,
8121  9 /*onDayOfMonth*/,
8122  4 /*atTimeCode*/,
8123  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8124  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8125  'D' /*letter*/,
8126  },
8127  // Rule Zion 2001 only - Sep 24 1:00 0 S
8128  {
8129  1 /*fromYearTiny*/,
8130  1 /*toYearTiny*/,
8131  9 /*inMonth*/,
8132  0 /*onDayOfWeek*/,
8133  24 /*onDayOfMonth*/,
8134  4 /*atTimeCode*/,
8135  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8136  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8137  'S' /*letter*/,
8138  },
8139  // Rule Zion 2002 only - Mar 29 1:00 1:00 D
8140  {
8141  2 /*fromYearTiny*/,
8142  2 /*toYearTiny*/,
8143  3 /*inMonth*/,
8144  0 /*onDayOfWeek*/,
8145  29 /*onDayOfMonth*/,
8146  4 /*atTimeCode*/,
8147  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8148  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8149  'D' /*letter*/,
8150  },
8151  // Rule Zion 2002 only - Oct 7 1:00 0 S
8152  {
8153  2 /*fromYearTiny*/,
8154  2 /*toYearTiny*/,
8155  10 /*inMonth*/,
8156  0 /*onDayOfWeek*/,
8157  7 /*onDayOfMonth*/,
8158  4 /*atTimeCode*/,
8159  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8160  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8161  'S' /*letter*/,
8162  },
8163  // Rule Zion 2003 only - Mar 28 1:00 1:00 D
8164  {
8165  3 /*fromYearTiny*/,
8166  3 /*toYearTiny*/,
8167  3 /*inMonth*/,
8168  0 /*onDayOfWeek*/,
8169  28 /*onDayOfMonth*/,
8170  4 /*atTimeCode*/,
8171  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8172  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8173  'D' /*letter*/,
8174  },
8175  // Rule Zion 2003 only - Oct 3 1:00 0 S
8176  {
8177  3 /*fromYearTiny*/,
8178  3 /*toYearTiny*/,
8179  10 /*inMonth*/,
8180  0 /*onDayOfWeek*/,
8181  3 /*onDayOfMonth*/,
8182  4 /*atTimeCode*/,
8183  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8184  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8185  'S' /*letter*/,
8186  },
8187  // Rule Zion 2004 only - Apr 7 1:00 1:00 D
8188  {
8189  4 /*fromYearTiny*/,
8190  4 /*toYearTiny*/,
8191  4 /*inMonth*/,
8192  0 /*onDayOfWeek*/,
8193  7 /*onDayOfMonth*/,
8194  4 /*atTimeCode*/,
8195  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8196  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8197  'D' /*letter*/,
8198  },
8199  // Rule Zion 2004 only - Sep 22 1:00 0 S
8200  {
8201  4 /*fromYearTiny*/,
8202  4 /*toYearTiny*/,
8203  9 /*inMonth*/,
8204  0 /*onDayOfWeek*/,
8205  22 /*onDayOfMonth*/,
8206  4 /*atTimeCode*/,
8207  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8208  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8209  'S' /*letter*/,
8210  },
8211  // Rule Zion 2005 2012 - Apr Fri<=1 2:00 1:00 D
8212  {
8213  5 /*fromYearTiny*/,
8214  12 /*toYearTiny*/,
8215  4 /*inMonth*/,
8216  5 /*onDayOfWeek*/,
8217  -1 /*onDayOfMonth*/,
8218  8 /*atTimeCode*/,
8219  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8220  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8221  'D' /*letter*/,
8222  },
8223  // Rule Zion 2005 only - Oct 9 2:00 0 S
8224  {
8225  5 /*fromYearTiny*/,
8226  5 /*toYearTiny*/,
8227  10 /*inMonth*/,
8228  0 /*onDayOfWeek*/,
8229  9 /*onDayOfMonth*/,
8230  8 /*atTimeCode*/,
8231  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8232  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8233  'S' /*letter*/,
8234  },
8235  // Rule Zion 2006 only - Oct 1 2:00 0 S
8236  {
8237  6 /*fromYearTiny*/,
8238  6 /*toYearTiny*/,
8239  10 /*inMonth*/,
8240  0 /*onDayOfWeek*/,
8241  1 /*onDayOfMonth*/,
8242  8 /*atTimeCode*/,
8243  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8244  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8245  'S' /*letter*/,
8246  },
8247  // Rule Zion 2007 only - Sep 16 2:00 0 S
8248  {
8249  7 /*fromYearTiny*/,
8250  7 /*toYearTiny*/,
8251  9 /*inMonth*/,
8252  0 /*onDayOfWeek*/,
8253  16 /*onDayOfMonth*/,
8254  8 /*atTimeCode*/,
8255  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8256  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8257  'S' /*letter*/,
8258  },
8259  // Rule Zion 2008 only - Oct 5 2:00 0 S
8260  {
8261  8 /*fromYearTiny*/,
8262  8 /*toYearTiny*/,
8263  10 /*inMonth*/,
8264  0 /*onDayOfWeek*/,
8265  5 /*onDayOfMonth*/,
8266  8 /*atTimeCode*/,
8267  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8268  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8269  'S' /*letter*/,
8270  },
8271  // Rule Zion 2009 only - Sep 27 2:00 0 S
8272  {
8273  9 /*fromYearTiny*/,
8274  9 /*toYearTiny*/,
8275  9 /*inMonth*/,
8276  0 /*onDayOfWeek*/,
8277  27 /*onDayOfMonth*/,
8278  8 /*atTimeCode*/,
8279  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8280  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8281  'S' /*letter*/,
8282  },
8283  // Rule Zion 2010 only - Sep 12 2:00 0 S
8284  {
8285  10 /*fromYearTiny*/,
8286  10 /*toYearTiny*/,
8287  9 /*inMonth*/,
8288  0 /*onDayOfWeek*/,
8289  12 /*onDayOfMonth*/,
8290  8 /*atTimeCode*/,
8291  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8292  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8293  'S' /*letter*/,
8294  },
8295  // Rule Zion 2011 only - Oct 2 2:00 0 S
8296  {
8297  11 /*fromYearTiny*/,
8298  11 /*toYearTiny*/,
8299  10 /*inMonth*/,
8300  0 /*onDayOfWeek*/,
8301  2 /*onDayOfMonth*/,
8302  8 /*atTimeCode*/,
8303  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8304  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8305  'S' /*letter*/,
8306  },
8307  // Rule Zion 2012 only - Sep 23 2:00 0 S
8308  {
8309  12 /*fromYearTiny*/,
8310  12 /*toYearTiny*/,
8311  9 /*inMonth*/,
8312  0 /*onDayOfWeek*/,
8313  23 /*onDayOfMonth*/,
8314  8 /*atTimeCode*/,
8315  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8316  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8317  'S' /*letter*/,
8318  },
8319  // Rule Zion 2013 max - Mar Fri>=23 2:00 1:00 D
8320  {
8321  13 /*fromYearTiny*/,
8322  126 /*toYearTiny*/,
8323  3 /*inMonth*/,
8324  5 /*onDayOfWeek*/,
8325  23 /*onDayOfMonth*/,
8326  8 /*atTimeCode*/,
8327  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8328  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8329  'D' /*letter*/,
8330  },
8331  // Rule Zion 2013 max - Oct lastSun 2:00 0 S
8332  {
8333  13 /*fromYearTiny*/,
8334  126 /*toYearTiny*/,
8335  10 /*inMonth*/,
8336  7 /*onDayOfWeek*/,
8337  0 /*onDayOfMonth*/,
8338  8 /*atTimeCode*/,
8339  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8340  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8341  'S' /*letter*/,
8342  },
8343 
8344 };
8345 
8346 
8347 
8348 const extended::ZonePolicy kPolicyZion ACE_TIME_PROGMEM = {
8349  kZoneRulesZion /*rules*/,
8350  nullptr /*letters*/,
8351  24 /*numRules*/,
8352  0 /*numLetters*/,
8353 };
8354 
8355 
8356 
8357 }
8358 }
compat.h