R/fi_FI.R

# person -----------------------------
person_fi_FI = R6Class(
  "person_fi_FI",
  inherit = person_init,
  cloneable = FALSE,
  private = list(
    formats_female = c(
      '{first_name_female} {last_name}',
      '{first_name_female} {last_name}',
      '{first_name_female} {last_name}',
      '{first_name_female} {last_name}',
      '{first_name_female} {last_name}-{last_name}'),

    formats_male = c(
      '{first_name_male} {last_name}',
      '{first_name_male} {last_name}',
      '{first_name_male} {last_name}',
      '{first_name_male} {last_name}',
      '{first_name_male} {last_name}-{last_name}'),

    formats = c(
      '{first_name_female} {last_name}',
      '{first_name_female} {last_name}',
      '{first_name_female} {last_name}',
      '{first_name_female} {last_name}',
      '{first_name_female} {last_name}-{last_name}',
      '{first_name_male} {last_name}',
      '{first_name_male} {last_name}',
      '{first_name_male} {last_name}',
      '{first_name_male} {last_name}',
      '{first_name_male} {last_name}-{last_name}'),


    prefixes = c(
      'Herra', 'hra', 'Rouva', 'rva', 'Tohtori', 'tri', 'prof.', 'arkkit.'),

    suffixes = c('DI', 'PhD', 'MSc', 'BSc'),

    # List of most popular given names in Finland:
    # https://www.avoindata.fi/data/en/dataset/none/resource/d35f8973-53da-4b66-8a49-bc2fee1a2996

    first_names_female = list(
      c("Aada", 0.001877),
      c("Aila", 0.002778),
      c("Aili", 0.001542),
      c("Aino", 0.00803),
      c("Airi", 0.001591),
      c("Aleksandra", 0.002884),
      c("Alexandra", 0.002718),
      c("Alina", 0.002114),
      c("Alisa", 0.001607),
      c("Amanda", 0.004584),
      c("Anita", 0.005061),
      c("Anja", 0.005627),
      c("Anna", 0.010413),
      c("Anna-Liisa", 0.00232),
      c("Anne", 0.007823),
      c("Anneli", 0.0277),
      c("Anni", 0.004397),
      c("Anniina", 0.003366),
      c("Annika", 0.005193),
      c("Annikki", 0.013414),
      c("Annukka", 0.001424),
      c("Anu", 0.003005),
      c("Arja", 0.004539),
      c("Aulikki", 0.002522),
      c("Aune", 0.00208),
      c("Aurora", 0.003709),
      c("Birgitta", 0.003324),
      c("Carita", 0.001574),
      c("Christina", 0.001534),
      c("Eeva", 0.006403),
      c("Eija", 0.00491),
      c("Eila", 0.005377),
      c("Eliisa", 0.00163),
      c("Elina", 0.014353),
      c("Elisa", 0.00424),
      c("Elisabet", 0.005925),
      c("Elisabeth", 0.004305),
      c("Ella", 0.002958),
      c("Ellen", 0.002243),
      c("Elli", 0.002258),
      c("Elsa", 0.002284),
      c("Emilia", 0.014649),
      c("Emma", 0.003571),
      c("Emmi", 0.002183),
      c("Erika", 0.002084),
      c("Essi", 0.001576),
      c("Esteri", 0.001672),
      c("Eveliina", 0.005899),
      c("Hanna", 0.005409),
      c("Hannele", 0.0193),
      c("Heidi", 0.005315),
      c("Helena", 0.028118),
      c("Heli", 0.003711),
      c("Helin\u00e4", 0.002151),
      c("Hellevi", 0.002416),
      c("Helmi", 0.003888),
      c("Helvi", 0.001462),
      c("Henna", 0.002525),
      c("Hilkka", 0.003745),
      c("Hillevi", 0.001577),
      c("Ida", 0.003067),
      c("Iida", 0.003699),
      c("Iiris", 0.001461),
      c("Ilona", 0.004816),
      c("Inkeri", 0.009444),
      c("Irene", 0.005164),
      c("Irja", 0.002691),
      c("Irma", 0.002772),
      c("Irmeli", 0.006537),
      c("Jaana", 0.005125),
      c("Jasmin", 0.001789),
      c("Jenna", 0.002567),
      c("Jenni", 0.004011),
      c("Johanna", 0.025061),
      c("Jonna", 0.002053),
      c("Josefiina", 0.001757),
      c("Julia", 0.004716),
      c("Juulia", 0.001411),
      c("Kaarina", 0.022441),
      c("Kaija", 0.003216),
      c("Kaisa", 0.004424),
      c("Karoliina", 0.006727),
      c("Katariina", 0.010602),
      c("Kati", 0.002463),
      c("Katja", 0.00381),
      c("Katri", 0.00337),
      c("Katriina", 0.004651),
      c("Kerttu", 0.002839),
      c("Kirsi", 0.004856),
      c("Kirsti", 0.003699),
      c("Krista", 0.001465),
      c("Kristiina", 0.016656),
      c("Kristina", 0.002653),
      c("Kyllikki", 0.008537),
      c("Laura", 0.005985),
      c("Lea", 0.002827),
      c("Leena", 0.011052),
      c("Leila", 0.00267),
      c("Liisa", 0.015791),
      c("Lilja", 0.001584),
      c("Linda", 0.001706),
      c("Linnea", 0.004089),
      c("Lotta", 0.002416),
      c("Maaria", 0.00335),
      c("Maarit", 0.012853),
      c("Maija", 0.00721),
      c("Maire", 0.001814),
      c("Margareta", 0.002525),
      c("Margit", 0.002057),
      c("Mari", 0.005431),
      c("Maria", 0.044412),
      c("Marianne", 0.00481),
      c("Marika", 0.005912),
      c("Marita", 0.005339),
      c("Maritta", 0.002299),
      c("Marja", 0.010093),
      c("Marja-Leena", 0.002611),
      c("Marja-Liisa", 0.002389),
      c("Marjaana", 0.004377),
      c("Marjatta", 0.020442),
      c("Marjo", 0.002613),
      c("Marjukka", 0.001486),
      c("Marjut", 0.003021),
      c("Marketta", 0.004413),
      c("Martta", 0.001663),
      c("Matilda", 0.004284),
      c("Merja", 0.004704),
      c("Mervi", 0.002193),
      c("Mia", 0.001736),
      c("Miia", 0.002146),
      c("Milla", 0.002204),
      c("Minna", 0.006615),
      c("Mira", 0.001706),
      c("Mirja", 0.003558),
      c("Mirjam", 0.002435),
      c("Mirjami", 0.003726),
      c("Nea", 0.001605),
      c("Niina", 0.002776),
      c("Nina", 0.003539),
      c("Noora", 0.002609),
      c("Olivia", 0.00384),
      c("Oona", 0.001707),
      c("Orvokki", 0.007473),
      c("Outi", 0.002278),
      c("P\u00e4ivi", 0.007556),
      c("P\u00e4ivikki", 0.002189),
      c("Paula", 0.004438),
      c("Pauliina", 0.006648),
      c("Petra", 0.001455),
      c("Pia", 0.002752),
      c("Piia", 0.00155),
      c("Pirjo", 0.006778),
      c("Pirkko", 0.005904),
      c("Raija", 0.005237),
      c("Raili", 0.003592),
      c("Riikka", 0.00301),
      c("Riitta", 0.008817),
      c("Ritva", 0.007408),
      c("Roosa", 0.001641),
      c("Saara", 0.002931),
      c("Sanna", 0.005027),
      c("Sanni", 0.001827),
      c("Sara", 0.003165),
      c("Sari", 0.00656),
      c("Satu", 0.005599),
      c("Seija", 0.005422),
      c("Siiri", 0.002066),
      c("Sini", 0.002038),
      c("Sinikka", 0.010005),
      c("Sirkka", 0.004487),
      c("Sirpa", 0.005252),
      c("Sisko", 0.005153),
      c("Sofia", 0.012669),
      c("Sonja", 0.001978),
      c("Susanna", 0.012647),
      c("Suvi", 0.003093),
      c("Taina", 0.002224),
      c("Tanja", 0.002577),
      c("Tarja", 0.005886),
      c("Taru", 0.001492),
      c("Teija", 0.001634),
      c("Tellervo", 0.007298),
      c("Terhi", 0.001779),
      c("Terttu", 0.004408),
      c("Tiia", 0.002003),
      c("Tiina", 0.006154),
      c("Tuija", 0.002932),
      c("Tuula", 0.007947),
      c("Tuuli", 0.001425),
      c("Tuulia", 0.004341),
      c("Tuulikki", 0.013373),
      c("Ulla", 0.004552),
      c("Veera", 0.002453),
      c("Venla", 0.001985),
      c("Viivi", 0.001505),
      c("Vilhelmiina", 0.002004),
      c("Vilma", 0.001724),
      c("Virpi", 0.00213),
      c("Vuokko", 0.001466)),


    first_names_male = list(
      c("Aapo", 0.001263),
      c("Aarne", 0.001939),
      c("Aaro", 0.001601),
      c("Aaron", 0.001246),
      c("Aatos", 0.001552),
      c("Ahti", 0.001192),
      c("Aimo", 0.001399),
      c("Aki", 0.001881),
      c("Akseli", 0.002333),
      c("Aleksanteri", 0.002618),
      c("Aleksi", 0.008346),
      c("Alexander", 0.002728),
      c("Allan", 0.00227),
      c("Anders", 0.001411),
      c("Anssi", 0.001464),
      c("Antero", 0.029891),
      c("Anton", 0.002652),
      c("Antti", 0.011971),
      c("Ari", 0.006403),
      c("Armas", 0.003609),
      c("Arto", 0.004059),
      c("Arttu", 0.00228),
      c("Artturi", 0.001853),
      c("Arvo", 0.001578),
      c("Asko", 0.001363),
      c("Atte", 0.001392),
      c("Aukusti", 0.002011),
      c("Aulis", 0.002725),
      c("Benjamin", 0.002089),
      c("Christian", 0.002142),
      c("Daniel", 0.002919),
      c("Edvard", 0.001248),
      c("Eelis", 0.001359),
      c("Eemeli", 0.004734),
      c("Eemil", 0.002606),
      c("Eerik", 0.001629),
      c("Eero", 0.005572),
      c("Eetu", 0.003098),
      c("Einari", 0.002263),
      c("Eino", 0.004304),
      c("Elias", 0.005129),
      c("Elmeri", 0.001817),
      c("Emil", 0.003422),
      c("Ensio", 0.006508),
      c("Erik", 0.005296),
      c("Erkki", 0.007568),
      c("Esa", 0.0043),
      c("Esko", 0.004194),
      c("Hannu", 0.007429),
      c("Harri", 0.004739),
      c("Heikki", 0.011301),
      c("Henri", 0.003282),
      c("Henrik", 0.007534),
      c("Henrikki", 0.001325),
      c("Henry", 0.001412),
      c("Hermanni", 0.00167),
      c("Iisakki", 0.001193),
      c("Ilari", 0.002866),
      c("Ilkka", 0.003098),
      c("Ilmari", 0.015056),
      c("Ismo", 0.00148),
      c("Jaakko", 0.008225),
      c("Jalmari", 0.002645),
      c("Jan", 0.002011),
      c("Jani", 0.005117),
      c("Janne", 0.006361),
      c("Jari", 0.008664),
      c("Jarkko", 0.002672),
      c("Jarmo", 0.004396),
      c("Jarno", 0.001681),
      c("Jere", 0.002255),
      c("Jesse", 0.002586),
      c("Joel", 0.002105),
      c("Johan", 0.003528),
      c("Johannes", 0.028915),
      c("Joni", 0.003244),
      c("Joona", 0.002503),
      c("Joonas", 0.003828),
      c("Joonatan", 0.001565),
      c("Jorma", 0.005147),
      c("Jouko", 0.003962),
      c("Jouni", 0.004093),
      c("Juha", 0.011567),
      c("Juhana", 0.001862),
      c("Juhani", 0.061356),
      c("Juho", 0.005642),
      c("Jukka", 0.008652),
      c("Julius", 0.00209),
      c("Jussi", 0.004772),
      c("Juuso", 0.002224),
      c("Jyrki", 0.002127),
      c("Kaarlo", 0.002073),
      c("Kai", 0.001942),
      c("Kalervo", 0.008502),
      c("Kalevi", 0.021057),
      c("Kalle", 0.003829),
      c("Kari", 0.009761),
      c("Karl", 0.001779),
      c("Kasper", 0.001177),
      c("Kauko", 0.002169),
      c("Keijo", 0.002259),
      c("Kim", 0.001172),
      c("Kimmo", 0.003441),
      c("Kristian", 0.011096),
      c("Kullervo", 0.002234),
      c("Kustaa", 0.001144),
      c("Lasse", 0.002197),
      c("Lassi", 0.001214),
      c("Lauri", 0.00755),
      c("Leevi", 0.002015),
      c("Leo", 0.003319),
      c("Markku", 0.00843),
      c("Marko", 0.006297),
      c("Markus", 0.009181),
      c("Martti", 0.005521),
      c("Matias", 0.013377),
      c("Matti", 0.01756),
      c("Mauno", 0.001189),
      c("Mauri", 0.002098),
      c("Miika", 0.001845),
      c("Mika", 0.007765),
      c("Mikael", 0.021621),
      c("Mikko", 0.009719),
      c("Miro", 0.001274),
      c("Niilo", 0.002094),
      c("Niklas", 0.002024),
      c("Niko", 0.003908),
      c("Oiva", 0.001202),
      c("Olavi", 0.030903),
      c("Oliver", 0.003026),
      c("Olli", 0.003921),
      c("Onni", 0.004513),
      c("Oskar", 0.001185),
      c("Oskari", 0.007745),
      c("Osmo", 0.001531),
      c("Ossi", 0.001591),
      c("Otto", 0.002902),
      c("Paavo", 0.00381),
      c("Pasi", 0.004109),
      c("Patrik", 0.001474),
      c("Pauli", 0.003105),
      c("Pekka", 0.017016),
      c("Pentti", 0.006344),
      c("Pertti", 0.004406),
      c("Peter", 0.001704),
      c("Petri", 0.00786),
      c("Petteri", 0.015518),
      c("Raimo", 0.004575),
      c("Rainer", 0.001478),
      c("Rasmus", 0.001715),
      c("Rauno", 0.001688),
      c("Reijo", 0.003919),
      c("Reino", 0.002166),
      c("Riku", 0.001803),
      c("Risto", 0.004678),
      c("Robert", 0.001478),
      c("Roope", 0.001412),
      c("Sakari", 0.013891),
      c("Sami", 0.00587),
      c("Samu", 0.001237),
      c("Samuel", 0.00403),
      c("Samuli", 0.004994),
      c("Santeri", 0.00346),
      c("Sebastian", 0.002863),
      c("Seppo", 0.007305),
      c("Simo", 0.002313),
      c("Taisto", 0.001514),
      c("Taneli", 0.00129),
      c("Tapani", 0.02906),
      c("Tapio", 0.024776),
      c("Tauno", 0.001795),
      c("Teemu", 0.004605),
      c("Tero", 0.003188),
      c("Teuvo", 0.001714),
      c("Timo", 0.010557),
      c("Toivo", 0.003649),
      c("Tomi", 0.00341),
      c("Tommi", 0.003191),
      c("Toni", 0.003723),
      c("Topias", 0.001645),
      c("Tuomas", 0.005948),
      c("Tuomo", 0.002739),
      c("Tuukka", 0.001175),
      c("Uolevi", 0.002879),
      c("V\u00e4in\u00f6", 0.003176),
      c("Valdemar", 0.00152),
      c("Valtteri", 0.006312),
      c("Veeti", 0.001673),
      c("Veijo", 0.001517),
      c("Veikko", 0.007525),
      c("Veli", 0.004415),
      c("Verneri", 0.001164),
      c("Vesa", 0.003926),
      c("Vilhelm", 0.001591),
      c("Vilho", 0.002303),
      c("Viljami", 0.003563),
      c("Viljo", 0.00154),
      c("Ville", 0.007025),
      c("Yrj\u00f6", 0.001912)),


    first_names = list(
      c("Aada", 0.001877),
      c("Aila", 0.002778),
      c("Aili", 0.001542),
      c("Aino", 0.00803),
      c("Airi", 0.001591),
      c("Aleksandra", 0.002884),
      c("Alexandra", 0.002718),
      c("Alina", 0.002114),
      c("Alisa", 0.001607),
      c("Amanda", 0.004584),
      c("Anita", 0.005061),
      c("Anja", 0.005627),
      c("Anna", 0.010413),
      c("Anna-Liisa", 0.00232),
      c("Anne", 0.007823),
      c("Anneli", 0.0277),
      c("Anni", 0.004397),
      c("Anniina", 0.003366),
      c("Annika", 0.005193),
      c("Annikki", 0.013414),
      c("Annukka", 0.001424),
      c("Anu", 0.003005),
      c("Arja", 0.004539),
      c("Aulikki", 0.002522),
      c("Aune", 0.00208),
      c("Aurora", 0.003709),
      c("Birgitta", 0.003324),
      c("Carita", 0.001574),
      c("Christina", 0.001534),
      c("Eeva", 0.006403),
      c("Eija", 0.00491),
      c("Eila", 0.005377),
      c("Eliisa", 0.00163),
      c("Elina", 0.014353),
      c("Elisa", 0.00424),
      c("Elisabet", 0.005925),
      c("Elisabeth", 0.004305),
      c("Ella", 0.002958),
      c("Ellen", 0.002243),
      c("Elli", 0.002258),
      c("Elsa", 0.002284),
      c("Emilia", 0.014649),
      c("Emma", 0.003571),
      c("Emmi", 0.002183),
      c("Erika", 0.002084),
      c("Essi", 0.001576),
      c("Esteri", 0.001672),
      c("Eveliina", 0.005899),
      c("Hanna", 0.005409),
      c("Hannele", 0.0193),
      c("Heidi", 0.005315),
      c("Helena", 0.028118),
      c("Heli", 0.003711),
      c("Helin\u00e4", 0.002151),
      c("Hellevi", 0.002416),
      c("Helmi", 0.003888),
      c("Helvi", 0.001462),
      c("Henna", 0.002525),
      c("Hilkka", 0.003745),
      c("Hillevi", 0.001577),
      c("Ida", 0.003067),
      c("Iida", 0.003699),
      c("Iiris", 0.001461),
      c("Ilona", 0.004816),
      c("Inkeri", 0.009444),
      c("Irene", 0.005164),
      c("Irja", 0.002691),
      c("Irma", 0.002772),
      c("Irmeli", 0.006537),
      c("Jaana", 0.005125),
      c("Jasmin", 0.001789),
      c("Jenna", 0.002567),
      c("Jenni", 0.004011),
      c("Johanna", 0.025061),
      c("Jonna", 0.002053),
      c("Josefiina", 0.001757),
      c("Julia", 0.004716),
      c("Juulia", 0.001411),
      c("Kaarina", 0.022441),
      c("Kaija", 0.003216),
      c("Kaisa", 0.004424),
      c("Karoliina", 0.006727),
      c("Katariina", 0.010602),
      c("Kati", 0.002463),
      c("Katja", 0.00381),
      c("Katri", 0.00337),
      c("Katriina", 0.004651),
      c("Kerttu", 0.002839),
      c("Kirsi", 0.004856),
      c("Kirsti", 0.003699),
      c("Krista", 0.001465),
      c("Kristiina", 0.016656),
      c("Kristina", 0.002653),
      c("Kyllikki", 0.008537),
      c("Laura", 0.005985),
      c("Lea", 0.002827),
      c("Leena", 0.011052),
      c("Leila", 0.00267),
      c("Liisa", 0.015791),
      c("Lilja", 0.001584),
      c("Linda", 0.001706),
      c("Linnea", 0.004089),
      c("Lotta", 0.002416),
      c("Maaria", 0.00335),
      c("Maarit", 0.012853),
      c("Maija", 0.00721),
      c("Maire", 0.001814),
      c("Margareta", 0.002525),
      c("Margit", 0.002057),
      c("Mari", 0.005431),
      c("Maria", 0.044412),
      c("Marianne", 0.00481),
      c("Marika", 0.005912),
      c("Marita", 0.005339),
      c("Maritta", 0.002299),
      c("Marja", 0.010093),
      c("Marja-Leena", 0.002611),
      c("Marja-Liisa", 0.002389),
      c("Marjaana", 0.004377),
      c("Marjatta", 0.020442),
      c("Marjo", 0.002613),
      c("Marjukka", 0.001486),
      c("Marjut", 0.003021),
      c("Marketta", 0.004413),
      c("Martta", 0.001663),
      c("Matilda", 0.004284),
      c("Merja", 0.004704),
      c("Mervi", 0.002193),
      c("Mia", 0.001736),
      c("Miia", 0.002146),
      c("Milla", 0.002204),
      c("Minna", 0.006615),
      c("Mira", 0.001706),
      c("Mirja", 0.003558),
      c("Mirjam", 0.002435),
      c("Mirjami", 0.003726),
      c("Nea", 0.001605),
      c("Niina", 0.002776),
      c("Nina", 0.003539),
      c("Noora", 0.002609),
      c("Olivia", 0.00384),
      c("Oona", 0.001707),
      c("Orvokki", 0.007473),
      c("Outi", 0.002278),
      c("P\u00e4ivi", 0.007556),
      c("P\u00e4ivikki", 0.002189),
      c("Paula", 0.004438),
      c("Pauliina", 0.006648),
      c("Petra", 0.001455),
      c("Pia", 0.002752),
      c("Piia", 0.00155),
      c("Pirjo", 0.006778),
      c("Pirkko", 0.005904),
      c("Raija", 0.005237),
      c("Raili", 0.003592),
      c("Riikka", 0.00301),
      c("Riitta", 0.008817),
      c("Ritva", 0.007408),
      c("Roosa", 0.001641),
      c("Saara", 0.002931),
      c("Sanna", 0.005027),
      c("Sanni", 0.001827),
      c("Sara", 0.003165),
      c("Sari", 0.00656),
      c("Satu", 0.005599),
      c("Seija", 0.005422),
      c("Siiri", 0.002066),
      c("Sini", 0.002038),
      c("Sinikka", 0.010005),
      c("Sirkka", 0.004487),
      c("Sirpa", 0.005252),
      c("Sisko", 0.005153),
      c("Sofia", 0.012669),
      c("Sonja", 0.001978),
      c("Susanna", 0.012647),
      c("Suvi", 0.003093),
      c("Taina", 0.002224),
      c("Tanja", 0.002577),
      c("Tarja", 0.005886),
      c("Taru", 0.001492),
      c("Teija", 0.001634),
      c("Tellervo", 0.007298),
      c("Terhi", 0.001779),
      c("Terttu", 0.004408),
      c("Tiia", 0.002003),
      c("Tiina", 0.006154),
      c("Tuija", 0.002932),
      c("Tuula", 0.007947),
      c("Tuuli", 0.001425),
      c("Tuulia", 0.004341),
      c("Tuulikki", 0.013373),
      c("Ulla", 0.004552),
      c("Veera", 0.002453),
      c("Venla", 0.001985),
      c("Viivi", 0.001505),
      c("Vilhelmiina", 0.002004),
      c("Vilma", 0.001724),
      c("Virpi", 0.00213),
      c("Vuokko", 0.001466),

      c("Aapo", 0.001263),
      c("Aarne", 0.001939),
      c("Aaro", 0.001601),
      c("Aaron", 0.001246),
      c("Aatos", 0.001552),
      c("Ahti", 0.001192),
      c("Aimo", 0.001399),
      c("Aki", 0.001881),
      c("Akseli", 0.002333),
      c("Aleksanteri", 0.002618),
      c("Aleksi", 0.008346),
      c("Alexander", 0.002728),
      c("Allan", 0.00227),
      c("Anders", 0.001411),
      c("Anssi", 0.001464),
      c("Antero", 0.029891),
      c("Anton", 0.002652),
      c("Antti", 0.011971),
      c("Ari", 0.006403),
      c("Armas", 0.003609),
      c("Arto", 0.004059),
      c("Arttu", 0.00228),
      c("Artturi", 0.001853),
      c("Arvo", 0.001578),
      c("Asko", 0.001363),
      c("Atte", 0.001392),
      c("Aukusti", 0.002011),
      c("Aulis", 0.002725),
      c("Benjamin", 0.002089),
      c("Christian", 0.002142),
      c("Daniel", 0.002919),
      c("Edvard", 0.001248),
      c("Eelis", 0.001359),
      c("Eemeli", 0.004734),
      c("Eemil", 0.002606),
      c("Eerik", 0.001629),
      c("Eero", 0.005572),
      c("Eetu", 0.003098),
      c("Einari", 0.002263),
      c("Eino", 0.004304),
      c("Elias", 0.005129),
      c("Elmeri", 0.001817),
      c("Emil", 0.003422),
      c("Ensio", 0.006508),
      c("Erik", 0.005296),
      c("Erkki", 0.007568),
      c("Esa", 0.0043),
      c("Esko", 0.004194),
      c("Hannu", 0.007429),
      c("Harri", 0.004739),
      c("Heikki", 0.011301),
      c("Henri", 0.003282),
      c("Henrik", 0.007534),
      c("Henrikki", 0.001325),
      c("Henry", 0.001412),
      c("Hermanni", 0.00167),
      c("Iisakki", 0.001193),
      c("Ilari", 0.002866),
      c("Ilkka", 0.003098),
      c("Ilmari", 0.015056),
      c("Ismo", 0.00148),
      c("Jaakko", 0.008225),
      c("Jalmari", 0.002645),
      c("Jan", 0.002011),
      c("Jani", 0.005117),
      c("Janne", 0.006361),
      c("Jari", 0.008664),
      c("Jarkko", 0.002672),
      c("Jarmo", 0.004396),
      c("Jarno", 0.001681),
      c("Jere", 0.002255),
      c("Jesse", 0.002586),
      c("Joel", 0.002105),
      c("Johan", 0.003528),
      c("Johannes", 0.028915),
      c("Joni", 0.003244),
      c("Joona", 0.002503),
      c("Joonas", 0.003828),
      c("Joonatan", 0.001565),
      c("Jorma", 0.005147),
      c("Jouko", 0.003962),
      c("Jouni", 0.004093),
      c("Juha", 0.011567),
      c("Juhana", 0.001862),
      c("Juhani", 0.061356),
      c("Juho", 0.005642),
      c("Jukka", 0.008652),
      c("Julius", 0.00209),
      c("Jussi", 0.004772),
      c("Juuso", 0.002224),
      c("Jyrki", 0.002127),
      c("Kaarlo", 0.002073),
      c("Kai", 0.001942),
      c("Kalervo", 0.008502),
      c("Kalevi", 0.021057),
      c("Kalle", 0.003829),
      c("Kari", 0.009761),
      c("Karl", 0.001779),
      c("Kasper", 0.001177),
      c("Kauko", 0.002169),
      c("Keijo", 0.002259),
      c("Kim", 0.001172),
      c("Kimmo", 0.003441),
      c("Kristian", 0.011096),
      c("Kullervo", 0.002234),
      c("Kustaa", 0.001144),
      c("Lasse", 0.002197),
      c("Lassi", 0.001214),
      c("Lauri", 0.00755),
      c("Leevi", 0.002015),
      c("Leo", 0.003319),
      c("Markku", 0.00843),
      c("Marko", 0.006297),
      c("Markus", 0.009181),
      c("Martti", 0.005521),
      c("Matias", 0.013377),
      c("Matti", 0.01756),
      c("Mauno", 0.001189),
      c("Mauri", 0.002098),
      c("Miika", 0.001845),
      c("Mika", 0.007765),
      c("Mikael", 0.021621),
      c("Mikko", 0.009719),
      c("Miro", 0.001274),
      c("Niilo", 0.002094),
      c("Niklas", 0.002024),
      c("Niko", 0.003908),
      c("Oiva", 0.001202),
      c("Olavi", 0.030903),
      c("Oliver", 0.003026),
      c("Olli", 0.003921),
      c("Onni", 0.004513),
      c("Oskar", 0.001185),
      c("Oskari", 0.007745),
      c("Osmo", 0.001531),
      c("Ossi", 0.001591),
      c("Otto", 0.002902),
      c("Paavo", 0.00381),
      c("Pasi", 0.004109),
      c("Patrik", 0.001474),
      c("Pauli", 0.003105),
      c("Pekka", 0.017016),
      c("Pentti", 0.006344),
      c("Pertti", 0.004406),
      c("Peter", 0.001704),
      c("Petri", 0.00786),
      c("Petteri", 0.015518),
      c("Raimo", 0.004575),
      c("Rainer", 0.001478),
      c("Rasmus", 0.001715),
      c("Rauno", 0.001688),
      c("Reijo", 0.003919),
      c("Reino", 0.002166),
      c("Riku", 0.001803),
      c("Risto", 0.004678),
      c("Robert", 0.001478),
      c("Roope", 0.001412),
      c("Sakari", 0.013891),
      c("Sami", 0.00587),
      c("Samu", 0.001237),
      c("Samuel", 0.00403),
      c("Samuli", 0.004994),
      c("Santeri", 0.00346),
      c("Sebastian", 0.002863),
      c("Seppo", 0.007305),
      c("Simo", 0.002313),
      c("Taisto", 0.001514),
      c("Taneli", 0.00129),
      c("Tapani", 0.02906),
      c("Tapio", 0.024776),
      c("Tauno", 0.001795),
      c("Teemu", 0.004605),
      c("Tero", 0.003188),
      c("Teuvo", 0.001714),
      c("Timo", 0.010557),
      c("Toivo", 0.003649),
      c("Tomi", 0.00341),
      c("Tommi", 0.003191),
      c("Toni", 0.003723),
      c("Topias", 0.001645),
      c("Tuomas", 0.005948),
      c("Tuomo", 0.002739),
      c("Tuukka", 0.001175),
      c("Uolevi", 0.002879),
      c("V\u00e4in\u00f6", 0.003176),
      c("Valdemar", 0.00152),
      c("Valtteri", 0.006312),
      c("Veeti", 0.001673),
      c("Veijo", 0.001517),
      c("Veikko", 0.007525),
      c("Veli", 0.004415),
      c("Verneri", 0.001164),
      c("Vesa", 0.003926),
      c("Vilhelm", 0.001591),
      c("Vilho", 0.002303),
      c("Viljami", 0.003563),
      c("Viljo", 0.00154),
      c("Ville", 0.007025),
      c("Yrj\u00f6", 0.001912)),

    # List of most popular last names in Finland:
    # https://www.avoindata.fi/data/en/dataset/none/resource/d25831d1-82a9-476f-8f7c-374c348efc14

    last_names = list(
      c("Aalto", 0.004189),
      c("Aaltonen", 0.004828),
      c("Aho", 0.003566),
      c("Ahokas", 0.001182),
      c("Ahola", 0.003697),
      c("Ahonen", 0.005301),
      c("Airaksinen", 0.001075),
      c("Alanen", 0.001124),
      c("Alanko", 0.001131),
      c("Alatalo", 0.001424),
      c("Andersson", 0.002447),
      c("Antikainen", 0.001061),
      c("Anttila", 0.004683),
      c("Anttonen", 0.00121),
      c("Aro", 0.00105),
      c("Asikainen", 0.002),
      c("Autio", 0.002187),
      c("Auvinen", 0.001732),
      c("Backman", 0.001331),
      c("Berg", 0.001362),
      c("Blomqvist", 0.001545),
      c("Eklund", 0.001737),
      c("Elo", 0.00113),
      c("Eloranta", 0.00109),
      c("Eriksson", 0.002454),
      c("Erkkil\u00e4", 0.001406),
      c("Eronen", 0.001765),
      c("Eskelinen", 0.002041),
      c("Eskola", 0.001747),
      c("Forsman", 0.001077),
      c("Gr\u00f6nroos", 0.001054),
      c("Gustafsson", 0.001571),
      c("Haapala", 0.001736),
      c("Haapanen", 0.00132),
      c("Haapaniemi", 0.001056),
      c("Haataja", 0.001222),
      c("Haavisto", 0.001782),
      c("Hakala", 0.004682),
      c("Hakkarainen", 0.00272),
      c("H\u00e4kkinen", 0.002513),
      c("Halme", 0.001566),
      c("Halonen", 0.003495),
      c("H\u00e4m\u00e4l\u00e4inen", 0.009001),
      c("H\u00e4nninen", 0.003986),
      c("Hannula", 0.001522),
      c("Harju", 0.003153),
      c("H\u00e4rk\u00f6nen", 0.002434),
      c("Hartikainen", 0.002868),
      c("Hautala", 0.001909),
      c("Hautam\u00e4ki", 0.00165),
      c("Haverinen", 0.001289),
      c("Heikkil\u00e4", 0.006931),
      c("Heikkinen", 0.008519),
      c("Heino", 0.00296),
      c("Heinonen", 0.007026),
      c("Heiskanen", 0.003335),
      c("Helenius", 0.001874),
      c("Helin", 0.001682),
      c("Helminen", 0.001458),
      c("Henriksson", 0.001408),
      c("Hietala", 0.002444),
      c("Hietanen", 0.00184),
      c("Hiltunen", 0.004889),
      c("Hirvonen", 0.004428),
      c("Hokkanen", 0.002165),
      c("Holappa", 0.00105),
      c("Holm", 0.001459),
      c("Holmberg", 0.001217),
      c("Holmstr\u00f6m", 0.001188),
      c("Holopainen", 0.002501),
      c("Honkanen", 0.00323),
      c("Huhtala", 0.002066),
      c("Huotari", 0.001845),
      c("Huovinen", 0.001733),
      c("Huttunen", 0.003632),
      c("Huuskonen", 0.001163),
      c("Hyt\u00f6nen", 0.001515),
      c("Hyttinen", 0.001835),
      c("Hyv\u00e4rinen", 0.002703),
      c("Hyv\u00f6nen", 0.002406),
      c("Ihalainen", 0.001044),
      c("Ikonen", 0.00358),
      c("Immonen", 0.003231),
      c("Jaakkola", 0.002386),
      c("J\u00e4\u00e4skel\u00e4inen", 0.002913),
      c("Jaatinen", 0.001308),
      c("Jalonen", 0.001474),
      c("Jansson", 0.00146),
      c("J\u00e4ntti", 0.00125),
      c("J\u00e4rvel\u00e4", 0.001204),
      c("J\u00e4rvenp\u00e4\u00e4", 0.001797),
      c("J\u00e4rvi", 0.001061),
      c("J\u00e4rvinen", 0.007928),
      c("Jauhiainen", 0.001305),
      c("Johansson", 0.003434),
      c("Jokela", 0.002356),
      c("Jokinen", 0.005951),
      c("Juntunen", 0.002955),
      c("Jussila", 0.002127),
      c("Juvonen", 0.001677),
      c("K\u00e4hk\u00f6nen", 0.00158),
      c("Kaikkonen", 0.001253),
      c("Kainulainen", 0.001727),
      c("Kallio", 0.004876),
      c("K\u00e4m\u00e4r\u00e4inen", 0.001118),
      c("Kanerva", 0.001436),
      c("Kangas", 0.002883),
      c("Kankaanp\u00e4\u00e4", 0.001337),
      c("Kantola", 0.001513),
      c("Karhu", 0.00234),
      c("Karhunen", 0.001157),
      c("Kari", 0.001082),
      c("Karjalainen", 0.006036),
      c("K\u00e4rki", 0.001268),
      c("K\u00e4rkk\u00e4inen", 0.003561),
      c("Karlsson", 0.002809),
      c("Karppinen", 0.003072),
      c("Karttunen", 0.001799),
      c("Karvinen", 0.001394),
      c("Karvonen", 0.002385),
      c("Kauppila", 0.00126),
      c("Kauppinen", 0.003787),
      c("Kein\u00e4nen", 0.001261),
      c("Kemppainen", 0.003777),
      c("Ker\u00e4nen", 0.002874),
      c("Keskinen", 0.001651),
      c("Keskitalo", 0.00109),
      c("Ketola", 0.001792),
      c("Kettunen", 0.003871),
      c("Kilpel\u00e4inen", 0.001374),
      c("Kinnunen", 0.006796),
      c("Kiuru", 0.001089),
      c("Kivel\u00e4", 0.002164),
      c("Kivim\u00e4ki", 0.001619),
      c("Kivinen", 0.0013),
      c("Kiviniemi", 0.001402),
      c("Kivist\u00f6", 0.001447),
      c("Koistinen", 0.001988),
      c("Koivisto", 0.004667),
      c("Koivula", 0.002017),
      c("Koivunen", 0.001881),
      c("Kokko", 0.002672),
      c("Kokkonen", 0.003128),
      c("Kolehmainen", 0.002155),
      c("Komulainen", 0.001657),
      c("Konttinen", 0.001132),
      c("Koponen", 0.003424),
      c("Korhonen", 0.011042),
      c("Korpela", 0.002431),
      c("Korpi", 0.001281),
      c("Kortelainen", 0.001539),
      c("Koskela", 0.003733),
      c("Koski", 0.003231),
      c("Koskinen", 0.008414),
      c("Kosonen", 0.00231),
      c("Kovanen", 0.001198),
      c("Kuisma", 0.001348),
      c("Kujala", 0.002234),
      c("Kukkonen", 0.002415),
      c("Kulmala", 0.001901),
      c("Kumpulainen", 0.001781),
      c("Kuosmanen", 0.001577),
      c("Kurki", 0.001386),
      c("Kuronen", 0.001149),
      c("Kuusela", 0.001972),
      c("Kuusisto", 0.002479),
      c("Kyll\u00f6nen", 0.001904),
      c("Laakkonen", 0.00201),
      c("Laakso", 0.00436),
      c("Laaksonen", 0.004505),
      c("L\u00e4hteenm\u00e4ki", 0.001609),
      c("Lahti", 0.00373),
      c("Lahtinen", 0.005427),
      c("Laiho", 0.001374),
      c("Laine", 0.008802),
      c("Laitinen", 0.006223),
      c("Lammi", 0.00109),
      c("Lampinen", 0.002147),
      c("Lankinen", 0.001053),
      c("Lappalainen", 0.003902),
      c("Lassila", 0.001343),
      c("Latvala", 0.001139),
      c("Laukkanen", 0.002981),
      c("Laurila", 0.00268),
      c("Lehikoinen", 0.001339),
      c("Lehtim\u00e4ki", 0.001726),
      c("Lehtinen", 0.007344),
      c("Lehto", 0.004389),
      c("Lehtola", 0.001536),
      c("Lehtonen", 0.00786),
      c("Leino", 0.002813),
      c("Leinonen", 0.004891),
      c("Lepist\u00f6", 0.001981),
      c("Lepp\u00e4nen", 0.005224),
      c("Leskinen", 0.002572),
      c("Liimatainen", 0.001943),
      c("Lilja", 0.00115),
      c("Lindberg", 0.001978),
      c("Lindfors", 0.001504),
      c("Lindgren", 0.00175),
      c("Lindholm", 0.003367),
      c("Lindqvist", 0.002171),
      c("Lindroos", 0.002225),
      c("Lindstr\u00f6m", 0.002755),
      c("Linna", 0.001114),
      c("Lipponen", 0.00129),
      c("Liukkonen", 0.001696),
      c("Luoma", 0.00193),
      c("Luukkonen", 0.001845),
      c("M\u00e4\u00e4tt\u00e4", 0.003095),
      c("M\u00e4enp\u00e4\u00e4", 0.00279),
      c("M\u00e4kel\u00e4", 0.009299),
      c("M\u00e4ki", 0.003044),
      c("M\u00e4kinen", 0.009918),
      c("Makkonen", 0.002549),
      c("Malinen", 0.002249),
      c("Manninen", 0.004752),
      c("M\u00e4nnist\u00f6", 0.001155),
      c("M\u00e4ntyl\u00e4", 0.001364),
      c("Markkanen", 0.001624),
      c("Martikainen", 0.002756),
      c("Marttila", 0.001834),
      c("Marttinen", 0.001083),
      c("Matikainen", 0.00149),
      c("Matilainen", 0.001526),
      c("Mattila", 0.005845),
      c("Mattsson", 0.001349),
      c("Meril\u00e4inen", 0.001503),
      c("Miettinen", 0.004877),
      c("Mikkola", 0.003284),
      c("Mikkonen", 0.00345),
      c("Moilanen", 0.004065),
      c("Moisio", 0.001273),
      c("Mononen", 0.001237),
      c("Muhonen", 0.001141),
      c("Mustonen", 0.004238),
      c("Myllym\u00e4ki", 0.001733),
      c("Nevala", 0.001071),
      c("Nevalainen", 0.002639),
      c("Niemel\u00e4", 0.004065),
      c("Niemi", 0.006993),
      c("Nieminen", 0.009851),
      c("Niiranen", 0.001315),
      c("Nikula", 0.001193),
      c("Niskanen", 0.003346),
      c("Nissinen", 0.002092),
      c("Nousiainen", 0.002075),
      c("Nurmi", 0.004112),
      c("Nurminen", 0.003196),
      c("Nuutinen", 0.001781),
      c("Nyberg", 0.001381),
      c("Nyk\u00e4nen", 0.002561),
      c("Nylund", 0.001545),
      c("Nyman", 0.003435),
      c("Oikarinen", 0.00114),
      c("Oinonen", 0.001349),
      c("Ojala", 0.005237),
      c("Ojanen", 0.001396),
      c("Oksanen", 0.003372),
      c("Ollikainen", 0.001631),
      c("Ollila", 0.001614),
      c("P\u00e4\u00e4kk\u00f6nen", 0.001404),
      c("Paananen", 0.002837),
      c("Paavilainen", 0.001028),
      c("Paavola", 0.001687),
      c("Pajunen", 0.001396),
      c("Pakarinen", 0.001818),
      c("Palom\u00e4ki", 0.001161),
      c("Parkkinen", 0.001273),
      c("Partanen", 0.003879),
      c("Parviainen", 0.002908),
      c("Pasanen", 0.002364),
      c("Pehkonen", 0.001178),
      c("Pekkala", 0.001172),
      c("Pekkarinen", 0.0011),
      c("Pelkonen", 0.001933),
      c("Peltola", 0.003401),
      c("Peltonen", 0.004111),
      c("Peltoniemi", 0.001325),
      c("Pennanen", 0.001857),
      c("Penttil\u00e4", 0.001723),
      c("Penttinen", 0.001875),
      c("Per\u00e4l\u00e4", 0.001592),
      c("Pesonen", 0.003534),
      c("Pietil\u00e4", 0.001874),
      c("Piirainen", 0.001336),
      c("Pirinen", 0.001318),
      c("Pitk\u00e4nen", 0.004831),
      c("Pohjola", 0.001266),
      c("P\u00f6ll\u00e4nen", 0.001097),
      c("Puhakka", 0.001413),
      c("Pulkkinen", 0.003995),
      c("Puranen", 0.001053),
      c("Puustinen", 0.001385),
      c("Raatikainen", 0.001244),
      c("R\u00e4is\u00e4nen", 0.002146),
      c("Rajala", 0.002963),
      c("Ranta", 0.002422),
      c("Rantala", 0.004243),
      c("Rantanen", 0.006076),
      c("R\u00e4s\u00e4nen", 0.004444),
      c("R\u00e4ty", 0.001319),
      c("Rauhala", 0.001391),
      c("Rautiainen", 0.00292),
      c("Rautio", 0.002231),
      c("Reinikainen", 0.001112),
      c("Repo", 0.001805),
      c("Riihim\u00e4ki", 0.001097),
      c("Riikonen", 0.001838),
      c("Rinne", 0.002123),
      c("Rintala", 0.001596),
      c("Rissanen", 0.003116),
      c("Ronkainen", 0.001757),
      c("R\u00f6nkk\u00f6", 0.001111),
      c("Rossi", 0.001203),
      c("Ruotsalainen", 0.002752),
      c("Ruuskanen", 0.001251),
      c("Rytk\u00f6nen", 0.00144),
      c("Ryyn\u00e4nen", 0.00112),
      c("Saarela", 0.002292),
      c("Saari", 0.003871),
      c("Saarinen", 0.007247),
      c("Saastamoinen", 0.001741),
      c("Sainio", 0.001224),
      c("Sallinen", 0.001148),
      c("Salmela", 0.002572),
      c("Salmi", 0.003705),
      c("Salminen", 0.007146),
      c("Salo", 0.006336),
      c("Salomaa", 0.001099),
      c("Salonen", 0.006757),
      c("Savolainen", 0.005448),
      c("Sepp\u00e4", 0.001142),
      c("Sepp\u00e4l\u00e4", 0.004007),
      c("Sepp\u00e4nen", 0.003731),
      c("Sihvonen", 0.001053),
      c("Sillanp\u00e4\u00e4", 0.002264),
      c("Silvennoinen", 0.001614),
      c("Simola", 0.001116),
      c("Simonen", 0.001049),
      c("Sipil\u00e4", 0.001582),
      c("Sir\u00e9n", 0.001129),
      c("Sirvi\u00f6", 0.001089),
      c("Sj\u00f6blom", 0.001119),
      c("Soini", 0.001102),
      c("Soininen", 0.001422),
      c("Suhonen", 0.001834),
      c("Suomalainen", 0.001609),
      c("Suominen", 0.003582),
      c("Sutinen", 0.001056),
      c("Syrj\u00e4l\u00e4", 0.001196),
      c("T\u00e4htinen", 0.001028),
      c("Taipale", 0.001378),
      c("Takala", 0.001797),
      c("Tamminen", 0.002461),
      c("Tanskanen", 0.001536),
      c("Tarvainen", 0.001396),
      c("Taskinen", 0.001633),
      c("Tervo", 0.001419),
      c("Tiainen", 0.00234),
      c("Tiihonen", 0.001149),
      c("Tikka", 0.001325),
      c("Tikkanen", 0.00266),
      c("Timonen", 0.002211),
      c("Tirkkonen", 0.001193),
      c("Toivanen", 0.002668),
      c("Toivonen", 0.004311),
      c("Tolonen", 0.002122),
      c("Tolvanen", 0.001917),
      c("Tuomi", 0.001608),
      c("Tuominen", 0.006098),
      c("Tuovinen", 0.001894),
      c("Turpeinen", 0.001528),
      c("Turunen", 0.006523),
      c("Uotila", 0.001053),
      c("Uusitalo", 0.002687),
      c("V\u00e4\u00e4n\u00e4nen", 0.002319),
      c("Vainio", 0.003358),
      c("V\u00e4is\u00e4nen", 0.004904),
      c("V\u00e4lim\u00e4ki", 0.001587),
      c("Valkama", 0.001139),
      c("Valkonen", 0.001248),
      c("Valtonen", 0.002171),
      c("Varis", 0.001436),
      c("Vartiainen", 0.002039),
      c("V\u00e4yrynen", 0.001426),
      c("Ven\u00e4l\u00e4inen", 0.001262),
      c("Vesterinen", 0.001259),
      c("Viitala", 0.001642),
      c("Viitanen", 0.002647),
      c("Viljanen", 0.001859),
      c("Virta", 0.002228),
      c("Virtanen", 0.01083),
      c("Voutilainen", 0.001853),
      c("Vuorela", 0.001156),
      c("Vuori", 0.001701),
      c("Vuorinen", 0.003188),
      c("Ylinen", 0.00105),
      c("Ylitalo", 0.001438),
      c("Yl\u00f6nen", 0.00125))
  )
)

