Read Data

v19_Profile <- load_variables(2019,
                              "acs5/profile",
                              cache = TRUE)

v14_Profile <- load_variables(2014,
                              "acs5/profile",
                              cache = TRUE)#demographic 

#Search for variables by using grep()


v19_Profile[grep(x = v19_Profile$label,
                 "Educational Attainment",
                 ignore.case = TRUE),
            c("name", "label")]
v19_Profile[grep(x = v19_Profile$label,
                 "Hispanic and Race",
                 ignore.case = TRUE),
            c("name", "label")]
v19_Profile[grep(x = v19_Profile$label,
                 "Sex and Age",
                 ignore.case = TRUE),
            c("name", "label")]
v14_Profile[grep(x = v14_Profile$label,
                 "Educational Attainment",
                 ignore.case = TRUE),
            c("name", "label")]
v14_Profile[grep(x = v14_Profile$label,
                 "Hispanic and Race",
                 ignore.case = TRUE),
            c("name", "label")]
v14_Profile[grep(x = v14_Profile$label,
                 "Sex and Age",
                 ignore.case = TRUE),
            c("name", "label")]
educ14<-get_acs(geography = 'county',
                state ='TX',
                year = 2014,
                variables = c(peduc14 = "DP02_0066P",
                              male = "DP05_0002P",
                              hispanic = "DP05_0066P",
                              nh_white = "DP05_0072P",
                              nh_black = "DP05_0073P"), 
              geometry = T, output = "wide")
## Getting data from the 2010-2014 5-year ACS
## Downloading feature geometry from the Census website.  To cache shapefiles for use in future sessions, set `options(tigris_use_cache = TRUE)`.
## Using the ACS Data Profile
## 
  |                                                                            
  |                                                                      |   0%
  |                                                                            
  |                                                                      |   1%
  |                                                                            
  |=                                                                     |   1%
  |                                                                            
  |=                                                                     |   2%
  |                                                                            
  |==                                                                    |   2%
  |                                                                            
  |==                                                                    |   3%
  |                                                                            
  |===                                                                   |   4%
  |                                                                            
  |===                                                                   |   5%
  |                                                                            
  |====                                                                  |   5%
  |                                                                            
  |====                                                                  |   6%
  |                                                                            
  |=====                                                                 |   7%
  |                                                                            
  |=====                                                                 |   8%
  |                                                                            
  |======                                                                |   8%
  |                                                                            
  |======                                                                |   9%
  |                                                                            
  |=======                                                               |   9%
  |                                                                            
  |=======                                                               |  10%
  |                                                                            
  |=======                                                               |  11%
  |                                                                            
  |========                                                              |  11%
  |                                                                            
  |========                                                              |  12%
  |                                                                            
  |=========                                                             |  12%
  |                                                                            
  |=========                                                             |  13%
  |                                                                            
  |=========                                                             |  14%
  |                                                                            
  |==========                                                            |  14%
  |                                                                            
  |==========                                                            |  15%
  |                                                                            
  |===========                                                           |  15%
  |                                                                            
  |===========                                                           |  16%
  |                                                                            
  |============                                                          |  16%
  |                                                                            
  |============                                                          |  17%
  |                                                                            
  |============                                                          |  18%
  |                                                                            
  |=============                                                         |  18%
  |                                                                            
  |=============                                                         |  19%
  |                                                                            
  |==============                                                        |  19%
  |                                                                            
  |==============                                                        |  20%
  |                                                                            
  |==============                                                        |  21%
  |                                                                            
  |===============                                                       |  21%
  |                                                                            
  |===============                                                       |  22%
  |                                                                            
  |================                                                      |  22%
  |                                                                            
  |================                                                      |  23%
  |                                                                            
  |=================                                                     |  24%
  |                                                                            
  |=================                                                     |  25%
  |                                                                            
  |==================                                                    |  25%
  |                                                                            
  |==================                                                    |  26%
  |                                                                            
  |===================                                                   |  27%
  |                                                                            
  |===================                                                   |  28%
  |                                                                            
  |====================                                                  |  28%
  |                                                                            
  |====================                                                  |  29%
  |                                                                            
  |=====================                                                 |  29%
  |                                                                            
  |=====================                                                 |  30%
  |                                                                            
  |=====================                                                 |  31%
  |                                                                            
  |======================                                                |  31%
  |                                                                            
  |======================                                                |  32%
  |                                                                            
  |=======================                                               |  32%
  |                                                                            
  |=======================                                               |  33%
  |                                                                            
  |=======================                                               |  34%
  |                                                                            
  |========================                                              |  34%
  |                                                                            
  |========================                                              |  35%
  |                                                                            
  |=========================                                             |  35%
  |                                                                            
  |=========================                                             |  36%
  |                                                                            
  |==========================                                            |  36%
  |                                                                            
  |==========================                                            |  37%
  |                                                                            
  |==========================                                            |  38%
  |                                                                            
  |===========================                                           |  38%
  |                                                                            
  |===========================                                           |  39%
  |                                                                            
  |============================                                          |  39%
  |                                                                            
  |============================                                          |  40%
  |                                                                            
  |============================                                          |  41%
  |                                                                            
  |=============================                                         |  41%
  |                                                                            
  |=============================                                         |  42%
  |                                                                            
  |==============================                                        |  42%
  |                                                                            
  |==============================                                        |  43%
  |                                                                            
  |===============================                                       |  44%
  |                                                                            
  |===============================                                       |  45%
  |                                                                            
  |================================                                      |  45%
  |                                                                            
  |================================                                      |  46%
  |                                                                            
  |=================================                                     |  46%
  |                                                                            
  |=================================                                     |  47%
  |                                                                            
  |=================================                                     |  48%
  |                                                                            
  |==================================                                    |  48%
  |                                                                            
  |==================================                                    |  49%
  |                                                                            
  |===================================                                   |  49%
  |                                                                            
  |===================================                                   |  50%
  |                                                                            
  |===================================                                   |  51%
  |                                                                            
  |====================================                                  |  51%
  |                                                                            
  |====================================                                  |  52%
  |                                                                            
  |=====================================                                 |  52%
  |                                                                            
  |=====================================                                 |  53%
  |                                                                            
  |=====================================                                 |  54%
  |                                                                            
  |======================================                                |  54%
  |                                                                            
  |======================================                                |  55%
  |                                                                            
  |=======================================                               |  55%
  |                                                                            
  |=======================================                               |  56%
  |                                                                            
  |========================================                              |  57%
  |                                                                            
  |========================================                              |  58%
  |                                                                            
  |=========================================                             |  58%
  |                                                                            
  |=========================================                             |  59%
  |                                                                            
  |==========================================                            |  59%
  |                                                                            
  |==========================================                            |  60%
  |                                                                            
  |==========================================                            |  61%
  |                                                                            
  |===========================================                           |  61%
  |                                                                            
  |===========================================                           |  62%
  |                                                                            
  |============================================                          |  62%
  |                                                                            
  |============================================                          |  63%
  |                                                                            
  |=============================================                         |  64%
  |                                                                            
  |=============================================                         |  65%
  |                                                                            
  |==============================================                        |  65%
  |                                                                            
  |==============================================                        |  66%
  |                                                                            
  |===============================================                       |  67%
  |                                                                            
  |===============================================                       |  68%
  |                                                                            
  |================================================                      |  68%
  |                                                                            
  |================================================                      |  69%
  |                                                                            
  |=================================================                     |  69%
  |                                                                            
  |=================================================                     |  70%
  |                                                                            
  |==================================================                    |  71%
  |                                                                            
  |==================================================                    |  72%
  |                                                                            
  |===================================================                   |  72%
  |                                                                            
  |===================================================                   |  73%
  |                                                                            
  |===================================================                   |  74%
  |                                                                            
  |====================================================                  |  74%
  |                                                                            
  |====================================================                  |  75%
  |                                                                            
  |=====================================================                 |  75%
  |                                                                            
  |=====================================================                 |  76%
  |                                                                            
  |======================================================                |  77%
  |                                                                            
  |======================================================                |  78%
  |                                                                            
  |=======================================================               |  78%
  |                                                                            
  |=======================================================               |  79%
  |                                                                            
  |========================================================              |  79%
  |                                                                            
  |========================================================              |  80%
  |                                                                            
  |========================================================              |  81%
  |                                                                            
  |=========================================================             |  81%
  |                                                                            
  |=========================================================             |  82%
  |                                                                            
  |==========================================================            |  82%
  |                                                                            
  |==========================================================            |  83%
  |                                                                            
  |==========================================================            |  84%
  |                                                                            
  |===========================================================           |  84%
  |                                                                            
  |===========================================================           |  85%
  |                                                                            
  |============================================================          |  85%
  |                                                                            
  |============================================================          |  86%
  |                                                                            
  |=============================================================         |  86%
  |                                                                            
  |=============================================================         |  87%
  |                                                                            
  |=============================================================         |  88%
  |                                                                            
  |==============================================================        |  88%
  |                                                                            
  |==============================================================        |  89%
  |                                                                            
  |===============================================================       |  89%
  |                                                                            
  |===============================================================       |  90%
  |                                                                            
  |===============================================================       |  91%
  |                                                                            
  |================================================================      |  91%
  |                                                                            
  |================================================================      |  92%
  |                                                                            
  |=================================================================     |  92%
  |                                                                            
  |=================================================================     |  93%
  |                                                                            
  |==================================================================    |  94%
  |                                                                            
  |==================================================================    |  95%
  |                                                                            
  |===================================================================   |  95%
  |                                                                            
  |===================================================================   |  96%
  |                                                                            
  |====================================================================  |  97%
  |                                                                            
  |====================================================================  |  98%
  |                                                                            
  |===================================================================== |  98%
  |                                                                            
  |===================================================================== |  99%
  |                                                                            
  |======================================================================|  99%
  |                                                                            
  |======================================================================| 100%
