1 GIỚI THIỆU BỘ DỮ LIỆU

CollegeDistance

Đây là tập dữ liệu được tạo bởi IPUMS Terra: https://terra.ipums.org/, một dự án hợp tác giữa Trung tâm Dữ liệu Dân số Phân tích và Khoa học Xã hội (IPUMS) thuộc Đại học Minnesota và Trung tâm Nghiên cứu Dân số thuộc Đại học Texas tại Austin.

Bộ dữ liệu collegedistance bao gồm thông tin về khoảng cách giữa nhà của sinh viên và trường đại học mà họ theo học. Dữ liệu được thu thập từ Khảo sát Cộng đồng Hoa Kỳ năm 2010 và 2015.

Khung dữ liệu chứa 4.739 quan sát trên 15 biến.

  • rownames: số thứ tự của sinh viên

  • gender: giới tính của sinh viên

  • ethnicity: dân tộc (người Mỹ gốc Phi, người gốc Tây Ban Nha hoặc người khác)

  • score: điểm kiểm tra tổng hợp của sinh viên

  • fcollege: người cha tốt nghiệp đại học

  • mcollege: người mẹ tốt nghiệp đại học

  • home: Có nhà ở tại nơi mà sinh viên đang theo học

  • urban: nơi ở thuộc khu vực đô thị

  • unemp: tỷ lệ thất nghiệp

  • wage: tiền lương, thu nhận của sinh viên và gia đình

  • distance: Khoảng cách từ nhà đến trường của sinh viên

  • tuition: học phí trung bình ( đơn vị tính: 1000USD)

  • education: trình độ học vấn

  • income: thu nhập gia đình trên 25.000 USD/năm (cao)

  • region: khu vực mà sinh viên đang ở

Dưới đây là bảng số liệu chi tiết của bộ dữ liệu Collegedistance:

library(csv)
data <- read.csv(file.choose(), header = T)
datatable(data)

Bộ dữ liệu collegedistance là một tài nguyên có giá trị cho các nhà nghiên cứu, sinh viên và những người khác quan tâm đến việc lựa chọn trường đại học và tác động đến việc tiếp cận giáo dục đại học của sinh viên.

  • Nghiên cứu về các yếu tố ảnh hưởng đến sự lựa chọn trường đại học của sinh viên

  • Nghiên cứu về tác động của sự đa dạng đến kết quả học tập của sinh viên…

2 PHÂN TÍCH

2.1 Đồ thị thể hiện số lượng sinh viên theo dân tộc

Phân tích đồ thị có thể giúp các nhà giáo dục và các nhà hoạch định chính sách hiểu rõ hơn về sự đa dạng của sinh viên trong các trường học và cơ sở giáo dục. Điều này có thể giúp họ phát triển các chương trình và dịch vụ tốt hơn để đáp ứng nhu cầu của tất cả sinh viên.

Ngoài ra, còn có thể giúp xác định các nhóm sinh viên thuộc các dân tộc thiểu số bị thiệt thòi trong giáo dục. Điều này có thể giúp các nhà giáo dục và các nhà hoạch định chính sách tập trung nguồn lực vào những nhóm sinh viên này để đảm bảo rằng họ có cơ hội thành công như nhau.

tmp <- data
tmp %>% group_by(ethnicity) %>% summarise(n = n()) %>% ggplot(aes(ethnicity,n)) + geom_col(fill='green') +  geom_text(aes(label = n),vjust = 2, color = 'red') + labs( title = "Hình 1: Đồ thị thể hiện số lượng sinh viên theo dân tộc") + labs( x ="Dân tộc", y = "Số lượng")

#group_by(ethnicity): Nhóm dữ liệu theo biến ethnicity.
#summarise(n = n()): Tính tổng số sinh viên cho mỗi nhóm dân tộc.
#ggplot(aes(ethnicity, n)): Tạo biểu đồ ggplot2 với trục x là ethnicity và trục y là n.
#geom_col(fill = 'green'): Thêm biểu đồ cột với màu xanh lá cây.
#geom_text(aes(label = n), vjust = 2, color = 'red'): Thêm chú thích văn bản hiển thị số lượng sinh viên cho mỗi nhóm dân tộc, với vị trí cao hơn một chút (vjust = 2) và màu đỏ.

Biểu đồ số lượng sinh viên của mỗi nhóm dân tộc ứng với 1 thanh, với chiều cao của thanh biểu thị số lượng sinh viên trong nhóm đó.

  • Số lượng sinh viên thuộc các dân tộc khác nhiều hơn đáng kể so với số lượng sinh viên thuộc các nhóm dân tộc người Mỹ gốc Phi(afam) và người gốc Tây Ban Nha(hispanic), có 3.050 sinh viên, chiếm 64,36% trong tổng số sinh viên đang theo học đại học.

  • Số lượng sinh viên thuộc dân tộc người Mỹ gốc Phi(afam) là 786 sinh viên, chiếm 16,59%, số lượng sinh viên thuộc dân tộc người gốc Tây Ban Nha(hispanic) là 903 sinh viên, chiếm 19,05%

Kết luận: Việc phân tích đồ thị này có thể cung cấp thông tin chi tiết về sự đa dạng của sinh viên trong các trường học và cơ sở giáo dục và được sử dụng để cải thiện sự đa dạng và hòa nhập trong giáo dục.

2.2 Đồ thị thể hiện điểm trung bình của sinh viên theo dân tộc

Việc phân tích đồ thị có thể giúp các nhà giáo dục và các nhà hoạch định chính sách hiểu rõ hơn về sự khác biệt về kết quả học tập của sinh viên giữa các nhóm dân tộc. Điều này có thể giúp họ phát triển các chương trình và dịch vụ tốt hơn để đáp ứng nhu cầu của tất cả sinh viên.

Ngoài ra, còn có thể được sử dụng để đánh giá hiệu quả của các chương trình và sáng kiến được thiết kế để thu hẹp khoảng cách điểm trung bình giữa các nhóm dân tộc. Điều này có thể giúp các nhà giáo dục và các nhà hoạch định chính sách xác định những chương trình nào đang hoạt động hiệu quả và những chương trình nào cần được cải thiện.

Ví dụ: Một trường học có thể sử dụng phân tích đồ thị để xác định xem có sự chênh lệch nào về điểm trung bình giữa các nhóm dân tộc hay không. Một quận học có thể sử dụng phân tích đồ thị để xác định xem có sự chênh lệch nào về tỷ lệ học sinh đạt điểm cao trong các kỳ thi chuẩn hóa giữa các nhóm dân tộc hay không.

tmp <- data
tmp %>% group_by(ethnicity) %>% summarise(m= mean(score)) %>%
  ggplot(aes(x = ethnicity,y = m)) +
    geom_col(position = 'dodge') + geom_col(fill= 'red') + 
    geom_text(aes(label = round(m,2)), vjust = 2, color = 'white') +
    labs(x = 'Dân tộc', y = 'Điểm trung bình') +labs( title = "Hình 2: Đồ thị thể hiện điểm trung bình của sinh viên")

#nhóm dữ liệu theo ethnicity và tính điểm trung bình (m = mean(score)) trong mỗi nhóm.

#Tạo ra một biểu đồ với trục x là ethnicity và trục y là điểm trung bình m. Tham số position = 'dodge' giúp các cột tránh chồng chéo lên nhau, dễ dàng phân biệt các nhóm dân tộc.

#geom_col(fill = 'red'): Dòng này tô màu đỏ (fill = 'red') cho các cột.

#geom_text(aes(label = round(m, 2)), vjust = 2, color = 'white'): Dòng này thêm nhãn vào các cột, hiển thị điểm trung bình được làm tròn đến 2 chữ số (round(m, 2)) cho mỗi nhóm. Vị trí của nhãn được điều chỉnh bằng vjust = 2 và màu sắc của nhãn được đặt thành trắng (color = 'white').

Biểu đồ kết quả sẽ hiển thị các cột hình thanh nằm cạnh nhau, một cột cho mỗi nhóm dân tộc. Chiều cao của mỗi cột đại diện cho điểm trung bình của biến score trong nhóm dân tộc đó. Nhãn trên mỗi cột hiển thị điểm trung bình được làm tròn đến 2 chữ số. Nhìn chung thì tổng điểm trung bình của sinh viên thuộc cả 3 nhóm dân tộc đều khá cao. Tuy nhiên, điểm trung bình của sinh viên thuộc nhóm các dân tộc khác có tổng điểm trung bình 53.17 điểm, cao hơn so với các nhóm dân tộc người Mỹ gốc Phi(afam) và người gốc Tây Ban Nha(hispanic)

Kết luận: Đồ thị thể hiện điểm trung bình của sinh viên theo dân tộc của bộ dữ liệu collegedistance cung cấp cho chúng ta một số thông tin hữu ích về điểm số của sinh viên thuộc các nhóm dân tộc khác nhau, từ đó giúp các nhà giáo dục và các nhà hoạch định chính sách xác định những chương trình nào đang hoạt động hiệu quả và những chương trình nào cần được cải thiện.

2.3 Đồ thị thể hiện số lượng sinh viên theo xếp loại điểm số

Việc phân tích đồ thị này giúp giảng viên và nhà trường đánh giá hiệu quả của các phương pháp giảng dạy và chương trình học. Xác định những điểm mạnh và điểm yếu trong quá trình giảng dạy, từ đó đưa ra các giải pháp cải tiến phù hợp.

Xác định xu hướng học tập của sinh viên theo thời gian, qua đó có thể dự đoán nhu cầu học tập trong tương lai. Giúp các nhà hoạch định giáo dục xây dựng chiến lược phát triển phù hợp với nhu cầu của sinh viên và sinh viên so sánh kết quả học tập của bản thân với các bạn cùng trang lứa để định hướng mục tiêu học tập và lựa chọn phương pháp học tập phù hợp.

tmp <- data 
tmp <- tmp %>% mutate(scoreC = cut(score,3, label = c('Giỏi', 'Khá','Trung bình')))
tmp %>% ggplot(aes(x = scoreC)) + 
  geom_bar(fill = 'blue')+labs(x = "Xếp loại", y = "Số lượng") + labs( title = "Hình 3: Đồ thị thể hiện số lượng sinh viên theo xếp loại điểm số")

# tạo ra một biến mới scoreC bằng cách chia điểm số score thành 3 nhóm (cắt) với các nhãn tương ứng là "Giỏi", "Khá", và "Trung bình"

# tạo ra một biểu đồ với trục x là biến mới tạo ra với các thanh màu xanh dương và thêm tiêu đề cho trục x ("Xếp loại") và trục y ("Số lượng").

Biểu đồ kết quả sẽ hiển thị ba thanh, mỗi thanh đại diện cho số lượng sinh viên thuộc một nhóm xếp loại học tập.

Có thể thấy rằng, số lượng sinh viên đạt kết quả học tập xếp loại khá trở lên khá cao, trong đó sinh viên đạt học lực khá chiếm đa số (trên 2.500 sinh viên), học lực giỏi có trên 1.000 sinh viên và học lực trung bình có trên 1.000 sinh viên.

Kết luận: Việc phân tích Đồ thị thể hiện số lượng sinh viên theo xếp loại điểm số là một công cụ hữu ích cho các bên liên quan trong lĩnh vực giáo dục để đánh giá hiệu quả giảng dạy, phân tích xu hướng học tập, cung cấp thông tin cho sinh viên, hỗ trợ tư vấn và định hướng, và ultimately, nâng cao chất lượng giáo dục.

2.4 Đồ thị thể hiện mức lương/thu nhập của sinh viên

Việc phân tích này giúp các trường đại học và cao đẳng đánh giá mức thu nhập của sinh viên và gia đình, để từ đó điều chỉnh mức học phí phù hợp cũng như các chính sách về việc miễn giải học phí và các chính sách học bổng cho sinh viên.

Ngoài ra, còn góp phần nâng cao chất lượng giáo dục thông qua việc cải thiện chương trình đào tạo, định hướng nghề nghiệp cho sinh viên và hỗ trợ sinh viên tìm kiếm việc làm hiệu quả hơn.

tmp <- data
tmp <- tmp %>% mutate(wagec = cut(wage,4, label = c('Cao','Khá cao','Trung bình','Thấp')))
tmp %>% ggplot(aes(x = wagec)) + 
  geom_bar(fill = 'red')+labs(x = "Xếp loại", y = "Số lượng") + labs( title = "Hình 4: Đồ thị thể hiện tiền lương/thu nhập của sinh viên")

# tạo ra một biến mới wagec bằng cách chia tiền lượng thành 4 nhóm với các nhãn tương ứng là "Cao", "Khá cao", "Trung bình" và "Thấp"

# tạo ra một biểu đồ với trục x là biến mới tạo ra với các thanh màu đỏ và thêm tiêu đề cho trục x ("Xếp loại") và trục y ("Số lượng").

Nhiều nghiên cứu đã chỉ ra rằng, có mối liên hệ mật thiết giữa mức thu nhập của gia đình và kết quả học tập của sinh viên. Sinh viên xuất thân từ gia đình có thu nhập cao thường có môi trường học tập tốt hơn, nơi họ được tiếp xúc với nhiều nguồn thông tin và cơ hội học tập hơn so với sinh viên xuất thân từ gia đình có thu nhập thấp.

Theo đồ thị thì sinh viên mà gia đình có mức thu nhập khá cao và trung bình chiếm số lượng đa số. Những sinh viên mà gia đình có mức thu nhập cao có khoảng 800 sinh viên, có mức thu nhập khá cao có trên 1.000 sinh viên, mức thu nhập trung bình trên 1.000 sinh viên và mức thu nhập thấp có khoảng 500 sinh viên.

Kết luận: Việc phân tích Đồ thị thể hiện mức lương/thu nhập của sinh viên là một công cụ hữu ích cho các bên liên quan trong lĩnh vực giáo dục và lao động để đánh giá hiệu quả đào tạo, đưa ra các chính sách hỗ trợ học phí và hỗ trợ sinh viên lựa chọn nghề nghiệp, nghiên cứu thị trường lao động và ultimately, nâng cao chất lượng giáo dục.

2.5 Đồ thị thể hiện số lượng sinh viên theo giới tính ở mỗi dân tộc

Việc phân tích này giúp các nhà hoạch định chính sách và nhà trường đánh giá mức độ bình đẳng giới trong giáo dục ở các dân tộc khác nhau và xác định những dân tộc có tỷ lệ chênh lệch giới tính cao trong giáo dục để có biện pháp can thiệp phù hợp. So sánh tỷ lệ sinh viên nam và nữ theo dân tộc trong các giai đoạn khác nhau để đánh giá xu hướng thay đổi theo thời gian.

tmp <- data
tmp %>% group_by(ethnicity,gender) %>% summarise(n=n()) %>% ggplot(aes(x = ethnicity,y = n)) + geom_col(position = 'dodge') + facet_wrap(~gender) + geom_text(aes(label = n),vjust = 0, color = 'green') + labs(x = 'Dân tộc', y = 'Số lượng') + labs(title = "Hình 5: Đồ thị số lượng  sinh viên theo giới tính ở mỗi dân tộc")
## `summarise()` has grouped output by 'ethnicity'. You can override using the
## `.groups` argument.

Cả 2 biểu đồ đều thể hiện số lượng sinh viên, mỗi biểu đồ thể hiện một nhóm giới tính theo các nhóm dân tộc. Mỗi nhóm giới tính sẽ có ba cột xếp cạnh nhau, chiều cao của mỗi cột đại diện cho số lượng sinh viên thuộc từng nhóm dân tộc.

Nhìn chung thì số lượng sinh viên nam và sinh viên nữ không có sự chênh lệnh nhiều. Tuy nhiên thì số lượng sinh viên nam theo học đại học và cao đẳng ở các nhóm dân tộc đều cao hơn số lượng sinh viên nữ (chiếm 54,86% trong tổng số sinh viên)

Kết luận: Việc phân tích Đồ thị thể hiện số lượng sinh viên theo giới tính ở mỗi dân tộc là một công cụ hữu ích để đánh giá sự bình đẳng giới trong giáo dục, phân tích xu hướng theo thời gian, nghiên cứu về các yếu tố ảnh hưởng và nâng cao chất lượng giáo dục.

2.6 Đồ thị thể hiện số lượng sinh viên có cha mẹ tốt nghiệp đại học của mỗi dân tộc

Việc phân tích này giúp các nhà nghiên cứu và nhà hoạch định chính sách đánh giá ảnh hưởng của nền tảng gia đình, cụ thể là trình độ học vấn của cha mẹ, đến việc học tập của con cái. Xác định những dân tộc có tỷ lệ sinh viên có cha mẹ tốt nghiệp đại học cao để học hỏi kinh nghiệm và nhân rộng mô hình.

Giúp so sánh tỷ lệ sinh viên có cha mẹ tốt nghiệp đại học theo dân tộc trong các giai đoạn khác nhau để đánh giá xu hướng thay đổi theo thời gian. Xác định những dân tộc có sự thay đổi tích cực hoặc tiêu cực về ảnh hưởng của nền tảng gia đình đến việc học tập của sinh viên.

tmp <- data
tmp <- tmp %>% group_by(ethnicity, fcollege) %>% summarise(n = n())
## `summarise()` has grouped output by 'ethnicity'. You can override using the
## `.groups` argument.
tmp %>% ggplot(aes(x = ethnicity, y = n, fill = fcollege)) + geom_col(position = position_dodge()) + labs(x = "Dân tộc", y = "Số lượng") + labs( title = "Hình 6: Đồ thị thể hiện số lượng sinh viên có cha tốt nghiệp đại học")

# nhóm dữ liệu theo cả ethnicity và fcollege. Sau đó, nó tính tổng số lượng sinh viên (n = n())

#  tạo ra một biểu đồ ggplot với:Trục x: ethnicity (dân tộc), Trục y: n (tổng số lượng sinh viên) và các thanh được xác định bởi biến fcollege (nguyện vọng theo học đại học)
tmp <- data
tmp <- tmp %>% group_by(ethnicity, mcollege) %>% summarise(n = n())
## `summarise()` has grouped output by 'ethnicity'. You can override using the
## `.groups` argument.
tmp %>% ggplot(aes(x = ethnicity, y = n, fill = mcollege)) +geom_col(position = position_dodge()) + labs(x = "Dân tộc", y = "Số lượng") + labs( title = "Hình 7: Đồ thị thể hiện số lượng sinh viên có mẹ tốt nghiệp đại học")

Đây là hai biểu đồ hiển thị số lượng sinh viên có cha và mẹ tốt nghiệp đại học của mỗi nhóm dân tộc . Mỗi nhóm dân tộc có hai cột xếp cạnh nhau, một cột là “no” là cha/mẹ không tốt nghiệp đại học và một cột “yes” là cha/mẹ tốt nghiệp đại học. Chiều cao của mỗi cột thể hiện số lượng sinh viên có cha/mẹ tốt nghiệp hoặc không tốt nghiệp đại học.

Ở cả hai biểu bồ thì có thể thấy số lượng cha mẹ sinh viên tốt nghiệp đại học khá thấp chỉ chiếm khoảng 32,8% trong tổng số và hầu hết là số lượng cha/mẹ sinh viên không tốt nghiệp đại học.

Kết luận: Việc phân tích Đồ thị thể hiện số lượng sinh viên có cha và mẹ tốt nghiệp đại học của mỗi dân tộc là một công cụ hữu ích cho các bên liên quan trong lĩnh vực giáo dục và xã hội để đánh giá ảnh hưởng của nền tảng gia đình đến việc học tập, phân tích sự bất bình đẳng giáo dục, nghiên cứu về các yếu tố ảnh hưởng và ultimately, nâng cao chất lượng giáo dục.Ngoài ra, việc phân tích này cũng có thể giúp các nhà hoạch định chính sách xây dựng các chương trình hỗ trợ phù hợp để thu hẹp khoảng cách giáo dục giữa các dân tộc.

2.7 Đồ thị thể hiện số lượng sinh viên có sở hữu nhà và không sở hữu nhà

Việc phân tích này giúp đánh giá về vấn đề nhà ở của sinh viên, xác định những nhóm sinh viên có chỗ ở và không có chỗ ở để có biện pháp hỗ trợ phù hợp.

tmp <- data
tmp <- tmp %>% group_by(home, ethnicity) %>% summarise(n = n())
## `summarise()` has grouped output by 'home'. You can override using the
## `.groups` argument.
tmp %>% ggplot(aes(x = home, y = n, fill = ethnicity)) + geom_col(position = position_dodge()) + labs(x = "Nhà ở", y = "Số lượng") + labs( title = "Hình 8: Đồ thị thể hiện số lượng sinh viên có sở hữu nhà và không sở hữu nhà ")

# nhóm dữ liệu trong tmp theo hai biến home và ethnicity

# tạo một biểu đồ các thanh xếp cạnh nhau với trục hoành x theo biến home và trục tung y theo biến n (số lượng)và Sử dụng biến ethnicity để tô màu cho các cột.

Biểu đồ thu được sẽ hiển thị các nhóm “home” trên trục hoành. Mỗi nhóm sẽ có một cụm cột đứng cạnh nhau, với mỗi cột thể hiện số lượng người thuộc một dân tộc nhất định (được phân biệt bằng màu sắc).Chiều cao của mỗi cột thể hiện số lượng người (n) thuộc nhóm dân tộc đó sinh sống tại “home” đó.

2.8 Đồ thị histogram thể hiện số lượng điểm số của sinh viên

Việc phân tích đồ thị có thể giúp nhà trường hiểu rõ hơn về sự khác biệt về kết quả học tập của sinh viên. Điều này có thể giúp họ phát triển các chương trình và dịch vụ tốt hơn để đáp ứng nhu cầu của tất cả sinh viên.

Ví dụ: Một quận học có thể sử dụng phân tích đồ thị để xác định xem có sự chênh lệch nào về tỷ lệ học sinh đạt điểm cao trong các kỳ thi chuẩn hóa giữa các nhóm dân tộc hay không.

tmp <- data
tmp %>% ggplot(aes(x = score)) + geom_histogram(binwidth = 5, fill = 'blue', color = 'red') + labs(x = "Điểm số", y = "Số lượng") + labs( title = "Hình 9: Đồ thị thể hiện số lượng điểm số của sinh viên")

# tạo một biểu đồ ggplot2 với trục x được xác định bởi biến score

#binwidth = 5: Xác định độ rộng của mỗi cột là 5 đơn vị.
#fill = 'blue': Tô màu các cột bằng màu xanh lam.
#color = 'red': Viền các cột bằng màu đỏ.

Biểu đồ hình cột sẽ hiển thị số lượng điểm số trong mỗi khoảng giá trị của biến score. Chiều cao của mỗi cột thể hiện số lượng điểm số trong khoảng đó.

Kết luận: Việc phân tích Đồ thị histogram thể hiện điểm số của sinh viên là một công cụ hữu ích cho các bên liên quan trong lĩnh vực giáo dục để đánh giá hiệu quả giảng dạy, phân tích xu hướng học tập, cung cấp thông tin cho sinh viên và nâng cao chất lượng giáo dục cho sinh viên.

2.9 Đồ thị histogram thể hiện sự phân phối của điểm số phân chia theo giới tính

Việc phân tích này giúp nhà trường đánh giá mức độ chênh lệch điểm số giữa nam và nữ. Từ đó xác định những môn học có sự chênh lệch điểm số lớn để có biện pháp can thiệp phù hợp. So sánh điểm số của nam và nữ trong các giai đoạn khác nhau để đánh giá xu hướng thay đổi theo thời gian. Xác định những thay đổi tích cực hoặc tiêu cực về sự chênh lệch điểm số giữa nam và nữ.

tmp <- data
tmp %>% ggplot(aes(x = score)) + 
  geom_histogram(binwidth = 5, fill = 'brown', color = 'black') +  facet_wrap(~gender) + labs(x = " Điểm", y = "Số lượng")+ labs(title = "Hình 10: Đồ thị thể hiện sự phân phối của điểm số phân chia theo giới tính")

