Load QC filtered cell dataset

QCFiltered.data dataset was generated following this QC steps

Assign cell state scores

We assigned broad transcriptional cell state score based on known and manually curated marker genes

Session Info

## [1] "30 novembre, 2020, 10,28"
## R version 3.6.3 (2020-02-29)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 18.04.5 LTS
## 
## Matrix products: default
## BLAS:   /usr/lib/x86_64-linux-gnu/atlas/libblas.so.3.10.3
## LAPACK: /usr/lib/x86_64-linux-gnu/atlas/liblapack.so.3.10.3
## 
## locale:
##  [1] LC_CTYPE=fr_FR.UTF-8       LC_NUMERIC=C              
##  [3] LC_TIME=fr_FR.UTF-8        LC_COLLATE=fr_FR.UTF-8    
##  [5] LC_MONETARY=fr_FR.UTF-8    LC_MESSAGES=fr_FR.UTF-8   
##  [7] LC_PAPER=fr_FR.UTF-8       LC_NAME=C                 
##  [9] LC_ADDRESS=C               LC_TELEPHONE=C            
## [11] LC_MEASUREMENT=fr_FR.UTF-8 LC_IDENTIFICATION=C       
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
## [1] wesanderson_0.3.6  RColorBrewer_1.1-2 Seurat_2.3.4       Matrix_1.2-17     
## [5] cowplot_1.0.0      ggplot2_3.2.1     
## 
## loaded via a namespace (and not attached):
##   [1] Rtsne_0.15          colorspace_1.4-1    class_7.3-17       
##   [4] modeltools_0.2-22   ggridges_0.5.1      mclust_5.4.5       
##   [7] htmlTable_1.13.2    base64enc_0.1-3     rstudioapi_0.11    
##  [10] proxy_0.4-23        farver_2.0.1        npsurv_0.4-0       
##  [13] flexmix_2.3-15      bit64_4.0.2         codetools_0.2-16   
##  [16] splines_3.6.3       R.methodsS3_1.7.1   lsei_1.2-0         
##  [19] robustbase_0.93-5   knitr_1.26          zeallot_0.1.0      
##  [22] jsonlite_1.7.0      Formula_1.2-3       ica_1.0-2          
##  [25] cluster_2.1.0       kernlab_0.9-29      png_0.1-7          
##  [28] R.oo_1.23.0         compiler_3.6.3      httr_1.4.1         
##  [31] backports_1.1.5     assertthat_0.2.1    lazyeval_0.2.2     
##  [34] lars_1.2            acepack_1.4.1       htmltools_0.5.0    
##  [37] tools_3.6.3         igraph_1.2.5        gtable_0.3.0       
##  [40] glue_1.4.1          RANN_2.6.1          reshape2_1.4.3     
##  [43] dplyr_0.8.3         Rcpp_1.0.5          vctrs_0.2.0        
##  [46] gdata_2.18.0        ape_5.3             nlme_3.1-141       
##  [49] iterators_1.0.12    fpc_2.2-3           gbRd_0.4-11        
##  [52] lmtest_0.9-37       xfun_0.18           stringr_1.4.0      
##  [55] lifecycle_0.1.0     irlba_2.3.3         gtools_3.8.1       
##  [58] DEoptimR_1.0-8      MASS_7.3-53         zoo_1.8-6          
##  [61] scales_1.1.0        doSNOW_1.0.18       parallel_3.6.3     
##  [64] yaml_2.2.1          reticulate_1.13     pbapply_1.4-2      
##  [67] gridExtra_2.3       rpart_4.1-15        segmented_1.0-0    
##  [70] latticeExtra_0.6-28 stringi_1.4.6       highr_0.8          
##  [73] foreach_1.4.7       checkmate_1.9.4     caTools_1.17.1.2   
##  [76] bibtex_0.4.2        Rdpack_0.11-0       SDMTools_1.1-221.1 
##  [79] rlang_0.4.7         pkgconfig_2.0.3     dtw_1.21-3         
##  [82] prabclus_2.3-1      bitops_1.0-6        evaluate_0.14      
##  [85] lattice_0.20-41     ROCR_1.0-7          purrr_0.3.3        
##  [88] labeling_0.3        htmlwidgets_1.5.1   bit_4.0.4          
##  [91] tidyselect_0.2.5    plyr_1.8.4          magrittr_1.5       
##  [94] R6_2.4.1            snow_0.4-3          gplots_3.0.1.1     
##  [97] Hmisc_4.3-0         pillar_1.4.2        foreign_0.8-72     
## [100] withr_2.1.2         fitdistrplus_1.0-14 mixtools_1.1.0     
## [103] survival_2.44-1.1   nnet_7.3-14         tsne_0.1-3         
## [106] tibble_2.1.3        crayon_1.3.4        hdf5r_1.3.2.9000   
## [109] KernSmooth_2.23-15  rmarkdown_2.5       grid_3.6.3         
## [112] data.table_1.12.6   metap_1.1           digest_0.6.25      
## [115] diptest_0.75-7      tidyr_1.0.0         R.utils_2.9.0      
## [118] stats4_3.6.3        munsell_0.5.0

  1. Institute of Psychiatry and Neuroscience of Paris, INSERM U1266, 75014, Paris, France,