#rename variables and filter missing cases
educ14 <- educ14%>%
  mutate(peduc14 = peduc14E, 
         peduc14_er = peduc14M/1.645,
         peduc14_cv =100* (peduc14_er/peduc14),
         male = maleE,
         female = 100 - male,
         hispanic = hispanicE,
         nh_white = nh_whiteE,
         nh_black = nh_blackE) %>%
  filter(complete.cases(peduc14), is.finite(peduc14_cv)==T)%>%
  select(GEOID, NAME, peduc14, peduc14_er,peduc14_cv, male, female, hispanic,nh_white,nh_black)

head(educ14)
educ19<-get_acs(geography = 'county',
                state ='TX',
                year = 2019,
                variables = c(peduc19 = "DP02_0067P",
                              male = "DP05_0002P",
                              hispanic = "DP05_0071P",
                              nh_white = "DP05_0077P",
                              nh_black = "DP05_0078P"), 
              geometry = T, output = "wide")
## Getting data from the 2015-2019 5-year ACS
## Downloading feature geometry from the Census website.  To cache shapefiles for use in future sessions, set `options(tigris_use_cache = TRUE)`.
## Using the ACS Data Profile
## 
  |                                                                            
  |                                                                      |   0%
  |                                                                            
  |                                                                      |   1%
  |                                                                            
  |=                                                                     |   1%
  |                                                                            
  |=                                                                     |   2%
  |                                                                            
  |==                                                                    |   2%
  |                                                                            
  |==                                                                    |   3%
  |                                                                            
  |==                                                                    |   4%
  |                                                                            
  |===                                                                   |   4%
  |                                                                            
  |===                                                                   |   5%
  |                                                                            
  |====                                                                  |   5%
  |                                                                            
  |====                                                                  |   6%
  |                                                                            
  |=====                                                                 |   7%
  |                                                                            
  |=====                                                                 |   8%
  |                                                                            
  |======                                                                |   8%
  |                                                                            
  |======                                                                |   9%
  |                                                                            
  |=======                                                               |   9%
  |                                                                            
  |=======                                                               |  10%
  |                                                                            
  |=======                                                               |  11%
  |                                                                            
  |========                                                              |  11%
  |                                                                            
  |========                                                              |  12%
  |                                                                            
  |=========                                                             |  12%
  |                                                                            
  |=========                                                             |  13%
  |                                                                            
  |=========                                                             |  14%
  |                                                                            
  |==========                                                            |  14%
  |                                                                            
  |==========                                                            |  15%
  |                                                                            
  |===========                                                           |  15%
  |                                                                            
  |===========                                                           |  16%
  |                                                                            
  |============                                                          |  16%
  |                                                                            
  |============                                                          |  17%
  |                                                                            
  |============                                                          |  18%
  |                                                                            
  |=============                                                         |  18%
  |                                                                            
  |=============                                                         |  19%
  |                                                                            
  |==============                                                        |  19%
  |                                                                            
  |==============                                                        |  20%
  |                                                                            
  |==============                                                        |  21%
  |                                                                            
  |===============                                                       |  21%
  |                                                                            
  |===============                                                       |  22%
  |                                                                            
  |================                                                      |  22%
  |                                                                            
  |================                                                      |  23%
  |                                                                            
  |=================                                                     |  24%
  |                                                                            
  |=================                                                     |  25%
  |                                                                            
  |==================                                                    |  25%
  |                                                                            
  |==================                                                    |  26%
  |                                                                            
  |===================                                                   |  26%
  |                                                                            
  |===================                                                   |  27%
  |                                                                            
  |===================                                                   |  28%
  |                                                                            
  |====================                                                  |  28%
  |                                                                            
  |====================                                                  |  29%
  |                                                                            
  |=====================                                                 |  29%
  |                                                                            
  |=====================                                                 |  30%
  |                                                                            
  |=====================                                                 |  31%
  |                                                                            
  |======================                                                |  31%
  |                                                                            
  |======================                                                |  32%
  |                                                                            
  |=======================                                               |  32%
  |                                                                            
  |=======================                                               |  33%
  |                                                                            
  |=======================                                               |  34%
  |                                                                            
  |========================                                              |  34%
  |                                                                            
  |========================                                              |  35%
  |                                                                            
  |=========================                                             |  35%
  |                                                                            
  |=========================                                             |  36%
  |                                                                            
  |==========================                                            |  37%
  |                                                                            
  |==========================                                            |  38%
  |                                                                            
  |===========================                                           |  38%
  |                                                                            
  |===========================                                           |  39%
  |                                                                            
  |============================                                          |  39%
  |                                                                            
  |============================                                          |  40%
  |                                                                            
  |============================                                          |  41%
  |                                                                            
  |=============================                                         |  41%
  |                                                                            
  |=============================                                         |  42%
  |                                                                            
  |==============================                                        |  42%
  |                                                                            
  |==============================                                        |  43%
  |                                                                            
  |==============================                                        |  44%
  |                                                                            
  |===============================                                       |  44%
  |                                                                            
  |===============================                                       |  45%
  |                                                                            
  |================================                                      |  45%
  |                                                                            
  |================================                                      |  46%
  |                                                                            
  |=================================                                     |  47%
  |                                                                            
  |=================================                                     |  48%
  |                                                                            
  |==================================                                    |  48%
  |                                                                            
  |==================================                                    |  49%
  |                                                                            
  |===================================                                   |  49%
  |                                                                            
  |===================================                                   |  50%
  |                                                                            
  |===================================                                   |  51%
  |                                                                            
  |====================================                                  |  51%
  |                                                                            
  |====================================                                  |  52%
  |                                                                            
  |=====================================                                 |  52%
  |                                                                            
  |=====================================                                 |  53%
  |                                                                            
  |======================================                                |  54%
  |                                                                            
  |======================================                                |  55%
  |                                                                            
  |=======================================                               |  55%
  |                                                                            
  |=======================================                               |  56%
  |                                                                            
  |========================================                              |  57%
  |                                                                            
  |========================================                              |  58%
  |                                                                            
  |=========================================                             |  58%
  |                                                                            
  |=========================================                             |  59%
  |                                                                            
  |==========================================                            |  59%
  |                                                                            
  |==========================================                            |  60%
  |                                                                            
  |==========================================                            |  61%
  |                                                                            
  |===========================================                           |  61%
  |                                                                            
  |===========================================                           |  62%
  |                                                                            
  |============================================                          |  62%
  |                                                                            
  |============================================                          |  63%
  |                                                                            
  |=============================================                         |  64%
  |                                                                            
  |=============================================                         |  65%
  |                                                                            
  |==============================================                        |  65%
  |                                                                            
  |==============================================                        |  66%
  |                                                                            
  |===============================================                       |  66%
  |                                                                            
  |===============================================                       |  67%
  |                                                                            
  |===============================================                       |  68%
  |                                                                            
  |================================================                      |  68%
  |                                                                            
  |================================================                      |  69%
  |                                                                            
  |=================================================                     |  69%
  |                                                                            
  |=================================================                     |  70%
  |                                                                            
  |=================================================                     |  71%
  |                                                                            
  |==================================================                    |  71%
  |                                                                            
  |==================================================                    |  72%
  |                                                                            
  |===================================================                   |  72%
  |                                                                            
  |===================================================                   |  73%
  |                                                                            
  |====================================================                  |  74%
  |                                                                            
  |====================================================                  |  75%
  |                                                                            
  |=====================================================                 |  75%
  |                                                                            
  |=====================================================                 |  76%
  |                                                                            
  |======================================================                |  77%
  |                                                                            
  |======================================================                |  78%
  |                                                                            
  |=======================================================               |  78%
  |                                                                            
  |=======================================================               |  79%
  |                                                                            
  |========================================================              |  79%
  |                                                                            
  |========================================================              |  80%
  |                                                                            
  |========================================================              |  81%
  |                                                                            
  |=========================================================             |  81%
  |                                                                            
  |=========================================================             |  82%
  |                                                                            
  |==========================================================            |  82%
  |                                                                            
  |==========================================================            |  83%
  |                                                                            
  |===========================================================           |  84%
  |                                                                            
  |===========================================================           |  85%
  |                                                                            
  |============================================================          |  85%
  |                                                                            
  |============================================================          |  86%
  |                                                                            
  |=============================================================         |  86%
  |                                                                            
  |=============================================================         |  87%
  |                                                                            
  |=============================================================         |  88%
  |                                                                            
  |==============================================================        |  88%
  |                                                                            
  |==============================================================        |  89%
  |                                                                            
  |===============================================================       |  89%
  |                                                                            
  |===============================================================       |  90%
  |                                                                            
  |===============================================================       |  91%
  |                                                                            
  |================================================================      |  91%
  |                                                                            
  |================================================================      |  92%
  |                                                                            
  |=================================================================     |  92%
  |                                                                            
  |=================================================================     |  93%
  |                                                                            
  |=================================================================     |  94%
  |                                                                            
  |==================================================================    |  94%
  |                                                                            
  |==================================================================    |  95%
  |                                                                            
  |===================================================================   |  95%
  |                                                                            
  |===================================================================   |  96%
  |                                                                            
  |====================================================================  |  96%
  |                                                                            
  |====================================================================  |  97%
  |                                                                            
  |====================================================================  |  98%
  |                                                                            
  |===================================================================== |  98%
  |                                                                            
  |===================================================================== |  99%
  |                                                                            
  |======================================================================|  99%
  |                                                                            
  |======================================================================| 100%