# tạo một biểu đồ ggplot2 với trục x được xác định bởi biến score

#facet_wrap: Chia biểu đồ thành 2 biểu đồ theo giới tính của sinh viên.

#binwidth = 5: Chiều rộng của mỗi cột là 5 điểm.
#fill = 'brown': Tô màu bên trong cột bằng màu nâu.
#color = 'black': Viền ngoài của cột có màu đen.

Biểu đồ thu được sẽ hiển thị hai biểu đồ con, một cho nam và một cho nữ. Mỗi biểu đồ con thể hiện sự phân phối điểm số của giới tính tương ứng.

Kết luận: Việc phân tích Đồ thị thể hiện sự phân phối của điểm số phân chia theo giới tính là một công cụ để đánh giá sự bình đẳng giới trong giáo dục, phân tích xu hướng theo thời gian, nghiên cứu về các yếu tố ảnh hưởng và nâng cao chất lượng giáo dục.

2.10 Đồ thị histogram thể hiện sự phân phối điểm số của từng dân tộc

Đánh giá sự bình đẳng giáo dục giữa các dân tộc: Giúp các nhà hoạch định chính sách và nhà quản lý giáo dục đánh giá mức độ bình đẳng giáo dục giữa các dân tộc. Xác định những dân tộc có điểm số trung bình thấp để có biện pháp can thiệp phù hợp. So sánh điểm số trung bình của các dân tộc trong các giai đoạn khác nhau để đánh giá xu hướng thay đổi theo thời gian. Xác định những dân tộc có sự thay đổi tích cực hoặc tiêu cực về điểm số.

tmp <- data
tmp %>% ggplot(aes(x = score, fill = ethnicity)) + geom_histogram(binwidth = 5) + labs( x ="Điểm", y = "Số lượng")+labs(title = "Hình 11: Đồ thị thể hiện sự phân phối điểm số của từng dân tộc")

# Tạo biểu đồ với Trục hoành (x) biểu thị điểm số, trục tung biểu thị số lượng và Màu sắc của cột biểu thị dân tộc.
# binwidth = 5: Chiều rộng của mỗi cột là 5 điểm.

Biểu đồ thu được sẽ hiển thị các cột thể hiện sự phân phối điểm số của từng dân tộc. Màu sắc của các cột giúp phân biệt các dân tộc khác nhau.

Kết luận: Việc phân tích đồ thị sự phân phối điểm số của từng dân tộc góp phần nâng cao chất lượng giáo dục thông qua việc: Xác định những rào cản đối với việc học tập của học sinh thuộc các dân tộc thiểu số. Phát triển các chương trình và chính sách hỗ trợ học sinh thuộc các dân tộc thiểu số.

2.11 Đồ thị thể hiện số lượng mức thu nhập theo dân tộc

Đánh giá mức độ bất bình đẳng thu nhập: Giúp các nhà hoạch định chính sách và nhà quản lý kinh tế đánh giá mức độ bất bình đẳng thu nhập giữa các dân tộc. Xác định những dân tộc có mức thu nhập trung bình thấp để có những chính sách hỗ trợ học phí phù hợp.

tmp <- data
tmp <- tmp %>% group_by(ethnicity, income) %>% summarise(n = n())
## `summarise()` has grouped output by 'ethnicity'. You can override using the
## `.groups` argument.
tmp %>% ggplot(aes(x = ethnicity, y = n)) + geom_col(data = tmp %>% filter(income == 'low'), fill = 'darkgreen') + geom_col(data = tmp %>% filter(income == 'high'), fill = 'blue')+ labs(x = 'Dân tộc', y = 'Số lượng') + coord_flip() + labs(title = "Hình 12: Đồ thị thể hiện số lượng mức thu nhập theo từng dân tộc")

# câu lệnh 1: Nhóm dữ liệu tmp theo cả ethnicity (dân tộc) và income (thu nhập). Tính tổng số người (n) trong mỗi nhóm (dân tộc, thu nhập).

# câu lệnh 2: tạo biểu đồ cột với trục ngang (x) thể hiện ethnicity (dân tộc), Trục dọc (y) thể hiện số lượng người (n)

# Sử dụng hai lớp geom_col để phân biệt theo mức thu nhập: Lớp thứ nhất Lọc dữ liệu chỉ giữ lại nhóm có thu nhập thấp (income == 'low'), Tô màu các cột cho nhóm thu nhập thấp bằng màu xanh lá đậm. và Lớp thứ hai Lọc dữ liệu chỉ giữ lại nhóm có thu nhập cao (income == 'high') và tô màu xanh dương (blue).

# coord_flip() để đảo ngược trục, với trục ngang ở dưới và trục dọc ở trên.

Biểu đồ này sẽ hiển thị hai cột chồng lên nhau cho mỗi dân tộc, thể hiện số lượng người thuộc dân tộc đó có thu nhập thấp (xanh đậm) và thu nhập cao (xanh dương). Biểu đồ giúp so sánh sự phân bố thu nhập giữa các dân tộc. Bạn có thể dễ dàng quan sát xem có sự khác biệt đáng kể về thu nhập giữa các dân tộc hay không. Ví dụ, nếu một dân tộc có cột xanh đậm cao hơn nhiều so với cột xanh dương, thì điều đó có thể cho thấy phần lớn người thuộc dân tộc đó có thu nhập thấp.

Kết luận: Việc phân tích đồ thị số lượng mức thu nhập theo dân tộc giúp Xác định những rào cản đối với việc phát triển kinh tế của các dân tộc thiểu số. Phát triển các chương trình và chính sách hỗ trợ phát triển kinh tế cho các dân tộc thiểu số.

2.12 Biểu đồ mật độ density thể hiện sự phân phối của điểm số phân chia theo dân tộc

Việc phân tích Biểu đồ mật độ density thể hiện sự phân phối của điểm số phân chia theo dân tộc có thể mang lại nhiều lợi ích cho các bên liên quan trong lĩnh vực giáo dục và xã hội. Giúp các nhà hoạch định chính sách và nhà quản lý giáo dục đánh giá mức độ bình đẳng giáo dục giữa các dân tộc một cách chi tiết hơn so với chỉ sử dụng điểm số trung bình. Xác định những dân tộc có sự phân bố điểm số lệch về phía thấp hoặc cao để có biện pháp can thiệp phù hợp.

tmp <- data
tmp %>% ggplot(aes(x = score)) + geom_density(fill = 'blue') +  facet_wrap(~ethnicity) + labs(x= "Điểm")+ labs(title = "Hình 13: Biểu đồ mật độ thể hiện sự phân phối của điểm số phân chia theo dân tộc")

# tạo biểu đồ với trục hoành (x) biểu thị điểm số.

# geom_density: Thêm hình dạng biểu đồ là mật độ (density). và Tô màu bên trong biểu đồ mật độ bằng màu xanh

# facet_wrap: Chia biểu đồ thành các biểu đồ con theo dân tộc.

Biểu đồ thu được sẽ hiển thị hai biểu đồ con, một cho mỗi dân tộc. Mỗi biểu đồ con thể hiện sự phân phối điểm số của dân tộc tương ứng dưới dạng đường cong mật độ. Hình dạng của đường cong mật độ cho biết sự tập trung của điểm số trong từng nhóm.

Kết luận: việc phân tích biểu đồ mật độ điểm số có những ưu điểm sau: Cung cấp thông tin chi tiết hơn về sự phân bố điểm số của các dân tộc. Giúp xác định những nhóm học sinh có nguy cơ bị bỏ lại phía sau. Giúp đánh giá hiệu quả của các chương trình hỗ trợ học sinh một cách chính xác hơn.

2.13 Biểu đồ mật độ density thể hiện sự phân phối của điểm số phân chia theo giới tính

Việc phân tích Biểu đồ mật độ density thể hiện sự phân phối của điểm số phân chia theo giới tính có thể mang lại nhiều lợi ích cho các bên liên quan trong lĩnh vực giáo dục và xã hội. Giúp nhà trường đánh giá mức độ bình đẳng giới trong giáo dục một cách chi tiết từ đó xác định những nhóm học sinh nam hoặc nữ có điểm số thấp hơn để có biện pháp can thiệp phù hợp.

tmp <- data
tmp %>% ggplot(aes(x = score)) + geom_density(fill = 'green') + facet_wrap(~gender) + labs(x = "Điểm")+ labs(title = "Hình 14: Biểu đồ mật độ thể hiện sự phân phối của điểm số phân chia theo giới tính")

# tạo biểu đồ với trục hoành (x) biểu thị điểm số.

# geom_density: Thêm hình dạng biểu đồ là mật độ (density). và Tô màu bên trong biểu đồ mật độ bằng màu xanh lá

# facet_wrap: Chia biểu đồ thành các biểu đồ con theo giới tính.

Biểu đồ thu được sẽ hiển thị hai biểu đồ con, một cho nam và một cho nữ. Mỗi biểu đồ con thể hiện sự phân phối điểm số của giới tính tương ứng dưới dạng đường cong mật độ.

Kết luận: việc phân tích biểu đồ mật độ điểm số có những ưu điểm sau: Cung cấp thông tin chi tiết hơn về sự phân bố điểm số của nam và nữ. Xác định những rào cản đối với việc học tập của học sinh nam hoặc nữ. Đưa ra những biện pháp phù hợp, các chương trình hỗ trợ học sinh một cách chính xác hơn.

2.14 Biểu đồ tròn (pia chart) thể hiện số lượng sinh viên theo giới tính của dân tộc hispanic

Phân tích biểu đồ tròn thể hiện số lượng sinh viên theo giới tính của dân tộc Hispanic giúp ta hiểu rõ hơn về tỷ lệ sinh viên nam và nữ thuộc dân tộc hispanic ( người gốc Tây Ban Nha). Nhờ đó, ta có thể so sánh nhanh chóng sự chênh lệch giới tính trong nhóm này.

tmp <- data
tmp <- tmp %>% filter(ethnicity=="hispanic")
tmp %>% group_by(ethnicity,gender) %>% summarise(n = n()) %>% ggplot(aes(x = '', y = n,fill = gender))+ geom_col(gender = 'black') +  coord_polar('y')+  theme_void() + labs(title = "Hình 15: Biểu đồ tròn thể hiện số lượng sinh viên theo dân tộc hispanic")
## `summarise()` has grouped output by 'ethnicity'. You can override using the
## `.groups` argument.
## Warning in geom_col(gender = "black"): Ignoring unknown parameters: `gender`

#  nhóm dữ liệu theo ethnicity (giữ "hispanic") và gender và tính tổng số lượng 

# tạo biểu đồ tròn với Trục hoành x được đặt trống (''). Trục tung y thể hiện theo biến n (số lượng), fill = gender: Tô màu các vùng theo biến gender

Biểu đồ thu được sẽ là một hình tròn được chia thành các phần (miếng) theo tỉ lệ. Mỗi phần tô một màu đại diện cho giới tính (nam/nữ) của người gốc Tây Ban Nha. Diện tích mỗi phần hình cung tròn sẽ tương ứng với số lượng người thuộc giới tính đó trong nhóm dân tộc người gốc Tây Ban Nha.

Kết luận: Phân tích biểu đồ tròn cung cấp thông tin hữu ích cho các nhà hoạch định chính sách, nhà giáo dục và các tổ chức hỗ trợ sinh viên. Ví dụ: nếu biểu đồ cho thấy tỷ lệ sinh viên nữ thuộc dân tộc Hispanic theo học đại học thấp, các nhà hoạch định có thể phát triển chương trình khuyến khích và hỗ trợ nữ sinh theo học.

2.15 Biểu đồ tròn (pie chart) thể hiện mức thu nhập của gia đình sinh viên

Phân tích biểu đồ tròn thể hiện mức thu nhập của gia đình sinh viên có thể hiểu rõ hơn về tình trạng kinh tế gia đình của sinh viên và xác định các nhóm sinh viên cần hỗ trợ tài chính trong vấn đề học phí, nhà ở,…

tmp <- data
tmp %>% group_by(income) %>% summarise(n = n()) %>% ggplot(aes(x = '', y = n,fill = income)) +
    geom_col() + geom_text(aes(x = 1.3, label = n),position = position_stack(vjust = 0.5)) + 
    coord_polar('y') + labs(title = "Hình 16: Biểu đồ tròn thể hiện mức thu nhập")

# Nhóm dữ liệu trong tmp theo thu nhập (income). summarise(n = n()): Tính tổng số người (n) trong mỗi nhóm thu nhập.

# tạo biểu đồ với trục tung (y) là số lượng người (n), Trục hoành (x) được để trống ('') và Tô màu cột theo thu nhập (income).

# Thêm chú thích văn bản (geom_text) hiển thị số lượng người (n) trên mỗi cột.
# aes(x = 1.3, label = n): Thiết lập vị trí ngang của nhãn cách trục hoành 1.3 đơn vị và nội dung là giá trị n.
# position = position_stack(vjust = 0.5): Canh chỉnh vị trí dọc của nhãn để nằm chính giữa đầu cột
# coord_polar('y'): Chuyển đổi hệ trục sang hệ tọa độ cực, với trục y giữ nguyên thể hiện số lượng.Trục hoành sẽ được cuộn tròn thành hình tròn, các cột được sắp xếp theo góc dựa trên biến income

Biểu thu được sẽ giống như radar chart, với màu sắc thể hiện theo thu nhập. Mỗi mức thu nhập được biểu thị bằng một hình cột, được tô màu theo nhóm thu nhập. Trên mỗi cột có chú thích hiển thị số lượng người thuộc nhóm thu nhập đó.

Kết luận: Phân tích biểu đồ tròn cung cấp thông tin hữu ích cho việc xây dựng các chính sách hỗ trợ sinh viên hiệu quả. Ví dụ: nếu tỷ lệ sinh viên có thu nhập thấp cao trong tổng số sinh viên theo học đại học, thì nhà có thể xem xét tăng cường hỗ trợ tài chính, hoặc các chính sánh hỗ trợ về học phí cho các sinh viên có hoàn cảnh khó khăn và hiếu học đó.

2.16 Biểu đồ tròn (pie chart) thể hiện số lượng người theo dân tộc (ethnicity)

Việc phân tích biểu đồ tròn (pie chart) thể hiện số lượng người theo dân tộc (ethnicity) để: Hiểu rõ hơn về thành phần sinh viên thuộc các nhóm dân tộc khác nhau. So sánh tỷ lệ sinh viên theo dân tộc giữa các khu vực khác nhau. Theo dõi sự thay đổi của thành phần dân tộc theo thời gian và hỗ trợ việc nhà trường ra quyết định các chính sách.

tmp <- data
tmp %>% group_by(ethnicity) %>% summarise(n = n()) %>% ggplot(aes(x = '', y = n,fill = ethnicity)) + geom_col(ethnicity = 'black') +  coord_polar('y') +
  geom_text(aes(x = 1.3, label = n),position = position_stack(vjust = 0.5)) + theme_void() + labs(title = "Hình 17: Biểu đồ tròn thể hiện số lượng người theo dân tộc")
## Warning in geom_col(ethnicity = "black"): Ignoring unknown parameters:
## `ethnicity`

# tính tổng số người (n) trong mỗi nhóm dân tộc (ethnicity).

# tạo biểu đồ với Trục tung (y) là số lượng người (n), trục hoành (x) trống ('') nhưng xác định vị trí cột theo góc và Tô màu cột theo dân tộc (ethnicity), thêm nhãn hiển thị số lượng người (n) trên đầu mỗi cột.

# coord_polar('y'): Chuyển đổi hệ tọa độ thành cực, trục y giữ nguyên, trục hoành cuộn tròn thành hình tròn.

# theme_void() để loại bỏ các thành phần mặc định của biểu đồ như khung nền, trục lưới, chú thích trục, v.v. Chỉ giữ lại các thành phần cần thiết: các cột, nhãn và nền tròn.

Biểu đồ thu được sẽ là một hình tròn được chia thành các phần (miếng) theo tỉ lệ. Mỗi phần tô một màu đại diện cho một dân tộc (dựa trên biến ethnicity) và diện tích tương ứng với số lượng người thuộc dân tộc đó. Nhãn hiển thị số lượng người bên trong mỗi phần.

Kết luận: Phân tích biểu đồ tròn cung cấp thông tin hữu ích cho việc xây dựng các chính sách phù hợp với đặc điểm dân tộc của khu vực. Ví dụ: nếu biểu đồ cho thấy tỷ lệ người dân tộc thiểu số cao trong một khu vực, nhà hoạch định có thể xem xét xây dựng các chương trình giáo dục và hỗ trợ dành cho nhóm dân tộc này.

2.17 Biểu đồ phân tán (scatter) thể hiện mối quan hệ giữa mức lương (wage) và tỷ lệ thất nghiệp (unemp)

Phân tích biểu đồ phân tán thể hiện mối quan hệ giữa mức lương và tỷ lệ thất nghiệp để xác định mối tương quan giữa mức lương và tỷ lệ thất nghiệp ở sinh viên, từ đó đánh giá được tình hình tài chính của sinh viên và đưa ra các chương trình đào tạo trong việc trang bị hành trang cho sinh viên ra trường kiếm việc làm cũng như chính sách hỗ trợ phù hợp.

tmp <- data
 tmp %>% ggplot(aes(x = wage, y = unemp, color = ethnicity)) +
  geom_point() + labs(title ="Hình 18: Biểu đồ thể hiện mối quan hệ giữa mức lương và tỷ lệ thất nghiệp")

# Tạo t biểu đồ phân tán với: trục hoành x thể hiện mức lương, trục tung y thể hiện tỷ lệ thất nghiệp unemp và Tô màu cho các điểm theo biến ethnicity.
 
#geom_point(): Thêm các điểm vào biểu đồ.

Biểu đồ thu được sẽ hiển thị các điểm dữ liệu với vị trí của mỗi điểm thể hiện mối quan hệ giữa mức lương và tỷ lệ thất nghiệp của một cá nhân. Màu sắc của mỗi điểm sẽ đại diện cho dân tộc của người đó.

Nếu có nhiều điểm cùng màu tập trung ở một khu vực, điều đó có thể cho thấy mối liên hệ giữa dân tộc, mức lương và tỷ lệ thất nghiệp. Kích thước của các điểm có thể được điều chỉnh để thể hiện thêm thông tin, ví dụ như số lượng người trong mỗi nhóm dân tộc.

Kết luận: việc phân tích mối quan hệ giữa mức lương và tỷ lệ thất nghiệp ở sinh viên giúp nhà trường trong việc đánh giá được mức độ ảnh hưởng của các yếu tố như ngành học, trình độ học vấn, kỹ năng, kinh nghiệm làm việc đối với khả năng tìm kiếm việc làm và mức lương của sinh viên. Từ đó, đưa ra các chương trình đào tạo trong việc trang bị cho sinh viên các kiến thức, kỹ năng cần thiết để đáp ứng nhu cầu của thị trường lao động.

2.18 Biểu đồ phân tán (scatter) thể hiện mối quan hệ giữa mức lương và tỷ lệ thất nghiệp của một cá nhân

Mục đích của việc phân tích Biểu đồ phân tán (scatter) thể hiện mối quan hệ giữa mức lương và tỷ lệ thất nghiệp của một cá nhân có kèm đường xu thế ở sinh viên để hiểu rõ hơn về mối quan hệ giữa mức lương và tỷ lệ thất nghiệp ở sinh viên và đường xu thế giúp dự đoán mức lương của sinh viên dựa trên tỷ lệ thất nghiệp.

tmp <- data
 tmp %>% ggplot(aes(x = wage, y = unemp)) +
  geom_point(color = 'red') +
  geom_smooth(method = 'lm', color = 'green')+ facet_wrap(~ethnicity)+ labs(title = "Hình 19: Biểu đồ phân tán thể hiện mối quan hệ giữa mức lương và tỷ lệ thất nghiệp")
## `geom_smooth()` using formula = 'y ~ x'

 # Tạo biểu đồ phân tán với Trục hoành x thể hiện mức lương wage, Trục tung y thể hiện tỷ lệ thất nghiệp unemp và Thêm các điểm vào biểu đồ với màu đỏ.
 # Thêm đường hồi quy tuyến tính cho mỗi nhóm dữ liệu với màu xanh lá cây.
 
 # Chia biểu đồ thành các biểu đồ con riêng biệt cho mỗi nhóm dân tộc (ethnicity).

Biểu đồ thu được sẽ hiển thị các điểm dữ liệu với vị trí của mỗi điểm thể hiện mối quan hệ giữa mức lương và tỷ lệ thất nghiệp của một cá nhân. Biểu đồ phân tán (scatter plot) với các điểm được tô màu đỏ và đường hồi quy tuyến tính màu xanh lá cây cho mỗi nhóm dân tộc (ethnicity) Các điểm được tô màu đỏ và đường hồi quy tuyến tính màu xanh lá cây được vẽ cho mỗi nhóm dân tộc.

Ví dụ:

Độ dốc của đường hồi quy tuyến tính cho thấy mối quan hệ tương quan giữa mức lương và tỷ lệ thất nghiệp trong mỗi nhóm dân tộc. Việc so sánh các đường hồi quy tuyến tính giữa các nhóm dân tộc có thể giúp xác định sự khác biệt về mối quan hệ này. Biểu đồ có thể được bổ sung thêm chú thích để làm rõ thông tin và giúp người đọc hiểu rõ hơn về kết quả.

Kết luận: Phân tích biểu đồ phân tán cung cấp thông tin hữu ích cho việc xây dựng các chính sách nhằm giảm thiểu thất nghiệp và thúc đẩy tăng trưởng kinh tế và giúp đánh giá hiệu quả của các chương trình hỗ trợ dành cho sinh viên trong việc cải thiện mức lương và giảm thiểu tỷ lệ thất nghiệp.

2.19 Biểu đồ động thể hiện mối liên hệ giữa mức lương và tỷ lệ thất nghiệp trong từng nhóm dân tộc.

Mục đích của việc phân tích Biểu đồ động thể hiện mối liên hệ giữa mức lương và tỷ lệ thất nghiệp trong từng nhóm dân tộc ở sinh viên giúp ta theo dõi sự thay đổi của mối liên hệ giữa mức lương và tỷ lệ thất nghiệp trong từng nhóm dân tộc theo thời gian. Nhờ đó, có thể đánh giá mức độ ảnh hưởng của các yếu tố như thời gian, chính sách, biến động kinh tế đối với thị trường lao động dành cho sinh viên sắp ra trường thuộc các nhóm dân tộc khác nhau.

tmp <- data
tmp %>% ggplot(aes(x = wage, y = unemp, color = ethnicity)) +
  geom_line() +
 geom_point(size=2) +
  transition_reveal(wage, keep_last = F)+ labs(title ="Hình 20: Đồ thị động thể hiện mối quan hệ giữa mức lương và tỷ lệ thất nghiệp theo dân tộc")

Biểu đồ giúp hình dung mối liên hệ giữa mức lương và tỷ lệ thất nghiệp trong từng nhóm dân tộc.

  • Đường kẻ: Nối các điểm dữ liệu theo từng dân tộc.

  • Điểm: Biểu thị vị trí dữ liệu của mỗi cá nhân, được tô màu theo dân tộc.

  • Độ dốc của đường kẻ cho thấy mức độ thay đổi của mức lương theo tỷ lệ thất nghiệp.

  • So sánh các đường kẻ và vị trí điểm của các nhóm dân tộc giúp nhận biết sự khác biệt về mối quan hệ này.

Kết luận: việc phân tích biểu đồ động thể hiện mối liên hệ giữa mức lương và tỷ lệ thất nghiệp trong từng nhóm dân tộc ở sinh viên là một công cụ để hiểu rõ hơn và theo dõi sát xao thị trường lao động dành cho sinh viên thuộc các nhóm dân tộc khác nhau, so sánh mức độ bất bình đẳng trong thị trường lao động giữa các nhóm dân tộc. Từ đó định ra chương trình học và gợi ý các hướng đin cho sinh viên sắp ra trường.