# bank -------------------------
bank_fi_FI = R6Class(
  "bank_fi_FI",
  inherit = bank_init,
  cloneable = FALSE,
  private = list(
    bban_format = '################',
    country_code = 'FI'
  )
)
# company -----------------------------------
company_fi_FI = R6Class(
  "company_fi_FI",
  inherit = company_init,
  cloneable = FALSE,
  private = list(
    first_names = (person_fi_FI$new())$.__enclos_env__$private$first_names,
    last_names = (person_fi_FI$new())$.__enclos_env__$private$last_names,

    first_name = (person_fi_FI$new())$first_name,
    last_name = (person_fi_FI$new())$last_name,

    formats = c(
      '{last_name} {company_suffix}',
      '{last_name} {last_name} {company_suffix}',
      '{last_name} {last_name} {company_suffix}',
      '{last_name}'),

    company_suffixes = c(
      'As Oy', 'Tmi', 'Oy', 'Oyj', 'Ky', 'Osk', 'ry')
  ),

  public = list(
    company_business_id = function() {
      # Returns Finnish company Business Identity Code (y-tunnus).
      # Format is 8 digits - e.g. FI99999999,[8] last digit is a check
      # digit utilizing MOD 11-2. The first digit is zero for some old
      # organizations. This function provides current codes starting with
      # non-zero.

      calculate_checksum = function(x){
        # Calculate the checksum using mod 11,2 method
        factors = c(7, 9, 10, 5, 8, 4, 2)
        sum_ = sum(x * factors)
        if (sum_ %% 11 == 0) return("0")
        else return(as.character(11 - (sum_ %% 11)))
      }

      first_digit = private$random_digit_not_null()
      body = as.integer(c(first_digit,
                          str_split(private$bothify('######'),"")[[1]]))

      cs = calculate_checksum(body)

      return(str_c(str_c(body, collapse = ""), cs, sep = "-"))
    },

    company_vat = function(){
      # Returns Finnish VAT identification number (Arvonlisaveronumero).
      # This can be calculated from company business identity code by
      # adding prefix "FI" and removing dash before checksum.

      convert_to_vat = function(x){
        # Convert business id to VATIN
        return(str_c("FI", str_replace_all(x, "-", "")))
      }

      return(convert_to_vat(self$company_business_id()))
    }
  )
)
# address -----------------------------
address_fi_FI = R6Class(
  "address_fi_FI",
  inherit = address_init,
  cloneable = FALSE,
  private = list(
    first_names = (person_fi_FI$new())$.__enclos_env__$private$first_names,
    last_names = (person_fi_FI$new())$.__enclos_env__$private$last_names,

    first_name = (person_fi_FI$new())$first_name,
    last_name = (person_fi_FI$new())$last_name,

    building_number_formats = c('###', '##', '#'),

    postcode_formats = '#####',

    city_formats = '{city_name}',

    street_name_formats = '{street_prefix}{street_suffix}',

    street_address_formats = '{street_name} {building_number}',

    address_formats = "{street_address}\n{postcode} {city}",

    # Data from:
    # https://www.avoindata.fi/data/en/dataset/kunnat/resource/b1cb9870-191f-4616-9c53-5388b7ca6beb
    cities = c(
      "Alaj\u00e4rvi",
      "Alavieska",
      "Alavus",
      "Asikkala",
      "Askola",
      "Aura",
      "Akaa",
      "Br\u00e4nd\u00f6",
      "Ecker\u00f6",
      "Enonkoski",
      "Enonteki\u00f6",
      "Espoo",
      "Eura",
      "Eurajoki",
      "Evij\u00e4rvi",
      "Finstr\u00f6m",
      "Forssa",
      "F\u00f6gl\u00f6",
      "Geta",
      "Haapaj\u00e4rvi",
      "Haapavesi",
      "Hailuoto",
      "Halsua",
      "Hamina",
      "Hammarland",
      "Hankasalmi",
      "Hanko",
      "Harjavalta",
      "Hartola",
      "Hattula",
      "Hausj\u00e4rvi",
      "Hein\u00e4vesi",
      "Helsinki",
      "Vantaa",
      "Hirvensalmi",
      "Hollola",
      "Honkajoki",
      "Huittinen",
      "Humppila",
      "Hyrynsalmi",
      "Hyvink\u00e4\u00e4",
      "H\u00e4meenkyr\u00f6",
      "H\u00e4meenlinna",
      "Heinola",
      "Ii",
      "Iisalmi",
      "Iitti",
      "Ikaalinen",
      "Ilmajoki",
      "Ilomantsi",
      "Inari",
      "Inkoo",
      "Isojoki",
      "Isokyr\u00f6",
      "Imatra",
      "Janakkala",
      "Joensuu",
      "Jokioinen",
      "Jomala",
      "Joroinen",
      "Joutsa",
      "Juuka",
      "Juupajoki",
      "Juva",
      "Jyv\u00e4skyl\u00e4",
      "J\u00e4mij\u00e4rvi",
      "J\u00e4ms\u00e4",
      "J\u00e4rvenp\u00e4\u00e4",
      "Kaarina",
      "Kaavi",
      "Kajaani",
      "Kalajoki",
      "Kangasala",
      "Kangasniemi",
      "Kankaanp\u00e4\u00e4",
      "Kannonkoski",
      "Kannus",
      "Karijoki",
      "Karkkila",
      "Karstula",
      "Karvia",
      "Kaskinen",
      "Kauhajoki",
      "Kauhava",
      "Kauniainen",
      "Kaustinen",
      "Keitele",
      "Kemi",
      "Keminmaa",
      "Kempele",
      "Kerava",
      "Keuruu",
      "Kihni\u00f6",
      "Kinnula",
      "Kirkkonummi",
      "Kitee",
      "Kittil\u00e4",
      "Kiuruvesi",
      "Kivij\u00e4rvi",
      "Kokem\u00e4ki",
      "Kokkola",
      "Kolari",
      "Konnevesi",
      "Kontiolahti",
      "Korsn\u00e4s",
      "Koski Tl",
      "Kotka",
      "Kouvola",
      "Kristiinankaupunki",
      "Kruunupyy",
      "Kuhmo",
      "Kuhmoinen",
      "Kumlinge",
      "Kuopio",
      "Kuortane",
      "Kurikka",
      "Kustavi",
      "Kuusamo",
      "Outokumpu",
      "Kyyj\u00e4rvi",
      "K\u00e4rk\u00f6l\u00e4",
      "K\u00e4rs\u00e4m\u00e4ki",
      "K\u00f6kar",
      "Kemij\u00e4rvi",
      "Kemi\u00f6nsaari",
      "Lahti",
      "Laihia",
      "Laitila",
      "Lapinlahti",
      "Lappaj\u00e4rvi",
      "Lappeenranta",
      "Lapinj\u00e4rvi",
      "Lapua",
      "Laukaa",
      "Lemi",
      "Lemland",
      "Lemp\u00e4\u00e4l\u00e4",
      "Lepp\u00e4virta",
      "Lestij\u00e4rvi",
      "Lieksa",
      "Lieto",
      "Liminka",
      "Liperi",
      "Loimaa",
      "Loppi",
      "Loviisa",
      "Luhanka",
      "Lumijoki",
      "Lumparland",
      "Luoto",
      "Luum\u00e4ki",
      "Lohja",
      "Parainen",
      "Maalahti",
      "Maarianhamina",
      "Marttila",
      "Masku",
      "Merij\u00e4rvi",
      "Merikarvia",
      "Miehikk\u00e4l\u00e4",
      "Mikkeli",
      "Muhos",
      "Multia",
      "Muonio",
      "Mustasaari",
      "Muurame",
      "Myn\u00e4m\u00e4ki",
      "Myrskyl\u00e4",
      "M\u00e4nts\u00e4l\u00e4",
      "M\u00e4ntyharju",
      "M\u00e4ntt\u00e4-Vilppula",
      "Naantali",
      "Nakkila",
      "Nivala",
      "Nokia",
      "Nousiainen",
      "Nurmes",
      "Nurmij\u00e4rvi",
      "N\u00e4rpi\u00f6",
      "Orimattila",
      "Orip\u00e4\u00e4",
      "Orivesi",
      "Oulainen",
      "Oulu",
      "Padasjoki",
      "Paimio",
      "Paltamo",
      "Parikkala",
      "Parkano",
      "Pelkosenniemi",
      "Perho",
      "Pertunmaa",
      "Pet\u00e4j\u00e4vesi",
      "Pieks\u00e4m\u00e4ki",
      "Pielavesi",
      "Pietarsaari",
      "Peders\u00f6ren kunta",
      "Pihtipudas",
      "Pirkkala",
      "Polvij\u00e4rvi",
      "Pomarkku",
      "Pori",
      "Pornainen",
      "Posio",
      "Pudasj\u00e4rvi",
      "Pukkila",
      "Punkalaidun",
      "Puolanka",
      "Puumala",
      "Pyht\u00e4\u00e4",
      "Pyh\u00e4joki",
      "Pyh\u00e4j\u00e4rvi",
      "Pyh\u00e4nt\u00e4",
      "Pyh\u00e4ranta",
      "P\u00e4lk\u00e4ne",
      "P\u00f6yty\u00e4",
      "Porvoo",
      "Raahe",
      "Raisio",
      "Rantasalmi",
      "Ranua",
      "Rauma",
      "Rautalampi",
      "Rautavaara",
      "Rautj\u00e4rvi",
      "Reisj\u00e4rvi",
      "Riihim\u00e4ki",
      "Ristij\u00e4rvi",
      "Rovaniemi",
      "Ruokolahti",
      "Ruovesi",
      "Rusko",
      "R\u00e4\u00e4kkyl\u00e4",
      "Raasepori",
      "Saarij\u00e4rvi",
      "Salla",
      "Salo",
      "Saltvik",
      "Sauvo",
      "Savitaipale",
      "Savonlinna",
      "Savukoski",
      "Sein\u00e4joki",
      "Sievi",
      "Siikainen",
      "Siikajoki",
      "Siilinj\u00e4rvi",
      "Simo",
      "Sipoo",
      "Siuntio",
      "Sodankyl\u00e4",
      "Soini",
      "Somero",
      "Sonkaj\u00e4rvi",
      "Sotkamo",
      "Sottunga",
      "Sulkava",
      "Sund",
      "Suomussalmi",
      "Suonenjoki",
      "Sysm\u00e4",
      "S\u00e4kyl\u00e4",
      "Vaala",
      "Sastamala",
      "Siikalatva",
      "Taipalsaari",
      "Taivalkoski",
      "Taivassalo",
      "Tammela",
      "Tampere",
      "Tervo",
      "Tervola",
      "Teuva",
      "Tohmaj\u00e4rvi",
      "Toholampi",
      "Toivakka",
      "Tornio",
      "Turku",
      "Pello",
      "Tuusniemi",
      "Tuusula",
      "Tyrn\u00e4v\u00e4",
      "Ulvila",
      "Urjala",
      "Utaj\u00e4rvi",
      "Utsjoki",
      "Uurainen",
      "Uusikaarlepyy",
      "Uusikaupunki",
      "Vaasa",
      "Valkeakoski",
      "Valtimo",
      "Varkaus",
      "Vehmaa",
      "Vesanto",
      "Vesilahti",
      "Veteli",
      "Vierem\u00e4",
      "Vihti",
      "Viitasaari",
      "Vimpeli",
      "Virolahti",
      "Virrat",
      "V\u00e4rd\u00f6",
      "V\u00f6yri",
      "Ylitornio",
      "Ylivieska",
      "Yl\u00f6j\u00e4rvi",
      "Yp\u00e4j\u00e4",
      "\u00c4ht\u00e4ri",
      "\u00c4\u00e4nekoski"
    ),

    countries = c(
      "Afganistan",
      "Alankomaat",
      "Albania",
      "Algeria",
      "Andorra",
      "Angola",
      "Antigua ja Barbuda",
      "Argentiina",
      "Armenia",
      "Australia",
      "Azerbaid\u017ean",
      "Bahama",
      "Bahrain",
      "Bangladesh",
      "Barbados",
      "Belgia",
      "Belize",
      "Benin",
      "Bhutan",
      "Bolivia",
      "Bosnia ja Hertsegovina",
      "Botswana",
      "Brasilia",
      "Brunei",
      "Bulgaria",
      "Burkina",
      "Faso",
      "Burundi",
      "Chile",
      "Costa",
      "Rica",
      "Djibouti",
      "Dominica",
      "Dominikaaninen tasavalta",
      "Ecuador",
      "Egypti",
      "El",
      "Salvador",
      "Eritrea",
      "Espanja",
      "Etel\u00e4-Afrikka",
      "Korean tasavalta",
      "Etel\u00e4-Sudan",
      "Etiopia",
      "Fid\u017ei",
      "Filippiinit",
      "Gabon",
      "Gambia",
      "Georgia",
      "Ghana",
      "Grenada",
      "Guatemala",
      "Guinea-Bissau",
      "Guinea",
      "Guyana",
      "Haiti",
      "Honduras",
      "Indonesia",
      "Intia",
      "Irak",
      "Iran",
      "Irlanti",
      "Islanti",
      "Israel",
      "Italia",
      "It\u00e4-Timor",
      "It\u00e4valta",
      "Jamaika",
      "Japani",
      "Jemen",
      "Jordania",
      "Kambod\u017ea",
      "Kamerun",
      "Kanada",
      "Kap",
      "Verde",
      "Kazakstan",
      "Kenia",
      "Keski-Afrikan tasavalta",
      "Kiina",
      "Kirgisia",
      "Kiribati",
      "Kolumbia",
      "Komorit",
      "Kongon demokraattinen tasavalta",
      "Kongon tasavalta",
      "Kosovo",
      "Kreikka",
      "Kroatia",
      "Kuuba",
      "Kuwait",
      "Kypros",
      "Laos",
      "Latvia",
      "Lesotho",
      "Libanon",
      "Liberia",
      "Libya",
      "Liechtenstein",
      "Liettua",
      "Luxemburg",
      "Madagaskar",
      "Makedonia",
      "Malawi",
      "Malediivit",
      "Malesia",
      "Mali",
      "Malta",
      "Marokko",
      "Marshallinsaaret",
      "Mauritania",
      "Mauritius",
      "Meksiko",
      "Mikronesia",
      "Moldova",
      "Monaco",
      "Mongolia",
      "Montenegro",
      "Mosambik",
      "Myanmar",
      "Namibia",
      "Nauru",
      "Nepal",
      "Nicaragua",
      "Nigeria",
      "Niger",
      "Norja",
      "Norsunluurannikko",
      "Oman",
      "Pakistan",
      "Palau",
      "Panama",
      "Papua-Uusi-Guinea",
      "Paraguay",
      "Peru",
      "Korean demokraattinen kansantasavalta",
      "Portugali",
      "Puola",
      "P\u00e4iv\u00e4ntasaajan Guinea",
      "Qatar",
      "Ranska",
      "Romania",
      "Ruanda",
      "Ruotsi",
      "Saint Kitts ja Nevis",
      "Saint Lucia",
      "Saint Vincent ja Grenadiinit",
      "Saksa",
      "Salomonsaaret",
      "Sambia",
      "Samoa",
      "San Marino",
      "S\u00e3o Tom\u00e9 ja Pr\u00edncipe",
      "Saudi-Arabia",
      "Senegal",
      "Serbia",
      "Seychellit",
      "Sierra",
      "Leone",
      "Singapore",
      "Slovakia",
      "Slovenia",
      "Somalia",
      "Sri",
      "Lanka",
      "Sudan",
      "Suomi",
      "Suriname",
      "Swazimaa",
      "Sveitsi",
      "Syyria",
      "Tad\u017eikistan",
      "Tansania",
      "Tanska",
      "Thaimaa",
      "Togo",
      "Tonga",
      "Trinidad ja Tobago",
      "T\u0161ad",
      "T\u0161ekki",
      "Tunisia",
      "Turkki",
      "Turkmenistan",
      "Tuvalu",
      "Uganda",
      "Ukraina",
      "Unkari",
      "Uruguay",
      "Uusi-Seelanti",
      "Uzbekistan",
      "Valko-Ven\u00e4j\u00e4",
      "Vanuatu",
      "Vatikaanivaltio",
      "Venezuela",
      "Ven\u00e4j\u00e4",
      "Vietnam",
      "Viro",
      "Yhdistyneet arabiemiirikunnat",
      "Yhdistynyt kuningaskunta",
      "Yhdysvallat",
      "Zimbabwe"
    ),

    states = c(
      "Turun ja Porin l\u00e4\u00e4ni",
      "Uudenmaan ja H\u00e4meen l\u00e4\u00e4ni",
      "Pohjanmaan l\u00e4\u00e4ni",
      "Viipurin ja Savonlinnan l\u00e4\u00e4ni",
      "K\u00e4kisalmen l\u00e4\u00e4ni",
      "Savonlinnan ja Kymenkartanon l\u00e4\u00e4ni",
      "Kymenkartanon ja Savon l\u00e4\u00e4ni",
      "Vaasan l\u00e4\u00e4ni",
      "Oulun l\u00e4\u00e4ni",
      "Kymenkartanon l\u00e4\u00e4ni",
      "Savon ja Karjalan l\u00e4\u00e4ni",
      "Viipurin l\u00e4\u00e4ni",
      "Uudenmaan l\u00e4\u00e4ni",
      "H\u00e4meen l\u00e4\u00e4ni",
      "Mikkelin l\u00e4\u00e4ni",
      "Kuopion l\u00e4\u00e4ni",
      "Ahvenanmaan l\u00e4\u00e4ni",
      "Petsamon l\u00e4\u00e4ni",
      "Lapin l\u00e4\u00e4ni",
      "Kymen l\u00e4\u00e4ni",
      "Keski-Suomen l\u00e4\u00e4ni",
      "Pohjois-Karjalan l\u00e4\u00e4ni",
      "Etel\u00e4-Suomen l\u00e4\u00e4ni",
      "L\u00e4nsi-Suomen l\u00e4\u00e4ni",
      "It\u00e4-Suomen l\u00e4\u00e4ni",
      "",
      "Turun ja Porin l\u00e4\u00e4ni",
      "Uudenmaan ja H\u00e4meen l\u00e4\u00e4ni",
      "Pohjanmaan l\u00e4\u00e4ni",
      "Viipurin ja Savonlinnan l\u00e4\u00e4ni",
      "K\u00e4kisalmen l\u00e4\u00e4ni",
      "Savonlinnan ja Kymenkartanon l\u00e4\u00e4ni",
      "Kymenkartanon ja Savon l\u00e4\u00e4ni",
      "Vaasan l\u00e4\u00e4ni",
      "Oulun l\u00e4\u00e4ni",
      "Kymenkartanon l\u00e4\u00e4ni",
      "Savon ja Karjalan l\u00e4\u00e4ni",
      "Viipurin l\u00e4\u00e4ni",
      "Uudenmaan l\u00e4\u00e4ni",
      "H\u00e4meen l\u00e4\u00e4ni",
      "Mikkelin l\u00e4\u00e4ni",
      "Kuopion l\u00e4\u00e4ni",
      "Ahvenanmaan l\u00e4\u00e4ni",
      "Petsamon l\u00e4\u00e4ni",
      "Lapin l\u00e4\u00e4ni",
      "Kymen l\u00e4\u00e4ni",
      "Keski-Suomen l\u00e4\u00e4ni",
      "Pohjois-Karjalan l\u00e4\u00e4ni",
      "Etel\u00e4-Suomen l\u00e4\u00e4ni",
      "L\u00e4nsi-Suomen l\u00e4\u00e4ni",
      "It\u00e4-Suomen l\u00e4\u00e4ni"
    ),

    street_suffixes = c('tie', 'katu', 'polku', 'kuja', 'bulevardi'),

    # Prefixes parsed from a street list of Helsinki:
    # http://kartta.hel.fi/ws/geoserver/avoindata/wfs?outputFormat=application/json&REQUEST=GetFeature&typeNames=avoindata:Helsinki_osoiteluettelo

    street_prefixes = c(
      "Adolf Lindforsin ",
      "Agnes Sj\u00f6bergin ",
      "Agnetan",
      "Agricolan",
      "Ahom\u00e4en",
      "Ahvenkosken",
      "Aidasm\u00e4en",
      "Agroksen",
      "Agronomin",
      "Ahdekaunokin",
      "Bertel Jungin ",
      "Bertha Pauligin ",
      "Betlehemin",
      "Betoni",
      "Biologin",
      "Birger Kaipiaisen ",
      "Bysantin",
      "B\u00f6staksen",
      "Bengalin",
      "Benktan",
      "Bergan",
      "Caloniuksen",
      "Capellan puisto",
      "Castr\u00e9nin",
      "Chydeniuksen",
      "Cygnaeuksen",
      "Dagmarin",
      "Damaskuksen",
      "Degermosan",
      "Disan",
      "Dosentin",
      "Dunckerin",
      "D\u00f6belnin",
      "Ehrensv\u00e4rdin",
      "Eino Leinon ",
      "Elim\u00e4en",
      "Elisabeth Kochin ",
      "Eljaksen",
      "Elon",
      "Elon",
      "Edelfeltin",
      "Eduskunta",
      "Eerik Pyh\u00e4n ",
      "Franz\u00e9nin",
      "Fredrikin",
      "Freesen",
      "Fabianin",
      "Fagotti",
      "Fahlanderin puisto",
      "Fallin",
      "Fallkullan",
      "Fallpakan",
      "Fastb\u00f6len",
      "Gadolinin",
      "Gneissi",
      "Granfeltin",
      "Gunillan",
      "Gunnel Nymanin ",
      "Graniitti",
      "Gustav Pauligin ",
      "Gyld\u00e9nin",
      "Gotlannin",
      "Haapa",
      "Haagan pappilan",
      "Haahka",
      "Haakoninlahden",
      "Haaksi",
      "Hankasuon",
      "Hannukselan",
      "Harakkamyllyn",
      "Harava",
      "Harbon",
      "Ilmattaren",
      "Ilom\u00e4en",
      "Ilotulitus",
      "Iltaruskon",
      "Iltat\u00e4hden",
      "Ilves",
      "Immolan",
      "Ilkan",
      "Ida Ekmanin ",
      "Ies",
      "J\u00e4lsi",
      "J\u00e4ms\u00e4n",
      "J\u00e4nk\u00e4",
      "J\u00e4nne",
      "J\u00e4rk\u00e4le",
      "J\u00e4tk\u00e4saaren",
      "J\u00e4ttil\u00e4isen",
      "Jyv\u00e4",
      "J\u00e4gerhornin",
      "J\u00e4k\u00e4l\u00e4",
      "Kukkaniityn",
      "Kolsin",
      "Kolu",
      "Kolvi",
      "Kuhankeitt\u00e4j\u00e4n",
      "Katajaharjun",
      "Kiit\u00e4j\u00e4n",
      "Kilpolan",
      "Kimalais",
      "Kimmon",
      "Laajasalon",
      "Laakavuoren",
      "Lemun",
      "Lentokapteenin ",
      "Lepolan",
      "Louhen",
      "Louhikko",
      "Lukkarim\u00e4en",
      "Laurinniityn",
      "Lautamiehen",
      "Mamsellimyllyn",
      "Mannerheimin",
      "Maanmittarin",
      "Maapadon",
      "Maa",
      "Maasalon",
      "Maas\u00e4lv\u00e4n",
      "Maatullin",
      "Malminkartanon",
      "Maneesi",
      "Niittyl\u00e4n",
      "Niemi",
      "Niitynper\u00e4n",
      "Nikon",
      "Nils Westermarckin ",
      "Nordenski\u00f6ldin",
      "Nelikko",
      "Neon",
      "Nervanderin",
      "Neulapadon",
      "Ostos",
      "Orapihlaja",
      "Oras",
      "Orava",
      "Osmon",
      "Osuuskunnan",
      "Orisaaren",
      "Ormus",
      "Orvokki",
      "Oterman",
      "Pore",
      "Porin",
      "Porkkalan",
      "Py\u00f6r\u00f6kiven",
      "Puusep\u00e4n",
      "Puuska",
      "Pohjolan",
      "Poikasaarten",
      "Purjetuulen",
      "Puroniityn",
      "Rukkilan",
      "Ruko",
      "Rukoushuoneen",
      "Runebergin",
      "Runoilijan",
      "Runokyl\u00e4n",
      "Runonlaulajan",
      "Rantavaraston",
      "Rapakiven",
      "Rapolan",
      "Santerlan",
      "Saparon",
      "Sapilas",
      "Saram\u00e4en",
      "Saanatunturin",
      "Sade",
      "Sahaajan",
      "Salakka",
      "Salama",
      "Salava",
      "Tuomarinkyl\u00e4n",
      "Tuulilasin",
      "Taavetti Laitisen ",
      "Taavin",
      "Tahti",
      "Taimiston",
      "Tukkisillan",
      "Tuohikoivun",
      "Tyynel\u00e4n",
      "Tyynylaavan",
      "Uussillan",
      "Urheilu",
      "Urkurin",
      "Urpu",
      "Uskalikon",
      "Usva",
      "Uudenkaupungin",
      "Uunilinnun",
      "Uunisep\u00e4n",
      "Uurtajan",
      "Vanha Raja",
      "Veropellon",
      "Ver\u00e4j\u00e4m\u00e4en",
      "Vesakko",
      "Vesalan",
      "Vellikellon",
      "Verkko",
      "Verso",
      "Vaakalinnun",
      "Vaarna",
      "Wavulinin",
      "Walentin Chorellin ",
      "Wallinin",
      "Waseniuksen puisto",
      "Wecksellin",
      "Willebrandin",
      "Winqvistin",
      "W\u00e4in\u00f6 Aaltosen ",
      "Werner Wir\u00e9nin ",
      "Yhteiskoulun",
      "Ylipalon",
      "Yll\u00e4stunturin",
      "Yl\u00e4-Fallin ",
      "Yl\u00e4kasken",
      "Yl\u00e4nk\u00f6",
      "Yl\u00e4tuvan",
      "Yrj\u00f6-Koskisen ",
      "Yrj\u00f6n",
      "Yrttimaan",
      "Zaidan"
    )
  ),

  public = list(
    street_prefix = function(){
      return(private$random_element(private$street_prefixes))
    },

    city_name = function(){
      return(private$random_element(private$cities))
    },

    state = function(){
      return(private$random_element(private$states))
    }
  )
)
# internet --------------------------------
internet_fi_FI = R6Class(
  "internet_fi_FI",
  inherit = internet_en_US,
  cloneable = FALSE,
  private = list(
    free_email_domains = c(
      'gmail.com', 'googlemail.com', 'hotmail.com', 'suomi24.fi',
      'kolumbus.fi', 'luukku.com', 'surffi.net'),

    tlds = c('com', 'com', 'com', 'fi', 'fi', 'net', 'org')
  )
)