#rename variables and filter missing cases
educ19 <- educ19%>%
  mutate(peduc19 = peduc19E, 
         peduc19_er = peduc19M/1.645,
         peduc19_cv =100* (peduc19_er/peduc19),
         male = maleE,
         female = 100 - male,
         hispanic = hispanicE,
         nh_white = nh_whiteE,
         nh_black = nh_blackE) %>%
  filter(complete.cases(peduc19), is.finite(peduc19_cv)==T)%>%
  select(GEOID, NAME, peduc19, peduc19_er,peduc19_cv, male, female, hispanic,nh_white,nh_black)

head(educ19)
counties <- educ19 %>% 
  
  filter(NAME =='Bexar County, Texas'| NAME == 'Dallas County, Texas'| NAME == 'Harris County, Texas'| NAME == 'Tarrant County, Texas'| NAME == 'Travis County, Texas')

counties$NAME <- str_sub(counties$NAME, end=-14)

cts <- educ14 %>% 
  
  filter(NAME =='Bexar County, Texas'| NAME == 'Dallas County, Texas'| NAME == 'Harris County, Texas'| NAME == 'Tarrant County, Texas'| NAME == 'Travis County, Texas')

cts$NAME <- str_sub(cts$NAME, end=-14)
p1<-tm_shape(educ14)+
  tm_polygons(c("peduc14"),
              title=c("% Population with HS degree or higher"),
              palette="Reds",
              style="quantile",
              n=5)+
  tm_shape(counties)+
  tm_dots(size = 0.3, col = 'blue')+
  #tm_format("World", legend.outside=T, title.size =4)+
  tm_scale_bar(width = 0.1)+
  tm_layout(title="Population percent with HS degree or higher 
ACS 2014 : 5 year estimates",
            title.size =1.5, 
            legend.frame = TRUE,
            title.position = c('right', 'top'))+
  
  tm_compass()+
  tm_format("World",
            legend.position =  c("left", "bottom"),
            main.title.position =c("center"))


