{"version":3,"file":"static/components/4091-4cdb32961aa4f2b0.mjs?cv=7","sources":["webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/../node_modules/ibankit/lib/esm/country.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/../node_modules/ibankit/lib/esm/structurePart.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/../node_modules/ibankit/lib/esm/exceptions.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/../node_modules/ibankit/lib/esm/randInt.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/../node_modules/ibankit/lib/esm/bbanStructure.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/../node_modules/ibankit/lib/esm/ibanUtil.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/../node_modules/ibankit/lib/esm/ibanBuilder.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/../node_modules/ibankit/lib/esm/iban.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/../node_modules/validate.js/validate.js"],"sourcesContent":["export var CountryCode;\n(function (CountryCode) {\n    CountryCode[\"AD\"] = \"AD\";\n    CountryCode[\"AE\"] = \"AE\";\n    CountryCode[\"AF\"] = \"AF\";\n    CountryCode[\"AG\"] = \"AG\";\n    CountryCode[\"AI\"] = \"AI\";\n    CountryCode[\"AL\"] = \"AL\";\n    CountryCode[\"AM\"] = \"AM\";\n    CountryCode[\"AO\"] = \"AO\";\n    CountryCode[\"AQ\"] = \"AQ\";\n    CountryCode[\"AR\"] = \"AR\";\n    CountryCode[\"AS\"] = \"AS\";\n    CountryCode[\"AT\"] = \"AT\";\n    CountryCode[\"AU\"] = \"AU\";\n    CountryCode[\"AW\"] = \"AW\";\n    CountryCode[\"AX\"] = \"AX\";\n    CountryCode[\"AZ\"] = \"AZ\";\n    CountryCode[\"BA\"] = \"BA\";\n    CountryCode[\"BB\"] = \"BB\";\n    CountryCode[\"BD\"] = \"BD\";\n    CountryCode[\"BE\"] = \"BE\";\n    CountryCode[\"BF\"] = \"BF\";\n    CountryCode[\"BG\"] = \"BG\";\n    CountryCode[\"BH\"] = \"BH\";\n    CountryCode[\"BI\"] = \"BI\";\n    CountryCode[\"BJ\"] = \"BJ\";\n    CountryCode[\"BL\"] = \"BL\";\n    CountryCode[\"BM\"] = \"BM\";\n    CountryCode[\"BN\"] = \"BN\";\n    CountryCode[\"BO\"] = \"BO\";\n    CountryCode[\"BQ\"] = \"BQ\";\n    CountryCode[\"BR\"] = \"BR\";\n    CountryCode[\"BS\"] = \"BS\";\n    CountryCode[\"BT\"] = \"BT\";\n    CountryCode[\"BV\"] = \"BV\";\n    CountryCode[\"BW\"] = \"BW\";\n    CountryCode[\"BY\"] = \"BY\";\n    CountryCode[\"BZ\"] = \"BZ\";\n    CountryCode[\"CA\"] = \"CA\";\n    CountryCode[\"CC\"] = \"CC\";\n    CountryCode[\"CD\"] = \"CD\";\n    CountryCode[\"CF\"] = \"CF\";\n    CountryCode[\"CG\"] = \"CG\";\n    CountryCode[\"CH\"] = \"CH\";\n    CountryCode[\"CI\"] = \"CI\";\n    CountryCode[\"CK\"] = \"CK\";\n    CountryCode[\"CL\"] = \"CL\";\n    CountryCode[\"CM\"] = \"CM\";\n    CountryCode[\"CN\"] = \"CN\";\n    CountryCode[\"CO\"] = \"CO\";\n    CountryCode[\"CR\"] = \"CR\";\n    CountryCode[\"CU\"] = \"CU\";\n    CountryCode[\"CV\"] = \"CV\";\n    CountryCode[\"CW\"] = \"CW\";\n    CountryCode[\"CX\"] = \"CX\";\n    CountryCode[\"CY\"] = \"CY\";\n    CountryCode[\"CZ\"] = \"CZ\";\n    CountryCode[\"DE\"] = \"DE\";\n    CountryCode[\"DJ\"] = \"DJ\";\n    CountryCode[\"DK\"] = \"DK\";\n    CountryCode[\"DM\"] = \"DM\";\n    CountryCode[\"DO\"] = \"DO\";\n    CountryCode[\"DZ\"] = \"DZ\";\n    CountryCode[\"EC\"] = \"EC\";\n    CountryCode[\"EE\"] = \"EE\";\n    CountryCode[\"EG\"] = \"EG\";\n    CountryCode[\"EH\"] = \"EH\";\n    CountryCode[\"ER\"] = \"ER\";\n    CountryCode[\"ES\"] = \"ES\";\n    CountryCode[\"ET\"] = \"ET\";\n    CountryCode[\"FI\"] = \"FI\";\n    CountryCode[\"FJ\"] = \"FJ\";\n    CountryCode[\"FK\"] = \"FK\";\n    CountryCode[\"FM\"] = \"FM\";\n    CountryCode[\"FO\"] = \"FO\";\n    CountryCode[\"FR\"] = \"FR\";\n    CountryCode[\"GA\"] = \"GA\";\n    CountryCode[\"GB\"] = \"GB\";\n    CountryCode[\"GD\"] = \"GD\";\n    CountryCode[\"GE\"] = \"GE\";\n    CountryCode[\"GF\"] = \"GF\";\n    CountryCode[\"GG\"] = \"GG\";\n    CountryCode[\"GH\"] = \"GH\";\n    CountryCode[\"GI\"] = \"GI\";\n    CountryCode[\"GL\"] = \"GL\";\n    CountryCode[\"GM\"] = \"GM\";\n    CountryCode[\"GN\"] = \"GN\";\n    CountryCode[\"GP\"] = \"GP\";\n    CountryCode[\"GQ\"] = \"GQ\";\n    CountryCode[\"GR\"] = \"GR\";\n    CountryCode[\"GS\"] = \"GS\";\n    CountryCode[\"GT\"] = \"GT\";\n    CountryCode[\"GU\"] = \"GU\";\n    CountryCode[\"GW\"] = \"GW\";\n    CountryCode[\"GY\"] = \"GY\";\n    CountryCode[\"HK\"] = \"HK\";\n    CountryCode[\"HM\"] = \"HM\";\n    CountryCode[\"HN\"] = \"HN\";\n    CountryCode[\"HR\"] = \"HR\";\n    CountryCode[\"HT\"] = \"HT\";\n    CountryCode[\"HU\"] = \"HU\";\n    CountryCode[\"ID\"] = \"ID\";\n    CountryCode[\"IE\"] = \"IE\";\n    CountryCode[\"IL\"] = \"IL\";\n    CountryCode[\"IM\"] = \"IM\";\n    CountryCode[\"IN\"] = \"IN\";\n    CountryCode[\"IO\"] = \"IO\";\n    CountryCode[\"IQ\"] = \"IQ\";\n    CountryCode[\"IR\"] = \"IR\";\n    CountryCode[\"IS\"] = \"IS\";\n    CountryCode[\"IT\"] = \"IT\";\n    CountryCode[\"JE\"] = \"JE\";\n    CountryCode[\"JM\"] = \"JM\";\n    CountryCode[\"JO\"] = \"JO\";\n    CountryCode[\"JP\"] = \"JP\";\n    CountryCode[\"KE\"] = \"KE\";\n    CountryCode[\"KG\"] = \"KG\";\n    CountryCode[\"KH\"] = \"KH\";\n    CountryCode[\"KI\"] = \"KI\";\n    CountryCode[\"KM\"] = \"KM\";\n    CountryCode[\"KN\"] = \"KN\";\n    CountryCode[\"KP\"] = \"KP\";\n    CountryCode[\"KR\"] = \"KR\";\n    CountryCode[\"KW\"] = \"KW\";\n    CountryCode[\"KY\"] = \"KY\";\n    CountryCode[\"KZ\"] = \"KZ\";\n    CountryCode[\"LA\"] = \"LA\";\n    CountryCode[\"LB\"] = \"LB\";\n    CountryCode[\"LC\"] = \"LC\";\n    CountryCode[\"LI\"] = \"LI\";\n    CountryCode[\"LK\"] = \"LK\";\n    CountryCode[\"LR\"] = \"LR\";\n    CountryCode[\"LS\"] = \"LS\";\n    CountryCode[\"LT\"] = \"LT\";\n    CountryCode[\"LU\"] = \"LU\";\n    CountryCode[\"LV\"] = \"LV\";\n    CountryCode[\"LY\"] = \"LY\";\n    CountryCode[\"MA\"] = \"MA\";\n    CountryCode[\"MC\"] = \"MC\";\n    CountryCode[\"MD\"] = \"MD\";\n    CountryCode[\"ME\"] = \"ME\";\n    CountryCode[\"MF\"] = \"MF\";\n    CountryCode[\"MG\"] = \"MG\";\n    CountryCode[\"MH\"] = \"MH\";\n    CountryCode[\"MK\"] = \"MK\";\n    CountryCode[\"ML\"] = \"ML\";\n    CountryCode[\"MM\"] = \"MM\";\n    CountryCode[\"MN\"] = \"MN\";\n    CountryCode[\"MO\"] = \"MO\";\n    CountryCode[\"MP\"] = \"MP\";\n    CountryCode[\"MQ\"] = \"MQ\";\n    CountryCode[\"MR\"] = \"MR\";\n    CountryCode[\"MS\"] = \"MS\";\n    CountryCode[\"MT\"] = \"MT\";\n    CountryCode[\"MU\"] = \"MU\";\n    CountryCode[\"MV\"] = \"MV\";\n    CountryCode[\"MW\"] = \"MW\";\n    CountryCode[\"MX\"] = \"MX\";\n    CountryCode[\"MY\"] = \"MY\";\n    CountryCode[\"MZ\"] = \"MZ\";\n    CountryCode[\"NA\"] = \"NA\";\n    CountryCode[\"NC\"] = \"NC\";\n    CountryCode[\"NE\"] = \"NE\";\n    CountryCode[\"NF\"] = \"NF\";\n    CountryCode[\"NG\"] = \"NG\";\n    CountryCode[\"NI\"] = \"NI\";\n    CountryCode[\"NL\"] = \"NL\";\n    CountryCode[\"NO\"] = \"NO\";\n    CountryCode[\"NP\"] = \"NP\";\n    CountryCode[\"NR\"] = \"NR\";\n    CountryCode[\"NU\"] = \"NU\";\n    CountryCode[\"NZ\"] = \"NZ\";\n    CountryCode[\"OM\"] = \"OM\";\n    CountryCode[\"PA\"] = \"PA\";\n    CountryCode[\"PE\"] = \"PE\";\n    CountryCode[\"PF\"] = \"PF\";\n    CountryCode[\"PG\"] = \"PG\";\n    CountryCode[\"PH\"] = \"PH\";\n    CountryCode[\"PK\"] = \"PK\";\n    CountryCode[\"PL\"] = \"PL\";\n    CountryCode[\"PM\"] = \"PM\";\n    CountryCode[\"PN\"] = \"PN\";\n    CountryCode[\"PR\"] = \"PR\";\n    CountryCode[\"PS\"] = \"PS\";\n    CountryCode[\"PT\"] = \"PT\";\n    CountryCode[\"PW\"] = \"PW\";\n    CountryCode[\"PY\"] = \"PY\";\n    CountryCode[\"QA\"] = \"QA\";\n    CountryCode[\"RE\"] = \"RE\";\n    CountryCode[\"RO\"] = \"RO\";\n    CountryCode[\"RS\"] = \"RS\";\n    CountryCode[\"RU\"] = \"RU\";\n    CountryCode[\"RW\"] = \"RW\";\n    CountryCode[\"SA\"] = \"SA\";\n    CountryCode[\"SB\"] = \"SB\";\n    CountryCode[\"SC\"] = \"SC\";\n    CountryCode[\"SD\"] = \"SD\";\n    CountryCode[\"SE\"] = \"SE\";\n    CountryCode[\"SG\"] = \"SG\";\n    CountryCode[\"SH\"] = \"SH\";\n    CountryCode[\"SI\"] = \"SI\";\n    CountryCode[\"SJ\"] = \"SJ\";\n    CountryCode[\"SK\"] = \"SK\";\n    CountryCode[\"SL\"] = \"SL\";\n    CountryCode[\"SM\"] = \"SM\";\n    CountryCode[\"SN\"] = \"SN\";\n    CountryCode[\"SO\"] = \"SO\";\n    CountryCode[\"SR\"] = \"SR\";\n    CountryCode[\"SS\"] = \"SS\";\n    CountryCode[\"ST\"] = \"ST\";\n    CountryCode[\"SV\"] = \"SV\";\n    CountryCode[\"SX\"] = \"SX\";\n    CountryCode[\"SY\"] = \"SY\";\n    CountryCode[\"SZ\"] = \"SZ\";\n    CountryCode[\"TC\"] = \"TC\";\n    CountryCode[\"TD\"] = \"TD\";\n    CountryCode[\"TF\"] = \"TF\";\n    CountryCode[\"TG\"] = \"TG\";\n    CountryCode[\"TH\"] = \"TH\";\n    CountryCode[\"TJ\"] = \"TJ\";\n    CountryCode[\"TK\"] = \"TK\";\n    CountryCode[\"TL\"] = \"TL\";\n    CountryCode[\"TM\"] = \"TM\";\n    CountryCode[\"TN\"] = \"TN\";\n    CountryCode[\"TO\"] = \"TO\";\n    CountryCode[\"TR\"] = \"TR\";\n    CountryCode[\"TT\"] = \"TT\";\n    CountryCode[\"TV\"] = \"TV\";\n    CountryCode[\"TW\"] = \"TW\";\n    CountryCode[\"TZ\"] = \"TZ\";\n    CountryCode[\"UA\"] = \"UA\";\n    CountryCode[\"UG\"] = \"UG\";\n    CountryCode[\"UM\"] = \"UM\";\n    CountryCode[\"US\"] = \"US\";\n    CountryCode[\"UY\"] = \"UY\";\n    CountryCode[\"UZ\"] = \"UZ\";\n    CountryCode[\"VA\"] = \"VA\";\n    CountryCode[\"VC\"] = \"VC\";\n    CountryCode[\"VE\"] = \"VE\";\n    CountryCode[\"VG\"] = \"VG\";\n    CountryCode[\"VI\"] = \"VI\";\n    CountryCode[\"VN\"] = \"VN\";\n    CountryCode[\"VU\"] = \"VU\";\n    CountryCode[\"WF\"] = \"WF\";\n    CountryCode[\"WS\"] = \"WS\";\n    CountryCode[\"XK\"] = \"XK\";\n    CountryCode[\"YE\"] = \"YE\";\n    CountryCode[\"YT\"] = \"YT\";\n    CountryCode[\"ZA\"] = \"ZA\";\n    CountryCode[\"ZM\"] = \"ZM\";\n    CountryCode[\"ZW\"] = \"ZW\";\n})(CountryCode || (CountryCode = {}));\nconst countryData = {\n    [CountryCode.AD]: [\"Andorra\", \"AND\"],\n    [CountryCode.AE]: [\"United Arab Emirates\", \"ARE\"],\n    [CountryCode.AF]: [\"Afghanistan\", \"AFG\"],\n    [CountryCode.AG]: [\"Antigua and Barbuda\", \"ATG\"],\n    [CountryCode.AI]: [\"Anguilla\", \"AIA\"],\n    [CountryCode.AL]: [\"Albania\", \"ALB\"],\n    [CountryCode.AM]: [\"Armenia\", \"ARM\"],\n    [CountryCode.AO]: [\"Angola\", \"AGO\"],\n    [CountryCode.AQ]: [\"Antarctica\", \"ATA\"],\n    [CountryCode.AR]: [\"Argentina\", \"ARG\"],\n    [CountryCode.AS]: [\"American Samoa\", \"ASM\"],\n    [CountryCode.AT]: [\"Austria\", \"AUT\"],\n    [CountryCode.AU]: [\"Australia\", \"AUS\"],\n    [CountryCode.AW]: [\"Aruba\", \"ABW\"],\n    [CountryCode.AX]: [\"\\u212Bland Islands\", \"ALA\"],\n    [CountryCode.AZ]: [\"Azerbaijan\", \"AZE\"],\n    [CountryCode.BA]: [\"Bosnia and Herzegovina\", \"BIH\"],\n    [CountryCode.BB]: [\"Barbados\", \"BRB\"],\n    [CountryCode.BD]: [\"Bangladesh\", \"BGD\"],\n    [CountryCode.BE]: [\"Belgium\", \"BEL\"],\n    [CountryCode.BF]: [\"Burkina Faso\", \"BFA\"],\n    [CountryCode.BG]: [\"Bulgaria\", \"BGR\"],\n    [CountryCode.BH]: [\"Bahrain\", \"BHR\"],\n    [CountryCode.BI]: [\"Burundi\", \"BDI\"],\n    [CountryCode.BJ]: [\"Benin\", \"BEN\"],\n    [CountryCode.BL]: [\"Saint Barth\\u00E9lemy\", \"BLM\"],\n    [CountryCode.BM]: [\"Bermuda\", \"BMU\"],\n    [CountryCode.BN]: [\"Brunei Darussalam\", \"BRN\"],\n    [CountryCode.BO]: [\"Plurinational State of Bolivia\", \"BOL\"],\n    [CountryCode.BQ]: [\"Bonaire, Sint Eustatius and Saba\", \"BES\"],\n    [CountryCode.BR]: [\"Brazil\", \"BRA\"],\n    [CountryCode.BS]: [\"Bahamas\", \"BHS\"],\n    [CountryCode.BT]: [\"Bhutan\", \"BTN\"],\n    [CountryCode.BV]: [\"Bouvet Island\", \"BVT\"],\n    [CountryCode.BW]: [\"Botswana\", \"BWA\"],\n    [CountryCode.BY]: [\"Belarus\", \"BLR\"],\n    [CountryCode.BZ]: [\"Belize\", \"BLZ\"],\n    [CountryCode.CA]: [\"Canada\", \"CAN\"],\n    [CountryCode.CC]: [\"Cocos Islands\", \"CCK\"],\n    [CountryCode.CD]: [\"The Democratic Republic of the Congo\", \"COD\"],\n    [CountryCode.CF]: [\"Central African Republic\", \"CAF\"],\n    [CountryCode.CG]: [\"Congo\", \"COG\"],\n    [CountryCode.CH]: [\"Switzerland\", \"CHE\"],\n    [CountryCode.CI]: [\"C\\u00F4te d'Ivoire\", \"CIV\"],\n    [CountryCode.CK]: [\"Cook Islands\", \"COK\"],\n    [CountryCode.CL]: [\"Chile\", \"CHL\"],\n    [CountryCode.CM]: [\"Cameroon\", \"CMR\"],\n    [CountryCode.CN]: [\"China\", \"CHN\"],\n    [CountryCode.CO]: [\"Colombia\", \"COL\"],\n    [CountryCode.CR]: [\"Costa Rica\", \"CRI\"],\n    [CountryCode.CU]: [\"Cuba\", \"CUB\"],\n    [CountryCode.CV]: [\"Cape Verde\", \"CPV\"],\n    [CountryCode.CW]: [\"Cura\\u00E7ao\", \"CUW\"],\n    [CountryCode.CX]: [\"Christmas Island\", \"CXR\"],\n    [CountryCode.CY]: [\"Cyprus\", \"CYP\"],\n    [CountryCode.CZ]: [\"Czech Republic\", \"CZE\"],\n    [CountryCode.DE]: [\"Germany\", \"DEU\"],\n    [CountryCode.DJ]: [\"Djibouti\", \"DJI\"],\n    [CountryCode.DK]: [\"Denmark\", \"DNK\"],\n    [CountryCode.DM]: [\"Dominica\", \"DMA\"],\n    [CountryCode.DO]: [\"Dominican Republic\", \"DOM\"],\n    [CountryCode.DZ]: [\"Algeria\", \"DZA\"],\n    [CountryCode.EC]: [\"Ecuador\", \"ECU\"],\n    [CountryCode.EE]: [\"Estonia\", \"EST\"],\n    [CountryCode.EG]: [\"Egypt\", \"EGY\"],\n    [CountryCode.EH]: [\"Western Sahara\", \"ESH\"],\n    [CountryCode.ER]: [\"Eritrea\", \"ERI\"],\n    [CountryCode.ES]: [\"Spain\", \"ESP\"],\n    [CountryCode.ET]: [\"Ethiopia\", \"ETH\"],\n    [CountryCode.FI]: [\"Finland\", \"FIN\"],\n    [CountryCode.FJ]: [\"Fiji\", \"FJI\"],\n    [CountryCode.FK]: [\"Falkland Islands\", \"FLK\"],\n    [CountryCode.FM]: [\"Federated States of Micronesia\", \"FSM\"],\n    [CountryCode.FO]: [\"Faroe Islands\", \"FRO\"],\n    [CountryCode.FR]: [\"France\", \"FRA\"],\n    [CountryCode.GA]: [\"Gabon\", \"GAB\"],\n    [CountryCode.GB]: [\"United Kingdom\", \"GBR\"],\n    [CountryCode.GD]: [\"Grenada\", \"GRD\"],\n    [CountryCode.GE]: [\"Georgia\", \"GEO\"],\n    [CountryCode.GF]: [\"French Guiana\", \"GUF\"],\n    [CountryCode.GG]: [\"Guemsey\", \"GGY\"],\n    [CountryCode.GH]: [\"Ghana\", \"GHA\"],\n    [CountryCode.GI]: [\"Gibraltar\", \"GIB\"],\n    [CountryCode.GL]: [\"Greenland\", \"GRL\"],\n    [CountryCode.GM]: [\"Gambia\", \"GMB\"],\n    [CountryCode.GN]: [\"Guinea\", \"GIN\"],\n    [CountryCode.GP]: [\"Guadeloupe\", \"GLP\"],\n    [CountryCode.GQ]: [\"Equatorial Guinea\", \"GNQ\"],\n    [CountryCode.GR]: [\"Greece\", \"GRC\"],\n    [CountryCode.GS]: [\"South Georgia and the South Sandwich Islands\", \"SGS\"],\n    [CountryCode.GT]: [\"Guatemala\", \"GTM\"],\n    [CountryCode.GU]: [\"Guam\", \"GUM\"],\n    [CountryCode.GW]: [\"Guinea-Bissau\", \"GNB\"],\n    [CountryCode.GY]: [\"Guyana\", \"GUY\"],\n    [CountryCode.HK]: [\"Hong Kong\", \"HKG\"],\n    [CountryCode.HM]: [\"Heard Island and McDonald Islands\", \"HMD\"],\n    [CountryCode.HN]: [\"Honduras\", \"HND\"],\n    [CountryCode.HR]: [\"Croatia\", \"HRV\"],\n    [CountryCode.HT]: [\"Haiti\", \"HTI\"],\n    [CountryCode.HU]: [\"Hungary\", \"HUN\"],\n    [CountryCode.ID]: [\"Indonesia\", \"IDN\"],\n    [CountryCode.IE]: [\"Ireland\", \"IRL\"],\n    [CountryCode.IL]: [\"Israel\", \"ISR\"],\n    [CountryCode.IM]: [\"Isle of Man\", \"IMN\"],\n    [CountryCode.IN]: [\"India\", \"IND\"],\n    [CountryCode.IO]: [\"British Indian Ocean Territory\", \"IOT\"],\n    [CountryCode.IQ]: [\"Iraq\", \"IRQ\"],\n    [CountryCode.IR]: [\"Islamic Republic of Iran\", \"IRN\"],\n    [CountryCode.IS]: [\"Iceland\", \"ISL\"],\n    [CountryCode.IT]: [\"Italy\", \"ITA\"],\n    [CountryCode.JE]: [\"Jersey\", \"JEY\"],\n    [CountryCode.JM]: [\"Jamaica\", \"JAM\"],\n    [CountryCode.JO]: [\"Jordan\", \"JOR\"],\n    [CountryCode.JP]: [\"Japan\", \"JPN\"],\n    [CountryCode.KE]: [\"Kenya\", \"KEN\"],\n    [CountryCode.KG]: [\"Kyrgyzstan\", \"KGZ\"],\n    [CountryCode.KH]: [\"Cambodia\", \"KHM\"],\n    [CountryCode.KI]: [\"Kiribati\", \"KIR\"],\n    [CountryCode.KM]: [\"Comoros\", \"COM\"],\n    [CountryCode.KN]: [\"Saint Kitts and Nevis\", \"KNA\"],\n    [CountryCode.KP]: [\"Democratic People's Republic of Korea\", \"PRK\"],\n    [CountryCode.KR]: [\"Republic of Korea\", \"KOR\"],\n    [CountryCode.KW]: [\"Kuwait\", \"KWT\"],\n    [CountryCode.KY]: [\"Cayman Islands\", \"CYM\"],\n    [CountryCode.KZ]: [\"Kazakhstan\", \"KAZ\"],\n    [CountryCode.LA]: [\"Lao People's Democratic Republic\", \"LAO\"],\n    [CountryCode.LB]: [\"Lebanon\", \"LBN\"],\n    [CountryCode.LC]: [\"Saint Lucia\", \"LCA\"],\n    [CountryCode.LI]: [\"Liechtenstein\", \"LIE\"],\n    [CountryCode.LK]: [\"Sri Lanka\", \"LKA\"],\n    [CountryCode.LR]: [\"Liberia\", \"LBR\"],\n    [CountryCode.LS]: [\"Lesotho\", \"LSO\"],\n    [CountryCode.LT]: [\"Lithuania\", \"LTU\"],\n    [CountryCode.LU]: [\"Luxembourg\", \"LUX\"],\n    [CountryCode.LV]: [\"Latvia\", \"LVA\"],\n    [CountryCode.LY]: [\"Libya\", \"LBY\"],\n    [CountryCode.MA]: [\"Morocco\", \"MAR\"],\n    [CountryCode.MC]: [\"Monaco\", \"MCO\"],\n    [CountryCode.MD]: [\"Republic of Moldova\", \"MDA\"],\n    [CountryCode.ME]: [\"Montenegro\", \"MNE\"],\n    [CountryCode.MF]: [\"Saint Martin\", \"MAF\"],\n    [CountryCode.MG]: [\"Madagascar\", \"MDG\"],\n    [CountryCode.MH]: [\"Marshall Islands\", \"MHL\"],\n    [CountryCode.MK]: [\"The former Yugoslav Republic of Macedonia\", \"MKD\"],\n    [CountryCode.ML]: [\"Mali\", \"MLI\"],\n    [CountryCode.MM]: [\"Myanmar\", \"MMR\"],\n    [CountryCode.MN]: [\"Mongolia\", \"MNG\"],\n    [CountryCode.MO]: [\"Macao\", \"MAC\"],\n    [CountryCode.MP]: [\"Northern Mariana Islands\", \"MNP\"],\n    [CountryCode.MQ]: [\"Martinique\", \"MTQ\"],\n    [CountryCode.MR]: [\"Mauritania\", \"MRT\"],\n    [CountryCode.MS]: [\"Montserrat\", \"MSR\"],\n    [CountryCode.MT]: [\"Malta\", \"MLT\"],\n    [CountryCode.MU]: [\"Mauritius\", \"MUS\"],\n    [CountryCode.MV]: [\"Maldives\", \"MDV\"],\n    [CountryCode.MW]: [\"Malawi\", \"MWI\"],\n    [CountryCode.MX]: [\"Mexico\", \"MEX\"],\n    [CountryCode.MY]: [\"Malaysia\", \"MYS\"],\n    [CountryCode.MZ]: [\"Mozambique\", \"MOZ\"],\n    [CountryCode.NA]: [\"Namibia\", \"NAM\"],\n    [CountryCode.NC]: [\"New Caledonia\", \"NCL\"],\n    [CountryCode.NE]: [\"Niger\", \"NER\"],\n    [CountryCode.NF]: [\"Norfolk Island\", \"NFK\"],\n    [CountryCode.NG]: [\"Nigeria\", \"NGA\"],\n    [CountryCode.NI]: [\"Nicaragua\", \"NIC\"],\n    [CountryCode.NL]: [\"Netherlands\", \"NLD\"],\n    [CountryCode.NO]: [\"Norway\", \"NOR\"],\n    [CountryCode.NP]: [\"Nepal\", \"NPL\"],\n    [CountryCode.NR]: [\"Nauru\", \"NRU\"],\n    [CountryCode.NU]: [\"Niue\", \"NIU\"],\n    [CountryCode.NZ]: [\"New Zealand\", \"NZL\"],\n    [CountryCode.OM]: [\"Oman\", \"OMN\"],\n    [CountryCode.PA]: [\"Panama\", \"PAN\"],\n    [CountryCode.PE]: [\"Peru\", \"PER\"],\n    [CountryCode.PF]: [\"French Polynesia\", \"PYF\"],\n    [CountryCode.PG]: [\"Papua New Guinea\", \"PNG\"],\n    [CountryCode.PH]: [\"Philippines\", \"PHL\"],\n    [CountryCode.PK]: [\"Pakistan\", \"PAK\"],\n    [CountryCode.PL]: [\"Poland\", \"POL\"],\n    [CountryCode.PM]: [\"Saint Pierre and Miquelon\", \"SPM\"],\n    [CountryCode.PN]: [\"Pitcairn\", \"PCN\"],\n    [CountryCode.PR]: [\"Puerto Rico\", \"PRI\"],\n    [CountryCode.PS]: [\"Occupied Palestinian Territory\", \"PSE\"],\n    [CountryCode.PT]: [\"Portugal\", \"PRT\"],\n    [CountryCode.PW]: [\"Palau\", \"PLW\"],\n    [CountryCode.PY]: [\"Paraguay\", \"PRY\"],\n    [CountryCode.QA]: [\"Qatar\", \"QAT\"],\n    [CountryCode.RE]: [\"R\\u00E9union\", \"REU\"],\n    [CountryCode.RO]: [\"Romania\", \"ROU\"],\n    [CountryCode.RS]: [\"Serbia\", \"SRB\"],\n    [CountryCode.RU]: [\"Russian Federation\", \"RUS\"],\n    [CountryCode.RW]: [\"Rwanda\", \"RWA\"],\n    [CountryCode.SA]: [\"Saudi Arabia\", \"SAU\"],\n    [CountryCode.SB]: [\"Solomon Islands\", \"SLB\"],\n    [CountryCode.SC]: [\"Seychelles\", \"SYC\"],\n    [CountryCode.SD]: [\"Sudan\", \"SDN\"],\n    [CountryCode.SE]: [\"Sweden\", \"SWE\"],\n    [CountryCode.SG]: [\"Singapore\", \"SGP\"],\n    [CountryCode.SH]: [\"Saint Helena, Ascension and Tristan da Cunha\", \"SHN\"],\n    [CountryCode.SI]: [\"Slovenia\", \"SVN\"],\n    [CountryCode.SJ]: [\"Svalbard and Jan Mayen\", \"SJM\"],\n    [CountryCode.SK]: [\"Slovakia\", \"SVK\"],\n    [CountryCode.SL]: [\"Sierra Leone\", \"SLE\"],\n    [CountryCode.SM]: [\"San Marino\", \"SMR\"],\n    [CountryCode.SN]: [\"Senegal\", \"SEN\"],\n    [CountryCode.SO]: [\"Somalia\", \"SOM\"],\n    [CountryCode.SR]: [\"Suriname\", \"SUR\"],\n    [CountryCode.SS]: [\"South Sudan\", \"SSD\"],\n    [CountryCode.ST]: [\"Sao Tome and Principe\", \"STP\"],\n    [CountryCode.SV]: [\"El Salvador\", \"SLV\"],\n    [CountryCode.SX]: [\"Sint Maarten\", \"SXM\"],\n    [CountryCode.SY]: [\"Syrian Arab Republic\", \"SYR\"],\n    [CountryCode.SZ]: [\"Swaziland\", \"SWZ\"],\n    [CountryCode.TC]: [\"Turks and Caicos Islands\", \"TCA\"],\n    [CountryCode.TD]: [\"Chad\", \"TCD\"],\n    [CountryCode.TF]: [\"French Southern Territories\", \"ATF\"],\n    [CountryCode.TG]: [\"Togo\", \"TGO\"],\n    [CountryCode.TH]: [\"Thailand\", \"THA\"],\n    [CountryCode.TJ]: [\"Tajikistan\", \"TJK\"],\n    [CountryCode.TK]: [\"Tokelau\", \"TKL\"],\n    [CountryCode.TL]: [\"Timor-Leste\", \"TLS\"],\n    [CountryCode.TM]: [\"Turkmenistan\", \"TKM\"],\n    [CountryCode.TN]: [\"Tunisia\", \"TUN\"],\n    [CountryCode.TO]: [\"Tonga\", \"TON\"],\n    [CountryCode.TR]: [\"Turkey\", \"TUR\"],\n    [CountryCode.TT]: [\"Trinidad and Tobago\", \"TTO\"],\n    [CountryCode.TV]: [\"Tuvalu\", \"TUV\"],\n    [CountryCode.TW]: [\"Taiwan, Province of China\", \"TWN\"],\n    [CountryCode.TZ]: [\"United Republic of Tanzania\", \"TZA\"],\n    [CountryCode.UA]: [\"Ukraine\", \"UKR\"],\n    [CountryCode.UG]: [\"Uganda\", \"UGA\"],\n    [CountryCode.UM]: [\"United States Minor Outlying Islands\", \"UMI\"],\n    [CountryCode.US]: [\"United States\", \"USA\"],\n    [CountryCode.UY]: [\"Uruguay\", \"URY\"],\n    [CountryCode.UZ]: [\"Uzbekistan\", \"UZB\"],\n    [CountryCode.VA]: [\"Holy See\", \"VAT\"],\n    [CountryCode.VC]: [\"Saint Vincent and the Grenadines\", \"VCT\"],\n    [CountryCode.VE]: [\"Bolivarian Republic of Venezuela\", \"VEN\"],\n    [CountryCode.VG]: [\"British Virgin Islands\", \"VGB\"],\n    [CountryCode.VI]: [\"Virgin Islands, U.S.\", \"VIR\"],\n    [CountryCode.VN]: [\"Viet Nam\", \"VNM\"],\n    [CountryCode.VU]: [\"Vanuatu\", \"VUT\"],\n    [CountryCode.WF]: [\"Wallis and Futuna\", \"WLF\"],\n    [CountryCode.WS]: [\"Samoa\", \"WSM\"],\n    [CountryCode.XK]: [\"Kosovo\", \"UNK\"],\n    [CountryCode.YE]: [\"Yemen\", \"YEM\"],\n    [CountryCode.YT]: [\"Mayotte\", \"MYT\"],\n    [CountryCode.ZA]: [\"South Africa\", \"ZAF\"],\n    [CountryCode.ZM]: [\"Zambia\", \"ZMB\"],\n    [CountryCode.ZW]: [\"Zimbabwe\", \"ZWE\"],\n};\nconst by2code = Object.entries(countryData).reduce((acc, [k, v]) => {\n    acc[k] = [k, v];\n    return acc;\n}, {});\nconst by3code = Object.entries(countryData).reduce((acc, [k, v]) => {\n    acc[v[1]] = [k, v];\n    return acc;\n}, {});\nexport function countryByCode(code) {\n    if (code === null) {\n        return null;\n    }\n    let info;\n    if (code.length === 3) {\n        info = by3code[code];\n    }\n    else if (code.length === 2) {\n        info = by2code[code];\n    }\n    if (info) {\n        return info[0];\n    }\n    return null;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3VudHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE1BQU0sQ0FBTixJQUFZLFdBMlBYO0FBM1BELFdBQVksV0FBVztJQUNyQix3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFTLENBQUE7SUFDVCx3QkFBUyxDQUFBO0lBQ1Qsd0JBQVMsQ0FBQTtJQUNULHdCQUFT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QUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDO0lBQ3BDLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQztJQUNsQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQztJQUMzQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUM7SUFDcEMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDO0lBQ2xDLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQztJQUNyQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUM7SUFDcEMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDO0lBQ2pDLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsa0JBQWtCLEVBQUUsS0FBSyxDQUFDO0lBQzdDLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsZ0NBQWdDLEVBQUUsS0FBSyxDQUFDO0lBQzNELENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQztJQUMxQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUM7SUFDbkMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDO0lBQ2xDLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDO0lBQzNDLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQztJQUNwQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUM7SUFDcEMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDO0lBQzFDLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQztJQUNwQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUM7SUFDbEMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDO0lBQ3RDLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQztJQUN0QyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUM7SUFDbkMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDO0lBQ25DLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQztJQUN2QyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLG1CQUFtQixFQUFFLEtBQUssQ0FBQztJQUM5QyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUM7SUFDbkMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyw4Q0FBOEMsRUFBRSxLQUFLLENBQUM7SUFDekUsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDO0lBQ3RDLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQztJQUNqQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUM7SUFDMUMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDO0lBQ25DLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQztJQUN0QyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLG1DQUFtQyxFQUFFLEtBQUssQ0FBQztJQUM5RCxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUM7SUFDckMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDO0lBQ3BDLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQztJQUNsQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUM7SUFDcEMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDO0lBQ3RDLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQztJQUNwQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUM7SUFDbkMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDO0lBQ3hDLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQztJQUNsQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLGdDQUFnQyxFQUFFLEtBQUssQ0FBQztJQUMzRCxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUM7SUFDakMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQywwQkFBMEIsRUFBRSxLQUFLLENBQUM7SUFDckQsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDO0lBQ3BDLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQztJQUNsQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUM7SUFDbkMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDO0lBQ3BDLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQztJQUNuQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUM7SUFDbEMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDO0lBQ2xDLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQztJQUN2QyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUM7SUFDckMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDO0lBQ3JDLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQztJQUNwQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLHVCQUF1QixFQUFFLEtBQUssQ0FBQztJQUNsRCxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLHVDQUF1QyxFQUFFLEtBQUssQ0FBQztJQUNsRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLG1CQUFtQixFQUFFLEtBQUssQ0FBQztJQUM5QyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUM7SUFDbkMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUM7SUFDM0MsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDO0lBQ3ZDLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsa0NBQWtDLEVBQUUsS0FBSyxDQUFDO0lBQzdELENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQztJQUNwQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUM7SUFDeEMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDO0lBQzFDLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQztJQUN0QyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUM7SUFDcEMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDO0lBQ3BDLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQztJQUN0QyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUM7SUFDdkMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDO0lBQ25DLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQztJQUNsQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUM7SUFDcEMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDO0lBQ25DLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMscUJBQXFCLEVBQUUsS0FBSyxDQUFDO0lBQ2hELENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQztJQUN2QyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUM7SUFDekMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDO0lBQ3ZDLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsa0JBQWtCLEVBQUUsS0FBSyxDQUFDO0lBQzdDLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsMkNBQTJDLEVBQUUsS0FBSyxDQUFDO0lBQ3RFLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQztJQUNqQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUM7SUFDcEMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDO0lBQ3JDLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQztJQUNsQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLDBCQUEwQixFQUFFLEtBQUssQ0FBQztJQUNyRCxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUM7SUFDdkMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDO0lBQ3ZDLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQztJQUN2QyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUM7SUFDbEMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDO0lBQ3RDLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQztJQUNyQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUM7SUFDbkMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDO0lBQ25DLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQztJQUNyQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUM7SUFDdkMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDO0lBQ3BDLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQztJQUMxQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUM7SUFDbEMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUM7SUFDM0MsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDO0lBQ3BDLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQztJQUN0QyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxLQUFLLENB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","import { randInt } from \"./randInt\";\nexport var PartType;\n(function (PartType) {\n    PartType[PartType[\"BANK_CODE\"] = 0] = \"BANK_CODE\";\n    PartType[PartType[\"BRANCH_CODE\"] = 1] = \"BRANCH_CODE\";\n    PartType[PartType[\"ACCOUNT_NUMBER\"] = 2] = \"ACCOUNT_NUMBER\";\n    PartType[PartType[\"BRANCH_CHECK_DIGIT\"] = 3] = \"BRANCH_CHECK_DIGIT\";\n    PartType[PartType[\"NATIONAL_CHECK_DIGIT\"] = 4] = \"NATIONAL_CHECK_DIGIT\";\n    PartType[PartType[\"CURRENCY_TYPE\"] = 5] = \"CURRENCY_TYPE\";\n    PartType[PartType[\"ACCOUNT_TYPE\"] = 6] = \"ACCOUNT_TYPE\";\n    PartType[PartType[\"OWNER_ACCOUNT_NUMBER\"] = 7] = \"OWNER_ACCOUNT_NUMBER\";\n    PartType[PartType[\"IDENTIFICATION_NUMBER\"] = 8] = \"IDENTIFICATION_NUMBER\";\n})(PartType || (PartType = {}));\nexport var CharacterType;\n(function (CharacterType) {\n    CharacterType[CharacterType[\"n\"] = 0] = \"n\";\n    CharacterType[CharacterType[\"a\"] = 1] = \"a\";\n    CharacterType[CharacterType[\"c\"] = 2] = \"c\";\n    CharacterType[CharacterType[\"e\"] = 3] = \"e\";\n})(CharacterType || (CharacterType = {}));\nconst charByCharacterType = {\n    [CharacterType.n]: \"0123456789\",\n    [CharacterType.a]: \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\",\n    [CharacterType.c]: \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\",\n    [CharacterType.e]: \" \",\n};\nconst charByCharacterRE = {\n    [CharacterType.n]: /^[0-9]+$/,\n    [CharacterType.a]: /^[A-Z]+$/,\n    [CharacterType.c]: /^[0-9A-Za-z]+$/,\n    [CharacterType.e]: /^ +$/,\n};\nexport class BbanStructurePart {\n    constructor(entryType, characterType, length, trailingSeparator, generate) {\n        this.entryType = entryType;\n        this.characterType = characterType;\n        this.length = length;\n        this.generate = generate || this.defaultGenerator;\n        this.hasGenerator = !!generate;\n        this.trailingSeparator = trailingSeparator;\n    }\n    static bankCode(length, characterType, trailingSeparator = true) {\n        return new BbanStructurePart(PartType.BANK_CODE, characterType, length, trailingSeparator);\n    }\n    static branchCode(length, characterType, trailingSeparator = true) {\n        return new BbanStructurePart(PartType.BRANCH_CODE, characterType, length, trailingSeparator);\n    }\n    static accountNumber(length, characterType, trailingSeparator = true) {\n        return new BbanStructurePart(PartType.ACCOUNT_NUMBER, characterType, length, trailingSeparator);\n    }\n    static nationalCheckDigit(length, characterType, generate, trailingSeparator = false) {\n        return new BbanStructurePart(PartType.NATIONAL_CHECK_DIGIT, characterType, length, trailingSeparator, generate);\n    }\n    static branchCheckDigit(length, characterType, generate, trailingSeparator = false) {\n        return new BbanStructurePart(PartType.BRANCH_CHECK_DIGIT, characterType, length, trailingSeparator, generate);\n    }\n    static accountType(length, characterType, trailingSeparator = false) {\n        return new BbanStructurePart(PartType.ACCOUNT_TYPE, characterType, length, trailingSeparator);\n    }\n    static currencyType(length, characterType, trailingSeparator = false) {\n        return new BbanStructurePart(PartType.CURRENCY_TYPE, characterType, length, trailingSeparator);\n    }\n    static ownerAccountNumber(length, characterType, trailingSeparator = true) {\n        return new BbanStructurePart(PartType.OWNER_ACCOUNT_NUMBER, characterType, length, trailingSeparator);\n    }\n    static identificationNumber(length, characterType, trailingSeparator = true) {\n        return new BbanStructurePart(PartType.IDENTIFICATION_NUMBER, characterType, length, trailingSeparator);\n    }\n    getPartType() {\n        return this.entryType;\n    }\n    getCharacterType() {\n        return this.characterType;\n    }\n    getLength() {\n        return this.length;\n    }\n    validate(value) {\n        return charByCharacterRE[this.characterType].test(value);\n    }\n    defaultGenerator(bban, structure) {\n        const charChoices = charByCharacterType[this.characterType];\n        const s = [];\n        for (let i = 0; i < this.getLength(); i += 1) {\n            s.push(charChoices[randInt(charChoices.length)]);\n        }\n        return s.join(\"\");\n    }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RydWN0dXJlUGFydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdHJ1Y3R1cmVQYXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFHcEMsTUFBTSxDQUFOLElBQVksUUFVWDtBQVZELFdBQVksUUFBUTtJQUNsQixpREFBUyxDQUFBO0lBQ1QscURBQVcsQ0FBQTtJQUNYLDJEQUFjLENBQUE7SUFDZCxtRUFBa0IsQ0FBQTtJQUNsQix1RUFBb0IsQ0FBQTtJQUNwQix5REFBYSxDQUFBO0lBQ2IsdURBQVksQ0FBQTtJQUNaLHVFQUFvQixDQUFBO0lBQ3BCLHlFQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFWVyxRQUFRLEtBQVIsUUFBUSxRQVVuQjtBQUtELE1BQU0sQ0FBTixJQUFZLGFBaUJYO0FBakJELFdBQVksYUFBYTtJQUl2QiwyQ0FBQyxDQUFBO0lBSUQsMkNBQUMsQ0FBQTtJQUlELDJDQUFDLENBQUE7SUFJRCwyQ0FBQyxDQUFBO0FBQ0gsQ0FBQyxFQWpCVyxhQUFhLEtBQWIsYUFBYSxRQWlCeEI7QUFHRCxNQUFNLG1CQUFtQixHQUFrQztJQUN6RCxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZO0lBQy9CLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLDRCQUE0QjtJQUMvQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxzQ0FBc0M7SUFDekQsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRztDQUN2QixDQUFDO0FBR0YsTUFBTSxpQkFBaUIsR0FBa0M7SUFDdkQsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVTtJQUM3QixDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVO0lBQzdCLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLGdCQUFnQjtJQUNuQyxDQUFDLGFBQWEs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","export var FormatViolation;\n(function (FormatViolation) {\n    FormatViolation[FormatViolation[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\n    FormatViolation[FormatViolation[\"NOT_NULL\"] = 1] = \"NOT_NULL\";\n    FormatViolation[FormatViolation[\"NOT_EMPTY\"] = 2] = \"NOT_EMPTY\";\n    FormatViolation[FormatViolation[\"BIC_LENGTH_8_OR_11\"] = 3] = \"BIC_LENGTH_8_OR_11\";\n    FormatViolation[FormatViolation[\"BIC_ONLY_UPPER_CASE_LETTERS\"] = 4] = \"BIC_ONLY_UPPER_CASE_LETTERS\";\n    FormatViolation[FormatViolation[\"BRANCH_CODE_ONLY_LETTERS_OR_DIGITS\"] = 5] = \"BRANCH_CODE_ONLY_LETTERS_OR_DIGITS\";\n    FormatViolation[FormatViolation[\"LOCATION_CODE_ONLY_LETTERS_OR_DIGITS\"] = 6] = \"LOCATION_CODE_ONLY_LETTERS_OR_DIGITS\";\n    FormatViolation[FormatViolation[\"BANK_CODE_ONLY_LETTERS\"] = 7] = \"BANK_CODE_ONLY_LETTERS\";\n    FormatViolation[FormatViolation[\"COUNTRY_CODE_TWO_LETTERS\"] = 8] = \"COUNTRY_CODE_TWO_LETTERS\";\n    FormatViolation[FormatViolation[\"COUNTRY_CODE_ONLY_UPPER_CASE_LETTERS\"] = 9] = \"COUNTRY_CODE_ONLY_UPPER_CASE_LETTERS\";\n    FormatViolation[FormatViolation[\"COUNTRY_CODE_EXISTS\"] = 10] = \"COUNTRY_CODE_EXISTS\";\n    FormatViolation[FormatViolation[\"NATIONAL_CHECK_DIGIT\"] = 11] = \"NATIONAL_CHECK_DIGIT\";\n    FormatViolation[FormatViolation[\"CHECK_DIGIT_TWO_DIGITS\"] = 12] = \"CHECK_DIGIT_TWO_DIGITS\";\n    FormatViolation[FormatViolation[\"CHECK_DIGIT_ONLY_DIGITS\"] = 13] = \"CHECK_DIGIT_ONLY_DIGITS\";\n    FormatViolation[FormatViolation[\"BBAN_LENGTH\"] = 14] = \"BBAN_LENGTH\";\n    FormatViolation[FormatViolation[\"BBAN_ONLY_UPPER_CASE_LETTERS\"] = 15] = \"BBAN_ONLY_UPPER_CASE_LETTERS\";\n    FormatViolation[FormatViolation[\"BBAN_ONLY_DIGITS_OR_LETTERS\"] = 16] = \"BBAN_ONLY_DIGITS_OR_LETTERS\";\n    FormatViolation[FormatViolation[\"BBAN_ONLY_DIGITS\"] = 17] = \"BBAN_ONLY_DIGITS\";\n    FormatViolation[FormatViolation[\"IBAN_VALID_CHARACTERS\"] = 18] = \"IBAN_VALID_CHARACTERS\";\n    FormatViolation[FormatViolation[\"COUNTRY_CODE_NOT_NULL\"] = 19] = \"COUNTRY_CODE_NOT_NULL\";\n    FormatViolation[FormatViolation[\"BANK_CODE_NOT_NULL\"] = 20] = \"BANK_CODE_NOT_NULL\";\n    FormatViolation[FormatViolation[\"ACCOUNT_NUMBER_NOT_NULL\"] = 21] = \"ACCOUNT_NUMBER_NOT_NULL\";\n})(FormatViolation || (FormatViolation = {}));\nexport class FormatException extends Error {\n    constructor(formatViolation, msg, expected, actual) {\n        super(msg);\n        this.formatViolation = formatViolation;\n        this.expected = expected;\n        this.actual = actual;\n        Object.setPrototypeOf(this, FormatException.prototype);\n    }\n}\nexport class UnsupportedCountryException extends Error {\n    constructor(msg, actual) {\n        super(msg);\n        this.actual = actual;\n        Object.setPrototypeOf(this, UnsupportedCountryException.prototype);\n    }\n}\nexport class InvalidCheckDigitException extends Error {\n    constructor(msg, expected, actual) {\n        super(msg);\n        this.expected = expected;\n        this.actual = actual;\n        Object.setPrototypeOf(this, InvalidCheckDigitException.prototype);\n    }\n}\nexport class RequiredPartTypeMissing extends Error {\n    constructor(msg) {\n        super(msg);\n        Object.setPrototypeOf(this, RequiredPartTypeMissing.prototype);\n    }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZXB0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9leGNlcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLGVBZ0NYO0FBaENELFdBQVksZUFBZTtJQUN6QiwyREFBTyxDQUFBO0lBRVAsNkRBQVEsQ0FBQTtJQUNSLCtEQUFTLENBQUE7SUFDVCxpRkFBa0IsQ0FBQTtJQUNsQixtR0FBMkIsQ0FBQTtJQUczQixpSEFBa0MsQ0FBQTtJQUNsQyxxSEFBb0MsQ0FBQTtJQUNwQyx5RkFBc0IsQ0FBQTtJQUV0Qiw2RkFBd0IsQ0FBQTtJQUN4QixxSEFBb0MsQ0FBQTtJQUNwQyxvRkFBbUIsQ0FBQTtJQUVuQixzRkFBb0IsQ0FBQTtJQUdwQiwwRkFBc0IsQ0FBQTtJQUN0Qiw0RkFBdUIsQ0FBQTtJQUN2QixvRUFBVyxDQUFBO0lBQ1gsc0dBQTRCLENBQUE7SUFDNUIsb0dBQTJCLENBQUE7SUFDM0IsOEVBQWdCLENBQUE7SUFDaEIsd0ZBQXFCLENBQUE7SUFHckIsd0ZBQXFCLENBQUE7SUFDckIsa0ZBQWtCLENBQUE7SUFDbEIsNEZBQXVCLENBQUE7QUFDekIsQ0FBQyxFQWhDVyxlQUFlLEtBQWYsZUFBZSxRQWdDMUI7QUFFRCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxLQUFLO0lBT3hDLFlBQVksZUFBZ0MsRUFBRSxHQUFXLEVBQUUsUUFBaUIsRUFBRSxNQUFlO1FBQzNGLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVYLElBQUksQ0FBQyxlQUFlLEdBQUcsZUFBZSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBR3JCLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN6RCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsS0FBSztJQUdwRCxZQUFZLEdBQVcsRUFBRSxNQUFlO1FBQ3RDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNYLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBR3JCLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLDJCQUEyQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTywwQkFBMkIsU0FBUSxLQUFLO0lBS25ELFlBQVksR0FBVyxFQUFFLFFBQWlCLEVBQUUsTUFBZTtRQUN6RCxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFWCxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUdyQixNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSwwQkFBMEIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwRSxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsS0FBSztJQUNoRCxZQUFZLEdBQVc7UUFDckIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBR1gsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsdUJBQXVCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDakUsQ0FBQztDQUNGIn0=","export function randInt(maxVal, minVal = 0) {\n    return Math.floor(Math.random() * maxVal) + minVal;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZEludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yYW5kSW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxPQUFPLENBQUMsTUFBYyxFQUFFLFNBQWlCLENBQUM7SUFDeEQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUM7QUFDckQsQ0FBQyJ9","import { CharacterType, BbanStructurePart, PartType } from \"./structurePart\";\nimport { CountryCode } from \"./country\";\nimport { FormatException, FormatViolation, RequiredPartTypeMissing } from \"./exceptions\";\nfunction mod11(value, weights) {\n    return ((11 - (value.split(\"\").reduce((acc, s, idx) => acc + parseInt(s, 10) * weights[idx % weights.length], 0) % 11)) % 11);\n}\nfunction nationalES(bban, structure) {\n    const weights = [1, 2, 4, 8, 5, 10, 9, 7, 3, 6];\n    const combined = [PartType.BANK_CODE, PartType.BRANCH_CODE].map((p) => structure.extractValueMust(bban, p)).join(\"\");\n    function to11(v) {\n        if (v === 10) {\n            return 1;\n        }\n        else if (v === 11) {\n            return 0;\n        }\n        return v;\n    }\n    const d1 = to11(mod11(`00${combined}`, weights));\n    const d2 = to11(mod11(structure.extractValueMust(bban, PartType.ACCOUNT_NUMBER), weights));\n    return `${d1}${d2}`;\n}\nfunction nationalFR(bban, structure) {\n    const replaceChars = {\n        [\"[AJ]\"]: \"1\",\n        [\"[BKS]\"]: \"2\",\n        [\"[CLT]\"]: \"3\",\n        [\"[DMU]\"]: \"4\",\n        [\"[ENV]\"]: \"5\",\n        [\"[FOW]\"]: \"6\",\n        [\"[GPX]\"]: \"7\",\n        [\"[HQY]\"]: \"8\",\n        [\"[IRZ]\"]: \"9\",\n    };\n    let combined = [PartType.BANK_CODE, PartType.BRANCH_CODE, PartType.ACCOUNT_NUMBER]\n        .map((p) => String(structure.extractValue(bban, p)))\n        .join(\"\") + \"00\";\n    Object.entries(replaceChars).map(([k, v]) => (combined = combined.replace(new RegExp(k, \"g\"), v)));\n    const expected = 97 - combined.split(\"\").reduce((acc, v) => (acc * 10 + parseInt(v)) % 97, 0);\n    return String(expected).padStart(2, \"0\");\n}\nfunction nationalIT(bban, structure) {\n    const even = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25];\n    const odd = [1, 0, 5, 7, 9, 13, 15, 17, 19, 21, 2, 4, 18, 20, 11, 3, 6, 8, 12, 14, 16, 10, 22, 25, 24, 23];\n    const V0 = \"0\".charCodeAt(0);\n    const V9 = \"9\".charCodeAt(0);\n    const VA = \"A\".charCodeAt(0);\n    const value = [PartType.BANK_CODE, PartType.BRANCH_CODE, PartType.ACCOUNT_NUMBER]\n        .map((p) => structure.extractValueMust(bban, p))\n        .join(\"\")\n        .split(\"\")\n        .map((v) => v.toUpperCase().charCodeAt(0))\n        .map((v) => v - (V0 <= v && v <= V9 ? V0 : VA))\n        .reduce((acc, v, idx) => acc + (idx % 2 === 0 ? odd[v] : even[v]), 0) % 26;\n    return String.fromCharCode(VA + value);\n}\nfunction nationalNO(bban, structure) {\n    const value = [PartType.BANK_CODE, PartType.ACCOUNT_NUMBER].map((p) => structure.extractValueMust(bban, p)).join(\"\");\n    return String(mod11(value, [5, 4, 3, 2, 7, 6, 5, 4, 3, 2]) % 10);\n}\nfunction nationalPT(bban, structure) {\n    const V0 = \"0\".charCodeAt(0);\n    const weights = [73, 17, 89, 38, 62, 45, 53, 15, 50, 5, 49, 34, 81, 76, 27, 90, 9, 30, 3];\n    const remainder = [PartType.BANK_CODE, PartType.BRANCH_CODE, PartType.ACCOUNT_NUMBER]\n        .map((p) => structure.extractValueMust(bban, p))\n        .join(\"\")\n        .split(\"\")\n        .map((v) => v.charCodeAt(0))\n        .reduce((acc, v, idx) => (acc + (v - V0) * weights[idx]) % 97, 0);\n    return String(98 - remainder).padStart(2, \"0\");\n}\nexport class BbanStructure {\n    constructor(...entries) {\n        this.entries = entries;\n    }\n    getParts() {\n        return this.entries;\n    }\n    validate(bban) {\n        this.validateBbanLength(bban);\n        this.validateBbanEntries(bban);\n    }\n    extractValue(bban, partType) {\n        let bbanPartOffset = 0;\n        let result = null;\n        for (const part of this.getParts()) {\n            const partLength = part.getLength();\n            const partValue = bban.substring(bbanPartOffset, bbanPartOffset + partLength);\n            bbanPartOffset = bbanPartOffset + partLength;\n            if (part.getPartType() == partType) {\n                result = (result || \"\") + partValue;\n            }\n        }\n        return result;\n    }\n    extractValueMust(bban, partType) {\n        const value = this.extractValue(bban, partType);\n        if (value === null) {\n            throw new RequiredPartTypeMissing(`Required part type [${partType}] missing`);\n        }\n        return value;\n    }\n    static forCountry(countryCode) {\n        if (!countryCode) {\n            return null;\n        }\n        return this.structures[countryCode] || null;\n    }\n    static getEntries() {\n        return Object.values(this.structures);\n    }\n    static supportedCountries() {\n        return Object.keys(this.structures);\n    }\n    getBbanLength() {\n        return this.entries.reduce((acc, e) => acc + e.getLength(), 0);\n    }\n    validateBbanLength(bban) {\n        const expectedBbanLength = this.getBbanLength();\n        const bbanLength = bban.length;\n        if (expectedBbanLength != bbanLength) {\n            throw new FormatException(FormatViolation.BBAN_LENGTH, `[${bban}] length is ${bbanLength}, expected BBAN length is: ${expectedBbanLength}`, String(bbanLength), String(expectedBbanLength));\n        }\n    }\n    validateBbanEntries(bban) {\n        let offset = 0;\n        for (const part of this.getParts()) {\n            const partLength = part.getLength();\n            const entryValue = bban.substring(offset, offset + partLength);\n            offset = offset + partLength;\n            this.validateBbanEntryCharacterType(bban, part, entryValue);\n        }\n    }\n    validateBbanEntryCharacterType(bban, part, entryValue) {\n        if (!part.validate(entryValue)) {\n            switch (part.getCharacterType()) {\n                case CharacterType.a:\n                    throw new FormatException(FormatViolation.BBAN_ONLY_UPPER_CASE_LETTERS, `[${entryValue}] must contain only upper case letters.`, entryValue);\n                case CharacterType.c:\n                    throw new FormatException(FormatViolation.BBAN_ONLY_DIGITS_OR_LETTERS, `[${entryValue}] must contain only digits or letters.`, entryValue);\n                case CharacterType.n:\n                    throw new FormatException(FormatViolation.BBAN_ONLY_DIGITS, `[${entryValue}] must contain only digits.`, entryValue);\n            }\n        }\n        if (part.getPartType() === PartType.NATIONAL_CHECK_DIGIT && part.hasGenerator) {\n            const expected = part.generate(bban, this);\n            if (entryValue !== expected) {\n                throw new FormatException(FormatViolation.NATIONAL_CHECK_DIGIT, `national check digit(s) don't match expect=[${expected}] actual=[${entryValue}]`, expected, entryValue);\n            }\n        }\n    }\n}\nBbanStructure.bbanFR = new BbanStructure(BbanStructurePart.bankCode(5, CharacterType.n), BbanStructurePart.branchCode(5, CharacterType.n), BbanStructurePart.accountNumber(11, CharacterType.c), BbanStructurePart.nationalCheckDigit(2, CharacterType.n, nationalFR));\nBbanStructure.structures = {\n    [CountryCode.AD]: new BbanStructure(BbanStructurePart.bankCode(4, CharacterType.n), BbanStructurePart.branchCode(4, CharacterType.n), BbanStructurePart.accountNumber(12, CharacterType.c)),\n    [CountryCode.AE]: new BbanStructure(BbanStructurePart.bankCode(3, CharacterType.n), BbanStructurePart.accountNumber(16, CharacterType.c)),\n    [CountryCode.AL]: new BbanStructure(BbanStructurePart.bankCode(3, CharacterType.n), BbanStructurePart.branchCode(4, CharacterType.n), BbanStructurePart.nationalCheckDigit(1, CharacterType.n), BbanStructurePart.accountNumber(16, CharacterType.c)),\n    [CountryCode.AO]: new BbanStructure(BbanStructurePart.accountNumber(21, CharacterType.n)),\n    [CountryCode.AT]: new BbanStructure(BbanStructurePart.bankCode(5, CharacterType.n), BbanStructurePart.accountNumber(11, CharacterType.n)),\n    [CountryCode.AZ]: new BbanStructure(BbanStructurePart.bankCode(4, CharacterType.a), BbanStructurePart.accountNumber(20, CharacterType.c)),\n    [CountryCode.BA]: new BbanStructure(BbanStructurePart.bankCode(3, CharacterType.n), BbanStructurePart.branchCode(3, CharacterType.n), BbanStructurePart.accountNumber(8, CharacterType.n), BbanStructurePart.nationalCheckDigit(2, CharacterType.n)),\n    [CountryCode.BE]: new BbanStructure(BbanStructurePart.bankCode(3, CharacterType.n), BbanStructurePart.accountNumber(7, CharacterType.n), BbanStructurePart.nationalCheckDigit(2, CharacterType.n, (bban, structure) => {\n        const accountNumber = structure.extractValue(bban, PartType.ACCOUNT_NUMBER);\n        const bankCode = structure.extractValue(bban, PartType.BANK_CODE);\n        if (accountNumber === null || bankCode === null) {\n            throw new FormatException(FormatViolation.NOT_EMPTY, \"account number or bank code missing\");\n        }\n        const value = parseInt(`${bankCode}${accountNumber}`, 10);\n        const remainder = Math.floor(value / 97);\n        let expected = value - remainder * 97;\n        if (expected === 0) {\n            expected = 97;\n        }\n        return String(expected).padStart(2, \"0\");\n    })),\n    [CountryCode.BF]: new BbanStructure(BbanStructurePart.accountNumber(23, CharacterType.n)),\n    [CountryCode.BG]: new BbanStructure(BbanStructurePart.bankCode(4, CharacterType.a), BbanStructurePart.branchCode(4, CharacterType.n), BbanStructurePart.accountType(2, CharacterType.n), BbanStructurePart.accountNumber(8, CharacterType.c)),\n    [CountryCode.BH]: new BbanStructure(BbanStructurePart.bankCode(4, CharacterType.a), BbanStructurePart.accountNumber(14, CharacterType.c)),\n    [CountryCode.BI]: new BbanStructure(BbanStructurePart.bankCode(5, CharacterType.n), BbanStructurePart.branchCode(5, CharacterType.n), BbanStructurePart.accountNumber(11, CharacterType.n), BbanStructurePart.nationalCheckDigit(2, CharacterType.n)),\n    [CountryCode.BJ]: new BbanStructure(BbanStructurePart.bankCode(5, CharacterType.c), BbanStructurePart.branchCode(5, CharacterType.n), BbanStructurePart.accountNumber(12, CharacterType.n), BbanStructurePart.nationalCheckDigit(2, CharacterType.n, nationalFR)),\n    [CountryCode.BR]: new BbanStructure(BbanStructurePart.bankCode(8, CharacterType.n), BbanStructurePart.branchCode(5, CharacterType.n), BbanStructurePart.accountNumber(10, CharacterType.n), BbanStructurePart.accountType(1, CharacterType.a), BbanStructurePart.ownerAccountNumber(1, CharacterType.c)),\n    [CountryCode.BY]: new BbanStructure(BbanStructurePart.bankCode(4, CharacterType.c), BbanStructurePart.accountType(4, CharacterType.n), BbanStructurePart.accountNumber(16, CharacterType.c)),\n    [CountryCode.CF]: new BbanStructure(BbanStructurePart.accountNumber(23, CharacterType.n)),\n    [CountryCode.CG]: new BbanStructure(BbanStructurePart.accountNumber(23, CharacterType.n)),\n    [CountryCode.CH]: new BbanStructure(BbanStructurePart.bankCode(5, CharacterType.n), BbanStructurePart.accountNumber(12, CharacterType.c)),\n    [CountryCode.CI]: new BbanStructure(BbanStructurePart.bankCode(2, CharacterType.c), BbanStructurePart.accountNumber(22, CharacterType.n)),\n    [CountryCode.CM]: new BbanStructure(BbanStructurePart.accountNumber(23, CharacterType.n)),\n    [CountryCode.CR]: new BbanStructure(BbanStructurePart.bankCode(4, CharacterType.n), BbanStructurePart.accountNumber(14, CharacterType.n)),\n    [CountryCode.CV]: new BbanStructure(BbanStructurePart.accountNumber(21, CharacterType.n)),\n    [CountryCode.CY]: new BbanStructure(BbanStructurePart.bankCode(3, CharacterType.n), BbanStructurePart.branchCode(5, CharacterType.n), BbanStructurePart.accountNumber(16, CharacterType.c)),\n    [CountryCode.CZ]: new BbanStructure(BbanStructurePart.bankCode(4, CharacterType.n), BbanStructurePart.branchCode(6, CharacterType.n), BbanStructurePart.accountNumber(10, CharacterType.n)),\n    [CountryCode.DE]: new BbanStructure(BbanStructurePart.bankCode(8, CharacterType.n), BbanStructurePart.accountNumber(10, CharacterType.n)),\n    [CountryCode.DJ]: new BbanStructure(BbanStructurePart.bankCode(5, CharacterType.n), BbanStructurePart.branchCode(5, CharacterType.n), BbanStructurePart.accountNumber(11, CharacterType.n), BbanStructurePart.nationalCheckDigit(2, CharacterType.n)),\n    [CountryCode.DK]: new BbanStructure(BbanStructurePart.bankCode(4, CharacterType.n), BbanStructurePart.accountNumber(10, CharacterType.n)),\n    [CountryCode.DO]: new BbanStructure(BbanStructurePart.bankCode(4, CharacterType.c), BbanStructurePart.accountNumber(20, CharacterType.n)),\n    [CountryCode.DZ]: new BbanStructure(BbanStructurePart.accountNumber(20, CharacterType.n)),\n    [CountryCode.EE]: new BbanStructure(BbanStructurePart.bankCode(2, CharacterType.n), BbanStructurePart.branchCode(2, CharacterType.n), BbanStructurePart.accountNumber(11, CharacterType.n), BbanStructurePart.nationalCheckDigit(1, CharacterType.n)),\n    [CountryCode.EG]: new BbanStructure(BbanStructurePart.bankCode(4, CharacterType.n), BbanStructurePart.branchCode(4, CharacterType.n), BbanStructurePart.accountNumber(17, CharacterType.n)),\n    [CountryCode.ES]: new BbanStructure(BbanStructurePart.bankCode(4, CharacterType.n), BbanStructurePart.branchCode(4, CharacterType.n), BbanStructurePart.nationalCheckDigit(2, CharacterType.n, nationalES), BbanStructurePart.accountNumber(10, CharacterType.n)),\n    [CountryCode.FI]: new BbanStructure(BbanStructurePart.bankCode(3, CharacterType.n), BbanStructurePart.accountNumber(11, CharacterType.n)),\n    [CountryCode.FK]: new BbanStructure(BbanStructurePart.bankCode(2, CharacterType.a), BbanStructurePart.accountNumber(12, CharacterType.n)),\n    [CountryCode.FO]: new BbanStructure(BbanStructurePart.bankCode(4, CharacterType.n), BbanStructurePart.accountNumber(9, CharacterType.n), BbanStructurePart.nationalCheckDigit(1, CharacterType.n)),\n    [CountryCode.FR]: BbanStructure.bbanFR,\n    [CountryCode.GA]: BbanStructure.bbanFR,\n    [CountryCode.GB]: new BbanStructure(BbanStructurePart.bankCode(4, CharacterType.a), BbanStructurePart.branchCode(6, CharacterType.n), BbanStructurePart.accountNumber(8, CharacterType.n)),\n    [CountryCode.GE]: new BbanStructure(BbanStructurePart.bankCode(2, CharacterType.a), BbanStructurePart.accountNumber(16, CharacterType.n)),\n    [CountryCode.GI]: new BbanStructure(BbanStructurePart.bankCode(4, CharacterType.a), BbanStructurePart.accountNumber(15, CharacterType.c)),\n    [CountryCode.GL]: new BbanStructure(BbanStructurePart.bankCode(4, CharacterType.n), BbanStructurePart.accountNumber(10, CharacterType.n)),\n    [CountryCode.GQ]: BbanStructure.bbanFR,\n    [CountryCode.GR]: new BbanStructure(BbanStructurePart.bankCode(3, CharacterType.n), BbanStructurePart.branchCode(4, CharacterType.n), BbanStructurePart.accountNumber(16, CharacterType.c)),\n    [CountryCode.GT]: new BbanStructure(BbanStructurePart.bankCode(4, CharacterType.c), BbanStructurePart.currencyType(2, CharacterType.n), BbanStructurePart.accountType(2, CharacterType.n), BbanStructurePart.accountNumber(16, CharacterType.c)),\n    [CountryCode.HR]: new BbanStructure(BbanStructurePart.bankCode(7, CharacterType.n), BbanStructurePart.accountNumber(10, CharacterType.n)),\n    [CountryCode.HN]: new BbanStructure(BbanStructurePart.bankCode(4, CharacterType.a), BbanStructurePart.accountNumber(20, CharacterType.n)),\n    [CountryCode.HU]: new BbanStructure(BbanStructurePart.bankCode(3, CharacterType.n), BbanStructurePart.branchCode(4, CharacterType.n), BbanStructurePart.branchCheckDigit(1, CharacterType.n), BbanStructurePart.accountNumber(15, CharacterType.n), BbanStructurePart.nationalCheckDigit(1, CharacterType.n)),\n    [CountryCode.IE]: new BbanStructure(BbanStructurePart.bankCode(4, CharacterType.a), BbanStructurePart.branchCode(6, CharacterType.n), BbanStructurePart.accountNumber(8, CharacterType.n)),\n    [CountryCode.IL]: new BbanStructure(BbanStructurePart.bankCode(3, CharacterType.n), BbanStructurePart.branchCode(3, CharacterType.n), BbanStructurePart.accountNumber(13, CharacterType.n)),\n    [CountryCode.IQ]: new BbanStructure(BbanStructurePart.bankCode(4, CharacterType.a), BbanStructurePart.branchCode(3, CharacterType.n), BbanStructurePart.accountNumber(12, CharacterType.n)),\n    [CountryCode.IR]: new BbanStructure(BbanStructurePart.bankCode(3, CharacterType.n), BbanStructurePart.accountNumber(19, CharacterType.n)),\n    [CountryCode.IS]: new BbanStructure(BbanStructurePart.bankCode(4, CharacterType.n), BbanStructurePart.branchCode(2, CharacterType.n), BbanStructurePart.accountNumber(6, CharacterType.n), BbanStructurePart.identificationNumber(10, CharacterType.n)),\n    [CountryCode.IT]: new BbanStructure(BbanStructurePart.nationalCheckDigit(1, CharacterType.a, nationalIT), BbanStructurePart.bankCode(5, CharacterType.n), BbanStructurePart.branchCode(5, CharacterType.n), BbanStructurePart.accountNumber(12, CharacterType.c)),\n    [CountryCode.JO]: new BbanStructure(BbanStructurePart.bankCode(4, CharacterType.a), BbanStructurePart.branchCode(4, CharacterType.n), BbanStructurePart.accountNumber(18, CharacterType.c)),\n    [CountryCode.KM]: new BbanStructure(BbanStructurePart.accountNumber(23, CharacterType.n)),\n    [CountryCode.KW]: new BbanStructure(BbanStructurePart.bankCode(4, CharacterType.a), BbanStructurePart.accountNumber(22, CharacterType.c)),\n    [CountryCode.KZ]: new BbanStructure(BbanStructurePart.bankCode(3, CharacterType.n), BbanStructurePart.accountNumber(13, CharacterType.c)),\n    [CountryCode.LB]: new BbanStructure(BbanStructurePart.bankCode(4, CharacterType.n), BbanStructurePart.accountNumber(20, CharacterType.c)),\n    [CountryCode.LC]: new BbanStructure(BbanStructurePart.bankCode(4, CharacterType.a), BbanStructurePart.accountNumber(24, CharacterType.n)),\n    [CountryCode.LI]: new BbanStructure(BbanStructurePart.bankCode(5, CharacterType.n), BbanStructurePart.accountNumber(12, CharacterType.c)),\n    [CountryCode.LT]: new BbanStructure(BbanStructurePart.bankCode(5, CharacterType.n), BbanStructurePart.accountNumber(11, CharacterType.n)),\n    [CountryCode.LU]: new BbanStructure(BbanStructurePart.bankCode(3, CharacterType.n), BbanStructurePart.accountNumber(13, CharacterType.c)),\n    [CountryCode.LV]: new BbanStructure(BbanStructurePart.bankCode(4, CharacterType.a), BbanStructurePart.accountNumber(13, CharacterType.c)),\n    [CountryCode.LY]: new BbanStructure(BbanStructurePart.bankCode(3, CharacterType.n), BbanStructurePart.branchCode(3, CharacterType.n), BbanStructurePart.accountNumber(15, CharacterType.n)),\n    [CountryCode.MA]: new BbanStructure(BbanStructurePart.accountNumber(24, CharacterType.n)),\n    [CountryCode.MC]: new BbanStructure(BbanStructurePart.bankCode(5, CharacterType.n), BbanStructurePart.branchCode(5, CharacterType.n), BbanStructurePart.accountNumber(11, CharacterType.c), BbanStructurePart.nationalCheckDigit(2, CharacterType.n, nationalFR)),\n    [CountryCode.MD]: new BbanStructure(BbanStructurePart.bankCode(2, CharacterType.c), BbanStructurePart.accountNumber(18, CharacterType.c)),\n    [CountryCode.ME]: new BbanStructure(BbanStructurePart.bankCode(3, CharacterType.n), BbanStructurePart.accountNumber(13, CharacterType.n), BbanStructurePart.nationalCheckDigit(2, CharacterType.n)),\n    [CountryCode.MG]: new BbanStructure(BbanStructurePart.bankCode(5, CharacterType.n), BbanStructurePart.branchCode(5, CharacterType.n), BbanStructurePart.accountNumber(11, CharacterType.c), BbanStructurePart.nationalCheckDigit(2, CharacterType.n)),\n    [CountryCode.MK]: new BbanStructure(BbanStructurePart.bankCode(3, CharacterType.n), BbanStructurePart.accountNumber(10, CharacterType.c), BbanStructurePart.nationalCheckDigit(2, CharacterType.n)),\n    [CountryCode.ML]: new BbanStructure(BbanStructurePart.bankCode(1, CharacterType.a), BbanStructurePart.accountNumber(25, CharacterType.n)),\n    [CountryCode.MN]: new BbanStructure(BbanStructurePart.bankCode(4, CharacterType.n), BbanStructurePart.accountNumber(12, CharacterType.n)),\n    [CountryCode.MR]: new BbanStructure(BbanStructurePart.bankCode(5, CharacterType.n), BbanStructurePart.branchCode(5, CharacterType.n), BbanStructurePart.accountNumber(11, CharacterType.n), BbanStructurePart.nationalCheckDigit(2, CharacterType.n)),\n    [CountryCode.MT]: new BbanStructure(BbanStructurePart.bankCode(4, CharacterType.a), BbanStructurePart.branchCode(5, CharacterType.n), BbanStructurePart.accountNumber(18, CharacterType.c)),\n    [CountryCode.MU]: new BbanStructure(BbanStructurePart.bankCode(6, CharacterType.c), BbanStructurePart.branchCode(2, CharacterType.n), BbanStructurePart.accountNumber(12, CharacterType.c), BbanStructurePart.accountType(3, CharacterType.n), BbanStructurePart.currencyType(3, CharacterType.a)),\n    [CountryCode.MZ]: new BbanStructure(BbanStructurePart.accountNumber(21, CharacterType.n)),\n    [CountryCode.NE]: new BbanStructure(BbanStructurePart.bankCode(2, CharacterType.a), BbanStructurePart.accountNumber(22, CharacterType.n)),\n    [CountryCode.NI]: new BbanStructure(BbanStructurePart.bankCode(4, CharacterType.a), BbanStructurePart.accountNumber(20, CharacterType.n)),\n    [CountryCode.NL]: new BbanStructure(BbanStructurePart.bankCode(4, CharacterType.a), BbanStructurePart.accountNumber(10, CharacterType.n)),\n    [CountryCode.NO]: new BbanStructure(BbanStructurePart.bankCode(4, CharacterType.n), BbanStructurePart.accountNumber(6, CharacterType.n), BbanStructurePart.nationalCheckDigit(1, CharacterType.n, nationalNO)),\n    [CountryCode.OM]: new BbanStructure(BbanStructurePart.bankCode(3, CharacterType.n), BbanStructurePart.accountNumber(16, CharacterType.n)),\n    [CountryCode.PK]: new BbanStructure(BbanStructurePart.bankCode(4, CharacterType.c), BbanStructurePart.accountNumber(16, CharacterType.c)),\n    [CountryCode.PL]: new BbanStructure(BbanStructurePart.bankCode(3, CharacterType.n), BbanStructurePart.branchCode(4, CharacterType.n), BbanStructurePart.nationalCheckDigit(1, CharacterType.n), BbanStructurePart.accountNumber(16, CharacterType.n)),\n    [CountryCode.PS]: new BbanStructure(BbanStructurePart.bankCode(4, CharacterType.a), BbanStructurePart.accountNumber(21, CharacterType.c)),\n    [CountryCode.PT]: new BbanStructure(BbanStructurePart.bankCode(4, CharacterType.n), BbanStructurePart.branchCode(4, CharacterType.n), BbanStructurePart.accountNumber(11, CharacterType.n), BbanStructurePart.nationalCheckDigit(2, CharacterType.n, nationalPT)),\n    [CountryCode.QA]: new BbanStructure(BbanStructurePart.bankCode(4, CharacterType.a), BbanStructurePart.accountNumber(21, CharacterType.c)),\n    [CountryCode.RO]: new BbanStructure(BbanStructurePart.bankCode(4, CharacterType.a), BbanStructurePart.accountNumber(16, CharacterType.c)),\n    [CountryCode.RS]: new BbanStructure(BbanStructurePart.bankCode(3, CharacterType.n), BbanStructurePart.accountNumber(13, CharacterType.n), BbanStructurePart.nationalCheckDigit(2, CharacterType.n)),\n    [CountryCode.RU]: new BbanStructure(BbanStructurePart.bankCode(9, CharacterType.n), BbanStructurePart.branchCode(5, CharacterType.n), BbanStructurePart.accountNumber(15, CharacterType.c)),\n    [CountryCode.SA]: new BbanStructure(BbanStructurePart.bankCode(2, CharacterType.n), BbanStructurePart.accountNumber(18, CharacterType.c)),\n    [CountryCode.SC]: new BbanStructure(BbanStructurePart.bankCode(4, CharacterType.a), BbanStructurePart.branchCode(2, CharacterType.n), BbanStructurePart.branchCheckDigit(2, CharacterType.n), BbanStructurePart.accountNumber(16, CharacterType.n), BbanStructurePart.currencyType(3, CharacterType.a)),\n    [CountryCode.SD]: new BbanStructure(BbanStructurePart.bankCode(2, CharacterType.n), BbanStructurePart.accountNumber(12, CharacterType.n)),\n    [CountryCode.SE]: new BbanStructure(BbanStructurePart.bankCode(3, CharacterType.n), BbanStructurePart.accountNumber(16, CharacterType.n), BbanStructurePart.nationalCheckDigit(1, CharacterType.n)),\n    [CountryCode.SI]: new BbanStructure(BbanStructurePart.bankCode(2, CharacterType.n), BbanStructurePart.branchCode(3, CharacterType.n), BbanStructurePart.accountNumber(8, CharacterType.n), BbanStructurePart.nationalCheckDigit(2, CharacterType.n)),\n    [CountryCode.SK]: new BbanStructure(BbanStructurePart.bankCode(4, CharacterType.n), BbanStructurePart.accountNumber(16, CharacterType.n)),\n    [CountryCode.SM]: new BbanStructure(BbanStructurePart.nationalCheckDigit(1, CharacterType.a, nationalIT), BbanStructurePart.bankCode(5, CharacterType.n), BbanStructurePart.branchCode(5, CharacterType.n), BbanStructurePart.accountNumber(12, CharacterType.c)),\n    [CountryCode.SN]: new BbanStructure(BbanStructurePart.bankCode(5, CharacterType.c), BbanStructurePart.branchCode(5, CharacterType.n), BbanStructurePart.accountNumber(14, CharacterType.n)),\n    [CountryCode.SO]: new BbanStructure(BbanStructurePart.bankCode(4, CharacterType.n), BbanStructurePart.branchCode(3, CharacterType.n), BbanStructurePart.accountNumber(12, CharacterType.n)),\n    [CountryCode.ST]: new BbanStructure(BbanStructurePart.bankCode(4, CharacterType.n), BbanStructurePart.branchCode(4, CharacterType.n), BbanStructurePart.accountNumber(13, CharacterType.n)),\n    [CountryCode.SV]: new BbanStructure(BbanStructurePart.bankCode(4, CharacterType.a), BbanStructurePart.branchCode(4, CharacterType.n), BbanStructurePart.accountNumber(16, CharacterType.n)),\n    [CountryCode.TG]: new BbanStructure(BbanStructurePart.bankCode(2, CharacterType.a), BbanStructurePart.accountNumber(22, CharacterType.n)),\n    [CountryCode.TD]: new BbanStructure(BbanStructurePart.accountNumber(23, CharacterType.n)),\n    [CountryCode.TL]: new BbanStructure(BbanStructurePart.bankCode(3, CharacterType.n), BbanStructurePart.accountNumber(14, CharacterType.n), BbanStructurePart.nationalCheckDigit(2, CharacterType.n)),\n    [CountryCode.TN]: new BbanStructure(BbanStructurePart.bankCode(2, CharacterType.n), BbanStructurePart.branchCode(3, CharacterType.n), BbanStructurePart.accountNumber(13, CharacterType.c), BbanStructurePart.nationalCheckDigit(2, CharacterType.c)),\n    [CountryCode.TR]: new BbanStructure(BbanStructurePart.bankCode(5, CharacterType.n), BbanStructurePart.nationalCheckDigit(1, CharacterType.c), BbanStructurePart.accountNumber(16, CharacterType.c)),\n    [CountryCode.UA]: new BbanStructure(BbanStructurePart.bankCode(6, CharacterType.n), BbanStructurePart.accountNumber(19, CharacterType.n)),\n    [CountryCode.VA]: new BbanStructure(BbanStructurePart.bankCode(3, CharacterType.c), BbanStructurePart.accountNumber(15, CharacterType.n)),\n    [CountryCode.VG]: new BbanStructure(BbanStructurePart.bankCode(4, CharacterType.a), BbanStructurePart.accountNumber(16, CharacterType.n)),\n    [CountryCode.XK]: new BbanStructure(BbanStructurePart.bankCode(2, CharacterType.n), BbanStructurePart.branchCode(2, CharacterType.n), BbanStructurePart.accountNumber(10, CharacterType.n), BbanStructurePart.nationalCheckDigit(2, CharacterType.n)),\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmJhblN0cnVjdHVyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iYmFuU3RydWN0dXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN4QyxPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUt6RixTQUFTLEtBQUssQ0FBQyxLQUFhLEVBQUUsT0FBaUI7SUFDN0MsT0FBTyxDQUNMLENBQUMsRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQ3JILENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsSUFBWSxFQUFFLFNBQXdCO0lBQ3hELE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFckgsU0FBUyxJQUFJLENBQUMsQ0FBUztRQUNyQixJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDWixPQUFPLENBQUMsQ0FBQztTQUNWO2FBQU0sSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ25CLE9BQU8sQ0FBQyxDQUFDO1NBQ1Y7UUFDRCxPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssUUFBUSxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNqRCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLGNBQWMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFFM0YsT0FBTyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUN0QixDQUFDO0FBS0QsU0FBUyxVQUFVLENBQUMsSUFBWSxFQUFFLFNBQXdCO0lBQ3hELE1BQU0sWUFBWSxHQUFHO1FBQ25CLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FBRztRQUNiLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRztRQUNkLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRztRQUNkLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRztRQUNkLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRztRQUNkLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRztRQUNkLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRztRQUNkLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRztRQUNkLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRztLQUNmLENBQUM7SUFDRixJQUFJLFFBQVEsR0FDVixDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsY0FBYyxDQUFDO1NBQ2hFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDbkQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztJQUNyQixNQUFNLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFHbkcsTUFBTSxRQUFRLEdBQUcsRUFBRSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsRUFBRSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUU5RixPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzNDLENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FBQyxJQUFZLEVBQUUsU0FBd0I7SUFDeEQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDNUcsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDM0csTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdCLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0IsTUFBTSxLQUFLLEdBQ1QsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLGNBQWMsQ0FBQztTQUNoRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDL0MsSUFBSSxDQUFDLEVBQUUsQ0FBQztTQUNSLEtBQUssQ0FBQyxFQUFFLENBQUM7U0FDVCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDekMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMs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QWEsQ0FBQyxDQUFDLENBQUMsRUFDOUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQ3JEO0lBR0QsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxhQUFhLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFekYsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxhQUFhLENBQ2pDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUM5QyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFDaEQsaUJBQWlCLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQ3BELGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQ3pEO0lBRUQsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxhQUFhLENBQ2pDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUM5QyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFDaEQsaUJBQWlCLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQ3JEO0lBR0QsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxhQUFhLENBQ2pDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUM5QyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFDaEQsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQ3BFLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUNyRDtJQUlELENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksYUFBYSxDQUNqQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFDOUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQ3JEO0lBRUQsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxhQUFhLENBRWpDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUM5QyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FDckQ7SUFFRCxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLGFBQWEsQ0FDakMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQzlDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUNuRCxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUN6RDtJQUlELENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxNQUFNO0lBR3RDLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxNQUFNO0lBSXRDLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksYUFBYSxDQUNqQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFDOUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQ2hELGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUNwRDtJQUVELENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksYUFBYSxDQUVqQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFDOUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQ3JEO0lBRUQsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxhQUFhLENBQ2pDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUM5QyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FDckQ7SUFHRCxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLGFBQWEsQ0FDakMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQzlDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUNyRDtJQUdELENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxNQUFNO0lBRXRDLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksYUFBYSxDQUNqQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFDOUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQ2hELGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUNyRDtJQUVELENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksYUFBYSxDQUNqQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFDOUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQ2xELGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUNqRCxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FDckQ7SUFFRCxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLGFBQWEsQ0FDakMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQzlDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUNyRDtJQUdELENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksYUFBYSxDQUNqQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFDOUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQ3JEO0lBS0QsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxhQUFhLENBQ2pDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUM5QyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFDaEQsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFDdEQsaUJBQWlCLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQ3BELGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQ3pEO0lBRUQsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxhQUFhLENBQ2pDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUM5QyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFDaEQsaUJBQWlCLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQ3BEO0lBRUQsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxhQUFhLENBQ2pDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUM5QyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFDaEQsaUJBQWlCLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQ3JEO0lBRUQsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxhQUFhLENBQ2pDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUM5QyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFDaEQsaUJBQWlCLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQ3JEO0lBR0QsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxhQUFhLENBQ2pDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUM5QyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FDckQ7SUFFRCxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLGFBQWEsQ0FDakMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQzlDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUNoRCxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFDbkQsaUJBQWlCLENBQUMsb0JBQW9CLENBQUMsRUFBRSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FDNUQ7SUFFRCxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLGFBQWEsQ0FDakMsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQ3BFLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUM5QyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFDaEQsaUJBQWlCLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQ3JEO0lBRUQsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxhQUFhLENBQ2pDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUM5QyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFDaEQsaUJBQWlCLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQ3JEO0lBR0QsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxhQUFhLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFekYsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxhQUFhLENBQ2pDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUM5QyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FDckQ7SUFFRCxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLGFBQWEsQ0FDakMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQzlDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUNyRDtJQUVELENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksYUFBYSxDQUNqQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFDOUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQ3JEO0lBRUQsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxhQUFhLENBQ2pDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUM5QyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FDckQ7SUFFRCxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLGFBQWEsQ0FDakMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQzlDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUNyRDtJQUVELENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksYUFBYSxDQUNqQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFDOUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQ3JEO0lBRUQsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxhQUFhLENBQ2pDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUM5QyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FDckQ7SUFFRCxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLGFBQWEsQ0FDakMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQzlDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUNyRDtJQUVELENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksYUFBYSxDQUNqQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFDOUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQ2hELGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUNyRDtJQUdELENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksYUFBYSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXpGLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksYUFBYSxDQUNqQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFDOUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FB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O0lBRUQsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxhQUFhLENBQ2pDLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUNwRSxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFDOUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQ2hELGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUNyRDtJQUdELENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksYUFBYSxDQUNqQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFDOUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQ2hELGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUNyRDtJQUVELENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksYUFBYSxDQUdqQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFDOUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQ2hELGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUNyRDtJQUVELENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksYUFBYSxDQUNqQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFDOUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQ2hELGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUNyRDtJQUVELENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksYUFBYSxDQUdqQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFDOUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQ2hELGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUNyRDtJQUdELENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksYUFBYSxDQUNqQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFDOUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQ3JEO0lBR0QsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxhQUFhLENBQ2pDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUVyRDtJQUVELENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksYUFBYSxDQUNqQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFDOUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQ3BELGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQ3pEO0lBRUQsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxhQUFhLENBQ2pDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUM5QyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFDaEQsaUJBQWlCLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQ3BELGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQ3pEO0lBRUQsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxhQUFhLENBQ2pDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUM5QyxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUN4RCxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FDckQ7SUFFRCxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLGFBQWEsQ0FDakMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQzlDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUNyRDtJQUVELENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksYUFBYSxDQUNqQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFDOUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQ3JEO0lBRUQsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxhQUFhLENBQ2pDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUM5QyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FDckQ7SUFFRCxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLGFBQWEsQ0FDakMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQzlDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUNoRCxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFDcEQsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FDekQ7Q0FDRixDQUFDIn0=","import { countryByCode } from \"./country\";\nimport { BbanStructure } from \"./bbanStructure\";\nimport { PartType } from \"./structurePart\";\nimport { InvalidCheckDigitException, FormatViolation, FormatException, UnsupportedCountryException, } from \"./exceptions\";\nconst ucRegex = /^[A-Z]+$/;\nconst numRegex = /^[0-9]+$/;\nexport const DEFAULT_CHECK_DIGIT = \"00\";\nconst MOD = 97;\nconst MAX = 999999999;\nconst COUNTRY_CODE_INDEX = 0;\nconst COUNTRY_CODE_LENGTH = 2;\nconst CHECK_DIGIT_INDEX = COUNTRY_CODE_LENGTH;\nconst CHECK_DIGIT_LENGTH = 2;\nconst BBAN_INDEX = CHECK_DIGIT_INDEX + CHECK_DIGIT_LENGTH;\nexport function calculateCheckDigit(iban) {\n    const reformattedIban = replaceCheckDigit(iban, DEFAULT_CHECK_DIGIT);\n    const modResult = calculateMod(reformattedIban);\n    const checkDigit = String(98 - modResult);\n    return checkDigit.padStart(2, \"0\");\n}\nexport function validate(iban) {\n    validateNotEmpty(iban);\n    validateCountryCode(iban, true);\n    validateCheckDigitPresence(iban);\n    validateBban(getCountryCode(iban), getBban(iban));\n    validateCheckDigitChecksum(iban);\n}\nexport function validateCheckDigit(iban) {\n    validateNotEmpty(iban);\n    validateCheckDigitPresence(iban);\n    validateCountryCode(iban, false);\n    validateCheckDigitChecksum(iban);\n}\nexport function validateBban(countryCode, bban) {\n    validateCountryCode(countryCode, true);\n    const structure = getBbanStructure(countryCode);\n    if (!structure) {\n        throw new Error(\"Internal error, expected structure\");\n    }\n    structure.validate(bban);\n}\nexport function isSupportedCountry(countryCode) {\n    return BbanStructure.forCountry(countryCode) != null;\n}\nexport function getIbanLength(countryCode) {\n    const structure = getBbanStructure(countryCode);\n    if (structure === null) {\n        throw new UnsupportedCountryException(\"Unsuppored country\", countryCode);\n    }\n    return COUNTRY_CODE_LENGTH + CHECK_DIGIT_LENGTH + structure.getBbanLength();\n}\nexport function getCheckDigit(iban) {\n    return iban.substring(CHECK_DIGIT_INDEX, CHECK_DIGIT_INDEX + CHECK_DIGIT_LENGTH);\n}\nexport function getCountryCode(iban) {\n    return iban.substring(COUNTRY_CODE_INDEX, COUNTRY_CODE_INDEX + COUNTRY_CODE_LENGTH);\n}\nexport function getCountryCodeAndCheckDigit(iban) {\n    return iban.substring(COUNTRY_CODE_INDEX, COUNTRY_CODE_INDEX + COUNTRY_CODE_LENGTH + CHECK_DIGIT_LENGTH);\n}\nexport function getBban(iban) {\n    return iban.substring(BBAN_INDEX);\n}\nexport function getAccountNumber(iban) {\n    return extractBbanEntry(iban, PartType.ACCOUNT_NUMBER);\n}\nexport function getBankCode(iban) {\n    return extractBbanEntry(iban, PartType.BANK_CODE);\n}\nexport function getBranchCode(iban) {\n    return extractBbanEntry(iban, PartType.BRANCH_CODE);\n}\nexport function getNationalCheckDigit(iban) {\n    return extractBbanEntry(iban, PartType.NATIONAL_CHECK_DIGIT);\n}\nexport function getBranchCheckDigit(iban) {\n    return extractBbanEntry(iban, PartType.BRANCH_CHECK_DIGIT);\n}\nexport function getCurrencyType(iban) {\n    return extractBbanEntry(iban, PartType.CURRENCY_TYPE);\n}\nexport function getAccountType(iban) {\n    return extractBbanEntry(iban, PartType.ACCOUNT_TYPE);\n}\nexport function getOwnerAccountType(iban) {\n    return extractBbanEntry(iban, PartType.OWNER_ACCOUNT_NUMBER);\n}\nexport function getIdentificationNumber(iban) {\n    return extractBbanEntry(iban, PartType.IDENTIFICATION_NUMBER);\n}\nexport function replaceCheckDigit(iban, checkDigit) {\n    return getCountryCode(iban) + checkDigit + getBban(iban);\n}\nexport function toFormattedString(iban, separator = \" \") {\n    return iban.replace(/(.{4})/g, `$1${separator}`).trim();\n}\nexport function toFormattedStringBBAN(iban, separator = \" \") {\n    const structure = getBbanStructure(iban);\n    if (structure === null) {\n        throw new Error(\"should't happen - already validated IBAN\");\n    }\n    const bban = getBban(iban);\n    const parts = structure.getParts().reduce((acc, part) => {\n        const value = structure.extractValue(bban, part.getPartType());\n        return acc.concat(value || \"\", part.trailingSeparator ? separator : \"\");\n    }, []);\n    parts.pop();\n    return parts.join(\"\");\n}\nexport function validateCheckDigitChecksum(iban) {\n    if (calculateMod(iban) != 1) {\n        const checkDigit = getCheckDigit(iban);\n        const expectedCheckDigit = calculateCheckDigit(iban);\n        throw new InvalidCheckDigitException(`[${iban}] has invalid check digit: ${checkDigit}, expected check digit is: ${expectedCheckDigit}`, checkDigit, expectedCheckDigit);\n    }\n}\nfunction validateNotEmpty(iban) {\n    if (iban == null) {\n        throw new FormatException(FormatViolation.NOT_NULL, \"Null can't be a valid Iban.\");\n    }\n    if (iban.length === 0) {\n        throw new FormatException(FormatViolation.NOT_EMPTY, \"Empty string can't be a valid Iban.\");\n    }\n}\nfunction validateCountryCode(iban, hasStructure = true) {\n    if (iban.length < COUNTRY_CODE_LENGTH) {\n        throw new FormatException(FormatViolation.COUNTRY_CODE_TWO_LETTERS, \"Iban must contain 2 char country code.\", iban);\n    }\n    const countryCode = getCountryCode(iban);\n    if (countryCode !== countryCode.toUpperCase() || !ucRegex.test(countryCode)) {\n        throw new FormatException(FormatViolation.COUNTRY_CODE_ONLY_UPPER_CASE_LETTERS, \"Iban country code must contain upper case letters.\", countryCode);\n    }\n    const country = countryByCode(countryCode);\n    if (country == null) {\n        throw new FormatException(FormatViolation.COUNTRY_CODE_EXISTS, \"Iban contains non existing country code.\", countryCode);\n    }\n    if (hasStructure) {\n        const structure = BbanStructure.forCountry(country);\n        if (structure == null) {\n            throw new UnsupportedCountryException(\"Country code is not supported.\", countryCode);\n        }\n    }\n}\nfunction validateCheckDigitPresence(iban) {\n    if (iban.length < COUNTRY_CODE_LENGTH + CHECK_DIGIT_LENGTH) {\n        throw new FormatException(FormatViolation.CHECK_DIGIT_TWO_DIGITS, \"Iban must contain 2 digit check digit.\", iban.substring(COUNTRY_CODE_LENGTH));\n    }\n    const checkDigit = getCheckDigit(iban);\n    if (!numRegex.test(checkDigit)) {\n        throw new FormatException(FormatViolation.CHECK_DIGIT_ONLY_DIGITS, \"Iban's check digit should contain only digits.\", checkDigit);\n    }\n}\nfunction calculateMod(iban) {\n    const reformattedIban = getBban(iban) + getCountryCodeAndCheckDigit(iban);\n    const VA = \"A\".charCodeAt(0);\n    const VZ = \"Z\".charCodeAt(0);\n    const V0 = \"0\".charCodeAt(0);\n    const V9 = \"9\".charCodeAt(0);\n    function addSum(total, value) {\n        const newTotal = (value > 9 ? total * 100 : total * 10) + value;\n        return newTotal > MAX ? newTotal % MOD : newTotal;\n    }\n    const total = reformattedIban\n        .toUpperCase()\n        .split(\"\")\n        .reduce((totalValue, ch) => {\n        const code = ch.charCodeAt(0);\n        if (VA <= code && code <= VZ) {\n            return addSum(totalValue, code - VA + 10);\n        }\n        else if (V0 <= code && code <= V9) {\n            return addSum(totalValue, code - V0);\n        }\n        else {\n            throw new FormatException(FormatViolation.IBAN_VALID_CHARACTERS, `Invalid Character[${ch}] = '${code}'`, ch);\n        }\n    }, 0);\n    return total % MOD;\n}\nfunction getBbanStructure(iban) {\n    const countryCode = countryByCode(getCountryCode(iban));\n    if (!countryCode) {\n        return null;\n    }\n    return getBbanStructureByCountry(countryCode);\n}\nfunction getBbanStructureByCountry(countryCode) {\n    return BbanStructure.forCountry(countryCode);\n}\nfunction extractBbanEntry(iban, partType) {\n    const bban = getBban(iban);\n    const structure = getBbanStructure(iban);\n    if (structure === null) {\n        return null;\n    }\n    return structure.extractValue(bban, partType);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWJhblV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaWJhblV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFlLGFBQWEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFDTCwwQkFBMEIsRUFDMUIsZUFBZSxFQUNmLGVBQWUsRUFDZiwyQkFBMkIsR0FDNUIsTUFBTSxjQUFjLENBQUM7QUFFdEIsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDO0FBQzNCLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQztBQUs1QixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUM7QUFDeEMsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDO0FBQ2YsTUFBTSxHQUFHLEdBQUcsU0FBUyxDQUFDO0FBRXRCLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFDO0FBQzdCLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxDQUFDO0FBQzlCLE1BQU0saUJBQWlCLEdBQUcsbUJBQW1CLENBQUM7QUFDOUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLENBQUM7QUFDN0IsTUFBTSxVQUFVLEdBQUcsaUJBQWlCLEdBQUcsa0JBQWtCLENBQUM7QUFXMUQsTUFBTSxVQUFVLG1CQUFtQixDQUFDLElBQVk7SUFDOUMsTUFBTSxlQUFlLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxFQUFFLG1CQUFtQixDQUFDLENBQUM7SUFDckUsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ2hELE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxFQUFFLEdBQUcsU0FBUyxDQUFDLENBQUM7SUFFMUMsT0FBTyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENB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","import * as ibanUtil from \"./ibanUtil\";\nimport { BbanStructure } from \"./bbanStructure\";\nimport { PartType } from \"./structurePart\";\nimport { randInt } from \"./randInt\";\nimport { UnsupportedCountryException, FormatViolation, FormatException } from \"./exceptions\";\nimport { IBAN } from \"./iban\";\nexport class IBANBuilder {\n    countryCode(countryCode) {\n        this.countryCodeValue = countryCode;\n        return this;\n    }\n    bankCode(bankCode) {\n        this.bankCodeValue = bankCode;\n        return this;\n    }\n    branchCode(branchCode) {\n        this.branchCodeValue = branchCode;\n        return this;\n    }\n    accountNumber(accountNumber) {\n        this.accountNumberValue = accountNumber;\n        return this;\n    }\n    nationalCheckDigit(nationalCheckDigit) {\n        this.nationalCheckDigitValue = nationalCheckDigit;\n        return this;\n    }\n    branchCheckDigit(branchCheckDigit) {\n        this.branchCheckDigitValue = branchCheckDigit;\n        return this;\n    }\n    accountType(accountType) {\n        this.accountTypeValue = accountType;\n        return this;\n    }\n    ownerAccountType(ownerAccountType) {\n        this.ownerAccountTypeValue = ownerAccountType;\n        return this;\n    }\n    identificationNumber(identificationNumber) {\n        this.identificationNumberValue = identificationNumber;\n        return this;\n    }\n    build(fillRandom = true, validate = true) {\n        if (fillRandom && this.countryCodeValue == null) {\n            const countryCodes = BbanStructure.supportedCountries();\n            this.countryCodeValue = countryCodes[randInt(countryCodes.length)];\n        }\n        const structure = BbanStructure.forCountry(this.countryCodeValue);\n        if (structure === null) {\n            throw new Error(\"shouldn't happen\");\n        }\n        this.fillMissingFieldsRandomly(fillRandom);\n        const formattedIban = this.formatIban();\n        const checkDigit = ibanUtil.calculateCheckDigit(formattedIban);\n        const ibanValue = ibanUtil.replaceCheckDigit(formattedIban, checkDigit);\n        if (validate) {\n            ibanUtil.validate(ibanValue);\n        }\n        return new IBAN(ibanValue);\n    }\n    formatBban() {\n        const parts = [];\n        const structure = BbanStructure.forCountry(this.countryCodeValue);\n        if (structure === null) {\n            throw new UnsupportedCountryException(\"Country code is not supported.\", this.countryCodeValue);\n        }\n        for (const part of structure.getParts()) {\n            switch (part.getPartType()) {\n                case PartType.BANK_CODE:\n                    if (typeof this.bankCodeValue === \"string\") {\n                        parts.push(this.bankCodeValue);\n                    }\n                    break;\n                case PartType.BRANCH_CODE:\n                    if (typeof this.branchCodeValue === \"string\") {\n                        parts.push(this.branchCodeValue);\n                    }\n                    break;\n                case PartType.BRANCH_CHECK_DIGIT:\n                    if (typeof this.branchCheckDigitValue === \"string\") {\n                        parts.push(this.branchCheckDigitValue);\n                    }\n                    break;\n                case PartType.ACCOUNT_NUMBER:\n                    if (typeof this.accountNumberValue === \"string\") {\n                        parts.push(this.accountNumberValue);\n                    }\n                    break;\n                case PartType.NATIONAL_CHECK_DIGIT:\n                    if (typeof this.nationalCheckDigitValue === \"string\") {\n                        parts.push(this.nationalCheckDigitValue);\n                    }\n                    break;\n                case PartType.ACCOUNT_TYPE:\n                    if (typeof this.accountTypeValue === \"string\") {\n                        parts.push(this.accountTypeValue);\n                    }\n                    break;\n                case PartType.OWNER_ACCOUNT_NUMBER:\n                    if (typeof this.ownerAccountTypeValue === \"string\") {\n                        parts.push(this.ownerAccountTypeValue);\n                    }\n                    break;\n                case PartType.IDENTIFICATION_NUMBER:\n                    if (typeof this.identificationNumberValue === \"string\") {\n                        parts.push(this.identificationNumberValue);\n                    }\n                    break;\n            }\n        }\n        return parts.join(\"\");\n    }\n    formatIban() {\n        return `${this.countryCodeValue}${ibanUtil.DEFAULT_CHECK_DIGIT}${this.formatBban()}`;\n    }\n    fillMissingFieldsRandomly(fillRandom) {\n        const structure = BbanStructure.forCountry(this.countryCodeValue);\n        if (structure == null) {\n            throw new UnsupportedCountryException(\"Country code is not supported.\", this.countryCodeValue);\n        }\n        let needCheckDigit = false;\n        for (const entry of structure.getParts()) {\n            switch (entry.getPartType()) {\n                case PartType.BANK_CODE:\n                    if (!this.bankCodeValue) {\n                        this.bankCodeValue = entry.generate(\"\", structure);\n                    }\n                    else if (!fillRandom) {\n                        throw new FormatException(FormatViolation.NOT_NULL, \"bankCode is required; it cannot be null\");\n                    }\n                    break;\n                case PartType.BRANCH_CODE:\n                    if (!this.branchCodeValue) {\n                        this.branchCodeValue = entry.generate(\"\", structure);\n                    }\n                    else if (!fillRandom) {\n                        throw new FormatException(FormatViolation.NOT_NULL, \"branchCode is required; it cannot be null\");\n                    }\n                    break;\n                case PartType.BRANCH_CHECK_DIGIT:\n                    if (!this.branchCheckDigitValue) {\n                        this.branchCheckDigitValue = entry.generate(\"\", structure);\n                    }\n                    else if (!fillRandom) {\n                        throw new FormatException(FormatViolation.NOT_NULL, \"branchCheckDigit is required; it cannot be null\");\n                    }\n                    break;\n                case PartType.ACCOUNT_NUMBER:\n                    if (!this.accountNumberValue) {\n                        this.accountNumberValue = entry.generate(\"\", structure);\n                    }\n                    else if (!fillRandom) {\n                        throw new FormatException(FormatViolation.NOT_NULL, \"accountNumber is required; it cannot be null\");\n                    }\n                    break;\n                case PartType.NATIONAL_CHECK_DIGIT:\n                    if (!this.nationalCheckDigitValue) {\n                        needCheckDigit = true;\n                        this.nationalCheckDigitValue = \"\".padStart(entry.getLength(), \"0\");\n                    }\n                    break;\n                case PartType.ACCOUNT_TYPE:\n                    if (!this.accountTypeValue) {\n                        this.accountTypeValue = entry.generate(\"\", structure);\n                    }\n                    else if (!fillRandom) {\n                        throw new FormatException(FormatViolation.NOT_NULL, \"accountType is required; it cannot be null\");\n                    }\n                    break;\n                case PartType.OWNER_ACCOUNT_NUMBER:\n                    if (!this.ownerAccountTypeValue) {\n                        this.ownerAccountTypeValue = entry.generate(\"\", structure);\n                    }\n                    else if (!fillRandom) {\n                        throw new FormatException(FormatViolation.NOT_NULL, \"ownerAccountType is required; it cannot be null\");\n                    }\n                    break;\n                case PartType.IDENTIFICATION_NUMBER:\n                    if (!this.identificationNumberValue) {\n                        this.identificationNumberValue = entry.generate(\"\", structure);\n                    }\n                    else if (!fillRandom) {\n                        throw new FormatException(FormatViolation.NOT_NULL, \"indentificationNumber is required; it cannot be null\");\n                    }\n                    break;\n            }\n        }\n        if (needCheckDigit) {\n            for (const entry of structure.getParts()) {\n                if (entry.getPartType() === PartType.NATIONAL_CHECK_DIGIT) {\n                    const bban = this.formatBban();\n                    this.nationalCheckDigitValue = entry.generate(bban, structure);\n                }\n            }\n        }\n    }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWJhbkJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaWJhbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLFFBQVEsTUFBTSxZQUFZLENBQUM7QUFDdkMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzdGLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFLOUIsTUFBTSxPQUFPLFdBQVc7SUE4QnRCLFdBQVcsQ0FBQyxXQUF3QjtRQUNsQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsV0FBVyxDQUFDO1FBQ3BDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQVFELFFBQVEsQ0FBQyxRQUFnQjtRQUN2QixJQUFJLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFRRCxVQUFVLENBQUMsVUFBa0I7UUFDM0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxVQUFVLENBQUM7UUFDbEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBUUQsYUFBYSxDQUFDLGFBQXFCO1FBQ2pDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxhQUFhLENBQUM7UUFDeEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBUUQsa0JBQWtCLENBQUMsa0JBQTBCO1FBQzNDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxrQkFBa0IsQ0FBQztRQUNsRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFRRCxnQkFBZ0IsQ0FBQyxnQkFBd0I7UUFDdkMsSUFBSSxDQUFDLHFCQUFx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","import * as ibanUtil from \"./ibanUtil\";\nimport { countryByCode, CountryCode } from \"./country\";\nimport { IBANBuilder } from \"./ibanBuilder\";\nconst NON_ALPHANUM = /[^a-z0-9]/ig;\nconst samples = {\n    AD: \"AD1200012030200359100100\",\n    AE: \"AE070331234567890123456\",\n    AL: \"AL47212110090000000235698741\",\n    AT: \"AT611904300234573201\",\n    AZ: \"AZ21NABZ00000000137010001944\",\n    BA: \"BA391990440001200279\",\n    BE: \"BE68539007547034\",\n    BG: \"BG80BNBG96611020345678\",\n    BH: \"BH67BMAG00001299123456\",\n    BR: \"BR9700360305000010009795493P1\",\n    BY: \"BY13NBRB3600900000002Z00AB00\",\n    CH: \"CH9300762011623852957\",\n    CR: \"CR05015202001026284066\",\n    CY: \"CY17002001280000001200527600\",\n    CZ: \"CZ6508000000192000145399\",\n    DE: \"DE89370400440532013000\",\n    DK: \"DK5000400440116243\",\n    DO: \"DO28BAGR00000001212453611324\",\n    EE: \"EE382200221020145685\",\n    ES: \"ES9121000418450200051332\",\n    FI: \"FI2112345600000785\",\n    FO: \"FO6264600001631634\",\n    FR: \"FR1420041010050500013M02606\",\n    GB: \"GB29NWBK60161331926819\",\n    GE: \"GE29NB0000000101904917\",\n    GI: \"GI75NWBK000000007099453\",\n    GL: \"GL8964710001000206\",\n    GR: \"GR1601101250000000012300695\",\n    GT: \"GT82TRAJ01020000001210029690\",\n    HR: \"HR1210010051863000160\",\n    HU: \"HU42117730161111101800000000\",\n    IE: \"IE29AIBK93115212345678\",\n    IL: \"IL620108000000099999999\",\n    IQ: \"IQ98NBIQ850123456789012\",\n    IS: \"IS140159260076545510730339\",\n    IT: \"IT60X0542811101000000123456\",\n    JO: \"JO94CBJO0010000000000131000302\",\n    KW: \"KW81CBKU0000000000001234560101\",\n    KZ: \"KZ86125KZT5004100100\",\n    LB: \"LB62099900000001001901229114\",\n    LC: \"LC07HEMM000100010012001200013015\",\n    LI: \"LI21088100002324013AA\",\n    LT: \"LT121000011101001000\",\n    LU: \"LU280019400644750000\",\n    LV: \"LV80BANK0000435195001\",\n    MC: \"MC5811222000010123456789030\",\n    MD: \"MD24AG000225100013104168\",\n    ME: \"ME25505000012345678951\",\n    MK: \"MK07250120000058984\",\n    MR: \"MR1300020001010000123456753\",\n    MT: \"MT84MALT011000012345MTLCAST001S\",\n    MU: \"MU17BOMM0101101030300200000MUR\",\n    NL: \"NL91ABNA0417164300\",\n    NO: \"NO9386011117947\",\n    PK: \"PK36SCBL0000001123456702\",\n    PL: \"PL61109010140000071219812874\",\n    PS: \"PS92PALS000000000400123456702\",\n    PT: \"PT50000201231234567890154\",\n    QA: \"QA58DOHB00001234567890ABCDEFG\",\n    RO: \"RO49AAAA1B31007593840000\",\n    RS: \"RS35260005601001611379\",\n    SA: \"SA0380000000608010167519\",\n    SC: \"SC18SSCB11010000000000001497USD\",\n    SE: \"SE4550000000058398257466\",\n    SI: \"SI56263300012039086\",\n    SK: \"SK3112000000198742637541\",\n    SM: \"SM86U0322509800000000270100\",\n    ST: \"ST68000100010051845310112\",\n    SV: \"SV62CENR00000000000000700025\",\n    TL: \"TL380080012345678910157\",\n    TN: \"TN5910006035183598478831\",\n    TR: \"TR330006100519786457841326\",\n    UA: \"UA213223130000026007233566001\",\n    VA: \"VA59001123000012345678\",\n    VG: \"VG96VPVG0000012345678901\",\n    XK: \"XK051212012345678906\",\n    AO: \"AO69123456789012345678901\",\n    BF: \"BF2312345678901234567890123\",\n    BI: \"BI41123456789012\",\n    BJ: \"BJ11B00610100400271101192591\",\n    CF: \"CF4220001000010120069700160\",\n    CI: \"CI93CI0080111301134291200589\",\n    CM: \"CM9012345678901234567890123\",\n    CV: \"CV30123456789012345678901\",\n    DJ: \"DJ2110002010010409943020008\",\n    DZ: \"DZ8612345678901234567890\",\n    GQ: \"GQ7050002001003715228190196\",\n    HN: \"HN54PISA00000000000000123124\",\n    IR: \"IR861234568790123456789012\",\n    MG: \"MG1812345678901234567890123\",\n    ML: \"ML15A12345678901234567890123\",\n    MZ: \"MZ25123456789012345678901\",\n    SN: \"SN52A12345678901234567890123\",\n    KM: \"KM4600005000010010904400137\",\n    TD: \"TD8960002000010271091600153\",\n    CG: \"CG3930011000101013451300019\",\n    EG: \"EG800002000156789012345180002\",\n    GA: \"GA2140021010032001890020126\",\n    MA: \"MA64011519000001205000534921\",\n    NI: \"NI92BAMC000000000000000003123123\",\n    NE: \"NE58NE0380100100130305000268\",\n    TG: \"TG53TG0090604310346500400070\",\n};\nexport class IBAN {\n    constructor(iban) {\n        const value = IBAN.electronicFormat(iban);\n        ibanUtil.validate(value);\n        this.value = value;\n    }\n    getCountryCode() {\n        return countryByCode(ibanUtil.getCountryCode(this.value));\n    }\n    getCheckDigit() {\n        return ibanUtil.getCheckDigit(this.value);\n    }\n    getAccountNumber() {\n        return ibanUtil.getAccountNumber(this.value);\n    }\n    getBankCode() {\n        return ibanUtil.getBankCode(this.value);\n    }\n    getBranchCode() {\n        return ibanUtil.getBranchCode(this.value);\n    }\n    getNationalCheckDigit() {\n        return ibanUtil.getNationalCheckDigit(this.value);\n    }\n    getBranchCheckDigit() {\n        return ibanUtil.getBranchCheckDigit(this.value);\n    }\n    getCurrencyType() {\n        return ibanUtil.getCurrencyType(this.value);\n    }\n    getAccountType() {\n        return ibanUtil.getAccountType(this.value);\n    }\n    getOwnerAccountType() {\n        return ibanUtil.getOwnerAccountType(this.value);\n    }\n    getIdentificationNumber() {\n        return ibanUtil.getIdentificationNumber(this.value);\n    }\n    getBban() {\n        return ibanUtil.getBban(this.value);\n    }\n    toString() {\n        return this.value;\n    }\n    toFormattedString() {\n        return ibanUtil.toFormattedString(this.value);\n    }\n    static isValid(iban) {\n        try {\n            ibanUtil.validate(IBAN.electronicFormat(iban));\n        }\n        catch (_a) {\n            return false;\n        }\n        return true;\n    }\n    static toBBAN(iban, separator = \" \") {\n        const clean = IBAN.electronicFormat(iban);\n        ibanUtil.validate(clean);\n        return ibanUtil.toFormattedStringBBAN(clean, separator);\n    }\n    static fromBBAN(countryCode, bban) {\n        ibanUtil.validateBban(countryCode, IBAN.electronicFormat(bban));\n        const iban = `${countryCode}00${bban}`;\n        const checkDigit = ibanUtil.calculateCheckDigit(iban);\n        return ibanUtil.replaceCheckDigit(iban, checkDigit);\n    }\n    static isValidBBAN(countryCode, bban) {\n        try {\n            ibanUtil.validateBban(countryCode, IBAN.electronicFormat(bban));\n        }\n        catch (_a) {\n            return false;\n        }\n        return true;\n    }\n    static printFormat(iban, separator = \" \") {\n        return ibanUtil.toFormattedString(iban, separator);\n    }\n    static electronicFormat(iban) {\n        return iban.replace(NON_ALPHANUM, \"\").toUpperCase();\n    }\n    static random(cc) {\n        if (cc !== undefined) {\n            return new IBANBuilder().countryCode(cc).build();\n        }\n        return new IBANBuilder().build();\n    }\n    static sample(cc) {\n        const s = samples[cc];\n        return s !== undefined ? s : samples[CountryCode.DE];\n    }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWJhbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pYmFuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxRQUFRLE1BQU0sWUFBWSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHNUMsTUFBTSxZQUFZLEdBQUcsYUFBYSxDQUFDO0FBRW5DLE1BQU0sT0FBTyxHQUEyQjtJQUN0QyxFQUFFLEVBQUUsMEJBQTBCO0lBQzlCLEVBQUUsRUFBRSx5QkFBeUI7SUFDN0IsRUFBRSxFQUFFLDhCQUE4QjtJQUNsQyxFQUFFLEVBQUUsc0JBQXNCO0lBQzFCLEVBQUUsRUFBRSw4QkFBOEI7SUFDbEMsRUFBRSxFQUFFLHNCQUFzQjtJQUMxQixFQUFFLEVBQUUsa0JBQWtCO0lBQ3RCLEVBQUUsRUFBRSx3QkFBd0I7SUFDNUIsRUFBRSxFQUFFLHdCQUF3QjtJQUM1QixFQUFFLEVBQUUsK0JBQStCO0lBQ25DLEVBQUUsRUFBRSw4QkFBOEI7SUFDbEMsRUFBRSxFQUFFLHVCQUF1QjtJQUMzQixFQUFFLEVBQUUsd0JBQXdCO0lBQzVCLEVBQUUsRUFBRSw4QkFBOEI7SUFDbEMsRUFBRSxFQUFFLDBCQUEwQjtJQUM5QixFQUFFLEVBQUUsd0JBQXdCO0lBQzVCLEVBQUUsRUFBRSxvQkFBb0I7SUFDeEIsRUFBRSxFQUFFLDhCQUE4QjtJQUNsQyxFQUFFLEVBQUUsc0JBQXNCO0lBQzFCLEVBQUUsRUFBRSwwQkFBMEI7SUFDOUIsRUFBRSxFQUFFLG9CQUFvQjtJQUN4QixFQUFFLEVBQUUsb0JBQW9CO0lBQ3hCLEVBQUUsRUFBRSw2QkFBNkI7SUFDakMsRUFBRSxFQUFFLHdCQUF3QjtJQUM1QixFQUFFLEVBQUUsd0JBQXdCO0lBQzVCLEVBQUUsRUFBRSx5QkFBeUI7SUFDN0IsRUFBRSxFQUFFLG9CQUFv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","/*!\n * validate.js 0.13.1\n *\n * (c) 2013-2019 Nicklas Ansman, 2013 Wrapp\n * Validate.js may be freely distributed under the MIT license.\n * For all details and documentation:\n * http://validatejs.org/\n */\n\n(function(exports, module, define) {\n  \"use strict\";\n\n  // The main function that calls the validators specified by the constraints.\n  // The options are the following:\n  //   - format (string) - An option that controls how the returned value is formatted\n  //     * flat - Returns a flat array of just the error messages\n  //     * grouped - Returns the messages grouped by attribute (default)\n  //     * detailed - Returns an array of the raw validation data\n  //   - fullMessages (boolean) - If `true` (default) the attribute name is prepended to the error.\n  //\n  // Please note that the options are also passed to each validator.\n  var validate = function(attributes, constraints, options) {\n    options = v.extend({}, v.options, options);\n\n    var results = v.runValidations(attributes, constraints, options)\n      , attr\n      , validator;\n\n    if (results.some(function(r) { return v.isPromise(r.error); })) {\n      throw new Error(\"Use validate.async if you want support for promises\");\n    }\n    return validate.processValidationResults(results, options);\n  };\n\n  var v = validate;\n\n  // Copies over attributes from one or more sources to a single destination.\n  // Very much similar to underscore's extend.\n  // The first argument is the target object and the remaining arguments will be\n  // used as sources.\n  v.extend = function(obj) {\n    [].slice.call(arguments, 1).forEach(function(source) {\n      for (var attr in source) {\n        obj[attr] = source[attr];\n      }\n    });\n    return obj;\n  };\n\n  v.extend(validate, {\n    // This is the version of the library as a semver.\n    // The toString function will allow it to be coerced into a string\n    version: {\n      major: 0,\n      minor: 13,\n      patch: 1,\n      metadata: null,\n      toString: function() {\n        var version = v.format(\"%{major}.%{minor}.%{patch}\", v.version);\n        if (!v.isEmpty(v.version.metadata)) {\n          version += \"+\" + v.version.metadata;\n        }\n        return version;\n      }\n    },\n\n    // Below is the dependencies that are used in validate.js\n\n    // The constructor of the Promise implementation.\n    // If you are using Q.js, RSVP or any other A+ compatible implementation\n    // override this attribute to be the constructor of that promise.\n    // Since jQuery promises aren't A+ compatible they won't work.\n    Promise: typeof Promise !== \"undefined\" ? Promise : /* istanbul ignore next */ null,\n\n    EMPTY_STRING_REGEXP: /^\\s*$/,\n\n    // Runs the validators specified by the constraints object.\n    // Will return an array of the format:\n    //     [{attribute: \"<attribute name>\", error: \"<validation result>\"}, ...]\n    runValidations: function(attributes, constraints, options) {\n      var results = []\n        , attr\n        , validatorName\n        , value\n        , validators\n        , validator\n        , validatorOptions\n        , error;\n\n      if (v.isDomElement(attributes) || v.isJqueryElement(attributes)) {\n        attributes = v.collectFormValues(attributes);\n      }\n\n      // Loops through each constraints, finds the correct validator and run it.\n      for (attr in constraints) {\n        value = v.getDeepObjectValue(attributes, attr);\n        // This allows the constraints for an attribute to be a function.\n        // The function will be called with the value, attribute name, the complete dict of\n        // attributes as well as the options and constraints passed in.\n        // This is useful when you want to have different\n        // validations depending on the attribute value.\n        validators = v.result(constraints[attr], value, attributes, attr, options, constraints);\n\n        for (validatorName in validators) {\n          validator = v.validators[validatorName];\n\n          if (!validator) {\n            error = v.format(\"Unknown validator %{name}\", {name: validatorName});\n            throw new Error(error);\n          }\n\n          validatorOptions = validators[validatorName];\n          // This allows the options to be a function. The function will be\n          // called with the value, attribute name, the complete dict of\n          // attributes as well as the options and constraints passed in.\n          // This is useful when you want to have different\n          // validations depending on the attribute value.\n          validatorOptions = v.result(validatorOptions, value, attributes, attr, options, constraints);\n          if (!validatorOptions) {\n            continue;\n          }\n          results.push({\n            attribute: attr,\n            value: value,\n            validator: validatorName,\n            globalOptions: options,\n            attributes: attributes,\n            options: validatorOptions,\n            error: validator.call(validator,\n                value,\n                validatorOptions,\n                attr,\n                attributes,\n                options)\n          });\n        }\n      }\n\n      return results;\n    },\n\n    // Takes the output from runValidations and converts it to the correct\n    // output format.\n    processValidationResults: function(errors, options) {\n      errors = v.pruneEmptyErrors(errors, options);\n      errors = v.expandMultipleErrors(errors, options);\n      errors = v.convertErrorMessages(errors, options);\n\n      var format = options.format || \"grouped\";\n\n      if (typeof v.formatters[format] === 'function') {\n        errors = v.formatters[format](errors);\n      } else {\n        throw new Error(v.format(\"Unknown format %{format}\", options));\n      }\n\n      return v.isEmpty(errors) ? undefined : errors;\n    },\n\n    // Runs the validations with support for promises.\n    // This function will return a promise that is settled when all the\n    // validation promises have been completed.\n    // It can be called even if no validations returned a promise.\n    async: function(attributes, constraints, options) {\n      options = v.extend({}, v.async.options, options);\n\n      var WrapErrors = options.wrapErrors || function(errors) {\n        return errors;\n      };\n\n      // Removes unknown attributes\n      if (options.cleanAttributes !== false) {\n        attributes = v.cleanAttributes(attributes, constraints);\n      }\n\n      var results = v.runValidations(attributes, constraints, options);\n\n      return new v.Promise(function(resolve, reject) {\n        v.waitForResults(results).then(function() {\n          var errors = v.processValidationResults(results, options);\n          if (errors) {\n            reject(new WrapErrors(errors, options, attributes, constraints));\n          } else {\n            resolve(attributes);\n          }\n        }, function(err) {\n          reject(err);\n        });\n      });\n    },\n\n    single: function(value, constraints, options) {\n      options = v.extend({}, v.single.options, options, {\n        format: \"flat\",\n        fullMessages: false\n      });\n      return v({single: value}, {single: constraints}, options);\n    },\n\n    // Returns a promise that is resolved when all promises in the results array\n    // are settled. The promise returned from this function is always resolved,\n    // never rejected.\n    // This function modifies the input argument, it replaces the promises\n    // with the value returned from the promise.\n    waitForResults: function(results) {\n      // Create a sequence of all the results starting with a resolved promise.\n      return results.reduce(function(memo, result) {\n        // If this result isn't a promise skip it in the sequence.\n        if (!v.isPromise(result.error)) {\n          return memo;\n        }\n\n        return memo.then(function() {\n          return result.error.then(function(error) {\n            result.error = error || null;\n          });\n        });\n      }, new v.Promise(function(r) { r(); })); // A resolved promise\n    },\n\n    // If the given argument is a call: function the and: function return the value\n    // otherwise just return the value. Additional arguments will be passed as\n    // arguments to the function.\n    // Example:\n    // ```\n    // result('foo') // 'foo'\n    // result(Math.max, 1, 2) // 2\n    // ```\n    result: function(value) {\n      var args = [].slice.call(arguments, 1);\n      if (typeof value === 'function') {\n        value = value.apply(null, args);\n      }\n      return value;\n    },\n\n    // Checks if the value is a number. This function does not consider NaN a\n    // number like many other `isNumber` functions do.\n    isNumber: function(value) {\n      return typeof value === 'number' && !isNaN(value);\n    },\n\n    // Returns false if the object is not a function\n    isFunction: function(value) {\n      return typeof value === 'function';\n    },\n\n    // A simple check to verify that the value is an integer. Uses `isNumber`\n    // and a simple modulo check.\n    isInteger: function(value) {\n      return v.isNumber(value) && value % 1 === 0;\n    },\n\n    // Checks if the value is a boolean\n    isBoolean: function(value) {\n      return typeof value === 'boolean';\n    },\n\n    // Uses the `Object` function to check if the given argument is an object.\n    isObject: function(obj) {\n      return obj === Object(obj);\n    },\n\n    // Simply checks if the object is an instance of a date\n    isDate: function(obj) {\n      return obj instanceof Date;\n    },\n\n    // Returns false if the object is `null` of `undefined`\n    isDefined: function(obj) {\n      return obj !== null && obj !== undefined;\n    },\n\n    // Checks if the given argument is a promise. Anything with a `then`\n    // function is considered a promise.\n    isPromise: function(p) {\n      return !!p && v.isFunction(p.then);\n    },\n\n    isJqueryElement: function(o) {\n      return o && v.isString(o.jquery);\n    },\n\n    isDomElement: function(o) {\n      if (!o) {\n        return false;\n      }\n\n      if (!o.querySelectorAll || !o.querySelector) {\n        return false;\n      }\n\n      if (v.isObject(document) && o === document) {\n        return true;\n      }\n\n      // http://stackoverflow.com/a/384380/699304\n      /* istanbul ignore else */\n      if (typeof HTMLElement === \"object\") {\n        return o instanceof HTMLElement;\n      } else {\n        return o &&\n          typeof o === \"object\" &&\n          o !== null &&\n          o.nodeType === 1 &&\n          typeof o.nodeName === \"string\";\n      }\n    },\n\n    isEmpty: function(value) {\n      var attr;\n\n      // Null and undefined are empty\n      if (!v.isDefined(value)) {\n        return true;\n      }\n\n      // functions are non empty\n      if (v.isFunction(value)) {\n        return false;\n      }\n\n      // Whitespace only strings are empty\n      if (v.isString(value)) {\n        return v.EMPTY_STRING_REGEXP.test(value);\n      }\n\n      // For arrays we use the length property\n      if (v.isArray(value)) {\n        return value.length === 0;\n      }\n\n      // Dates have no attributes but aren't empty\n      if (v.isDate(value)) {\n        return false;\n      }\n\n      // If we find at least one property we consider it non empty\n      if (v.isObject(value)) {\n        for (attr in value) {\n          return false;\n        }\n        return true;\n      }\n\n      return false;\n    },\n\n    // Formats the specified strings with the given values like so:\n    // ```\n    // format(\"Foo: %{foo}\", {foo: \"bar\"}) // \"Foo bar\"\n    // ```\n    // If you want to write %{...} without having it replaced simply\n    // prefix it with % like this `Foo: %%{foo}` and it will be returned\n    // as `\"Foo: %{foo}\"`\n    format: v.extend(function(str, vals) {\n      if (!v.isString(str)) {\n        return str;\n      }\n      return str.replace(v.format.FORMAT_REGEXP, function(m0, m1, m2) {\n        if (m1 === '%') {\n          return \"%{\" + m2 + \"}\";\n        } else {\n          return String(vals[m2]);\n        }\n      });\n    }, {\n      // Finds %{key} style patterns in the given string\n      FORMAT_REGEXP: /(%?)%\\{([^\\}]+)\\}/g\n    }),\n\n    // \"Prettifies\" the given string.\n    // Prettifying means replacing [.\\_-] with spaces as well as splitting\n    // camel case words.\n    prettify: function(str) {\n      if (v.isNumber(str)) {\n        // If there are more than 2 decimals round it to two\n        if ((str * 100) % 1 === 0) {\n          return \"\" + str;\n        } else {\n          return parseFloat(Math.round(str * 100) / 100).toFixed(2);\n        }\n      }\n\n      if (v.isArray(str)) {\n        return str.map(function(s) { return v.prettify(s); }).join(\", \");\n      }\n\n      if (v.isObject(str)) {\n        if (!v.isDefined(str.toString)) {\n          return JSON.stringify(str);\n        }\n\n        return str.toString();\n      }\n\n      // Ensure the string is actually a string\n      str = \"\" + str;\n\n      return str\n        // Splits keys separated by periods\n        .replace(/([^\\s])\\.([^\\s])/g, '$1 $2')\n        // Removes backslashes\n        .replace(/\\\\+/g, '')\n        // Replaces - and - with space\n        .replace(/[_-]/g, ' ')\n        // Splits camel cased words\n        .replace(/([a-z])([A-Z])/g, function(m0, m1, m2) {\n          return \"\" + m1 + \" \" + m2.toLowerCase();\n        })\n        .toLowerCase();\n    },\n\n    stringifyValue: function(value, options) {\n      var prettify = options && options.prettify || v.prettify;\n      return prettify(value);\n    },\n\n    isString: function(value) {\n      return typeof value === 'string';\n    },\n\n    isArray: function(value) {\n      return {}.toString.call(value) === '[object Array]';\n    },\n\n    // Checks if the object is a hash, which is equivalent to an object that\n    // is neither an array nor a function.\n    isHash: function(value) {\n      return v.isObject(value) && !v.isArray(value) && !v.isFunction(value);\n    },\n\n    contains: function(obj, value) {\n      if (!v.isDefined(obj)) {\n        return false;\n      }\n      if (v.isArray(obj)) {\n        return obj.indexOf(value) !== -1;\n      }\n      return value in obj;\n    },\n\n    unique: function(array) {\n      if (!v.isArray(array)) {\n        return array;\n      }\n      return array.filter(function(el, index, array) {\n        return array.indexOf(el) == index;\n      });\n    },\n\n    forEachKeyInKeypath: function(object, keypath, callback) {\n      if (!v.isString(keypath)) {\n        return undefined;\n      }\n\n      var key = \"\"\n        , i\n        , escape = false;\n\n      for (i = 0; i < keypath.length; ++i) {\n        switch (keypath[i]) {\n          case '.':\n            if (escape) {\n              escape = false;\n              key += '.';\n            } else {\n              object = callback(object, key, false);\n              key = \"\";\n            }\n            break;\n\n          case '\\\\':\n            if (escape) {\n              escape = false;\n              key += '\\\\';\n            } else {\n              escape = true;\n            }\n            break;\n\n          default:\n            escape = false;\n            key += keypath[i];\n            break;\n        }\n      }\n\n      return callback(object, key, true);\n    },\n\n    getDeepObjectValue: function(obj, keypath) {\n      if (!v.isObject(obj)) {\n        return undefined;\n      }\n\n      return v.forEachKeyInKeypath(obj, keypath, function(obj, key) {\n        if (v.isObject(obj)) {\n          return obj[key];\n        }\n      });\n    },\n\n    // This returns an object with all the values of the form.\n    // It uses the input name as key and the value as value\n    // So for example this:\n    // <input type=\"text\" name=\"email\" value=\"foo@bar.com\" />\n    // would return:\n    // {email: \"foo@bar.com\"}\n    collectFormValues: function(form, options) {\n      var values = {}\n        , i\n        , j\n        , input\n        , inputs\n        , option\n        , value;\n\n      if (v.isJqueryElement(form)) {\n        form = form[0];\n      }\n\n      if (!form) {\n        return values;\n      }\n\n      options = options || {};\n\n      inputs = form.querySelectorAll(\"input[name], textarea[name]\");\n      for (i = 0; i < inputs.length; ++i) {\n        input = inputs.item(i);\n\n        if (v.isDefined(input.getAttribute(\"data-ignored\"))) {\n          continue;\n        }\n\n        var name = input.name.replace(/\\./g, \"\\\\\\\\.\");\n        value = v.sanitizeFormValue(input.value, options);\n        if (input.type === \"number\") {\n          value = value ? +value : null;\n        } else if (input.type === \"checkbox\") {\n          if (input.attributes.value) {\n            if (!input.checked) {\n              value = values[name] || null;\n            }\n          } else {\n            value = input.checked;\n          }\n        } else if (input.type === \"radio\") {\n          if (!input.checked) {\n            value = values[name] || null;\n          }\n        }\n        values[name] = value;\n      }\n\n      inputs = form.querySelectorAll(\"select[name]\");\n      for (i = 0; i < inputs.length; ++i) {\n        input = inputs.item(i);\n        if (v.isDefined(input.getAttribute(\"data-ignored\"))) {\n          continue;\n        }\n\n        if (input.multiple) {\n          value = [];\n          for (j in input.options) {\n            option = input.options[j];\n             if (option && option.selected) {\n              value.push(v.sanitizeFormValue(option.value, options));\n            }\n          }\n        } else {\n          var _val = typeof input.options[input.selectedIndex] !== 'undefined' ? input.options[input.selectedIndex].value : /* istanbul ignore next */ '';\n          value = v.sanitizeFormValue(_val, options);\n        }\n        values[input.name] = value;\n      }\n\n      return values;\n    },\n\n    sanitizeFormValue: function(value, options) {\n      if (options.trim && v.isString(value)) {\n        value = value.trim();\n      }\n\n      if (options.nullify !== false && value === \"\") {\n        return null;\n      }\n      return value;\n    },\n\n    capitalize: function(str) {\n      if (!v.isString(str)) {\n        return str;\n      }\n      return str[0].toUpperCase() + str.slice(1);\n    },\n\n    // Remove all errors who's error attribute is empty (null or undefined)\n    pruneEmptyErrors: function(errors) {\n      return errors.filter(function(error) {\n        return !v.isEmpty(error.error);\n      });\n    },\n\n    // In\n    // [{error: [\"err1\", \"err2\"], ...}]\n    // Out\n    // [{error: \"err1\", ...}, {error: \"err2\", ...}]\n    //\n    // All attributes in an error with multiple messages are duplicated\n    // when expanding the errors.\n    expandMultipleErrors: function(errors) {\n      var ret = [];\n      errors.forEach(function(error) {\n        // Removes errors without a message\n        if (v.isArray(error.error)) {\n          error.error.forEach(function(msg) {\n            ret.push(v.extend({}, error, {error: msg}));\n          });\n        } else {\n          ret.push(error);\n        }\n      });\n      return ret;\n    },\n\n    // Converts the error mesages by prepending the attribute name unless the\n    // message is prefixed by ^\n    convertErrorMessages: function(errors, options) {\n      options = options || {};\n\n      var ret = []\n        , prettify = options.prettify || v.prettify;\n      errors.forEach(function(errorInfo) {\n        var error = v.result(errorInfo.error,\n            errorInfo.value,\n            errorInfo.attribute,\n            errorInfo.options,\n            errorInfo.attributes,\n            errorInfo.globalOptions);\n\n        if (!v.isString(error)) {\n          ret.push(errorInfo);\n          return;\n        }\n\n        if (error[0] === '^') {\n          error = error.slice(1);\n        } else if (options.fullMessages !== false) {\n          error = v.capitalize(prettify(errorInfo.attribute)) + \" \" + error;\n        }\n        error = error.replace(/\\\\\\^/g, \"^\");\n        error = v.format(error, {\n          value: v.stringifyValue(errorInfo.value, options)\n        });\n        ret.push(v.extend({}, errorInfo, {error: error}));\n      });\n      return ret;\n    },\n\n    // In:\n    // [{attribute: \"<attributeName>\", ...}]\n    // Out:\n    // {\"<attributeName>\": [{attribute: \"<attributeName>\", ...}]}\n    groupErrorsByAttribute: function(errors) {\n      var ret = {};\n      errors.forEach(function(error) {\n        var list = ret[error.attribute];\n        if (list) {\n          list.push(error);\n        } else {\n          ret[error.attribute] = [error];\n        }\n      });\n      return ret;\n    },\n\n    // In:\n    // [{error: \"<message 1>\", ...}, {error: \"<message 2>\", ...}]\n    // Out:\n    // [\"<message 1>\", \"<message 2>\"]\n    flattenErrorsToArray: function(errors) {\n      return errors\n        .map(function(error) { return error.error; })\n        .filter(function(value, index, self) {\n          return self.indexOf(value) === index;\n        });\n    },\n\n    cleanAttributes: function(attributes, whitelist) {\n      function whitelistCreator(obj, key, last) {\n        if (v.isObject(obj[key])) {\n          return obj[key];\n        }\n        return (obj[key] = last ? true : {});\n      }\n\n      function buildObjectWhitelist(whitelist) {\n        var ow = {}\n          , lastObject\n          , attr;\n        for (attr in whitelist) {\n          if (!whitelist[attr]) {\n            continue;\n          }\n          v.forEachKeyInKeypath(ow, attr, whitelistCreator);\n        }\n        return ow;\n      }\n\n      function cleanRecursive(attributes, whitelist) {\n        if (!v.isObject(attributes)) {\n          return attributes;\n        }\n\n        var ret = v.extend({}, attributes)\n          , w\n          , attribute;\n\n        for (attribute in attributes) {\n          w = whitelist[attribute];\n\n          if (v.isObject(w)) {\n            ret[attribute] = cleanRecursive(ret[attribute], w);\n          } else if (!w) {\n            delete ret[attribute];\n          }\n        }\n        return ret;\n      }\n\n      if (!v.isObject(whitelist) || !v.isObject(attributes)) {\n        return {};\n      }\n\n      whitelist = buildObjectWhitelist(whitelist);\n      return cleanRecursive(attributes, whitelist);\n    },\n\n    exposeModule: function(validate, root, exports, module, define) {\n      if (exports) {\n        if (module && module.exports) {\n          exports = module.exports = validate;\n        }\n        exports.validate = validate;\n      } else {\n        root.validate = validate;\n        if (validate.isFunction(define) && define.amd) {\n          define([], function () { return validate; });\n        }\n      }\n    },\n\n    warn: function(msg) {\n      if (typeof console !== \"undefined\" && console.warn) {\n        console.warn(\"[validate.js] \" + msg);\n      }\n    },\n\n    error: function(msg) {\n      if (typeof console !== \"undefined\" && console.error) {\n        console.error(\"[validate.js] \" + msg);\n      }\n    }\n  });\n\n  validate.validators = {\n    // Presence validates that the value isn't empty\n    presence: function(value, options) {\n      options = v.extend({}, this.options, options);\n      if (options.allowEmpty !== false ? !v.isDefined(value) : v.isEmpty(value)) {\n        return options.message || this.message || \"can't be blank\";\n      }\n    },\n    length: function(value, options, attribute) {\n      // Empty values are allowed\n      if (!v.isDefined(value)) {\n        return;\n      }\n\n      options = v.extend({}, this.options, options);\n\n      var is = options.is\n        , maximum = options.maximum\n        , minimum = options.minimum\n        , tokenizer = options.tokenizer || function(val) { return val; }\n        , err\n        , errors = [];\n\n      value = tokenizer(value);\n      var length = value.length;\n      if(!v.isNumber(length)) {\n        return options.message || this.notValid || \"has an incorrect length\";\n      }\n\n      // Is checks\n      if (v.isNumber(is) && length !== is) {\n        err = options.wrongLength ||\n          this.wrongLength ||\n          \"is the wrong length (should be %{count} characters)\";\n        errors.push(v.format(err, {count: is}));\n      }\n\n      if (v.isNumber(minimum) && length < minimum) {\n        err = options.tooShort ||\n          this.tooShort ||\n          \"is too short (minimum is %{count} characters)\";\n        errors.push(v.format(err, {count: minimum}));\n      }\n\n      if (v.isNumber(maximum) && length > maximum) {\n        err = options.tooLong ||\n          this.tooLong ||\n          \"is too long (maximum is %{count} characters)\";\n        errors.push(v.format(err, {count: maximum}));\n      }\n\n      if (errors.length > 0) {\n        return options.message || errors;\n      }\n    },\n    numericality: function(value, options, attribute, attributes, globalOptions) {\n      // Empty values are fine\n      if (!v.isDefined(value)) {\n        return;\n      }\n\n      options = v.extend({}, this.options, options);\n\n      var errors = []\n        , name\n        , count\n        , checks = {\n            greaterThan:          function(v, c) { return v > c; },\n            greaterThanOrEqualTo: function(v, c) { return v >= c; },\n            equalTo:              function(v, c) { return v === c; },\n            lessThan:             function(v, c) { return v < c; },\n            lessThanOrEqualTo:    function(v, c) { return v <= c; },\n            divisibleBy:          function(v, c) { return v % c === 0; }\n          }\n        , prettify = options.prettify ||\n          (globalOptions && globalOptions.prettify) ||\n          v.prettify;\n\n      // Strict will check that it is a valid looking number\n      if (v.isString(value) && options.strict) {\n        var pattern = \"^-?(0|[1-9]\\\\d*)\";\n        if (!options.onlyInteger) {\n          pattern += \"(\\\\.\\\\d+)?\";\n        }\n        pattern += \"$\";\n\n        if (!(new RegExp(pattern).test(value))) {\n          return options.message ||\n            options.notValid ||\n            this.notValid ||\n            this.message ||\n            \"must be a valid number\";\n        }\n      }\n\n      // Coerce the value to a number unless we're being strict.\n      if (options.noStrings !== true && v.isString(value) && !v.isEmpty(value)) {\n        value = +value;\n      }\n\n      // If it's not a number we shouldn't continue since it will compare it.\n      if (!v.isNumber(value)) {\n        return options.message ||\n          options.notValid ||\n          this.notValid ||\n          this.message ||\n          \"is not a number\";\n      }\n\n      // Same logic as above, sort of. Don't bother with comparisons if this\n      // doesn't pass.\n      if (options.onlyInteger && !v.isInteger(value)) {\n        return options.message ||\n          options.notInteger ||\n          this.notInteger ||\n          this.message ||\n          \"must be an integer\";\n      }\n\n      for (name in checks) {\n        count = options[name];\n        if (v.isNumber(count) && !checks[name](value, count)) {\n          // This picks the default message if specified\n          // For example the greaterThan check uses the message from\n          // this.notGreaterThan so we capitalize the name and prepend \"not\"\n          var key = \"not\" + v.capitalize(name);\n          var msg = options[key] ||\n            this[key] ||\n            this.message ||\n            \"must be %{type} %{count}\";\n\n          errors.push(v.format(msg, {\n            count: count,\n            type: prettify(name)\n          }));\n        }\n      }\n\n      if (options.odd && value % 2 !== 1) {\n        errors.push(options.notOdd ||\n            this.notOdd ||\n            this.message ||\n            \"must be odd\");\n      }\n      if (options.even && value % 2 !== 0) {\n        errors.push(options.notEven ||\n            this.notEven ||\n            this.message ||\n            \"must be even\");\n      }\n\n      if (errors.length) {\n        return options.message || errors;\n      }\n    },\n    datetime: v.extend(function(value, options) {\n      if (!v.isFunction(this.parse) || !v.isFunction(this.format)) {\n        throw new Error(\"Both the parse and format functions needs to be set to use the datetime/date validator\");\n      }\n\n      // Empty values are fine\n      if (!v.isDefined(value)) {\n        return;\n      }\n\n      options = v.extend({}, this.options, options);\n\n      var err\n        , errors = []\n        , earliest = options.earliest ? this.parse(options.earliest, options) : NaN\n        , latest = options.latest ? this.parse(options.latest, options) : NaN;\n\n      value = this.parse(value, options);\n\n      // 86400000 is the number of milliseconds in a day, this is used to remove\n      // the time from the date\n      if (isNaN(value) || options.dateOnly && value % 86400000 !== 0) {\n        err = options.notValid ||\n          options.message ||\n          this.notValid ||\n          \"must be a valid date\";\n        return v.format(err, {value: arguments[0]});\n      }\n\n      if (!isNaN(earliest) && value < earliest) {\n        err = options.tooEarly ||\n          options.message ||\n          this.tooEarly ||\n          \"must be no earlier than %{date}\";\n        err = v.format(err, {\n          value: this.format(value, options),\n          date: this.format(earliest, options)\n        });\n        errors.push(err);\n      }\n\n      if (!isNaN(latest) && value > latest) {\n        err = options.tooLate ||\n          options.message ||\n          this.tooLate ||\n          \"must be no later than %{date}\";\n        err = v.format(err, {\n          date: this.format(latest, options),\n          value: this.format(value, options)\n        });\n        errors.push(err);\n      }\n\n      if (errors.length) {\n        return v.unique(errors);\n      }\n    }, {\n      parse: null,\n      format: null\n    }),\n    date: function(value, options) {\n      options = v.extend({}, options, {dateOnly: true});\n      return v.validators.datetime.call(v.validators.datetime, value, options);\n    },\n    format: function(value, options) {\n      if (v.isString(options) || (options instanceof RegExp)) {\n        options = {pattern: options};\n      }\n\n      options = v.extend({}, this.options, options);\n\n      var message = options.message || this.message || \"is invalid\"\n        , pattern = options.pattern\n        , match;\n\n      // Empty values are allowed\n      if (!v.isDefined(value)) {\n        return;\n      }\n      if (!v.isString(value)) {\n        return message;\n      }\n\n      if (v.isString(pattern)) {\n        pattern = new RegExp(options.pattern, options.flags);\n      }\n      match = pattern.exec(value);\n      if (!match || match[0].length != value.length) {\n        return message;\n      }\n    },\n    inclusion: function(value, options) {\n      // Empty values are fine\n      if (!v.isDefined(value)) {\n        return;\n      }\n      if (v.isArray(options)) {\n        options = {within: options};\n      }\n      options = v.extend({}, this.options, options);\n      if (v.contains(options.within, value)) {\n        return;\n      }\n      var message = options.message ||\n        this.message ||\n        \"^%{value} is not included in the list\";\n      return v.format(message, {value: value});\n    },\n    exclusion: function(value, options) {\n      // Empty values are fine\n      if (!v.isDefined(value)) {\n        return;\n      }\n      if (v.isArray(options)) {\n        options = {within: options};\n      }\n      options = v.extend({}, this.options, options);\n      if (!v.contains(options.within, value)) {\n        return;\n      }\n      var message = options.message || this.message || \"^%{value} is restricted\";\n      if (v.isString(options.within[value])) {\n        value = options.within[value];\n      }\n      return v.format(message, {value: value});\n    },\n    email: v.extend(function(value, options) {\n      options = v.extend({}, this.options, options);\n      var message = options.message || this.message || \"is not a valid email\";\n      // Empty values are fine\n      if (!v.isDefined(value)) {\n        return;\n      }\n      if (!v.isString(value)) {\n        return message;\n      }\n      if (!this.PATTERN.exec(value)) {\n        return message;\n      }\n    }, {\n      PATTERN: /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i\n    }),\n    equality: function(value, options, attribute, attributes, globalOptions) {\n      if (!v.isDefined(value)) {\n        return;\n      }\n\n      if (v.isString(options)) {\n        options = {attribute: options};\n      }\n      options = v.extend({}, this.options, options);\n      var message = options.message ||\n        this.message ||\n        \"is not equal to %{attribute}\";\n\n      if (v.isEmpty(options.attribute) || !v.isString(options.attribute)) {\n        throw new Error(\"The attribute must be a non empty string\");\n      }\n\n      var otherValue = v.getDeepObjectValue(attributes, options.attribute)\n        , comparator = options.comparator || function(v1, v2) {\n          return v1 === v2;\n        }\n        , prettify = options.prettify ||\n          (globalOptions && globalOptions.prettify) ||\n          v.prettify;\n\n      if (!comparator(value, otherValue, options, attribute, attributes)) {\n        return v.format(message, {attribute: prettify(options.attribute)});\n      }\n    },\n    // A URL validator that is used to validate URLs with the ability to\n    // restrict schemes and some domains.\n    url: function(value, options) {\n      if (!v.isDefined(value)) {\n        return;\n      }\n\n      options = v.extend({}, this.options, options);\n\n      var message = options.message || this.message || \"is not a valid url\"\n        , schemes = options.schemes || this.schemes || ['http', 'https']\n        , allowLocal = options.allowLocal || this.allowLocal || false\n        , allowDataUrl = options.allowDataUrl || this.allowDataUrl || false;\n      if (!v.isString(value)) {\n        return message;\n      }\n\n      // https://gist.github.com/dperini/729294\n      var regex =\n        \"^\" +\n        // protocol identifier\n        \"(?:(?:\" + schemes.join(\"|\") + \")://)\" +\n        // user:pass authentication\n        \"(?:\\\\S+(?::\\\\S*)?@)?\" +\n        \"(?:\";\n\n      var tld = \"(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,}))\";\n\n      if (allowLocal) {\n        tld += \"?\";\n      } else {\n        regex +=\n          // IP address exclusion\n          // private & local networks\n          \"(?!(?:10|127)(?:\\\\.\\\\d{1,3}){3})\" +\n          \"(?!(?:169\\\\.254|192\\\\.168)(?:\\\\.\\\\d{1,3}){2})\" +\n          \"(?!172\\\\.(?:1[6-9]|2\\\\d|3[0-1])(?:\\\\.\\\\d{1,3}){2})\";\n      }\n\n      regex +=\n          // IP address dotted notation octets\n          // excludes loopback network 0.0.0.0\n          // excludes reserved space >= 224.0.0.0\n          // excludes network & broacast addresses\n          // (first & last IP address of each class)\n          \"(?:[1-9]\\\\d?|1\\\\d\\\\d|2[01]\\\\d|22[0-3])\" +\n          \"(?:\\\\.(?:1?\\\\d{1,2}|2[0-4]\\\\d|25[0-5])){2}\" +\n          \"(?:\\\\.(?:[1-9]\\\\d?|1\\\\d\\\\d|2[0-4]\\\\d|25[0-4]))\" +\n        \"|\" +\n          // host name\n          \"(?:(?:[a-z\\\\u00a1-\\\\uffff0-9]-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)\" +\n          // domain name\n          \"(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)*\" +\n          tld +\n        \")\" +\n        // port number\n        \"(?::\\\\d{2,5})?\" +\n        // resource path\n        \"(?:[/?#]\\\\S*)?\" +\n      \"$\";\n\n      if (allowDataUrl) {\n        // RFC 2397\n        var mediaType = \"\\\\w+\\\\/[-+.\\\\w]+(?:;[\\\\w=]+)*\";\n        var urlchar = \"[A-Za-z0-9-_.!~\\\\*'();\\\\/?:@&=+$,%]*\";\n        var dataurl = \"data:(?:\"+mediaType+\")?(?:;base64)?,\"+urlchar;\n        regex = \"(?:\"+regex+\")|(?:^\"+dataurl+\"$)\";\n      }\n\n      var PATTERN = new RegExp(regex, 'i');\n      if (!PATTERN.exec(value)) {\n        return message;\n      }\n    },\n    type: v.extend(function(value, originalOptions, attribute, attributes, globalOptions) {\n      if (v.isString(originalOptions)) {\n        originalOptions = {type: originalOptions};\n      }\n\n      if (!v.isDefined(value)) {\n        return;\n      }\n\n      var options = v.extend({}, this.options, originalOptions);\n\n      var type = options.type;\n      if (!v.isDefined(type)) {\n        throw new Error(\"No type was specified\");\n      }\n\n      var check;\n      if (v.isFunction(type)) {\n        check = type;\n      } else {\n        check = this.types[type];\n      }\n\n      if (!v.isFunction(check)) {\n        throw new Error(\"validate.validators.type.types.\" + type + \" must be a function.\");\n      }\n\n      if (!check(value, options, attribute, attributes, globalOptions)) {\n        var message = originalOptions.message ||\n          this.messages[type] ||\n          this.message ||\n          options.message ||\n          (v.isFunction(type) ? \"must be of the correct type\" : \"must be of type %{type}\");\n\n        if (v.isFunction(message)) {\n          message = message(value, originalOptions, attribute, attributes, globalOptions);\n        }\n\n        return v.format(message, {attribute: v.prettify(attribute), type: type});\n      }\n    }, {\n      types: {\n        object: function(value) {\n          return v.isObject(value) && !v.isArray(value);\n        },\n        array: v.isArray,\n        integer: v.isInteger,\n        number: v.isNumber,\n        string: v.isString,\n        date: v.isDate,\n        boolean: v.isBoolean\n      },\n      messages: {}\n    })\n  };\n\n  validate.formatters = {\n    detailed: function(errors) {return errors;},\n    flat: v.flattenErrorsToArray,\n    grouped: function(errors) {\n      var attr;\n\n      errors = v.groupErrorsByAttribute(errors);\n      for (attr in errors) {\n        errors[attr] = v.flattenErrorsToArray(errors[attr]);\n      }\n      return errors;\n    },\n    constraint: function(errors) {\n      var attr;\n      errors = v.groupErrorsByAttribute(errors);\n      for (attr in errors) {\n        errors[attr] = errors[attr].map(function(result) {\n          return result.validator;\n        }).sort();\n      }\n      return errors;\n    }\n  };\n\n  validate.exposeModule(validate, this, exports, module, define);\n}).call(this,\n        typeof exports !== 'undefined' ? /* istanbul ignore next */ exports : null,\n        typeof module !== 'undefined' ? /* istanbul ignore next */ module : null,\n        typeof define !== 'undefined' ? /* istanbul ignore next */ define : null);\n"],"names":["Object","Math","e","t","Error","a","parseInt","String","RegExp","arguments","Promise","isNaN","Date","document","HTMLElement","parseFloat","JSON","i","console","l","c","define"],"mappings":"4FAAW,ECCA,EAYA,ECbA,EFCA,ECCA,EAYA,ECbA,E,kBFCP,CADO,EA2PR,GAAgB,GAAc,CAAC,IA1PlB,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KACpB,EAAY,EAAK,CAAG,KAC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"}