File code: (https://drive.google.com/drive/folders/1bu6Kc4gpsUDw3U-jeV-hg6blgj8zorx4?usp=sharing)

1 ,Giới thiệu về dữ liệu nghiên cứu

Dữ liệu nghiên cứu về một công ty bảo hiểm ở Mỹ muốn cải thiện dự báo dòng tiền bằng cách ước tính chi phí bảo hiểm sức khoẻ thông qua các biến số đo lường mức độ rủi ro về sức khoẻ của khách hàng và các yếu tố nhân khẩu học tại thời điểm các khách hàng này sử dụng dịch vụ bảo hiểm y tế của công ty trên nhập viện. Bộ dữ liệu này được thu thập trong khoảng thời gian 5 năm từ năm 2015-2020 và bao gồm có 1338 bệnh nhân nhập viện với 7 trường thông tin. Bộ dữ liệu được lấy từ website: https://www.kaggle.com/datasets/mirichoi0218/insurance.

Dữ liệu nghiên cứu bao gồm 1338 quan sát với 7 biến bao gồm 4 biến định lượng và 3 biến định tính.

Trong đó:

age: số tuổi của các bệnh nhân

sex: giới tính (F: nữ ; M: nam)

bmi: chỉ số khối của cơ thể, cho biết tỷ lệ cân nặng với chiều cao ở người để đánh giá được trình trạng cơ thể: gầy, cân đối, béo phì của một người. bmi được tính bằng cân nặng / chiều cao^2 (kg/m^2), tỷ lệ bmi lý tưởng là từ 18,5 đến 24,9

dependent: số người phụ thuộc.

smoker: tình trạng sử dụng thuốc lá của các bệnh nhân (Y: có ; N: không)

region: khu vực cư trú tại MỸ của các bệnh nhân (Northeast: Đông Bắc, Southeast: Đông Nam, Southwest: Tây Bắc, Northwest: Tây Nam)

charges: chi phí y tế của các bệnh nhân do công ty bảo hiểm thanh toán (đơn vị: USD)

2 ,Lựa chọn biến phụ thuộc trong mô hình nghiên cứu

Việc phân tích dữ liệu về chi phí y tế của các bệnh nhân mà công ty bảo hiểm phải chi trả có liên quan tương đối nhiều đến các yếu tố như độ tuổi, giới tính, chỉ số BMI, số người phụ thuộc và khu vực sinh sống của các bệnh nhân. Vậy liệu rằng nếu một bệnh nhân có độ tuổi lớn hay có chỉ số cơ thể bmi cao khi nhập viện thì chi phí y tế mà công ty bảo hiểm sẽ phải chi trả sẽ nhiều hơn chi phí mà công ty đó sẽ chi trả một bệnh nhân ít tuổi và có chỉ số bmi lý tưởng khi nhập viện hay không ? hay phụ thuộc vào việc người đó có giới tính gì hay đến từ khu vực nào hay không ? Vì vậy yếu tố chi phí bảo hiểm y tế (charges) cần được phân tích dựa vào dữ liệu của các yếu tố khác ở trên đã đề cập. Từ đó có thể cho ta thấy được phân khúc bệnh nhân có những đặc điểm khác nhau thì chi phí y tế của họ sẽ như thế nào và số tiền mà công ty bảo hiểm chi trả sẽ nằm trong phân khúc nào. Việc phân tích những yếu tố trên tác động đến chi phí y tế của các bệnh nhân phần nào sẽ giúp hoạch định được dòng tiền mà công ty bảo hiểm sẽ phải chi trả cho các bệnh nhân.

Biến phụ thuộc : charges (chi phí y tế các bệnh nhân mà công ty bảo hiểm chi trả :USD)

setwd("C:/PTDLDT")
library(readxl)
## Warning: package 'readxl' was built under R version 4.2.3
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(xlsx)
add <- "dulieumoi.xlsx"
data <- read_xlsx("dulieumoi.xlsx", 1)
str(data)
## tibble [1,338 × 7] (S3: tbl_df/tbl/data.frame)
##  $ age      : num [1:1338] 19 18 28 33 32 31 46 37 37 60 ...
##  $ sex      : chr [1:1338] "F" "M" "M" "M" ...
##  $ bmi      : num [1:1338] 27.9 33.8 33 22.7 28.9 ...
##  $ dependent: num [1:1338] 0 1 3 0 0 0 1 3 2 0 ...
##  $ smoker   : chr [1:1338] "Y" "N" "N" "N" ...
##  $ region   : chr [1:1338] "southwest" "southeast" "southeast" "northwest" ...
##  $ charges  : num [1:1338] 16885 1726 4449 21984 3867 ...
library(data.table)
## 
## Attaching package: 'data.table'
## The following objects are masked from 'package:dplyr':
## 
##     between, first, last
data.table(data)
##       age sex    bmi dependent smoker    region   charges
##    1:  19   F 27.900         0      Y southwest 16884.924
##    2:  18   M 33.770         1      N southeast  1725.552
##    3:  28   M 33.000         3      N southeast  4449.462
##    4:  33   M 22.705         0      N northwest 21984.471
##    5:  32   M 28.880         0      N northwest  3866.855
##   ---                                                    
## 1334:  50   M 30.970         3      N northwest 10600.548
## 1335:  18   F 31.920         0      N northeast  2205.981
## 1336:  18   F 36.850         0      N southeast  1629.833
## 1337:  21   F 25.800         0      N southwest  2007.945
## 1338:  61   F 29.070         0      Y northwest 29141.360

2.1 Thống kê mô tả biến giới tính (sex)

2.1.1 Bảng tần số-bảng tần suất:

table(data$sex)
## 
##   F   M 
## 662 676
table(data$sex)/sum(table(data$sex))
## 
##         F         M 
## 0.4947683 0.5052317

Biến giới tính (sex) là biến định tính, thể hiện giới tính của bệnh nhân (F: nữ; M: nam). Dựa vào kết quả thống kê trên ta thấy trong tổng số 1338 bệnh nhân nhập viện có sử dụng bảo hiểm thì có 662 bệnh nhân giới tính là nữ và chiếm 49,48% tổng số người nhập viện. Số bệnh nhân nam là 676 người và so với tổng số bệnhn nhân thì chiếm tỉ lệ 50,52%.

2.1.2 Đồ thị cột biến sex:

library(ggplot2)
ggplot(data,aes(sex)) + geom_bar(color ="red", fill = "blue") + ylab("Số bệnh nhân") + xlab("Giới tính (sex)")

Đồ thị cột thể hiện số bệnh nhân nhập viện được chia theo giới tính nam hoặc nữ, có thể thấy không có quá nhiều sự chênh lệch giữa giới tính của các bệnh nhân khi tỷ lệ bệnh nhân nam và nữ xấp xỉ nhau.

2.2 Thống kê mô tả biến độ tuổi (age):

2.2.1 Các đại lượng đặc trưng:

summary(data$age)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   18.00   27.00   39.00   39.21   51.00   64.00

Biến độ tuổi (age) là biến định lượng cho biết độ tuổi của các bệnh nhân. Thông qua kết quả trên ta thấy các bệnh nhân nhập viện có độ tuổi nhỏ nhất là 18 tuổi, lớn nhất là 64 tuổi và độ tuổi trung bình của các bệnh nhân khoảng 39 tuổi. Tứ phân vị: là ba điểm cắt sẽ chia tập dữ liệu thành 4 nhóm có kích thước bằng nhau, cụ thể:

Tứ phân vị thứ nhất (1st Qu.) = 27 Nghĩa là dưới 25% số người nhập viện có độ tuổi nhỏ hơn 27 tuổi hay trên 75% số người nhập viện có độ tuổi lớn hơn 27 tuổi.

Tứ phân vị thứ hai (trung vị: Median) = 39 Nghĩa là dưới 50% số bện nhân có số tuổi nhỏ hơn 39 hay trên 50% số bệnh nhân có độ tuổi lớn hơn 39 tuổi.

Tứ phân vị thứ ba (3rd Qu.) = 51 Nghĩa là dưới 75% tổng số người nhập viện có độ tuổi nhỏ hơn 51 hay trên 25% số người nhập viện lớn hơn 51 tuổi.

2.2.2 Bảng tấn số biến age:

age <- data$age
table(cut(age,3))
## 
##   (18,33.3] (33.3,48.7]   (48.7,64] 
##         523         402         413

Bảng tần số trên cho thấy có 523 người nhập viện có độ tuổi trong khoảng từ 18 đến 33 tuổi; có 402 người nhập viện có tuổi trong khoảng từ 33 đến 48 tuổi và có 413 người nhập viện có số tuổi nằm trong khoảng từ 48 đến 64 tuổi.

2.2.3 Biểu đồ tần số của biến age:

library(ggplot2)
hist(data$age, main = "Biểu đồ tần số của độ tuổi (age)",xlab = "Độ tuổi", ylab = "Số người", col = "lightblue")

Dựa vào biểu đồ tần số của biến độ tuổi (age) cho thấy không có quá nhiều sự chênh lệch về số lượng người nhập viện ứng với những độ tuổi khác nhau. Trong đó số lượng người nhập viện dưới 20 tuổi là nhiều nhất và số người nhập viện trên 60 tuổi là ít nhất.

2.3 Thống kê mô tả biến chỉ số khối (bmi):

2.3.1 Các đại lượng đặc trưng:

summary(data$bmi)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   15.96   26.30   30.40   30.66   34.69   53.13

Biến (bmi) là biến định lượng về chỉ số khối của cơ thể, cho biết tỷ lệ cân nặng với chiều cao ở người nhập viện để đánh giá được trình trạng cơ thể. Thông qua kết quả trên cho ta thấy chỉ số khối (bmi) thấp nhất là 15,96 (kg/m^2) và cao nhhất là 53,13 (kg/m^2). Giá trị trung bình của chỉ số khối cơ thể (bmi) là 30,66 (kg/m^2).

Tứ phân vị: là ba điểm cắt sẽ chia tập dữ liệu thành 4 nhóm có kích thước bằng nhau, cụ thể:

Tứ phân vị thứ nhất (1st Qu.) = 26,3 Nghĩa là dưới 25% số người nhập viện có chỉ số khối (bmi) nhỏ hơn 26,3 kg/m^2 tuổi hay trên 75% số người nhập viện có chỉ số khối (bmi) lớn hơn 26,3 kg/m^2

Tứ phân vị thứ hai (trung vị: Median) = 30,4 Nghĩa là dưới 50% số bện nhân có chỉ số khối (bmi) nhỏ hơn 30,4 kg/m^2 hay trên 50% số bệnh nhân có chỉ số khối lớn hơn 30,4 kg/m^2

Tứ phân vị thứ ba (3rd Qu.) = 34,69 Nghĩa là dưới 75% tổng số người nhập viện có chỉ số khối (bmi) nhỏ hơn 34,69 kg/m^2 hay trên 25% số người nhập viện có chỉ số khối (bmi) lớn hơn 34,69 kg/m^2

2.3.2 Bảng tần số biến bmi

bmi <- data$bmi
table(cut(bmi,3))
## 
## (15.9,28.4] (28.4,40.7] (40.7,53.2] 
##         502         765          71

Ta thấy rằng phần lớn số người nhập viện có chỉ số khối (bmi) nằm trong khoảng từ 28,4 đến 40,7 kg/m^2 chiếm 765 người. Có 502 người nhập viện có chỉ số khối trong khoảng 15,9 đến 28,4 kg/m^2 và chỉ có 71 người có chỉ số khối (bmi) cao trong khoảng từ 40,7 đến 53,2 kg/m^2.

2.3.3 Biểu đồ histogram biến bmi

hist(data$bmi, main = "Biểu đồ tần số của chỉ số khối cơ thể (bmi)",xlab = "Chỉ số khối (bmi)", ylab = "Số người", col = "pink")

Thông qua biểu đồ tần số trên có thể thấy rằng phần lớn những người nhập viện có chỉ số khối cơ thể (bmi) nằm trong khoảng từ 20 đến 40 kg/m^2, tức cao hơn so với chỉ số bmi lý tưởng của một cơ thể là từ 18,5 đến 24,9 kg/m^2. Còn lại những người nhập viện có chỉ số bmi quá thấp là dưới 20 kg/m^2 và quá cao là trên 40 kg/m^2 chiếm số ít trong tổng số người nhập viện.

2.4 Thống kê mô tả biến tình trạng sử dụng thuốc lá (smoker):

2.4.1 Bảng tần số - bảng tần suất

table(data$smoker)
## 
##    N    Y 
## 1064  274
table(data$smoker)/sum(table(data$smoker))
## 
##         N         Y 
## 0.7952167 0.2047833

Biến tình trạng sử dụng thuốc lá (smoker) là biến định tính, thể hiện những người nhập viện có sử dụng thuốc lá hay không (N: không; Y: nữ). Dựa vào kết quả thống kê trên ta thấy trong tổng số 1338 bệnh nhân nhập viện thì có tới 1064 người sử dụng thuốc lá và chiếm 79,52% tổng số người nhập viện. Số bệnh nhân không sử dụng thuốc lá là 274 người và so với tổng số bệnh nhân thì chiếm tỉ lệ 20,47%.

2.4.2 Đồ thị cột

ggplot(data,aes(smoker)) + geom_bar(color ="blue", fill = "yellow") + ylab("Số bệnh nhân") + xlab("tình trạng sử dụng thuốc lá (smoker)")

Dựa vào biểu đồ cột ta thấy có sự chênh lệch khá lớn giữa số người nhập viện có sử dụng thuốc lá và không sử dụng thuốc lá. Số người không sử dụng thuốc lá chiếm phần lớn trong tồng số 1338 người nhập viện, gần gấp 4 lần những người có sử dụng thuốc lá.

2.5 Thống kê mô tả biến số người phụ thuộc (dependent):

2.5.1 Bảng tần số, bảng tần suất

table(data$dependent)
## 
##   0   1   2   3   4   5 
## 574 324 240 157  25  18
table(data$dependent)/sum(table(data$dependent))
## 
##          0          1          2          3          4          5 
## 0.42899851 0.24215247 0.17937220 0.11733931 0.01868460 0.01345291

Biến số người phụ thuộc (dependent): là biến định tính, thể hiện số người phụ thuộc của những người nhập viện, theo như số liệu gốc thì biến số người phụ thuộc nhận các giá trị là 0,1,2,3,4,5. Có thể thấy phần lớn số người nhập viện không có người phụ thuộc hoặc có từ 1,2 người phụ thuộc cụ thể là có 574 người nhập viện không có người phụ thuộc, chiếm đến 42,89% tổng số người nhập viện, bên cạnh đó tỷ lệ người nhập viện có 1 người phụ thuộc là 24,21% và tỷ lệ người nhập viện có 2 người phụ thuộc là 17,93%. Con số này của những người nhập viện có 3 hoặc 4 hoặc 5 người phụ thuộc chỉ lần lượt là 11,73%; 1,87% và 1,34% .

2.5.2 Biểu đồ tròn

pie(table(data$dependent), col = rainbow(6), main = "Biểu đồ số người phụ thuộc của những người nhập viện")

Theo như biểu đồ tròn phía trên có thể thấy tỷ lệ những người nhập viện không có người phụ thuộc chiếm gần một nửa tổng số người nhập viện, những người nhập viện có 1 hoặc 2 hoặc 3 người phụ thuộc chiếm hơn một nửa tổng số và những người nhập viện có 4 hoặc 5 người phụ thuộc chỉ chiếm phần nhỏ trong tổng số những người nhập viện. Có thể nói rằng những người có ít người phụ thuộc có tỷ lệ nhập viện cao hơn so với những người có nhiều người phụ thuộc.

2.6 Thống kê mô tả biến khu vực cư trú (region):

2.6.1 Bảng tần số - tần suất

table(data$region)
## 
## northeast northwest southeast southwest 
##       324       325       364       325
table(data$region)/sum(table(data$region))
## 
## northeast northwest southeast southwest 
## 0.2421525 0.2428999 0.2720478 0.2428999

Biến khu vực cư trú (region) là biến định tính bao gồm 4 thông tin về vùng cư trú tại Mỹ của các bệnh nhân nhập viện là (Northeast: Đông Bắc, Southeast: Đông Nam, Southwest: Tây Bắc, Northwest: Tây Nam). Từ kết quả trên ta thấy trong tổng số 1338 người nhập viện thì trong đó có 324 người đến từ vùng Đông Bắc; 325 người đến từ Tây Nam; 364 người đến từ Đông Nam và 325 người đến từ vùng Tây Bắc, các tỷ lệ này tương ứng lần lượt là 24,21%; 24,29%; 27,2% và 24,29% trong tổng số người nhập viện.

2.6.2 Biểu đồ cột

library(ggplot2)
ggplot(data,aes(region))+ geom_bar(color = "blue",fill="orange") + ylab("Số người") + xlab("Khu vực cư trú (region)")

Theo như biểu đồ cột trên thì có thể thấy không có quá nhiều sự khác biệt về số lượng người nhập viện đến từ những vùng khác nhau. Trong đó những người đến từ vùng Đông Nam là nhiều nhất còn lại số lượng những người đến từ vùng Đông Bắc, Tây Bắc và Tây Nam là khá tương đồng nhau.

2.7 Thống kê mô tả biến chi phí bảo hiểm y tế (charges):

2.7.1 Các đại lượng đặc trưng

summary(data$charges)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    1122    4740    9382   13270   16640   63770

Biến chi phí y tế (charges) là biến định lượng cho biết số tiền bảo hiểm mà công ty bảo hiểm phải chi trả cho các bệnh nhân. Thông qua kết quả trên ta thấy số tiền bảo hiểm ít nhất là 1122 USD, số tiền bảo hiểm chi trả nhiều nhất là 63770 USD và trung bình công ty bảo hiểm chi trả 13270 USD cho một người nhập viện.

Tứ phân vị: là ba điểm cắt sẽ chia tập dữ liệu thành 4 nhóm có kích thước bằng nhau, cụ thể:

Tứ phân vị thứ nhất (1st Qu.) = 4740 Nghĩa là dưới 25% số người nhập viện có chi phí y tế dưới 4740 USD hay trên 75% số người nhập viện có chi phí lớn hơn 4740 USD.

Tứ phân vị thứ hai (trung vị: Median) = 9382 Nghĩa là dưới 50% số bện nhân có chi phí y tế nhỏ hơn 9382 USD hay trên 50% số bệnh nhân có chi phí lớn hơn 9382 USD.

Tứ phân vị thứ ba (3rd Qu.) = 16640 Nghĩa là dưới 75% tổng số người nhập viện có chi phí y tế nhỏ hơn 166640 USD hay trên 25% chi phí y tế của những người nhập viện lớn hơn 16640 USD.

2.7.2 Biểu đồ histogram

hist(data$charges, main = "Biểu đồ tần số của chi phí y tế (charges)",xlab = "Chi phí y tế", ylab = "Count", col = "lightgreen")

3 ,Thống kê mô tả biến phụ thuộc với các biến độc lập và phân tích kết quả

3.1 Thống kê mô tả biến phụ thuộc: chi phí y tế (charges) với biến độc lập: giới tính (sex)

3.1.1 Mã hoá biến phụ thuộc (charges) từ định lượng sang định tính

Với dữ liệu gốc, biến chi phí y tế (charges) là biến định lượng nhận các giá trị từ 0 đến 63770 USD nên tác giả đã đặt quy ước về việc mã hoá biến (charges) như sau: Chi phí thấp (Thấp): chi phí y tế từ trên 0 USD đến 15000 USD. Chi phí cao (Cao): chi phí y tế từ 15000 USD đến 64000 USD.

charges <- cut(data$charges, breaks = c(0,15000,64000), labels=c("Thấp","Cao"))
table(charges)
## charges
## Thấp  Cao 
##  980  358

3.1.2 Bảng tần số, tần suất và biểu đồ

sex <- data$sex
table(sex)
## sex
##   F   M 
## 662 676

Bảng tần số:

a <- table(sex, charges);a
##    charges
## sex Thấp Cao
##   F  503 159
##   M  477 199

Bảng tần suất:

a1 <- prop.table(a);a1
##    charges
## sex      Thấp       Cao
##   F 0.3759342 0.1188341
##   M 0.3565022 0.1487294

Phân phối biên:

addmargins(a)
##      charges
## sex   Thấp  Cao  Sum
##   F    503  159  662
##   M    477  199  676
##   Sum  980  358 1338

Biểu đồ cột kết hợp 2 biến:

library(ggplot2)
library(data.table)
k <- data.frame(data$age, data$sex, data$bmi, data$dependent, data$smoker, data$region, data$charges, charges, sex)
k |> ggplot(aes(x=sex,y=after_stat(count))) + geom_bar(fill="blue") + geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = "count", color = "red", vjust = - .5) + facet_grid(. ~charges) + labs(x = "Giới tính",y = "Số người")

Thông qua bảng tần số, tần suất trên của 2 biến Chi phí y tế và Giới tính ta thấy có 980 người nhập viện có chi phí y tế thấp (tức dưới 15000 USD) trong đó có 503 người là nữ, chiếm tỉ lệ 37,6% tổng số bệnh nhân và 477 người là nam, chiếm 35,6% tổng số bệnh nhân. Bên cạnh đó có 358 người có chi phí y tế ở mức cao (trên 15000 USD) trong đó có 159 người là nữ, chiếm 11,9% tổng số bệnh nhân và 199 người là nam, chiếm 14,9% tổng số bệnh nhân. Số người nhập viện có chi phí y tế cao chỉ xấp xỉ khoảng 30% số người nhập viện có chi phí y tế thấp. Qua biểu đồ có thể thấy đối với những người nhập viện có chi phí thấp thì tỷ lệ nữ cao hơn nam nhưng đối với những người nhập viện có chi phí cao thì tỷ lệ nam lại nhiều hơn nữ.

3.1.3 Rủi ro tương đối (Risk ratio)

library(epitools)
riskratio(a)
## $data
##        charges
## sex     Thấp Cao Total
##   F      503 159   662
##   M      477 199   676
##   Total  980 358  1338
## 
## $measure
##    risk ratio with 95% C.I.
## sex estimate    lower    upper
##   F 1.000000       NA       NA
##   M 1.225652 1.024954 1.465649
## 
## $p.value
##    two-sided
## sex midp.exact fisher.exact chi.square
##   F         NA           NA         NA
##   M 0.02533111   0.02627532 0.02515577
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"

Theo kết quả trên ta thấy tỉ lệ rủi ro tương đối (risk ratio) của những bệnh nhân có chi phí y tế cao theo giới tính là 1,2256 tức là tỉ lệ những bệnh nhân có chi phí y tế cao là nữ gấp 1,2256 lần tỉ lệ những bệnh nhân có chi phí y tế cao là nam.

Khi thêm tham số rev = “c” thì sẽ thực hiện việc đổi chỗ 2 cột trong bảng ngẫu nhiên:

riskratio(a, rev = "c")
## $data
##        charges
## sex     Cao Thấp Total
##   F     159  503   662
##   M     199  477   676
##   Total 358  980  1338
## 
## $measure
##    risk ratio with 95% C.I.
## sex  estimate     lower     upper
##   F 1.0000000        NA        NA
##   M 0.9286706 0.8703608 0.9908868
## 
## $p.value
##    two-sided
## sex midp.exact fisher.exact chi.square
##   F         NA           NA         NA
##   M 0.02533111   0.02627532 0.02515577
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"

Theo kết quả trên ta thấy tỉ lệ rủi ro tương đối (risk ratio) của những bệnh nhân có chi phí y tế thấp theo giới tính là 0,9287 tức là tỉ lệ những bệnh nhân có chi phí y tế thấp là nữ ít hơn và xấp xỉ bằng tỉ lệ những bệnh nhân có chi phí y tế cao là nam.

3.1.4 Tỷ lệ chênh lệch (odd ratio)

epitab(a, method = "oddsratio")
## $tab
##    charges
## sex Thấp        p0 Cao        p1 oddsratio    lower   upper    p.value
##   F  503 0.5132653 159 0.4441341  1.000000       NA      NA         NA
##   M  477 0.4867347 199 0.5558659  1.319792 1.034851 1.68319 0.02627532
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Theo kết quả trên ta thấy tỉ lệ chênh (odd ratio) là 1,3193 tức tỉ lệ những bệnh nhân có chi phí y tế cao/những bệnh nhân có chi phí y tế thấp ở giới tính nam lớn hơn khoảng 31,93% so với tỉ lệ bệnh nhân có chi phí y tế cao/bệnh nhân có chi phí y tế thấp ở giới tính nữ.

Khi thêm tham số rev = “r” thì sẽ thực hiện việc đổi chỗ 2 dòng trong bảng ngẫu nhiên:

epitab(a, method = "oddsratio", rev = "r")
## $tab
##    charges
## sex Thấp        p0 Cao        p1 oddsratio     lower     upper    p.value
##   M  477 0.4867347 199 0.5558659  1.000000        NA        NA         NA
##   F  503 0.5132653 159 0.4441341  0.757695 0.5941098 0.9663226 0.02627532
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Theo kết quả trên ta thấy tỉ lệ chênh (odd ratio) là 0,7577 tức tỉ lệ những bệnh nhân có chi phí y tế cao/những bệnh nhân có chi phí y tế thấp ở giới tính nữ chỉ bằng khoảng 75,77% tỉ lệ bệnh nhân có chi phí y tế cao/bệnh nhân có chi phí y tế thấp ở giới tính nam.

3.1.5 Thống kê suy diễn

Kiểm định tính độc lập cho 2 biến (charges) và (sex):

Phương pháp chi bình phương:

Giả thuyết Ho: charges và sex độc lập

a <- table(data$sex, charges);a
##    charges
##     Thấp Cao
##   F  503 159
##   M  477 199
chisq.test(a)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  a
## X-squared = 4.7404, df = 1, p-value = 0.02946

Kết quả kiểm định trên cho thấy giá trị tới hạn P_value = 0,02946 < 5% vì vậy chưa có cơ sở để thừa nhận giả thuyết Ho, nói cách khác giữa chi phí bảo hiểm y tế (charges) và giới tính (sex) có liên quan tới nhau.

3.2 Thống kê mô tả biến phụ thuộc: chi phí y tế (charges) với biến độc lập: độ tuổi (age)

3.2.1 Mã hoá biến độ tuổi (age) từ định lượng sang định tính