p2<-tm_shape(educ14)+
  tm_polygons(c("peduc14_cv"),
              title=c("CV % pop with HS degree or higher
"),
              palette="Reds",
              style="quantile",
              n=5)+
   tm_shape(counties)+
  tm_dots(size = 0.3, col = 'blue')+
  #tm_format("World", title="San Antonio Poverty Rate CV", legend.outside=T)+
  tm_layout(title="CV - Population percent with HS degree or higher
ACS 2014 : 5 year estimates",
            title.size =1.5,
            legend.frame = TRUE,
            title.position = c('right', 'top'))+
  tm_scale_bar(width = 0.1)+
  tm_compass()+
  tm_format("World",
            legend.position =  c("left", "bottom"),
            main.title.position =c("center"))

map14<-tmap_arrange(p1, p2)
map14

bar1 <- ggplot(cts)+
geom_col(aes(NAME,peduc14), fill = 'red')+
  labs(x = "Counties", y = "Percent population with HS degree or higher", title = "Percent of population with HS degree or higher across Texas counties", subtitle = "ACS 2010-2014")
bar1

p3<-tm_shape(educ19)+
  tm_polygons(c("peduc19"),
              title=c("% Population with HS degree or higher"),
              palette="Blues",
              style="quantile",
              n=5)+
  tm_shape(counties)+
  tm_dots(size = 0.3, col = 'blue')+
  #tm_format("World", legend.outside=T, title.size =4)+
  tm_scale_bar(width = 0.1)+
  tm_layout(title="Population percent with HS degree or higher 
ACS 2019 : 5 year estimates",
            title.size =1.5, 
            legend.frame = TRUE,
            title.position = c('right', 'top'))+
  
  tm_compass()+
  tm_format("World",
            legend.position =  c("left", "bottom"),
            main.title.position =c("center"))


p4<-tm_shape(educ19)+
  tm_polygons(c("peduc19_cv"),
              title=c("CV % pop with HS degree or higher"),
              palette="Blues",
              style="quantile",
              n=5)+
   tm_shape(counties)+
  tm_dots(size = 0.3, col = 'blue')+
  #tm_format("World", title="San Antonio Poverty Rate CV", legend.outside=T)+
  tm_layout(title="CV - Population percent with HS degree or higher
ACS 2019 : 5 year estimates",
            title.size =1.5,
            legend.frame = TRUE,
            title.position = c('right', 'top'))+
  tm_scale_bar(width = 0.1)+
  tm_compass()+
  tm_format("World",
            legend.position =  c("left", "bottom"),
            main.title.position =c("center"))

map19<- tmap_arrange(p3, p4)
map19

bar2<- ggplot(counties)+
geom_col(aes(NAME,peduc19), fill = 'skyblue')+
  labs(x = "Counties", y = "Percent population with HS degree or higher", title = "Percent of population with HS degree or higher across Texas counties", subtitle = "ACS 2015-2019")
bar2

acstest<-function(names,geoid, est1, err1, est2, err2, alpha, yr1, yr2, span){
  
  se1<-err1/qnorm(.90)
  se2<-err2/qnorm(.90)
  yrs1<-seq(yr1, to=yr1-span)
  yrs2<-seq(yr2, to=yr2-span)

  C<-mean(yrs2%in%yrs1)
  diff<- (est1-est2)
  test<-(est1-est2) / (sqrt(1-C)*sqrt(se1^2+se2^2))
  crit<-qnorm(1-alpha/2)
  pval<-1-pnorm(abs(test))
  result<-NULL
  result[pval > alpha]<-"No Significant Change "
  result[pval < alpha & test < 0]<- "Significant Increase"
  result[pval < alpha & test > 0]<-"Significant Decrease" 
  
  data.frame(name=names,geoid=geoid, est1=est1, est2=est2, se1=se1, se2=se2,difference=diff, test=test, result=result, pval=pval)
}
#merge the two years worth of data
st_geometry(educ19)<-NULL #strip the geometry from the 2019 data

mdat<-left_join(educ14, educ19, by=c("GEOID"="GEOID"))

head(mdat)
diff1419 <- acstest(names = mdat$GEOID,
                    geoid = mdat$GEOID,
                    est1 = mdat$peduc14,
                    est2 = mdat$peduc19,
                    err1 = mdat$peduc14_er,
                    err2 = mdat$peduc19_er,
                    alpha = .1,
                    yr1 = 2014, yr2=2019,
                    span = 5)
mdat$signif<- significance(est1=mdat$peduc14,
                           est2=mdat$peduc19,
                           moe1=mdat$peduc14_er,
                           moe2 = mdat$peduc19_er,
                           clevel = .9)
table(mdat$signif) #
## 
## FALSE  TRUE 
##   105   149
acs_merge<-left_join(mdat, diff1419, by=c("GEOID"="geoid"))

tmap_mode("plot")
## tmap mode set to plotting
p5<-tm_shape(acs_merge)+
  tm_polygons(c("peduc14"),
              title=c("% in Poverty  2010"),
              palette="Blues",
              style="quantile",
              n=5)+
  tm_shape(counties)+
  tm_dots(size = 0.3, col = 'red')+
  #tm_format("World", legend.outside=T, title.size =4)+
  tm_scale_bar(width = 0.1)+
  tm_layout(title="San Antonio Poverty Rate Estimates 2010",
            title.size =1.5,
            legend.frame = TRUE,
            title.position = c('right', 'top'))+
  tm_compass()+
  tm_format("World",
            legend.position =  c("LEFT", "BOTTOM"),
            main.title.position =c("TOP","CENTERr"))

p6<-tm_shape(acs_merge)+
  tm_polygons(c("peduc19"),
              title=c("% in Poverty 2019"),
              palette="Blues", 
              style="quantile",
              n=5)+
  tm_shape(counties)+
  tm_dots(size = 0.3, col = 'red')+
  #tm_format("World", title="San Antonio Poverty Rate CV", legend.outside=T)+
  tm_layout(title="San Antonio Poverty Rate Estimate 2019",
            title.size =1.5,
            legend.frame = TRUE,
            title.position = c('right', 'top'))+
  tm_scale_bar(width = 0.1)+
  tm_compass()+
  tm_format("World",
            legend.position =  c("LEFT", "BOTTOM"),
            main.title.position =c("TOP","CENTER"))


p7  <- tm_shape(acs_merge)+
  tm_polygons(c("result"),
              title=c("Change in % population with HS degree or higher"),
              palette = "Set2")+
  tm_shape(counties)+
  tm_dots(size = 0.3, col = 'blue')+
  #tm_format("World", title="San Antonio Poverty Rate CV", legend.outside=T)+
  tm_layout(main.title=
"Change in Percentage of Population with HS degree or higher across Texas counties 
ACS 2014 and ACS 2019 - 5 year estimates", 
            main.title.size =0.7, 
            legend.frame = TRUE,
            main.title.position = c('center'))+
  tm_scale_bar(width = 0.1)+
  tm_compass()+
  tm_format("World",
            legend.position =  c("LEFT", "BOTTOM"),
            main.title.position =c("TOP","CENTERr"))

  

mapdiff<- p7
mapdiff

LS0tDQp0aXRsZTogIkdJUyBCbG9nIFBvc3QgMyINCmF1dGhvcjogIkp5b3RpIE5lcGFsLCBNU1ciDQpkYXRlOiAiYHIgZm9ybWF0KFN5cy50aW1lKCksICclZCAlQiwgJVknKWAiDQpvdXRwdXQ6DQogIGh0bWxfZG9jdW1lbnQ6DQogICAgZGZfcHJpbnQ6IHBhZ2VkDQogICAgZmlnX2hlaWdodDogNw0KICAgIGZpZ193aWR0aDogNw0KICAgIHRvYzogeWVzDQogICAgdG9jX2Zsb2F0OiB5ZXMNCiAgICBjb2RlX2Rvd25sb2FkOiB5ZXMNCiAgd29yZF9kb2N1bWVudDoNCiAgICB0b2M6IHllcw0KLS0tDQoNCg0KYGBge3IsIG1lc3NhZ2U9RkFMU0UsIHF1aWV0bHkgPVQsIGluY2x1ZGU9Rn0NCmxpYnJhcnkoc3VydmV5LCBxdWlldGx5ID0gVCkNCmxpYnJhcnkoZHBseXIsIHF1aWV0bHkgPSBUKQ0KbGlicmFyeShjYXIsIHF1aWV0bHkgPSBUKQ0KbGlicmFyeShnZ3Bsb3QyLCBxdWlldGx5ID0gVCkNCmxpYnJhcnkodGlncmlzLCBxdWlldGx5ID0gVCkNCmxpYnJhcnkoY2xhc3NJbnQsIHF1aWV0bHkgPSBUKQ0KbGlicmFyeShzcnZ5ciwgcXVpZXRseSA9IFQpDQpsaWJyYXJ5KHJlbGRpc3QsIHF1aWV0bHkgPSBUKQ0KbGlicmFyeShzZiwgcXVpZXRseSA9IFQpDQpsaWJyYXJ5KG1hcHZpZXcsIHF1aWV0bHkgPSBUKQ0KbGlicmFyeShqYW5pdG9yLCBxdWlldGx5ID0gVCkNCmxpYnJhcnkodGlkeXZlcnNlLCBxdWlldGx5ID0gVCkNCmxpYnJhcnkodG1hcCwgcXVpZXRseSA9IFQpDQpsaWJyYXJ5KHBhdGNod29yaywgcXVpZXRseSA9IFQpDQpsaWJyYXJ5KHRtYXB0b29scywgcXVpZXRseSA9IFQpDQpsaWJyYXJ5KGdnc24sIHF1aWV0bHkgPSBUKQ0KbGlicmFyeSh0aWR5Y2Vuc3VzLCBxdWlldGx5ID0gVCkNCmxpYnJhcnkoc3RyaW5ncikNCg0KYGBgDQoNCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFKQ0KYGBgDQoNCiMjIyBSZWFkIERhdGENCmBgYHtyfQ0KDQoNCnYxOV9Qcm9maWxlIDwtIGxvYWRfdmFyaWFibGVzKDIwMTksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWNzNS9wcm9maWxlIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlID0gVFJVRSkNCg0KdjE0X1Byb2ZpbGUgPC0gbG9hZF92YXJpYWJsZXMoMjAxNCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhY3M1L3Byb2ZpbGUiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGUgPSBUUlVFKSNkZW1vZ3JhcGhpYyANCg0KI1NlYXJjaCBmb3IgdmFyaWFibGVzIGJ5IHVzaW5nIGdyZXAoKQ0KDQoNCnYxOV9Qcm9maWxlW2dyZXAoeCA9IHYxOV9Qcm9maWxlJGxhYmVsLA0KICAgICAgICAgICAgICAgICAiRWR1Y2F0aW9uYWwgQXR0YWlubWVudCIsDQogICAgICAgICAgICAgICAgIGlnbm9yZS5jYXNlID0gVFJVRSksDQogICAgICAgICAgICBjKCJuYW1lIiwgImxhYmVsIildDQoNCnYxOV9Qcm9maWxlW2dyZXAoeCA9IHYxOV9Qcm9maWxlJGxhYmVsLA0KICAgICAgICAgICAgICAgICAiSGlzcGFuaWMgYW5kIFJhY2UiLA0KICAgICAgICAgICAgICAgICBpZ25vcmUuY2FzZSA9IFRSVUUpLA0KICAgICAgICAgICAgYygibmFtZSIsICJsYWJlbCIpXQ0KdjE5X1Byb2ZpbGVbZ3JlcCh4ID0gdjE5X1Byb2ZpbGUkbGFiZWwsDQogICAgICAgICAgICAgICAgICJTZXggYW5kIEFnZSIsDQogICAgICAgICAgICAgICAgIGlnbm9yZS5jYXNlID0gVFJVRSksDQogICAgICAgICAgICBjKCJuYW1lIiwgImxhYmVsIildDQp2MTRfUHJvZmlsZVtncmVwKHggPSB2MTRfUHJvZmlsZSRsYWJlbCwNCiAgICAgICAgICAgICAgICAgIkVkdWNhdGlvbmFsIEF0dGFpbm1lbnQiLA0KICAgICAgICAgICAgICAgICBpZ25vcmUuY2FzZSA9IFRSVUUpLA0KICAgICAgICAgICAgYygibmFtZSIsICJsYWJlbCIpXQ0KDQp2MTRfUHJvZmlsZVtncmVwKHggPSB2MTRfUHJvZmlsZSRsYWJlbCwNCiAgICAgICAgICAgICAgICAgIkhpc3BhbmljIGFuZCBSYWNlIiwNCiAgICAgICAgICAgICAgICAgaWdub3JlLmNhc2UgPSBUUlVFKSwNCiAgICAgICAgICAgIGMoIm5hbWUiLCAibGFiZWwiKV0NCnYxNF9Qcm9maWxlW2dyZXAoeCA9IHYxNF9Qcm9maWxlJGxhYmVsLA0KICAgICAgICAgICAgICAgICAiU2V4IGFuZCBBZ2UiLA0KICAgICAgICAgICAgICAgICBpZ25vcmUuY2FzZSA9IFRSVUUpLA0KICAgICAgICAgICAgYygibmFtZSIsICJsYWJlbCIpXQ0KDQoNCmBgYA0KDQoNCmBgYHtyfQ0KZWR1YzE0PC1nZXRfYWNzKGdlb2dyYXBoeSA9ICdjb3VudHknLA0KICAgICAgICAgICAgICAgIHN0YXRlID0nVFgnLA0KICAgICAgICAgICAgICAgIHllYXIgPSAyMDE0LA0KICAgICAgICAgICAgICAgIHZhcmlhYmxlcyA9IGMocGVkdWMxNCA9ICJEUDAyXzAwNjZQIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hbGUgPSAiRFAwNV8wMDAyUCIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaXNwYW5pYyA9ICJEUDA1XzAwNjZQIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5oX3doaXRlID0gIkRQMDVfMDA3MlAiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmhfYmxhY2sgPSAiRFAwNV8wMDczUCIpLCANCiAgICAgICAgICAgICAgZ2VvbWV0cnkgPSBULCBvdXRwdXQgPSAid2lkZSIpDQoNCg0KI3JlbmFtZSB2YXJpYWJsZXMgYW5kIGZpbHRlciBtaXNzaW5nIGNhc2VzDQplZHVjMTQgPC0gZWR1YzE0JT4lDQogIG11dGF0ZShwZWR1YzE0ID0gcGVkdWMxNEUsIA0KICAgICAgICAgcGVkdWMxNF9lciA9IHBlZHVjMTRNLzEuNjQ1LA0KICAgICAgICAgcGVkdWMxNF9jdiA9MTAwKiAocGVkdWMxNF9lci9wZWR1YzE0KSwNCiAgICAgICAgIG1hbGUgPSBtYWxlRSwNCiAgICAgICAgIGZlbWFsZSA9IDEwMCAtIG1hbGUsDQogICAgICAgICBoaXNwYW5pYyA9IGhpc3BhbmljRSwNCiAgICAgICAgIG5oX3doaXRlID0gbmhfd2hpdGVFLA0KICAgICAgICAgbmhfYmxhY2sgPSBuaF9ibGFja0UpICU+JQ0KICBmaWx0ZXIoY29tcGxldGUuY2FzZXMocGVkdWMxNCksIGlzLmZpbml0ZShwZWR1YzE0X2N2KT09VCklPiUNCiAgc2VsZWN0KEdFT0lELCBOQU1FLCBwZWR1YzE0LCBwZWR1YzE0X2VyLHBlZHVjMTRfY3YsIG1hbGUsIGZlbWFsZSwgaGlzcGFuaWMsbmhfd2hpdGUsbmhfYmxhY2spDQoNCmhlYWQoZWR1YzE0KQ0KDQoNCg0KZWR1YzE5PC1nZXRfYWNzKGdlb2dyYXBoeSA9ICdjb3VudHknLA0KICAgICAgICAgICAgICAgIHN0YXRlID0nVFgnLA0KICAgICAgICAgICAgICAgIHllYXIgPSAyMDE5LA0KICAgICAgICAgICAgICAgIHZhcmlhYmxlcyA9IGMocGVkdWMxOSA9ICJEUDAyXzAwNjdQIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hbGUgPSAiRFAwNV8wMDAyUCIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaXNwYW5pYyA9ICJEUDA1XzAwNzFQIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5oX3doaXRlID0gIkRQMDVfMDA3N1AiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmhfYmxhY2sgPSAiRFAwNV8wMDc4UCIpLCANCiAgICAgICAgICAgICAgZ2VvbWV0cnkgPSBULCBvdXRwdXQgPSAid2lkZSIpDQoNCg0KI3JlbmFtZSB2YXJpYWJsZXMgYW5kIGZpbHRlciBtaXNzaW5nIGNhc2VzDQplZHVjMTkgPC0gZWR1YzE5JT4lDQogIG11dGF0ZShwZWR1YzE5ID0gcGVkdWMxOUUsIA0KICAgICAgICAgcGVkdWMxOV9lciA9IHBlZHVjMTlNLzEuNjQ1LA0KICAgICAgICAgcGVkdWMxOV9jdiA9MTAwKiAocGVkdWMxOV9lci9wZWR1YzE5KSwNCiAgICAgICAgIG1hbGUgPSBtYWxlRSwNCiAgICAgICAgIGZlbWFsZSA9IDEwMCAtIG1hbGUsDQogICAgICAgICBoaXNwYW5pYyA9IGhpc3BhbmljRSwNCiAgICAgICAgIG5oX3doaXRlID0gbmhfd2hpdGVFLA0KICAgICAgICAgbmhfYmxhY2sgPSBuaF9ibGFja0UpICU+JQ0KICBmaWx0ZXIoY29tcGxldGUuY2FzZXMocGVkdWMxOSksIGlzLmZpbml0ZShwZWR1YzE5X2N2KT09VCklPiUNCiAgc2VsZWN0KEdFT0lELCBOQU1FLCBwZWR1YzE5LCBwZWR1YzE5X2VyLHBlZHVjMTlfY3YsIG1hbGUsIGZlbWFsZSwgaGlzcGFuaWMsbmhfd2hpdGUsbmhfYmxhY2spDQoNCmhlYWQoZWR1YzE5KQ0KDQpgYGANCg0KDQoNCmBgYHtyfQ0KDQpjb3VudGllcyA8LSBlZHVjMTkgJT4lIA0KICANCiAgZmlsdGVyKE5BTUUgPT0nQmV4YXIgQ291bnR5LCBUZXhhcyd8IE5BTUUgPT0gJ0RhbGxhcyBDb3VudHksIFRleGFzJ3wgTkFNRSA9PSAnSGFycmlzIENvdW50eSwgVGV4YXMnfCBOQU1FID09ICdUYXJyYW50IENvdW50eSwgVGV4YXMnfCBOQU1FID09ICdUcmF2aXMgQ291bnR5LCBUZXhhcycpDQoNCmNvdW50aWVzJE5BTUUgPC0gc3RyX3N1Yihjb3VudGllcyROQU1FLCBlbmQ9LTE0KQ0KDQpjdHMgPC0gZWR1YzE0ICU+JSANCiAgDQogIGZpbHRlcihOQU1FID09J0JleGFyIENvdW50eSwgVGV4YXMnfCBOQU1FID09ICdEYWxsYXMgQ291bnR5LCBUZXhhcyd8IE5BTUUgPT0gJ0hhcnJpcyBDb3VudHksIFRleGFzJ3wgTkFNRSA9PSAnVGFycmFudCBDb3VudHksIFRleGFzJ3wgTkFNRSA9PSAnVHJhdmlzIENvdW50eSwgVGV4YXMnKQ0KDQpjdHMkTkFNRSA8LSBzdHJfc3ViKGN0cyROQU1FLCBlbmQ9LTE0KQ0KDQpgYGANCg0KDQpgYGB7cn0NCnAxPC10bV9zaGFwZShlZHVjMTQpKw0KICB0bV9wb2x5Z29ucyhjKCJwZWR1YzE0IiksDQogICAgICAgICAgICAgIHRpdGxlPWMoIiUgUG9wdWxhdGlvbiB3aXRoIEhTIGRlZ3JlZSBvciBoaWdoZXIiKSwNCiAgICAgICAgICAgICAgcGFsZXR0ZT0iUmVkcyIsDQogICAgICAgICAgICAgIHN0eWxlPSJxdWFudGlsZSIsDQogICAgICAgICAgICAgIG49NSkrDQogIHRtX3NoYXBlKGNvdW50aWVzKSsNCiAgdG1fZG90cyhzaXplID0gMC4zLCBjb2wgPSAnYmx1ZScpKw0KICAjdG1fZm9ybWF0KCJXb3JsZCIsIGxlZ2VuZC5vdXRzaWRlPVQsIHRpdGxlLnNpemUgPTQpKw0KICB0bV9zY2FsZV9iYXIod2lkdGggPSAwLjEpKw0KICB0bV9sYXlvdXQodGl0bGU9IlBvcHVsYXRpb24gcGVyY2VudCB3aXRoIEhTIGRlZ3JlZSBvciBoaWdoZXIgDQpBQ1MgMjAxNCA6IDUgeWVhciBlc3RpbWF0ZXMiLA0KICAgICAgICAgICAgdGl0bGUuc2l6ZSA9MS41LCANCiAgICAgICAgICAgIGxlZ2VuZC5mcmFtZSA9IFRSVUUsDQogICAgICAgICAgICB0aXRsZS5wb3NpdGlvbiA9IGMoJ3JpZ2h0JywgJ3RvcCcpKSsNCiAgDQogIHRtX2NvbXBhc3MoKSsNCiAgdG1fZm9ybWF0KCJXb3JsZCIsDQogICAgICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAgYygibGVmdCIsICJib3R0b20iKSwNCiAgICAgICAgICAgIG1haW4udGl0bGUucG9zaXRpb24gPWMoImNlbnRlciIpKQ0KDQoNCnAyPC10bV9zaGFwZShlZHVjMTQpKw0KICB0bV9wb2x5Z29ucyhjKCJwZWR1YzE0X2N2IiksDQogICAgICAgICAgICAgIHRpdGxlPWMoIkNWICUgcG9wIHdpdGggSFMgZGVncmVlIG9yIGhpZ2hlcg0KIiksDQogICAgICAgICAgICAgIHBhbGV0dGU9IlJlZHMiLA0KICAgICAgICAgICAgICBzdHlsZT0icXVhbnRpbGUiLA0KICAgICAgICAgICAgICBuPTUpKw0KICAgdG1fc2hhcGUoY291bnRpZXMpKw0KICB0bV9kb3RzKHNpemUgPSAwLjMsIGNvbCA9ICdibHVlJykrDQogICN0bV9mb3JtYXQoIldvcmxkIiwgdGl0bGU9IlNhbiBBbnRvbmlvIFBvdmVydHkgUmF0ZSBDViIsIGxlZ2VuZC5vdXRzaWRlPVQpKw0KICB0bV9sYXlvdXQodGl0bGU9IkNWIC0gUG9wdWxhdGlvbiBwZXJjZW50IHdpdGggSFMgZGVncmVlIG9yIGhpZ2hlcg0KQUNTIDIwMTQgOiA1IHllYXIgZXN0aW1hdGVzIiwNCiAgICAgICAgICAgIHRpdGxlLnNpemUgPTEuNSwNCiAgICAgICAgICAgIGxlZ2VuZC5mcmFtZSA9IFRSVUUsDQogICAgICAgICAgICB0aXRsZS5wb3NpdGlvbiA9IGMoJ3JpZ2h0JywgJ3RvcCcpKSsNCiAgdG1fc2NhbGVfYmFyKHdpZHRoID0gMC4xKSsNCiAgdG1fY29tcGFzcygpKw0KICB0bV9mb3JtYXQoIldvcmxkIiwNCiAgICAgICAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICBjKCJsZWZ0IiwgImJvdHRvbSIpLA0KICAgICAgICAgICAgbWFpbi50aXRsZS5wb3NpdGlvbiA9YygiY2VudGVyIikpDQoNCm1hcDE0PC10bWFwX2FycmFuZ2UocDEsIHAyKQ0KbWFwMTQNCg0KYGBgDQpgYGB7cn0NCmJhcjEgPC0gZ2dwbG90KGN0cykrDQpnZW9tX2NvbChhZXMoTkFNRSxwZWR1YzE0KSwgZmlsbCA9ICdyZWQnKSsNCiAgbGFicyh4ID0gIkNvdW50aWVzIiwgeSA9ICJQZXJjZW50IHBvcHVsYXRpb24gd2l0aCBIUyBkZWdyZWUgb3IgaGlnaGVyIiwgdGl0bGUgPSAiUGVyY2VudCBvZiBwb3B1bGF0aW9uIHdpdGggSFMgZGVncmVlIG9yIGhpZ2hlciBhY3Jvc3MgVGV4YXMgY291bnRpZXMiLCBzdWJ0aXRsZSA9ICJBQ1MgMjAxMC0yMDE0IikNCmJhcjENCmBgYA0KDQoNCg0KYGBge3J9DQoNCnAzPC10bV9zaGFwZShlZHVjMTkpKw0KICB0bV9wb2x5Z29ucyhjKCJwZWR1YzE5IiksDQogICAgICAgICAgICAgIHRpdGxlPWMoIiUgUG9wdWxhdGlvbiB3aXRoIEhTIGRlZ3JlZSBvciBoaWdoZXIiKSwNCiAgICAgICAgICAgICAgcGFsZXR0ZT0iQmx1ZXMiLA0KICAgICAgICAgICAgICBzdHlsZT0icXVhbnRpbGUiLA0KICAgICAgICAgICAgICBuPTUpKw0KICB0bV9zaGFwZShjb3VudGllcykrDQogIHRtX2RvdHMoc2l6ZSA9IDAuMywgY29sID0gJ2JsdWUnKSsNCiAgI3RtX2Zvcm1hdCgiV29ybGQiLCBsZWdlbmQub3V0c2lkZT1ULCB0aXRsZS5zaXplID00KSsNCiAgdG1fc2NhbGVfYmFyKHdpZHRoID0gMC4xKSsNCiAgdG1fbGF5b3V0KHRpdGxlPSJQb3B1bGF0aW9uIHBlcmNlbnQgd2l0aCBIUyBkZWdyZWUgb3IgaGlnaGVyIA0KQUNTIDIwMTkgOiA1IHllYXIgZXN0aW1hdGVzIiwNCiAgICAgICAgICAgIHRpdGxlLnNpemUgPTEuNSwgDQogICAgICAgICAgICBsZWdlbmQuZnJhbWUgPSBUUlVFLA0KICAgICAgICAgICAgdGl0bGUucG9zaXRpb24gPSBjKCdyaWdodCcsICd0b3AnKSkrDQogIA0KICB0bV9jb21wYXNzKCkrDQogIHRtX2Zvcm1hdCgiV29ybGQiLA0KICAgICAgICAgICAgbGVnZW5kLnBvc2l0aW9uID0gIGMoImxlZnQiLCAiYm90dG9tIiksDQogICAgICAgICAgICBtYWluLnRpdGxlLnBvc2l0aW9uID1jKCJjZW50ZXIiKSkNCg0KDQpwNDwtdG1fc2hhcGUoZWR1YzE5KSsNCiAgdG1fcG9seWdvbnMoYygicGVkdWMxOV9jdiIpLA0KICAgICAgICAgICAgICB0aXRsZT1jKCJDViAlIHBvcCB3aXRoIEhTIGRlZ3JlZSBvciBoaWdoZXIiKSwNCiAgICAgICAgICAgICAgcGFsZXR0ZT0iQmx1ZXMiLA0KICAgICAgICAgICAgICBzdHlsZT0icXVhbnRpbGUiLA0KICAgICAgICAgICAgICBuPTUpKw0KICAgdG1fc2hhcGUoY291bnRpZXMpKw0KICB0bV9kb3RzKHNpemUgPSAwLjMsIGNvbCA9ICdibHVlJykrDQogICN0bV9mb3JtYXQoIldvcmxkIiwgdGl0bGU9IlNhbiBBbnRvbmlvIFBvdmVydHkgUmF0ZSBDViIsIGxlZ2VuZC5vdXRzaWRlPVQpKw0KICB0bV9sYXlvdXQodGl0bGU9IkNWIC0gUG9wdWxhdGlvbiBwZXJjZW50IHdpdGggSFMgZGVncmVlIG9yIGhpZ2hlcg0KQUNTIDIwMTkgOiA1IHllYXIgZXN0aW1hdGVzIiwNCiAgICAgICAgICAgIHRpdGxlLnNpemUgPTEuNSwNCiAgICAgICAgICAgIGxlZ2VuZC5mcmFtZSA9IFRSVUUsDQogICAgICAgICAgICB0aXRsZS5wb3NpdGlvbiA9IGMoJ3JpZ2h0JywgJ3RvcCcpKSsNCiAgdG1fc2NhbGVfYmFyKHdpZHRoID0gMC4xKSsNCiAgdG1fY29tcGFzcygpKw0KICB0bV9mb3JtYXQoIldvcmxkIiwNCiAgICAgICAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICBjKCJsZWZ0IiwgImJvdHRvbSIpLA0KICAgICAgICAgICAgbWFpbi50aXRsZS5wb3NpdGlvbiA9YygiY2VudGVyIikpDQoNCm1hcDE5PC0gdG1hcF9hcnJhbmdlKHAzLCBwNCkNCm1hcDE5DQoNCmBgYA0KDQoNCmBgYHtyfQ0KYmFyMjwtIGdncGxvdChjb3VudGllcykrDQpnZW9tX2NvbChhZXMoTkFNRSxwZWR1YzE5KSwgZmlsbCA9ICdza3libHVlJykrDQogIGxhYnMoeCA9ICJDb3VudGllcyIsIHkgPSAiUGVyY2VudCBwb3B1bGF0aW9uIHdpdGggSFMgZGVncmVlIG9yIGhpZ2hlciIsIHRpdGxlID0gIlBlcmNlbnQgb2YgcG9wdWxhdGlvbiB3aXRoIEhTIGRlZ3JlZSBvciBoaWdoZXIgYWNyb3NzIFRleGFzIGNvdW50aWVzIiwgc3VidGl0bGUgPSAiQUNTIDIwMTUtMjAxOSIpDQpiYXIyDQpgYGANCg0KYGBge3J9DQphY3N0ZXN0PC1mdW5jdGlvbihuYW1lcyxnZW9pZCwgZXN0MSwgZXJyMSwgZXN0MiwgZXJyMiwgYWxwaGEsIHlyMSwgeXIyLCBzcGFuKXsNCiAgDQogIHNlMTwtZXJyMS9xbm9ybSguOTApDQogIHNlMjwtZXJyMi9xbm9ybSguOTApDQogIHlyczE8LXNlcSh5cjEsIHRvPXlyMS1zcGFuKQ0KICB5cnMyPC1zZXEoeXIyLCB0bz15cjItc3BhbikNCg0KICBDPC1tZWFuKHlyczIlaW4leXJzMSkNCiAgZGlmZjwtIChlc3QxLWVzdDIpDQogIHRlc3Q8LShlc3QxLWVzdDIpIC8gKHNxcnQoMS1DKSpzcXJ0KHNlMV4yK3NlMl4yKSkNCiAgY3JpdDwtcW5vcm0oMS1hbHBoYS8yKQ0KICBwdmFsPC0xLXBub3JtKGFicyh0ZXN0KSkNCiAgcmVzdWx0PC1OVUxMDQogIHJlc3VsdFtwdmFsID4gYWxwaGFdPC0iTm8gU2lnbmlmaWNhbnQgQ2hhbmdlICINCiAgcmVzdWx0W3B2YWwgPCBhbHBoYSAmIHRlc3QgPCAwXTwtICJTaWduaWZpY2FudCBJbmNyZWFzZSINCiAgcmVzdWx0W3B2YWwgPCBhbHBoYSAmIHRlc3QgPiAwXTwtIlNpZ25pZmljYW50IERlY3JlYXNlIiANCiAgDQogIGRhdGEuZnJhbWUobmFtZT1uYW1lcyxnZW9pZD1nZW9pZCwgZXN0MT1lc3QxLCBlc3QyPWVzdDIsIHNlMT1zZTEsIHNlMj1zZTIsZGlmZmVyZW5jZT1kaWZmLCB0ZXN0PXRlc3QsIHJlc3VsdD1yZXN1bHQsIHB2YWw9cHZhbCkNCn0NCmBgYA0KDQoNCmBgYHtyfQ0KDQojbWVyZ2UgdGhlIHR3byB5ZWFycyB3b3J0aCBvZiBkYXRhDQpzdF9nZW9tZXRyeShlZHVjMTkpPC1OVUxMICNzdHJpcCB0aGUgZ2VvbWV0cnkgZnJvbSB0aGUgMjAxOSBkYXRhDQoNCm1kYXQ8LWxlZnRfam9pbihlZHVjMTQsIGVkdWMxOSwgYnk9YygiR0VPSUQiPSJHRU9JRCIpKQ0KDQpoZWFkKG1kYXQpDQpgYGANCg0KDQpgYGB7cn0NCmRpZmYxNDE5IDwtIGFjc3Rlc3QobmFtZXMgPSBtZGF0JEdFT0lELA0KICAgICAgICAgICAgICAgICAgICBnZW9pZCA9IG1kYXQkR0VPSUQsDQogICAgICAgICAgICAgICAgICAgIGVzdDEgPSBtZGF0JHBlZHVjMTQsDQogICAgICAgICAgICAgICAgICAgIGVzdDIgPSBtZGF0JHBlZHVjMTksDQogICAgICAgICAgICAgICAgICAgIGVycjEgPSBtZGF0JHBlZHVjMTRfZXIsDQogICAgICAgICAgICAgICAgICAgIGVycjIgPSBtZGF0JHBlZHVjMTlfZXIsDQogICAgICAgICAgICAgICAgICAgIGFscGhhID0gLjEsDQogICAgICAgICAgICAgICAgICAgIHlyMSA9IDIwMTQsIHlyMj0yMDE5LA0KICAgICAgICAgICAgICAgICAgICBzcGFuID0gNSkNCmBgYA0KDQoNCmBgYHtyfQ0KbWRhdCRzaWduaWY8LSBzaWduaWZpY2FuY2UoZXN0MT1tZGF0JHBlZHVjMTQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICBlc3QyPW1kYXQkcGVkdWMxOSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZTE9bWRhdCRwZWR1YzE0X2VyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9lMiA9IG1kYXQkcGVkdWMxOV9lciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZXZlbCA9IC45KQ0KYGBgDQoNCg0KDQpgYGB7cn0NCnRhYmxlKG1kYXQkc2lnbmlmKSAjDQoNCmBgYA0KDQpgYGB7cn0NCmFjc19tZXJnZTwtbGVmdF9qb2luKG1kYXQsIGRpZmYxNDE5LCBieT1jKCJHRU9JRCI9Imdlb2lkIikpDQoNCnRtYXBfbW9kZSgicGxvdCIpDQpwNTwtdG1fc2hhcGUoYWNzX21lcmdlKSsNCiAgdG1fcG9seWdvbnMoYygicGVkdWMxNCIpLA0KICAgICAgICAgICAgICB0aXRsZT1jKCIlIGluIFBvdmVydHkgIDIwMTAiKSwNCiAgICAgICAgICAgICAgcGFsZXR0ZT0iQmx1ZXMiLA0KICAgICAgICAgICAgICBzdHlsZT0icXVhbnRpbGUiLA0KICAgICAgICAgICAgICBuPTUpKw0KICB0bV9zaGFwZShjb3VudGllcykrDQogIHRtX2RvdHMoc2l6ZSA9IDAuMywgY29sID0gJ3JlZCcpKw0KICAjdG1fZm9ybWF0KCJXb3JsZCIsIGxlZ2VuZC5vdXRzaWRlPVQsIHRpdGxlLnNpemUgPTQpKw0KICB0bV9zY2FsZV9iYXIod2lkdGggPSAwLjEpKw0KICB0bV9sYXlvdXQodGl0bGU9IlNhbiBBbnRvbmlvIFBvdmVydHkgUmF0ZSBFc3RpbWF0ZXMgMjAxMCIsDQogICAgICAgICAgICB0aXRsZS5zaXplID0xLjUsDQogICAgICAgICAgICBsZWdlbmQuZnJhbWUgPSBUUlVFLA0KICAgICAgICAgICAgdGl0bGUucG9zaXRpb24gPSBjKCdyaWdodCcsICd0b3AnKSkrDQogIHRtX2NvbXBhc3MoKSsNCiAgdG1fZm9ybWF0KCJXb3JsZCIsDQogICAgICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAgYygiTEVGVCIsICJCT1RUT00iKSwNCiAgICAgICAgICAgIG1haW4udGl0bGUucG9zaXRpb24gPWMoIlRPUCIsIkNFTlRFUnIiKSkNCg0KcDY8LXRtX3NoYXBlKGFjc19tZXJnZSkrDQogIHRtX3BvbHlnb25zKGMoInBlZHVjMTkiKSwNCiAgICAgICAgICAgICAgdGl0bGU9YygiJSBpbiBQb3ZlcnR5IDIwMTkiKSwNCiAgICAgICAgICAgICAgcGFsZXR0ZT0iQmx1ZXMiLCANCiAgICAgICAgICAgICAgc3R5bGU9InF1YW50aWxlIiwNCiAgICAgICAgICAgICAgbj01KSsNCiAgdG1fc2hhcGUoY291bnRpZXMpKw0KICB0bV9kb3RzKHNpemUgPSAwLjMsIGNvbCA9ICdyZWQnKSsNCiAgI3RtX2Zvcm1hdCgiV29ybGQiLCB0aXRsZT0iU2FuIEFudG9uaW8gUG92ZXJ0eSBSYXRlIENWIiwgbGVnZW5kLm91dHNpZGU9VCkrDQogIHRtX2xheW91dCh0aXRsZT0iU2FuIEFudG9uaW8gUG92ZXJ0eSBSYXRlIEVzdGltYXRlIDIwMTkiLA0KICAgICAgICAgICAgdGl0bGUuc2l6ZSA9MS41LA0KICAgICAgICAgICAgbGVnZW5kLmZyYW1lID0gVFJVRSwNCiAgICAgICAgICAgIHRpdGxlLnBvc2l0aW9uID0gYygncmlnaHQnLCAndG9wJykpKw0KICB0bV9zY2FsZV9iYXIod2lkdGggPSAwLjEpKw0KICB0bV9jb21wYXNzKCkrDQogIHRtX2Zvcm1hdCgiV29ybGQiLA0KICAgICAgICAgICAgbGVnZW5kLnBvc2l0aW9uID0gIGMoIkxFRlQiLCAiQk9UVE9NIiksDQogICAgICAgICAgICBtYWluLnRpdGxlLnBvc2l0aW9uID1jKCJUT1AiLCJDRU5URVIiKSkNCg0KDQpwNyAgPC0gdG1fc2hhcGUoYWNzX21lcmdlKSsNCiAgdG1fcG9seWdvbnMoYygicmVzdWx0IiksDQogICAgICAgICAgICAgIHRpdGxlPWMoIkNoYW5nZSBpbiAlIHBvcHVsYXRpb24gd2l0aCBIUyBkZWdyZWUgb3IgaGlnaGVyIiksDQogICAgICAgICAgICAgIHBhbGV0dGUgPSAiU2V0MiIpKw0KICB0bV9zaGFwZShjb3VudGllcykrDQogIHRtX2RvdHMoc2l6ZSA9IDAuMywgY29sID0gJ2JsdWUnKSsNCiAgI3RtX2Zvcm1hdCgiV29ybGQiLCB0aXRsZT0iU2FuIEFudG9uaW8gUG92ZXJ0eSBSYXRlIENWIiwgbGVnZW5kLm91dHNpZGU9VCkrDQogIHRtX2xheW91dChtYWluLnRpdGxlPQ0KIkNoYW5nZSBpbiBQZXJjZW50YWdlIG9mIFBvcHVsYXRpb24gd2l0aCBIUyBkZWdyZWUgb3IgaGlnaGVyIGFjcm9zcyBUZXhhcyBjb3VudGllcyANCkFDUyAyMDE0IGFuZCBBQ1MgMjAxOSAtIDUgeWVhciBlc3RpbWF0ZXMiLCANCiAgICAgICAgICAgIG1haW4udGl0bGUuc2l6ZSA9MC43LCANCiAgICAgICAgICAgIGxlZ2VuZC5mcmFtZSA9IFRSVUUsDQogICAgICAgICAgICBtYWluLnRpdGxlLnBvc2l0aW9uID0gYygnY2VudGVyJykpKw0KICB0bV9zY2FsZV9iYXIod2lkdGggPSAwLjEpKw0KICB0bV9jb21wYXNzKCkrDQogIHRtX2Zvcm1hdCgiV29ybGQiLA0KICAgICAgICAgICAgbGVnZW5kLnBvc2l0aW9uID0gIGMoIkxFRlQiLCAiQk9UVE9NIiksDQogICAgICAgICAgICBtYWluLnRpdGxlLnBvc2l0aW9uID1jKCJUT1AiLCJDRU5URVJyIikpDQoNCiAgDQoNCm1hcGRpZmY8LSBwNw0KbWFwZGlmZg0KDQpgYGANCg==