# job -------------------------------------
job_fi_FI = R6Class(
  "job_fi_FI",
  inherit = job_init,
  cloneable = FALSE,
  private = list(
    jobs = c(
      "Agrologi",
      "Aikuiskoulutusjohtaja",
      "Aineenopettaja",
      "Ajoj\u00e4rjestelij\u00e4",
      "Akatemian tutkijatohtori",
      "Aktuaari",
      "Alakoulujen apulaisrehtori",
      "Alikersantti",
      "Alkoholiasiain ylitarkastaja",
      "Back office asiantuntija",
      "Ballistikko",
      "Bioanalyytikko",
      "Brand manager",
      "Budjettiassistentti",
      "Business controller",
      "Cc-yritysneuvoja",
      "Cert-fi -yksik\u00f6n p\u00e4\u00e4llikk\u00f6",
      "Communication officer",
      "Consul",
      "Counsellor",
      "Data-analyytikko",
      "Dekaanin sihteeri",
      "Dieettikeitt\u00e4j\u00e4",
      "Digitaalisen kokeen toteuttaja",
      "Diplomi-insin\u00f6\u00f6ri",
      "Dokumentoija",
      "Dosentti",
      "Eakr-koordinaattori",
      "Editoija",
      "Edunvalvontasihteeri",
      "Egr-ohjaaja",
      "Ekokampuskoordinaattori",
      "Elektroniikka-asentaja",
      "Elinkeinop\u00e4\u00e4llikk\u00f6",
      "Elokuvakonemestari",
      "Elputeknikko",
      "El\u00e4inl\u00e4\u00e4kint\u00f6neuvos",
      "Faktori",
      "Farmakologi",
      "Fidipro-professori",
      "Filmiteknikko",
      "Financial controller",
      "Floristi",
      "Fysioterapeutti",
      "Fyysikko",
      "Gemmologi",
      "Gentax-j\u00e4rjestelm\u00e4asiantuntija",
      "Geofyysikko",
      "Gis-asiantuntija",
      "Gm huto p\u00e4\u00e4k\u00e4ytt\u00e4j\u00e4",
      "Graafikko",
      "Haastattelija",
      "Hakukoordinaattori",
      "Hallimestari",
      "Hammashoitaja",
      "Hankearkkitehti",
      "Harjaantumisopetuksen erityisluokanopettaja",
      "Havainnontarkastaja",
      "Helikopterihuoltoaliupseeri",
      "Henkikirjoittaja",
      "Johtava kuluttajaoikeusneuvoja",
      "Ict-arkkitehti",
      "Ihmisoikeuskeskuksen johtaja",
      "Iktyonomi",
      "Ilma-aluksen p\u00e4\u00e4llikk\u00f6",
      "Iltap\u00e4iv\u00e4kerhon ohjaaja",
      "Immunologi",
      "Info-palvelupisteen hoitaja",
      "Innoittaja",
      "Jakeluvastaava",
      "Jalkav\u00e4en tarkastaja",
      "Jaoksen johtaja",
      "Jatkokoulutettava el\u00e4inl\u00e4\u00e4k\u00e4ri",
      "Jhs-projektip\u00e4\u00e4llikk\u00f6",
      "Johdon asiantuntija",
      "Joukkoliikenneasiantuntija",
      "Julkaisu- ja markkinointisuunnittelija",
      "Junamies",
      "Juontaja",
      "Kaapeli-insin\u00f6\u00f6ri",
      "Kabinettisihteeri",
      "Kadettikoulun johtaja",
      "Kahvila-apulainen",
      "Kairaaja",
      "Kalabiologi",
      "Kampanjap\u00e4\u00e4llikk\u00f6",
      "Kanavanhoitaja",
      "Kapellimestari",
      "Karjamestari",
      "Laadunvarmistuksen asiantuntija",
      "Laboraattori",
      "Laillisuusvalvontasihteeri",
      "Laki- ja henkil\u00f6st\u00f6asiainjohtaja",
      "Lapsiasiavaltuutettu",
      "Laskennan kehitt\u00e4misp\u00e4\u00e4llikk\u00f6",
      "Lataamoinsin\u00f6\u00f6ri",
      "Lautakuntasihteeri",
      "Lavastaja",
      "Maa- ja vesirakennusty\u00f6ntekij\u00e4",
      "Maisema-arkkitehti",
      "Majakkateknikko",
      "Maksatusasiantuntija",
      "Malli",
      "Mareografihoitaja",
      "Mastoteknikko",
      "Matemaatikko",
      "Media- ja kulttuurikoordinaattori",
      "Neuropsykologi",
      "Nimikkeist\u00f6p\u00e4\u00e4llikk\u00f6",
      "Nosturinkuljettaja",
      "Notaari",
      "Nukutusl\u00e4\u00e4k\u00e4ri",
      "Numerointisihteeri",
      "Nuorempi konstaapeli",
      "N\u00e4ytearkistonhoitaja",
      "N\u00e4\u00f6nk\u00e4yt\u00f6n asiantuntija",
      "Obduktiokoordinaattori",
      "Observaattori",
      "Offset-monistaja",
      "Ohjaaja",
      "Oikaisulautakunnan puheenjohtaja",
      "Oleskelulupak\u00e4sittelij\u00e4",
      "Omistajaohjausyksik\u00f6n johtaja",
      "Ompelija",
      "Opas",
      "Operaatiop\u00e4\u00e4llikk\u00f6",
      "Padonhoitaja",
      "Paikallisjohtaja",
      "Pakolaiskeskuksen johtaja",
      "Palkanlaskentap\u00e4\u00e4llikk\u00f6",
      "Panostaja",
      "Paperikonservaattori",
      "Parturi-kampaaja",
      "Passi- ja maahantulolupavirkailija/toimistovirkailija",
      "Pataljoonan komentaja",
      "Pedagogi",
      "Radioasentaja",
      "Rahakammion johtaja",
      "Raideliikennejohtaja",
      "Rajael\u00e4inl\u00e4\u00e4k\u00e4ri",
      "Rakennemuutosjohtaja",
      "Raportoinnin asiantuntija",
      "Ratainsin\u00f6\u00f6ri",
      "Rauhanturvaaja",
      "Ravintohaastattelija",
      "Rehtori",
      "Saamelaisarkistonhoitaja",
      "Sadehavainnontekij\u00e4",
      "Sairaala-apulainen",
      "Saksan, englannin ja ruotsinkielen lehtori",
      "Salkunhoitaja",
      "Sanomakeskusaliupseeri",
      "Satamap\u00e4\u00e4llikk\u00f6",
      "Seismologi",
      "Sektorijohtaja",
      "Selvittelij\u00e4",
      "Taajuussuunnittelija",
      "Taideamanuenssi",
      "Tallentaja",
      "Tanssija",
      "Tapahtumakoordinaattori",
      "Tarjoilija",
      "Tasa-arvoneuvos",
      "Tavaraliikennelupak\u00e4sittelij\u00e4",
      "Team finland kasvu- ja kansainv\u00e4listymiskoordinaattori",
      "Teemap\u00e4\u00e4llikk\u00f6",
      "Ulkoasiainneuvos",
      "Ulosottojohtaja",
      "Ultra\u00e4\u00e4nihoitaja",
      "Unix-asiantuntija",
      "Upseeri",
      "Urakonsultti",
      "Urheiluohjaaja",
      "Vaaitsija",
      "Vac-yhdyshenkil\u00f6",
      "Vahingonkorvausasiantuntija",
      "Vaihteenhoitaja",
      "Vakuustoimittaja",
      "Valaistusmestari",
      "Vammaisasiamies",
      "Vanhempi tutkijainsin\u00f6\u00f6ri",
      "Vapaa-ajan ohjaaja",
      "Varadekaani",
      "Www-asiantuntija",
      "Yhdenvertaisuusvaltuutettu",
      "Yhteinen tuntiopettaja",
      "Yksikk\u00f6sihteeri",
      "Yleinen edunvalvoja",
      "Yliaktuaari",
      "Yll\u00e4pidon palvelup\u00e4\u00e4llikk\u00f6",
      "Yl\u00e4asteen rehtori",
      "Ymp\u00e4rint\u00f6nsuojeluyksik\u00f6n p\u00e4\u00e4llikk\u00f6",
      "Yritt\u00e4jyysneuvoja",
      "Yva-koordinaattori"
    )
  )
)