Với dữ liệu gốc, biến độ tuổi (age) là biến định lượng nhận các giá trị từ 18 đến 64 tuổi. Theo Trung tâm Y tế và Sức khoẻ Philips ở Mỹ cho biết nếu như từ lâu tuổi 40 được xem là cột mốc đánh dấu sự bắt đầu của tuổi trung niên thì nay độ tuổi này đã hạ xuống còn 35 với người Mỹ nên tác giả đã đặt quy ước về việc mã hoá biến (age) như sau:

Tuổi nhóm trung niên (trungnien): độ tuổi từ trên 35 tuổi đến 65 tuổi.

Tuổi nhóm thanh niên (thanhnien): độ tuổi từ trên 16 tuổi đến 35 tuổi.
age <- cut(data$age, breaks = c(16,35,65), labels=c("thanhnien","trungnien"))
table(age)
## age
## thanhnien trungnien 
##       574       764

3.2.2 Bảng tần số, tần suất và biểu đồ

Bảng tần số:

b <- table(age, charges); b
##            charges
## age         Thấp Cao
##   thanhnien  428 146
##   trungnien  552 212

Bảng tần suất:

b1 <- prop.table(b); b1
##            charges
## age              Thấp       Cao
##   thanhnien 0.3198804 0.1091181
##   trungnien 0.4125561 0.1584454

Phân phối biên:

addmargins(b)
##            charges
## age         Thấp  Cao  Sum
##   thanhnien  428  146  574
##   trungnien  552  212  764
##   Sum        980  358 1338

Biểu đồ cột kết hợp 2 biến:

m <- data.frame(data$age, data$sex, data$bmi, data$dependent, data$smoker, data$region, data$charges, charges, age)
m |> ggplot(aes(x=age,y=after_stat(count))) + geom_bar(fill="green") + geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = "count", color = "blue", vjust = - .5) + facet_grid(. ~charges) + labs(x = "Độ tuổi",y = "Số người")

Thông qua bảng tần số, tần suất trên của 2 biến Chi phí y tế và độ tuổi ta thấy có 980 người nhập viện có chi phí y tế thấp (tức dưới 15000 USD) trong đó có 428 người nhóm tuổi thanh niên, chiếm tỉ lệ 31,99% tổng số bệnh nhân và 552 người nhóm tuổi trung niên, chiếm tỉ lệ 41,25% tổng số bệnh nhân . Bên cạnh đó có 358 người có chi phí y tế ở mức cao (trên 15000 USD) trong đó có 146 người nhóm tuổi thanh niên, chiếm 10,91% tổng số bệnh nhân và 212 người nhóm tuổi trung niên, chiếm 15,84% tổng số bệnh nhân. Số người nhập viện có chi phí y tế cao chỉ xấp xỉ khoảng 30% số người nhập viện có chi phí y tế thấp. Qua biểu đồ có thể thấy đối với những người nhập viện có cả chi phí thấp và chi phí cao thì tỷ lệ người thuộc nhóm tuổi trung niên vẫn nhiều hơn những người thuộc nhóm tuổi thanh niên nhưng đối với từng mức chi phí thì mức độ chênh lệch giữa 2 nhóm tuồi này không quá lớn.

3.2.3 Rủi ro tương đối (Risk ratio)

epitab(b, method = "riskratio")
## $tab
##            charges
## age         Thấp        p0 Cao        p1 riskratio     lower   upper   p.value
##   thanhnien  428 0.7456446 146 0.2543554  1.000000        NA      NA        NA
##   trungnien  552 0.7225131 212 0.2774869  1.090942 0.9104463 1.30722 0.3501079
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Theo kết quả trên ta thấy tỉ lệ rủi ro tương đối (risk ratio) của những bệnh nhân có chi phí y tế cao theo độ tuổi là 1,0909 tức là tỉ lệ những bệnh nhân có chi phí y tế cao trong nhóm tuổi trung niên gấp 1,0909 lần tỉ lệ những bệnh nhân có chi phí y tế cao trong nhóm tuổi thanh niên.

Khi thêm tham số rev = “c” thì sẽ thực hiện việc đổi chỗ 2 cột trong bảng ngẫu nhiên:

epitab(b, method = "riskratio", rev = "c")
## $tab
##            charges
## age         Cao        p0 Thấp        p1 riskratio     lower    upper   p.value
##   thanhnien 146 0.2543554  428 0.7456446 1.0000000        NA       NA        NA
##   trungnien 212 0.2774869  552 0.7225131 0.9689778 0.9080744 1.033966 0.3501079
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Theo kết quả trên ta thấy tỉ lệ rủi ro tương đối (risk ratio) của những bệnh nhân có chi phí y tế thấp theo độ tuổi là 0,9690 tức là tỉ lệ những bệnh nhân có chi phí y tế thấp trong nhóm tuổi trung niên gần bằng tỉ lệ những bệnh nhân có chi phí y tế thấp trong nhóm tuổi thanh niên.

3.2.4 Tỉ lệ chênh lệch (odd ratio)

epitab(b, method = "oddsratio")
## $tab
##            charges
## age         Thấp        p0 Cao        p1 oddsratio     lower    upper   p.value
##   thanhnien  428 0.4367347 146 0.4078212  1.000000        NA       NA        NA
##   trungnien  552 0.5632653 212 0.5921788  1.125869 0.8806103 1.439434 0.3501079
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Theo kết quả trên ta thấy tỉ lệ chênh (odd ratio) là 1,1259 tức tỉ lệ những bệnh nhân có chi phí y tế thấp/những bệnh nhân có chi phí y tế cao ở nhóm tuổi thanh niên lớn hơn khoảng 12,59% so với tỉ lệ bệnh nhân có chi phí y tế thấp/bệnh nhân có chi phí y tế cao ở nhóm tuổi trung niên.

Khi thêm tham số rev = “r” thì sẽ thực hiện việc đổi chỗ 2 dòng trong bảng ngẫu nhiên:

epitab(b, method = "oddsratio", rev = "r")
## $tab
##            charges
## age         Thấp        p0 Cao        p1 oddsratio     lower    upper   p.value
##   trungnien  552 0.5632653 212 0.5921788 1.0000000        NA       NA        NA
##   thanhnien  428 0.4367347 146 0.4078212 0.8882031 0.6947177 1.135576 0.3501079
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Theo kết quả trên ta thấy tỉ lệ chênh (odd ratio) là 0,8882 tức tỉ lệ những bệnh nhân có chi phí y tế cao/những bệnh nhân có chi phí y tế thấp ở nhóm tuổi thanh niên bằng khoảng 88,82% so với tỉ lệ bệnh nhân có chi phí y tế cao/bệnh nhân có chi phí y tế thấp ở nhóm tuổi trung niên.

3.2.5 Thống kê suy diễn

Kiểm định tính độc lập cho 2 biến (charges) và (age):

Phương pháp chi bình phương: Giả thuyết Ho: (charges) và (age) độc lập

b <- table(age, charges);b
##            charges
## age         Thấp Cao
##   thanhnien  428 146
##   trungnien  552 212
chisq.test(b)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  b
## X-squared = 0.78073, df = 1, p-value = 0.3769

Kết quả kiểm định trên cho thấy giá trị tới hạn P_value = 0,3769 > 5% vì vậy có cơ sở để thừa nhận giả thuyết Ho, nói cách khác giữa chi phí bảo hiểm y tế (charges) và độ tuổi (age) độc lập với nhau.

3.3 Thống kê mô tả biến phụ thuộc: chi phí y tế (charges) với biến độc lập: chỉ số khối cơ thể (bmi)

3.3.1 Mã hoá biến chỉ số khối cơ thể (bmi) từ định lượng sang định tính

Với dữ liệu gốc, biến chỉ số khối của cơ thể (bmi) là biến định lượng nhận các giá trị từ 15,96 đến 53,13 kg/m^2. Chỉ số bmi của một người lý tưởng sẽ nằm trong khoảng từ 18,5 đến 24,9 kg/m^2 nên tác giả đã đặt quy ước về việc mã hoá biến (bmi) như sau: Chỉ số khối (bmi) người bình thường (candoi): bmi từ 15,9 đến 25 kg/m^2. Chỉ số khối (bmi) người không cân đối (khongcandoi): bmi từ 25 đến 54 kg/m^2.

bmi <- cut(data$bmi, breaks = c(15.9,25,54), labels=c("candoi","khongcandoi"))
table(bmi)
## bmi
##      candoi khongcandoi 
##         247        1091

3.3.2 Bảng tần số, tần suất và biểu đồ

Bảng tần số:

d <- table(bmi, charges); d
##              charges
## bmi           Thấp Cao
##   candoi       187  60
##   khongcandoi  793 298

Bảng tần suất:

d1 <- prop.table(d); d1
##              charges
## bmi                 Thấp        Cao
##   candoi      0.13976084 0.04484305
##   khongcandoi 0.59267564 0.22272048

Phân phối biên:

addmargins(d)
##              charges
## bmi           Thấp  Cao  Sum
##   candoi       187   60  247
##   khongcandoi  793  298 1091
##   Sum          980  358 1338

Biểu đồ cột kết hợp 2 biến:

n <- data.frame(data$age, data$sex, data$bmi, data$dependent, data$smoker, data$region, data$charges, charges, age, bmi)
m |> ggplot(aes(x=bmi,y=after_stat(count))) + geom_bar(fill="pink") + geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = "count", color = "navy", vjust = - .5) + facet_grid(. ~charges) + labs(x = "Chỉ số khối (bmi) cơ thể",y = "Số người")

Thông qua bảng tần số, tần suất trên của 2 biến Chi phí y tế và chỉ số khối cơ thể ta thấy có 980 người nhập viện có chi phí y tế thấp (tức dưới 15000 USD) trong đó chỉ có 187 người có chỉ số bmi cân đối, chiếm tỉ lệ 13,98% tổng số bệnh nhân và 793 người có chỉ số bmi không cân đối, chiếm tỉ lệ 59,27% tổng số bệnh nhân . Bên cạnh đó có 358 người có chi phí y tế ở mức cao (trên 15000 USD) trong đó chỉ có 60 có chỉ số bmi cân đối, chiếm 4,48% tổng số bệnh nhân và 298 người có chỉ số bmi không cân đối, chiếm 22,27% tổng số bệnh nhân. Trong tổng số những người nhập viện thì tỉ lệ những người có chỉ số khối cơ thể (bmi) không cân đối gấp hơn 4 lần những người có chỉ số (bmi) cân đối. Qua biểu đồ có thể thấy đối với những người nhập viện có cả chi phí thấp và chi phí cao thì tỷ lệ người thuộc nhóm chỉ số bmi không cân đối vẫn nhiều hơn những người thuộc nhóm có chỉ số bmi cân đối, bên cạnh đó đối với từng mức chi phí thì mức độ chênh lệch về số lượng bệnh nhân giữa 2 nhóm chỉ số bmi này là khá nhiều.

3.3.3 Rủi ro tương đối (Risk ratio)

epitab(d, method = "riskratio")
## $tab
##              charges
## bmi           Thấp        p0 Cao        p1 riskratio     lower    upper
##   candoi       187 0.7570850  60 0.2429150  1.000000        NA       NA
##   khongcandoi  793 0.7268561 298 0.2731439  1.124442 0.8840731 1.430165
##              charges
## bmi             p.value
##   candoi             NA
##   khongcandoi 0.3812685
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Theo kết quả trên ta thấy tỉ lệ rủi ro tương đối (risk ratio) của những bệnh nhân có chi phí y tế cao theo chỉ số khối (bmi) cơ thể là 1,1244 tức là tỉ lệ những bệnh nhân có chi phí y tế cao có chỉ số bmi không cân đối lớn hơn 12,44% so với tỉ lệ những bệnh nhân có chi phí y tế cao có chỉ số bmi cân đối.

3.3.4 Tỉ lệ chênh lệch (odd ratio)

epitab(d, method = "oddsratio")
## $tab
##              charges
## bmi           Thấp        p0 Cao        p1 oddsratio     lower    upper
##   candoi       187 0.1908163  60 0.1675978  1.000000        NA       NA
##   khongcandoi  793 0.8091837 298 0.8324022  1.171206 0.8506008 1.612654
##              charges
## bmi             p.value
##   candoi             NA
##   khongcandoi 0.3812685
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Theo kết quả trên ta thấy tỉ lệ chênh (odd ratio) là 1,1712 tức tỉ lệ những bệnh nhân có chi phí y tế cao/những bệnh nhân có chi phí y tế thấp ở nhóm người có chỉ số bmi không cân đối lớn hơn khoảng 17,12% so với tỉ lệ bệnh nhân có chi phí y tế cao/bệnh nhân có chi phí y tế thấp ở nhóm người có chỉ số bmi cân đối.

3.3.5 Thống kê suy diễn

Kiểm định tính độc lập cho 2 biến (charges) và (bmi):

Phương pháp chi bình phương: Giả thuyết Ho: (charges) và (bmi) độc lập

d <- table(bmi, charges);d
##              charges
## bmi           Thấp Cao
##   candoi       187  60
##   khongcandoi  793 298
chisq.test(d)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  d
## X-squared = 0.79119, df = 1, p-value = 0.3737

Kết quả kiểm định trên cho thấy giá trị tới hạn P_value = 0,3737 > 5% vì vậy có cơ sở để thừa nhận giả thuyết Ho, nói cách khác giữa chi phí bảo hiểm y tế (charges) và chỉ số khối cơ thể (bmi) độc lập với nhau.

3.4 Thống kê mô tả biến phụ thuộc: chi phí y tế (charges) với biến độc lập: số người phụ thuộc (dependent)

3.4.1 Mã hoá biến số người phụ thuộc (dependent) định tính có 2 giá trị

Với dữ liệu gốc, biến số người phụ thuộc (dependent) là biến định tính nhận các giá trị từ 0 đến 5 (người). Những bệnh nhân chỉ có 0 hay 1 người phụ thuộc thường được coi là ít người phụ thuộc, những bệnh nhân có từ 2 người phụ thuộc trở lên được coi là nhiều người phụ thuộc nên tác giả đã đặt quy ước về việc mã hoá biến (dependent) như sau: Bệnh nhân có ít người phụ thuộc (ít): Số người phụ thuộc từ 0 đến 1 người. Bệnh nhân có nhiều người phụ thuộc (nhiều): Số người phụ thuộc từ 2 đến 5 người.

p <- table(data$dependent, charges); p
##    charges
##     Thấp Cao
##   0  436 138
##   1  242  82
##   2  164  76
##   3  104  53
##   4   17   8
##   5   17   1
f <- data.frame(data$age, data$sex, data$bmi, data$dependent, data$smoker, data$region, data$charges, charges, age, bmi)
library(dplyr)
dpd <- f %>% mutate(phuthuoc = case_when(data$dependent == "0" ~ 1, data$dependent =="1" ~ 1, data$dependent =="2" ~ 4, data$dependent =="3" ~ 4, data$dependent =="4" ~ 4, data$dependent =="5" ~ 4))
dependent <- cut(dpd$phuthuoc, breaks = c(0,2,5), labels = c("It", "Nhieu"))
table(dependent)
## dependent
##    It Nhieu 
##   898   440

3.4.2 Bảng tần số, tần suất và biểu đồ

Bảng tần số:

e <- table(dependent, charges); e
##          charges
## dependent Thấp Cao
##     It     678 220
##     Nhieu  302 138

Bảng tần suất:

e1 <- prop.table(e); e1
##          charges
## dependent      Thấp       Cao
##     It    0.5067265 0.1644245
##     Nhieu 0.2257100 0.1031390

Phân phối biên:

addmargins(e)
##          charges
## dependent Thấp  Cao  Sum
##     It     678  220  898
##     Nhieu  302  138  440
##     Sum    980  358 1338

Biểu đồ cột kết hợp 2 biến:

k <- data.frame(data$age, data$sex, data$bmi, data$dependent, data$smoker, data$region, data$charges, charges, age, bmi, dependent)
k |> ggplot(aes(x=dependent,y=after_stat(count))) + geom_bar(fill="yellow") + geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = "count", color = "darkblue", vjust = - .5) + facet_grid(. ~charges) + labs(x = "Số người phụ thuộc (dependent)",y = "Số người")

Thông qua bảng tần số, tần suất trên của 2 biến Chi phí y tế và số người phụ thuộc ta thấy có 980 người nhập viện có chi phí y tế thấp (tức dưới 15000 USD) trong đó có tới 678 người có ít người phụ thuộc (tức không có hoặc có 1 người phụ thuộc), chiếm tỉ lệ 50,67% tổng số bệnh nhân và 302 người có nhiều người phụ thuộc (tức có 2,3,4,5 người phụ thuộc), chiếm tỉ lệ 22,57% tổng số bệnh nhân . Bên cạnh đó có 358 người có chi phí y tế ở mức cao (trên 15000 USD) trong đó có 220 người có ít người phụ thuộc, chiếm 16,44% tổng số bệnh nhân và 138 người có nhiều người phụ thuộc, chiếm 10,31% tổng số bệnh nhân. Trong tổng số những người nhập viện thì tỉ lệ những người có ít người phụ thuộc (không có hoặc chỉ có 1 người phụ thuộc) gấp hơn 2 lần những người có nhiều người phụ thuộc. Qua biểu đồ có thể thấy đối với những người nhập viện có cả chi phí thấp và chi phí cao thì tỷ lệ người thuộc nhóm có ít người phụ thuộc vẫn nhiều hơn những người thuộc nhóm có nhiều người phụ thuộc, bên cạnh đó đối với mức chi phí y tế thấp thì tỷ lệ những bệnh nhân có ít người phụ thuộc lớn gấp đôi tỷ lệ những bệnh nhân có nhiều người phụ thuộc.

3.4.3 Rủi ro tương đối (Risk ratio)

epitab(e, method = "riskratio")
## $tab
##          charges
## dependent Thấp        p0 Cao        p1 riskratio    lower    upper     p.value
##     It     678 0.7550111 220 0.2449889  1.000000       NA       NA          NA
##     Nhieu  302 0.6863636 138 0.3136364  1.280207 1.069647 1.532215 0.008556493
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Theo kết quả trên ta thấy tỉ lệ rủi ro tương đối (risk ratio) của những bệnh nhân có chi phí y tế cao theo số người phụ thuộc (dependent) là 1,2802 tức là tỉ lệ những bệnh nhân có nhiều người phụ thuộc có chi phí y tế cao lớn hơn 28,02% so với tỉ lệ những bệnh nhân có ít người phụ thuộc mà có chi phí y tế cao.

3.4.4 Tỉ lệ chênh lệch (odd ratio)

epitab(e, method = "oddsratio")
## $tab
##          charges
## dependent Thấp        p0 Cao        p1 oddsratio    lower    upper     p.value
##     It     678 0.6918367 220 0.6145251  1.000000       NA       NA          NA
##     Nhieu  302 0.3081633 138 0.3854749  1.408248 1.094163 1.812492 0.008556493
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Theo kết quả trên ta thấy tỉ lệ chênh (odd ratio) là 1,4082 tức tỉ lệ những bệnh nhân có chi phí y tế cao/những bệnh nhân có chi phí y tế thấp ở nhóm bệnh nhân có nhiều người phụ thuộc lớn hơn khoảng 40,82% so với tỉ lệ những bệnh nhân có chi phí y tế cao/những bệnh nhân có chi phí y tế thấp ở nhóm bệnh nhân có ít người phụ thuộc.

3.4.5 Thống kê suy diễn

Kiểm định tính độc lập cho 2 biến (charges) và (dependent):

Phương pháp chi bình phương: Giả thuyết Ho: (charges) và (dependent) độc lập

e <- table(dependent, charges);e
##          charges
## dependent Thấp Cao
##     It     678 220
##     Nhieu  302 138
chisq.test(e)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  e
## X-squared = 6.7551, df = 1, p-value = 0.009348

Kết quả kiểm định trên cho thấy giá trị tới hạn P_value = 0,009348 < 5% vì vậy chưa có cơ sở để thừa nhận giả thuyết Ho, nói cách khác giữa chi phí bảo hiểm y tế (charges) và số người phụ thuộc (dependent) có liên quan với nhau.

3.5 Thống kê mô tả biến phụ thuộc: chi phí y tế (charges) với biến độc lập: khu vực cư trú (region)

3.5.1 Mã hoá biến khu vực cư trú (region) định tính có 2 giá trị

Với dữ liệu gốc, biến khu vực cư trú (region) là biến định tính nhận 4 giá trị: Northeast, Southeast, Southwest, Northwest. Những bệnh nhân đến từ những vùng khác nhau ở Mỹ, cụ thể hơn là từ Đông Bắc, Đông Nam, Tây Bắc, Tây Nam nên tác giả đã đặt quy ước về việc mã hoá 2 giá trị biến (region) như sau: Bệnh nhân đến từ phía Bắc Mỹ (Bắc): khu vực Northeast (Đông Bắc) và Northwest (Tây Bắc). Bệnh nhân đến từ phía Nam Mỹ (Nam): khu vực Southeast (Đông Nam) và Southwest (Tây Nam).

g <- table(data$region, charges); g
##            charges
##             Thấp Cao
##   northeast  235  89
##   northwest  244  81
##   southeast  248 116
##   southwest  253  72
i <- data.frame(data$age, data$sex, data$bmi, data$dependent, data$smoker, data$region, data$charges, charges, age, bmi, dependent)
region <- i %>% mutate(khuvuc = case_when(data$region == "northeast" ~ 1, data$region =="northwest" ~ 1, data$region =="southeast" ~ 4, data$region =="southwest" ~ 4))
region <- cut(region$khuvuc, breaks = c(0,2,5), labels = c("Bắc", "Nam"))
table(region)
## region
## Bắc Nam 
## 649 689

3.5.2 Bảng tần số, tần suất và biểu đồ

Bảng tần số:

g <- table(region, charges); g
##       charges
## region Thấp Cao
##    Bắc  479 170
##    Nam  501 188

Bảng tần suất:

g1 <- prop.table(g); g1
##       charges
## region      Thấp       Cao
##    Bắc 0.3579970 0.1270553
##    Nam 0.3744395 0.1405082

Phân phối biên:

addmargins(g)
##       charges
## region Thấp  Cao  Sum
##    Bắc  479  170  649
##    Nam  501  188  689
##    Sum  980  358 1338

Biểu đồ cột kết hợp 2 biến:

k <- data.frame(data$age, data$sex, data$bmi, data$dependent, data$smoker, data$region, data$charges, charges, sex, age, bmi, dependent, region)
k |> ggplot(aes(x=region,y=after_stat(count))) + geom_bar(fill="purple") + geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = "count", color = "darkgreen", vjust = - .5) + facet_grid(. ~charges) + labs(x = "Khu vực cư trú (region)",y = "Số người")

Thông qua bảng tần số, tần suất trên của 2 biến Chi phí y tế và khu vực cư trú ta thấy có 980 người nhập viện có chi phí y tế thấp (tức dưới 15000 USD) trong đó có 479 người đến từ khu vực phía Bắc (bao gồm Đông Bắc và Tây Bắc), chiếm tỉ lệ 35,80% tổng số bệnh nhân và 501 người đến từ khu vực phía Nam (bao gồm khu vực Đông Nam và Tây Nam), chiếm tỉ lệ 37,44% tổng số bệnh nhân . Bên cạnh đó có 358 người có chi phí y tế ở mức cao (trên 15000 USD) trong đó có 170 đến từ khu vực phía Bắc, chiếm 12,7% tổng số bệnh nhân và 188 người đến từ khu vực phía Nam, chiếm 14,05% tổng số bệnh nhân. Trong tổng số những người nhập viện số lượng người đến từ khu vực phía Bắc (Đông Bắc và Tây Bắc) xấp xỉ số lượng những người đến từ khu vực phía Nam (Đông Nam và Tây Nam). Qua biểu đồ có thể thấy đối với những người nhập viện có cả chi phí thấp và chi phí cao thì tỷ lệ người đến từ khu vực phía Nam vẫn nhiều hơn tỷ lệ những người đến từ khu vực phía Bắc, tuy nhiên sự chênh lệch này là không quá đáng kể.

3.5.3 Rủi ro tương đối (Risk ratio)

epitab(g, method = "riskratio")
## $tab
##       charges
## region Thấp        p0 Cao        p1 riskratio     lower    upper   p.value
##    Bắc  479 0.7380586 170 0.2619414   1.00000        NA       NA        NA
##    Nam  501 0.7271408 188 0.2728592   1.04168 0.8721901 1.244107 0.6657332
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Theo kết quả trên ta thấy tỉ lệ rủi ro tương đối (risk ratio) của những bệnh nhân có chi phí y tế cao theo khu vực cư trú (region) là 1,04168 tức là tỉ lệ những bệnh nhân đến từ khu vực phía Nam có chi phí y tế cao chỉ lớn hơn 4,17% so với tỉ lệ những bệnh nhân đến từ khu vực phía Bắc mà có chi phí y tế cao.

3.5.4 Tỉ lệ chênh lệch (odd ratio)

epitab(g, method = "oddsratio")
## $tab
##       charges
## region Thấp        p0 Cao        p1 oddsratio     lower    upper   p.value
##    Bắc  479 0.4887755 170 0.4748603  1.000000        NA       NA        NA
##    Nam  501 0.5112245 188 0.5251397  1.057321 0.8297932 1.347236 0.6657332
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Theo kết quả trên ta thấy tỉ lệ chênh (odd ratio) là 1,0573 tức tỉ lệ những bệnh nhân có chi phí y tế cao/những bệnh nhân có chi phí y tế thấp ở nhóm bệnh nhân đến từ khu vực phía Nam chỉ lớn hơn khoảng 5,73% so với tỉ lệ những bệnh nhân có chi phí y tế cao/những bệnh nhân có chi phí y tế thấp ở nhóm bệnh nhân đến từ khu vực phía Bắc.

3.5.5 Thống kê suy diễn

Kiểm định tính độc lập cho 2 biến (charges) và (region):

Phương pháp chi bình phương: Giả thuyết Ho: (charges) và (region) độc lập

g <- table(region, charges);g
##       charges
## region Thấp Cao
##    Bắc  479 170
##    Nam  501 188
chisq.test(g)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  g
## X-squared = 0.15138, df = 1, p-value = 0.6972

Kết quả kiểm định trên cho thấy giá trị tới hạn P_value = 0,6972 > 5% vì vậy có cơ sở để thừa nhận giả thuyết Ho, nói cách khác giữa chi phí bảo hiểm y tế (charges) và khu vực cư trú (region) độc lập với nhau.

4 ,Kết quả mô hình hồi quy