LS0tDQp0aXRsZTogIk5WNSINCmF1dGhvcjogIk5ndXnhu4VuIFRo4buLIEhvw6BuZyBZ4bq/biINCmRhdGU6ICJgciBmb3JtYXQoU3lzLnRpbWUoKSwgJyVIOiVNOiVTLCAlZCAtICVtIC0gJVknKWAiDQpvdXRwdXQ6IA0KICBodG1sX2RvY3VtZW50OiANCiAgICB0b2M6IHRydWUNCiAgICBudW1iZXJfc2VjdGlvbnM6IHRydWUNCiAgICB0b2NfZGVwdGg6IDINCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlDQogICAgY29kZV9mb2xkaW5nOiBoaWRlDQogICAgdG9jX2Zsb2F0OiB0cnVlDQotLS0NCg0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUpDQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkoZmxleHRhYmxlKQ0KbGlicmFyeShEVCkNCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KHNjYWxlcykNCmxpYnJhcnkoZ29vZ2xlZHJpdmUpDQpsaWJyYXJ5KGdnYW5pbWF0ZSkNCmxpYnJhcnkobWFnaWNrKQ0KYGBgDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQojIEdJ4buaSSBUSEnhu4ZVIELhu5ggROG7riBMSeG7hlUNCg0KKipDb2xsZWdlRGlzdGFuY2UqKg0KDQrEkMOieSBsw6AgdOG6rXAgZOG7ryBsaeG7h3UgxJHGsOG7o2MgdOG6oW8gYuG7n2kgSVBVTVMgVGVycmE6IDxodHRwczovL3RlcnJhLmlwdW1zLm9yZy8+LCBt4buZdCBk4buxIMOhbiBo4bujcCB0w6FjIGdp4buvYSBUcnVuZyB0w6JtIEThu68gbGnhu4d1IETDom4gc+G7kSBQaMOibiB0w61jaCB2w6AgS2hvYSBo4buNYyBYw6MgaOG7mWkgKElQVU1TKSB0aHXhu5ljIMSQ4bqhaSBo4buNYyBNaW5uZXNvdGEgdsOgIFRydW5nIHTDom0gTmdoacOqbiBj4bupdSBEw6JuIHPhu5EgdGh14buZYyDEkOG6oWkgaOG7jWMgVGV4YXMgdOG6oWkgQXVzdGluLg0KDQpC4buZIGThu68gbGnhu4d1IGNvbGxlZ2VkaXN0YW5jZSBiYW8gZ+G7k20gdGjDtG5nIHRpbiB24buBIGtob+G6o25nIGPDoWNoIGdp4buvYSBuaMOgIGPhu6dhIHNpbmggdmnDqm4gdsOgIHRyxrDhu51uZyDEkeG6oWkgaOG7jWMgbcOgIGjhu40gdGhlbyBo4buNYy4gROG7ryBsaeG7h3UgxJHGsOG7o2MgdGh1IHRo4bqtcCB04burIEto4bqjbyBzw6F0IEPhu5luZyDEkeG7k25nIEhvYSBL4buzIG7Eg20gMjAxMCB2w6AgMjAxNS4NCg0KS2h1bmcgZOG7ryBsaeG7h3UgY2jhu6lhIDQuNzM5IHF1YW4gc8OhdCB0csOqbiAxNSBiaeG6v24uDQoNCi0gICByb3duYW1lczogc+G7kSB0aOG7qSB04buxIGPhu6dhIHNpbmggdmnDqm4NCg0KLSAgIGdlbmRlcjogZ2nhu5tpIHTDrW5oIGPhu6dhIHNpbmggdmnDqm4NCg0KLSAgIGV0aG5pY2l0eTogZMOibiB04buZYyAobmfGsOG7nWkgTeG7uSBn4buRYyBQaGksIG5nxrDhu51pIGfhu5FjIFTDonkgQmFuIE5oYSBob+G6t2MgbmfGsOG7nWkga2jDoWMpDQoNCi0gICBzY29yZTogxJFp4buDbSBraeG7g20gdHJhIHThu5VuZyBo4bujcCBj4bunYSBzaW5oIHZpw6puDQoNCi0gICBmY29sbGVnZTogbmfGsOG7nWkgY2hhIHThu5F0IG5naGnhu4dwIMSR4bqhaSBo4buNYw0KDQotICAgbWNvbGxlZ2U6IG5nxrDhu51pIG3hurkgdOG7kXQgbmdoaeG7h3AgxJHhuqFpIGjhu41jDQoNCi0gICBob21lOiBDw7MgbmjDoCDhu58gdOG6oWkgbsahaSBtw6Agc2luaCB2acOqbiDEkWFuZyB0aGVvIGjhu41jDQoNCi0gICB1cmJhbjogbsahaSDhu58gdGh14buZYyBraHUgduG7sWMgxJHDtCB0aOG7iw0KDQotICAgdW5lbXA6IHThu7cgbOG7hyB0aOG6pXQgbmdoaeG7h3ANCg0KLSAgIHdhZ2U6IHRp4buBbiBsxrDGoW5nLCB0aHUgbmjhuq1uIGPhu6dhIHNpbmggdmnDqm4gdsOgIGdpYSDEkcOsbmgNCg0KLSAgIGRpc3RhbmNlOiBLaG/huqNuZyBjw6FjaCB04burIG5ow6AgxJHhur9uIHRyxrDhu51uZyBj4bunYSBzaW5oIHZpw6puDQoNCi0gICB0dWl0aW9uOiBo4buNYyBwaMOtIHRydW5nIGLDrG5oICggxJHGoW4gduG7iyB0w61uaDogMTAwMFVTRCkNCg0KLSAgIGVkdWNhdGlvbjogdHLDrG5oIMSR4buZIGjhu41jIHbhuqVuDQoNCi0gICBpbmNvbWU6IHRodSBuaOG6rXAgZ2lhIMSRw6xuaCB0csOqbiAyNS4wMDAgVVNEL27Eg20gKGNhbykNCg0KLSAgIHJlZ2lvbjoga2h1IHbhu7FjIG3DoCBzaW5oIHZpw6puIMSRYW5nIOG7nw0KDQpExrDhu5tpIMSRw6J5IGzDoCBi4bqjbmcgc+G7kSBsaeG7h3UgY2hpIHRp4bq/dCBj4bunYSBi4buZIGThu68gbGnhu4d1ICoqQ29sbGVnZWRpc3RhbmNlKio6DQoNCmBgYHtyfQ0KbGlicmFyeShjc3YpDQpkYXRhIDwtIHJlYWQuY3N2KGZpbGUuY2hvb3NlKCksIGhlYWRlciA9IFQpDQpkYXRhdGFibGUoZGF0YSkNCmBgYA0KDQpC4buZIGThu68gbGnhu4d1ICoqY29sbGVnZWRpc3RhbmNlKiogbMOgIG3hu5l0IHTDoGkgbmd1ecOqbiBjw7MgZ2nDoSB0cuG7iyBjaG8gY8OhYyBuaMOgIG5naGnDqm4gY+G7qXUsIHNpbmggdmnDqm4gdsOgIG5o4buvbmcgbmfGsOG7nWkga2jDoWMgcXVhbiB0w6JtIMSR4bq/biB2aeG7h2MgbOG7sWEgY2jhu41uIHRyxrDhu51uZyDEkeG6oWkgaOG7jWMgdsOgIHTDoWMgxJHhu5luZyDEkeG6v24gdmnhu4djIHRp4bq/cCBj4bqtbiBnacOhbyBk4bulYyDEkeG6oWkgaOG7jWMgY+G7p2Egc2luaCB2acOqbi4NCg0KLSBOZ2hpw6puIGPhu6l1IHbhu4EgY8OhYyB54bq/dSB04buRIOG6o25oIGjGsOG7n25nIMSR4bq/biBz4buxIGzhu7FhIGNo4buNbiB0csaw4budbmcgxJHhuqFpIGjhu41jIGPhu6dhIHNpbmggdmnDqm4NCg0KLSBOZ2hpw6puIGPhu6l1IHbhu4EgdMOhYyDEkeG7mW5nIGPhu6dhIHPhu7EgxJFhIGThuqFuZyDEkeG6v24ga+G6v3QgcXXhuqMgaOG7jWMgdOG6rXAgY+G7p2Egc2luaCB2acOqbi4uLg0KDQojIFBIw4JOIFTDjUNIDQoNCiMjIMSQ4buTIHRo4buLIHRo4buDIGhp4buHbiBz4buRIGzGsOG7o25nIHNpbmggdmnDqm4gdGhlbyBkw6JuIHThu5ljDQoNClBow6JuIHTDrWNoIMSR4buTIHRo4buLIGPDsyB0aOG7gyBnacO6cCBjw6FjIG5ow6AgZ2nDoW8gZOG7pWMgdsOgIGPDoWMgbmjDoCBob+G6oWNoIMSR4buLbmggY2jDrW5oIHPDoWNoIGhp4buDdSByw7UgaMahbiB24buBIHPhu7EgxJFhIGThuqFuZyBj4bunYSBzaW5oIHZpw6puIHRyb25nIGPDoWMgdHLGsOG7nW5nIGjhu41jIHbDoCBjxqEgc+G7nyBnacOhbyBk4bulYy4gxJBp4buBdSBuw6B5IGPDsyB0aOG7gyBnacO6cCBo4buNIHBow6F0IHRyaeG7g24gY8OhYyBjaMawxqFuZyB0csOsbmggdsOgIGThu4tjaCB24bulIHThu5F0IGjGoW4gxJHhu4MgxJHDoXAg4bupbmcgbmh1IGPhuqd1IGPhu6dhIHThuqV0IGPhuqMgc2luaCB2acOqbi4NCg0KTmdvw6BpIHJhLCBjw7JuIGPDsyB0aOG7gyBnacO6cCB4w6FjIMSR4buLbmggY8OhYyBuaMOzbSBzaW5oIHZpw6puIHRodeG7mWMgY8OhYyBkw6JuIHThu5ljIHRoaeG7g3Ugc+G7kSBi4buLIHRoaeG7h3QgdGjDsmkgdHJvbmcgZ2nDoW8gZOG7pWMuIMSQaeG7gXUgbsOgeSBjw7MgdGjhu4MgZ2nDunAgY8OhYyBuaMOgIGdpw6FvIGThu6VjIHbDoCBjw6FjIG5ow6AgaG/huqFjaCDEkeG7i25oIGNow61uaCBzw6FjaCB04bqtcCB0cnVuZyBuZ3Xhu5NuIGzhu7FjIHbDoG8gbmjhu69uZyBuaMOzbSBzaW5oIHZpw6puIG7DoHkgxJHhu4MgxJHhuqNtIGLhuqNvIHLhurFuZyBo4buNIGPDsyBjxqEgaOG7mWkgdGjDoG5oIGPDtG5nIG5oxrAgbmhhdS4NCg0KYGBge3J9DQp0bXAgPC0gZGF0YQ0KdG1wICU+JSBncm91cF9ieShldGhuaWNpdHkpICU+JSBzdW1tYXJpc2UobiA9IG4oKSkgJT4lIGdncGxvdChhZXMoZXRobmljaXR5LG4pKSArIGdlb21fY29sKGZpbGw9J2dyZWVuJykgKyAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IG4pLHZqdXN0ID0gMiwgY29sb3IgPSAncmVkJykgKyBsYWJzKCB0aXRsZSA9ICJIw6xuaCAxOiDEkOG7kyB0aOG7iyB0aOG7gyBoaeG7h24gc+G7kSBsxrDhu6NuZyBzaW5oIHZpw6puIHRoZW8gZMOibiB04buZYyIpICsgbGFicyggeCA9IkTDom4gdOG7mWMiLCB5ID0gIlPhu5EgbMaw4bujbmciKQ0KDQojZ3JvdXBfYnkoZXRobmljaXR5KTogTmjDs20gZOG7ryBsaeG7h3UgdGhlbyBiaeG6v24gZXRobmljaXR5Lg0KI3N1bW1hcmlzZShuID0gbigpKTogVMOtbmggdOG7lW5nIHPhu5Egc2luaCB2acOqbiBjaG8gbeG7l2kgbmjDs20gZMOibiB04buZYy4NCiNnZ3Bsb3QoYWVzKGV0aG5pY2l0eSwgbikpOiBU4bqhbyBiaeG7g3UgxJHhu5MgZ2dwbG90MiB24bubaSB0cuG7pWMgeCBsw6AgZXRobmljaXR5IHbDoCB0cuG7pWMgeSBsw6Agbi4NCiNnZW9tX2NvbChmaWxsID0gJ2dyZWVuJyk6IFRow6ptIGJp4buDdSDEkeG7kyBj4buZdCB24bubaSBtw6B1IHhhbmggbMOhIGPDonkuDQojZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IG4pLCB2anVzdCA9IDIsIGNvbG9yID0gJ3JlZCcpOiBUaMOqbSBjaMO6IHRow61jaCB2xINuIGLhuqNuIGhp4buDbiB0aOG7iyBz4buRIGzGsOG7o25nIHNpbmggdmnDqm4gY2hvIG3hu5dpIG5ow7NtIGTDom4gdOG7mWMsIHbhu5tpIHbhu4sgdHLDrSBjYW8gaMahbiBt4buZdCBjaMO6dCAodmp1c3QgPSAyKSB2w6AgbcOgdSDEkeG7jy4NCmBgYA0KDQpCaeG7g3UgxJHhu5Mgc+G7kSBsxrDhu6NuZyBzaW5oIHZpw6puIGPhu6dhIG3hu5dpIG5ow7NtIGTDom4gdOG7mWMg4bupbmcgduG7m2kgMSB0aGFuaCwgduG7m2kgY2hp4buBdSBjYW8gY+G7p2EgdGhhbmggYmnhu4N1IHRo4buLIHPhu5EgbMaw4bujbmcgc2luaCB2acOqbiB0cm9uZyBuaMOzbSDEkcOzLiANCg0KLSBT4buRIGzGsOG7o25nIHNpbmggdmnDqm4gdGh14buZYyBjw6FjIGTDom4gdOG7mWMga2jDoWMgbmhp4buBdSBoxqFuIMSRw6FuZyBr4buDIHNvIHbhu5tpIHPhu5EgbMaw4bujbmcgc2luaCB2acOqbiB0aHXhu5ljIGPDoWMgbmjDs20gZMOibiB04buZYyBuZ8aw4budaSBN4bu5IGfhu5FjIFBoaShhZmFtKSB2w6AgbmfGsOG7nWkgZ+G7kWMgVMOieSBCYW4gTmhhKGhpc3BhbmljKSwgY8OzIDMuMDUwIHNpbmggdmnDqm4sIGNoaeG6v20gNjQsMzYlIHRyb25nIHThu5VuZyBz4buRIHNpbmggdmnDqm4gxJFhbmcgdGhlbyBo4buNYyDEkeG6oWkgaOG7jWMuDQoNCi0gU+G7kSBsxrDhu6NuZyBzaW5oIHZpw6puIHRodeG7mWMgZMOibiB04buZYyBuZ8aw4budaSBN4bu5IGfhu5FjIFBoaShhZmFtKSBsw6AgNzg2IHNpbmggdmnDqm4sIGNoaeG6v20gMTYsNTklLCBz4buRIGzGsOG7o25nIHNpbmggdmnDqm4gdGh14buZYyBkw6JuIHThu5ljIG5nxrDhu51pIGfhu5FjIFTDonkgQmFuIE5oYShoaXNwYW5pYykgbMOgIDkwMyBzaW5oIHZpw6puLCBjaGnhur9tIDE5LDA1JQ0KDQoqKkvhur90IGx14bqtbjoqKiBWaeG7h2MgcGjDom4gdMOtY2ggxJHhu5MgdGjhu4sgbsOgeSBjw7MgdGjhu4MgY3VuZyBj4bqlcCB0aMO0bmcgdGluIGNoaSB0aeG6v3QgduG7gSBz4buxIMSRYSBk4bqhbmcgY+G7p2Egc2luaCB2acOqbiB0cm9uZyBjw6FjIHRyxrDhu51uZyBo4buNYyB2w6AgY8ahIHPhu58gZ2nDoW8gZOG7pWMgdsOgIMSRxrDhu6NjIHPhu60gZOG7pW5nIMSR4buDIGPhuqNpIHRoaeG7h24gc+G7sSDEkWEgZOG6oW5nIHbDoCBow7JhIG5o4bqtcCB0cm9uZyBnacOhbyBk4bulYy4NCg0KIyMgxJDhu5MgdGjhu4sgdGjhu4MgaGnhu4duIMSRaeG7g20gdHJ1bmcgYsOsbmggY+G7p2Egc2luaCB2acOqbiB0aGVvIGTDom4gdOG7mWMNCg0KVmnhu4djIHBow6JuIHTDrWNoIMSR4buTIHRo4buLIGPDsyB0aOG7gyBnacO6cCBjw6FjIG5ow6AgZ2nDoW8gZOG7pWMgdsOgIGPDoWMgbmjDoCBob+G6oWNoIMSR4buLbmggY2jDrW5oIHPDoWNoIGhp4buDdSByw7UgaMahbiB24buBIHPhu7Ega2jDoWMgYmnhu4d0IHbhu4Ega+G6v3QgcXXhuqMgaOG7jWMgdOG6rXAgY+G7p2Egc2luaCB2acOqbiBnaeG7r2EgY8OhYyBuaMOzbSBkw6JuIHThu5ljLiDEkGnhu4F1IG7DoHkgY8OzIHRo4buDIGdpw7pwIGjhu40gcGjDoXQgdHJp4buDbiBjw6FjIGNoxrDGoW5nIHRyw6xuaCB2w6AgZOG7i2NoIHbhu6UgdOG7kXQgaMahbiDEkeG7gyDEkcOhcCDhu6luZyBuaHUgY+G6p3UgY+G7p2EgdOG6pXQgY+G6oyBzaW5oIHZpw6puLg0KDQpOZ2/DoGkgcmEsIGPDsm4gY8OzIHRo4buDIMSRxrDhu6NjIHPhu60gZOG7pW5nIMSR4buDIMSRw6FuaCBnacOhIGhp4buHdSBxdeG6oyBj4bunYSBjw6FjIGNoxrDGoW5nIHRyw6xuaCB2w6Agc8Ohbmcga2nhur9uIMSRxrDhu6NjIHRoaeG6v3Qga+G6vyDEkeG7gyB0aHUgaOG6uXAga2hv4bqjbmcgY8OhY2ggxJFp4buDbSB0cnVuZyBiw6xuaCBnaeG7r2EgY8OhYyBuaMOzbSBkw6JuIHThu5ljLiDEkGnhu4F1IG7DoHkgY8OzIHRo4buDIGdpw7pwIGPDoWMgbmjDoCBnacOhbyBk4bulYyB2w6AgY8OhYyBuaMOgIGhv4bqhY2ggxJHhu4tuaCBjaMOtbmggc8OhY2ggeMOhYyDEkeG7i25oIG5o4buvbmcgY2jGsMahbmcgdHLDrG5oIG7DoG8gxJFhbmcgaG/huqF0IMSR4buZbmcgaGnhu4d1IHF14bqjIHbDoCBuaOG7r25nIGNoxrDGoW5nIHRyw6xuaCBuw6BvIGPhuqduIMSRxrDhu6NjIGPhuqNpIHRoaeG7h24uDQoNClbDrSBk4bulOiBN4buZdCB0csaw4budbmcgaOG7jWMgY8OzIHRo4buDIHPhu60gZOG7pW5nIHBow6JuIHTDrWNoIMSR4buTIHRo4buLIMSR4buDIHjDoWMgxJHhu4tuaCB4ZW0gY8OzIHPhu7EgY2jDqm5oIGzhu4djaCBuw6BvIHbhu4EgxJFp4buDbSB0cnVuZyBiw6xuaCBnaeG7r2EgY8OhYyBuaMOzbSBkw6JuIHThu5ljIGhheSBraMO0bmcuIE3hu5l0IHF14bqtbiBo4buNYyBjw7MgdGjhu4Mgc+G7rSBk4bulbmcgcGjDom4gdMOtY2ggxJHhu5MgdGjhu4sgxJHhu4MgeMOhYyDEkeG7i25oIHhlbSBjw7Mgc+G7sSBjaMOqbmggbOG7h2NoIG7DoG8gduG7gSB04bu3IGzhu4cgaOG7jWMgc2luaCDEkeG6oXQgxJFp4buDbSBjYW8gdHJvbmcgY8OhYyBr4buzIHRoaSBjaHXhuqluIGjDs2EgZ2nhu69hIGPDoWMgbmjDs20gZMOibiB04buZYyBoYXkga2jDtG5nLg0KDQpgYGB7cn0NCnRtcCA8LSBkYXRhDQp0bXAgJT4lIGdyb3VwX2J5KGV0aG5pY2l0eSkgJT4lIHN1bW1hcmlzZShtPSBtZWFuKHNjb3JlKSkgJT4lDQogIGdncGxvdChhZXMoeCA9IGV0aG5pY2l0eSx5ID0gbSkpICsNCiAgICBnZW9tX2NvbChwb3NpdGlvbiA9ICdkb2RnZScpICsgZ2VvbV9jb2woZmlsbD0gJ3JlZCcpICsgDQogICAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHJvdW5kKG0sMikpLCB2anVzdCA9IDIsIGNvbG9yID0gJ3doaXRlJykgKw0KICAgIGxhYnMoeCA9ICdEw6JuIHThu5ljJywgeSA9ICfEkGnhu4NtIHRydW5nIGLDrG5oJykgK2xhYnMoIHRpdGxlID0gIkjDrG5oIDI6IMSQ4buTIHRo4buLIHRo4buDIGhp4buHbiDEkWnhu4NtIHRydW5nIGLDrG5oIGPhu6dhIHNpbmggdmnDqm4iKQ0KDQoNCiNuaMOzbSBk4buvIGxp4buHdSB0aGVvIGV0aG5pY2l0eSB2w6AgdMOtbmggxJFp4buDbSB0cnVuZyBiw6xuaCAobSA9IG1lYW4oc2NvcmUpKSB0cm9uZyBt4buXaSBuaMOzbS4NCg0KI1ThuqFvIHJhIG3hu5l0IGJp4buDdSDEkeG7kyB24bubaSB0cuG7pWMgeCBsw6AgZXRobmljaXR5IHbDoCB0cuG7pWMgeSBsw6AgxJFp4buDbSB0cnVuZyBiw6xuaCBtLiBUaGFtIHPhu5EgcG9zaXRpb24gPSAnZG9kZ2UnIGdpw7pwIGPDoWMgY+G7mXQgdHLDoW5oIGNo4buTbmcgY2jDqW8gbMOqbiBuaGF1LCBk4buFIGTDoG5nIHBow6JuIGJp4buHdCBjw6FjIG5ow7NtIGTDom4gdOG7mWMuDQoNCiNnZW9tX2NvbChmaWxsID0gJ3JlZCcpOiBEw7JuZyBuw6B5IHTDtCBtw6B1IMSR4buPIChmaWxsID0gJ3JlZCcpIGNobyBjw6FjIGPhu5l0Lg0KDQojZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHJvdW5kKG0sIDIpKSwgdmp1c3QgPSAyLCBjb2xvciA9ICd3aGl0ZScpOiBEw7JuZyBuw6B5IHRow6ptIG5ow6NuIHbDoG8gY8OhYyBj4buZdCwgaGnhu4NuIHRo4buLIMSRaeG7g20gdHJ1bmcgYsOsbmggxJHGsOG7o2MgbMOgbSB0csOybiDEkeG6v24gMiBjaOG7ryBz4buRIChyb3VuZChtLCAyKSkgY2hvIG3hu5dpIG5ow7NtLiBW4buLIHRyw60gY+G7p2EgbmjDo24gxJHGsOG7o2MgxJFp4buBdSBjaOG7iW5oIGLhurFuZyB2anVzdCA9IDIgdsOgIG3DoHUgc+G6r2MgY+G7p2EgbmjDo24gxJHGsOG7o2MgxJHhurd0IHRow6BuaCB0cuG6r25nIChjb2xvciA9ICd3aGl0ZScpLg0KYGBgDQoNCkJp4buDdSDEkeG7kyBr4bq/dCBxdeG6oyBz4bq9IGhp4buDbiB0aOG7iyBjw6FjIGPhu5l0IGjDrG5oIHRoYW5oIG7hurFtIGPhuqFuaCBuaGF1LCBt4buZdCBj4buZdCBjaG8gbeG7l2kgbmjDs20gZMOibiB04buZYy4gQ2hp4buBdSBjYW8gY+G7p2EgbeG7l2kgY+G7mXQgxJHhuqFpIGRp4buHbiBjaG8gxJFp4buDbSB0cnVuZyBiw6xuaCBj4bunYSBiaeG6v24gc2NvcmUgdHJvbmcgbmjDs20gZMOibiB04buZYyDEkcOzLiBOaMOjbiB0csOqbiBt4buXaSBj4buZdCBoaeG7g24gdGjhu4sgxJFp4buDbSB0cnVuZyBiw6xuaCDEkcaw4bujYyBsw6BtIHRyw7JuIMSR4bq/biAyIGNo4buvIHPhu5EuDQpOaMOsbiBjaHVuZyB0aMOsIHThu5VuZyDEkWnhu4NtIHRydW5nIGLDrG5oIGPhu6dhIHNpbmggdmnDqm4gdGh14buZYyBj4bqjIDMgbmjDs20gZMOibiB04buZYyDEkeG7gXUga2jDoSBjYW8uIFR1eSBuaGnDqm4sIMSRaeG7g20gdHJ1bmcgYsOsbmggY+G7p2Egc2luaCB2acOqbiB0aHXhu5ljIG5ow7NtIGPDoWMgZMOibiB04buZYyBraMOhYyBjw7MgdOG7lW5nIMSRaeG7g20gdHJ1bmcgYsOsbmggNTMuMTcgxJFp4buDbSwgY2FvIGjGoW4gc28gduG7m2kgY8OhYyBuaMOzbSBkw6JuIHThu5ljIG5nxrDhu51pIE3hu7kgZ+G7kWMgUGhpKGFmYW0pIHbDoCBuZ8aw4budaSBn4buRYyBUw6J5IEJhbiBOaGEoaGlzcGFuaWMpIA0KDQoqKkvhur90IGx14bqtbjoqKiDEkOG7kyB0aOG7iyB0aOG7gyBoaeG7h24gxJFp4buDbSB0cnVuZyBiw6xuaCBj4bunYSBzaW5oIHZpw6puIHRoZW8gZMOibiB04buZYyBj4bunYSBi4buZIGThu68gbGnhu4d1IGNvbGxlZ2VkaXN0YW5jZSBjdW5nIGPhuqVwIGNobyBjaMO6bmcgdGEgbeG7mXQgc+G7kSB0aMO0bmcgdGluIGjhu691IMOtY2ggduG7gSDEkWnhu4NtIHPhu5EgY+G7p2Egc2luaCB2acOqbiB0aHXhu5ljIGPDoWMgbmjDs20gZMOibiB04buZYyBraMOhYyBuaGF1LCB04burIMSRw7MgZ2nDunAgY8OhYyBuaMOgIGdpw6FvIGThu6VjIHbDoCBjw6FjIG5ow6AgaG/huqFjaCDEkeG7i25oIGNow61uaCBzw6FjaCB4w6FjIMSR4buLbmggbmjhu69uZyBjaMawxqFuZyB0csOsbmggbsOgbyDEkWFuZyBob+G6oXQgxJHhu5luZyBoaeG7h3UgcXXhuqMgdsOgIG5o4buvbmcgY2jGsMahbmcgdHLDrG5oIG7DoG8gY+G6p24gxJHGsOG7o2MgY+G6o2kgdGhp4buHbi4NCg0KIyMgxJDhu5MgdGjhu4sgdGjhu4MgaGnhu4duIHPhu5EgbMaw4bujbmcgc2luaCB2acOqbiB0aGVvIHjhur9wIGxv4bqhaSDEkWnhu4NtIHPhu5ENCg0KVmnhu4djIHBow6JuIHTDrWNoIMSR4buTIHRo4buLIG7DoHkgZ2nDunAgZ2nhuqNuZyB2acOqbiB2w6AgbmjDoCB0csaw4budbmcgxJHDoW5oIGdpw6EgaGnhu4d1IHF14bqjIGPhu6dhIGPDoWMgcGjGsMahbmcgcGjDoXAgZ2nhuqNuZyBk4bqheSB2w6AgY2jGsMahbmcgdHLDrG5oIGjhu41jLiBYw6FjIMSR4buLbmggbmjhu69uZyDEkWnhu4NtIG3huqFuaCB2w6AgxJFp4buDbSB54bq/dSB0cm9uZyBxdcOhIHRyw6xuaCBnaeG6o25nIGThuqF5LCB04burIMSRw7MgxJHGsGEgcmEgY8OhYyBnaeG6o2kgcGjDoXAgY+G6o2kgdGnhur9uIHBow7kgaOG7o3AuDQoNCljDoWMgxJHhu4tuaCB4dSBoxrDhu5tuZyBo4buNYyB04bqtcCBj4bunYSBzaW5oIHZpw6puIHRoZW8gdGjhu51pIGdpYW4sIHF1YSDEkcOzIGPDsyB0aOG7gyBk4buxIMSRb8OhbiBuaHUgY+G6p3UgaOG7jWMgdOG6rXAgdHJvbmcgdMawxqFuZyBsYWkuIEdpw7pwIGPDoWMgbmjDoCBob+G6oWNoIMSR4buLbmggZ2nDoW8gZOG7pWMgeMOieSBk4buxbmcgY2hp4bq/biBsxrDhu6NjIHBow6F0IHRyaeG7g24gcGjDuSBo4bujcCB24bubaSBuaHUgY+G6p3UgY+G7p2Egc2luaCB2acOqbiB2w6Agc2luaCB2acOqbiBzbyBzw6FuaCBr4bq/dCBxdeG6oyBo4buNYyB04bqtcCBj4bunYSBi4bqjbiB0aMOibiB24bubaSBjw6FjIGLhuqFuIGPDuW5nIHRyYW5nIGzhu6lhIMSR4buDIMSR4buLbmggaMaw4bubbmcgbeG7pWMgdGnDqnUgaOG7jWMgdOG6rXAgdsOgIGzhu7FhIGNo4buNbiBwaMawxqFuZyBwaMOhcCBo4buNYyB04bqtcCBwaMO5IGjhu6NwLg0KDQpgYGB7cn0NCnRtcCA8LSBkYXRhIA0KdG1wIDwtIHRtcCAlPiUgbXV0YXRlKHNjb3JlQyA9IGN1dChzY29yZSwzLCBsYWJlbCA9IGMoJ0dp4buPaScsICdLaMOhJywnVHJ1bmcgYsOsbmgnKSkpDQp0bXAgJT4lIGdncGxvdChhZXMoeCA9IHNjb3JlQykpICsgDQogIGdlb21fYmFyKGZpbGwgPSAnYmx1ZScpK2xhYnMoeCA9ICJY4bq/cCBsb+G6oWkiLCB5ID0gIlPhu5EgbMaw4bujbmciKSArIGxhYnMoIHRpdGxlID0gIkjDrG5oIDM6IMSQ4buTIHRo4buLIHRo4buDIGhp4buHbiBz4buRIGzGsOG7o25nIHNpbmggdmnDqm4gdGhlbyB44bq/cCBsb+G6oWkgxJFp4buDbSBz4buRIikNCg0KDQojIHThuqFvIHJhIG3hu5l0IGJp4bq/biBt4bubaSBzY29yZUMgYuG6sW5nIGPDoWNoIGNoaWEgxJFp4buDbSBz4buRIHNjb3JlIHRow6BuaCAzIG5ow7NtIChj4bqvdCkgduG7m2kgY8OhYyBuaMOjbiB0xrDGoW5nIOG7qW5nIGzDoCAiR2nhu49pIiwgIktow6EiLCB2w6AgIlRydW5nIGLDrG5oIg0KDQojIHThuqFvIHJhIG3hu5l0IGJp4buDdSDEkeG7kyB24bubaSB0cuG7pWMgeCBsw6AgYmnhur9uIG3hu5tpIHThuqFvIHJhIHbhu5tpIGPDoWMgdGhhbmggbcOgdSB4YW5oIGTGsMahbmcgdsOgIHRow6ptIHRpw6p1IMSR4buBIGNobyB0cuG7pWMgeCAoIljhur9wIGxv4bqhaSIpIHbDoCB0cuG7pWMgeSAoIlPhu5EgbMaw4bujbmciKS4NCmBgYA0KDQpCaeG7g3UgxJHhu5Mga+G6v3QgcXXhuqMgc+G6vSBoaeG7g24gdGjhu4sgYmEgdGhhbmgsIG3hu5dpIHRoYW5oIMSR4bqhaSBkaeG7h24gY2hvIHPhu5EgbMaw4bujbmcgc2luaCB2acOqbiB0aHXhu5ljIG3hu5l0IG5ow7NtIHjhur9wIGxv4bqhaSBo4buNYyB04bqtcC4NCg0KQ8OzIHRo4buDIHRo4bqleSBy4bqxbmcsIHPhu5EgbMaw4bujbmcgc2luaCB2acOqbiDEkeG6oXQga+G6v3QgcXXhuqMgaOG7jWMgdOG6rXAgeOG6v3AgbG/huqFpIGtow6EgdHLhu58gbMOqbiBraMOhIGNhbywgdHJvbmcgxJHDsyBzaW5oIHZpw6puIMSR4bqhdCBo4buNYyBs4buxYyBraMOhIGNoaeG6v20gxJFhIHPhu5EgKHRyw6puIDIuNTAwIHNpbmggdmnDqm4pLCBo4buNYyBs4buxYyBnaeG7j2kgY8OzIHRyw6puIDEuMDAwIHNpbmggdmnDqm4gdsOgIGjhu41jIGzhu7FjIHRydW5nIGLDrG5oIGPDsyB0csOqbiAxLjAwMCBzaW5oIHZpw6puLg0KDQoqKkvhur90IGx14bqtbjoqKiBWaeG7h2MgcGjDom4gdMOtY2ggxJDhu5MgdGjhu4sgdGjhu4MgaGnhu4duIHPhu5EgbMaw4bujbmcgc2luaCB2acOqbiB0aGVvIHjhur9wIGxv4bqhaSDEkWnhu4NtIHPhu5EgbMOgIG3hu5l0IGPDtG5nIGPhu6UgaOG7r3Ugw61jaCBjaG8gY8OhYyBiw6puIGxpw6puIHF1YW4gdHJvbmcgbMSpbmggduG7sWMgZ2nDoW8gZOG7pWMgxJHhu4MgxJHDoW5oIGdpw6EgaGnhu4d1IHF14bqjIGdp4bqjbmcgZOG6oXksIHBow6JuIHTDrWNoIHh1IGjGsOG7m25nIGjhu41jIHThuq1wLCBjdW5nIGPhuqVwIHRow7RuZyB0aW4gY2hvIHNpbmggdmnDqm4sIGjhu5cgdHLhu6MgdMawIHbhuqVuIHbDoCDEkeG7i25oIGjGsOG7m25nLCB2w6AgdWx0aW1hdGVseSwgbsOibmcgY2FvIGNo4bqldCBsxrDhu6NuZyBnacOhbyBk4bulYy4NCg0KIyMgxJDhu5MgdGjhu4sgdGjhu4MgaGnhu4duIG3hu6ljIGzGsMahbmcvdGh1IG5o4bqtcCBj4bunYSBzaW5oIHZpw6puDQoNClZp4buHYyBwaMOibiB0w61jaCBuw6B5IGdpw7pwIGPDoWMgdHLGsOG7nW5nIMSR4bqhaSBo4buNYyB2w6AgY2FvIMSR4bqzbmcgxJHDoW5oIGdpw6EgbeG7qWMgdGh1IG5o4bqtcCBj4bunYSBzaW5oIHZpw6puIHbDoCBnaWEgxJHDrG5oLCDEkeG7gyB04burIMSRw7MgxJFp4buBdSBjaOG7iW5oIG3hu6ljIGjhu41jIHBow60gcGjDuSBo4bujcCBjxaluZyBuaMawIGPDoWMgY2jDrW5oIHPDoWNoIHbhu4Egdmnhu4djIG1p4buFbiBnaeG6o2kgaOG7jWMgcGjDrSB2w6AgY8OhYyBjaMOtbmggc8OhY2ggaOG7jWMgYuG7lW5nIGNobyBzaW5oIHZpw6puLg0KDQpOZ2/DoGkgcmEsIGPDsm4gZ8OzcCBwaOG6p24gbsOibmcgY2FvIGNo4bqldCBsxrDhu6NuZyBnacOhbyBk4bulYyB0aMO0bmcgcXVhIHZp4buHYyBj4bqjaSB0aGnhu4duIGNoxrDGoW5nIHRyw6xuaCDEkcOgbyB04bqhbywgxJHhu4tuaCBoxrDhu5tuZyBuZ2jhu4EgbmdoaeG7h3AgY2hvIHNpbmggdmnDqm4gdsOgIGjhu5cgdHLhu6Mgc2luaCB2acOqbiB0w6xtIGtp4bq/bSB2aeG7h2MgbMOgbSBoaeG7h3UgcXXhuqMgaMahbi4NCg0KYGBge3J9DQp0bXAgPC0gZGF0YQ0KdG1wIDwtIHRtcCAlPiUgbXV0YXRlKHdhZ2VjID0gY3V0KHdhZ2UsNCwgbGFiZWwgPSBjKCdDYW8nLCdLaMOhIGNhbycsJ1RydW5nIGLDrG5oJywnVGjhuqVwJykpKQ0KdG1wICU+JSBnZ3Bsb3QoYWVzKHggPSB3YWdlYykpICsgDQogIGdlb21fYmFyKGZpbGwgPSAncmVkJykrbGFicyh4ID0gIljhur9wIGxv4bqhaSIsIHkgPSAiU+G7kSBsxrDhu6NuZyIpICsgbGFicyggdGl0bGUgPSAiSMOsbmggNDogxJDhu5MgdGjhu4sgdGjhu4MgaGnhu4duIHRp4buBbiBsxrDGoW5nL3RodSBuaOG6rXAgY+G7p2Egc2luaCB2acOqbiIpDQoNCiMgdOG6oW8gcmEgbeG7mXQgYmnhur9uIG3hu5tpIHdhZ2VjIGLhurFuZyBjw6FjaCBjaGlhIHRp4buBbiBsxrDhu6NuZyB0aMOgbmggNCBuaMOzbSB24bubaSBjw6FjIG5ow6NuIHTGsMahbmcg4bupbmcgbMOgICJDYW8iLCAiS2jDoSBjYW8iLCAiVHJ1bmcgYsOsbmgiIHbDoCAiVGjhuqVwIg0KDQojIHThuqFvIHJhIG3hu5l0IGJp4buDdSDEkeG7kyB24bubaSB0cuG7pWMgeCBsw6AgYmnhur9uIG3hu5tpIHThuqFvIHJhIHbhu5tpIGPDoWMgdGhhbmggbcOgdSDEkeG7jyB2w6AgdGjDqm0gdGnDqnUgxJHhu4EgY2hvIHRy4bulYyB4ICgiWOG6v3AgbG/huqFpIikgdsOgIHRy4bulYyB5ICgiU+G7kSBsxrDhu6NuZyIpLg0KYGBgDQoNCk5oaeG7gXUgbmdoacOqbiBj4bupdSDEkcOjIGNo4buJIHJhIHLhurFuZywgY8OzIG3hu5FpIGxpw6puIGjhu4cgbeG6rXQgdGhp4bq/dCBnaeG7r2EgbeG7qWMgdGh1IG5o4bqtcCBj4bunYSBnaWEgxJHDrG5oIHbDoCBr4bq/dCBxdeG6oyBo4buNYyB04bqtcCBj4bunYSBzaW5oIHZpw6puLiBTaW5oIHZpw6puIHh14bqldCB0aMOibiB04burIGdpYSDEkcOsbmggY8OzIHRodSBuaOG6rXAgY2FvIHRoxrDhu51uZyBjw7MgbcO0aSB0csaw4budbmcgaOG7jWMgdOG6rXAgdOG7kXQgaMahbiwgbsahaSBo4buNIMSRxrDhu6NjIHRp4bq/cCB4w7pjIHbhu5tpIG5oaeG7gXUgbmd14buTbiB0aMO0bmcgdGluIHbDoCBjxqEgaOG7mWkgaOG7jWMgdOG6rXAgaMahbiBzbyB24bubaSBzaW5oIHZpw6puIHh14bqldCB0aMOibiB04burIGdpYSDEkcOsbmggY8OzIHRodSBuaOG6rXAgdGjhuqVwLg0KDQpUaGVvIMSR4buTIHRo4buLIHRow6wgc2luaCB2acOqbiBtw6AgZ2lhIMSRw6xuaCBjw7MgbeG7qWMgdGh1IG5o4bqtcCBraMOhIGNhbyB2w6AgdHJ1bmcgYsOsbmggY2hp4bq/bSBz4buRIGzGsOG7o25nIMSRYSBz4buRLiBOaOG7r25nIHNpbmggdmnDqm4gbcOgIGdpYSDEkcOsbmggY8OzIG3hu6ljIHRodSBuaOG6rXAgY2FvIGPDsyBraG/huqNuZyA4MDAgc2luaCB2acOqbiwgY8OzIG3hu6ljIHRodSBuaOG6rXAga2jDoSBjYW8gY8OzIHRyw6puIDEuMDAwIHNpbmggdmnDqm4sIG3hu6ljIHRodSBuaOG6rXAgdHJ1bmcgYsOsbmggdHLDqm4gMS4wMDAgc2luaCB2acOqbiB2w6AgbeG7qWMgdGh1IG5o4bqtcCB0aOG6pXAgY8OzIGtob+G6o25nIDUwMCBzaW5oIHZpw6puLg0KDQoqKkvhur90IGx14bqtbjoqKiBWaeG7h2MgcGjDom4gdMOtY2ggxJDhu5MgdGjhu4sgdGjhu4MgaGnhu4duIG3hu6ljIGzGsMahbmcvdGh1IG5o4bqtcCBj4bunYSBzaW5oIHZpw6puIGzDoCBt4buZdCBjw7RuZyBj4bulIGjhu691IMOtY2ggY2hvIGPDoWMgYsOqbiBsacOqbiBxdWFuIHRyb25nIGzEqW5oIHbhu7FjIGdpw6FvIGThu6VjIHbDoCBsYW8gxJHhu5luZyDEkeG7gyDEkcOhbmggZ2nDoSBoaeG7h3UgcXXhuqMgxJHDoG8gdOG6oW8sIMSRxrBhIHJhIGPDoWMgY2jDrW5oIHPDoWNoIGjhu5cgdHLhu6MgaOG7jWMgcGjDrSB2w6AgaOG7lyB0cuG7oyBzaW5oIHZpw6puIGzhu7FhIGNo4buNbiBuZ2jhu4EgbmdoaeG7h3AsIG5naGnDqm4gY+G7qXUgdGjhu4sgdHLGsOG7nW5nIGxhbyDEkeG7mW5nIHbDoCB1bHRpbWF0ZWx5LCBuw6JuZyBjYW8gY2jhuqV0IGzGsOG7o25nIGdpw6FvIGThu6VjLg0KDQojIyDEkOG7kyB0aOG7iyB0aOG7gyBoaeG7h24gc+G7kSBsxrDhu6NuZyBzaW5oIHZpw6puIHRoZW8gZ2nhu5tpIHTDrW5oIOG7nyBt4buXaSBkw6JuIHThu5ljDQoNClZp4buHYyBwaMOibiB0w61jaCBuw6B5IGdpw7pwIGPDoWMgbmjDoCBob+G6oWNoIMSR4buLbmggY2jDrW5oIHPDoWNoIHbDoCBuaMOgIHRyxrDhu51uZyDEkcOhbmggZ2nDoSBt4bupYyDEkeG7mSBiw6xuaCDEkeG6s25nIGdp4bubaSB0cm9uZyBnacOhbyBk4bulYyDhu58gY8OhYyBkw6JuIHThu5ljIGtow6FjIG5oYXUgdsOgIHjDoWMgxJHhu4tuaCBuaOG7r25nIGTDom4gdOG7mWMgY8OzIHThu7cgbOG7hyBjaMOqbmggbOG7h2NoIGdp4bubaSB0w61uaCBjYW8gdHJvbmcgZ2nDoW8gZOG7pWMgxJHhu4MgY8OzIGJp4buHbiBwaMOhcCBjYW4gdGhp4buHcCBwaMO5IGjhu6NwLiBTbyBzw6FuaCB04bu3IGzhu4cgc2luaCB2acOqbiBuYW0gdsOgIG7hu68gdGhlbyBkw6JuIHThu5ljIHRyb25nIGPDoWMgZ2lhaSDEkW/huqFuIGtow6FjIG5oYXUgxJHhu4MgxJHDoW5oIGdpw6EgeHUgaMaw4bubbmcgdGhheSDEkeG7lWkgdGhlbyB0aOG7nWkgZ2lhbi4NCg0KYGBge3J9DQp0bXAgPC0gZGF0YQ0KdG1wICU+JSBncm91cF9ieShldGhuaWNpdHksZ2VuZGVyKSAlPiUgc3VtbWFyaXNlKG49bigpKSAlPiUgZ2dwbG90KGFlcyh4ID0gZXRobmljaXR5LHkgPSBuKSkgKyBnZW9tX2NvbChwb3NpdGlvbiA9ICdkb2RnZScpICsgZmFjZXRfd3JhcCh+Z2VuZGVyKSArIGdlb21fdGV4dChhZXMobGFiZWwgPSBuKSx2anVzdCA9IDAsIGNvbG9yID0gJ2dyZWVuJykgKyBsYWJzKHggPSAnRMOibiB04buZYycsIHkgPSAnU+G7kSBsxrDhu6NuZycpICsgbGFicyh0aXRsZSA9ICJIw6xuaCA1OiDEkOG7kyB0aOG7iyBz4buRIGzGsOG7o25nICBzaW5oIHZpw6puIHRoZW8gZ2nhu5tpIHTDrW5oIOG7nyBt4buXaSBkw6JuIHThu5ljIikNCmBgYA0KDQpD4bqjIDIgYmnhu4N1IMSR4buTIMSR4buBdSB0aOG7gyBoaeG7h24gc+G7kSBsxrDhu6NuZyBzaW5oIHZpw6puLCBt4buXaSBiaeG7g3UgxJHhu5MgdGjhu4MgaGnhu4duIG3hu5l0IG5ow7NtIGdp4bubaSB0w61uaCB0aGVvIGPDoWMgbmjDs20gZMOibiB04buZYy4gTeG7l2kgbmjDs20gZ2nhu5tpIHTDrW5oIHPhur0gY8OzIGJhIGPhu5l0IHjhur9wIGPhuqFuaCBuaGF1LCBjaGnhu4F1IGNhbyBj4bunYSBt4buXaSBj4buZdCDEkeG6oWkgZGnhu4duIGNobyBz4buRIGzGsOG7o25nIHNpbmggdmnDqm4gdGh14buZYyB04burbmcgbmjDs20gZMOibiB04buZYy4NCg0KTmjDrG4gY2h1bmcgdGjDrCBz4buRIGzGsOG7o25nIHNpbmggdmnDqm4gbmFtIHbDoCBzaW5oIHZpw6puIG7hu68ga2jDtG5nIGPDsyBz4buxIGNow6puaCBs4buHbmggbmhp4buBdS4gVHV5IG5oacOqbiB0aMOsIHPhu5EgbMaw4bujbmcgc2luaCB2acOqbiBuYW0gdGhlbyBo4buNYyDEkeG6oWkgaOG7jWMgdsOgIGNhbyDEkeG6s25nIOG7nyBjw6FjIG5ow7NtIGTDom4gdOG7mWMgxJHhu4F1IGNhbyBoxqFuIHPhu5EgbMaw4bujbmcgc2luaCB2acOqbiBu4buvIChjaGnhur9tIDU0LDg2JSB0cm9uZyB04buVbmcgc+G7kSBzaW5oIHZpw6puKQ0KDQoqKkvhur90IGx14bqtbjoqKiBWaeG7h2MgcGjDom4gdMOtY2ggxJDhu5MgdGjhu4sgdGjhu4MgaGnhu4duIHPhu5EgbMaw4bujbmcgc2luaCB2acOqbiB0aGVvIGdp4bubaSB0w61uaCDhu58gbeG7l2kgZMOibiB04buZYyBsw6AgbeG7mXQgY8O0bmcgY+G7pSBo4buvdSDDrWNoIMSR4buDIMSRw6FuaCBnacOhIHPhu7EgYsOsbmggxJHhurNuZyBnaeG7m2kgdHJvbmcgZ2nDoW8gZOG7pWMsIHBow6JuIHTDrWNoIHh1IGjGsOG7m25nIHRoZW8gdGjhu51pIGdpYW4sIG5naGnDqm4gY+G7qXUgduG7gSBjw6FjIHnhur91IHThu5Eg4bqjbmggaMaw4bufbmcgdsOgIG7Dom5nIGNhbyBjaOG6pXQgbMaw4bujbmcgZ2nDoW8gZOG7pWMuDQoNCiMjIMSQ4buTIHRo4buLIHRo4buDIGhp4buHbiBz4buRIGzGsOG7o25nIHNpbmggdmnDqm4gY8OzIGNoYSBt4bq5IHThu5F0IG5naGnhu4dwIMSR4bqhaSBo4buNYyBj4bunYSBt4buXaSBkw6JuIHThu5ljDQoNClZp4buHYyBwaMOibiB0w61jaCBuw6B5IGdpw7pwIGPDoWMgbmjDoCBuZ2hpw6puIGPhu6l1IHbDoCBuaMOgIGhv4bqhY2ggxJHhu4tuaCBjaMOtbmggc8OhY2ggxJHDoW5oIGdpw6Eg4bqjbmggaMaw4bufbmcgY+G7p2EgbuG7gW4gdOG6o25nIGdpYSDEkcOsbmgsIGPhu6UgdGjhu4MgbMOgIHRyw6xuaCDEkeG7mSBo4buNYyB24bqlbiBj4bunYSBjaGEgbeG6uSwgxJHhur9uIHZp4buHYyBo4buNYyB04bqtcCBj4bunYSBjb24gY8OhaS4gWMOhYyDEkeG7i25oIG5o4buvbmcgZMOibiB04buZYyBjw7MgdOG7tyBs4buHIHNpbmggdmnDqm4gY8OzIGNoYSBt4bq5IHThu5F0IG5naGnhu4dwIMSR4bqhaSBo4buNYyBjYW8gxJHhu4MgaOG7jWMgaOG7j2kga2luaCBuZ2hp4buHbSB2w6AgbmjDom4gcuG7mW5nIG3DtCBow6xuaC4NCg0KR2nDunAgc28gc8OhbmggdOG7tyBs4buHIHNpbmggdmnDqm4gY8OzIGNoYSBt4bq5IHThu5F0IG5naGnhu4dwIMSR4bqhaSBo4buNYyB0aGVvIGTDom4gdOG7mWMgdHJvbmcgY8OhYyBnaWFpIMSRb+G6oW4ga2jDoWMgbmhhdSDEkeG7gyDEkcOhbmggZ2nDoSB4dSBoxrDhu5tuZyB0aGF5IMSR4buVaSB0aGVvIHRo4budaSBnaWFuLiBYw6FjIMSR4buLbmggbmjhu69uZyBkw6JuIHThu5ljIGPDsyBz4buxIHRoYXkgxJHhu5VpIHTDrWNoIGPhu7FjIGhv4bq3YyB0acOqdSBj4buxYyB24buBIOG6o25oIGjGsOG7n25nIGPhu6dhIG7hu4FuIHThuqNuZyBnaWEgxJHDrG5oIMSR4bq/biB2aeG7h2MgaOG7jWMgdOG6rXAgY+G7p2Egc2luaCB2acOqbi4NCg0KYGBge3J9DQp0bXAgPC0gZGF0YQ0KdG1wIDwtIHRtcCAlPiUgZ3JvdXBfYnkoZXRobmljaXR5LCBmY29sbGVnZSkgJT4lIHN1bW1hcmlzZShuID0gbigpKQ0KdG1wICU+JSBnZ3Bsb3QoYWVzKHggPSBldGhuaWNpdHksIHkgPSBuLCBmaWxsID0gZmNvbGxlZ2UpKSArIGdlb21fY29sKHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2UoKSkgKyBsYWJzKHggPSAiRMOibiB04buZYyIsIHkgPSAiU+G7kSBsxrDhu6NuZyIpICsgbGFicyggdGl0bGUgPSAiSMOsbmggNjogxJDhu5MgdGjhu4sgdGjhu4MgaGnhu4duIHPhu5EgbMaw4bujbmcgc2luaCB2acOqbiBjw7MgY2hhIHThu5F0IG5naGnhu4dwIMSR4bqhaSBo4buNYyIpDQoNCiMgbmjDs20gZOG7ryBsaeG7h3UgdGhlbyBj4bqjIGV0aG5pY2l0eSB2w6AgZmNvbGxlZ2UuIFNhdSDEkcOzLCBuw7MgdMOtbmggdOG7lW5nIHPhu5EgbMaw4bujbmcgc2luaCB2acOqbiAobiA9IG4oKSkNCg0KIyAgdOG6oW8gcmEgbeG7mXQgYmnhu4N1IMSR4buTIGdncGxvdCB24bubaTpUcuG7pWMgeDogZXRobmljaXR5IChkw6JuIHThu5ljKSwgVHLhu6VjIHk6IG4gKHThu5VuZyBz4buRIGzGsOG7o25nIHNpbmggdmnDqm4pIHbDoCBjw6FjIHRoYW5oIMSRxrDhu6NjIHjDoWMgxJHhu4tuaCBi4bufaSBiaeG6v24gZmNvbGxlZ2UgKG5ndXnhu4duIHbhu41uZyB0aGVvIGjhu41jIMSR4bqhaSBo4buNYykNCg0KYGBgDQoNCmBgYHtyfQ0KdG1wIDwtIGRhdGENCnRtcCA8LSB0bXAgJT4lIGdyb3VwX2J5KGV0aG5pY2l0eSwgbWNvbGxlZ2UpICU+JSBzdW1tYXJpc2UobiA9IG4oKSkNCnRtcCAlPiUgZ2dwbG90KGFlcyh4ID0gZXRobmljaXR5LCB5ID0gbiwgZmlsbCA9IG1jb2xsZWdlKSkgK2dlb21fY29sKHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2UoKSkgKyBsYWJzKHggPSAiRMOibiB04buZYyIsIHkgPSAiU+G7kSBsxrDhu6NuZyIpICsgbGFicyggdGl0bGUgPSAiSMOsbmggNzogxJDhu5MgdGjhu4sgdGjhu4MgaGnhu4duIHPhu5EgbMaw4bujbmcgc2luaCB2acOqbiBjw7MgbeG6uSB04buRdCBuZ2hp4buHcCDEkeG6oWkgaOG7jWMiKQ0KYGBgDQoNCsSQw6J5IGzDoCBoYWkgYmnhu4N1IMSR4buTIGhp4buDbiB0aOG7iyBz4buRIGzGsOG7o25nIHNpbmggdmnDqm4gY8OzIGNoYSB2w6AgbeG6uSB04buRdCBuZ2hp4buHcCDEkeG6oWkgaOG7jWMgY+G7p2EgbeG7l2kgbmjDs20gZMOibiB04buZYyAuIE3hu5dpIG5ow7NtIGTDom4gdOG7mWMgY8OzIGhhaSBj4buZdCB44bq/cCBj4bqhbmggbmhhdSwgbeG7mXQgY+G7mXQgbMOgICJubyIgbMOgIGNoYS9t4bq5IGtow7RuZyB04buRdCBuZ2hp4buHcCDEkeG6oWkgaOG7jWMgdsOgIG3hu5l0IGPhu5l0ICJ5ZXMiIGzDoCBjaGEvbeG6uSB04buRdCBuZ2hp4buHcCDEkeG6oWkgaOG7jWMuIENoaeG7gXUgY2FvIGPhu6dhIG3hu5dpIGPhu5l0IHRo4buDIGhp4buHbiBz4buRIGzGsOG7o25nIHNpbmggdmnDqm4gY8OzIGNoYS9t4bq5IHThu5F0IG5naGnhu4dwIGhv4bq3YyBraMO0bmcgdOG7kXQgbmdoaeG7h3AgxJHhuqFpIGjhu41jLg0KDQrhu54gY+G6oyBoYWkgYmnhu4N1IGLhu5MgdGjDrCBjw7MgdGjhu4MgdGjhuqV5IHPhu5EgbMaw4bujbmcgY2hhIG3hurkgc2luaCB2acOqbiB04buRdCBuZ2hp4buHcCDEkeG6oWkgaOG7jWMga2jDoSB0aOG6pXAgY2jhu4kgY2hp4bq/bSBraG/huqNuZyAzMiw4JSB0cm9uZyB04buVbmcgc+G7kSB2w6AgaOG6p3UgaOG6v3QgbMOgIHPhu5EgbMaw4bujbmcgY2hhL23hurkgc2luaCB2acOqbiBraMO0bmcgdOG7kXQgbmdoaeG7h3AgxJHhuqFpIGjhu41jLg0KDQoqKkvhur90IGx14bqtbjoqKiBWaeG7h2MgcGjDom4gdMOtY2ggxJDhu5MgdGjhu4sgdGjhu4MgaGnhu4duIHPhu5EgbMaw4bujbmcgc2luaCB2acOqbiBjw7MgY2hhIHbDoCBt4bq5IHThu5F0IG5naGnhu4dwIMSR4bqhaSBo4buNYyBj4bunYSBt4buXaSBkw6JuIHThu5ljIGzDoCBt4buZdCBjw7RuZyBj4bulIGjhu691IMOtY2ggY2hvIGPDoWMgYsOqbiBsacOqbiBxdWFuIHRyb25nIGzEqW5oIHbhu7FjIGdpw6FvIGThu6VjIHbDoCB4w6MgaOG7mWkgxJHhu4MgxJHDoW5oIGdpw6Eg4bqjbmggaMaw4bufbmcgY+G7p2EgbuG7gW4gdOG6o25nIGdpYSDEkcOsbmggxJHhur9uIHZp4buHYyBo4buNYyB04bqtcCwgcGjDom4gdMOtY2ggc+G7sSBi4bqldCBiw6xuaCDEkeG6s25nIGdpw6FvIGThu6VjLCBuZ2hpw6puIGPhu6l1IHbhu4EgY8OhYyB54bq/dSB04buRIOG6o25oIGjGsOG7n25nIHbDoCB1bHRpbWF0ZWx5LCBuw6JuZyBjYW8gY2jhuqV0IGzGsOG7o25nIGdpw6FvIGThu6VjLk5nb8OgaSByYSwgdmnhu4djIHBow6JuIHTDrWNoIG7DoHkgY8WpbmcgY8OzIHRo4buDIGdpw7pwIGPDoWMgbmjDoCBob+G6oWNoIMSR4buLbmggY2jDrW5oIHPDoWNoIHjDonkgZOG7sW5nIGPDoWMgY2jGsMahbmcgdHLDrG5oIGjhu5cgdHLhu6MgcGjDuSBo4bujcCDEkeG7gyB0aHUgaOG6uXAga2hv4bqjbmcgY8OhY2ggZ2nDoW8gZOG7pWMgZ2nhu69hIGPDoWMgZMOibiB04buZYy4NCg0KIyMgxJDhu5MgdGjhu4sgdGjhu4MgaGnhu4duIHPhu5EgbMaw4bujbmcgc2luaCB2acOqbiBjw7Mgc+G7nyBo4buvdSBuaMOgIHbDoCBraMO0bmcgc+G7nyBo4buvdSBuaMOgDQoNClZp4buHYyBwaMOibiB0w61jaCBuw6B5IGdpw7pwIMSRw6FuaCBnacOhIHbhu4EgduG6pW4gxJHhu4EgbmjDoCDhu58gY+G7p2Egc2luaCB2acOqbiwgeMOhYyDEkeG7i25oIG5o4buvbmcgbmjDs20gc2luaCB2acOqbiBjw7MgY2jhu5cg4bufIHbDoCBraMO0bmcgY8OzIGNo4buXIOG7nyDEkeG7gyBjw7MgYmnhu4duIHBow6FwIGjhu5cgdHLhu6MgcGjDuSBo4bujcC4NCg0KYGBge3J9DQp0bXAgPC0gZGF0YQ0KdG1wIDwtIHRtcCAlPiUgZ3JvdXBfYnkoaG9tZSwgZXRobmljaXR5KSAlPiUgc3VtbWFyaXNlKG4gPSBuKCkpDQp0bXAgJT4lIGdncGxvdChhZXMoeCA9IGhvbWUsIHkgPSBuLCBmaWxsID0gZXRobmljaXR5KSkgKyBnZW9tX2NvbChwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKCkpICsgbGFicyh4ID0gIk5ow6Ag4bufIiwgeSA9ICJT4buRIGzGsOG7o25nIikgKyBsYWJzKCB0aXRsZSA9ICJIw6xuaCA4OiDEkOG7kyB0aOG7iyB0aOG7gyBoaeG7h24gc+G7kSBsxrDhu6NuZyBzaW5oIHZpw6puIGPDsyBz4bufIGjhu691IG5ow6AgdsOgIGtow7RuZyBz4bufIGjhu691IG5ow6AgIikNCg0KIyBuaMOzbSBk4buvIGxp4buHdSB0cm9uZyB0bXAgdGhlbyBoYWkgYmnhur9uIGhvbWUgdsOgIGV0aG5pY2l0eQ0KDQojIHThuqFvIG3hu5l0IGJp4buDdSDEkeG7kyBjw6FjIHRoYW5oIHjhur9wIGPhuqFuaCBuaGF1IHbhu5tpIHRy4bulYyBob8OgbmggeCB0aGVvIGJp4bq/biBob21lIHbDoCB0cuG7pWMgdHVuZyB5IHRoZW8gYmnhur9uIG4gKHPhu5EgbMaw4bujbmcpdsOgIFPhu60gZOG7pW5nIGJp4bq/biBldGhuaWNpdHkgxJHhu4MgdMO0IG3DoHUgY2hvIGPDoWMgY+G7mXQuDQpgYGANCg0KQmnhu4N1IMSR4buTIHRodSDEkcaw4bujYyBz4bq9IGhp4buDbiB0aOG7iyBjw6FjIG5ow7NtICJob21lIiB0csOqbiB0cuG7pWMgaG/DoG5oLiBN4buXaSBuaMOzbSBz4bq9IGPDsyBt4buZdCBj4bulbSBj4buZdCDEkeG7qW5nIGPhuqFuaCBuaGF1LCB24bubaSBt4buXaSBj4buZdCB0aOG7gyBoaeG7h24gc+G7kSBsxrDhu6NuZyBuZ8aw4budaSB0aHXhu5ljIG3hu5l0IGTDom4gdOG7mWMgbmjhuqV0IMSR4buLbmggKMSRxrDhu6NjIHBow6JuIGJp4buHdCBi4bqxbmcgbcOgdSBz4bqvYykuQ2hp4buBdSBjYW8gY+G7p2EgbeG7l2kgY+G7mXQgdGjhu4MgaGnhu4duIHPhu5EgbMaw4bujbmcgbmfGsOG7nWkgKG4pIHRodeG7mWMgbmjDs20gZMOibiB04buZYyDEkcOzIHNpbmggc+G7kW5nIHThuqFpICJob21lIiDEkcOzLg0KDQojIyDEkOG7kyB0aOG7iyBoaXN0b2dyYW0gdGjhu4MgaGnhu4duIHPhu5EgbMaw4bujbmcgxJFp4buDbSBz4buRIGPhu6dhIHNpbmggdmnDqm4NCg0KVmnhu4djIHBow6JuIHTDrWNoIMSR4buTIHRo4buLIGPDsyB0aOG7gyBnacO6cCBuaMOgIHRyxrDhu51uZyBoaeG7g3UgcsO1IGjGoW4gduG7gSBz4buxIGtow6FjIGJp4buHdCB24buBIGvhur90IHF14bqjIGjhu41jIHThuq1wIGPhu6dhIHNpbmggdmnDqm4uIMSQaeG7gXUgbsOgeSBjw7MgdGjhu4MgZ2nDunAgaOG7jSBwaMOhdCB0cmnhu4NuIGPDoWMgY2jGsMahbmcgdHLDrG5oIHbDoCBk4buLY2ggduG7pSB04buRdCBoxqFuIMSR4buDIMSRw6FwIOG7qW5nIG5odSBj4bqndSBj4bunYSB04bqldCBj4bqjIHNpbmggdmnDqm4uDQoNClbDrSBk4bulOiBN4buZdCBxdeG6rW4gaOG7jWMgY8OzIHRo4buDIHPhu60gZOG7pW5nIHBow6JuIHTDrWNoIMSR4buTIHRo4buLIMSR4buDIHjDoWMgxJHhu4tuaCB4ZW0gY8OzIHPhu7EgY2jDqm5oIGzhu4djaCBuw6BvIHbhu4EgdOG7tyBs4buHIGjhu41jIHNpbmggxJHhuqF0IMSRaeG7g20gY2FvIHRyb25nIGPDoWMga+G7syB0aGkgY2h14bqpbiBow7NhIGdp4buvYSBjw6FjIG5ow7NtIGTDom4gdOG7mWMgaGF5IGtow7RuZy4NCg0KYGBge3J9DQp0bXAgPC0gZGF0YQ0KdG1wICU+JSBnZ3Bsb3QoYWVzKHggPSBzY29yZSkpICsgZ2VvbV9oaXN0b2dyYW0oYmlud2lkdGggPSA1LCBmaWxsID0gJ2JsdWUnLCBjb2xvciA9ICdyZWQnKSArIGxhYnMoeCA9ICLEkGnhu4NtIHPhu5EiLCB5ID0gIlPhu5EgbMaw4bujbmciKSArIGxhYnMoIHRpdGxlID0gIkjDrG5oIDk6IMSQ4buTIHRo4buLIHRo4buDIGhp4buHbiBz4buRIGzGsOG7o25nIMSRaeG7g20gc+G7kSBj4bunYSBzaW5oIHZpw6puIikNCg0KIyB04bqhbyBt4buZdCBiaeG7g3UgxJHhu5MgZ2dwbG90MiB24bubaSB0cuG7pWMgeCDEkcaw4bujYyB4w6FjIMSR4buLbmggYuG7n2kgYmnhur9uIHNjb3JlDQoNCiNiaW53aWR0aCA9IDU6IFjDoWMgxJHhu4tuaCDEkeG7mSBy4buZbmcgY+G7p2EgbeG7l2kgY+G7mXQgbMOgIDUgxJHGoW4gduG7iy4NCiNmaWxsID0gJ2JsdWUnOiBUw7QgbcOgdSBjw6FjIGPhu5l0IGLhurFuZyBtw6B1IHhhbmggbGFtLg0KI2NvbG9yID0gJ3JlZCc6IFZp4buBbiBjw6FjIGPhu5l0IGLhurFuZyBtw6B1IMSR4buPLg0KYGBgDQoNCkJp4buDdSDEkeG7kyBow6xuaCBj4buZdCBz4bq9IGhp4buDbiB0aOG7iyBz4buRIGzGsOG7o25nIMSRaeG7g20gc+G7kSB0cm9uZyBt4buXaSBraG/huqNuZyBnacOhIHRy4buLIGPhu6dhIGJp4bq/biBzY29yZS4gQ2hp4buBdSBjYW8gY+G7p2EgbeG7l2kgY+G7mXQgdGjhu4MgaGnhu4duIHPhu5EgbMaw4bujbmcgxJFp4buDbSBz4buRIHRyb25nIGtob+G6o25nIMSRw7MuIA0KDQoqKkvhur90IGx14bqtbjoqKiBWaeG7h2MgcGjDom4gdMOtY2ggxJDhu5MgdGjhu4sgaGlzdG9ncmFtIHRo4buDIGhp4buHbiDEkWnhu4NtIHPhu5EgY+G7p2Egc2luaCB2acOqbiBsw6AgbeG7mXQgY8O0bmcgY+G7pSBo4buvdSDDrWNoIGNobyBjw6FjIGLDqm4gbGnDqm4gcXVhbiB0cm9uZyBsxKluaCB24buxYyBnacOhbyBk4bulYyDEkeG7gyDEkcOhbmggZ2nDoSBoaeG7h3UgcXXhuqMgZ2nhuqNuZyBk4bqheSwgcGjDom4gdMOtY2ggeHUgaMaw4bubbmcgaOG7jWMgdOG6rXAsIGN1bmcgY+G6pXAgdGjDtG5nIHRpbiBjaG8gc2luaCB2acOqbiB2w6AgbsOibmcgY2FvIGNo4bqldCBsxrDhu6NuZyBnacOhbyBk4bulYyBjaG8gc2luaCB2acOqbi4NCg0KIyMgxJDhu5MgdGjhu4sgaGlzdG9ncmFtIHRo4buDIGhp4buHbiBz4buxIHBow6JuIHBo4buRaSBj4bunYSDEkWnhu4NtIHPhu5EgcGjDom4gY2hpYSB0aGVvIGdp4bubaSB0w61uaA0KDQpWaeG7h2MgcGjDom4gdMOtY2ggbsOgeSBnacO6cCBuaMOgIHRyxrDhu51uZyDEkcOhbmggZ2nDoSBt4bupYyDEkeG7mSBjaMOqbmggbOG7h2NoIMSRaeG7g20gc+G7kSBnaeG7r2EgbmFtIHbDoCBu4buvLiBU4burIMSRw7MgeMOhYyDEkeG7i25oIG5o4buvbmcgbcO0biBo4buNYyBjw7Mgc+G7sSBjaMOqbmggbOG7h2NoIMSRaeG7g20gc+G7kSBs4bubbiDEkeG7gyBjw7MgYmnhu4duIHBow6FwIGNhbiB0aGnhu4dwIHBow7kgaOG7o3AuIFNvIHPDoW5oIMSRaeG7g20gc+G7kSBj4bunYSBuYW0gdsOgIG7hu68gdHJvbmcgY8OhYyBnaWFpIMSRb+G6oW4ga2jDoWMgbmhhdSDEkeG7gyDEkcOhbmggZ2nDoSB4dSBoxrDhu5tuZyB0aGF5IMSR4buVaSB0aGVvIHRo4budaSBnaWFuLiBYw6FjIMSR4buLbmggbmjhu69uZyB0aGF5IMSR4buVaSB0w61jaCBj4buxYyBob+G6t2MgdGnDqnUgY+G7sWMgduG7gSBz4buxIGNow6puaCBs4buHY2ggxJFp4buDbSBz4buRIGdp4buvYSBuYW0gdsOgIG7hu68uDQoNCg0KYGBge3J9DQp0bXAgPC0gZGF0YQ0KdG1wICU+JSBnZ3Bsb3QoYWVzKHggPSBzY29yZSkpICsgDQogIGdlb21faGlzdG9ncmFtKGJpbndpZHRoID0gNSwgZmlsbCA9ICdicm93bicsIGNvbG9yID0gJ2JsYWNrJykgKyAgZmFjZXRfd3JhcCh+Z2VuZGVyKSArIGxhYnMoeCA9ICIgxJBp4buDbSIsIHkgPSAiU+G7kSBsxrDhu6NuZyIpKyBsYWJzKHRpdGxlID0gIkjDrG5oIDEwOiDEkOG7kyB0aOG7iyB0aOG7gyBoaeG7h24gc+G7sSBwaMOibiBwaOG7kWkgY+G7p2EgxJFp4buDbSBz4buRIHBow6JuIGNoaWEgdGhlbyBnaeG7m2kgdMOtbmgiKQ0KDQojIHThuqFvIG3hu5l0IGJp4buDdSDEkeG7kyBnZ3Bsb3QyIHbhu5tpIHRy4bulYyB4IMSRxrDhu6NjIHjDoWMgxJHhu4tuaCBi4bufaSBiaeG6v24gc2NvcmUNCg0KI2ZhY2V0X3dyYXA6IENoaWEgYmnhu4N1IMSR4buTIHRow6BuaCAyIGJp4buDdSDEkeG7kyB0aGVvIGdp4bubaSB0w61uaCBj4bunYSBzaW5oIHZpw6puLg0KDQojYmlud2lkdGggPSA1OiBDaGnhu4F1IHLhu5luZyBj4bunYSBt4buXaSBj4buZdCBsw6AgNSDEkWnhu4NtLg0KI2ZpbGwgPSAnYnJvd24nOiBUw7QgbcOgdSBiw6puIHRyb25nIGPhu5l0IGLhurFuZyBtw6B1IG7DonUuDQojY29sb3IgPSAnYmxhY2snOiBWaeG7gW4gbmdvw6BpIGPhu6dhIGPhu5l0IGPDsyBtw6B1IMSRZW4uDQpgYGANCg0KQmnhu4N1IMSR4buTIHRodSDEkcaw4bujYyBz4bq9IGhp4buDbiB0aOG7iyBoYWkgYmnhu4N1IMSR4buTIGNvbiwgbeG7mXQgY2hvIG5hbSB2w6AgbeG7mXQgY2hvIG7hu68uIE3hu5dpIGJp4buDdSDEkeG7kyBjb24gdGjhu4MgaGnhu4duIHPhu7EgcGjDom4gcGjhu5FpIMSRaeG7g20gc+G7kSBj4bunYSBnaeG7m2kgdMOtbmggdMawxqFuZyDhu6luZy4NCg0KKipL4bq/dCBsdeG6rW46KiogVmnhu4djIHBow6JuIHTDrWNoIMSQ4buTIHRo4buLIHRo4buDIGhp4buHbiBz4buxIHBow6JuIHBo4buRaSBj4bunYSDEkWnhu4NtIHPhu5EgcGjDom4gY2hpYSB0aGVvIGdp4bubaSB0w61uaCBsw6AgbeG7mXQgY8O0bmcgY+G7pSDEkeG7gyDEkcOhbmggZ2nDoSBz4buxIGLDrG5oIMSR4bqzbmcgZ2nhu5tpIHRyb25nIGdpw6FvIGThu6VjLCBwaMOibiB0w61jaCB4dSBoxrDhu5tuZyB0aGVvIHRo4budaSBnaWFuLCBuZ2hpw6puIGPhu6l1IHbhu4EgY8OhYyB54bq/dSB04buRIOG6o25oIGjGsOG7n25nIHbDoCBuw6JuZyBjYW8gY2jhuqV0IGzGsOG7o25nIGdpw6FvIGThu6VjLg0KDQojIyDEkOG7kyB0aOG7iyBoaXN0b2dyYW0gdGjhu4MgaGnhu4duIHPhu7EgcGjDom4gcGjhu5FpIMSRaeG7g20gc+G7kSBj4bunYSB04burbmcgZMOibiB04buZYw0KDQrEkMOhbmggZ2nDoSBz4buxIGLDrG5oIMSR4bqzbmcgZ2nDoW8gZOG7pWMgZ2nhu69hIGPDoWMgZMOibiB04buZYzogR2nDunAgY8OhYyBuaMOgIGhv4bqhY2ggxJHhu4tuaCBjaMOtbmggc8OhY2ggdsOgIG5ow6AgcXXhuqNuIGzDvSBnacOhbyBk4bulYyDEkcOhbmggZ2nDoSBt4bupYyDEkeG7mSBiw6xuaCDEkeG6s25nIGdpw6FvIGThu6VjIGdp4buvYSBjw6FjIGTDom4gdOG7mWMuIFjDoWMgxJHhu4tuaCBuaOG7r25nIGTDom4gdOG7mWMgY8OzIMSRaeG7g20gc+G7kSB0cnVuZyBiw6xuaCB0aOG6pXAgxJHhu4MgY8OzIGJp4buHbiBwaMOhcCBjYW4gdGhp4buHcCBwaMO5IGjhu6NwLiBTbyBzw6FuaCDEkWnhu4NtIHPhu5EgdHJ1bmcgYsOsbmggY+G7p2EgY8OhYyBkw6JuIHThu5ljIHRyb25nIGPDoWMgZ2lhaSDEkW/huqFuIGtow6FjIG5oYXUgxJHhu4MgxJHDoW5oIGdpw6EgeHUgaMaw4bubbmcgdGhheSDEkeG7lWkgdGhlbyB0aOG7nWkgZ2lhbi4gWMOhYyDEkeG7i25oIG5o4buvbmcgZMOibiB04buZYyBjw7Mgc+G7sSB0aGF5IMSR4buVaSB0w61jaCBj4buxYyBob+G6t2MgdGnDqnUgY+G7sWMgduG7gSDEkWnhu4NtIHPhu5EuDQoNCmBgYHtyfQ0KdG1wIDwtIGRhdGENCnRtcCAlPiUgZ2dwbG90KGFlcyh4ID0gc2NvcmUsIGZpbGwgPSBldGhuaWNpdHkpKSArIGdlb21faGlzdG9ncmFtKGJpbndpZHRoID0gNSkgKyBsYWJzKCB4ID0ixJBp4buDbSIsIHkgPSAiU+G7kSBsxrDhu6NuZyIpK2xhYnModGl0bGUgPSAiSMOsbmggMTE6IMSQ4buTIHRo4buLIHRo4buDIGhp4buHbiBz4buxIHBow6JuIHBo4buRaSDEkWnhu4NtIHPhu5EgY+G7p2EgdOG7q25nIGTDom4gdOG7mWMiKQ0KDQojIFThuqFvIGJp4buDdSDEkeG7kyB24bubaSBUcuG7pWMgaG/DoG5oICh4KSBiaeG7g3UgdGjhu4sgxJFp4buDbSBz4buRLCB0cuG7pWMgdHVuZyBiaeG7g3UgdGjhu4sgc+G7kSBsxrDhu6NuZyB2w6AgTcOgdSBz4bqvYyBj4bunYSBj4buZdCBiaeG7g3UgdGjhu4sgZMOibiB04buZYy4NCiMgYmlud2lkdGggPSA1OiBDaGnhu4F1IHLhu5luZyBj4bunYSBt4buXaSBj4buZdCBsw6AgNSDEkWnhu4NtLg0KYGBgDQoNCkJp4buDdSDEkeG7kyB0aHUgxJHGsOG7o2Mgc+G6vSBoaeG7g24gdGjhu4sgY8OhYyBj4buZdCB0aOG7gyBoaeG7h24gc+G7sSBwaMOibiBwaOG7kWkgxJFp4buDbSBz4buRIGPhu6dhIHThu6tuZyBkw6JuIHThu5ljLiBNw6B1IHPhuq9jIGPhu6dhIGPDoWMgY+G7mXQgZ2nDunAgcGjDom4gYmnhu4d0IGPDoWMgZMOibiB04buZYyBraMOhYyBuaGF1Lg0KDQoqKkvhur90IGx14bqtbjoqKiBWaeG7h2MgcGjDom4gdMOtY2ggxJHhu5MgdGjhu4sgc+G7sSBwaMOibiBwaOG7kWkgxJFp4buDbSBz4buRIGPhu6dhIHThu6tuZyBkw6JuIHThu5ljIGfDs3AgcGjhuqduIG7Dom5nIGNhbyBjaOG6pXQgbMaw4bujbmcgZ2nDoW8gZOG7pWMgdGjDtG5nIHF1YSB2aeG7h2M6IFjDoWMgxJHhu4tuaCBuaOG7r25nIHLDoG8gY+G6o24gxJHhu5FpIHbhu5tpIHZp4buHYyBo4buNYyB04bqtcCBj4bunYSBo4buNYyBzaW5oIHRodeG7mWMgY8OhYyBkw6JuIHThu5ljIHRoaeG7g3Ugc+G7kS4gUGjDoXQgdHJp4buDbiBjw6FjIGNoxrDGoW5nIHRyw6xuaCB2w6AgY2jDrW5oIHPDoWNoIGjhu5cgdHLhu6MgaOG7jWMgc2luaCB0aHXhu5ljIGPDoWMgZMOibiB04buZYyB0aGnhu4N1IHPhu5EuDQoNCiMjIMSQ4buTIHRo4buLIHRo4buDIGhp4buHbiBz4buRIGzGsOG7o25nIG3hu6ljIHRodSBuaOG6rXAgdGhlbyBkw6JuIHThu5ljDQoNCsSQw6FuaCBnacOhIG3hu6ljIMSR4buZIGLhuqV0IGLDrG5oIMSR4bqzbmcgdGh1IG5o4bqtcDogR2nDunAgY8OhYyBuaMOgIGhv4bqhY2ggxJHhu4tuaCBjaMOtbmggc8OhY2ggdsOgIG5ow6AgcXXhuqNuIGzDvSBraW5oIHThur8gxJHDoW5oIGdpw6EgbeG7qWMgxJHhu5kgYuG6pXQgYsOsbmggxJHhurNuZyB0aHUgbmjhuq1wIGdp4buvYSBjw6FjIGTDom4gdOG7mWMuIFjDoWMgxJHhu4tuaCBuaOG7r25nIGTDom4gdOG7mWMgY8OzIG3hu6ljIHRodSBuaOG6rXAgdHJ1bmcgYsOsbmggdGjhuqVwIMSR4buDIGPDsyBuaOG7r25nIGNow61uaCBzw6FjaCBo4buXIHRy4bujIGjhu41jIHBow60gcGjDuSBo4bujcC4NCg0KYGBge3J9DQp0bXAgPC0gZGF0YQ0KdG1wIDwtIHRtcCAlPiUgZ3JvdXBfYnkoZXRobmljaXR5LCBpbmNvbWUpICU+JSBzdW1tYXJpc2UobiA9IG4oKSkNCnRtcCAlPiUgZ2dwbG90KGFlcyh4ID0gZXRobmljaXR5LCB5ID0gbikpICsgZ2VvbV9jb2woZGF0YSA9IHRtcCAlPiUgZmlsdGVyKGluY29tZSA9PSAnbG93JyksIGZpbGwgPSAnZGFya2dyZWVuJykgKyBnZW9tX2NvbChkYXRhID0gdG1wICU+JSBmaWx0ZXIoaW5jb21lID09ICdoaWdoJyksIGZpbGwgPSAnYmx1ZScpKyBsYWJzKHggPSAnRMOibiB04buZYycsIHkgPSAnU+G7kSBsxrDhu6NuZycpICsgY29vcmRfZmxpcCgpICsgbGFicyh0aXRsZSA9ICJIw6xuaCAxMjogxJDhu5MgdGjhu4sgdGjhu4MgaGnhu4duIHPhu5EgbMaw4bujbmcgbeG7qWMgdGh1IG5o4bqtcCB0aGVvIHThu6tuZyBkw6JuIHThu5ljIikNCg0KIyBjw6J1IGzhu4duaCAxOiBOaMOzbSBk4buvIGxp4buHdSB0bXAgdGhlbyBj4bqjIGV0aG5pY2l0eSAoZMOibiB04buZYykgdsOgIGluY29tZSAodGh1IG5o4bqtcCkuIFTDrW5oIHThu5VuZyBz4buRIG5nxrDhu51pIChuKSB0cm9uZyBt4buXaSBuaMOzbSAoZMOibiB04buZYywgdGh1IG5o4bqtcCkuDQoNCiMgY8OidSBs4buHbmggMjogdOG6oW8gYmnhu4N1IMSR4buTIGPhu5l0IHbhu5tpIHRy4bulYyBuZ2FuZyAoeCkgdGjhu4MgaGnhu4duIGV0aG5pY2l0eSAoZMOibiB04buZYyksIFRy4bulYyBk4buNYyAoeSkgdGjhu4MgaGnhu4duIHPhu5EgbMaw4bujbmcgbmfGsOG7nWkgKG4pDQoNCiMgU+G7rSBk4bulbmcgaGFpIGzhu5twIGdlb21fY29sIMSR4buDIHBow6JuIGJp4buHdCB0aGVvIG3hu6ljIHRodSBuaOG6rXA6IEzhu5twIHRo4bupIG5o4bqldCBM4buNYyBk4buvIGxp4buHdSBjaOG7iSBnaeG7ryBs4bqhaSBuaMOzbSBjw7MgdGh1IG5o4bqtcCB0aOG6pXAgKGluY29tZSA9PSAnbG93JyksIFTDtCBtw6B1IGPDoWMgY+G7mXQgY2hvIG5ow7NtIHRodSBuaOG6rXAgdGjhuqVwIGLhurFuZyBtw6B1IHhhbmggbMOhIMSR4bqtbS4gdsOgIEzhu5twIHRo4bupIGhhaSBM4buNYyBk4buvIGxp4buHdSBjaOG7iSBnaeG7ryBs4bqhaSBuaMOzbSBjw7MgdGh1IG5o4bqtcCBjYW8gKGluY29tZSA9PSAnaGlnaCcpIHbDoCB0w7QgbcOgdSB4YW5oIGTGsMahbmcgKGJsdWUpLg0KDQojIGNvb3JkX2ZsaXAoKSDEkeG7gyDEkeG6o28gbmfGsOG7o2MgdHLhu6VjLCB24bubaSB0cuG7pWMgbmdhbmcg4bufIGTGsOG7m2kgdsOgIHRy4bulYyBk4buNYyDhu58gdHLDqm4uDQpgYGANCg0KQmnhu4N1IMSR4buTIG7DoHkgc+G6vSBoaeG7g24gdGjhu4sgaGFpIGPhu5l0IGNo4buTbmcgbMOqbiBuaGF1IGNobyBt4buXaSBkw6JuIHThu5ljLCB0aOG7gyBoaeG7h24gc+G7kSBsxrDhu6NuZyBuZ8aw4budaSB0aHXhu5ljIGTDom4gdOG7mWMgxJHDsyBjw7MgdGh1IG5o4bqtcCB0aOG6pXAgKHhhbmggxJHhuq1tKSB2w6AgdGh1IG5o4bqtcCBjYW8gKHhhbmggZMawxqFuZykuIEJp4buDdSDEkeG7kyBnacO6cCBzbyBzw6FuaCBz4buxIHBow6JuIGLhu5EgdGh1IG5o4bqtcCBnaeG7r2EgY8OhYyBkw6JuIHThu5ljLiBC4bqhbiBjw7MgdGjhu4MgZOG7hSBkw6BuZyBxdWFuIHPDoXQgeGVtIGPDsyBz4buxIGtow6FjIGJp4buHdCDEkcOhbmcga+G7gyB24buBIHRodSBuaOG6rXAgZ2nhu69hIGPDoWMgZMOibiB04buZYyBoYXkga2jDtG5nLiBWw60gZOG7pSwgbuG6v3UgbeG7mXQgZMOibiB04buZYyBjw7MgY+G7mXQgeGFuaCDEkeG6rW0gY2FvIGjGoW4gbmhp4buBdSBzbyB24bubaSBj4buZdCB4YW5oIGTGsMahbmcsIHRow6wgxJFp4buBdSDEkcOzIGPDsyB0aOG7gyBjaG8gdGjhuqV5IHBo4bqnbiBs4bubbiBuZ8aw4budaSB0aHXhu5ljIGTDom4gdOG7mWMgxJHDsyBjw7MgdGh1IG5o4bqtcCB0aOG6pXAuDQoNCioqS+G6v3QgbHXhuq1uOioqIFZp4buHYyBwaMOibiB0w61jaCDEkeG7kyB0aOG7iyBz4buRIGzGsOG7o25nIG3hu6ljIHRodSBuaOG6rXAgdGhlbyBkw6JuIHThu5ljIGdpw7pwIFjDoWMgxJHhu4tuaCBuaOG7r25nIHLDoG8gY+G6o24gxJHhu5FpIHbhu5tpIHZp4buHYyBwaMOhdCB0cmnhu4NuIGtpbmggdOG6vyBj4bunYSBjw6FjIGTDom4gdOG7mWMgdGhp4buDdSBz4buRLiBQaMOhdCB0cmnhu4NuIGPDoWMgY2jGsMahbmcgdHLDrG5oIHbDoCBjaMOtbmggc8OhY2ggaOG7lyB0cuG7oyBwaMOhdCB0cmnhu4NuIGtpbmggdOG6vyBjaG8gY8OhYyBkw6JuIHThu5ljIHRoaeG7g3Ugc+G7kS4NCg0KIyMgQmnhu4N1IMSR4buTIG3huq10IMSR4buZIGRlbnNpdHkgdGjhu4MgaGnhu4duIHPhu7EgcGjDom4gcGjhu5FpIGPhu6dhIMSRaeG7g20gc+G7kSBwaMOibiBjaGlhIHRoZW8gZMOibiB04buZYw0KDQpWaeG7h2MgcGjDom4gdMOtY2ggQmnhu4N1IMSR4buTIG3huq10IMSR4buZIGRlbnNpdHkgdGjhu4MgaGnhu4duIHPhu7EgcGjDom4gcGjhu5FpIGPhu6dhIMSRaeG7g20gc+G7kSBwaMOibiBjaGlhIHRoZW8gZMOibiB04buZYyBjw7MgdGjhu4MgbWFuZyBs4bqhaSBuaGnhu4F1IGzhu6NpIMOtY2ggY2hvIGPDoWMgYsOqbiBsacOqbiBxdWFuIHRyb25nIGzEqW5oIHbhu7FjIGdpw6FvIGThu6VjIHbDoCB4w6MgaOG7mWkuIEdpw7pwIGPDoWMgbmjDoCBob+G6oWNoIMSR4buLbmggY2jDrW5oIHPDoWNoIHbDoCBuaMOgIHF14bqjbiBsw70gZ2nDoW8gZOG7pWMgxJHDoW5oIGdpw6EgbeG7qWMgxJHhu5kgYsOsbmggxJHhurNuZyBnacOhbyBk4bulYyBnaeG7r2EgY8OhYyBkw6JuIHThu5ljIG3hu5l0IGPDoWNoIGNoaSB0aeG6v3QgaMahbiBzbyB24bubaSBjaOG7iSBz4butIGThu6VuZyDEkWnhu4NtIHPhu5EgdHJ1bmcgYsOsbmguIFjDoWMgxJHhu4tuaCBuaOG7r25nIGTDom4gdOG7mWMgY8OzIHPhu7EgcGjDom4gYuG7kSDEkWnhu4NtIHPhu5EgbOG7h2NoIHbhu4EgcGjDrWEgdGjhuqVwIGhv4bq3YyBjYW8gxJHhu4MgY8OzIGJp4buHbiBwaMOhcCBjYW4gdGhp4buHcCBwaMO5IGjhu6NwLg0KDQpgYGB7cn0NCnRtcCA8LSBkYXRhDQp0bXAgJT4lIGdncGxvdChhZXMoeCA9IHNjb3JlKSkgKyBnZW9tX2RlbnNpdHkoZmlsbCA9ICdibHVlJykgKyAgZmFjZXRfd3JhcCh+ZXRobmljaXR5KSArIGxhYnMoeD0gIsSQaeG7g20iKSsgbGFicyh0aXRsZSA9ICJIw6xuaCAxMzogQmnhu4N1IMSR4buTIG3huq10IMSR4buZIHRo4buDIGhp4buHbiBz4buxIHBow6JuIHBo4buRaSBj4bunYSDEkWnhu4NtIHPhu5EgcGjDom4gY2hpYSB0aGVvIGTDom4gdOG7mWMiKQ0KDQojIHThuqFvIGJp4buDdSDEkeG7kyB24bubaSB0cuG7pWMgaG/DoG5oICh4KSBiaeG7g3UgdGjhu4sgxJFp4buDbSBz4buRLg0KDQojIGdlb21fZGVuc2l0eTogVGjDqm0gaMOsbmggZOG6oW5nIGJp4buDdSDEkeG7kyBsw6AgbeG6rXQgxJHhu5kgKGRlbnNpdHkpLiB2w6AgVMO0IG3DoHUgYsOqbiB0cm9uZyBiaeG7g3UgxJHhu5MgbeG6rXQgxJHhu5kgYuG6sW5nIG3DoHUgeGFuaA0KDQojIGZhY2V0X3dyYXA6IENoaWEgYmnhu4N1IMSR4buTIHRow6BuaCBjw6FjIGJp4buDdSDEkeG7kyBjb24gdGhlbyBkw6JuIHThu5ljLg0KYGBgDQoNCkJp4buDdSDEkeG7kyB0aHUgxJHGsOG7o2Mgc+G6vSBoaeG7g24gdGjhu4sgaGFpIGJp4buDdSDEkeG7kyBjb24sIG3hu5l0IGNobyBt4buXaSBkw6JuIHThu5ljLiBN4buXaSBiaeG7g3UgxJHhu5MgY29uIHRo4buDIGhp4buHbiBz4buxIHBow6JuIHBo4buRaSDEkWnhu4NtIHPhu5EgY+G7p2EgZMOibiB04buZYyB0xrDGoW5nIOG7qW5nIGTGsOG7m2kgZOG6oW5nIMSRxrDhu51uZyBjb25nIG3huq10IMSR4buZLiBIw6xuaCBk4bqhbmcgY+G7p2EgxJHGsOG7nW5nIGNvbmcgbeG6rXQgxJHhu5kgY2hvIGJp4bq/dCBz4buxIHThuq1wIHRydW5nIGPhu6dhIMSRaeG7g20gc+G7kSB0cm9uZyB04burbmcgbmjDs20uDQoNCioqS+G6v3QgbHXhuq1uOioqIHZp4buHYyBwaMOibiB0w61jaCBiaeG7g3UgxJHhu5MgbeG6rXQgxJHhu5kgxJFp4buDbSBz4buRIGPDsyBuaOG7r25nIMawdSDEkWnhu4NtIHNhdTogQ3VuZyBj4bqlcCB0aMO0bmcgdGluIGNoaSB0aeG6v3QgaMahbiB24buBIHPhu7EgcGjDom4gYuG7kSDEkWnhu4NtIHPhu5EgY+G7p2EgY8OhYyBkw6JuIHThu5ljLiBHacO6cCB4w6FjIMSR4buLbmggbmjhu69uZyBuaMOzbSBo4buNYyBzaW5oIGPDsyBuZ3V5IGPGoSBi4buLIGLhu48gbOG6oWkgcGjDrWEgc2F1LiBHacO6cCDEkcOhbmggZ2nDoSBoaeG7h3UgcXXhuqMgY+G7p2EgY8OhYyBjaMawxqFuZyB0csOsbmggaOG7lyB0cuG7oyBo4buNYyBzaW5oIG3hu5l0IGPDoWNoIGNow61uaCB4w6FjIGjGoW4uDQoNCiMjIEJp4buDdSDEkeG7kyBt4bqtdCDEkeG7mSBkZW5zaXR5IHRo4buDIGhp4buHbiBz4buxIHBow6JuIHBo4buRaSBj4bunYSDEkWnhu4NtIHPhu5EgcGjDom4gY2hpYSB0aGVvIGdp4bubaSB0w61uaA0KDQpWaeG7h2MgcGjDom4gdMOtY2ggQmnhu4N1IMSR4buTIG3huq10IMSR4buZIGRlbnNpdHkgdGjhu4MgaGnhu4duIHPhu7EgcGjDom4gcGjhu5FpIGPhu6dhIMSRaeG7g20gc+G7kSBwaMOibiBjaGlhIHRoZW8gZ2nhu5tpIHTDrW5oIGPDsyB0aOG7gyBtYW5nIGzhuqFpIG5oaeG7gXUgbOG7o2kgw61jaCBjaG8gY8OhYyBiw6puIGxpw6puIHF1YW4gdHJvbmcgbMSpbmggduG7sWMgZ2nDoW8gZOG7pWMgdsOgIHjDoyBo4buZaS4gR2nDunAgbmjDoCB0csaw4budbmcgxJHDoW5oIGdpw6EgbeG7qWMgxJHhu5kgYsOsbmggxJHhurNuZyBnaeG7m2kgdHJvbmcgZ2nDoW8gZOG7pWMgbeG7mXQgY8OhY2ggY2hpIHRp4bq/dCB04burIMSRw7MgeMOhYyDEkeG7i25oIG5o4buvbmcgbmjDs20gaOG7jWMgc2luaCBuYW0gaG/hurdjIG7hu68gY8OzIMSRaeG7g20gc+G7kSB0aOG6pXAgaMahbiDEkeG7gyBjw7MgYmnhu4duIHBow6FwIGNhbiB0aGnhu4dwIHBow7kgaOG7o3AuDQoNCmBgYHtyfQ0KdG1wIDwtIGRhdGENCnRtcCAlPiUgZ2dwbG90KGFlcyh4ID0gc2NvcmUpKSArIGdlb21fZGVuc2l0eShmaWxsID0gJ2dyZWVuJykgKyBmYWNldF93cmFwKH5nZW5kZXIpICsgbGFicyh4ID0gIsSQaeG7g20iKSsgbGFicyh0aXRsZSA9ICJIw6xuaCAxNDogQmnhu4N1IMSR4buTIG3huq10IMSR4buZIHRo4buDIGhp4buHbiBz4buxIHBow6JuIHBo4buRaSBj4bunYSDEkWnhu4NtIHPhu5EgcGjDom4gY2hpYSB0aGVvIGdp4bubaSB0w61uaCIpDQoNCiMgdOG6oW8gYmnhu4N1IMSR4buTIHbhu5tpIHRy4bulYyBob8OgbmggKHgpIGJp4buDdSB0aOG7iyDEkWnhu4NtIHPhu5EuDQoNCiMgZ2VvbV9kZW5zaXR5OiBUaMOqbSBow6xuaCBk4bqhbmcgYmnhu4N1IMSR4buTIGzDoCBt4bqtdCDEkeG7mSAoZGVuc2l0eSkuIHbDoCBUw7QgbcOgdSBiw6puIHRyb25nIGJp4buDdSDEkeG7kyBt4bqtdCDEkeG7mSBi4bqxbmcgbcOgdSB4YW5oIGzDoQ0KDQojIGZhY2V0X3dyYXA6IENoaWEgYmnhu4N1IMSR4buTIHRow6BuaCBjw6FjIGJp4buDdSDEkeG7kyBjb24gdGhlbyBnaeG7m2kgdMOtbmguDQpgYGANCg0KQmnhu4N1IMSR4buTIHRodSDEkcaw4bujYyBz4bq9IGhp4buDbiB0aOG7iyBoYWkgYmnhu4N1IMSR4buTIGNvbiwgbeG7mXQgY2hvIG5hbSB2w6AgbeG7mXQgY2hvIG7hu68uIE3hu5dpIGJp4buDdSDEkeG7kyBjb24gdGjhu4MgaGnhu4duIHPhu7EgcGjDom4gcGjhu5FpIMSRaeG7g20gc+G7kSBj4bunYSBnaeG7m2kgdMOtbmggdMawxqFuZyDhu6luZyBkxrDhu5tpIGThuqFuZyDEkcaw4budbmcgY29uZyBt4bqtdCDEkeG7mS4NCg0KKipL4bq/dCBsdeG6rW46Kiogdmnhu4djIHBow6JuIHTDrWNoIGJp4buDdSDEkeG7kyBt4bqtdCDEkeG7mSDEkWnhu4NtIHPhu5EgY8OzIG5o4buvbmcgxrB1IMSRaeG7g20gc2F1OiBDdW5nIGPhuqVwIHRow7RuZyB0aW4gY2hpIHRp4bq/dCBoxqFuIHbhu4Egc+G7sSBwaMOibiBi4buRIMSRaeG7g20gc+G7kSBj4bunYSBuYW0gdsOgIG7hu68uIFjDoWMgxJHhu4tuaCBuaOG7r25nIHLDoG8gY+G6o24gxJHhu5FpIHbhu5tpIHZp4buHYyBo4buNYyB04bqtcCBj4bunYSBo4buNYyBzaW5oIG5hbSBob+G6t2MgbuG7ry4gxJDGsGEgcmEgbmjhu69uZyBiaeG7h24gcGjDoXAgcGjDuSBo4bujcCwgY8OhYyBjaMawxqFuZyB0csOsbmggaOG7lyB0cuG7oyBo4buNYyBzaW5oIG3hu5l0IGPDoWNoIGNow61uaCB4w6FjIGjGoW4uDQoNCiMjIEJp4buDdSDEkeG7kyB0csOybiAocGlhIGNoYXJ0KSB0aOG7gyBoaeG7h24gc+G7kSBsxrDhu6NuZyBzaW5oIHZpw6puIHRoZW8gZ2nhu5tpIHTDrW5oIGPhu6dhIGTDom4gdOG7mWMgaGlzcGFuaWMNCg0KUGjDom4gdMOtY2ggYmnhu4N1IMSR4buTIHRyw7JuIHRo4buDIGhp4buHbiBz4buRIGzGsOG7o25nIHNpbmggdmnDqm4gdGhlbyBnaeG7m2kgdMOtbmggY+G7p2EgZMOibiB04buZYyBIaXNwYW5pYyBnacO6cCB0YSBoaeG7g3UgcsO1IGjGoW4gduG7gSB04bu3IGzhu4cgc2luaCB2acOqbiBuYW0gdsOgIG7hu68gdGh14buZYyBkw6JuIHThu5ljIGhpc3BhbmljICggbmfGsOG7nWkgZ+G7kWMgVMOieSBCYW4gTmhhKS4gTmjhu50gxJHDsywgdGEgY8OzIHRo4buDIHNvIHPDoW5oIG5oYW5oIGNow7NuZyBz4buxIGNow6puaCBs4buHY2ggZ2nhu5tpIHTDrW5oIHRyb25nIG5ow7NtIG7DoHkuDQoNCmBgYHtyfQ0KdG1wIDwtIGRhdGENCnRtcCA8LSB0bXAgJT4lIGZpbHRlcihldGhuaWNpdHk9PSJoaXNwYW5pYyIpDQp0bXAgJT4lIGdyb3VwX2J5KGV0aG5pY2l0eSxnZW5kZXIpICU+JSBzdW1tYXJpc2UobiA9IG4oKSkgJT4lIGdncGxvdChhZXMoeCA9ICcnLCB5ID0gbixmaWxsID0gZ2VuZGVyKSkrIGdlb21fY29sKGdlbmRlciA9ICdibGFjaycpICsgIGNvb3JkX3BvbGFyKCd5JykrICB0aGVtZV92b2lkKCkgKyBsYWJzKHRpdGxlID0gIkjDrG5oIDE1OiBCaeG7g3UgxJHhu5MgdHLDsm4gdGjhu4MgaGnhu4duIHPhu5EgbMaw4bujbmcgc2luaCB2acOqbiB0aGVvIGTDom4gdOG7mWMgaGlzcGFuaWMiKQ0KDQojICBuaMOzbSBk4buvIGxp4buHdSB0aGVvIGV0aG5pY2l0eSAoZ2nhu68gImhpc3BhbmljIikgdsOgIGdlbmRlciB2w6AgdMOtbmggdOG7lW5nIHPhu5EgbMaw4bujbmcgDQoNCiMgdOG6oW8gYmnhu4N1IMSR4buTIHRyw7JuIHbhu5tpIFRy4bulYyBob8OgbmggeCDEkcaw4bujYyDEkeG6t3QgdHLhu5FuZyAoJycpLiBUcuG7pWMgdHVuZyB5IHRo4buDIGhp4buHbiB0aGVvIGJp4bq/biBuIChz4buRIGzGsOG7o25nKSwgZmlsbCA9IGdlbmRlcjogVMO0IG3DoHUgY8OhYyB2w7luZyB0aGVvIGJp4bq/biBnZW5kZXINCmBgYA0KDQpCaeG7g3UgxJHhu5MgdGh1IMSRxrDhu6NjIHPhur0gbMOgIG3hu5l0IGjDrG5oIHRyw7JuIMSRxrDhu6NjIGNoaWEgdGjDoG5oIGPDoWMgcGjhuqduIChtaeG6v25nKSB0aGVvIHThu4kgbOG7hy4gTeG7l2kgcGjhuqduIHTDtCBt4buZdCBtw6B1IMSR4bqhaSBkaeG7h24gY2hvIGdp4bubaSB0w61uaCAobmFtL27hu68pIGPhu6dhIG5nxrDhu51pIGfhu5FjIFTDonkgQmFuIE5oYS4gRGnhu4duIHTDrWNoIG3hu5dpIHBo4bqnbiBow6xuaCBjdW5nIHRyw7JuIHPhur0gdMawxqFuZyDhu6luZyB24bubaSBz4buRIGzGsOG7o25nIG5nxrDhu51pIHRodeG7mWMgZ2nhu5tpIHTDrW5oIMSRw7MgdHJvbmcgbmjDs20gZMOibiB04buZYyBuZ8aw4budaSBn4buRYyBUw6J5IEJhbiBOaGEuDQoNCioqS+G6v3QgbHXhuq1uOioqIFBow6JuIHTDrWNoIGJp4buDdSDEkeG7kyB0csOybiBjdW5nIGPhuqVwIHRow7RuZyB0aW4gaOG7r3Ugw61jaCBjaG8gY8OhYyBuaMOgIGhv4bqhY2ggxJHhu4tuaCBjaMOtbmggc8OhY2gsIG5ow6AgZ2nDoW8gZOG7pWMgdsOgIGPDoWMgdOG7lSBjaOG7qWMgaOG7lyB0cuG7oyBzaW5oIHZpw6puLiBWw60gZOG7pTogbuG6v3UgYmnhu4N1IMSR4buTIGNobyB0aOG6pXkgdOG7tyBs4buHIHNpbmggdmnDqm4gbuG7ryB0aHXhu5ljIGTDom4gdOG7mWMgSGlzcGFuaWMgdGhlbyBo4buNYyDEkeG6oWkgaOG7jWMgdGjhuqVwLCBjw6FjIG5ow6AgaG/huqFjaCDEkeG7i25oIGPDsyB0aOG7gyBwaMOhdCB0cmnhu4NuIGNoxrDGoW5nIHRyw6xuaCBraHV54bq/biBraMOtY2ggdsOgIGjhu5cgdHLhu6MgbuG7ryBzaW5oIHRoZW8gaOG7jWMuDQoNCiMjIEJp4buDdSDEkeG7kyB0csOybiAocGllIGNoYXJ0KSB0aOG7gyBoaeG7h24gbeG7qWMgdGh1IG5o4bqtcCBj4bunYSBnaWEgxJHDrG5oIHNpbmggdmnDqm4NCg0KUGjDom4gdMOtY2ggYmnhu4N1IMSR4buTIHRyw7JuIHRo4buDIGhp4buHbiBt4bupYyB0aHUgbmjhuq1wIGPhu6dhIGdpYSDEkcOsbmggc2luaCB2acOqbiBjw7MgdGjhu4MgaGnhu4N1IHLDtSBoxqFuIHbhu4EgdMOsbmggdHLhuqFuZyBraW5oIHThur8gZ2lhIMSRw6xuaCBj4bunYSBzaW5oIHZpw6puIHbDoCB4w6FjIMSR4buLbmggY8OhYyBuaMOzbSBzaW5oIHZpw6puIGPhuqduIGjhu5cgdHLhu6MgdMOgaSBjaMOtbmggdHJvbmcgduG6pW4gxJHhu4EgaOG7jWMgcGjDrSwgbmjDoCDhu58sLi4uDQoNCmBgYHtyfQ0KdG1wIDwtIGRhdGENCnRtcCAlPiUgZ3JvdXBfYnkoaW5jb21lKSAlPiUgc3VtbWFyaXNlKG4gPSBuKCkpICU+JSBnZ3Bsb3QoYWVzKHggPSAnJywgeSA9IG4sZmlsbCA9IGluY29tZSkpICsNCiAgICBnZW9tX2NvbCgpICsgZ2VvbV90ZXh0KGFlcyh4ID0gMS4zLCBsYWJlbCA9IG4pLHBvc2l0aW9uID0gcG9zaXRpb25fc3RhY2sodmp1c3QgPSAwLjUpKSArIA0KICAgIGNvb3JkX3BvbGFyKCd5JykgKyBsYWJzKHRpdGxlID0gIkjDrG5oIDE2OiBCaeG7g3UgxJHhu5MgdHLDsm4gdGjhu4MgaGnhu4duIG3hu6ljIHRodSBuaOG6rXAiKQ0KDQojIE5ow7NtIGThu68gbGnhu4d1IHRyb25nIHRtcCB0aGVvIHRodSBuaOG6rXAgKGluY29tZSkuIHN1bW1hcmlzZShuID0gbigpKTogVMOtbmggdOG7lW5nIHPhu5EgbmfGsOG7nWkgKG4pIHRyb25nIG3hu5dpIG5ow7NtIHRodSBuaOG6rXAuDQoNCiMgdOG6oW8gYmnhu4N1IMSR4buTIHbhu5tpIHRy4bulYyB0dW5nICh5KSBsw6Agc+G7kSBsxrDhu6NuZyBuZ8aw4budaSAobiksIFRy4bulYyBob8OgbmggKHgpIMSRxrDhu6NjIMSR4buDIHRy4buRbmcgKCcnKSB2w6AgVMO0IG3DoHUgY+G7mXQgdGhlbyB0aHUgbmjhuq1wIChpbmNvbWUpLg0KDQojIFRow6ptIGNow7ogdGjDrWNoIHbEg24gYuG6o24gKGdlb21fdGV4dCkgaGnhu4NuIHRo4buLIHPhu5EgbMaw4bujbmcgbmfGsOG7nWkgKG4pIHRyw6puIG3hu5dpIGPhu5l0Lg0KIyBhZXMoeCA9IDEuMywgbGFiZWwgPSBuKTogVGhp4bq/dCBs4bqtcCB24buLIHRyw60gbmdhbmcgY+G7p2EgbmjDo24gY8OhY2ggdHLhu6VjIGhvw6BuaCAxLjMgxJHGoW4gduG7iyB2w6AgbuG7mWkgZHVuZyBsw6AgZ2nDoSB0cuG7iyBuLg0KIyBwb3NpdGlvbiA9IHBvc2l0aW9uX3N0YWNrKHZqdXN0ID0gMC41KTogQ2FuaCBjaOG7iW5oIHbhu4sgdHLDrSBk4buNYyBj4bunYSBuaMOjbiDEkeG7gyBu4bqxbSBjaMOtbmggZ2nhu69hIMSR4bqndSBj4buZdA0KIyBjb29yZF9wb2xhcigneScpOiBDaHV54buDbiDEkeG7lWkgaOG7hyB0cuG7pWMgc2FuZyBo4buHIHThu41hIMSR4buZIGPhu7FjLCB24bubaSB0cuG7pWMgeSBnaeG7ryBuZ3V5w6puIHRo4buDIGhp4buHbiBz4buRIGzGsOG7o25nLlRy4bulYyBob8Ogbmggc+G6vSDEkcaw4bujYyBjdeG7mW4gdHLDsm4gdGjDoG5oIGjDrG5oIHRyw7JuLCBjw6FjIGPhu5l0IMSRxrDhu6NjIHPhuq9wIHjhur9wIHRoZW8gZ8OzYyBk4buxYSB0csOqbiBiaeG6v24gaW5jb21lDQpgYGANCg0KQmnhu4N1IHRodSDEkcaw4bujYyBz4bq9IGdp4buRbmcgbmjGsCByYWRhciBjaGFydCwgduG7m2kgbcOgdSBz4bqvYyB0aOG7gyBoaeG7h24gdGhlbyB0aHUgbmjhuq1wLiBN4buXaSBt4bupYyB0aHUgbmjhuq1wIMSRxrDhu6NjIGJp4buDdSB0aOG7iyBi4bqxbmcgbeG7mXQgaMOsbmggY+G7mXQsIMSRxrDhu6NjIHTDtCBtw6B1IHRoZW8gbmjDs20gdGh1IG5o4bqtcC4gVHLDqm4gbeG7l2kgY+G7mXQgY8OzIGNow7ogdGjDrWNoIGhp4buDbiB0aOG7iyBz4buRIGzGsOG7o25nIG5nxrDhu51pIHRodeG7mWMgbmjDs20gdGh1IG5o4bqtcCDEkcOzLg0KDQoqKkvhur90IGx14bqtbjoqKiBQaMOibiB0w61jaCBiaeG7g3UgxJHhu5MgdHLDsm4gY3VuZyBj4bqlcCB0aMO0bmcgdGluIGjhu691IMOtY2ggY2hvIHZp4buHYyB4w6J5IGThu7FuZyBjw6FjIGNow61uaCBzw6FjaCBo4buXIHRy4bujIHNpbmggdmnDqm4gaGnhu4d1IHF14bqjLiBWw60gZOG7pTogbuG6v3UgdOG7tyBs4buHIHNpbmggdmnDqm4gY8OzIHRodSBuaOG6rXAgdGjhuqVwIGNhbyB0cm9uZyB04buVbmcgc+G7kSBzaW5oIHZpw6puIHRoZW8gaOG7jWMgxJHhuqFpIGjhu41jLCB0aMOsIG5ow6AgY8OzIHRo4buDIHhlbSB4w6l0IHTEg25nIGPGsOG7nW5nIGjhu5cgdHLhu6MgdMOgaSBjaMOtbmgsIGhv4bq3YyBjw6FjIGNow61uaCBzw6FuaCBo4buXIHRy4bujIHbhu4EgaOG7jWMgcGjDrSBjaG8gY8OhYyBzaW5oIHZpw6puIGPDsyBob8OgbiBj4bqjbmgga2jDsyBraMSDbiB2w6AgaGnhur91IGjhu41jIMSRw7MuDQoNCiMjIEJp4buDdSDEkeG7kyB0csOybiAocGllIGNoYXJ0KSB0aOG7gyBoaeG7h24gc+G7kSBsxrDhu6NuZyBuZ8aw4budaSB0aGVvIGTDom4gdOG7mWMgKGV0aG5pY2l0eSkNCg0KVmnhu4djIHBow6JuIHTDrWNoIGJp4buDdSDEkeG7kyB0csOybiAocGllIGNoYXJ0KSB0aOG7gyBoaeG7h24gc+G7kSBsxrDhu6NuZyBuZ8aw4budaSB0aGVvIGTDom4gdOG7mWMgKGV0aG5pY2l0eSkgxJHhu4M6IEhp4buDdSByw7UgaMahbiB24buBIHRow6BuaCBwaOG6p24gc2luaCB2acOqbiB0aHXhu5ljIGPDoWMgbmjDs20gZMOibiB04buZYyBraMOhYyBuaGF1LiBTbyBzw6FuaCB04bu3IGzhu4cgc2luaCB2acOqbiB0aGVvIGTDom4gdOG7mWMgZ2nhu69hIGPDoWMga2h1IHbhu7FjIGtow6FjIG5oYXUuIFRoZW8gZMO1aSBz4buxIHRoYXkgxJHhu5VpIGPhu6dhIHRow6BuaCBwaOG6p24gZMOibiB04buZYyB0aGVvIHRo4budaSBnaWFuIHbDoCBo4buXIHRy4bujIHZp4buHYyBuaMOgIHRyxrDhu51uZyByYSBxdXnhur90IMSR4buLbmggY8OhYyBjaMOtbmggc8OhY2guDQoNCmBgYHtyfQ0KdG1wIDwtIGRhdGENCnRtcCAlPiUgZ3JvdXBfYnkoZXRobmljaXR5KSAlPiUgc3VtbWFyaXNlKG4gPSBuKCkpICU+JSBnZ3Bsb3QoYWVzKHggPSAnJywgeSA9IG4sZmlsbCA9IGV0aG5pY2l0eSkpICsgZ2VvbV9jb2woZXRobmljaXR5ID0gJ2JsYWNrJykgKyAgY29vcmRfcG9sYXIoJ3knKSArDQogIGdlb21fdGV4dChhZXMoeCA9IDEuMywgbGFiZWwgPSBuKSxwb3NpdGlvbiA9IHBvc2l0aW9uX3N0YWNrKHZqdXN0ID0gMC41KSkgKyB0aGVtZV92b2lkKCkgKyBsYWJzKHRpdGxlID0gIkjDrG5oIDE3OiBCaeG7g3UgxJHhu5MgdHLDsm4gdGjhu4MgaGnhu4duIHPhu5EgbMaw4bujbmcgbmfGsOG7nWkgdGhlbyBkw6JuIHThu5ljIikNCg0KIyB0w61uaCB04buVbmcgc+G7kSBuZ8aw4budaSAobikgdHJvbmcgbeG7l2kgbmjDs20gZMOibiB04buZYyAoZXRobmljaXR5KS4NCg0KIyB04bqhbyBiaeG7g3UgxJHhu5MgduG7m2kgVHLhu6VjIHR1bmcgKHkpIGzDoCBz4buRIGzGsOG7o25nIG5nxrDhu51pIChuKSwgdHLhu6VjIGhvw6BuaCAoeCkgdHLhu5FuZyAoJycpIG5oxrBuZyB4w6FjIMSR4buLbmggduG7iyB0csOtIGPhu5l0IHRoZW8gZ8OzYyB2w6AgVMO0IG3DoHUgY+G7mXQgdGhlbyBkw6JuIHThu5ljIChldGhuaWNpdHkpLCB0aMOqbSBuaMOjbiBoaeG7g24gdGjhu4sgc+G7kSBsxrDhu6NuZyBuZ8aw4budaSAobikgdHLDqm4gxJHhuqd1IG3hu5dpIGPhu5l0Lg0KDQojIGNvb3JkX3BvbGFyKCd5Jyk6IENodXnhu4NuIMSR4buVaSBo4buHIHThu41hIMSR4buZIHRow6BuaCBj4buxYywgdHLhu6VjIHkgZ2nhu68gbmd1ecOqbiwgdHLhu6VjIGhvw6BuaCBjdeG7mW4gdHLDsm4gdGjDoG5oIGjDrG5oIHRyw7JuLg0KDQojIHRoZW1lX3ZvaWQoKSDEkeG7gyBsb+G6oWkgYuG7jyBjw6FjIHRow6BuaCBwaOG6p24gbeG6t2MgxJHhu4tuaCBj4bunYSBiaeG7g3UgxJHhu5MgbmjGsCBraHVuZyBu4buBbiwgdHLhu6VjIGzGsOG7m2ksIGNow7ogdGjDrWNoIHRy4bulYywgdi52LiBDaOG7iSBnaeG7ryBs4bqhaSBjw6FjIHRow6BuaCBwaOG6p24gY+G6p24gdGhp4bq/dDogY8OhYyBj4buZdCwgbmjDo24gdsOgIG7hu4FuIHRyw7JuLg0KYGBgDQoNCkJp4buDdSDEkeG7kyB0aHUgxJHGsOG7o2Mgc+G6vSBsw6AgbeG7mXQgaMOsbmggdHLDsm4gxJHGsOG7o2MgY2hpYSB0aMOgbmggY8OhYyBwaOG6p24gKG1p4bq/bmcpIHRoZW8gdOG7iSBs4buHLiBN4buXaSBwaOG6p24gdMO0IG3hu5l0IG3DoHUgxJHhuqFpIGRp4buHbiBjaG8gbeG7mXQgZMOibiB04buZYyAoZOG7sWEgdHLDqm4gYmnhur9uIGV0aG5pY2l0eSkgdsOgIGRp4buHbiB0w61jaCB0xrDGoW5nIOG7qW5nIHbhu5tpIHPhu5EgbMaw4bujbmcgbmfGsOG7nWkgdGh14buZYyBkw6JuIHThu5ljIMSRw7MuIE5ow6NuIGhp4buDbiB0aOG7iyBz4buRIGzGsOG7o25nIG5nxrDhu51pIGLDqm4gdHJvbmcgbeG7l2kgcGjhuqduLg0KDQoqKkvhur90IGx14bqtbjoqKiBQaMOibiB0w61jaCBiaeG7g3UgxJHhu5MgdHLDsm4gY3VuZyBj4bqlcCB0aMO0bmcgdGluIGjhu691IMOtY2ggY2hvIHZp4buHYyB4w6J5IGThu7FuZyBjw6FjIGNow61uaCBzw6FjaCBwaMO5IGjhu6NwIHbhu5tpIMSR4bq3YyDEkWnhu4NtIGTDom4gdOG7mWMgY+G7p2Ega2h1IHbhu7FjLiBWw60gZOG7pTogbuG6v3UgYmnhu4N1IMSR4buTIGNobyB0aOG6pXkgdOG7tyBs4buHIG5nxrDhu51pIGTDom4gdOG7mWMgdGhp4buDdSBz4buRIGNhbyB0cm9uZyBt4buZdCBraHUgduG7sWMsIG5ow6AgaG/huqFjaCDEkeG7i25oIGPDsyB0aOG7gyB4ZW0geMOpdCB4w6J5IGThu7FuZyBjw6FjIGNoxrDGoW5nIHRyw6xuaCBnacOhbyBk4bulYyB2w6AgaOG7lyB0cuG7oyBkw6BuaCBjaG8gbmjDs20gZMOibiB04buZYyBuw6B5Lg0KDQojIyBCaeG7g3UgxJHhu5MgcGjDom4gdMOhbiAoc2NhdHRlcikgdGjhu4MgaGnhu4duIG3hu5FpIHF1YW4gaOG7hyBnaeG7r2EgbeG7qWMgbMawxqFuZyAod2FnZSkgdsOgIHThu7cgbOG7hyB0aOG6pXQgbmdoaeG7h3AgKHVuZW1wKQ0KDQpQaMOibiB0w61jaCBiaeG7g3UgxJHhu5MgcGjDom4gdMOhbiB0aOG7gyBoaeG7h24gbeG7kWkgcXVhbiBo4buHIGdp4buvYSBt4bupYyBsxrDGoW5nIHbDoCB04bu3IGzhu4cgdGjhuqV0IG5naGnhu4dwIMSR4buDIHjDoWMgxJHhu4tuaCBt4buRaSB0xrDGoW5nIHF1YW4gZ2nhu69hIG3hu6ljIGzGsMahbmcgdsOgIHThu7cgbOG7hyB0aOG6pXQgbmdoaeG7h3Ag4bufIHNpbmggdmnDqm4sIHThu6sgxJHDsyDEkcOhbmggZ2nDoSDEkcaw4bujYyB0w6xuaCBow6xuaCB0w6BpIGNow61uaCBj4bunYSBzaW5oIHZpw6puIHbDoCDEkcawYSByYSBjw6FjIGNoxrDGoW5nIHRyw6xuaCDEkcOgbyB04bqhbyB0cm9uZyB2aeG7h2MgdHJhbmcgYuG7iyBow6BuaCB0cmFuZyBjaG8gc2luaCB2acOqbiByYSB0csaw4budbmcga2nhur9tIHZp4buHYyBsw6BtIGPFqW5nIG5oxrAgY2jDrW5oIHPDoWNoIGjhu5cgdHLhu6MgcGjDuSBo4bujcC4NCg0KYGBge3J9DQp0bXAgPC0gZGF0YQ0KIHRtcCAlPiUgZ2dwbG90KGFlcyh4ID0gd2FnZSwgeSA9IHVuZW1wLCBjb2xvciA9IGV0aG5pY2l0eSkpICsNCiAgZ2VvbV9wb2ludCgpICsgbGFicyh0aXRsZSA9IkjDrG5oIDE4OiBCaeG7g3UgxJHhu5MgdGjhu4MgaGnhu4duIG3hu5FpIHF1YW4gaOG7hyBnaeG7r2EgbeG7qWMgbMawxqFuZyB2w6AgdOG7tyBs4buHIHRo4bqldCBuZ2hp4buHcCIpDQogDQojIFThuqFvIHQgYmnhu4N1IMSR4buTIHBow6JuIHTDoW4gduG7m2k6IHRy4bulYyBob8OgbmggeCB0aOG7gyBoaeG7h24gbeG7qWMgbMawxqFuZywgdHLhu6VjIHR1bmcgeSB0aOG7gyBoaeG7h24gdOG7tyBs4buHIHRo4bqldCBuZ2hp4buHcCB1bmVtcCB2w6AgVMO0IG3DoHUgY2hvIGPDoWMgxJFp4buDbSB0aGVvIGJp4bq/biBldGhuaWNpdHkuDQogDQojZ2VvbV9wb2ludCgpOiBUaMOqbSBjw6FjIMSRaeG7g20gdsOgbyBiaeG7g3UgxJHhu5MuDQpgYGANCg0KQmnhu4N1IMSR4buTIHRodSDEkcaw4bujYyBz4bq9IGhp4buDbiB0aOG7iyBjw6FjIMSRaeG7g20gZOG7ryBsaeG7h3UgduG7m2kgduG7iyB0csOtIGPhu6dhIG3hu5dpIMSRaeG7g20gdGjhu4MgaGnhu4duIG3hu5FpIHF1YW4gaOG7hyBnaeG7r2EgbeG7qWMgbMawxqFuZyB2w6AgdOG7tyBs4buHIHRo4bqldCBuZ2hp4buHcCBj4bunYSBt4buZdCBjw6EgbmjDom4uIE3DoHUgc+G6r2MgY+G7p2EgbeG7l2kgxJFp4buDbSBz4bq9IMSR4bqhaSBkaeG7h24gY2hvIGTDom4gdOG7mWMgY+G7p2EgbmfGsOG7nWkgxJHDsy4NCg0KTuG6v3UgY8OzIG5oaeG7gXUgxJFp4buDbSBjw7luZyBtw6B1IHThuq1wIHRydW5nIOG7nyBt4buZdCBraHUgduG7sWMsIMSRaeG7gXUgxJHDsyBjw7MgdGjhu4MgY2hvIHRo4bqleSBt4buRaSBsacOqbiBo4buHIGdp4buvYSBkw6JuIHThu5ljLCBt4bupYyBsxrDGoW5nIHbDoCB04bu3IGzhu4cgdGjhuqV0IG5naGnhu4dwLiBLw61jaCB0aMaw4bubYyBj4bunYSBjw6FjIMSRaeG7g20gY8OzIHRo4buDIMSRxrDhu6NjIMSRaeG7gXUgY2jhu4luaCDEkeG7gyB0aOG7gyBoaeG7h24gdGjDqm0gdGjDtG5nIHRpbiwgdsOtIGThu6UgbmjGsCBz4buRIGzGsOG7o25nIG5nxrDhu51pIHRyb25nIG3hu5dpIG5ow7NtIGTDom4gdOG7mWMuIA0KDQoqKkvhur90IGx14bqtbjoqKiB2aeG7h2MgcGjDom4gdMOtY2ggbeG7kWkgcXVhbiBo4buHIGdp4buvYSBt4bupYyBsxrDGoW5nIHbDoCB04bu3IGzhu4cgdGjhuqV0IG5naGnhu4dwIOG7nyBzaW5oIHZpw6puIGdpw7pwIG5ow6AgdHLGsOG7nW5nIHRyb25nIHZp4buHYyDEkcOhbmggZ2nDoSDEkcaw4bujYyBt4bupYyDEkeG7mSDhuqNuaCBoxrDhu59uZyBj4bunYSBjw6FjIHnhur91IHThu5EgbmjGsCBuZ8OgbmggaOG7jWMsIHRyw6xuaCDEkeG7mSBo4buNYyB24bqlbiwga+G7uSBuxINuZywga2luaCBuZ2hp4buHbSBsw6BtIHZp4buHYyDEkeG7kWkgduG7m2kga2jhuqMgbsSDbmcgdMOsbSBraeG6v20gdmnhu4djIGzDoG0gdsOgIG3hu6ljIGzGsMahbmcgY+G7p2Egc2luaCB2acOqbi4gVOG7qyDEkcOzLCDEkcawYSByYSBjw6FjIGNoxrDGoW5nIHRyw6xuaCDEkcOgbyB04bqhbyB0cm9uZyB2aeG7h2MgdHJhbmcgYuG7iyBjaG8gc2luaCB2acOqbiBjw6FjIGtp4bq/biB0aOG7qWMsIGvhu7kgbsSDbmcgY+G6p24gdGhp4bq/dCDEkeG7gyDEkcOhcCDhu6luZyBuaHUgY+G6p3UgY+G7p2EgdGjhu4sgdHLGsOG7nW5nIGxhbyDEkeG7mW5nLg0KDQojIyBCaeG7g3UgxJHhu5MgcGjDom4gdMOhbiAoc2NhdHRlcikgdGjhu4MgaGnhu4duIG3hu5FpIHF1YW4gaOG7hyBnaeG7r2EgbeG7qWMgbMawxqFuZyB2w6AgdOG7tyBs4buHIHRo4bqldCBuZ2hp4buHcCBj4bunYSBt4buZdCBjw6EgbmjDom4NCg0KTeG7pWMgxJHDrWNoIGPhu6dhIHZp4buHYyBwaMOibiB0w61jaCBCaeG7g3UgxJHhu5MgcGjDom4gdMOhbiAoc2NhdHRlcikgdGjhu4MgaGnhu4duIG3hu5FpIHF1YW4gaOG7hyBnaeG7r2EgbeG7qWMgbMawxqFuZyB2w6AgdOG7tyBs4buHIHRo4bqldCBuZ2hp4buHcCBj4bunYSBt4buZdCBjw6EgbmjDom4gY8OzIGvDqG0gxJHGsOG7nW5nIHh1IHRo4bq/IOG7nyBzaW5oIHZpw6puIMSR4buDIGhp4buDdSByw7UgaMahbiB24buBIG3hu5FpIHF1YW4gaOG7hyBnaeG7r2EgbeG7qWMgbMawxqFuZyB2w6AgdOG7tyBs4buHIHRo4bqldCBuZ2hp4buHcCDhu58gc2luaCB2acOqbiB2w6AgxJHGsOG7nW5nIHh1IHRo4bq/IGdpw7pwIGThu7EgxJFvw6FuIG3hu6ljIGzGsMahbmcgY+G7p2Egc2luaCB2acOqbiBk4buxYSB0csOqbiB04bu3IGzhu4cgdGjhuqV0IG5naGnhu4dwLg0KDQpgYGB7cn0NCnRtcCA8LSBkYXRhDQogdG1wICU+JSBnZ3Bsb3QoYWVzKHggPSB3YWdlLCB5ID0gdW5lbXApKSArDQogIGdlb21fcG9pbnQoY29sb3IgPSAncmVkJykgKw0KICBnZW9tX3Ntb290aChtZXRob2QgPSAnbG0nLCBjb2xvciA9ICdncmVlbicpKyBmYWNldF93cmFwKH5ldGhuaWNpdHkpKyBsYWJzKHRpdGxlID0gIkjDrG5oIDE5OiBCaeG7g3UgxJHhu5MgcGjDom4gdMOhbiB0aOG7gyBoaeG7h24gbeG7kWkgcXVhbiBo4buHIGdp4buvYSBt4bupYyBsxrDGoW5nIHbDoCB04bu3IGzhu4cgdGjhuqV0IG5naGnhu4dwIikNCiANCiAjIFThuqFvIGJp4buDdSDEkeG7kyBwaMOibiB0w6FuIHbhu5tpIFRy4bulYyBob8OgbmggeCB0aOG7gyBoaeG7h24gbeG7qWMgbMawxqFuZyB3YWdlLCBUcuG7pWMgdHVuZyB5IHRo4buDIGhp4buHbiB04bu3IGzhu4cgdGjhuqV0IG5naGnhu4dwIHVuZW1wIHbDoCBUaMOqbSBjw6FjIMSRaeG7g20gdsOgbyBiaeG7g3UgxJHhu5MgduG7m2kgbcOgdSDEkeG7jy4NCiAjIFRow6ptIMSRxrDhu51uZyBo4buTaSBxdXkgdHV54bq/biB0w61uaCBjaG8gbeG7l2kgbmjDs20gZOG7ryBsaeG7h3UgduG7m2kgbcOgdSB4YW5oIGzDoSBjw6J5Lg0KIA0KICMgQ2hpYSBiaeG7g3UgxJHhu5MgdGjDoG5oIGPDoWMgYmnhu4N1IMSR4buTIGNvbiByacOqbmcgYmnhu4d0IGNobyBt4buXaSBuaMOzbSBkw6JuIHThu5ljIChldGhuaWNpdHkpLg0KYGBgDQoNCkJp4buDdSDEkeG7kyB0aHUgxJHGsOG7o2Mgc+G6vSBoaeG7g24gdGjhu4sgY8OhYyDEkWnhu4NtIGThu68gbGnhu4d1IHbhu5tpIHbhu4sgdHLDrSBj4bunYSBt4buXaSDEkWnhu4NtIHRo4buDIGhp4buHbiBt4buRaSBxdWFuIGjhu4cgZ2nhu69hIG3hu6ljIGzGsMahbmcgdsOgIHThu7cgbOG7hyB0aOG6pXQgbmdoaeG7h3AgY+G7p2EgbeG7mXQgY8OhIG5ow6JuLiBCaeG7g3UgxJHhu5MgcGjDom4gdMOhbiAoc2NhdHRlciBwbG90KSB24bubaSBjw6FjIMSRaeG7g20gxJHGsOG7o2MgdMO0IG3DoHUgxJHhu48gdsOgIMSRxrDhu51uZyBo4buTaSBxdXkgdHV54bq/biB0w61uaCBtw6B1IHhhbmggbMOhIGPDonkgY2hvIG3hu5dpIG5ow7NtIGTDom4gdOG7mWMgKGV0aG5pY2l0eSkgQ8OhYyDEkWnhu4NtIMSRxrDhu6NjIHTDtCBtw6B1IMSR4buPIHbDoCDEkcaw4budbmcgaOG7k2kgcXV5IHR1eeG6v24gdMOtbmggbcOgdSB4YW5oIGzDoSBjw6J5IMSRxrDhu6NjIHbhur0gY2hvIG3hu5dpIG5ow7NtIGTDom4gdOG7mWMuDQoNClbDrSBk4bulOg0KDQrEkOG7mSBk4buRYyBj4bunYSDEkcaw4budbmcgaOG7k2kgcXV5IHR1eeG6v24gdMOtbmggY2hvIHRo4bqleSBt4buRaSBxdWFuIGjhu4cgdMawxqFuZyBxdWFuIGdp4buvYSBt4bupYyBsxrDGoW5nIHbDoCB04bu3IGzhu4cgdGjhuqV0IG5naGnhu4dwIHRyb25nIG3hu5dpIG5ow7NtIGTDom4gdOG7mWMuIFZp4buHYyBzbyBzw6FuaCBjw6FjIMSRxrDhu51uZyBo4buTaSBxdXkgdHV54bq/biB0w61uaCBnaeG7r2EgY8OhYyBuaMOzbSBkw6JuIHThu5ljIGPDsyB0aOG7gyBnacO6cCB4w6FjIMSR4buLbmggc+G7sSBraMOhYyBiaeG7h3QgduG7gSBt4buRaSBxdWFuIGjhu4cgbsOgeS4gQmnhu4N1IMSR4buTIGPDsyB0aOG7gyDEkcaw4bujYyBi4buVIHN1bmcgdGjDqm0gY2jDuiB0aMOtY2ggxJHhu4MgbMOgbSByw7UgdGjDtG5nIHRpbiB2w6AgZ2nDunAgbmfGsOG7nWkgxJHhu41jIGhp4buDdSByw7UgaMahbiB24buBIGvhur90IHF14bqjLg0KDQoqKkvhur90IGx14bqtbjoqKiBQaMOibiB0w61jaCBiaeG7g3UgxJHhu5MgcGjDom4gdMOhbiBjdW5nIGPhuqVwIHRow7RuZyB0aW4gaOG7r3Ugw61jaCBjaG8gdmnhu4djIHjDonkgZOG7sW5nIGPDoWMgY2jDrW5oIHPDoWNoIG5o4bqxbSBnaeG6o20gdGhp4buDdSB0aOG6pXQgbmdoaeG7h3AgdsOgIHRow7pjIMSR4bqpeSB0xINuZyB0csaw4bufbmcga2luaCB04bq/IHbDoCBnacO6cCDEkcOhbmggZ2nDoSBoaeG7h3UgcXXhuqMgY+G7p2EgY8OhYyBjaMawxqFuZyB0csOsbmggaOG7lyB0cuG7oyBkw6BuaCBjaG8gc2luaCB2acOqbiB0cm9uZyB2aeG7h2MgY+G6o2kgdGhp4buHbiBt4bupYyBsxrDGoW5nIHbDoCBnaeG6o20gdGhp4buDdSB04bu3IGzhu4cgdGjhuqV0IG5naGnhu4dwLg0KDQojIyBCaeG7g3UgxJHhu5MgxJHhu5luZyB0aOG7gyBoaeG7h24gbeG7kWkgbGnDqm4gaOG7hyBnaeG7r2EgbeG7qWMgbMawxqFuZyB2w6AgdOG7tyBs4buHIHRo4bqldCBuZ2hp4buHcCB0cm9uZyB04burbmcgbmjDs20gZMOibiB04buZYy4NCg0KTeG7pWMgxJHDrWNoIGPhu6dhIHZp4buHYyBwaMOibiB0w61jaCBCaeG7g3UgxJHhu5MgxJHhu5luZyB0aOG7gyBoaeG7h24gbeG7kWkgbGnDqm4gaOG7hyBnaeG7r2EgbeG7qWMgbMawxqFuZyB2w6AgdOG7tyBs4buHIHRo4bqldCBuZ2hp4buHcCB0cm9uZyB04burbmcgbmjDs20gZMOibiB04buZYyDhu58gc2luaCB2acOqbiBnacO6cCB0YSB0aGVvIGTDtWkgc+G7sSB0aGF5IMSR4buVaSBj4bunYSBt4buRaSBsacOqbiBo4buHIGdp4buvYSBt4bupYyBsxrDGoW5nIHbDoCB04bu3IGzhu4cgdGjhuqV0IG5naGnhu4dwIHRyb25nIHThu6tuZyBuaMOzbSBkw6JuIHThu5ljIHRoZW8gdGjhu51pIGdpYW4uIE5o4budIMSRw7MsIGPDsyB0aOG7gyDEkcOhbmggZ2nDoSBt4bupYyDEkeG7mSDhuqNuaCBoxrDhu59uZyBj4bunYSBjw6FjIHnhur91IHThu5EgbmjGsCB0aOG7nWkgZ2lhbiwgY2jDrW5oIHPDoWNoLCBiaeG6v24gxJHhu5luZyBraW5oIHThur8gxJHhu5FpIHbhu5tpIHRo4buLIHRyxrDhu51uZyBsYW8gxJHhu5luZyBkw6BuaCBjaG8gc2luaCB2acOqbiBz4bqvcCByYSB0csaw4budbmcgdGh14buZYyBjw6FjIG5ow7NtIGTDom4gdOG7mWMga2jDoWMgbmhhdS4NCg0KYGBge3J9DQp0bXAgPC0gZGF0YQ0KdG1wICU+JSBnZ3Bsb3QoYWVzKHggPSB3YWdlLCB5ID0gdW5lbXAsIGNvbG9yID0gZXRobmljaXR5KSkgKw0KICBnZW9tX2xpbmUoKSArDQogZ2VvbV9wb2ludChzaXplPTIpICsNCiAgdHJhbnNpdGlvbl9yZXZlYWwod2FnZSwga2VlcF9sYXN0ID0gRikrIGxhYnModGl0bGUgPSJIw6xuaCAyMDogxJDhu5MgdGjhu4sgxJHhu5luZyB0aOG7gyBoaeG7h24gbeG7kWkgcXVhbiBo4buHIGdp4buvYSBt4bupYyBsxrDGoW5nIHbDoCB04bu3IGzhu4cgdGjhuqV0IG5naGnhu4dwIHRoZW8gZMOibiB04buZYyIpDQpgYGANCg0KQmnhu4N1IMSR4buTIGdpw7pwIGjDrG5oIGR1bmcgbeG7kWkgbGnDqm4gaOG7hyBnaeG7r2EgbeG7qWMgbMawxqFuZyB2w6AgdOG7tyBs4buHIHRo4bqldCBuZ2hp4buHcCB0cm9uZyB04burbmcgbmjDs20gZMOibiB04buZYy4NCg0KLSAgIMSQxrDhu51uZyBr4bq7OiBO4buRaSBjw6FjIMSRaeG7g20gZOG7ryBsaeG7h3UgdGhlbyB04burbmcgZMOibiB04buZYy4NCg0KLSAgIMSQaeG7g206IEJp4buDdSB0aOG7iyB24buLIHRyw60gZOG7ryBsaeG7h3UgY+G7p2EgbeG7l2kgY8OhIG5ow6JuLCDEkcaw4bujYyB0w7QgbcOgdSB0aGVvIGTDom4gdOG7mWMuDQoNCi0gICDEkOG7mSBk4buRYyBj4bunYSDEkcaw4budbmcga+G6uyBjaG8gdGjhuqV5IG3hu6ljIMSR4buZIHRoYXkgxJHhu5VpIGPhu6dhIG3hu6ljIGzGsMahbmcgdGhlbyB04bu3IGzhu4cgdGjhuqV0IG5naGnhu4dwLg0KDQotICAgU28gc8OhbmggY8OhYyDEkcaw4budbmcga+G6uyB2w6AgduG7iyB0csOtIMSRaeG7g20gY+G7p2EgY8OhYyBuaMOzbSBkw6JuIHThu5ljIGdpw7pwIG5o4bqtbiBiaeG6v3Qgc+G7sSBraMOhYyBiaeG7h3QgduG7gSBt4buRaSBxdWFuIGjhu4cgbsOgeS4NCg0KKipL4bq/dCBsdeG6rW46Kiogdmnhu4djIHBow6JuIHTDrWNoIGJp4buDdSDEkeG7kyDEkeG7mW5nIHRo4buDIGhp4buHbiBt4buRaSBsacOqbiBo4buHIGdp4buvYSBt4bupYyBsxrDGoW5nIHbDoCB04bu3IGzhu4cgdGjhuqV0IG5naGnhu4dwIHRyb25nIHThu6tuZyBuaMOzbSBkw6JuIHThu5ljIOG7nyBzaW5oIHZpw6puIGzDoCBt4buZdCBjw7RuZyBj4bulIMSR4buDIGhp4buDdSByw7UgaMahbiB2w6AgdGhlbyBkw7VpIHPDoXQgeGFvIHRo4buLIHRyxrDhu51uZyBsYW8gxJHhu5luZyBkw6BuaCBjaG8gc2luaCB2acOqbiB0aHXhu5ljIGPDoWMgbmjDs20gZMOibiB04buZYyBraMOhYyBuaGF1LCBzbyBzw6FuaCBt4bupYyDEkeG7mSBi4bqldCBiw6xuaCDEkeG6s25nIHRyb25nIHRo4buLIHRyxrDhu51uZyBsYW8gxJHhu5luZyBnaeG7r2EgY8OhYyBuaMOzbSBkw6JuIHThu5ljLiBU4burIMSRw7MgxJHhu4tuaCByYSBjaMawxqFuZyB0csOsbmggaOG7jWMgdsOgIGfhu6NpIMO9IGPDoWMgaMaw4bubbmcgxJFpbiBjaG8gc2luaCB2acOqbiBz4bqvcCByYSB0csaw4budbmcuDQoNCg==