# phone_number ------------------------------
phone_number_fi_FI = R6Class(
  "phone_number_fi_FI",
  inherit = phone_number_init,
  cloneable = FALSE,
  private = list(
    formats = c(
      '+358 ## #######',
      '+358 #########',
      '+358#########',
      '(+358) #########',
      '0#########',
      '0## ### ####'
    )
  )
)

# ssn ----------------------------------------
ssn_fi_FI = R6Class(
  "ssn_fi_FI",
  inherit = ssn_init,
  cloneable = FALSE,
  private = list(
    vat_id_formats = 'FI########',
    checksum = function(hetu) {
      checksum_characters = setdiff(c(seq(0, 9), LETTERS),
                                    c("G", "I", "O", "Q", "Z"))
      return(checksum_characters[(as.integer(hetu) %% 31) + 1])
    },

    get_century_code = function(year) {
      # Returns the century code for a given year
      if (year >= 2000 & year < 3000) {
        sep = "A"
      } else {
        if (year >= 1900 & year < 2000){
          sep = "-"
        } else {
          stop("Finnish SSN do not support people born before the year 1800 or after the year 2999")
        }
      }
      return(sep)
    }
  ),

  public = list(
    ssn = function(min_age = 0, max_age = 105, artificial = FALSE) {
      # HETU, Swedish: Personbeteckning). This function assigns random
      # gender to person.
      # HETU consists of eleven characters of the form DDMMYYCZZZQ, where
      # DDMMYY is the date of birth, C the century sign, ZZZ the individual
      # number and Q the control character (checksum). The sign for the
      # century is either + (1800–1899), - (1900–1999), or A (2000–2099).
      # The individual number ZZZ is odd for males and even for females.
      # For people born in Finland its range is 002-899
      # (larger numbers may be used in special cases).
      # An example of a valid code is 311280-888Y.
      # https://en.wikipedia.org/wiki/National_identification_number #Finland

      age = ddays(private$random_int(min_age * 365, max_age * 365))
      birthday = today() - age
      hetu_date = sprintf("%02d%02d%s", day(birthday),
                          month(birthday),
                          str_sub(year(birthday), -2, -1))
      if (artificial) {
        suffix = sample(seq(900, 998), 1)
      } else {
        suffix = sprintf("%03d", sample(seq(2, 898), 1))
      }
      checksum = private$checksum(str_c(hetu_date, suffix))
      sep = private$get_century_code(year(birthday))
      hetu = str_c(hetu_date, sep, suffix, checksum)
      return(hetu)
    },

    vat_id = function() {
      # http://ec.europa.eu/taxation_customs/vies/faq.html#item_11
      # :return: A random Finnish VAT ID
      return(private$bothify(private$random_element(private$vat_id_formats)))
    }
  )
)