Thông qua kiểm định về tính độc lập của biến phụ thuộc chi phí y tế (charges) với các biến độc lập ở nhiệm vụ trước thì tác giả đã tổng hợp được các yếu tố có liên quan đến chi phí y tế (charges) bao gồm độ tuổi (age), giới tính (sex) và số người phụ thuộc (dependent). Vì vậy tác giả sẽ thực hiện việc chạy mô hình hồi quy cho dữ liệu nhị phân của biến phu thuộc (charges) với các biến độc lập (age), (sex) và (dependent).

4.1 Mô hình hồi quy cho biến phụ thuộc: Chi phí y tế (charges)

4.1.1 Mô hình logit

k <- data.frame(data$age, data$sex, data$bmi, data$dependent, data$smoker, data$region, data$charges, charges, age, sex, dependent)
mhlogit1 <- glm(data = k, formula = factor(charges) ~ age + sex + dependent, family = binomial(link = "logit"))
levels(factor(charges))
## [1] "Thấp" "Cao"
summary(mhlogit1)
## 
## Call:
## glm(formula = factor(charges) ~ age + sex + dependent, family = binomial(link = "logit"), 
##     data = k)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -0.9298  -0.8095  -0.7175   1.4471   1.7663  
## 
## Coefficients:
##                Estimate Std. Error z value Pr(>|z|)    
## (Intercept)    -1.32406    0.12510 -10.584   <2e-16 ***
## agetrungnien    0.09824    0.12634   0.778   0.4368    
## sexM            0.27822    0.12448   2.235   0.0254 *  
## dependentNhieu  0.33287    0.12945   2.571   0.0101 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 1554.3  on 1337  degrees of freedom
## Residual deviance: 1541.7  on 1334  degrees of freedom
## AIC: 1549.7
## 
## Number of Fisher Scoring iterations: 4

Đối với mô hình hồi quy logit của biến phụ thuộc chi phí y tế (charges) với các biến độ tuổi (age), giới tính (sex) và số người phụ thuộc (dependent) ta thấy rằng có 2 yếu tố có ý nghĩa thống kê ở mức ý nghĩa 5% đó là giới tính (sex) và người phụ thuộc (dependent), yếu tố độ tuổi (age) không có ý nghĩa thống kê. Bên cạnh đó chiều hướng tác động của 2 yếu số (sex) và (dependent) tới (charges) là cùng hướng, hệ số hồi quy mang dấu (+).

Mà mô hình hồi quy logistic với link function=“logit” có dạng tổng quát như sau:

logit(π)=log(π/1−π)= β0 + β1X1 + β2X2 +⋯+ βkXk

Vậy nên mô hình 1 được xác định như sau:

MHlogit1: logit(π) = log(π/1−π) = -1,3241 + 0,2782sex + 0,3319dependent

với π = P(charges = “Cao” hoặc “Thấp”)

4.1.2 Mô hình probit

mhprobit1 <- glm(data = k, formula = factor(charges) ~ age + sex + dependent, family = binomial(link = "probit"))
levels(factor(charges))
## [1] "Thấp" "Cao"
summary(mhprobit1)
## 
## Call:
## glm(formula = factor(charges) ~ age + sex + dependent, family = binomial(link = "probit"), 
##     data = k)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -0.9283  -0.8100  -0.7176   1.4490   1.7676  
## 
## Coefficients:
##                Estimate Std. Error z value Pr(>|z|)    
## (Intercept)    -0.80753    0.07319 -11.033   <2e-16 ***
## agetrungnien    0.05881    0.07500   0.784   0.4330    
## sexM            0.16492    0.07391   2.231   0.0256 *  
## dependentNhieu  0.19855    0.07768   2.556   0.0106 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 1554.3  on 1337  degrees of freedom
## Residual deviance: 1541.8  on 1334  degrees of freedom
## AIC: 1549.8
## 
## Number of Fisher Scoring iterations: 4

Đối với mô hình hồi quy probit của biến phụ thuộc chi phí y tế (charges) với các biến độ tuổi (age), giới tính (sex) và số người phụ thuộc (dependent) ta thấy rằng có 2 yếu tố có ý nghĩa thống kê ở mức ý nghĩa 5% đó là giới tính (sex) và người phụ thuộc (dependent), yếu tố độ tuổi (age) không có ý nghĩa thống kê. Bên cạnh đó chiều hướng tác động của 2 yếu số (sex) và (dependent) tới (charges) là cùng hướng, hệ số hồi quy mang dấu (+).

Mà mô hình hồi quy logistic với link function=“probit” có dạng tổng quát như sau:

probit(π) = Φ − 1(π) = β0 + β1X1 + β2X2 +⋯+ βkXk

Vậy nên mô hình probit 1 được xác định như sau:

MHprobit1: probit(π) = Φ − 1(π) = -0,8075 + 0,1649sex + 0,1986dependent

với π = P(charges = “Cao” hoặc “Thấp”)

4.1.3 Mô hình cloglog

mhcloglog1 <- glm(data = k, formula = factor(charges) ~ age + sex + dependent, family = binomial(link = "cloglog"))
summary(mhcloglog1)
## 
## Call:
## glm(formula = factor(charges) ~ age + sex + dependent, family = binomial(link = "cloglog"), 
##     data = k)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -0.9322  -0.8087  -0.7174   1.4442   1.7647  
## 
## Coefficients:
##                Estimate Std. Error z value Pr(>|z|)    
## (Intercept)    -1.44099    0.10914 -13.204   <2e-16 ***
## agetrungnien    0.08352    0.10840   0.770   0.4410    
## sexM            0.23959    0.10685   2.242   0.0249 *  
## dependentNhieu  0.28442    0.10951   2.597   0.0094 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 1554.3  on 1337  degrees of freedom
## Residual deviance: 1541.7  on 1334  degrees of freedom
## AIC: 1549.7
## 
## Number of Fisher Scoring iterations: 5

Đối với mô hình hồi quy cloglog của biến phụ thuộc chi phí y tế (charges) với các biến độ tuổi (age), giới tính (sex) và số người phụ thuộc (dependent) ta thấy rằng có 2 yếu tố có ý nghĩa thống kê ở mức ý nghĩa 5% đó là giới tính (sex) và người phụ thuộc (dependent), yếu tố độ tuổi (age) không có ý nghĩa thống kê. Bên cạnh đó chiều hướng tác động của 2 yếu số (sex) và (dependent) tới (charges) là cùng hướng, hệ số hồi quy mang dấu (+).

Mà mô hình hồi quy logistic với link function=“cloglog” có dạng tổng quát như sau:

cloglog(π) = log(−log(1−π)) = β0 + β1X1 + β2X2 + ⋯ + βkXk

Vậy nên mô hình cloglog 1 được xác định như sau:

MHcloglog1: cloglog(π) = log(−log(1−π)) = -1,4410 + 0,2396sex + 0,2844dependent

với π = P(charges = “Cao” hoặc “Thấp”)

4.2 Lựa chọn mô hình hồi quy phù hợp

4.2.1 AIC - Akaike Information Criterion

AIC được đề xuất bởi Akaike Hirotugu, một nhà thống kê học người Nhật. AIC là một tiêu chí được sử dụng một cách phổ biến để đánh giá một mô hình hồi quy được ước lượng bởi phương pháp Maximum Likekihood (ML). Một cách chung chung giá trị của AIC càng nhỏ thì mô hình càng tốt. AIC được tính bằng công thức sau: \(AIC = −2ln(L) + 2k\)

Với L là giá trị cực đại của hàm hợp lý (likelihood function) và klà số tham số của mô hình.

AIC(mhlogit1)
## [1] 1549.735
AIC(mhprobit1)
## [1] 1549.76
AIC(mhcloglog1)
## [1] 1549.699

Từ chỉ số AIC của 3 mô hình trên có thể thấy AIC ở các mô hình khá xấp xỉ nhau nhưng ở mô hình cloglog lại có AIC thấp nhất (1547,885). Vậy đối với tiêu chí đánh giá AIC thì mô hình cloglog (mhcloglog1) là phù hợp nhất để xem xét tác động của các yếu tố giới tính & số người phụ thuộc tới chi phí y tế.

4.2.2 Deviance

Deviance cũng là một tiêu chí rất phổ biến được sử dụng để đánh giá một mô hình hồi quy được ước lượng bởi phương pháp Hợp lý cực đại (ML). Một cách tổng quá, cũng giống như chỉ tiêu AIC, giá trị của Deviance càng nhỏ thì mô hình càng tốt.

deviance(mhlogit1)
## [1] 1541.735
deviance(mhprobit1)
## [1] 1541.76
deviance(mhcloglog1)
## [1] 1541.699

Từ chỉ số Deviance của 3 mô hình trên có thể thấy Deviance ở các mô hình khá xấp xỉ nhau nhưng ở mô hình cloglog 1 lại có Deviance thấp nhất (1539,885). Vậy đối với tiêu chí đánh giá Deviance thì mô hình cloglog (mhcloglog1) là phù hợp nhất để xem xét tác động của các yếu tố giới tính (sex) & số người phụ thuộc (deviance) tới chi phí y tế (charges).

4.2.3 Brier Score

Là chỉ tiêu dùng để đánh giá mô hình hồi quy logistic, Brier Score được tính như sau: \(B = 1/n * ∑i=1n(pi−oi)\)

Trong đó: pi,oi lần lượt là giá trị xác suất quan sát được, và giá trị xác suất tính ra từ mô hình.

Giá trị của Brier Score càng nhỏ nghĩa là chênh lệch giữa xác suất thực tế và xác suất tính từ mô hình càng nhỏ, nghĩa là mô hình càng tốt.

library(DescTools)
## Warning: package 'DescTools' was built under R version 4.2.3
## 
## Attaching package: 'DescTools'
## The following object is masked from 'package:data.table':
## 
##     %like%
BrierScore(mhlogit1)
## [1] 0.1941048
BrierScore(mhprobit1)
## [1] 0.194109
BrierScore(mhcloglog1)
## [1] 0.1940988

Đối với tiêu chí đánh giá BrierScore thì mô hình hồi quy cloglog 1 là phù hợp nhất vì cho ra kết quả nhỏ nhất (0,19379) tức chênh lệch xác suất thực tế và xác suất tính từ mô hình cloglog là bé hơn so với 2 mô hình hồi quy logit và probit phía trên.

Thông qua các tiêu chí đánh giá mô hình AIC, Deviance, BrierScore thì mô hình phù hợp nhất để xem xét tác động của các yếu tố giới tính (sex) & số người phụ thuộc (deviance) tới chi phí y tế (charges) là mô hình hồi quy cloglog.

