UNPKG

holidays-nordic

Version:

A small library for checking nordic public holidays

1 lines 24.8 kB
{"version":3,"file":"holidays-nordic.mjs","sources":["../src/holidays-nordic.js"],"sourcesContent":["const lang = {\n sv: {\n 'New Year\\'s Day': 'Nyårsdagen',\n 'Epiphany': 'Trettondedag Jul',\n 'Good Friday': 'Långfredagen',\n 'Easter Sunday': 'påskdagen',\n 'Easter Monday': 'Annandag påsk',\n 'International Workers\\' Day': 'Första Maj',\n 'Ascension Day': 'Kristi himmelsfärds dag',\n 'Pentecost': 'pingstdagen',\n 'National Day of Sweden': 'Sveriges nationaldag',\n 'Midsummer\\'s Day': 'Midsommardagen',\n 'All Saints\\' Day': 'Alla helgons dag',\n 'Christmas Eve': 'julafton',\n 'Christmas Day': 'Juldagen',\n 'Second Day of Christmas': 'Annandag Jul',\n 'New Year\\'s Eve': 'nyårsafton'\n },\n da: {\n 'New Year\\'s Day': 'Nytårsdag',\n 'Maundy Thursday': 'Skærtorsdag',\n 'Good Friday': 'Langfredag',\n 'Easter Sunday': 'Påskedag',\n 'Easter Monday': 'Anden påskedag',\n 'General Prayer Day': 'Store bededag',\n 'Ascension Day': 'Kristi Himmelfartsdag',\n 'Pentecost': 'Pinsedag',\n 'Christmas Day': 'Juledag',\n 'Second Day of Christmas': 'Anden juledag',\n 'New Year\\'s Eve': 'Nytårsaften'\n },\n no: {\n 'New Year\\'s Day': 'Første nyttårsdag',\n 'Maundy Thursday': 'Skjærtorsdag',\n 'Good Friday': 'Langfredag',\n 'Easter Sunday': 'Første påskedag',\n 'Easter Monday': 'Andre påskedag',\n 'International Workers\\' Day': 'Første mai',\n 'Constitution Day': 'Syttende mai or Grunnlovsdagen',\n 'Ascension Day': 'Kristi himmelfartsdag',\n 'Pentecost': 'Første pinsedag',\n 'Whit Monday': 'Andre pinsedag',\n 'Christmas Day': 'Første juledag',\n 'Second Day of Christmas': 'Anden juledag',\n 'New Year\\'s Eve': 'Nyttårsaftan'\n }\n}\n\nconst countryLanguage = {\n 'se': 'sv',\n 'dk': 'da',\n 'no': 'no'\n}\n\n//List of easters in past and future. It's complicated to calculate Easters\nconst easters = {\n '1900': ['15', '04'],\n '1901': ['07', '04'],\n '1902': ['30', '03'],\n '1903': ['12', '04'],\n '1904': ['03', '04'],\n '1905': ['23', '04'],\n '1906': ['15', '04'],\n '1907': ['31', '03'],\n '1908': ['19', '04'],\n '1909': ['11', '04'],\n '1910': ['27', '03'],\n '1911': ['16', '04'],\n '1912': ['07', '04'],\n '1913': ['23', '03'],\n '1914': ['12', '04'],\n '1915': ['04', '04'],\n '1916': ['23', '04'],\n '1917': ['08', '04'],\n '1918': ['31', '03'],\n '1919': ['20', '04'],\n '1920': ['04', '04'],\n '1921': ['27', '03'],\n '1922': ['16', '04'],\n '1923': ['01', '04'],\n '1924': ['20', '04'],\n '1925': ['12', '04'],\n '1926': ['04', '04'],\n '1927': ['17', '04'],\n '1928': ['08', '04'],\n '1929': ['31', '03'],\n '1930': ['20', '04'],\n '1931': ['05', '04'],\n '1932': ['27', '03'],\n '1933': ['16', '04'],\n '1934': ['01', '04'],\n '1935': ['21', '04'],\n '1936': ['12', '04'],\n '1937': ['28', '03'],\n '1938': ['17', '04'],\n '1939': ['09', '04'],\n '1940': ['24', '03'],\n '1941': ['13', '04'],\n '1942': ['05', '04'],\n '1943': ['25', '04'],\n '1944': ['09', '04'],\n '1945': ['01', '04'],\n '1946': ['21', '04'],\n '1947': ['06', '04'],\n '1948': ['28', '03'],\n '1949': ['17', '04'],\n '1950': ['09', '04'],\n '1951': ['25', '03'],\n '1952': ['13', '04'],\n '1953': ['05', '04'],\n '1954': ['18', '04'],\n '1955': ['10', '04'],\n '1956': ['01', '04'],\n '1957': ['21', '04'],\n '1958': ['06', '04'],\n '1959': ['29', '03'],\n '1960': ['17', '04'],\n '1961': ['02', '04'],\n '1962': ['22', '04'],\n '1963': ['14', '04'],\n '1964': ['29', '03'],\n '1965': ['18', '04'],\n '1966': ['10', '04'],\n '1967': ['26', '03'],\n '1968': ['14', '04'],\n '1969': ['06', '04'],\n '1970': ['29', '03'],\n '1971': ['11', '04'],\n '1972': ['02', '04'],\n '1973': ['22', '04'],\n '1974': ['14', '04'],\n '1975': ['30', '03'],\n '1976': ['18', '04'],\n '1977': ['10', '04'],\n '1978': ['26', '03'],\n '1979': ['15', '04'],\n '1980': ['06', '04'],\n '1981': ['19', '04'],\n '1982': ['11', '04'],\n '1983': ['03', '04'],\n '1984': ['22', '04'],\n '1985': ['07', '04'],\n '1986': ['30', '03'],\n '1987': ['19', '04'],\n '1988': ['03', '04'],\n '1989': ['26', '03'],\n '1990': ['15', '04'],\n '1991': ['31', '03'],\n '1992': ['19', '04'],\n '1993': ['11', '04'],\n '1994': ['03', '04'],\n '1995': ['16', '04'],\n '1996': ['07', '04'],\n '1997': ['30', '03'],\n '1998': ['12', '04'],\n '1999': ['04', '04'],\n '2000': ['23', '04'],\n '2001': ['15', '04'],\n '2002': ['31', '03'],\n '2003': ['20', '04'],\n '2004': ['11', '04'],\n '2005': ['27', '03'],\n '2006': ['16', '04'],\n '2007': ['08', '04'],\n '2008': ['23', '03'],\n '2009': ['12', '04'],\n '2010': ['04', '04'],\n '2011': ['24', '04'],\n '2012': ['08', '04'],\n '2013': ['31', '03'],\n '2014': ['20', '04'],\n '2015': ['05', '04'],\n '2016': ['27', '03'],\n '2017': ['16', '04'],\n '2018': ['01', '04'],\n '2019': ['21', '04'],\n '2020': ['12', '04'],\n '2021': ['04', '04'],\n '2022': ['17', '04'],\n '2023': ['09', '04'],\n '2024': ['31', '03'],\n '2025': ['20', '04'],\n '2026': ['05', '04'],\n '2027': ['28', '03'],\n '2028': ['16', '04'],\n '2029': ['01', '04'],\n '2030': ['21', '04'],\n '2031': ['13', '04'],\n '2032': ['28', '03'],\n '2033': ['17', '04'],\n '2034': ['09', '04'],\n '2035': ['25', '03'],\n '2036': ['13', '04'],\n '2037': ['05', '04'],\n '2038': ['25', '04'],\n '2039': ['10', '04'],\n '2040': ['01', '04'],\n '2041': ['21', '04'],\n '2042': ['06', '04'],\n '2043': ['29', '03'],\n '2044': ['17', '04'],\n '2045': ['09', '04'],\n '2046': ['25', '03'],\n '2047': ['14', '04'],\n '2048': ['05', '04'],\n '2049': ['18', '04'],\n '2050': ['10', '04'],\n '2051': ['02', '04'],\n '2052': ['21', '04'],\n '2053': ['06', '04'],\n '2054': ['29', '03'],\n '2055': ['18', '04'],\n '2056': ['02', '04'],\n '2057': ['22', '04'],\n '2058': ['14', '04'],\n '2059': ['30', '03'],\n '2060': ['18', '04'],\n '2061': ['10', '04'],\n '2062': ['26', '03'],\n '2063': ['15', '04'],\n '2064': ['06', '04'],\n '2065': ['29', '03'],\n '2066': ['11', '04'],\n '2067': ['03', '04'],\n '2068': ['22', '04'],\n '2069': ['14', '04'],\n '2070': ['30', '03'],\n '2071': ['19', '04'],\n '2072': ['10', '04'],\n '2073': ['26', '03'],\n '2074': ['15', '04'],\n '2075': ['07', '04'],\n '2076': ['19', '04'],\n '2077': ['11', '04'],\n '2078': ['03', '04'],\n '2079': ['23', '04'],\n '2080': ['07', '04'],\n '2081': ['30', '03'],\n '2082': ['19', '04'],\n '2083': ['04', '04'],\n '2084': ['26', '03'],\n '2085': ['15', '04'],\n '2086': ['31', '03'],\n '2087': ['20', '04'],\n '2088': ['11', '04'],\n '2089': ['03', '04'],\n '2090': ['16', '04'],\n '2091': ['08', '04'],\n '2092': ['30', '03'],\n '2093': ['12', '04'],\n '2094': ['04', '04'],\n '2095': ['24', '04'],\n '2096': ['15', '04'],\n '2097': ['31', '03'],\n '2098': ['20', '04'],\n '2099': ['12', '04']\n}\n\nconst fixedHolidays = {\n general: {\n 'New Year\\'s Day': ['01', '01'],\n 'Christmas Eve': ['24', '12'],\n 'Christmas Day': ['25', '12'],\n 'Second Day of Christmas': ['26', '12'],\n 'New Year\\'s Eve': ['31', '12'],\n },\n se: {\n 'International Workers\\' Day': ['01', '05'],\n 'Epiphany': ['06', '01'],\n 'National Day of Sweden': ['06', '06'],\n },\n dk: {\n },\n no: {\n 'International Workers\\' Day': ['01', '05'],\n 'Constitution Day': ['17', '05'],\n }\n}\n\nconst moveableHolidays = {\n general: {\n 'Good Friday' : year => relativeToEaster_weekDay(year, 5, -1),\n 'Easter Sunday' : year => getEaster(year),\n 'Easter Monday' : year => relativeToEaster_weekDay(year, 1),\n 'Ascension Day' : year => relativeToEaster(year, 39),\n 'Pentecost' : year => relativeToEaster(year, 49),\n 'All Saints\\' Day': year => weekdayRelativeTo(year, 6, ['31', '10'])\n },\n se: {\n 'Midsummer\\'s Day': year => weekdayRelativeTo(year, 6, ['20', '06']),\n },\n dk: {\n 'Maundy Thursday' : year => relativeToEaster_weekDay(year, 4, -1),\n 'General Prayer Day' : year => relativeToEaster_weekDay(year, 5, 1, 4),\n },\n no: {\n 'Maundy Thursday' : year => relativeToEaster_weekDay(year, 4, -1),\n 'Whit Monday' : year => relativeToEaster(year, 50),\n }\n}\n\n\n\n\n\n\n\n// Util function\n// Get day month year in an array of strings\nconst getDayMonthYear = (date) => {\n let str = date.toISOString()\n const year = str.slice(0,4)\n const month = str.slice(5,7)\n const day = str.slice(8,10)\n\n return [day, month, year]\n}\n//Convert a raw formatted date to a Date Object\nconst getDateFromRaw = (year, raw) => {\n return new Date(`${year}-${raw[1]}-${raw[0]}`)\n}\n// Combine the general holidays and country specific holidays from a given dict\nconst combineHolidays = (dict, country) => {\n return Object.assign({}, dict['general'], dict[country])\n}\n\n\n//Get the Date object of certain days past a date\nconst relativeToDay = (year, fromRaw, days) => {\n let res = getDateFromRaw(year, fromRaw)\n\n res.setDate(res.getDate() + days)\n return res\n}\n//A specific weekday after 'from', on a given year.\n// weekday: 0-6 representing the weekday.\n// from: an array [day, month] of the reference day. i.e. ['25', '07'] = July the 25th\n// dire: direction, 1 or -1.\n// nth: nth x-day after 'from'. e.g. \"The 4th Friday after Easter\"\nconst weekdayRelativeTo = (year, weekday, fromRaw, dire = 1, nth = 0) => {\n let res = getDateFromRaw(year, fromRaw)\n const fromDay = res.getDay()\n const datesToGo = (weekday - fromDay + 7 * dire ) % 7 + nth * 7\n\n res.setDate(res.getDate() + datesToGo)\n return res\n}\n\n\n// Get the easter of a given year.\n// If returnRaw: use day, month pair: ['16', '04']\n// Otherwise: Return Date object\nconst getEaster = (year, returnRaw = false) => {\n let easterRaw = easters[year]\n\n if(returnRaw){\n return easterRaw\n }\n return getDateFromRaw(year, easterRaw)\n}\n//certain days after easter\nconst relativeToEaster = (year, days) => {\n let easterRaw = getEaster(year, true)\n return relativeToDay(year, easterRaw, days)\n}\n//certain weekday before/after easter\nconst relativeToEaster_weekDay = (year, day, dire = 1, nth = 0) => {\n let easterRaw = getEaster(year, true)\n return weekdayRelativeTo(year, day, easterRaw, dire, nth)\n}\n\n\n\n//Check if a given day, month matches the given dict of fixed holidays\n// fh: fixed holiday dict.\n// day, month: strings representing day and month. i.e. '05', '12'\nconst checkFixedHoliday = (fh, day, month) => {\n for(let i in fh) {\n if(!fh.hasOwnProperty(i)) {\n continue\n }\n\n let md = fh[i]\n if(md[0] === day && md[1] === month) {\n return i\n }\n }\n\n return false\n}\n//Check if a given day, month matches the given dict of movable holidays\n// mh: movable holiday dict.\n// day, month: strings representing day and month. i.e. '05', '12'\nconst checkMovableHoliday = (mh, day, month, year) => {\n for(let i in mh){\n if(!mh.hasOwnProperty(i)) {\n continue\n }\n\n let res = getDayMonthYear(mh[i](year))\n if(res[1] === month && res[0] === day) {\n return i\n }\n }\n\n return false\n}\n\n\n//Check if a given Date object is a holiday of the given country.\n//Return the english name of the holiday if match, false if no match\nconst isHolidayByCountry = (dt, country) => {\n const dmy = getDayMonthYear(dt)\n const year = dmy[2]\n const month = dmy[1]\n const date = dmy[0]\n\n let res\n\n let fh = combineHolidays(fixedHolidays, country)\n res = checkFixedHoliday(fh, date, month)\n if(res) return res\n\n let mh = combineHolidays(moveableHolidays, country)\n res = checkMovableHoliday(mh, date, month, year)\n if(res) return res\n\n return false\n}\n\n//Check if a given Date object is a holiday of the given country.\n//Return the name in the country's language of the holiday if match, false if no match\nconst isHolidayByCountryTranslated = (dt, country) => {\n const holiday = isHolidayByCountry(dt, country)\n const res = lang[countryLanguage[country]][holiday]\n if(!res) {\n return holiday\n } else {\n return res\n }\n}\n\nexport default isHolidayByCountryTranslated"],"names":["lang","countryLanguage","easters","fixedHolidays","moveableHolidays","relativeToEaster_weekDay","year","getEaster","relativeToEaster","weekdayRelativeTo","getDayMonthYear","date","str","toISOString","slice","month","day","getDateFromRaw","raw","Date","combineHolidays","dict","country","Object","assign","relativeToDay","fromRaw","days","res","setDate","getDate","weekday","dire","nth","fromDay","getDay","datesToGo","returnRaw","easterRaw","checkFixedHoliday","fh","i","hasOwnProperty","md","checkMovableHoliday","mh","isHolidayByCountry","dt","dmy","isHolidayByCountryTranslated","holiday"],"mappings":"AAAA,IAAMA,OAAO;QACL;2BACmB,YADnB;oBAEY,kBAFZ;uBAGe,cAHf;yBAIiB,WAJjB;yBAKiB,eALjB;uCAM+B,YAN/B;yBAOiB,yBAPjB;qBAQa,aARb;kCAS0B,sBAT1B;4BAUoB,gBAVpB;4BAWoB,kBAXpB;yBAYiB,UAZjB;yBAaiB,UAbjB;mCAc2B,cAd3B;2BAemB;KAhBd;QAkBL;2BACmB,WADnB;2BAEmB,aAFnB;uBAGe,YAHf;yBAIiB,UAJjB;yBAKiB,gBALjB;8BAMsB,eANtB;yBAOiB,uBAPjB;qBAQa,UARb;yBASiB,SATjB;mCAU2B,eAV3B;2BAWmB;KA7Bd;QA+BL;2BACmB,mBADnB;2BAEmB,cAFnB;uBAGe,YAHf;yBAIiB,iBAJjB;yBAKiB,gBALjB;uCAM+B,YAN/B;4BAOoB,gCAPpB;yBAQiB,uBARjB;qBASa,iBATb;uBAUe,gBAVf;yBAWiB,gBAXjB;mCAY2B,eAZ3B;2BAamB;;CA5C3B;;AAgDA,IAAMC,kBAAkB;UACd,IADc;UAEd,IAFc;UAGd;;;CAHV,CAOA,IAAMC,UAAU;YACJ,CAAC,IAAD,EAAO,IAAP,CADI;YAEJ,CAAC,IAAD,EAAO,IAAP,CAFI;YAGJ,CAAC,IAAD,EAAO,IAAP,CAHI;YAIJ,CAAC,IAAD,EAAO,IAAP,CAJI;YAKJ,CAAC,IAAD,EAAO,IAAP,CALI;YAMJ,CAAC,IAAD,EAAO,IAAP,CANI;YAOJ,CAAC,IAAD,EAAO,IAAP,CAPI;YAQJ,CAAC,IAAD,EAAO,IAAP,CARI;YASJ,CAAC,IAAD,EAAO,IAAP,CATI;YAUJ,CAAC,IAAD,EAAO,IAAP,CAVI;YAWJ,CAAC,IAAD,EAAO,IAAP,CAXI;YAYJ,CAAC,IAAD,EAAO,IAAP,CAZI;YAaJ,CAAC,IAAD,EAAO,IAAP,CAbI;YAcJ,CAAC,IAAD,EAAO,IAAP,CAdI;YAeJ,CAAC,IAAD,EAAO,IAAP,CAfI;YAgBJ,CAAC,IAAD,EAAO,IAAP,CAhBI;YAiBJ,CAAC,IAAD,EAAO,IAAP,CAjBI;YAkBJ,CAAC,IAAD,EAAO,IAAP,CAlBI;YAmBJ,CAAC,IAAD,EAAO,IAAP,CAnBI;YAoBJ,CAAC,IAAD,EAAO,IAAP,CApBI;YAqBJ,CAAC,IAAD,EAAO,IAAP,CArBI;YAsBJ,CAAC,IAAD,EAAO,IAAP,CAtBI;YAuBJ,CAAC,IAAD,EAAO,IAAP,CAvBI;YAwBJ,CAAC,IAAD,EAAO,IAAP,CAxBI;YAyBJ,CAAC,IAAD,EAAO,IAAP,CAzBI;YA0BJ,CAAC,IAAD,EAAO,IAAP,CA1BI;YA2BJ,CAAC,IAAD,EAAO,IAAP,CA3BI;YA4BJ,CAAC,IAAD,EAAO,IAAP,CA5BI;YA6BJ,CAAC,IAAD,EAAO,IAAP,CA7BI;YA8BJ,CAAC,IAAD,EAAO,IAAP,CA9BI;YA+BJ,CAAC,IAAD,EAAO,IAAP,CA/BI;YAgCJ,CAAC,IAAD,EAAO,IAAP,CAhCI;YAiCJ,CAAC,IAAD,EAAO,IAAP,CAjCI;YAkCJ,CAAC,IAAD,EAAO,IAAP,CAlCI;YAmCJ,CAAC,IAAD,EAAO,IAAP,CAnCI;YAoCJ,CAAC,IAAD,EAAO,IAAP,CApCI;YAqCJ,CAAC,IAAD,EAAO,IAAP,CArCI;YAsCJ,CAAC,IAAD,EAAO,IAAP,CAtCI;YAuCJ,CAAC,IAAD,EAAO,IAAP,CAvCI;YAwCJ,CAAC,IAAD,EAAO,IAAP,CAxCI;YAyCJ,CAAC,IAAD,EAAO,IAAP,CAzCI;YA0CJ,CAAC,IAAD,EAAO,IAAP,CA1CI;YA2CJ,CAAC,IAAD,EAAO,IAAP,CA3CI;YA4CJ,CAAC,IAAD,EAAO,IAAP,CA5CI;YA6CJ,CAAC,IAAD,EAAO,IAAP,CA7CI;YA8CJ,CAAC,IAAD,EAAO,IAAP,CA9CI;YA+CJ,CAAC,IAAD,EAAO,IAAP,CA/CI;YAgDJ,CAAC,IAAD,EAAO,IAAP,CAhDI;YAiDJ,CAAC,IAAD,EAAO,IAAP,CAjDI;YAkDJ,CAAC,IAAD,EAAO,IAAP,CAlDI;YAmDJ,CAAC,IAAD,EAAO,IAAP,CAnDI;YAoDJ,CAAC,IAAD,EAAO,IAAP,CApDI;YAqDJ,CAAC,IAAD,EAAO,IAAP,CArDI;YAsDJ,CAAC,IAAD,EAAO,IAAP,CAtDI;YAuDJ,CAAC,IAAD,EAAO,IAAP,CAvDI;YAwDJ,CAAC,IAAD,EAAO,IAAP,CAxDI;YAyDJ,CAAC,IAAD,EAAO,IAAP,CAzDI;YA0DJ,CAAC,IAAD,EAAO,IAAP,CA1DI;YA2DJ,CAAC,IAAD,EAAO,IAAP,CA3DI;YA4DJ,CAAC,IAAD,EAAO,IAAP,CA5DI;YA6DJ,CAAC,IAAD,EAAO,IAAP,CA7DI;YA8DJ,CAAC,IAAD,EAAO,IAAP,CA9DI;YA+DJ,CAAC,IAAD,EAAO,IAAP,CA/DI;YAgEJ,CAAC,IAAD,EAAO,IAAP,CAhEI;YAiEJ,CAAC,IAAD,EAAO,IAAP,CAjEI;YAkEJ,CAAC,IAAD,EAAO,IAAP,CAlEI;YAmEJ,CAAC,IAAD,EAAO,IAAP,CAnEI;YAoEJ,CAAC,IAAD,EAAO,IAAP,CApEI;YAqEJ,CAAC,IAAD,EAAO,IAAP,CArEI;YAsEJ,CAAC,IAAD,EAAO,IAAP,CAtEI;YAuEJ,CAAC,IAAD,EAAO,IAAP,CAvEI;YAwEJ,CAAC,IAAD,EAAO,IAAP,CAxEI;YAyEJ,CAAC,IAAD,EAAO,IAAP,CAzEI;YA0EJ,CAAC,IAAD,EAAO,IAAP,CA1EI;YA2EJ,CAAC,IAAD,EAAO,IAAP,CA3EI;YA4EJ,CAAC,IAAD,EAAO,IAAP,CA5EI;YA6EJ,CAAC,IAAD,EAAO,IAAP,CA7EI;YA8EJ,CAAC,IAAD,EAAO,IAAP,CA9EI;YA+EJ,CAAC,IAAD,EAAO,IAAP,CA/EI;YAgFJ,CAAC,IAAD,EAAO,IAAP,CAhFI;YAiFJ,CAAC,IAAD,EAAO,IAAP,CAjFI;YAkFJ,CAAC,IAAD,EAAO,IAAP,CAlFI;YAmFJ,CAAC,IAAD,EAAO,IAAP,CAnFI;YAoFJ,CAAC,IAAD,EAAO,IAAP,CApFI;YAqFJ,CAAC,IAAD,EAAO,IAAP,CArFI;YAsFJ,CAAC,IAAD,EAAO,IAAP,CAtFI;YAuFJ,CAAC,IAAD,EAAO,IAAP,CAvFI;YAwFJ,CAAC,IAAD,EAAO,IAAP,CAxFI;YAyFJ,CAAC,IAAD,EAAO,IAAP,CAzFI;YA0FJ,CAAC,IAAD,EAAO,IAAP,CA1FI;YA2FJ,CAAC,IAAD,EAAO,IAAP,CA3FI;YA4FJ,CAAC,IAAD,EAAO,IAAP,CA5FI;YA6FJ,CAAC,IAAD,EAAO,IAAP,CA7FI;YA8FJ,CAAC,IAAD,EAAO,IAAP,CA9FI;YA+FJ,CAAC,IAAD,EAAO,IAAP,CA/FI;YAgGJ,CAAC,IAAD,EAAO,IAAP,CAhGI;YAiGJ,CAAC,IAAD,EAAO,IAAP,CAjGI;YAkGJ,CAAC,IAAD,EAAO,IAAP,CAlGI;YAmGJ,CAAC,IAAD,EAAO,IAAP,CAnGI;YAoGJ,CAAC,IAAD,EAAO,IAAP,CApGI;YAqGJ,CAAC,IAAD,EAAO,IAAP,CArGI;YAsGJ,CAAC,IAAD,EAAO,IAAP,CAtGI;YAuGJ,CAAC,IAAD,EAAO,IAAP,CAvGI;YAwGJ,CAAC,IAAD,EAAO,IAAP,CAxGI;YAyGJ,CAAC,IAAD,EAAO,IAAP,CAzGI;YA0GJ,CAAC,IAAD,EAAO,IAAP,CA1GI;YA2GJ,CAAC,IAAD,EAAO,IAAP,CA3GI;YA4GJ,CAAC,IAAD,EAAO,IAAP,CA5GI;YA6GJ,CAAC,IAAD,EAAO,IAAP,CA7GI;YA8GJ,CAAC,IAAD,EAAO,IAAP,CA9GI;YA+GJ,CAAC,IAAD,EAAO,IAAP,CA/GI;YAgHJ,CAAC,IAAD,EAAO,IAAP,CAhHI;YAiHJ,CAAC,IAAD,EAAO,IAAP,CAjHI;YAkHJ,CAAC,IAAD,EAAO,IAAP,CAlHI;YAmHJ,CAAC,IAAD,EAAO,IAAP,CAnHI;YAoHJ,CAAC,IAAD,EAAO,IAAP,CApHI;YAqHJ,CAAC,IAAD,EAAO,IAAP,CArHI;YAsHJ,CAAC,IAAD,EAAO,IAAP,CAtHI;YAuHJ,CAAC,IAAD,EAAO,IAAP,CAvHI;YAwHJ,CAAC,IAAD,EAAO,IAAP,CAxHI;YAyHJ,CAAC,IAAD,EAAO,IAAP,CAzHI;YA0HJ,CAAC,IAAD,EAAO,IAAP,CA1HI;YA2HJ,CAAC,IAAD,EAAO,IAAP,CA3HI;YA4HJ,CAAC,IAAD,EAAO,IAAP,CA5HI;YA6HJ,CAAC,IAAD,EAAO,IAAP,CA7HI;YA8HJ,CAAC,IAAD,EAAO,IAAP,CA9HI;YA+HJ,CAAC,IAAD,EAAO,IAAP,CA/HI;YAgIJ,CAAC,IAAD,EAAO,IAAP,CAhII;YAiIJ,CAAC,IAAD,EAAO,IAAP,CAjII;YAkIJ,CAAC,IAAD,EAAO,IAAP,CAlII;YAmIJ,CAAC,IAAD,EAAO,IAAP,CAnII;YAoIJ,CAAC,IAAD,EAAO,IAAP,CApII;YAqIJ,CAAC,IAAD,EAAO,IAAP,CArII;YAsIJ,CAAC,IAAD,EAAO,IAAP,CAtII;YAuIJ,CAAC,IAAD,EAAO,IAAP,CAvII;YAwIJ,CAAC,IAAD,EAAO,IAAP,CAxII;YAyIJ,CAAC,IAAD,EAAO,IAAP,CAzII;YA0IJ,CAAC,IAAD,EAAO,IAAP,CA1II;YA2IJ,CAAC,IAAD,EAAO,IAAP,CA3II;YA4IJ,CAAC,IAAD,EAAO,IAAP,CA5II;YA6IJ,CAAC,IAAD,EAAO,IAAP,CA7II;YA8IJ,CAAC,IAAD,EAAO,IAAP,CA9II;YA+IJ,CAAC,IAAD,EAAO,IAAP,CA/II;YAgJJ,CAAC,IAAD,EAAO,IAAP,CAhJI;YAiJJ,CAAC,IAAD,EAAO,IAAP,CAjJI;YAkJJ,CAAC,IAAD,EAAO,IAAP,CAlJI;YAmJJ,CAAC,IAAD,EAAO,IAAP,CAnJI;YAoJJ,CAAC,IAAD,EAAO,IAAP,CApJI;YAqJJ,CAAC,IAAD,EAAO,IAAP,CArJI;YAsJJ,CAAC,IAAD,EAAO,IAAP,CAtJI;YAuJJ,CAAC,IAAD,EAAO,IAAP,CAvJI;YAwJJ,CAAC,IAAD,EAAO,IAAP,CAxJI;YAyJJ,CAAC,IAAD,EAAO,IAAP,CAzJI;YA0JJ,CAAC,IAAD,EAAO,IAAP,CA1JI;YA2JJ,CAAC,IAAD,EAAO,IAAP,CA3JI;YA4JJ,CAAC,IAAD,EAAO,IAAP,CA5JI;YA6JJ,CAAC,IAAD,EAAO,IAAP,CA7JI;YA8JJ,CAAC,IAAD,EAAO,IAAP,CA9JI;YA+JJ,CAAC,IAAD,EAAO,IAAP,CA/JI;YAgKJ,CAAC,IAAD,EAAO,IAAP,CAhKI;YAiKJ,CAAC,IAAD,EAAO,IAAP,CAjKI;YAkKJ,CAAC,IAAD,EAAO,IAAP,CAlKI;YAmKJ,CAAC,IAAD,EAAO,IAAP,CAnKI;YAoKJ,CAAC,IAAD,EAAO,IAAP,CApKI;YAqKJ,CAAC,IAAD,EAAO,IAAP,CArKI;YAsKJ,CAAC,IAAD,EAAO,IAAP,CAtKI;YAuKJ,CAAC,IAAD,EAAO,IAAP,CAvKI;YAwKJ,CAAC,IAAD,EAAO,IAAP,CAxKI;YAyKJ,CAAC,IAAD,EAAO,IAAP,CAzKI;YA0KJ,CAAC,IAAD,EAAO,IAAP,CA1KI;YA2KJ,CAAC,IAAD,EAAO,IAAP,CA3KI;YA4KJ,CAAC,IAAD,EAAO,IAAP,CA5KI;YA6KJ,CAAC,IAAD,EAAO,IAAP,CA7KI;YA8KJ,CAAC,IAAD,EAAO,IAAP,CA9KI;YA+KJ,CAAC,IAAD,EAAO,IAAP,CA/KI;YAgLJ,CAAC,IAAD,EAAO,IAAP,CAhLI;YAiLJ,CAAC,IAAD,EAAO,IAAP,CAjLI;YAkLJ,CAAC,IAAD,EAAO,IAAP,CAlLI;YAmLJ,CAAC,IAAD,EAAO,IAAP,CAnLI;YAoLJ,CAAC,IAAD,EAAO,IAAP,CApLI;YAqLJ,CAAC,IAAD,EAAO,IAAP,CArLI;YAsLJ,CAAC,IAAD,EAAO,IAAP,CAtLI;YAuLJ,CAAC,IAAD,EAAO,IAAP,CAvLI;YAwLJ,CAAC,IAAD,EAAO,IAAP,CAxLI;YAyLJ,CAAC,IAAD,EAAO,IAAP,CAzLI;YA0LJ,CAAC,IAAD,EAAO,IAAP,CA1LI;YA2LJ,CAAC,IAAD,EAAO,IAAP,CA3LI;YA4LJ,CAAC,IAAD,EAAO,IAAP,CA5LI;YA6LJ,CAAC,IAAD,EAAO,IAAP,CA7LI;YA8LJ,CAAC,IAAD,EAAO,IAAP,CA9LI;YA+LJ,CAAC,IAAD,EAAO,IAAP,CA/LI;YAgMJ,CAAC,IAAD,EAAO,IAAP,CAhMI;YAiMJ,CAAC,IAAD,EAAO,IAAP,CAjMI;YAkMJ,CAAC,IAAD,EAAO,IAAP,CAlMI;YAmMJ,CAAC,IAAD,EAAO,IAAP,CAnMI;YAoMJ,CAAC,IAAD,EAAO,IAAP,CApMI;YAqMJ,CAAC,IAAD,EAAO,IAAP,CArMI;YAsMJ,CAAC,IAAD,EAAO,IAAP,CAtMI;YAuMJ,CAAC,IAAD,EAAO,IAAP,CAvMI;YAwMJ,CAAC,IAAD,EAAO,IAAP;CAxMZ;;AA2MA,IAAMC,gBAAgB;aACT;2BACc,CAAC,IAAD,EAAO,IAAP,CADd;yBAEY,CAAC,IAAD,EAAO,IAAP,CAFZ;yBAGY,CAAC,IAAD,EAAO,IAAP,CAHZ;mCAIsB,CAAC,IAAD,EAAO,IAAP,CAJtB;2BAKc,CAAC,IAAD,EAAO,IAAP;KANL;QAQd;uCAC+B,CAAC,IAAD,EAAO,IAAP,CAD/B;oBAEY,CAAC,IAAD,EAAO,IAAP,CAFZ;kCAG0B,CAAC,IAAD,EAAO,IAAP;KAXZ;QAad,EAbc;QAed;uCAC+B,CAAC,IAAD,EAAO,IAAP,CAD/B;4BAEoB,CAAC,IAAD,EAAO,IAAP;;CAjB5B;;AAqBA,IAAMC,mBAAmB;aACZ;uBACW;mBAAQC,yBAAyBC,IAAzB,EAA+B,CAA/B,EAAkC,CAAC,CAAnC,CAAR;SADX;yBAEa;mBAAQC,UAAUD,IAAV,CAAR;SAFb;yBAGa;mBAAQD,yBAAyBC,IAAzB,EAA+B,CAA/B,CAAR;SAHb;yBAIa;mBAAQE,iBAAiBF,IAAjB,EAAuB,EAAvB,CAAR;SAJb;qBAKS;mBAAQE,iBAAiBF,IAAjB,EAAuB,EAAvB,CAAR;SALT;4BAMe;mBAAQG,kBAAkBH,IAAlB,EAAwB,CAAxB,EAA2B,CAAC,IAAD,EAAO,IAAP,CAA3B,CAAR;;KAPH;QASjB;4BACoB;mBAAQG,kBAAkBH,IAAlB,EAAwB,CAAxB,EAA2B,CAAC,IAAD,EAAO,IAAP,CAA3B,CAAR;;KAVH;QAYjB;2BACoB;mBAAQD,yBAAyBC,IAAzB,EAA+B,CAA/B,EAAkC,CAAC,CAAnC,CAAR;SADpB;8BAEuB;mBAAQD,yBAAyBC,IAAzB,EAA+B,CAA/B,EAAkC,CAAlC,EAAqC,CAArC,CAAR;;KAdN;QAgBjB;2BACoB;mBAAQD,yBAAyBC,IAAzB,EAA+B,CAA/B,EAAkC,CAAC,CAAnC,CAAR;SADpB;uBAEgB;mBAAQE,iBAAiBF,IAAjB,EAAuB,EAAvB,CAAR;;;;;;CAlBxB,CA8BA,IAAMI,kBAAkB,SAAlBA,eAAkB,CAACC,IAAD,EAAU;QAC1BC,MAAMD,KAAKE,WAAL,EAAV;QACMP,OAAOM,IAAIE,KAAJ,CAAU,CAAV,EAAY,CAAZ,CAAb;QACMC,QAAQH,IAAIE,KAAJ,CAAU,CAAV,EAAY,CAAZ,CAAd;QACME,MAAMJ,IAAIE,KAAJ,CAAU,CAAV,EAAY,EAAZ,CAAZ;;WAEO,CAACE,GAAD,EAAMD,KAAN,EAAaT,IAAb,CAAP;CANJ;;AASA,IAAMW,iBAAiB,SAAjBA,cAAiB,CAACX,IAAD,EAAOY,GAAP,EAAe;WAC3B,IAAIC,IAAJ,CAAYb,IAAZ,SAAoBY,IAAI,CAAJ,CAApB,SAA8BA,IAAI,CAAJ,CAA9B,CAAP;CADJ;;AAIA,IAAME,kBAAkB,SAAlBA,eAAkB,CAACC,IAAD,EAAOC,OAAP,EAAmB;WAChCC,OAAOC,MAAP,CAAc,EAAd,EAAkBH,KAAK,SAAL,CAAlB,EAAmCA,KAAKC,OAAL,CAAnC,CAAP;CADJ;;;AAMA,IAAMG,gBAAgB,SAAhBA,aAAgB,CAACnB,IAAD,EAAOoB,OAAP,EAAgBC,IAAhB,EAAyB;QACvCC,MAAMX,eAAeX,IAAf,EAAqBoB,OAArB,CAAV;;QAEIG,OAAJ,CAAYD,IAAIE,OAAJ,KAAgBH,IAA5B;WACOC,GAAP;CAJJ;;;;;;AAWA,IAAMnB,oBAAoB,SAApBA,iBAAoB,CAACH,IAAD,EAAOyB,OAAP,EAAgBL,OAAhB,EAA+C;QAAtBM,IAAsB,uEAAf,CAAe;QAAZC,GAAY,uEAAN,CAAM;;QACjEL,MAAMX,eAAeX,IAAf,EAAqBoB,OAArB,CAAV;QACMQ,UAAUN,IAAIO,MAAJ,EAAhB;QACMC,YAAY,CAACL,UAAUG,OAAV,GAAoB,IAAIF,IAAzB,IAAkC,CAAlC,GAAsCC,MAAM,CAA9D;;QAEIJ,OAAJ,CAAYD,IAAIE,OAAJ,KAAgBM,SAA5B;WACOR,GAAP;CANJ;;;;;AAaA,IAAMrB,YAAY,SAAZA,SAAY,CAACD,IAAD,EAA6B;QAAtB+B,SAAsB,uEAAV,KAAU;;QACvCC,YAAYpC,QAAQI,IAAR,CAAhB;;QAEG+B,SAAH,EAAa;eACFC,SAAP;;WAEGrB,eAAeX,IAAf,EAAqBgC,SAArB,CAAP;CANJ;;AASA,IAAM9B,mBAAmB,SAAnBA,gBAAmB,CAACF,IAAD,EAAOqB,IAAP,EAAgB;QACjCW,YAAY/B,UAAUD,IAAV,EAAgB,IAAhB,CAAhB;WACOmB,cAAcnB,IAAd,EAAoBgC,SAApB,EAA+BX,IAA/B,CAAP;CAFJ;;AAKA,IAAMtB,2BAA2B,SAA3BA,wBAA2B,CAACC,IAAD,EAAOU,GAAP,EAAkC;QAAtBgB,IAAsB,uEAAf,CAAe;QAAZC,GAAY,uEAAN,CAAM;;QAC3DK,YAAY/B,UAAUD,IAAV,EAAgB,IAAhB,CAAhB;WACOG,kBAAkBH,IAAlB,EAAwBU,GAAxB,EAA6BsB,SAA7B,EAAwCN,IAAxC,EAA8CC,GAA9C,CAAP;CAFJ;;;;;AAUA,IAAMM,oBAAoB,SAApBA,iBAAoB,CAACC,EAAD,EAAKxB,GAAL,EAAUD,KAAV,EAAoB;SACtC,IAAI0B,CAAR,IAAaD,EAAb,EAAiB;YACV,CAACA,GAAGE,cAAH,CAAkBD,CAAlB,CAAJ,EAA0B;;;;YAItBE,KAAKH,GAAGC,CAAH,CAAT;YACGE,GAAG,CAAH,MAAU3B,GAAV,IAAiB2B,GAAG,CAAH,MAAU5B,KAA9B,EAAqC;mBAC1B0B,CAAP;;;;WAID,KAAP;CAZJ;;;;AAiBA,IAAMG,sBAAsB,SAAtBA,mBAAsB,CAACC,EAAD,EAAK7B,GAAL,EAAUD,KAAV,EAAiBT,IAAjB,EAA0B;SAC9C,IAAImC,CAAR,IAAaI,EAAb,EAAgB;YACT,CAACA,GAAGH,cAAH,CAAkBD,CAAlB,CAAJ,EAA0B;;;;YAItBb,MAAMlB,gBAAgBmC,GAAGJ,CAAH,EAAMnC,IAAN,CAAhB,CAAV;YACGsB,IAAI,CAAJ,MAAWb,KAAX,IAAoBa,IAAI,CAAJ,MAAWZ,GAAlC,EAAuC;mBAC5ByB,CAAP;;;;WAID,KAAP;CAZJ;;;;AAkBA,IAAMK,qBAAqB,SAArBA,kBAAqB,CAACC,EAAD,EAAKzB,OAAL,EAAiB;QAClC0B,MAAMtC,gBAAgBqC,EAAhB,CAAZ;QACMzC,OAAO0C,IAAI,CAAJ,CAAb;QACMjC,QAAQiC,IAAI,CAAJ,CAAd;QACMrC,OAAOqC,IAAI,CAAJ,CAAb;;QAEIpB,YAAJ;;QAEIY,KAAKpB,gBAAgBjB,aAAhB,EAA+BmB,OAA/B,CAAT;UACMiB,kBAAkBC,EAAlB,EAAsB7B,IAAtB,EAA4BI,KAA5B,CAAN;QACGa,GAAH,EAAQ,OAAOA,GAAP;;QAEJiB,KAAKzB,gBAAgBhB,gBAAhB,EAAkCkB,OAAlC,CAAT;UACMsB,oBAAoBC,EAApB,EAAwBlC,IAAxB,EAA8BI,KAA9B,EAAqCT,IAArC,CAAN;QACGsB,GAAH,EAAQ,OAAOA,GAAP;;WAED,KAAP;CAhBJ;;;;AAqBA,IAAMqB,+BAA+B,SAA/BA,4BAA+B,CAACF,EAAD,EAAKzB,OAAL,EAAiB;QAC5C4B,UAAUJ,mBAAmBC,EAAnB,EAAuBzB,OAAvB,CAAhB;QACMM,MAAM5B,KAAKC,gBAAgBqB,OAAhB,CAAL,EAA+B4B,OAA/B,CAAZ;QACG,CAACtB,GAAJ,EAAS;eACEsB,OAAP;KADJ,MAEO;eACItB,GAAP;;CANR;;;;"}