timeDate/0000755000176200001440000000000014536617572012026 5ustar liggesuserstimeDate/NAMESPACE0000644000176200001440000002717714536346557013265 0ustar liggesusers## GNB: To make maintenance easier, I rearranged this file by topic (see r6349), ## revealing missing entries in the holiday lists on the way. The two big ## sections (financial centers and holidays) are enclosed by suitable ## begin/end comments, so can be easily re-generated from the respective lists ## producing functions 'listHolidays' and 'listFinCenter'). Some financial ## centers are not in the list produced by 'listFiCenter()' and are put just ## before the main list. They are present for convenience and/or backward ## compatibility. ## ## Before r6349 this file was updated using scripts based on roxigen ## comments. The procedure can be found at the top of NAMESPACE in earlier ## revisions. import(methods) importFrom(stats, start, end, window, approx, na.omit, var) importFrom("graphics", axis.POSIXct) importFrom("utils", str) S3method("[<-",timeDate) S3method(as.Date,timeDate) S3method(as.POSIXct,timeDate) S3method(as.POSIXlt,timeDate) S3method(as.character,timeDate) S3method(as.data.frame,timeDate) S3method(as.double,timeDate) S3method(as.list,timeDate) S3method(as.timeDate,Date) S3method(as.timeDate,POSIXt) S3method(as.timeDate,default) S3method(as.timeDate,timeDate) S3method(c,timeDate) S3method(cut,timeDate) S3method(diff,timeDate) S3method(end,timeDate) S3method(format,timeDate) S3method(kurtosis,POSIXct) S3method(kurtosis,POSIXlt) S3method(kurtosis,data.frame) S3method(kurtosis,default) S3method(length,timeDate) S3method(max,timeDate) S3method(min,timeDate) S3method(pretty,timeDate) S3method(print, timeDate_summary) S3method(range,timeDate) S3method(rep,timeDate) S3method(rev,timeDate) S3method(round,timeDate) S3method(seq,timeDate) S3method(skewness,POSIXct) S3method(skewness,POSIXlt) S3method(skewness,data.frame) S3method(skewness,default) S3method(sort,timeDate) S3method(start,timeDate) S3method(summary,timeDate) S3method(trunc,timeDate) S3method(unique,timeDate) S3method(window,timeDate) exportClasses(timeDate) exportMethods( "+", "-", "[", "finCenter<-", Ops, abline, align, atoms, finCenter, frequency, getDataPart, initialize, is.na, isDaily, isMonthly, isQuarterly, isRegular, julian, lines, months, names, plot, points, sample, show, timeDate ) export( .endpoints ## , this is documented ) export( Sys.timeDate, align, alignDaily, alignMonthly, alignQuarterly, as.Date.timeDate, # To avoid that zoo package masks as.Date.timeDate? as.timeDate, atoms, axis.timeDate, blockEnd, blockStart, dayOfWeek, dayOfYear, difftimeDate, finCenter, "finCenter<-", getRmetricsOption, getRmetricsOptions, holiday, holidayLONDON, holidayNERC, holidayNYSE, holidayTSX, holidayZURICH, isBizday, isDaily, isHoliday, isMonthly, isQuarterly, isRegular, isWeekday, isWeekend, kurtosis, listFinCenter, listHolidays, midnightStandard, midnightStandard2, monthlyRolling, periodicallyRolling, periods, rulesFinCenter, setRmetricsOptions, skewness, strptimeDate, timeCalendar, timeDate, timeFirstDayInMonth, timeFirstDayInQuarter, timeLastDayInMonth, timeLastDayInQuarter, timeLastNdayInMonth, timeNdayOnOrAfter, timeNdayOnOrBefore, timeNthNdayInMonth, timeSequence, whichFormat ) export(GBBankHoliday) # deprecated, superseded by GBSpringBankHoliday export(GBMayDay) # deprecated, superseded by EarlyMayBankHoliday ## begin: holidays export( Advent1st, Advent2nd, Advent3rd, Advent4th, AllSaints, AllSouls, Annunciation, Ascension, AshWednesday, AssumptionOfMary, BirthOfVirginMary, BoxingDay, CAFamilyDay, CACanadaDay, CACivicProvincialHoliday, CALabourDay, CAThanksgivingDay, CAVictoriaDay, CHAscension, CHBerchtoldsDay, CHConfederationDay, CHKnabenschiessen, CHSechselaeuten, CaRemembranceDay, CelebrationOfHolyCross, ChristTheKing, ChristmasDay, ChristmasEve, CorpusChristi, DEAscension, DEChristmasEve, DECorpusChristi, DEGermanUnity, DENewYearsEve, Easter, EasterMonday, EasterSunday, Epiphany, FRAllSaints, FRArmisticeDay, FRAscension, FRAssumptionVirginMary, FRBastilleDay, FRFetDeLaVictoire1945, GBSpringBankHoliday, GBEarlyMayBankHoliday, GBMilleniumDay, # deprecated specialHolidayGB, GBSummerBankHoliday, GoodFriday, ITAllSaints, ITAssumptionOfVirginMary, ITEpiphany, ITImmaculateConception, ITLiberationDay, ITStAmrose, JPVernalEquinox, JPAutumnalEquinox, JPBankHolidayDec31, JPBankHolidayJan2, JPBankHolidayJan3, JPBunkaNoHi, JPChildrensDay, JPComingOfAgeDay, JPConstitutionDay, JPEmperorsBirthday, JPGantan, JPGreeneryDay, JPHealthandSportsDay, JPKeirouNOhi, # 2023-11-27 deprecated JPKeirouNoHi, # 2023-11-27 new, replaces the above JPKenkokuKinenNoHi, JPKenpouKinenBi, JPKinrouKanshaNoHi, JPKodomoNoHi, JPKokuminNoKyujitu, JPMarineDay, JPMidoriNoHi, JPMountainDay, # new 2023-11-27 JPNatFoundationDay, JPNationHoliday, JPNationalCultureDay, JPNewYearsDay, JPRespectForTheAgedDay, JPSeijinNoHi, JPShuubunNoHi, JPTaiikuNoHi, JPTennouTanjyouBi, JPThanksgivingDay, JPUmiNoHi, LaborDay, MassOfArchangels, NewYearsDay, PalmSunday, Pentecost, PentecostMonday, PresentationOfLord, Quinquagesima, RogationSunday, Septuagesima, SolemnityOfMary, TransfigurationOfLord, TrinitySunday, USCPulaskisBirthday, USChristmasDay, USColumbusDay, USDecorationMemorialDay, USElectionDay, USGoodFriday, USInaugurationDay, USIndependenceDay, USLaborDay, USLincolnsBirthday, USMLKingsBirthday, USMemorialDay, USNewYearsDay, USPresidentsDay, USThanksgivingDay, USVeteransDay, USWashingtonsBirthday, USJuneteenthNationalIndependenceDay ) ## end: holidays export( AST, BuenosAires, CET, CST, EET, EST, Eastern, Frankfurt, HongKong, KualaLumpur, LosAngeles, MST, MexicoCity, NewYork, PST, Pacific ) ## begin: FinCenter export( "Blanc-Sablon", "Port-au-Prince", "Porto-Novo", Abidjan, Accra, Adak, Addis_Ababa, Adelaide, Aden, Algiers, Almaty, Amman, Amsterdam, Anadyr, Anchorage, Andorra, Anguilla, Antananarivo, Antigua, Apia, Aqtau, Aqtobe, Araguaina, Aruba, Ashgabat, Asmara, Asuncion, Athens, Atikokan, Auckland, Azores, Baghdad, Bahia, Bahrain, Baku, Bamako, Bangkok, Bangui, Banjul, Barbados, Beirut, Belem, Belgrade, Belize, Berlin, Bermuda, Bishkek, Bissau, Blantyre, Boa_Vista, Bogota, Boise, Bratislava, Brazzaville, Brisbane, Broken_Hill, Brunei, Brussels, Bucharest, Budapest, Buenos_Aires, Bujumbura, Cairo, Calcutta, Cambridge_Bay, Campo_Grande, Canary, Cancun, Cape_Verde, Caracas, Casablanca, Casey, Catamarca, Cayenne, Cayman, Center, Ceuta, Chagos, Chatham, Chicago, Chihuahua, Chisinau, Choibalsan, Chongqing, Christmas, Cocos, Colombo, Comoro, Conakry, Copenhagen, Cordoba, Costa_Rica, Cuiaba, Curacao, Currie, Dakar, Damascus, Danmarkshavn, Dar_es_Salaam, Darwin, Davis, Dawson, Dawson_Creek, Denver, Detroit, Dhaka, Dili, Djibouti, Dominica, Douala, Dubai, Dublin, DumontDUrville, Dushanbe, Edmonton, Efate, Eirunepe, El_Aaiun, El_Salvador, Enderbury, Eucla, Fakaofo, Faroe, Fiji, Fortaleza, Freetown, Funafuti, Gaborone, Galapagos, Gambier, Gaza, Gibraltar, Glace_Bay, Godthab, Goose_Bay, Grand_Turk, Grenada, Guadalcanal, Guadeloupe, Guam, Guatemala, Guayaquil, Guernsey, Guyana, Halifax, Harare, Harbin, Havana, Helsinki, Hermosillo, Hobart, Hong_Kong, Honolulu, Hovd, Indianapolis, Inuvik, Iqaluit, Irkutsk, Isle_of_Man, Istanbul, Jakarta, Jamaica, Jayapura, Jersey, Jerusalem, Johannesburg, Johnston, Jujuy, Juneau, Kabul, Kaliningrad, Kamchatka, Kampala, Karachi, Kashgar, Katmandu, Kerguelen, Khartoum, Kiev, Kigali, Kinshasa, Kiritimati, Knox, Kosrae, Krasnoyarsk, Kuala_Lumpur, Kuching, Kuwait, Kwajalein, La_Paz, La_Rioja, Lagos, Libreville, Lima, Lindeman, Lisbon, Ljubljana, Lome, London, Longyearbyen, Lord_Howe, Los_Angeles, Louisville, Luanda, Lubumbashi, Lusaka, Luxembourg, Macau, Maceio, Madeira, Madrid, Magadan, Mahe, Majuro, Makassar, Malabo, Maldives, Malta, Managua, Manaus, Manila, Maputo, Marengo, Mariehamn, Marigot, Marquesas, Martinique, Maseru, Mauritius, Mawson, Mayotte, Mazatlan, Mbabane, McMurdo, Melbourne, Mendoza, Menominee, Merida, Mexico_City, Midway, Minsk, Miquelon, Mogadishu, Monaco, Moncton, Monrovia, Monterrey, Montevideo, Monticello, Montreal, Montserrat, Moscow, Muscat, Nairobi, Nassau, Nauru, Ndjamena, New_Salem, New_York, Niamey, Nicosia, Nipigon, Niue, Nome, Norfolk, Noronha, Nouakchott, Noumea, Novosibirsk, Omsk, Oral, Oslo, Ouagadougou, Pago_Pago, Palau, Palmer, Panama, Pangnirtung, Paramaribo, Paris, Perth, Petersburg, Phnom_Penh, Phoenix, Pitcairn, Podgorica, Ponape, Pontianak, Port_Moresby, Port_of_Spain, Porto_Velho, Prague, Puerto_Rico, Pyongyang, Qatar, Qyzylorda, Rainy_River, Rangoon, Rankin_Inlet, Rarotonga, Recife, Regina, Resolute, Reunion, Reykjavik, Riga, Rio_Branco, Rio_Gallegos, Riyadh, Rome, Rothera, Saigon, Saipan, Sakhalin, Samara, Samarkand, San_Juan, San_Marino, Santiago, Santo_Domingo, Sao_Paulo, Sao_Tome, Sarajevo, Scoresbysund, Seoul, Shanghai, Shiprock, Simferopol, Singapore, Skopje, Sofia, South_Georgia, South_Pole, St_Barthelemy, St_Helena, St_Johns, St_Kitts, St_Lucia, St_Thomas, St_Vincent, Stanley, Stockholm, Swift_Current, Sydney, Syowa, Tahiti, Taipei, Tallinn, Tarawa, Tashkent, Tbilisi, Tegucigalpa, Tehran, Tell_City, Thimphu, Thule, Thunder_Bay, Tijuana, Tirane, Tokyo, Tongatapu, Toronto, Tortola, Tripoli, Truk, Tucuman, Tunis, Ulaanbaatar, Urumqi, Ushuaia, Uzhgorod, Vaduz, Vancouver, Vatican, Vevay, Vienna, Vientiane, Vilnius, Vincennes, Vladivostok, Volgograd, Vostok, Wake, Wallis, Warsaw, Whitehorse, Winamac, Windhoek, Winnipeg, Yakutat, Yakutsk, Yekaterinburg, Yellowknife, Yerevan, Zagreb, Zaporozhye, Zurich, earlyCloseNYSE ) ## end: FinCenter timeDate/ChangeLog0000755000176200001440000004562714263246023013603 0ustar liggesusers2018-11-29 * timeFirstDayInMonth, timeLastDayInMonth, timeFirstQuarterInMonth, timeLastQuarterInMonth all have test added to preclude charvec value of length 0 being allowed in response to bug #1742 * .JULIAN changed to fix bug #6419 as suggested by reporter, argument length in calls to rep replaced by full argument length.out 2013-04-30 chalabi * DESCRIPTION, R/base-format.R, R/calendar-nDay.R, inst/unitTests/runit.SpecialDates.R: adapt to new version of as.POSIXct 2012-12-01 chalabi * ChangeLog, DESCRIPTION: Updated ChangeLog and DESCRIPTION files. 2012-09-26 chalabi * NAMESPACE, R/calendar-endpoints.R, man/calendar-endpoints.Rd: Hidden back .endpoints() to avoid conflicts with xts:::endpoints() * DESCRIPTION: Updated version number and package title. 2012-09-24 chalabi * ChangeLog, DESCRIPTION: Updated ChangeLog and DESC files * DESCRIPTION: Adapted version number. * DESCRIPTION: Updated maintainer field. * NAMESPACE, R/base-weekdays.R: Removed external C call. 2012-08-04 mmaechler * DESCRIPTION, R/base-weekdays.R: we "semi-depend" on package "date" 2012-03-21 chalabi * NAMESPACE: updated NAMESPACE * ChangeLog, DESCRIPTION: updated DESCRIPTION and ChangeLog * DESCRIPTION: updated version number 2012-03-20 chalabi * DESCRIPTION: updated DESC file 2012-03-20 wuertz * man/calendar-endpoints.Rd: non-ASCII characters removed * man/calendar-endpoints.Rd: man page for endpoints added * NAMESPACE: .endpoints renamed to endpoints * R/calendar-endpoints.R: .endpoints renamed yo endpoints and man page added 2012-03-19 chalabi * man/calendar-align.Rd, man/calendar-periods.Rd, man/graphics-plot.Rd: fixed manual pages 2012-03-18 wuertz * R/graphics-plot.R, R/methods-plot.R: graphics-plot.R renamed to methods-plot.R * R/stats-frequency.R: description modified * R/calendar-nDay.R: tabs removed * R/calendar-isBizday.R, R/calendar-isWeekday.R: is Bizday and isWeekday scripts merged * R/calendar-isDaily.R, R/calendar-isMonthly.R, R/calendar-isQuarterly.R, R/calendar-isRegular.R: isDaily, isMonthly, isQuarterly, isRegular merged to one script file * NAMESPACE: align* functions added * man/calendar-align.Rd: align help page updated * R/calendar-dayOfWeek.R, R/calendar-dayOfYear.R: dayOfWeek and dayOfYear scripts merged * R/calendar-months.R: obsolete calendar-months.R removed * R/calendar-atoms.R: months, timeDate moved to calendar.atoms.R * R/calendar-align.R: simple to use alignDaily, alignMonthly, and alignQuarterly functions added 2012-03-17 wuertz * NAMESPACE, R/graphics-plot.R, man/graphics-plot.Rd: pretty added 2012-03-14 wuertz * R/graphics-plot.R: bug in passing argument "labels" removed 2012-02-22 mmaechler * R/zzz.R: .First.lib is deprecated now (one should use .onLoad only) * DESCRIPTION: updated version number * R/calendar-align.R: align,timeDate-method is now based on seq.timeDate. * R/timeDate-Sequence.R: seq.timeDate method now works with 'by = quarter' and accepts syntax without whitesapce, e.g. 'by = 1week'. 2011-10-24 chalabi * ChangeLog, DESCRIPTION: updated DESC and ChangeLog file 2011-10-20 chalabi * NAMESPACE: Updated NAMESPACE such that zoo package is no longer masking as.Date.timeDate method. 2011-09-26 mmaechler * DESCRIPTION, R/calendar-nDay.R, R/zzz.R, inst/unitTests/runit.SpecialDates.R, man/calendar-nDay.Rd: timeNthNdayInMonth() {bug fix, thanks to Dave Winsenius}; do sensible unit tests; require reasonably recent R 2011-09-23 mmaechler * DESCRIPTION: remove deprecated "LazyLoad" entry * NAMESPACE, R/holiday-Dates.R, R/holiday-GB.R, man/holiday-Dates.Rd, man/holiday-GB.Rd: added GB Bank holiday calendar contributed by Murali Menon 2011-04-06 chalabi * ChangeLog, DESCRIPTION: updated DESC and ChangeLog * ChangeLog, DESCRIPTION: updated DESC and ChangeLog * inst/doc: removed empty directory * DESCRIPTION: updated version number * R/calendar-isBizday.R, R/calendar-isWeekday.R, man/calendar-isBizday.Rd, man/calendar-isWeekday.Rd: added argument to isWeekend(), isWeekday(), isBizday() and isHoliday to specify days that should be considered as weekdays. By defaults it is from Mondays to Fridays 2011-02-10 chalabi * ChangeLog, DESCRIPTION: updated Date and Revision field in DESC file and updated Changelog file * DESCRIPTION: updated DESC file 2011-01-07 mmaechler * ChangeLog, R/timeDate-Sequence.R, man/calendar-isBizday.Rd, man/timeDate-Sequence.Rd: fix seq.timeDate() [along R-devel`s seq.POSIXt()] 2010-11-01 chalabi * inst/doc/timeDate.pdf: removed old version of vignette to be replaced with new one. 2010-10-27 chalabi * ChangeLog, DESCRIPTION: updated DESC and ChangeLog file 2010-10-12 chalabi * R/AllClass.R: updated initialize,timeDate-method to remove superflous warning when no data is included in new timeDate objects. 2010-09-30 chalabi * NAMESPACE, man/timeDate-DaylightSavingTime.Rd, man/timeDate.Rd: updated NAMESPACE and manual pages with recent changes * R/timeDate.R: improved DST conversion in the presence of NA's 2010-09-29 chalabi * R/timeDate-generateDST.R, R/tzone.R: added formal time zones in addition to the financial centers. * R/calendar-dayOfWeek.R, R/calendar-dayOfYear.R, R/calendar-isWeekday.R, R/holiday-NERC.R, R/holiday-NYSE.R, R/holiday-ZURICH.R, inst/unitTests/runit.HolidayCalendars.R, inst/unitTests/runit.dayOfWeek.R, inst/unitTests/runit.dayOfYear.R, inst/unitTests/runit.isWeekday.R, inst/unitTests/runit.isWeekend.R: Using new argument of method as.POSIXlt.timeDate for better tzone management in holidays. * R/base-format.R, R/base-length.R, R/base-round.R, R/base-subset.R, R/calendar-atoms.R, R/calendar-months.R, R/methods-show.R: cosmetic changes in order to use accessor functions rather than @ * R/methods-as.R: as.POSIXlt.timeDate and as.POSIXct.timeDate now accepts tz argument. * R/methods-getDataPart.R: added getDataPart,timeDate method. * R/options-RmetricsOptions.R: setRmetricsOption now returns the old setting as invisible. 2010-09-24 chalabi * DESCRIPTION, NAMESPACE: updated NAMESPACE and version number in DESC file * R/timeDate-Sequence.R, man/timeDate-Sequence.Rd: by argument in timeSequence() is now the same as argument by in seq.timeDate() method. * R/timeDate-DaylightSavingTime.R: updated DST rules 2010-09-16 chalabi * R/timeDate-midnightStandard.R: midnightStandard is now based on midnightStandard2 2010-08-02 chalabi * man/00fCalendar-package.Rd, man/00timeDate-package.Rd: renmaed package manual page 2010-07-26 chalabi * ChangeLog, DESCRIPTION: updated DESC and ChangeLog * DESCRIPTION: updated version number 2010-07-23 chalabi * inst/DocCopying.pdf: removed DocCopying.pdf license is already specified in DESCRIPTION file 2010-07-06 chalabi * ChangeLog, DESCRIPTION: updated DESC and Changelog 2010-07-05 chalabi * R/timeDate-DaylightSavingTime.R: updated DST * R/timeDate.R: code cleanup * R/methods-show.R, R/zzz.R: added getRmetricsOption('max.print') for timeDate objects * R/base-format.R, R/methods-names.R, man/methods-names.Rd: added names support * R/timeDate-midnightStandard.R: midnightStandard() can also handling dates without leading zeros 2010-07-02 mmaechler * R/timeDate-midnightStandard.R, R/timeDate.R, inst/unitTests/runit.Class.R, man/timeDate-midnightStandard.Rd: more midnightStandard()/midnightStandard2(); improve help; add regression test for last fix 2010-07-02 chalabi * R/timeDate-midnightStandard.R: improved handling of dates without leading zeros and IS0 8601 midnight stantard 2010-04-16 chalabi * DESCRIPTION: updated version number * DESCRIPTION: DESC and Changelog 2010-04-13 chalabi * R/stats-kurtosis.R, R/stats-skewness.R, R/timeDate.R: Applied patch for timeDate from Brian Ripley for internal changes of date-time classes in R-devel. 2009-12-10 chalabi * DESCRIPTION: updated version number * ChangeLog, DESCRIPTION: updated Changelog and DESC file * man/options-RmetricsOptions.Rd: updated getRmetricsOption man page * R/timeDate-DaylightSavingTime.R: updated DST 2009-10-12 chalabi * NAMESPACE: updated NAMESPACE * inst/doc, inst/doc/timeDate.pdf: added pdf file describing timeDate 2009-09-28 chalabi * DESCRIPTION: updated version number * ChangeLog, DESCRIPTION: updated DESCR and ChangeLog * R/timeDate-DaylightSavingTime.R, R/timeDate-generateDST.R: updated DST 2009-09-15 chalabi * NAMESPACE, R/timeDate-midnightStandard.R, R/timeDate.R, man/timeDate-midnightStandard.Rd: introduced midnightStandard2 to improve speed when converting character vectors to timeDate objects. * NAMESPACE, R/AllGeneric.R, R/calendar-isDaily.R, R/calendar-isMonthly.R, R/calendar-isQuarterly.R, R/calendar-isRegular.R, R/stats-frequency.R: isDaily, isMonthly, isQuarterly, isRegular and frequency are now proper S4 generics and methods. isDaily, isMonthly, isQuarterly uses now numeric representation of time rather than characters for speed improvement. 2009-08-29 wuertz * R/AllGeneric.R, R/base-c.R, R/base-diff.R, R/base-difftimeDate.R, R/base-format.R, R/base-rev.R, R/base-round.R, R/base-sample.R, R/base-sort.R, R/base-subset.R, R/base-summary.R, R/base-unique.R, R/base-weekdays.R, R/calendar-Easter.R, R/calendar-align.R, R/calendar-atoms.R, R/calendar-dayOfWeek.R, R/calendar-dayOfYear.R, R/calendar-endpoints.R, R/calendar-firstDay.R, R/calendar-isBizday.R, R/calendar-isDaily.R, R/calendar-julian.R, R/calendar-months.R, R/calendar-nDay.R, R/calendar-onOrAfter.R, R/calendar-periods.R, R/class-timeDate.R, R/graphics-plot.R, R/holiday-Dates.R, R/holiday-Listing.R, R/holiday-NERC.R, R/holiday-NYSE.R, R/holiday-TSX.R, R/holiday-ZURICH.R, R/holiday.R, R/methods-as.R, R/methods-mathOps.R, R/methods-show.R, R/options-RmetricsOptions.R, R/options-currentYear.R, R/options-myFinCenter.R, R/options-myUnits.R, R/stats-blockStart.R, R/stats-frequency.R, R/stats-kurtosis.R, R/stats-na.fail.R, R/stats-skewness.R, R/stats-start.R, R/stats-window.R, R/timeDate-Calendar.R, R/timeDate-DaylightSavingTime.R, R/timeDate-Sequence.R, R/timeDate-Sys.timeDate.R, R/timeDate-finCenter.R, R/timeDate-generateDST.R, R/timeDate-listFinCenter.R, R/timeDate-midnightStandard.R, R/timeDate-rulesFinCenter.R, R/timeDate-whichFormat.R, R/timeDate.R: Descriptions added, copyrigth headers checked, should go now in the copyright file 2009-08-28 wuertz * inst/todo.txt: no longer required, clean up * R/class-timeDate.R, R/graphics-plot.R: comments added * R/timeDate-Sys.timeDate.R, R/timerDate-Sys.timeDate.R, man/listFinCenter.Rd, man/timeDate-listFinCenter.Rd: man and R files renamed * man/DaylightSavingTime.Rd, man/Easter.Rd, man/RmetricsOptions.Rd, man/Sys.timeDate.Rd, man/align.Rd, man/base-c.Rd, man/base-diff.Rd, man/base-difftimeDate.Rd, man/base-format.Rd, man/base-length.Rd, man/base-rep.Rd, man/base-rev.Rd, man/base-round.Rd, man/base-sample.Rd, man/base-sort.Rd, man/base-start.Rd, man/base-subset.Rd, man/base-summary.Rd, man/base-unique.Rd, man/blockStart.Rd, man/c.Rd, man/calendar-Easter.Rd, man/calendar-align.Rd, man/calendar-dayOfWeek.Rd, man/calendar-dayOfYear.Rd, man/calendar-firstDay.Rd, man/calendar-isBizday.Rd, man/calendar-isRegular.Rd, man/calendar-isWeekday.Rd, man/calendar-julian.Rd, man/calendar-nDay.Rd, man/calendar-onOrAfter.Rd, man/calendar-periods.Rd, man/currentYear.Rd, man/dayOfWeek.Rd, man/dayOfYear.Rd, man/diff.Rd, man/difftimeDate.Rd, man/finCenter.Rd, man/firstDay.Rd, man/graphics-plot.Rd, man/holiday-Dates.Rd, man/holiday-Listing.Rd, man/holiday-NERC.Rd, man/holiday-NYSE.Rd, man/holiday-TSX.Rd, man/holiday-ZURICH.Rd, man/holidayDate.Rd, man/holidayNERC.Rd, man/holidayNYSE.Rd, man/holidayTSX.Rd, man/holidayZURICH.Rd, man/isBizday.Rd, man/isRegular.Rd, man/isWeekday.Rd, man/julian.Rd, man/kurtosis.Rd, man/length.Rd, man/listHolidays.Rd, man/methods-Ops.Rd, man/methods-format.Rd, man/methods-mathOps.Rd, man/methods-na.Rd, man/methods-plot.Rd, man/methods-summary.Rd, man/midnightStandard.Rd, man/myFinCenter.Rd, man/myUnits.Rd, man/nDay.Rd, man/onOrAfter.Rd, man/options-RmetricsOptions.Rd, man/options-currentYear.Rd, man/options-myFinCenter.Rd, man/options-myUnits.Rd, man/periods.Rd, man/rep.Rd, man/rev.Rd, man/round.Rd, man/rulesFinCenter.Rd, man/sample.Rd, man/skewness.Rd, man/sort.Rd, man/start.Rd, man/stats-blockStart.Rd, man/stats-kurtosis.Rd, man/stats-na-fail.Rd, man/stats-skewness.Rd, man/stats-window.Rd, man/subset.Rd, man/timeCalendar.Rd, man/timeDate-Calendar.Rd, man/timeDate-DaylightSavingTime.Rd, man/timeDate-Sequence.Rd, man/timeDate-Sys.timeDate.Rd, man/timeDate-finCenter.Rd, man/timeDate-midnightStandard.Rd, man/timeDate-rulesFinCenter.Rd, man/timeDate-whichFormat.Rd, man/timeSequence.Rd, man/unique.Rd, man/whichFormat.Rd, man/window.Rd: script files renamed * R/RmetricsOptions.R, R/calendar--isQuarterly.R, R/calendar-align.R, R/calendar-endpoints.R, R/calendar-isQuarterly.R, R/calendar-isRegular.R, R/calendar-periods.R, R/endpoints.R, R/methods-Ops.R, R/methods-align.R, R/methods-mathOps.R, R/myFinCenter.R, R/myUnits.R, R/options-RmetricsOptions.R, R/options-currentYear.R, R/options-myFinCenter.R, R/options-myUnits.R, R/regular-isRegular.R, R/regular-periods.R, R/timeDate-currentYear.R: filenames renamed * R/DaylightSavingTime.R, R/Sys.timeDate.R, R/base-c.R, R/base-diff.R, R/base-difftimeDate.R, R/base-format.R, R/base-length.R, R/base-rep.R, R/base-rev.R, R/base-round.R, R/base-sample.R, R/base-sort.R, R/base-subset.R, R/base-summary.R, R/base-unique.R, R/base-weekdays.R, R/blockStart.R, R/c.R, R/calendar--isQuarterly.R, R/calendar-Easter.R, R/calendar-atoms.R, R/calendar-dayOfWeek.R, R/calendar-dayOfYear.R, R/calendar-firstDay.R, R/calendar-isBizday.R, R/calendar-isDaily.R, R/calendar-isMonthly.R, R/calendar-isWeekday.R, R/calendar-julian.R, R/calendar-months.R, R/calendar-nDay.R, R/calendar-onOrAfter.R, R/currentYear.R, R/dayOfWeek.R, R/dayOfYear.R, R/diff.R, R/difftimeDate.R, R/genDaylightSavingTime.R, R/graphics-plot.R, R/holiday-Dates.R, R/holiday-Listing.R, R/holiday-NERC.R, R/holiday-NYSE.R, R/holiday-TSX.R, R/holiday-ZURICH.R, R/holidayDate.R, R/holidayNERC.R, R/holidayNYSE.R, R/holidayTSX.R, R/holidayZURICH.R, R/isBizday.R, R/isWeekday.R, R/julian.R, R/kurtosis.R, R/length.R, R/listFinCenter.R, R/listHolidays.R, R/methods-atoms.R, R/methods-finCenter.R, R/methods-format.R, R/methods-julian.R, R/methods-months.R, R/methods-na.R, R/methods-plot.R, R/methods-summary.R, R/midnightStandard.R, R/regular-frequency.R, R/regular-isDaily.R, R/regular-isMonthly.R, R/regular-isQuarterly.R, R/rep.R, R/rev.R, R/round.R, R/rulesFinCenter.R, R/sample.R, R/skewness.R, R/sort.R, R/specialDates-Easter.R, R/specialDates-firstDay.R, R/specialDates-nDay.R, R/specialDates-onOrAfter.R, R/start.R, R/stats-blockStart.R, R/stats-frequency.R, R/stats-kurtosis.R, R/stats-na.fail.R, R/stats-skewness.R, R/stats-start.R, R/stats-window.R, R/subset.R, R/timeCalendar.R, R/timeDate-Calendar.R, R/timeDate-DaylightSavingTime.R, R/timeDate-Sequence.R, R/timeDate-currentYear.R, R/timeDate-finCenter.R, R/timeDate-generateDST.R, R/timeDate-listFinCenter.R, R/timeDate-midnightStandard.R, R/timeDate-rulesFinCenter.R, R/timeDate-whichFormat.R, R/timeSequence.R, R/timerDate-Sys.timeDate.R, R/unique.R, R/whichFormat.R, R/window.R: file names renamed to get better order in the directory * man/class-timeDate.Rd, man/timeDate.Rd: NAs in POSIX does not work any longer under windows 2.9.1 ? Removed from examples in man page * NAMESPACE, R/regular-frequency.R, man/isRegular.Rd: namespace and man page updated for regular objects 2009-08-28 wuertz * R/regular-periods.R, man/isRegular.Rd, man/periods.Rd: periodical rolling updated * NAMESPACE: obsolete ."rolling" functions from Namespace removed * NAMESPACE: namespace updated for regular functions * R/periods.R, R/regular-frequency.R, R/regular-isDaily.R, R/regular-isMonthly.R, R/regular-isQuarterly.R, R/regular-isRegular.R, R/regular-periods.R, man/isRegular.Rd: regular series check added * R/isBizday.R, R/isWeekday.R: doubled function definitions removed 2009-08-28 chalabi * R/timeDate.R: Improved handling of time stamps prior to first entry in DST table. 2009-08-28 wuertz * R/Easter.R, R/firstDay.R, R/nDay.R, R/onOrAfter.R, R/specialDates-Easter.R, R/specialDates-firstDay.R, R/specialDates-nDay.R, R/specialDates-onOrAfter.R: script files for special dates renamed 2009-08-14 chalabi * NAMESPACE, R/zzz.R: new NAMESPACE structure which should ease maintenance of packages. * NAMESPACE, R/methods-plot.R, man/methods-plot.Rd: Merge branch 'devel-timeSeries' Conflicts: pkg/timeSeries/R/base-Extract.R pkg/timeSeries/R/timeSeries.R 2009-05-13 wuertz * R/timeDate.R: minor modification for using decimal date formats * R/timeDate.R: Modification of setMethod("timeDate", "numeric") to handle decimal date like inputs (exactly that what "yearmon" does) also implemented in the ISO Standard * R/endpoints.R: new function endpoints added * NAMESPACE: endpoints added to namespace 2009-05-07 wuertz * DESCRIPTION, NAMESPACE, R/holidayNERC.R, man/holidayNERC.Rd: holiday NERC Calendar added 2009-04-15 chalabi * R/DaylightSavingTime.R: updated DST table 2009-04-02 chalabi * DESCRIPTION: more explicit depends and suggests field in DESC file. 2009-04-01 chalabi * DESCRIPTION: updated DESC file 2009-03-06 chalabi * R/methods-show.R: 'show' should return an invisible 'NULL'. as specified in ?show 2009-02-23 chalabi * NAMESPACE, R/periods.R, man/periods.Rd: added functions monthlyRolling, periodicallyRolling and periods 2009-02-10 chalabi * R/timeDate.R: in timeDate() charvec entries of different length are replaced with NA's * R/subset.R: use POSIX character classes instead of ASCII classes to avoid compatibility problems with different locales. * R/timeDate.R: timeDate() now returns timeDate(NA) if the format of charvec can not be found 2009-02-04 chalabi * ChangeLog: * DESCRIPTION: updated version number 2009-01-28 chalabi * R/whichFormat.R: * inst/unitTests/runit.Subsets.R: added subset RUnit tests * R/midnightStandard.R, R/whichFormat.R: handling NA's with timeDate * man/methods-na.Rd: added help page for is.na method of timeDate * R/methods-na.R, R/midnightStandard.R, R/whichFormat.R: timeDate now handles NA's * NAMESPACE: added is.na methods for timeDate objects * DESCRIPTION: updated version number * R/methods-na.R: added 'is.na' method for timeDate objects 2009-01-12 chalabi * man/methods-Ops.Rd, man/nDay.Rd: fixed few typos in man pages * R/start.R: faster start,timeDate method * R/sample.R: faster sample,timeDate method * R/rev.R: faster rev,timeDate method * R/rep.R: faster rep,timeDate method timeDate/README.md0000755000176200001440000000377714324734402013311 0ustar liggesusers [![CRANStatusBadge](http://www.r-pkg.org/badges/version/timeDate)](https://cran.r-project.org/package=timeDate) [![CRAN RStudio mirror downloads](https://cranlogs.r-pkg.org/badges/timeDate)](https://www.r-pkg.org/pkg/timeDate) [![CRAN RStudio mirror downloads](https://cranlogs.r-pkg.org/badges/grand-total/timeDate?color=blue)](https://r-pkg.org/pkg/timeDate) The R package 'timeDate' provides class 'timeDate' for working with date/time. The 'timeDate' class fulfils the conventions of the ISO 8601 standard as well as of the ANSI C and POSIX standards. Beyond these standards it provides the "Financial Center" concept which allows to handle data records collected in different time zones and mix them up to have always the proper time stamps with respect to your personal financial center, or alternatively to the GMT reference time. It can thus also handle time stamps from historical data records from the same time zone, even if the financial centers changed day light saving times at different calendar dates. Package `timeDate` is part of the Rmetrics suite of R packages and is developed on R-forge at [timeDate](https://r-forge.r-project.org/scm/viewvc.php/pkg/timeDate/?root=rmetrics). The root of Rmetrics is at [R-forge](https://r-forge.r-project.org/projects/rmetrics). # Installing timeDate Install the [latest stable version](https://cran.r-project.org/package=timeDate) of `timeDate` from CRAN: install.packages("timeDate") You can install the [development version](https://r-forge.r-project.org/scm/viewvc.php/pkg/timeDate/?root=rmetrics) of `timeDate` from R-forge: install.packages("timeDate", repos = "http://R-Forge.R-project.org") To report bugs visit [Rmetrics](https://r-forge.r-project.org/projects/rmetrics/). # Documentation You can view the documentation of `timeDate` at [timeDateDoc](https://geobosh.github.io/timeDateDoc/) or download the [reference manual](https://cran.r-project.org/package=timeDate/timeDate.pdf) of the latest release from CRAN. timeDate/man/0000755000176200001440000000000014536563053012573 5ustar liggesuserstimeDate/man/base-diff.Rd0000755000176200001440000000274414324771466014720 0ustar liggesusers\name{diff} \alias{diff} \alias{diff.timeDate} \title{Lagged 'timeDate' differences} \description{ Returns suitably lagged and iterated differences. } \usage{ \method{diff}{timeDate}(x, lag = 1, differences = 1, \dots) } \arguments{ \item{x}{ an object of class \code{"timeDate"}. } \item{lag}{ an integer indicating which lag to use. } \item{differences}{ an integer indicating the order of the difference. } \item{\dots}{ arguments passed to other methods. } } \value{ For the function, \code{diff.timeDate}, if \code{x} is a vector of length \code{n} and \code{differences=1}, then the computed result is equal to the successive differences \code{x[(1+lag):n] - x[1:(n-lag)]}. If \code{difference} is larger than one this algorithm is applied recursively to \code{x}. Note that the returned value is a vector which is shorter than \code{x}. } \examples{ ## Create Character Vectors: dts = c("1989-09-28", "2001-01-15", "2004-08-30", "1990-02-09") dts tms = c( "23:12:55", "10:34:02", "08:30:00", "11:18:23") tms ## timeDate - GMT = timeDate(dts, zone = "GMT", FinCenter = "GMT") + 24*3600 GMT ZUR = timeDate(dts, zone = "GMT", FinCenter = "Europe/Zurich") ZUR ## diff - # Suitably Lagged and Iterated Differences: diff(GMT) diff(GMT, lag = 2) diff(GMT, lag = 1, diff = 2) } \keyword{chron} timeDate/man/holiday-Listing.Rd0000755000176200001440000000117414324777562016137 0ustar liggesusers\name{listHolidays} \alias{listHolidays} \title{List of holidays} \description{ Returns a list of holidays. } \usage{ listHolidays(pattern = ".*") } \arguments{ \item{pattern}{ a pattern character string as required by the \code{\link{grep}} function. } } \details{ Returns a character vector containing the names of supported holidays matching \code{pattern}. The default is to return all holidays. } \value{ a character vector } \examples{ ## listHolidays - # All Holidays: listHolidays() # Local Swiss Holidays: listHolidays("CH") } \keyword{chron} timeDate/man/options-myFinCenter.Rd0000755000176200001440000000127214324777510017003 0ustar liggesusers\name{myFinCenter} \alias{myFinCenter} \title{myFinCenter variable} \description{ A character string with the name of my financial center. } \note{ Can be modified by the user to his/her own or any other financial center. The default is \code{"GMT"}. To list all supported financial centers use the function \code{listFinCenter}. } \seealso{ \code{\link{listFinCenter}} } \examples{ ## myFinCenter - the global setting currently used: getRmetricsOptions("myFinCenter") ## Change to another Financial center: # setRmetricsOptions(myFinCenter = "Zurich") ## Do not care about DST ... # setRmetricsOptions(myFinCenter = "GMT") } \keyword{chron} timeDate/man/specialHolidayGB.Rd0000644000176200001440000000736214535305127016230 0ustar liggesusers\name{specialHolidayGB} \alias{specialHolidayGB} \title{ Dates of special one-off holidays in the UK } \description{ Gives dates of special one-off holidays in the UK. } \usage{ specialHolidayGB(year = getRmetricsOptions("currentYear"), value = "timeDate", named = FALSE, ...) } \arguments{ \item{year}{ the year(s) for which special holidays are required, a vector containing four-digit integer number(s) of the form \code{CCYY}, e.g. \code{2023}. } \item{value}{ the class of the returned value. If \code{"timeDate"}, the default, return a \code{"timeDate"} object, if \code{""} return a character vector. } \item{named}{ if \code{TRUE}, the dates are named, otherwise unnamed. } \item{\dots}{ further arguments for \code{as.character} when \code{value = ""}. } } \details{ \code{specialHolidayGB} gives the special Bank holidays in England for the years specified by argument \code{year}, such as the Millenium day at the end of 1999 and significant Royal events. Don't assume that there is at most one special holiday in a given year, 2022 had two. Years that do not contain special Bank holidays are omitted. If there are no special holidays in the specified year(s) the results is a \code{"timeDate"} or \code{"character"} object of length zero. The holidays are sorted in increasing time order. Argument \code{value} controls the class of the result. The default is \code{"timeDate"}. The result is a character vector if \code{value = ""} (the empty string). In the latter case, further arguments for the transformation to \code{character} can be passed in argument \code{"..."} (e.g., \code{format}). If argument \code{named} is \code{TRUE}, the dates get names asssociated with them, so one can see which date represents which holiday. } \value{ a \code{"timeDate"} or a character vector, as requested by argument \code{value}. } %\references{ %%% ~put references to the literature/web site here ~ %} \author{ Georgi N. Boshnakov } \note{ While most of the holidays given by the functions with prefix \code{GBxxx} are valid for the UK as a whole and they are (or should be) fully correct for England, there are variations in Scotland, Wales and Northern Ireland. Functions containing 'London' in their name refer to the London Stock Exchange. Currently, the Bank holidays given by those functions are the same as for England. Actually, the 'official' holidays between 1834 and 1870 were set by the Bank of England. The first Act of Parlament on the issue is from 1871. } %% ~Make other sections like Warning with \section{Warning }{....} ~ \seealso{ \code{\link{GBSummerBankHoliday}} for functions giving specific regular Bank holidays, \code{\link{holidayLONDON}} for all London Stock Exchange holidays (actually, England holidays) in requested years. } \examples{ ## UK Millenium day specialHolidayGB(1999) # as a dateTime object specialHolidayGB(1999, "") # as a character string ## 2 special holidays in UK in 2022 specialHolidayGB(2022) # [2022-06-03] [2022-09-19] ## what are their names? specialHolidayGB(2022, named = TRUE) ## the Spring BH is usually on last Monday of May, but not in 2022 dayOfWeek(GBSpringBankHoliday(2020:2024)) ## the above formed a nice 4-day weekend in early June 2022 ## (look at the Thu-Fri sequence on 2-3 June) dayOfWeek(holidayLONDON(2022)) } % Add one or more standard keywords, see file 'KEYWORDS' in the % R documentation directory (show via RShowDoc("KEYWORDS")): % \keyword{ ~kwd1 } % \keyword{ ~kwd2 } % Use only one keyword per line. % For non-standard keywords, use \concept instead of \keyword: % \concept{ ~cpt1 } % \concept{ ~cpt2 } % Use only one concept per line. timeDate/man/calendar-dayOfWeek.Rd0000755000176200001440000000114014340072703016474 0ustar liggesusers\name{dayOfWeek} \alias{dayOfWeek} \title{Day of the week} \description{ Returns the days of the week of the data in a \code{"timeDate"} object. } \usage{ dayOfWeek(x) } \arguments{ \item{x}{ an object of class \code{"timeDate"}. } } \value{ a character vector giving the days of the week corresponding to the elements of \code{x}. The names are in English, abbreviated to three letters. } \seealso{ \code{\link{dayOfYear}} } \examples{ ## timeCalendar - tC = timeCalendar(2022) ## The days of the Year: dayOfWeek(tC) } \keyword{chron} timeDate/man/timeDate-DaylightSavingTime.Rd0000755000176200001440000002045114324774721020356 0ustar liggesusers\name{DaylightSavingTime} \alias{DaylightSavingTime} \alias{Abidjan} \alias{Accra} \alias{Adak} \alias{Addis_Ababa} \alias{Adelaide} \alias{Aden} \alias{Algiers} \alias{Almaty} \alias{Amman} \alias{Amsterdam} \alias{Anadyr} \alias{Anchorage} \alias{Andorra} \alias{Anguilla} \alias{Antananarivo} \alias{Antigua} \alias{Apia} \alias{Aqtau} \alias{Aqtobe} \alias{Araguaina} \alias{Aruba} \alias{Ashgabat} \alias{Asmara} \alias{Asuncion} \alias{Athens} \alias{Atikokan} \alias{Auckland} \alias{Azores} \alias{Baghdad} \alias{Bahia} \alias{Bahrain} \alias{Baku} \alias{Bamako} \alias{Bangkok} \alias{Bangui} \alias{Banjul} \alias{Barbados} \alias{Beirut} \alias{Belem} \alias{Belgrade} \alias{Belize} \alias{Berlin} \alias{Bermuda} \alias{Bishkek} \alias{Bissau} \alias{Blanc-Sablon} \alias{Blantyre} \alias{Boa_Vista} \alias{Bogota} \alias{Boise} \alias{Bratislava} \alias{Brazzaville} \alias{Brisbane} \alias{Broken_Hill} \alias{Brunei} \alias{Brussels} \alias{Bucharest} \alias{Budapest} \alias{Buenos_Aires} \alias{BuenosAires} \alias{Bujumbura} \alias{Cairo} \alias{Calcutta} \alias{Cambridge_Bay} \alias{Campo_Grande} \alias{Canary} \alias{Cancun} \alias{Cape_Verde} \alias{Caracas} \alias{Casablanca} \alias{Casey} \alias{Catamarca} \alias{Cayenne} \alias{Cayman} \alias{Center} \alias{Ceuta} \alias{Chagos} \alias{Chatham} \alias{Chicago} \alias{Chihuahua} \alias{Chisinau} \alias{Choibalsan} \alias{Chongqing} \alias{Christmas} \alias{Cocos} \alias{Colombo} \alias{Comoro} \alias{Conakry} \alias{Copenhagen} \alias{Cordoba} \alias{Costa_Rica} \alias{Cuiaba} \alias{Curacao} \alias{Currie} \alias{Dakar} \alias{Damascus} \alias{Danmarkshavn} \alias{Dar_es_Salaam} \alias{Darwin} \alias{Davis} \alias{Dawson} \alias{Dawson_Creek} \alias{Denver} \alias{Detroit} \alias{Dhaka} \alias{Dili} \alias{Djibouti} \alias{Dominica} \alias{Douala} \alias{Dubai} \alias{Dublin} \alias{DumontDUrville} \alias{Dushanbe} \alias{Eastern} \alias{Edmonton} \alias{Efate} \alias{Eirunepe} \alias{El_Aaiun} \alias{El_Salvador} \alias{Enderbury} \alias{Eucla} \alias{Fakaofo} \alias{Faroe} \alias{Fiji} \alias{Fortaleza} \alias{Frankfurt} \alias{Freetown} \alias{Funafuti} \alias{Gaborone} \alias{Galapagos} \alias{Gambier} \alias{Gaza} \alias{Gibraltar} \alias{Glace_Bay} \alias{Godthab} \alias{Goose_Bay} \alias{Grand_Turk} \alias{Grenada} \alias{Guadalcanal} \alias{Guadeloupe} \alias{Guam} \alias{Guatemala} \alias{Guayaquil} \alias{Guernsey} \alias{Guyana} \alias{Halifax} \alias{Harare} \alias{Harbin} \alias{Havana} \alias{Helsinki} \alias{Hermosillo} \alias{Hobart} \alias{Hong_Kong} \alias{HongKong} \alias{Honolulu} \alias{Hovd} \alias{Indianapolis} \alias{Inuvik} \alias{Iqaluit} \alias{Irkutsk} \alias{Isle_of_Man} \alias{Istanbul} \alias{Jakarta} \alias{Jamaica} \alias{Jayapura} \alias{Jersey} \alias{Jerusalem} \alias{Johannesburg} \alias{Johnston} \alias{Jujuy} \alias{Juneau} \alias{Kabul} \alias{Kaliningrad} \alias{Kamchatka} \alias{Kampala} \alias{Karachi} \alias{Kashgar} \alias{Katmandu} \alias{Kerguelen} \alias{Khartoum} \alias{Kiev} \alias{Kigali} \alias{Kinshasa} \alias{Kiritimati} \alias{Knox} \alias{Kosrae} \alias{Krasnoyarsk} \alias{Kuala_Lumpur} \alias{KualaLumpur} \alias{Kuching} \alias{Kuwait} \alias{Kwajalein} \alias{La_Paz} \alias{La_Rioja} \alias{Lagos} \alias{Libreville} \alias{Lima} \alias{Lindeman} \alias{Lisbon} \alias{Ljubljana} \alias{Lome} \alias{London} \alias{Longyearbyen} \alias{Lord_Howe} \alias{Los_Angeles} \alias{LosAngeles} \alias{Louisville} \alias{Luanda} \alias{Lubumbashi} \alias{Lusaka} \alias{Luxembourg} \alias{Macau} \alias{Maceio} \alias{Madeira} \alias{Madrid} \alias{Magadan} \alias{Mahe} \alias{Majuro} \alias{Makassar} \alias{Malabo} \alias{Maldives} \alias{Malta} \alias{Managua} \alias{Manaus} \alias{Manila} \alias{Maputo} \alias{Marengo} \alias{Mariehamn} \alias{Marigot} \alias{Marquesas} \alias{Martinique} \alias{Maseru} \alias{Mauritius} \alias{Mawson} \alias{Mayotte} \alias{Mazatlan} \alias{Mbabane} \alias{McMurdo} \alias{Melbourne} \alias{Mendoza} \alias{Menominee} \alias{Merida} \alias{Mexico_City} \alias{MexicoCity} \alias{Midway} \alias{Minsk} \alias{Miquelon} \alias{Mogadishu} \alias{Monaco} \alias{Moncton} \alias{Monrovia} \alias{Monterrey} \alias{Montevideo} \alias{Monticello} \alias{Montreal} \alias{Montserrat} \alias{Moscow} \alias{Muscat} \alias{Nairobi} \alias{Nassau} \alias{Nauru} \alias{Ndjamena} \alias{New_Salem} \alias{New_York} \alias{NewYork} \alias{Niamey} \alias{Nicosia} \alias{Nipigon} \alias{Niue} \alias{Nome} \alias{Norfolk} \alias{Noronha} \alias{Nouakchott} \alias{Noumea} \alias{Novosibirsk} \alias{Omsk} \alias{Oral} \alias{Oslo} \alias{Ouagadougou} \alias{Pacific} \alias{Pago_Pago} \alias{Palau} \alias{Palmer} \alias{Panama} \alias{Pangnirtung} \alias{Paramaribo} \alias{Paris} \alias{Perth} \alias{Petersburg} \alias{Phnom_Penh} \alias{Phoenix} \alias{Pitcairn} \alias{Podgorica} \alias{Ponape} \alias{Pontianak} \alias{Port_Moresby} \alias{Port_of_Spain} \alias{Port-au-Prince} \alias{Porto_Velho} \alias{Porto-Novo} \alias{Prague} \alias{Puerto_Rico} \alias{Pyongyang} \alias{Qatar} \alias{Qyzylorda} \alias{Rainy_River} \alias{Rangoon} \alias{Rankin_Inlet} \alias{Rarotonga} \alias{Recife} \alias{Regina} \alias{Resolute} \alias{Reunion} \alias{Reykjavik} \alias{Riga} \alias{Rio_Branco} \alias{Rio_Gallegos} \alias{Riyadh} \alias{Rome} \alias{Rothera} \alias{Saigon} \alias{Saipan} \alias{Sakhalin} \alias{Samara} \alias{Samarkand} \alias{San_Juan} \alias{San_Marino} \alias{Santiago} \alias{Santo_Domingo} \alias{Sao_Paulo} \alias{Sao_Tome} \alias{Sarajevo} \alias{Scoresbysund} \alias{Seoul} \alias{Shanghai} \alias{Shiprock} \alias{Simferopol} \alias{Singapore} \alias{Skopje} \alias{Sofia} \alias{South_Georgia} \alias{South_Pole} \alias{St_Barthelemy} \alias{St_Helena} \alias{St_Johns} \alias{St_Kitts} \alias{St_Lucia} \alias{St_Thomas} \alias{St_Vincent} \alias{Stanley} \alias{Stockholm} \alias{Swift_Current} \alias{Sydney} \alias{Syowa} \alias{Tahiti} \alias{Taipei} \alias{Tallinn} \alias{Tarawa} \alias{Tashkent} \alias{Tbilisi} \alias{Tegucigalpa} \alias{Tehran} \alias{Tell_City} \alias{Thimphu} \alias{Thule} \alias{Thunder_Bay} \alias{Tijuana} \alias{Tirane} \alias{Tokyo} \alias{Tongatapu} \alias{Toronto} \alias{Tortola} \alias{Tripoli} \alias{Truk} \alias{Tucuman} \alias{Tunis} \alias{Ulaanbaatar} \alias{Urumqi} \alias{Ushuaia} \alias{Uzhgorod} \alias{Vaduz} \alias{Vancouver} \alias{Vatican} \alias{Vevay} \alias{Vienna} \alias{Vientiane} \alias{Vilnius} \alias{Vincennes} \alias{Vladivostok} \alias{Volgograd} \alias{Vostok} \alias{Wake} \alias{Wallis} \alias{Warsaw} \alias{Whitehorse} \alias{Winamac} \alias{Windhoek} \alias{Winnipeg} \alias{Yakutat} \alias{Yakutsk} \alias{Yekaterinburg} \alias{Yellowknife} \alias{Yerevan} \alias{Zagreb} \alias{Zaporozhye} \alias{Zurich} \alias{AST} \alias{CET} \alias{CST} \alias{EET} \alias{EST} \alias{MST} \alias{PST} \title{Daylight Saving Time Rules} \description{ Functions for about 400 cities and regions which return daylight saving time rules and time zone offsets. } \details{ As a selection of these functions: Adelaide Algiers Amsterdam Anchorage Andorra Athens Auckland Bahrain Bangkok Beirut Belfast Belgrade Berlin Bogota Bratislava Brisbane Brussels Bucharest Budapest BuenosAires Cairo Calcutta Caracas Casablanca Cayman Chicago Copenhagen Darwin Denver Detroit Dubai Dublin Eastern Edmonton Frankfurt Helsinki HongKong Honolulu Indianapolis Istanbul Jakarta Jerusalem Johannesburg Kiev KualaLumpur Kuwait Lagos Lisbon Ljubljana London LosAngeles Luxembourg Madrid Manila Melbourne MexicoCity Monaco Montreal Moscow Nairobi Nassau NewYork Nicosia Oslo Pacific Paris Perth Prague Riga Riyadh Rome Seoul Shanghai Singapore Sofia Stockholm Sydney Taipei Tallinn Tehran Tokyo Tunis Vaduz Vancouver Vienna Vilnius Warsaw Winnipeg Zagreb Zurich, ... } \note{ There are currently two synonyms available "Pacific" for Los Angeles and "Eastern" for New York. Specific time zones (\code{AST}, \code{CET}, \code{CST}, \code{EET}, \code{EST}, \code{MST} and \code{PST}) are also available. Note we leave the space in all double named cities like New York or Hong Kong and use an underscore for it. All the entries are retrieved from the tzdata library which is available under GNU GPL licence. } \examples{ ## DST Rules for Zurich: head(Zurich()) tail(Zurich()) ## list all available centers listFinCenter() } \keyword{data} timeDate/man/timeDate-listFinCenter.Rd0000755000176200001440000000257714346323115017373 0ustar liggesusers\name{listFinCenter} \alias{listFinCenter} \title{List of financial centers} \description{ Lists supported financial centers. } \usage{ listFinCenter(pattern = ".*") } \arguments{ \item{pattern}{ a pattern character string as required by the \code{\link{grep}} function. The default, \code{".*"}, gives all supported financial centers } } \details{ The list returned by \code{listFinCenter} doesn't contain all financial centers supported by \pkg{timeDate}. Rather it contains currently supported \sQuote{standard names} of time zones defined in the tz (a.k.a. Zoneinfo) database. Names supported by previous versions of by \pkg{timeDate} are recognised, even though they are not in the list. } \value{ a character vector listing the financial centers whose names match \code{pattern}. } \seealso{ \code{\link{rulesFinCenter}} for the daylight saving rules } \examples{ ## myFinCenter - the global setting currently used: getRmetricsOptions("myFinCenter") ## Other Financial Centers: listFinCenter("Asia/") listFinCenter("^A") # all beginning with "A" listFinCenter("^[^A]") # all *not* beginning with "A" listFinCenter(".*/L") # cities with L* stopifnot(identical(sort(listFinCenter()), ## 'A' and 'not A' == everything: sort(union(listFinCenter("^A"), listFinCenter("^[^A]"))))) } \keyword{chron} timeDate/man/base-rep.Rd0000755000176200001440000000125414324771466014571 0ustar liggesusers\name{rep} \alias{rep} \alias{rep.timeDate} \title{Replicating 'timeDate' objects} \description{ Replicates \code{"timeDate"} objects. } \usage{ \method{rep}{timeDate}(x, \dots) } \arguments{ \item{x}{ an object of class \code{"timeDate"}. } \item{\dots}{ arguments passed to the method for \code{'POSIXct'}, \code{\link[base]{rep}}. } } \value{ an object of class \code{"timeDate"}. } \examples{ ## rep - dts = c("1989-09-28", "2001-01-15", "2004-08-30", "1990-02-09") ZUR = timeDate(dts, zone = "GMT", FinCenter = "Europe/Zurich") rep(ZUR[2], times = 3) rep(ZUR[2:3], times = 2) } \keyword{chron} timeDate/man/earlyCloseNYSE.Rd0000644000176200001440000000322014536373005015654 0ustar liggesusers\name{earlyCloseNYSE} \alias{earlyCloseNYSE} \title{Early closings of the New York Stock exchange} \description{ Get dates of early closings of the New York Stock exchange (NYSE). } \usage{ earlyCloseNYSE(year) } \arguments{ \item{year}{ a vector of integers representing years (4 digits). } } \details{ \code{earlyCloseNYSE} gives the dates and times when NYSE was closed early. Some of these closing are scheduled (e.g. at 1pm on the day before or after a holiday), others are unscheduled. The information is incomplete, particularly after 2011. For those dates the values are computed using explicitly declared rules or, if not available, ones derived from recent years. } \value{ a \code{"timeDate"} object containing the dates (with closing times) of early closings } \references{ https://archive.fo/XecDq } \author{ Georgi N. Boshnakov } \note{ The function is somewhat experimental but the type of the result will not change. } %% ~Make other sections like Warning with \section{Warning }{....} ~ \seealso{ \code{\link{holidayNYSE}} for a list of NYSE holidays } \examples{ earlyCloseNYSE(1990) earlyCloseNYSE(2022:2024) # early closings holidayNYSE(2022:2024) # holidays ## early closings & holidays combined c(earlyCloseNYSE(2022:2024), holidayNYSE(2022:2024)) } \keyword{chron} % Add one or more standard keywords, see file 'KEYWORDS' in the % R documentation directory (show via RShowDoc("KEYWORDS")): % \keyword{ ~kwd1 } % \keyword{ ~kwd2 } % Use only one keyword per line. % For non-standard keywords, use \concept instead of \keyword: % \concept{ ~cpt1 } % \concept{ ~cpt2 } % Use only one concept per line. timeDate/man/timeDate-Sequence.Rd0000755000176200001440000000566314324775463016406 0ustar liggesusers\name{timeSequence} \alias{timeSequence} \alias{seq.timeDate} \title{ Regularly spaced 'timeDate' objects } \description{ Create a regularly spaced object of class \code{"timeDate"}. } \usage{ timeSequence(from, to = Sys.timeDate(), by, length.out = NULL, format = NULL, zone = "", FinCenter = "") \method{seq}{timeDate}(from, to, by, length.out = NULL, along.with = NULL, \dots) } \arguments{ \item{from, to}{ starting date, required, and end date, optional. If supplied, \code{to} must be after (later than) \code{from}. } \item{by}{ \itemize{ \item a character string, containing one of "sec", "min", "hour", "day", "week", "month" or "year". This can optionally be preceded by an integer and a space, or followed by "s". \item character string "quarter" that is equivalent to "3 months". \item A number, taken to be in seconds. \item A object of class 'difftime' \item character string \code{"DSTday"} gives a sequence taken at the same clock time every day. Note that on the days when the DST changes, the requested time may not exist or be ambiguous, see the examples. } } \item{length.out}{ integer, optional. Desired length of the sequence, if specified "to" will be ignored. } \item{along.with}{Take the length from the length of this argument.} \item{format}{the format specification of the input character vector.} \item{zone}{the time zone or financial center where the data were recorded.} \item{FinCenter}{ a character with the location of the financial center named as "continent/city". } \item{\dots}{arguments passed to other methods.} } \note{ \code{timeSequence()} is a wrapper for the \code{"timeDate"} method of \code{\link{seq}()}, and that has been closely modeled after base \R's \code{POSIXt} method, \code{\link{seq.POSIXt}}. } \value{ an object of class \code{"\linkS4class{timeDate}"} } \examples{ ## timeSequence - ## autodetection of format : (t1 <- timeSequence(from = "2004-03-12", to = "2004-04-11")) stopifnot( ## different formats even: identical(t1, timeSequence(from = "2004-03-12", to = "11-Apr-2004")), identical(t1, ## explicit format and FinCenter : timeSequence(from = "2004-03-12", to = "2004-04-11", format = "\%Y-\%m-\%d", FinCenter = "GMT"))) ## observe "switch to summer time": timeSequence(from = "2004-03-26 05:00:00", to = "2004-04-02 05:00:00", zone = "Europe/Zurich", FinCenter = "Europe/Zurich") ## ensure fixed clock time: timeSequence(from = "2004-03-26 05:00:00", to = "2004-04-01 05:00:00", by = "DSTday", zone = "Europe/Zurich", FinCenter = "Europe/Zurich") ## on the day of DST change the time may not exist (notice 2004-03-28 00:00:00): timeSequence(from = "2004-03-26 01:00:00", to = "2004-04-01 01:00:00", by = "DSTday", zone = "Europe/Zurich", FinCenter = "Europe/Zurich") } \keyword{chron} timeDate/man/timeDate-Sys.timeDate.Rd0000755000176200001440000000125214324775505017132 0ustar liggesusers\name{Sys.timeDate} \alias{Sys.timeDate} \title{System time as 'timeDate' object} \description{ Returns the system time as an object of class \code{"timeDate"}. } \usage{ Sys.timeDate(FinCenter = "") } \arguments{ \item{FinCenter}{ a character string with the location of the financial center named as "continent/city". } } \value{ a \code{"timeDate"} object } \examples{ \dontrun{ ## direct Sys.timeDate() # Local Time in Zurich Sys.timeDate(FinCenter = "Zurich") ## transformed from "POSIX(c)t" with timeDate() timeDate(Sys.time()) # Local Time in Zurich timeDate(Sys.time(), FinCenter = "Zurich") } } \keyword{chron} timeDate/man/stats-na-fail.Rd0000755000176200001440000000054314324774045015532 0ustar liggesusers\name{is.na-methods} \alias{is.na-methods} \docType{methods} \alias{is.na,timeDate-method} \title{Methods for 'is.na'} \description{ \code{is.na} methods for \code{"timeDate"} objects. } \examples{ # Create a timeCalendar sequence (td <- timeCalendar()) is.na(td) # insert NA's is.na(td) <- 2:3 td # test of NA's is.na(td) } \keyword{chron} timeDate/man/calendar-isWeekday.Rd0000755000176200001440000000142314324771466016565 0ustar liggesusers\name{isWeekday} \alias{isWeekday} \alias{isWeekend} \title{Weekdays and weekends} \description{ Tests if a date is a weekday or not. } \usage{ isWeekday(x, wday = 1:5) isWeekend(x, wday = 1:5) } \arguments{ \item{x}{ an object of class \code{"timeDate"}. } \item{wday}{ Specify which days should be considered as weekdays. By default from Mondays to Fridays. } } \value{ a logical vector indicating if a date is a weekday or a weekend day } \examples{ ## Dates in April, currentYear: currentYear = getRmetricsOptions("currentYear") tS = timeSequence( from = paste(currentYear, "-03-01", sep = ""), to = paste(currentYear, "-04-30", sep = "")) tS ## Subset of Weekends: isWeekend(tS) tS[isWeekend(tS)] } \keyword{chron} timeDate/man/timeDate-finCenter.Rd0000755000176200001440000000220114324774751016533 0ustar liggesusers\name{finCenter} \alias{finCenter} \alias{finCenter,timeDate-method} \alias{finCenter<-} \alias{finCenter<-,timeDate-method} \title{Financial Center of a timeDate object} \description{ Get or set the financial center of a \code{"timeDate"} object. } \usage{ \S4method{finCenter}{timeDate}(x) \S4method{finCenter}{timeDate}(x) <- value } \arguments{ \item{x}{ a \code{timeSeries} object. } \item{value}{ a character with the location of the financial center named as "continent/city". } } \details{ \code{"timeDate"} objects store the time in the GMT time zone. The financial center specifies a location whose local time is to be used to format the object, e.g., for printing. \code{finCenter} gives the financial center associated with a \sQuote{timeDate} object. The assignment form changes it to the specified value. Both functions are S4 generics. This page describes the methods defined in package \sQuote{timeDate}. } \seealso{ \code{\link{listFinCenter}} } \examples{ date <- timeDate("2008-01-01") finCenter(date) <- "GMT" date format(date) finCenter(date) <- "Zurich" date format(date) } timeDate/man/base-start.Rd0000755000176200001440000000323314324771466015137 0ustar liggesusers\name{start} \alias{start} \alias{end} \alias{start.timeDate} \alias{end.timeDate} \alias{min.timeDate} \alias{max.timeDate} \alias{range.timeDate} \title{Terminal times and range} \description{ Extracts the time when the first or last observation was taken, or computes the range of the dates in a \code{"timeDate"} object. } \usage{ \method{start}{timeDate}(x, \dots) \method{end}{timeDate}(x, \dots) \method{min}{timeDate}(\dots, na.rm = FALSE) \method{max}{timeDate}(\dots, na.rm = FALSE) \method{range}{timeDate}(\dots, na.rm = FALSE) } \arguments{ \item{x}{ an object of class \code{"timeDate"}. } \item{\dots}{ ignored by \code{start} and \code{end}; a 'timeDate' object for \code{min}, \code{max}, and \code{range}. } \item{na.rm}{ not used. } } \details{ Conceptually, the \code{"timeDate"} object is sorted before the computations. In particular, \code{start} is not necessarilly the first element of the object and similarly for the other functions. \code{min} and \code{max} are equivalent to \code{start} end \code{end}, respectively. \code{range} returns the earlies and the latest times in a \code{"timeDate"} object. The remaining functions return only one of them, as suggested by their names. } \value{ an object of class \code{"timeDate"} } \examples{ ## timeCalendar - # Random Calendar Dates: \dontshow{set.seed(1234)} tR = sample(timeCalendar()) sort(tR) tR ## start | end - start(tR) end(tR) ## The First and Last Time Stamp: tR[1] tR[length(tR)] rev(tR)[1] ## The Range: c(start(tR), end(tR)) range(tR) } \keyword{chron} timeDate/man/methods-mathOps.Rd0000644000176200001440000000435714533572517016151 0ustar liggesusers\name{timeDateMathOps} \alias{timeDateMathOps} \alias{Ops,timeDate,timeDate-method} \alias{+,timeDate,timeDate-method} \alias{+,timeDate,numeric-method} \alias{-,timeDate,timeDate-method} \alias{-,timeDate,numeric-method} \alias{-,numeric,timeDate-method} \alias{+,numeric,timeDate-method} \title{Mathematical operations with 'timeDate' objects} \description{ Functions for mathematical and logical operations on \code{"timeDate"} objects. } \usage{ \S4method{Ops}{timeDate,timeDate}(e1, e2) } \arguments{ \item{e1, e2}{ objects of class \code{"timeDate"}. In the case of addition and subtraction one of them may be of class \code{numeric}, specifying the number of seconds to add or subtract. } } \details{ Group \code{"Ops"} represents the binary mathematical operators. Methods are defined for such operations when one or both arguments are from class \code{"timeDate"}. Operations that don't make sense, such as addition of two \code{"timeDate"} objects, throw error. The plus operator \code{"+"} performs arithmetic "+" operation on \code{"timeDate"} objects, and the minus operator \code{"-"} returns a \code{difftime} object if both arguments \code{e1} and \code{e2} are \code{"timeDate"} objects, or returns a \code{"timeDate"} object \code{e2} seconds earlier than \code{e1}. } \value{ addition of numeric to \code{"timeDate"} returns \code{"timeDate"}, subtraction of numeric from \code{"timeDate"} returns \code{"timeDate"}, subtraction of two \code{"timeDate"} objects returns \code{"difftime"}, other operations between two \code{"timeDate"} objects are applied to the underlying times (slot \code{"Date"}). The result of that operation is converted to \code{"timeDate"} if it represents a time and returned as is otherwise. } \examples{ ## Create Character Vectors: dts = c("1989-09-28", "2001-01-15", "2004-08-30", "1990-02-09") dts tms = c( "23:12:55", "10:34:02", "08:30:00", "11:18:23") tms ## "+/-" - # Add One Day to a Given timeDate Object: GMT = timeDate(dts, zone = "GMT", FinCenter = "GMT") GMT ZUR = timeDate(dts, zone = "GMT", FinCenter = "Europe/Zurich") ZUR GMT + 24*3600 ZUR[2] - ZUR[1] } \keyword{chron} timeDate/man/holiday-TSX.Rd0000755000176200001440000000072514324776050015174 0ustar liggesusers\name{holidayTSX} \alias{holidayTSX} \title{TSX holiday calendar} \description{ Returns a holiday calendar for the Toronto Stock Exchange. } \usage{ holidayTSX(year = getRmetricsOptions("currentYear")) } \arguments{ \item{year}{ an integer value or vector of years, formatted as \code{YYYY}. } } \value{ an object of class \code{"timeDate"} } \examples{ ## holidayTSX - holidayTSX() holidayTSX(2008:2010) } \keyword{chron} timeDate/man/calendar-align.Rd0000755000176200001440000000334314324771466015735 0ustar liggesusers\name{align} \alias{align} \alias{align,timeDate-method} \alias{align,ANY-method} \alias{alignDaily} \alias{alignMonthly} \alias{alignQuarterly} \title{ Align a 'timeDate' object to regular date/time stamps } \description{ Aligns a \code{"timeDate"} object to regular date/time stamps. } \usage{ \S4method{align}{timeDate}(x, by = "1d", offset = "0s") alignDaily(x, include.weekends=FALSE) alignMonthly(x, include.weekends=FALSE) alignQuarterly(x, include.weekends=FALSE) } \arguments{ \item{x}{ an object of class \code{"timeDate"}. } \item{by}{ a character string formed from an integer length and a period identifier. Valid values are "w", "d", "h", "m", "s", for weeks, days, hours, minutes and seconds. For example a bi-weekly period is expressed as \code{"2w"}. } \item{offset}{ a character string to set an offset formed from an integer length and a period identifier in the same way as for argument \code{by}. } \item{include.weekends}{ logical value indicating whether weekends should be included. } } \details{ The functions \code{alignDaily}, \code{alignMonthly}, \code{alignMonthly} are simple to use functions which generate end-of-day, end-of-month, and end-of quarter \code{"timeDate"} objects. Weekends are excluded by default. Optionally they can be added setting the argument \code{include.weekends = TRUE}. } \value{ an object of class \code{"timeDate"} } \examples{ ## align - # Align Bi-Weekly with a 3 Days Offset: (tC <- timeCalendar()) align(tC, by = "2w", offset = "3d") ## alignDaily - # Simple to use Functions: alignDaily(tC) alignDaily(tC, include.weekends=TRUE) # Align to end-of-month Dates: alignMonthly(tC) } \keyword{chron} timeDate/man/calendar-firstDay.Rd0000755000176200001440000000513514324763566016433 0ustar liggesusers\name{firstDay} \alias{firstDay} \alias{lastDay} \alias{timeFirstDayInMonth} \alias{timeLastDayInMonth} \alias{timeFirstDayInQuarter} \alias{timeLastDayInQuarter} \title{First and last days} \description{ Computes the first/last day in a given month/quarter. } \usage{ timeFirstDayInMonth(charvec, format = "\%Y-\%m-\%d", zone = "", FinCenter = "") timeLastDayInMonth(charvec, format = "\%Y-\%m-\%d", zone = "", FinCenter = "") timeFirstDayInQuarter(charvec, format = "\%Y-\%m-\%d", zone = "", FinCenter = "") timeLastDayInQuarter(charvec, format = "\%Y-\%m-\%d", zone = "", FinCenter = "") } \arguments{ \item{charvec}{ a character vector of dates and times. } \item{format}{ the format specification of the input character vector. } \item{zone}{ the time zone or financial center where the data were recorded. } \item{FinCenter}{ a character with the location of the financial center named as "continent/city". } } \details{ The functions \code{timeLastDayInMonth} and \code{timeLastDayInMonth} return the last or first day, respectively, in a given month and year. The same functionality for quarterly time horizons is returned by the functions \code{timeLastDayInQuarter} and \code{timeLastDayInQuarter}. } \value{ an object of class \code{"timeDate"} } \examples{ ## Date as character String: charvec = "2006-04-16" myFinCenter = getRmetricsOptions("myFinCenter") ## timeLastDayInMonth- # What date has the last day in a month for a given date ? timeLastDayInMonth(charvec, format = "\%Y-\%m-\%d", zone = myFinCenter, FinCenter = myFinCenter) timeLastDayInMonth(charvec) timeLastDayInMonth(charvec, FinCenter = "Zurich") ## timeFirstDayInMonth - # What date has the first day in a month for a given date ? timeFirstDayInMonth(charvec) ## timeLastDayInQuarter - # What date has the last day in a quarter for a given date ? timeLastDayInQuarter(charvec) ## timeFirstDayInQuarter - # What date has the first day in a quarter for a given date ? timeFirstDayInQuarter(charvec) ## timeNdayOnOrAfter # What date has the first Monday on or after March 15, 1986 ? timeNdayOnOrAfter("1986-03-15", 1) ## timeNdayOnOrBefore # What date has Friday on or before April 22, 1977 ? timeNdayOnOrBefore("1986-03-15", 5) ## timeNthNdayInMonth - # What date is the second Monday in April 2004 ? timeNthNdayInMonth("2004-04-01", 1, 2) ## timeLastNdayInMonth - # What date has the last Tuesday in May, 1996 ? timeLastNdayInMonth("1996-05-01", 2) } \keyword{chron} timeDate/man/base-unique.Rd0000755000176200001440000000204514324771466015310 0ustar liggesusers\name{unique} \alias{unique} \alias{unique.timeDate} \title{ Remove duplicated dates from 'timeDate' objects } \description{ Remove duplicated dates from \code{"timeDate"} objects. } \usage{ \method{unique}{timeDate}(x, \dots) } \arguments{ \item{x}{ an object of class \code{"timeDate"}. } \item{\dots}{ arguments passed to other methods. } } \value{ an object of class \code{"timeDate"} } \examples{ ## c - # Create Character Vectors: dts = c("1989-09-28", "2001-01-15", "2004-08-30", "1990-02-09") dts tms = c( "23:12:55", "10:34:02", "08:30:00", "11:18:23") tms ## "+/-" - # Add One Day to a Given timeDate Object: GMT = timeDate(dts, zone = "GMT", FinCenter = "GMT") GMT ZUR = timeDate(dts, zone = "GMT", FinCenter = "Europe/Zurich") ZUR ## c - # Concatenate and Replicate timeDate Objects: c(GMT[1:2], ZUR[1:2]) c(ZUR[1:2], GMT[1:2]) ## rep - rep(ZUR[2], times = 3) rep(ZUR[2:3], times = 2) } \keyword{chron} timeDate/man/calendar-nDay.Rd0000755000176200001440000000265614324777263015545 0ustar liggesusers\name{nDay} \alias{nDay} \alias{timeNthNdayInMonth} \alias{timeLastNdayInMonth} \title{n-th n-day dates} \description{ Computes the date for the n-th or last occurrence of an n-day in year/month. } \usage{ timeNthNdayInMonth(charvec, nday = 1, nth = 1, format = "\%Y-\%m-\%d", zone = "", FinCenter = "") timeLastNdayInMonth(charvec, nday = 1, format = "\%Y-\%m-\%d", zone = "", FinCenter = "") } \arguments{ \item{charvec}{a character vector of dates and times.} \item{nday}{an integer vector with entries ranging from \code{0} (Sunday) to \code{6} (Saturday).} \item{nth}{an integer vector numbering the n-th occurence.} \item{format}{the format specification of the input character vector.} \item{zone}{the time zone or financial center where the data were recorded.} \item{FinCenter}{a character with the location of the financial center named as "continent/city".} } \details{ \code{timeNthNdayInMonth} returns the \code{nth} occurrence of a n-day (nth = 1,...,5) in \code{year}, \code{month}. \code{timeLastNdayInMonth} returns the last \code{nday} in \code{year}, \code{month}. } \value{ an object of class \code{"timeDate"} } \examples{ ## timeNthNdayInMonth - # What date is the second Monday in April 2004 ? timeNthNdayInMonth("2004-04-01", 1, 2) ## timeLastNdayInMonth - # What date has the last Tuesday in May, 1996 ? timeLastNdayInMonth("1996-05-01", 2) } \keyword{chron} timeDate/man/calendar-Easter.Rd0000755000176200001440000000330614324762775016070 0ustar liggesusers\name{Easter} \alias{Easter} \title{Date of Easter} \description{ Returns the date of Easter. } \usage{ Easter(year = getRmetricsOptions("currentYear"), shift = 0) } \arguments{ \item{year}{ an integer value or integer vector for the year(s). } \item{shift}{ an integer value, the number of days shifted from the Easter date. Negative integers are allowed. } } \details{ Holidays may have two origins, ecclesiastical and public/federal. The ecclesiastical calendars of Christian churches are based on cycles of moveable and immoveable feasts. Christmas, December 25th, is the principal immoveable feast. Easter is the principal moveable feast, and dates of most other moveable feasts are determined with respect to Easter. The date of Easter is evaluated by a complex procedure whose detailed explanation goes beyond this description. The reason that the calculation is so complicate is, because the date of Easter is linked to (an inaccurate version of) the Hebrew calendar. But nevertheless a short answer to the question "When is Easter?" is the following: Easter Sunday is the first Sunday after the first full moon after vernal equinox. For the long answer we refer to Toendering (1998). The algorithm computes the date of Easter based on the algorithm of Oudin (1940). It is valid for any Gregorian Calendar year. } \value{ the date of Easter as an object of class \code{"timeDate"} } \note{ Doesn't have options to compute Eastern Orthodox Easter dates. } \examples{ ## Easter - # Current Year: Easter() # From 2001 to 2010: Easter(2001:2010) } \keyword{chron} timeDate/man/timeDate-midnightStandard.Rd0000755000176200001440000000163314324775157020113 0ustar liggesusers\name{midnightStandard} \alias{midnightStandard} \alias{midnightStandard2} \title{Midnight standard} \description{ Corrects \code{"timeDate"} objects if they do not fulfill the ISO8601 midnight standard. \code{midnightStandard2()} relies on \code{\link{strptime}} wherever possible, and there simply returns \code{\link{as.POSIXct}(\link{strptime}(charvec, format, tz = "GMT"))}. } \usage{ midnightStandard (charvec, format) midnightStandard2(charvec, format) } \arguments{ \item{charvec}{ a character string or vector of dates and times. } \item{format}{ a string, the format specification of the input character vector. } } \value{ \code{midnightStandard} returns a \code{character} and \code{midnightStandard2} a \code{\link{POSIXct}} object. } \examples{ ch <- "2007-12-31 24:00" midnightStandard(ch) (ms2 <- midnightStandard2(ch)) class(ms2) } \keyword{chron} timeDate/man/base-round.Rd0000755000176200001440000000203414324770747015130 0ustar liggesusers\name{round} \alias{round} \alias{trunc} \alias{round.timeDate} \alias{trunc.timeDate} \title{Rounding and truncating 'timeDate' objects} \description{ Rounds and truncates objects of class 'timeDate'. } \usage{ \method{round}{timeDate}(x, digits = c("days", "hours", "mins")) \method{trunc}{timeDate}(x, units = c("days", "hours", "mins"), \dots) } \arguments{ \item{digits, units}{ a character string denoting the date/time units in which the results are desired. } \item{x}{ an object of class \code{"timeDate"}. } \item{\dots}{ arguments passed to other methods. } } \details{ The two functions \code{round} and \code{trunc} allow to round or to truncate \code{"timeDate"} objects to the specified unit and return them as \code{"timeDate"} objects. There is an inconsistency in that \code{round} uses \code{digits} as argument and not \code{units}. } \value{ an object of class \code{"timeDate"} } \examples{ ## round - ## truncate - } \keyword{chron} timeDate/man/base-summary.Rd0000644000176200001440000000134714437131520015462 0ustar liggesusers\name{summary-methods} \alias{summary.timeDate} \alias{timeDate_summary} \alias{print.timeDate_summary} \title{Summary method} \description{ Summarizes details of a \code{"timeDate"} object. } \usage{ \method{summary}{timeDate}(object, \dots) } \arguments{ \item{object}{ an object of class \code{"timeDate"}. } \item{\dots}{ arguments passed to other methods. } } \details{ Creates a summary report of the details of a \code{"timeDate"} object. This includes the starting and end date, the number of dates the format and the financial center in use. } \value{ an object from S3 class \code{"timeDate_summary"}, which has a print method } \examples{ tC = timeCalendar() summary(tC) } \keyword{chron} timeDate/man/calendar-julian.Rd0000755000176200001440000000535714324777042016130 0ustar liggesusers\name{julian} \alias{julian,timeDate-method} \alias{atoms} \alias{atoms,ANY-method} \alias{atoms,timeDate-method} \alias{months} \alias{months,timeDate-method} \title{Julian counts and calendar atoms} \description{ Returns Julian day counts, date/time atoms from a \code{"timeDate"} object, and extracts month atoms from a \code{"timeDate"} object. } \usage{ \S4method{julian}{timeDate}(x, origin = timeDate("1970-01-01"), units = c("auto", "secs", "mins", "hours", "days", "weeks"), zone = NULL, FinCenter = NULL, \dots) \S4method{atoms}{timeDate}(x, \dots) \S4method{months}{timeDate}(x, abbreviate = NULL) } \arguments{ \item{x}{ an object of class \code{"timeDate"}. } \item{origin}{ a length-one object inheriting from class \code{"timeDate"} setting the origin for the julian counter. } \item{units}{ a character string denoting the date/time units in which the results are desired. } \item{zone}{ the time zone or financial center where the data were recorded. } \item{FinCenter}{ a character string with the location of the financial center named as "continent/city". } \item{abbreviate}{ currently not used. } \item{\dots}{ arguments passed to other methods. } } \details{ Generic functions to extract properties of \code{"timeDate"} objects. \code{julian} and \code{months} are generics from base R, while \code{atoms} is a generic defined in this package. \code{julian} extracts the number of days since \code{origin} (can be fractional), see also \code{\link[base]{julian}}. \code{atoms} extracts the calendar atoms from a \code{"timeDate"} object, i.e., the year, month, day, and optionally, hour, minute and second. The result is a data frame with the financial center in atrribute \code{"control"}. \code{months} extracts the months as integers from 1 to 12, unlike \code{base::months} which returns the names of the months. } \value{ for \code{julian}, a \code{difftime} object; for \code{atoms}, a \code{data.frame} with attribute \code{"control"} containing the financial center of the input vector \code{x}. The data frame has the following components: \item{Y}{year,} \item{m}{month,} \item{d}{day,} \item{H}{hour,} \item{M}{minute,} \item{S}{scond;} for \code{months}, a numeric vector with attribute \code{"control"} containing the financial center. } \seealso{ the base R functions \code{\link[base]{julian}}, \code{\link[base]{difftime}}, \code{\link[base]{months}}; \code{\link{dayOfWeek}}, \code{\link{dayOfYear}} } \examples{ ## julian - tC = timeCalendar(2022) julian(tC)[1:3] ## atoms - atoms(tC) ## months - months(tC) } \keyword{chron} timeDate/man/holiday-ZURICH.Rd0000755000176200001440000000135414324777642015531 0ustar liggesusers\name{holidayZURICH} \alias{holidayZURICH} \title{Zurich holiday calendar} \description{ Returns a holiday calendar for Zurich. } \usage{ holidayZURICH(year = getRmetricsOptions("currentYear")) } \arguments{ \item{year}{ an integer value or vector of years, formatted as \code{YYYY}. } } \details{ The Zurich holiday calendar includes the following holidays: NewYearsDay, GoodFriday, EasterMonday, LaborDay, PentecostMonday, ChristmasDay, BoxingDay, CHBerchtoldsDay, CHSechselaeuten, CHAscension, CHConfederationDay, CHKnabenschiessen. } \value{ an object of class \code{"timeDate"} } \examples{ ## holidayZURICH - holidayZURICH() holidayZURICH(2008:2010) } \keyword{chron} timeDate/man/timeDate-rulesFinCenter.Rd0000755000176200001440000000160614346321404017541 0ustar liggesusers\name{rulesFinCenter} \alias{rulesFinCenter} \title{Financial centers DST rules} \description{ Returns DST rules for a financial center. } \usage{ rulesFinCenter(FinCenter = "") } \arguments{ \item{FinCenter}{ a character string with the location of the financial center named as "continent/city". } } \value{ a list of time zones and DST rules available in the database } \details{ The function \code{rulesFinCenter} lists the daylight saving rules for a selected financial center. There is no dependency on the POSIX implementation of your operating system because \pkg{timeDate} comes with a database containing the necessary time zone and day light saving time information. } \seealso{ \code{\link{listFinCenter}} for a list of the available financial centers } \examples{ ## rulesFinCenter - rulesFinCenter("Zurich") } \keyword{chron} timeDate/man/holiday.Rd0000644000176200001440000001136414531164725014516 0ustar liggesusers\name{holiday} \alias{holiday} \title{Holiday dates} \description{ Returns the date of a holiday. } \usage{ holiday(year = getRmetricsOptions("currentYear"), Holiday = "Easter") } \arguments{ \item{Holiday}{ the function name (a character string or unquoted) of an ecclesiastical or public holiday in the G7 countries or Switzerland, see the list below. Can also be a character vector to specify several holidays. } \item{year}{ an integer value or vector of years, formatted as \code{YYYY}. } } \value{ an object of class \code{"timeDate"} } \details{ Easter is the central ecclesiastical holiday. Many other holidays are related to this feast. The function \code{Easter} computes the dates of Easter and related ecclesiastical holidays for the requested year vector. \code{holiday} calculates the dates of ecclesiastical or publich holidays in the G7 countries, e.g. \code{holiday(2003, "GoodFriday")}. Rmetrics contains holiday functions automatically loaded at startup time. The user can add easily additional holiday functions. The information for the holidays is collected from several web pages about holiday calendars. The following ecclesiastical and public \code{[HOLIDAY]} functions in the G7 countries and Switzerland are available: \cr \emph{Holidays Related to Easter:} Septuagesima, Quinquagesima, AshWednesday, PalmSunday, GoodFriday, EasterSunday, Easter, EasterMonday, RogationSunday, Ascension, Pentecost, PentecostMonday, TrinitySunday CorpusChristi. \cr \emph{Holidays Related to Christmas:} ChristTheKing, Advent1st, Advent1st, Advent3rd, Advent4th, ChristmasEve, ChristmasDay, BoxingDay, NewYearsDay. \cr \emph{Other Ecclestical Feasts:} SolemnityOfMary, Epiphany, PresentationOfLord, Annunciation, TransfigurationOfLord, AssumptionOfMary, AssumptionOfMary, BirthOfVirginMary, CelebrationOfHolyCross, MassOfArchangels, AllSaints, AllSouls. \cr \emph{CHZurich - Public Holidays:} CHBerchtoldsDay, CHSechselaeuten, CHAscension, CHConfederationDay, CHKnabenschiessen. \cr \emph{GBLondon - Public Holidays:} GBEarlyMayBankHoliday, GBSpringBankHoliday GBSummerBankHoliday, GBNewYearsEve. (The deprecated GBMayDay and GBBankHoliday are still available but strongly discouraged. Instead, use GBEarlyMayBankHoliday and GBSpringBankHoliday, respectively)\cr \emph{DEFrankfurt - Public Holidays:} DEAscension, DECorpusChristi, DEGermanUnity, DEChristmasEve, DENewYearsEve. \cr \emph{FRParis - Public Holidays:} FRFetDeLaVictoire1945, FRAscension, FRBastilleDay, FRAssumptionVirginMary, FRAllSaints, FRArmisticeDay. \cr \emph{ITMilano - Public Holidays:} ITEpiphany, ITLiberationDay, ITRepublicAnniversary, ITAssumptionOfVirginMary, ITAllSaints, ITWWIVictoryAnniversary, ITStAmrose, ITImmaculateConception. \cr \emph{USNewYork/USChicago - Public Holidays:} USNewYearsDay, USInaugurationDay, USMLKingsBirthday, USLincolnsBirthday, USWashingtonsBirthday, USMemorialDay, USIndependenceDay, USLaborDay, USColumbusDay, USElectionDay, USVeteransDay, USThanksgivingDay, USChristmasDay, USCPulaskisBirthday, USGoodFriday, USJuneteenthNationalIndependenceDay. \cr \emph{CAToronto/CAMontreal - Public Holidays:} CAVictoriaDay, CACanadaDay, CACivicProvincialHoliday, CALabourDay, CAThanksgivingDay, CaRemembranceDay. \cr \emph{JPTokyo/JPOsaka - Public Holidays:} JPNewYearsDay, JPGantan, JPBankHolidayJan2, JPBankHolidayJan3, JPComingOfAgeDay, JPSeijinNoHi, JPNatFoundationDay, JPKenkokuKinenNoHi, JPGreeneryDay, JPMidoriNoHi, JPConstitutionDay, JPKenpouKinenBi, JPNationHoliday, JPKokuminNoKyujitu, JPChildrensDay, JPKodomoNoHi, JPMarineDay, JPUmiNoHi, JPRespectForTheAgedDay, JPKeirouNoHi, JPAutumnalEquinox, JPShuubun-no-hi, JPHealthandSportsDay, JPTaiikuNoHi, JPNationalCultureDay, JPBunkaNoHi, JPThanksgivingDay, JPKinrouKanshaNohi, JPKinrou-kansha-no-hi, JPEmperorsBirthday, JPTennou-tanjyou-bi, JPTennou-tanjyou-bi. \cr JPMountainDay } \examples{ ## holiday - # Dates for GoodFriday from 2000 until 2005: holiday(2000:2005, "GoodFriday") holiday(2000:2005, GoodFriday) # same (GoodFriday is a function) # Good Friday and Easter holiday(2000:2005, c("GoodFriday", "Easter")) holiday(2000:2005, c(GoodFriday, Easter)) ## Easter - Easter(2000:2005) ## GoodFriday - GoodFriday(2000:2005) Easter(2000:2005, -2) } \keyword{chron} timeDate/man/graphics-plot.Rd0000644000176200001440000000447214531164564015644 0ustar liggesusers\name{plot-methods} \alias{plot,timeDate-method} \alias{points,timeDate-method} \alias{lines,timeDate-method} \alias{abline,ANY,ANY,ANY,timeDate-method} \alias{axis.timeDate} \alias{pretty.timeDate} \title{Plot methods} \description{ Plot methods for \code{"timeDate"} objects. } \usage{ \S4method{plot}{timeDate}(x, y, \dots) \S4method{lines}{timeDate}(x, y, \dots) \S4method{points}{timeDate}(x, y, \dots) axis.timeDate(side, x, at, format = NULL, labels = TRUE, \dots) \method{pretty}{timeDate}(x, n=5, min.n=n\%/\%3, shrink.sml=0.75, high.u.bias=1.5, u5.bias=0.5+1.5*high.u.bias, eps.correct=0, \dots) } \arguments{ \item{x, y, at}{ an object of class \code{timeDate}. } \item{side}{ an integer specifying which side of the plot the axis is to be drawn on. The axis is placed as follows: 1=below, 2=left, 3=above and 4=right. } \item{format}{ a POSIX format string, e.g. "\%Y-\%m-\%d". } \item{labels}{ either a logical value specifying whether annotations are to be made at the tickmarks, or a vector of character strings to be placed at the tickpoints. } \item{n}{ an integer giving the desired number of intervals. } \item{min.n}{ a nonnegative integer giving the minimal number of intervals. } \item{shrink.sml}{ a positive numeric by a which a default scale is shrunk in the case when range(x) is very small. } \item{high.u.bias}{ a non-negative numeric, typically > 1. Larger high.u.bias values favor larger units. } \item{u5.bias}{ a non-negative numeric multiplier favoring factor 5 over 2. } \item{eps.correct}{ an integer code, one of 0, 1, or 2. If non-0, a correction is made at the boundaries. } \item{\dots}{ arguments passed to other methods. } } \value{ returns a summary report of the details of a \code{"timeDate"} object. This includes the starting and end date, the number of dates the format and the financial center in use. } \examples{ ## timeCalendar - x <- timeCalendar() y <- rnorm(12) ## Plotting : plot(x, y, type = "l") points(x, y, pch = 19, col = "red") plot(x, y, type = "l", xaxt = "n") axis.timeDate(1, at = x[c(1, 3, 5, 7, 9, 11)], format = "\%b") axis.timeDate(1, at = x[12], format = "\%Y") } \keyword{hplot} \keyword{chron} timeDate/man/base-length.Rd0000755000176200001440000000066714324777004015265 0ustar liggesusers\name{length} \alias{length} \alias{length.timeDate} \title{Length of a 'timeDate' object} \description{ Returns the length of a \code{"timeDate"} object. } \usage{ \method{length}{timeDate}(x) } \arguments{ \item{x}{ an object of class \code{"timeDate"}. } } \value{ an integer of length 1 } \examples{ ## timCalendar - tC = timeCalendar() ## length - length(tC) } \keyword{chron} timeDate/man/options-RmetricsOptions.Rd0000755000176200001440000000123714324777454017734 0ustar liggesusers\name{RmetricsOptions} \alias{setRmetricsOptions} \alias{getRmetricsOptions} \alias{getRmetricsOption} \title{Rmetrics option settings} \description{ Allow the user to set and examine a variety of global options which affect the way in which Rmetrics functions compute and display their results. } \usage{ setRmetricsOptions(\dots) getRmetricsOption(x, unset = "") } \arguments{ \item{unset}{ a character string holding the return value is x is not set. } \item{x}{ a character string holding an option name. } \item{\dots}{ any options can be defined, using \code{name = value} or by passing a list of such tagged values. } } timeDate/man/holiday-Dates.Rd0000644000176200001440000005004414535134171015546 0ustar liggesusers\name{holidayDate} \alias{holidayDate} \alias{Septuagesima} \alias{Quinquagesima} \alias{AshWednesday} \alias{PalmSunday} \alias{GoodFriday} \alias{EasterSunday} \alias{EasterMonday} \alias{RogationSunday} \alias{Ascension} \alias{Pentecost} \alias{PentecostMonday} \alias{TrinitySunday} \alias{CorpusChristi} \alias{ChristTheKing} \alias{Advent1st} \alias{Advent2nd} \alias{Advent3rd} \alias{Advent4th} \alias{ChristmasEve} \alias{ChristmasDay} \alias{BoxingDay} \alias{NewYearsDay} \alias{SolemnityOfMary} \alias{Epiphany} \alias{PresentationOfLord} \alias{Annunciation} \alias{TransfigurationOfLord} \alias{AssumptionOfMary} \alias{BirthOfVirginMary} \alias{CelebrationOfHolyCross} \alias{MassOfArchangels} \alias{AllSaints} \alias{AllSouls} \alias{LaborDay} \alias{CHBerchtoldsDay} \alias{CHSechselaeuten} \alias{CHAscension} \alias{CHConfederationDay} \alias{CHKnabenschiessen} \alias{GBMayDay} % deprecated \alias{GBEarlyMayBankHoliday} \alias{GBBankHoliday} % deprecated \alias{GBSpringBankHoliday} \alias{GBSummerBankHoliday} \alias{GBMilleniumDay} % deprecated \alias{DEAscension} \alias{DECorpusChristi} \alias{DEGermanUnity} \alias{DEChristmasEve} \alias{DENewYearsEve} \alias{FRFetDeLaVictoire1945} \alias{FRAscension} \alias{FRBastilleDay} \alias{FRAssumptionVirginMary} \alias{FRAllSaints} \alias{FRArmisticeDay} \alias{ITEpiphany} \alias{ITLiberationDay} \alias{ITAssumptionOfVirginMary} \alias{ITAllSaints} \alias{ITStAmrose} \alias{ITImmaculateConception} \alias{USDecorationMemorialDay} \alias{USPresidentsDay} \alias{USNewYearsDay} \alias{USInaugurationDay} \alias{USMLKingsBirthday} \alias{USLincolnsBirthday} \alias{USWashingtonsBirthday} \alias{USMemorialDay} \alias{USIndependenceDay} \alias{USLaborDay} \alias{USColumbusDay} \alias{USElectionDay} \alias{USVeteransDay} \alias{USThanksgivingDay} \alias{USChristmasDay} \alias{USCPulaskisBirthday} \alias{USGoodFriday} \alias{USJuneteenthNationalIndependenceDay} \alias{CAVictoriaDay} \alias{CAFamilyDay} \alias{CACanadaDay} \alias{CACivicProvincialHoliday} \alias{CALabourDay} \alias{CAThanksgivingDay} \alias{CaRemembranceDay} \alias{JPVernalEquinox} \alias{JPNewYearsDay} \alias{JPGantan} \alias{JPBankHolidayJan2} \alias{JPBankHolidayJan3} \alias{JPComingOfAgeDay} \alias{JPSeijinNoHi} \alias{JPNatFoundationDay} \alias{JPKenkokuKinenNoHi} \alias{JPGreeneryDay} \alias{JPMidoriNoHi} \alias{JPConstitutionDay} \alias{JPKenpouKinenBi} \alias{JPNationHoliday} \alias{JPKokuminNoKyujitu} \alias{JPChildrensDay} \alias{JPKodomoNoHi} \alias{JPMarineDay} \alias{JPUmiNoHi} \alias{JPRespectForTheAgedDay} \alias{JPKeirouNOhi} % 2023-11-27 deprecated, obvious mis-capitalisation \alias{JPKeirouNoHi} % 2023-11-27 new, replaces the above \alias{JPMountainDay} % 2023-11-27 new \alias{JPAutumnalEquinox} \alias{JPShuubunNoHi} \alias{JPHealthandSportsDay} \alias{JPTaiikuNoHi} \alias{JPNationalCultureDay} \alias{JPBunkaNoHi} \alias{JPThanksgivingDay} \alias{JPKinrouKanshaNoHi} \alias{JPEmperorsBirthday} \alias{JPTennouTanjyouBi} \alias{JPBankHolidayDec31} \title{Public and ecclesiastical holidays} \description{ A collection of functions giving holiday dates in the G7 countries and Switzerland. } \usage{ Septuagesima(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) Quinquagesima(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) AshWednesday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) PalmSunday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) GoodFriday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) EasterSunday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) EasterMonday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) RogationSunday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) Ascension(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) Pentecost(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) PentecostMonday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) TrinitySunday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) CorpusChristi(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) ChristTheKing(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) Advent1st(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) Advent2nd(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) Advent3rd(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) Advent4th(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) ChristmasEve(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) ChristmasDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) BoxingDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) NewYearsDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) SolemnityOfMary(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) Epiphany(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) PresentationOfLord(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) Annunciation(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) TransfigurationOfLord(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) AssumptionOfMary(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) BirthOfVirginMary(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) CelebrationOfHolyCross(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) MassOfArchangels(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) AllSaints(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) AllSouls(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) LaborDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) CHBerchtoldsDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) CHSechselaeuten(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) CHAscension(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) CHConfederationDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) CHKnabenschiessen(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) GBMayDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) GBEarlyMayBankHoliday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) GBBankHoliday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) GBSpringBankHoliday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) GBSummerBankHoliday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) GBMilleniumDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) DEAscension(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) DECorpusChristi(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) DEGermanUnity(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) DEChristmasEve(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) DENewYearsEve(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) FRFetDeLaVictoire1945(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) FRAscension(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) FRBastilleDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) FRAssumptionVirginMary(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) FRAllSaints(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) FRArmisticeDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) ITEpiphany(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) ITLiberationDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) ITAssumptionOfVirginMary(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) ITAllSaints(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) ITStAmrose(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) ITImmaculateConception(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) USDecorationMemorialDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) USPresidentsDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) USNewYearsDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) USInaugurationDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) USMLKingsBirthday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) USLincolnsBirthday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) USWashingtonsBirthday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) USMemorialDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) USIndependenceDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) USLaborDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) USColumbusDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) USElectionDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) USVeteransDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) USThanksgivingDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) USChristmasDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) USCPulaskisBirthday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) USGoodFriday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) USJuneteenthNationalIndependenceDay( year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) CAVictoriaDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) CACanadaDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) CACivicProvincialHoliday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) CALabourDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) CAThanksgivingDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) CaRemembranceDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) JPVernalEquinox(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) JPNewYearsDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) JPGantan(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) JPBankHolidayJan2(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) JPBankHolidayJan3(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) JPComingOfAgeDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) JPSeijinNoHi(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) JPNatFoundationDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) JPKenkokuKinenNoHi(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) JPGreeneryDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) JPMidoriNoHi(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) JPConstitutionDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) JPKenpouKinenBi(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) JPNationHoliday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) JPKokuminNoKyujitu(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) JPChildrensDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) JPKodomoNoHi(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) JPMarineDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) JPUmiNoHi(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) JPRespectForTheAgedDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) JPKeirouNOhi(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) JPMountainDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) JPAutumnalEquinox(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) JPShuubunNoHi(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) JPHealthandSportsDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) JPTaiikuNoHi(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) JPNationalCultureDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) JPBunkaNoHi(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) JPThanksgivingDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) JPKinrouKanshaNoHi(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) JPEmperorsBirthday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) JPTennouTanjyouBi(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) JPBankHolidayDec31(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, \dots) } \arguments{ \item{year}{ an integer value or vector of year numbers including the century. These are integers of the form \code{CCYY}, e.g. \code{2000}. } \item{value}{ the class of the returned value. If \code{"timeDate"}, the default, return a \code{"timeDate"} object, otherwise return a character vector. } \item{na_drop}{ how to treat \code{NA}s, \code{TRUE}, \code{FALSE} or a character string, see section \sQuote{Details}. } \item{...}{ further arguments for \code{format.timeDate}, most notably \code{"format"}. Ignored if \code{value = "timeDate"}. } } \details{ This help page discusses the public and ecclesiastical holidays per se. Some holidays fall by definition on a working day or a particular day of the week. For holidays that fall on weekends many countries have rules to declare a close by weekday a holiday. The functions here do not consider such issues but they are handled by the \code{holidayXXX} functions (e.g., \code{holidayLONDON}), see their help pages. Public holidays change over time as new ones are introduced, dropped or move to different days. When a holiday date is requested for a year when it did not exist, what should be returned? The same question arises when the information is not available in this package. The ecclesiastical holidays are computed by traditional rules and in practice should be correct for all years. Traditionally, package \pkg{timeDate} was computing the dates of the holidays according to the current rules. In versions of package \pkg{timeDate} greater than 4022.108 historical information was added for England and Japan holidays. The updated functions return the dates according to the rules for the particular years. For future years the returned dates are always computed accoding to the current rules. For years before the first available rules, the default is to use those rules, whether the holiday existed or not. Argument \code{na_drop} can be used to control this. If \code{na_drop} is \code{TRUE}, an entry will not be incuded in the result at all. If \code{na_drop} is \code{FALSE} the value for years when the holiday didn't exist will be \code{NA}. If it is a character string, the default, the closest available rules will be used. Not all functions respect argument \code{na_drop}. In that case they act as if \code{na_drop} is a character string. The deprecated \code{GBMayDay} and \code{GBBankHoliday} are still available but strongly discouraged. Instead, use \code{GBEarlyMayBankHoliday} and \code{GBSpringBankHoliday}, respectively. } \note{ The holiday information for most countries is incomplete. Contributions are welcome. Please include references for your sources, whenever possible. } \value{ the date of the requested holiday as a \code{"timeDate"} object } \examples{ ## CHSechselaeuten - # Sechselaeuten a half Day Bank Holiday in Switzerland CHSechselaeuten(2000:2010) CHSechselaeuten(getRmetricsOptions("currentYear")) ## German Unification Day: DEGermanUnity(getRmetricsOptions("currentYear")) } \keyword{chron} timeDate/man/holiday-LONDON.Rd0000644000176200001440000000247614534546705015516 0ustar liggesusers\name{holidayLONDON} \alias{holidayLONDON} \title{London Bank Holidays} \description{ Returns bank holidays in London. } \usage{ holidayLONDON(year = getRmetricsOptions("currentYear")) } \arguments{ \item{year}{ an integer value or vector of years, formatted as \code{YYYY}. } } \value{ an object of class \code{"timeDate"}. } \details{ There are currently 8 bank holidays in Britain every year: New Year's Day, Good Friday, Easter Monday, Early Spring Holiday (first Monday of May), Spring Holiday (Last Monday of May), Summer Holiday (Last Monday of August), Christmas Day and Boxing Day. Some of these holidays are referred also by alternative names or may have had other names in the past. Also the rules according to which the dates for some of them are calculated have changed over time. Occasionaly there are one-off special holidays, usually related to significant Royal events. Also as one-off, the dates of some holidays are sometimes moved. For example, the Early spring holiday was moved several times to 8th May to coincide with Victory day on big anniversaries. } \author{ Original function contributed by Menon Murali; amended, corrected and rewritten by Georgi N. Boshnakov } \examples{ ## holidayLONDON - holidayLONDON() holidayLONDON(2008:2010) } \keyword{chron} timeDate/man/methods-show.Rd0000755000176200001440000000076014324772532015510 0ustar liggesusers\name{show-methods} \alias{show-methods} \docType{methods} \alias{show,ANY-method} \alias{show,timeDate-method} \alias{show.timeDate} \title{Show methods} \description{ Show methods for \code{"timeDate"} objects. } \section{Methods}{ \describe{ \item{object = "ANY"}{ Generic function. } \item{object = "timeDate"}{ Print function for objects of class \code{"timeDate"}. } } } \examples{ ## print | show - print(timeCalendar()) } \keyword{chron} timeDate/man/calendar-isRegular.Rd0000755000176200001440000000337214324764157016601 0ustar liggesusers\name{isRegular} \alias{isRegular} \alias{isDaily} \alias{isMonthly} \alias{isQuarterly} \alias{frequency} \alias{isDaily,timeDate-method} \alias{isMonthly,timeDate-method} \alias{isQuarterly,timeDate-method} \alias{isRegular,timeDate-method} \alias{frequency,timeDate-method} \title{Checks if a date/time vector is regular} \description{ Checks if a date/time vector is regular. i.e. if it is a daily, a monthly, or a quarterly date/time vector. If the date/time vector is regular the frequency can determined calling the function frequency. } \usage{ \S4method{isDaily}{timeDate}(x) \S4method{isMonthly}{timeDate}(x) \S4method{isQuarterly}{timeDate}(x) \S4method{isRegular}{timeDate}(x) \S4method{frequency}{timeDate}(x, \dots) } \arguments{ \item{x}{ an object of class \code{"timeDate"}. } \item{\dots}{ arguments to be passed. } } \details{ A date/time vector is defined as daily if the vector has not more than one date/time stamp per day. A date/time vector is defined as monthly if the vector has not more than one date/time stamp per month. A date/time vector is defined as quarterly if the vector has not more than one date/time stamp per quarter. A monthly date/time vector is also a daily vector, a quarterly date/time vector is also a monthly vector. A regular date/time vector is either a monthly or a quarterly vector. NOT yet implemented is the case of weekly vectors. } \value{ The \code{is*} functions return \code{TRUE} or \code{FALSE} depending on whether the date/time vector fulfills the condition or not. The function frequency returns in general 1, for quarterly date/time vectors 4, and for monthly vectors 12. } \examples{ ## None } \keyword{chron} timeDate/man/class-timeDate.Rd0000755000176200001440000003444014324771466015735 0ustar liggesusers\name{timeDate-class} \alias{timeDate-class} \docType{class} \title{Class "timeDate"} \description{ Class \code{"timeDate"} represents date and time objects. } \section{Objects from the Class}{ Objects can be created by calls of the functions \code{\link{timeDate}}, \code{\link{timeSequence}} and \code{\link{timeCalendar}}, among others. } \section{Slots}{ \describe{ \item{\code{Data}:}{Object of class \code{"POSIXct"}: a vector of POSIXct dates and times always related to "GMT". } \item{\code{format}:}{Object of class \code{"character"}: a character string denoting the format specification of the input data character vector. } \item{\code{FinCenter}:}{Object of class \code{"character"}: a character string with the location of the financial center named as "continent/city", or just "city". } } } \details{ For the management of chronological objects under R three concepts are available: The first is the implementation of date and time in R's \code{chron} package neglecting locals, time zones and day light saving times. This approach is in most cases appropriate for economic time series. The second approach, available in R's base package implements the POSIX standard to date and time objects, named \code{"POSIXt"}. Unfortunately, the representation of these objects is in some cases operating system dependent and especially under MS Windows several problems appeared over the time in the management of time zones and day light saving times. Rmetrics overcomes these difficulties with POSIX objects and introduce a new S4 class of \code{"timeDate"} objects which allow for powerful methods to represent dates and times in different financial centers around the world. Many of the basic functionalities of these objects are in common with S-Plus' \code{"timeDate"} objects and thus many of your privately written functions for SPlus/FinMetrics may also be used within the R/Rmetrics environment. A major difference is the time zone concept which is replaced by the "Financial Center" concept. The \code{FinCenter} character variable specifies where you are living and at which financial center you are working. With the variable \code{myFinCenter} you can overwrite the default setting with your personal settings. With the specification of the \code{FinCenter} your system knows what rules rules for day light saving times should be applied, what is your holiday calendar, what is your currency, what are your interest rate conventions. (Not all specifications are already implemented.) Many other aspects can be easily accessed when a financial center is named. So we can distinguish between Frankfurt and Zurich, which both belong to the same time zone, but differed in DST changes in the eighties and have different holiday calendars. Futhermore, since the underlying time refers to "GMT" and DST rules and all other information is available in local (ASCII) databases, we are sure, that R/Rmetrics delivers with such a date/time concept on every computer independent of the operating systemin use, identical results. Another important feature of the \code{"timeDate"} concept used here is the fact that we don't rely on American or European ways to write dates. We use consequently the ISO-8601 standard for date and time notations. \cr \bold{Generation of \code{"timeDate"} Objects} We have defined a \code{"timeDate"} class which is in many aspects similar to the S-Plus class with the same name, but has also some important advantageous differeneces. The S4 class has four Slots, the \code{Data} slot which holds date and time as 'POSIXct' objects in the standard ISO-8601 format, the \code{Dim} slot which gives the dimension of the data object (i.e. its length), the \code{format} specification slot and the \code{FinCenter} slot which holds the name of the financial center. By default this is the value Three functions allow to cgenerate date/time objects: \code{"timeDate"} from character vectors, \code{timeCalendar} from date and time atoms, and \code{timeSequence} from a "from/to" or from a "from/length" sequence specification. Note, time zone transformations are easily handled by by the \code{"timeDate"} functions which can also take \code{"timeDate"} and \code{POSIXt} objects as inputs, while transforming them between financial centers and/or time zones specified by the arguments \code{zone} and \code{FinCenter}. Finally the function \code{Sys.timeDate} returns current system time in form of a \code{"timeDate"} object.\cr \bold{Tests and Representation of timeDate Objects:} Rmetrics has implemented several methods to represent \code{"timeDate"} objects. For example, the print method returns the date/time in square \code{"[]"} brackets to distinguish the output from other date and time objects. On top of the date and time output the name of the \code{FinCenter} is printed. The summary method returns a printed report with information about the \code{"timeDate"} object. Finally, the format methods allows to transform objects into a ISO conform formatted character strings. \cr \bold{Mathematical Operations:} Rmetrics supports methods to perform many mathematical operations. Included are methods to extract or to replace subsets from \code{"timeDate"} objects, to perform arithmetic \code{"+"} and \code{"-"} operations, to group \code{\link{Ops}} generic functions, to return suitably lagged and iterated differences \code{\link{diff}}, to return differences \code{\link{difftimeDate}} of two \code{"timeDate"} objects, to concatenate objects, to replicate objects, to \code{\link{round}} objects, to truncate objects using \code{\link{trunc}}, to extract the first or last entry of a vector, to \code{\link{sort}} the objects of the elements of a date/time vector, and to revert \code{"timeDate"} vector objects, among other functions. \cr \bold{Transformation of Objects:} Rmetrics has also functions to transform dat/time objects between different representations. Included are methods to transform \code{"timeDate"} objects to character strings, to data frames, to POSIXct or POSIXlt objects, to \code{\link{julian}} counts. One can extract date/time \code{atoms} from calendar dates, and the \code{\link{months}} atoms from a \code{"timeDate"} object. } \note{ Originally, these functions were written for Rmetrics users using R and Rmetrics under Microsoft's Windows XP operating system where time zones, daylight saving times and holiday calendars are not or insufficiently supported. The usage of the Ical Library and the introduction of the FinCenter concept was originally develloped for R Version 1.5. The \code{"timeDate"} and \code{timeSeries} objects were added for R Version 1.8.1. Minor changes were made to adapt the functions for R Version 1.9.1. As a consequence, newer concepts like the \code{Date} objects were not yet considered and included in this collection of date and time concepts. With R Version 2.3.0 a major update has been made adding many new generic functions and renaming a few already existing functions, please be aware of this. Note, the date/time conversion from an arbitrary time zone to GMT cannot be unique, since date/time objects appear twice during the hour when DST changes and the isdt flag was not recorded. A bookkeeping which takes care if DST is effective or not is not yet included. However, in most applications this is not necessary since the markets are closed on weekends, especially at times when DST usually changes. It is planned for the future to implement the DST supporting this facility. The ISO-8601 midnight standard has been implemented. Note, that for example "2005-01-01 24:00:00" is accepted as a valid date/time string. Also available is an automated format recognition, so the user does not have to specify the format string for the most common date/time formats. } \section{Methods}{ \describe{ \item{timeDate}{\code{signature(charvec = "timeDate")}: create objects from class \code{"timeDate"}, see \code{\link{timeDate}}; } \item{show}{\code{signature(object = "timeDate")}: prints an object of class \code{"timeDate"}; } \item{plot}{\code{signature(x = "timeDate")}: } \item{points}{\code{signature(x = "timeDate")}: } \item{lines}{\code{signature(x = "timeDate")}: } \item{abline}{\code{signature(a = "ANY", b = "ANY", h = "ANY", v ="timeDate")}: see \code{\link{plot-methods}}. } \item{[}{\code{signature(x = "timeDate", i = "ANY", j = "missing")}: } \item{[}{\code{signature(x = "timeDate", i = "character", j = "missing")}: } \item{[}{\code{signature(x = "timeDate", i = "logical", j = "missing")}: } \item{[}{\code{signature(x = "timeDate", i = "missing", j = "missing")}: } \item{[}{\code{signature(x = "timeDate", i = "numeric", j = "missing")}: take parts of a \code{"timeDate"} object, see \code{\link{subset}}. } \item{finCenter}{\code{signature(x = "timeDate")}: } \item{finCenter<-}{\code{signature(x = "timeDate")}: see \code{\link{finCenter}}. } \item{atoms}{\code{signature(x = "timeDate")}: } \item{months}{\code{signature(x = "timeDate")}: } \item{julian}{\code{signature(x = "timeDate")}: see \code{\link{julian}}. } \item{align}{\code{signature(x = "timeDate")}: see \code{\link{align}}. } \item{isDaily}{\code{signature(x = "timeDate")}: } \item{isMonthly}{\code{signature(x = "timeDate")}: } \item{isQuarterly}{\code{signature(x = "timeDate")}: } \item{isRegular}{\code{signature(x = "timeDate")}: see see \code{\link{isRegular}}. } \item{frequency}{\code{signature(x = "timeDate")}: see \code{\link{frequency}}. } \item{is.na}{\code{signature(x = "timeDate")}: see \code{\link{is.na-methods}}. } \item{sample}{\code{signature(x = "timeDate")}: see \code{\link{sample}}. } \item{Ops}{\code{signature(e1 = "timeDate", e2 = "timeDate")}: } \item{+}{\code{signature(e1 = "numeric", e2 = "timeDate")}: } \item{+}{\code{signature(e1 = "timeDate", e2 = "numeric")}: } \item{+}{\code{signature(e1 = "timeDate", e2 = "timeDate")}: } \item{-}{\code{signature(e1 = "numeric", e2 = "timeDate")}: } \item{-}{\code{signature(e1 = "timeDate", e2 = "numeric")}: } \item{-}{\code{signature(e1 = "timeDate", e2 = "timeDate")}: see \code{\link{timeDateMathOps}}. } \item{coerce}{\code{signature(from = "ANY", to = "timeDate")}: } \item{coerce}{\code{signature(from = "Date", to = "timeDate")}: } \item{coerce}{\code{signature(from = "POSIXt", to = "timeDate")}: } \item{coerce}{\code{signature(from = "timeDate", to = "character")}: } \item{coerce}{\code{signature(from = "timeDate", to = "data.frame")}: } \item{coerce}{\code{signature(from = "timeDate", to = "Date")}: } \item{coerce}{\code{signature(from = "timeDate", to = "list")}: } \item{coerce}{\code{signature(from = "timeDate", to = "numeric")}: } \item{coerce}{\code{signature(from = "timeDate", to = "POSIXct")}: } \item{coerce}{\code{signature(from = "timeDate", to = "POSIXlt")}: convert from/to \code{"timeDate"} objects. These are methods for \code{as}, to be used with the syntax \code{as(from, to)}, where \code{from} is the object to be converted and \code{to} is the desired target class. Most conversions can also be done with specialised functions such as \code{as.character} and \code{as.timeDate}, see \code{\link{as.timeDate}}. } \item{names}{\code{signature(x = "timeDate")}: } \item{names<-}{\code{signature(x = "timeDate")}: see \code{\link{names-methods}}. } \item{getDataPart}{\code{signature(object = "timeDate")}: ... } \item{initialize}{\code{signature(.Object = "timeDate")}: ... } } } \examples{ ## Examples for Objects of class 'timeDate': ## timeDate - # Sys.timeDate() # direct # timeDate(Sys.time()) # transformed from "POSIX(c)t" # # Local Time in Zurich # timeDate(Sys.time(), FinCenter = "Zurich") # Character Vector Strings: dts = c("1989-09-28", "2001-01-15", "2004-08-30", "1990-02-09") dts tms = c( "23:12:55", "10:34:02", "08:30:00", "11:18:23") tms t1 <- timeDate(dts, format = "\%Y-\%m-\%d", FinCenter = "GMT" ) t1 stopifnot(identical(t1, timeDate(dts, FinC = "GMT"))) # auto-format timeDate(dts, format = "\%Y-\%m-\%d", FinCenter = "Europe/Zurich") timeDate(paste(dts, tms), format = "\%Y-\%m-\%d \%H:\%M:\%S", zone = "GMT", FinCenter = "GMT") timeDate(paste(dts, tms), zone = "Europe/Zurich", FinCenter = "Europe/Zurich") timeDate(paste(dts, tms), format = "\%Y-\%m-\%d \%H:\%M:\%S", zone = "GMT", FinCenter = "Europe/Zurich") ## Non Standard Format: timeDate(paste(20:31, "03.2005", sep="."), format = "\%d.\%m.\%Y") # Note, ISO and American Formats are Auto-Detected: timeDate("2004-12-31", FinCenter = "GMT") timeDate("12/11/2004", FinCenter = "GMT") timeDate("1/31/2004") # auto-detect American format ## ... from POSIX?t, and Using NAs: ## lsec <- as.POSIXlt(.leap.seconds) ## lsec[c(2,4:6)] <- NA ## timeDate(lsec) ## dtms <- paste(dts,tms) ## dtms[2:3] <- NA ## timeDate(dtms, FinCenter = "Europe/Zurich") # but in GMT % would need change in R : % tms[3] <- dts[2] <- NA % timeDate(paste(dts,tms), FinCenter = "Europe/Zurich") # but in GMT ## timeCalendar - ## getRmetricsOptions("currentYear") ## timeCalendar() # 12 months of current year timeCalendar(2022) # 12 months of 2022 timeCalendar(y = c(1989, 2001, 2004, 1990), m = c(9, 1, 8, 2), d = c(28, 15, 30, 9), FinCenter = "GMT") timeCalendar(y = c(1989, 2001, 2004, 1990), m = c(9, 1, 8, 2), d = c(28, 15, 30, 9), FinCenter = "Europe/Zurich") ## timeCalendar(h = c(9, 14), min = c(15, 23)) timeCalendar(2022, h = c(9, 14), min = c(15, 23)) ## timeSequence - timeSequence(from = "2004-03-12", to = "2004-04-11", format = "\%Y-\%m-\%d", FinCenter = "GMT") timeSequence(from = "2004-03-12", to = "2004-04-11", format = "\%Y-\%m-\%d", FinCenter = "Europe/Zurich") ## print | summary | format - tC = timeCalendar(2022) print(tC) summary(tC) format(tC) } \keyword{chron} timeDate/man/stats-window.Rd0000755000176200001440000000241614324774530015532 0ustar liggesusers\name{window} \alias{window} \alias{window.timeDate} \alias{cut.timeDate} \title{Time windows} \description{ Extract the subset of a \code{"timeDate"} object observed between two time stamps. } \usage{ \method{window}{timeDate}(x, start , end, \dots) \method{cut}{timeDate}(x, from , to, \dots) } \arguments{ \item{from, to}{ starting date, required, and end date, optional. If supplied \code{to} must be after \code{from}. } \item{start, end}{ starting date, required, and end date, optional. If supplied \code{to} must be after \code{from}. } \item{x}{ an object of class \code{"timeDate"}. } \item{\dots}{ arguments passed to other methods. } } \value{ an object of class \code{"timeDate"} } \note{ % :TODO: The method for \code{cut} has been discouraged in the sources for a long time (with a recommendation to use \code{window}). It will be officially deprecated in the next release and later removed or replaced by a method that is consistent with the methods for \code{cut} in base R, } \examples{ ## timeCalendar - # Monthly Dates in Current Year: tS = timeCalendar() tS ## window - # 2nd Quarter Window: tS[4:6] window(tS, tS[4], tS[6]) } \keyword{chron} timeDate/man/calendar-isBizday.Rd0000755000176200001440000000216214324777165016421 0ustar liggesusers\name{isBizday} \alias{isBizday} \alias{isHoliday} \title{Check if dates are business or holidays} \description{ Tests if a date is a business day or not. } \usage{ isBizday(x, holidays = holidayNYSE(), wday = 1:5) isHoliday(x, holidays = holidayNYSE(), wday = 1:5) } \arguments{ \item{x}{ an object of class \code{"timeDate"}. } \item{holidays}{ holiday dates from a holiday calendar. An object of class \code{"timeDate"}. } \item{wday}{ Specify which days should be considered as weekdays. By default from Mondays to Fridays. } } \details{ Returns a logical vector of the same length as \code{x} indicating if a date is a business day, or a holiday, respectively. } \value{ a logical vector of the same length as \code{x} } \examples{## Dates in April, currentYear: currentYear = getRmetricsOptions("currentYear") tS = timeSequence( from = paste(currentYear, "-03-01", sep = ""), to = paste(currentYear, "-04-30", sep = "")) tS ## Subset Business Days at NYSE: holidayNYSE() isBizday(tS, holidayNYSE()) tS[isBizday(tS, holidayNYSE())] } \keyword{chron} timeDate/man/timeDate-Calendar.Rd0000755000176200001440000000262514325000044016313 0ustar liggesusers\name{timeCalendar} \alias{timeCalendar} \title{'timeDate' from calendar atoms} \description{ Create a \code{"timeDate"} object from calendar atoms. } \usage{ timeCalendar(y = getRmetricsOptions("currentYear"), m = 1:12, d = 1, h = 0, min = 0, s = 0, zone = "", FinCenter = "") } \arguments{ \item{y, m, d}{ calendar years (e.g. 1997), defaults are 1960, calendar months (1-12), defaults are 1, and calendar days (1-31), defaults are 1, \cr } \item{h, min, s}{ hours of the days (0-23), defaults are 0, minutes of the days (0-59), defaults are 0, and seconds of the days (0-59), defaults are 0. } \item{zone}{ a character string, denoting the time zone or financial center where the data were recorded. } \item{FinCenter}{ a character with the location of the financial center named as "continent/city". } } \value{ an object of class \code{"timeDate"} } \examples{ ## timeCalendar - # Current Year: getRmetricsOptions("currentYear") # 12 months of current year timeCalendar() timeCalendar(m = c(9, 1, 8, 2), d = c(28, 15, 30, 9), y = c(1989, 2001, 2004, 1990), FinCenter = "GMT") timeCalendar(m = c(9, 1, 8, 2), d = c(28, 15, 30, 9), y = c(1989, 2001, 2004, 1990), FinCenter = "Europe/Zurich") timeCalendar(h = c(9, 14), min = c(15, 23)) } \keyword{chron} timeDate/man/methods-names.Rd0000755000176200001440000000107514324772431015631 0ustar liggesusers\name{names-methods} \alias{names-methods} \docType{methods} \alias{names,timeDate-method} \alias{names<-,timeDate-method} \title{ The names of a 'timeDate' object } \description{ Functions to get or set the names of a \code{"timeDate"} object. } \usage{ \S4method{names}{timeDate}(x) \S4method{names}{timeDate}(x) <- value } \arguments{ \item{x}{ an object of class \code{"timeDate"}. } \item{value}{ a character vector of up to the same length as 'x', or 'NULL'. } } \examples{ td <- timeCalendar() td names(td) <- LETTERS[seq_along(td)] td } timeDate/man/holiday-NERC.Rd0000755000176200001440000000130714324767537015254 0ustar liggesusers\name{holidayNERC} \alias{holidayNERC} \title{NERC holiday calendar} \description{ Returns a holiday calendar for NERC, the North American Reliability Council. } \usage{ holidayNERC(year = getRmetricsOptions("currentYear"), FinCenter = "Eastern") } \arguments{ \item{year}{ an integer value or vector of years, formatted as \code{YYYY}. } \item{FinCenter}{ a character value, the name of the financial center to use. } } \value{ an object of class \code{"timeDate"} } \author{ Joe W. Byers } \references{ http://www.nerc.com/~oc/offpeaks.html } \examples{ ## holidayNERC - holidayNERC() holidayNERC(2008:2010) } \keyword{chron} timeDate/man/methods-as.Rd0000755000176200001440000000520514324772202015124 0ustar liggesusers\name{as.timeDate} \alias{as.timeDate} \alias{Any to 'timeDate' Coercion} \alias{as.character.timeDate} \alias{as.double.timeDate} \alias{as.list.timeDate} \alias{as.data.frame.timeDate} \alias{as.POSIXct.timeDate} \alias{as.POSIXlt.timeDate} \alias{as.Date.timeDate} \alias{as.timeDate.default} \alias{as.timeDate.POSIXt} \alias{as.timeDate.Date} \alias{as.timeDate.timeDate} \alias{coerce,ANY,timeDate-method} \alias{coerce,Date,timeDate-method} \alias{coerce,POSIXt,timeDate-method} \alias{coerce,timeDate,character-method} \alias{coerce,timeDate,numeric-method} \alias{coerce,timeDate,data.frame-method} \alias{coerce,timeDate,list-method} \alias{coerce,timeDate,POSIXct-method} \alias{coerce,timeDate,POSIXlt-method} \alias{coerce,timeDate,Date-method} \title{Coercion from/to 'timeDate'} \description{ Coerce and transform objects of class \code{"timeDate"}. } \usage{ ## methods for base R functions \method{as.character}{timeDate}(x, \dots) \method{as.double}{timeDate}(x, units = c("auto", "secs", "mins", "hours", "days", "weeks"), ...) \method{as.data.frame}{timeDate}(x, \dots) \method{as.POSIXct}{timeDate}(x, tz = "", \dots) \method{as.POSIXlt}{timeDate}(x, tz = "", \dots) \method{as.Date}{timeDate}(x, method = c("trunc", "round", "next"), \dots) ## methods for as.timeDate \method{as.timeDate}{default}(x, zone = "", FinCenter = "") \method{as.timeDate}{POSIXt}(x, zone = "", FinCenter = "") \method{as.timeDate}{Date}(x, zone = "", FinCenter = "") \method{as.timeDate}{timeDate}(x, zone = x@FinCenter, FinCenter = "") } \arguments{ \item{FinCenter}{ a character with the location of the financial center named as "continent/city". } \item{method}{ a character string denoting the method how to determine the dates. } \item{tz}{ inputs the time zone to POSIX objects, i.e. the time zone, \code{zone}, or financial center string, \code{FinCenter}, as used by \code{"timeDate"} objects. } \item{units}{ a character string denoting the date/time units in which the results are desired. } \item{x}{ an object of class \code{"timeDate"}. } \item{zone}{ the time zone or financial center where the data were recorded. } \item{\dots}{ arguments passed to other methods. } } \value{ for \code{as.timeDate.POSIXt}, an object of class \code{"timeDate"}, for \code{as.timeDate.Date}, an object of class \code{"timeDate"} } \examples{ ## timeDate - tC = timeCalendar() ## Convert 'timeDate' to a character strings: as.character(tC) ## Coerce a 'Date' object into a 'timeDate' object: as.timeDate(Sys.Date()) } \keyword{chron} timeDate/man/holiday-NYSE.Rd0000755000176200001440000000464014536371607015300 0ustar liggesusers\name{holidayNYSE} \alias{holidayNYSE} \title{NYSE holiday calendar} \description{ Returns a holiday (closing days) calendar for the New York Stock Exchange. } \usage{ holidayNYSE(year = getRmetricsOptions("currentYear"), type = c("", "standard", "special")) } \details{ \code{holidayNYSE} generates a list of the clossing days of the exchange for the requested years. The default is to return all closing days (holidays and specials). \code{type = "standard"} requests only closings associated with the standard public holidays, \code{type = "special"} gives the special closings only. } \arguments{ \item{year}{ an integer value or vector of years, formatted as \code{YYYY}. } \item{type}{ what to include, a character string. The default is to return all closing days (holidays and specials). \code{"standard"} requests only closings associated with the standard public holidays, \code{"special"} gives the special closings only. } } \note{ The list of closing days returned by \code{holidayNYSE} was changed in \pkg{timeDate} version 4021.105, in that previously it did not include special closing days. This was perceived by some users as buggy. Also, the intent by the authors of the package seems to have been for it to return all closing days. Indeed, the default for \code{isisBizday()} is to drop weekends and days returned by \code{holidayNYSE}. Argument \code{type} was also included in version 4021.105. The old behaviour can be obtained by using \code{type = "standard"}. The default for argument \code{type} is currently the empty string, since I couldn't come up with another string that would be universally easy to remember. Suggestions are welcome but a change will be only feasible if they come soon. } \author{ Diethelm Wuertz (original author); Yohan Chalabi improved speed and handling of time zone; Georgi N. Boshnakov added the special closings and argument \sQuote{type}. } \value{ an object of class \code{"timeDate"} } \seealso{ \code{\link{earlyCloseNYSE}} for times of early closings } \examples{ ## holidayNYSE - holidayNYSE() ## current year holidayNYSE(2008:2010) ## January 2, 2007 was a memorial day for president G.R. Ford, ## not a regular public holiday holidayNYSE(2007) holidayNYSE(2007, type = "standard") holidayNYSE(2007, type = "special") } \keyword{chron} timeDate/man/options-myUnits.Rd0000755000176200001440000000044414324773015016224 0ustar liggesusers\name{myUnits} \alias{myUnits} \title{Frequency of date/time units} \description{ A variable with the frequency of date/units. } \value{ the date/time units, a character value, yy default \code{"days"} } \examples{ ## myUnits - getRmetricsOptions("myUnits") } \keyword{chron} timeDate/man/base-format.Rd0000755000176200001440000000160714324771466015275 0ustar liggesusers\name{format-methods} \alias{format} \alias{format.timeDate} \title{Format methods} \description{ Formats \code{"timeDate"} objects as ISO conform character strings. } \usage{ \method{format}{timeDate}(x, format = "", tz = "", usetz = FALSE, \dots) } \arguments{ \item{format}{ a character string describing the format. } \item{tz}{ a timezone specification to be used for the conversion. } \item{usetz}{ a logical. } \item{x}{ an object of class \code{"timeDate"}. } \item{\dots}{ arguments passed to other methods. } } \value{ an ISO conforming formatted character string } \seealso{ \code{as.character} } \examples{ ## timeCalendar - # Time Calendar 16:00 tC = timeCalendar() + 16*3600 tC ## Format as ISO Character String: format(tC) } \keyword{chron} timeDate/man/stats-kurtosis.Rd0000755000176200001440000000475614324773672016125 0ustar liggesusers\name{kurtosis} \alias{kurtosis} \alias{kurtosis.default} \alias{kurtosis.data.frame} \alias{kurtosis.POSIXct} \alias{kurtosis.POSIXlt} \title{Kurtosis} \description{ Generic function for computation of kurtosis. The methods defined in package \pkg{timeDate} are described here. } \usage{ kurtosis(x, \dots) \method{kurtosis}{default}(x, na.rm = FALSE, method = c("excess", "moment", "fisher"), \dots) \method{kurtosis}{data.frame}(x, na.rm = FALSE, method = c("excess", "moment", "fisher"), \dots) \method{kurtosis}{POSIXct}(x, \dots) \method{kurtosis}{POSIXlt}(x, \dots) } \arguments{ \item{x}{ a numeric vector or object. } \item{na.rm}{ a logical. Should missing values be removed? } \item{method}{ a character string, the method of computation, see section \sQuote{Details}. } \item{\dots}{ arguments to be passed. } } \details{ \code{kurtosis} is an S3 generic function. This page describes the methods defined in package \code{dateTime}. Argument \code{"method"} can be one of \code{"moment"}, \code{"fisher"}, or \code{"excess"}. If \code{"excess"} is selected, then the value of the kurtosis is computed by the \code{"moment"} method and a value of 3 will be subtracted. The \code{"moment"} method is based on the definitions of kurtosis for distributions and this method should be used when resampling (bootstrap or jackknife). The \code{"fisher"} method correspond to the usual "unbiased" definition of sample variance, although in the case of kurtosis exact unbiasedness is not possible. If \code{x} is numeric the kurtosis is computed according to the description given for argument \code{method}. A logical vector is treated as a vector of 1's and 0's. The \code{data.frame} method applies \code{kurtosis} recursively to each column. The \code{POSIXlt} method computes the kurtosis of the underlying numerical representation of the date/times. The method for \code{POSIXct} does the same after converting the argument to \code{POSIXlt}. The default method returns \code{NA}, with a warning, if it can't handle argument \code{x}. } \value{ a numeric value or vector with attribute \code{"method"} indicating the method. } \seealso{ \code{\link{skewness}} } \examples{ ## mean - ## var - # Mean, Variance: r = rnorm(100) mean(r) var(r) ## kurtosis - kurtosis(r) kurtosis(data.frame(r = r, r2 = r^2)) } \keyword{univar} timeDate/man/options-currentYear.Rd0000755000176200001440000000041114324772633017056 0ustar liggesusers\name{currentYear} \alias{currentYear} \title{Current year} \description{ A variable containing the current year. } \note{ It is not allowed to change this variable. } \examples{ ## currentYear - getRmetricsOptions("currentYear") } \keyword{chron} timeDate/man/base-difftimeDate.Rd0000755000176200001440000000202214324771466016362 0ustar liggesusers\name{difftimeDate} \alias{difftimeDate} \title{Difference of two 'timeDate' objects} \description{ Returns the difference of two 'timeDate' objects. } \usage{ difftimeDate(time1, time2, units = c("auto", "secs", "mins", "hours", "days", "weeks")) } \arguments{ \item{time1, time2}{ two objects objects of class \code{"timeDate"}. } \item{units}{ a character string denoting the date/time units in which the results are desired. } } \value{ The function, \code{difftimeDate}, takes a difference of two \code{"timeDate"} objects and returns an object of class \code{"difftime"} with an attribute indicating the units. } \examples{ ## Create Character Vectors: dts = c("1989-09-28", "2001-01-15", "2004-08-30", "1990-02-09") dts ## timeDate - GMT = timeDate(dts, zone = "GMT", FinCenter = "GMT") GMT ## diff - # Suitably Lagged and Iterated Differences: difftimeDate(GMT[1:2], GMT[-(1:2)]) } \keyword{chron} timeDate/man/calendar-onOrAfter.Rd0000755000176200001440000000315514324777374016547 0ustar liggesusers\name{onOrAfter} \alias{onOrAfter} \alias{onOrBefore} \alias{timeNdayOnOrAfter} \alias{timeNdayOnOrBefore} \title{On-or-after/before dates} \description{ Compute the date that is a "on-or-after" or "on-or-before" n-day. } \usage{ timeNdayOnOrAfter(charvec, nday = 1, format = "\%Y-\%m-\%d", zone = "", FinCenter = "") timeNdayOnOrBefore(charvec, nday = 1, format = "\%Y-\%m-\%d", zone = "", FinCenter = "") } \arguments{ \item{charvec}{ a character vector of dates and times. } \item{nday}{ an integer vector with entries ranging from \code{0} (Sunday) to \code{6} (Saturday). } \item{format}{ the format specification of the input character vector. } \item{zone}{ the time zone or financial center where the data were recorded. } \item{FinCenter}{ a character with the location of the financial center named as "continent/city". } } \details{ \code{timeNdayOnOrAfter} returns the date in the specified month that is a n-day (e.g. Sunday) on or after the given date. Month and date are given through argument \code{charvec}. The function \code{timeNdayOnOrBefore} returns the date that is a n-day on or before the given date. } \value{ an object of class \code{"timeDate"} } \examples{ ## Date as character String: charvec = "2006-04-16" ## timeNdayOnOrAfter # What date has the first Monday on or after March 15, 1986 ? timeNdayOnOrAfter("1986-03-15", 1) ## timeNdayOnOrBefore # What date has Friday on or before April 22, 1977 ? timeNdayOnOrBefore("1986-03-15", 5) } \keyword{chron} timeDate/man/timeDate.Rd0000755000176200001440000001245014343217322014612 0ustar liggesusers\name{timeDate} \alias{timeDate} \alias{timeDate,ANY-method} \alias{timeDate,character-method} \alias{timeDate,Date-method} \alias{timeDate,missing-method} \alias{timeDate,numeric-method} \alias{timeDate,POSIXt-method} \alias{timeDate,timeDate-method} \alias{initialize,timeDate-method} \alias{strptimeDate} \alias{getDataPart,timeDate-method} \alias{timeDate,timeDate,ANY-method} \title{Create 'timeDate' objects from scratch} \description{ Create a \code{"timeDate"} object from scratch from a character vector or other suitable objects. } \usage{ timeDate(charvec, format = NULL, zone = "", FinCenter = "", \dots) \S4method{timeDate}{character}(charvec, format = NULL, zone = "", FinCenter = "", dst_gap = "+") strptimeDate(x, format = whichFormat(x), tz = "") } \arguments{ \item{charvec}{ a character string or vector of dates and times. } \item{format}{ the format specification of the input character vector. } \item{tz}{ a character with the location of the financial center named as \code{"continent/city"}, or short \code{"city"}. } \item{zone}{ the time zone or financial center where the data were recorded. } \item{x}{ a character string or vector of dates and times. } \item{FinCenter}{ a character with the location of the financial center named as "continent/city". } \item{dst_gap}{ a character string specifying what to do with non-existent times falling in a DST gap: add an hour (\code{"+"}), subtract an hour (\code{"-"}), set to \code{NA} (\code{"NA"}), or ignore (\code{""}). When the \sQuote{ignore} option is used the code to check for this kind of faulty times is skipped and the result will be equivalent to \code{"+"} or \code{"-"} but which one is not defined. This could be useful when you are certain that there are no times in DST gaps or don't care how they are dealt with. } \item{...}{further arguments for methods.} } \details{ \code{timeDate} creates objects from class \code{"timeDate"} from character vectors, objects from several date/time classes, and other suitable objects.. It is an S4 generic function and this page describes the methods defined in package \pkg{timeDate}, see section \sQuote{Methods}. Note that \code{zone} is the time zone of the input, while \code{FinCenter} is the \sQuote{current} time zone, typically but not necessarilly where the code is run. To change one or both of these time zones of an existing \code{"timeDate"} object, call \code{timeDate()} on it, see the method for \code{charvec = "timeDate"} in section \sQuote{Methods}. \code{strptimeDate} is a wrapper of \code{timeDate}, suitable when \code{zone} and \code{FinCenter} are the same, It has the same arguments as \code{\link{strptime}}. If \code{format} is missing it tries to deduce it. If \code{tz} is missing it sets it to the value of the Rmetrics option \code{"myFinCenter"}. } \value{ an object of class \code{"timeDate"} } \section{Methods}{ The following methods for \code{timeDate} are defined in package \pkg{timeDate}. \describe{ \item{\code{signature(charvec = "ANY")}}{ Converts \code{charvec} to \code{character} and calls \code{timeDate} on the result. } \item{\code{signature(charvec = "character")}}{ ... } \item{\code{signature(charvec = "Date")}}{ ... } \item{\code{signature(charvec = "missing")}}{ Returns the current time as \code{"timeDate"} object. } \item{\code{signature(charvec = "numeric")}}{ ... } \item{\code{signature(charvec = "POSIXt")}}{ ... } \item{\code{signature(charvec = "timeDate")}}{ Changes the time zone and/or financial center of \code{charvec} to the requested ones. If \code{zone} is missing or equal to the empty string, just changes the financial center. } } } \examples{ ## timeDate - # Character Vector Strings: dts = c("1989-09-28", "2001-01-15", "2004-08-30", "1990-02-09") tms = c( "23:12:55", "10:34:02", "08:30:00", "11:18:23") dts; tms t1 <- timeDate(dts, format = "\%Y-\%m-\%d", FinCenter = "GMT" ) t1 stopifnot(identical(t1, timeDate(dts, FinC = "GMT"))) # auto-format timeDate(dts, format = "\%Y-\%m-\%d", FinCenter = "Europe/Zurich") timeDate(paste(dts, tms), format = "\%Y-\%m-\%d \%H:\%M:\%S", zone = "GMT", FinCenter = "GMT") timeDate(paste(dts, tms), zone = "Europe/Zurich", FinCenter = "Europe/Zurich") timeDate(paste(dts, tms), format = "\%Y-\%m-\%d \%H:\%M:\%S", zone = "GMT", FinCenter = "Europe/Zurich") ## Non Standard Format: timeDate(paste(20:31, "03.2005", sep="."), format = "\%d.\%m.\%Y") ## Note, ISO and American Formats are Auto-Detected: timeDate("2004-12-31", FinCenter = "GMT") timeDate("12/11/2004", FinCenter = "GMT") timeDate("1/31/2004") # auto-detect American format ## From POSIX?t, and using NAs ## lsec <- as.POSIXlt(.leap.seconds) ; lsec[c(2,4:6)] <- NA ## timeDate(lsec) ## dtms <- paste(dts,tms) ## dtms[2:3] <- NA ## timeDate(dtms, FinCenter = "Europe/Zurich") # but in GMT % ## would need change in R : % ## tms[3] <- dts[2] <- NA % ## timeDate(paste(dts,tms), FinCenter = "Europe/Zurich") # but in GMT } \keyword{chron} timeDate/man/base-c.Rd0000755000176200001440000000155414324756221014220 0ustar liggesusers\name{c} \alias{c} \alias{c.timeDate} \title{Concatenating 'timeDate' objects} \description{ Concatenates \code{"timeDate"} objects. } \usage{ \method{c}{timeDate}(\dots, recursive = FALSE) } \arguments{ \item{recursive}{ a logical. If recursive is set to \code{TRUE}, the function recursively descends through lists combining all their elements into a vector. } \item{\dots}{ arguments passed to other methods. } } \value{ an object of class \code{"timeDate"} } \examples{ ## timeCalendar - # Create Character Vectors: GMT = timeCalendar(zone = "GMT", FinCenter = "GMT") + 16*3600 ZUR = timeCalendar(zone = "GMT", FinCenter = "Zurich") + 16*3600 ## c - # Concatenate and Replicate timeDate Objects: sort(c(GMT, ZUR)) sort(c(ZUR, GMT)) } \keyword{chron} timeDate/man/timeDate-whichFormat.Rd0000755000176200001440000000101414324776727017077 0ustar liggesusers\name{whichFormat} \alias{whichFormat} \title{Format recognation} \description{ Tries to recognize the date/time format. } \usage{ whichFormat(charvec, silent = FALSE) } \arguments{ \item{charvec}{ a character string or vector of dates and times. } \item{silent}{ a logical flag. Should a warning be printed if the format cannot be recognized? } } \value{ a format string } \examples{ ## midnightStandard - whichFormat("2007-12-31 24:00") } \keyword{chron} timeDate/man/calendar-dayOfYear.Rd0000755000176200001440000000110214340072655016505 0ustar liggesusers\name{dayOfYear} \alias{dayOfYear} \title{Day of the year} \description{ Returns the days of the year of the data in a \code{"timeDate"} object. } \usage{ dayOfYear(x) } \arguments{ \item{x}{ an object of class \code{"timeDate"}. } } \value{ vector of integers representing the number of days since the beginning of the year. For January, 1st it is one. } \seealso{ \code{\link{dayOfWeek}} } \examples{ ## timeCalendar - tC = timeCalendar(2022) ## The days of the Year: dayOfYear(tC) } \keyword{chron} timeDate/man/base-sample.Rd0000755000176200001440000000240614324760456015261 0ustar liggesusers\name{sample} \alias{sample} \alias{sample,timeDate-method} \title{Resampling 'timeDate' objects} \description{ Resamples a \code{"timeDate"} object. } % \usage{ % \S4method{sample}{timeDate}(x, \dots) % } % \arguments{ % \item{x}{ Either a (numeric, complex, character or logical) vector of % more than one element from which to choose, or a positive % integer.} % \item{size}{non-negative integer giving the number of items to choose.} % \item{replace}{Should sampling be with replacement?} % \item{prob}{A vector of probability weights for obtaining the elements of % the vector being sampled.} % } \value{ an object of class \code{"timeDate"} } \examples{ ## c - # Create Character Vectors: dts = c("1989-09-28", "2001-01-15", "2004-08-30", "1990-02-09") dts tms = c( "23:12:55", "10:34:02", "08:30:00", "11:18:23") tms ## "+/-" - # Add One Day to a Given timeDate Object: GMT = timeDate(dts, zone = "GMT", FinCenter = "GMT") GMT ZUR = timeDate(dts, zone = "GMT", FinCenter = "Europe/Zurich") ZUR ## c - # Concatenate and Replicate timeDate Objects: c(GMT[1:2], ZUR[1:2]) c(ZUR[1:2], GMT[1:2]) ## rep - rep(ZUR[2], times = 3) rep(ZUR[2:3], times = 2) } \keyword{chron} timeDate/man/00timeDate-package.Rd0000644000176200001440000005046714470401120016342 0ustar liggesusers\name{timeDate-package} \alias{timeDate-package} \docType{package} \title{Utilities and tools package} \description{ Package of calendar, date, time tools and utilities for Rmetrics. } \section{Overview of Topics}{ This help file describes the concepts and methods behind the S4 \code{"timeDate"} class used in Rmetrics for financial data and time management together with the management of public and ecclesiastical holidays. The \code{"timeDate"} class fulfils the conventions of the ISO 8601 standard as well as of the ANSI C and POSIX standards. Beyond these standards it provides the "Financial Center" concept which allows to handle data records collected in different time zones and mix them up to have always the proper time stamps with respect to your personal financial center, or alternatively to the GMT reference time. It can thus also handle time stamps from historical data records from the same time zone, even if the financial centers changed day light saving times at different calendar dates. Moreover \code{"timeDate"} is almost compatible with the \code{"timeDate"} class in Insightful's SPlus \code{"timeDate"} class. If you move between the two worlds of R and SPlus, you will not have to rewrite your code. This is important for business applications. The \code{"timeDate"} class offers not only date and time functionality but it also offers sophisticated calendar manipulations for business days, weekends, public and ecclesiastical holidays. This help page is presented in four sections: 1. S4 \code{"timeDate"} Class and Functions \cr 2. Operations on \code{"timeDate"} Objects \cr 3. Daylight Saving Time and Financial Centers \cr 4. Holidays and Holiday Calendars } \section{1. S4 \code{"timeDate"} Class and Generator Functions}{ Date and time stamps are represented by an S4 object of class \code{"timeDate"}. \preformatted{ setClass("timeDate", representation( Data = "POSIXct", format = "character", FinCenter = "character" )) } They have three slots. The \code{@Data} slot holds the time stamps which are \code{POSIXct} formatted as specified in the \code{@format} slot. The time stamps are local and belong to the financial center expressed through the slot \code{@FinCenter}. There are several possibilities to generate a \code{"timeDate"} object. The most forward procedure is to use one of the following functions:\cr \code{timeDate} -- Creates a \code{"timeDate"} object from scratch, \cr \code{timeSequence} -- creates a sequence of \code{"timeDate"} objects, \cr \code{timeCalendar} -- creates a \code{"timeDate"} object from calendar atoms, \cr \code{Sys.timeDate} -- returns the current date and time as a \code{"timeDate"} object. \cr With the function \code{timeDate} you can create \code{"timeDate"} objects from scratch by specifying a character vector of time stamps and a financial center which the character vector belongs to. "GMT" is used by default as the reference for all date/time operations. But you can set the variable \code{myFinCenter} to your local financial center reference if you want to reference dates/time to it. \cr Examples: \preformatted{ # Show My local Financial Center - Note, by Default this is "GMT" getRmetricsOptions("myFinCenter") # Compose Character Vectors of Dates and Times: Dates <- c("1989-09-28","2001-01-15","2004-08-30","1990-02-09") Times <- c( "23:12:55", "10:34:02", "08:30:00", "11:18:23") charvec = paste(Dates, Times) # Create a 'timeDate' object timeDate(charvec) # Create a 'timeDate' object with my financial center set to Zurich myFinCenter <- "Zurich" timeDate(charvec) # if the 'timeDate' was recorded in a different financial center, it # will be automatically converted to your financial center, # i.e. "Zurich". timeDate(charvec, zone = "Tokyo") # You can also convert a recorded 'timeDate' from your financial # center "Zurich" to another one, for example "NewYork". timeDate(charvec, FinCenter = "NewYork") } NOTE: Rmetrics has implemented an automated date/time format identifier for many common date/time formats which tries to automatically recognise the format for the character vector of dates and times. You can have a look at \cr \code{whichFormat(charvec)}. \cr NOTE: Rmetrics always uses the midnight standard on dates and times. You can see it with \cr \code{.midnightStandard("2008-01-31 24:00:00")} \cr Alternatively we can create a sequence of \code{"timeDate"} objects with the help of the function \code{timeSequence}. This can be done in several ways, either by specifying the range of the data through the arguments \code{from} and \code{to}, or when \code{from} is missing, by setting the argument \code{length.out} of the desired series. Note in the case of a monthly sequence, you have further options. For example you can generate the series with the first or last day in each month, or use more complex rules like the last or n-th Friday in every month. \cr Examples: \preformatted{ # Lets work in an international environment: setRmetricsOptions(myFinCenter = "GMT") # Your 'timeDate' is now in the Financial Center "GMT" timeDate(charvec) # Daily January 2008 Sequence: timeSequence(from = "2008-01-01", to = "2008-01-31", by = "day") # Monthly 2008 Sequence: tS = timeSequence(from = "2008-01-01", to = "2008-12-31", by = "month") tS # Do you want the last Day or the last Friday in Month Data ? timeLastDayInMonth(tS) timeLastNdayInMonth(tS, nday = 5) } A third possibility is to create \code{"timeDate"} objects from calendar atoms. You can specify values or vectors of equal length of integers denoting year, month, day, hour, minute and seconds. If every day has the same time stamp, you can just add an offset. \cr Examples: \preformatted{ # Monthly calendar for Current Year getRmetricsOptions("currentYear") timeCalendar() # Daily 'timeDate' for January data from Tokyo local time 16:00 timeCalendar(2008, m=1, d=1:31, h=16, zone="Tokyo", FinCenter="Zurich") # Or add16 hours in seconds ... timeCalendar(2008, m=1, d=1:31, zone="Tokyo", FinCenter="Zurich") + 16*3600 } } \section{2. Operations on \code{"timeDate"} Objects}{ Many operations can be performed on \code{"timeDate"} objects. You can add and subtract, round and truncate, subset, coerce or transform them to other objects. These are only few options among many others. \cr \bold{Math Operations} Math operations can add and subtract dates and times, and perform logical operations on \code{"timeDate"} objects.\cr Examples: \preformatted{ # Date and Time Now: now = Sys.timeDate() # One Hour Later: now + 3600 # Which date/time is earlier or later ? tC = timeCalendar() tR = tC + round(3600*rnorm(12)) tR > tC } \bold{Lagging} You can generate suitable lagged and iterated differences:\cr \code{diff.timeDate} -- Returns suitably lagged and iterated differences.\cr Examples: \preformatted{ # Monthly Dates 2008 and January 2009: tC = c(timeCalendar(2008), timeCalendar(2009)[1]) # Number of days in months and total 2008: diff(tC) sum(as.integer(diff(tC))) } \bold{Rounding and Truncating} Dates and times can be rounded or truncated. This is useful lower frequencies than seconds, for example hourly. \cr \code{round} -- rounds objects of class \code{"timeDate"}, \cr \code{trunc} -- truncates objects of class \code{"timeDate"}. \cr Examples: \preformatted{ # Round the Random Time Stamps to the Nearest Hour: tC = timeCalendar() tR = tC + round(3600*rnorm(12)) tR round(tR, "h") # Truncate by Hour or to the Next Full Hour:: trunc(tR, "h") trunc(tR + 3600, "h") } \bold{Subsetting} Subsetting a \code{"timeDate"} is a very important issue in the management of dates and times. Rmetrics offers several functions which are useful in this context: \cr \code{"["} -- Extracts or replaces subsets from \code{"timeDate"} objects, \cr \code{window, cut} -- extract a piece from a \code{"timeDate"} object, \cr In this context it is also important to know the \code{start} and the \code{end} time stamp together with the total number of time stamps. \cr \code{start} -- extracts the first entry of a \code{"timeDate"} object, \cr \code{end} -- extracts the last entry of a \code{"timeDate"} object, \cr \code{length} -- returns the length of a \code{"timeDate"} object. \cr Examples: \preformatted{ # Create Monthly Calendar for next year tC = timeCalendar(getRmetricsOptions("currentYear") + 1) tC # Start, end and length of 'timeDate' objects start(tC) end(tC) length(tC) # The first Quarter - Several Alternative Solutions: tC[1:3] tC[-(4:length(tC))] window(tC, start = tC[1], end = tC[3]) cut(tC, from = tC[1], to = tC[3]) tC[tC < tC[4]] # The Quarterly Series: tC[seq(3, 12, by = 3)] % # Extract a special Date: % tC = timeCalendar(2008) % tC[tC[4]] % tC[format(tC[4])] % tC[format("2001-01-01"]) ... needs check ? } Weekdays, weekends, business days, and holidays can be easily obtained with the following functions: \cr \code{isWeekday} -- tests if a date is a weekday or not, \cr \code{isWeekend} -- tests if a date is a weekend day or not, \cr \code{isBizday} -- tests if a date is a business day or not, \cr \code{isHoliday} -- tests if a date is a holiday day or not. \cr Examples: \preformatted{ # A 'timeDate' Sequence around Easter 2008 Easter(2008) tS <- timeSequence(Easter(2008, -14), Easter(2008, +14)) tS # Subset weekdays and business days: tW <- tS[isWeekday(tS)]; tW dayOfWeek(tW) tB <- tS[isBizday(tS, holidayZURICH())]; tB dayOfWeek(tB) } The functions \code{blockStart} and \code{blockEnd} gives time stamps for equally sized blocks. \cr \code{blockStart} -- Creates start dates for equally sized blocks, \cr \code{blockEnd} -- Creates end dates for equally sized blocks. \cr Examples: \preformatted{ # 'timeDate' object for the last 365 days: tS = timeSequence(length.out = 360) tS # Subset Pointers for blocks of exactly 30 days: blockStart(tS, 30) blockEnd(tS, 30) Sys.timeDate() } \bold{Coercions and Transformations} \code{"timeDate"} objects are not living in an isolated world. Coercions and transformations allow \code{"timeDate"} objects to communicate with other formatted time stamps. Be aware that in most cases information can be lost if the other date.time classes do not support this functionality. There exist several methods to coerce and transform \code{"timeDate"} objects into other objects. \cr \code{as.timeDate} -- Implements Use Method, \cr \code{as.timeDate.default} -- default Method, \cr \code{as.timeDate.POSIXt} -- returns a 'POSIX' object as \code{"timeDate"} object, \cr \code{as.timeDate.Date} -- returns a 'POSIX' object as \code{"timeDate"} object. \cr \code{as.character.timeDate} -- Returns a \code{"timeDate"} object as 'character' string, \cr \code{as.double.timeDate} -- returns a \code{"timeDate"} object as 'numeric' object, \cr \code{as.data.frame.timeDate} -- returns a \code{"timeDate"} object as 'data.frame' object, \cr \code{as.POSIXct.timeDate} -- returns a \code{"timeDate"} object as 'POSIXct' object, \cr \code{as.POSIXlt.timeDate} -- returns a \code{"timeDate"} object as 'POSIXlt' object, \cr \code{as.Date.timeDate} -- returns a \code{"timeDate"} object as 'Date' object. \cr Users or maintainers of other date/time classes can add their own generic functions. For example \code{as.timeDate.zoo} and \code{as.zoo.timeDate}. \cr \bold{Concatenations and Reorderings} It might be sometimes useful to concatenate or reorder \code{"timeDate"} objects. The generic functions to concatenate, replicate, sort, re-sample, unify and revert a \code{"timeDate"} objects are : \cr \code{c} -- Concatenates \code{"timeDate"} objects, \cr \code{rep} -- replicates a \code{"timeDate"} object, \cr \code{sort} -- sorts a \code{"timeDate"} object, \cr \code{sample} -- resamples a \code{"timeDate"} object,\cr \code{unique} -- makes a \code{"timeDate"} object unique, \cr \code{rev} -- reverts a \code{"timeDate"} object. \cr NOTE: The function \code{c} of a \code{"timeDate"} objects takes care of possible different financial centers specific to each object to be concatenated. In such cases, all time stamps will be transformed to the financial center of the first time stamp used in the concatenation: \cr Examples: \preformatted{ # Concatenate the local time stamps to Zurich time ... ZH = timeDate("2008-01-01 16:00:00", zone = "GMT", FinCenter = "Zurich") NY = timeDate("2008-01-01 18:00:00", zone = "GMT", FinCenter = "NewYork") c(ZH, NY) c(NY, ZH) # Rordering: tC = timeCalendar(); tC tS = sample(tC); tS tO = sort(tS); tO tV = rev(tO); tV tU = unique(c(tS, tS)); tU } } \section{3. Daylight Saving Time and Financial Centers}{ Each financial center worldwide has a function which returns Daylight Saving Time Rules. Almost 400 prototypes are made available through the Olson time zone data base. The cities and regions can be listed using the command \code{listFinCenter}. The DST rules for specific financial center can be viewed by their name, e.g. \code{Zurich()}. Additional financial centers can be added by the user taking care of the format specification of the DST functions.\cr \bold{Setting Financial Centers} All time stamps are handled according to the time zone and daylight saving time rules specified by the center through the variable \code{myFinCenter}. This variable is set by default to \code{"GMT"} but can be changed to your local financial center or to any other financial center you want to use. \cr NOTE: By setting the financial center to a continent/city which lies outside of the time zone used by your computer does not change any time settings or environment variables used by your computer. \cr To change the name of a financial center from one setting to another just assign to the variable \code{myFinCenter} the desired name of the city: Examples: \preformatted{ # What is my current Financial Center ? getRmetricsOptions("myFinCenter") # Change to Zurich: setRmetricsOptions(myFinCenter = "Zurich") getRmetricsOptions("myFinCenter") } From now on, all dates and times are handled within the middle European time zone and the DST rules which are valid for Zurich. \bold{List of Financial Centers} There are many other financial centers supported by Rmetrics. They can be displayed by the function \code{listFinCenter}. You can also display partial lists with wildcards and regular expressions: Examples: \preformatted{ # List all supported Financial Centers Worldwide: listFinCenter() # List European Financial Centers: listFinCenter("Europe/*") } \bold{DST Rules} For each financial center a function is available. It keeps the information of the time zones and the DST rules. The functions return a data.frame with 4Columns : \preformatted{ Zurich offSet isdst TimeZone ... 62 2008-03-30 01:00:00 7200 1 CEST 63 2008-10-26 01:00:00 3600 0 CET ... } The first column describes when the time was changed, the second gives the offset to "GMT", the third returns the daylight savings time flag which is positive if in force, zero if not, and negative if unknown. The last column gives the name of the time zone. You can have a look at the function \code{Zurich()} : \cr Examples: \preformatted{ # Show the DST Rules for Zurich: Zurich() # List European Financial Centers: listFinCenter("Europe/*") } } \section{3. Holidays and Holiday Calendars}{ It is non-trivial to implement function for business days, weekends and holidays. It is not difficult in an algorithmic sense, but it can become tedious to implement the rules of the calendar themselves, for example the date of Easter. In the following section we briefly summarise the functions which can calculate dates of ecclesiastical and public holidays. With the help of these functions we can also create business and holiday calendars. \bold{Special Dates:} The implemented functions can compute the last day in a given month and year, the dates in a month that is a n-day (e.g. n- = Sun) on or after a given date, the dates in a month that is a n-day on or before a specified date, the n-th occurrences of a n-day for a specified year/month vectors, or the last n-day for a specified year/month value or vector. \cr NOTE: n-days are numbered from 0 to 6 where 0 correspond to the Sunday and 6 to the Saturday. \cr \code{timeFirstDayInMonth} -- Computes the first day in a given month and year, \cr \code{timeLastDayInMonth} -- Computes the last day in a given month and year, \cr \code{timeFirstDayInQuarter} -- Computes the first day in a given quarter and year, \cr \code{timeLastDayInQuarter} -- Computes the last day in a given quarter and year, \cr \code{timeNdayOnOrAfter} -- Computes date that is a "on-or-after" n-day, \cr \code{timeNdayOnOrBefore} --b Computes date that is a "on-or-before" n-day, \cr \code{timeNthNdayInMonth} -- Computes n-th occurrence of a n-day in year/month, \cr \code{timeLastNdayInMonth} -- Computes the last n-day in year/month. \cr \bold{Holidays:} Holidays may have two origins: ecclesiastical or public/federal. The ecclesiastical calendars of Christian churches are based on cycles of movable and immovable feasts. Christmas, December 25, is the principal immovable feast. Easter is the principal movable feast, and dates of most of the other movable feasts are determined with respect to Easter. However, the movable feasts of the Advent and Epiphany seasons are Sundays reckoned from Christmas and the Feast of the Epiphany, respectively. Examples: \preformatted{ # List Holidays available in Rmetrics listHolidays() # The date of Easter for the next 5 years: currentYear <- getRmetricsOptions("currentYear") Easter(currentYear:(currentYear+5)) } \bold{Holiday Calendars:} \code{holidayZURICH} -- Zurich Business Calendar, \cr \code{holidayNYSE} -- NYSE Stock Exchange Holiday Calendar, \cr \code{holidayZURICH} -- TSX Holiday Calendar. \cr We would like to thanks all Rmetrics users who gave us many additional information concerning local holidays. } \references{ Bateman R., (2000); \emph{Time Functionality in the Standard C Library}, Novell AppNotes, September 2000 Issue, 73--85. Becker R.A., Chambers J.M., Wilks A.R. (1988); \emph{The New S Language}, Wadsworth & Brooks/Cole. ISO-8601, (1988); \emph{Data Elements and Interchange Formats - Information Interchange, Representation of Dates and Time}, International Organization for Standardization, Reference Number ISO 8601, 14 pages. James D.A., Pregibon D. (1992), \emph{Chronological Objects for Data Analysis}, Reprint. Ripley B.D., Hornik K. (2001); \emph{Date-Time Classes}, R-News, Vol. 1/2 June 2001, 8--12. Zivot, E., Wang J. (2003); \emph{Modeling Financial Time Series with S-Plus}, Springer, New-York. } \keyword{package} \keyword{chron} timeDate/man/stats-skewness.Rd0000755000176200001440000000273714324774407016076 0ustar liggesusers\name{skewness} \alias{skewness} \alias{skewness.default} \alias{skewness.data.frame} \alias{skewness.POSIXct} \alias{skewness.POSIXlt} \title{Skewness} \description{ Functions to compute skewness. } \usage{ skewness(x, \dots) \method{skewness}{default}(x, na.rm = FALSE, method = c("moment", "fisher"), \dots) \method{skewness}{data.frame}(x, na.rm = FALSE, method = c("moment", "fisher"), \dots) \method{skewness}{POSIXct}(x, \dots) \method{skewness}{POSIXlt}(x, \dots) } \arguments{ \item{x}{ a numeric vector or object. } \item{na.rm}{ a logical. Should missing values be removed? } \item{method}{ a character string, the method of computation, see section \sQuote{Detaials}. } \item{\dots}{ arguments to be passed. } } \details{ Argument \code{method} can be one of \code{"moment"} or \code{"fisher"}. The \code{"moment"} method is based on the definitions of skewness for distributions and this should be used when resampling (bootstrap or jackknife). The \code{"fisher"} method correspond to the usual "unbiased" definition of sample variance, although in the case of skewness exact unbiasedness is not possible. } \value{ a numeric value or vector with attribute \code{"method"} indicating the method. } \seealso{ \code{\link{kurtosis}} } \examples{ ## mean - ## var - # Mean, Variance: r = rnorm(100) mean(r) var(r) ## skewness - skewness(r) } \keyword{univar} timeDate/man/base-subset.Rd0000755000176200001440000000165414324771466015314 0ustar liggesusers\name{subset} \alias{subset} \alias{[,timeDate,missing,missing-method} \alias{[,timeDate,numeric,missing-method} \alias{[,timeDate,logical,missing-method} \alias{[,timeDate,character,missing-method} \alias{[,timeDate,ANY,missing-method} \alias{[<-.timeDate} \title{Subsetting a 'timeDate' object} \description{ Extracts or replaces subsets from \code{"timeDate"} objects. } % FIXME % \usage{ % \S4method{[}{timeDate}(x, \dots, drop = TRUE) % } % \arguments{ % \item{x}{ % an object of class \code{"timeDate"}. % } % \item{\dots}{ % arguments passed to other methods. % } % \item{drop}{ % a logical flag, by default \code{TRUE}. % } % } \value{ an object of class \code{"timeDate"}. } \examples{ ## timeCalendar - tS = timeCalendar() ## [ - # Subsetting Second Quarter: tS[4:6] ## [<- # Replacing: } \keyword{chron} timeDate/man/calendar-periods.Rd0000755000176200001440000000261314324765354016306 0ustar liggesusers\name{periods} \alias{periods} \alias{periodicallyRolling} \alias{monthlyRolling} \title{Rolling periods} \description{ Returns start and end dates for rolling periods. } \usage{ periods(x, period = "12m", by = "1m", offset = "0d") periodicallyRolling(x, period = "52w", by = "4w", offset = "0d") monthlyRolling(x, period = "12m", by = "1m") } \arguments{ \item{x}{ an object of class timeDate. } \item{period}{ a span string, consisting of a length integer and a unit value, e.g. "52w" for 52 weeks.} \item{by}{ a span string, consisting of a length integer and a unit value, e.g. "4w" for 4 weeks. } \item{offset}{ a span string, consisting of a length integer and a unit value, e.g. "0d" for no offset. } } \details{ Periodically Rolling - Allowed unit values are "m" for 4 weeks, "w" for weeks, "d" for days, "H" for hours, "M" for minutes, and "S" for seconds. Monthly Calendar Rolling - The only allowed allowed unit value is "m" for monthly periods. Express a quarterly period by "3m", a semester by "6m", a year by "12m" etc. } \examples{ ## Create Time Sequence - x <- timeSequence(from = "2001-01-01", to = "2009-01-01", by = "day") ## Generate Periods - periods(x, "12m", "1m") periods(x, "52w", "4w") ## Roll Periodically - periodicallyRolling(x) ## Roll Monthly - monthlyRolling(x) } \keyword{chron} timeDate/man/stats-blockStart.Rd0000755000176200001440000000220314324776712016331 0ustar liggesusers\name{blockStart} \alias{blockStart} \alias{blockEnd} \title{Equally sized 'timeDate' blocks} \description{ Creates start (end) dates for equally sized \code{"timeDate"} blocks. } \usage{ blockStart(x, block = 20) blockEnd(x, block = 20) } \arguments{ \item{block}{ an integer value specifying the length in number of records for numerically sized blocks of dates. } \item{x}{ an object of class \code{"timeDate"}. } } \details{ The functions \code{blockStart} and \code{blockEnd} create vectors of start and end values for equally sized \code{"timeDate"} blocks. Note, the functions are event counters and not a time counter between measuring time intervals between start and end dates! For equally sized blocks in time one has before to align the time stamps in equal time differences. } \value{ an object of class \code{"timeDate"} } \examples{ ## timeSequence # 360 Days Series: tS <- timeSequence(to = "2022-09-23 09:39:23", length.out = 360) ## blockStart | blockEnd - Start <- blockStart(tS, 30) End <- blockEnd(tS, 30) Start End End - Start } \keyword{chron} timeDate/man/calendar-endpoints.Rd0000755000176200001440000000226414324763306016641 0ustar liggesusers\name{.endpoints} \alias{.endpoints} \title{Endpoints indexes} \description{ Returns endpoint indexes from a \code{"timeDate"} object. } \usage{ .endpoints(x, on = c("months", "years", "quarters", "weeks", "days", "hours", "minutes", "seconds"), k=1) } \arguments{ \item{x}{ a \code{"timeDate"} object. } \item{on}{ the periods endpoints to find as a character string. Select from: \code{"months"}, \code{"years"}, \code{"quarters"}, \code{"weeks"}, \code{"days"}, \code{"hours"}, \code{"minutes"}, \code{"seconds"}. } \item{k}{ along every k-th element. } } \details{ \code{.endpoints} returns an integer vector corresponding to the last observation in each period specified by \code{on}, with a zero added to the beginning of the vector, and the index of the last observation in \code{x} at the end. } \value{ an integer vector of endpoints beginning with 0 and ending with the value equal to the length of the \code{x} argument } \author{ Jeff Ryan, modified by Diethelm Wuertz for \code{"timeDate"} objects. } \examples{ ## endpoints - # Weekly Endpoints: .endpoints(timeCalendar(), on="w") } \keyword{programming} timeDate/man/base-sort.Rd0000755000176200001440000000175514324771466015000 0ustar liggesusers\name{sort} \alias{sort} \alias{sort.timeDate} \title{Sorting 'timeDate' objects} \description{ Sorts a \code{"timeDate"} object. } \usage{ \method{sort}{timeDate}(x, \dots) } \arguments{ \item{x}{ an object of class \code{"timeDate"}. } \item{\dots}{ arguments passed to other methods. } } \value{ an object of class \code{"timeDate"} } \examples{ ## c - # Create Character Vectors: dts = c("1989-09-28", "2001-01-15", "2004-08-30", "1990-02-09") dts tms = c( "23:12:55", "10:34:02", "08:30:00", "11:18:23") tms ## "+/-" - # Add One Day to a Given timeDate Object: GMT = timeDate(dts, zone = "GMT", FinCenter = "GMT") GMT ZUR = timeDate(dts, zone = "GMT", FinCenter = "Europe/Zurich") ZUR ## c - # Concatenate and Replicate timeDate Objects: c(GMT[1:2], ZUR[1:2]) c(ZUR[1:2], GMT[1:2]) ## rep - rep(ZUR[2], times = 3) rep(ZUR[2:3], times = 2) } \keyword{chron} timeDate/man/base-rev.Rd0000644000176200001440000000073514437131646014572 0ustar liggesusers\name{rev} \alias{rev} \alias{rev.timeDate} \title{Reverse 'timeDate' objects} \description{ Reverse a \code{"timeDate"} object. } \usage{ \method{rev}{timeDate}(x) } \arguments{ \item{x}{ an object of class \code{"timeDate"}. } } \value{ an object of class \code{"timeDate"} } \examples{ dts = c("1989-09-28", "2001-01-15", "2004-08-30", "1990-02-09") ZUR = timeDate(dts, zone = "GMT", FinCenter = "Europe/Zurich") ZUR rev(ZUR) } \keyword{chron} timeDate/DESCRIPTION0000644000176200001440000000372714536617572013545 0ustar liggesusersPackage: timeDate Title: Rmetrics - Chronological and Calendar Objects Version: 4032.109 Authors@R: c(person("Diethelm", "Wuertz", role="aut", comment = "original code") , person("Tobias", "Setz", role = c("aut"), email = "tobias.setz@live.com") , person("Yohan", "Chalabi", role = "aut") , person("Martin","Maechler", role = "ctb", email = "maechler@stat.math.ethz.ch", comment = c(ORCID = "0000-0002-8685-9910")) , person(given = c("Joe", "W."), family = "Byers", role = "ctb") , person(given = c("Georgi", "N."), family = "Boshnakov", role = c("cre", "aut"), email = "georgi.boshnakov@manchester.ac.uk") ) Description: The 'timeDate' class fulfils the conventions of the ISO 8601 standard as well as of the ANSI C and POSIX standards. Beyond these standards it provides the "Financial Center" concept which allows to handle data records collected in different time zones and mix them up to have always the proper time stamps with respect to your personal financial center, or alternatively to the GMT reference time. It can thus also handle time stamps from historical data records from the same time zone, even if the financial centers changed day light saving times at different calendar dates. Depends: R (>= 3.6.0), methods Imports: graphics, utils, stats Suggests: RUnit License: GPL (>= 2) Encoding: UTF-8 URL: https://geobosh.github.io/timeDateDoc/ (doc), https://r-forge.r-project.org/scm/viewvc.php/pkg/timeDate/?root=rmetrics (devel), https://www.rmetrics.org BugReports: https://r-forge.r-project.org/projects/rmetrics NeedsCompilation: no Packaged: 2023-12-14 11:25:31 UTC; georgi Author: Diethelm Wuertz [aut] (original code), Tobias Setz [aut], Yohan Chalabi [aut], Martin Maechler [ctb] (), Joe W. Byers [ctb], Georgi N. Boshnakov [cre, aut] Maintainer: Georgi N. Boshnakov Repository: CRAN Date/Publication: 2023-12-14 15:30:02 UTC timeDate/tests/0000755000176200001440000000000014263246023013152 5ustar liggesuserstimeDate/tests/doRUnit.R0000755000176200001440000000151414263246023014665 0ustar liggesusers#### doRUnit.R --- Run RUnit tests ####------------------------------------------------------------------------ ### Origianlly follows Gregor Gojanc's example in CRAN package 'gdata' ### and the corresponding section in the R Wiki: ### http://wiki.r-project.org/rwiki/doku.php?id=developers:runit ### MM: Vastly changed: This should also be "runnable" for *installed* ## package which has no ./tests/ ## ----> put the bulk of the code e.g. in ../inst/unitTests/runTests.R : if(require("RUnit", quietly = TRUE)) { ## --- Setup --- wd <- getwd() pkg <- sub("\\.Rcheck$", '', basename(dirname(wd))) library(package=pkg, character.only=TRUE) path <- system.file("unitTests", package = pkg) stopifnot(file.exists(path), file.info(path.expand(path))$isdir) source(file.path(path, "runTests.R"), echo = TRUE) } timeDate/R/0000755000176200001440000000000014536561371012222 5ustar liggesuserstimeDate/R/AllClass.R0000755000176200001440000000670514263246023014045 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA # Copyrights (C) # for this R-port: # 1999 - Diethelm Wuertz, GPL # 2007 - Rmetrics Foundation, GPL # Diethelm Wuertz # www.rmetrics.org # for the code accessed (or partly included) from other R-ports: # see R's copyright and license files # for the code accessed (or partly included) from contributed R-ports # and other sources # see Rmetrics's copyright file ################################################################################ # FUNCTION: GENERATION OF TIMEDATE OBJECTS: # setClass 'timeDate' S4 Class representation # setMethod inti 'initialize', 'timeDate ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # setClass("timeDate", # A class implemented by Diethelm Wuertz and Yohan Chalabi # Description: # Class representatation for 'timeDate' Objects. # CLASS: slots = c(Data = "POSIXct", format = "character", FinCenter = "character"), validity = function(object) { if(!identical(attr(object@Data, "tzone"), "GMT")) return("@Data must be in \"GMT\" timezone.") if(!is.numeric(unclass(object@Data))) return("unclass(@Data) should be of class \"numeric\".") ## else TRUE TRUE }) # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # setMethod("initialize", "timeDate", function(.Object, ...) { .Object <- callNextMethod() # if not arguments are passed in ..., do not try to define format # of @Data if (length(list(...))) { # ISO Date/Time Format: isoDate <- "%Y-%m-%d" isoFormat <- "%Y-%m-%d %H:%M:%S" # extract numerical value num <- c(unclass(.Object@Data)) if (all(is.na(num))) { # no need to look for a format if @Data has only NA's .Object@format <- character(1) } else { # convert - DST num <- .formatFinCenterNum(num, .Object@FinCenter, "gmt2any") # check if num is a multiple of days test <- !(abs(num %% 86400) > 0) .Object@format <- ifelse(all(na.omit(test)), isoDate, isoFormat) } } .Object }) ################################################################################ timeDate/R/methods-plot.R0000755000176200001440000001347014356643702014773 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # FUNCTION: DESCRIPTION: # plot,timeDate Plots a 'timeDate' object # points,timeDate Adds points to a 'timeDate' plot # lines,timeDate Adds lines to a 'timeDate' plot # axis.timeDate S3 Adds an axis to a 'timeDate' plot # pretty.timeDate S3 Returns a sequence of equally spaced round values # abline,timeDate Adds an abline to a 'timeDate' plot ################################################################################ setMethod("plot", "timeDate", function(x, y, ...) { # A function implemented by Diethelm Wuertz and Yohan Chalabi # Description: # Plots a 'timeDate' object # Note: # Doesn't yet support the features of timeDate objects ... # FUNCTION: # Plot: plot(as.POSIXct(x), y, ...) }) setMethod("points", "timeDate", function(x, y, ...) { # A function implemented by Diethelm Wuertz # FUNCTION: # Note: # Doesn't yet support the features of timeDate objects ... # Add Points: points(as.POSIXct(x), y, ...) }) setMethod("lines", "timeDate", function(x, y, ...) { # A function implemented by Diethelm Wuertz # Description: # Adds lines to a 'timeDate' plot # FUNCTION: # Note: # Doesn't yet support the features of timeDate objects ... # Add Lines: lines(as.POSIXct(x), y, ...) }) axis.timeDate <- function(side, x, at, format = NULL, labels = TRUE, ...) { # A function implemented by Diethelm Wuertz # Description: # Adds an axis to a 'timeDate' plot # Arguments: # side - an integer specifying which side of the plot the axis # is to be drawn on. The axis is placed as follows: # 1=below, 2=left, 3=above and 4=right. # x - a 'timeDate' object # at - a 'timeDate' object # format - format string # labels - either a logical value specifying whether annotations # are to be made at the tickmarks, or a vector of character # strings to be placed at the tickpoints. # ... - further arguments to be passed from or to other methods, # typically graphical parameters or arguments of plot.default. # For the plot methods, also format. # Notes: # Note that axis.timeDate is not an S3 method ! # cannot hence be defined as a S4 method # FUNCTION: # Format: if (is.null(format)) format = whichFormat(x) ## Add Axis: ## GNB: arg. x was: x=as.POSIXct(x) ## 'x=as.POSIXct(x)' might fail if 'x' is missing. It wasn't faling ## only because axis.POSIXct() was ignoring argument 'x' when 'at' was ## non-missing. But this is no longer the case after R-devel 2023-01-07 ## r83578, which throws error. Fix suggested by Uwe Liege. axis.POSIXct(side = side, x = if(!missing(x)) as.POSIXct(x), at = as.POSIXct(at), format = format, labels = labels, ...) invisible() } pretty.timeDate <- function(x, n = 5, min.n = n%/%3, shrink.sml = 0.75, high.u.bias = 1.5, u5.bias = 0.5 + 1.5 * high.u.bias, eps.correct = 0, ...) { # A function implemented by Diethelm Wuertz # Description: # Returns a sequence of equally spaced round values. # Details: # Computes a sequence of about n+1 equally spaced ?round? # values which cover the range of the values in x. # The values are chosen so that they are 1, 2 or 5 times # a power of 10. # Arguments: # x - a 'timeDate' object from which the time is # extracted # n - integer giving the desired number of intervals. # min.n - nonnegative integer giving the minimal # number of intervals. # shrink.sml - positive numeric by a which a default # scale is shrunk in the case when range(x) is # very small. # high.u.bias - non-negative numeric, typically > 1. # Larger high.u.bias values favor larger units. # u5.bias - non-negative numeric multiplier favoring # factor 5 over 2. # eps.correct - integer code, one of {0,1,2}. If # non-0, a correction is made at the boundaries. # ... - further arguments for methods. # FUNCTION: x <- as.POSIXct(x) ans <- pretty(x, n=n, min.n=min.n, shrink.sml=shrink.sml, high.u.bias=high.u.bias, u5.bias=u5.bias, eps.correct=eps.correct, ...) # Return Value: as.timeDate(ans) } setMethod("abline", signature(v = "timeDate"), function(a = NULL, b = NULL, h = NULL, v = NULL, reg = NULL, coef = NULL, untf = FALSE, ...) { # Adds an abline to a 'timeDate' plot callGeneric(a = a, b = b, h = h, v = as.POSIXct(v), reg = reg, coef = coef, untf = untf, ...) } ) ################################################################################ timeDate/R/holiday-NERC.R0000755000176200001440000001440314263246023014517 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # FUNCTION: DESCRIPTION: # holidayNERC Returns holidays for full-day NERC calendar ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # holidayNERC <- function (year = getRmetricsOptions("currentYear"), FinCenter = "Eastern") { # A function contributed by Joe W. Byers # and modified by Yohan Chalabi # Description: # North American Energy Reliabibity Council Holidays calendar # for determining days when the 16 hour on peak hours of a day # for the region are recognized as off peak hours. # Details: # Contributed by Joe W Byers: # # I have created a calendar function to build out the NERC holidays for # power prices. NERC: North American Reliability Council. I started # this because I needed a NYMEX calendar as the text at the bottom # explains, but I am still waiting on NYMEX to reply on my questions. # # The NERC holiday function is based on the holidayNYSE function from # Rmetrics and the NERC website rules found at # http://www.nerc.com/~oc/offpeaks.html # # I would appreciate any help in verifying this function. It returns # the correct holidays as shown on their website. I am not sure if the # historical holidays are correct, especially prior to 1971 when Memorial # day was on 5/30. I have sent the NERC contact an email with this # question. # # I did add a new argument to the function for the FinCenter of the # timedate class because NERC covers all North America. User will # want to set this to the FinCenter appropriate for their use (Chicago, # Pacific,...). It would be cool to add NERC regions to the timedate # zone or fincenter lists, but this is another discussion. # # The only difference is the holidays # for Independence day and thanks giving. # Independence Day # Monday, July 3* # Tuesday, July 4 # (Electronic trading closed Sunday and Monday, July 2 and 3; reopens # 6:00 PM, July 4) # Thanksgiving # Thursday, November 23 # Friday, November 24 # (NYMEX ClearPort(R) and CME Globex(R) open both days) # # NYMEX is closed on Monday July 3rd this year since the 4th is on a # Tuesday and Friday the day following Thanksgiving. This will end in # 2007 according to NYMEX. The Independence day holiday I think will # observe Friday as a holiday when the 4th is on a Thurs but, according # to NYMEX they are not sure for 2007. Also the webpage # http://www.nymex.com/holida_schedu.aspx notes that Christmas eve will # become a holiday in 2007 but expirations will not change. I am sending # their customer service a request to post a document with the holiday # rules as well as these tables for those of us who worry about a # derivatives calendar. # FUNCTION: # NERC Holidays: holidays <- NULL for (y in year) { if (y >= 1885) holidays <- c(holidays, as.character(USNewYearsDay(y))) if (y >= 1885) holidays <- c(holidays, as.character(USIndependenceDay(y))) if (y >= 1885) holidays <- c(holidays, as.character(USThanksgivingDay(y))) if (y >= 1885) holidays <- c(holidays, as.character(USChristmasDay(y))) if (y >= 1887) holidays <- c(holidays, as.character(USLaborDay(y))) if (y <= 1970) holidays <- c(holidays, as.character(USDecorationMemorialDay(y))) if (y >= 1971) holidays <- c(holidays, as.character(USMemorialDay(y))) } # Sort and Convert to 'timeDate': holidays <- sort(holidays) ans <- timeDate(holidays, zone = FinCenter, FinCenter = FinCenter) # Move Sunday Holidays to Monday: posix1 <- as.POSIXlt(ans, tz = "GMT") ans <- ans + as.integer(posix1$wday == 0) * 24 * 3600 # After July 3, 1959, move Saturday holidays to Friday # ... except if at the end of monthly/yearly accounting period # this is the last business day of a month. posix2 <- as.POSIXlt(as.POSIXct(ans, tz = "GMT") - 24 * 3600) y <- posix2$year + 1900 m <- posix2$mon + 1 calendar <- timeCalendar(y = y + (m + 1) %/% 13, m = m + 1 - (m + 1) %/% 13 * 12, d = 1, zone = "GMT", FinCenter = "GMT") lastday <- as.POSIXlt(calendar - 24 * 3600, tz = "GMT")$mday lon <- .last.of.nday(year = y, month = m, lastday = lastday, nday = 5) ExceptOnLastFriday <- timeDate(format(lon), zone = FinCenter, FinCenter = FinCenter) ans <- ans - as.integer(ans >= timeDate("1959-07-03", zone ="GMT", FinCenter = "GMT") & as.POSIXlt(ans, tz = "GMT")$wday == 0 & ans != ExceptOnLastFriday) * 24 * 3600 # Remove Remaining Sunday Dates: posix3 <- as.POSIXlt(ans, tz = "GMT") ans <- ans[!(posix3$wday == 0)] # Return Value: ans } ################################################################################ timeDate/R/base-round.R0000755000176200001440000000531114263246023014376 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # MEHODS: DESCRIPTION: # round.timeDate Rounds objects of class 'timeDate' # trunc.timeDate Truncates objects of class 'timeDate' ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # round.timeDate <- function(x, digits = c("days", "hours", "mins")) { # A function implemented by Diethelm Wuertz # and modified by Yohan Chalabi # Note: # round.timeDate(x, units = c("days", "hours", "mins")) # FAILS !!! # FUNCTION: # Get Units: units <- match.arg(digits) FinCenter <- finCenter(x) # Use: lt <- round.POSIXt(as.POSIXlt(x, tz = "GMT"), units = units) ans <- timeDate(lt, zone = FinCenter, FinCenter = FinCenter) # Return Value: ans } # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # trunc.timeDate <- function(x, units = c("days", "hours", "mins"), ...) { # A function implemented by Diethelm Wuertz # and modified by Yohan Chalabi # FUNCTION: # Get Units: units = match.arg(units) FinCenter <- finCenter(x) # Sorting under GMT is not what we want! # GMT = timeDate(x, zone = x@FinCenter, FinCenter = "GMT") # lt = trunc.POSIXt(GMT@Data, units = units) # ans = timeDate(lt, zone = "GMT", FinCenter = x@FinCenter) # Use: lt <- trunc.POSIXt(as.POSIXlt(x, tz = "GMT"), units = units) ans <- timeDate(lt, zone = FinCenter, FinCenter = FinCenter) # Return Value: ans } ################################################################################ timeDate/R/holiday-TSX.R0000755000176200001440000001043514271530157014452 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # FUNCTION: DESCRIPTION: # holidayTSX Returns holidays for TSX calendar ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # holidayTSX <- function (year = getRmetricsOptions("currentYear")) { # A function implemented by Diethelm Wuertz # Description: # TSX Holiday Calendar # In Canada, the first Monday in August is generally a holiday but it # is known by different names in different areas. In Rmetrics it is # called CACivicProvincialHoliday() # TSX Holidays: # http://www.tsx.com/en/market_activity/market_hours.html # # * 2007: # * New Year's Day - January 1, 2007 # * Good Friday - April 6, 2007 # * Victoria Day - May 21, 2007 # * Canada Day - July 2, 2007 (for July 1 holiday) # * Civic Day - August 6, 2007 # * Labour Day - September 3, 2007 # * Thanksgiving Day - October 8, 2007 # * Christmas Eve - markets close at 1:00 p.m. ET # * Christmas Day - December 25, 2007 # * Boxing Day - December 26, 2007 # # * 2008: # * New Year's Day - January 1, 2008 # * Family Day - February 18, 2008 # * Good Friday - March 21, 2008 # * Victoria Day - May 19, 2008 # * Canada Day - July 1, 2008 # * Civic Day - August 4, 2008 # * Labour Day - September 1, 2008 # * Thanksgiving Day - October 13, 2008 # * Christmas Day - December 25, 2008 # * Boxing Day - December 26, 2008 # Trading Hours: # Toronto Stock Exchange and TSX Venture Exchange have trading hours # of 9:30 a.m. to 4:00 p.m. ET, Monday to Friday, with the exception # of the stock market holidays listed below. There is also an extended # session for market participants (Participating Organizations and Members) # from 4:15 to 5:00 p.m. ET each trading day. # FUNCTION: # Holidays - Years before 2007 are not checked out ... holidays = c( NewYearsDay(year), GoodFriday(year), CAVictoriaDay(year), CACanadaDay(year), CACivicProvincialHoliday(year), CAThanksgivingDay(year), CALabourDay(year), ChristmasDay(year), BoxingDay(year)) for (y in year) if (y >= 2008) holidays = c(holidays, CAFamilyDay(year)) holidays = sort(holidays) # Holidays falling on Saturdays and Sundays: holidays = holidays + (1-isWeekday(holidays))*24*3600 holidays = holidays + (1-isWeekday(holidays))*24*3600 ## GNB: fix issue 1288; holidayTSX(year=2011) ## was: (BoxingDay, ChristmasDay) = (Sat, Sun) => (Mon, Mon) ## now: => (Mon, Tue) ## TODO: this is a quick fix, needs more general solution, maybe ind <- which(dayOfWeek(ChristmasDay(year)) == "Sun") if(length(ind) > 0) { wrk <- ChristmasDay(year)[ind] + 2*24*3600 holidays <- unique(sort(c(holidays, wrk))) } # Add Financial Center: holidays <- timeDate(format(holidays), zone = "Toronto", FinCenter = "Toronto") # Return Value: holidays } ################################################################################ timeDate/R/options-currentYear.R0000755000176200001440000000273514263246023016342 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # DEPRECATED: SETTINGS: # currentYear Sets date of the current year # .currentYear Returns the the current year ################################################################################ ## .currentYear <- ## function() ## { ## # A function implemented by Diethelm Wuertz ## # Description: ## # Sets date of the current year ## # FUNCTION: ## # Return current year: ## as.POSIXlt(Sys.time())$year + 1900 ## } # ------------------------------------------------------------------------------ ## currentYear <- .currentYear() ################################################################################ timeDate/R/holiday-Dates.R0000644000176200001440000012655114536557160015047 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ## 2023-11-27 ## GNB: reworked the Japan's holidays as they all were set to fixed dates, ## and also to reflect changes in recent decades. ################################################################################ # FUNCTION: DESCRIPTION: # ... Holiday Dates ################################################################################ ## 2023-12-07 GNB: new format..sdate <- function(x, format = "-", ...) { ## TODO: think it over if(format == "-") paste(substr(x, 1, 4), substr(x, 5, 6), substr(x, 7, 8), sep = "-") else if(format == "") paste(substr(x, 1, 4), substr(x, 5, 6), substr(x, 7, 8), sep = "") else # TODO: needs more here format.default(x, format = format, ...) } Septuagesima = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = Easter(year, -63) if(value == "timeDate") timeDate(as.character(ans)) else as.character(ans, ...) } Quinquagesima = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = Easter(year, -49) if(value == "timeDate") timeDate(as.character(ans)) else as.character(ans, ...) } AshWednesday = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = Easter(year, -46) if(value == "timeDate") timeDate(as.character(ans)) else as.character(ans, ...) } PalmSunday = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = Easter(year, -7) if(value == "timeDate") timeDate(as.character(ans)) else as.character(ans, ...) } GoodFriday = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = Easter(year, -2) if(value == "timeDate") timeDate(as.character(ans)) else as.character(ans, ...) } EasterSunday = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = Easter(year) if(value == "timeDate") timeDate(as.character(ans)) else as.character(ans, ...) } EasterMonday = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = Easter(year, 1) if(value == "timeDate") timeDate(as.character(ans)) else as.character(ans, ...) } RogationSunday = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = Easter(year, 35) if(value == "timeDate") timeDate(as.character(ans)) else as.character(ans, ...) } Ascension = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = Easter(year, 39) if(value == "timeDate") timeDate(as.character(ans)) else as.character(ans, ...) } Pentecost = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = Easter(year, 49) if(value == "timeDate") timeDate(as.character(ans)) else as.character(ans, ...) } ## GNB: WhitMonday PentecostMonday = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = Easter(year, 50) if(value == "timeDate") timeDate(as.character(ans)) else as.character(ans, ...) } TrinitySunday = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = Easter(year, 56) if(value == "timeDate") timeDate(as.character(ans)) else as.character(ans, ...) } CorpusChristi = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = Easter(year, 60) if(value == "timeDate") timeDate(as.character(ans)) else as.character(ans, ...) } # ------------------------------------------------------------------------------ ChristTheKing = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = .on.or.after(year, 11, 20, 0) if(value == "timeDate") timeDate(ans) else format..sdate(ans, ...) } Advent1st = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = .on.or.after(year, 11, 27, 0) if(value == "timeDate") timeDate(ans) else format..sdate(ans, ...) } Advent2nd = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = .on.or.after(year, 12, 4, 0) if(value == "timeDate") timeDate(ans) else format..sdate(ans, ...) } Advent3rd = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = .on.or.after(year, 12, 11, 0) if(value == "timeDate") timeDate(ans) else format..sdate(ans, ...) } Advent4th = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = .on.or.after(year, 12, 18, 0) if(value == "timeDate") timeDate(ans) else format..sdate(ans, ...) } ChristmasEve = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = year*10000 + 1224 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } ChristmasDay = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = year*10000 + 1225 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } BoxingDay = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = year*10000 + 1226 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } # ------------------------------------------------------------------------------ SolemnityOfMary = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = year*10000 + 0101 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } Epiphany = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = year*10000 + 0106 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } PresentationOfLord = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = year*10000 + 0202 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } Annunciation = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = year*10000 + 0325 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } TransfigurationOfLord = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = year*10000 + 0806 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } AssumptionOfMary = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = year*10000 + 0815 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } BirthOfVirginMary = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = year*10000 + 0908 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } CelebrationOfHolyCross = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = year*10000 + 0914 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } MassOfArchangels = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = year*10000 + 0929 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } AllSaints = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = year*10000 + 1101 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } AllSouls = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = year*10000 + 1102 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } # ------------------------------------------------------------------------------ NewYearsDay = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = year*10000 + 0101 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } LaborDay = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = year*10000 + 0501 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } # ------------------------------------------------------------------------------ CHBerchtoldsDay = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = year*10000 + 0102 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } CHSechselaeuten = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = NULL for (y in year) { theDate = .nth.of.nday(y, 4, 1, 3) if (as.character(theDate) == as.character(Easter(y, +1))) { theDate = .nth.of.nday(y, 4, 1, 4) } ans = c(ans, theDate) # this changes the class from .sdate to numeric, # hence as.character() below } if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } CHAscension = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = Easter(year, 39) if(value == "timeDate") timeDate(as.character(ans)) else as.character(ans, ...) } CHConfederationDay = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = year*10000 + 0801 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } CHKnabenschiessen = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = .nth.of.nday(year, 9, 1, 2) if(value == "timeDate") timeDate(ans) else format..sdate(ans, ...) } # ------------------------------------------------------------------------------ ## GNB: Early May bank holiday ## GNB: renaming to the proper name; leaving for now 'GBMayDay' for compatibility ## ## the code in holidaysLONDON for y > 1978 was: ## if (y == 1995 || y == 2020) { ## ## Was moved to May 8 to celebrate VE Day's 75th/50th anniversary ## dts <- paste0(y, "-05-08") ## holidays <- c(holidays, dts) ## } else { ## lon <- timeDate(.on.or.after(y, 5, 1, 1), zone = "London", ## FinCenter = "Europe/London") ## holidays <- c(holidays, as.character(lon)) ## } GBMayDay <- GBEarlyMayBankHoliday <- function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ## TODO: y < 1978 - NA or empty ## if (y >= 1978) ## # First Monday of May became a bank holiday if(flag <- isTRUE(na_drop)) year <- year[year >= 1978] ans = .nth.of.nday(year, 5, 1, 1) ## special: moved to May 8 to celebrate VE Day's 50th/75th anniversary ind <- year %in% c(1995, 2020) if(any(ind)) ans[ind] <- 10000 * year[ind] + 0508 if(!flag && isFALSE(na_drop)) ans[year < 1978] <- NA if(value == "timeDate") timeDate(ans) else format..sdate(ans, ...) } ## YC: Note GBBankHoliday returns Spring Bank Holiday ## GNB: renaming to a more common name; leaving for now 'GBBankHoliday' for compatibility ## GBBankHoliday <- GBSpringBankHoliday <- function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ## introduced in 1871, first on Whit Monday if((flag <- isTRUE(na_drop)) && any(year < 1871)) year <- year[year >= 1871] ans = .last.of.nday(year, 5, 31, 1) ## Whit Monday, which is exactly 50 days after Easter if(any(year <= 1964)) { ## using arg 'format' as the default for timeDate objects is "%Y-%m-%d" ans[year <= 1964] <- as.numeric(format(Easter(year[year <= 1964], 50), format = "%Y%m%d")) } ## moved to be the day before XXX/Diamond/Platinum Jubilee bank holiday ind <- year %in% c(2002, 2012, 2022) if(any(ind)) { ans[year == 2002] <- 20020603 ans[year == 2012] <- 20120604 # Last Monday in May holiday moved to June 4, and # Queen's Diamond Jubilee on June 5 ans[year == 2022] <- 20220602 # Thursday } if(!flag && isFALSE(na_drop)) ans[year < 1871] <- NA if(value == "timeDate") timeDate(ans) else format..sdate(ans, ...) } ## GNB: added handling of historical dates before 1971, ## including 1965-1970 for which many sources have it wrong for 1968, 1969 ## ## Last Monday in August replaces first Monday in August as Summer BH. ## ## 2023-12-04 GNB: ## ## Between 1965-1970 there was a trial period of moving the Summer BH to 'the ## end of the month', without formal definition (see wikipedia page). A ## royal proclamation was issued each year for the exact dates. It seems ## that they used the Monday after the weekend containing the last ## Saturday in August. in 1968 and 1969 Summer Bank Holiday is in the ## beginning of Sep: ## see https://api.parliament.uk/historic-hansard/written-answers/1965/jun/03/bank-holidays-1967-and-1968 ## https://family-law.co.uk/significance-bank-holidays/ ## 2 Sep 1968 ## 1 Sep 1969 ## TODO: add the above! But need to check reverse dependencies when doing that! ## ## The formal definition as "Last Monday in August" is from the 1971 Act ## but the difference for 1965-1970 isa only for 1968, 1969 as noted above GBSummerBankHoliday = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ## established in 1871 as the 1st Monday in August, so ## ans[year < 1871] <- NA or empty :TODO: ## didn't exist before 1871 if((flag <- isTRUE(na_drop)) && any(year < 1871)) year <- year[year >= 1871] ans = .last.of.nday(year, 8, 31, 1) # year >= 1965 if(any(year <= 1970)) { ## Summer BH on First Monday in August ans[year <= 1964] <- .on.or.after(year[year <= 1964], 8, 1, 1) ## correct for 1968 & 1969, see comments above ans[year == 1968] <- 19680902 ans[year == 1969] <- 19690901 } if(!flag && isFALSE(na_drop)) ans[year < 1871] <- NA if(value == "timeDate") timeDate(ans) else format..sdate(ans, ...) } ## added by GNB ## TODO: it ignores, silently, the argument, not good? GBMilleniumDay = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { .Deprecated("Use specialHolidayGB(1999)") ans = 19991231 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } .gb_oneoff_holidays <- c( "GBRoyalWeddingDay1981" , "1981-07-29", # Royal wedding "GBMillenumDay" , "1999-12-31", # UK millenum day "GBQueensGoldenJubileeDay" , "2002-06-04", # Spring BH moved to June 3, # and Queen's Jubilee on June 4 "GBRoyalWeddingDay2011" , "2011-04-29", # Royal wedding "GBQueensDiamondJubilee" , "2012-06-05", # Early May BH moved to June 4 # and Queen's Diamond Jubilee on June 5 # Spring BH moved to June 2 "GBQueensPlatinumJubileeDay" , "2022-06-03", # Friday, Platinum Jubilee BH "GBQueensFuneralDay" , "2022-09-19", # BH, State Funeral Queen Elizabeth II "GBKingCharlesIIICoronationDay", "2023-05-08" # BH, coronation of King Charles III ) ## .gb_oneoff_BH <- matrix(.gb_oneoff_holidays, ncol = 2, byrow = TRUE) ## .gb_years <- as.integer(substr(.gb_oneoff_BH[ , 2], 1, 4)) ## .unique_gb_years <- unique(.gb_years) .GByears_with_oneoff <- c(1981, 1999, 2002, 2011, 2012, 2022, 2023) specialHolidayGB <- function(year = getRmetricsOptions("currentYear"), value = "timeDate", named = FALSE, ...) { ## TODO: option to return names for the holidays; ## maybe it is better to just provide separate function for that ## ## TODO: No, it doesn't make sense to return NA's. In some years there may be ## more than one special holiday (2022 in GB), so alignment cannot be guaranteed. ## Hence: ## 1. use sort and unique on year as in the holidayXXX functions ## 2. remove the irrelevant arguments ## 3. rename this function, e.g. to holidaySpecialGB ## ## here value = "" doesn't make sense, treat it the same as FALSE year <- year[year %in% .GByears_with_oneoff] ans <- character(0) ## TODO: need more elegant solution but this should do. ## Bear in mind that there may be more than one special BH in a year! if(named) { ## same as for 'else' with names for(y in year) { ans <- list(ans, if (y == 1981) # Royal wedding was a public holiday c("GBRoyalWeddingDay1981" = "1981-07-29") else if (y == 1999) # UK millenum day c(GBMillenumDay = "1999-12-31") else if (y == 2002) # Last Monday in May holiday moved to June c(GBQueensGoldenJubileeDay = "2002-06-04") # 3, and Queen's Jubilee on June 4 else if (y == 2011) # Royal wedding declared a public holiday c(GBRoyalWeddingDay2011 = "2011-04-29") else if (y == 2012) c(GBQueensDiamondJubilee = "2012-06-05") # Last Monday in May holiday moved to June 4, and # Queen's Diamond Jubilee on June 5 else if (y == 2022) # Last Monday in May (i.e., Spring Bank Holiday) moved to June 2 # Unique Bank holidays: Queen's Diamond Jubilee. # State Funeral of Queen Elizabeth II c(# paste0(y, "-06-02"), # Thursday, Spring bank holiday GBQueensPlatinumJubileeDay = "2022-06-03", # Friday, Platinum Jubilee bank holiday GBQueensFuneralDay = "2022-09-19") # BH for the State Funeral of Queen Elizabeth II else if (y == 2023) # Bank holiday for the coronation of King Charles III c(GBKingCharlesIIICoronationDay = "2023-05-08") else stop("should not reach this branch of the program") ) } } else { for(y in year) { ans <- list(ans, if (y == 1981) # Royal wedding was a public holiday "1981-07-29" else if (y == 1999) # UK millenum day "1999-12-31" else if (y == 2002) # Last Monday in May holiday moved to June "2002-06-04" # 3, and Queen's Jubilee on June 4 else if (y == 2011) # Royal wedding declared a public holiday "2011-04-29" else if (y == 2012) "2012-06-05" # Last Monday in May holiday moved to June 4, and # Queen's Diamond Jubilee on June 5 else if (y == 2022) # Last Monday in May (i.e., Spring Bank Holiday) moved to June 2 # Unique Bank holidays: Queen's Diamond Jubilee. # State Funeral of Queen Elizabeth II c(# paste0(y, "-06-02"), # Thursday, Spring bank holiday "2022-06-03", # Friday, Platinum Jubilee bank holiday "2022-09-19") # BH for the State Funeral of Queen Elizabeth II else if (y == 2023) # Bank holiday for the coronation of King Charles III "2023-05-08" else stop("should not reach this branch of the program") ) } } ans <- sort(unlist(ans)) if(value == "timeDate") timeDate(ans, format = "%Y-%m-%d") else ans } # ------------------------------------------------------------------------------ DEAscension = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = Easter(year, 39) if(value == "timeDate") timeDate(as.character(ans)) else as.character(ans, ...) } DECorpusChristi = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = Easter(year, 60) if(value == "timeDate") timeDate(as.character(ans)) else as.character(ans, ...) } DEGermanUnity = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = year*10000 + 1003 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } DEChristmasEve = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = year*10000 + 1224 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } DENewYearsEve = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = year*10000 + 1231 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } # ------------------------------------------------------------------------------ FRFetDeLaVictoire1945 = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = year*10000 + 0508 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } FRAscension = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = Easter(year, 39) if(value == "timeDate") timeDate(as.character(ans)) else as.character(ans, ...) } FRBastilleDay = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = year*10000 + 0714 if(value == "timeDate") timeDate(as.character(ans)) else as.character(ans, ...) } FRAssumptionVirginMary = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = year*10000 + 0815 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } FRAllSaints = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = year*10000 + 1101 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } FRArmisticeDay = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = year*10000 + 1111 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } # ------------------------------------------------------------------------------ ITEpiphany = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = year*10000 + 0106 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } ITLiberationDay = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = year*10000 + 0425 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } ITAssumptionOfVirginMary = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = year*10000 + 0815 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } ITAllSaints = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = year*10000 + 1101 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } ITStAmrose = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = year*10000 + 1207 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } ITImmaculateConception = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = year*10000 + 1208 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } # ------------------------------------------------------------------------------ USNewYearsDay = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = year*10000 + 0101 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } USInaugurationDay = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = year*10000 + 0120 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } USMLKingsBirthday = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = .nth.of.nday(year, 1, 1, 3) if(value == "timeDate") timeDate(ans) else format..sdate(ans, ...) } USLincolnsBirthday = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = year*10000 + 0212 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } USWashingtonsBirthday = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = year * 10000 + 222 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } USMemorialDay = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = .last.of.nday(year, 5, 31, 1) if(value == "timeDate") timeDate(ans) else format..sdate(ans, ...) } USIndependenceDay = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = year*10000 + 0704 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } USLaborDay = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = .nth.of.nday(year, 9, 1, 1) if(value == "timeDate") timeDate(ans) else format..sdate(ans, ...) } USColumbusDay = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = .nth.of.nday(year, 10, 1, 2) if(value == "timeDate") timeDate(ans) else format..sdate(ans, ...) } USElectionDay = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = .on.or.after(year, 11, 2, 2) if(value == "timeDate") timeDate(ans) else format..sdate(ans, ...) } USVeteransDay = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = year*10000 + 1111 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } USThanksgivingDay = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = .nth.of.nday(year, 11, 4, 4) if(value == "timeDate") timeDate(ans) else format..sdate(ans, ...) } USChristmasDay = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = year*10000 + 1225 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } USCPulaskisBirthday = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = .nth.of.nday(year, 3, 1, 1) if(value == "timeDate") timeDate(ans) else format..sdate(ans, ...) } USGoodFriday = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = Easter(year, -2) if(value == "timeDate") timeDate(as.character(ans)) else as.character(ans, ...) } USPresidentsDay = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = .nth.of.nday(year, 2, 1, 3) if(value == "timeDate") timeDate(ans) else format..sdate(ans, ...) } USDecorationMemorialDay = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = year*10000 + 0530 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } ## Fixes issue #6755 by Ian E (ene100) ## Juneteenth introduced as National US holiday in 2021; ## holiday on NYSE from 2022 ## https://www.sec.gov/rules/sro/nyse/2021/34-93183.pdf (see p. 2 for definition) USJuneteenthNationalIndependenceDay = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ## didn't exist before 2021 if(flag <- isTRUE(na_drop)) year <- year[year >= 2021] ans <- year*10000 + 0619 if(!flag && isFALSE(na_drop)) ans[year < 2021] <- NA if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } # ------------------------------------------------------------------------------ CAVictoriaDay = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = .on.or.before(year, 5, 24, 1) if(value == "timeDate") timeDate(ans) else format..sdate(ans, ...) } CAFamilyDay = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { # Description: # Adds the new Family Day # Note: # Check ... # www.sbhlawyers.com/media/ELD%20Oct%2019%202007%20Public%20Holidays%20and%20Family%20Day.pdf # Family Day will fall on the third Monday of # every February, beginning in 2008. # Family Day: ## rewritten by GNB ## doesn't exist before 2008 if(flag <- isTRUE(na_drop)) year <- year[year >= 2008] ans <- .nth.of.nday(year, 2, 1, 3) if(!flag && isFALSE(na_drop)) ans[year < 2008] <- NA if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } CACanadaDay = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = year*10000 + 0701 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } CACivicProvincialHoliday = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = .nth.of.nday(year, 8, 1, 1) if(value == "timeDate") timeDate(ans) else format..sdate(ans, ...) } CALabourDay = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = .nth.of.nday(year, 9, 1, 1) if(value == "timeDate") timeDate(ans) else format..sdate(ans, ...) } CAThanksgivingDay = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = .nth.of.nday(year, 10, 1, 2) if(value == "timeDate") timeDate(ans) else format..sdate(ans, ...) } CaRemembranceDay = function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = year*10000 + 1111 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } # ------------------------------------------------------------------------------ # Japan # ---------------------------------------------------------------------------- # JPVernalEquinox <- function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { # Author: # Parlamis Franklin wrote: # It's me again, with Japanese calendar minutiae I'm sure you've all # been dying to brush up on. The fCalendar functions don't include # the Japanese Vernal Equinox holiday. this is perhaps because there # is no easy way to calculate it. at any rate, here's a function I # wrote to fill the gap. # Notes: # Origin and End Date data from # http://aa.usno.navy.mil/data/docs/EarthSeasons.html # The function Vernal.Equinox delivers correct values at the # endpoints of the above data. There may be minor variances # (+/- a few minutes) in the intermediate values, because the # function linearly approximates a phenomenon that is apparently # nonlinear in recorded time. Equinox.Origin <- timeCalendar(1992, 3, 20, 8, 48, 0, FinCenter = "GMT") Data.EndDate <- timeCalendar(2020, 3, 20, 3, 49, 0, FinCenter = "GMT") Total.Seconds <- as.numeric(Data.EndDate-Equinox.Origin)*24*60*60 Mean.Annual.Seconds <- Total.Seconds / (atoms(Data.EndDate)$Y - atoms(Equinox.Origin)$Y) Vernal.Equinox <- function(year) { Equinox.Origin + unclass((year-atoms(Equinox.Origin)$Y)*Mean.Annual.Seconds) } # Nota bene: JP Vernal Equinox is celebrated when the equinox # occurs in the Japanese time zone (see, e.g., 2006, where GMT # Vernal Equinox is on 20 March, but Japanese Equinox holiday is # 21 March) # Return Value: trunc(timeDate(as.character(Vernal.Equinox(year)), FinCenter = "Tokyo")) } JPNewYearsDay <- function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = year*10000 + 0101 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } JPGantan <- function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = year*10000 + 0101 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } JPBankHolidayJan2 <- function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = year*10000 + 0102 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } JPBankHolidayJan3 <- function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = year*10000 + 0103 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } ## GNB - fixed to give 2nd Monday of January ## Also, combined JPSeijinNoHi and JPComingOfAgeDay, since they seem to ## be the same thing. JPSeijinNoHi <- JPComingOfAgeDay <- function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = .nth.of.nday(year, 1, 1, 2) # 2023-11-27 was: year*10000 + 0115 if(value == "timeDate") timeDate(ans) else format..sdate(ans, ...) } JPKenkokuKinenNoHi <- JPNatFoundationDay <- function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans <- year * 10000 + 0211 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } JPMidoriNoHi <- JPGreeneryDay <- function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans <- year*10000 + 0504 # year >= 2007 if(any(year < 2007)) { ans[year < 2007] <- year*10000 + 0429 ## ans[year < 1989] <- NA # but it was Emperor's Birthday back then } if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } ## https://en.wikipedia.org/wiki/Golden_Week_(Japan) ## Citizen's Holiday (国民ã®ä¼‘æ—¥, Kokumin no KyÅ«jitsu) is a generic term for any official ## holiday. Until 2006, 4 May was an unnamed but official holiday because of a rule that ## converts any day between two holidays into a new holiday. JPKokuminNoKyujitu <- JPNationHoliday <- function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = year*10000 + 0504 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } JPKenpouKinenBi <- JPConstitutionDay <- function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = year*10000 + 0503 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } JPKodomoNoHi <- JPChildrensDay <- function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = year*10000 + 0505 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } ## https://en.wikipedia.org/wiki/Marine_Day ## 2023 date: July 17 ## 2022 date: July 18 ## 2024 date: July 15 ## 2025 date: July 21 JPUmiNoHi <- JPMarineDay <- function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ## GNB was: ans = year*10000 + 0720 if(flag <- isTRUE(na_drop)) year <- year[year >= 1996] ans = .nth.of.nday(year, 7, 1, 3) # from 2003 ans[year < 2003] <- year*10000 + 0720 if(!flag && isFALSE(na_drop)) ans[year < 1996] <- NA if(any(year %in% c(2020, 2021))) { ans[year == 2020] <- 2020 * 10000 + 0723 # Olympics ans[year == 2021] <- 2021 * 10000 + 0722 } if(value == "timeDate") timeDate(ans) else format..sdate(ans, ...) } ## 2023-11-27 - deprecated; JPKeirouNOhi <- function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { .Deprecated("JPKeirouNoHi") JPKeirouNoHi(year) } JPKeirouNoHi <- JPRespectForTheAgedDay <- function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ## GNB was: ans = year*10000 + 0915 ## https://en.wikipedia.org/wiki/Respect_for_the_Aged_Day if(flag <- isTRUE(na_drop)) year <- year[year >= 1966] ans = .nth.of.nday(year, 9, 1, 3) if(any(year < 2003)) { ans[year < 2003] = year*10000 + 0915 if(!flag && isFALSE(na_drop)) ans[year < 1966] <- NA } if(value == "timeDate") timeDate(ans) else format..sdate(ans, ...) } ## GNB: TODO: this cannot be constant, see above for the vernal equinox. ## ## for now, changing it to 23 Sep and correct for known dates when it is on other dates, ## usually 22 Sep https://en.wikipedia.org/wiki/Autumnal_Equinox_Day JPShuubunNoHi <- JPAutumnalEquinox <- function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans <- year * 10000 + 0923 # was + 0924 but this is rare on22nd <- c(2016, 2024, 2028) # incomplete; after 2024 predicted ans[year %in% on22nd] <- year[year %in% on22nd] * 10000 + 0922 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } JPTaiikuNoHi <- JPHealthandSportsDay <- function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ## updated and rewritten by GNB ## was: ans = year*10000 + 1010 ## https://en.wikipedia.org/wiki/Sports_Day_(Japan) ans = .nth.of.nday(year, 10, 1, 2) ans[year == 2021] <- 2021 * 10000 + 0723 # Olympics openning ans[year == 2020] <- 2020 * 10000 + 0724 # Olympics cancelled but holiday stayed if(length(tmp_flag <- 1966 <= year & year <= 1999)) ans[tmp_flag] <- year[tmp_flag] * 10000 + 1010 if(value == "timeDate") timeDate(ans) else format..sdate(ans, ...) } JPBunkaNoHi <- JPNationalCultureDay <- function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = year*10000 + 1103 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } JPKinrouKanshaNoHi <- JPThanksgivingDay <- function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ## https://en.wikipedia.org/wiki/Labor_Thanksgiving_Day ans = year*10000 + 1123 ## TODO: if on Sunday move to Monday !!! if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } ## GNB: none in 2019; ## 2020+ - 23 Feb (Naruhito), but seems that if its on Sunday (on the weekend?), it is moved to Monday. ## for 2025 - 24 Feb, ## according to https://www.officeholidays.com/holidays/japan/the-emperors-birthday ## 1989-2018 23 Dec (Akihito) ## 1926(7?)-1988 29 April (stil public holiday - Greenery Day since 1989, Showa day since 2007. ## https://en.wikipedia.org/wiki/The_Emperor%27s_Birthday JPTennouTanjyouBi <- JPEmperorsBirthday <- function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { if(flag <- isTRUE(na_drop)) { year <- year[year >= 1927] # don't know what it was before 1927 year <- year[year != 2019] # due to abdication this holiday was cancelled in 2019 } ans = year*10000 + 0223 # Naruhito if(any(year < 2020)){ if(!flag && isFALSE(na_drop)) { ans[year == 2019] <- NA ans[year <= 1927] <- NA } flag_1989to2018 <- 1989 <= year & year <= 2018 flag_1927to1988 <- 1927 <= year & year <= 1988 if(length(flag_1989to2018)) ans[flag_1989to2018] <- year[flag_1989to2018] * 10000 + 1223 # Akihito if(length(flag_1927to1988)) ans[flag_1927to1988] <- year[flag_1927to1988] * 10000 + 0429 # Showa ## TODO: before 1927 ? } if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } ## TODO: check JPBankHolidayDec31 <- function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ans = year*10000 + 1231 if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } ## GNB new 2023-11-27 its absence reported by Sylvie Lachaud ## Moutain day 11/08/2023 : is it missing in your list ? ## https://en.wikipedia.org/wiki/Mountain_Day#Mountain_Day_in_Japan JPMountainDay <- function(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) { ## didn't exist before 2016 if(flag <- isTRUE(na_drop)) year <- year[year >= 2016] ans <- year * 10000 + 0811 if(!flag && isFALSE(na_drop)) ans[year < 2016] <- NA ans[year == 2020] <- 2020*10000 + 0810 # Olympics openning (cancelled) ans[year == 2021] <- 2021*10000 + 0809 # Olympics openning if(value == "timeDate") timeDate(as.character(ans)) else format..sdate(ans, ...) } timeDate/R/base-difftimeDate.R0000755000176200001440000000435714263246023015645 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # MEHODS: DESCRIPTION: # difftimeDate Returns a difference of two 'timeDate' objects ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # difftimeDate <- function(time1, time2, units = c("auto", "secs", "mins", "hours", "days", "weeks")) { # A function implemented by Diethelm Wuertz # Description: # Takes a difference of two 'timeDate' objects # Arguments: # time1, time2 - 'timeDate' objects. # units - a character string. The units in which the results # are desired, one of the following: "auto", "secs", # "mins", "hours", "days", "weeks" # Value: # 'difftimeDate' takes a difference of two 'timeDate' # objects and returns an object of class 'difftime' with # an attribute indicating the units. # FUNCTION: # Convert to GMT: time1GMT = timeDate(time1, zone = time1@FinCenter, FinCenter = "GMT") time2GMT = timeDate(time2, zone = time2@FinCenter, FinCenter = "GMT") # Return Value: difftime(time1GMT@Data, time2GMT@Data, tz = "GMT", units = units[1]) } ################################################################################ timeDate/R/timeDate-whichFormat.R0000644000176200001440000000657714535014667016371 0ustar liggesusers# This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # FUNCTION: DESCRIPTION: # whichFormat Returns format string called by 'timeDate' ################################################################################ whichFormat <- function(charvec, silent = FALSE) { # A function implemented by Diethelm Wuertz # Charvec String: if (!length(charvec)) # need [1] later; avoid problems in timeSeries() when rownames NULL return("unknown") if (all(is.na(charvec))) return(NA) charvec = as.character(charvec) # Specifications: # NCHAR = mean(nchar(charvec)) # YC : why NCHAR is calculated twice ? ## All this assume that charvec is very uniform so we only look at the entry [1] !????? ## rather, e.g., NCHAR <- max(nchar(ch <- head(charvec))) and the continue looking at all ch[] ? c1 <- charvec[1] ## 2023-12-09 GNB: ## c1 = NA causes error 'missing value where TRUE/FALSE needed' further below ## Hence check for that. There is at least one non-NA at this point, so: if(is.na(c1)) c1 <- charvec[!is.na(charvec)][1] NCHAR <- nchar(c1) SUBSTR <- substring(c1, 5, 5) == "-" # American Format: if (regexpr("/....", c1)[[1]] > 0) return("%m/%d/%Y") if (regexpr("-...-....", c1)[[1]] > 0) return("%d-%b-%Y") # DW: # There should be better checks on the format identification ... # [MM] Yes! there are: as.POSIXlt.character() tries quite a few in its default 'tryFormats' # and you could call it by using an even larger 'tryFormats' # Human readable ISO: if (NCHAR == 4 & !SUBSTR) return("%Y") if (NCHAR == 7 & SUBSTR) return("%Y-%m") if (NCHAR == 10 & SUBSTR) return("%Y-%m-%d") if (NCHAR == 13 & SUBSTR) return("%Y-%m-%d %H") if (NCHAR == 16 & SUBSTR) return("%Y-%m-%d %H:%M") if (NCHAR == 19 & SUBSTR) return("%Y-%m-%d %H:%M:%S") ## allow for fractional seconds: if (NCHAR >= 20 & SUBSTR & substr(c1, 20,20) == ".") return("%Y-%m-%d %H:%M:%S") # ">=" allow for fractional seconds (which are *not* read) # Short ISO: if (NCHAR == 6 & !SUBSTR) return("%Y%m") if (NCHAR == 8 & !SUBSTR) return("%Y%m%d") if (NCHAR == 10 & !SUBSTR) return("%Y%m%d%H") if (NCHAR == 12 & !SUBSTR) return("%Y%m%d%H%M") if (NCHAR == 14 & !SUBSTR) return("%Y%m%d%H%M%S") # Otherwise: if (!silent) warning("character string is not in a standard unambiguous format") # Return Value: "unknown" } ################################################################################ timeDate/R/sysdata.rda0000755000176200001440000040221714536356772014402 0ustar liggesusers‹ì½ œ-GYþ?°„5€@€AÂ…é>}¶È’äæ’=\KŒ a‹A"›øÁEAQ#"›D"Ä?(£€„¬7ûÍVâDYeûŸ®·ê­ê®çéªsæÌÜ3É™Onjæ|OwW½õÖ[Û[o?ñãÊ;w‡¥¥¥[/í¾Û­—n½Ûʯ»ßzå·ZÚ}i•ôŽÏ|Á žñÒW<ãÅ/ú­—,-ív•n³òoÏ¥¥ò8û•{£ªÚT”›zÅ>Eï€åÑËBÕeqÀò2Bý–KrUÿ€þ yÕ°FËÅ>ËË,ýíUe¯¾a1ð¨ßÛ´¼ra¿FåÊ=ËU›–›Êá>ÅJÎô4Ô7,Ì ‹åFÃMË£MËã}ŠÁÊݨF T,o*Æu{+9ìm(4Z)o-Þ¢8 P”•”Ë+õ 'y‘aÔ×pEJýM½å}JsUQhìÕ¦7< ªªV.Y¹¡a]Ëý>F+ÿ…9 Q¯ß(ò0È|µ"xÕ¸.×2ʆÑêª1Fåø€ =kõFô†½úqU=œÃÔ'E.ëÆµÒ0)ª`6VÐWÊ ªeEP«™7ÐJë#9,ô†=&ùÞÕ ÐhٴʲVìZøAý ¢VQÛÌÇ »1ªMµ6U¯!ÃQ¯nÅÈèár#‡8ST.#TÖÖf¥²ê Gmd5W‰ z½†ùU®\+•5lhTˆVÄê†G+7\nXQªÚ,㫌4úðY£ÚÀVC‚VÔcÔD+EëÕÏZéõÕ_‘’­”þJE‡7š.`°ÏJC.GÍ"ƒž¨%ùÀnôG C4 ŒC­9%@u[(W—]¹ŒÎ‡UéQ¯Î|¯ZAMÅö¨ªÛ2~–Q›>kå’¦í Q¯lªÆÕjÓ'¨Gʵ‚ªFçÛ@cR®~­½C£F¥„¨n˜PýZPìY+Ƽ$W­Ø¨°O QÕ'Ï2Të†+ý²´å¶  £ófS ã­¨MoÜDcÛùýf})ŠKãS³òßÐtM“¢=ìµ®ê»ÙrtÕJë«êAEÙ,5Рaƽº\в…¨_5‹¬¨×έ +Þ^”ÞÛÔ¨hf£2±¢+˜ªä†u«ì5Ë¥h¥é (*›V´Š¦ö6QC7BÔ줨ߴ!RÔëÑlôªFŸÒ@ý¦F…h¹ØT޲õ¢ºñáŠÎ·¯rãÃå8áÐ1”F?hæÃ¦n$Ï*[M/@ýV[Vdª’¡AðYUmð³úFmZhäʵܴØÒëõÌ8*ÊáŠxWšyQ×~»ÈÕ}h³-÷ƒùWÕl)ƒ:‡ò¬^ÑÎÕh´©,M¥´Ú׸n•å¨~VY«bU6‡àª•œ,ƒià * bmLç[ö÷)–Í@Ú j¼låò>ËfôTJ­èF yVª¸ž0Z~WB…™¨ö0Z鉂)Lõ=l€ŒêÁlôê¶‘Øy3­è 1ªÊPmhEúÍrYÝ(k»Ñ`TÚ7TÔÛ¨½z öêA€Ú« ´’ùbˆÐðc¦*1o”«ð³€¦²ÈLK„Vô°TåšÏ*ë刕޼îSÆaÇ •BU¡ÅP»WÚÝ ]izu-›’WTO£šW‹]šõzÁ¢öÄg¼Ø•¡cQ4QŸH¾_g¾ç´·l¡¡¹jPÚÏr¨ß˜ hXWeCP}o£V*¥aŒ­3?¨‡ú¦§hØZލ‘®¬ŒRúÕºæp`‹\g¾Îa rÏZé|ûe錣h)[€VÌr5¨^~iÕ×Ès£Øå°ÙˆFvU˜ªl´å £Vµxe ÝáÈÙùAk^éQm£Ê°k3hPw+Í¡j¢‘:ÂViЊbË, ÌFa†ßõ ÛóƒÜh¹9ÚÌë±A#óEØ–ƒÛ&j n ª‡£ñ =…*¬6Eá†ßíi EbRª*ÊüЖ«e£j4rSÎ2ÊÆÈˆ·g&ÅM¤¶·7l?KW*Z–­(©ÍDEc* ‚_UbT”¦ÿj¬G5P¿1œ3¨„³Q‹V®²³ìêÔžÑTÙöËHPFEëaêr;F·ëž(¯Ec3ó]Æh¥*‹PEÍt©˜U⦵)‚E§vsZƼ¨É7{¢µìFˆjÍ)1êUÍrµP…™!†f9DEKò!jB´Ò°® vêÕ`ÃÅ´e’ùªö`V­É~õŠ¦Ú„heÞ)[»¥˜YÛòµJ™ÐÕ¹qѯuÞ—k¹‰ÄFµ—L ª;ˆx)¸FµŠöëVi&ÚMäz½^ \ûгaPùF¶w˜Å2ÔE.¡! Ps±Ú •ÿzä†+}eÅÑ#X•Šb+:pG4à´¨¬‡"+s¢` Ö£hgÄ¢rh÷Æ|àzó¢÷Vѳ•æqPÔ‹:_Ef¥¢ý¬q-(\®±í|*¡ Æ\7ÆT7¬YFW)ŠuÃ"~Cü,ÖÃ*Bå*X7ªcQ$(E=††˜¥„bã0ð=QÛ8Ôú¹©¬Ì€s!™øÄÒ:KCQ, ƒäY¨]dEq‘ÅEvˆe­pTïtÇ{PU*ê·v|,ª÷S 4Œq(ëYOcU¤FÒ¾àU‚`6U(¬} }sˆ‹\#hesœˆ·F}¬¡rÕÔëF½T5Ä‚jl!UõZƒö‘]?Œöa *M¹VÕPA%*²¢¸È" ógq´¢ó@7Ült9ZŽð(nDŠÚû°°ÈU-CЈÅ-E”† ˜yA0ó‚`æ êÈ|뫲ŠÝÜ£¿ ×W½ªC‘Ý6méüÈ4s87ÔG-EЀd~LlTŠíÆÈZ¨‡µIé›Zn.HZ4À ˜/EH†b¾`«´–Ü[¶·l#nÙFv†›¹=`±ÅC,E7D-Å"ÔR,B-ÅšeXd³,ZÊØoÐ$Ný¨£óñƘ7Ôt> Ì¡A RÆÜΧÖyEq¥(Š+EQ\)J;‹]!ñöÜn`Œ*+öqÛ.reV{  +ã|3_‘F4æVtlMårµƒÊ’d¾of¾ä†¸9Œ¹íûExpYhÍB°R†VP+UîÕhdÄ[ iŒln8ò{ôm4æ’wDå˜èüîWÖ¨¶½²½Šx}ÇA½ v‚Ì–zÙÜ'„»€1ïƼ »EBTË‘rÕÙ ‹öZ„š^ø˜ÅhE£Ä‡³×BÆb¯L²Ê~t•-/›ñF‰Pau—ÕÛÁC„úfd^"4ˆ–>d/ÛÌ|kµ·‘e—Q-cg×Z>œÕ Ë­µÊµö¤<*êu6|UÏ,Œ‚*Õ *R6‹ÊØwΡ~]®j´ò¸6’©tÓ+Ø ë¼E}Ðe *Ñd¤F¤Ëö(j)‚Jd`-Bc6‹ÐÜÜ£¨yµAÈGÚ Ê"˜ù / Zé‰ð³ú~‰;ܼó¨íåPIÊU¯!ƒ¾Ò¢10D5˜>%25Z×_€F¦ €hl;)ŒF¤*ÇÆÃ„\­hi|ëæ€²Q#´XmÉë,B]€G(óµYF+ÒU`]Ô¢>Vlë-FÊ'û¡ZÖe̶ÚèÆ®q1jè¡AµY.ƒÁr„ú±ç§A¥ÑؤÎÅâ-è¡,¸µ)¸µ‘MdXË…5D‘ ºChèè¼ÊíW®˜å¶x+£½q- ê!0¨@cA%Z0ñˆäBi¢"ºª•Èn<·e݈‡™—¡>|֠હó)1rn$õ‘e+Üh9nz•Ýf^–gQU²- ‹Jü,k‘Î[{ˆ4н‚½‚½Âš/vC8)¶ˆ"¦ÖnZMƒj¸4Kufˆ¥(Άº%Ä6ª LJÃÁÛ¢ºÈ±xÅÒ4@•Ò*<5Ô[FíK,r…—#<Š‘ø´P37®Ü ²G¨bÄš^éö8`UŽeë@0‚`‘É~¥G(‡vi]ÅöS,‚#XE¨\¶Å-¥4½ùØøÀ4|Ú-’IVížL—JãëXHç{tÝFP «RQ\äžó‚cWu 1ªJEqU*е·Ç{"AC¤ØÕ˜ ƒâÕ9A%ZL«Q½ü…t¾çVõcê¹Å(¨±=ÉQ­6–kLŒCÏí!"²õù4‚ͼgkÎ÷üd¿j]Uq;__F:oÎÐáémå†s°‡M"(ŠôźaÜ ð(®ÊÊ9OŽj'ÞFëPíá?lÎ*;\±'Í3àêµy5P{Z¡¨*GÙ4Ž:ßÕNwc‚*ò¬±qâ4"™×åê¡Öù¦ï\ˆZ>Ò!ê•Í… U¸È55W*Ô<² ö¹ì&*#Ýp¨ª(êI6ʶgµE²Š ööÍð 6Ëp&U¹A;l_cìcæQlˆÁ~YÌ<TTÞ#6DlaÜ"Ø/+B9¤CýŠõ+>Ô¯Übl–û|ý°Ï­¨ ˜Cƒ ´ïDp9Ý£Øö©×bÙwël±ö*‚ÏÅŽµ×œÈ(Ì™‘²éß[öݲX\•‚`_©fclÿ Â*Úç*Ú·óJX_¢½°R,B™·±F ìШ]#ªÉF 7ÈrÀ•m`»Qù_ÔU JQ\ä*áÒ‡¢XE|)xÀ—‚öØ`qÂ!8$¸E](¨±izqUÜÊmB™§‹º·ˆ*%P}ÑUE(ótÉtÈW8Å]Ž*Å]pe^QœyEqæSOŠÅÊ6 NÐ0oÈV‡fßö°Šà Ç6-'(Ax N¹a9@Ší<$a}Ù%8T_i„ªÒ"T_t¹oÈW̆FEûæ„u|•: 7Oš”#¾ö%þ‡=(FäÈ@éÜê€ ·ºiP,C=^Ë0‰à‚¢¸9ŒøÁÈ-@i ì”"{Ê/Fc|šÀ"¸ 7â“ýŸìs·º’»Õe!T_¡JI#T®z˜ ?õPsñ……1_"0^U+}eìUUŽys0os튡¢X†ŠbA­Á)Œ¢¸9p7-ArÊ\Å[o¨÷Q¬ŠP晳Ep9=¡J±‰7P¹jí-‘öŠÛÏhoOÝHmO]‹ÐÖso™:jö–m,Xç{ËTçh8g}­Á‰G‘öö–隃EhÍAPÁŠ<0›È0‡‚ 4uÜ0j)Ejã,— (ÞWïWz5*‰  ˆq—tÁÅ4Ø2‹EÈ# ¡lt£¢Í\\féÿ ¸+í,rI¬wZkžQ Q5޲¡±{uÑ^àFR4×CT–¯šˆ,õœÿh)ênWeÁm”¢¸9vÚt£p‹NqsPë¼¢XmVàTÚ#X®>žVX„V±,B«X‚àè«g)”½8ÒšA¬™tË#˜C²ÀÕ+踷çÜ-à³dXlE¨È¡rYÄŸ•Í®˜!e³)[‚ËB,‡I4’V#EÀ²© ‘¡ f¬E‹à"a¯¤‹„=õ߈Å+'ƨ*ÅC?[ÙÐ`±äÅâ-¹*¹RkoéÉØ Ѳ˜G,ópˆUºÇÉ\tò(¶Q%]tòÞ°¡õ(Ax("aÑ1´| ã6b–MQ;Ê¥EpË#X.²ŠÕs1L`æÙ—EhË#Td¶Š•…P‘ˆ¨¨E¬\hqÆ#T_âŠÌWI—àÕW {ÙEÇBT‘gÅA¢z¥[‘†å"Qz=ºÜ×ëqSiP1B¦²G]Ý,B3ß^[Ñ·¢=nE{ÜŠ:Äëh)=»tO³ÁtÆó(nËŠb{èP…¤ë©Ï¼!ñÓT`Õ±FënèN"Cñ<‚9$a zêb„n˜@%Ö Y?mÙ!¨½ÌO/ ‘Ê ˜ èÝ×ëñf®žNËí¸X½Šz÷õ*Þ̹§“EèHŽGì*´£êQl‘gÁUý4‚æ«¢{Å­²r‹Ÿð*²M ¨„¨¢Û‚Êž ]´n8Æg|pxPÙ%SÐ*ºƒà*²ÝA@’g› ¡n°m‚,„ÊÕd^ Ší ô*Þ`û›Ø)?L@ÅÆ ûtK¢×çm¹ï•·ßMਔ¾;TsسÊbÉ+‚ϪˆÚôí"¾a'*‡¨™÷é‡Gq3ï7ö8Úh`ºø¬]N‡¨^‚°õ$¤êˆÜÐxb€ÕçÛÚrŸnšx¥1¶j#»Ÿ‚$϶Z,Bû)!b›&YÙ®¦Æm¹ßØOi#Þ– ãõQô£QeŸ:'÷|«eÀÛ²¢XEÖo_%nu± œc¨¯_áT×—"ö¬©P 7ž|ñsà6hâZ–8°*¡,= >Œü£zÞ*!ÿžs‚ vÀ?c¬Jº~8à뇊PUÒEÂÄ2ßGVÔ ²ëËÏ—cÄZå€o xƒÕxzP†º3ÒB&ž }ÓòÉ!oæCwJ¢Š(€"vTE±("Ï‚nZÁA{ •p[gH=$=Ší¡ºŸÁöíb5¨qƒ„7 ky€Ïqô†v‘K^޼Á2“âüÙ€ÝP6rCèéïØö•Á˜Ÿ=ç´U”¹wZ«sÒ^ºH˜ƒX¹*d¾†nûƒ\Õƒ=Ñ›¯!·Q#¿mÚ¾jDP{#nmFöØ;EP±GîØ{\)ŠâJQK^|[Ó¹íxC¶32¢.²Y(n)â.wG|ûCQlm4ò?ÌÛ¹X±²'Ãeô"ŒÞÈC„7d†hd×ô€!¹Ý rÃ’go(‚2dÛ#¾ý¡ˆ]·?!Ŧ{99‰h¹zÈFÜÒ"Ò jˆFÜIX?X_c¾¹0æ†hl÷aµ¬(μóÆ‚»¥ûX£\H:v ìiœÞ*ŠÕF{ÖT¨„{Ùî}R¬Èxßaìß‘ª²ãUZ1L<=l$îl•‚`«s%N¡pËÏ!`¾Æn·‚äïq(‚âÛÙ DØÎÝ’¼E¨\jmðUp^*WbvcìÞÙ ËU5‡$‚Ë95=‹X"ö°Z¦[-‚`dr‹Ðy‡,•Ë£(ók‡âZ®–©§K‚J´`âQ¤l‚àÚr¥ÎÉPP$Ätå†c+jZ@ö(²¢•úÃöíñ: 6}£‡‘!T¢aª ¸`R-»µ/¨Qݨ$Ù¸Øé ÁJànTP‰&t‚ ©¬ ©*ˆæp„'u\Åt~ÄŸ5æ9$ý— ’_U¢-?Ø Ñ°G\ðW{:UË®'Bj“@(¼‰G(lÁ#vC´ôaÑô•‚êcHç sžˆÝn.TâæËIÄtÞ¾úfƒuRÝw¨Ô³:¾¡Ä¸C^U‚°Ú4útDÆÃ*@a7  Å àaAÁh?Áf®ãA¿e⎣°ãyÐRÔ»AÉ ‚’ïã°‚ä¥l@m¼*M'± ‰Áˆõˆ4&T,AØ|ïôz(Ñ¿ÁsÙ•Œ¶ü*qw’Ja]@a·pI(‹˜ÚŒñ‘œJ]ëIá„Î#’y—Fï/W.(»!EÄIÃ"´ê(ˆyhí!ÐÀBËG‚à*±G°¾Fx•XP­¢qàNš`µq£ç»a™c‡|‹Ð"¼ Å·©ÜѬ‡ ‚Í\”Û¸Ó°*íÈe¾î|GXmŠe²ÜW:GrC¼¦WÚ#o 7×Óð†Ýíd Z™Æ>0UéÞýAîÍ{Þ£ ž àÌ4)ŠâÌ+ŠQ¾fÂ"ؾzvW—Ë!ü¬!RQE±Šöœ )ŒJ*÷_zʰ1ñ’€TÁE ‡X™Äg„Qwˆ=ç,·åžŸB„‡==kÌq¹Fø¡Œªçœ… ŽñöGå×€¶ìŽÉ@ÅV+6sà±ZÑõ?ôÉÎnÜ1– èpåyVŽz|&Õã6‰àðÀD3†œ+=ã38`¹ˆÙˆC}sÆî¨Z„vT=Š‹¬æ°‡7ï•p  ¶²UܲUÜ|å !’aE:Ä$‚»aiTøŒEpŒ]Q·„ÊxêB$%r««\ü^œÃ!™_g«Ê‘ \huÁ"°Óš èÄ[UîÌ#Ô^òÖæ$‚Áó+Œ2ïÏ Îÿ•;a ¥AýR±gu#T.‹âQŠC4‡Ä²YD²ýô¡–Bû¯#P®’ìš3à%:mZ Ýþ×r87|טE°*‡ÖžÞ#ñœˆœ¯´*€"ø¬$‚åªÈ&òЮÉ£&É!¶‡C뤚žCÀmOÄžCyD²BÅÚ«(6DžhÈýE‡.\FŠ{"A°ó5¨„“G9Gý Â+Cîr9´sózGµhT¬øéûjèBsÀúb¾ŽŠ:®‚Ò`nŠ`-ÉxÃE½ƒ"Ô¾¬3» žñQÔqC$(Eq-SoLwX¶Jë±sX˜3È8X‹ßpÄ=î ÂËÎ#ï`ÀPÝô €°×Ljï¶+‚ÏWŠ¢¸RFÎi-V¶߈¹Ýv’CÐC<æéQ¬Šâ–¢ˆd¾FqKqØCwÄôºÑ'+fŠb=ñE]=³õ°OvèÁÌ÷I#Ò× ÁŽÉLj/Áì±\àS¡ó;¹! TâÔ1ŽuïÔ 6üÖ#öHçYÈ‘*8}Oj°!A)Šuƒ*©ÜI¨‡ÖÏä© [B,^ƒðùÊ1 TRíîÈÆ*Q,±Û¾¥±Jײ¢¸–5A¬Q³<æ¾XcçfL¤=Áú"J<‚ 1 Ú0Ûë.rŸë¡lA’±(|–‰`€ÕfL–1ÇÖ=Eä*Ü!*‚9$‘O<‚•2&â˜=U=EH±©ïA‹€¢Ž"ñ*Šk™ÅKT¹ž"dl¼˜ynë±(t3ó%EPäe=Eåê/[³oµô—il"öÝûX†}wľ Eâµé†G‘4<Ф!nùY„Ö¾<ê¸j:D2ß±ë‘!ܼó(2EÆÁ£È8ä Ø˜{ÄsˆQÇ2µh@4ª* ‚ðþ² h3?ÄÛ¦}9³',Bå<"WÁ#T‚`—í,‰9ãïwÙ} @n;޾žôGÍA·h)B2d[´@àTm牵‘UV®!óÅüÙúæÌ>œÂô—ià¼!é<‚™w[™Õ¨‰ ©¦_p;¯(–†ç[Q\•Šbiä XP9(–a hY,‰ YßçÇ’¯ðž”Gq«T7sEq3Ï@ÀÎܘ»ÐXm:\ïÎû^5¶o䡈\U—+òßèë»áb“¢ˆÜ÷ËüesÁú"N5Š`¹ì†j_ÌÆ#ÔR,BâµYÜc`3¯M%iËâM 5Ëæ;îÍ n` n` n` n`ÝysÐÌKú¦AµÆ2äo”ó>‹=þF¹¾;¿ Ä«(®”’îëyIJǽ¥ÛP‹«RyVÉ“m8â«(n°Šâ›€•÷Сu€¾;ÚŒ•mŒD *á`IQÇU0d'Ë#((²“Õ×¶¨\lãÉ#¤QlwIPýÞöåz+9©*ê÷eWñUhS²ïŽå²Ìãq”;–Û…PÓì|É^É^É^Éžæ¥Ñ£j}}£\œyEqæù{è<Š3ïÎÃëN¶É+Š%ßs»f0‡QQE0‡>ygŠ<™D²Ÿ3'#Šâ¶¬(nËŠâ¶œ€Ñ“ã«h“K,¦r±»…G°ÈäÝÁÁ"‰1×㫨RÒ©EHm,BåªÚAè÷¸!REè÷øØ¦r{7q}UômýÊž¾ÙÈAq«¬x3¯è¾¹G±äÅ’—£—ÐFe –ÚJEWÅÚ«(ÖÞ+vm¹²[-`U¤2KpLmdvSÙýe|•Û_2$ûËAñ’ýe  ÉþrßÊ„ˆíg!$^¶‰ì*²Ý)F‚²(6üèe¿O7vû}Ý_%(næ}ÞÌûtÖ£XPŠbAɱA8_N¡=E$óxåVQ¬l9(Öà Ú²;¢ˆ3ß·ã(PdÙl{"÷Î;ЖûÎÀg¹Õð¬1Yè» Pr܇õˆdÛ^E°RÈ>lŸòêóÃPý>Ýlõ©h¡l°}X ì¶iB2”ָȂbCÔ磔‰Ýgm¾êò€l(ŠmÔ€Û¨_·QK^Q,y9i«2‰à²³"’y¼ì¬(ÖyE±Îg `ˆÜÑ`m|yàN=ðWßñÖ†ñðˆÜ¯-+‚ÊÆÖ–ÁJakËŠ ä™µÑcH£Ò)6][V„ŠlÏ<’â¥*EHPµIé!“Ò†|éà <¸ò¥`92BK:CpX›†HÎVÀúR×—¢¸¾ÜÙ vÃé<ôê”!9èQ¬Šâ–¢(n)˜¯á&æÏÖòqÔÐzã«øUA21g€eÚSêø†cÒ*bÏ#£§(nËŠ`}Iw£V ³lÁ¦Çεe!Ôˆô4EH{ek Ê¢Ž« -B2”³ÐèQ4¢¯è\hߨF¥îaGܲøž”¢¸RÅ•2â»KI7ž‘ÌãúR×WŠ›ƒCÀFñ· öåxBÙ(q­_F&eäv|à³Øž”¢XçAA±Ý%îá¯X€ß“ÊAHÙèv•"¤vw eÞ¢Ž« ìîjË]¨Ä"úc¾ã3¶!UA3O!ÜÌÇ|FÌ!Û…óý”Â[-ŠHæq¥(ŠÛ²¢X±3hæÜµÞ#(Cwv ¹_×%½ìËQØç¾øÏÃùטo)Š[Š"(y¶­ãœäqæ™Is“2v{7è†tŸ(!ÉÓ-$EHòÅ2YSÔq¯EH±éÆS7*¬Ç@$ú´GãLþ='ùM|Ët'k`<ááxC\ÇN  ¯TxŸE–¸=Š@|»qÁ%n"É{é†G‘nxµÊU¢ØÔ;” šJ äÉ«÷âû=–MlDAA‘µåÁ25_Šbó¥(6_ƒe·Þ‹nÈÖ–³’![vö‰×®-#ñZ„ŠÌ«=B•ÂV¤H£NµPá^4ç° ‹ÕƒÂÆ[&%… ÏR‘Ó:ÅU©(®JçKŒËE¼xWŠ¢¸¥ä ¸e `R n7 n7 wtÞ™óò²…¾öÅ%À²ô̈GPPäÌÈ àÖ†û-+Ö¦pCÐ ÙIxÙI‹Ðú¡ Í<Š­"Td‹:ž…*¥ ï®êB%=â1(éNVÁ·'Ùÿò(®/î·,.Hz‹L6¹<Š%¯(n9(n)»QrãPºM.xy¹í ä­2Ál°:®BUÉv|•(®ˆGqÓS7=EÏB `ªJ¶OÔ…zt3hУÛ:Iã9$Ù ò(®JEqUŠo*Š!)îÝxWŠ¢¸RÅMOQ\_¦×ãM¯G‚ñ–=·Ÿ3OöSál°Ûã½^îVxÔqªe¶[!¾ Ø"¢lÅmYQÜ–±l ÕnHç †"=ºý‘@²3‹, J”¼ÛjÛ8'^0åìù“ PEw|õð÷(–†¢XŠârUt9঑eg`æÉ²³ ¸€ìQ¬ØŠbÅVÛÃ7‡€©¬¸©¬¸©¬ì™}0J©è*q†6„E£1UÜTV|ÆQña¾?ež­Áz„€­Á Âm¹r«©$Ð×Ñ£Øn("ÙÀëQŠÚØ•[r\ÔíB}êoãQ\dƒð°GQ\_ŠbÉ+ŠeØç«Ä}nÙúîmƒ0‡÷¨ã*’ Zdr€Â#xÃ$"ÏÂS΂(<Š[Q¬¢ŠbS™ƒâæ°:loŸÛÞ>·½}÷"]¨½c²ÜÇ“}n`ƒ—SĈjð=‹jðÕ2µ¢‚ €GÈæu®,ó=bˆ òJAHæ{VQ‹Z„4ª ‘s£ÁJ!çF=Š‹< Cá‘ù€*|TÉßÔàQœù ¸sØÃn? Ä6ïÁ²Í;÷Š`S¾hÆ#Xd¶¯§(VQE±Š*‚µœBÀ¸=·pä²bœI ì7¦øøP£ñ£Ò,EH¼Ô|9Ì—¢Ø| ÜÜ•‹îš)B‚J#R.¼w£©M!µ±ú`‘ÉÛ¨=‚’/ˆeò:çà n8ä–mÈ-Û[¶!·lCë{ÀnH‘Äî‹[Ì<Û —gÅ-…I"¼‡¨(ÖCE±*Š•MQ¬l1Aa»1äc¶¡]ðÇW™£+ñû‰Ò…‹dÃà‘G žGzâ —‚Õ›Ü j*DͲ"”ù‚‹ÕâY ç°IDšÝ^T„Ý^T„tÞ"¤ói„šµ½Cn{‡Üö¹íñ]Î7°#n`GÜÀޏuŽë@±G|?E‚ç£çgŒ^Á­E$‡x«EQ¬ŠbpØÃ·‡#nG6,»ªdâÛ@‘áñማ”7)#¾ibPíø[€‚.²ŠX»ÜjQ„ônµ(BjS“&Yi”ì¨bñv 7½mY£ÖÇUiP½Ó‹:DãîN¯ê™Sê± ÆîTK\)݈]8ït`R×r€èU°\äèŠGq-ç X&EQlçÅv^/¶<þüÀ¹»ã«f e8"þQÎ;ßPÆQS!xCjÙÁÙ¨Aµ“al¾R¨n_Hb¾Ø³`° Ó¨#H±-BÚ›FH±­'’/X±-BŠ]†ö£á²³‡Qæ‡Æ¾D+œCñ„‚ªßó˜@v[M¢íÃ*Â9¬°n„? ©G‘ÚxÅKöaźáQ¤Eºát[õ^Eì¡ zÕŸtDÛ —©e.SË&¨@ãù4BSi‹†Àè%Q‰ÞQh²½!Â7D{¾Y¨#H± rÆ' !·½©¯É×(Ö(q­G+œCq’ï!Éî-o±F¥Pi–ª"[™I„u£ð ßÖ²¢¸–ÅU©ˆW¥¢¸*Áª¬ÜÈœ `\ïQ,ÃÒ WUU˪ð P♣•Š«zfÓ$Vì$BK¦ Dv’z´KnRœ?P›ÁgÁÝ bR«¢Xm2Ð(E±F)âÒ›Ÿw–Üö–tgDP=‡W ðû8†r€ùÀ Kê.èÌGÔb+ŠÍWéö»¤›ÈIw+Ò­}…_El!CÄvF²Ë<Ú4ñ5½4BMOlz‘Z®Q,¨·Ø;Ž{¯*ÐÎH¡ƒõL ̶lŠ`K!îgÁ–BÜφ}>Xâ6ˆ£úÔÇlèÞ­ƒÕfdǽUÜRFdPÑ·.²8Ä3mÈß\£ˆ=‹Iƒ`!SIÇ6‚*ú¬½aÓ"t’+àFrK¢zœ<+n(ÂÏ"–-X6 ŸGHm â§çjæqÆËBÈÄOÏ#RËØ«ï^ç õ° n?Åæ‡^- ÝÈA±äÔ®ÊwI!lm‘"w!87„b-¶‡¥½ßÜ"èÀ“D#zCxÕ"èö ø,¼H¨(nDŠâ–¢(n)–¢ˆºý(‚jÃ:_~:x8à=ìê}V‰:ÄŠ#[lw~?kH†ÝhdvÍ¢€Ã ÆŽ‹ÌÜ™.¬¹ ø ë!?aí2_Å2~ù¦ …°ðˆÜ°ÁrÑ1€ è:•B0Eõ–±O#¤‡ÔƒË!V•ØM+@ø†ÐKË!ôÅR„,[!£G}±À¾Xaµ!§pËOŽ[‡Ž9(–|€ÚU9ÜÄ‚ç Â[-)ão¤tÚ‘¯¢¸Rܱw`m’EþÏB$Ïa ½>b9Ä»K2$ÁC<Š[¥¢¸é)Š›žC é)bÒ¨PÓS•­"/Ë›Gð*6¨X ‚só! Š2º7óÂú™¥¨lgDâÀ16`ì+±«úüY݈=«Á±Í¯Š¤ñC¦@ÔCÁ¶\#z4‰ðØFó ²½‚èU(ˆMqÿ•F¨9(‚™ÇA¢W‘JÁ^ÁŠ-HÀœ,„ ¬é=Ä^ÁŠ`¥h`k—†.,-,ricH¶Ñȹ ÇÙà¡,ªnä ¸¾ÔV€‘,íqOø$‚Þ³))[·ÔN×#ën ÑÈŽˆð Wƒb=L¡zï¦Ai0çÿÂÎÿŠÈ³p3Wužyø;Ú²"" Ü–A=dÞnÄÆ6‚`Ÿ2²Ã`E]„|Õ€?«Á·6×hD¼Y’ˆ5"6ÄÙ÷IáÊ{9¡4$4=̼¼á…! }¨ñR n°%Jeµå01·ÉÐ±Ø ¡{̈–Fv°D¯â¨öàš!k£(¶Q;‘‘ƒâa""^ìZ¯Ù»ÈAÈTìD†"R•صÞDª©·h—‘4J³J [J‰ßQ8Ô³Æ9[WRànaÞ óÁÒØ ‰5*Ág±“&c;X¥(ž;Œù!”$‚Þé9(Ö^E¤ÈxMO|VEŒ^‚ÏJ"((AqÓ“ Cp¾¬JƒÉ»/$øHŽ"ö,h7ÅÆAQlÆ!Aa»¡ˆH÷°ª.˜T 7°'QíÀ›/E0ó}r¶}lãUâF4 »œá- yw0\œÛõ(\.æŽ;æÃE°Èì<­°GäY D²ø+ŒÁrÑÑט£ZiCäYð}R¡W ¬ÁZ.Ø9©$‚ó”±s[%ÙH ¤óŠp6Hÿ•FhäP°ƒWŠXáÉEÈö¦2Ë;x•ƒ˜ 3Y£ewî&*òhÙ;»Nƒ:nÕ²E%\x®¸-[„zØ$‚ή«E‘FyD¤Q¯G=‘ h`=ŠjÙ"4"R„eHKõIñˆÝÙ ‹P×–…X6Ÿ^‚õ%®¿°¾*¼ 3rɘ4 ë¯GìYÈõףȤx™E±ÝðˆˆOðˆÔ2Î4Ò¬”>>¹0Z¦/T¢ÑWFxÃzd"­Áƒr‚  ŸEhTiéY4$hŒ½û²ÔûzIJ15b9“2ƯP‹ÌÆl¡ÖˆÔrA¼W…Ðèk¤QÝÈU „Œƒ¢X âÒœ…¢Á’GH± âÒì2_ñ[ÎBȲÄ¥yµˆU%ZY„;ß¾>Ôò*Q,ùµ«²p…±ù’`€(ôh᫈]…¼1³ï\!" è;çQÇUD†=8üV7Ø5ª‡7¬=Ь¢¸Á:¯÷zņ©‚ íÕ€ŠP¼$Ö¢E(p®GPP$p®GPP$p®"`£±"C¥ˆÙx IAZœi4H˜Ã1-ó’i„ö³Ëá:#" ¸—íQÇUDPÐGÚ#R•p­Ò#¨ó‚ Î ‚:/ w¨¾è °àƒ@ ì9"&¥0ÞéP†i„LŠEH¼ŠðUh·" Å#=EH,b9Dçn>ÌA±pôЏ °²±Qei'à";‘A8ä8¤EèÌ£G$Øö*‚â%g+ªˆ• ZQED¼Ðc|¤sáU䈢EÈgd¢ãB¯ûQéÂl³ÁÅêÄžµÎÖp–|ÀYògÉœ%p–|ÀYògÉœ%p–|À™ƒ4è0•‡G¶.V ãlä,çª÷–v, 5ª1H#d r–3Dø*t*Ó#¤‡9•éÒ½ÌBHE r*3 ±J!#qáÃÒ(±Kبçß 9z™‰Úõ¥fƒØ´h€Æ½ÀÊL¢šApdîhæŠØ³à"FŠ`!&(äJ:Ò€Ûä†Xç±ÂѲ"¢óx´œƒb“¢(¶ŠˆâѲ".(¬‡l´,.Ý÷ìa^vCxb×"t,×#(Cr,×#(Cr,W0°Š  ÉÙÛQï€ BŽIITÂNªgÞ ÁªrHÖ{{îl|Ö˜—‹zõˆ]}*r{Ö:#¨½cü.¿Q±{|ŒÝãcìc÷ø»ÇÇØ=>Æîñ1v±{| ƒ¸4 FÑáw¿‚Ï*ÈÁáÕ <Æ–Øé($B¡#ÀYØ‚½* eéR›‚7|ô öˆdžCô¨#‡é|AŽL¬{zUA®’Pçè|J&jËPQ,¨Ñ«âZV J:ð"žjI#¸Ì’B0\†"`Áž(Å v!" … ¿ùCOšy ãòÿ—E¦'êUí×2z[Š ØAu^Ôyƒ€YV%/ˆH£€îg‚à²XA×ġݮbWá¾’¿äË#xC3ñÁ•bÎÞbC46¡˜9Â&eLV¤Ý»«ÀÄGQÇU *‰ 4’ˆH£µµwlÃYSDÄ›@P7’ˆW EððZb™_gĤ×RÜ‹ÒÀ:¶¾C ÝΤø;ÔÁZ.Ì`¨‡‹Š³§K‚༡ ÆÒÉAñüKQdzÐб`±tr©JAq_I't!bW1iLö¦/é² (!{X°@@9ˆT%ë >“¢1‚̫ܖ¡IQ«¢øYŠâªÙ©¾!;|Dðµ¼” ž•N"x€Â½å t¾Š x‚9,á¡!A0hž"" <<ÈA$ó 7¢7"Eq#r *AíegÛW‰ˆÚt!8rPÄ2¿!vSŦ#»…&tŠâ "¨ó™;ä ¨Ø‚ b ‚Š-› n‚’ÅkNë`É›w/â¦Wá—aø+GúJA((óÞ@lú\7ú\7Æ›p+ya: ‚ƒ@÷V>0kSÔqU‚Ê–DP†IDŠ\#XË‚ ŽñûF="’O XËIÄ+eƈuôìˆý.ALPpÜË_9âïyñ76ZDzXÙä‚zX°óæ«@xÖ&S„À"ò,|¶=‰ ÛOŠgˆŠP¯¯¸¯´¨}eÁ޽+BÊV°³íŠˆnàì9™¯‚mÏA¤*Y¯W¤"£”zþѸÞ5ÃkæŠbíUoh°J"hRÅ3)y÷"\ N"¸ñ¤(V›álÀƒÃኈ4Jè.˜ƒHæ(n9(nŠâæàèÍA=L".Þ)Q›Ù#è=«ˆyC "^|\K߈ Åæ_c»×æ_Šâù—"؈Á–’D°¥‚-¥².Í ÞA”¼ (yóbVÜ`+2q¯"Å-…¼œÝ"è÷5¶û_‰;ÓØÎ¤ÀÀ½Û¨±9Ë s(ˆÜ0 Ú$T›$ê(¬JAP£ ¶W‘|‘ªL ^)3F±6cˆu— "(<]R„ŠLgR‚H7Z#èìšDðýØÎ‰`¹,"™Ç(2+W ]õEŸñìFj•ŠðUd Fñ&—""(‹ØU¬Èd˜j+2 b£¢4B6ÊN‰ö&P$Þñ2õ ›×¹èðµG‘özUŠ ¸*2–W¬¢ÞÁ£Hò!êA„ìFŠfR‚h¹ºVìF"Ò(P±¾–dÆ1óˆd®‹f!’ùŠÚWŠÚ—GQûR<‚Í|[CD”mJ„VS=bEÞʰÂc  jõDÁ–¢ˆ][JÁ–’D°¥‚-¥²žÕ ÅÝG°R*ü‚{Ak°•¥J{¾c}wp"7¤Èx-R„LÆæµÂ4þ¬^Ò›—Û•vAZ²­™' .gZ÷jï/Œ+bEN (Þ$âåšÁÓ¦‘̯7BÒ`s"P-׈tˆ²ñu£Á3#¡Ù"–’s‹È a6ö*ÂW¡#oY(šøxÍn[BÝMAâ³e¡X¼õ¬ÇlIÄå2/>.{ŒG±Fé;‘áU=2¨T"S©æ|³¨Ç³Ñ≼µôN#ØÌ“ˆ‹¾EQT8ºyA0ŠVç©”"9œÅí+ÅíKQܾE°%—ü”ˆèF‚]›"–ù ˜ à,@_Š ¯bs"þ¾l‹†hN¤(žø(‚(‰`¹’¶A°¥Töݦ îF¬/ADòÚ­°ÎnäܼRh#b³y7wY[Ðô±[x†d¢Z˜(|̤}cóÖfªcs0Ÿ\UÀ… ÂΉpæÇµ Øë‘cM¡`€±g!ŸŠ,;‰ˆ4àa^ Îña^¸ ºTÑÕ ^)¡Ã¼«E¬È댘 ÐÇX_˜ŽnHgˆI„x²Rl™<¶Üà Ð,„Eg£1–p‰@RQ‹È³ºŠè/Œh:M…â9¬"Vä!šÞ*bE&GA¢&z„LeAB#f!dE Ñ#(ÃÂúo´Þ’ãQœÒîëg_¾©ôDŠ:®Še¨ˆä°€ÝC »Q JQlôJ7Ùg7äº&Ö¨4k°(Vlƒðº¨"(^‡Ú­RQ¬Š äÙJ…"˜y Š7½$BÎ Y ªgÆlP¬ 80SÄžÕ`}­ÁF”D¤–ñpÎ!ܾ’6½Õ ¢‡k‚ˆ²M‰˜Ý QV6b-.™–|õ ¤]<Š—Á¦—D,‡Ý¶/Æ#ؾH äI‹¿¨Ep“«tÑcHa°Axõ ä«¥‹è+eŒÝêááwÉçæ¥ó $Ï‚'¬³PÇ ;Ô¨$‚ÊF¶d!XË$¢K"õ•@Pm’jÔZ tšÛ#V®uFDÙðܼäð Doˆ¼³ÒyAôYp*m<œ… =‹È áqcâY¶"" "Æ"èΔƒâY¶"–yÆ#&nD$#ºx„ìaA¶d!d ¶Å#(Þ‚lŽ+ŠËÕs޵áýJƒð¶Ž¢¸*{fÊ +EQœù ö"{©‘ Û:DE°Èµu¾g'¸\¨„»·Igˆ=ë.:)AÐW‘FAMâF”ƒâF¤(nD‘ƒ¢¸å .ù.Ätc:„âc{Ä2?÷ˆÚ 6ksK¾Uh®§(žë)‚-%‰`sH"ØÁæPÙs >E¬AD†tÒ0=>5«Ï†N(‘™dÁlŒ‰wŸA0ž¹ ‰ b'TlAP±AÅ6sE°R1É£÷ Âc€ÊMFȳð<¥2“¸DPÙÉÖ((Ò"8î­ø<¥²ól*“êFAÝH"¨6crê9ÁZ“Ñ9ˆI~jUtLŽ6¯ÁÑŠX×±öEg9)¶ ¨ói„´·FÐÁ ¡FT@‘‘Âhi„B>zDŠŒ=¸*;3EñŒC) ùèÉ! ùè²i„LJAâ:z%_’yŠ¢øª¾9¯ýôÅjcP 5ªoæИ+ŠÅ ¶Ã0¦ôgK!Ÿqô]LÂÏ8Å3E°%l)I›C…Ã0z›C…Ã0z+¥Âa-‚SiAУµ¿‰Eh„÷ûfgî¨öÍŒÅZ´ «©‚à¶Ï'#‚ ¿M‚j“DD 5jŒÃ0f!XË)„mïGhÌB¬¾`˜5B(B£G,ó뉠ƒwßÎS˜Š&Q6<ñéóÙMŸÏnAßž¾;ä…*…žÿJ¡:ŠÉ|Ba=B‚R„¯B=ŠgŠX¹àÔLË!Ššè2i„ŒCAB#z%/Ó xÃ’Œng$V›š¨^ÅŽä„ão$ì‰Ám‚*—Ñ´b`G_ì*Ic•(V¶U#Z®X{sP¬½Šbestm9(VìDt#ˆ²M‰ 1WÄ2¿Á/›Œ ¬½ î \t vCÐCQ<…Q[eÁ¦—D°}U$ ‡". Ð;(‚õU‘€šCœÑÌd¤¯s­ÑØ(Ì‹nánæc³¿ ³16Þ³ñddÀO ì Ûù19D©Öò˜lð§ x(Ï!Vdfé¨r`O.À"§*r! Ú,¸"$Þ‚7H!¼,&ˆŒŠeâ* X£ ‹ Ñ"ã`QG¹q{X‹ˆÚ$ÒC‹ˆL‰ˆ/XІ›Šg7ŠâÙ"¦Ø¤ÿ*XX ELI'•FLEIÿU°°ƒúè H¹s×ÐÌSЛk<ŠõРºN íìgÃÖ&…°Ôo‚nZŠH×ŵjD‹«hŠUTQ¬¢+ª(VѱÌÓZîFD§C8êo"EÞ¨CáJa³›¡uL¢WÁí*EñFQ<…Q[eÁ¦—D°} ‚í«²/LgtŠ`U "âÅžº‚à”shæ)°_6¨€+íC»3:_A0 Çoš ùy‡¡=aíü˜œ×S«rLœÖ†|Z1äÓ ADç pf>Pæ vøzÈ'#ŠÈUødPB’·“rö=P¬i$½!jËt&¥µå$‚ݨ"–C¦‡x9BQ€)±ØiÄ2¿!P<QOF1'=‘EL{IwcSÑnÄT”ôDÅ‚¹=ŽXÅ5²À8$Ü×K"8ªñi… ¸,¦(®ÊU¢XVh¹bÊA±F)Š5Ê!`ôrQ6A¬\´–»Q›)\ÆÌA¬È1ÅfMÍFÖň^¼ÅsEñÜAÌ|EÂŽ)‚-¥"aÇÁ–R‘°cŠ ä+vlÄ£„„ÝcFÖáj9ÞÈÕG<°gÚÈÌà(EìaGvZúJAÐïkÄç#~ad·?°1gQ‘"ãUâ‘V°ru <ãñÇÈÎ8`¹Ò•Kf0‡Å2ñsPD®Âçn!É+Šk¹`Ñ™ò½!jË¡¶ljËI{=E,‡L7ðŒ^©¯)±½iÄ2¿!P< PÏ1'ÝM1Å&=‘EL{»Ó^ÒIYDd؃GFÎM+ÖÞ±Ùw€Ó E±ŠŽíys𬱙ŒÀ3c»ïÀ®êBpî ˆg/Uå XòÍa¬6ŠbÝPë†CÀ²å Xmò+°‡9ˆéÆt¤ÊA¬ÈíÅþQc> óÃcÓ©ÁJÉ@m;¯(ž;(‚E®H+E°éU$Œ•"Øô*ÆJ¬¯Š„±2¨€K‹cÆÊ <×ó÷¨ŽÝa xC3­ÀÊÆÂXùaÌÏŒùð{̇߂`HŸ„tCFæ°×³ Ê"ö¬Š€j>ð’Dp,jvV„ZJÁ)"‚J"zCÔô,BMÏ"Ôô’özŠX;ÄÛ…ˆÚ`OÝÕ Þˆe~C x (ž(bÍzéä ¦ó݈é<Œ:•ƒ˜ÎÃފ x ôZáryyÙ¼á%žq*Ñ’Ž¢x/;D%G=„zÈö*Š÷gÀsPüŠºÁ"w"pÄCQ¼E¢þTh0%¢9ò«F)j›åL5Ê!–ù¶YÎDD¦Dñm&bEžE“Ap2¢(žŒ„¨5wQkî"؈’6"x< ÏnB„nXï#˜ÃBŽåv TË‘gñ40DäYÀ DÏb(vvu¨>L²¼B„šyO7Q¬Q! `²! D°¯TÄrHeظxa¯7=Š÷è3Ëü†@%è¿,êþË"¦Ø±?@&b:Ÿ7ÏDLç»Óùø(zˆ x ³Î•­ÜÂK® Â¼g$>¢(¨4Kp(~–y})ød$Å“EñdDlDI‘ ØRÁ–"¶” ½9DPò‚˜xá °Û¬ÈÀ•Ô!p8TQ¼Ù"" °Ù*¨Nš„^e¶Z°ŠŽÉ¼² û)ŠâýEñîmˆØUpܫʞ7wÄÆ ¿ fžN—Ü[ìaÿ•F¨È5нŪ§ÒH†!Ŷ¨ã† Á‘¹¾úœ\œš(Ö(‹ˆ4’ˆÞ)€EH,B(‰`—­ˆå°C¼]ˆ(pKX%Š=2Ëü†@ñœHQ<'RÄšC쑉˜Î°e³ˆ)v7bŠ=¯EP†…ñ25ª4³›øô¢ Ò„¦o¨¨ã*ø,M+A‹BxvÃÞo"’ pš;DqU*Š«Ò ¼H¨(Öëh‚‚{ô!"Eñf9A=tˆežÕr˜ÁQJbEÞ‹—M—JhKQ€%DPò0Wˆâù—"ؾ’¶/h+D°Á@[]€"X)0ЖCàx¸C%œr–$—CÔÀ\!‚öpL¦·ì÷Šâƒ!!‚™‡§ÔC«rLF°ìãÑ)Œ{£7ìÒeÞ"”C™ø@i0ÂU‚£eyC4é²-Bʦ(®e‹H‘“ˆÞÕ²ED† øU‚½ž"–Ãñv!RË øÕ*±ØiÄ2¿!P@ˆPs(`€&bÙ€j³*Dê {¬qíM –ù â9‘¢xN¤ˆ5¸®ˆ)6tºVÄ´·1ņþØŠ   {T–¢Xò¶wxöVÞö¾Œ¦KŠâgÉkÖa›Dp·"…ð. {¿yˆâJaï7W·¹Å•ƒbeËC¸Èp¨ˆŽ7VQ¬‡b9¦2µ™=‚{Ù9ˆIc£#¢óxºÄÞŸƒz(ž.)ЧKŠ`ÓK"ØôÁö%¶/A°}ì¼"X)‚ˆäëQ%É<UöíÞ “v¬í[—0܈Æfò3?&Uö¶wEqLÝÁJïRW÷|Á"ÉŽ*{·AtÆáìSÒIC&#°* y ª¯b™×7hrÉößPDnˆ‘g Š5Ê""Ã$¢7DzhÒC‹q;_‹ˆ²%Rl‹H¥L‡XKI#’ù â)Œ¢x £ˆè|‘æÐ#½ƒED{ñQ¾D»žÑs½ž¼~Œ&#Šb=”—³Ã9QŠÅ+†I!¼ö¥(–¡¢X†7OaÏ‚;àŠbPÄr§KŠxùRk™mrå R•S"¸¿œƒX¹62 \ì}ôÂW±Y€CX{+2ì P»_¸\ìY0¶˜¢xZ¡ˆå°±ÌÃØb9¶ÊŠ„sØ^EP*vl`§í—³+‚{úžéî¤Á"÷‰ß×À¼ZÎn<"™"xCÙþ Wá¡£"X•c2>to`Çv>‰H6ð¬½Ò=DH†i„²Q°P`)„׈‘Î×"’CA±öZD2ŸDô†H,B `jË‚`kRÑ4ââej3%‚ñ¾rËüFGñAQ‰HG_°sôúòèDrˆ]¡>EQܧìØ{B:_°c¥jziD*¥ k“F,ó1=„çÍ1µ!f¹`§uô]êä†ÌèÙ³ñtiœÈ`¶Ê‚x(‚­² ®Š`¹ â*àì¿,Š¥1æGìÅÍA^_­ ¶xÅ2 »*oŠ%¯(–¼¢XòŠbÉ;$¯J^”|WJ¯«R:>w3¶~D }¹WºËæÞo:)E¤RðF¼"R)‚Ú”"R_ DªïÑ+"U™@L¼ÝˆUe‚ñ9ˆe~㢊SÊAP{+2à h_f ƒ%/ª¨ ¨¢2'"7,ྞ ¸$¯ª‡s½1Ÿ§TÀ•б™ŒÀ³Š öŽÉ”sl7hp-I¶1?Ÿ2vñ¾ ¤Ì|ak€yŠ"”CEø*8ד—ÎÃ]˜Õ ¸[¡i” h*‹eòæ5E$x·]‘!Þ7WDÊ…wÀbåÂ;à9)¶EDP]ˆ˜”4b9Ü舩Mô,bºAl¯¸3ÑZ†+œú¶wø,³­&#ŠâɈ"؈ âÞ©6¢‚¼¡LQGæ¡  ²³¯ʰ £J%,Êa!¯ªG4E¨WÕ#k#¨@q*,B€<Š2ß@ì*–nU¥GPP‚¢ªô(ªJEqUzU¥G°RÈd¤à/‚/øËÙÕW!ñÂ¥Å,D$ <"’‡þÉw#¦¢ÐÀ#&Þ©i_]m¨e!V®‹Œ¯œ‡*šDP{+< h•$fšG°–“6Ç,‰ ;®EhHì²kÔǧjdΧ`Å™ŽÖ2‰÷嬔zÒArXw—$dâcÚ\H#½Szh{åõñ(–ŽGWÅ3E±äÅ’WK^Q,^E±xâUÅ+Š·‡4,‚3ŽÂ΀UD¤#wyD¤#w)V‘Ü»ÉBD»Ú Z-båÚÐõù î(n°äØ…E(Ìéjl³´/%, ÁFDÂs ‚o°-äEðhE:†d¼!9Ôh„OI¤ê4<— ô÷fžM Úæpj„–L ÷úx0AP„”M» Ö—L+ ä ƒK ~å¹aIÚWA†x„» G<~Åj¤óGz•ÛÊ„hdÏJDDx+¥á1[e]q¹H숩QA"Nx„ÔF¾ ³õ©hAbGxDnXåC‚*HX‰,Dr#Nd!ÔÝ$¬„G¨$¬„G\PçÓˆTJ"v#Xæ7:bâ…[™Šˆn`/Sþ¦×¢r§ Î“P!ÍœDÈB°¥8@„GP¡Ì,‚2,É—¾C+jÞ7Š·uäU¤°OQ7"óúB<ÙW‹7µ«R,2‰á,2‰¡TJŠëK/H â’Çž„ü ›Š€1WD¤í}¾.Ú狟9ˆÈpÃ#((÷`µ¶/-!D@I´ F‘h 5˜ƒPCü†²ÌéEX.‹ à/Ä´Ž£AA‘XS£BÄý—"d Á Dø*¸C'/Ž„ ÈŠÈUõ^6ª/ºV©ˆ< ;Ÿä ö¬Ž˜xÑ9zP«¤þ‡üÕ–‚°ËJŸ{ÐCr"> A/ðay 4 âÍâìè-‚2,Ì "F30ƒ`ÀË+Š[м*®÷æ¡v¥(ŠÅ«(¯¢X¼Šbñ:Ä«Ê4‘WïA/8÷ H Øîõ…À¤ð76zDÊ…§œîå€Àb+bÏ‚‡P±rÁm*"’ßðˆ ®éñw/ú.?Ø–Wƒ`ƒeG<tžãP•ãØ€T8}b{v]‹·Á€o5˜Q%¬”!ÙË6¨^‚ƒ7‘!݈þØÕTÐø»àÀ½f*yo»Ep0-*ØéE(;ý!®ÛÈ; á6œ"rUɳ½û!Ý(ØAï,)"™Ç»KŠÈ 7<"2ć5!CdŽ€¡]EP7ØeG Ç P|•Œ£`‘‹e2ZVD®Â¾ŠP¥ÐÁ’{½!Šl\ðWÄn¸Ñ“!tîR„lA‚çúv-¨ñsи@ä ¤óÁ"dA²Qv5JP,(óÖ0ìÒlP›¹¼5 zé(Šu^ÞxÃ= ‚+œy¨]_ŠbÉ+êÈF,yE±ä’WÅËŽ¯Žøˆhä< ɳJ8¸ñå¾_îSD2¿áQ‡4˜ á^ÀÈ.‹á–²Dtz Pv|UTì>Ù65¨Š@iôm$¨ÉпŸ(ØØfÄO€N‹ v8Tª”‚u,Á ‚þ‡üMC¡J¡c›_#R„ê+ ß²"ö¬Ž˜x¡+Ž"Ô*í¹¨ Xª¨ãªNT”6ÍA°9°ƒ¨Š˜4àAT‡`ç›F°*Mø;°ñ4æƒ%ƒ ¸‘aP lŽùÉVEq-í8 H>µkYQ\_ŠâúRÅŽ¯:„¥Áޝ*‚‚2ïQ¶—¿NÈ"؈øûn þzAxÁdlûezÓ¨ ØiÓU"¨ØìŒj€€T.èê<;¾:6ã(8à”7×ÀIñ˜ŸM!<"ó Ó"ëU…Š\¸#¥(ÎaÁN›_÷8øëNR„Ô¦`‡C±nt„:Ž‚ó  ÀŽyæ ¨l쨢ŽÌÃæÀN€*‚2,ÌaÃHå²o Éc)o Ažð!?óLÔc¨ãY‘ =ŠdèQ$CE± =ŠdèQÔÌAÿ(‹Ÿy¾Å"ÔÌÑ«ÐxÃ"4Þðˆy#âŽZ;‰ b·p‹ÐòQ‚ÍxŒ ‚[Ïå²}£7FcÜW&ôÒ)—©÷ÔH¼;Pœ æûÝ@Eø†h¾\º·'ÀËÆ!`^ܱnt„zæªmò>òV ñÇPât… l`‘‰?¶"Ø!2ì•8Ж ܵÔU[܆«y5X&jWŠ¢X¼Šbñ*ŠÅ«(¯C@¼Šx‘Áx£ Ë¡•[‹ËŠ"zov¼AoˆV8o&(¶½Å&ö‚ªÕ"¨ØI»"T±‰½»* ÁæPá…VATf[¹ÕhŒwÛ“.bX„|»Q±ŒÉC?« ¯ ¾ ÍaA_ rrÜ#TËyG송.  ï *%Z8Úk ¨å‡oÍBP£ üÎ :2¬ ØYËPbŒ£e±Rn£µ”LÔ–¡¢XŠbi(Š¥¡(–†C@Š 4Èé*A¸7ç1ÆKHÜ"Ø›—|aAÉü†GÒˆ^IÏe!¨½Iµ—œB²¹@d!¨óä€Rä•1P†æµŒÀè¥î—Kz‚¦ËØõ7Dñ³ rî&Dø*äFRºÎ -ù”S¹ xñˆÜpÃ#d±Ù©–"GWBj™œOÉBP£ÈÑ:2Z%;ºâQ,^ àŒ†d¢¶ ÅEVYQ\dEq‘EVÄ‹ :_ApñScV“gáÎ×!Ðùöø\Éü†G±eëÑsYªhA%§?,‚{7)Ïë•=w¶–«ÁSI_¤"Pdr¶"DñUìlEé‚ô‚®­Çç°=Þöœ?jDìÈÀÆ@ä4Aˆ€äÉ‘,„j™&ðYlvš@´Øì4Aiâ¦ÂóæÅåÊCm*Š¥¡(–†¢XŠbi8¤¡ˆKô_•ë¤â–Rñ=_XËè¿4˜-» ®¥lD¼Å²T¶$‚ÊF|Ì,‚Õ‚¡ÀÊŠú}%ôàêF̃+Dq‘™WˆðUp¨Ï––.Ø&艱«àZŠ"vÃ9GÄu*D@òÄ?* ÁZ&®S!ÛË\§AÛË\§J щΧ”y…¦ÏDm*Š¥¡(–†¢XŠbi8¤¡JƒD­CÓ—.”%h)<^¥"Ðõyÿ¥ˆd~ÞQ…ãod!¨lI•­"¶o;)ÜAè@$@zÁxæÝ¨p¡Î;P\ä‚DA¾ Žçy„ÆÒE=QŸ÷_}ÛIÁæPÀÔd¡5@@òŽ>…`-80µGÈö²ÀÔŠ íe©K®°@Îÿ¥ §†}nóP[†Šbi(Š¥¡(–†¢Xi(‚Ò`î¸wÅÄð(nD=ј÷_cÛIÁæPtd…3@@ò‚`-'¬eAÈÀ²t!ËâÎy¥QbÔÞ²é‰"¾s™¨ÇP$("Ay Ê£HPŠbAy Ê#" èV×ã¡TA·Eq'eZ©ðˆd~ÞñËBPÙ’*q«³ùÎ%qK"è טï\ˆâr1ß¹á«Ð&WÏEÒˆû‹ïœGì*´Äí»áœ#â;" yâ —…`-ß9e¾sŠ e¾s= ‚6â{…ÙBbˆøÎe¢¶xÅ‚R JQ,(E± ‚R J‘t«³ ç,‚”C '*xÿ¥ˆd~ÞñËBPÙ’*q«³--&qK"è טï\ˆâr1ß¹á«ÐÊ’ è{`òóˆ]…«=b7œsD|çB$O䲬eâ;ç2°ÌwN4°Ìw®F%^ë•fá­ÎõÊMÌ-!µÅ«(”¢XPŠbA)Šå”¢XPŠˆ4pKáa%î¦äý—"’Ãbkãb,›ƒ ²%T6â±`œùv#â–DÐ-¡1…Ååb !ÂWÁñ<ÚÐs±@O¤ˆ]×±Î9" !’'n YÖ2ñXðXæ± Xæ± ¾à£×3o…@±z¦NóP[¼ŠbA)Š¥(”¢XPA)Š¥ˆHnëôxŒE 'êñþKÉáÆ@±µq €ÍAPÙ’* pdœùv£1Þ H"Y¨$èPˆâr$èPˆðUp<Ï£%ô\ÀÐõxÿÕ³l‰Û³1PAV8$_àh?YÖry„ , ¤XHP 7ƒzfáùÎõ$œæ¡¶xÅ‚R JQ,(E± ‚R J‘tK°vRž¨âý—"’ÃbkSQ¹,•-‰ ²ß9‹ƒ\¹$‚rI}çBÊE|çB_Å|çz.ªèS*ê;ç» ®c+b7œsT`çd x‰[GHÒ)s«óÙ^æV§Ú^æVW#òb»ž9Gä2Q[†Šbi(Š¥¡(–†¢Xi(Š¥¡ˆHúÎY;)‡@OÔçý—"’Ãbk#‘`w“ƒˆ²%Q6è;×ëS¹"rIäºó Q\.æ;"|\YrQ@ŸÒ§¾s±«àbµ"và `nu!•B|ç²TâV粽̭N´½Ì­®F%Yp·„<Ô–¡¢XŠbi(Š¥¡(–†C@Šbi("ÒÀ YÖr£ýx„Ì2‹ö£šeí§oËC¹LÔ”¢¸ÈŠâ"+Š‹¬(.²C ÈŠx‘AO$¡àâ –`ì¤=QÅû/E$ó󎈃\‚Ê–DPÙˆïœE°ãP õ7pᮢrIäºó Q, æ;"|Ü䪨ïœEÈwÎ#v\WÄn8çˆøÎ…Hž8Èe!XËÄwÎ#d–™ïœ"h–™ï\_ ¹LÔ”¢¸ÈŠâ"+Š‹¬(.²C ÈŠx‘AOÄC"X{"‡@wÓç”"’Ã:Š›”>õËBP“ê!q«³.Ïv£>YëS¹$‚r݈ùÎ…(.2ó ¾ ®,¹¨ OéSß9ØUp[»áœ#â;" yâ —…`-ß9Yf¾sŠ Y¦¾sç7"Eq¹òP[†Šbi(Š¥¡(–†¢Xi(âÒ±ÐçNjÀ{=E$‡Å&eÀ=rT¶$‚ÊÆœÜc!…à¡×þ€»%¤vKH!ì± Pdæ± ø*ê±À£%ô]ÀÐ)bWÁÕEì†sŽ˜ÇB€€ä™[BBµL=!ÛK=‚¶—z,˜Ãòð(„ í'µe¨(–†¢XŠbi(Š¥á†"" H ÔòNÊ!Ð yÿ¥ˆäpc Ø¤¸È ÀŠæ ¢l D” ê]´X_$P‘>ICút£‚Dû Q\ä‚Dû ¾ Žçy´„¾ 8z¢!ᅥ¶“‚-¥ ±t6*È g€€ä Ò' ÁZ.p´íeÑ~AÛË¢ýôë@÷d‰Ûœ£Ç¾sy¨-CE±4ÅÒPKCQ, ‡€4Ai0·º‘ënâ–£%Ân NjdM%½ Nö7‚Efnu9êaA=dw#îVטƒ\ a¹ND}ç—‹úÎ_7¹\TЧŒ¸ï܈÷_#î;§ˆÝpÎó ÁNÊ!мÿRDr¸1Plm ( AeK"¨l$FEhæ›@$¤OÁ>ݨ Ñ~B—« Ñ~B„¯Bãù–0p@OTðþ«°l‰¥³1PW8C$_à>YÖr£ýx„ ,‹ö£XígPOˆðmJax a Ð40µÅ«(”¢XPŠbA)Šå”"((âV7ÐÈ ä†¸“rôD%ï¿‘n [›’úÎe!¨lI•¸ÕY„|çˆ8È%tK"è;"P.â;¢ø*æ;7pQ@ŸRRß9ØUhÛ#vÃ9GÄw.D@òÄA. ¡Zf¾s!Ë|çAË|çjTâMäAÏ,Ü!·º9b}ç2Q[¼ŠbA)Š¥(”¢XPA)Š¥ˆHºÕY;)‡@OÔãý—"’Ãbk#A`w“ƒˆ²%Q6èV7èQ¹"rIäºó Q\.æ;"|\YrQ@ŸÒ£¾s±«àbµ"vÃ9GÄw.D@òÄA. ÁZ&¾s!Ë|çAË|çjT’Õ¹zpHVç*걉ÚâU JQ,(E± Å‚rJQ,(EDÐcaÀÃ/ xŒE “ª¨Ç‚G$óóŽˆ[B‚Ê–DPوǂEpB׈[BA·„nÄ<B—‹y,„_ÇóeÈ}熼ÿrß9Eä†óŽÄý YêV P)Ìw.A`nuŠí¥nuAÛKÝê†f ®Î¼ïÁt¨-CE±4ÅÒPKCQ, ‡€4ÅÒPD¤=42G 'ñ®MÉáÆ@±µqá€ÍADÙˆ(öXq·„nÄÜR»%t"ê± ¸\Ôc!@ø*8ž—¨ÄnPg‹tRŠØUpõ@»áœ#æÌ P)Ìc!A`Î Ší¥Î AÛKFf .Ü™Ãò0ÚO&jËPQ, E±4ÅÒPKÃ! E±4iÀ@@HaÀ£%(ÔØšJz\؈„ôÉBPÙ’*‰öcœÐu#Ò'‰`HŸnTh?!ŠËUh?!ÂWÁA»AðENHaàb€žhÌû¯±í¤`s(H˜ ²ø P)‚ $TAÈö²@@!ÛËyD¤Q¢…»¡„_@r™¨ÇP$ "ixIãHŠbixIÃ#" è;7äÑ,B”¢¸'û/Hæç¹,•-‰ ²ß9‹ƒ\¹$‚r݈ùÎ…(.ó ¾ ½ãÉ#’Cè–`r«óˆ]…V¿=b7œsDÜêB*…øÎe!¨Ä­Î#d{™["h{™[EèdëЖ‡r™¨-CE±4ÅÒPKCQ, ‡€4ÅÒPD¤}ç†U€< wRž¨àý—"’ùyGÄA. AeK"¨lÄwÎ"´´˜@ÄA.‰ÊeÒôˆï\7bnu!Š‹ÌÜêB„¯B+K‚ [EÈ­Î#vZÇöˆÝpÎQƒ°yÅK<î<‚ DPˆÇGÈ,3;EÐ,3»aéüâÌç¡¶ ÅEVYQ\dEq‘EVÄ‹ z"HaÈ£%(ÝMÉû/E$‡Å&Å…)V4AeK"¨lÄcÁ"8óíFÄ-!‰à­ è±Ð˜3Cˆâ"3g†á«àxÞ xzqÈc, ]˜ÐI)"WáÕEä†óŽˆ3Cˆ@¥…,€83x„Ì2sfPÍ2sfJÀ8×ËCmA)Š‹¬(.²¢¸ÈŠâ";ЬˆôD<ÂGKPz¢ï¿‘n Û é“… ²%T6íÇ"8óíF#|<|Ø£Ñ~’FûI"(D È$Pˆâ« È"[lÈc, ]˜ÐõxÿÕ³lD‰À³1PA?*¥À€²R#È#d–YŒ EÐ,³ACsX:Èe¢¶ ÅEVYQ\dEq‘EVÄ‹ z"±@nˆ;)‡@OTñþKÉáÆ@±Ýð °»ÉADÙˆ(ôVÔA.F8xã°¢¾sI}ç’¨—û*êq¢XÌã.Dø*¸5æb€>¥¢nu±«àê·"vÃ9GÄ­.D@òÄw. ÁZ&nu!³ÌÜêA³ÌÜê†æ°µ¥(.²¢¸ÈŠâ"+Š‹ì(²"^dÐIè¸8Ãc, y E 'ð®MÉü¼#æ–ƒ ²%T6æ±0àn Ýhˆ‡Îc¡Á"w"ì±Ð‰¨3C€biPg†á«àx~ÀÜ™A» .,(b7œsÄ<$ÏÜr¬eæ± ™eê±à4ËÔcAÀ ]j JQ\dEq‘ÅEVÙ!PdE¼È 'â†Ûh™z,$tKèFÌc!D±4˜ÇBˆðUh[H  $‚€ºQAb…(–FAb…_…Æó#Haäb€ž¨àýWa;)ØR fgc ¯p†H¾ÀÑ~²¬åò™eH4Ë,ÐÈ–‡r™¨-(Eq‘ÅEVYQ\d‡@‘ñ"ƒžHB Å™–`ì¤=QÉû/E$ó󎈃\‚Ê–DPÙˆïœEÈA.ú8xc†8tÛ¨¤rIäºó Q, æ;"|Úä}ç,B¾s±«Ð¸Gì†sŽˆï\ˆ€ä‰ƒ\‚µL|çµ¥(.²¢¸ÈŠâ"+Š‹ì(²"^dЧ”tgÌŒyTE »)éξG$óóŽÈ}‚Ê–DPÙÈö½Ep’ÕÈF|ÁønÄöèC—‹íч_ÇØ<>Àر}Š"vœ¶+b7œsDöèC$O6ⳬe²Gï2°l^4°l~lŽ‡Ã 6™¨-(Eq‘ÅEVYQ\d‡@‘ñ"ƒ>EËÃ¥U`ÌC(}J÷DŠHæç‘ 6Y*[Ae#ñm,‚“¬nDÂÑ$ GÓ ©&Dq¹ ©&Dø*8Æ–ø(RE(RGì*8mWÄn8ç¨ ë‡’/p8š,k¹À‘j…ðF|'¢{ôŠËE÷脯‚cl~Ž~쎢ƒ>E» NÛ±Î9b{ô’gñ9Ö2Û£W„ ,Ý£wXºGoÎJÃ`/™¨-(Eq‘ÅEVYQ\d‡@‘ñ"ƒ>eè:ޏ9ð#öc~Ž^èn†ÖèÑ«à,{C ì% AeK"¨l$ŒEp’ÕHØ–$‚a[ºQA"º„(.WA"º„_ÇØüDüØ*}Ê÷DCÛÝ@/H¼” ²~ yA°–“Ö² d`YDe]<Š¥aDcç®<Ô”¢¸ÈŠâ"+Š‹¬(.²C ÈŠx‘AŸ2ró”¸9ðñÁîÆ!ЧŒxO¤ˆd~ÞsîÊAPÙ’*óûqç®nÄœ»R;wu"ê÷ ¸\Ôï+@ø*¸4â»í#î÷5â=шû})b7œsÄü¾$Ïœ»r¬eæ÷¥Xê÷å4°ÔïˈÆÎ]y¨-(Eq‘ÅEVYQ\d‡@‘ñ"ƒ>EއC¿/~"Þ"ØÝ8ú”1ÌÏ;bÎ]9*[Aec~_cîÜÕ˜sW aç®NDý¾—‹ú}_×mÆÜïkÌý¾Æ¼'s¿/Eì†sŽ˜ßW€€ä™sW‚µÌü¾!Ký¾‚¶å÷µ´t祥ò¸¥¥w\º´ô{[ZzõÏ--ýæÉKæçÎo\Zºí—–ž¸ciéŽ+ì9ûìÜyü³vî|É);w¾ö';w¾þý;w>çÛ+¿ÿâÎÿïVKK:dié=g--ù¸¥¥{?wiéMß‘ÏüÌÒÒ¯>jiéøG.-ñµ¥¥CnZZzèÎ¥¥—–öÞgiiŸ--=àÆ•ßß½´t¿“––îû½¥¥ûl_Éñ™+÷©––îõ^ù¼þ{÷ûÖ9Û¹óÇw]Zºu±sç÷¿¶sç?¹sçOß¹ó´SwîüãmõßKKwÙsçÎ>{çÎïì·sç¿­ü»ü­ò¯æîß?Ÿ*×}ðô•rŸ*帒·•ϾzãÎ}gåßy;w^ðÉ;Ï=`çÎϲsçÙ{ïÜù/'ìÜù©OÈ¿³n½sç'‘ô?´sç?ìµsçÇOÚ¹ó#gïÜù÷½;?¼ò÷;O©óSçWþíeÿ¾ç^ò¯.Ï3~´òoI>ÿ­<Ç$ÿD®o>Ýý™ø¿å_]æú_ýû½Vêç•wZZ:y[ýoçÎW³;/<{iéwß!Ÿ×÷ùõÑJ}Ÿ,ÿBYÖ¿dE.ÏÝZÿ“ç»g¬Üã´•ëßu¦üsÏ®ïù̧/ÙŸ;߸¢W¿¾$÷¸ðl÷ÏßÇå­®¯gY­Óúß“Nüžfþ--}œü{öäïÇm•¿ëú­~ëõ?‘ˉ+÷}ЊŽ\rôÒÒn}ª?ß{Eß/}”äçW“ëêúxÖÉaþ|>ëüÕÜÿìÜùÝïÔºäÊ.÷>û,¹¦.GýY-»WœTËÏ?ãv·¼vÿçAþ¹ü×2®u§þû’C\»úXÉ=¤œKK[–´æ·€ÿ]Ê#åøÔ'––ª•¶ü ßÙÔ×»<úò´¯•ëkù ™üé+6boÉë½Nòy”Ôúçt³fõ³¯"#‘ñ½Þ+ϪÛÒcß.v¹æ£E/ê´–{ý™+wý¼úÇ· )§û u«Ö£:—­n»uû®ÿ‰ ðÿêÏ^´RÆ_9É·ïúŸ+kß:Oõ÷j;Qʨ–Ó'g_äsÉOؾ\Ý;QË/´Õîs_§¾ë‘K³¬uÝÖÏ}ÏY¾OªËæ³þýq[ýu®ŽêÏë|º¼‹½”ï…zZË¢þ©ëÊ•ÉÉÜÉÉåÛÕ]3ïr]]Ïî.ÿuZç1¬—¯v;©ó$2kæAîÕì;\>r†<·n¿¡~6Ÿ×|Ný\y–ÜWxSþa\»Ã3÷¼_ÛGôPtfå³íÍò9ùÈsEÏê<Õ6Öõ³µþ†ÿœŽ†ÿ\YÂßr²vr¬Û£Ôw»î{¡ÜÂ:tzÖ.‡ÏX_µìܽœD~ígxý}Þ)þÞ¡Þ†uãÊ–),Ò»ð]÷óîí[3ÿüþKKÞ^סo‹®?êz¦oc¾úg¢çùgÖ÷?ãìfûo÷H¿ÃvÝ|–\S§ÍgùçÔù¬Ç;¨Œ¨ɳ––>¾Côº=†sã¯P¿¹|Ùë6éòäì½kƒ¡ s׿ç,?iÏÝ2éó/¶:Ô×§ùöáê‘Õ—ë/ë|×ß½üá¾MÕŸ»<†ã"—ÿT~ëï»|I÷6YlX»vç³]&‘µ¯·ç"íµ–Œ«]|ÞÚåáyÈê1¬“÷ Ž‹Ë_—ÕAòë„‘é[%­óïäQÛ÷ÜX†MÝðuÞ”©“ÏO·ü¼Ô_zT3?ͼ4óØÎÓnpùYŽ$//[ó“®S“Ÿí®¾¤o ûñ\ù¼¸|„²é΃{þ«Ou²usÃ¥¥‡|(Ô#–ßÚ22ýõ îwùîSlÊJÆ]^^µ.ûüJŠòìêÓ麌•¼^ÄuÙÖuŸwŸg߇9™¶óÚî{ºuÎ?;Ìkh¯D®¾¯vzœÓ.Âzë ¬ÿ8¿þšº>›íƒÏwÝ›¯ã>4œ+ÄcÂúy2ÆÄzâúŠZÄV6× Ü?Ó4ÇUîûµ¥ü±nµïŽ£D¯¤|Níûº²Ë:Š|ß]CY8ι¼~…u`çc78Ýo/ü¾<£¶ïRÆø;¨Ìõ<ªþW¯4ç/¾?ðíɯ˸>Å­)µçöõ˜Jì†û×\{sÿšºìÛx{ ìÅ>‡×6×·\™eMÈ÷?¢7Íù›+«[ûrò¨ÿÕå¯óäìB³Œ^nž¶‡PönŽý…œ-j–ÙÕs¶Ëíuº9GçÜ¡dÐÛ¦xÞ"÷ë¬=”±¾×ývÛ}—:¨ï—Å—#l#~®êuÒõÍrø¶ñæÓãr»:ûÝw4Ëèæôn¬ØþWó°ŽBù:{ôØÃâò„:Õ®WV7õOX®ZŸœì\žëõ›z µ^tmÒO][­Ûþ+NòúÝ”·ŒÅ¥Ï^åþöd?ÞkËÀ}îÊîú¼Î$벞ãúƒfÛªåXÿÞÖý¦~º±·Ü«þq}ëGrýPS×Ûë5^æÍµ7.qóÌp]AêÍ1|=úµ“öœ*žOüñ6_Ÿ"³vûðyuòñc‡æú†/{ÜŽ]¶ÛØ&ßï¹¾/´çír»2ú1Ь5»ûÖõŽ#Ñš&Zv}AÝO¸²„kôáÜ›Oo—#\sòrFùw}‹·éb;ëu,g#];rœ•ÃëyºµLÝþ†ë§Â½“xÈëkW}„zçÆ1®pùOå½+ÿ® nþÜœÊ~F}_·'äô¨=&©óçô¹=× wëuÙj["ò—~Ç•Ïé¿/c<wvÆÍ)š6Ä—Ñë™|'.£[G ÛˆãÍþY® û„f;i—Ï뀖{F=ÆÁ¶Ó×]s é×8OÞæu®]gãj¹6çã¼î\ñ²¸1«ŸS |·Ç¼õ¼þ„Óã|ã¼»úäùž.ï^pž±œ]>ëû»5¾úùõ^ Ê‹Ó ±7ñZe3?’w'–7?_jæÏË1£µÇîüˆŒëñ–ËW=.¨ËÙ•7'#œG¿nÊÑëædù eWÛÜü©Îƒä³k,âm\;ázSs¿Øï©tç5ÏÔyuãY×Gû|7óŽí@WÞåH\¿?‰N„ù­óØÎ[~¾šm}µõîÆluý×ýyýüz<[Ï=ÛùsºާsåçÖËê½³ú»2ÎcsÎtÞ½Þ†ãNÉ7jO]ynê·—o½ÖþæÓ›2ŽÇi»ÎC\¿üêSSùlÚ&Ëò¶Åó‡ÛQ[/ý˜ÉÏÒyðz›“:EõÙ”‘_› ç€í:s{F(?¾Ÿ‰ûB§snŽÖÕ/NR×a\9jœp=­_¹y *GýãÛðvyÜxε—vYä3_~ìÞÝwùòx¹ùý \Žp<ˆú 範ÊPÞÞçhîé·Ë€õºÿÐ7 ÜÏêÊsû^.(ßõ÷b™‹Ü/–[ßf²Gv¢½&+~KnbIšk“íù®‡®ò´ËòæÓ§É¿Ÿß‡råíÖLØøÂåÑí¹këqÝv]¾Ü^`8gkç¯Ùÿ;?¹¦¼Ý~j§zí㩲|»uq¹ïÙgá|‡¾x® nLèóîóíü‹Pþ»òî×_›>FN'ÜÀjòßÎs½¿ìטóóìÖXB¹»<·u9笋ÊϤep׸5P_?¿ðõàl*SJœÍ ÷Ð];ý•Â};T¾Éë—«¹F…Ë•Ö1¿Þ®ºõˆæ²_3[}Ù¼½®ïYßçŒV[Çyß¹ó?oò¶Ùíq¼YS7Þåõ®3ýfsý³KÏ›²j×½_ç–ò»}!·öÛ^¿ý×P[¨ýcÚ{;mÙº¼…ýz[¶õøö3O“çxß2‘ñGênËõšvs_$–¥“…ßDk¦ù² Ǩõ\Òïõ Y6åÌdédÐe_rtTÖEgD~q›lûeºòÔ?á<¨[¸†zæÊçöÇüœÒÛÛ¦ÍmÊ«-«P^î§-7×N'‘™ó]F2 ý%]~ý>P¬ß|ù…{Em†ýj{ÿÄåCö#Ã9S(×p­3–©÷-E2Lžõ˜ÅíŸÕã#é—óäêô®î×½/«/OXgãru³¹Ïlbè/ú˜ÇroÊܯÏú~ÇË™µí<™ÊŸ“k1ò¾9®j˵¾®)[?ŽuÌËUòŽáÜ9“o3Ÿ±M­ÛˆŸGû9yýܺ m™6õXòãí¨/WØ#;ëo¾¼åÜ…Ë´e+cG?Þ÷vÝË7´ Þ†Æsª°\~þÃ×±^{ÿ'ãðη,–µ›ï‡ò}¼½hËyÙÆò•«þô $ãf?¶[·ÿÔž›Ö?çÝû¤º1ZÛ/µÞ+lÖI¾ ýÆÛ}¨³²Æä?«ÿNùÊ:_o?>÷ã 'óz¬³Zv6Íɽ¾W[önlŠä/:ƒë ÎgÊ/8,¯³;M¼ºpuØ´]a¿¸úºðvÒ·MwæÂÏ¡–ô'®§ÉêÇ“ýØ—×OÇIëÈÕS}m»žºdÑ–qªŽê|¶}'êk嬉<7¯®¤<“×W³˯/ï¿•óÔõæt1®+? ë¬=·›¤]åÈ ]Wómª9otíÊÉÞÙÑúùî¹,n<úr°v×Whû|}¥l`ÎøÔ©¬ï•j[õýeÏ¥Yöúïп1,·è7®ÓæZ…|îÏE4Çþys†¸®\_1M}5ó×™³Î§¥¹ŽÄëÊñ®®b߇­_{¸zªóëÇaÆëÇa]Ë:ödu\˧]Ïáü¬Ý†Ã½‚Ð:?—IÚd¸Fáö0gQÏá:O³úu„pm#w»úöu×—Óƒiê^Æ£Í:tu]ë}Ý–w]úzt¾÷®.ã³>Í:uë…¢¿~O#\ßtùuò_ûº–üÔׇã™Ïá:ïjãõýêz–5•¦]ïÚ×jÚi‘½¾Ö–©“I½6Úíº¬k§Ýú¶ízÍ·Îs˜ï®6îÖxÃúëmm>[ð¾ÙëBZšóV÷ë…oó©u„fÝ·eèë<\ã¨óºÚ:wã'Wïá†õé]õlA·=ûÿæ:LÏYÔ{Ó`{ßöº”|‡¶Ý¯oáößnûÓØûúÞa½z_eßÇÇëŠMû4M›wr›¬íûzýa§­ÿpM¾½ì|0\–%\;uuŸnïÍvÖ¹[[rmœÕuhãsê:”‘ëÿºëº½äçPîl}87 ÛE»m¸ú®¯ ë<]Ï~ÝYÖšã·¼ºŽ×{˜__“¶ëwvß­—N3 íA¨W]ö¿}ÞÂÛôf·gët§–‹·Ù«· u_ÎÇÎw̓\ߥ:†çåí>ÅÙ”ÚïÕ븡 ÏØ0;‚Ö#\ä÷'ÞþÕòœTÇÜsŸtBs\Îëuaצ˜>‰þù²¹öâôª=ÏïÒ©¶>µçˆí¹¿Û/×~Rz”Ö%ÏÅ~Ä×8]nŽ'šëqn_cRÝmÎdºêÓäúêA—3z¶+9zÖ°þåÙ¡Mi×»k›îg𱤫ï¶_Wݺ5h·Ç;i‡õ›3nô6Bò7mÝ6çyÞË^a~ݺ|£u¼ÙÕíjëÕíõ„òI·YV—u£útc…ö\p²zyMcÃÛív5u[ç£=.˜¤n›¶ÚÕs³½Š/îêêµÎ£¬Ï·Ç‡ñz_»N]ýçÖ+šç£º­¿ƒê×}WÖL&­c_·rö×׫«[·—æ;\Çé›…óô:aêÆÊµ¼rÖï‘n¸¸‰~/e²z>ãlù,l¿¡/ƒŒ‹›õëòœSÇáX¬]¿~Žß=þrúæ®]M£¶Û®_>>j®%x{šW¯aÛoî3ûò±¶?yݲq5®SWŸÇ-ÝfWW§¼>»×lýÚœ‹'›WŸÍ5Óv[õÏ]»z ÷:Y=vµÓ:¿á<ÊÅoÛàv]ºzdýé$õÚ]Vnî–»|rÚcbTgázçy76ëwš:D¶vµõØU—Ò¶×Ùš}¬«ÏiëwúºÍ7åÔ©« W¯u^úõ>Ç~ÜÚ>³Ü–S¸î®C¬w=wEÍñ1¯wÝÖ¿w­käÔ­ÏŸ÷—Aí·i“½7³Çñ÷ü´ë®yP{,‚Ö+šr[ÿºw2rözÚúûÖv}·ÇSÍ:öë«£~›c¾y¯ÛÕÖ+ªSTŸhlìì²ë›ç»^Ãx!¼NwM}6ÇWí:M×gX§Í¾Ç¯ÓúX=þìªóæœÙkÔçÌq]]‡ë²«­ïî6,×uÕù4õíê­;²úvålû‚wÍXY]9 šïÖõŠæ¹l #ŒY®1M2WrëHÓÍwã:v~+éy¯Ÿ‹x\·l+¬ËÉêÑ÷îºpß+U§¨=×±À¼_Jø½æü7,Z+tþxnÍg’¾w-ë’Ùtºæc96ë¶3Å ˆeét¡«m×{“hߺݾ§Ñ7îËÜ>óŽ›]=Ê\ªé‹îùvÕa-?·–Ãêr’zlÖ—ä›ÙbwÞ4¬×úœ/S…õ™Z rk!áØ«Ý¦g[¾¿pg)‘¿¹;«Ó®[7ævùvõ+Ïò6ùóù1Usÿ¦m¿RõÜö­™®®ýø½«ÿe69Õfq=‹Ü§©ëö~ï$í6]¿Íý¡ú×·º{¢º­?÷fškÊ~Žäb#9ÔOͶ»ûåÖ­”éI'x½vcÆÉê¹Y·®m¹¨ì¬-Oj—Y»¾#ìŸÜ‰»O»Ž]ŸèëÚŸuë;´oa{®¯qu°Öõ=Ý^Âd6ÚÙçÜqVÛFMÒ¯Öã9÷Œê³Ùnñ¿ÜÛ·=W‡.¿µŽÓó¸í†s§f=úuÿÏ•1§®œ,ëïtÅþ?¾æ¹K?oóuÜu†¸Ý'ׄkÕ¨y¹7ûÑú§y†¥¹ŽäÊäÎ.Äm(\wkÊy52f¶Nú„xÍ>O¶Íy™“]®¬»dìæ¹² åŠìR(ÏÐ&åÉuÙ†s‘ÕË·-[Éw·|>§åìeìê²þq÷[­¼CZæ#êÏôuÎ1òÛ€ø4}‡sê©«®\'m¹í¢þ©¿ëbÖõâdŠê&î§c;¾²n·‡ü¶€eëö÷ër‡ëLi9ûúÊ‘·‹æÚ‰{/¨Œ›kõ=SõÑ® ·¦þMR'¡ÿZN}Ôò’ò¯®NrÇ7“ɽmû›r®eœ#ÛYÈuR=oö«²Ÿ¸kåêuYbi…ë‰Þ¶cyºuq,Ç\Û¾› Ü[Ì‘©œý;ZÿÔ² çÒ¹²­Û$êW§¯4çUHW‘\›¾ç«ÑÓÉÇ|~L½º±È´rscidÊ­Kvy2 çºù²sslw&oÚ6·>·zù!ÙuéܬõÍí×­•í[–/£ÕÈ'W6ήæÌreSÿL£?ÝriÊcRY09äê†ë‡Òåg6›ëÅ¢Üa¹›k€ó_îæ˜f6u¾+ËíåŸSöü2çÙ¾E¹åž¿rßRÛ÷-µÜ·T=_”{>Ë=YÙåžO»æî=k]Ÿßr»rìêr¯½ž×?«Õu7Ï›å\|­Ê]ÿtéºómmïªrû<¦Úø®-÷ì×P¹ÝukßÏG¹ÝÚðú_å^ÿö½+×Ùå^”{½Ú÷¢Üó[î[ªž/Ê}Ë*÷-µ}/ʽºrKÞvý¾èZ´oW¶›Ë~ðìmÛ-«Ü~}kcìƒOÞÆç{¿(¿¾ûÿóº°(÷¢Ü‹r/öÿå^èùF.÷deŸ÷r»ûϺÎç½}ßòÊíÊqó-wý3«6¾ØÿŸ×rû<Î÷þÿú”{±ÿs.÷Ím]5WÏå^”{ÞÊ}Kmß‹rß²Ê}Kmß‹rß²Ê}Kmß“—»þ™ßýà]?ÿ^”wQÞEyçÏn-Ê»‘Ê{KÓçEyoÞå½¥µßEy7fyW¾z祥ò¸¥ÅÏâgñsKû¹Õ„ÿrï9íóÑç“äy5ùkßgRÙäÈ®+©üO#×¥¥üò¤¾Ó¾×4ùšæû³þ™VK亜g­&¯ÓÔY*¯k™ïYÛ“®<Ͳýµ9{^ê¹kù“û¬Üº^MåÈjuž7IÞsžÑ•ŸYëÙZ<3çYk¥ ]÷L±öw&-Ϭê&§¬Ls¦Éójäž{¯.ýcߟE;@u?m›èâ]ÏìÊ×4:““§öõ9?¹rTFK íºwû¹ùž¦ÞVÛÞÂ<‡÷hŽòЕÿ®«:̹~­ÊʳVu²ùOծܻî™SO³øYMÛ÷˜•^NûÃîÑU–Ôwײ 9ßͽ÷z¶—®k¦ÕvÍ4?³¨×Ô5Óæ#‡M“ßµhS“”sZ9®¥-˜6Ï“”eòµrœFÇg%Óµ’í4ùL}-ò8+®&©|äæ3÷Óæg5e˜¥.NZô¬Ô½ÖCg'ÕëÕÞ{R]ï’ {æjò=«<·ë¥+·ê`©|NR«•9ú=ç¹¹ß[Í¿ÜütýÝ•·µÊwêÞ«Íÿ¼ä;G¯¦ù™¶=vñÜg¢<´¿7íϬê•›•#•öçkYŽTþX~rëzR™æ'ÕVsÿ”ÎNÚn»î=ë¹åcyj¶Úzš$?¹ú²í5'ᵓ”ašŸµ¶ë¥k9å[K™®Öl4¹†ùŸ¤L“Þ»}Ý$÷˜¦®…|gÕ>ÛùEßFÞk%ßœï¬F¶³’q»Líò±rLsÏÜﯕ\§½všrLúÓ~Nª]åÜkÚ|¬µnOú¼®g¯å«ôÙ$yB2˜4_k]GÓ܃}Ò2®VÃßsÛÕ4õ6MÞ֪ΖfpŸö=Öë‡={Úzjßw’ïÏúºï,žµÒõøYëºbׯ¶¬³’û¤ígmÝw-Ðs¦)ǤÏ뺆åi’üÌ¢ý.Ï&­Gv}ûÞëýÓ~fn/u¤è¾]Ï´Ü(Ï.]}XmÛÞèz€>›¦í·Ÿ3ÉÏzØY××}Ât½VS×¹y^«2®wÝ·Ë2K= Ë„ž;‹ôÌTyÐõ¹ÏXÍÏ,ÛÞ4u³Úgµ¯Í)kû÷õüÉ)KîwÛßÏ}ö¤×­ög=t«K–k¡»áýwõON>sõ(·L9í-÷k­K3¼7*û®Ôƒ\}eº1ÉsÖ2o³j—«¹ÿRë÷iË=«ŸÜ2£¿×+OKä÷µ¨×›C»Eõ´í5'(Oèsôyª_Tži~rõf)Á¦ý™æ>©kºd¶´„˹Vu²«ê8çÞíûκÍÍú^µÍ.´ý{W™»d€î7/õ8I;m_³žõˆò3ÉýºÊ›{/VþYþ¬æ~Ó\»^õ;«û¡û°²ç”«ëûm6ËŸõ¨ç›CÝæÔs® 6b»Î¹.·ŒëY÷Ó³l'èºY´»ÕÖÉZÉ}¾²íªÇÕüÌ‹\»>O=gšŸ®g®V¦è~9òšöšÜ<,‘ß»ž=éÏ,êcZ]›¥ÜÚ÷]"¿§t?÷9«ùé²IkÑ®'Éפò›T«Ñ·µ”Ѥ:Æ~_|V£W³”Ã,ôg5²˜F§VSÎÕ¶E¹ç»Ü“ä5'/»²Ü¹ÏŸT/rŸ¿(÷¢ÜóVîIòzsjß“äõæTî[ªž/Ê=Ÿåž¦ü‹r§Ë4«²OòÜœ{Mú³(÷üéù¢Üy÷›ägQî]ß¾»>Ϲß$?óPîÔ½sË1ÉÏ¢Üëß¾sŸ?Éýrå^”{½Ú÷$÷̽_î좆 =_”{QîIòxsjß“äqQîtþæ½Ü“Êf–ÏϽÏ$?³,÷$z>Éósï3ÉÏ¢Üëׯ'}~î}&ù™´Ü“ä5'/»²Ü¹Ï_ ]_”{QîE¹ç§Ü“ä5'/‹rÏw¹o©z>ï垦üóZóIŸ¿Þí{Qîô½&ýY”{ã¶ïIž;éóå^»rw}žs¿I~æ¡}§î[ŽI~ve¹'¹gîýrv¥žç>’ûåþ,ʽ(÷¢}/Ê=IoNå¾¥¶ïE¹oYåž$7§ö=I'Íï<—{-ô|QÞEysî3ÉÏ¢¼Ýe™U™å¯òÞÒôyQÞ›wy'ÉãÍ¡ýN’ÇEy§{nnþ'ùÙsi©/À¯‡µ´<" d Ðþ×ÛlZ©ÎßfS±\i]oò9–0øuóA¨A5êêHôéþËC-ÊÑèÓÆ¯PÖÀN¿6ê¾p÷­Amf£¾ZÒ@zG‹~ Tjk¨Æ¥¿ÝÑÐŽlÒ‡‡¿næìX_®•êÆ*°/ðpµmòå ~=(ÌH¡UVUðàCÃ"þׄ o Š´\ù" ¦î<öŽƒ ‹ þ–c±¬ÔÉrø˜ÒÿÚ›å¯H´“ýŠô"læ[€­È¢Wõcá6ô›•`|uÐ!þ»úë%ø=ø|·ƒQÃk\ùTü{XAÎ ûo<ÚlˆU%4G+=À!èn¸Ÿ4;ø5¸14­¸„O^éžô÷­‡žÏ^0bšDЬó¥=k£’Hõ¿u$´ªX‚ÇÀ/œè§Ò õc_ý‡'7¡ 3d´µ£ÝŽö¿n=¤[žaKœäf¿ì=j¢f¸ûчÀ>!¨Ë`òµŽ[ðä+P»MaǺÖqò×´Ú´ÏI¦xÁhî©¡É,â;0Ý9õ„k©FÁw7ùl…3 ïFm{ –ªv4V£'ÁÖxô±‡¸_ ¿ *wLX=GjEø±Ö>¨rXËšŠˆõ «'ÕlYµšíöîøëh‚_õ²£ÃaèÀòÙ7øw‰sfÔ 8›7I·E¤ií!x8»ÇÑa;©À¯¡%ö8h<Œ‚:‡ õ…(å$ê÷ÔT{H*å1è õä3ȹ‡kÌÕÚüFÈ3¨œÍ)h|ŒÕO¯7§*x ²l¡”׈AhÌSŒsÖÔ\•“(ÃfXÁD(xøv,xZ£Ÿëôðd5M2ª9¶¸I prùÎg›uˆ3œÑ¢å—†´&’\ZD¥¤u4~ÜAPØ`$å̳ ™äVú a©ŸoE 3]Ojým°ª¥§•X¤îËwjáÊÛ2ú5ì´“¿VÓýÚƒ¿&¿€êÿŠÛd0µÛ‚5guÁ“u¶‰ÇfØÜáž+Ô•iZ†á:uWiiàæ‡“aóúa°’Ë„€›Æ$6Ë+Õ$fz‚)ßd’™qù'Q‡†©¬ºË?ÝzR†(v?æø°ü ¡pÙ¯%N¸l7‰Ó£ëƒä’súI$—ÑÒ6c!b5K 1cl¼z!N)®@FO'“Qc‹µ$ÒH§3aí_àn?Ø­ºý±ÿ5˜tã]ªÄ` ˜¬^Ç™ Ta¼@‡v›B¿â­ Z½ø²_ÍZÃsôZÑèóM÷V(Wl€ðvÑ,ììwõ<û`¨›É-HE& …Õbíjú XÓÉ1ns]jÀ&ßÖ'áͼV³Š5{hÊš£ÈððæéKª µá“è ©!¬É…†ÃRfà0x³¤aªûhøÝÀ3%¬”É z ¬c`{tÖNsrÀ–%¦l 1e‡Ža»"rLÖÊÌa¢&žîPlB;“U­Í©ë'U)+f!Xi îFº¨“Q1kg(“Ó4x~% WM†°×²é$ ©‚Œf2c¹ca•Á§ /0?’Ö¡v=UðŽ,p‰p lZ`›¦m>xa~¡Ùú¹GN› Çç©æuÄ5>íäÌ(°wTPãØÏ nÏ­Â0†“ÊÉâƒ=òdݯÜúS‘¯!06ü€ãDاÃjΩ¸°Zˆ‡ËŽ`&¶´r䲑e¨§¬q\Ae±wÜl¥hq~: Ó".²âøñ§«5ôj ™å…•¾gÙŒUpÚ^á ¨Ål#âphsBõÏù}ËTÍÍÆå¦à¯/7] ‘ROÔWáªÃáRš—±9€•žˆ½Yîp͇7‡ãlÜð®qÚˆ1o­ ‡.Üq… rpàÆÍs îwØ‘¸±M­¶xÁª¹BA4±Yü-X*е`½m»Xù?VdñTlo“~>›áX,5Ðjš’P•ðÚµ~ꇉ“{)ëÞáÒz ßðÓ£ŸšÌ)øu².?TÀàûG3gÒ^ƒ¦°ÛCZ°Åp’kMg¾ÃCu@>V4ñÛDÁÝrBã¦n#çÚà ÑäêHv/`+O»x¦º¤Æ)8•R†–Ìx²t·ã‰õ8c`Àú¿PÕ¡{c¨ê ;Õ¾ù ßðnæDºyT¤fû‡:5Ñ Nì·µh’1N0êÚüÔàÓ@XijÊâ$ z:3­ÙU‚öÝ 7Ç^8á8]š6—›¡¨…Ÿ •3)¶Ú¸ eÎÆ9\ep ¥LM—é-èÆIÛ:Ž5L¶?x7‘>±*Tа6‰ÿ)“娣¤¦°ap«ÀÞÊïÁª½/ôÁ¨îvÌV/ZÿëfÿëÑþ×_ö¿nõ¿nwî{ØÖàÁZ3GNi¯ìà}d ¢À¼Ž@á§ydïp²ƒðx@¿ûSÒAÈž—ÎôÀÏað²ÍÄzŠôºc@V¯L2ú ' Í;,lp Žmð ðd]ŠZü†ÑMÍfs¦xE–˜…pöIÜËR;“[á´69ñÍ8:K—Bg‡ñÁ¦¤Òo…—á“IT¬¡ÉƒžøhÔ:â­8TáðØW8‡3a¼¼ß—÷Áu./ª×-CÉX¤™î0(íÆ’>ƒ‡¥Ú_Ó|%ÏÀLi•“VoïpæÓêŽO±9%ŒPäM«4áM˜F>Cå K—G` ÷=v?ü˜‹#ƒýSè9¬nààSê ¶b³Ðbo`Õà1xM8‘ü”]²b6ÌR‰šŠšÚ&ÃãH¨"k¥ 3¶#XE‡™ŸÄt:uNt/¾O¶—V^9Üs&ö’zµ5¡b­ ¼Ç)uÛ-.¦5¤§T¤Ç=î3ÍÃfí§Ó<~ü—X*¨7ÁÚeÓñ³møwŸ)i¨ì$q3R —4ÏÄ«P°%²úYêtÍã¡™N}ŸJqÈ ~sB?ˆ™Ö¦…úˆ×Lµ&X_%ç%W_ÿÕtÈ-ü£ðË5‡CÀ¶*PŒ-)³…ë’¹íM£EŸeµOpúŸ·u†/œ1ƒC cx,}Óó-Y ‰ùÓDµ°Þ!9U!òL« ¯†L檒 œ˜î’gP7kT!¸—eÕ¬Rã©ÑªkŒµ•YT$¹sªA¦zÑ]YÓÉê=Þìp\Ó¸NgºÀ|&«Ç䣓Íï¶øÓ lÍeÚÚÅ»”ÉÙùtuÞ÷ ?¦+ûI H*ÔƒçµS†£óõ‚µdâºëLy²²ÃŠœ¤Êva=áÊ‘‘fÝ<×ÈøÒMs_O ¿¤æœÖå$ˆƒJá5¸]Øüð…ýȲó²ŒV»Þê–?Ñ-S%#þÉöjÖ¬Ö'`ã>Îáè2Öħ7µVó懊»ŒÝpW;ÓJ¬&ññªGX3®¾©'é>©–óÔG¦9vYé‡å›Ò NÚbàè;¬M­£}0Ämš¶J‚ ±nn‚­¦Àßãp¯e‡¬Uæ}±¦\Ë›?ûš¡"L]­¹”ºLÝl‰®^]‚ÈÐÉQQ£þ&Xüo¦Ÿ²íÃ|Å!aC’8…{…Ú²û/’èŽsßíDtÆ ö ©²$·¦§\TÁoÅ™RC¶N¥ a~±b¥Æ%lì>m?‘V1ZÒ„n™³®th$qý³Ú›ªþq›NÖ?î-: ê>z8 1ýÈÜû#°3ËÁƒ9Ÿ4Þ}€Og³ 8#Nýžð ê”Fd¦J4I/rЖyVŒæq±ÉF£ZpXg %!k³­Ê "àÓ`Í¥ñ³¡Ï0¬© ôÚ¦ ÖÍ'ëúS†Ý¿úbÅèøžÌ  ûPXÕA$Ê 0Ì `s¢Ö›oášR~9x6³ÌHI`Ø´´:0§[«ÖŒiÕaóAXèÌb.SMdÑýv¾?å»aTc’šßm«–Š)Á®«ùÆ[~&Ô\õ“õëSiAã,,~óÙœè BÏNµõÁ£É¤9 «sZJ`Ö=MpG~IÊ$úQB_pZ7&ijý W}ÙNÒêl,cUl·´6×B ŠaµI.§aÜðÚVgÐ¥ùq"³Z3íÓV$P@ C-lØð– ^ј MдÂÐtÎÝ<©uŸl•9Üef.3l !µ€£ºag³tÛKÝápT¦I†%õ dï©0q ˜ 6iËÁ§«oÖ»s|é"|KoXChƒhsx“†x‚›Ì´™‡ç?&Ž03Q_H%ä,ëaØÖÒ!ðÛëÞ¾sNäí®n$Þ_;e“M¶ÿÕÏ$˜’Ïxб.oøî0´ùKãdƒÄŒ Ý!›Â 'ÞIkÕ¦T’^­£½ŒÐ]…å%"žeO2áN¶®d“ÂoWI®¾û_'osx½+~‰ûjÞ èîŒr!Mj×é .TÔ]×s.MÖ0… ò}(¬úd?D‚–@+ï0å¾²’ì®ÀÍfÔ†w]à ·&Bg ø:¬"ØÖ[ïæÌퟌßÑé,ƒ‰Ê³Eßuïes†Ÿäì™j6Þ7ŠšWòeâøÄÜ$SMìV•´ .áŒ,lÎj¸»¾-ø6›ÂȆ°97ßñ|% ã—ZVÕ }$»IÚv: kÛéöÚ*Ö^p3-âê[ùѳhðx2Ðêä8ÅbÑo nhÌDKF´c|%½èX"ßmº™o÷9· æÏ:ù MMÞ¸½´Ÿ £LoJ-u¤ÚyÖ@M”Iãf퇘6Ì%ÁÁ÷ cD¬ï €¬3“&C(°ÖŸ uLä$&;ô@¢Ç“»ÄAã[ØôV ÌÂŽ§µ»sHЙÀ|ÏÀ’ã…N¼PK^<’±&½GÆøMòø²Õ/²bû½öF;=žl)Ǿã‘19^°Þ&™ýŠ'Ìø¦½ôþÂh{ñ&grFM2Y€ÝµÖyÚ¡õš²Éº3ÝÉ‚M o½o+Œ÷ÐgêD™< 寰aˆ“‹Ø<M|Ê‘ó$Ãåy\ªèyÙælƒ‘7'W‰“f[g¿â?Ö9a’›oôËs3^&V¿"‡­\_Ûj¦Sî5›ŒYAúº™8ï¥û³pÏæt:®ŽXPhªÉc™V@¬"‹:3è€ú‰ËBõê˰ye²Ê3uež Ê™a4ú¢¤¿3ë‹`P(dr×°«Y‡^‡ìe†M$aù›[ øé¤kEÀºw¸a“Ð/óbë¡užGûî€æÁ–§mvÓ„– üë?gX“½æv:iœ7Mì½ ZÚõ5‹:ç& cÎËp&·e‰“WÁÂFx™9³{SΞ7š œ­5ÜrªÐ Ž¢¥W1ýÓ6œÝ(–³Ã×Rkd¦éÄZȰ‘xÑŸ $}%g˜Î¬7©ã½ŒÆô>y’u’v”<õÚí|¾°¬ÓXÖ5Û9?ÚÛév‚†s½ g`-gêW¿^†3Q…8Q¸+4Ñd·²YÍЧ -°Ê®£Á]Cÿ¤dg;µi¥Ž‡I[¹0É«0Éa¦¶ ­óLë®ÝÜ¿aÉ+¡'›úOÆ`2ƒºõHTC +z3³¢;~ Óys0Ñ\Nm#§3Œ7Ƭ}C˜w€v­Lä”Ö²~©]eÖ~ |ózÒM4©*y¦°1lMTœì­[ S¸¦p’iý”£L pËy ¼lõ l[¦kž]æ{¶£ÚF Á@…1gid>í9öHY×ÉÖAñ1c 31Òc“‰óõXÎl´Å@kÍrõq—YÁ¤?çÖcQ ¯~^¾e:‹y›MÍXÂSí%MãYéÅ·ÈÜ¥ÊÃÞ éô‚Þnuoq é”Ö³á3°è„4•­HªÐÒ³ûU½ êpXi3òifYkk`Aw³álmà1S <á@uµ6u=œY.ý›½æÐÒ²õ‚ù3ºëgG“:2@®Øb†­{Æ3œ«ç¼Ô:ÿ${ã42Ú®I½ŸvYÿæm8¡¬gSw5æ¡U'}i6`Ÿ¬Qó‡5mߪ:­e£õjöé@°p)™-lXsÆ Í¹é”l‚Y*å0gvˆ­¡uýõ0TÚ*Áw•¡ Š1›…õ®#ÒÔºUí[ÇQ ”ºâ RÛï¿Ed+4“ÕØ”ïØÂt[€IÆ'»pP2u«n®@_Â/§ç6k×ìÙîÉúYƒÏaÀ§Ùa##¦Ԅ‹›ôtÑê­Ìô¦%GrÁÛžy08É·Ÿ­Ë8cebž ™îÐßo!&b’µT³o¿¸l}ZõnÊí ]Քéö‹Cô-šòz4e,¹†1˜=íOMÒˆ5ZÄ~Ê–ºÞ~¿xCúߤ?ÉÚ·ß­°)Ë+w–èóÐCeK–nó!阕œÑϼ)cw”œ^y~ûß¹Ø:Hnøo˜Ð䚺;÷­/Ñäš§Z'h}óÐÎpÎva냑6à Ҝ¬†íêÖ· Íò7VC\E뛺Û‡Ö·¾íŒEÓ˜÷v´¦3CÔË3 fZ Žœ².~bë=ÏšÃÅ“õk©0OJ¿ZM_÷¿È¹¾:Tõ*tzÝÀ.´w¡½7oíMºÌ.´÷梽¸ªo.мÐÞuÖÞpÓe}yתì:Ú»ÐÞ…ö.´w¡½ í]hïb·ÐÞ…ö.´w¡½R{#‡…ö.´w¡½ í]hïB{gp>eÝy¡½ í]hï¤Ú»˜µÍX{±îÝÌ íÝÈÚ‹íÞB{×Z{#¢½a|É7ˆ@®u7Cà[¶öeX“AD"®ÈÍÏ /´w­\}Qç¾ÆCà…ö®­öÞbƽ«ÐÞ0XÞFD,´÷¡½’ÞœÖÑÚ»ÐÞ…öΧöÞǽ‹Ón í]hïB{Ú»ÐÞ…ö.ƽ í]hïB{Ú»q´w1rXhïB{Ú»ÐÞ…ö.´w¡½ùÚ»÷.´w¡½ í]hïB{g ½É7Â,´÷梽»xÜ»K¢]/´÷fYò4[hïB{ç_{Q}o1Ú;7C঳⚚á…öÞ\´w“z¡½3ÔÞÅIã…ö.´w¡½ í]hïB{Ú»ÐÞ…ö.´w-µw1k[hïB{Ú»ÐÞõ×ÞÅÈa¡½ í]hï®ÖÞ[bTß…öÎX{Q}×Q{ãÞ…ö.´÷–­½‹˜Ô í]í 2~ó#ÇÐ…ÏúÍlÜ»¶Ú»ˆê»ÐÞ]Õw¡½ íݸڻˆI=¯Ú{‹÷.¢ú.´÷f¡½‹Ón7í½%ŽÚ»ÐÞ…ö.´w¡½ í]hïbÜ»ÐÞ…ö.´w¡½ í]hïB{ãÞ…ö.´w¡½ í]hïB{Ú;OÚ»÷.´w¡½«7à gÅ5Vä…öÞ<´÷3rXèéBOzºÐÓ…ž.ôt¡§ =]èé†ÐÓ¹™]-ôt¡§ =]èé×ÓE¿¿ÐÓ…ž.ôt¡§ =]èé-GOãÓ…ž.ôt¡§ =]èéBOw…ž.-Ýei©<î3ßzöEÏÛ¶´´’^ø8I/¸»¤ç½zåKŸùæÇ~õ‚ÓëtpÙ{ê¿¿ñ̯œiÒý>ù“:½é€¯ü þþM÷\cþ¾Ýé[nœ"ýúE÷~Ñ6“Þëùõ}¾þº[¿«NÿíŸxxýü{hÿæï‡VŸ–ô‘gí#é¡ÛLúˆóo4éÃ?/?üçå{û}Z>ÿůË÷ñoäó_<ýlI_cÿ¾‡\÷“¿òe›Úç>ä·,?ѦO:PÒ_’¿üùÞ¾»™Ïoó¥Oo“ô=õó¿vý£_[ÿýµ3?øp“>öµß^2鶇Kúê_—ôUg˜ôQ¿p˜ùÞè™?4N8^Ò§ÿ™¤Oû#IùYò½ã^)é~[>Â#÷‘ôÌçÿígÕŸõÊ{]]Ëó«Ï~Þ·êÏ¿zè_\þ•+¹ß6“>üCò÷CÏ“¿÷9LþþùËmº]>ÿù_“tï(éYÂ÷þSûù3ì߇ž éöóìç÷’ô~§Êõ÷{£ðû=Æ~Þ—ô¾ÿaÓË}îûùÞ½|å´;_jþ~Ã¥nÓ7Ôåþʉ»í4üÄ[½ýÊÖ·ß éÛþĤ}ɤ£Çí´é&½ãÇÞnÓûšûÜñ£Ÿ©ÿþòM/ºJÒ-¦|_>ÿ5¬óýåýºÑÿ•ôˆ%I÷·?Ôþý`û÷}mº‡¤Ïû±M¯ï=o»ýûÓ6ý¨I?ðºÓ ïQôÈ¿Þ&é åï寘¿O+v—ty/IùtÃO{ÄÿÈß8MÒMÿ`>Åc¿jþ>åN?4éóóÿ™ÏŸÿ虿O|àÿ™¿ŸýÝ›L9ûüCê¿oü«M‡Õú|ãiŸ~‹ùûÝ{ÝŤ¯yú&}ùs~ͤć¶IúPIïóÓ³%ýÀ ’¾ùFIo¿Iï}½\w¯ÛÈ÷~îcõso<ì)Ÿ¼QR“¿•ôˆZo?úýÛ$½«ù|ü¨ŸÚô·åóž"éø$¾ËÜgÜÿ¹þ¡(Ÿ?ô¹î¾”¿ïõùûž¯Ó=÷ÏþǦ{Iú–˜ô…ǼNÒ£R§_úë¿Ù{›I?°·ùûÔ|^ÿ/=ãþo7é“tI]®/yÛáGîþ’.}Þ¤›/5òüÒ>–ô]¯0é^§^¹MÒªÿþâþëçë¿¿¸ý(Ó.¿xúÁ÷‘ôÀë%}Œ±›_Ü÷mÿiÒ;ìö›¾Ó¤·þúLºTg·NïøÚ:ýÂ_ðÑ:Ÿ_øÆM¦]|á+ÿu‰I{ß~DïÏQìñçÿåÝO”ôµ±©ùþç?ðo¦oï?z›Iïü_†¿å7¯3éï|ßÈçó§|òþæ{/ºöýæþûmÓ>ÿ¸g|]Ò§ÐLå…’÷IŸ|œIþãc%ý£¯šôQw?ÛêÇû5ÓÈýOz‡¤ÇÞ¯.÷g‹Ï|ÍüýˆžgÒMûÊ÷6=pIþÝ&Ýï‚IúèhÒÑ1&}À%¿øÖÙ’~óÇ’þ»ä÷_¹•Iïz7Ó®>{‡÷Hyïpª”ãoÞ.雑ôÕgIúÿ~ÉäﯬäïJò¹tŒäkéÉ×Ò¡¦ÝÞðÍÇŸ éÑ!é?‘ô°ã$™~ø†¯=Û´‡n8ï}’~fI?eîwÃŽï(é¿ZÒÿú¼¤ßIúy¹îò?Üݤ—^óÂm&íÝ ÿâÿ3éEo5õ{Ù›ŸY—ㆷ]%÷Û’ß·]pIßòØ›$ÝTšûüñ·L=Üð‡¹¯¤~º¤ï0íê†7½ÐÈr¹ïK¾cäwÃK¾-å~ÞÇþФÏÝëÑ&=áAÏ‘ôrÝ {K¾žñu¹ïÓ·=§‘wƒÑžrŠüý”—ÊuOùM¹î)¿!å|Â×þÈä÷ 7>]þþÒ’~^òý„ëåþO¸Fòý„rß'\ös’þÅ’\ÿç_¿y½Ix–È÷àâ¯Mùö¹ð“Þÿ?o%éÌ8ã†ûNî«é•ÿm>¿ïXê{¯ß=\Ò´‡îý#‘Ó½¿ˆ¤ß=[Ò÷dÒ{>Q>¿ç1òù=|”IïörÑ«»ñLIû¤[ö“ô ÉïÝ#zt·¤žï6”z¾ÓAÆN\ÿÝךò]ÿíþ¾IozØ×$ýÅ$Ý÷³’>ÈÈãú¯ÿ×>’^÷úFú¥?9EÒ×Èõ_z•\ÿ¥Säº/½ì8I«c$½»Ñ¯ë¿øíjù\ÿùÿ5z{ýçî-×}öóï–ô‰Û$=Æô³×_õô‹LzÙŒ¼¯¿ä§füý%¿jêõú‹¾v~]×úû¦¾¯ÿôwOo¦_=Õ¤Ÿ8vÛuú÷go2ŸyÝÉ&ýàëÁ¤ïÿ²<ÿý§¹_ÿÞ~]ÿž1íàúÓŸt†¤Oçœ>z£Iÿò§Âÿò}F?¯ÿ‹¿5ãçëO»Ís$½•|þ½þÇž)éQr¿w.÷{çÉï;6ztýÛ¹üé#¯2åþýÓ½¸þMã”ôöb>ÓmÏ7åzÓmN’¿oeôûú7|èp#—×$åzݳ÷—¿OøKùû—ß&éq“ôÉ"‡×=^îÿº£$?¿ówF¯í'_gîÿÊWíiž÷ÒW=½þ¥Ï1ó‰ë_ô¦÷IúÑ—ýŽ<÷¤ÿ–òøÛKúŽIú{"Ÿ·‰\ž{¢_]ÿìÿ}•IŸñ1¹ÏÓ·ˆ>ýʯÞÃ<÷WžfìðõÇÿLžü?™yÖõÇýó²I~Ð’I7Tê¥wµ”ïÿ!r}øÿž$é»ä9û3©ýŽ“üïw äó!Ï}Ý÷9’ÿ}Oyìût¹Ï_ ÷à^ éE_pÑ‹ÜZôûþ?}¾ÿÙß2éÞ&íæ¶ýÇšô6?~A]/×ýôùfuÝO¾fôõº>êÿü××HúJ#¿ëþidêçºø²<ÿ#oÛOÒ?6õyÝ™ŸÞSÒö•ôÐ7Jz÷K%½•éß®ûн‘ôgKº§±ƒ×ñ[rÝöü¼»ß^÷ÞÑËljÆ×½åð“$ÝbìÓu¯‰ÑÓë^}“Èõ忽¤‘û¼ü?j¤/:Wòûü{ïôÎ’Ÿçï!ùyþm%?'½b“žx²©ïëN8]Ê}à7¤~õM3~¾î€ÓÎô]’ÿÞ&õ1zá‡$ý5‘ß`Ÿ;Iz¹ßà.§Hº$åyÄF®Ûÿx3o¸î¡·ŸÑŸ;½Âèϵ?¼ØÜ÷Úï¿îö’¾æõ’¾ôGô~î¯}Ï—äú÷|ÈÈëÚ·þŽ©¿k_ÿbSŸ×¾î“¦ÿ¾ö5—ìÕH_ýzùþ«·‰^ýÿL{½ö•{"é^¦þ®ýíîôÛ%éYï”ô£·“ô#ÇIúž=$=ýU’þå£Ï–tùû/>r ¤öû§ý‡¤ïþ°MO”ôÏnS{¿wm·©ýÞ;_#÷}ç åï·ýȦ¿(韙õ“kO¹AäwÊeï“ôMr¿—}_äwÔ߿ԤGüóY’~Èèݵ‡ýªèÃaÇ‹¼ÝöfIŸ÷“>n?©§Çí+õô¸»}»öà/ˆÜ¾AävðµFï¯}Ì—Œ^{ß_2ë×ÞñE¦Ý_{‡ýE¯nóº5ÒÝ$Ÿï¶èÛ­N“ú]úWÑ·¥k¥Þ–N5zwÍ×e}ÍU3öãšÏ}£¤ÏÚ]Òû»~ͽIº·Y7¹æòG¾^Ò}$齌\®¹àß^]óÞƒ/6éi¯6öïš?ýÓN¯ù÷É}ÿð-Û$ý£ŸJú§4Ò?ØÿIÑÈãš7~á}’¾ÃÔÃ5oØÍ¬/]óúÿcþ~ÚÙ¦>®9þ¦®9î7n/éó$ŸOÊsŸÒÛÖL)ÏÊÃå¹O¹¿©kŽúË£Mú°#ŒÜ¯¹÷7÷•ô¦Ó%ý·½%ýò;é=Êó$}¤‘ÿ5{~ûLI¿&×ïù—"÷Ýžs˜¤'˜ï_}Ó³îRëåÕ7¾ÔÈÿêswIfäõ—ózIi©™_%iïG’>ØÔÃÕ×¼ÿ2“^uµ™^}öÌ:ÎÕy‚©—«?ø3é{—Mþ®>í¯åy§½g[3=ÍÈçê??ò†FúŽo¼OÒ›ö1éÛŽ{žIßzœ©«ÿà¾ß4éë7öäê}Úô;WÿƃŒ=»úÄM'IúPcg®~öŸ#éÿÜØL¿ó4I¿yC3ý’i×W?ë&Éÿ3/x¿IŸöw¦Þ®>à—M½]ýÈÛ}¸ú¡_ÝaÒ=]ž÷ ãOô)_ôØã`ºÏÿì+é™z¿úþÏ0vçê½O8¹N¯úá‹M9¯úÁ•¦]^õíê&I Sž«¾ñ³¯Iú“šé¿ é÷Žk¦ÿnôâªÿ¸Ü¬C]õµ0õxÕ£7Ôú~Õå·3r¼êœL=^õw1íöª¿›‘ûUû±Ý%ý›S`zÆß'éM½]õþÉ÷ßÿk¦þ®z߯É}Þ¾÷Iïs”¤÷Ü.éÝ‘´V×:½ã£$½ÝY’î.rxû’©—«Þöo¦ÿkêãª×<Äô¿W½â>\õòG$éHäõÒÛŠü^ò“šé·¶7Òß¼ÖÔûU/ø”©÷«Nüu¹Ï‰'Ê}ž¹¿ÔÓSï åxêÛljÆÛW=å¿^!é7¾]uØ}̺äU½§äs|ô[%=bOIë⮤½Èý{Ï“úì=Wê³÷¬ã`ZÜÚèÑUË?3ztÕ#ï(ù|ÄG_/é ^]õðI~ïq‰Y¸ê¶Ÿ5r»òg›o’ô@#—+ÿïÇ?'éfSWþô¿O’´¸“¤›Þ(éÃv—ô!Û$½ó×$½Ã ’Þö ’îv\#ýÉ÷k¤?¾µ™g\ù¿_4zyåž¶,éñ‡šô{ç=½rÇ]¹ò⯚yð•ç].ù8ïˆ?0éÙ}š¤¾AÒ=IÒ3vHúRž³ïö>IﲤwçŸ};3þ¸òÏ»¡‘þÓòýº­|ÿãçŸ*é'vo¦/7z~å™›M»¹òôó%ô$‘Û ¿)é#¿dÒ7)r}á"·7ÜÊèÕ¯ßKêãõ÷”úxýÝn”ô.R¾×ßá†FúºŸno¦?EÒˆœ^÷á“%ý <ÿµ_3z}å+þßßJúøwI*ë`W¾â°“lz ¤ûHyO|ÄýMzÜ~F¯|âÛEOŽºÎô‡WñkçIút3þ¿ò°_%é³~$é3^*é¯|GÒGÊsÛÛ´‡+·|úGô1—í)é9¯—ôÓK’~ø&}ÔKDnz¤ioWÿJòµü]cÇ®¼ûEîòD‘ç]/ò¼Ó>òÜ;í~X#½ã?Kþöø¦èá—‹¾ìqîYÍô$¿·¾ê-’þ®™w]y««Ï¬Óß:×ÔÃŽ—¾îøÜÆníØqwS¿;.»ö’^µ»¤—o“ôâŸJz¡©¿=lÔH/¼Ü÷‚‹åº .ëÎ{ås$˜u–Ÿ–~kÇYÿkìÒŽýí&}×Ïäów|TòñÖƒ'éå¾o½½)ïŽ?ùìa’^{ž¤W(é埔ô’Q3ýÔ~ô÷?wwIßlôkǛްä/{Å’¤¿aÖ vœ44õµã™ÿgÚéŽã^ð×’î·¯¤ûž.é÷–ôçß!é}ÞíxòÞí8vÛqôñw–üsåë%½\ž{ÔcžbÒÍO4ú·ã %£';{©Y×ßñ Û}ÙñÀÁ>&Ýûp‘ÛÞ÷ûí}W‘Çý.2z²ã>7ŠÜîóE‘Û}>{¶¤×=JÒ«Îj¦ç½Ùq÷/¿EÒ·šý€wK~v{|ÅÿÐÈëŠ_märÅUgí'韙r\q¶Ø—+>q‘iW|ä÷Þ(é¶m’þö)’¾ød˜þÝCO5éß~ÄÈúºÑŸ+Þv'Sî+Þ²§‘óO¹ß &}ÂCM¹®ØúÓn®8ì½o–´/÷ټæI>6Ÿ#ùØü ÉÇæÜLß±UÒÛKyûW™ú¾¢ø]yNQÈsñËF¾WÜó‘ÆÎ]±Çs÷’ô¡F.—ïë†_þï}¸ü+2¾¾|Ç|.¿ä†=%½òö’^¼$é9?’ôFî—_ð“ïËÏyíÉô_F¦\—ê3rý§þY®ÿ§Ñ&ý¨Ì£/ÿðW4é{`ävùŸï!÷{Þ[äófÊsù §ÊõÇýý›%}âé’"Ï9îÑrÝSÏ4öêò'ÿŠ\ì¿ ?öáÇ^¹­™^|ФçžÜL?°UÒ{9_þø;ˆ<Úlìæå¾]ž¿ïÛŒ\/ßëx#çË~²ÓÈó²ï¾Þèëe_û™‘ëe7þ¿Ã$}ù’¾h$éIË’>ÓÈý²/ÞÅ”÷²Ï}OIo4ò»ìúMg6Ó;˜ò\vù¡¦|—]¶C¾wÙEFN—]ôb¹þ¢C¼/;OÖc/ûÈ#Œœ/{ùXžó¢H~N:ûÍ’>ótI—ït¬Üÿ¤£äy¿öi#ßËžýmùüÙ_—ÏŸ}ã6I?{ФWÜL?¾µ™nÙ!éCŒ|/{Â\/{üÿI~{?5öè²=? ß»Ó]D®Kÿižé÷ïläzéwNÞOÒçícÒoüÀ”ûÒ¯ßÇäëÒ¯|âTI?fÿþÛm’¾ÿIÿòd˜~öŸ¶JzÐvI8Û¤WÈúÛ¥¾ÎÈçÒ ¾lò{éÇžkêÿÒm¯’ïo{™|ÿ5O“çýö}Œ¼/=åŠ7Kú<¹þ”gIþNùÉßo].å{ÉÿÉç/¹îk’^-׿¤oäu鋞x ¤ûíÙHŸñ‘ñgîôo¶7Ó÷žÝLÿü,Ißzf#Ýü,ÉßÞ?oä~é=öXžsëwI¾nõFóùÅ?û7Iÿ÷Û%=Î\ñ?hÚÓÅßûæY’Ê>æÅß“ýË‹¿w¤‘ËÅÿõg¦Þ/þʯÈçŸýµ“$}¤ÉïÅ×¼Pîwõ¯ ßq¡¤—_fò}ñyIúÏËÆ>^ü±cm›‘÷Åïþ˜|ÿÝw”û¼ó$IßñiÉï[ß%ßÿÓïž éWå>ú…Ã$}¼©ç‹ßò(›Ž¿)é@òýÇyüѵ§J*ó´‹ÿèÂmÍôìS$ý¹þ÷ežvñ?)rúÿ´—¤ÈõÏéË}ŸùÉÿÓ¶}¿øøCÍøëâ'¿_îûä÷þTÒÓ>.é;N6é¿+Ï9æC’¯Í›ä{Ý(õðKßùüÒoK} O»FÒ' n5ó™‹{'J~z¤<ÿÁ²N~ñƒe}üâ&åÚç4©¿}cƃï}´ÜïÃ?)é!/—ô±Ë&½ï~Rþ½®yßûdÉÇ]î+r¸Ã…òù'rØCöã.ÞãtÉßmß%åºí›%·}­™ÿ]|›=å¾»o¾wÑÿúÒFúÝí7šô[¢O}é9æû]tÎÛ$}³yþEç=ËèÕEŸþÜž’^}{I/•ûþã˜qúEÿð/§JúëË’žø¡fz¨\÷ÅwLú÷7}»èŒ:Û¤ï{’MŸð(Iü¤;SÒ%£—ýåy\ô×™ò^ô¶=¾èOþî’~@>ÿ“ÓM}\têó¥x‡é›þ;¿`ôÿ¢“ßmìÃEϽ“äã9Ÿ6z}Q_Ö¯/êÿªÜ·ÿT¹®”Ñ«‹–·&éÛE>šÜÿáÇ}RÒc_.é1"—ý_*ò|Øgå¾ýc¹î¡â'¥é/¾ÆèÁEúùþý¿/Ÿßÿø­ÍôXyþý’çÞGöÁ.º×’ÔçÏ}ÛÈgûgejûW¾ý‚¿;UÒ¼QÒÓMù¶æ³&?ÛÏÚnä°ýï7ùmÿ°Ì;·øœŸJúgæ¹Ûÿîä>÷oÂÿîKF>Û?ð&S¿ÛOÿÐí§Ýç@IïnʳýÝ?û¾ûw%ï>y[#}çþÆ®nõ»åþ/ÝÓì£lÚ§mß"ëÚÛ·ü†|ˉòÜ-›\¶x½<÷QÏ—ç>ê×L}l%÷=f[3½³™·oþÑYtðo"¯Á‘r¿òá’ßågË}ñÿàæ½$}ÄR#=ãפœ¯û¹Lúä×IþŸü*Éÿ“_&ùxò¼.î{?Âé·¾c҃Γüøt¹þ1§Èõ¾BäôèÏlk¤ãÏË÷Ç×HùÆ—Iþú¹õòÜÞf¹¾¼T¾÷ȱ,ýý>Nò÷î å~oùØ{%ýˆÈ÷ùÏ5ýý'|]žûÔÉõÇî+õwìÏË}޽—Ôß±w•ûó{’¯c¶I¾Žy±\Ìó—%}¼àhÙ¯ÔôˆŸ“|où¹SmúbIï,ÏÙr[yÎ!;å9‡üèd“n~”ï±ß•üýÒß*©ôãp°Üwø yî#düwÁ#öroú‰äóng};ÿ{÷ÿüý—$½×šé]¾œÿ9ñÓ:ÿs¯’çîeJúB#×ó¯{ü%=Lž{Ñ›éÇ}Ÿ¤–û½úI_ü£—çÿ¦¬Ÿò-7Òß{ФO–ò?ûþò÷³ï}r3ÝSäõì=D^¿ú¯IúZÉßÓ_$å;þaòœ_þ_‘Û/UÊù䇽CÒ*éÞRž'ßSòÿdñ79ÿÉ·“çm•ý¹óº“ÜÿÈošú>ÿÐ#w˜ôßhÒñãDnûKÿ~þžw•çÝéûføü[?ÖÈñ¼É~ôyÿõwûHú½$=}OIßy{Iß²$éï›ûœ÷ƒå{ߨ„ãÁöóûGÒ{ß$éž7Jzç§Izk“Ïó>{º\wÃßÈ÷/ÿÎóΗñÓyz¼)×y¿ÿX£×çmûÙ²¤ç¿‚ó~[ôû¼—l:EÒ‡œ,éN’t/Sç½øXSþó~ýöRžçý·äóyßç>w,ånyª¤ûËóŸ+~ç=÷çåþϽ—Üÿ™2ž:ï™ï6ã¥óNøÙvIÿu_IŸ"åú•ŸHþŸøõ³%•þÿ¼£GFÎÛSæ!çÝùM»8ocåºÛÿýÖ:=wç§ö‘ôã{Iúá=%=ãö’¾gIÒwšòœûÓKM>ÎýÉäû?©äóŸlúޤ¹IRñ÷=÷'âï{îOîfêãÜ›þý}’ž%ß¿ééo”ôþFOÎýôß};÷,ŸÿÕóLùÎ}ÝïlÇé³÷•´2Nq’¤âçzîk•ü¾úcRþWÿ¥<ïe‡½CÒƒN•Tæç¾Lü2Î}™øcœû²Ë}ó¶FÞçžüùþɲsî î ù}–ô¿ç>ã ¹ÏÏ¿ÛÈÿÜûºUÒI¹¶ýõ’þŨ™¾}YÒßXj¤¯ù©”ûU¯‘|ÿÖ«Ì>Á9/|ŒÜ÷¹2>=ç1r?g“¬ÏœóÐS$ßýMSçU§·2ùüÌ¿îv¶IÏý=SŸù«Ó·KúÚ}%}æÿOÚ›Àå˜ýÿÿ7¥¡”PÆÄXB“lÉEB‰K !I’-!)köŒ-ûNöÜ!„’¢˜,Cöÿë:¯¾“óýøŸß=ÇÌã©ûº®sÞ罞k=‘$ÏwOmt ‘é ³‹¯Ä?MŠ$.[A¹âÎf’§]Hž?œŠ;hGî¶‘¹…ãXÈùå©y b$Fôd;¶Ç„¾Nµ™mHFRM–$» $»p¿&(O“Öw+ê£I#QN5þÎöärÿ'ÉÃÛȽ äza—SuRO¿Î¤¼¦U…]N™Ìa;•ŽRŸe§PeÇQoeƒ©¯²Ã=ª_5ãQßX.ì¢.¹o«Þ_½˜4,"+ä“e…¿¨÷Vý¨÷¼É#ÏZ‘)æäaõæx59'QbBf&yý'\t"ÏØ‘É62±ý¹ÿx+¡Ou7žçªÛy$y«nÇëÆêvŽidGÊÑÎFè[mN9¬Ïn#SÈD¡_uÓÞ«ÉîwÿH \æï¨ú=Ùn½ÍåÉYþä$ö_rßT]¹9õV¹ õV¹žØ~òã>¡ç“)†¢ÿ“;ï‘é¹dJ™(ä>9s²J0¢³!©%ú?9u›/ù§ 9OÈy2l÷ÙÂW¢ßyöç§N ÷Ç‘›(ßò™1⸔í3E{)˯$‘çÉ£ äÎ8rM$¹PŸ2ÿˆ¯Ìí.ä*;ršð“”Ù¬ë)# Ik¡§^ï=ñà²h÷DŽ¥ÿDâ-C™Ë…>NlèÊýÖœó%“\È¢¿KçæJ\r^ŒëÄô'lwzNÉûÆ'¦ŸŽ”ÉûÄ¥ÜÂ~yPû•ܯñ ñwòÎk’ó:{òá'‰$¯·'¾G$w‹v“÷èsû2y5y÷Q;rÐOrl4û‹¥ÿ'Ç´íÿÆ÷@Žg¼3$ =?e$ä:~"Ï—¼åB¦‰vïí+qƒÛYÿ%äýÉãëy_²”¼YÊTZÈy|©“ˆ—ãSù¼äq¿#<®[MÁc…ÏD<{Î:vì¶n©%ôvìÖß ä³8ò»uIôw,CÍ߯ò¾ô±+eøûå·¾2Ÿ¸·íÈãB¾cÛ®•ðŒÐ×±„l'ÁFäËcî-¸½Ù”¯v ÐËÑ×UÄþG‹® ýÍY¨"ËŠþŽÞçB>ý=Ý'WbÒ3s2׌¼Îö’RÙNÒ¡"™[yÜš/"]òžÇÍ5äþsˈý’^0!ÿˆ$úHzùʆ|fEÞ1#/’'Tä¶ó²¿ÐCRÞ­\™iä15¹VØ')í+ÛMãû]Ii¼Ž˜¤v÷”8–çaICÔd‡¡Ï¤úo…½“~9ìô#| ÆqäÝ“\òvyAô¤`§ïOYòÞב;儞d}3#‹ ÉG*òF‘̳ìçæ$PèûÈ…ÕbœGJ®+Ùù÷7á}«#Õ£ù»Aök`Bò<÷ˆA9¡Ÿ#úÏÙ¿>ß{=¢ŸÎv*6äïz×…Žh¿Ë•ù”ãÖæsóG´y_êðóšV¤¾÷pþwCòµhÿpn˜§Dï-B߇f:I¬Ý_È}¸–93Öý6ú;ƒäyàá² rä¡¿›“µÌH^Ç=ôQ¥’Xüºˆ|ÌãÞ9 ùíú=dÓHèñåˆH’Ï™²üÝŠäýÔC¼`;y}ÿPãuÜ^¿J®Lm!÷¡zïÕä]öW¡ ÷¯Ð„òVø•íª{þȃûڈߎ›#Æw°ë'‰mß 9¶ª“KVÍ Ë‰þÖÝ•+ÑԞ혶5#-ؾ)¯4åõ¢Rò=¿ƒU«rÿªå¸¿á%¡¯ï&¹Šã¤u"=» =èådCÚ[‘õ Éò¢ýÝ—pÿnjþÞmd¢`—žü½‹U®Ìº¤‘߇b¡Ï<Ø~£nfd;¶×ˆùò€Y¢§Dý‹¢^íÏP‘|zÿ±Cb<û—mzÚ?©‘èwŸ“ø‡ýò¸~¹½_³ òw!×~çr¾Ûø°½6žf$ŸoÞ_ò|óþ6œ‡ü'ya¿Õór·ŠäñåµÅñû‡ }ï æ´W®L» ²¹š¬&ô¼ÏÎ>‰lËãí,J~¯'ØzIÖL|Åü”xq“xèœÐCbŒ¥“Ĉx_‰ãøÞ~â¸Þ¤½#Ñ¥Ó6²]ùGù[¤ÌÊ!2µØnïþ<®7ïs%6Ù"ÆŸØ C·÷ô¡ß½Ë{kqþ°·÷Û[+VȵWŸ÷AöV¬ÄízÃ|É*ü]—Ï=îÕ=‘@òýŽ=øþûžSŒÏ=ê“!ä>_r·«'Šv÷ì’ø#wïäó2»]âã$Ú©%6þPÂ{ äIÑÿ®‡ôÛ]¹§\Èvä 3r²J¦w.ÙI´·+»9÷[ÃíÕæ‹ãwö襒èt^ì·Ó†÷EvÚD%‘¤+C»îT}!_ú’׸]uˆí¨¦9vüµ.ñGn/ÔãØá'qd µDÏ”nH £…Û׊ö·›}e;fÙ‘7J~?¢"ÿÌ%#ØŽé%n7Ý+¶o»ÍùÒÖ5Ì«[çòÎÉ%O—ü½…û=ž#ÚYÇš¿ß©‘ 1‹ïq¯?¤'qý8r¸ÙÃŒlª’ÉyÎ0óõ‹ûó¸Å¸Çwb< zœ7'”YlFŽW‘å„<ëÞl/á;²Ø¾îußÏyåºÈÉ¢Ýu3 ¸Ý›ßÕXçÍçÎÖy›ñ÷AùloP"4Aý#ןIö¶#«‹ýÖËÛ×´Œý­~Îﱬ~ø;™Ë~W—äÓÕ%ùsõr>ϼz ¯‹ýÃæOJ¸›û7'ö_õ‚×%þaj<?38tŒ$ Äq«NßâöÓkÔ2‡r¿u<ï[ÕŒÏ+¬Ò-Ûãã Åöø‰†â÷øð,ÑN|è¾Úq»%¿;ߤ‰è?¾1Ïc㵇ˆí+rø׊œ µÌø’í¾v$çóÿðþ_Ü/ó%÷Ë<Äý2§r{¦ƒØ¾ì ßßZVÿËöãïÇ-ðÄŽäó”K¿6‹”xøa ·‹ý–¨O.1í, ä{yÿ°vQ™Éãj¯æþµýÙ~í&<î×·Ü^Ó„ÛkäŠíKæ/ l­’8˜ñ°¤Ù‰ …‹”«ž ýX™Zˆãâþæý¸¸w¼ßüŸÔåö·d–¼/=ÝW¢ÏkþîãŸK:©ICþîÅvÅgG~äpîW2ŸŠëýŒûõf½‹ë=^lŸøRü>wÓÌH²ªØ>wãþ½±¹ø{N!ùë0ñ{ìu^‡Œ-yÞìv¸V•*ÒœûÙ&ño[^g‹m›×-Ï¿ë0Nbjð¹ìÁ™©|Îhf Þמ‘Éí3nŠßg¬ &õߨäô³6â÷é§yÿòždþŸ~rzÉß•¹_ ïgNO±RI<Áy×ôñ<¿úF–è/¢*û™¢?[Œ{²xlWu*|i±àøŒ~2ÛÓÏÇÕäyßÿ0lã#lÚŒ’¿9 ‹hFNu‘9…÷ÓÃ&/ '±Ý°’ûÁaá¤Õ²)å³ywt¶ _^¿ðq«'è=ÑB¦;ÏO¼ûD |S$è9¡šD÷flÏ]œ&€å8tך'SU^°ß—(²ä¼þþ=…|Myû½âs6ý^°ßn+Í~¤]¶€ÊÞ%ç`¿M ‚XHôKõ8˜õÛ~°Hãà—þä×vä·Zä÷Á!eØî­Ád¹z¤ÎS²ü6R7‚ô_û!çØOÀaoÁ‘º‚aÃ)ÏøF%œz„Œñ`?¡_E™»¹â:Ë? “!~Ÿ2°„éü}ª­JbDí~'§åÊŒù½‹ýMÿÌí3gÙ‘ë}É%¿ÿÍý¢ÄõKp˜ÌµÜ/ê÷›U‰ûÍêÊí³'ò÷ÙûÅï‹ï‰¿7îÁ¿WNÇ/1y!¸t÷qÜÒ=½Õ2Åù«ýÒ½#ÈL7òÃîÿ‘þþ?\VË0A¢]0·›#ôµ¬“Èÿ¥ìüï,Î ~àô’í¢Ž€Ì;ÿС1÷sÌýþä~7Äöåßê‹vWðº1(®'ÛÇ«Äü¾”õèÿÿ0à2Ï®˜û#W–uÛ~¥–8ŸÅù%Ø¥äwqþù«ÈWÜ_›ñ¸R›ñ¸R›ñ¸Rû*·Wd|­¬Ø•Û+Fr»þ5þ~¬§Zâ…gâ÷Õæ‹Äß«ÿ¸MZŠºSJΛíW·ø•Û[¸ów¯:ä”éܾ*>AâÉ÷Ü®®"ô¶ú´y¤ÌC%¿_³“x¦·Ÿ±gg&©dî/Ù~·:µ.÷KÀíOGˆ¿×¸‹yýš¹£ÈÓÌ·kž\[Qœ7–²åP5¹–Û[Þý¬m%æ7 #··šÆí­Žp»g0ŸñVŒgí|ÆçÚ´nf/¸®í²ÎzÿödýYç)¾wf¿nZ /™¢–¸I<‡^Êæ­u/™Ö½ö$ߊóQû„š«HK 1®»YüÛ¾{é™H+ù}÷³_§"Å}2PÜ7³Opâøœæp?§­Üωñžà2–¿ÏGÞ® ’ø±º8~ý¼{¹ç‹çbì× àß·ö’÷ŒJ(®çóïlæéõ9SØÞózüýÕ¡—õŸý¸?¿ñ7¨¶Šß7èǹHümi)îC‚â9ð‘9ùAŒoƒY–Ì:âú+hÁvëˆy>(æý?pºJ¦¸ -iGÜï_SÎfŸÕ›³ƒ«¹ßq}Ô~£ÓÑïF¯j‰ÄõsÐQEæþè‡üéKŽ$¯³‘W2È<.HL AqclÆã§mô•¸è‹Äõ¬w?åßÇ«òï¬dÊwÏGæË!23ùû«FBîM*ñ~¢ý¦2 d­D²qÉïâ;Øà9Ç•ÏØoÒ½Éýt_çJÔ3àþ÷ðoÎËí7}ÓS&4ö›‡‹þ6GÕ¿o^NÿÞ¼f2¹¶·¯Xò÷Dî·ö¹Ðëæ„Ç¢ßÍÛò¹ýx}îœùêžá¸6_îë"ñAwµLÎë6óùeû͹â<ùf²½ÜGqdÛ}X‘Ç?4§9-¥Ÿ9•í<\éKb{o’Åq[š¾oi–/ÚÛÚt™Øo«íGµÄâü´rnuÍö•8ä+·û·²“8¾ Êí«˜§·n¤|[w÷ ‘ù’¿«õyœš~¼U›H¾âï§tsɆlïTgwʇýžšL¹N­ˆ$°«xüÕÏ<>ÃDõS^_Ë홾$ïOÛo«\WlßV+Tü¾íôB™ ”„m¿½ó±ßv÷Ö¹d_þ=Ä2Æß‡Ì,ù]\±ß ¾/j¿}rþ>yO¤Ä©óx|Œ 9ßÄEb‚¸NTÊ}3Õ2“ÙŽÛ÷GRŽúlÿ@Í8²Û?Ð…Çð+Ù/B%S<ßf®û’ô«í D;;ø~ ýŽ–õÄö¯¿_O¨er^±ã›¶oÇ÷J¢Ý•|%þþÑN¢yLˆ µµŠì#äÚ骖¹S%ó<÷µœÖˆ¿O»Æý#ÅwÁM‰äþ’߯ä’Üú/<~úï”gzGÊ9]<ïN`; Oò¸Åœoì\<¸äoÎ;þƒ›nsû…S‚»Ê<ÇíºÄü¸ëÖÁÝZâ½+ûÝU=ù·ñ™’~¾»ýº”-Í$šçï¿æåJ¬¿ŒíÔÁí xž»Û\¼Gi¿»‘)·· ”Ø}ïÙŸíô×çÁXþí[ÏNâΟJÉþÆ,0 åñï-ôÇXTWlOl¸1D¢ùE!W¢ó|þíw@ô›8lR‘`€—Ðkbà2tW†`XE_² ãyÇÒ:N¦/û f;¼/nŸ8•óŠÄè±.$çÿ0~V®L^—IŒïÙ'®d^/¥kéÉöW2ß'® ã¸V2ï—’õ?q¥øn(¸ÛŠÞJb3ñ|ÂO˜žAÞe»­ Å8tæõ¶„=t ä=à8ƒí;¦% öÔãñ=My|φE$ç¥tàñ=ƒídN~qÀç;ÛÖ‰ý\àß#šg‘mØþˆ®l¯ËáÏvG„š‘‘ïˆlóÃà_CÈ!ÂþBÔü{… ·t%Ÿsv°Î²1¯üÃXøóA+žÇlqº„¾2G[ˆû à§¸Ÿ²eù²Z"YOÈUò¼ýÁÖÙ¯©ÇÁvGÙ¾ãJõOÙ½‰°ÃAÏn¹2‡±~G|“ ÑK|¬Åã½ó8/›"²«Jf?CrˆÙÏ9ÆŠœF¹}¦pÿoÌ÷ÿIæûƒßæP¾ï…ª¼8Qâï§|É«!äýH™qÿoü(ƨ¡x¾ldG¶v!»°¿†n!2ýØ_ÃÑl§áÔ’væRΆ´Ç¡†â;Tà¶oñ’;íd»NGÙ^7£,²f.Ù¨ˆ÷ï@ñ}°¯9˜íu ¡¼Ý"(oo×Û‡Ç ˜!ú;\u“ ¹ß—¤ß—RÜßýâ½¼ÿ‚/ĸ›ˆÀ‘jr"û5™K.+"7©Èý†¤ÚŒ¼bEŠö‡M(‡©3Ûk0YfŽÇ¦I®L»bÒ‰ýØô.Ož‹“ù!üF9Ûðzõá65(gžï”²5åmÓÅL¦ånãG¹£y}ëð¢WIgú§¬¸XŒ;Éd[œÄ:N¾2Åw?@ÿHr¤°SR]#'²¦ Éû:IuÅs„ ïï”Òí×åõêRŽN$yÿ'ɹÛóÃöv2'ê+3(€äý®¤ó1”+m‚ˆŸ¤kî‰ï… ;$=æ}„¤Ç³ØÎã%”÷1筥ܧyý>éñ%ö›‚ò?£=ž¯-ù{û~Œý?O‹”y‹í=Ïc{Ïß°½*êé…í÷¢q9„ã{wVŒï¨j©h÷hyñž˜•E>È%Å÷]@>p´‚øN%hbF6°"; yVþ&ä?ZÓ1C¢Ï‹†ld{±‰ì÷j»þûÝ`ü½Åí7GÊLˆûï¸'d½›ZÂëj2—ýÝ}ÅqÞýB¹îéqœ÷L9Î{ 9Î{­8Î{ídúp\÷FQÞ{“)ç½ì';‘í?í¨þ)_žãx‹çÄýÈceÄwI`ÇpRŽÎöÏð~p)ÅiÆu”#ݘzIÿúHoÆ~Ò;Ré|îãXú—>¢ä¸ ”7÷ ¥/É)Þßó­owçx^‹÷+ÁTêïõ+öûúoO’ç ÇÞè²ÿ7&ìÿMöÿ¦%ûÓ‰ý¿qaÿï,Ùî»öì÷Ó9¶óY|ŸÎþøñ~³ýñþBžãûïð÷亾2­BdòùRŠ÷@ñžHŠçÅÀ¨ ™‹sÉ„"R<Ÿ÷Oþwϳۗ¼‡i_ò~&ø†r¦¨(_J³$Ò†ò\åõ·ÿ`ëÄñk«)çC^÷*ep’×»Ž?lCn5”yí=Ìr"°Ý‡/KÚùLùñþ|)«SxŸ«”-¨Ï§B_ɳYKi@².&ÏßǵOŽi'â)yQD‰x1yWU¿«NˆÌ¦‘2mãdò:Vò./¶·kxI{ã2È™¹2Qî] *™âû‡0Yؽäý^û’÷}í“÷Ô¤<y=39…×Í’ÏýÅ¿¯âß×2xܵ۞$¯k$_+äø¯}ⸯ—çx¯Wãx¯×cû×›s¼7ó¸›!<îž®ÿ‰ SÈ9ŽV‚«š…ïE¿'Vkûʬ"S<÷ý-ãÈö d÷DR<'Ë)ž#ÿâ}p‘Jæ:ÃÿŽ»…¾O¬«Àö×Ug»ëZ²uâýû{;üœû"xÜ~êý„š×éþá)­p’×ëNœªCÆÊäsN'Ns"O±½SWKÚáu¼§ "e~¤þNÿ’ Ó˜z¼Éñ]X@{]àýàvˆöSL¬¶‘£‹ÈT‰ýÄóæö)ÃY7KÉz™ ¾woŸò%Qb¸xŸï·ƒOJ~+ìš2‘÷óS&®f;7 ½¤Lrc¿3Ör¿¹³¿yZ!2+GÊü-Næìw^;ö;Ï ¤ÌóÈ ‡æþœc‹dÎPÉŒ3ÔŒâ½&û”…½­ÈAÂ)‹y½;e‰ǵmåÝ·ŸzØwÔ“Ts¿}W¸ß¾lŽ{ß Žw_1Ç»_‡Çï7âx/ã¸s¾™rŒ÷3SÒyÝð¤ïJÑÏÉâý û“ÖB®““³øûä§¾2ß…HœR6R¦!Û™R;´H$Åw½A§ ™î¹2ý‹dŽUÉœnøßQ¬h2r8åŠ\ÇþgðzúɌϓsžp Íì~Ê¥Z”sÅŽb’×5O®8*®“œLhÈq&´â8:³ŸW—Àë›ÿpýHC™ËØÏúÕNäFÊ·~_Éþ')ßúË‘2ïQÏëŸ'Èü@9>òäM=Äû¥äýÈS‡Â eN6!¯RûÓ?2ÞPî×ÍxÜkîÿº£Øÿô/I,ßÝ…œ&âýtEñ=öRVnNòúÈéÊ´É•BþÓÆ'Èˉdf’Ì{j™Òd>Ï ‹²È¹ä·|‰ÕÊýœ‹ÿoŠï]5ËkƺB§Mù|òée¨<:]ãÂ'òr™@Þ ‘ù¨ä8>|ºFQ ù!ŽüÆöj–£>?Åß멨—?L¬›U¥^›{óï{©÷ÈßDœŽz%üùtlÊ?ÿ¤9yÎJæe™™v2ï9‘èóŸ{’E¾ä‡™ßB$.(þ³"õ° jÌÇÔÇâUïâ ÔÃâí´Ë²\ÊÁu8 ï·Ÿ^õ†ãXõ‘ãX­ò•9~–°†úßôè ÉçëNozA¿ß\?M¦U(Ù"«„ïɶôãÍölw³ýusoúåf¾/XJoÚkóPC™AŒÛ«cØÎ‹ÔÇ‹!ÔÇ‹@úÍÛµÜÿÃK¶ÿáo¶û¡8J°¸‹ÌÆû—ñ¿]ÏPx¦ ¯Ÿ•’×ÏΔi!ôpFËMŒçL9>çw¦\J"y6IfºZæ4™wÙ_¹‡Y$Ÿ?Sî¯|ò}ÑÿͯÅ?¥N9Y±¼f¬*ôyFwƒyÄ“<ö‰Lñ-ay6@fzˆÌáä]êQ÷a ™GþO¾§>«îçï& …ýÏÔ_qf™»¡ÌA´ë¥"+Áœ×oN1ãàiI\<-‰‹g9lÿŸŸ=ó칈ë3ù.2ýD\Ÿ)̈—øš×cK9Šíþ=ÿ½žúùûÇóɹ„nÅ2ù>Ýrpy™#8ÎO!ç§ ´Ë§s™³¬~Îy62—Ø‘b+ ¸žúùt‚ãå÷ÄA¾g\ò½qû3ß»µ%SH·m2Kâï–Äßw±>8šþó}<í÷}*õüÏ#¦jmŒ,wTôŸZ>Rô›jÀëk©ŸE¼¥¶óäwßìS[~ŸêãÊv|ËyRý-ùûЮü{„Yyr”¯à¨+Ù‚cê }§†vàþ¡]Ø_¨s¸LñùØ?†ô£Ü¡b].pt9~›Ì©‰?gT’̹êŸsqÚG±þ¸GÄaêØ4Žoì};‰ã%Ê,b?ø|Ò?œüÈWæsêij ê{êNþÉû¾©‘áÔC$ï÷þèÔ/$ŸSHJù%uÖ/i2«„’ÆY%|OÖb³~ç¸fñù…ÔYÍŠIñžhG{ÏêjHö¢?-Þ®KîqLL£ýŽ?´L6£½“y]?5Ù’vNæýðÔäö_2ï‹§&w§}“]©Çd·ÿ¡z÷»Ø…Ç_tæñ·¯RîÛ·)ïí»Q䃋äÊõ+å̪'êlêC^÷/¥w–Ì êçÉ~ò ãå…-õõ¡X¦³êçt+/³?åyáG=¾0“9ÚüçäóÃÿÿœjósFÙ‘b=F È÷šR_졞 #hϿڶ%mSH‡m2{$ÊìøüË‹öüË—~ú×ð 2˜zÿ‹ïó¦¾Öçqo|8¾·«hïâ1BogUÖE¤­ÐÿÙ2GE¿gû.v;ëå-ä>ëSy  ïfnl"Ó6\&¿«PÊ1dŸ8™|þâì`ß™Ã·É N”9.éÿ&ß3>;X¬Wó_pÇ;T—ý ýM-ó€È+g‡ÝH”ùÛ‡kóøáâûbögGÞð•y—LJŒàxCB8ΰMü=ìÐò(õvB›,N“8N+”ÔÉ*á{R?W¦åW“öW—ö§,Oö#yýáì8^8;Ž×ÎΠ\sgѾë_±Ä•”ûïO=” òÀÙ$¾?6铈³³Çø¾ÐÙ4î—îmCµ#ÄuÚ³×zgI¼¹(Qâ­€z‚wxßôì]KÊq·U±L~â?éP^fŽónŽó®å¾ëk.s¸•Ì`›ŸsÇÃõ‚þß™E¸oÂvîï/’ø I[Ò2…lµMfûD™éÿ%ïŸ}À÷”Î>à{JgøPÏø¼úÙÇóØþ`ê£è6ÿÎ÷nϵã{ç"…?ëÖÛW°÷ÎZ‚®{ù{¾ÿWJËp™­"e¶!Åúi?°{<éš Ós›LŸD™Ã’~ÎQj2,í¿b?Æã¹~ŒÃRÞ¤î|N¯”|^ïÜ€T_™—ØŽoŽÇ—ωžó  üþÏÓ$ŽphOòýÈs#z8‹ö“ˬÉմLjæä+rŸ ™d'ó¤ÉçøÎëtÚŸ[62ùsG9iÄ˼o_JÞ>wù å¸Z«-ù[ Ù`›L¾ÿVÊ–ô׫íh®kvË ùžÜ¹«|OîÜ©ô«,7ŽÿáúÛÃ1"ÞÎ7Íýœo¹@èë|;á—çÛ÷ñzÞÎAœoœïd"ó·p™üG)ÿˆ!Åú?Ï}ïÔ)Af·m?§K"é‘ôsò;9ç; Mû¯èØÁœt³“Éç†Ï;J”y†í÷8ä+3Yèñ¼KŽÇ¥ÇÑ÷nšD¯VíI>ßwÞ«½9c?mMÎ7#—R>¯UVär»LÞ'>ïuÄ…Lqx~Ʋ R¬e~£›!Ù_ØÿüÖÜo—ÛÝÅï@ßÕ]Äëù}Ͳ$›(ñȪM‚ÇÄz2 X_æþ¦ú9ëF‘ ÊËüƒòkIù޵3“Ù‰ú8ÖÍJ¦‹ÍÏéÁñóvÒˆ'–r\)¶oJÚ-…ßY;R¿-i˜BVß&³v¢ÌúôÓ“lç$ïcŸ?É÷%ÏŸ´§žOò½Éó§›s|g‚éWiÔKFÊõx‹_Z½Áùä4¡Ç´F|8Í¢Ø/Í*gµ`ó !2 ÃeV”Y;†ë·ÿ@±>Ïl‘@¶Ý&Ó>‘tJú¿É5wOû¯Ø*ZÄ[šõ–D™ÙŽõmêÃú¥ð·´Ö„ÿ¤µÛÍãìxþ›fÇóßèp)Mb·íÉFl·ÛäØýäk2‚íw›eNγ"—ØÚÉä}Ý´nÛ\Ƚ"ÓÆò<,mìLÚm¬XçÐ>mßÓM[°›ÛW1>ÒÖ×Í’¸©íºÙ?Qâ¶Vâü9mÏ:ʵg‹ÍÏÉï~ý'SɃN2Sþ=§)ÿ¾¯ZÊŒ™·Cdæ„ÿœOè{ cþ÷ò=Ø´½|6mÿïüû€í`íz`Õ$rí7rs¾Ì]E2“ü>FÚÓŒ» É ÚçÀmúEòuêçä'C%Þ'¸`"Ž»ð+ï³^¨ÝZøÏ3^ǹP'\œ?_¨?AèïBƒ‰äÚ$r³š‚ý…6Ù~Þ·¼Ð¦z{²†Zfm²NÉçú/´išEZç’¶ù2(_›Å?'¿+x¡MÿòÿŽþûÉkr´9žöh3•öheCε“¹Ø‰äùí…6<¿½àRŸrúùðÂÌVÔÛÌöÂ?.̾ÃýæÕe»Ëú%JŒ¿C®œ æ¿ÖÆQ޵+lþo®µû9×§’›dî¢ÜkPžµÇhÿµ§hÿµ©…dZˆL>ŸðŸ¼)ó~Œf,ˆ—¸ŽïU_H0§Ý7ñïcégçM"~#—çË\S$sí³qÛÛx€þ°ñí´ñí´1þ°ë õ³W¬Ëj±ü7¡¿‹úÓHÞ/½hx]Èu±Ê11_¾hÀíÕbÉ…Iär5yTÈwÑä 9yAØëbCBÏkÖ/’ÉçÙ/Öë¸Ù_¬ÕØ„l&ä¼hÆ÷1Ji!üï¢ùWößH›ý7*ßžÔSˬä@VI#M3H³,™ sÉ&þ¤%ÇѨålÔ¾øçä÷uKÙ£¼fì·Ÿô²&}9þFéÇFÁ´C£q6ä;™3i¿Fs\ÈE¾§øÆ‘Ã…ß]œå˜(sƒ‰Ä˜‹ü}Ne1¾¸`:û]cós.´û9§’Ëd®¡| 6Q¾|¾”ûé_ ’|¯¾”êðŸó|¤Ì+1šñýk!ßË¿wŠ~´¸ÿ^âÏ¿—LDF~#gÓ_–, ¿,YFÿX²†~±dí¼d§!¹Ÿú^Âï1]\}úX—Íã7Ô×?/>R±ßâôƒâ¿¨Ç¯¼zIuFl¿¤ÕWÌ‹/•óú»¤31‘ŒL"g«Éù¤ø¢u)+ôäïø=ÂKzÕŠdÖ/ù}¢°Ó%ÃJñ$ßÓ¹dòŠý™üÍþL>¶'¿¨%šªH±>$È÷w.™VÎ’i’KÖò'£|¦ (éÅ?g+•Ìöå5£ã~²»5éJ=™zšËä}…K¦ÃlÈQv2ÜÈÉ.ä açK¿Îå8ºð»}—†äöáǹ}äW¶ò7õ11³Hâ¤ÔK߇¾1ÑF&ß#/åÌTr6å‰XÀþ"–±¿~§³”dn)$w„ÈÜþs&EÊ<£ï‰x¼4½'û+ùÞÜ¥’ïa_šÙ~530Kfð$rÌ72œþ3sõ73šþ2“ßϼ4sí>sµ!¹Ñ„ÜA»ÏµJœ·™úZ:’z?Ñ¿?+‰³ü\ê÷åbÚõí+1ï½ô·+åÿøŒãùXŸ)’Yò|Hû|Âþ>óûº—¾nãHWñ}ª¨UWøcºþ”"rf19{ )Ö¹ù ¢ÈÅåÉ•†d‚‰Ì­fäŽMäs™bÝ[P¬ƒûŠõr XGWf¾!³Æ“|ɧ2_†È|NòûGÿРl Éï!¥Š|–^¥ÇcW—¿xÅ¿¶ãþ;ñ÷ݸ¿ã'Ý÷©ð»ô¡Q&G¤Ð^#ÎIÙEÜ×IæûþéÁ62ÇØÉ K%éài.d4ûæw6J¹”ú^QH® ‘¹!üçÜ)31F#ŽéÀ~Br¼¡ü.uúX~2}¬Ï$rð7rD¾Ì7výxì´’ã£é¯cçÓ_Ç.¥žÇ®¢ŸNnÊö§,§^¦¥°¨Ôó×íÉwÜ/ëõyf‚àC®gž#îï¤?ÏÚF>H|Q\$± 1ã  #íTÀïL¥¿*‰Ã¿ø\ú_¯é/ñ}¸ôw‘iäì rýçß‹û‡iÇõ9Þ¯£Øî×0êåëêåë4Æó×™ÔÏ×9%û/2‘O=}åõÎô¯ëÌen¡ž¾î¶ù9ÚÉ<î¤Ï2ž¿^`<å{hé_oÈä÷·Ò¿> —Éïq•ò-ýî+¿Ç•þ­ŒÐ÷å²Úb\—Š„ý.·(ƹërrð“Ë.·…þ/÷g"Ñëp‘ij…Þ.{÷µ"ØÈl'sh*9‰ a¿Þدw„¯ÌYdL!9/Dæ’ðŸóÏH™ëc4¢_Sö3¤õ5¤µZ¦Ë$ÒíÉû)¥ô£ž†“!*rBy2œEýá:—Æ‹úy9hÇ?šßm¸Ö“zëƒü^Âå°\ÚkÒ êyR,õ›vº„|òòÍ‹b^|ù6ï3]¾sa™Á¿ïöæñwÝyÜÝA´Ï=?êõ^õyï ÇwïÇó`¶•L¾/yùßﺜN9ó¦Qμè\‰ÏÖsœ/½9ΗC©¯—#¦£T2C¢È0êñådêñå ™±ÔçËyôÓ—qæ2WPÞ—km~ÎÍv2w9iÆÃoÈcãI~ïíòË´™üþÛå—·¨ï—üþ[)óè—/ù·Ë/ß0®_ÿ-Æs¥QO1Þ+­#ÈÙ.ä_Wº 3‘Ømk‘ÄžuÄ<úŠë+2CèáJŸ^id¿ r`ù(„|.³(Ræ;mòC ùMÈÅ­\žiϪ´g áW|ø]’+~¿SþØÎð0Ê‘t€Ç'¥qÿ¤[”÷œ¿˜__¹pŒÇ]8E}]´c¿»ò¸‹½Øoú î—Îïe_¹n%3šÇ]]Êý3øžå•Ì ¹o/þ{å~oÊ}ß½˜ì?…äúK¥ô‹"‡–'ÅBgàX™bopê&rº¹ÌÊs¡ÍϹÜNæ'͸õ ¹s<Éï ^¹4@&¿;xåþyÆÁ}~w°”7éÿ÷ùÁ+÷Óÿ9•°w‚« Ã]ÈiÂ/®¶ò0‘Ø&¾H¢íq1¾jÌŠ<%ƵSÇ4’ßµºÚ©gÉuŒ®vº.S¬û÷Ÿh“ù1ä_qäûxòk‚ÄÎÚÛÈò¤^¢Ì*I?§©Z¦YšFtÄñ;Œö¾Ú•ëz]íšN½u½zŒ¼Ñ¼k.“÷g®vͧþºþUÒ¿Ouµ+¿OuÕI›vqâw6®öæ÷e®ºqü}›²ÝöÔÛnwêg7ïÛ]=,:³¿zt'÷?ÖŒý³a?Ç:²Ÿd¾§uõß»ºšÂøºzr„•Ì <>•ë¯üÃó3y|ÚwŽÿ‚Ž™`zCÊqÙŽí]îZLö˜Bò»Œ¥ìEº—'’þ&2G²ýËÁ›ÈPs™)ïåH›Ÿs¶ÌNš1þ ¹z<ÉïK^½¼#@&¿7yõrýÿ2¿7YÊs´ße~OòêåLúýÇP!o†ÞÁmd’ð÷ £7»$V¯/³±x^3Ãä&ÿ65ñ'kæ“¿‘ƒÙ¾éÐd™#ìdŽ,K¥’!NäØtr‚‹ÌI™ä”åd„§ÌéÙ?'¿+Xʘ<͸ü`«Y¤X—Ø>£&×?ʨ™3ÌD>ú|²”|nB®&‹ÌÈ·›Èæä'ê¿æ7áoµ.sÿßN ;g˜Í êy‹ü“a¡-Î/2,ÝØ¿åÖ’¿¿8 6Gýµê$â%£õn·KqÑk¥¹ƒãr³e;n—ÄûÃ}Qî~•)o?#ÊÛÏ„òö[˜(èQ‹úñàsþ|Î?Ãc·‰Ìƒl§¿E‘Ä'8ž“…¿fø>£ŸùÔ" sÈW 2‹“oê‘Ó¯}?Ò¯}ù½  ßoô_?UËŸS‹ýûýÒþçä:¥4pÐŒUW’ÆH“ ²V_ò7ÚÁï÷dƒ\™w~0îüš1îüR*’|7c¦+åœõ9üN˜W`!qaE™—ÄõòŒE†ôûEFduúÍ¢þÔÓ"ïö2ýÔ2‡Ì ‡rÜ‹(Ç¢ ʱh4ǽh,ǽh\5r|–ÌIÿoNÍ•9Ýÿß‘×ó3–Ôâ8—ü®–ÉëJK²î“wב9F2Ò—<¡ÿ.ɧ¿.)¤Ÿ.ù‹~ºä-í°ä=ýt¹ó犣¢®eÄO¦~V{ð÷5Z¢Îeœ[ļyn#ó_ú(KÁËØÏe}ösÙý\5#MØîU39‚ùäj˜/¹9^æ.¶wõ.åÈ%žïϸ^•ùõzý™æÌ™!Ì#™ü~@FV.ý+ë1óYÖoò™™ÌüGä æ™¬WÌ3Y¯™³þ¶"‹ÊüBýd}Oþ)ïhÙÉÔIýw¬hJêß#+»È4¢^ï˜Ð>wjR_w~ó•Y—qv§ãìN#ÆÙ×w¬‡_?ˆzxMûñ.™Ï„®ý¢/±B²b>iDºÙîÉd;rP*éçDú³¿ ü>ìµ #3ÉÑž2C³Îñ¾2'æý+êSn½Z”Wï\Óã{'×ô6$·å’;6üîî5½kƒÈ¿‘·–ʼkBÞ_-ó¡™·‰Ì7' ¨½¿¨ÿJŸæŽ¥žŒz‹¼qÍØˆrפœÕ‡p­ö‹zs­Ãr•Ès×NŠøºÖ•ß½Öµ/·wõH#ךÈÜLùºž =»ž¢~º^Ï”y‹örŠ“èÂç•®¹dQN—ìZäýòA‚̇ƒÉÇõȧÛÈäËDòuK™ï¨—âö?çgµÌïÿŠ®Ú+I$¿»XJý¾2 ©W#ú‘+¿Ïx͵&ãȵ6ãȵ.ãÈ­o!é"8pT}’ïá^ o@và~S²-dÞÿJò>x’|ÜRæSêmÊ êiÊKµÌ×ï”wìwJ±3ù™ãŒøj"qz¶7½w{™}Ô2ûÎ ÝÙþtŽoºWšÌAìoº/û›îO}Nž%sä@™Á¹2Cýÿgês\3ù=Âk3‡“\¸”wèÇ3ïÓgæÒc‚(÷<'Æçá̇‡—2n’j0Ocþ¾vÜDÔ¿k'—ÇKT˜ ž*´4¦¿ïï#øY‡í}Ög;Ÿ3n>/g¼|^É8ù¼†þþym2!_æ&Žï3¯‡_û¼“zû¼§Xæþ)2¹¾s)Fý;ªçÉ|A=}íËq}}.3ñô•ëV_ûú¢“à7íÒLMÖc>úÖPèñzÙb|×µíDü_7 ¨HNÇ]7©åBþ&üïú©ÜßòÔR2MøÅu« yä=!ÏõVnW[ó;(ÿ°Í£odžš|:ƒü*ìt½m¶ß~PœÄÛv‘»„?]·»O^®EfP^»ÌzäÍräím2ïY9‰ä£–2Ÿ$É|Þ^f¡Zf‘ÿã7áÇ×íËqüöåsÉŠÂO¯wšËqvº–OfS?Ú]>“ÝBHçw¤ íÐÙí éIÐ&½cÈÁ´÷Ðûô‡¡E=ºt™z ºò•äýAð$™ÙR&ß½tz Ê¡~‚qœAOØ~Ðó’ö 3G›8‘5Ó%Žq[,úíŽ-ÇöÆÎõ$d“‹}Éeô¿±ËÏ’+d®.$¨§±ßÉÜ.sÇ™{"eî×þWw§Xæý)$ן>îÑi’ßÿ»>ÞÔŽ¬•JšQo[SŸ“vrS¸®Ýõ˜s”sÁkö·1˜~¶qýl[%Æã¶Óô³m7(Çî¿ ÷òû;¥ÜJ»î»AÞ§<ûˆë×÷ë²ÿƒüNÎððtúÛáYô·Ã1qäzúÙa®·z=é,óIÒŽ;)}™aNÞ`HºmEÞ=(3‡ãOz˜,ó‰ÌüÔÇ÷̇I_é‡GËÐjÓE2?ãsO×צÿo”ì0™´/"»0®;ÑÇéâ5…nQ¤Gy²¿¨ ×S{p¼W­™÷rë1Oäš‹:výñŽÿ ï·^VíW²zF 5ûÊäwl¯?«KyÆõV¯?kDyfÁ~žY±Ÿg-8Žç âúàõ¼ßyýïw^/豕ä÷7K9›íp=úë Ø~Á"¶_°,H&ïw]/XM}¬+þ97N‘ÉuîK¹#ê_ñeÊÿòz¸Ì›Ì/ïD’÷:‘'¾RYȬ¬&$õb|³‰ã|ɼ÷ÁJÄÅê…Þn˜ŒÛo˜Ë#Ó…7êº ýßø½¬ÿöâ:ô†ünQ)/ˆ¼x£Q‡¥äo$×A½Ñèö ò»ÐûÆZìÏ¢WœDË•»È5V‚VÇDÞ¸Ñ|¢9…·¨˜LÚ‘USÉêNdt²¶ Y'Sf}OÒ<[¦…¯Ì¦yÿ޶ïH‡/¤“°çV3ï³V‘\àF«yÔ_«8êµÕ’Õä 3™n"ך“ë©7Ï_H3Úc`íèc°†4t)¡Y•úð©N}øÔ |jsü>u8Ÿúl×ÇœíúX„ú ¦ý^Šùó!Óxü®ãvcH4ÂõÜn ™Ïã‡,âñC–R?CâÃe®ú"“ëÀý'7jÿ;~yâÆÐž%Nr]ÃC/ÿœWC¯«È§I~óÓ¥Ó§tuöƘééçÿÞž ¡ý—š%J\Q–ýÆ ¼«¦Ò_V±>ÜX»@Ì“o¬ãw©þƒë[3~Ö§GW(×úŒ²äSÚm}1í²þ3í²e±¹Œrl;@¿Ü1¼<8C9vðù¾;kô%Í"ëåÊ4÷ÿw´¥þwÚSÿ»§Ç‘3釻gq¼»c8þÝój‘ È%õÈåÛÈ?9ν7Dý¿q’ïKß89LÔ‹çøŒoÙÆ×"Áëþ1$ÏwnÜ.ŸAVäøoT#ùýæ·«2ßÞ®F=Ü®ÁönÿÊþn×a·ë±ý»mÅwÅoÜ‹£ýïÅ«d®ŠúW¼oM¹îÛRžûgÂÎsŒÃû#ÉôNäSêó~±˜¿ßÈ)«&uDý¹‘Û‘þýÌœyêY“]?2³,ßˬ8Lè1Ópgy8Dbµ{{È®4y:3CËäçÔaÈÐeÜdè="Ø‘\_73£ ãõv­]ï÷¢ÿÔ #cÏï÷²ý\¿êfÙ‚(ò½¡Ä_.ˆyÇÍ fKÉĤŸ²¢öZRÇ—,_—´Š#[ ?¹ixÑ™¼,ìz³Êþ^…ë””òU2ÉõJJùw*ÉõKnVù"âåfU®cr³ªV&ÉõLJ©›-“뜔²rÞ¿#×I¹YµÁ²q¤ Ñöƒ$ß¹iÜ&‹äzA7ƒ®“ÁKe†šãV“ÍÈ)›ÈHsr¦°ó͆‡„ßÞ´ü“öhÁçün¶íUžt~~³¿“~³Ãß™2?,'ùýô›¾POùýô›µ8ÎŽ¿ÈÔ-$ B;kNÎuáf3¶×¥!Ûé2lhA†QÞ.8Þ.f2olúw¼M=uýÿs~ùê¦SÙR{0Y[Mò;ï7:ˆ|rÓdžú <ÅvÇFÒ>“òÄùÆÍÈjbssºç@rŸ¾Ýæ§œùñOòkmò÷Rm ÑObNÓÏcø=¶›sø|ïÍ9_D>¼9W‹ýÍå:*¥Ôõÿwäz,7çþ6…äz+7çmhIn¦ýæ7§çó»õ7çíC7’ÉïÙßœL½ÏC½ÏW §ÌŸBÿX¸•vÜÂïèÜÜïÈ|µ¿;ýëhûw2;&íÂÉΌǣ]#É´ÓÑ^lçhŸ’vúQîã§«ž0aœžøz<áC{ŸÌx;ÂütbÛ=q€í8ÆvNœâ8Oœå8O¤qœ'Òëý;^¥~NÜ ~Nç8O¾3ù9?Ð?O~f<ü"êÇMuu;²…/iÍø>÷Œö½HºüqžÄëV‚™é¹#yoù{Ág™o²YWÞýFûY øÑ…ùåc_öÿq}ÒOùùo֕ϸßç¬+_ê=ßRw&S2Ë.öº¥ýçA’ïçÜÒæû/·Êu#»O!{©HרÇ~åÉa«É@¡ï[¿Œ{GN 'w$’»BÉ=-eîK"µ'“Ôd²y2<ÃqÞ`µcx|í¹<¾qGÊÓ¸“°Û­f­Âd¶¶&mŠÉöÔG3;ê£YgŽ«YW¶Ó¬{I;½ [ñ}«•‰/9‚ò¶:fBžâø[¥núwäw¿oµº$âîVkÊÛº0þç,ªErýø[­ÿùü–M%êцß÷¿eÓTä·[]ÞT”èdËþÜùÜ[CÞ&J ¼)òÇ­1ÚWÈ?m~ʱ¯j“±¿±¯E>¿Vƒú ?Nò{}·¦,¡ý¦,§ý¦PSÛѦvúB:F’ݵÿ¹Îö­©>Ô×T®³}+¢ÈÓ·¦¡ž§m´"7½!·”¹ƒã¶;™ÜgGL%“œÈãïâÁì9¿£tkCkʱ¡õ¿]‹Çmÿã̦‡ÉfŒ£í-©í6ÔÇöölw{G¶·½sI{Žq‚»żäÖnCÚc·åݽŸ~³û(Ç¿ûD½Gõ62Uäç[{=)ïÞ'&?g>ãwo!ãeïK‘Ÿo%Öc\%6yùÖñ_E>¾uâãñÄ‹yïZI|î*æ!· zþ”¯Zu [«H›Ódúç+?¶ón.íüŽïIÝzÇ÷nýÝ’yäïvSdvd{wŠúwtä8ÿö ~þ@ý|¤>?ÄS¿¸^P)×0¯~X×R&׺õa óÔ®+tëÃnæÕ‰i2Šüz[ç½È·u÷;Ü6˜"Ú¹]™ëÜ®aUžl!ìp»Nƒ0™æÖd£bò)d3Ù2Šä¼òvv%ítv¸ý;×¥¿]齃—Ü®Ÿ,òàí†.l¯¡'Ûiø‘r™«Ô¤¶Ã¿bc ›Ÿ³i2ÙÂŽlU–ô*”92’-âòv‹8‘Oow¬ÁqúÍJ¢ßZ1/¸=äNÖO9tí1¬Éò’ß³»=¬Y'’ë|ߊjIΦ^‚²ÄyÕíQïÈlgTk?ªö¿£K-Ò-ApôRŽkô²7䊃2WQŸ£×RŸ£¹ÑíÑ›SÉíNä.‘7oÙ'âîv4¿cu;þ5÷_YûL³ÃdÝp²>ǹ²ǹòÊ»Ò*†lY‘l'¸¦å]sHÄ×íuÝØÎ:¿n í±î åX÷‘r¬û’ú¯¸¡^ÒÏiÞ^fú÷†?f}‚dú36 g\m)düä{è·oVO”x§ Xð¿ÏøÌ©ÇxÍiÐ4W•°Ùè4Ù‡öÎã{_·ŸÔgü?±àñO¬xÜ“QÿŽN«Ig3Á§—ú’Wh—g\§éö³¡d\K™\¯éö³Ôç3®ÛtûÙZÆý3®ÏtûÙfÆÛ‡él÷#çWYªd¡—¬rçD óDÜÝÑò0’éy‹ä: w´¼k‘\OáŽÖÐz$×U¸£dAr=ð;åV ºó ×C¾óË_ò^ùHM>uøw|)òÏ]™•“eÛ‘ÕË’í %V ñtǶŒ•ÄÎdz$:ê!+¥•#ɪÈvoÃöä ¥¤ÿj’ë$Ýé=r“FtMÍ Ï-&ÓúʼD9]¯$¯ç’·üÉ;§ë}'w&w)Oö^*ÓÕä:w&»SþÉý)ÿäA”g2׿3Ù@½M{"âøÎt®'~gúMêi¿³}gF#Ê5ãÕÏS¦g¶Ìô·(ïºäÌŠ£¹Îó#N.SøÉ?T÷£ß«ÝsHOú¿ºÿ`ríq¾<ýì¼;ãçü wžë*Ý9ï_O#^8A¹.œ¬Bª3e¦rüÎsÜ.qÜ®ä‘×È›ôóW "ÏÞyëd$³ãý-×_¸ó¶7åËuî¼u§šÄñMæxžÌ#ÏçD|ß½óNøýÝ'Si·'³ÊŒOε!p\OÛ‘ËRÉ•´ï“Õ´ï“Êù<ã}®¼ž¾¨Hù^T¥\/ªåiÆ_)a‡,™ÊìB*ìº š÷#ïýÖ,CbýÂp‰æV“vÞd'3²ó#2HŒó^3»lrAKrY{2^M®vЈ-þ!?4'‹ßÉüB9[|óŒ{-µ"É_´IÝÒ@ø÷½ž½…î h(ì~oPdK™Óß“3“ÈÙÇ 9Ç ”kТ4r™3Oýùq}ð{~G(Ç`í,R/—¬ä¯«‰ütÏ¿µ§Ì¶Ù2;ø’vuÉ¡%®hì"qM^±Ä„ÖµH›²mÙ~0éÏqno3Œ>HÎO&Ù‘KS5âΗEä_ûÉ×a2ßQÎÅSHÅì ¿G îÒ¢]wéпOq}ïÊ ÚýføA™“Æ“SlÈiÇÍ™ÇÍhÊusNÉñóÓÉEÔßÔX6AáWÚå®6íp÷—<Íh âû^6׫(e‹2¹ŽÅ½lß÷rvYüÈìJu3$šX˜H¬Ñžœöœ®&gÎ w {d×i–MNkIFó¸:±Ü¿Î|øûÓ2¿9ùüÌ—ádÑ’ë eÿ^¬M~Ž!¿ ÿζî+ò{¶ƒ…°{vÏ1-e†¾'ùHvÏpŽ£çdŽ£ç4ÊÕsFíLÆR}~q˜í¶û»}0ìË÷|³ûö |}{kkD÷ñÅ2'M‘¡"§&7í’;¢Hb\½x‰‹Ç'“áä$;rJYrí±²ñ@rÂA2‚Ç­äw<³WÎJÕˆ«r(תÜýä£0™O8îUÏ9ÞU\O){UQÉz½êƒˆïì\#ûè-þ~vÄA™#Ç“£lH>G‘}6Œã8;rÌvÎF¤“3\/|q˜}i÷¿ôW‚`:וÈNw |é]£4â•Ñá2C¿ÈOºÞ‰\cñ#ï—"±ü¯&uG·'C¾‘üžâ}ݰäjaû•ëf“!-É <®ò$î_9ÂA#VåºK÷«ÞiNÞ}'“ë/ݯúð Éu˜îW}®Mr]¥ûU‹D|߯³MÄõý?š {Ý)sÿr’ë4Üïx„ãêxÜ—LÉ#Og É ”³óŽ·s¾™ C+ÊçОr9ØikÆ®”ßqx±Ì‘SdŽV‘!§Ée»$Nì_$1Ò8^âŒáÉ䈒߼?cTYrÇ9wõ=÷H_2e y*—<ë¯ÔŽ#ÍúudÖ§œ Õ"-H«zd‹mdkú÷2-ÚiÃ=ÚýÈö¾2wV#we‘‰Ç‘Ç‘#”ëȱ|2%ˆ¹7ˆäºÔ9;§R?;¯±ÿ]µi—] h‡]¢4£•ˆïœ=®á2û~‘éI¿ÚÓ_ÄwNâåt‰B$¾è™$±pý»pýZ’ß Í)Ü\—ä÷?s޺ѿÞ&0NÞnåqo¹^SÎ[>OòÿN®ó”ó¾¼!Yqþ^o©L¾·Ÿó¾ ãü}53Ò”qþþWÆù{3áçÊÌ?ømq¦Ì¥ËIÞ}ðÛÊlr/™Grýë¿ñ{˜~Û)ô÷ ^#‡ês}ë LÔ$¿+þ Á(32d“F4—¹º–Ìu äúÁä9g‰æÆIìh#Ñ?~ ùgmrU.¹fyNØáÁˆ"^Œìñ…\Ù—Làñ#7ò¸‘[ý5b°Šò—íCjÉü…ãÖ㸃 8îà*õHãm¤©ˆïaOh¯sûÊœ_äºV,¦ü+¸®Æƒ+)ÏŠÕùdBÉõ¬¬®#âðÁšdî¿¶²éMùÖ¥\kGÔÓˆ \£”KWËä:V>"SÒ%Þˆ2”x·C’Äì8úwöâµäRúmöòºä‘2…öxì0…\ÄxyÏãs=¨×åiÄ')ß“O×É/K%>UqüOµ8î§¿pÜOuO ÏO+3¾_,þ™[þy[™/j–ð Y˜B¾Š$‹:‘o´É·çÈ¿…ruï& êiç’Mæ‘M I«ë𱥏¾Ÿ[Ñ!]¦ã™¼ï•[±[3rÀ‰õSœ$6ª¹Z¦ÕAÁÆ{È. IDz«+9€ãµ<{…,œDþõäó(¹–oghD«ZKI3“~$ëÜ•ù;嶪ïM64#Í‘7‘ÞL’ùtù¬=™Où^P~‡BÊãðÊ,Ò!_‹ë/¹Ž·Š»–a¿]Ò.]›Ð]ÿ¨¢­DÉu²¯(³Ó™qd—1¤ÇS‰~Çb$ú—£>†VÏ–8Ìîi•ìD?ÖyÉï@掸ØR0𴙌,ì@*Í(üë´F ªåIþÚ†¬]Cæo”7¨ÎZòw_²~]²AiN|xLæ£Uäã)äÊÉ÷å.~@¹‹RŽâǬßÅy¬ßÅO™?×gýüV%øåW+²3íó…ÏŸç~éVW#~ås$¥ôΑÉçKr¿úM'Ǿÿ‘«´óª‡ÕnÅK4­#êöÃ- %Öøô€ôV“>ëɱÂk¾BÞŸDæò¸Ú|®ëaí¼Ѭ²I ?’UîÊ4ZMVó&MÌHÓGdÍM䯢~?lyk’ÌÛȬöäÊÝòånyŸr´|à@>Ô!‰¼ø°uå$×+yhcBÚÕ";']kÄ6^e¨-s`.9èb-±§®ˆÛ‡}®gIt{O½¸[YHôðê@öÿ *áC2„öèÀ€¼sŒ¼Ïãú?àþýsOkÄúž¤A²R ™†Ùd•µ¤‘/Y­.Y=4õûá˜Oºÿ‹äçtòëò»‹`h™*dYÆI¨6íªC¹ÆD †'’íi—°Ž´C˜ýÍØE䣇ãøÜP)=¼eòy¢‡ãú—!ƒÆKœý€q<ýuÁU‰‹-‚$.éAºûôã%žuÈ Ž{Å-ê{Å×î‚ñ*Æ{|Ù8R»F\i•O6»@6ß!³%å\imI¶."Ûì'Û…‘¶ô÷Ýï»ËüЄ,®H~¤Ü»?SîÝ_)Çîïâ¼ÿáÕ-²,óâÞgjÁÄÊì7цvIlO;$Ú>ÒŒöÌGû\³eº­•Ùþ½ÏÝž 8,ñÔ|qáaÚDQÇ^¼ä)ñŠù.‰W]SÈ>ëH7úóÕ¾~dÇ}ãzùqù•ñ~ã[†`¦j±F¼ù‡9iY¡„/dZQΛ̓ɖVd«7dkú÷Í6ô÷çoæÈ|;’|çL¾§ÜÏ?Pîç)ÇóÏÔÛó¯ÕÈoÌ‹Jú ØoaKڥІv(l[W3Ú2½äsb¥ì#“Ï=|ÙGÔæ9Jü2XÄõ#­^bÞúHç|¼D=çö+ŽëEŽoJN0,ákrž°Ç£JWk“_$?ò¸JŸ¹¥/×5båFdãnd“Æ2- IË=¤UÙ¼9ÙâÙJøû£ú¯.Êük'Y4|C¹ë¿£Üõÿ¦õ?,%?º“ŸE>|dÞFÌû5ú%Žl¦&=ƒÈEä ý±ñ˜]2ÇËgEޝLÆDKlÝZÄõ£öŸEÔ¹À\bW§)Æ, CG“c]Ȱf$¿Wó¨Ç%oò.ù7ëñû÷øXE#ö¬¿lK6 ”ÙÈ‚lüŠ´H$-CI+Ž·g31_}äW û¿X@¦“¯(·_åö{C9üÞf’/'?ˆ|øÈßZÔÙGCµ2H¥¬(ìKû õ¤=†z½ÑˆÃFʽGæú÷°PW2êœÄ<Ê=!Cä¹GÓžHœé,1jÔ2x/9š~2†Œ¢=fŸ_K¾êN¾æq³ßrÿÙ÷ш±uòɺÈßwȬÏ8ŠmhIš3žb3>b-ÂHKQ¿­3øSf¥É¤á@² óÔºª¹¤ñ²º?iJû®«A¹Ö« ÉÆv¤ í²¾/í°Þ½¹fôb>ÚÀïî”rä+™£èß‚‘Óu$î<ʸÞ!êÑ£ã·I—ö('ð9ÕQâ“áôÓB7Öñò%~¶m/ñË0Ö³/ÃY¿¿–õû Ÿë~¬z&êÉã25ÈÊkI>‡ý¸Œq]XÖ>‰ì´’ì6)Ž4­Ë~M»‘ÎEd¯ýš±ÈGkðûD¥ô–9ÌŠ^™œ-Ѭ½ˆëÇ ÍE]{Ü"Û\bë6S$Ú ^@Mú»C›‘9îöE=yl«ÛŸÔÏ!+%•kĶÅd‡;dÇc2í)g‡ÎHe9…ާI§(²»ð÷ÇnZýej·#ËÕ"u(·[yÊí¦K9Ü*Ö#õŸ’•D>|ܯ—˜÷?v¯eF:R?îA_ÈH2´“Fôàs¿¥œýM&Ÿ~ì1g=¹¦šÄ•éï¾7Eò=IbØ ŠÇE×.áwrv.sŠ\M{„?õäñD?I]7‘ÏÝ?ž¨¿A#NjkC¶3-á'™¶ÉdÇÒÞŽì\–tH%éï ¾ÿ)q¡j2Yf ©E¹òþæã…:”cayR·©'òáãEÝE}¼˜ßEz¼¸SÉï#=^D{,ž¡—̘"3ªƒÌhU ’+Ý%.åó–Wí v}.–˜èå,qß orfG2Š~¼oVr%íq0[ԓLJÊÞ%uxÜ¡òÜÿP…Gñ°u8ÙÚ‹´i+³ ãèp»Ò–ñt¸#ãã°½6ÙIÔïÇ?ß•ùå8ùu5ùr_âýÍÇ—ÊRŽKÚ›HadyæÃËŽ¢Î>¾b”@vÈ ‡Ò>WFÐWOkÄ«|λ”‘2ùü÷ã«3ëKÇW—-—xkš˜Ÿ?Î/¶‘XØožÄ—¬g/§M##éÇ/§Û“Ëh¢,Ö“¢ï¬‹¯Ëò¸×|ÏâñkºñMsæ7-X¿ß´œ$Óšqô¦5óÛ›6Œ§7íol™ÏÞtõ;¯üo2Ízu,Ⱥ¯Èz‰dƒP’õ/¯|£÷d!Wž.¿•§ÛÎäw¤òt‡Ú‘ÃËjÆ€T2Pä¥<½I_dNI‘INó#Ý’hø‡¨ãyõÞ…K4wM—ØhR9ù$9%œ:\ÄqÿñYè;ϲî²%Ù°ˆl´_#6uw"=‘žº2½(gÓ ÈA.¤OÒ7“,ü<Ï¡š?Ys‡ÌZsÉ_ƒÈß(¿ïoæ9Ô¥<õÂÈÖdC‘óõÍÈÖìßqíâèG;8餇‰¼”וÏ÷—2ü›L>÷Ÿ×uòzrA5‰=Ê ¿Ïó-J’èß«¢Ä¡j—ð;N:ñ9ŸãQ,êI^`ídÝ`²žYÿFÙ'†tAöí.ÓrŽô¸BzÅ‘úƒŒHoúyDý<²ú ™&—HÓ]dMÊÉû›y‘µ)O¤ÙA²îx²žÈ‹y3*ø’-ØÿŒþ´ËŒA´Ã ŸšqóÒ̱SdŽë s‚ª„¢ŽçEñ9꼨}[$®.,–¸~Ìj‰þÜC®ZH®!׸’ûhÍïD=ÉÛR³1Y›Çm1ãþ[ê6׈[{¥‘½·“.sdöq&ûý2HŤí»uý<)^\_ÍK6j,ÓX¯„…duÊŸÌû›yÉ5)Or­’ãk&¹~z^Š˜ÿçäúèy'=ÌÈ©Ì?'§»3«hÆ(æ)õŠŠ2ã¯Èü“þ¦^5†ÜýTâ]É÷GeKÌYÎz–³â*ŸH®\Dî¦=±Ž<ªÎºø¨{T‹û?ªª÷(_Âç¤óE™½æ‘.½È>†¤Ûu²ßRÒCÌWóÞŽ¢ßʬÌ:^\…u¼¸*å/æ}μâê”§Ø”u¼¸ëx1×ÏûäÅzûiëíçFV¤›/9‰öù<•öø<­Fü²ÄYæ2™Ëéï_Vì#w4ø‘OªUL“hXKb%–äÒJ%,"—]#w{<ùµPÔ‘'µ«î «ó¸Ú&Ü¿výñ·®N¤S#²›®Ìîé¤ó²— éR…tÍ$ÝDý~bÙ‰·üEÔñ'­Z|’ÙòÙ*™lA¶±#Û•%Û§’¢I;ÊÙšë¦?iÝ;ïLNÌ '/ÖŒÓD~zb³pžÌE½d.1,ákrË0‰}*”—ØoØ@‰î ƒÉ¸Þä"+rqer Ç9Àúк-Ù6…lIvè¤f‘#’AÊ ¦œCj“crɱÈq´ëÀ ôïáEb¾õ$8[äù'c¬ÚÊlV³„_ÈǘVǘ֔kLm²í9²½ÈOÆÖI${Pޱ¡´ËØñ´ÃØ ×5ãd‘Ÿž„ÍM—9Ì…ô÷°¸fä†-”s’¸hðj‰‹çî!ç-$çÓ/p%7pœ+*^![L"­ï+lÔdÛ1~¸I ?’weRÎø o2ØŒýˆ³‰KÿÞÀ÷Ÿlß'æ«Ov[L’ùÇÒ²=Ù”ãØÝŒãØÝ‚rínUr|kÒ†ùqï¯E¤åØL»ì ¥ö†UÑŒ˜Ÿc*ÊŒ½"“ï‘ç“çM)×ófQd G²ócA +ÒrŒ¤] ‚i‡‚>šq¬8¿xRå,3Ú@æì 2FÔï'/Oÿ‘OË}M“¨;#H¢ÞÎr—¹ÛŽÜS‡<-ìñ´’øP=ØäÙ”ÇUjÆý+µ(« }âI߉¤_™Cj‘þ9ä°2`0X)üûiõ®b~ý´v QÇŸÖ¯÷Ifý{dƒdÒœã¨ÏûOë[P®ú¤’M£I¾_þ´aˆ¨³OÍmÕäð"rÁjr±¹ä‘FlÄ÷ôJ¹}­L¾¿÷´Ñ.{2å°ÄÎu<%:Fì’Øuk ¹m¹=’ÜáG¦Ð=Ê, ÍÛ’Mx\¾û´GÓNÑy@9ð(9èO™>I¿Úäà\Ò9ÌŸ õûiŸZ"®Ÿz<uü©_¶2ëÖ,á²ÇáÇûOýÌ)—_cm²É9ò‘Ÿ uö©¿ÒœB+ríãÏï2>õ««‡nª%ssŽÌ­ô÷¡Û¦“ÇÞKœök¼Ä“ %ÎÜøÜô€ÜL¿¹e=yŒöˆþ*êÇÓÙõ&‘ yÜìFÜv“1ÆÓ¤„I¯»20nby“>ŒŸ_ÆCÌàM¤¿¨ßOç^yøéb¾üt­ÃE™]v’ŽóH'æ­µÝ É×ÉžKÉÞ´ïZWÊ™`mGú†³i—„9´C¼Ášq!óÓz¾YÊ µeò=ͧë7"XK«æ@¹ª9‘]o‘ÝD~|fb©&=Ù¿É´ÕäL32ê‘fŒùé™)ß¿-åŸkeò½Üg¦kDý~Vã¶ŽÄU<%¶^þE¢Ú „‘§2ÈÓûÈ[´C»º¢ž=košCÚÍ!x|û.<®}×ÅÑ6ÌœW¡„/dNØEN &'[‘SÞÉHáçÏ:é‹:þ¬O›92ÛŽ$Û9“¶”¿ïs>ëcGyútêK:T#¹îù³¾Qâ<àY¿>.ä”Hr£¹%‘ܪݓƒd¦XÊ+˜›,±ð ëX᡽äaúoá‘1ä%ڣȀu¤¨ëa‘ +jËý‹Ú÷ш¯‡²Ž¿`z=‚uüuà™AŒ£×ÁÌo¯G3ž^a|¼K;¿'êxþ/ýþ”é>™ôHzÕ&ûç’7Þþ¤oÒOÈ•_¡«!9ÆŽ\QH® !×4׌ "/åëî³¹ÿ•̃‰ä¡EdšŽÄz·I¬ßKè#¿áì/Í÷”ð/ry`yžãmRUÔñü?š[’žwÉÞ¤·éóH#ZÎ 'ç{‘ ÚÊ\Hy-¥K"ÉeÈ”Ï2^ø{~g×»2û'ÝV“ý(wgÞßÌïìI9:÷ßDFz‹ü˜ß¥³ 9ŠývYJ»tYA;tYªW‹¼”ï¸;Hæ^K™‰Eä¾kdª£Dï/bž™ïÛ _â¨öýw÷"÷4%÷–ð5™Êñ}&êdþË`²_ Òs-Ùß—XW#Æ$‘±+É9“dΣ¼ó¿‘ Õä¢ärý}Z¯ÿ‹ŸÉÞÙ¤+åžÆûšùÓúQŽiîy¤ç²¿ÈùÓ;Æ‘#Øïô8ÚeúÚaú²ýšq%óÑŒí»dî –¹ÛŠÜ#êwþÌg·$®¼F_ý»¹Ä„­é2“9¾õ9䵓äõòÆtòí±¹ñÒµ?Ù—Çmvçþ›=kÄ-QÅä¬;dô1™1SÈ9HeÚ¥pþira¹ˆþ~¼{™=ڑεȞ”û8ïoæw¥ÇÝê‘}Ÿ’îÌ'–‰ù~ ¿“Ÿ2ß…<À¼“Âïfç§í¤O^n/óÊ7™ô³“×Ö“yÕ$fnf<ÞqL’x7zÉÞTQâý˵Kø¼’K^=E>¦=6`=yØ“uñ¡+{؇û?ì»A#>šnCÎ0-á'™QÉdtcGÎ)KÎM%ç‹ùjþÇ?eveýþàÄúý¡;åþÀû›ùzR޽Y¿?¸²~èüøqëì'_26ŽL¤}> =>š¡?_˜"óR™—U%|HæºÿÈçnâ¼â¹qÇ0²S±D“g‰¦¼É‹ÉKfdz2WØãù¯¿[’Ýî’=yܯ½¹ÿ¯.4bí©ád„9­­ÌÈ/äŒ2*’ŒîDÆh“±¢~?oØXæH½’£ö£CÈ1ÍÉÐwdØar<岿÷П[ÏÊ wM!Uä¾ÓšñÈGÏ[ŸM–y>Bæ;òb2{¹Änæ"ŽŸ» }îÚÑFbßÕó$ö;»–<7<ïK¦Ù“ÙwGê»ÿ¨@2äšH†…jÄëË—ð9¹á¢ÌM”sÀ–^ä6Crûur'ý{Ànú{Ȱ@™Ã{äÊ2’r‡Œ¢!£[’!ïÉP‘Ÿ‡zä’3Øoè6Ú%tíº§¬fÜ'òÑó±§¾È<“"ó,ý{ì9?2ë–Ä™_×±§é÷óÛ…KŒ‹O—¸èTyú$y†þ¼(u:™Åq/ïô±ƒÅx_\D†ì׈+Ö8‘k‘ëte&PΛ\È-UÈ­™ävúû®Á;d™Kú‘Ã(÷.Þ×|¾kåØ5’zÛ5Êš f>ÜÓ׌Œ`¿{6Ñ.{¶Ñ{vtÒŒ»™ö¦´—yò›ÌSjòôzòf5‰'vŠùùóÔåÌOZ'IL_VQâå”Ú%üNž¤?_VŸ"39îë;C_#‚É‘VdÐxce ùçrUw™k(çµWÈ„8rCrÇ{c3ý=ßû…LŸK¤ï.r0åÎç}ÍçùC)GþðƒäˆñäHæÃ;ļÿyÁ„Dr=õSƼSnH^¾® ¦Ë|¼@æúYáÓfdñ‰Å‘Œëo"ϽÐà$±BÒj‰º÷’CÈC¾{*±ùâºÁ‹6¦¢Ž¿èä#±ËÁl‰Ž÷_‘9Wɉdî"òíѽu éHúñ¸îC¸÷¡¡±Çâò%|N.¹(sÙ“üSÔïk&}’9ù9%™Œ`žZiGÎ(KÎL%gѾkfS®uA!äòòí²NM;¬;½X3žc>J¸5OfV/™w Køš|9LâÖÛŒëÝ«E]{qÌ¥¼Ä»JL¹LÞîMfÑSîT&_rÜg<¨ï3mÉéŒ÷33#ÉY4bê¾,rÿQòÀŸ2QÎÔ#µÉ¤\òØ2ÙŸL¡¿ß™ÐVfxÍ~!'Qî;¼¯ùâNå¸Ã:øâÎôsäLæÃ{‰äbö{ï(írïíp/åºf<Í|”}=]fæ™·èßÙ·›‘Ï·H|8K\'z‘?†ò¿wv’øqûj‰Ÿ®³ž}ºÁúý)“þüé&ë÷§ç÷w7Ö“ï“&‘Sïß§©Éé34ajI ?’{ïÊÜ·š<àM2#?"“6‘Ç„¿$3l9®=9þÉûšÆ“(‡ñ2B‡œ&òaAuÿ"r!û­~(<êB¯¢SD>*0¹ZQfÆ™×ãÈ¢~Ôз–X«¿ˆë‚ß»ˆùGAs§‰Ö—-$¶~ßüð©LÇÅõœ}Ú£‹9þ9‰Çµ›ÂýÛM=­Ûïð$w¶!wÕ¹;›Ü»–ÜçK¨KÌ# /p}LfÈ*rÌr,åvå}Í×ñ”Ã5<ŠœäHNù°À혘÷ô‰$÷'’w’Ù¹dÎØïÍj™ï¼e¾§Ÿõû ®¸W/Ñ£©ˆë‚oE/d"1ôBıo"È·>ä;;òoq=§ ¬í1Á¹ú‰Ïã&„sÿ “ÊjÄð-ñäÖ‰ä¶þ2wÔ"wæ»ȽƒÉ}õÈýb¾Z0ä'™A÷ÈQÉähÊ= åž?–rÌK%ÇG“á",<"êlA×±)ˆÛSDÞ¤}⸮MAÜÝGš1›ùiÑ«l™Eke¾¡Ÿ/z+®ƒ,.wXâŠ4úëÎO‰{Îî’¸÷U ù×:²ˆ~¼÷µ¸žSXŽö8ഀݖ åq¸ÿñ4âÁ Y䯣ä¦?enaÜV›ÜÎx:¸“ñqp·?¹WÔï‚‹ çÈŒI.r&—0O]\šA._LÆ÷%ÿ¤}/®¢\éÊe'…;­Èk´GúMê?ýv]Íx—ùèrA-™…92_Ñ¿/ÿ%®\)ó^â3ÿx‰/NJ,xÁúUPð€,¤ß¼×o ËpœEAÔoÑâ‹ärÆwQ¼!¹òºF|}.€<ßLk,óå|}iy9„¼ÚœÌ`z}]øu¡ÎÜ‹2çí$çÏ#ö"’‹¯“K—’ËÝÉx‘ÿ ËOµ#·†Wj‘\¯¨°üÁšñ–È?…ž ”ù¼¶Ì¹dÁ)ò›µÄß}³$6H±ØðY2ÿ7ò¹ª„Éo§E€7¹P—\¼€\êB.¯¢ÿ8½<K¦ʃL$>$qÈã2χ|Bò´ù‰ã ð_KÎíN.¸BÆÅ‘‹ûhÄ)ùäÉ ¤z‡ÌÓ”sDª%y¶ˆ<¿Ÿ¼F^¢?GDu—9« ]‘œM¹#xŸ²0b.刘oD.¸EƉ|W9NM®c¿‘çh‡È‹Ô{ä¥Gšñª8?(œþ [æÃµ2û’y¢ά­#q•—§Äu÷¿H\ÿ‹A ÿ"Ëgö‘¿Rÿ›|sÈÙsȹãËÑ)ÇèÍþäÖä6‘ï^ŽY`H&±ß19´Ã˜GÔû˜¼æšñ™È7/C‹-d~|%ó3ý9ô‹¸Ÿôrl%‰óÆl“¸ðʉqÅ%ü‹üHû$êïËE粉–亻äFÆó²Ífä–Gqùp2Ó‹¼ÙVæ-ʹ<+…¼Ifw"s´Éôçñwe®âËg«)dz5yäº-äzæ»ç¹b^þòÅî\2ËüƼRPÖŽÔ.« «‘iš"³&ýª°–iyëG¾*·(\bùWéu«ç&'IÓ²ÆtÒRèÿ•þ˜=d|rÓ_Ãýõ× Öˆ—ŠÉô;äåc2¯N!¯u o¨ÈÌÓä­(2KÌ'_ý¾¨¿ÌÅíÈ%µÈ¥”ûwÞ?|õ{<åøýÏz䪧ä‘ï^ÕÏuòUƒfd¦ ùé ùMèÿUCU'hnÔ^¦ñ7™ÕÕ¤Éz²I5‰öó“$:T”èhT»„ßIã\²Ú)²1õßmÔ+réŸd<ë¶’ûw[µA#vO³!/˜–ð“ÌKÉäåòªy­,y=•Ìõ÷•Ïü?e.˜L.H.¢Ü>¼_øÊg)åðYîOÆ7 WŠ|÷Ê/KÔÉWƒ·ø’qäÚcð'êð—ÑßpŠÌ*d©Jølè.qjl±ÄÈgÎgz“•;’Uè§3ª–!Rÿ³-ɸ»äR7k9÷Ÿµâ‘FŒNe^‰>ëEžk+ó<ã$úB y‰ñ}™þ}U›ÌPê¯J%Ò^•¶J9.ì7jèXüÃPù£äÇ Î£‡øõ1jhÉ:£‡ sö?ÇŒë?öþ(¯ìÖtðÿìúKð¸QCCG ù_ýT=ÁòúÒW©š{ªT±È÷±ð½9ÛU*7ø’2¿tO¥šÕG¥êƒš1¿¹bN¬…y6l£¬3Û8S¥²úE¥jØtÀxgÏR©¢G`è` êþlŒ}În‡ñt¿¯Ryaîäœ}œT*~*ÕÄ*U:Ø_ŽÀ¾cQ£BáÏ£àKq¾7BOƒL“Ÿa;Σ0× DýýB¥ ž YP#•ópË ã ÔŸÓC^³8¯RÀ´&¨Tƒž ß…*•-ìn _7D}¬ ¹íÿƾø­Ñb•ª3Î…<®ªTÊ·úŒ‚¬ÃU*Äeù ê¾9ÚíøÑGì6@Ýl{T¥jƒºi½B¥ªv[¥jµú@¼6x€ã¼µ:ÎL[©T•ƒæ=UªŒ'H9ßÃx&"ÏŽ Ý¢­šøó­ÀÖÐÓVè¥7ÆY§Cß#š@爑 oa7Xç]:; ê”ÆôK†â ø» þ •‡þËø¿ ü² úº¤RùbŽ;mÌÆ1Ê{؃1‡ †àx_ä Èì‡:ç‡}‡C·~È©þ°¯‡1|! ûlÄ1ŸÙð ´ãˆZ2ç5[•žÃþ71î5°uØõTú²*1©T½§ªT½”9Z}ƒÚ‹üûÿ£ïسø cqǜٺ†Ü]þ6g'¶¡ŸØu*•lR5Ý" íA_Z¨gn}U*ؼ2Æç{iÁNÎèß~ãÙÜ‘l¬Tªs`ǯ؆9  l^ûD£^ö/FwW©Bîh£ü»•BY-èÒÛ´ Gøºut0>­¬>¾;9'h"öÁXœ1ïÐ…žgÂ_Ã0ÿöú“õ¶Æ [Â×õ/ ?Ô[Œµ*ü.qW ãÕ…&¢~„!· ‚ß{)Ï ~NÄ6}äCølبrC0ôæ y,ƒUpÜÄÝ4´[µÜ¶äƒì0NCåÜzšˆsözȿʹd²D~«‚qOTò)Æ¢‹÷€Íƒ1Ö0Ô¨AoÐ?ê} ü[9ʶ1ôŒ¹ƒüEþ¤‹\ ‹±(SÒð@äÚ`è`4bÐ}W‡=,!‹>ê@ìg‹Úf‡ñDá\¥:âÛm[BýËØŽ1(kÂ8C¶Ðs`W´Ùuñ»-òTäiOĽ.dvF»= ·@Ì'‚1ŽÑˆKÔ}ø†r­:|Úº°Cþ׃&¢¾UÇ<®þŒþí³–»°?ô^òYbŽé y»¡}EwÈ+®˜ÿt„®u!_ êƒ%ü/òކ?—A]ßòBû–¨-úˆÑ¾¨oÃ`Ãn˜ ¹£>º¡'¥Ag˜÷„’ÜwîÈ«ý _wä¯n°owÄZ?è½jAw´§|ߨ u?¾86˜ªŽzc‡â<c³ìYá¯ePu¡°_!'dòÂxm‘—t1fKÌ51Þ`ü6òY¢®ë£Ž)ß ©Ž1Ø!Nm‘§L?vŠÿ'b;jHuÔ”PØÏõ0PÑäÑÅØm1Ð… n¨k–˜'–Aî„à…íÁo4j“%ê½>æ^vˆ [øÌdä“êÈYÕ‘/íà·–È;úÐY dS®·Bž÷±ÁEòÙb¤ 9ÊÀÁ·¼ð{0d A=´DŽÑG¾­Žüj=Ú"Vu±Gø¼µâ_±yUùþ{ "_Ú@~÷ÂñÁG²)k®F#wyB/º%öµ†~áeÆ`ø—ö †¬!ˆwËChyÆu¸:ò£)¨…v­¡Óê›%εô‘?Âïe0?„üë…ca×`Ȩ ™MQ¢a'[P2FCoÖÐYâz|Ì ûbÞŒ¸ A®±DŽÓGn±…¿TGn´†~ª#*×-ô‘·ÊÚãá+^8&óì`ÄŽ.d†Nm‘“û+µãÑ…|ÑÐ¥µ’ÓQásÁˆ›ÔLKäX}äØÉV‰SäÊn˜3ôÁø”ox¢Î:£~º¢VwGÌ8áü½æ2ÝÑþ0Ø},ækÖÐmuä=KÔn}¥V ¯bŽŒØÒÅ8l`Ÿh´§¬ ¦ {uDÌèÀÝàßZ˜§k)ó%'bn«‹ñECfèØ6èYÂkÁw½0¾@œÃ#FCP?-1§VÖÒE[6h×Öí ÆFBÏÖŠŸa¯ÜQy­#涺h³Æ¡SV”&UUøZrÏ ŒÉ úĹ^0âH:±A›åaÇhØS6k€qÙ"®u1FØ$y±ún†z¨уoV…Ïêb_å›Lƒ^ æéÁˆÃth‰ù >tX¹Ä²Ø)¾Žz>¾0:Ž1XÖ1ÈC–Ð…>òFuÄóHØ3 ñ®œÚz)ù µ/±¨‹ñÛ ¿f˜Óè Æêa\Uáßј›Úâ¼ÆãqƒÜ®ðÃ~ˆGØÌ­3Žƒ^t`ëèq°ru rU3ÌAtàwzKUÄD[Œs$|&±‚ZV¶¶ÄÜ_y5¾nØ¢ÎÇÂG-P+,ÐŽòM/}øãHØZY—ÇíTGlGcn19?~¤¬÷¨ =X"Öl‘Ctàe1·ÐÅxu`?KÈ:öC~ò†N½`@ <º AM‹Æ|Ãsqå;U6ƒ-ÆS9Âí›#Z &TG¼G£¦["Çê#Ç„ Ã˼¡/Ø"ó´`èIã±Aÿ–ˆ;e½Ø· j}+ÔC]ŒE¶1Ƽ& õÈzñ‚ΕïÜZ"ÖFÂþÁ_æј X"&”5¿lQ«#XÀŸ=às¨ÊšyÑ“°æ–úJ„_)ïñ…¡fyÃn^Ðq æZÁȺ›%âÓõP6tC-vGº‹ô­j‰Ø Û…¡nyÃf^Ði tŒ¼ŒÆ|ÈóFcå¹ÅõÂ9ßM‘ 9#ç¹–È#a—0Ä 7æ.^Ðo ætÁȺ‹±2oA¬¹ÁÞ:°“>ò­dŠEÿZЧ쬬Ѯý[ÂÏFÂ.a¨9ÞÈ)^Ðm æ46°g0rO|+sjKä}äåêˆecÌe:£¾[ ÖŒW®I –,à£n¨ñÊ;ñ>J»°…>òmuħæº#•ó-Ô*oÌÙÇ+çûÐ æIÁÈ1ºÊxa7ØÐ1§»¡¾7@ éb¬:У~ CýòFîð‚®1?²D,5ÀG†ãa¿`äŸÌUm`ûhÔoK̯ô‘ãÇ+vCLc¾cÚeä†yB4æ¯>h»ôa‰ùš>r®r {$솜êù¸ìˆ9W0òŠ.t`»Ž‡1ß±DìéÀ.n¨ãM”Z1ë@ÏÊ:–ˆ—ÐÍHØÓ¶×Â# yÂ¹Ä v Äü)q‚9C4æ–ˆC}ÔcÌ‘,PM?M¶”\gBÛn¨w¨cј‡6€þ,³úÈ÷&ˆ‹‘ŠO Î|з1ú{ëbì6JŒÂ&ZÊ}"åœMù°4|Þóke-Ñ@œ÷#¹aŽ ‹ñ‡)÷ §½‘3¼`òm jm0rNˆruVv?ðA»  sKÄ£òž l­ä>IJ>ê‰ bÎýZ ߢF»C½+]!§)òÏDÔÁ ðHô¯|ß%qª£ó>wĸ)tà†ùÚ4åúêÅXüŠø¶@}÷Áñ–È#ú¨=&ˆ÷ž˜õî\`k]è[ }…AoøÊ,ä7/ø•1æ'6ðCøMìâ{*ß'pñnØÇ¶ñU®áüØ6ðÇ8œ‘g”wÝú!FÜ¡?7Äu+eî}»!ç»c»òÍO-eî›x×¼p¬úpŘ}a+œû*ëiùCVêÀèYYG@9W2†A'Þð+/ìã†\é†ñ‚Üã‘+fáïžÊµLå lcŠ4þ®…cÛ O†ü†ã¡'oäI/Ô¡XÔ5]äbg䡞¨=}‹Ç#Þ¢oSä-èÐzöÁ¹¿ö÷G=ö¯^g!÷Gü„¡oÔ`/åZ0êL/Ô?WØJ s67ìc‰¼ê¢\ÿ…¡MoäC/ÔKäHe]Áþðu_ä.ŸùèmøC&-ÌÕ†+ï6À§{¡*ßo 1ƒ¯c»–r^‹ü4þí¼è…Z¥…¹’ôª‹º ùB0§ CžñF.óBMÑE®×ÂØÝ«}‘Ã|{ÇÃNÃa-Ì• E>äo$0/Ô›þÊuÄC/ä{WŒa,Úl‚9M+Œ+2‡!7x#÷x¡^ô‡íµ Ÿ/ršòlÖ :wÅ[a,!8ïW.NCïÃa?]Ô‹ˆÈ èqïó_e-–&˜ßLD;±È“3‘CFÁ?'b†Øó†ß{!Ï+ßæÑE-„žC0çž¿yZA/Ðo”’+‘«&b®¥‚]&Ãfaˆ9oÄ——â¿È}*ØOù&˜+êGغ2Ç‚¯{ÃÞ^è»?ŽqAíWÁV!˜£OD‰Pλàó3”ëŠnPïzAß®¨#ațް¥—r½ù" º Bmð‚ÀV#`KS0óöXä>-¯y€.â_>^ ¶0D•áFð5cEÇȳwý¿î°eò¥7l腼삸sGN1ÅïîðÏXÌ³æ ŽÝàÃîðåpä-å^ü#ûxÀ\³nÐåØ|<ìe »Áç*Ãô•ëäð]CôQ 6‰EŸnÐó$ÈÚ ÛCSCQ{û †ÜPWB?Ψ×aȥʷϼ”ç¾”ë]°ej‘²Þ©+j^´Û1òB'*È3B±=ì5óúhœ³é w†#!FC•œ€üé ?óB»DÁîÊš™!ÈÑ6è«üÆuÏùÊu¼ä±Äxõ1þð;{èÔ 5}’ríþÐqçŽ\_ E1…o(küµQþÇ<Å2™ÂVã1ÔjKŒIóI{Ì›†Áÿb¬n¨Ñ¡¨å:È­aÈ£Þðee=ºpÔ˜`äcÄž ú ‚­F t†ßØ`½à£®¨.×$Äê$ØØþŽŒ8AŽvA¾³FLA#°- yÐ[¹– [ºÀBàîJžÃ\ µlc‡x3QÎ'cõ1×­‚9­!tÿ¡ÌYÏý¡kÄR,æÿ#`ÿØÖmÚ ûc|vˆ5Ôpå~º>æ«U0·5„Ì¡¨ïáÐëè) yľï…Üm¬ÌMàÿîo0r— |Ç uXù<z Ažh€>1— RÎÙK¼áë^ð¡¨}# ç`ä*;İ t[¹Bö²A?†Ð«;tâŠüíÿpíÜPÇ®˜?ôÇ8Ý®˜ô‡¼Š,ʵDij jueÔH}ØÌýB‡î15uü1 >æ ÿõR®­*çÈðåüyQùš+Î@'ºˆ ]eŠÜíÙ<06è2¹0ù" ö÷†z¡ïIðÍPÔöðO;ä ÔxKÌSô1¿¶A†“;Æ:þïŠ9‹1ü¬?ÆêŽ>ûCNwÈë9LP·,1'ÑÇœØíB~Äx(òÅxèsòVê­ò>/Èc¬œS+×›P\`“`ø‚+r—òN3ĺbIsšª˜ßFã8]Ø· ΡܑGÝ”:¤ÌáP½á{^è?cvÅ|¦ü7>‚Ö_ë!TÅ|Ëó^Kå(æ `´iˆñ¹¢®)ß쬌:3†¯õWî‰B¾&ðÇþ;r¥duEž¶PÎ[SôQ—mп!ÆÚ2y(u 9Ë~î…vB‘Œ•spÌ_ƒá'nðWØL…öícš¡6é ~ô0Ϊ˜“ÅB—ºÊµaäqèØµ²j’|8 ó =ŒÅ¾_s3/È  A,‡"§CNägËûâ’«ªâ‹Åcô@Œ»+×ç ¿þ{È펜ã¹z*s3Ä‹ æ –˜ß GØà7CŒË±Š†\ëÚí…ãuáZ˜_ÃO\”û®¨®¨©ÍPót;zOUÌ­´pޤ¬'ï˜SÖ;ÒAŒëaU•yr© t†øðF¬yAWåvAÌcÞb‚Új‰ün€:Û@ñCÈ`ˆñ ª†c¼ §1ò¥ j¢%j£æ×6hϲ‡ÁžÊ»ö^Ð¥.ì=ùQ¹7zãXvSò.l3ãk†Zªƒü¡ù«¢ÕAþÒ…}›¡~ê ¶õ {Uä]IJƣ t†ù‰7âÈ úP^¤ †=C£ÊZmF˜X¢ÆÀw@ß6Çò»¢Ž#O!·["·À/mÐŽ¡r 5" óoÔae]ØQ çŽnÈ.°Îߺ¢~éÂFnÊùò° ôäX Cmó†¯{a¬ÊÚ@!ˆ77œ‹ãœÒ±`‰ó9øXí/âô@eƒ~ !Sr™+jâÂùÝqfŸ´ÄÔ¾fƒv !_æ°ÁÈ·Ê{ÃÞ¨;^ÊõvØÆ ¹Æ6PÖ9Õ… Ü\0~øêŒ7|Ó ãFÎ QbA‰AÌ,1g1€ŸÔ@ß a_´k™~EMP¾M„9ƒ+Îa]0pGnvÅy†1âÃuÞqU ûÚ }Cȧ…y‰b"µ?ù9 µÅíx)×Ò`KèÁ~熼âÝk¡ž+'µºÐ¿r… täßCþ÷†ïya\ÁÈ­!ð cÄ™ âÏú1€o4„=mо!äuGN ÜŸÁùlìíŽ슸‚máÿ&ˆ;ÄK-ìkƒ¶ •û>ðõ`äÛ0ÔoÔ/èL¶ \—EN1€Ÿ¹ÀnÈ1­ÑŸ#âB¶èŽXuîÜ<à×aÈóÞð5/Œ/y4urj™+bÎñe‚x³Ä9›|º!ìnƒþ !w¥þ¢¨`Ceퟠ8ü¼ë ?‹BŽZ„ãáÿ&ˆ‡ðô£<»â?WÁ–Áȱa¨'Þ¨^П.ìh¼n ¿4@œt@ sÜt¡wèÏ q¥Ôøuò¼7|Ó c†Ç¡®#®Lg–˜ã qÕ€ÝÂ7 !³JñäxwäÌ(äicœ[™`^ZS‰ÈæŸWÁfÁÈ…a¨ÞÈÿ^З.ìex·Ä¹j™ ìá¦ÜãÆ¼LzvQrbÖzPÖð†oza,Á°×8Ô4cÌQLP·,1Ï1@Mk[Ø`܆ø¿ô¯‚í”oMZ"OG!÷Ç"o¹#Ã&¨#Ês~†« 6ò€Þz@QÈÃÁ°gŽñFþò‚~ta# äiKÌ¥ »m”:ý»!OX"¯º`Ž­œß#_êBÇÊ÷ž] /7å>%òsöñ†Ÿza¼ÁÈuã”k]˜wX ŽXbne€œÞ>`Ýt@}2Ý‘w{X)I²)úE¬¥lG}3„.T°tÚC™ÿ*×ü•{èßó9/èNW™‹ÂnÈ%–8O1@žvQ®™À_æ Îc‘_u¡wež[#—Cí ƒìÞðS/ŒÙs åþ ròw-ôÛ¶ï€eýô€]T°er¹t]µÆ9÷7ä·Ê=kŒ[›y@¿= ß(äÖ0äeoÌ ½” »c_cØÒù×yÃç>.°r‰.ôí=¹!vƒ‘ËÆ¡ý0äYo̽0>gÄ•1æI&¨ç–˜`.Rþؾ`]¨`¿(äìPèDýG!—:#—½1/ôÂøu¡ÿ`ä>ce~‹úk‰9¹r±¡bCèÏ ¹Bús.Ü·ÁÈWã »0äToÌó¼0r±2·E¶ÄÜËy«!ljˆ±ªÐ·3â( ±Ðy- 9Ѿ¯‚ŽuàkaÈÅÞ˜Ïya¬ºÐs[e‚Üf¬ÌWQ“-·h_Y{4Ǹ(óGäfˆ/ØB~SvÕŸ¹"‡¹¢Ÿ~ð]è²bCq¥ÿ¨ ;»@Wn¨OÁÈgã”:†\빞t`¬ÌiQo-1'5@N¬ Û6„Í ¡+ì匸 £Ëc1ŽR <ìŠÿ#aÈÑÞ8ð‚®ta å¾’bežŠzl‰87@¾3„Þ.зjBWØ@6n†xÔÝô0¦ª°¿.ì £Ü_‚½Æ¡¦5ƒu{zOUì†Ük©øÎ_½ 7èß 5Ã1n‚âi  UÎ-!“álŒþa}+Ï‹:#M•ë½Ð«3âE…›*×j‘»½qŒô§ [ê(×z\``ØÑ¶7A-·D>0@>TÖ­„þ ¡ËfðØ]㨠ßÑ…í:+÷à:Ê=ø_Uø‘1æ ÁðqJDöFîð‚Î\”ë8ŸsFìÙÂÆÆ°‘%r„lmˆóÙ†ð+CèY9ÃawSØ.ùܱ¤Â¿M¡]ØOG¹†Ž¹‘ t »ÙÂæÆ˜o´…ŸX"À/ 1§èŒf=6ƒŸéÀÖz½ªrݶj iÐA<êAöªð`Øyê¢6dÒ‚~tà˦п tî6 ýÀžÆ°•%r†쩇zm}ª —3â5\™ð"•A­é…Z\¹.º0…¾ÃaWGèW…üQF¹6¿P)÷#àoúè[ötîÝpž ÛÙ*¶F«Œ|hßÐCÍf¨Ìqáo:°µÆT~¦ [5ƒOè ®õ0žªðGè_>l Ý»@7ø‡-ìl ›TF~3€-õPC !« ò9#ÎÕó&ă)ÎYÃá‹ÎˆYŽ×ÁœÁ¶rƒ/8*õ þ45ض4Æ¥2r¡|@õ¥3jœ!Ƨ¬uY*ñ€ccñ¿#âÖ:¶†b”û•˜ ¸Ànn°½)ÎUm±¿1ô_¹Ñ6«œ«‡aˆéiöZÊõKÈ猘‡=•w•ca“pØ06ˆ…¯:#ThOsåú |ÁQ‰Ì5lѯ1æ*mƒ5w àz¨1Qï Qï OmØW ñiùn ì¡‹¯¬ñêˆq[c®]º(×^1µD¼)ëSšbÞb‹}¡—È©°‘rŒ!j¤ì¡ü¯¥\ƒ„ÞUÃr†+ç ˆ«XØ$vs†Ï©ÐŽ5æ²1еtê‚mn˜‡:"fL1±E߯˜³´EüÕ@¾6€ÝõP{:Ã÷ QûÇÚ8¯ÒBl¶E,:"v”ÒÆ@Ç}@ØË sÔXÐs[ôcŒyK-äĽj±!ê¥Ã9ñÈ™J ñ¦B¾Ô‚=Tèßú‡ïÅÂNáð7rž3t¥B[ÖÈÿ1еtê‚ínˆGØÄó»`È?r›bžb YŒ1Çi‹X¬…üd€y»j}gØÄ¶w@\—Ãy•âT úi Û;"^|0/´Æ<9F9À¸ÆAnåœrƒ¼¡›¢æØB#ôY ¾l€¹¦ü¨ÎS aoÄr9Ì—µo*Èâ ›„#ïôCÍè±["_ô€,ÎÐ_8ê’ò.[yäSÔ-èÚ9%öpÝЇ#âÆg1äÁ8ÇaL¶Ír¶…Õ‚ïàœ@9²3ìe„œæ€/‡y¶b¶­§ˆ1Ÿ%hóêåÜㇻ(×MЖìbŠg‹~ÐWeŒ¥‘ÃÈ?z˜?!G*kÄ•Ãydí¡Ü/‚¼Î°9ìŠz0sÙnˆ%åqb\ûtƒï;CÏ*´oŠš¦¥\?S®… GĘÏRÈ„1ŽCM³…|Fµ-|¬2Î “ô0Oë ;V‚ï: ÆË)×H§¡¨7ÕáCº'6ŠU®W*÷÷p|eœK(¹g¥Jõ;æˆár8?ÐRæbȧÊ:Ã:˜çè)׎ÐV,t]>ሸöQî¡"ZcN»CãWb•ëa¨ÐGy3cG}Ô‚ýMQgm1V#Œ¥.ìÓ¹¸"æKF`7eއq;Ãt0—„¦bž­Bì—AÞé¥\wGÌ—QæÂȕᨉSq~äqwCÜ9ÃŽ*´©\—‚MQO•õy¬‘c@-ØßöT¾½ ¹÷>8ŸôC?þð±`èx榶èÇc«Œó9äÑZð{=äÎð##äeä±r8ÖB‰F›<Ššh‰\«BlšÃ—£‘f#žk! `k=ÌG®u@~*ûk!/ÄBÇŽ°•æô~Ùz²ÆyH üLùžï8ÌWC•û¤Êy ô?ó»žèc¼RŸ”kB±ö GÍÖ‚ÿ™¢æÛbœFSeœ{¶FݨˆyœØ ñ¤‚>"áÎðƒ©ðœ›U‡_÷‚…£NO…ïz`œÝ”˜S®u¡½ò11?ºí 9¬‘›c°¿üͶVÖ3Æøgç‘”uVƒ¡×q˜C›bn` ùŒ0¾Ê8Ç4€ë)×á³F¨ȧå*ˆÇsU¡¨¿ÿÃ!oyE¯Ðòο£r? ¾isœøk(êc0t6óèñÇDÔñá˜+–U®ýÁvnè+ó-ø´)æ ¶Õ2UÆ9­üK:4B}r@Î-ßÒFnë¦Ä(dU!×—ApVÆ [÷Äñ=ák±ÐÑTe>œ]y=1ŽyÀxè( ~Øcr†Ì*ì_vD.޹ª5ê@ |­'ÚÔ‚¹ÀžnŠ~ §q˜ÛGCg³Ž·ÏŸê»)æ ¶§Æ\ç¹ðk=è¤3bÎ5ʹ¼œ_„è†\愾-Ç‹ÇmUÑÐ×l¥>Á—}0ß±D¿Ö˜[ÅÀO‚¡Çq˜ë+ß+õFÍöÂß=1–ñëpä¤(Ì+aßpÔÄXäåýpSÌYl!¿d«Œómøtm„ú耤­äOœçvC¬« » u§ j–³¢Øy*âEÇÞåTŽ:ª…<Ó¿)ߘóÆÜ s/è ãŽ\¥B])ƒÚÓM¹?*ÀF‘JþÂoÖ¨K1ð9-øR(Žõ€UÈ-Á8~êF4ô9¹Ñ±äƒùš)Æe‹ñA•q~nßÖƒm:#÷¡v: Ÿ•ƒßkà ç ZB'Îʵèjâ¿ô ÎVê'rŠr½%d·Æ$¾ ]ù‡›2¯G>ò€ zBNoÌ+†#FaÞã…}a‹pä]Ô=-øa7ij-Æa+CÊü v0Bw€¿•ƒ¿i+EòkaþÖSÑ|ÀºšŠØQ¡ö•A[¡èG…zUóŒ½'ä W®e¢Æ«†#/uCLG¢Öj!ÿ¨”ka0DrºtˆñV€ uq|O´g yµàsÖȉ1ðÕhèr6ò¡#rŽôŒcÆá<ÉV¹]T†- à‡z°[gÔ#ÔoÄG9äsmÔ‘9ð‡9ÈE–Љô‹ã+á\}òA4t:[©ÛÈ->¨£–èlo\ÿW¾ý=ñm YÍQû#”{ëÓsŸ(Ô/l„-*ÀvÑ'Ã1çÐÅç¦ßsôíÚå…ßÃ1ÏŽ\[6‰sºžSÚÿЬR€¾•5­ÛAç•à[ºØG¥ä]ø±-ÆbÙ+£nÀÏõ°o%ä<Ô¬rð]m%YAM0®HøL%ÌwÍQ÷{Á.½oÂ1ïñ€üº8Çë‰vG‚3³ƒ°= y¾l5>;B9‡žÌ±O;Ø&~§ÂX*À¦‘˜Ç˜BNkäñĘ|4z6‘ó|ÛÁ8vÎl¡#è¨2æˆ=´Ûµ©rä9 ÎÍËAme>‚Ü?~ }̆¼ŽÈc>ðñ9˜Y#÷Ç .zBæ l‰sÇ(´_¨ø)r牢Á.ãpÔzî†úÙs-7ç‰q;Ã=•{Pè¯;r‹riwäÍî°ÿ(Œ¥l¡ähøt$|À¿a<•Q¿ à§zÊuäCÔÃrðamÔ •rí¹Ýúë ™"1 B^Œ€ïŒÄ¹hÔP[´ƒîÂ_•õF(×  «>˜ã¹!Ž<¡?gø³+ÚìþHœŽªº#§u‡­G)÷¿ÑvØÖãµFîׂŸFCß³ÑÏ`Ī#Æá£ÜoD›ã/mqŒôVuÕñ¢‡;£¾UB¾tPîÑ`ÞVñ¥:£vÜ‘µpž ½ÎFîŒØð‡ø ¶ÏÁ¼É5"f­8•WõĘ‚°ÏHì…|S þÐóÏðçáÈ™#`‡`Ømò¤Ø u±j¹tì »:Ã?]ÑwwäŸnÊv펼Ú~2 }háü¸|a(|Þ1ßÖRr:¶aŒ•‘÷ 0×ÐC?•à+È-åPo´QkºÃß»BöHø˜)ô®‚¾zBÎ äÔ‘h7 9§ìÚóÕðåáÈ×#`/è¯êôí }8Ã×]ÑfwÄQ7e>w‡tÇyÜ(ŒC sSÚ¯ûGb¾6L¡ kÔ‘e;|=m*k©FÃF³Ñÿ`Ä~WŒ×s[ìcÝVFN6ÀDÇwFN«[: gÍÁ\°ê•6jUcØRvÕUænÐûläÞÁˆ/ø’æs0³FžˆìÑÐWÈÛc Â~#!grV%ød;Ìc¿‡#Ç N+— Æá|ÎÛÓ‹î8ì†ë;xœá×ÎÓrtG.ëè?è¿…¾´0¯ÿé‰ß#á[Zˆ[ün„ñUFÎ4À|FòT‚=0'³BñAì™Â­ wuȬ‚ÎBaƒêÈ;±J…¼AÈÇ#ÑvlY vl‡ùð@øþp€:Þ_Ñ!ri7ìï›xB¿ÎˆeýïîÈ9Ý ºÁÝá+Ýqn: ãÑBè©L†ÑwøI(t` ½X£ße;bd4Ú‡óÒhØj6dŒ<ÒU‰ÌmüPSüa›Vø·-ö7‚ü•‘÷  G=Èßù±ì;óÒrC5:úŸ|=¶ëо}0ñƒ?ûCs0w´FÞkM#ÿ•A͈E ï‰q„¬Qð³Jð«v˜kD, Çx0øÿÚû÷0Iϲ\ø®ê®š¤¦¦«{*]ƒÝ¸Wè‘”ÑÈdЮtaLUuuWOw“éžPЕԄ!„® CRa‚ (vmD¢¨KÁý†×Ý nP–„½È. È6D]²Q@¶â÷»Ÿõ.Öûß÷¾Ç÷ýçsÜé~žû¾¯ûºÎë<Ïçy’L_mïôœzcÀ¤ûwÔb&Öá|‹þ®á½\4äv ¾ÖœßÓz0Ká¹UïìÓükijâÚ¼3CAnóò2 [YkehxÓïRòÔ’ãõhÙkŸféxßuówäy¾žÑÏ{r·®/¶hçjà„†o8Ó\ˆ÷6±<Öfa¦Â»‡¿ßà‚xžÄCÜ(ßkž §õ↹){^£9ù\“Óxtdi=Ó”C׆4æf½Q ýÀ3õ­q§çåküóŠ{çó8ý(¸?C×áåYµÍŠqÂó†ÿOÓE¿?T«!¾¿YßÖì½ÏÛLxÑÓømäŒãðÁŸukîÈí~ÚSãõðíOl=Tì8¯Wj»#Îz`îmÎó\Xœå³*ü[ß/ªý´^ºF<+Öšw®ãø» _y×fá+kï ýoú]Jžä·%¶}Þã¢ÜŽù†?ëæï¨Ã=£§÷äo]Olñùk¸ªÞŸÈñ†x×n÷6œõ6±<–fqTÅóA[=QM.XÿÆ€7ý3­SöÍÉ炳žÆ³#s§õH“§:T§á‹)KÕähŸßê›{§çñküóŠ{çñ8½)¸?/îëøƒYµÍŠoÂ7gèöÕtýˆËãç+ðò¶ûSêûpØ»gÃÚ‡ê8 zå<ž÷4þ9÷Õ4ølçqÚ¸¬«çÏÃß>?µÞqòáïS_ËŽúíÑõ=¸Xß‘pË–ç5œÙÀG ¸Xã-ÖàkC~¬Q=o“‡çÂpš‡›¥«Ï$íPk>¬Wwz†¿Ñ˜S¯ðwM6ôã´^Þwýq¬Xg^>ŽÓ€—·æ,Lfíáš~—’ß³¸¤¥~-ñåÅöo?Ñ^Â;j·Þ­Ê˞ܯë¥ðwÔ­á¸Ni¨Ï†X×x5˜:pÞ‹êy›Xž ‡iÞo¯U<³´C­­cðôò”S‡†œÆr¼à¼§qõÈM&¡‹Ÿjr´Ï÷]ÍÑky5»/ÂÀ®ô­uç¿8³{VÌ›wöã´¬`~^×½÷+ÿ›1Oðo†gx¸þºšv÷¼:^çÕyHw6ì7‘“®þ¯9ß>϶àcž£|‡=vÔj¯Úƒu}rFþ·p×NmÀANÖx•µð\(rxQ]nsÎçê‡4ï9ËV<µwvöÿNüÆðî ?äÔèá¡—ôìŠù%~ñJ½6ïœÇéC‡Ì[sö²öÎÀñYè4¾¹¿¥VûÖ½FüM÷¦äö ×ÎÊÏYxo‰}×¹ø”Fð*æì¨ß^x-?{ò»®·ðÓlàš†Úl8ÃÚþÀÖ<\TÏÛÄû\Nó­³x±â™©­/XÿFù¼GïÊÉtx?(—95hèç³Î² §]Y«É_ž‡ñCuÒÇ..«…¾â?ûÖ¹“ß¿šÿXqï½\âCó0q¥žºÆ=W„wÎ{œ.¬•Ûu|Ðec¾WèÙ u½J_ÝÀ_ÍÑyX¸ß^¯‡p0¤I“O\; ïCÄÑÅ35yØçœwÌß4‚ÇÏŽZïyÖ ?뺾:£v[øq '7ð\Cî×<[®Éÿ†|Xó¢úÜ&'i^x–?­x6këç {Î+Æ;ÕüÆÐcôsŸäÔxż¿z¥~œwækÄrœþøØ¼õæà6kߌ>i©áYü´ÞÉóÎr6àÁ½Óâh‰õ¬^Ú?ç,´¹<õwÔvÏ:ƒ£öÔb]¯ná°5ÛPŸ†zmˆ{ÍóêšNûsàüÕûY»Äšæ—gñnÅs][Ÿ_°ÇrxîŸÆ-)ùË©EƒžžuŽ…ðžÚµ‘uš|ìÕ<Ë=;øÎ¼;Õú&†t³‹÷jrºÏ÷®¸¿ÄS]©çC.hmÁü¼X®óùJ=6ÎO› æäÅpçñ91eÅ=팾~8_ÍoÑ3pqlvñIGtÔèß{™X'òu/äár½zCþ®ñ}Þv¶ÆüP#ø5qì¨å]ÚƒuýuOn…gP<Þïôahí’?p¹!7-9½Oáïμ¨.·ÉIšWŸõìYñlÚÖßÚÎ*OwªñÁk;N-WÌy8|•Â÷5±]éLóòr¸ŽÓµÏ·æœõ³bÈàdzølßz Zßt=%×Ób™ÆYbž~h‰ÿñîçÙNãï‘káï…^xßdpØFx¾w†µ»ašoœ†½ ]jt›õÒ¼ù,®­xfmëë Ö»q6<Š_ ôøP½‡ôso\Æ34ùå#|þ Üvñ\MÎöy°¾ywªïŠ8J<öeòr¥³Ï‡³Òæ‚yy¸ºÎ³Âœý³xwË<>Kê“X¸Œ¯½ŒþvñGGì‹ûŸ}$¼o“›Ó8wÇj<¤—‰û!~?æ…ZðÙ9ÃŽ{jxyöìùý:î:ƒ Ãßi»F“®5xœ³r´ò"7ð“åþ94ó ¼sçág=¿Vøò¶ø.<Á9åïNõ¼ÑXµÿ†ó¯=C¾ÔnÅž%ž|w\©çååñ§açÊ[{†³x:ƒ'Ïò‘ :¿oݦë)9ÞÕ«—ñ¿³t|hÁóC‚/Çgù¶ý}÷_C+ÇÁÛÙ³áì{áÛÛ÷ž9ëîß²Ï=jàò úä,ž¹ ®éÁ‹ê}àìÏ‚Õçк4ï?‹+<}[/_°×ÎW >7¼œørC¿«Y÷2yÉ©áiº1 ‹g.ã7šáÝ2 ñŒqVg་;Çä¹oÝ;ádÅœ«ôSø¼]©çC¾hxÁü¼ø®ãŸæà,‹³3xÿ&¹<g'ñÿ,ÍnÈÁŽ3ìÁé:žÚrßÝià䆾¸Ä<‡öy§£Î9ƒ]¼Ô§Ž|Üd¯óêy„Ï¿ŒÆªéžžÆí#ëÎÒÑ}~|7x®àÅ»#w5ëïÑ»ðw ¯ëÑ3øv ¯áÿ^:‹Ë°z_»k 9o‰ñ‚ú? VÎÁüEu¿DÓ.†÷ž#f”{Ïmq^èÈ‘œß OÓª˜Öž)_b*y&XÀQWêñy¹¼F|ÇieŽç­9§w²bÉàçà×y‡uÞ-ü½ÍM÷¤Ô(O_[bß§«»°7‚´þŽÚ ßÖpâžZ¯ãƒu~f o®áó†ÞÞ¥ 5ß C7ð¶·á×5óÎÁíE¸¹ÄW^„ÿ4ΘÅïÏ mx¸`¿jðØò— <ËÓ5hÿ!< ý¾&wM›SëÓ4i4ñ sÿ2Ï‘8öæðWnûÎw'쬸ïèC“ÿt)5£Ï®Ôëó!/|AÁzy1}—˜æ`0ëºò˜Ó¡“ÁSóUGÕeæð‚Ÿózå*=ÑÅm7‡ï°ÎyïœóP=†ôwW_mo<¤vÔ²&ˆ=ú¸Këzú ¾ÙÂÉkô¡ülíÒé&Ÿtß{Ž/ªÍ%yþÓøoöoåLÿ·Åt¿éË×êž Þ¦Á¨ÍŠXNxžXÀAWêÿy9¹FœÇéhÁúyëÎÁ{Öþ5_çÝöÃ{ë  °6–Ç–8÷=œïÂè†ØÁ?ZwGýöhð²§>ëá;.?²…S×ô`CïïÒІ:5õã <ím¸è¼_TçK4;üÝÂi|0‹÷+0ØÆìÕ.żÿ9µ8Tû!}®ÉÏiš4’Ç\sÔý30}ì—ŠLuqïÍá¶Ü­¸ï„g…+c>œ›(ˆ%oÿëø­9XÉŠ7£–ÇÉGƒ?……+poN>ºxèfçë¨Éi\?ræCuÒÑ}ç¹(WÓ¼Únð\Á3ÚoGjξçù~ÖõÓœ³…ƒ×pIw6ऩ§nà?Îé•KüâExLã˜Ù¿“ ýÔßù˜¾œÂûpzß’ç58 ÇüŠXNx6XÐ÷WÂß¼ó^#¦ãt³`í¼Øæ`3kß ¾YçÑö­÷,Ü–’»–ئá{Ÿ^7èïnðAÁ#ZwG]ö<ߟÁW{r¿®×yŽ-œ¶†—8h—f6ÔbMÏ4õÈ òpn/ªß%žñ"¬¥õä,Ž®ÀU[Ï^°×†Ü¤Ä¼Ï9y?T×!M®ÉËiú2’¿}4øøÀsj>PÃ.¾;ïûr¶âžž®Tçùpf_CÞÞ×ñQs0þ¿ú¾i [cÜy4øÑð­J.ºxáþ¬£§]9éå.ÐþÏ;jRsÖ=Ïõ{ê¾ïŒëzã žÛÂkø·Wvû’ðL#MÞ炼_”ëK´ë"Ü¥='Ìz¦­è¶8.ð,}y¨_+ð]xG«¦ñÊŠXNðü úøJØ›wÞkì{Æ ÖÎ[w.³öÏð+ Þ`Û·fJÞÖðÝVøþÆWíÓ×­ÜÕwàs¬½£.{á(¾Ù“ûu}þ¾-œ´£×vƒŸïýôF“çj¨É9}|AN/ªß%¾ð"¬¥y‘Ùð= ®Úæ]°W*,®øý ^ÿJý2ά bÈÛ÷:ý9Yqfx—Cgn©É¬çÄ#p4¾…ÉÇiÜ8rÆ-Zp¨žCšµË4‚ï±þŽztqEÍ÷<Ÿï…^–÷u=qomá´q6pËnx/¢–Ï¢Í 8iò)Â{a¹¾Äÿ]„½4¿uŠTôÇšþo›{_è;û@7Âû_ýР­ë|Ù4²"¾|ý‚^¾RÍ;û5b˜¡µ{å)ç`4+– ϲo½”ü­Óúižd?¼³£) Úµ«Ö)묇ºz6?ƒcÖiz“—ùkL õ„ÅCuâlGôANôái=2’—už§Þqªo7è”Zž‡×}XZ׳[8mG®á}!<܆óôû‚º\TÿKòþ¾®4?tŠg©¨Ñ>i›sAÌ}¹¨ïнNðùWê£ùpn1Ä{”·¼Žo™ƒ‰¬½2|ÊD<'áþ Í„okò1áMÕuH‡¶èÑ®Z7‚ײœÅ]¼Qçžgð=8Ø—÷uýqmá¶àÁÂ;>õ\ç1pÓä .ÈÙEù¾$þ5pj¬.§x•Š>i›w?ëËé@ Oãë‘|m„wÀz£AW§ù­¿;¾Íêë+õÚ¼^#†:Z°ÏQú:‡Y±dxŽ}k¦Ôbš'Ù >8|w£U»êœ²Æºõö<ƒŸÁ9M>d#Ô§­w¨¦Ãà-œ'Þe냙ðÝ÷ŽÄþåFxÏ©6]¼sž‡Ó}XZ׳[ømG~wy¹†z¯óká..¨ÅEµ»Þ ãƒP_õ:ŇTà¹mÞ±ö ¦+ö;Á“_©—æÃyicA¼Gy¼ëx9¸ÊÚ/Þ×Â_ÎÙÕq¾åãÈ‘õ·èЮº6‚G²Þ.è⋚ØÎâ=ܽ/ÇëzâLà;|¶¸0ðWx‡¥†ëʇÍÁZV ^bß:)ùžà¦Z²¾³…÷6|OƒFíªmÊúëÖÛól}†okò§qé(|§öÕs¼„3åB®à~.áÝ$¾è†÷A8ï<<îÃÌ:ØÂg;rºË‹5‚ŸãÖ³\÷‹êt)¼ïÅÖH«Í)ž£ÿô¡mnß¹ê·"–´ýJý2/× øãø}b %GyµëxŽ9XÊÚ3ÃcŒsì™þüÍÀËØz9ù8T×!Üìªi#¼‹Ôï]£³8¾m¾Ôj!|ß ïlaw+|äNÓ‹QÐNÐì+õÓ¼ü¿_Ütâ(ï5kYñdxˆ–ÞÚçÑRÎßÀC[ö˜ïax]gnЧTøŽ [‡ê5 žÁ®Æ_G`;'7“·Ú—߉·ëð®1|“ïtpÚyøÛ‡‘u}¾…¯väp—çjßFß×Ô®©g0rAÎ/ÂÒ¥ð¾'X' g§xŒ Ìoà˶ù}ç¨ßŠ=OÐò+õɼ\/àŒãoO¥¾þfÂs/ovÌYæà)kïð÷Ãåal­«ñÓøËÍÐC999ýg±ïÄ3Ò¡ÚÃslx¿Þ9êù®{kb?‹ƒöå|]?lá®ùhžá¡ÖÔr7i¨GSO_ó‹Á ;Çšž?°NÖNñ8ÞÀïmóûp3^‹Nn„w³ð<Í­ˆçDø¬g¯ÔSóòyœ^ÎІ£|×ÌeÅá¶œkŸ§ié±”|tõ}M\ÓüÆ>_»aí]9H…þ§K‡j:„·ðî4|Ë‘£­ðÝñ¼ùWëÿïVë|x6åAGâoÁþ|ÀMx·ˆ3ÎÒÈ}ØY×ÿ[8lG^wù¯†ú¯ókjÛ Ï?°rA=.ªË¥ð~V­ÌOÃç)~£¢'6ðyÛü¾ ÔwÅ~'æ’ÿ½Kj^ÎpÈqz~Ì9gÂó+Ÿv¯1sY{gx‹‰gÙe÷†¿ÃéˆØgÂ7<ù9­Gö;T×!ŒíÿÃ'íà®óÕÄ{íËûºómá±7÷ðQkj¹Î›4ऩÇ/ÈýEq\ ïñÊuÒ°wŠO¨À÷žo›ß—ßAxÏ®ï7B=Þì~8_ˉðýX—= ÍËáñwâ_kç­;oY1dôÜ–¼ìóã-½˜’ƒuûí]›ü§ ©šr”O›~‹{øÜ]5ܲwʺ µŽöx-{Ìàé£üËFx'“‡ê?„ËZÐ,¹»ïÑ 30; ßßôA#¼[ ߃NáÀóA×aj?l‰aGŽwù¨ŽZçÖÔ¸ž¿à傺\„½Ká£8¬“†ÝS¼GEðx¿m~_^ê¼bÏ4ºìÙh^ðÏñwɉõòÖ¹Žç˜ƒË¬}3zx‚ß&úþj¼v~g`ë´çÈ‘}Õxc»r× i[áyoìñ([ÖoðO;¸£‹Sjb?‹öÕf]ïlÉ׎<4g…çµ^ç[0ÔÔÿÔæ¢z\rŽ5kX' §xˆ ÌoЄ¶ù}y¨ñFx/ óÛá½6ÞÌ©éŠOÐô½^öÌ4/§Çßí 4å(O6“YqdôcK¯îóí)ùØã¿§qTÎù÷y›ÝPkk4èí:¾ØãI¶¬·Þ Âæ¡úá¥æ,ÛüåVx×ÇŽÄÜÒ ð~¯tƒvÑÒóAïaiOlÉÕŽ¼î†÷/ê¾Î7¬©i3<ƒyv¹ aî’s¯ÙûÀ:ix<ŇTôÊMh›ßwþº®Øóí.{Fš—ë¼sü=ÎLsŽò]×ñ!sp–µo÷Ñ·3zálΨÿéOŠ;|W×!<íªiƒ†n…çy\±Ç·lY»Þéá€.©‰û,}Ý—÷u½³%?;ÖmžâµÖÔr‡iÀMSÿ_÷‹r})¼3¶æuÒúæ_Qï zÐ6¿/¿ƒðž9¼…ïi¼“S«ñ ó z¼¬Vóryü½â§%Gù²9xËŠ!£×Zúo?¼à‘‡i|•sæ}>gWRæ¯ãˆ=¾d+Ýï.az¿äÔiE|'h{ٳѼ@ìôã(6cY1døŒ­ð½Z¿íóz)9¸ÌZ—Æ×àåËõñ¹Øå‰.w¶iܵÏ]—»êº%–u¼°Ç¿lÙë2ý›²F Þ×Â3‘ša²æ¬§yÕ‘³4Â;9m„÷t8¤‹s¶qïy݇©uܰe¯|Ñ€u>`M}›zý,=§vû:¸»$'kö?°N^Oñ*½±AÚæ÷åe Î+ö=A×ËžæÕáøûåÃùŽòj×ñ)s0—µg†7©8ÇŒ~ªëéŠûg·6¹ÙãP½‡ðµÞÙà†½ð®Õ=ð¾?tñFMÌÛxw_-ÖõÉ–Üìè³&>9Gÿ×y™¦þ>Ë»<Èõ¸(ÿ—ľfÍë¤áðŸQóºÞÛÀýmkôai ®W­¤»kð¾å¬Ó<ÖŠøNÐü²g§kàf^.@üêw”w›ƒÅ¬X2|ÇIxkéÉ}0¥fÓzošOÙçƒvCMqžX·¬• ßUèÙ4Lo„wpy¨¦C{ÔpåÉð-\/l‰ñ4ìŒÄUx.57'Ÿð§tñÏ6>»ûp´Ž/¶äo‡4ñRSÏŸã Îé‰ êqÎ.ÉÁšXÌOÃï)~¥"öº¾Ü msû°5ßðí{‚–—=7]óòüAç§7GyµÇðs°–µg†O©¸o†rò1²þUpw¨¶Ãð‡ö»V÷4Âû:±o×õÈ–¼ìè±&9Ç›4ysúã‚ü^”ÏKb\3ÿÀœ4Œâ*rT×Sx¾mn_á4mÞ ß±Ã{LXîâ§Zèƒðމ·Z× Z^öu lÌËÛñ¦RÕc3´ä(ß6sY1eôƺ9û¼_ ï>NÂZUÞªâ˜æKöùžžXÇ{bß²î¡:­]Ã[â[ƒÃ‡„ÂîI0'W#gi ïîðI÷lãÝó0¹7ëâÙ’¯}Ý ß‡øšs<Á9}zAÎ/ÂÕ%yX³ïùi˜<ÅTÄW×wð×6·/5\±ß º]öìtúÏËÇœÿ[ç¦5Gy±9xÊÚ3ÃsTœcFÝä,ç=+WÌ›ŸœœŒì·âÏUðv‚v.Àsٳ˼¸ˆW£×ß(®¼¼ÍÉV^2zÿ†önð;8£‹Kj°»§÷åy]<7…÷Dî?ïùuG4qÍ9¾ iÍs¡·Õæ’s®áŸk¤añ¿Q‘׺^ÜÐSmóúj>Pç=ß’‹–þšæ­Öà†¾åÑêÇÛ¥ðê4²Ïã¤ô f·Â÷.5ÂÝüÕpßUáYÔ9g`r´^žA/Ãû9ÜÐ ºD‹ÏÃã¾µ×åå&kl©ÛyÏ©;z·‰kš|Ì9>àœgŒ r~Iük°u`4 žâ5*|{]_m„w¯æõai ~ p8C'ŽòVß"ƒË Ú]ö¼4/ÇÿN ìþ®¾<|ÎÁVV ¼7ƒ£ŽàýËÕ¦âþ8º<|cµ÷U0w‚v–=«Ì‹ÿøß[‡—ÈËÑœZeÕ!ƒ'ŽàÚ˜ßÅ“ úº%Æﱃ¶iùºoRç-÷Ÿ§;ø ‰OÎñMëóÜp..9çš¾80/ ƒ§ø‹ Ÿ^×{áýªy}ç„oí_ó e꾡‡Öoƒ«j¡gäb:x,:r”G{t¨']KáÖmõOáÌïÑ/WØ/…6å)…‡¦y”ý ¸öP­‡Ácà’ZðaÖØÇUpy¹ŒÄy$TסÚoÙ§‹j¸qßWÁêåÎ}ߌÄu½=¯—“ÿT‘Ÿ\ð–xm›¯o ž;ú¾‰[š|Ì9g<Ç»]óKγ†ÜŸ†ÃS¾Ž6Ô¤m~ß9ð·!ÿ‡rþ¾ú.n»Ùü}y˜æ¯NãÊ‘3ÌÀÜQ~m¶rð¸OûRỾMá›”~žæGöéBŠ&l…÷u·åag‡8>…[»8äæðì9y» fO㥑8+r3£þc:²A7t¶Á{mÖ¹Ã{nõÝq¾&jò6çøƒs¼Øë]r¾5œt€+ÓpyJ=*¼x]ïmˆ±m^ß9j¹Þ/óY³j·bßüX™ß™wæãže ÖÎÃêÕê6ŸYûfð`Å=3ê>¦ +ö¹ OðEež`ÞyŽÃiNçåfN³ê’Á% ú`7ð²ç…íÏ9‹ý·\ÛÁßMÜrŽÞ7Í;Ç£]€…Kb_Ã)¸ä" ¥aó Txâzx.ßmsûr4þ:|{ ïõÕ–³Ò£Cµ/ƒ¿jîÛWËžœæ¯Žòk³0”{Lò¿.Kœ%…GZ0ð(¼1²ï¦óLó#{ò»ýyñë…C\~¨–C¸Ú´^?ÔèᾺo‰)'GWÁçÑð~®Çtäzq\ïô£A›|˹ðnèí4\Rï ²®‡÷ëblëó¾uêr”‡š•ÿrxÎ×¼}{þ(X'ksð”…ƒ ÞZ€ÇC¼3¦ec|~½X¯WÓ£î™QÏ«BÿÑüû΋ù8¿^àò´Nž²êÁ»xµÞëýƒœuJÍ+ül=¼ÿ–«¶è;Ó@ýttK܇úÿP·Áà–Zø†$ßÓ|ØBxGÌͪ{&RúúQSr-–Œ§`cšWxÔ´ßÙs7¶änË^‡xéP·0‘ ïôõm6í«Oι¯‚§1?Î ÷y‰5}{ ÷iœrJ-*î™ `<0§ÖY=œ ß—á~ŒSÈÙŒ\ß z»LgWì7/®ãüs¯ÉÓÛ9¹ÈÂdF/îâµ\à`ü;¸L,Íð>W¨UgœR» ¯Xï å¦ §}gð›‡8èP~‡ðÓÞšßïËï4t”_™ /aùËGeäQ,)þ1Å7OÓäGeýλA“ÔéÊéP»z¤&¦}5È9ãUáYÌyf`cWŽqh“vo‰gM¿è´ž>%ï¾³Þ1«a[ô­3à%SüóQ~bVÞÊÁ÷Û{>`>óÙëåéñœzfõVFo_¡æ ÞaŒÃ*æÌÈýU°³À«”éÜŠ}çÅxœ·-ðAyz7'Y¸ÏèŸ]ýŸ“ç­ßO3¼/Õ7úæYá} >>¥v^±ÞùÂSûÎ8àS<òÅðmGÊñ†ºz±æú¾Oó'Gù„Yõ|ÔùOÊyRâKY?ÅW¤èÖ4|Ôe®Ûw7è=> ß9äz¨Ö]½QÃÉûê’sî«Âó’óÍÀKK}wôÅ.¾=+GëðµÍsnÉñnhò$çä´Ig/àçK¸qË9.ª÷šyz;­‡O©Y…O«‡wÀ0ÑÖ+}{x¿Os”˜ ïqiƒ¦ñl™ž®ˆyÞYœå8]°Ož¶ÎÁHVgpÀPŸq׌|WÌ™QÇ«ôÀ‚s–éÓŠæí8OZ iy<:'óöÌêçŒ>Ü}Eø+TíM»·Â¿;€·<Ûµ`²Þ…ꎘƧx¾zx Óm=Ô÷€—KáýCÜr¨VCØìêëškûj5Íg¥û³ÁY?EoÚNçvqËzðaž£qÀ¡º aeLó»úª&×ûê˜sÞŠ3ÍÀE &šá;°Öäû@¯§õô)¹«ðLõOýÖÖC}óácL¥Å³áýÞlÐ×1N-Ó¾ç›ç¿rœ‡-X;Oçà#«×38࢟Ç8¬âþuX õeX±÷¼øŽóƒz“§+sΞÕ×X٠ߺû;ñ¬.õŒÕ‚¿³zb]7ƒ ïcèÕ¾Lã…SjZá¿êòõX}ÜÖK}1x¢TøV n Z}ˆkåzo]÷Õ‚'’ëià(žUãð „/u¹>€‡=|’Â;)\~ƒ{•óû ôlWìºwÝ[žùñÆ¡Z ­ÑÕ{5çØW³œ|Tœ}ž®·ÖnlЖÚ7÷Ýð¾?¤áò”Wx¨º¼?Öm}ַ΀_Jé±£4wVŽ'r2Æ»eùX‘‡yçXàAŽó›kæÿ‹¼ÂC'dpƳôÃÄ~cüW1gF}ô`™—\±÷¼8ól=’÷œ>'?Y½ŸÑ‡»8i+|뀵¦ëú,N…úò0uy{¬m닾³ ø¡Tx﫞 š|ˆ{å|{]÷Õܳ/çÓ´ü(}žUûe>r)XM9Û2 g»xâPÊëPtõI gï«AÎÙ*Î0G8±AûZjÜ ßRÃ{:ýœÖ³§äªÂËÔånÃYÚú£o.JÉËQ:;+WÓâãÛ2Ϲâœóâ\àuŽó€kæ=ãÏ©KVïfôõ´:ŽñVÅý3r~=œ,ðeoÅÞób<΋hRÞsðœógõmFÏíâ­ðÝfš®è©´þ>jÄŸÔåeÃÚðÛw¶Ì§Ô §& ú{ˆ#åtˆÏ»ú¶æžýS:<«v7ž—‹e^w¤ÆËüØÈ™vÃ7\½}(—Ãà õA ÏîËõõáJà+\ÕÀã-uk†ï”¸÷¹ru wÓzô”Uh^=|ow†6Œ÷­1àgRÎs”¾ÎÊÑVäb¦Ê¼áŠ3΋q·9N ÖÎ{¦žSÓ¬þ|ÄåFŸ ^vÆxêáý™¹3r¿Àg”ù·qÌ‹÷¸û ô'ï9tN²z0£w®‡¿]’“çîØÂ·M÷è“´ž=jÞ©ËÓ†³µaµï̃ðnDŸÊÝPÿwõ^Íï÷y£e>t¤¦Gé𬦂„Éelä\»á›©þ<”Ó!ޏ–Çž“ºð^íûüC.|û Z¯[j× ßû+ý—Ög§B¾èZ=|ës¾ûæx¹£tqVŽÊüߊsÌ‹i—9.?ëäóZfõ[FOŽqã§\ÞUòe^lÅ>óâ8îy½@òžåæœ1«¿2zcWoää¯A˶èL Fšî;Ði}xJ=*´¯îüânÃbßyüâ¡Þ9”³¡>î~ò™=UsmŸïYÆ£#5;JgÕ(|žµ—ù¥‘³ì†o’zðPÞ†ú~♦ Ï5üw}ø@ÓsÎÔR—føþÞé­´:åœúT—› 1·á·oÞ€G;Jßfåc#h6*óx+Î2/¦^ã8Ý,X/Ï/éﬞÊè»1~{®~‡ç/ùY åe^kÅžób9®®|žç‡—ônV?eôÂnxþ§O[4¡M÷À{ZÏ ¾ƒÕCümØì‹kÀ æ‚GÖ·‡r7Ô«]½4ñ¬Qs}ŸYæ³Fjw”ÎͪU*ô¶õ—ù˜‘óì†ïò6ÔßÏ#]˜­á¸}úœ <4.4÷¬ðŽEï¤õÇ©ð͇ÕCŽÄ܆Ͼy¾é(š•2ïµâ óâXxiòWm¥ ÖÉ{6[Ò¿Yý’ÑG Ú°@‹ËüÍŠõçí]TÇnÎ{ÞYÒYý‘íÝðglá˦ë°œÖ?§ä»¢ïëθ!Î6,öÅ>àÃR°• W~†ú°«/&žj®ïóËüÎH}ŽÒ¤YõHÁÒ2ÿ1ûnøV&7C}:ñLÑ…Ëšý÷éeNì-yo†ï?á}„þHëƒS¸¸BOêr°!Î6üõÍð9GiÉ·á£S¸½Ì/­ˆ^ ô»¨nkåyà%}™Õý²@/Ë<ÉŠõçí[T§^Ìó5Kš% ÿN‰e µÔ³éú¬¦õÇ)¼[ÁûugÛgfúxkÀ?å‚—”“¡ëÂþ„ϯ¹¶OÓ—y‘z¤¬·LûGb=”‡¡¾›ðû]«á™}—gK~›áûIxÞ‡õ4LWhA]7ÄÕ†§¾ûüE™/Yß¼}hlQ= ææ=ÿ,é«,LgB¿[s®•yƒkÎÛ«¨š˜÷±¤O²4#‡99ØÂY-õjº~wiø®àñ:ülˆ« }Ü3 ‡Î<Ô]¸ðm5¿ßW—e¾`$×)ë,Óç‘8y¨_&|\nj¸bŸåÄØ’¿&-Ú Ïà°›†Ñ ž®«ß†xÚpÒwÿ€þ—iኸæí³@ ‹ò]07ïybIodiD&ô©5hM—¬XsÞ^E9/Ы¼g°%ØÏâõ Œåœ}‹¾·Ô¦éú<¥á¶‚‹ë°±!®¶:÷ñÆ€8tæ!¼warrÔYü~Ÿ¦Ì_¦¹#y^¦›#q:óPLòš>ß§91¶ä¯I;¶Â32\¦qhWÖÕnCñ\Ò…‹Ú¹äõ–ʉ±%wÍðn6< Âc·Uh_]í6ÄÓ†‰¾û|K™†®ˆkÞ ´¢(×sóžç–à=‹k3°™²f*ø:ü]¦g+_HþJ³TQÞ ¸?ïÙd ¦³x3¾)Òþ–û›®ÀRŸUèh&6ÄÕ†‡¾ð¹à+œyÏ]8œÌ9kÚ²L“Gr¼L£Fâ¶.LÔôlçÄØ’»&>ÞúÛä‹’J‡ï4©®vbiÃDßý^ LËVÄT²ÇŸ[”낹yÏKðžåy3°™²f*ø ¾³¼’üU©’ýŠò^Àçy~| ¦³ühƦ¹ðÍî¶ÌiºÞƒ§4.«Ð»:Llˆ­­Î}Í9 Û‡Î<„ç.N<¯Õü¾C/–éæHŽ—éÎHœ‡Î<„÷‰g’.LÔôlçÄØ’»&>Þ¢¹=XLã² Mª«Ý†XÚ0Ñwÿ€î— *¦’=xÔ¢\ÌÍ{^X‚÷,¿šÍ”5SÁßðŒeÚSµnÉ~Ey/àóñÐ…‰šžíàâœ[r×ÄÇ[4·‹i\V¡IuµÛO&úîÐý2-«Š«dž²(×só|û¼gùË \¦¬™ Þ†÷+ÓžªuKö+Ê{—çùÜ%xÎò…™ðÞšn·Üßt­Ki\V¡suxØW[ûú{@¯sòtèÌÃðÎ'žaj®uhÅ2ÍËñ2Ý‹óЙ‡ð>áí»0QÓ³\œcKîšá=2ÍíÁb—UhR]í6ÄÓ†‰¾ûá;¦{Ëô¬*¶’}øÉ¢|ÌÏóåK0Ÿå/3ð™ Þ†÷+ÓžªuKö+Ê{—çyÜ%˜Îò…™ð˜v·Üßt­Ki«Ð¥ºÚmˆ§ }s´¿LϪâ*ÙgŸ,ÊwÁÜΉqÓï›8y‹îöà1Ï*t©®vbjÃEßýÚŸ–Ã2M«Š¯d¯ž²(çóóüøÌgyÌ |.ð~eÚSµfÉ^Ey/àò<»ÏY€Í„÷†t{ÓºM×zp”Æe:W‡‡ 1µá¡¯Çô:'OÃð} ž»08ñ Rs­C+–iæXŽ—éÎ8äO~†á[ÌOx÷.\ÔômçÄ—–—M÷4ñòííÁd§UhS=|/W.úæ 虦UÅW²×OY”ó‚¹y~| æ³H'Ÿ ¼_˜ªÖ+Ù«(ç\žçq—à9Kl3áÝíÞCÓµ¥qY…ÎÕáaC ÙCgÁsþ&žAj~ß¡Ë4sj¸îŒCþ¿9÷î'ü{6jú¶ƒsbÜto'oÑèL¦ñY….ÕÕnCLm¸è»ÞEÒ´ªØJöZà)‹r^07Ï/Á{–ÇÌÀèïW¦;Uë•ìS”ï.Ïó¸K0å 3ð”sö-ú½)Ʀë=8Jã³ ­«ÃĆ˜Ú0Ñ×çš=tæÐìaø† Ï]ø›x©ù}‡V,ÓÌq¨Yà¶àc€w,Îaøžïþ½ 5=ÛÁÅ91nº·‰·éx&Ó¸¬B“êj×S&úîÐþ2-«Š­d¯ž²(çsóüø¼gyÌLøîË÷•éNÕz%û廀ËóüíLgy Eù.àòx¾2í©Z¯dŸ¢|pyž·]‚ç,?˜§mº½)Φk=ÒΩ «ÃCK†îŒÅ9 ßÎà}¿wa£¦g;¸8'ÆM÷6ññ6ïÁä.«Ð¤ºÚµÄÔ†‰¾ût¿L˪b+ÙkŸ,ÊyÁÜÞ¦ã=˜œÂešTW»–˜Ú0Ñwÿ€î—iYUl%{-ð”E9/˜›çÇ—à=Ëcfàsç+ÓªõJö)Êw—çyÛ%xÎòƒxÚ¦Û›âlºÖƒ¡)\V¡suxh‰§ }=>ï3‚Ï’«aøöÓ]œx©¹Þ¡Ëts,ÏéàcèÎXœÃðÝ Þ'ü{6jz¶ƒ‹sbÜ´^oÓñLNá² Mª«]K\m˜è»@÷Ë´¬*¾’}xÊ¢œÌÍóãKðžå13ð™ÛßW¦?Uk–ìU”ó>Ïó·K0å 30µM»7ÅÚt­GSø¬Bëê0ÑS&úz|@³sr5 ßþ`º ƒÏ 5×:ôb™nŽå9| Ý‹s¾›Áû„ïÂFMÏvpqNŒ›blâãm:ÞƒÉ)\V¡Iuµk‰© }÷è~™–UÅV²ÏOY”y~| Þ³Ób[àûÊô§jÍ’½Šr^Àçyþv ¦³áß»pQÓ³\œã¦›øx›Ž÷àq —UhR]íZâiÃDßýº_¦eUq•ì±ÀOå»`nž_‚÷,™Ï´¸ø¾2í©Z³d¯¢œðyž¿]‚é,O˜©´ØrοMÇ7©éžÓ_‚Æó~eúSµnÉ~Ey/àô<»×Y¾0WÛô{Óù›®õ`i §Uè]&ZâjÃD_ŸèvN®†áû«Ð»:L´ÄÕ†‡¾>Ðíœ< yÏ]8œx©¹Ö¡Ë´s,ÇËtg,Ρ3à}¿wa¢¦g;¸8'ÆM16ññ6ïÁã.«Ð¤ºÚµÄÓ†‰¾ût¿L˪â*]—üUÏ©¢\ÌÍóãKðžå13p™WÚž‹¼_™U­[²_QÞ ø<Ïã.Ás–/ÌÀÕ6ýÞ”§¦k=XšÂgzW‡‡–¸ÚjÜ×㺓§¡3๠‡Ï 5×:ôb™vŽåx™îŒÅ9tæ¼Oø÷.LÔôlçĸ)Æ&>Þ¦ã=XœÂešTW»–xÚ0Ñwÿ€î—iYU\%{,ò“E¹.˜›çÇ—à=Ë_f`3-®´=Ã;wúSµnÉ~Ey/àó<»ÓY¾0WÛ4|Sžš®õ`i —Uh]Zâj«q_hvNž†Î<‚ç.N<ƒÔ\ëЋeº9–ãeº3çЙGð>áß»0QÓ³\œã¦›øx›Ž÷`q —UhR]íZâiÃDßýº_¦eUq•ì±ÈOåº`nž_‚÷,™Í´¸Òö\äýÊô§jÝ’ýŠò^Àçyw ¦³|a®ráì4|S®š®÷ài  *ô®-±µÕ¹¯Ït{èÌ#xîÂáÄ3HÍï;ôb™nŽåx™îŒÅ9tæ¼Oø÷.LÔôlçĸ)Æ&>Þ¦ã=XœÂešTW»–XÚ0Ñwÿ€î—iYUL%{,ò“E¹.˜›çÇ—à=Ë_f`3-®´=y¿2í©Z·d¿¢¼ðyžÇ]‚é,_˜«œ³oÓðM¹jºÞƒ§)|V¡wu˜h‰­­Î}}> ÛCgÁs'žAj~ß¡Ëts,ÇËtg,Ρ3à}¿wa¢¦g;¸8'ÆM16ññ6ïÁâ.«Ð¤ºÚµÄÒ†‰¾ût¿L˪b*Ùc‘§,ÊuÁÜ ×9y:óž»p8ñ Rs­C+–éæXŽ—éÎXœCgÁû„wïÂDMÏvpqNŒ›blâãm:ÞƒÅ)\V¡Iuµk‰§ }÷è~™–UÅU²Ç"?Y”낹y~| Þ³üe.ÓâJÛs‘÷+ÓžªuKö+Ê{—çyÜ%xÎò…¸Ú¦Û›òÔt­KS¸¬BçêðÐWúz|@¯sò4tæáÛ»0QÓ³\œ ñYcÓÙ›8y›–÷àq ŸUèR]íZâiÃEßœí/Ó³ª¸JöYä%‹ò]07Ï/Á|–·ÌÀg:h<ïW¦=Uk–ìW”÷.Ïó¸K0å 3p•sömú½)WM×{°4…Ë*´®-qµÕ¹¯Ï4{èÌ#xîÂáÄ3HÍï;´b™fŽåx™îŒÅ8tæ¼Oøö.LÔôl§ƒw㦳7qò6-ïÁã>«Ð¥ºÚµÄÓ†‹¾9Ú_¦gUq•ì³ÈOå»`nž_‚÷,™ÏtÐxÞ¯LwªÖ,Ù¯(ï\žçq—`:Ëf`*çìÛô{S®š®÷`i ŸUh]&ZâjÃD_ŸhöЙGðÜ…Á‰gšßwhÅ2ÍËñ2Ý‹1í¾¡s`~»wᢦo;ø8'ÆMçoâämZÞƒÇ)|V¡Kuµk‰§ }÷hÚ:ešV[É^‹›®õàh —Uè\ZâiÃC_èuNž†Î<‚ç. N<ƒÔ\ëЊeš9–ãtèqÚ3ãЙG0?áÝ»pQÓ³\œ_ÚµM¹iâämzÞƒÉ)|V¡Muµk‰« }sô¿LÓªâ+Ùk‘§,ÊyÁÜcüøÌgyÌ |.ò~eÚSµ^É^E9/àòc<îΉqSŽš8y›ž÷`r ŸUèR]íZâjÃEßýú_¦iUñ•ìµÈOå¼`î1~| Þ³üeFy¿2í©Z¯dŸ¢œpù1w ¦³|ažráìô{Sþ›®÷àh —Uh]&Zbj«s_höЙGðÜ…¿‰gšßwhÅ2ÍÞ =NwÆbL;óПÜOø÷.lÔômçĸ)GMœ¼MÏ{09…Ï*t©®v-1µá¢ïþý/Ó³ªØJöZä'‹r^0÷?¾ïYþ2£‹¼_™îT­W²OQ¾ ¸ü»ÓY¾0O9gߦߛjÒt½GS¸¬Bëê0ÑS[ûú|@³‡Î<‚ç.üM<ƒÔü¾C+–iæXŽÓ®§ƒžÓž±8‡þyóþ½ 5=ÛÁÇ91nÊQ'oÓòLNá³ ]ª«]KLm˜è»@ÿËô¬*¶’½yÊ¢œÌ=Æ/Á{–ÇÌÀè"ïW¦;Uë•ìS”ï.?Æã.Át–/ÌÀÓ6ÝÞT“¦k=šÂe:W‡‡–xÚðÐ×ãz“§¡3๠Ï 5×:´b™fŽå8z<è9í‹sèŸG0?áß»°QÓ³\œã¦5ññ6-ïÁä.«Ð¥ºÚµÄÕ†‰¾ûô¿LϪâ+Ùk‘§,ÊyÁÜcüø¼gyÌ |.ò~eºSµ^É>Eù.àòc<î ×9y:óž»ð7ñ Rs­C+–iæXŽÓ¡ÇƒžÓ±8‡þyóþ½ 5=ÛÁÅ91nÊQoÓòLNá² Mª«]K\m˜è»@ÿËô¬*¾’½yÊ¢œÌ=Æ/Á{–ÇÌÀç"ßW¦=Uë•ìS”o.u ¡/Ás–'ÌÀÓ6ÝÞT­–êÁÐ.«Ð¹:<´ÄÓVã¾þÐëœ< yÏ]ø›x©¹Ö¡Ë4s,ÇéÐãAÏéÎXœCÿ<‚÷ ÿÞ…šžíàâœ7åhoÓòLNá² Mª«]K\m˜è»@ûË´¬*¾’½ùÉ¢œÏš{Œ_‚÷,™ÑE¾¯L{ªÖ+Ù§(ß³¸ü»ÓYž0O¹pvú½©.ë®÷àh —Uh]&Zbj«s_höЙGðÜ…¿‰gšßwhÅ2ÍËq:ôxÐsº3çÐ?à}¿wa£¦g;¸8'ÆM9ZÇÇÛt¼“S¸¬B“êj×S&úîÐþ2-«Š­d¯E~²(ç³æSÌ%xÏò—]äûÊ´§j½’}Šò=‹Ëñ·K0å 3ð”sömú½©.ë®÷àh —Uh]&Zbj«s_ŸhöЙGðÜ…¿‰gšßwhÅ2ÍËq:ôxÐsº3çÐ?à}¿wa£¦g;¸8'ÆM9ZÇÇÛt¼“S¸¬B“êj×S&úîÐþ2-«Š­d¯E~²(ç³æãÇ—à=Ë_f`t‘ï+ÓªõJö)Ê÷,.?Æßš–Êò„xÊ9ûvðNê²îzަðY…ÖÕa¢%¦6Lôõù€fyÏ]ø›x©ù}‡V,Ó̱§C=§;cqýóÞ'ü{6jz¶ƒ‹sbÜ”£u|¼MÇ{09…Ë*4©®v-1µa¢ïþÝ/Ó²ªØJöZä)‹r>kî1~ü$¼gyÌ |.ò|eºSµ^É>EùžÅåÇxÛ“ðœå3ð´|“š¬»Öƒ¡)\V¡suxh‰§ }=> ×9y:óž»ð7ñ Rs­C+–iæXŽÓ¡ÇƒžÓ±8‡þyïþ½ 5=ÛÁÅ91nÊÑ:>ÞF.=˜œÂešTW»–¸Ú0Ñwÿ€î—iYU|%{-ò”E9Ÿ5÷?~Þ³y¾2í©Z¯dŸ¢|Ïâòc¼íIxÎòƒxÚ¦Û›j²îZ†¦pY…ÎÕá¡%ž6<ôõ÷€^çäièÌ#xîÂßÄ3H͵­X¦™c9N‡zNwÆâúç¼Oø÷.lÔôlçĸ)Gëøx›Ž÷`r —UhR]íZâjÃDßýº_¦eUñ•ìµÈSå|ÖÜcüøIxÏò˜ø\äùÊ´§j½’}Šò=‹Ëñ¶'á9Ëfài›voªÉºk=šÂc:W‡‡–xÚjÜ×ßz“§¡3๠Ï 5×:´b™fŽå8z<è9Ý‹sèŸGð>áß»°QÓ³\œã¦­ããm:ÞƒÉ)\V¡Iuµk‰« }÷è~™–UÅW²×"?Y”óYsñã'á=Ë_f`t‘ç+ÓžªõJö)Ê÷,.?ÆÛž„é,?˜§\8;ýÞT—u×{p4…Ë*´®-1µÕ¹¯Ç4{èÌ#xîÂßÄóGÍï;´b™fŽå8z<è9Ý‹sèŸGð>áß»°QÓ³\œã¦­ããm:ÞƒÉ)\V¡Iuµk‰© }÷è~™–UÅV²×"?Y”óYsñã'á=Ë_f`t‘ç+ÓªõJö)Ê÷,.?ÆÛž„é,?˜§œ³oÓïMuYw½GS¸¬Bëê0ÑS[ûú|Þi8óПLwapâ¤æZ‡^,Óͱ<§ƒžÓ±8‡þyïþ½ 5=ÛÁÅ91nÊÑ:>Þ¦ã=˜œÂešTW»–˜Ú0Ñwÿ€î—iYUl%û,ò”E9Ÿ5÷?~Þ³EyžÅÙÇxØ“°›åû2ð³M£7ÕbݵÌLá«kéY]ý[âi«i_èrN~†Î:‚Û.¼Mû$\gùÆ ,.òrezRµ^É>EyžÅÑǘϓ°›åó2ð“sæmº¼©ë®÷àf O]KÃê0ÐS[]ûúx@‹‡Î:‚Û.¼MEyžÅÍÇxÕ“°›åï2ð³M‡7ÕbݵÌLá¨kéV]ý[âi«_èoN~†Î:‚Û.¼M ×Y^1‡‹¼[™†T­W²OQžgqó1õ$Üfùº ülÓßMµXw­3S8êZzUWÿ–xÚêß×Ú›“Ÿ¡³Žà¶ oÏ5×:¸™öåv™~ŒÅ7tÖ\Oøï. Ôôd·æÄ¶)gëøu›÷`o G]K[êjÕOúîÐí2MªŠ«dEž°(dzæã§OÂu–GÌÀá"ÏV¦!Uë•ìS”çYÜ|Œ7= ·Y~.?Û´wS-Ö]ëÁÌŽº–^ÕÕ¿%ž¶šöõï€Þæägè¬#¸íÂÛijC͵î_¦}c¹]¦cñ u×¾» 5=ÙÁ­9±mÊÙ:~ݦÃ=Ø›ÂQ×Ò–ºZµÄÓ†¾ût»L“ªâ*Ùc‘,Êñ¬¹Çøè“på 3°¸¾ ЪõJö)Êó,n>Æ“ž„Ý,—Ÿ\83ýÝTu×{p3…£®¥Yuh‰©­®}=< ¹CgÁmÞ&žj~ßÁýË´o,·Ëôc,¾¡³ŽàzÂowa ¦';¸5'¶M9[ǯÛt¸{S8êZÚRW«–XÚ0Ðwÿ€n—iRUL%{,òE9ž5÷ÿ|®³ü`y´2 ©Z¯dŸ¢<Ïâæc¼èIØÍòoøÉ9ó6ýÝTu×{p3…£®¥Yuh‰©­®}}< ¹CgÁmÞ&žj~ßÁýË´o,·Ëôc,¾¡³ŽàzÂgwa ¦';¸5'¶M9[ǯÛt¸{S8êZÚRW«–XÚ0Ðwÿ€n—iRUL%{,ò~E9ž5÷ß|®³¼`y´2ý¨Z¯dŸ¢<Ïâæc<èIØÍòoøÉ9ó6ýÝTu×{p3…§®¥Yuh‰© }}< ¹CgÁmÞ&žj~ßÁýË´o,·Ëôc,¾¡³ŽàzÂ[wa ¦';¸5'¶M9[ǯÛt¸{S8êZÚRW«–XÚ0Ðwÿ€n—iRUL%{,ò~E9ž5÷¿|®Éf*¸ˆGJ¥S™T.¼üè>妧!¥ÔÜÿé—GÏßtÇMW=ñâMZ&ü§ÓÿË”+z—žvËþ-7]|Ê¥ýîSúO»µwái©ôôÂWÝ–yŒER©i?õ¬{Þ÷±ïïyßÌã“ñ]/¾ìw’qò‚8μäya|çç,ùùßþÁÛÃø7¯¹5ßñÂw$¿ûýÝO†ñþŸxÙWÆ›žÇ™ïLÆçÿéÛâx>™wßÿ ÇÇ¿)Žá«a|ðXÇ}ø“Šc÷yqœ÷¿ÿåñþ^ñ;q¼5ÞÿÀ|¼ÿ}¯Œ÷¿ï)ñþ?ýÁäú½ßðmsÉxü ÉøÊO…ÿŒ0uÏo|éç;aüÕÃ×?;Œ/þ·#¯LÆÏ¾2ŽÿããqüÛ—Äñ›ãø®¯ã}“Œ/˜ÕÑa<ú›q ÿ÷½0¦šŒ?ñÉF?:Ç¿E¼+Žï½:¬ZJâø±GŽãxòßâøõOãÇܹd|Þ—ßÇO¯Æñ_Ç|[ßþâ8¾ñxÿòGâøGŸãoÄñ?ÇÞÇÉ_ÅñÙ+q¼ó÷ãxÛÃâØù¯q<;Çæsâø½Ÿ‰ãé[ãxåqü¦­8žxm}OÓ¿›Œ?úÙoŠã?½0Ž›‹ã;ŸÇ7ýs_uKÿäÝqüÝ8þÊ=ÉøÌÏÿy’ÇgþݯÆñ­?Ç—?-Ž¿þ¸8>ÿº8>ãÊ8>ñŠ8†¿U9Œá+]þ×q<þ‡Éø_úù8þŽã}·Åñ;q|I%Ž?ù-q|V>ŽOúTÃÿ6ŒÕWÇñÛ~;Žó?™ŒÏø÷gÄñ#Ý8¾£ÇW>2Ž¿ñôŒŸŽ8zƳ?ÇÛîãÙxþg¬Æó?£ÏÿŒ‡Äó?c*žÿîÅóßý®xþ»_Ï÷ïÆóßý³ñüwÿp<ÿݽxþ»ÏÅóßý˜xþ»¿#žÿîÅxþ»³ñü—>Ïé½ñü—^Ïé¥ñü—~>žÿÒa<ÿ¥§Æó_jÇó_ªÅó_ú®xþK_Ïéòxþ§*žÿéÄó?ý ñüOÿÃxþ§ÿB<ÿÓÇñüO¿#žÿéûñüO_‹çú5ñüOÿÆxþ§ç¿ë3ñüw=Ï×_ÇóßõÇñüwýr<ÿ]Ï‹ç¿ë®xþ»nŽç¿k#žÿ®ïŽç¿ë›ãùç|.žð¡xþÁ[âùÏ?øµxþÁ‰çÜÏ?¸%žp&ž°Ï?xX<ÿ`.žÿÎ/ÆóßùñüwÞÏç_Äóßù›ñüw¾ žÿÎgÆóßy!žÿÎíxþ;Wâùï<Ïçñüw|9žÿŽŒç¿ãíñüwüe<ÿ¿ÏÇ ãùïøÁxþ;nû‹8žýµ8®>/ŽáßBãCÚq o?OûX9Žïšã«¾Çßý»8þì›âøÃÇÞ‹âþV¨0>æ)qüŽÇÆ1<‡1û­Éxñ“ÇâøžOÇñµï‹ãK_ÇŸÿ8þTŸúq ÿW¯0†ÿ›g¿ëT¿îkãxy&Ÿú/ÿÇÞÇ7Äó?õãùŸú ñüOÇó?õŽxþ§îÇó?u-žÿ©×Äó?õâùŸz4žÿöÏÄóßþ`<ÿíÏûÇóßþËñü·?/žÿö»âùo¿9žÿöxþÛÏû7Çóß>Ïßÿç½8¾þd_ô¹8^|Cà ƯR2ö>ýÝq|ãåqüÅwÅñΗÄ1ü aü¦z2|ökâØŠû|kÜç)Ÿû<å­qŸ§üzÜç)ψû7î빸ÿ­ß÷¿5÷Ò{ãþOúý¸ÿ“ãþOjÇýŸô]qÿ']÷¿ðþ¸ÿ…?Œû_Çý/ìÇý/\÷¿û?ñƒqÿ'þqÜÿ‰Ï‹û?ñæ¸ÿ¿;îÿÄBÜÿ–Åýoù³¸ÿ-ÿ%îË-qÿ[*qÿ[æâþçÿ!îþ/âþç_÷?ÿ¤¸ÿùjÜÿüqÿî?Æý»÷ï¾0îß½-îßýÞ¸÷DÜÿæŠûßüª¸ÿÍ?÷¿ù îóuqÿ›âþ7}"îÓkãþ7ý|Üÿ¦Ûãþ7]÷¿ékãþ‰ûwÞ÷ï¼8îßyZܿӈûw¾!î¿ÿ‘3Éø„}gömq|ÌíÉøøOÎÅñç_ÇZ¼¿ý/ŸŒã/ç?î—ãüÇmÄù7~.οñ×âü7ãüs_ŒóÏýfœn;Îßûrœ¿÷[qþÞ qþ^:Îßý8w/ÎßÍÄùgÿ[œöqqþÙËâüþ[ä•nŒüqÑÈýƒÈ}|ä½Çæ"¿íüQä±Nä«cqþöŸÄùÛÝ8{6Îßzyœ¿õÄ8ëxœæqþ™[ãü3óqþæ³cýZïŠuj}G¬ÇÆa¬ûúñúú5ñzóyñúÚ‡âõµåx½ñ‚x½þñzý{ãõÚÏÄë×"^¿þúxýû_¯?æÓñúcÖãõë~5^ÿ¾/Äëß·¯¯þñúj*^ÿÞÝxýÑõ¨‹y¿öåñçÊ­ñçå‡ÄŸ¿ûuñçGÝ>ý-ñçS÷ÆŸùìøów]þÎâÏßñN2–ïˆã·ÝÇ¥«âø­?Çoúp¿~òÊd\xL¯ørg’LjÔ=SÉcDꕟLd=õ½÷þT?ÿÌd\½l-¹¾:÷ÑïMÆWÇñ¡wÅñŸðKÉø-é8>ì×âx²ÇG|$Žßþcqüί9“ŒWßú¶dü®??Ÿ:¾æ ñçÓ¯«ßq½ú=ÿ«Ë±OV+±ŸVWbß­Vc®>:öíê÷Æþ^]<°ºùbõû"¯¬^ùgõºÈS«‰|¶úý‘÷V¿?òãêõ‘GWk‘oWk‘—Wë‘¿W‘çWQV×¢n¬6£¾¬6£­®G½Z݈º¶ºñ¦x½õpu3êæêfÔ×Õ3Q‡WÏD½^=u}u+êÿêVô «[ÑO¬nGß±ºýÉêvô1«;Ñï¬îD_´ºýÓêc£ÏZ}ì³ãüǾ#οáÛâüžçßp_œöáqþÙgÄùgßçï~Kœ¿ûô8÷MqþÞ7Æù{wÆù{çŸûú8ÿÜÅ8ÿÜëâüçߨóo|uœÿ¸¯‰ó÷”8ÿq÷ÄùíRœß¾5Îoÿ÷8ÿñÅ8ÿñOŒóÿçqþfãü'œóŸð§qþþ±8ÿ¦8ÿeq~'ó…8~Ç#âxîÆ8þð$Ž¿ûò8¾ó#ÉxSø/Âþma<{wŸý[qü­÷ÄñGãøïËÉxó·=9Ž;?Çg¾1Ž¿÷¿ù¾¸ÿÍ_Šûw¿õ ql}.Ž—"^º‘§V»oNtlõW^¾øKaüÕ•O&ãoüÀs’ñ%ï:õì0þÞ]ÿšüü²‡Ýy&¿Ô|e_ù—OþÆd¼ç¶'%ã«æOÆñ/>œŒ¯¾å%ÉøšB¼þºËãϯûýøóëoŒ÷¿a*Þÿ†ßŽ×ßøëñç¿nÅŸÿú³Éý¯~ùk“Ÿ_óÛûÉϯ¼#ùùµ/úåäþ×Ýýºäç×ýî(¹þú'ÿIòóë¿ø²$þ7Üø’äç7|¼‘üüW›§“yµÿûÉïÿêŸx0Œo|ôRòû7ži&ë¼qëEÉÏý_Çïýû$î7}C.ùùM§¿6þüÒË’ùo.|!ùý›é—“}Þüå&?¿åŠÇ%÷½åÏKî{˧îN~~ëô§“ëo}Î;’|¾õC·ÅßúÇ“¸Þú™“ŸßvëïÍ'ão®¿4?ø€«÷>âaÏOÆs¿˜\¿÷W.ÞžŒ÷þL¼þÞ·À®Þ÷Ð+’y÷5ßÿGÉøØÛïHÆŸLhõ¾W¿3Þ÷¦W„FX½¿òÖ¤’w™OÅ‹S_y'xÙ™ÍÆ^÷ޝüx$ùñޝ~%yÇÝýðïœý/¯$§kaý¯~yä‰ý‹7ÝñU7_þ°sßþ°ƒoØù¯º;wý­½ënéÝqËůžÐºå®ýsý‹·ýϸ§þ—ëwÜzpËcnºã–¯Zð²ÛoêÞvÓ…¯öÿt{ˆø‹º”¼A}Úí·to½é)ÿïPü{|ošÞ¿çCïüÄ 3îùÐ-þðd¬ÿÝÙd¬|à0Ž/‹?Ããã}sá?ùLÝó·Ÿ}Û‰8þú?ÄñœŒ/ýÅøûÝ7IÆïþŸNÆ¥w’ñá{]¯Ž¿¿¬“ìóÁGüIrýƒ'^”üþÁw‡¿‚ÈøÖ&÷?øúŠ¿í#ÿ5ÿà¿Çñ·~;^ÿ¯¹dÿòû“s<øÜ×üF.Y÷ÁgìÇûÏoÄû6*ñ÷Ë“x|ä{âúßy>Îû¶§Çu>ãø–?JÎýàâ¯þC/ÅuŽ?:þ¾ðÉ8¿ðuÉü*ÎÏýmœŸûñ8?·ç_þ÷qþå?ç_~mœÙ‡ãüË~*οìÑqþ‘ÆùG~&Î?ò}q~öãq~ö¿ÆùÙïó3ÿçg^çgêqþô§ãüé_Œó§›qþÔ¿ÆùS¿çOµâüôçãüô¯Çùé­8?õ¥8?õ’8?µ“Ì÷¿ÿûóâøÛå8ž}S§’ùïþòï‹ã¹ß‰cÄÓ»ÿí¥qþ¿µãü»<ÎÿÒÆù_Úó¿”ó¿øÇqþoŽó¿8çáÏâü/Üça.Îÿü_ÄùŸRœÿù+âüÏýeœÿ¹'ÇùŸ;çöUqþgâüÏ.ÄùÿúÚ8ÿ_oóÿõkãüϼ>ÎÿÌÓâüÏ|Cœÿé7ÆùŸÄùŸþæ8ÿSoŽó?u)ÎÿÔ·Æùÿò¶8ÿ_~ Îÿ—¥8ÿŸïóÿùãü~DœÿÉ¿‰ó?ùœ8ÿ“ßçâÝqþ'žçâ;ãü¿/Îÿø0Îÿø#ãü½?ÎÿØ$ÎÿØé8ÿŸ>çÿÓÅùÿô=qþGÿ.Îÿhäw´çäÄùùÉ8ÿ#‘—Þý‰óÿñ§ãü\ó?ü±8ÿÃ?›Ì×?½1¹ï]–OÖyׯrÿ»^t4þüãß•¬÷®'<™ÿ®'ýR¼þÄ­8ï¿i.í&¿çƒåäþwÞ—¼ ¸ço|èw&ãArß;ÿìÓoKÆ—íÆë/}ù™dü¯‹×_òŸLÆó?óÒd|Üããüëÿk¼ÿêw$×ÿæ=H~ÿ7oùådÞßüÙ·'ã×~6‰ë÷?#Y÷÷–“uÞÑÿ—ä¾·ÿAÄßÛŸŽ?ßqW²ÞÛ÷ÿ(¹ÿíS¯Jö¹ÿ—¾+ÉÏý?ÿÂäÜ÷ÿô“ûîÿ©ßMî»ÿOHÖ½ÿùsÉ:÷?v.Y÷þåÿ–ìÿébRû1Nòrßgߘœû¾íÅŸ?4¬{߃/‹?¿ÿ‰É¼ûÞ÷$÷½çë’üß÷î¿JÖ¹ï·-Þÿâ·%ç¼ïɃé=÷ýà}qÌþh’{|qrß½¿r6ùý½ç/KÎqïÖ âxæ#å8¾ðMq\Mö½wócÇâø³q~ëçŸÇZ¼ÿ›¾%®÷õoOÎ}ï×&ç¾wñQI<÷>äÃÉùî-ý\Ç[ýcxqÏ[~ó)¿”ŒÏ¿±Æ×¿÷¾½d|gò‚åž×ß—¼0¹çõÕO$ãë>ö·¿Çïy0_÷Ùäþ×½â/âõŸyNü¹þÚã#Ï&ë¾æ¿ýqòûW½ý©Éïïùè+“ûïÉÜ”üü«ÏOâúÓg¾3‰ÿþôÍÉøÒG|í÷†ñ7>ýÉ:¿°úS¯ ã ÿîùÉøß'WÇËâwÌá¯c<ÿþ8>4yîºçðÞÓq¼¸Ç•OÆùÔËãøüCÃÿ™<Œ'ªÉøÜ7=9މ2~÷«’ñ‡}1Ž»>ŽÇ/&ã½þâŸçîù¡Äv¥îyÎG¾9Ž¿¿‡>çØ5ÉøìWÝÇ«þ,ð¯â÷–<¿ŸüÇw¹ÿø.ô•÷Ö«?ýƒ¿ò³ú3WœKÆß‰ßaWÿàeõ^ý£ß{KÀÅê+~îáÉõ×½ÿŸCýVßü–×}c2¾µ÷`2¾í!ñ÷o{eÈóêÛ¾+üõTž3žx)y®xû·üàÛâøöP§ÿÏ—ýÇÍÿ× —õå¯zHÈýo×ÿï=ýßæÿxÈÿσâ–ÿÝú§žqÏû>ÖIZï}3õðˆ…’?1—Œ“»ã¸ñŽ8Î KýÎÏ?­•ŒßþÚP’{þæ5¤ÅßñÂ?O~ÿöûXþûâoˆcø/C…}äò8¾ð%q\ ï²ï¹ïƒQ:îûàêW¨*JÇ}ød¤¤ü|¤ªÔ"u½ÿS_¡²_ˆ÷?ðË‘Â؈÷¿ïsñþ÷ýÚW¨îL¼ÿOÏ<•PÌ¿Õãø’Çñ±£dü†üUÉxüO†ñ•ŸÊ&­ý_ü¹ðŽâž_ý‘ß Ð»çÅ_<–@ûÅŸy]ÿþÓq|ð÷âøÞ'Åño¾9Žo{_2¾ðÍÏJÆ̼<Ž—ßÇé«’ñ'þíÃqüø‰8~ømqüÐ$ŽïLßõå0®þÊŸ?ä•aüÕêHÿÆ3Ÿ•üü’wßú`ïéŸJ~~ÙÃÿñ^$ÿJÇê+ÿò¥·'ã=¿õÒd|ÕNüùU_úÎd|õ¯}2_³¯¿®yG?<‚¿òõ/út2¾¡ñÝqüçÏ%ã?ñÉø×?ûÉø¦ÕkÃøê?Ï$ë½æ·!Yïµ?:ŸüüÚ}0Ùïuw9¾"ùÝ¿NÖý“?‘üüú/ÆWo¸ñÁ8~|_‰lö“WµÿñçîM~~ã£;q<óÃÉ«‰7n½#ùù¯¿c+Ž«_—¼2yÓ7|_|%rú±ñç—Ö’Ÿß<ûÈ8þRÜïÍÿþ­ñ•È?™Ü÷–¼)þü©?H~~kæÛ㫚?èWãøé×ÅW&ÿú5ÉÏo»õɹÞö›á¿¯F^•Pѽøþä÷÷žûó8þÊ â+’{ÿ0^ïG“W÷=ô‘ql~áíÉøØç%¯NîûÉG­&ã«?¯¿éÝIî¯|4y˜ôùÔÐÅ3þ翈ˆà?øÏþó‡ÿüá?øÏþ¿ûáÿÿNùø8åo|X}ùaËÛùc™ã:ÿ¿rË©/ÿ¿ð²Ã䯣 timeDate/R/calendar-nDay.R0000755000176200001440000001266214271557346015024 0ustar liggesusers## This R package is free software; you can redistribute it and/or ## modify it under the terms of the GNU Library General Public ## License as published by the Free Software Foundation; either ## version 2 of the License, or (at your option) any later version. ## ## This R package is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU Library General Public License for more details. ## ## You should have received a copy of the GNU Library General ## Public License along with this R package; if not, write to the ## Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, ## MA 02111-1307 USA ################################################################################ ## FUNCTION: DESCRIPTION: ## timeNthNdayInMonth Computes n-th ocurrance of a n-day in year/month ## timeLastNdayInMonth Computes the last n-day in year/month ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # timeNthNdayInMonth <- function(charvec, nday = 1, nth = 1, format = "%Y-%m-%d", zone = "", FinCenter = "") { ## A function implemented by Diethelm Wuertz ## Description: ## Computes "nth" ocurrance of a "nday" (nth = 1,...,5) ## in "year,month" ## Arguments: ## charvec - a character vector of dates and times. ## nday - an integer vector with entries ranging from ## 0 (Sunday) to 6 (Saturday). ## nth - an integer vector numbering the n-th occurence. ## format - the format specification of the input character vector. ## FinCenter - a character string with the the location of the ## financial center named as "continent/city". ## Value: ## Returns the "nth" ocurrance of a "nday" (nth = 1,...,5) ## in "year,month" as a 'timeDate' object. ## Example: ## What date is the second Monday in April 2004? ## timeNthNdayInMonth("2004-04-01", 1, 2) if (zone == "") zone <- getRmetricsOptions("myFinCenter") if (FinCenter == "") FinCenter <- getRmetricsOptions("myFinCenter") ## timeDate: lt <- strptime(charvec, format, tz = "GMT") ## On or after: lt1 <- lt lt1$mday <- 1 ## GNB: fix bug #1463 - the value returned may be in a different month, e.g. ## > timeNthNdayInMonth("1996-06-23", 5, 4) ## GMT ## [1] [1996-07-19] ## ## fix by Manny C - replace lt in julian.POSIXt(lt) by lt1 ct <- 24*3600*(as.integer(julian.POSIXt(lt1)) + (nth-1)*7 + (nday-lt1$wday)%%7) timeDate(format(.POSIXct(ct), tz = "GMT"), format = format, zone = zone, FinCenter = FinCenter) } # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # timeLastNdayInMonth <- function(charvec, nday = 1, format = "%Y-%m-%d", zone = "", FinCenter = "") { ## A function implemented by Diethelm Wuertz ## Description: ## Computes the last "nday" in "year/month" ## Arguments: ## charvec - a character vector of dates and times. ## nday - an integer vector with entries ranging from ## 0 (Sunday) to 6 (Saturday). ## format - the format specification of the input character vector. ## FinCenter - a character string with the the location of the ## financial center named as "continent/city". ## Value: ## Returns the last "nday" in "year/month" as a 'timeDate' ## object. ## Example: ## What date has the last Tuesday in May, 1996? ## timeLastNdayInMonth("1996-05-01", 2) if (zone == "") zone <- getRmetricsOptions("myFinCenter") if (FinCenter == "") FinCenter <- getRmetricsOptions("myFinCenter") ## Last Day: last.day <- c(31,28,31, 30,31,30, 31,31,30, 31,30,31) lt <- strptime(charvec, format, tz = "GMT") y <- 1900 + lt$year leap.year <- (y%%4 == 0 & (y%%100 != 0 | y%%400 == 0)) leap.day <- leap.year & (lt$mon == 1) # leap year *and* february -> 28 + 1 days lt$mday <- last.day[1 + lt$mon] + leap.day lt <- strptime(lt, format, tz = "GMT") ## to make sure that lt$wday ## represents the wday of the ## last day of the month ## GNB: this could return a wrong value, including in the following month, ## before the change we had: ## > timeLastNdayInMonth("1996-05-01", 2) ## GMT ## [1] [1996-06-04] ## the last Tue in May is apparantly in June! (from the doc. of the function!) ## ## cause: (nday - lt$wday)%%7 gives unsitable values if (nday - lt$wday) != 0 ## replace '+ (nday - lt$wday)%%7' with '- (lt$wday - nday)%%7' ## ## was: 24*3600*(as.integer(julian.POSIXt(lt)) + (nday - lt$wday)%%7) ct <- 24*3600*(as.integer(julian.POSIXt(lt)) - (lt$wday - nday)%%7) timeDate(format(.POSIXct(ct), tz = "GMT"), format = format, zone = zone, FinCenter = FinCenter) } ################################################################################ timeDate/R/calendar-onOrAfter.R0000755000176200001440000002416714263246023016017 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # FUNCTION: DESCRIPTION: # timeNdayOnOrAfter Computes date in month that is a n-day ON OR AFTER # timeNdayOnOrBefore Computes date in month that is a n-day ON OR BEFORE # DEPRECATED: # .on.or.after # .on.or.before # .nth.of.nday # .sdate # .month.day.year # .sjulian # .JULIAN # .sday.of.week # .day.of.week # .sleap.year ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # timeNdayOnOrAfter <- function(charvec, nday = 1, format = "%Y-%m-%d", zone = "", FinCenter = "") { # A function implemented by Diethelm Wuertz # Description: # Computes date in month that is a n-day ON OR AFTER # Arguments: # charvec - a character vector of dates and times. # nday - an integer vector with entries ranging from # 0 (Sunday) to 6 (Saturday). # format - the format specification of the input character # vector. # FinCenter - a character string with the the location of the # financial center named as "continent/city". # Value: # Returns the date in month that is a n-day ON OR AFTER as # a 'timeDate' object. # Details: # nday = 1 is a Monday # Example: # What date has the first Monday on or after March 15, 1986? # timeNdayOnOrAfter("1986-03-15", 1) # Changes: # # FUNCTION: if (zone == "") zone <- getRmetricsOptions("myFinCenter") if (FinCenter == "") FinCenter <- getRmetricsOptions("myFinCenter") # timeDate: lt <- strptime(charvec, format, tz = "GMT") # On or after: ct <- 24*3600*(as.integer(julian.POSIXt(lt)) + (nday-lt$wday) %% 7) class(ct) <- "POSIXct" # Return Value: timeDate(format(ct), format = format, zone = zone, FinCenter = FinCenter) } # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # timeNdayOnOrBefore <- function(charvec, nday = 1, format = "%Y-%m-%d", zone = "", FinCenter = "") { # A function implemented by Diethelm Wuertz # Description: # Computes date in month that is a n-day ON OR BEFORE # Arguments: # charvec - a character vector of dates and times. # nday - an integer vector with entries ranging from # 0 (Sunday) to 6 (Saturday). # format - the format specification of the input character # vector. # FinCenter - a character string with the the location of the # financial center named as "continent/city". # Value: # Returns the date in month that is a n-day ON OR BEFORE # as a 'timeDate' object. # Example: # What date has Friday on or before April 22, 1977? # FUNCTION: if (zone == "") zone <- getRmetricsOptions("myFinCenter") if (FinCenter == "") FinCenter <- getRmetricsOptions("myFinCenter") # timeDate: lt <- strptime(charvec, format, tz = "GMT") # On or after: ct <- 24*3600*(as.integer(julian.POSIXt(lt)) - (-(nday-lt$wday)) %% 7) class(ct) <- "POSIXct" # Return Value: timeDate(format(ct), format = format, zone = zone, FinCenter = FinCenter) } ################################################################################ # Internal Functions ## DW ## These are relicts from very old times ## We should check where these function are needed and if we should ## replace them with 'timeDate' objects ... # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # .on.or.after <- function(year, month, day, nday) { .sdate <- year*10000+month*100+day .sdate(.sjulian(.sdate)+(nday-.day.of.week(month, day, year)) %% 7) } # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # .on.or.before <- function(year, month, day, nday) { .sdate <- year*10000+month*100+day .sdate(.sjulian(.sdate)-(-(nday-.day.of.week(month,day,year))) %% 7) } # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # .nth.of.nday <- function(year, month, nday, nth) { .sdate <- year*10000+month*100+1 .sdate(.sjulian(.sdate)+(nth-1)*7+(nday-.day.of.week(month,1,year)) %% 7) } # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # .last.of.nday <- function(year, month, lastday, nday) { .sdate <- year*10000 + month*100 + lastday .sdate(.sjulian(.sdate)-(-(nday-.day.of.week(month,lastday,year))) %% 7) } # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # .sdate <- function (julians, origin = 19600101) { year0 <- origin %/% 10000 month0 <- (origin-10000*year0) %/% 100 day0 <- origin-10000*year0-100*month0 mdylist <- .month.day.year(julians, origin = c(month0, day0, year0)) ans <- mdylist$year*10000 + mdylist$month*100 + mdylist$day class(ans) <- ".sdate" ans } # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # .month.day.year <- function(jul, origin = c(1, 1, 1960)) { # shift = .julian(1, 1, 1960, 0) shift <- 2436935 j <- jul + shift j <- j - 1721119 y <- (4 * j - 1) %/% 146097 j <- 4 * j - 1 - 146097 * y d <- j %/% 4 j <- (4 * d + 3) %/% 1461 d <- 4 * d + 3 - 1461 * j d <- (d + 4) %/% 4 m <- (5 * d - 3) %/% 153 d <- 5 * d - 3 - 153 * m d <- (d + 5) %/% 5 y <- 100 * y + j y <- y + ifelse(m < 10, 0, 1) m <- m + ifelse(m < 10, 3, -9) list(month = m, day = d, year = y) } # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # .sjulian <- function (.sdates, origin = 19600101) { if(is(.sdates, ".sdate")) .sdates <- as.vector(.sdates) year <- .sdates %/% 10000 month <- (.sdates-10000*year) %/% 100 day <- .sdates-10000*year-100*month year0 <- origin %/% 10000 month0 <- (origin-10000*year0) %/% 100 day0 <- origin-10000*year0-100*month0 .JULIAN(month, day, year, origin = c(month0, day0, year0)) } # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # .JULIAN <- function(m, d, y, origin = c(month = 1, day = 1, year = 1960)) { only.origin <- all(missing(m), missing(d), missing(y)) if (only.origin) m = d = y = NULL nms <- names(d) max.len <- max(length(m), length(d), length(y)) m <- c(origin[1], rep(m, length.out = max.len)) d <- c(origin[2], rep(d, length.out = max.len)) y <- c(origin[3], rep(y, length.out = max.len)) y <- y + ifelse(m > 2, 0, -1) m <- m + ifelse(m > 2, -3, 9) c <- y %/% 100 ya <- y - 100 * c out <- (146097 * c) %/% 4 + (1461 * ya) %/% 4 + (153 * m + 2) %/% 5 + d + 1721119 if (!only.origin) { if(all(origin == 0)) out = out[-1] else out = out[-1] - out[1] } names(out) = nms out } # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # .sday.of.week <- function(.sdates) { if(is(.sdates, ".sdate")) .sdates <- as.vector(.sdates) year <- .sdates %/% 10000 month <- .sdates %/% 100 - year*100 day <- .sdates - year*10000 - month*100 a <- (14-month) %/% 12 y <- year - a m <- month + 12*a - 2 (day + y + y %/% 4 - y %/% 100 + y %/% 400 + (31*m) %/% 12) %% 7 } # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # .day.of.week <- function (month, day, year) { .sday.of.week(year * 10000 + month * 100 + day) } # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # .sleap.year <- function(.sdates) { if(is(.sdates, ".sdate")) .sdates <- as.vector(.sdates) year <- .sdates %/% 10000 year %% 4 == 0 & (year %% 100 != 0 | year %% 400 == 0) } ################################################################################ timeDate/R/base-sample.R0000755000176200001440000000314414263246023014532 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # MEHODS: DESCRIPTION: # sample.timeDate Resamples a 'timeDate' object ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # setMethod("sample", "timeDate", function(x, size, replace = FALSE, prob = NULL) { # A function implemented by Diethelm Wuertz and Yohan Chalabi # FUNCTION: # Sample: ct <- sample(as.POSIXct(x), size, replace, prob) ans <- timeDate(ct, zone = "GMT", FinCenter = x@FinCenter) # Return Value: ans }) ################################################################################ timeDate/R/calendar-firstDay.R0000755000176200001440000001403614263246023015677 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # FUNCTION: DESCRIPTION: # timeLastDayInMonth Computes the last day in a given month and year # timeFirstDayInMonth Computes the first day in a given month and year # timeLastDayInQuarter Computes the last day in a given quarter and year # timeFirstDayInQuarter Computes the first day in a given quarter and year ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # timeLastDayInMonth <- function(charvec, format = "%Y-%m-%d", zone = "", FinCenter = "") { # A function implemented by Diethelm Wuertz # Description: # Computes the last day in a given month and year # Arguments: # charvec - a character vector of dates and times. # format - the format specification of the input character vector. # FinCenter - a character string with the the location of the # financial center named as "continent/city". # Value: # Returns the last day in a given month and year as a # 'timeDate' object. # FUNCTION: if (length(charvec) == 0) stop("charvec must have length > 0") if (zone == "") zone = getRmetricsOptions("myFinCenter") if (FinCenter == "") FinCenter = getRmetricsOptions("myFinCenter") # Last day of month: last.day = c(31,28,31, 30,31,30, 31,31,30, 31,30,31) lt = strptime(charvec, format, tz = "GMT") y = 1900 + lt$year leap.year = (y%%4 == 0 & (y%%100 != 0 | y%%400 == 0)) leap.day = as.integer(leap.year)*as.integer(lt$mon == 1) lt$mday = last.day[1 + lt$mon] + leap.day # Return Value: timeDate(format(lt), format = "%Y-%m-%d", zone = zone, FinCenter = FinCenter) } # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # timeFirstDayInMonth <- function(charvec, format = "%Y-%m-%d", zone = "", FinCenter = "") { # A function implemented by Diethelm Wuertz # Description: # Computes the first day in a given month and year # Changes: # # FUNCTION: if (length(charvec) == 0) stop("charvec must have length > 0") if (zone == "") zone = getRmetricsOptions("myFinCenter") if (FinCenter == "") FinCenter = getRmetricsOptions("myFinCenter") # First Day In Month: lt = strptime(charvec, format, tz = "GMT") lt$mday = 1 # Return Value: timeDate(format(lt), format = "%Y-%m-%d", zone = zone, FinCenter = FinCenter) } # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # timeLastDayInQuarter <- function(charvec, format = "%Y-%m-%d", zone = "", FinCenter = "") { # A function implemented by Diethelm Wuertz # Description: # Computes the last day in a given quarter and year # FUNCTION: if (length(charvec) == 0) stop("charvec must have length > 0") if (zone == "") zone = getRmetricsOptions("myFinCenter") if (FinCenter == "") FinCenter = getRmetricsOptions("myFinCenter") # First Day in Month: charvec = timeFirstDayInMonth(charvec = charvec, format = format, FinCenter = FinCenter) # Last Day in Quarter: lt = strptime(charvec, format, tz = "GMT") last.quarter = rep(c(3,6,9,12), each = 3) - 1 lt$mon = last.quarter[1 + lt$mon] charvec = timeDate(format(lt), format = "%Y-%m-%d", zone = zone, FinCenter = FinCenter) # Return Value: timeLastDayInMonth(charvec = charvec, format = format, zone = zone, FinCenter = FinCenter) } # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # timeFirstDayInQuarter <- function(charvec, format = "%Y-%m-%d", zone = "", FinCenter = "") { # A function implemented by Diethelm Wuertz # Description: # Computes the first day in a given quarter and year # Changes: # # FUNCTION: if (length(charvec) == 0) stop("charvec must have length > 0") if (zone == "") zone = getRmetricsOptions("myFinCenter") if (FinCenter == "") FinCenter = getRmetricsOptions("myFinCenter") # First Day in Month: charvec = timeFirstDayInMonth(charvec = charvec, format = format, FinCenter = FinCenter) # First Day in Quarter: lt = strptime(charvec, format, tz = "GMT") first.quarter = rep(c(1,4,7,10), each = 3) - 1 lt$mon = first.quarter[1 + lt$mon] # Return Value: timeDate(format(lt), format = "%Y-%m-%d", zone = zone, FinCenter = FinCenter) } ################################################################################ timeDate/R/base-subset.R0000755000176200001440000002330514263246023014557 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # MEHODS: SUBSETTING TIMEDATE OBJECTS: # setMethod Extracts/replaces subsets from 'timeDate' objects # signature missing - missing - ANY # signature numeric - missing - ANY # signature logical - missing - ANY # signature character - missing - ANY # signature ANY - missing ANY # "[<-.timeDate" Extracts/replaces subsets from 'timeDate' objects # FUNCTION: DESCRIPTION: # .subsetCode Defines codes for different types of subsettings # .subsetByPython Subsets a 'timeDate' object by python like indexing # .subsetBySpan Subsets a 'timeDate' object by span indexing ################################################################################ # Functions implemented by Yohan Chalabi and Diethelm Wuertz # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # setMethod("[", signature(x="timeDate", i="missing", j="missing", drop="ANY"), function(x, i, j, ..., drop = TRUE) x) # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # setMethod("[", signature(x="timeDate", i="numeric", j="missing", drop="ANY"), function(x, i, j, ..., drop = TRUE) { x@Data <- callGeneric(x@Data, i) x }) # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # setMethod("[", signature(x="timeDate", i="logical", j="missing", drop="ANY"), function(x, i, j, ..., drop = TRUE) { x@Data <- callGeneric(x@Data, i) x } ) # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # setMethod("[", signature(x="timeDate", i="character", j="missing", drop="ANY"), function(x, i, j, ..., drop = TRUE) { if (length(i) > 1) { lt <- lapply(i, function(i, x) "["(x, i), x) num <- unlist(lapply(lt, function(td) unclass(td@Data))) return(timeDate(num, zone = "GMT", FinCenter = x@FinCenter)) } if (.subsetCode(i) == "SPAN") { # Subsetting by Span Indexing: return(.subsetBySpan(x, i)) } else { # Subsetting by Python Indexing: return(.subsetByPython(x, i)) } } ) # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # setMethod("[", signature(x="timeDate", i="ANY", j="missing", drop="ANY"), function(x, i, j, ..., drop = TRUE) stop("Not Yet implemented")) # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # "[<-.timeDate" <- function(x, ..., value) { # A function implemented by Yohan Chalabi # Description: # Extracts or replaces subsets from 'timeDate' objects # Arguments: # x - a 'timeDate' object # Value: # Returns a subset from a 'timeDate' object. # FUNCTION: FinCenter <- finCenter(x) if (!inherits(value, "timeDate")) value <- timeDate(value, zone = FinCenter, FinCenter = FinCenter) # Subsets: z <- as.POSIXlt(x) value <- as.POSIXlt(value) val <- "[<-"(z, ..., value=value) val <- as.POSIXct(val) # Return Value: new("timeDate", Data = val, format = x@format, FinCenter = FinCenter) } ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # .subsetCode <- function(subset) { # A function implemented by Diethelm Wuertz # Description: # Defines codes for different types of subsettings # Details: # Python Like Indexing: # Subset: Code: # ISO8601 00000 # :: 00010 # ISO8601::ISO8601 00100 # ISO8601:: 01000 # ::ISO8601 10000 # Indexing by Spans: # subsets = tolower(c( # "last 1 Month(s)", # "last 1 Week(s)", # "last 1 Day(s)", # "last 1 hour(s)", # "last 1 minute(s)", # "last 1 second(s)")) # Example: # .subsetCode("2008-03::") # .subsetCode("last 2 Weeks") # Code String: if (length(grep("last", subset)) > 0 ) { code = "SPAN" } else { code = paste( sign(regexpr("^::[[:digit:]]", subset)[1]+1), sign(regexpr("[[:digit:]]::$", subset)[1]+1), sign(regexpr("[[:digit:]]::[[:digit:]]", subset)[1]+1), as.integer(subset == "::"), ## KH : "[a-Z]" is invalid in most locales length(grep("[[:alpha:]]", subset)), sep = "") } # Return Value: code } # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # .subsetByPython <- function(x = timeCalendar(), subset = "::") { # A function implemented by Diethelm Wuertz # Description: # Subsets a 'timeDate' object by python like indexing # Arguments: # x - a timeDate object # subset - a python like subset string # Example: # .subsetByPython(x, subset = "2008") # .subsetByPython(x, subset = "2008-07") # .subsetByPython(x, subset = "::") # .subsetByPython(x, subset = "2008-07::2008-09") # .subsetByPython(x, subset = "2008-07::") # .subsetByPython(x, subset = "::2008-06") # FUNCTION: stopifnot(length(subset) == 1) # Subset Code: code = .subsetCode(subset) # Full Vector: ans = x # Date String: date = strsplit(subset, "::")[[1]] # 1. DATE if(code == "00000") { # should return NA if no match found idx = grep(date, format(x)) if (!length(idx)) ans@Data <- as.POSIXct(NA) else ans <- x[idx] } # 2. :: if(code == "00010") ans = x # Internal Functions: .completeStart = function(date) { substr(paste0(date, "-01-01"), 1, 10) } .completeEnd = function(date) { if (nchar(date) == 4) paste0(date, "-12-31") else if (nchar(date) == 7) format(timeLastDayInMonth(paste0(date, "-01"))) else if (nchar(date) == 10) date } # 3. DATE::DATE: if(code == "00100") ans = window(x, .completeStart(date[1]), .completeEnd(date[2])) # 4. DATE:: if(code == "01000") ans = window(x, .completeStart(date[1]), end(x)) # 5. ::DATE if(code == "10000") ans = window(x, start(x), .completeEnd(date[2])) # Return Value ans } # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # .subsetBySpan <- function(x = timeCalendar(), subset = "last 3 Months") { # A function implemented by Diethelm Wuertz # Description: # Subsets a 'timeDate' object by span indexing # Arguments: # x - a timeDate object # subset - a span like subset string # Note: # ye[ars] # mo[nths] # da[ys] # ho[urs] # mi[nutes] # se[conds] # ... only "last" spans are implemented # Example: # .subsetBySpan(timeCalendar(), "last 2 months") # .subsetBySpan(timeCalendar(), "last 62 days") # FUNCTION: stopifnot(length(subset) == 1) # Get Code: code = .subsetCode(subset) stopifnot(code == "SPAN") # Settings: duration = as.numeric(strsplit(subset, " ")[[1]][2]) len = c(ye = 31622400, mo = 2678400, da = 86400, ho = 3600, mi = 60, se = 1) unit = tolower(substr(strsplit(subset, " ")[[1]][3], 1, 2)) offset = len[unit]*duration # Return Value: window(x, start = end(x) - offset, end(x)) } ################################################################################ timeDate/R/stats-window.R0000755000176200001440000000627014434114246015010 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # MEHODS: DESCRIPTION: # window.timeDate Extracts a piece from a 'timeDate' object # cut.timeDate Extracts a piece from a 'timeDate' object ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # window.timeDate <- function(x, start, end, ...) { # A function implemented by Diethelm Wuertz and Yohan Chalabi # Descriptions: # Subsets a timeDate object between from and to dates. # Arguments # x - an object of class "timeDate" # start, end - start and end dates as "timeDate" objects. # Note: # This is synonome for the function window() which should # be preferred. # FUNCTION: # Extract Subset: ct <- as.POSIXct(x) FROM = as.POSIXct(timeDate(start, zone = x@FinCenter, FinCenter = "GMT")) TO = as.POSIXct(timeDate(end, zone = x@FinCenter, FinCenter = "GMT")) test = (ct >= FROM & ct <= TO) if (all(!test)) { ans <- x ans@Data <- as.POSIXct(NA) } else { ans <- x[test] } # Return Value: ans } # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # cut.timeDate <- function(x, from , to, ...) { # A function implemented by Diethelm Wuertz # Descriptions: # Subsets a timeDate object between from and to dates. # Arguments # x - an object of class "timeDate" # from, to - start and end dates as "timeDate" objects. # Note: # This is synonome for the function window() which should # be preferred. # FUNCTION: .Deprecated("window", "timeDate") # Extract Subset: X = timeDate(x, zone = x@FinCenter, FinCenter = "GMT") FROM = timeDate(from, zone = x@FinCenter, FinCenter = "GMT") TO = timeDate(to, zone = x@FinCenter, FinCenter = "GMT") test = (X >= FROM & X <= TO) ans = timeDate(X[test], zone = "GMT", FinCenter = x@FinCenter) # Return Value: ans } ################################################################################ timeDate/R/calendar-isWeekday.R0000755000176200001440000001165314263246023016041 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA # Copyrights (C) # for this R-port: # 1999 - Diethelm Wuertz, GPL # 2007 - Rmetrics Foundation, GPL # Diethelm Wuertz # www.rmetrics.org # for the code accessed (or partly included) from other R-ports: # see R's copyright and license files # for the code accessed (or partly included) from contributed R-ports # and other sources # see Rmetrics's copyright file ################################################################################ # METHODS: DESCRIPTION: # isWeekday Tests if 'timeDate' falls on a weekday or not # isWeekend Tests if 'timeDate' falls on a weekend or not # isBizday Tests if 'timeDate' falls on a business day or not # isHoliday Tests if 'timeDate' falls on a non-business day or not ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # isWeekday <- function(x, wday = 1:5) { # A function implemented by Diethelm Wuertz # and improved by Yohan Chalabi # Description: # Test if a date is a weekday day or not # Arguments: # x - an object of class "timeDate" # Value: # returns a logical or a vector of logicals # Example: # isWeekday(timeDate("2004-07-01")) # isWeekday(Sys.timeDate()) # FUNCTION: # Test for Weekdays: days <- as.POSIXlt(x, tz = "GMT")$wday ans <- days %in% wday names(ans) <- format(x) # Return Value: ans } # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # isWeekend <- function(x, wday = 1:5) { # A function implemented by Diethelm Wuertz # Description: # Tests if a date is a weekend day or not # Arguments: # x - an object of class "timeDate" # Value: # Returns a logical or a vector of logicals # Example: # isWeekend(timeDate("2004-07-01")) # isWeekend(Sys.timeDate()) # Changes: # # FUNCTION: # Return Value: !isWeekday(x, wday = wday) } ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # isBizday <- function(x, holidays = holidayNYSE(), wday = 1:5) { # A function implemented by Diethelm Wuertz # Description: # Test if a date is a business day or not # Arguments: # x - an object of class "timeDate" # holidays - a holiday calendar # Value: # Returns a logical or a vector of logicals # Example: # x = timeSequence(from = "2005-05-15", to = "2005-07-15") # h = holiday.NYSE(2005) # cbind(as.character(x), is.bizday(x, h)) # FUNCTION: # Test: char.x = substr(as.character(x), 1, 10) char.h = substr(as.character(holidays), 1, 10) Weekday = as.integer(isWeekday(x, wday = wday)) nonHoliday = as.integer(!(char.x %in% char.h)) # Business Days: bizdays = as.logical(Weekday*nonHoliday) names(bizdays) = x@Data # Return Value: bizdays } # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # isHoliday <- function(x, holidays = holidayNYSE(), wday = 1:5) { # A function implemented by Diethelm Wuertz # Description: # Test if a date is a holiday or not # Arguments: # x - an object of class "timeDate" # holidays - a holiday calendar # Value: # Returns a logical or a vector of logicals # FUNCTION: # Return Value: !isBizday(x, holidays, wday = wday) } ################################################################################ timeDate/R/holiday-ZURICH.R0000755000176200001440000000627014263246023014777 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # FUNCTION: DESCRIPTION: # holidayZURICH Returns holidays for ZURICH calendar ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # holidayZURICH <- function(year = getRmetricsOptions("currentYear")) { # A function implemented by Diethelm Wuertz # and modified by Yohan Chalabi # Description: # Returns a holiday Calendar for Zurich in Switzerland # Details: # Inspect the holiday database in "data/holiday.db.R" # ... You can add there additional holidays! # NewYearsDay Jan, 1st # GoodFriday 2 days before Easter # EasterMonday 1 day after Easter # LaborDay May, 1st # PentecostMonday 50 days after Easter # ChristmasDay Dec, 25 # BoxingDay Dec, 26 # CHBerchtoldsDay Jan, 2nd # CHSechselaeuten 3rd Monday in April # 1 week later if it coincides with Easter Monday # CHAscension 39 days after Easter # CHConfederationDay Aug, 1st # CHKnabenschiessen 2nd Saturday to Monday in Sep # Example: # holidayZurich(2008) # holidayZurich(2008) # holidayZurich(2006:2008) # FUNCTION: # Iterate Years: holidays <- c(NewYearsDay(year), GoodFriday(year), EasterMonday(year), LaborDay(year), PentecostMonday(year), ChristmasDay(year), BoxingDay(year), CHBerchtoldsDay(year), CHSechselaeuten(year), CHAscension(year), CHConfederationDay(year), CHKnabenschiessen(year) ) # Sort and Remove Weekends: holidays <- sort(holidays) holidays <- holidays[isWeekday(holidays)] # Add Financial Center: holidays <- timeDate(format(holidays), zone = "Zurich", FinCenter = "Zurich") # Return Value: holidays } ################################################################################ timeDate/R/zzz.R0000755000176200001440000000317614263246023013203 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA # Copyrights (C) # for this R-port: # 1999 - 2008, Diethelm Wuertz, Rmetrics Foundation, GPL # Diethelm Wuertz # info@rmetrics.org # www.rmetrics.org # 2011, Martin Maechler # for the code accessed (or partly included) from other R-ports: # see R's copyright and license files # for the code accessed (or partly included) from contributed R-ports # and other sources # see Rmetrics's copyright file ################################################################################ .onLoad <- function(libname, pkgname) { # setting Rmetrics global variables setRmetricsOptions(myFinCenter = "GMT", currentYear = as.POSIXlt(Sys.time())$year + 1900, myUnits = "days") if(!is.numeric(getRmetricsOptions("max.print"))) setRmetricsOptions(max.print = 100) } ################################################################################ timeDate/R/methods-getDataPart.R0000755000176200001440000000240214263246023016176 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # METHOD: DESCRIPTION: # getDataPart,timeDate Extract POSIXct data part of timeDate objects ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # setMethod("getDataPart", "timeDate", function(object) object@Data) timeDate/R/timeDate-Sequence.R0000755000176200001440000002402014343171506015641 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # FUNCTION: GENERATION OF TIMEDATE OBJECTS: # timeSequence Creates a regularly spaced 'timeDate' object # seq.timeDate A synonyme function for timeSequence ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # timeSequence <- function(from, to = Sys.timeDate(), by, length.out = NULL, format = NULL, zone = "", FinCenter = "") { # A function implemented by Diethelm Wuertz # Description: # Creates a regularly spaced 'timeDate' object # Arguments: # from - starting date. # to - end date. Optional. If supplied must be after from. # by - a character string, containing one of "sec", "min", # "hour", "day", "week", "month" or "year". # This can optionally be preceded by an integer and a # space, or followed by "s". # length.out - length.out integer, optional. Desired length # of the sequence, if specified "to" will be ignored. # format - the format specification of the input character # vector. # FinCenter - a character string with the the location of the # financial center named as "continent/city". # Value: # Returns a 'timeDate' object corresponding to the "sequence" # specification. # Note: # The 'zone' where the data were recorded is fixed to myFincenter! # Example: # x = timeSequence("2004-01-28", "2004-02-04", by = "day") # x = timeSequence("2004-01-01", "2005-01-31", by = "month") # x = timeSequence("2004-01-28", by = "day", length.out = 10) # x = timeSequence("2004-01-01", by = "month", length.out = 12) # x = timeSequence("2004-01-28 18:00:00", "2004-01-29 05:00:00", by = "hour") # x = timeSequence("2004-01-28 18:00:00", by = "hour", length.out = 12) # FUNCTION: if (zone == "") zone <- getRmetricsOptions("myFinCenter") if (FinCenter == "") FinCenter <- getRmetricsOptions("myFinCenter") # Missing from: if (missing(from)) from <- timeDate(to, format = format, zone = zone, FinCenter = FinCenter) - 24*29*3600 # Settings and Checks: if (!is.null(length.out)) to <- from if (missing(by)) by <- "day" # Auto-detect Input Format: if (is.null(format)) { format.from <- whichFormat(as.character(from)) format.to <- whichFormat(as.character(to)) } else { format.from <- format.to <- format } ## GNB: throw error if 'from' is in a DST gap ## Not sure how to deal with this w/o branching into different cases for 'by', for ## example. For example, for 'DSTday' all days will be shifted by one hour. ## Could subtract it at the end but even then the length of the result may be wrong. ## ## Let the user decide on an alternative. from <- timeDate(from, format = format.from, zone = zone, FinCenter = FinCenter, dst_gap = "NA") if(is.na(from)) {# in DST gap stop("argument 'from' specifies a non-existent time in time zone '", FinCenter, "'") } to <- timeDate(to, format = format.to, zone = zone, FinCenter = FinCenter) if (length(length.out)) seq(from = from, by = by, length.out = length.out) else seq(from = from, to = to, by = by) } # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # seq.timeDate <- function (from, to, by, length.out = NULL, along.with = NULL, ...) { # A function implemented by Diethelm Wuertz and Yohan Chalabi # FUNCTION: # This function is very similar to seq.POSIXt() from R's base, # --> .../src/library/base/R/datetime.R # Modifications by Yohan Chalabi & Martin Maechler marked with end-of-line ## # YC: Note the only difference with seq.POSIXt apart that it works # with timeDate objects is that argument 'by' accepts the syantax # without whitespace, e.g. 1week, and accept 'by = quarter'. This # is important for compatibilty purpose for the align timeDate # method that is based on seq.timeDate. if (missing(from)) stop("'from' must be specified") if (!inherits(from, "timeDate")) stop("'from' must be a timeDate object") ## DST <- ## if (!missing(by) && is.character(by)) { if (identical("quarter", by)) by <- "3 months" by1 <- gsub("[ 0-9]", "", by, perl = TRUE) ## !is.na(pmatch(by1, c("months", "years", "DSTdays"))) ## } else FALSE FinCenter <- finCenter(from) ## zone <- if (DST) FinCenter else "GMT" ## as.POSIX.. <- function(x) if (DST) as.POSIXct(format(x), tz = "GMT") else as.POSIXct(x) from <- as.POSIX..(from) cfrom <- as.POSIXct(from) if (length(cfrom) != 1) stop("'from' must be of length 1") tz <- "GMT" ## if (!missing(to)) { if (!inherits(to, "timeDate")) stop("'to' must be a timeDate object") ## # FinCenter of 'from' argument is used as reference ## finCenter(to) <- FinCenter ## to <- as.POSIX..(to)## if (length(to) != 1) stop("'to' must be of length 1") } if (!missing(along.with)) { length.out <- length(along.with) } else if (!is.null(length.out)) { if (length(length.out) != 1L) stop("'length.out' must be of length 1") length.out <- ceiling(length.out) } status <- c(!missing(to), !missing(by), !is.null(length.out)) if(sum(status) != 2L) stop("exactly two of 'to', 'by' and 'length.out' / 'along.with' must be specified") if (missing(by)) { from <- unclass(cfrom) to <- unclass(as.POSIXct(to)) ## Till (and incl.) 1.6.0 : ##- incr <- (to - from)/length.out ##- res <- seq.default(from, to, incr) res <- seq.int(from, to, length.out = length.out) return(timeDate(res, zone = zone, FinCenter = FinCenter)) ## } if (length(by) != 1L) stop("'by' must be of length 1") valid <- 0L if (inherits(by, "difftime")) { by <- switch(attr(by,"units"), secs = 1, mins = 60, hours = 3600, days = 86400, weeks = 7*86400) * unclass(by) } else if(is.character(by)) { by2 <- c(if (length(grep("[0-9]", by, perl = TRUE))) ## gsub("[ A-Za-z]", "", by, perl = TRUE), gsub("[ 0-9]", "", by, perl = TRUE)) ## if(length(by2) > 2L || length(by2) < 1L) stop("invalid 'by' string") valid <- pmatch(by2[length(by2)], c("secs", "mins", "hours", "days", "weeks", "months", "years", "DSTdays")) if(is.na(valid)) stop("invalid string for 'by'") if(valid <= 5L) { by <- c(1, 60, 3600, 86400, 7*86400)[valid] if (length(by2) == 2L) by <- by * as.integer(by2[1L]) } else by <- if(length(by2) == 2L) as.integer(by2[1L]) else 1 } else if(!is.numeric(by)) stop("invalid mode for 'by'") if(is.na(by)) stop("'by' is NA") if(valid <= 5L) { # secs, mins, hours, days, weeks from <- unclass(as.POSIXct(from)) if(!is.null(length.out)) res <- seq.int(from, by=by, length.out=length.out) else { to0 <- unclass(as.POSIXct(to)) ## defeat test in seq.default res <- seq.int(0, to0 - from, by) + from } ## res is integer here, not POSIXct } else { # months or years or DSTdays ## build the object as POSIXlt, then convert to POSIXct r1 <- as.POSIXlt(from) if(valid == 7L) { # years if(missing(to)) { # years yr <- seq.int(r1$year, by = by, length.out = length.out) } else { to <- as.POSIXlt(to) yr <- seq.int(r1$year, to$year, by) } r1$year <- yr } else if(valid == 6L) { # months if(missing(to)) { mon <- seq.int(r1$mon, by = by, length.out = length.out) } else { to0 <- as.POSIXlt(to) mon <- seq.int(r1$mon, 12*(to0$year - r1$year) + to0$mon, by) } r1$mon <- mon } else if(valid == 8L) { # DSTdays if(!missing(to)) { ## We might have a short day, so need to over-estimate. length.out <- 2L + floor((unclass(as.POSIXct(to)) - unclass(as.POSIXct(from)))/86400) } r1$mday <- seq.int(r1$mday, by = by, length.out = length.out) } r1$isdst <- -1L res <- as.POSIXct(r1) ## now shorten if necessary. if(!missing(to)) { to <- as.POSIXct(to) res <- if(by > 0) res[res <= to] else res[res >= to] } } timeDate(res, zone = zone, FinCenter = FinCenter) ## } ################################################################################ timeDate/R/stats-skewness.R0000755000176200001440000001064014272567404015347 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # FUNCTION: DESCRIPTION: # skewness Returns a number which is the skewness of the data # skewness.default Default method # skewness.data.frame Method for objects of class data.frame # skewness.POSIXct Method for objects of class POSIXct # skewness.POSIXlt Method for objects of class POSIXlt ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # skewness <- function (x, ...) { # A function implemented by Diethelm Wuertz # FUNCTION: # Return Value: UseMethod("skewness") } # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # skewness.default <- function (x, na.rm = FALSE, method = c("moment", "fisher"), ...) { # A function implemented by Diethelm Wuertz # Description: # Returns the value of the skewness of a distribution function. # Details: # Missing values can be handled. # FUNCTION: # Method: method = match.arg(method) # Warnings: if (!is.numeric(x) && !is.complex(x) && !is.logical(x)) { warning("argument is not numeric or logical: returning NA") return(as.numeric(NA))} stopifnot(NCOL(x) == 1) # Remove NAs: if (na.rm) x = x[!is.na(x)] # Skewness: n = length(x) if (is.integer(x)) x = as.numeric(x) # Selected Method: if (method == "moment") { skewness = sum((x-mean(x))^3/sqrt(as.numeric(var(x)))^3)/length(x) } if (method == "fisher") { if (n < 3) skewness = NA else skewness = ((sqrt(n*(n-1))/(n-2))*(sum(x^3)/n))/((sum(x^2)/n)^(3/2)) } # Add Control Attribute: attr(skewness, "method") <- method # Return Value: skewness } # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # skewness.data.frame <- function (x, na.rm = FALSE, method = c("moment", "fisher"), ...) { # A function implemented by Diethelm Wuertz ## Amended by Georgi N. Boshnakov to set attribute 'method' as documented. ## (changed the signature from (x, ...) to make this straightforward) # FUNCTION: method <- match.arg(method) # Return Value: structure(sapply(x, skewness, na.rm = na.rm, method = method, ...), method = method) } # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # skewness.POSIXct <- function (x, ...) { # A function implemented by Diethelm Wuertz # FUNCTION: # Return Value: structure(skewness(unclass(x), ...), oldClass(x)) } # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # skewness.POSIXlt <- function (x, ...) { # A function implemented by Diethelm Wuertz # FUNCTION: # Return Value: as.POSIXlt(skewness(as.POSIXct(x), ...)) } ################################################################################ timeDate/R/calendar-endpoints.R0000755000176200001440000000645014263246023016116 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # FUNCTION: DESCRIPTION: # endpoints Returns endpoint indexes from a timeDate object ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # ## YC: do not make this function visible unless one rename it to avoid ## conflicts with xts endpoints() function. .endpoints <- function (x, on = c("months", "years", "quarters", "weeks", "days", "hours", "minutes", "seconds"), k = 1) { # Description: # Returns endpoint indexes from a 'timeDate' object. # Arguments: # x - a 'timeDate' object # on - the periods endpoints to find as a character string # k - along every k-th element # Note: # Behaves like function entpoints() from R package xts, which # extracts index values of a given "xts" object corresponding # to the last observations given a period specified by "on", # with a zero added to the beginning of the vector, and the # index of the last observation in x at the end. # The Index rules are borrowed from Jeff Ryans endpoints() # function. # FUNCTION: # Convert to POSIX: on <- match.arg(on) posix <- as.POSIXct(x) .posix <- unclass(posix) # Apply index extraction rules: if (on == "years") { ans <- as.integer(which(diff(as.POSIXlt(posix)$year %/% k + 1) != 0)) } else if (on == "quarters") { ans <- as.integer(which(diff((as.POSIXlt(posix)$mon %/% 3) + 1) != 0)) } else if (on == "months") { ans <- as.integer(which(diff(as.POSIXlt(posix)$mon %/% k + 1) != 0)) } else if (on == "weeks") { ans <- as.integer(which(diff((.posix + (3L * 86400L))%/%604800L %/% k + 1) != 0)) } else if (on == "days") { ans <- as.integer(which(diff(.posix %/% 86400L %/% k + 1) != 0)) } else if (on == "hours") { ans <- as.integer(which(diff(.posix %/% 3600L %/% k + 1) != 0)) } else if (on == "minutes" || on == "mins") { ans <- as.integer(which(diff(.posix %/% 60L %/% k + 1) != 0)) } else if (on == "seconds" || on == "secs") { ans <- as.integer(which(diff(.posix %/% k + 1) != 0)) } ans <- c(0, ans, NROW(x)) # Return Value: ans } ################################################################################ timeDate/R/stats-na.fail.R0000755000176200001440000000264314263246023015010 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received A copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # METHOD: CREATE A TIMESERIES FROM OTHER OBJECTS: # is.timeSeries Tests for a 'timeSeries' object ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # setMethod("is.na", "timeDate", function(x) { # A function implemented by Yohan Chalabi is.na(x@Data) }) ################################################################################ timeDate/R/holiday.R0000755000176200001440000001322414270512521013767 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # FUNCTION: DESCRIPTION: # holiday Returns a holiday date of G7 and CH ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # holiday <- function(year = getRmetricsOptions("currentYear"), Holiday = "Easter") { # A function implemented by Diethelm Wuertz # Description: # Returns the date of a holiday, year may be a vector. # Arguments: # year - an integer variable or vector for the year(s) ISO-8601 # formatted as "CCYY" as integers. # holiday - a character string naming the holiday. By default # "Easter". Allowable names are the holidays in the G7 # countries and Switzerland. # Value: # Returns the date of a listed holiday for the selected # "year"(s), an object of class 'timeDate'. # Example: # holiday() # holiday(2000:2009, "USLaborDay") # class(holiday()) # List of Valid Holiday Character Strings: # The following ecclestial and public holidays in # the G7 countries and Switzerland are available: # Holidays Related to Easter: # Septuagesima, Quinquagesima, AshWednesday, PalmSunday, # GoodFriday, EasterSunday, Easter, EasterMonday, # RogationSunday, Ascension, Pentecost, PentecostMonday, # TrinitySunday CorpusChristi. # Holidays Related to Christmas: # ChristTheKing, Advent1st, Advent1st, Advent3rd, # Advent4th, ChristmasEve, ChristmasDay, BoxingDay, # NewYearsDay. # Other Ecclestical Feasts: # SolemnityOfMary, Epiphany, PresentationOfLord, # Annunciation, TransfigurationOfLord, AssumptionOfMary, # AssumptionOfMary, BirthOfVirginMary, CelebrationOfHolyCross, # MassOfArchangels, AllSaints, AllSouls. # CHZurich - Public Holidays: # CHBerchtoldsDay, CHSechselaeuten, CHAscension, # CHConfederationDay, CHKnabenschiessen. # GBLondon - Public Holidays: # GBMayDay, GBBankHoliday, GBSummerBankHoliday, # GBNewYearsEve. # DEFrankfurt - Public Holidays: # DEAscension, DECorpusChristi, DEGermanUnity, DEChristmasEve, # DENewYearsEve. # FRParis - Public Holidays: # FRFetDeLaVictoire1945, FRAscension, FRBastilleDay, # FRAssumptionVirginMary, FRAllSaints, FRArmisticeDay. # ITMilano - Public Holidays: # ITEpiphany, ITLiberationDay, ITRepublicAnniversary, # ITAssumptionOfVirginMary, ITAllSaints, ITWWIVictoryAnniversary, # ITStAmrose, ITImmaculateConception. # USNewYork/USChicago - Public Holidays: # USNewYearsDay, USInaugurationDay, USMLKingsBirthday, # USLincolnsBirthday, USWashingtonsBirthday, USMemorialDay, # USIndependenceDay, USLaborDay, USColumbusDay, USElectionDay, # USVeteransDay, USThanksgivingDay, USChristmasDay, # USCPulaskisBirthday, USGoodFriday. # CAToronto/CAMontreal - Public Holidays: # CAVictoriaDay, CACanadaDay, CACivicProvincialHoliday, # CALabourDay, CAThanksgivingDay, CaRemembranceDay. # JPTokyo/JPOsaka - Public Holidays: # JPNewYearsDay, JPGantan, JPBankHolidayJan2, JPBankHolidayJan3, # JPComingOfAgeDay, JPSeijinNoHi, JPNatFoundationDay, # JPKenkokuKinenNoHi, JPGreeneryDay, JPMidoriNoHi, # JPConstitutionDay, JPKenpouKinenBi, JPNationHoliday, # JPKokuminNoKyujitu, JPChildrensDay, JPKodomoNoHi, # JPMarineDay, JPUmiNoHi, JPRespectForTheAgedDay, # JPKeirouNoHi, JPAutumnalEquinox, JPShuubun-no-hi, # JPHealthandSportsDay, JPTaiikuNoHi, JPNationalCultureDay, # JPBunkaNoHi, JPThanksgivingDay, JPKinrouKanshaNohi, # JPKinrou-kansha-no-hi, JPEmperorsBirthday, # JPTennou-tanjyou-bi, JPTennou-tanjyou-bi. # All the holiday functions are listed in the data file "holidays.R" # Additional holidays, which are not yet available there, can be added # to this data base file. # FUNCTION: # Determine Function: nHolidays = length(Holiday) if(nHolidays == 1) { FUN = match.fun(Holiday) ans = as.character(FUN(year)) } else { ans = character(0) for (i in seq_len(nHolidays)) { FUN = match.fun(Holiday[[i]]) ans = c(ans, as.character(FUN(year))) } } # Classify as simple integer ISO date format CCYYMMDD ans = timeDate(ans) # Return Value: ans } ################################################################################ timeDate/R/calendar-Easter.R0000755000176200001440000001220214356643205015334 0ustar liggesusers# This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # FUNCTION: DESCRIPTION: # Easter Returns date of easter or related feasts # DEPRECATED: DESCRIPTION: # #.easterSunday Easter Algorithm # #.easter Returns date of easter or related feasts ################################################################################ Easter <- function(year = getRmetricsOptions("currentYear"), shift = 0) { # A function implemented by Diethelm Wuertz # Description: # Returns dates of easter or related feasts # Arguments: # year - an integer variable or vector for the year(s) # ISO-8601 formatted as "CCYY" where easter or # easter related feasts should be computed. # shift - the number of days shifted from the easter # date. Negative integers are allowed. # Value: # Returns the date of Easter shifted by 'shift' days, # ".sdate" formatted, an integer of the form CCYYMMDD. # Details: # By default the date of Easter is calculated and returned # in ISO format CCYYMMDD as an integer. Changing shift you # can calculate easter related feasts, e.g. "shift=1" returns # the date of Easter Monday, or "shift=-2" returns the date # of Good Friday. # Note: # This algorithm holds for any year in the Gregorian Calendar, # which (of course) means years including and after 1583 # Examples: # currentYear # prints current year as integer # .easter() # date of easter this year # .easter(2000:2009)) # easter for the 2k decade # timeDate(.easter()) # Convert to timeDate # class(.easter()) # what class? # Notes: # The variable currentYear is set in ".FirstLib" # Calls ".month.day.year" and ".sjulian" # Changes: # # FUNCTION: # Shift and Compute Easter: a = year%%19 b = year%/%100 c = year%%100 d = b%/%4 e = b%%4 f = (b+8)%/%25 g = (b-f+1)%/%3 h = (19*a+b-d-g+15)%%30 i = c%/%4 k = c%%4 l = (32+2*e+2*i-h-k)%%7 m = (a+11*h+22*l)%/%451 easter.month = (h+l-7*m+114)%/%31 p = (h+l-7*m+114)%%31 easter.day = p+1 easterSunday = year*10000 + easter.month*100 + easter.day # Compose: mdy = .month.day.year(.sjulian(easterSunday)+shift) ans = as.integer(mdy$year*10000 + mdy$month*100 + mdy$day) # Classify as simple integer ISO date format CCYYMMDD ans = timeDate(as.character(ans)) # Return Value: ans } ## 2023-01-08 GNB: TODO: think about the following remark. ## ## Easter() is an amalgamation of .easterSunday() and .easter(). The latter two functions ## have been marked as deprecated for a very long time. There may be some value in ## keeping at least .easterSunday() (and even exporting it) but for that it needs to be ## documented properly. If it is kept, the common code in Easter() and .easterSunday() ## should be factored out. But then this is exactly what the two functions below ## do. There is probably a reason to amalgamate them. ## For now just commenting them out. ## ## .easterSunday <- ## function(year) ## { ## # A function implemented by Diethelm Wuertz ## ## # Description: ## # Computes the 'timeDate' of Easter Sunday ## ## # FUNCTION: ## ## # This algorithm holds for any year in the Gregorian Calendar, ## # which (of course) means years including and after 1583 ## a = year%%19 ## b = year%/%100 ## c = year%%100 ## d = b%/%4 ## e = b%%4 ## f = (b+8)%/%25 ## g = (b-f+1)%/%3 ## h = (19*a+b-d-g+15)%%30 ## i = c%/%4 ## k = c%%4 ## l = (32+2*e+2*i-h-k)%%7 ## m = (a+11*h+22*l)%/%451 ## easter.month = (h+l-7*m+114)%/%31 ## p = (h+l-7*m+114)%%31 ## easter.day = p+1 ## ## # Return Value: ## year*10000 + easter.month*100 + easter.day ## } ## ## .easter <- ## function (year = getRmetricsOptions("currentYear"), shift = 0) ## { ## mdy = .month.day.year(.sjulian(.easterSunday(year)) + shift) ## ans = as.integer(mdy$year * 10000 + mdy$month * 100 + mdy$day) ## ans = timeDate(as.character(ans)) ## ans ## } ################################################################################ timeDate/R/options-RmetricsOptions.R0000755000176200001440000000513214263246023017175 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # FUNCTION: DESCRIPTION: # myUnits Sets date units ################################################################################ .RmetricsOptions <- new.env(hash = TRUE) # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # setRmetricsOptions <- function(...) { # A function implemented by Yohan Chalabi x <- list(...) # check if argument was a single list if (length(x) == 1 && is.list(x[[1]])) x <- x[[1]] nm <- names(x) if (is.null(nm) || "" %in% nm) stop("all arguments must be named") old <- lapply(nm, function(m) unname(getRmetricsOption(m))) names(old) <- nm sapply(nm, function(nm) assign(nm, x[[nm]], envir = .RmetricsOptions)) invisible(old) } # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # getRmetricsOption <- function(x = NULL, unset = "") { # A function implemented by Yohan Chalabi if (is.null(x)) x <- ls(all.names = TRUE, envir = .RmetricsOptions) unlist(mget(x, envir = .RmetricsOptions, mode = "any", ifnotfound = as.list(unset))) } # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # # YC : 2009-10-06 # kept for compatibility purpose but should be eventually deprecated getRmetricsOptions <- getRmetricsOption ################################################################################ timeDate/R/timeDate-listFinCenter.R0000755000176200001440000000532314346324176016655 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # FUNCTION: DESCRIPTION: # listFinCenter Lists all supported financial centers # DEPRECATED: # .FinCenterList The list with FinCenter names ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # listFinCenter <- function(pattern = ".*") { # A function implemented by Diethelm Wuertz # Description: # Lists available Financial Centers # Arguments: # pattern - a pattern character string which can be recognized # by the 'grep' functs. Wild cards are allowed. # Value: # Returns a printed list of financial centers. # Example: # > listFinCenter("Europe/*") # [1] "Europe/Amsterdam" "Europe/Andorra" "Europe/Athens" # [4] "Europe/Belfast" "Europe/Belgrade" "Europe/Berlin" # [7] "Europe/Bratislava" "Europe/Brussels" "Europe/Bucharest" # [10] "Europe/Budapest" "Europe/Chisinau" "Europe/Copenhagen" # [13] "Europe/Dublin" "Europe/Gibraltar" "Europe/Helsinki" # [16] "Europe/Istanbul" ... # FUNCTION: ## GNB: now the list is generated when the DST rules are generated, ## see the end of timeDate-DaylightSavingTime.R ## ## FinCenterList => .FinCenterList (note the leading dot) ## "Pacific/Easter" is excluded as it is in conflict with the feast Easter. ## TODO: include it as "Easter_Island"? # Financial Centers: if (pattern == "*") pattern = "\\\\*" # Return Value: sort(as.character(.FinCenterList[grep(pattern = pattern, x = .FinCenterList)])) } ################################################################################ timeDate/R/stats-frequency.R0000755000176200001440000000356014263246023015500 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # FUNCTION: DESCRIPTION: # frequency,timeDate Returns the frequency of a timeDate vector ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # setMethod("frequency", "timeDate", function(x, ...) { # A function implemented by Diethelm Wuertz # Description: # Returns the frequency of a timeDate vector # Arguments: # x - an object of class timeDate # Example: # frequency(timeCalendar()) # frequency(timeCalendar()[(1:3)*4]) # frequency(timeLastDayInQuarter(timeCalendar())[(1:3)*4]) # FUNCTION: # Frequency: frequency <- 1 if(isMonthly(x)) frequency <- 12 if(isQuarterly(x)) frequency <- 4 # Return Value: frequency }) ################################################################################ timeDate/R/options-myUnits.R0000755000176200001440000000206714263246023015505 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # DEPRECATED: DESCRIPTION: # myUnits Sets date units ################################################################################ # myUnits <- "days" ################################################################################ timeDate/R/stats-start.R0000755000176200001440000000706414263246023014637 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # MEHODS: DESCRIPTION: # start.timeDate Extracts the first entry of a 'timeDate' object # end.timeDate Extracts the last entry of a 'timeDate' object # min.timeDate Extracts the smallest entry of a 'timeDate' object # max.timeDate Extracts the largest entry of a 'timeDate' object # range.timeDate Extracts range of a 'timeDate' object ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # start.timeDate <- function(x, ...) { # A function implemented by Diethelm Wuertz and Yohan Chalabi # Description: # Extracts the first object of a 'timeDate' vector # Arguments: # x - a 'timeDate' object # Value: # Returns from 'x' the earliest entry as an object of class # 'timeDate'. # FUNCTION: # Return Value: timeDate(min(as.POSIXct(x)), zone = "GMT", FinCenter = x@FinCenter) } # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # end.timeDate <- function(x, ...) { # A function implemented by Diethelm Wuertz and Yohan Chalabi # Description: # Extracts the last object of a 'timeDate' vector # Arguments: # x - a 'timeDate' object # Value: # Returns an object of class 'timeDate'. # FUNCTION: # Return Value: timeDate(max(as.POSIXct(x)), zone = "GMT", FinCenter = x@FinCenter) } # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # min.timeDate <- function(..., na.rm = FALSE) { # DW: is this ok ?? start.timeDate(...) } # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # max.timeDate <- function(..., na.rm = FALSE) { # DW: is this ok ?? end.timeDate(...) } # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # range.timeDate <- function(..., na.rm = FALSE) { c(start(..., na.rm = na.rm), end(..., na.rm = na.rm)) } ################################################################################ timeDate/R/base-diff.R0000755000176200001440000000451014263246023014157 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # MEHODS: DESCRIPTION: # diff.timeDate Returns suitably lagged and iterated differences ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # diff.timeDate <- function (x, lag = 1, differences = 1, ...) { # A function implemented by Diethelm Wuertz # Description: # Returns suitably lagged and iterated differences # Arguments: # x - a 'timeDate' object. # lag - an integer indicating which lag to use, by # default 1. # differences - an integer indicating the order of the # difference, by default 1. # ... - further arguments to be passed to or from methods. # Value: # If 'x' is a vector of length 'n' and 'differences=1', then # the computed result is equal to the successive differences # 'x[(1+lag):n] - x[1:(n-lag)]'. # If 'difference' is larger than one this algorithm is applied # recursively to 'x'. Note that the returned value is a vector # which is shorter than 'x'. # FUNCTION: # Convert to GMT: GMT <- timeDate(x, zone = x@FinCenter, FinCenter = "GMT") diff(as.POSIXct(GMT@Data), lag = lag, differences = differences, ...) } ################################################################################ timeDate/R/base-weekdays.R0000755000176200001440000001271014356643464015101 0ustar liggesusers# This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received A copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # FUNCTION: DATE FUNCTIONS: # #.fjulian Transforms formatted dates to julian day numbers # .julian Implements SPlus like 'julian' # #.isPOSIX Checks for an object of class POSIX # #.by2seconds Converts 'by' string into numeric value of seconds ################################################################################ ## .fjulian <- ## function(fdates, origin = 19600101, order = 'mdy', cc = NULL, swap = 20) ## { ## # A function implemented by Diethelm Wuertz ## # Description: ## # Transforms formatted dates (fdates) from several formats ## # as 8/11/73 11Aug1973, ... into ISO-8601 Gregorian dates ## # ... makes use of C-Program char_date.c implemented by ## # Terry Therneau ## # Notes: ## # cc - Century, becoming obsolete with the introduction of swap. ## # Example: ## # require(date) ## # fdates = c("8/11/73", "08-11-73", "August 11 1973", "Aug11/73") ## # .fjulian(fdates) ## # fdates = c("11/8/73", "11-08-73", "11 August 1973", "11Aug73") ## # .fjulian(fdates, order = 'dmy') ## # Note: ## # Requires R-package "date" ## # FUNCTION: ## stopifnot(require("date")) ## # Formats: ## order.vec <- ## switch(order, ## 'ymd'= c(1,2,3), ## 'ydm'= c(1,3,2), ## 'mdy'= c(2,3,1), ## 'myd'= c(2,1,3), ## 'dym'= c(3,1,2), ## 'dmy'= c(3,2,1), ## stop("Invalid value for 'order' option")) ## nn = length(fdates) ## cd <- .C("char_date", ## as.integer(nn), ## as.integer(order.vec), ## as.character(fdates), ## month = integer(nn), ## day = integer(nn), ## year = integer(nn), PACKAGE = "date")[c("month", "day", "year")] ## yy <- cd$year %% 100 ## # Swap: ## cc = 19 + trunc(sign(swap-yy)+1)/2 ## year = cc*100 + yy ## # Origin: ## cc0 = origin %/% 1000000 ## yymmdd0 = origin - cc0*1000000 ## yy0 = yymmdd0 %/% 10000 ## mm0 = yymmdd0 %/% 100 - yy0*100 ## dd0 = yymmdd0 - yy0*10000 - mm0*100 ## # Result: ## .julian(cd$month, cd$day, year, origin = c(mm0, dd0, cc0*100+yy0)) ## } .julian <- function(m, d, y, origin = c(month = 1, day = 1, year = 1960)) { # A function implemented by Diethelm Wuertz # Description: # This function is a synonyme for Splus' "julian()" with the # same list of arguments. # Note: # SPlus like function. # FUNCTION: # Implementation: only.origin = all(missing(m), missing(d), missing(y)) if(only.origin) m = d = y = NULL # return days since origin nms = names(d) max.len = max(length(m), length(d), length(y)) # prepend new origin value and rep out to common max. length: m = c(origin[1], rep(m, length = max.len)) d = c(origin[2], rep(d, length = max.len)) y = c(origin[3], rep(y, length = max.len)) # code from julian date in the S book (p.269) y = y + ifelse(m > 2, 0, -1) m = m + ifelse(m > 2, -3, 9) c = y %/% 100 ya = y - 100 * c out = (146097 * c) %/% 4 + (1461 * ya) %/% 4 + (153 * m + 2) %/% 5 + d + 1721119 # now subtract the new origin from all dates if(!only.origin) { out <- if(all(origin == 0)) out[-1] else out[-1] - out[1] } names(out) = nms # Return Value: out } ## 2023-01-08 GNB: removed .isPOSIX() since it is not used anywhere in the package. ## ## .isPOSIX <- ## function(x) ## { ## # A function implemented by Diethelm Wuertz ## ## # Description: ## # Checks for an object of class POSIX ## ## # FUNCTION: ## ## # Check: ## ans = inherits(x, "POSIXt") ## ## # Return Value: ## ans ## } ## TODO: rename, document and export this function? not used anywhere in the package ## .by2seconds <- ## function(by = "1 h") ## { ## # A function implemented by Diethelm Wuertz ## ## # Description: ## # Convert 'by' string into numeric value of seconds ## ## # FUNCTION: ## ## # Convert: ## by = strsplit(by, " ")[[1]] ## byTime = as.integer(by[1]) ## byUnits = substr(by[2], 1, 1) ## timeUnits = c(1, 60, 3600) ## names(timeUnits) = c("s", "m", "h") ## bySeconds = byTime * timeUnits[byUnits] ## names(bySeconds) = "secs" ## ## # Return Value: ## bySeconds ## } ################################################################################ timeDate/R/calendar-align.R0000755000176200001440000001202414263246023015177 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # FUNCTION: DESCRIPTION: # align,timeDate Aligns a 'timeDate' object to regular time stamps # align,ANY ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # setMethod("align", "timeDate", function(x, by = "1d", offset = "0s") { # A function implemented by Diethelm Wuertz and Yohan Chalabi # Description: # Aligns a 'timeDate' object to regular time stamps # Example: # align(timeCalendar(), "1w") # Weekly # align(timeCalendar(), "2w", "3d") # Bi-Weekly with offset # FUNCTION: # Settings: periods <- c(7*24*3600, 24*3600, 3600, 60, 1) names(periods) <- c("w", "d", "h", "m", "s") offset <- as.integer(gsub("[a-z]", "", offset, perl = TRUE)) * periods[gsub("[ 0-9]", "", offset, perl = TRUE)] offset <- as.vector(offset) # Return Value: seq(from = x[1] + offset, to = x[length(x)], by = by) }) # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # setMethod("align", "ANY", function(x, y, xout, method = "linear", n = 50, rule = 1, f = 0, ties = mean, ...) { # A function implemented by Diethelm Wuertz and Yohan Chalabi # FUNCTION: # Align by Approximation: ans = approx(x = x, y = y, xout = xout, method = method, n = n, rule = rule, f = f, ties = ties, ...) # Return Value: ans }) ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # alignDaily <- function(x, include.weekends=FALSE) { # A function implemented by Diethelm Wuertz # Description: # Aligns a 'timeDate' object to end-of-day dates # Arguments: # x - a 'timeDate' object # include.weekends - a logical, should weekends be included? # FUNCTION: # Align: if (include.weekends) { tD <- align(x) } else { tD <- align(x) tD <- tD[isWeekday(tD)] } # Return Value: tD } # ---------------------------------------------------------------------------- # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # alignMonthly <- function(x, include.weekends=FALSE) { # A function implemented by Diethelm Wuertz # Description: # Aligns a 'timeDate' object to end of month dates # Arguments: # x - a 'timeDate' object # include.weekends - a logical, should weekends be included? # FUNCTION: # Align: if (include.weekends) { tD <- timeLastDayInMonth(x) } else { tD <- timeLastDayInMonth(x) tD[isWeekend(tD)] <- tD[isWeekend(tD)] - 24*3600 } # Return Value: tD } # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # alignQuarterly <- function(x, include.weekends=FALSE) { # A function implemented by Diethelm Wuertz # Description: # Aligns a 'timeDate' object to end-of-quarter dates # Arguments: # x - a 'timeDate' object # include.weekends - a logical, should weekends be included? # FUNCTION: # Align: if (include.weekends) { tD <- timeLastDayInQuarter(x) } else { tD <- timeLastDayInQuarter(x) tD[isWeekend(tD)] <- tD[isWeekend(tD)] - 24*3600 } # Return Value: tD } ############################################################################### timeDate/R/holiday-Listing.R0000644000176200001440000001167114535302453015404 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # FUNCTION: DESCRIPTION: # listHolidays Lists Holidays # DEPRECATED: DESCRIPTION: # .holidayList Prints all public and ecclestical holidays ################################################################################ listHolidays <- function(pattern = ".*") { # A function implemented by Diethelm Wuertz # Description: # Prints all public and ecclestical holidays # FUNCTION: # List: holidayList = c( "Septuagesima", "Quinquagesima", "AshWednesday", "PalmSunday", "GoodFriday", "Easter", "EasterSunday", "EasterMonday", "RogationSunday", "Ascension", "Pentecost", "PentecostMonday", "TrinitySunday", "CorpusChristi", "ChristTheKing", "Advent1st", "Advent2nd", "Advent3rd", "Advent4th", "ChristmasEve", "ChristmasDay", "BoxingDay", "NewYearsDay", "SolemnityOfMary", "Epiphany", "PresentationOfLord", "Annunciation", "TransfigurationOfLord", "AssumptionOfMary", "BirthOfVirginMary", "CelebrationOfHolyCross", "MassOfArchangels", "AllSaints", "AllSouls", "LaborDay", "CHBerchtoldsDay", "CHSechselaeuten", "CHAscension", "CHConfederationDay", "CHKnabenschiessen", "GBEarlyMayBankHoliday", # was: "GBMayDay", "GBSpringBankHoliday", # was: "GBBankHoliday" "GBSummerBankHoliday", "specialHolidayGB", # new 2023-12-08 "DEAscension", "DECorpusChristi", "DEGermanUnity", "DEChristmasEve", "DENewYearsEve", "FRFetDeLaVictoire1945", "FRAscension", "FRBastilleDay", "FRAssumptionVirginMary", "FRAllSaints", "FRArmisticeDay", "ITEpiphany", "ITLiberationDay", "ITAssumptionOfVirginMary", "ITAllSaints", "ITStAmrose", "ITImmaculateConception", "USDecorationMemorialDay", "USPresidentsDay", "USNewYearsDay", "USInaugurationDay", "USMLKingsBirthday", "USLincolnsBirthday", "USWashingtonsBirthday", "USMemorialDay", "USIndependenceDay", "USLaborDay", "USColumbusDay", "USElectionDay", "USVeteransDay", "USThanksgivingDay", "USChristmasDay", "USCPulaskisBirthday", "USGoodFriday", "USJuneteenthNationalIndependenceDay", "CAVictoriaDay", "CACanadaDay", "CAFamilyDay", "CACivicProvincialHoliday", "CALabourDay", "CAThanksgivingDay", "CaRemembranceDay", "JPVernalEquinox", "JPNewYearsDay", "JPGantan", "JPBankHolidayJan2", "JPBankHolidayJan3", "JPComingOfAgeDay", "JPSeijinNoHi", "JPNatFoundationDay", "JPKenkokuKinenNoHi", "JPGreeneryDay", "JPMidoriNoHi", "JPConstitutionDay", "JPKenpouKinenBi", "JPNationHoliday", "JPKokuminNoKyujitu", "JPChildrensDay", "JPKodomoNoHi", "JPMarineDay", "JPUmiNoHi", "JPRespectForTheAgedDay", ## "JPKeirouNOhi", # 2023-11-27 deprecated "JPKeirouNoHi", # 2023-11-27 new, replaces the above "JPMountainDay", # 2023-11-27 new "JPAutumnalEquinox", "JPShuubunNoHi", "JPHealthandSportsDay", "JPTaiikuNoHi", "JPNationalCultureDay", "JPBunkaNoHi", "JPThanksgivingDay", "JPKinrouKanshaNoHi", "JPEmperorsBirthday", "JPTennouTanjyouBi", "JPBankHolidayDec31") # Financial Centers: if (pattern == "*") pattern = "\\\\*" # Return Value: sort(as.character(holidayList[grep(pattern = pattern, x = holidayList)])) } ################################################################################ timeDate/R/calendar-isDaily.R0000755000176200001440000001345314263246023015512 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # FUNCTION: DESCRIPTION: # isDaily,timeDate-method Tests 'timeDate' has daily time stamps # isMonthly,timeDate-method Tests 'timeDate' has monthly time stamps # isQuarterly,timeDate-method Tests 'timeDate' has quarterly time stamps # isRegular,timeDate-method Tests 'timeDate' has regular time stamps ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # setMethod("isDaily", "timeDate", function(x) { # A function implemented by Diethelm Wuertz # Descriptions: # Test if a timeDate object has daily time stamps # Example: # isDaily(timeSequence(by = "day", length.out = 20)) # isDaily(timeCalendar()) # isDaily(timeSequence(by = "hour", length.out = 100)) # Details: # Definition: A timeDate Object is a Daily timeDate object # if we have not more than one date/time stamp per day. # Arguments: # x - an object of class timeDate # FUNCTION: # Daily ? num <- as.numeric(as.POSIXct(x)) daily <- seq(from = num[1], by = 60*60*24, length.out=length(num)) # Return (identical(daily, num)) }) ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # setMethod("isMonthly", "timeDate", function(x) { # A function implemented by Diethelm Wuertz # Descriptions: # Tests if a timeDate object has monthly time stamps # Arguments: # x - an object of class timeDate # Details: # Definition: A timeDate Object is a Monthly timeDate object # if we have not more than one date/time stamp per month. # Note a monthly series is also a daily series. # Example: # isMonthly(timeSequence(by = "day", length.out = 20)) # isMonthly(timeCalendar()) # isDaily(timeCalendar()) # isMonthly(timeSequence(by = "hour", length.out = 100)) # FUNCTION: # Monthly ? m <- c(timeDate::months(x)) #-> c() to remove attributes # (m[1] -1) -> shift vector to match first entry in m monthly <- seq(from = m[1]-1, length.out=length(m)) %% 12 + 1 # Return (identical(monthly, m)) }) ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # setMethod("isQuarterly", "timeDate", function(x) { # A function implemented by Diethelm Wuertz # Descriptions: # Tests if a timeDate object has quarterly time stamps # Arguments: # x - an object of class timeDate # Details: # Definition: A timeDate Object is a Quarterly timeDate object # if we have not more than one date/time stamp per quarter # Note a quarterly series is also a daily and a monthly series. # Example: # isQuarterly(timeSequence(by = "day", length.out = 20)) # isQuarterly(timeCalendar()) # isQuarterly(timeSequence(by = "hour", length.out = 100)) # isQuarterly(timeCalendar()[(1:4)*3]) # isMonthly(timeCalendar()[(1:4)*3]) # isDaily(timeCalendar()[(1:4)*3]) # FUNCTION: # Quartertly ? m <- c(timeDate::months(x)) #-> c() to remove attributes # (m[1] -1) -> shift vector to match first entry in m quarterly <- seq(from = m[1]-1, by = 3, length=length(m)) %% 12 + 1 # Return (identical(quarterly, m)) }) ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # setMethod("isRegular", "timeDate", function(x) { # A function implemented by Diethelm Wuertz # Descriptions: # Tests if a timeDate object has regular time stamps # Example: # isRegular(timeSequence(by = "day", length.out = 20)) # isRegular(timeCalendar()) # isRegular(timeSequence(by = "hour", length.out = 100)) # Details: # Definition: A timeDate Object is a Regular timeDate object # if the timeDate object is either monthly or quarterly, # otherwise not. # Arguments: # x - an object of class timeDate # FUNCTION: # Regular ? (isMonthly(x) | isQuarterly(x)) }) ################################################################################timeDate/R/timeDate-Sys.timeDate.R0000755000176200001440000000407414263246023016407 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # FUNCTION: GENERATION OF TIMEDATE OBJECTS: # Sys.timeDate Returns system time as an 'timeDate' object ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # Sys.timeDate <- function(FinCenter = "") { # A function implemented by Diethelm Wuertz # Description: # Returns system time as an object of class 'timeDate' # Arguments: # FinCenter - a character string with the the location of the # financial center named as "continent/city" # Value: # Returns the system time as an object of class 'timeDate'. if (FinCenter == "") FinCenter <- getRmetricsOptions("myFinCenter") # only time at "GMT" is reliable on most systems # charvec <- format(Sys.time(), tz = "GMT", usetz = FALSE) # System Time: time <- Sys.time() attr(time, "tzone") <- "GMT" # Return timeDate(as.character(time), zone = "GMT", FinCenter = FinCenter) } ################################################################################ timeDate/R/methods-mathOps.R0000755000176200001440000001113714263246023015416 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # MEHODS: DESCRIPTION: # Ops.timeDate Group 'Ops' operations on 'timeDate' objects # +.timeDate Performs + operation on 'timeDate' objects # -.timeDate Performs - operation on 'timeDate' objects ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # setMethod("Ops", c("timeDate", "timeDate"), function(e1, e2) { # A function implemented by Diethelm Wuertz and Yohan Chalabi # Description: # Uses group 'Ops' generic functions for 'timeDate' objects # Arguments: # e1 - an object of class 'timeDate' # e2 - an object of class 'timeDate' # Value: # Returns the 'Ops' grouped object. # FUNCTION: ans <- callGeneric(e1@Data, e2@Data) if (inherits(ans, "POSIXt")) ans <- timeDate(as.character(ans), zone = "GMT", FinCenter = e1@FinCenter) # Return Value: ans }) # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # setMethod("+", c("timeDate", "numeric"), function(e1, e2) { # A function implemented by Yohan Chalabi and Diethelm Wuertz ans <- callGeneric(e1@Data, e2) ans <- timeDate(ans, zone = "GMT", FinCenter = e1@FinCenter) # Return Value: ans }) # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # setMethod("+", c("numeric", "timeDate"), function(e1, e2) { # A function implemented by Yohan Chalabi and Diethelm Wuertz ans <- callGeneric(e1, e2@Data) ans <- timeDate(ans, zone = "GMT", FinCenter = e2@FinCenter) # Return Value: ans }) # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # setMethod("+", c("timeDate", "timeDate"), function(e1, e2) { # A function implemented by Yohan Chalabi and Diethelm Wuertz stop("binary '+' is not defined for \"timeDate\" objects") }) # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # setMethod("-", c("timeDate", "numeric"), function(e1, e2) { # A function implemented by Yohan Chalabi and Diethelm Wuertz ans <- callGeneric(e1@Data, e2) ans <- timeDate(ans, zone = "GMT", FinCenter = e1@FinCenter) # Return Value: ans }) # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # setMethod("-", c("numeric", "timeDate"), function(e1, e2) { # A function implemented by Yohan Chalabi and Diethelm Wuertz stop("Can only subtract from timeDate objects") }) # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # setMethod("-", c("timeDate", "timeDate"), function(e1, e2) { # A function implemented by Yohan Chalabi and Diethelm Wuertz callGeneric(e1@Data, e2@Data) }) ################################################################################ timeDate/R/tzone.R0000755000176200001440000001154214263246023013501 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # FUNCTION: DESCRIPTION: # Zone Offset Where # ---- ------ ------ # EET Eastern European +2 Finland, Eastern Europe # CET Central European +1 Western Europe, Sweden # GMT Greenwich Mean none United Kingdom, Portugal # AST Atlantic Standard -4 Halifax # EST Eastern Standard -5 NY, DC, Toronto, Montreal # CST Central Standard -6 Chicago, Houston, Winnipeg # MST Mountain Standard -7 Denver, Calgary, Edmonton # PST Pacific Standard -8 LA, San Fransisco, Vancouver # # source http://www.stacken.kth.se/~kvickers/timezone.html # ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # EET <- function() data.frame(EET = "1902-01-01 00:00:00", offSet = 2 * 3600, isdst = 0, TimeZone = "EET", numeric = as.numeric(as.POSIXct("1902-01-01 00:00:00")), stringsAsFactors = FALSE) # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # CET <- function() data.frame(CET = "1902-01-01 00:00:00", offSet = 1 * 3600, isdst = 0, TimeZone = "CET", numeric = as.numeric(as.POSIXct("1902-01-01 00:00:00")), stringsAsFactors = FALSE) # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # AST <- function() data.frame(AST = "1902-01-01 00:00:00", offSet = -4 * 3600, isdst = 0, TimeZone = "AST", numeric = as.numeric(as.POSIXct("1902-01-01 00:00:00")), stringsAsFactors = FALSE) # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # EST <- function() data.frame(EST = "1902-01-01 00:00:00", offSet = -5 * 3600, isdst = 0, TimeZone = "EST", numeric = as.numeric(as.POSIXct("1902-01-01 00:00:00")), stringsAsFactors = FALSE) # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # CST <- function() data.frame(CST = "1902-01-01 00:00:00", offSet = -6 * 3600, isdst = 0, TimeZone = "CST", numeric = as.numeric(as.POSIXct("1902-01-01 00:00:00")), stringsAsFactors = FALSE) # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # MST <- function() data.frame(MST = "1902-01-01 00:00:00", offSet = -7 * 3600, isdst = 0, TimeZone = "MST", numeric = as.numeric(as.POSIXct("1902-01-01 00:00:00")), stringsAsFactors = FALSE) # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # PST <- function() data.frame(PST = "1902-01-01 00:00:00", offSet = -8 * 3600, isdst = 0, TimeZone = "PST", numeric = as.numeric(as.POSIXct("1902-01-01 00:00:00")), stringsAsFactors = FALSE) timeDate/R/base-c.R0000755000176200001440000000423714263246023013477 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # MEHODS: DESCRIPTION: # c.timeDate Concatenates 'timeDate' objects ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # c.timeDate <- function(..., recursive = FALSE) { # A function implemented by Diethelm Wuertz # Description: # Concatenates objects of class 'timeDate' # Arguments: # ... - objects to be concatenated. # recursive - a logical. If 'recursive=TRUE', the function # recursively descends through lists combining all their # elements into a vector. # Value: # Returns all arguments to be coerced to a 'timeDate' object # which is the type of the returned value. # Example: # timeCalendar()[0]; c(timeCalendar()[0], timeCalendar()) # Details: # This is a generic function which combines its arguments. # FUNCTION: # List all: z = list(...) data <- unlist(lapply(z, function(td) c(as.numeric(td, unit = "secs")))) timeDate(data, zone = "GMT", FinCenter = z[[1]]@FinCenter) } ################################################################################ timeDate/R/base-sort.R0000755000176200001440000000362214263246023014241 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA # Copyrights (C) # for this R-port: # 1999 - Diethelm Wuertz, GPL # 2007 - Rmetrics Foundation, GPL # Diethelm Wuertz # www.rmetrics.org # for the code accessed (or partly included) from other R-ports: # see R's copyright and license files # for the code accessed (or partly included) from contributed R-ports # and other sources # see Rmetrics's copyright file ################################################################################ # MEHODS: DESCRIPTION: # sort.timeDate Sorts a 'timeDate' object ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # sort.timeDate <- function(x, ...) { # A function implemented by Diethelm Wuertz and Yohan Chalabi # Description: # Sorts a 'timeDate' object # FUNCTION: # Return Value: x[order(x@Data, ...)] } ################################################################################ timeDate/R/timeDate-Calendar.R0000755000176200001440000001162514263246023015607 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # FUNCTION: GENERATION OF TIMEDATE OBJECTS: # timeCalendar Creates a 'timeDate' object from calendar atoms ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # timeCalendar <- function(y = getRmetricsOptions("currentYear"), m = 1:12, d = 1, h = 0, min = 0, s = 0, zone = "", FinCenter = "") { # A function implemented by Diethelm Wuertz # Description: # Creates a 'timeDate' object from calendar atoms # Arguments: # y - calendar years (e.g. 1997), defaults are 1960. # m - calendar months (1-12), defaults are 1. # d - calendar days (1-31), defaults are 1. # h - hours of the days (0-23), defaults are 0. # min - minutes of the days (0-59), defaults are 0. # s - seconds of the days (0-59), defaults are 0. # FinCenter - a character sting with the the location of the # financial center named as "continent/city" # Value: # Returns a 'timeDate' object corresponding to the "atomic" # inputs. For the default arguments the first day in each # month of the current year will be returned. # Details: # Creates a 'timeDate' object from date as month, day, year and # time of day as hours, and minutes [seconds, milliseconds] # Note: # The 'zone' where the data were recorded is fixed to myFincenter! # The argument list has ISO-8601 ordering! # ms - Milliseconds is not supported. # Example: # x = timeCalendar(y = 2000, h = rep(16,12)) # x = timeCalendar(m = c(3,4,5), d = c(12,15,7), y = c(1998,1997,2004)) # x = timeCalendar(h = c(9,14), min = c(15,23)) # FUNCTION: # Settings and Check: trace = FALSE if (zone == "") zone <- getRmetricsOptions("myFinCenter") if (FinCenter == "") FinCenter <- getRmetricsOptions("myFinCenter") if (is.null(h) & is.null(min) & is.null(s)) zone = FinCenter # Check Input: len = c(length(m), length(d), length(y), length(h), length(min), length(s)) data.len = max(len) if (data.len < 1) stop("No arguments defined!") if (any((data.len %% len[len > 0]) != 0)) stop("Arguments have incompatible lengths") # Make All Arguments the Same Length: if (len[1] == 0) m = 1 if (len[2] == 0) d = 1 if (len[3] == 0) y = 1960 if (len[4] == 0) h = 0 if (len[5] == 0) min = 0 if (len[6] == 0) s = 0 # Presettings: # m = rep(m, length = data.len) # d = rep(d, length = data.len) # y = rep(y, length = data.len) # h = rep(h, length = data.len) # min = rep(min, length = data.len) # s = rep(s, length = data.len) # DW 2006-03-13 if (length(m) < data.len) m = rep(m, length = data.len) if (length(d) < data.len) d = rep(d, length = data.len) if (length(y) < data.len) y = rep(y, length = data.len) if (length(h) < data.len) h = rep(h, length = data.len) if (length(min) < data.len) min = rep(min, length = data.len) if (length(s) < data.len) s = rep(s, length = data.len) # Date-Time Strings: # Note Format is always of type "%Y%m%d%H%M%S" ! CCYYMMDD = as.integer(y*10000 + m*100 + d) chardate = as.character(CCYYMMDD) xhhmmss = as.integer(1000000 + h*10000 + min*100 + s) # Date and Date/Time Checks: if (mean(xhhmmss) == 1000000) { chartime = substr(as.character(xhhmmss), 2, 7) charvec = as.vector(chardate) format = "%Y%m%d" } else { chartime = substr(as.character(xhhmmss), 2, 7) charvec = paste0(as.vector(chardate), as.vector(chartime)) format = "%Y%m%d%H%M%S" } # Return Value: ans <- timeDate(charvec = charvec, format = format, zone = zone, FinCenter = FinCenter) ans } ################################################################################ timeDate/R/holiday-LONDON.R0000644000176200001440000001356614535302453014771 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # FUNCTION: DESCRIPTION: # holidayLONDON Returns holidays for British Bank Holidays ################################################################################ holidayLONDON <- function (year = getRmetricsOptions("currentYear")) { ## function implemented by Menon Murali; ## updated, corrected and refactored by GNB ## ignoring year <= 1833 as there wereno official holidays then y1834to1870 <- year[year >= 1834 & year <= 1870] y1871toInf <- year[year >= 1871] holidays <- list() # 2023-05-12 GNB was: NULL if(length(y1834to1870)) { ## 1 May, 1 November, Good Friday and Christmas are the ## only England Bank Holidays holidays <- list(holidays, paste0(y1834to1870, "-05-01"), paste0(y1834to1870, "-11-01"), GoodFriday(y1834to1870, ""), ChristmasDay(y1834to1870, "")) } if(length(y1871toInf)) { holidays <- list(holidays, GoodFriday(y1871toInf, ""), EasterMonday(y1871toInf, ""), GBSpringBankHoliday(y1871toInf, ""), GBSummerBankHoliday(y1871toInf, "") ) # Not entirely sure when Mon/Tue began to be given as # holiday when Christmas/Boxing Day fell on # Saturday/Sun. I'm assuming this was after the 1971 # Banking and Financial Dealings Act which established the # new holiday schedule. ## ## GNB: In practice, this is so but see below. ## ## The 1971 act declares 27th Dec to be bank holiday if 25th or ## 26th Dec is Sat or Sun but doesn't make provisions for 28th ## Dec. But 28th Dec seems to have been declared BH by ## Royal proclamations in all years ever since. ("seems" ## because I haven't seen the proclamations and am not sure if ## the calendars online for 40-50 years ago do not compute them ## assuming that this is by definition) ## ## Christmas and Boxing Day - add following Monday and/or Tuesday if any falls in ## the weekend ## ## GNB: the logic can be simplified by adding Christmas and Boxing days and the ## Mon/Tue where necessary. Sat/Sun are omitted at the end anyway. ## borderline 1969 needs checking y1871to1969 <- y1871toInf[flag1969 <- y1871toInf <= 1969] y1970toInf <- y1871toInf[!flag1969] if(length(y1871to1969)) { holidays <- list(holidays, ChristmasDay(y1871to1969, ""), BoxingDay(y1871to1969, "") ) } if(length(y1970toInf)) { xmas <- ChristmasDay(y1970toInf) posix1 <- as.POSIXlt(xmas) wd <- as.character(posix1$wday) f <- function(x, y) { switch(x, ## (posix1$wday == 0) # Christmas on Sunday "0" = as.character(ChristmasDay(y) + (1 : 2) * 86400), ## (posix1$wday == 6) # Christmas on Saturday "6" = as.character(ChristmasDay(y) + (2 : 3) * 86400), ## posix1$wday == 5) # Christmas on Friday ## the next Monday is a holiday "5" = as.character(ChristmasDay(y) + c(0, 3) * 86400), ## default 1,2,3,4 list(ChristmasDay(y, ""), BoxingDay(y, "")) ) } holidays <- list(holidays, .mapply(f, list(wd, y1970toInf), NULL) ) } y1974toInf <- y1970toInf[y1970toInf >= 1974] if(length(y1974toInf)) { ## New Year's Day: if it falls on Sat/Sun, then is ## moved to following Monday posix1 <- as.POSIXlt(NewYearsDay(y1974toInf)) weekend <- posix1$wday == 0 | posix1$wday == 6 holidays <- list(holidays, format..sdate(.on.or.after(y1974toInf[weekend], 1, 1, 1)), NewYearsDay(y1974toInf[!weekend], "") ) } ## Early May Bank Holiday year >= 1978 holidays <- list(holidays, GBEarlyMayBankHoliday(y1974toInf[y1974toInf >= 1978], ""), specialHolidayGB(y1974toInf, "") ) } holidays <- sort(unlist(holidays)) ans <- timeDate(holidays, zone = "London", FinCenter = "Europe/London") posix1 <- as.POSIXlt(ans, tz = "GMT") ans[!(posix1$wday == 0 | posix1$wday == 6)] # Remove any Saturdays/Sundays } timeDate/R/calendar-julian.R0000755000176200001440000000463614263246023015401 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # METHOD: DESCRIPTION: # julian,timeDate Returns Julian day counts since 1970-01-01 ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # setMethod("julian", "timeDate", function(x, origin = timeDate("1970-01-01"), units = c("auto", "secs", "mins", "hours", "days", "weeks"), zone = NULL, FinCenter = NULL, ...) { # A function implemented by Diethelm Wuertz # Description: # Extracts Julian time in days since 1970-01-01 # Arguments: # x - a 'timeDate' object # units - a character string, one of the units listed, # by default "secs". # Value: # Returns the number of days (possibly fractional) since # the origin. # Details: # The origin is "1970-01-01 00:00:00 GMT" # Set Timezone to GMT: # Check Class Type: stopifnot(is(x, "timeDate")) units = match.arg(units) # POSIX: if (is.null(zone)) zone = x@FinCenter if (is.null(FinCenter)) FinCenter = x@FinCenter ct = timeDate(x, zone = zone, FinCenter = FinCenter) # Difftime: if (is.null(origin)) origin = timeDate("1970-01-01", zone = "GMT", FinCenter = "GMT") res = difftimeDate(ct, origin, units = units) # Return Value: structure(res, origin = origin) }) ################################################################################ timeDate/R/base-rev.R0000755000176200001440000000325414263246023014047 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # MEHODS: DESCRIPTION: # rev.timeDate Reverts a 'timeDate' object ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # rev.timeDate <- function(x) { # A function implemented by Diethelm Wuertz and Yohan Chalabi # Description: # Reverts a 'timeDate' vector object. # Arguments: # x - a 'timeDate' object # Value: # Returns 'x' as a 'timeDate' object in reversed order. # FUNCTION: # Return Value: timeDate(rev(as.POSIXct(x)), zone = "GMT", FinCenter=x@FinCenter) } ################################################################################ timeDate/R/base-length.R0000755000176200001440000000413114263246023014527 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA # Copyrights (C) # for this R-port: # 1999 - Diethelm Wuertz, GPL # 2007 - Rmetrics Foundation, GPL # Diethelm Wuertz # www.rmetrics.org # for the code accessed (or partly included) from other R-ports: # see R's copyright and license files # for the code accessed (or partly included) from contributed R-ports # and other sources # see Rmetrics's copyright file ################################################################################ # MEHODS: DESCRIPTION: # length.timeDate Gets the length of a 'timeDate' object ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # length.timeDate <- function(x) { # A function implemented by Diethelm Wuertz # and improved by Yohan Chalabi # Description: # Gets the length of a 'timeDate' vector # Arguments: # x - a 'timeDate' object # Value: # Returns the lengths of an object of class 'timeDate'. # FUNCTION: # Length: ans <- length(getDataPart(x)) # Return Value: ans } ################################################################################ timeDate/R/methods-as.R0000755000176200001440000003140614263246023014407 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # METHOD: DESCRIPTION: # as.timeDate Implements Use Method # as.timeDate.default Default Method # as.timeDate.POSIXt Returns a 'POSIXt' object as 'timeDate' object # as.timeDate.Date Returns a 'Date' object as 'timeDate' object # as.character.timeDate Returns a 'timeDate' object as 'character' string # as.double.timeDate Returns a 'timeDate' object as 'numeric' object # as.data.frame.timeDate Returns a 'timeDate' object as 'data.frame' object # as.list.timeDate Returns a 'timeDate' object as 'list' object # as.POSIXct.timeDate Returns a 'timeDate' object as 'POSIXct' object # as.POSIXlt.timeDate Returns a 'timeDate' object as 'POSIXlt' object # as.Date.timeDate Returns a 'timeDate' object as 'Date' object ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # as.timeDate <- function(x, zone = NULL, FinCenter = NULL) { # A function implemented by Diethelm Wuertz and Yohan Chalabi UseMethod("as.timeDate") } # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # as.timeDate.default <- function(x, zone = "", FinCenter = "") { # A function implemented by Diethelm Wuertz and Yohan Chalabi # Description: # Returns default object as 'timeDate' object # Arguments: # x - a 'timeDate' object # Value: # Returns 'x' as a 'timeDate' object. # FUNCTION: # as timeDate: if (zone == "") zone <- getRmetricsOptions("myFinCenter") if (FinCenter == "") FinCenter <- getRmetricsOptions("myFinCenter") # Return Value: timeDate(as.character(x), zone = zone, FinCenter = FinCenter) } setAs("ANY", "timeDate", function(from) as.timeDate.default(from)) # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # as.timeDate.timeDate <- function(x, zone = x@FinCenter, FinCenter = "") { # A function implemented by Diethelm Wuertz and Yohan Chalabi # Description: # Returns default object as 'timeDate' object # Arguments: # x - a 'timeDate' object # Value: # Returns 'x' as a 'timeDate' object. stopifnot(is(x, "timeDate")) if (FinCenter == "") FinCenter <- getRmetricsOptions("myFinCenter") if (zone != x@FinCenter) warning("argument zone is ignored and FinCenter\n of timeDate is used as zone") ## FIXME : and now? 'zone' is *NOT* ignored! # Return as timeDate: timeDate(as.character(x), zone = zone, FinCenter = FinCenter) } # setAs("timeDate", "timeDate", function(from) as.timeDate.timeDate(from)) # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # as.timeDate.Date <- function(x, zone = "", FinCenter = "") { # A function implemented by Diethelm Wuertz and Yohan Chalabi # Description: # Returns a 'Date' object as 'timeDate' object # Arguments: # x - a 'Date' (or 'POSIXt') object # Value: # Returns 'x' as timeDate object. # FUNCTION: if (zone == "") zone <- getRmetricsOptions("myFinCenter") if (FinCenter == "") FinCenter <- getRmetricsOptions("myFinCenter") # Return as timeDate: timeDate(x, zone = zone, FinCenter = FinCenter) } setAs("Date", "timeDate", function(from) as.timeDate.Date(from)) # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # as.timeDate.POSIXt <- function(x, zone = "", FinCenter = "") { # A function implemented by Diethelm Wuertz and Yohan Chalabi timeDate(x, zone = zone, FinCenter = FinCenter) } setAs("POSIXt", "timeDate", function(from) as.timeDate.POSIXt(from)) # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # as.character.timeDate <- function(x, ...) { # A function implemented by Diethelm Wuertz and Yohan Chalabi format(x, ...) } setAs("timeDate", "character", function(from) as.character.timeDate(from)) # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # as.double.timeDate <- function(x, units = c("auto", "secs", "mins", "hours", "days", "weeks"), ...) { # A function implemented by Diethelm Wuertz and Yohan Chalabi # Description: # Returns a 'timeDate' object as 'numeric' vector # Arguments: # x - a 'timeDate' object # units - a character string denoting in which units the # elements of the numeric vector are measured # Value: # Returns 'x' as a numeric vector. # FUNCTION: units <- match.arg(units) if (units == "secs") { ans <- c(unclass(as.POSIXct(x))) } else { ct = as.POSIXct(x) origin = as.POSIXct("1970-01-01", tz = "GMT") dt = difftime(ct, origin, tz = "GMT", units = units) units <- attr(dt, "units") ans = as.double(dt) } attr(ans, "FinCenter") <- "GMT" attr(ans, "units") <- units attr(ans, "origin") <- switch(units, secs = "1970-01-01 00:00:00 GMT", mins = "1970-01-01 00:00 GMT", hours = "1970-01-01 00:00 GMT", days = "1970-01-01 GMT", weeks = "1970-01-01 GMT") # Return Value: ans } setAs("timeDate", "numeric", function(from) as.double.timeDate(from)) # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # as.data.frame.timeDate <- function(x, ...) { # A function implemented by Diethelm Wuertz and Yohan Chalabi # Description: # Returns a 'timeDate' object as data frame # Arguments: # x - a 'timeDate' object # Value: # Returns 'x' as a data frame. # FUNCTION: # Check Class Type: stopifnot(inherits(x, "timeDate")) # Data Frame: ans <- as.data.frame.POSIXlt(x@Data, ...) nm <- paste(deparse(substitute(x), width.cutoff = 500), collapse = " ") colnames(ans) <- paste0(x@FinCenter, ":", nm) attr(ans, "control") <- c(FinCenter = x@FinCenter) # Return Value: ans } setAs("timeDate", "data.frame", function(from) as.data.frame.timeDate(from)) # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # as.list.timeDate <- function(x, ...) { # A function implemented by Yohan Chalabi and Diethelm Wuertz # Description: # Returns a 'timeDate' object as list # important for functions like sapply and lapply # Arguments: # x - a 'timeDate' object # Value: # Returns 'x' as a data frame. # FUNCTION: # Check Class Type: stopifnot(inherits(x, "timeDate")) ans <- vector("list", length(x)) for (i in seq(length(x))) ans[i] <- x[i] # Return Value: ans } setAs("timeDate", "list", function(from) as.list.timeDate(from)) # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # as.POSIXct.timeDate <- function(x, tz = "", ...) { # A function implemented by Diethelm Wuertz and Yohan Chalabi # Description: # Returns a 'timeDate' object as POSIXct object # Arguments: # x - a 'timeDate' object # tz - a timezone specification to be used for the conversion. # (If tz is used, the method does not consider the # FinCenter of timeDate) # Value: # Returns 'x' as an object of class 'POSIXct'. # FUNCTION: # Check Class Type: if (!inherits(x, "timeDate")) stop("Wrong class type") # POSIXct: FinCenter <- finCenter(x) if (identical(tz, "")) { ans <- getDataPart(x) attr(ans, "control") <- c(FinCenter = finCenter(x)) } else { num <- .formatFinCenterNum(as.numeric(getDataPart(x)), FinCenter, type = "gmt2any") ans <- as.POSIXct(num, origin = "1970-01-01", tz = tz) attr(ans, "control") <- c(FinCenter = FinCenter) } # Return Value: ans } setAs("timeDate", "POSIXct", function(from) as.POSIXct.timeDate(from)) # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # as.POSIXlt.timeDate <- function(x, tz = "", ...) { # A function implemented by Diethelm Wuertz and Yohan Chalabi # Description: # Returns a 'timeDate' object as 'POSIXlt' object # Arguments: # x - a 'timeDate' object # tz - a timezone specification to be used for the conversion. # (If tz is used, the method does not consider the # FinCenter of timeDate) # Value: # Returns 'x' as an object of class 'POSIXct'. # Note: # be careful if S4 method are defined because arguments of generic # function has changed for as.POSIXlt since R-2.6 # FUNCTION: # Set Timezone to GMT: ans = as.POSIXlt(as.POSIXct(x = x, tz = tz)) # Return Value: ans } setAs("timeDate", "POSIXlt", function(from) as.POSIXlt.timeDate(from)) # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # as.Date.timeDate <- function(x, method = c("trunc", "round", "next"), ...) { # A function implemented by Diethelm Wuertz and Yohan Chalabi # Description: # Returns a 'timeDate' object as 'Date' object # Arguments: # x - a 'timeDate' object # method - a character string denoting the method how to # compute the 'Date' object. # Value: # Returns 'x' as an object of class 'POSIXct'. # FUNCTION: # as Date: method = match.arg(method) # Note: # # Note: one must be careful when converting to Date with tzone. # td <- timeDate("2008-12-11 00:00:01", zone = "Zurich", FinCenter = "Zurich") # ct <- td@Data # attr(ct, "tzone") <- "Europe/Zurich" # # ct and td should be identical # ct; td # # but # as.Date(ct) # trunc on previous day because trunc in GMT # as.Date(td) # trunc in the current FinCenter ! ans <- switch(method, trunc = as.Date(format(trunc(x)), ...), round = as.Date(format(round(x)), ...), "next" = as.Date(format(trunc(x)), ...) + 1) # Add Attribute: attr(ans, "control") <- c(method = method, FinCenter = x@FinCenter) # Return Value: ans } setAs("timeDate", "Date", function(from) as.Date.timeDate(from)) ################################################################################ timeDate/R/timeDate-midnightStandard.R0000644000176200001440000001650514535013732017362 0ustar liggesusers# This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA # Copyrights (C) # for this R-port: # 1999 - Diethelm Wuertz, GPL # 2007 - Rmetrics Foundation, GPL # Diethelm Wuertz # www.rmetrics.org # for the code accessed (or partly included) from other R-ports: # see R's copyright and license files # for the code accessed (or partly included) from contributed R-ports # and other sources # see Rmetrics's copyright file ################################################################################ # FUNCTION: DESCRIPTION: # midnightStandard Corrects midnight standard called by 'timeDate' ################################################################################ ## # YC :midnigStandard2 returns object in POSIXct and avoid ## # wasting time in strptime if(getRversion() < "2.15") { paste0 <- function(...) paste(..., sep = '') } midnightStandard2 <- function(charvec, format) { # A function written by Diethelm Wuertz # and entirely rewritten by Martin Maechler # modifications for speed improvement by Yohan Chalabi # Description: # Midnight Standard & conversion to isoFormat: # FUNCTION: if(all(is.na(charvec))) return(as.POSIXct(charvec)) ## Motivation: strptime() {et al} cannot deal with "24:00:00" ## In that case, subtract 1 seconds convert and re-add it # Missing Format: if (missing(format)) format <- whichFormat(charvec) ## convert to strptime and inspect NA's returned by strptime ans <- as.POSIXct(strptime(charvec, format, tz = "GMT")) ## 2023-12-09 GNB: was ## ## any(idx <- is.na(ans)) ## ## but this fails to recognise that NAs in 'ans' are not necessarily due to ## unsuccesful conversion - they may correspond to NAs in the input ## character vector. If there are any NA's in charvec, ## 'range(nchar(charvec))' below gives c(NA, NA), then 'if(rng.nch[1] != ## rng.nch[2])' throws the confusing error message below. ## if (any(idx <- is.na(ans) & !is.na(charvec))) { # inspect problematic dates charvec <- charvec[idx] # Format: rng.nch <- range(nchar(charvec)) if(rng.nch[1] != rng.nch[2]) stop("'charvec' has non-NA entries of different number of characters") nch <- rng.nch[1] n <- length(charvec) s <- numeric(n) ## Do two common formats *fast* (for large n), and then use ## flexible approach: # ISO-8601 Midnight Standard: if (length(grep("%H:%M:%S", format, fixed = TRUE)) == 1) { ii <- grep("24:00:00", charvec, fixed=TRUE, useBytes=TRUE) if (length(ii) > 0) { s[ii] <- 1 charvec[ii] <- gsub("24:00:00", "23:59:59", charvec[ii], fixed=TRUE) } } else if (length(grep("%H%M%S$", format)) == 1) { ## format *ends* in %H%M%S, i.e. last 6 chars are time ch.time <- substr(charvec, nch-6+1, nch) if (length(ii <- grep("240000$", ch.time)) > 0) { s[ii] <- 1 charvec[ii] <- paste(substr(charvec[ii], 1, nch-6), gsub("240000$", "235959", ch.time[ii]), sep = "") } } else { ## Very general approach, to work for any valid format: forms <- c("%Y", "%m", "%d", "%H","%M","%S") nums <- c("2003","01","31", "23","59","58") # pairwise different fDate <- format for(i in seq_along(forms)) { ## make sure, we don't have nums[i] already : if(length(grep(nums[i], fDate, fixed=TRUE))) fDate <- gsub(nums[i], paste(rep("x", nchar(nums[i])), collapse=""), fDate, fixed=TRUE) fDate <- sub(forms[i], nums[i], fDate, fixed=TRUE) } ## in the ISO case, now have fDate == "2001-01-31 23:59:58" names(nums) <- forms ## at which character positions in charvec do I need to look for %H, ... : iHMS <- sapply(nums[c("%H","%M","%S")], regexpr, text=fDate, fixed=TRUE) if(iHMS["%H"] >= 1) { ## have "%H" -- otherwise, nothing to do! has.S <- iHMS["%S"] >= 1 has.M <- iHMS["%M"] >= 1 if(has.S && !has.M) stop("invalid format: has '%S' but no '%M'") ## 3 remaining cases: (H,M,S), (H,M), (H) m. <- 1 + has.M + has.S # in {1,2,3} HMStab <- matrix(unlist(lapply(iHMS[seq_len(m.)], function(ic) substr(charvec, start=ic, stop=ic+1L))), n, m.) twenty4 <- paste0("24", if(has.M)"00", if(has.S)"00") isMidN <- twenty4 == apply(HMStab, 1, paste, collapse='') if(any(isMidN)) { ## need midnight correction s[isMidN] <- 1 ## now *need* seconds, so we can subtract and add 1 sec : if(!has.S) { if(!has.M) { iHMS["%M"] <- nchar(fDate) + 1 format <- paste0(format, "%M") fDate <- paste0(fDate, "00") charvec <- paste0(charvec, "00") } iHMS["%S"] <- nchar(fDate) + 1 format <- paste0(format, "%S") charvec <- paste0(charvec, "00") } substr(charvec[isMidN], iHMS["%H"], iHMS["%H"]+1) <- "23" substr(charvec[isMidN], iHMS["%M"], iHMS["%M"]+1) <- "59" substr(charvec[isMidN], iHMS["%S"], iHMS["%S"]+1) <- "59" } } } ## Convert "charvec" to standard ISO format: ## YC: added tz = "GMT" to avoid confusion when DST is active ans[idx] <- s + as.POSIXct(strptime(charvec, format, tz = "GMT")) } # Return Value: ans } midnightStandard <- function(charvec, format) { # YC: uses now the faster midngithStandard2() function # but still return a character # Description: # Midnight Standard & conversion to isoFormat: # FUNCTION: # Missing Format: if (missing(format)) format <- whichFormat(charvec) ans <- midnightStandard2(charvec, format = format) ans <- format(ans, format = "%Y-%m-%d %H:%M:%S") # Return Value: ans } ################################################################################ timeDate/R/holiday-NYSE.R0000755000176200001440000002005114536366552014557 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # FUNCTION: DESCRIPTION: # holidayNYSE Returns holidays for full-day NYSE calendar ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # holidayNYSE <- function(year = getRmetricsOptions("currentYear"), type = c("", "standard", "special")) { # A function implemented by Diethelm Wuertz; # improved speed and handling of time zone by Yohan Chalabi; # special closings and argument 'type' incorporated by Georgi Boshnakov # Description: # Returns 'timeDate' object for full-day NYSE holidays # Arguments: # year - an integer variable or vector for the year(s) # ISO-8601 formatted as "CCYY" where easter or # easter related feasts should be computed. # Value: # Returns the holiday calendar for the NYSE formatted as # 'timeDate' object. # Details: # The "New York Stock Exchange" calendar starts from year 1885. # The rules are listed at the web site http://www.nyse.com. # Example: # > holiday.NYSE(2004) # [1] "America/New_York" # [1] [2004-01-01] [2004-01-19] [2004-02-16] [2004-04-09] # [5] [2004-05-31] [2004-07-05] [2004-09-06] [2004-11-25] # FUNCTION: ## Settings: type <- match.arg(type) ans <- NULL if(type == "" || type == "standard"){ ## standard holidays ## ## Note by GNB at time of introducing argument 'type': ## only change in this chunk is wrapping the old code in 'if' holidays <- character(0) ## Iterate years: for (y in year ) { if (y >= 1885) holidays <- c(holidays, as.character(USNewYearsDay(y))) if (y >= 1885) holidays <- c(holidays, as.character(USIndependenceDay(y))) if (y >= 1885) holidays <- c(holidays, as.character(USThanksgivingDay(y))) if (y >= 1885) holidays <- c(holidays, as.character(USChristmasDay(y))) if (y >= 1887) holidays <- c(holidays, as.character(USLaborDay(y))) if (y != 1898 & y != 1906 & y != 1907) holidays <- c(holidays, as.character(USGoodFriday(y))) if (y >= 1909 & y <= 1953) holidays <- c(holidays, as.character(USColumbusDay(y))) if (y >= 1998) holidays <- c(holidays, as.character(USMLKingsBirthday(y))) if (y >= 1896 & y <= 1953) holidays <- c(holidays, as.character(USLincolnsBirthday(y))) if (y <= 1970) holidays <- c(holidays, as.character(USWashingtonsBirthday(y))) if (y > 1970) holidays <- c(holidays, as.character(USPresidentsDay(y))) if (y == 1918 | y == 1921 | (y >= 1934 & y <= 1953)) holidays <- c(holidays, as.character(USVeteransDay(y))) if (y <= 1968 | y == 1972 | y == 1976 | y == 1980) holidays <- c(holidays, as.character(USElectionDay(y))) if (y <= 1970) holidays <- c(holidays, as.character(USDecorationMemorialDay(y))) if (y >= 1971) holidays <- c(holidays, as.character(USMemorialDay(y))) if (y >= 2022) # GB, issue #6755 holidays <- c(holidays, as.character(USJuneteenthNationalIndependenceDay(y))) } # Sort and Convert to 'timeDate': holidays <- sort(holidays) ans <- timeDate(format(holidays), zone = "NewYork", FinCenter = "NewYork") # Move Sunday Holidays to Monday: posix1 <- as.POSIXlt(ans, tz = "GMT") ans <- ans + as.integer(posix1$wday==0) * 24 * 3600 # After July 3, 1959, move Saturday holidays to Friday # ... except if at the end of monthly/yearly accounting period # this is the last business day of a month. posix2 <- as.POSIXlt(as.POSIXct(ans, tz = "GMT") - 24 * 3600) y <- posix2$year + 1900 m <- posix2$mon + 1 calendar <- timeCalendar(y = y+(m+1)%/%13, m = m+1-(m+1)%/%13*12, d = 1, zone = "GMT", FinCenter = "GMT") lastday <- as.POSIXlt(calendar - 24*3600, tz = "GMT")$mday lon <- .last.of.nday(year = y, month = m, lastday = lastday, nday = 5) ExceptOnLastFriday <- timeDate(format(lon), zone = "NewYork", FinCenter = "NewYork") ans <- ans - as.integer(ans >= timeDate("1959-07-03", zone ="GMT", FinCenter = "GMT") & as.POSIXlt(ans, tz = "GMT")$wday == 6 & (ans - 24*3600) != ExceptOnLastFriday ) * 24 * 3600 } if(type == "" || type == "special"){ ## special closings sp <- nyse_special_closings[as.integer(format(nyse_special_closings, format = "%Y")) %in% year] ans <- unique(sort(if(is.null(ans)) sp else c(ans, sp))) } # Remove Remaining Weekend Dates: posix3 <- as.POSIXlt(ans, tz = "GMT") ans <- ans[ !(posix3$wday == 0 | posix3$wday == 6)] # Return Value: ans } ################################################################################ ## GNB ## TODO: need care with time zones? .reset_time <- function(x, hms) { timeDate(paste(format(x, format = "%Y-%m-%d"), hms)) } ## Author: Georgi N. Boshnakov earlyCloseNYSE <- function(year) { year1 <- year >= 2012 res <- timeDate() if(length(year1)) { ## Thanksgiving thanks <- USThanksgivingDay(year) ## this should be computed more robustly ## but the date is end of November, little risk for DST problems, etc. thanks_p1 <- thanks + 86400 ## 24 * 60 * 60 # always Friday ## indep <- USIndependenceDay(year) # July 4 ## day before Independence day indep_m1 <- timeDate(paste0(year, "-07-03", " ", "13:00:00")) # July 3 indep_m1 <- indep_m1[!(dayOfWeek(indep_m1) %in% c("Sat", "Sun"))] ## Christmas Eve xmas <- ChristmasDay(year) eve <- ChristmasEve(year) eve <- eve[!(dayOfWeek(xmas) %in% c("Mon", "Sat", "Sun"))] ## take care of empty vectors ## unfortunately, currently timeDate(character0)) gives a timeDate of length 1 (NA) res <- c(thanks_p1, indep_m1, eve) if(length(res) > 1 || length(res) == 1 && !is.na(res)) { res <- res[!is.na(res)] res <- .reset_time(res, "13:00:00") res <- sort(res) } } db_years <- (as.numeric(format(early_close, "%Y"))) if(any(flags <- db_years %in% year)) if(length(res) == 1 && is.na(res)) ## res is empty res <- early_close[flags] ## assumed sorted in the db else res <- unique(sort(c(early_close[flags], res))) res } timeDate/R/calendar-dayOfWeek.R0000755000176200001440000000536414263246023015774 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # FUNCTION: DESCRIPTION: # dayOfWeek Returns the day of the week to a 'timeDate' object # dayOfYear Returns the day of the year to a 'timeDate' object ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # dayOfWeek <- function(x) { # A function implemented by Diethelm Wuertz # and modified by Yohan Chalabi # Description: # Returns day of week for time date objects # Arguments: # x - an object of class "timeDate" # Example: # weekDay(Sys.timeDate()) # weekDay(timeSequence("2005-05-15", "2005-07-15")) # FUNCTION: stopifnot(inherits(x, "timeDate")) # Get Day of Week: wd <- c("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat") n <- as.POSIXlt(x, tz = "GMT")$wday + 1 wdays <- wd[n] names(wdays) <- format(x) # Return Value: wdays } ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # dayOfYear <- function(x) { # A function implemented by Diethelm Wuertz # and modified by Yohan Chalabi # Description: # Returns day of week for time date objects # Arguments: # x - an object of class "timeDate" # FUNCTION: stopifnot(inherits(x, "timeDate")) # Assign: x <- as.POSIXlt(x, tz = "GMT") yd <- 1:366 n <- x$yday + 1 ydays <- yd[n] names(ydays) <- format(x) # Return Value: ydays } ################################################################################ timeDate/R/stats-blockStart.R0000755000176200001440000000465614263246023015616 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # MEHODS: DESCRIPTION: # blockStart Creates start dates for equally sized blocks # blockEnd Creates end dates for equally sized blocks ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # blockStart <- function(x, block = 20) { # A function implemented by Diethelm Wuertz # Description: # Computes start dates for numeric blocks of dates # Example: # blockEnd(timeSequence(), block = 30) # FUNCTION: # Start Dates of Blocks: nx = length(as.character(x)) fromIdx = seq(1, nx, by = block) from = x[fromIdx] # Return Value: from } # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # blockEnd <- function(x, block = 20) { # A function implemented by Diethelm Wuertz # Description: # Computes start dates for numeric blocks of dates # Example: # blockEnd(timeSequence(), block = 30) # FUNCTION: # End Dates of Blocks: nx = length(as.character(x)) fromIdx = seq(1, nx, by = block) toIdx = c(fromIdx[-1]-1, nx) to = x[toIdx] # Return Value: to } ################################################################################ timeDate/R/timeDate-DaylightSavingTime.R0000755000176200001440000142447414346415531017651 0ustar liggesusers################################################################################ ## This file was auto-generated by create_dst_file_new() tzdb_cache <- new.env() "Abidjan" <- function() { if(!is.null(tzdb_cache[["Abidjan"]])) return(tzdb_cache[["Abidjan"]]) ind <- 214L res <- all_tz_rows[ind, ] colnames(res)[1] <- "Abidjan" rownames(res) <- NULL tzdb_cache[["Abidjan"]] <- res res } "Algiers" <- function() { if(!is.null(tzdb_cache[["Algiers"]])) return(tzdb_cache[["Algiers"]]) ind <- c(90L, 202L, 262L, 282L, 299L, 311L, 325L, 355L, 377L, 412L, 443L, 475L, 490L, 507L, 1150L, 1170L, 1181L, 1441L, 1469L, 1485L, 1533L, 1623L, 2063L, 2361L, 2745L, 2752L, 3198L, 3232L, 3268L, 3376L, 3424L, 3482L, 3528L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Algiers" rownames(res) <- NULL tzdb_cache[["Algiers"]] <- res res } "Bissau" <- function() { if(!is.null(tzdb_cache[["Bissau"]])) return(tzdb_cache[["Bissau"]]) ind <- c(215L, 2977L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Bissau" rownames(res) <- NULL tzdb_cache[["Bissau"]] <- res res } "Cairo" <- function() { if(!is.null(tzdb_cache[["Cairo"]])) return(tzdb_cache[["Cairo"]]) ind <- c(151L, 1210L, 1222L, 1251L, 1275L, 1325L, 1369L, 1389L, 1421L, 1435L, 1475L, 1492L, 1560L, 2127L, 2140L, 2169L, 2178L, 2207L, 2217L, 2256L, 2262L, 2296L, 2304L, 2335L, 2338L, 2368L, 2374L, 2417L, 2423L, 2469L, 2474L, 2517L, 2522L, 2561L, 2575L, 2609L, 2616L, 2653L, 2662L, 2701L, 2708L, 2747L, 2754L, 2799L, 2808L, 2854L, 2866L, 2929L, 2945L, 3016L, 3028L, 3087L, 3104L, 3168L, 3189L, 3253L, 3273L, 3342L, 3365L, 3435L, 3457L, 3527L, 3552L, 3630L, 3653L, 3734L, 3762L, 3839L, 3870L, 3947L, 3978L, 4068L, 4099L, 4191L, 4225L, 4319L, 4355L, 4447L, 4481L, 4576L, 4605L, 4699L, 4739L, 4853L, 4887L, 4982L, 5015L, 5102L, 5134L, 5220L, 5252L, 5339L, 5346L, 5460L, 5466L, 5574L, 5582L, 5691L, 5698L, 5809L, 5816L, 5928L, 5938L, 6055L, 6061L, 6173L, 6178L, 6290L, 6308L, 6416L, 6424L, 6533L, 6540L, 6652L, 6655L, 6771L, 6776L, 6892L, 6895L, 7015L, 7018L, 7021L, 7027L, 7401L, 7402L, 7404L, 7410L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Cairo" rownames(res) <- NULL tzdb_cache[["Cairo"]] <- res res } "Casablanca" <- function() { if(!is.null(tzdb_cache[["Casablanca"]])) return(tzdb_cache[["Casablanca"]]) ind <- c(227L, 1151L, 1168L, 1178L, 1568L, 1817L, 1839L, 2564L, 2572L, 2934L, 2937L, 3088L, 3096L, 3169L, 3186L, 3259L, 3262L, 3799L, 4008L, 6773L, 6778L, 6893L, 6896L, 7016L, 7017L, 7123L, 7130L, 7222L, 7225L, 7226L, 7236L, 7309L, 7312L, 7313L, 7343L, 7388L, 7403L, 7405L, 7446L, 7497L, 7507L, 7508L, 7537L, 7587L, 7604L, 7605L, 7638L, 7681L, 7695L, 7696L, 7724L, 7767L, 7779L, 7808L, 7866L, 7867L, 7945L, 7946L, 8025L, 8026L, 8086L, 8098L, 8144L, 8166L, 8197L, 8228L, 8259L, 8288L, 8321L, 8332L, 8383L, 8384L, 8445L, 8446L, 8507L, 8508L, 8569L, 8570L, 8631L, 8632L, 8693L, 8694L, 8755L, 8756L, 8817L, 8818L, 8869L, 8880L, 8931L, 8942L, 8982L, 9004L, 9043L, 9066L, 9101L, 9118L, 9161L, 9169L, 9221L, 9231L, 9283L, 9288L, 9345L, 9348L, 9407L, 9410L, 9469L, 9470L, 9531L, 9532L, 9593L, 9594L, 9655L, 9656L, 9717L, 9718L, 9779L, 9780L, 9841L, 9842L, 9903L, 9904L, 9965L, 9966L, 10027L, 10028L, 10087L, 10090L, 10142L, 10152L, 10183L, 10214L, 10245L, 10274L, 10307L, 10330L, 10369L, 10380L, 10431L, 10432L, 10493L, 10494L, 10555L, 10556L, 10617L, 10618L, 10679L, 10680L, 10741L, 10742L, 10803L, 10804L, 10865L, 10866L, 10917L, 10928L, 10968L, 10990L, 11030L, 11052L, 11091L, 11114L, 11147L, 11166L, 11209L, 11217L, 11269L, 11279L, 11331L, 11336L, 11393L, 11396L, 11455L, 11456L, 11517L, 11518L, 11579L, 11580L, 11641L, 11642L, 11703L, 11704L, 11765L, 11766L, 11827L, 11828L, 11889L, 11890L, 11951L, 11952L, 12013L, 12014L, 12075L, 12076L, 12129L, 12138L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Casablanca" rownames(res) <- NULL tzdb_cache[["Casablanca"]] <- res res } "Ceuta" <- function() { if(!is.null(tzdb_cache[["Ceuta"]])) return(tzdb_cache[["Ceuta"]]) ind <- c(161L, 343L, 357L, 590L, 630L, 661L, 677L, 684L, 701L, 713L, 729L, 2565L, 2573L, 2935L, 2938L, 3089L, 3097L, 3170L, 3187L, 3260L, 3263L, 3800L, 4045L, 4093L, 4162L, 4216L, 4294L, 4347L, 4422L, 4473L, 4549L, 4599L, 4671L, 4731L, 4826L, 4880L, 4957L, 5009L, 5076L, 5128L, 5194L, 5247L, 5313L, 5382L, 5434L, 5502L, 5551L, 5616L, 5665L, 5730L, 5784L, 5852L, 5903L, 5976L, 6030L, 6096L, 6149L, 6214L, 6265L, 6338L, 6389L, 6458L, 6503L, 6573L, 6635L, 6687L, 6749L, 6810L, 6873L, 6929L, 6993L, 7053L, 7105L, 7160L, 7201L, 7249L, 7292L, 7335L, 7380L, 7438L, 7489L, 7529L, 7579L, 7630L, 7673L, 7716L, 7759L, 7800L, 7848L, 7886L, 7926L, 7963L, 8005L, 8042L, 8078L, 8113L, 8149L, 8180L, 8213L, 8242L, 8275L, 8304L, 8338L, 8366L, 8399L, 8428L, 8461L, 8490L, 8523L, 8552L, 8586L, 8614L, 8648L, 8676L, 8709L, 8738L, 8771L, 8800L, 8833L, 8862L, 8895L, 8924L, 8958L, 8987L, 9020L, 9049L, 9081L, 9111L, 9143L, 9174L, 9205L, 9236L, 9268L, 9298L, 9330L, 9360L, 9392L, 9422L, 9453L, 9484L, 9515L, 9546L, 9577L, 9608L, 9640L, 9670L, 9702L, 9732L, 9763L, 9794L, 9825L, 9856L, 9887L, 9918L, 9950L, 9980L, 10012L, 10042L, 10074L, 10104L, 10135L, 10166L, 10198L, 10228L, 10260L, 10290L, 10323L, 10352L, 10386L, 10414L, 10447L, 10476L, 10509L, 10538L, 10571L, 10600L, 10633L, 10662L, 10696L, 10724L, 10758L, 10786L, 10819L, 10848L, 10881L, 10910L, 10943L, 10973L, 11006L, 11035L, 11068L, 11097L, 11130L, 11159L, 11191L, 11222L, 11253L, 11284L, 11315L, 11346L, 11378L, 11408L, 11440L, 11470L, 11501L, 11532L, 11563L, 11594L, 11625L, 11656L, 11688L, 11718L, 11750L, 11780L, 11812L, 11842L, 11873L, 11904L, 11935L, 11966L, 11997L, 12028L, 12060L, 12090L, 12122L, 12152L, 12183L, 12212L, 12243L, 12272L, 12303L, 12332L, 12363L, 12392L, 12424L, 12452L, 12484L, 12512L, 12543L, 12572L, 12603L, 12632L, 12663L, 12692L, 12724L, 12752L, 12784L, 12812L, 12844L, 12872L ) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Ceuta" rownames(res) <- NULL tzdb_cache[["Ceuta"]] <- res res } "El_Aaiun" <- function() { if(!is.null(tzdb_cache[["El_Aaiun"]])) return(tzdb_cache[["El_Aaiun"]]) ind <- c(934L, 3071L, 3088L, 3096L, 3169L, 3186L, 3259L, 3262L, 6773L, 6778L, 6893L, 6896L, 7016L, 7017L, 7123L, 7130L, 7222L, 7225L, 7226L, 7236L, 7309L, 7312L, 7313L, 7343L, 7388L, 7403L, 7405L, 7446L, 7497L, 7507L, 7508L, 7537L, 7587L, 7604L, 7605L, 7638L, 7681L, 7695L, 7696L, 7724L, 7767L, 7779L, 7808L, 7866L, 7867L, 7945L, 7946L, 8025L, 8026L, 8086L, 8098L, 8144L, 8166L, 8197L, 8228L, 8259L, 8288L, 8321L, 8332L, 8383L, 8384L, 8445L, 8446L, 8507L, 8508L, 8569L, 8570L, 8631L, 8632L, 8693L, 8694L, 8755L, 8756L, 8817L, 8818L, 8869L, 8880L, 8931L, 8942L, 8982L, 9004L, 9043L, 9066L, 9101L, 9118L, 9161L, 9169L, 9221L, 9231L, 9283L, 9288L, 9345L, 9348L, 9407L, 9410L, 9469L, 9470L, 9531L, 9532L, 9593L, 9594L, 9655L, 9656L, 9717L, 9718L, 9779L, 9780L, 9841L, 9842L, 9903L, 9904L, 9965L, 9966L, 10027L, 10028L, 10087L, 10090L, 10142L, 10152L, 10183L, 10214L, 10245L, 10274L, 10307L, 10330L, 10369L, 10380L, 10431L, 10432L, 10493L, 10494L, 10555L, 10556L, 10617L, 10618L, 10679L, 10680L, 10741L, 10742L, 10803L, 10804L, 10865L, 10866L, 10917L, 10928L, 10968L, 10990L, 11030L, 11052L, 11091L, 11114L, 11147L, 11166L, 11209L, 11217L, 11269L, 11279L, 11331L, 11336L, 11393L, 11396L, 11455L, 11456L, 11517L, 11518L, 11579L, 11580L, 11641L, 11642L, 11703L, 11704L, 11765L, 11766L, 11827L, 11828L, 11889L, 11890L, 11951L, 11952L, 12013L, 12014L, 12075L, 12076L, 12129L, 12138L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "El_Aaiun" rownames(res) <- NULL tzdb_cache[["El_Aaiun"]] <- res res } "Johannesburg" <- function() { if(!is.null(tzdb_cache[["Johannesburg"]])) return(tzdb_cache[["Johannesburg"]]) ind <- c(94L, 169L, 1357L, 1381L, 1408L, 1432L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Johannesburg" rownames(res) <- NULL tzdb_cache[["Johannesburg"]] <- res res } "Juba" <- function() { if(!is.null(tzdb_cache[["Juba"]])) return(tzdb_cache[["Juba"]]) ind <- c(806L, 2700L, 2711L, 2746L, 2757L, 2787L, 2811L, 2841L, 2868L, 2920L, 2952L, 3007L, 3035L, 3075L, 3111L, 3155L, 3195L, 3242L, 3282L, 3330L, 3373L, 3425L, 3463L, 3516L, 3556L, 3616L, 3660L, 3721L, 3768L, 3827L, 3876L, 3936L, 3983L, 5751L, 7988L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Juba" rownames(res) <- NULL tzdb_cache[["Juba"]] <- res res } "Khartoum" <- function() { if(!is.null(tzdb_cache[["Khartoum"]])) return(tzdb_cache[["Khartoum"]]) ind <- c(805L, 2700L, 2711L, 2746L, 2757L, 2787L, 2811L, 2841L, 2868L, 2920L, 2952L, 3007L, 3035L, 3075L, 3111L, 3155L, 3195L, 3242L, 3282L, 3330L, 3373L, 3425L, 3463L, 3516L, 3556L, 3616L, 3660L, 3721L, 3768L, 3827L, 3876L, 3936L, 3983L, 5751L, 7727L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Khartoum" rownames(res) <- NULL tzdb_cache[["Khartoum"]] <- res res } "Lagos" <- function() { if(!is.null(tzdb_cache[["Lagos"]])) return(tzdb_cache[["Lagos"]]) ind <- c(174L, 195L, 229L, 404L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Lagos" rownames(res) <- NULL tzdb_cache[["Lagos"]] <- res res } "Maputo" <- function() { if(!is.null(tzdb_cache[["Maputo"]])) return(tzdb_cache[["Maputo"]]) ind <- 168L res <- all_tz_rows[ind, ] colnames(res)[1] <- "Maputo" rownames(res) <- NULL tzdb_cache[["Maputo"]] <- res res } "Monrovia" <- function() { if(!is.null(tzdb_cache[["Monrovia"]])) return(tzdb_cache[["Monrovia"]]) ind <- c(47L, 374L, 2776L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Monrovia" rownames(res) <- NULL tzdb_cache[["Monrovia"]] <- res res } "Nairobi" <- function() { if(!is.null(tzdb_cache[["Nairobi"]])) return(tzdb_cache[["Nairobi"]]) ind <- c(193L, 723L, 765L, 1042L, 1343L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Nairobi" rownames(res) <- NULL tzdb_cache[["Nairobi"]] <- res res } "Ndjamena" <- function() { if(!is.null(tzdb_cache[["Ndjamena"]])) return(tzdb_cache[["Ndjamena"]]) ind <- c(211L, 3369L, 3400L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Ndjamena" rownames(res) <- NULL tzdb_cache[["Ndjamena"]] <- res res } "Sao_Tome" <- function() { if(!is.null(tzdb_cache[["Sao_Tome"]])) return(tzdb_cache[["Sao_Tome"]]) ind <- c(54L, 212L, 7739L, 7826L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Sao_Tome" rownames(res) <- NULL tzdb_cache[["Sao_Tome"]] <- res res } "Tripoli" <- function() { if(!is.null(tzdb_cache[["Tripoli"]])) return(tzdb_cache[["Tripoli"]]) ind <- c(438L, 1887L, 1896L, 1977L, 1980L, 2050L, 2062L, 2189L, 3577L, 3611L, 3652L, 3717L, 3760L, 3824L, 3868L, 3933L, 3977L, 4056L, 4102L, 4170L, 4224L, 4303L, 4354L, 4431L, 4479L, 4578L, 5353L, 5473L, 7269L, 7287L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Tripoli" rownames(res) <- NULL tzdb_cache[["Tripoli"]] <- res res } "Tunis" <- function() { if(!is.null(tzdb_cache[["Tunis"]])) return(tzdb_cache[["Tunis"]]) ind <- c(46L, 203L, 1136L, 1167L, 1185L, 1287L, 1315L, 1372L, 1387L, 1394L, 1399L, 1414L, 1441L, 1467L, 1485L, 1532L, 3166L, 3178L, 3254L, 3272L, 4323L, 4342L, 4417L, 4468L, 4577L, 4595L, 6417L, 6426L, 6503L, 6573L, 6635L, 6687L, 6749L, 6810L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Tunis" rownames(res) <- NULL tzdb_cache[["Tunis"]] <- res res } "Windhoek" <- function() { if(!is.null(tzdb_cache[["Windhoek"]])) return(tzdb_cache[["Windhoek"]]) ind <- c(95L, 169L, 1357L, 4528L, 5057L, 5104L, 5204L, 5223L, 5325L, 5341L, 5446L, 5461L, 5562L, 5578L, 5676L, 5694L, 5794L, 5812L, 5912L, 5934L, 6040L, 6057L, 6158L, 6174L, 6275L, 6299L, 6401L, 6418L, 6518L, 6538L, 6646L, 6653L, 6766L, 6779L, 6886L, 6898L, 7007L, 7019L, 7124L, 7135L, 7217L, 7227L, 7306L, 7314L, 7396L, 7406L, 7504L, 7510L, 7596L, 7609L, 7690L, 7699L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Windhoek" rownames(res) <- NULL tzdb_cache[["Windhoek"]] <- res res } "Adak" <- function() { if(!is.null(tzdb_cache[["Adak"]])) return(tzdb_cache[["Adak"]]) ind <- c(11L, 148L, 1507L, 2550L, 2652L, 2678L, 2699L, 2726L, 2744L, 2775L, 2798L, 2830L, 2852L, 2885L, 2899L, 2972L, 2987L, 3054L, 3085L, 3131L, 3165L, 3215L, 3252L, 3300L, 3341L, 3393L, 3434L, 3481L, 3526L, 3574L, 3625L, 3678L, 3788L, 3837L, 3895L, 3945L, 4002L, 4066L, 4129L, 4183L, 4257L, 4315L, 4384L, 4443L, 4509L, 4571L, 4632L, 4694L, 4771L, 4847L, 4918L, 4979L, 5042L, 5098L, 5160L, 5216L, 5278L, 5337L, 5400L, 5458L, 5519L, 5572L, 5634L, 5688L, 5749L, 5805L, 5871L, 5924L, 5994L, 6052L, 6114L, 6170L, 6232L, 6286L, 6355L, 6412L, 6477L, 6530L, 6592L, 6613L, 6710L, 6727L, 6834L, 6849L, 6953L, 6971L, 7074L, 7088L, 7178L, 7196L, 7268L, 7283L, 7355L, 7371L, 7461L, 7478L, 7552L, 7566L, 7652L, 7667L, 7738L, 7753L, 7824L, 7840L, 7905L, 7918L, 7984L, 7998L, 8061L, 8072L, 8133L, 8143L, 8196L, 8207L, 8258L, 8269L, 8320L, 8331L, 8382L, 8394L, 8444L, 8456L, 8506L, 8518L, 8568L, 8580L, 8630L, 8642L, 8692L, 8704L, 8754L, 8766L, 8816L, 8828L, 8879L, 8890L, 8941L, 8952L, 9003L, 9014L, 9065L, 9076L, 9128L, 9138L, 9190L, 9200L, 9252L, 9262L, 9314L, 9324L, 9376L, 9386L, 9438L, 9448L, 9500L, 9510L, 9562L, 9572L, 9624L, 9634L, 9686L, 9696L, 9748L, 9758L, 9810L, 9820L, 9872L, 9882L, 9934L, 9944L, 9996L, 10006L, 10058L, 10068L, 10120L, 10130L, 10182L, 10193L, 10244L, 10255L, 10306L, 10317L, 10368L, 10379L, 10430L, 10442L, 10492L, 10504L, 10554L, 10566L, 10616L, 10628L, 10678L, 10690L, 10740L, 10752L, 10802L, 10814L, 10864L, 10876L, 10927L, 10938L, 10989L, 11000L, 11051L, 11062L, 11113L, 11124L, 11176L, 11186L, 11238L, 11248L, 11300L, 11310L, 11362L, 11372L, 11424L, 11434L, 11486L, 11496L, 11548L, 11558L, 11610L, 11620L, 11672L, 11682L, 11734L, 11744L, 11796L, 11806L, 11858L, 11868L, 11920L, 11930L, 11982L, 11992L, 12044L, 12054L, 12106L, 12116L, 12168L, 12178L, 12228L, 12238L, 12288L, 12298L, 12348L, 12358L, 12408L, 12418L, 12468L, 12478L, 12528L, 12538L, 12588L, 12598L, 12648L, 12658L, 12708L, 12718L, 12768L, 12778L, 12828L, 12838L, 12888L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Adak" rownames(res) <- NULL tzdb_cache[["Adak"]] <- res res } "Anchorage" <- function() { if(!is.null(tzdb_cache[["Anchorage"]])) return(tzdb_cache[["Anchorage"]]) ind <- c(12L, 146L, 1508L, 2549L, 2651L, 2677L, 2698L, 2725L, 2743L, 2774L, 2797L, 2829L, 2851L, 2884L, 2898L, 2971L, 2986L, 3053L, 3084L, 3130L, 3164L, 3214L, 3251L, 3299L, 3340L, 3392L, 3433L, 3480L, 3525L, 3573L, 3624L, 3677L, 3787L, 3836L, 3893L, 3944L, 4000L, 4065L, 4127L, 4182L, 4255L, 4314L, 4382L, 4442L, 4507L, 4570L, 4630L, 4693L, 4770L, 4846L, 4917L, 4978L, 5041L, 5097L, 5159L, 5215L, 5277L, 5336L, 5399L, 5457L, 5518L, 5571L, 5633L, 5687L, 5748L, 5804L, 5870L, 5923L, 5993L, 6051L, 6113L, 6169L, 6231L, 6285L, 6354L, 6411L, 6476L, 6529L, 6591L, 6612L, 6709L, 6726L, 6833L, 6848L, 6952L, 6970L, 7073L, 7087L, 7177L, 7195L, 7267L, 7282L, 7354L, 7370L, 7460L, 7477L, 7551L, 7565L, 7651L, 7666L, 7737L, 7752L, 7822L, 7839L, 7904L, 7917L, 7983L, 7997L, 8060L, 8071L, 8132L, 8142L, 8195L, 8206L, 8257L, 8268L, 8319L, 8330L, 8381L, 8393L, 8443L, 8455L, 8505L, 8517L, 8567L, 8579L, 8629L, 8641L, 8691L, 8703L, 8753L, 8765L, 8815L, 8827L, 8878L, 8889L, 8940L, 8951L, 9002L, 9013L, 9064L, 9075L, 9127L, 9137L, 9189L, 9199L, 9251L, 9261L, 9313L, 9323L, 9375L, 9385L, 9437L, 9447L, 9499L, 9509L, 9561L, 9571L, 9623L, 9633L, 9685L, 9695L, 9747L, 9757L, 9809L, 9819L, 9871L, 9881L, 9933L, 9943L, 9995L, 10005L, 10057L, 10067L, 10119L, 10129L, 10181L, 10192L, 10243L, 10254L, 10305L, 10316L, 10367L, 10378L, 10429L, 10441L, 10491L, 10503L, 10553L, 10565L, 10615L, 10627L, 10677L, 10689L, 10739L, 10751L, 10801L, 10813L, 10863L, 10875L, 10926L, 10937L, 10988L, 10999L, 11050L, 11061L, 11112L, 11123L, 11175L, 11185L, 11237L, 11247L, 11299L, 11309L, 11361L, 11371L, 11423L, 11433L, 11485L, 11495L, 11547L, 11557L, 11609L, 11619L, 11671L, 11681L, 11733L, 11743L, 11795L, 11805L, 11857L, 11867L, 11919L, 11929L, 11981L, 11991L, 12043L, 12053L, 12105L, 12115L, 12167L, 12177L, 12227L, 12237L, 12287L, 12297L, 12347L, 12357L, 12407L, 12417L, 12467L, 12477L, 12527L, 12537L, 12587L, 12597L, 12647L, 12657L, 12707L, 12717L, 12767L, 12777L, 12827L, 12837L, 12887L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Anchorage" rownames(res) <- NULL tzdb_cache[["Anchorage"]] <- res res } "Araguaina" <- function() { if(!is.null(tzdb_cache[["Araguaina"]])) return(tzdb_cache[["Araguaina"]]) ind <- c(236L, 834L, 854L, 887L, 904L, 1785L, 1802L, 1842L, 1851L, 1893L, 1900L, 1940L, 1946L, 2391L, 2400L, 2443L, 2451L, 2492L, 2498L, 2538L, 2544L, 2590L, 2595L, 4004L, 4019L, 4112L, 4132L, 4243L, 4262L, 4364L, 4389L, 4487L, 4512L, 5260L, 5282L, 5359L, 5403L, 5478L, 5520L, 5595L, 5637L, 5704L, 5754L, 5825L, 5875L, 5952L, 5998L, 6115L, 6117L, 7243L, 7271L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Araguaina" rownames(res) <- NULL tzdb_cache[["Araguaina"]] <- res res } "Buenos_Aires" <- function() { if(!is.null(tzdb_cache[["Buenos_Aires"]])) return(tzdb_cache[["Buenos_Aires"]]) ind <- c(105L, 458L, 803L, 811L, 846L, 850L, 896L, 899L, 933L, 936L, 968L, 972L, 1004L, 1008L, 1038L, 1045L, 1083L, 1087L, 1126L, 1130L, 1166L, 1186L, 1209L, 1263L, 1294L, 1402L, 1416L, 1573L, 1616L, 2375L, 2394L, 2401L, 2430L, 2447L, 2480L, 2499L, 2525L, 2551L, 2576L, 2599L, 2617L, 2639L, 2663L, 2902L, 2931L, 4386L, 4393L, 4487L, 4518L, 4613L, 4641L, 4752L, 4794L, 4898L, 5756L, 6712L, 6728L, 6791L, 6850L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Buenos_Aires" rownames(res) <- NULL tzdb_cache[["Buenos_Aires"]] <- res res } "Catamarca" <- function() { if(!is.null(tzdb_cache[["Catamarca"]])) return(tzdb_cache[["Catamarca"]]) ind <- c(110L, 458L, 803L, 811L, 846L, 850L, 896L, 899L, 933L, 936L, 968L, 972L, 1004L, 1008L, 1038L, 1045L, 1083L, 1087L, 1126L, 1130L, 1166L, 1186L, 1209L, 1263L, 1294L, 1402L, 1416L, 1573L, 1616L, 2375L, 2394L, 2401L, 2430L, 2447L, 2480L, 2499L, 2525L, 2551L, 2576L, 2599L, 2617L, 2639L, 2663L, 2902L, 2931L, 4386L, 4393L, 4487L, 4518L, 4613L, 4642L, 4753L, 4794L, 4898L, 5756L, 6294L, 6296L, 6712L, 6728L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Catamarca" rownames(res) <- NULL tzdb_cache[["Catamarca"]] <- res res } "Cordoba" <- function() { if(!is.null(tzdb_cache[["Cordoba"]])) return(tzdb_cache[["Cordoba"]]) ind <- c(106L, 458L, 803L, 811L, 846L, 850L, 896L, 899L, 933L, 936L, 968L, 972L, 1004L, 1008L, 1038L, 1045L, 1083L, 1087L, 1126L, 1130L, 1166L, 1186L, 1209L, 1263L, 1294L, 1402L, 1416L, 1573L, 1616L, 2375L, 2394L, 2401L, 2430L, 2447L, 2480L, 2499L, 2525L, 2551L, 2576L, 2599L, 2617L, 2639L, 2663L, 2902L, 2931L, 4386L, 4393L, 4487L, 4518L, 4613L, 4642L, 4753L, 4794L, 4898L, 5756L, 6712L, 6728L, 6791L, 6850L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Cordoba" rownames(res) <- NULL tzdb_cache[["Cordoba"]] <- res res } "Jujuy" <- function() { if(!is.null(tzdb_cache[["Jujuy"]])) return(tzdb_cache[["Jujuy"]]) ind <- c(108L, 458L, 803L, 811L, 846L, 850L, 896L, 899L, 933L, 936L, 968L, 972L, 1004L, 1008L, 1038L, 1045L, 1083L, 1087L, 1126L, 1130L, 1166L, 1186L, 1209L, 1263L, 1294L, 1402L, 1416L, 1573L, 1616L, 2375L, 2394L, 2401L, 2430L, 2447L, 2480L, 2499L, 2525L, 2551L, 2576L, 2599L, 2617L, 2639L, 2663L, 2902L, 2931L, 4386L, 4393L, 4487L, 4519L, 4622L, 4648L, 4744L, 4794L, 4898L, 5756L, 6712L, 6728L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Jujuy" rownames(res) <- NULL tzdb_cache[["Jujuy"]] <- res res } "La_Rioja" <- function() { if(!is.null(tzdb_cache[["La_Rioja"]])) return(tzdb_cache[["La_Rioja"]]) ind <- c(112L, 458L, 803L, 811L, 846L, 850L, 896L, 899L, 933L, 936L, 968L, 972L, 1004L, 1008L, 1038L, 1045L, 1083L, 1087L, 1126L, 1130L, 1166L, 1186L, 1209L, 1263L, 1294L, 1402L, 1416L, 1573L, 1616L, 2375L, 2394L, 2401L, 2430L, 2447L, 2480L, 2499L, 2525L, 2551L, 2576L, 2599L, 2617L, 2639L, 2663L, 2902L, 2931L, 4386L, 4393L, 4487L, 4518L, 4613L, 4636L, 4701L, 4752L, 4794L, 4898L, 5756L, 6294L, 6296L, 6712L, 6728L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "La_Rioja" rownames(res) <- NULL tzdb_cache[["La_Rioja"]] <- res res } "Mendoza" <- function() { if(!is.null(tzdb_cache[["Mendoza"]])) return(tzdb_cache[["Mendoza"]]) ind <- c(115L, 458L, 803L, 811L, 846L, 850L, 896L, 899L, 933L, 936L, 968L, 972L, 1004L, 1008L, 1038L, 1045L, 1083L, 1087L, 1126L, 1130L, 1166L, 1186L, 1209L, 1263L, 1294L, 1402L, 1416L, 1573L, 1616L, 2375L, 2394L, 2401L, 2430L, 2447L, 2480L, 2499L, 2525L, 2551L, 2576L, 2599L, 2617L, 2639L, 2663L, 2902L, 2931L, 4386L, 4393L, 4487L, 4519L, 4611L, 4637L, 4749L, 4795L, 4899L, 5756L, 6291L, 6307L, 6712L, 6728L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Mendoza" rownames(res) <- NULL tzdb_cache[["Mendoza"]] <- res res } "Rio_Gallegos" <- function() { if(!is.null(tzdb_cache[["Rio_Gallegos"]])) return(tzdb_cache[["Rio_Gallegos"]]) ind <- c(116L, 458L, 803L, 811L, 846L, 850L, 896L, 899L, 933L, 936L, 968L, 972L, 1004L, 1008L, 1038L, 1045L, 1083L, 1087L, 1126L, 1130L, 1166L, 1186L, 1209L, 1263L, 1294L, 1402L, 1416L, 1573L, 1616L, 2375L, 2394L, 2401L, 2430L, 2447L, 2480L, 2499L, 2525L, 2551L, 2576L, 2599L, 2617L, 2639L, 2663L, 2902L, 2931L, 4386L, 4393L, 4487L, 4518L, 4613L, 4641L, 4752L, 4794L, 4898L, 5756L, 6294L, 6296L, 6712L, 6728L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Rio_Gallegos" rownames(res) <- NULL tzdb_cache[["Rio_Gallegos"]] <- res res } "Salta" <- function() { if(!is.null(tzdb_cache[["Salta"]])) return(tzdb_cache[["Salta"]]) ind <- c(109L, 458L, 803L, 811L, 846L, 850L, 896L, 899L, 933L, 936L, 968L, 972L, 1004L, 1008L, 1038L, 1045L, 1083L, 1087L, 1126L, 1130L, 1166L, 1186L, 1209L, 1263L, 1294L, 1402L, 1416L, 1573L, 1616L, 2375L, 2394L, 2401L, 2430L, 2447L, 2480L, 2499L, 2525L, 2551L, 2576L, 2599L, 2617L, 2639L, 2663L, 2902L, 2931L, 4386L, 4393L, 4487L, 4518L, 4613L, 4642L, 4753L, 4794L, 4898L, 5756L, 6712L, 6728L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Salta" rownames(res) <- NULL tzdb_cache[["Salta"]] <- res res } "San_Juan" <- function() { if(!is.null(tzdb_cache[["San_Juan"]])) return(tzdb_cache[["San_Juan"]]) ind <- c(114L, 458L, 803L, 811L, 846L, 850L, 896L, 899L, 933L, 936L, 968L, 972L, 1004L, 1008L, 1038L, 1045L, 1083L, 1087L, 1126L, 1130L, 1166L, 1186L, 1209L, 1263L, 1294L, 1402L, 1416L, 1573L, 1616L, 2375L, 2394L, 2401L, 2430L, 2447L, 2480L, 2499L, 2525L, 2551L, 2576L, 2599L, 2617L, 2639L, 2663L, 2902L, 2931L, 4386L, 4393L, 4487L, 4518L, 4613L, 4636L, 4701L, 4752L, 4794L, 4898L, 5756L, 6293L, 6298L, 6712L, 6728L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "San_Juan" rownames(res) <- NULL tzdb_cache[["San_Juan"]] <- res res } "San_Luis" <- function() { if(!is.null(tzdb_cache[["San_Luis"]])) return(tzdb_cache[["San_Luis"]]) ind <- c(111L, 458L, 803L, 811L, 846L, 850L, 896L, 899L, 933L, 936L, 968L, 972L, 1004L, 1008L, 1038L, 1045L, 1083L, 1087L, 1126L, 1130L, 1166L, 1186L, 1209L, 1263L, 1294L, 1402L, 1416L, 1573L, 1616L, 2375L, 2394L, 2401L, 2430L, 2447L, 2480L, 2499L, 2525L, 2551L, 2576L, 2599L, 2617L, 2639L, 2663L, 2902L, 2931L, 4386L, 4393L, 4487L, 4523L, 4611L, 4637L, 5756L, 6293L, 6298L, 6712L, 6713L, 6716L, 6789L, 6837L, 6908L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "San_Luis" rownames(res) <- NULL tzdb_cache[["San_Luis"]] <- res res } "Tucuman" <- function() { if(!is.null(tzdb_cache[["Tucuman"]])) return(tzdb_cache[["Tucuman"]]) ind <- c(107L, 458L, 803L, 811L, 846L, 850L, 896L, 899L, 933L, 936L, 968L, 972L, 1004L, 1008L, 1038L, 1045L, 1083L, 1087L, 1126L, 1130L, 1166L, 1186L, 1209L, 1263L, 1294L, 1402L, 1416L, 1573L, 1616L, 2375L, 2394L, 2401L, 2430L, 2447L, 2480L, 2499L, 2525L, 2551L, 2576L, 2599L, 2617L, 2639L, 2663L, 2902L, 2931L, 4386L, 4393L, 4487L, 4518L, 4613L, 4642L, 4753L, 4794L, 4898L, 5756L, 6294L, 6295L, 6712L, 6728L, 6791L, 6850L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Tucuman" rownames(res) <- NULL tzdb_cache[["Tucuman"]] <- res res } "Ushuaia" <- function() { if(!is.null(tzdb_cache[["Ushuaia"]])) return(tzdb_cache[["Ushuaia"]]) ind <- c(113L, 458L, 803L, 811L, 846L, 850L, 896L, 899L, 933L, 936L, 968L, 972L, 1004L, 1008L, 1038L, 1045L, 1083L, 1087L, 1126L, 1130L, 1166L, 1186L, 1209L, 1263L, 1294L, 1402L, 1416L, 1573L, 1616L, 2375L, 2394L, 2401L, 2430L, 2447L, 2480L, 2499L, 2525L, 2551L, 2576L, 2599L, 2617L, 2639L, 2663L, 2902L, 2931L, 4386L, 4393L, 4487L, 4518L, 4613L, 4641L, 4752L, 4794L, 4898L, 5756L, 6292L, 6296L, 6712L, 6728L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Ushuaia" rownames(res) <- NULL tzdb_cache[["Ushuaia"]] <- res res } "Asuncion" <- function() { if(!is.null(tzdb_cache[["Asuncion"]])) return(tzdb_cache[["Asuncion"]]) ind <- c(70L, 844L, 2809L, 2917L, 3029L, 3058L, 3105L, 3135L, 3190L, 3221L, 3278L, 3326L, 3366L, 3413L, 3458L, 3514L, 3553L, 3612L, 3654L, 3718L, 3763L, 3825L, 3872L, 3932L, 3979L, 4053L, 4100L, 4171L, 4226L, 4304L, 4356L, 4432L, 4491L, 4558L, 4606L, 4682L, 4745L, 4795L, 4894L, 4964L, 5017L, 5047L, 5136L, 5165L, 5258L, 5284L, 5360L, 5405L, 5477L, 5521L, 5594L, 5640L, 5705L, 5757L, 5822L, 5877L, 5950L, 6041L, 6058L, 6159L, 6175L, 6276L, 6317L, 6361L, 6439L, 6480L, 6552L, 6599L, 6666L, 6716L, 6792L, 6837L, 6915L, 7013L, 7031L, 7127L, 7147L, 7221L, 7240L, 7285L, 7325L, 7373L, 7417L, 7480L, 7521L, 7588L, 7620L, 7682L, 7707L, 7768L, 7792L, 7843L, 7879L, 7920L, 7958L, 8013L, 8036L, 8087L, 8108L, 8157L, 8175L, 8208L, 8237L, 8270L, 8299L, 8333L, 8361L, 8406L, 8423L, 8468L, 8485L, 8530L, 8547L, 8581L, 8609L, 8643L, 8671L, 8716L, 8733L, 8778L, 8795L, 8840L, 8857L, 8902L, 8919L, 8953L, 8981L, 9015L, 9044L, 9088L, 9106L, 9150L, 9168L, 9212L, 9230L, 9263L, 9293L, 9325L, 9355L, 9387L, 9417L, 9460L, 9479L, 9522L, 9541L, 9584L, 9603L, 9635L, 9665L, 9697L, 9727L, 9770L, 9789L, 9832L, 9851L, 9894L, 9913L, 9945L, 9975L, 10007L, 10037L, 10069L, 10099L, 10143L, 10161L, 10205L, 10223L, 10267L, 10285L, 10318L, 10347L, 10381L, 10409L, 10454L, 10471L, 10516L, 10533L, 10578L, 10595L, 10640L, 10657L, 10691L, 10719L, 10753L, 10781L, 10826L, 10843L, 10888L, 10905L, 10950L, 10967L, 11001L, 11029L, 11063L, 11092L, 11125L, 11154L, 11198L, 11216L, 11260L, 11278L, 11322L, 11341L, 11373L, 11403L, 11435L, 11465L, 11508L, 11527L, 11570L, 11589L, 11632L, 11651L, 11683L, 11713L, 11745L, 11775L, 11807L, 11837L, 11880L, 11899L, 11942L, 11961L, 12004L, 12023L, 12055L, 12085L, 12117L, 12147L, 12190L, 12207L, 12250L, 12267L, 12310L, 12327L, 12370L, 12387L, 12419L, 12447L, 12479L, 12507L, 12550L, 12567L, 12610L, 12627L, 12670L, 12687L, 12719L, 12747L, 12779L, 12807L, 12839L, 12867L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Asuncion" rownames(res) <- NULL tzdb_cache[["Asuncion"]] <- res res } "Bahia" <- function() { if(!is.null(tzdb_cache[["Bahia"]])) return(tzdb_cache[["Bahia"]]) ind <- c(234L, 834L, 854L, 887L, 904L, 1785L, 1802L, 1842L, 1851L, 1893L, 1900L, 1940L, 1946L, 2391L, 2400L, 2443L, 2451L, 2492L, 2498L, 2538L, 2544L, 2590L, 2595L, 4004L, 4019L, 4112L, 4132L, 4243L, 4262L, 4364L, 4389L, 4487L, 4512L, 4613L, 4634L, 4752L, 4787L, 4907L, 4923L, 5024L, 5044L, 5143L, 5163L, 5260L, 5282L, 5359L, 5403L, 5478L, 5520L, 5595L, 5637L, 5704L, 5754L, 5825L, 5875L, 5952L, 5998L, 6115L, 6117L, 7149L, 7185L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Bahia" rownames(res) <- NULL tzdb_cache[["Bahia"]] <- res res } "Bahia_Banderas" <- function() { if(!is.null(tzdb_cache[["Bahia_Banderas"]])) return(tzdb_cache[["Bahia_Banderas"]]) ind <- c(528L, 694L, 801L, 822L, 832L, 857L, 1329L, 1736L, 2681L, 5334L, 5396L, 5455L, 5515L, 5569L, 5630L, 5685L, 5745L, 5802L, 5867L, 5933L, 5944L, 6049L, 6110L, 6167L, 6228L, 6283L, 6351L, 6409L, 6473L, 6527L, 6589L, 6649L, 6697L, 6768L, 6820L, 6888L, 6939L, 7011L, 7062L, 7125L, 7168L, 7219L, 7257L, 7307L, 7344L, 7397L, 7447L, 7505L, 7538L, 7597L, 7639L, 7691L, 7725L, 7776L, 7809L, 7864L, 7894L, 7943L, 7971L, 8023L, 8050L, 8096L, 8121L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Bahia_Banderas" rownames(res) <- NULL tzdb_cache[["Bahia_Banderas"]] <- res res } "Barbados" <- function() { if(!is.null(tzdb_cache[["Barbados"]])) return(tzdb_cache[["Barbados"]]) ind <- c(209L, 1328L, 1350L, 1401L, 1407L, 1443L, 1459L, 3174L, 3192L, 3241L, 3279L, 3329L, 3362L, 3423L, 3444L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Barbados" rownames(res) <- NULL tzdb_cache[["Barbados"]] <- res res } "Belem" <- function() { if(!is.null(tzdb_cache[["Belem"]])) return(tzdb_cache[["Belem"]]) ind <- c(237L, 834L, 854L, 887L, 904L, 1785L, 1802L, 1842L, 1851L, 1893L, 1900L, 1940L, 1946L, 2391L, 2400L, 2443L, 2451L, 2492L, 2498L, 2538L, 2544L, 2590L, 2595L, 4004L, 4019L, 4112L, 4132L, 4243L, 4262L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Belem" rownames(res) <- NULL tzdb_cache[["Belem"]] <- res res } "Belize" <- function() { if(!is.null(tzdb_cache[["Belize"]])) return(tzdb_cache[["Belize"]]) ind <- c(222L, 353L, 371L, 411L, 444L, 470L, 485L, 516L, 529L, 553L, 557L, 581L, 585L, 631L, 636L, 656L, 658L, 681L, 683L, 705L, 709L, 734L, 738L, 761L, 766L, 797L, 809L, 842L, 849L, 884L, 898L, 930L, 935L, 964L, 971L, 1001L, 1007L, 1034L, 1044L, 1079L, 1086L, 1121L, 1129L, 1164L, 1176L, 1229L, 1239L, 1286L, 1311L, 1509L, 1570L, 1680L, 1685L, 1730L, 1737L, 1778L, 1789L, 1835L, 1846L, 1886L, 1897L, 1930L, 1944L, 1976L, 1982L, 2016L, 2020L, 2057L, 2064L, 2098L, 2106L, 2145L, 2152L, 2183L, 2190L, 2225L, 2236L, 2270L, 2279L, 2311L, 2319L, 2344L, 2353L, 2379L, 2398L, 2429L, 2446L, 2479L, 2495L, 2524L, 2541L, 2578L, 2593L, 2888L, 2904L, 3680L, 3681L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Belize" rownames(res) <- NULL tzdb_cache[["Belize"]] <- res res } "Boa_Vista" <- function() { if(!is.null(tzdb_cache[["Boa_Vista"]])) return(tzdb_cache[["Boa_Vista"]]) ind <- c(242L, 835L, 855L, 888L, 905L, 1786L, 1803L, 1843L, 1853L, 1894L, 1901L, 1941L, 1947L, 2392L, 2401L, 2444L, 2452L, 2493L, 2499L, 2539L, 2545L, 2591L, 2596L, 4005L, 4020L, 4113L, 4133L, 4245L, 4263L, 5705L, 5755L, 5826L, 5829L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Boa_Vista" rownames(res) <- NULL tzdb_cache[["Boa_Vista"]] <- res res } "Bogota" <- function() { if(!is.null(tzdb_cache[["Bogota"]])) return(tzdb_cache[["Bogota"]]) ind <- c(62L, 248L, 4854L, 4927L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Bogota" rownames(res) <- NULL tzdb_cache[["Bogota"]] <- res res } "Boise" <- function() { if(!is.null(tzdb_cache[["Boise"]])) return(tzdb_cache[["Boise"]]) ind <- c(51L, 331L, 367L, 383L, 422L, 569L, 1510L, 1544L, 2559L, 2586L, 2607L, 2627L, 2648L, 2673L, 2695L, 2721L, 2740L, 2770L, 2793L, 2825L, 2848L, 2880L, 2903L, 2967L, 2983L, 3049L, 3081L, 3126L, 3161L, 3210L, 3248L, 3295L, 3336L, 3387L, 3430L, 3474L, 3522L, 3568L, 3621L, 3672L, 3726L, 3783L, 3834L, 3890L, 3942L, 3997L, 4063L, 4124L, 4180L, 4252L, 4312L, 4379L, 4440L, 4504L, 4568L, 4627L, 4691L, 4767L, 4844L, 4914L, 4976L, 5038L, 5095L, 5156L, 5213L, 5274L, 5334L, 5396L, 5455L, 5515L, 5569L, 5630L, 5685L, 5745L, 5802L, 5867L, 5921L, 5990L, 6049L, 6110L, 6167L, 6228L, 6283L, 6351L, 6409L, 6473L, 6527L, 6589L, 6610L, 6707L, 6724L, 6831L, 6846L, 6950L, 6968L, 7070L, 7085L, 7175L, 7193L, 7265L, 7280L, 7352L, 7368L, 7458L, 7474L, 7549L, 7563L, 7649L, 7664L, 7735L, 7750L, 7820L, 7837L, 7902L, 7915L, 7981L, 7995L, 8058L, 8069L, 8130L, 8140L, 8193L, 8204L, 8255L, 8266L, 8317L, 8328L, 8379L, 8391L, 8441L, 8453L, 8503L, 8515L, 8565L, 8577L, 8627L, 8639L, 8689L, 8701L, 8751L, 8763L, 8813L, 8825L, 8876L, 8887L, 8938L, 8949L, 9000L, 9011L, 9062L, 9073L, 9125L, 9135L, 9187L, 9197L, 9249L, 9259L, 9311L, 9321L, 9373L, 9383L, 9435L, 9445L, 9497L, 9507L, 9559L, 9569L, 9621L, 9631L, 9683L, 9693L, 9745L, 9755L, 9807L, 9817L, 9869L, 9879L, 9931L, 9941L, 9993L, 10003L, 10055L, 10065L, 10117L, 10127L, 10179L, 10190L, 10241L, 10252L, 10303L, 10314L, 10365L, 10376L, 10427L, 10439L, 10489L, 10501L, 10551L, 10563L, 10613L, 10625L, 10675L, 10687L, 10737L, 10749L, 10799L, 10811L, 10861L, 10873L, 10924L, 10935L, 10986L, 10997L, 11048L, 11059L, 11110L, 11121L, 11173L, 11183L, 11235L, 11245L, 11297L, 11307L, 11359L, 11369L, 11421L, 11431L, 11483L, 11493L, 11545L, 11555L, 11607L, 11617L, 11669L, 11679L, 11731L, 11741L, 11793L, 11803L, 11855L, 11865L, 11917L, 11927L, 11979L, 11989L, 12041L, 12051L, 12103L, 12113L, 12165L, 12175L, 12225L, 12235L, 12285L, 12295L, 12345L, 12355L, 12405L, 12415L, 12465L, 12475L, 12525L, 12535L, 12585L, 12595L, 12645L, 12655L, 12705L, 12715L, 12765L, 12775L, 12825L, 12835L, 12885L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Boise" rownames(res) <- NULL tzdb_cache[["Boise"]] <- res res } "Cambridge_Bay" <- function() { if(!is.null(tzdb_cache[["Cambridge_Bay"]])) return(tzdb_cache[["Cambridge_Bay"]]) ind <- c(439L, 1510L, 1544L, 2793L, 2825L, 2848L, 2880L, 2926L, 2967L, 3013L, 3049L, 3081L, 3126L, 3161L, 3210L, 3248L, 3295L, 3336L, 3387L, 3430L, 3474L, 3522L, 3568L, 3621L, 3672L, 3726L, 3783L, 3834L, 3890L, 3942L, 3997L, 4063L, 4124L, 4180L, 4252L, 4312L, 4379L, 4440L, 4504L, 4568L, 4627L, 4691L, 4767L, 4844L, 4914L, 4976L, 5038L, 5095L, 5156L, 5213L, 5274L, 5334L, 5396L, 5455L, 5515L, 5569L, 5630L, 5746L, 5865L, 5921L, 5990L, 6049L, 6110L, 6167L, 6228L, 6283L, 6351L, 6409L, 6473L, 6527L, 6589L, 6610L, 6707L, 6724L, 6831L, 6846L, 6950L, 6968L, 7070L, 7085L, 7175L, 7193L, 7265L, 7280L, 7352L, 7368L, 7458L, 7474L, 7549L, 7563L, 7649L, 7664L, 7735L, 7750L, 7820L, 7837L, 7902L, 7915L, 7981L, 7995L, 8058L, 8069L, 8130L, 8140L, 8193L, 8204L, 8255L, 8266L, 8317L, 8328L, 8379L, 8391L, 8441L, 8453L, 8503L, 8515L, 8565L, 8577L, 8627L, 8639L, 8689L, 8701L, 8751L, 8763L, 8813L, 8825L, 8876L, 8887L, 8938L, 8949L, 9000L, 9011L, 9062L, 9073L, 9125L, 9135L, 9187L, 9197L, 9249L, 9259L, 9311L, 9321L, 9373L, 9383L, 9435L, 9445L, 9497L, 9507L, 9559L, 9569L, 9621L, 9631L, 9683L, 9693L, 9745L, 9755L, 9807L, 9817L, 9869L, 9879L, 9931L, 9941L, 9993L, 10003L, 10055L, 10065L, 10117L, 10127L, 10179L, 10190L, 10241L, 10252L, 10303L, 10314L, 10365L, 10376L, 10427L, 10439L, 10489L, 10501L, 10551L, 10563L, 10613L, 10625L, 10675L, 10687L, 10737L, 10749L, 10799L, 10811L, 10861L, 10873L, 10924L, 10935L, 10986L, 10997L, 11048L, 11059L, 11110L, 11121L, 11173L, 11183L, 11235L, 11245L, 11297L, 11307L, 11359L, 11369L, 11421L, 11431L, 11483L, 11493L, 11545L, 11555L, 11607L, 11617L, 11669L, 11679L, 11731L, 11741L, 11793L, 11803L, 11855L, 11865L, 11917L, 11927L, 11979L, 11989L, 12041L, 12051L, 12103L, 12113L, 12165L, 12175L, 12225L, 12235L, 12285L, 12295L, 12345L, 12355L, 12405L, 12415L, 12465L, 12475L, 12525L, 12535L, 12585L, 12595L, 12645L, 12655L, 12705L, 12715L, 12765L, 12775L, 12825L, 12835L, 12885L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Cambridge_Bay" rownames(res) <- NULL tzdb_cache[["Cambridge_Bay"]] <- res res } "Campo_Grande" <- function() { if(!is.null(tzdb_cache[["Campo_Grande"]])) return(tzdb_cache[["Campo_Grande"]]) ind <- c(238L, 835L, 855L, 888L, 905L, 1786L, 1803L, 1843L, 1853L, 1894L, 1901L, 1941L, 1947L, 2392L, 2401L, 2444L, 2452L, 2493L, 2499L, 2539L, 2545L, 2591L, 2596L, 4005L, 4020L, 4113L, 4133L, 4245L, 4263L, 4365L, 4390L, 4488L, 4513L, 4614L, 4635L, 4754L, 4788L, 4909L, 4924L, 5025L, 5045L, 5144L, 5164L, 5261L, 5283L, 5360L, 5404L, 5479L, 5521L, 5596L, 5638L, 5705L, 5755L, 5826L, 5876L, 5953L, 5999L, 6116L, 6118L, 6192L, 6235L, 6357L, 6360L, 6439L, 6479L, 6594L, 6598L, 6664L, 6715L, 6792L, 6836L, 6915L, 6957L, 7036L, 7076L, 7150L, 7186L, 7244L, 7272L, 7328L, 7360L, 7420L, 7466L, 7523L, 7556L, 7622L, 7657L, 7709L, 7742L, 7813L, 7830L ) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Campo_Grande" rownames(res) <- NULL tzdb_cache[["Campo_Grande"]] <- res res } "Cancun" <- function() { if(!is.null(tzdb_cache[["Cancun"]])) return(tzdb_cache[["Cancun"]]) ind <- c(527L, 3575L, 5332L, 5394L, 5453L, 5513L, 5567L, 5576L, 5629L, 5684L, 5744L, 5801L, 5866L, 5932L, 5943L, 6048L, 6109L, 6166L, 6227L, 6282L, 6350L, 6408L, 6472L, 6526L, 6588L, 6648L, 6696L, 6767L, 6819L, 6887L, 6938L, 7010L, 7062L, 7125L, 7168L, 7219L, 7257L, 7307L, 7344L, 7397L, 7447L, 7464L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Cancun" rownames(res) <- NULL tzdb_cache[["Cancun"]] <- res res } "Caracas" <- function() { if(!is.null(tzdb_cache[["Caracas"]])) return(tzdb_cache[["Caracas"]]) ind <- c(74L, 220L, 2441L, 6711L, 7600L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Caracas" rownames(res) <- NULL tzdb_cache[["Caracas"]] <- res res } "Cayenne" <- function() { if(!is.null(tzdb_cache[["Cayenne"]])) return(tzdb_cache[["Cayenne"]]) ind <- c(207L, 2577L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Cayenne" rownames(res) <- NULL tzdb_cache[["Cayenne"]] <- res res } "Chicago" <- function() { if(!is.null(tzdb_cache[["Chicago"]])) return(tzdb_cache[["Chicago"]]) ind <- c(49L, 329L, 365L, 381L, 420L, 462L, 479L, 492L, 523L, 538L, 546L, 564L, 576L, 594L, 626L, 642L, 650L, 667L, 675L, 690L, 698L, 719L, 727L, 748L, 754L, 774L, 793L, 821L, 829L, 865L, 876L, 913L, 921L, 947L, 957L, 984L, 993L, 1009L, 1039L, 1057L, 1069L, 1102L, 1113L, 1145L, 1157L, 1195L, 1220L, 1254L, 1281L, 1509L, 1543L, 1591L, 1610L, 1653L, 1670L, 1701L, 1720L, 1753L, 1767L, 1807L, 1825L, 1863L, 1878L, 1914L, 1924L, 1961L, 1969L, 1996L, 2008L, 2032L, 2059L, 2076L, 2101L, 2121L, 2148L, 2165L, 2186L, 2202L, 2228L, 2249L, 2274L, 2290L, 2316L, 2331L, 2349L, 2365L, 2385L, 2413L, 2435L, 2463L, 2487L, 2513L, 2533L, 2558L, 2585L, 2606L, 2626L, 2646L, 2672L, 2694L, 2720L, 2739L, 2769L, 2792L, 2824L, 2847L, 2879L, 2894L, 2965L, 2982L, 3048L, 3080L, 3125L, 3160L, 3209L, 3247L, 3294L, 3335L, 3386L, 3429L, 3473L, 3521L, 3567L, 3620L, 3671L, 3725L, 3782L, 3833L, 3889L, 3941L, 3996L, 4062L, 4123L, 4179L, 4251L, 4311L, 4378L, 4439L, 4503L, 4567L, 4626L, 4690L, 4766L, 4843L, 4913L, 4975L, 5037L, 5094L, 5155L, 5212L, 5273L, 5333L, 5395L, 5454L, 5514L, 5568L, 5629L, 5684L, 5744L, 5801L, 5866L, 5920L, 5989L, 6048L, 6109L, 6166L, 6227L, 6282L, 6350L, 6408L, 6472L, 6526L, 6588L, 6608L, 6705L, 6723L, 6830L, 6845L, 6949L, 6967L, 7069L, 7084L, 7174L, 7192L, 7264L, 7279L, 7351L, 7367L, 7457L, 7473L, 7548L, 7562L, 7648L, 7663L, 7734L, 7749L, 7819L, 7836L, 7901L, 7914L, 7980L, 7994L, 8057L, 8068L, 8129L, 8139L, 8192L, 8203L, 8254L, 8265L, 8316L, 8327L, 8378L, 8390L, 8440L, 8452L, 8502L, 8514L, 8564L, 8576L, 8626L, 8638L, 8688L, 8700L, 8750L, 8762L, 8812L, 8824L, 8875L, 8886L, 8937L, 8948L, 8999L, 9010L, 9061L, 9072L, 9124L, 9134L, 9186L, 9196L, 9248L, 9258L, 9310L, 9320L, 9372L, 9382L, 9434L, 9444L, 9496L, 9506L, 9558L, 9568L, 9620L, 9630L, 9682L, 9692L, 9744L, 9754L, 9806L, 9816L, 9868L, 9878L, 9930L, 9940L, 9992L, 10002L, 10054L, 10064L, 10116L, 10126L, 10178L, 10189L, 10240L, 10251L, 10302L, 10313L, 10364L, 10375L, 10426L, 10438L, 10488L, 10500L, 10550L, 10562L, 10612L, 10624L, 10674L, 10686L, 10736L, 10748L, 10798L, 10810L, 10860L, 10872L, 10923L, 10934L, 10985L, 10996L, 11047L, 11058L, 11109L, 11120L, 11172L, 11182L, 11234L, 11244L, 11296L, 11306L, 11358L, 11368L, 11420L, 11430L, 11482L, 11492L, 11544L, 11554L, 11606L, 11616L, 11668L, 11678L, 11730L, 11740L, 11792L, 11802L, 11854L, 11864L, 11916L, 11926L, 11978L, 11988L, 12040L, 12050L, 12102L, 12112L, 12164L, 12174L, 12224L, 12234L, 12284L, 12294L, 12344L, 12354L, 12404L, 12414L, 12464L, 12474L, 12524L, 12534L, 12584L, 12594L, 12644L, 12654L, 12704L, 12714L, 12764L, 12774L, 12824L, 12834L, 12884L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Chicago" rownames(res) <- NULL tzdb_cache[["Chicago"]] <- res res } "Chihuahua" <- function() { if(!is.null(tzdb_cache[["Chihuahua"]])) return(tzdb_cache[["Chihuahua"]]) ind <- c(528L, 694L, 801L, 822L, 832L, 857L, 5333L, 5395L, 5454L, 5569L, 5630L, 5685L, 5745L, 5802L, 5867L, 5933L, 5944L, 6049L, 6110L, 6167L, 6228L, 6283L, 6351L, 6409L, 6473L, 6527L, 6589L, 6649L, 6697L, 6768L, 6820L, 6888L, 6939L, 7012L, 7063L, 7126L, 7169L, 7220L, 7258L, 7308L, 7345L, 7398L, 7448L, 7506L, 7539L, 7598L, 7640L, 7692L, 7726L, 7777L, 7810L, 7865L, 7895L, 7944L, 7972L, 8024L, 8051L, 8097L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Chihuahua" rownames(res) <- NULL tzdb_cache[["Chihuahua"]] <- res res } "Costa_Rica" <- function() { if(!is.null(tzdb_cache[["Costa_Rica"]])) return(tzdb_cache[["Costa_Rica"]]) ind <- c(86L, 484L, 3306L, 3349L, 3394L, 3438L, 4633L, 4702L, 4775L, 4800L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Costa_Rica" rownames(res) <- NULL tzdb_cache[["Costa_Rica"]] <- res res } "Cuiaba" <- function() { if(!is.null(tzdb_cache[["Cuiaba"]])) return(tzdb_cache[["Cuiaba"]]) ind <- c(240L, 835L, 855L, 888L, 905L, 1786L, 1803L, 1843L, 1853L, 1894L, 1901L, 1941L, 1947L, 2392L, 2401L, 2444L, 2452L, 2493L, 2499L, 2539L, 2545L, 2591L, 2596L, 4005L, 4020L, 4113L, 4133L, 4245L, 4263L, 4365L, 4390L, 4488L, 4513L, 4614L, 4635L, 4754L, 4788L, 4909L, 4924L, 5025L, 5045L, 5144L, 5164L, 5261L, 5283L, 5360L, 5404L, 5479L, 5521L, 5596L, 5638L, 5705L, 5755L, 5826L, 5876L, 5953L, 5999L, 6116L, 6118L, 6357L, 6360L, 6439L, 6479L, 6594L, 6598L, 6664L, 6715L, 6792L, 6836L, 6915L, 6957L, 7036L, 7076L, 7150L, 7186L, 7244L, 7272L, 7328L, 7360L, 7420L, 7466L, 7523L, 7556L, 7622L, 7657L, 7709L, 7742L, 7813L, 7830L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Cuiaba" rownames(res) <- NULL tzdb_cache[["Cuiaba"]] <- res res } "Danmarkshavn" <- function() { if(!is.null(tzdb_cache[["Danmarkshavn"]])) return(tzdb_cache[["Danmarkshavn"]]) ind <- c(270L, 3422L, 3450L, 3495L, 3536L, 3591L, 3635L, 3696L, 3742L, 3805L, 3861L, 3922L, 3970L, 4046L, 4094L, 4163L, 4217L, 4295L, 4348L, 4423L, 4474L, 4550L, 4600L, 4672L, 4732L, 4827L, 4881L, 4958L, 5010L, 5077L, 5129L, 5195L, 5248L, 5281L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Danmarkshavn" rownames(res) <- NULL tzdb_cache[["Danmarkshavn"]] <- res res } "Dawson" <- function() { if(!is.null(tzdb_cache[["Dawson"]])) return(tzdb_cache[["Dawson"]]) ind <- c(141L, 339L, 368L, 394L, 423L, 1511L, 1546L, 2465L, 2489L, 2882L, 3431L, 3476L, 3523L, 3570L, 3622L, 3674L, 3727L, 3785L, 3835L, 3892L, 3943L, 3999L, 4064L, 4126L, 4181L, 4254L, 4313L, 4381L, 4441L, 4506L, 4569L, 4629L, 4692L, 4769L, 4845L, 4916L, 4977L, 5040L, 5096L, 5158L, 5214L, 5276L, 5335L, 5398L, 5456L, 5517L, 5570L, 5632L, 5686L, 5747L, 5803L, 5869L, 5922L, 5992L, 6050L, 6112L, 6168L, 6230L, 6284L, 6353L, 6410L, 6475L, 6528L, 6590L, 6611L, 6708L, 6725L, 6832L, 6847L, 6951L, 6969L, 7072L, 7086L, 7176L, 7194L, 7266L, 7281L, 7353L, 7369L, 7459L, 7475L, 7550L, 7564L, 7650L, 7665L, 7736L, 7751L, 7821L, 7838L, 7903L, 7916L ) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Dawson" rownames(res) <- NULL tzdb_cache[["Dawson"]] <- res res } "Dawson_Creek" <- function() { if(!is.null(tzdb_cache[["Dawson_Creek"]])) return(tzdb_cache[["Dawson_Creek"]]) ind <- c(59L, 338L, 367L, 1512L, 1545L, 1655L, 1672L, 1703L, 1722L, 1755L, 1769L, 1810L, 1827L, 1866L, 1880L, 1917L, 1926L, 1964L, 1971L, 2000L, 2010L, 2036L, 2049L, 2079L, 2092L, 2124L, 2138L, 2168L, 2176L, 2205L, 2216L, 2253L, 2261L, 2294L, 2303L, 2334L, 2350L, 2367L, 2386L, 2416L, 2436L, 2468L, 2490L, 2516L, 2536L, 2560L, 2588L, 2608L, 2629L, 2649L, 2675L, 2696L, 2723L, 2741L, 2772L, 2795L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Dawson_Creek" rownames(res) <- NULL tzdb_cache[["Dawson_Creek"]] <- res res } "Denver" <- function() { if(!is.null(tzdb_cache[["Denver"]])) return(tzdb_cache[["Denver"]]) ind <- c(50L, 330L, 366L, 382L, 421L, 452L, 480L, 493L, 506L, 1510L, 1544L, 2466L, 2488L, 2514L, 2534L, 2559L, 2586L, 2607L, 2627L, 2648L, 2673L, 2695L, 2721L, 2740L, 2770L, 2793L, 2825L, 2848L, 2880L, 2895L, 2967L, 2983L, 3049L, 3081L, 3126L, 3161L, 3210L, 3248L, 3295L, 3336L, 3387L, 3430L, 3474L, 3522L, 3568L, 3621L, 3672L, 3726L, 3783L, 3834L, 3890L, 3942L, 3997L, 4063L, 4124L, 4180L, 4252L, 4312L, 4379L, 4440L, 4504L, 4568L, 4627L, 4691L, 4767L, 4844L, 4914L, 4976L, 5038L, 5095L, 5156L, 5213L, 5274L, 5334L, 5396L, 5455L, 5515L, 5569L, 5630L, 5685L, 5745L, 5802L, 5867L, 5921L, 5990L, 6049L, 6110L, 6167L, 6228L, 6283L, 6351L, 6409L, 6473L, 6527L, 6589L, 6610L, 6707L, 6724L, 6831L, 6846L, 6950L, 6968L, 7070L, 7085L, 7175L, 7193L, 7265L, 7280L, 7352L, 7368L, 7458L, 7474L, 7549L, 7563L, 7649L, 7664L, 7735L, 7750L, 7820L, 7837L, 7902L, 7915L, 7981L, 7995L, 8058L, 8069L, 8130L, 8140L, 8193L, 8204L, 8255L, 8266L, 8317L, 8328L, 8379L, 8391L, 8441L, 8453L, 8503L, 8515L, 8565L, 8577L, 8627L, 8639L, 8689L, 8701L, 8751L, 8763L, 8813L, 8825L, 8876L, 8887L, 8938L, 8949L, 9000L, 9011L, 9062L, 9073L, 9125L, 9135L, 9187L, 9197L, 9249L, 9259L, 9311L, 9321L, 9373L, 9383L, 9435L, 9445L, 9497L, 9507L, 9559L, 9569L, 9621L, 9631L, 9683L, 9693L, 9745L, 9755L, 9807L, 9817L, 9869L, 9879L, 9931L, 9941L, 9993L, 10003L, 10055L, 10065L, 10117L, 10127L, 10179L, 10190L, 10241L, 10252L, 10303L, 10314L, 10365L, 10376L, 10427L, 10439L, 10489L, 10501L, 10551L, 10563L, 10613L, 10625L, 10675L, 10687L, 10737L, 10749L, 10799L, 10811L, 10861L, 10873L, 10924L, 10935L, 10986L, 10997L, 11048L, 11059L, 11110L, 11121L, 11173L, 11183L, 11235L, 11245L, 11297L, 11307L, 11359L, 11369L, 11421L, 11431L, 11483L, 11493L, 11545L, 11555L, 11607L, 11617L, 11669L, 11679L, 11731L, 11741L, 11793L, 11803L, 11855L, 11865L, 11917L, 11927L, 11979L, 11989L, 12041L, 12051L, 12103L, 12113L, 12165L, 12175L, 12225L, 12235L, 12285L, 12295L, 12345L, 12355L, 12405L, 12415L, 12465L, 12475L, 12525L, 12535L, 12585L, 12595L, 12645L, 12655L, 12705L, 12715L, 12765L, 12775L, 12825L, 12835L, 12885L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Denver" rownames(res) <- NULL tzdb_cache[["Denver"]] <- res res } "Detroit" <- function() { if(!is.null(tzdb_cache[["Detroit"]])) return(tzdb_cache[["Detroit"]]) ind <- c(172L, 250L, 1513L, 1542L, 1700L, 1719L, 2567L, 2584L, 2605L, 2625L, 2845L, 2878L, 2893L, 2964L, 3011L, 3047L, 3079L, 3124L, 3159L, 3208L, 3246L, 3293L, 3334L, 3385L, 3428L, 3472L, 3520L, 3566L, 3619L, 3670L, 3724L, 3781L, 3832L, 3888L, 3940L, 3995L, 4061L, 4122L, 4178L, 4250L, 4310L, 4377L, 4438L, 4502L, 4566L, 4625L, 4689L, 4765L, 4842L, 4912L, 4974L, 5036L, 5093L, 5154L, 5211L, 5272L, 5332L, 5394L, 5453L, 5513L, 5567L, 5628L, 5683L, 5742L, 5800L, 5864L, 5919L, 5988L, 6047L, 6108L, 6165L, 6226L, 6281L, 6349L, 6407L, 6471L, 6524L, 6587L, 6607L, 6704L, 6722L, 6829L, 6844L, 6948L, 6966L, 7068L, 7083L, 7173L, 7191L, 7263L, 7278L, 7350L, 7366L, 7456L, 7472L, 7547L, 7561L, 7647L, 7662L, 7733L, 7748L, 7818L, 7835L, 7900L, 7913L, 7979L, 7993L, 8056L, 8067L, 8128L, 8138L, 8191L, 8202L, 8253L, 8264L, 8315L, 8326L, 8377L, 8389L, 8439L, 8451L, 8501L, 8513L, 8563L, 8575L, 8625L, 8637L, 8687L, 8699L, 8749L, 8761L, 8811L, 8823L, 8874L, 8885L, 8936L, 8947L, 8998L, 9009L, 9060L, 9071L, 9123L, 9133L, 9185L, 9195L, 9247L, 9257L, 9309L, 9319L, 9371L, 9381L, 9433L, 9443L, 9495L, 9505L, 9557L, 9567L, 9619L, 9629L, 9681L, 9691L, 9743L, 9753L, 9805L, 9815L, 9867L, 9877L, 9929L, 9939L, 9991L, 10001L, 10053L, 10063L, 10115L, 10125L, 10177L, 10188L, 10239L, 10250L, 10301L, 10312L, 10363L, 10374L, 10425L, 10437L, 10487L, 10499L, 10549L, 10561L, 10611L, 10623L, 10673L, 10685L, 10735L, 10747L, 10797L, 10809L, 10859L, 10871L, 10922L, 10933L, 10984L, 10995L, 11046L, 11057L, 11108L, 11119L, 11171L, 11181L, 11233L, 11243L, 11295L, 11305L, 11357L, 11367L, 11419L, 11429L, 11481L, 11491L, 11543L, 11553L, 11605L, 11615L, 11667L, 11677L, 11729L, 11739L, 11791L, 11801L, 11853L, 11863L, 11915L, 11925L, 11977L, 11987L, 12039L, 12049L, 12101L, 12111L, 12163L, 12173L, 12223L, 12233L, 12283L, 12293L, 12343L, 12353L, 12403L, 12413L, 12463L, 12473L, 12523L, 12533L, 12583L, 12593L, 12643L, 12653L, 12703L, 12713L, 12763L, 12773L, 12823L, 12833L, 12883L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Detroit" rownames(res) <- NULL tzdb_cache[["Detroit"]] <- res res } "Edmonton" <- function() { if(!is.null(tzdb_cache[["Edmonton"]])) return(tzdb_cache[["Edmonton"]]) ind <- c(184L, 337L, 366L, 389L, 395L, 456L, 480L, 499L, 513L, 539L, 547L, 565L, 577L, 1510L, 1544L, 1654L, 1671L, 2793L, 2825L, 2848L, 2880L, 2926L, 2967L, 3013L, 3049L, 3081L, 3126L, 3161L, 3210L, 3248L, 3295L, 3336L, 3387L, 3430L, 3474L, 3522L, 3568L, 3621L, 3672L, 3726L, 3783L, 3834L, 3890L, 3942L, 3997L, 4063L, 4124L, 4180L, 4252L, 4312L, 4379L, 4440L, 4504L, 4568L, 4627L, 4691L, 4767L, 4844L, 4914L, 4976L, 5038L, 5095L, 5156L, 5213L, 5274L, 5334L, 5396L, 5455L, 5515L, 5569L, 5630L, 5685L, 5745L, 5802L, 5867L, 5921L, 5990L, 6049L, 6110L, 6167L, 6228L, 6283L, 6351L, 6409L, 6473L, 6527L, 6589L, 6610L, 6707L, 6724L, 6831L, 6846L, 6950L, 6968L, 7070L, 7085L, 7175L, 7193L, 7265L, 7280L, 7352L, 7368L, 7458L, 7474L, 7549L, 7563L, 7649L, 7664L, 7735L, 7750L, 7820L, 7837L, 7902L, 7915L, 7981L, 7995L, 8058L, 8069L, 8130L, 8140L, 8193L, 8204L, 8255L, 8266L, 8317L, 8328L, 8379L, 8391L, 8441L, 8453L, 8503L, 8515L, 8565L, 8577L, 8627L, 8639L, 8689L, 8701L, 8751L, 8763L, 8813L, 8825L, 8876L, 8887L, 8938L, 8949L, 9000L, 9011L, 9062L, 9073L, 9125L, 9135L, 9187L, 9197L, 9249L, 9259L, 9311L, 9321L, 9373L, 9383L, 9435L, 9445L, 9497L, 9507L, 9559L, 9569L, 9621L, 9631L, 9683L, 9693L, 9745L, 9755L, 9807L, 9817L, 9869L, 9879L, 9931L, 9941L, 9993L, 10003L, 10055L, 10065L, 10117L, 10127L, 10179L, 10190L, 10241L, 10252L, 10303L, 10314L, 10365L, 10376L, 10427L, 10439L, 10489L, 10501L, 10551L, 10563L, 10613L, 10625L, 10675L, 10687L, 10737L, 10749L, 10799L, 10811L, 10861L, 10873L, 10924L, 10935L, 10986L, 10997L, 11048L, 11059L, 11110L, 11121L, 11173L, 11183L, 11235L, 11245L, 11297L, 11307L, 11359L, 11369L, 11421L, 11431L, 11483L, 11493L, 11545L, 11555L, 11607L, 11617L, 11669L, 11679L, 11731L, 11741L, 11793L, 11803L, 11855L, 11865L, 11917L, 11927L, 11979L, 11989L, 12041L, 12051L, 12103L, 12113L, 12165L, 12175L, 12225L, 12235L, 12285L, 12295L, 12345L, 12355L, 12405L, 12415L, 12465L, 12475L, 12525L, 12535L, 12585L, 12595L, 12645L, 12655L, 12705L, 12715L, 12765L, 12775L, 12825L, 12835L, 12885L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Edmonton" rownames(res) <- NULL tzdb_cache[["Edmonton"]] <- res res } "Eirunepe" <- function() { if(!is.null(tzdb_cache[["Eirunepe"]])) return(tzdb_cache[["Eirunepe"]]) ind <- c(245L, 836L, 856L, 889L, 906L, 1787L, 1804L, 1844L, 1855L, 1895L, 1902L, 1942L, 1948L, 2393L, 2402L, 2445L, 2453L, 2494L, 2500L, 2540L, 2546L, 2592L, 2597L, 4006L, 4021L, 4114L, 4134L, 4248L, 4264L, 5026L, 5046L, 6775L, 7356L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Eirunepe" rownames(res) <- NULL tzdb_cache[["Eirunepe"]] <- res res } "El_Salvador" <- function() { if(!is.null(tzdb_cache[["El_Salvador"]])) return(tzdb_cache[["El_Salvador"]]) ind <- c(482L, 4192L, 4222L, 4320L, 4353L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "El_Salvador" rownames(res) <- NULL tzdb_cache[["El_Salvador"]] <- res res } "Fort_Nelson" <- function() { if(!is.null(tzdb_cache[["Fort_Nelson"]])) return(tzdb_cache[["Fort_Nelson"]]) ind <- c(60L, 338L, 367L, 1512L, 1545L, 1655L, 1672L, 1703L, 1722L, 1755L, 1769L, 1810L, 1827L, 1866L, 1880L, 1917L, 1926L, 1964L, 1971L, 2000L, 2010L, 2036L, 2049L, 2079L, 2092L, 2124L, 2138L, 2168L, 2176L, 2205L, 2216L, 2253L, 2261L, 2294L, 2303L, 2334L, 2350L, 2367L, 2386L, 2416L, 2436L, 2468L, 2490L, 2516L, 2536L, 2560L, 2588L, 2608L, 2629L, 2649L, 2675L, 2696L, 2723L, 2741L, 2772L, 2795L, 2827L, 2849L, 2882L, 2927L, 2969L, 3014L, 3051L, 3082L, 3128L, 3162L, 3212L, 3249L, 3297L, 3337L, 3389L, 3431L, 3476L, 3523L, 3570L, 3622L, 3674L, 3727L, 3785L, 3835L, 3892L, 3943L, 3999L, 4064L, 4126L, 4181L, 4254L, 4313L, 4381L, 4441L, 4506L, 4569L, 4629L, 4692L, 4769L, 4845L, 4916L, 4977L, 5040L, 5096L, 5158L, 5214L, 5276L, 5335L, 5398L, 5456L, 5517L, 5570L, 5632L, 5686L, 5747L, 5803L, 5869L, 5922L, 5992L, 6050L, 6112L, 6168L, 6230L, 6284L, 6353L, 6410L, 6475L, 6528L, 6590L, 6611L, 6708L, 6725L, 6832L, 6847L, 6951L, 6969L, 7072L, 7086L, 7176L, 7194L, 7266L, 7281L, 7353L, 7369L, 7459L, 7476L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Fort_Nelson" rownames(res) <- NULL tzdb_cache[["Fort_Nelson"]] <- res res } "Fortaleza" <- function() { if(!is.null(tzdb_cache[["Fortaleza"]])) return(tzdb_cache[["Fortaleza"]]) ind <- c(233L, 834L, 854L, 887L, 904L, 1785L, 1802L, 1842L, 1851L, 1893L, 1900L, 1940L, 1946L, 2391L, 2400L, 2443L, 2451L, 2492L, 2498L, 2538L, 2544L, 2590L, 2595L, 4004L, 4019L, 4112L, 4132L, 4243L, 4262L, 4364L, 4389L, 4487L, 4512L, 5704L, 5754L, 5825L, 5833L, 5952L, 5998L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Fortaleza" rownames(res) <- NULL tzdb_cache[["Fortaleza"]] <- res res } "Glace_Bay" <- function() { if(!is.null(tzdb_cache[["Glace_Bay"]])) return(tzdb_cache[["Glace_Bay"]]) ind <- c(165L, 334L, 363L, 1514L, 1541L, 1959L, 1967L, 2790L, 2821L, 2844L, 2876L, 2923L, 2963L, 3010L, 3046L, 3078L, 3123L, 3158L, 3207L, 3245L, 3292L, 3333L, 3384L, 3427L, 3471L, 3519L, 3565L, 3618L, 3669L, 3723L, 3780L, 3831L, 3887L, 3939L, 3994L, 4060L, 4121L, 4177L, 4249L, 4308L, 4376L, 4436L, 4501L, 4564L, 4624L, 4687L, 4764L, 4840L, 4911L, 4972L, 5035L, 5091L, 5153L, 5209L, 5271L, 5330L, 5393L, 5451L, 5512L, 5566L, 5626L, 5682L, 5740L, 5799L, 5862L, 5918L, 5986L, 6046L, 6106L, 6164L, 6224L, 6280L, 6348L, 6406L, 6470L, 6523L, 6585L, 6606L, 6703L, 6721L, 6828L, 6843L, 6947L, 6965L, 7067L, 7082L, 7172L, 7190L, 7261L, 7277L, 7348L, 7365L, 7454L, 7471L, 7545L, 7560L, 7645L, 7661L, 7731L, 7747L, 7816L, 7834L, 7898L, 7912L, 7977L, 7992L, 8054L, 8066L, 8126L, 8137L, 8189L, 8201L, 8251L, 8263L, 8313L, 8325L, 8375L, 8388L, 8437L, 8450L, 8499L, 8512L, 8561L, 8574L, 8623L, 8636L, 8685L, 8698L, 8747L, 8760L, 8809L, 8822L, 8872L, 8884L, 8934L, 8946L, 8996L, 9008L, 9058L, 9070L, 9121L, 9132L, 9183L, 9194L, 9245L, 9256L, 9307L, 9318L, 9369L, 9380L, 9431L, 9442L, 9493L, 9504L, 9555L, 9566L, 9617L, 9628L, 9679L, 9690L, 9741L, 9752L, 9803L, 9814L, 9865L, 9876L, 9927L, 9938L, 9989L, 10000L, 10051L, 10062L, 10113L, 10124L, 10175L, 10187L, 10237L, 10249L, 10299L, 10311L, 10361L, 10373L, 10423L, 10436L, 10485L, 10498L, 10547L, 10560L, 10609L, 10622L, 10671L, 10684L, 10733L, 10746L, 10795L, 10808L, 10857L, 10870L, 10920L, 10932L, 10982L, 10994L, 11044L, 11056L, 11106L, 11118L, 11169L, 11180L, 11231L, 11242L, 11293L, 11304L, 11355L, 11366L, 11417L, 11428L, 11479L, 11490L, 11541L, 11552L, 11603L, 11614L, 11665L, 11676L, 11727L, 11738L, 11789L, 11800L, 11851L, 11862L, 11913L, 11924L, 11975L, 11986L, 12037L, 12048L, 12099L, 12110L, 12161L, 12172L, 12221L, 12232L, 12281L, 12292L, 12341L, 12352L, 12401L, 12412L, 12461L, 12472L, 12521L, 12532L, 12581L, 12592L, 12641L, 12652L, 12701L, 12712L, 12761L, 12772L, 12821L, 12832L, 12881L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Glace_Bay" rownames(res) <- NULL tzdb_cache[["Glace_Bay"]] <- res res } "Goose_Bay" <- function() { if(!is.null(tzdb_cache[["Goose_Bay"]])) return(tzdb_cache[["Goose_Bay"]]) ind <- c(58L, 333L, 362L, 973L, 1020L, 1035L, 1059L, 1080L, 1105L, 1124L, 1146L, 1162L, 1197L, 1230L, 1260L, 1292L, 1515L, 1540L, 1596L, 1622L, 1658L, 1679L, 1709L, 1729L, 1759L, 1777L, 1815L, 1834L, 1860L, 1875L, 1911L, 1921L, 1958L, 1966L, 1993L, 2005L, 2029L, 2044L, 2073L, 2087L, 2118L, 2134L, 2162L, 2173L, 2199L, 2213L, 2246L, 2271L, 2287L, 2313L, 2328L, 2346L, 2362L, 2382L, 2410L, 2432L, 2460L, 2484L, 2501L, 2511L, 2530L, 2556L, 2583L, 2604L, 2624L, 2644L, 2669L, 2692L, 2717L, 2737L, 2766L, 2790L, 2821L, 2844L, 2876L, 2923L, 2963L, 3010L, 3046L, 3078L, 3123L, 3158L, 3207L, 3245L, 3292L, 3333L, 3384L, 3427L, 3471L, 3519L, 3565L, 3618L, 3669L, 3723L, 3780L, 3831L, 3887L, 3939L, 3994L, 4060L, 4121L, 4175L, 4244L, 4306L, 4374L, 4434L, 4499L, 4561L, 4621L, 4684L, 4762L, 4837L, 4908L, 4969L, 5033L, 5088L, 5151L, 5206L, 5269L, 5327L, 5391L, 5448L, 5510L, 5564L, 5624L, 5680L, 5738L, 5796L, 5860L, 5915L, 5984L, 6043L, 6104L, 6161L, 6222L, 6278L, 6346L, 6403L, 6467L, 6520L, 6582L, 6603L, 6701L, 6719L, 6826L, 6840L, 6945L, 6962L, 7065L, 7080L, 7172L, 7190L, 7261L, 7277L, 7348L, 7365L, 7454L, 7471L, 7545L, 7560L, 7645L, 7661L, 7731L, 7747L, 7816L, 7834L, 7898L, 7912L, 7977L, 7992L, 8054L, 8066L, 8126L, 8137L, 8189L, 8201L, 8251L, 8263L, 8313L, 8325L, 8375L, 8388L, 8437L, 8450L, 8499L, 8512L, 8561L, 8574L, 8623L, 8636L, 8685L, 8698L, 8747L, 8760L, 8809L, 8822L, 8872L, 8884L, 8934L, 8946L, 8996L, 9008L, 9058L, 9070L, 9121L, 9132L, 9183L, 9194L, 9245L, 9256L, 9307L, 9318L, 9369L, 9380L, 9431L, 9442L, 9493L, 9504L, 9555L, 9566L, 9617L, 9628L, 9679L, 9690L, 9741L, 9752L, 9803L, 9814L, 9865L, 9876L, 9927L, 9938L, 9989L, 10000L, 10051L, 10062L, 10113L, 10124L, 10175L, 10187L, 10237L, 10249L, 10299L, 10311L, 10361L, 10373L, 10423L, 10436L, 10485L, 10498L, 10547L, 10560L, 10609L, 10622L, 10671L, 10684L, 10733L, 10746L, 10795L, 10808L, 10857L, 10870L, 10920L, 10932L, 10982L, 10994L, 11044L, 11056L, 11106L, 11118L, 11169L, 11180L, 11231L, 11242L, 11293L, 11304L, 11355L, 11366L, 11417L, 11428L, 11479L, 11490L, 11541L, 11552L, 11603L, 11614L, 11665L, 11676L, 11727L, 11738L, 11789L, 11800L, 11851L, 11862L, 11913L, 11924L, 11975L, 11986L, 12037L, 12048L, 12099L, 12110L, 12161L, 12172L, 12221L, 12232L, 12281L, 12292L, 12341L, 12352L, 12401L, 12412L, 12461L, 12472L, 12521L, 12532L, 12581L, 12592L, 12641L, 12652L, 12701L, 12712L, 12761L, 12772L, 12821L, 12832L, 12881L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Goose_Bay" rownames(res) <- NULL tzdb_cache[["Goose_Bay"]] <- res res } "Grand_Turk" <- function() { if(!is.null(tzdb_cache[["Grand_Turk"]])) return(tzdb_cache[["Grand_Turk"]]) ind <- c(79L, 219L, 3334L, 3385L, 3428L, 3472L, 3520L, 3566L, 3619L, 3670L, 3724L, 3781L, 3832L, 3888L, 3940L, 3995L, 4061L, 4122L, 4178L, 4250L, 4310L, 4377L, 4438L, 4502L, 4566L, 4625L, 4689L, 4765L, 4842L, 4912L, 4974L, 5036L, 5093L, 5154L, 5211L, 5272L, 5332L, 5394L, 5453L, 5513L, 5567L, 5628L, 5683L, 5742L, 5800L, 5864L, 5919L, 5988L, 6047L, 6108L, 6165L, 6226L, 6281L, 6349L, 6407L, 6471L, 6524L, 6587L, 6607L, 6704L, 6722L, 6829L, 6844L, 6948L, 6966L, 7068L, 7083L, 7173L, 7191L, 7263L, 7278L, 7350L, 7366L, 7456L, 7748L, 7818L, 7835L, 7900L, 7913L, 7979L, 7993L, 8056L, 8067L, 8128L, 8138L, 8191L, 8202L, 8253L, 8264L, 8315L, 8326L, 8377L, 8389L, 8439L, 8451L, 8501L, 8513L, 8563L, 8575L, 8625L, 8637L, 8687L, 8699L, 8749L, 8761L, 8811L, 8823L, 8874L, 8885L, 8936L, 8947L, 8998L, 9009L, 9060L, 9071L, 9123L, 9133L, 9185L, 9195L, 9247L, 9257L, 9309L, 9319L, 9371L, 9381L, 9433L, 9443L, 9495L, 9505L, 9557L, 9567L, 9619L, 9629L, 9681L, 9691L, 9743L, 9753L, 9805L, 9815L, 9867L, 9877L, 9929L, 9939L, 9991L, 10001L, 10053L, 10063L, 10115L, 10125L, 10177L, 10188L, 10239L, 10250L, 10301L, 10312L, 10363L, 10374L, 10425L, 10437L, 10487L, 10499L, 10549L, 10561L, 10611L, 10623L, 10673L, 10685L, 10735L, 10747L, 10797L, 10809L, 10859L, 10871L, 10922L, 10933L, 10984L, 10995L, 11046L, 11057L, 11108L, 11119L, 11171L, 11181L, 11233L, 11243L, 11295L, 11305L, 11357L, 11367L, 11419L, 11429L, 11481L, 11491L, 11543L, 11553L, 11605L, 11615L, 11667L, 11677L, 11729L, 11739L, 11791L, 11801L, 11853L, 11863L, 11915L, 11925L, 11977L, 11987L, 12039L, 12049L, 12101L, 12111L, 12163L, 12173L, 12223L, 12233L, 12283L, 12293L, 12343L, 12353L, 12403L, 12413L, 12463L, 12473L, 12523L, 12533L, 12583L, 12593L, 12643L, 12653L, 12703L, 12713L, 12763L, 12773L, 12823L, 12833L, 12883L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Grand_Turk" rownames(res) <- NULL tzdb_cache[["Grand_Turk"]] <- res res } "Guatemala" <- function() { if(!is.null(tzdb_cache[["Guatemala"]])) return(tzdb_cache[["Guatemala"]]) ind <- c(352L, 2887L, 2906L, 3733L, 3736L, 4649L, 4705L, 6534L, 6549L ) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Guatemala" rownames(res) <- NULL tzdb_cache[["Guatemala"]] <- res res } "Guayaquil" <- function() { if(!is.null(tzdb_cache[["Guayaquil"]])) return(tzdb_cache[["Guayaquil"]]) ind <- c(84L, 807L, 4919L, 4925L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Guayaquil" rownames(res) <- NULL tzdb_cache[["Guayaquil"]] <- res res } "Guyana" <- function() { if(!is.null(tzdb_cache[["Guyana"]])) return(tzdb_cache[["Guyana"]]) ind <- c(208L, 249L, 3021L, 4833L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Guyana" rownames(res) <- NULL tzdb_cache[["Guyana"]] <- res res } "Halifax" <- function() { if(!is.null(tzdb_cache[["Halifax"]])) return(tzdb_cache[["Halifax"]]) ind <- c(166L, 254L, 281L, 334L, 363L, 461L, 464L, 504L, 510L, 536L, 543L, 566L, 571L, 618L, 622L, 644L, 651L, 671L, 672L, 691L, 699L, 721L, 725L, 750L, 752L, 777L, 791L, 825L, 830L, 866L, 877L, 911L, 925L, 950L, 954L, 986L, 994L, 1021L, 1025L, 1058L, 1070L, 1104L, 1114L, 1148L, 1158L, 1196L, 1221L, 1257L, 1282L, 1514L, 1541L, 1588L, 1608L, 1651L, 1668L, 1699L, 1718L, 1751L, 1765L, 1861L, 1876L, 1912L, 1922L, 1959L, 1967L, 1994L, 2006L, 2074L, 2088L, 2119L, 2135L, 2163L, 2174L, 2200L, 2214L, 2329L, 2347L, 2363L, 2383L, 2411L, 2433L, 2461L, 2485L, 2511L, 2530L, 2556L, 2583L, 2604L, 2624L, 2644L, 2669L, 2692L, 2717L, 2737L, 2766L, 2790L, 2821L, 2844L, 2876L, 2923L, 2963L, 3010L, 3046L, 3078L, 3123L, 3158L, 3207L, 3245L, 3292L, 3333L, 3384L, 3427L, 3471L, 3519L, 3565L, 3618L, 3669L, 3723L, 3780L, 3831L, 3887L, 3939L, 3994L, 4060L, 4121L, 4177L, 4249L, 4308L, 4376L, 4436L, 4501L, 4564L, 4624L, 4687L, 4764L, 4840L, 4911L, 4972L, 5035L, 5091L, 5153L, 5209L, 5271L, 5330L, 5393L, 5451L, 5512L, 5566L, 5626L, 5682L, 5740L, 5799L, 5862L, 5918L, 5986L, 6046L, 6106L, 6164L, 6224L, 6280L, 6348L, 6406L, 6470L, 6523L, 6585L, 6606L, 6703L, 6721L, 6828L, 6843L, 6947L, 6965L, 7067L, 7082L, 7172L, 7190L, 7261L, 7277L, 7348L, 7365L, 7454L, 7471L, 7545L, 7560L, 7645L, 7661L, 7731L, 7747L, 7816L, 7834L, 7898L, 7912L, 7977L, 7992L, 8054L, 8066L, 8126L, 8137L, 8189L, 8201L, 8251L, 8263L, 8313L, 8325L, 8375L, 8388L, 8437L, 8450L, 8499L, 8512L, 8561L, 8574L, 8623L, 8636L, 8685L, 8698L, 8747L, 8760L, 8809L, 8822L, 8872L, 8884L, 8934L, 8946L, 8996L, 9008L, 9058L, 9070L, 9121L, 9132L, 9183L, 9194L, 9245L, 9256L, 9307L, 9318L, 9369L, 9380L, 9431L, 9442L, 9493L, 9504L, 9555L, 9566L, 9617L, 9628L, 9679L, 9690L, 9741L, 9752L, 9803L, 9814L, 9865L, 9876L, 9927L, 9938L, 9989L, 10000L, 10051L, 10062L, 10113L, 10124L, 10175L, 10187L, 10237L, 10249L, 10299L, 10311L, 10361L, 10373L, 10423L, 10436L, 10485L, 10498L, 10547L, 10560L, 10609L, 10622L, 10671L, 10684L, 10733L, 10746L, 10795L, 10808L, 10857L, 10870L, 10920L, 10932L, 10982L, 10994L, 11044L, 11056L, 11106L, 11118L, 11169L, 11180L, 11231L, 11242L, 11293L, 11304L, 11355L, 11366L, 11417L, 11428L, 11479L, 11490L, 11541L, 11552L, 11603L, 11614L, 11665L, 11676L, 11727L, 11738L, 11789L, 11800L, 11851L, 11862L, 11913L, 11924L, 11975L, 11986L, 12037L, 12048L, 12099L, 12110L, 12161L, 12172L, 12221L, 12232L, 12281L, 12292L, 12341L, 12352L, 12401L, 12412L, 12461L, 12472L, 12521L, 12532L, 12581L, 12592L, 12641L, 12652L, 12701L, 12712L, 12761L, 12772L, 12821L, 12832L, 12881L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Halifax" rownames(res) <- NULL tzdb_cache[["Halifax"]] <- res res } "Havana" <- function() { if(!is.null(tzdb_cache[["Havana"]])) return(tzdb_cache[["Havana"]]) ind <- c(85L, 647L, 722L, 735L, 1203L, 1215L, 1261L, 1272L, 1341L, 1356L, 1504L, 1525L, 1601L, 1606L, 2471L, 2475L, 2519L, 2523L, 2552L, 2569L, 2600L, 2613L, 2642L, 2667L, 2690L, 2715L, 2735L, 2764L, 2788L, 2810L, 2842L, 2867L, 2921L, 2948L, 3008L, 3044L, 3076L, 3121L, 3156L, 3205L, 3257L, 3281L, 3318L, 3370L, 3406L, 3460L, 3529L, 3554L, 3629L, 3657L, 3731L, 3765L, 3841L, 3873L, 3948L, 3980L, 4025L, 4104L, 4142L, 4229L, 4275L, 4359L, 4400L, 4485L, 4562L, 4610L, 4685L, 4748L, 4838L, 4897L, 4970L, 5023L, 5089L, 5142L, 5207L, 5259L, 5328L, 5361L, 5449L, 5482L, 5558L, 5627L, 5672L, 5741L, 5797L, 5863L, 5916L, 5987L, 6044L, 6107L, 6162L, 6225L, 6272L, 6586L, 6604L, 6695L, 6729L, 6818L, 6841L, 6937L, 6963L, 7061L, 7089L, 7179L, 7218L, 7262L, 7274L, 7349L, 7362L, 7455L, 7468L, 7546L, 7557L, 7646L, 7658L, 7732L, 7744L, 7817L, 7831L, 7899L, 7909L, 7978L, 7989L, 8055L, 8063L, 8127L, 8134L, 8190L, 8198L, 8252L, 8260L, 8314L, 8322L, 8376L, 8385L, 8438L, 8447L, 8500L, 8509L, 8562L, 8571L, 8624L, 8633L, 8686L, 8695L, 8748L, 8757L, 8810L, 8819L, 8873L, 8881L, 8935L, 8943L, 8997L, 9005L, 9059L, 9067L, 9122L, 9129L, 9184L, 9191L, 9246L, 9253L, 9308L, 9315L, 9370L, 9377L, 9432L, 9439L, 9494L, 9501L, 9556L, 9563L, 9618L, 9625L, 9680L, 9687L, 9742L, 9749L, 9804L, 9811L, 9866L, 9873L, 9928L, 9935L, 9990L, 9997L, 10052L, 10059L, 10114L, 10121L, 10176L, 10184L, 10238L, 10246L, 10300L, 10308L, 10362L, 10370L, 10424L, 10433L, 10486L, 10495L, 10548L, 10557L, 10610L, 10619L, 10672L, 10681L, 10734L, 10743L, 10796L, 10805L, 10858L, 10867L, 10921L, 10929L, 10983L, 10991L, 11045L, 11053L, 11107L, 11115L, 11170L, 11177L, 11232L, 11239L, 11294L, 11301L, 11356L, 11363L, 11418L, 11425L, 11480L, 11487L, 11542L, 11549L, 11604L, 11611L, 11666L, 11673L, 11728L, 11735L, 11790L, 11797L, 11852L, 11859L, 11914L, 11921L, 11976L, 11983L, 12038L, 12045L, 12100L, 12107L, 12162L, 12169L, 12222L, 12229L, 12282L, 12289L, 12342L, 12349L, 12402L, 12409L, 12462L, 12469L, 12522L, 12529L, 12582L, 12589L, 12642L, 12649L, 12702L, 12709L, 12762L, 12769L, 12822L, 12829L, 12882L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Havana" rownames(res) <- NULL tzdb_cache[["Havana"]] <- res res } "Hermosillo" <- function() { if(!is.null(tzdb_cache[["Hermosillo"]])) return(tzdb_cache[["Hermosillo"]]) ind <- c(528L, 694L, 801L, 822L, 832L, 857L, 1329L, 1736L, 2681L, 5334L, 5396L, 5455L, 5515L, 5569L, 5630L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Hermosillo" rownames(res) <- NULL tzdb_cache[["Hermosillo"]] <- res res } "Indianapolis" <- function() { if(!is.null(tzdb_cache[["Indianapolis"]])) return(tzdb_cache[["Indianapolis"]]) ind <- c(49L, 329L, 365L, 381L, 420L, 1264L, 1281L, 1509L, 1543L, 1591L, 1610L, 1653L, 1670L, 1701L, 1720L, 1753L, 1767L, 1807L, 1825L, 1863L, 1878L, 1914L, 1924L, 1961L, 1969L, 1996L, 2008L, 2033L, 2136L, 2166L, 2645L, 2671L, 2693L, 2719L, 6524L, 6587L, 6607L, 6704L, 6722L, 6829L, 6844L, 6948L, 6966L, 7068L, 7083L, 7173L, 7191L, 7263L, 7278L, 7350L, 7366L, 7456L, 7472L, 7547L, 7561L, 7647L, 7662L, 7733L, 7748L, 7818L, 7835L, 7900L, 7913L, 7979L, 7993L, 8056L, 8067L, 8128L, 8138L, 8191L, 8202L, 8253L, 8264L, 8315L, 8326L, 8377L, 8389L, 8439L, 8451L, 8501L, 8513L, 8563L, 8575L, 8625L, 8637L, 8687L, 8699L, 8749L, 8761L, 8811L, 8823L, 8874L, 8885L, 8936L, 8947L, 8998L, 9009L, 9060L, 9071L, 9123L, 9133L, 9185L, 9195L, 9247L, 9257L, 9309L, 9319L, 9371L, 9381L, 9433L, 9443L, 9495L, 9505L, 9557L, 9567L, 9619L, 9629L, 9681L, 9691L, 9743L, 9753L, 9805L, 9815L, 9867L, 9877L, 9929L, 9939L, 9991L, 10001L, 10053L, 10063L, 10115L, 10125L, 10177L, 10188L, 10239L, 10250L, 10301L, 10312L, 10363L, 10374L, 10425L, 10437L, 10487L, 10499L, 10549L, 10561L, 10611L, 10623L, 10673L, 10685L, 10735L, 10747L, 10797L, 10809L, 10859L, 10871L, 10922L, 10933L, 10984L, 10995L, 11046L, 11057L, 11108L, 11119L, 11171L, 11181L, 11233L, 11243L, 11295L, 11305L, 11357L, 11367L, 11419L, 11429L, 11481L, 11491L, 11543L, 11553L, 11605L, 11615L, 11667L, 11677L, 11729L, 11739L, 11791L, 11801L, 11853L, 11863L, 11915L, 11925L, 11977L, 11987L, 12039L, 12049L, 12101L, 12111L, 12163L, 12173L, 12223L, 12233L, 12283L, 12293L, 12343L, 12353L, 12403L, 12413L, 12463L, 12473L, 12523L, 12533L, 12583L, 12593L, 12643L, 12653L, 12703L, 12713L, 12763L, 12773L, 12823L, 12833L, 12883L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Indianapolis" rownames(res) <- NULL tzdb_cache[["Indianapolis"]] <- res res } "Knox" <- function() { if(!is.null(tzdb_cache[["Knox"]])) return(tzdb_cache[["Knox"]]) ind <- c(49L, 329L, 365L, 381L, 420L, 1509L, 1543L, 1653L, 1670L, 1701L, 1720L, 1753L, 1767L, 1807L, 1825L, 1863L, 1878L, 1914L, 1924L, 1961L, 1969L, 1996L, 2008L, 2032L, 2059L, 2076L, 2101L, 2121L, 2136L, 2165L, 2175L, 2202L, 2228L, 2249L, 2274L, 2290L, 2316L, 2332L, 2385L, 2558L, 2585L, 2606L, 2626L, 2646L, 2672L, 2694L, 2720L, 2739L, 2769L, 2792L, 2824L, 2847L, 2879L, 2894L, 2965L, 2982L, 3048L, 3080L, 3125L, 3160L, 3209L, 3247L, 3294L, 3335L, 3386L, 3429L, 3473L, 3521L, 3567L, 3620L, 3671L, 3725L, 3782L, 3833L, 3889L, 3941L, 3996L, 4062L, 4123L, 4179L, 4251L, 4311L, 4378L, 4439L, 4503L, 4567L, 4626L, 6525L, 6588L, 6608L, 6705L, 6723L, 6830L, 6845L, 6949L, 6967L, 7069L, 7084L, 7174L, 7192L, 7264L, 7279L, 7351L, 7367L, 7457L, 7473L, 7548L, 7562L, 7648L, 7663L, 7734L, 7749L, 7819L, 7836L, 7901L, 7914L, 7980L, 7994L, 8057L, 8068L, 8129L, 8139L, 8192L, 8203L, 8254L, 8265L, 8316L, 8327L, 8378L, 8390L, 8440L, 8452L, 8502L, 8514L, 8564L, 8576L, 8626L, 8638L, 8688L, 8700L, 8750L, 8762L, 8812L, 8824L, 8875L, 8886L, 8937L, 8948L, 8999L, 9010L, 9061L, 9072L, 9124L, 9134L, 9186L, 9196L, 9248L, 9258L, 9310L, 9320L, 9372L, 9382L, 9434L, 9444L, 9496L, 9506L, 9558L, 9568L, 9620L, 9630L, 9682L, 9692L, 9744L, 9754L, 9806L, 9816L, 9868L, 9878L, 9930L, 9940L, 9992L, 10002L, 10054L, 10064L, 10116L, 10126L, 10178L, 10189L, 10240L, 10251L, 10302L, 10313L, 10364L, 10375L, 10426L, 10438L, 10488L, 10500L, 10550L, 10562L, 10612L, 10624L, 10674L, 10686L, 10736L, 10748L, 10798L, 10810L, 10860L, 10872L, 10923L, 10934L, 10985L, 10996L, 11047L, 11058L, 11109L, 11120L, 11172L, 11182L, 11234L, 11244L, 11296L, 11306L, 11358L, 11368L, 11420L, 11430L, 11482L, 11492L, 11544L, 11554L, 11606L, 11616L, 11668L, 11678L, 11730L, 11740L, 11792L, 11802L, 11854L, 11864L, 11916L, 11926L, 11978L, 11988L, 12040L, 12050L, 12102L, 12112L, 12164L, 12174L, 12224L, 12234L, 12284L, 12294L, 12344L, 12354L, 12404L, 12414L, 12464L, 12474L, 12524L, 12534L, 12584L, 12594L, 12644L, 12654L, 12704L, 12714L, 12764L, 12774L, 12824L, 12834L, 12884L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Knox" rownames(res) <- NULL tzdb_cache[["Knox"]] <- res res } "Marengo" <- function() { if(!is.null(tzdb_cache[["Marengo"]])) return(tzdb_cache[["Marengo"]]) ind <- c(49L, 329L, 365L, 381L, 420L, 1509L, 1543L, 1863L, 1878L, 1996L, 2008L, 2032L, 2047L, 2076L, 2090L, 2121L, 2136L, 2165L, 2175L, 2202L, 2215L, 2249L, 2259L, 2291L, 2645L, 2671L, 2693L, 2719L, 2738L, 2768L, 2791L, 2823L, 2845L, 2966L, 2981L, 3047L, 6524L, 6587L, 6607L, 6704L, 6722L, 6829L, 6844L, 6948L, 6966L, 7068L, 7083L, 7173L, 7191L, 7263L, 7278L, 7350L, 7366L, 7456L, 7472L, 7547L, 7561L, 7647L, 7662L, 7733L, 7748L, 7818L, 7835L, 7900L, 7913L, 7979L, 7993L, 8056L, 8067L, 8128L, 8138L, 8191L, 8202L, 8253L, 8264L, 8315L, 8326L, 8377L, 8389L, 8439L, 8451L, 8501L, 8513L, 8563L, 8575L, 8625L, 8637L, 8687L, 8699L, 8749L, 8761L, 8811L, 8823L, 8874L, 8885L, 8936L, 8947L, 8998L, 9009L, 9060L, 9071L, 9123L, 9133L, 9185L, 9195L, 9247L, 9257L, 9309L, 9319L, 9371L, 9381L, 9433L, 9443L, 9495L, 9505L, 9557L, 9567L, 9619L, 9629L, 9681L, 9691L, 9743L, 9753L, 9805L, 9815L, 9867L, 9877L, 9929L, 9939L, 9991L, 10001L, 10053L, 10063L, 10115L, 10125L, 10177L, 10188L, 10239L, 10250L, 10301L, 10312L, 10363L, 10374L, 10425L, 10437L, 10487L, 10499L, 10549L, 10561L, 10611L, 10623L, 10673L, 10685L, 10735L, 10747L, 10797L, 10809L, 10859L, 10871L, 10922L, 10933L, 10984L, 10995L, 11046L, 11057L, 11108L, 11119L, 11171L, 11181L, 11233L, 11243L, 11295L, 11305L, 11357L, 11367L, 11419L, 11429L, 11481L, 11491L, 11543L, 11553L, 11605L, 11615L, 11667L, 11677L, 11729L, 11739L, 11791L, 11801L, 11853L, 11863L, 11915L, 11925L, 11977L, 11987L, 12039L, 12049L, 12101L, 12111L, 12163L, 12173L, 12223L, 12233L, 12283L, 12293L, 12343L, 12353L, 12403L, 12413L, 12463L, 12473L, 12523L, 12533L, 12583L, 12593L, 12643L, 12653L, 12703L, 12713L, 12763L, 12773L, 12823L, 12833L, 12883L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Marengo" rownames(res) <- NULL tzdb_cache[["Marengo"]] <- res res } "Petersburg" <- function() { if(!is.null(tzdb_cache[["Petersburg"]])) return(tzdb_cache[["Petersburg"]]) ind <- c(49L, 329L, 365L, 381L, 420L, 1509L, 1543L, 2037L, 2047L, 2076L, 2090L, 2121L, 2136L, 2165L, 2175L, 2202L, 2215L, 2249L, 2259L, 2290L, 2316L, 2331L, 2349L, 2365L, 2385L, 2413L, 2435L, 2464L, 2533L, 2558L, 2585L, 2606L, 2626L, 2646L, 2672L, 2694L, 2720L, 2739L, 2769L, 2792L, 2824L, 2847L, 2879L, 2894L, 2965L, 2982L, 3048L, 3080L, 3125L, 6525L, 6588L, 6706L, 6722L, 6829L, 6844L, 6948L, 6966L, 7068L, 7083L, 7173L, 7191L, 7263L, 7278L, 7350L, 7366L, 7456L, 7472L, 7547L, 7561L, 7647L, 7662L, 7733L, 7748L, 7818L, 7835L, 7900L, 7913L, 7979L, 7993L, 8056L, 8067L, 8128L, 8138L, 8191L, 8202L, 8253L, 8264L, 8315L, 8326L, 8377L, 8389L, 8439L, 8451L, 8501L, 8513L, 8563L, 8575L, 8625L, 8637L, 8687L, 8699L, 8749L, 8761L, 8811L, 8823L, 8874L, 8885L, 8936L, 8947L, 8998L, 9009L, 9060L, 9071L, 9123L, 9133L, 9185L, 9195L, 9247L, 9257L, 9309L, 9319L, 9371L, 9381L, 9433L, 9443L, 9495L, 9505L, 9557L, 9567L, 9619L, 9629L, 9681L, 9691L, 9743L, 9753L, 9805L, 9815L, 9867L, 9877L, 9929L, 9939L, 9991L, 10001L, 10053L, 10063L, 10115L, 10125L, 10177L, 10188L, 10239L, 10250L, 10301L, 10312L, 10363L, 10374L, 10425L, 10437L, 10487L, 10499L, 10549L, 10561L, 10611L, 10623L, 10673L, 10685L, 10735L, 10747L, 10797L, 10809L, 10859L, 10871L, 10922L, 10933L, 10984L, 10995L, 11046L, 11057L, 11108L, 11119L, 11171L, 11181L, 11233L, 11243L, 11295L, 11305L, 11357L, 11367L, 11419L, 11429L, 11481L, 11491L, 11543L, 11553L, 11605L, 11615L, 11667L, 11677L, 11729L, 11739L, 11791L, 11801L, 11853L, 11863L, 11915L, 11925L, 11977L, 11987L, 12039L, 12049L, 12101L, 12111L, 12163L, 12173L, 12223L, 12233L, 12283L, 12293L, 12343L, 12353L, 12403L, 12413L, 12463L, 12473L, 12523L, 12533L, 12583L, 12593L, 12643L, 12653L, 12703L, 12713L, 12763L, 12773L, 12823L, 12833L, 12883L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Petersburg" rownames(res) <- NULL tzdb_cache[["Petersburg"]] <- res res } "Tell_City" <- function() { if(!is.null(tzdb_cache[["Tell_City"]])) return(tzdb_cache[["Tell_City"]]) ind <- c(49L, 329L, 365L, 381L, 420L, 1509L, 1543L, 2037L, 2047L, 2076L, 2090L, 2121L, 2136L, 2165L, 2175L, 2202L, 2215L, 2249L, 2259L, 2290L, 2316L, 2331L, 2349L, 2365L, 2385L, 2414L, 2585L, 2606L, 2626L, 2647L, 2671L, 2693L, 6525L, 6588L, 6608L, 6705L, 6723L, 6830L, 6845L, 6949L, 6967L, 7069L, 7084L, 7174L, 7192L, 7264L, 7279L, 7351L, 7367L, 7457L, 7473L, 7548L, 7562L, 7648L, 7663L, 7734L, 7749L, 7819L, 7836L, 7901L, 7914L, 7980L, 7994L, 8057L, 8068L, 8129L, 8139L, 8192L, 8203L, 8254L, 8265L, 8316L, 8327L, 8378L, 8390L, 8440L, 8452L, 8502L, 8514L, 8564L, 8576L, 8626L, 8638L, 8688L, 8700L, 8750L, 8762L, 8812L, 8824L, 8875L, 8886L, 8937L, 8948L, 8999L, 9010L, 9061L, 9072L, 9124L, 9134L, 9186L, 9196L, 9248L, 9258L, 9310L, 9320L, 9372L, 9382L, 9434L, 9444L, 9496L, 9506L, 9558L, 9568L, 9620L, 9630L, 9682L, 9692L, 9744L, 9754L, 9806L, 9816L, 9868L, 9878L, 9930L, 9940L, 9992L, 10002L, 10054L, 10064L, 10116L, 10126L, 10178L, 10189L, 10240L, 10251L, 10302L, 10313L, 10364L, 10375L, 10426L, 10438L, 10488L, 10500L, 10550L, 10562L, 10612L, 10624L, 10674L, 10686L, 10736L, 10748L, 10798L, 10810L, 10860L, 10872L, 10923L, 10934L, 10985L, 10996L, 11047L, 11058L, 11109L, 11120L, 11172L, 11182L, 11234L, 11244L, 11296L, 11306L, 11358L, 11368L, 11420L, 11430L, 11482L, 11492L, 11544L, 11554L, 11606L, 11616L, 11668L, 11678L, 11730L, 11740L, 11792L, 11802L, 11854L, 11864L, 11916L, 11926L, 11978L, 11988L, 12040L, 12050L, 12102L, 12112L, 12164L, 12174L, 12224L, 12234L, 12284L, 12294L, 12344L, 12354L, 12404L, 12414L, 12464L, 12474L, 12524L, 12534L, 12584L, 12594L, 12644L, 12654L, 12704L, 12714L, 12764L, 12774L, 12824L, 12834L, 12884L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Tell_City" rownames(res) <- NULL tzdb_cache[["Tell_City"]] <- res res } "Vevay" <- function() { if(!is.null(tzdb_cache[["Vevay"]])) return(tzdb_cache[["Vevay"]]) ind <- c(49L, 329L, 365L, 381L, 420L, 1509L, 1543L, 1997L, 2645L, 2671L, 2693L, 2719L, 2738L, 2768L, 2791L, 2823L, 6524L, 6587L, 6607L, 6704L, 6722L, 6829L, 6844L, 6948L, 6966L, 7068L, 7083L, 7173L, 7191L, 7263L, 7278L, 7350L, 7366L, 7456L, 7472L, 7547L, 7561L, 7647L, 7662L, 7733L, 7748L, 7818L, 7835L, 7900L, 7913L, 7979L, 7993L, 8056L, 8067L, 8128L, 8138L, 8191L, 8202L, 8253L, 8264L, 8315L, 8326L, 8377L, 8389L, 8439L, 8451L, 8501L, 8513L, 8563L, 8575L, 8625L, 8637L, 8687L, 8699L, 8749L, 8761L, 8811L, 8823L, 8874L, 8885L, 8936L, 8947L, 8998L, 9009L, 9060L, 9071L, 9123L, 9133L, 9185L, 9195L, 9247L, 9257L, 9309L, 9319L, 9371L, 9381L, 9433L, 9443L, 9495L, 9505L, 9557L, 9567L, 9619L, 9629L, 9681L, 9691L, 9743L, 9753L, 9805L, 9815L, 9867L, 9877L, 9929L, 9939L, 9991L, 10001L, 10053L, 10063L, 10115L, 10125L, 10177L, 10188L, 10239L, 10250L, 10301L, 10312L, 10363L, 10374L, 10425L, 10437L, 10487L, 10499L, 10549L, 10561L, 10611L, 10623L, 10673L, 10685L, 10735L, 10747L, 10797L, 10809L, 10859L, 10871L, 10922L, 10933L, 10984L, 10995L, 11046L, 11057L, 11108L, 11119L, 11171L, 11181L, 11233L, 11243L, 11295L, 11305L, 11357L, 11367L, 11419L, 11429L, 11481L, 11491L, 11543L, 11553L, 11605L, 11615L, 11667L, 11677L, 11729L, 11739L, 11791L, 11801L, 11853L, 11863L, 11915L, 11925L, 11977L, 11987L, 12039L, 12049L, 12101L, 12111L, 12163L, 12173L, 12223L, 12233L, 12283L, 12293L, 12343L, 12353L, 12403L, 12413L, 12463L, 12473L, 12523L, 12533L, 12583L, 12593L, 12643L, 12653L, 12703L, 12713L, 12763L, 12773L, 12823L, 12833L, 12883L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Vevay" rownames(res) <- NULL tzdb_cache[["Vevay"]] <- res res } "Vincennes" <- function() { if(!is.null(tzdb_cache[["Vincennes"]])) return(tzdb_cache[["Vincennes"]]) ind <- c(49L, 329L, 365L, 381L, 420L, 1509L, 1543L, 1591L, 1610L, 1961L, 1969L, 1996L, 2008L, 2037L, 2047L, 2076L, 2090L, 2121L, 2136L, 2165L, 2175L, 2202L, 2215L, 2249L, 2274L, 2290L, 2301L, 2331L, 2349L, 2365L, 2385L, 2414L, 2645L, 2671L, 2693L, 6525L, 6588L, 6706L, 6722L, 6829L, 6844L, 6948L, 6966L, 7068L, 7083L, 7173L, 7191L, 7263L, 7278L, 7350L, 7366L, 7456L, 7472L, 7547L, 7561L, 7647L, 7662L, 7733L, 7748L, 7818L, 7835L, 7900L, 7913L, 7979L, 7993L, 8056L, 8067L, 8128L, 8138L, 8191L, 8202L, 8253L, 8264L, 8315L, 8326L, 8377L, 8389L, 8439L, 8451L, 8501L, 8513L, 8563L, 8575L, 8625L, 8637L, 8687L, 8699L, 8749L, 8761L, 8811L, 8823L, 8874L, 8885L, 8936L, 8947L, 8998L, 9009L, 9060L, 9071L, 9123L, 9133L, 9185L, 9195L, 9247L, 9257L, 9309L, 9319L, 9371L, 9381L, 9433L, 9443L, 9495L, 9505L, 9557L, 9567L, 9619L, 9629L, 9681L, 9691L, 9743L, 9753L, 9805L, 9815L, 9867L, 9877L, 9929L, 9939L, 9991L, 10001L, 10053L, 10063L, 10115L, 10125L, 10177L, 10188L, 10239L, 10250L, 10301L, 10312L, 10363L, 10374L, 10425L, 10437L, 10487L, 10499L, 10549L, 10561L, 10611L, 10623L, 10673L, 10685L, 10735L, 10747L, 10797L, 10809L, 10859L, 10871L, 10922L, 10933L, 10984L, 10995L, 11046L, 11057L, 11108L, 11119L, 11171L, 11181L, 11233L, 11243L, 11295L, 11305L, 11357L, 11367L, 11419L, 11429L, 11481L, 11491L, 11543L, 11553L, 11605L, 11615L, 11667L, 11677L, 11729L, 11739L, 11791L, 11801L, 11853L, 11863L, 11915L, 11925L, 11977L, 11987L, 12039L, 12049L, 12101L, 12111L, 12163L, 12173L, 12223L, 12233L, 12283L, 12293L, 12343L, 12353L, 12403L, 12413L, 12463L, 12473L, 12523L, 12533L, 12583L, 12593L, 12643L, 12653L, 12703L, 12713L, 12763L, 12773L, 12823L, 12833L, 12883L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Vincennes" rownames(res) <- NULL tzdb_cache[["Vincennes"]] <- res res } "Winamac" <- function() { if(!is.null(tzdb_cache[["Winamac"]])) return(tzdb_cache[["Winamac"]]) ind <- c(49L, 329L, 365L, 381L, 420L, 1509L, 1543L, 1591L, 1610L, 1653L, 1670L, 1701L, 1720L, 1753L, 1767L, 1807L, 1825L, 1863L, 1878L, 1914L, 1924L, 1961L, 1969L, 1996L, 2008L, 2032L, 2059L, 2076L, 2101L, 2121L, 2136L, 2165L, 2175L, 2202L, 2215L, 2249L, 2259L, 2291L, 2645L, 2671L, 2693L, 6525L, 6588L, 6609L, 6704L, 6722L, 6829L, 6844L, 6948L, 6966L, 7068L, 7083L, 7173L, 7191L, 7263L, 7278L, 7350L, 7366L, 7456L, 7472L, 7547L, 7561L, 7647L, 7662L, 7733L, 7748L, 7818L, 7835L, 7900L, 7913L, 7979L, 7993L, 8056L, 8067L, 8128L, 8138L, 8191L, 8202L, 8253L, 8264L, 8315L, 8326L, 8377L, 8389L, 8439L, 8451L, 8501L, 8513L, 8563L, 8575L, 8625L, 8637L, 8687L, 8699L, 8749L, 8761L, 8811L, 8823L, 8874L, 8885L, 8936L, 8947L, 8998L, 9009L, 9060L, 9071L, 9123L, 9133L, 9185L, 9195L, 9247L, 9257L, 9309L, 9319L, 9371L, 9381L, 9433L, 9443L, 9495L, 9505L, 9557L, 9567L, 9619L, 9629L, 9681L, 9691L, 9743L, 9753L, 9805L, 9815L, 9867L, 9877L, 9929L, 9939L, 9991L, 10001L, 10053L, 10063L, 10115L, 10125L, 10177L, 10188L, 10239L, 10250L, 10301L, 10312L, 10363L, 10374L, 10425L, 10437L, 10487L, 10499L, 10549L, 10561L, 10611L, 10623L, 10673L, 10685L, 10735L, 10747L, 10797L, 10809L, 10859L, 10871L, 10922L, 10933L, 10984L, 10995L, 11046L, 11057L, 11108L, 11119L, 11171L, 11181L, 11233L, 11243L, 11295L, 11305L, 11357L, 11367L, 11419L, 11429L, 11481L, 11491L, 11543L, 11553L, 11605L, 11615L, 11667L, 11677L, 11729L, 11739L, 11791L, 11801L, 11853L, 11863L, 11915L, 11925L, 11977L, 11987L, 12039L, 12049L, 12101L, 12111L, 12163L, 12173L, 12223L, 12233L, 12283L, 12293L, 12343L, 12353L, 12403L, 12413L, 12463L, 12473L, 12523L, 12533L, 12583L, 12593L, 12643L, 12653L, 12703L, 12713L, 12763L, 12773L, 12823L, 12833L, 12883L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Winamac" rownames(res) <- NULL tzdb_cache[["Winamac"]] <- res res } "Inuvik" <- function() { if(!is.null(tzdb_cache[["Inuvik"]])) return(tzdb_cache[["Inuvik"]]) ind <- c(1943L, 2795L, 2827L, 2849L, 2882L, 2927L, 2969L, 3014L, 3051L, 3082L, 3128L, 3162L, 3212L, 3249L, 3297L, 3338L, 3387L, 3430L, 3474L, 3522L, 3568L, 3621L, 3672L, 3726L, 3783L, 3834L, 3890L, 3942L, 3997L, 4063L, 4124L, 4180L, 4252L, 4312L, 4379L, 4440L, 4504L, 4568L, 4627L, 4691L, 4767L, 4844L, 4914L, 4976L, 5038L, 5095L, 5156L, 5213L, 5274L, 5334L, 5396L, 5455L, 5515L, 5569L, 5630L, 5685L, 5745L, 5802L, 5867L, 5921L, 5990L, 6049L, 6110L, 6167L, 6228L, 6283L, 6351L, 6409L, 6473L, 6527L, 6589L, 6610L, 6707L, 6724L, 6831L, 6846L, 6950L, 6968L, 7070L, 7085L, 7175L, 7193L, 7265L, 7280L, 7352L, 7368L, 7458L, 7474L, 7549L, 7563L, 7649L, 7664L, 7735L, 7750L, 7820L, 7837L, 7902L, 7915L, 7981L, 7995L, 8058L, 8069L, 8130L, 8140L, 8193L, 8204L, 8255L, 8266L, 8317L, 8328L, 8379L, 8391L, 8441L, 8453L, 8503L, 8515L, 8565L, 8577L, 8627L, 8639L, 8689L, 8701L, 8751L, 8763L, 8813L, 8825L, 8876L, 8887L, 8938L, 8949L, 9000L, 9011L, 9062L, 9073L, 9125L, 9135L, 9187L, 9197L, 9249L, 9259L, 9311L, 9321L, 9373L, 9383L, 9435L, 9445L, 9497L, 9507L, 9559L, 9569L, 9621L, 9631L, 9683L, 9693L, 9745L, 9755L, 9807L, 9817L, 9869L, 9879L, 9931L, 9941L, 9993L, 10003L, 10055L, 10065L, 10117L, 10127L, 10179L, 10190L, 10241L, 10252L, 10303L, 10314L, 10365L, 10376L, 10427L, 10439L, 10489L, 10501L, 10551L, 10563L, 10613L, 10625L, 10675L, 10687L, 10737L, 10749L, 10799L, 10811L, 10861L, 10873L, 10924L, 10935L, 10986L, 10997L, 11048L, 11059L, 11110L, 11121L, 11173L, 11183L, 11235L, 11245L, 11297L, 11307L, 11359L, 11369L, 11421L, 11431L, 11483L, 11493L, 11545L, 11555L, 11607L, 11617L, 11669L, 11679L, 11731L, 11741L, 11793L, 11803L, 11855L, 11865L, 11917L, 11927L, 11979L, 11989L, 12041L, 12051L, 12103L, 12113L, 12165L, 12175L, 12225L, 12235L, 12285L, 12295L, 12345L, 12355L, 12405L, 12415L, 12465L, 12475L, 12525L, 12535L, 12585L, 12595L, 12645L, 12655L, 12705L, 12715L, 12765L, 12775L, 12825L, 12835L, 12885L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Inuvik" rownames(res) <- NULL tzdb_cache[["Inuvik"]] <- res res } "Iqaluit" <- function() { if(!is.null(tzdb_cache[["Iqaluit"]])) return(tzdb_cache[["Iqaluit"]]) ind <- c(1513L, 1542L, 2791L, 2823L, 2845L, 2878L, 2924L, 2964L, 3011L, 3047L, 3079L, 3124L, 3159L, 3208L, 3246L, 3293L, 3334L, 3385L, 3428L, 3472L, 3520L, 3566L, 3619L, 3670L, 3724L, 3781L, 3832L, 3888L, 3940L, 3995L, 4061L, 4122L, 4178L, 4250L, 4310L, 4377L, 4438L, 4502L, 4566L, 4625L, 4689L, 4765L, 4842L, 4912L, 4974L, 5036L, 5093L, 5154L, 5211L, 5272L, 5332L, 5394L, 5453L, 5513L, 5567L, 5628L, 5683L, 5743L, 5865L, 5919L, 5988L, 6047L, 6108L, 6165L, 6226L, 6281L, 6349L, 6407L, 6471L, 6524L, 6587L, 6607L, 6704L, 6722L, 6829L, 6844L, 6948L, 6966L, 7068L, 7083L, 7173L, 7191L, 7263L, 7278L, 7350L, 7366L, 7456L, 7472L, 7547L, 7561L, 7647L, 7662L, 7733L, 7748L, 7818L, 7835L, 7900L, 7913L, 7979L, 7993L, 8056L, 8067L, 8128L, 8138L, 8191L, 8202L, 8253L, 8264L, 8315L, 8326L, 8377L, 8389L, 8439L, 8451L, 8501L, 8513L, 8563L, 8575L, 8625L, 8637L, 8687L, 8699L, 8749L, 8761L, 8811L, 8823L, 8874L, 8885L, 8936L, 8947L, 8998L, 9009L, 9060L, 9071L, 9123L, 9133L, 9185L, 9195L, 9247L, 9257L, 9309L, 9319L, 9371L, 9381L, 9433L, 9443L, 9495L, 9505L, 9557L, 9567L, 9619L, 9629L, 9681L, 9691L, 9743L, 9753L, 9805L, 9815L, 9867L, 9877L, 9929L, 9939L, 9991L, 10001L, 10053L, 10063L, 10115L, 10125L, 10177L, 10188L, 10239L, 10250L, 10301L, 10312L, 10363L, 10374L, 10425L, 10437L, 10487L, 10499L, 10549L, 10561L, 10611L, 10623L, 10673L, 10685L, 10735L, 10747L, 10797L, 10809L, 10859L, 10871L, 10922L, 10933L, 10984L, 10995L, 11046L, 11057L, 11108L, 11119L, 11171L, 11181L, 11233L, 11243L, 11295L, 11305L, 11357L, 11367L, 11419L, 11429L, 11481L, 11491L, 11543L, 11553L, 11605L, 11615L, 11667L, 11677L, 11729L, 11739L, 11791L, 11801L, 11853L, 11863L, 11915L, 11925L, 11977L, 11987L, 12039L, 12049L, 12101L, 12111L, 12163L, 12173L, 12223L, 12233L, 12283L, 12293L, 12343L, 12353L, 12403L, 12413L, 12463L, 12473L, 12523L, 12533L, 12583L, 12593L, 12643L, 12653L, 12703L, 12713L, 12763L, 12773L, 12823L, 12833L, 12883L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Iqaluit" rownames(res) <- NULL tzdb_cache[["Iqaluit"]] <- res res } "Jamaica" <- function() { if(!is.null(tzdb_cache[["Jamaica"]])) return(tzdb_cache[["Jamaica"]]) ind <- c(81L, 219L, 2893L, 2964L, 2981L, 3047L, 3079L, 3124L, 3159L, 3208L, 3246L, 3293L, 3334L, 3385L, 3428L, 3472L, 3520L, 3566L, 3619L, 3670L, 3724L, 3781L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Jamaica" rownames(res) <- NULL tzdb_cache[["Jamaica"]] <- res res } "Juneau" <- function() { if(!is.null(tzdb_cache[["Juneau"]])) return(tzdb_cache[["Juneau"]]) ind <- c(13L, 143L, 1512L, 1545L, 2649L, 2675L, 2696L, 2723L, 2741L, 2772L, 2795L, 2827L, 2849L, 2882L, 2896L, 2969L, 2984L, 3051L, 3082L, 3128L, 3162L, 3212L, 3249L, 3297L, 3337L, 3477L, 3523L, 3570L, 3622L, 3674L, 3727L, 3787L, 3836L, 3893L, 3944L, 4000L, 4065L, 4127L, 4182L, 4255L, 4314L, 4382L, 4442L, 4507L, 4570L, 4630L, 4693L, 4770L, 4846L, 4917L, 4978L, 5041L, 5097L, 5159L, 5215L, 5277L, 5336L, 5399L, 5457L, 5518L, 5571L, 5633L, 5687L, 5748L, 5804L, 5870L, 5923L, 5993L, 6051L, 6113L, 6169L, 6231L, 6285L, 6354L, 6411L, 6476L, 6529L, 6591L, 6612L, 6709L, 6726L, 6833L, 6848L, 6952L, 6970L, 7073L, 7087L, 7177L, 7195L, 7267L, 7282L, 7354L, 7370L, 7460L, 7477L, 7551L, 7565L, 7651L, 7666L, 7737L, 7752L, 7822L, 7839L, 7904L, 7917L, 7983L, 7997L, 8060L, 8071L, 8132L, 8142L, 8195L, 8206L, 8257L, 8268L, 8319L, 8330L, 8381L, 8393L, 8443L, 8455L, 8505L, 8517L, 8567L, 8579L, 8629L, 8641L, 8691L, 8703L, 8753L, 8765L, 8815L, 8827L, 8878L, 8889L, 8940L, 8951L, 9002L, 9013L, 9064L, 9075L, 9127L, 9137L, 9189L, 9199L, 9251L, 9261L, 9313L, 9323L, 9375L, 9385L, 9437L, 9447L, 9499L, 9509L, 9561L, 9571L, 9623L, 9633L, 9685L, 9695L, 9747L, 9757L, 9809L, 9819L, 9871L, 9881L, 9933L, 9943L, 9995L, 10005L, 10057L, 10067L, 10119L, 10129L, 10181L, 10192L, 10243L, 10254L, 10305L, 10316L, 10367L, 10378L, 10429L, 10441L, 10491L, 10503L, 10553L, 10565L, 10615L, 10627L, 10677L, 10689L, 10739L, 10751L, 10801L, 10813L, 10863L, 10875L, 10926L, 10937L, 10988L, 10999L, 11050L, 11061L, 11112L, 11123L, 11175L, 11185L, 11237L, 11247L, 11299L, 11309L, 11361L, 11371L, 11423L, 11433L, 11485L, 11495L, 11547L, 11557L, 11609L, 11619L, 11671L, 11681L, 11733L, 11743L, 11795L, 11805L, 11857L, 11867L, 11919L, 11929L, 11981L, 11991L, 12043L, 12053L, 12105L, 12115L, 12167L, 12177L, 12227L, 12237L, 12287L, 12297L, 12347L, 12357L, 12407L, 12417L, 12467L, 12477L, 12527L, 12537L, 12587L, 12597L, 12647L, 12657L, 12707L, 12717L, 12767L, 12777L, 12827L, 12837L, 12887L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Juneau" rownames(res) <- NULL tzdb_cache[["Juneau"]] <- res res } "Louisville" <- function() { if(!is.null(tzdb_cache[["Louisville"]])) return(tzdb_cache[["Louisville"]]) ind <- c(49L, 329L, 365L, 381L, 420L, 502L, 509L, 1254L, 1281L, 1509L, 1543L, 1589L, 1602L, 1807L, 1825L, 1863L, 1878L, 1914L, 1924L, 1961L, 1969L, 1996L, 2008L, 2032L, 2047L, 2076L, 2101L, 2121L, 2148L, 2165L, 2186L, 2202L, 2228L, 2249L, 2274L, 2299L, 2605L, 2625L, 2645L, 2671L, 2693L, 2719L, 2738L, 2768L, 2791L, 2823L, 2845L, 2966L, 2981L, 3047L, 3079L, 3124L, 3159L, 3208L, 3246L, 3293L, 3334L, 3385L, 3428L, 3472L, 3520L, 3566L, 3619L, 3670L, 3724L, 3781L, 3832L, 3888L, 3940L, 3995L, 4061L, 4122L, 4178L, 4250L, 4310L, 4377L, 4438L, 4502L, 4566L, 4625L, 4689L, 4765L, 4842L, 4912L, 4974L, 5036L, 5093L, 5154L, 5211L, 5272L, 5332L, 5394L, 5453L, 5513L, 5567L, 5628L, 5683L, 5742L, 5800L, 5864L, 5919L, 5988L, 6047L, 6108L, 6165L, 6226L, 6281L, 6349L, 6407L, 6471L, 6524L, 6587L, 6607L, 6704L, 6722L, 6829L, 6844L, 6948L, 6966L, 7068L, 7083L, 7173L, 7191L, 7263L, 7278L, 7350L, 7366L, 7456L, 7472L, 7547L, 7561L, 7647L, 7662L, 7733L, 7748L, 7818L, 7835L, 7900L, 7913L, 7979L, 7993L, 8056L, 8067L, 8128L, 8138L, 8191L, 8202L, 8253L, 8264L, 8315L, 8326L, 8377L, 8389L, 8439L, 8451L, 8501L, 8513L, 8563L, 8575L, 8625L, 8637L, 8687L, 8699L, 8749L, 8761L, 8811L, 8823L, 8874L, 8885L, 8936L, 8947L, 8998L, 9009L, 9060L, 9071L, 9123L, 9133L, 9185L, 9195L, 9247L, 9257L, 9309L, 9319L, 9371L, 9381L, 9433L, 9443L, 9495L, 9505L, 9557L, 9567L, 9619L, 9629L, 9681L, 9691L, 9743L, 9753L, 9805L, 9815L, 9867L, 9877L, 9929L, 9939L, 9991L, 10001L, 10053L, 10063L, 10115L, 10125L, 10177L, 10188L, 10239L, 10250L, 10301L, 10312L, 10363L, 10374L, 10425L, 10437L, 10487L, 10499L, 10549L, 10561L, 10611L, 10623L, 10673L, 10685L, 10735L, 10747L, 10797L, 10809L, 10859L, 10871L, 10922L, 10933L, 10984L, 10995L, 11046L, 11057L, 11108L, 11119L, 11171L, 11181L, 11233L, 11243L, 11295L, 11305L, 11357L, 11367L, 11419L, 11429L, 11481L, 11491L, 11543L, 11553L, 11605L, 11615L, 11667L, 11677L, 11729L, 11739L, 11791L, 11801L, 11853L, 11863L, 11915L, 11925L, 11977L, 11987L, 12039L, 12049L, 12101L, 12111L, 12163L, 12173L, 12223L, 12233L, 12283L, 12293L, 12343L, 12353L, 12403L, 12413L, 12463L, 12473L, 12523L, 12533L, 12583L, 12593L, 12643L, 12653L, 12703L, 12713L, 12763L, 12773L, 12823L, 12833L, 12883L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Louisville" rownames(res) <- NULL tzdb_cache[["Louisville"]] <- res res } "Monticello" <- function() { if(!is.null(tzdb_cache[["Monticello"]])) return(tzdb_cache[["Monticello"]]) ind <- c(49L, 329L, 365L, 381L, 420L, 1509L, 1543L, 2606L, 2626L, 2646L, 2672L, 2694L, 2720L, 2739L, 2769L, 2792L, 2824L, 2847L, 2879L, 2894L, 2965L, 2982L, 3048L, 3080L, 3125L, 3160L, 3209L, 3247L, 3294L, 3335L, 3386L, 3429L, 3473L, 3521L, 3567L, 3620L, 3671L, 3725L, 3782L, 3833L, 3889L, 3941L, 3996L, 4062L, 4123L, 4179L, 4251L, 4311L, 4378L, 4439L, 4503L, 4567L, 4626L, 4690L, 4766L, 4843L, 4913L, 4975L, 5037L, 5094L, 5155L, 5212L, 5273L, 5333L, 5395L, 5454L, 5514L, 5568L, 5629L, 5684L, 5744L, 5865L, 5919L, 5988L, 6047L, 6108L, 6165L, 6226L, 6281L, 6349L, 6407L, 6471L, 6524L, 6587L, 6607L, 6704L, 6722L, 6829L, 6844L, 6948L, 6966L, 7068L, 7083L, 7173L, 7191L, 7263L, 7278L, 7350L, 7366L, 7456L, 7472L, 7547L, 7561L, 7647L, 7662L, 7733L, 7748L, 7818L, 7835L, 7900L, 7913L, 7979L, 7993L, 8056L, 8067L, 8128L, 8138L, 8191L, 8202L, 8253L, 8264L, 8315L, 8326L, 8377L, 8389L, 8439L, 8451L, 8501L, 8513L, 8563L, 8575L, 8625L, 8637L, 8687L, 8699L, 8749L, 8761L, 8811L, 8823L, 8874L, 8885L, 8936L, 8947L, 8998L, 9009L, 9060L, 9071L, 9123L, 9133L, 9185L, 9195L, 9247L, 9257L, 9309L, 9319L, 9371L, 9381L, 9433L, 9443L, 9495L, 9505L, 9557L, 9567L, 9619L, 9629L, 9681L, 9691L, 9743L, 9753L, 9805L, 9815L, 9867L, 9877L, 9929L, 9939L, 9991L, 10001L, 10053L, 10063L, 10115L, 10125L, 10177L, 10188L, 10239L, 10250L, 10301L, 10312L, 10363L, 10374L, 10425L, 10437L, 10487L, 10499L, 10549L, 10561L, 10611L, 10623L, 10673L, 10685L, 10735L, 10747L, 10797L, 10809L, 10859L, 10871L, 10922L, 10933L, 10984L, 10995L, 11046L, 11057L, 11108L, 11119L, 11171L, 11181L, 11233L, 11243L, 11295L, 11305L, 11357L, 11367L, 11419L, 11429L, 11481L, 11491L, 11543L, 11553L, 11605L, 11615L, 11667L, 11677L, 11729L, 11739L, 11791L, 11801L, 11853L, 11863L, 11915L, 11925L, 11977L, 11987L, 12039L, 12049L, 12101L, 12111L, 12163L, 12173L, 12223L, 12233L, 12283L, 12293L, 12343L, 12353L, 12403L, 12413L, 12463L, 12473L, 12523L, 12533L, 12583L, 12593L, 12643L, 12653L, 12703L, 12713L, 12763L, 12773L, 12823L, 12833L, 12883L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Monticello" rownames(res) <- NULL tzdb_cache[["Monticello"]] <- res res } "La_Paz" <- function() { if(!is.null(tzdb_cache[["La_Paz"]])) return(tzdb_cache[["La_Paz"]]) ind <- c(75L, 847L, 852L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "La_Paz" rownames(res) <- NULL tzdb_cache[["La_Paz"]] <- res res } "Lima" <- function() { if(!is.null(tzdb_cache[["Lima"]])) return(tzdb_cache[["Lima"]]) ind <- c(82L, 196L, 1085L, 1094L, 1111L, 1133L, 1155L, 1189L, 4009L, 4054L, 4130L, 4172L, 4510L, 4560L, 5043L, 5086L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Lima" rownames(res) <- NULL tzdb_cache[["Lima"]] <- res res } "Los_Angeles" <- function() { if(!is.null(tzdb_cache[["Los_Angeles"]])) return(tzdb_cache[["Los_Angeles"]]) ind <- c(51L, 331L, 367L, 383L, 422L, 1512L, 1545L, 1688L, 1735L, 1808L, 1827L, 1864L, 1880L, 1915L, 1926L, 1962L, 1971L, 1998L, 2010L, 2034L, 2049L, 2077L, 2092L, 2122L, 2138L, 2167L, 2176L, 2203L, 2216L, 2250L, 2261L, 2292L, 2303L, 2333L, 2350L, 2366L, 2386L, 2415L, 2436L, 2467L, 2490L, 2515L, 2536L, 2560L, 2588L, 2608L, 2629L, 2649L, 2675L, 2696L, 2723L, 2741L, 2772L, 2795L, 2827L, 2849L, 2882L, 2896L, 2969L, 2984L, 3051L, 3082L, 3128L, 3162L, 3212L, 3249L, 3297L, 3337L, 3389L, 3431L, 3476L, 3523L, 3570L, 3622L, 3674L, 3727L, 3785L, 3835L, 3892L, 3943L, 3999L, 4064L, 4126L, 4181L, 4254L, 4313L, 4381L, 4441L, 4506L, 4569L, 4629L, 4692L, 4769L, 4845L, 4916L, 4977L, 5040L, 5096L, 5158L, 5214L, 5276L, 5335L, 5398L, 5456L, 5517L, 5570L, 5632L, 5686L, 5747L, 5803L, 5869L, 5922L, 5992L, 6050L, 6112L, 6168L, 6230L, 6284L, 6353L, 6410L, 6475L, 6528L, 6590L, 6611L, 6708L, 6725L, 6832L, 6847L, 6951L, 6969L, 7072L, 7086L, 7176L, 7194L, 7266L, 7281L, 7353L, 7369L, 7459L, 7475L, 7550L, 7564L, 7650L, 7665L, 7736L, 7751L, 7821L, 7838L, 7903L, 7916L, 7982L, 7996L, 8059L, 8070L, 8131L, 8141L, 8194L, 8205L, 8256L, 8267L, 8318L, 8329L, 8380L, 8392L, 8442L, 8454L, 8504L, 8516L, 8566L, 8578L, 8628L, 8640L, 8690L, 8702L, 8752L, 8764L, 8814L, 8826L, 8877L, 8888L, 8939L, 8950L, 9001L, 9012L, 9063L, 9074L, 9126L, 9136L, 9188L, 9198L, 9250L, 9260L, 9312L, 9322L, 9374L, 9384L, 9436L, 9446L, 9498L, 9508L, 9560L, 9570L, 9622L, 9632L, 9684L, 9694L, 9746L, 9756L, 9808L, 9818L, 9870L, 9880L, 9932L, 9942L, 9994L, 10004L, 10056L, 10066L, 10118L, 10128L, 10180L, 10191L, 10242L, 10253L, 10304L, 10315L, 10366L, 10377L, 10428L, 10440L, 10490L, 10502L, 10552L, 10564L, 10614L, 10626L, 10676L, 10688L, 10738L, 10750L, 10800L, 10812L, 10862L, 10874L, 10925L, 10936L, 10987L, 10998L, 11049L, 11060L, 11111L, 11122L, 11174L, 11184L, 11236L, 11246L, 11298L, 11308L, 11360L, 11370L, 11422L, 11432L, 11484L, 11494L, 11546L, 11556L, 11608L, 11618L, 11670L, 11680L, 11732L, 11742L, 11794L, 11804L, 11856L, 11866L, 11918L, 11928L, 11980L, 11990L, 12042L, 12052L, 12104L, 12114L, 12166L, 12176L, 12226L, 12236L, 12286L, 12296L, 12346L, 12356L, 12406L, 12416L, 12466L, 12476L, 12526L, 12536L, 12586L, 12596L, 12646L, 12656L, 12706L, 12716L, 12766L, 12776L, 12826L, 12836L, 12886L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Los_Angeles" rownames(res) <- NULL tzdb_cache[["Los_Angeles"]] <- res res } "Maceio" <- function() { if(!is.null(tzdb_cache[["Maceio"]])) return(tzdb_cache[["Maceio"]]) ind <- c(232L, 834L, 854L, 887L, 904L, 1785L, 1802L, 1842L, 1851L, 1893L, 1900L, 1940L, 1946L, 2391L, 2400L, 2443L, 2451L, 2492L, 2498L, 2538L, 2544L, 2590L, 2595L, 4004L, 4019L, 4112L, 4132L, 4243L, 4262L, 4364L, 4389L, 4487L, 4512L, 5260L, 5282L, 5704L, 5754L, 5825L, 5833L, 5952L, 5998L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Maceio" rownames(res) <- NULL tzdb_cache[["Maceio"]] <- res res } "Managua" <- function() { if(!is.null(tzdb_cache[["Managua"]])) return(tzdb_cache[["Managua"]]) ind <- c(87L, 952L, 2856L, 2978L, 3319L, 3350L, 3407L, 3439L, 4774L, 4858L, 4921L, 5402L, 6413L, 6432L, 6535L, 6551L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Managua" rownames(res) <- NULL tzdb_cache[["Managua"]] <- res res } "Manaus" <- function() { if(!is.null(tzdb_cache[["Manaus"]])) return(tzdb_cache[["Manaus"]]) ind <- c(241L, 835L, 855L, 888L, 905L, 1786L, 1803L, 1843L, 1853L, 1894L, 1901L, 1941L, 1947L, 2392L, 2401L, 2444L, 2452L, 2493L, 2499L, 2539L, 2545L, 2591L, 2596L, 4005L, 4020L, 4113L, 4133L, 4245L, 4263L, 5025L, 5045L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Manaus" rownames(res) <- NULL tzdb_cache[["Manaus"]] <- res res } "Martinique" <- function() { if(!is.null(tzdb_cache[["Martinique"]])) return(tzdb_cache[["Martinique"]]) ind <- c(72L, 205L, 3420L, 3454L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Martinique" rownames(res) <- NULL tzdb_cache[["Martinique"]] <- res res } "Matamoros" <- function() { if(!is.null(tzdb_cache[["Matamoros"]])) return(tzdb_cache[["Matamoros"]]) ind <- c(527L, 4311L, 4378L, 5333L, 5395L, 5454L, 5514L, 5568L, 5629L, 5684L, 5744L, 5801L, 5866L, 5932L, 5943L, 6048L, 6109L, 6166L, 6227L, 6282L, 6350L, 6408L, 6472L, 6526L, 6588L, 6648L, 6696L, 6767L, 6819L, 6887L, 6938L, 6967L, 7069L, 7084L, 7174L, 7192L, 7264L, 7279L, 7351L, 7367L, 7457L, 7473L, 7548L, 7562L, 7648L, 7663L, 7734L, 7749L, 7819L, 7836L, 7901L, 7914L, 7980L, 7994L, 8057L, 8068L, 8129L, 8139L, 8192L, 8203L, 8254L, 8265L, 8316L, 8327L, 8378L, 8390L, 8440L, 8452L, 8502L, 8514L, 8564L, 8576L, 8626L, 8638L, 8688L, 8700L, 8750L, 8762L, 8812L, 8824L, 8875L, 8886L, 8937L, 8948L, 8999L, 9010L, 9061L, 9072L, 9124L, 9134L, 9186L, 9196L, 9248L, 9258L, 9310L, 9320L, 9372L, 9382L, 9434L, 9444L, 9496L, 9506L, 9558L, 9568L, 9620L, 9630L, 9682L, 9692L, 9744L, 9754L, 9806L, 9816L, 9868L, 9878L, 9930L, 9940L, 9992L, 10002L, 10054L, 10064L, 10116L, 10126L, 10178L, 10189L, 10240L, 10251L, 10302L, 10313L, 10364L, 10375L, 10426L, 10438L, 10488L, 10500L, 10550L, 10562L, 10612L, 10624L, 10674L, 10686L, 10736L, 10748L, 10798L, 10810L, 10860L, 10872L, 10923L, 10934L, 10985L, 10996L, 11047L, 11058L, 11109L, 11120L, 11172L, 11182L, 11234L, 11244L, 11296L, 11306L, 11358L, 11368L, 11420L, 11430L, 11482L, 11492L, 11544L, 11554L, 11606L, 11616L, 11668L, 11678L, 11730L, 11740L, 11792L, 11802L, 11854L, 11864L, 11916L, 11926L, 11978L, 11988L, 12040L, 12050L, 12102L, 12112L, 12164L, 12174L, 12224L, 12234L, 12284L, 12294L, 12344L, 12354L, 12404L, 12414L, 12464L, 12474L, 12524L, 12534L, 12584L, 12594L, 12644L, 12654L, 12704L, 12714L, 12764L, 12774L, 12824L, 12834L, 12884L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Matamoros" rownames(res) <- NULL tzdb_cache[["Matamoros"]] <- res res } "Mazatlan" <- function() { if(!is.null(tzdb_cache[["Mazatlan"]])) return(tzdb_cache[["Mazatlan"]]) ind <- c(528L, 694L, 801L, 822L, 832L, 857L, 1329L, 1736L, 2681L, 5334L, 5396L, 5455L, 5515L, 5569L, 5630L, 5685L, 5745L, 5802L, 5867L, 5933L, 5944L, 6049L, 6110L, 6167L, 6228L, 6283L, 6351L, 6409L, 6473L, 6527L, 6589L, 6649L, 6697L, 6768L, 6820L, 6888L, 6939L, 7012L, 7063L, 7126L, 7169L, 7220L, 7258L, 7308L, 7345L, 7398L, 7448L, 7506L, 7539L, 7598L, 7640L, 7692L, 7726L, 7777L, 7810L, 7865L, 7895L, 7944L, 7972L, 8024L, 8051L, 8097L, 8122L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Mazatlan" rownames(res) <- NULL tzdb_cache[["Mazatlan"]] <- res res } "Menominee" <- function() { if(!is.null(tzdb_cache[["Menominee"]])) return(tzdb_cache[["Menominee"]]) ind <- c(63L, 329L, 365L, 381L, 420L, 1509L, 1543L, 1591L, 1610L, 2513L, 2533L, 2846L, 2879L, 2894L, 2965L, 2982L, 3048L, 3080L, 3125L, 3160L, 3209L, 3247L, 3294L, 3335L, 3386L, 3429L, 3473L, 3521L, 3567L, 3620L, 3671L, 3725L, 3782L, 3833L, 3889L, 3941L, 3996L, 4062L, 4123L, 4179L, 4251L, 4311L, 4378L, 4439L, 4503L, 4567L, 4626L, 4690L, 4766L, 4843L, 4913L, 4975L, 5037L, 5094L, 5155L, 5212L, 5273L, 5333L, 5395L, 5454L, 5514L, 5568L, 5629L, 5684L, 5744L, 5801L, 5866L, 5920L, 5989L, 6048L, 6109L, 6166L, 6227L, 6282L, 6350L, 6408L, 6472L, 6526L, 6588L, 6608L, 6705L, 6723L, 6830L, 6845L, 6949L, 6967L, 7069L, 7084L, 7174L, 7192L, 7264L, 7279L, 7351L, 7367L, 7457L, 7473L, 7548L, 7562L, 7648L, 7663L, 7734L, 7749L, 7819L, 7836L, 7901L, 7914L, 7980L, 7994L, 8057L, 8068L, 8129L, 8139L, 8192L, 8203L, 8254L, 8265L, 8316L, 8327L, 8378L, 8390L, 8440L, 8452L, 8502L, 8514L, 8564L, 8576L, 8626L, 8638L, 8688L, 8700L, 8750L, 8762L, 8812L, 8824L, 8875L, 8886L, 8937L, 8948L, 8999L, 9010L, 9061L, 9072L, 9124L, 9134L, 9186L, 9196L, 9248L, 9258L, 9310L, 9320L, 9372L, 9382L, 9434L, 9444L, 9496L, 9506L, 9558L, 9568L, 9620L, 9630L, 9682L, 9692L, 9744L, 9754L, 9806L, 9816L, 9868L, 9878L, 9930L, 9940L, 9992L, 10002L, 10054L, 10064L, 10116L, 10126L, 10178L, 10189L, 10240L, 10251L, 10302L, 10313L, 10364L, 10375L, 10426L, 10438L, 10488L, 10500L, 10550L, 10562L, 10612L, 10624L, 10674L, 10686L, 10736L, 10748L, 10798L, 10810L, 10860L, 10872L, 10923L, 10934L, 10985L, 10996L, 11047L, 11058L, 11109L, 11120L, 11172L, 11182L, 11234L, 11244L, 11296L, 11306L, 11358L, 11368L, 11420L, 11430L, 11482L, 11492L, 11544L, 11554L, 11606L, 11616L, 11668L, 11678L, 11730L, 11740L, 11792L, 11802L, 11854L, 11864L, 11916L, 11926L, 11978L, 11988L, 12040L, 12050L, 12102L, 12112L, 12164L, 12174L, 12224L, 12234L, 12284L, 12294L, 12344L, 12354L, 12404L, 12414L, 12464L, 12474L, 12524L, 12534L, 12584L, 12594L, 12644L, 12654L, 12704L, 12714L, 12764L, 12774L, 12824L, 12834L, 12884L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Menominee" rownames(res) <- NULL tzdb_cache[["Menominee"]] <- res res } "Merida" <- function() { if(!is.null(tzdb_cache[["Merida"]])) return(tzdb_cache[["Merida"]]) ind <- c(527L, 3575L, 3679L, 5333L, 5395L, 5454L, 5514L, 5568L, 5629L, 5684L, 5744L, 5801L, 5866L, 5932L, 5943L, 6048L, 6109L, 6166L, 6227L, 6282L, 6350L, 6408L, 6472L, 6526L, 6588L, 6648L, 6696L, 6767L, 6819L, 6887L, 6938L, 7010L, 7062L, 7125L, 7168L, 7219L, 7257L, 7307L, 7344L, 7397L, 7447L, 7505L, 7538L, 7597L, 7639L, 7691L, 7725L, 7776L, 7809L, 7864L, 7894L, 7943L, 7971L, 8023L, 8050L, 8096L, 8121L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Merida" rownames(res) <- NULL tzdb_cache[["Merida"]] <- res res } "Metlakatla" <- function() { if(!is.null(tzdb_cache[["Metlakatla"]])) return(tzdb_cache[["Metlakatla"]]) ind <- c(14L, 142L, 1512L, 1545L, 2649L, 2675L, 2696L, 2723L, 2741L, 2772L, 2795L, 2827L, 2849L, 2882L, 2896L, 2969L, 2984L, 3051L, 3082L, 3128L, 3162L, 3212L, 3249L, 3297L, 3337L, 3389L, 3431L, 3476L, 3523L, 3570L, 3622L, 3674L, 3727L, 3785L, 7551L, 7565L, 7651L, 7666L, 7737L, 7823L, 7828L, 7839L, 7904L, 7917L, 7983L, 7997L, 8060L, 8071L, 8132L, 8142L, 8195L, 8206L, 8257L, 8268L, 8319L, 8330L, 8381L, 8393L, 8443L, 8455L, 8505L, 8517L, 8567L, 8579L, 8629L, 8641L, 8691L, 8703L, 8753L, 8765L, 8815L, 8827L, 8878L, 8889L, 8940L, 8951L, 9002L, 9013L, 9064L, 9075L, 9127L, 9137L, 9189L, 9199L, 9251L, 9261L, 9313L, 9323L, 9375L, 9385L, 9437L, 9447L, 9499L, 9509L, 9561L, 9571L, 9623L, 9633L, 9685L, 9695L, 9747L, 9757L, 9809L, 9819L, 9871L, 9881L, 9933L, 9943L, 9995L, 10005L, 10057L, 10067L, 10119L, 10129L, 10181L, 10192L, 10243L, 10254L, 10305L, 10316L, 10367L, 10378L, 10429L, 10441L, 10491L, 10503L, 10553L, 10565L, 10615L, 10627L, 10677L, 10689L, 10739L, 10751L, 10801L, 10813L, 10863L, 10875L, 10926L, 10937L, 10988L, 10999L, 11050L, 11061L, 11112L, 11123L, 11175L, 11185L, 11237L, 11247L, 11299L, 11309L, 11361L, 11371L, 11423L, 11433L, 11485L, 11495L, 11547L, 11557L, 11609L, 11619L, 11671L, 11681L, 11733L, 11743L, 11795L, 11805L, 11857L, 11867L, 11919L, 11929L, 11981L, 11991L, 12043L, 12053L, 12105L, 12115L, 12167L, 12177L, 12227L, 12237L, 12287L, 12297L, 12347L, 12357L, 12407L, 12417L, 12467L, 12477L, 12527L, 12537L, 12587L, 12597L, 12647L, 12657L, 12707L, 12717L, 12767L, 12777L, 12827L, 12837L, 12887L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Metlakatla" rownames(res) <- NULL tzdb_cache[["Metlakatla"]] <- res res } "Mexico_City" <- function() { if(!is.null(tzdb_cache[["Mexico_City"]])) return(tzdb_cache[["Mexico_City"]]) ind <- c(528L, 694L, 801L, 822L, 832L, 857L, 1128L, 1149L, 1237L, 1244L, 1425L, 1449L, 1790L, 1818L, 5333L, 5395L, 5454L, 5514L, 5568L, 5629L, 5684L, 5744L, 5801L, 5866L, 5932L, 5943L, 6048L, 6109L, 6166L, 6227L, 6282L, 6350L, 6408L, 6472L, 6526L, 6588L, 6648L, 6696L, 6767L, 6819L, 6887L, 6938L, 7010L, 7062L, 7125L, 7168L, 7219L, 7257L, 7307L, 7344L, 7397L, 7447L, 7505L, 7538L, 7597L, 7639L, 7691L, 7725L, 7776L, 7809L, 7864L, 7894L, 7943L, 7971L, 8023L, 8050L, 8096L, 8121L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Mexico_City" rownames(res) <- NULL tzdb_cache[["Mexico_City"]] <- res res } "Miquelon" <- function() { if(!is.null(tzdb_cache[["Miquelon"]])) return(tzdb_cache[["Miquelon"]]) ind <- c(206L, 3436L, 4176L, 4246L, 4307L, 4375L, 4435L, 4500L, 4563L, 4623L, 4686L, 4763L, 4839L, 4910L, 4971L, 5034L, 5090L, 5152L, 5208L, 5270L, 5329L, 5392L, 5450L, 5511L, 5565L, 5625L, 5681L, 5739L, 5798L, 5861L, 5917L, 5985L, 6045L, 6105L, 6163L, 6223L, 6279L, 6347L, 6404L, 6468L, 6521L, 6583L, 6605L, 6702L, 6720L, 6827L, 6842L, 6946L, 6964L, 7066L, 7081L, 7170L, 7188L, 7259L, 7275L, 7346L, 7363L, 7452L, 7469L, 7543L, 7558L, 7643L, 7659L, 7729L, 7745L, 7814L, 7832L, 7896L, 7910L, 7975L, 7990L, 8052L, 8064L, 8124L, 8135L, 8187L, 8199L, 8249L, 8261L, 8311L, 8323L, 8373L, 8386L, 8435L, 8448L, 8497L, 8510L, 8559L, 8572L, 8621L, 8634L, 8683L, 8696L, 8745L, 8758L, 8807L, 8820L, 8870L, 8882L, 8932L, 8944L, 8994L, 9006L, 9056L, 9068L, 9119L, 9130L, 9181L, 9192L, 9243L, 9254L, 9305L, 9316L, 9367L, 9378L, 9429L, 9440L, 9491L, 9502L, 9553L, 9564L, 9615L, 9626L, 9677L, 9688L, 9739L, 9750L, 9801L, 9812L, 9863L, 9874L, 9925L, 9936L, 9987L, 9998L, 10049L, 10060L, 10111L, 10122L, 10173L, 10185L, 10235L, 10247L, 10297L, 10309L, 10359L, 10371L, 10421L, 10434L, 10483L, 10496L, 10545L, 10558L, 10607L, 10620L, 10669L, 10682L, 10731L, 10744L, 10793L, 10806L, 10855L, 10868L, 10918L, 10930L, 10980L, 10992L, 11042L, 11054L, 11104L, 11116L, 11167L, 11178L, 11229L, 11240L, 11291L, 11302L, 11353L, 11364L, 11415L, 11426L, 11477L, 11488L, 11539L, 11550L, 11601L, 11612L, 11663L, 11674L, 11725L, 11736L, 11787L, 11798L, 11849L, 11860L, 11911L, 11922L, 11973L, 11984L, 12035L, 12046L, 12097L, 12108L, 12159L, 12170L, 12219L, 12230L, 12279L, 12290L, 12339L, 12350L, 12399L, 12410L, 12459L, 12470L, 12519L, 12530L, 12579L, 12590L, 12639L, 12650L, 12699L, 12710L, 12759L, 12770L, 12819L, 12830L, 12879L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Miquelon" rownames(res) <- NULL tzdb_cache[["Miquelon"]] <- res res } "Moncton" <- function() { if(!is.null(tzdb_cache[["Moncton"]])) return(tzdb_cache[["Moncton"]]) ind <- c(52L, 167L, 334L, 363L, 918L, 919L, 951L, 953L, 987L, 989L, 1022L, 1023L, 1061L, 1064L, 1106L, 1107L, 1147L, 1153L, 1198L, 1217L, 1258L, 1278L, 1514L, 1541L, 1588L, 1608L, 1651L, 1668L, 1699L, 1718L, 1751L, 1765L, 1805L, 1823L, 1861L, 1876L, 1912L, 1922L, 1959L, 1967L, 1994L, 2006L, 2030L, 2045L, 2074L, 2088L, 2119L, 2146L, 2163L, 2184L, 2200L, 2226L, 2247L, 2272L, 2288L, 2314L, 2329L, 2347L, 2363L, 2383L, 2411L, 2433L, 2461L, 2485L, 2511L, 2530L, 2556L, 2583L, 2604L, 2624L, 2644L, 2669L, 2692L, 2717L, 2737L, 2766L, 2790L, 2821L, 2923L, 2963L, 3010L, 3046L, 3078L, 3123L, 3158L, 3207L, 3245L, 3292L, 3333L, 3384L, 3427L, 3471L, 3519L, 3565L, 3618L, 3669L, 3723L, 3780L, 3831L, 3887L, 3939L, 3994L, 4060L, 4121L, 4177L, 4249L, 4308L, 4376L, 4436L, 4501L, 4564L, 4624L, 4687L, 4764L, 4840L, 4911L, 4969L, 5033L, 5088L, 5151L, 5206L, 5269L, 5327L, 5391L, 5448L, 5510L, 5564L, 5624L, 5680L, 5738L, 5796L, 5860L, 5915L, 5984L, 6043L, 6104L, 6161L, 6222L, 6278L, 6346L, 6403L, 6467L, 6520L, 6582L, 6606L, 6703L, 6721L, 6828L, 6843L, 6947L, 6965L, 7067L, 7082L, 7172L, 7190L, 7261L, 7277L, 7348L, 7365L, 7454L, 7471L, 7545L, 7560L, 7645L, 7661L, 7731L, 7747L, 7816L, 7834L, 7898L, 7912L, 7977L, 7992L, 8054L, 8066L, 8126L, 8137L, 8189L, 8201L, 8251L, 8263L, 8313L, 8325L, 8375L, 8388L, 8437L, 8450L, 8499L, 8512L, 8561L, 8574L, 8623L, 8636L, 8685L, 8698L, 8747L, 8760L, 8809L, 8822L, 8872L, 8884L, 8934L, 8946L, 8996L, 9008L, 9058L, 9070L, 9121L, 9132L, 9183L, 9194L, 9245L, 9256L, 9307L, 9318L, 9369L, 9380L, 9431L, 9442L, 9493L, 9504L, 9555L, 9566L, 9617L, 9628L, 9679L, 9690L, 9741L, 9752L, 9803L, 9814L, 9865L, 9876L, 9927L, 9938L, 9989L, 10000L, 10051L, 10062L, 10113L, 10124L, 10175L, 10187L, 10237L, 10249L, 10299L, 10311L, 10361L, 10373L, 10423L, 10436L, 10485L, 10498L, 10547L, 10560L, 10609L, 10622L, 10671L, 10684L, 10733L, 10746L, 10795L, 10808L, 10857L, 10870L, 10920L, 10932L, 10982L, 10994L, 11044L, 11056L, 11106L, 11118L, 11169L, 11180L, 11231L, 11242L, 11293L, 11304L, 11355L, 11366L, 11417L, 11428L, 11479L, 11490L, 11541L, 11552L, 11603L, 11614L, 11665L, 11676L, 11727L, 11738L, 11789L, 11800L, 11851L, 11862L, 11913L, 11924L, 11975L, 11986L, 12037L, 12048L, 12099L, 12110L, 12161L, 12172L, 12221L, 12232L, 12281L, 12292L, 12341L, 12352L, 12401L, 12412L, 12461L, 12472L, 12521L, 12532L, 12581L, 12592L, 12641L, 12652L, 12701L, 12712L, 12761L, 12772L, 12821L, 12832L, 12881L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Moncton" rownames(res) <- NULL tzdb_cache[["Moncton"]] <- res res } "Monterrey" <- function() { if(!is.null(tzdb_cache[["Monterrey"]])) return(tzdb_cache[["Monterrey"]]) ind <- c(527L, 4311L, 4378L, 5333L, 5395L, 5454L, 5514L, 5568L, 5629L, 5684L, 5744L, 5801L, 5866L, 5932L, 5943L, 6048L, 6109L, 6166L, 6227L, 6282L, 6350L, 6408L, 6472L, 6526L, 6588L, 6648L, 6696L, 6767L, 6819L, 6887L, 6938L, 7010L, 7062L, 7125L, 7168L, 7219L, 7257L, 7307L, 7344L, 7397L, 7447L, 7505L, 7538L, 7597L, 7639L, 7691L, 7725L, 7776L, 7809L, 7864L, 7894L, 7943L, 7971L, 8023L, 8050L, 8096L, 8121L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Monterrey" rownames(res) <- NULL tzdb_cache[["Monterrey"]] <- res res } "Montevideo" <- function() { if(!is.null(tzdb_cache[["Montevideo"]])) return(tzdb_cache[["Montevideo"]]) ind <- c(194L, 457L, 578L, 587L, 628L, 637L, 653L, 660L, 931L, 937L, 966L, 978L, 1002L, 1010L, 1036L, 1046L, 1082L, 1093L, 1125L, 1132L, 1160L, 1190L, 1233L, 1242L, 1269L, 1374L, 1380L, 2209L, 2232L, 2235L, 2237L, 2455L, 2472L, 2612L, 2632L, 2688L, 2704L, 2786L, 2804L, 2900L, 2909L, 2939L, 2976L, 2998L, 3134L, 3140L, 3217L, 3226L, 3303L, 3312L, 3331L, 3403L, 4259L, 4265L, 4387L, 4393L, 4498L, 4514L, 4613L, 4641L, 4761L, 4794L, 4898L, 4928L, 6301L, 6397L, 6437L, 6482L, 6550L, 6602L, 6662L, 6718L, 6788L, 6839L, 6907L, 6961L, 7032L, 7079L, 7148L, 7187L, 7241L, 7273L, 7326L, 7361L, 7418L, 7467L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Montevideo" rownames(res) <- NULL tzdb_cache[["Montevideo"]] <- res res } "New_York" <- function() { if(!is.null(tzdb_cache[["New_York"]])) return(tzdb_cache[["New_York"]]) ind <- c(48L, 328L, 364L, 380L, 419L, 451L, 478L, 498L, 512L, 537L, 545L, 563L, 575L, 593L, 625L, 641L, 649L, 666L, 674L, 689L, 697L, 718L, 726L, 747L, 753L, 773L, 792L, 820L, 828L, 864L, 875L, 912L, 920L, 946L, 956L, 983L, 992L, 1019L, 1027L, 1056L, 1068L, 1101L, 1112L, 1144L, 1156L, 1194L, 1219L, 1253L, 1280L, 1513L, 1542L, 1590L, 1609L, 1652L, 1669L, 1700L, 1719L, 1752L, 1766L, 1806L, 1824L, 1862L, 1877L, 1913L, 1923L, 1960L, 1968L, 1995L, 2007L, 2031L, 2058L, 2075L, 2100L, 2120L, 2147L, 2164L, 2185L, 2201L, 2227L, 2248L, 2273L, 2289L, 2315L, 2330L, 2348L, 2364L, 2384L, 2412L, 2434L, 2462L, 2486L, 2512L, 2532L, 2557L, 2584L, 2605L, 2625L, 2645L, 2671L, 2693L, 2719L, 2738L, 2768L, 2791L, 2823L, 2845L, 2878L, 2893L, 2964L, 2981L, 3047L, 3079L, 3124L, 3159L, 3208L, 3246L, 3293L, 3334L, 3385L, 3428L, 3472L, 3520L, 3566L, 3619L, 3670L, 3724L, 3781L, 3832L, 3888L, 3940L, 3995L, 4061L, 4122L, 4178L, 4250L, 4310L, 4377L, 4438L, 4502L, 4566L, 4625L, 4689L, 4765L, 4842L, 4912L, 4974L, 5036L, 5093L, 5154L, 5211L, 5272L, 5332L, 5394L, 5453L, 5513L, 5567L, 5628L, 5683L, 5742L, 5800L, 5864L, 5919L, 5988L, 6047L, 6108L, 6165L, 6226L, 6281L, 6349L, 6407L, 6471L, 6524L, 6587L, 6607L, 6704L, 6722L, 6829L, 6844L, 6948L, 6966L, 7068L, 7083L, 7173L, 7191L, 7263L, 7278L, 7350L, 7366L, 7456L, 7472L, 7547L, 7561L, 7647L, 7662L, 7733L, 7748L, 7818L, 7835L, 7900L, 7913L, 7979L, 7993L, 8056L, 8067L, 8128L, 8138L, 8191L, 8202L, 8253L, 8264L, 8315L, 8326L, 8377L, 8389L, 8439L, 8451L, 8501L, 8513L, 8563L, 8575L, 8625L, 8637L, 8687L, 8699L, 8749L, 8761L, 8811L, 8823L, 8874L, 8885L, 8936L, 8947L, 8998L, 9009L, 9060L, 9071L, 9123L, 9133L, 9185L, 9195L, 9247L, 9257L, 9309L, 9319L, 9371L, 9381L, 9433L, 9443L, 9495L, 9505L, 9557L, 9567L, 9619L, 9629L, 9681L, 9691L, 9743L, 9753L, 9805L, 9815L, 9867L, 9877L, 9929L, 9939L, 9991L, 10001L, 10053L, 10063L, 10115L, 10125L, 10177L, 10188L, 10239L, 10250L, 10301L, 10312L, 10363L, 10374L, 10425L, 10437L, 10487L, 10499L, 10549L, 10561L, 10611L, 10623L, 10673L, 10685L, 10735L, 10747L, 10797L, 10809L, 10859L, 10871L, 10922L, 10933L, 10984L, 10995L, 11046L, 11057L, 11108L, 11119L, 11171L, 11181L, 11233L, 11243L, 11295L, 11305L, 11357L, 11367L, 11419L, 11429L, 11481L, 11491L, 11543L, 11553L, 11605L, 11615L, 11667L, 11677L, 11729L, 11739L, 11791L, 11801L, 11853L, 11863L, 11915L, 11925L, 11977L, 11987L, 12039L, 12049L, 12101L, 12111L, 12163L, 12173L, 12223L, 12233L, 12283L, 12293L, 12343L, 12353L, 12403L, 12413L, 12463L, 12473L, 12523L, 12533L, 12583L, 12593L, 12643L, 12653L, 12703L, 12713L, 12763L, 12773L, 12823L, 12833L, 12883L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "New_York" rownames(res) <- NULL tzdb_cache[["New_York"]] <- res res } "Nome" <- function() { if(!is.null(tzdb_cache[["Nome"]])) return(tzdb_cache[["Nome"]]) ind <- c(15L, 147L, 1507L, 2550L, 2652L, 2678L, 2699L, 2726L, 2744L, 2775L, 2798L, 2830L, 2852L, 2885L, 2899L, 2972L, 2987L, 3054L, 3085L, 3131L, 3165L, 3215L, 3252L, 3300L, 3341L, 3393L, 3434L, 3481L, 3526L, 3574L, 3625L, 3678L, 3729L, 3787L, 3836L, 3893L, 3944L, 4000L, 4065L, 4127L, 4182L, 4255L, 4314L, 4382L, 4442L, 4507L, 4570L, 4630L, 4693L, 4770L, 4846L, 4917L, 4978L, 5041L, 5097L, 5159L, 5215L, 5277L, 5336L, 5399L, 5457L, 5518L, 5571L, 5633L, 5687L, 5748L, 5804L, 5870L, 5923L, 5993L, 6051L, 6113L, 6169L, 6231L, 6285L, 6354L, 6411L, 6476L, 6529L, 6591L, 6612L, 6709L, 6726L, 6833L, 6848L, 6952L, 6970L, 7073L, 7087L, 7177L, 7195L, 7267L, 7282L, 7354L, 7370L, 7460L, 7477L, 7551L, 7565L, 7651L, 7666L, 7737L, 7752L, 7822L, 7839L, 7904L, 7917L, 7983L, 7997L, 8060L, 8071L, 8132L, 8142L, 8195L, 8206L, 8257L, 8268L, 8319L, 8330L, 8381L, 8393L, 8443L, 8455L, 8505L, 8517L, 8567L, 8579L, 8629L, 8641L, 8691L, 8703L, 8753L, 8765L, 8815L, 8827L, 8878L, 8889L, 8940L, 8951L, 9002L, 9013L, 9064L, 9075L, 9127L, 9137L, 9189L, 9199L, 9251L, 9261L, 9313L, 9323L, 9375L, 9385L, 9437L, 9447L, 9499L, 9509L, 9561L, 9571L, 9623L, 9633L, 9685L, 9695L, 9747L, 9757L, 9809L, 9819L, 9871L, 9881L, 9933L, 9943L, 9995L, 10005L, 10057L, 10067L, 10119L, 10129L, 10181L, 10192L, 10243L, 10254L, 10305L, 10316L, 10367L, 10378L, 10429L, 10441L, 10491L, 10503L, 10553L, 10565L, 10615L, 10627L, 10677L, 10689L, 10739L, 10751L, 10801L, 10813L, 10863L, 10875L, 10926L, 10937L, 10988L, 10999L, 11050L, 11061L, 11112L, 11123L, 11175L, 11185L, 11237L, 11247L, 11299L, 11309L, 11361L, 11371L, 11423L, 11433L, 11485L, 11495L, 11547L, 11557L, 11609L, 11619L, 11671L, 11681L, 11733L, 11743L, 11795L, 11805L, 11857L, 11867L, 11919L, 11929L, 11981L, 11991L, 12043L, 12053L, 12105L, 12115L, 12167L, 12177L, 12227L, 12237L, 12287L, 12297L, 12347L, 12357L, 12407L, 12417L, 12467L, 12477L, 12527L, 12537L, 12587L, 12597L, 12647L, 12657L, 12707L, 12717L, 12767L, 12777L, 12827L, 12837L, 12887L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Nome" rownames(res) <- NULL tzdb_cache[["Nome"]] <- res res } "Noronha" <- function() { if(!is.null(tzdb_cache[["Noronha"]])) return(tzdb_cache[["Noronha"]]) ind <- c(230L, 833L, 853L, 886L, 903L, 1784L, 1799L, 1841L, 1850L, 1892L, 1899L, 1939L, 1945L, 2390L, 2399L, 2442L, 2450L, 2491L, 2497L, 2537L, 2543L, 2589L, 2594L, 4003L, 4018L, 4111L, 4131L, 4241L, 4261L, 4363L, 4388L, 4486L, 4511L, 5703L, 5753L, 5824L, 5827L, 5951L, 5997L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Noronha" rownames(res) <- NULL tzdb_cache[["Noronha"]] <- res res } "Beulah" <- function() { if(!is.null(tzdb_cache[["Beulah"]])) return(tzdb_cache[["Beulah"]]) ind <- c(50L, 330L, 366L, 382L, 421L, 1510L, 1544L, 2559L, 2586L, 2607L, 2627L, 2648L, 2673L, 2695L, 2721L, 2740L, 2770L, 2793L, 2825L, 2848L, 2880L, 2895L, 2967L, 2983L, 3049L, 3081L, 3126L, 3161L, 3210L, 3248L, 3295L, 3336L, 3387L, 3430L, 3474L, 3522L, 3568L, 3621L, 3672L, 3726L, 3783L, 3834L, 3890L, 3942L, 3997L, 4063L, 4124L, 4180L, 4252L, 4312L, 4379L, 4440L, 4504L, 4568L, 4627L, 4691L, 4767L, 4844L, 4914L, 4976L, 5038L, 5095L, 5156L, 5213L, 5274L, 5334L, 5396L, 5455L, 5515L, 5569L, 5630L, 5685L, 5745L, 5802L, 5867L, 5921L, 5990L, 6049L, 6110L, 6167L, 6228L, 6283L, 6351L, 6409L, 6473L, 6527L, 6589L, 6610L, 6707L, 6724L, 6831L, 6846L, 6950L, 7071L, 7084L, 7174L, 7192L, 7264L, 7279L, 7351L, 7367L, 7457L, 7473L, 7548L, 7562L, 7648L, 7663L, 7734L, 7749L, 7819L, 7836L, 7901L, 7914L, 7980L, 7994L, 8057L, 8068L, 8129L, 8139L, 8192L, 8203L, 8254L, 8265L, 8316L, 8327L, 8378L, 8390L, 8440L, 8452L, 8502L, 8514L, 8564L, 8576L, 8626L, 8638L, 8688L, 8700L, 8750L, 8762L, 8812L, 8824L, 8875L, 8886L, 8937L, 8948L, 8999L, 9010L, 9061L, 9072L, 9124L, 9134L, 9186L, 9196L, 9248L, 9258L, 9310L, 9320L, 9372L, 9382L, 9434L, 9444L, 9496L, 9506L, 9558L, 9568L, 9620L, 9630L, 9682L, 9692L, 9744L, 9754L, 9806L, 9816L, 9868L, 9878L, 9930L, 9940L, 9992L, 10002L, 10054L, 10064L, 10116L, 10126L, 10178L, 10189L, 10240L, 10251L, 10302L, 10313L, 10364L, 10375L, 10426L, 10438L, 10488L, 10500L, 10550L, 10562L, 10612L, 10624L, 10674L, 10686L, 10736L, 10748L, 10798L, 10810L, 10860L, 10872L, 10923L, 10934L, 10985L, 10996L, 11047L, 11058L, 11109L, 11120L, 11172L, 11182L, 11234L, 11244L, 11296L, 11306L, 11358L, 11368L, 11420L, 11430L, 11482L, 11492L, 11544L, 11554L, 11606L, 11616L, 11668L, 11678L, 11730L, 11740L, 11792L, 11802L, 11854L, 11864L, 11916L, 11926L, 11978L, 11988L, 12040L, 12050L, 12102L, 12112L, 12164L, 12174L, 12224L, 12234L, 12284L, 12294L, 12344L, 12354L, 12404L, 12414L, 12464L, 12474L, 12524L, 12534L, 12584L, 12594L, 12644L, 12654L, 12704L, 12714L, 12764L, 12774L, 12824L, 12834L, 12884L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Beulah" rownames(res) <- NULL tzdb_cache[["Beulah"]] <- res res } "Center" <- function() { if(!is.null(tzdb_cache[["Center"]])) return(tzdb_cache[["Center"]]) ind <- c(50L, 330L, 366L, 382L, 421L, 1510L, 1544L, 2559L, 2586L, 2607L, 2627L, 2648L, 2673L, 2695L, 2721L, 2740L, 2770L, 2793L, 2825L, 2848L, 2880L, 2895L, 2967L, 2983L, 3049L, 3081L, 3126L, 3161L, 3210L, 3248L, 3295L, 3336L, 3387L, 3430L, 3474L, 3522L, 3568L, 3621L, 3672L, 3726L, 3783L, 3834L, 3890L, 3942L, 3997L, 4063L, 4124L, 4180L, 4252L, 4312L, 4379L, 4440L, 4504L, 4568L, 4627L, 4691L, 4767L, 4915L, 4975L, 5037L, 5094L, 5155L, 5212L, 5273L, 5333L, 5395L, 5454L, 5514L, 5568L, 5629L, 5684L, 5744L, 5801L, 5866L, 5920L, 5989L, 6048L, 6109L, 6166L, 6227L, 6282L, 6350L, 6408L, 6472L, 6526L, 6588L, 6608L, 6705L, 6723L, 6830L, 6845L, 6949L, 6967L, 7069L, 7084L, 7174L, 7192L, 7264L, 7279L, 7351L, 7367L, 7457L, 7473L, 7548L, 7562L, 7648L, 7663L, 7734L, 7749L, 7819L, 7836L, 7901L, 7914L, 7980L, 7994L, 8057L, 8068L, 8129L, 8139L, 8192L, 8203L, 8254L, 8265L, 8316L, 8327L, 8378L, 8390L, 8440L, 8452L, 8502L, 8514L, 8564L, 8576L, 8626L, 8638L, 8688L, 8700L, 8750L, 8762L, 8812L, 8824L, 8875L, 8886L, 8937L, 8948L, 8999L, 9010L, 9061L, 9072L, 9124L, 9134L, 9186L, 9196L, 9248L, 9258L, 9310L, 9320L, 9372L, 9382L, 9434L, 9444L, 9496L, 9506L, 9558L, 9568L, 9620L, 9630L, 9682L, 9692L, 9744L, 9754L, 9806L, 9816L, 9868L, 9878L, 9930L, 9940L, 9992L, 10002L, 10054L, 10064L, 10116L, 10126L, 10178L, 10189L, 10240L, 10251L, 10302L, 10313L, 10364L, 10375L, 10426L, 10438L, 10488L, 10500L, 10550L, 10562L, 10612L, 10624L, 10674L, 10686L, 10736L, 10748L, 10798L, 10810L, 10860L, 10872L, 10923L, 10934L, 10985L, 10996L, 11047L, 11058L, 11109L, 11120L, 11172L, 11182L, 11234L, 11244L, 11296L, 11306L, 11358L, 11368L, 11420L, 11430L, 11482L, 11492L, 11544L, 11554L, 11606L, 11616L, 11668L, 11678L, 11730L, 11740L, 11792L, 11802L, 11854L, 11864L, 11916L, 11926L, 11978L, 11988L, 12040L, 12050L, 12102L, 12112L, 12164L, 12174L, 12224L, 12234L, 12284L, 12294L, 12344L, 12354L, 12404L, 12414L, 12464L, 12474L, 12524L, 12534L, 12584L, 12594L, 12644L, 12654L, 12704L, 12714L, 12764L, 12774L, 12824L, 12834L, 12884L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Center" rownames(res) <- NULL tzdb_cache[["Center"]] <- res res } "New_Salem" <- function() { if(!is.null(tzdb_cache[["New_Salem"]])) return(tzdb_cache[["New_Salem"]]) ind <- c(50L, 330L, 366L, 382L, 421L, 1510L, 1544L, 2559L, 2586L, 2607L, 2627L, 2648L, 2673L, 2695L, 2721L, 2740L, 2770L, 2793L, 2825L, 2848L, 2880L, 2895L, 2967L, 2983L, 3049L, 3081L, 3126L, 3161L, 3210L, 3248L, 3295L, 3336L, 3387L, 3430L, 3474L, 3522L, 3568L, 3621L, 3672L, 3726L, 3783L, 3834L, 3890L, 3942L, 3997L, 4063L, 4124L, 4180L, 4252L, 4312L, 4379L, 4440L, 4504L, 4568L, 4627L, 4691L, 4767L, 4844L, 4914L, 4976L, 5038L, 5095L, 5156L, 5213L, 5274L, 5334L, 5396L, 5455L, 5515L, 5569L, 5630L, 5685L, 5745L, 5802L, 5867L, 5921L, 5990L, 6049L, 6110L, 6229L, 6282L, 6350L, 6408L, 6472L, 6526L, 6588L, 6608L, 6705L, 6723L, 6830L, 6845L, 6949L, 6967L, 7069L, 7084L, 7174L, 7192L, 7264L, 7279L, 7351L, 7367L, 7457L, 7473L, 7548L, 7562L, 7648L, 7663L, 7734L, 7749L, 7819L, 7836L, 7901L, 7914L, 7980L, 7994L, 8057L, 8068L, 8129L, 8139L, 8192L, 8203L, 8254L, 8265L, 8316L, 8327L, 8378L, 8390L, 8440L, 8452L, 8502L, 8514L, 8564L, 8576L, 8626L, 8638L, 8688L, 8700L, 8750L, 8762L, 8812L, 8824L, 8875L, 8886L, 8937L, 8948L, 8999L, 9010L, 9061L, 9072L, 9124L, 9134L, 9186L, 9196L, 9248L, 9258L, 9310L, 9320L, 9372L, 9382L, 9434L, 9444L, 9496L, 9506L, 9558L, 9568L, 9620L, 9630L, 9682L, 9692L, 9744L, 9754L, 9806L, 9816L, 9868L, 9878L, 9930L, 9940L, 9992L, 10002L, 10054L, 10064L, 10116L, 10126L, 10178L, 10189L, 10240L, 10251L, 10302L, 10313L, 10364L, 10375L, 10426L, 10438L, 10488L, 10500L, 10550L, 10562L, 10612L, 10624L, 10674L, 10686L, 10736L, 10748L, 10798L, 10810L, 10860L, 10872L, 10923L, 10934L, 10985L, 10996L, 11047L, 11058L, 11109L, 11120L, 11172L, 11182L, 11234L, 11244L, 11296L, 11306L, 11358L, 11368L, 11420L, 11430L, 11482L, 11492L, 11544L, 11554L, 11606L, 11616L, 11668L, 11678L, 11730L, 11740L, 11792L, 11802L, 11854L, 11864L, 11916L, 11926L, 11978L, 11988L, 12040L, 12050L, 12102L, 12112L, 12164L, 12174L, 12224L, 12234L, 12284L, 12294L, 12344L, 12354L, 12404L, 12414L, 12464L, 12474L, 12524L, 12534L, 12584L, 12594L, 12644L, 12654L, 12704L, 12714L, 12764L, 12774L, 12824L, 12834L, 12884L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "New_Salem" rownames(res) <- NULL tzdb_cache[["New_Salem"]] <- res res } "Nuuk" <- function() { if(!is.null(tzdb_cache[["Nuuk"]])) return(tzdb_cache[["Nuuk"]]) ind <- c(272L, 3422L, 3450L, 3495L, 3536L, 3591L, 3635L, 3696L, 3742L, 3805L, 3861L, 3922L, 3970L, 4046L, 4094L, 4163L, 4217L, 4295L, 4348L, 4423L, 4474L, 4550L, 4600L, 4672L, 4732L, 4827L, 4881L, 4958L, 5010L, 5077L, 5129L, 5195L, 5248L, 5314L, 5383L, 5435L, 5503L, 5552L, 5617L, 5666L, 5731L, 5785L, 5853L, 5904L, 5977L, 6031L, 6097L, 6150L, 6215L, 6266L, 6339L, 6390L, 6459L, 6504L, 6574L, 6636L, 6688L, 6750L, 6811L, 6874L, 6930L, 6994L, 7054L, 7106L, 7161L, 7202L, 7250L, 7293L, 7336L, 7381L, 7439L, 7490L, 7530L, 7580L, 7631L, 7674L, 7717L, 7760L, 7801L, 7849L, 7887L, 7927L, 7964L, 8006L, 8043L, 8079L, 8114L, 8150L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Nuuk" rownames(res) <- NULL tzdb_cache[["Nuuk"]] <- res res } "Ojinaga" <- function() { if(!is.null(tzdb_cache[["Ojinaga"]])) return(tzdb_cache[["Ojinaga"]]) ind <- c(528L, 694L, 801L, 822L, 832L, 857L, 5333L, 5395L, 5454L, 5569L, 5630L, 5685L, 5745L, 5802L, 5867L, 5933L, 5944L, 6049L, 6110L, 6167L, 6228L, 6283L, 6351L, 6409L, 6473L, 6527L, 6589L, 6649L, 6697L, 6768L, 6820L, 6888L, 6939L, 6968L, 7070L, 7085L, 7175L, 7193L, 7265L, 7280L, 7352L, 7368L, 7458L, 7474L, 7549L, 7563L, 7649L, 7664L, 7735L, 7750L, 7820L, 7837L, 7902L, 7915L, 7981L, 7995L, 8058L, 8123L, 8139L, 8192L, 8203L, 8254L, 8265L, 8316L, 8327L, 8378L, 8390L, 8440L, 8452L, 8502L, 8514L, 8564L, 8576L, 8626L, 8638L, 8688L, 8700L, 8750L, 8762L, 8812L, 8824L, 8875L, 8886L, 8937L, 8948L, 8999L, 9010L, 9061L, 9072L, 9124L, 9134L, 9186L, 9196L, 9248L, 9258L, 9310L, 9320L, 9372L, 9382L, 9434L, 9444L, 9496L, 9506L, 9558L, 9568L, 9620L, 9630L, 9682L, 9692L, 9744L, 9754L, 9806L, 9816L, 9868L, 9878L, 9930L, 9940L, 9992L, 10002L, 10054L, 10064L, 10116L, 10126L, 10178L, 10189L, 10240L, 10251L, 10302L, 10313L, 10364L, 10375L, 10426L, 10438L, 10488L, 10500L, 10550L, 10562L, 10612L, 10624L, 10674L, 10686L, 10736L, 10748L, 10798L, 10810L, 10860L, 10872L, 10923L, 10934L, 10985L, 10996L, 11047L, 11058L, 11109L, 11120L, 11172L, 11182L, 11234L, 11244L, 11296L, 11306L, 11358L, 11368L, 11420L, 11430L, 11482L, 11492L, 11544L, 11554L, 11606L, 11616L, 11668L, 11678L, 11730L, 11740L, 11792L, 11802L, 11854L, 11864L, 11916L, 11926L, 11978L, 11988L, 12040L, 12050L, 12102L, 12112L, 12164L, 12174L, 12224L, 12234L, 12284L, 12294L, 12344L, 12354L, 12404L, 12414L, 12464L, 12474L, 12524L, 12534L, 12584L, 12594L, 12644L, 12654L, 12704L, 12714L, 12764L, 12774L, 12824L, 12834L, 12884L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Ojinaga" rownames(res) <- NULL tzdb_cache[["Ojinaga"]] <- res res } "Panama" <- function() { if(!is.null(tzdb_cache[["Panama"]])) return(tzdb_cache[["Panama"]]) ind <- c(83L, 191L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Panama" rownames(res) <- NULL tzdb_cache[["Panama"]] <- res res } "Paramaribo" <- function() { if(!is.null(tzdb_cache[["Paramaribo"]])) return(tzdb_cache[["Paramaribo"]]) ind <- c(199L, 970L, 1550L, 3871L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Paramaribo" rownames(res) <- NULL tzdb_cache[["Paramaribo"]] <- res res } "Phoenix" <- function() { if(!is.null(tzdb_cache[["Phoenix"]])) return(tzdb_cache[["Phoenix"]]) ind <- c(50L, 330L, 366L, 382L, 421L, 1310L, 1426L, 1438L, 1464L, 2559L, 2586L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Phoenix" rownames(res) <- NULL tzdb_cache[["Phoenix"]] <- res res } "Port-au-Prince" <- function() { if(!is.null(tzdb_cache[["Port-au-Prince"]])) return(tzdb_cache[["Port-au-Prince"]]) ind <- c(80L, 291L, 3732L, 3778L, 3829L, 3885L, 3937L, 3992L, 4058L, 4119L, 4189L, 4247L, 4309L, 4377L, 4437L, 4502L, 4565L, 4625L, 4688L, 4765L, 4841L, 4912L, 4973L, 5036L, 5092L, 5154L, 5210L, 5272L, 5331L, 5394L, 5452L, 5513L, 6405L, 6469L, 6522L, 6584L, 7191L, 7263L, 7278L, 7350L, 7366L, 7456L, 7472L, 7547L, 7662L, 7733L, 7748L, 7818L, 7835L, 7900L, 7913L, 7979L, 7993L, 8056L, 8067L, 8128L, 8138L, 8191L, 8202L, 8253L, 8264L, 8315L, 8326L, 8377L, 8389L, 8439L, 8451L, 8501L, 8513L, 8563L, 8575L, 8625L, 8637L, 8687L, 8699L, 8749L, 8761L, 8811L, 8823L, 8874L, 8885L, 8936L, 8947L, 8998L, 9009L, 9060L, 9071L, 9123L, 9133L, 9185L, 9195L, 9247L, 9257L, 9309L, 9319L, 9371L, 9381L, 9433L, 9443L, 9495L, 9505L, 9557L, 9567L, 9619L, 9629L, 9681L, 9691L, 9743L, 9753L, 9805L, 9815L, 9867L, 9877L, 9929L, 9939L, 9991L, 10001L, 10053L, 10063L, 10115L, 10125L, 10177L, 10188L, 10239L, 10250L, 10301L, 10312L, 10363L, 10374L, 10425L, 10437L, 10487L, 10499L, 10549L, 10561L, 10611L, 10623L, 10673L, 10685L, 10735L, 10747L, 10797L, 10809L, 10859L, 10871L, 10922L, 10933L, 10984L, 10995L, 11046L, 11057L, 11108L, 11119L, 11171L, 11181L, 11233L, 11243L, 11295L, 11305L, 11357L, 11367L, 11419L, 11429L, 11481L, 11491L, 11543L, 11553L, 11605L, 11615L, 11667L, 11677L, 11729L, 11739L, 11791L, 11801L, 11853L, 11863L, 11915L, 11925L, 11977L, 11987L, 12039L, 12049L, 12101L, 12111L, 12163L, 12173L, 12223L, 12233L, 12283L, 12293L, 12343L, 12353L, 12403L, 12413L, 12463L, 12473L, 12523L, 12533L, 12583L, 12593L, 12643L, 12653L, 12703L, 12713L, 12763L, 12773L, 12823L, 12833L, 12883L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Port-au-Prince" rownames(res) <- NULL tzdb_cache[["Port-au-Prince"]] <- res res } "Porto_Velho" <- function() { if(!is.null(tzdb_cache[["Porto_Velho"]])) return(tzdb_cache[["Porto_Velho"]]) ind <- c(243L, 835L, 855L, 888L, 905L, 1786L, 1803L, 1843L, 1853L, 1894L, 1901L, 1941L, 1947L, 2392L, 2401L, 2444L, 2452L, 2493L, 2499L, 2539L, 2545L, 2591L, 2596L, 4005L, 4020L, 4113L, 4133L, 4245L, 4263L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Porto_Velho" rownames(res) <- NULL tzdb_cache[["Porto_Velho"]] <- res res } "Puerto_Rico" <- function() { if(!is.null(tzdb_cache[["Puerto_Rico"]])) return(tzdb_cache[["Puerto_Rico"]]) ind <- c(135L, 1514L, 1541L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Puerto_Rico" rownames(res) <- NULL tzdb_cache[["Puerto_Rico"]] <- res res } "Punta_Arenas" <- function() { if(!is.null(tzdb_cache[["Punta_Arenas"]])) return(tzdb_cache[["Punta_Arenas"]]) ind <- c(78L, 197L, 266L, 345L, 400L, 696L, 711L, 724L, 740L, 751L, 768L, 790L, 812L, 827L, 856L, 873L, 1340L, 1605L, 1638L, 1660L, 2630L, 2637L, 2679L, 2684L, 2709L, 2729L, 2755L, 2780L, 2812L, 2834L, 2862L, 2910L, 2950L, 2993L, 3033L, 3063L, 3108L, 3141L, 3193L, 3227L, 3283L, 3314L, 3371L, 3401L, 3461L, 3489L, 3555L, 3584L, 3658L, 3688L, 3766L, 3797L, 3874L, 3903L, 3981L, 4016L, 4105L, 4185L, 4230L, 4269L, 4360L, 4395L, 4488L, 4521L, 4585L, 4644L, 4746L, 4798L, 4895L, 4932L, 5021L, 5051L, 5140L, 5169L, 5261L, 5285L, 5362L, 5441L, 5480L, 5524L, 5587L, 5677L, 5707L, 5758L, 5830L, 5878L, 5953L, 6000L, 6073L, 6119L, 6188L, 6236L, 6314L, 6361L, 6435L, 6480L, 6552L, 6599L, 6664L, 6757L, 6789L, 6851L, 6909L, 7008L, 7033L, 7128L, 7132L, 7223L, 7228L, 7310L, 7315L, 7399L, 7407L, 7601L, 7607L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Punta_Arenas" rownames(res) <- NULL tzdb_cache[["Punta_Arenas"]] <- res res } "Rankin_Inlet" <- function() { if(!is.null(tzdb_cache[["Rankin_Inlet"]])) return(tzdb_cache[["Rankin_Inlet"]]) ind <- c(2104L, 2792L, 2824L, 2847L, 2879L, 2925L, 2965L, 3012L, 3048L, 3080L, 3125L, 3160L, 3209L, 3247L, 3294L, 3335L, 3386L, 3429L, 3473L, 3521L, 3567L, 3620L, 3671L, 3725L, 3782L, 3833L, 3889L, 3941L, 3996L, 4062L, 4123L, 4179L, 4251L, 4311L, 4378L, 4439L, 4503L, 4567L, 4626L, 4690L, 4766L, 4843L, 4913L, 4975L, 5037L, 5094L, 5155L, 5212L, 5273L, 5333L, 5395L, 5454L, 5514L, 5568L, 5629L, 5684L, 5744L, 5920L, 5989L, 6048L, 6109L, 6166L, 6227L, 6282L, 6350L, 6408L, 6472L, 6526L, 6588L, 6608L, 6705L, 6723L, 6830L, 6845L, 6949L, 6967L, 7069L, 7084L, 7174L, 7192L, 7264L, 7279L, 7351L, 7367L, 7457L, 7473L, 7548L, 7562L, 7648L, 7663L, 7734L, 7749L, 7819L, 7836L, 7901L, 7914L, 7980L, 7994L, 8057L, 8068L, 8129L, 8139L, 8192L, 8203L, 8254L, 8265L, 8316L, 8327L, 8378L, 8390L, 8440L, 8452L, 8502L, 8514L, 8564L, 8576L, 8626L, 8638L, 8688L, 8700L, 8750L, 8762L, 8812L, 8824L, 8875L, 8886L, 8937L, 8948L, 8999L, 9010L, 9061L, 9072L, 9124L, 9134L, 9186L, 9196L, 9248L, 9258L, 9310L, 9320L, 9372L, 9382L, 9434L, 9444L, 9496L, 9506L, 9558L, 9568L, 9620L, 9630L, 9682L, 9692L, 9744L, 9754L, 9806L, 9816L, 9868L, 9878L, 9930L, 9940L, 9992L, 10002L, 10054L, 10064L, 10116L, 10126L, 10178L, 10189L, 10240L, 10251L, 10302L, 10313L, 10364L, 10375L, 10426L, 10438L, 10488L, 10500L, 10550L, 10562L, 10612L, 10624L, 10674L, 10686L, 10736L, 10748L, 10798L, 10810L, 10860L, 10872L, 10923L, 10934L, 10985L, 10996L, 11047L, 11058L, 11109L, 11120L, 11172L, 11182L, 11234L, 11244L, 11296L, 11306L, 11358L, 11368L, 11420L, 11430L, 11482L, 11492L, 11544L, 11554L, 11606L, 11616L, 11668L, 11678L, 11730L, 11740L, 11792L, 11802L, 11854L, 11864L, 11916L, 11926L, 11978L, 11988L, 12040L, 12050L, 12102L, 12112L, 12164L, 12174L, 12224L, 12234L, 12284L, 12294L, 12344L, 12354L, 12404L, 12414L, 12464L, 12474L, 12524L, 12534L, 12584L, 12594L, 12644L, 12654L, 12704L, 12714L, 12764L, 12774L, 12824L, 12834L, 12884L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Rankin_Inlet" rownames(res) <- NULL tzdb_cache[["Rankin_Inlet"]] <- res res } "Recife" <- function() { if(!is.null(tzdb_cache[["Recife"]])) return(tzdb_cache[["Recife"]]) ind <- c(231L, 834L, 854L, 887L, 904L, 1785L, 1802L, 1842L, 1851L, 1893L, 1900L, 1940L, 1946L, 2391L, 2400L, 2443L, 2451L, 2492L, 2498L, 2538L, 2544L, 2590L, 2595L, 4004L, 4019L, 4112L, 4132L, 4243L, 4262L, 4364L, 4389L, 4487L, 4512L, 5704L, 5754L, 5825L, 5828L, 5952L, 5998L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Recife" rownames(res) <- NULL tzdb_cache[["Recife"]] <- res res } "Regina" <- function() { if(!is.null(tzdb_cache[["Regina"]])) return(tzdb_cache[["Regina"]]) ind <- c(179L, 337L, 366L, 775L, 798L, 823L, 843L, 867L, 885L, 915L, 923L, 948L, 965L, 1052L, 1081L, 1099L, 1122L, 1135L, 1165L, 1192L, 1232L, 1250L, 1293L, 1510L, 1544L, 1584L, 1627L, 1654L, 1671L, 1702L, 1721L, 1754L, 1768L, 1809L, 1826L, 1865L, 1879L, 1916L, 1925L, 1963L, 1970L, 1999L, 2009L, 2035L, 2048L, 2078L, 2091L, 2123L, 2137L, 2204L, 2229L, 2251L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Regina" rownames(res) <- NULL tzdb_cache[["Regina"]] <- res res } "Resolute" <- function() { if(!is.null(tzdb_cache[["Resolute"]])) return(tzdb_cache[["Resolute"]]) ind <- c(1665L, 2792L, 2824L, 2847L, 2879L, 2925L, 2965L, 3012L, 3048L, 3080L, 3125L, 3160L, 3209L, 3247L, 3294L, 3335L, 3386L, 3429L, 3473L, 3521L, 3567L, 3620L, 3671L, 3725L, 3782L, 3833L, 3889L, 3941L, 3996L, 4062L, 4123L, 4179L, 4251L, 4311L, 4378L, 4439L, 4503L, 4567L, 4626L, 4690L, 4766L, 4843L, 4913L, 4975L, 5037L, 5094L, 5155L, 5212L, 5273L, 5333L, 5395L, 5454L, 5514L, 5568L, 5629L, 5684L, 5744L, 5920L, 5989L, 6048L, 6109L, 6166L, 6227L, 6282L, 6350L, 6408L, 6472L, 6608L, 6705L, 6723L, 6830L, 6845L, 6949L, 6967L, 7069L, 7084L, 7174L, 7192L, 7264L, 7279L, 7351L, 7367L, 7457L, 7473L, 7548L, 7562L, 7648L, 7663L, 7734L, 7749L, 7819L, 7836L, 7901L, 7914L, 7980L, 7994L, 8057L, 8068L, 8129L, 8139L, 8192L, 8203L, 8254L, 8265L, 8316L, 8327L, 8378L, 8390L, 8440L, 8452L, 8502L, 8514L, 8564L, 8576L, 8626L, 8638L, 8688L, 8700L, 8750L, 8762L, 8812L, 8824L, 8875L, 8886L, 8937L, 8948L, 8999L, 9010L, 9061L, 9072L, 9124L, 9134L, 9186L, 9196L, 9248L, 9258L, 9310L, 9320L, 9372L, 9382L, 9434L, 9444L, 9496L, 9506L, 9558L, 9568L, 9620L, 9630L, 9682L, 9692L, 9744L, 9754L, 9806L, 9816L, 9868L, 9878L, 9930L, 9940L, 9992L, 10002L, 10054L, 10064L, 10116L, 10126L, 10178L, 10189L, 10240L, 10251L, 10302L, 10313L, 10364L, 10375L, 10426L, 10438L, 10488L, 10500L, 10550L, 10562L, 10612L, 10624L, 10674L, 10686L, 10736L, 10748L, 10798L, 10810L, 10860L, 10872L, 10923L, 10934L, 10985L, 10996L, 11047L, 11058L, 11109L, 11120L, 11172L, 11182L, 11234L, 11244L, 11296L, 11306L, 11358L, 11368L, 11420L, 11430L, 11482L, 11492L, 11544L, 11554L, 11606L, 11616L, 11668L, 11678L, 11730L, 11740L, 11792L, 11802L, 11854L, 11864L, 11916L, 11926L, 11978L, 11988L, 12040L, 12050L, 12102L, 12112L, 12164L, 12174L, 12224L, 12234L, 12284L, 12294L, 12344L, 12354L, 12404L, 12414L, 12464L, 12474L, 12524L, 12534L, 12584L, 12594L, 12644L, 12654L, 12704L, 12714L, 12764L, 12774L, 12824L, 12834L, 12884L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Resolute" rownames(res) <- NULL tzdb_cache[["Resolute"]] <- res res } "Rio_Branco" <- function() { if(!is.null(tzdb_cache[["Rio_Branco"]])) return(tzdb_cache[["Rio_Branco"]]) ind <- c(244L, 836L, 856L, 889L, 906L, 1787L, 1804L, 1844L, 1855L, 1895L, 1902L, 1942L, 1948L, 2393L, 2402L, 2445L, 2453L, 2494L, 2500L, 2540L, 2546L, 2592L, 2597L, 4006L, 4021L, 4114L, 4134L, 4248L, 4264L, 6775L, 7356L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Rio_Branco" rownames(res) <- NULL tzdb_cache[["Rio_Branco"]] <- res res } "Santarem" <- function() { if(!is.null(tzdb_cache[["Santarem"]])) return(tzdb_cache[["Santarem"]]) ind <- c(239L, 835L, 855L, 888L, 905L, 1786L, 1803L, 1843L, 1853L, 1894L, 1901L, 1941L, 1947L, 2392L, 2401L, 2444L, 2452L, 2493L, 2499L, 2539L, 2545L, 2591L, 2596L, 4005L, 4020L, 4113L, 4133L, 4245L, 4263L, 6774L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Santarem" rownames(res) <- NULL tzdb_cache[["Santarem"]] <- res res } "Santiago" <- function() { if(!is.null(tzdb_cache[["Santiago"]])) return(tzdb_cache[["Santiago"]]) ind <- c(77L, 197L, 266L, 345L, 400L, 696L, 711L, 724L, 740L, 751L, 768L, 790L, 812L, 827L, 856L, 873L, 1340L, 1344L, 1603L, 1604L, 1638L, 1660L, 2630L, 2637L, 2679L, 2684L, 2709L, 2729L, 2755L, 2780L, 2812L, 2834L, 2862L, 2910L, 2950L, 2993L, 3033L, 3063L, 3108L, 3141L, 3193L, 3227L, 3283L, 3314L, 3371L, 3401L, 3461L, 3489L, 3555L, 3584L, 3658L, 3688L, 3766L, 3797L, 3874L, 3903L, 3981L, 4016L, 4105L, 4185L, 4230L, 4269L, 4360L, 4395L, 4488L, 4521L, 4585L, 4644L, 4746L, 4798L, 4895L, 4932L, 5021L, 5051L, 5140L, 5169L, 5261L, 5285L, 5362L, 5441L, 5480L, 5524L, 5587L, 5677L, 5707L, 5758L, 5830L, 5878L, 5953L, 6000L, 6073L, 6119L, 6188L, 6236L, 6314L, 6361L, 6435L, 6480L, 6552L, 6599L, 6664L, 6757L, 6789L, 6851L, 6909L, 7008L, 7033L, 7128L, 7132L, 7223L, 7228L, 7310L, 7315L, 7399L, 7407L, 7601L, 7607L, 7693L, 7697L, 7780L, 7782L, 7862L, 7868L, 7941L, 7947L, 8021L, 8027L, 8094L, 8099L, 8164L, 8167L, 8226L, 8229L, 8289L, 8291L, 8351L, 8353L, 8413L, 8415L, 8475L, 8477L, 8537L, 8539L, 8599L, 8601L, 8661L, 8663L, 8723L, 8725L, 8785L, 8787L, 8847L, 8849L, 8909L, 8911L, 8971L, 8973L, 9033L, 9035L, 9095L, 9097L, 9157L, 9159L, 9219L, 9222L, 9281L, 9284L, 9343L, 9346L, 9405L, 9408L, 9467L, 9471L, 9529L, 9533L, 9591L, 9595L, 9653L, 9657L, 9715L, 9719L, 9777L, 9781L, 9839L, 9843L, 9901L, 9905L, 9963L, 9967L, 10025L, 10029L, 10088L, 10091L, 10150L, 10153L, 10212L, 10215L, 10275L, 10277L, 10337L, 10339L, 10399L, 10401L, 10461L, 10463L, 10523L, 10525L, 10585L, 10587L, 10647L, 10649L, 10709L, 10711L, 10771L, 10773L, 10833L, 10835L, 10895L, 10897L, 10957L, 10959L, 11019L, 11021L, 11081L, 11083L, 11143L, 11145L, 11205L, 11207L, 11267L, 11270L, 11329L, 11332L, 11391L, 11394L, 11453L, 11457L, 11515L, 11519L, 11577L, 11581L, 11639L, 11643L, 11701L, 11705L, 11763L, 11767L, 11825L, 11829L, 11887L, 11891L, 11949L, 11953L, 12011L, 12015L, 12073L, 12077L, 12136L, 12139L, 12197L, 12199L, 12257L, 12259L, 12317L, 12319L, 12377L, 12379L, 12437L, 12439L, 12497L, 12499L, 12557L, 12559L, 12617L, 12619L, 12677L, 12679L, 12737L, 12739L, 12797L, 12799L, 12857L, 12859L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Santiago" rownames(res) <- NULL tzdb_cache[["Santiago"]] <- res res } "Santo_Domingo" <- function() { if(!is.null(tzdb_cache[["Santo_Domingo"]])) return(tzdb_cache[["Santo_Domingo"]]) ind <- c(76L, 907L, 2531L, 2542L, 2670L, 2682L, 2718L, 2727L, 2767L, 2777L, 2822L, 2831L, 2877L, 2901L, 2963L, 5864L, 5873L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Santo_Domingo" rownames(res) <- NULL tzdb_cache[["Santo_Domingo"]] <- res res } "Sao_Paulo" <- function() { if(!is.null(tzdb_cache[["Sao_Paulo"]])) return(tzdb_cache[["Sao_Paulo"]]) ind <- c(235L, 834L, 854L, 887L, 904L, 1785L, 1802L, 1842L, 1851L, 1893L, 1900L, 1940L, 1946L, 2380L, 2400L, 2443L, 2451L, 2492L, 2498L, 2538L, 2544L, 2590L, 2595L, 4004L, 4019L, 4112L, 4132L, 4243L, 4262L, 4364L, 4389L, 4487L, 4512L, 4613L, 4634L, 4752L, 4787L, 4907L, 4923L, 5024L, 5044L, 5143L, 5163L, 5260L, 5282L, 5359L, 5403L, 5478L, 5520L, 5595L, 5637L, 5704L, 5754L, 5825L, 5875L, 5952L, 5998L, 6115L, 6117L, 6191L, 6234L, 6356L, 6359L, 6438L, 6478L, 6593L, 6597L, 6663L, 6714L, 6791L, 6835L, 6914L, 6956L, 7035L, 7075L, 7149L, 7185L, 7243L, 7271L, 7327L, 7359L, 7419L, 7465L, 7522L, 7555L, 7621L, 7656L, 7708L, 7741L, 7812L, 7829L ) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Sao_Paulo" rownames(res) <- NULL tzdb_cache[["Sao_Paulo"]] <- res res } "Scoresbysund" <- function() { if(!is.null(tzdb_cache[["Scoresbysund"]])) return(tzdb_cache[["Scoresbysund"]]) ind <- c(271L, 3421L, 3455L, 3501L, 3537L, 3592L, 3636L, 3697L, 3743L, 3806L, 3862L, 3923L, 3971L, 4047L, 4095L, 4164L, 4218L, 4296L, 4349L, 4424L, 4475L, 4551L, 4601L, 4673L, 4733L, 4828L, 4882L, 4959L, 5011L, 5078L, 5130L, 5196L, 5249L, 5315L, 5384L, 5436L, 5504L, 5553L, 5618L, 5667L, 5732L, 5786L, 5854L, 5905L, 5978L, 6032L, 6098L, 6151L, 6216L, 6267L, 6340L, 6391L, 6460L, 6505L, 6575L, 6637L, 6689L, 6751L, 6812L, 6875L, 6931L, 6995L, 7055L, 7107L, 7162L, 7203L, 7251L, 7294L, 7337L, 7382L, 7440L, 7491L, 7531L, 7581L, 7632L, 7675L, 7718L, 7761L, 7802L, 7850L, 7888L, 7928L, 7965L, 8007L, 8044L, 8080L, 8115L, 8151L, 8181L, 8214L, 8243L, 8276L, 8305L, 8339L, 8367L, 8400L, 8429L, 8462L, 8491L, 8524L, 8553L, 8587L, 8615L, 8649L, 8677L, 8710L, 8739L, 8772L, 8801L, 8834L, 8863L, 8896L, 8925L, 8959L, 8988L, 9021L, 9050L, 9082L, 9112L, 9144L, 9175L, 9206L, 9237L, 9269L, 9299L, 9331L, 9361L, 9393L, 9423L, 9454L, 9485L, 9516L, 9547L, 9578L, 9609L, 9641L, 9671L, 9703L, 9733L, 9764L, 9795L, 9826L, 9857L, 9888L, 9919L, 9951L, 9981L, 10013L, 10043L, 10075L, 10105L, 10136L, 10167L, 10199L, 10229L, 10261L, 10291L, 10324L, 10353L, 10387L, 10415L, 10448L, 10477L, 10510L, 10539L, 10572L, 10601L, 10634L, 10663L, 10697L, 10725L, 10759L, 10787L, 10820L, 10849L, 10882L, 10911L, 10944L, 10974L, 11007L, 11036L, 11069L, 11098L, 11131L, 11160L, 11192L, 11223L, 11254L, 11285L, 11316L, 11347L, 11379L, 11409L, 11441L, 11471L, 11502L, 11533L, 11564L, 11595L, 11626L, 11657L, 11689L, 11719L, 11751L, 11781L, 11813L, 11843L, 11874L, 11905L, 11936L, 11967L, 11998L, 12029L, 12061L, 12091L, 12123L, 12153L, 12184L, 12213L, 12244L, 12273L, 12304L, 12333L, 12364L, 12393L, 12425L, 12453L, 12485L, 12513L, 12544L, 12573L, 12604L, 12633L, 12664L, 12693L, 12725L, 12753L, 12785L, 12813L, 12845L, 12873L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Scoresbysund" rownames(res) <- NULL tzdb_cache[["Scoresbysund"]] <- res res } "Sitka" <- function() { if(!is.null(tzdb_cache[["Sitka"]])) return(tzdb_cache[["Sitka"]]) ind <- c(16L, 144L, 1512L, 1545L, 2649L, 2675L, 2696L, 2723L, 2741L, 2772L, 2795L, 2827L, 2849L, 2882L, 2896L, 2969L, 2984L, 3051L, 3082L, 3128L, 3162L, 3212L, 3249L, 3297L, 3337L, 3389L, 3431L, 3476L, 3523L, 3570L, 3622L, 3674L, 3727L, 3787L, 3836L, 3893L, 3944L, 4000L, 4065L, 4127L, 4182L, 4255L, 4314L, 4382L, 4442L, 4507L, 4570L, 4630L, 4693L, 4770L, 4846L, 4917L, 4978L, 5041L, 5097L, 5159L, 5215L, 5277L, 5336L, 5399L, 5457L, 5518L, 5571L, 5633L, 5687L, 5748L, 5804L, 5870L, 5923L, 5993L, 6051L, 6113L, 6169L, 6231L, 6285L, 6354L, 6411L, 6476L, 6529L, 6591L, 6612L, 6709L, 6726L, 6833L, 6848L, 6952L, 6970L, 7073L, 7087L, 7177L, 7195L, 7267L, 7282L, 7354L, 7370L, 7460L, 7477L, 7551L, 7565L, 7651L, 7666L, 7737L, 7752L, 7822L, 7839L, 7904L, 7917L, 7983L, 7997L, 8060L, 8071L, 8132L, 8142L, 8195L, 8206L, 8257L, 8268L, 8319L, 8330L, 8381L, 8393L, 8443L, 8455L, 8505L, 8517L, 8567L, 8579L, 8629L, 8641L, 8691L, 8703L, 8753L, 8765L, 8815L, 8827L, 8878L, 8889L, 8940L, 8951L, 9002L, 9013L, 9064L, 9075L, 9127L, 9137L, 9189L, 9199L, 9251L, 9261L, 9313L, 9323L, 9375L, 9385L, 9437L, 9447L, 9499L, 9509L, 9561L, 9571L, 9623L, 9633L, 9685L, 9695L, 9747L, 9757L, 9809L, 9819L, 9871L, 9881L, 9933L, 9943L, 9995L, 10005L, 10057L, 10067L, 10119L, 10129L, 10181L, 10192L, 10243L, 10254L, 10305L, 10316L, 10367L, 10378L, 10429L, 10441L, 10491L, 10503L, 10553L, 10565L, 10615L, 10627L, 10677L, 10689L, 10739L, 10751L, 10801L, 10813L, 10863L, 10875L, 10926L, 10937L, 10988L, 10999L, 11050L, 11061L, 11112L, 11123L, 11175L, 11185L, 11237L, 11247L, 11299L, 11309L, 11361L, 11371L, 11423L, 11433L, 11485L, 11495L, 11547L, 11557L, 11609L, 11619L, 11671L, 11681L, 11733L, 11743L, 11795L, 11805L, 11857L, 11867L, 11919L, 11929L, 11981L, 11991L, 12043L, 12053L, 12105L, 12115L, 12167L, 12177L, 12227L, 12237L, 12287L, 12297L, 12347L, 12357L, 12407L, 12417L, 12467L, 12477L, 12527L, 12537L, 12587L, 12597L, 12647L, 12657L, 12707L, 12717L, 12767L, 12777L, 12827L, 12837L, 12887L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Sitka" rownames(res) <- NULL tzdb_cache[["Sitka"]] <- res res } "St_Johns" <- function() { if(!is.null(tzdb_cache[["St_Johns"]])) return(tzdb_cache[["St_Johns"]]) ind <- c(57L, 303L, 308L, 333L, 362L, 392L, 402L, 460L, 481L, 503L, 524L, 540L, 554L, 567L, 582L, 620L, 635L, 646L, 657L, 669L, 682L, 693L, 706L, 720L, 737L, 749L, 763L, 776L, 800L, 824L, 848L, 869L, 891L, 916L, 932L, 949L, 967L, 973L, 985L, 1003L, 1020L, 1035L, 1059L, 1080L, 1105L, 1124L, 1146L, 1162L, 1197L, 1230L, 1260L, 1292L, 1515L, 1540L, 1596L, 1622L, 1658L, 1679L, 1709L, 1729L, 1759L, 1777L, 1815L, 1834L, 1860L, 1875L, 1911L, 1921L, 1958L, 1966L, 1993L, 2005L, 2029L, 2044L, 2073L, 2087L, 2118L, 2134L, 2162L, 2173L, 2199L, 2213L, 2246L, 2271L, 2287L, 2313L, 2328L, 2346L, 2362L, 2382L, 2410L, 2432L, 2460L, 2484L, 2510L, 2529L, 2555L, 2582L, 2603L, 2623L, 2643L, 2668L, 2691L, 2716L, 2736L, 2765L, 2789L, 2820L, 2843L, 2875L, 2922L, 2962L, 3009L, 3045L, 3077L, 3122L, 3157L, 3206L, 3244L, 3291L, 3332L, 3383L, 3426L, 3470L, 3518L, 3564L, 3617L, 3668L, 3722L, 3779L, 3830L, 3886L, 3938L, 3993L, 4059L, 4120L, 4174L, 4242L, 4305L, 4373L, 4433L, 4497L, 4559L, 4620L, 4683L, 4760L, 4836L, 4906L, 4968L, 5032L, 5087L, 5150L, 5205L, 5268L, 5326L, 5390L, 5447L, 5509L, 5563L, 5623L, 5679L, 5737L, 5795L, 5859L, 5914L, 5983L, 6042L, 6103L, 6160L, 6221L, 6277L, 6345L, 6402L, 6466L, 6519L, 6581L, 6601L, 6700L, 6717L, 6825L, 6838L, 6944L, 6960L, 7064L, 7078L, 7171L, 7189L, 7260L, 7276L, 7347L, 7364L, 7453L, 7470L, 7544L, 7559L, 7644L, 7660L, 7730L, 7746L, 7815L, 7833L, 7897L, 7911L, 7976L, 7991L, 8053L, 8065L, 8125L, 8136L, 8188L, 8200L, 8250L, 8262L, 8312L, 8324L, 8374L, 8387L, 8436L, 8449L, 8498L, 8511L, 8560L, 8573L, 8622L, 8635L, 8684L, 8697L, 8746L, 8759L, 8808L, 8821L, 8871L, 8883L, 8933L, 8945L, 8995L, 9007L, 9057L, 9069L, 9120L, 9131L, 9182L, 9193L, 9244L, 9255L, 9306L, 9317L, 9368L, 9379L, 9430L, 9441L, 9492L, 9503L, 9554L, 9565L, 9616L, 9627L, 9678L, 9689L, 9740L, 9751L, 9802L, 9813L, 9864L, 9875L, 9926L, 9937L, 9988L, 9999L, 10050L, 10061L, 10112L, 10123L, 10174L, 10186L, 10236L, 10248L, 10298L, 10310L, 10360L, 10372L, 10422L, 10435L, 10484L, 10497L, 10546L, 10559L, 10608L, 10621L, 10670L, 10683L, 10732L, 10745L, 10794L, 10807L, 10856L, 10869L, 10919L, 10931L, 10981L, 10993L, 11043L, 11055L, 11105L, 11117L, 11168L, 11179L, 11230L, 11241L, 11292L, 11303L, 11354L, 11365L, 11416L, 11427L, 11478L, 11489L, 11540L, 11551L, 11602L, 11613L, 11664L, 11675L, 11726L, 11737L, 11788L, 11799L, 11850L, 11861L, 11912L, 11923L, 11974L, 11985L, 12036L, 12047L, 12098L, 12109L, 12160L, 12171L, 12220L, 12231L, 12280L, 12291L, 12340L, 12351L, 12400L, 12411L, 12460L, 12471L, 12520L, 12531L, 12580L, 12591L, 12640L, 12651L, 12700L, 12711L, 12760L, 12771L, 12820L, 12831L, 12880L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "St_Johns" rownames(res) <- NULL tzdb_cache[["St_Johns"]] <- res res } "Swift_Current" <- function() { if(!is.null(tzdb_cache[["Swift_Current"]])) return(tzdb_cache[["Swift_Current"]]) ind <- c(180L, 337L, 366L, 1510L, 1544L, 1592L, 1627L, 1654L, 1671L, 1702L, 1721L, 1754L, 1768L, 2123L, 2149L, 2204L, 2229L, 2252L, 2260L, 2293L, 2302L, 2794L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Swift_Current" rownames(res) <- NULL tzdb_cache[["Swift_Current"]] <- res res } "Tegucigalpa" <- function() { if(!is.null(tzdb_cache[["Tegucigalpa"]])) return(tzdb_cache[["Tegucigalpa"]]) ind <- c(494L, 4192L, 4222L, 4320L, 4353L, 6536L, 6537L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Tegucigalpa" rownames(res) <- NULL tzdb_cache[["Tegucigalpa"]] <- res res } "Thule" <- function() { if(!is.null(tzdb_cache[["Thule"]])) return(tzdb_cache[["Thule"]]) ind <- c(273L, 4679L, 4737L, 4834L, 4885L, 4972L, 5035L, 5091L, 5153L, 5209L, 5271L, 5330L, 5393L, 5451L, 5512L, 5566L, 5626L, 5682L, 5740L, 5799L, 5862L, 5918L, 5986L, 6046L, 6106L, 6164L, 6224L, 6280L, 6348L, 6406L, 6470L, 6523L, 6585L, 6606L, 6703L, 6721L, 6828L, 6843L, 6947L, 6965L, 7067L, 7082L, 7172L, 7190L, 7261L, 7277L, 7348L, 7365L, 7454L, 7471L, 7545L, 7560L, 7645L, 7661L, 7731L, 7747L, 7816L, 7834L, 7898L, 7912L, 7977L, 7992L, 8054L, 8066L, 8126L, 8137L, 8189L, 8201L, 8251L, 8263L, 8313L, 8325L, 8375L, 8388L, 8437L, 8450L, 8499L, 8512L, 8561L, 8574L, 8623L, 8636L, 8685L, 8698L, 8747L, 8760L, 8809L, 8822L, 8872L, 8884L, 8934L, 8946L, 8996L, 9008L, 9058L, 9070L, 9121L, 9132L, 9183L, 9194L, 9245L, 9256L, 9307L, 9318L, 9369L, 9380L, 9431L, 9442L, 9493L, 9504L, 9555L, 9566L, 9617L, 9628L, 9679L, 9690L, 9741L, 9752L, 9803L, 9814L, 9865L, 9876L, 9927L, 9938L, 9989L, 10000L, 10051L, 10062L, 10113L, 10124L, 10175L, 10187L, 10237L, 10249L, 10299L, 10311L, 10361L, 10373L, 10423L, 10436L, 10485L, 10498L, 10547L, 10560L, 10609L, 10622L, 10671L, 10684L, 10733L, 10746L, 10795L, 10808L, 10857L, 10870L, 10920L, 10932L, 10982L, 10994L, 11044L, 11056L, 11106L, 11118L, 11169L, 11180L, 11231L, 11242L, 11293L, 11304L, 11355L, 11366L, 11417L, 11428L, 11479L, 11490L, 11541L, 11552L, 11603L, 11614L, 11665L, 11676L, 11727L, 11738L, 11789L, 11800L, 11851L, 11862L, 11913L, 11924L, 11975L, 11986L, 12037L, 12048L, 12099L, 12110L, 12161L, 12172L, 12221L, 12232L, 12281L, 12292L, 12341L, 12352L, 12401L, 12412L, 12461L, 12472L, 12521L, 12532L, 12581L, 12592L, 12641L, 12652L, 12701L, 12712L, 12761L, 12772L, 12821L, 12832L, 12881L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Thule" rownames(res) <- NULL tzdb_cache[["Thule"]] <- res res } "Tijuana" <- function() { if(!is.null(tzdb_cache[["Tijuana"]])) return(tzdb_cache[["Tijuana"]]) ind <- c(528L, 584L, 695L, 802L, 813L, 831L, 1512L, 1566L, 1694L, 1736L, 1998L, 2010L, 2034L, 2049L, 2077L, 2092L, 2122L, 2138L, 2167L, 2176L, 2203L, 2216L, 2250L, 2261L, 3082L, 3128L, 3162L, 3212L, 3249L, 3297L, 3337L, 3389L, 3431L, 3476L, 3523L, 3570L, 3622L, 3674L, 3727L, 3785L, 3835L, 3892L, 3943L, 3999L, 4064L, 4126L, 4181L, 4254L, 4313L, 4381L, 4441L, 4506L, 4569L, 4629L, 4692L, 4769L, 4845L, 4916L, 4977L, 5040L, 5096L, 5158L, 5214L, 5276L, 5335L, 5398L, 5456L, 5517L, 5570L, 5632L, 5686L, 5747L, 5803L, 5869L, 5922L, 5992L, 6050L, 6112L, 6168L, 6230L, 6284L, 6353L, 6410L, 6475L, 6528L, 6590L, 6650L, 6698L, 6769L, 6821L, 6889L, 6940L, 6969L, 7072L, 7086L, 7176L, 7194L, 7266L, 7281L, 7353L, 7369L, 7459L, 7475L, 7550L, 7564L, 7650L, 7665L, 7736L, 7751L, 7821L, 7838L, 7903L, 7916L, 7982L, 7996L, 8059L, 8070L, 8131L, 8141L, 8194L, 8205L, 8256L, 8267L, 8318L, 8329L, 8380L, 8392L, 8442L, 8454L, 8504L, 8516L, 8566L, 8578L, 8628L, 8640L, 8690L, 8702L, 8752L, 8764L, 8814L, 8826L, 8877L, 8888L, 8939L, 8950L, 9001L, 9012L, 9063L, 9074L, 9126L, 9136L, 9188L, 9198L, 9250L, 9260L, 9312L, 9322L, 9374L, 9384L, 9436L, 9446L, 9498L, 9508L, 9560L, 9570L, 9622L, 9632L, 9684L, 9694L, 9746L, 9756L, 9808L, 9818L, 9870L, 9880L, 9932L, 9942L, 9994L, 10004L, 10056L, 10066L, 10118L, 10128L, 10180L, 10191L, 10242L, 10253L, 10304L, 10315L, 10366L, 10377L, 10428L, 10440L, 10490L, 10502L, 10552L, 10564L, 10614L, 10626L, 10676L, 10688L, 10738L, 10750L, 10800L, 10812L, 10862L, 10874L, 10925L, 10936L, 10987L, 10998L, 11049L, 11060L, 11111L, 11122L, 11174L, 11184L, 11236L, 11246L, 11298L, 11308L, 11360L, 11370L, 11422L, 11432L, 11484L, 11494L, 11546L, 11556L, 11608L, 11618L, 11670L, 11680L, 11732L, 11742L, 11794L, 11804L, 11856L, 11866L, 11918L, 11928L, 11980L, 11990L, 12042L, 12052L, 12104L, 12114L, 12166L, 12176L, 12226L, 12236L, 12286L, 12296L, 12346L, 12356L, 12406L, 12416L, 12466L, 12476L, 12526L, 12536L, 12586L, 12596L, 12646L, 12656L, 12706L, 12716L, 12766L, 12776L, 12826L, 12836L, 12886L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Tijuana" rownames(res) <- NULL tzdb_cache[["Tijuana"]] <- res res } "Toronto" <- function() { if(!is.null(tzdb_cache[["Toronto"]])) return(tzdb_cache[["Toronto"]]) ind <- c(121L, 335L, 364L, 384L, 418L, 459L, 468L, 505L, 511L, 541L, 544L, 568L, 574L, 619L, 624L, 645L, 648L, 668L, 673L, 692L, 697L, 718L, 726L, 747L, 753L, 773L, 792L, 820L, 828L, 868L, 875L, 912L, 924L, 946L, 956L, 983L, 992L, 1019L, 1027L, 1056L, 1068L, 1101L, 1112L, 1144L, 1156L, 1513L, 1542L, 1590L, 1609L, 1650L, 1667L, 1698L, 1717L, 1750L, 1783L, 1806L, 1840L, 1862L, 1877L, 1913L, 1923L, 1960L, 1968L, 1995L, 2007L, 2031L, 2046L, 2075L, 2089L, 2120L, 2147L, 2164L, 2185L, 2201L, 2227L, 2248L, 2273L, 2289L, 2315L, 2330L, 2348L, 2364L, 2384L, 2412L, 2434L, 2462L, 2486L, 2512L, 2532L, 2557L, 2584L, 2605L, 2625L, 2645L, 2671L, 2693L, 2719L, 2738L, 2768L, 2791L, 2823L, 2845L, 2878L, 2924L, 2964L, 3011L, 3047L, 3079L, 3124L, 3159L, 3208L, 3246L, 3293L, 3334L, 3385L, 3428L, 3472L, 3520L, 3566L, 3619L, 3670L, 3724L, 3781L, 3832L, 3888L, 3940L, 3995L, 4061L, 4122L, 4178L, 4250L, 4310L, 4377L, 4438L, 4502L, 4566L, 4625L, 4689L, 4765L, 4842L, 4912L, 4974L, 5036L, 5093L, 5154L, 5211L, 5272L, 5332L, 5394L, 5453L, 5513L, 5567L, 5628L, 5683L, 5742L, 5800L, 5864L, 5919L, 5988L, 6047L, 6108L, 6165L, 6226L, 6281L, 6349L, 6407L, 6471L, 6524L, 6587L, 6607L, 6704L, 6722L, 6829L, 6844L, 6948L, 6966L, 7068L, 7083L, 7173L, 7191L, 7263L, 7278L, 7350L, 7366L, 7456L, 7472L, 7547L, 7561L, 7647L, 7662L, 7733L, 7748L, 7818L, 7835L, 7900L, 7913L, 7979L, 7993L, 8056L, 8067L, 8128L, 8138L, 8191L, 8202L, 8253L, 8264L, 8315L, 8326L, 8377L, 8389L, 8439L, 8451L, 8501L, 8513L, 8563L, 8575L, 8625L, 8637L, 8687L, 8699L, 8749L, 8761L, 8811L, 8823L, 8874L, 8885L, 8936L, 8947L, 8998L, 9009L, 9060L, 9071L, 9123L, 9133L, 9185L, 9195L, 9247L, 9257L, 9309L, 9319L, 9371L, 9381L, 9433L, 9443L, 9495L, 9505L, 9557L, 9567L, 9619L, 9629L, 9681L, 9691L, 9743L, 9753L, 9805L, 9815L, 9867L, 9877L, 9929L, 9939L, 9991L, 10001L, 10053L, 10063L, 10115L, 10125L, 10177L, 10188L, 10239L, 10250L, 10301L, 10312L, 10363L, 10374L, 10425L, 10437L, 10487L, 10499L, 10549L, 10561L, 10611L, 10623L, 10673L, 10685L, 10735L, 10747L, 10797L, 10809L, 10859L, 10871L, 10922L, 10933L, 10984L, 10995L, 11046L, 11057L, 11108L, 11119L, 11171L, 11181L, 11233L, 11243L, 11295L, 11305L, 11357L, 11367L, 11419L, 11429L, 11481L, 11491L, 11543L, 11553L, 11605L, 11615L, 11667L, 11677L, 11729L, 11739L, 11791L, 11801L, 11853L, 11863L, 11915L, 11925L, 11977L, 11987L, 12039L, 12049L, 12101L, 12111L, 12163L, 12173L, 12223L, 12233L, 12283L, 12293L, 12343L, 12353L, 12403L, 12413L, 12463L, 12473L, 12523L, 12533L, 12583L, 12593L, 12643L, 12653L, 12703L, 12713L, 12763L, 12773L, 12823L, 12833L, 12883L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Toronto" rownames(res) <- NULL tzdb_cache[["Toronto"]] <- res res } "Vancouver" <- function() { if(!is.null(tzdb_cache[["Vancouver"]])) return(tzdb_cache[["Vancouver"]]) ind <- c(61L, 338L, 367L, 1512L, 1545L, 1593L, 1611L, 1655L, 1672L, 1703L, 1722L, 1755L, 1769L, 1810L, 1827L, 1866L, 1880L, 1917L, 1926L, 1964L, 1971L, 2000L, 2010L, 2036L, 2049L, 2079L, 2092L, 2124L, 2138L, 2168L, 2176L, 2205L, 2216L, 2253L, 2261L, 2294L, 2303L, 2334L, 2350L, 2367L, 2386L, 2416L, 2436L, 2468L, 2490L, 2516L, 2536L, 2560L, 2588L, 2608L, 2629L, 2649L, 2675L, 2696L, 2723L, 2741L, 2772L, 2795L, 2827L, 2849L, 2882L, 2927L, 2969L, 3014L, 3051L, 3082L, 3128L, 3162L, 3212L, 3249L, 3297L, 3337L, 3389L, 3431L, 3476L, 3523L, 3570L, 3622L, 3674L, 3727L, 3785L, 3835L, 3892L, 3943L, 3999L, 4064L, 4126L, 4181L, 4254L, 4313L, 4381L, 4441L, 4506L, 4569L, 4629L, 4692L, 4769L, 4845L, 4916L, 4977L, 5040L, 5096L, 5158L, 5214L, 5276L, 5335L, 5398L, 5456L, 5517L, 5570L, 5632L, 5686L, 5747L, 5803L, 5869L, 5922L, 5992L, 6050L, 6112L, 6168L, 6230L, 6284L, 6353L, 6410L, 6475L, 6528L, 6590L, 6611L, 6708L, 6725L, 6832L, 6847L, 6951L, 6969L, 7072L, 7086L, 7176L, 7194L, 7266L, 7281L, 7353L, 7369L, 7459L, 7475L, 7550L, 7564L, 7650L, 7665L, 7736L, 7751L, 7821L, 7838L, 7903L, 7916L, 7982L, 7996L, 8059L, 8070L, 8131L, 8141L, 8194L, 8205L, 8256L, 8267L, 8318L, 8329L, 8380L, 8392L, 8442L, 8454L, 8504L, 8516L, 8566L, 8578L, 8628L, 8640L, 8690L, 8702L, 8752L, 8764L, 8814L, 8826L, 8877L, 8888L, 8939L, 8950L, 9001L, 9012L, 9063L, 9074L, 9126L, 9136L, 9188L, 9198L, 9250L, 9260L, 9312L, 9322L, 9374L, 9384L, 9436L, 9446L, 9498L, 9508L, 9560L, 9570L, 9622L, 9632L, 9684L, 9694L, 9746L, 9756L, 9808L, 9818L, 9870L, 9880L, 9932L, 9942L, 9994L, 10004L, 10056L, 10066L, 10118L, 10128L, 10180L, 10191L, 10242L, 10253L, 10304L, 10315L, 10366L, 10377L, 10428L, 10440L, 10490L, 10502L, 10552L, 10564L, 10614L, 10626L, 10676L, 10688L, 10738L, 10750L, 10800L, 10812L, 10862L, 10874L, 10925L, 10936L, 10987L, 10998L, 11049L, 11060L, 11111L, 11122L, 11174L, 11184L, 11236L, 11246L, 11298L, 11308L, 11360L, 11370L, 11422L, 11432L, 11484L, 11494L, 11546L, 11556L, 11608L, 11618L, 11670L, 11680L, 11732L, 11742L, 11794L, 11804L, 11856L, 11866L, 11918L, 11928L, 11980L, 11990L, 12042L, 12052L, 12104L, 12114L, 12166L, 12176L, 12226L, 12236L, 12286L, 12296L, 12346L, 12356L, 12406L, 12416L, 12466L, 12476L, 12526L, 12536L, 12586L, 12596L, 12646L, 12656L, 12706L, 12716L, 12766L, 12776L, 12826L, 12836L, 12886L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Vancouver" rownames(res) <- NULL tzdb_cache[["Vancouver"]] <- res res } "Whitehorse" <- function() { if(!is.null(tzdb_cache[["Whitehorse"]])) return(tzdb_cache[["Whitehorse"]]) ind <- c(140L, 339L, 368L, 394L, 423L, 1511L, 1546L, 2465L, 2489L, 2496L, 3431L, 3476L, 3523L, 3570L, 3622L, 3674L, 3727L, 3785L, 3835L, 3892L, 3943L, 3999L, 4064L, 4126L, 4181L, 4254L, 4313L, 4381L, 4441L, 4506L, 4569L, 4629L, 4692L, 4769L, 4845L, 4916L, 4977L, 5040L, 5096L, 5158L, 5214L, 5276L, 5335L, 5398L, 5456L, 5517L, 5570L, 5632L, 5686L, 5747L, 5803L, 5869L, 5922L, 5992L, 6050L, 6112L, 6168L, 6230L, 6284L, 6353L, 6410L, 6475L, 6528L, 6590L, 6611L, 6708L, 6725L, 6832L, 6847L, 6951L, 6969L, 7072L, 7086L, 7176L, 7194L, 7266L, 7281L, 7353L, 7369L, 7459L, 7475L, 7550L, 7564L, 7650L, 7665L, 7736L, 7751L, 7821L, 7838L, 7903L, 7916L ) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Whitehorse" rownames(res) <- NULL tzdb_cache[["Whitehorse"]] <- res res } "Winnipeg" <- function() { if(!is.null(tzdb_cache[["Winnipeg"]])) return(tzdb_cache[["Winnipeg"]]) ind <- c(64L, 255L, 274L, 336L, 365L, 1060L, 1069L, 1509L, 1543L, 1597L, 1626L, 1653L, 1670L, 1701L, 1720L, 1753L, 1767L, 1813L, 1828L, 1863L, 1878L, 1914L, 1924L, 1961L, 1969L, 1996L, 2008L, 2032L, 2047L, 2076L, 2090L, 2121L, 2136L, 2165L, 2175L, 2202L, 2228L, 2249L, 2259L, 2365L, 2371L, 2513L, 2535L, 2558L, 2587L, 2606L, 2628L, 2646L, 2674L, 2694L, 2722L, 2739L, 2771L, 2792L, 2826L, 2847L, 2881L, 2925L, 2968L, 3012L, 3050L, 3080L, 3127L, 3160L, 3211L, 3247L, 3296L, 3335L, 3388L, 3429L, 3475L, 3521L, 3569L, 3620L, 3673L, 3725L, 3784L, 3833L, 3891L, 3941L, 3998L, 4062L, 4125L, 4179L, 4253L, 4311L, 4380L, 4439L, 4505L, 4567L, 4628L, 4690L, 4768L, 4843L, 4915L, 4975L, 5039L, 5094L, 5157L, 5212L, 5275L, 5333L, 5397L, 5454L, 5516L, 5568L, 5631L, 5684L, 5746L, 5801L, 5868L, 5920L, 5991L, 6048L, 6111L, 6166L, 6229L, 6282L, 6352L, 6408L, 6474L, 6526L, 6588L, 6608L, 6705L, 6723L, 6830L, 6845L, 6949L, 6967L, 7069L, 7084L, 7174L, 7192L, 7264L, 7279L, 7351L, 7367L, 7457L, 7473L, 7548L, 7562L, 7648L, 7663L, 7734L, 7749L, 7819L, 7836L, 7901L, 7914L, 7980L, 7994L, 8057L, 8068L, 8129L, 8139L, 8192L, 8203L, 8254L, 8265L, 8316L, 8327L, 8378L, 8390L, 8440L, 8452L, 8502L, 8514L, 8564L, 8576L, 8626L, 8638L, 8688L, 8700L, 8750L, 8762L, 8812L, 8824L, 8875L, 8886L, 8937L, 8948L, 8999L, 9010L, 9061L, 9072L, 9124L, 9134L, 9186L, 9196L, 9248L, 9258L, 9310L, 9320L, 9372L, 9382L, 9434L, 9444L, 9496L, 9506L, 9558L, 9568L, 9620L, 9630L, 9682L, 9692L, 9744L, 9754L, 9806L, 9816L, 9868L, 9878L, 9930L, 9940L, 9992L, 10002L, 10054L, 10064L, 10116L, 10126L, 10178L, 10189L, 10240L, 10251L, 10302L, 10313L, 10364L, 10375L, 10426L, 10438L, 10488L, 10500L, 10550L, 10562L, 10612L, 10624L, 10674L, 10686L, 10736L, 10748L, 10798L, 10810L, 10860L, 10872L, 10923L, 10934L, 10985L, 10996L, 11047L, 11058L, 11109L, 11120L, 11172L, 11182L, 11234L, 11244L, 11296L, 11306L, 11358L, 11368L, 11420L, 11430L, 11482L, 11492L, 11544L, 11554L, 11606L, 11616L, 11668L, 11678L, 11730L, 11740L, 11792L, 11802L, 11854L, 11864L, 11916L, 11926L, 11978L, 11988L, 12040L, 12050L, 12102L, 12112L, 12164L, 12174L, 12224L, 12234L, 12284L, 12294L, 12344L, 12354L, 12404L, 12414L, 12464L, 12474L, 12524L, 12534L, 12584L, 12594L, 12644L, 12654L, 12704L, 12714L, 12764L, 12774L, 12824L, 12834L, 12884L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Winnipeg" rownames(res) <- NULL tzdb_cache[["Winnipeg"]] <- res res } "Yakutat" <- function() { if(!is.null(tzdb_cache[["Yakutat"]])) return(tzdb_cache[["Yakutat"]]) ind <- c(17L, 145L, 1511L, 1546L, 2650L, 2676L, 2697L, 2724L, 2742L, 2773L, 2796L, 2828L, 2850L, 2883L, 2897L, 2970L, 2985L, 3052L, 3083L, 3129L, 3163L, 3213L, 3250L, 3298L, 3339L, 3390L, 3432L, 3478L, 3524L, 3571L, 3623L, 3675L, 3728L, 3787L, 3836L, 3893L, 3944L, 4000L, 4065L, 4127L, 4182L, 4255L, 4314L, 4382L, 4442L, 4507L, 4570L, 4630L, 4693L, 4770L, 4846L, 4917L, 4978L, 5041L, 5097L, 5159L, 5215L, 5277L, 5336L, 5399L, 5457L, 5518L, 5571L, 5633L, 5687L, 5748L, 5804L, 5870L, 5923L, 5993L, 6051L, 6113L, 6169L, 6231L, 6285L, 6354L, 6411L, 6476L, 6529L, 6591L, 6612L, 6709L, 6726L, 6833L, 6848L, 6952L, 6970L, 7073L, 7087L, 7177L, 7195L, 7267L, 7282L, 7354L, 7370L, 7460L, 7477L, 7551L, 7565L, 7651L, 7666L, 7737L, 7752L, 7822L, 7839L, 7904L, 7917L, 7983L, 7997L, 8060L, 8071L, 8132L, 8142L, 8195L, 8206L, 8257L, 8268L, 8319L, 8330L, 8381L, 8393L, 8443L, 8455L, 8505L, 8517L, 8567L, 8579L, 8629L, 8641L, 8691L, 8703L, 8753L, 8765L, 8815L, 8827L, 8878L, 8889L, 8940L, 8951L, 9002L, 9013L, 9064L, 9075L, 9127L, 9137L, 9189L, 9199L, 9251L, 9261L, 9313L, 9323L, 9375L, 9385L, 9437L, 9447L, 9499L, 9509L, 9561L, 9571L, 9623L, 9633L, 9685L, 9695L, 9747L, 9757L, 9809L, 9819L, 9871L, 9881L, 9933L, 9943L, 9995L, 10005L, 10057L, 10067L, 10119L, 10129L, 10181L, 10192L, 10243L, 10254L, 10305L, 10316L, 10367L, 10378L, 10429L, 10441L, 10491L, 10503L, 10553L, 10565L, 10615L, 10627L, 10677L, 10689L, 10739L, 10751L, 10801L, 10813L, 10863L, 10875L, 10926L, 10937L, 10988L, 10999L, 11050L, 11061L, 11112L, 11123L, 11175L, 11185L, 11237L, 11247L, 11299L, 11309L, 11361L, 11371L, 11423L, 11433L, 11485L, 11495L, 11547L, 11557L, 11609L, 11619L, 11671L, 11681L, 11733L, 11743L, 11795L, 11805L, 11857L, 11867L, 11919L, 11929L, 11981L, 11991L, 12043L, 12053L, 12105L, 12115L, 12167L, 12177L, 12227L, 12237L, 12287L, 12297L, 12347L, 12357L, 12407L, 12417L, 12467L, 12477L, 12527L, 12537L, 12587L, 12597L, 12647L, 12657L, 12707L, 12717L, 12767L, 12777L, 12827L, 12837L, 12887L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Yakutat" rownames(res) <- NULL tzdb_cache[["Yakutat"]] <- res res } "Yellowknife" <- function() { if(!is.null(tzdb_cache[["Yellowknife"]])) return(tzdb_cache[["Yellowknife"]]) ind <- c(969L, 1510L, 1544L, 2793L, 2825L, 2848L, 2880L, 2926L, 2967L, 3013L, 3049L, 3081L, 3126L, 3161L, 3210L, 3248L, 3295L, 3336L, 3387L, 3430L, 3474L, 3522L, 3568L, 3621L, 3672L, 3726L, 3783L, 3834L, 3890L, 3942L, 3997L, 4063L, 4124L, 4180L, 4252L, 4312L, 4379L, 4440L, 4504L, 4568L, 4627L, 4691L, 4767L, 4844L, 4914L, 4976L, 5038L, 5095L, 5156L, 5213L, 5274L, 5334L, 5396L, 5455L, 5515L, 5569L, 5630L, 5685L, 5745L, 5802L, 5867L, 5921L, 5990L, 6049L, 6110L, 6167L, 6228L, 6283L, 6351L, 6409L, 6473L, 6527L, 6589L, 6610L, 6707L, 6724L, 6831L, 6846L, 6950L, 6968L, 7070L, 7085L, 7175L, 7193L, 7265L, 7280L, 7352L, 7368L, 7458L, 7474L, 7549L, 7563L, 7649L, 7664L, 7735L, 7750L, 7820L, 7837L, 7902L, 7915L, 7981L, 7995L, 8058L, 8069L, 8130L, 8140L, 8193L, 8204L, 8255L, 8266L, 8317L, 8328L, 8379L, 8391L, 8441L, 8453L, 8503L, 8515L, 8565L, 8577L, 8627L, 8639L, 8689L, 8701L, 8751L, 8763L, 8813L, 8825L, 8876L, 8887L, 8938L, 8949L, 9000L, 9011L, 9062L, 9073L, 9125L, 9135L, 9187L, 9197L, 9249L, 9259L, 9311L, 9321L, 9373L, 9383L, 9435L, 9445L, 9497L, 9507L, 9559L, 9569L, 9621L, 9631L, 9683L, 9693L, 9745L, 9755L, 9807L, 9817L, 9869L, 9879L, 9931L, 9941L, 9993L, 10003L, 10055L, 10065L, 10117L, 10127L, 10179L, 10190L, 10241L, 10252L, 10303L, 10314L, 10365L, 10376L, 10427L, 10439L, 10489L, 10501L, 10551L, 10563L, 10613L, 10625L, 10675L, 10687L, 10737L, 10749L, 10799L, 10811L, 10861L, 10873L, 10924L, 10935L, 10986L, 10997L, 11048L, 11059L, 11110L, 11121L, 11173L, 11183L, 11235L, 11245L, 11297L, 11307L, 11359L, 11369L, 11421L, 11431L, 11483L, 11493L, 11545L, 11555L, 11607L, 11617L, 11669L, 11679L, 11731L, 11741L, 11793L, 11803L, 11855L, 11865L, 11917L, 11927L, 11979L, 11989L, 12041L, 12051L, 12103L, 12113L, 12165L, 12175L, 12225L, 12235L, 12285L, 12295L, 12345L, 12355L, 12405L, 12415L, 12465L, 12475L, 12525L, 12535L, 12585L, 12595L, 12645L, 12655L, 12705L, 12715L, 12765L, 12775L, 12825L, 12835L, 12885L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Yellowknife" rownames(res) <- NULL tzdb_cache[["Yellowknife"]] <- res res } "Casey" <- function() { if(!is.null(tzdb_cache[["Casey"]])) return(tzdb_cache[["Casey"]]) ind <- c(2633L, 6911L, 6958L, 7152L, 7183L, 7623L, 7743L, 7791L, 7841L, 7874L, 7908L, 7956L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Casey" rownames(res) <- NULL tzdb_cache[["Casey"]] <- res res } "Davis" <- function() { if(!is.null(tzdb_cache[["Davis"]])) return(tzdb_cache[["Davis"]]) ind <- c(2105L, 2437L, 2635L, 6912L, 6959L, 7153L, 7184L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Davis" rownames(res) <- NULL tzdb_cache[["Davis"]] <- res res } "Macquarie" <- function() { if(!is.null(tzdb_cache[["Macquarie"]])) return(tzdb_cache[["Macquarie"]]) ind <- c(138L, 275L, 295L, 385L, 1689L, 2571L, 2598L, 2620L, 2636L, 2666L, 2683L, 2714L, 2728L, 2760L, 2778L, 2816L, 2832L, 2871L, 2907L, 2956L, 2989L, 3040L, 3061L, 3118L, 3138L, 3203L, 3224L, 3287L, 3310L, 3379L, 3397L, 3466L, 3486L, 3560L, 3586L, 3666L, 3691L, 3774L, 3792L, 3881L, 3900L, 3988L, 4014L, 4109L, 4140L, 4237L, 4273L, 4371L, 4398L, 4493L, 4526L, 4616L, 4655L, 4743L, 4806L, 4892L, 4941L, 5020L, 5062L, 5139L, 5177L, 5255L, 5295L, 5358L, 5416L, 5476L, 5532L, 5593L, 5647L, 5702L, 5767L, 5811L, 5886L, 5949L, 6013L, 6070L, 6132L, 6187L, 6248L, 6313L, 6372L, 6431L, 6516L, 6546L, 6619L, 6661L, 6764L, 6785L, 6884L, 6905L, 7121L, 7144L, 7215L, 7238L, 7304L, 7323L, 7394L, 7415L, 7502L, 7519L, 7594L, 7618L, 7688L, 7705L, 7774L, 7789L, 7860L, 7877L, 7939L, 7955L, 8019L, 8034L, 8092L, 8106L, 8162L, 8173L, 8224L, 8235L, 8286L, 8297L, 8349L, 8359L, 8411L, 8421L, 8473L, 8483L, 8535L, 8545L, 8597L, 8607L, 8659L, 8669L, 8721L, 8731L, 8783L, 8793L, 8845L, 8855L, 8907L, 8917L, 8969L, 8979L, 9031L, 9041L, 9093L, 9104L, 9155L, 9166L, 9217L, 9228L, 9279L, 9291L, 9341L, 9353L, 9403L, 9415L, 9465L, 9477L, 9527L, 9539L, 9589L, 9601L, 9651L, 9663L, 9713L, 9725L, 9775L, 9787L, 9837L, 9849L, 9899L, 9911L, 9961L, 9973L, 10023L, 10035L, 10085L, 10097L, 10148L, 10159L, 10210L, 10221L, 10272L, 10283L, 10335L, 10345L, 10397L, 10407L, 10459L, 10469L, 10521L, 10531L, 10583L, 10593L, 10645L, 10655L, 10707L, 10717L, 10769L, 10779L, 10831L, 10841L, 10893L, 10903L, 10955L, 10965L, 11017L, 11027L, 11079L, 11089L, 11141L, 11152L, 11203L, 11214L, 11265L, 11276L, 11327L, 11339L, 11389L, 11401L, 11451L, 11463L, 11513L, 11525L, 11575L, 11587L, 11637L, 11649L, 11699L, 11711L, 11761L, 11773L, 11823L, 11835L, 11885L, 11897L, 11947L, 11959L, 12009L, 12021L, 12071L, 12083L, 12134L, 12145L, 12195L, 12205L, 12255L, 12265L, 12315L, 12325L, 12375L, 12385L, 12435L, 12445L, 12495L, 12505L, 12555L, 12565L, 12615L, 12625L, 12675L, 12685L, 12735L, 12745L, 12795L, 12805L, 12855L, 12865L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Macquarie" rownames(res) <- NULL tzdb_cache[["Macquarie"]] <- res res } "Mawson" <- function() { if(!is.null(tzdb_cache[["Mawson"]])) return(tzdb_cache[["Mawson"]]) ind <- c(1981L, 6913L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Mawson" rownames(res) <- NULL tzdb_cache[["Mawson"]] <- res res } "Palmer" <- function() { if(!is.null(tzdb_cache[["Palmer"]])) return(tzdb_cache[["Palmer"]]) ind <- c(2440L, 2447L, 2480L, 2499L, 2525L, 2551L, 2576L, 2599L, 2617L, 2639L, 2663L, 2902L, 2931L, 3627L, 3658L, 3688L, 3766L, 3797L, 3874L, 3903L, 3981L, 4016L, 4105L, 4185L, 4230L, 4269L, 4360L, 4395L, 4488L, 4521L, 4585L, 4644L, 4746L, 4798L, 4895L, 4932L, 5021L, 5051L, 5140L, 5169L, 5261L, 5285L, 5362L, 5441L, 5480L, 5524L, 5587L, 5677L, 5707L, 5758L, 5830L, 5878L, 5953L, 6000L, 6073L, 6119L, 6188L, 6236L, 6314L, 6361L, 6435L, 6480L, 6552L, 6599L, 6664L, 6757L, 6789L, 6851L, 6909L, 7008L, 7033L, 7128L, 7132L, 7223L, 7228L, 7310L, 7315L, 7399L, 7407L, 7601L, 7607L ) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Palmer" rownames(res) <- NULL tzdb_cache[["Palmer"]] <- res res } "Rothera" <- function() { if(!is.null(tzdb_cache[["Rothera"]])) return(tzdb_cache[["Rothera"]]) ind <- 3133L res <- all_tz_rows[ind, ] colnames(res)[1] <- "Rothera" rownames(res) <- NULL tzdb_cache[["Rothera"]] <- res res } "Troll" <- function() { if(!is.null(tzdb_cache[["Troll"]])) return(tzdb_cache[["Troll"]]) ind <- c(6358L, 6392L, 6461L, 6506L, 6576L, 6638L, 6690L, 6752L, 6813L, 6876L, 6932L, 6996L, 7056L, 7108L, 7163L, 7204L, 7252L, 7295L, 7338L, 7383L, 7441L, 7492L, 7532L, 7582L, 7633L, 7676L, 7719L, 7762L, 7803L, 7851L, 7889L, 7929L, 7966L, 8008L, 8045L, 8081L, 8116L, 8152L, 8182L, 8215L, 8244L, 8277L, 8306L, 8340L, 8368L, 8401L, 8430L, 8463L, 8492L, 8525L, 8554L, 8588L, 8616L, 8650L, 8678L, 8711L, 8740L, 8773L, 8802L, 8835L, 8864L, 8897L, 8926L, 8960L, 8989L, 9022L, 9051L, 9083L, 9113L, 9145L, 9176L, 9207L, 9238L, 9270L, 9300L, 9332L, 9362L, 9394L, 9424L, 9455L, 9486L, 9517L, 9548L, 9579L, 9610L, 9642L, 9672L, 9704L, 9734L, 9765L, 9796L, 9827L, 9858L, 9889L, 9920L, 9952L, 9982L, 10014L, 10044L, 10076L, 10106L, 10137L, 10168L, 10200L, 10230L, 10262L, 10292L, 10325L, 10354L, 10388L, 10416L, 10449L, 10478L, 10511L, 10540L, 10573L, 10602L, 10635L, 10664L, 10698L, 10726L, 10760L, 10788L, 10821L, 10850L, 10883L, 10912L, 10945L, 10975L, 11008L, 11037L, 11070L, 11099L, 11132L, 11161L, 11193L, 11224L, 11255L, 11286L, 11317L, 11348L, 11380L, 11410L, 11442L, 11472L, 11503L, 11534L, 11565L, 11596L, 11627L, 11658L, 11690L, 11720L, 11752L, 11782L, 11814L, 11844L, 11875L, 11906L, 11937L, 11968L, 11999L, 12030L, 12062L, 12092L, 12124L, 12154L, 12185L, 12214L, 12245L, 12274L, 12305L, 12334L, 12365L, 12394L, 12426L, 12454L, 12486L, 12514L, 12545L, 12574L, 12605L, 12634L, 12665L, 12694L, 12726L, 12754L, 12786L, 12814L, 12846L, 12874L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Troll" rownames(res) <- NULL tzdb_cache[["Troll"]] <- res res } "Almaty" <- function() { if(!is.null(tzdb_cache[["Almaty"]])) return(tzdb_cache[["Almaty"]]) ind <- c(600L, 785L, 3510L, 3548L, 3606L, 3647L, 3713L, 3755L, 3819L, 3854L, 3915L, 3962L, 4036L, 4084L, 4153L, 4207L, 4286L, 4337L, 4411L, 4463L, 4539L, 4662L, 4721L, 4782L, 4813L, 4869L, 4948L, 4999L, 5069L, 5118L, 5185L, 5238L, 5303L, 5374L, 5424L, 5493L, 5540L, 5607L, 5653L, 5720L, 5773L, 5842L, 5892L, 5966L, 6019L, 6086L, 6138L, 6204L, 6254L, 6327L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Almaty" rownames(res) <- NULL tzdb_cache[["Almaty"]] <- res res } "Amman" <- function() { if(!is.null(tzdb_cache[["Amman"]])) return(tzdb_cache[["Amman"]]) ind <- c(804L, 2859L, 2864L, 2928L, 2943L, 3015L, 3026L, 3086L, 3132L, 3167L, 3188L, 3243L, 3270L, 3931L, 3976L, 4055L, 4101L, 4173L, 4227L, 4302L, 4357L, 4448L, 4482L, 4574L, 4607L, 4696L, 4710L, 4849L, 4889L, 4966L, 5014L, 5083L, 5106L, 5217L, 5225L, 5323L, 5344L, 5445L, 5464L, 5561L, 5580L, 5692L, 5697L, 5791L, 5817L, 5910L, 5939L, 6005L, 6062L, 6124L, 6193L, 6241L, 6316L, 6398L, 6425L, 6511L, 6554L, 6643L, 6667L, 6731L, 6822L, 6854L, 6942L, 6973L, 7039L, 7114L, 7155L, 7209L, 7357L, 7374L, 7450L, 7481L, 7541L, 7589L, 7625L, 7683L, 7711L, 7769L, 7794L, 7844L, 7881L, 7921L, 7974L, 8000L, 8038L, 8062L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Amman" rownames(res) <- NULL tzdb_cache[["Amman"]] <- res res } "Anadyr" <- function() { if(!is.null(tzdb_cache[["Anadyr"]])) return(tzdb_cache[["Anadyr"]]) ind <- c(597L, 778L, 3502L, 3599L, 3641L, 3706L, 3749L, 3813L, 3845L, 3906L, 3953L, 4027L, 4075L, 4144L, 4198L, 4277L, 4328L, 4402L, 4454L, 4530L, 4652L, 4713L, 4776L, 4803L, 4859L, 4938L, 4989L, 5059L, 5108L, 5174L, 5227L, 5291L, 5365L, 5411L, 5483L, 5528L, 5597L, 5644L, 5710L, 5764L, 5834L, 5883L, 5956L, 6010L, 6076L, 6129L, 6194L, 6245L, 6318L, 6369L, 6440L, 6488L, 6555L, 6616L, 6668L, 6733L, 6793L, 6856L, 6976L, 7040L, 7091L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Anadyr" rownames(res) <- NULL tzdb_cache[["Anadyr"]] <- res res } "Aqtau" <- function() { if(!is.null(tzdb_cache[["Aqtau"]])) return(tzdb_cache[["Aqtau"]]) ind <- c(611L, 786L, 3607L, 3648L, 3714L, 3756L, 3820L, 3855L, 3916L, 3963L, 4037L, 4085L, 4154L, 4208L, 4287L, 4338L, 4412L, 4464L, 4540L, 4663L, 4723L, 4783L, 4815L, 4871L, 4949L, 5001L, 5070L, 5120L, 5188L, 5241L, 5307L, 5377L, 5427L, 5496L, 5544L, 5610L, 5658L, 5724L, 5777L, 5846L, 5896L, 5970L, 6023L, 6090L, 6142L, 6208L, 6258L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Aqtau" rownames(res) <- NULL tzdb_cache[["Aqtau"]] <- res res } "Aqtobe" <- function() { if(!is.null(tzdb_cache[["Aqtobe"]])) return(tzdb_cache[["Aqtobe"]]) ind <- c(608L, 786L, 3607L, 3648L, 3714L, 3756L, 3820L, 3855L, 3916L, 3963L, 4037L, 4085L, 4154L, 4208L, 4287L, 4338L, 4412L, 4464L, 4540L, 4663L, 4723L, 4783L, 4815L, 4871L, 4949L, 5001L, 5070L, 5121L, 5187L, 5239L, 5305L, 5375L, 5425L, 5495L, 5542L, 5609L, 5655L, 5722L, 5775L, 5844L, 5894L, 5968L, 6021L, 6088L, 6140L, 6206L, 6256L, 6329L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Aqtobe" rownames(res) <- NULL tzdb_cache[["Aqtobe"]] <- res res } "Ashgabat" <- function() { if(!is.null(tzdb_cache[["Ashgabat"]])) return(tzdb_cache[["Ashgabat"]]) ind <- c(607L, 786L, 3511L, 3549L, 3608L, 3648L, 3714L, 3756L, 3820L, 3855L, 3916L, 3963L, 4037L, 4085L, 4154L, 4208L, 4287L, 4338L, 4412L, 4464L, 4540L, 4663L, 4723L, 4783L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Ashgabat" rownames(res) <- NULL tzdb_cache[["Ashgabat"]] <- res res } "Atyrau" <- function() { if(!is.null(tzdb_cache[["Atyrau"]])) return(tzdb_cache[["Atyrau"]]) ind <- c(609L, 787L, 3607L, 3648L, 3714L, 3756L, 3820L, 3855L, 3916L, 3963L, 4037L, 4085L, 4154L, 4208L, 4287L, 4338L, 4412L, 4464L, 4540L, 4663L, 4723L, 4783L, 4815L, 4871L, 4949L, 5001L, 5070L, 5121L, 5187L, 5239L, 5305L, 5375L, 5425L, 5495L, 5542L, 5656L, 5724L, 5777L, 5846L, 5896L, 5970L, 6023L, 6090L, 6142L, 6208L, 6258L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Atyrau" rownames(res) <- NULL tzdb_cache[["Atyrau"]] <- res res } "Baghdad" <- function() { if(!is.null(tzdb_cache[["Baghdad"]])) return(tzdb_cache[["Baghdad"]]) ind <- c(68L, 317L, 3626L, 3650L, 3705L, 3758L, 3822L, 3867L, 3930L, 3965L, 4038L, 4087L, 4155L, 4210L, 4288L, 4340L, 4414L, 4466L, 4541L, 4593L, 4681L, 4740L, 4835L, 4888L, 4965L, 5016L, 5085L, 5135L, 5203L, 5257L, 5322L, 5355L, 5444L, 5472L, 5560L, 5590L, 5674L, 5699L, 5793L, 5821L, 5913L, 5946L, 6038L, 6067L, 6157L, 6183L, 6274L, 6310L, 6399L, 6428L, 6514L, 6548L, 6647L, 6660L ) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Baghdad" rownames(res) <- NULL tzdb_cache[["Baghdad"]] <- res res } "Baku" <- function() { if(!is.null(tzdb_cache[["Baku"]])) return(tzdb_cache[["Baku"]]) ind <- c(612L, 2107L, 3512L, 3550L, 3609L, 3649L, 3715L, 3757L, 3821L, 3857L, 3917L, 3966L, 4039L, 4088L, 4156L, 4211L, 4289L, 4341L, 4415L, 4467L, 4542L, 4665L, 4726L, 4875L, 5316L, 5385L, 5432L, 5500L, 5549L, 5614L, 5663L, 5728L, 5782L, 5850L, 5901L, 5974L, 6028L, 6094L, 6147L, 6212L, 6263L, 6336L, 6387L, 6456L, 6501L, 6571L, 6633L, 6685L, 6747L, 6808L, 6871L, 6927L, 6991L, 7051L, 7102L, 7158L, 7199L, 7247L, 7290L, 7333L, 7377L, 7436L, 7487L, 7527L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Baku" rownames(res) <- NULL tzdb_cache[["Baku"]] <- res res } "Bangkok" <- function() { if(!is.null(tzdb_cache[["Bangkok"]])) return(tzdb_cache[["Bangkok"]]) ind <- c(25L, 453L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Bangkok" rownames(res) <- NULL tzdb_cache[["Bangkok"]] <- res res } "Barnaul" <- function() { if(!is.null(tzdb_cache[["Barnaul"]])) return(tzdb_cache[["Barnaul"]]) ind <- c(425L, 784L, 3509L, 3547L, 3605L, 3646L, 3712L, 3754L, 3818L, 3853L, 3914L, 3961L, 4035L, 4083L, 4152L, 4206L, 4285L, 4336L, 4410L, 4462L, 4538L, 4661L, 4720L, 4781L, 4812L, 4868L, 4947L, 4998L, 5068L, 5117L, 5184L, 5221L, 5238L, 5303L, 5374L, 5424L, 5493L, 5540L, 5607L, 5653L, 5720L, 5773L, 5842L, 5892L, 5966L, 6019L, 6086L, 6138L, 6204L, 6254L, 6327L, 6378L, 6449L, 6494L, 6564L, 6627L, 6679L, 6741L, 6801L, 6864L, 6921L, 6984L, 7045L, 7096L, 7429L, 7575L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Barnaul" rownames(res) <- NULL tzdb_cache[["Barnaul"]] <- res res } "Beirut" <- function() { if(!is.null(tzdb_cache[["Beirut"]])) return(tzdb_cache[["Beirut"]]) ind <- c(31L, 449L, 476L, 495L, 517L, 531L, 550L, 559L, 572L, 2125L, 2140L, 2169L, 2178L, 2206L, 2219L, 2255L, 2264L, 2295L, 2306L, 2803L, 2805L, 2853L, 2864L, 2928L, 2943L, 3015L, 3026L, 3086L, 3102L, 3167L, 3188L, 3243L, 3270L, 3838L, 3877L, 3946L, 3984L, 4067L, 4107L, 4190L, 4232L, 4322L, 4362L, 4449L, 4490L, 4575L, 4612L, 4698L, 4750L, 4852L, 4893L, 4951L, 5002L, 5071L, 5122L, 5189L, 5240L, 5308L, 5351L, 5428L, 5470L, 5545L, 5586L, 5659L, 5723L, 5778L, 5845L, 5897L, 5969L, 6024L, 6089L, 6143L, 6207L, 6259L, 6330L, 6381L, 6450L, 6496L, 6565L, 6629L, 6680L, 6743L, 6802L, 6867L, 6922L, 6986L, 7046L, 7098L, 7156L, 7198L, 7246L, 7289L, 7331L, 7376L, 7431L, 7486L, 7525L, 7576L, 7627L, 7671L, 7713L, 7757L, 7796L, 7846L, 7883L, 7924L, 7960L, 8003L, 8039L, 8076L, 8110L, 8147L, 8177L, 8211L, 8239L, 8273L, 8301L, 8336L, 8363L, 8397L, 8425L, 8459L, 8487L, 8521L, 8549L, 8584L, 8611L, 8646L, 8673L, 8707L, 8735L, 8769L, 8797L, 8831L, 8859L, 8893L, 8921L, 8956L, 8984L, 9018L, 9046L, 9079L, 9108L, 9141L, 9171L, 9203L, 9233L, 9266L, 9295L, 9328L, 9357L, 9390L, 9419L, 9451L, 9481L, 9513L, 9543L, 9575L, 9605L, 9638L, 9667L, 9700L, 9729L, 9761L, 9791L, 9823L, 9853L, 9885L, 9915L, 9948L, 9977L, 10010L, 10039L, 10072L, 10101L, 10133L, 10163L, 10196L, 10225L, 10258L, 10287L, 10321L, 10349L, 10384L, 10411L, 10445L, 10473L, 10507L, 10535L, 10569L, 10597L, 10631L, 10659L, 10694L, 10721L, 10756L, 10783L, 10817L, 10845L, 10879L, 10907L, 10941L, 10970L, 11004L, 11032L, 11066L, 11094L, 11128L, 11156L, 11189L, 11219L, 11251L, 11281L, 11313L, 11343L, 11376L, 11405L, 11438L, 11467L, 11499L, 11529L, 11561L, 11591L, 11623L, 11653L, 11686L, 11715L, 11748L, 11777L, 11810L, 11839L, 11871L, 11901L, 11933L, 11963L, 11995L, 12025L, 12058L, 12087L, 12120L, 12149L, 12181L, 12209L, 12241L, 12269L, 12301L, 12329L, 12361L, 12389L, 12422L, 12449L, 12482L, 12509L, 12541L, 12569L, 12601L, 12629L, 12661L, 12689L, 12722L, 12749L, 12782L, 12809L, 12842L, 12869L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Beirut" rownames(res) <- NULL tzdb_cache[["Beirut"]] <- res res } "Bishkek" <- function() { if(!is.null(tzdb_cache[["Bishkek"]])) return(tzdb_cache[["Bishkek"]]) ind <- c(601L, 785L, 3510L, 3548L, 3606L, 3647L, 3713L, 3755L, 3819L, 3854L, 3915L, 3962L, 4036L, 4084L, 4153L, 4207L, 4286L, 4337L, 4411L, 4463L, 4539L, 4662L, 4703L, 4850L, 4866L, 4980L, 4996L, 5099L, 5115L, 5218L, 5234L, 5324L, 5350L, 5426L, 5494L, 5543L, 5608L, 5657L, 5721L, 5776L, 5843L, 5895L, 5967L, 6022L, 6087L, 6141L, 6205L, 6257L, 6328L, 6380L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Bishkek" rownames(res) <- NULL tzdb_cache[["Bishkek"]] <- res res } "Chita" <- function() { if(!is.null(tzdb_cache[["Chita"]])) return(tzdb_cache[["Chita"]]) ind <- c(430L, 782L, 3506L, 3545L, 3603L, 3644L, 3709L, 3752L, 3816L, 3851L, 3911L, 3959L, 4032L, 4081L, 4149L, 4204L, 4282L, 4334L, 4407L, 4460L, 4535L, 4658L, 4718L, 4779L, 4809L, 4865L, 4944L, 4995L, 5065L, 5114L, 5181L, 5233L, 5299L, 5371L, 5420L, 5489L, 5536L, 5603L, 5650L, 5716L, 5770L, 5838L, 5889L, 5962L, 6016L, 6082L, 6135L, 6200L, 6251L, 6324L, 6375L, 6446L, 6491L, 6561L, 6622L, 6674L, 6736L, 6796L, 6859L, 6918L, 6980L, 7042L, 7093L, 7425L, 7574L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Chita" rownames(res) <- NULL tzdb_cache[["Chita"]] <- res res } "Choibalsan" <- function() { if(!is.null(tzdb_cache[["Choibalsan"]])) return(tzdb_cache[["Choibalsan"]]) ind <- c(175L, 3218L, 3710L, 3752L, 3816L, 3846L, 3907L, 3954L, 4028L, 4076L, 4145L, 4199L, 4278L, 4329L, 4403L, 4455L, 4531L, 4588L, 4653L, 4712L, 4804L, 4860L, 4939L, 4990L, 5060L, 5109L, 5175L, 5228L, 5292L, 5347L, 5412L, 5467L, 5529L, 5583L, 5929L, 5940L, 6007L, 6063L, 6126L, 6179L, 6242L, 6304L, 6366L, 6421L, 6485L, 6541L, 6759L, 7483L, 7512L, 7570L, 7612L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Choibalsan" rownames(res) <- NULL tzdb_cache[["Choibalsan"]] <- res res } "Colombo" <- function() { if(!is.null(tzdb_cache[["Colombo"]])) return(tzdb_cache[["Colombo"]]) ind <- c(27L, 182L, 1305L, 1351L, 1556L, 5340L, 5364L, 6531L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Colombo" rownames(res) <- NULL tzdb_cache[["Colombo"]] <- res res } "Damascus" <- function() { if(!is.null(tzdb_cache[["Damascus"]])) return(tzdb_cache[["Damascus"]]) ind <- c(437L, 455L, 469L, 497L, 515L, 535L, 549L, 558L, 579L, 2327L, 2340L, 2369L, 2373L, 2418L, 2425L, 2470L, 2473L, 2509L, 2521L, 2562L, 2574L, 2610L, 2615L, 2654L, 2661L, 2702L, 2707L, 2748L, 2753L, 2800L, 2806L, 2855L, 2865L, 2930L, 2944L, 3018L, 3027L, 3090L, 3103L, 3171L, 3176L, 3255L, 3265L, 3719L, 3761L, 3826L, 3869L, 4011L, 4103L, 4137L, 4258L, 4271L, 4385L, 4430L, 4480L, 4557L, 4596L, 4680L, 4738L, 4848L, 4886L, 4937L, 4988L, 5083L, 5133L, 5202L, 5256L, 5321L, 5354L, 5443L, 5471L, 5559L, 5589L, 5673L, 5698L, 5792L, 5820L, 5911L, 5945L, 6037L, 6066L, 6156L, 6182L, 6273L, 6308L, 6398L, 6427L, 6513L, 6540L, 6643L, 6699L, 6760L, 6824L, 6854L, 6941L, 7001L, 7038L, 7114L, 7154L, 7209L, 7245L, 7286L, 7329L, 7374L, 7449L, 7481L, 7540L, 7568L, 7624L, 7683L, 7710L, 7769L, 7793L, 7844L, 7880L, 7921L, 7973L, 8000L, 8037L, 8074L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Damascus" rownames(res) <- NULL tzdb_cache[["Damascus"]] <- res res } "Dhaka" <- function() { if(!is.null(tzdb_cache[["Dhaka"]])) return(tzdb_cache[["Dhaka"]]) ind <- c(66L, 1283L, 1338L, 1352L, 1874L, 6894L, 6955L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Dhaka" rownames(res) <- NULL tzdb_cache[["Dhaka"]] <- res res } "Dili" <- function() { if(!is.null(tzdb_cache[["Dili"]])) return(tzdb_cache[["Dili"]]) ind <- c(210L, 1314L, 3092L, 5814L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Dili" rownames(res) <- NULL tzdb_cache[["Dili"]] <- res res } "Dubai" <- function() { if(!is.null(tzdb_cache[["Dubai"]])) return(tzdb_cache[["Dubai"]]) ind <- 435L res <- all_tz_rows[ind, ] colnames(res)[1] <- "Dubai" rownames(res) <- NULL tzdb_cache[["Dubai"]] <- res res } "Dushanbe" <- function() { if(!is.null(tzdb_cache[["Dushanbe"]])) return(tzdb_cache[["Dushanbe"]]) ind <- c(603L, 785L, 3510L, 3548L, 3606L, 3647L, 3713L, 3755L, 3819L, 3854L, 3915L, 3962L, 4036L, 4084L, 4153L, 4207L, 4286L, 4337L, 4411L, 4463L, 4539L, 4662L, 4706L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Dushanbe" rownames(res) <- NULL tzdb_cache[["Dushanbe"]] <- res res } "Famagusta" <- function() { if(!is.null(tzdb_cache[["Famagusta"]])) return(tzdb_cache[["Famagusta"]]) ind <- c(525L, 3001L, 3032L, 3093L, 3110L, 3148L, 3179L, 3234L, 3280L, 3321L, 3355L, 3415L, 3445L, 3491L, 3530L, 3587L, 3631L, 3692L, 3738L, 3802L, 3856L, 3918L, 3964L, 4040L, 4086L, 4157L, 4209L, 4290L, 4339L, 4416L, 4465L, 4543L, 4591L, 4666L, 4722L, 4818L, 4872L, 4951L, 5002L, 5071L, 5122L, 5189L, 5240L, 5308L, 5351L, 5428L, 5470L, 5545L, 5619L, 5668L, 5733L, 5787L, 5855L, 5906L, 5979L, 6033L, 6099L, 6152L, 6217L, 6268L, 6341L, 6393L, 6462L, 6507L, 6577L, 6639L, 6691L, 6753L, 6814L, 6877L, 6933L, 6997L, 7057L, 7109L, 7164L, 7205L, 7253L, 7296L, 7339L, 7384L, 7442L, 7493L, 7533L, 7610L, 7720L, 7763L, 7804L, 7852L, 7890L, 7930L, 7967L, 8009L, 8046L, 8082L, 8117L, 8153L, 8183L, 8216L, 8245L, 8278L, 8307L, 8341L, 8369L, 8402L, 8431L, 8464L, 8493L, 8526L, 8555L, 8589L, 8617L, 8651L, 8679L, 8712L, 8741L, 8774L, 8803L, 8836L, 8865L, 8898L, 8927L, 8961L, 8990L, 9023L, 9052L, 9084L, 9114L, 9146L, 9177L, 9208L, 9239L, 9271L, 9301L, 9333L, 9363L, 9395L, 9425L, 9456L, 9487L, 9518L, 9549L, 9580L, 9611L, 9643L, 9673L, 9705L, 9735L, 9766L, 9797L, 9828L, 9859L, 9890L, 9921L, 9953L, 9983L, 10015L, 10045L, 10077L, 10107L, 10138L, 10169L, 10201L, 10231L, 10263L, 10293L, 10326L, 10355L, 10389L, 10417L, 10450L, 10479L, 10512L, 10541L, 10574L, 10603L, 10636L, 10665L, 10699L, 10727L, 10761L, 10789L, 10822L, 10851L, 10884L, 10913L, 10946L, 10976L, 11009L, 11038L, 11071L, 11100L, 11133L, 11162L, 11194L, 11225L, 11256L, 11287L, 11318L, 11349L, 11381L, 11411L, 11443L, 11473L, 11504L, 11535L, 11566L, 11597L, 11628L, 11659L, 11691L, 11721L, 11753L, 11783L, 11815L, 11845L, 11876L, 11907L, 11938L, 11969L, 12000L, 12031L, 12063L, 12093L, 12125L, 12155L, 12186L, 12215L, 12246L, 12275L, 12306L, 12335L, 12366L, 12395L, 12427L, 12455L, 12487L, 12515L, 12546L, 12575L, 12606L, 12635L, 12666L, 12695L, 12727L, 12755L, 12787L, 12815L, 12847L, 12875L ) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Famagusta" rownames(res) <- NULL tzdb_cache[["Famagusta"]] <- res res } "Gaza" <- function() { if(!is.null(tzdb_cache[["Gaza"]])) return(tzdb_cache[["Gaza"]]) ind <- c(150L, 1201L, 1223L, 1234L, 1370L, 1390L, 1422L, 1436L, 1476L, 1493L, 1563L, 1585L, 1628L, 2127L, 2140L, 2169L, 2178L, 2207L, 2217L, 2256L, 2262L, 2296L, 2304L, 2335L, 2338L, 2368L, 2374L, 2417L, 2423L, 2469L, 2474L, 2517L, 2522L, 2561L, 2566L, 2936L, 2949L, 3005L, 3022L, 3440L, 3441L, 3840L, 3842L, 3934L, 3949L, 4070L, 4071L, 4187L, 4195L, 4316L, 4324L, 4446L, 4450L, 4544L, 4582L, 4651L, 4704L, 4819L, 4855L, 4967L, 4985L, 5084L, 5103L, 5201L, 5280L, 5323L, 5344L, 5445L, 5464L, 5561L, 5580L, 5689L, 5709L, 5808L, 5832L, 5927L, 5955L, 6053L, 6075L, 6171L, 6190L, 6288L, 6309L, 6414L, 6433L, 6513L, 6540L, 6645L, 6656L, 6731L, 6776L, 6854L, 6897L, 6975L, 7018L, 7115L, 7131L, 7209L, 7231L, 7286L, 7318L, 7374L, 7421L, 7485L, 7524L, 7572L, 7626L, 7670L, 7712L, 7756L, 7795L, 7844L, 7882L, 7923L, 7959L, 8002L, 8038L, 8076L, 8109L, 8146L, 8176L, 8210L, 8238L, 8272L, 8300L, 8335L, 8362L, 8396L, 8424L, 8458L, 8486L, 8520L, 8548L, 8583L, 8610L, 8645L, 8672L, 8706L, 8734L, 8768L, 8796L, 8830L, 8858L, 8892L, 8920L, 8955L, 8983L, 9017L, 9045L, 9078L, 9107L, 9140L, 9170L, 9202L, 9232L, 9265L, 9294L, 9327L, 9356L, 9389L, 9418L, 9450L, 9480L, 9512L, 9542L, 9574L, 9604L, 9637L, 9666L, 9699L, 9728L, 9760L, 9790L, 9822L, 9852L, 9884L, 9914L, 9947L, 9976L, 10009L, 10038L, 10071L, 10100L, 10132L, 10162L, 10195L, 10224L, 10257L, 10286L, 10320L, 10348L, 10383L, 10410L, 10444L, 10472L, 10506L, 10534L, 10568L, 10596L, 10630L, 10658L, 10693L, 10720L, 10755L, 10782L, 10816L, 10844L, 10878L, 10906L, 10940L, 10969L, 11003L, 11031L, 11065L, 11093L, 11127L, 11155L, 11188L, 11218L, 11250L, 11280L, 11312L, 11342L, 11375L, 11404L, 11437L, 11466L, 11498L, 11528L, 11560L, 11590L, 11622L, 11652L, 11685L, 11714L, 11747L, 11776L, 11809L, 11838L, 11870L, 11900L, 11932L, 11962L, 11994L, 12024L, 12057L, 12086L, 12119L, 12148L, 12180L, 12208L, 12240L, 12268L, 12300L, 12328L, 12360L, 12388L, 12421L, 12448L, 12481L, 12508L, 12540L, 12568L, 12600L, 12628L, 12660L, 12688L, 12721L, 12748L, 12781L, 12808L, 12841L, 12868L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Gaza" rownames(res) <- NULL tzdb_cache[["Gaza"]] <- res res } "Hebron" <- function() { if(!is.null(tzdb_cache[["Hebron"]])) return(tzdb_cache[["Hebron"]]) ind <- c(149L, 1201L, 1223L, 1234L, 1370L, 1390L, 1422L, 1436L, 1476L, 1493L, 1563L, 1585L, 1628L, 2127L, 2140L, 2169L, 2178L, 2207L, 2217L, 2256L, 2262L, 2296L, 2304L, 2335L, 2338L, 2368L, 2374L, 2417L, 2423L, 2469L, 2474L, 2517L, 2522L, 2561L, 2566L, 2936L, 2949L, 3005L, 3022L, 3440L, 3441L, 3840L, 3842L, 3934L, 3949L, 4070L, 4071L, 4187L, 4195L, 4316L, 4324L, 4446L, 4450L, 4544L, 4582L, 4651L, 4704L, 4819L, 4855L, 4967L, 4985L, 5084L, 5103L, 5201L, 5280L, 5323L, 5344L, 5445L, 5464L, 5561L, 5580L, 5689L, 5709L, 5808L, 5832L, 5927L, 5955L, 6053L, 6075L, 6171L, 6190L, 6288L, 6309L, 6414L, 6433L, 6513L, 6540L, 6645L, 6656L, 6731L, 6777L, 6854L, 6897L, 6973L, 7018L, 7115L, 7131L, 7134L, 7142L, 7209L, 7231L, 7286L, 7318L, 7374L, 7421L, 7485L, 7524L, 7572L, 7626L, 7670L, 7712L, 7756L, 7795L, 7844L, 7882L, 7923L, 7959L, 8002L, 8038L, 8076L, 8109L, 8146L, 8176L, 8210L, 8238L, 8272L, 8300L, 8335L, 8362L, 8396L, 8424L, 8458L, 8486L, 8520L, 8548L, 8583L, 8610L, 8645L, 8672L, 8706L, 8734L, 8768L, 8796L, 8830L, 8858L, 8892L, 8920L, 8955L, 8983L, 9017L, 9045L, 9078L, 9107L, 9140L, 9170L, 9202L, 9232L, 9265L, 9294L, 9327L, 9356L, 9389L, 9418L, 9450L, 9480L, 9512L, 9542L, 9574L, 9604L, 9637L, 9666L, 9699L, 9728L, 9760L, 9790L, 9822L, 9852L, 9884L, 9914L, 9947L, 9976L, 10009L, 10038L, 10071L, 10100L, 10132L, 10162L, 10195L, 10224L, 10257L, 10286L, 10320L, 10348L, 10383L, 10410L, 10444L, 10472L, 10506L, 10534L, 10568L, 10596L, 10630L, 10658L, 10693L, 10720L, 10755L, 10782L, 10816L, 10844L, 10878L, 10906L, 10940L, 10969L, 11003L, 11031L, 11065L, 11093L, 11127L, 11155L, 11188L, 11218L, 11250L, 11280L, 11312L, 11342L, 11375L, 11404L, 11437L, 11466L, 11498L, 11528L, 11560L, 11590L, 11622L, 11652L, 11685L, 11714L, 11747L, 11776L, 11809L, 11838L, 11870L, 11900L, 11932L, 11962L, 11994L, 12024L, 12057L, 12086L, 12119L, 12148L, 12180L, 12208L, 12240L, 12268L, 12300L, 12328L, 12360L, 12388L, 12421L, 12448L, 12481L, 12508L, 12540L, 12568L, 12600L, 12628L, 12660L, 12688L, 12721L, 12748L, 12781L, 12808L, 12841L, 12868L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Hebron" rownames(res) <- NULL tzdb_cache[["Hebron"]] <- res res } "Ho_Chi_Minh" <- function() { if(!is.null(tzdb_cache[["Ho_Chi_Minh"]])) return(tzdb_cache[["Ho_Chi_Minh"]]) ind <- c(183L, 204L, 1375L, 1484L, 1523L, 1637L, 2041L, 2233L, 3020L ) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Ho_Chi_Minh" rownames(res) <- NULL tzdb_cache[["Ho_Chi_Minh"]] <- res res } "Hong_Kong" <- function() { if(!is.null(tzdb_cache[["Hong_Kong"]])) return(tzdb_cache[["Hong_Kong"]]) ind <- c(171L, 1262L, 1285L, 1300L, 1567L, 1587L, 1630L, 1644L, 1683L, 1707L, 1731L, 1741L, 1780L, 1793L, 1838L, 1848L, 1889L, 1904L, 1937L, 1951L, 1979L, 1985L, 2018L, 2022L, 2061L, 2066L, 2102L, 2108L, 2150L, 2153L, 2187L, 2191L, 2230L, 2238L, 2275L, 2280L, 2317L, 2320L, 2351L, 2354L, 2388L, 2403L, 2438L, 2458L, 2482L, 2507L, 2527L, 2553L, 2579L, 2601L, 2618L, 2640L, 2664L, 2686L, 2712L, 2732L, 2758L, 2784L, 2814L, 2839L, 2869L, 2891L, 2953L, 3003L, 3036L, 3072L, 3112L, 3344L, 3374L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Hong_Kong" rownames(res) <- NULL tzdb_cache[["Hong_Kong"]] <- res res } "Hovd" <- function() { if(!is.null(tzdb_cache[["Hovd"]])) return(tzdb_cache[["Hovd"]]) ind <- c(177L, 3219L, 3712L, 3754L, 3818L, 3849L, 3912L, 3957L, 4033L, 4079L, 4150L, 4202L, 4283L, 4332L, 4408L, 4458L, 4536L, 4590L, 4659L, 4715L, 4810L, 4863L, 4945L, 4993L, 5066L, 5112L, 5182L, 5231L, 5300L, 5349L, 5421L, 5469L, 5537L, 5585L, 5931L, 5942L, 6009L, 6065L, 6128L, 6181L, 6244L, 6306L, 6368L, 6423L, 6487L, 6543L, 7484L, 7513L, 7571L, 7613L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Hovd" rownames(res) <- NULL tzdb_cache[["Hovd"]] <- res res } "Irkutsk" <- function() { if(!is.null(tzdb_cache[["Irkutsk"]])) return(tzdb_cache[["Irkutsk"]]) ind <- c(24L, 442L, 783L, 3508L, 3546L, 3604L, 3645L, 3711L, 3753L, 3817L, 3852L, 3913L, 3960L, 4034L, 4082L, 4151L, 4205L, 4284L, 4335L, 4409L, 4461L, 4537L, 4660L, 4719L, 4780L, 4811L, 4867L, 4946L, 4997L, 5067L, 5116L, 5183L, 5235L, 5301L, 5372L, 5422L, 5490L, 5538L, 5604L, 5651L, 5717L, 5771L, 5839L, 5890L, 5963L, 6017L, 6083L, 6136L, 6201L, 6252L, 6325L, 6376L, 6447L, 6492L, 6562L, 6624L, 6676L, 6738L, 6798L, 6861L, 6919L, 6981L, 7043L, 7094L, 7427L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Irkutsk" rownames(res) <- NULL tzdb_cache[["Irkutsk"]] <- res res } "Jakarta" <- function() { if(!is.null(tzdb_cache[["Jakarta"]])) return(tzdb_cache[["Jakarta"]]) ind <- c(10L, 583L, 894L, 1320L, 1536L, 1705L, 1811L, 2396L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Jakarta" rownames(res) <- NULL tzdb_cache[["Jakarta"]] <- res res } "Jayapura" <- function() { if(!is.null(tzdb_cache[["Jayapura"]])) return(tzdb_cache[["Jayapura"]]) ind <- c(892L, 1458L, 2395L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Jayapura" rownames(res) <- NULL tzdb_cache[["Jayapura"]] <- res res } "Jerusalem" <- function() { if(!is.null(tzdb_cache[["Jerusalem"]])) return(tzdb_cache[["Jerusalem"]]) ind <- c(32L, 318L, 1202L, 1224L, 1235L, 1371L, 1391L, 1423L, 1437L, 1477L, 1494L, 1564L, 1586L, 1629L, 1710L, 1713L, 1734L, 1758L, 1782L, 1798L, 1822L, 1849L, 1891L, 1908L, 1933L, 1955L, 1965L, 2002L, 2004L, 2040L, 2043L, 2082L, 2085L, 2117L, 2131L, 2936L, 2949L, 3005L, 3022L, 3440L, 3441L, 3840L, 3842L, 3934L, 3949L, 4070L, 4071L, 4187L, 4195L, 4316L, 4324L, 4446L, 4450L, 4544L, 4582L, 4651L, 4704L, 4819L, 4855L, 4967L, 4985L, 5084L, 5103L, 5201L, 5222L, 5287L, 5343L, 5409L, 5462L, 5526L, 5577L, 5675L, 5693L, 5806L, 5823L, 5925L, 5937L, 6006L, 6072L, 6125L, 6184L, 6287L, 6303L, 6400L, 6434L, 6512L, 6547L, 6644L, 6657L, 6732L, 6787L, 6855L, 6903L, 6974L, 7022L, 7116L, 7146L, 7210L, 7232L, 7288L, 7332L, 7375L, 7434L, 7482L, 7526L, 7569L, 7628L, 7669L, 7714L, 7755L, 7797L, 7845L, 7884L, 7922L, 7961L, 8001L, 8040L, 8075L, 8111L, 8145L, 8178L, 8209L, 8240L, 8271L, 8302L, 8334L, 8364L, 8395L, 8426L, 8457L, 8488L, 8519L, 8550L, 8582L, 8612L, 8644L, 8674L, 8705L, 8736L, 8767L, 8798L, 8829L, 8860L, 8891L, 8922L, 8954L, 8985L, 9016L, 9047L, 9077L, 9109L, 9139L, 9172L, 9201L, 9234L, 9264L, 9296L, 9326L, 9358L, 9388L, 9420L, 9449L, 9482L, 9511L, 9544L, 9573L, 9606L, 9636L, 9668L, 9698L, 9730L, 9759L, 9792L, 9821L, 9854L, 9883L, 9916L, 9946L, 9978L, 10008L, 10040L, 10070L, 10102L, 10131L, 10164L, 10194L, 10226L, 10256L, 10288L, 10319L, 10350L, 10382L, 10412L, 10443L, 10474L, 10505L, 10536L, 10567L, 10598L, 10629L, 10660L, 10692L, 10722L, 10754L, 10784L, 10815L, 10846L, 10877L, 10908L, 10939L, 10971L, 11002L, 11033L, 11064L, 11095L, 11126L, 11157L, 11187L, 11220L, 11249L, 11282L, 11311L, 11344L, 11374L, 11406L, 11436L, 11468L, 11497L, 11530L, 11559L, 11592L, 11621L, 11654L, 11684L, 11716L, 11746L, 11778L, 11808L, 11840L, 11869L, 11902L, 11931L, 11964L, 11993L, 12026L, 12056L, 12088L, 12118L, 12150L, 12179L, 12210L, 12239L, 12270L, 12299L, 12330L, 12359L, 12390L, 12420L, 12450L, 12480L, 12510L, 12539L, 12570L, 12599L, 12630L, 12659L, 12690L, 12720L, 12750L, 12780L, 12810L, 12840L, 12870L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Jerusalem" rownames(res) <- NULL tzdb_cache[["Jerusalem"]] <- res res } "Kabul" <- function() { if(!is.null(tzdb_cache[["Kabul"]])) return(tzdb_cache[["Kabul"]]) ind <- c(67L, 1479L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Kabul" rownames(res) <- NULL tzdb_cache[["Kabul"]] <- res res } "Kamchatka" <- function() { if(!is.null(tzdb_cache[["Kamchatka"]])) return(tzdb_cache[["Kamchatka"]]) ind <- c(555L, 779L, 3503L, 3542L, 3600L, 3641L, 3706L, 3749L, 3813L, 3845L, 3906L, 3953L, 4027L, 4075L, 4144L, 4198L, 4277L, 4328L, 4402L, 4454L, 4530L, 4652L, 4713L, 4776L, 4803L, 4859L, 4938L, 4989L, 5059L, 5108L, 5174L, 5227L, 5291L, 5365L, 5411L, 5483L, 5528L, 5597L, 5644L, 5710L, 5764L, 5834L, 5883L, 5956L, 6010L, 6076L, 6129L, 6194L, 6245L, 6318L, 6369L, 6440L, 6488L, 6555L, 6616L, 6668L, 6733L, 6793L, 6856L, 6976L, 7040L, 7091L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Kamchatka" rownames(res) <- NULL tzdb_cache[["Kamchatka"]] <- res res } "Karachi" <- function() { if(!is.null(tzdb_cache[["Karachi"]])) return(tzdb_cache[["Karachi"]]) ind <- c(186L, 1353L, 1553L, 2731L, 6039L, 6071L, 6772L, 6823L, 6890L, 6943L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Karachi" rownames(res) <- NULL tzdb_cache[["Karachi"]] <- res res } "Kathmandu" <- function() { if(!is.null(tzdb_cache[["Kathmandu"]])) return(tzdb_cache[["Kathmandu"]]) ind <- c(434L, 4007L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Kathmandu" rownames(res) <- NULL tzdb_cache[["Kathmandu"]] <- res res } "Khandyga" <- function() { if(!is.null(tzdb_cache[["Khandyga"]])) return(tzdb_cache[["Khandyga"]]) ind <- c(428L, 782L, 3506L, 3545L, 3603L, 3644L, 3709L, 3752L, 3816L, 3851L, 3911L, 3959L, 4032L, 4081L, 4149L, 4204L, 4282L, 4334L, 4407L, 4460L, 4535L, 4658L, 4718L, 4779L, 4809L, 4865L, 4944L, 4995L, 5065L, 5114L, 5181L, 5233L, 5299L, 5371L, 5420L, 5489L, 5536L, 5603L, 5650L, 5716L, 5770L, 5838L, 5889L, 5962L, 6016L, 6082L, 6135L, 6200L, 6233L, 6249L, 6321L, 6373L, 6443L, 6490L, 6558L, 6620L, 6671L, 6735L, 6795L, 6858L, 6917L, 6979L, 7041L, 7092L, 7137L, 7426L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Khandyga" rownames(res) <- NULL tzdb_cache[["Khandyga"]] <- res res } "Kolkata" <- function() { if(!is.null(tzdb_cache[["Kolkata"]])) return(tzdb_cache[["Kolkata"]]) ind <- c(8L, 20L, 181L, 1284L, 1339L, 1353L, 1554L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Kolkata" rownames(res) <- NULL tzdb_cache[["Kolkata"]] <- res res } "Krasnoyarsk" <- function() { if(!is.null(tzdb_cache[["Krasnoyarsk"]])) return(tzdb_cache[["Krasnoyarsk"]]) ind <- c(441L, 784L, 3509L, 3547L, 3605L, 3646L, 3712L, 3754L, 3818L, 3853L, 3914L, 3961L, 4035L, 4083L, 4152L, 4206L, 4285L, 4336L, 4410L, 4462L, 4538L, 4661L, 4720L, 4781L, 4812L, 4868L, 4947L, 4998L, 5068L, 5117L, 5184L, 5236L, 5302L, 5373L, 5423L, 5491L, 5539L, 5605L, 5652L, 5718L, 5772L, 5840L, 5891L, 5964L, 6018L, 6084L, 6137L, 6202L, 6253L, 6326L, 6377L, 6448L, 6493L, 6563L, 6626L, 6678L, 6740L, 6800L, 6863L, 6920L, 6982L, 7044L, 7095L, 7428L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Krasnoyarsk" rownames(res) <- NULL tzdb_cache[["Krasnoyarsk"]] <- res res } "Kuching" <- function() { if(!is.null(tzdb_cache[["Kuching"]])) return(tzdb_cache[["Kuching"]]) ind <- c(659L, 897L, 990L, 1005L, 1024L, 1040L, 1065L, 1084L, 1108L, 1127L, 1152L, 1175L, 1216L, 1238L, 1273L, 1298L, 1312L, 1529L ) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Kuching" rownames(res) <- NULL tzdb_cache[["Kuching"]] <- res res } "Macau" <- function() { if(!is.null(tzdb_cache[["Macau"]])) return(tzdb_cache[["Macau"]]) ind <- c(170L, 1299L, 1333L, 1373L, 1400L, 1409L, 1548L, 1594L, 1614L, 1647L, 1684L, 1708L, 1733L, 1738L, 1779L, 1792L, 1837L, 1847L, 1890L, 1903L, 1936L, 1950L, 1978L, 1983L, 2017L, 2021L, 2060L, 2065L, 2103L, 2109L, 2151L, 2154L, 2188L, 2192L, 2231L, 2239L, 2276L, 2281L, 2318L, 2321L, 2352L, 2355L, 2389L, 2404L, 2439L, 2459L, 2481L, 2508L, 2526L, 2554L, 2580L, 2602L, 2619L, 2641L, 2665L, 2687L, 2713L, 2733L, 2759L, 2785L, 2815L, 2840L, 2870L, 2892L, 2954L, 3004L, 3037L, 3073L, 3113L, 3345L, 3375L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Macau" rownames(res) <- NULL tzdb_cache[["Macau"]] <- res res } "Magadan" <- function() { if(!is.null(tzdb_cache[["Magadan"]])) return(tzdb_cache[["Magadan"]]) ind <- c(599L, 780L, 3504L, 3543L, 3601L, 3642L, 3707L, 3750L, 3814L, 3847L, 3908L, 3955L, 4029L, 4077L, 4146L, 4200L, 4279L, 4330L, 4404L, 4456L, 4532L, 4654L, 4716L, 4777L, 4805L, 4861L, 4940L, 4991L, 5061L, 5110L, 5176L, 5229L, 5293L, 5366L, 5413L, 5484L, 5530L, 5598L, 5645L, 5711L, 5765L, 5835L, 5884L, 5957L, 6011L, 6077L, 6130L, 6195L, 6246L, 6319L, 6370L, 6441L, 6489L, 6556L, 6617L, 6669L, 6734L, 6794L, 6857L, 6916L, 6978L, 7040L, 7091L, 7422L, 7599L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Magadan" rownames(res) <- NULL tzdb_cache[["Magadan"]] <- res res } "Makassar" <- function() { if(!is.null(tzdb_cache[["Makassar"]])) return(tzdb_cache[["Makassar"]]) ind <- c(432L, 893L, 1309L, 1537L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Makassar" rownames(res) <- NULL tzdb_cache[["Makassar"]] <- res res } "Manila" <- function() { if(!is.null(tzdb_cache[["Manila"]])) return(tzdb_cache[["Manila"]]) ind <- c(4L, 137L, 1037L, 1043L, 1334L, 1474L, 1992L, 2003L, 3231L, 3267L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Manila" rownames(res) <- NULL tzdb_cache[["Manila"]] <- res res } "Nicosia" <- function() { if(!is.null(tzdb_cache[["Nicosia"]])) return(tzdb_cache[["Nicosia"]]) ind <- c(526L, 3001L, 3032L, 3093L, 3110L, 3148L, 3179L, 3234L, 3280L, 3321L, 3355L, 3415L, 3445L, 3491L, 3530L, 3587L, 3631L, 3692L, 3738L, 3802L, 3856L, 3918L, 3964L, 4040L, 4086L, 4157L, 4209L, 4290L, 4339L, 4416L, 4465L, 4543L, 4591L, 4666L, 4722L, 4818L, 4872L, 4951L, 5002L, 5071L, 5122L, 5189L, 5240L, 5308L, 5351L, 5428L, 5470L, 5545L, 5619L, 5668L, 5733L, 5787L, 5855L, 5906L, 5979L, 6033L, 6099L, 6152L, 6217L, 6268L, 6341L, 6393L, 6462L, 6507L, 6577L, 6639L, 6691L, 6753L, 6814L, 6877L, 6933L, 6997L, 7057L, 7109L, 7164L, 7205L, 7253L, 7296L, 7339L, 7384L, 7442L, 7493L, 7533L, 7583L, 7634L, 7677L, 7720L, 7763L, 7804L, 7852L, 7890L, 7930L, 7967L, 8009L, 8046L, 8082L, 8117L, 8153L, 8183L, 8216L, 8245L, 8278L, 8307L, 8341L, 8369L, 8402L, 8431L, 8464L, 8493L, 8526L, 8555L, 8589L, 8617L, 8651L, 8679L, 8712L, 8741L, 8774L, 8803L, 8836L, 8865L, 8898L, 8927L, 8961L, 8990L, 9023L, 9052L, 9084L, 9114L, 9146L, 9177L, 9208L, 9239L, 9271L, 9301L, 9333L, 9363L, 9395L, 9425L, 9456L, 9487L, 9518L, 9549L, 9580L, 9611L, 9643L, 9673L, 9705L, 9735L, 9766L, 9797L, 9828L, 9859L, 9890L, 9921L, 9953L, 9983L, 10015L, 10045L, 10077L, 10107L, 10138L, 10169L, 10201L, 10231L, 10263L, 10293L, 10326L, 10355L, 10389L, 10417L, 10450L, 10479L, 10512L, 10541L, 10574L, 10603L, 10636L, 10665L, 10699L, 10727L, 10761L, 10789L, 10822L, 10851L, 10884L, 10913L, 10946L, 10976L, 11009L, 11038L, 11071L, 11100L, 11133L, 11162L, 11194L, 11225L, 11256L, 11287L, 11318L, 11349L, 11381L, 11411L, 11443L, 11473L, 11504L, 11535L, 11566L, 11597L, 11628L, 11659L, 11691L, 11721L, 11753L, 11783L, 11815L, 11845L, 11876L, 11907L, 11938L, 11969L, 12000L, 12031L, 12063L, 12093L, 12125L, 12155L, 12186L, 12215L, 12246L, 12275L, 12306L, 12335L, 12366L, 12395L, 12427L, 12455L, 12487L, 12515L, 12546L, 12575L, 12606L, 12635L, 12666L, 12695L, 12727L, 12755L, 12787L, 12815L, 12847L, 12875L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Nicosia" rownames(res) <- NULL tzdb_cache[["Nicosia"]] <- res res } "Novokuznetsk" <- function() { if(!is.null(tzdb_cache[["Novokuznetsk"]])) return(tzdb_cache[["Novokuznetsk"]]) ind <- c(595L, 784L, 3509L, 3547L, 3605L, 3646L, 3712L, 3754L, 3818L, 3853L, 3914L, 3961L, 4035L, 4083L, 4152L, 4206L, 4285L, 4336L, 4410L, 4462L, 4538L, 4661L, 4720L, 4781L, 4812L, 4868L, 4947L, 4998L, 5068L, 5117L, 5184L, 5236L, 5302L, 5373L, 5423L, 5491L, 5539L, 5605L, 5652L, 5718L, 5772L, 5840L, 5891L, 5964L, 6018L, 6084L, 6137L, 6202L, 6253L, 6326L, 6377L, 6448L, 6493L, 6563L, 6626L, 6678L, 6740L, 6800L, 6863L, 6983L, 7045L, 7096L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Novokuznetsk" rownames(res) <- NULL tzdb_cache[["Novokuznetsk"]] <- res res } "Novosibirsk" <- function() { if(!is.null(tzdb_cache[["Novosibirsk"]])) return(tzdb_cache[["Novosibirsk"]]) ind <- c(426L, 784L, 3509L, 3547L, 3605L, 3646L, 3712L, 3754L, 3818L, 3853L, 3914L, 3961L, 4035L, 4083L, 4152L, 4206L, 4285L, 4336L, 4410L, 4462L, 4538L, 4661L, 4720L, 4781L, 4812L, 4868L, 4947L, 4983L, 4999L, 5069L, 5118L, 5185L, 5238L, 5303L, 5374L, 5424L, 5493L, 5540L, 5607L, 5653L, 5720L, 5773L, 5842L, 5892L, 5966L, 6019L, 6086L, 6138L, 6204L, 6254L, 6327L, 6378L, 6449L, 6494L, 6564L, 6627L, 6679L, 6741L, 6801L, 6864L, 6921L, 6984L, 7045L, 7096L, 7429L, 7606L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Novosibirsk" rownames(res) <- NULL tzdb_cache[["Novosibirsk"]] <- res res } "Omsk" <- function() { if(!is.null(tzdb_cache[["Omsk"]])) return(tzdb_cache[["Omsk"]]) ind <- c(424L, 785L, 3510L, 3548L, 3606L, 3647L, 3713L, 3755L, 3819L, 3854L, 3915L, 3962L, 4036L, 4084L, 4153L, 4207L, 4286L, 4337L, 4411L, 4463L, 4539L, 4662L, 4721L, 4782L, 4813L, 4869L, 4948L, 4999L, 5069L, 5118L, 5185L, 5238L, 5303L, 5374L, 5424L, 5493L, 5540L, 5607L, 5653L, 5720L, 5773L, 5842L, 5892L, 5966L, 6019L, 6086L, 6138L, 6204L, 6254L, 6327L, 6378L, 6449L, 6494L, 6564L, 6627L, 6679L, 6741L, 6801L, 6864L, 6921L, 6984L, 7045L, 7096L, 7429L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Omsk" rownames(res) <- NULL tzdb_cache[["Omsk"]] <- res res } "Oral" <- function() { if(!is.null(tzdb_cache[["Oral"]])) return(tzdb_cache[["Oral"]]) ind <- c(610L, 787L, 3607L, 3648L, 3714L, 3756L, 3820L, 3855L, 3916L, 3963L, 4037L, 4085L, 4154L, 4208L, 4287L, 4413L, 4467L, 4542L, 4594L, 4667L, 4723L, 4816L, 4873L, 4952L, 5003L, 5072L, 5123L, 5188L, 5241L, 5307L, 5377L, 5427L, 5496L, 5544L, 5610L, 5658L, 5724L, 5777L, 5846L, 5896L, 5970L, 6023L, 6090L, 6142L, 6208L, 6258L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Oral" rownames(res) <- NULL tzdb_cache[["Oral"]] <- res res } "Pontianak" <- function() { if(!is.null(tzdb_cache[["Pontianak"]])) return(tzdb_cache[["Pontianak"]]) ind <- c(192L, 895L, 1307L, 1536L, 1705L, 1811L, 2397L, 4260L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Pontianak" rownames(res) <- NULL tzdb_cache[["Pontianak"]] <- res res } "Pyongyang" <- function() { if(!is.null(tzdb_cache[["Pyongyang"]])) return(tzdb_cache[["Pyongyang"]]) ind <- c(190L, 1518L, 7509L, 7778L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Pyongyang" rownames(res) <- NULL tzdb_cache[["Pyongyang"]] <- res res } "Qatar" <- function() { if(!is.null(tzdb_cache[["Qatar"]])) return(tzdb_cache[["Qatar"]]) ind <- c(436L, 2802L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Qatar" rownames(res) <- NULL tzdb_cache[["Qatar"]] <- res res } "Qostanay" <- function() { if(!is.null(tzdb_cache[["Qostanay"]])) return(tzdb_cache[["Qostanay"]]) ind <- c(606L, 786L, 3607L, 3648L, 3714L, 3756L, 3820L, 3855L, 3916L, 3963L, 4037L, 4085L, 4154L, 4208L, 4287L, 4338L, 4412L, 4464L, 4540L, 4663L, 4723L, 4783L, 4815L, 4871L, 4949L, 5001L, 5070L, 5121L, 5187L, 5239L, 5305L, 5375L, 5425L, 5495L, 5542L, 5609L, 5655L, 5722L, 5775L, 5844L, 5894L, 5968L, 6021L, 6088L, 6140L, 6206L, 6256L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Qostanay" rownames(res) <- NULL tzdb_cache[["Qostanay"]] <- res res } "Qyzylorda" <- function() { if(!is.null(tzdb_cache[["Qyzylorda"]])) return(tzdb_cache[["Qyzylorda"]]) ind <- c(605L, 786L, 3607L, 3648L, 3714L, 3756L, 3820L, 3855L, 3916L, 3963L, 4037L, 4085L, 4154L, 4208L, 4287L, 4338L, 4412L, 4464L, 4540L, 4724L, 4814L, 4871L, 4949L, 5001L, 5070L, 5121L, 5187L, 5239L, 5305L, 5375L, 5425L, 5495L, 5542L, 5609L, 5655L, 5722L, 5775L, 5844L, 5894L, 5968L, 6021L, 6088L, 6140L, 6206L, 6331L, 7825L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Qyzylorda" rownames(res) <- NULL tzdb_cache[["Qyzylorda"]] <- res res } "Riyadh" <- function() { if(!is.null(tzdb_cache[["Riyadh"]])) return(tzdb_cache[["Riyadh"]]) ind <- 1633L res <- all_tz_rows[ind, ] colnames(res)[1] <- "Riyadh" rownames(res) <- NULL tzdb_cache[["Riyadh"]] <- res res } "Sakhalin" <- function() { if(!is.null(tzdb_cache[["Sakhalin"]])) return(tzdb_cache[["Sakhalin"]]) ind <- c(178L, 1519L, 3504L, 3543L, 3601L, 3642L, 3707L, 3750L, 3814L, 3847L, 3908L, 3955L, 4029L, 4077L, 4146L, 4200L, 4279L, 4330L, 4404L, 4456L, 4532L, 4654L, 4716L, 4777L, 4805L, 4861L, 4940L, 4991L, 5061L, 5110L, 5176L, 5229L, 5293L, 5414L, 5486L, 5533L, 5600L, 5648L, 5713L, 5768L, 5836L, 5887L, 5959L, 6014L, 6079L, 6133L, 6197L, 6249L, 6321L, 6373L, 6443L, 6490L, 6558L, 6620L, 6671L, 6735L, 6795L, 6858L, 6917L, 6979L, 7041L, 7092L, 7424L, 7573L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Sakhalin" rownames(res) <- NULL tzdb_cache[["Sakhalin"]] <- res res } "Samarkand" <- function() { if(!is.null(tzdb_cache[["Samarkand"]])) return(tzdb_cache[["Samarkand"]]) ind <- c(604L, 786L, 3607L, 3648L, 3714L, 3756L, 3820L, 3855L, 3916L, 3963L, 4037L, 4085L, 4154L, 4208L, 4287L, 4338L, 4412L, 4464L, 4540L, 4592L, 4664L, 4721L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Samarkand" rownames(res) <- NULL tzdb_cache[["Samarkand"]] <- res res } "Seoul" <- function() { if(!is.null(tzdb_cache[["Seoul"]])) return(tzdb_cache[["Seoul"]]) ind <- c(189L, 1526L, 1712L, 1716L, 1739L, 1763L, 1791L, 1820L, 1868L, 1872L, 1984L, 2038L, 2042L, 2080L, 2084L, 2126L, 2130L, 2170L, 2171L, 2208L, 2212L, 2254L, 2258L, 2300L, 4193L, 4228L, 4321L, 4358L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Seoul" rownames(res) <- NULL tzdb_cache[["Seoul"]] <- res res } "Shanghai" <- function() { if(!is.null(tzdb_cache[["Shanghai"]])) return(tzdb_cache[["Shanghai"]]) ind <- c(158L, 388L, 408L, 1200L, 1231L, 1240L, 1296L, 1308L, 1524L, 1598L, 1614L, 1646L, 1681L, 1704L, 1723L, 1756L, 1761L, 4069L, 4072L, 4184L, 4194L, 4317L, 4325L, 4444L, 4452L, 4572L, 4584L, 4695L, 4707L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Shanghai" rownames(res) <- NULL tzdb_cache[["Shanghai"]] <- res res } "Singapore" <- function() { if(!is.null(tzdb_cache[["Singapore"]])) return(tzdb_cache[["Singapore"]]) ind <- c(159L, 173L, 1006L, 1271L, 1313L, 1530L, 3576L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Singapore" rownames(res) <- NULL tzdb_cache[["Singapore"]] <- res res } "Srednekolymsk" <- function() { if(!is.null(tzdb_cache[["Srednekolymsk"]])) return(tzdb_cache[["Srednekolymsk"]]) ind <- c(598L, 780L, 3504L, 3543L, 3601L, 3642L, 3707L, 3750L, 3814L, 3847L, 3908L, 3955L, 4029L, 4077L, 4146L, 4200L, 4279L, 4330L, 4404L, 4456L, 4532L, 4654L, 4716L, 4777L, 4805L, 4861L, 4940L, 4991L, 5061L, 5110L, 5176L, 5229L, 5293L, 5366L, 5413L, 5484L, 5530L, 5598L, 5645L, 5711L, 5765L, 5835L, 5884L, 5957L, 6011L, 6077L, 6130L, 6195L, 6246L, 6319L, 6370L, 6441L, 6489L, 6556L, 6617L, 6669L, 6734L, 6794L, 6857L, 6916L, 6978L, 7040L, 7091L, 7423L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Srednekolymsk" rownames(res) <- NULL tzdb_cache[["Srednekolymsk"]] <- res res } "Taipei" <- function() { if(!is.null(tzdb_cache[["Taipei"]])) return(tzdb_cache[["Taipei"]]) ind <- c(132L, 1071L, 1535L, 1598L, 1614L, 1646L, 1681L, 1704L, 1723L, 1756L, 1770L, 1812L, 1829L, 1867L, 1881L, 1898L, 1935L, 1949L, 1978L, 1986L, 2019L, 2023L, 2051L, 2067L, 2093L, 2110L, 2139L, 2156L, 2177L, 2193L, 2218L, 2257L, 2263L, 2298L, 2305L, 2916L, 2942L, 2999L, 3025L, 3351L, 3363L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Taipei" rownames(res) <- NULL tzdb_cache[["Taipei"]] <- res res } "Tashkent" <- function() { if(!is.null(tzdb_cache[["Tashkent"]])) return(tzdb_cache[["Tashkent"]]) ind <- c(602L, 785L, 3510L, 3548L, 3606L, 3647L, 3713L, 3755L, 3819L, 3854L, 3915L, 3962L, 4036L, 4084L, 4153L, 4207L, 4286L, 4337L, 4411L, 4463L, 4539L, 4662L, 4721L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Tashkent" rownames(res) <- NULL tzdb_cache[["Tashkent"]] <- res res } "Tbilisi" <- function() { if(!is.null(tzdb_cache[["Tbilisi"]])) return(tzdb_cache[["Tbilisi"]]) ind <- c(29L, 613L, 2107L, 3512L, 3550L, 3609L, 3649L, 3715L, 3757L, 3821L, 3857L, 3917L, 3966L, 4039L, 4088L, 4156L, 4211L, 4289L, 4341L, 4415L, 4467L, 4542L, 4665L, 4726L, 4817L, 4870L, 4950L, 5000L, 5119L, 5186L, 5237L, 5304L, 5492L, 5541L, 5606L, 5654L, 5719L, 5774L, 5841L, 5893L, 5965L, 6020L, 6085L, 6139L, 6203L, 6255L, 6297L, 6333L, 6383L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Tbilisi" rownames(res) <- NULL tzdb_cache[["Tbilisi"]] <- res res } "Tehran" <- function() { if(!is.null(tzdb_cache[["Tehran"]])) return(tzdb_cache[["Tehran"]]) ind <- c(253L, 988L, 3145L, 3197L, 3233L, 3264L, 3304L, 3346L, 3353L, 3408L, 3443L, 4700L, 4709L, 4802L, 4857L, 4936L, 4987L, 5058L, 5107L, 5173L, 5226L, 5290L, 5345L, 5410L, 5465L, 5527L, 5581L, 5643L, 5696L, 5763L, 5815L, 5882L, 5936L, 6004L, 6060L, 6123L, 6177L, 6240L, 6302L, 6365L, 6420L, 6730L, 6781L, 6853L, 6900L, 6972L, 7023L, 7090L, 7138L, 7197L, 7230L, 7284L, 7317L, 7372L, 7409L, 7479L, 7511L, 7567L, 7611L, 7668L, 7700L, 7754L, 7784L, 7842L, 7870L, 7919L, 7949L, 7999L, 8029L, 8073L, 8101L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Tehran" rownames(res) <- NULL tzdb_cache[["Tehran"]] <- res res } "Thimphu" <- function() { if(!is.null(tzdb_cache[["Thimphu"]])) return(tzdb_cache[["Thimphu"]]) ind <- c(1664L, 4223L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Thimphu" rownames(res) <- NULL tzdb_cache[["Thimphu"]] <- res res } "Tokyo" <- function() { if(!is.null(tzdb_cache[["Tokyo"]])) return(tzdb_cache[["Tokyo"]]) ind <- c(65L, 1706L, 1715L, 1740L, 1764L, 1814L, 1821L, 1869L, 1873L ) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Tokyo" rownames(res) <- NULL tzdb_cache[["Tokyo"]] <- res res } "Tomsk" <- function() { if(!is.null(tzdb_cache[["Tomsk"]])) return(tzdb_cache[["Tomsk"]]) ind <- c(431L, 784L, 3509L, 3547L, 3605L, 3646L, 3712L, 3754L, 3818L, 3853L, 3914L, 3961L, 4035L, 4083L, 4152L, 4206L, 4285L, 4336L, 4410L, 4462L, 4538L, 4661L, 4720L, 4781L, 4812L, 4868L, 4947L, 4998L, 5068L, 5117L, 5184L, 5236L, 5302L, 5373L, 5423L, 5491L, 5539L, 5605L, 5652L, 5718L, 5772L, 5840L, 5891L, 5964L, 6018L, 6056L, 6086L, 6138L, 6204L, 6254L, 6327L, 6378L, 6449L, 6494L, 6564L, 6627L, 6679L, 6741L, 6801L, 6864L, 6921L, 6984L, 7045L, 7096L, 7429L, 7603L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Tomsk" rownames(res) <- NULL tzdb_cache[["Tomsk"]] <- res res } "Ulaanbaatar" <- function() { if(!is.null(tzdb_cache[["Ulaanbaatar"]])) return(tzdb_cache[["Ulaanbaatar"]]) ind <- c(176L, 3218L, 3711L, 3753L, 3817L, 3848L, 3909L, 3956L, 4030L, 4078L, 4147L, 4201L, 4280L, 4331L, 4405L, 4457L, 4533L, 4589L, 4656L, 4714L, 4807L, 4862L, 4942L, 4992L, 5063L, 5111L, 5178L, 5230L, 5296L, 5348L, 5417L, 5468L, 5534L, 5584L, 5930L, 5941L, 6008L, 6064L, 6127L, 6180L, 6243L, 6305L, 6367L, 6422L, 6486L, 6542L, 7483L, 7512L, 7570L, 7612L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Ulaanbaatar" rownames(res) <- NULL tzdb_cache[["Ulaanbaatar"]] <- res res } "Urumqi" <- function() { if(!is.null(tzdb_cache[["Urumqi"]])) return(tzdb_cache[["Urumqi"]]) ind <- 708L res <- all_tz_rows[ind, ] colnames(res)[1] <- "Urumqi" rownames(res) <- NULL tzdb_cache[["Urumqi"]] <- res res } "Ust-Nera" <- function() { if(!is.null(tzdb_cache[["Ust-Nera"]])) return(tzdb_cache[["Ust-Nera"]]) ind <- c(427L, 782L, 3507L, 3543L, 3601L, 3642L, 3707L, 3750L, 3814L, 3847L, 3908L, 3955L, 4029L, 4077L, 4146L, 4200L, 4279L, 4330L, 4404L, 4456L, 4532L, 4654L, 4716L, 4777L, 4805L, 4861L, 4940L, 4991L, 5061L, 5110L, 5176L, 5229L, 5293L, 5366L, 5413L, 5484L, 5530L, 5598L, 5645L, 5711L, 5765L, 5835L, 5884L, 5957L, 6011L, 6077L, 6130L, 6195L, 6246L, 6319L, 6370L, 6441L, 6489L, 6556L, 6617L, 6669L, 6734L, 6794L, 6857L, 6916L, 6978L, 7040L, 7091L, 7136L, 7424L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Ust-Nera" rownames(res) <- NULL tzdb_cache[["Ust-Nera"]] <- res res } "Vladivostok" <- function() { if(!is.null(tzdb_cache[["Vladivostok"]])) return(tzdb_cache[["Vladivostok"]]) ind <- c(556L, 781L, 3505L, 3544L, 3602L, 3643L, 3708L, 3751L, 3815L, 3850L, 3910L, 3958L, 4031L, 4080L, 4148L, 4203L, 4281L, 4333L, 4406L, 4459L, 4534L, 4657L, 4717L, 4778L, 4808L, 4864L, 4943L, 4994L, 5064L, 5113L, 5179L, 5232L, 5297L, 5368L, 5418L, 5486L, 5533L, 5600L, 5648L, 5713L, 5768L, 5836L, 5887L, 5959L, 6014L, 6079L, 6133L, 6197L, 6249L, 6321L, 6373L, 6443L, 6490L, 6558L, 6620L, 6671L, 6735L, 6795L, 6858L, 6917L, 6979L, 7041L, 7092L, 7424L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Vladivostok" rownames(res) <- NULL tzdb_cache[["Vladivostok"]] <- res res } "Yakutsk" <- function() { if(!is.null(tzdb_cache[["Yakutsk"]])) return(tzdb_cache[["Yakutsk"]]) ind <- c(429L, 782L, 3506L, 3545L, 3603L, 3644L, 3709L, 3752L, 3816L, 3851L, 3911L, 3959L, 4032L, 4081L, 4149L, 4204L, 4282L, 4334L, 4407L, 4460L, 4535L, 4658L, 4718L, 4779L, 4809L, 4865L, 4944L, 4995L, 5065L, 5114L, 5181L, 5233L, 5299L, 5371L, 5420L, 5489L, 5536L, 5603L, 5650L, 5716L, 5770L, 5838L, 5889L, 5962L, 6016L, 6082L, 6135L, 6200L, 6251L, 6324L, 6375L, 6446L, 6491L, 6561L, 6622L, 6674L, 6736L, 6796L, 6859L, 6918L, 6980L, 7042L, 7093L, 7426L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Yakutsk" rownames(res) <- NULL tzdb_cache[["Yakutsk"]] <- res res } "Yangon" <- function() { if(!is.null(tzdb_cache[["Yangon"]])) return(tzdb_cache[["Yangon"]]) ind <- c(26L, 433L, 1335L, 1501L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Yangon" rownames(res) <- NULL tzdb_cache[["Yangon"]] <- res res } "Yekaterinburg" <- function() { if(!is.null(tzdb_cache[["Yekaterinburg"]])) return(tzdb_cache[["Yekaterinburg"]]) ind <- c(267L, 401L, 786L, 3511L, 3549L, 3608L, 3648L, 3714L, 3756L, 3820L, 3855L, 3916L, 3963L, 4037L, 4085L, 4154L, 4208L, 4287L, 4338L, 4412L, 4464L, 4540L, 4663L, 4723L, 4783L, 4815L, 4871L, 4949L, 5001L, 5070L, 5121L, 5187L, 5239L, 5305L, 5375L, 5425L, 5495L, 5542L, 5609L, 5655L, 5722L, 5775L, 5844L, 5894L, 5968L, 6021L, 6088L, 6140L, 6206L, 6256L, 6329L, 6379L, 6451L, 6495L, 6566L, 6628L, 6681L, 6742L, 6803L, 6865L, 6923L, 6985L, 7047L, 7097L, 7430L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Yekaterinburg" rownames(res) <- NULL tzdb_cache[["Yekaterinburg"]] <- res res } "Yerevan" <- function() { if(!is.null(tzdb_cache[["Yerevan"]])) return(tzdb_cache[["Yerevan"]]) ind <- c(614L, 2107L, 3512L, 3550L, 3609L, 3649L, 3715L, 3757L, 3821L, 3857L, 3917L, 3966L, 4039L, 4088L, 4156L, 4211L, 4289L, 4341L, 4415L, 4467L, 4542L, 4665L, 4726L, 4822L, 4876L, 4953L, 5005L, 5073L, 5124L, 5242L, 5427L, 5496L, 5544L, 5610L, 5658L, 5724L, 5777L, 5846L, 5896L, 5970L, 6023L, 6090L, 6142L, 6208L, 6258L, 6332L, 6382L, 6452L, 6497L, 6567L, 6630L, 6682L, 6744L, 6804L, 6868L, 6924L, 6987L, 7048L, 7099L, 7157L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Yerevan" rownames(res) <- NULL tzdb_cache[["Yerevan"]] <- res res } "Azores" <- function() { if(!is.null(tzdb_cache[["Azores"]])) return(tzdb_cache[["Azores"]]) ind <- c(56L, 216L, 265L, 285L, 294L, 314L, 323L, 360L, 375L, 417L, 447L, 474L, 489L, 521L, 592L, 634L, 663L, 679L, 686L, 703L, 715L, 731L, 743L, 758L, 816L, 839L, 860L, 881L, 941L, 961L, 976L, 998L, 1014L, 1031L, 1050L, 1076L, 1091L, 1118L, 1139L, 1172L, 1180L, 1228L, 1247L, 1291L, 1318L, 1332L, 1348L, 1368L, 1379L, 1398L, 1406L, 1419L, 1430L, 1448L, 1457L, 1473L, 1482L, 1497L, 1522L, 1559L, 1579L, 1619L, 1643L, 1678L, 1693L, 1728L, 1746L, 1776L, 1796L, 1832L, 1856L, 1885L, 1907L, 1929L, 1954L, 1975L, 1989L, 2015L, 2026L, 2056L, 2070L, 2097L, 2113L, 2144L, 2159L, 2182L, 2196L, 2224L, 2243L, 2269L, 2286L, 2310L, 2326L, 2343L, 2360L, 2378L, 2409L, 2428L, 2457L, 2478L, 2506L, 3147L, 3183L, 3238L, 3276L, 3324L, 3361L, 3410L, 3453L, 3501L, 3541L, 3598L, 3640L, 3704L, 3747L, 3812L, 3866L, 3929L, 3975L, 4052L, 4098L, 4169L, 4221L, 4301L, 4352L, 4429L, 4478L, 4556L, 4604L, 4678L, 4736L, 4959L, 5011L, 5078L, 5130L, 5196L, 5249L, 5315L, 5384L, 5436L, 5504L, 5553L, 5618L, 5667L, 5732L, 5786L, 5854L, 5905L, 5978L, 6032L, 6098L, 6151L, 6216L, 6267L, 6340L, 6391L, 6460L, 6505L, 6575L, 6637L, 6689L, 6751L, 6812L, 6875L, 6931L, 6995L, 7055L, 7107L, 7162L, 7203L, 7251L, 7294L, 7337L, 7382L, 7440L, 7491L, 7531L, 7581L, 7632L, 7675L, 7718L, 7761L, 7802L, 7850L, 7888L, 7928L, 7965L, 8007L, 8044L, 8080L, 8115L, 8151L, 8181L, 8214L, 8243L, 8276L, 8305L, 8339L, 8367L, 8400L, 8429L, 8462L, 8491L, 8524L, 8553L, 8587L, 8615L, 8649L, 8677L, 8710L, 8739L, 8772L, 8801L, 8834L, 8863L, 8896L, 8925L, 8959L, 8988L, 9021L, 9050L, 9082L, 9112L, 9144L, 9175L, 9206L, 9237L, 9269L, 9299L, 9331L, 9361L, 9393L, 9423L, 9454L, 9485L, 9516L, 9547L, 9578L, 9609L, 9641L, 9671L, 9703L, 9733L, 9764L, 9795L, 9826L, 9857L, 9888L, 9919L, 9951L, 9981L, 10013L, 10043L, 10075L, 10105L, 10136L, 10167L, 10199L, 10229L, 10261L, 10291L, 10324L, 10353L, 10387L, 10415L, 10448L, 10477L, 10510L, 10539L, 10572L, 10601L, 10634L, 10663L, 10697L, 10725L, 10759L, 10787L, 10820L, 10849L, 10882L, 10911L, 10944L, 10974L, 11007L, 11036L, 11069L, 11098L, 11131L, 11160L, 11192L, 11223L, 11254L, 11285L, 11316L, 11347L, 11379L, 11409L, 11441L, 11471L, 11502L, 11533L, 11564L, 11595L, 11626L, 11657L, 11689L, 11719L, 11751L, 11781L, 11813L, 11843L, 11874L, 11905L, 11936L, 11967L, 11998L, 12029L, 12061L, 12091L, 12123L, 12153L, 12184L, 12213L, 12244L, 12273L, 12304L, 12333L, 12364L, 12393L, 12425L, 12453L, 12485L, 12513L, 12544L, 12573L, 12604L, 12633L, 12664L, 12693L, 12725L, 12753L, 12785L, 12813L, 12845L, 12873L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Azores" rownames(res) <- NULL tzdb_cache[["Azores"]] <- res res } "Bermuda" <- function() { if(!is.null(tzdb_cache[["Bermuda"]])) return(tzdb_cache[["Bermuda"]]) ind <- c(73L, 301L, 310L, 332L, 350L, 764L, 1306L, 1365L, 1382L, 1420L, 1431L, 1478L, 1483L, 1565L, 1659L, 1666L, 1711L, 1714L, 1760L, 1762L, 1816L, 1819L, 1870L, 1871L, 1918L, 1920L, 2081L, 2099L, 2923L, 2963L, 3010L, 3046L, 3078L, 3123L, 3158L, 3207L, 3245L, 3292L, 3333L, 3384L, 3427L, 3471L, 3519L, 3565L, 3618L, 3669L, 3723L, 3780L, 3831L, 3887L, 3939L, 3994L, 4060L, 4121L, 4177L, 4249L, 4308L, 4376L, 4436L, 4501L, 4564L, 4624L, 4687L, 4764L, 4840L, 4911L, 4972L, 5035L, 5091L, 5153L, 5209L, 5271L, 5330L, 5393L, 5451L, 5512L, 5566L, 5626L, 5682L, 5740L, 5799L, 5862L, 5918L, 5986L, 6046L, 6106L, 6164L, 6224L, 6280L, 6348L, 6406L, 6470L, 6523L, 6585L, 6606L, 6703L, 6721L, 6828L, 6843L, 6947L, 6965L, 7067L, 7082L, 7172L, 7190L, 7261L, 7277L, 7348L, 7365L, 7454L, 7471L, 7545L, 7560L, 7645L, 7661L, 7731L, 7747L, 7816L, 7834L, 7898L, 7912L, 7977L, 7992L, 8054L, 8066L, 8126L, 8137L, 8189L, 8201L, 8251L, 8263L, 8313L, 8325L, 8375L, 8388L, 8437L, 8450L, 8499L, 8512L, 8561L, 8574L, 8623L, 8636L, 8685L, 8698L, 8747L, 8760L, 8809L, 8822L, 8872L, 8884L, 8934L, 8946L, 8996L, 9008L, 9058L, 9070L, 9121L, 9132L, 9183L, 9194L, 9245L, 9256L, 9307L, 9318L, 9369L, 9380L, 9431L, 9442L, 9493L, 9504L, 9555L, 9566L, 9617L, 9628L, 9679L, 9690L, 9741L, 9752L, 9803L, 9814L, 9865L, 9876L, 9927L, 9938L, 9989L, 10000L, 10051L, 10062L, 10113L, 10124L, 10175L, 10187L, 10237L, 10249L, 10299L, 10311L, 10361L, 10373L, 10423L, 10436L, 10485L, 10498L, 10547L, 10560L, 10609L, 10622L, 10671L, 10684L, 10733L, 10746L, 10795L, 10808L, 10857L, 10870L, 10920L, 10932L, 10982L, 10994L, 11044L, 11056L, 11106L, 11118L, 11169L, 11180L, 11231L, 11242L, 11293L, 11304L, 11355L, 11366L, 11417L, 11428L, 11479L, 11490L, 11541L, 11552L, 11603L, 11614L, 11665L, 11676L, 11727L, 11738L, 11789L, 11800L, 11851L, 11862L, 11913L, 11924L, 11975L, 11986L, 12037L, 12048L, 12099L, 12110L, 12161L, 12172L, 12221L, 12232L, 12281L, 12292L, 12341L, 12352L, 12401L, 12412L, 12461L, 12472L, 12521L, 12532L, 12581L, 12592L, 12641L, 12652L, 12701L, 12712L, 12761L, 12772L, 12821L, 12832L, 12881L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Bermuda" rownames(res) <- NULL tzdb_cache[["Bermuda"]] <- res res } "Canary" <- function() { if(!is.null(tzdb_cache[["Canary"]])) return(tzdb_cache[["Canary"]]) ind <- c(530L, 1613L, 3417L, 3451L, 3496L, 3538L, 3593L, 3637L, 3698L, 3744L, 3807L, 3863L, 3924L, 3972L, 4048L, 4096L, 4165L, 4219L, 4297L, 4350L, 4425L, 4476L, 4552L, 4602L, 4674L, 4734L, 4829L, 4883L, 4960L, 5012L, 5079L, 5131L, 5197L, 5250L, 5317L, 5386L, 5437L, 5505L, 5554L, 5620L, 5669L, 5734L, 5788L, 5856L, 5907L, 5980L, 6034L, 6100L, 6153L, 6218L, 6269L, 6342L, 6394L, 6463L, 6508L, 6578L, 6640L, 6692L, 6754L, 6815L, 6878L, 6934L, 6998L, 7058L, 7110L, 7165L, 7206L, 7254L, 7297L, 7340L, 7385L, 7443L, 7494L, 7534L, 7584L, 7635L, 7678L, 7721L, 7764L, 7805L, 7853L, 7891L, 7931L, 7968L, 8010L, 8047L, 8083L, 8118L, 8154L, 8184L, 8217L, 8246L, 8279L, 8308L, 8342L, 8370L, 8403L, 8432L, 8465L, 8494L, 8527L, 8556L, 8590L, 8618L, 8652L, 8680L, 8713L, 8742L, 8775L, 8804L, 8837L, 8866L, 8899L, 8928L, 8962L, 8991L, 9024L, 9053L, 9085L, 9115L, 9147L, 9178L, 9209L, 9240L, 9272L, 9302L, 9334L, 9364L, 9396L, 9426L, 9457L, 9488L, 9519L, 9550L, 9581L, 9612L, 9644L, 9674L, 9706L, 9736L, 9767L, 9798L, 9829L, 9860L, 9891L, 9922L, 9954L, 9984L, 10016L, 10046L, 10078L, 10108L, 10139L, 10170L, 10202L, 10232L, 10264L, 10294L, 10327L, 10356L, 10390L, 10418L, 10451L, 10480L, 10513L, 10542L, 10575L, 10604L, 10637L, 10666L, 10700L, 10728L, 10762L, 10790L, 10823L, 10852L, 10885L, 10914L, 10947L, 10977L, 11010L, 11039L, 11072L, 11101L, 11134L, 11163L, 11195L, 11226L, 11257L, 11288L, 11319L, 11350L, 11382L, 11412L, 11444L, 11474L, 11505L, 11536L, 11567L, 11598L, 11629L, 11660L, 11692L, 11722L, 11754L, 11784L, 11816L, 11846L, 11877L, 11908L, 11939L, 11970L, 12001L, 12032L, 12064L, 12094L, 12126L, 12156L, 12187L, 12216L, 12247L, 12276L, 12307L, 12336L, 12367L, 12396L, 12428L, 12456L, 12488L, 12516L, 12547L, 12576L, 12607L, 12636L, 12667L, 12696L, 12728L, 12756L, 12788L, 12816L, 12848L, 12876L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Canary" rownames(res) <- NULL tzdb_cache[["Canary"]] <- res res } "Cape_Verde" <- function() { if(!is.null(tzdb_cache[["Cape_Verde"]])) return(tzdb_cache[["Cape_Verde"]]) ind <- c(216L, 1355L, 1555L, 3056L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Cape_Verde" rownames(res) <- NULL tzdb_cache[["Cape_Verde"]] <- res res } "Faroe" <- function() { if(!is.null(tzdb_cache[["Faroe"]])) return(tzdb_cache[["Faroe"]]) ind <- c(188L, 3496L, 3538L, 3593L, 3637L, 3698L, 3744L, 3807L, 3863L, 3924L, 3972L, 4048L, 4096L, 4165L, 4219L, 4297L, 4350L, 4425L, 4476L, 4552L, 4602L, 4674L, 4734L, 4829L, 4883L, 4960L, 5012L, 5079L, 5131L, 5197L, 5250L, 5317L, 5386L, 5437L, 5505L, 5554L, 5620L, 5669L, 5734L, 5788L, 5856L, 5907L, 5980L, 6034L, 6100L, 6153L, 6218L, 6269L, 6342L, 6394L, 6463L, 6508L, 6578L, 6640L, 6692L, 6754L, 6815L, 6878L, 6934L, 6998L, 7058L, 7110L, 7165L, 7206L, 7254L, 7297L, 7340L, 7385L, 7443L, 7494L, 7534L, 7584L, 7635L, 7678L, 7721L, 7764L, 7805L, 7853L, 7891L, 7931L, 7968L, 8010L, 8047L, 8083L, 8118L, 8154L, 8184L, 8217L, 8246L, 8279L, 8308L, 8342L, 8370L, 8403L, 8432L, 8465L, 8494L, 8527L, 8556L, 8590L, 8618L, 8652L, 8680L, 8713L, 8742L, 8775L, 8804L, 8837L, 8866L, 8899L, 8928L, 8962L, 8991L, 9024L, 9053L, 9085L, 9115L, 9147L, 9178L, 9209L, 9240L, 9272L, 9302L, 9334L, 9364L, 9396L, 9426L, 9457L, 9488L, 9519L, 9550L, 9581L, 9612L, 9644L, 9674L, 9706L, 9736L, 9767L, 9798L, 9829L, 9860L, 9891L, 9922L, 9954L, 9984L, 10016L, 10046L, 10078L, 10108L, 10139L, 10170L, 10202L, 10232L, 10264L, 10294L, 10327L, 10356L, 10390L, 10418L, 10451L, 10480L, 10513L, 10542L, 10575L, 10604L, 10637L, 10666L, 10700L, 10728L, 10762L, 10790L, 10823L, 10852L, 10885L, 10914L, 10947L, 10977L, 11010L, 11039L, 11072L, 11101L, 11134L, 11163L, 11195L, 11226L, 11257L, 11288L, 11319L, 11350L, 11382L, 11412L, 11444L, 11474L, 11505L, 11536L, 11567L, 11598L, 11629L, 11660L, 11692L, 11722L, 11754L, 11784L, 11816L, 11846L, 11877L, 11908L, 11939L, 11970L, 12001L, 12032L, 12064L, 12094L, 12126L, 12156L, 12187L, 12216L, 12247L, 12276L, 12307L, 12336L, 12367L, 12396L, 12428L, 12456L, 12488L, 12516L, 12547L, 12576L, 12607L, 12636L, 12667L, 12696L, 12728L, 12756L, 12788L, 12816L, 12848L, 12876L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Faroe" rownames(res) <- NULL tzdb_cache[["Faroe"]] <- res res } "Madeira" <- function() { if(!is.null(tzdb_cache[["Madeira"]])) return(tzdb_cache[["Madeira"]]) ind <- c(55L, 215L, 264L, 284L, 293L, 313L, 322L, 359L, 373L, 416L, 446L, 473L, 488L, 520L, 591L, 633L, 662L, 678L, 685L, 702L, 714L, 730L, 742L, 756L, 815L, 838L, 859L, 880L, 940L, 960L, 975L, 997L, 1013L, 1030L, 1049L, 1074L, 1090L, 1117L, 1138L, 1171L, 1179L, 1227L, 1246L, 1289L, 1317L, 1331L, 1347L, 1367L, 1378L, 1397L, 1405L, 1418L, 1429L, 1447L, 1456L, 1472L, 1481L, 1496L, 1521L, 1558L, 1578L, 1618L, 1642L, 1677L, 1692L, 1727L, 1745L, 1775L, 1795L, 1831L, 1854L, 1884L, 1906L, 1928L, 1953L, 1974L, 1988L, 2014L, 2025L, 2055L, 2069L, 2096L, 2112L, 2143L, 2158L, 2181L, 2195L, 2223L, 2242L, 2268L, 2285L, 2309L, 2325L, 2342L, 2359L, 2377L, 2408L, 2427L, 2456L, 2477L, 2505L, 3146L, 3181L, 3235L, 3274L, 3322L, 3359L, 3409L, 3451L, 3496L, 3538L, 3593L, 3637L, 3703L, 3744L, 3807L, 3863L, 3924L, 3972L, 4048L, 4096L, 4165L, 4219L, 4297L, 4350L, 4425L, 4476L, 4552L, 4602L, 4674L, 4734L, 4829L, 4883L, 4960L, 5012L, 5079L, 5131L, 5197L, 5250L, 5317L, 5386L, 5437L, 5505L, 5554L, 5620L, 5669L, 5734L, 5788L, 5856L, 5907L, 5980L, 6034L, 6100L, 6153L, 6218L, 6269L, 6342L, 6394L, 6463L, 6508L, 6578L, 6640L, 6692L, 6754L, 6815L, 6878L, 6934L, 6998L, 7058L, 7110L, 7165L, 7206L, 7254L, 7297L, 7340L, 7385L, 7443L, 7494L, 7534L, 7584L, 7635L, 7678L, 7721L, 7764L, 7805L, 7853L, 7891L, 7931L, 7968L, 8010L, 8047L, 8083L, 8118L, 8154L, 8184L, 8217L, 8246L, 8279L, 8308L, 8342L, 8370L, 8403L, 8432L, 8465L, 8494L, 8527L, 8556L, 8590L, 8618L, 8652L, 8680L, 8713L, 8742L, 8775L, 8804L, 8837L, 8866L, 8899L, 8928L, 8962L, 8991L, 9024L, 9053L, 9085L, 9115L, 9147L, 9178L, 9209L, 9240L, 9272L, 9302L, 9334L, 9364L, 9396L, 9426L, 9457L, 9488L, 9519L, 9550L, 9581L, 9612L, 9644L, 9674L, 9706L, 9736L, 9767L, 9798L, 9829L, 9860L, 9891L, 9922L, 9954L, 9984L, 10016L, 10046L, 10078L, 10108L, 10139L, 10170L, 10202L, 10232L, 10264L, 10294L, 10327L, 10356L, 10390L, 10418L, 10451L, 10480L, 10513L, 10542L, 10575L, 10604L, 10637L, 10666L, 10700L, 10728L, 10762L, 10790L, 10823L, 10852L, 10885L, 10914L, 10947L, 10977L, 11010L, 11039L, 11072L, 11101L, 11134L, 11163L, 11195L, 11226L, 11257L, 11288L, 11319L, 11350L, 11382L, 11412L, 11444L, 11474L, 11505L, 11536L, 11567L, 11598L, 11629L, 11660L, 11692L, 11722L, 11754L, 11784L, 11816L, 11846L, 11877L, 11908L, 11939L, 11970L, 12001L, 12032L, 12064L, 12094L, 12126L, 12156L, 12187L, 12216L, 12247L, 12276L, 12307L, 12336L, 12367L, 12396L, 12428L, 12456L, 12488L, 12516L, 12547L, 12576L, 12607L, 12636L, 12667L, 12696L, 12728L, 12756L, 12788L, 12816L, 12848L, 12876L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Madeira" rownames(res) <- NULL tzdb_cache[["Madeira"]] <- res res } "South_Georgia" <- function() { if(!is.null(tzdb_cache[["South_Georgia"]])) return(tzdb_cache[["South_Georgia"]]) ind <- 69L res <- all_tz_rows[ind, ] colnames(res)[1] <- "South_Georgia" rownames(res) <- NULL tzdb_cache[["South_Georgia"]] <- res res } "Stanley" <- function() { if(!is.null(tzdb_cache[["Stanley"]])) return(tzdb_cache[["Stanley"]]) ind <- c(71L, 221L, 1067L, 1088L, 1110L, 1131L, 1161L, 1188L, 1218L, 1241L, 1279L, 1319L, 1362L, 1376L, 3730L, 3748L, 3828L, 3843L, 3950L, 4057L, 4073L, 4188L, 4196L, 4318L, 4326L, 4445L, 4451L, 4573L, 4583L, 4697L, 4708L, 4851L, 4856L, 4981L, 4986L, 5100L, 5105L, 5219L, 5224L, 5338L, 5342L, 5459L, 5463L, 5573L, 5579L, 5690L, 5695L, 5807L, 5813L, 5926L, 5935L, 6054L, 6059L, 6172L, 6176L, 6289L, 6300L, 6415L, 6419L, 6532L, 6539L, 6651L, 6654L, 6770L, 6780L, 6891L, 6899L, 7014L, 7020L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Stanley" rownames(res) <- NULL tzdb_cache[["Stanley"]] <- res res } "Adelaide" <- function() { if(!is.null(tzdb_cache[["Adelaide"]])) return(tzdb_cache[["Adelaide"]]) ind <- c(126L, 136L, 287L, 296L, 1302L, 1322L, 1359L, 1384L, 1411L, 1434L, 2761L, 2779L, 2817L, 2833L, 2872L, 2908L, 2957L, 2990L, 3041L, 3062L, 3119L, 3139L, 3204L, 3225L, 3288L, 3311L, 3380L, 3398L, 3467L, 3487L, 3561L, 3582L, 3667L, 3686L, 3775L, 3793L, 3882L, 3901L, 3989L, 4024L, 4110L, 4141L, 4238L, 4274L, 4372L, 4399L, 4494L, 4527L, 4617L, 4640L, 4757L, 4801L, 4903L, 4931L, 5031L, 5055L, 5149L, 5180L, 5267L, 5298L, 5370L, 5419L, 5488L, 5535L, 5602L, 5649L, 5715L, 5769L, 5837L, 5888L, 5961L, 6015L, 6081L, 6134L, 6199L, 6250L, 6323L, 6374L, 6445L, 6517L, 6560L, 6621L, 6673L, 6765L, 6786L, 6885L, 6906L, 7006L, 7030L, 7122L, 7145L, 7216L, 7239L, 7305L, 7324L, 7395L, 7416L, 7503L, 7520L, 7595L, 7619L, 7689L, 7706L, 7775L, 7790L, 7861L, 7878L, 7940L, 7957L, 8020L, 8035L, 8093L, 8107L, 8163L, 8174L, 8225L, 8236L, 8287L, 8298L, 8350L, 8360L, 8412L, 8422L, 8474L, 8484L, 8536L, 8546L, 8598L, 8608L, 8660L, 8670L, 8722L, 8732L, 8784L, 8794L, 8846L, 8856L, 8908L, 8918L, 8970L, 8980L, 9032L, 9042L, 9094L, 9105L, 9156L, 9167L, 9218L, 9229L, 9280L, 9292L, 9342L, 9354L, 9404L, 9416L, 9466L, 9478L, 9528L, 9540L, 9590L, 9602L, 9652L, 9664L, 9714L, 9726L, 9776L, 9788L, 9838L, 9850L, 9900L, 9912L, 9962L, 9974L, 10024L, 10036L, 10086L, 10098L, 10149L, 10160L, 10211L, 10222L, 10273L, 10284L, 10336L, 10346L, 10398L, 10408L, 10460L, 10470L, 10522L, 10532L, 10584L, 10594L, 10646L, 10656L, 10708L, 10718L, 10770L, 10780L, 10832L, 10842L, 10894L, 10904L, 10956L, 10966L, 11018L, 11028L, 11080L, 11090L, 11142L, 11153L, 11204L, 11215L, 11266L, 11277L, 11328L, 11340L, 11390L, 11402L, 11452L, 11464L, 11514L, 11526L, 11576L, 11588L, 11638L, 11650L, 11700L, 11712L, 11762L, 11774L, 11824L, 11836L, 11886L, 11898L, 11948L, 11960L, 12010L, 12022L, 12072L, 12084L, 12135L, 12146L, 12196L, 12206L, 12256L, 12266L, 12316L, 12326L, 12376L, 12386L, 12436L, 12446L, 12496L, 12506L, 12556L, 12566L, 12616L, 12626L, 12676L, 12686L, 12736L, 12746L, 12796L, 12806L, 12856L, 12866L ) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Adelaide" rownames(res) <- NULL tzdb_cache[["Adelaide"]] <- res res } "Brisbane" <- function() { if(!is.null(tzdb_cache[["Brisbane"]])) return(tzdb_cache[["Brisbane"]]) ind <- c(118L, 286L, 295L, 1301L, 1321L, 1358L, 1383L, 1410L, 1433L, 2760L, 2778L, 4493L, 4516L, 4616L, 4639L, 4756L, 4790L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Brisbane" rownames(res) <- NULL tzdb_cache[["Brisbane"]] <- res res } "Broken_Hill" <- function() { if(!is.null(tzdb_cache[["Broken_Hill"]])) return(tzdb_cache[["Broken_Hill"]]) ind <- c(125L, 134L, 136L, 287L, 296L, 1302L, 1322L, 1359L, 1384L, 1411L, 1434L, 2761L, 2779L, 2817L, 2833L, 2872L, 2908L, 2957L, 2990L, 3041L, 3062L, 3119L, 3139L, 3204L, 3225L, 3288L, 3311L, 3380L, 3398L, 3467L, 3487L, 3561L, 3614L, 3667L, 3686L, 3775L, 3793L, 3882L, 3901L, 3989L, 4024L, 4110L, 4141L, 4238L, 4274L, 4372L, 4399L, 4494L, 4517L, 4617L, 4640L, 4757L, 4791L, 4903L, 4931L, 5031L, 5050L, 5149L, 5168L, 5267L, 5298L, 5370L, 5419L, 5488L, 5535L, 5602L, 5649L, 5715L, 5769L, 5837L, 5888L, 5961L, 6015L, 6081L, 6134L, 6199L, 6250L, 6323L, 6374L, 6445L, 6517L, 6560L, 6621L, 6673L, 6765L, 6786L, 6885L, 6906L, 7006L, 7030L, 7122L, 7145L, 7216L, 7239L, 7305L, 7324L, 7395L, 7416L, 7503L, 7520L, 7595L, 7619L, 7689L, 7706L, 7775L, 7790L, 7861L, 7878L, 7940L, 7957L, 8020L, 8035L, 8093L, 8107L, 8163L, 8174L, 8225L, 8236L, 8287L, 8298L, 8350L, 8360L, 8412L, 8422L, 8474L, 8484L, 8536L, 8546L, 8598L, 8608L, 8660L, 8670L, 8722L, 8732L, 8784L, 8794L, 8846L, 8856L, 8908L, 8918L, 8970L, 8980L, 9032L, 9042L, 9094L, 9105L, 9156L, 9167L, 9218L, 9229L, 9280L, 9292L, 9342L, 9354L, 9404L, 9416L, 9466L, 9478L, 9528L, 9540L, 9590L, 9602L, 9652L, 9664L, 9714L, 9726L, 9776L, 9788L, 9838L, 9850L, 9900L, 9912L, 9962L, 9974L, 10024L, 10036L, 10086L, 10098L, 10149L, 10160L, 10211L, 10222L, 10273L, 10284L, 10336L, 10346L, 10398L, 10408L, 10460L, 10470L, 10522L, 10532L, 10584L, 10594L, 10646L, 10656L, 10708L, 10718L, 10770L, 10780L, 10832L, 10842L, 10894L, 10904L, 10956L, 10966L, 11018L, 11028L, 11080L, 11090L, 11142L, 11153L, 11204L, 11215L, 11266L, 11277L, 11328L, 11340L, 11390L, 11402L, 11452L, 11464L, 11514L, 11526L, 11576L, 11588L, 11638L, 11650L, 11700L, 11712L, 11762L, 11774L, 11824L, 11836L, 11886L, 11898L, 11948L, 11960L, 12010L, 12022L, 12072L, 12084L, 12135L, 12146L, 12196L, 12206L, 12256L, 12266L, 12316L, 12326L, 12376L, 12386L, 12436L, 12446L, 12496L, 12506L, 12556L, 12566L, 12616L, 12626L, 12676L, 12686L, 12736L, 12746L, 12796L, 12806L, 12856L, 12866L ) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Broken_Hill" rownames(res) <- NULL tzdb_cache[["Broken_Hill"]] <- res res } "Darwin" <- function() { if(!is.null(tzdb_cache[["Darwin"]])) return(tzdb_cache[["Darwin"]]) ind <- c(127L, 136L, 287L, 296L, 1302L, 1322L, 1359L, 1384L, 1411L, 1434L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Darwin" rownames(res) <- NULL tzdb_cache[["Darwin"]] <- res res } "Eucla" <- function() { if(!is.null(tzdb_cache[["Eucla"]])) return(tzdb_cache[["Eucla"]]) ind <- c(130L, 288L, 297L, 1303L, 1323L, 1360L, 1385L, 2958L, 2991L, 3776L, 3794L, 4772L, 4792L, 6595L, 6623L, 6675L, 6737L, 6797L, 6860L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Eucla" rownames(res) <- NULL tzdb_cache[["Eucla"]] <- res res } "Hobart" <- function() { if(!is.null(tzdb_cache[["Hobart"]])) return(tzdb_cache[["Hobart"]]) ind <- c(128L, 275L, 295L, 315L, 324L, 361L, 376L, 1301L, 1321L, 1358L, 1383L, 1410L, 1433L, 2571L, 2598L, 2620L, 2636L, 2666L, 2683L, 2714L, 2728L, 2760L, 2778L, 2816L, 2832L, 2871L, 2907L, 2956L, 2989L, 3040L, 3061L, 3118L, 3138L, 3203L, 3224L, 3287L, 3310L, 3379L, 3397L, 3466L, 3486L, 3560L, 3586L, 3666L, 3691L, 3774L, 3792L, 3881L, 3900L, 3988L, 4014L, 4109L, 4140L, 4237L, 4273L, 4371L, 4398L, 4493L, 4526L, 4616L, 4655L, 4743L, 4806L, 4892L, 4941L, 5020L, 5062L, 5139L, 5177L, 5255L, 5295L, 5358L, 5416L, 5476L, 5532L, 5593L, 5647L, 5702L, 5767L, 5811L, 5886L, 5949L, 6013L, 6070L, 6132L, 6187L, 6248L, 6313L, 6372L, 6431L, 6516L, 6546L, 6619L, 6661L, 6764L, 6785L, 6884L, 6905L, 7005L, 7029L, 7121L, 7144L, 7215L, 7238L, 7304L, 7323L, 7394L, 7415L, 7502L, 7519L, 7594L, 7618L, 7688L, 7705L, 7774L, 7789L, 7860L, 7877L, 7939L, 7955L, 8019L, 8034L, 8092L, 8106L, 8162L, 8173L, 8224L, 8235L, 8286L, 8297L, 8349L, 8359L, 8411L, 8421L, 8473L, 8483L, 8535L, 8545L, 8597L, 8607L, 8659L, 8669L, 8721L, 8731L, 8783L, 8793L, 8845L, 8855L, 8907L, 8917L, 8969L, 8979L, 9031L, 9041L, 9093L, 9104L, 9155L, 9166L, 9217L, 9228L, 9279L, 9291L, 9341L, 9353L, 9403L, 9415L, 9465L, 9477L, 9527L, 9539L, 9589L, 9601L, 9651L, 9663L, 9713L, 9725L, 9775L, 9787L, 9837L, 9849L, 9899L, 9911L, 9961L, 9973L, 10023L, 10035L, 10085L, 10097L, 10148L, 10159L, 10210L, 10221L, 10272L, 10283L, 10335L, 10345L, 10397L, 10407L, 10459L, 10469L, 10521L, 10531L, 10583L, 10593L, 10645L, 10655L, 10707L, 10717L, 10769L, 10779L, 10831L, 10841L, 10893L, 10903L, 10955L, 10965L, 11017L, 11027L, 11079L, 11089L, 11141L, 11152L, 11203L, 11214L, 11265L, 11276L, 11327L, 11339L, 11389L, 11401L, 11451L, 11463L, 11513L, 11525L, 11575L, 11587L, 11637L, 11649L, 11699L, 11711L, 11761L, 11773L, 11823L, 11835L, 11885L, 11897L, 11947L, 11959L, 12009L, 12021L, 12071L, 12083L, 12134L, 12145L, 12195L, 12205L, 12255L, 12265L, 12315L, 12325L, 12375L, 12385L, 12435L, 12445L, 12495L, 12505L, 12555L, 12565L, 12615L, 12625L, 12675L, 12685L, 12735L, 12745L, 12795L, 12805L, 12855L, 12865L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Hobart" rownames(res) <- NULL tzdb_cache[["Hobart"]] <- res res } "Lindeman" <- function() { if(!is.null(tzdb_cache[["Lindeman"]])) return(tzdb_cache[["Lindeman"]]) ind <- c(119L, 286L, 295L, 1301L, 1321L, 1358L, 1383L, 1410L, 1433L, 2760L, 2778L, 4493L, 4516L, 4616L, 4639L, 4756L, 4790L, 4902L, 4930L, 5030L, 5049L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Lindeman" rownames(res) <- NULL tzdb_cache[["Lindeman"]] <- res res } "Lord_Howe" <- function() { if(!is.null(tzdb_cache[["Lord_Howe"]])) return(tzdb_cache[["Lord_Howe"]]) ind <- c(122L, 3483L, 3559L, 3580L, 3665L, 3684L, 3773L, 3791L, 3880L, 3899L, 3987L, 4022L, 4108L, 4139L, 4236L, 4272L, 4370L, 4397L, 4492L, 4515L, 4615L, 4638L, 4755L, 4789L, 4901L, 4929L, 5029L, 5048L, 5147L, 5166L, 5265L, 5294L, 5367L, 5415L, 5485L, 5531L, 5599L, 5646L, 5712L, 5766L, 5810L, 5885L, 5958L, 6012L, 6078L, 6131L, 6196L, 6247L, 6320L, 6371L, 6442L, 6515L, 6557L, 6618L, 6670L, 6763L, 6784L, 6883L, 6904L, 7004L, 7028L, 7120L, 7143L, 7214L, 7237L, 7303L, 7322L, 7393L, 7414L, 7501L, 7518L, 7593L, 7617L, 7687L, 7704L, 7773L, 7788L, 7859L, 7876L, 7937L, 7954L, 8017L, 8033L, 8090L, 8105L, 8160L, 8172L, 8222L, 8234L, 8284L, 8296L, 8347L, 8358L, 8409L, 8420L, 8471L, 8482L, 8533L, 8544L, 8595L, 8606L, 8657L, 8668L, 8719L, 8730L, 8781L, 8792L, 8843L, 8854L, 8905L, 8916L, 8967L, 8978L, 9029L, 9040L, 9091L, 9103L, 9153L, 9165L, 9215L, 9227L, 9277L, 9290L, 9339L, 9352L, 9401L, 9414L, 9463L, 9476L, 9525L, 9538L, 9587L, 9600L, 9649L, 9662L, 9711L, 9724L, 9773L, 9786L, 9835L, 9848L, 9897L, 9910L, 9959L, 9972L, 10021L, 10034L, 10083L, 10096L, 10146L, 10158L, 10208L, 10220L, 10270L, 10282L, 10333L, 10344L, 10395L, 10406L, 10457L, 10468L, 10519L, 10530L, 10581L, 10592L, 10643L, 10654L, 10705L, 10716L, 10767L, 10778L, 10829L, 10840L, 10891L, 10902L, 10953L, 10964L, 11015L, 11026L, 11077L, 11088L, 11139L, 11151L, 11201L, 11213L, 11263L, 11275L, 11325L, 11338L, 11387L, 11400L, 11449L, 11462L, 11511L, 11524L, 11573L, 11586L, 11635L, 11648L, 11697L, 11710L, 11759L, 11772L, 11821L, 11834L, 11883L, 11896L, 11945L, 11958L, 12007L, 12020L, 12069L, 12082L, 12132L, 12144L, 12193L, 12204L, 12253L, 12264L, 12313L, 12324L, 12373L, 12384L, 12433L, 12444L, 12493L, 12504L, 12553L, 12564L, 12613L, 12624L, 12673L, 12684L, 12733L, 12744L, 12793L, 12804L, 12853L, 12864L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Lord_Howe" rownames(res) <- NULL tzdb_cache[["Lord_Howe"]] <- res res } "Melbourne" <- function() { if(!is.null(tzdb_cache[["Melbourne"]])) return(tzdb_cache[["Melbourne"]]) ind <- c(124L, 286L, 295L, 1301L, 1321L, 1358L, 1383L, 1410L, 1433L, 2760L, 2778L, 2816L, 2832L, 2871L, 2907L, 2956L, 2989L, 3040L, 3061L, 3118L, 3138L, 3203L, 3224L, 3287L, 3310L, 3379L, 3397L, 3466L, 3486L, 3560L, 3581L, 3666L, 3685L, 3774L, 3792L, 3881L, 3900L, 3988L, 4023L, 4109L, 4140L, 4233L, 4273L, 4371L, 4398L, 4493L, 4526L, 4616L, 4639L, 4756L, 4790L, 4902L, 4930L, 5030L, 5049L, 5148L, 5177L, 5266L, 5295L, 5369L, 5416L, 5487L, 5532L, 5601L, 5647L, 5714L, 5767L, 5811L, 5886L, 5960L, 6013L, 6080L, 6132L, 6198L, 6248L, 6322L, 6372L, 6444L, 6516L, 6559L, 6619L, 6672L, 6764L, 6785L, 6884L, 6905L, 7005L, 7029L, 7121L, 7144L, 7215L, 7238L, 7304L, 7323L, 7394L, 7415L, 7502L, 7519L, 7594L, 7618L, 7688L, 7705L, 7774L, 7789L, 7860L, 7877L, 7939L, 7955L, 8019L, 8034L, 8092L, 8106L, 8162L, 8173L, 8224L, 8235L, 8286L, 8297L, 8349L, 8359L, 8411L, 8421L, 8473L, 8483L, 8535L, 8545L, 8597L, 8607L, 8659L, 8669L, 8721L, 8731L, 8783L, 8793L, 8845L, 8855L, 8907L, 8917L, 8969L, 8979L, 9031L, 9041L, 9093L, 9104L, 9155L, 9166L, 9217L, 9228L, 9279L, 9291L, 9341L, 9353L, 9403L, 9415L, 9465L, 9477L, 9527L, 9539L, 9589L, 9601L, 9651L, 9663L, 9713L, 9725L, 9775L, 9787L, 9837L, 9849L, 9899L, 9911L, 9961L, 9973L, 10023L, 10035L, 10085L, 10097L, 10148L, 10159L, 10210L, 10221L, 10272L, 10283L, 10335L, 10345L, 10397L, 10407L, 10459L, 10469L, 10521L, 10531L, 10583L, 10593L, 10645L, 10655L, 10707L, 10717L, 10769L, 10779L, 10831L, 10841L, 10893L, 10903L, 10955L, 10965L, 11017L, 11027L, 11079L, 11089L, 11141L, 11152L, 11203L, 11214L, 11265L, 11276L, 11327L, 11339L, 11389L, 11401L, 11451L, 11463L, 11513L, 11525L, 11575L, 11587L, 11637L, 11649L, 11699L, 11711L, 11761L, 11773L, 11823L, 11835L, 11885L, 11897L, 11947L, 11959L, 12009L, 12021L, 12071L, 12083L, 12134L, 12145L, 12195L, 12205L, 12255L, 12265L, 12315L, 12325L, 12375L, 12385L, 12435L, 12445L, 12495L, 12505L, 12555L, 12565L, 12615L, 12625L, 12675L, 12685L, 12735L, 12745L, 12795L, 12805L, 12855L, 12865L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Melbourne" rownames(res) <- NULL tzdb_cache[["Melbourne"]] <- res res } "Perth" <- function() { if(!is.null(tzdb_cache[["Perth"]])) return(tzdb_cache[["Perth"]]) ind <- c(131L, 289L, 298L, 1304L, 1324L, 1361L, 1386L, 2959L, 2992L, 3777L, 3795L, 4773L, 4793L, 6596L, 6625L, 6677L, 6739L, 6799L, 6862L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Perth" rownames(res) <- NULL tzdb_cache[["Perth"]] <- res res } "Sydney" <- function() { if(!is.null(tzdb_cache[["Sydney"]])) return(tzdb_cache[["Sydney"]]) ind <- c(123L, 286L, 295L, 1301L, 1321L, 1358L, 1383L, 1410L, 1433L, 2760L, 2778L, 2816L, 2832L, 2871L, 2907L, 2956L, 2989L, 3040L, 3061L, 3118L, 3138L, 3203L, 3224L, 3287L, 3310L, 3379L, 3397L, 3466L, 3486L, 3560L, 3613L, 3666L, 3685L, 3774L, 3792L, 3881L, 3900L, 3988L, 4023L, 4109L, 4140L, 4237L, 4273L, 4371L, 4398L, 4493L, 4516L, 4616L, 4639L, 4756L, 4790L, 4902L, 4930L, 5030L, 5049L, 5148L, 5167L, 5266L, 5295L, 5369L, 5416L, 5487L, 5532L, 5601L, 5647L, 5714L, 5767L, 5811L, 5886L, 5960L, 6013L, 6080L, 6132L, 6198L, 6248L, 6322L, 6372L, 6444L, 6516L, 6559L, 6619L, 6672L, 6764L, 6785L, 6884L, 6905L, 7005L, 7029L, 7121L, 7144L, 7215L, 7238L, 7304L, 7323L, 7394L, 7415L, 7502L, 7519L, 7594L, 7618L, 7688L, 7705L, 7774L, 7789L, 7860L, 7877L, 7939L, 7955L, 8019L, 8034L, 8092L, 8106L, 8162L, 8173L, 8224L, 8235L, 8286L, 8297L, 8349L, 8359L, 8411L, 8421L, 8473L, 8483L, 8535L, 8545L, 8597L, 8607L, 8659L, 8669L, 8721L, 8731L, 8783L, 8793L, 8845L, 8855L, 8907L, 8917L, 8969L, 8979L, 9031L, 9041L, 9093L, 9104L, 9155L, 9166L, 9217L, 9228L, 9279L, 9291L, 9341L, 9353L, 9403L, 9415L, 9465L, 9477L, 9527L, 9539L, 9589L, 9601L, 9651L, 9663L, 9713L, 9725L, 9775L, 9787L, 9837L, 9849L, 9899L, 9911L, 9961L, 9973L, 10023L, 10035L, 10085L, 10097L, 10148L, 10159L, 10210L, 10221L, 10272L, 10283L, 10335L, 10345L, 10397L, 10407L, 10459L, 10469L, 10521L, 10531L, 10583L, 10593L, 10645L, 10655L, 10707L, 10717L, 10769L, 10779L, 10831L, 10841L, 10893L, 10903L, 10955L, 10965L, 11017L, 11027L, 11079L, 11089L, 11141L, 11152L, 11203L, 11214L, 11265L, 11276L, 11327L, 11339L, 11389L, 11401L, 11451L, 11463L, 11513L, 11525L, 11575L, 11587L, 11637L, 11649L, 11699L, 11711L, 11761L, 11773L, 11823L, 11835L, 11885L, 11897L, 11947L, 11959L, 12009L, 12021L, 12071L, 12083L, 12134L, 12145L, 12195L, 12205L, 12255L, 12265L, 12315L, 12325L, 12375L, 12385L, 12435L, 12445L, 12495L, 12505L, 12555L, 12565L, 12615L, 12625L, 12675L, 12685L, 12735L, 12745L, 12795L, 12805L, 12855L, 12865L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Sydney" rownames(res) <- NULL tzdb_cache[["Sydney"]] <- res res } "Andorra" <- function() { if(!is.null(tzdb_cache[["Andorra"]])) return(tzdb_cache[["Andorra"]]) ind <- c(160L, 1612L, 3925L, 3973L, 4045L, 4093L, 4162L, 4216L, 4294L, 4347L, 4422L, 4473L, 4549L, 4599L, 4671L, 4731L, 4826L, 4880L, 4957L, 5009L, 5076L, 5128L, 5194L, 5247L, 5313L, 5382L, 5434L, 5502L, 5551L, 5616L, 5665L, 5730L, 5784L, 5852L, 5903L, 5976L, 6030L, 6096L, 6149L, 6214L, 6265L, 6338L, 6389L, 6458L, 6503L, 6573L, 6635L, 6687L, 6749L, 6810L, 6873L, 6929L, 6993L, 7053L, 7105L, 7160L, 7201L, 7249L, 7292L, 7335L, 7380L, 7438L, 7489L, 7529L, 7579L, 7630L, 7673L, 7716L, 7759L, 7800L, 7848L, 7886L, 7926L, 7963L, 8005L, 8042L, 8078L, 8113L, 8149L, 8180L, 8213L, 8242L, 8275L, 8304L, 8338L, 8366L, 8399L, 8428L, 8461L, 8490L, 8523L, 8552L, 8586L, 8614L, 8648L, 8676L, 8709L, 8738L, 8771L, 8800L, 8833L, 8862L, 8895L, 8924L, 8958L, 8987L, 9020L, 9049L, 9081L, 9111L, 9143L, 9174L, 9205L, 9236L, 9268L, 9298L, 9330L, 9360L, 9392L, 9422L, 9453L, 9484L, 9515L, 9546L, 9577L, 9608L, 9640L, 9670L, 9702L, 9732L, 9763L, 9794L, 9825L, 9856L, 9887L, 9918L, 9950L, 9980L, 10012L, 10042L, 10074L, 10104L, 10135L, 10166L, 10198L, 10228L, 10260L, 10290L, 10323L, 10352L, 10386L, 10414L, 10447L, 10476L, 10509L, 10538L, 10571L, 10600L, 10633L, 10662L, 10696L, 10724L, 10758L, 10786L, 10819L, 10848L, 10881L, 10910L, 10943L, 10973L, 11006L, 11035L, 11068L, 11097L, 11130L, 11159L, 11191L, 11222L, 11253L, 11284L, 11315L, 11346L, 11378L, 11408L, 11440L, 11470L, 11501L, 11532L, 11563L, 11594L, 11625L, 11656L, 11688L, 11718L, 11750L, 11780L, 11812L, 11842L, 11873L, 11904L, 11935L, 11966L, 11997L, 12028L, 12060L, 12090L, 12122L, 12152L, 12183L, 12212L, 12243L, 12272L, 12303L, 12332L, 12363L, 12392L, 12424L, 12452L, 12484L, 12512L, 12543L, 12572L, 12603L, 12632L, 12663L, 12692L, 12724L, 12752L, 12784L, 12812L, 12844L, 12872L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Andorra" rownames(res) <- NULL tzdb_cache[["Andorra"]] <- res res } "Astrakhan" <- function() { if(!is.null(tzdb_cache[["Astrakhan"]])) return(tzdb_cache[["Astrakhan"]]) ind <- c(596L, 788L, 3512L, 3550L, 3609L, 3649L, 3715L, 3757L, 3821L, 3857L, 3917L, 3966L, 4039L, 4088L, 4156L, 4211L, 4289L, 4414L, 4469L, 4545L, 4597L, 4820L, 4876L, 4953L, 5005L, 5073L, 5124L, 5190L, 5243L, 5309L, 5378L, 5429L, 5497L, 5546L, 5611L, 5660L, 5725L, 5779L, 5847L, 5898L, 5971L, 6025L, 6091L, 6144L, 6209L, 6260L, 6333L, 6384L, 6453L, 6498L, 6568L, 6631L, 6683L, 6745L, 6806L, 6869L, 6925L, 6989L, 7049L, 7100L, 7432L, 7577L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Astrakhan" rownames(res) <- NULL tzdb_cache[["Astrakhan"]] <- res res } "Athens" <- function() { if(!is.null(tzdb_cache[["Athens"]])) return(tzdb_cache[["Athens"]]) ind <- c(129L, 269L, 871L, 872L, 1248L, 1255L, 1372L, 1388L, 1413L, 1442L, 1919L, 1938L, 3000L, 3057L, 3070L, 3107L, 3150L, 3185L, 3236L, 3269L, 3327L, 3354L, 3412L, 3445L, 3497L, 3539L, 3594L, 3638L, 3699L, 3745L, 3808L, 3864L, 3926L, 3974L, 4049L, 4097L, 4166L, 4220L, 4298L, 4351L, 4426L, 4477L, 4553L, 4603L, 4675L, 4735L, 4830L, 4884L, 4961L, 5013L, 5080L, 5132L, 5198L, 5251L, 5318L, 5387L, 5438L, 5506L, 5555L, 5619L, 5668L, 5733L, 5787L, 5855L, 5906L, 5979L, 6033L, 6099L, 6152L, 6217L, 6268L, 6341L, 6393L, 6462L, 6507L, 6577L, 6639L, 6691L, 6753L, 6814L, 6877L, 6933L, 6997L, 7057L, 7109L, 7164L, 7205L, 7253L, 7296L, 7339L, 7384L, 7442L, 7493L, 7533L, 7583L, 7634L, 7677L, 7720L, 7763L, 7804L, 7852L, 7890L, 7930L, 7967L, 8009L, 8046L, 8082L, 8117L, 8153L, 8183L, 8216L, 8245L, 8278L, 8307L, 8341L, 8369L, 8402L, 8431L, 8464L, 8493L, 8526L, 8555L, 8589L, 8617L, 8651L, 8679L, 8712L, 8741L, 8774L, 8803L, 8836L, 8865L, 8898L, 8927L, 8961L, 8990L, 9023L, 9052L, 9084L, 9114L, 9146L, 9177L, 9208L, 9239L, 9271L, 9301L, 9333L, 9363L, 9395L, 9425L, 9456L, 9487L, 9518L, 9549L, 9580L, 9611L, 9643L, 9673L, 9705L, 9735L, 9766L, 9797L, 9828L, 9859L, 9890L, 9921L, 9953L, 9983L, 10015L, 10045L, 10077L, 10107L, 10138L, 10169L, 10201L, 10231L, 10263L, 10293L, 10326L, 10355L, 10389L, 10417L, 10450L, 10479L, 10512L, 10541L, 10574L, 10603L, 10636L, 10665L, 10699L, 10727L, 10761L, 10789L, 10822L, 10851L, 10884L, 10913L, 10946L, 10976L, 11009L, 11038L, 11071L, 11100L, 11133L, 11162L, 11194L, 11225L, 11256L, 11287L, 11318L, 11349L, 11381L, 11411L, 11443L, 11473L, 11504L, 11535L, 11566L, 11597L, 11628L, 11659L, 11691L, 11721L, 11753L, 11783L, 11815L, 11845L, 11876L, 11907L, 11938L, 11969L, 12000L, 12031L, 12063L, 12093L, 12125L, 12155L, 12186L, 12215L, 12246L, 12275L, 12306L, 12335L, 12366L, 12395L, 12427L, 12455L, 12487L, 12515L, 12546L, 12575L, 12606L, 12635L, 12666L, 12695L, 12727L, 12755L, 12787L, 12815L, 12847L, 12875L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Athens" rownames(res) <- NULL tzdb_cache[["Athens"]] <- res res } "Belgrade" <- function() { if(!is.null(tzdb_cache[["Belgrade"]])) return(tzdb_cache[["Belgrade"]]) ind <- c(53L, 1252L, 1372L, 1387L, 1415L, 1441L, 1465L, 1502L, 1534L, 3700L, 3746L, 3809L, 3865L, 3925L, 3973L, 4045L, 4093L, 4162L, 4216L, 4294L, 4347L, 4422L, 4473L, 4549L, 4599L, 4671L, 4731L, 4826L, 4880L, 4957L, 5009L, 5076L, 5128L, 5194L, 5247L, 5313L, 5382L, 5434L, 5502L, 5551L, 5616L, 5665L, 5730L, 5784L, 5852L, 5903L, 5976L, 6030L, 6096L, 6149L, 6214L, 6265L, 6338L, 6389L, 6458L, 6503L, 6573L, 6635L, 6687L, 6749L, 6810L, 6873L, 6929L, 6993L, 7053L, 7105L, 7160L, 7201L, 7249L, 7292L, 7335L, 7380L, 7438L, 7489L, 7529L, 7579L, 7630L, 7673L, 7716L, 7759L, 7800L, 7848L, 7886L, 7926L, 7963L, 8005L, 8042L, 8078L, 8113L, 8149L, 8180L, 8213L, 8242L, 8275L, 8304L, 8338L, 8366L, 8399L, 8428L, 8461L, 8490L, 8523L, 8552L, 8586L, 8614L, 8648L, 8676L, 8709L, 8738L, 8771L, 8800L, 8833L, 8862L, 8895L, 8924L, 8958L, 8987L, 9020L, 9049L, 9081L, 9111L, 9143L, 9174L, 9205L, 9236L, 9268L, 9298L, 9330L, 9360L, 9392L, 9422L, 9453L, 9484L, 9515L, 9546L, 9577L, 9608L, 9640L, 9670L, 9702L, 9732L, 9763L, 9794L, 9825L, 9856L, 9887L, 9918L, 9950L, 9980L, 10012L, 10042L, 10074L, 10104L, 10135L, 10166L, 10198L, 10228L, 10260L, 10290L, 10323L, 10352L, 10386L, 10414L, 10447L, 10476L, 10509L, 10538L, 10571L, 10600L, 10633L, 10662L, 10696L, 10724L, 10758L, 10786L, 10819L, 10848L, 10881L, 10910L, 10943L, 10973L, 11006L, 11035L, 11068L, 11097L, 11130L, 11159L, 11191L, 11222L, 11253L, 11284L, 11315L, 11346L, 11378L, 11408L, 11440L, 11470L, 11501L, 11532L, 11563L, 11594L, 11625L, 11656L, 11688L, 11718L, 11750L, 11780L, 11812L, 11842L, 11873L, 11904L, 11935L, 11966L, 11997L, 12028L, 12060L, 12090L, 12122L, 12152L, 12183L, 12212L, 12243L, 12272L, 12303L, 12332L, 12363L, 12392L, 12424L, 12452L, 12484L, 12512L, 12543L, 12572L, 12603L, 12632L, 12663L, 12692L, 12724L, 12752L, 12784L, 12812L, 12844L, 12872L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Belgrade" rownames(res) <- NULL tzdb_cache[["Belgrade"]] <- res res } "Berlin" <- function() { if(!is.null(tzdb_cache[["Berlin"]])) return(tzdb_cache[["Berlin"]]) ind <- c(101L, 256L, 278L, 304L, 306L, 341L, 348L, 1191L, 1372L, 1387L, 1415L, 1441L, 1465L, 1485L, 1503L, 1538L, 1569L, 1582L, 1625L, 1640L, 1657L, 1662L, 1675L, 1696L, 1725L, 1749L, 1773L, 3419L, 3452L, 3498L, 3540L, 3595L, 3639L, 3700L, 3746L, 3809L, 3865L, 3925L, 3973L, 4045L, 4093L, 4162L, 4216L, 4294L, 4347L, 4422L, 4473L, 4549L, 4599L, 4671L, 4731L, 4826L, 4880L, 4957L, 5009L, 5076L, 5128L, 5194L, 5247L, 5313L, 5382L, 5434L, 5502L, 5551L, 5616L, 5665L, 5730L, 5784L, 5852L, 5903L, 5976L, 6030L, 6096L, 6149L, 6214L, 6265L, 6338L, 6389L, 6458L, 6503L, 6573L, 6635L, 6687L, 6749L, 6810L, 6873L, 6929L, 6993L, 7053L, 7105L, 7160L, 7201L, 7249L, 7292L, 7335L, 7380L, 7438L, 7489L, 7529L, 7579L, 7630L, 7673L, 7716L, 7759L, 7800L, 7848L, 7886L, 7926L, 7963L, 8005L, 8042L, 8078L, 8113L, 8149L, 8180L, 8213L, 8242L, 8275L, 8304L, 8338L, 8366L, 8399L, 8428L, 8461L, 8490L, 8523L, 8552L, 8586L, 8614L, 8648L, 8676L, 8709L, 8738L, 8771L, 8800L, 8833L, 8862L, 8895L, 8924L, 8958L, 8987L, 9020L, 9049L, 9081L, 9111L, 9143L, 9174L, 9205L, 9236L, 9268L, 9298L, 9330L, 9360L, 9392L, 9422L, 9453L, 9484L, 9515L, 9546L, 9577L, 9608L, 9640L, 9670L, 9702L, 9732L, 9763L, 9794L, 9825L, 9856L, 9887L, 9918L, 9950L, 9980L, 10012L, 10042L, 10074L, 10104L, 10135L, 10166L, 10198L, 10228L, 10260L, 10290L, 10323L, 10352L, 10386L, 10414L, 10447L, 10476L, 10509L, 10538L, 10571L, 10600L, 10633L, 10662L, 10696L, 10724L, 10758L, 10786L, 10819L, 10848L, 10881L, 10910L, 10943L, 10973L, 11006L, 11035L, 11068L, 11097L, 11130L, 11159L, 11191L, 11222L, 11253L, 11284L, 11315L, 11346L, 11378L, 11408L, 11440L, 11470L, 11501L, 11532L, 11563L, 11594L, 11625L, 11656L, 11688L, 11718L, 11750L, 11780L, 11812L, 11842L, 11873L, 11904L, 11935L, 11966L, 11997L, 12028L, 12060L, 12090L, 12122L, 12152L, 12183L, 12212L, 12243L, 12272L, 12303L, 12332L, 12363L, 12392L, 12424L, 12452L, 12484L, 12512L, 12543L, 12572L, 12603L, 12632L, 12663L, 12692L, 12724L, 12752L, 12784L, 12812L, 12844L, 12872L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Berlin" rownames(res) <- NULL tzdb_cache[["Berlin"]] <- res res } "Brussels" <- function() { if(!is.null(tzdb_cache[["Brussels"]])) return(tzdb_cache[["Brussels"]]) ind <- c(43L, 96L, 247L, 258L, 278L, 304L, 306L, 341L, 348L, 369L, 377L, 410L, 443L, 475L, 490L, 522L, 532L, 551L, 560L, 580L, 586L, 629L, 638L, 654L, 661L, 676L, 684L, 700L, 712L, 732L, 744L, 759L, 770L, 795L, 817L, 840L, 861L, 882L, 902L, 928L, 942L, 962L, 977L, 999L, 1015L, 1032L, 1051L, 1077L, 1092L, 1119L, 1140L, 1173L, 1182L, 1199L, 1372L, 1387L, 1415L, 1441L, 1460L, 1485L, 1534L, 1599L, 1625L, 3152L, 3184L, 3239L, 3277L, 3325L, 3360L, 3419L, 3452L, 3498L, 3540L, 3595L, 3639L, 3700L, 3746L, 3809L, 3865L, 3925L, 3973L, 4045L, 4093L, 4162L, 4216L, 4294L, 4347L, 4422L, 4473L, 4549L, 4599L, 4671L, 4731L, 4826L, 4880L, 4957L, 5009L, 5076L, 5128L, 5194L, 5247L, 5313L, 5382L, 5434L, 5502L, 5551L, 5616L, 5665L, 5730L, 5784L, 5852L, 5903L, 5976L, 6030L, 6096L, 6149L, 6214L, 6265L, 6338L, 6389L, 6458L, 6503L, 6573L, 6635L, 6687L, 6749L, 6810L, 6873L, 6929L, 6993L, 7053L, 7105L, 7160L, 7201L, 7249L, 7292L, 7335L, 7380L, 7438L, 7489L, 7529L, 7579L, 7630L, 7673L, 7716L, 7759L, 7800L, 7848L, 7886L, 7926L, 7963L, 8005L, 8042L, 8078L, 8113L, 8149L, 8180L, 8213L, 8242L, 8275L, 8304L, 8338L, 8366L, 8399L, 8428L, 8461L, 8490L, 8523L, 8552L, 8586L, 8614L, 8648L, 8676L, 8709L, 8738L, 8771L, 8800L, 8833L, 8862L, 8895L, 8924L, 8958L, 8987L, 9020L, 9049L, 9081L, 9111L, 9143L, 9174L, 9205L, 9236L, 9268L, 9298L, 9330L, 9360L, 9392L, 9422L, 9453L, 9484L, 9515L, 9546L, 9577L, 9608L, 9640L, 9670L, 9702L, 9732L, 9763L, 9794L, 9825L, 9856L, 9887L, 9918L, 9950L, 9980L, 10012L, 10042L, 10074L, 10104L, 10135L, 10166L, 10198L, 10228L, 10260L, 10290L, 10323L, 10352L, 10386L, 10414L, 10447L, 10476L, 10509L, 10538L, 10571L, 10600L, 10633L, 10662L, 10696L, 10724L, 10758L, 10786L, 10819L, 10848L, 10881L, 10910L, 10943L, 10973L, 11006L, 11035L, 11068L, 11097L, 11130L, 11159L, 11191L, 11222L, 11253L, 11284L, 11315L, 11346L, 11378L, 11408L, 11440L, 11470L, 11501L, 11532L, 11563L, 11594L, 11625L, 11656L, 11688L, 11718L, 11750L, 11780L, 11812L, 11842L, 11873L, 11904L, 11935L, 11966L, 11997L, 12028L, 12060L, 12090L, 12122L, 12152L, 12183L, 12212L, 12243L, 12272L, 12303L, 12332L, 12363L, 12392L, 12424L, 12452L, 12484L, 12512L, 12543L, 12572L, 12603L, 12632L, 12663L, 12692L, 12724L, 12752L, 12784L, 12812L, 12844L, 12872L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Brussels" rownames(res) <- NULL tzdb_cache[["Brussels"]] <- res res } "Bucharest" <- function() { if(!is.null(tzdb_cache[["Bucharest"]])) return(tzdb_cache[["Bucharest"]]) ind <- c(92L, 826L, 870L, 878L, 908L, 922L, 938L, 958L, 979L, 995L, 1011L, 1028L, 1047L, 1072L, 1095L, 1115L, 1134L, 1159L, 3347L, 3355L, 3414L, 3446L, 3493L, 3534L, 3589L, 3633L, 3694L, 3740L, 3803L, 3859L, 3920L, 3968L, 4043L, 4091L, 4160L, 4214L, 4293L, 4346L, 4421L, 4472L, 4548L, 4598L, 4666L, 4725L, 4818L, 4874L, 4951L, 5004L, 5071L, 5122L, 5189L, 5240L, 5308L, 5376L, 5438L, 5506L, 5555L, 5619L, 5668L, 5733L, 5787L, 5855L, 5906L, 5979L, 6033L, 6099L, 6152L, 6217L, 6268L, 6341L, 6393L, 6462L, 6507L, 6577L, 6639L, 6691L, 6753L, 6814L, 6877L, 6933L, 6997L, 7057L, 7109L, 7164L, 7205L, 7253L, 7296L, 7339L, 7384L, 7442L, 7493L, 7533L, 7583L, 7634L, 7677L, 7720L, 7763L, 7804L, 7852L, 7890L, 7930L, 7967L, 8009L, 8046L, 8082L, 8117L, 8153L, 8183L, 8216L, 8245L, 8278L, 8307L, 8341L, 8369L, 8402L, 8431L, 8464L, 8493L, 8526L, 8555L, 8589L, 8617L, 8651L, 8679L, 8712L, 8741L, 8774L, 8803L, 8836L, 8865L, 8898L, 8927L, 8961L, 8990L, 9023L, 9052L, 9084L, 9114L, 9146L, 9177L, 9208L, 9239L, 9271L, 9301L, 9333L, 9363L, 9395L, 9425L, 9456L, 9487L, 9518L, 9549L, 9580L, 9611L, 9643L, 9673L, 9705L, 9735L, 9766L, 9797L, 9828L, 9859L, 9890L, 9921L, 9953L, 9983L, 10015L, 10045L, 10077L, 10107L, 10138L, 10169L, 10201L, 10231L, 10263L, 10293L, 10326L, 10355L, 10389L, 10417L, 10450L, 10479L, 10512L, 10541L, 10574L, 10603L, 10636L, 10665L, 10699L, 10727L, 10761L, 10789L, 10822L, 10851L, 10884L, 10913L, 10946L, 10976L, 11009L, 11038L, 11071L, 11100L, 11133L, 11162L, 11194L, 11225L, 11256L, 11287L, 11318L, 11349L, 11381L, 11411L, 11443L, 11473L, 11504L, 11535L, 11566L, 11597L, 11628L, 11659L, 11691L, 11721L, 11753L, 11783L, 11815L, 11845L, 11876L, 11907L, 11938L, 11969L, 12000L, 12031L, 12063L, 12093L, 12125L, 12155L, 12186L, 12215L, 12246L, 12275L, 12306L, 12335L, 12366L, 12395L, 12427L, 12455L, 12487L, 12515L, 12546L, 12575L, 12606L, 12635L, 12666L, 12695L, 12727L, 12755L, 12787L, 12815L, 12847L, 12875L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Bucharest" rownames(res) <- NULL tzdb_cache[["Bucharest"]] <- res res } "Budapest" <- function() { if(!is.null(tzdb_cache[["Budapest"]])) return(tzdb_cache[["Budapest"]]) ind <- c(89L, 256L, 278L, 304L, 306L, 341L, 348L, 391L, 405L, 454L, 467L, 1249L, 1372L, 1387L, 1415L, 1441L, 1465L, 1500L, 1562L, 1575L, 1624L, 1639L, 1675L, 1690L, 1725L, 1749L, 1773L, 2001L, 2011L, 2039L, 2052L, 2083L, 2086L, 2129L, 2133L, 3416L, 3448L, 3492L, 3532L, 3588L, 3632L, 3693L, 3739L, 3809L, 3865L, 3925L, 3973L, 4045L, 4093L, 4162L, 4216L, 4294L, 4347L, 4422L, 4473L, 4549L, 4599L, 4671L, 4731L, 4826L, 4880L, 4957L, 5009L, 5076L, 5128L, 5194L, 5247L, 5313L, 5382L, 5434L, 5502L, 5551L, 5616L, 5665L, 5730L, 5784L, 5852L, 5903L, 5976L, 6030L, 6096L, 6149L, 6214L, 6265L, 6338L, 6389L, 6458L, 6503L, 6573L, 6635L, 6687L, 6749L, 6810L, 6873L, 6929L, 6993L, 7053L, 7105L, 7160L, 7201L, 7249L, 7292L, 7335L, 7380L, 7438L, 7489L, 7529L, 7579L, 7630L, 7673L, 7716L, 7759L, 7800L, 7848L, 7886L, 7926L, 7963L, 8005L, 8042L, 8078L, 8113L, 8149L, 8180L, 8213L, 8242L, 8275L, 8304L, 8338L, 8366L, 8399L, 8428L, 8461L, 8490L, 8523L, 8552L, 8586L, 8614L, 8648L, 8676L, 8709L, 8738L, 8771L, 8800L, 8833L, 8862L, 8895L, 8924L, 8958L, 8987L, 9020L, 9049L, 9081L, 9111L, 9143L, 9174L, 9205L, 9236L, 9268L, 9298L, 9330L, 9360L, 9392L, 9422L, 9453L, 9484L, 9515L, 9546L, 9577L, 9608L, 9640L, 9670L, 9702L, 9732L, 9763L, 9794L, 9825L, 9856L, 9887L, 9918L, 9950L, 9980L, 10012L, 10042L, 10074L, 10104L, 10135L, 10166L, 10198L, 10228L, 10260L, 10290L, 10323L, 10352L, 10386L, 10414L, 10447L, 10476L, 10509L, 10538L, 10571L, 10600L, 10633L, 10662L, 10696L, 10724L, 10758L, 10786L, 10819L, 10848L, 10881L, 10910L, 10943L, 10973L, 11006L, 11035L, 11068L, 11097L, 11130L, 11159L, 11191L, 11222L, 11253L, 11284L, 11315L, 11346L, 11378L, 11408L, 11440L, 11470L, 11501L, 11532L, 11563L, 11594L, 11625L, 11656L, 11688L, 11718L, 11750L, 11780L, 11812L, 11842L, 11873L, 11904L, 11935L, 11966L, 11997L, 12028L, 12060L, 12090L, 12122L, 12152L, 12183L, 12212L, 12243L, 12272L, 12303L, 12332L, 12363L, 12392L, 12424L, 12452L, 12484L, 12512L, 12543L, 12572L, 12603L, 12632L, 12663L, 12692L, 12724L, 12752L, 12784L, 12812L, 12844L, 12872L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Budapest" rownames(res) <- NULL tzdb_cache[["Budapest"]] <- res res } "Chisinau" <- function() { if(!is.null(tzdb_cache[["Chisinau"]])) return(tzdb_cache[["Chisinau"]]) ind <- c(36L, 320L, 826L, 870L, 878L, 908L, 922L, 938L, 958L, 979L, 995L, 1011L, 1028L, 1047L, 1072L, 1095L, 1115L, 1134L, 1159L, 1214L, 1268L, 1372L, 1387L, 1415L, 1441L, 1453L, 3513L, 3551L, 3610L, 3651L, 3716L, 3759L, 3823L, 3858L, 3919L, 3967L, 4041L, 4089L, 4158L, 4212L, 4291L, 4343L, 4418L, 4470L, 4546L, 4579L, 4598L, 4670L, 4728L, 4818L, 4872L, 4951L, 5002L, 5071L, 5122L, 5189L, 5240L, 5308L, 5376L, 5433L, 5501L, 5550L, 5615L, 5664L, 5729L, 5783L, 5851L, 5902L, 5975L, 6029L, 6095L, 6148L, 6213L, 6264L, 6337L, 6388L, 6457L, 6502L, 6572L, 6634L, 6686L, 6748L, 6809L, 6872L, 6928L, 6992L, 7052L, 7103L, 7159L, 7200L, 7248L, 7291L, 7334L, 7378L, 7437L, 7488L, 7528L, 7578L, 7629L, 7672L, 7715L, 7758L, 7799L, 7847L, 7885L, 7925L, 7962L, 8004L, 8041L, 8077L, 8112L, 8148L, 8179L, 8212L, 8241L, 8274L, 8303L, 8337L, 8365L, 8398L, 8427L, 8460L, 8489L, 8522L, 8551L, 8585L, 8613L, 8647L, 8675L, 8708L, 8737L, 8770L, 8799L, 8832L, 8861L, 8894L, 8923L, 8957L, 8986L, 9019L, 9048L, 9080L, 9110L, 9142L, 9173L, 9204L, 9235L, 9267L, 9297L, 9329L, 9359L, 9391L, 9421L, 9452L, 9483L, 9514L, 9545L, 9576L, 9607L, 9639L, 9669L, 9701L, 9731L, 9762L, 9793L, 9824L, 9855L, 9886L, 9917L, 9949L, 9979L, 10011L, 10041L, 10073L, 10103L, 10134L, 10165L, 10197L, 10227L, 10259L, 10289L, 10322L, 10351L, 10385L, 10413L, 10446L, 10475L, 10508L, 10537L, 10570L, 10599L, 10632L, 10661L, 10695L, 10723L, 10757L, 10785L, 10818L, 10847L, 10880L, 10909L, 10942L, 10972L, 11005L, 11034L, 11067L, 11096L, 11129L, 11158L, 11190L, 11221L, 11252L, 11283L, 11314L, 11345L, 11377L, 11407L, 11439L, 11469L, 11500L, 11531L, 11562L, 11593L, 11624L, 11655L, 11687L, 11717L, 11749L, 11779L, 11811L, 11841L, 11872L, 11903L, 11934L, 11965L, 11996L, 12027L, 12059L, 12089L, 12121L, 12151L, 12182L, 12211L, 12242L, 12271L, 12302L, 12331L, 12362L, 12391L, 12423L, 12451L, 12483L, 12511L, 12542L, 12571L, 12602L, 12631L, 12662L, 12691L, 12723L, 12751L, 12783L, 12811L, 12843L, 12871L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Chisinau" rownames(res) <- NULL tzdb_cache[["Chisinau"]] <- res res } "Dublin" <- function() { if(!is.null(tzdb_cache[["Dublin"]])) return(tzdb_cache[["Dublin"]]) ind <- c(45L, 260L, 280L, 302L, 307L, 327L, 351L, 379L, 407L, 450L, 477L, 496L, 518L, 533L, 552L, 561L, 573L, 588L, 623L, 639L, 655L, 664L, 680L, 687L, 704L, 716L, 733L, 745L, 760L, 771L, 796L, 818L, 841L, 862L, 883L, 909L, 929L, 943L, 963L, 980L, 1000L, 1016L, 1033L, 1053L, 1078L, 1097L, 1120L, 1141L, 1174L, 1183L, 1621L, 1635L, 1682L, 1697L, 1732L, 1742L, 1781L, 1800L, 1836L, 1857L, 1888L, 1909L, 1934L, 1956L, 1972L, 1990L, 2012L, 2027L, 2053L, 2071L, 2094L, 2114L, 2141L, 2160L, 2179L, 2197L, 2221L, 2244L, 2266L, 2282L, 2312L, 2322L, 2345L, 2356L, 2381L, 2405L, 2431L, 2448L, 2483L, 2502L, 2528L, 2547L, 2581L, 2621L, 2762L, 2782L, 2818L, 2836L, 2873L, 2912L, 2960L, 2995L, 3042L, 3066L, 3114L, 3143L, 3199L, 3229L, 3289L, 3316L, 3381L, 3404L, 3468L, 3499L, 3562L, 3596L, 3661L, 3701L, 3769L, 3810L, 3883L, 3927L, 3990L, 4050L, 4117L, 4167L, 4239L, 4299L, 4366L, 4427L, 4495L, 4554L, 4618L, 4676L, 4758L, 4831L, 4904L, 4962L, 5027L, 5081L, 5145L, 5199L, 5263L, 5319L, 5388L, 5439L, 5507L, 5556L, 5621L, 5670L, 5735L, 5789L, 5857L, 5908L, 5981L, 6035L, 6101L, 6154L, 6219L, 6270L, 6343L, 6395L, 6464L, 6509L, 6579L, 6641L, 6693L, 6755L, 6816L, 6879L, 6935L, 6999L, 7059L, 7111L, 7166L, 7207L, 7255L, 7298L, 7341L, 7386L, 7444L, 7495L, 7535L, 7585L, 7636L, 7679L, 7722L, 7765L, 7806L, 7854L, 7892L, 7932L, 7969L, 8011L, 8048L, 8084L, 8119L, 8155L, 8185L, 8218L, 8247L, 8280L, 8309L, 8343L, 8371L, 8404L, 8433L, 8466L, 8495L, 8528L, 8557L, 8591L, 8619L, 8653L, 8681L, 8714L, 8743L, 8776L, 8805L, 8838L, 8867L, 8900L, 8929L, 8963L, 8992L, 9025L, 9054L, 9086L, 9116L, 9148L, 9179L, 9210L, 9241L, 9273L, 9303L, 9335L, 9365L, 9397L, 9427L, 9458L, 9489L, 9520L, 9551L, 9582L, 9613L, 9645L, 9675L, 9707L, 9737L, 9768L, 9799L, 9830L, 9861L, 9892L, 9923L, 9955L, 9985L, 10017L, 10047L, 10079L, 10109L, 10140L, 10171L, 10203L, 10233L, 10265L, 10295L, 10328L, 10357L, 10391L, 10419L, 10452L, 10481L, 10514L, 10543L, 10576L, 10605L, 10638L, 10667L, 10701L, 10729L, 10763L, 10791L, 10824L, 10853L, 10886L, 10915L, 10948L, 10978L, 11011L, 11040L, 11073L, 11102L, 11135L, 11164L, 11196L, 11227L, 11258L, 11289L, 11320L, 11351L, 11383L, 11413L, 11445L, 11475L, 11506L, 11537L, 11568L, 11599L, 11630L, 11661L, 11693L, 11723L, 11755L, 11785L, 11817L, 11847L, 11878L, 11909L, 11940L, 11971L, 12002L, 12033L, 12065L, 12095L, 12127L, 12157L, 12188L, 12217L, 12248L, 12277L, 12308L, 12337L, 12368L, 12397L, 12429L, 12457L, 12489L, 12517L, 12548L, 12577L, 12608L, 12637L, 12668L, 12697L, 12729L, 12757L, 12789L, 12817L, 12849L, 12877L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Dublin" rownames(res) <- NULL tzdb_cache[["Dublin"]] <- res res } "Gibraltar" <- function() { if(!is.null(tzdb_cache[["Gibraltar"]])) return(tzdb_cache[["Gibraltar"]]) ind <- c(44L, 259L, 279L, 302L, 307L, 327L, 351L, 379L, 407L, 450L, 477L, 496L, 518L, 534L, 552L, 562L, 573L, 589L, 623L, 640L, 655L, 665L, 680L, 688L, 704L, 717L, 733L, 746L, 760L, 772L, 796L, 819L, 841L, 863L, 883L, 910L, 929L, 944L, 963L, 981L, 1000L, 1017L, 1033L, 1054L, 1078L, 1098L, 1120L, 1142L, 1174L, 1184L, 1256L, 1270L, 1327L, 1345L, 1392L, 1403L, 1439L, 1461L, 1486L, 1505L, 1551L, 1583L, 1621L, 1636L, 1645L, 1663L, 1682L, 1687L, 1732L, 1743L, 1781L, 1801L, 1836L, 1858L, 1888L, 1910L, 1934L, 1957L, 1972L, 1991L, 2012L, 2028L, 2053L, 2072L, 2094L, 2115L, 3595L, 3639L, 3700L, 3746L, 3809L, 3865L, 3925L, 3973L, 4045L, 4093L, 4162L, 4216L, 4294L, 4347L, 4422L, 4473L, 4549L, 4599L, 4671L, 4731L, 4826L, 4880L, 4957L, 5009L, 5076L, 5128L, 5194L, 5247L, 5313L, 5382L, 5434L, 5502L, 5551L, 5616L, 5665L, 5730L, 5784L, 5852L, 5903L, 5976L, 6030L, 6096L, 6149L, 6214L, 6265L, 6338L, 6389L, 6458L, 6503L, 6573L, 6635L, 6687L, 6749L, 6810L, 6873L, 6929L, 6993L, 7053L, 7105L, 7160L, 7201L, 7249L, 7292L, 7335L, 7380L, 7438L, 7489L, 7529L, 7579L, 7630L, 7673L, 7716L, 7759L, 7800L, 7848L, 7886L, 7926L, 7963L, 8005L, 8042L, 8078L, 8113L, 8149L, 8180L, 8213L, 8242L, 8275L, 8304L, 8338L, 8366L, 8399L, 8428L, 8461L, 8490L, 8523L, 8552L, 8586L, 8614L, 8648L, 8676L, 8709L, 8738L, 8771L, 8800L, 8833L, 8862L, 8895L, 8924L, 8958L, 8987L, 9020L, 9049L, 9081L, 9111L, 9143L, 9174L, 9205L, 9236L, 9268L, 9298L, 9330L, 9360L, 9392L, 9422L, 9453L, 9484L, 9515L, 9546L, 9577L, 9608L, 9640L, 9670L, 9702L, 9732L, 9763L, 9794L, 9825L, 9856L, 9887L, 9918L, 9950L, 9980L, 10012L, 10042L, 10074L, 10104L, 10135L, 10166L, 10198L, 10228L, 10260L, 10290L, 10323L, 10352L, 10386L, 10414L, 10447L, 10476L, 10509L, 10538L, 10571L, 10600L, 10633L, 10662L, 10696L, 10724L, 10758L, 10786L, 10819L, 10848L, 10881L, 10910L, 10943L, 10973L, 11006L, 11035L, 11068L, 11097L, 11130L, 11159L, 11191L, 11222L, 11253L, 11284L, 11315L, 11346L, 11378L, 11408L, 11440L, 11470L, 11501L, 11532L, 11563L, 11594L, 11625L, 11656L, 11688L, 11718L, 11750L, 11780L, 11812L, 11842L, 11873L, 11904L, 11935L, 11966L, 11997L, 12028L, 12060L, 12090L, 12122L, 12152L, 12183L, 12212L, 12243L, 12272L, 12303L, 12332L, 12363L, 12392L, 12424L, 12452L, 12484L, 12512L, 12543L, 12572L, 12603L, 12632L, 12663L, 12692L, 12724L, 12752L, 12784L, 12812L, 12844L, 12872L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Gibraltar" rownames(res) <- NULL tzdb_cache[["Gibraltar"]] <- res res } "Helsinki" <- function() { if(!is.null(tzdb_cache[["Helsinki"]])) return(tzdb_cache[["Helsinki"]]) ind <- c(21L, 500L, 1326L, 1363L, 3493L, 3534L, 3589L, 3633L, 3699L, 3745L, 3808L, 3864L, 3926L, 3974L, 4049L, 4097L, 4166L, 4220L, 4298L, 4351L, 4426L, 4477L, 4553L, 4603L, 4675L, 4735L, 4830L, 4884L, 4961L, 5013L, 5080L, 5132L, 5198L, 5251L, 5318L, 5387L, 5438L, 5506L, 5555L, 5619L, 5668L, 5733L, 5787L, 5855L, 5906L, 5979L, 6033L, 6099L, 6152L, 6217L, 6268L, 6341L, 6393L, 6462L, 6507L, 6577L, 6639L, 6691L, 6753L, 6814L, 6877L, 6933L, 6997L, 7057L, 7109L, 7164L, 7205L, 7253L, 7296L, 7339L, 7384L, 7442L, 7493L, 7533L, 7583L, 7634L, 7677L, 7720L, 7763L, 7804L, 7852L, 7890L, 7930L, 7967L, 8009L, 8046L, 8082L, 8117L, 8153L, 8183L, 8216L, 8245L, 8278L, 8307L, 8341L, 8369L, 8402L, 8431L, 8464L, 8493L, 8526L, 8555L, 8589L, 8617L, 8651L, 8679L, 8712L, 8741L, 8774L, 8803L, 8836L, 8865L, 8898L, 8927L, 8961L, 8990L, 9023L, 9052L, 9084L, 9114L, 9146L, 9177L, 9208L, 9239L, 9271L, 9301L, 9333L, 9363L, 9395L, 9425L, 9456L, 9487L, 9518L, 9549L, 9580L, 9611L, 9643L, 9673L, 9705L, 9735L, 9766L, 9797L, 9828L, 9859L, 9890L, 9921L, 9953L, 9983L, 10015L, 10045L, 10077L, 10107L, 10138L, 10169L, 10201L, 10231L, 10263L, 10293L, 10326L, 10355L, 10389L, 10417L, 10450L, 10479L, 10512L, 10541L, 10574L, 10603L, 10636L, 10665L, 10699L, 10727L, 10761L, 10789L, 10822L, 10851L, 10884L, 10913L, 10946L, 10976L, 11009L, 11038L, 11071L, 11100L, 11133L, 11162L, 11194L, 11225L, 11256L, 11287L, 11318L, 11349L, 11381L, 11411L, 11443L, 11473L, 11504L, 11535L, 11566L, 11597L, 11628L, 11659L, 11691L, 11721L, 11753L, 11783L, 11815L, 11845L, 11876L, 11907L, 11938L, 11969L, 12000L, 12031L, 12063L, 12093L, 12125L, 12155L, 12186L, 12215L, 12246L, 12275L, 12306L, 12335L, 12366L, 12395L, 12427L, 12455L, 12487L, 12515L, 12546L, 12575L, 12606L, 12635L, 12666L, 12695L, 12727L, 12755L, 12787L, 12815L, 12847L, 12875L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Helsinki" rownames(res) <- NULL tzdb_cache[["Helsinki"]] <- res res } "Istanbul" <- function() { if(!is.null(tzdb_cache[["Istanbul"]])) return(tzdb_cache[["Istanbul"]]) ind <- c(35L, 198L, 257L, 276L, 449L, 476L, 495L, 517L, 531L, 550L, 621L, 627L, 643L, 652L, 1208L, 1225L, 1236L, 1277L, 1325L, 1552L, 1600L, 1615L, 1648L, 1673L, 1695L, 1724L, 1748L, 1771L, 1797L, 1833L, 1859L, 1882L, 2337L, 2387L, 2419L, 2424L, 2857L, 2886L, 2915L, 2975L, 2997L, 3055L, 3065L, 3120L, 3150L, 3196L, 3261L, 3735L, 3764L, 3896L, 3935L, 3951L, 4042L, 4090L, 4159L, 4213L, 4292L, 4344L, 4419L, 4471L, 4547L, 4596L, 4668L, 4727L, 4823L, 4877L, 4954L, 5006L, 5056L, 5125L, 5191L, 5244L, 5310L, 5379L, 5430L, 5498L, 5547L, 5612L, 5661L, 5726L, 5780L, 5848L, 5899L, 5972L, 6026L, 6092L, 6145L, 6210L, 6261L, 6334L, 6385L, 6454L, 6499L, 6569L, 6639L, 6691L, 6753L, 6814L, 6877L, 6933L, 6997L, 7057L, 7113L, 7164L, 7205L, 7253L, 7296L, 7339L, 7389L, 7442L, 7493L, 7553L, 7583L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Istanbul" rownames(res) <- NULL tzdb_cache[["Istanbul"]] <- res res } "Kaliningrad" <- function() { if(!is.null(tzdb_cache[["Kaliningrad"]])) return(tzdb_cache[["Kaliningrad"]]) ind <- c(99L, 256L, 278L, 304L, 306L, 341L, 348L, 1191L, 1372L, 1387L, 1415L, 1441L, 1465L, 1489L, 1498L, 1560L, 1576L, 3513L, 3551L, 3610L, 3651L, 3716L, 3759L, 3823L, 3858L, 3919L, 3967L, 4041L, 4089L, 4158L, 4212L, 4291L, 4419L, 4472L, 4548L, 4598L, 4670L, 4728L, 4825L, 4879L, 4956L, 5008L, 5075L, 5127L, 5193L, 5246L, 5312L, 5381L, 5433L, 5501L, 5550L, 5615L, 5664L, 5729L, 5783L, 5851L, 5902L, 5975L, 6029L, 6095L, 6148L, 6213L, 6264L, 6337L, 6388L, 6457L, 6502L, 6572L, 6634L, 6686L, 6748L, 6809L, 6872L, 6928L, 6992L, 7052L, 7104L, 7435L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Kaliningrad" rownames(res) <- NULL tzdb_cache[["Kaliningrad"]] <- res res } "Kirov" <- function() { if(!is.null(tzdb_cache[["Kirov"]])) return(tzdb_cache[["Kirov"]]) ind <- c(398L, 788L, 3512L, 3550L, 3609L, 3649L, 3715L, 3757L, 3821L, 3857L, 3917L, 3966L, 4039L, 4088L, 4156L, 4211L, 4289L, 4414L, 4469L, 4545L, 4597L, 4820L, 4876L, 4953L, 5005L, 5073L, 5124L, 5190L, 5243L, 5309L, 5378L, 5429L, 5497L, 5546L, 5611L, 5660L, 5725L, 5779L, 5847L, 5898L, 5971L, 6025L, 6091L, 6144L, 6209L, 6260L, 6333L, 6384L, 6453L, 6498L, 6568L, 6631L, 6683L, 6745L, 6806L, 6869L, 6925L, 6989L, 7049L, 7100L, 7432L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Kirov" rownames(res) <- NULL tzdb_cache[["Kirov"]] <- res res } "Kyiv" <- function() { if(!is.null(tzdb_cache[["Kyiv"]])) return(tzdb_cache[["Kyiv"]]) ind <- c(34L, 616L, 789L, 1276L, 1372L, 1387L, 1415L, 1424L, 3513L, 3551L, 3610L, 3651L, 3716L, 3759L, 3823L, 3858L, 3919L, 3967L, 4041L, 4089L, 4158L, 4212L, 4291L, 4343L, 4418L, 4470L, 4546L, 4580L, 4728L, 4825L, 4879L, 4956L, 5008L, 5075L, 5127L, 5193L, 5246L, 5312L, 5387L, 5438L, 5506L, 5555L, 5619L, 5668L, 5733L, 5787L, 5855L, 5906L, 5979L, 6033L, 6099L, 6152L, 6217L, 6268L, 6341L, 6393L, 6462L, 6507L, 6577L, 6639L, 6691L, 6753L, 6814L, 6877L, 6933L, 6997L, 7057L, 7109L, 7164L, 7205L, 7253L, 7296L, 7339L, 7384L, 7442L, 7493L, 7533L, 7583L, 7634L, 7677L, 7720L, 7763L, 7804L, 7852L, 7890L, 7930L, 7967L, 8009L, 8046L, 8082L, 8117L, 8153L, 8183L, 8216L, 8245L, 8278L, 8307L, 8341L, 8369L, 8402L, 8431L, 8464L, 8493L, 8526L, 8555L, 8589L, 8617L, 8651L, 8679L, 8712L, 8741L, 8774L, 8803L, 8836L, 8865L, 8898L, 8927L, 8961L, 8990L, 9023L, 9052L, 9084L, 9114L, 9146L, 9177L, 9208L, 9239L, 9271L, 9301L, 9333L, 9363L, 9395L, 9425L, 9456L, 9487L, 9518L, 9549L, 9580L, 9611L, 9643L, 9673L, 9705L, 9735L, 9766L, 9797L, 9828L, 9859L, 9890L, 9921L, 9953L, 9983L, 10015L, 10045L, 10077L, 10107L, 10138L, 10169L, 10201L, 10231L, 10263L, 10293L, 10326L, 10355L, 10389L, 10417L, 10450L, 10479L, 10512L, 10541L, 10574L, 10603L, 10636L, 10665L, 10699L, 10727L, 10761L, 10789L, 10822L, 10851L, 10884L, 10913L, 10946L, 10976L, 11009L, 11038L, 11071L, 11100L, 11133L, 11162L, 11194L, 11225L, 11256L, 11287L, 11318L, 11349L, 11381L, 11411L, 11443L, 11473L, 11504L, 11535L, 11566L, 11597L, 11628L, 11659L, 11691L, 11721L, 11753L, 11783L, 11815L, 11845L, 11876L, 11907L, 11938L, 11969L, 12000L, 12031L, 12063L, 12093L, 12125L, 12155L, 12186L, 12215L, 12246L, 12275L, 12306L, 12335L, 12366L, 12395L, 12427L, 12455L, 12487L, 12515L, 12546L, 12575L, 12606L, 12635L, 12666L, 12695L, 12727L, 12755L, 12787L, 12815L, 12847L, 12875L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Kyiv" rownames(res) <- NULL tzdb_cache[["Kyiv"]] <- res res } "Lisbon" <- function() { if(!is.null(tzdb_cache[["Lisbon"]])) return(tzdb_cache[["Lisbon"]]) ind <- c(213L, 263L, 283L, 292L, 312L, 321L, 358L, 372L, 415L, 445L, 472L, 487L, 519L, 590L, 632L, 661L, 676L, 684L, 700L, 712L, 728L, 741L, 755L, 814L, 837L, 858L, 879L, 939L, 959L, 974L, 996L, 1012L, 1029L, 1048L, 1073L, 1089L, 1116L, 1137L, 1169L, 1177L, 1226L, 1245L, 1288L, 1316L, 1330L, 1346L, 1366L, 1377L, 1395L, 1404L, 1417L, 1428L, 1446L, 1455L, 1471L, 1480L, 1495L, 1520L, 1557L, 1577L, 1617L, 1641L, 1676L, 1691L, 1726L, 1744L, 1774L, 1794L, 1830L, 1852L, 1883L, 1905L, 1927L, 1952L, 1973L, 1987L, 2013L, 2024L, 2054L, 2068L, 2095L, 2111L, 2142L, 2157L, 2180L, 2194L, 2222L, 2241L, 2267L, 2284L, 2308L, 2324L, 2341L, 2358L, 2376L, 2407L, 2426L, 2454L, 2476L, 2504L, 3101L, 3146L, 3181L, 3235L, 3274L, 3322L, 3359L, 3409L, 3451L, 3496L, 3538L, 3593L, 3637L, 3703L, 3744L, 3807L, 3863L, 3924L, 3972L, 4048L, 4096L, 4165L, 4219L, 4297L, 4350L, 4425L, 4476L, 4552L, 4602L, 4674L, 4734L, 4880L, 4957L, 5009L, 5076L, 5128L, 5194L, 5317L, 5386L, 5437L, 5505L, 5554L, 5620L, 5669L, 5734L, 5788L, 5856L, 5907L, 5980L, 6034L, 6100L, 6153L, 6218L, 6269L, 6342L, 6394L, 6463L, 6508L, 6578L, 6640L, 6692L, 6754L, 6815L, 6878L, 6934L, 6998L, 7058L, 7110L, 7165L, 7206L, 7254L, 7297L, 7340L, 7385L, 7443L, 7494L, 7534L, 7584L, 7635L, 7678L, 7721L, 7764L, 7805L, 7853L, 7891L, 7931L, 7968L, 8010L, 8047L, 8083L, 8118L, 8154L, 8184L, 8217L, 8246L, 8279L, 8308L, 8342L, 8370L, 8403L, 8432L, 8465L, 8494L, 8527L, 8556L, 8590L, 8618L, 8652L, 8680L, 8713L, 8742L, 8775L, 8804L, 8837L, 8866L, 8899L, 8928L, 8962L, 8991L, 9024L, 9053L, 9085L, 9115L, 9147L, 9178L, 9209L, 9240L, 9272L, 9302L, 9334L, 9364L, 9396L, 9426L, 9457L, 9488L, 9519L, 9550L, 9581L, 9612L, 9644L, 9674L, 9706L, 9736L, 9767L, 9798L, 9829L, 9860L, 9891L, 9922L, 9954L, 9984L, 10016L, 10046L, 10078L, 10108L, 10139L, 10170L, 10202L, 10232L, 10264L, 10294L, 10327L, 10356L, 10390L, 10418L, 10451L, 10480L, 10513L, 10542L, 10575L, 10604L, 10637L, 10666L, 10700L, 10728L, 10762L, 10790L, 10823L, 10852L, 10885L, 10914L, 10947L, 10977L, 11010L, 11039L, 11072L, 11101L, 11134L, 11163L, 11195L, 11226L, 11257L, 11288L, 11319L, 11350L, 11382L, 11412L, 11444L, 11474L, 11505L, 11536L, 11567L, 11598L, 11629L, 11660L, 11692L, 11722L, 11754L, 11784L, 11816L, 11846L, 11877L, 11908L, 11939L, 11970L, 12001L, 12032L, 12064L, 12094L, 12126L, 12156L, 12187L, 12216L, 12247L, 12276L, 12307L, 12336L, 12367L, 12396L, 12428L, 12456L, 12488L, 12516L, 12547L, 12576L, 12607L, 12636L, 12667L, 12696L, 12728L, 12756L, 12788L, 12816L, 12848L, 12876L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Lisbon" rownames(res) <- NULL tzdb_cache[["Lisbon"]] <- res res } "London" <- function() { if(!is.null(tzdb_cache[["London"]])) return(tzdb_cache[["London"]]) ind <- c(5L, 259L, 279L, 302L, 307L, 327L, 351L, 379L, 407L, 450L, 477L, 496L, 518L, 534L, 552L, 562L, 573L, 589L, 623L, 640L, 655L, 665L, 680L, 688L, 704L, 717L, 733L, 746L, 760L, 772L, 796L, 819L, 841L, 863L, 883L, 910L, 929L, 944L, 963L, 981L, 1000L, 1017L, 1033L, 1054L, 1078L, 1098L, 1120L, 1142L, 1174L, 1184L, 1256L, 1270L, 1327L, 1345L, 1392L, 1403L, 1439L, 1461L, 1486L, 1505L, 1551L, 1583L, 1621L, 1636L, 1645L, 1663L, 1682L, 1687L, 1732L, 1743L, 1781L, 1801L, 1836L, 1858L, 1888L, 1910L, 1934L, 1957L, 1972L, 1991L, 2012L, 2028L, 2053L, 2072L, 2094L, 2116L, 2141L, 2161L, 2179L, 2198L, 2221L, 2245L, 2266L, 2283L, 2312L, 2323L, 2345L, 2357L, 2381L, 2406L, 2431L, 2449L, 2483L, 2503L, 2528L, 2548L, 2581L, 2622L, 2763L, 2783L, 2819L, 2837L, 2874L, 2913L, 2961L, 2996L, 3043L, 3067L, 3115L, 3144L, 3200L, 3230L, 3290L, 3317L, 3382L, 3405L, 3469L, 3500L, 3563L, 3597L, 3662L, 3702L, 3770L, 3811L, 3884L, 3928L, 3991L, 4051L, 4118L, 4168L, 4240L, 4300L, 4367L, 4428L, 4496L, 4555L, 4619L, 4677L, 4759L, 4832L, 4905L, 4963L, 5028L, 5082L, 5146L, 5200L, 5264L, 5320L, 5389L, 5440L, 5508L, 5557L, 5622L, 5671L, 5736L, 5790L, 5858L, 5909L, 5982L, 6036L, 6102L, 6155L, 6220L, 6271L, 6344L, 6396L, 6465L, 6510L, 6580L, 6642L, 6694L, 6756L, 6817L, 6880L, 6936L, 7000L, 7060L, 7112L, 7167L, 7208L, 7256L, 7299L, 7342L, 7387L, 7445L, 7496L, 7536L, 7586L, 7637L, 7680L, 7723L, 7766L, 7807L, 7855L, 7893L, 7933L, 7970L, 8012L, 8049L, 8085L, 8120L, 8156L, 8186L, 8219L, 8248L, 8281L, 8310L, 8344L, 8372L, 8405L, 8434L, 8467L, 8496L, 8529L, 8558L, 8592L, 8620L, 8654L, 8682L, 8715L, 8744L, 8777L, 8806L, 8839L, 8868L, 8901L, 8930L, 8964L, 8993L, 9026L, 9055L, 9087L, 9117L, 9149L, 9180L, 9211L, 9242L, 9274L, 9304L, 9336L, 9366L, 9398L, 9428L, 9459L, 9490L, 9521L, 9552L, 9583L, 9614L, 9646L, 9676L, 9708L, 9738L, 9769L, 9800L, 9831L, 9862L, 9893L, 9924L, 9956L, 9986L, 10018L, 10048L, 10080L, 10110L, 10141L, 10172L, 10204L, 10234L, 10266L, 10296L, 10329L, 10358L, 10392L, 10420L, 10453L, 10482L, 10515L, 10544L, 10577L, 10606L, 10639L, 10668L, 10702L, 10730L, 10764L, 10792L, 10825L, 10854L, 10887L, 10916L, 10949L, 10979L, 11012L, 11041L, 11074L, 11103L, 11136L, 11165L, 11197L, 11228L, 11259L, 11290L, 11321L, 11352L, 11384L, 11414L, 11446L, 11476L, 11507L, 11538L, 11569L, 11600L, 11631L, 11662L, 11694L, 11724L, 11756L, 11786L, 11818L, 11848L, 11879L, 11910L, 11941L, 11972L, 12003L, 12034L, 12066L, 12096L, 12128L, 12158L, 12189L, 12218L, 12249L, 12278L, 12309L, 12338L, 12369L, 12398L, 12430L, 12458L, 12490L, 12518L, 12549L, 12578L, 12609L, 12638L, 12669L, 12698L, 12730L, 12758L, 12790L, 12818L, 12850L, 12878L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "London" rownames(res) <- NULL tzdb_cache[["London"]] <- res res } "Madrid" <- function() { if(!is.null(tzdb_cache[["Madrid"]])) return(tzdb_cache[["Madrid"]]) ind <- c(161L, 342L, 356L, 387L, 413L, 590L, 630L, 661L, 677L, 684L, 701L, 713L, 729L, 741L, 757L, 1062L, 1075L, 1096L, 1103L, 1123L, 1163L, 1187L, 1336L, 1354L, 1396L, 1412L, 1445L, 1463L, 1491L, 1539L, 1580L, 1607L, 1757L, 1772L, 2918L, 2947L, 3002L, 3031L, 3068L, 3100L, 3149L, 3180L, 3239L, 3277L, 3325L, 3360L, 3419L, 3452L, 3498L, 3540L, 3595L, 3639L, 3700L, 3746L, 3809L, 3865L, 3925L, 3973L, 4045L, 4093L, 4162L, 4216L, 4294L, 4347L, 4422L, 4473L, 4549L, 4599L, 4671L, 4731L, 4826L, 4880L, 4957L, 5009L, 5076L, 5128L, 5194L, 5247L, 5313L, 5382L, 5434L, 5502L, 5551L, 5616L, 5665L, 5730L, 5784L, 5852L, 5903L, 5976L, 6030L, 6096L, 6149L, 6214L, 6265L, 6338L, 6389L, 6458L, 6503L, 6573L, 6635L, 6687L, 6749L, 6810L, 6873L, 6929L, 6993L, 7053L, 7105L, 7160L, 7201L, 7249L, 7292L, 7335L, 7380L, 7438L, 7489L, 7529L, 7579L, 7630L, 7673L, 7716L, 7759L, 7800L, 7848L, 7886L, 7926L, 7963L, 8005L, 8042L, 8078L, 8113L, 8149L, 8180L, 8213L, 8242L, 8275L, 8304L, 8338L, 8366L, 8399L, 8428L, 8461L, 8490L, 8523L, 8552L, 8586L, 8614L, 8648L, 8676L, 8709L, 8738L, 8771L, 8800L, 8833L, 8862L, 8895L, 8924L, 8958L, 8987L, 9020L, 9049L, 9081L, 9111L, 9143L, 9174L, 9205L, 9236L, 9268L, 9298L, 9330L, 9360L, 9392L, 9422L, 9453L, 9484L, 9515L, 9546L, 9577L, 9608L, 9640L, 9670L, 9702L, 9732L, 9763L, 9794L, 9825L, 9856L, 9887L, 9918L, 9950L, 9980L, 10012L, 10042L, 10074L, 10104L, 10135L, 10166L, 10198L, 10228L, 10260L, 10290L, 10323L, 10352L, 10386L, 10414L, 10447L, 10476L, 10509L, 10538L, 10571L, 10600L, 10633L, 10662L, 10696L, 10724L, 10758L, 10786L, 10819L, 10848L, 10881L, 10910L, 10943L, 10973L, 11006L, 11035L, 11068L, 11097L, 11130L, 11159L, 11191L, 11222L, 11253L, 11284L, 11315L, 11346L, 11378L, 11408L, 11440L, 11470L, 11501L, 11532L, 11563L, 11594L, 11625L, 11656L, 11688L, 11718L, 11750L, 11780L, 11812L, 11842L, 11873L, 11904L, 11935L, 11966L, 11997L, 12028L, 12060L, 12090L, 12122L, 12152L, 12183L, 12212L, 12243L, 12272L, 12303L, 12332L, 12363L, 12392L, 12424L, 12452L, 12484L, 12512L, 12543L, 12572L, 12603L, 12632L, 12663L, 12692L, 12724L, 12752L, 12784L, 12812L, 12844L, 12872L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Madrid" rownames(res) <- NULL tzdb_cache[["Madrid"]] <- res res } "Malta" <- function() { if(!is.null(tzdb_cache[["Malta"]])) return(tzdb_cache[["Malta"]]) ind <- c(103L, 261L, 277L, 300L, 309L, 326L, 354L, 378L, 409L, 448L, 466L, 1205L, 1372L, 1387L, 1415L, 1440L, 1460L, 1485L, 1531L, 1574L, 1620L, 1634L, 1674L, 1686L, 1725L, 2518L, 2520L, 2563L, 2570L, 2611L, 2614L, 2655L, 2658L, 2703L, 2706L, 2749L, 2751L, 2801L, 2807L, 2838L, 2860L, 2919L, 2940L, 3006L, 3023L, 3074L, 3099L, 3153L, 3177L, 3240L, 3266L, 3328L, 3352L, 3411L, 3442L, 3498L, 3540L, 3595L, 3639L, 3700L, 3746L, 3809L, 3865L, 3925L, 3973L, 4045L, 4093L, 4162L, 4216L, 4294L, 4347L, 4422L, 4473L, 4549L, 4599L, 4671L, 4731L, 4826L, 4880L, 4957L, 5009L, 5076L, 5128L, 5194L, 5247L, 5313L, 5382L, 5434L, 5502L, 5551L, 5616L, 5665L, 5730L, 5784L, 5852L, 5903L, 5976L, 6030L, 6096L, 6149L, 6214L, 6265L, 6338L, 6389L, 6458L, 6503L, 6573L, 6635L, 6687L, 6749L, 6810L, 6873L, 6929L, 6993L, 7053L, 7105L, 7160L, 7201L, 7249L, 7292L, 7335L, 7380L, 7438L, 7489L, 7529L, 7579L, 7630L, 7673L, 7716L, 7759L, 7800L, 7848L, 7886L, 7926L, 7963L, 8005L, 8042L, 8078L, 8113L, 8149L, 8180L, 8213L, 8242L, 8275L, 8304L, 8338L, 8366L, 8399L, 8428L, 8461L, 8490L, 8523L, 8552L, 8586L, 8614L, 8648L, 8676L, 8709L, 8738L, 8771L, 8800L, 8833L, 8862L, 8895L, 8924L, 8958L, 8987L, 9020L, 9049L, 9081L, 9111L, 9143L, 9174L, 9205L, 9236L, 9268L, 9298L, 9330L, 9360L, 9392L, 9422L, 9453L, 9484L, 9515L, 9546L, 9577L, 9608L, 9640L, 9670L, 9702L, 9732L, 9763L, 9794L, 9825L, 9856L, 9887L, 9918L, 9950L, 9980L, 10012L, 10042L, 10074L, 10104L, 10135L, 10166L, 10198L, 10228L, 10260L, 10290L, 10323L, 10352L, 10386L, 10414L, 10447L, 10476L, 10509L, 10538L, 10571L, 10600L, 10633L, 10662L, 10696L, 10724L, 10758L, 10786L, 10819L, 10848L, 10881L, 10910L, 10943L, 10973L, 11006L, 11035L, 11068L, 11097L, 11130L, 11159L, 11191L, 11222L, 11253L, 11284L, 11315L, 11346L, 11378L, 11408L, 11440L, 11470L, 11501L, 11532L, 11563L, 11594L, 11625L, 11656L, 11688L, 11718L, 11750L, 11780L, 11812L, 11842L, 11873L, 11904L, 11935L, 11966L, 11997L, 12028L, 12060L, 12090L, 12122L, 12152L, 12183L, 12212L, 12243L, 12272L, 12303L, 12332L, 12363L, 12392L, 12424L, 12452L, 12484L, 12512L, 12543L, 12572L, 12603L, 12632L, 12663L, 12692L, 12724L, 12752L, 12784L, 12812L, 12844L, 12872L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Malta" rownames(res) <- NULL tzdb_cache[["Malta"]] <- res res } "Minsk" <- function() { if(!is.null(tzdb_cache[["Minsk"]])) return(tzdb_cache[["Minsk"]]) ind <- c(37L, 617L, 789L, 1266L, 1372L, 1387L, 1415L, 1441L, 1450L, 3513L, 3551L, 3610L, 3651L, 3716L, 3759L, 3823L, 3858L, 3919L, 3967L, 4041L, 4089L, 4158L, 4212L, 4291L, 4343L, 4418L, 4668L, 4728L, 4825L, 4879L, 4956L, 5008L, 5075L, 5127L, 5193L, 5246L, 5312L, 5381L, 5433L, 5501L, 5550L, 5615L, 5664L, 5729L, 5783L, 5851L, 5902L, 5975L, 6029L, 6095L, 6148L, 6213L, 6264L, 6337L, 6388L, 6457L, 6502L, 6572L, 6634L, 6686L, 6748L, 6809L, 6872L, 6928L, 6992L, 7052L, 7104L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Minsk" rownames(res) <- NULL tzdb_cache[["Minsk"]] <- res res } "Moscow" <- function() { if(!is.null(tzdb_cache[["Moscow"]])) return(tzdb_cache[["Moscow"]]) ind <- c(30L, 268L, 305L, 316L, 344L, 346L, 396L, 399L, 403L, 486L, 491L, 508L, 514L, 548L, 789L, 3513L, 3551L, 3610L, 3651L, 3716L, 3759L, 3823L, 3858L, 3919L, 3967L, 4041L, 4089L, 4158L, 4212L, 4291L, 4343L, 4418L, 4470L, 4546L, 4668L, 4728L, 4784L, 4824L, 4878L, 4955L, 5007L, 5074L, 5126L, 5192L, 5245L, 5311L, 5380L, 5431L, 5499L, 5548L, 5613L, 5662L, 5727L, 5781L, 5849L, 5900L, 5973L, 6027L, 6093L, 6146L, 6211L, 6262L, 6335L, 6386L, 6455L, 6500L, 6570L, 6632L, 6684L, 6746L, 6807L, 6870L, 6926L, 6990L, 7050L, 7101L, 7433L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Moscow" rownames(res) <- NULL tzdb_cache[["Moscow"]] <- res res } "Paris" <- function() { if(!is.null(tzdb_cache[["Paris"]])) return(tzdb_cache[["Paris"]]) ind <- c(91L, 202L, 262L, 282L, 299L, 311L, 325L, 355L, 377L, 412L, 443L, 475L, 490L, 522L, 532L, 551L, 570L, 580L, 586L, 629L, 638L, 654L, 661L, 676L, 684L, 700L, 712L, 728L, 741L, 755L, 769L, 794L, 814L, 837L, 858L, 879L, 901L, 927L, 939L, 959L, 974L, 996L, 1012L, 1029L, 1048L, 1073L, 1089L, 1116L, 1137L, 1169L, 1182L, 1204L, 1372L, 1387L, 1415L, 1454L, 1468L, 1487L, 1534L, 3069L, 3100L, 3152L, 3184L, 3239L, 3277L, 3325L, 3360L, 3419L, 3452L, 3498L, 3540L, 3595L, 3639L, 3700L, 3746L, 3809L, 3865L, 3925L, 3973L, 4045L, 4093L, 4162L, 4216L, 4294L, 4347L, 4422L, 4473L, 4549L, 4599L, 4671L, 4731L, 4826L, 4880L, 4957L, 5009L, 5076L, 5128L, 5194L, 5247L, 5313L, 5382L, 5434L, 5502L, 5551L, 5616L, 5665L, 5730L, 5784L, 5852L, 5903L, 5976L, 6030L, 6096L, 6149L, 6214L, 6265L, 6338L, 6389L, 6458L, 6503L, 6573L, 6635L, 6687L, 6749L, 6810L, 6873L, 6929L, 6993L, 7053L, 7105L, 7160L, 7201L, 7249L, 7292L, 7335L, 7380L, 7438L, 7489L, 7529L, 7579L, 7630L, 7673L, 7716L, 7759L, 7800L, 7848L, 7886L, 7926L, 7963L, 8005L, 8042L, 8078L, 8113L, 8149L, 8180L, 8213L, 8242L, 8275L, 8304L, 8338L, 8366L, 8399L, 8428L, 8461L, 8490L, 8523L, 8552L, 8586L, 8614L, 8648L, 8676L, 8709L, 8738L, 8771L, 8800L, 8833L, 8862L, 8895L, 8924L, 8958L, 8987L, 9020L, 9049L, 9081L, 9111L, 9143L, 9174L, 9205L, 9236L, 9268L, 9298L, 9330L, 9360L, 9392L, 9422L, 9453L, 9484L, 9515L, 9546L, 9577L, 9608L, 9640L, 9670L, 9702L, 9732L, 9763L, 9794L, 9825L, 9856L, 9887L, 9918L, 9950L, 9980L, 10012L, 10042L, 10074L, 10104L, 10135L, 10166L, 10198L, 10228L, 10260L, 10290L, 10323L, 10352L, 10386L, 10414L, 10447L, 10476L, 10509L, 10538L, 10571L, 10600L, 10633L, 10662L, 10696L, 10724L, 10758L, 10786L, 10819L, 10848L, 10881L, 10910L, 10943L, 10973L, 11006L, 11035L, 11068L, 11097L, 11130L, 11159L, 11191L, 11222L, 11253L, 11284L, 11315L, 11346L, 11378L, 11408L, 11440L, 11470L, 11501L, 11532L, 11563L, 11594L, 11625L, 11656L, 11688L, 11718L, 11750L, 11780L, 11812L, 11842L, 11873L, 11904L, 11935L, 11966L, 11997L, 12028L, 12060L, 12090L, 12122L, 12152L, 12183L, 12212L, 12243L, 12272L, 12303L, 12332L, 12363L, 12392L, 12424L, 12452L, 12484L, 12512L, 12543L, 12572L, 12603L, 12632L, 12663L, 12692L, 12724L, 12752L, 12784L, 12812L, 12844L, 12872L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Paris" rownames(res) <- NULL tzdb_cache[["Paris"]] <- res res } "Prague" <- function() { if(!is.null(tzdb_cache[["Prague"]])) return(tzdb_cache[["Prague"]]) ind <- c(6L, 93L, 256L, 278L, 304L, 306L, 341L, 348L, 1191L, 1372L, 1387L, 1415L, 1441L, 1465L, 1485L, 1549L, 1595L, 1620L, 1631L, 1632L, 1649L, 1675L, 1696L, 1725L, 1747L, 1773L, 3325L, 3360L, 3419L, 3452L, 3498L, 3540L, 3595L, 3639L, 3700L, 3746L, 3809L, 3865L, 3925L, 3973L, 4045L, 4093L, 4162L, 4216L, 4294L, 4347L, 4422L, 4473L, 4549L, 4599L, 4671L, 4731L, 4826L, 4880L, 4957L, 5009L, 5076L, 5128L, 5194L, 5247L, 5313L, 5382L, 5434L, 5502L, 5551L, 5616L, 5665L, 5730L, 5784L, 5852L, 5903L, 5976L, 6030L, 6096L, 6149L, 6214L, 6265L, 6338L, 6389L, 6458L, 6503L, 6573L, 6635L, 6687L, 6749L, 6810L, 6873L, 6929L, 6993L, 7053L, 7105L, 7160L, 7201L, 7249L, 7292L, 7335L, 7380L, 7438L, 7489L, 7529L, 7579L, 7630L, 7673L, 7716L, 7759L, 7800L, 7848L, 7886L, 7926L, 7963L, 8005L, 8042L, 8078L, 8113L, 8149L, 8180L, 8213L, 8242L, 8275L, 8304L, 8338L, 8366L, 8399L, 8428L, 8461L, 8490L, 8523L, 8552L, 8586L, 8614L, 8648L, 8676L, 8709L, 8738L, 8771L, 8800L, 8833L, 8862L, 8895L, 8924L, 8958L, 8987L, 9020L, 9049L, 9081L, 9111L, 9143L, 9174L, 9205L, 9236L, 9268L, 9298L, 9330L, 9360L, 9392L, 9422L, 9453L, 9484L, 9515L, 9546L, 9577L, 9608L, 9640L, 9670L, 9702L, 9732L, 9763L, 9794L, 9825L, 9856L, 9887L, 9918L, 9950L, 9980L, 10012L, 10042L, 10074L, 10104L, 10135L, 10166L, 10198L, 10228L, 10260L, 10290L, 10323L, 10352L, 10386L, 10414L, 10447L, 10476L, 10509L, 10538L, 10571L, 10600L, 10633L, 10662L, 10696L, 10724L, 10758L, 10786L, 10819L, 10848L, 10881L, 10910L, 10943L, 10973L, 11006L, 11035L, 11068L, 11097L, 11130L, 11159L, 11191L, 11222L, 11253L, 11284L, 11315L, 11346L, 11378L, 11408L, 11440L, 11470L, 11501L, 11532L, 11563L, 11594L, 11625L, 11656L, 11688L, 11718L, 11750L, 11780L, 11812L, 11842L, 11873L, 11904L, 11935L, 11966L, 11997L, 12028L, 12060L, 12090L, 12122L, 12152L, 12183L, 12212L, 12243L, 12272L, 12303L, 12332L, 12363L, 12392L, 12424L, 12452L, 12484L, 12512L, 12543L, 12572L, 12603L, 12632L, 12663L, 12692L, 12724L, 12752L, 12784L, 12812L, 12844L, 12872L ) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Prague" rownames(res) <- NULL tzdb_cache[["Prague"]] <- res res } "Riga" <- function() { if(!is.null(tzdb_cache[["Riga"]])) return(tzdb_cache[["Riga"]]) ind <- c(40L, 340L, 347L, 386L, 393L, 670L, 1212L, 1267L, 1372L, 1387L, 1415L, 1441L, 1465L, 1470L, 3513L, 3551L, 3610L, 3651L, 3716L, 3759L, 3823L, 3858L, 3919L, 3967L, 4041L, 4089L, 4158L, 4212L, 4291L, 4419L, 4472L, 4548L, 4598L, 4670L, 4728L, 4825L, 4879L, 4956L, 5008L, 5075L, 5127L, 5193L, 5246L, 5312L, 5352L, 5438L, 5506L, 5555L, 5619L, 5668L, 5733L, 5906L, 5979L, 6033L, 6099L, 6152L, 6217L, 6268L, 6341L, 6393L, 6462L, 6507L, 6577L, 6639L, 6691L, 6753L, 6814L, 6877L, 6933L, 6997L, 7057L, 7109L, 7164L, 7205L, 7253L, 7296L, 7339L, 7384L, 7442L, 7493L, 7533L, 7583L, 7634L, 7677L, 7720L, 7763L, 7804L, 7852L, 7890L, 7930L, 7967L, 8009L, 8046L, 8082L, 8117L, 8153L, 8183L, 8216L, 8245L, 8278L, 8307L, 8341L, 8369L, 8402L, 8431L, 8464L, 8493L, 8526L, 8555L, 8589L, 8617L, 8651L, 8679L, 8712L, 8741L, 8774L, 8803L, 8836L, 8865L, 8898L, 8927L, 8961L, 8990L, 9023L, 9052L, 9084L, 9114L, 9146L, 9177L, 9208L, 9239L, 9271L, 9301L, 9333L, 9363L, 9395L, 9425L, 9456L, 9487L, 9518L, 9549L, 9580L, 9611L, 9643L, 9673L, 9705L, 9735L, 9766L, 9797L, 9828L, 9859L, 9890L, 9921L, 9953L, 9983L, 10015L, 10045L, 10077L, 10107L, 10138L, 10169L, 10201L, 10231L, 10263L, 10293L, 10326L, 10355L, 10389L, 10417L, 10450L, 10479L, 10512L, 10541L, 10574L, 10603L, 10636L, 10665L, 10699L, 10727L, 10761L, 10789L, 10822L, 10851L, 10884L, 10913L, 10946L, 10976L, 11009L, 11038L, 11071L, 11100L, 11133L, 11162L, 11194L, 11225L, 11256L, 11287L, 11318L, 11349L, 11381L, 11411L, 11443L, 11473L, 11504L, 11535L, 11566L, 11597L, 11628L, 11659L, 11691L, 11721L, 11753L, 11783L, 11815L, 11845L, 11876L, 11907L, 11938L, 11969L, 12000L, 12031L, 12063L, 12093L, 12125L, 12155L, 12186L, 12215L, 12246L, 12275L, 12306L, 12335L, 12366L, 12395L, 12427L, 12455L, 12487L, 12515L, 12546L, 12575L, 12606L, 12635L, 12666L, 12695L, 12727L, 12755L, 12787L, 12815L, 12847L, 12875L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Riga" rownames(res) <- NULL tzdb_cache[["Riga"]] <- res res } "Rome" <- function() { if(!is.null(tzdb_cache[["Rome"]])) return(tzdb_cache[["Rome"]]) ind <- c(9L, 102L, 261L, 277L, 300L, 309L, 326L, 354L, 378L, 409L, 448L, 466L, 1205L, 1372L, 1387L, 1415L, 1441L, 1460L, 1485L, 1531L, 1574L, 1620L, 1634L, 1674L, 1686L, 1725L, 2518L, 2520L, 2563L, 2570L, 2611L, 2614L, 2655L, 2658L, 2703L, 2706L, 2749L, 2751L, 2801L, 2807L, 2858L, 2861L, 2933L, 2941L, 3019L, 3024L, 3095L, 3100L, 3173L, 3180L, 3258L, 3272L, 3348L, 3357L, 3419L, 3452L, 3498L, 3540L, 3595L, 3639L, 3700L, 3746L, 3809L, 3865L, 3925L, 3973L, 4045L, 4093L, 4162L, 4216L, 4294L, 4347L, 4422L, 4473L, 4549L, 4599L, 4671L, 4731L, 4826L, 4880L, 4957L, 5009L, 5076L, 5128L, 5194L, 5247L, 5313L, 5382L, 5434L, 5502L, 5551L, 5616L, 5665L, 5730L, 5784L, 5852L, 5903L, 5976L, 6030L, 6096L, 6149L, 6214L, 6265L, 6338L, 6389L, 6458L, 6503L, 6573L, 6635L, 6687L, 6749L, 6810L, 6873L, 6929L, 6993L, 7053L, 7105L, 7160L, 7201L, 7249L, 7292L, 7335L, 7380L, 7438L, 7489L, 7529L, 7579L, 7630L, 7673L, 7716L, 7759L, 7800L, 7848L, 7886L, 7926L, 7963L, 8005L, 8042L, 8078L, 8113L, 8149L, 8180L, 8213L, 8242L, 8275L, 8304L, 8338L, 8366L, 8399L, 8428L, 8461L, 8490L, 8523L, 8552L, 8586L, 8614L, 8648L, 8676L, 8709L, 8738L, 8771L, 8800L, 8833L, 8862L, 8895L, 8924L, 8958L, 8987L, 9020L, 9049L, 9081L, 9111L, 9143L, 9174L, 9205L, 9236L, 9268L, 9298L, 9330L, 9360L, 9392L, 9422L, 9453L, 9484L, 9515L, 9546L, 9577L, 9608L, 9640L, 9670L, 9702L, 9732L, 9763L, 9794L, 9825L, 9856L, 9887L, 9918L, 9950L, 9980L, 10012L, 10042L, 10074L, 10104L, 10135L, 10166L, 10198L, 10228L, 10260L, 10290L, 10323L, 10352L, 10386L, 10414L, 10447L, 10476L, 10509L, 10538L, 10571L, 10600L, 10633L, 10662L, 10696L, 10724L, 10758L, 10786L, 10819L, 10848L, 10881L, 10910L, 10943L, 10973L, 11006L, 11035L, 11068L, 11097L, 11130L, 11159L, 11191L, 11222L, 11253L, 11284L, 11315L, 11346L, 11378L, 11408L, 11440L, 11470L, 11501L, 11532L, 11563L, 11594L, 11625L, 11656L, 11688L, 11718L, 11750L, 11780L, 11812L, 11842L, 11873L, 11904L, 11935L, 11966L, 11997L, 12028L, 12060L, 12090L, 12122L, 12152L, 12183L, 12212L, 12243L, 12272L, 12303L, 12332L, 12363L, 12392L, 12424L, 12452L, 12484L, 12512L, 12543L, 12572L, 12603L, 12632L, 12663L, 12692L, 12724L, 12752L, 12784L, 12812L, 12844L, 12872L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Rome" rownames(res) <- NULL tzdb_cache[["Rome"]] <- res res } "Samara" <- function() { if(!is.null(tzdb_cache[["Samara"]])) return(tzdb_cache[["Samara"]]) ind <- c(398L, 788L, 3512L, 3550L, 3609L, 3649L, 3715L, 3757L, 3821L, 3857L, 3917L, 3966L, 4039L, 4088L, 4156L, 4211L, 4289L, 4414L, 4469L, 4545L, 4729L, 4751L, 4821L, 4873L, 4952L, 5003L, 5072L, 5123L, 5188L, 5241L, 5307L, 5377L, 5427L, 5496L, 5544L, 5610L, 5658L, 5724L, 5777L, 5846L, 5896L, 5970L, 6023L, 6090L, 6142L, 6208L, 6258L, 6332L, 6382L, 6452L, 6497L, 6567L, 6630L, 6682L, 6744L, 6804L, 6868L, 6988L, 7049L, 7100L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Samara" rownames(res) <- NULL tzdb_cache[["Samara"]] <- res res } "Saratov" <- function() { if(!is.null(tzdb_cache[["Saratov"]])) return(tzdb_cache[["Saratov"]]) ind <- c(398L, 788L, 3512L, 3550L, 3609L, 3649L, 3715L, 3757L, 3821L, 3857L, 3917L, 3966L, 4039L, 4088L, 4156L, 4288L, 4345L, 4420L, 4469L, 4545L, 4597L, 4820L, 4876L, 4953L, 5005L, 5073L, 5124L, 5190L, 5243L, 5309L, 5378L, 5429L, 5497L, 5546L, 5611L, 5660L, 5725L, 5779L, 5847L, 5898L, 5971L, 6025L, 6091L, 6144L, 6209L, 6260L, 6333L, 6384L, 6453L, 6498L, 6568L, 6631L, 6683L, 6745L, 6806L, 6869L, 6925L, 6989L, 7049L, 7100L, 7432L, 7653L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Saratov" rownames(res) <- NULL tzdb_cache[["Saratov"]] <- res res } "Simferopol" <- function() { if(!is.null(tzdb_cache[["Simferopol"]])) return(tzdb_cache[["Simferopol"]]) ind <- c(33L, 615L, 789L, 1295L, 1372L, 1387L, 1415L, 1441L, 1444L, 3513L, 3551L, 3610L, 3651L, 3716L, 3759L, 3823L, 3858L, 3919L, 3967L, 4041L, 4089L, 4158L, 4212L, 4291L, 4343L, 4418L, 4470L, 4581L, 4825L, 4879L, 4956L, 5008L, 5075L, 5101L, 5126L, 5192L, 5245L, 5306L, 5438L, 5506L, 5555L, 5619L, 5668L, 5733L, 5787L, 5855L, 5906L, 5979L, 6033L, 6099L, 6152L, 6217L, 6268L, 6341L, 6393L, 6462L, 6507L, 6577L, 6639L, 6691L, 6753L, 6814L, 6877L, 6933L, 6997L, 7057L, 7109L, 7164L, 7205L, 7253L, 7296L, 7339L, 7379L, 7433L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Simferopol" rownames(res) <- NULL tzdb_cache[["Simferopol"]] <- res res } "Sofia" <- function() { if(!is.null(tzdb_cache[["Sofia"]])) return(tzdb_cache[["Sofia"]]) ind <- c(41L, 117L, 1372L, 1387L, 1415L, 1441L, 1465L, 1488L, 3320L, 3364L, 3414L, 3456L, 3515L, 3533L, 3615L, 3633L, 3694L, 3740L, 3803L, 3859L, 3920L, 3968L, 4043L, 4091L, 4160L, 4214L, 4293L, 4346L, 4421L, 4472L, 4548L, 4598L, 4666L, 4722L, 4818L, 4872L, 4951L, 5002L, 5071L, 5122L, 5189L, 5240L, 5308L, 5376L, 5438L, 5506L, 5555L, 5619L, 5668L, 5733L, 5787L, 5855L, 5906L, 5979L, 6033L, 6099L, 6152L, 6217L, 6268L, 6341L, 6393L, 6462L, 6507L, 6577L, 6639L, 6691L, 6753L, 6814L, 6877L, 6933L, 6997L, 7057L, 7109L, 7164L, 7205L, 7253L, 7296L, 7339L, 7384L, 7442L, 7493L, 7533L, 7583L, 7634L, 7677L, 7720L, 7763L, 7804L, 7852L, 7890L, 7930L, 7967L, 8009L, 8046L, 8082L, 8117L, 8153L, 8183L, 8216L, 8245L, 8278L, 8307L, 8341L, 8369L, 8402L, 8431L, 8464L, 8493L, 8526L, 8555L, 8589L, 8617L, 8651L, 8679L, 8712L, 8741L, 8774L, 8803L, 8836L, 8865L, 8898L, 8927L, 8961L, 8990L, 9023L, 9052L, 9084L, 9114L, 9146L, 9177L, 9208L, 9239L, 9271L, 9301L, 9333L, 9363L, 9395L, 9425L, 9456L, 9487L, 9518L, 9549L, 9580L, 9611L, 9643L, 9673L, 9705L, 9735L, 9766L, 9797L, 9828L, 9859L, 9890L, 9921L, 9953L, 9983L, 10015L, 10045L, 10077L, 10107L, 10138L, 10169L, 10201L, 10231L, 10263L, 10293L, 10326L, 10355L, 10389L, 10417L, 10450L, 10479L, 10512L, 10541L, 10574L, 10603L, 10636L, 10665L, 10699L, 10727L, 10761L, 10789L, 10822L, 10851L, 10884L, 10913L, 10946L, 10976L, 11009L, 11038L, 11071L, 11100L, 11133L, 11162L, 11194L, 11225L, 11256L, 11287L, 11318L, 11349L, 11381L, 11411L, 11443L, 11473L, 11504L, 11535L, 11566L, 11597L, 11628L, 11659L, 11691L, 11721L, 11753L, 11783L, 11815L, 11845L, 11876L, 11907L, 11938L, 11969L, 12000L, 12031L, 12063L, 12093L, 12125L, 12155L, 12186L, 12215L, 12246L, 12275L, 12306L, 12335L, 12366L, 12395L, 12427L, 12455L, 12487L, 12515L, 12546L, 12575L, 12606L, 12635L, 12666L, 12695L, 12727L, 12755L, 12787L, 12815L, 12847L, 12875L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Sofia" rownames(res) <- NULL tzdb_cache[["Sofia"]] <- res res } "Tallinn" <- function() { if(!is.null(tzdb_cache[["Tallinn"]])) return(tzdb_cache[["Tallinn"]]) ind <- c(39L, 319L, 341L, 348L, 397L, 501L, 1213L, 1274L, 1372L, 1387L, 1415L, 1441L, 1462L, 3513L, 3551L, 3610L, 3651L, 3716L, 3759L, 3823L, 3858L, 3919L, 3967L, 4041L, 4089L, 4158L, 4212L, 4291L, 4419L, 4472L, 4548L, 4598L, 4670L, 4728L, 4825L, 4879L, 4956L, 5008L, 5075L, 5127L, 5193L, 5246L, 5312L, 5381L, 5433L, 5501L, 5550L, 5619L, 5668L, 5733L, 6033L, 6099L, 6152L, 6217L, 6268L, 6341L, 6393L, 6462L, 6507L, 6577L, 6639L, 6691L, 6753L, 6814L, 6877L, 6933L, 6997L, 7057L, 7109L, 7164L, 7205L, 7253L, 7296L, 7339L, 7384L, 7442L, 7493L, 7533L, 7583L, 7634L, 7677L, 7720L, 7763L, 7804L, 7852L, 7890L, 7930L, 7967L, 8009L, 8046L, 8082L, 8117L, 8153L, 8183L, 8216L, 8245L, 8278L, 8307L, 8341L, 8369L, 8402L, 8431L, 8464L, 8493L, 8526L, 8555L, 8589L, 8617L, 8651L, 8679L, 8712L, 8741L, 8774L, 8803L, 8836L, 8865L, 8898L, 8927L, 8961L, 8990L, 9023L, 9052L, 9084L, 9114L, 9146L, 9177L, 9208L, 9239L, 9271L, 9301L, 9333L, 9363L, 9395L, 9425L, 9456L, 9487L, 9518L, 9549L, 9580L, 9611L, 9643L, 9673L, 9705L, 9735L, 9766L, 9797L, 9828L, 9859L, 9890L, 9921L, 9953L, 9983L, 10015L, 10045L, 10077L, 10107L, 10138L, 10169L, 10201L, 10231L, 10263L, 10293L, 10326L, 10355L, 10389L, 10417L, 10450L, 10479L, 10512L, 10541L, 10574L, 10603L, 10636L, 10665L, 10699L, 10727L, 10761L, 10789L, 10822L, 10851L, 10884L, 10913L, 10946L, 10976L, 11009L, 11038L, 11071L, 11100L, 11133L, 11162L, 11194L, 11225L, 11256L, 11287L, 11318L, 11349L, 11381L, 11411L, 11443L, 11473L, 11504L, 11535L, 11566L, 11597L, 11628L, 11659L, 11691L, 11721L, 11753L, 11783L, 11815L, 11845L, 11876L, 11907L, 11938L, 11969L, 12000L, 12031L, 12063L, 12093L, 12125L, 12155L, 12186L, 12215L, 12246L, 12275L, 12306L, 12335L, 12366L, 12395L, 12427L, 12455L, 12487L, 12515L, 12546L, 12575L, 12606L, 12635L, 12666L, 12695L, 12727L, 12755L, 12787L, 12815L, 12847L, 12875L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Tallinn" rownames(res) <- NULL tzdb_cache[["Tallinn"]] <- res res } "Tirane" <- function() { if(!is.null(tzdb_cache[["Tirane"]])) return(tzdb_cache[["Tirane"]]) ind <- c(228L, 1206L, 1372L, 1387L, 1393L, 2932L, 2946L, 3017L, 3030L, 3091L, 3106L, 3172L, 3191L, 3256L, 3271L, 3343L, 3356L, 3437L, 3459L, 3517L, 3531L, 3628L, 3655L, 3720L, 3760L, 3824L, 3865L, 3925L, 3973L, 4045L, 4093L, 4162L, 4216L, 4294L, 4347L, 4422L, 4473L, 4549L, 4599L, 4671L, 4731L, 4826L, 4880L, 4957L, 5009L, 5076L, 5128L, 5194L, 5247L, 5313L, 5382L, 5434L, 5502L, 5551L, 5616L, 5665L, 5730L, 5784L, 5852L, 5903L, 5976L, 6030L, 6096L, 6149L, 6214L, 6265L, 6338L, 6389L, 6458L, 6503L, 6573L, 6635L, 6687L, 6749L, 6810L, 6873L, 6929L, 6993L, 7053L, 7105L, 7160L, 7201L, 7249L, 7292L, 7335L, 7380L, 7438L, 7489L, 7529L, 7579L, 7630L, 7673L, 7716L, 7759L, 7800L, 7848L, 7886L, 7926L, 7963L, 8005L, 8042L, 8078L, 8113L, 8149L, 8180L, 8213L, 8242L, 8275L, 8304L, 8338L, 8366L, 8399L, 8428L, 8461L, 8490L, 8523L, 8552L, 8586L, 8614L, 8648L, 8676L, 8709L, 8738L, 8771L, 8800L, 8833L, 8862L, 8895L, 8924L, 8958L, 8987L, 9020L, 9049L, 9081L, 9111L, 9143L, 9174L, 9205L, 9236L, 9268L, 9298L, 9330L, 9360L, 9392L, 9422L, 9453L, 9484L, 9515L, 9546L, 9577L, 9608L, 9640L, 9670L, 9702L, 9732L, 9763L, 9794L, 9825L, 9856L, 9887L, 9918L, 9950L, 9980L, 10012L, 10042L, 10074L, 10104L, 10135L, 10166L, 10198L, 10228L, 10260L, 10290L, 10323L, 10352L, 10386L, 10414L, 10447L, 10476L, 10509L, 10538L, 10571L, 10600L, 10633L, 10662L, 10696L, 10724L, 10758L, 10786L, 10819L, 10848L, 10881L, 10910L, 10943L, 10973L, 11006L, 11035L, 11068L, 11097L, 11130L, 11159L, 11191L, 11222L, 11253L, 11284L, 11315L, 11346L, 11378L, 11408L, 11440L, 11470L, 11501L, 11532L, 11563L, 11594L, 11625L, 11656L, 11688L, 11718L, 11750L, 11780L, 11812L, 11842L, 11873L, 11904L, 11935L, 11966L, 11997L, 12028L, 12060L, 12090L, 12122L, 12152L, 12183L, 12212L, 12243L, 12272L, 12303L, 12332L, 12363L, 12392L, 12424L, 12452L, 12484L, 12512L, 12543L, 12572L, 12603L, 12632L, 12663L, 12692L, 12724L, 12752L, 12784L, 12812L, 12844L, 12872L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Tirane" rownames(res) <- NULL tzdb_cache[["Tirane"]] <- res res } "Ulyanovsk" <- function() { if(!is.null(tzdb_cache[["Ulyanovsk"]])) return(tzdb_cache[["Ulyanovsk"]]) ind <- c(398L, 788L, 3512L, 3550L, 3609L, 3649L, 3715L, 3757L, 3821L, 3857L, 3917L, 3966L, 4039L, 4088L, 4156L, 4211L, 4289L, 4414L, 4469L, 4545L, 4669L, 4730L, 4785L, 4822L, 4876L, 4953L, 5005L, 5073L, 5124L, 5190L, 5243L, 5309L, 5378L, 5429L, 5497L, 5546L, 5611L, 5660L, 5725L, 5779L, 5847L, 5898L, 5971L, 6025L, 6091L, 6144L, 6209L, 6260L, 6333L, 6384L, 6453L, 6498L, 6568L, 6631L, 6683L, 6745L, 6806L, 6869L, 6925L, 6989L, 7049L, 7100L, 7432L, 7577L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Ulyanovsk" rownames(res) <- NULL tzdb_cache[["Ulyanovsk"]] <- res res } "Vienna" <- function() { if(!is.null(tzdb_cache[["Vienna"]])) return(tzdb_cache[["Vienna"]]) ind <- c(100L, 256L, 278L, 304L, 306L, 341L, 348L, 454L, 465L, 1191L, 1372L, 1387L, 1415L, 1441L, 1465L, 1485L, 1490L, 1582L, 1625L, 1639L, 1675L, 1696L, 1725L, 3416L, 3447L, 3498L, 3540L, 3595L, 3639L, 3700L, 3746L, 3809L, 3865L, 3925L, 3973L, 4045L, 4093L, 4162L, 4216L, 4294L, 4347L, 4422L, 4473L, 4549L, 4599L, 4671L, 4731L, 4826L, 4880L, 4957L, 5009L, 5076L, 5128L, 5194L, 5247L, 5313L, 5382L, 5434L, 5502L, 5551L, 5616L, 5665L, 5730L, 5784L, 5852L, 5903L, 5976L, 6030L, 6096L, 6149L, 6214L, 6265L, 6338L, 6389L, 6458L, 6503L, 6573L, 6635L, 6687L, 6749L, 6810L, 6873L, 6929L, 6993L, 7053L, 7105L, 7160L, 7201L, 7249L, 7292L, 7335L, 7380L, 7438L, 7489L, 7529L, 7579L, 7630L, 7673L, 7716L, 7759L, 7800L, 7848L, 7886L, 7926L, 7963L, 8005L, 8042L, 8078L, 8113L, 8149L, 8180L, 8213L, 8242L, 8275L, 8304L, 8338L, 8366L, 8399L, 8428L, 8461L, 8490L, 8523L, 8552L, 8586L, 8614L, 8648L, 8676L, 8709L, 8738L, 8771L, 8800L, 8833L, 8862L, 8895L, 8924L, 8958L, 8987L, 9020L, 9049L, 9081L, 9111L, 9143L, 9174L, 9205L, 9236L, 9268L, 9298L, 9330L, 9360L, 9392L, 9422L, 9453L, 9484L, 9515L, 9546L, 9577L, 9608L, 9640L, 9670L, 9702L, 9732L, 9763L, 9794L, 9825L, 9856L, 9887L, 9918L, 9950L, 9980L, 10012L, 10042L, 10074L, 10104L, 10135L, 10166L, 10198L, 10228L, 10260L, 10290L, 10323L, 10352L, 10386L, 10414L, 10447L, 10476L, 10509L, 10538L, 10571L, 10600L, 10633L, 10662L, 10696L, 10724L, 10758L, 10786L, 10819L, 10848L, 10881L, 10910L, 10943L, 10973L, 11006L, 11035L, 11068L, 11097L, 11130L, 11159L, 11191L, 11222L, 11253L, 11284L, 11315L, 11346L, 11378L, 11408L, 11440L, 11470L, 11501L, 11532L, 11563L, 11594L, 11625L, 11656L, 11688L, 11718L, 11750L, 11780L, 11812L, 11842L, 11873L, 11904L, 11935L, 11966L, 11997L, 12028L, 12060L, 12090L, 12122L, 12152L, 12183L, 12212L, 12243L, 12272L, 12303L, 12332L, 12363L, 12392L, 12424L, 12452L, 12484L, 12512L, 12543L, 12572L, 12603L, 12632L, 12663L, 12692L, 12724L, 12752L, 12784L, 12812L, 12844L, 12872L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Vienna" rownames(res) <- NULL tzdb_cache[["Vienna"]] <- res res } "Vilnius" <- function() { if(!is.null(tzdb_cache[["Vilnius"]])) return(tzdb_cache[["Vilnius"]]) ind <- c(38L, 290L, 414L, 463L, 471L, 1211L, 1265L, 1372L, 1387L, 1415L, 1441L, 1452L, 3513L, 3551L, 3610L, 3651L, 3716L, 3759L, 3823L, 3858L, 3919L, 3967L, 4041L, 4089L, 4158L, 4212L, 4291L, 4419L, 4472L, 4548L, 4598L, 4670L, 4728L, 4825L, 4879L, 4956L, 5008L, 5075L, 5127L, 5193L, 5246L, 5312L, 5381L, 5433L, 5551L, 5616L, 5733L, 6152L, 6217L, 6268L, 6341L, 6393L, 6462L, 6507L, 6577L, 6639L, 6691L, 6753L, 6814L, 6877L, 6933L, 6997L, 7057L, 7109L, 7164L, 7205L, 7253L, 7296L, 7339L, 7384L, 7442L, 7493L, 7533L, 7583L, 7634L, 7677L, 7720L, 7763L, 7804L, 7852L, 7890L, 7930L, 7967L, 8009L, 8046L, 8082L, 8117L, 8153L, 8183L, 8216L, 8245L, 8278L, 8307L, 8341L, 8369L, 8402L, 8431L, 8464L, 8493L, 8526L, 8555L, 8589L, 8617L, 8651L, 8679L, 8712L, 8741L, 8774L, 8803L, 8836L, 8865L, 8898L, 8927L, 8961L, 8990L, 9023L, 9052L, 9084L, 9114L, 9146L, 9177L, 9208L, 9239L, 9271L, 9301L, 9333L, 9363L, 9395L, 9425L, 9456L, 9487L, 9518L, 9549L, 9580L, 9611L, 9643L, 9673L, 9705L, 9735L, 9766L, 9797L, 9828L, 9859L, 9890L, 9921L, 9953L, 9983L, 10015L, 10045L, 10077L, 10107L, 10138L, 10169L, 10201L, 10231L, 10263L, 10293L, 10326L, 10355L, 10389L, 10417L, 10450L, 10479L, 10512L, 10541L, 10574L, 10603L, 10636L, 10665L, 10699L, 10727L, 10761L, 10789L, 10822L, 10851L, 10884L, 10913L, 10946L, 10976L, 11009L, 11038L, 11071L, 11100L, 11133L, 11162L, 11194L, 11225L, 11256L, 11287L, 11318L, 11349L, 11381L, 11411L, 11443L, 11473L, 11504L, 11535L, 11566L, 11597L, 11628L, 11659L, 11691L, 11721L, 11753L, 11783L, 11815L, 11845L, 11876L, 11907L, 11938L, 11969L, 12000L, 12031L, 12063L, 12093L, 12125L, 12155L, 12186L, 12215L, 12246L, 12275L, 12306L, 12335L, 12366L, 12395L, 12427L, 12455L, 12487L, 12515L, 12546L, 12575L, 12606L, 12635L, 12666L, 12695L, 12727L, 12755L, 12787L, 12815L, 12847L, 12875L ) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Vilnius" rownames(res) <- NULL tzdb_cache[["Vilnius"]] <- res res } "Volgograd" <- function() { if(!is.null(tzdb_cache[["Volgograd"]])) return(tzdb_cache[["Volgograd"]]) ind <- c(440L, 788L, 3512L, 3550L, 3609L, 3649L, 3715L, 3757L, 3821L, 3857L, 3917L, 3966L, 4039L, 4088L, 4156L, 4288L, 4345L, 4420L, 4469L, 4545L, 4597L, 4820L, 4876L, 4953L, 5005L, 5073L, 5124L, 5190L, 5243L, 5309L, 5378L, 5429L, 5497L, 5546L, 5611L, 5660L, 5725L, 5779L, 5847L, 5898L, 5971L, 6025L, 6091L, 6144L, 6209L, 6260L, 6333L, 6384L, 6453L, 6498L, 6568L, 6631L, 6683L, 6745L, 6806L, 6869L, 6925L, 6989L, 7049L, 7100L, 7432L, 7798L, 7986L ) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Volgograd" rownames(res) <- NULL tzdb_cache[["Volgograd"]] <- res res } "Warsaw" <- function() { if(!is.null(tzdb_cache[["Warsaw"]])) return(tzdb_cache[["Warsaw"]]) ind <- c(42L, 251L, 256L, 278L, 304L, 306L, 349L, 390L, 406L, 542L, 1207L, 1372L, 1387L, 1415L, 1441L, 1466L, 1499L, 1561L, 1581L, 1625L, 1656L, 1675L, 1696L, 1725L, 1749L, 1773L, 2128L, 2132L, 2155L, 2172L, 2210L, 2220L, 2240L, 2265L, 2297L, 2307L, 2336L, 2339L, 2370L, 2372L, 2420L, 2422L, 3151L, 3182L, 3237L, 3275L, 3323L, 3358L, 3418L, 3449L, 3494L, 3535L, 3590L, 3634L, 3695L, 3741L, 3804L, 3860L, 3921L, 3969L, 4044L, 4092L, 4161L, 4215L, 4294L, 4347L, 4422L, 4473L, 4549L, 4599L, 4671L, 4731L, 4826L, 4880L, 4957L, 5009L, 5076L, 5128L, 5194L, 5247L, 5313L, 5382L, 5434L, 5502L, 5551L, 5616L, 5665L, 5730L, 5784L, 5852L, 5903L, 5976L, 6030L, 6096L, 6149L, 6214L, 6265L, 6338L, 6389L, 6458L, 6503L, 6573L, 6635L, 6687L, 6749L, 6810L, 6873L, 6929L, 6993L, 7053L, 7105L, 7160L, 7201L, 7249L, 7292L, 7335L, 7380L, 7438L, 7489L, 7529L, 7579L, 7630L, 7673L, 7716L, 7759L, 7800L, 7848L, 7886L, 7926L, 7963L, 8005L, 8042L, 8078L, 8113L, 8149L, 8180L, 8213L, 8242L, 8275L, 8304L, 8338L, 8366L, 8399L, 8428L, 8461L, 8490L, 8523L, 8552L, 8586L, 8614L, 8648L, 8676L, 8709L, 8738L, 8771L, 8800L, 8833L, 8862L, 8895L, 8924L, 8958L, 8987L, 9020L, 9049L, 9081L, 9111L, 9143L, 9174L, 9205L, 9236L, 9268L, 9298L, 9330L, 9360L, 9392L, 9422L, 9453L, 9484L, 9515L, 9546L, 9577L, 9608L, 9640L, 9670L, 9702L, 9732L, 9763L, 9794L, 9825L, 9856L, 9887L, 9918L, 9950L, 9980L, 10012L, 10042L, 10074L, 10104L, 10135L, 10166L, 10198L, 10228L, 10260L, 10290L, 10323L, 10352L, 10386L, 10414L, 10447L, 10476L, 10509L, 10538L, 10571L, 10600L, 10633L, 10662L, 10696L, 10724L, 10758L, 10786L, 10819L, 10848L, 10881L, 10910L, 10943L, 10973L, 11006L, 11035L, 11068L, 11097L, 11130L, 11159L, 11191L, 11222L, 11253L, 11284L, 11315L, 11346L, 11378L, 11408L, 11440L, 11470L, 11501L, 11532L, 11563L, 11594L, 11625L, 11656L, 11688L, 11718L, 11750L, 11780L, 11812L, 11842L, 11873L, 11904L, 11935L, 11966L, 11997L, 12028L, 12060L, 12090L, 12122L, 12152L, 12183L, 12212L, 12243L, 12272L, 12303L, 12332L, 12363L, 12392L, 12424L, 12452L, 12484L, 12512L, 12543L, 12572L, 12603L, 12632L, 12663L, 12692L, 12724L, 12752L, 12784L, 12812L, 12844L, 12872L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Warsaw" rownames(res) <- NULL tzdb_cache[["Warsaw"]] <- res res } "Zurich" <- function() { if(!is.null(tzdb_cache[["Zurich"]])) return(tzdb_cache[["Zurich"]]) ind <- c(7L, 104L, 1259L, 1290L, 1337L, 1364L, 3498L, 3540L, 3595L, 3639L, 3700L, 3746L, 3809L, 3865L, 3925L, 3973L, 4045L, 4093L, 4162L, 4216L, 4294L, 4347L, 4422L, 4473L, 4549L, 4599L, 4671L, 4731L, 4826L, 4880L, 4957L, 5009L, 5076L, 5128L, 5194L, 5247L, 5313L, 5382L, 5434L, 5502L, 5551L, 5616L, 5665L, 5730L, 5784L, 5852L, 5903L, 5976L, 6030L, 6096L, 6149L, 6214L, 6265L, 6338L, 6389L, 6458L, 6503L, 6573L, 6635L, 6687L, 6749L, 6810L, 6873L, 6929L, 6993L, 7053L, 7105L, 7160L, 7201L, 7249L, 7292L, 7335L, 7380L, 7438L, 7489L, 7529L, 7579L, 7630L, 7673L, 7716L, 7759L, 7800L, 7848L, 7886L, 7926L, 7963L, 8005L, 8042L, 8078L, 8113L, 8149L, 8180L, 8213L, 8242L, 8275L, 8304L, 8338L, 8366L, 8399L, 8428L, 8461L, 8490L, 8523L, 8552L, 8586L, 8614L, 8648L, 8676L, 8709L, 8738L, 8771L, 8800L, 8833L, 8862L, 8895L, 8924L, 8958L, 8987L, 9020L, 9049L, 9081L, 9111L, 9143L, 9174L, 9205L, 9236L, 9268L, 9298L, 9330L, 9360L, 9392L, 9422L, 9453L, 9484L, 9515L, 9546L, 9577L, 9608L, 9640L, 9670L, 9702L, 9732L, 9763L, 9794L, 9825L, 9856L, 9887L, 9918L, 9950L, 9980L, 10012L, 10042L, 10074L, 10104L, 10135L, 10166L, 10198L, 10228L, 10260L, 10290L, 10323L, 10352L, 10386L, 10414L, 10447L, 10476L, 10509L, 10538L, 10571L, 10600L, 10633L, 10662L, 10696L, 10724L, 10758L, 10786L, 10819L, 10848L, 10881L, 10910L, 10943L, 10973L, 11006L, 11035L, 11068L, 11097L, 11130L, 11159L, 11191L, 11222L, 11253L, 11284L, 11315L, 11346L, 11378L, 11408L, 11440L, 11470L, 11501L, 11532L, 11563L, 11594L, 11625L, 11656L, 11688L, 11718L, 11750L, 11780L, 11812L, 11842L, 11873L, 11904L, 11935L, 11966L, 11997L, 12028L, 12060L, 12090L, 12122L, 12152L, 12183L, 12212L, 12243L, 12272L, 12303L, 12332L, 12363L, 12392L, 12424L, 12452L, 12484L, 12512L, 12543L, 12572L, 12603L, 12632L, 12663L, 12692L, 12724L, 12752L, 12784L, 12812L, 12844L, 12872L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Zurich" rownames(res) <- NULL tzdb_cache[["Zurich"]] <- res res } "Chagos" <- function() { if(!is.null(tzdb_cache[["Chagos"]])) return(tzdb_cache[["Chagos"]]) ind <- c(185L, 5279L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Chagos" rownames(res) <- NULL tzdb_cache[["Chagos"]] <- res res } "Maldives" <- function() { if(!is.null(tzdb_cache[["Maldives"]])) return(tzdb_cache[["Maldives"]]) ind <- c(28L, 2234L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Maldives" rownames(res) <- NULL tzdb_cache[["Maldives"]] <- res res } "Mauritius" <- function() { if(!is.null(tzdb_cache[["Mauritius"]])) return(tzdb_cache[["Mauritius"]]) ind <- c(187L, 3656L, 3690L, 6805L, 6866L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Mauritius" rownames(res) <- NULL tzdb_cache[["Mauritius"]] <- res res } "Apia" <- function() { if(!is.null(tzdb_cache[["Apia"]])) return(tzdb_cache[["Apia"]]) ind <- c(98L, 201L, 1788L, 7026L, 7117L, 7139L, 7180L, 7211L, 7233L, 7300L, 7319L, 7390L, 7411L, 7498L, 7514L, 7590L, 7614L, 7684L, 7701L, 7770L, 7785L, 7856L, 7871L, 7934L, 7950L, 8014L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Apia" rownames(res) <- NULL tzdb_cache[["Apia"]] <- res res } "Auckland" <- function() { if(!is.null(tzdb_cache[["Auckland"]])) return(tzdb_cache[["Auckland"]]) ind <- c(19L, 707L, 710L, 736L, 739L, 762L, 767L, 799L, 810L, 845L, 851L, 890L, 900L, 926L, 945L, 955L, 982L, 991L, 1018L, 1026L, 1055L, 1066L, 1100L, 1109L, 1143L, 1154L, 1193L, 1572L, 2973L, 2979L, 3038L, 3059L, 3116L, 3136L, 3201L, 3222L, 3285L, 3308L, 3377L, 3395L, 3464L, 3484L, 3557L, 3578L, 3663L, 3682L, 3771L, 3789L, 3878L, 3897L, 3985L, 4012L, 4115L, 4135L, 4234L, 4266L, 4368L, 4391L, 4483L, 4524L, 4608L, 4646L, 4741L, 4796L, 4890L, 4934L, 5018L, 5053L, 5137L, 5171L, 5253L, 5288L, 5356L, 5407L, 5474L, 5522L, 5591L, 5641L, 5700L, 5761L, 5818L, 5880L, 5947L, 6002L, 6068L, 6121L, 6185L, 6238L, 6311L, 6363L, 6429L, 6483L, 6544L, 6614L, 6658L, 6761L, 6782L, 6881L, 6901L, 7002L, 7024L, 7118L, 7140L, 7212L, 7234L, 7301L, 7320L, 7391L, 7412L, 7499L, 7515L, 7591L, 7615L, 7685L, 7702L, 7771L, 7786L, 7857L, 7872L, 7935L, 7951L, 8015L, 8030L, 8088L, 8102L, 8158L, 8169L, 8220L, 8231L, 8282L, 8293L, 8345L, 8355L, 8407L, 8417L, 8469L, 8479L, 8531L, 8541L, 8593L, 8603L, 8655L, 8665L, 8717L, 8727L, 8779L, 8789L, 8841L, 8851L, 8903L, 8913L, 8965L, 8975L, 9027L, 9037L, 9089L, 9099L, 9151L, 9162L, 9213L, 9224L, 9275L, 9286L, 9337L, 9349L, 9399L, 9411L, 9461L, 9473L, 9523L, 9535L, 9585L, 9597L, 9647L, 9659L, 9709L, 9721L, 9771L, 9783L, 9833L, 9845L, 9895L, 9907L, 9957L, 9969L, 10019L, 10031L, 10081L, 10093L, 10144L, 10155L, 10206L, 10217L, 10268L, 10279L, 10331L, 10341L, 10393L, 10403L, 10455L, 10465L, 10517L, 10527L, 10579L, 10589L, 10641L, 10651L, 10703L, 10713L, 10765L, 10775L, 10827L, 10837L, 10889L, 10899L, 10951L, 10961L, 11013L, 11023L, 11075L, 11085L, 11137L, 11148L, 11199L, 11210L, 11261L, 11272L, 11323L, 11334L, 11385L, 11397L, 11447L, 11459L, 11509L, 11521L, 11571L, 11583L, 11633L, 11645L, 11695L, 11707L, 11757L, 11769L, 11819L, 11831L, 11881L, 11893L, 11943L, 11955L, 12005L, 12017L, 12067L, 12079L, 12130L, 12141L, 12191L, 12201L, 12251L, 12261L, 12311L, 12321L, 12371L, 12381L, 12431L, 12441L, 12491L, 12501L, 12551L, 12561L, 12611L, 12621L, 12671L, 12681L, 12731L, 12741L, 12791L, 12801L, 12851L, 12861L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Auckland" rownames(res) <- NULL tzdb_cache[["Auckland"]] <- res res } "Bougainville" <- function() { if(!is.null(tzdb_cache[["Bougainville"]])) return(tzdb_cache[["Bougainville"]]) ind <- c(22L, 120L, 1342L, 1517L, 7462L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Bougainville" rownames(res) <- NULL tzdb_cache[["Bougainville"]] <- res res } "Chatham" <- function() { if(!is.null(tzdb_cache[["Chatham"]])) return(tzdb_cache[["Chatham"]]) ind <- c(18L, 1571L, 2974L, 2980L, 3039L, 3060L, 3117L, 3137L, 3202L, 3223L, 3286L, 3309L, 3378L, 3396L, 3465L, 3485L, 3558L, 3579L, 3664L, 3683L, 3772L, 3790L, 3879L, 3898L, 3986L, 4013L, 4116L, 4136L, 4235L, 4267L, 4369L, 4392L, 4484L, 4525L, 4609L, 4647L, 4742L, 4797L, 4891L, 4935L, 5019L, 5054L, 5138L, 5172L, 5254L, 5289L, 5357L, 5408L, 5475L, 5523L, 5592L, 5642L, 5701L, 5762L, 5819L, 5881L, 5948L, 6003L, 6069L, 6122L, 6186L, 6239L, 6312L, 6364L, 6430L, 6484L, 6545L, 6615L, 6659L, 6762L, 6783L, 6882L, 6902L, 7003L, 7025L, 7119L, 7141L, 7213L, 7235L, 7302L, 7321L, 7392L, 7413L, 7500L, 7516L, 7592L, 7616L, 7686L, 7703L, 7772L, 7787L, 7858L, 7873L, 7936L, 7952L, 8016L, 8031L, 8089L, 8103L, 8159L, 8170L, 8221L, 8232L, 8283L, 8294L, 8346L, 8356L, 8408L, 8418L, 8470L, 8480L, 8532L, 8542L, 8594L, 8604L, 8656L, 8666L, 8718L, 8728L, 8780L, 8790L, 8842L, 8852L, 8904L, 8914L, 8966L, 8976L, 9028L, 9038L, 9090L, 9100L, 9152L, 9163L, 9214L, 9225L, 9276L, 9287L, 9338L, 9350L, 9400L, 9412L, 9462L, 9474L, 9524L, 9536L, 9586L, 9598L, 9648L, 9660L, 9710L, 9722L, 9772L, 9784L, 9834L, 9846L, 9896L, 9908L, 9958L, 9970L, 10020L, 10032L, 10082L, 10094L, 10145L, 10156L, 10207L, 10218L, 10269L, 10280L, 10332L, 10342L, 10394L, 10404L, 10456L, 10466L, 10518L, 10528L, 10580L, 10590L, 10642L, 10652L, 10704L, 10714L, 10766L, 10776L, 10828L, 10838L, 10890L, 10900L, 10952L, 10962L, 11014L, 11024L, 11076L, 11086L, 11138L, 11149L, 11200L, 11211L, 11262L, 11273L, 11324L, 11335L, 11386L, 11398L, 11448L, 11460L, 11510L, 11522L, 11572L, 11584L, 11634L, 11646L, 11696L, 11708L, 11758L, 11770L, 11820L, 11832L, 11882L, 11894L, 11944L, 11956L, 12006L, 12018L, 12068L, 12080L, 12131L, 12142L, 12192L, 12202L, 12252L, 12262L, 12312L, 12322L, 12372L, 12382L, 12432L, 12442L, 12492L, 12502L, 12552L, 12562L, 12612L, 12622L, 12672L, 12682L, 12732L, 12742L, 12792L, 12802L, 12852L, 12862L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Chatham" rownames(res) <- NULL tzdb_cache[["Chatham"]] <- res res } "Easter_Island" <- function() { if(!is.null(tzdb_cache[["Easter_Island"]])) return(tzdb_cache[["Easter_Island"]]) ind <- c(88L, 874L, 2631L, 2638L, 2680L, 2685L, 2710L, 2730L, 2756L, 2781L, 2813L, 2835L, 2863L, 2911L, 2951L, 2994L, 3034L, 3064L, 3109L, 3142L, 3194L, 3228L, 3284L, 3315L, 3372L, 3402L, 3462L, 3490L, 3585L, 3659L, 3689L, 3767L, 3798L, 3875L, 3904L, 3982L, 4017L, 4106L, 4186L, 4231L, 4270L, 4361L, 4396L, 4489L, 4522L, 4586L, 4645L, 4747L, 4799L, 4896L, 4933L, 5022L, 5052L, 5141L, 5170L, 5262L, 5286L, 5363L, 5442L, 5481L, 5525L, 5588L, 5678L, 5708L, 5759L, 5831L, 5879L, 5954L, 6001L, 6074L, 6120L, 6189L, 6237L, 6315L, 6362L, 6436L, 6481L, 6553L, 6600L, 6665L, 6758L, 6790L, 6852L, 6910L, 7009L, 7034L, 7129L, 7133L, 7224L, 7229L, 7311L, 7316L, 7400L, 7408L, 7602L, 7608L, 7694L, 7698L, 7781L, 7783L, 7863L, 7869L, 7942L, 7948L, 8022L, 8028L, 8095L, 8100L, 8165L, 8168L, 8227L, 8230L, 8290L, 8292L, 8352L, 8354L, 8414L, 8416L, 8476L, 8478L, 8538L, 8540L, 8600L, 8602L, 8662L, 8664L, 8724L, 8726L, 8786L, 8788L, 8848L, 8850L, 8910L, 8912L, 8972L, 8974L, 9034L, 9036L, 9096L, 9098L, 9158L, 9160L, 9220L, 9223L, 9282L, 9285L, 9344L, 9347L, 9406L, 9409L, 9468L, 9472L, 9530L, 9534L, 9592L, 9596L, 9654L, 9658L, 9716L, 9720L, 9778L, 9782L, 9840L, 9844L, 9902L, 9906L, 9964L, 9968L, 10026L, 10030L, 10089L, 10092L, 10151L, 10154L, 10213L, 10216L, 10276L, 10278L, 10338L, 10340L, 10400L, 10402L, 10462L, 10464L, 10524L, 10526L, 10586L, 10588L, 10648L, 10650L, 10710L, 10712L, 10772L, 10774L, 10834L, 10836L, 10896L, 10898L, 10958L, 10960L, 11020L, 11022L, 11082L, 11084L, 11144L, 11146L, 11206L, 11208L, 11268L, 11271L, 11330L, 11333L, 11392L, 11395L, 11454L, 11458L, 11516L, 11520L, 11578L, 11582L, 11640L, 11644L, 11702L, 11706L, 11764L, 11768L, 11826L, 11830L, 11888L, 11892L, 11950L, 11954L, 12012L, 12016L, 12074L, 12078L, 12137L, 12140L, 12198L, 12200L, 12258L, 12260L, 12318L, 12320L, 12378L, 12380L, 12438L, 12440L, 12498L, 12500L, 12558L, 12560L, 12618L, 12620L, 12678L, 12680L, 12738L, 12740L, 12798L, 12800L, 12858L, 12860L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Easter_Island" rownames(res) <- NULL tzdb_cache[["Easter_Island"]] <- res res } "Efate" <- function() { if(!is.null(tzdb_cache[["Efate"]])) return(tzdb_cache[["Efate"]]) ind <- c(217L, 2890L, 2914L, 3737L, 3801L, 3844L, 3905L, 3952L, 4026L, 4074L, 4143L, 4197L, 4276L, 4327L, 4401L, 4453L, 4529L, 4587L, 4650L, 4711L, 4786L, 4900L, 4922L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Efate" rownames(res) <- NULL tzdb_cache[["Efate"]] <- res res } "Fakaofo" <- function() { if(!is.null(tzdb_cache[["Fakaofo"]])) return(tzdb_cache[["Fakaofo"]]) ind <- c(164L, 7181L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Fakaofo" rownames(res) <- NULL tzdb_cache[["Fakaofo"]] <- res res } "Fiji" <- function() { if(!is.null(tzdb_cache[["Fiji"]])) return(tzdb_cache[["Fiji"]]) ind <- c(252L, 5635L, 5639L, 5750L, 5752L, 6954L, 6977L, 7037L, 7077L, 7151L, 7182L, 7242L, 7270L, 7330L, 7358L, 7451L, 7463L, 7542L, 7554L, 7642L, 7655L, 7728L, 7740L, 7811L, 7827L, 7906L, 7907L, 7985L, 7987L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Fiji" rownames(res) <- NULL tzdb_cache[["Fiji"]] <- res res } "Galapagos" <- function() { if(!is.null(tzdb_cache[["Galapagos"]])) return(tzdb_cache[["Galapagos"]]) ind <- c(808L, 4010L, 4920L, 4926L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Galapagos" rownames(res) <- NULL tzdb_cache[["Galapagos"]] <- res res } "Gambier" <- function() { if(!is.null(tzdb_cache[["Gambier"]])) return(tzdb_cache[["Gambier"]]) ind <- 224L res <- all_tz_rows[ind, ] colnames(res)[1] <- "Gambier" rownames(res) <- NULL tzdb_cache[["Gambier"]] <- res res } "Guadalcanal" <- function() { if(!is.null(tzdb_cache[["Guadalcanal"]])) return(tzdb_cache[["Guadalcanal"]]) ind <- 223L res <- all_tz_rows[ind, ] colnames(res)[1] <- "Guadalcanal" rownames(res) <- NULL tzdb_cache[["Guadalcanal"]] <- res res } "Guam" <- function() { if(!is.null(tzdb_cache[["Guam"]])) return(tzdb_cache[["Guam"]]) ind <- c(2L, 156L, 1297L, 1451L, 2211L, 2278L, 2568L, 2634L, 2656L, 2657L, 2689L, 2705L, 2734L, 2750L, 2889L, 2905L, 3094L, 3098L, 3154L, 3175L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Guam" rownames(res) <- NULL tzdb_cache[["Guam"]] <- res res } "Honolulu" <- function() { if(!is.null(tzdb_cache[["Honolulu"]])) return(tzdb_cache[["Honolulu"]]) ind <- c(133L, 914L, 917L, 1516L, 1547L, 1661L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Honolulu" rownames(res) <- NULL tzdb_cache[["Honolulu"]] <- res res } "Kanton" <- function() { if(!is.null(tzdb_cache[["Kanton"]])) return(tzdb_cache[["Kanton"]]) ind <- c(1063L, 3368L, 5162L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Kanton" rownames(res) <- NULL tzdb_cache[["Kanton"]] <- res res } "Kiritimati" <- function() { if(!is.null(tzdb_cache[["Kiritimati"]])) return(tzdb_cache[["Kiritimati"]]) ind <- c(163L, 3367L, 5161L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Kiritimati" rownames(res) <- NULL tzdb_cache[["Kiritimati"]] <- res res } "Kosrae" <- function() { if(!is.null(tzdb_cache[["Kosrae"]])) return(tzdb_cache[["Kosrae"]]) ind <- c(1L, 155L, 246L, 370L, 1041L, 1243L, 1506L, 2659L, 5636L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Kosrae" rownames(res) <- NULL tzdb_cache[["Kosrae"]] <- res res } "Kwajalein" <- function() { if(!is.null(tzdb_cache[["Kwajalein"]])) return(tzdb_cache[["Kwajalein"]]) ind <- c(154L, 1041L, 1243L, 1427L, 2660L, 4984L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Kwajalein" rownames(res) <- NULL tzdb_cache[["Kwajalein"]] <- res res } "Marquesas" <- function() { if(!is.null(tzdb_cache[["Marquesas"]])) return(tzdb_cache[["Marquesas"]]) ind <- 225L res <- all_tz_rows[ind, ] colnames(res)[1] <- "Marquesas" rownames(res) <- NULL tzdb_cache[["Marquesas"]] <- res res } "Nauru" <- function() { if(!is.null(tzdb_cache[["Nauru"]])) return(tzdb_cache[["Nauru"]]) ind <- c(483L, 1349L, 1527L, 3305L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Nauru" rownames(res) <- NULL tzdb_cache[["Nauru"]] <- res res } "Niue" <- function() { if(!is.null(tzdb_cache[["Niue"]])) return(tzdb_cache[["Niue"]]) ind <- c(1932L, 2421L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Niue" rownames(res) <- NULL tzdb_cache[["Niue"]] <- res res } "Norfolk" <- function() { if(!is.null(tzdb_cache[["Norfolk"]])) return(tzdb_cache[["Norfolk"]]) ind <- c(153L, 1845L, 2955L, 2988L, 7517L, 7875L, 7938L, 7953L, 8018L, 8032L, 8091L, 8104L, 8161L, 8171L, 8223L, 8233L, 8285L, 8295L, 8348L, 8357L, 8410L, 8419L, 8472L, 8481L, 8534L, 8543L, 8596L, 8605L, 8658L, 8667L, 8720L, 8729L, 8782L, 8791L, 8844L, 8853L, 8906L, 8915L, 8968L, 8977L, 9030L, 9039L, 9092L, 9102L, 9154L, 9164L, 9216L, 9226L, 9278L, 9289L, 9340L, 9351L, 9402L, 9413L, 9464L, 9475L, 9526L, 9537L, 9588L, 9599L, 9650L, 9661L, 9712L, 9723L, 9774L, 9785L, 9836L, 9847L, 9898L, 9909L, 9960L, 9971L, 10022L, 10033L, 10084L, 10095L, 10147L, 10157L, 10209L, 10219L, 10271L, 10281L, 10334L, 10343L, 10396L, 10405L, 10458L, 10467L, 10520L, 10529L, 10582L, 10591L, 10644L, 10653L, 10706L, 10715L, 10768L, 10777L, 10830L, 10839L, 10892L, 10901L, 10954L, 10963L, 11016L, 11025L, 11078L, 11087L, 11140L, 11150L, 11202L, 11212L, 11264L, 11274L, 11326L, 11337L, 11388L, 11399L, 11450L, 11461L, 11512L, 11523L, 11574L, 11585L, 11636L, 11647L, 11698L, 11709L, 11760L, 11771L, 11822L, 11833L, 11884L, 11895L, 11946L, 11957L, 12008L, 12019L, 12070L, 12081L, 12133L, 12143L, 12194L, 12203L, 12254L, 12263L, 12314L, 12323L, 12374L, 12383L, 12434L, 12443L, 12494L, 12503L, 12554L, 12563L, 12614L, 12623L, 12674L, 12683L, 12734L, 12743L, 12794L, 12803L, 12854L, 12863L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Norfolk" rownames(res) <- NULL tzdb_cache[["Norfolk"]] <- res res } "Noumea" <- function() { if(!is.null(tzdb_cache[["Noumea"]])) return(tzdb_cache[["Noumea"]]) ind <- c(218L, 3216L, 3220L, 3302L, 3307L, 5401L, 5406L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Noumea" rownames(res) <- NULL tzdb_cache[["Noumea"]] <- res res } "Pago_Pago" <- function() { if(!is.null(tzdb_cache[["Pago_Pago"]])) return(tzdb_cache[["Pago_Pago"]]) ind <- c(97L, 200L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Pago_Pago" rownames(res) <- NULL tzdb_cache[["Pago_Pago"]] <- res res } "Palau" <- function() { if(!is.null(tzdb_cache[["Palau"]])) return(tzdb_cache[["Palau"]]) ind <- c(3L, 157L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Palau" rownames(res) <- NULL tzdb_cache[["Palau"]] <- res res } "Pitcairn" <- function() { if(!is.null(tzdb_cache[["Pitcairn"]])) return(tzdb_cache[["Pitcairn"]]) ind <- c(162L, 5575L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Pitcairn" rownames(res) <- NULL tzdb_cache[["Pitcairn"]] <- res res } "Port_Moresby" <- function() { if(!is.null(tzdb_cache[["Port_Moresby"]])) return(tzdb_cache[["Port_Moresby"]]) ind <- c(23L, 120L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Port_Moresby" rownames(res) <- NULL tzdb_cache[["Port_Moresby"]] <- res res } "Rarotonga" <- function() { if(!is.null(tzdb_cache[["Rarotonga"]])) return(tzdb_cache[["Rarotonga"]]) ind <- c(139L, 1931L, 3301L, 3313L, 3391L, 3399L, 3479L, 3488L, 3572L, 3583L, 3676L, 3687L, 3786L, 3796L, 3894L, 3902L, 4001L, 4015L, 4128L, 4138L, 4256L, 4268L, 4383L, 4394L, 4508L, 4520L, 4631L, 4643L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Rarotonga" rownames(res) <- NULL tzdb_cache[["Rarotonga"]] <- res res } "Tahiti" <- function() { if(!is.null(tzdb_cache[["Tahiti"]])) return(tzdb_cache[["Tahiti"]]) ind <- 226L res <- all_tz_rows[ind, ] colnames(res)[1] <- "Tahiti" rownames(res) <- NULL tzdb_cache[["Tahiti"]] <- res res } "Tarawa" <- function() { if(!is.null(tzdb_cache[["Tarawa"]])) return(tzdb_cache[["Tarawa"]]) ind <- 152L res <- all_tz_rows[ind, ] colnames(res)[1] <- "Tarawa" rownames(res) <- NULL tzdb_cache[["Tarawa"]] <- res res } "Tongatapu" <- function() { if(!is.null(tzdb_cache[["Tongatapu"]])) return(tzdb_cache[["Tongatapu"]]) ind <- c(1528L, 2277L, 5706L, 5760L, 5872L, 5874L, 5995L, 5996L, 7641L, 7654L) res <- all_tz_rows[ind, ] colnames(res)[1] <- "Tongatapu" rownames(res) <- NULL tzdb_cache[["Tongatapu"]] <- res res } ## this is for compatibility purpose with very old versions of timeDate; ## but 'Frankfurt' is sensible anyway. "Accra" <- Abidjan "Addis_Ababa" <- Nairobi "Asmara" <- Nairobi "Bamako" <- Abidjan "Bangui" <- Lagos "Banjul" <- Abidjan "Blantyre" <- Maputo "Brazzaville" <- Lagos "Bujumbura" <- Maputo "Conakry" <- Abidjan "Dakar" <- Abidjan "Dar_es_Salaam" <- Nairobi "Djibouti" <- Nairobi "Douala" <- Lagos "Freetown" <- Abidjan "Gaborone" <- Maputo "Harare" <- Maputo "Kampala" <- Nairobi "Kigali" <- Maputo "Kinshasa" <- Lagos "Libreville" <- Lagos "Lome" <- Abidjan "Luanda" <- Lagos "Lubumbashi" <- Maputo "Lusaka" <- Maputo "Malabo" <- Lagos "Maseru" <- Johannesburg "Mbabane" <- Johannesburg "Mogadishu" <- Nairobi "Niamey" <- Lagos "Nouakchott" <- Abidjan "Ouagadougou" <- Abidjan "Porto-Novo" <- Lagos "Anguilla" <- Puerto_Rico "Antigua" <- Puerto_Rico "Aruba" <- Puerto_Rico "Atikokan" <- Panama "Blanc-Sablon" <- Puerto_Rico "Cayman" <- Panama "Curacao" <- Puerto_Rico "Dominica" <- Puerto_Rico "Godthab" <- Nuuk "Grenada" <- Puerto_Rico "Guadeloupe" <- Puerto_Rico "Marigot" <- Puerto_Rico "Montreal" <- Toronto "Montserrat" <- Puerto_Rico "Nassau" <- Toronto "Nipigon" <- Toronto "Pangnirtung" <- Iqaluit "Port_of_Spain" <- Puerto_Rico "Rainy_River" <- Winnipeg "Shiprock" <- Denver "St_Barthelemy" <- Puerto_Rico "St_Kitts" <- Puerto_Rico "St_Lucia" <- Puerto_Rico "St_Thomas" <- Puerto_Rico "St_Vincent" <- Puerto_Rico "Thunder_Bay" <- Toronto "Tortola" <- Puerto_Rico "DumontDUrville" <- Port_Moresby "McMurdo" <- Auckland "South_Pole" <- Auckland "Syowa" <- Riyadh "Vostok" <- Urumqi "Longyearbyen" <- Berlin "Aden" <- Riyadh "Bahrain" <- Qatar "Brunei" <- Kuching "Calcutta" <- Kolkata "Chongqing" <- Shanghai "Harbin" <- Shanghai "Kashgar" <- Urumqi "Katmandu" <- Kathmandu "Kuala_Lumpur" <- Singapore "Kuwait" <- Riyadh "Muscat" <- Dubai "Phnom_Penh" <- Bangkok "Rangoon" <- Yangon "Saigon" <- Ho_Chi_Minh "Vientiane" <- Bangkok "Reykjavik" <- Abidjan "St_Helena" <- Abidjan "Currie" <- Hobart "Amsterdam" <- Brussels "Bratislava" <- Prague "Copenhagen" <- Berlin "Guernsey" <- London "Isle_of_Man" <- London "Jersey" <- London "Kiev" <- Kyiv "Ljubljana" <- Belgrade "Luxembourg" <- Brussels "Mariehamn" <- Helsinki "Monaco" <- Paris "Oslo" <- Berlin "Podgorica" <- Belgrade "San_Marino" <- Rome "Sarajevo" <- Belgrade "Skopje" <- Belgrade "Stockholm" <- Berlin "Uzhgorod" <- Kyiv "Vaduz" <- Zurich "Vatican" <- Rome "Zagreb" <- Belgrade "Zaporozhye" <- Kyiv "Antananarivo" <- Nairobi "Christmas" <- Bangkok "Cocos" <- Yangon "Comoro" <- Nairobi "Kerguelen" <- Maldives "Mahe" <- Dubai "Mayotte" <- Nairobi "Reunion" <- Dubai "Enderbury" <- Kanton "Funafuti" <- Tarawa "Johnston" <- Honolulu "Majuro" <- Tarawa "Midway" <- Pago_Pago "Ponape" <- Guadalcanal "Saipan" <- Guam "Truk" <- Port_Moresby "Wake" <- Tarawa "Wallis" <- Tarawa ## for compatibility with old versions BuenosAires <- Buenos_Aires LosAngeles <- Los_Angeles MexicoCity <- Mexico_City NewYork <- New_York Eastern <- New_York HongKong <- Hong_Kong KualaLumpur <- Kuala_Lumpur Frankfurt <- Berlin Pacific <- LosAngeles .FinCenterList = c( "Africa/Abidjan", "Africa/Algiers", "Africa/Bissau", "Africa/Cairo", "Africa/Casablanca", "Africa/Ceuta", "Africa/El_Aaiun", "Africa/Johannesburg", "Africa/Juba", "Africa/Khartoum", "Africa/Lagos", "Africa/Maputo", "Africa/Monrovia", "Africa/Nairobi", "Africa/Ndjamena", "Africa/Sao_Tome", "Africa/Tripoli", "Africa/Tunis", "Africa/Windhoek", "America/Adak", "America/Anchorage", "America/Araguaina", "America/Argentina/Buenos_Aires", "America/Argentina/Catamarca", "America/Argentina/Cordoba", "America/Argentina/Jujuy", "America/Argentina/La_Rioja", "America/Argentina/Mendoza", "America/Argentina/Rio_Gallegos", "America/Argentina/Salta", "America/Argentina/San_Juan", "America/Argentina/San_Luis", "America/Argentina/Tucuman", "America/Argentina/Ushuaia", "America/Asuncion", "America/Bahia", "America/Bahia_Banderas", "America/Barbados", "America/Belem", "America/Belize", "America/Boa_Vista", "America/Bogota", "America/Boise", "America/Cambridge_Bay", "America/Campo_Grande", "America/Cancun", "America/Caracas", "America/Cayenne", "America/Chicago", "America/Chihuahua", "America/Costa_Rica", "America/Cuiaba", "America/Danmarkshavn", "America/Dawson", "America/Dawson_Creek", "America/Denver", "America/Detroit", "America/Edmonton", "America/Eirunepe", "America/El_Salvador", "America/Fort_Nelson", "America/Fortaleza", "America/Glace_Bay", "America/Goose_Bay", "America/Grand_Turk", "America/Guatemala", "America/Guayaquil", "America/Guyana", "America/Halifax", "America/Havana", "America/Hermosillo", "America/Indiana/Indianapolis", "America/Indiana/Knox", "America/Indiana/Marengo", "America/Indiana/Petersburg", "America/Indiana/Tell_City", "America/Indiana/Vevay", "America/Indiana/Vincennes", "America/Indiana/Winamac", "America/Inuvik", "America/Iqaluit", "America/Jamaica", "America/Juneau", "America/Kentucky/Louisville", "America/Kentucky/Monticello", "America/La_Paz", "America/Lima", "America/Los_Angeles", "America/Maceio", "America/Managua", "America/Manaus", "America/Martinique", "America/Matamoros", "America/Mazatlan", "America/Menominee", "America/Merida", "America/Metlakatla", "America/Mexico_City", "America/Miquelon", "America/Moncton", "America/Monterrey", "America/Montevideo", "America/New_York", "America/Nome", "America/Noronha", "America/North_Dakota/Beulah", "America/North_Dakota/Center", "America/North_Dakota/New_Salem", "America/Nuuk", "America/Ojinaga", "America/Panama", "America/Paramaribo", "America/Phoenix", "America/Port-au-Prince", "America/Porto_Velho", "America/Puerto_Rico", "America/Punta_Arenas", "America/Rankin_Inlet", "America/Recife", "America/Regina", "America/Resolute", "America/Rio_Branco", "America/Santarem", "America/Santiago", "America/Santo_Domingo", "America/Sao_Paulo", "America/Scoresbysund", "America/Sitka", "America/St_Johns", "America/Swift_Current", "America/Tegucigalpa", "America/Thule", "America/Tijuana", "America/Toronto", "America/Vancouver", "America/Whitehorse", "America/Winnipeg", "America/Yakutat", "America/Yellowknife", "Antarctica/Casey", "Antarctica/Davis", "Antarctica/Macquarie", "Antarctica/Mawson", "Antarctica/Palmer", "Antarctica/Rothera", "Antarctica/Troll", "Asia/Almaty", "Asia/Amman", "Asia/Anadyr", "Asia/Aqtau", "Asia/Aqtobe", "Asia/Ashgabat", "Asia/Atyrau", "Asia/Baghdad", "Asia/Baku", "Asia/Bangkok", "Asia/Barnaul", "Asia/Beirut", "Asia/Bishkek", "Asia/Chita", "Asia/Choibalsan", "Asia/Colombo", "Asia/Damascus", "Asia/Dhaka", "Asia/Dili", "Asia/Dubai", "Asia/Dushanbe", "Asia/Famagusta", "Asia/Gaza", "Asia/Hebron", "Asia/Ho_Chi_Minh", "Asia/Hong_Kong", "Asia/Hovd", "Asia/Irkutsk", "Asia/Jakarta", "Asia/Jayapura", "Asia/Jerusalem", "Asia/Kabul", "Asia/Kamchatka", "Asia/Karachi", "Asia/Kathmandu", "Asia/Khandyga", "Asia/Kolkata", "Asia/Krasnoyarsk", "Asia/Kuching", "Asia/Macau", "Asia/Magadan", "Asia/Makassar", "Asia/Manila", "Asia/Nicosia", "Asia/Novokuznetsk", "Asia/Novosibirsk", "Asia/Omsk", "Asia/Oral", "Asia/Pontianak", "Asia/Pyongyang", "Asia/Qatar", "Asia/Qostanay", "Asia/Qyzylorda", "Asia/Riyadh", "Asia/Sakhalin", "Asia/Samarkand", "Asia/Seoul", "Asia/Shanghai", "Asia/Singapore", "Asia/Srednekolymsk", "Asia/Taipei", "Asia/Tashkent", "Asia/Tbilisi", "Asia/Tehran", "Asia/Thimphu", "Asia/Tokyo", "Asia/Tomsk", "Asia/Ulaanbaatar", "Asia/Urumqi", "Asia/Ust-Nera", "Asia/Vladivostok", "Asia/Yakutsk", "Asia/Yangon", "Asia/Yekaterinburg", "Asia/Yerevan", "Atlantic/Azores", "Atlantic/Bermuda", "Atlantic/Canary", "Atlantic/Cape_Verde", "Atlantic/Faroe", "Atlantic/Madeira", "Atlantic/South_Georgia", "Atlantic/Stanley", "Australia/Adelaide", "Australia/Brisbane", "Australia/Broken_Hill", "Australia/Darwin", "Australia/Eucla", "Australia/Hobart", "Australia/Lindeman", "Australia/Lord_Howe", "Australia/Melbourne", "Australia/Perth", "Australia/Sydney", "Europe/Andorra", "Europe/Astrakhan", "Europe/Athens", "Europe/Belgrade", "Europe/Berlin", "Europe/Brussels", "Europe/Bucharest", "Europe/Budapest", "Europe/Chisinau", "Europe/Dublin", "Europe/Gibraltar", "Europe/Helsinki", "Europe/Istanbul", "Europe/Kaliningrad", "Europe/Kirov", "Europe/Kyiv", "Europe/Lisbon", "Europe/London", "Europe/Madrid", "Europe/Malta", "Europe/Minsk", "Europe/Moscow", "Europe/Paris", "Europe/Prague", "Europe/Riga", "Europe/Rome", "Europe/Samara", "Europe/Saratov", "Europe/Simferopol", "Europe/Sofia", "Europe/Tallinn", "Europe/Tirane", "Europe/Ulyanovsk", "Europe/Vienna", "Europe/Vilnius", "Europe/Volgograd", "Europe/Warsaw", "Europe/Zurich", "Indian/Chagos", "Indian/Maldives", "Indian/Mauritius", "Pacific/Apia", "Pacific/Auckland", "Pacific/Bougainville", "Pacific/Chatham", "Pacific/Easter_Island", "Pacific/Efate", "Pacific/Fakaofo", "Pacific/Fiji", "Pacific/Galapagos", "Pacific/Gambier", "Pacific/Guadalcanal", "Pacific/Guam", "Pacific/Honolulu", "Pacific/Kanton", "Pacific/Kiritimati", "Pacific/Kosrae", "Pacific/Kwajalein", "Pacific/Marquesas", "Pacific/Nauru", "Pacific/Niue", "Pacific/Norfolk", "Pacific/Noumea", "Pacific/Pago_Pago", "Pacific/Palau", "Pacific/Pitcairn", "Pacific/Port_Moresby", "Pacific/Rarotonga", "Pacific/Tahiti", "Pacific/Tarawa", "Pacific/Tongatapu" ) timeDate/R/calendar-periods.R0000755000176200001440000002014414263246023015554 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # FUNCTION: DESCRIPTION: # periods Returns start and end dates for rolling periods # periodicallyRolling Returns start and end dates for periodically periods # monthlyRolling Returns start and end dates for monthly periods ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # periods <- function (x, period = "12m", by = "1m", offset = "0d") { # A function implemented by Diethelm Wuertz and Yohan Chalabi # Description: # Returns start and end dates for a rolling periods # Arguments: # x - an object of class timeDate # period - a span string, consisting of a length integer # and a unit value, e.g. "52w" for 52 weeks. # by - a span string, consisting of a length integer # and a unit value, e.g. "4w" for 4 weeks. # offset - a span string, consisting of a length integer # and a unit value, e.g. "0d" for no offset. # Details: # Periodically Rolling - Allowed unit values are "m" for # 4 weeks, "w" for weeks, "d" for days, "H" for hours, "M" # for minutes, and "S" for seconds. # Monthly Calendar Rolling - The only allowed allowed unit # value is "m" for monthly periods. Express a quarterly # period by "3m", a semester by "6m", a year by "12m" etc. # Example: # x = time(as.timeSeries(data(smallcap.ts))) # periods(x, "12m", "1m") # periods(x, "52w", "4w") # FUNCTION: # Check x: stopifnot(is(x, "timeDate")) # Check Periods: Names = c("m", "w", "d", "H", "M", "S") periodUnit = gsub("[ 0-9]", "", period, perl = TRUE) stopifnot(periodUnit %in% Names) offsetUnit = gsub("[ 0-9]", "", offset, perl = TRUE) stopifnot(offsetUnit %in% Names) byUnit = gsub("[ 0-9]", "", by, perl = TRUE) stopifnot(byUnit %in% Names) # Rolling Periods: if (periodUnit == "m" & byUnit == "m") { ans = monthlyRolling(x, period, by) } else { ans = periodicallyRolling(x, period, by) } # Return Value: ans } # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # periodicallyRolling <- function(x, period = "52w", by = "4w", offset = "0d") { # A function implemented by Diethelm Wuertz and Yohan Chalabi # Description: # Returns start and end dates for a rolling periods # Arguments: # x - an object of class timeDate # period - a span string, consisting of a length integer # and a unit value, e.g. "52w" for 52 weeks. # by - a span string, consisting of a length integer # and a unit value, e.g. "4w" for 4 weeks. # offset - a span string, consisting of a length integer # and a unit value, e.g. "0d" for no offset. # Details: # Allowed unit values are "m" for 4 weeks, "w" for weeks, # "d" for days, "H" for hours, "M" for minutes, and "S" # for seconds. # Example: # periodicallyRolling((time(as.timeSeries(data(smallcap.ts))))) # FUNCTION: # Check: stopifnot(is(x, "timeDate")) # Settings: periods = c(4*7*24*3600, 7*24*3600, 24*3600, 3600, 60, 1) names(periods) = Names = c("m", "w", "d", "H", "M", "S") periodUnit = gsub("[ 0-9]", "", period, perl = TRUE) stopifnot(periodUnit %in% Names) offsetUnit = gsub("[ 0-9]", "", offset, perl = TRUE) stopifnot(offsetUnit %in% Names) byUnit = gsub("[ 0-9]", "", by, perl = TRUE) stopifnot(byUnit %in% Names) # Extract Periods: period = as.integer(gsub("[mwdHMS]", "", period, perl = TRUE)) * periods[periodUnit] offset = as.integer(gsub("[mwdHMS]", "", offset, perl = TRUE)) * periods[offsetUnit] by = as.integer(gsub("[mwdHMS]", "", by, perl = TRUE)) * periods[byUnit] # Convert timeDate to GMT-POSIX posixGMT = as.POSIXct( timeDate(x, zone = x@FinCenter, FinCenter = "GMT"), tz = "GMT") # Compute Julian counts (x) and series values (y) Origin = as.POSIXct("1970-01-01", tz = "GMT") u <- as.integer(difftime(posixGMT, Origin, tz = "GMT", units = "secs")) xout = seq(u[1] + offset, u[length(u)], by = by) toGMT = Origin + as.integer(xout) fromGMT = toGMT - period toGMT = toGMT[fromGMT >= posixGMT[1]] fromGMT = fromGMT[fromGMT >= posixGMT[1]] to = timeDate(toGMT, zone = "GMT", FinCenter = x@FinCenter) from = timeDate(fromGMT, zone = "GMT", FinCenter = x@FinCenter) # Windows: windows = list(from = from, to = to) attr(windows, "control") = c(start = start(x), end = end(x)) # Return Value: windows } # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # monthlyRolling <- function(x, period = "12m", by = "1m") { # A function implemented by Diethelm Wuertz and Yohan Chalabi # Description: # Returns start and end dates for monthly periods # Arguments: # x - an object of class timeDate # period - a span string, consisting of a length integer # and a unit value, e.g. "12m" for 1 calendar year. # by - a span string, consisting of a length integer # and a unit value, e.g. "1m" for 1 calendar month. # Details: # The only allowed allowed unit value is "m" for monthly # periods. Express a quarterly period by "3m", a semester # by "6m", a year by "12m" etc. # Example: # monthlyRolling((time(as.timeSeries(data(smallcap.ts))))) # FUNCTION: # Check: stopifnot(is(x, "timeDate")) # Get Window Parameter: periodLength = as.numeric(substr(period, 1, nchar(period)-1)) periodUnit = substr(period, nchar(period), nchar(period)) byLength = as.numeric(substr(by, 1, nchar(by)-1)) byUnit = substr(by, nchar(by), nchar(by)) stopifnot(periodUnit == "m") stopifnot(byUnit == "m") # Make Windows - expand series x to a monthly series positions = x startPositions = unique(timeFirstDayInMonth(positions)) # for non monthly data # startPositions@Data[1] <- start(x)@Data endPositions = unique(timeLastDayInMonth(positions)) # for non monthly data # endPositions@Data[length(endPositions)] <- end(x)@Data numberOfPositions = length(startPositions) startSeq <- seq(from = 1, to = (numberOfPositions-periodLength + 1), by = byLength) startDates = startPositions[startSeq] endSeq <- seq(from = periodLength, to = numberOfPositions, by = byLength) endDates = endPositions[endSeq] # Windows: windows = list(from = startDates, to = endDates) attr(windows, "control") = c(start = start(positions), end = end(positions)) # Return Value: windows } ################################################################################ timeDate/R/base-format.R0000755000176200001440000000407214263246023014542 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # FUNCTION: DESCRIPTION: # format.timeDate Formats 'timeDate' as ISO conform string ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # format.timeDate <- function(x, format = "", tz = "", usetz = FALSE, ...) { # A function implemented by Diethelm Wuertz and Yohan Chalabi # Description: # Formats 'timeDate' as ISO conform string # FUNCTION: if (!inherits(x, "timeDate")) stop("wrong class") if (tz != "") finCenter(x) <- tz FinCenter <- finCenter(x) num <- .formatFinCenterNum(as.numeric(getDataPart(x)), FinCenter, type = "gmt2any") ans <- format(as.POSIXct(num, origin = "1970-01-01", tz = "GMT"), tz = "GMT", format = format) names(ans) <- names(getDataPart(x)) # Should add tz from table in formatFinCenter if (usetz) ans <- paste(ans, finCenter(x)) # Return Value: ans } ################################################################################ timeDate/R/stats-kurtosis.R0000755000176200001440000001077014272565601015371 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # FUNCTION: DESCRIPTION: # kurtosis Returns a number which is the kurtosis of the data # kurtosis.default Default method # kurtosis.data.frame Method for objects of class data.frame # kurtosis.POSIXct Method for objects of class POSIXct # kurtosis.POSIXlt Method for objects of class POSIXlt ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # kurtosis <- function (x, ...) { # A function implemented by Diethelm Wuertz # FUNCTION: # Return Value: UseMethod("kurtosis") } # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # kurtosis.default <- function (x, na.rm = FALSE, method = c("excess", "moment", "fisher"), ...) { # A function implemented by Diethelm Wuertz # Description: # Returns the value of the kurtosis of a distribution function. # Details: # Missing values can be handled. # FUNCTION: # Method: method = match.arg(method) stopifnot(NCOL(x) == 1) # Warnings: if (!is.numeric(x) && !is.complex(x) && !is.logical(x)) { warning("argument is not numeric or logical: returning NA") return(as.numeric(NA))} # Remove NAs: if (na.rm) x = x[!is.na(x)] # Kurtosis: n = length(x) if (is.integer(x)) x = as.numeric(x) if (method == "excess") { kurtosis = sum((x-mean(x))^4/as.numeric(var(x))^2)/length(x) - 3 } if (method == "moment") { kurtosis = sum((x-mean(x))^4/as.numeric(var(x))^2)/length(x) } if (method == "fisher") { kurtosis = ((n+1)*(n-1)*((sum(x^4)/n)/(sum(x^2)/n)^2 - (3*(n-1))/(n+1)))/((n-2)*(n-3)) } # Add Control Attribute: attr(kurtosis, "method") <- method # Return Value: kurtosis } # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # kurtosis.data.frame <- function (x, na.rm = FALSE, method = c("excess", "moment", "fisher"), ...) { # A function implemented by Diethelm Wuertz ## Amended by Georgi N. Boshnakov to set attribute 'method' as documented. ## (changed the signature from (x, ...) to make this straightforward) # FUNCTION: method <- match.arg(method) # Return Value: structure(sapply(x, kurtosis, na.rm = na.rm, method = method, ...), method = method) } # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # kurtosis.POSIXct <- function (x, ...) { # A function implemented by Diethelm Wuertz # FUNCTION: # Return Value: structure(kurtosis(unclass(x), ...), class = oldClass(x)) } # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # kurtosis.POSIXlt <- function (x, ...) { # A function implemented by Diethelm Wuertz # FUNCTION: # Return Value: as.POSIXlt(kurtosis(as.POSIXct(x), ...)) } ################################################################################ timeDate/R/timeDate-generateDST.R0000755000176200001440000002717314346557364016267 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # FUNCTION: DESCRIPTION: # .genDaylightSavingTime Create file with Daylight Saving Time Rules for all # centers in listFinCenter() ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # # The following DST Rules were extracted from tzdata (version tzdata2008e) # and integrated into R functions. ## ## GNB: the rules were updated anumber of times later (but seemingly keeping the ## financial centers unchanged ## ## GNB: Dec 2022 ## - updated .genDaylightSavingTime(), see comments in the source below. ## - turned 'finCenter' into an argument of the function .genDaylightSavingTime <- function(filename = "DaylightSavingTime.R", finCenter = listFinCenter(), aliases = NULL, end_year = 2100) { ## finCenter <- listFinCenter() finCenter ## message on console cat( "\t this function generates DST rules from the output \t of the command line \"zdump\" on a _linux_ box.\n") # create source file cat(" # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA # fCalendar::2A-DaylightSavingTime.R ################################################################################ # FUNCTION: DESCRIPOTION: # Algiers Returns Algiers Daylight Saving Time Rules # ... # Honolulu Returns Honolulu Daylight Saving Time Rules ################################################################################ ################################################################################ # The following DST Rules were originally extracted from tzdata (version tzdata2007k) # and integrated into R functions. The rules were updated a number of times since then. # GNB: see the comments below for changes in Dec 2022 ################################################################################ # # GNB (Dec 2022): # # This file was auto-generated by .genDaylightSavingTime() (but see below) with # suitable arguments: # # .genDaylightSavingTime(finCenter = fc_work, aliases = aliases, end_year = 2100) # # where 'fc_work' is the list financial centers and 'aliases' is a character vectors # of lines of the form old_tz <- new_tz, for compatibility with previous versions # of timeDate (old_tz is an old tz/FinCenter name, new_tz is the current one. # # The call '.genDaylightSavingTime()' will use listFinCenter() for FinCenter, # thus updating the DST information but not changing the list of financial # centers (even if there are some in zoneinfo database). However, 'aliases' # will not be created (except for a handful of special ones). # # The file generated from the above call was then postprocessed with: # # source('DaylightSavingTime.R') # source('~/repos/rmetrics/pkg/timeDate/work/DST_rules/gnb_compact_dst_rules.R') # create_dst_file_new(fc_work[-c(51)], aliases = aliases) # # where we drop (-51) 'America/Ciudad_Juarez' since it errors. The code used for # this is loose at the time of writing this note (Dec 2022). I will include it # when I have time to clean it up. # # This post-processing generates a replacement for the file generated by # .genDaylightSavingTime(finCenter and 'sysdata.rda'. Both files need to be put # in 'R/'. If you want to use the file produced by .genDaylightSavingTime # without post processing, make sure to remove the index database from the # current sysdata.R. ", file = filename) ## TODO: create aliases in a separate file, see the last sentence above? ## GNB: track unsuccessful zones failed <- character(0) all_fccity <- strsplit(finCenter, "/") for (k in seq(length(finCenter))) { ## GNB: added -c end_year. The default of zdump is 2500, which seems ## excessive for our purposes. # run zdump linux command zdump <- try(system(paste("zdump -v -c", end_year, finCenter[k], sep=" "), intern=TRUE)) zdump <- strsplit(zdump, " +" ) ## GNB: 2022-10-01 ## This seems to assume that all elements of zdump have the same length: ## zdump <- matrix(unlist(zdump), nrow = length(zdump), byrow = TRUE) ## Also, the code below uses explicitly refers to columns up to 16. ## ## However now there are differently structured lines at the start and end. ## For example ## zdump -v Africa/Abidjan ## Africa/Abidjan -9223372036854775808 = NULL ## Africa/Abidjan -9223372036854689408 = NULL ## Africa/Abidjan Mon Jan 1 00:16:07 1912 UT = Sun Dec 31 23:59:59 1911 LMT isdst=0 gmtoff=-968 ## Africa/Abidjan Mon Jan 1 00:16:08 1912 UT = Mon Jan 1 00:16:08 1912 GMT isdst=0 gmtoff=0 ## Africa/Abidjan 9223372036854689407 = NULL ## Africa/Abidjan 9223372036854775807 = NULL ## ## TODO: need to check if these lines change the intepratation. ## ## For now, try dropping non-standard lines: idrop <- sapply(zdump, length) zdump <- zdump[ idrop == 16 ] ## GNB: guard against empty data (after removing pre and post-amble ## TODO: need to process it as well. But how? if(length(zdump) == 0) { cat("finCenter ", finCenter[k], " has no rules; skipping it", "\n") cat("\n\n ## TODO: finCenter ", finCenter[k], " has no rules; skipping it", "\n\n", file = filename, append = TRUE) failed <- c(failed, finCenter[k]) next } zdump <- matrix(unlist(zdump), nrow = length(zdump), byrow = TRUE) # extract data fccity <- all_fccity[[k]] tms <- zdump[,5] dts <- as.Date(paste(zdump[,3], zdump[,4], zdump[,6]), format="%b %d %Y") tzs <- zdump[,14] isdst <- as.integer(substr(zdump[,15],7,8)) # important to use nchar(zdump[,16] because length of gmtoff is variable gmtoff <- as.integer(substr(zdump[,16],8,nchar(zdump[,16]))) ### # Determine the index of row which are relevant for DST rules ### if (sum(isdst)==0) { ## when there is no DST rules for a given TZ ### currentYear <- format(Sys.Date(), "%Y") ### yearDTS <- format(dts, "%Y") ### index <- length(yearDTS[yearDTS <= currentYear]) ### } else { ### x <- isdst[1] ### index <- NULL ### j <- 1 ### for (i in seq(length(isdst))) { ### if (x != isdst[i]) { ### index[j] <- i-2 ### x <- isdst[i] ### j <- j+1 ### } ### } ### } # Determine the index of row which are relevant for offset/gmtoff rules test <- gmtoff - rep(gmtoff[1],length(gmtoff)) if (sum(test)==0) { ## when there is no DST rules for a given TZ currentYear <- format(Sys.Date(), "%Y") yearDTS <- format(dts, "%Y") index <- length(yearDTS[yearDTS <= currentYear]) } else { x <- gmtoff[1] index <- NULL j <- 1 for (i in seq(length(gmtoff))) { if (x != gmtoff[i]) { index[j] <- i-2 x <- gmtoff[i] j <- j+1 } } # YC: add last entry; important for short DST table like # Tokyo(), Singapore, ... ! index[length(index) + 1] <- index[length(index)] + 2 } # construct table rule for the given fin center dst <- data.frame(cbind(paste(dts[index], tms[index]), gmtoff[index], isdst[index], tzs[index]), stringsAsFactors = FALSE) ## GNB: convert 'Easter' to 'Easter_Island' to avoid clash with Easter() holiday ## Note: the caller should also adjust "Easter" in the list of fin centers. ## This cannot be done before calling this function since it needs to ## give "Easter" to 'zdump' and change the name only on output. base_fccity <- fccity[length(fccity)] if(base_fccity == "Easter") base_fccity <- "Easter_Island" colnames(dst) <- c(base_fccity, "offSet", "isdst", "TimeZone") # force offSet and isdst to be integer columns dst$offSet <- as.integer(dst$offSet) dst$isdst <- as.integer(dst$isdst) # add numeric column dst$numeric <- as.numeric(as.POSIXct(dst[[1]], format = "%Y-%m-%d %H:%M:%S", tz = "GMT")) # add function to file 'filename' if table exits if (nrow(dst) != 0) { dstFile <- file(filename, open = "a") cat("\"", base_fccity, "\"", " <- function () {\n", sep ="", file = dstFile) dput(dst, file = dstFile) cat("}\n\n", file = dstFile) close(dstFile) } else { cat("Error : Empty table for", finCenter[k], "\n") } } if(!is.null(aliases)) cat("\n", aliases, sep = "\n", file = filename, append = TRUE) cat(" ## this is for compatibility purpose with very old versions of timeDate; ## but 'Frankfurt' is sensible anyway. BuenosAires <- Buenos_Aires # now wordds are separated by underscore LosAngeles <- Los_Angeles MexicoCity <- Mexico_City NewYork <- New_York Eastern <- New_York HongKong <- Hong_Kong KualaLumpur <- Kuala_Lumpur Frankfurt <- Berlin Pacific <- Los_Angeles ", file = filename, append = TRUE) list(file = filename, failed = failed) } timeDate/R/AllGeneric.R0000755000176200001440000000331714263246023014350 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received A copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # setGeneric("align", function(x, ...) standardGeneric("align")) #' @export setGeneric("atoms", function(x, ...) standardGeneric("atoms")) #' @export setGeneric("finCenter", function(x) standardGeneric("finCenter")) #' @export setGeneric("finCenter<-", function(x, value) standardGeneric("finCenter<-")) #' @export setGeneric("isDaily", function(x) standardGeneric("isDaily")) #' @export setGeneric("isQuarterly", function(x) standardGeneric("isQuarterly")) #' @export setGeneric("isMonthly", function(x) standardGeneric("isMonthly")) #' @export setGeneric("isRegular", function(x) standardGeneric("isRegular")) ################################################################################ timeDate/R/base-unique.R0000755000176200001440000000317114263246023014557 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # MEHODS: DESCRIPTION: # unique.timeDate Makes a 'timeDate' object unique ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # unique.timeDate <- function(x, ...) { # A function Implemented by Diethelm Wuertz # Description: # Returns a timeDate object with duplicate entries removed # Arguments: # x - an object of class timeDate # incomparables - not used # FUNCTION: # Return Value: x@Data <- unique(x@Data, ...) x } ################################################################################ timeDate/R/timeDate.R0000644000176200001440000004605714535012765014112 0ustar liggesusers# This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # FUNCTION: DESCRIPTION: # timeDate Creates a 'timeDate' object from given dates # setMethod("timeDate", "character", # setMethod("timeDate", "timeDate", # setMethod("timeDate", "POSIXt", # setMethod("timeDate", "Date", # setMethod("timeDate", "numeric", # setMethod("timeDate", "missing", # setMethod("timeDate", "ANY", # FUNCTION: # .formatFinCenter Internal called by timeDate # strptimeDate Creates for character time stamps a 'timeDate' object ################################################################################ setGeneric("timeDate", function(charvec, format = NULL, zone = "", FinCenter = "", ...) { # A function implemented by Yohan Chalabi and Diethelm Wuertz # Description: # Creates a "timeDate' object from a character vector # Arguments: # charvec - a character vector of dates and times. Alternatively # it may be a 'timeDate', a 'Date', or a 'POSIXt' object. In # these cases the argument will be coerced into a character # string or character vector. # format - the format specification of the input character # vector. If set to NULL autodetection will be tried. # zone - the time zone or financial center where the data # were recorded. # FinCenter - a character string with the the location of # the financial center named as "continent/city" where the # data will be used. # Value: # Returns a S4 object of class 'timeDate'. # Note: # Changeover DST not yet fully implemented! # Examples: # timeDate("2004-01-01") # timeDate(c("2004-01-01", "2004-01-01")) # timeDate("2004-01-01 00:00:00") # timeDate("20040101") # timeDate("200401011600") # timeDate("20040101000000") # timeDate("1/1/2004") # American format # timeDate("2004-01-01", FinCenter = "GMT") # timeDate("20040101", FinCenter = "GMT") # td = timeDate("2004-01-01", FinCenter = "GMT"); timeDate(td) # td = timeDate("20040101", FinCenter = "GMT"); timeDate(td) standardGeneric("timeDate") } ) setMethod("timeDate", "character", function(charvec, format = NULL, zone = "", FinCenter = "", dst_gap = "+") { # Settings and Checks: if (zone == "") zone <- getRmetricsOptions("myFinCenter") if (FinCenter == "") FinCenter <- getRmetricsOptions("myFinCenter") # ISO Date/Time Format: isoDate <- "%Y-%m-%d" isoFormat <- "%Y-%m-%d %H:%M:%S" # Autodetect Format : if (is.null(format)) ## 2023-12-09 GNB: ## whichFormat(charvec[1]) ## fails if charvec[1] is NA, even if otherwise the strings are uniform, ## call whichFormat with the whole vector: format <- whichFormat(charvec) if (format %in% c("unknown", "counts")) #-> "counts" catch potential problems from timeSeries return(timeDate(NA, zone = zone, FinCenter = FinCenter)) # Midnight Standard & conversion to isoFormat: ct <- midnightStandard2(charvec, format) ## Do conversion ## YC: .formatFinCenterNum faster than .formatFinCenter ## TS: using zone is correct (charvec is converted to GMT) num <- .formatFinCenterNum(unclass(ct), zone, type = "any2gmt", dst_gap = dst_gap) ## Manually create the POSIXct object: ## it is important to set manually the tzone flag, num <- if (getRversion() >= "2.12.0") .POSIXct(num, "GMT") else structure(num, class = c("POSIXt", "POSIXct"), tzone = "GMT") new("timeDate", Data = num, # Note format is automatically created in # initialize,timeDate-method FinCenter = as.character(FinCenter)) } ) setMethod("timeDate", "timeDate", function(charvec, format = NULL, zone = "", FinCenter = "", dst_gap = "+") { # Description: # timeDate # if zone not provided, change only the FinCenter in charvec (timeDate) if (zone == "") { if (FinCenter != "") finCenter(charvec) <- FinCenter charvec } else { callGeneric(format(charvec), zone = zone, FinCenter = FinCenter, dst_gap = dst_gap) } } ) setMethod("timeDate", "POSIXt", function(charvec, format = NULL, zone = "", FinCenter = "") { # Description: # POSIXt if (!(zone %in% c("", "GMT", "UTC"))) { callGeneric(format(charvec), zone = zone, FinCenter = FinCenter) } else { # Since zone is not provided consider that charvec is in GMT charvec <- as.POSIXct(charvec) attr(charvec, "tzone") <- "GMT" # FinCenter if (FinCenter == "") FinCenter = getRmetricsOptions("myFinCenter") new("timeDate", Data = charvec, # Note format is automatically created in # initialize,timeDate-method FinCenter = as.character(FinCenter)) } } ) setMethod("timeDate", "Date", function(charvec, format = NULL, zone = "", FinCenter = "", dst_gap = "+") { # Description: # Date if (!(zone %in% c("", "GMT", "UTC"))) { callGeneric(format(charvec), zone = zone, FinCenter = FinCenter, dst_gap = dst_gap) } else { # Since zone is not provided consider that charvec is in GMT charvec <- as.POSIXct(charvec) attr(charvec, "tzone") <- "GMT" # FinCenter if (FinCenter == "") FinCenter = getRmetricsOptions("myFinCenter") new("timeDate", Data = charvec, # Note format is automatically created in # initialize,timeDate-method FinCenter = as.character(FinCenter)) } }) setMethod("timeDate", "numeric", function(charvec, format = NULL, zone = "", FinCenter = "") { # Description: # numeric # DW: Modification of setMethod("timeDate", "numeric") to handle # decimal like inputs (exactly that what "yearmon" does) if (!is.null(format) & (format == "%Y" || format == "yearmon" )) { # DW: Handles what is known as yearmon format # Example: timeDate(2008+seq(0, 23, by = 1)/12, "yearmon") # Quarterly: timeDate(2008+seq(2, 23, by = 3)/12, format = "%Y") # The next 4 lines are borrowed from Zeileis' yearmon() year <- floor(charvec + 0.001) month <- floor(12 * (charvec - year) + 1 + 0.5 + 0.001) dd.start <- as.Date(paste(year, month, 1, sep = "-")) # here we concentrate to the end of month date ... dd.end <- dd.start + 32 - as.numeric(format(dd.start + 32, "%d")) charvec <- as.POSIXct(dd.end, origin = "1970-01-01", tz = "GMT") } else { charvec <- as.POSIXct(charvec, origin = "1970-01-01", tz = "GMT") } callGeneric() } ) setMethod("timeDate", "missing", function(charvec, format = NULL, zone = "", FinCenter = "") { # Description: # missing callGeneric(Sys.time(), format, zone, FinCenter) } ) setMethod("timeDate", "ANY", function(charvec, format = NULL, zone = "", FinCenter = "", dst_gap = "+") { # Description: # ANY callGeneric(as.character(charvec), format, zone, FinCenter, dst_gap = dst_gap) } ) ################################################################################ .formatFinCenterNum <- function(num, FinCenter, type = c("gmt2any", "any2gmt"), dst_gap = c("+", "-", "NA", "")) { ## A function implemented by Diethelm Wuertz and Yohan Chalabi. ## ## Modified by GNB to work correctly around DST changes and documented below ## to easy further maintenance. Also added options to treat non-existent DST ## times (gaps) at the time of switching to DST. ## ## Description: ## Internal function used by function timeDate() ## ## When the clocks are moved forward (usually in spring) in a particular ## zone an hour is skipped. What to do if such a time is ## specified. Technically, it is NA. But using that as default is likely to ## cause more harm than good. A number of alternatives may be sensible in ## particular cases. The new argument 'dst_gap' offers the possibility to ## move it up or down by one hour, or to set it to NA. ## ## Let y be the time at time zone Z and t the corresponding UTC/GMT time. ## timeDate objects store t. We have ## t = y - DST - GMToffset = y - offset ## and ## y = t + DST + GMToffset = t + offset ## before the modification the function was essentially using ## t = y - offset ## y = t + offset ## but this lead to misterious shifts around DST changes, except for the ## meridians of London and Central Europe. ## ## For example, Bulgaria/Sofia is GMT+2 non-DST and GMT+3 during DST. The ## switch to DST in 1983 was at "1983-03-27 01:00:00". so this time doesn't ## actually exist in that time zone. ## With timeDate v4021.106 (and earlier) we get ## ## Sofia_to_DST_char <- c("1983-03-26 23:00:00", ## "1983-03-27 00:00:00", # change to DST; doesn't exist in Sofia DST ## "1983-03-27 01:00:00", ## "1983-03-27 02:00:00", ## "1983-03-27 03:00:00") ## ## Sofia_to_DST_test <- Sofia_to_DST_char ## Sofia_to_DST_test[2] <- "1983-03-27 01:00:00" # gap to gap + 1 hour ## ## Sofia_to_DST <- timeDate(Sofia_to_DST_char, zone = "Sofia", FinCenter = "Sofia") ## ## > Sofia_to_DST ## Sofia ## [1] [1983-03-26 23:00:00] [1983-03-26 23:00:00] [1983-03-27 00:00:00] ## [4] [1983-03-27 01:00:00] [1983-03-27 03:00:00] ## ## We see that 1am and 2am are wrong. 0am on this date doesn't exist, so it ## being moved back by an hour may be suitable in some circumstances. 23pm ## and 3am are ok. ## ## The underlying GMT times: ## ## > Sofia_to_DST@Data ## [1] "1983-03-26 21:00:00 GMT" "1983-03-26 21:00:00 GMT" ## [3] "1983-03-26 22:00:00 GMT" "1983-03-26 23:00:00 GMT" ## [5] "1983-03-27 00:00:00 GMT" ## ## Note that here 2am GMT is the time of switch to DST. We see that the ## GMT's are correct (with the caviat for 0am Sofia) but the conversion for ## 22pm and 23pm GMT adds the non-DST GMToffset (+2), instead of GMT+3. ## ## The source of the errors is revealed by writing the formulas so that they ## show what is a function of what. ## ## Let y be the time at time zone Z and t the corresponding UTC/GMT time ## (both in seconds since some origin, typically "1970-01-01"). ## "timeDate" objects store t. We have ## ## t = y - DST(y) - GMToffset(y) = y - offset(y) ## and ## y = t + DST(y) + GMToffset(y) = t + offset(y) ## ## Time zone tables normally contain y paired with offset(y), so computing t ## from y is straightforward. But for computing y from t we need offset(y), ## not offset(t). GMToffset(y) typically is fixed at a given place (although ## changes do happen) but even so, DST(y) may not be the same as DST(t) at ## and just after the switch of DST (on or off). if (FinCenter == "GMT" || FinCenter == "UTC") return(num) type <- match.arg(type) signum <- switch(type, "gmt2any" = +1, "any2gmt" = -1) ## otherwise give error dst_gap <- match.arg(dst_gap) # Get the DST list from the database: try <- try(dst.list <- rulesFinCenter(FinCenter), silent = TRUE) if (inherits(try, "try-error")) stop(gettextf("'%s' is not a valid FinCenter.", FinCenter)) offSetIdx <- findInterval(num, dst.list$numeric) offSetIdx[offSetIdx < 1] <- 1 # consider first DST rule if event occured before ## GNB: add check for non-existent times; ## assuming DST skips some time interval. if(signum == -1) { # any2gmt ## TODO: Check if this resolves cases like BDST in UK during WW2 shifted_offset <- offSetIdx indx <- which(dst.list$isdst[offSetIdx] == 1) if(length(indx) > 0 && (dst_gap == "+" || dst_gap == "NA")) { ## GNB: check for non-existent DST times at FinCenter ## ## TODO: handle the case when offSetIdx contains 1 ## DONE 2023-12-06 handle the case when offSetIdx contains 1 ## was giving error, eg for ## holidayLONDON(1915:1917) ## but not for the individual years, these were ok: ## holidayLONDON(1915) ## holidayLONDON(1916) ## holidayLONDON(1917) ## ## TODO: check the fix? I have somewhat forgotten the details offSetIdx_minus1 <- offSetIdx - 1 if(any(offSetIdx_minus1 == 0)) offSetIdx_minus1[offSetIdx_minus1 == 0] <- 1 #dst_skip <- dst.list$offSet[offSetIdx][indx] - dst.list$offSet[offSetIdx - 1][indx] #adjust <- dst.list$offSet[offSetIdx][indx] adjust <- dst.list$offSet[offSetIdx][indx] - dst.list$offSet[offSetIdx_minus1][indx] #adjust <- 3600 wrk <- num[indx] - adjust shifted_offset[indx] <- findInterval(wrk, dst.list$numeric) shifted_offset[shifted_offset < 1] <- 1 changed <- shifted_offset != offSetIdx if(dst_gap == "+") { #offSetIdx[changed] <- shifted_offset[changed] ## TODO: 3600? better to choose suitable elements of adjust #num[changed] <- num[changed] + dst.list$offSet[offSetIdx - 1][indx] #num[indx] <- num[indx] + 3600 # adjust[indx][changed] #dst_skip num[changed] <- num[changed] + 3600 # adjust[indx][changed] #dst_skip } else # dst_gap == "NA" num[changed] <- NA } num - dst.list$offSet[offSetIdx] } else { ## gmt2any ## GNB: this was just ## num + dst.list$offSet[offSetIdx] ## but this is incorrect around DST changes, since the offset offSetIdx ## may need correction, particularly evifdent for time zones further from GMT, ## ## res <- num + dst.list$offSet[offSetIdx] offset_after <- findInterval(res, dst.list$numeric) offset_after[offset_after < 1] <- 1 offset_diff <- dst.list$offSet[offset_after] - dst.list$offSet[offSetIdx] res[offset_diff > 0] <- res[offset_diff > 0] + 3600 flag_dst_special <- num + 3600 <= dst.list$numeric[offset_after] ## ambiguous t change from DST to non-DST; consider DST res[offset_diff < 0 & flag_dst_special] + 3600 res[offset_diff < 0 & !flag_dst_special] <- res[offset_diff < 0] - 3600 res } } ## 2023-01-08 GNB: removed .formatFinCenter() since no longer used. ## ## .formatFinCenter <- ## function(charvec, FinCenter, type = c("gmt2any", "any2gmt")) ## { ## # A function implemented by Diethelm Wuertz ## # thanks to contributions from Martin Maechler ## ## # Description: ## # Internal function used by function timeDate() ## ## if (FinCenter == "GMT" || FinCenter == "UTC") ## return(charvec) ## ## ## else start working: ## type <- match.arg(type) ## signum <- switch(type, ## "gmt2any" = +1, ## "any2gmt" = -1) ## ## otherwise give error ## ## ## # Get the DST list from the database: ## try <- try(dst.list <- rulesFinCenter(FinCenter), silent = TRUE) ## if (inherits(try, "try-error")) ## stop(gettextf("'%s' is not a valid FinCenter.", FinCenter)) ## # Update list with last entry: ## z = as.matrix(dst.list) ## z[dim(z)[1], ] ## vec1 = as.vector(c(z[, 1], "2099-01-01 00:00:00")) ## vec2 = as.vector(c(z[, 2], rev(z[, 2])[1])) ## dst.list = data.frame(ruleChanges = as.character(vec1), ## offSet = as.integer(vec2)) ## # Extract the dates when DST was changed: ## dst.dates = as.character(dst.list[, 1]) ## # Extract the Offsets to GMT ## dst.offsets = as.character(dst.list[, 2]) ## # The new dates ar the charvec's: ## new.dates = charvec ## # The new offsets are still unknown: ## new.offsets = rep(NA, length(charvec)) ## # Combine all Dates and Offsets: ## dates = c(dst.dates, new.dates) ## offsets = c(dst.offsets, new.offsets) ## # The number of Offsets: ## n = length(dates) ## # Order the Dates: ## o = order(dates) ## # Dates and Offsets in the right order: ## o.dates = dates[o] ## o.offsets = offsets[o] ## # The points at which we have to determine the offsets ## xout = (1:n)[is.na(o.offsets)] ## # The date indexes: ## x = (1:n)[-xout] ## # The corresponding offsets ## y = o.offsets[x] ## # The new offsets: ## yout = approx(x, y , xout, method = "constant")$y ## # All dates: ## m = length(dst.dates) ## # Put them in the right order: ## # Added DW: 2005-05-27 ## idx = order(o[which(o>m)]) ## offSets = yout[idx] ## dt = strptime(charvec, "%Y-%m-%d %H:%M:%S", tz = "GMT") ## ## ## Return Value: ## format(dt + signum * offSets, format="%Y-%m-%d %H:%M:%S") ## } strptimeDate <- function(x, format = whichFormat(x), tz = "") { # A function implemented by Diethelm Wuertz # Description: # Creates for character time stamps a 'timeDate' object # Example: # timeDate(); strptimeDate(as.character(Sys.timeDate())) # Note: # This function works like strptime. # FUNCTION: # Check Arguments: stopifnot(is.character(x)) # Settings and Checks: if (tz == "") tz = getRmetricsOptions("myFinCenter") # Create 'timeDate': ans = timeDate(x, format, zone = tz, FinCenter = tz) # Return Value: ans } ################################################################################ timeDate/R/timeDate-finCenter.R0000755000176200001440000000272214263246023016011 0ustar liggesusers# This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received A copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # setMethod("finCenter", "timeDate", function(x) { x@FinCenter } ) # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # setMethod("finCenter<-", "timeDate", function(x, value) { x@FinCenter <- value; x } ) ################################################################################ timeDate/R/methods-names.R0000755000176200001440000000251614263246023015107 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # FUNCTION: DESCRIPTION: # names.timeDate Prints 'timeDate' object ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # setMethod("names", "timeDate", function(x) names(x@Data)) setReplaceMethod("names", "timeDate", function(x, value) { names(x@Data) <- value x }) timeDate/R/calendar-atoms.R0000755000176200001440000000722114263246023015233 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # METHOD: DESCRIPTION: # atoms,timeDate Returns date/time atoms from a 'timeDate' object # months,timeDate Extracts months atom from a 'timeDate' object ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # setMethod("atoms", "timeDate", function(x, ...) { # A function implemented by Diethelm Wuertz # and improved by Yohan Chalabi # Description: # Extracts atoms from a 'timeDate' object. # Arguments: # x - a 'timeDate' object from which to extract the # calendar "atoms". # Value: # Returns a data.frame with the following calendar atoms: # Y(ear), m(onth), d(ay), H(our), M(inutes), S(econds). # FUNCTION: # Check Class Type: if (!inherits(x, "timeDate")) stop("Wrong class type") # mdy: X <- as.POSIXlt(x, tz = "GMT") Y <- X$year + 1900 m <- X$mon + 1 d <- X$mday H <- X$hour M <- X$min S <- X$sec # Data Frame: ans <- data.frame(Y = Y, m = m, d = d, H = H, M = M, S = S) attr(ans, "control") <- c(FinCenter = finCenter(x)) # Return Value: ans }) # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # setMethod("atoms", "ANY", function(x, ...) { # A function implemented by Diethelm WUertz # FUNCTION: # Return Value: invisible(x) }) ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # setMethod("months", "timeDate", function(x, abbreviate=NULL) { # A function implemented by Diethelm Wuertz # and improved by Yohan Chalabi # Description: # Extracts months atom from a timeDate object # Arguments: # x - a 'timeDate' object from which to extract the # month "atom". # Value: # Returns the month from a 'timeDate' object as an integer # value or vector with elements ranging between 1 and 12, # numbering the months from January to December. # FUNCTION: # Check Class Type: if (!inherits(x, "timeDate")) stop("Wrong class type") # Month: ans <- as.POSIXlt(x, tz = "GMT")$mon+1 attr(ans, "control") <- c(FinCenter = finCenter(x)) # Return Value: ans }) ################################################################################ timeDate/R/timeDate-rulesFinCenter.R0000755000176200001440000001320314346561066017031 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # FUNCTION: DESCRIPTION: # rulesFinCenter Returns DST rules for a financial center ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # rulesFinCenter <- function(FinCenter = "") { # A function implemented by Diethelm Wuertz # Description: # Show the day light saving rules for a financial center # Arguments: # FinCenter - a character string with the the location of the # financial center named as "continent/city". # FUNCTION: if (FinCenter == "") FinCenter <- getRmetricsOptions("myFinCenter") # Check: if (any(FinCenter %in% c("GMT", "UTC", " "))) stop("There are no DST rules for GMT FinCenter!") # Internal Function for Conversion from Ical Tables: # if (FALSE) { # rulesFinCenter2 = # function(FinCenter = myFinCenter) { # # A function implemented by Diethelm Wuertz # # Description: # # Show the day light saving rules for a financial center # # Arguments: # # FinCenter - a character string with the the location of the # # financial center named as "continent/city". # # Value: # # Returns a printed list of DST rules. # # Example: # # > rulesFinCenter("Zurich") # # ruleChanges offSet # # 1 1894-05-31 23:30:16 3600 # # 2 1940-11-01 23:00:00 7200 # # 3 1940-12-30 22:00:00 3600 # # 5 1941-10-04 22:00:00 3600 # # 6 1942-05-03 01:00:00 7200 # # 7 1942-10-03 22:00:00 3600 # # 8 1980-12-31 23:00:00 3600 # # 9 1981-03-29 01:00:00 7200 # # ... # # Note: # # Important, the "TZ" environment variable must set # # to "GMT" in your Windows Environment! # # # Set Timezone to GMT: # myTZ = Sys.getenv("TZ") # Sys.setenv(TZ = "GMT") # if (FinCenter == "") FinCenter = "GMT" # # # Read the Rules: # # Get IcalPath from .FirstLib # file = paste0(IcalPath, FinCenter) # zfile <- zip.file.extract(file, "Rdata.zip") # ical = read.table(zfile, skip = 2) # # # GMT Offsets: # hm = as.integer(ical[,6]) # sg = sign(hm) # hm = abs(hm) # h = floor(hm/100) # hms.off = sg * ( floor(hm/100)*3600 + (hm - 100*h)*60 + 0 ) # hms.off # # # When have the rules changed? # months.num = 1:12 # names(months.num) = c( # "Jan", "Feb", "Mar", "Apr", "May", "Jun", # "Jul", "Aug", "Sep", "Oct", "Nov", "Dec") # Y = as.integer(ical[,4]) # m = as.integer(months.num[as.character(ical[,3])]) # d = as.integer(ical[,2]) # CCYYMMDD = as.character(Y*10000+100*m+d) # hms = unlist(strsplit(as.character(ical[,5]), ":")) # hms = matrix(as.integer(hms), byrow=TRUE, ncol=3) # hms = 1000000 + 10000*hms[,1] + 100*hms[,2] + hms[,3] # hhmmss = substr(as.character(hms), 2, 7) # ruleChangesGMT = strptime(paste(CCYYMMDD, hhmmss), "%Y%m%d %H%M%S") # attr(ruleChangesGMT, "tzone") <- "GMT" # # # Return Value: # Sys.setenv(TZ = myTZ) # data.frame(ruleChanges = as.character(ruleChangesGMT), # offSet = hms.off) } # } # ## Instead: # Match City: fccity <- strsplit(FinCenter, "/")[[1]] City <- fccity[length(fccity)] ## GNB: guard against accidentally calling Easter() if(City == "Easter") stop("Easter stands for the religious holiday\n", "Use \"Easter_Island\" for the Easter time zone.") ## GNB: 'match.fun' looks for the argument in the caller's environment. In particular, ## if called from the user's workspace, it will find any function of the same name ## lying there or exported by a package on the search path before timeDate. Also, ## if timeDate is not attached the function in 'timeDate' will not be found in any ## case. ## ## was: fun <- match.fun(City) ## ## TODO: use argument 'inherit = FALSE' to prevent look up outside ## 'timeDate' namespace? fun <- get(City, mode = "function") # Return Value: fun() } ################################################################################ timeDate/R/base-rep.R0000755000176200001440000000455414263246023014045 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA # Copyrights (C) # for this R-port: # 1999 - Diethelm Wuertz, GPL # 2007 - Rmetrics Foundation, GPL # Diethelm Wuertz # www.rmetrics.org # for the code accessed (or partly included) from other R-ports: # see R's copyright and license files # for the code accessed (or partly included) from contributed R-ports # and other sources # see Rmetrics's copyright file ################################################################################ # MEHODS: DESCRIPTION: # rep.timeDate Replicates a 'timeDate' object ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # rep.timeDate <- function(x, ...) { # A function implemented by Diethelm Wuertz and Yohan Chalabi # Description: # Replicates objects of class 'timeDate' # Arguments: # x - a 'timeDate' object # times - a non-negative integer. A vector giving the number # of times to repeat each element if of length 'length(x)', # or to repeat the whole vector if of length 1. # Value: # Returns a vector of repeated elements belonging to the same # class as 'x'. # FUNCTION: # Replicate: ct <- rep(as.POSIXct(x), ...) ans <- timeDate(ct, zone = "GMT", FinCenter = x@FinCenter) # Return Value: ans } ################################################################################ timeDate/R/methods-show.R0000755000176200001440000000446714263246023014773 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # FUNCTION: DESCRIPTION: # show.timeDate Prints 'timeDate' object ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # setMethod("show", "timeDate", function (object) { # A function implemented by Yohan Chalabi and Diethelm Wuertz # when creating empty new("timeDate") if (!length(slot(object, "Data"))) return(str(object)) # Check records to get printed: maxRmetrics <- as.numeric(getRmetricsOptions("max.print")) maxR <- as.numeric(getOption("max.print")) max <- min(na.omit(c(maxRmetrics, maxR, Inf))) #-> Inf to cast case when maxRmetrics and maxR are NULL if (ptest <- ((omitted <- length(object) - max) > 0)) object <- object[seq.int(max)] output <- format(object) layout <- paste0("[", output, "]") names(layout) <- names(output) # Print Results: cat(finCenter(object), "\n", sep = "") print(layout, quote = FALSE) # print message if (ptest) cat(gettextf("...\n [ reached getRmetricsOption('max.print') | getOption('max.print') -- omitted %i rows ]]\n", omitted)) # Return Value: invisible(NULL) # 'show' returns an invisible 'NULL'. (cf. ?show) }) ################################################################################ timeDate/R/options-myFinCenter.R0000755000176200001440000000210214263246023016246 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # DEPRECATED: DESCRIPTION: # myFinCenter Sets my financial center ################################################################################ # myFinCenter = "GMT" ################################################################################ timeDate/R/base-summary.R0000755000176200001440000000535214470375476014770 0ustar liggesusers # This R package is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This R package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this R package; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # FUNCTION: DESCRIPTION: # summary.timeDate Summarizes details of a 'timeDate' object ################################################################################ # ---------------------------------------------------------------------------- # # Roxygen Tags #' @export # ---------------------------------------------------------------------------- # summary.timeDate <- function(object, ...) { ## A function implemented by Diethelm Wuertz ## GNB : Modified to return a summary object and added a print method ## for that. # Description: # Summarizes details of a 'timeDate' object # Arguments: # x - a 'timeDate' object to be summarized. # Effect: # Produce a summary report of the details of a 'timeDate' # object. # Print: ## x = object ## cat( "Object: ", as.character(match.call())[2]) ## cat("\nStart Record: ", as.character(start(x))) ## cat("\nEnd Record: ", as.character(end(x))) ## cat("\nObservations: ", length(as.character(x))) ## cat("\nFormat: ", x@format) ## cat("\nFinCenter: ", x@FinCenter) ## cat("\n") ## ## # Return Value: ## invisible(object) res <- list( start = as.character(start(object)), end = as.character(end(object)), nobs = length(object), format = object@format, finCenter = object@FinCenter ) class(res) <- "timeDate_summary" res } print.timeDate_summary <- function(x, quote = FALSE, ...){ cat("Start Record:", x$start , "\n") cat("End Record: ", x$end , "\n") cat("Observations:", x$nobs , "\n") cat("Format: ", x$format , "\n") cat("FinCenter: ", x$finCenter, "\n") cat("\n") invisible(x) } ################################################################################ timeDate/NEWS.md0000644000176200001440000002612614536372514013125 0ustar liggesusers# timeDate 4032.109 - new function `earlyCloseNYSE` gives datetimes of early closings of NYSE, including scheduled and unscheduled ones. The information is incomlete. This answers issue [#6757], see also the related issue [#1356] mentioned below in the news for a previous version. - all functions returning public and eclessiastical holidays get new arguments `value`, `na_drop`, and `...`, controlling the type of the return value and the handling of missing values. Argument `...` is for things like 'format' when applicable. Not all honour the new arguments though, see below. - all functions returning public and eclessiastical holidays now honour the new argument `value`. - some holiday functions were amended or rewritten to honour the new argument `na_drop`. These include the England holidays ('GBxxx'), some Japan holidays (JPxxx), and a number of other functions (e.g., `CAFamilyDay). Contributions and/or information needed to have them do so is wellcome (e.g. dates when a holiday was introduced and/or moved). - `midnightStandard2()` (and hence `timeDate()`) was throwing a puzzling error when the input character vector contained one or more `NA`s mixed with non-NA's. - `whichFormat()` was throwing error when the _first_ element of the input vector was `NA`. This could be considered a feature but that's inconsistent since `NA`s at other positions were not causing trouble. Now fixed. - the 'character' method for `timeDate()` was passing only the first element of the input vector to `whichFormat()`. This was preventing it from inferring the format when argument 'format' was missing. - new function `specialHolidayGB` gives the special UK one-off holidays for the requested years. - `MilleniumDay` is now deprecated, use `specialHolidayGB(1999)`. - fixed omissions in `holidayLONDON` and refactored it completely. It became easier to maintain and orders of magnitude faster. - fixed a bug in an internal function which was throwing errors from `holidayLONDON` for some ranges including years before 1916. - `GBEarlyMayBankHoliday`, `GBSpringBankHoliday` and `GBSummerBankHoliday` now give dates according to historical rules, not simply according to current ones. See the remarks above about the new arguments of holiday functions. - major overhaul and update of the Japan's holidays. Previously fixed dates were returned for each holiday. Now moving holidays are calculated (e.g., second month of January) and some exceptions handled (like holidays moved due to the Olympics in 2020 and 2021). Historical changes are (partially) taken into account. Further corrections and historical amendments are welcome. Thanks to Sylvie Lachaud for reporting the issues with Japan holiday functions, as well as providing current correct definitions and extensive list of links. - new function `JPMountainDay` gives the relatively recently introduced Japan holiday 'Mountain Day'. - `JPKeirouNoHi` replaces `JPKeirouNOhi`. The latter is an aberration from all other `xxxNoHi` Japanese holiday functions and a source of difficult to spot errors. The old one is now deprecated and will be removed in the future. - modified the 'timeDate' method for `summary` to return an object from class "timeDate_summary" (rather than print directly) and created a print method for the latter. - deprecated the `timeDate` method for `cut`, see deprecation note for v4021.105 below. - stopped exporting all but one (`.endpoints`) functions starting with a '.'. They all seem for internal purposes and/or have similarly named functions with normal names. - removed `.whichFormat` and `.midnightStandard`, not officially deprecated but had been renamed to `whichFormat()` and `midnightStandard()`, respectively, a long time ago. - removed several internal functions that are no longer used anywhere in the package. - removed file 'namespace-tags.R' as it had not been updated recently, see revision r83578 or earlier if you need it. # timeDate 4022.108 - added the 2023 UK Bank holiday for the coronation of King Charles III. - `axis.timeDate` was not handling properly the case when `x` was missing, leading to errors from R-devel check (2023-01-07 r83578). Fix suggested by Uwe Lieges. - refactored file NAMESPACE to facilitate maintenance (that revealed the two omissions listed below). - `CAFamilyDay` (Canada Family Day) was missing from the list returned by `listHolidays()`. It was missing only from that list, `holidayTSX()` was including it when applicable. - `JPVernalEquinox` was missing from the list returned by `listHolidays()`. - the financial centers are now updated to reflect changes in time zones in recent years. The list returned by `listFinCenter()` is synchronised with current time zone names. Previous names supported by timeDate are available as aliases. - import selectively from 'stats' and 'utils'. # timeDate 4021.107 - London financial centre holidays - fixed and/or included non-standard holidays (e.g., Early May Bank holiday was moved in 2020 to VE day; Spring Bank holiday was moved in Queen's Jubilee years; state funeral of the Queen). Millenium day now is included in the result of `holidayLONDON(1999)`. The London holidays should now be complete up to the time of writing this (1 Oct 2022). - renamed `GBMayDay` to `GBEarlyMayBankHoliday` and `GBBankHoliday` to `GBSpringBankHoliday`. The old names are somewhat ambiguous and strongly discouraged but still available. `listHolidays()` gives the new names. - the generic `timeDate()` gets argument '...' to allow methods for it to have additional arguments (e.g., for DST gaps). - the 'character' method for `timeDate()` gets a new argument `dst_gap` to control what to do with non-existent DST times at the requested `FinCenter` with options to add/subtract ("+", "-") the DST shift or set them to `NA`. - `timeDate()` was not handling correctly some times just after the switch to/from DST. This was visible mostly for time zones away from GMT and GMT+1. - In `timeSequence()`, if any of the generated times would fall in DST gaps, they are moved by "+1 hour", corresponding to `dst_gap = "+"` in `timeDate`. This is consistent with `seq` for other time objects. Currently there is no option to change this behaviour of `timeSequence`. Previously `timeSequence` was moving DST gaps down by 1 hour (for by = 'DSTday' and similar). This was not consistent similar time functions in R and was actually due to a bug (or unfinished DST handling) in `timeDate`, see remarks for `timeDate` above. - `timeSequence()` now throws error if argument `from` is in a DST gap. It seems desirable to have a default action for this case. Rolling the faulty time by an hour in the case of 'DSTday' may be suitable in most cases but for other values of `by` it might be totally wrong. - updated the DST rules. - internally, refactored the way the DST rules are generated (not visible to users). - `rulesFinCenter()` now looks for a financial center starting from the namespace of `timeDate`. Previously it was starting from the environment of the caller which could result in using an unrelated object or, if `timeDate` was loaded but not attached, not finding it. # timeDate 4021.106 - fix `whichFormat()` to accommodate a change in R-devel after which `as.character(Sys.time())` contains fractional seconds. (`format(Sys.time())` doesn't; before this change in R-devel both were dropping the fractional seconds). (fixed by Martin Maechler, see timeDate rev 6286) # timeDate 4021.105 - the list returned by `holidaysNYSE()` was missing the special closing days of the New York stock exchange (NYSE). Now it should be complete (though there may be ommissions after 2011). This fixes issue #1356 reported by Corwin Joy. Thanks to him and Ian E for the insigthful discussion and useful links. See also below. Contributions for the other exchanges and corrections are welcome. - `holidaysNYSE()` gets a new argument, `type`, to select what type of the exchange's closing days to return. The default is to return all days in the requested years when NYSE was closed for whatever reason. Use `type = "standard"` and `type = special` to get the standard holidays and the special closings, respectively. Returning any closing day by default might be considered a breaking change. However, not returning all closing days was perceived as erroneous by users (eg issue #1356). In fact, the package itself calculates business days by dropping weekends and days returned by `holidayXXXX`. Note that `holiday()` returns the actual dates of the public holidays, while the corresponding days returned by `holidayXXXX` are the resulting non-weekend closing days, if any. - `holidayTSX()` now correctly calculates Christmas and Boxing day closures when Christmas is on Monday. Fixes part (2) of issue #1288 reported by Stefan Wilhelm (part (1) was fixed in a previous release). The fix is really a patch for the specific issue, maybe the same should be done when Christmas is on Sunday, for example. Information/contribution on Canadian holidays is welcome. - now `holiday()` accepts also a function or a list of functions for argument 'Holiday'. - `timeNthNdayInMonth` could return a value in the following month. Now fixed. This is bug #1463 reported with a fix by Manny C. Note that the bug was not present for dates in the first day of a month. - `timeLastNdayInMonth` could return a value in the following month, e.g. '1996-06-04' for the last Tuesday in May 1996. Now fixed. The check of this function was prompted by the bug report for #1463 (see above) for `timeNthNdayInMonth` but the error was different. - the `data.frame` methods for `kurtosis()` and `skewness()` now set attribute `method` as for the other methods and as documented. - removed `.holidayList()` which had been replaced by `listHolidays()` a long time ago and was not exported in recent versions of `timeDate`. - updated documentation files. ## Deprecation notes - the `timeDate` method for `cut` has been discouraged in the sources for a long time with a recommendation to use `window` instead (just replace `cut(x, from = xx , to = yy)` with `window(x, start = xx, end = yy)`. The `cut` method will be deprecated in the next release and later removed or replaced by a method that is consistent with the methods for `cut` in base R. # timeDate 4021.104 - new maintainer: Georgi N. Boshnakov. - updated DESCRIPTION with links and moved all `Depends:` to `Imports:`. - removed the line `LazyData: yes` from DESCRIPTION to fix the NOTE on CRAN. - added the new US holiday, Juneteenth National Independence Day. Fixes #6755 by Ian E (ene100). - `holidayTSX()` now includes the Labour Day. Fixes part (1) of issue #1288 reported by Stefan Wilhelm. - created a first version of `_pkgdown.yml` for more organised view of the large number of objects in the package. Unpack the tarball and run `pkgdown::build_site()` to build the site locally. Don't know if this could work directly off the R-forge repository. # timeDate 3043.102 and older versions See file `ChangeLog` for changes before 4021.104. timeDate/MD50000644000176200001440000002117414536617572012343 0ustar liggesusersd4975151a55b9f2c05069d9a9301b5ac *ChangeLog 9062197796243c9f224615d4be6bb45a *DESCRIPTION c60827645891cfaf5792803902420ca5 *NAMESPACE d8740ca20f9c90e0416066a347f4b1d2 *NEWS.md 9de07b8f207fa211bcf1336c3f756204 *R/AllClass.R c6a37f269924e67dcaad7ff4142daf45 *R/AllGeneric.R 7f50ff86d6a47b73de579f697365bf6a *R/base-c.R 2d5aa8245be12c805e807e0825c4a675 *R/base-diff.R 29f59c853a29eb114727d553de89a949 *R/base-difftimeDate.R b1b8f9f2dd63fbcf080ea96d73de18a5 *R/base-format.R cd81232fd24bea7bffbf9bbe6051753c *R/base-length.R 6e3942a29ec636b8b1ec6478b90c11f8 *R/base-rep.R dd707d7dee940038ed3ee90d0266d818 *R/base-rev.R fd9344bf623b2c0980492889e00b142e *R/base-round.R 4e0085d7b2063759a16cf1dbca8a7b0a *R/base-sample.R 2e09b9c2eed79b7bb2b0aadbc9e86fcb *R/base-sort.R ec97bfb6eef78218eca6e359b24621bd *R/base-subset.R e4b5a01f33771b175c7db8dbce1f2ed1 *R/base-summary.R 2562c8d93e1ed2ead23145c2c85675bb *R/base-unique.R e805752769ee8e33ddf4b47ca4fac427 *R/base-weekdays.R 9d373f8af689d692c27feca3c5456b3e *R/calendar-Easter.R 52f825c68b8b121789c3d0021097ef87 *R/calendar-align.R 3130bfd9f28649739524b8797bb299f0 *R/calendar-atoms.R 3c6cac575f80925af9c3464b1fef466f *R/calendar-dayOfWeek.R 1f8a36eec464ac5f1c52c1e850debf42 *R/calendar-endpoints.R 7d420431da5182a0c890b49ff28a1c86 *R/calendar-firstDay.R 98d1fbcd8188caf8bace73b23baae0bb *R/calendar-isDaily.R 7a81283f76fbb5817ae07c614352b3e3 *R/calendar-isWeekday.R 8a81bad8309e82fa7e2fdc22b305a67b *R/calendar-julian.R 9e0b333275752aa1d614af2abdbb8db9 *R/calendar-nDay.R 899fb323748a5e2148a5bb9b91b22940 *R/calendar-onOrAfter.R 477802ffe7f459d608a66fd9ebe6c388 *R/calendar-periods.R 4a2ef02c78ef01923532c668f99fdcb2 *R/holiday-Dates.R bcb43221145118de1ea8e76cc6c757ef *R/holiday-LONDON.R b70ed609a1c6a8c4e3080682cac361ac *R/holiday-Listing.R af443c109e74a118314ed15b55a5d45b *R/holiday-NERC.R ddc363b0ec83e0a0df7cf0dcaf8f4e82 *R/holiday-NYSE.R 65c385df2573b5edb998204e55ff636d *R/holiday-TSX.R 4594e237f2f5c86b5646687355054a09 *R/holiday-ZURICH.R d307a0ec8b78c19c6c25e9da09add8b6 *R/holiday.R fe95f5688335692969c0bdc9f4acf20b *R/methods-as.R 93ad4e10b5752668ed1b7b31f16f3dd7 *R/methods-getDataPart.R 169438cbe2276160c4b6cec6af2719aa *R/methods-mathOps.R c34daa68eb200e27fd64fc46de02aeec *R/methods-names.R dcae8deda09f1ac6ae732bc528f6a2b6 *R/methods-plot.R f7ee14152627c8e8193be89ce75a7ce1 *R/methods-show.R 4131ceeaa9f43636246b945eb7aba79f *R/options-RmetricsOptions.R 0c055d44fd7537c68743f223598c7bf0 *R/options-currentYear.R 80e92d273de29da942f632d2d9c494c9 *R/options-myFinCenter.R a8abd51d121e093e456b24f1d7b5e201 *R/options-myUnits.R c5dc903134d770b662ff912ad43a220e *R/stats-blockStart.R d7d6d7edc8dd9c7a465649b01c4b7f5f *R/stats-frequency.R bf4beb108669a9bdf38b2fb0bb497570 *R/stats-kurtosis.R b4f43d8678b86fef0151e3b9fc7382b1 *R/stats-na.fail.R c1946d2ce359cce14ce43031fe33a80a *R/stats-skewness.R 380c259728712e9a06dce0a081bb8323 *R/stats-start.R 3e42b9a68b1cd66e4f9788baeb515589 *R/stats-window.R 0ac1ffeae8c54cf5536b83dd9bda733c *R/sysdata.rda aa17696ac79780289c329be2931cc121 *R/timeDate-Calendar.R 649b63f442dc5151bcd926d19bcecc88 *R/timeDate-DaylightSavingTime.R a57fa085e4bf97c7d39f5ab9122c23c0 *R/timeDate-Sequence.R 379465e0e98014c1cea44fb55e8c4409 *R/timeDate-Sys.timeDate.R c625315a78f33f57700928efd15e2f21 *R/timeDate-finCenter.R e8218cb9f28cb981f4ed803b5927a7f0 *R/timeDate-generateDST.R e71fd4148b060424f5f53f5bebb7c140 *R/timeDate-listFinCenter.R fefc49c3dd2f4163a5de6299edccbdb1 *R/timeDate-midnightStandard.R dd367a85d539e6cf2b8189c0cf63304f *R/timeDate-rulesFinCenter.R 23425deb0eea0674f9e3fa41035d0a36 *R/timeDate-whichFormat.R 3d65c185e5bf66d47d6f6e1629c73149 *R/timeDate.R c197c3e96767f47cf7aac648d0365fdf *R/tzone.R 3e2e67a10113c486c22df7752ea4c19b *R/zzz.R f4a1624dbc810b50571917159aab74cc *README.md 6042b9c5e5bec3ecc1b6959cd2858b64 *inst/COPYRIGHT.html ea556c1dd887696e8b61515e10a2aecc *inst/_pkgdown.yml 19b2cdb9da868fb141da2a107324c04d *inst/pkgdown.yml c8332e024e5219e03041992dfb4d986f *inst/unitTests/Makefile 2cf7a0841e6a57e94804da88e002015a *inst/unitTests/holidayLONDON_1834_to_2024_corrected.rds 73e6024d031fc394506dc451fee32c82 *inst/unitTests/runTests.R c7b7101dc84125c28433c969dc9254c2 *inst/unitTests/runit.AAA.R 5985278d807a069c4fe040a3df65a8fb *inst/unitTests/runit.Class.R 5496b0f1534e47038bee00e8dbcebe53 *inst/unitTests/runit.Coercion.R 9b3c699e41a3bd6cd44ba65d06948b78 *inst/unitTests/runit.DaylightSavingTime.R 7596d87e4e97a852c9c8f994808509e7 *inst/unitTests/runit.FinCenter.R b951ae9f429bc2a7893e1522d36700eb *inst/unitTests/runit.HolidayCalendars.R 6a17c7fbe126576533efbc9d663e3404 *inst/unitTests/runit.HolidayDates.R b32520bbe4a5ac9285e8b24463901b88 *inst/unitTests/runit.MathOps.R 7c0ce4ae1f58d2611fd049d4f3d2850c *inst/unitTests/runit.SpecialDates.R 161ed6686e67c3c9cca583804af8724d *inst/unitTests/runit.Subsets.R a605441af673030de4659573d677f537 *inst/unitTests/runit.ZZZ.R 0cc47e3550f38090021bd6685190fc6b *inst/unitTests/runit.dayOfWeek.R 0c63c249db7fb34b1b5427180641b219 *inst/unitTests/runit.dayOfYear.R f3ffd1a788653d3a124714c30d464d6b *inst/unitTests/runit.isWeekday.R 98594eb99601444b0836db4af30f4142 *inst/unitTests/runit.isWeekend.R fac2e8c8af5bb783d02ad00cf0c27041 *inst/unitTests/runit.seq.R bfa31bd3313e3884e546fdd28d2f09f9 *man/00timeDate-package.Rd b00c4a9ba87ff61b861c068009b43490 *man/base-c.Rd 879cbfb3a5774bee901975b9eed69a1d *man/base-diff.Rd d71bee13eed8b9d3e3d12434e647f9cc *man/base-difftimeDate.Rd 50b694e57e7283fd2f86099c59580b89 *man/base-format.Rd 7537370c3446ddc71da6d2d8215f887f *man/base-length.Rd 8d15bf1d47d74960632553bc10885ed4 *man/base-rep.Rd 84b6f7bbb5db5b0236013ff85490196e *man/base-rev.Rd d905892a8d7114922e6dc2ff6b798f87 *man/base-round.Rd b3a77c277b748b0dd6ac424b3f738da7 *man/base-sample.Rd fa239f62ccffacd9ab545b441efe52de *man/base-sort.Rd 88d3f8c875289669f5e8b51b091dc534 *man/base-start.Rd 10a7dba62d3d0f14d79a4883527b5d21 *man/base-subset.Rd 857c19f8d7be0c7a6147cfcfa1fd6021 *man/base-summary.Rd 48ec5699cf028984db848cf18f40fb49 *man/base-unique.Rd ea54fb6fd4d5bb14fcba931bdd4dc797 *man/calendar-Easter.Rd e4bc8a3be03ba9d77e9a0a88ac5dcd5f *man/calendar-align.Rd b6e5f5a03d8a86db111116429c6745b2 *man/calendar-dayOfWeek.Rd 64ef6fa4aa8739e47574bbcb3a3cabe4 *man/calendar-dayOfYear.Rd e2a9ee24bd828d210586741c2832cf77 *man/calendar-endpoints.Rd 44a77fcff50d0a558fedf6f27a676bae *man/calendar-firstDay.Rd 0880822467c61fd264a9d44a4f639452 *man/calendar-isBizday.Rd 0276c9d5b931c03bf482c4bf55bcaaa0 *man/calendar-isRegular.Rd 204c42ed2525c0859932910aa4364c3f *man/calendar-isWeekday.Rd e84c9c9eaf20303f2febe778ff40d55b *man/calendar-julian.Rd 2ec67ce074582ad2ab38b3ccacc1286a *man/calendar-nDay.Rd fe809d21c6b2d71b86b30a4625722ea7 *man/calendar-onOrAfter.Rd da8b5f8bf389f1b76bda626dc227b887 *man/calendar-periods.Rd 2293d71515c621216d8184e5ef521293 *man/class-timeDate.Rd ab53daea54309766e6e6d8bd3a6f4c76 *man/earlyCloseNYSE.Rd a91eca42e742fbee055578eeee4710cf *man/graphics-plot.Rd 24b5c5df4eb0d59809436f3a1d9b3998 *man/holiday-Dates.Rd 3805a24ed96227043211804b7b7abda6 *man/holiday-LONDON.Rd 6f9ec0dcf2bfad0e214a027fe4ed5b78 *man/holiday-Listing.Rd c7213bb0db6688c22fa226b9902bca57 *man/holiday-NERC.Rd 9f46e30fff8a37bcfeb412d2b5e566df *man/holiday-NYSE.Rd 63f9c2d9a50b14fe6b8550ab9c49e4cd *man/holiday-TSX.Rd 85f60548609396d2d0c691b208f339f6 *man/holiday-ZURICH.Rd 86786e6d5af2eb526dc4245571afecf6 *man/holiday.Rd 6325c15d2bdfa3ac0feef43755ab6f81 *man/methods-as.Rd 0bc6f0d973d07ffc684d5d908388312f *man/methods-mathOps.Rd 9b0153bd1805cd46b5df1d17537058d5 *man/methods-names.Rd 8505aa0e7ccdb7137e9df2e09e21dddf *man/methods-show.Rd a0a861b83166828f583022d6086400fc *man/options-RmetricsOptions.Rd fc8693283c9ccd29c6aaa8c5d199f080 *man/options-currentYear.Rd d5b86320fe103e986205e77efcbaca8c *man/options-myFinCenter.Rd 267c4e45bb2a164f06cda7d04d0138cd *man/options-myUnits.Rd 876bbaf7b7c5ae722dc158fd697d2d13 *man/specialHolidayGB.Rd 07f23db8f3e2a3bc3b00ae452a7b7a2d *man/stats-blockStart.Rd 20192cb3ab757159a468776a5f5e23a1 *man/stats-kurtosis.Rd bc4fc470590b5a48627ae9187f20d241 *man/stats-na-fail.Rd f4200400d8a36d4cdb17e591f3de523d *man/stats-skewness.Rd 9f9f15739cc6cf7389faff9b3fbe99c2 *man/stats-window.Rd 9c8a235d806a3f3b57793bc2be7d852d *man/timeDate-Calendar.Rd e97b8b7a81ad1035f1ac335a99e157e5 *man/timeDate-DaylightSavingTime.Rd 5648a73f440953ed5695872d0ef13ff4 *man/timeDate-Sequence.Rd c42daacde69596c781697aa9057558f6 *man/timeDate-Sys.timeDate.Rd 0867c149c3fbeccadf5017b10bc37ab8 *man/timeDate-finCenter.Rd 2fd1c5c93b3597ac7184818e563edcb2 *man/timeDate-listFinCenter.Rd 71fee6a053e853d32a2b3101790f61bc *man/timeDate-midnightStandard.Rd 0595af82ce4fc236dbc05f79c7ad1963 *man/timeDate-rulesFinCenter.Rd 76560dad045b1c4c341d60c906ce0fe3 *man/timeDate-whichFormat.Rd 03e59014cb76aee9b3f544d6f9404da2 *man/timeDate.Rd 1bd271c97fcf20221b2b8a178af8539d *tests/doRUnit.R timeDate/inst/0000755000176200001440000000000014324723564012775 5ustar liggesuserstimeDate/inst/pkgdown.yml0000755000176200001440000000032514356307016015167 0ustar liggesuserspandoc: '2.5' pkgdown: 2.0.6 pkgdown_sha: ~ articles: {} last_built: 2023-01-07T15:21Z urls: reference: https://geobosh.github.io/timeDateDoc/reference article: https://geobosh.github.io/timeDateDoc/articles timeDate/inst/_pkgdown.yml0000755000176200001440000001167414324722733015341 0ustar liggesusersurl: https://geobosh.github.io/timeDateDoc/ deploy: install_metadata: true template: bootstrap: 5 search: exclude: ['news/index.html'] reference: - title: "Overview of package timeDate" contents: - "timeDate-package" - title: "timeDate objects" contents: - "timeDate-class" - timeDate - timeSequence - timeCalendar - as.timeDate - timeDateMathOps - difftimeDate - Sys.timeDate - sample - isRegular - blockStart - title: "Time/date utilities" contents: - midnightStandard - whichFormat - title: "Statistical functions" contents: - skewness - kurtosis - title: "Financial centers" contents: - finCenter - listFinCenter - rulesFinCenter - title: "Unclasssified" contents: - .endpoints - title: "Base-R related" contents: - c - diff - length - rep - rev - round - sort - start - subset - unique - align - window - "plot-methods" - "names-methods" - "show-methods" - "format-methods" - summary-methods - "is.na-methods" - title: "Calendar related" contents: - julian - dayOfWeek - dayOfYear - timeFirstDayInMonth - timeLastDayInMonth - timeFirstDayInQuarter - timeLastDayInQuarter - isBizday - isHoliday - isWeekday - isWeekend - timeNthNdayInMonth - timeLastNdayInMonth - timeNdayOnOrAfter - timeNdayOnOrBefore - periods - periodicallyRolling - monthlyRolling - title: Rmetrics Options desc: > Values available from getRmetricsOptions(). Some of them can be set with setRmetricsOptions() contents: - RmetricsOptions - currentYear - myUnits - myFinCenter - title: "Holiday lists" contents: - holiday - listHolidays - holidayLONDON - holidayNERC - holidayNYSE - holidayTSX - holidayZURICH - title: "Other holiday related" contents: - Easter - title: "Public and Ecclesiastical Holidays" contents: - Septuagesima - Quinquagesima - AshWednesday - PalmSunday - GoodFriday - EasterSunday - EasterMonday - RogationSunday - Ascension - Pentecost - PentecostMonday - TrinitySunday - CorpusChristi - ChristTheKing - Advent1st - Advent2nd - Advent3rd - Advent4th - ChristmasEve - ChristmasDay - BoxingDay - NewYearsDay - SolemnityOfMary - Epiphany - PresentationOfLord - Annunciation - TransfigurationOfLord - AssumptionOfMary - BirthOfVirginMary - CelebrationOfHolyCross - MassOfArchangels - AllSaints - AllSouls - LaborDay - CHBerchtoldsDay - CHSechselaeuten - CHAscension - CHConfederationDay - CHKnabenschiessen - GBEarlyMayBankHoliday - GBSpringBankHoliday - GBSummerBankHoliday - GBMilleniumDay - DEAscension - DECorpusChristi - DEGermanUnity - DEChristmasEve - DENewYearsEve - FRFetDeLaVictoire1945 - FRAscension - FRBastilleDay - FRAssumptionVirginMary - FRAllSaints - FRArmisticeDay - ITEpiphany - ITLiberationDay - ITAssumptionOfVirginMary - ITAllSaints - ITStAmrose - ITImmaculateConception - USDecorationMemorialDay - USPresidentsDay - USNewYearsDay - USInaugurationDay - USMLKingsBirthday - USLincolnsBirthday - USWashingtonsBirthday - USMemorialDay - USIndependenceDay - USLaborDay - USColumbusDay - USElectionDay - USVeteransDay - USThanksgivingDay - USChristmasDay - USCPulaskisBirthday - USGoodFriday - USJuneteenthNationalIndependenceDay - CAVictoriaDay - CAFamilyDay - CACanadaDay - CACivicProvincialHoliday - CALabourDay - CAThanksgivingDay - CaRemembranceDay - JPVernalEquinox - JPNewYearsDay - JPGantan - JPBankHolidayJan2 - JPBankHolidayJan3 - JPComingOfAgeDay - JPSeijinNoHi - JPNatFoundationDay - JPKenkokuKinenNoHi - JPGreeneryDay - JPMidoriNoHi - JPConstitutionDay - JPKenpouKinenBi - JPNationHoliday - JPKokuminNoKyujitu - JPChildrensDay - JPKodomoNoHi - JPMarineDay - JPUmiNoHi - JPRespectForTheAgedDay - JPKeirouNOhi - JPAutumnalEquinox - JPShuubunNoHi - JPHealthandSportsDay - JPTaiikuNoHi - JPNationalCultureDay - JPBunkaNoHi - JPThanksgivingDay - JPKinrouKanshaNoHi - JPEmperorsBirthday - JPTennouTanjyouBi - JPBankHolidayDec31 - title: "Daylight Saving Time" contents: - DaylightSavingTime timeDate/inst/COPYRIGHT.html0000755000176200001440000002041114263246023015224 0ustar liggesusers Rmetrics::COPYRIGHT

Rmetrics Copyrights


2005-12-18 Built 221.10065

  
________________________________________________________________________________
Copyrights (C) for 

    R:  
      see R's copyright and license file
      
    Version R 2.0.0 claims:
    - The stub packages from 1.9.x have been removed.
    - All the datasets formerly in packages 'base' and 'stats' have
      been moved to a new package 'datasets'. 
    - Package 'graphics' has been split into 'grDevices' (the graphics
      devices shared between base and grid graphics) and 'graphics'
      (base graphics). 
    - Packages must have been re-installed for this version, and
      library() will enforce this.
    - Package names must now be given exactly in library() and
      require(), regardless of whether the underlying file system is
      case-sensitive or not.    

________________________________________________________________________________
for 
    
    Rmetrics:
      (C) 1999-2005, Diethelm Wuertz, GPL
      Diethelm Wuertz 
      www.rmetrics.org
      info@rmetrics.org
 
________________________________________________________________________________
for non default loaded basic packages part of R's basic distribution

    MASS:    
      Main Package of Venables and Ripley's MASS.
      We assume that MASS is available. 
      Package 'lqs' has been returned to 'MASS'.  
      S original by Venables & Ripley.
      R port by Brian Ripley .
      Earlier work by Kurt Hornik and Albrecht Gebhardt.
    methods: 
      Formally defined methods and classes for R objects, plus other 
      programming tools, as described in the reference "Programming 
      with Data" (1998), John M. Chambers, Springer NY. 
      R Development Core Team.
    mgcv:   
      Routines for GAMs and other generalized ridge regression
      with multiple smoothing parameter selection by GCV or UBRE.
      Also GAMMs by REML or PQL. Includes a gam() function.
      Simon Wood 
    nnet: 
      Feed-forward Neural Networks and Multinomial Log-Linear Models
      Original by Venables & Ripley. 
      R port by Brian Ripley .
      Earlier work by Kurt Hornik and Albrecht Gebhardt.
      
________________________________________________________________________________
for the code partly included as builtin functions from other R ports:

    fBasics:CDHSC.F
      GRASS program for distributional testing.
      By James Darrell McCauley 
      Original Fortran Source by Paul Johnson EZ006244@ALCOR.UCDAVIS.EDU>
    fBasics:nortest
      Five omnibus tests for the composite hypothesis of normality
      R-port by Juergen Gross 
    fBasics:SYMSTB.F
      Fast numerical approximation to the Symmetric Stable distribution 
      and density functions.  
      By Hu McCulloch 
    fBasics:tseries
      Functions for time series analysis and computational finance.
      Compiled by Adrian Trapletti 
         
    fCalendar:date     
      The tiny C program from Terry Therneau  is used
      R port by Th. Lumley ,
      K. Halvorsen , and 
      Kurt Hornik 
    fCalendar:holidays
      The holiday information was collected from the internet and 
      governmental sources obtained from a few dozens of websites
    fCalendar:libical
      Libical is an Open Source implementation of the IETF's 
      iCalendar Calendaring and Scheduling protocols. (RFC 2445, 2446, 
      and 2447). It parses iCal components and provides a C API for 
      manipulating the component properties, parameters, and subcomponents.
    fCalendar:vtimezone
      Olsen's VTIMEZONE database consists of data files are released under 
      the GNU General Public License, in keeping with the license options of 
      libical. 
     
    fSeries:bdstest.c
      C Program to compute the BDS Test.
      Blake LeBaron
    fSeries:fracdiff  
      R functions, help pages and the Fortran Code for the 'fracdiff' 
      function are included. 
      S original by Chris Fraley 
      R-port by Fritz Leisch 
      since 2003-12: Martin Maechler
    fSeries:lmtest
      R functions and help pages for the linear modelling tests are included .
      Compiled by Torsten Hothorn ,
      Achim Zeileis , and
      David Mitchell
    fSeries:mda    
      R functions, help pages and the Fortran Code for the 'mars' function
      are implemeted.
      S original by Trevor Hastie & Robert Tibshirani,
      R port by Friedrich Leisch, Kurt Hornik and Brian D. Ripley 
    fSeries:modreg
      Brian Ripley and the R Core Team
    fSeries:polspline   
      R functions, help pages and the C/Fortran Code for the 'polymars' 
      function are implemented
      Charles Kooperberg 
    fSeries:systemfit
      Simultaneous Equation Estimation Package.
      R port by Jeff D. Hamann  and 
      Arne Henningsen 
    fSeries:tseries
      Functions for time series analysis and computational finance.
      Compiled by Adrian Trapletti 
    fSeries:UnitrootDistribution:
      The program uses the Fortran routine and the tables 
      from J.G. McKinnon. 
    fSeries:urca
      Unit root and cointegration tests for time series data.
      R port by Bernhard Pfaff .
     
    fExtremes:evd
      Functions for extreme value distributions.
      R port by Alec Stephenson 
      Function 'fbvpot' by Chris Ferro.
    fExtremes:evir
      Extreme Values in R
      Original S functions (EVIS) by Alexander McNeil 
      R port by Alec Stephenson   
    fExtremes:ismev
      An Introduction to Statistical Modeling of Extreme Values
      Original S functions by Stuart Coles 
      R port/documentation by Alec Stephenson 
      
    fOptions
      Option Pricing formulas are implemented along the book and 
      the Excel spreadsheets of E.G. Haug, "The Complete Guide to Option 
      Pricing"; documentation is partly taken from www.derivicom.com which 
      implements a C Library based on Haug. For non-academic and commercial 
      use we recommend the professional software from "www.derivicom.com".  
    fOptions:SOBOL.F
      ACM Algorithm 659 by P. Bratley and B.L. Fox
      Extension on Algorithm 659 by S. Joe and F.Y. Kuo
    fOptions:CGAMA.F
      Complex gamma and related functions.
      Fortran routines by Jianming Jin.
    fOptions:CONHYP.F
      Confluenet Hypergeometric and related functions.
      ACM Algorithm 707 by mark Nardin, W.F. Perger, A. Bhalla
             
    fPortfolio:mvtnorm
      Multivariate Normal and T Distribution.
      Alan Genz , 
      Frank Bretz 
      R port by Torsten Hothorn 
    fPortfolio:quadprog
      Functions to solve Quadratic Programming Problems.
      S original by Berwin A. Turlach  
      R port by Andreas Weingessel 
    fPortfolio:sn
      The skew-normal and skew-t distributions.
      R port by Adelchi Azzalini 
    fPortfolio:tseries
      Functions for time series analysis and computational finance.
      Compiled by Adrian Trapletti 
 
timeDate/inst/unitTests/0000755000176200001440000000000014536563035014777 5ustar liggesuserstimeDate/inst/unitTests/runit.ZZZ.R0000755000176200001440000000025114263246023016750 0ustar liggesusers# keep track if TZ of system has been changed ! # testTZ defined in runit.AAA.R test.AAA <- function() { print(testTZ) checkIdentical(testTZ, Sys.timezone()) } timeDate/inst/unitTests/holidayLONDON_1834_to_2024_corrected.rds0000644000176200001440000001116114534112211023716 0ustar liggesusers‹]šyXÍéÿÆeÍÐȆ,I4»Ñ$ËŒ “}hd§L²NLÙÍH%“(F‹H¡Mû¾žÖ³w*§:í{»~Üw¿ëú^þ˜ë5÷óÜïûý~ž“Ó9Öö]ÚZ]]µ‚.Zúv×k]Ú‚^©½ÐÚÁZ Ðêûñ¤>i~èöq1õIÝ@S0IM2o Ô–žŒ2í]©W,»Έ“€ßõ ™Ó{¾î'¶½¶€¯íÅJ3°è=êÛ ‡p=É[Æš §íz±%èþ9mŒçºc)õϾ˜¯má* 8Úš¹½ÁÖºÙð·æMCÿVÑvøZï ÀyZ}'Ñç¶çi½8ˆz_:æjµ)Ã\­VaNàŠ'Ìþ­ƒçc¾V½äµ´¸¡®E½›:Ör?èóþïŸàoqü€œ}ÜSËÖ¥8GËæ ˜¯Å¬„õ3žaž–ñ1G˘nÌÓoÿÄæ·ùÈinÔÂzs]î¯99õÍ&aîæ‹sÛìàDZ¤ÿÛ¾èß/jPßhë‚y·ÝAÿƟʹnË5vÒë5ò¯PW“S¹j‚P_s«t?¹sÕxYà5“¹ð¾%yŠu;¾fÞö˜¿æoÌ_c™N߬³Ì™µ‘9Fqìk4—¾‘ã¹? ºúÝt3²uKm(¹ýªkVáþ«‹sÑ·:µyÿî¹:ä9÷*ñºTûbîê™r1æªÞ3y[dÔ^ôÏlgýL{ÜWµéf¼Õcp¿=ý},P_õæD )€¯ª½÷_UŽyª$Ë4ä(œ£*YʺäŸ0WUô|ô© ŽÂ¹«®âþ«<ÞRŸî`îé㸷*ÇÝÜ·‹cŸ5ÈEvR‡ûs_³~j"çvš9:jöÓÙ„{«ÒZŠÜÊ—×±_Yq®Ü„ºJiäUJÎã•¢ƒ8GeÜ úü­È¸—J÷¿ÍÈAô]Ðâþ _êstI]æY¥°ÎJÈ~?N½T~›}MšÈ!ÉÁ/Yׯšy݃0·¦ì–9 si”}‘§É ¡?€sküòÜÈp_šë³p— Ü?tØ€\Î:§P²+×7´q}¥ õlKîÏÇþÆÁìk<‘sÊ>Ý0wEÇj'R€úвû¸ÿ u(×óÿäz„1î±ât ¶Ìœ-CѧbÅsÌ]1Ç”Z',o¶Eßò¦ýð——.E~yúLä”_ÎDŸò½_¾‡ïŸå¶sÝâ_rh>÷‡A]ÙË ä—½¨ÂzYm×%¯©ýþà¾ßÌUvê4rËNž£¶·Æ\eëxþ2“)˜¯Ì¸œ>í[\×âû˜ú™#rÕ•¼u˜;yé%úª]ÞÀ¯>.C_õ®~ÔÃøùM=ôòÕ½#ÿñ¿ƒPÿ8ÅŸÚ'ŠÚ;–ú/Ô?>$¦¶VôõAŸÇãúQlÄ¥ïUð•Jza¿Tüç-àçµÒðHj¿KôåyK×$hÈÔÓ Ð¿tª„¾1AèSÚ·º¤b?™<}K’ÆÁ_rÿú–x¶"§Äì;ä–Ì矫’É#jÀáA`q›³†œq~5úç5iƒñé`@˜ xè[ô->¨¡oͼ… •ÙXÐ\?ü:ùªw ¤ú«Š×r]µ>Uö·ÈUE¦g¼ÍHsÌ¥²y@ Nƒ«JÑG579EOøù«¨mú•›bž¢ 1òŠ®¬EߢývÔvöÜß¼ŒõKÏSßœá:è«|§‹ó);ôp/ÊævÌ¡”¹bne€^G¥2îCyb2×O¡o_ä*×_%'Ø_aeÏ“¬ïq}¯~Å|Šª›ÈQDrýr1ú+ÜïpŽÁ=(v"W1Èœ¸÷¢è6õò§÷É´è+¿å…sÉÿñF¹ëœ_~d;æ•/i2#ÿ¦Ï„Ÿ»åÆÿRë‹ñó Ø¢Lzc ¹>YH_® Ÿìzreç’ë,qÙÚÌ#›ÉÏ!²áè+3rÅùeºÇ‘#­ÔÂýKÓ»¡NšÖ~iX-Î/õ:\éξè/]8–z÷§vaΈyÐ’öÈ‘±çd pïÝžà°^(¿Pœ„ú‡GD c4|òW¤´ëa¡Ô³È ŨÏoðA¿ü:?äægmD¿|¯¨ËŸSOßœùÜïÒ‚õ¼Oσ·©ïš“KC,H-îkE¿¼®ÆØÏ­¬Ñc6JÀõýáË]·‹ûC$¨ÏT_ÎK7KP´þœ]æÉx$2#GâõÌ8j‚܌æ¨Ë°ª¦; ùé¿[“Gw`=}ÝPêi¦`š|òÒܺcî´K}›¶/ ýÓæû¡.µú'øR«‚°ŸÄ÷ÅÔ;V˜?õœ.}+ÂÀ”§1Nd?䦟£rA]Ê…Å蟲9…þ.‡“"(À~²Óø“`=yN=ΟTq“ÅüÄK# ÿ4Á=%.qƒNøÆGïB}|„üñöðÅ,Å~Ü/ìÇjR±«. öb?vzü1ŽùØùýwìG×òu‰®\_ô­Pj+5å} ¾¨ë‹Q58Z¯ú‘||ýFÆmÃzdìø"…èçAGtx£OÄÕ!ð‡—LÁzø"/j¡?öûô†‹ž†¾à÷ýÐ#|þê0¾Ð©7 úL5øÄ&Ï÷`¼%ò†ë!ÿ.%÷ƒÕvà½á»·­ ZVƒõ oÁ»i"rx0h_ ÿIðvXo¬ßEµëA¿ÊaðùÆRû†½'˜·V­}ôMÍÀ^¿€ÞÝù}䚟kyF¬FΕjGè+ò{ Ç¹ý ûKà¥^ð]ÚÔ¼ÐÈ?ßrׂçûmOw'—ƒÀC»ùyóÐ}Ð~ŸÃØ çûåhwp¤úS;p£`#ùÎÜûxà‰<~â!™ø <Õ?Ý œ‚?Â33¦‚ç_â÷‚Ð¥œ9.=A·j|Nº=“‚—‡=Þjž¶Yðy:à¼B/Ù"¬{U ¯]½ýÞxv¾¯KÁ›CN€·ý¦G¬']†€¾Ç{~ ßÀç—¤ Aÿ0|_úÇN–«ÁÛsñÜKx¯‡0Ðyéþxç®-öï„â9ŽðîÈ`P¿îà=‹øî-û‹Ü° þ|„Á›Éò0¤0|Ð3¾:+Èa£Èö«ÜçˆÂ‡«sÈ›ø¼/ ]¼x?X3þÐÚ x=B[íÁ°eØ;,m=œ©šB‡C‡gî?<+9á÷±ô4|?…/âÀVÒµ?Ö#{à{¸0òN;ê#ƒ¾G]dØðÑÜÇð=2“À÷hÕ"Òö9×3©Û £.ŒE]”ËäE]þŒÖ;_ôàÃðEO5¢^û%)é…õ˜½ÿÁc»91ü-—ó¦å­G}šŸ7…éýOc?}À ÌŸ>ÚŠÚt"êÓ÷šPÇ/3#ŸãÒ“—þFÈœ·ÓàÏè¿þ ƒÔ‡Q×¢.#ÄþŒÐ“ÈËx¥…¾¯ßaþÌ®3áÏÔí‡úLË ìgÞ0B¿Ìø~—é›AVñ~3kVÒ÷Ô:Kû&ivëY®ýSÈxädy„bž¬‚{è“%¾MÕPò¹+˜múê³ÿÐJ!CPŸ}ÊõÙYEÜI0vÑ]ê'Ô‹ ¡E¶ÏQ/²»zÑ˨…ó~E‘cé˺F*~ÃzŽî>èœ-3ÌH êrlÈɹq†úŸ#ôGýIƯй‚_ s-¥ðå®<Š9r¶E^®'ï7×ËóçþN¹ŠõÏ[°ž'ܺ¼Û“gÎßGyÎïàË;õ uyž{É»•dMêó§âóäGâïÉ„ùß¾¡æß óÿÈÄë¼ü³›PŸï%#…È)³X@>ANQ ê öèsŸr Ž5SŸOG}AF2t¡žu…ø~^Øù>P¸R…œÂU¹ðîVÓ|e'ÿãzd(´XûêÅÝðE(îÅ߯â^è/^ésˆ×пó6êžÔ/°î/ˆ;ßO$_ÚŽ8àn¦žtM .¿ÚÀß%ãYwh4úKÜ”\w/Lo¬a]àeæd¸1·Ïå„’þ>”´ Ã<Ò~/Õ´DtÄŸÈ‘Î=Ïý­xþ'”Ú裿t»úKÏl¦ïìFú\¯¢ŸÔós"©Õýäö-`ùÌ#}D¾‰Gž¬‡+rd}G®ìë£Ô«ñÅÏÓ1—Âj2òÖ±¨Wì  >ëOýༀTÓZ„yŠÁsAåœCQÆ~šìÿÞZ9N¹•FÆ8Òx æP.¶‡OiaGßÊ{è§\û7ú+Tá¾”ïëÊ[#˜ã»s(GR'é3'Ç9²2æ´?Æ|ECo!÷ §hèvœ§h® |‡×£H躢¥Jäí”sß­Ÿ†´ÁüEŸŠnÀœE¡ëX_Å~i…Ôš|hUÏ)d^Uï`Ì£šd†{SMž‡ùUSKÑO5; ýUk3¨ðœö#ßcnÕI|ߪü›˜PÏœûcéOF•\çR½YŠùUÿY°þí5Ì_¬¾â¡îÈ)“‡úâ‰Ý©—i#·ØÞŒ~û+È)vpÅ9Š=‘_|uî¡Ø;ƒu·ßr=Ð’:­ƒ:§ùM³¤ åÎW¢Ãû.é#¿D/zæ(þ y%³_Pÿúys•Ø8a®ggòä1Ö_ÒbÞ•'Ôá­Ô¥x®/,ylôÉÿÙ¿é¶u¯õO"tøÇ%Xìa¹bÕ’µ[:ewH‡Ï+ŽÙÙnë¬üÿE­Å?|úVúþ3o÷ívöû¬>3i¸n¢á¾‰†6†³ ˜m¸ê³²^æ»ll³uØfÿYå‹ÚÛíß6y¹­-«º~øøßÿšz:ìÚ·m¡µÃ¶ÏR{ì·ÞºÇzÇç£ÿýÓü‚÷ÿÛÉW¯p#timeDate/inst/unitTests/runit.dayOfYear.R0000755000176200001440000000222214263246023020136 0ustar liggesusers # Rmetrics is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # Rmetrics is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this library; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA test.dayOfYear <- function() { # check if there is any problem with timezone and days old <- setRmetricsOptions(myFinCenter = "Zurich") on.exit(setRmetricsOptions(old)) td <- timeDate("2010-01-01") check <- c("2010-01-01" = 1) checkEquals(dayOfYear(td), check) # change tzone setRmetricsOptions(myFinCenter = "GMT") td <- timeDate("2010-01-01") check <- c("2010-01-01" = 1) checkEquals(dayOfYear(td), check) } timeDate/inst/unitTests/runit.isWeekend.R0000755000176200001440000000245714263246023020203 0ustar liggesusers # Rmetrics is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # Rmetrics is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this library; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA test.isWeekend <- function() { # check if there is any problem with timezone and days old <- setRmetricsOptions(myFinCenter = "Zurich") on.exit(setRmetricsOptions(old)) td <- timeCalendar(y = 2011, m = 1, d = 1:7) check <- c(TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE) names(check) <- format(td) checkIdentical(isWeekend(td), check) # change tzone setRmetricsOptions(myFinCenter = "GMT") td <- timeCalendar(y = 2011, m = 1, d = 1:7) check <- c(TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE) names(check) <- format(td) checkIdentical(isWeekend(td), check) } timeDate/inst/unitTests/runit.HolidayCalendars.R0000755000176200001440000003173214356641037021500 0ustar liggesusers # Rmetrics is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # Rmetrics is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this library; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA # Copyrights (C) # for this R-port: # 1999 - 2007, Diethelm Wuertz, GPL # Diethelm Wuertz # info@rmetrics.org # www.rmetrics.org # for the code accessed (or partly included) from other R-ports: # see R's copyright and license files # for the code accessed (or partly included) from contributed R-ports # and other sources # see Rmetrics's copyright file ################################################################################ # FUNCTION: HOLIDAY CALENDAR FUNCTIONS: # holiday Returns a holiday date of G7 and CH # holidayNYSE Returns 'timeDate' object for full-day NYSE holidays # holidayZURICH Returns 'timeDate' object for ZURICH holidays ################################################################################ test.holiday = function() { # easter - # easter(year = currentYear, shift = 0) # Dates for Easter and Good Friday from 2000 until 2010: Easter() # GNB was: timeDate:::.easter() Easter = Easter(2000:2010) # GNB was: timeDate:::.easter(2000:2010) Easter checkTrue(inherits(Easter, "timeDate")) GoodFriday = Easter(2000:2010, -2) # GNB was: timeDate:::.easter(2000:2010, -2) GoodFriday checkIdentical( target = Easter, current = GoodFriday + 2*24*3600) HD = holiday(2000:2010, "Easter") HD checkTrue(inherits(HD, "timeDate")) HD = holiday(2000:2010, "GoodFriday") HD checkTrue(inherits(HD, "timeDate")) # holidays - Easter(2000:2010) GoodFriday(2000:2010) # Return Value: return() } # ------------------------------------------------------------------------------ test.holidayNYSE <- function() { test <- function() { # Holiday NYSE - HD <- holidayNYSE(getRmetricsOptions("currentYear")) print(HD) checkTrue(inherits(HD, "timeDate")) # After July 3, 1959, move Saturday holidays to Friday # ... except if at the end of monthly/yearly accounting period # this is the last business day of a month. publishedHolidays <- c(# holidays listed in http://www.nyse.com/events "2007-01-01", # New Year's Day0 "2007-01-15", # Martin Luther King, Jr. Days "2007-02-19", # Washington's # Birthday/Presidents' Days "2007-04-06", # Good Friday "2007-05-28", # Memorial Day "2007-07-04", # Independence Days "2007-09-03", # Labor Days "2007-11-22", # Thanksgiving Days "2007-12-25", # Christmas # holidays published on http://nyse.com/holidays "2008-01-01", # New Year's Days "2008-01-21", # Martin Luther King, Jr. Day "2008-02-18", # Washington's # Birthday/Presidents' Days "2008-03-21", # Good Friday "2008-05-26", # Memorial Day "2008-07-04", # Independence Days "2008-09-01", # Labor Day "2008-11-27", # Thanksgiving Days "2008-12-25", # Christmas "2009-01-01", # New Year's Day "2009-01-19", # Martin Luther King, Jr. Days "2009-02-16", # Washington's # Birthday/Presidents' Day "2009-04-10", # Good Friday "2009-05-25", # Memorial Day "2009-07-03", # Independence Day (observed) "2009-09-07", # Labor Day "2009-11-26", # Thanksgiving Day "2009-12-25", # Christmas+ "2010-01-01", # New Year's Day "2010-01-18", # Martin Luther King, Jr. Days "2010-02-15", # Washington's # Birthday/Presidents' Day "2010-04-02", # Good Friday "2010-05-31", # Memorial Day "2010-07-05", # Independence Day (observed) "2010-09-06", # Labor Day "2010-11-25", # Thanksgiving Day "2010-12-24", # Christmas+ # New Year's Day in 2011 falls "2011-01-17", # Martin Luther King, Jr. Days "2011-02-21", # Washington's # Birthday/Presidents' Day "2011-04-22", # Good Friday "2011-05-30", # Memorial Day "2011-07-04", # Independence Day (observed) "2011-09-05", # Labor Day "2011-11-24", # Thanksgiving Day "2011-12-26") # Christmas+ publishedHolidays <- timeDate(publishedHolidays, zone="NewYork", FinCenter="NewYork") ## GNB: for v. 4021.105 use argument type for old behaviour ## [2007-01-02] - mourning for G.R. Ford, not included in holidayNYSE() checkTrue(all.equal(publishedHolidays, holidayNYSE(2007:2011, type = "standard"))) } # check if there is any problem with timezone and days old <- setRmetricsOptions(myFinCenter = "Zurich") on.exit(setRmetricsOptions(old)) test() # change tzone setRmetricsOptions(myFinCenter = "GMT") test() } # ------------------------------------------------------------------------------ test.holidayZURICH <- function() { # Holiday Zurich - holidayZURICH(getRmetricsOptions("currentYear")) # Return Value: return() } # ------------------------------------------------------------------------------ test.holidayNERC <- function() { test <- function() { # Holiday NERC - HD <- holidayNERC(getRmetricsOptions("currentYear")) print(HD) checkTrue(inherits(HD, "timeDate")) # http://www.nerc.com/docs/oc/rs/OffPeakDays.csv publishedHolidays <- c("1/1/2009", # New Year's Day "5/25/2009", # Memorial Day "7/4/2009", # Independence "9/7/2009", # Labor Days "11/26/2009", # Thanksgiving Day "12/25/2009", # Christmas Day "1/1/2010", # New Years "5/31/2010", # Memorial Day "7/5/2010", # Independence Day "9/6/2010", # Labor Day "11/25/2010", # Thanksgiving "12/25/2010", # Christmas "1/1/2011", # New Years "5/30/2011", # Memorial Day "7/4/2011", # Independence Day "9/5/2011", # Labor Day "11/24/2011", # Thanksgiving "12/26/2011", # Christmas "1/2/2012", # New Year's Day "5/28/2012", # Memorial Day "7/4/2012", # Independence "9/3/2012", # Labor Day "11/22/2012", # Thanksgiving Day "12/25/2012", # Christmas Day "1/1/2013", # New Year's Day "5/27/2013", # Memorial Day "7/4/2013", # Independence "9/2/2013", # Labor Day "11/28/2013", # Thanksgiving Day "12/25/2013", # Christmas Day "1/1/2014", # New Year's Day "5/26/2014", # Memorial Day "7/4/2014", # Independence "9/1/2014", # Labor Day "11/27/2014", # Thanksgiving Day "12/25/2014", # Christmas Day "1/1/2015", # New Year's Day "5/25/2015", # Memorial Day "7/4/2015", # Independence "9/7/2015", # Labor Day "11/26/2015", # Thanksgiving Day "12/25/2015") # Christmas Day publishedHolidays <- timeDate(publishedHolidays, zone="Eastern", FinCenter="Eastern") checkTrue(all.equal(publishedHolidays, holidayNERC(2009:2015))) } # check if there is any problem with timezone and days old <- setRmetricsOptions(myFinCenter = "Zurich") on.exit(setRmetricsOptions(old)) test() # change tzone setRmetricsOptions(myFinCenter = "GMT") test() } ## GNB: test fixes on 2022-10-01 test.holidayLONDON <- function() { test <- function() { # Holiday LONDON - HD <- holidayLONDON(getRmetricsOptions("currentYear")) print(HD) checkTrue(inherits(HD, "timeDate")) ## https://www.gov.uk/bank-holidays#england-and-wales ## (downloaded on 2022-10-01, this is updated regularly ph2017 <- c("2017-01-02", "2017-04-14", "2017-04-17", "2017-05-01", "2017-05-29", "2017-08-28", "2017-12-25", "2017-12-26" ) ph2018 <- c("2018-01-01", "2018-03-30", "2018-04-02", "2018-05-07", "2018-05-28", "2018-08-27", "2018-12-25", "2018-12-26" ) ph2019 <- c("2019-01-01", "2019-04-19", "2019-04-22", "2019-05-06", "2019-05-27", "2019-08-26", "2019-12-25", "2019-12-26" ) ph2020 <- c("2020-01-01", "2020-04-10", "2020-04-13", "2020-05-08", "2020-05-25", "2020-08-31", "2020-12-25", "2020-12-28" ) ph2021 <- c("2021-01-01", "2021-04-02", "2021-04-05", "2021-05-03", "2021-05-31", "2021-08-30", "2021-12-27", "2021-12-28" ) ## Queen's Platinum Jubilee; Quinn's death ph2022 <- c("2022-01-03", "2022-04-15", "2022-04-18", "2022-05-02", "2022-06-02", "2022-06-03", "2022-08-29", "2022-09-19", "2022-12-26", "2022-12-27" ) ## Queen's Jubilee ph2002 <- c("2002-01-01", "2002-03-29", "2002-04-01", "2002-05-06", "2002-06-03", "2002-06-04", "2002-08-26", "2002-12-25", "2002-12-26") ## Queen's Diamond Jubilee ph2012 <- c("2012-01-02", "2012-04-06", "2012-04-09", "2012-05-07", "2012-06-04", "2012-06-05", "2012-08-27", "2012-12-25", "2012-12-26") checkTrue(all.equal(ph2017, format(holidayLONDON(2017)))) checkTrue(all.equal(ph2018, format(holidayLONDON(2018)))) checkTrue(all.equal(ph2019, format(holidayLONDON(2019)))) checkTrue(all.equal(ph2020, format(holidayLONDON(2020)))) checkTrue(all.equal(ph2021, format(holidayLONDON(2021)))) checkTrue(all.equal(ph2022, format(holidayLONDON(2022)))) checkTrue(all.equal(ph2002, format(holidayLONDON(2002)))) checkTrue(all.equal(ph2012, format(holidayLONDON(2012)))) checkTrue(format(GBMayDay(1995)) == "1995-05-08") # VE day that year checkTrue(format(GBMayDay(2020)) == "2020-05-08") # VE day that year checkTrue(format(GBBankHoliday(2002)) == "2002-06-03") checkTrue(format(GBBankHoliday(2012)) == "2012-06-04") checkTrue(format(GBBankHoliday(2022)) == "2022-06-02") ## millenium day was not included before v4021.107 checkTrue(length(holidayLONDON(1999)) == 9) } test() } ################################################################################ timeDate/inst/unitTests/runit.seq.R0000755000176200001440000001053214337770403017054 0ustar liggesusers # Rmetrics is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # Rmetrics is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this library; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA test.seq.Zurich <- function() { iso1 <- ISOdate(2000,3,25, tz = "Europe/Zurich") iso2 <- ISOdate(2000,3,26, tz = "Europe/Zurich") td1 <- timeDate(iso1, zone = "Zurich", FinCenter = "Zurich") td2 <- timeDate(iso2, zone = "Zurich", FinCenter = "Zurich") checkIdentical( format(seq(iso1, iso2 , length.out = 12)), format(seq(td1, td2 , length.out = 12)) ) ## GNB: commented these out for now. ## There are non-existent times (when the change to DST happens). ## TODO: think whether to keep consistency with ISOdate() ## checkIdentical( ## format(seq(iso1, by = "min", length.out = 24*60)), ## format(seq(td1, by = "min", length.out = 24*60)) ## ) ## checkIdentical( ## format(seq(iso1, by = "hour", length.out = 24)), ## format(seq(td1, by = "hour", length.out = 24)) ## ) checkIdentical( format(seq(iso1, by = "days", length.out = 24)), format(seq(td1, by = "days", length.out = 24)) ) checkIdentical( format(seq(iso1, by = "DSTdays", length.out = 24)), format(seq(td1, by = "DSTdays", length.out = 24)) ) checkIdentical( format(seq(iso1, by = "month", length.out = 24)), format(seq(td1, by = "month", length.out = 24)) ) checkIdentical( format(seq(iso1, by = "year", length.out = 24)), format(seq(td1, by = "year", length.out = 24)) ) checkIdentical( format(seq(iso1, by = 0.5*(iso2 - iso1), length.out = 4)), format(seq(td1, by = 0.5*(td2 - td1), length.out = 4)) ) } # ------------------------------------------------------------------------------ test.seq.GMT <- function() { iso1 <- ISOdate(2000,3,25, tz = "GMT") iso2 <- ISOdate(2000,3,26, tz = "GMT") td1 <- timeDate(iso1, zone = "GMT", FinCenter = "GMT") td2 <- timeDate(iso2, zone = "GMT", FinCenter = "GMT") checkIdentical( format(seq(iso1, iso2 , length.out = 12)), format(seq(td1, td2 , length.out = 12)) ) checkIdentical( format(seq(iso1, by = "min", length.out = 24*60)), format(seq(td1, by = "min", length.out = 24*60)) ) checkIdentical( format(seq(iso1, by = "hour", length.out = 24)), format(seq(td1, by = "hour", length.out = 24)) ) checkIdentical( format(seq(iso1, by = "days", length.out = 24)), format(seq(td1, by = "days", length.out = 24)) ) checkIdentical( format(seq(iso1, by = "DSTdays", length.out = 24)), format(seq(td1, by = "DSTdays", length.out = 24)) ) checkIdentical( format(seq(iso1, by = "month", length.out = 24)), format(seq(td1, by = "month", length.out = 24)) ) checkIdentical( format(seq(iso1, by = "year", length.out = 24)), format(seq(td1, by = "year", length.out = 24)) ) checkIdentical( format(seq(iso1, by = 0.5*(iso2 - iso1), length.out = 4)), format(seq(td1, by = 0.5*(td2 - td1), length.out = 4)) ) } ################################################################################ timeDate/inst/unitTests/runit.MathOps.R0000755000176200001440000001340614263246023017634 0ustar liggesusers # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this library; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA # Copyrights (C) # for this R-port: # 1999 - 2007, Diethelm Wuertz, GPL # Diethelm Wuertz # info@rmetrics.org # www.rmetrics.org # for the code accessed (or partly included) from other R-ports: # see R's copyright and license files # for the code accessed (or partly included) from contributed R-ports # and other sources # see Rmetrics's copyright file ################################################################################ # S3 MEHOD: MATHEMATICAL OPERATIONS: # Ops.timeDate Group 'Ops' generic functions for 'timeDate' objects # +.timeDate Performs arithmetic + operation on 'timeDate' objects # -.timeDate Performs arithmetic - operation on 'timeDate' objects # diff.timeDate Returns suitably lagged and iterated differences # difftimeDate Returns a difference of two 'timeDate' objects # round.timeDate Rounds objects of class 'timeDate' # trunc.timeDate Truncates objects of class 'timeDate' # S3 MEHOD: CONCATENATION, ORDERING AND SORTING: # c.timeDate Concatenates 'timeDate' objects # rep.timeDate Replicates a 'timeDate' object # sort.timeDate Sorts a 'timeDate' object # sample.timeDate Resamples a 'timeDate' object # unique.timeDate NMakes a 'timeDate' object unique # rev.timeDate Reverts a 'timeDate' object ################################################################################ test.timeDateMathOps = function() { # Ops.timeDate Group 'Ops' generic functions for 'timeDate' objects # +.timeDate Performs arithmetic + operation on 'timeDate' objects # -.timeDate Performs arithmetic - operation on 'timeDate' objects # diff.timeDate Returns suitably lagged and iterated differences # difftimeDate Returns a difference of two 'timeDate' objects # round.timeDate Rounds objects of class 'timeDate' # trunc.timeDate Truncates objects of class 'timeDate' # New York: setRmetricsOptions(myFinCenter = "NewYork") NY = timeCalendar(h = 10) # Back to Zurich: setRmetricsOptions(myFinCenter = "Zurich") ZH = timeCalendar(h = 16) # Group Ops: TEST = (NY > ZH) checkTrue(!TEST[1]) # expr = TEST[4] # checkTrue(expr) # + Operation: # - Operation: NewYork()[176:177, ] Zurich()[59:60, ] DIFF.APRIL = as.integer((NY - ZH)[4]) # checkEqualsNumeric( # target = as.numeric(DIFF.APRIL), current = 3600) DIFF.RESTOFYEAR = sum(as.integer((NY - ZH)[-4])) # checkEqualsNumeric( # target = as.numeric(DIFF.RESTOFYEAR), current = 0) # diff.timeDate() Function: # difftimeDate() Function: # round() Function: set.seed(4711) setRmetricsOptions(myFinCenter = "GMT") tC = timeCalendar( m = 1:12, d = rep(1, 12), h = round(runif(12, 0, 23)), min = round(runif(12, 0, 59)), s = round(runif(12, 0, 59))) # rTC = round(tC) # rTC # trunc() Function: # tTC = trunc(tC) # tTC # Return Value: return() } # ------------------------------------------------------------------------------ test.timeDateOrdering = function() { # c.timeDate Concatenates 'timeDate' objects # rep.timeDate Replicates a 'timeDate' object # sort.timeDate Sorts a 'timeDate' object # sample.timeDate Resamples a 'timeDate' object # unique.timeDate NMakes a 'timeDate' object unique # rev.timeDate Reverts a 'timeDate' object ## NOTA BENE: You CAN NOT work with a function-local variable 'myFincenter', ## Since R's evaluation rules will use the global one, here! ## NB (2) : currently need to specify 'zone' # NewYork: cyr <- 2007 NY = timeCalendar(cyr, h = 10, FinCenter = "NewYork", zone = "NewYork") str(NY) checkIdentical(format(NY), sprintf("%4d-%02d-01 %02d:00:00", cyr, 1:12, 10)) # Back to Zurich: ZH = timeCalendar(cyr, h = 16, FinCenter = "Zurich", zone = "Zurich") str(ZH) checkIdentical(format(ZH), sprintf("%4d-%02d-01 %02d:00:00", cyr, 1:12, 16)) # NY-ZH Concatenate: NYC = c(NY, ZH)[13] checkIdentical(NYC@FinCenter, "NewYork") checkIdentical(format(NYC), paste(cyr, "01-01 10:00:00", sep="-")) # ZH-NY Concatenate: ZRH = c(ZH, NY)[13] checkIdentical(ZRH@FinCenter, "Zurich") checkIdentical(format(ZRH), paste(cyr, "01-01 16:00:00", sep="-")) # Replicate and "-": DIFF = rep(NY[1:3], times = 3) - rep(NY[1:3], each = 3) checkIdentical(as.numeric(DIFF[c(1, 5, 9)]), c(0, 0, 0)) # Sort | Sample: TC = timeCalendar() SAMPLE = sample(TC) print(SAMPLE) checkIdentical(TC, sort(SAMPLE)) # Revert: TS = timeSequence("2001-09-11") REV = rev(TS) print(head(REV)) checkIdentical(TS, rev(REV)) # Return Value: return() } ################################################################################ timeDate/inst/unitTests/runit.Coercion.R0000755000176200001440000001170114263246023020016 0ustar liggesusers # Rmetrics is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # Rmetrics is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this library; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA # Copyrights (C) # for this R-port: # 1999 - 2007, Diethelm Wuertz, GPL # Diethelm Wuertz # info@rmetrics.org # www.rmetrics.org # for the code accessed (or partly included) from other R-ports: # see R's copyright and license files # for the code accessed (or partly included) from contributed R-ports # and other sources # see Rmetrics's copyright file ################################################################################ test.as <- function() { # as.character.timeDate Returns a 'timeDate' object as 'character' string # as.double.timeDate Returns a 'timeDate' object as 'numeric' object # as.data.frame.timeDate Returns a 'timeDate' object as 'data.frame' object # as.POSIXct.timeDate Returns a 'timeDate' object as 'POSIXct' object # as.POSIXlt.timeDate Returns a 'timeDate' object as 'POSIXlt' object # as.Date.timeDate Returns a 'timeDate' object as 'Date' object # Monthly calendarical sequence for the current year: setRmetricsOptions(myFinCenter = "GMT") TC = timeCalendar(2006) TC checkIdentical(TC@format, "%Y-%m-%d") checkIdentical(TC@FinCenter, "GMT") # Transform into a vector of character strings: month = c(paste("0", 1:9, sep = ""), 10:12) month charvec = paste("2006-", month, "-01", sep = "") charvec CHAR = as.character(TC) attr(CHAR, "control")<-NULL CHAR checkIdentical(CHAR, charvec) # Transform into a numeric vector: DAYS = c(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30) NUM = as.double(TC) NUM checkIdentical(diff(NUM), DAYS) NUM = as.numeric(TC) NUM checkIdentical(diff(NUM), DAYS) # Transform into a data frame: DF = as.data.frame(TC) DF attr(DF, "control") DIFF = diff(as.numeric(DF[,1])/3600/24) checkIdentical(DIFF, DAYS) # Transform into a POSIX object: CT = as.POSIXct(TC) CT # LT = as.POSIXlt(TC) # LT # checkIdentical(format(CT), format(LT)) # Transform into a POSIX object: as.Date(TC) TC2 = TC + 16*3600 TC2 as.Date(TC2) as.Date(TC2, "round") as.Date(TC2, "next") target = as.numeric(as.Date(TC)) current = as.numeric(as.Date(TC2, "round")-1) checkIdentical(target, current) # Return Value: return() } # ------------------------------------------------------------------------------ test.asTimeDate = function() { # as.timeDate Use Method # as.timeDate.POSIXt Returns a 'POSIX' object as 'timeDate' object # as.timeDate.Date Returns a 'POSIX' object as 'timeDate' object # Current Time: as.timeDate(Sys.time()) # Coerce: setRmetricsOptions(myFinCenter = "GMT") Sys.Date() as.timeDate(Sys.Date()) myFinCenter <- getRmetricsOptions("myFinCenter") as.timeDate(Sys.Date(), zone = myFinCenter, FinCenter = myFinCenter) as.timeDate(Sys.Date(), zone = "Zurich", FinCenter = "Zurich") # Return Value: return() } # ------------------------------------------------------------------------------ test.julian <- function() { # julian.timeDate = function(x, FinCenter = myFinCenter, ...) setRmetricsOptions(myFinCenter = "GMT") GD = timeDate("1970-01-01 00:00:00", zone = "GMT", FinCenter = "GMT") GD J = julian(GD, FinCenter = "GMT") J class(J) checkIdentical(as.numeric(J), 0) # Return Value: return() } # ------------------------------------------------------------------------------ test.atoms <- function() { # atoms.timeDate = function(x, ...) TC = timeCalendar() AT = atoms(TC) AT # months.timeDate = function(x, abbreviate = NULL) MO = months(TC) MO # Compare: checkIdentical(as.vector(AT[, 2]), as.vector(MO)) # Return Value: return() } # ------------------------------------------------------------------------------ test.months <- function() { # atoms.timeDate = function(x, ...) TC = timeCalendar() AT = atoms(TC) AT # months.timeDate = function(x, abbreviate = NULL) MO = months(TC) MO # Compare: checkIdentical(as.vector(AT[, 2]), as.vector(MO)) # Return Value: return() } ################################################################################ timeDate/inst/unitTests/runit.SpecialDates.R0000755000176200001440000001203014271557176020627 0ustar liggesusers # Rmetrics is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # Rmetrics is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this library; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA # Copyrights (C) # for this R-port: # 1999 - 2007, Diethelm Wuertz, GPL # Diethelm Wuertz # info@rmetrics.org # www.rmetrics.org # for the code accessed (or partly included) from other R-ports: # see R's copyright and license files # for the code accessed (or partly included) from contributed R-ports # and other sources # see Rmetrics's copyright file ################################################################################ checkEQ <- function(x,y) checkEquals(x, y, tol = 0) test.timeLastDayInMonth <- function() { ## What date has the last day in a month for a given date ? charvec <- "2006-04-16" lstDay <- as("2006-04-30", "timeDate") myFinCenter <- getRmetricsOptions("myFinCenter") timeLastDayInMonth(charvec, format = "%Y-%m-%d", zone = myFinCenter, FinCenter = myFinCenter) timeLastDayInMonth(charvec, FinCenter = "Zurich") checkEQ(lstDay, timeLastDayInMonth(charvec)) } ## ------------------------------------------------------------------------------ test.timeFirstDayInMonth <- function() { ## What date has the first day in a month for a given date ? checkEQ(timeFirstDayInMonth(c("2006-04-16","2000-02-29")), as(c("2006-04-01", "2000-02-01"), "timeDate")) } ## ------------------------------------------------------------------------------ test.timeLastDayInQuarter <- function() { ## What date has the last day in a quarter for a given date ? checkEQ(timeLastDayInQuarter("2006-04-16"), as("2006-06-30", "timeDate")) } ## ------------------------------------------------------------------------------ test.timeFirstDayInQuarter <- function() { ## What date has the first day in a quarter for a given date ? checkEQ(timeFirstDayInQuarter("2006-04-16"), as("2006-04-01", "timeDate")) } ## ------------------------------------------------------------------------------ test.timeNdayOnOrAfter <- function() { ## What date has the first Monday on or after March 15, 1986 ? checkEQ(timeNdayOnOrAfter("1986-03-15", 1), as("1986-03-17", "timeDate")) } ## ------------------------------------------------------------------------------ test.timeNdayOnOrBefore <- function() { ## What date has Friday on or before March 15, 1986? checkEQ(timeNdayOnOrBefore("1986-03-15", 5), as("1986-03-14", "timeDate")) } ## ------------------------------------------------------------------------------ isOpExFriday <- function(ch.dts) { dts <- as.Date(ch.dts) from <- as.numeric(format(min(dts), "%Y")) to <- as.numeric(format(max(dts), "%Y")) OEFri <- timeNthNdayInMonth(timeFirstDayInMonth(ch.dts), nday=5, nth=3) isBizday(timeDate(dts), holidayNYSE(from:to)) & dts == as(OEFri, "Date") } test.timeNthNdayInMonth <- function() { ## What date is the second Monday in April 2004 ? checkEQ(timeNthNdayInMonth("2004-04-01", 1, 2), as("2004-04-12", "timeDate")) ## From the (timezone dependent) bug, reported by David Winsemius, Sep.23, 2011: dates <- structure(c(15228:15233, 15236:15240), class="Date") true.OE <- as.Date("2011-09-16") checkEQ(dates[isOpExFriday(dates)], true.OE) o.TZ <- Sys.getenv("TZ") ## reset at end: on.exit( Sys.setenv("TZ" = o.TZ) ) Sys.setenv("TZ" = "America/New_York") setRmetricsOptions("myFinCenter" = "New_York") checkEQ(dates[isOpExFriday(dates)], true.OE) Sys.setenv("TZ" = "London/Europe") setRmetricsOptions("myFinCenter" = "Zurich") checkEQ(dates[isOpExFriday(dates)], true.OE) ## GNB: test after the fix that a previously wrong argument now gives correct value. ## previously the following was giving 1996-07-19. checkEQ(timeNthNdayInMonth("1996-06-23", 5, 4), as("1996-06-27", "timeDate")) } ## ------------------------------------------------------------------------------ test.timeLastNdayInMonth <- function() { ## What date has the last Tuesday in May, 1996 ? lastTueInMay1996 <- timeLastNdayInMonth("1996-05-01", 2) # GNB - changing after fixing timeLastNdayInMonth(), the last Tuesday # in May is hardly in June # was: as("1996-06-04", "timeDate")) checkEQ(lastTueInMay1996, as("1996-05-28", "timeDate")) } ################################################################################ timeDate/inst/unitTests/runTests.R0000755000176200001440000000453014263246023016746 0ustar liggesuserspkg <- "timeDate" if(require("RUnit", quietly = TRUE)) { library(package=pkg, character.only = TRUE) if(!(exists("path") && file.exists(path))) path <- system.file("unitTests", package = pkg) ## --- Testing --- ## Define tests testSuite <- defineTestSuite(name = paste(pkg, "unit testing"), dirs = path) if(interactive()) { cat("Now have RUnit Test Suite 'testSuite' for package '", pkg, "' :\n", sep='') str(testSuite) cat('', "Consider doing", "\t tests <- runTestSuite(testSuite)", "\nand later", "\t printTextProtocol(tests)", '', sep = "\n") } else { ## run from shell / Rscript / R CMD Batch / ... ## Run tests <- runTestSuite(testSuite) if(file.access(path, 02) != 0) { ## cannot write to path -> use writable one tdir <- tempfile(paste(pkg, "unitTests", sep="_")) dir.create(tdir) pathReport <- file.path(tdir, "report") cat("RUnit reports are written into ", tdir, "/report.(txt|html)", sep = "") } else { pathReport <- file.path(path, "report") } ## Print Results: printTextProtocol(tests, showDetails = FALSE) printTextProtocol(tests, showDetails = FALSE, fileName = paste(pathReport, "Summary.txt", sep = "")) printTextProtocol(tests, showDetails = TRUE, fileName = paste(pathReport, ".txt", sep = "")) ## Print HTML Version to a File: ## printHTMLProtocol has problems on Mac OS X if (Sys.info()["sysname"] != "Darwin") printHTMLProtocol(tests, fileName = paste(pathReport, ".html", sep = "")) ## stop() if there are any failures i.e. FALSE to unit test. ## This will cause R CMD check to return error and stop tmp <- getErrors(tests) if(tmp$nFail > 0 | tmp$nErr > 0) { stop(paste("\n\nunit testing failed (#test failures: ", tmp$nFail, ", R errors: ", tmp$nErr, ")\n\n", sep="")) } } } else { cat("R package 'RUnit' cannot be loaded -- no unit tests run\n", "for package", pkg,"\n") } ################################################################################ timeDate/inst/unitTests/runit.dayOfWeek.R0000755000176200001440000000223714263246023020137 0ustar liggesusers # Rmetrics is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # Rmetrics is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this library; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA test.dayOfWeek <- function() { # check if there is any problem with timezone and days old <- setRmetricsOptions(myFinCenter = "Zurich") on.exit(setRmetricsOptions(old)) td <- timeDate("2010-01-01") check <- c("2010-01-01" = "Fri") checkIdentical(dayOfWeek(td), check) # change tzone setRmetricsOptions(myFinCenter = "GMT") td <- timeDate("2010-01-01") check <- c("2010-01-01" = "Fri") checkIdentical(dayOfWeek(td), check) } timeDate/inst/unitTests/runit.Class.R0000644000176200001440000004760614531161212017326 0ustar liggesusers # Rmetrics is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # Rmetrics is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this library; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA # Copyrights (C) # for this R-port: # 1999 - 2007, Diethelm Wuertz, GPL # Diethelm Wuertz # info@rmetrics.org # www.rmetrics.org # for the code accessed (or partly included) from other R-ports: # see R's copyright and license files # for the code accessed (or partly included) from contributed R-ports # and other sources # see Rmetrics's copyright file ################################################################################ # FUNCTION: GENERATION OF TIMEDATE OBJECTS: # 'timeDate' S4 Class representation for timeDate objects # timeDate Creates a 'timeDate' object from given dates # whichFormat Returns format string called by timeDate # midnightStandard Corrects for midnight standard called by timeDate # .formatFinCenter Internal called by timeDate # timeCalendar Creates a 'timeDate' object from calendar atoms # timeSequence Creates a regularly spaced 'timeDate' object # seq.timeDate A synonyme function for timeSequence # Sys.timeDate Returns system time as an object of class 'timeDate' # is.timeDate Tests if the object is of class 'timeDate' # METHODS: REPRESENTATION OF TIMEDATE OBJECTS: # print.timeDate Prints 'timeDate' object # plot.timeDate Plots 'timeDate' object # points.timeDate Adds points to a 'timeDate' plot # lines.timeDate Adds lines to a 'timeDate' plot # summary.timeDate Summarizes details of a 'timeDate' object # format.timeDate Formats 'timeDate' as ISO conform character string ################################################################################ test.timeDate = function() { # DW: We should pack this in several test.timeDate.* functions ... # Set Financial Center to GMT: setRmetricsOptions(myFinCenter = "GMT") print(getRmetricsOptions("myFinCenter")) # timeDate() Function: charvec = paste("2006-01-", c(10, 20, 30), sep = "") print(charvec) TD = timeDate(charvec) print(TD) CHARVEC = as.character(TD) attr(CHARVEC, "control")<-NULL checkIdentical(charvec, CHARVEC) # timeDate() Function, continued: charvec = paste("2006-01-", c("10 10", "20 10", "30 10"), sep = "") target = paste(charvec, ":00:00", sep = "") TD = timeDate(charvec) print(TD) CHARVEC = as.character(TD) attr(CHARVEC, "control")<-NULL checkIdentical(target, CHARVEC) # timeDate() Function, continued: charvec = paste("2006-01-", c("10 10:00", "20 10:00", "30 10:00"), sep = "") target = paste(charvec, ":00", sep = "") print(charvec) TD = timeDate(charvec) print(TD) CHARVEC = as.character(TD) attr(CHARVEC, "control")<-NULL checkIdentical(target, CHARVEC) # YYYYMMDDhhmmss: TD = timeDate("20010101") print(TD) checkIdentical(format(TD), "2001-01-01") TD = timeDate("200101010000") print(TD) checkIdentical(format(TD), "2001-01-01") TD = timeDate("20010101000000") print(TD) checkIdentical(format(TD), "2001-01-01") TD = timeDate("200101011600") print(TD) checkIdentical(format(TD), "2001-01-01 16:00:00") TD = timeDate("20010101160000") print(TD) checkIdentical(format(TD), "2001-01-01 16:00:00") # Format Slot Check: TD = timeDate("2001-01-01") print(TD) checkIdentical(TD@format, "%Y-%m-%d") TD = timeDate("2001-01-01 00:00") print(TD) checkIdentical(TD@format, "%Y-%m-%d") TD = timeDate("2001-01-01 00:00:00") print(TD) checkIdentical(TD@format, "%Y-%m-%d") TD = timeDate("2001-01-01 16:00") print(TD) checkIdentical(TD@format, "%Y-%m-%d %H:%M:%S") TD = timeDate("2001-01-01 16:00:00") print(TD) checkIdentical(TD@format, "%Y-%m-%d %H:%M:%S") TD = timeDate(c("2001-01-01 00:00", "2001-01-01 16:00")) print(TD) checkIdentical(TD@format, "%Y-%m-%d %H:%M:%S") TD = timeDate(c("2001-01-01 00:00:00", "2001-01-01 16:00:00")) print(TD) checkIdentical(TD@format, "%Y-%m-%d %H:%M:%S") # More timeDate Checks: TD = timeDate("20010101", zone = "GMT", FinCenter = "Zurich") print(TD) checkIdentical(format(TD), "2001-01-01 01:00:00") TD = timeDate("200101010000", zone = "GMT", FinCenter = "Zurich") print(TD) checkIdentical(format(TD), "2001-01-01 01:00:00") TD = timeDate("20010101000000", zone = "GMT", FinCenter = "Zurich") print(TD) checkIdentical(format(TD), "2001-01-01 01:00:00") TD = timeDate("200101011600", zone = "GMT", FinCenter = "Zurich") print(TD) checkIdentical(format(TD), "2001-01-01 17:00:00") TD = timeDate("20010101160000", zone = "GMT", FinCenter = "Zurich") print(TD) checkIdentical(format(TD), "2001-01-01 17:00:00") TD = timeDate(c("2001-01-01 00:00", "2001-01-01 16:00"), zone = "GMT", FinCenter = "Zurich") print(TD) checkIdentical(format(TD), c("2001-01-01 01:00:00", "2001-01-01 17:00:00")) TD = timeDate(c("2001-01-01 00:00:00", "2001-01-01 16:00:00"), zone = "GMT", FinCenter = "Zurich") print(TD) checkIdentical(format(TD), c("2001-01-01 01:00:00", "2001-01-01 17:00:00")) # Format: "%d-%b-%Y" Months = c("Mar", "Jun", "Sep", "Dec") charvec <- paste("01", Months, "2006", sep = "-") print(TD <- timeDate(charvec, format = "%d-%b-%Y")) ## checkIdentical(format(TD), ## paste("2006", c("03-01", "06-01", "09-01", "12-01"), sep = "-")) # Format: "%m/%d/%Y" print(TD <- timeDate("12/15/2006", format = "%m/%d/%Y")) checkIdentical(format(TD), "2006-12-15") # Return Value: return() } # ------------------------------------------------------------------------------ test.whichFormat <- function() { # Which Format: WF = whichFormat("20010101") print(WF) checkIdentical(WF, "%Y%m%d") WF = whichFormat("200101010000") print(WF) checkIdentical(WF, "%Y%m%d%H%M") WF = whichFormat("20010101000000") print(WF) checkIdentical(WF, "%Y%m%d%H%M%S") WF = whichFormat("200101011600") print(WF) checkIdentical(WF, "%Y%m%d%H%M") WF = whichFormat("20010101160000") print(WF) checkIdentical(WF, "%Y%m%d%H%M%S") WF = whichFormat("2001-01-01") print(WF) checkIdentical(WF, "%Y-%m-%d") WF = whichFormat("2001-01-01 00:00") print(WF) checkIdentical(WF, "%Y-%m-%d %H:%M") WF = whichFormat("2001-01-01 00:00:00") print(WF) checkIdentical(WF, "%Y-%m-%d %H:%M:%S") WF = whichFormat("2001-01-01 16:00") print(WF) checkIdentical(WF, "%Y-%m-%d %H:%M") WF = whichFormat("2001-01-01 16:00:00") print(WF) checkIdentical(WF, "%Y-%m-%d %H:%M:%S") WF = whichFormat("01/01/2001") print(WF) checkIdentical(WF, "%m/%d/%Y") WF = whichFormat("01-Jan-2001") print(WF) checkIdentical(WF, "%d-%b-%Y") # Return Value: return() } # ------------------------------------------------------------------------------ test.midnightStandard <- function() { ISOform <- "%Y-%m-%d %H:%M:%S" .midAuto <- function(cc) midnightStandard(cc, whichFormat(cc)) # Midnight Standard - Short Form: dd <- c("20010101", "20070131") dd.iso <- format(as.POSIXlt(strptime(dd, "%Y%m%d")), ISOform) print(MS <- .midAuto(dd)) checkIdentical(MS, dd.iso) checkIdentical(dd.iso, .midAuto(c("200101010000", "200701310000"))) checkIdentical(dd.iso, .midAuto(c("20010101000000", "20070131000000"))) checkIdentical(dd.iso, .midAuto(c("2001-01-01 00:00:00", "2007-01-31 00:00:00"))) print(MS <- .midAuto("200101011600")) checkIdentical(MS, "2001-01-01 16:00:00") checkIdentical(MS, .midAuto("20010101160000")) ## midnight case : MN <- .midAuto("20010131240000") checkIdentical(MN, "2001-02-01 00:00:00") checkIdentical(MN, .midAuto(MN)) checkIdentical(.midAuto("200101312400"), MN)# no seconds checkIdentical(.midAuto("2001013124"), MN)# no min., no sec. ## NEW: "arbitrary format": cv <- c("240000 20010131", "231020 20010131") print(MS <- midnightStandard(cv, (fcv <- "%H%M%S %Y%m%d"))) checkIdentical(MS, c("2001-02-01 00:00:00", "2001-01-31 23:10:20")) print(MS2 <- midnightStandard2(cv, fcv)) checkTrue(inherits(MS2, "POSIXct")) checkIdentical(MS, format(MS2)) cv <- c('1/1/2010', '10/10/2010') print(MS <- midnightStandard2(cv)) ## only the *2() version works here! checkTrue(inherits(MS, "POSIXct")) checkIdentical(format(MS), c("2010-01-01", "2010-10-10")) ## even more extreme cv <- c("24:00, 31.01.2001", "23:10, 31.01.2001", "24:00, 31.12.2005") print(MS <- midnightStandard(cv, "%H:%M, %d.%m.%Y")) checkIdentical(MS, c("2001-02-01 00:00:00", "2001-01-31 23:10:00", "2006-01-01 00:00:00")) # Midnight Standard - Human Readable Form: print(MS <- .midAuto("2001-01-31")) checkIdentical(MS, "2001-01-31 00:00:00") checkIdentical(MS, .midAuto(MS)) checkIdentical(MS, .midAuto("2001-01-31 00:00")) checkIdentical(MS, .midAuto("2001-01-31 00")) checkIdentical(MN, .midAuto("2001-01-31 24:00:00")) checkIdentical(MN, .midAuto("2001-01-31 24:00")) checkIdentical(MN, .midAuto("2001-01-31 24")) # Return Value: return() } # ------------------------------------------------------------------------------ test.POSIX = function() { # POSIX: setRmetricsOptions(myFinCenter = "GMT") X = ISOdate(year = 2006, month = 1:12, day = 1, hour = 0) print(X) print(class(X)) TD = timeDate(X) print(TD) current = c( "2006-01-01", "2006-02-01", "2006-03-01", "2006-04-01", "2006-05-01", "2006-06-01", "2006-07-01", "2006-08-01", "2006-09-01", "2006-10-01", "2006-11-01", "2006-12-01") print(current) checkIdentical(format(TD), current) # POSIX, continued: X = ISOdate(year = 2006, month = 1:12, day = 1, hour = 0) GMT = timeDate(X, zone = "GMT", FinCenter = "GMT") print(GMT) current = c( "2006-01-01", "2006-02-01", "2006-03-01", "2006-04-01", "2006-05-01", "2006-06-01", "2006-07-01", "2006-08-01", "2006-09-01", "2006-10-01", "2006-11-01", "2006-12-01") print(current) checkIdentical(format(GMT), current) # POSIX, continued: NYC = timeDate(X, zone = "NewYork", FinCenter = "NewYork") print(NYC) current = c( "2006-01-01", "2006-02-01", "2006-03-01", "2006-04-01", "2006-05-01", "2006-06-01", "2006-07-01", "2006-08-01", "2006-09-01", "2006-10-01", "2006-11-01", "2006-12-01") print(current) checkIdentical(format(NYC), current) # POSIX, continued: GMT.NYC = timeDate(X, zone = "GMT", FinCenter = "NewYork") print(GMT.NYC) current = c( "2005-12-31 19:00:00", "2006-01-31 19:00:00", "2006-02-28 19:00:00", "2006-03-31 19:00:00", "2006-04-30 20:00:00", "2006-05-31 20:00:00", "2006-06-30 20:00:00", "2006-07-31 20:00:00", "2006-08-31 20:00:00", "2006-09-30 20:00:00", "2006-10-31 19:00:00", "2006-11-30 19:00:00") print(current) checkIdentical(format(GMT.NYC), current) # Return Value: return() } # ------------------------------------------------------------------------------ test.asTimeDate = function() { # as.timeDate() Function: X = ISOdate(year = 2006, month = 1:12, day = 1, hour = 10) GMT = as.timeDate(X, zone = "GMT", FinCenter = "GMT")[c(6, 12)] print(GMT) current = c("2006-06-01 10:00:00", "2006-12-01 10:00:00") print(current) checkIdentical(format(GMT), current) # as.timeDate() Function, continued: X = ISOdate(year = 2006, month = 1:12, day = 1, hour = 10) NYC = as.timeDate(X, zone = "NewYork", FinCenter = "NewYork")[c(6, 12)] print(NYC) current = c("2006-06-01 10:00:00", "2006-12-01 10:00:00") print(current) checkIdentical(format(NYC), current) # as.timeDate() Function, continued: X = ISOdate(year = 2006, month = 1:12, day = 1, hour = 10) GMT.NYC = as.timeDate(X, zone = "GMT", FinCenter = "NewYork")[c(6, 12)] print(GMT.NYC) current = c("2006-06-01 06:00:00", "2006-12-01 05:00:00") print(current) checkIdentical(format(GMT.NYC), current) # Return Value: return() } # ------------------------------------------------------------------------------ test.asDate = function() { # as.Date() Function: X = as.Date(ISOdate(year = 2006, month = 1:12, day = 1, hour = 10)) GMT = as.timeDate(X, zone = "GMT", FinCenter = "GMT")[c(6, 12)] print(GMT) current = c("2006-06-01", "2006-12-01") print(current) checkIdentical(format(GMT), current) # as.Date() Function, continued: X = as.Date(ISOdate(year = 2006, month = 1:12, day = 1, hour = 10)) NYC = as.timeDate(X, zone = "NewYork", FinCenter = "NewYork")[c(6, 12)] print(NYC) current = c("2006-06-01", "2006-12-01") print(current) checkIdentical(format(NYC), current) ### # FIXME: YC, IMO the test case is wrong, ### # i.e. current = c("2006-05-31 20:00:00", "2006-11-30 19:00:00") ### # as.Date() Function, continued: ### X = as.Date(ISOdate(year = 2006, month = 1:12, day = 1, hour = 10)) ### GMT.NYC = as.timeDate(X, zone = "GMT", FinCenter = "NewYork")[c(6, 12)] ### print(GMT.NYC) ### current = c("2006-06-01", "2006-12-01") ### print(current) ### checkIdentical(format(GMT.NYC), current) # Return Value: return() } # ------------------------------------------------------------------------------ test.timeCalendar = function() { # timeCalendar() Function, Check FinCenter: setRmetricsOptions(myFinCenter = "Zurich") target = as.character(getRmetricsOptions("myFinCenter")) target current = "Zurich" current checkIdentical(target, current) # timeCalendar() Function, Check CurrentYear: target = as.character(getRmetricsOptions("currentYear")) target current = substr(as.character(Sys.Date()), 1, 4) current checkIdentical(target, current) # timeCalendar() | timeSequence() Functions: # Generate timDate from timeCalendar, compare with timeSequence setRmetricsOptions(myFinCenter = "GMT") target = timeCalendar(y = 2006, m = 1:12, d = 1) target current = timeSequence(from = "2006-01-01", by = "month", length.out = 12) current checkIdentical(target, current) # timeCalendar() | timeSequence() Functions: # Generate timDate from timeCalendar, compare with timeSequence: setRmetricsOptions(myFinCenter = "Zurich") target = timeCalendar(y = 2006, m = 1:12, d = 1) target current = timeSequence(from = "2006-01-01", by = "month", length.out = 12) current checkIdentical(target, current) # timeCalendar() Function: # Date/Time: setRmetricsOptions(myFinCenter = "Zurich") ZRH.ZRH = timeCalendar(h = 16) GMT.ZRH = timeCalendar(h = 16, zone = "GMT") GMT.NYC = timeCalendar(h = 16, zone = "GMT", FinCenter = "NewYork") checkEqualsNumeric(target = sum(as.integer(ZRH.ZRH-GMT.ZRH)), -19) checkEqualsNumeric(target = sum(as.integer(GMT.ZRH-GMT.NYC)), 0) checkEqualsNumeric(target = sum(as.integer(GMT.NYC-ZRH.ZRH)), +19) # Return Value: return() } # ------------------------------------------------------------------------------ test.timeSequence = function() { # timeCalendar - # Generate timDate Objects from Sequences: getRmetricsOptions("myFinCenter") target = timeSequence(from = "2006-01-01", to = "2006-01-31", by = "day") target current = timeCalendar(y = 2006, m = 1, d = 1:31) current checkIdentical(target, current) # By Hour: from = "2006-01-01 00:00:00" to = "2006-01-01 23:59:59" timeSequence(from, to, by = "hour") # By Minute: from = "2006-01-01 16:00:00" to = "2006-01-01 16:14:59" timeSequence(from, to, by = "min") # By Second: from = "2006-01-01 16:00:00" to = "2006-01-01 16:00:14" timeSequence(from, to, by = "s") # Check length.out - hourly timeDates: from = "2006-01-01 16:00:00" timeSequence(from, length.out = 15, by = "year") timeSequence(from, length.out = 15, by = "quarter") timeSequence(from, length.out = 15, by = "week") timeSequence(from, length.out = 15, by = "month") timeSequence(from, length.out = 15, by = "day") timeSequence(from, length.out = 15, by = "hour") timeSequence(from, length.out = 15, by = "min") timeSequence(from, length.out = 15, by = "sec") # Check length.out - Dates: from = "2006-01-01" timeSequence(from, length.out = 15, by = "year") timeSequence(from, length.out = 15, by = "quarter") timeSequence(from, length.out = 15, by = "week") timeSequence(from, length.out = 15, by = "month") timeSequence(from, length.out = 15, by = "day") timeSequence(from, length.out = 15, by = "hour") timeSequence(from, length.out = 15, by = "min") timeSequence(from, length.out = 15, by = "sec") # Return Value: return() } # ------------------------------------------------------------------------------ test.sysTimeDate = function() { # Check Financieal Center: setRmetricsOptions(myFinCenter = "Zurich") checkIdentical(as.character(getRmetricsOptions("myFinCenter")), "Zurich") # Zurich: ZRH = Sys.timeDate() print(ZRH) # GMT: GMT = Sys.timeDate("GMT") print(GMT) # New York: NYC = Sys.timeDate("NewYork") print(NYC) # Check Class of Sys.timeDate() CLASS = class(Sys.timeDate()) print(CLASS) checkIdentical(CLASS[[1]], "timeDate") # Check Class of Sys.Date() CLASS = class(Sys.Date()) print(CLASS) checkIdentical(CLASS[[1]], "Date") # Compare timeDate() and as.timeDate() from Date object: DATE = Sys.Date() TD1 = timeDate(DATE, zone = "NewYork", FinCenter = "Zurich") TD2 = as.timeDate(DATE, zone = "NewYork", FinCenter = "Zurich") checkIdentical(target = TD1, current = TD2) # Return Value: return() } # ------------------------------------------------------------------------------ test.displayMethods = function() { # print.timeDate Prints 'timeDate' object # plot.timeDate Plots 'timeDate' object # points.timeDate Adds points to a 'timeDate' plot # lines.timeDate Adds lines to a 'timeDate' plot # summary.timeDate Summarizes details of a 'timeDate' object # format.timeDate Formats 'timeDate' as ISO conform character string # Check Financieal Center: setRmetricsOptions(myFinCenter = "NewYork") print(getRmetricsOptions("myFinCenter")) checkIdentical(as.character(getRmetricsOptions("myFinCenter")), "NewYork") # print() Function DT = timeCalendar() PRINT = print(DT) checkIdentical(PRINT, DT) # plot() Function: DT = timeSequence("2006-01-01", length.out = 10) y = rnorm(10) plot(DT, y) points(DT, y, col = "red") lines(DT, y, col = "blue") # summary() Function DT = timeCalendar(2006) SUMMARY = summary(DT) ## GNB: timeDate (>= 4022.109) summary returns an object from S3 class ## 'timeDate_summary' ## checkIdentical(SUMMARY, DT) # format() Function FORMAT = format(DT)[7] print(FORMAT) checkIdentical(FORMAT, "2006-07-01") # Return Value: return() } ################################################################################ timeDate/inst/unitTests/Makefile0000755000176200001440000000042114536563053016437 0ustar liggesusersPKG=timeDate TOP=../.. SUITE=doRUnit.R R=R all: inst test inst: # Install package -- but where ?? -- will that be in R_LIBS ? cd ${TOP}/..;\ ${R} CMD INSTALL ${PKG} test: # Run unit tests export RCMDCHECK=FALSE;\ cd ${TOP}/tests;\ ${R} --vanilla --slave < ${SUITE} timeDate/inst/unitTests/runit.DaylightSavingTime.R0000755000176200001440000003413314343077776022035 0ustar liggesusers # Rmetrics is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # It is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this library; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA # Copyrights (C) # for this R-port: # 1999 - 2007, Diethelm Wuertz, GPL # Diethelm Wuertz # info@rmetrics.org # www.rmetrics.org # for the code accessed (or partly included) from other R-ports: # see R's copyright and license files # for the code accessed (or partly included) from contributed R-ports # and other sources # see Rmetrics's copyright file ################################################################################ test.zurich = function() { # DST Rules for Zurich: head(Zurich()) tail(Zurich()) # Return Value: return() } if ((any(Sys.info()["user"] %in% c("yankee", "chalabi")) && !try(system("zdump")))) { test.DST <- function() { # works only if OS is well configured !!! finCenter <- listFinCenter() for (k in seq_along(finCenter)) { zdump <- try(system(paste("zdump ", finCenter[k], sep=" "), intern=TRUE)) zdump <- strsplit(zdump, " +" ) zdump <- unlist(zdump) dts <- paste(zdump[c(3, 4, 6)], collapse = " ") tms <- zdump[5] timeSys <- timeDate(paste(dts, tms), format = "%b %d %Y %H:%M:%S", zone = finCenter[k], FinCenter = finCenter[k]) timeTest <- Sys.timeDate(finCenter[k]) # round and compare cat("\nSimple DST test for", finCenter[k], "\n") cat("System\t\t", as.character(timeSys), "\n") cat("timeDate\t", as.character(timeTest), "\n") checkTrue(abs(as.numeric(timeSys - timeTest)) < 5) } } } # ------------------------------------------------------------------------------ test.dst1.print <- function() { from <- '2008-03-30' to <- '2008-03-31' # make sure that DST is the same as with POSIXct tseq1 <- timeSequence( from = from, to = to, by = "hour", zone = "GMT", FinCenter = "GMT") tseq1 tseq1Test <- c( "2008-03-30 00:00:00", "2008-03-30 01:00:00", "2008-03-30 02:00:00", "2008-03-30 03:00:00", "2008-03-30 04:00:00", "2008-03-30 05:00:00", "2008-03-30 06:00:00", "2008-03-30 07:00:00", "2008-03-30 08:00:00", "2008-03-30 09:00:00", "2008-03-30 10:00:00", "2008-03-30 11:00:00", "2008-03-30 12:00:00", "2008-03-30 13:00:00", "2008-03-30 14:00:00", "2008-03-30 15:00:00", "2008-03-30 16:00:00", "2008-03-30 17:00:00", "2008-03-30 18:00:00", "2008-03-30 19:00:00", "2008-03-30 20:00:00", "2008-03-30 21:00:00", "2008-03-30 22:00:00", "2008-03-30 23:00:00", "2008-03-31 00:00:00") checkIdentical(tseq1Test, format(tseq1)) # make sure that tseq1@Data is a continuous time checkIdentical(tseq1Test, format(tseq1@Data)) # make sure that DST is the same as with POSIXct tseq2 <- timeSequence( from = from, to = to, by = "hour", zone = "GMT", FinCenter = "Zurich") tseq2 ## make sure that tseq1@Data is a continuous time checkIdentical(tseq1Test, format(tseq2@Data)) # test taken from format(tseq2@Data, tz = "Europe/Zurich") tseq2Test <- c( ## GNB: there is no "2008-03-30 01:00:00" in FinCenter "Zurich". ## was: "2008-03-30 01:00:00", "2008-03-30 03:00:00", ## "2008-03-30 02:00:00", "2008-03-30 03:00:00", "2008-03-30 04:00:00", "2008-03-30 05:00:00", "2008-03-30 06:00:00", "2008-03-30 07:00:00", "2008-03-30 08:00:00", "2008-03-30 09:00:00", "2008-03-30 10:00:00", "2008-03-30 11:00:00", "2008-03-30 12:00:00", "2008-03-30 13:00:00", "2008-03-30 14:00:00", "2008-03-30 15:00:00", "2008-03-30 16:00:00", "2008-03-30 17:00:00", "2008-03-30 18:00:00", "2008-03-30 19:00:00", "2008-03-30 20:00:00", "2008-03-30 21:00:00", "2008-03-30 22:00:00", "2008-03-30 23:00:00", "2008-03-31 00:00:00", "2008-03-31 01:00:00", "2008-03-31 02:00:00") ## ## GNB: ## TODO: by = "hour" works with numerics, directly creates POSIXct object, ## and doesn't call timeDate (it creates the object with new("timeDate", ...) ## That needs a separate fix to move the nonexistent "2008-03-30 01:00:00" in ## Zurich. See also the remarks for 'tseq2Test' ## TODO: temporarilly, don't compare the first elements ## checkIdentical(tseq2Test, format(tseq2)) ## @Data slot should be the same for both object checkIdentical(tseq1@Data, tseq2@Data) # should be of length length(tseq2) - 1 tseq3 <- timeSequence( from = from, to = to, by = "hour", zone = "Zurich", FinCenter = "Zurich") tseq3 # test taken from format(tseq3@Data, tz = "Europe/Zurich") tseq3Test <- c( ## GNB: "2008-03-30 01:00:00" doesn't exist in "Zurich" ## was: "2008-03-30 00:00:00", "2008-03-30 01:00:00", "2008-03-30 00:00:00", "2008-03-30 02:00:00", "2008-03-30 03:00:00", "2008-03-30 04:00:00", "2008-03-30 05:00:00", "2008-03-30 06:00:00", "2008-03-30 07:00:00", "2008-03-30 08:00:00", "2008-03-30 09:00:00", "2008-03-30 10:00:00", "2008-03-30 11:00:00", "2008-03-30 12:00:00", "2008-03-30 13:00:00", "2008-03-30 14:00:00", "2008-03-30 15:00:00", "2008-03-30 16:00:00", "2008-03-30 17:00:00", "2008-03-30 18:00:00", "2008-03-30 19:00:00", "2008-03-30 20:00:00", "2008-03-30 21:00:00", "2008-03-30 22:00:00", "2008-03-30 23:00:00", "2008-03-31 00:00:00") checkIdentical(tseq3Test, format(tseq3)) ## more by GNB ## Sofia GMT+2 around_midnight_char <- c("1983-03-26 23:00:00", "1983-03-27 00:00:00", # change to DST; doesn't exist in Sofia DST "1983-03-27 01:00:00", "1983-03-27 02:00:00", "1983-03-27 03:00:00") Sofia_to_DST_test <- around_midnight_char Sofia_to_DST_test[2] <- "1983-03-27 01:00:00" # gap to gap + 1 hour Sofia_to_DST <- timeDate(around_midnight_char, zone = "Sofia", FinCenter = "Sofia") checkIdentical(format(Sofia_to_DST), Sofia_to_DST_test) ## London London_to_DST_test <- around_midnight_char London_to_DST_test[3] <- "1983-03-27 02:00:00" # gap to gap + 1 hour London_to_DST <- timeDate(around_midnight_char, zone = "London", FinCenter = "London") checkIdentical(format(London_to_DST), London_to_DST_test) ## Zurich Zurich_to_DST_test <- around_midnight_char Zurich_to_DST_test[3] <- "1983-03-27 02:00:00" # gap to gap + 1 hour Zurich_to_DST <- timeDate(around_midnight_char, zone = "Zurich", FinCenter = "Zurich") checkIdentical(format(Zurich_to_DST), Zurich_to_DST_test) ## more by GNB - TODO: consolidate and turn into proper tests ## London timeSequence(from = "2004-03-26 01:00:00", to = "2004-04-01 01:00:00", by = "DSTday", zone = "London", FinCenter = "London") timeSequence(from = "2004-03-26 01:00:00", to = "2004-04-01 01:00:00", by = "DSTday", zone = "London", FinCenter = "London")@Data timeDate("2004-03-26 01:00:00", zone = "London", FinCenter = "London") timeDate("2004-03-26 01:00:00", zone = "London", FinCenter = "London")@Data timeDate("2004-04-01 01:00:00", zone = "London", FinCenter = "London") timeDate("2004-04-01 01:00:00", zone = "London", FinCenter = "London")@Data timeDate(c("2004-03-28 00:00:00", "2004-03-28 01:00:00", "2004-03-28 02:00:00", "2004-03-28 03:00:00", "2004-03-28 04:00:00"), zone = "London", FinCenter = "London") timeDate(c("2004-03-28 00:00:00", "2004-03-28 01:00:00", "2004-03-28 02:00:00", "2004-03-28 03:00:00", "2004-03-28 04:00:00"), zone = "London", FinCenter = "London")@Data timeDate(c("2004-03-26 00:00:00", "2004-03-28 01:00:00", "2004-03-28 02:00:00", "2004-03-28 03:00:00", "2004-03-28 04:00:00"), zone = "London", FinCenter = "London") ## Zurich timeSequence(from = "2004-03-26 02:00:00", to = "2004-04-01 02:00:00", by = "DSTday", zone = "Zurich", FinCenter = "Zurich") timeSequence(from = "2004-03-26 02:00:00", to = "2004-04-01 02:00:00", by = "DSTday", zone = "Zurich", FinCenter = "Zurich")@Data timeDate(c("2004-03-26 00:00:00", "2004-03-28 01:00:00", "2004-03-28 02:00:00", "2004-03-28 03:00:00", "2004-03-28 04:00:00"), zone = "Zurich", FinCenter = "Zurich") ## London BDST during war timeDate(c("1941-05-04 00:00:00", "1941-05-04 01:00:00", "1941-05-04 02:00:00", "1941-05-04 03:00:00", "1941-05-04 04:00:00"), zone = "London", FinCenter = "London")@Data timeDate(c("1941-05-04 00:00:00", "1941-05-04 01:00:00", "1941-05-04 02:00:00", "1941-05-04 03:00:00", "1941-05-04 04:00:00"), zone = "London", FinCenter = "London") timeSequence(from = "1941-05-02 02:00:00", to = "1941-05-06 02:00:00", by = "DSTday", zone = "London", FinCenter = "London") } # ------------------------------------------------------------------------------ test.dst2.print <- function() { from = '2008-10-26' to = '2008-10-27' # make sure that DST is the same as with POSIXct tseq1 <- timeSequence( from = from, to = to, by = "hour", zone = "GMT", FinCenter = "GMT") tseq1 tseq1Test <- c( "2008-10-26 00:00:00", "2008-10-26 01:00:00", "2008-10-26 02:00:00", "2008-10-26 03:00:00", "2008-10-26 04:00:00", "2008-10-26 05:00:00", "2008-10-26 06:00:00", "2008-10-26 07:00:00", "2008-10-26 08:00:00", "2008-10-26 09:00:00", "2008-10-26 10:00:00", "2008-10-26 11:00:00", "2008-10-26 12:00:00", "2008-10-26 13:00:00", "2008-10-26 14:00:00", "2008-10-26 15:00:00", "2008-10-26 16:00:00", "2008-10-26 17:00:00", "2008-10-26 18:00:00", "2008-10-26 19:00:00", "2008-10-26 20:00:00", "2008-10-26 21:00:00", "2008-10-26 22:00:00", "2008-10-26 23:00:00", "2008-10-27 00:00:00") checkIdentical(tseq1Test, format(tseq1)) # make sure that tseq1@Data is a continuous time checkIdentical(tseq1Test, format(tseq1@Data)) # make sure that DST is the same as with POSIXct tseq2 <- timeSequence( from = from, to = to, by = "hour", zone = "GMT", FinCenter = "Zurich") tseq2 # make sure that tseq2@Data is a also continuous time checkIdentical(tseq1Test, format(tseq2@Data)) # test taken from format(tseq2@Data, tz = "Europe/Zurich") tseq2Test <- c( "2008-10-26 02:00:00", "2008-10-26 02:00:00", "2008-10-26 03:00:00", "2008-10-26 04:00:00", "2008-10-26 05:00:00", "2008-10-26 06:00:00", "2008-10-26 07:00:00", "2008-10-26 08:00:00", "2008-10-26 09:00:00", "2008-10-26 10:00:00", "2008-10-26 11:00:00", "2008-10-26 12:00:00", "2008-10-26 13:00:00", "2008-10-26 14:00:00", "2008-10-26 15:00:00", "2008-10-26 16:00:00", "2008-10-26 17:00:00", "2008-10-26 18:00:00", "2008-10-26 19:00:00", "2008-10-26 20:00:00", "2008-10-26 21:00:00", "2008-10-26 22:00:00", "2008-10-26 23:00:00", "2008-10-27 00:00:00", "2008-10-27 01:00:00") # make sure that DST is the same as with POSIXct checkIdentical(tseq2Test, format(tseq2)) # @Data slot should be the same for both object checkIdentical(tseq1@Data, tseq2@Data) # # should be of length length(tseq2) - 1 tseq3 <- timeSequence( from = from, to = to, by = "hour", zone = "Zurich", FinCenter = "Zurich") tseq3 # test taken from format(tseq3@Data, tz = "Europe/Zurich") tseq3Test <- c( "2008-10-26 00:00:00", "2008-10-26 01:00:00", "2008-10-26 02:00:00", "2008-10-26 02:00:00", "2008-10-26 03:00:00", "2008-10-26 04:00:00", "2008-10-26 05:00:00", "2008-10-26 06:00:00", "2008-10-26 07:00:00", "2008-10-26 08:00:00", "2008-10-26 09:00:00", "2008-10-26 10:00:00", "2008-10-26 11:00:00", "2008-10-26 12:00:00", "2008-10-26 13:00:00", "2008-10-26 14:00:00", "2008-10-26 15:00:00", "2008-10-26 16:00:00", "2008-10-26 17:00:00", "2008-10-26 18:00:00", "2008-10-26 19:00:00", "2008-10-26 20:00:00", "2008-10-26 21:00:00", "2008-10-26 22:00:00", "2008-10-26 23:00:00", "2008-10-27 00:00:00") checkIdentical(tseq3Test, format(tseq3)) } ################################################################################ timeDate/inst/unitTests/runit.isWeekday.R0000755000176200001440000000245114263246023020204 0ustar liggesusers # Rmetrics is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # Rmetrics is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this library; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA test.isWeekday <- function() { # check if there is any problem with timezone and days old <- setRmetricsOptions(myFinCenter = "Zurich") on.exit(setRmetricsOptions(old)) td <- timeCalendar(y = 2011, m = 1, d = 1:7) check <- c(FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE) names(check) <- format(td) checkIdentical(isWeekday(td), check) # change tzone setRmetricsOptions(myFinCenter = "GMT") td <- timeCalendar(y = 2011, m = 1, d = 1:7) check <- c(FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE) names(check) <- format(td) checkIdentical(isWeekday(td), check) } timeDate/inst/unitTests/runit.HolidayDates.R0000644000176200001440000000634214536563035020641 0ustar liggesusers # Rmetrics is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # Rmetrics is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this library; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA # Copyrights (C) # for this R-port: # 1999 - 2007, Diethelm Wuertz, GPL # Diethelm Wuertz # info@rmetrics.org # www.rmetrics.org # for the code accessed (or partly included) from other R-ports: # see R's copyright and license files # for the code accessed (or partly included) from contributed R-ports # and other sources # see Rmetrics's copyright file ################################################################################ # FUNCTION: DESCRIPTION: # ... Holiday Functions # FUNCTION: DESCRIPTION: # listHolidays Prints all public and ecclestical holidays # Easter Returns date of easter or related feasts ################################################################################ test.holiday = function() { # Holidays: holidays = as.vector(listHolidays()) for (holiday in holidays) { Holiday = match.fun(holiday) cat(as.character(Holiday(getRmetricsOptions("currentYear"))), holiday, "\n") } # GB Holidays: listHolidays("GB") ## GNB: check that holiday() accepts also a function or a list of functions checkIdentical(holiday(2022, "GoodFriday"), holiday(2022, GoodFriday)) checkIdentical(holiday(2022, c("GoodFriday", "Easter")), holiday(2022, c(GoodFriday, Easter))) ## GNB: test fix for issue #1288 ex_stephan <- c("2011-01-03", "2011-02-21", "2011-04-22", "2011-05-23", "2011-07-01", "2011-08-01", "2011-09-05","2011-10-10", "2011-12-26", "2011-12-27") tdStefan <- timeDate(ex_stephan, zone = "Toronto", FinCenter = "Toronto") checkIdentical(holidayTSX(2011), tdStefan) # Return Value: return() } # ------------------------------------------------------------------------------ test.easter = function() { # Easter: Easter() # Return Value: return() } # ------------------------------------------------------------------------------ test.listHolidays = function() { # Holiday List: listHolidays() # Return Value: return() } ## author: GNB test.holidaysLONDON <- function() { ## TODO: temporary while refactoring holidayLONDON, ## include small range(s) for submission. lon_all <- holidayLONDON(1834:2024) fn <- system.file("unitTests", "holidayLONDON_1834_to_2024_corrected.rds", package = "timeDate") identical(lon_all, readRDS(fn)) } ################################################################################ timeDate/inst/unitTests/runit.FinCenter.R0000755000176200001440000000463114263246023020136 0ustar liggesusers # Rmetrics is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # Rmetrics is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this library; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA # Copyrights (C) # for this R-port: # 1999 - 2007, Diethelm Wuertz, GPL # Diethelm Wuertz # info@rmetrics.org # www.rmetrics.org # for the code accessed (or partly included) from other R-ports: # see R's copyright and license files # for the code accessed (or partly included) from contributed R-ports # and other sources # see Rmetrics's copyright file ################################################################################ # FUNCTION: FINANCIAL CENTERS: # myFinCenter Sets my financial center # rulesFinCenter Returns DST rules for a financial center # listFinCenter Lists all supported financial centers ################################################################################ test.myFinCenter <- function() { # Default Financial Center: # "GMT" ### # Financial Center: ### myFinCenter = "Zurich" ### print(myFinCenter) ### current = "Zurich" ### print(current) ### checkIdentical(myFinCenter, current) # Return Value: return() } # ------------------------------------------------------------------------------ test.rulesFinCenter <- function() { # Default Financial Center: # "GMT" # DST Rules for a given Financial Center: rulesFinCenter("Zurich")[59:60, ] # Return Value: return() } # ------------------------------------------------------------------------------ test.listFinCenter <- function() { # Default Financial Center: # "GMT" # List of all Financial Centers: listFinCenter() listFinCenter("Europe") # Return Value: return() } ################################################################################ timeDate/inst/unitTests/runit.AAA.R0000755000176200001440000000021214263246023016632 0ustar liggesusers# keep track if TZ of system has been changed ! # test done in runit.ZZZ.R Sys.setenv(TZ = "Pacific/Auckland") testTZ <<- Sys.timezone() timeDate/inst/unitTests/runit.Subsets.R0000755000176200001440000001722714263246023017716 0ustar liggesusers # Rmetrics is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # Rmetrics is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this library; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA # Copyrights (C) # for this R-port: # 1999 - 2007, Diethelm Wuertz, GPL # Diethelm Wuertz # info@rmetrics.org # www.rmetrics.org # for the code accessed (or partly included) from other R-ports: # see R's copyright and license files # for the code accessed (or partly included) from contributed R-ports # and other sources # see Rmetrics's copyright file ################################################################################ # S3 METHODS: TEST AND REPRESENTATION OF OBJECTS: # isWeekday Tests if a date is a weekday or not # isWeekend Tests if a date falls on a weekend or not # isBizday Tests if a date is a business day or not # isHoliday Tests if a date is a non-business day or not # dayOfWeek Returns the day of the week to a 'timeDate' object # dayOfYear Returns the day of the year to a 'timeDate' object # S3 MEHOD: SUBSETTING TIMEDATE OBJECTS: # [.timeDate Extracts or replaces subsets from 'timeDate' objects # cut.timeDate Extracts a piece from a 'timeDate' object # start.timeDate Extracts the first entry of a 'timeDate' object # end.timeDate Extracts the last entry of a 'timeDate' object # blockStart Creates start dates for equally sized blocks # blockEnd Creates end dates for equally sized blocks ################################################################################ test.Easter <- function() { # Easter() Function: setRmetricsOptions(myFinCenter = "Zurich") target = timeSequence(from = Easter(2006)-7*24*3600, length.out = 8) print(target) charvec = c( "2006-04-09", "2006-04-10", "2006-04-11", "2006-04-12", "2006-04-13", "2006-04-14", "2006-04-15", "2006-04-16") current = timeDate(charvec) print(current) checkIdentical(target, current) # Return Value: return() } # ------------------------------------------------------------------------------ test.isWeekday <- function() { # Weekdays: setRmetricsOptions(myFinCenter = "GMT") tS = timeSequence(from = Easter(2006)-7*24*3600, length.out = 8) WD = isWeekday(tS) current = c(FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE) checkIdentical(as.logical(WD), current) # Return Value: return() } # ------------------------------------------------------------------------------ test.isWeekend <- function() { # Weekends: setRmetricsOptions(myFinCenter = "GMT") tS = timeSequence(from = Easter(2006)-7*24*3600, length.out = 8) WE = isWeekend(tS) current = !c(FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE) checkIdentical(as.logical(WE), current) # Return Value: return() } # ------------------------------------------------------------------------------ test.dayOfWeek <- function() { # Day of Week: setRmetricsOptions(myFinCenter = "GMT") tS = timeSequence(from = Easter(2006)-7*24*3600, length.out = 8) DOW = dayOfWeek(tS) current = c("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun") checkIdentical(as.character(DOW), current) # Return Value: return() } # ------------------------------------------------------------------------------ test.holidayNYSE <- function() { # NYSE Business Days - Dates: setRmetricsOptions(myFinCenter = "GMT") NYSE = holidayNYSE(2006) charvec = c( "2006-01-02", "2006-01-16", "2006-02-20", "2006-04-14", "2006-05-29", "2006-07-04", "2006-09-04", "2006-11-23", "2006-12-25") checkIdentical(format(NYSE), charvec) # NYSE Business Days - Day-of-Week: DOW = dayOfWeek(NYSE) current = c("Mon", "Mon", "Mon", "Fri", "Mon", "Tue", "Mon", "Thu", "Mon") checkIdentical(as.character(DOW), current) # Holidays: TD = Easter(2006) checkIdentical(format(TD), "2006-04-16") # Return Value: return() } # ------------------------------------------------------------------------------ test.isBizday <- function() { # Bizdays: setRmetricsOptions(myFinCenter = "GMT") tS = timeSequence(from = Easter(2006)-7*24*3600, length.out = 8) target = isBizday(tS, holidayNYSE(2006)) current = c(FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE) names(current) = names(target) checkIdentical(target, current) # Return Value: return() } # ------------------------------------------------------------------------------ test.isHoliday<- function() { # Holidays: setRmetricsOptions(myFinCenter = "GMT") tS = timeSequence(from = Easter(2006)-7*24*3600, length.out = 8) target = isHoliday(tS, holidayNYSE(2006)) current = !c(FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE) names(current) = names(target) checkIdentical(target, current) # Return Value: return() } # ------------------------------------------------------------------------------ test.subset <- function() { # Holidays: setRmetricsOptions(myFinCenter = "GMT") tS = timeSequence(from = Easter(2006)-7*24*3600, length.out = 8) # [ - Subsetting: tS[c(1, 6:8)] tS[isBizday(tS)] tS[isHoliday(tS)] tS["2006"] tS["2006::"] tS["2006-04"] tS["2006-04::"] tS["2006-04-10::"] sub <- tS[c("2006", "2006::", "2006-04", "2006-04::", "2006-04-10::")] checkTrue(length(sub) == 39) # Return Value: return() } # ------------------------------------------------------------------------------ test.cut <- function() { # Holidays: setRmetricsOptions(myFinCenter = "GMT") tS = timeSequence(from = Easter(2006)-7*24*3600, length.out = 8) # cut - GF = GoodFriday(2006) print(GF) EM = EasterMonday(2006) print(EM) target = cut(tS, from = GF, to = EM) print(target) charvec = paste("2006-04-1", 4:6, sep = "") current = timeDate(charvec) print(current) checkIdentical( target, current) # Return Value: return() } # ------------------------------------------------------------------------------ test.start <- function() { # start - setRmetricsOptions(myFinCenter = "GMT") tS = timeCalendar(getRmetricsOptions("currentYear")) target = start(tS) print(target) currentDate = paste(getRmetricsOptions("currentYear"), "-01-01", sep ="") checkIdentical( format(target), current = format(timeDate(currentDate))) # end - tS = timeCalendar(getRmetricsOptions("currentYear")) target = end(tS) print(target) currentDate = paste(getRmetricsOptions("currentYear"), "-12-01", sep ="") checkIdentical( format(target), current = format(timeDate(currentDate))) # Return Value: return() } # ------------------------------------------------------------------------------ test.blockStart <- function() { # blockStart - NA # Return Value: return() } ################################################################################