1 getting started

Start with clean workspace

rm(list = ls())

2 Goal

Now we harvested the names of scholars from specific departments, it is time to webscrape their publications (and some other stuff along the way). There are many ways of doing this:

What we are not going to deal with here is how to tackle rate limits, alternating vpns, etc.

3 Custom functions

  • fpackage.check: Check if packages are installed (and install if not) in R (source).
  • fsave: Save to processed data in repository
  • fload: To load the files back after an fsave
  • fshowdf: To print objects (tibbles / data.frame) nicely on screen in .rmd
fpackage.check <- function(packages) {
    lapply(packages, FUN = function(x) {
        if (!require(x, character.only = TRUE)) {
            install.packages(x, dependencies = TRUE)
            library(x, character.only = TRUE)
        }
    })
}

fsave <- function(x, file = NULL, location = "./data/processed/") {
    ifelse(!dir.exists("data"), dir.create("data"), FALSE)
    ifelse(!dir.exists("data/processed"), dir.create("data/processed"), FALSE)
    if (is.null(file))
        file = deparse(substitute(x))
    datename <- substr(gsub("[:-]", "", Sys.time()), 1, 8)
    totalname <- paste(location, datename, file, ".rda", sep = "")
    save(x, file = totalname)  #need to fix if file is reloaded as input name, not as x. 
}

fload <- function(filename) {
    load(filename)
    get(ls()[ls() != "filename"])
}

fshowdf <- function(x, ...) {
    knitr::kable(x, digits = 2, "html", ...) %>%
        kableExtra::kable_styling(bootstrap_options = c("striped", "hover")) %>%
        kableExtra::scroll_box(width = "100%", height = "300px")
}

4 packages

packages <- c("tidyverse", "scholar", "openalexR", "rvest", "jsonlite")
fpackage.check(packages)
#> [[1]]
#> NULL
#> 
#> [[2]]
#> NULL
#> 
#> [[3]]
#> NULL
#> 
#> [[4]]
#> NULL
#> 
#> [[5]]
#> NULL

5 input

We use the file created in the previous step (names with genders attached) as input. Anne Maaike and I tidied up the data set of the previous step a bit. Please use this one:

Download 20230620df_gender_jt.rda.

Save file in correct directory: ‘./data/processed’.

df <- fload("./data/processed/20230620df_gender_jt.rda")

6 Nice to have an id of the scholar which is linked to publications

6.1 OpenAlex

If you use openalexR in research, please cite: (Priem, Piwowar, and Orr 2022)

Before we start playing ourselves. Let us have a look at the website.

Okay, time to play. Make yourself known to openalex.

options(openalexR.mailto = "jochem.tolsma@ru.nl")  #please Please replace with your own emailadress

Let us try to find me.

url <- "https://api.openalex.org/authors?search=Jochem Tolsma"

# based on what you have learned so far, you would probably first try:
jt <- read_html("https://api.openalex.org/authors?search=Jochem+Tolsma") %>%
    html_text2()

substr(jt, 1, 100)
#> [1] "{\"meta\":{\"count\":1,\"db_response_time_ms\":80,\"page\":1,\"per_page\":25,\"groups_count\":null},\"results\":[{"

Okay, everything is in this jt object, but not very conveniently.

The openalex page is actually a json object so will read in that. And make it a bit prettier.

jt_json <- fromJSON("https://api.openalex.org/authors?search=Jochem+Tolsma", simplifyVector = FALSE)
glimpse(jt_json, max.level = 1)
#> List of 3
#>  $ meta    :List of 5
#>  $ results :List of 1
#>  $ group_by: list()
jt_json[["results"]][[1]][["display_name"]]
#> [1] "Jochem Tolsma"
df_jt <- jt_json %>%
    .$results %>%
    .[[1]] %>%
    discard(is_empty)

Can you find my affiliations?

Some people (i.e. the developers of the openalexR package) have spend a little more time on converting this JSON object, let us take advantage of that:

df <- oa_fetch(entity = "author", search = "Jochem Tolsma")
fshowdf(df)
id display_name display_name_alternatives relevance_score ids orcid works_count cited_by_count counts_by_year affiliation_display_name affiliation_id affiliation_ror affiliation_country_code affiliation_type affiliation_lineage affiliations_other x_concepts works_api_url
https://openalex.org/A5087380803 Jochem Tolsma J. Tolsma , Jochem Tolsma, J L Tolsma 8104.95 https://openalex.org/A5087380803 , https://orcid.org/0000-0002-4411-6932 https://orcid.org/0000-0002-4411-6932 84 1699 2024, 2023, 2022, 2021, 2020, 2019, 2018, 2017, 2016, 2015, 2014, 2013, 2012, 7, 5, 4, 3, 2, 2, 3, 4, 12, 4, 8, 7, 1, 119, 202, 162, 166, 199, 151, 157, 97, 149, 126, 106, 91, 57 Radboud University Nijmegen https://openalex.org/I145872427 https://ror.org/016xsfp80 NL education https://openalex.org/I145872427 https://openalex.org/I169381384 , https://openalex.org/I4210087716 https://openalex.org/C144024400 , https://openalex.org/C17744445 , https://openalex.org/C199539241 , https://openalex.org/C162324750 , https://openalex.org/C15744967 , https://openalex.org/C33923547 , https://openalex.org/C19165224 , https://openalex.org/C138885662 , https://openalex.org/C137403100 , https://openalex.org/C77805123 , https://openalex.org/C71924100 , https://openalex.org/C41008148 , https://openalex.org/C149923435 , https://openalex.org/C4249254 , https://openalex.org/C205649164 , https://openalex.org/C36289849 , https://openalex.org/C41895202 , https://openalex.org/C134306372 , https://openalex.org/C121332964 , https://openalex.org/C105795698 , https://www.wikidata.org/wiki/Q21201 , https://www.wikidata.org/wiki/Q36442 , https://www.wikidata.org/wiki/Q7748 , https://www.wikidata.org/wiki/Q8134 , https://www.wikidata.org/wiki/Q9418 , https://www.wikidata.org/wiki/Q395 , https://www.wikidata.org/wiki/Q23404 , https://www.wikidata.org/wiki/Q5891 , https://www.wikidata.org/wiki/Q41710 , https://www.wikidata.org/wiki/Q161272 , https://www.wikidata.org/wiki/Q11190 , https://www.wikidata.org/wiki/Q21198 , https://www.wikidata.org/wiki/Q37732 , https://www.wikidata.org/wiki/Q3044431, https://www.wikidata.org/wiki/Q1071 , https://www.wikidata.org/wiki/Q34749 , https://www.wikidata.org/wiki/Q8162 , https://www.wikidata.org/wiki/Q7754 , https://www.wikidata.org/wiki/Q413 , https://www.wikidata.org/wiki/Q12483 , Sociology , Political science , Law , Economics , Psychology , Mathematics , Anthropology , Philosophy , Ethnic group , Social psychology , Medicine , Computer science , Demography , Demographic economics , Geography , Social science , Linguistics , Mathematical analysis , Physics , Statistics , 0 , 0 , 1 , 0 , 0 , 0 , 1 , 0 , 2 , 1 , 0 , 0 , 1 , 1 , 0 , 1 , 1 , 1 , 0 , 1 , 78.6 , 76.2 , 71.4 , 60.7 , 58.3 , 50 , 41.7 , 41.7 , 40.5 , 38.1 , 35.7 , 34.5 , 34.5 , 32.1 , 29.8 , 26.2 , 22.6 , 22.6 , 21.4 , 20.2 https://api.openalex.org/works?filter=author.id:A5087380803

But please note, that df contains less information than df_jt.

Okay, and now my papers and co-authors.

df_papers <- oa_fetch(entity = "works", author.id = df$id)
df_papers$author[1]
#> [[1]]
#>                              au_id  au_display_name                              au_orcid
#> 1 https://openalex.org/A5010780363 Tom van der Meer https://orcid.org/0000-0002-6164-2926
#> 2 https://openalex.org/A5087380803    Jochem Tolsma https://orcid.org/0000-0002-4411-6932
#>   author_position is_corresponding
#> 1           first            FALSE
#> 2            last            FALSE
#>                                                                              au_affiliation_raw
#> 1 Department of Political Science, University of Amsterdam, 1012 DL Amsterdam, The Netherlands;
#> 2               Department of Sociology, Radboud University, 6500 HE Nijmegen, The Netherlands;
#>                    institution_id    institution_display_name           institution_ror
#> 1 https://openalex.org/I887064364     University of Amsterdam https://ror.org/04dkp9463
#> 2 https://openalex.org/I145872427 Radboud University Nijmegen https://ror.org/016xsfp80
#>   institution_country_code institution_type             institution_lineage
#> 1                       NL        education https://openalex.org/I887064364
#> 2                       NL        education https://openalex.org/I145872427

This works like a charm. But once again be aware that oa_fetch does removes some info from the JSON object. Thus, at times, it is best to manipulate this object yourself.

Naturally, at times you also have multiple hits on the same name. So you need to build in checks/filters etc..

7 Google: scholar id

While openalex is great and the way to go imho, you may want to use additional sources for the same info. Let us demonstrate google scholar.

Once again, with the webscraping tools you master at this point, you actually would not need a package/wrapper such as scholar.