LS0tDQp0aXRsZTogIsSQ4buAIFTDgEkgOiBQSMOCTiBUw41DSCBDw4FDIFnhur5VIFThu5Ag4bqiTkggSMav4bueTkcgxJDhur5OIETDkk5HIFRJ4buATiBDSEkgVFLhuqIgQ0hJIFBIw40gWSBU4bq+IEPhu6ZBIEPDlE5HIFRZIELhuqJPIEhJ4buCTSINCmF1dGhvcjogIk5ndXnhu4VuIFBoxrDGoW5nIE5odW5nIg0KZGF0ZTogIjIwMjMtMDgtMDEiDQpvdXRwdXQ6IA0KICBodG1sX2RvY3VtZW50Og0KICAgIHRvYzogdHJ1ZQ0KICAgIG51bWJlcl9zZWN0aW9uczogdHJ1ZQ0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCiAgICB0b2NfZmxvYXQ6DQogICAgICBjb2xsYXBzZWQ6IGZhbHNlDQogICAgZGZfcHJpbnRzOiBwYWdlZA0KDQotLS0NCg0KRmlsZSBjb2RlOiAoaHR0cHM6Ly9kcml2ZS5nb29nbGUuY29tL2RyaXZlL2ZvbGRlcnMvMWJ1NktjNGdwc1VEdzNVLWplVi1oZzZibGdqOHpvcng0P3VzcD1zaGFyaW5nKQ0KDQojICxHaeG7m2kgdGhp4buHdSB24buBIGThu68gbGnhu4d1IG5naGnDqm4gY+G7qXUNCg0KROG7ryBsaeG7h3UgbmdoacOqbiBj4bupdSB24buBIG3hu5l0IGPDtG5nIHR5IGLhuqNvIGhp4buDbSDhu58gTeG7uSBtdeG7kW4gY+G6o2kgdGhp4buHbiBk4buxIGLDoW8gZMOybmcgdGnhu4FuIGLhurFuZyBjw6FjaCDGsOG7m2MgdMOtbmggY2hpIHBow60gYuG6o28gaGnhu4NtIHPhu6ljIGtob+G6uyB0aMO0bmcgcXVhIGPDoWMgYmnhur9uIHPhu5EgxJFvIGzGsOG7nW5nIG3hu6ljIMSR4buZIHLhu6dpIHJvIHbhu4Egc+G7qWMga2hv4bq7IGPhu6dhIGtow6FjaCBow6BuZyB2w6AgY8OhYyB54bq/dSB04buRIG5ow6JuIGto4bqpdSBo4buNYyB04bqhaSB0aOG7nWkgxJFp4buDbSBjw6FjIGtow6FjaCBow6BuZyBuw6B5IHPhu60gZOG7pW5nIGThu4tjaCB24bulIGLhuqNvIGhp4buDbSB5IHThur8gY+G7p2EgY8O0bmcgdHkgdHLDqm4gbmjhuq1wIHZp4buHbi4gQuG7mSBk4buvIGxp4buHdSBuw6B5IMSRxrDhu6NjIHRodSB0aOG6rXAgdHJvbmcga2hv4bqjbmcgdGjhu51pIGdpYW4gNSBuxINtIHThu6sgbsSDbSAyMDE1LTIwMjAgdsOgIGJhbyBn4buTbSBjw7MgMTMzOCBi4buHbmggbmjDom4gbmjhuq1wIHZp4buHbiB24bubaSA3IHRyxrDhu51uZyB0aMO0bmcgdGluLiBC4buZIGThu68gbGnhu4d1IMSRxrDhu6NjIGzhuqV5IHThu6sgd2Vic2l0ZTogaHR0cHM6Ly93d3cua2FnZ2xlLmNvbS9kYXRhc2V0cy9taXJpY2hvaTAyMTgvaW5zdXJhbmNlLg0KDQpE4buvIGxp4buHdSBuZ2hpw6puIGPhu6l1IGJhbyBn4buTbSAxMzM4IHF1YW4gc8OhdCB24bubaSA3IGJp4bq/biBiYW8gZ+G7k20gNCBiaeG6v24gxJHhu4tuaCBsxrDhu6NuZyB2w6AgMyBiaeG6v24gxJHhu4tuaCB0w61uaC4NCg0KVHJvbmcgxJHDszoNCg0KICAgIGFnZTogc+G7kSB0deG7lWkgY+G7p2EgY8OhYyBi4buHbmggbmjDom4NCg0KICAgIHNleDogZ2nhu5tpIHTDrW5oIChGOiBu4buvIDsgTTogbmFtKQ0KDQogICAgYm1pOiBjaOG7iSBz4buRIGto4buRaSBj4bunYSBjxqEgdGjhu4MsIGNobyBiaeG6v3QgdOG7tyBs4buHIGPDom4gbuG6t25nIHbhu5tpIGNoaeG7gXUgY2FvIOG7nyBuZ8aw4budaSDEkeG7gyDEkcOhbmggZ2nDoSDEkcaw4bujYyB0csOsbmggdHLhuqFuZyBjxqEgdGjhu4M6IGfhuqd5LCBjw6JuIMSR4buRaSwgYsOpbyBwaMOsIGPhu6dhIG3hu5l0IG5nxrDhu51pLiBibWkgxJHGsOG7o2MgdMOtbmggYuG6sW5nIGPDom4gbuG6t25nIC8gY2hp4buBdSBjYW9eMiAoa2cvbV4yKSwgdOG7tyBs4buHIGJtaSBsw70gdMaw4bufbmcgbMOgIHThu6sgMTgsNSDEkeG6v24gMjQsOQ0KDQogICAgZGVwZW5kZW50OiBz4buRIG5nxrDhu51pIHBo4bulIHRodeG7mWMuDQoNCiAgICBzbW9rZXI6IHTDrG5oIHRy4bqhbmcgc+G7rSBk4bulbmcgdGh14buRYyBsw6EgY+G7p2EgY8OhYyBi4buHbmggbmjDom4gKFk6IGPDsyA7IE46IGtow7RuZykNCg0KICAgIHJlZ2lvbjoga2h1IHbhu7FjIGPGsCB0csO6IHThuqFpIE3hu7ggY+G7p2EgY8OhYyBi4buHbmggbmjDom4gKE5vcnRoZWFzdDogxJDDtG5nIELhuq9jLCBTb3V0aGVhc3Q6IMSQw7RuZyBOYW0sIFNvdXRod2VzdDogVMOieSBC4bqvYywgTm9ydGh3ZXN0OiBUw6J5IE5hbSkNCg0KICAgIGNoYXJnZXM6IGNoaSBwaMOtIHkgdOG6vyBj4bunYSBjw6FjIGLhu4duaCBuaMOibiBkbyBjw7RuZyB0eSBi4bqjbyBoaeG7g20gdGhhbmggdG/DoW4gKMSRxqFuIHbhu4s6IFVTRCkNCiAgDQogIA0KIyAsTOG7sWEgY2jhu41uIGJp4bq/biBwaOG7pSB0aHXhu5ljIHRyb25nIG3DtCBow6xuaCBuZ2hpw6puIGPhu6l1DQoNCiAgVmnhu4djIHBow6JuIHTDrWNoIGThu68gbGnhu4d1IHbhu4EgY2hpIHBow60geSB04bq/IGPhu6dhIGPDoWMgYuG7h25oIG5ow6JuIG3DoCBjw7RuZyB0eSBi4bqjbyBoaeG7g20gcGjhuqNpIGNoaSB0cuG6oyBjw7MgbGnDqm4gcXVhbiB0xrDGoW5nIMSR4buRaSBuaGnhu4F1IMSR4bq/biBjw6FjIHnhur91IHThu5EgbmjGsCDEkeG7mSB0deG7lWksIGdp4bubaSB0w61uaCwgY2jhu4kgc+G7kSBCTUksIHPhu5EgbmfGsOG7nWkgcGjhu6UgdGh14buZYyB2w6Aga2h1IHbhu7FjIHNpbmggc+G7kW5nIGPhu6dhIGPDoWMgYuG7h25oIG5ow6JuLiBW4bqteSBsaeG7h3UgcuG6sW5nIG7hur91IG3hu5l0IGLhu4duaCBuaMOibiBjw7MgxJHhu5kgdHXhu5VpIGzhu5tuIGhheSBjw7MgY2jhu4kgc+G7kSBjxqEgdGjhu4MgYm1pIGNhbyBraGkgbmjhuq1wIHZp4buHbiB0aMOsIGNoaSBwaMOtIHkgdOG6vyBtw6AgY8O0bmcgdHkgYuG6o28gaGnhu4NtIHPhur0gcGjhuqNpIGNoaSB0cuG6oyBz4bq9IG5oaeG7gXUgaMahbiBjaGkgcGjDrSBtw6AgY8O0bmcgdHkgxJHDsyBz4bq9IGNoaSB0cuG6oyBt4buZdCBi4buHbmggbmjDom4gw610IHR14buVaSB2w6AgY8OzIGNo4buJIHPhu5EgYm1pIGzDvSB0xrDhu59uZyBraGkgbmjhuq1wIHZp4buHbiBoYXkga2jDtG5nID8gaGF5IHBo4bulIHRodeG7mWMgdsOgbyB2aeG7h2MgbmfGsOG7nWkgxJHDsyBjw7MgZ2nhu5tpIHTDrW5oIGfDrCBoYXkgxJHhur9uIHThu6sga2h1IHbhu7FjIG7DoG8gaGF5IGtow7RuZyA/IFbDrCB24bqteSB54bq/dSB04buRIGNoaSBwaMOtIGLhuqNvIGhp4buDbSB5IHThur8gKGNoYXJnZXMpIGPhuqduIMSRxrDhu6NjIHBow6JuIHTDrWNoIGThu7FhIHbDoG8gZOG7ryBsaeG7h3UgY+G7p2EgY8OhYyB54bq/dSB04buRIGtow6FjIOG7nyB0csOqbiDEkcOjIMSR4buBIGPhuq1wLiBU4burIMSRw7MgY8OzIHRo4buDIGNobyB0YSB0aOG6pXkgxJHGsOG7o2MgcGjDom4ga2jDumMgYuG7h25oIG5ow6JuIGPDsyBuaOG7r25nIMSR4bq3YyDEkWnhu4NtIGtow6FjIG5oYXUgdGjDrCBjaGkgcGjDrSB5IHThur8gY+G7p2EgaOG7jSBz4bq9IG5oxrAgdGjhur8gbsOgbyB2w6Agc+G7kSB0aeG7gW4gbcOgIGPDtG5nIHR5IGLhuqNvIGhp4buDbSBjaGkgdHLhuqMgc+G6vSBu4bqxbSB0cm9uZyBwaMOibiBraMO6YyBuw6BvLiBWaeG7h2MgcGjDom4gdMOtY2ggbmjhu69uZyB54bq/dSB04buRIHRyw6puIHTDoWMgxJHhu5luZyDEkeG6v24gY2hpIHBow60geSB04bq/IGPhu6dhIGPDoWMgYuG7h25oIG5ow6JuIHBo4bqnbiBuw6BvIHPhur0gZ2nDunAgaG/huqFjaCDEkeG7i25oIMSRxrDhu6NjIGTDsm5nIHRp4buBbiBtw6AgY8O0bmcgdHkgYuG6o28gaGnhu4NtIHPhur0gcGjhuqNpIGNoaSB0cuG6oyBjaG8gY8OhYyBi4buHbmggbmjDom4uDQoNCkJp4bq/biBwaOG7pSB0aHXhu5ljIDogY2hhcmdlcyAoY2hpIHBow60geSB04bq/IGPDoWMgYuG7h25oIG5ow6JuIG3DoCBjw7RuZyB0eSBi4bqjbyBoaeG7g20gY2hpIHRy4bqjIDpVU0QpDQoNCmBgYHtyfQ0Kc2V0d2QoIkM6L1BURExEVCIpDQpsaWJyYXJ5KHJlYWR4bCkNCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KHhsc3gpDQphZGQgPC0gImR1bGlldW1vaS54bHN4Ig0KZGF0YSA8LSByZWFkX3hsc3goImR1bGlldW1vaS54bHN4IiwgMSkNCnN0cihkYXRhKQ0KYGBgDQoNCmBgYHtyfQ0KbGlicmFyeShkYXRhLnRhYmxlKQ0KZGF0YS50YWJsZShkYXRhKQ0KYGBgDQoNCiMjIFRo4buRbmcga8OqIG3DtCB04bqjIGJp4bq/biBnaeG7m2kgdMOtbmggKHNleCkNCg0KIyMjIELhuqNuZyB04bqnbiBz4buRLWLhuqNuZyB04bqnbiBzdeG6pXQ6DQpgYGB7cn0NCnRhYmxlKGRhdGEkc2V4KQ0KYGBgDQpgYGB7cn0NCnRhYmxlKGRhdGEkc2V4KS9zdW0odGFibGUoZGF0YSRzZXgpKQ0KYGBgDQogIEJp4bq/biBnaeG7m2kgdMOtbmggKHNleCkgbMOgIGJp4bq/biDEkeG7i25oIHTDrW5oLCB0aOG7gyBoaeG7h24gZ2nhu5tpIHTDrW5oIGPhu6dhIGLhu4duaCBuaMOibiAoRjogbuG7rzsgTTogbmFtKS4gROG7sWEgdsOgbyBr4bq/dCBxdeG6oyB0aOG7kW5nIGvDqiB0csOqbiB0YSB0aOG6pXkgdHJvbmcgdOG7lW5nIHPhu5EgMTMzOCBi4buHbmggbmjDom4gbmjhuq1wIHZp4buHbiBjw7Mgc+G7rSBk4bulbmcgYuG6o28gaGnhu4NtIHRow6wgY8OzIDY2MiBi4buHbmggbmjDom4gZ2nhu5tpIHTDrW5oIGzDoCBu4buvIHbDoCBjaGnhur9tIDQ5LDQ4JSB04buVbmcgc+G7kSBuZ8aw4budaSBuaOG6rXAgdmnhu4duLiBT4buRIGLhu4duaCBuaMOibiBuYW0gbMOgIDY3NiBuZ8aw4budaSB2w6Agc28gduG7m2kgdOG7lW5nIHPhu5EgYuG7h25obiBuaMOibiB0aMOsIGNoaeG6v20gdOG7iSBs4buHIDUwLDUyJS4NCg0KIyMjIMSQ4buTIHRo4buLIGPhu5l0IGJp4bq/biBzZXg6DQoNCmBgYHtyfQ0KbGlicmFyeShnZ3Bsb3QyKQ0KZ2dwbG90KGRhdGEsYWVzKHNleCkpICsgZ2VvbV9iYXIoY29sb3IgPSJyZWQiLCBmaWxsID0gImJsdWUiKSArIHlsYWIoIlPhu5EgYuG7h25oIG5ow6JuIikgKyB4bGFiKCJHaeG7m2kgdMOtbmggKHNleCkiKQ0KDQpgYGANCiAgDQogIMSQ4buTIHRo4buLIGPhu5l0IHRo4buDIGhp4buHbiBz4buRIGLhu4duaCBuaMOibiBuaOG6rXAgdmnhu4duIMSRxrDhu6NjIGNoaWEgdGhlbyBnaeG7m2kgdMOtbmggbmFtIGhv4bq3YyBu4buvLCBjw7MgdGjhu4MgdGjhuqV5IGtow7RuZyBjw7MgcXXDoSBuaGnhu4F1IHPhu7EgY2jDqm5oIGzhu4djaCBnaeG7r2EgZ2nhu5tpIHTDrW5oIGPhu6dhIGPDoWMgYuG7h25oIG5ow6JuIGtoaSB04bu3IGzhu4cgYuG7h25oIG5ow6JuIG5hbSB2w6AgbuG7ryB44bqlcCB44buJIG5oYXUuDQoNCiMjIFRo4buRbmcga8OqIG3DtCB04bqjIGJp4bq/biDEkeG7mSB0deG7lWkgKGFnZSk6DQojIyMgQ8OhYyDEkeG6oWkgbMaw4bujbmcgxJHhurdjIHRyxrBuZzoNCg0KYGBge3J9DQpzdW1tYXJ5KGRhdGEkYWdlKQ0KYGBgDQogIEJp4bq/biDEkeG7mSB0deG7lWkgKGFnZSkgbMOgIGJp4bq/biDEkeG7i25oIGzGsOG7o25nIGNobyBiaeG6v3QgxJHhu5kgdHXhu5VpIGPhu6dhIGPDoWMgYuG7h25oIG5ow6JuLiBUaMO0bmcgcXVhIGvhur90IHF14bqjIHRyw6puIHRhIHRo4bqleSBjw6FjIGLhu4duaCBuaMOibiBuaOG6rXAgdmnhu4duIGPDsyDEkeG7mSB0deG7lWkgbmjhu48gbmjhuqV0IGzDoCAxOCB0deG7lWksIGzhu5tuIG5o4bqldCBsw6AgNjQgdHXhu5VpIHbDoCDEkeG7mSB0deG7lWkgdHJ1bmcgYsOsbmggY+G7p2EgY8OhYyBi4buHbmggbmjDom4ga2hv4bqjbmcgMzkgdHXhu5VpLg0KICBU4bupIHBow6JuIHbhu4s6IGzDoCBiYSDEkWnhu4NtIGPhuq90IHPhur0gY2hpYSB04bqtcCBk4buvIGxp4buHdSB0aMOgbmggNCBuaMOzbSBjw7Mga8OtY2ggdGjGsOG7m2MgYuG6sW5nIG5oYXUsIGPhu6UgdGjhu4M6DQogIA0KICAqVOG7qSBwaMOibiB24buLIHRo4bupIG5o4bqldCAoMXN0IFF1LikgPSAyNyBOZ2jEqWEgbMOgIGTGsOG7m2kgMjUlIHPhu5EgbmfGsOG7nWkgbmjhuq1wIHZp4buHbiBjw7MgxJHhu5kgdHXhu5VpIG5o4buPIGjGoW4gMjcgdHXhu5VpIGhheSB0csOqbiA3NSUgc+G7kSBuZ8aw4budaSBuaOG6rXAgdmnhu4duIGPDsyDEkeG7mSB0deG7lWkgbOG7m24gaMahbiAyNyB0deG7lWkuKg0KICAgIA0KICAqVOG7qSBwaMOibiB24buLIHRo4bupIGhhaSAodHJ1bmcgduG7izogTWVkaWFuKSA9IDM5IE5naMSpYSBsw6AgZMaw4bubaSA1MCUgc+G7kSBi4buHbiBuaMOibiBjw7Mgc+G7kSB0deG7lWkgbmjhu48gaMahbiAzOSBoYXkgdHLDqm4gNTAlIHPhu5EgYuG7h25oIG5ow6JuIGPDsyDEkeG7mSB0deG7lWkgbOG7m24gaMahbiAzOSB0deG7lWkuKg0KICAgIA0KICAqVOG7qSBwaMOibiB24buLIHRo4bupIGJhICgzcmQgUXUuKSA9IDUxIE5naMSpYSBsw6AgZMaw4bubaSA3NSUgdOG7lW5nIHPhu5EgbmfGsOG7nWkgbmjhuq1wIHZp4buHbiBjw7MgxJHhu5kgdHXhu5VpIG5o4buPIGjGoW4gNTEgaGF5IHRyw6puIDI1JSBz4buRIG5nxrDhu51pIG5o4bqtcCB2aeG7h24gbOG7m24gaMahbiA1MSB0deG7lWkuKg0KICANCiMjIyBC4bqjbmcgdOG6pW4gc+G7kSBiaeG6v24gYWdlOg0KDQpgYGB7cn0NCmFnZSA8LSBkYXRhJGFnZQ0KdGFibGUoY3V0KGFnZSwzKSkNCmBgYA0KICBC4bqjbmcgdOG6p24gc+G7kSB0csOqbiBjaG8gdGjhuqV5IGPDsyA1MjMgbmfGsOG7nWkgbmjhuq1wIHZp4buHbiBjw7MgxJHhu5kgdHXhu5VpIHRyb25nIGtob+G6o25nIHThu6sgMTggxJHhur9uIDMzIHR14buVaTsgY8OzIDQwMiBuZ8aw4budaSBuaOG6rXAgdmnhu4duIGPDsyB0deG7lWkgdHJvbmcga2hv4bqjbmcgdOG7qyAzMyDEkeG6v24gNDggdHXhu5VpIHbDoCBjw7MgNDEzIG5nxrDhu51pIG5o4bqtcCB2aeG7h24gY8OzIHPhu5EgdHXhu5VpIG7hurFtIHRyb25nIGtob+G6o25nIHThu6sgNDggxJHhur9uIDY0IHR14buVaS4NCg0KIyMjIEJp4buDdSDEkeG7kyB04bqnbiBz4buRIGPhu6dhIGJp4bq/biBhZ2U6DQoNCmBgYHtyfQ0KbGlicmFyeShnZ3Bsb3QyKQ0KaGlzdChkYXRhJGFnZSwgbWFpbiA9ICJCaeG7g3UgxJHhu5MgdOG6p24gc+G7kSBj4bunYSDEkeG7mSB0deG7lWkgKGFnZSkiLHhsYWIgPSAixJDhu5kgdHXhu5VpIiwgeWxhYiA9ICJT4buRIG5nxrDhu51pIiwgY29sID0gImxpZ2h0Ymx1ZSIpDQoNCmBgYA0KICBE4buxYSB2w6BvIGJp4buDdSDEkeG7kyB04bqnbiBz4buRIGPhu6dhIGJp4bq/biDEkeG7mSB0deG7lWkgKGFnZSkgY2hvIHRo4bqleSBraMO0bmcgY8OzIHF1w6Egbmhp4buBdSBz4buxIGNow6puaCBs4buHY2ggduG7gSBz4buRIGzGsOG7o25nIG5nxrDhu51pIG5o4bqtcCB2aeG7h24g4bupbmcgduG7m2kgbmjhu69uZyDEkeG7mSB0deG7lWkga2jDoWMgbmhhdS4gVHJvbmcgxJHDsyBz4buRIGzGsOG7o25nIG5nxrDhu51pIG5o4bqtcCB2aeG7h24gZMaw4bubaSAyMCB0deG7lWkgbMOgIG5oaeG7gXUgbmjhuqV0IHbDoCBz4buRIG5nxrDhu51pIG5o4bqtcCB2aeG7h24gdHLDqm4gNjAgdHXhu5VpIGzDoCDDrXQgbmjhuqV0Lg0KICANCiMjIFRo4buRbmcga8OqIG3DtCB04bqjIGJp4bq/biBjaOG7iSBz4buRIGto4buRaSAoYm1pKToNCg0KIyMjIEPDoWMgxJHhuqFpIGzGsOG7o25nIMSR4bq3YyB0csawbmc6DQoNCmBgYHtyfQ0Kc3VtbWFyeShkYXRhJGJtaSkNCmBgYA0KICBCaeG6v24gKGJtaSkgbMOgIGJp4bq/biDEkeG7i25oIGzGsOG7o25nIHbhu4EgY2jhu4kgc+G7kSBraOG7kWkgY+G7p2EgY8ahIHRo4buDLCBjaG8gYmnhur90IHThu7cgbOG7hyBjw6JuIG7hurduZyB24bubaSBjaGnhu4F1IGNhbyDhu58gbmfGsOG7nWkgbmjhuq1wIHZp4buHbiDEkeG7gyDEkcOhbmggZ2nDoSDEkcaw4bujYyB0csOsbmggdHLhuqFuZyBjxqEgdGjhu4MuIFRow7RuZyBxdWEga+G6v3QgcXXhuqMgdHLDqm4gY2hvIHRhIHRo4bqleSBjaOG7iSBz4buRIGto4buRaSAoYm1pKSB0aOG6pXAgbmjhuqV0IGzDoCAxNSw5NiAoa2cvbV4yKSB2w6AgY2FvIG5oaOG6pXQgbMOgIDUzLDEzIChrZy9tXjIpLiBHacOhIHRy4buLIHRydW5nIGLDrG5oIGPhu6dhIGNo4buJIHPhu5Ega2jhu5FpIGPGoSB0aOG7gyAoYm1pKSBsw6AgMzAsNjYgKGtnL21eMikuDQogIA0KICBU4bupIHBow6JuIHbhu4s6IGzDoCBiYSDEkWnhu4NtIGPhuq90IHPhur0gY2hpYSB04bqtcCBk4buvIGxp4buHdSB0aMOgbmggNCBuaMOzbSBjw7Mga8OtY2ggdGjGsOG7m2MgYuG6sW5nIG5oYXUsIGPhu6UgdGjhu4M6DQogIA0KICAqVOG7qSBwaMOibiB24buLIHRo4bupIG5o4bqldCAoMXN0IFF1LikgPSAyNiwzIE5naMSpYSBsw6AgZMaw4bubaSAyNSUgc+G7kSBuZ8aw4budaSBuaOG6rXAgdmnhu4duIGPDsyBjaOG7iSBz4buRIGto4buRaSAoYm1pKSBuaOG7jyBoxqFuIDI2LDMga2cvbV4yIHR14buVaSBoYXkgdHLDqm4gNzUlIHPhu5EgbmfGsOG7nWkgbmjhuq1wIHZp4buHbiBjw7MgY2jhu4kgc+G7kSBraOG7kWkgKGJtaSkgbOG7m24gaMahbiAyNiwzIGtnL21eMioNCiAgICANCiAgKlThu6kgcGjDom4gduG7iyB0aOG7qSBoYWkgKHRydW5nIHbhu4s6IE1lZGlhbikgPSAzMCw0IE5naMSpYSBsw6AgZMaw4bubaSA1MCUgc+G7kSBi4buHbiBuaMOibiBjw7MgY2jhu4kgc+G7kSBraOG7kWkgKGJtaSkgbmjhu48gaMahbiAzMCw0IGtnL21eMiBoYXkgdHLDqm4gNTAlIHPhu5EgYuG7h25oIG5ow6JuIGPDsyBjaOG7iSBz4buRIGto4buRaSBs4bubbiBoxqFuIDMwLDQga2cvbV4yKg0KICAgIA0KICAqVOG7qSBwaMOibiB24buLIHRo4bupIGJhICgzcmQgUXUuKSA9IDM0LDY5IE5naMSpYSBsw6AgZMaw4bubaSA3NSUgdOG7lW5nIHPhu5EgbmfGsOG7nWkgbmjhuq1wIHZp4buHbiBjw7MgY2jhu4kgc+G7kSBraOG7kWkgKGJtaSkgbmjhu48gaMahbiAzNCw2OSBrZy9tXjIgaGF5IHRyw6puIDI1JSBz4buRIG5nxrDhu51pIG5o4bqtcCB2aeG7h24gY8OzIGNo4buJIHPhu5Ega2jhu5FpIChibWkpIGzhu5tuIGjGoW4gMzQsNjkga2cvbV4yKg0KICANCiMjIyBC4bqjbmcgdOG6p24gc+G7kSBiaeG6v24gYm1pDQoNCmBgYHtyfQ0KYm1pIDwtIGRhdGEkYm1pDQp0YWJsZShjdXQoYm1pLDMpKQ0KYGBgDQogIFRhIHRo4bqleSBy4bqxbmcgcGjhuqduIGzhu5tuIHPhu5EgbmfGsOG7nWkgbmjhuq1wIHZp4buHbiBjw7MgY2jhu4kgc+G7kSBraOG7kWkgKGJtaSkgbuG6sW0gdHJvbmcga2hv4bqjbmcgdOG7qyAyOCw0IMSR4bq/biA0MCw3IGtnL21eMiBjaGnhur9tIDc2NSBuZ8aw4budaS4gQ8OzIDUwMiBuZ8aw4budaSBuaOG6rXAgdmnhu4duIGPDsyBjaOG7iSBz4buRIGto4buRaSB0cm9uZyBraG/huqNuZyAxNSw5IMSR4bq/biAyOCw0IGtnL21eMiB2w6AgY2jhu4kgY8OzIDcxIG5nxrDhu51pIGPDsyBjaOG7iSBz4buRIGto4buRaSAoYm1pKSBjYW8gdHJvbmcga2hv4bqjbmcgdOG7qyA0MCw3IMSR4bq/biA1MywyIGtnL21eMi4NCiAgDQojIyMgQmnhu4N1IMSR4buTIGhpc3RvZ3JhbSBiaeG6v24gYm1pDQogIA0KYGBge3J9DQpoaXN0KGRhdGEkYm1pLCBtYWluID0gIkJp4buDdSDEkeG7kyB04bqnbiBz4buRIGPhu6dhIGNo4buJIHPhu5Ega2jhu5FpIGPGoSB0aOG7gyAoYm1pKSIseGxhYiA9ICJDaOG7iSBz4buRIGto4buRaSAoYm1pKSIsIHlsYWIgPSAiU+G7kSBuZ8aw4budaSIsIGNvbCA9ICJwaW5rIikNCmBgYA0KICANCiAgVGjDtG5nIHF1YSBiaeG7g3UgxJHhu5MgdOG6p24gc+G7kSB0csOqbiBjw7MgdGjhu4MgdGjhuqV5IHLhurFuZyBwaOG6p24gbOG7m24gbmjhu69uZyBuZ8aw4budaSBuaOG6rXAgdmnhu4duIGPDsyBjaOG7iSBz4buRIGto4buRaSBjxqEgdGjhu4MgKGJtaSkgbuG6sW0gdHJvbmcga2hv4bqjbmcgdOG7qyAyMCDEkeG6v24gNDAga2cvbV4yLCB04bupYyBjYW8gaMahbiBzbyB24bubaSBjaOG7iSBz4buRIGJtaSBsw70gdMaw4bufbmcgY+G7p2EgbeG7mXQgY8ahIHRo4buDIGzDoCB04burIDE4LDUgxJHhur9uIDI0LDkga2cvbV4yLiBDw7JuIGzhuqFpIG5o4buvbmcgbmfGsOG7nWkgbmjhuq1wIHZp4buHbiBjw7MgY2jhu4kgc+G7kSBibWkgcXXDoSB0aOG6pXAgbMOgIGTGsOG7m2kgMjAga2cvbV4yIHbDoCBxdcOhIGNhbyBsw6AgdHLDqm4gNDAga2cvbV4yIGNoaeG6v20gc+G7kSDDrXQgdHJvbmcgdOG7lW5nIHPhu5EgbmfGsOG7nWkgbmjhuq1wIHZp4buHbi4NCiAgDQojIyBUaOG7kW5nIGvDqiBtw7QgdOG6oyBiaeG6v24gdMOsbmggdHLhuqFuZyBz4butIGThu6VuZyB0aHXhu5FjIGzDoSAoc21va2VyKToNCg0KIyMjIELhuqNuZyB04bqnbiBz4buRIC0gYuG6o25nIHThuqduIHN14bqldA0KDQpgYGB7cn0NCg0KdGFibGUoZGF0YSRzbW9rZXIpDQpgYGANCmBgYHtyfQ0KdGFibGUoZGF0YSRzbW9rZXIpL3N1bSh0YWJsZShkYXRhJHNtb2tlcikpDQpgYGANCiAgQmnhur9uIHTDrG5oIHRy4bqhbmcgc+G7rSBk4bulbmcgdGh14buRYyBsw6EgKHNtb2tlcikgbMOgIGJp4bq/biDEkeG7i25oIHTDrW5oLCB0aOG7gyBoaeG7h24gbmjhu69uZyBuZ8aw4budaSBuaOG6rXAgdmnhu4duIGPDsyBz4butIGThu6VuZyB0aHXhu5FjIGzDoSBoYXkga2jDtG5nIChOOiBraMO0bmc7IFk6IG7hu68pLiBE4buxYSB2w6BvIGvhur90IHF14bqjIHRo4buRbmcga8OqIHRyw6puIHRhIHRo4bqleSB0cm9uZyB04buVbmcgc+G7kSAxMzM4IGLhu4duaCBuaMOibiBuaOG6rXAgdmnhu4duIHRow6wgY8OzIHThu5tpIDEwNjQgbmfGsOG7nWkgc+G7rSBk4bulbmcgdGh14buRYyBsw6EgdsOgIGNoaeG6v20gNzksNTIlIHThu5VuZyBz4buRIG5nxrDhu51pIG5o4bqtcCB2aeG7h24uIFPhu5EgYuG7h25oIG5ow6JuIGtow7RuZyBz4butIGThu6VuZyB0aHXhu5FjIGzDoSBsw6AgMjc0IG5nxrDhu51pIHbDoCBzbyB24bubaSB04buVbmcgc+G7kSBi4buHbmggbmjDom4gdGjDrCBjaGnhur9tIHThu4kgbOG7hyAyMCw0NyUuDQoNCiMjIyDEkOG7kyB0aOG7iyBj4buZdA0KDQpgYGB7cn0NCmdncGxvdChkYXRhLGFlcyhzbW9rZXIpKSArIGdlb21fYmFyKGNvbG9yID0iYmx1ZSIsIGZpbGwgPSAieWVsbG93IikgKyB5bGFiKCJT4buRIGLhu4duaCBuaMOibiIpICsgeGxhYigidMOsbmggdHLhuqFuZyBz4butIGThu6VuZyB0aHXhu5FjIGzDoSAoc21va2VyKSIpDQpgYGANCg0KICBE4buxYSB2w6BvIGJp4buDdSDEkeG7kyBj4buZdCB0YSB0aOG6pXkgY8OzIHPhu7EgY2jDqm5oIGzhu4djaCBraMOhIGzhu5tuIGdp4buvYSBz4buRIG5nxrDhu51pIG5o4bqtcCB2aeG7h24gY8OzIHPhu60gZOG7pW5nIHRodeG7kWMgbMOhIHbDoCBraMO0bmcgc+G7rSBk4bulbmcgdGh14buRYyBsw6EuIFPhu5EgbmfGsOG7nWkga2jDtG5nIHPhu60gZOG7pW5nIHRodeG7kWMgbMOhIGNoaeG6v20gcGjhuqduIGzhu5tuIHRyb25nIHThu5NuZyBz4buRIDEzMzggbmfGsOG7nWkgbmjhuq1wIHZp4buHbiwgZ+G6p24gZ+G6pXAgNCBs4bqnbiBuaOG7r25nIG5nxrDhu51pIGPDsyBz4butIGThu6VuZyB0aHXhu5FjIGzDoS4NCiAgDQojIyBUaOG7kW5nIGvDqiBtw7QgdOG6oyBiaeG6v24gc+G7kSBuZ8aw4budaSBwaOG7pSB0aHXhu5ljIChkZXBlbmRlbnQpOg0KDQojIyMgQuG6o25nIHThuqduIHPhu5EsIGLhuqNuZyB04bqnbiBzdeG6pXQNCmBgYHtyfQ0KdGFibGUoZGF0YSRkZXBlbmRlbnQpDQpgYGANCmBgYHtyfQ0KdGFibGUoZGF0YSRkZXBlbmRlbnQpL3N1bSh0YWJsZShkYXRhJGRlcGVuZGVudCkpDQpgYGANCiAgQmnhur9uIHPhu5EgbmfGsOG7nWkgcGjhu6UgdGh14buZYyAoZGVwZW5kZW50KTogbMOgIGJp4bq/biDEkeG7i25oIHTDrW5oLCB0aOG7gyBoaeG7h24gc+G7kSBuZ8aw4budaSBwaOG7pSB0aHXhu5ljIGPhu6dhIG5o4buvbmcgbmfGsOG7nWkgbmjhuq1wIHZp4buHbiwgdGhlbyBuaMawIHPhu5EgbGnhu4d1IGfhu5FjIHRow6wgYmnhur9uIHPhu5EgbmfGsOG7nWkgcGjhu6UgdGh14buZYyBuaOG6rW4gY8OhYyBnacOhIHRy4buLIGzDoCAwLDEsMiwzLDQsNS4gQ8OzIHRo4buDIHRo4bqleSBwaOG6p24gbOG7m24gc+G7kSBuZ8aw4budaSBuaOG6rXAgdmnhu4duIGtow7RuZyBjw7MgbmfGsOG7nWkgcGjhu6UgdGh14buZYyBob+G6t2MgY8OzIHThu6sgMSwyIG5nxrDhu51pIHBo4bulIHRodeG7mWMgY+G7pSB0aOG7gyBsw6AgY8OzIDU3NCBuZ8aw4budaSBuaOG6rXAgdmnhu4duIGtow7RuZyBjw7MgbmfGsOG7nWkgcGjhu6UgdGh14buZYywgY2hp4bq/bSDEkeG6v24gNDIsODklIHThu5VuZyBz4buRIG5nxrDhu51pIG5o4bqtcCB2aeG7h24sIGLDqm4gY+G6oW5oIMSRw7MgdOG7tyBs4buHIG5nxrDhu51pIG5o4bqtcCB2aeG7h24gY8OzIDEgbmfGsOG7nWkgcGjhu6UgdGh14buZYyBsw6AgMjQsMjElIHbDoCB04bu3IGzhu4cgbmfGsOG7nWkgbmjhuq1wIHZp4buHbiBjw7MgMiBuZ8aw4budaSBwaOG7pSB0aHXhu5ljIGzDoCAxNyw5MyUuIENvbiBz4buRIG7DoHkgY+G7p2Egbmjhu69uZyBuZ8aw4budaSBuaOG6rXAgdmnhu4duIGPDsyAzIGhv4bq3YyA0IGhv4bq3YyA1IG5nxrDhu51pIHBo4bulIHRodeG7mWMgY2jhu4kgbOG6p24gbMaw4bujdCBsw6AgMTEsNzMlOyAxLDg3JSB2w6AgMSwzNCUgLg0KICANCiMjIyBCaeG7g3UgxJHhu5MgdHLDsm4gDQpgYGB7cn0NCnBpZSh0YWJsZShkYXRhJGRlcGVuZGVudCksIGNvbCA9IHJhaW5ib3coNiksIG1haW4gPSAiQmnhu4N1IMSR4buTIHPhu5EgbmfGsOG7nWkgcGjhu6UgdGh14buZYyBj4bunYSBuaOG7r25nIG5nxrDhu51pIG5o4bqtcCB2aeG7h24iKQ0KYGBgDQogDQogIFRoZW8gbmjGsCBiaeG7g3UgxJHhu5MgdHLDsm4gcGjDrWEgdHLDqm4gY8OzIHRo4buDIHRo4bqleSB04bu3IGzhu4cgbmjhu69uZyBuZ8aw4budaSBuaOG6rXAgdmnhu4duIGtow7RuZyBjw7MgbmfGsOG7nWkgcGjhu6UgdGh14buZYyBjaGnhur9tIGfhuqduIG3hu5l0IG7hu61hIHThu5VuZyBz4buRIG5nxrDhu51pIG5o4bqtcCB2aeG7h24sIG5o4buvbmcgbmfGsOG7nWkgbmjhuq1wIHZp4buHbiBjw7MgMSBob+G6t2MgMiBob+G6t2MgMyBuZ8aw4budaSBwaOG7pSB0aHXhu5ljIGNoaeG6v20gaMahbiBt4buZdCBu4butYSB04buVbmcgc+G7kSB2w6Agbmjhu69uZyBuZ8aw4budaSBuaOG6rXAgdmnhu4duIGPDsyA0IGhv4bq3YyA1IG5nxrDhu51pIHBo4bulIHRodeG7mWMgY2jhu4kgY2hp4bq/bSBwaOG6p24gbmjhu48gdHJvbmcgdOG7lW5nIHPhu5Egbmjhu69uZyBuZ8aw4budaSBuaOG6rXAgdmnhu4duLiBDw7MgdGjhu4MgbsOzaSBy4bqxbmcgbmjhu69uZyBuZ8aw4budaSBjw7Mgw610IG5nxrDhu51pIHBo4bulIHRodeG7mWMgY8OzIHThu7cgbOG7hyBuaOG6rXAgdmnhu4duIGNhbyBoxqFuIHNvIHbhu5tpIG5o4buvbmcgbmfGsOG7nWkgY8OzIG5oaeG7gXUgbmfGsOG7nWkgcGjhu6UgdGh14buZYy4NCiAgDQojIyBUaOG7kW5nIGvDqiBtw7QgdOG6oyBiaeG6v24ga2h1IHbhu7FjIGPGsCB0csO6IChyZWdpb24pOg0KDQojIyMgQuG6o25nIHThuqduIHPhu5EgLSB04bqnbiBzdeG6pXQgDQpgYGB7cn0NCnRhYmxlKGRhdGEkcmVnaW9uKQ0KYGBgDQpgYGB7cn0NCnRhYmxlKGRhdGEkcmVnaW9uKS9zdW0odGFibGUoZGF0YSRyZWdpb24pKQ0KDQpgYGANCiAgQmnhur9uIGtodSB24buxYyBjxrAgdHLDuiAocmVnaW9uKSBsw6AgYmnhur9uIMSR4buLbmggdMOtbmggYmFvIGfhu5NtIDQgdGjDtG5nIHRpbiB24buBIHbDuW5nIGPGsCB0csO6IHThuqFpIE3hu7kgY+G7p2EgY8OhYyBi4buHbmggbmjDom4gbmjhuq1wIHZp4buHbiBsw6AgKE5vcnRoZWFzdDogxJDDtG5nIELhuq9jLCBTb3V0aGVhc3Q6IMSQw7RuZyBOYW0sIFNvdXRod2VzdDogVMOieSBC4bqvYywgTm9ydGh3ZXN0OiBUw6J5IE5hbSkuIFThu6sga+G6v3QgcXXhuqMgdHLDqm4gIHRhIHRo4bqleSB0cm9uZyB04buVbmcgc+G7kSAxMzM4IG5nxrDhu51pIG5o4bqtcCB2aeG7h24gdGjDrCB0cm9uZyDEkcOzIGPDsyAzMjQgbmfGsOG7nWkgxJHhur9uIHThu6sgdsO5bmcgxJDDtG5nIELhuq9jOyAzMjUgbmfGsOG7nWkgxJHhur9uIHThu6sgVMOieSBOYW07IDM2NCBuZ8aw4budaSDEkeG6v24gdOG7qyDEkMO0bmcgTmFtIHbDoCAzMjUgbmfGsOG7nWkgxJHhur9uIHThu6sgdsO5bmcgVMOieSBC4bqvYywgY8OhYyB04bu3IGzhu4cgbsOgeSB0xrDGoW5nIOG7qW5nIGzhuqduIGzGsOG7o3QgbMOgIDI0LDIxJTsgMjQsMjklOyAyNywyJSB2w6AgMjQsMjklIHRyb25nIHThu5VuZyBz4buRIG5nxrDhu51pIG5o4bqtcCB2aeG7h24uIA0KICANCiMjIyBCaeG7g3UgxJHhu5MgY+G7mXQgDQpgYGB7cn0NCmxpYnJhcnkoZ2dwbG90MikNCmdncGxvdChkYXRhLGFlcyhyZWdpb24pKSsgZ2VvbV9iYXIoY29sb3IgPSAiYmx1ZSIsZmlsbD0ib3JhbmdlIikgKyB5bGFiKCJT4buRIG5nxrDhu51pIikgKyB4bGFiKCJLaHUgduG7sWMgY8awIHRyw7ogKHJlZ2lvbikiKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KYGBgDQoNCiAgVGhlbyBuaMawIGJp4buDdSDEkeG7kyBj4buZdCB0csOqbiB0aMOsIGPDsyB0aOG7gyB0aOG6pXkga2jDtG5nIGPDsyBxdcOhIG5oaeG7gXUgc+G7sSBraMOhYyBiaeG7h3QgduG7gSBz4buRIGzGsOG7o25nIG5nxrDhu51pIG5o4bqtcCB2aeG7h24gxJHhur9uIHThu6sgbmjhu69uZyB2w7luZyBraMOhYyBuaGF1LiBUcm9uZyDEkcOzIG5o4buvbmcgbmfGsOG7nWkgxJHhur9uIHThu6sgdsO5bmcgxJDDtG5nIE5hbSBsw6Agbmhp4buBdSBuaOG6pXQgY8OybiBs4bqhaSBz4buRIGzGsOG7o25nIG5o4buvbmcgbmfGsOG7nWkgxJHhur9uIHThu6sgdsO5bmcgxJDDtG5nIELhuq9jLCBUw6J5IELhuq9jIHbDoCBUw6J5IE5hbSBsw6Aga2jDoSB0xrDGoW5nIMSR4buTbmcgbmhhdS4NCiAgDQojIyBUaOG7kW5nIGvDqiBtw7QgdOG6oyBiaeG6v24gY2hpIHBow60gYuG6o28gaGnhu4NtIHkgdOG6vyAoY2hhcmdlcyk6DQoNCiMjIyBDw6FjIMSR4bqhaSBsxrDhu6NuZyDEkeG6t2MgdHLGsG5nDQoNCmBgYHtyfQ0Kc3VtbWFyeShkYXRhJGNoYXJnZXMpDQpgYGANCiAgQmnhur9uIGNoaSBwaMOtIHkgdOG6vyAoY2hhcmdlcykgbMOgIGJp4bq/biDEkeG7i25oIGzGsOG7o25nIGNobyBiaeG6v3Qgc+G7kSB0aeG7gW4gYuG6o28gaGnhu4NtIG3DoCBjw7RuZyB0eSBi4bqjbyBoaeG7g20gcGjhuqNpIGNoaSB0cuG6oyBjaG8gY8OhYyBi4buHbmggbmjDom4uIFRow7RuZyBxdWEga+G6v3QgcXXhuqMgdHLDqm4gdGEgdGjhuqV5IHPhu5EgdGnhu4FuIGLhuqNvIGhp4buDbSDDrXQgbmjhuqV0IGzDoCAxMTIyIFVTRCwgc+G7kSB0aeG7gW4gYuG6o28gaGnhu4NtIGNoaSB0cuG6oyBuaGnhu4F1IG5o4bqldCBsw6AgNjM3NzAgVVNEIHbDoCB0cnVuZyBiw6xuaCBjw7RuZyB0eSBi4bqjbyBoaeG7g20gY2hpIHRy4bqjIDEzMjcwIFVTRCBjaG8gbeG7mXQgbmfGsOG7nWkgbmjhuq1wIHZp4buHbi4NCiAgDQogIFThu6kgcGjDom4gduG7izogbMOgIGJhIMSRaeG7g20gY+G6r3Qgc+G6vSBjaGlhIHThuq1wIGThu68gbGnhu4d1IHRow6BuaCA0IG5ow7NtIGPDsyBrw61jaCB0aMaw4bubYyBi4bqxbmcgbmhhdSwgY+G7pSB0aOG7gzoNCiAgDQogICpU4bupIHBow6JuIHbhu4sgdGjhu6kgbmjhuqV0ICgxc3QgUXUuKSA9IDQ3NDAgTmdoxKlhIGzDoCBkxrDhu5tpIDI1JSBz4buRIG5nxrDhu51pIG5o4bqtcCB2aeG7h24gY8OzIGNoaSBwaMOtIHkgdOG6vyBkxrDhu5tpIDQ3NDAgVVNEIGhheSB0csOqbiA3NSUgc+G7kSBuZ8aw4budaSBuaOG6rXAgdmnhu4duIGPDsyBjaGkgcGjDrSBs4bubbiBoxqFuIDQ3NDAgVVNELioNCiAgICANCiAgKlThu6kgcGjDom4gduG7iyB0aOG7qSBoYWkgKHRydW5nIHbhu4s6IE1lZGlhbikgPSA5MzgyIE5naMSpYSBsw6AgZMaw4bubaSA1MCUgc+G7kSBi4buHbiBuaMOibiBjw7MgY2hpIHBow60geSB04bq/IG5o4buPIGjGoW4gOTM4MiBVU0QgaGF5IHRyw6puIDUwJSBz4buRIGLhu4duaCBuaMOibiBjw7MgY2hpIHBow60gbOG7m24gaMahbiA5MzgyIFVTRC4qDQogICAgDQogICpU4bupIHBow6JuIHbhu4sgdGjhu6kgYmEgKDNyZCBRdS4pID0gMTY2NDAgTmdoxKlhIGzDoCBkxrDhu5tpIDc1JSB04buVbmcgc+G7kSBuZ8aw4budaSBuaOG6rXAgdmnhu4duIGPDsyBjaGkgcGjDrSB5IHThur8gbmjhu48gaMahbiAxNjY2NDAgVVNEIGhheSB0csOqbiAyNSUgY2hpIHBow60geSB04bq/IGPhu6dhIG5o4buvbmcgbmfGsOG7nWkgbmjhuq1wIHZp4buHbiBs4bubbiBoxqFuIDE2NjQwIFVTRC4qDQogIA0KIyMjIEJp4buDdSDEkeG7kyBoaXN0b2dyYW0NCmBgYHtyfQ0KaGlzdChkYXRhJGNoYXJnZXMsIG1haW4gPSAiQmnhu4N1IMSR4buTIHThuqduIHPhu5EgY+G7p2EgY2hpIHBow60geSB04bq/IChjaGFyZ2VzKSIseGxhYiA9ICJDaGkgcGjDrSB5IHThur8iLCB5bGFiID0gIkNvdW50IiwgY29sID0gImxpZ2h0Z3JlZW4iKQ0KYGBgDQoNCg0KIyAsVGjhu5FuZyBrw6ogbcO0IHThuqMgYmnhur9uIHBo4bulIHRodeG7mWMgduG7m2kgY8OhYyBiaeG6v24gxJHhu5ljIGzhuq1wIHbDoCBwaMOibiB0w61jaCBr4bq/dCBxdeG6ow0KDQojIyBUaOG7kW5nIGvDqiBtw7QgdOG6oyBiaeG6v24gcGjhu6UgdGh14buZYzogY2hpIHBow60geSB04bq/IChjaGFyZ2VzKSB24bubaSBiaeG6v24gxJHhu5ljIGzhuq1wOiBnaeG7m2kgdMOtbmggKHNleCkNCg0KIyMjIE3DoyBob8OhIGJp4bq/biBwaOG7pSB0aHXhu5ljIChjaGFyZ2VzKSB04burIMSR4buLbmggbMaw4bujbmcgc2FuZyDEkeG7i25oIHTDrW5oDQoNCiAgVuG7m2kgZOG7ryBsaeG7h3UgZ+G7kWMsIGJp4bq/biBjaGkgcGjDrSB5IHThur8gKGNoYXJnZXMpIGzDoCBiaeG6v24gxJHhu4tuaCBsxrDhu6NuZyBuaOG6rW4gY8OhYyBnacOhIHRy4buLIHThu6sgMCDEkeG6v24gNjM3NzAgVVNEIG7Dqm4gdMOhYyBnaeG6oyDEkcOjIMSR4bq3dCBxdXkgxrDhu5tjIHbhu4Egdmnhu4djIG3DoyBob8OhIGJp4bq/biAoY2hhcmdlcykgbmjGsCBzYXU6DQogICAgQ2hpIHBow60gdGjhuqVwIChUaOG6pXApOiBjaGkgcGjDrSB5IHThur8gdOG7qyB0csOqbiAwIFVTRCDEkeG6v24gMTUwMDAgVVNELg0KICAgIENoaSBwaMOtIGNhbyAoQ2FvKTogY2hpIHBow60geSB04bq/IHThu6sgMTUwMDAgVVNEIMSR4bq/biA2NDAwMCBVU0QuDQpgYGB7cn0NCmNoYXJnZXMgPC0gY3V0KGRhdGEkY2hhcmdlcywgYnJlYWtzID0gYygwLDE1MDAwLDY0MDAwKSwgbGFiZWxzPWMoIlRo4bqlcCIsIkNhbyIpKQ0KdGFibGUoY2hhcmdlcykNCmBgYA0KDQojIyMgQuG6o25nIHThuqduIHPhu5EsIHThuqduIHN14bqldCB2w6AgYmnhu4N1IMSR4buTDQpgYGB7cn0NCnNleCA8LSBkYXRhJHNleA0KdGFibGUoc2V4KQ0KYGBgDQoqQuG6o25nIHThuqduIHPhu5E6Kg0KYGBge3J9DQphIDwtIHRhYmxlKHNleCwgY2hhcmdlcyk7YQ0KYGBgDQoNCipC4bqjbmcgdOG6p24gc3XhuqV0OioNCmBgYHtyfQ0KYTEgPC0gcHJvcC50YWJsZShhKTthMQ0KYGBgDQoNCipQaMOibiBwaOG7kWkgYmnDqm46Kg0KYGBge3J9DQphZGRtYXJnaW5zKGEpDQpgYGANCipCaeG7g3UgxJHhu5MgY+G7mXQga+G6v3QgaOG7o3AgMiBiaeG6v246Kg0KYGBge3J9DQpsaWJyYXJ5KGdncGxvdDIpDQpsaWJyYXJ5KGRhdGEudGFibGUpDQprIDwtIGRhdGEuZnJhbWUoZGF0YSRhZ2UsIGRhdGEkc2V4LCBkYXRhJGJtaSwgZGF0YSRkZXBlbmRlbnQsIGRhdGEkc21va2VyLCBkYXRhJHJlZ2lvbiwgZGF0YSRjaGFyZ2VzLCBjaGFyZ2VzLCBzZXgpDQprIHw+IGdncGxvdChhZXMoeD1zZXgseT1hZnRlcl9zdGF0KGNvdW50KSkpICsgZ2VvbV9iYXIoZmlsbD0iYmx1ZSIpICsgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHNjYWxlczo6cGVyY2VudChhZnRlcl9zdGF0KGNvdW50L3N1bShjb3VudCkpKSksIHN0YXQgPSAiY291bnQiLCBjb2xvciA9ICJyZWQiLCB2anVzdCA9IC0gLjUpICsgZmFjZXRfZ3JpZCguIH5jaGFyZ2VzKSArIGxhYnMoeCA9ICJHaeG7m2kgdMOtbmgiLHkgPSAiU+G7kSBuZ8aw4budaSIpDQoNCmBgYA0KDQogIFRow7RuZyBxdWEgYuG6o25nIHThuqduIHPhu5EsIHThuqduIHN14bqldCB0csOqbiBj4bunYSAyIGJp4bq/biBDaGkgcGjDrSB5IHThur8gdsOgIEdp4bubaSB0w61uaCB0YSB0aOG6pXkgY8OzIDk4MCBuZ8aw4budaSBuaOG6rXAgdmnhu4duIGPDsyBjaGkgcGjDrSB5IHThur8gdGjhuqVwICh04bupYyBkxrDhu5tpIDE1MDAwIFVTRCkgdHJvbmcgxJHDsyBjw7MgNTAzIG5nxrDhu51pIGzDoCBu4buvLCBjaGnhur9tIHThu4kgbOG7hyAzNyw2JSB04buVbmcgc+G7kSBi4buHbmggbmjDom4gdsOgIDQ3NyBuZ8aw4budaSBsw6AgbmFtLCBjaGnhur9tIDM1LDYlIHThu5VuZyBz4buRIGLhu4duaCBuaMOibi4gQsOqbiBj4bqhbmggxJHDsyBjw7MgMzU4IG5nxrDhu51pIGPDsyBjaGkgcGjDrSB5IHThur8g4bufIG3hu6ljIGNhbyAodHLDqm4gMTUwMDAgVVNEKSB0cm9uZyDEkcOzIGPDsyAxNTkgbmfGsOG7nWkgbMOgIG7hu68sIGNoaeG6v20gMTEsOSUgdOG7lW5nIHPhu5EgYuG7h25oIG5ow6JuIHbDoCAxOTkgbmfGsOG7nWkgbMOgIG5hbSwgY2hp4bq/bSAxNCw5JSB04buVbmcgc+G7kSBi4buHbmggbmjDom4uIFPhu5EgbmfGsOG7nWkgbmjhuq1wIHZp4buHbiBjw7MgY2hpIHBow60geSB04bq/IGNhbyBjaOG7iSB44bqlcCB44buJIGtob+G6o25nIDMwJSBz4buRIG5nxrDhu51pIG5o4bqtcCB2aeG7h24gY8OzIGNoaSBwaMOtIHkgdOG6vyB0aOG6pXAuIFF1YSBiaeG7g3UgxJHhu5MgY8OzIHRo4buDIHRo4bqleSDEkeG7kWkgduG7m2kgbmjhu69uZyBuZ8aw4budaSBuaOG6rXAgdmnhu4duIGPDsyBjaGkgcGjDrSB0aOG6pXAgdGjDrCB04bu3IGzhu4cgbuG7ryBjYW8gaMahbiBuYW0gbmjGsG5nIMSR4buRaSB24bubaSBuaOG7r25nIG5nxrDhu51pIG5o4bqtcCB2aeG7h24gY8OzIGNoaSBwaMOtIGNhbyB0aMOsIHThu7cgbOG7hyBuYW0gbOG6oWkgbmhp4buBdSBoxqFuIG7hu68uDQogIA0KICANCiMjIyBS4bunaSBybyB0xrDGoW5nIMSR4buRaSAoUmlzayByYXRpbykNCg0KYGBge3J9DQpsaWJyYXJ5KGVwaXRvb2xzKQ0Kcmlza3JhdGlvKGEpDQpgYGANCg0KICBUaGVvIGvhur90IHF14bqjIHRyw6puIHRhIHRo4bqleSB04buJIGzhu4cgcuG7p2kgcm8gdMawxqFuZyDEkeG7kWkgKHJpc2sgcmF0aW8pIGPhu6dhIG5o4buvbmcgYuG7h25oIG5ow6JuIGPDsyBjaGkgcGjDrSB5IHThur8gY2FvIHRoZW8gZ2nhu5tpIHTDrW5oIGzDoCAxLDIyNTYgdOG7qWMgbMOgIHThu4kgbOG7hyBuaOG7r25nIGLhu4duaCBuaMOibiBjw7MgY2hpIHBow60geSB04bq/IGNhbyBsw6AgbuG7ryBn4bqlcCAxLDIyNTYgbOG6p24gdOG7iSBs4buHIG5o4buvbmcgYuG7h25oIG5ow6JuIGPDsyBjaGkgcGjDrSB5IHThur8gY2FvIGzDoCBuYW0uDQogIA0KKktoaSB0aMOqbSB0aGFtIHPhu5EgcmV2ID0gImMiIHRow6wgc+G6vSB0aOG7sWMgaGnhu4duIHZp4buHYyDEkeG7lWkgY2jhu5cgMiBj4buZdCB0cm9uZyBi4bqjbmcgbmfhuqt1IG5oacOqbjoqDQoNCmBgYHtyfQ0Kcmlza3JhdGlvKGEsIHJldiA9ICJjIikNCmBgYA0KICBUaGVvIGvhur90IHF14bqjIHRyw6puIHRhIHRo4bqleSB04buJIGzhu4cgcuG7p2kgcm8gdMawxqFuZyDEkeG7kWkgKHJpc2sgcmF0aW8pIGPhu6dhIG5o4buvbmcgYuG7h25oIG5ow6JuIGPDsyBjaGkgcGjDrSB5IHThur8gdGjhuqVwIHRoZW8gZ2nhu5tpIHTDrW5oIGzDoCAwLDkyODcgdOG7qWMgbMOgIHThu4kgbOG7hyBuaOG7r25nIGLhu4duaCBuaMOibiBjw7MgY2hpIHBow60geSB04bq/IHRo4bqlcCBsw6AgbuG7ryDDrXQgaMahbiB2w6AgeOG6pXAgeOG7iSBi4bqxbmcgdOG7iSBs4buHIG5o4buvbmcgYuG7h25oIG5ow6JuIGPDsyBjaGkgcGjDrSB5IHThur8gY2FvIGzDoCBuYW0uDQoNCg0KIyMjIFThu7cgbOG7hyBjaMOqbmggbOG7h2NoIChvZGQgcmF0aW8pDQoNCmBgYHtyfQ0KZXBpdGFiKGEsIG1ldGhvZCA9ICJvZGRzcmF0aW8iKQ0KYGBgDQogIFRoZW8ga+G6v3QgcXXhuqMgdHLDqm4gdGEgdGjhuqV5IHThu4kgbOG7hyBjaMOqbmggKG9kZCByYXRpbykgbMOgIDEsMzE5MyB04bupYyB04buJIGzhu4cgbmjhu69uZyBi4buHbmggbmjDom4gY8OzIGNoaSBwaMOtIHkgdOG6vyBjYW8vbmjhu69uZyBi4buHbmggbmjDom4gY8OzIGNoaSBwaMOtIHkgdOG6vyB0aOG6pXAg4bufIGdp4bubaSB0w61uaCBuYW0gbOG7m24gaMahbiBraG/huqNuZyAzMSw5MyUgc28gduG7m2kgdOG7iSBs4buHIGLhu4duaCBuaMOibiBjw7MgY2hpIHBow60geSB04bq/IGNhby9i4buHbmggbmjDom4gY8OzIGNoaSBwaMOtIHkgdOG6vyB0aOG6pXAg4bufIGdp4bubaSB0w61uaCBu4buvLg0KICANCipLaGkgdGjDqm0gdGhhbSBz4buRIHJldiA9ICJyIiB0aMOsIHPhur0gdGjhu7FjIGhp4buHbiB2aeG7h2MgxJHhu5VpIGNo4buXIDIgZMOybmcgdHJvbmcgYuG6o25nIG5n4bqrdSBuaGnDqm46Kg0KDQpgYGB7cn0NCmVwaXRhYihhLCBtZXRob2QgPSAib2Rkc3JhdGlvIiwgcmV2ID0gInIiKQ0KYGBgDQogIFRoZW8ga+G6v3QgcXXhuqMgdHLDqm4gdGEgdGjhuqV5IHThu4kgbOG7hyBjaMOqbmggKG9kZCByYXRpbykgbMOgIDAsNzU3NyB04bupYyB04buJIGzhu4cgbmjhu69uZyBi4buHbmggbmjDom4gY8OzIGNoaSBwaMOtIHkgdOG6vyBjYW8vbmjhu69uZyBi4buHbmggbmjDom4gY8OzIGNoaSBwaMOtIHkgdOG6vyB0aOG6pXAg4bufIGdp4bubaSB0w61uaCBu4buvIGNo4buJIGLhurFuZyBraG/huqNuZyA3NSw3NyUgdOG7iSBs4buHIGLhu4duaCBuaMOibiBjw7MgY2hpIHBow60geSB04bq/IGNhby9i4buHbmggbmjDom4gY8OzIGNoaSBwaMOtIHkgdOG6vyB0aOG6pXAg4bufIGdp4bubaSB0w61uaCBuYW0uDQogIA0KIyMjIFRo4buRbmcga8OqIHN1eSBkaeG7hW4NCg0KS2nhu4NtIMSR4buLbmggdMOtbmggxJHhu5ljIGzhuq1wIGNobyAyIGJp4bq/biAoY2hhcmdlcykgdsOgIChzZXgpOg0KDQoqUGjGsMahbmcgcGjDoXAgY2hpIGLDrG5oIHBoxrDGoW5nOioNCg0KICBHaeG6oyB0aHV54bq/dCBIbzogY2hhcmdlcyB2w6Agc2V4IMSR4buZYyBs4bqtcA0KICANCmBgYHtyfQ0KYSA8LSB0YWJsZShkYXRhJHNleCwgY2hhcmdlcyk7YQ0KYGBgDQpgYGB7cn0NCmNoaXNxLnRlc3QoYSkNCmBgYA0KICBL4bq/dCBxdeG6oyBraeG7g20gxJHhu4tuaCB0csOqbiBjaG8gdGjhuqV5IGdpw6EgdHLhu4sgdOG7m2kgaOG6oW4gUF92YWx1ZSA9IDAsMDI5NDYgPCA1JSB2w6wgduG6rXkgY2jGsGEgY8OzIGPGoSBz4bufIMSR4buDIHRo4burYSBuaOG6rW4gZ2nhuqMgdGh1eeG6v3QgSG8sIG7Ds2kgY8OhY2gga2jDoWMgZ2nhu69hIGNoaSBwaMOtIGLhuqNvIGhp4buDbSB5IHThur8gKGNoYXJnZXMpIHbDoCBnaeG7m2kgdMOtbmggKHNleCkgY8OzIGxpw6puIHF1YW4gdOG7m2kgbmhhdS4NCg0KIyMgVGjhu5FuZyBrw6ogbcO0IHThuqMgYmnhur9uIHBo4bulIHRodeG7mWM6IGNoaSBwaMOtIHkgdOG6vyAoY2hhcmdlcykgduG7m2kgYmnhur9uIMSR4buZYyBs4bqtcDogxJHhu5kgdHXhu5VpIChhZ2UpDQoNCiMjIyBNw6MgaG/DoSBiaeG6v24gxJHhu5kgdHXhu5VpIChhZ2UpIHThu6sgxJHhu4tuaCBsxrDhu6NuZyBzYW5nIMSR4buLbmggdMOtbmgNCg0KICBW4bubaSBk4buvIGxp4buHdSBn4buRYywgYmnhur9uIMSR4buZIHR14buVaSAoYWdlKSBsw6AgYmnhur9uIMSR4buLbmggbMaw4bujbmcgbmjhuq1uIGPDoWMgZ2nDoSB0cuG7iyB04burIDE4IMSR4bq/biA2NCB0deG7lWkuIFRoZW8gVHJ1bmcgdMOibSBZIHThur8gdsOgIFPhu6ljIGtob+G6uyBQaGlsaXBzIOG7nyBN4bu5IGNobyBiaeG6v3QgbuG6v3UgbmjGsCB04burIGzDonUgdHXhu5VpIDQwIMSRxrDhu6NjIHhlbSBsw6AgY+G7mXQgbeG7kWMgxJHDoW5oIGThuqV1IHPhu7EgYuG6r3QgxJHhuqd1IGPhu6dhIHR14buVaSB0cnVuZyBuacOqbiB0aMOsIG5heSDEkeG7mSB0deG7lWkgbsOgeSDEkcOjIGjhuqEgeHXhu5FuZyBjw7JuIDM1IHbhu5tpIG5nxrDhu51pIE3hu7kgbsOqbiB0w6FjIGdp4bqjIMSRw6MgxJHhurd0IHF1eSDGsOG7m2MgduG7gSB2aeG7h2MgbcOjIGhvw6EgYmnhur9uIChhZ2UpIG5oxrAgc2F1Og0KICANCiAgICBUdeG7lWkgbmjDs20gdHJ1bmcgbmnDqm4gKHRydW5nbmllbik6IMSR4buZIHR14buVaSB04burIHRyw6puIDM1IHR14buVaSDEkeG6v24gNjUgdHXhu5VpLg0KICAgIA0KICAgIFR14buVaSBuaMOzbSB0aGFuaCBuacOqbiAodGhhbmhuaWVuKTogxJHhu5kgdHXhu5VpIHThu6sgdHLDqm4gMTYgdHXhu5VpIMSR4bq/biAzNSB0deG7lWkuDQogICAgDQpgYGB7cn0NCmFnZSA8LSBjdXQoZGF0YSRhZ2UsIGJyZWFrcyA9IGMoMTYsMzUsNjUpLCBsYWJlbHM9YygidGhhbmhuaWVuIiwidHJ1bmduaWVuIikpDQp0YWJsZShhZ2UpDQpgYGANCiMjIyBC4bqjbmcgdOG6p24gc+G7kSwgdOG6p24gc3XhuqV0IHbDoCBiaeG7g3UgxJHhu5MNCg0KKkLhuqNuZyB04bqnbiBz4buROioNCmBgYHtyfQ0KYiA8LSB0YWJsZShhZ2UsIGNoYXJnZXMpOyBiDQpgYGANCipC4bqjbmcgdOG6p24gc3XhuqV0OioNCmBgYHtyfQ0KYjEgPC0gcHJvcC50YWJsZShiKTsgYjENCmBgYA0KKlBow6JuIHBo4buRaSBiacOqbjoqDQpgYGB7cn0NCmFkZG1hcmdpbnMoYikNCmBgYA0KKkJp4buDdSDEkeG7kyBj4buZdCBr4bq/dCBo4bujcCAyIGJp4bq/bjoqDQoNCmBgYHtyfQ0KbSA8LSBkYXRhLmZyYW1lKGRhdGEkYWdlLCBkYXRhJHNleCwgZGF0YSRibWksIGRhdGEkZGVwZW5kZW50LCBkYXRhJHNtb2tlciwgZGF0YSRyZWdpb24sIGRhdGEkY2hhcmdlcywgY2hhcmdlcywgYWdlKQ0KbSB8PiBnZ3Bsb3QoYWVzKHg9YWdlLHk9YWZ0ZXJfc3RhdChjb3VudCkpKSArIGdlb21fYmFyKGZpbGw9ImdyZWVuIikgKyBnZW9tX3RleHQoYWVzKGxhYmVsID0gc2NhbGVzOjpwZXJjZW50KGFmdGVyX3N0YXQoY291bnQvc3VtKGNvdW50KSkpKSwgc3RhdCA9ICJjb3VudCIsIGNvbG9yID0gImJsdWUiLCB2anVzdCA9IC0gLjUpICsgZmFjZXRfZ3JpZCguIH5jaGFyZ2VzKSArIGxhYnMoeCA9ICLEkOG7mSB0deG7lWkiLHkgPSAiU+G7kSBuZ8aw4budaSIpDQpgYGANCg0KICBUaMO0bmcgcXVhIGLhuqNuZyB04bqnbiBz4buRLCB04bqnbiBzdeG6pXQgdHLDqm4gY+G7p2EgMiBiaeG6v24gQ2hpIHBow60geSB04bq/IHbDoCDEkeG7mSB0deG7lWkgdGEgdGjhuqV5IGPDsyA5ODAgbmfGsOG7nWkgbmjhuq1wIHZp4buHbiBjw7MgY2hpIHBow60geSB04bq/IHRo4bqlcCAodOG7qWMgZMaw4bubaSAxNTAwMCBVU0QpIHRyb25nIMSRw7MgY8OzIDQyOCBuZ8aw4budaSBuaMOzbSB0deG7lWkgdGhhbmggbmnDqm4sIGNoaeG6v20gdOG7iSBs4buHIDMxLDk5JSB04buVbmcgc+G7kSBi4buHbmggbmjDom4gdsOgIDU1MiBuZ8aw4budaSBuaMOzbSB0deG7lWkgdHJ1bmcgbmnDqm4sIGNoaeG6v20gdOG7iSBs4buHIDQxLDI1JSB04buVbmcgc+G7kSBi4buHbmggbmjDom4gLiBCw6puIGPhuqFuaCDEkcOzIGPDsyAzNTggbmfGsOG7nWkgY8OzIGNoaSBwaMOtIHkgdOG6vyDhu58gbeG7qWMgY2FvICh0csOqbiAxNTAwMCBVU0QpIHRyb25nIMSRw7MgY8OzIDE0NiBuZ8aw4budaSBuaMOzbSB0deG7lWkgdGhhbmggbmnDqm4sIGNoaeG6v20gMTAsOTElIHThu5VuZyBz4buRIGLhu4duaCBuaMOibiB2w6AgMjEyIG5nxrDhu51pIG5ow7NtIHR14buVaSB0cnVuZyBuacOqbiwgY2hp4bq/bSAxNSw4NCUgdOG7lW5nIHPhu5EgYuG7h25oIG5ow6JuLiBT4buRIG5nxrDhu51pIG5o4bqtcCB2aeG7h24gY8OzIGNoaSBwaMOtIHkgdOG6vyBjYW8gY2jhu4kgeOG6pXAgeOG7iSBraG/huqNuZyAzMCUgc+G7kSBuZ8aw4budaSBuaOG6rXAgdmnhu4duIGPDsyBjaGkgcGjDrSB5IHThur8gdGjhuqVwLiBRdWEgYmnhu4N1IMSR4buTIGPDsyB0aOG7gyB0aOG6pXkgxJHhu5FpIHbhu5tpIG5o4buvbmcgbmfGsOG7nWkgbmjhuq1wIHZp4buHbiBjw7MgY+G6oyBjaGkgcGjDrSB0aOG6pXAgdsOgIGNoaSBwaMOtIGNhbyB0aMOsIHThu7cgbOG7hyBuZ8aw4budaSB0aHXhu5ljIG5ow7NtIHR14buVaSB0cnVuZyBuacOqbiB24bqrbiBuaGnhu4F1IGjGoW4gbmjhu69uZyBuZ8aw4budaSB0aHXhu5ljIG5ow7NtIHR14buVaSB0aGFuaCBuacOqbiBuaMawbmcgxJHhu5FpIHbhu5tpIHThu6tuZyBt4bupYyBjaGkgcGjDrSB0aMOsIG3hu6ljIMSR4buZIGNow6puaCBs4buHY2ggZ2nhu69hIDIgbmjDs20gdHXhu5NpIG7DoHkga2jDtG5nIHF1w6EgbOG7m24uDQogIA0KICANCiMjIyBS4bunaSBybyB0xrDGoW5nIMSR4buRaSAoUmlzayByYXRpbykNCmBgYHtyfQ0KZXBpdGFiKGIsIG1ldGhvZCA9ICJyaXNrcmF0aW8iKQ0KYGBgDQogIFRoZW8ga+G6v3QgcXXhuqMgdHLDqm4gdGEgdGjhuqV5IHThu4kgbOG7hyBy4bunaSBybyB0xrDGoW5nIMSR4buRaSAocmlzayByYXRpbykgY+G7p2Egbmjhu69uZyBi4buHbmggbmjDom4gY8OzIGNoaSBwaMOtIHkgdOG6vyBjYW8gdGhlbyDEkeG7mSB0deG7lWkgbMOgIDEsMDkwOSB04bupYyBsw6AgdOG7iSBs4buHIG5o4buvbmcgYuG7h25oIG5ow6JuIGPDsyBjaGkgcGjDrSB5IHThur8gY2FvIHRyb25nIG5ow7NtIHR14buVaSB0cnVuZyBuacOqbiBn4bqlcCAxLDA5MDkgbOG6p24gdOG7iSBs4buHIG5o4buvbmcgYuG7h25oIG5ow6JuIGPDsyBjaGkgcGjDrSB5IHThur8gY2FvIHRyb25nIG5ow7NtIHR14buVaSB0aGFuaCBuacOqbi4NCiAgDQoqS2hpIHRow6ptIHRoYW0gc+G7kSByZXYgPSAiYyIgdGjDrCBz4bq9IHRo4buxYyBoaeG7h24gdmnhu4djIMSR4buVaSBjaOG7lyAyIGPhu5l0IHRyb25nIGLhuqNuZyBuZ+G6q3Ugbmhpw6puOioNCg0KYGBge3J9DQplcGl0YWIoYiwgbWV0aG9kID0gInJpc2tyYXRpbyIsIHJldiA9ICJjIikNCmBgYA0KICBUaGVvIGvhur90IHF14bqjIHRyw6puIHRhIHRo4bqleSB04buJIGzhu4cgcuG7p2kgcm8gdMawxqFuZyDEkeG7kWkgKHJpc2sgcmF0aW8pIGPhu6dhIG5o4buvbmcgYuG7h25oIG5ow6JuIGPDsyBjaGkgcGjDrSB5IHThur8gdGjhuqVwIHRoZW8gxJHhu5kgdHXhu5VpIGzDoCAwLDk2OTAgdOG7qWMgbMOgIHThu4kgbOG7hyBuaOG7r25nIGLhu4duaCBuaMOibiBjw7MgY2hpIHBow60geSB04bq/IHRo4bqlcCB0cm9uZyBuaMOzbSB0deG7lWkgdHJ1bmcgbmnDqm4gZ+G6p24gYuG6sW5nIHThu4kgbOG7hyBuaOG7r25nIGLhu4duaCBuaMOibiBjw7MgY2hpIHBow60geSB04bq/IHRo4bqlcCB0cm9uZyBuaMOzbSB0deG7lWkgdGhhbmggbmnDqm4uIA0KICANCiMjIyBU4buJIGzhu4cgY2jDqm5oIGzhu4djaCAob2RkIHJhdGlvKQ0KYGBge3J9DQplcGl0YWIoYiwgbWV0aG9kID0gIm9kZHNyYXRpbyIpDQpgYGANCiAgVGhlbyBr4bq/dCBxdeG6oyB0csOqbiB0YSB0aOG6pXkgdOG7iSBs4buHIGNow6puaCAob2RkIHJhdGlvKSBsw6AgMSwxMjU5IHThu6ljIHThu4kgbOG7hyBuaOG7r25nIGLhu4duaCBuaMOibiBjw7MgY2hpIHBow60geSB04bq/IHRo4bqlcC9uaOG7r25nIGLhu4duaCBuaMOibiBjw7MgY2hpIHBow60geSB04bq/IGNhbyDhu58gbmjDs20gdHXhu5VpIHRoYW5oIG5pw6puIGzhu5tuIGjGoW4ga2hv4bqjbmcgMTIsNTklIHNvIHbhu5tpIHThu4kgbOG7hyBi4buHbmggbmjDom4gY8OzIGNoaSBwaMOtIHkgdOG6vyB0aOG6pXAvYuG7h25oIG5ow6JuIGPDsyBjaGkgcGjDrSB5IHThur8gY2FvIOG7nyBuaMOzbSB0deG7lWkgdHJ1bmcgbmnDqm4uDQogIA0KKktoaSB0aMOqbSB0aGFtIHPhu5EgcmV2ID0gInIiIHRow6wgc+G6vSB0aOG7sWMgaGnhu4duIHZp4buHYyDEkeG7lWkgY2jhu5cgMiBkw7JuZyB0cm9uZyBi4bqjbmcgbmfhuqt1IG5oacOqbjoqDQpgYGB7cn0NCmVwaXRhYihiLCBtZXRob2QgPSAib2Rkc3JhdGlvIiwgcmV2ID0gInIiKQ0KYGBgDQogIFRoZW8ga+G6v3QgcXXhuqMgdHLDqm4gdGEgdGjhuqV5IHThu4kgbOG7hyBjaMOqbmggKG9kZCByYXRpbykgbMOgIDAsODg4MiB04bupYyB04buJIGzhu4cgbmjhu69uZyBi4buHbmggbmjDom4gY8OzIGNoaSBwaMOtIHkgdOG6vyBjYW8vbmjhu69uZyBi4buHbmggbmjDom4gY8OzIGNoaSBwaMOtIHkgdOG6vyB0aOG6pXAg4bufIG5ow7NtIHR14buVaSB0aGFuaCBuacOqbiBi4bqxbmcga2hv4bqjbmcgODgsODIlIHNvIHbhu5tpIHThu4kgbOG7hyBi4buHbmggbmjDom4gY8OzIGNoaSBwaMOtIHkgdOG6vyBjYW8vYuG7h25oIG5ow6JuIGPDsyBjaGkgcGjDrSB5IHThur8gdGjhuqVwIOG7nyBuaMOzbSB0deG7lWkgdHJ1bmcgbmnDqm4uDQogIA0KIyMjIFRo4buRbmcga8OqIHN1eSBkaeG7hW4NCktp4buDbSDEkeG7i25oIHTDrW5oIMSR4buZYyBs4bqtcCBjaG8gMiBiaeG6v24gKGNoYXJnZXMpIHbDoCAoYWdlKToNCg0KKlBoxrDGoW5nIHBow6FwIGNoaSBiw6xuaCBwaMawxqFuZzoqDQpHaeG6oyB0aHV54bq/dCBIbzogKGNoYXJnZXMpIHbDoCAoYWdlKSDEkeG7mWMgbOG6rXANCmBgYHtyfQ0KYiA8LSB0YWJsZShhZ2UsIGNoYXJnZXMpO2INCmBgYA0KYGBge3J9DQpjaGlzcS50ZXN0KGIpDQpgYGANCiAgS+G6v3QgcXXhuqMga2nhu4NtIMSR4buLbmggdHLDqm4gY2hvIHRo4bqleSBnacOhIHRy4buLIHThu5tpIGjhuqFuIFBfdmFsdWUgPSAwLDM3NjkgPiA1JSB2w6wgduG6rXkgY8OzIGPGoSBz4bufIMSR4buDIHRo4burYSBuaOG6rW4gZ2nhuqMgdGh1eeG6v3QgSG8sIG7Ds2kgY8OhY2gga2jDoWMgZ2nhu69hIGNoaSBwaMOtIGLhuqNvIGhp4buDbSB5IHThur8gKGNoYXJnZXMpIHbDoCDEkeG7mSB0deG7lWkgKGFnZSkgxJHhu5ljIGzhuq1wIHbhu5tpIG5oYXUuDQoNCg0KIyMgVGjhu5FuZyBrw6ogbcO0IHThuqMgYmnhur9uIHBo4bulIHRodeG7mWM6IGNoaSBwaMOtIHkgdOG6vyAoY2hhcmdlcykgduG7m2kgYmnhur9uIMSR4buZYyBs4bqtcDogY2jhu4kgc+G7kSBraOG7kWkgY8ahIHRo4buDIChibWkpDQoNCiMjIyBNw6MgaG/DoSBiaeG6v24gY2jhu4kgc+G7kSBraOG7kWkgY8ahIHRo4buDIChibWkpIHThu6sgxJHhu4tuaCBsxrDhu6NuZyBzYW5nIMSR4buLbmggdMOtbmgNCg0KICBW4bubaSBk4buvIGxp4buHdSBn4buRYywgYmnhur9uIGNo4buJIHPhu5Ega2jhu5FpIGPhu6dhIGPGoSB0aOG7gyAoYm1pKSBsw6AgYmnhur9uIMSR4buLbmggbMaw4bujbmcgbmjhuq1uIGPDoWMgZ2nDoSB0cuG7iyB04burIDE1LDk2IMSR4bq/biA1MywxMyBrZy9tXjIuIENo4buJIHPhu5EgYm1pIGPhu6dhIG3hu5l0IG5nxrDhu51pIGzDvSB0xrDhu59uZyBz4bq9IG7hurFtIHRyb25nIGtob+G6o25nIHThu6sgMTgsNSDEkeG6v24gMjQsOSBrZy9tXjIgbsOqbiB0w6FjIGdp4bqjIMSRw6MgxJHhurd0IHF1eSDGsOG7m2MgduG7gSB2aeG7h2MgbcOjIGhvw6EgYmnhur9uIChibWkpIG5oxrAgc2F1Og0KICAgIENo4buJIHPhu5Ega2jhu5FpIChibWkpIG5nxrDhu51pIGLDrG5oIHRoxrDhu51uZyAoY2FuZG9pKTogYm1pIHThu6sgMTUsOSDEkeG6v24gMjUga2cvbV4yLg0KICAgIENo4buJIHPhu5Ega2jhu5FpIChibWkpIG5nxrDhu51pIGtow7RuZyBjw6JuIMSR4buRaSAoa2hvbmdjYW5kb2kpOiBibWkgdOG7qyAyNSDEkeG6v24gNTQga2cvbV4yLg0KICAgIA0KYGBge3J9DQpibWkgPC0gY3V0KGRhdGEkYm1pLCBicmVha3MgPSBjKDE1LjksMjUsNTQpLCBsYWJlbHM9YygiY2FuZG9pIiwia2hvbmdjYW5kb2kiKSkNCnRhYmxlKGJtaSkNCmBgYA0KIyMjIELhuqNuZyB04bqnbiBz4buRLCB04bqnbiBzdeG6pXQgdsOgIGJp4buDdSDEkeG7kw0KDQoqQuG6o25nIHThuqduIHPhu5E6Kg0KYGBge3J9DQpkIDwtIHRhYmxlKGJtaSwgY2hhcmdlcyk7IGQNCmBgYA0KKkLhuqNuZyB04bqnbiBzdeG6pXQ6Kg0KYGBge3J9DQpkMSA8LSBwcm9wLnRhYmxlKGQpOyBkMQ0KYGBgDQoqUGjDom4gcGjhu5FpIGJpw6puOioNCmBgYHtyfQ0KYWRkbWFyZ2lucyhkKQ0KYGBgDQoqQmnhu4N1IMSR4buTIGPhu5l0IGvhur90IGjhu6NwIDIgYmnhur9uOioNCmBgYHtyfQ0KbiA8LSBkYXRhLmZyYW1lKGRhdGEkYWdlLCBkYXRhJHNleCwgZGF0YSRibWksIGRhdGEkZGVwZW5kZW50LCBkYXRhJHNtb2tlciwgZGF0YSRyZWdpb24sIGRhdGEkY2hhcmdlcywgY2hhcmdlcywgYWdlLCBibWkpDQptIHw+IGdncGxvdChhZXMoeD1ibWkseT1hZnRlcl9zdGF0KGNvdW50KSkpICsgZ2VvbV9iYXIoZmlsbD0icGluayIpICsgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHNjYWxlczo6cGVyY2VudChhZnRlcl9zdGF0KGNvdW50L3N1bShjb3VudCkpKSksIHN0YXQgPSAiY291bnQiLCBjb2xvciA9ICJuYXZ5Iiwgdmp1c3QgPSAtIC41KSArIGZhY2V0X2dyaWQoLiB+Y2hhcmdlcykgKyBsYWJzKHggPSAiQ2jhu4kgc+G7kSBraOG7kWkgKGJtaSkgY8ahIHRo4buDIix5ID0gIlPhu5EgbmfGsOG7nWkiKQ0KYGBgDQoNCiAgVGjDtG5nIHF1YSBi4bqjbmcgdOG6p24gc+G7kSwgdOG6p24gc3XhuqV0IHRyw6puIGPhu6dhIDIgYmnhur9uIENoaSBwaMOtIHkgdOG6vyB2w6AgY2jhu4kgc+G7kSBraOG7kWkgY8ahIHRo4buDIHRhIHRo4bqleSBjw7MgOTgwIG5nxrDhu51pIG5o4bqtcCB2aeG7h24gY8OzIGNoaSBwaMOtIHkgdOG6vyB0aOG6pXAgKHThu6ljIGTGsOG7m2kgMTUwMDAgVVNEKSB0cm9uZyDEkcOzIGNo4buJIGPDsyAxODcgbmfGsOG7nWkgY8OzIGNo4buJIHPhu5EgYm1pIGPDom4gxJHhu5FpLCBjaGnhur9tIHThu4kgbOG7hyAxMyw5OCUgdOG7lW5nIHPhu5EgYuG7h25oIG5ow6JuIHbDoCA3OTMgbmfGsOG7nWkgY8OzIGNo4buJIHPhu5EgYm1pIGtow7RuZyBjw6JuIMSR4buRaSwgY2hp4bq/bSB04buJIGzhu4cgNTksMjclIHThu5VuZyBz4buRIGLhu4duaCBuaMOibiAuIELDqm4gY+G6oW5oIMSRw7MgY8OzIDM1OCBuZ8aw4budaSBjw7MgY2hpIHBow60geSB04bq/IOG7nyBt4bupYyBjYW8gKHRyw6puIDE1MDAwIFVTRCkgdHJvbmcgxJHDsyBjaOG7iSBjw7MgNjAgY8OzIGNo4buJIHPhu5EgYm1pIGPDom4gxJHhu5FpLCBjaGnhur9tIDQsNDglIHThu5VuZyBz4buRIGLhu4duaCBuaMOibiB2w6AgMjk4IG5nxrDhu51pIGPDsyBjaOG7iSBz4buRIGJtaSBraMO0bmcgY8OibiDEkeG7kWksIGNoaeG6v20gMjIsMjclIHThu5VuZyBz4buRIGLhu4duaCBuaMOibi4gVHJvbmcgdOG7lW5nIHPhu5Egbmjhu69uZyBuZ8aw4budaSBuaOG6rXAgdmnhu4duIHRow6wgdOG7iSBs4buHIG5o4buvbmcgbmfGsOG7nWkgY8OzIGNo4buJIHPhu5Ega2jhu5FpIGPGoSB0aOG7gyAoYm1pKSBraMO0bmcgY8OibiDEkeG7kWkgZ+G6pXAgaMahbiA0IGzhuqduIG5o4buvbmcgbmfGsOG7nWkgY8OzIGNo4buJIHPhu5EgKGJtaSkgY8OibiDEkeG7kWkuIFF1YSBiaeG7g3UgxJHhu5MgY8OzIHRo4buDIHRo4bqleSDEkeG7kWkgduG7m2kgbmjhu69uZyBuZ8aw4budaSBuaOG6rXAgdmnhu4duIGPDsyBj4bqjIGNoaSBwaMOtIHRo4bqlcCB2w6AgY2hpIHBow60gY2FvIHRow6wgdOG7tyBs4buHIG5nxrDhu51pIHRodeG7mWMgbmjDs20gY2jhu4kgc+G7kSBibWkga2jDtG5nIGPDom4gxJHhu5FpIHbhuqtuIG5oaeG7gXUgaMahbiBuaOG7r25nIG5nxrDhu51pIHRodeG7mWMgbmjDs20gY8OzIGNo4buJIHPhu5EgYm1pIGPDom4gxJHhu5FpLCBiw6puIGPhuqFuaCDEkcOzIMSR4buRaSB24bubaSB04burbmcgbeG7qWMgY2hpIHBow60gdGjDrCBt4bupYyDEkeG7mSBjaMOqbmggbOG7h2NoIHbhu4Egc+G7kSBsxrDhu6NuZyBi4buHbmggbmjDom4gZ2nhu69hIDIgbmjDs20gY2jhu4kgc+G7kSBibWkgbsOgeSBsw6Aga2jDoSBuaGnhu4F1Lg0KICANCiMjIyBS4bunaSBybyB0xrDGoW5nIMSR4buRaSAoUmlzayByYXRpbykNCmBgYHtyfQ0KZXBpdGFiKGQsIG1ldGhvZCA9ICJyaXNrcmF0aW8iKQ0KYGBgDQogIFRoZW8ga+G6v3QgcXXhuqMgdHLDqm4gdGEgdGjhuqV5IHThu4kgbOG7hyBy4bunaSBybyB0xrDGoW5nIMSR4buRaSAocmlzayByYXRpbykgY+G7p2Egbmjhu69uZyBi4buHbmggbmjDom4gY8OzIGNoaSBwaMOtIHkgdOG6vyBjYW8gdGhlbyBjaOG7iSBz4buRIGto4buRaSAoYm1pKSBjxqEgdGjhu4MgbMOgIDEsMTI0NCB04bupYyBsw6AgdOG7iSBs4buHIG5o4buvbmcgYuG7h25oIG5ow6JuIGPDsyBjaGkgcGjDrSB5IHThur8gY2FvIGPDsyBjaOG7iSBz4buRIGJtaSBraMO0bmcgY8OibiDEkeG7kWkgbOG7m24gaMahbiAxMiw0NCUgc28gduG7m2kgdOG7iSBs4buHIG5o4buvbmcgYuG7h25oIG5ow6JuIGPDsyBjaGkgcGjDrSB5IHThur8gY2FvIGPDsyBjaOG7iSBz4buRIGJtaSBjw6JuIMSR4buRaS4NCiAgDQojIyMgVOG7iSBs4buHIGNow6puaCBs4buHY2ggKG9kZCByYXRpbykNCmBgYHtyfQ0KZXBpdGFiKGQsIG1ldGhvZCA9ICJvZGRzcmF0aW8iKQ0KYGBgDQogIFRoZW8ga+G6v3QgcXXhuqMgdHLDqm4gdGEgdGjhuqV5IHThu4kgbOG7hyBjaMOqbmggKG9kZCByYXRpbykgbMOgIDEsMTcxMiB04bupYyB04buJIGzhu4cgbmjhu69uZyBi4buHbmggbmjDom4gY8OzIGNoaSBwaMOtIHkgdOG6vyBjYW8vbmjhu69uZyBi4buHbmggbmjDom4gY8OzIGNoaSBwaMOtIHkgdOG6vyB0aOG6pXAg4bufIG5ow7NtIG5nxrDhu51pIGPDsyBjaOG7iSBz4buRIGJtaSBraMO0bmcgY8OibiDEkeG7kWkgbOG7m24gaMahbiBraG/huqNuZyAxNywxMiUgc28gduG7m2kgdOG7iSBs4buHIGLhu4duaCBuaMOibiBjw7MgY2hpIHBow60geSB04bq/IGNhby9i4buHbmggbmjDom4gY8OzIGNoaSBwaMOtIHkgdOG6vyB0aOG6pXAg4bufIG5ow7NtIG5nxrDhu51pIGPDsyBjaOG7iSBz4buRIGJtaSBjw6JuIMSR4buRaS4NCiAgDQojIyMgVGjhu5FuZyBrw6ogc3V5IGRp4buFbg0KS2nhu4NtIMSR4buLbmggdMOtbmggxJHhu5ljIGzhuq1wIGNobyAyIGJp4bq/biAoY2hhcmdlcykgdsOgIChibWkpOg0KDQoqUGjGsMahbmcgcGjDoXAgY2hpIGLDrG5oIHBoxrDGoW5nOioNCkdp4bqjIHRodXnhur90IEhvOiAoY2hhcmdlcykgdsOgIChibWkpIMSR4buZYyBs4bqtcA0KYGBge3J9DQpkIDwtIHRhYmxlKGJtaSwgY2hhcmdlcyk7ZA0KYGBgDQpgYGB7cn0NCmNoaXNxLnRlc3QoZCkNCmBgYA0KICBL4bq/dCBxdeG6oyBraeG7g20gxJHhu4tuaCB0csOqbiBjaG8gdGjhuqV5IGdpw6EgdHLhu4sgdOG7m2kgaOG6oW4gUF92YWx1ZSA9IDAsMzczNyA+IDUlIHbDrCB24bqteSBjw7MgY8ahIHPhu58gxJHhu4MgdGjhu6thIG5o4bqtbiBnaeG6oyB0aHV54bq/dCBIbywgbsOzaSBjw6FjaCBraMOhYyBnaeG7r2EgY2hpIHBow60gYuG6o28gaGnhu4NtIHkgdOG6vyAoY2hhcmdlcykgdsOgIGNo4buJIHPhu5Ega2jhu5FpIGPGoSB0aOG7gyAoYm1pKSDEkeG7mWMgbOG6rXAgduG7m2kgbmhhdS4NCiAgDQojIyBUaOG7kW5nIGvDqiBtw7QgdOG6oyBiaeG6v24gcGjhu6UgdGh14buZYzogY2hpIHBow60geSB04bq/IChjaGFyZ2VzKSB24bubaSBiaeG6v24gxJHhu5ljIGzhuq1wOiBz4buRIG5nxrDhu51pIHBo4bulIHRodeG7mWMgKGRlcGVuZGVudCkNCg0KIyMjIE3DoyBob8OhIGJp4bq/biBz4buRIG5nxrDhu51pIHBo4bulIHRodeG7mWMgKGRlcGVuZGVudCkgxJHhu4tuaCB0w61uaCBjw7MgMiBnacOhIHRy4buLDQoNCiAgVuG7m2kgZOG7ryBsaeG7h3UgZ+G7kWMsIGJp4bq/biBz4buRIG5nxrDhu51pIHBo4bulIHRodeG7mWMgKGRlcGVuZGVudCkgbMOgIGJp4bq/biDEkeG7i25oIHTDrW5oIG5o4bqtbiBjw6FjIGdpw6EgdHLhu4sgdOG7qyAwIMSR4bq/biA1IChuZ8aw4budaSkuIE5o4buvbmcgYuG7h25oIG5ow6JuIGNo4buJIGPDsyAwIGhheSAxIG5nxrDhu51pIHBo4bulIHRodeG7mWMgdGjGsOG7nW5nIMSRxrDhu6NjIGNvaSBsw6Agw610IG5nxrDhu51pIHBo4bulIHRodeG7mWMsIG5o4buvbmcgYuG7h25oIG5ow6JuIGPDsyB04burIDIgbmfGsOG7nWkgcGjhu6UgdGh14buZYyB0cuG7nyBsw6puIMSRxrDhu6NjIGNvaSBsw6Agbmhp4buBdSBuZ8aw4budaSBwaOG7pSB0aHXhu5ljIG7Dqm4gdMOhYyBnaeG6oyDEkcOjIMSR4bq3dCBxdXkgxrDhu5tjIHbhu4Egdmnhu4djIG3DoyBob8OhIGJp4bq/biAoZGVwZW5kZW50KSBuaMawIHNhdTogQuG7h25oIG5ow6JuIGPDsyDDrXQgbmfGsOG7nWkgcGjhu6UgdGh14buZYyAow610KTogU+G7kSBuZ8aw4budaSBwaOG7pSB0aHXhu5ljIHThu6sgMCDEkeG6v24gMSBuZ8aw4budaS4gQuG7h25oIG5ow6JuIGPDsyBuaGnhu4F1IG5nxrDhu51pIHBo4bulIHRodeG7mWMgKG5oaeG7gXUpOiBT4buRIG5nxrDhu51pIHBo4bulIHRodeG7mWMgdOG7qyAyIMSR4bq/biA1IG5nxrDhu51pLg0KICANCmBgYHtyfQ0KcCA8LSB0YWJsZShkYXRhJGRlcGVuZGVudCwgY2hhcmdlcyk7IHANCmBgYA0KYGBge3J9DQpmIDwtIGRhdGEuZnJhbWUoZGF0YSRhZ2UsIGRhdGEkc2V4LCBkYXRhJGJtaSwgZGF0YSRkZXBlbmRlbnQsIGRhdGEkc21va2VyLCBkYXRhJHJlZ2lvbiwgZGF0YSRjaGFyZ2VzLCBjaGFyZ2VzLCBhZ2UsIGJtaSkNCmxpYnJhcnkoZHBseXIpDQpkcGQgPC0gZiAlPiUgbXV0YXRlKHBodXRodW9jID0gY2FzZV93aGVuKGRhdGEkZGVwZW5kZW50ID09ICIwIiB+IDEsIGRhdGEkZGVwZW5kZW50ID09IjEiIH4gMSwgZGF0YSRkZXBlbmRlbnQgPT0iMiIgfiA0LCBkYXRhJGRlcGVuZGVudCA9PSIzIiB+IDQsIGRhdGEkZGVwZW5kZW50ID09IjQiIH4gNCwgZGF0YSRkZXBlbmRlbnQgPT0iNSIgfiA0KSkNCmRlcGVuZGVudCA8LSBjdXQoZHBkJHBodXRodW9jLCBicmVha3MgPSBjKDAsMiw1KSwgbGFiZWxzID0gYygiSXQiLCAiTmhpZXUiKSkNCnRhYmxlKGRlcGVuZGVudCkNCmBgYA0KIyMjIELhuqNuZyB04bqnbiBz4buRLCB04bqnbiBzdeG6pXQgdsOgIGJp4buDdSDEkeG7kw0KDQoqQuG6o25nIHThuqduIHPhu5E6Kg0KYGBge3J9DQplIDwtIHRhYmxlKGRlcGVuZGVudCwgY2hhcmdlcyk7IGUNCmBgYA0KKkLhuqNuZyB04bqnbiBzdeG6pXQ6Kg0KYGBge3J9DQplMSA8LSBwcm9wLnRhYmxlKGUpOyBlMQ0KYGBgDQoqUGjDom4gcGjhu5FpIGJpw6puOioNCmBgYHtyfQ0KYWRkbWFyZ2lucyhlKQ0KYGBgDQoqQmnhu4N1IMSR4buTIGPhu5l0IGvhur90IGjhu6NwIDIgYmnhur9uOioNCmBgYHtyfQ0KayA8LSBkYXRhLmZyYW1lKGRhdGEkYWdlLCBkYXRhJHNleCwgZGF0YSRibWksIGRhdGEkZGVwZW5kZW50LCBkYXRhJHNtb2tlciwgZGF0YSRyZWdpb24sIGRhdGEkY2hhcmdlcywgY2hhcmdlcywgYWdlLCBibWksIGRlcGVuZGVudCkNCmsgfD4gZ2dwbG90KGFlcyh4PWRlcGVuZGVudCx5PWFmdGVyX3N0YXQoY291bnQpKSkgKyBnZW9tX2JhcihmaWxsPSJ5ZWxsb3ciKSArIGdlb21fdGV4dChhZXMobGFiZWwgPSBzY2FsZXM6OnBlcmNlbnQoYWZ0ZXJfc3RhdChjb3VudC9zdW0oY291bnQpKSkpLCBzdGF0ID0gImNvdW50IiwgY29sb3IgPSAiZGFya2JsdWUiLCB2anVzdCA9IC0gLjUpICsgZmFjZXRfZ3JpZCguIH5jaGFyZ2VzKSArIGxhYnMoeCA9ICJT4buRIG5nxrDhu51pIHBo4bulIHRodeG7mWMgKGRlcGVuZGVudCkiLHkgPSAiU+G7kSBuZ8aw4budaSIpDQoNCmBgYA0KDQogIFRow7RuZyBxdWEgYuG6o25nIHThuqduIHPhu5EsIHThuqduIHN14bqldCB0csOqbiBj4bunYSAyIGJp4bq/biBDaGkgcGjDrSB5IHThur8gdsOgIHPhu5EgbmfGsOG7nWkgcGjhu6UgdGh14buZYyB0YSB0aOG6pXkgY8OzIDk4MCBuZ8aw4budaSBuaOG6rXAgdmnhu4duIGPDsyBjaGkgcGjDrSB5IHThur8gdGjhuqVwICh04bupYyBkxrDhu5tpIDE1MDAwIFVTRCkgdHJvbmcgxJHDsyBjw7MgdOG7m2kgNjc4IG5nxrDhu51pIGPDsyDDrXQgbmfGsOG7nWkgcGjhu6UgdGh14buZYyAodOG7qWMga2jDtG5nIGPDsyBob+G6t2MgY8OzIDEgbmfGsOG7nWkgcGjhu6UgdGh14buZYyksIGNoaeG6v20gdOG7iSBs4buHIDUwLDY3JSB04buVbmcgc+G7kSBi4buHbmggbmjDom4gdsOgIDMwMiBuZ8aw4budaSBjw7Mgbmhp4buBdSBuZ8aw4budaSBwaOG7pSB0aHXhu5ljICh04bupYyBjw7MgMiwzLDQsNSBuZ8aw4budaSBwaOG7pSB0aHXhu5ljKSwgY2hp4bq/bSB04buJIGzhu4cgMjIsNTclIHThu5VuZyBz4buRIGLhu4duaCBuaMOibiAuIELDqm4gY+G6oW5oIMSRw7MgY8OzIDM1OCBuZ8aw4budaSBjw7MgY2hpIHBow60geSB04bq/IOG7nyBt4bupYyBjYW8gKHRyw6puIDE1MDAwIFVTRCkgdHJvbmcgxJHDsyBjw7MgMjIwIG5nxrDhu51pIGPDsyDDrXQgbmfGsOG7nWkgcGjhu6UgdGh14buZYywgY2hp4bq/bSAxNiw0NCUgdOG7lW5nIHPhu5EgYuG7h25oIG5ow6JuIHbDoCAxMzggbmfGsOG7nWkgY8OzIG5oaeG7gXUgbmfGsOG7nWkgcGjhu6UgdGh14buZYywgY2hp4bq/bSAxMCwzMSUgdOG7lW5nIHPhu5EgYuG7h25oIG5ow6JuLiBUcm9uZyB04buVbmcgc+G7kSBuaOG7r25nIG5nxrDhu51pIG5o4bqtcCB2aeG7h24gdGjDrCB04buJIGzhu4cgbmjhu69uZyBuZ8aw4budaSBjw7Mgw610IG5nxrDhu51pIHBo4bulIHRodeG7mWMgKGtow7RuZyBjw7MgaG/hurdjIGNo4buJIGPDsyAxIG5nxrDhu51pIHBo4bulIHRodeG7mWMpIGfhuqVwIGjGoW4gMiBs4bqnbiBuaOG7r25nIG5nxrDhu51pIGPDsyBuaGnhu4F1IG5nxrDhu51pIHBo4bulIHRodeG7mWMuIFF1YSBiaeG7g3UgxJHhu5MgY8OzIHRo4buDIHRo4bqleSDEkeG7kWkgduG7m2kgbmjhu69uZyBuZ8aw4budaSBuaOG6rXAgdmnhu4duIGPDsyBj4bqjIGNoaSBwaMOtIHRo4bqlcCB2w6AgY2hpIHBow60gY2FvIHRow6wgdOG7tyBs4buHIG5nxrDhu51pIHRodeG7mWMgbmjDs20gY8OzIMOtdCBuZ8aw4budaSBwaOG7pSB0aHXhu5ljIHbhuqtuIG5oaeG7gXUgaMahbiBuaOG7r25nIG5nxrDhu51pIHRodeG7mWMgbmjDs20gY8OzIG5oaeG7gXUgbmfGsOG7nWkgcGjhu6UgdGh14buZYywgYsOqbiBj4bqhbmggxJHDsyDEkeG7kWkgduG7m2kgbeG7qWMgY2hpIHBow60geSB04bq/IHRo4bqlcCB0aMOsIHThu7cgbOG7hyBuaOG7r25nIGLhu4duaCBuaMOibiBjw7Mgw610IG5nxrDhu51pIHBo4bulIHRodeG7mWMgbOG7m24gZ+G6pXAgxJHDtGkgdOG7tyBs4buHIG5o4buvbmcgYuG7h25oIG5ow6JuIGPDsyBuaGnhu4F1IG5nxrDhu51pIHBo4bulIHRodeG7mWMuDQogIA0KIyMjIFLhu6dpIHJvIHTGsMahbmcgxJHhu5FpIChSaXNrIHJhdGlvKQ0KYGBge3J9DQplcGl0YWIoZSwgbWV0aG9kID0gInJpc2tyYXRpbyIpDQpgYGANCiAgVGhlbyBr4bq/dCBxdeG6oyB0csOqbiB0YSB0aOG6pXkgdOG7iSBs4buHIHLhu6dpIHJvIHTGsMahbmcgxJHhu5FpIChyaXNrIHJhdGlvKSBj4bunYSBuaOG7r25nIGLhu4duaCBuaMOibiBjw7MgY2hpIHBow60geSB04bq/IGNhbyB0aGVvIHPhu5EgbmfGsOG7nWkgcGjhu6UgdGh14buZYyAoZGVwZW5kZW50KSBsw6AgMSwyODAyIHThu6ljIGzDoCB04buJIGzhu4cgbmjhu69uZyBi4buHbmggbmjDom4gY8OzIG5oaeG7gXUgbmfGsOG7nWkgcGjhu6UgdGh14buZYyBjw7MgY2hpIHBow60geSB04bq/IGNhbyBs4bubbiBoxqFuIDI4LDAyJSBzbyB24bubaSB04buJIGzhu4cgbmjhu69uZyBi4buHbmggbmjDom4gY8OzIMOtdCBuZ8aw4budaSBwaOG7pSB0aHXhu5ljIG3DoCBjw7MgY2hpIHBow60geSB04bq/IGNhby4NCiAgDQojIyMgVOG7iSBs4buHIGNow6puaCBs4buHY2ggKG9kZCByYXRpbykNCmBgYHtyfQ0KZXBpdGFiKGUsIG1ldGhvZCA9ICJvZGRzcmF0aW8iKQ0KYGBgDQogIFRoZW8ga+G6v3QgcXXhuqMgdHLDqm4gdGEgdGjhuqV5IHThu4kgbOG7hyBjaMOqbmggKG9kZCByYXRpbykgbMOgIDEsNDA4MiB04bupYyB04buJIGzhu4cgbmjhu69uZyBi4buHbmggbmjDom4gY8OzIGNoaSBwaMOtIHkgdOG6vyBjYW8vbmjhu69uZyBi4buHbmggbmjDom4gY8OzIGNoaSBwaMOtIHkgdOG6vyB0aOG6pXAg4bufIG5ow7NtIGLhu4duaCBuaMOibiBjw7Mgbmhp4buBdSBuZ8aw4budaSBwaOG7pSB0aHXhu5ljIGzhu5tuIGjGoW4ga2hv4bqjbmcgNDAsODIlIHNvIHbhu5tpIHThu4kgbOG7hyBuaOG7r25nIGLhu4duaCBuaMOibiBjw7MgY2hpIHBow60geSB04bq/IGNhby9uaOG7r25nIGLhu4duaCBuaMOibiBjw7MgY2hpIHBow60geSB04bq/IHRo4bqlcCDhu58gbmjDs20gYuG7h25oIG5ow6JuIGPDsyDDrXQgbmfGsOG7nWkgcGjhu6UgdGh14buZYy4NCiAgDQojIyMgVGjhu5FuZyBrw6ogc3V5IGRp4buFbg0KDQpLaeG7g20gxJHhu4tuaCB0w61uaCDEkeG7mWMgbOG6rXAgY2hvIDIgYmnhur9uIChjaGFyZ2VzKSB2w6AgKGRlcGVuZGVudCk6DQoNClBoxrDGoW5nIHBow6FwIGNoaSBiw6xuaCBwaMawxqFuZzogR2nhuqMgdGh1eeG6v3QgSG86IChjaGFyZ2VzKSB2w6AgKGRlcGVuZGVudCkgxJHhu5ljIGzhuq1wDQpgYGB7cn0NCmUgPC0gdGFibGUoZGVwZW5kZW50LCBjaGFyZ2VzKTtlDQpgYGANCmBgYHtyfQ0KY2hpc3EudGVzdChlKQ0KYGBgDQogIEvhur90IHF14bqjIGtp4buDbSDEkeG7i25oIHRyw6puIGNobyB0aOG6pXkgZ2nDoSB0cuG7iyB04bubaSBo4bqhbiBQX3ZhbHVlID0gMCwwMDkzNDggPCA1JSB2w6wgduG6rXkgY2jGsGEgY8OzIGPGoSBz4bufIMSR4buDIHRo4burYSBuaOG6rW4gZ2nhuqMgdGh1eeG6v3QgSG8sIG7Ds2kgY8OhY2gga2jDoWMgZ2nhu69hIGNoaSBwaMOtIGLhuqNvIGhp4buDbSB5IHThur8gKGNoYXJnZXMpIHbDoCBz4buRIG5nxrDhu51pIHBo4bulIHRodeG7mWMgKGRlcGVuZGVudCkgY8OzIGxpw6puIHF1YW4gduG7m2kgbmhhdS4NCiAgDQogIA0KIyMgVGjhu5FuZyBrw6ogbcO0IHThuqMgYmnhur9uIHBo4bulIHRodeG7mWM6IGNoaSBwaMOtIHkgdOG6vyAoY2hhcmdlcykgduG7m2kgYmnhur9uIMSR4buZYyBs4bqtcDoga2h1IHbhu7FjIGPGsCB0csO6IChyZWdpb24pDQoNCiMjIyBNw6MgaG/DoSBiaeG6v24ga2h1IHbhu7FjIGPGsCB0csO6IChyZWdpb24pIMSR4buLbmggdMOtbmggY8OzIDIgZ2nDoSB0cuG7iw0KDQogIFbhu5tpIGThu68gbGnhu4d1IGfhu5FjLCBiaeG6v24ga2h1IHbhu7FjIGPGsCB0csO6IChyZWdpb24pIGzDoCBiaeG6v24gxJHhu4tuaCB0w61uaCBuaOG6rW4gNCBnacOhIHRy4buLOiBOb3J0aGVhc3QsIFNvdXRoZWFzdCwgU291dGh3ZXN0LCBOb3J0aHdlc3QuIE5o4buvbmcgYuG7h25oIG5ow6JuIMSR4bq/biB04burIG5o4buvbmcgdsO5bmcga2jDoWMgbmhhdSDhu58gTeG7uSwgY+G7pSB0aOG7gyBoxqFuIGzDoCB04burIMSQw7RuZyBC4bqvYywgxJDDtG5nIE5hbSwgVMOieSBC4bqvYywgVMOieSBOYW0gbsOqbiB0w6FjIGdp4bqjIMSRw6MgxJHhurd0IHF1eSDGsOG7m2MgduG7gSB2aeG7h2MgbcOjIGhvw6EgMiBnacOhIHRy4buLIGJp4bq/biAocmVnaW9uKSBuaMawIHNhdTogQuG7h25oIG5ow6JuIMSR4bq/biB04burIHBow61hIELhuq9jIE3hu7kgKELhuq9jKToga2h1IHbhu7FjIE5vcnRoZWFzdCAoxJDDtG5nIELhuq9jKSB2w6AgTm9ydGh3ZXN0IChUw6J5IELhuq9jKS4gQuG7h25oIG5ow6JuIMSR4bq/biB04burIHBow61hIE5hbSBN4bu5IChOYW0pOiBraHUgduG7sWMgU291dGhlYXN0ICjEkMO0bmcgTmFtKSB2w6AgU291dGh3ZXN0IChUw6J5IE5hbSkuDQpgYGB7cn0NCmcgPC0gdGFibGUoZGF0YSRyZWdpb24sIGNoYXJnZXMpOyBnDQpgYGANCmBgYHtyfQ0KaSA8LSBkYXRhLmZyYW1lKGRhdGEkYWdlLCBkYXRhJHNleCwgZGF0YSRibWksIGRhdGEkZGVwZW5kZW50LCBkYXRhJHNtb2tlciwgZGF0YSRyZWdpb24sIGRhdGEkY2hhcmdlcywgY2hhcmdlcywgYWdlLCBibWksIGRlcGVuZGVudCkNCnJlZ2lvbiA8LSBpICU+JSBtdXRhdGUoa2h1dnVjID0gY2FzZV93aGVuKGRhdGEkcmVnaW9uID09ICJub3J0aGVhc3QiIH4gMSwgZGF0YSRyZWdpb24gPT0ibm9ydGh3ZXN0IiB+IDEsIGRhdGEkcmVnaW9uID09InNvdXRoZWFzdCIgfiA0LCBkYXRhJHJlZ2lvbiA9PSJzb3V0aHdlc3QiIH4gNCkpDQpyZWdpb24gPC0gY3V0KHJlZ2lvbiRraHV2dWMsIGJyZWFrcyA9IGMoMCwyLDUpLCBsYWJlbHMgPSBjKCJC4bqvYyIsICJOYW0iKSkNCnRhYmxlKHJlZ2lvbikNCmBgYA0KIyMjIELhuqNuZyB04bqnbiBz4buRLCB04bqnbiBzdeG6pXQgdsOgIGJp4buDdSDEkeG7kw0KDQoqQuG6o25nIHThuqduIHPhu5E6Kg0KYGBge3J9DQpnIDwtIHRhYmxlKHJlZ2lvbiwgY2hhcmdlcyk7IGcNCmBgYA0KKkLhuqNuZyB04bqnbiBzdeG6pXQ6Kg0KYGBge3J9DQpnMSA8LSBwcm9wLnRhYmxlKGcpOyBnMQ0KYGBgDQoqUGjDom4gcGjhu5FpIGJpw6puOioNCmBgYHtyfQ0KYWRkbWFyZ2lucyhnKQ0KYGBgDQoqQmnhu4N1IMSR4buTIGPhu5l0IGvhur90IGjhu6NwIDIgYmnhur9uOioNCmBgYHtyfQ0KayA8LSBkYXRhLmZyYW1lKGRhdGEkYWdlLCBkYXRhJHNleCwgZGF0YSRibWksIGRhdGEkZGVwZW5kZW50LCBkYXRhJHNtb2tlciwgZGF0YSRyZWdpb24sIGRhdGEkY2hhcmdlcywgY2hhcmdlcywgc2V4LCBhZ2UsIGJtaSwgZGVwZW5kZW50LCByZWdpb24pDQprIHw+IGdncGxvdChhZXMoeD1yZWdpb24seT1hZnRlcl9zdGF0KGNvdW50KSkpICsgZ2VvbV9iYXIoZmlsbD0icHVycGxlIikgKyBnZW9tX3RleHQoYWVzKGxhYmVsID0gc2NhbGVzOjpwZXJjZW50KGFmdGVyX3N0YXQoY291bnQvc3VtKGNvdW50KSkpKSwgc3RhdCA9ICJjb3VudCIsIGNvbG9yID0gImRhcmtncmVlbiIsIHZqdXN0ID0gLSAuNSkgKyBmYWNldF9ncmlkKC4gfmNoYXJnZXMpICsgbGFicyh4ID0gIktodSB24buxYyBjxrAgdHLDuiAocmVnaW9uKSIseSA9ICJT4buRIG5nxrDhu51pIikNCmBgYA0KIA0KICBUaMO0bmcgcXVhIGLhuqNuZyB04bqnbiBz4buRLCB04bqnbiBzdeG6pXQgdHLDqm4gY+G7p2EgMiBiaeG6v24gQ2hpIHBow60geSB04bq/IHbDoCBraHUgduG7sWMgY8awIHRyw7ogdGEgdGjhuqV5IGPDsyA5ODAgbmfGsOG7nWkgbmjhuq1wIHZp4buHbiBjw7MgY2hpIHBow60geSB04bq/IHRo4bqlcCAodOG7qWMgZMaw4bubaSAxNTAwMCBVU0QpIHRyb25nIMSRw7MgY8OzIDQ3OSBuZ8aw4budaSDEkeG6v24gdOG7qyBraHUgduG7sWMgcGjDrWEgQuG6r2MgKGJhbyBn4buTbSDEkMO0bmcgQuG6r2MgdsOgIFTDonkgQuG6r2MpLCBjaGnhur9tIHThu4kgbOG7hyAzNSw4MCUgdOG7lW5nIHPhu5EgYuG7h25oIG5ow6JuIHbDoCA1MDEgbmfGsOG7nWkgxJHhur9uIHThu6sga2h1IHbhu7FjIHBow61hIE5hbSAoYmFvIGfhu5NtIGtodSB24buxYyDEkMO0bmcgTmFtIHbDoCBUw6J5IE5hbSksIGNoaeG6v20gdOG7iSBs4buHIDM3LDQ0JSB04buVbmcgc+G7kSBi4buHbmggbmjDom4gLiBCw6puIGPhuqFuaCDEkcOzIGPDsyAzNTggbmfGsOG7nWkgY8OzIGNoaSBwaMOtIHkgdOG6vyDhu58gbeG7qWMgY2FvICh0csOqbiAxNTAwMCBVU0QpIHRyb25nIMSRw7MgY8OzIDE3MCDEkeG6v24gdOG7qyBraHUgduG7sWMgcGjDrWEgQuG6r2MsIGNoaeG6v20gMTIsNyUgdOG7lW5nIHPhu5EgYuG7h25oIG5ow6JuIHbDoCAxODggbmfGsOG7nWkgxJHhur9uIHThu6sga2h1IHbhu7FjIHBow61hIE5hbSwgY2hp4bq/bSAxNCwwNSUgdOG7lW5nIHPhu5EgYuG7h25oIG5ow6JuLiBUcm9uZyB04buVbmcgc+G7kSBuaOG7r25nIG5nxrDhu51pIG5o4bqtcCB2aeG7h24gc+G7kSBsxrDhu6NuZyBuZ8aw4budaSDEkeG6v24gdOG7qyBraHUgduG7sWMgcGjDrWEgQuG6r2MgKMSQw7RuZyBC4bqvYyB2w6AgVMOieSBC4bqvYykgeOG6pXAgeOG7iSBz4buRIGzGsOG7o25nIG5o4buvbmcgbmfGsOG7nWkgxJHhur9uIHThu6sga2h1IHbhu7FjIHBow61hIE5hbSAoxJDDtG5nIE5hbSB2w6AgVMOieSBOYW0pLiBRdWEgYmnhu4N1IMSR4buTIGPDsyB0aOG7gyB0aOG6pXkgxJHhu5FpIHbhu5tpIG5o4buvbmcgbmfGsOG7nWkgbmjhuq1wIHZp4buHbiBjw7MgY+G6oyBjaGkgcGjDrSB0aOG6pXAgdsOgIGNoaSBwaMOtIGNhbyB0aMOsIHThu7cgbOG7hyBuZ8aw4budaSDEkeG6v24gdOG7qyBraHUgduG7sWMgcGjDrWEgTmFtIHbhuqtuIG5oaeG7gXUgaMahbiB04bu3IGzhu4cgbmjhu69uZyBuZ8aw4budaSDEkeG6v24gdOG7qyBraHUgduG7sWMgcGjDrWEgQuG6r2MsIHR1eSBuaGnDqm4gc+G7sSBjaMOqbmggbOG7h2NoIG7DoHkgbMOgIGtow7RuZyBxdcOhIMSRw6FuZyBr4buDLg0KICANCiMjIyBS4bunaSBybyB0xrDGoW5nIMSR4buRaSAoUmlzayByYXRpbykNCg0KYGBge3J9DQplcGl0YWIoZywgbWV0aG9kID0gInJpc2tyYXRpbyIpDQpgYGANCiAgVGhlbyBr4bq/dCBxdeG6oyB0csOqbiB0YSB0aOG6pXkgdOG7iSBs4buHIHLhu6dpIHJvIHTGsMahbmcgxJHhu5FpIChyaXNrIHJhdGlvKSBj4bunYSBuaOG7r25nIGLhu4duaCBuaMOibiBjw7MgY2hpIHBow60geSB04bq/IGNhbyB0aGVvIGtodSB24buxYyBjxrAgdHLDuiAocmVnaW9uKSBsw6AgMSwwNDE2OCB04bupYyBsw6AgdOG7iSBs4buHIG5o4buvbmcgYuG7h25oIG5ow6JuIMSR4bq/biB04burIGtodSB24buxYyBwaMOtYSBOYW0gY8OzIGNoaSBwaMOtIHkgdOG6vyBjYW8gY2jhu4kgbOG7m24gaMahbiA0LDE3JSBzbyB24bubaSB04buJIGzhu4cgbmjhu69uZyBi4buHbmggbmjDom4gxJHhur9uIHThu6sga2h1IHbhu7FjIHBow61hIELhuq9jIG3DoCBjw7MgY2hpIHBow60geSB04bq/IGNhby4NCiAgDQojIyMgVOG7iSBs4buHIGNow6puaCBs4buHY2ggKG9kZCByYXRpbykNCg0KYGBge3J9DQplcGl0YWIoZywgbWV0aG9kID0gIm9kZHNyYXRpbyIpDQpgYGANCiAgDQogIFRoZW8ga+G6v3QgcXXhuqMgdHLDqm4gdGEgdGjhuqV5IHThu4kgbOG7hyBjaMOqbmggKG9kZCByYXRpbykgbMOgIDEsMDU3MyB04bupYyB04buJIGzhu4cgbmjhu69uZyBi4buHbmggbmjDom4gY8OzIGNoaSBwaMOtIHkgdOG6vyBjYW8vbmjhu69uZyBi4buHbmggbmjDom4gY8OzIGNoaSBwaMOtIHkgdOG6vyB0aOG6pXAg4bufIG5ow7NtIGLhu4duaCBuaMOibiDEkeG6v24gdOG7qyBraHUgduG7sWMgcGjDrWEgTmFtIGNo4buJIGzhu5tuIGjGoW4ga2hv4bqjbmcgNSw3MyUgc28gduG7m2kgdOG7iSBs4buHIG5o4buvbmcgYuG7h25oIG5ow6JuIGPDsyBjaGkgcGjDrSB5IHThur8gY2FvL25o4buvbmcgYuG7h25oIG5ow6JuIGPDsyBjaGkgcGjDrSB5IHThur8gdGjhuqVwIOG7nyBuaMOzbSBi4buHbmggbmjDom4gxJHhur9uIHThu6sga2h1IHbhu7FjIHBow61hIELhuq9jLg0KICANCiMjIyBUaOG7kW5nIGvDqiBzdXkgZGnhu4VuDQoNCktp4buDbSDEkeG7i25oIHTDrW5oIMSR4buZYyBs4bqtcCBjaG8gMiBiaeG6v24gKGNoYXJnZXMpIHbDoCAocmVnaW9uKToNCg0KUGjGsMahbmcgcGjDoXAgY2hpIGLDrG5oIHBoxrDGoW5nOiBHaeG6oyB0aHV54bq/dCBIbzogKGNoYXJnZXMpIHbDoCAocmVnaW9uKSDEkeG7mWMgbOG6rXANCmBgYHtyfQ0KZyA8LSB0YWJsZShyZWdpb24sIGNoYXJnZXMpO2cNCmBgYA0KDQpgYGB7cn0NCmNoaXNxLnRlc3QoZykNCmBgYA0KICBL4bq/dCBxdeG6oyBraeG7g20gxJHhu4tuaCB0csOqbiBjaG8gdGjhuqV5IGdpw6EgdHLhu4sgdOG7m2kgaOG6oW4gUF92YWx1ZSA9IDAsNjk3MiA+IDUlIHbDrCB24bqteSBjw7MgY8ahIHPhu58gxJHhu4MgdGjhu6thIG5o4bqtbiBnaeG6oyB0aHV54bq/dCBIbywgbsOzaSBjw6FjaCBraMOhYyBnaeG7r2EgY2hpIHBow60gYuG6o28gaGnhu4NtIHkgdOG6vyAoY2hhcmdlcykgdsOgIGtodSB24buxYyBjxrAgdHLDuiAocmVnaW9uKSDEkeG7mWMgbOG6rXAgduG7m2kgbmhhdS4NCiAgDQojICxL4bq/dCBxdeG6oyBtw7QgaMOsbmggaOG7k2kgcXV5DQoNCiAgVGjDtG5nIHF1YSBraeG7g20gxJHhu4tuaCB24buBIHTDrW5oIMSR4buZYyBs4bqtcCBj4bunYSBiaeG6v24gcGjhu6UgdGh14buZYyBjaGkgcGjDrSB5IHThur8gKGNoYXJnZXMpIHbhu5tpIGPDoWMgYmnhur9uIMSR4buZYyBs4bqtcCDhu58gbmhp4buHbSB24bulIHRyxrDhu5tjIHRow6wgdMOhYyBnaeG6oyDEkcOjIHThu5VuZyBo4bujcCDEkcaw4bujYyBjw6FjIHnhur91IHThu5EgY8OzIGxpw6puIHF1YW4gxJHhur9uIGNoaSBwaMOtIHkgdOG6vyAoY2hhcmdlcykgYmFvIGfhu5NtIMSR4buZIHR14buVaSAoYWdlKSwgZ2nhu5tpIHTDrW5oIChzZXgpIHbDoCBz4buRIG5nxrDhu51pIHBo4bulIHRodeG7mWMgKGRlcGVuZGVudCkuIFbDrCB24bqteSB0w6FjIGdp4bqjIHPhur0gdGjhu7FjIGhp4buHbiB2aeG7h2MgY2jhuqF5IG3DtCBow6xuaCBo4buTaSBxdXkgY2hvIGThu68gbGnhu4d1IG5o4buLIHBow6JuIGPhu6dhIGJp4bq/biBwaHUgdGh14buZYyAoY2hhcmdlcykgduG7m2kgY8OhYyBiaeG6v24gxJHhu5ljIGzhuq1wIChhZ2UpLCAoc2V4KSB2w6AgKGRlcGVuZGVudCkuDQogIA0KIyMgTcO0IGjDrG5oIGjhu5NpIHF1eSBjaG8gYmnhur9uIHBo4bulIHRodeG7mWM6IENoaSBwaMOtIHkgdOG6vyAoY2hhcmdlcykNCg0KIyMjIE3DtCBow6xuaCBsb2dpdA0KYGBge3J9DQprIDwtIGRhdGEuZnJhbWUoZGF0YSRhZ2UsIGRhdGEkc2V4LCBkYXRhJGJtaSwgZGF0YSRkZXBlbmRlbnQsIGRhdGEkc21va2VyLCBkYXRhJHJlZ2lvbiwgZGF0YSRjaGFyZ2VzLCBjaGFyZ2VzLCBhZ2UsIHNleCwgZGVwZW5kZW50KQ0KbWhsb2dpdDEgPC0gZ2xtKGRhdGEgPSBrLCBmb3JtdWxhID0gZmFjdG9yKGNoYXJnZXMpIH4gYWdlICsgc2V4ICsgZGVwZW5kZW50LCBmYW1pbHkgPSBiaW5vbWlhbChsaW5rID0gImxvZ2l0IikpDQpsZXZlbHMoZmFjdG9yKGNoYXJnZXMpKQ0Kc3VtbWFyeShtaGxvZ2l0MSkNCmBgYA0KICDEkOG7kWkgduG7m2kgbcO0IGjDrG5oIGjhu5NpIHF1eSBsb2dpdCBj4bunYSBiaeG6v24gcGjhu6UgdGh14buZYyBjaGkgcGjDrSB5IHThur8gKGNoYXJnZXMpIHbhu5tpIGPDoWMgYmnhur9uIMSR4buZIHR14buVaSAoYWdlKSwgZ2nhu5tpIHTDrW5oIChzZXgpIHbDoCBz4buRIG5nxrDhu51pIHBo4bulIHRodeG7mWMgKGRlcGVuZGVudCkgdGEgdGjhuqV5IHLhurFuZyBjw7MgMiB54bq/dSB04buRIGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6og4bufIG3hu6ljIMO9IG5naMSpYSA1JSDEkcOzIGzDoCBnaeG7m2kgdMOtbmggKHNleCkgdsOgIG5nxrDhu51pIHBo4bulIHRodeG7mWMgKGRlcGVuZGVudCksIHnhur91IHThu5EgxJHhu5kgdHXhu5VpIChhZ2UpIGtow7RuZyBjw7Mgw70gbmdoxKlhIHRo4buRbmcga8OqLiBCw6puIGPhuqFuaCDEkcOzIGNoaeG7gXUgaMaw4bubbmcgdMOhYyDEkeG7mW5nIGPhu6dhIDIgeeG6v3Ugc+G7kSAoc2V4KSB2w6AgKGRlcGVuZGVudCkgdOG7m2kgKGNoYXJnZXMpIGzDoCBjw7luZyBoxrDhu5tuZywgaOG7hyBz4buRIGjhu5NpIHF1eSBtYW5nIGThuqV1ICgrKS4NCiAgDQogIE3DoCBtw7QgaMOsbmggaOG7k2kgcXV5IGxvZ2lzdGljIHbhu5tpIGxpbmsgZnVuY3Rpb249ImxvZ2l0IiBjw7MgZOG6oW5nIHThu5VuZyBxdcOhdCBuaMawIHNhdToNCiAgDQogIGxvZ2l0KM+AKT1sb2coz4AvMeKIks+AKT0gzrIwICsgzrIxWDEgKyDOsjJYMiAr4ouvKyDOsmtYaw0KICANCiAgVuG6rXkgbsOqbiBtw7QgaMOsbmggMSDEkcaw4bujYyB4w6FjIMSR4buLbmggbmjGsCBzYXU6DQogIA0KICBNSGxvZ2l0MTogIGxvZ2l0KM+AKSA9IGxvZyjPgC8x4oiSz4ApID0gLTEsMzI0MSArIDAsMjc4MnNleCArIDAsMzMxOWRlcGVuZGVudA0KICANCiAgduG7m2kgz4AgPSBQKGNoYXJnZXMgPSAiQ2FvIiBob+G6t2MgIlRo4bqlcCIpDQogIA0KIyMjIE3DtCBow6xuaCBwcm9iaXQNCg0KYGBge3J9DQptaHByb2JpdDEgPC0gZ2xtKGRhdGEgPSBrLCBmb3JtdWxhID0gZmFjdG9yKGNoYXJnZXMpIH4gYWdlICsgc2V4ICsgZGVwZW5kZW50LCBmYW1pbHkgPSBiaW5vbWlhbChsaW5rID0gInByb2JpdCIpKQ0KbGV2ZWxzKGZhY3RvcihjaGFyZ2VzKSkNCnN1bW1hcnkobWhwcm9iaXQxKQ0KYGBgDQogxJDhu5FpIHbhu5tpIG3DtCBow6xuaCBo4buTaSBxdXkgcHJvYml0IGPhu6dhIGJp4bq/biBwaOG7pSB0aHXhu5ljIGNoaSBwaMOtIHkgdOG6vyAoY2hhcmdlcykgduG7m2kgY8OhYyBiaeG6v24gxJHhu5kgdHXhu5VpIChhZ2UpLCBnaeG7m2kgdMOtbmggKHNleCkgdsOgIHPhu5EgbmfGsOG7nWkgcGjhu6UgdGh14buZYyAoZGVwZW5kZW50KSB0YSB0aOG6pXkgcuG6sW5nIGPDsyAyIHnhur91IHThu5EgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqiDhu58gbeG7qWMgw70gbmdoxKlhIDUlIMSRw7MgbMOgIGdp4bubaSB0w61uaCAoc2V4KSB2w6AgbmfGsOG7nWkgcGjhu6UgdGh14buZYyAoZGVwZW5kZW50KSwgeeG6v3UgdOG7kSDEkeG7mSB0deG7lWkgKGFnZSkga2jDtG5nIGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ouIELDqm4gY+G6oW5oIMSRw7MgY2hp4buBdSBoxrDhu5tuZyB0w6FjIMSR4buZbmcgY+G7p2EgMiB54bq/dSBz4buRIChzZXgpIHbDoCAoZGVwZW5kZW50KSB04bubaSAoY2hhcmdlcykgbMOgIGPDuW5nIGjGsOG7m25nLCBo4buHIHPhu5EgaOG7k2kgcXV5IG1hbmcgZOG6pXUgKCspLg0KICANCiAgTcOgIG3DtCBow6xuaCBo4buTaSBxdXkgbG9naXN0aWMgduG7m2kgbGluayBmdW5jdGlvbj0icHJvYml0IiBjw7MgZOG6oW5nIHThu5VuZyBxdcOhdCBuaMawIHNhdToNCiAgDQogIHByb2JpdCjPgCkgPSDOpiDiiJIgMSjPgCkgPSDOsjAgKyDOsjFYMSArIM6yMlgyICvii68rIM6ya1hrDQogIA0KICBW4bqteSBuw6puIG3DtCBow6xuaCBwcm9iaXQgMSDEkcaw4bujYyB4w6FjIMSR4buLbmggbmjGsCBzYXU6DQogIA0KICBNSHByb2JpdDE6ICBwcm9iaXQoz4ApID0gzqYg4oiSIDEoz4ApID0gLTAsODA3NSArIDAsMTY0OXNleCArIDAsMTk4NmRlcGVuZGVudA0KICANCiAgduG7m2kgz4AgPSBQKGNoYXJnZXMgPSAiQ2FvIiBob+G6t2MgIlRo4bqlcCIpDQogIA0KIyMjIE3DtCBow6xuaCBjbG9nbG9nDQoNCmBgYHtyfQ0KbWhjbG9nbG9nMSA8LSBnbG0oZGF0YSA9IGssIGZvcm11bGEgPSBmYWN0b3IoY2hhcmdlcykgfiBhZ2UgKyBzZXggKyBkZXBlbmRlbnQsIGZhbWlseSA9IGJpbm9taWFsKGxpbmsgPSAiY2xvZ2xvZyIpKQ0Kc3VtbWFyeShtaGNsb2dsb2cxKQ0KYGBgDQogIMSQ4buRaSB24bubaSBtw7QgaMOsbmggaOG7k2kgcXV5IGNsb2dsb2cgY+G7p2EgYmnhur9uIHBo4bulIHRodeG7mWMgY2hpIHBow60geSB04bq/IChjaGFyZ2VzKSB24bubaSBjw6FjIGJp4bq/biDEkeG7mSB0deG7lWkgKGFnZSksIGdp4bubaSB0w61uaCAoc2V4KSB2w6Agc+G7kSBuZ8aw4budaSBwaOG7pSB0aHXhu5ljIChkZXBlbmRlbnQpIHRhIHRo4bqleSBy4bqxbmcgY8OzIDIgeeG6v3UgdOG7kSBjw7Mgw70gbmdoxKlhIHRo4buRbmcga8OqIOG7nyBt4bupYyDDvSBuZ2jEqWEgNSUgxJHDsyBsw6AgZ2nhu5tpIHTDrW5oIChzZXgpIHbDoCBuZ8aw4budaSBwaOG7pSB0aHXhu5ljIChkZXBlbmRlbnQpLCB54bq/dSB04buRIMSR4buZIHR14buVaSAoYWdlKSBraMO0bmcgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqi4gQsOqbiBj4bqhbmggxJHDsyBjaGnhu4F1IGjGsOG7m25nIHTDoWMgxJHhu5luZyBj4bunYSAyIHnhur91IHPhu5EgKHNleCkgdsOgIChkZXBlbmRlbnQpIHThu5tpIChjaGFyZ2VzKSBsw6AgY8O5bmcgaMaw4bubbmcsIGjhu4cgc+G7kSBo4buTaSBxdXkgbWFuZyBk4bqldSAoKykuDQogIA0KICBNw6AgbcO0IGjDrG5oIGjhu5NpIHF1eSBsb2dpc3RpYyB24bubaSBsaW5rIGZ1bmN0aW9uPSJjbG9nbG9nIiBjw7MgZOG6oW5nIHThu5VuZyBxdcOhdCBuaMawIHNhdToNCiAgDQogIGNsb2dsb2coz4ApID0gbG9nKOKIkmxvZygx4oiSz4ApKSA9IM6yMCArIM6yMVgxICsgzrIyWDIgKyDii68gKyDOsmtYaw0KICANCiAgVuG6rXkgbsOqbiBtw7QgaMOsbmggY2xvZ2xvZyAxIMSRxrDhu6NjIHjDoWMgxJHhu4tuaCBuaMawIHNhdToNCiAgDQogIE1IY2xvZ2xvZzE6ICBjbG9nbG9nKM+AKSA9IGxvZyjiiJJsb2coMeKIks+AKSkgPSAtMSw0NDEwICsgMCwyMzk2c2V4ICsgMCwyODQ0ZGVwZW5kZW50DQogIA0KICB24bubaSDPgCA9IFAoY2hhcmdlcyA9ICJDYW8iIGhv4bq3YyAiVGjhuqVwIikNCiAgDQojIyBM4buxYSBjaOG7jW4gbcO0IGjDrG5oIGjhu5NpIHF1eSBwaMO5IGjhu6NwIA0KDQojIyMgQUlDIC0gQWthaWtlIEluZm9ybWF0aW9uIENyaXRlcmlvbg0KDQogIEFJQyDEkcaw4bujYyDEkeG7gSB4deG6pXQgYuG7n2kgQWthaWtlIEhpcm90dWd1LCBt4buZdCBuaMOgIHRo4buRbmcga8OqIGjhu41jIG5nxrDhu51pIE5o4bqtdC4gQUlDIGzDoCBt4buZdCB0acOqdSBjaMOtIMSRxrDhu6NjIHPhu60gZOG7pW5nIG3hu5l0IGPDoWNoIHBo4buVIGJp4bq/biDEkeG7gyDEkcOhbmggZ2nDoSBt4buZdCBtw7QgaMOsbmggaOG7k2kgcXV5IMSRxrDhu6NjIMaw4bubYyBsxrDhu6NuZyBi4bufaSBwaMawxqFuZyBwaMOhcCBNYXhpbXVtIExpa2VraWhvb2QgKE1MKS4gTeG7mXQgY8OhY2ggY2h1bmcgY2h1bmcgZ2nDoSB0cuG7iyBj4bunYSBBSUMgY8Ogbmcgbmjhu48gdGjDrCBtw7QgaMOsbmggY8OgbmcgdOG7kXQuIEFJQyDEkcaw4bujYyB0w61uaCBi4bqxbmcgY8O0bmcgdGjhu6ljIHNhdToNCiAgICAgICAgICAgICRBSUMgPSDiiJIybG4oTCkgKyAyayQNCg0KICBW4bubaSBMIGzDoCBnacOhIHRy4buLIGPhu7FjIMSR4bqhaSBj4bunYSBow6BtIGjhu6NwIGzDvSAobGlrZWxpaG9vZCBmdW5jdGlvbikgdsOgIGtsw6Agc+G7kSB0aGFtIHPhu5EgY+G7p2EgbcO0IGjDrG5oLg0KICANCmBgYHtyfQ0KQUlDKG1obG9naXQxKQ0KYGBgDQpgYGB7cn0NCkFJQyhtaHByb2JpdDEpDQpgYGANCmBgYHtyfQ0KQUlDKG1oY2xvZ2xvZzEpDQpgYGANCiAgVOG7qyBjaOG7iSBz4buRIEFJQyBj4bunYSAzIG3DtCBow6xuaCB0csOqbiBjw7MgdGjhu4MgdGjhuqV5IEFJQyDhu58gY8OhYyBtw7QgaMOsbmgga2jDoSB44bqlcCB44buJIG5oYXUgbmjGsG5nIOG7nyBtw7QgaMOsbmggY2xvZ2xvZyBs4bqhaSBjw7MgQUlDIHRo4bqlcCBuaOG6pXQgKDE1NDcsODg1KS4gVuG6rXkgxJHhu5FpIHbhu5tpIHRpw6p1IGNow60gxJHDoW5oIGdpw6EgQUlDIHRow6wgbcO0IGjDrG5oIGNsb2dsb2cgKG1oY2xvZ2xvZzEpIGzDoCBwaMO5IGjhu6NwIG5o4bqldCDEkeG7gyB4ZW0geMOpdCB0w6FjIMSR4buZbmcgY+G7p2EgY8OhYyB54bq/dSB04buRIGdp4bubaSB0w61uaCAmIHPhu5EgbmfGsOG7nWkgcGjhu6UgdGh14buZYyB04bubaSBjaGkgcGjDrSB5IHThur8uDQogIA0KIyMjIERldmlhbmNlDQoNCiAgRGV2aWFuY2UgY8WpbmcgbMOgIG3hu5l0IHRpw6p1IGNow60gcuG6pXQgcGjhu5UgYmnhur9uIMSRxrDhu6NjIHPhu60gZOG7pW5nIMSR4buDIMSRw6FuaCBnacOhIG3hu5l0IG3DtCBow6xuaCBo4buTaSBxdXkgxJHGsOG7o2MgxrDhu5tjIGzGsOG7o25nIGLhu59pIHBoxrDGoW5nIHBow6FwIEjhu6NwIGzDvSBj4buxYyDEkeG6oWkgKE1MKS4gTeG7mXQgY8OhY2ggdOG7lW5nIHF1w6EsIGPFqW5nIGdp4buRbmcgbmjGsCBjaOG7iSB0acOqdSBBSUMsIGdpw6EgdHLhu4sgY+G7p2EgRGV2aWFuY2UgY8Ogbmcgbmjhu48gdGjDrCBtw7QgaMOsbmggY8OgbmcgdOG7kXQuDQogIA0KYGBge3J9DQpkZXZpYW5jZShtaGxvZ2l0MSkNCmBgYA0KYGBge3J9DQpkZXZpYW5jZShtaHByb2JpdDEpDQpgYGANCmBgYHtyfQ0KZGV2aWFuY2UobWhjbG9nbG9nMSkNCmBgYA0KICBU4burIGNo4buJIHPhu5EgRGV2aWFuY2UgY+G7p2EgMyBtw7QgaMOsbmggdHLDqm4gY8OzIHRo4buDIHRo4bqleSBEZXZpYW5jZSDhu58gY8OhYyBtw7QgaMOsbmgga2jDoSB44bqlcCB44buJIG5oYXUgbmjGsG5nIOG7nyBtw7QgaMOsbmggY2xvZ2xvZyAxIGzhuqFpIGPDsyBEZXZpYW5jZSB0aOG6pXAgbmjhuqV0ICgxNTM5LDg4NSkuIFbhuq15IMSR4buRaSB24bubaSB0acOqdSBjaMOtIMSRw6FuaCBnacOhIERldmlhbmNlIHRow6wgbcO0IGjDrG5oIGNsb2dsb2cgKG1oY2xvZ2xvZzEpIGzDoCBwaMO5IGjhu6NwIG5o4bqldCDEkeG7gyB4ZW0geMOpdCB0w6FjIMSR4buZbmcgY+G7p2EgY8OhYyB54bq/dSB04buRIGdp4bubaSB0w61uaCAoc2V4KSAmIHPhu5EgbmfGsOG7nWkgcGjhu6UgdGh14buZYyAoZGV2aWFuY2UpIHThu5tpIGNoaSBwaMOtIHkgdOG6vyAoY2hhcmdlcykuDQoNCiMjIyBCcmllciBTY29yZQ0KDQpMw6AgY2jhu4kgdGnDqnUgZMO5bmcgxJHhu4MgxJHDoW5oIGdpw6EgbcO0IGjDrG5oIGjhu5NpIHF1eSBsb2dpc3RpYywgQnJpZXIgU2NvcmUgxJHGsOG7o2MgdMOtbmggbmjGsCBzYXU6DQogICAgICAgICRCID0gMS9uICog4oiRaT0xbihwaeKIkm9pKSQNCg0KVHJvbmcgxJHDszogcGksb2kgbOG6p24gbMaw4bujdCBsw6AgZ2nDoSB0cuG7iyB4w6FjIHN14bqldCBxdWFuIHPDoXQgxJHGsOG7o2MsIHbDoCBnacOhIHRy4buLIHjDoWMgc3XhuqV0IHTDrW5oIHJhIHThu6sgbcO0IGjDrG5oLg0KDQpHacOhIHRy4buLIGPhu6dhIEJyaWVyIFNjb3JlIGPDoG5nIG5o4buPIG5naMSpYSBsw6AgY2jDqm5oIGzhu4djaCBnaeG7r2EgeMOhYyBzdeG6pXQgdGjhu7FjIHThur8gdsOgIHjDoWMgc3XhuqV0IHTDrW5oIHThu6sgbcO0IGjDrG5oIGPDoG5nIG5o4buPLCBuZ2jEqWEgbMOgIG3DtCBow6xuaCBjw6BuZyB04buRdC4NCg0KYGBge3J9DQpsaWJyYXJ5KERlc2NUb29scykNCkJyaWVyU2NvcmUobWhsb2dpdDEpDQpgYGANCmBgYHtyfQ0KQnJpZXJTY29yZShtaHByb2JpdDEpDQpgYGANCg0KYGBge3J9DQpCcmllclNjb3JlKG1oY2xvZ2xvZzEpDQpgYGANCiAgxJDhu5FpIHbhu5tpIHRpw6p1IGNow60gxJHDoW5oIGdpw6EgQnJpZXJTY29yZSB0aMOsIG3DtCBow6xuaCBo4buTaSBxdXkgY2xvZ2xvZyAxIGzDoCBwaMO5IGjhu6NwIG5o4bqldCB2w6wgY2hvIHJhIGvhur90IHF14bqjIG5o4buPIG5o4bqldCAoMCwxOTM3OSkgdOG7qWMgY2jDqm5oIGzhu4djaCB4w6FjIHN14bqldCB0aOG7sWMgdOG6vyB2w6AgeMOhYyBzdeG6pXQgdMOtbmggdOG7qyBtw7QgaMOsbmggY2xvZ2xvZyBsw6AgYsOpIGjGoW4gc28gduG7m2kgMiBtw7QgaMOsbmggaOG7k2kgcXV5IGxvZ2l0IHbDoCBwcm9iaXQgcGjDrWEgdHLDqm4uDQogIA0KVGjDtG5nIHF1YSBjw6FjIHRpw6p1IGNow60gxJHDoW5oIGdpw6EgbcO0IGjDrG5oIEFJQywgRGV2aWFuY2UsIEJyaWVyU2NvcmUgdGjDrCBtw7QgaMOsbmggcGjDuSBo4bujcCBuaOG6pXQgxJHhu4MgeGVtIHjDqXQgdMOhYyDEkeG7mW5nIGPhu6dhIGPDoWMgeeG6v3UgdOG7kSBnaeG7m2kgdMOtbmggKHNleCkgJiBz4buRIG5nxrDhu51pIHBo4bulIHRodeG7mWMgKGRldmlhbmNlKSB04bubaSBjaGkgcGjDrSB5IHThur8gKGNoYXJnZXMpIGzDoCBtw7QgaMOsbmggaOG7k2kgcXV5IGNsb2dsb2cuDQoNCg0KICANCg==