## credit_card -----------------
credit_card_fi_FI = R6Class(
  "credit_card_fi_FI",
  inherit = credit_card_init,
  cloneable = FALSE,
  private = list(
    first_names = (person_fi_FI$new())$.__enclos_env__$private$first_names,
    first_name = (person_fi_FI$new())$first_name,
    last_names = (person_fi_FI$new())$.__enclos_env__$private$last_names,
    last_name = (person_fi_FI$new())$last_name
  )
)




## profile ------------------
profile_fi_FI = R6Class(
  "profile_fi_FI",
  inherit = profile_init,
  cloneable = FALSE,
  public = list(
    simple_profile = function(sex) {
      # Generates a basic profile with personal informations
      SEX = c("F", "M")
      if (missing(sex)) {
        sex = sample(SEX, 1)
      }
      if (!(sex %in% SEX)) {
        sex = sample(SEX, 1)
      }

      name = ifelse(sex == "F",
                    (person_fi_FI$new())$name_female(),
                    (person_fi_FI$new())$name_male())
      temp = list(
        "username" = (internet_fi_FI$new())$user_name(),
        "name" = name,
        "sex" = sex,
        "address" = (address_fi_FI$new())$address(),
        "mail" = (internet_fi_FI$new())$free_email(),
        "birthdate" = (date_time_init$new())$date_of_birth()
      )
      return(temp)
    },

    profile = function(fields, sex) {
      # Generates a complete profile.
      # If "fields" is not empty, only the fields in the list will be returned

      if (missing(fields)) fields = c()

      field = list(
        "job" = (job_fi_FI$new())$job(),
        "company" = (company_fi_FI$new())$company(),
        "ssn" = (ssn_fi_FI$new())$ssn(),
        "residence" = (address_fi_FI$new())$address(),
        "current_location" = c((geo_init$new())$latitude(),
                               (geo_init$new())$longitude()),
        "blood_group" = sample(c(
          "A+", "A-", "B+", "B-", "AB+", "AB-", "O+", "O-"), 1),
        "website" = replicate(sample(seq(4), 1), (internet_fi_FI$new())$url())
      )

      field = append(field, self$simple_profile(sex))
      # field selection

      if (length(fields)) {
        nms = intersect(names(field), fields)
        field = field[nms]
      }
      return(field)
    }

  )
)
LuYang19/faker documentation built on Jan. 3, 2020, 12:07 a.m.