You will learn a lot by looking at the code of the package scholar: [(https://github.com/YuLab-SMU/scholar)].

7.1 fixing a ‘bug’ in the get_scholar_id function.

get_scholar_id_fix <- function(last_name = "", first_name = "", affiliation = NA) {
    if (!any(nzchar(c(first_name, last_name))))
        stop("At least one of first and last name must be specified!")
    site <- getOption("scholar_site")
    url <- paste0(site, "/citations?view_op=search_authors&mauthors=", first_name, "+", last_name, "&hl=en&oi=ao")
    page <- get_scholar_resp(url)
    if (is.null(page))
        return(NA)
    aa <- httr::content(page, as = "text")
    # added by Bas Hofstra: bugfix for IDs that have a dash ('-')
    ids <- substring(aa, regexpr(";user=", aa))
    ids <- substr(ids, 1, 19)  # error prone, but unsure how to solve otherwise
    # if (nchar(stringr::str_extract_all(string = aa, pattern =
    # ';user=[[:alnum:]]+[[:punct:]]')[[1]][1]) < 18) { ids <- stringr::str_extract_all(string =
    # aa, pattern = ';user=[[:alnum:]]+[[:punct:]]+[[:alnum:]]+[[:punct:]]') } else { ids <-
    # stringr::str_extract_all(string = aa, pattern = ';user=[[:alnum:]]+[[:punct:]]') }
    if (length(unlist(ids)) == 0) {
        message("No Scholar ID found.")
        return(NA)
    }
    ids <- ids %>%
        unlist %>%
        gsub(";user=|[[:punct:]]$", "", .) %>%
        unique
    if (length(ids) > 1) {
        profiles <- lapply(ids, scholar::get_profile)
        if (is.na(affiliation)) {
            x_profile <- profiles[[1]]
            warning("Selecting first out of ", length(profiles), " candidate matches.")
        } else {
            which_profile <- sapply(profiles, function(x) {
                stringr::str_count(string = x$affiliation, pattern = stringr::coll(affiliation, ignore_case = TRUE))
            })
            if (all(which_profile == 0)) {
                warning("No researcher found at the indicated affiliation.")
                return(NA)
            } else {
                x_profile <- profiles[[which(which_profile != 0)]]
            }
        }
    } else {
        x_profile <- scholar::get_profile(id = ids)
    }
    return(x_profile$id)
}

7.2 one profile

What we now have is a data frame of staff members from several universities. So we successfully gathered the anchor data set we can move on with. Next, we need to find out whether these staff have a Google Scholar profile. I imagine you have accessed Google Scholar many times during your studies for finding scientists or publications. The nice thing about Google Scholar is that it lists collaborators, publications, and citations on profiles. So what we first need to do is look for Google Scholar profiles among staff. Luckily, we cleaned first and last names and have their affiliation.

So let’s move on with attempting to find Google Scholar profiles. The package scholar has a very nice function get_scholar_id. It needs a last name, first name, and affiliation. Luckily, we already found those university websites! So we can fill in those. Let’s try it for Jochem first. Note that we need function get_scholar_id_fix before we can start (see code chunk above).

get_scholar_id_fix(last_name = "tolsma", first_name = "jochem", affiliation = "radboud university")
#> [1] "Iu23-90AAAAJ"

We now know that Jochem’s Scholar ID is “Iu23-90AAAAJ”. That’s very convenient, because now we can use the package scholar to extract a range of useful information from his Google Scholar profile. Let’s try it out on his profile first. Notice the nice function get_profiles. We simply have to input his Google Scholar ID and it shows everything on the profile

get_profile("Iu23-90AAAAJ")  # Jochem's profile
#> $id
#> [1] "Iu23-90AAAAJ"
#> 
#> $name
#> [1] "Jochem Tolsma"
#> 
#> $affiliation
#> [1] "Professor, Radboud University Nijmegen / University of Groningen"
#> 
#> $total_cites
#> [1] 3313
#> 
#> $h_index
#> [1] 27
#> 
#> $i10_index
#> [1] 43
#> 
#> $fields
#> [1] "social divisions between groups" "segregation"                    
#> [3] "inequality"                     
#> 
#> $homepage
#> [1] "http://www.jochemtolsma.nl/"
#> 
#> $coauthors
#>  [1] "Gerbert Kraaykamp"   "Tom van der Meer"    "Maarten HJ Wolbers"  "Stijn Ruiter"       
#>  [5] "Michael Savelkoul"   "peer scheepers"      "Marcel Lubbers"      "Marcel Coenders"    
#>  [9] "Joran Lameris"       "Nan Dirk de Graaf"   "Sara Kinsbergen"     "dr. Natascha Notten"
#> [13] "Carlijn Bussemakers" "Tobias H. Stark"     "Thomas Feliciani"    "Andreas Flache"     
#> [17] "Marloes de Lange"    "Matthijs Kalmijn"    "Lincoln Quillian"    "Ariana Need"        
#> 
#> $available
#> [1] 12
#> 
#> $not_available
#> [1] 0

So let’s gather these data, but now for all staff simultaneously! For this, we use the for loop again. The for loop I make below is a bit more complicated, but follows the same logic as before. For each row (i) in our dataset, we attempt to query Google Scholar on the basis of the first name, last name, and affiliation listed in that row in the data frame. We use some handy subsetting, e.g., staff[i, c("last_name")] means we input last_name= with the last name (which is the third column) found in the i-th row in the data frame. The same goes for first name and affiliation. We fill up gs_id in the data frame with the Google Scholar IDs we’ll hopefully find. The for (i in nrow(lpol_staff)) simply means we let i run for however many rows the data frame has. Finally, the tryCatch({}) function makes that we can continue the loop even though we may encounter errors for a given row. Here, that probably means that not every row (i.e., sociology staff member) can be found on Google Scholar. We print the error, but continue the for loop with the tryCatch({}) function. Note also how we sometimes get rate limited by Google Scholar: it is somewhat ambiguous how often we need to retry, or when we get blocked. We set a system sleep to try and circumvent that somewhat.

7.3 a simple loop

df$gs_id <- ""  #let us create an empty variable

for (i in 1:nrow(df)) {
    print(i)  #to keep track where we are
    time <- runif(1, 0, 1)  #hopefully to avoid fast rate limits
    Sys.sleep(time)

    tryCatch({
        df[i, c("gs_id")] <- get_scholar_id_fix(last_name = df[i, c("lastname")], first_name = df[i,
            c("firstname")], affiliation = df[i, c("affil1")])  #let us first try with affil1 

    }, error = function(e) {
        cat("ERROR :", conditionMessage(e), "\n")
    })  # continue on error, but print the error
}

# let us try the different affiliation
for (i in 1:nrow(df)) {
    if (df$gs_id == "") {
        print(i)  #to keep track where we are
        time <- runif(1, 0, 1)  #hopefully to avoid fast rate limits
        Sys.sleep(time)

        tryCatch({
            df[i, c("gs_id")] <- get_scholar_id_fix(last_name = df[i, c("lastname")], first_name = df[i,
                c("firstname")], affiliation = df[i, c("affil2")])  #let us first with affil2 

        }, error = function(e) {
            cat("ERROR :", conditionMessage(e), "\n")
        })  # continue on error, but print the error
    }
}

If everything worked out correctly, you could save the new dataset.

df_gsid <- df
fsave(df_gsid)

8 Google: publications and profiles

Perhaps you could stuck along the way. This is very likely, because of annoying rate limits. We thus prepared the file for you.

Please use this one:

Download 20230621df_gsid_jt.rda.

Save file in correct directory: ‘./data/processed’.

df <- fload("./data/processed/20230621df_gsid_jt.rda")  #load dataset (adapt name if necessary)

# have a quick look
fshowdf(df)
id uni discipline year name affil1 affil2 position np lastname firstname ini gender gs_id
f84cb8 UU sociology 2022 Ece Arat UU phd arat ece female _MW2-cgAAAAJ&hl
ad5eeb UU sociology 2022 Marcel Van Assen UU full_prof van assen marcel male uwPhxMcAAAAJ
5a5e57 UU sociology 2022 Weverthon Barbosa Machado UU other machado weverthon male miJiVQcAAAAJ
7c3ed2 UU sociology 2022 Vardan Barsegyan UU other barsegyan vardan male yh5pBBoAAAAJ
944260 UU sociology 2022 Rutger Blom UU other blom rutger male RNktFGMAAAAJ
6c23fc UU sociology 2022 Lute Bos UU other bos lute male
a0e6e4 UU sociology 2022 Anne Brons UU other brons anne female
d6e255 UU sociology 2022 Janine De Bruijn UU other de bruijn janine female
6f4bc6 UU sociology 2022 Vincent Buskens UU full_prof buskens vincent male ITE9bHMAAAAJ
3c4a44 UU sociology 2022 Tobias Cinjee UU other cinjee tobias male fvwZ6j4AAAAJ
8a3ee4 UU sociology 2022 Rense Corten UU associate_prof corten rense male pehgQfIAAAAJ
63e8bf UU sociology 2022 Marleen Damman UU assistant_prof damman marleen female MEv-V_YAAAAJ
6c1d9c UU sociology 2022 Lucas Drouhot UU assistant_prof drouhot lucas male lDKj5RAAAAAJ
aec255 UU sociology 2022 Christian Fang UU phd fang christian male FePrRkEAAAAJ
6ca1b5 UU sociology 2022 Paula Hoffmann UU phd hoffmann paula female
352266 UU sociology 2022 Eva Jaspers UU associate_prof jaspers eva female Ss6I3eAAAAAJ
61e993 UU sociology 2022 Rita Jiao UU phd jiao rita female
b3a3c0 UU sociology 2022 Matthias Kern UU other kern matthias male rsKP_ckAAAAJ
2a363a UU sociology 2022 Antonie Knigge UU assistant_prof knigge antonie NA rYbhEhgAAAAJ
6cf903 UU sociology 2022 David De Kort UU other de kort david male
97f1a4 UU sociology 2022 Lea Kroner UU phd kroner lea female
d5509f UU sociology 2022 Mathijs Kros UU assistant_prof kros mathijs male fIg-aZYAAAAJ
427ffe UU sociology 2022 Wouter Kwint UU other kwint wouter male
686a70 UU sociology 2022 Marco Van Leeuwen UU full_prof van leeuwen marco male Yvl_EKUAAAAJ
201dcf UU sociology 2022 Marjan Van Lier UU other van lier marjan female
a6c26b UU sociology 2022 Tanja Van Der Lippe UU full_prof van der lippe tanja female Rn56SIMAAAAJ
f34b0f UU/UvA sociology 2022 Ineke Maas UU UvA associate_prof maas ineke female lHZlqNsAAAAJ
dbeed8 UU sociology 2022 Ana Macanovic UU phd macanovic ana female s5D67kwAAAAJ
c6dbe2 UU sociology 2022 Luuk Mandemakers UU other mandemakers luuk male
079d1c UU sociology 2022 Thomas Martens UU other martens thomas male
975dfb UU sociology 2022 Deni Mazrekaj UU assistant_prof mazrekaj deni NA 3ZgUilQAAAAJ
fd6bcc UU sociology 2022 Christof Nagel UU other nagel christof male yHMd71wAAAAJ
966cf4 UU sociology 2022 Huyen Nguyen UU other nguyen huyen female
c486ee UU sociology 2022 Amy Nivette UU associate_prof nivette amy female CeM-glIAAAAJ
215a38 UU sociology 2022 Amina Op De Weegh UU phd op de weegh amina female
b435e7 UU sociology 2022 Kasper Otten UU phd otten kasper male LCdW9KIAAAAJ
2ae513 UU sociology 2022 Jiamin Ou UU assistant_prof ou jiamin NA O2abZVMAAAAJ
bb512b UU sociology 2022 Paulina Pankowska UU assistant_prof pankowska paulina female mBpVfC0AAAAJ
156251 UU sociology 2022 Anne-Rigt Poortman UU full_prof poortman anne-rigt NA fuS31Y0AAAAJ
6622d0 UU sociology 2022 Wojtek Przepiorka UU associate_prof przepiorka wojtek male uhWOKsMAAAAJ
5d7d53 UU sociology 2022 Anne Van Der Put UU phd van der put anne female 49_27usAAAAJ
2d2334 UU sociology 2022 Werner Raub UU full_prof raub werner male faxhoXQAAAAJ
d13a94 UU sociology 2022 Stijn Ruiter UU full_prof ruiter stijn male GCHDgZcAAAAJ
83e8f2 UU sociology 2022 Philipp Schneider UU phd schneider philipp male
ed443a UU sociology 2022 Jan-Willem Simons UU phd simons jan-willem male
5f7b23 UU sociology 2022 Sanjana Singh UU phd singh sanjana female
fe0389 UU sociology 2022 Jos Slabbekoorn UU phd slabbekoorn jos male
8e8276 UU sociology 2022 Tali Spiegel UU assistant_prof spiegel tali NA
a87a63 UU sociology 2022 Kim Stienstra UU phd stienstra kim NA JritAXEAAAAJ
87ca43 UU sociology 2022 Frank Van Tubergen UU full_prof van tubergen frank male YU1DcNIAAAAJ
7d9c3c UU sociology 2022 Isabelle Van Der Vegt UU assistant_prof van der vegt isabelle female nEoRK7YAAAAJ
a71618 UU sociology 2022 Cok Vrooman UU full_prof vrooman cok NA sweM218AAAAJ
0eb425 UU sociology 2022 Linde Vromans UU other vromans linde female
b76488 UU sociology 2022 Jeroen Weesie UU associate_prof weesie jeroen male KEh4ypEAAAAJ
831575 UU sociology 2022 Kevin Wittenberg UU phd wittenberg kevin male
8d7b0a UU sociology 2022 Nick Wuestenenk UU phd wuestenenk nick male chQfyGsAAAAJ
443154 UU sociology 2022 Marjolein Bredie UU other bredie marjolein female
f8b5a4 UU sociology 2022 Sofie Van De Calseijde UU other van de calseijde sofie female
991f74 UU sociology 2022 Annemarie Houkes UU other houkes annemarie female
5e0798 UU sociology 2022 Ellen Janssen UU other janssen ellen female
17ad6c UU sociology 2022 Pim Sangers UU other sangers pim NA
34a63e UU sociology 2022 Aleida Sjardijn UU other sjardijn aleida female
471b42 RU sociology 2022 Ronald Batenburg RU full_prof batenburg ronald male UK7nVSEAAAAJ
31144d RU sociology 2022 Katia Begall RU assistant_prof begall katia female e7zfTqMAAAAJ
888093 RU sociology 2022 Hidde Bekhuis RU other bekhuis hidde male Q4saWX8AAAAJ
c47638 RU sociology 2022 Lonneke van den Berg RU postdoc van den berg lonneke female vzBNQ1kAAAAJ
f99757 RU sociology 2022 Lieselotte Blommaert RU assistant_prof blommaert lieselotte female RG54uasAAAAJ
7e85d6 RU sociology 2022 Rob Eisinga RU assistant_prof eisinga rob male GDHdsXAAAAAJ
5f9d45 RU sociology 2022 Maurice Gesthuizen RU assistant_prof gesthuizen maurice male n6hiblQAAAAJ
3e9d6d RU sociology 2022 Nella Geurts RU postdoc geurts nella female VCTvbTkAAAAJ
7f8ff4 RU sociology 2022 Saskia Glas RU assistant_prof glas saskia female ZMc0j2YAAAAJ
6075fe RU sociology 2022 Margriet van Hek RU assistant_prof van hek margriet female ZvLlx2EAAAAJ
2d4a95 RU sociology 2022 Remco Hoekman RU other hoekman remco male LsMimOEAAAAJ
61b8a6 RU sociology 2022 Bas Hofstra RU assistant_prof hofstra bas NA Nx7pDywAAAAJ
07b8a5 RU sociology 2022 Judith Koops RU postdoc koops judith female kLiOlQoAAAAJ
1bf89e RU sociology 2022 Gerbert Kraaykamp RU full_prof kraaykamp gerbert male l8aM4jAAAAAJ
f618fc RU sociology 2022 Roza Meuleman RU assistant_prof meuleman roza female iKs_5WkAAAAJ
dad54c RU sociology 2022 Michael Savelkoul RU assistant_prof savelkoul michael male _f3krXUAAAAJ
a576d6 RU sociology 2022 Peer Scheepers RU full_prof scheepers peer male hPeXxvEAAAAJ
5da2d4 RU sociology 2022 Niels Spierings RU associate_prof spierings niels male cy3Ye6sAAAAJ
07231a RU/RUG sociology 2022 Jochem Tolsma RU RUG full_prof tolsma jochem male Iu23-90AAAAJ
b65f6f RU sociology 2022 Ellen Verbakel RU full_prof verbakel ellen female w2McVJAAAAAJ
5e2898 RU sociology 2022 Mark Visser RU assistant_prof visser mark male ItITloQAAAAJ
9ab0fc RU sociology 2022 Maarten Wolbers RU full_prof wolbers maarten male TqKrXnMAAAAJ
6cca60 RU sociology 2022 Carlijn Bussemakers RU phd bussemakers carlijn female bDPtkIoAAAAJ
4ed5be RU sociology 2022 Rob Franken RU phd franken rob male
f92019 RU sociology 2022 Mustafa Firat RU phd firat mustafa male rrh0V7IAAAAJ
f782c2 RU sociology 2022 Aysegül Güneyli RU phd guneyli aysegul female
513b49 RU sociology 2022 Inge Hendriks RU phd hendriks inge female
e37333 RU sociology 2022 Thijmen Jeroense RU phd jeroense thijmen male izq-KNUAAAAJ
b672bd RU sociology 2022 Rachel Kollar RU phd kollar rachel female b96_CCUAAAAJ
ac8ab3 RU sociology 2022 Nik Linders RU phd linders nik male
b6cedc RU sociology 2022 Renae Loh RU phd loh renae female tFaMPOQAAAAJ
e2ebbb RU sociology 2022 Maikel Meijeren RU phd meijeren maikel male
a527b8 RU sociology 2022 Carly van Mensvoort RU phd van mensvoort carly female z6iMs-UAAAAJ
1e61cb RU sociology 2022 Anne Maaike Mulders RU phd mulders anne female
554613 RU sociology 2022 Katrin Müller RU phd muller katrin female
7c14e8 RU sociology 2022 Klara Raiber RU phd raiber klara female xE65HUcAAAAJ
809f71 RU sociology 2022 Marlou Ramaekers RU phd ramaekers marlou female fp99JAQAAAAJ
c1722b RU sociology 2022 Sara Wiertsema RU phd wiertsema sara female wgQQD6kAAAAJ
a00209 RU sociology 2022 Janos Betko RU phd betko janos male Cvdrl6AAAAAJ
8e7b43 RU sociology 2022 Jansje van Middendorp RU phd van middendorp jansje female gs0li6MAAAAJ
91db4e RU sociology 2022 Elize Vis RU phd vis elize female
bb8ffa RU sociology 2022 Tijmen Weber RU phd weber tijmen male KfLALRIAAAAJ
05a9d1 RU sociology 2022 Elissa El Khawli RU other el khawli elissa female 2wDZZbsAAAAJ
683c64 RU sociology 2022 Carl Sterkens RU other sterkens carl male
e5d4c4 RU sociology 2022 Paul Vermeer RU other vermeer paul male
0e20be RU sociology 2022 Malou Grubben RU other grubben malou female
380300 RUG sociology 2022 Danelien van Aalst RUG phd van aalst danelien female I0-TFHcAAAAJ
4c1cb7 RUG sociology 2022 Gabriël Anthonio RUG full_prof anthonio gabriel male
ff0b62 RUG sociology 2022 Dieko Bakker RUG postdoc bakker dieko male why4GYsAAAAJ
6c8b66 RUG sociology 2022 Wike Been RUG assistant_prof been wike NA gsVCXC8AAAAJ
510f60 RUG sociology 2022 Sanne Berends RUG other berends sanne female
ba6e22 RUG sociology 2022 Edgar de Bie RUG other de bie edgar male
a37852 RUG sociology 2022 A.B. Bieleman RUG other bieleman A.B. NA
f77a8b RUG sociology 2022 Basak Bilecen RUG associate_prof bilecen basak female wyOyVPMAAAAJ
fa423f RUG sociology 2022 Rie Bosman RUG other bosman rie female
30204d RUG sociology 2022 Daniel Robert Cowen RUG phd cowen daniel male
5a3ce5 RUG sociology 2022 M.M Cuperus RUG other cuperus M.M NA
4161ee RUG sociology 2022 Jacob Dijkstra RUG associate_prof dijkstra jacob male 8vnkpwkAAAAJ
e4cd9a RUG sociology 2022 Jan Kornelis Dijkstra RUG associate_prof dijkstra jan male hui_lugAAAAJ
911142 RUG sociology 2022 Z Dong RUG phd dong Z NA
bc5507 RUG sociology 2022 Marijtje van Duijn RUG full_prof van duijn marijtje female 6U23feoAAAAJ
baf155 RUG sociology 2022 Thomas Feliciani RUG phd feliciani thomas male YuAjBUEAAAAJ
3514f2 RUG sociology 2022 Andreas Flache RUG full_prof flache andreas male dt9jPJ0AAAAJ
9bbcaa RUG sociology 2022 Vincenz Frey RUG assistant_prof frey vincenz male OLa-t0IAAAAJ
e4bca1 RUG sociology 2022 Anne Gauthier RUG other gauthier anne female Um3_WggAAAAJ
e96a8a RUG sociology 2022 Marieke van Gerner-Haan RUG assistant_prof van gerner marieke female qTbDPO4AAAAJ
006d08 RUG sociology 2022 Francesca Giardini RUG associate_prof giardini francesca female wO_7IPAAAAAJ
e0d964 RUG sociology 2022 Arie Glebbeek RUG associate_prof glebbeek arie NA Shb5DfsAAAAJ
13f4d8 RUG sociology 2022 Thecla Goossens RUG phd goossens thecla female
8f3d69 RUG sociology 2022 Rolf Granholm RUG phd granholm rolf male
f6f5e9 Universita degli studi di Milano sociology 2022 Minke Hajer Universita degli studi di Milano postdoc hajer minke female J_M6iK0AAAAJ
9bd18b RUG sociology 2022 Liesbet Heyse RUG associate_prof heyse liesbet female NmNwGsIAAAAJ
1e43bb RUG sociology 2022 Johan Hiemstra RUG phd hiemstra johan male
863372 RUG sociology 2022 Anja Holwerda RUG other holwerda anja female
2e4b8b RUG sociology 2022 Mark Huisman RUG assistant_prof huisman mark male GTxPKlEAAAAJ
8e364c RUG sociology 2022 Gijs Huitsing RUG assistant_prof huitsing gijs male NFZRctEAAAAJ
b9b6ce RUG sociology 2022 Aliona Ignatieva RUG phd ignatieva aliona female
481f6c RUG sociology 2022 Danielle Jansen RUG associate_prof jansen danielle female 2ST9MYoAAAAJ
37fe69 RUG sociology 2022 M. Kalma RUG other kalma M. NA
2dd9fc RUG sociology 2022 Matthijs Kalmijn RUG full_prof kalmijn matthijs male OEMqUeAAAAAJ
68c61d RUG sociology 2022 D. Karaagac RUG phd karaagac D. NA
1a858e RUG sociology 2022 Rowan ten Kate RUG phd ten kate rowan NA dTmEdjUAAAAJ
4335bf RUG sociology 2022 Laura Keesman RUG assistant_prof keesman laura female NuTPI_QAAAAJ
19cd7c RUG sociology 2022 Marijn Keijzer RUG phd keijzer marijn NA QAXoQysAAAAJ
71af39 RUG sociology 2022 Sanne Kellij RUG phd kellij sanne female
21ecfc RUG sociology 2022 Wouter Kiekens RUG phd kiekens wouter male rGpsLoYAAAAJ
b15887 RUG sociology 2022 Ronald Kielman RUG other kielman ronald male
fa620a RUG sociology 2022 Anne Kuschel RUG phd kuschel anne female
7071c6 RUG sociology 2022 Lydia Laninga-Wijnen RUG postdoc laninga lydia female 2QMRfbsAAAAJ
725b09 RUG/Tilburg sociology 2022 Siegwart Lindenberg RUG UvT full_prof lindenberg siegwart male aPEP4mMAAAAJ
20555e RUG sociology 2022 Zoltán Lippényi RUG assistant_prof lippenyi zoltan male OefJ-w8AAAAJ
abecae RUG sociology 2022 Jing Liu RUG phd liu jing NA
664a1b RUG sociology 2022 S. Liu RUG other liu S. NA
30af7a RUG sociology 2022 Sofie Lorijn RUG phd lorijn sofie female
97a883 RUG sociology 2022 Alla Loseva RUG phd loseva alla NA
b5deeb RUG sociology 2022 R. Lu RUG other lu R. NA
1c7266 RUG/RU sociology 2022 Marcel Lubbers RUG RU full_prof lubbers marcel male 078qsZoAAAAJ
277c92 RUG sociology 2022 Eleonora Marucci RUG phd marucci eleonora female lBmx9J_iGqIC
6c73f9 RUG sociology 2022 Carlos de Matos Fernandes RUG phd de matos carlos male sExwZa8AAAAJ
bc4cfa RUG sociology 2022 Dennis Nientimp RUG phd nientimp dennis male
a003c2 RUG sociology 2022 Jaap Nieuwenhuis RUG assistant_prof nieuwenhuis jaap male 64i-jc8AAAAJ
75ff10 RUG sociology 2022 Xingna Qin RUG phd qin xingna female
10cb2d RUG sociology 2022 Julian Rengers RUG phd rengers julian male y5Vl54cAAAAJ
9cc4ca RUG/Universiteit Stockholm sociology 2022 Chaïm la Roi RUG Universiteit Stockholm other la roi chaim male npL-VZIAAAAJ
91b7af RUG sociology 2022 Menno Rol RUG other rol menno male
e36fc7 RUG sociology 2022 Marina Roos RUG other roos marina female
57a512 RUG sociology 2022 Sayoni Santara RUG phd santara sayoni NA
9f2451 RUG sociology 2022 Elizaveta Sivak RUG phd sivak elizaveta female pG8TV_UAAAAJ
3bc46b RUG sociology 2022 L Slot RUG phd slot L NA
cf9f9f RUG sociology 2022 Rita Smaniotto RUG other smaniotto rita female
742326 RUG sociology 2022 Tom Snijders RUG full_prof snijders tom male xqefLxQAAAAJ
21cf3f RUG sociology 2022 E.R. Spruijt RUG phd spruijt E.R. NA
c54ccc RUG sociology 2022 Marie Stadel RUG phd stadel marie female JR_msDAAAAAJ
16c635 RUG/University Linköping sociology 2022 Christian Steglich RUG University Linköping associate_prof steglich christian male QZpVaIEAAAAJ
a1b68a RUG sociology 2022 Jonas Stein RUG phd stein jonas male LhDEkIQAAAAJ
718453 RUG sociology 2022 Nardi Steverink RUG full_prof steverink nardi NA CJUasEkAAAAJ
7e31c2 RUG sociology 2022 Gert Stulp RUG associate_prof stulp gert male fFcVaEYAAAAJ
3d4538 RUG/TU Delft sociology 2022 Tanzhe Tang RUG TU Delft phd tang tanzhe NA cA3aK24AAAAJ
3b133e RUG sociology 2022 Thomas Teekens RUG phd teekens thomas male fgjPglAAAAAJ
a2d2fa RUG sociology 2022 Donald van Tol RUG assistant_prof van tol donald male
994acc RUG/University of Turku sociology 2022 Chlóe Tolmatcheff RUG University of Turku postdoc tolmatcheff chloe female L_5-vK8AAAAJ
fdd658 RUG sociology 2022 Daniela Torres Alatorre RUG other alatorre daniela female
b48d3e RUG sociology 2022 René Veenstra RUG full_prof veenstra rene NA _9OVrqMAAAAJ
201210 RUG sociology 2022 Amber Vellinga-Dings RUG phd vellinga amber female
d1444f RUG sociology 2022 A.J. Venema RUG other venema A.J. NA
2386c1 RUG sociology 2022 Simon Venema RUG phd venema simon male bcYVTYEAAAAJ
b2ce13 RUG sociology 2022 Annick Vlieg RUG other vlieg annick female
9db6ad RUG sociology 2022 Elsje de Vries RUG phd de vries elsje female
3b09e6 RUG sociology 2022 Marieke van der Wal RUG other van der wal marieke female
ffa630 RUG sociology 2022 Rudi Wielers RUG associate_prof wielers rudi male xd_etZMAAAAJ
daf445 RUG sociology 2022 Sofie Wiersma RUG phd wiersma sofie female v2UWdQQAAAAJ
2cb6d4 RUG sociology 2022 Fenna van der Wijk RUG phd van der wijk fenna female
75631f RUG sociology 2022 Rafael Wittek RUG full_prof wittek rafael male nqv-il8AAAAJ
15f4f5 RUG sociology 2022 Xinyue Wu RUG phd wu xinyue female
5be2db RUG sociology 2022 Xiao Xu RUG phd xu xiao NA
779ceb RUG sociology 2022 Stephan Zaretckii RUG phd zaretckii stephan male
e83a28 RUG sociology 2022 Theo van der Zee RUG other van der zee theo male
7f1e40 RUG sociology 2022 Tibor Zingora RUG postdoc zingora tibor male mzpLHooAAAAJ
6d7498 UvA sociology 2022 Josien Arts UvA assistant_prof arts josien female mFzRmI4AAAAJ
347272 UvA sociology 2022 Carlijn van Baak UvA phd van baak carlijn female HmV3Kc8AAAAJ
64bccf UvA sociology 2022 Evelyne Baillergeau UvA other baillergeau evelyne female
534290 UvA sociology 2022 Nienke Boesveldt UvA other boesveldt nienke female LWhS5HcAAAAJ
480a45 UvA sociology 2022 Thijs Bol UvA associate_prof bol thijs male nMP0iF4AAAAJ
ceac15 UvA sociology 2022 David Bos UvA other bos david male
6c44f8 UvA sociology 2022 Sarah Bracke UvA full_prof bracke sarah female 3P_LNosAAAAJ
cc57da UvA sociology 2022 Patrick Brown UvA associate_prof brown patrick male y8wwpA8AAAAJ
73a7f9 UvA sociology 2022 Jeroen Bruggeman UvA associate_prof bruggeman jeroen male _cbnfbsAAAAJ
63b63b UvA sociology 2022 Christian Bröer UvA associate_prof broer christian male SZTwUPsAAAAJ
2d172b UvA sociology 2022 Kalima Carrigan Chavez UvA phd chavez kalima female
a8ccdc UvA sociology 2022 Liubov Chernysheva UvA phd chernysheva liubov female
ec4f15 UvA sociology 2022 Siegnella Concincion UvA phd concincion siegnella female
6f7fee UvA sociology 2022 Rineke van Daalen UvA other van daalen rineke female
890210 UvA sociology 2022 Johan de Deken UvA other de deken johan male zQpQtF4AAAAJ
c9e105 UvA sociology 2022 Kobe de Keere UvA assistant_prof de keere kobe male 0sCHIbIAAAAJ
2572d8 UvA sociology 2022 Sherilyn Deen UvA phd deen sherilyn female
6717db UvA sociology 2022 Jan Willen Duyvendak UvA full_prof duyvendak jan male VPkxEOUAAAAJ
5ccc4b UvA sociology 2022 Fenella Fleischmann UvA full_prof fleischmann fenella female Sc6ljqsAAAAJ
b55d74 UvA sociology 2022 Rébecca Franco UvA postdoc franco rebecca female zzSeS9YAAAAJ
63a7e3 UvA sociology 2022 Andrea Friedmann Rozenbaum UvA phd rozenbaum andrea NA
d13ed6 UvA sociology 2022 Ruben van Gaalen UvA full_prof van gaalen ruben male ienj2p4AAAAJ
5cd4a2 UvA sociology 2022 Sara Geven UvA assistant_prof geven sara female YJpw5IIAAAAJ
2167c6 UvA sociology 2022 Hein de Haas UvA full_prof de haas hein male nJno7ZAAAAAJ
e30a64 UvA sociology 2022 Bart van Heerikhuizen UvA other van heerikhuizen bart male
132b65 UvA sociology 2022 Margriet van Heesch UvA other van heesch margriet female
0f1660 UvA sociology 2022 Twan Huijsmans UvA phd huijsmans twan male wvAIWDYAAAAJ
baad7a UvA sociology 2022 Chip Huisman UvA other huisman chip male
f0b10e UvA sociology 2022 Rene Hulst UvA other hulst rene NA
a3fc93 UvA sociology 2022 Christoph Janietz UvA phd janietz christoph male N4CLFSgAAAAJ
dba366 UvA sociology 2022 Marie-Louise Janssen UvA other janssen marie-louise female
aa4dd8 UvA sociology 2022 Emilija Jokubauskaite UvA phd jokubauskaite emilija female
9b7c38 UvA sociology 2022 Roos de Jong UvA other de jong roos female
8ad3ae UvA/EUR sociology 2022 Agnieszka Kanas UvA EUR assistant_prof kanas agnieszka female wTAuHRkAAAAJ
feca8f UvA sociology 2022 Anna Keuchenius UvA postdoc keuchenius anna female kWI_B5IAAAAJ
c2cf5c UvA sociology 2022 Monique Kremer UvA full_prof kremer monique female 7hHCyrIAAAAJ
48c488 UvA sociology 2022 Marie Labussière UvA postdoc labussiere marie female 3yoTbEUAAAAJ
9bc15c UvA sociology 2022 Bram Lancee UvA associate_prof lancee bram male WLYKP4sAAAAJ
f7007a UvA sociology 2022 Liliya Leopold UvA postdoc leopold liliya female cqIXj1oAAAAJ
1b5298 UvA sociology 2022 Kirils Makarovs UvA other makarovs kirils male _ziVV1YAAAAJ
fb92a9 UvA/Frankfurt School of Finance & Management sociology 2022 Daniel Mayerhoffer UvA Frankfurt School of Finance & Management assistant_prof mayerhoffer daniel male
45c9fe UvA sociology 2022 Gerben Moerman UvA other moerman gerben male TdBLYvQAAAAJ
26cbea UvA sociology 2022 Lou Mousset UvA phd mousset lou NA
4dc061 UvA sociology 2022 Caroline Nevejan UvA full_prof nevejan caroline female WpyHRA4AAAAJ
a7b8ef UvA sociology 2022 Bo Paulle UvA associate_prof paulle bo NA OQrxOxQAAAAJ
79916c UvA sociology 2022 Pamela Prickett UvA assistant_prof prickett pamela female sCz1vrMAAAAJ
df4279 UvA sociology 2022 Ladan Rahbari UvA assistant_prof rahbari ladan female ZXB04ZMAAAAJ
6bfc1e UvA sociology 2022 Jan Rath UvA full_prof rath jan male gNHZX74AAAAJ
82e59b UvA sociology 2022 Emran Riffi Acharki UvA phd acharki emran male
fba8b2 UvA sociology 2022 Renée Römkens UvA full_prof romkens renee female
ae3d4f UvA sociology 2022 Tobi Sachs UvA phd sachs tobi male
84bcc8 UvA sociology 2022 Pinar Sefkatli UvA phd sefkatli pinar female
0adc97 UvA sociology 2022 Olga Sezneva UvA associate_prof sezneva olga female
c190c9 UvA sociology 2022 Jaap van Slageren UvA postdoc van slageren jaap male oxngzcAAAAAJ
52d033 UvA sociology 2022 Fenna Smits UvA phd smits fenna female
4f4aaa UvA sociology 2022 Hanne Stegeman UvA phd stegeman hanne female cDTjK_0AAAAJ
6e1eff UvA/University of Lausanne sociology 2022 Stephanie Steinmetz UvA University of Lausanne associate_prof steinmetz stephanie female By5P8ukAAAAJ
4c0a1c UvA sociology 2022 Katharina Stückradt UvA phd stuckradt katharina female
cfdf55 UvA sociology 2022 Jurgen Tijms UvA other tijms jurgen male XZ9u8msAAAAJ
761a1e UvA sociology 2022 Olav Velthuis UvA full_prof velthuis olav male FM0IQPoAAAAJ
288fed UvA sociology 2022 Gerlieke Veltkamp UvA assistant_prof veltkamp gerlieke female 2zhDhEYAAAAJ
7b78d0 UvA sociology 2022 Alex van Venrooij UvA assistant_prof van venrooij alex male 6OV5TPQAAAAJ
7bf658 UvA sociology 2022 Arnoud Verhoeff UvA full_prof verhoeff arnoud male NlaoFEcAAAAJ
88aea2 UvA sociology 2022 Laura Vonk UvA phd vonk laura female
aeb119 UvA sociology 2022 S Vuijsters UvA other vuijsters S NA
857f82 UvA sociology 2022 Don Weenink UvA associate_prof weenink don male v42OXBkAAAAJ
7fac71 UvA sociology 2022 Herman van de Werfhorst UvA full_prof van de werfhorst herman male amYIKXQAAAAJ
2bf443 UvA sociology 2022 Catherine Wong UvA assistant_prof wong catherine female S2cNZBcAAAAJ
8ffe9e UvA sociology 2022 Eva Zschirnt UvA assistant_prof zschirnt eva female XGcu4noAAAAJ
780292 UvA sociology 2022 Dieuwke Zwier UvA phd zwier dieuwke female SFfyvpUAAAAJ
147708 VU sociology 2022 Jens Abbing VU phd abbing jens male
9999cf VU sociology 2022 Nazar Abdulazeez VU phd abdulazeez nazar male
d3f274 VU sociology 2022 Menal Ahmed VU other ahmed menal NA
baf374 VU sociology 2022 Petra van Aken VU phd van aken petra female
cdd6b4 VU sociology 2022 Carla Bakboord VU phd bakboord carla female
142656 VU sociology 2022 Bart Bakker VU full_prof bakker bart male XOaI_CIAAAAJ
0610f2 VU sociology 2022 René Bekkers VU full_prof bekkers rene NA K4nsiugAAAAJ
8d7697 VU sociology 2022 Marije Blok VU phd blok marije female GVbYj2gAAAAJ
fb40f4 VU sociology 2022 Alice de Boer VU full_prof de boer alice female 9pCzaqAAAAAJ
390832 VU sociology 2022 Henriëtte Boersma-de Vries VU phd vries henriette female
e8bda0 VU sociology 2022 Stef Bouwhuis VU other bouwhuis stef NA
350c69 VU sociology 2022 Marjolein Broese Van Groenou VU full_prof van groenou marjolein female hMVeMB0AAAAJ
30b78d VU sociology 2022 Gerhard van de Bunt VU associate_prof van de bunt gerhard male Bla1Ed0AAAAJ
3ab6bf VU sociology 2022 Samira Chatila VU phd chatila samira female NDguSGcAAAAJ
8afab2 VU sociology 2022 Anika Chowdhury VU phd chowdhury anika female
fe20c7 VU sociology 2022 Alexandra Ciausescu VU phd ciausescu alexandra female
0d99a1 VU sociology 2022 Maurice Crul VU full_prof crul maurice male L8IGbHUAAAAJ
cd5590 VU sociology 2022 Kathy Davis VU other davis kathy female QlQsLfcAAAAJ
089aa4 VU sociology 2022 Carlijn Dekker VU other dekker carlijn female
29faa2 VU sociology 2022 Gözde Duran VU phd duran gozde female
e8e971 VU sociology 2022 Laura Eberlein VU phd eberlein laura female
0f393a VU sociology 2022 Eddy Elmer VU phd elmer eddy male IWMB5rcAAAAJ
6bb0e7 VU sociology 2022 Zakia Essanhaji VU phd essanhaji zakia female KwCVpHMAAAAJ
3dafc3 VU sociology 2022 Muhammad Farooq VU phd farooq muhammad male
598bd6 VU sociology 2022 Tara Fiorito VU assistant_prof fiorito tara female
9b3d53 VU sociology 2022 Harry Ganzeboom VU full_prof ganzeboom harry male abxxmUAAAAJ
4d785d VU sociology 2022 Maura Gardeniers VU phd gardeniers maura female
b16089 VU sociology 2022 Mauricio Garnier Villarreal VU assistant_prof villarreal mauricio male MEW657UAAAAJ
cab53b VU sociology 2022 Halleh Ghorashi VU full_prof ghorashi halleh female L6lLMW8AAAAJ
5a1587 VU sociology 2022 Santiago Gomez Echeverry VU phd echeverry santiago male
b9ca09 VU sociology 2022 Barbara Gouwenberg VU other gouwenberg barbara female EE2dnG8AAAAJ
74f972 VU sociology 2022 Caroline Graf VU phd graf caroline female
6ed8f5 VU sociology 2022 Alaxandra Greene VU phd greene alaxandra female P_8SW44AAAAJ
451c7d VU sociology 2022 Mohammad Hammoud VU phd hammoud mohammad male
faa2bf VU sociology 2022 Fabian Holle VU phd holle fabian male
a47fdb VU sociology 2022 Barry Hoolwerf VU other hoolwerf barry male
7b744e VU sociology 2022 Olena van Horick VU phd van horick olena female
78cd5d VU sociology 2022 Mariska van der Horst VU assistant_prof van der horst mariska female GM2B7-4AAAAJ
771b03 VU sociology 2022 Martijn Huisman VU full_prof huisman martijn male hxFizlkAAAAJ
6c93af VU sociology 2022 Erik van Ingen VU associate_prof van ingen erik male xK_MDL8AAAAJ
05ec43 VU sociology 2022 Elif Keskiner VU assistant_prof keskiner elif female p-TyuN8AAAAJ
8c9a15 VU sociology 2022 Saskia Keuzenkamp VU full_prof keuzenkamp saskia female coG2pHsAAAAJ
8aa56e VU sociology 2022 Fatma Khalil VU phd khalil fatma female
4756f7 VU sociology 2022 Saba Khan VU phd khan saba NA
d633a5 VU sociology 2022 Kyohee Kim VU phd kim kyohee female 93jOUaEAAAAJ
871917 VU sociology 2022 Bert Klandermans VU full_prof klandermans bert male i9Op0IwAAAAJ
b1de8c VU sociology 2022 Kim Knipprath VU phd knipprath kim NA
2482e9 VU sociology 2022 Stephanie Koolen-Maas VU other koolen stephanie female CV8rlZIAAAAJ
5606e6 VU sociology 2022 Margrieth Korporaal VU phd korporaal margrieth female
3aad96 VU sociology 2022 Timo Korstenbroek VU phd korstenbroek timo male U-JbznAAAAAJ
36a9ba VU sociology 2022 Zsuzsa Kovacs VU phd kovacs zsuzsa female
1d38f8 VU sociology 2022 Nebil Kusmallah VU other kusmallah nebil male
641846 VU sociology 2022 Haebin Lee VU phd lee haebin NA
9c1ebc VU sociology 2022 Aat Liefbroer VU full_prof liefbroer aat NA mui-7rAAAAAJ
7b40cd VU sociology 2022 Youssra Lotfi VU other lotfi youssra female
ecc4f5 VU sociology 2022 Helenard Louw VU phd louw helenard NA
b7f4cb VU sociology 2022 Ineke Maas VU full_prof maas ineke female lHZlqNsAAAAJ
2aa4a2 VU sociology 2022 Elly Mariani VU phd mariani elly female
39d76f VU sociology 2022 Kay Mars VU other mars kay NA
36f3ba VU sociology 2022 Eva-Maria Merz VU full_prof merz eva-maria female 2XmJ1jsAAAAJ
5c0b02 VU sociology 2022 Phoebe Mbasalaki VU other mbasalaki phoebe female
fd5a6d VU sociology 2022 Nasser Mohamedhoesein VU phd mohamedhoesein nasser male
1fafb7 VU sociology 2022 Jasper Muis VU assistant_prof muis jasper male WUIOcMoAAAAJ
d8b9eb VU sociology 2022 Ineke Nagel VU assistant_prof nagel ineke female L0UP8CYAAAAJ
e53929 VU sociology 2022 Lorraine Nencel VU associate_prof nencel lorraine female bCWud-8AAAAJ
f8f26a VU sociology 2022 Busisiwe Octavia Ntsele VU phd ntsele busisiwe NA
abc0e5 VU sociology 2022 Mimi Ocadiz Arriaga VU phd arriaga mimi female
5e8ac0 VU sociology 2022 Eline van Oosten VU other van oosten eline female
9338d3 VU sociology 2022 Joram Pach VU phd pach joram male
2dad45 VU sociology 2022 Dimitris Pavlopoulos VU associate_prof pavlopoulos dimitris male 9ocUsGQAAAAJ
ce4303 VU sociology 2022 Diederik van der Plas VU phd van der plas diederik male
fd6bde VU sociology 2022 Elena Ponzoni VU assistant_prof ponzoni elena female u6CvaLcAAAAJ
3fb429 VU sociology 2022 Sharon Quinsaat VU other quinsaat sharon female yxKOILkAAAAJ
edc1e3 VU sociology 2022 Maria Charlotte Rast VU phd rast maria female
a3cd46 VU sociology 2022 Jos Rath VU other rath jos male
da9090 VU/UvH sociology 2022 Sawitri Saharso VU UvH associate_prof saharso sawitri female gcPv29sAAAAJ
d22a98 VU sociology 2022 Joris Schröder VU phd schroder joris male
c27fa3 VU sociology 2022 Josje Schut VU phd schut josje NA
4524c4 VU sociology 2022 Theo Schuyt VU other schuyt theo male sXONPzsAAAAJ
4cb0c8 VU sociology 2022 Sajad Sepehri VU other sepehri sajad male
699966 VU sociology 2022 Fiona Shan VU phd shan fiona female
ac0f2c VU sociology 2022 Ying Shen VU phd shen ying NA
58d75d VU sociology 2022 Mansoureh Shojaee VU other shojaee mansoureh female
b667be VU sociology 2022 Marieke Slootman VU assistant_prof slootman marieke female bSV8ocQAAAAJ
8cd2ee VU sociology 2022 Peer Smets VU assistant_prof smets peer male 2a9d6WkAAAAJ
35289a VU sociology 2022 Tamira Sno VU phd sno tamira female
479c67 VU sociology 2022 Jacquelien van Stekelenburg VU full_prof van stekelenburg jacquelien female fP-OzuoAAAAJ
61708e VU sociology 2022 Elias Storms VU other storms elias male lh51akAAAAAJ
31702c VU sociology 2022 Bianca Suanet VU associate_prof suanet bianca female 6RlL400AAAAJ
0bccf5 VU sociology 2022 Joukje Swinkels VU other swinkels joukje female 9tw1-pIAAAAJ
cb6738 VU sociology 2022 Saartje Tack VU other tack saartje female bWtqPwAAAAJ
4f888e VU sociology 2022 Claire van Teunenbroek VU other van teunenbroek claire female 9fPRjpIAAAAJ
fdbc77 VU sociology 2022 Anne-Mei The VU full_prof the anne-mei NA haX6BygAAAAJ
24a05c VU sociology 2022 Theo van Tilburg VU full_prof van tilburg theo male VVoZ-ZIAAAAJ
5e7d00 VU sociology 2022 Myrto Tourtouri VU phd tourtouri myrto female
639067 VU sociology 2022 Sara Trovato VU phd trovato sara female
116b3c VU sociology 2022 Joseph van Matre VU phd van matre joseph male S11lElAAAAAJ
415e9f VU sociology 2022 Nina Vergeldt VU other vergeldt nina female 6OGPC4EAAAAJ
0b76d9 VU sociology 2022 Evelyn Vlasman VU other vlasman evelyn female
2a03a9 VU sociology 2022 Ismintha Waldring VU assistant_prof waldring ismintha NA W6pRprUAAAAJ
b5830a VU sociology 2022 Pamala Wiepking VU full_prof wiepking pamala female q9jiuA0AAAAJ
6141bd VU sociology 2022 Arjen de Wit VU assistant_prof de wit arjen male slYyekwAAAAJ
2b82bd VU sociology 2022 Lisa Woensdregt VU phd woensdregt lisa female
d54eea VU sociology 2022 Younes Younes VU other younes younes male
faac61 EUR sociology 2022 Jess Bier EUR assistant_prof bier jess NA aCiqRRUAAAAJ
eff7d2 EUR sociology 2022 Samira van Bohemen EUR assistant_prof van bohemen samira female LVjXpAwAAAAJ
6c3e13 EUR sociology 2022 Teana Boston-Mammah EUR phd boston teana female EN89iLIAAAAJ
8a1b8e EUR sociology 2022 Sjaak Braster EUR associate_prof braster sjaak male i57BTc0AAAAJ
7011b1 EUR sociology 2022 Vivien Butot EUR other butot vivien NA
7a792a EUR sociology 2022 Nele Cannaerts EUR assistant_prof cannaerts nele NA
24be60 EUR sociology 2022 Jaco Dagevos EUR full_prof dagevos jaco male _d-TPGkAAAAJ
ca6f57 EUR sociology 2022 Roxy Damen EUR phd damen roxy female 8gqDwmoAAAAJ
bf2f8f EUR sociology 2022 Majolijn Das EUR full_prof das majolijn NA YX206rkAAAAJ
029095 EUR sociology 2022 Laura den Dulk EUR full_prof den dulk laura female aB03M_IAAAAJ
e21273 EUR sociology 2022 Pearl Dykstra EUR full_prof dykstra pearl female LB5T-_0AAAAJ
340ace EUR sociology 2022 Godfried Engbersen EUR full_prof engbersen godfried male 5UdNlrUAAAAJ
0a430b EUR sociology 2022 Guusje Enneking EUR phd enneking guusje NA
d0e17c EUR sociology 2022 Catharina Fokkema EUR full_prof fokkema catharina female 4D_XFQMAAAAJ
f9077a EUR sociology 2022 Bonnie French EUR assistant_prof french bonnie female
17f8bb EUR sociology 2022 Daphne van Helden EUR phd van helden daphne female Nr_FlNUAAAAJ
d2fd4c EUR sociology 2022 Marcel Hertogh EUR full_prof hertogh marcel male
a79db9 EUR sociology 2022 Sara Hogye EUR phd hogye sara female
604195 EUR sociology 2022 Jennifer Holland EUR assistant_prof holland jennifer female 5spkR4AAAAAJ
e8a38c EUR sociology 2022 Elske van den Hoogen EUR phd van den hoogen elske female TT7pWacAAAAJ
1e6e5a EUR sociology 2022 Gita Huijgen EUR phd huijgen gita female
48a967 EUR sociology 2022 Josje ten Kate EUR phd ten kate josje NA bTeKf4EAAAAJ
583dcd EUR sociology 2022 Renske Keizer EUR full_prof keizer renske female G-mtZwUAAAAJ
9406fd EUR sociology 2022 Margot Kersing EUR phd kersing margot female FiPzS34AAAAJ
6aa1fb EUR sociology 2022 Ferry Koster EUR full_prof koster ferry male zHzM4nkAAAAJ
5bb1e4 EUR sociology 2022 Willem de Koster EUR full_prof de koster willem male 1sbEcyIAAAAJ
ad15c1 EUR sociology 2022 Arjen Leerkes EUR associate_prof leerkes arjen male a_n_Ng8AAAAJ
3bf0b9 EUR sociology 2022 Thijs Lindner EUR phd lindner thijs male
68b308 EUR sociology 2022 Gabriele Mari EUR assistant_prof mari gabriele NA i-U6FvQAAAAJ
980f8f EUR sociology 2022 Saliha Metinsoy EUR assistant_prof metinsoy saliha female vyZxf6UAAAAJ
7799aa EUR sociology 2022 Samantha Metselaar EUR phd metselaar samantha female
a5ccd0 EUR sociology 2022 Tim van Meurs EUR phd van meurs tim male JR6DUXMAAAAJ
176da8 EUR/Boston University sociology 2022 Jonathan Mijs EUR Boston University other mijs jonathan male egL_UIEAAAAJ
210d61 EUR sociology 2022 Kjell Noordzij EUR other noordzij kjell male suTfu08AAAAJ
492c3a EUR sociology 2022 Irene van Oorschot EUR assistant_prof van oorschot irene female xT2_VhcAAAAJ
f630eb EUR sociology 2022 Joost Oude Groeniger EUR assistant_prof groeniger joost male AfiUKNEAAAAJ
417349 EUR sociology 2022 Lore van Praag EUR assistant_prof van praag lore female u0j8deAAAAAJ
c1f7b9 EUR sociology 2022 Rogier van Reekum EUR assistant_prof van reekum rogier male mocqNfEAAAAJ
68723d EUR sociology 2022 Willem Schinkel EUR full_prof schinkel willem male moryF5sAAAAJ
7d9f18 EUR sociology 2022 Lotte Schrijver EUR phd schrijver lotte female
d2ea2d EUR sociology 2022 Erik Snel EUR assistant_prof snel erik male LAFPzdEAAAAJ
1910cd EUR sociology 2022 Lisa van der Storm EUR phd van der storm lisa female T2-qxf0AAAAJ
68bbe5 EUR sociology 2022 Thomas Swerts EUR assistant_prof swerts thomas male 723NEtwAAAAJ
b95166 EUR sociology 2022 Will Tiemeijer EUR full_prof tiemeijer will male
e29610 EUR sociology 2022 Paula Vrolijk EUR phd vrolijk paula female XNv1ivkAAAAJ
16c50f EUR sociology 2022 Jeroen van der Waal EUR full_prof van der waal jeroen male dljD09sAAAAJ
256a7a EUR sociology 2022 Liang Wang EUR other wang liang male
4e130f EUR sociology 2022 Alissa van Zijl EUR assistant_prof van zijl alissa female ovqQeCsAAAAJ
784f20 EUR sociology 2022 Liesbet van Zoonen EUR full_prof van zoonen liesbet female fomuk3oAAAAJ
497cbe UvT sociology 2022 Peter Achterberg UvT full_prof achterberg peter male nrQ3NtEAAAAJ
cca4a3 UvT sociology 2022 Ipek Bayrak UvT other bayrak ipek female
2f3894 UvT sociology 2022 Mark van Bergen UvT other van bergen mark male
03e4c9 UvT sociology 2022 Eline Berkers UvT phd berkers eline female
49884d UvT sociology 2022 Arnoud-Jan Bijsterveld UvT full_prof bijsterveld arnoud-jan NA N9ZpjY8AAAAJ
a77692 UvT sociology 2022 Jos Bleus UvT phd bleus jos male
362c32 UvT sociology 2022 Paul Dekker UvT other dekker paul male yBwr1ZUAAAAJ
2152f9 UvT sociology 2022 Caroline Dewilde UvT associate_prof dewilde caroline female Nl6ZO5cAAAAJ
b8838c UvT sociology 2022 S.C.M. Dickens UvT phd dickens S.C.M. NA
c6bd36 UvT sociology 2022 Frank van Doorn UvT phd van doorn frank male
b2264c UvT sociology 2022 Gijs van Gaans UvT phd van gaans gijs male
38e497 UvT sociology 2022 Erwin Gielens UvT phd gielens erwin male OMDRIUMAAAAJ
151be3 UvT sociology 2022 Frank van Gils UvT phd van gils frank male
1d007d UvT sociology 2022 Rob Gruben UvT phd gruben rob male
86ae74 UvT sociology 2022 Katya Ivanova UvT assistant_prof ivanova katya female EgMYeqMAAAAJ
5e3a96 UvT sociology 2022 Thijs Kemmeren UvT phd kemmeren thijs male
0f37bb UvT sociology 2022 F.J.A.E. Van Kempen-de Troye UvT phd van kempen F.J.A.E. NA
d84d01 UvT sociology 2022 Suzanne Klein Schaarsberg UvT other schaarsberg suzanne female
deb2b8 UvT sociology 2022 Tijs Laenen UvT other laenen tijs male b0pYTrAAAAAJ
04eccf UvT sociology 2022 Frank Lambregts UvT phd lambregts frank male
add137 UvT sociology 2022 Nancy Lambregts UvT phd lambregts nancy female
4eaa5c UvT/Trento University sociology 2022 Ruud Luijkx UvT Trento University associate_prof luijkx ruud male 2vaELsQAAAAJ
f6c405 UvT sociology 2022 Francesco Marolla UvT other marolla francesco male
9638d8 UvT sociology 2022 Quita Muis UvT other muis quita female g_-CK34AAAAJ
8b35a4 UvT sociology 2022 Daniela Negoita UvT other negoita daniela female
0d5c94 UvT sociology 2022 Bert Oomen UvT phd oomen bert male
a0cc34 UvT sociology 2022 Romy Oomens UvT other oomens romy NA
bbb0c8 UvT sociology 2022 Peter Parren UvT phd parren peter male
2bd6de UvT sociology 2022 Bram Peper UvT other peper bram male bjLFsk0AAAAJ
66db49 UvT sociology 2022 Ioana Pop UvT assistant_prof pop ioana female
e2f5c8 UvT sociology 2022 Marga Pruijt UvT phd pruijt marga female
6eeadf UvT sociology 2022 Tim Reeskens UvT associate_prof reeskens tim male LwvZcWoAAAAJ
3622ec UvT sociology 2022 Helma Rodenburg UvT phd rodenburg helma female
221b2f UvT sociology 2022 Femke Roosma UvT assistant_prof roosma femke female gGJtjOQAAAAJ
c070f8 UvT sociology 2022 Inge Sieben UvT associate_prof sieben inge female uONmLWwAAAAJ
0e0b5d UvT sociology 2022 Renate Stapelbroek UvT phd stapelbroek renate female
cd9301 UvT sociology 2022 Tomas Turner-Zwinkels UvT assistant_prof turner tomas male 2RgbNnEAAAAJ
db0a42 UvT sociology 2022 Christof van Mol UvT assistant_prof van mol christof male Mye_hVQAAAAJ
dd8dee UvT sociology 2022 Nora Waitkus UvT assistant_prof waitkus nora female fO0ge4MAAAAJ
333534 UvT sociology 2022 Tom Welman UvT other welman tom male
330797 UvT sociology 2022 Franca Witlox UvT other witlox franca female
5ac3ed UvT sociology 2022 Cees van Woerkum UvT phd van woerkum cees male
58c81f UvT sociology 2022 Elizabeth Young UvT assistant_prof young elizabeth female
097c92 UvT sociology 2022 Erik Zeltner UvT phd zeltner erik male
9580f0 UvT sociology 2022 Erik Zijlstra UvT other zijlstra erik male
53fa53 RU political science 2022 Nada Afa RU phd afa nada female
835a8f RU political science 2022 Joep Bonnekamp-Van Lit RU phd lit joep male
73fc2c RU political science 2022 Nienke Bos RU phd bos nienke female
e6735e RU political science 2022 Maarten Cras RU other cras maarten male
2ae666 RU political science 2022 Daniel DeRock RU assistant_prof derock daniel male
4d6e5d RU political science 2022 Yaël van Drunen RU other van drunen yael NA
805bb3 RU political science 2022 Teun Eikenaar RU postdoc eikenaar teun male
3eac33 RU political science 2022 Erika van Elsas RU assistant_prof van elsas erika female c77jhDkAAAAJ
4b3a64 RU political science 2022 Naomi Gilhuis RU phd gilhuis naomi female
6e4c19 RU political science 2022 Yannicke Goris RU phd goris yannicke female
a7d718 RU political science 2022 Emily Gravesteijn RU phd gravesteijn emily female
9a4fac RU political science 2022 Rosanne Gülkara-Anholt RU assistant_prof gulkara rosanne female
5177ce RU political science 2022 Gijs Hablous RU phd hablous gijs male 6z3UrgcAAAAJ
d7a2ee RU political science 2022 Carolien van Ham RU full_prof van ham carolien female FZ66iE4AAAAJ
e88fc3 RU political science 2022 Kristof Jacobs RU associate_prof jacobs kristof male p_n5i1EAAAAJ
312bc1 RU political science 2022 Jutta Joachim RU other joachim jutta female 55VKzXsAAAAJ
301f2d RU political science 2022 Gerry van der Kamp-Alons RU associate_prof van der kamp gerry male vSDvQpsAAAAJ
cff511 RU political science 2022 Gaard Kets RU assistant_prof kets gaard male LcMdwSkAAAAJ
aabfe9 RU political science 2022 Rosa Kindt RU phd kindt rosa female
d6a44b RU political science 2022 Marijn Knieriem RU phd knieriem marijn NA
cd2fef RU political science 2022 Stella Koenen RU phd koenen stella female
161fb2 RU political science 2022 Juul Kwaks RU phd kwaks juul NA
071531 RU political science 2022 Jan ter Laak RU other ter laak jan male
b6f250 RU political science 2022 Bart van Leeuwen RU associate_prof van leeuwen bart male 03J6NYkAAAAJ
798b5c RU political science 2022 Mathijs van Leeuwen RU full_prof van leeuwen mathijs male zthyeeAAAAAJ
f6cd20 RU political science 2022 Alex Lehr RU associate_prof lehr alex male pIlA8IoAAAAJ
6e16aa RU political science 2022 Vera Linke RU phd linke vera female
a3cfc0 RU political science 2022 Charlie Loopuijt RU other loopuijt charlie NA
f376e7 RU political science 2022 Sofie van der Maarel RU phd van der maarel sofie female
c2c4f9 RU political science 2022 Romain Malejacq RU assistant_prof malejacq romain male 9dTJsWEAAAAJ
f58246 RU political science 2022 Katerina Manevska RU assistant_prof manevska katerina female iL0RClkAAAAJ
41155b RU political science 2022 Gustav Meibauer RU assistant_prof meibauer gustav male PJcZlYAAAAJ
c53a2d RU political science 2022 Maurits Meijers RU assistant_prof meijers maurits male D4-vnXIAAAAJ
bb0521 RU political science 2022 Tine Molendijk RU other molendijk tine female h-c3t-0AAAAJ
f2f9ed RU political science 2022 Marco Monaco RU phd monaco marco male
10fa1b RU political science 2022 Camille Munezero RU phd munezero camille female
730e04 RU political science 2022 Chris Nijhuis RU other nijhuis chris male
a40366 RU political science 2022 Bob Reinalda RU other reinalda bob male
486d6e UvA/Uni Gothenburg political science 2022 Roderik Rekker UvA Uni Gothenburg assistant_prof rekker roderik male KSV2VJ4AAAAJ
717ed9 RU political science 2022 Miguel A Rivera Quinones RU other quinones miguel male
7d5560 RU political science 2022 Saskia Ruth-Lovell RU assistant_prof ruth saskia female DK61wJ0AAAAJ
66e6f1 RU political science 2022 Indra Römgens RU phd romgens indra NA 5rNYB0gAAAAJ
599411 RU political science 2022 Salah Lema RU phd lema salah male
d29519 RU political science 2022 Melisa Soto RU phd soto melisa female
3c4a5a RU political science 2022 Nora Stel RU assistant_prof stel nora female LAvZZ1kAAAAJ
c69451 RU political science 2022 Jeannine Suurmond RU postdoc suurmond jeannine female
aa72c5 RU political science 2022 Haley Swedlund RU associate_prof swedlund haley female 3nRhhBUAAAAJ
100a0d RU political science 2022 Tjidde Tempels RU other tempels tjidde male HCKVuiQAAAAJ
51455b RU political science 2022 Niels Terpstra RU assistant_prof terpstra niels male MGmxR0IAAAAJ
6f7b92 RU political science 2022 Marie Theuwis RU phd theuwis marie female
d7409f RU political science 2022 Maya Turolla RU postdoc turolla maya female
071fc5 RU political science 2022 Reinout van der Veer RU assistant_prof van der veer reinout male 5fe1ezMAAAAJ
ea1a83 RU political science 2022 Bertjan Verbeek RU full_prof verbeek bertjan male dNBVFTMAAAAJ
7cf730 RU political science 2022 Willemijn Verkoren RU associate_prof verkoren willemijn female T1ebfMkAAAAJ
37b80d RU political science 2022 Mieke Verloo RU full_prof verloo mieke female mlIXgUcAAAAJ
ecf55d RU political science 2022 Désirée Verweij RU full_prof verweij desiree female
464d80 RU political science 2022 Anna van der Vleuten RU full_prof van der vleuten anna female ZAHNbHgAAAAJ
472941 RU political science 2022 Koen Vossen RU other vossen koen male
e4bca9 RU political science 2022 Angela Wigger RU associate_prof wigger angela female QeuCah0AAAAJ
a92a67 RU political science 2022 Marcel Wissenburg RU full_prof wissenburg marcel male dbh5g5AAAAAJ
aadc59 RU political science 2022 Andrej Zaslove RU associate_prof zaslove andrej male bQikR_AAAAAJ
9e4fec Leiden political science 2022 Adina Akbik Leiden assistant_prof akbik adina female m3_6VpEAAAAJ
f807a2 Leiden political science 2022 Femke Bakker Leiden assistant_prof bakker femke female ieQ3uY4AAAAJ
b922e1 Leiden political science 2022 Ingrid van Biezen Leiden full_prof van biezen ingrid female ofK6dCgAAAAJ
efef8d Leiden political science 2022 Nicolas Blarel Leiden associate_prof blarel nicolas male GsE1kN0AAAAJ
634be5 Leiden political science 2022 Arjen Boin Leiden full_prof boin arjen male Zsh5sAUAAAAJ
7ee2bf Leiden political science 2022 Theo Brinkel Leiden full_prof brinkel theo male
9a25ef Leiden political science 2022 Valentina Carraro Leiden assistant_prof carraro valentina female xGrwkn8AAAAJ
b2ec54 Leiden political science 2022 Leila Demarest Leiden associate_prof demarest leila female 4bUtLJAAAAAJ
9f135c Leiden political science 2022 Jesse Doornenbal Leiden other doornenbal jesse male
983544 Leiden political science 2022 Matthew di Giuseppe Leiden associate_prof di giuseppe matthew male uLty40oAAAAJ
ce4c84 Leiden political science 2022 Roos van der Haer Leiden assistant_prof van der haer roos female juh6kFsAAAAJ
b4e915 Leiden political science 2022 Gisela Hirschmann Leiden assistant_prof hirschmann gisela female Yb3Uu8cAAAAJ
6c6b6e Leiden political science 2022 Joop van Holsteijn Leiden full_prof van holsteijn joop male
160dfc Leiden political science 2022 Corinna Jentzsch Leiden assistant_prof jentzsch corinna female RRzVGNoAAAAJ
062958 Leiden political science 2022 Petr Kopecky Leiden full_prof kopecky petr male SvVY1RIAAAAJ
dc7b34 Leiden political science 2022 Matthew Longo Leiden assistant_prof longo matthew male V3yx9A4AAAAJ
090933 Leiden political science 2022 Tom Louwerse Leiden associate_prof louwerse tom male aECGZgEAAAAJ
49cce5 Leiden political science 2022 Floris Mansvelt Beck Leiden assistant_prof beck floris male
4f8e5b Leiden political science 2022 Juan Masullo Jimenez Leiden assistant_prof jimenez juan male AVGwIzoAAAAJ
16f0cf Leiden political science 2022 Hilde van Meegdenburg Leiden assistant_prof van meegdenburg hilde female P2xXmpYAAAAJ
dbd627 Leiden political science 2022 Michael Meffert Leiden assistant_prof meffert michael male ZEkQRSUAAAAJ
fb6ace Leiden political science 2022 Frits Meijerink Leiden assistant_prof meijerink frits male D2xVAo0AAAAJ
c1dddd Leiden political science 2022 Tim Mickler Leiden assistant_prof mickler tim male PwzQAdgAAAAJ
beb0ef Leiden political science 2022 Martijn Mos Leiden assistant_prof mos martijn male sJBWzzUAAAAJ
ca34b9 Leiden political science 2022 Katharina Natter Leiden assistant_prof natter katharina female V6HyuDUAAAAJ
525ff6 Leiden political science 2022 Cristoph Niessen Leiden assistant_prof niessen cristoph male asUht1EAAAAJ
256542 Leiden political science 2022 Paul Nieuwenburg Leiden full_prof nieuwenburg paul male 9B9O29QAAAAJ
e971fc Leiden political science 2022 Simon Otjes Leiden assistant_prof otjes simon male xnT76c0AAAAJ
e887bd Leiden political science 2022 Johannes Oversloot Leiden assistant_prof oversloot johannes male
143c7e Leiden political science 2022 Jonathan Philips Leiden assistant_prof philips jonathan male
003958 Leiden political science 2022 Rebecca Ploof Leiden assistant_prof ploof rebecca female
bc6029 Leiden political science 2022 Karolina Pomorska Leiden associate_prof pomorska karolina female whcjEV8AAAAJ
0db485 Leiden political science 2022 Francesco Ragazzi Leiden associate_prof ragazzi francesco male tkZi4NUAAAAJ
fd4dc5 Leiden political science 2022 Babak Rezaeedaryakenari Leiden assistant_prof rezaeedaryakenari babak male 2VfU564AAAAJ
226c49 Leiden political science 2022 Josh Robison Leiden assistant_prof robison josh male JhsTabMAAAAJ
6a8f84 Leiden political science 2022 Michael Sampson Leiden assistant_prof sampson michael male
20fbcc Leiden political science 2022 Jan Aart Scholte Leiden full_prof scholte jan male wYg6VwgAAAAJ
f491d5 Leiden political science 2022 Jonah Schulhofer-Wohl Leiden assistant_prof schulhofer jonah male LwWVj5EAAAAJ
fbd2eb Leiden political science 2022 Maria Spirova Leiden assistant_prof spirova maria female m_jjvUYAAAAJ
288e91 Leiden political science 2022 Tom Theuns Leiden assistant_prof theuns tom male ZmUlThUAAAAJ
c0df86 Leiden political science 2022 Daniel Thomas Leiden full_prof thomas daniel male DwxlvpIAAAAJ
916409 Leiden political science 2022 Vasiliki Tsagkroni Leiden assistant_prof tsagkroni vasiliki female
7b1dd7 Leiden political science 2022 Wouter Veenendaal Leiden associate_prof veenendaal wouter male vzS7YeYAAAAJ
edcc3d Leiden political science 2022 Claire Vergerio Leiden assistant_prof vergerio claire female WZqYgFsAAAAJ
0aaded Leiden political science 2022 Marco Verschoor Leiden assistant_prof verschoor marco male
be9330 Leiden political science 2022 Cynthia van Vonno Leiden assistant_prof van vonno cynthia female OeKn3VAAAAAJ
841a8f Leiden political science 2022 Niels van Willigen Leiden associate_prof van willigen niels male vj-hMS4AAAAJ
840bdc Leiden political science 2022 Shiming Yang Leiden postdoc yang shiming NA _c8zK5cAAAAJ
6445e3 Leiden political science 2022 Nikoleta Yordanova Leiden associate_prof yordanova nikoleta female eZuz-owAAAAJ
96859b Leiden political science 2022 Frank de Zwart Leiden assistant_prof de zwart frank male
cc1719 Leiden political science 2022 Alessia Aspide Leiden phd aspide alessia female ayVERxoAAAAJ
72d71f Leiden political science 2022 Cyan Bae Leiden phd bae cyan NA
136d01 Leiden political science 2022 Kathleen Brown Leiden phd brown kathleen female djbCzCMAAAAJ
f40e7b Leiden political science 2022 Josette Daemen Leiden phd daemen josette female P3CJrJ8AAAAJ
0d81c4 Leiden political science 2022 Anastasia Ershova Leiden other ershova anastasia female FtiXVOkAAAAJ
26fa43 Leiden political science 2022 Manuel Kaal Leiden phd kaal manuel male
3d73a5 Leiden political science 2022 Eleftherios Karchimakis Leiden phd karchimakis eleftherios male
2be31f Leiden political science 2022 Aleksandra Khokhlova Leiden phd khokhlova aleksandra female
5b407d Leiden political science 2022 Stijn Koenraads Leiden phd koenraads stijn male
e44949 Leiden political science 2022 Hannah Kuhn Leiden phd kuhn hannah female
e36101 Leiden/Uni Berlijn political science 2022 Sabine Mokry Leiden Uni Berlijn phd mokry sabine female bDP4TRIAAAAJ
5dfb74 Leiden political science 2022 Ildikó Plájás Leiden other plajas ildiko female
bcafcd Leiden political science 2022 Zach Reyna Leiden other reyna zach male
f52f90 Leiden political science 2022 Alexander Schilin Leiden phd schilin alexander male
63800e Leiden political science 2022 Pawan Sen Leiden phd sen pawan male
0914b8 Leiden political science 2022 Lukas Spielberger Leiden phd spielberger lukas male 0vFvKiYAAAAJ
4d5bbf Leiden political science 2022 Ruben van de Ven Leiden phd van de ven ruben male
f0cf2d Leiden political science 2022 Denny van der Vlist Leiden phd van der vlist denny NA
5a6b4d Leiden political science 2022 Thijs Vos Leiden phd vos thijs male
180e2a Leiden political science 2022 Rick van Well Leiden phd van well rick male
d811cd Leiden political science 2022 Daan van den Wollenberg Leiden phd van den wollenberg daan male
55e93e Leiden political science 2022 Elina Zorina Leiden phd zorina elina female
df9d07 Leiden political science 2022 Rudy Andeweg Leiden full_prof andeweg rudy male taq-vsMAAAAJ
06d893 Leiden political science 2022 Ivan Bakalov Leiden other bakalov ivan male
270632 Leiden political science 2022 Agha Bayramov Leiden other bayramov agha male yUBUMiEAAAAJ
97163b Leiden political science 2022 Jelena Belic Leiden other belic jelena female
352c4b Leiden political science 2022 Jelke Bethlehem Leiden full_prof bethlehem jelke NA
1f2587 Leiden political science 2022 Peter Castenmiller Leiden other castenmiller peter male
dcc4b1 Leiden political science 2022 Tomas Cirhan Leiden other cirhan tomas male
bba288 Leiden political science 2022 Oda van Cranenburgh Leiden associate_prof van cranenburgh oda NA KVuGMksAAAAJ
332afc Leiden/Lake Forest college political science 2022 Diana Davilla Gordillo Leiden Lake Forest college other gordillo diana female B7ORXzwAAAAJ
96ccf3 Leiden political science 2022 Rutger Hagen Leiden other hagen rutger male Ho21PGYAAAAJ
627f27 Leiden political science 2022 Janina Heaphy Leiden other heaphy janina female V3W-Nz0AAAAJ
6dacdb Leiden political science 2022 Galen Irwin Leiden full_prof irwin galen male
63fedc Leiden political science 2022 Müge Kinacioglu Leiden other kinacioglu muge female
4076a4 Leiden political science 2022 Ruud Koole Leiden full_prof koole ruud male AYQAexkAAAAJ
e2bb6f Leiden political science 2022 Amber Lauwers Leiden other lauwers amber female
294bd1 Leiden political science 2022 Gjovalin Macaj Leiden other macaj gjovalin male dyK8TQYAAAAJ
a7ecf1 Leiden political science 2022 Marijn Nagtzaam Leiden other nagtzaam marijn NA
851511 Leiden political science 2022 Alexandros Ntaflos Leiden other ntaflos alexandros male
446c44 Leiden political science 2022 Joyce Outshoorn Leiden full_prof outshoorn joyce female
b848ad Leiden political science 2022 Ellen van Reuler Leiden other van reuler ellen female
0197a4 Leiden political science 2022 Arlinda Rrustemi Leiden other rrustemi arlinda female E-wK9xwAAAAJ
99f342 Leiden political science 2022 Thomas Scarff Leiden other scarff thomas male
aa4cd8 Leiden political science 2022 Radost Sharenkova - Toshkova Leiden other toshkova radost NA
1cc574 Leiden political science 2022 Xander Slaski Leiden other slaski xander male 1YC0ju8AAAAJ
0b90e1 Leiden political science 2022 Vishwesh Sundar Leiden other sundar vishwesh male
3686e3 Leiden political science 2022 Olaf van der Veen Leiden other van der veen olaf male
77862e Leiden/Uni of Victoria political science 2022 Amy Verdun Leiden Uni of Victoria full_prof verdun amy female
7675f1 Leiden political science 2022 Anouk van Vliet Leiden other van vliet anouk female
04a017 Leiden political science 2022 Carina van de Wetering Leiden other van de wetering carina female NjEqx1EAAAAJ
8d40ea UvA political science 2022 Paul Aarts UvA other aarts paul male
ddde0a UvA political science 2022 Selina Abraham UvA other abraham selina female
cb4447 UvA political science 2022 Tjitske Akkerman UvA other akkerman tjitske female fl-StY0AAAAJ
3cec88 UvA political science 2022 Natasha Anastasiadou UvA other anastasiadou natasha female
fc1e70 UvA/Uni Gothenburg political science 2022 Avyanthi Azis UvA Uni Gothenburg phd azis avyanthi NA
f03d33 UvA political science 2022 Tito Bachmayer UvA phd bachmayer tito male
12be22 UvA political science 2022 Julia Bader UvA associate_prof bader julia female HGv4v7oAAAAJ
98d7d8 UvA political science 2022 Asma Balfaqih UvA other balfaqih asma female
141deb UvA political science 2022 Gulshan Banas UvA phd banas gulshan NA
725da3 UvA political science 2022 Andreas Baur UvA phd baur andreas male
8ae9e8 UvA political science 2022 Joost Berkhout UvA associate_prof berkhout joost male CqRWc-YAAAAJ
1de147 UvA political science 2022 Merve Biten UvA phd biten merve female Y5fDQXEAAAAJ
545b6f UvA political science 2022 Astrid Bodini UvA phd bodini astrid female
40e322 UvA political science 2022 Saskia Bonjour UvA associate_prof bonjour saskia female j9jGxLsAAAAJ
d6ee47 UvA political science 2022 Esmé Bosma UvA phd bosma esme female qhk3rn4AAAAJ
f16005 UvA political science 2022 Dimitris Bouris UvA other bouris dimitris male Add0DgEXEpYC
99514d UvA political science 2022 Wouter van der Brug UvA full_prof van der brug wouter male cJQGmHsAAAAJ
2472e0 UvA political science 2022 Brian Burgoon UvA full_prof burgoon brian male eYH2vv8AAAAJ
ea2ff8 UvA political science 2022 Olga Burlyuk UvA assistant_prof burlyuk olga female PLl5XhUAAAAJ
5656bc UvA political science 2022 Kristin Cain UvA phd cain kristin female
1cb841 UvA political science 2022 Ruth Carlitz UvA assistant_prof carlitz ruth female HjvTWBsAAAAJ
74aeb1 UvA political science 2022 Noyonika Das UvA phd das noyonika female
f6d00f UvA political science 2022 Ursula Daxecker UvA associate_prof daxecker ursula female Jb5fr7UAAAAJ
3e0b59 UvA political science 2022 Jeroen Doomernik UvA associate_prof doomernik jeroen male 3PfRUF4AAAAJ
473c3b Universiteit Gent political science 2022 David van der Duin Universiteit Gent UvA phd van der duin david male pbNwoHkAAAAJ
8883c3 UvA political science 2022 Linet Durmusoglu UvA phd durmusoglu linet female JGVZubkAAAAJ
a05697 UvA political science 2022 Marieke Ekenhorst UvA phd ekenhorst marieke female
1cdd0c UvA political science 2022 Evelyn Ersanili UvA other ersanili evelyn female PxAjCaEAAAAJ
31f2fd UvA political science 2022 Sonja Evaldsson Mellstrom UvA phd mellstrom sonja female
61ee34 UvA political science 2022 Meindert Fennema UvA full_prof fennema meindert male s_K0D7EAAAAJ
bc2fa4 UvA political science 2022 Matilde Ferretti UvA other ferretti matilde female
03378c UvA political science 2022 Fatima Festic UvA other festic fatima female
cd5514 UvA political science 2022 Jan Fichtner UvA other fichtner jan male e0I38lYAAAAJ
a4aa29 UvA political science 2022 Luc Fransen UvA associate_prof fransen luc male MqyGJ74AAAAJ
9881ac UvA political science 2022 Annette Freyberg-Inan UvA full_prof freyberg annette female XUL-aVsAAAAJ
21792f UvA political science 2022 Maureen Fubara UvA phd fubara maureen female aYqsc0sAAAAJ
e96d56 UvA political science 2022 John Grin UvA full_prof grin john male aRIUoisAAAAJ
4ef225 UvA political science 2022 Rob Hagendijk UvA other hagendijk rob male aog7pxEAAAAJ
58d43d UvA political science 2022 Armèn Hakhverdian UvA associate_prof hakhverdian armen male 1p8uveMAAAAJ
eb4f5c UvA political science 2022 Marcel Hanegraaff UvA associate_prof hanegraaff marcel male CJhoRSUAAAAJ
fc7162 UvA political science 2022 Imke Harbers UvA associate_prof harbers imke female oC7sj5gAAAAJ
b6f82c UvA political science 2022 Eelco Harteveld UvA assistant_prof harteveld eelco male D-95uTAAAAAJ
359aca UvA political science 2022 Victor Hartman UvA other hartman victor male
b8a0fa UvA political science 2022 Anja van Heelsum UvA associate_prof van heelsum anja female H3-WcG4AAAAJ
24e996 UvA political science 2022 Eelke Heemskerk UvA associate_prof heemskerk eelke NA bgO7uCMAAAAJ
c1bc5a UvA political science 2022 Klaas Heemskerk UvA phd heemskerk klaas male RueFMuoAAAAJ
baaf85 UvA political science 2022 Charlotte Hille UvA assistant_prof hille charlotte female
fc37b1 UvA/Uni of Lausanne political science 2022 Otto Holman UvA Uni of Lausanne associate_prof holman otto male
791342 UvA political science 2022 Maaike Homan UvA phd homan maaike female
0f038f UvA political science 2022 Franca van Hooren UvA assistant_prof van hooren franca female 9gw1aFEAAAAJ
e3813b UvA political science 2022 Beste Isleyen UvA associate_prof isleyen beste female tM_hs3MAAAAJ
56f9be UvA political science 2022 Leonie Jegen UvA phd jegen leonie female tgGcqSgAAAAJ
e6f6aa UvA political science 2022 Thomas Jocker UvA phd jocker thomas male
04b899 UvA political science 2022 Judith de Jong UvA phd de jong judith female
8bb3ba UvA political science 2022 Haylee Kelsall UvA phd kelsall haylee female QhahkeEAAAAJ
ec9501 UvA political science 2022 Eda Kiriscioglu Tasan UvA phd tasan eda female
5c6c74 UvA political science 2022 Jens van ’t Klooster UvA assistant_prof van ’t klooster jens male eKInAIcAAAAJ
f7b0ce UvA/Shandong uni political science 2022 Geert-Jan Knoops UvA Shandong uni full_prof knoops geert-jan male
73d74f UvA political science 2022 Daniel Komaromy UvA other komaromy daniel male
40a259 UvA political science 2022 Sebastian Krapohl UvA associate_prof krapohl sebastian male ks6TSPMAAAAJ
301fb6 UvA political science 2022 Katie Kuschminder UvA other kuschminder katie female 3kw62cwAAAAJ
c94dab UvA political science 2022 Chunglin Kwa UvA other kwa chunglin male BITixasAAAAJ
b365f4 UvA political science 2022 Sarah de Lange UvA full_prof de la nge sarah female DKeDYmYAAAAJ
177b8a UvA political science 2022 David Laws UvA other laws david male uRyXoVkAAAAJ
ee8234 UvA political science 2022 Alexandros Lefteratos UvA phd lefteratos alexandros male
87803e UvA political science 2022 Yue Li UvA other li yue NA
4e0632 UvA political science 2022 Chuyu Liu UvA assistant_prof liu chuyu NA u2KCY8kAAAAJ
1e8512 UvA political science 2022 Meredith Loken UvA assistant_prof loken meredith female py1oTccAAAAJ
921449 UvA political science 2022 Naomi Lührs UvA other luhrs naomi female
f13199 UvA political science 2022 Kingsley Madueke UvA other madueke kingsley male
07427a UvA political science 2022 Rojika Maharjan UvA phd maharjan rojika NA
0dbf6f UvA political science 2022 Piotr Marczynski UvA other marczynski piotr male
307c25 UvA political science 2022 Marcel Maussen UvA associate_prof maussen marcel male o2mocAYAAAAJ
293c9c UvA political science 2022 Tom van der Meer UvA full_prof van der meer tom male K51iiIAAAAAJ
dc8d51 UvA political science 2022 Ana Mishkovska Kajevska UvA other kajevska ana female
fc8dc0 UvA political science 2022 Sabah Mofidi UvA other mofidi sabah female kyLIJgQAAAAJ
70c91f UvA political science 2022 Marie Morel UvA other morel marie female
89bf55 UvA political science 2022 Daniel Mügge UvA full_prof mugge daniel male tzdOKAsAAAAJ
9558c4 UvA political science 2022 Liza Mügge UvA associate_prof mugge liza female N-4d9d8AAAAJ
9aa65b UvA political science 2022 Ton Nijhuis UvA full_prof nijhuis ton male AHwWyf8AAAAJ
a595bf UvA political science 2022 Nilmawati Nilmawati UvA phd nilmawati nilmawati NA
a7944a UvA political science 2022 Johan Olsthoorn UvA assistant_prof olsthoorn johan male SputsXcAAAAJ
18b469 UvA political science 2022 Sanne van Oosten UvA phd van oosten sanne female
017e6c UvA political science 2022 Polly Pallister-Wilkins UvA associate_prof pallister polly female g8dcsQMAAAAJ
3e23b2 UvA political science 2022 Mehdi Parvizi Amineh UvA other amineh mehdi male mo6OjecAAAAJ
697fc9 UvA political science 2022 Daphne van der Pas UvA assistant_prof van der pas daphne female oCZMZ1MAAAAJ
5b72da UvA political science 2022 Julia Palejko UvA other palejko julia female
cde82d UvA political science 2022 Steve Pickering UvA other pickering steve male uG7Lh70AAAAJ
8b0f06 UvA political science 2022 Robin Pistorius UvA other pistorius robin NA
57c746 UvA political science 2022 Philip van Praag UvA associate_prof van praag philip male 97UDV4cAAAAJ
ed78ad UvA political science 2022 Paul Raekstad UvA other raekstad paul male
b1d921 UvA political science 2022 Emily Ragus UvA phd ragus emily female
2e6024 UvA political science 2022 Mariana Riquito Pereira UvA phd pereira mariana female
3ba36f UvA political science 2022 Conny Roggeband UvA associate_prof roggeband conny NA 18E6cPMAAAAJ
87e7c1 UvA political science 2022 Matthijs Rooduijn UvA assistant_prof rooduijn matthijs male ZXmjZ-AAAAAJ
213f9b UvA political science 2022 Enzo Rossi UvA associate_prof rossi enzo male TP6HyE4AAAAJ
8e89ad UvA political science 2022 Zahra Runderkamp UvA phd runderkamp zahra female s5PGqqgAAAAJ
1043b6 UvA political science 2022 Kidjie Ian Saguin UvA assistant_prof saguin kidjie female iNXHq-sAAAAJ
0ba036 UvA political science 2022 Rosa Sanchez Salgado UvA assistant_prof salgado rosa female
42efec UvA political science 2022 Anne Sastromedjo UvA phd sastromedjo anne female
4f9feb UvA political science 2022 Philip Schleifer UvA associate_prof schleifer philip male 0jN3bk4AAAAJ
341d28 UvA political science 2022 Eric Schliesser UvA full_prof schliesser eric male SomSuVUAAAAJ
a56054 UvA political science 2022 Gijs Schumacher UvA associate_prof schumacher gijs male b0RJDxkAAAAJ
844147 UvA political science 2022 Merel Serdijn UvA phd serdijn merel female
53740b UvA political science 2022 Yasemin Sivri UvA phd sivri yasemin female
7f904d UvA political science 2022 Abbey Steele UvA associate_prof steele abbey NA 5U0D46YAAAAJ
27fbca UvA political science 2022 Eefje Steenvoorden UvA assistant_prof steenvoorden eefje female C9ZFw7oAAAAJ
b20cf1 Leiden uni/UvA political science 2022 Frank Takes Leiden uni UvA other takes frank male MkwDlKwAAAAJ
ac86a0 UvA political science 2022 Jean Tillie UvA full_prof tillie jean NA 1ggzA7MAAAAJ
6a0515 UvA political science 2022 Geoffrey Underhill UvA full_prof underhill geoffrey male 9moA2scAAAAJ
949b75 Koc University.UvA political science 2022 Duygu Uysal Dincol Koc University UvA phd dincol duygu female JTZhZb8AAAAJ
8e0287 UvA political science 2022 Nel Vandekerckhove UvA assistant_prof vande kerckhove nel NA 1uiyqRQAAAAJ
74e9b3 UvA political science 2022 Imrat Verhoeven UvA assistant_prof verhoeven imrat male nq8-M8wAAAAJ
b18c01 UvA political science 2022 Floris Vermeulen UvA associate_prof vermeulen floris male pbp6BdIAAAAJ
69ffd5 UvA political science 2022 Darshan Vigneswaran UvA associate_prof vigneswaran darshan male IftfOuIAAAAJ
8ec347 UvA political science 2022 Jessica de Vlieger UvA phd de vlieger jessica female
defe17 UvA political science 2022 Katharina Weber UvA phd weber katharina female
17ebfa UvA political science 2022 Eline Westra UvA phd westra eline female
7ee1e5 UvA political science 2022 Sofia Margareta Wickberg UvA assistant_prof wickberg sofia female
1f7048 VU political science 2022 Loes Aaldering VU assistant_prof aaldering loes female shEs2hAAAAAJ
cf6cb5 VU political science 2022 Daniela Andrade VU other andrade daniela female
6f0b96 VU political science 2022 Bastiaan van Apeldoorn VU full_prof van apeldoorn bastiaan male Bwuk2boAAAAJ
2757e2 VU political science 2022 Jelle van Baardewijk VU assistant_prof van baardewijk jelle male 6bAWUVQAAAAJ
c1bc47 VU political science 2022 Duco Bannink VU associate_prof bannink duco male
422128 VU political science 2022 Bas Becker VU phd becker bas NA
1d0124 VU political science 2022 Thijs de Boer VU phd de boer thijs male OBg-EjIAAAAJ
c457f3 VU political science 2022 Hans Bosselaar VU other bosselaar hans male Ey0dqUcAAAAJ
13f51b VU political science 2022 Hans Boutellier VU full_prof boutellier hans male sInO_KsAAAAJ
06d866 VU political science 2022 Jeanne de Bruijn VU full_prof de bruijn jeanne female PhxVF3sAAAAJ
517ad1 VU political science 2022 Madalina Busuioc VU full_prof busuioc madalina female s9jzOw0AAAAJ
50ef41 VU political science 2022 Aylin Aydin Cakir VU other cakir aylin female HvTRVMgAAAAJ
c99881 VU political science 2022 Sinan Cankaya VU assistant_prof cankaya sinan male P_lGEcQAAAAJ
7f5969 VU political science 2022 Peter Castenmiller VU other castenmiller peter male
dc0e0f VU political science 2022 Alana Castro de Azevedo VU phd de azevedo alana female
8bf7a0 UU/VU political science 2022 Eric Cezne UU VU other cezne eric male w6v1mMsAAAAJ
2d3771 VU political science 2022 Liberty Chee VU other chee liberty female d1hnslcAAAAJ
f3304a VU political science 2022 Ben Crum VU full_prof crum ben male vkcZhoQAAAAJ
e59682 VU political science 2022 Serena Does VU full_prof does serena female
c4cac3 VU political science 2022 Yunus Baris Ertürk VU phd erturk yunus male
a53da0 VU political science 2022 Yarin Eski VU assistant_prof eski yarin NA Dms1ct0AAAAJ
3e4651 VU political science 2022 Fred Fleurke VU full_prof fleurke fred male
689cd9 VU political science 2022 Gjalt de Graaf VU full_prof de graaf gjalt male ybeK0AYAAAAJ
781e3d VU political science 2022 Nana de Graaff VU associate_prof de graaff nana NA PfLQHx0AAAAJ
0df1d2 VU political science 2022 Laurens Hartveld VU other hartveld laurens male
0a6fa8 VU political science 2022 Hans van den Heuvel VU full_prof van den heuvel hans male
b2af58 VU political science 2022 John Hogan VU other hogan john male
f32c23 VU political science 2022 Jan Hoogland VU assistant_prof hoogland jan male
24ee42 VU political science 2022 Leo Huberts VU full_prof huberts leo male BIajl3gAAAAJ
c4a6b4 VU political science 2022 Thomas Janssen VU other janssen thomas male
b3684e VU political science 2022 Hortense Jongen VU assistant_prof jongen hortense female v84gVJQAAAAJ
115f01 VU political science 2022 Wynand Kastart VU other kastart wynand male
16a347 VU political science 2022 Hans Keman VU full_prof keman hans male uFxpEMoAAAAJ
8ede32 VU political science 2022 Cille Kaiser VU other kaiser cille female tEvcQ-IAAAAJ
1291a2 VU political science 2022 Maria Kourpa VU other kourpa maria female
3fd000 VU political science 2022 Benjamin Leidorf-Tida VU phd leidorf benjamin male
832968 VU political science 2022 Geert Luteijn VU other luteijn geert male
1715a9 VU political science 2022 Philipp Lutz VU assistant_prof lutz philipp male Ml32muAAAAAJ
a98538 VU political science 2022 Maria-Alexandra Martin VU phd martin maria-alexandra female
645f30 VU political science 2022 Stefano Merlo VU phd merlo stefano male
8f52c0 VU political science 2022 Patrick Mello VU assistant_prof mello patrick male gR-nC8QAAAAJ
8920a6 VU political science 2022 Dana Naomi Mills VU other mills dana female
90b151 VU political science 2022 AJGM van Montfort VU associate_prof van montfort AJGM NA
9af1b2 VU political science 2022 Montserrat Koloffon Rosas VU phd rosas montserrat female
b4891c VU political science 2022 Steven Otterman VU phd otterman steven male
01bba5 VU political science 2022 Henk Overbeek VU full_prof overbeek henk male CMidSl4AAAAJ
16cebe VU political science 2022 Patrick Overeem VU assistant_prof overeem patrick male wOL_U4AAAAAJ
8866a1 VU political science 2022 Philipp Pattberg VU full_prof pattberg philipp male EoNVvOYAAAAJ
25a4eb VU political science 2022 Maeve Powlick VU other powlick maeve female
953445 VU political science 2022 Michiel van Schagen VU other van schagen michiel male
e7dd6f VU political science 2022 Kayla Schwoerer VU assistant_prof schwoerer kayla female 52RpPxkAAAAJ
7d5503 VU political science 2022 Katherine Senneville VU other senneville katherine female
99a1f5 VU political science 2022 Frederique Six VU associate_prof six frederique female 0417qCkAAAAJ
174483 VU political science 2022 Boris Slijper VU other slijper boris male
f49b8c VU political science 2022 Diederik Stadig VU phd stadig diederik male oqLPg3oAAAAJ
f72215 VU political science 2022 Ronald van Steden VU associate_prof van steden ronald male dTe4OGMAAAAJ
dc2500 VU political science 2022 Ozlem Terzi VU other terzi ozlem female
69867c VU political science 2022 JS Timmer VU assistant_prof timmer JS NA oErMzwYAAAAJ
615ab6 VU political science 2022 Willem Trommel VU full_prof trommel willem male 0FSBoLUAAAAJ
136dea VU political science 2022 Lieselot Vandenbussche VU assistant_prof vanden bussche lieselot female GLe_P4AAAAAJ
7cb796 VU political science 2022 Bram Verhulst VU other verhulst bram male
fd0bab VU political science 2022 Sietske van der Vliet VU other van der vliet sietske female
720f3c Bocconi University/UvA political science 2022 Catherine de Vries Bocconi University UvA full_prof de vries catherine female kK4r0GUAAAAJ
d55115 VU political science 2022 FP Wagenaar VU assistant_prof wagenaar FP NA
5ea406 VU political science 2022 Wolfgang Wagner VU full_prof wagner wolfgang male zEBTaZ4AAAAJ
42bf2c VU political science 2022 Chendi Wang VU assistant_prof wang chendi NA Xa67QSEAAAAJ
104f85 VU political science 2022 Pieter van Wijnen VU other van wijnen pieter male
e44fa2 VU political science 2022 Kristina Weissmueller VU assistant_prof weissmueller kristina female APdmf2UAAAAJ

Please note, that quite some Google profiles are missing. A quick look shows me this is mostly among the position category ‘Phds’ and ‘other’. Thus probably because these scholars do not have any publications yet. This is however not always the case. Even some full profs do not have a Google scholar profile. The idea would be that even if they themselves do not have a profile, we can still find their publications with department (or discipline) members because we will find the same publications via different authors.

Later, we need to decide whether or not we set the number of publications for some scholars to 0 or to NA.

8.1 objects to save scrap

We are going to scrape the profiles for each scholar and all publications for each scholar.

Let us save all information in list objects.

list_profiles <- list()  # first we create an empty list that we then fill up with the for loop
list_publications <- list()

We will use the gs_id variable as a key to match all stuff later.

gs_id <- unique(df$gs_id)[unique(df$gs_id) != ""]  #a clumsy way to remove the empty gs_id values. 

now the actual scraping part

time <- 0.1  # I placed the waiting time outside the loop
i <- 1  # Our loop iterator is now a variable. This means I can change it within a while loop. Using a for loop you cant change your iterator in the loop itself.
while (i <= length(gs_id)) {
    print(i)
    Sys.sleep(time)

    tryCatch({
    list_profiles[[i]] <- get_profile(gs_id[i]) #the scholar id is save automatically 
    list_publications[[i]] <- get_publications(gs_id[i])
    list_publications[[i]][, c("gs_id")] <- gs_id[i] #make sure to add the id manually for matching purposes later 
    i <- i + 1 
    time <- .1 #set time back to low value of we get an answer from google
    },
    
      warning = function(w) {
        cat("WARNING:", conditionMessage(w), "\n") 
        i <<- i + 1 #please note the double arrow head, so we can assign values to a global variable. We want to continue if we get a warning
        }, 
    
      error =function(e) {
        time <<- min(time + 100, 3600*2) #probably reached a rate limit, increase waiting with maximum of 2hours
        cat("Error:", conditionMessage(e), "\n") 
        cat("sleep time:", time,  "\n")
        cat("I am currently in loop number:", i)
        #google throws all kind of error messages, we are not catching all
      })
}

8.2 save your objects

fsave(list_profiles)
fsave(list_publications)

8.3 put the info of the profiles in our data set of staff members cs_df

Because of rate limits you were probably not able to complete the total scrape yourself. Please download the files:

egodata: Download 20230621df_gsid_jt.rda.

Profiles: Download 20230621list_profiles_jt.rda

Publications: Download 20230621list_publications_jt.rda

Save files in correct directory: ‘./data/processed’.

8.3.1 load files

load("./data/processed/20230621df_gsid_jt.rda")  #load dataset (adapt name if necessary)
df <- x  #give a short name

load("./data/processed/20230621list_profiles_jt.rda")  #load dataset (adapt name if necessary)
profiles <- x  #give a short name

load("./data/processed/20230621list_publications_jt.rda")  #load dataset (adapt name if necessary)
publications <- x  #give a short name

rm(x)  #remove the original object

8.3.2 attach some profile data to our egodata

# remove the empty lists first
# https://stackoverflow.com/questions/26539441/remove-null-elements-from-list-of-lists A helper
# function that tests whether an object is either NULL _or_ a list of NULLs
is.NullOb <- function(x) is.null(x) | all(sapply(x, is.null))

## Recursively step down into list, removing all such objects
rmNullObs <- function(x) {
    x <- Filter(Negate(is.NullOb), x)
    lapply(x, function(x) if (is.list(x))
        rmNullObs(x) else x)
}
profiles <- rmNullObs(profiles)

# yes, I know that apply, map etc can/may be faster. but loops are easy to understand. And easy to
# parallelize if need be.

for (i in 1:length(profiles)) {
    names(profiles)[[i]] <- profiles[[i]]$id$gs_id
}

# we are working with tibbles thus need to declare variables upfront.
df$gs_name <- df$gs_affiliation <- df$gs_total_cites <- df$gs_h_index <- df$gs_i10_index <- df$gs_field <- df$gs_homepage <- NA

for (i in 1:nrow(df)) {
    who_id <- which(names(profiles) == df$gs_id[i])
    if (length(who_id) > 0)
        tryCatch({
            {
                df$gs_name[i] <- profiles[[who_id]]$name
                df$gs_affiliation[i] <- profiles[[who_id]]$affiliation
                df$gs_total_cites[i] <- profiles[[who_id]]$total_cites
                df$gs_h_index[i] <- profiles[[who_id]]$h_index
                df$gs_i10_index[i] <- profiles[[who_id]]$i10_index
                df$gs_field[i] <- profiles[[who_id]]$field[1]
                df$gs_homepage[i] <- profiles[[who_id]]$homepage
            }
        }, error = function(e) {
            cat("ERROR :", conditionMessage(e), "\n")
        })  # continue on error, but print the error
}
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : subscript out of bounds 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : subscript out of bounds 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero 
#> ERROR : replacement has length zero
df_complete <- df

fsave(df_complete)

Okay, please note we did not attach everything. We also did not scrape everything yet via the scholar package. But for today this will be enough.


References

Priem, Jason, Heather Piwowar, and Richard Orr. 2022. “OpenAlex: A Fully-Open Index of Scholarly Works, Authors, Venues, Institutions, and Concepts.” https://arxiv.org/abs/2205.01833.
LS0tDQp0aXRsZTogIlB1YmxpY2F0aW9ucyINCmJpYmxpb2dyYXBoeTogcmVmZXJlbmNlcy5iaWINCmxpbmstY2l0YXRpb25zOiB5ZXMNCi0tLQ0KDQogIA0KYGBge3IsIGdsb2JhbHNldHRpbmdzLCBlY2hvPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCByZXN1bHRzPSdoaWRlJ30NCmxpYnJhcnkoa25pdHIpDQpvcHRzX2NodW5rJHNldCh0aWR5Lm9wdHM9bGlzdCh3aWR0aC5jdXRvZmY9MTAwKSx0aWR5PVRSVUUsIHdhcm5pbmcgPSBGQUxTRSwgbWVzc2FnZSA9IEZBTFNFLGNvbW1lbnQgPSAiIz4iLCBjYWNoZT1UUlVFLCBjbGFzcy5zb3VyY2U9YygidGVzdCIpLCBjbGFzcy5vdXRwdXQ9YygidGVzdDIiKSwgY2FjaGUubGF6eSA9IEZBTFNFKQ0Kb3B0aW9ucyh3aWR0aCA9IDEwMCkgDQpyZ2w6OnNldHVwS25pdHIoKQ0KDQpjb2xvcml6ZSA8LSBmdW5jdGlvbih4LCBjb2xvcikge3NwcmludGYoIjxzcGFuIHN0eWxlPSdjb2xvcjogJXM7Jz4lczwvc3Bhbj4iLCBjb2xvciwgeCkgfQ0KDQpgYGANCg0KYGBge3Iga2xpcHB5LCBlY2hvPUZBTFNFLCBpbmNsdWRlPVRSVUUsIG1lc3NhZ2U9RkFMU0V9DQojIGluc3RhbGwucGFja2FnZXMoInJlbW90ZXMiKQ0KI3JlbW90ZXM6Omluc3RhbGxfZ2l0aHViKCJybGVzdXIva2xpcHB5IikNCmtsaXBweTo6a2xpcHB5KHBvc2l0aW9uID0gYygndG9wJywgJ3JpZ2h0JykpDQoja2xpcHB5OjprbGlwcHkoY29sb3IgPSAnZGFya3JlZCcpDQoja2xpcHB5OjprbGlwcHkodG9vbHRpcF9tZXNzYWdlID0gJ0NsaWNrIHRvIGNvcHknLCB0b29sdGlwX3N1Y2Nlc3MgPSAnRG9uZScpDQpgYGANCg0KDQotLS0tDQoNCg0KDQojIGdldHRpbmcgc3RhcnRlZA0KDQpTdGFydCB3aXRoIGNsZWFuIHdvcmtzcGFjZSANCg0KYGBge3J9DQpybShsaXN0PWxzKCkpDQpgYGANCg0KLS0tLQ0KDQojIEdvYWwNCg0KTm93IHdlIGhhcnZlc3RlZCB0aGUgbmFtZXMgb2Ygc2Nob2xhcnMgZnJvbSBzcGVjaWZpYyBkZXBhcnRtZW50cywgaXQgaXMgdGltZSB0byB3ZWJzY3JhcGUgdGhlaXIgcHVibGljYXRpb25zIChhbmQgc29tZSBvdGhlciBzdHVmZiBhbG9uZyB0aGUgd2F5KS4gVGhlcmUgYXJlIG1hbnkgd2F5cyBvZiBkb2luZyB0aGlzOiAgDQoNCiogdmlhIGdvb2dsZSBzY2hvbGFyLiAgDQoqIHZpYSBbT3BlbkFsZXhdKGh0dHBzOi8vb3BlbmFsZXgub3JnLykgIA0KIA0KDQpXaGF0IHdlIGFyZSBub3QgZ29pbmcgdG8gZGVhbCB3aXRoIGhlcmUgaXMgaG93IHRvIHRhY2tsZSByYXRlIGxpbWl0cywgYWx0ZXJuYXRpbmcgdnBucywgZXRjLiANCg0KDQojIEN1c3RvbSBmdW5jdGlvbnMNCg0KLSBgZnBhY2thZ2UuY2hlY2tgOiBDaGVjayBpZiBwYWNrYWdlcyBhcmUgaW5zdGFsbGVkIChhbmQgaW5zdGFsbCBpZiBub3QpIGluIFIgKFtzb3VyY2VdKGh0dHBzOi8vdmJhbGlnYS5naXRodWIuaW8vdmVyaWZ5LXRoYXQtci1wYWNrYWdlcy1hcmUtaW5zdGFsbGVkLWFuZC1sb2FkZWQvKSkuICANCi0gYGZzYXZlYDogU2F2ZSB0byBwcm9jZXNzZWQgZGF0YSBpbiByZXBvc2l0b3J5ICANCi0gYGZsb2FkYDogVG8gbG9hZCB0aGUgZmlsZXMgYmFjayBhZnRlciBhbiBgZnNhdmVgICANCi0gYGZzaG93ZGZgOiBUbyBwcmludCBvYmplY3RzICh0aWJibGVzIC8gZGF0YS5mcmFtZSkgbmljZWx5IG9uIHNjcmVlbiBpbiAucm1kICANCg0KDQpgYGB7ciBjdXN0b21mdW5jdGlvbnMsIHJlc3VsdHM9J2hpZGUnfQ0KZnBhY2thZ2UuY2hlY2sgPC0gZnVuY3Rpb24ocGFja2FnZXMpIHsNCiAgbGFwcGx5KHBhY2thZ2VzLCBGVU4gPSBmdW5jdGlvbih4KSB7DQogICAgaWYgKCFyZXF1aXJlKHgsIGNoYXJhY3Rlci5vbmx5ID0gVFJVRSkpIHsNCiAgICAgIGluc3RhbGwucGFja2FnZXMoeCwgZGVwZW5kZW5jaWVzID0gVFJVRSkNCiAgICAgIGxpYnJhcnkoeCwgY2hhcmFjdGVyLm9ubHkgPSBUUlVFKQ0KICAgIH0NCiAgfSkNCn0NCg0KZnNhdmUgPC0gZnVuY3Rpb24oeCwgZmlsZT1OVUxMLCBsb2NhdGlvbj0iLi9kYXRhL3Byb2Nlc3NlZC8iKSB7DQogIGlmZWxzZSghZGlyLmV4aXN0cygiZGF0YSIpLCBkaXIuY3JlYXRlKCJkYXRhIiksIEZBTFNFKQ0KICBpZmVsc2UoIWRpci5leGlzdHMoImRhdGEvcHJvY2Vzc2VkIiksIGRpci5jcmVhdGUoImRhdGEvcHJvY2Vzc2VkIiksIEZBTFNFKQ0KICBpZiAoaXMubnVsbChmaWxlKSkgZmlsZT0gZGVwYXJzZShzdWJzdGl0dXRlKHgpKQ0KICBkYXRlbmFtZSA8LSBzdWJzdHIoZ3N1YigiWzotXSIsICIiLCBTeXMudGltZSgpKSwgMSw4KSAgDQogIHRvdGFsbmFtZSA8LSBwYXN0ZShsb2NhdGlvbiwgZGF0ZW5hbWUsIGZpbGUsICIucmRhIiwgc2VwPSIiKQ0KICBzYXZlKHgsIGZpbGUgPSB0b3RhbG5hbWUpICAjbmVlZCB0byBmaXggaWYgZmlsZSBpcyByZWxvYWRlZCBhcyBpbnB1dCBuYW1lLCBub3QgYXMgeC4gDQp9DQoNCmZsb2FkIDwtIGZ1bmN0aW9uKGZpbGVuYW1lKSB7DQogIGxvYWQoZmlsZW5hbWUpDQogIGdldChscygpW2xzKCkgIT0gImZpbGVuYW1lIl0pDQp9DQoNCmZzaG93ZGYgPC0gIGZ1bmN0aW9uKHgsIC4uLikgew0KICBrbml0cjo6a2FibGUoeCwgZGlnaXRzPTIsICJodG1sIiwgLi4uKSAlPiUNCiAga2FibGVFeHRyYTo6a2FibGVfc3R5bGluZyhib290c3RyYXBfb3B0aW9ucyA9IGMoInN0cmlwZWQiLCAiaG92ZXIiKSkgJT4lDQogIGthYmxlRXh0cmE6OnNjcm9sbF9ib3god2lkdGg9IjEwMCUiLCBoZWlnaHQ9ICIzMDBweCIpDQp9IA0KDQpgYGANCg0KDQotLS0gIA0KDQojIHBhY2thZ2VzDQoNCmBgYHtyfQ0KcGFja2FnZXMgPC0gYygidGlkeXZlcnNlIiwgInNjaG9sYXIiLCAib3BlbmFsZXhSIiwgInJ2ZXN0IiwgImpzb25saXRlIikNCmZwYWNrYWdlLmNoZWNrKHBhY2thZ2VzKQ0KYGBgDQoNCiMgaW5wdXQgIA0KDQpgYGB7ciwgZWNobz1GQUxTRSwgZXZhbD1GQUxTRX0NCmxvYWQoIi4vZGF0YS9wcm9jZXNzZWQvZGZfZ2VuZGVyLnJkYSIpDQpkZl9nZW5kZXJfanQgPC0gZGZfZ2VuZGVyICU+JQ0KICBzZWxlY3QoImlkIiwgInVuaSIsICJkaXNjaXBsaW5lIiwgInllYXIiLCAibmFtZSIsICJhZmZpbDEiLCAiYWZmaWwyIiwgInBvc2l0aW9uIiwgIm5wIiwgImxhc3RuYW1lIiwgImZpcnN0bmFtZSIsICJpbmkiLCJnZW5kZXIiKQ0KZGZfZ2VuZGVyX2p0JGFmZmlsMltkZl9nZW5kZXJfanQkYWZmaWwyPT0iRyJdIDwtICJSVUciDQpkZl9nZW5kZXJfanQkYWZmaWwyW2RmX2dlbmRlcl9qdCRhZmZpbDI9PSJUaWxidXJnIl0gPC0gIlV2VCINCmRmX2dlbmRlcl9qdCRhZmZpbDJbZGZfZ2VuZGVyX2p0JGFmZmlsMT09IlVuaXZlcnNpdGVpdCBHZW50Il0gPC0gIlV2QSINCmRmX2dlbmRlcl9qdCRhZmZpbDJbZGZfZ2VuZGVyX2p0JGFmZmlsMT09IktvYyBVbml2ZXJzaXR5LlV2QSJdIDwtICJVdkEiDQpkZl9nZW5kZXJfanQkYWZmaWwxW2RmX2dlbmRlcl9qdCRhZmZpbDE9PSJLb2MgVW5pdmVyc2l0eS5VdkEiXSA8LSAiS29jIFVuaXZlcnNpdHkiDQpmc2F2ZShkZl9nZW5kZXJfanQpDQpgYGANCg0KDQpXZSB1c2UgdGhlIGZpbGUgY3JlYXRlZCBpbiB0aGUgcHJldmlvdXMgc3RlcCAobmFtZXMgd2l0aCBnZW5kZXJzIGF0dGFjaGVkKSBhcyBpbnB1dC4gDQpBbm5lIE1hYWlrZSBhbmQgSSB0aWRpZWQgdXAgdGhlIGRhdGEgc2V0IG9mIHRoZSBwcmV2aW91cyBzdGVwIGEgYml0LiBQbGVhc2UgdXNlIHRoaXMgb25lOiAgDQoNCmByIHhmdW46OmVtYmVkX2ZpbGUoIi4vZGF0YS9wcm9jZXNzZWQvMjAyMzA2MjBkZl9nZW5kZXJfanQucmRhIilgLiANCg0KU2F2ZSBmaWxlIGluIGNvcnJlY3QgZGlyZWN0b3J5OiAnLi9kYXRhL3Byb2Nlc3NlZCcuIA0KDQpgYGB7cn0NCmRmIDwtIGZsb2FkKCIuL2RhdGEvcHJvY2Vzc2VkLzIwMjMwNjIwZGZfZ2VuZGVyX2p0LnJkYSIpIA0KDQpgYGANCg0KIyBOaWNlIHRvIGhhdmUgYW4gaWQgb2YgdGhlIHNjaG9sYXIgd2hpY2ggaXMgbGlua2VkIHRvIHB1YmxpY2F0aW9ucw0KDQojIyBPcGVuQWxleA0KDQpJZiB5b3UgdXNlIG9wZW5hbGV4UiBpbiByZXNlYXJjaCwgcGxlYXNlIGNpdGU6IFtAcHJpZW0yMDIyb3BlbmFsZXhdDQoNCkJlZm9yZSB3ZSBzdGFydCBwbGF5aW5nIG91cnNlbHZlcy4gTGV0IHVzIGhhdmUgYSBsb29rIGF0IHRoZSB3ZWJzaXRlLiANCg0KT2theSwgdGltZSB0byBwbGF5LiBNYWtlIHlvdXJzZWxmIGtub3duIHRvIG9wZW5hbGV4LiANCg0KYGBge3J9DQpvcHRpb25zKG9wZW5hbGV4Ui5tYWlsdG8gPSAiam9jaGVtLnRvbHNtYUBydS5ubCIpICNwbGVhc2UgUGxlYXNlIHJlcGxhY2Ugd2l0aCB5b3VyIG93biBlbWFpbGFkcmVzcw0KYGBgDQoNCkxldCB1cyB0cnkgdG8gZmluZCBtZS4gDQoNCmBgYHtyfQ0KdXJsIDwtICJodHRwczovL2FwaS5vcGVuYWxleC5vcmcvYXV0aG9ycz9zZWFyY2g9Sm9jaGVtIFRvbHNtYSINCg0KI2Jhc2VkIG9uIHdoYXQgeW91IGhhdmUgbGVhcm5lZCBzbyBmYXIsIHlvdSB3b3VsZCBwcm9iYWJseSBmaXJzdCB0cnk6DQpqdCA8LSByZWFkX2h0bWwoImh0dHBzOi8vYXBpLm9wZW5hbGV4Lm9yZy9hdXRob3JzP3NlYXJjaD1Kb2NoZW0rVG9sc21hIikgJT4lIA0KICBodG1sX3RleHQyKCkNCg0Kc3Vic3RyKGp0LCAxLCAxMDApDQoNCmBgYA0KT2theSwgZXZlcnl0aGluZyBpcyBpbiB0aGlzIGBqdGAgb2JqZWN0LCBidXQgbm90IHZlcnkgY29udmVuaWVudGx5LiANCg0KVGhlIG9wZW5hbGV4IHBhZ2UgaXMgYWN0dWFsbHkgYSBqc29uIG9iamVjdCBzbyB3aWxsIHJlYWQgaW4gdGhhdC4gQW5kIG1ha2UgaXQgYSBiaXQgcHJldHRpZXIuIA0KDQpgYGB7cn0NCg0KanRfanNvbiA8LSBmcm9tSlNPTigiaHR0cHM6Ly9hcGkub3BlbmFsZXgub3JnL2F1dGhvcnM/c2VhcmNoPUpvY2hlbStUb2xzbWEiLCBzaW1wbGlmeVZlY3RvciA9IEZBTFNFKQ0KZ2xpbXBzZShqdF9qc29uLCBtYXgubGV2ZWwgPSAxKSANCmp0X2pzb25bWyJyZXN1bHRzIl1dW1sxXV1bWyJkaXNwbGF5X25hbWUiXV0NCg0KZGZfanQgPC0ganRfanNvbiAlPiUgDQogICAgLiRyZXN1bHRzICU+JQ0KICAuW1sxXV0gJT4lDQogIGRpc2NhcmQoaXNfZW1wdHkpIA0KYGBgDQpDYW4geW91IGZpbmQgbXkgYWZmaWxpYXRpb25zPyANCg0KU29tZSBwZW9wbGUgKGkuZS4gdGhlIGRldmVsb3BlcnMgb2YgdGhlIGBvcGVuYWxleFJgIHBhY2thZ2UpIGhhdmUgc3BlbmQgYSBsaXR0bGUgbW9yZSB0aW1lIG9uIGNvbnZlcnRpbmcgdGhpcyBKU09OIG9iamVjdCwgbGV0IHVzIHRha2UgYWR2YW50YWdlIG9mIHRoYXQ6IA0KDQpgYGB7cn0NCmRmIDwtIG9hX2ZldGNoKGVudGl0eSA9ICJhdXRob3IiLCBzZWFyY2ggPSAiSm9jaGVtIFRvbHNtYSIpDQpmc2hvd2RmKGRmKQ0KYGBgDQoNCkJ1dCBwbGVhc2Ugbm90ZSwgdGhhdCBgZGZgIGNvbnRhaW5zICoqbGVzcyoqIGluZm9ybWF0aW9uIHRoYW4gYGRmX2p0YC4gDQoNCk9rYXksIGFuZCBub3cgbXkgcGFwZXJzIGFuZCBjby1hdXRob3JzLiANCmBgYHtyfQ0KZGZfcGFwZXJzIDwtIG9hX2ZldGNoKGVudGl0eSA9ICJ3b3JrcyIsIGF1dGhvci5pZCA9IGRmJGlkKQ0KZGZfcGFwZXJzJGF1dGhvclsxXQ0KYGBgDQoNClRoaXMgd29ya3MgbGlrZSBhIGNoYXJtLiBCdXQgb25jZSBhZ2FpbiBiZSBhd2FyZSB0aGF0IGBvYV9mZXRjaGAgZG9lcyByZW1vdmVzIHNvbWUgaW5mbyBmcm9tIHRoZSBKU09OIG9iamVjdC4gVGh1cywgYXQgdGltZXMsIGl0IGlzIGJlc3QgdG8gbWFuaXB1bGF0ZSB0aGlzIG9iamVjdCB5b3Vyc2VsZi4gDQoNCk5hdHVyYWxseSwgYXQgdGltZXMgeW91IGFsc28gaGF2ZSBtdWx0aXBsZSBoaXRzIG9uIHRoZSBzYW1lIG5hbWUuIFNvIHlvdSBuZWVkIHRvIGJ1aWxkIGluIGNoZWNrcy9maWx0ZXJzIGV0Yy4uIA0KDQoNCiMgR29vZ2xlOiBzY2hvbGFyIGlkDQoNCldoaWxlIG9wZW5hbGV4IGlzIGdyZWF0IGFuZCB0aGUgd2F5IHRvIGdvIGltaG8sIHlvdSBtYXkgd2FudCB0byB1c2UgYWRkaXRpb25hbCBzb3VyY2VzIGZvciB0aGUgc2FtZSBpbmZvLiBMZXQgdXMgZGVtb25zdHJhdGUgZ29vZ2xlIHNjaG9sYXIuDQoNCk9uY2UgYWdhaW4sIHdpdGggdGhlIHdlYnNjcmFwaW5nIHRvb2xzIHlvdSBtYXN0ZXIgYXQgdGhpcyBwb2ludCwgeW91IGFjdHVhbGx5IHdvdWxkIG5vdCBuZWVkIGEgcGFja2FnZS93cmFwcGVyIHN1Y2ggYXMgYHNjaG9sYXJgLiANCg0KWW91IHdpbGwgbGVhcm4gYSBsb3QgYnkgbG9va2luZyBhdCB0aGUgY29kZSBvZiB0aGUgcGFja2FnZSBgc2Nob2xhcmA6IFsoaHR0cHM6Ly9naXRodWIuY29tL1l1TGFiLVNNVS9zY2hvbGFyKV0uIA0KDQojIyBmaXhpbmcgYSAnYnVnJyBpbiB0aGUgZ2V0X3NjaG9sYXJfaWQgZnVuY3Rpb24uIA0KDQpgYGB7cn0NCmdldF9zY2hvbGFyX2lkX2ZpeCA8LSBmdW5jdGlvbiAobGFzdF9uYW1lID0gIiIsIGZpcnN0X25hbWUgPSAiIiwgYWZmaWxpYXRpb24gPSBOQSkNCnsNCiAgaWYgKCFhbnkobnpjaGFyKGMoZmlyc3RfbmFtZSwgbGFzdF9uYW1lKSkpKQ0KICAgIHN0b3AoIkF0IGxlYXN0IG9uZSBvZiBmaXJzdCBhbmQgbGFzdCBuYW1lIG11c3QgYmUgc3BlY2lmaWVkISIpDQogIHNpdGUgPC0gZ2V0T3B0aW9uKCJzY2hvbGFyX3NpdGUiKQ0KICB1cmwgPC0gcGFzdGUwKHNpdGUsICIvY2l0YXRpb25zP3ZpZXdfb3A9c2VhcmNoX2F1dGhvcnMmbWF1dGhvcnM9IiwNCiAgICAgICAgICAgICAgICBmaXJzdF9uYW1lLCAiKyIsIGxhc3RfbmFtZSwgIiZobD1lbiZvaT1hbyIpDQogIHBhZ2UgPC0gZ2V0X3NjaG9sYXJfcmVzcCh1cmwpDQogIGlmIChpcy5udWxsKHBhZ2UpKQ0KICAgIHJldHVybihOQSkNCiAgYWEgPC0gaHR0cjo6Y29udGVudChwYWdlLCBhcyA9ICJ0ZXh0IikNCiAgIyBhZGRlZCBieSBCYXMgSG9mc3RyYTogYnVnZml4IGZvciBJRHMgdGhhdCBoYXZlIGEgZGFzaCAoIi0iKQ0KICBpZHMgPC0gc3Vic3RyaW5nKGFhLCByZWdleHByKCI7dXNlcj0iLCBhYSkpDQogIGlkcyA8LSBzdWJzdHIoaWRzLCAxLCAxOSkgIyBlcnJvciBwcm9uZSwgYnV0IHVuc3VyZSBob3cgdG8gc29sdmUgb3RoZXJ3aXNlDQogICMgaWYgKG5jaGFyKHN0cmluZ3I6OnN0cl9leHRyYWN0X2FsbChzdHJpbmcgPSBhYSwgcGF0dGVybiA9ICI7dXNlcj1bWzphbG51bTpdXStbWzpwdW5jdDpdXSIpW1sxXV1bMV0pIDwgMTgpIHsNCiAgIyAgIGlkcyA8LSBzdHJpbmdyOjpzdHJfZXh0cmFjdF9hbGwoc3RyaW5nID0gYWEsIHBhdHRlcm4gPSAiO3VzZXI9W1s6YWxudW06XV0rW1s6cHVuY3Q6XV0rW1s6YWxudW06XV0rW1s6cHVuY3Q6XV0iKQ0KICAjIH0gZWxzZSB7DQogICMgICBpZHMgPC0gc3RyaW5ncjo6c3RyX2V4dHJhY3RfYWxsKHN0cmluZyA9IGFhLCBwYXR0ZXJuID0gIjt1c2VyPVtbOmFsbnVtOl1dK1tbOnB1bmN0Ol1dIikNCiAgIyB9DQogIGlmIChsZW5ndGgodW5saXN0KGlkcykpID09IDApIHsNCiAgICBtZXNzYWdlKCJObyBTY2hvbGFyIElEIGZvdW5kLiIpDQogICAgcmV0dXJuKE5BKQ0KICB9DQogIGlkcyA8LSBpZHMgJT4lIHVubGlzdCAlPiUgZ3N1YigiO3VzZXI9fFtbOnB1bmN0Ol1dJCIsICIiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLikgJT4lIHVuaXF1ZQ0KICBpZiAobGVuZ3RoKGlkcykgPiAxKSB7DQogICAgcHJvZmlsZXMgPC0gbGFwcGx5KGlkcywgc2Nob2xhcjo6Z2V0X3Byb2ZpbGUpDQogICAgaWYgKGlzLm5hKGFmZmlsaWF0aW9uKSkgew0KICAgICAgeF9wcm9maWxlIDwtIHByb2ZpbGVzW1sxXV0NCiAgICAgIHdhcm5pbmcoIlNlbGVjdGluZyBmaXJzdCBvdXQgb2YgIiwgbGVuZ3RoKHByb2ZpbGVzKSwNCiAgICAgICAgICAgICAgIiBjYW5kaWRhdGUgbWF0Y2hlcy4iKQ0KICAgIH0NCiAgICBlbHNlIHsNCiAgICAgIHdoaWNoX3Byb2ZpbGUgPC0gc2FwcGx5KHByb2ZpbGVzLCBmdW5jdGlvbih4KSB7DQogICAgICAgIHN0cmluZ3I6OnN0cl9jb3VudChzdHJpbmcgPSB4JGFmZmlsaWF0aW9uLCBwYXR0ZXJuID0gc3RyaW5ncjo6Y29sbChhZmZpbGlhdGlvbiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZV9jYXNlID0gVFJVRSkpDQogICAgICB9KQ0KICAgICAgaWYgKGFsbCh3aGljaF9wcm9maWxlID09IDApKSB7DQogICAgICAgIHdhcm5pbmcoIk5vIHJlc2VhcmNoZXIgZm91bmQgYXQgdGhlIGluZGljYXRlZCBhZmZpbGlhdGlvbi4iKQ0KICAgICAgICByZXR1cm4oTkEpDQogICAgICB9DQogICAgICBlbHNlIHsNCiAgICAgICAgeF9wcm9maWxlIDwtIHByb2ZpbGVzW1t3aGljaCh3aGljaF9wcm9maWxlICE9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKV1dDQogICAgICB9DQogICAgfQ0KICB9DQogIGVsc2Ugew0KICAgIHhfcHJvZmlsZSA8LSBzY2hvbGFyOjpnZXRfcHJvZmlsZShpZCA9IGlkcykNCiAgfQ0KICByZXR1cm4oeF9wcm9maWxlJGlkKQ0KfQ0KYGBgDQoNCiMjIG9uZSBwcm9maWxlDQoNCldoYXQgd2Ugbm93IGhhdmUgaXMgYSBkYXRhIGZyYW1lIG9mIHN0YWZmIG1lbWJlcnMgZnJvbSBzZXZlcmFsIHVuaXZlcnNpdGllcy4gU28gd2Ugc3VjY2Vzc2Z1bGx5IGdhdGhlcmVkIHRoZSBhbmNob3IgZGF0YSBzZXQgd2UgY2FuIG1vdmUgb24gd2l0aC4gTmV4dCwgd2UgbmVlZCB0byBmaW5kIG91dCB3aGV0aGVyIHRoZXNlIHN0YWZmIGhhdmUgYSBHb29nbGUgU2Nob2xhciBwcm9maWxlLiBJIGltYWdpbmUgeW91IGhhdmUgYWNjZXNzZWQgW0dvb2dsZSBTY2hvbGFyXSh3d3cuc2Nob2xhci5nb29nbGUuY29tKSBtYW55IHRpbWVzIGR1cmluZyB5b3VyIHN0dWRpZXMgZm9yIGZpbmRpbmcgc2NpZW50aXN0cyBvciBwdWJsaWNhdGlvbnMuIFRoZSBuaWNlIHRoaW5nIGFib3V0IEdvb2dsZSBTY2hvbGFyIGlzIHRoYXQgaXQgbGlzdHMgY29sbGFib3JhdG9ycywgcHVibGljYXRpb25zLCBhbmQgY2l0YXRpb25zIG9uIHByb2ZpbGVzLiBTbyB3aGF0IHdlIGZpcnN0IG5lZWQgdG8gZG8gaXMgbG9vayBmb3IgR29vZ2xlIFNjaG9sYXIgcHJvZmlsZXMgYW1vbmcgc3RhZmYuIEx1Y2tpbHksIHdlIGNsZWFuZWQgZmlyc3QgYW5kIGxhc3QgbmFtZXMgYW5kIGhhdmUgdGhlaXIgYWZmaWxpYXRpb24uDQoNClNvIGxldCdzIG1vdmUgb24gd2l0aCBhdHRlbXB0aW5nIHRvIGZpbmQgR29vZ2xlIFNjaG9sYXIgcHJvZmlsZXMuIFRoZSBwYWNrYWdlIGBzY2hvbGFyYCBoYXMgYSB2ZXJ5IG5pY2UgZnVuY3Rpb24gYGdldF9zY2hvbGFyX2lkYC4gSXQgbmVlZHMgYSBsYXN0IG5hbWUsIGZpcnN0IG5hbWUsIGFuZCBhZmZpbGlhdGlvbi4gTHVja2lseSwgd2UgYWxyZWFkeSBmb3VuZCB0aG9zZSB1bml2ZXJzaXR5IHdlYnNpdGVzISBTbyB3ZSBjYW4gZmlsbCBpbiB0aG9zZS4gTGV0J3MgdHJ5IGl0IGZvciBKb2NoZW0gZmlyc3QuIE5vdGUgdGhhdCB3ZSBuZWVkIGZ1bmN0aW9uIGBnZXRfc2Nob2xhcl9pZF9maXhgIGJlZm9yZSB3ZSBjYW4gc3RhcnQgKHNlZSBjb2RlIGNodW5rIGFib3ZlKS4NCg0KYGBge3J9DQpnZXRfc2Nob2xhcl9pZF9maXgobGFzdF9uYW1lPSJ0b2xzbWEiLCBmaXJzdF9uYW1lPSJqb2NoZW0iLCBhZmZpbGlhdGlvbj0icmFkYm91ZCB1bml2ZXJzaXR5IikNCmBgYA0KV2Ugbm93IGtub3cgdGhhdCBKb2NoZW0ncyBTY2hvbGFyIElEIGlzICJJdTIzLTkwQUFBQUoiLiBUaGF0J3MgdmVyeSBjb252ZW5pZW50LCBiZWNhdXNlIG5vdyB3ZSBjYW4gdXNlIHRoZSBwYWNrYWdlIGBzY2hvbGFyYCB0byBleHRyYWN0IGEgcmFuZ2Ugb2YgdXNlZnVsIGluZm9ybWF0aW9uIGZyb20gaGlzIEdvb2dsZSBTY2hvbGFyIHByb2ZpbGUuIExldCdzIHRyeSBpdCBvdXQgb24gaGlzIHByb2ZpbGUgZmlyc3QuIE5vdGljZSB0aGUgbmljZSBmdW5jdGlvbiBgZ2V0X3Byb2ZpbGVzYC4gV2Ugc2ltcGx5IGhhdmUgdG8gaW5wdXQgaGlzIEdvb2dsZSBTY2hvbGFyIElEIGFuZCBpdCBzaG93cyBldmVyeXRoaW5nIG9uIHRoZSBwcm9maWxlDQoNCmBgYHtyfQ0KZ2V0X3Byb2ZpbGUoIkl1MjMtOTBBQUFBSiIpICMgSm9jaGVtJ3MgcHJvZmlsZQ0KYGBgDQoNClNvIGxldCdzIGdhdGhlciB0aGVzZSBkYXRhLCBidXQgbm93IGZvciAqYWxsKiBzdGFmZiBzaW11bHRhbmVvdXNseSEgRm9yIHRoaXMsIHdlIHVzZSB0aGUgZm9yIGxvb3AgYWdhaW4uIFRoZSBmb3IgbG9vcCBJIG1ha2UgYmVsb3cgaXMgYSBiaXQgbW9yZSBjb21wbGljYXRlZCwgYnV0IGZvbGxvd3MgdGhlIHNhbWUgbG9naWMgYXMgYmVmb3JlLiBGb3IgZWFjaCByb3cgKGkpIGluIG91ciBkYXRhc2V0LCB3ZSBhdHRlbXB0IHRvIHF1ZXJ5IEdvb2dsZSBTY2hvbGFyIG9uIHRoZSBiYXNpcyBvZiB0aGUgZmlyc3QgbmFtZSwgbGFzdCBuYW1lLCBhbmQgYWZmaWxpYXRpb24gbGlzdGVkIGluIHRoYXQgcm93IGluIHRoZSBkYXRhIGZyYW1lLiBXZSB1c2Ugc29tZSBoYW5keSBzdWJzZXR0aW5nLCBlLmcuLCBgc3RhZmZbaSwgYygibGFzdF9uYW1lIildYCBtZWFucyB3ZSBpbnB1dCBgbGFzdF9uYW1lPWAgd2l0aCB0aGUgbGFzdCBuYW1lICh3aGljaCBpcyB0aGUgdGhpcmQgY29sdW1uKSBmb3VuZCBpbiB0aGUgaS10aCByb3cgaW4gdGhlIGRhdGEgZnJhbWUuIFRoZSBzYW1lIGdvZXMgZm9yIGZpcnN0IG5hbWUgYW5kIGFmZmlsaWF0aW9uLiBXZSBmaWxsIHVwIGBnc19pZGAgaW4gdGhlIGRhdGEgZnJhbWUgd2l0aCB0aGUgR29vZ2xlIFNjaG9sYXIgSURzIHdlJ2xsIGhvcGVmdWxseSBmaW5kLiBUaGUgYGZvciAoaSBpbiBucm93KGxwb2xfc3RhZmYpKWAgc2ltcGx5IG1lYW5zIHdlIGxldCBpIHJ1biBmb3IgaG93ZXZlciBtYW55IHJvd3MgdGhlIGRhdGEgZnJhbWUgaGFzLiBGaW5hbGx5LCB0aGUgYHRyeUNhdGNoKHt9KWAgZnVuY3Rpb24gbWFrZXMgdGhhdCB3ZSBjYW4gY29udGludWUgdGhlIGxvb3AgZXZlbiB0aG91Z2ggd2UgbWF5IGVuY291bnRlciBlcnJvcnMgZm9yIGEgZ2l2ZW4gcm93LiBIZXJlLCB0aGF0IHByb2JhYmx5IG1lYW5zIHRoYXQgbm90IGV2ZXJ5IHJvdyAoaS5lLiwgc29jaW9sb2d5IHN0YWZmIG1lbWJlcikgY2FuIGJlIGZvdW5kIG9uIEdvb2dsZSBTY2hvbGFyLiBXZSBwcmludCB0aGUgZXJyb3IsIGJ1dCBjb250aW51ZSB0aGUgZm9yIGxvb3Agd2l0aCB0aGUgYHRyeUNhdGNoKHt9KWAgZnVuY3Rpb24uIE5vdGUgYWxzbyBob3cgd2Ugc29tZXRpbWVzIGdldCByYXRlIGxpbWl0ZWQgYnkgR29vZ2xlIFNjaG9sYXI6IGl0IGlzIHNvbWV3aGF0IGFtYmlndW91cyBob3cgb2Z0ZW4gd2UgbmVlZCB0byByZXRyeSwgb3Igd2hlbiB3ZSBnZXQgYmxvY2tlZC4gV2Ugc2V0IGEgc3lzdGVtIHNsZWVwIHRvIHRyeSBhbmQgY2lyY3VtdmVudCB0aGF0IHNvbWV3aGF0Lg0KDQojIyBhIHNpbXBsZSBsb29wDQoNCmBgYHtyLCBldmFsPUZBTFNFfQ0KZGYkZ3NfaWQgPC0gIiIgI2xldCB1cyBjcmVhdGUgYW4gZW1wdHkgdmFyaWFibGUNCg0KZm9yIChpIGluIDE6bnJvdyhkZikpIHsNCiAgcHJpbnQoaSkgI3RvIGtlZXAgdHJhY2sgd2hlcmUgd2UgYXJlDQogIHRpbWUgPC0gcnVuaWYoMSwgMCwgMSkgI2hvcGVmdWxseSB0byBhdm9pZCBmYXN0IHJhdGUgbGltaXRzDQogIFN5cy5zbGVlcCh0aW1lKQ0KICANCiAgdHJ5Q2F0Y2goew0KICAgICBkZltpLGMoImdzX2lkIildIDwtIGdldF9zY2hvbGFyX2lkX2ZpeChsYXN0X25hbWUgPSBkZltpLCBjKCJsYXN0bmFtZSIpXSwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdF9uYW1lID0gZGZbaSwgYygiZmlyc3RuYW1lIildLCAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZmZpbGlhdGlvbiA9IGRmW2ksYygiYWZmaWwxIildKSAjbGV0IHVzIGZpcnN0IHRyeSB3aXRoIGFmZmlsMSANCg0KICAgIH0sIGVycm9yPWZ1bmN0aW9uKGUpe2NhdCgiRVJST1IgOiIsIGNvbmRpdGlvbk1lc3NhZ2UoZSksICJcbiIpfSkgIyBjb250aW51ZSBvbiBlcnJvciwgYnV0IHByaW50IHRoZSBlcnJvcg0KfQ0KDQojIGxldCB1cyB0cnkgdGhlIGRpZmZlcmVudCBhZmZpbGlhdGlvbg0KZm9yIChpIGluIDE6bnJvdyhkZikpIHsNCiAgaWYgKGRmJGdzX2lkID09ICIiKSB7DQogICAgcHJpbnQoaSkgI3RvIGtlZXAgdHJhY2sgd2hlcmUgd2UgYXJlDQogICAgdGltZSA8LSBydW5pZigxLCAwLCAxKSAjaG9wZWZ1bGx5IHRvIGF2b2lkIGZhc3QgcmF0ZSBsaW1pdHMNCiAgICBTeXMuc2xlZXAodGltZSkNCiAgICANCiAgICB0cnlDYXRjaCh7DQogICAgICBkZltpLGMoImdzX2lkIildIDwtIGdldF9zY2hvbGFyX2lkX2ZpeChsYXN0X25hbWUgPSBkZltpLCBjKCJsYXN0bmFtZSIpXSwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdF9uYW1lID0gZGZbaSwgYygiZmlyc3RuYW1lIildLCAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZmZpbGlhdGlvbiA9IGRmW2ksYygiYWZmaWwyIildKSAjbGV0IHVzIGZpcnN0IHdpdGggYWZmaWwyIA0KICAgICAgDQogICAgfSwgZXJyb3I9ZnVuY3Rpb24oZSl7Y2F0KCJFUlJPUiA6IiwgY29uZGl0aW9uTWVzc2FnZShlKSwgIlxuIil9KSAjIGNvbnRpbnVlIG9uIGVycm9yLCBidXQgcHJpbnQgdGhlIGVycm9yDQogIH0NCn0NCmBgYA0KDQpJZiBldmVyeXRoaW5nIHdvcmtlZCBvdXQgY29ycmVjdGx5LCB5b3UgY291bGQgc2F2ZSB0aGUgbmV3IGRhdGFzZXQuIA0KDQpgYGB7ciwgZXZhbD1GQUxTRX0NCmRmX2dzaWQgPC0gZGYNCmZzYXZlKGRmX2dzaWQpDQpgYGANCg0KDQojIEdvb2dsZTogcHVibGljYXRpb25zIGFuZCBwcm9maWxlcw0KDQpQZXJoYXBzIHlvdSBjb3VsZCBzdHVjayBhbG9uZyB0aGUgd2F5LiBUaGlzIGlzIHZlcnkgbGlrZWx5LCBiZWNhdXNlIG9mIGFubm95aW5nIHJhdGUgbGltaXRzLiANCldlIHRodXMgcHJlcGFyZWQgdGhlIGZpbGUgZm9yIHlvdS4gDQoNCmBgYHtyIHQxLCBlY2hvPUZBTFNFLCBldmFsPUZBTFNFfQ0KbG9hZCgiLi9kYXRhL3Byb2Nlc3NlZC9kZl9nZW5kZXIucmRhIikNCmRmX2dlbmRlcl9qdCA8LSBkZl9nZW5kZXIgJT4lIA0KICBtdXRhdGUoZ3NfaWQ9c2Nob2xhcl9pZCkgJT4lDQogIHNlbGVjdCgiaWQiLCAidW5pIiwgImRpc2NpcGxpbmUiLCAieWVhciIsICJuYW1lIiwgImFmZmlsMSIsICJhZmZpbDIiLCAicG9zaXRpb24iLCAibnAiLCAibGFzdG5hbWUiLCAiZmlyc3RuYW1lIiwgImluaSIsImdlbmRlciIsICJnc19pZCIpDQpkZl9nZW5kZXJfanQkYWZmaWwyW2RmX2dlbmRlcl9qdCRhZmZpbDI9PSJHIl0gPC0gIlJVRyINCmRmX2dlbmRlcl9qdCRhZmZpbDJbZGZfZ2VuZGVyX2p0JGFmZmlsMj09IlRpbGJ1cmciXSA8LSAiVXZUIg0KZGZfZ2VuZGVyX2p0JGFmZmlsMltkZl9nZW5kZXJfanQkYWZmaWwxPT0iVW5pdmVyc2l0ZWl0IEdlbnQiXSA8LSAiVXZBIg0KZGZfZ2VuZGVyX2p0JGFmZmlsMltkZl9nZW5kZXJfanQkYWZmaWwxPT0iS29jIFVuaXZlcnNpdHkuVXZBIl0gPC0gIlV2QSINCmRmX2dlbmRlcl9qdCRhZmZpbDFbZGZfZ2VuZGVyX2p0JGFmZmlsMT09IktvYyBVbml2ZXJzaXR5LlV2QSJdIDwtICJLb2MgVW5pdmVyc2l0eSINCg0KZGYkZ3NfaWRbZGYkZ3NfaWQ9PSJQSmNabFlBQUFBSiJdIDwtICItUEpjWmxZQUFBQUoiDQpkZiRnc19pZFtkZiRnc19pZD09ImFieHhtVUFBQUFKIl0gPC0gIi1hYnh4bVVBQUFBSiINCmRmJGdzX2lkW2RmJGdzX2lkPT0iYld0cVB3QUFBQUoiXSA8LSAibGJXdHFQd0FBQUFKIg0KZGYkZ3NfaWRbZGYkZ3NfaWQ9PSJycmgwVjdJQUFBQUoiXSA8LSAieTRYQmF3TUFBQUFKIg0KZGYkZ3NfaWRbZGYkZ3NfaWQ9PSJzQ3oxdnJNQUFBQUoiXSA8LSBOQQ0KDQpkZl9nc2lkX2p0IDwtIGRmX2dlbmRlcl9qdA0KZnNhdmUoZGZfZ3NpZF9qdCkNCmBgYA0KDQoNClBsZWFzZSB1c2UgdGhpcyBvbmU6ICANCg0KYHIgeGZ1bjo6ZW1iZWRfZmlsZSgiLi9kYXRhL3Byb2Nlc3NlZC8yMDIzMDYyMWRmX2dzaWRfanQucmRhIilgLiANCg0KU2F2ZSBmaWxlIGluIGNvcnJlY3QgZGlyZWN0b3J5OiAnLi9kYXRhL3Byb2Nlc3NlZCcuIA0KDQoNCg0KYGBge3J9DQpkZiA8LSBmbG9hZCgiLi9kYXRhL3Byb2Nlc3NlZC8yMDIzMDYyMWRmX2dzaWRfanQucmRhIikgI2xvYWQgZGF0YXNldCAoYWRhcHQgbmFtZSBpZiBuZWNlc3NhcnkpDQoNCiNoYXZlIGEgcXVpY2sgbG9vaw0KZnNob3dkZihkZikNCmBgYA0KDQoNCjwhLS10aGlzIGlzIFNUQVJUIG9mIG15IHNjcmFwZSBmb3IgcmVhbC0tLT4NCg0KYGBge3IsIGVjaG89RkFMU0UsIGV2YWw9RkFMU0V9DQpkZiA8LSByZWFkeGw6OnJlYWRfeGxzKCIuL2RhdGEvaWRzLnhscyIsIGNvbF9uYW1lcyA9IGMoImdzX2lkIikpDQpnZXR3ZCgpDQojbWFudWFsIGZpeA0KZGYkZ3NfaWRbMTM1XSA8LSAiLVBKY1psWUFBQUFKIg0KZGYkZ3NfaWRbMjM1XSA8LSAiLWFieHhtVUFBQUFKIg0KZGYkZ3NfaWRbMjQ5XSA8LSAibGJXdHFQd0FBQUFKIg0KZGYkZ3NfaWRbMzg4XSA8LSAieTRYQmF3TUFBQUFKIg0KZGYkZ3NfaWRbMzk1XSA8LSBOQQ0KYGBgDQoNCmBgYHtyLCBlY2hvPUZBTFNFLCBldmFsPUZBTFNFfQ0Kc2F2ZShkZl9saXN0X3Byb2ZpbGVzLCBmaWxlPSIuL2RhdGEvZGZfbGlzdF9wcm9maWxlc190ZW1wLnJkYSIpDQpzYXZlKGRmX2xpc3RfcHVibGljYXRpb25zLCBmaWxlPSIuL2RhdGEvZGZfbGlzdF9wdWJsaWNhdGlvbnNfdGVtcC5yZGEiKQ0KYGBgDQoNCg0KYGBge3IsIGVjaG89RkFMU0UsIGV2YWw9RkFMU0V9DQpkZl9saXN0X3Byb2ZpbGVzIDwtIGxpc3QoKSAgIyBmaXJzdCB3ZSBjcmVhdGUgYW4gZW1wdHkgbGlzdCB0aGF0IHdlIHRoZW4gZmlsbCB1cCB3aXRoIHRoZSBmb3IgbG9vcA0KZGZfbGlzdF9wdWJsaWNhdGlvbnMgPC0gbGlzdCgpDQpgYGANCg0KYGBge3IsIGVjaG89RkFMU0UsIGV2YWw9RkFMU0V9DQp0aW1lIDwtIC4xICMgSSBwbGFjZWQgdGhlIHdhaXRpbmcgdGltZSBvdXRzaWRlIHRoZSBsb29wDQppIDwtIGkgIyBPdXIgbG9vcCBpdGVyYXRvciBpcyBub3cgYSB2YXJpYWJsZS4gVGhpcyBtZWFucyBJIGNhbiBjaGFuZ2UgaXQgd2l0aGluIGEgd2hpbGUgbG9vcC4gVXNpbmcgYSBmb3IgbG9vcCB5b3UgY2FudCBjaGFuZ2UgeW91ciBpdGVyYXRvciBpbiB0aGUgbG9vcCBpdHNlbGYuDQpgYGANCg0KYGBge3IsIGVjaG89RkFMU0UsIGV2YWw9RkFMU0V9DQp3aGlsZSAoaSA8PSBucm93KGRmKSkgew0KICAgIHByaW50KGkpDQogICAgU3lzLnNsZWVwKHRpbWUpDQoNCiAgICB0cnlDYXRjaCh7DQogICAgZGZfbGlzdF9wcm9maWxlc1tbaV1dIDwtIGdldF9wcm9maWxlKGRmW2ksIGMoImdzX2lkIildKSANCiAgICBkZl9saXN0X3B1YmxpY2F0aW9uc1tbaV1dIDwtIGdldF9wdWJsaWNhdGlvbnMoZGZbaSwgYygiZ3NfaWQiKV0pDQogICAgZGZfbGlzdF9wdWJsaWNhdGlvbnNbW2ldXVssIGMoImdzX2lkIildIDwtIGRmW2ksIGMoImdzX2lkIildICANCiAgICBpIDwtIGkgKyAxIA0KICAgIHRpbWUgPC0gLjENCiAgICB9LA0KICAgIA0KICAgICAgd2FybmluZyA9IGZ1bmN0aW9uKHcpIHsNCiAgICAgICAgY2F0KCJXQVJOSU5HOiIsIGNvbmRpdGlvbk1lc3NhZ2UodyksICJcbiIpIA0KICAgICAgICBpIDw8LSBpICsgMQ0KICAgICAgICB9LCANCiAgICANCiAgICAgIGVycm9yID1mdW5jdGlvbihlKSB7DQogICAgICAgIHRpbWUgPDwtIG1pbih0aW1lICsgMTAwLCAzNjAwKjIpDQogICAgICAgIGNhdCgiRXJyb3I6IiwgY29uZGl0aW9uTWVzc2FnZShlKSwgIlxuIikgDQogICAgICAgIGNhdCgic2xlZXAgdGltZToiLCB0aW1lLCAgIlxuIikNCiAgICAgICAgY2F0KCJpayB6aXQgaW4gbG9vcCIsIGkpDQogICAgICB9KQ0KfQ0KYGBgDQoNCg0KDQpgYGB7ciwgZWNobz1GQUxTRSwgZXZhbD1GQUxTRX0NCg0KbG9hZCgiLi9kYXRhL3Byb2Nlc3NlZC9kZl9saXN0X3Byb2ZpbGVzX3RlbXAucmRhIikNCmxvYWQoIi4vZGF0YS9wcm9jZXNzZWQvZGZfbGlzdF9wdWJsaWNhdGlvbnNfdGVtcC5yZGEiKQ0KDQpsaXN0X3Byb2ZpbGVzX2p0IDwtIGRmX2xpc3RfcHJvZmlsZXMNCmxpc3RfcHVibGljYXRpb25zX2p0IDwtIGRmX2xpc3RfcHVibGljYXRpb25zDQoNCmZzYXZlKGxpc3RfcHJvZmlsZXNfanQpDQpmc2F2ZShsaXN0X3B1YmxpY2F0aW9uc19qdCkNCg0Kc2F2ZShuYW1lc19kZl9wdWJsaWNhdGlvbnMsIGZpbGU9Ii4vZGF0YS9uYW1lc19kZl9wdWJsaWNhdGlvbnNfdjIwMjIxMDA2LlJEYXRhIikNCnNhdmUobmFtZXNfbGlzdF9wcm9maWxlcywgZmlsZT0gIi4vZGF0YS9uYW1lc19saXN0X3Byb2ZpbGVzX3YyMDIyMTAwNi5SRGF0YSIpDQpgYGANCg0KPCEtLXRoaXMgaXMgU1RPUCBvZiBteSBzY3JhcGUgZm9yIHJlYWwtLS0+DQoNCg0KUGxlYXNlIG5vdGUsIHRoYXQgcXVpdGUgc29tZSBHb29nbGUgcHJvZmlsZXMgYXJlIG1pc3NpbmcuIEEgcXVpY2sgbG9vayBzaG93cyBtZSB0aGlzIGlzIG1vc3RseSBhbW9uZyB0aGUgKnBvc2l0aW9uKiBjYXRlZ29yeSAnUGhkcycgYW5kICdvdGhlcicuIFRodXMgcHJvYmFibHkgYmVjYXVzZSB0aGVzZSBzY2hvbGFycyBkbyBub3QgaGF2ZSBhbnkgcHVibGljYXRpb25zIHlldC4gVGhpcyBpcyBob3dldmVyIG5vdCBhbHdheXMgdGhlIGNhc2UuIEV2ZW4gc29tZSBmdWxsIHByb2ZzIGRvIG5vdCBoYXZlIGEgR29vZ2xlIHNjaG9sYXIgcHJvZmlsZS4gVGhlIGlkZWEgd291bGQgYmUgdGhhdCBldmVuIGlmIHRoZXkgdGhlbXNlbHZlcyBkbyBub3QgaGF2ZSBhIHByb2ZpbGUsIHdlIGNhbiBzdGlsbCBmaW5kIHRoZWlyIHB1YmxpY2F0aW9ucyB3aXRoIGRlcGFydG1lbnQgKG9yIGRpc2NpcGxpbmUpIG1lbWJlcnMgYmVjYXVzZSB3ZSB3aWxsIGZpbmQgdGhlIHNhbWUgcHVibGljYXRpb25zIHZpYSBkaWZmZXJlbnQgYXV0aG9ycy4gIA0KDQpMYXRlciwgd2UgbmVlZCB0byBkZWNpZGUgd2hldGhlciBvciBub3Qgd2Ugc2V0IHRoZSBudW1iZXIgb2YgcHVibGljYXRpb25zIGZvciBzb21lIHNjaG9sYXJzIHRvIGAwYCBvciB0byBgTkFgLiANCg0KIyMgb2JqZWN0cyB0byBzYXZlIHNjcmFwDQoNCldlIGFyZSBnb2luZyB0byBzY3JhcGUgdGhlIHByb2ZpbGVzIGZvciBlYWNoIHNjaG9sYXIgYW5kIGFsbCBwdWJsaWNhdGlvbnMgZm9yIGVhY2ggc2Nob2xhci4gDQoNCkxldCB1cyBzYXZlIGFsbCBpbmZvcm1hdGlvbiBpbiBsaXN0IG9iamVjdHMuIA0KDQpgYGB7ciB0MiwgdGVzdH0NCmxpc3RfcHJvZmlsZXMgPC0gbGlzdCgpICAjIGZpcnN0IHdlIGNyZWF0ZSBhbiBlbXB0eSBsaXN0IHRoYXQgd2UgdGhlbiBmaWxsIHVwIHdpdGggdGhlIGZvciBsb29wDQpsaXN0X3B1YmxpY2F0aW9ucyA8LSBsaXN0KCkNCmBgYA0KDQpXZSB3aWxsIHVzZSB0aGUgYGdzX2lkYCB2YXJpYWJsZSBhcyBhIGtleSB0byBtYXRjaCBhbGwgc3R1ZmYgbGF0ZXIuIA0KDQpgYGB7cn0NCmdzX2lkIDwtIHVuaXF1ZShkZiRnc19pZClbdW5pcXVlKGRmJGdzX2lkKSE9IiJdICNhIGNsdW1zeSB3YXkgdG8gcmVtb3ZlIHRoZSBlbXB0eSBnc19pZCB2YWx1ZXMuIA0KYGBgDQoNCm5vdyB0aGUgYWN0dWFsIHNjcmFwaW5nIHBhcnQNCg0KYGBge3J9DQp0aW1lIDwtIC4xICMgSSBwbGFjZWQgdGhlIHdhaXRpbmcgdGltZSBvdXRzaWRlIHRoZSBsb29wDQppIDwtIDEgIyBPdXIgbG9vcCBpdGVyYXRvciBpcyBub3cgYSB2YXJpYWJsZS4gVGhpcyBtZWFucyBJIGNhbiBjaGFuZ2UgaXQgd2l0aGluIGEgd2hpbGUgbG9vcC4gVXNpbmcgYSBmb3IgbG9vcCB5b3UgY2FudCBjaGFuZ2UgeW91ciBpdGVyYXRvciBpbiB0aGUgbG9vcCBpdHNlbGYuDQpgYGANCg0KDQpgYGB7ciwgZWNobz1UUlVFLCBldmFsPUZBTFNFfQ0Kd2hpbGUgKGkgPD0gbGVuZ3RoKGdzX2lkKSkgew0KICAgIHByaW50KGkpDQogICAgU3lzLnNsZWVwKHRpbWUpDQoNCiAgICB0cnlDYXRjaCh7DQogICAgbGlzdF9wcm9maWxlc1tbaV1dIDwtIGdldF9wcm9maWxlKGdzX2lkW2ldKSAjdGhlIHNjaG9sYXIgaWQgaXMgc2F2ZSBhdXRvbWF0aWNhbGx5IA0KICAgIGxpc3RfcHVibGljYXRpb25zW1tpXV0gPC0gZ2V0X3B1YmxpY2F0aW9ucyhnc19pZFtpXSkNCiAgICBsaXN0X3B1YmxpY2F0aW9uc1tbaV1dWywgYygiZ3NfaWQiKV0gPC0gZ3NfaWRbaV0gI21ha2Ugc3VyZSB0byBhZGQgdGhlIGlkIG1hbnVhbGx5IGZvciBtYXRjaGluZyBwdXJwb3NlcyBsYXRlciANCiAgICBpIDwtIGkgKyAxIA0KICAgIHRpbWUgPC0gLjEgI3NldCB0aW1lIGJhY2sgdG8gbG93IHZhbHVlIG9mIHdlIGdldCBhbiBhbnN3ZXIgZnJvbSBnb29nbGUNCiAgICB9LA0KICAgIA0KICAgICAgd2FybmluZyA9IGZ1bmN0aW9uKHcpIHsNCiAgICAgICAgY2F0KCJXQVJOSU5HOiIsIGNvbmRpdGlvbk1lc3NhZ2UodyksICJcbiIpIA0KICAgICAgICBpIDw8LSBpICsgMSAjcGxlYXNlIG5vdGUgdGhlIGRvdWJsZSBhcnJvdyBoZWFkLCBzbyB3ZSBjYW4gYXNzaWduIHZhbHVlcyB0byBhIGdsb2JhbCB2YXJpYWJsZS4gV2Ugd2FudCB0byBjb250aW51ZSBpZiB3ZSBnZXQgYSB3YXJuaW5nDQogICAgICAgIH0sIA0KICAgIA0KICAgICAgZXJyb3IgPWZ1bmN0aW9uKGUpIHsNCiAgICAgICAgdGltZSA8PC0gbWluKHRpbWUgKyAxMDAsIDM2MDAqMikgI3Byb2JhYmx5IHJlYWNoZWQgYSByYXRlIGxpbWl0LCBpbmNyZWFzZSB3YWl0aW5nIHdpdGggbWF4aW11bSBvZiAyaG91cnMNCiAgICAgICAgY2F0KCJFcnJvcjoiLCBjb25kaXRpb25NZXNzYWdlKGUpLCAiXG4iKSANCiAgICAgICAgY2F0KCJzbGVlcCB0aW1lOiIsIHRpbWUsICAiXG4iKQ0KICAgICAgICBjYXQoIkkgYW0gY3VycmVudGx5IGluIGxvb3AgbnVtYmVyOiIsIGkpDQogICAgICAgICNnb29nbGUgdGhyb3dzIGFsbCBraW5kIG9mIGVycm9yIG1lc3NhZ2VzLCB3ZSBhcmUgbm90IGNhdGNoaW5nIGFsbA0KICAgICAgfSkNCn0NCmBgYA0KDQoNCiMjIHNhdmUgeW91ciBvYmplY3RzDQoNCmBgYHtyLCBlY2hvPVRSVUUsIGV2YWw9RkFMU0V9DQpmc2F2ZShsaXN0X3Byb2ZpbGVzKQ0KZnNhdmUobGlzdF9wdWJsaWNhdGlvbnMpDQpgYGANCg0KDQojIyBwdXQgdGhlIGluZm8gb2YgdGhlIHByb2ZpbGVzIGluIG91ciBkYXRhIHNldCBvZiBzdGFmZiBtZW1iZXJzIGNzX2RmDQoNCkJlY2F1c2Ugb2YgcmF0ZSBsaW1pdHMgeW91IHdlcmUgcHJvYmFibHkgbm90IGFibGUgdG8gY29tcGxldGUgdGhlIHRvdGFsIHNjcmFwZSB5b3Vyc2VsZi4gUGxlYXNlIGRvd25sb2FkIHRoZSBmaWxlczogDQoNCg0KZWdvZGF0YTogYHIgeGZ1bjo6ZW1iZWRfZmlsZSgiLi9kYXRhL3Byb2Nlc3NlZC8yMDIzMDYyMWRmX2dzaWRfanQucmRhIilgLiANCg0KUHJvZmlsZXM6ICBgciB4ZnVuOjplbWJlZF9maWxlKCIuL2RhdGEvcHJvY2Vzc2VkLzIwMjMwNjIxbGlzdF9wcm9maWxlc19qdC5yZGEiKWANCg0KUHVibGljYXRpb25zOiAgYHIgeGZ1bjo6ZW1iZWRfZmlsZSgiLi9kYXRhL3Byb2Nlc3NlZC8yMDIzMDYyMWxpc3RfcHVibGljYXRpb25zX2p0LnJkYSIpYA0KDQpTYXZlIGZpbGVzIGluIGNvcnJlY3QgZGlyZWN0b3J5OiAnLi9kYXRhL3Byb2Nlc3NlZCcuIA0KDQojIyMgbG9hZCBmaWxlcw0KDQpgYGB7cn0NCmxvYWQoIi4vZGF0YS9wcm9jZXNzZWQvMjAyMzA2MjFkZl9nc2lkX2p0LnJkYSIpICNsb2FkIGRhdGFzZXQgKGFkYXB0IG5hbWUgaWYgbmVjZXNzYXJ5KQ0KZGYgPC0geCAjZ2l2ZSBhIHNob3J0IG5hbWUNCg0KbG9hZCgiLi9kYXRhL3Byb2Nlc3NlZC8yMDIzMDYyMWxpc3RfcHJvZmlsZXNfanQucmRhIikgI2xvYWQgZGF0YXNldCAoYWRhcHQgbmFtZSBpZiBuZWNlc3NhcnkpDQpwcm9maWxlcyA8LSB4ICNnaXZlIGEgc2hvcnQgbmFtZQ0KDQpsb2FkKCIuL2RhdGEvcHJvY2Vzc2VkLzIwMjMwNjIxbGlzdF9wdWJsaWNhdGlvbnNfanQucmRhIikgI2xvYWQgZGF0YXNldCAoYWRhcHQgbmFtZSBpZiBuZWNlc3NhcnkpDQpwdWJsaWNhdGlvbnMgPC0geCAjZ2l2ZSBhIHNob3J0IG5hbWUNCg0Kcm0oeCkgICNyZW1vdmUgdGhlIG9yaWdpbmFsIG9iamVjdA0KDQpgYGANCg0KIyMjIGF0dGFjaCBzb21lIHByb2ZpbGUgZGF0YSB0byBvdXIgZWdvZGF0YQ0KDQpgYGB7cn0NCiNyZW1vdmUgdGhlIGVtcHR5IGxpc3RzIGZpcnN0DQojICBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yNjUzOTQ0MS9yZW1vdmUtbnVsbC1lbGVtZW50cy1mcm9tLWxpc3Qtb2YtbGlzdHMNCiMjIEEgaGVscGVyIGZ1bmN0aW9uIHRoYXQgdGVzdHMgd2hldGhlciBhbiBvYmplY3QgaXMgZWl0aGVyIE5VTEwgX29yXyANCiMjIGEgbGlzdCBvZiBOVUxMcw0KaXMuTnVsbE9iIDwtIGZ1bmN0aW9uKHgpIGlzLm51bGwoeCkgfCBhbGwoc2FwcGx5KHgsIGlzLm51bGwpKQ0KDQojIyBSZWN1cnNpdmVseSBzdGVwIGRvd24gaW50byBsaXN0LCByZW1vdmluZyBhbGwgc3VjaCBvYmplY3RzIA0Kcm1OdWxsT2JzIDwtIGZ1bmN0aW9uKHgpIHsNCiAgIHggPC0gRmlsdGVyKE5lZ2F0ZShpcy5OdWxsT2IpLCB4KQ0KICAgbGFwcGx5KHgsIGZ1bmN0aW9uKHgpIGlmIChpcy5saXN0KHgpKSBybU51bGxPYnMoeCkgZWxzZSB4KQ0KfQ0KcHJvZmlsZXMgPC0gcm1OdWxsT2JzKHByb2ZpbGVzKQ0KDQojeWVzLCBJIGtub3cgdGhhdCBhcHBseSwgbWFwIGV0YyBjYW4vbWF5IGJlIGZhc3Rlci4gYnV0IGxvb3BzIGFyZSBlYXN5IHRvIHVuZGVyc3RhbmQuIEFuZCBlYXN5IHRvIHBhcmFsbGVsaXplIGlmIG5lZWQgYmUuIA0KDQpmb3IgKGkgaW4gMTpsZW5ndGgocHJvZmlsZXMpKSB7DQogbmFtZXMocHJvZmlsZXMpW1tpXV0gPC0gcHJvZmlsZXNbW2ldXSRpZCRnc19pZA0KfQ0KDQojd2UgYXJlIHdvcmtpbmcgd2l0aCB0aWJibGVzIHRodXMgbmVlZCB0byBkZWNsYXJlIHZhcmlhYmxlcyB1cGZyb250LiANCmRmJGdzX25hbWUgPC0gZGYkZ3NfYWZmaWxpYXRpb24gPC0gZGYkZ3NfdG90YWxfY2l0ZXMgPC0gZGYkZ3NfaF9pbmRleCA8LSBkZiRnc19pMTBfaW5kZXggPC0gZGYkZ3NfZmllbGQgPC0gZGYkZ3NfaG9tZXBhZ2UgPC0gTkENCg0KZm9yIChpIGluIDE6bnJvdyhkZikpIHsNCiAgICB3aG9faWQgPC0gd2hpY2gobmFtZXMocHJvZmlsZXMpPT1kZiRnc19pZFtpXSkNCiAgICBpZiAobGVuZ3RoKHdob19pZCk+MCkgdHJ5Q2F0Y2goe3sNCiAgICAgIGRmJGdzX25hbWVbaV0gPC0gcHJvZmlsZXNbW3dob19pZF1dJG5hbWUNCiAgICAgIGRmJGdzX2FmZmlsaWF0aW9uW2ldIDwtIHByb2ZpbGVzW1t3aG9faWRdXSRhZmZpbGlhdGlvbg0KICAgICAgZGYkZ3NfdG90YWxfY2l0ZXNbaV0gPC0gcHJvZmlsZXNbW3dob19pZF1dJHRvdGFsX2NpdGVzDQogICAgICBkZiRnc19oX2luZGV4W2ldIDwtIHByb2ZpbGVzW1t3aG9faWRdXSRoX2luZGV4DQogICAgICBkZiRnc19pMTBfaW5kZXhbaV0gPC0gcHJvZmlsZXNbW3dob19pZF1dJGkxMF9pbmRleA0KICAgICAgZGYkZ3NfZmllbGRbaV0gPC0gcHJvZmlsZXNbW3dob19pZF1dJGZpZWxkWzFdDQogICAgICBkZiRnc19ob21lcGFnZVtpXSA8LSBwcm9maWxlc1tbd2hvX2lkXV0kaG9tZXBhZ2UNCiAgICB9DQogIH0sIGVycm9yPWZ1bmN0aW9uKGUpe2NhdCgiRVJST1IgOiIsIGNvbmRpdGlvbk1lc3NhZ2UoZSksICJcbiIpfSkgIyBjb250aW51ZSBvbiBlcnJvciwgYnV0IHByaW50IHRoZSBlcnJvcg0KfQ0KDQpgYGANCg0KYGBge3IsIGV2YWw9RkFMU0V9DQpkZl9jb21wbGV0ZSA8LSBkZg0KDQpmc2F2ZShkZl9jb21wbGV0ZSkNCmBgYA0KDQoNCg0KT2theSwgcGxlYXNlIG5vdGUgd2UgZGlkIG5vdCBhdHRhY2ggZXZlcnl0aGluZy4gV2UgYWxzbyBkaWQgbm90IHNjcmFwZSBldmVyeXRoaW5nIHlldCB2aWEgdGhlIGBzY2hvbGFyYCBwYWNrYWdlLiBCdXQgZm9yIHRvZGF5IHRoaXMgd2lsbCBiZSBlbm91Z2guIA0KDQoNCi0tLSAgDQojIFJlZmVyZW5jZXMgIA0K


Copyright © 2024 Jochem Tolsma