AceTime  2.3.0
Date and time classes for Arduino that support timezones from the TZ Database.
zone_policies.cpp
1 // This file was generated by the following script:
2 //
3 // $ /home/brian/src/AceTimeTools/src/acetimetools/tzcompiler.py
4 // --input_dir /home/brian/src/AceTime/src/zonedbx/tzfiles
5 // --output_dir /home/brian/src/AceTime/src/zonedbx
6 // --tz_version 2023c
7 // --action zonedb
8 // --language arduino
9 // --scope extended
10 // --db_namespace zonedbx
11 // --start_year 2000
12 // --until_year 2200
13 //
14 // using the TZ Database files
15 //
16 // africa
17 // antarctica
18 // asia
19 // australasia
20 // backward
21 // etcetera
22 // europe
23 // northamerica
24 // southamerica
25 //
26 // from https://github.com/eggert/tz/releases/tag/2023c
27 //
28 // Supported Zones: 596 (350 zones, 246 links)
29 // Unsupported Zones: 0 (0 zones, 0 links)
30 //
31 // Requested Years: [2000,2200]
32 // Accurate Years: [2000,32767]
33 //
34 // Original Years: [1844,2087]
35 // Generated Years: [1950,2087]
36 // Lower/Upper Truncated: [True,False]
37 //
38 // Estimator Years: [1950,2090]
39 // Max Buffer Size: 7
40 //
41 // Records:
42 // Infos: 596
43 // Eras: 646
44 // Policies: 83
45 // Rules: 735
46 //
47 // Memory (8-bits):
48 // Context: 16
49 // Rules: 6615
50 // Policies: 249
51 // Eras: 7106
52 // Zones: 4550
53 // Links: 3198
54 // Registry: 1192
55 // Formats: 597
56 // Letters: 46
57 // Fragments: 150
58 // Names: 5649 (original: 9076)
59 // TOTAL: 29368
60 //
61 // Memory (32-bits):
62 // Context: 24
63 // Rules: 8820
64 // Policies: 664
65 // Eras: 10336
66 // Zones: 8400
67 // Links: 5904
68 // Registry: 2384
69 // Formats: 597
70 // Letters: 64
71 // Fragments: 178
72 // Names: 5649 (original: 9076)
73 // TOTAL: 43020
74 //
75 // DO NOT EDIT
76 
77 #include <zoneinfo/compat.h>
78 #include "zone_policies.h"
79 
80 namespace ace_time {
81 namespace zonedbx {
82 
83 //---------------------------------------------------------------------------
84 // Policies: 83
85 // Rules: 735
86 //---------------------------------------------------------------------------
87 
88 //---------------------------------------------------------------------------
89 // Policy name: AN
90 // Rules: 10
91 //---------------------------------------------------------------------------
92 
93 static const extended::ZoneRule kZoneRulesAN[] ACE_TIME_PROGMEM = {
94  // Anchor: Rule AN 1990 1995 - Mar Sun>=1 2:00s 0 S
95  {
96  -127 /*fromYearTiny (-32767)*/,
97  -127 /*toYearTiny (-32767)*/,
98  1 /*inMonth*/,
99  0 /*onDayOfWeek*/,
100  1 /*onDayOfMonth*/,
101  0 /*atTimeCode*/,
102  0 /*atTimeModifier (kSuffixW + minute=0)*/,
103  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
104  7 /*letterIndex ("S")*/,
105  },
106  // Rule AN 1987 1999 - Oct lastSun 2:00s 1:00 D
107  {
108  -113 /*fromYearTiny (1987)*/,
109  -101 /*toYearTiny (1999)*/,
110  10 /*inMonth*/,
111  7 /*onDayOfWeek*/,
112  0 /*onDayOfMonth*/,
113  8 /*atTimeCode*/,
114  16 /*atTimeModifier (kSuffixS + minute=0)*/,
115  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
116  5 /*letterIndex ("D")*/,
117  },
118  // Rule AN 1990 1995 - Mar Sun>=1 2:00s 0 S
119  {
120  -110 /*fromYearTiny (1990)*/,
121  -105 /*toYearTiny (1995)*/,
122  3 /*inMonth*/,
123  7 /*onDayOfWeek*/,
124  1 /*onDayOfMonth*/,
125  8 /*atTimeCode*/,
126  16 /*atTimeModifier (kSuffixS + minute=0)*/,
127  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
128  7 /*letterIndex ("S")*/,
129  },
130  // Rule AN 1996 2005 - Mar lastSun 2:00s 0 S
131  {
132  -104 /*fromYearTiny (1996)*/,
133  -95 /*toYearTiny (2005)*/,
134  3 /*inMonth*/,
135  7 /*onDayOfWeek*/,
136  0 /*onDayOfMonth*/,
137  8 /*atTimeCode*/,
138  16 /*atTimeModifier (kSuffixS + minute=0)*/,
139  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
140  7 /*letterIndex ("S")*/,
141  },
142  // Rule AN 2000 only - Aug lastSun 2:00s 1:00 D
143  {
144  -100 /*fromYearTiny (2000)*/,
145  -100 /*toYearTiny (2000)*/,
146  8 /*inMonth*/,
147  7 /*onDayOfWeek*/,
148  0 /*onDayOfMonth*/,
149  8 /*atTimeCode*/,
150  16 /*atTimeModifier (kSuffixS + minute=0)*/,
151  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
152  5 /*letterIndex ("D")*/,
153  },
154  // Rule AN 2001 2007 - Oct lastSun 2:00s 1:00 D
155  {
156  -99 /*fromYearTiny (2001)*/,
157  -93 /*toYearTiny (2007)*/,
158  10 /*inMonth*/,
159  7 /*onDayOfWeek*/,
160  0 /*onDayOfMonth*/,
161  8 /*atTimeCode*/,
162  16 /*atTimeModifier (kSuffixS + minute=0)*/,
163  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
164  5 /*letterIndex ("D")*/,
165  },
166  // Rule AN 2006 only - Apr Sun>=1 2:00s 0 S
167  {
168  -94 /*fromYearTiny (2006)*/,
169  -94 /*toYearTiny (2006)*/,
170  4 /*inMonth*/,
171  7 /*onDayOfWeek*/,
172  1 /*onDayOfMonth*/,
173  8 /*atTimeCode*/,
174  16 /*atTimeModifier (kSuffixS + minute=0)*/,
175  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
176  7 /*letterIndex ("S")*/,
177  },
178  // Rule AN 2007 only - Mar lastSun 2:00s 0 S
179  {
180  -93 /*fromYearTiny (2007)*/,
181  -93 /*toYearTiny (2007)*/,
182  3 /*inMonth*/,
183  7 /*onDayOfWeek*/,
184  0 /*onDayOfMonth*/,
185  8 /*atTimeCode*/,
186  16 /*atTimeModifier (kSuffixS + minute=0)*/,
187  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
188  7 /*letterIndex ("S")*/,
189  },
190  // Rule AN 2008 max - Apr Sun>=1 2:00s 0 S
191  {
192  -92 /*fromYearTiny (2008)*/,
193  126 /*toYearTiny (32766)*/,
194  4 /*inMonth*/,
195  7 /*onDayOfWeek*/,
196  1 /*onDayOfMonth*/,
197  8 /*atTimeCode*/,
198  16 /*atTimeModifier (kSuffixS + minute=0)*/,
199  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
200  7 /*letterIndex ("S")*/,
201  },
202  // Rule AN 2008 max - Oct Sun>=1 2:00s 1:00 D
203  {
204  -92 /*fromYearTiny (2008)*/,
205  126 /*toYearTiny (32766)*/,
206  10 /*inMonth*/,
207  7 /*onDayOfWeek*/,
208  1 /*onDayOfMonth*/,
209  8 /*atTimeCode*/,
210  16 /*atTimeModifier (kSuffixS + minute=0)*/,
211  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
212  5 /*letterIndex ("D")*/,
213  },
214 
215 };
216 
217 const extended::ZonePolicy kZonePolicyAN ACE_TIME_PROGMEM = {
218  kZoneRulesAN /*rules*/,
219  10 /*numRules*/,
220 };
221 
222 //---------------------------------------------------------------------------
223 // Policy name: AQ
224 // Rules: 1
225 //---------------------------------------------------------------------------
226 
227 static const extended::ZoneRule kZoneRulesAQ[] ACE_TIME_PROGMEM = {
228  // Anchor: Rule AQ 1990 1992 - Mar Sun>=1 2:00s 0 S
229  {
230  -127 /*fromYearTiny (-32767)*/,
231  -127 /*toYearTiny (-32767)*/,
232  1 /*inMonth*/,
233  0 /*onDayOfWeek*/,
234  1 /*onDayOfMonth*/,
235  0 /*atTimeCode*/,
236  0 /*atTimeModifier (kSuffixW + minute=0)*/,
237  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
238  7 /*letterIndex ("S")*/,
239  },
240 
241 };
242 
243 const extended::ZonePolicy kZonePolicyAQ ACE_TIME_PROGMEM = {
244  kZoneRulesAQ /*rules*/,
245  1 /*numRules*/,
246 };
247 
248 //---------------------------------------------------------------------------
249 // Policy name: AS
250 // Rules: 8
251 //---------------------------------------------------------------------------
252 
253 static const extended::ZoneRule kZoneRulesAS[] ACE_TIME_PROGMEM = {
254  // Anchor: Rule AS 1994 only - Mar 20 2:00s 0 S
255  {
256  -127 /*fromYearTiny (-32767)*/,
257  -127 /*toYearTiny (-32767)*/,
258  1 /*inMonth*/,
259  0 /*onDayOfWeek*/,
260  1 /*onDayOfMonth*/,
261  0 /*atTimeCode*/,
262  0 /*atTimeModifier (kSuffixW + minute=0)*/,
263  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
264  7 /*letterIndex ("S")*/,
265  },
266  // Rule AS 1987 2007 - Oct lastSun 2:00s 1:00 D
267  {
268  -113 /*fromYearTiny (1987)*/,
269  -93 /*toYearTiny (2007)*/,
270  10 /*inMonth*/,
271  7 /*onDayOfWeek*/,
272  0 /*onDayOfMonth*/,
273  8 /*atTimeCode*/,
274  16 /*atTimeModifier (kSuffixS + minute=0)*/,
275  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
276  5 /*letterIndex ("D")*/,
277  },
278  // Rule AS 1994 only - Mar 20 2:00s 0 S
279  {
280  -106 /*fromYearTiny (1994)*/,
281  -106 /*toYearTiny (1994)*/,
282  3 /*inMonth*/,
283  0 /*onDayOfWeek*/,
284  20 /*onDayOfMonth*/,
285  8 /*atTimeCode*/,
286  16 /*atTimeModifier (kSuffixS + minute=0)*/,
287  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
288  7 /*letterIndex ("S")*/,
289  },
290  // Rule AS 1995 2005 - Mar lastSun 2:00s 0 S
291  {
292  -105 /*fromYearTiny (1995)*/,
293  -95 /*toYearTiny (2005)*/,
294  3 /*inMonth*/,
295  7 /*onDayOfWeek*/,
296  0 /*onDayOfMonth*/,
297  8 /*atTimeCode*/,
298  16 /*atTimeModifier (kSuffixS + minute=0)*/,
299  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
300  7 /*letterIndex ("S")*/,
301  },
302  // Rule AS 2006 only - Apr 2 2:00s 0 S
303  {
304  -94 /*fromYearTiny (2006)*/,
305  -94 /*toYearTiny (2006)*/,
306  4 /*inMonth*/,
307  0 /*onDayOfWeek*/,
308  2 /*onDayOfMonth*/,
309  8 /*atTimeCode*/,
310  16 /*atTimeModifier (kSuffixS + minute=0)*/,
311  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
312  7 /*letterIndex ("S")*/,
313  },
314  // Rule AS 2007 only - Mar lastSun 2:00s 0 S
315  {
316  -93 /*fromYearTiny (2007)*/,
317  -93 /*toYearTiny (2007)*/,
318  3 /*inMonth*/,
319  7 /*onDayOfWeek*/,
320  0 /*onDayOfMonth*/,
321  8 /*atTimeCode*/,
322  16 /*atTimeModifier (kSuffixS + minute=0)*/,
323  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
324  7 /*letterIndex ("S")*/,
325  },
326  // Rule AS 2008 max - Apr Sun>=1 2:00s 0 S
327  {
328  -92 /*fromYearTiny (2008)*/,
329  126 /*toYearTiny (32766)*/,
330  4 /*inMonth*/,
331  7 /*onDayOfWeek*/,
332  1 /*onDayOfMonth*/,
333  8 /*atTimeCode*/,
334  16 /*atTimeModifier (kSuffixS + minute=0)*/,
335  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
336  7 /*letterIndex ("S")*/,
337  },
338  // Rule AS 2008 max - Oct Sun>=1 2:00s 1:00 D
339  {
340  -92 /*fromYearTiny (2008)*/,
341  126 /*toYearTiny (32766)*/,
342  10 /*inMonth*/,
343  7 /*onDayOfWeek*/,
344  1 /*onDayOfMonth*/,
345  8 /*atTimeCode*/,
346  16 /*atTimeModifier (kSuffixS + minute=0)*/,
347  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
348  5 /*letterIndex ("D")*/,
349  },
350 
351 };
352 
353 const extended::ZonePolicy kZonePolicyAS ACE_TIME_PROGMEM = {
354  kZoneRulesAS /*rules*/,
355  8 /*numRules*/,
356 };
357 
358 //---------------------------------------------------------------------------
359 // Policy name: AT
360 // Rules: 9
361 //---------------------------------------------------------------------------
362 
363 static const extended::ZoneRule kZoneRulesAT[] ACE_TIME_PROGMEM = {
364  // Anchor: Rule AT 1991 2005 - Mar lastSun 2:00s 0 S
365  {
366  -127 /*fromYearTiny (-32767)*/,
367  -127 /*toYearTiny (-32767)*/,
368  1 /*inMonth*/,
369  0 /*onDayOfWeek*/,
370  1 /*onDayOfMonth*/,
371  0 /*atTimeCode*/,
372  0 /*atTimeModifier (kSuffixW + minute=0)*/,
373  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
374  7 /*letterIndex ("S")*/,
375  },
376  // Rule AT 1988 1990 - Oct lastSun 2:00s 1:00 D
377  {
378  -112 /*fromYearTiny (1988)*/,
379  -110 /*toYearTiny (1990)*/,
380  10 /*inMonth*/,
381  7 /*onDayOfWeek*/,
382  0 /*onDayOfMonth*/,
383  8 /*atTimeCode*/,
384  16 /*atTimeModifier (kSuffixS + minute=0)*/,
385  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
386  5 /*letterIndex ("D")*/,
387  },
388  // Rule AT 1991 1999 - Oct Sun>=1 2:00s 1:00 D
389  {
390  -109 /*fromYearTiny (1991)*/,
391  -101 /*toYearTiny (1999)*/,
392  10 /*inMonth*/,
393  7 /*onDayOfWeek*/,
394  1 /*onDayOfMonth*/,
395  8 /*atTimeCode*/,
396  16 /*atTimeModifier (kSuffixS + minute=0)*/,
397  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
398  5 /*letterIndex ("D")*/,
399  },
400  // Rule AT 1991 2005 - Mar lastSun 2:00s 0 S
401  {
402  -109 /*fromYearTiny (1991)*/,
403  -95 /*toYearTiny (2005)*/,
404  3 /*inMonth*/,
405  7 /*onDayOfWeek*/,
406  0 /*onDayOfMonth*/,
407  8 /*atTimeCode*/,
408  16 /*atTimeModifier (kSuffixS + minute=0)*/,
409  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
410  7 /*letterIndex ("S")*/,
411  },
412  // Rule AT 2000 only - Aug lastSun 2:00s 1:00 D
413  {
414  -100 /*fromYearTiny (2000)*/,
415  -100 /*toYearTiny (2000)*/,
416  8 /*inMonth*/,
417  7 /*onDayOfWeek*/,
418  0 /*onDayOfMonth*/,
419  8 /*atTimeCode*/,
420  16 /*atTimeModifier (kSuffixS + minute=0)*/,
421  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
422  5 /*letterIndex ("D")*/,
423  },
424  // Rule AT 2001 max - Oct Sun>=1 2:00s 1:00 D
425  {
426  -99 /*fromYearTiny (2001)*/,
427  126 /*toYearTiny (32766)*/,
428  10 /*inMonth*/,
429  7 /*onDayOfWeek*/,
430  1 /*onDayOfMonth*/,
431  8 /*atTimeCode*/,
432  16 /*atTimeModifier (kSuffixS + minute=0)*/,
433  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
434  5 /*letterIndex ("D")*/,
435  },
436  // Rule AT 2006 only - Apr Sun>=1 2:00s 0 S
437  {
438  -94 /*fromYearTiny (2006)*/,
439  -94 /*toYearTiny (2006)*/,
440  4 /*inMonth*/,
441  7 /*onDayOfWeek*/,
442  1 /*onDayOfMonth*/,
443  8 /*atTimeCode*/,
444  16 /*atTimeModifier (kSuffixS + minute=0)*/,
445  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
446  7 /*letterIndex ("S")*/,
447  },
448  // Rule AT 2007 only - Mar lastSun 2:00s 0 S
449  {
450  -93 /*fromYearTiny (2007)*/,
451  -93 /*toYearTiny (2007)*/,
452  3 /*inMonth*/,
453  7 /*onDayOfWeek*/,
454  0 /*onDayOfMonth*/,
455  8 /*atTimeCode*/,
456  16 /*atTimeModifier (kSuffixS + minute=0)*/,
457  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
458  7 /*letterIndex ("S")*/,
459  },
460  // Rule AT 2008 max - Apr Sun>=1 2:00s 0 S
461  {
462  -92 /*fromYearTiny (2008)*/,
463  126 /*toYearTiny (32766)*/,
464  4 /*inMonth*/,
465  7 /*onDayOfWeek*/,
466  1 /*onDayOfMonth*/,
467  8 /*atTimeCode*/,
468  16 /*atTimeModifier (kSuffixS + minute=0)*/,
469  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
470  7 /*letterIndex ("S")*/,
471  },
472 
473 };
474 
475 const extended::ZonePolicy kZonePolicyAT ACE_TIME_PROGMEM = {
476  kZoneRulesAT /*rules*/,
477  9 /*numRules*/,
478 };
479 
480 //---------------------------------------------------------------------------
481 // Policy name: AV
482 // Rules: 10
483 //---------------------------------------------------------------------------
484 
485 static const extended::ZoneRule kZoneRulesAV[] ACE_TIME_PROGMEM = {
486  // Anchor: Rule AV 1991 1994 - Mar Sun>=1 2:00s 0 S
487  {
488  -127 /*fromYearTiny (-32767)*/,
489  -127 /*toYearTiny (-32767)*/,
490  1 /*inMonth*/,
491  0 /*onDayOfWeek*/,
492  1 /*onDayOfMonth*/,
493  0 /*atTimeCode*/,
494  0 /*atTimeModifier (kSuffixW + minute=0)*/,
495  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
496  7 /*letterIndex ("S")*/,
497  },
498  // Rule AV 1988 1999 - Oct lastSun 2:00s 1:00 D
499  {
500  -112 /*fromYearTiny (1988)*/,
501  -101 /*toYearTiny (1999)*/,
502  10 /*inMonth*/,
503  7 /*onDayOfWeek*/,
504  0 /*onDayOfMonth*/,
505  8 /*atTimeCode*/,
506  16 /*atTimeModifier (kSuffixS + minute=0)*/,
507  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
508  5 /*letterIndex ("D")*/,
509  },
510  // Rule AV 1991 1994 - Mar Sun>=1 2:00s 0 S
511  {
512  -109 /*fromYearTiny (1991)*/,
513  -106 /*toYearTiny (1994)*/,
514  3 /*inMonth*/,
515  7 /*onDayOfWeek*/,
516  1 /*onDayOfMonth*/,
517  8 /*atTimeCode*/,
518  16 /*atTimeModifier (kSuffixS + minute=0)*/,
519  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
520  7 /*letterIndex ("S")*/,
521  },
522  // Rule AV 1995 2005 - Mar lastSun 2:00s 0 S
523  {
524  -105 /*fromYearTiny (1995)*/,
525  -95 /*toYearTiny (2005)*/,
526  3 /*inMonth*/,
527  7 /*onDayOfWeek*/,
528  0 /*onDayOfMonth*/,
529  8 /*atTimeCode*/,
530  16 /*atTimeModifier (kSuffixS + minute=0)*/,
531  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
532  7 /*letterIndex ("S")*/,
533  },
534  // Rule AV 2000 only - Aug lastSun 2:00s 1:00 D
535  {
536  -100 /*fromYearTiny (2000)*/,
537  -100 /*toYearTiny (2000)*/,
538  8 /*inMonth*/,
539  7 /*onDayOfWeek*/,
540  0 /*onDayOfMonth*/,
541  8 /*atTimeCode*/,
542  16 /*atTimeModifier (kSuffixS + minute=0)*/,
543  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
544  5 /*letterIndex ("D")*/,
545  },
546  // Rule AV 2001 2007 - Oct lastSun 2:00s 1:00 D
547  {
548  -99 /*fromYearTiny (2001)*/,
549  -93 /*toYearTiny (2007)*/,
550  10 /*inMonth*/,
551  7 /*onDayOfWeek*/,
552  0 /*onDayOfMonth*/,
553  8 /*atTimeCode*/,
554  16 /*atTimeModifier (kSuffixS + minute=0)*/,
555  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
556  5 /*letterIndex ("D")*/,
557  },
558  // Rule AV 2006 only - Apr Sun>=1 2:00s 0 S
559  {
560  -94 /*fromYearTiny (2006)*/,
561  -94 /*toYearTiny (2006)*/,
562  4 /*inMonth*/,
563  7 /*onDayOfWeek*/,
564  1 /*onDayOfMonth*/,
565  8 /*atTimeCode*/,
566  16 /*atTimeModifier (kSuffixS + minute=0)*/,
567  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
568  7 /*letterIndex ("S")*/,
569  },
570  // Rule AV 2007 only - Mar lastSun 2:00s 0 S
571  {
572  -93 /*fromYearTiny (2007)*/,
573  -93 /*toYearTiny (2007)*/,
574  3 /*inMonth*/,
575  7 /*onDayOfWeek*/,
576  0 /*onDayOfMonth*/,
577  8 /*atTimeCode*/,
578  16 /*atTimeModifier (kSuffixS + minute=0)*/,
579  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
580  7 /*letterIndex ("S")*/,
581  },
582  // Rule AV 2008 max - Apr Sun>=1 2:00s 0 S
583  {
584  -92 /*fromYearTiny (2008)*/,
585  126 /*toYearTiny (32766)*/,
586  4 /*inMonth*/,
587  7 /*onDayOfWeek*/,
588  1 /*onDayOfMonth*/,
589  8 /*atTimeCode*/,
590  16 /*atTimeModifier (kSuffixS + minute=0)*/,
591  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
592  7 /*letterIndex ("S")*/,
593  },
594  // Rule AV 2008 max - Oct Sun>=1 2:00s 1:00 D
595  {
596  -92 /*fromYearTiny (2008)*/,
597  126 /*toYearTiny (32766)*/,
598  10 /*inMonth*/,
599  7 /*onDayOfWeek*/,
600  1 /*onDayOfMonth*/,
601  8 /*atTimeCode*/,
602  16 /*atTimeModifier (kSuffixS + minute=0)*/,
603  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
604  5 /*letterIndex ("D")*/,
605  },
606 
607 };
608 
609 const extended::ZonePolicy kZonePolicyAV ACE_TIME_PROGMEM = {
610  kZoneRulesAV /*rules*/,
611  10 /*numRules*/,
612 };
613 
614 //---------------------------------------------------------------------------
615 // Policy name: AW
616 // Rules: 5
617 //---------------------------------------------------------------------------
618 
619 static const extended::ZoneRule kZoneRulesAW[] ACE_TIME_PROGMEM = {
620  // Anchor: Rule AW 1992 only - Mar Sun>=1 2:00s 0 S
621  {
622  -127 /*fromYearTiny (-32767)*/,
623  -127 /*toYearTiny (-32767)*/,
624  1 /*inMonth*/,
625  0 /*onDayOfWeek*/,
626  1 /*onDayOfMonth*/,
627  0 /*atTimeCode*/,
628  0 /*atTimeModifier (kSuffixW + minute=0)*/,
629  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
630  7 /*letterIndex ("S")*/,
631  },
632  // Rule AW 1992 only - Mar Sun>=1 2:00s 0 S
633  {
634  -108 /*fromYearTiny (1992)*/,
635  -108 /*toYearTiny (1992)*/,
636  3 /*inMonth*/,
637  7 /*onDayOfWeek*/,
638  1 /*onDayOfMonth*/,
639  8 /*atTimeCode*/,
640  16 /*atTimeModifier (kSuffixS + minute=0)*/,
641  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
642  7 /*letterIndex ("S")*/,
643  },
644  // Rule AW 2006 only - Dec 3 2:00s 1:00 D
645  {
646  -94 /*fromYearTiny (2006)*/,
647  -94 /*toYearTiny (2006)*/,
648  12 /*inMonth*/,
649  0 /*onDayOfWeek*/,
650  3 /*onDayOfMonth*/,
651  8 /*atTimeCode*/,
652  16 /*atTimeModifier (kSuffixS + minute=0)*/,
653  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
654  5 /*letterIndex ("D")*/,
655  },
656  // Rule AW 2007 2009 - Mar lastSun 2:00s 0 S
657  {
658  -93 /*fromYearTiny (2007)*/,
659  -91 /*toYearTiny (2009)*/,
660  3 /*inMonth*/,
661  7 /*onDayOfWeek*/,
662  0 /*onDayOfMonth*/,
663  8 /*atTimeCode*/,
664  16 /*atTimeModifier (kSuffixS + minute=0)*/,
665  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
666  7 /*letterIndex ("S")*/,
667  },
668  // Rule AW 2007 2008 - Oct lastSun 2:00s 1:00 D
669  {
670  -93 /*fromYearTiny (2007)*/,
671  -92 /*toYearTiny (2008)*/,
672  10 /*inMonth*/,
673  7 /*onDayOfWeek*/,
674  0 /*onDayOfMonth*/,
675  8 /*atTimeCode*/,
676  16 /*atTimeModifier (kSuffixS + minute=0)*/,
677  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
678  5 /*letterIndex ("D")*/,
679  },
680 
681 };
682 
683 const extended::ZonePolicy kZonePolicyAW ACE_TIME_PROGMEM = {
684  kZoneRulesAW /*rules*/,
685  5 /*numRules*/,
686 };
687 
688 //---------------------------------------------------------------------------
689 // Policy name: Arg
690 // Rules: 7
691 //---------------------------------------------------------------------------
692 
693 static const extended::ZoneRule kZoneRulesArg[] ACE_TIME_PROGMEM = {
694  // Anchor: Rule Arg 1989 1993 - Mar Sun>=1 0:00 0 -
695  {
696  -127 /*fromYearTiny (-32767)*/,
697  -127 /*toYearTiny (-32767)*/,
698  1 /*inMonth*/,
699  0 /*onDayOfWeek*/,
700  1 /*onDayOfMonth*/,
701  0 /*atTimeCode*/,
702  0 /*atTimeModifier (kSuffixW + minute=0)*/,
703  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
704  0 /*letterIndex ("")*/,
705  },
706  // Rule Arg 1989 1993 - Mar Sun>=1 0:00 0 -
707  {
708  -111 /*fromYearTiny (1989)*/,
709  -107 /*toYearTiny (1993)*/,
710  3 /*inMonth*/,
711  7 /*onDayOfWeek*/,
712  1 /*onDayOfMonth*/,
713  0 /*atTimeCode*/,
714  0 /*atTimeModifier (kSuffixW + minute=0)*/,
715  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
716  0 /*letterIndex ("")*/,
717  },
718  // Rule Arg 1999 only - Oct Sun>=1 0:00 1:00 -
719  {
720  -101 /*fromYearTiny (1999)*/,
721  -101 /*toYearTiny (1999)*/,
722  10 /*inMonth*/,
723  7 /*onDayOfWeek*/,
724  1 /*onDayOfMonth*/,
725  0 /*atTimeCode*/,
726  0 /*atTimeModifier (kSuffixW + minute=0)*/,
727  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
728  0 /*letterIndex ("")*/,
729  },
730  // Rule Arg 2000 only - Mar 3 0:00 0 -
731  {
732  -100 /*fromYearTiny (2000)*/,
733  -100 /*toYearTiny (2000)*/,
734  3 /*inMonth*/,
735  0 /*onDayOfWeek*/,
736  3 /*onDayOfMonth*/,
737  0 /*atTimeCode*/,
738  0 /*atTimeModifier (kSuffixW + minute=0)*/,
739  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
740  0 /*letterIndex ("")*/,
741  },
742  // Rule Arg 2007 only - Dec 30 0:00 1:00 -
743  {
744  -93 /*fromYearTiny (2007)*/,
745  -93 /*toYearTiny (2007)*/,
746  12 /*inMonth*/,
747  0 /*onDayOfWeek*/,
748  30 /*onDayOfMonth*/,
749  0 /*atTimeCode*/,
750  0 /*atTimeModifier (kSuffixW + minute=0)*/,
751  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
752  0 /*letterIndex ("")*/,
753  },
754  // Rule Arg 2008 2009 - Mar Sun>=15 0:00 0 -
755  {
756  -92 /*fromYearTiny (2008)*/,
757  -91 /*toYearTiny (2009)*/,
758  3 /*inMonth*/,
759  7 /*onDayOfWeek*/,
760  15 /*onDayOfMonth*/,
761  0 /*atTimeCode*/,
762  0 /*atTimeModifier (kSuffixW + minute=0)*/,
763  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
764  0 /*letterIndex ("")*/,
765  },
766  // Rule Arg 2008 only - Oct Sun>=15 0:00 1:00 -
767  {
768  -92 /*fromYearTiny (2008)*/,
769  -92 /*toYearTiny (2008)*/,
770  10 /*inMonth*/,
771  7 /*onDayOfWeek*/,
772  15 /*onDayOfMonth*/,
773  0 /*atTimeCode*/,
774  0 /*atTimeModifier (kSuffixW + minute=0)*/,
775  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
776  0 /*letterIndex ("")*/,
777  },
778 
779 };
780 
781 const extended::ZonePolicy kZonePolicyArg ACE_TIME_PROGMEM = {
782  kZoneRulesArg /*rules*/,
783  7 /*numRules*/,
784 };
785 
786 //---------------------------------------------------------------------------
787 // Policy name: Armenia
788 // Rules: 3
789 //---------------------------------------------------------------------------
790 
791 static const extended::ZoneRule kZoneRulesArmenia[] ACE_TIME_PROGMEM = {
792  // Anchor: Rule Armenia 2011 only - Oct lastSun 2:00s 0 -
793  {
794  -127 /*fromYearTiny (-32767)*/,
795  -127 /*toYearTiny (-32767)*/,
796  1 /*inMonth*/,
797  0 /*onDayOfWeek*/,
798  1 /*onDayOfMonth*/,
799  0 /*atTimeCode*/,
800  0 /*atTimeModifier (kSuffixW + minute=0)*/,
801  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
802  0 /*letterIndex ("")*/,
803  },
804  // Rule Armenia 2011 only - Mar lastSun 2:00s 1:00 -
805  {
806  -89 /*fromYearTiny (2011)*/,
807  -89 /*toYearTiny (2011)*/,
808  3 /*inMonth*/,
809  7 /*onDayOfWeek*/,
810  0 /*onDayOfMonth*/,
811  8 /*atTimeCode*/,
812  16 /*atTimeModifier (kSuffixS + minute=0)*/,
813  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
814  0 /*letterIndex ("")*/,
815  },
816  // Rule Armenia 2011 only - Oct lastSun 2:00s 0 -
817  {
818  -89 /*fromYearTiny (2011)*/,
819  -89 /*toYearTiny (2011)*/,
820  10 /*inMonth*/,
821  7 /*onDayOfWeek*/,
822  0 /*onDayOfMonth*/,
823  8 /*atTimeCode*/,
824  16 /*atTimeModifier (kSuffixS + minute=0)*/,
825  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
826  0 /*letterIndex ("")*/,
827  },
828 
829 };
830 
831 const extended::ZonePolicy kZonePolicyArmenia ACE_TIME_PROGMEM = {
832  kZoneRulesArmenia /*rules*/,
833  3 /*numRules*/,
834 };
835 
836 //---------------------------------------------------------------------------
837 // Policy name: Aus
838 // Rules: 1
839 //---------------------------------------------------------------------------
840 
841 static const extended::ZoneRule kZoneRulesAus[] ACE_TIME_PROGMEM = {
842  // Anchor: Rule Aus 1943 1944 - Mar lastSun 2:00s 0 S
843  {
844  -127 /*fromYearTiny (-32767)*/,
845  -127 /*toYearTiny (-32767)*/,
846  1 /*inMonth*/,
847  0 /*onDayOfWeek*/,
848  1 /*onDayOfMonth*/,
849  0 /*atTimeCode*/,
850  0 /*atTimeModifier (kSuffixW + minute=0)*/,
851  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
852  7 /*letterIndex ("S")*/,
853  },
854 
855 };
856 
857 const extended::ZonePolicy kZonePolicyAus ACE_TIME_PROGMEM = {
858  kZoneRulesAus /*rules*/,
859  1 /*numRules*/,
860 };
861 
862 //---------------------------------------------------------------------------
863 // Policy name: Azer
864 // Rules: 3
865 //---------------------------------------------------------------------------
866 
867 static const extended::ZoneRule kZoneRulesAzer[] ACE_TIME_PROGMEM = {
868  // Anchor: Rule Azer 1997 2015 - Oct lastSun 5:00 0 -
869  {
870  -127 /*fromYearTiny (-32767)*/,
871  -127 /*toYearTiny (-32767)*/,
872  1 /*inMonth*/,
873  0 /*onDayOfWeek*/,
874  1 /*onDayOfMonth*/,
875  0 /*atTimeCode*/,
876  0 /*atTimeModifier (kSuffixW + minute=0)*/,
877  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
878  0 /*letterIndex ("")*/,
879  },
880  // Rule Azer 1997 2015 - Mar lastSun 4:00 1:00 -
881  {
882  -103 /*fromYearTiny (1997)*/,
883  -85 /*toYearTiny (2015)*/,
884  3 /*inMonth*/,
885  7 /*onDayOfWeek*/,
886  0 /*onDayOfMonth*/,
887  16 /*atTimeCode*/,
888  0 /*atTimeModifier (kSuffixW + minute=0)*/,
889  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
890  0 /*letterIndex ("")*/,
891  },
892  // Rule Azer 1997 2015 - Oct lastSun 5:00 0 -
893  {
894  -103 /*fromYearTiny (1997)*/,
895  -85 /*toYearTiny (2015)*/,
896  10 /*inMonth*/,
897  7 /*onDayOfWeek*/,
898  0 /*onDayOfMonth*/,
899  20 /*atTimeCode*/,
900  0 /*atTimeModifier (kSuffixW + minute=0)*/,
901  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
902  0 /*letterIndex ("")*/,
903  },
904 
905 };
906 
907 const extended::ZonePolicy kZonePolicyAzer ACE_TIME_PROGMEM = {
908  kZoneRulesAzer /*rules*/,
909  3 /*numRules*/,
910 };
911 
912 //---------------------------------------------------------------------------
913 // Policy name: Barb
914 // Rules: 1
915 //---------------------------------------------------------------------------
916 
917 static const extended::ZoneRule kZoneRulesBarb[] ACE_TIME_PROGMEM = {
918  // Anchor: Rule Barb 1980 only - Sep 25 2:00 0 S
919  {
920  -127 /*fromYearTiny (-32767)*/,
921  -127 /*toYearTiny (-32767)*/,
922  1 /*inMonth*/,
923  0 /*onDayOfWeek*/,
924  1 /*onDayOfMonth*/,
925  0 /*atTimeCode*/,
926  0 /*atTimeModifier (kSuffixW + minute=0)*/,
927  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
928  7 /*letterIndex ("S")*/,
929  },
930 
931 };
932 
933 const extended::ZonePolicy kZonePolicyBarb ACE_TIME_PROGMEM = {
934  kZoneRulesBarb /*rules*/,
935  1 /*numRules*/,
936 };
937 
938 //---------------------------------------------------------------------------
939 // Policy name: Belize
940 // Rules: 1
941 //---------------------------------------------------------------------------
942 
943 static const extended::ZoneRule kZoneRulesBelize[] ACE_TIME_PROGMEM = {
944  // Anchor: Rule Belize 1983 only - Feb 12 0:00 0 CST
945  {
946  -127 /*fromYearTiny (-32767)*/,
947  -127 /*toYearTiny (-32767)*/,
948  1 /*inMonth*/,
949  0 /*onDayOfWeek*/,
950  1 /*onDayOfMonth*/,
951  0 /*atTimeCode*/,
952  0 /*atTimeModifier (kSuffixW + minute=0)*/,
953  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
954  4 /*letterIndex ("CST")*/,
955  },
956 
957 };
958 
959 const extended::ZonePolicy kZonePolicyBelize ACE_TIME_PROGMEM = {
960  kZoneRulesBelize /*rules*/,
961  1 /*numRules*/,
962 };
963 
964 //---------------------------------------------------------------------------
965 // Policy name: Brazil
966 // Rules: 21
967 //---------------------------------------------------------------------------
968 
969 static const extended::ZoneRule kZoneRulesBrazil[] ACE_TIME_PROGMEM = {
970  // Anchor: Rule Brazil 1999 only - Feb 21 0:00 0 -
971  {
972  -127 /*fromYearTiny (-32767)*/,
973  -127 /*toYearTiny (-32767)*/,
974  1 /*inMonth*/,
975  0 /*onDayOfWeek*/,
976  1 /*onDayOfMonth*/,
977  0 /*atTimeCode*/,
978  0 /*atTimeModifier (kSuffixW + minute=0)*/,
979  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
980  0 /*letterIndex ("")*/,
981  },
982  // Rule Brazil 1998 only - Oct 11 0:00 1:00 -
983  {
984  -102 /*fromYearTiny (1998)*/,
985  -102 /*toYearTiny (1998)*/,
986  10 /*inMonth*/,
987  0 /*onDayOfWeek*/,
988  11 /*onDayOfMonth*/,
989  0 /*atTimeCode*/,
990  0 /*atTimeModifier (kSuffixW + minute=0)*/,
991  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
992  0 /*letterIndex ("")*/,
993  },
994  // Rule Brazil 1999 only - Feb 21 0:00 0 -
995  {
996  -101 /*fromYearTiny (1999)*/,
997  -101 /*toYearTiny (1999)*/,
998  2 /*inMonth*/,
999  0 /*onDayOfWeek*/,
1000  21 /*onDayOfMonth*/,
1001  0 /*atTimeCode*/,
1002  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1003  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1004  0 /*letterIndex ("")*/,
1005  },
1006  // Rule Brazil 1999 only - Oct 3 0:00 1:00 -
1007  {
1008  -101 /*fromYearTiny (1999)*/,
1009  -101 /*toYearTiny (1999)*/,
1010  10 /*inMonth*/,
1011  0 /*onDayOfWeek*/,
1012  3 /*onDayOfMonth*/,
1013  0 /*atTimeCode*/,
1014  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1015  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1016  0 /*letterIndex ("")*/,
1017  },
1018  // Rule Brazil 2000 only - Feb 27 0:00 0 -
1019  {
1020  -100 /*fromYearTiny (2000)*/,
1021  -100 /*toYearTiny (2000)*/,
1022  2 /*inMonth*/,
1023  0 /*onDayOfWeek*/,
1024  27 /*onDayOfMonth*/,
1025  0 /*atTimeCode*/,
1026  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1027  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1028  0 /*letterIndex ("")*/,
1029  },
1030  // Rule Brazil 2000 2001 - Oct Sun>=8 0:00 1:00 -
1031  {
1032  -100 /*fromYearTiny (2000)*/,
1033  -99 /*toYearTiny (2001)*/,
1034  10 /*inMonth*/,
1035  7 /*onDayOfWeek*/,
1036  8 /*onDayOfMonth*/,
1037  0 /*atTimeCode*/,
1038  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1039  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1040  0 /*letterIndex ("")*/,
1041  },
1042  // Rule Brazil 2001 2006 - Feb Sun>=15 0:00 0 -
1043  {
1044  -99 /*fromYearTiny (2001)*/,
1045  -94 /*toYearTiny (2006)*/,
1046  2 /*inMonth*/,
1047  7 /*onDayOfWeek*/,
1048  15 /*onDayOfMonth*/,
1049  0 /*atTimeCode*/,
1050  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1051  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1052  0 /*letterIndex ("")*/,
1053  },
1054  // Rule Brazil 2002 only - Nov 3 0:00 1:00 -
1055  {
1056  -98 /*fromYearTiny (2002)*/,
1057  -98 /*toYearTiny (2002)*/,
1058  11 /*inMonth*/,
1059  0 /*onDayOfWeek*/,
1060  3 /*onDayOfMonth*/,
1061  0 /*atTimeCode*/,
1062  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1063  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1064  0 /*letterIndex ("")*/,
1065  },
1066  // Rule Brazil 2003 only - Oct 19 0:00 1:00 -
1067  {
1068  -97 /*fromYearTiny (2003)*/,
1069  -97 /*toYearTiny (2003)*/,
1070  10 /*inMonth*/,
1071  0 /*onDayOfWeek*/,
1072  19 /*onDayOfMonth*/,
1073  0 /*atTimeCode*/,
1074  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1075  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1076  0 /*letterIndex ("")*/,
1077  },
1078  // Rule Brazil 2004 only - Nov 2 0:00 1:00 -
1079  {
1080  -96 /*fromYearTiny (2004)*/,
1081  -96 /*toYearTiny (2004)*/,
1082  11 /*inMonth*/,
1083  0 /*onDayOfWeek*/,
1084  2 /*onDayOfMonth*/,
1085  0 /*atTimeCode*/,
1086  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1087  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1088  0 /*letterIndex ("")*/,
1089  },
1090  // Rule Brazil 2005 only - Oct 16 0:00 1:00 -
1091  {
1092  -95 /*fromYearTiny (2005)*/,
1093  -95 /*toYearTiny (2005)*/,
1094  10 /*inMonth*/,
1095  0 /*onDayOfWeek*/,
1096  16 /*onDayOfMonth*/,
1097  0 /*atTimeCode*/,
1098  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1099  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1100  0 /*letterIndex ("")*/,
1101  },
1102  // Rule Brazil 2006 only - Nov 5 0:00 1:00 -
1103  {
1104  -94 /*fromYearTiny (2006)*/,
1105  -94 /*toYearTiny (2006)*/,
1106  11 /*inMonth*/,
1107  0 /*onDayOfWeek*/,
1108  5 /*onDayOfMonth*/,
1109  0 /*atTimeCode*/,
1110  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1111  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1112  0 /*letterIndex ("")*/,
1113  },
1114  // Rule Brazil 2007 only - Feb 25 0:00 0 -
1115  {
1116  -93 /*fromYearTiny (2007)*/,
1117  -93 /*toYearTiny (2007)*/,
1118  2 /*inMonth*/,
1119  0 /*onDayOfWeek*/,
1120  25 /*onDayOfMonth*/,
1121  0 /*atTimeCode*/,
1122  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1123  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1124  0 /*letterIndex ("")*/,
1125  },
1126  // Rule Brazil 2007 only - Oct Sun>=8 0:00 1:00 -
1127  {
1128  -93 /*fromYearTiny (2007)*/,
1129  -93 /*toYearTiny (2007)*/,
1130  10 /*inMonth*/,
1131  7 /*onDayOfWeek*/,
1132  8 /*onDayOfMonth*/,
1133  0 /*atTimeCode*/,
1134  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1135  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1136  0 /*letterIndex ("")*/,
1137  },
1138  // Rule Brazil 2008 2017 - Oct Sun>=15 0:00 1:00 -
1139  {
1140  -92 /*fromYearTiny (2008)*/,
1141  -83 /*toYearTiny (2017)*/,
1142  10 /*inMonth*/,
1143  7 /*onDayOfWeek*/,
1144  15 /*onDayOfMonth*/,
1145  0 /*atTimeCode*/,
1146  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1147  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1148  0 /*letterIndex ("")*/,
1149  },
1150  // Rule Brazil 2008 2011 - Feb Sun>=15 0:00 0 -
1151  {
1152  -92 /*fromYearTiny (2008)*/,
1153  -89 /*toYearTiny (2011)*/,
1154  2 /*inMonth*/,
1155  7 /*onDayOfWeek*/,
1156  15 /*onDayOfMonth*/,
1157  0 /*atTimeCode*/,
1158  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1159  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1160  0 /*letterIndex ("")*/,
1161  },
1162  // Rule Brazil 2012 only - Feb Sun>=22 0:00 0 -
1163  {
1164  -88 /*fromYearTiny (2012)*/,
1165  -88 /*toYearTiny (2012)*/,
1166  2 /*inMonth*/,
1167  7 /*onDayOfWeek*/,
1168  22 /*onDayOfMonth*/,
1169  0 /*atTimeCode*/,
1170  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1171  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1172  0 /*letterIndex ("")*/,
1173  },
1174  // Rule Brazil 2013 2014 - Feb Sun>=15 0:00 0 -
1175  {
1176  -87 /*fromYearTiny (2013)*/,
1177  -86 /*toYearTiny (2014)*/,
1178  2 /*inMonth*/,
1179  7 /*onDayOfWeek*/,
1180  15 /*onDayOfMonth*/,
1181  0 /*atTimeCode*/,
1182  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1183  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1184  0 /*letterIndex ("")*/,
1185  },
1186  // Rule Brazil 2015 only - Feb Sun>=22 0:00 0 -
1187  {
1188  -85 /*fromYearTiny (2015)*/,
1189  -85 /*toYearTiny (2015)*/,
1190  2 /*inMonth*/,
1191  7 /*onDayOfWeek*/,
1192  22 /*onDayOfMonth*/,
1193  0 /*atTimeCode*/,
1194  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1195  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1196  0 /*letterIndex ("")*/,
1197  },
1198  // Rule Brazil 2016 2019 - Feb Sun>=15 0:00 0 -
1199  {
1200  -84 /*fromYearTiny (2016)*/,
1201  -81 /*toYearTiny (2019)*/,
1202  2 /*inMonth*/,
1203  7 /*onDayOfWeek*/,
1204  15 /*onDayOfMonth*/,
1205  0 /*atTimeCode*/,
1206  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1207  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1208  0 /*letterIndex ("")*/,
1209  },
1210  // Rule Brazil 2018 only - Nov Sun>=1 0:00 1:00 -
1211  {
1212  -82 /*fromYearTiny (2018)*/,
1213  -82 /*toYearTiny (2018)*/,
1214  11 /*inMonth*/,
1215  7 /*onDayOfWeek*/,
1216  1 /*onDayOfMonth*/,
1217  0 /*atTimeCode*/,
1218  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1219  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1220  0 /*letterIndex ("")*/,
1221  },
1222 
1223 };
1224 
1225 const extended::ZonePolicy kZonePolicyBrazil ACE_TIME_PROGMEM = {
1226  kZoneRulesBrazil /*rules*/,
1227  21 /*numRules*/,
1228 };
1229 
1230 //---------------------------------------------------------------------------
1231 // Policy name: C-Eur
1232 // Rules: 4
1233 //---------------------------------------------------------------------------
1234 
1235 static const extended::ZoneRule kZoneRulesC_Eur[] ACE_TIME_PROGMEM = {
1236  // Anchor: Rule C-Eur 1979 1995 - Sep lastSun 2:00s 0 -
1237  {
1238  -127 /*fromYearTiny (-32767)*/,
1239  -127 /*toYearTiny (-32767)*/,
1240  1 /*inMonth*/,
1241  0 /*onDayOfWeek*/,
1242  1 /*onDayOfMonth*/,
1243  0 /*atTimeCode*/,
1244  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1245  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1246  0 /*letterIndex ("")*/,
1247  },
1248  // Rule C-Eur 1979 1995 - Sep lastSun 2:00s 0 -
1249  {
1250  -121 /*fromYearTiny (1979)*/,
1251  -105 /*toYearTiny (1995)*/,
1252  9 /*inMonth*/,
1253  7 /*onDayOfWeek*/,
1254  0 /*onDayOfMonth*/,
1255  8 /*atTimeCode*/,
1256  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1257  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1258  0 /*letterIndex ("")*/,
1259  },
1260  // Rule C-Eur 1981 max - Mar lastSun 2:00s 1:00 S
1261  {
1262  -119 /*fromYearTiny (1981)*/,
1263  126 /*toYearTiny (32766)*/,
1264  3 /*inMonth*/,
1265  7 /*onDayOfWeek*/,
1266  0 /*onDayOfMonth*/,
1267  8 /*atTimeCode*/,
1268  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1269  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1270  7 /*letterIndex ("S")*/,
1271  },
1272  // Rule C-Eur 1996 max - Oct lastSun 2:00s 0 -
1273  {
1274  -104 /*fromYearTiny (1996)*/,
1275  126 /*toYearTiny (32766)*/,
1276  10 /*inMonth*/,
1277  7 /*onDayOfWeek*/,
1278  0 /*onDayOfMonth*/,
1279  8 /*atTimeCode*/,
1280  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1281  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1282  0 /*letterIndex ("")*/,
1283  },
1284 
1285 };
1286 
1287 const extended::ZonePolicy kZonePolicyC_Eur ACE_TIME_PROGMEM = {
1288  kZoneRulesC_Eur /*rules*/,
1289  4 /*numRules*/,
1290 };
1291 
1292 //---------------------------------------------------------------------------
1293 // Policy name: CO
1294 // Rules: 1
1295 //---------------------------------------------------------------------------
1296 
1297 static const extended::ZoneRule kZoneRulesCO[] ACE_TIME_PROGMEM = {
1298  // Anchor: Rule CO 1993 only - Feb 6 24:00 0 -
1299  {
1300  -127 /*fromYearTiny (-32767)*/,
1301  -127 /*toYearTiny (-32767)*/,
1302  1 /*inMonth*/,
1303  0 /*onDayOfWeek*/,
1304  1 /*onDayOfMonth*/,
1305  0 /*atTimeCode*/,
1306  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1307  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1308  0 /*letterIndex ("")*/,
1309  },
1310 
1311 };
1312 
1313 const extended::ZonePolicy kZonePolicyCO ACE_TIME_PROGMEM = {
1314  kZoneRulesCO /*rules*/,
1315  1 /*numRules*/,
1316 };
1317 
1318 //---------------------------------------------------------------------------
1319 // Policy name: CR
1320 // Rules: 1
1321 //---------------------------------------------------------------------------
1322 
1323 static const extended::ZoneRule kZoneRulesCR[] ACE_TIME_PROGMEM = {
1324  // Anchor: Rule CR 1992 only - Mar 15 0:00 0 S
1325  {
1326  -127 /*fromYearTiny (-32767)*/,
1327  -127 /*toYearTiny (-32767)*/,
1328  1 /*inMonth*/,
1329  0 /*onDayOfWeek*/,
1330  1 /*onDayOfMonth*/,
1331  0 /*atTimeCode*/,
1332  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1333  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1334  7 /*letterIndex ("S")*/,
1335  },
1336 
1337 };
1338 
1339 const extended::ZonePolicy kZonePolicyCR ACE_TIME_PROGMEM = {
1340  kZoneRulesCR /*rules*/,
1341  1 /*numRules*/,
1342 };
1343 
1344 //---------------------------------------------------------------------------
1345 // Policy name: Canada
1346 // Rules: 6
1347 //---------------------------------------------------------------------------
1348 
1349 static const extended::ZoneRule kZoneRulesCanada[] ACE_TIME_PROGMEM = {
1350  // Anchor: Rule Canada 1974 2006 - Oct lastSun 2:00 0 S
1351  {
1352  -127 /*fromYearTiny (-32767)*/,
1353  -127 /*toYearTiny (-32767)*/,
1354  1 /*inMonth*/,
1355  0 /*onDayOfWeek*/,
1356  1 /*onDayOfMonth*/,
1357  0 /*atTimeCode*/,
1358  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1359  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1360  7 /*letterIndex ("S")*/,
1361  },
1362  // Rule Canada 1974 1986 - Apr lastSun 2:00 1:00 D
1363  {
1364  -126 /*fromYearTiny (1974)*/,
1365  -114 /*toYearTiny (1986)*/,
1366  4 /*inMonth*/,
1367  7 /*onDayOfWeek*/,
1368  0 /*onDayOfMonth*/,
1369  8 /*atTimeCode*/,
1370  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1371  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1372  5 /*letterIndex ("D")*/,
1373  },
1374  // Rule Canada 1974 2006 - Oct lastSun 2:00 0 S
1375  {
1376  -126 /*fromYearTiny (1974)*/,
1377  -94 /*toYearTiny (2006)*/,
1378  10 /*inMonth*/,
1379  7 /*onDayOfWeek*/,
1380  0 /*onDayOfMonth*/,
1381  8 /*atTimeCode*/,
1382  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1383  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1384  7 /*letterIndex ("S")*/,
1385  },
1386  // Rule Canada 1987 2006 - Apr Sun>=1 2:00 1:00 D
1387  {
1388  -113 /*fromYearTiny (1987)*/,
1389  -94 /*toYearTiny (2006)*/,
1390  4 /*inMonth*/,
1391  7 /*onDayOfWeek*/,
1392  1 /*onDayOfMonth*/,
1393  8 /*atTimeCode*/,
1394  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1395  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1396  5 /*letterIndex ("D")*/,
1397  },
1398  // Rule Canada 2007 max - Mar Sun>=8 2:00 1:00 D
1399  {
1400  -93 /*fromYearTiny (2007)*/,
1401  126 /*toYearTiny (32766)*/,
1402  3 /*inMonth*/,
1403  7 /*onDayOfWeek*/,
1404  8 /*onDayOfMonth*/,
1405  8 /*atTimeCode*/,
1406  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1407  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1408  5 /*letterIndex ("D")*/,
1409  },
1410  // Rule Canada 2007 max - Nov Sun>=1 2:00 0 S
1411  {
1412  -93 /*fromYearTiny (2007)*/,
1413  126 /*toYearTiny (32766)*/,
1414  11 /*inMonth*/,
1415  7 /*onDayOfWeek*/,
1416  1 /*onDayOfMonth*/,
1417  8 /*atTimeCode*/,
1418  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1419  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1420  7 /*letterIndex ("S")*/,
1421  },
1422 
1423 };
1424 
1425 const extended::ZonePolicy kZonePolicyCanada ACE_TIME_PROGMEM = {
1426  kZoneRulesCanada /*rules*/,
1427  6 /*numRules*/,
1428 };
1429 
1430 //---------------------------------------------------------------------------
1431 // Policy name: Chatham
1432 // Rules: 6
1433 //---------------------------------------------------------------------------
1434 
1435 static const extended::ZoneRule kZoneRulesChatham[] ACE_TIME_PROGMEM = {
1436  // Anchor: Rule Chatham 1990 2007 - Mar Sun>=15 2:45s 0 -
1437  {
1438  -127 /*fromYearTiny (-32767)*/,
1439  -127 /*toYearTiny (-32767)*/,
1440  1 /*inMonth*/,
1441  0 /*onDayOfWeek*/,
1442  1 /*onDayOfMonth*/,
1443  0 /*atTimeCode*/,
1444  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1445  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1446  0 /*letterIndex ("")*/,
1447  },
1448  // Rule Chatham 1989 only - Oct Sun>=8 2:45s 1:00 -
1449  {
1450  -111 /*fromYearTiny (1989)*/,
1451  -111 /*toYearTiny (1989)*/,
1452  10 /*inMonth*/,
1453  7 /*onDayOfWeek*/,
1454  8 /*onDayOfMonth*/,
1455  11 /*atTimeCode*/,
1456  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1457  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1458  0 /*letterIndex ("")*/,
1459  },
1460  // Rule Chatham 1990 2006 - Oct Sun>=1 2:45s 1:00 -
1461  {
1462  -110 /*fromYearTiny (1990)*/,
1463  -94 /*toYearTiny (2006)*/,
1464  10 /*inMonth*/,
1465  7 /*onDayOfWeek*/,
1466  1 /*onDayOfMonth*/,
1467  11 /*atTimeCode*/,
1468  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1469  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1470  0 /*letterIndex ("")*/,
1471  },
1472  // Rule Chatham 1990 2007 - Mar Sun>=15 2:45s 0 -
1473  {
1474  -110 /*fromYearTiny (1990)*/,
1475  -93 /*toYearTiny (2007)*/,
1476  3 /*inMonth*/,
1477  7 /*onDayOfWeek*/,
1478  15 /*onDayOfMonth*/,
1479  11 /*atTimeCode*/,
1480  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1481  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1482  0 /*letterIndex ("")*/,
1483  },
1484  // Rule Chatham 2007 max - Sep lastSun 2:45s 1:00 -
1485  {
1486  -93 /*fromYearTiny (2007)*/,
1487  126 /*toYearTiny (32766)*/,
1488  9 /*inMonth*/,
1489  7 /*onDayOfWeek*/,
1490  0 /*onDayOfMonth*/,
1491  11 /*atTimeCode*/,
1492  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1493  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1494  0 /*letterIndex ("")*/,
1495  },
1496  // Rule Chatham 2008 max - Apr Sun>=1 2:45s 0 -
1497  {
1498  -92 /*fromYearTiny (2008)*/,
1499  126 /*toYearTiny (32766)*/,
1500  4 /*inMonth*/,
1501  7 /*onDayOfWeek*/,
1502  1 /*onDayOfMonth*/,
1503  11 /*atTimeCode*/,
1504  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1505  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1506  0 /*letterIndex ("")*/,
1507  },
1508 
1509 };
1510 
1511 const extended::ZonePolicy kZonePolicyChatham ACE_TIME_PROGMEM = {
1512  kZoneRulesChatham /*rules*/,
1513  6 /*numRules*/,
1514 };
1515 
1516 //---------------------------------------------------------------------------
1517 // Policy name: Chile
1518 // Rules: 18
1519 //---------------------------------------------------------------------------
1520 
1521 static const extended::ZoneRule kZoneRulesChile[] ACE_TIME_PROGMEM = {
1522  // Anchor: Rule Chile 1999 only - Apr 4 3:00u 0 -
1523  {
1524  -127 /*fromYearTiny (-32767)*/,
1525  -127 /*toYearTiny (-32767)*/,
1526  1 /*inMonth*/,
1527  0 /*onDayOfWeek*/,
1528  1 /*onDayOfMonth*/,
1529  0 /*atTimeCode*/,
1530  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1531  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1532  0 /*letterIndex ("")*/,
1533  },
1534  // Rule Chile 1998 only - Sep 27 4:00u 1:00 -
1535  {
1536  -102 /*fromYearTiny (1998)*/,
1537  -102 /*toYearTiny (1998)*/,
1538  9 /*inMonth*/,
1539  0 /*onDayOfWeek*/,
1540  27 /*onDayOfMonth*/,
1541  16 /*atTimeCode*/,
1542  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1543  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1544  0 /*letterIndex ("")*/,
1545  },
1546  // Rule Chile 1999 only - Apr 4 3:00u 0 -
1547  {
1548  -101 /*fromYearTiny (1999)*/,
1549  -101 /*toYearTiny (1999)*/,
1550  4 /*inMonth*/,
1551  0 /*onDayOfWeek*/,
1552  4 /*onDayOfMonth*/,
1553  12 /*atTimeCode*/,
1554  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1555  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1556  0 /*letterIndex ("")*/,
1557  },
1558  // Rule Chile 1999 2010 - Oct Sun>=9 4:00u 1:00 -
1559  {
1560  -101 /*fromYearTiny (1999)*/,
1561  -90 /*toYearTiny (2010)*/,
1562  10 /*inMonth*/,
1563  7 /*onDayOfWeek*/,
1564  9 /*onDayOfMonth*/,
1565  16 /*atTimeCode*/,
1566  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1567  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1568  0 /*letterIndex ("")*/,
1569  },
1570  // Rule Chile 2000 2007 - Mar Sun>=9 3:00u 0 -
1571  {
1572  -100 /*fromYearTiny (2000)*/,
1573  -93 /*toYearTiny (2007)*/,
1574  3 /*inMonth*/,
1575  7 /*onDayOfWeek*/,
1576  9 /*onDayOfMonth*/,
1577  12 /*atTimeCode*/,
1578  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1579  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1580  0 /*letterIndex ("")*/,
1581  },
1582  // Rule Chile 2008 only - Mar 30 3:00u 0 -
1583  {
1584  -92 /*fromYearTiny (2008)*/,
1585  -92 /*toYearTiny (2008)*/,
1586  3 /*inMonth*/,
1587  0 /*onDayOfWeek*/,
1588  30 /*onDayOfMonth*/,
1589  12 /*atTimeCode*/,
1590  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1591  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1592  0 /*letterIndex ("")*/,
1593  },
1594  // Rule Chile 2009 only - Mar Sun>=9 3:00u 0 -
1595  {
1596  -91 /*fromYearTiny (2009)*/,
1597  -91 /*toYearTiny (2009)*/,
1598  3 /*inMonth*/,
1599  7 /*onDayOfWeek*/,
1600  9 /*onDayOfMonth*/,
1601  12 /*atTimeCode*/,
1602  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1603  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1604  0 /*letterIndex ("")*/,
1605  },
1606  // Rule Chile 2010 only - Apr Sun>=1 3:00u 0 -
1607  {
1608  -90 /*fromYearTiny (2010)*/,
1609  -90 /*toYearTiny (2010)*/,
1610  4 /*inMonth*/,
1611  7 /*onDayOfWeek*/,
1612  1 /*onDayOfMonth*/,
1613  12 /*atTimeCode*/,
1614  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1615  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1616  0 /*letterIndex ("")*/,
1617  },
1618  // Rule Chile 2011 only - May Sun>=2 3:00u 0 -
1619  {
1620  -89 /*fromYearTiny (2011)*/,
1621  -89 /*toYearTiny (2011)*/,
1622  5 /*inMonth*/,
1623  7 /*onDayOfWeek*/,
1624  2 /*onDayOfMonth*/,
1625  12 /*atTimeCode*/,
1626  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1627  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1628  0 /*letterIndex ("")*/,
1629  },
1630  // Rule Chile 2011 only - Aug Sun>=16 4:00u 1:00 -
1631  {
1632  -89 /*fromYearTiny (2011)*/,
1633  -89 /*toYearTiny (2011)*/,
1634  8 /*inMonth*/,
1635  7 /*onDayOfWeek*/,
1636  16 /*onDayOfMonth*/,
1637  16 /*atTimeCode*/,
1638  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1639  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1640  0 /*letterIndex ("")*/,
1641  },
1642  // Rule Chile 2012 2014 - Apr Sun>=23 3:00u 0 -
1643  {
1644  -88 /*fromYearTiny (2012)*/,
1645  -86 /*toYearTiny (2014)*/,
1646  4 /*inMonth*/,
1647  7 /*onDayOfWeek*/,
1648  23 /*onDayOfMonth*/,
1649  12 /*atTimeCode*/,
1650  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1651  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1652  0 /*letterIndex ("")*/,
1653  },
1654  // Rule Chile 2012 2014 - Sep Sun>=2 4:00u 1:00 -
1655  {
1656  -88 /*fromYearTiny (2012)*/,
1657  -86 /*toYearTiny (2014)*/,
1658  9 /*inMonth*/,
1659  7 /*onDayOfWeek*/,
1660  2 /*onDayOfMonth*/,
1661  16 /*atTimeCode*/,
1662  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1663  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1664  0 /*letterIndex ("")*/,
1665  },
1666  // Rule Chile 2016 2018 - May Sun>=9 3:00u 0 -
1667  {
1668  -84 /*fromYearTiny (2016)*/,
1669  -82 /*toYearTiny (2018)*/,
1670  5 /*inMonth*/,
1671  7 /*onDayOfWeek*/,
1672  9 /*onDayOfMonth*/,
1673  12 /*atTimeCode*/,
1674  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1675  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1676  0 /*letterIndex ("")*/,
1677  },
1678  // Rule Chile 2016 2018 - Aug Sun>=9 4:00u 1:00 -
1679  {
1680  -84 /*fromYearTiny (2016)*/,
1681  -82 /*toYearTiny (2018)*/,
1682  8 /*inMonth*/,
1683  7 /*onDayOfWeek*/,
1684  9 /*onDayOfMonth*/,
1685  16 /*atTimeCode*/,
1686  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1687  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1688  0 /*letterIndex ("")*/,
1689  },
1690  // Rule Chile 2019 max - Apr Sun>=2 3:00u 0 -
1691  {
1692  -81 /*fromYearTiny (2019)*/,
1693  126 /*toYearTiny (32766)*/,
1694  4 /*inMonth*/,
1695  7 /*onDayOfWeek*/,
1696  2 /*onDayOfMonth*/,
1697  12 /*atTimeCode*/,
1698  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1699  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1700  0 /*letterIndex ("")*/,
1701  },
1702  // Rule Chile 2019 2021 - Sep Sun>=2 4:00u 1:00 -
1703  {
1704  -81 /*fromYearTiny (2019)*/,
1705  -79 /*toYearTiny (2021)*/,
1706  9 /*inMonth*/,
1707  7 /*onDayOfWeek*/,
1708  2 /*onDayOfMonth*/,
1709  16 /*atTimeCode*/,
1710  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1711  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1712  0 /*letterIndex ("")*/,
1713  },
1714  // Rule Chile 2022 only - Sep Sun>=9 4:00u 1:00 -
1715  {
1716  -78 /*fromYearTiny (2022)*/,
1717  -78 /*toYearTiny (2022)*/,
1718  9 /*inMonth*/,
1719  7 /*onDayOfWeek*/,
1720  9 /*onDayOfMonth*/,
1721  16 /*atTimeCode*/,
1722  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1723  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1724  0 /*letterIndex ("")*/,
1725  },
1726  // Rule Chile 2023 max - Sep Sun>=2 4:00u 1:00 -
1727  {
1728  -77 /*fromYearTiny (2023)*/,
1729  126 /*toYearTiny (32766)*/,
1730  9 /*inMonth*/,
1731  7 /*onDayOfWeek*/,
1732  2 /*onDayOfMonth*/,
1733  16 /*atTimeCode*/,
1734  32 /*atTimeModifier (kSuffixU + minute=0)*/,
1735  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1736  0 /*letterIndex ("")*/,
1737  },
1738 
1739 };
1740 
1741 const extended::ZonePolicy kZonePolicyChile ACE_TIME_PROGMEM = {
1742  kZoneRulesChile /*rules*/,
1743  18 /*numRules*/,
1744 };
1745 
1746 //---------------------------------------------------------------------------
1747 // Policy name: Cook
1748 // Rules: 1
1749 //---------------------------------------------------------------------------
1750 
1751 static const extended::ZoneRule kZoneRulesCook[] ACE_TIME_PROGMEM = {
1752  // Anchor: Rule Cook 1979 1991 - Mar Sun>=1 0:00 0 -
1753  {
1754  -127 /*fromYearTiny (-32767)*/,
1755  -127 /*toYearTiny (-32767)*/,
1756  1 /*inMonth*/,
1757  0 /*onDayOfWeek*/,
1758  1 /*onDayOfMonth*/,
1759  0 /*atTimeCode*/,
1760  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1761  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1762  0 /*letterIndex ("")*/,
1763  },
1764 
1765 };
1766 
1767 const extended::ZonePolicy kZonePolicyCook ACE_TIME_PROGMEM = {
1768  kZoneRulesCook /*rules*/,
1769  1 /*numRules*/,
1770 };
1771 
1772 //---------------------------------------------------------------------------
1773 // Policy name: Cuba
1774 // Rules: 15
1775 //---------------------------------------------------------------------------
1776 
1777 static const extended::ZoneRule kZoneRulesCuba[] ACE_TIME_PROGMEM = {
1778  // Anchor: Rule Cuba 1997 only - Oct 12 0:00s 0 S
1779  {
1780  -127 /*fromYearTiny (-32767)*/,
1781  -127 /*toYearTiny (-32767)*/,
1782  1 /*inMonth*/,
1783  0 /*onDayOfWeek*/,
1784  1 /*onDayOfMonth*/,
1785  0 /*atTimeCode*/,
1786  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1787  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1788  7 /*letterIndex ("S")*/,
1789  },
1790  // Rule Cuba 1997 only - Oct 12 0:00s 0 S
1791  {
1792  -103 /*fromYearTiny (1997)*/,
1793  -103 /*toYearTiny (1997)*/,
1794  10 /*inMonth*/,
1795  0 /*onDayOfWeek*/,
1796  12 /*onDayOfMonth*/,
1797  0 /*atTimeCode*/,
1798  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1799  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1800  7 /*letterIndex ("S")*/,
1801  },
1802  // Rule Cuba 1998 1999 - Mar lastSun 0:00s 1:00 D
1803  {
1804  -102 /*fromYearTiny (1998)*/,
1805  -101 /*toYearTiny (1999)*/,
1806  3 /*inMonth*/,
1807  7 /*onDayOfWeek*/,
1808  0 /*onDayOfMonth*/,
1809  0 /*atTimeCode*/,
1810  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1811  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1812  5 /*letterIndex ("D")*/,
1813  },
1814  // Rule Cuba 1998 2003 - Oct lastSun 0:00s 0 S
1815  {
1816  -102 /*fromYearTiny (1998)*/,
1817  -97 /*toYearTiny (2003)*/,
1818  10 /*inMonth*/,
1819  7 /*onDayOfWeek*/,
1820  0 /*onDayOfMonth*/,
1821  0 /*atTimeCode*/,
1822  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1823  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1824  7 /*letterIndex ("S")*/,
1825  },
1826  // Rule Cuba 2000 2003 - Apr Sun>=1 0:00s 1:00 D
1827  {
1828  -100 /*fromYearTiny (2000)*/,
1829  -97 /*toYearTiny (2003)*/,
1830  4 /*inMonth*/,
1831  7 /*onDayOfWeek*/,
1832  1 /*onDayOfMonth*/,
1833  0 /*atTimeCode*/,
1834  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1835  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1836  5 /*letterIndex ("D")*/,
1837  },
1838  // Rule Cuba 2004 only - Mar lastSun 0:00s 1:00 D
1839  {
1840  -96 /*fromYearTiny (2004)*/,
1841  -96 /*toYearTiny (2004)*/,
1842  3 /*inMonth*/,
1843  7 /*onDayOfWeek*/,
1844  0 /*onDayOfMonth*/,
1845  0 /*atTimeCode*/,
1846  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1847  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1848  5 /*letterIndex ("D")*/,
1849  },
1850  // Rule Cuba 2006 2010 - Oct lastSun 0:00s 0 S
1851  {
1852  -94 /*fromYearTiny (2006)*/,
1853  -90 /*toYearTiny (2010)*/,
1854  10 /*inMonth*/,
1855  7 /*onDayOfWeek*/,
1856  0 /*onDayOfMonth*/,
1857  0 /*atTimeCode*/,
1858  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1859  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1860  7 /*letterIndex ("S")*/,
1861  },
1862  // Rule Cuba 2007 only - Mar Sun>=8 0:00s 1:00 D
1863  {
1864  -93 /*fromYearTiny (2007)*/,
1865  -93 /*toYearTiny (2007)*/,
1866  3 /*inMonth*/,
1867  7 /*onDayOfWeek*/,
1868  8 /*onDayOfMonth*/,
1869  0 /*atTimeCode*/,
1870  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1871  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1872  5 /*letterIndex ("D")*/,
1873  },
1874  // Rule Cuba 2008 only - Mar Sun>=15 0:00s 1:00 D
1875  {
1876  -92 /*fromYearTiny (2008)*/,
1877  -92 /*toYearTiny (2008)*/,
1878  3 /*inMonth*/,
1879  7 /*onDayOfWeek*/,
1880  15 /*onDayOfMonth*/,
1881  0 /*atTimeCode*/,
1882  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1883  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1884  5 /*letterIndex ("D")*/,
1885  },
1886  // Rule Cuba 2009 2010 - Mar Sun>=8 0:00s 1:00 D
1887  {
1888  -91 /*fromYearTiny (2009)*/,
1889  -90 /*toYearTiny (2010)*/,
1890  3 /*inMonth*/,
1891  7 /*onDayOfWeek*/,
1892  8 /*onDayOfMonth*/,
1893  0 /*atTimeCode*/,
1894  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1895  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1896  5 /*letterIndex ("D")*/,
1897  },
1898  // Rule Cuba 2011 only - Mar Sun>=15 0:00s 1:00 D
1899  {
1900  -89 /*fromYearTiny (2011)*/,
1901  -89 /*toYearTiny (2011)*/,
1902  3 /*inMonth*/,
1903  7 /*onDayOfWeek*/,
1904  15 /*onDayOfMonth*/,
1905  0 /*atTimeCode*/,
1906  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1907  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1908  5 /*letterIndex ("D")*/,
1909  },
1910  // Rule Cuba 2011 only - Nov 13 0:00s 0 S
1911  {
1912  -89 /*fromYearTiny (2011)*/,
1913  -89 /*toYearTiny (2011)*/,
1914  11 /*inMonth*/,
1915  0 /*onDayOfWeek*/,
1916  13 /*onDayOfMonth*/,
1917  0 /*atTimeCode*/,
1918  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1919  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1920  7 /*letterIndex ("S")*/,
1921  },
1922  // Rule Cuba 2012 only - Apr 1 0:00s 1:00 D
1923  {
1924  -88 /*fromYearTiny (2012)*/,
1925  -88 /*toYearTiny (2012)*/,
1926  4 /*inMonth*/,
1927  0 /*onDayOfWeek*/,
1928  1 /*onDayOfMonth*/,
1929  0 /*atTimeCode*/,
1930  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1931  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1932  5 /*letterIndex ("D")*/,
1933  },
1934  // Rule Cuba 2012 max - Nov Sun>=1 0:00s 0 S
1935  {
1936  -88 /*fromYearTiny (2012)*/,
1937  126 /*toYearTiny (32766)*/,
1938  11 /*inMonth*/,
1939  7 /*onDayOfWeek*/,
1940  1 /*onDayOfMonth*/,
1941  0 /*atTimeCode*/,
1942  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1943  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1944  7 /*letterIndex ("S")*/,
1945  },
1946  // Rule Cuba 2013 max - Mar Sun>=8 0:00s 1:00 D
1947  {
1948  -87 /*fromYearTiny (2013)*/,
1949  126 /*toYearTiny (32766)*/,
1950  3 /*inMonth*/,
1951  7 /*onDayOfWeek*/,
1952  8 /*onDayOfMonth*/,
1953  0 /*atTimeCode*/,
1954  16 /*atTimeModifier (kSuffixS + minute=0)*/,
1955  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1956  5 /*letterIndex ("D")*/,
1957  },
1958 
1959 };
1960 
1961 const extended::ZonePolicy kZonePolicyCuba ACE_TIME_PROGMEM = {
1962  kZoneRulesCuba /*rules*/,
1963  15 /*numRules*/,
1964 };
1965 
1966 //---------------------------------------------------------------------------
1967 // Policy name: Dhaka
1968 // Rules: 3
1969 //---------------------------------------------------------------------------
1970 
1971 static const extended::ZoneRule kZoneRulesDhaka[] ACE_TIME_PROGMEM = {
1972  // Anchor: Rule Dhaka 2009 only - Dec 31 24:00 0 -
1973  {
1974  -127 /*fromYearTiny (-32767)*/,
1975  -127 /*toYearTiny (-32767)*/,
1976  1 /*inMonth*/,
1977  0 /*onDayOfWeek*/,
1978  1 /*onDayOfMonth*/,
1979  0 /*atTimeCode*/,
1980  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1981  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
1982  0 /*letterIndex ("")*/,
1983  },
1984  // Rule Dhaka 2009 only - Jun 19 23:00 1:00 -
1985  {
1986  -91 /*fromYearTiny (2009)*/,
1987  -91 /*toYearTiny (2009)*/,
1988  6 /*inMonth*/,
1989  0 /*onDayOfWeek*/,
1990  19 /*onDayOfMonth*/,
1991  92 /*atTimeCode*/,
1992  0 /*atTimeModifier (kSuffixW + minute=0)*/,
1993  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
1994  0 /*letterIndex ("")*/,
1995  },
1996  // Rule Dhaka 2009 only - Dec 31 24:00 0 -
1997  {
1998  -91 /*fromYearTiny (2009)*/,
1999  -91 /*toYearTiny (2009)*/,
2000  12 /*inMonth*/,
2001  0 /*onDayOfWeek*/,
2002  31 /*onDayOfMonth*/,
2003  96 /*atTimeCode*/,
2004  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2005  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2006  0 /*letterIndex ("")*/,
2007  },
2008 
2009 };
2010 
2011 const extended::ZonePolicy kZonePolicyDhaka ACE_TIME_PROGMEM = {
2012  kZoneRulesDhaka /*rules*/,
2013  3 /*numRules*/,
2014 };
2015 
2016 //---------------------------------------------------------------------------
2017 // Policy name: E-EurAsia
2018 // Rules: 4
2019 //---------------------------------------------------------------------------
2020 
2021 static const extended::ZoneRule kZoneRulesE_EurAsia[] ACE_TIME_PROGMEM = {
2022  // Anchor: Rule E-EurAsia 1979 1995 - Sep lastSun 0:00 0 -
2023  {
2024  -127 /*fromYearTiny (-32767)*/,
2025  -127 /*toYearTiny (-32767)*/,
2026  1 /*inMonth*/,
2027  0 /*onDayOfWeek*/,
2028  1 /*onDayOfMonth*/,
2029  0 /*atTimeCode*/,
2030  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2031  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2032  0 /*letterIndex ("")*/,
2033  },
2034  // Rule E-EurAsia 1981 max - Mar lastSun 0:00 1:00 -
2035  {
2036  -119 /*fromYearTiny (1981)*/,
2037  126 /*toYearTiny (32766)*/,
2038  3 /*inMonth*/,
2039  7 /*onDayOfWeek*/,
2040  0 /*onDayOfMonth*/,
2041  0 /*atTimeCode*/,
2042  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2043  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2044  0 /*letterIndex ("")*/,
2045  },
2046  // Rule E-EurAsia 1979 1995 - Sep lastSun 0:00 0 -
2047  {
2048  -121 /*fromYearTiny (1979)*/,
2049  -105 /*toYearTiny (1995)*/,
2050  9 /*inMonth*/,
2051  7 /*onDayOfWeek*/,
2052  0 /*onDayOfMonth*/,
2053  0 /*atTimeCode*/,
2054  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2055  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2056  0 /*letterIndex ("")*/,
2057  },
2058  // Rule E-EurAsia 1996 max - Oct lastSun 0:00 0 -
2059  {
2060  -104 /*fromYearTiny (1996)*/,
2061  126 /*toYearTiny (32766)*/,
2062  10 /*inMonth*/,
2063  7 /*onDayOfWeek*/,
2064  0 /*onDayOfMonth*/,
2065  0 /*atTimeCode*/,
2066  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2067  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2068  0 /*letterIndex ("")*/,
2069  },
2070 
2071 };
2072 
2073 const extended::ZonePolicy kZonePolicyE_EurAsia ACE_TIME_PROGMEM = {
2074  kZoneRulesE_EurAsia /*rules*/,
2075  4 /*numRules*/,
2076 };
2077 
2078 //---------------------------------------------------------------------------
2079 // Policy name: EU
2080 // Rules: 4
2081 //---------------------------------------------------------------------------
2082 
2083 static const extended::ZoneRule kZoneRulesEU[] ACE_TIME_PROGMEM = {
2084  // Anchor: Rule EU 1979 1995 - Sep lastSun 1:00u 0 -
2085  {
2086  -127 /*fromYearTiny (-32767)*/,
2087  -127 /*toYearTiny (-32767)*/,
2088  1 /*inMonth*/,
2089  0 /*onDayOfWeek*/,
2090  1 /*onDayOfMonth*/,
2091  0 /*atTimeCode*/,
2092  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2093  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2094  0 /*letterIndex ("")*/,
2095  },
2096  // Rule EU 1979 1995 - Sep lastSun 1:00u 0 -
2097  {
2098  -121 /*fromYearTiny (1979)*/,
2099  -105 /*toYearTiny (1995)*/,
2100  9 /*inMonth*/,
2101  7 /*onDayOfWeek*/,
2102  0 /*onDayOfMonth*/,
2103  4 /*atTimeCode*/,
2104  32 /*atTimeModifier (kSuffixU + minute=0)*/,
2105  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2106  0 /*letterIndex ("")*/,
2107  },
2108  // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
2109  {
2110  -119 /*fromYearTiny (1981)*/,
2111  126 /*toYearTiny (32766)*/,
2112  3 /*inMonth*/,
2113  7 /*onDayOfWeek*/,
2114  0 /*onDayOfMonth*/,
2115  4 /*atTimeCode*/,
2116  32 /*atTimeModifier (kSuffixU + minute=0)*/,
2117  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2118  7 /*letterIndex ("S")*/,
2119  },
2120  // Rule EU 1996 max - Oct lastSun 1:00u 0 -
2121  {
2122  -104 /*fromYearTiny (1996)*/,
2123  126 /*toYearTiny (32766)*/,
2124  10 /*inMonth*/,
2125  7 /*onDayOfWeek*/,
2126  0 /*onDayOfMonth*/,
2127  4 /*atTimeCode*/,
2128  32 /*atTimeModifier (kSuffixU + minute=0)*/,
2129  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2130  0 /*letterIndex ("")*/,
2131  },
2132 
2133 };
2134 
2135 const extended::ZonePolicy kZonePolicyEU ACE_TIME_PROGMEM = {
2136  kZoneRulesEU /*rules*/,
2137  4 /*numRules*/,
2138 };
2139 
2140 //---------------------------------------------------------------------------
2141 // Policy name: EUAsia
2142 // Rules: 4
2143 //---------------------------------------------------------------------------
2144 
2145 static const extended::ZoneRule kZoneRulesEUAsia[] ACE_TIME_PROGMEM = {
2146  // Anchor: Rule EUAsia 1979 1995 - Sep lastSun 1:00u 0 -
2147  {
2148  -127 /*fromYearTiny (-32767)*/,
2149  -127 /*toYearTiny (-32767)*/,
2150  1 /*inMonth*/,
2151  0 /*onDayOfWeek*/,
2152  1 /*onDayOfMonth*/,
2153  0 /*atTimeCode*/,
2154  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2155  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2156  0 /*letterIndex ("")*/,
2157  },
2158  // Rule EUAsia 1981 max - Mar lastSun 1:00u 1:00 S
2159  {
2160  -119 /*fromYearTiny (1981)*/,
2161  126 /*toYearTiny (32766)*/,
2162  3 /*inMonth*/,
2163  7 /*onDayOfWeek*/,
2164  0 /*onDayOfMonth*/,
2165  4 /*atTimeCode*/,
2166  32 /*atTimeModifier (kSuffixU + minute=0)*/,
2167  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2168  7 /*letterIndex ("S")*/,
2169  },
2170  // Rule EUAsia 1979 1995 - Sep lastSun 1:00u 0 -
2171  {
2172  -121 /*fromYearTiny (1979)*/,
2173  -105 /*toYearTiny (1995)*/,
2174  9 /*inMonth*/,
2175  7 /*onDayOfWeek*/,
2176  0 /*onDayOfMonth*/,
2177  4 /*atTimeCode*/,
2178  32 /*atTimeModifier (kSuffixU + minute=0)*/,
2179  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2180  0 /*letterIndex ("")*/,
2181  },
2182  // Rule EUAsia 1996 max - Oct lastSun 1:00u 0 -
2183  {
2184  -104 /*fromYearTiny (1996)*/,
2185  126 /*toYearTiny (32766)*/,
2186  10 /*inMonth*/,
2187  7 /*onDayOfWeek*/,
2188  0 /*onDayOfMonth*/,
2189  4 /*atTimeCode*/,
2190  32 /*atTimeModifier (kSuffixU + minute=0)*/,
2191  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2192  0 /*letterIndex ("")*/,
2193  },
2194 
2195 };
2196 
2197 const extended::ZonePolicy kZonePolicyEUAsia ACE_TIME_PROGMEM = {
2198  kZoneRulesEUAsia /*rules*/,
2199  4 /*numRules*/,
2200 };
2201 
2202 //---------------------------------------------------------------------------
2203 // Policy name: Ecuador
2204 // Rules: 1
2205 //---------------------------------------------------------------------------
2206 
2207 static const extended::ZoneRule kZoneRulesEcuador[] ACE_TIME_PROGMEM = {
2208  // Anchor: Rule Ecuador 1993 only - Feb 5 0:00 0 -
2209  {
2210  -127 /*fromYearTiny (-32767)*/,
2211  -127 /*toYearTiny (-32767)*/,
2212  1 /*inMonth*/,
2213  0 /*onDayOfWeek*/,
2214  1 /*onDayOfMonth*/,
2215  0 /*atTimeCode*/,
2216  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2217  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2218  0 /*letterIndex ("")*/,
2219  },
2220 
2221 };
2222 
2223 const extended::ZonePolicy kZonePolicyEcuador ACE_TIME_PROGMEM = {
2224  kZoneRulesEcuador /*rules*/,
2225  1 /*numRules*/,
2226 };
2227 
2228 //---------------------------------------------------------------------------
2229 // Policy name: Egypt
2230 // Rules: 17
2231 //---------------------------------------------------------------------------
2232 
2233 static const extended::ZoneRule kZoneRulesEgypt[] ACE_TIME_PROGMEM = {
2234  // Anchor: Rule Egypt 1966 1994 - Oct 1 3:00 0 -
2235  {
2236  -127 /*fromYearTiny (-32767)*/,
2237  -127 /*toYearTiny (-32767)*/,
2238  1 /*inMonth*/,
2239  0 /*onDayOfWeek*/,
2240  1 /*onDayOfMonth*/,
2241  0 /*atTimeCode*/,
2242  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2243  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2244  0 /*letterIndex ("")*/,
2245  },
2246  // Rule Egypt 1966 1994 - Oct 1 3:00 0 -
2247  {
2248  -127 /*fromYearTiny (1966)*/,
2249  -106 /*toYearTiny (1994)*/,
2250  10 /*inMonth*/,
2251  0 /*onDayOfWeek*/,
2252  1 /*onDayOfMonth*/,
2253  12 /*atTimeCode*/,
2254  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2255  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2256  0 /*letterIndex ("")*/,
2257  },
2258  // Rule Egypt 1995 2010 - Apr lastFri 0:00s 1:00 S
2259  {
2260  -105 /*fromYearTiny (1995)*/,
2261  -90 /*toYearTiny (2010)*/,
2262  4 /*inMonth*/,
2263  5 /*onDayOfWeek*/,
2264  0 /*onDayOfMonth*/,
2265  0 /*atTimeCode*/,
2266  16 /*atTimeModifier (kSuffixS + minute=0)*/,
2267  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2268  7 /*letterIndex ("S")*/,
2269  },
2270  // Rule Egypt 1995 2005 - Sep lastThu 24:00 0 -
2271  {
2272  -105 /*fromYearTiny (1995)*/,
2273  -95 /*toYearTiny (2005)*/,
2274  9 /*inMonth*/,
2275  4 /*onDayOfWeek*/,
2276  0 /*onDayOfMonth*/,
2277  96 /*atTimeCode*/,
2278  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2279  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2280  0 /*letterIndex ("")*/,
2281  },
2282  // Rule Egypt 2006 only - Sep 21 24:00 0 -
2283  {
2284  -94 /*fromYearTiny (2006)*/,
2285  -94 /*toYearTiny (2006)*/,
2286  9 /*inMonth*/,
2287  0 /*onDayOfWeek*/,
2288  21 /*onDayOfMonth*/,
2289  96 /*atTimeCode*/,
2290  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2291  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2292  0 /*letterIndex ("")*/,
2293  },
2294  // Rule Egypt 2007 only - Sep Thu>=1 24:00 0 -
2295  {
2296  -93 /*fromYearTiny (2007)*/,
2297  -93 /*toYearTiny (2007)*/,
2298  9 /*inMonth*/,
2299  4 /*onDayOfWeek*/,
2300  1 /*onDayOfMonth*/,
2301  96 /*atTimeCode*/,
2302  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2303  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2304  0 /*letterIndex ("")*/,
2305  },
2306  // Rule Egypt 2008 only - Aug lastThu 24:00 0 -
2307  {
2308  -92 /*fromYearTiny (2008)*/,
2309  -92 /*toYearTiny (2008)*/,
2310  8 /*inMonth*/,
2311  4 /*onDayOfWeek*/,
2312  0 /*onDayOfMonth*/,
2313  96 /*atTimeCode*/,
2314  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2315  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2316  0 /*letterIndex ("")*/,
2317  },
2318  // Rule Egypt 2009 only - Aug 20 24:00 0 -
2319  {
2320  -91 /*fromYearTiny (2009)*/,
2321  -91 /*toYearTiny (2009)*/,
2322  8 /*inMonth*/,
2323  0 /*onDayOfWeek*/,
2324  20 /*onDayOfMonth*/,
2325  96 /*atTimeCode*/,
2326  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2327  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2328  0 /*letterIndex ("")*/,
2329  },
2330  // Rule Egypt 2010 only - Aug 10 24:00 0 -
2331  {
2332  -90 /*fromYearTiny (2010)*/,
2333  -90 /*toYearTiny (2010)*/,
2334  8 /*inMonth*/,
2335  0 /*onDayOfWeek*/,
2336  10 /*onDayOfMonth*/,
2337  96 /*atTimeCode*/,
2338  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2339  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2340  0 /*letterIndex ("")*/,
2341  },
2342  // Rule Egypt 2010 only - Sep 9 24:00 1:00 S
2343  {
2344  -90 /*fromYearTiny (2010)*/,
2345  -90 /*toYearTiny (2010)*/,
2346  9 /*inMonth*/,
2347  0 /*onDayOfWeek*/,
2348  9 /*onDayOfMonth*/,
2349  96 /*atTimeCode*/,
2350  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2351  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2352  7 /*letterIndex ("S")*/,
2353  },
2354  // Rule Egypt 2010 only - Sep lastThu 24:00 0 -
2355  {
2356  -90 /*fromYearTiny (2010)*/,
2357  -90 /*toYearTiny (2010)*/,
2358  9 /*inMonth*/,
2359  4 /*onDayOfWeek*/,
2360  0 /*onDayOfMonth*/,
2361  96 /*atTimeCode*/,
2362  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2363  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2364  0 /*letterIndex ("")*/,
2365  },
2366  // Rule Egypt 2014 only - May 15 24:00 1:00 S
2367  {
2368  -86 /*fromYearTiny (2014)*/,
2369  -86 /*toYearTiny (2014)*/,
2370  5 /*inMonth*/,
2371  0 /*onDayOfWeek*/,
2372  15 /*onDayOfMonth*/,
2373  96 /*atTimeCode*/,
2374  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2375  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2376  7 /*letterIndex ("S")*/,
2377  },
2378  // Rule Egypt 2014 only - Jun 26 24:00 0 -
2379  {
2380  -86 /*fromYearTiny (2014)*/,
2381  -86 /*toYearTiny (2014)*/,
2382  6 /*inMonth*/,
2383  0 /*onDayOfWeek*/,
2384  26 /*onDayOfMonth*/,
2385  96 /*atTimeCode*/,
2386  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2387  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2388  0 /*letterIndex ("")*/,
2389  },
2390  // Rule Egypt 2014 only - Jul 31 24:00 1:00 S
2391  {
2392  -86 /*fromYearTiny (2014)*/,
2393  -86 /*toYearTiny (2014)*/,
2394  7 /*inMonth*/,
2395  0 /*onDayOfWeek*/,
2396  31 /*onDayOfMonth*/,
2397  96 /*atTimeCode*/,
2398  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2399  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2400  7 /*letterIndex ("S")*/,
2401  },
2402  // Rule Egypt 2014 only - Sep lastThu 24:00 0 -
2403  {
2404  -86 /*fromYearTiny (2014)*/,
2405  -86 /*toYearTiny (2014)*/,
2406  9 /*inMonth*/,
2407  4 /*onDayOfWeek*/,
2408  0 /*onDayOfMonth*/,
2409  96 /*atTimeCode*/,
2410  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2411  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2412  0 /*letterIndex ("")*/,
2413  },
2414  // Rule Egypt 2023 max - Apr lastFri 0:00 1:00 S
2415  {
2416  -77 /*fromYearTiny (2023)*/,
2417  126 /*toYearTiny (32766)*/,
2418  4 /*inMonth*/,
2419  5 /*onDayOfWeek*/,
2420  0 /*onDayOfMonth*/,
2421  0 /*atTimeCode*/,
2422  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2423  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2424  7 /*letterIndex ("S")*/,
2425  },
2426  // Rule Egypt 2023 max - Oct lastThu 24:00 0 -
2427  {
2428  -77 /*fromYearTiny (2023)*/,
2429  126 /*toYearTiny (32766)*/,
2430  10 /*inMonth*/,
2431  4 /*onDayOfWeek*/,
2432  0 /*onDayOfMonth*/,
2433  96 /*atTimeCode*/,
2434  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2435  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2436  0 /*letterIndex ("")*/,
2437  },
2438 
2439 };
2440 
2441 const extended::ZonePolicy kZonePolicyEgypt ACE_TIME_PROGMEM = {
2442  kZoneRulesEgypt /*rules*/,
2443  17 /*numRules*/,
2444 };
2445 
2446 //---------------------------------------------------------------------------
2447 // Policy name: Eire
2448 // Rules: 4
2449 //---------------------------------------------------------------------------
2450 
2451 static const extended::ZoneRule kZoneRulesEire[] ACE_TIME_PROGMEM = {
2452  // Anchor: Rule Eire 1981 max - Mar lastSun 1:00u 0 -
2453  {
2454  -127 /*fromYearTiny (-32767)*/,
2455  -127 /*toYearTiny (-32767)*/,
2456  1 /*inMonth*/,
2457  0 /*onDayOfWeek*/,
2458  1 /*onDayOfMonth*/,
2459  0 /*atTimeCode*/,
2460  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2461  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2462  0 /*letterIndex ("")*/,
2463  },
2464  // Rule Eire 1981 max - Mar lastSun 1:00u 0 -
2465  {
2466  -119 /*fromYearTiny (1981)*/,
2467  126 /*toYearTiny (32766)*/,
2468  3 /*inMonth*/,
2469  7 /*onDayOfWeek*/,
2470  0 /*onDayOfMonth*/,
2471  4 /*atTimeCode*/,
2472  32 /*atTimeModifier (kSuffixU + minute=0)*/,
2473  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2474  0 /*letterIndex ("")*/,
2475  },
2476  // Rule Eire 1990 1995 - Oct Sun>=22 1:00u -1:00 -
2477  {
2478  -110 /*fromYearTiny (1990)*/,
2479  -105 /*toYearTiny (1995)*/,
2480  10 /*inMonth*/,
2481  7 /*onDayOfWeek*/,
2482  22 /*onDayOfMonth*/,
2483  4 /*atTimeCode*/,
2484  32 /*atTimeModifier (kSuffixU + minute=0)*/,
2485  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
2486  0 /*letterIndex ("")*/,
2487  },
2488  // Rule Eire 1996 max - Oct lastSun 1:00u -1:00 -
2489  {
2490  -104 /*fromYearTiny (1996)*/,
2491  126 /*toYearTiny (32766)*/,
2492  10 /*inMonth*/,
2493  7 /*onDayOfWeek*/,
2494  0 /*onDayOfMonth*/,
2495  4 /*atTimeCode*/,
2496  32 /*atTimeModifier (kSuffixU + minute=0)*/,
2497  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
2498  0 /*letterIndex ("")*/,
2499  },
2500 
2501 };
2502 
2503 const extended::ZonePolicy kZonePolicyEire ACE_TIME_PROGMEM = {
2504  kZoneRulesEire /*rules*/,
2505  4 /*numRules*/,
2506 };
2507 
2508 //---------------------------------------------------------------------------
2509 // Policy name: Falk
2510 // Rules: 6
2511 //---------------------------------------------------------------------------
2512 
2513 static const extended::ZoneRule kZoneRulesFalk[] ACE_TIME_PROGMEM = {
2514  // Anchor: Rule Falk 1984 1985 - Apr lastSun 0:00 0 -
2515  {
2516  -127 /*fromYearTiny (-32767)*/,
2517  -127 /*toYearTiny (-32767)*/,
2518  1 /*inMonth*/,
2519  0 /*onDayOfWeek*/,
2520  1 /*onDayOfMonth*/,
2521  0 /*atTimeCode*/,
2522  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2523  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2524  0 /*letterIndex ("")*/,
2525  },
2526  // Rule Falk 1984 1985 - Apr lastSun 0:00 0 -
2527  {
2528  -116 /*fromYearTiny (1984)*/,
2529  -115 /*toYearTiny (1985)*/,
2530  4 /*inMonth*/,
2531  7 /*onDayOfWeek*/,
2532  0 /*onDayOfMonth*/,
2533  0 /*atTimeCode*/,
2534  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2535  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2536  0 /*letterIndex ("")*/,
2537  },
2538  // Rule Falk 1985 2000 - Sep Sun>=9 0:00 1:00 -
2539  {
2540  -115 /*fromYearTiny (1985)*/,
2541  -100 /*toYearTiny (2000)*/,
2542  9 /*inMonth*/,
2543  7 /*onDayOfWeek*/,
2544  9 /*onDayOfMonth*/,
2545  0 /*atTimeCode*/,
2546  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2547  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2548  0 /*letterIndex ("")*/,
2549  },
2550  // Rule Falk 1986 2000 - Apr Sun>=16 0:00 0 -
2551  {
2552  -114 /*fromYearTiny (1986)*/,
2553  -100 /*toYearTiny (2000)*/,
2554  4 /*inMonth*/,
2555  7 /*onDayOfWeek*/,
2556  16 /*onDayOfMonth*/,
2557  0 /*atTimeCode*/,
2558  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2559  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2560  0 /*letterIndex ("")*/,
2561  },
2562  // Rule Falk 2001 2010 - Apr Sun>=15 2:00 0 -
2563  {
2564  -99 /*fromYearTiny (2001)*/,
2565  -90 /*toYearTiny (2010)*/,
2566  4 /*inMonth*/,
2567  7 /*onDayOfWeek*/,
2568  15 /*onDayOfMonth*/,
2569  8 /*atTimeCode*/,
2570  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2571  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2572  0 /*letterIndex ("")*/,
2573  },
2574  // Rule Falk 2001 2010 - Sep Sun>=1 2:00 1:00 -
2575  {
2576  -99 /*fromYearTiny (2001)*/,
2577  -90 /*toYearTiny (2010)*/,
2578  9 /*inMonth*/,
2579  7 /*onDayOfWeek*/,
2580  1 /*onDayOfMonth*/,
2581  8 /*atTimeCode*/,
2582  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2583  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2584  0 /*letterIndex ("")*/,
2585  },
2586 
2587 };
2588 
2589 const extended::ZonePolicy kZonePolicyFalk ACE_TIME_PROGMEM = {
2590  kZoneRulesFalk /*rules*/,
2591  6 /*numRules*/,
2592 };
2593 
2594 //---------------------------------------------------------------------------
2595 // Policy name: Fiji
2596 // Rules: 13
2597 //---------------------------------------------------------------------------
2598 
2599 static const extended::ZoneRule kZoneRulesFiji[] ACE_TIME_PROGMEM = {
2600  // Anchor: Rule Fiji 1999 2000 - Feb lastSun 3:00 0 -
2601  {
2602  -127 /*fromYearTiny (-32767)*/,
2603  -127 /*toYearTiny (-32767)*/,
2604  1 /*inMonth*/,
2605  0 /*onDayOfWeek*/,
2606  1 /*onDayOfMonth*/,
2607  0 /*atTimeCode*/,
2608  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2609  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2610  0 /*letterIndex ("")*/,
2611  },
2612  // Rule Fiji 1998 1999 - Nov Sun>=1 2:00 1:00 -
2613  {
2614  -102 /*fromYearTiny (1998)*/,
2615  -101 /*toYearTiny (1999)*/,
2616  11 /*inMonth*/,
2617  7 /*onDayOfWeek*/,
2618  1 /*onDayOfMonth*/,
2619  8 /*atTimeCode*/,
2620  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2621  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2622  0 /*letterIndex ("")*/,
2623  },
2624  // Rule Fiji 1999 2000 - Feb lastSun 3:00 0 -
2625  {
2626  -101 /*fromYearTiny (1999)*/,
2627  -100 /*toYearTiny (2000)*/,
2628  2 /*inMonth*/,
2629  7 /*onDayOfWeek*/,
2630  0 /*onDayOfMonth*/,
2631  12 /*atTimeCode*/,
2632  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2633  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2634  0 /*letterIndex ("")*/,
2635  },
2636  // Rule Fiji 2009 only - Nov 29 2:00 1:00 -
2637  {
2638  -91 /*fromYearTiny (2009)*/,
2639  -91 /*toYearTiny (2009)*/,
2640  11 /*inMonth*/,
2641  0 /*onDayOfWeek*/,
2642  29 /*onDayOfMonth*/,
2643  8 /*atTimeCode*/,
2644  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2645  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2646  0 /*letterIndex ("")*/,
2647  },
2648  // Rule Fiji 2010 only - Mar lastSun 3:00 0 -
2649  {
2650  -90 /*fromYearTiny (2010)*/,
2651  -90 /*toYearTiny (2010)*/,
2652  3 /*inMonth*/,
2653  7 /*onDayOfWeek*/,
2654  0 /*onDayOfMonth*/,
2655  12 /*atTimeCode*/,
2656  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2657  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2658  0 /*letterIndex ("")*/,
2659  },
2660  // Rule Fiji 2010 2013 - Oct Sun>=21 2:00 1:00 -
2661  {
2662  -90 /*fromYearTiny (2010)*/,
2663  -87 /*toYearTiny (2013)*/,
2664  10 /*inMonth*/,
2665  7 /*onDayOfWeek*/,
2666  21 /*onDayOfMonth*/,
2667  8 /*atTimeCode*/,
2668  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2669  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2670  0 /*letterIndex ("")*/,
2671  },
2672  // Rule Fiji 2011 only - Mar Sun>=1 3:00 0 -
2673  {
2674  -89 /*fromYearTiny (2011)*/,
2675  -89 /*toYearTiny (2011)*/,
2676  3 /*inMonth*/,
2677  7 /*onDayOfWeek*/,
2678  1 /*onDayOfMonth*/,
2679  12 /*atTimeCode*/,
2680  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2681  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2682  0 /*letterIndex ("")*/,
2683  },
2684  // Rule Fiji 2012 2013 - Jan Sun>=18 3:00 0 -
2685  {
2686  -88 /*fromYearTiny (2012)*/,
2687  -87 /*toYearTiny (2013)*/,
2688  1 /*inMonth*/,
2689  7 /*onDayOfWeek*/,
2690  18 /*onDayOfMonth*/,
2691  12 /*atTimeCode*/,
2692  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2693  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2694  0 /*letterIndex ("")*/,
2695  },
2696  // Rule Fiji 2014 only - Jan Sun>=18 2:00 0 -
2697  {
2698  -86 /*fromYearTiny (2014)*/,
2699  -86 /*toYearTiny (2014)*/,
2700  1 /*inMonth*/,
2701  7 /*onDayOfWeek*/,
2702  18 /*onDayOfMonth*/,
2703  8 /*atTimeCode*/,
2704  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2705  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2706  0 /*letterIndex ("")*/,
2707  },
2708  // Rule Fiji 2014 2018 - Nov Sun>=1 2:00 1:00 -
2709  {
2710  -86 /*fromYearTiny (2014)*/,
2711  -82 /*toYearTiny (2018)*/,
2712  11 /*inMonth*/,
2713  7 /*onDayOfWeek*/,
2714  1 /*onDayOfMonth*/,
2715  8 /*atTimeCode*/,
2716  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2717  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2718  0 /*letterIndex ("")*/,
2719  },
2720  // Rule Fiji 2015 2021 - Jan Sun>=12 3:00 0 -
2721  {
2722  -85 /*fromYearTiny (2015)*/,
2723  -79 /*toYearTiny (2021)*/,
2724  1 /*inMonth*/,
2725  7 /*onDayOfWeek*/,
2726  12 /*onDayOfMonth*/,
2727  12 /*atTimeCode*/,
2728  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2729  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2730  0 /*letterIndex ("")*/,
2731  },
2732  // Rule Fiji 2019 only - Nov Sun>=8 2:00 1:00 -
2733  {
2734  -81 /*fromYearTiny (2019)*/,
2735  -81 /*toYearTiny (2019)*/,
2736  11 /*inMonth*/,
2737  7 /*onDayOfWeek*/,
2738  8 /*onDayOfMonth*/,
2739  8 /*atTimeCode*/,
2740  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2741  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2742  0 /*letterIndex ("")*/,
2743  },
2744  // Rule Fiji 2020 only - Dec 20 2:00 1:00 -
2745  {
2746  -80 /*fromYearTiny (2020)*/,
2747  -80 /*toYearTiny (2020)*/,
2748  12 /*inMonth*/,
2749  0 /*onDayOfWeek*/,
2750  20 /*onDayOfMonth*/,
2751  8 /*atTimeCode*/,
2752  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2753  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2754  0 /*letterIndex ("")*/,
2755  },
2756 
2757 };
2758 
2759 const extended::ZonePolicy kZonePolicyFiji ACE_TIME_PROGMEM = {
2760  kZoneRulesFiji /*rules*/,
2761  13 /*numRules*/,
2762 };
2763 
2764 //---------------------------------------------------------------------------
2765 // Policy name: Guam
2766 // Rules: 1
2767 //---------------------------------------------------------------------------
2768 
2769 static const extended::ZoneRule kZoneRulesGuam[] ACE_TIME_PROGMEM = {
2770  // Anchor: Rule Guam 1977 only - Aug 28 2:00 0 S
2771  {
2772  -127 /*fromYearTiny (-32767)*/,
2773  -127 /*toYearTiny (-32767)*/,
2774  1 /*inMonth*/,
2775  0 /*onDayOfWeek*/,
2776  1 /*onDayOfMonth*/,
2777  0 /*atTimeCode*/,
2778  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2779  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2780  7 /*letterIndex ("S")*/,
2781  },
2782 
2783 };
2784 
2785 const extended::ZonePolicy kZonePolicyGuam ACE_TIME_PROGMEM = {
2786  kZoneRulesGuam /*rules*/,
2787  1 /*numRules*/,
2788 };
2789 
2790 //---------------------------------------------------------------------------
2791 // Policy name: Guat
2792 // Rules: 4
2793 //---------------------------------------------------------------------------
2794 
2795 static const extended::ZoneRule kZoneRulesGuat[] ACE_TIME_PROGMEM = {
2796  // Anchor: Rule Guat 1991 only - Sep 7 0:00 0 S
2797  {
2798  -127 /*fromYearTiny (-32767)*/,
2799  -127 /*toYearTiny (-32767)*/,
2800  1 /*inMonth*/,
2801  0 /*onDayOfWeek*/,
2802  1 /*onDayOfMonth*/,
2803  0 /*atTimeCode*/,
2804  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2805  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2806  7 /*letterIndex ("S")*/,
2807  },
2808  // Rule Guat 1991 only - Sep 7 0:00 0 S
2809  {
2810  -109 /*fromYearTiny (1991)*/,
2811  -109 /*toYearTiny (1991)*/,
2812  9 /*inMonth*/,
2813  0 /*onDayOfWeek*/,
2814  7 /*onDayOfMonth*/,
2815  0 /*atTimeCode*/,
2816  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2817  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2818  7 /*letterIndex ("S")*/,
2819  },
2820  // Rule Guat 2006 only - Apr 30 0:00 1:00 D
2821  {
2822  -94 /*fromYearTiny (2006)*/,
2823  -94 /*toYearTiny (2006)*/,
2824  4 /*inMonth*/,
2825  0 /*onDayOfWeek*/,
2826  30 /*onDayOfMonth*/,
2827  0 /*atTimeCode*/,
2828  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2829  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2830  5 /*letterIndex ("D")*/,
2831  },
2832  // Rule Guat 2006 only - Oct 1 0:00 0 S
2833  {
2834  -94 /*fromYearTiny (2006)*/,
2835  -94 /*toYearTiny (2006)*/,
2836  10 /*inMonth*/,
2837  0 /*onDayOfWeek*/,
2838  1 /*onDayOfMonth*/,
2839  0 /*atTimeCode*/,
2840  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2841  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2842  7 /*letterIndex ("S")*/,
2843  },
2844 
2845 };
2846 
2847 const extended::ZonePolicy kZonePolicyGuat ACE_TIME_PROGMEM = {
2848  kZoneRulesGuat /*rules*/,
2849  4 /*numRules*/,
2850 };
2851 
2852 //---------------------------------------------------------------------------
2853 // Policy name: HK
2854 // Rules: 1
2855 //---------------------------------------------------------------------------
2856 
2857 static const extended::ZoneRule kZoneRulesHK[] ACE_TIME_PROGMEM = {
2858  // Anchor: Rule HK 1979 only - Oct 21 3:30 0 -
2859  {
2860  -127 /*fromYearTiny (-32767)*/,
2861  -127 /*toYearTiny (-32767)*/,
2862  1 /*inMonth*/,
2863  0 /*onDayOfWeek*/,
2864  1 /*onDayOfMonth*/,
2865  0 /*atTimeCode*/,
2866  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2867  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2868  0 /*letterIndex ("")*/,
2869  },
2870 
2871 };
2872 
2873 const extended::ZonePolicy kZonePolicyHK ACE_TIME_PROGMEM = {
2874  kZoneRulesHK /*rules*/,
2875  1 /*numRules*/,
2876 };
2877 
2878 //---------------------------------------------------------------------------
2879 // Policy name: Haiti
2880 // Rules: 8
2881 //---------------------------------------------------------------------------
2882 
2883 static const extended::ZoneRule kZoneRulesHaiti[] ACE_TIME_PROGMEM = {
2884  // Anchor: Rule Haiti 1988 1997 - Oct lastSun 1:00s 0 S
2885  {
2886  -127 /*fromYearTiny (-32767)*/,
2887  -127 /*toYearTiny (-32767)*/,
2888  1 /*inMonth*/,
2889  0 /*onDayOfWeek*/,
2890  1 /*onDayOfMonth*/,
2891  0 /*atTimeCode*/,
2892  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2893  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2894  7 /*letterIndex ("S")*/,
2895  },
2896  // Rule Haiti 1988 1997 - Oct lastSun 1:00s 0 S
2897  {
2898  -112 /*fromYearTiny (1988)*/,
2899  -103 /*toYearTiny (1997)*/,
2900  10 /*inMonth*/,
2901  7 /*onDayOfWeek*/,
2902  0 /*onDayOfMonth*/,
2903  4 /*atTimeCode*/,
2904  16 /*atTimeModifier (kSuffixS + minute=0)*/,
2905  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2906  7 /*letterIndex ("S")*/,
2907  },
2908  // Rule Haiti 2005 2006 - Apr Sun>=1 0:00 1:00 D
2909  {
2910  -95 /*fromYearTiny (2005)*/,
2911  -94 /*toYearTiny (2006)*/,
2912  4 /*inMonth*/,
2913  7 /*onDayOfWeek*/,
2914  1 /*onDayOfMonth*/,
2915  0 /*atTimeCode*/,
2916  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2917  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2918  5 /*letterIndex ("D")*/,
2919  },
2920  // Rule Haiti 2005 2006 - Oct lastSun 0:00 0 S
2921  {
2922  -95 /*fromYearTiny (2005)*/,
2923  -94 /*toYearTiny (2006)*/,
2924  10 /*inMonth*/,
2925  7 /*onDayOfWeek*/,
2926  0 /*onDayOfMonth*/,
2927  0 /*atTimeCode*/,
2928  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2929  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2930  7 /*letterIndex ("S")*/,
2931  },
2932  // Rule Haiti 2012 2015 - Mar Sun>=8 2:00 1:00 D
2933  {
2934  -88 /*fromYearTiny (2012)*/,
2935  -85 /*toYearTiny (2015)*/,
2936  3 /*inMonth*/,
2937  7 /*onDayOfWeek*/,
2938  8 /*onDayOfMonth*/,
2939  8 /*atTimeCode*/,
2940  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2941  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2942  5 /*letterIndex ("D")*/,
2943  },
2944  // Rule Haiti 2012 2015 - Nov Sun>=1 2:00 0 S
2945  {
2946  -88 /*fromYearTiny (2012)*/,
2947  -85 /*toYearTiny (2015)*/,
2948  11 /*inMonth*/,
2949  7 /*onDayOfWeek*/,
2950  1 /*onDayOfMonth*/,
2951  8 /*atTimeCode*/,
2952  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2953  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2954  7 /*letterIndex ("S")*/,
2955  },
2956  // Rule Haiti 2017 max - Mar Sun>=8 2:00 1:00 D
2957  {
2958  -83 /*fromYearTiny (2017)*/,
2959  126 /*toYearTiny (32766)*/,
2960  3 /*inMonth*/,
2961  7 /*onDayOfWeek*/,
2962  8 /*onDayOfMonth*/,
2963  8 /*atTimeCode*/,
2964  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2965  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
2966  5 /*letterIndex ("D")*/,
2967  },
2968  // Rule Haiti 2017 max - Nov Sun>=1 2:00 0 S
2969  {
2970  -83 /*fromYearTiny (2017)*/,
2971  126 /*toYearTiny (32766)*/,
2972  11 /*inMonth*/,
2973  7 /*onDayOfWeek*/,
2974  1 /*onDayOfMonth*/,
2975  8 /*atTimeCode*/,
2976  0 /*atTimeModifier (kSuffixW + minute=0)*/,
2977  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
2978  7 /*letterIndex ("S")*/,
2979  },
2980 
2981 };
2982 
2983 const extended::ZonePolicy kZonePolicyHaiti ACE_TIME_PROGMEM = {
2984  kZoneRulesHaiti /*rules*/,
2985  8 /*numRules*/,
2986 };
2987 
2988 //---------------------------------------------------------------------------
2989 // Policy name: Holiday
2990 // Rules: 1
2991 //---------------------------------------------------------------------------
2992 
2993 static const extended::ZoneRule kZoneRulesHoliday[] ACE_TIME_PROGMEM = {
2994  // Anchor: Rule Holiday 1993 1994 - Mar Sun>=1 2:00s 0 S
2995  {
2996  -127 /*fromYearTiny (-32767)*/,
2997  -127 /*toYearTiny (-32767)*/,
2998  1 /*inMonth*/,
2999  0 /*onDayOfWeek*/,
3000  1 /*onDayOfMonth*/,
3001  0 /*atTimeCode*/,
3002  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3003  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3004  7 /*letterIndex ("S")*/,
3005  },
3006 
3007 };
3008 
3009 const extended::ZonePolicy kZonePolicyHoliday ACE_TIME_PROGMEM = {
3010  kZoneRulesHoliday /*rules*/,
3011  1 /*numRules*/,
3012 };
3013 
3014 //---------------------------------------------------------------------------
3015 // Policy name: Hond
3016 // Rules: 4
3017 //---------------------------------------------------------------------------
3018 
3019 static const extended::ZoneRule kZoneRulesHond[] ACE_TIME_PROGMEM = {
3020  // Anchor: Rule Hond 1987 1988 - Sep lastSun 0:00 0 S
3021  {
3022  -127 /*fromYearTiny (-32767)*/,
3023  -127 /*toYearTiny (-32767)*/,
3024  1 /*inMonth*/,
3025  0 /*onDayOfWeek*/,
3026  1 /*onDayOfMonth*/,
3027  0 /*atTimeCode*/,
3028  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3029  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3030  7 /*letterIndex ("S")*/,
3031  },
3032  // Rule Hond 1987 1988 - Sep lastSun 0:00 0 S
3033  {
3034  -113 /*fromYearTiny (1987)*/,
3035  -112 /*toYearTiny (1988)*/,
3036  9 /*inMonth*/,
3037  7 /*onDayOfWeek*/,
3038  0 /*onDayOfMonth*/,
3039  0 /*atTimeCode*/,
3040  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3041  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3042  7 /*letterIndex ("S")*/,
3043  },
3044  // Rule Hond 2006 only - May Sun>=1 0:00 1:00 D
3045  {
3046  -94 /*fromYearTiny (2006)*/,
3047  -94 /*toYearTiny (2006)*/,
3048  5 /*inMonth*/,
3049  7 /*onDayOfWeek*/,
3050  1 /*onDayOfMonth*/,
3051  0 /*atTimeCode*/,
3052  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3053  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3054  5 /*letterIndex ("D")*/,
3055  },
3056  // Rule Hond 2006 only - Aug Mon>=1 0:00 0 S
3057  {
3058  -94 /*fromYearTiny (2006)*/,
3059  -94 /*toYearTiny (2006)*/,
3060  8 /*inMonth*/,
3061  1 /*onDayOfWeek*/,
3062  1 /*onDayOfMonth*/,
3063  0 /*atTimeCode*/,
3064  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3065  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3066  7 /*letterIndex ("S")*/,
3067  },
3068 
3069 };
3070 
3071 const extended::ZonePolicy kZonePolicyHond ACE_TIME_PROGMEM = {
3072  kZoneRulesHond /*rules*/,
3073  4 /*numRules*/,
3074 };
3075 
3076 //---------------------------------------------------------------------------
3077 // Policy name: Iran
3078 // Rules: 28
3079 //---------------------------------------------------------------------------
3080 
3081 static const extended::ZoneRule kZoneRulesIran[] ACE_TIME_PROGMEM = {
3082  // Anchor: Rule Iran 1996 only - Sep 20 24:00 0 -
3083  {
3084  -127 /*fromYearTiny (-32767)*/,
3085  -127 /*toYearTiny (-32767)*/,
3086  1 /*inMonth*/,
3087  0 /*onDayOfWeek*/,
3088  1 /*onDayOfMonth*/,
3089  0 /*atTimeCode*/,
3090  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3091  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3092  0 /*letterIndex ("")*/,
3093  },
3094  // Rule Iran 1996 only - Sep 20 24:00 0 -
3095  {
3096  -104 /*fromYearTiny (1996)*/,
3097  -104 /*toYearTiny (1996)*/,
3098  9 /*inMonth*/,
3099  0 /*onDayOfWeek*/,
3100  20 /*onDayOfMonth*/,
3101  96 /*atTimeCode*/,
3102  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3103  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3104  0 /*letterIndex ("")*/,
3105  },
3106  // Rule Iran 1997 1999 - Mar 21 24:00 1:00 -
3107  {
3108  -103 /*fromYearTiny (1997)*/,
3109  -101 /*toYearTiny (1999)*/,
3110  3 /*inMonth*/,
3111  0 /*onDayOfWeek*/,
3112  21 /*onDayOfMonth*/,
3113  96 /*atTimeCode*/,
3114  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3115  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3116  0 /*letterIndex ("")*/,
3117  },
3118  // Rule Iran 1997 1999 - Sep 21 24:00 0 -
3119  {
3120  -103 /*fromYearTiny (1997)*/,
3121  -101 /*toYearTiny (1999)*/,
3122  9 /*inMonth*/,
3123  0 /*onDayOfWeek*/,
3124  21 /*onDayOfMonth*/,
3125  96 /*atTimeCode*/,
3126  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3127  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3128  0 /*letterIndex ("")*/,
3129  },
3130  // Rule Iran 2000 only - Mar 20 24:00 1:00 -
3131  {
3132  -100 /*fromYearTiny (2000)*/,
3133  -100 /*toYearTiny (2000)*/,
3134  3 /*inMonth*/,
3135  0 /*onDayOfWeek*/,
3136  20 /*onDayOfMonth*/,
3137  96 /*atTimeCode*/,
3138  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3139  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3140  0 /*letterIndex ("")*/,
3141  },
3142  // Rule Iran 2000 only - Sep 20 24:00 0 -
3143  {
3144  -100 /*fromYearTiny (2000)*/,
3145  -100 /*toYearTiny (2000)*/,
3146  9 /*inMonth*/,
3147  0 /*onDayOfWeek*/,
3148  20 /*onDayOfMonth*/,
3149  96 /*atTimeCode*/,
3150  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3151  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3152  0 /*letterIndex ("")*/,
3153  },
3154  // Rule Iran 2001 2003 - Mar 21 24:00 1:00 -
3155  {
3156  -99 /*fromYearTiny (2001)*/,
3157  -97 /*toYearTiny (2003)*/,
3158  3 /*inMonth*/,
3159  0 /*onDayOfWeek*/,
3160  21 /*onDayOfMonth*/,
3161  96 /*atTimeCode*/,
3162  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3163  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3164  0 /*letterIndex ("")*/,
3165  },
3166  // Rule Iran 2001 2003 - Sep 21 24:00 0 -
3167  {
3168  -99 /*fromYearTiny (2001)*/,
3169  -97 /*toYearTiny (2003)*/,
3170  9 /*inMonth*/,
3171  0 /*onDayOfWeek*/,
3172  21 /*onDayOfMonth*/,
3173  96 /*atTimeCode*/,
3174  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3175  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3176  0 /*letterIndex ("")*/,
3177  },
3178  // Rule Iran 2004 only - Mar 20 24:00 1:00 -
3179  {
3180  -96 /*fromYearTiny (2004)*/,
3181  -96 /*toYearTiny (2004)*/,
3182  3 /*inMonth*/,
3183  0 /*onDayOfWeek*/,
3184  20 /*onDayOfMonth*/,
3185  96 /*atTimeCode*/,
3186  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3187  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3188  0 /*letterIndex ("")*/,
3189  },
3190  // Rule Iran 2004 only - Sep 20 24:00 0 -
3191  {
3192  -96 /*fromYearTiny (2004)*/,
3193  -96 /*toYearTiny (2004)*/,
3194  9 /*inMonth*/,
3195  0 /*onDayOfWeek*/,
3196  20 /*onDayOfMonth*/,
3197  96 /*atTimeCode*/,
3198  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3199  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3200  0 /*letterIndex ("")*/,
3201  },
3202  // Rule Iran 2005 only - Mar 21 24:00 1:00 -
3203  {
3204  -95 /*fromYearTiny (2005)*/,
3205  -95 /*toYearTiny (2005)*/,
3206  3 /*inMonth*/,
3207  0 /*onDayOfWeek*/,
3208  21 /*onDayOfMonth*/,
3209  96 /*atTimeCode*/,
3210  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3211  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3212  0 /*letterIndex ("")*/,
3213  },
3214  // Rule Iran 2005 only - Sep 21 24:00 0 -
3215  {
3216  -95 /*fromYearTiny (2005)*/,
3217  -95 /*toYearTiny (2005)*/,
3218  9 /*inMonth*/,
3219  0 /*onDayOfWeek*/,
3220  21 /*onDayOfMonth*/,
3221  96 /*atTimeCode*/,
3222  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3223  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3224  0 /*letterIndex ("")*/,
3225  },
3226  // Rule Iran 2008 only - Mar 20 24:00 1:00 -
3227  {
3228  -92 /*fromYearTiny (2008)*/,
3229  -92 /*toYearTiny (2008)*/,
3230  3 /*inMonth*/,
3231  0 /*onDayOfWeek*/,
3232  20 /*onDayOfMonth*/,
3233  96 /*atTimeCode*/,
3234  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3235  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3236  0 /*letterIndex ("")*/,
3237  },
3238  // Rule Iran 2008 only - Sep 20 24:00 0 -
3239  {
3240  -92 /*fromYearTiny (2008)*/,
3241  -92 /*toYearTiny (2008)*/,
3242  9 /*inMonth*/,
3243  0 /*onDayOfWeek*/,
3244  20 /*onDayOfMonth*/,
3245  96 /*atTimeCode*/,
3246  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3247  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3248  0 /*letterIndex ("")*/,
3249  },
3250  // Rule Iran 2009 2011 - Mar 21 24:00 1:00 -
3251  {
3252  -91 /*fromYearTiny (2009)*/,
3253  -89 /*toYearTiny (2011)*/,
3254  3 /*inMonth*/,
3255  0 /*onDayOfWeek*/,
3256  21 /*onDayOfMonth*/,
3257  96 /*atTimeCode*/,
3258  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3259  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3260  0 /*letterIndex ("")*/,
3261  },
3262  // Rule Iran 2009 2011 - Sep 21 24:00 0 -
3263  {
3264  -91 /*fromYearTiny (2009)*/,
3265  -89 /*toYearTiny (2011)*/,
3266  9 /*inMonth*/,
3267  0 /*onDayOfWeek*/,
3268  21 /*onDayOfMonth*/,
3269  96 /*atTimeCode*/,
3270  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3271  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3272  0 /*letterIndex ("")*/,
3273  },
3274  // Rule Iran 2012 only - Mar 20 24:00 1:00 -
3275  {
3276  -88 /*fromYearTiny (2012)*/,
3277  -88 /*toYearTiny (2012)*/,
3278  3 /*inMonth*/,
3279  0 /*onDayOfWeek*/,
3280  20 /*onDayOfMonth*/,
3281  96 /*atTimeCode*/,
3282  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3283  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3284  0 /*letterIndex ("")*/,
3285  },
3286  // Rule Iran 2012 only - Sep 20 24:00 0 -
3287  {
3288  -88 /*fromYearTiny (2012)*/,
3289  -88 /*toYearTiny (2012)*/,
3290  9 /*inMonth*/,
3291  0 /*onDayOfWeek*/,
3292  20 /*onDayOfMonth*/,
3293  96 /*atTimeCode*/,
3294  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3295  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3296  0 /*letterIndex ("")*/,
3297  },
3298  // Rule Iran 2013 2015 - Mar 21 24:00 1:00 -
3299  {
3300  -87 /*fromYearTiny (2013)*/,
3301  -85 /*toYearTiny (2015)*/,
3302  3 /*inMonth*/,
3303  0 /*onDayOfWeek*/,
3304  21 /*onDayOfMonth*/,
3305  96 /*atTimeCode*/,
3306  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3307  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3308  0 /*letterIndex ("")*/,
3309  },
3310  // Rule Iran 2013 2015 - Sep 21 24:00 0 -
3311  {
3312  -87 /*fromYearTiny (2013)*/,
3313  -85 /*toYearTiny (2015)*/,
3314  9 /*inMonth*/,
3315  0 /*onDayOfWeek*/,
3316  21 /*onDayOfMonth*/,
3317  96 /*atTimeCode*/,
3318  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3319  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3320  0 /*letterIndex ("")*/,
3321  },
3322  // Rule Iran 2016 only - Mar 20 24:00 1:00 -
3323  {
3324  -84 /*fromYearTiny (2016)*/,
3325  -84 /*toYearTiny (2016)*/,
3326  3 /*inMonth*/,
3327  0 /*onDayOfWeek*/,
3328  20 /*onDayOfMonth*/,
3329  96 /*atTimeCode*/,
3330  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3331  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3332  0 /*letterIndex ("")*/,
3333  },
3334  // Rule Iran 2016 only - Sep 20 24:00 0 -
3335  {
3336  -84 /*fromYearTiny (2016)*/,
3337  -84 /*toYearTiny (2016)*/,
3338  9 /*inMonth*/,
3339  0 /*onDayOfWeek*/,
3340  20 /*onDayOfMonth*/,
3341  96 /*atTimeCode*/,
3342  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3343  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3344  0 /*letterIndex ("")*/,
3345  },
3346  // Rule Iran 2017 2019 - Mar 21 24:00 1:00 -
3347  {
3348  -83 /*fromYearTiny (2017)*/,
3349  -81 /*toYearTiny (2019)*/,
3350  3 /*inMonth*/,
3351  0 /*onDayOfWeek*/,
3352  21 /*onDayOfMonth*/,
3353  96 /*atTimeCode*/,
3354  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3355  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3356  0 /*letterIndex ("")*/,
3357  },
3358  // Rule Iran 2017 2019 - Sep 21 24:00 0 -
3359  {
3360  -83 /*fromYearTiny (2017)*/,
3361  -81 /*toYearTiny (2019)*/,
3362  9 /*inMonth*/,
3363  0 /*onDayOfWeek*/,
3364  21 /*onDayOfMonth*/,
3365  96 /*atTimeCode*/,
3366  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3367  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3368  0 /*letterIndex ("")*/,
3369  },
3370  // Rule Iran 2020 only - Mar 20 24:00 1:00 -
3371  {
3372  -80 /*fromYearTiny (2020)*/,
3373  -80 /*toYearTiny (2020)*/,
3374  3 /*inMonth*/,
3375  0 /*onDayOfWeek*/,
3376  20 /*onDayOfMonth*/,
3377  96 /*atTimeCode*/,
3378  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3379  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3380  0 /*letterIndex ("")*/,
3381  },
3382  // Rule Iran 2020 only - Sep 20 24:00 0 -
3383  {
3384  -80 /*fromYearTiny (2020)*/,
3385  -80 /*toYearTiny (2020)*/,
3386  9 /*inMonth*/,
3387  0 /*onDayOfWeek*/,
3388  20 /*onDayOfMonth*/,
3389  96 /*atTimeCode*/,
3390  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3391  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3392  0 /*letterIndex ("")*/,
3393  },
3394  // Rule Iran 2021 2022 - Mar 21 24:00 1:00 -
3395  {
3396  -79 /*fromYearTiny (2021)*/,
3397  -78 /*toYearTiny (2022)*/,
3398  3 /*inMonth*/,
3399  0 /*onDayOfWeek*/,
3400  21 /*onDayOfMonth*/,
3401  96 /*atTimeCode*/,
3402  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3403  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3404  0 /*letterIndex ("")*/,
3405  },
3406  // Rule Iran 2021 2022 - Sep 21 24:00 0 -
3407  {
3408  -79 /*fromYearTiny (2021)*/,
3409  -78 /*toYearTiny (2022)*/,
3410  9 /*inMonth*/,
3411  0 /*onDayOfWeek*/,
3412  21 /*onDayOfMonth*/,
3413  96 /*atTimeCode*/,
3414  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3415  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3416  0 /*letterIndex ("")*/,
3417  },
3418 
3419 };
3420 
3421 const extended::ZonePolicy kZonePolicyIran ACE_TIME_PROGMEM = {
3422  kZoneRulesIran /*rules*/,
3423  28 /*numRules*/,
3424 };
3425 
3426 //---------------------------------------------------------------------------
3427 // Policy name: Iraq
3428 // Rules: 4
3429 //---------------------------------------------------------------------------
3430 
3431 static const extended::ZoneRule kZoneRulesIraq[] ACE_TIME_PROGMEM = {
3432  // Anchor: Rule Iraq 1985 1990 - Sep lastSun 1:00s 0 -
3433  {
3434  -127 /*fromYearTiny (-32767)*/,
3435  -127 /*toYearTiny (-32767)*/,
3436  1 /*inMonth*/,
3437  0 /*onDayOfWeek*/,
3438  1 /*onDayOfMonth*/,
3439  0 /*atTimeCode*/,
3440  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3441  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3442  0 /*letterIndex ("")*/,
3443  },
3444  // Rule Iraq 1985 1990 - Sep lastSun 1:00s 0 -
3445  {
3446  -115 /*fromYearTiny (1985)*/,
3447  -110 /*toYearTiny (1990)*/,
3448  9 /*inMonth*/,
3449  7 /*onDayOfWeek*/,
3450  0 /*onDayOfMonth*/,
3451  4 /*atTimeCode*/,
3452  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3453  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3454  0 /*letterIndex ("")*/,
3455  },
3456  // Rule Iraq 1991 2007 - Apr 1 3:00s 1:00 -
3457  {
3458  -109 /*fromYearTiny (1991)*/,
3459  -93 /*toYearTiny (2007)*/,
3460  4 /*inMonth*/,
3461  0 /*onDayOfWeek*/,
3462  1 /*onDayOfMonth*/,
3463  12 /*atTimeCode*/,
3464  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3465  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3466  0 /*letterIndex ("")*/,
3467  },
3468  // Rule Iraq 1991 2007 - Oct 1 3:00s 0 -
3469  {
3470  -109 /*fromYearTiny (1991)*/,
3471  -93 /*toYearTiny (2007)*/,
3472  10 /*inMonth*/,
3473  0 /*onDayOfWeek*/,
3474  1 /*onDayOfMonth*/,
3475  12 /*atTimeCode*/,
3476  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3477  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3478  0 /*letterIndex ("")*/,
3479  },
3480 
3481 };
3482 
3483 const extended::ZonePolicy kZonePolicyIraq ACE_TIME_PROGMEM = {
3484  kZoneRulesIraq /*rules*/,
3485  4 /*numRules*/,
3486 };
3487 
3488 //---------------------------------------------------------------------------
3489 // Policy name: Japan
3490 // Rules: 1
3491 //---------------------------------------------------------------------------
3492 
3493 static const extended::ZoneRule kZoneRulesJapan[] ACE_TIME_PROGMEM = {
3494  // Anchor: Rule Japan 1948 1951 - Sep Sat>=8 25:00 0 S
3495  {
3496  -127 /*fromYearTiny (-32767)*/,
3497  -127 /*toYearTiny (-32767)*/,
3498  1 /*inMonth*/,
3499  0 /*onDayOfWeek*/,
3500  1 /*onDayOfMonth*/,
3501  0 /*atTimeCode*/,
3502  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3503  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3504  7 /*letterIndex ("S")*/,
3505  },
3506 
3507 };
3508 
3509 const extended::ZonePolicy kZonePolicyJapan ACE_TIME_PROGMEM = {
3510  kZoneRulesJapan /*rules*/,
3511  1 /*numRules*/,
3512 };
3513 
3514 //---------------------------------------------------------------------------
3515 // Policy name: Jordan
3516 // Rules: 14
3517 //---------------------------------------------------------------------------
3518 
3519 static const extended::ZoneRule kZoneRulesJordan[] ACE_TIME_PROGMEM = {
3520  // Anchor: Rule Jordan 1995 1998 - Sep Fri>=15 0:00s 0 -
3521  {
3522  -127 /*fromYearTiny (-32767)*/,
3523  -127 /*toYearTiny (-32767)*/,
3524  1 /*inMonth*/,
3525  0 /*onDayOfWeek*/,
3526  1 /*onDayOfMonth*/,
3527  0 /*atTimeCode*/,
3528  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3529  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3530  0 /*letterIndex ("")*/,
3531  },
3532  // Rule Jordan 1995 1998 - Sep Fri>=15 0:00s 0 -
3533  {
3534  -105 /*fromYearTiny (1995)*/,
3535  -102 /*toYearTiny (1998)*/,
3536  9 /*inMonth*/,
3537  5 /*onDayOfWeek*/,
3538  15 /*onDayOfMonth*/,
3539  0 /*atTimeCode*/,
3540  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3541  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3542  0 /*letterIndex ("")*/,
3543  },
3544  // Rule Jordan 1999 only - Jul 1 0:00s 1:00 S
3545  {
3546  -101 /*fromYearTiny (1999)*/,
3547  -101 /*toYearTiny (1999)*/,
3548  7 /*inMonth*/,
3549  0 /*onDayOfWeek*/,
3550  1 /*onDayOfMonth*/,
3551  0 /*atTimeCode*/,
3552  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3553  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3554  7 /*letterIndex ("S")*/,
3555  },
3556  // Rule Jordan 1999 2002 - Sep lastFri 0:00s 0 -
3557  {
3558  -101 /*fromYearTiny (1999)*/,
3559  -98 /*toYearTiny (2002)*/,
3560  9 /*inMonth*/,
3561  5 /*onDayOfWeek*/,
3562  0 /*onDayOfMonth*/,
3563  0 /*atTimeCode*/,
3564  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3565  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3566  0 /*letterIndex ("")*/,
3567  },
3568  // Rule Jordan 2000 2001 - Mar lastThu 0:00s 1:00 S
3569  {
3570  -100 /*fromYearTiny (2000)*/,
3571  -99 /*toYearTiny (2001)*/,
3572  3 /*inMonth*/,
3573  4 /*onDayOfWeek*/,
3574  0 /*onDayOfMonth*/,
3575  0 /*atTimeCode*/,
3576  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3577  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3578  7 /*letterIndex ("S")*/,
3579  },
3580  // Rule Jordan 2002 2012 - Mar lastThu 24:00 1:00 S
3581  {
3582  -98 /*fromYearTiny (2002)*/,
3583  -88 /*toYearTiny (2012)*/,
3584  3 /*inMonth*/,
3585  4 /*onDayOfWeek*/,
3586  0 /*onDayOfMonth*/,
3587  96 /*atTimeCode*/,
3588  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3589  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3590  7 /*letterIndex ("S")*/,
3591  },
3592  // Rule Jordan 2003 only - Oct 24 0:00s 0 -
3593  {
3594  -97 /*fromYearTiny (2003)*/,
3595  -97 /*toYearTiny (2003)*/,
3596  10 /*inMonth*/,
3597  0 /*onDayOfWeek*/,
3598  24 /*onDayOfMonth*/,
3599  0 /*atTimeCode*/,
3600  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3601  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3602  0 /*letterIndex ("")*/,
3603  },
3604  // Rule Jordan 2004 only - Oct 15 0:00s 0 -
3605  {
3606  -96 /*fromYearTiny (2004)*/,
3607  -96 /*toYearTiny (2004)*/,
3608  10 /*inMonth*/,
3609  0 /*onDayOfWeek*/,
3610  15 /*onDayOfMonth*/,
3611  0 /*atTimeCode*/,
3612  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3613  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3614  0 /*letterIndex ("")*/,
3615  },
3616  // Rule Jordan 2005 only - Sep lastFri 0:00s 0 -
3617  {
3618  -95 /*fromYearTiny (2005)*/,
3619  -95 /*toYearTiny (2005)*/,
3620  9 /*inMonth*/,
3621  5 /*onDayOfWeek*/,
3622  0 /*onDayOfMonth*/,
3623  0 /*atTimeCode*/,
3624  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3625  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3626  0 /*letterIndex ("")*/,
3627  },
3628  // Rule Jordan 2006 2011 - Oct lastFri 0:00s 0 -
3629  {
3630  -94 /*fromYearTiny (2006)*/,
3631  -89 /*toYearTiny (2011)*/,
3632  10 /*inMonth*/,
3633  5 /*onDayOfWeek*/,
3634  0 /*onDayOfMonth*/,
3635  0 /*atTimeCode*/,
3636  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3637  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3638  0 /*letterIndex ("")*/,
3639  },
3640  // Rule Jordan 2013 only - Dec 20 0:00 0 -
3641  {
3642  -87 /*fromYearTiny (2013)*/,
3643  -87 /*toYearTiny (2013)*/,
3644  12 /*inMonth*/,
3645  0 /*onDayOfWeek*/,
3646  20 /*onDayOfMonth*/,
3647  0 /*atTimeCode*/,
3648  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3649  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3650  0 /*letterIndex ("")*/,
3651  },
3652  // Rule Jordan 2014 2021 - Mar lastThu 24:00 1:00 S
3653  {
3654  -86 /*fromYearTiny (2014)*/,
3655  -79 /*toYearTiny (2021)*/,
3656  3 /*inMonth*/,
3657  4 /*onDayOfWeek*/,
3658  0 /*onDayOfMonth*/,
3659  96 /*atTimeCode*/,
3660  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3661  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3662  7 /*letterIndex ("S")*/,
3663  },
3664  // Rule Jordan 2014 2022 - Oct lastFri 0:00s 0 -
3665  {
3666  -86 /*fromYearTiny (2014)*/,
3667  -78 /*toYearTiny (2022)*/,
3668  10 /*inMonth*/,
3669  5 /*onDayOfWeek*/,
3670  0 /*onDayOfMonth*/,
3671  0 /*atTimeCode*/,
3672  16 /*atTimeModifier (kSuffixS + minute=0)*/,
3673  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3674  0 /*letterIndex ("")*/,
3675  },
3676  // Rule Jordan 2022 only - Feb lastThu 24:00 1:00 S
3677  {
3678  -78 /*fromYearTiny (2022)*/,
3679  -78 /*toYearTiny (2022)*/,
3680  2 /*inMonth*/,
3681  4 /*onDayOfWeek*/,
3682  0 /*onDayOfMonth*/,
3683  96 /*atTimeCode*/,
3684  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3685  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3686  7 /*letterIndex ("S")*/,
3687  },
3688 
3689 };
3690 
3691 const extended::ZonePolicy kZonePolicyJordan ACE_TIME_PROGMEM = {
3692  kZoneRulesJordan /*rules*/,
3693  14 /*numRules*/,
3694 };
3695 
3696 //---------------------------------------------------------------------------
3697 // Policy name: Kyrgyz
3698 // Rules: 4
3699 //---------------------------------------------------------------------------
3700 
3701 static const extended::ZoneRule kZoneRulesKyrgyz[] ACE_TIME_PROGMEM = {
3702  // Anchor: Rule Kyrgyz 1992 1996 - Sep lastSun 0:00 0 -
3703  {
3704  -127 /*fromYearTiny (-32767)*/,
3705  -127 /*toYearTiny (-32767)*/,
3706  1 /*inMonth*/,
3707  0 /*onDayOfWeek*/,
3708  1 /*onDayOfMonth*/,
3709  0 /*atTimeCode*/,
3710  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3711  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3712  0 /*letterIndex ("")*/,
3713  },
3714  // Rule Kyrgyz 1992 1996 - Sep lastSun 0:00 0 -
3715  {
3716  -108 /*fromYearTiny (1992)*/,
3717  -104 /*toYearTiny (1996)*/,
3718  9 /*inMonth*/,
3719  7 /*onDayOfWeek*/,
3720  0 /*onDayOfMonth*/,
3721  0 /*atTimeCode*/,
3722  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3723  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3724  0 /*letterIndex ("")*/,
3725  },
3726  // Rule Kyrgyz 1997 2005 - Mar lastSun 2:30 1:00 -
3727  {
3728  -103 /*fromYearTiny (1997)*/,
3729  -95 /*toYearTiny (2005)*/,
3730  3 /*inMonth*/,
3731  7 /*onDayOfWeek*/,
3732  0 /*onDayOfMonth*/,
3733  10 /*atTimeCode*/,
3734  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3735  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3736  0 /*letterIndex ("")*/,
3737  },
3738  // Rule Kyrgyz 1997 2004 - Oct lastSun 2:30 0 -
3739  {
3740  -103 /*fromYearTiny (1997)*/,
3741  -96 /*toYearTiny (2004)*/,
3742  10 /*inMonth*/,
3743  7 /*onDayOfWeek*/,
3744  0 /*onDayOfMonth*/,
3745  10 /*atTimeCode*/,
3746  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3747  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3748  0 /*letterIndex ("")*/,
3749  },
3750 
3751 };
3752 
3753 const extended::ZonePolicy kZonePolicyKyrgyz ACE_TIME_PROGMEM = {
3754  kZoneRulesKyrgyz /*rules*/,
3755  4 /*numRules*/,
3756 };
3757 
3758 //---------------------------------------------------------------------------
3759 // Policy name: LH
3760 // Rules: 10
3761 //---------------------------------------------------------------------------
3762 
3763 static const extended::ZoneRule kZoneRulesLH[] ACE_TIME_PROGMEM = {
3764  // Anchor: Rule LH 1990 1995 - Mar Sun>=1 2:00 0 -
3765  {
3766  -127 /*fromYearTiny (-32767)*/,
3767  -127 /*toYearTiny (-32767)*/,
3768  1 /*inMonth*/,
3769  0 /*onDayOfWeek*/,
3770  1 /*onDayOfMonth*/,
3771  0 /*atTimeCode*/,
3772  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3773  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3774  0 /*letterIndex ("")*/,
3775  },
3776  // Rule LH 1987 1999 - Oct lastSun 2:00 0:30 -
3777  {
3778  -113 /*fromYearTiny (1987)*/,
3779  -101 /*toYearTiny (1999)*/,
3780  10 /*inMonth*/,
3781  7 /*onDayOfWeek*/,
3782  0 /*onDayOfMonth*/,
3783  8 /*atTimeCode*/,
3784  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3785  6 /*deltaCode ((deltaMinutes=30)/15 + 4)*/,
3786  0 /*letterIndex ("")*/,
3787  },
3788  // Rule LH 1990 1995 - Mar Sun>=1 2:00 0 -
3789  {
3790  -110 /*fromYearTiny (1990)*/,
3791  -105 /*toYearTiny (1995)*/,
3792  3 /*inMonth*/,
3793  7 /*onDayOfWeek*/,
3794  1 /*onDayOfMonth*/,
3795  8 /*atTimeCode*/,
3796  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3797  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3798  0 /*letterIndex ("")*/,
3799  },
3800  // Rule LH 1996 2005 - Mar lastSun 2:00 0 -
3801  {
3802  -104 /*fromYearTiny (1996)*/,
3803  -95 /*toYearTiny (2005)*/,
3804  3 /*inMonth*/,
3805  7 /*onDayOfWeek*/,
3806  0 /*onDayOfMonth*/,
3807  8 /*atTimeCode*/,
3808  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3809  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3810  0 /*letterIndex ("")*/,
3811  },
3812  // Rule LH 2000 only - Aug lastSun 2:00 0:30 -
3813  {
3814  -100 /*fromYearTiny (2000)*/,
3815  -100 /*toYearTiny (2000)*/,
3816  8 /*inMonth*/,
3817  7 /*onDayOfWeek*/,
3818  0 /*onDayOfMonth*/,
3819  8 /*atTimeCode*/,
3820  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3821  6 /*deltaCode ((deltaMinutes=30)/15 + 4)*/,
3822  0 /*letterIndex ("")*/,
3823  },
3824  // Rule LH 2001 2007 - Oct lastSun 2:00 0:30 -
3825  {
3826  -99 /*fromYearTiny (2001)*/,
3827  -93 /*toYearTiny (2007)*/,
3828  10 /*inMonth*/,
3829  7 /*onDayOfWeek*/,
3830  0 /*onDayOfMonth*/,
3831  8 /*atTimeCode*/,
3832  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3833  6 /*deltaCode ((deltaMinutes=30)/15 + 4)*/,
3834  0 /*letterIndex ("")*/,
3835  },
3836  // Rule LH 2006 only - Apr Sun>=1 2:00 0 -
3837  {
3838  -94 /*fromYearTiny (2006)*/,
3839  -94 /*toYearTiny (2006)*/,
3840  4 /*inMonth*/,
3841  7 /*onDayOfWeek*/,
3842  1 /*onDayOfMonth*/,
3843  8 /*atTimeCode*/,
3844  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3845  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3846  0 /*letterIndex ("")*/,
3847  },
3848  // Rule LH 2007 only - Mar lastSun 2:00 0 -
3849  {
3850  -93 /*fromYearTiny (2007)*/,
3851  -93 /*toYearTiny (2007)*/,
3852  3 /*inMonth*/,
3853  7 /*onDayOfWeek*/,
3854  0 /*onDayOfMonth*/,
3855  8 /*atTimeCode*/,
3856  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3857  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3858  0 /*letterIndex ("")*/,
3859  },
3860  // Rule LH 2008 max - Apr Sun>=1 2:00 0 -
3861  {
3862  -92 /*fromYearTiny (2008)*/,
3863  126 /*toYearTiny (32766)*/,
3864  4 /*inMonth*/,
3865  7 /*onDayOfWeek*/,
3866  1 /*onDayOfMonth*/,
3867  8 /*atTimeCode*/,
3868  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3869  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3870  0 /*letterIndex ("")*/,
3871  },
3872  // Rule LH 2008 max - Oct Sun>=1 2:00 0:30 -
3873  {
3874  -92 /*fromYearTiny (2008)*/,
3875  126 /*toYearTiny (32766)*/,
3876  10 /*inMonth*/,
3877  7 /*onDayOfWeek*/,
3878  1 /*onDayOfMonth*/,
3879  8 /*atTimeCode*/,
3880  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3881  6 /*deltaCode ((deltaMinutes=30)/15 + 4)*/,
3882  0 /*letterIndex ("")*/,
3883  },
3884 
3885 };
3886 
3887 const extended::ZonePolicy kZonePolicyLH ACE_TIME_PROGMEM = {
3888  kZoneRulesLH /*rules*/,
3889  10 /*numRules*/,
3890 };
3891 
3892 //---------------------------------------------------------------------------
3893 // Policy name: Lebanon
3894 // Rules: 4
3895 //---------------------------------------------------------------------------
3896 
3897 static const extended::ZoneRule kZoneRulesLebanon[] ACE_TIME_PROGMEM = {
3898  // Anchor: Rule Lebanon 1993 1998 - Sep lastSun 0:00 0 -
3899  {
3900  -127 /*fromYearTiny (-32767)*/,
3901  -127 /*toYearTiny (-32767)*/,
3902  1 /*inMonth*/,
3903  0 /*onDayOfWeek*/,
3904  1 /*onDayOfMonth*/,
3905  0 /*atTimeCode*/,
3906  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3907  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3908  0 /*letterIndex ("")*/,
3909  },
3910  // Rule Lebanon 1993 max - Mar lastSun 0:00 1:00 S
3911  {
3912  -107 /*fromYearTiny (1993)*/,
3913  126 /*toYearTiny (32766)*/,
3914  3 /*inMonth*/,
3915  7 /*onDayOfWeek*/,
3916  0 /*onDayOfMonth*/,
3917  0 /*atTimeCode*/,
3918  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3919  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3920  7 /*letterIndex ("S")*/,
3921  },
3922  // Rule Lebanon 1993 1998 - Sep lastSun 0:00 0 -
3923  {
3924  -107 /*fromYearTiny (1993)*/,
3925  -102 /*toYearTiny (1998)*/,
3926  9 /*inMonth*/,
3927  7 /*onDayOfWeek*/,
3928  0 /*onDayOfMonth*/,
3929  0 /*atTimeCode*/,
3930  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3931  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3932  0 /*letterIndex ("")*/,
3933  },
3934  // Rule Lebanon 1999 max - Oct lastSun 0:00 0 -
3935  {
3936  -101 /*fromYearTiny (1999)*/,
3937  126 /*toYearTiny (32766)*/,
3938  10 /*inMonth*/,
3939  7 /*onDayOfWeek*/,
3940  0 /*onDayOfMonth*/,
3941  0 /*atTimeCode*/,
3942  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3943  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3944  0 /*letterIndex ("")*/,
3945  },
3946 
3947 };
3948 
3949 const extended::ZonePolicy kZonePolicyLebanon ACE_TIME_PROGMEM = {
3950  kZoneRulesLebanon /*rules*/,
3951  4 /*numRules*/,
3952 };
3953 
3954 //---------------------------------------------------------------------------
3955 // Policy name: Libya
3956 // Rules: 4
3957 //---------------------------------------------------------------------------
3958 
3959 static const extended::ZoneRule kZoneRulesLibya[] ACE_TIME_PROGMEM = {
3960  // Anchor: Rule Libya 1997 only - Oct 4 0:00 0 -
3961  {
3962  -127 /*fromYearTiny (-32767)*/,
3963  -127 /*toYearTiny (-32767)*/,
3964  1 /*inMonth*/,
3965  0 /*onDayOfWeek*/,
3966  1 /*onDayOfMonth*/,
3967  0 /*atTimeCode*/,
3968  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3969  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3970  0 /*letterIndex ("")*/,
3971  },
3972  // Rule Libya 1997 only - Oct 4 0:00 0 -
3973  {
3974  -103 /*fromYearTiny (1997)*/,
3975  -103 /*toYearTiny (1997)*/,
3976  10 /*inMonth*/,
3977  0 /*onDayOfWeek*/,
3978  4 /*onDayOfMonth*/,
3979  0 /*atTimeCode*/,
3980  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3981  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
3982  0 /*letterIndex ("")*/,
3983  },
3984  // Rule Libya 2013 only - Mar lastFri 1:00 1:00 S
3985  {
3986  -87 /*fromYearTiny (2013)*/,
3987  -87 /*toYearTiny (2013)*/,
3988  3 /*inMonth*/,
3989  5 /*onDayOfWeek*/,
3990  0 /*onDayOfMonth*/,
3991  4 /*atTimeCode*/,
3992  0 /*atTimeModifier (kSuffixW + minute=0)*/,
3993  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
3994  7 /*letterIndex ("S")*/,
3995  },
3996  // Rule Libya 2013 only - Oct lastFri 2:00 0 -
3997  {
3998  -87 /*fromYearTiny (2013)*/,
3999  -87 /*toYearTiny (2013)*/,
4000  10 /*inMonth*/,
4001  5 /*onDayOfWeek*/,
4002  0 /*onDayOfMonth*/,
4003  8 /*atTimeCode*/,
4004  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4005  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4006  0 /*letterIndex ("")*/,
4007  },
4008 
4009 };
4010 
4011 const extended::ZonePolicy kZonePolicyLibya ACE_TIME_PROGMEM = {
4012  kZoneRulesLibya /*rules*/,
4013  4 /*numRules*/,
4014 };
4015 
4016 //---------------------------------------------------------------------------
4017 // Policy name: Macau
4018 // Rules: 1
4019 //---------------------------------------------------------------------------
4020 
4021 static const extended::ZoneRule kZoneRulesMacau[] ACE_TIME_PROGMEM = {
4022  // Anchor: Rule Macau 1979 only - Oct Sun>=16 03:30 0 S
4023  {
4024  -127 /*fromYearTiny (-32767)*/,
4025  -127 /*toYearTiny (-32767)*/,
4026  1 /*inMonth*/,
4027  0 /*onDayOfWeek*/,
4028  1 /*onDayOfMonth*/,
4029  0 /*atTimeCode*/,
4030  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4031  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4032  7 /*letterIndex ("S")*/,
4033  },
4034 
4035 };
4036 
4037 const extended::ZonePolicy kZonePolicyMacau ACE_TIME_PROGMEM = {
4038  kZoneRulesMacau /*rules*/,
4039  1 /*numRules*/,
4040 };
4041 
4042 //---------------------------------------------------------------------------
4043 // Policy name: Mauritius
4044 // Rules: 4
4045 //---------------------------------------------------------------------------
4046 
4047 static const extended::ZoneRule kZoneRulesMauritius[] ACE_TIME_PROGMEM = {
4048  // Anchor: Rule Mauritius 1983 only - Mar 21 0:00 0 -
4049  {
4050  -127 /*fromYearTiny (-32767)*/,
4051  -127 /*toYearTiny (-32767)*/,
4052  1 /*inMonth*/,
4053  0 /*onDayOfWeek*/,
4054  1 /*onDayOfMonth*/,
4055  0 /*atTimeCode*/,
4056  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4057  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4058  0 /*letterIndex ("")*/,
4059  },
4060  // Rule Mauritius 1983 only - Mar 21 0:00 0 -
4061  {
4062  -117 /*fromYearTiny (1983)*/,
4063  -117 /*toYearTiny (1983)*/,
4064  3 /*inMonth*/,
4065  0 /*onDayOfWeek*/,
4066  21 /*onDayOfMonth*/,
4067  0 /*atTimeCode*/,
4068  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4069  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4070  0 /*letterIndex ("")*/,
4071  },
4072  // Rule Mauritius 2008 only - Oct lastSun 2:00 1:00 -
4073  {
4074  -92 /*fromYearTiny (2008)*/,
4075  -92 /*toYearTiny (2008)*/,
4076  10 /*inMonth*/,
4077  7 /*onDayOfWeek*/,
4078  0 /*onDayOfMonth*/,
4079  8 /*atTimeCode*/,
4080  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4081  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4082  0 /*letterIndex ("")*/,
4083  },
4084  // Rule Mauritius 2009 only - Mar lastSun 2:00 0 -
4085  {
4086  -91 /*fromYearTiny (2009)*/,
4087  -91 /*toYearTiny (2009)*/,
4088  3 /*inMonth*/,
4089  7 /*onDayOfWeek*/,
4090  0 /*onDayOfMonth*/,
4091  8 /*atTimeCode*/,
4092  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4093  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4094  0 /*letterIndex ("")*/,
4095  },
4096 
4097 };
4098 
4099 const extended::ZonePolicy kZonePolicyMauritius ACE_TIME_PROGMEM = {
4100  kZoneRulesMauritius /*rules*/,
4101  4 /*numRules*/,
4102 };
4103 
4104 //---------------------------------------------------------------------------
4105 // Policy name: Mexico
4106 // Rules: 8
4107 //---------------------------------------------------------------------------
4108 
4109 static const extended::ZoneRule kZoneRulesMexico[] ACE_TIME_PROGMEM = {
4110  // Anchor: Rule Mexico 1950 only - Jul 30 0:00 0 S
4111  {
4112  -127 /*fromYearTiny (-32767)*/,
4113  -127 /*toYearTiny (-32767)*/,
4114  1 /*inMonth*/,
4115  0 /*onDayOfWeek*/,
4116  1 /*onDayOfMonth*/,
4117  0 /*atTimeCode*/,
4118  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4119  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4120  7 /*letterIndex ("S")*/,
4121  },
4122  // Rule Mexico 1950 only - Jul 30 0:00 0 S
4123  {
4124  -127 /*fromYearTiny (1950)*/,
4125  -127 /*toYearTiny (1950)*/,
4126  7 /*inMonth*/,
4127  0 /*onDayOfWeek*/,
4128  30 /*onDayOfMonth*/,
4129  0 /*atTimeCode*/,
4130  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4131  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4132  7 /*letterIndex ("S")*/,
4133  },
4134  // Rule Mexico 1996 2000 - Apr Sun>=1 2:00 1:00 D
4135  {
4136  -104 /*fromYearTiny (1996)*/,
4137  -100 /*toYearTiny (2000)*/,
4138  4 /*inMonth*/,
4139  7 /*onDayOfWeek*/,
4140  1 /*onDayOfMonth*/,
4141  8 /*atTimeCode*/,
4142  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4143  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4144  5 /*letterIndex ("D")*/,
4145  },
4146  // Rule Mexico 1996 2000 - Oct lastSun 2:00 0 S
4147  {
4148  -104 /*fromYearTiny (1996)*/,
4149  -100 /*toYearTiny (2000)*/,
4150  10 /*inMonth*/,
4151  7 /*onDayOfWeek*/,
4152  0 /*onDayOfMonth*/,
4153  8 /*atTimeCode*/,
4154  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4155  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4156  7 /*letterIndex ("S")*/,
4157  },
4158  // Rule Mexico 2001 only - May Sun>=1 2:00 1:00 D
4159  {
4160  -99 /*fromYearTiny (2001)*/,
4161  -99 /*toYearTiny (2001)*/,
4162  5 /*inMonth*/,
4163  7 /*onDayOfWeek*/,
4164  1 /*onDayOfMonth*/,
4165  8 /*atTimeCode*/,
4166  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4167  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4168  5 /*letterIndex ("D")*/,
4169  },
4170  // Rule Mexico 2001 only - Sep lastSun 2:00 0 S
4171  {
4172  -99 /*fromYearTiny (2001)*/,
4173  -99 /*toYearTiny (2001)*/,
4174  9 /*inMonth*/,
4175  7 /*onDayOfWeek*/,
4176  0 /*onDayOfMonth*/,
4177  8 /*atTimeCode*/,
4178  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4179  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4180  7 /*letterIndex ("S")*/,
4181  },
4182  // Rule Mexico 2002 2022 - Apr Sun>=1 2:00 1:00 D
4183  {
4184  -98 /*fromYearTiny (2002)*/,
4185  -78 /*toYearTiny (2022)*/,
4186  4 /*inMonth*/,
4187  7 /*onDayOfWeek*/,
4188  1 /*onDayOfMonth*/,
4189  8 /*atTimeCode*/,
4190  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4191  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4192  5 /*letterIndex ("D")*/,
4193  },
4194  // Rule Mexico 2002 2022 - Oct lastSun 2:00 0 S
4195  {
4196  -98 /*fromYearTiny (2002)*/,
4197  -78 /*toYearTiny (2022)*/,
4198  10 /*inMonth*/,
4199  7 /*onDayOfWeek*/,
4200  0 /*onDayOfMonth*/,
4201  8 /*atTimeCode*/,
4202  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4203  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4204  7 /*letterIndex ("S")*/,
4205  },
4206 
4207 };
4208 
4209 const extended::ZonePolicy kZonePolicyMexico ACE_TIME_PROGMEM = {
4210  kZoneRulesMexico /*rules*/,
4211  8 /*numRules*/,
4212 };
4213 
4214 //---------------------------------------------------------------------------
4215 // Policy name: Moldova
4216 // Rules: 3
4217 //---------------------------------------------------------------------------
4218 
4219 static const extended::ZoneRule kZoneRulesMoldova[] ACE_TIME_PROGMEM = {
4220  // Anchor: Rule Moldova 1997 max - Oct lastSun 3:00 0 -
4221  {
4222  -127 /*fromYearTiny (-32767)*/,
4223  -127 /*toYearTiny (-32767)*/,
4224  1 /*inMonth*/,
4225  0 /*onDayOfWeek*/,
4226  1 /*onDayOfMonth*/,
4227  0 /*atTimeCode*/,
4228  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4229  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4230  0 /*letterIndex ("")*/,
4231  },
4232  // Rule Moldova 1997 max - Mar lastSun 2:00 1:00 S
4233  {
4234  -103 /*fromYearTiny (1997)*/,
4235  126 /*toYearTiny (32766)*/,
4236  3 /*inMonth*/,
4237  7 /*onDayOfWeek*/,
4238  0 /*onDayOfMonth*/,
4239  8 /*atTimeCode*/,
4240  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4241  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4242  7 /*letterIndex ("S")*/,
4243  },
4244  // Rule Moldova 1997 max - Oct lastSun 3:00 0 -
4245  {
4246  -103 /*fromYearTiny (1997)*/,
4247  126 /*toYearTiny (32766)*/,
4248  10 /*inMonth*/,
4249  7 /*onDayOfWeek*/,
4250  0 /*onDayOfMonth*/,
4251  12 /*atTimeCode*/,
4252  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4253  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4254  0 /*letterIndex ("")*/,
4255  },
4256 
4257 };
4258 
4259 const extended::ZonePolicy kZonePolicyMoldova ACE_TIME_PROGMEM = {
4260  kZoneRulesMoldova /*rules*/,
4261  3 /*numRules*/,
4262 };
4263 
4264 //---------------------------------------------------------------------------
4265 // Policy name: Moncton
4266 // Rules: 4
4267 //---------------------------------------------------------------------------
4268 
4269 static const extended::ZoneRule kZoneRulesMoncton[] ACE_TIME_PROGMEM = {
4270  // Anchor: Rule Moncton 1957 1972 - Oct lastSun 2:00 0 S
4271  {
4272  -127 /*fromYearTiny (-32767)*/,
4273  -127 /*toYearTiny (-32767)*/,
4274  1 /*inMonth*/,
4275  0 /*onDayOfWeek*/,
4276  1 /*onDayOfMonth*/,
4277  0 /*atTimeCode*/,
4278  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4279  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4280  7 /*letterIndex ("S")*/,
4281  },
4282  // Rule Moncton 1957 1972 - Oct lastSun 2:00 0 S
4283  {
4284  -127 /*fromYearTiny (1957)*/,
4285  -127 /*toYearTiny (1972)*/,
4286  10 /*inMonth*/,
4287  7 /*onDayOfWeek*/,
4288  0 /*onDayOfMonth*/,
4289  8 /*atTimeCode*/,
4290  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4291  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4292  7 /*letterIndex ("S")*/,
4293  },
4294  // Rule Moncton 1993 2006 - Apr Sun>=1 0:01 1:00 D
4295  {
4296  -107 /*fromYearTiny (1993)*/,
4297  -94 /*toYearTiny (2006)*/,
4298  4 /*inMonth*/,
4299  7 /*onDayOfWeek*/,
4300  1 /*onDayOfMonth*/,
4301  0 /*atTimeCode*/,
4302  1 /*atTimeModifier (kSuffixW + minute=1)*/,
4303  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4304  5 /*letterIndex ("D")*/,
4305  },
4306  // Rule Moncton 1993 2006 - Oct lastSun 0:01 0 S
4307  {
4308  -107 /*fromYearTiny (1993)*/,
4309  -94 /*toYearTiny (2006)*/,
4310  10 /*inMonth*/,
4311  7 /*onDayOfWeek*/,
4312  0 /*onDayOfMonth*/,
4313  0 /*atTimeCode*/,
4314  1 /*atTimeModifier (kSuffixW + minute=1)*/,
4315  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4316  7 /*letterIndex ("S")*/,
4317  },
4318 
4319 };
4320 
4321 const extended::ZonePolicy kZonePolicyMoncton ACE_TIME_PROGMEM = {
4322  kZoneRulesMoncton /*rules*/,
4323  4 /*numRules*/,
4324 };
4325 
4326 //---------------------------------------------------------------------------
4327 // Policy name: Mongol
4328 // Rules: 7
4329 //---------------------------------------------------------------------------
4330 
4331 static const extended::ZoneRule kZoneRulesMongol[] ACE_TIME_PROGMEM = {
4332  // Anchor: Rule Mongol 1984 1998 - Sep lastSun 0:00 0 -
4333  {
4334  -127 /*fromYearTiny (-32767)*/,
4335  -127 /*toYearTiny (-32767)*/,
4336  1 /*inMonth*/,
4337  0 /*onDayOfWeek*/,
4338  1 /*onDayOfMonth*/,
4339  0 /*atTimeCode*/,
4340  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4341  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4342  0 /*letterIndex ("")*/,
4343  },
4344  // Rule Mongol 1984 1998 - Sep lastSun 0:00 0 -
4345  {
4346  -116 /*fromYearTiny (1984)*/,
4347  -102 /*toYearTiny (1998)*/,
4348  9 /*inMonth*/,
4349  7 /*onDayOfWeek*/,
4350  0 /*onDayOfMonth*/,
4351  0 /*atTimeCode*/,
4352  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4353  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4354  0 /*letterIndex ("")*/,
4355  },
4356  // Rule Mongol 2001 only - Apr lastSat 2:00 1:00 -
4357  {
4358  -99 /*fromYearTiny (2001)*/,
4359  -99 /*toYearTiny (2001)*/,
4360  4 /*inMonth*/,
4361  6 /*onDayOfWeek*/,
4362  0 /*onDayOfMonth*/,
4363  8 /*atTimeCode*/,
4364  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4365  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4366  0 /*letterIndex ("")*/,
4367  },
4368  // Rule Mongol 2001 2006 - Sep lastSat 2:00 0 -
4369  {
4370  -99 /*fromYearTiny (2001)*/,
4371  -94 /*toYearTiny (2006)*/,
4372  9 /*inMonth*/,
4373  6 /*onDayOfWeek*/,
4374  0 /*onDayOfMonth*/,
4375  8 /*atTimeCode*/,
4376  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4377  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4378  0 /*letterIndex ("")*/,
4379  },
4380  // Rule Mongol 2002 2006 - Mar lastSat 2:00 1:00 -
4381  {
4382  -98 /*fromYearTiny (2002)*/,
4383  -94 /*toYearTiny (2006)*/,
4384  3 /*inMonth*/,
4385  6 /*onDayOfWeek*/,
4386  0 /*onDayOfMonth*/,
4387  8 /*atTimeCode*/,
4388  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4389  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4390  0 /*letterIndex ("")*/,
4391  },
4392  // Rule Mongol 2015 2016 - Mar lastSat 2:00 1:00 -
4393  {
4394  -85 /*fromYearTiny (2015)*/,
4395  -84 /*toYearTiny (2016)*/,
4396  3 /*inMonth*/,
4397  6 /*onDayOfWeek*/,
4398  0 /*onDayOfMonth*/,
4399  8 /*atTimeCode*/,
4400  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4401  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4402  0 /*letterIndex ("")*/,
4403  },
4404  // Rule Mongol 2015 2016 - Sep lastSat 0:00 0 -
4405  {
4406  -85 /*fromYearTiny (2015)*/,
4407  -84 /*toYearTiny (2016)*/,
4408  9 /*inMonth*/,
4409  6 /*onDayOfWeek*/,
4410  0 /*onDayOfMonth*/,
4411  0 /*atTimeCode*/,
4412  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4413  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4414  0 /*letterIndex ("")*/,
4415  },
4416 
4417 };
4418 
4419 const extended::ZonePolicy kZonePolicyMongol ACE_TIME_PROGMEM = {
4420  kZoneRulesMongol /*rules*/,
4421  7 /*numRules*/,
4422 };
4423 
4424 //---------------------------------------------------------------------------
4425 // Policy name: Morocco
4426 // Rules: 170
4427 //---------------------------------------------------------------------------
4428 
4429 static const extended::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = {
4430  // Anchor: Rule Morocco 1978 only - Aug 4 0:00 0 -
4431  {
4432  -127 /*fromYearTiny (-32767)*/,
4433  -127 /*toYearTiny (-32767)*/,
4434  1 /*inMonth*/,
4435  0 /*onDayOfWeek*/,
4436  1 /*onDayOfMonth*/,
4437  0 /*atTimeCode*/,
4438  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4439  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4440  0 /*letterIndex ("")*/,
4441  },
4442  // Rule Morocco 1978 only - Aug 4 0:00 0 -
4443  {
4444  -122 /*fromYearTiny (1978)*/,
4445  -122 /*toYearTiny (1978)*/,
4446  8 /*inMonth*/,
4447  0 /*onDayOfWeek*/,
4448  4 /*onDayOfMonth*/,
4449  0 /*atTimeCode*/,
4450  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4451  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4452  0 /*letterIndex ("")*/,
4453  },
4454  // Rule Morocco 2008 only - Jun 1 0:00 1:00 -
4455  {
4456  -92 /*fromYearTiny (2008)*/,
4457  -92 /*toYearTiny (2008)*/,
4458  6 /*inMonth*/,
4459  0 /*onDayOfWeek*/,
4460  1 /*onDayOfMonth*/,
4461  0 /*atTimeCode*/,
4462  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4463  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4464  0 /*letterIndex ("")*/,
4465  },
4466  // Rule Morocco 2008 only - Sep 1 0:00 0 -
4467  {
4468  -92 /*fromYearTiny (2008)*/,
4469  -92 /*toYearTiny (2008)*/,
4470  9 /*inMonth*/,
4471  0 /*onDayOfWeek*/,
4472  1 /*onDayOfMonth*/,
4473  0 /*atTimeCode*/,
4474  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4475  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4476  0 /*letterIndex ("")*/,
4477  },
4478  // Rule Morocco 2009 only - Jun 1 0:00 1:00 -
4479  {
4480  -91 /*fromYearTiny (2009)*/,
4481  -91 /*toYearTiny (2009)*/,
4482  6 /*inMonth*/,
4483  0 /*onDayOfWeek*/,
4484  1 /*onDayOfMonth*/,
4485  0 /*atTimeCode*/,
4486  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4487  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4488  0 /*letterIndex ("")*/,
4489  },
4490  // Rule Morocco 2009 only - Aug 21 0:00 0 -
4491  {
4492  -91 /*fromYearTiny (2009)*/,
4493  -91 /*toYearTiny (2009)*/,
4494  8 /*inMonth*/,
4495  0 /*onDayOfWeek*/,
4496  21 /*onDayOfMonth*/,
4497  0 /*atTimeCode*/,
4498  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4499  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4500  0 /*letterIndex ("")*/,
4501  },
4502  // Rule Morocco 2010 only - May 2 0:00 1:00 -
4503  {
4504  -90 /*fromYearTiny (2010)*/,
4505  -90 /*toYearTiny (2010)*/,
4506  5 /*inMonth*/,
4507  0 /*onDayOfWeek*/,
4508  2 /*onDayOfMonth*/,
4509  0 /*atTimeCode*/,
4510  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4511  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4512  0 /*letterIndex ("")*/,
4513  },
4514  // Rule Morocco 2010 only - Aug 8 0:00 0 -
4515  {
4516  -90 /*fromYearTiny (2010)*/,
4517  -90 /*toYearTiny (2010)*/,
4518  8 /*inMonth*/,
4519  0 /*onDayOfWeek*/,
4520  8 /*onDayOfMonth*/,
4521  0 /*atTimeCode*/,
4522  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4523  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4524  0 /*letterIndex ("")*/,
4525  },
4526  // Rule Morocco 2011 only - Apr 3 0:00 1:00 -
4527  {
4528  -89 /*fromYearTiny (2011)*/,
4529  -89 /*toYearTiny (2011)*/,
4530  4 /*inMonth*/,
4531  0 /*onDayOfWeek*/,
4532  3 /*onDayOfMonth*/,
4533  0 /*atTimeCode*/,
4534  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4535  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4536  0 /*letterIndex ("")*/,
4537  },
4538  // Rule Morocco 2011 only - Jul 31 0:00 0 -
4539  {
4540  -89 /*fromYearTiny (2011)*/,
4541  -89 /*toYearTiny (2011)*/,
4542  7 /*inMonth*/,
4543  0 /*onDayOfWeek*/,
4544  31 /*onDayOfMonth*/,
4545  0 /*atTimeCode*/,
4546  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4547  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4548  0 /*letterIndex ("")*/,
4549  },
4550  // Rule Morocco 2012 2013 - Apr lastSun 2:00 1:00 -
4551  {
4552  -88 /*fromYearTiny (2012)*/,
4553  -87 /*toYearTiny (2013)*/,
4554  4 /*inMonth*/,
4555  7 /*onDayOfWeek*/,
4556  0 /*onDayOfMonth*/,
4557  8 /*atTimeCode*/,
4558  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4559  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4560  0 /*letterIndex ("")*/,
4561  },
4562  // Rule Morocco 2012 only - Jul 20 3:00 0 -
4563  {
4564  -88 /*fromYearTiny (2012)*/,
4565  -88 /*toYearTiny (2012)*/,
4566  7 /*inMonth*/,
4567  0 /*onDayOfWeek*/,
4568  20 /*onDayOfMonth*/,
4569  12 /*atTimeCode*/,
4570  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4571  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4572  0 /*letterIndex ("")*/,
4573  },
4574  // Rule Morocco 2012 only - Aug 20 2:00 1:00 -
4575  {
4576  -88 /*fromYearTiny (2012)*/,
4577  -88 /*toYearTiny (2012)*/,
4578  8 /*inMonth*/,
4579  0 /*onDayOfWeek*/,
4580  20 /*onDayOfMonth*/,
4581  8 /*atTimeCode*/,
4582  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4583  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4584  0 /*letterIndex ("")*/,
4585  },
4586  // Rule Morocco 2012 only - Sep 30 3:00 0 -
4587  {
4588  -88 /*fromYearTiny (2012)*/,
4589  -88 /*toYearTiny (2012)*/,
4590  9 /*inMonth*/,
4591  0 /*onDayOfWeek*/,
4592  30 /*onDayOfMonth*/,
4593  12 /*atTimeCode*/,
4594  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4595  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4596  0 /*letterIndex ("")*/,
4597  },
4598  // Rule Morocco 2013 only - Jul 7 3:00 0 -
4599  {
4600  -87 /*fromYearTiny (2013)*/,
4601  -87 /*toYearTiny (2013)*/,
4602  7 /*inMonth*/,
4603  0 /*onDayOfWeek*/,
4604  7 /*onDayOfMonth*/,
4605  12 /*atTimeCode*/,
4606  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4607  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4608  0 /*letterIndex ("")*/,
4609  },
4610  // Rule Morocco 2013 only - Aug 10 2:00 1:00 -
4611  {
4612  -87 /*fromYearTiny (2013)*/,
4613  -87 /*toYearTiny (2013)*/,
4614  8 /*inMonth*/,
4615  0 /*onDayOfWeek*/,
4616  10 /*onDayOfMonth*/,
4617  8 /*atTimeCode*/,
4618  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4619  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4620  0 /*letterIndex ("")*/,
4621  },
4622  // Rule Morocco 2013 2018 - Oct lastSun 3:00 0 -
4623  {
4624  -87 /*fromYearTiny (2013)*/,
4625  -82 /*toYearTiny (2018)*/,
4626  10 /*inMonth*/,
4627  7 /*onDayOfWeek*/,
4628  0 /*onDayOfMonth*/,
4629  12 /*atTimeCode*/,
4630  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4631  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4632  0 /*letterIndex ("")*/,
4633  },
4634  // Rule Morocco 2014 2018 - Mar lastSun 2:00 1:00 -
4635  {
4636  -86 /*fromYearTiny (2014)*/,
4637  -82 /*toYearTiny (2018)*/,
4638  3 /*inMonth*/,
4639  7 /*onDayOfWeek*/,
4640  0 /*onDayOfMonth*/,
4641  8 /*atTimeCode*/,
4642  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4643  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4644  0 /*letterIndex ("")*/,
4645  },
4646  // Rule Morocco 2014 only - Jun 28 3:00 0 -
4647  {
4648  -86 /*fromYearTiny (2014)*/,
4649  -86 /*toYearTiny (2014)*/,
4650  6 /*inMonth*/,
4651  0 /*onDayOfWeek*/,
4652  28 /*onDayOfMonth*/,
4653  12 /*atTimeCode*/,
4654  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4655  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4656  0 /*letterIndex ("")*/,
4657  },
4658  // Rule Morocco 2014 only - Aug 2 2:00 1:00 -
4659  {
4660  -86 /*fromYearTiny (2014)*/,
4661  -86 /*toYearTiny (2014)*/,
4662  8 /*inMonth*/,
4663  0 /*onDayOfWeek*/,
4664  2 /*onDayOfMonth*/,
4665  8 /*atTimeCode*/,
4666  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4667  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4668  0 /*letterIndex ("")*/,
4669  },
4670  // Rule Morocco 2015 only - Jun 14 3:00 0 -
4671  {
4672  -85 /*fromYearTiny (2015)*/,
4673  -85 /*toYearTiny (2015)*/,
4674  6 /*inMonth*/,
4675  0 /*onDayOfWeek*/,
4676  14 /*onDayOfMonth*/,
4677  12 /*atTimeCode*/,
4678  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4679  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4680  0 /*letterIndex ("")*/,
4681  },
4682  // Rule Morocco 2015 only - Jul 19 2:00 1:00 -
4683  {
4684  -85 /*fromYearTiny (2015)*/,
4685  -85 /*toYearTiny (2015)*/,
4686  7 /*inMonth*/,
4687  0 /*onDayOfWeek*/,
4688  19 /*onDayOfMonth*/,
4689  8 /*atTimeCode*/,
4690  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4691  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4692  0 /*letterIndex ("")*/,
4693  },
4694  // Rule Morocco 2016 only - Jun 5 3:00 0 -
4695  {
4696  -84 /*fromYearTiny (2016)*/,
4697  -84 /*toYearTiny (2016)*/,
4698  6 /*inMonth*/,
4699  0 /*onDayOfWeek*/,
4700  5 /*onDayOfMonth*/,
4701  12 /*atTimeCode*/,
4702  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4703  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4704  0 /*letterIndex ("")*/,
4705  },
4706  // Rule Morocco 2016 only - Jul 10 2:00 1:00 -
4707  {
4708  -84 /*fromYearTiny (2016)*/,
4709  -84 /*toYearTiny (2016)*/,
4710  7 /*inMonth*/,
4711  0 /*onDayOfWeek*/,
4712  10 /*onDayOfMonth*/,
4713  8 /*atTimeCode*/,
4714  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4715  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4716  0 /*letterIndex ("")*/,
4717  },
4718  // Rule Morocco 2017 only - May 21 3:00 0 -
4719  {
4720  -83 /*fromYearTiny (2017)*/,
4721  -83 /*toYearTiny (2017)*/,
4722  5 /*inMonth*/,
4723  0 /*onDayOfWeek*/,
4724  21 /*onDayOfMonth*/,
4725  12 /*atTimeCode*/,
4726  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4727  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4728  0 /*letterIndex ("")*/,
4729  },
4730  // Rule Morocco 2017 only - Jul 2 2:00 1:00 -
4731  {
4732  -83 /*fromYearTiny (2017)*/,
4733  -83 /*toYearTiny (2017)*/,
4734  7 /*inMonth*/,
4735  0 /*onDayOfWeek*/,
4736  2 /*onDayOfMonth*/,
4737  8 /*atTimeCode*/,
4738  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4739  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4740  0 /*letterIndex ("")*/,
4741  },
4742  // Rule Morocco 2018 only - May 13 3:00 0 -
4743  {
4744  -82 /*fromYearTiny (2018)*/,
4745  -82 /*toYearTiny (2018)*/,
4746  5 /*inMonth*/,
4747  0 /*onDayOfWeek*/,
4748  13 /*onDayOfMonth*/,
4749  12 /*atTimeCode*/,
4750  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4751  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4752  0 /*letterIndex ("")*/,
4753  },
4754  // Rule Morocco 2018 only - Jun 17 2:00 1:00 -
4755  {
4756  -82 /*fromYearTiny (2018)*/,
4757  -82 /*toYearTiny (2018)*/,
4758  6 /*inMonth*/,
4759  0 /*onDayOfWeek*/,
4760  17 /*onDayOfMonth*/,
4761  8 /*atTimeCode*/,
4762  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4763  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
4764  0 /*letterIndex ("")*/,
4765  },
4766  // Rule Morocco 2019 only - May 5 3:00 -1:00 -
4767  {
4768  -81 /*fromYearTiny (2019)*/,
4769  -81 /*toYearTiny (2019)*/,
4770  5 /*inMonth*/,
4771  0 /*onDayOfWeek*/,
4772  5 /*onDayOfMonth*/,
4773  12 /*atTimeCode*/,
4774  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4775  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
4776  0 /*letterIndex ("")*/,
4777  },
4778  // Rule Morocco 2019 only - Jun 9 2:00 0 -
4779  {
4780  -81 /*fromYearTiny (2019)*/,
4781  -81 /*toYearTiny (2019)*/,
4782  6 /*inMonth*/,
4783  0 /*onDayOfWeek*/,
4784  9 /*onDayOfMonth*/,
4785  8 /*atTimeCode*/,
4786  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4787  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4788  0 /*letterIndex ("")*/,
4789  },
4790  // Rule Morocco 2020 only - Apr 19 3:00 -1:00 -
4791  {
4792  -80 /*fromYearTiny (2020)*/,
4793  -80 /*toYearTiny (2020)*/,
4794  4 /*inMonth*/,
4795  0 /*onDayOfWeek*/,
4796  19 /*onDayOfMonth*/,
4797  12 /*atTimeCode*/,
4798  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4799  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
4800  0 /*letterIndex ("")*/,
4801  },
4802  // Rule Morocco 2020 only - May 31 2:00 0 -
4803  {
4804  -80 /*fromYearTiny (2020)*/,
4805  -80 /*toYearTiny (2020)*/,
4806  5 /*inMonth*/,
4807  0 /*onDayOfWeek*/,
4808  31 /*onDayOfMonth*/,
4809  8 /*atTimeCode*/,
4810  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4811  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4812  0 /*letterIndex ("")*/,
4813  },
4814  // Rule Morocco 2021 only - Apr 11 3:00 -1:00 -
4815  {
4816  -79 /*fromYearTiny (2021)*/,
4817  -79 /*toYearTiny (2021)*/,
4818  4 /*inMonth*/,
4819  0 /*onDayOfWeek*/,
4820  11 /*onDayOfMonth*/,
4821  12 /*atTimeCode*/,
4822  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4823  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
4824  0 /*letterIndex ("")*/,
4825  },
4826  // Rule Morocco 2021 only - May 16 2:00 0 -
4827  {
4828  -79 /*fromYearTiny (2021)*/,
4829  -79 /*toYearTiny (2021)*/,
4830  5 /*inMonth*/,
4831  0 /*onDayOfWeek*/,
4832  16 /*onDayOfMonth*/,
4833  8 /*atTimeCode*/,
4834  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4835  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4836  0 /*letterIndex ("")*/,
4837  },
4838  // Rule Morocco 2022 only - Mar 27 3:00 -1:00 -
4839  {
4840  -78 /*fromYearTiny (2022)*/,
4841  -78 /*toYearTiny (2022)*/,
4842  3 /*inMonth*/,
4843  0 /*onDayOfWeek*/,
4844  27 /*onDayOfMonth*/,
4845  12 /*atTimeCode*/,
4846  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4847  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
4848  0 /*letterIndex ("")*/,
4849  },
4850  // Rule Morocco 2022 only - May 8 2:00 0 -
4851  {
4852  -78 /*fromYearTiny (2022)*/,
4853  -78 /*toYearTiny (2022)*/,
4854  5 /*inMonth*/,
4855  0 /*onDayOfWeek*/,
4856  8 /*onDayOfMonth*/,
4857  8 /*atTimeCode*/,
4858  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4859  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4860  0 /*letterIndex ("")*/,
4861  },
4862  // Rule Morocco 2023 only - Mar 19 3:00 -1:00 -
4863  {
4864  -77 /*fromYearTiny (2023)*/,
4865  -77 /*toYearTiny (2023)*/,
4866  3 /*inMonth*/,
4867  0 /*onDayOfWeek*/,
4868  19 /*onDayOfMonth*/,
4869  12 /*atTimeCode*/,
4870  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4871  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
4872  0 /*letterIndex ("")*/,
4873  },
4874  // Rule Morocco 2023 only - Apr 23 2:00 0 -
4875  {
4876  -77 /*fromYearTiny (2023)*/,
4877  -77 /*toYearTiny (2023)*/,
4878  4 /*inMonth*/,
4879  0 /*onDayOfWeek*/,
4880  23 /*onDayOfMonth*/,
4881  8 /*atTimeCode*/,
4882  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4883  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4884  0 /*letterIndex ("")*/,
4885  },
4886  // Rule Morocco 2024 only - Mar 10 3:00 -1:00 -
4887  {
4888  -76 /*fromYearTiny (2024)*/,
4889  -76 /*toYearTiny (2024)*/,
4890  3 /*inMonth*/,
4891  0 /*onDayOfWeek*/,
4892  10 /*onDayOfMonth*/,
4893  12 /*atTimeCode*/,
4894  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4895  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
4896  0 /*letterIndex ("")*/,
4897  },
4898  // Rule Morocco 2024 only - Apr 14 2:00 0 -
4899  {
4900  -76 /*fromYearTiny (2024)*/,
4901  -76 /*toYearTiny (2024)*/,
4902  4 /*inMonth*/,
4903  0 /*onDayOfWeek*/,
4904  14 /*onDayOfMonth*/,
4905  8 /*atTimeCode*/,
4906  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4907  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4908  0 /*letterIndex ("")*/,
4909  },
4910  // Rule Morocco 2025 only - Feb 23 3:00 -1:00 -
4911  {
4912  -75 /*fromYearTiny (2025)*/,
4913  -75 /*toYearTiny (2025)*/,
4914  2 /*inMonth*/,
4915  0 /*onDayOfWeek*/,
4916  23 /*onDayOfMonth*/,
4917  12 /*atTimeCode*/,
4918  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4919  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
4920  0 /*letterIndex ("")*/,
4921  },
4922  // Rule Morocco 2025 only - Apr 6 2:00 0 -
4923  {
4924  -75 /*fromYearTiny (2025)*/,
4925  -75 /*toYearTiny (2025)*/,
4926  4 /*inMonth*/,
4927  0 /*onDayOfWeek*/,
4928  6 /*onDayOfMonth*/,
4929  8 /*atTimeCode*/,
4930  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4931  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4932  0 /*letterIndex ("")*/,
4933  },
4934  // Rule Morocco 2026 only - Feb 15 3:00 -1:00 -
4935  {
4936  -74 /*fromYearTiny (2026)*/,
4937  -74 /*toYearTiny (2026)*/,
4938  2 /*inMonth*/,
4939  0 /*onDayOfWeek*/,
4940  15 /*onDayOfMonth*/,
4941  12 /*atTimeCode*/,
4942  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4943  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
4944  0 /*letterIndex ("")*/,
4945  },
4946  // Rule Morocco 2026 only - Mar 22 2:00 0 -
4947  {
4948  -74 /*fromYearTiny (2026)*/,
4949  -74 /*toYearTiny (2026)*/,
4950  3 /*inMonth*/,
4951  0 /*onDayOfWeek*/,
4952  22 /*onDayOfMonth*/,
4953  8 /*atTimeCode*/,
4954  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4955  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4956  0 /*letterIndex ("")*/,
4957  },
4958  // Rule Morocco 2027 only - Feb 7 3:00 -1:00 -
4959  {
4960  -73 /*fromYearTiny (2027)*/,
4961  -73 /*toYearTiny (2027)*/,
4962  2 /*inMonth*/,
4963  0 /*onDayOfWeek*/,
4964  7 /*onDayOfMonth*/,
4965  12 /*atTimeCode*/,
4966  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4967  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
4968  0 /*letterIndex ("")*/,
4969  },
4970  // Rule Morocco 2027 only - Mar 14 2:00 0 -
4971  {
4972  -73 /*fromYearTiny (2027)*/,
4973  -73 /*toYearTiny (2027)*/,
4974  3 /*inMonth*/,
4975  0 /*onDayOfWeek*/,
4976  14 /*onDayOfMonth*/,
4977  8 /*atTimeCode*/,
4978  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4979  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
4980  0 /*letterIndex ("")*/,
4981  },
4982  // Rule Morocco 2028 only - Jan 23 3:00 -1:00 -
4983  {
4984  -72 /*fromYearTiny (2028)*/,
4985  -72 /*toYearTiny (2028)*/,
4986  1 /*inMonth*/,
4987  0 /*onDayOfWeek*/,
4988  23 /*onDayOfMonth*/,
4989  12 /*atTimeCode*/,
4990  0 /*atTimeModifier (kSuffixW + minute=0)*/,
4991  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
4992  0 /*letterIndex ("")*/,
4993  },
4994  // Rule Morocco 2028 only - Mar 5 2:00 0 -
4995  {
4996  -72 /*fromYearTiny (2028)*/,
4997  -72 /*toYearTiny (2028)*/,
4998  3 /*inMonth*/,
4999  0 /*onDayOfWeek*/,
5000  5 /*onDayOfMonth*/,
5001  8 /*atTimeCode*/,
5002  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5003  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5004  0 /*letterIndex ("")*/,
5005  },
5006  // Rule Morocco 2029 only - Jan 14 3:00 -1:00 -
5007  {
5008  -71 /*fromYearTiny (2029)*/,
5009  -71 /*toYearTiny (2029)*/,
5010  1 /*inMonth*/,
5011  0 /*onDayOfWeek*/,
5012  14 /*onDayOfMonth*/,
5013  12 /*atTimeCode*/,
5014  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5015  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5016  0 /*letterIndex ("")*/,
5017  },
5018  // Rule Morocco 2029 only - Feb 18 2:00 0 -
5019  {
5020  -71 /*fromYearTiny (2029)*/,
5021  -71 /*toYearTiny (2029)*/,
5022  2 /*inMonth*/,
5023  0 /*onDayOfWeek*/,
5024  18 /*onDayOfMonth*/,
5025  8 /*atTimeCode*/,
5026  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5027  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5028  0 /*letterIndex ("")*/,
5029  },
5030  // Rule Morocco 2029 only - Dec 30 3:00 -1:00 -
5031  {
5032  -71 /*fromYearTiny (2029)*/,
5033  -71 /*toYearTiny (2029)*/,
5034  12 /*inMonth*/,
5035  0 /*onDayOfWeek*/,
5036  30 /*onDayOfMonth*/,
5037  12 /*atTimeCode*/,
5038  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5039  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5040  0 /*letterIndex ("")*/,
5041  },
5042  // Rule Morocco 2030 only - Feb 10 2:00 0 -
5043  {
5044  -70 /*fromYearTiny (2030)*/,
5045  -70 /*toYearTiny (2030)*/,
5046  2 /*inMonth*/,
5047  0 /*onDayOfWeek*/,
5048  10 /*onDayOfMonth*/,
5049  8 /*atTimeCode*/,
5050  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5051  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5052  0 /*letterIndex ("")*/,
5053  },
5054  // Rule Morocco 2030 only - Dec 22 3:00 -1:00 -
5055  {
5056  -70 /*fromYearTiny (2030)*/,
5057  -70 /*toYearTiny (2030)*/,
5058  12 /*inMonth*/,
5059  0 /*onDayOfWeek*/,
5060  22 /*onDayOfMonth*/,
5061  12 /*atTimeCode*/,
5062  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5063  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5064  0 /*letterIndex ("")*/,
5065  },
5066  // Rule Morocco 2031 only - Jan 26 2:00 0 -
5067  {
5068  -69 /*fromYearTiny (2031)*/,
5069  -69 /*toYearTiny (2031)*/,
5070  1 /*inMonth*/,
5071  0 /*onDayOfWeek*/,
5072  26 /*onDayOfMonth*/,
5073  8 /*atTimeCode*/,
5074  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5075  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5076  0 /*letterIndex ("")*/,
5077  },
5078  // Rule Morocco 2031 only - Dec 14 3:00 -1:00 -
5079  {
5080  -69 /*fromYearTiny (2031)*/,
5081  -69 /*toYearTiny (2031)*/,
5082  12 /*inMonth*/,
5083  0 /*onDayOfWeek*/,
5084  14 /*onDayOfMonth*/,
5085  12 /*atTimeCode*/,
5086  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5087  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5088  0 /*letterIndex ("")*/,
5089  },
5090  // Rule Morocco 2032 only - Jan 18 2:00 0 -
5091  {
5092  -68 /*fromYearTiny (2032)*/,
5093  -68 /*toYearTiny (2032)*/,
5094  1 /*inMonth*/,
5095  0 /*onDayOfWeek*/,
5096  18 /*onDayOfMonth*/,
5097  8 /*atTimeCode*/,
5098  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5099  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5100  0 /*letterIndex ("")*/,
5101  },
5102  // Rule Morocco 2032 only - Nov 28 3:00 -1:00 -
5103  {
5104  -68 /*fromYearTiny (2032)*/,
5105  -68 /*toYearTiny (2032)*/,
5106  11 /*inMonth*/,
5107  0 /*onDayOfWeek*/,
5108  28 /*onDayOfMonth*/,
5109  12 /*atTimeCode*/,
5110  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5111  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5112  0 /*letterIndex ("")*/,
5113  },
5114  // Rule Morocco 2033 only - Jan 9 2:00 0 -
5115  {
5116  -67 /*fromYearTiny (2033)*/,
5117  -67 /*toYearTiny (2033)*/,
5118  1 /*inMonth*/,
5119  0 /*onDayOfWeek*/,
5120  9 /*onDayOfMonth*/,
5121  8 /*atTimeCode*/,
5122  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5123  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5124  0 /*letterIndex ("")*/,
5125  },
5126  // Rule Morocco 2033 only - Nov 20 3:00 -1:00 -
5127  {
5128  -67 /*fromYearTiny (2033)*/,
5129  -67 /*toYearTiny (2033)*/,
5130  11 /*inMonth*/,
5131  0 /*onDayOfWeek*/,
5132  20 /*onDayOfMonth*/,
5133  12 /*atTimeCode*/,
5134  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5135  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5136  0 /*letterIndex ("")*/,
5137  },
5138  // Rule Morocco 2033 only - Dec 25 2:00 0 -
5139  {
5140  -67 /*fromYearTiny (2033)*/,
5141  -67 /*toYearTiny (2033)*/,
5142  12 /*inMonth*/,
5143  0 /*onDayOfWeek*/,
5144  25 /*onDayOfMonth*/,
5145  8 /*atTimeCode*/,
5146  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5147  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5148  0 /*letterIndex ("")*/,
5149  },
5150  // Rule Morocco 2034 only - Nov 5 3:00 -1:00 -
5151  {
5152  -66 /*fromYearTiny (2034)*/,
5153  -66 /*toYearTiny (2034)*/,
5154  11 /*inMonth*/,
5155  0 /*onDayOfWeek*/,
5156  5 /*onDayOfMonth*/,
5157  12 /*atTimeCode*/,
5158  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5159  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5160  0 /*letterIndex ("")*/,
5161  },
5162  // Rule Morocco 2034 only - Dec 17 2:00 0 -
5163  {
5164  -66 /*fromYearTiny (2034)*/,
5165  -66 /*toYearTiny (2034)*/,
5166  12 /*inMonth*/,
5167  0 /*onDayOfWeek*/,
5168  17 /*onDayOfMonth*/,
5169  8 /*atTimeCode*/,
5170  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5171  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5172  0 /*letterIndex ("")*/,
5173  },
5174  // Rule Morocco 2035 only - Oct 28 3:00 -1:00 -
5175  {
5176  -65 /*fromYearTiny (2035)*/,
5177  -65 /*toYearTiny (2035)*/,
5178  10 /*inMonth*/,
5179  0 /*onDayOfWeek*/,
5180  28 /*onDayOfMonth*/,
5181  12 /*atTimeCode*/,
5182  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5183  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5184  0 /*letterIndex ("")*/,
5185  },
5186  // Rule Morocco 2035 only - Dec 9 2:00 0 -
5187  {
5188  -65 /*fromYearTiny (2035)*/,
5189  -65 /*toYearTiny (2035)*/,
5190  12 /*inMonth*/,
5191  0 /*onDayOfWeek*/,
5192  9 /*onDayOfMonth*/,
5193  8 /*atTimeCode*/,
5194  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5195  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5196  0 /*letterIndex ("")*/,
5197  },
5198  // Rule Morocco 2036 only - Oct 19 3:00 -1:00 -
5199  {
5200  -64 /*fromYearTiny (2036)*/,
5201  -64 /*toYearTiny (2036)*/,
5202  10 /*inMonth*/,
5203  0 /*onDayOfWeek*/,
5204  19 /*onDayOfMonth*/,
5205  12 /*atTimeCode*/,
5206  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5207  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5208  0 /*letterIndex ("")*/,
5209  },
5210  // Rule Morocco 2036 only - Nov 23 2:00 0 -
5211  {
5212  -64 /*fromYearTiny (2036)*/,
5213  -64 /*toYearTiny (2036)*/,
5214  11 /*inMonth*/,
5215  0 /*onDayOfWeek*/,
5216  23 /*onDayOfMonth*/,
5217  8 /*atTimeCode*/,
5218  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5219  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5220  0 /*letterIndex ("")*/,
5221  },
5222  // Rule Morocco 2037 only - Oct 4 3:00 -1:00 -
5223  {
5224  -63 /*fromYearTiny (2037)*/,
5225  -63 /*toYearTiny (2037)*/,
5226  10 /*inMonth*/,
5227  0 /*onDayOfWeek*/,
5228  4 /*onDayOfMonth*/,
5229  12 /*atTimeCode*/,
5230  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5231  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5232  0 /*letterIndex ("")*/,
5233  },
5234  // Rule Morocco 2037 only - Nov 15 2:00 0 -
5235  {
5236  -63 /*fromYearTiny (2037)*/,
5237  -63 /*toYearTiny (2037)*/,
5238  11 /*inMonth*/,
5239  0 /*onDayOfWeek*/,
5240  15 /*onDayOfMonth*/,
5241  8 /*atTimeCode*/,
5242  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5243  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5244  0 /*letterIndex ("")*/,
5245  },
5246  // Rule Morocco 2038 only - Sep 26 3:00 -1:00 -
5247  {
5248  -62 /*fromYearTiny (2038)*/,
5249  -62 /*toYearTiny (2038)*/,
5250  9 /*inMonth*/,
5251  0 /*onDayOfWeek*/,
5252  26 /*onDayOfMonth*/,
5253  12 /*atTimeCode*/,
5254  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5255  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5256  0 /*letterIndex ("")*/,
5257  },
5258  // Rule Morocco 2038 only - Oct 31 2:00 0 -
5259  {
5260  -62 /*fromYearTiny (2038)*/,
5261  -62 /*toYearTiny (2038)*/,
5262  10 /*inMonth*/,
5263  0 /*onDayOfWeek*/,
5264  31 /*onDayOfMonth*/,
5265  8 /*atTimeCode*/,
5266  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5267  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5268  0 /*letterIndex ("")*/,
5269  },
5270  // Rule Morocco 2039 only - Sep 18 3:00 -1:00 -
5271  {
5272  -61 /*fromYearTiny (2039)*/,
5273  -61 /*toYearTiny (2039)*/,
5274  9 /*inMonth*/,
5275  0 /*onDayOfWeek*/,
5276  18 /*onDayOfMonth*/,
5277  12 /*atTimeCode*/,
5278  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5279  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5280  0 /*letterIndex ("")*/,
5281  },
5282  // Rule Morocco 2039 only - Oct 23 2:00 0 -
5283  {
5284  -61 /*fromYearTiny (2039)*/,
5285  -61 /*toYearTiny (2039)*/,
5286  10 /*inMonth*/,
5287  0 /*onDayOfWeek*/,
5288  23 /*onDayOfMonth*/,
5289  8 /*atTimeCode*/,
5290  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5291  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5292  0 /*letterIndex ("")*/,
5293  },
5294  // Rule Morocco 2040 only - Sep 2 3:00 -1:00 -
5295  {
5296  -60 /*fromYearTiny (2040)*/,
5297  -60 /*toYearTiny (2040)*/,
5298  9 /*inMonth*/,
5299  0 /*onDayOfWeek*/,
5300  2 /*onDayOfMonth*/,
5301  12 /*atTimeCode*/,
5302  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5303  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5304  0 /*letterIndex ("")*/,
5305  },
5306  // Rule Morocco 2040 only - Oct 14 2:00 0 -
5307  {
5308  -60 /*fromYearTiny (2040)*/,
5309  -60 /*toYearTiny (2040)*/,
5310  10 /*inMonth*/,
5311  0 /*onDayOfWeek*/,
5312  14 /*onDayOfMonth*/,
5313  8 /*atTimeCode*/,
5314  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5315  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5316  0 /*letterIndex ("")*/,
5317  },
5318  // Rule Morocco 2041 only - Aug 25 3:00 -1:00 -
5319  {
5320  -59 /*fromYearTiny (2041)*/,
5321  -59 /*toYearTiny (2041)*/,
5322  8 /*inMonth*/,
5323  0 /*onDayOfWeek*/,
5324  25 /*onDayOfMonth*/,
5325  12 /*atTimeCode*/,
5326  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5327  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5328  0 /*letterIndex ("")*/,
5329  },
5330  // Rule Morocco 2041 only - Sep 29 2:00 0 -
5331  {
5332  -59 /*fromYearTiny (2041)*/,
5333  -59 /*toYearTiny (2041)*/,
5334  9 /*inMonth*/,
5335  0 /*onDayOfWeek*/,
5336  29 /*onDayOfMonth*/,
5337  8 /*atTimeCode*/,
5338  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5339  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5340  0 /*letterIndex ("")*/,
5341  },
5342  // Rule Morocco 2042 only - Aug 10 3:00 -1:00 -
5343  {
5344  -58 /*fromYearTiny (2042)*/,
5345  -58 /*toYearTiny (2042)*/,
5346  8 /*inMonth*/,
5347  0 /*onDayOfWeek*/,
5348  10 /*onDayOfMonth*/,
5349  12 /*atTimeCode*/,
5350  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5351  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5352  0 /*letterIndex ("")*/,
5353  },
5354  // Rule Morocco 2042 only - Sep 21 2:00 0 -
5355  {
5356  -58 /*fromYearTiny (2042)*/,
5357  -58 /*toYearTiny (2042)*/,
5358  9 /*inMonth*/,
5359  0 /*onDayOfWeek*/,
5360  21 /*onDayOfMonth*/,
5361  8 /*atTimeCode*/,
5362  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5363  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5364  0 /*letterIndex ("")*/,
5365  },
5366  // Rule Morocco 2043 only - Aug 2 3:00 -1:00 -
5367  {
5368  -57 /*fromYearTiny (2043)*/,
5369  -57 /*toYearTiny (2043)*/,
5370  8 /*inMonth*/,
5371  0 /*onDayOfWeek*/,
5372  2 /*onDayOfMonth*/,
5373  12 /*atTimeCode*/,
5374  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5375  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5376  0 /*letterIndex ("")*/,
5377  },
5378  // Rule Morocco 2043 only - Sep 13 2:00 0 -
5379  {
5380  -57 /*fromYearTiny (2043)*/,
5381  -57 /*toYearTiny (2043)*/,
5382  9 /*inMonth*/,
5383  0 /*onDayOfWeek*/,
5384  13 /*onDayOfMonth*/,
5385  8 /*atTimeCode*/,
5386  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5387  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5388  0 /*letterIndex ("")*/,
5389  },
5390  // Rule Morocco 2044 only - Jul 24 3:00 -1:00 -
5391  {
5392  -56 /*fromYearTiny (2044)*/,
5393  -56 /*toYearTiny (2044)*/,
5394  7 /*inMonth*/,
5395  0 /*onDayOfWeek*/,
5396  24 /*onDayOfMonth*/,
5397  12 /*atTimeCode*/,
5398  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5399  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5400  0 /*letterIndex ("")*/,
5401  },
5402  // Rule Morocco 2044 only - Aug 28 2:00 0 -
5403  {
5404  -56 /*fromYearTiny (2044)*/,
5405  -56 /*toYearTiny (2044)*/,
5406  8 /*inMonth*/,
5407  0 /*onDayOfWeek*/,
5408  28 /*onDayOfMonth*/,
5409  8 /*atTimeCode*/,
5410  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5411  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5412  0 /*letterIndex ("")*/,
5413  },
5414  // Rule Morocco 2045 only - Jul 9 3:00 -1:00 -
5415  {
5416  -55 /*fromYearTiny (2045)*/,
5417  -55 /*toYearTiny (2045)*/,
5418  7 /*inMonth*/,
5419  0 /*onDayOfWeek*/,
5420  9 /*onDayOfMonth*/,
5421  12 /*atTimeCode*/,
5422  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5423  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5424  0 /*letterIndex ("")*/,
5425  },
5426  // Rule Morocco 2045 only - Aug 20 2:00 0 -
5427  {
5428  -55 /*fromYearTiny (2045)*/,
5429  -55 /*toYearTiny (2045)*/,
5430  8 /*inMonth*/,
5431  0 /*onDayOfWeek*/,
5432  20 /*onDayOfMonth*/,
5433  8 /*atTimeCode*/,
5434  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5435  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5436  0 /*letterIndex ("")*/,
5437  },
5438  // Rule Morocco 2046 only - Jul 1 3:00 -1:00 -
5439  {
5440  -54 /*fromYearTiny (2046)*/,
5441  -54 /*toYearTiny (2046)*/,
5442  7 /*inMonth*/,
5443  0 /*onDayOfWeek*/,
5444  1 /*onDayOfMonth*/,
5445  12 /*atTimeCode*/,
5446  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5447  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5448  0 /*letterIndex ("")*/,
5449  },
5450  // Rule Morocco 2046 only - Aug 5 2:00 0 -
5451  {
5452  -54 /*fromYearTiny (2046)*/,
5453  -54 /*toYearTiny (2046)*/,
5454  8 /*inMonth*/,
5455  0 /*onDayOfWeek*/,
5456  5 /*onDayOfMonth*/,
5457  8 /*atTimeCode*/,
5458  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5459  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5460  0 /*letterIndex ("")*/,
5461  },
5462  // Rule Morocco 2047 only - Jun 23 3:00 -1:00 -
5463  {
5464  -53 /*fromYearTiny (2047)*/,
5465  -53 /*toYearTiny (2047)*/,
5466  6 /*inMonth*/,
5467  0 /*onDayOfWeek*/,
5468  23 /*onDayOfMonth*/,
5469  12 /*atTimeCode*/,
5470  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5471  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5472  0 /*letterIndex ("")*/,
5473  },
5474  // Rule Morocco 2047 only - Jul 28 2:00 0 -
5475  {
5476  -53 /*fromYearTiny (2047)*/,
5477  -53 /*toYearTiny (2047)*/,
5478  7 /*inMonth*/,
5479  0 /*onDayOfWeek*/,
5480  28 /*onDayOfMonth*/,
5481  8 /*atTimeCode*/,
5482  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5483  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5484  0 /*letterIndex ("")*/,
5485  },
5486  // Rule Morocco 2048 only - Jun 7 3:00 -1:00 -
5487  {
5488  -52 /*fromYearTiny (2048)*/,
5489  -52 /*toYearTiny (2048)*/,
5490  6 /*inMonth*/,
5491  0 /*onDayOfWeek*/,
5492  7 /*onDayOfMonth*/,
5493  12 /*atTimeCode*/,
5494  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5495  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5496  0 /*letterIndex ("")*/,
5497  },
5498  // Rule Morocco 2048 only - Jul 19 2:00 0 -
5499  {
5500  -52 /*fromYearTiny (2048)*/,
5501  -52 /*toYearTiny (2048)*/,
5502  7 /*inMonth*/,
5503  0 /*onDayOfWeek*/,
5504  19 /*onDayOfMonth*/,
5505  8 /*atTimeCode*/,
5506  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5507  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5508  0 /*letterIndex ("")*/,
5509  },
5510  // Rule Morocco 2049 only - May 30 3:00 -1:00 -
5511  {
5512  -51 /*fromYearTiny (2049)*/,
5513  -51 /*toYearTiny (2049)*/,
5514  5 /*inMonth*/,
5515  0 /*onDayOfWeek*/,
5516  30 /*onDayOfMonth*/,
5517  12 /*atTimeCode*/,
5518  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5519  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5520  0 /*letterIndex ("")*/,
5521  },
5522  // Rule Morocco 2049 only - Jul 4 2:00 0 -
5523  {
5524  -51 /*fromYearTiny (2049)*/,
5525  -51 /*toYearTiny (2049)*/,
5526  7 /*inMonth*/,
5527  0 /*onDayOfWeek*/,
5528  4 /*onDayOfMonth*/,
5529  8 /*atTimeCode*/,
5530  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5531  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5532  0 /*letterIndex ("")*/,
5533  },
5534  // Rule Morocco 2050 only - May 15 3:00 -1:00 -
5535  {
5536  -50 /*fromYearTiny (2050)*/,
5537  -50 /*toYearTiny (2050)*/,
5538  5 /*inMonth*/,
5539  0 /*onDayOfWeek*/,
5540  15 /*onDayOfMonth*/,
5541  12 /*atTimeCode*/,
5542  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5543  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5544  0 /*letterIndex ("")*/,
5545  },
5546  // Rule Morocco 2050 only - Jun 26 2:00 0 -
5547  {
5548  -50 /*fromYearTiny (2050)*/,
5549  -50 /*toYearTiny (2050)*/,
5550  6 /*inMonth*/,
5551  0 /*onDayOfWeek*/,
5552  26 /*onDayOfMonth*/,
5553  8 /*atTimeCode*/,
5554  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5555  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5556  0 /*letterIndex ("")*/,
5557  },
5558  // Rule Morocco 2051 only - May 7 3:00 -1:00 -
5559  {
5560  -49 /*fromYearTiny (2051)*/,
5561  -49 /*toYearTiny (2051)*/,
5562  5 /*inMonth*/,
5563  0 /*onDayOfWeek*/,
5564  7 /*onDayOfMonth*/,
5565  12 /*atTimeCode*/,
5566  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5567  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5568  0 /*letterIndex ("")*/,
5569  },
5570  // Rule Morocco 2051 only - Jun 18 2:00 0 -
5571  {
5572  -49 /*fromYearTiny (2051)*/,
5573  -49 /*toYearTiny (2051)*/,
5574  6 /*inMonth*/,
5575  0 /*onDayOfWeek*/,
5576  18 /*onDayOfMonth*/,
5577  8 /*atTimeCode*/,
5578  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5579  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5580  0 /*letterIndex ("")*/,
5581  },
5582  // Rule Morocco 2052 only - Apr 28 3:00 -1:00 -
5583  {
5584  -48 /*fromYearTiny (2052)*/,
5585  -48 /*toYearTiny (2052)*/,
5586  4 /*inMonth*/,
5587  0 /*onDayOfWeek*/,
5588  28 /*onDayOfMonth*/,
5589  12 /*atTimeCode*/,
5590  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5591  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5592  0 /*letterIndex ("")*/,
5593  },
5594  // Rule Morocco 2052 only - Jun 2 2:00 0 -
5595  {
5596  -48 /*fromYearTiny (2052)*/,
5597  -48 /*toYearTiny (2052)*/,
5598  6 /*inMonth*/,
5599  0 /*onDayOfWeek*/,
5600  2 /*onDayOfMonth*/,
5601  8 /*atTimeCode*/,
5602  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5603  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5604  0 /*letterIndex ("")*/,
5605  },
5606  // Rule Morocco 2053 only - Apr 13 3:00 -1:00 -
5607  {
5608  -47 /*fromYearTiny (2053)*/,
5609  -47 /*toYearTiny (2053)*/,
5610  4 /*inMonth*/,
5611  0 /*onDayOfWeek*/,
5612  13 /*onDayOfMonth*/,
5613  12 /*atTimeCode*/,
5614  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5615  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5616  0 /*letterIndex ("")*/,
5617  },
5618  // Rule Morocco 2053 only - May 25 2:00 0 -
5619  {
5620  -47 /*fromYearTiny (2053)*/,
5621  -47 /*toYearTiny (2053)*/,
5622  5 /*inMonth*/,
5623  0 /*onDayOfWeek*/,
5624  25 /*onDayOfMonth*/,
5625  8 /*atTimeCode*/,
5626  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5627  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5628  0 /*letterIndex ("")*/,
5629  },
5630  // Rule Morocco 2054 only - Apr 5 3:00 -1:00 -
5631  {
5632  -46 /*fromYearTiny (2054)*/,
5633  -46 /*toYearTiny (2054)*/,
5634  4 /*inMonth*/,
5635  0 /*onDayOfWeek*/,
5636  5 /*onDayOfMonth*/,
5637  12 /*atTimeCode*/,
5638  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5639  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5640  0 /*letterIndex ("")*/,
5641  },
5642  // Rule Morocco 2054 only - May 10 2:00 0 -
5643  {
5644  -46 /*fromYearTiny (2054)*/,
5645  -46 /*toYearTiny (2054)*/,
5646  5 /*inMonth*/,
5647  0 /*onDayOfWeek*/,
5648  10 /*onDayOfMonth*/,
5649  8 /*atTimeCode*/,
5650  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5651  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5652  0 /*letterIndex ("")*/,
5653  },
5654  // Rule Morocco 2055 only - Mar 28 3:00 -1:00 -
5655  {
5656  -45 /*fromYearTiny (2055)*/,
5657  -45 /*toYearTiny (2055)*/,
5658  3 /*inMonth*/,
5659  0 /*onDayOfWeek*/,
5660  28 /*onDayOfMonth*/,
5661  12 /*atTimeCode*/,
5662  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5663  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5664  0 /*letterIndex ("")*/,
5665  },
5666  // Rule Morocco 2055 only - May 2 2:00 0 -
5667  {
5668  -45 /*fromYearTiny (2055)*/,
5669  -45 /*toYearTiny (2055)*/,
5670  5 /*inMonth*/,
5671  0 /*onDayOfWeek*/,
5672  2 /*onDayOfMonth*/,
5673  8 /*atTimeCode*/,
5674  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5675  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5676  0 /*letterIndex ("")*/,
5677  },
5678  // Rule Morocco 2056 only - Mar 12 3:00 -1:00 -
5679  {
5680  -44 /*fromYearTiny (2056)*/,
5681  -44 /*toYearTiny (2056)*/,
5682  3 /*inMonth*/,
5683  0 /*onDayOfWeek*/,
5684  12 /*onDayOfMonth*/,
5685  12 /*atTimeCode*/,
5686  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5687  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5688  0 /*letterIndex ("")*/,
5689  },
5690  // Rule Morocco 2056 only - Apr 23 2:00 0 -
5691  {
5692  -44 /*fromYearTiny (2056)*/,
5693  -44 /*toYearTiny (2056)*/,
5694  4 /*inMonth*/,
5695  0 /*onDayOfWeek*/,
5696  23 /*onDayOfMonth*/,
5697  8 /*atTimeCode*/,
5698  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5699  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5700  0 /*letterIndex ("")*/,
5701  },
5702  // Rule Morocco 2057 only - Mar 4 3:00 -1:00 -
5703  {
5704  -43 /*fromYearTiny (2057)*/,
5705  -43 /*toYearTiny (2057)*/,
5706  3 /*inMonth*/,
5707  0 /*onDayOfWeek*/,
5708  4 /*onDayOfMonth*/,
5709  12 /*atTimeCode*/,
5710  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5711  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5712  0 /*letterIndex ("")*/,
5713  },
5714  // Rule Morocco 2057 only - Apr 8 2:00 0 -
5715  {
5716  -43 /*fromYearTiny (2057)*/,
5717  -43 /*toYearTiny (2057)*/,
5718  4 /*inMonth*/,
5719  0 /*onDayOfWeek*/,
5720  8 /*onDayOfMonth*/,
5721  8 /*atTimeCode*/,
5722  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5723  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5724  0 /*letterIndex ("")*/,
5725  },
5726  // Rule Morocco 2058 only - Feb 17 3:00 -1:00 -
5727  {
5728  -42 /*fromYearTiny (2058)*/,
5729  -42 /*toYearTiny (2058)*/,
5730  2 /*inMonth*/,
5731  0 /*onDayOfWeek*/,
5732  17 /*onDayOfMonth*/,
5733  12 /*atTimeCode*/,
5734  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5735  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5736  0 /*letterIndex ("")*/,
5737  },
5738  // Rule Morocco 2058 only - Mar 31 2:00 0 -
5739  {
5740  -42 /*fromYearTiny (2058)*/,
5741  -42 /*toYearTiny (2058)*/,
5742  3 /*inMonth*/,
5743  0 /*onDayOfWeek*/,
5744  31 /*onDayOfMonth*/,
5745  8 /*atTimeCode*/,
5746  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5747  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5748  0 /*letterIndex ("")*/,
5749  },
5750  // Rule Morocco 2059 only - Feb 9 3:00 -1:00 -
5751  {
5752  -41 /*fromYearTiny (2059)*/,
5753  -41 /*toYearTiny (2059)*/,
5754  2 /*inMonth*/,
5755  0 /*onDayOfWeek*/,
5756  9 /*onDayOfMonth*/,
5757  12 /*atTimeCode*/,
5758  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5759  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5760  0 /*letterIndex ("")*/,
5761  },
5762  // Rule Morocco 2059 only - Mar 23 2:00 0 -
5763  {
5764  -41 /*fromYearTiny (2059)*/,
5765  -41 /*toYearTiny (2059)*/,
5766  3 /*inMonth*/,
5767  0 /*onDayOfWeek*/,
5768  23 /*onDayOfMonth*/,
5769  8 /*atTimeCode*/,
5770  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5771  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5772  0 /*letterIndex ("")*/,
5773  },
5774  // Rule Morocco 2060 only - Feb 1 3:00 -1:00 -
5775  {
5776  -40 /*fromYearTiny (2060)*/,
5777  -40 /*toYearTiny (2060)*/,
5778  2 /*inMonth*/,
5779  0 /*onDayOfWeek*/,
5780  1 /*onDayOfMonth*/,
5781  12 /*atTimeCode*/,
5782  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5783  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5784  0 /*letterIndex ("")*/,
5785  },
5786  // Rule Morocco 2060 only - Mar 7 2:00 0 -
5787  {
5788  -40 /*fromYearTiny (2060)*/,
5789  -40 /*toYearTiny (2060)*/,
5790  3 /*inMonth*/,
5791  0 /*onDayOfWeek*/,
5792  7 /*onDayOfMonth*/,
5793  8 /*atTimeCode*/,
5794  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5795  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5796  0 /*letterIndex ("")*/,
5797  },
5798  // Rule Morocco 2061 only - Jan 16 3:00 -1:00 -
5799  {
5800  -39 /*fromYearTiny (2061)*/,
5801  -39 /*toYearTiny (2061)*/,
5802  1 /*inMonth*/,
5803  0 /*onDayOfWeek*/,
5804  16 /*onDayOfMonth*/,
5805  12 /*atTimeCode*/,
5806  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5807  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5808  0 /*letterIndex ("")*/,
5809  },
5810  // Rule Morocco 2061 only - Feb 27 2:00 0 -
5811  {
5812  -39 /*fromYearTiny (2061)*/,
5813  -39 /*toYearTiny (2061)*/,
5814  2 /*inMonth*/,
5815  0 /*onDayOfWeek*/,
5816  27 /*onDayOfMonth*/,
5817  8 /*atTimeCode*/,
5818  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5819  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5820  0 /*letterIndex ("")*/,
5821  },
5822  // Rule Morocco 2062 only - Jan 8 3:00 -1:00 -
5823  {
5824  -38 /*fromYearTiny (2062)*/,
5825  -38 /*toYearTiny (2062)*/,
5826  1 /*inMonth*/,
5827  0 /*onDayOfWeek*/,
5828  8 /*onDayOfMonth*/,
5829  12 /*atTimeCode*/,
5830  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5831  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5832  0 /*letterIndex ("")*/,
5833  },
5834  // Rule Morocco 2062 only - Feb 12 2:00 0 -
5835  {
5836  -38 /*fromYearTiny (2062)*/,
5837  -38 /*toYearTiny (2062)*/,
5838  2 /*inMonth*/,
5839  0 /*onDayOfWeek*/,
5840  12 /*onDayOfMonth*/,
5841  8 /*atTimeCode*/,
5842  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5843  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5844  0 /*letterIndex ("")*/,
5845  },
5846  // Rule Morocco 2062 only - Dec 31 3:00 -1:00 -
5847  {
5848  -38 /*fromYearTiny (2062)*/,
5849  -38 /*toYearTiny (2062)*/,
5850  12 /*inMonth*/,
5851  0 /*onDayOfWeek*/,
5852  31 /*onDayOfMonth*/,
5853  12 /*atTimeCode*/,
5854  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5855  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5856  0 /*letterIndex ("")*/,
5857  },
5858  // Rule Morocco 2063 only - Feb 4 2:00 0 -
5859  {
5860  -37 /*fromYearTiny (2063)*/,
5861  -37 /*toYearTiny (2063)*/,
5862  2 /*inMonth*/,
5863  0 /*onDayOfWeek*/,
5864  4 /*onDayOfMonth*/,
5865  8 /*atTimeCode*/,
5866  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5867  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5868  0 /*letterIndex ("")*/,
5869  },
5870  // Rule Morocco 2063 only - Dec 16 3:00 -1:00 -
5871  {
5872  -37 /*fromYearTiny (2063)*/,
5873  -37 /*toYearTiny (2063)*/,
5874  12 /*inMonth*/,
5875  0 /*onDayOfWeek*/,
5876  16 /*onDayOfMonth*/,
5877  12 /*atTimeCode*/,
5878  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5879  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5880  0 /*letterIndex ("")*/,
5881  },
5882  // Rule Morocco 2064 only - Jan 27 2:00 0 -
5883  {
5884  -36 /*fromYearTiny (2064)*/,
5885  -36 /*toYearTiny (2064)*/,
5886  1 /*inMonth*/,
5887  0 /*onDayOfWeek*/,
5888  27 /*onDayOfMonth*/,
5889  8 /*atTimeCode*/,
5890  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5891  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5892  0 /*letterIndex ("")*/,
5893  },
5894  // Rule Morocco 2064 only - Dec 7 3:00 -1:00 -
5895  {
5896  -36 /*fromYearTiny (2064)*/,
5897  -36 /*toYearTiny (2064)*/,
5898  12 /*inMonth*/,
5899  0 /*onDayOfWeek*/,
5900  7 /*onDayOfMonth*/,
5901  12 /*atTimeCode*/,
5902  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5903  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5904  0 /*letterIndex ("")*/,
5905  },
5906  // Rule Morocco 2065 only - Jan 11 2:00 0 -
5907  {
5908  -35 /*fromYearTiny (2065)*/,
5909  -35 /*toYearTiny (2065)*/,
5910  1 /*inMonth*/,
5911  0 /*onDayOfWeek*/,
5912  11 /*onDayOfMonth*/,
5913  8 /*atTimeCode*/,
5914  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5915  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5916  0 /*letterIndex ("")*/,
5917  },
5918  // Rule Morocco 2065 only - Nov 22 3:00 -1:00 -
5919  {
5920  -35 /*fromYearTiny (2065)*/,
5921  -35 /*toYearTiny (2065)*/,
5922  11 /*inMonth*/,
5923  0 /*onDayOfWeek*/,
5924  22 /*onDayOfMonth*/,
5925  12 /*atTimeCode*/,
5926  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5927  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5928  0 /*letterIndex ("")*/,
5929  },
5930  // Rule Morocco 2066 only - Jan 3 2:00 0 -
5931  {
5932  -34 /*fromYearTiny (2066)*/,
5933  -34 /*toYearTiny (2066)*/,
5934  1 /*inMonth*/,
5935  0 /*onDayOfWeek*/,
5936  3 /*onDayOfMonth*/,
5937  8 /*atTimeCode*/,
5938  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5939  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5940  0 /*letterIndex ("")*/,
5941  },
5942  // Rule Morocco 2066 only - Nov 14 3:00 -1:00 -
5943  {
5944  -34 /*fromYearTiny (2066)*/,
5945  -34 /*toYearTiny (2066)*/,
5946  11 /*inMonth*/,
5947  0 /*onDayOfWeek*/,
5948  14 /*onDayOfMonth*/,
5949  12 /*atTimeCode*/,
5950  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5951  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5952  0 /*letterIndex ("")*/,
5953  },
5954  // Rule Morocco 2066 only - Dec 26 2:00 0 -
5955  {
5956  -34 /*fromYearTiny (2066)*/,
5957  -34 /*toYearTiny (2066)*/,
5958  12 /*inMonth*/,
5959  0 /*onDayOfWeek*/,
5960  26 /*onDayOfMonth*/,
5961  8 /*atTimeCode*/,
5962  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5963  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5964  0 /*letterIndex ("")*/,
5965  },
5966  // Rule Morocco 2067 only - Nov 6 3:00 -1:00 -
5967  {
5968  -33 /*fromYearTiny (2067)*/,
5969  -33 /*toYearTiny (2067)*/,
5970  11 /*inMonth*/,
5971  0 /*onDayOfWeek*/,
5972  6 /*onDayOfMonth*/,
5973  12 /*atTimeCode*/,
5974  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5975  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
5976  0 /*letterIndex ("")*/,
5977  },
5978  // Rule Morocco 2067 only - Dec 11 2:00 0 -
5979  {
5980  -33 /*fromYearTiny (2067)*/,
5981  -33 /*toYearTiny (2067)*/,
5982  12 /*inMonth*/,
5983  0 /*onDayOfWeek*/,
5984  11 /*onDayOfMonth*/,
5985  8 /*atTimeCode*/,
5986  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5987  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
5988  0 /*letterIndex ("")*/,
5989  },
5990  // Rule Morocco 2068 only - Oct 21 3:00 -1:00 -
5991  {
5992  -32 /*fromYearTiny (2068)*/,
5993  -32 /*toYearTiny (2068)*/,
5994  10 /*inMonth*/,
5995  0 /*onDayOfWeek*/,
5996  21 /*onDayOfMonth*/,
5997  12 /*atTimeCode*/,
5998  0 /*atTimeModifier (kSuffixW + minute=0)*/,
5999  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
6000  0 /*letterIndex ("")*/,
6001  },
6002  // Rule Morocco 2068 only - Dec 2 2:00 0 -
6003  {
6004  -32 /*fromYearTiny (2068)*/,
6005  -32 /*toYearTiny (2068)*/,
6006  12 /*inMonth*/,
6007  0 /*onDayOfWeek*/,
6008  2 /*onDayOfMonth*/,
6009  8 /*atTimeCode*/,
6010  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6011  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6012  0 /*letterIndex ("")*/,
6013  },
6014  // Rule Morocco 2069 only - Oct 13 3:00 -1:00 -
6015  {
6016  -31 /*fromYearTiny (2069)*/,
6017  -31 /*toYearTiny (2069)*/,
6018  10 /*inMonth*/,
6019  0 /*onDayOfWeek*/,
6020  13 /*onDayOfMonth*/,
6021  12 /*atTimeCode*/,
6022  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6023  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
6024  0 /*letterIndex ("")*/,
6025  },
6026  // Rule Morocco 2069 only - Nov 17 2:00 0 -
6027  {
6028  -31 /*fromYearTiny (2069)*/,
6029  -31 /*toYearTiny (2069)*/,
6030  11 /*inMonth*/,
6031  0 /*onDayOfWeek*/,
6032  17 /*onDayOfMonth*/,
6033  8 /*atTimeCode*/,
6034  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6035  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6036  0 /*letterIndex ("")*/,
6037  },
6038  // Rule Morocco 2070 only - Oct 5 3:00 -1:00 -
6039  {
6040  -30 /*fromYearTiny (2070)*/,
6041  -30 /*toYearTiny (2070)*/,
6042  10 /*inMonth*/,
6043  0 /*onDayOfWeek*/,
6044  5 /*onDayOfMonth*/,
6045  12 /*atTimeCode*/,
6046  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6047  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
6048  0 /*letterIndex ("")*/,
6049  },
6050  // Rule Morocco 2070 only - Nov 9 2:00 0 -
6051  {
6052  -30 /*fromYearTiny (2070)*/,
6053  -30 /*toYearTiny (2070)*/,
6054  11 /*inMonth*/,
6055  0 /*onDayOfWeek*/,
6056  9 /*onDayOfMonth*/,
6057  8 /*atTimeCode*/,
6058  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6059  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6060  0 /*letterIndex ("")*/,
6061  },
6062  // Rule Morocco 2071 only - Sep 20 3:00 -1:00 -
6063  {
6064  -29 /*fromYearTiny (2071)*/,
6065  -29 /*toYearTiny (2071)*/,
6066  9 /*inMonth*/,
6067  0 /*onDayOfWeek*/,
6068  20 /*onDayOfMonth*/,
6069  12 /*atTimeCode*/,
6070  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6071  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
6072  0 /*letterIndex ("")*/,
6073  },
6074  // Rule Morocco 2071 only - Nov 1 2:00 0 -
6075  {
6076  -29 /*fromYearTiny (2071)*/,
6077  -29 /*toYearTiny (2071)*/,
6078  11 /*inMonth*/,
6079  0 /*onDayOfWeek*/,
6080  1 /*onDayOfMonth*/,
6081  8 /*atTimeCode*/,
6082  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6083  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6084  0 /*letterIndex ("")*/,
6085  },
6086  // Rule Morocco 2072 only - Sep 11 3:00 -1:00 -
6087  {
6088  -28 /*fromYearTiny (2072)*/,
6089  -28 /*toYearTiny (2072)*/,
6090  9 /*inMonth*/,
6091  0 /*onDayOfWeek*/,
6092  11 /*onDayOfMonth*/,
6093  12 /*atTimeCode*/,
6094  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6095  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
6096  0 /*letterIndex ("")*/,
6097  },
6098  // Rule Morocco 2072 only - Oct 16 2:00 0 -
6099  {
6100  -28 /*fromYearTiny (2072)*/,
6101  -28 /*toYearTiny (2072)*/,
6102  10 /*inMonth*/,
6103  0 /*onDayOfWeek*/,
6104  16 /*onDayOfMonth*/,
6105  8 /*atTimeCode*/,
6106  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6107  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6108  0 /*letterIndex ("")*/,
6109  },
6110  // Rule Morocco 2073 only - Aug 27 3:00 -1:00 -
6111  {
6112  -27 /*fromYearTiny (2073)*/,
6113  -27 /*toYearTiny (2073)*/,
6114  8 /*inMonth*/,
6115  0 /*onDayOfWeek*/,
6116  27 /*onDayOfMonth*/,
6117  12 /*atTimeCode*/,
6118  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6119  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
6120  0 /*letterIndex ("")*/,
6121  },
6122  // Rule Morocco 2073 only - Oct 8 2:00 0 -
6123  {
6124  -27 /*fromYearTiny (2073)*/,
6125  -27 /*toYearTiny (2073)*/,
6126  10 /*inMonth*/,
6127  0 /*onDayOfWeek*/,
6128  8 /*onDayOfMonth*/,
6129  8 /*atTimeCode*/,
6130  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6131  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6132  0 /*letterIndex ("")*/,
6133  },
6134  // Rule Morocco 2074 only - Aug 19 3:00 -1:00 -
6135  {
6136  -26 /*fromYearTiny (2074)*/,
6137  -26 /*toYearTiny (2074)*/,
6138  8 /*inMonth*/,
6139  0 /*onDayOfWeek*/,
6140  19 /*onDayOfMonth*/,
6141  12 /*atTimeCode*/,
6142  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6143  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
6144  0 /*letterIndex ("")*/,
6145  },
6146  // Rule Morocco 2074 only - Sep 30 2:00 0 -
6147  {
6148  -26 /*fromYearTiny (2074)*/,
6149  -26 /*toYearTiny (2074)*/,
6150  9 /*inMonth*/,
6151  0 /*onDayOfWeek*/,
6152  30 /*onDayOfMonth*/,
6153  8 /*atTimeCode*/,
6154  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6155  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6156  0 /*letterIndex ("")*/,
6157  },
6158  // Rule Morocco 2075 only - Aug 11 3:00 -1:00 -
6159  {
6160  -25 /*fromYearTiny (2075)*/,
6161  -25 /*toYearTiny (2075)*/,
6162  8 /*inMonth*/,
6163  0 /*onDayOfWeek*/,
6164  11 /*onDayOfMonth*/,
6165  12 /*atTimeCode*/,
6166  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6167  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
6168  0 /*letterIndex ("")*/,
6169  },
6170  // Rule Morocco 2075 only - Sep 15 2:00 0 -
6171  {
6172  -25 /*fromYearTiny (2075)*/,
6173  -25 /*toYearTiny (2075)*/,
6174  9 /*inMonth*/,
6175  0 /*onDayOfWeek*/,
6176  15 /*onDayOfMonth*/,
6177  8 /*atTimeCode*/,
6178  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6179  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6180  0 /*letterIndex ("")*/,
6181  },
6182  // Rule Morocco 2076 only - Jul 26 3:00 -1:00 -
6183  {
6184  -24 /*fromYearTiny (2076)*/,
6185  -24 /*toYearTiny (2076)*/,
6186  7 /*inMonth*/,
6187  0 /*onDayOfWeek*/,
6188  26 /*onDayOfMonth*/,
6189  12 /*atTimeCode*/,
6190  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6191  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
6192  0 /*letterIndex ("")*/,
6193  },
6194  // Rule Morocco 2076 only - Sep 6 2:00 0 -
6195  {
6196  -24 /*fromYearTiny (2076)*/,
6197  -24 /*toYearTiny (2076)*/,
6198  9 /*inMonth*/,
6199  0 /*onDayOfWeek*/,
6200  6 /*onDayOfMonth*/,
6201  8 /*atTimeCode*/,
6202  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6203  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6204  0 /*letterIndex ("")*/,
6205  },
6206  // Rule Morocco 2077 only - Jul 18 3:00 -1:00 -
6207  {
6208  -23 /*fromYearTiny (2077)*/,
6209  -23 /*toYearTiny (2077)*/,
6210  7 /*inMonth*/,
6211  0 /*onDayOfWeek*/,
6212  18 /*onDayOfMonth*/,
6213  12 /*atTimeCode*/,
6214  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6215  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
6216  0 /*letterIndex ("")*/,
6217  },
6218  // Rule Morocco 2077 only - Aug 22 2:00 0 -
6219  {
6220  -23 /*fromYearTiny (2077)*/,
6221  -23 /*toYearTiny (2077)*/,
6222  8 /*inMonth*/,
6223  0 /*onDayOfWeek*/,
6224  22 /*onDayOfMonth*/,
6225  8 /*atTimeCode*/,
6226  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6227  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6228  0 /*letterIndex ("")*/,
6229  },
6230  // Rule Morocco 2078 only - Jul 10 3:00 -1:00 -
6231  {
6232  -22 /*fromYearTiny (2078)*/,
6233  -22 /*toYearTiny (2078)*/,
6234  7 /*inMonth*/,
6235  0 /*onDayOfWeek*/,
6236  10 /*onDayOfMonth*/,
6237  12 /*atTimeCode*/,
6238  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6239  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
6240  0 /*letterIndex ("")*/,
6241  },
6242  // Rule Morocco 2078 only - Aug 14 2:00 0 -
6243  {
6244  -22 /*fromYearTiny (2078)*/,
6245  -22 /*toYearTiny (2078)*/,
6246  8 /*inMonth*/,
6247  0 /*onDayOfWeek*/,
6248  14 /*onDayOfMonth*/,
6249  8 /*atTimeCode*/,
6250  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6251  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6252  0 /*letterIndex ("")*/,
6253  },
6254  // Rule Morocco 2079 only - Jun 25 3:00 -1:00 -
6255  {
6256  -21 /*fromYearTiny (2079)*/,
6257  -21 /*toYearTiny (2079)*/,
6258  6 /*inMonth*/,
6259  0 /*onDayOfWeek*/,
6260  25 /*onDayOfMonth*/,
6261  12 /*atTimeCode*/,
6262  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6263  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
6264  0 /*letterIndex ("")*/,
6265  },
6266  // Rule Morocco 2079 only - Aug 6 2:00 0 -
6267  {
6268  -21 /*fromYearTiny (2079)*/,
6269  -21 /*toYearTiny (2079)*/,
6270  8 /*inMonth*/,
6271  0 /*onDayOfWeek*/,
6272  6 /*onDayOfMonth*/,
6273  8 /*atTimeCode*/,
6274  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6275  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6276  0 /*letterIndex ("")*/,
6277  },
6278  // Rule Morocco 2080 only - Jun 16 3:00 -1:00 -
6279  {
6280  -20 /*fromYearTiny (2080)*/,
6281  -20 /*toYearTiny (2080)*/,
6282  6 /*inMonth*/,
6283  0 /*onDayOfWeek*/,
6284  16 /*onDayOfMonth*/,
6285  12 /*atTimeCode*/,
6286  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6287  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
6288  0 /*letterIndex ("")*/,
6289  },
6290  // Rule Morocco 2080 only - Jul 21 2:00 0 -
6291  {
6292  -20 /*fromYearTiny (2080)*/,
6293  -20 /*toYearTiny (2080)*/,
6294  7 /*inMonth*/,
6295  0 /*onDayOfWeek*/,
6296  21 /*onDayOfMonth*/,
6297  8 /*atTimeCode*/,
6298  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6299  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6300  0 /*letterIndex ("")*/,
6301  },
6302  // Rule Morocco 2081 only - Jun 1 3:00 -1:00 -
6303  {
6304  -19 /*fromYearTiny (2081)*/,
6305  -19 /*toYearTiny (2081)*/,
6306  6 /*inMonth*/,
6307  0 /*onDayOfWeek*/,
6308  1 /*onDayOfMonth*/,
6309  12 /*atTimeCode*/,
6310  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6311  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
6312  0 /*letterIndex ("")*/,
6313  },
6314  // Rule Morocco 2081 only - Jul 13 2:00 0 -
6315  {
6316  -19 /*fromYearTiny (2081)*/,
6317  -19 /*toYearTiny (2081)*/,
6318  7 /*inMonth*/,
6319  0 /*onDayOfWeek*/,
6320  13 /*onDayOfMonth*/,
6321  8 /*atTimeCode*/,
6322  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6323  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6324  0 /*letterIndex ("")*/,
6325  },
6326  // Rule Morocco 2082 only - May 24 3:00 -1:00 -
6327  {
6328  -18 /*fromYearTiny (2082)*/,
6329  -18 /*toYearTiny (2082)*/,
6330  5 /*inMonth*/,
6331  0 /*onDayOfWeek*/,
6332  24 /*onDayOfMonth*/,
6333  12 /*atTimeCode*/,
6334  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6335  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
6336  0 /*letterIndex ("")*/,
6337  },
6338  // Rule Morocco 2082 only - Jun 28 2:00 0 -
6339  {
6340  -18 /*fromYearTiny (2082)*/,
6341  -18 /*toYearTiny (2082)*/,
6342  6 /*inMonth*/,
6343  0 /*onDayOfWeek*/,
6344  28 /*onDayOfMonth*/,
6345  8 /*atTimeCode*/,
6346  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6347  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6348  0 /*letterIndex ("")*/,
6349  },
6350  // Rule Morocco 2083 only - May 16 3:00 -1:00 -
6351  {
6352  -17 /*fromYearTiny (2083)*/,
6353  -17 /*toYearTiny (2083)*/,
6354  5 /*inMonth*/,
6355  0 /*onDayOfWeek*/,
6356  16 /*onDayOfMonth*/,
6357  12 /*atTimeCode*/,
6358  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6359  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
6360  0 /*letterIndex ("")*/,
6361  },
6362  // Rule Morocco 2083 only - Jun 20 2:00 0 -
6363  {
6364  -17 /*fromYearTiny (2083)*/,
6365  -17 /*toYearTiny (2083)*/,
6366  6 /*inMonth*/,
6367  0 /*onDayOfWeek*/,
6368  20 /*onDayOfMonth*/,
6369  8 /*atTimeCode*/,
6370  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6371  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6372  0 /*letterIndex ("")*/,
6373  },
6374  // Rule Morocco 2084 only - Apr 30 3:00 -1:00 -
6375  {
6376  -16 /*fromYearTiny (2084)*/,
6377  -16 /*toYearTiny (2084)*/,
6378  4 /*inMonth*/,
6379  0 /*onDayOfWeek*/,
6380  30 /*onDayOfMonth*/,
6381  12 /*atTimeCode*/,
6382  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6383  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
6384  0 /*letterIndex ("")*/,
6385  },
6386  // Rule Morocco 2084 only - Jun 11 2:00 0 -
6387  {
6388  -16 /*fromYearTiny (2084)*/,
6389  -16 /*toYearTiny (2084)*/,
6390  6 /*inMonth*/,
6391  0 /*onDayOfWeek*/,
6392  11 /*onDayOfMonth*/,
6393  8 /*atTimeCode*/,
6394  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6395  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6396  0 /*letterIndex ("")*/,
6397  },
6398  // Rule Morocco 2085 only - Apr 22 3:00 -1:00 -
6399  {
6400  -15 /*fromYearTiny (2085)*/,
6401  -15 /*toYearTiny (2085)*/,
6402  4 /*inMonth*/,
6403  0 /*onDayOfWeek*/,
6404  22 /*onDayOfMonth*/,
6405  12 /*atTimeCode*/,
6406  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6407  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
6408  0 /*letterIndex ("")*/,
6409  },
6410  // Rule Morocco 2085 only - May 27 2:00 0 -
6411  {
6412  -15 /*fromYearTiny (2085)*/,
6413  -15 /*toYearTiny (2085)*/,
6414  5 /*inMonth*/,
6415  0 /*onDayOfWeek*/,
6416  27 /*onDayOfMonth*/,
6417  8 /*atTimeCode*/,
6418  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6419  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6420  0 /*letterIndex ("")*/,
6421  },
6422  // Rule Morocco 2086 only - Apr 14 3:00 -1:00 -
6423  {
6424  -14 /*fromYearTiny (2086)*/,
6425  -14 /*toYearTiny (2086)*/,
6426  4 /*inMonth*/,
6427  0 /*onDayOfWeek*/,
6428  14 /*onDayOfMonth*/,
6429  12 /*atTimeCode*/,
6430  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6431  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
6432  0 /*letterIndex ("")*/,
6433  },
6434  // Rule Morocco 2086 only - May 19 2:00 0 -
6435  {
6436  -14 /*fromYearTiny (2086)*/,
6437  -14 /*toYearTiny (2086)*/,
6438  5 /*inMonth*/,
6439  0 /*onDayOfWeek*/,
6440  19 /*onDayOfMonth*/,
6441  8 /*atTimeCode*/,
6442  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6443  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6444  0 /*letterIndex ("")*/,
6445  },
6446  // Rule Morocco 2087 only - Mar 30 3:00 -1:00 -
6447  {
6448  -13 /*fromYearTiny (2087)*/,
6449  -13 /*toYearTiny (2087)*/,
6450  3 /*inMonth*/,
6451  0 /*onDayOfWeek*/,
6452  30 /*onDayOfMonth*/,
6453  12 /*atTimeCode*/,
6454  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6455  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
6456  0 /*letterIndex ("")*/,
6457  },
6458  // Rule Morocco 2087 only - May 11 2:00 0 -
6459  {
6460  -13 /*fromYearTiny (2087)*/,
6461  -13 /*toYearTiny (2087)*/,
6462  5 /*inMonth*/,
6463  0 /*onDayOfWeek*/,
6464  11 /*onDayOfMonth*/,
6465  8 /*atTimeCode*/,
6466  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6467  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6468  0 /*letterIndex ("")*/,
6469  },
6470 
6471 };
6472 
6473 const extended::ZonePolicy kZonePolicyMorocco ACE_TIME_PROGMEM = {
6474  kZoneRulesMorocco /*rules*/,
6475  170 /*numRules*/,
6476 };
6477 
6478 //---------------------------------------------------------------------------
6479 // Policy name: NC
6480 // Rules: 1
6481 //---------------------------------------------------------------------------
6482 
6483 static const extended::ZoneRule kZoneRulesNC[] ACE_TIME_PROGMEM = {
6484  // Anchor: Rule NC 1997 only - Mar 2 2:00s 0 -
6485  {
6486  -127 /*fromYearTiny (-32767)*/,
6487  -127 /*toYearTiny (-32767)*/,
6488  1 /*inMonth*/,
6489  0 /*onDayOfWeek*/,
6490  1 /*onDayOfMonth*/,
6491  0 /*atTimeCode*/,
6492  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6493  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6494  0 /*letterIndex ("")*/,
6495  },
6496 
6497 };
6498 
6499 const extended::ZonePolicy kZonePolicyNC ACE_TIME_PROGMEM = {
6500  kZoneRulesNC /*rules*/,
6501  1 /*numRules*/,
6502 };
6503 
6504 //---------------------------------------------------------------------------
6505 // Policy name: NT_YK
6506 // Rules: 4
6507 //---------------------------------------------------------------------------
6508 
6509 static const extended::ZoneRule kZoneRulesNT_YK[] ACE_TIME_PROGMEM = {
6510  // Anchor: Rule NT_YK 1972 2006 - Oct lastSun 2:00 0 S
6511  {
6512  -127 /*fromYearTiny (-32767)*/,
6513  -127 /*toYearTiny (-32767)*/,
6514  1 /*inMonth*/,
6515  0 /*onDayOfWeek*/,
6516  1 /*onDayOfMonth*/,
6517  0 /*atTimeCode*/,
6518  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6519  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6520  7 /*letterIndex ("S")*/,
6521  },
6522  // Rule NT_YK 1972 1986 - Apr lastSun 2:00 1:00 D
6523  {
6524  -127 /*fromYearTiny (1972)*/,
6525  -114 /*toYearTiny (1986)*/,
6526  4 /*inMonth*/,
6527  7 /*onDayOfWeek*/,
6528  0 /*onDayOfMonth*/,
6529  8 /*atTimeCode*/,
6530  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6531  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6532  5 /*letterIndex ("D")*/,
6533  },
6534  // Rule NT_YK 1972 2006 - Oct lastSun 2:00 0 S
6535  {
6536  -127 /*fromYearTiny (1972)*/,
6537  -94 /*toYearTiny (2006)*/,
6538  10 /*inMonth*/,
6539  7 /*onDayOfWeek*/,
6540  0 /*onDayOfMonth*/,
6541  8 /*atTimeCode*/,
6542  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6543  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6544  7 /*letterIndex ("S")*/,
6545  },
6546  // Rule NT_YK 1987 2006 - Apr Sun>=1 2:00 1:00 D
6547  {
6548  -113 /*fromYearTiny (1987)*/,
6549  -94 /*toYearTiny (2006)*/,
6550  4 /*inMonth*/,
6551  7 /*onDayOfWeek*/,
6552  1 /*onDayOfMonth*/,
6553  8 /*atTimeCode*/,
6554  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6555  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6556  5 /*letterIndex ("D")*/,
6557  },
6558 
6559 };
6560 
6561 const extended::ZonePolicy kZonePolicyNT_YK ACE_TIME_PROGMEM = {
6562  kZoneRulesNT_YK /*rules*/,
6563  4 /*numRules*/,
6564 };
6565 
6566 //---------------------------------------------------------------------------
6567 // Policy name: NZ
6568 // Rules: 6
6569 //---------------------------------------------------------------------------
6570 
6571 static const extended::ZoneRule kZoneRulesNZ[] ACE_TIME_PROGMEM = {
6572  // Anchor: Rule NZ 1990 2007 - Mar Sun>=15 2:00s 0 S
6573  {
6574  -127 /*fromYearTiny (-32767)*/,
6575  -127 /*toYearTiny (-32767)*/,
6576  1 /*inMonth*/,
6577  0 /*onDayOfWeek*/,
6578  1 /*onDayOfMonth*/,
6579  0 /*atTimeCode*/,
6580  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6581  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6582  7 /*letterIndex ("S")*/,
6583  },
6584  // Rule NZ 1989 only - Oct Sun>=8 2:00s 1:00 D
6585  {
6586  -111 /*fromYearTiny (1989)*/,
6587  -111 /*toYearTiny (1989)*/,
6588  10 /*inMonth*/,
6589  7 /*onDayOfWeek*/,
6590  8 /*onDayOfMonth*/,
6591  8 /*atTimeCode*/,
6592  16 /*atTimeModifier (kSuffixS + minute=0)*/,
6593  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6594  5 /*letterIndex ("D")*/,
6595  },
6596  // Rule NZ 1990 2006 - Oct Sun>=1 2:00s 1:00 D
6597  {
6598  -110 /*fromYearTiny (1990)*/,
6599  -94 /*toYearTiny (2006)*/,
6600  10 /*inMonth*/,
6601  7 /*onDayOfWeek*/,
6602  1 /*onDayOfMonth*/,
6603  8 /*atTimeCode*/,
6604  16 /*atTimeModifier (kSuffixS + minute=0)*/,
6605  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6606  5 /*letterIndex ("D")*/,
6607  },
6608  // Rule NZ 1990 2007 - Mar Sun>=15 2:00s 0 S
6609  {
6610  -110 /*fromYearTiny (1990)*/,
6611  -93 /*toYearTiny (2007)*/,
6612  3 /*inMonth*/,
6613  7 /*onDayOfWeek*/,
6614  15 /*onDayOfMonth*/,
6615  8 /*atTimeCode*/,
6616  16 /*atTimeModifier (kSuffixS + minute=0)*/,
6617  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6618  7 /*letterIndex ("S")*/,
6619  },
6620  // Rule NZ 2007 max - Sep lastSun 2:00s 1:00 D
6621  {
6622  -93 /*fromYearTiny (2007)*/,
6623  126 /*toYearTiny (32766)*/,
6624  9 /*inMonth*/,
6625  7 /*onDayOfWeek*/,
6626  0 /*onDayOfMonth*/,
6627  8 /*atTimeCode*/,
6628  16 /*atTimeModifier (kSuffixS + minute=0)*/,
6629  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6630  5 /*letterIndex ("D")*/,
6631  },
6632  // Rule NZ 2008 max - Apr Sun>=1 2:00s 0 S
6633  {
6634  -92 /*fromYearTiny (2008)*/,
6635  126 /*toYearTiny (32766)*/,
6636  4 /*inMonth*/,
6637  7 /*onDayOfWeek*/,
6638  1 /*onDayOfMonth*/,
6639  8 /*atTimeCode*/,
6640  16 /*atTimeModifier (kSuffixS + minute=0)*/,
6641  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6642  7 /*letterIndex ("S")*/,
6643  },
6644 
6645 };
6646 
6647 const extended::ZonePolicy kZonePolicyNZ ACE_TIME_PROGMEM = {
6648  kZoneRulesNZ /*rules*/,
6649  6 /*numRules*/,
6650 };
6651 
6652 //---------------------------------------------------------------------------
6653 // Policy name: Namibia
6654 // Rules: 4
6655 //---------------------------------------------------------------------------
6656 
6657 static const extended::ZoneRule kZoneRulesNamibia[] ACE_TIME_PROGMEM = {
6658  // Anchor: Rule Namibia 1994 2017 - Sep Sun>=1 2:00 0 CAT
6659  {
6660  -127 /*fromYearTiny (-32767)*/,
6661  -127 /*toYearTiny (-32767)*/,
6662  1 /*inMonth*/,
6663  0 /*onDayOfWeek*/,
6664  1 /*onDayOfMonth*/,
6665  0 /*atTimeCode*/,
6666  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6667  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6668  3 /*letterIndex ("CAT")*/,
6669  },
6670  // Rule Namibia 1994 only - Mar 21 0:00 -1:00 WAT
6671  {
6672  -106 /*fromYearTiny (1994)*/,
6673  -106 /*toYearTiny (1994)*/,
6674  3 /*inMonth*/,
6675  0 /*onDayOfWeek*/,
6676  21 /*onDayOfMonth*/,
6677  0 /*atTimeCode*/,
6678  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6679  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
6680  8 /*letterIndex ("WAT")*/,
6681  },
6682  // Rule Namibia 1994 2017 - Sep Sun>=1 2:00 0 CAT
6683  {
6684  -106 /*fromYearTiny (1994)*/,
6685  -83 /*toYearTiny (2017)*/,
6686  9 /*inMonth*/,
6687  7 /*onDayOfWeek*/,
6688  1 /*onDayOfMonth*/,
6689  8 /*atTimeCode*/,
6690  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6691  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6692  3 /*letterIndex ("CAT")*/,
6693  },
6694  // Rule Namibia 1995 2017 - Apr Sun>=1 2:00 -1:00 WAT
6695  {
6696  -105 /*fromYearTiny (1995)*/,
6697  -83 /*toYearTiny (2017)*/,
6698  4 /*inMonth*/,
6699  7 /*onDayOfWeek*/,
6700  1 /*onDayOfMonth*/,
6701  8 /*atTimeCode*/,
6702  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6703  0 /*deltaCode ((deltaMinutes=-60)/15 + 4)*/,
6704  8 /*letterIndex ("WAT")*/,
6705  },
6706 
6707 };
6708 
6709 const extended::ZonePolicy kZonePolicyNamibia ACE_TIME_PROGMEM = {
6710  kZoneRulesNamibia /*rules*/,
6711  4 /*numRules*/,
6712 };
6713 
6714 //---------------------------------------------------------------------------
6715 // Policy name: Nic
6716 // Rules: 6
6717 //---------------------------------------------------------------------------
6718 
6719 static const extended::ZoneRule kZoneRulesNic[] ACE_TIME_PROGMEM = {
6720  // Anchor: Rule Nic 1979 1980 - Jun Mon>=23 0:00 0 S
6721  {
6722  -127 /*fromYearTiny (-32767)*/,
6723  -127 /*toYearTiny (-32767)*/,
6724  1 /*inMonth*/,
6725  0 /*onDayOfWeek*/,
6726  1 /*onDayOfMonth*/,
6727  0 /*atTimeCode*/,
6728  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6729  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6730  7 /*letterIndex ("S")*/,
6731  },
6732  // Rule Nic 1979 1980 - Jun Mon>=23 0:00 0 S
6733  {
6734  -121 /*fromYearTiny (1979)*/,
6735  -120 /*toYearTiny (1980)*/,
6736  6 /*inMonth*/,
6737  1 /*onDayOfWeek*/,
6738  23 /*onDayOfMonth*/,
6739  0 /*atTimeCode*/,
6740  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6741  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6742  7 /*letterIndex ("S")*/,
6743  },
6744  // Rule Nic 2005 only - Apr 10 0:00 1:00 D
6745  {
6746  -95 /*fromYearTiny (2005)*/,
6747  -95 /*toYearTiny (2005)*/,
6748  4 /*inMonth*/,
6749  0 /*onDayOfWeek*/,
6750  10 /*onDayOfMonth*/,
6751  0 /*atTimeCode*/,
6752  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6753  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6754  5 /*letterIndex ("D")*/,
6755  },
6756  // Rule Nic 2005 only - Oct Sun>=1 0:00 0 S
6757  {
6758  -95 /*fromYearTiny (2005)*/,
6759  -95 /*toYearTiny (2005)*/,
6760  10 /*inMonth*/,
6761  7 /*onDayOfWeek*/,
6762  1 /*onDayOfMonth*/,
6763  0 /*atTimeCode*/,
6764  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6765  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6766  7 /*letterIndex ("S")*/,
6767  },
6768  // Rule Nic 2006 only - Apr 30 2:00 1:00 D
6769  {
6770  -94 /*fromYearTiny (2006)*/,
6771  -94 /*toYearTiny (2006)*/,
6772  4 /*inMonth*/,
6773  0 /*onDayOfWeek*/,
6774  30 /*onDayOfMonth*/,
6775  8 /*atTimeCode*/,
6776  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6777  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6778  5 /*letterIndex ("D")*/,
6779  },
6780  // Rule Nic 2006 only - Oct Sun>=1 1:00 0 S
6781  {
6782  -94 /*fromYearTiny (2006)*/,
6783  -94 /*toYearTiny (2006)*/,
6784  10 /*inMonth*/,
6785  7 /*onDayOfWeek*/,
6786  1 /*onDayOfMonth*/,
6787  4 /*atTimeCode*/,
6788  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6789  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6790  7 /*letterIndex ("S")*/,
6791  },
6792 
6793 };
6794 
6795 const extended::ZonePolicy kZonePolicyNic ACE_TIME_PROGMEM = {
6796  kZoneRulesNic /*rules*/,
6797  6 /*numRules*/,
6798 };
6799 
6800 //---------------------------------------------------------------------------
6801 // Policy name: PRC
6802 // Rules: 1
6803 //---------------------------------------------------------------------------
6804 
6805 static const extended::ZoneRule kZoneRulesPRC[] ACE_TIME_PROGMEM = {
6806  // Anchor: Rule PRC 1986 1991 - Sep Sun>=11 2:00 0 S
6807  {
6808  -127 /*fromYearTiny (-32767)*/,
6809  -127 /*toYearTiny (-32767)*/,
6810  1 /*inMonth*/,
6811  0 /*onDayOfWeek*/,
6812  1 /*onDayOfMonth*/,
6813  0 /*atTimeCode*/,
6814  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6815  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6816  7 /*letterIndex ("S")*/,
6817  },
6818 
6819 };
6820 
6821 const extended::ZonePolicy kZonePolicyPRC ACE_TIME_PROGMEM = {
6822  kZoneRulesPRC /*rules*/,
6823  1 /*numRules*/,
6824 };
6825 
6826 //---------------------------------------------------------------------------
6827 // Policy name: Pakistan
6828 // Rules: 6
6829 //---------------------------------------------------------------------------
6830 
6831 static const extended::ZoneRule kZoneRulesPakistan[] ACE_TIME_PROGMEM = {
6832  // Anchor: Rule Pakistan 2002 only - Oct Sun>=2 0:00 0 -
6833  {
6834  -127 /*fromYearTiny (-32767)*/,
6835  -127 /*toYearTiny (-32767)*/,
6836  1 /*inMonth*/,
6837  0 /*onDayOfWeek*/,
6838  1 /*onDayOfMonth*/,
6839  0 /*atTimeCode*/,
6840  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6841  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6842  0 /*letterIndex ("")*/,
6843  },
6844  // Rule Pakistan 2002 only - Apr Sun>=2 0:00 1:00 S
6845  {
6846  -98 /*fromYearTiny (2002)*/,
6847  -98 /*toYearTiny (2002)*/,
6848  4 /*inMonth*/,
6849  7 /*onDayOfWeek*/,
6850  2 /*onDayOfMonth*/,
6851  0 /*atTimeCode*/,
6852  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6853  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6854  7 /*letterIndex ("S")*/,
6855  },
6856  // Rule Pakistan 2002 only - Oct Sun>=2 0:00 0 -
6857  {
6858  -98 /*fromYearTiny (2002)*/,
6859  -98 /*toYearTiny (2002)*/,
6860  10 /*inMonth*/,
6861  7 /*onDayOfWeek*/,
6862  2 /*onDayOfMonth*/,
6863  0 /*atTimeCode*/,
6864  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6865  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6866  0 /*letterIndex ("")*/,
6867  },
6868  // Rule Pakistan 2008 only - Jun 1 0:00 1:00 S
6869  {
6870  -92 /*fromYearTiny (2008)*/,
6871  -92 /*toYearTiny (2008)*/,
6872  6 /*inMonth*/,
6873  0 /*onDayOfWeek*/,
6874  1 /*onDayOfMonth*/,
6875  0 /*atTimeCode*/,
6876  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6877  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6878  7 /*letterIndex ("S")*/,
6879  },
6880  // Rule Pakistan 2008 2009 - Nov 1 0:00 0 -
6881  {
6882  -92 /*fromYearTiny (2008)*/,
6883  -91 /*toYearTiny (2009)*/,
6884  11 /*inMonth*/,
6885  0 /*onDayOfWeek*/,
6886  1 /*onDayOfMonth*/,
6887  0 /*atTimeCode*/,
6888  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6889  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6890  0 /*letterIndex ("")*/,
6891  },
6892  // Rule Pakistan 2009 only - Apr 15 0:00 1:00 S
6893  {
6894  -91 /*fromYearTiny (2009)*/,
6895  -91 /*toYearTiny (2009)*/,
6896  4 /*inMonth*/,
6897  0 /*onDayOfWeek*/,
6898  15 /*onDayOfMonth*/,
6899  0 /*atTimeCode*/,
6900  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6901  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6902  7 /*letterIndex ("S")*/,
6903  },
6904 
6905 };
6906 
6907 const extended::ZonePolicy kZonePolicyPakistan ACE_TIME_PROGMEM = {
6908  kZoneRulesPakistan /*rules*/,
6909  6 /*numRules*/,
6910 };
6911 
6912 //---------------------------------------------------------------------------
6913 // Policy name: Palestine
6914 // Rules: 111
6915 //---------------------------------------------------------------------------
6916 
6917 static const extended::ZoneRule kZoneRulesPalestine[] ACE_TIME_PROGMEM = {
6918  // Anchor: Rule Palestine 1999 2003 - Oct Fri>=15 0:00 0 -
6919  {
6920  -127 /*fromYearTiny (-32767)*/,
6921  -127 /*toYearTiny (-32767)*/,
6922  1 /*inMonth*/,
6923  0 /*onDayOfWeek*/,
6924  1 /*onDayOfMonth*/,
6925  0 /*atTimeCode*/,
6926  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6927  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6928  0 /*letterIndex ("")*/,
6929  },
6930  // Rule Palestine 1999 2005 - Apr Fri>=15 0:00 1:00 S
6931  {
6932  -101 /*fromYearTiny (1999)*/,
6933  -95 /*toYearTiny (2005)*/,
6934  4 /*inMonth*/,
6935  5 /*onDayOfWeek*/,
6936  15 /*onDayOfMonth*/,
6937  0 /*atTimeCode*/,
6938  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6939  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6940  7 /*letterIndex ("S")*/,
6941  },
6942  // Rule Palestine 1999 2003 - Oct Fri>=15 0:00 0 -
6943  {
6944  -101 /*fromYearTiny (1999)*/,
6945  -97 /*toYearTiny (2003)*/,
6946  10 /*inMonth*/,
6947  5 /*onDayOfWeek*/,
6948  15 /*onDayOfMonth*/,
6949  0 /*atTimeCode*/,
6950  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6951  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6952  0 /*letterIndex ("")*/,
6953  },
6954  // Rule Palestine 2004 only - Oct 1 1:00 0 -
6955  {
6956  -96 /*fromYearTiny (2004)*/,
6957  -96 /*toYearTiny (2004)*/,
6958  10 /*inMonth*/,
6959  0 /*onDayOfWeek*/,
6960  1 /*onDayOfMonth*/,
6961  4 /*atTimeCode*/,
6962  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6963  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6964  0 /*letterIndex ("")*/,
6965  },
6966  // Rule Palestine 2005 only - Oct 4 2:00 0 -
6967  {
6968  -95 /*fromYearTiny (2005)*/,
6969  -95 /*toYearTiny (2005)*/,
6970  10 /*inMonth*/,
6971  0 /*onDayOfWeek*/,
6972  4 /*onDayOfMonth*/,
6973  8 /*atTimeCode*/,
6974  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6975  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
6976  0 /*letterIndex ("")*/,
6977  },
6978  // Rule Palestine 2006 2007 - Apr 1 0:00 1:00 S
6979  {
6980  -94 /*fromYearTiny (2006)*/,
6981  -93 /*toYearTiny (2007)*/,
6982  4 /*inMonth*/,
6983  0 /*onDayOfWeek*/,
6984  1 /*onDayOfMonth*/,
6985  0 /*atTimeCode*/,
6986  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6987  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
6988  7 /*letterIndex ("S")*/,
6989  },
6990  // Rule Palestine 2006 only - Sep 22 0:00 0 -
6991  {
6992  -94 /*fromYearTiny (2006)*/,
6993  -94 /*toYearTiny (2006)*/,
6994  9 /*inMonth*/,
6995  0 /*onDayOfWeek*/,
6996  22 /*onDayOfMonth*/,
6997  0 /*atTimeCode*/,
6998  0 /*atTimeModifier (kSuffixW + minute=0)*/,
6999  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7000  0 /*letterIndex ("")*/,
7001  },
7002  // Rule Palestine 2007 only - Sep 13 2:00 0 -
7003  {
7004  -93 /*fromYearTiny (2007)*/,
7005  -93 /*toYearTiny (2007)*/,
7006  9 /*inMonth*/,
7007  0 /*onDayOfWeek*/,
7008  13 /*onDayOfMonth*/,
7009  8 /*atTimeCode*/,
7010  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7011  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7012  0 /*letterIndex ("")*/,
7013  },
7014  // Rule Palestine 2008 2009 - Mar lastFri 0:00 1:00 S
7015  {
7016  -92 /*fromYearTiny (2008)*/,
7017  -91 /*toYearTiny (2009)*/,
7018  3 /*inMonth*/,
7019  5 /*onDayOfWeek*/,
7020  0 /*onDayOfMonth*/,
7021  0 /*atTimeCode*/,
7022  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7023  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7024  7 /*letterIndex ("S")*/,
7025  },
7026  // Rule Palestine 2008 only - Sep 1 0:00 0 -
7027  {
7028  -92 /*fromYearTiny (2008)*/,
7029  -92 /*toYearTiny (2008)*/,
7030  9 /*inMonth*/,
7031  0 /*onDayOfWeek*/,
7032  1 /*onDayOfMonth*/,
7033  0 /*atTimeCode*/,
7034  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7035  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7036  0 /*letterIndex ("")*/,
7037  },
7038  // Rule Palestine 2009 only - Sep 4 1:00 0 -
7039  {
7040  -91 /*fromYearTiny (2009)*/,
7041  -91 /*toYearTiny (2009)*/,
7042  9 /*inMonth*/,
7043  0 /*onDayOfWeek*/,
7044  4 /*onDayOfMonth*/,
7045  4 /*atTimeCode*/,
7046  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7047  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7048  0 /*letterIndex ("")*/,
7049  },
7050  // Rule Palestine 2010 only - Mar 26 0:00 1:00 S
7051  {
7052  -90 /*fromYearTiny (2010)*/,
7053  -90 /*toYearTiny (2010)*/,
7054  3 /*inMonth*/,
7055  0 /*onDayOfWeek*/,
7056  26 /*onDayOfMonth*/,
7057  0 /*atTimeCode*/,
7058  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7059  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7060  7 /*letterIndex ("S")*/,
7061  },
7062  // Rule Palestine 2010 only - Aug 11 0:00 0 -
7063  {
7064  -90 /*fromYearTiny (2010)*/,
7065  -90 /*toYearTiny (2010)*/,
7066  8 /*inMonth*/,
7067  0 /*onDayOfWeek*/,
7068  11 /*onDayOfMonth*/,
7069  0 /*atTimeCode*/,
7070  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7071  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7072  0 /*letterIndex ("")*/,
7073  },
7074  // Rule Palestine 2011 only - Apr 1 0:01 1:00 S
7075  {
7076  -89 /*fromYearTiny (2011)*/,
7077  -89 /*toYearTiny (2011)*/,
7078  4 /*inMonth*/,
7079  0 /*onDayOfWeek*/,
7080  1 /*onDayOfMonth*/,
7081  0 /*atTimeCode*/,
7082  1 /*atTimeModifier (kSuffixW + minute=1)*/,
7083  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7084  7 /*letterIndex ("S")*/,
7085  },
7086  // Rule Palestine 2011 only - Aug 1 0:00 0 -
7087  {
7088  -89 /*fromYearTiny (2011)*/,
7089  -89 /*toYearTiny (2011)*/,
7090  8 /*inMonth*/,
7091  0 /*onDayOfWeek*/,
7092  1 /*onDayOfMonth*/,
7093  0 /*atTimeCode*/,
7094  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7095  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7096  0 /*letterIndex ("")*/,
7097  },
7098  // Rule Palestine 2011 only - Aug 30 0:00 1:00 S
7099  {
7100  -89 /*fromYearTiny (2011)*/,
7101  -89 /*toYearTiny (2011)*/,
7102  8 /*inMonth*/,
7103  0 /*onDayOfWeek*/,
7104  30 /*onDayOfMonth*/,
7105  0 /*atTimeCode*/,
7106  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7107  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7108  7 /*letterIndex ("S")*/,
7109  },
7110  // Rule Palestine 2011 only - Sep 30 0:00 0 -
7111  {
7112  -89 /*fromYearTiny (2011)*/,
7113  -89 /*toYearTiny (2011)*/,
7114  9 /*inMonth*/,
7115  0 /*onDayOfWeek*/,
7116  30 /*onDayOfMonth*/,
7117  0 /*atTimeCode*/,
7118  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7119  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7120  0 /*letterIndex ("")*/,
7121  },
7122  // Rule Palestine 2012 2014 - Mar lastThu 24:00 1:00 S
7123  {
7124  -88 /*fromYearTiny (2012)*/,
7125  -86 /*toYearTiny (2014)*/,
7126  3 /*inMonth*/,
7127  4 /*onDayOfWeek*/,
7128  0 /*onDayOfMonth*/,
7129  96 /*atTimeCode*/,
7130  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7131  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7132  7 /*letterIndex ("S")*/,
7133  },
7134  // Rule Palestine 2012 only - Sep 21 1:00 0 -
7135  {
7136  -88 /*fromYearTiny (2012)*/,
7137  -88 /*toYearTiny (2012)*/,
7138  9 /*inMonth*/,
7139  0 /*onDayOfWeek*/,
7140  21 /*onDayOfMonth*/,
7141  4 /*atTimeCode*/,
7142  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7143  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7144  0 /*letterIndex ("")*/,
7145  },
7146  // Rule Palestine 2013 only - Sep 27 0:00 0 -
7147  {
7148  -87 /*fromYearTiny (2013)*/,
7149  -87 /*toYearTiny (2013)*/,
7150  9 /*inMonth*/,
7151  0 /*onDayOfWeek*/,
7152  27 /*onDayOfMonth*/,
7153  0 /*atTimeCode*/,
7154  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7155  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7156  0 /*letterIndex ("")*/,
7157  },
7158  // Rule Palestine 2014 only - Oct 24 0:00 0 -
7159  {
7160  -86 /*fromYearTiny (2014)*/,
7161  -86 /*toYearTiny (2014)*/,
7162  10 /*inMonth*/,
7163  0 /*onDayOfWeek*/,
7164  24 /*onDayOfMonth*/,
7165  0 /*atTimeCode*/,
7166  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7167  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7168  0 /*letterIndex ("")*/,
7169  },
7170  // Rule Palestine 2015 only - Mar 28 0:00 1:00 S
7171  {
7172  -85 /*fromYearTiny (2015)*/,
7173  -85 /*toYearTiny (2015)*/,
7174  3 /*inMonth*/,
7175  0 /*onDayOfWeek*/,
7176  28 /*onDayOfMonth*/,
7177  0 /*atTimeCode*/,
7178  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7179  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7180  7 /*letterIndex ("S")*/,
7181  },
7182  // Rule Palestine 2015 only - Oct 23 1:00 0 -
7183  {
7184  -85 /*fromYearTiny (2015)*/,
7185  -85 /*toYearTiny (2015)*/,
7186  10 /*inMonth*/,
7187  0 /*onDayOfWeek*/,
7188  23 /*onDayOfMonth*/,
7189  4 /*atTimeCode*/,
7190  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7191  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7192  0 /*letterIndex ("")*/,
7193  },
7194  // Rule Palestine 2016 2018 - Mar Sat<=30 1:00 1:00 S
7195  {
7196  -84 /*fromYearTiny (2016)*/,
7197  -82 /*toYearTiny (2018)*/,
7198  3 /*inMonth*/,
7199  6 /*onDayOfWeek*/,
7200  -30 /*onDayOfMonth*/,
7201  4 /*atTimeCode*/,
7202  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7203  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7204  7 /*letterIndex ("S")*/,
7205  },
7206  // Rule Palestine 2016 2018 - Oct Sat<=30 1:00 0 -
7207  {
7208  -84 /*fromYearTiny (2016)*/,
7209  -82 /*toYearTiny (2018)*/,
7210  10 /*inMonth*/,
7211  6 /*onDayOfWeek*/,
7212  -30 /*onDayOfMonth*/,
7213  4 /*atTimeCode*/,
7214  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7215  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7216  0 /*letterIndex ("")*/,
7217  },
7218  // Rule Palestine 2019 only - Mar 29 0:00 1:00 S
7219  {
7220  -81 /*fromYearTiny (2019)*/,
7221  -81 /*toYearTiny (2019)*/,
7222  3 /*inMonth*/,
7223  0 /*onDayOfWeek*/,
7224  29 /*onDayOfMonth*/,
7225  0 /*atTimeCode*/,
7226  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7227  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7228  7 /*letterIndex ("S")*/,
7229  },
7230  // Rule Palestine 2019 only - Oct Sat<=30 0:00 0 -
7231  {
7232  -81 /*fromYearTiny (2019)*/,
7233  -81 /*toYearTiny (2019)*/,
7234  10 /*inMonth*/,
7235  6 /*onDayOfWeek*/,
7236  -30 /*onDayOfMonth*/,
7237  0 /*atTimeCode*/,
7238  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7239  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7240  0 /*letterIndex ("")*/,
7241  },
7242  // Rule Palestine 2020 2021 - Mar Sat<=30 0:00 1:00 S
7243  {
7244  -80 /*fromYearTiny (2020)*/,
7245  -79 /*toYearTiny (2021)*/,
7246  3 /*inMonth*/,
7247  6 /*onDayOfWeek*/,
7248  -30 /*onDayOfMonth*/,
7249  0 /*atTimeCode*/,
7250  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7251  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7252  7 /*letterIndex ("S")*/,
7253  },
7254  // Rule Palestine 2020 only - Oct 24 1:00 0 -
7255  {
7256  -80 /*fromYearTiny (2020)*/,
7257  -80 /*toYearTiny (2020)*/,
7258  10 /*inMonth*/,
7259  0 /*onDayOfWeek*/,
7260  24 /*onDayOfMonth*/,
7261  4 /*atTimeCode*/,
7262  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7263  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7264  0 /*letterIndex ("")*/,
7265  },
7266  // Rule Palestine 2021 only - Oct 29 1:00 0 -
7267  {
7268  -79 /*fromYearTiny (2021)*/,
7269  -79 /*toYearTiny (2021)*/,
7270  10 /*inMonth*/,
7271  0 /*onDayOfWeek*/,
7272  29 /*onDayOfMonth*/,
7273  4 /*atTimeCode*/,
7274  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7275  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7276  0 /*letterIndex ("")*/,
7277  },
7278  // Rule Palestine 2022 only - Mar 27 0:00 1:00 S
7279  {
7280  -78 /*fromYearTiny (2022)*/,
7281  -78 /*toYearTiny (2022)*/,
7282  3 /*inMonth*/,
7283  0 /*onDayOfWeek*/,
7284  27 /*onDayOfMonth*/,
7285  0 /*atTimeCode*/,
7286  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7287  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7288  7 /*letterIndex ("S")*/,
7289  },
7290  // Rule Palestine 2022 2035 - Oct Sat<=30 2:00 0 -
7291  {
7292  -78 /*fromYearTiny (2022)*/,
7293  -65 /*toYearTiny (2035)*/,
7294  10 /*inMonth*/,
7295  6 /*onDayOfWeek*/,
7296  -30 /*onDayOfMonth*/,
7297  8 /*atTimeCode*/,
7298  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7299  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7300  0 /*letterIndex ("")*/,
7301  },
7302  // Rule Palestine 2023 only - Apr 29 2:00 1:00 S
7303  {
7304  -77 /*fromYearTiny (2023)*/,
7305  -77 /*toYearTiny (2023)*/,
7306  4 /*inMonth*/,
7307  0 /*onDayOfWeek*/,
7308  29 /*onDayOfMonth*/,
7309  8 /*atTimeCode*/,
7310  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7311  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7312  7 /*letterIndex ("S")*/,
7313  },
7314  // Rule Palestine 2024 only - Apr 13 2:00 1:00 S
7315  {
7316  -76 /*fromYearTiny (2024)*/,
7317  -76 /*toYearTiny (2024)*/,
7318  4 /*inMonth*/,
7319  0 /*onDayOfWeek*/,
7320  13 /*onDayOfMonth*/,
7321  8 /*atTimeCode*/,
7322  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7323  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7324  7 /*letterIndex ("S")*/,
7325  },
7326  // Rule Palestine 2025 only - Apr 5 2:00 1:00 S
7327  {
7328  -75 /*fromYearTiny (2025)*/,
7329  -75 /*toYearTiny (2025)*/,
7330  4 /*inMonth*/,
7331  0 /*onDayOfWeek*/,
7332  5 /*onDayOfMonth*/,
7333  8 /*atTimeCode*/,
7334  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7335  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7336  7 /*letterIndex ("S")*/,
7337  },
7338  // Rule Palestine 2026 2054 - Mar Sat<=30 2:00 1:00 S
7339  {
7340  -74 /*fromYearTiny (2026)*/,
7341  -46 /*toYearTiny (2054)*/,
7342  3 /*inMonth*/,
7343  6 /*onDayOfWeek*/,
7344  -30 /*onDayOfMonth*/,
7345  8 /*atTimeCode*/,
7346  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7347  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7348  7 /*letterIndex ("S")*/,
7349  },
7350  // Rule Palestine 2036 only - Oct 18 2:00 0 -
7351  {
7352  -64 /*fromYearTiny (2036)*/,
7353  -64 /*toYearTiny (2036)*/,
7354  10 /*inMonth*/,
7355  0 /*onDayOfWeek*/,
7356  18 /*onDayOfMonth*/,
7357  8 /*atTimeCode*/,
7358  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7359  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7360  0 /*letterIndex ("")*/,
7361  },
7362  // Rule Palestine 2037 only - Oct 10 2:00 0 -
7363  {
7364  -63 /*fromYearTiny (2037)*/,
7365  -63 /*toYearTiny (2037)*/,
7366  10 /*inMonth*/,
7367  0 /*onDayOfWeek*/,
7368  10 /*onDayOfMonth*/,
7369  8 /*atTimeCode*/,
7370  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7371  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7372  0 /*letterIndex ("")*/,
7373  },
7374  // Rule Palestine 2038 only - Sep 25 2:00 0 -
7375  {
7376  -62 /*fromYearTiny (2038)*/,
7377  -62 /*toYearTiny (2038)*/,
7378  9 /*inMonth*/,
7379  0 /*onDayOfWeek*/,
7380  25 /*onDayOfMonth*/,
7381  8 /*atTimeCode*/,
7382  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7383  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7384  0 /*letterIndex ("")*/,
7385  },
7386  // Rule Palestine 2039 only - Sep 17 2:00 0 -
7387  {
7388  -61 /*fromYearTiny (2039)*/,
7389  -61 /*toYearTiny (2039)*/,
7390  9 /*inMonth*/,
7391  0 /*onDayOfWeek*/,
7392  17 /*onDayOfMonth*/,
7393  8 /*atTimeCode*/,
7394  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7395  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7396  0 /*letterIndex ("")*/,
7397  },
7398  // Rule Palestine 2039 only - Oct 22 2:00 1:00 S
7399  {
7400  -61 /*fromYearTiny (2039)*/,
7401  -61 /*toYearTiny (2039)*/,
7402  10 /*inMonth*/,
7403  0 /*onDayOfWeek*/,
7404  22 /*onDayOfMonth*/,
7405  8 /*atTimeCode*/,
7406  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7407  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7408  7 /*letterIndex ("S")*/,
7409  },
7410  // Rule Palestine 2039 2067 - Oct Sat<=30 2:00 0 -
7411  {
7412  -61 /*fromYearTiny (2039)*/,
7413  -33 /*toYearTiny (2067)*/,
7414  10 /*inMonth*/,
7415  6 /*onDayOfWeek*/,
7416  -30 /*onDayOfMonth*/,
7417  8 /*atTimeCode*/,
7418  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7419  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7420  0 /*letterIndex ("")*/,
7421  },
7422  // Rule Palestine 2040 only - Sep 1 2:00 0 -
7423  {
7424  -60 /*fromYearTiny (2040)*/,
7425  -60 /*toYearTiny (2040)*/,
7426  9 /*inMonth*/,
7427  0 /*onDayOfWeek*/,
7428  1 /*onDayOfMonth*/,
7429  8 /*atTimeCode*/,
7430  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7431  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7432  0 /*letterIndex ("")*/,
7433  },
7434  // Rule Palestine 2040 only - Oct 13 2:00 1:00 S
7435  {
7436  -60 /*fromYearTiny (2040)*/,
7437  -60 /*toYearTiny (2040)*/,
7438  10 /*inMonth*/,
7439  0 /*onDayOfWeek*/,
7440  13 /*onDayOfMonth*/,
7441  8 /*atTimeCode*/,
7442  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7443  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7444  7 /*letterIndex ("S")*/,
7445  },
7446  // Rule Palestine 2041 only - Aug 24 2:00 0 -
7447  {
7448  -59 /*fromYearTiny (2041)*/,
7449  -59 /*toYearTiny (2041)*/,
7450  8 /*inMonth*/,
7451  0 /*onDayOfWeek*/,
7452  24 /*onDayOfMonth*/,
7453  8 /*atTimeCode*/,
7454  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7455  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7456  0 /*letterIndex ("")*/,
7457  },
7458  // Rule Palestine 2041 only - Sep 28 2:00 1:00 S
7459  {
7460  -59 /*fromYearTiny (2041)*/,
7461  -59 /*toYearTiny (2041)*/,
7462  9 /*inMonth*/,
7463  0 /*onDayOfWeek*/,
7464  28 /*onDayOfMonth*/,
7465  8 /*atTimeCode*/,
7466  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7467  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7468  7 /*letterIndex ("S")*/,
7469  },
7470  // Rule Palestine 2042 only - Aug 16 2:00 0 -
7471  {
7472  -58 /*fromYearTiny (2042)*/,
7473  -58 /*toYearTiny (2042)*/,
7474  8 /*inMonth*/,
7475  0 /*onDayOfWeek*/,
7476  16 /*onDayOfMonth*/,
7477  8 /*atTimeCode*/,
7478  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7479  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7480  0 /*letterIndex ("")*/,
7481  },
7482  // Rule Palestine 2042 only - Sep 20 2:00 1:00 S
7483  {
7484  -58 /*fromYearTiny (2042)*/,
7485  -58 /*toYearTiny (2042)*/,
7486  9 /*inMonth*/,
7487  0 /*onDayOfWeek*/,
7488  20 /*onDayOfMonth*/,
7489  8 /*atTimeCode*/,
7490  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7491  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7492  7 /*letterIndex ("S")*/,
7493  },
7494  // Rule Palestine 2043 only - Aug 1 2:00 0 -
7495  {
7496  -57 /*fromYearTiny (2043)*/,
7497  -57 /*toYearTiny (2043)*/,
7498  8 /*inMonth*/,
7499  0 /*onDayOfWeek*/,
7500  1 /*onDayOfMonth*/,
7501  8 /*atTimeCode*/,
7502  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7503  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7504  0 /*letterIndex ("")*/,
7505  },
7506  // Rule Palestine 2043 only - Sep 12 2:00 1:00 S
7507  {
7508  -57 /*fromYearTiny (2043)*/,
7509  -57 /*toYearTiny (2043)*/,
7510  9 /*inMonth*/,
7511  0 /*onDayOfWeek*/,
7512  12 /*onDayOfMonth*/,
7513  8 /*atTimeCode*/,
7514  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7515  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7516  7 /*letterIndex ("S")*/,
7517  },
7518  // Rule Palestine 2044 only - Jul 23 2:00 0 -
7519  {
7520  -56 /*fromYearTiny (2044)*/,
7521  -56 /*toYearTiny (2044)*/,
7522  7 /*inMonth*/,
7523  0 /*onDayOfWeek*/,
7524  23 /*onDayOfMonth*/,
7525  8 /*atTimeCode*/,
7526  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7527  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7528  0 /*letterIndex ("")*/,
7529  },
7530  // Rule Palestine 2044 only - Aug 27 2:00 1:00 S
7531  {
7532  -56 /*fromYearTiny (2044)*/,
7533  -56 /*toYearTiny (2044)*/,
7534  8 /*inMonth*/,
7535  0 /*onDayOfWeek*/,
7536  27 /*onDayOfMonth*/,
7537  8 /*atTimeCode*/,
7538  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7539  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7540  7 /*letterIndex ("S")*/,
7541  },
7542  // Rule Palestine 2045 only - Jul 15 2:00 0 -
7543  {
7544  -55 /*fromYearTiny (2045)*/,
7545  -55 /*toYearTiny (2045)*/,
7546  7 /*inMonth*/,
7547  0 /*onDayOfWeek*/,
7548  15 /*onDayOfMonth*/,
7549  8 /*atTimeCode*/,
7550  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7551  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7552  0 /*letterIndex ("")*/,
7553  },
7554  // Rule Palestine 2045 only - Aug 19 2:00 1:00 S
7555  {
7556  -55 /*fromYearTiny (2045)*/,
7557  -55 /*toYearTiny (2045)*/,
7558  8 /*inMonth*/,
7559  0 /*onDayOfWeek*/,
7560  19 /*onDayOfMonth*/,
7561  8 /*atTimeCode*/,
7562  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7563  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7564  7 /*letterIndex ("S")*/,
7565  },
7566  // Rule Palestine 2046 only - Jun 30 2:00 0 -
7567  {
7568  -54 /*fromYearTiny (2046)*/,
7569  -54 /*toYearTiny (2046)*/,
7570  6 /*inMonth*/,
7571  0 /*onDayOfWeek*/,
7572  30 /*onDayOfMonth*/,
7573  8 /*atTimeCode*/,
7574  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7575  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7576  0 /*letterIndex ("")*/,
7577  },
7578  // Rule Palestine 2046 only - Aug 11 2:00 1:00 S
7579  {
7580  -54 /*fromYearTiny (2046)*/,
7581  -54 /*toYearTiny (2046)*/,
7582  8 /*inMonth*/,
7583  0 /*onDayOfWeek*/,
7584  11 /*onDayOfMonth*/,
7585  8 /*atTimeCode*/,
7586  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7587  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7588  7 /*letterIndex ("S")*/,
7589  },
7590  // Rule Palestine 2047 only - Jun 22 2:00 0 -
7591  {
7592  -53 /*fromYearTiny (2047)*/,
7593  -53 /*toYearTiny (2047)*/,
7594  6 /*inMonth*/,
7595  0 /*onDayOfWeek*/,
7596  22 /*onDayOfMonth*/,
7597  8 /*atTimeCode*/,
7598  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7599  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7600  0 /*letterIndex ("")*/,
7601  },
7602  // Rule Palestine 2047 only - Jul 27 2:00 1:00 S
7603  {
7604  -53 /*fromYearTiny (2047)*/,
7605  -53 /*toYearTiny (2047)*/,
7606  7 /*inMonth*/,
7607  0 /*onDayOfWeek*/,
7608  27 /*onDayOfMonth*/,
7609  8 /*atTimeCode*/,
7610  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7611  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7612  7 /*letterIndex ("S")*/,
7613  },
7614  // Rule Palestine 2048 only - Jun 6 2:00 0 -
7615  {
7616  -52 /*fromYearTiny (2048)*/,
7617  -52 /*toYearTiny (2048)*/,
7618  6 /*inMonth*/,
7619  0 /*onDayOfWeek*/,
7620  6 /*onDayOfMonth*/,
7621  8 /*atTimeCode*/,
7622  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7623  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7624  0 /*letterIndex ("")*/,
7625  },
7626  // Rule Palestine 2048 only - Jul 18 2:00 1:00 S
7627  {
7628  -52 /*fromYearTiny (2048)*/,
7629  -52 /*toYearTiny (2048)*/,
7630  7 /*inMonth*/,
7631  0 /*onDayOfWeek*/,
7632  18 /*onDayOfMonth*/,
7633  8 /*atTimeCode*/,
7634  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7635  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7636  7 /*letterIndex ("S")*/,
7637  },
7638  // Rule Palestine 2049 only - May 29 2:00 0 -
7639  {
7640  -51 /*fromYearTiny (2049)*/,
7641  -51 /*toYearTiny (2049)*/,
7642  5 /*inMonth*/,
7643  0 /*onDayOfWeek*/,
7644  29 /*onDayOfMonth*/,
7645  8 /*atTimeCode*/,
7646  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7647  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7648  0 /*letterIndex ("")*/,
7649  },
7650  // Rule Palestine 2049 only - Jul 3 2:00 1:00 S
7651  {
7652  -51 /*fromYearTiny (2049)*/,
7653  -51 /*toYearTiny (2049)*/,
7654  7 /*inMonth*/,
7655  0 /*onDayOfWeek*/,
7656  3 /*onDayOfMonth*/,
7657  8 /*atTimeCode*/,
7658  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7659  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7660  7 /*letterIndex ("S")*/,
7661  },
7662  // Rule Palestine 2050 only - May 21 2:00 0 -
7663  {
7664  -50 /*fromYearTiny (2050)*/,
7665  -50 /*toYearTiny (2050)*/,
7666  5 /*inMonth*/,
7667  0 /*onDayOfWeek*/,
7668  21 /*onDayOfMonth*/,
7669  8 /*atTimeCode*/,
7670  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7671  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7672  0 /*letterIndex ("")*/,
7673  },
7674  // Rule Palestine 2050 only - Jun 25 2:00 1:00 S
7675  {
7676  -50 /*fromYearTiny (2050)*/,
7677  -50 /*toYearTiny (2050)*/,
7678  6 /*inMonth*/,
7679  0 /*onDayOfWeek*/,
7680  25 /*onDayOfMonth*/,
7681  8 /*atTimeCode*/,
7682  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7683  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7684  7 /*letterIndex ("S")*/,
7685  },
7686  // Rule Palestine 2051 only - May 6 2:00 0 -
7687  {
7688  -49 /*fromYearTiny (2051)*/,
7689  -49 /*toYearTiny (2051)*/,
7690  5 /*inMonth*/,
7691  0 /*onDayOfWeek*/,
7692  6 /*onDayOfMonth*/,
7693  8 /*atTimeCode*/,
7694  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7695  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7696  0 /*letterIndex ("")*/,
7697  },
7698  // Rule Palestine 2051 only - Jun 17 2:00 1:00 S
7699  {
7700  -49 /*fromYearTiny (2051)*/,
7701  -49 /*toYearTiny (2051)*/,
7702  6 /*inMonth*/,
7703  0 /*onDayOfWeek*/,
7704  17 /*onDayOfMonth*/,
7705  8 /*atTimeCode*/,
7706  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7707  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7708  7 /*letterIndex ("S")*/,
7709  },
7710  // Rule Palestine 2052 only - Apr 27 2:00 0 -
7711  {
7712  -48 /*fromYearTiny (2052)*/,
7713  -48 /*toYearTiny (2052)*/,
7714  4 /*inMonth*/,
7715  0 /*onDayOfWeek*/,
7716  27 /*onDayOfMonth*/,
7717  8 /*atTimeCode*/,
7718  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7719  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7720  0 /*letterIndex ("")*/,
7721  },
7722  // Rule Palestine 2052 only - Jun 1 2:00 1:00 S
7723  {
7724  -48 /*fromYearTiny (2052)*/,
7725  -48 /*toYearTiny (2052)*/,
7726  6 /*inMonth*/,
7727  0 /*onDayOfWeek*/,
7728  1 /*onDayOfMonth*/,
7729  8 /*atTimeCode*/,
7730  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7731  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7732  7 /*letterIndex ("S")*/,
7733  },
7734  // Rule Palestine 2053 only - Apr 12 2:00 0 -
7735  {
7736  -47 /*fromYearTiny (2053)*/,
7737  -47 /*toYearTiny (2053)*/,
7738  4 /*inMonth*/,
7739  0 /*onDayOfWeek*/,
7740  12 /*onDayOfMonth*/,
7741  8 /*atTimeCode*/,
7742  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7743  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7744  0 /*letterIndex ("")*/,
7745  },
7746  // Rule Palestine 2053 only - May 24 2:00 1:00 S
7747  {
7748  -47 /*fromYearTiny (2053)*/,
7749  -47 /*toYearTiny (2053)*/,
7750  5 /*inMonth*/,
7751  0 /*onDayOfWeek*/,
7752  24 /*onDayOfMonth*/,
7753  8 /*atTimeCode*/,
7754  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7755  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7756  7 /*letterIndex ("S")*/,
7757  },
7758  // Rule Palestine 2054 only - Apr 4 2:00 0 -
7759  {
7760  -46 /*fromYearTiny (2054)*/,
7761  -46 /*toYearTiny (2054)*/,
7762  4 /*inMonth*/,
7763  0 /*onDayOfWeek*/,
7764  4 /*onDayOfMonth*/,
7765  8 /*atTimeCode*/,
7766  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7767  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7768  0 /*letterIndex ("")*/,
7769  },
7770  // Rule Palestine 2054 only - May 16 2:00 1:00 S
7771  {
7772  -46 /*fromYearTiny (2054)*/,
7773  -46 /*toYearTiny (2054)*/,
7774  5 /*inMonth*/,
7775  0 /*onDayOfWeek*/,
7776  16 /*onDayOfMonth*/,
7777  8 /*atTimeCode*/,
7778  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7779  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7780  7 /*letterIndex ("S")*/,
7781  },
7782  // Rule Palestine 2055 only - May 1 2:00 1:00 S
7783  {
7784  -45 /*fromYearTiny (2055)*/,
7785  -45 /*toYearTiny (2055)*/,
7786  5 /*inMonth*/,
7787  0 /*onDayOfWeek*/,
7788  1 /*onDayOfMonth*/,
7789  8 /*atTimeCode*/,
7790  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7791  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7792  7 /*letterIndex ("S")*/,
7793  },
7794  // Rule Palestine 2056 only - Apr 22 2:00 1:00 S
7795  {
7796  -44 /*fromYearTiny (2056)*/,
7797  -44 /*toYearTiny (2056)*/,
7798  4 /*inMonth*/,
7799  0 /*onDayOfWeek*/,
7800  22 /*onDayOfMonth*/,
7801  8 /*atTimeCode*/,
7802  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7803  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7804  7 /*letterIndex ("S")*/,
7805  },
7806  // Rule Palestine 2057 only - Apr 7 2:00 1:00 S
7807  {
7808  -43 /*fromYearTiny (2057)*/,
7809  -43 /*toYearTiny (2057)*/,
7810  4 /*inMonth*/,
7811  0 /*onDayOfWeek*/,
7812  7 /*onDayOfMonth*/,
7813  8 /*atTimeCode*/,
7814  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7815  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7816  7 /*letterIndex ("S")*/,
7817  },
7818  // Rule Palestine 2058 max - Mar Sat<=30 2:00 1:00 S
7819  {
7820  -42 /*fromYearTiny (2058)*/,
7821  126 /*toYearTiny (32766)*/,
7822  3 /*inMonth*/,
7823  6 /*onDayOfWeek*/,
7824  -30 /*onDayOfMonth*/,
7825  8 /*atTimeCode*/,
7826  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7827  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7828  7 /*letterIndex ("S")*/,
7829  },
7830  // Rule Palestine 2068 only - Oct 20 2:00 0 -
7831  {
7832  -32 /*fromYearTiny (2068)*/,
7833  -32 /*toYearTiny (2068)*/,
7834  10 /*inMonth*/,
7835  0 /*onDayOfWeek*/,
7836  20 /*onDayOfMonth*/,
7837  8 /*atTimeCode*/,
7838  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7839  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7840  0 /*letterIndex ("")*/,
7841  },
7842  // Rule Palestine 2069 only - Oct 12 2:00 0 -
7843  {
7844  -31 /*fromYearTiny (2069)*/,
7845  -31 /*toYearTiny (2069)*/,
7846  10 /*inMonth*/,
7847  0 /*onDayOfWeek*/,
7848  12 /*onDayOfMonth*/,
7849  8 /*atTimeCode*/,
7850  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7851  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7852  0 /*letterIndex ("")*/,
7853  },
7854  // Rule Palestine 2070 only - Oct 4 2:00 0 -
7855  {
7856  -30 /*fromYearTiny (2070)*/,
7857  -30 /*toYearTiny (2070)*/,
7858  10 /*inMonth*/,
7859  0 /*onDayOfWeek*/,
7860  4 /*onDayOfMonth*/,
7861  8 /*atTimeCode*/,
7862  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7863  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7864  0 /*letterIndex ("")*/,
7865  },
7866  // Rule Palestine 2071 only - Sep 19 2:00 0 -
7867  {
7868  -29 /*fromYearTiny (2071)*/,
7869  -29 /*toYearTiny (2071)*/,
7870  9 /*inMonth*/,
7871  0 /*onDayOfWeek*/,
7872  19 /*onDayOfMonth*/,
7873  8 /*atTimeCode*/,
7874  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7875  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7876  0 /*letterIndex ("")*/,
7877  },
7878  // Rule Palestine 2072 only - Sep 10 2:00 0 -
7879  {
7880  -28 /*fromYearTiny (2072)*/,
7881  -28 /*toYearTiny (2072)*/,
7882  9 /*inMonth*/,
7883  0 /*onDayOfWeek*/,
7884  10 /*onDayOfMonth*/,
7885  8 /*atTimeCode*/,
7886  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7887  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7888  0 /*letterIndex ("")*/,
7889  },
7890  // Rule Palestine 2072 only - Oct 15 2:00 1:00 S
7891  {
7892  -28 /*fromYearTiny (2072)*/,
7893  -28 /*toYearTiny (2072)*/,
7894  10 /*inMonth*/,
7895  0 /*onDayOfWeek*/,
7896  15 /*onDayOfMonth*/,
7897  8 /*atTimeCode*/,
7898  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7899  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7900  7 /*letterIndex ("S")*/,
7901  },
7902  // Rule Palestine 2073 only - Sep 2 2:00 0 -
7903  {
7904  -27 /*fromYearTiny (2073)*/,
7905  -27 /*toYearTiny (2073)*/,
7906  9 /*inMonth*/,
7907  0 /*onDayOfWeek*/,
7908  2 /*onDayOfMonth*/,
7909  8 /*atTimeCode*/,
7910  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7911  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7912  0 /*letterIndex ("")*/,
7913  },
7914  // Rule Palestine 2073 only - Oct 7 2:00 1:00 S
7915  {
7916  -27 /*fromYearTiny (2073)*/,
7917  -27 /*toYearTiny (2073)*/,
7918  10 /*inMonth*/,
7919  0 /*onDayOfWeek*/,
7920  7 /*onDayOfMonth*/,
7921  8 /*atTimeCode*/,
7922  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7923  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7924  7 /*letterIndex ("S")*/,
7925  },
7926  // Rule Palestine 2074 only - Aug 18 2:00 0 -
7927  {
7928  -26 /*fromYearTiny (2074)*/,
7929  -26 /*toYearTiny (2074)*/,
7930  8 /*inMonth*/,
7931  0 /*onDayOfWeek*/,
7932  18 /*onDayOfMonth*/,
7933  8 /*atTimeCode*/,
7934  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7935  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7936  0 /*letterIndex ("")*/,
7937  },
7938  // Rule Palestine 2074 only - Sep 29 2:00 1:00 S
7939  {
7940  -26 /*fromYearTiny (2074)*/,
7941  -26 /*toYearTiny (2074)*/,
7942  9 /*inMonth*/,
7943  0 /*onDayOfWeek*/,
7944  29 /*onDayOfMonth*/,
7945  8 /*atTimeCode*/,
7946  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7947  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7948  7 /*letterIndex ("S")*/,
7949  },
7950  // Rule Palestine 2075 only - Aug 10 2:00 0 -
7951  {
7952  -25 /*fromYearTiny (2075)*/,
7953  -25 /*toYearTiny (2075)*/,
7954  8 /*inMonth*/,
7955  0 /*onDayOfWeek*/,
7956  10 /*onDayOfMonth*/,
7957  8 /*atTimeCode*/,
7958  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7959  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7960  0 /*letterIndex ("")*/,
7961  },
7962  // Rule Palestine 2075 only - Sep 14 2:00 1:00 S
7963  {
7964  -25 /*fromYearTiny (2075)*/,
7965  -25 /*toYearTiny (2075)*/,
7966  9 /*inMonth*/,
7967  0 /*onDayOfWeek*/,
7968  14 /*onDayOfMonth*/,
7969  8 /*atTimeCode*/,
7970  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7971  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
7972  7 /*letterIndex ("S")*/,
7973  },
7974  // Rule Palestine 2075 max - Oct Sat<=30 2:00 0 -
7975  {
7976  -25 /*fromYearTiny (2075)*/,
7977  126 /*toYearTiny (32766)*/,
7978  10 /*inMonth*/,
7979  6 /*onDayOfWeek*/,
7980  -30 /*onDayOfMonth*/,
7981  8 /*atTimeCode*/,
7982  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7983  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7984  0 /*letterIndex ("")*/,
7985  },
7986  // Rule Palestine 2076 only - Jul 25 2:00 0 -
7987  {
7988  -24 /*fromYearTiny (2076)*/,
7989  -24 /*toYearTiny (2076)*/,
7990  7 /*inMonth*/,
7991  0 /*onDayOfWeek*/,
7992  25 /*onDayOfMonth*/,
7993  8 /*atTimeCode*/,
7994  0 /*atTimeModifier (kSuffixW + minute=0)*/,
7995  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
7996  0 /*letterIndex ("")*/,
7997  },
7998  // Rule Palestine 2076 only - Sep 5 2:00 1:00 S
7999  {
8000  -24 /*fromYearTiny (2076)*/,
8001  -24 /*toYearTiny (2076)*/,
8002  9 /*inMonth*/,
8003  0 /*onDayOfWeek*/,
8004  5 /*onDayOfMonth*/,
8005  8 /*atTimeCode*/,
8006  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8007  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8008  7 /*letterIndex ("S")*/,
8009  },
8010  // Rule Palestine 2077 only - Jul 17 2:00 0 -
8011  {
8012  -23 /*fromYearTiny (2077)*/,
8013  -23 /*toYearTiny (2077)*/,
8014  7 /*inMonth*/,
8015  0 /*onDayOfWeek*/,
8016  17 /*onDayOfMonth*/,
8017  8 /*atTimeCode*/,
8018  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8019  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8020  0 /*letterIndex ("")*/,
8021  },
8022  // Rule Palestine 2077 only - Aug 28 2:00 1:00 S
8023  {
8024  -23 /*fromYearTiny (2077)*/,
8025  -23 /*toYearTiny (2077)*/,
8026  8 /*inMonth*/,
8027  0 /*onDayOfWeek*/,
8028  28 /*onDayOfMonth*/,
8029  8 /*atTimeCode*/,
8030  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8031  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8032  7 /*letterIndex ("S")*/,
8033  },
8034  // Rule Palestine 2078 only - Jul 9 2:00 0 -
8035  {
8036  -22 /*fromYearTiny (2078)*/,
8037  -22 /*toYearTiny (2078)*/,
8038  7 /*inMonth*/,
8039  0 /*onDayOfWeek*/,
8040  9 /*onDayOfMonth*/,
8041  8 /*atTimeCode*/,
8042  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8043  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8044  0 /*letterIndex ("")*/,
8045  },
8046  // Rule Palestine 2078 only - Aug 13 2:00 1:00 S
8047  {
8048  -22 /*fromYearTiny (2078)*/,
8049  -22 /*toYearTiny (2078)*/,
8050  8 /*inMonth*/,
8051  0 /*onDayOfWeek*/,
8052  13 /*onDayOfMonth*/,
8053  8 /*atTimeCode*/,
8054  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8055  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8056  7 /*letterIndex ("S")*/,
8057  },
8058  // Rule Palestine 2079 only - Jun 24 2:00 0 -
8059  {
8060  -21 /*fromYearTiny (2079)*/,
8061  -21 /*toYearTiny (2079)*/,
8062  6 /*inMonth*/,
8063  0 /*onDayOfWeek*/,
8064  24 /*onDayOfMonth*/,
8065  8 /*atTimeCode*/,
8066  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8067  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8068  0 /*letterIndex ("")*/,
8069  },
8070  // Rule Palestine 2079 only - Aug 5 2:00 1:00 S
8071  {
8072  -21 /*fromYearTiny (2079)*/,
8073  -21 /*toYearTiny (2079)*/,
8074  8 /*inMonth*/,
8075  0 /*onDayOfWeek*/,
8076  5 /*onDayOfMonth*/,
8077  8 /*atTimeCode*/,
8078  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8079  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8080  7 /*letterIndex ("S")*/,
8081  },
8082  // Rule Palestine 2080 only - Jun 15 2:00 0 -
8083  {
8084  -20 /*fromYearTiny (2080)*/,
8085  -20 /*toYearTiny (2080)*/,
8086  6 /*inMonth*/,
8087  0 /*onDayOfWeek*/,
8088  15 /*onDayOfMonth*/,
8089  8 /*atTimeCode*/,
8090  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8091  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8092  0 /*letterIndex ("")*/,
8093  },
8094  // Rule Palestine 2080 only - Jul 20 2:00 1:00 S
8095  {
8096  -20 /*fromYearTiny (2080)*/,
8097  -20 /*toYearTiny (2080)*/,
8098  7 /*inMonth*/,
8099  0 /*onDayOfWeek*/,
8100  20 /*onDayOfMonth*/,
8101  8 /*atTimeCode*/,
8102  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8103  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8104  7 /*letterIndex ("S")*/,
8105  },
8106  // Rule Palestine 2081 only - Jun 7 2:00 0 -
8107  {
8108  -19 /*fromYearTiny (2081)*/,
8109  -19 /*toYearTiny (2081)*/,
8110  6 /*inMonth*/,
8111  0 /*onDayOfWeek*/,
8112  7 /*onDayOfMonth*/,
8113  8 /*atTimeCode*/,
8114  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8115  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8116  0 /*letterIndex ("")*/,
8117  },
8118  // Rule Palestine 2081 only - Jul 12 2:00 1:00 S
8119  {
8120  -19 /*fromYearTiny (2081)*/,
8121  -19 /*toYearTiny (2081)*/,
8122  7 /*inMonth*/,
8123  0 /*onDayOfWeek*/,
8124  12 /*onDayOfMonth*/,
8125  8 /*atTimeCode*/,
8126  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8127  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8128  7 /*letterIndex ("S")*/,
8129  },
8130  // Rule Palestine 2082 only - May 23 2:00 0 -
8131  {
8132  -18 /*fromYearTiny (2082)*/,
8133  -18 /*toYearTiny (2082)*/,
8134  5 /*inMonth*/,
8135  0 /*onDayOfWeek*/,
8136  23 /*onDayOfMonth*/,
8137  8 /*atTimeCode*/,
8138  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8139  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8140  0 /*letterIndex ("")*/,
8141  },
8142  // Rule Palestine 2082 only - Jul 4 2:00 1:00 S
8143  {
8144  -18 /*fromYearTiny (2082)*/,
8145  -18 /*toYearTiny (2082)*/,
8146  7 /*inMonth*/,
8147  0 /*onDayOfWeek*/,
8148  4 /*onDayOfMonth*/,
8149  8 /*atTimeCode*/,
8150  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8151  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8152  7 /*letterIndex ("S")*/,
8153  },
8154  // Rule Palestine 2083 only - May 15 2:00 0 -
8155  {
8156  -17 /*fromYearTiny (2083)*/,
8157  -17 /*toYearTiny (2083)*/,
8158  5 /*inMonth*/,
8159  0 /*onDayOfWeek*/,
8160  15 /*onDayOfMonth*/,
8161  8 /*atTimeCode*/,
8162  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8163  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8164  0 /*letterIndex ("")*/,
8165  },
8166  // Rule Palestine 2083 only - Jun 19 2:00 1:00 S
8167  {
8168  -17 /*fromYearTiny (2083)*/,
8169  -17 /*toYearTiny (2083)*/,
8170  6 /*inMonth*/,
8171  0 /*onDayOfWeek*/,
8172  19 /*onDayOfMonth*/,
8173  8 /*atTimeCode*/,
8174  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8175  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8176  7 /*letterIndex ("S")*/,
8177  },
8178  // Rule Palestine 2084 only - Apr 29 2:00 0 -
8179  {
8180  -16 /*fromYearTiny (2084)*/,
8181  -16 /*toYearTiny (2084)*/,
8182  4 /*inMonth*/,
8183  0 /*onDayOfWeek*/,
8184  29 /*onDayOfMonth*/,
8185  8 /*atTimeCode*/,
8186  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8187  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8188  0 /*letterIndex ("")*/,
8189  },
8190  // Rule Palestine 2084 only - Jun 10 2:00 1:00 S
8191  {
8192  -16 /*fromYearTiny (2084)*/,
8193  -16 /*toYearTiny (2084)*/,
8194  6 /*inMonth*/,
8195  0 /*onDayOfWeek*/,
8196  10 /*onDayOfMonth*/,
8197  8 /*atTimeCode*/,
8198  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8199  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8200  7 /*letterIndex ("S")*/,
8201  },
8202  // Rule Palestine 2085 only - Apr 21 2:00 0 -
8203  {
8204  -15 /*fromYearTiny (2085)*/,
8205  -15 /*toYearTiny (2085)*/,
8206  4 /*inMonth*/,
8207  0 /*onDayOfWeek*/,
8208  21 /*onDayOfMonth*/,
8209  8 /*atTimeCode*/,
8210  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8211  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8212  0 /*letterIndex ("")*/,
8213  },
8214  // Rule Palestine 2085 only - Jun 2 2:00 1:00 S
8215  {
8216  -15 /*fromYearTiny (2085)*/,
8217  -15 /*toYearTiny (2085)*/,
8218  6 /*inMonth*/,
8219  0 /*onDayOfWeek*/,
8220  2 /*onDayOfMonth*/,
8221  8 /*atTimeCode*/,
8222  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8223  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8224  7 /*letterIndex ("S")*/,
8225  },
8226  // Rule Palestine 2086 only - Apr 13 2:00 0 -
8227  {
8228  -14 /*fromYearTiny (2086)*/,
8229  -14 /*toYearTiny (2086)*/,
8230  4 /*inMonth*/,
8231  0 /*onDayOfWeek*/,
8232  13 /*onDayOfMonth*/,
8233  8 /*atTimeCode*/,
8234  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8235  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8236  0 /*letterIndex ("")*/,
8237  },
8238  // Rule Palestine 2086 only - May 18 2:00 1:00 S
8239  {
8240  -14 /*fromYearTiny (2086)*/,
8241  -14 /*toYearTiny (2086)*/,
8242  5 /*inMonth*/,
8243  0 /*onDayOfWeek*/,
8244  18 /*onDayOfMonth*/,
8245  8 /*atTimeCode*/,
8246  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8247  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8248  7 /*letterIndex ("S")*/,
8249  },
8250 
8251 };
8252 
8253 const extended::ZonePolicy kZonePolicyPalestine ACE_TIME_PROGMEM = {
8254  kZoneRulesPalestine /*rules*/,
8255  111 /*numRules*/,
8256 };
8257 
8258 //---------------------------------------------------------------------------
8259 // Policy name: Para
8260 // Rules: 11
8261 //---------------------------------------------------------------------------
8262 
8263 static const extended::ZoneRule kZoneRulesPara[] ACE_TIME_PROGMEM = {
8264  // Anchor: Rule Para 1997 only - Feb lastSun 0:00 0 -
8265  {
8266  -127 /*fromYearTiny (-32767)*/,
8267  -127 /*toYearTiny (-32767)*/,
8268  1 /*inMonth*/,
8269  0 /*onDayOfWeek*/,
8270  1 /*onDayOfMonth*/,
8271  0 /*atTimeCode*/,
8272  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8273  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8274  0 /*letterIndex ("")*/,
8275  },
8276  // Rule Para 1996 2001 - Oct Sun>=1 0:00 1:00 -
8277  {
8278  -104 /*fromYearTiny (1996)*/,
8279  -99 /*toYearTiny (2001)*/,
8280  10 /*inMonth*/,
8281  7 /*onDayOfWeek*/,
8282  1 /*onDayOfMonth*/,
8283  0 /*atTimeCode*/,
8284  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8285  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8286  0 /*letterIndex ("")*/,
8287  },
8288  // Rule Para 1997 only - Feb lastSun 0:00 0 -
8289  {
8290  -103 /*fromYearTiny (1997)*/,
8291  -103 /*toYearTiny (1997)*/,
8292  2 /*inMonth*/,
8293  7 /*onDayOfWeek*/,
8294  0 /*onDayOfMonth*/,
8295  0 /*atTimeCode*/,
8296  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8297  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8298  0 /*letterIndex ("")*/,
8299  },
8300  // Rule Para 1998 2001 - Mar Sun>=1 0:00 0 -
8301  {
8302  -102 /*fromYearTiny (1998)*/,
8303  -99 /*toYearTiny (2001)*/,
8304  3 /*inMonth*/,
8305  7 /*onDayOfWeek*/,
8306  1 /*onDayOfMonth*/,
8307  0 /*atTimeCode*/,
8308  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8309  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8310  0 /*letterIndex ("")*/,
8311  },
8312  // Rule Para 2002 2004 - Apr Sun>=1 0:00 0 -
8313  {
8314  -98 /*fromYearTiny (2002)*/,
8315  -96 /*toYearTiny (2004)*/,
8316  4 /*inMonth*/,
8317  7 /*onDayOfWeek*/,
8318  1 /*onDayOfMonth*/,
8319  0 /*atTimeCode*/,
8320  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8321  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8322  0 /*letterIndex ("")*/,
8323  },
8324  // Rule Para 2002 2003 - Sep Sun>=1 0:00 1:00 -
8325  {
8326  -98 /*fromYearTiny (2002)*/,
8327  -97 /*toYearTiny (2003)*/,
8328  9 /*inMonth*/,
8329  7 /*onDayOfWeek*/,
8330  1 /*onDayOfMonth*/,
8331  0 /*atTimeCode*/,
8332  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8333  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8334  0 /*letterIndex ("")*/,
8335  },
8336  // Rule Para 2004 2009 - Oct Sun>=15 0:00 1:00 -
8337  {
8338  -96 /*fromYearTiny (2004)*/,
8339  -91 /*toYearTiny (2009)*/,
8340  10 /*inMonth*/,
8341  7 /*onDayOfWeek*/,
8342  15 /*onDayOfMonth*/,
8343  0 /*atTimeCode*/,
8344  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8345  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8346  0 /*letterIndex ("")*/,
8347  },
8348  // Rule Para 2005 2009 - Mar Sun>=8 0:00 0 -
8349  {
8350  -95 /*fromYearTiny (2005)*/,
8351  -91 /*toYearTiny (2009)*/,
8352  3 /*inMonth*/,
8353  7 /*onDayOfWeek*/,
8354  8 /*onDayOfMonth*/,
8355  0 /*atTimeCode*/,
8356  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8357  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8358  0 /*letterIndex ("")*/,
8359  },
8360  // Rule Para 2010 max - Oct Sun>=1 0:00 1:00 -
8361  {
8362  -90 /*fromYearTiny (2010)*/,
8363  126 /*toYearTiny (32766)*/,
8364  10 /*inMonth*/,
8365  7 /*onDayOfWeek*/,
8366  1 /*onDayOfMonth*/,
8367  0 /*atTimeCode*/,
8368  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8369  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8370  0 /*letterIndex ("")*/,
8371  },
8372  // Rule Para 2010 2012 - Apr Sun>=8 0:00 0 -
8373  {
8374  -90 /*fromYearTiny (2010)*/,
8375  -88 /*toYearTiny (2012)*/,
8376  4 /*inMonth*/,
8377  7 /*onDayOfWeek*/,
8378  8 /*onDayOfMonth*/,
8379  0 /*atTimeCode*/,
8380  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8381  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8382  0 /*letterIndex ("")*/,
8383  },
8384  // Rule Para 2013 max - Mar Sun>=22 0:00 0 -
8385  {
8386  -87 /*fromYearTiny (2013)*/,
8387  126 /*toYearTiny (32766)*/,
8388  3 /*inMonth*/,
8389  7 /*onDayOfWeek*/,
8390  22 /*onDayOfMonth*/,
8391  0 /*atTimeCode*/,
8392  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8393  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8394  0 /*letterIndex ("")*/,
8395  },
8396 
8397 };
8398 
8399 const extended::ZonePolicy kZonePolicyPara ACE_TIME_PROGMEM = {
8400  kZoneRulesPara /*rules*/,
8401  11 /*numRules*/,
8402 };
8403 
8404 //---------------------------------------------------------------------------
8405 // Policy name: Peru
8406 // Rules: 1
8407 //---------------------------------------------------------------------------
8408 
8409 static const extended::ZoneRule kZoneRulesPeru[] ACE_TIME_PROGMEM = {
8410  // Anchor: Rule Peru 1994 only - Apr 1 0:00 0 -
8411  {
8412  -127 /*fromYearTiny (-32767)*/,
8413  -127 /*toYearTiny (-32767)*/,
8414  1 /*inMonth*/,
8415  0 /*onDayOfWeek*/,
8416  1 /*onDayOfMonth*/,
8417  0 /*atTimeCode*/,
8418  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8419  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8420  0 /*letterIndex ("")*/,
8421  },
8422 
8423 };
8424 
8425 const extended::ZonePolicy kZonePolicyPeru ACE_TIME_PROGMEM = {
8426  kZoneRulesPeru /*rules*/,
8427  1 /*numRules*/,
8428 };
8429 
8430 //---------------------------------------------------------------------------
8431 // Policy name: Phil
8432 // Rules: 1
8433 //---------------------------------------------------------------------------
8434 
8435 static const extended::ZoneRule kZoneRulesPhil[] ACE_TIME_PROGMEM = {
8436  // Anchor: Rule Phil 1978 only - Sep 21 0:00 0 S
8437  {
8438  -127 /*fromYearTiny (-32767)*/,
8439  -127 /*toYearTiny (-32767)*/,
8440  1 /*inMonth*/,
8441  0 /*onDayOfWeek*/,
8442  1 /*onDayOfMonth*/,
8443  0 /*atTimeCode*/,
8444  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8445  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8446  7 /*letterIndex ("S")*/,
8447  },
8448 
8449 };
8450 
8451 const extended::ZonePolicy kZonePolicyPhil ACE_TIME_PROGMEM = {
8452  kZoneRulesPhil /*rules*/,
8453  1 /*numRules*/,
8454 };
8455 
8456 //---------------------------------------------------------------------------
8457 // Policy name: ROK
8458 // Rules: 1
8459 //---------------------------------------------------------------------------
8460 
8461 static const extended::ZoneRule kZoneRulesROK[] ACE_TIME_PROGMEM = {
8462  // Anchor: Rule ROK 1987 1988 - Oct Sun>=8 3:00 0 S
8463  {
8464  -127 /*fromYearTiny (-32767)*/,
8465  -127 /*toYearTiny (-32767)*/,
8466  1 /*inMonth*/,
8467  0 /*onDayOfWeek*/,
8468  1 /*onDayOfMonth*/,
8469  0 /*atTimeCode*/,
8470  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8471  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8472  7 /*letterIndex ("S")*/,
8473  },
8474 
8475 };
8476 
8477 const extended::ZonePolicy kZonePolicyROK ACE_TIME_PROGMEM = {
8478  kZoneRulesROK /*rules*/,
8479  1 /*numRules*/,
8480 };
8481 
8482 //---------------------------------------------------------------------------
8483 // Policy name: Russia
8484 // Rules: 4
8485 //---------------------------------------------------------------------------
8486 
8487 static const extended::ZoneRule kZoneRulesRussia[] ACE_TIME_PROGMEM = {
8488  // Anchor: Rule Russia 1984 1995 - Sep lastSun 2:00s 0 -
8489  {
8490  -127 /*fromYearTiny (-32767)*/,
8491  -127 /*toYearTiny (-32767)*/,
8492  1 /*inMonth*/,
8493  0 /*onDayOfWeek*/,
8494  1 /*onDayOfMonth*/,
8495  0 /*atTimeCode*/,
8496  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8497  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8498  0 /*letterIndex ("")*/,
8499  },
8500  // Rule Russia 1984 1995 - Sep lastSun 2:00s 0 -
8501  {
8502  -116 /*fromYearTiny (1984)*/,
8503  -105 /*toYearTiny (1995)*/,
8504  9 /*inMonth*/,
8505  7 /*onDayOfWeek*/,
8506  0 /*onDayOfMonth*/,
8507  8 /*atTimeCode*/,
8508  16 /*atTimeModifier (kSuffixS + minute=0)*/,
8509  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8510  0 /*letterIndex ("")*/,
8511  },
8512  // Rule Russia 1985 2010 - Mar lastSun 2:00s 1:00 S
8513  {
8514  -115 /*fromYearTiny (1985)*/,
8515  -90 /*toYearTiny (2010)*/,
8516  3 /*inMonth*/,
8517  7 /*onDayOfWeek*/,
8518  0 /*onDayOfMonth*/,
8519  8 /*atTimeCode*/,
8520  16 /*atTimeModifier (kSuffixS + minute=0)*/,
8521  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8522  7 /*letterIndex ("S")*/,
8523  },
8524  // Rule Russia 1996 2010 - Oct lastSun 2:00s 0 -
8525  {
8526  -104 /*fromYearTiny (1996)*/,
8527  -90 /*toYearTiny (2010)*/,
8528  10 /*inMonth*/,
8529  7 /*onDayOfWeek*/,
8530  0 /*onDayOfMonth*/,
8531  8 /*atTimeCode*/,
8532  16 /*atTimeModifier (kSuffixS + minute=0)*/,
8533  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8534  0 /*letterIndex ("")*/,
8535  },
8536 
8537 };
8538 
8539 const extended::ZonePolicy kZonePolicyRussia ACE_TIME_PROGMEM = {
8540  kZoneRulesRussia /*rules*/,
8541  4 /*numRules*/,
8542 };
8543 
8544 //---------------------------------------------------------------------------
8545 // Policy name: RussiaAsia
8546 // Rules: 4
8547 //---------------------------------------------------------------------------
8548 
8549 static const extended::ZoneRule kZoneRulesRussiaAsia[] ACE_TIME_PROGMEM = {
8550  // Anchor: Rule RussiaAsia 1984 1995 - Sep lastSun 2:00s 0 -
8551  {
8552  -127 /*fromYearTiny (-32767)*/,
8553  -127 /*toYearTiny (-32767)*/,
8554  1 /*inMonth*/,
8555  0 /*onDayOfWeek*/,
8556  1 /*onDayOfMonth*/,
8557  0 /*atTimeCode*/,
8558  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8559  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8560  0 /*letterIndex ("")*/,
8561  },
8562  // Rule RussiaAsia 1984 1995 - Sep lastSun 2:00s 0 -
8563  {
8564  -116 /*fromYearTiny (1984)*/,
8565  -105 /*toYearTiny (1995)*/,
8566  9 /*inMonth*/,
8567  7 /*onDayOfWeek*/,
8568  0 /*onDayOfMonth*/,
8569  8 /*atTimeCode*/,
8570  16 /*atTimeModifier (kSuffixS + minute=0)*/,
8571  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8572  0 /*letterIndex ("")*/,
8573  },
8574  // Rule RussiaAsia 1985 2010 - Mar lastSun 2:00s 1:00 -
8575  {
8576  -115 /*fromYearTiny (1985)*/,
8577  -90 /*toYearTiny (2010)*/,
8578  3 /*inMonth*/,
8579  7 /*onDayOfWeek*/,
8580  0 /*onDayOfMonth*/,
8581  8 /*atTimeCode*/,
8582  16 /*atTimeModifier (kSuffixS + minute=0)*/,
8583  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8584  0 /*letterIndex ("")*/,
8585  },
8586  // Rule RussiaAsia 1996 2010 - Oct lastSun 2:00s 0 -
8587  {
8588  -104 /*fromYearTiny (1996)*/,
8589  -90 /*toYearTiny (2010)*/,
8590  10 /*inMonth*/,
8591  7 /*onDayOfWeek*/,
8592  0 /*onDayOfMonth*/,
8593  8 /*atTimeCode*/,
8594  16 /*atTimeModifier (kSuffixS + minute=0)*/,
8595  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8596  0 /*letterIndex ("")*/,
8597  },
8598 
8599 };
8600 
8601 const extended::ZonePolicy kZonePolicyRussiaAsia ACE_TIME_PROGMEM = {
8602  kZoneRulesRussiaAsia /*rules*/,
8603  4 /*numRules*/,
8604 };
8605 
8606 //---------------------------------------------------------------------------
8607 // Policy name: SA
8608 // Rules: 1
8609 //---------------------------------------------------------------------------
8610 
8611 static const extended::ZoneRule kZoneRulesSA[] ACE_TIME_PROGMEM = {
8612  // Anchor: Rule SA 1943 1944 - Mar Sun>=15 2:00 0 -
8613  {
8614  -127 /*fromYearTiny (-32767)*/,
8615  -127 /*toYearTiny (-32767)*/,
8616  1 /*inMonth*/,
8617  0 /*onDayOfWeek*/,
8618  1 /*onDayOfMonth*/,
8619  0 /*atTimeCode*/,
8620  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8621  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8622  0 /*letterIndex ("")*/,
8623  },
8624 
8625 };
8626 
8627 const extended::ZonePolicy kZonePolicySA ACE_TIME_PROGMEM = {
8628  kZoneRulesSA /*rules*/,
8629  1 /*numRules*/,
8630 };
8631 
8632 //---------------------------------------------------------------------------
8633 // Policy name: Salv
8634 // Rules: 1
8635 //---------------------------------------------------------------------------
8636 
8637 static const extended::ZoneRule kZoneRulesSalv[] ACE_TIME_PROGMEM = {
8638  // Anchor: Rule Salv 1987 1988 - Sep lastSun 0:00 0 S
8639  {
8640  -127 /*fromYearTiny (-32767)*/,
8641  -127 /*toYearTiny (-32767)*/,
8642  1 /*inMonth*/,
8643  0 /*onDayOfWeek*/,
8644  1 /*onDayOfMonth*/,
8645  0 /*atTimeCode*/,
8646  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8647  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8648  7 /*letterIndex ("S")*/,
8649  },
8650 
8651 };
8652 
8653 const extended::ZonePolicy kZonePolicySalv ACE_TIME_PROGMEM = {
8654  kZoneRulesSalv /*rules*/,
8655  1 /*numRules*/,
8656 };
8657 
8658 //---------------------------------------------------------------------------
8659 // Policy name: SanLuis
8660 // Rules: 3
8661 //---------------------------------------------------------------------------
8662 
8663 static const extended::ZoneRule kZoneRulesSanLuis[] ACE_TIME_PROGMEM = {
8664  // Anchor: Rule SanLuis 2008 2009 - Mar Sun>=8 0:00 0 -
8665  {
8666  -127 /*fromYearTiny (-32767)*/,
8667  -127 /*toYearTiny (-32767)*/,
8668  1 /*inMonth*/,
8669  0 /*onDayOfWeek*/,
8670  1 /*onDayOfMonth*/,
8671  0 /*atTimeCode*/,
8672  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8673  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8674  0 /*letterIndex ("")*/,
8675  },
8676  // Rule SanLuis 2008 2009 - Mar Sun>=8 0:00 0 -
8677  {
8678  -92 /*fromYearTiny (2008)*/,
8679  -91 /*toYearTiny (2009)*/,
8680  3 /*inMonth*/,
8681  7 /*onDayOfWeek*/,
8682  8 /*onDayOfMonth*/,
8683  0 /*atTimeCode*/,
8684  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8685  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8686  0 /*letterIndex ("")*/,
8687  },
8688  // Rule SanLuis 2007 2008 - Oct Sun>=8 0:00 1:00 -
8689  {
8690  -93 /*fromYearTiny (2007)*/,
8691  -92 /*toYearTiny (2008)*/,
8692  10 /*inMonth*/,
8693  7 /*onDayOfWeek*/,
8694  8 /*onDayOfMonth*/,
8695  0 /*atTimeCode*/,
8696  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8697  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8698  0 /*letterIndex ("")*/,
8699  },
8700 
8701 };
8702 
8703 const extended::ZonePolicy kZonePolicySanLuis ACE_TIME_PROGMEM = {
8704  kZoneRulesSanLuis /*rules*/,
8705  3 /*numRules*/,
8706 };
8707 
8708 //---------------------------------------------------------------------------
8709 // Policy name: StJohns
8710 // Rules: 6
8711 //---------------------------------------------------------------------------
8712 
8713 static const extended::ZoneRule kZoneRulesStJohns[] ACE_TIME_PROGMEM = {
8714  // Anchor: Rule StJohns 1987 2006 - Oct lastSun 0:01 0 S
8715  {
8716  -127 /*fromYearTiny (-32767)*/,
8717  -127 /*toYearTiny (-32767)*/,
8718  1 /*inMonth*/,
8719  0 /*onDayOfWeek*/,
8720  1 /*onDayOfMonth*/,
8721  0 /*atTimeCode*/,
8722  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8723  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8724  7 /*letterIndex ("S")*/,
8725  },
8726  // Rule StJohns 1987 2006 - Oct lastSun 0:01 0 S
8727  {
8728  -113 /*fromYearTiny (1987)*/,
8729  -94 /*toYearTiny (2006)*/,
8730  10 /*inMonth*/,
8731  7 /*onDayOfWeek*/,
8732  0 /*onDayOfMonth*/,
8733  0 /*atTimeCode*/,
8734  1 /*atTimeModifier (kSuffixW + minute=1)*/,
8735  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8736  7 /*letterIndex ("S")*/,
8737  },
8738  // Rule StJohns 1988 only - Apr Sun>=1 0:01 2:00 DD
8739  {
8740  -112 /*fromYearTiny (1988)*/,
8741  -112 /*toYearTiny (1988)*/,
8742  4 /*inMonth*/,
8743  7 /*onDayOfWeek*/,
8744  1 /*onDayOfMonth*/,
8745  0 /*atTimeCode*/,
8746  1 /*atTimeModifier (kSuffixW + minute=1)*/,
8747  12 /*deltaCode ((deltaMinutes=120)/15 + 4)*/,
8748  6 /*letterIndex ("DD")*/,
8749  },
8750  // Rule StJohns 1989 2006 - Apr Sun>=1 0:01 1:00 D
8751  {
8752  -111 /*fromYearTiny (1989)*/,
8753  -94 /*toYearTiny (2006)*/,
8754  4 /*inMonth*/,
8755  7 /*onDayOfWeek*/,
8756  1 /*onDayOfMonth*/,
8757  0 /*atTimeCode*/,
8758  1 /*atTimeModifier (kSuffixW + minute=1)*/,
8759  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8760  5 /*letterIndex ("D")*/,
8761  },
8762  // Rule StJohns 2007 2011 - Mar Sun>=8 0:01 1:00 D
8763  {
8764  -93 /*fromYearTiny (2007)*/,
8765  -89 /*toYearTiny (2011)*/,
8766  3 /*inMonth*/,
8767  7 /*onDayOfWeek*/,
8768  8 /*onDayOfMonth*/,
8769  0 /*atTimeCode*/,
8770  1 /*atTimeModifier (kSuffixW + minute=1)*/,
8771  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8772  5 /*letterIndex ("D")*/,
8773  },
8774  // Rule StJohns 2007 2010 - Nov Sun>=1 0:01 0 S
8775  {
8776  -93 /*fromYearTiny (2007)*/,
8777  -90 /*toYearTiny (2010)*/,
8778  11 /*inMonth*/,
8779  7 /*onDayOfWeek*/,
8780  1 /*onDayOfMonth*/,
8781  0 /*atTimeCode*/,
8782  1 /*atTimeModifier (kSuffixW + minute=1)*/,
8783  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8784  7 /*letterIndex ("S")*/,
8785  },
8786 
8787 };
8788 
8789 const extended::ZonePolicy kZonePolicyStJohns ACE_TIME_PROGMEM = {
8790  kZoneRulesStJohns /*rules*/,
8791  6 /*numRules*/,
8792 };
8793 
8794 //---------------------------------------------------------------------------
8795 // Policy name: Sudan
8796 // Rules: 1
8797 //---------------------------------------------------------------------------
8798 
8799 static const extended::ZoneRule kZoneRulesSudan[] ACE_TIME_PROGMEM = {
8800  // Anchor: Rule Sudan 1970 1985 - Oct 15 0:00 0 -
8801  {
8802  -127 /*fromYearTiny (-32767)*/,
8803  -127 /*toYearTiny (-32767)*/,
8804  1 /*inMonth*/,
8805  0 /*onDayOfWeek*/,
8806  1 /*onDayOfMonth*/,
8807  0 /*atTimeCode*/,
8808  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8809  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8810  0 /*letterIndex ("")*/,
8811  },
8812 
8813 };
8814 
8815 const extended::ZonePolicy kZonePolicySudan ACE_TIME_PROGMEM = {
8816  kZoneRulesSudan /*rules*/,
8817  1 /*numRules*/,
8818 };
8819 
8820 //---------------------------------------------------------------------------
8821 // Policy name: Syria
8822 // Rules: 13
8823 //---------------------------------------------------------------------------
8824 
8825 static const extended::ZoneRule kZoneRulesSyria[] ACE_TIME_PROGMEM = {
8826  // Anchor: Rule Syria 1994 2005 - Oct 1 0:00 0 -
8827  {
8828  -127 /*fromYearTiny (-32767)*/,
8829  -127 /*toYearTiny (-32767)*/,
8830  1 /*inMonth*/,
8831  0 /*onDayOfWeek*/,
8832  1 /*onDayOfMonth*/,
8833  0 /*atTimeCode*/,
8834  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8835  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8836  0 /*letterIndex ("")*/,
8837  },
8838  // Rule Syria 1994 2005 - Oct 1 0:00 0 -
8839  {
8840  -106 /*fromYearTiny (1994)*/,
8841  -95 /*toYearTiny (2005)*/,
8842  10 /*inMonth*/,
8843  0 /*onDayOfWeek*/,
8844  1 /*onDayOfMonth*/,
8845  0 /*atTimeCode*/,
8846  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8847  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8848  0 /*letterIndex ("")*/,
8849  },
8850  // Rule Syria 1997 1998 - Mar lastMon 0:00 1:00 S
8851  {
8852  -103 /*fromYearTiny (1997)*/,
8853  -102 /*toYearTiny (1998)*/,
8854  3 /*inMonth*/,
8855  1 /*onDayOfWeek*/,
8856  0 /*onDayOfMonth*/,
8857  0 /*atTimeCode*/,
8858  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8859  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8860  7 /*letterIndex ("S")*/,
8861  },
8862  // Rule Syria 1999 2006 - Apr 1 0:00 1:00 S
8863  {
8864  -101 /*fromYearTiny (1999)*/,
8865  -94 /*toYearTiny (2006)*/,
8866  4 /*inMonth*/,
8867  0 /*onDayOfWeek*/,
8868  1 /*onDayOfMonth*/,
8869  0 /*atTimeCode*/,
8870  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8871  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8872  7 /*letterIndex ("S")*/,
8873  },
8874  // Rule Syria 2006 only - Sep 22 0:00 0 -
8875  {
8876  -94 /*fromYearTiny (2006)*/,
8877  -94 /*toYearTiny (2006)*/,
8878  9 /*inMonth*/,
8879  0 /*onDayOfWeek*/,
8880  22 /*onDayOfMonth*/,
8881  0 /*atTimeCode*/,
8882  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8883  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8884  0 /*letterIndex ("")*/,
8885  },
8886  // Rule Syria 2007 only - Mar lastFri 0:00 1:00 S
8887  {
8888  -93 /*fromYearTiny (2007)*/,
8889  -93 /*toYearTiny (2007)*/,
8890  3 /*inMonth*/,
8891  5 /*onDayOfWeek*/,
8892  0 /*onDayOfMonth*/,
8893  0 /*atTimeCode*/,
8894  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8895  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8896  7 /*letterIndex ("S")*/,
8897  },
8898  // Rule Syria 2007 only - Nov Fri>=1 0:00 0 -
8899  {
8900  -93 /*fromYearTiny (2007)*/,
8901  -93 /*toYearTiny (2007)*/,
8902  11 /*inMonth*/,
8903  5 /*onDayOfWeek*/,
8904  1 /*onDayOfMonth*/,
8905  0 /*atTimeCode*/,
8906  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8907  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8908  0 /*letterIndex ("")*/,
8909  },
8910  // Rule Syria 2008 only - Apr Fri>=1 0:00 1:00 S
8911  {
8912  -92 /*fromYearTiny (2008)*/,
8913  -92 /*toYearTiny (2008)*/,
8914  4 /*inMonth*/,
8915  5 /*onDayOfWeek*/,
8916  1 /*onDayOfMonth*/,
8917  0 /*atTimeCode*/,
8918  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8919  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8920  7 /*letterIndex ("S")*/,
8921  },
8922  // Rule Syria 2008 only - Nov 1 0:00 0 -
8923  {
8924  -92 /*fromYearTiny (2008)*/,
8925  -92 /*toYearTiny (2008)*/,
8926  11 /*inMonth*/,
8927  0 /*onDayOfWeek*/,
8928  1 /*onDayOfMonth*/,
8929  0 /*atTimeCode*/,
8930  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8931  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8932  0 /*letterIndex ("")*/,
8933  },
8934  // Rule Syria 2009 only - Mar lastFri 0:00 1:00 S
8935  {
8936  -91 /*fromYearTiny (2009)*/,
8937  -91 /*toYearTiny (2009)*/,
8938  3 /*inMonth*/,
8939  5 /*onDayOfWeek*/,
8940  0 /*onDayOfMonth*/,
8941  0 /*atTimeCode*/,
8942  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8943  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8944  7 /*letterIndex ("S")*/,
8945  },
8946  // Rule Syria 2010 2011 - Apr Fri>=1 0:00 1:00 S
8947  {
8948  -90 /*fromYearTiny (2010)*/,
8949  -89 /*toYearTiny (2011)*/,
8950  4 /*inMonth*/,
8951  5 /*onDayOfWeek*/,
8952  1 /*onDayOfMonth*/,
8953  0 /*atTimeCode*/,
8954  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8955  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8956  7 /*letterIndex ("S")*/,
8957  },
8958  // Rule Syria 2012 2022 - Mar lastFri 0:00 1:00 S
8959  {
8960  -88 /*fromYearTiny (2012)*/,
8961  -78 /*toYearTiny (2022)*/,
8962  3 /*inMonth*/,
8963  5 /*onDayOfWeek*/,
8964  0 /*onDayOfMonth*/,
8965  0 /*atTimeCode*/,
8966  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8967  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
8968  7 /*letterIndex ("S")*/,
8969  },
8970  // Rule Syria 2009 2022 - Oct lastFri 0:00 0 -
8971  {
8972  -91 /*fromYearTiny (2009)*/,
8973  -78 /*toYearTiny (2022)*/,
8974  10 /*inMonth*/,
8975  5 /*onDayOfWeek*/,
8976  0 /*onDayOfMonth*/,
8977  0 /*atTimeCode*/,
8978  0 /*atTimeModifier (kSuffixW + minute=0)*/,
8979  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
8980  0 /*letterIndex ("")*/,
8981  },
8982 
8983 };
8984 
8985 const extended::ZonePolicy kZonePolicySyria ACE_TIME_PROGMEM = {
8986  kZoneRulesSyria /*rules*/,
8987  13 /*numRules*/,
8988 };
8989 
8990 //---------------------------------------------------------------------------
8991 // Policy name: Taiwan
8992 // Rules: 1
8993 //---------------------------------------------------------------------------
8994 
8995 static const extended::ZoneRule kZoneRulesTaiwan[] ACE_TIME_PROGMEM = {
8996  // Anchor: Rule Taiwan 1979 only - Oct 1 0:00 0 S
8997  {
8998  -127 /*fromYearTiny (-32767)*/,
8999  -127 /*toYearTiny (-32767)*/,
9000  1 /*inMonth*/,
9001  0 /*onDayOfWeek*/,
9002  1 /*onDayOfMonth*/,
9003  0 /*atTimeCode*/,
9004  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9005  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9006  7 /*letterIndex ("S")*/,
9007  },
9008 
9009 };
9010 
9011 const extended::ZonePolicy kZonePolicyTaiwan ACE_TIME_PROGMEM = {
9012  kZoneRulesTaiwan /*rules*/,
9013  1 /*numRules*/,
9014 };
9015 
9016 //---------------------------------------------------------------------------
9017 // Policy name: Thule
9018 // Rules: 6
9019 //---------------------------------------------------------------------------
9020 
9021 static const extended::ZoneRule kZoneRulesThule[] ACE_TIME_PROGMEM = {
9022  // Anchor: Rule Thule 1991 1992 - Sep lastSun 2:00 0 S
9023  {
9024  -127 /*fromYearTiny (-32767)*/,
9025  -127 /*toYearTiny (-32767)*/,
9026  1 /*inMonth*/,
9027  0 /*onDayOfWeek*/,
9028  1 /*onDayOfMonth*/,
9029  0 /*atTimeCode*/,
9030  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9031  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9032  7 /*letterIndex ("S")*/,
9033  },
9034  // Rule Thule 1991 1992 - Sep lastSun 2:00 0 S
9035  {
9036  -109 /*fromYearTiny (1991)*/,
9037  -108 /*toYearTiny (1992)*/,
9038  9 /*inMonth*/,
9039  7 /*onDayOfWeek*/,
9040  0 /*onDayOfMonth*/,
9041  8 /*atTimeCode*/,
9042  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9043  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9044  7 /*letterIndex ("S")*/,
9045  },
9046  // Rule Thule 1993 2006 - Apr Sun>=1 2:00 1:00 D
9047  {
9048  -107 /*fromYearTiny (1993)*/,
9049  -94 /*toYearTiny (2006)*/,
9050  4 /*inMonth*/,
9051  7 /*onDayOfWeek*/,
9052  1 /*onDayOfMonth*/,
9053  8 /*atTimeCode*/,
9054  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9055  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9056  5 /*letterIndex ("D")*/,
9057  },
9058  // Rule Thule 1993 2006 - Oct lastSun 2:00 0 S
9059  {
9060  -107 /*fromYearTiny (1993)*/,
9061  -94 /*toYearTiny (2006)*/,
9062  10 /*inMonth*/,
9063  7 /*onDayOfWeek*/,
9064  0 /*onDayOfMonth*/,
9065  8 /*atTimeCode*/,
9066  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9067  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9068  7 /*letterIndex ("S")*/,
9069  },
9070  // Rule Thule 2007 max - Mar Sun>=8 2:00 1:00 D
9071  {
9072  -93 /*fromYearTiny (2007)*/,
9073  126 /*toYearTiny (32766)*/,
9074  3 /*inMonth*/,
9075  7 /*onDayOfWeek*/,
9076  8 /*onDayOfMonth*/,
9077  8 /*atTimeCode*/,
9078  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9079  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9080  5 /*letterIndex ("D")*/,
9081  },
9082  // Rule Thule 2007 max - Nov Sun>=1 2:00 0 S
9083  {
9084  -93 /*fromYearTiny (2007)*/,
9085  126 /*toYearTiny (32766)*/,
9086  11 /*inMonth*/,
9087  7 /*onDayOfWeek*/,
9088  1 /*onDayOfMonth*/,
9089  8 /*atTimeCode*/,
9090  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9091  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9092  7 /*letterIndex ("S")*/,
9093  },
9094 
9095 };
9096 
9097 const extended::ZonePolicy kZonePolicyThule ACE_TIME_PROGMEM = {
9098  kZoneRulesThule /*rules*/,
9099  6 /*numRules*/,
9100 };
9101 
9102 //---------------------------------------------------------------------------
9103 // Policy name: Tonga
9104 // Rules: 7
9105 //---------------------------------------------------------------------------
9106 
9107 static const extended::ZoneRule kZoneRulesTonga[] ACE_TIME_PROGMEM = {
9108  // Anchor: Rule Tonga 2000 only - Mar 19 2:00s 0 -
9109  {
9110  -127 /*fromYearTiny (-32767)*/,
9111  -127 /*toYearTiny (-32767)*/,
9112  1 /*inMonth*/,
9113  0 /*onDayOfWeek*/,
9114  1 /*onDayOfMonth*/,
9115  0 /*atTimeCode*/,
9116  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9117  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9118  0 /*letterIndex ("")*/,
9119  },
9120  // Rule Tonga 1999 only - Oct 7 2:00s 1:00 -
9121  {
9122  -101 /*fromYearTiny (1999)*/,
9123  -101 /*toYearTiny (1999)*/,
9124  10 /*inMonth*/,
9125  0 /*onDayOfWeek*/,
9126  7 /*onDayOfMonth*/,
9127  8 /*atTimeCode*/,
9128  16 /*atTimeModifier (kSuffixS + minute=0)*/,
9129  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9130  0 /*letterIndex ("")*/,
9131  },
9132  // Rule Tonga 2000 only - Mar 19 2:00s 0 -
9133  {
9134  -100 /*fromYearTiny (2000)*/,
9135  -100 /*toYearTiny (2000)*/,
9136  3 /*inMonth*/,
9137  0 /*onDayOfWeek*/,
9138  19 /*onDayOfMonth*/,
9139  8 /*atTimeCode*/,
9140  16 /*atTimeModifier (kSuffixS + minute=0)*/,
9141  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9142  0 /*letterIndex ("")*/,
9143  },
9144  // Rule Tonga 2000 2001 - Nov Sun>=1 2:00 1:00 -
9145  {
9146  -100 /*fromYearTiny (2000)*/,
9147  -99 /*toYearTiny (2001)*/,
9148  11 /*inMonth*/,
9149  7 /*onDayOfWeek*/,
9150  1 /*onDayOfMonth*/,
9151  8 /*atTimeCode*/,
9152  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9153  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9154  0 /*letterIndex ("")*/,
9155  },
9156  // Rule Tonga 2001 2002 - Jan lastSun 2:00 0 -
9157  {
9158  -99 /*fromYearTiny (2001)*/,
9159  -98 /*toYearTiny (2002)*/,
9160  1 /*inMonth*/,
9161  7 /*onDayOfWeek*/,
9162  0 /*onDayOfMonth*/,
9163  8 /*atTimeCode*/,
9164  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9165  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9166  0 /*letterIndex ("")*/,
9167  },
9168  // Rule Tonga 2016 only - Nov Sun>=1 2:00 1:00 -
9169  {
9170  -84 /*fromYearTiny (2016)*/,
9171  -84 /*toYearTiny (2016)*/,
9172  11 /*inMonth*/,
9173  7 /*onDayOfWeek*/,
9174  1 /*onDayOfMonth*/,
9175  8 /*atTimeCode*/,
9176  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9177  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9178  0 /*letterIndex ("")*/,
9179  },
9180  // Rule Tonga 2017 only - Jan Sun>=15 3:00 0 -
9181  {
9182  -83 /*fromYearTiny (2017)*/,
9183  -83 /*toYearTiny (2017)*/,
9184  1 /*inMonth*/,
9185  7 /*onDayOfWeek*/,
9186  15 /*onDayOfMonth*/,
9187  12 /*atTimeCode*/,
9188  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9189  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9190  0 /*letterIndex ("")*/,
9191  },
9192 
9193 };
9194 
9195 const extended::ZonePolicy kZonePolicyTonga ACE_TIME_PROGMEM = {
9196  kZoneRulesTonga /*rules*/,
9197  7 /*numRules*/,
9198 };
9199 
9200 //---------------------------------------------------------------------------
9201 // Policy name: Troll
9202 // Rules: 3
9203 //---------------------------------------------------------------------------
9204 
9205 static const extended::ZoneRule kZoneRulesTroll[] ACE_TIME_PROGMEM = {
9206  // Anchor: Rule Troll 2004 max - Oct lastSun 1:00u 0:00 +00
9207  {
9208  -127 /*fromYearTiny (-32767)*/,
9209  -127 /*toYearTiny (-32767)*/,
9210  1 /*inMonth*/,
9211  0 /*onDayOfWeek*/,
9212  1 /*onDayOfMonth*/,
9213  0 /*atTimeCode*/,
9214  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9215  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9216  1 /*letterIndex ("+00")*/,
9217  },
9218  // Rule Troll 2005 max - Mar lastSun 1:00u 2:00 +02
9219  {
9220  -95 /*fromYearTiny (2005)*/,
9221  126 /*toYearTiny (32766)*/,
9222  3 /*inMonth*/,
9223  7 /*onDayOfWeek*/,
9224  0 /*onDayOfMonth*/,
9225  4 /*atTimeCode*/,
9226  32 /*atTimeModifier (kSuffixU + minute=0)*/,
9227  12 /*deltaCode ((deltaMinutes=120)/15 + 4)*/,
9228  2 /*letterIndex ("+02")*/,
9229  },
9230  // Rule Troll 2004 max - Oct lastSun 1:00u 0:00 +00
9231  {
9232  -96 /*fromYearTiny (2004)*/,
9233  126 /*toYearTiny (32766)*/,
9234  10 /*inMonth*/,
9235  7 /*onDayOfWeek*/,
9236  0 /*onDayOfMonth*/,
9237  4 /*atTimeCode*/,
9238  32 /*atTimeModifier (kSuffixU + minute=0)*/,
9239  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9240  1 /*letterIndex ("+00")*/,
9241  },
9242 
9243 };
9244 
9245 const extended::ZonePolicy kZonePolicyTroll ACE_TIME_PROGMEM = {
9246  kZoneRulesTroll /*rules*/,
9247  3 /*numRules*/,
9248 };
9249 
9250 //---------------------------------------------------------------------------
9251 // Policy name: Tunisia
9252 // Rules: 6
9253 //---------------------------------------------------------------------------
9254 
9255 static const extended::ZoneRule kZoneRulesTunisia[] ACE_TIME_PROGMEM = {
9256  // Anchor: Rule Tunisia 1988 1990 - Sep lastSun 0:00s 0 -
9257  {
9258  -127 /*fromYearTiny (-32767)*/,
9259  -127 /*toYearTiny (-32767)*/,
9260  1 /*inMonth*/,
9261  0 /*onDayOfWeek*/,
9262  1 /*onDayOfMonth*/,
9263  0 /*atTimeCode*/,
9264  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9265  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9266  0 /*letterIndex ("")*/,
9267  },
9268  // Rule Tunisia 1988 1990 - Sep lastSun 0:00s 0 -
9269  {
9270  -112 /*fromYearTiny (1988)*/,
9271  -110 /*toYearTiny (1990)*/,
9272  9 /*inMonth*/,
9273  7 /*onDayOfWeek*/,
9274  0 /*onDayOfMonth*/,
9275  0 /*atTimeCode*/,
9276  16 /*atTimeModifier (kSuffixS + minute=0)*/,
9277  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9278  0 /*letterIndex ("")*/,
9279  },
9280  // Rule Tunisia 2005 only - May 1 0:00s 1:00 S
9281  {
9282  -95 /*fromYearTiny (2005)*/,
9283  -95 /*toYearTiny (2005)*/,
9284  5 /*inMonth*/,
9285  0 /*onDayOfWeek*/,
9286  1 /*onDayOfMonth*/,
9287  0 /*atTimeCode*/,
9288  16 /*atTimeModifier (kSuffixS + minute=0)*/,
9289  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9290  7 /*letterIndex ("S")*/,
9291  },
9292  // Rule Tunisia 2005 only - Sep 30 1:00s 0 -
9293  {
9294  -95 /*fromYearTiny (2005)*/,
9295  -95 /*toYearTiny (2005)*/,
9296  9 /*inMonth*/,
9297  0 /*onDayOfWeek*/,
9298  30 /*onDayOfMonth*/,
9299  4 /*atTimeCode*/,
9300  16 /*atTimeModifier (kSuffixS + minute=0)*/,
9301  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9302  0 /*letterIndex ("")*/,
9303  },
9304  // Rule Tunisia 2006 2008 - Mar lastSun 2:00s 1:00 S
9305  {
9306  -94 /*fromYearTiny (2006)*/,
9307  -92 /*toYearTiny (2008)*/,
9308  3 /*inMonth*/,
9309  7 /*onDayOfWeek*/,
9310  0 /*onDayOfMonth*/,
9311  8 /*atTimeCode*/,
9312  16 /*atTimeModifier (kSuffixS + minute=0)*/,
9313  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9314  7 /*letterIndex ("S")*/,
9315  },
9316  // Rule Tunisia 2006 2008 - Oct lastSun 2:00s 0 -
9317  {
9318  -94 /*fromYearTiny (2006)*/,
9319  -92 /*toYearTiny (2008)*/,
9320  10 /*inMonth*/,
9321  7 /*onDayOfWeek*/,
9322  0 /*onDayOfMonth*/,
9323  8 /*atTimeCode*/,
9324  16 /*atTimeModifier (kSuffixS + minute=0)*/,
9325  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9326  0 /*letterIndex ("")*/,
9327  },
9328 
9329 };
9330 
9331 const extended::ZonePolicy kZonePolicyTunisia ACE_TIME_PROGMEM = {
9332  kZoneRulesTunisia /*rules*/,
9333  6 /*numRules*/,
9334 };
9335 
9336 //---------------------------------------------------------------------------
9337 // Policy name: Turkey
9338 // Rules: 4
9339 //---------------------------------------------------------------------------
9340 
9341 static const extended::ZoneRule kZoneRulesTurkey[] ACE_TIME_PROGMEM = {
9342  // Anchor: Rule Turkey 1986 1995 - Sep lastSun 1:00s 0 -
9343  {
9344  -127 /*fromYearTiny (-32767)*/,
9345  -127 /*toYearTiny (-32767)*/,
9346  1 /*inMonth*/,
9347  0 /*onDayOfWeek*/,
9348  1 /*onDayOfMonth*/,
9349  0 /*atTimeCode*/,
9350  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9351  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9352  0 /*letterIndex ("")*/,
9353  },
9354  // Rule Turkey 1986 1995 - Sep lastSun 1:00s 0 -
9355  {
9356  -114 /*fromYearTiny (1986)*/,
9357  -105 /*toYearTiny (1995)*/,
9358  9 /*inMonth*/,
9359  7 /*onDayOfWeek*/,
9360  0 /*onDayOfMonth*/,
9361  4 /*atTimeCode*/,
9362  16 /*atTimeModifier (kSuffixS + minute=0)*/,
9363  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9364  0 /*letterIndex ("")*/,
9365  },
9366  // Rule Turkey 1995 2006 - Mar lastSun 1:00s 1:00 S
9367  {
9368  -105 /*fromYearTiny (1995)*/,
9369  -94 /*toYearTiny (2006)*/,
9370  3 /*inMonth*/,
9371  7 /*onDayOfWeek*/,
9372  0 /*onDayOfMonth*/,
9373  4 /*atTimeCode*/,
9374  16 /*atTimeModifier (kSuffixS + minute=0)*/,
9375  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9376  7 /*letterIndex ("S")*/,
9377  },
9378  // Rule Turkey 1996 2006 - Oct lastSun 1:00s 0 -
9379  {
9380  -104 /*fromYearTiny (1996)*/,
9381  -94 /*toYearTiny (2006)*/,
9382  10 /*inMonth*/,
9383  7 /*onDayOfWeek*/,
9384  0 /*onDayOfMonth*/,
9385  4 /*atTimeCode*/,
9386  16 /*atTimeModifier (kSuffixS + minute=0)*/,
9387  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9388  0 /*letterIndex ("")*/,
9389  },
9390 
9391 };
9392 
9393 const extended::ZonePolicy kZonePolicyTurkey ACE_TIME_PROGMEM = {
9394  kZoneRulesTurkey /*rules*/,
9395  4 /*numRules*/,
9396 };
9397 
9398 //---------------------------------------------------------------------------
9399 // Policy name: US
9400 // Rules: 6
9401 //---------------------------------------------------------------------------
9402 
9403 static const extended::ZoneRule kZoneRulesUS[] ACE_TIME_PROGMEM = {
9404  // Anchor: Rule US 1967 2006 - Oct lastSun 2:00 0 S
9405  {
9406  -127 /*fromYearTiny (-32767)*/,
9407  -127 /*toYearTiny (-32767)*/,
9408  1 /*inMonth*/,
9409  0 /*onDayOfWeek*/,
9410  1 /*onDayOfMonth*/,
9411  0 /*atTimeCode*/,
9412  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9413  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9414  7 /*letterIndex ("S")*/,
9415  },
9416  // Rule US 1967 2006 - Oct lastSun 2:00 0 S
9417  {
9418  -127 /*fromYearTiny (1967)*/,
9419  -94 /*toYearTiny (2006)*/,
9420  10 /*inMonth*/,
9421  7 /*onDayOfWeek*/,
9422  0 /*onDayOfMonth*/,
9423  8 /*atTimeCode*/,
9424  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9425  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9426  7 /*letterIndex ("S")*/,
9427  },
9428  // Rule US 1976 1986 - Apr lastSun 2:00 1:00 D
9429  {
9430  -124 /*fromYearTiny (1976)*/,
9431  -114 /*toYearTiny (1986)*/,
9432  4 /*inMonth*/,
9433  7 /*onDayOfWeek*/,
9434  0 /*onDayOfMonth*/,
9435  8 /*atTimeCode*/,
9436  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9437  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9438  5 /*letterIndex ("D")*/,
9439  },
9440  // Rule US 1987 2006 - Apr Sun>=1 2:00 1:00 D
9441  {
9442  -113 /*fromYearTiny (1987)*/,
9443  -94 /*toYearTiny (2006)*/,
9444  4 /*inMonth*/,
9445  7 /*onDayOfWeek*/,
9446  1 /*onDayOfMonth*/,
9447  8 /*atTimeCode*/,
9448  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9449  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9450  5 /*letterIndex ("D")*/,
9451  },
9452  // Rule US 2007 max - Mar Sun>=8 2:00 1:00 D
9453  {
9454  -93 /*fromYearTiny (2007)*/,
9455  126 /*toYearTiny (32766)*/,
9456  3 /*inMonth*/,
9457  7 /*onDayOfWeek*/,
9458  8 /*onDayOfMonth*/,
9459  8 /*atTimeCode*/,
9460  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9461  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9462  5 /*letterIndex ("D")*/,
9463  },
9464  // Rule US 2007 max - Nov Sun>=1 2:00 0 S
9465  {
9466  -93 /*fromYearTiny (2007)*/,
9467  126 /*toYearTiny (32766)*/,
9468  11 /*inMonth*/,
9469  7 /*onDayOfWeek*/,
9470  1 /*onDayOfMonth*/,
9471  8 /*atTimeCode*/,
9472  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9473  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9474  7 /*letterIndex ("S")*/,
9475  },
9476 
9477 };
9478 
9479 const extended::ZonePolicy kZonePolicyUS ACE_TIME_PROGMEM = {
9480  kZoneRulesUS /*rules*/,
9481  6 /*numRules*/,
9482 };
9483 
9484 //---------------------------------------------------------------------------
9485 // Policy name: Uruguay
9486 // Rules: 7
9487 //---------------------------------------------------------------------------
9488 
9489 static const extended::ZoneRule kZoneRulesUruguay[] ACE_TIME_PROGMEM = {
9490  // Anchor: Rule Uruguay 1993 only - Feb 28 0:00 0 -
9491  {
9492  -127 /*fromYearTiny (-32767)*/,
9493  -127 /*toYearTiny (-32767)*/,
9494  1 /*inMonth*/,
9495  0 /*onDayOfWeek*/,
9496  1 /*onDayOfMonth*/,
9497  0 /*atTimeCode*/,
9498  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9499  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9500  0 /*letterIndex ("")*/,
9501  },
9502  // Rule Uruguay 1993 only - Feb 28 0:00 0 -
9503  {
9504  -107 /*fromYearTiny (1993)*/,
9505  -107 /*toYearTiny (1993)*/,
9506  2 /*inMonth*/,
9507  0 /*onDayOfWeek*/,
9508  28 /*onDayOfMonth*/,
9509  0 /*atTimeCode*/,
9510  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9511  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9512  0 /*letterIndex ("")*/,
9513  },
9514  // Rule Uruguay 2004 only - Sep 19 0:00 1:00 -
9515  {
9516  -96 /*fromYearTiny (2004)*/,
9517  -96 /*toYearTiny (2004)*/,
9518  9 /*inMonth*/,
9519  0 /*onDayOfWeek*/,
9520  19 /*onDayOfMonth*/,
9521  0 /*atTimeCode*/,
9522  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9523  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9524  0 /*letterIndex ("")*/,
9525  },
9526  // Rule Uruguay 2005 only - Mar 27 2:00 0 -
9527  {
9528  -95 /*fromYearTiny (2005)*/,
9529  -95 /*toYearTiny (2005)*/,
9530  3 /*inMonth*/,
9531  0 /*onDayOfWeek*/,
9532  27 /*onDayOfMonth*/,
9533  8 /*atTimeCode*/,
9534  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9535  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9536  0 /*letterIndex ("")*/,
9537  },
9538  // Rule Uruguay 2005 only - Oct 9 2:00 1:00 -
9539  {
9540  -95 /*fromYearTiny (2005)*/,
9541  -95 /*toYearTiny (2005)*/,
9542  10 /*inMonth*/,
9543  0 /*onDayOfWeek*/,
9544  9 /*onDayOfMonth*/,
9545  8 /*atTimeCode*/,
9546  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9547  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9548  0 /*letterIndex ("")*/,
9549  },
9550  // Rule Uruguay 2006 2015 - Mar Sun>=8 2:00 0 -
9551  {
9552  -94 /*fromYearTiny (2006)*/,
9553  -85 /*toYearTiny (2015)*/,
9554  3 /*inMonth*/,
9555  7 /*onDayOfWeek*/,
9556  8 /*onDayOfMonth*/,
9557  8 /*atTimeCode*/,
9558  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9559  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9560  0 /*letterIndex ("")*/,
9561  },
9562  // Rule Uruguay 2006 2014 - Oct Sun>=1 2:00 1:00 -
9563  {
9564  -94 /*fromYearTiny (2006)*/,
9565  -86 /*toYearTiny (2014)*/,
9566  10 /*inMonth*/,
9567  7 /*onDayOfWeek*/,
9568  1 /*onDayOfMonth*/,
9569  8 /*atTimeCode*/,
9570  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9571  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9572  0 /*letterIndex ("")*/,
9573  },
9574 
9575 };
9576 
9577 const extended::ZonePolicy kZonePolicyUruguay ACE_TIME_PROGMEM = {
9578  kZoneRulesUruguay /*rules*/,
9579  7 /*numRules*/,
9580 };
9581 
9582 //---------------------------------------------------------------------------
9583 // Policy name: Vanuatu
9584 // Rules: 1
9585 //---------------------------------------------------------------------------
9586 
9587 static const extended::ZoneRule kZoneRulesVanuatu[] ACE_TIME_PROGMEM = {
9588  // Anchor: Rule Vanuatu 1992 1993 - Jan Sat>=22 24:00 0 -
9589  {
9590  -127 /*fromYearTiny (-32767)*/,
9591  -127 /*toYearTiny (-32767)*/,
9592  1 /*inMonth*/,
9593  0 /*onDayOfWeek*/,
9594  1 /*onDayOfMonth*/,
9595  0 /*atTimeCode*/,
9596  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9597  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9598  0 /*letterIndex ("")*/,
9599  },
9600 
9601 };
9602 
9603 const extended::ZonePolicy kZonePolicyVanuatu ACE_TIME_PROGMEM = {
9604  kZoneRulesVanuatu /*rules*/,
9605  1 /*numRules*/,
9606 };
9607 
9608 //---------------------------------------------------------------------------
9609 // Policy name: WS
9610 // Rules: 6
9611 //---------------------------------------------------------------------------
9612 
9613 static const extended::ZoneRule kZoneRulesWS[] ACE_TIME_PROGMEM = {
9614  // Anchor: Rule WS 2011 only - Apr Sat>=1 4:00 0 -
9615  {
9616  -127 /*fromYearTiny (-32767)*/,
9617  -127 /*toYearTiny (-32767)*/,
9618  1 /*inMonth*/,
9619  0 /*onDayOfWeek*/,
9620  1 /*onDayOfMonth*/,
9621  0 /*atTimeCode*/,
9622  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9623  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9624  0 /*letterIndex ("")*/,
9625  },
9626  // Rule WS 2010 only - Sep lastSun 0:00 1 -
9627  {
9628  -90 /*fromYearTiny (2010)*/,
9629  -90 /*toYearTiny (2010)*/,
9630  9 /*inMonth*/,
9631  7 /*onDayOfWeek*/,
9632  0 /*onDayOfMonth*/,
9633  0 /*atTimeCode*/,
9634  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9635  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9636  0 /*letterIndex ("")*/,
9637  },
9638  // Rule WS 2011 only - Apr Sat>=1 4:00 0 -
9639  {
9640  -89 /*fromYearTiny (2011)*/,
9641  -89 /*toYearTiny (2011)*/,
9642  4 /*inMonth*/,
9643  6 /*onDayOfWeek*/,
9644  1 /*onDayOfMonth*/,
9645  16 /*atTimeCode*/,
9646  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9647  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9648  0 /*letterIndex ("")*/,
9649  },
9650  // Rule WS 2011 only - Sep lastSat 3:00 1 -
9651  {
9652  -89 /*fromYearTiny (2011)*/,
9653  -89 /*toYearTiny (2011)*/,
9654  9 /*inMonth*/,
9655  6 /*onDayOfWeek*/,
9656  0 /*onDayOfMonth*/,
9657  12 /*atTimeCode*/,
9658  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9659  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9660  0 /*letterIndex ("")*/,
9661  },
9662  // Rule WS 2012 2021 - Apr Sun>=1 4:00 0 -
9663  {
9664  -88 /*fromYearTiny (2012)*/,
9665  -79 /*toYearTiny (2021)*/,
9666  4 /*inMonth*/,
9667  7 /*onDayOfWeek*/,
9668  1 /*onDayOfMonth*/,
9669  16 /*atTimeCode*/,
9670  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9671  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9672  0 /*letterIndex ("")*/,
9673  },
9674  // Rule WS 2012 2020 - Sep lastSun 3:00 1 -
9675  {
9676  -88 /*fromYearTiny (2012)*/,
9677  -80 /*toYearTiny (2020)*/,
9678  9 /*inMonth*/,
9679  7 /*onDayOfWeek*/,
9680  0 /*onDayOfMonth*/,
9681  12 /*atTimeCode*/,
9682  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9683  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9684  0 /*letterIndex ("")*/,
9685  },
9686 
9687 };
9688 
9689 const extended::ZonePolicy kZonePolicyWS ACE_TIME_PROGMEM = {
9690  kZoneRulesWS /*rules*/,
9691  6 /*numRules*/,
9692 };
9693 
9694 //---------------------------------------------------------------------------
9695 // Policy name: Winn
9696 // Rules: 4
9697 //---------------------------------------------------------------------------
9698 
9699 static const extended::ZoneRule kZoneRulesWinn[] ACE_TIME_PROGMEM = {
9700  // Anchor: Rule Winn 1966 2005 - Oct lastSun 2:00s 0 S
9701  {
9702  -127 /*fromYearTiny (-32767)*/,
9703  -127 /*toYearTiny (-32767)*/,
9704  1 /*inMonth*/,
9705  0 /*onDayOfWeek*/,
9706  1 /*onDayOfMonth*/,
9707  0 /*atTimeCode*/,
9708  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9709  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9710  7 /*letterIndex ("S")*/,
9711  },
9712  // Rule Winn 1966 1986 - Apr lastSun 2:00s 1:00 D
9713  {
9714  -127 /*fromYearTiny (1966)*/,
9715  -114 /*toYearTiny (1986)*/,
9716  4 /*inMonth*/,
9717  7 /*onDayOfWeek*/,
9718  0 /*onDayOfMonth*/,
9719  8 /*atTimeCode*/,
9720  16 /*atTimeModifier (kSuffixS + minute=0)*/,
9721  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9722  5 /*letterIndex ("D")*/,
9723  },
9724  // Rule Winn 1966 2005 - Oct lastSun 2:00s 0 S
9725  {
9726  -127 /*fromYearTiny (1966)*/,
9727  -95 /*toYearTiny (2005)*/,
9728  10 /*inMonth*/,
9729  7 /*onDayOfWeek*/,
9730  0 /*onDayOfMonth*/,
9731  8 /*atTimeCode*/,
9732  16 /*atTimeModifier (kSuffixS + minute=0)*/,
9733  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9734  7 /*letterIndex ("S")*/,
9735  },
9736  // Rule Winn 1987 2005 - Apr Sun>=1 2:00s 1:00 D
9737  {
9738  -113 /*fromYearTiny (1987)*/,
9739  -95 /*toYearTiny (2005)*/,
9740  4 /*inMonth*/,
9741  7 /*onDayOfWeek*/,
9742  1 /*onDayOfMonth*/,
9743  8 /*atTimeCode*/,
9744  16 /*atTimeModifier (kSuffixS + minute=0)*/,
9745  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9746  5 /*letterIndex ("D")*/,
9747  },
9748 
9749 };
9750 
9751 const extended::ZonePolicy kZonePolicyWinn ACE_TIME_PROGMEM = {
9752  kZoneRulesWinn /*rules*/,
9753  4 /*numRules*/,
9754 };
9755 
9756 //---------------------------------------------------------------------------
9757 // Policy name: Zion
9758 // Rules: 25
9759 //---------------------------------------------------------------------------
9760 
9761 static const extended::ZoneRule kZoneRulesZion[] ACE_TIME_PROGMEM = {
9762  // Anchor: Rule Zion 1998 only - Sep 6 0:00 0 S
9763  {
9764  -127 /*fromYearTiny (-32767)*/,
9765  -127 /*toYearTiny (-32767)*/,
9766  1 /*inMonth*/,
9767  0 /*onDayOfWeek*/,
9768  1 /*onDayOfMonth*/,
9769  0 /*atTimeCode*/,
9770  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9771  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9772  7 /*letterIndex ("S")*/,
9773  },
9774  // Rule Zion 1998 only - Sep 6 0:00 0 S
9775  {
9776  -102 /*fromYearTiny (1998)*/,
9777  -102 /*toYearTiny (1998)*/,
9778  9 /*inMonth*/,
9779  0 /*onDayOfWeek*/,
9780  6 /*onDayOfMonth*/,
9781  0 /*atTimeCode*/,
9782  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9783  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9784  7 /*letterIndex ("S")*/,
9785  },
9786  // Rule Zion 1999 only - Apr 2 2:00 1:00 D
9787  {
9788  -101 /*fromYearTiny (1999)*/,
9789  -101 /*toYearTiny (1999)*/,
9790  4 /*inMonth*/,
9791  0 /*onDayOfWeek*/,
9792  2 /*onDayOfMonth*/,
9793  8 /*atTimeCode*/,
9794  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9795  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9796  5 /*letterIndex ("D")*/,
9797  },
9798  // Rule Zion 1999 only - Sep 3 2:00 0 S
9799  {
9800  -101 /*fromYearTiny (1999)*/,
9801  -101 /*toYearTiny (1999)*/,
9802  9 /*inMonth*/,
9803  0 /*onDayOfWeek*/,
9804  3 /*onDayOfMonth*/,
9805  8 /*atTimeCode*/,
9806  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9807  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9808  7 /*letterIndex ("S")*/,
9809  },
9810  // Rule Zion 2000 only - Apr 14 2:00 1:00 D
9811  {
9812  -100 /*fromYearTiny (2000)*/,
9813  -100 /*toYearTiny (2000)*/,
9814  4 /*inMonth*/,
9815  0 /*onDayOfWeek*/,
9816  14 /*onDayOfMonth*/,
9817  8 /*atTimeCode*/,
9818  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9819  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9820  5 /*letterIndex ("D")*/,
9821  },
9822  // Rule Zion 2000 only - Oct 6 1:00 0 S
9823  {
9824  -100 /*fromYearTiny (2000)*/,
9825  -100 /*toYearTiny (2000)*/,
9826  10 /*inMonth*/,
9827  0 /*onDayOfWeek*/,
9828  6 /*onDayOfMonth*/,
9829  4 /*atTimeCode*/,
9830  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9831  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9832  7 /*letterIndex ("S")*/,
9833  },
9834  // Rule Zion 2001 only - Apr 9 1:00 1:00 D
9835  {
9836  -99 /*fromYearTiny (2001)*/,
9837  -99 /*toYearTiny (2001)*/,
9838  4 /*inMonth*/,
9839  0 /*onDayOfWeek*/,
9840  9 /*onDayOfMonth*/,
9841  4 /*atTimeCode*/,
9842  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9843  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9844  5 /*letterIndex ("D")*/,
9845  },
9846  // Rule Zion 2001 only - Sep 24 1:00 0 S
9847  {
9848  -99 /*fromYearTiny (2001)*/,
9849  -99 /*toYearTiny (2001)*/,
9850  9 /*inMonth*/,
9851  0 /*onDayOfWeek*/,
9852  24 /*onDayOfMonth*/,
9853  4 /*atTimeCode*/,
9854  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9855  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9856  7 /*letterIndex ("S")*/,
9857  },
9858  // Rule Zion 2002 only - Mar 29 1:00 1:00 D
9859  {
9860  -98 /*fromYearTiny (2002)*/,
9861  -98 /*toYearTiny (2002)*/,
9862  3 /*inMonth*/,
9863  0 /*onDayOfWeek*/,
9864  29 /*onDayOfMonth*/,
9865  4 /*atTimeCode*/,
9866  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9867  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9868  5 /*letterIndex ("D")*/,
9869  },
9870  // Rule Zion 2002 only - Oct 7 1:00 0 S
9871  {
9872  -98 /*fromYearTiny (2002)*/,
9873  -98 /*toYearTiny (2002)*/,
9874  10 /*inMonth*/,
9875  0 /*onDayOfWeek*/,
9876  7 /*onDayOfMonth*/,
9877  4 /*atTimeCode*/,
9878  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9879  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9880  7 /*letterIndex ("S")*/,
9881  },
9882  // Rule Zion 2003 only - Mar 28 1:00 1:00 D
9883  {
9884  -97 /*fromYearTiny (2003)*/,
9885  -97 /*toYearTiny (2003)*/,
9886  3 /*inMonth*/,
9887  0 /*onDayOfWeek*/,
9888  28 /*onDayOfMonth*/,
9889  4 /*atTimeCode*/,
9890  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9891  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9892  5 /*letterIndex ("D")*/,
9893  },
9894  // Rule Zion 2003 only - Oct 3 1:00 0 S
9895  {
9896  -97 /*fromYearTiny (2003)*/,
9897  -97 /*toYearTiny (2003)*/,
9898  10 /*inMonth*/,
9899  0 /*onDayOfWeek*/,
9900  3 /*onDayOfMonth*/,
9901  4 /*atTimeCode*/,
9902  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9903  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9904  7 /*letterIndex ("S")*/,
9905  },
9906  // Rule Zion 2004 only - Apr 7 1:00 1:00 D
9907  {
9908  -96 /*fromYearTiny (2004)*/,
9909  -96 /*toYearTiny (2004)*/,
9910  4 /*inMonth*/,
9911  0 /*onDayOfWeek*/,
9912  7 /*onDayOfMonth*/,
9913  4 /*atTimeCode*/,
9914  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9915  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9916  5 /*letterIndex ("D")*/,
9917  },
9918  // Rule Zion 2004 only - Sep 22 1:00 0 S
9919  {
9920  -96 /*fromYearTiny (2004)*/,
9921  -96 /*toYearTiny (2004)*/,
9922  9 /*inMonth*/,
9923  0 /*onDayOfWeek*/,
9924  22 /*onDayOfMonth*/,
9925  4 /*atTimeCode*/,
9926  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9927  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9928  7 /*letterIndex ("S")*/,
9929  },
9930  // Rule Zion 2005 2012 - Apr Fri<=1 2:00 1:00 D
9931  {
9932  -95 /*fromYearTiny (2005)*/,
9933  -88 /*toYearTiny (2012)*/,
9934  4 /*inMonth*/,
9935  5 /*onDayOfWeek*/,
9936  -1 /*onDayOfMonth*/,
9937  8 /*atTimeCode*/,
9938  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9939  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
9940  5 /*letterIndex ("D")*/,
9941  },
9942  // Rule Zion 2005 only - Oct 9 2:00 0 S
9943  {
9944  -95 /*fromYearTiny (2005)*/,
9945  -95 /*toYearTiny (2005)*/,
9946  10 /*inMonth*/,
9947  0 /*onDayOfWeek*/,
9948  9 /*onDayOfMonth*/,
9949  8 /*atTimeCode*/,
9950  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9951  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9952  7 /*letterIndex ("S")*/,
9953  },
9954  // Rule Zion 2006 only - Oct 1 2:00 0 S
9955  {
9956  -94 /*fromYearTiny (2006)*/,
9957  -94 /*toYearTiny (2006)*/,
9958  10 /*inMonth*/,
9959  0 /*onDayOfWeek*/,
9960  1 /*onDayOfMonth*/,
9961  8 /*atTimeCode*/,
9962  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9963  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9964  7 /*letterIndex ("S")*/,
9965  },
9966  // Rule Zion 2007 only - Sep 16 2:00 0 S
9967  {
9968  -93 /*fromYearTiny (2007)*/,
9969  -93 /*toYearTiny (2007)*/,
9970  9 /*inMonth*/,
9971  0 /*onDayOfWeek*/,
9972  16 /*onDayOfMonth*/,
9973  8 /*atTimeCode*/,
9974  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9975  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9976  7 /*letterIndex ("S")*/,
9977  },
9978  // Rule Zion 2008 only - Oct 5 2:00 0 S
9979  {
9980  -92 /*fromYearTiny (2008)*/,
9981  -92 /*toYearTiny (2008)*/,
9982  10 /*inMonth*/,
9983  0 /*onDayOfWeek*/,
9984  5 /*onDayOfMonth*/,
9985  8 /*atTimeCode*/,
9986  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9987  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
9988  7 /*letterIndex ("S")*/,
9989  },
9990  // Rule Zion 2009 only - Sep 27 2:00 0 S
9991  {
9992  -91 /*fromYearTiny (2009)*/,
9993  -91 /*toYearTiny (2009)*/,
9994  9 /*inMonth*/,
9995  0 /*onDayOfWeek*/,
9996  27 /*onDayOfMonth*/,
9997  8 /*atTimeCode*/,
9998  0 /*atTimeModifier (kSuffixW + minute=0)*/,
9999  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
10000  7 /*letterIndex ("S")*/,
10001  },
10002  // Rule Zion 2010 only - Sep 12 2:00 0 S
10003  {
10004  -90 /*fromYearTiny (2010)*/,
10005  -90 /*toYearTiny (2010)*/,
10006  9 /*inMonth*/,
10007  0 /*onDayOfWeek*/,
10008  12 /*onDayOfMonth*/,
10009  8 /*atTimeCode*/,
10010  0 /*atTimeModifier (kSuffixW + minute=0)*/,
10011  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
10012  7 /*letterIndex ("S")*/,
10013  },
10014  // Rule Zion 2011 only - Oct 2 2:00 0 S
10015  {
10016  -89 /*fromYearTiny (2011)*/,
10017  -89 /*toYearTiny (2011)*/,
10018  10 /*inMonth*/,
10019  0 /*onDayOfWeek*/,
10020  2 /*onDayOfMonth*/,
10021  8 /*atTimeCode*/,
10022  0 /*atTimeModifier (kSuffixW + minute=0)*/,
10023  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
10024  7 /*letterIndex ("S")*/,
10025  },
10026  // Rule Zion 2012 only - Sep 23 2:00 0 S
10027  {
10028  -88 /*fromYearTiny (2012)*/,
10029  -88 /*toYearTiny (2012)*/,
10030  9 /*inMonth*/,
10031  0 /*onDayOfWeek*/,
10032  23 /*onDayOfMonth*/,
10033  8 /*atTimeCode*/,
10034  0 /*atTimeModifier (kSuffixW + minute=0)*/,
10035  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
10036  7 /*letterIndex ("S")*/,
10037  },
10038  // Rule Zion 2013 max - Mar Fri>=23 2:00 1:00 D
10039  {
10040  -87 /*fromYearTiny (2013)*/,
10041  126 /*toYearTiny (32766)*/,
10042  3 /*inMonth*/,
10043  5 /*onDayOfWeek*/,
10044  23 /*onDayOfMonth*/,
10045  8 /*atTimeCode*/,
10046  0 /*atTimeModifier (kSuffixW + minute=0)*/,
10047  8 /*deltaCode ((deltaMinutes=60)/15 + 4)*/,
10048  5 /*letterIndex ("D")*/,
10049  },
10050  // Rule Zion 2013 max - Oct lastSun 2:00 0 S
10051  {
10052  -87 /*fromYearTiny (2013)*/,
10053  126 /*toYearTiny (32766)*/,
10054  10 /*inMonth*/,
10055  7 /*onDayOfWeek*/,
10056  0 /*onDayOfMonth*/,
10057  8 /*atTimeCode*/,
10058  0 /*atTimeModifier (kSuffixW + minute=0)*/,
10059  4 /*deltaCode ((deltaMinutes=0)/15 + 4)*/,
10060  7 /*letterIndex ("S")*/,
10061  },
10062 
10063 };
10064 
10065 const extended::ZonePolicy kZonePolicyZion ACE_TIME_PROGMEM = {
10066  kZoneRulesZion /*rules*/,
10067  25 /*numRules*/,
10068 };
10069 
10070 
10071 
10072 }
10073 }
Macros and definitions that provide a consistency layer among the various Arduino boards for compatib...