LS0tCnRpdGxlOiAiRXhwbG9yYXRpb24gb2YgdGhlIGRhdGFzZXQiCmF1dGhvcjoKICAgLSBNYXR0aGlldSBNb3JlYXVeW0luc3RpdHV0ZSBvZiBQc3ljaGlhdHJ5IGFuZCBOZXVyb3NjaWVuY2Ugb2YgUGFyaXMsIElOU0VSTSBVMTI2NiwgNzUwMTQsIFBhcmlzLCBGcmFuY2UsIG1hdHRoaWV1Lm1vcmVhdUBpbnNlcm0uZnJdIFshW10oaHR0cHM6Ly9vcmNpZC5vcmcvc2l0ZXMvZGVmYXVsdC9maWxlcy9pbWFnZXMvb3JjaWRfMTZ4MTYucG5nKV0oaHR0cHM6Ly9vcmNpZC5vcmcvMDAwMC0wMDAyLTI1OTItMjM3MykKZGF0ZTogImByIGZvcm1hdChTeXMudGltZSgpLCAnJWQgJUIsICVZJylgIgpvdXRwdXQ6IAogIGh0bWxfZG9jdW1lbnQ6IAogICAgY29kZV9kb3dubG9hZDogeWVzCiAgICBkZl9wcmludDogdGliYmxlCiAgICBoaWdobGlnaHQ6IGhhZGRvY2sKICAgIGluY2x1ZGVzOgogICAgICBpbl9oZWFkZXI6IGhlYWRlci5odG1sCiAgICB0aGVtZTogY29zbW8KICAgIHRvYzogeWVzCiAgICB0b2NfZGVwdGg6IDUKICAgIHRvY19mbG9hdDoKICAgICAgY29sbGFwc2VkOiB5ZXMKLS0tCgpgYGB7Y3NzLCBlY2hvPUZBTFNFfQpoMSB7CiAgZm9udC1zaXplOiAzNHB4OwogIG1hcmdpbi10b3A6IDJyZW07CiAgbWFyZ2luLWJvdHRvbTogMXJlbTsKICBjb2xvcjogI2U2NGQwMDsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KaDEudGl0bGUgewogIGZvbnQtc2l6ZTogNDBweDsKICBtYXJnaW4tdG9wOiAycmVtOwogIG1hcmdpbi1ib3R0b206IDFyZW07CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBjb2xvcjogIzAwMDAwMDsKfQpoMiB7CiAgZm9udC1zaXplOiAzMHB4OwogIG1hcmdpbi10b3A6IDJyZW07CiAgbWFyZ2luLWJvdHRvbTogMXJlbTsKICBjb2xvcjogIzAwMDAwMDsKfQpoMyB7CiAgZm9udC1zaXplOiAyNHB4OwogIG1hcmdpbi10b3A6IDJyZW07CiAgbWFyZ2luLWJvdHRvbTogMXJlbTsKICBjb2xvcjogIzAwMDAwMDsKfQpoNCB7CiAgZm9udC1zaXplOiAxOHB4OwogIG1hcmdpbi10b3A6IDJyZW07CiAgbWFyZ2luLWJvdHRvbTogMXJlbTsKICBjb2xvcjogIzAwMDAwMDsKfQpoNSB7CiAgZm9udC1zaXplOiAxNnB4OwogIG1hcmdpbi10b3A6IDJyZW07CiAgbWFyZ2luLWJvdHRvbTogMXJlbTsKICBjb2xvcjogIzAwMDAwMDsKfQoKcCB7CiAgZm9udC1zaXplOiAxNnB4Owp9CmBgYAoKYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9CmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSwgZmlnLmFsaWduID0gJ2NlbnRlcicsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0UpCgpgYGAKCiMgTG9hZCBsaWJyYXJpZXMKCmBgYHtyIH0KbGlicmFyeShTZXVyYXQpCmxpYnJhcnkoUkNvbG9yQnJld2VyKQpsaWJyYXJ5KHdlc2FuZGVyc29uKQoKI1NldCBnZ3Bsb3QgdGhlbWUKdGhlbWVfc2V0KHRoZW1lX2NsYXNzaWMoKSkKYGBgCgoKIyBMb2FkIFFDIGZpbHRlcmVkIGNlbGwgZGF0YXNldAoKUUNGaWx0ZXJlZC5kYXRhIGRhdGFzZXQgd2FzIGdlbmVyYXRlZCBmb2xsb3dpbmcgdGhpcyBbUUMgc3RlcHNdKGh0dHBzOi8vbWF0dGhpZXV4bW9yZWF1LmdpdGh1Yi5pby9FYXJseVBhbGxpYWxOZXVyb2dlbmVzaXMvaHRtbC1SZXBvcnRzL1F1YWxpdHlfQ29udHJvbC5odG1sKQoKYGBge3J9ClFDRmlsdGVyZWQuZGF0YSA8LSByZWFkUkRTKCIuL1FDLmZpbHRlcmVkLmNlbGxzLlJEUyIpCmBgYAoKIyBBc3NpZ25pbmcgY2VsbCBjeWNsZSBzY29yZQoKQ2VsbCBjeWNsZSBzY29yZSB3YXMgYXNzaWduZWQgZm9sbG93aW5nIHRoZSBTZXVyYXQgdjIuNCBbQ2VsbC1DeWNsZSBTY29yaW5nIHZpZ25ldHRlXShodHRwczovL3NhdGlqYWxhYi5vcmcvc2V1cmF0L3YyLjQvY2VsbF9jeWNsZV92aWduZXR0ZS5odG1sKSAKCmBgYHtyfQojIEFzc2lnbiBjZWxsLWN5Y2xlIHNjb3JlcyBiYXNlZCBvbiBUaXJvc2ggZXQgYWwsIDIwMTUgZ2VuZSBsaXN0CnMuZ2VuZXMgPC0gYygiTWNtNSIsICJQY25hIiwgIlR5bTUiLCAiRmVuMSIsICJNY20yIiwgIk1jbTQiLCAiUnJtMSIsICJVbmciLCAiR2luczIiLCAiTWNtNiIsICJDZGNhNyIsICJEdGwiLCAiUHJpbTEiLCAiVWhyZjEiLCAiTWxmMWlwIiwgIkhlbGxzIiwgIlJmYzIiLCAiUmFwMiIsICJOYXNwIiwgIlJhZDUxYXAxIiwgIkdtbm4iLCAiV2RyNzYiLCAiU2xicCIsICJDY25lMiIsICJVYnI3IiwgIlBvbGQzIiwgIk1zaDIiLCAiQXRhZDIiLCAiUmFkNTEiLCAiUnJtMiIsICJDZGM0NSIsICJDZGM2IiwgIkV4bzEiLCAiVGlwaW4iLCAiRHNjYzEiLCAiQmxtIiwgIiBDYXNwOGFwMiIsICJVc3AxIiwgIkNsc3BuIiwgIlBvbGExIiwgIkNoYWYxYiIsICJCcmlwMSIsICJFMmY4IikKZzJtLmdlbmVzIDwtIGMoIkhtZ2IyIiwgIkRkazEiLCJOdXNhcDEiLCAiVWJlMmMiLCAiQmlyYzUiLCAiVHB4MiIsICJUb3AyYSIsICJOZGM4MCIsICJDa3MyIiwgIk51ZjIiLCAiQ2tzMWIiLCAiTWtpNjciLCAiVG1wbyIsICIgQ2VucGsiLCAiVGFjYzMiLCAiRmFtNjRhIiwgIlNtYzQiLCAiQ2NuYjIiLCAiQ2thcDJsIiwgIkNrYXAyIiwgIkF1cmtiIiwgIkJ1YjEiLCAiS2lmMTEiLCAiQW5wMzJlIiwgIlR1YmI0YiIsICJHdHNlMSIsICJraWYyMGIiLCAiSGp1cnAiLCAiQ2RjYTMiLCAiSG4xIiwgIkNkYzIwIiwgIlR0ayIsICJDZGMyNWMiLCAia2lmMmMiLCAiUmFuZ2FwMSIsICJOY2FwZDIiLCAiRGxnYXA1IiwgIkNkY2EyIiwgIkNkY2E4IiwgIkVjdDIiLCAiS2lmMjMiLCAiSG1tciIsICJBdXJrYSIsICJQc3JjMSIsICJBbmxuIiwgIkxiciIsICJDa2FwNSIsICJDZW5wZSIsICJDdGNmIiwgIk5lazIiLCAiRzJlMyIsICJHYXMybDMiLCAiQ2J4NSIsICJDZW5wYSIpCgpRQ0ZpbHRlcmVkLmRhdGEgPC0gQ2VsbEN5Y2xlU2NvcmluZyhvYmplY3QgPSBRQ0ZpbHRlcmVkLmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuZ2VuZXMgPSBzLmdlbmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnMm0uZ2VuZXMgPSBnMm0uZ2VuZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldC5pZGVudCA9IEYpCmBgYAoKCgpgYGB7ciBmaWcuZGltPWMoOCwgNiksIGZpZy5jYXA9ICJNYW51c2NyaXB0IEZpZy4gMUIifQpEaW1QbG90KFFDRmlsdGVyZWQuZGF0YSwKICAgICAgICByZWR1Y3Rpb24udXNlID0gInNwcmluZyIsCiAgICAgICAgZ3JvdXAuYnkgPSAiUGhhc2UiLAogICAgICAgIGNvbHMudXNlID0gd2VzX3BhbGV0dGUoIkdyYW5kQnVkYXBlc3QxIiwgMywgdHlwZSA9ICJkaXNjcmV0ZSIpWzM6MV0sCiAgICAgICAgZGltLjEgPSAxLCAKICAgICAgICBkaW0uMiA9IDIsCiAgICAgICAgZG8ubGFiZWw9VCwKICAgICAgICBsYWJlbC5zaXplID0gNCwKICAgICAgICBuby5sZWdlbmQgPSBGICkKYGBgCgojIEtub3duIHBhbGxpYWwgYW5kIHN1Yi1wYWxsaWFsIG1hcmtlciBnZW5lcwoKYGBge3IgZmlnLmRpbT1jKDYsIDkpLCBmaWcuY2FwPSAiTWFudXNjcmlwdCBGaWcuIDFDIn0KRmVhdHVyZVBsb3Qob2JqZWN0ID0gUUNGaWx0ZXJlZC5kYXRhLAogICAgICAgICAgICBmZWF0dXJlcy5wbG90ID0gYygiTmVzIiwgIlNveDIiLCAiVGJyMSIsICJTbGMxN2E2IiwgIkdhZDIiLCAiRGx4NSIpLAogICAgICAgICAgICBjb2xzLnVzZSA9IGMoImdyZXk5MCIsIGJyZXdlci5wYWwoOSwiWWxHbkJ1IikpLAogICAgICAgICAgICByZWR1Y3Rpb24udXNlID0gInNwcmluZyIsCiAgICAgICAgICAgIG5vLmxlZ2VuZCA9IFQsCiAgICAgICAgICAgIG92ZXJsYXkgPSBGLAogICAgICAgICAgICBkYXJrLnRoZW1lID0gRikKYGBgCgoKIyBBc3NpZ24gY2VsbCBzdGF0ZSBzY29yZXMKCldlIGFzc2lnbmVkIGJyb2FkIHRyYW5zY3JpcHRpb25hbCBjZWxsIHN0YXRlIHNjb3JlIGJhc2VkIG9uIGtub3duIGFuZCBtYW51YWxseSBjdXJhdGVkIG1hcmtlciBnZW5lcwoKIyMgQXBpY2FsIHByb2dlbml0b3JzCmBgYHtyfQpBUGdlbmVzIDwtIGMoIlJnY2MiLCAiU3BhcmMiLCAiSGVzNSIsIkhlczEiLCAiU2xjMWEzIiwKICAgICAgICAgICAgICJEZGFoMSIsICJMZGhhIiwgIkhtZ2EyIiwiU2ZycDEiLCAiSWQ0IiwKICAgICAgICAgICAgICJDcmViNSIsICJQdG4iLCAiTHBhcjEiLCAiUmNuMSIsIlpmcDM2bDEiLAogICAgICAgICAgICAgIlNveDkiLCAiU294MiIsICJOcjJlMSIsICJUdHloMSIsICJUcmlwNiIpCmdlbmVzLmxpc3QgPC0gbGlzdChBUGdlbmVzKQplbnJpY2gubmFtZSA8LSAiQVBfc2lnbmF0dXJlIgpRQ0ZpbHRlcmVkLmRhdGEgPC0gQWRkTW9kdWxlU2NvcmUoUUNGaWx0ZXJlZC5kYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXMubGlzdCA9IGdlbmVzLmxpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcy5wb29sID0gTlVMTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uYmluID0gNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlZWQudXNlID0gMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0cmwuc2l6ZSA9IGxlbmd0aChnZW5lcy5saXN0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZS5rID0gRkFMU0UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnJpY2gubmFtZSA9IGVucmljaC5uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZG9tLnNlZWQgPSAxKQpgYGAKCmBgYHtyIGZpZy5kaW09Yyg3LCA5LjMpLCBmaWcuY2FwPSAiQXBpY2FsIHByb2dlbml0b3JzIGdlbmUgZXhwcmVzc2lvbiJ9CkZlYXR1cmVQbG90KG9iamVjdCA9IFFDRmlsdGVyZWQuZGF0YSwKICAgICAgICAgICAgZmVhdHVyZXMucGxvdCA9IEFQZ2VuZXMsCiAgICAgICAgICAgIGNvbHMudXNlID0gd2VzX3BhbGV0dGUoIlppc3NvdTEiLCA4LCB0eXBlID0gImNvbnRpbnVvdXMiKSwKICAgICAgICAgICAgcHQuc2l6ZSA9IDAuOCwKICAgICAgICAgICAgcmVkdWN0aW9uLnVzZSA9ICJzcHJpbmciLAogICAgICAgICAgICBuby5sZWdlbmQgPSBULAogICAgICAgICAgICBvdmVybGF5ID0gRiwKICAgICAgICAgICAgZGFyay50aGVtZSA9IEYKICAgICAgICAgICAgKQpgYGAKCiMjIEJhc2FsIHByb2dlbml0b3JzCmBgYHtyfQpCUGdlbmVzIDwtIGMoIkVvbWVzIiwgIklnc2Y4IiwgIkluc20xIiwgIkVsYXZsMiIsICJFbGF2bDQiLAogICAgICAgICAgICAgIkhlczYiLCJHYWRkNDVnIiwgIk5ldXJvZzIiLCAiQnRnMiIsICJOZXVyb2cxIikKZ2VuZXMubGlzdCA8LSBsaXN0KEJQZ2VuZXMpCmVucmljaC5uYW1lIDwtICJCUF9zaWduYXR1cmUiClFDRmlsdGVyZWQuZGF0YSA8LSBBZGRNb2R1bGVTY29yZShRQ0ZpbHRlcmVkLmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcy5saXN0ID0gZ2VuZXMubGlzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVzLnBvb2wgPSBOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5iaW4gPSA1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VlZC51c2UgPSAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3RybC5zaXplID0gbGVuZ3RoKGdlbmVzLmxpc3QpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlLmsgPSBGQUxTRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVucmljaC5uYW1lID0gZW5yaWNoLm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5kb20uc2VlZCA9IDEpCmBgYAoKYGBge3IgZmlnLmRpbT1jKDcsIDcpLCBmaWcuY2FwPSAiQmFzYWwgcHJvZ2VuaXRvcnMgZ2VuZSBleHByZXNzaW9uIn0KRmVhdHVyZVBsb3Qob2JqZWN0ID0gUUNGaWx0ZXJlZC5kYXRhLAogICAgICAgICAgICBmZWF0dXJlcy5wbG90ID0gQlBnZW5lcywKICAgICAgICAgICAgY29scy51c2UgPSB3ZXNfcGFsZXR0ZSgiWmlzc291MSIsIDgsIHR5cGUgPSAiY29udGludW91cyIpLAogICAgICAgICAgICBwdC5zaXplID0gMC44LAogICAgICAgICAgICByZWR1Y3Rpb24udXNlID0gInNwcmluZyIsCiAgICAgICAgICAgIG5vLmxlZ2VuZCA9IFQsCiAgICAgICAgICAgIG92ZXJsYXkgPSBGLAogICAgICAgICAgICBkYXJrLnRoZW1lID0gRgogICAgICAgICAgICApCmBgYAoKIyMgRWFybHkgcGFsbGlhbCBuZXVyb25zCmBgYHtyfQpFTmdlbmVzIDwtIGMoIk1mYXA0IiwgIk5obGgyIiwgIk5obGgxIiwgIlBwcDFyMTRhIiwgIk5hdjEiLAogICAgICAgICAgICAgIk5ldXJvZDEiLCAiU29ybDEiLCAiU3ZpcCIsICJDeGNsMTIiLCAiVGVubTQiLAogICAgICAgICAgICAgIkRsbDMiLCAiUmdtYiIsICJDbnRuMiIsICJWYXQxIikKZ2VuZXMubGlzdCA8LSBsaXN0KEVOZ2VuZXMpCmVucmljaC5uYW1lIDwtICJFTl9zaWduYXR1cmUiClFDRmlsdGVyZWQuZGF0YSA8LSBBZGRNb2R1bGVTY29yZShRQ0ZpbHRlcmVkLmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcy5saXN0ID0gZ2VuZXMubGlzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVzLnBvb2wgPSBOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5iaW4gPSA1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VlZC51c2UgPSAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3RybC5zaXplID0gbGVuZ3RoKGdlbmVzLmxpc3QpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlLmsgPSBGQUxTRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVucmljaC5uYW1lID0gZW5yaWNoLm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5kb20uc2VlZCA9IDEpCmBgYAoKYGBge3IgZmlnLmRpbT1jKDcsIDguMyksIGZpZy5jYXA9ICJFYXJseSBwYWxsaWFsIG5ldXJvbnMgZ2VuZSBleHByZXNzaW9uIn0KRmVhdHVyZVBsb3Qob2JqZWN0ID0gUUNGaWx0ZXJlZC5kYXRhLAogICAgICAgICAgICBmZWF0dXJlcy5wbG90ID0gRU5nZW5lcywKICAgICAgICAgICAgY29scy51c2UgPSB3ZXNfcGFsZXR0ZSgiWmlzc291MSIsIDgsIHR5cGUgPSAiY29udGludW91cyIpLAogICAgICAgICAgICBwdC5zaXplID0gMC44LAogICAgICAgICAgICByZWR1Y3Rpb24udXNlID0gInNwcmluZyIsCiAgICAgICAgICAgIG5vLmxlZ2VuZCA9IFQsCiAgICAgICAgICAgIG92ZXJsYXkgPSBGLAogICAgICAgICAgICBkYXJrLnRoZW1lID0gRgogICAgICAgICAgICApCmBgYAoKIyMgTGF0ZSBwYWxsaWFsIG5ldXJvbnMKYGBge3J9CkxOZ2VuZXMgPC0gYygiU25oZzExIiwgIlBjc2sxbiIsICJNYXB0IiwgIkluYSIsICJTdG1uNCIsCiAgICAgICAgICAgICAiR2FwNDMiLCAiVHViYjJhIiwgIkx5NmgiLCJQdHByZCIsICJNZWYyYyIpCmdlbmVzLmxpc3QgPC0gbGlzdChMTmdlbmVzKQplbnJpY2gubmFtZSA8LSAiTE5fc2lnbmF0dXJlIgpRQ0ZpbHRlcmVkLmRhdGEgPC0gQWRkTW9kdWxlU2NvcmUoUUNGaWx0ZXJlZC5kYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXMubGlzdCA9IGdlbmVzLmxpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcy5wb29sID0gTlVMTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uYmluID0gNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlZWQudXNlID0gMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0cmwuc2l6ZSA9IGxlbmd0aChnZW5lcy5saXN0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZS5rID0gRkFMU0UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnJpY2gubmFtZSA9IGVucmljaC5uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZG9tLnNlZWQgPSAxKQpgYGAKCmBgYHtyIGZpZy5kaW09Yyg3LCA3KSwgZmlnLmNhcD0gIkxhdGUgcGFsbGlhbCBuZXVyb25zIGdlbmUgZXhwcmVzc2lvbiJ9CkZlYXR1cmVQbG90KG9iamVjdCA9IFFDRmlsdGVyZWQuZGF0YSwKICAgICAgICAgICAgZmVhdHVyZXMucGxvdCA9IExOZ2VuZXMsCiAgICAgICAgICAgIGNvbHMudXNlID0gd2VzX3BhbGV0dGUoIlppc3NvdTEiLCA4LCB0eXBlID0gImNvbnRpbnVvdXMiKSwKICAgICAgICAgICAgcHQuc2l6ZSA9IDAuOCwKICAgICAgICAgICAgcmVkdWN0aW9uLnVzZSA9ICJzcHJpbmciLAogICAgICAgICAgICBuby5sZWdlbmQgPSBULAogICAgICAgICAgICBvdmVybGF5ID0gRiwKICAgICAgICAgICAgZGFyay50aGVtZSA9IEYKICAgICAgICAgICAgKQpgYGAKCiMjIFN1YnBhbGxpYWwgbmV1cm9ucwpgYGB7cn0KU1BnZW5lcyA8LSBjKCJHYWQyIiwgIkRseDYiLCAiU2xjMzJhMSIsICJOcnhuMyIsIkRseDUiKQpnZW5lcy5saXN0IDwtIGxpc3QoU1BnZW5lcykKZW5yaWNoLm5hbWUgPC0gIlNQX3NpZ25hdHVyZSIKUUNGaWx0ZXJlZC5kYXRhIDwtIEFkZE1vZHVsZVNjb3JlKFFDRmlsdGVyZWQuZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVzLmxpc3QgPSBnZW5lcy5saXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXMucG9vbCA9IE5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLmJpbiA9IDUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWVkLnVzZSA9IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHJsLnNpemUgPSBsZW5ndGgoZ2VuZXMubGlzdCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2UuayA9IEZBTFNFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5yaWNoLm5hbWUgPSBlbnJpY2gubmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmRvbS5zZWVkID0gMSkKYGBgCgpgYGB7ciBmaWcuZGltPWMoNiwgOSksIGZpZy5jYXA9ICJTdWItcGFsbGlhbCBuZXVyb25zIGdlbmUgZXhwcmVzc2lvbiJ9CkZlYXR1cmVQbG90KG9iamVjdCA9IFFDRmlsdGVyZWQuZGF0YSwKICAgICAgICAgICAgZmVhdHVyZXMucGxvdCA9IFNQZ2VuZXMsCiAgICAgICAgICAgIGNvbHMudXNlID0gd2VzX3BhbGV0dGUoIlppc3NvdTEiLCA4LCB0eXBlID0gImNvbnRpbnVvdXMiKSwKICAgICAgICAgICAgcHQuc2l6ZSA9IDAuOCwKICAgICAgICAgICAgcmVkdWN0aW9uLnVzZSA9ICJzcHJpbmciLAogICAgICAgICAgICBuby5sZWdlbmQgPSBULAogICAgICAgICAgICBvdmVybGF5ID0gRiwKICAgICAgICAgICAgZGFyay50aGVtZSA9IEYKICAgICAgICAgICAgKQpgYGAKCiMjIFBhbGxpYWwgbmV1cm9ucwpgYGB7cn0KUGFsZ2VuZXMgPC0gYygiVG1lbTE2MyIsICJQdHByZCIsICJUYnIxIiwgIldudDdiIiwgIk5ybjEiLCAiU2xjMTdhNiIpCmdlbmVzLmxpc3QgPC0gbGlzdChQYWxnZW5lcykKZW5yaWNoLm5hbWUgPC0gIlBhbF9zaWduYXR1cmUiClFDRmlsdGVyZWQuZGF0YSA8LSBBZGRNb2R1bGVTY29yZShRQ0ZpbHRlcmVkLmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcy5saXN0ID0gZ2VuZXMubGlzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVzLnBvb2wgPSBOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi5iaW4gPSA1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VlZC51c2UgPSAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3RybC5zaXplID0gbGVuZ3RoKGdlbmVzLmxpc3QpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlLmsgPSBGQUxTRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVucmljaC5uYW1lID0gZW5yaWNoLm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5kb20uc2VlZCA9IDEpCmBgYAoKYGBge3IgZmlnLmRpbT1jKDYsIDkpLCBmaWcuY2FwPSAiUGFsbGlhbCBuZXVyb25zIGdlbmUgZXhwcmVzc2lvbiJ9CkZlYXR1cmVQbG90KG9iamVjdCA9IFFDRmlsdGVyZWQuZGF0YSwKICAgICAgICAgICAgZmVhdHVyZXMucGxvdCA9IFBhbGdlbmVzLAogICAgICAgICAgICBjb2xzLnVzZSA9IHdlc19wYWxldHRlKCJaaXNzb3UxIiwgOCwgdHlwZSA9ICJjb250aW51b3VzIiksCiAgICAgICAgICAgIHB0LnNpemUgPSAwLjgsCiAgICAgICAgICAgIHJlZHVjdGlvbi51c2UgPSAic3ByaW5nIiwKICAgICAgICAgICAgbm8ubGVnZW5kID0gVCwKICAgICAgICAgICAgb3ZlcmxheSA9IEYsCiAgICAgICAgICAgIGRhcmsudGhlbWUgPSBGCiAgICAgICAgICAgICkKYGBgCgojIFBsb3QgY2VsbCBzdGF0ZSBzY29yZXMgb250byB0aGUgU3ByaW5nIGVtYmVkZGluZwoKYGBge3IgZmlnLmRpbT1jKDYsIDkpLCBmaWcuY2FwPSAiTWFudXNjcmlwdCBGaWcuIDFEIn0KRmVhdHVyZVBsb3Qob2JqZWN0ID0gUUNGaWx0ZXJlZC5kYXRhLAogICAgICAgICAgICBmZWF0dXJlcy5wbG90ID0gYygiQVBfc2lnbmF0dXJlMSIsICJCUF9zaWduYXR1cmUxIiwgIkVOX3NpZ25hdHVyZTEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTE5fc2lnbmF0dXJlMSIsICJQYWxfc2lnbmF0dXJlMSIsICJTUF9zaWduYXR1cmUxIiksCiAgICAgICAgICAgIGNvbHMudXNlID0gcmV2KGJyZXdlci5wYWwoMTAsIlNwZWN0cmFsIikpLAogICAgICAgICAgICByZWR1Y3Rpb24udXNlID0gInNwcmluZyIsCiAgICAgICAgICAgIG5vLmxlZ2VuZCA9IFQsCiAgICAgICAgICAgIG92ZXJsYXkgPSBGLAogICAgICAgICAgICBkYXJrLnRoZW1lID0gRgogICAgICAgICAgICApCmBgYAoKIyBTYXZlIFNldXJhdCBvYmplY3QKYGBge3J9CnNhdmVSRFMoUUNGaWx0ZXJlZC5kYXRhLCAiLi9RQy5maWx0ZXJlZC5jZWxscy5SRFMiKQpgYGAKCgojIFNlc3Npb24gSW5mbwpgYGB7cn0KI2RhdGUKZm9ybWF0KFN5cy50aW1lKCksICIlZCAlQiwgJVksICVILCVNIikKCiNQYWNrYWdlcyB1c2VkCnNlc3Npb25JbmZvKCkKYGBgCg==