PHẦN 2
THỐNG KÊ MÔ TẢ CÁC BIẾN Supermarket
Transactions
Gender
a <- read.csv(file = 'C:/Users/ADMIN/Downloads/Tkmt.csv', header = T) # load data
thong_ke_dinh_tinh <- function(data, var_name) {
# Check if variable exists in data
if (!var_name %in% names(data)) {
stop("Variable does not exist in data")
}
# Convert to factor if needed
variable <- as.factor(data[[var_name]])
# freq
freq <- table(variable)
percent <- prop.table(freq) * 100
# result
result <- data.frame(
Gia_tri = names(freq),
Tan_so = as.vector(freq),
Tan_suat = round(as.vector(percent), 2)
)
return(result)
}
library(ggplot2)
library(dplyr)
# Tạo bảng đếm số lượng theo giới tính
gender_count <- a %>%
count(Gender) %>%
mutate(perc = n / sum(n),
label = paste0(Gender, " (", round(perc * 100), "%)"))
# Vẽ biểu đồ tròn
ggplot(gender_count, aes(x = "", y = n, fill = Gender)) +
geom_col(width = 1) +
coord_polar(theta = "y") +
geom_text(aes(label = label), position = position_stack(vjust = 0.5)) +
labs(title = "Tỷ lệ giới tính khách hàng") +
theme_void()
Phân bố giới tính khá cân bằng, chỉ chênh lệch nhẹ giữa nữ (F) và nam
(M).
Điều này cho thấy dữ liệu có tính đại diện giới tương đối tốt, tránh
được thiên lệch giới tính.
MaritalStatus
thong_ke_dinh_tinh(a,'MaritalStatus')
## Gia_tri Tan_so Tan_suat
## 1 M 6866 48.84
## 2 S 7193 51.16
Gần một nửa khách hàng là độc thân, còn lại là đã kết hôn.
Tỷ lệ này cũng tương đối cân bằng, giúp so sánh hành vi theo tình
trạng hôn nhân mà không lo thiên lệch dữ liệu.
ggplot(data = a, aes(x = "", fill = MaritalStatus)) +
geom_bar(width = 1) +
coord_polar("y") +
labs(title = "Tỷ lệ độc thân") +
theme_void()

Homeowner
thong_ke_dinh_tinh(a, 'Homeowner')
## Gia_tri Tan_so Tan_suat
## 1 N 5615 39.94
## 2 Y 8444 60.06
Phần lớn khách hàng là người sở hữu nhà (chiếm ~60%).
Điều này có thể ảnh hưởng đến thói quen chi tiêu hoặc ưu tiên mua
sắm, là một đặc điểm quan trọng để phân khúc khách hàng.
ggplot(data = a, aes(x = Homeowner)) +
geom_bar(fill = "#AEE0AF") +
geom_text(stat = "count", aes(label = ..count..), vjust = -0.5) +
labs(title = "Sở hữu nhà",
x = "Có hoặc không", y = "Tần số") +
theme_minimal()
## Warning: The dot-dot notation (`..count..`) was deprecated in ggplot2 3.4.0.
## ℹ Please use `after_stat(count)` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

Children
Children chỉ số con mà khách hàng có, biến này là 1
biến định lượng vì các giá trị của nó có thể so sánh với nhau.
library(skimr)
skim(a$Children)
Data summary
| Name |
a$Children |
| Number of rows |
14059 |
| Number of columns |
1 |
| _______________________ |
|
| Column type frequency: |
|
| numeric |
1 |
| ________________________ |
|
| Group variables |
None |
Variable type: numeric
| data |
0 |
1 |
2.53 |
1.49 |
0 |
1 |
3 |
4 |
5 |
▇▆▆▆▃ |
Trung bình 2.53 và trung vị 3 cho thấy dữ liệu có xu hướng phân bố
đều.
Không có dấu hiệu lệch nghiêm trọng hoặc có giá trị ngoại lệ bất
thường.
ggplot(a, aes(x = as.factor(Children))) +
geom_bar(fill = "lightblue") +
geom_text(stat = "count", aes(label = ..count..), vjust = -0.5) +
labs(x = "Số con", y = "Số khách hàng", title = "Phân bố số con của khách hàng")

AnnualIncome
thong_ke_dinh_tinh(a, 'AnnualIncome')
## Gia_tri Tan_so Tan_suat
## 1 $10K - $30K 3090 21.98
## 2 $110K - $130K 643 4.57
## 3 $130K - $150K 760 5.41
## 4 $150K + 273 1.94
## 5 $30K - $50K 4601 32.73
## 6 $50K - $70K 2370 16.86
## 7 $70K - $90K 1709 12.16
## 8 $90K - $110K 613 4.36
$30K - $50K chiếm hơn 1/3 (32.73%) tổng số quan sát → là nhóm đông
nhất. Kết hợp với $10K - $30K, ta có khoảng 55% người thuộc nhóm dưới
$50K cho thấy mức thu nhập trung bình hoặc thấp là phổ biến.
Nhóm thu nhập cao (trên $90K) Gồm $90K - $110K, $110K - $130K, $130K
- $150K, $150K+. Tổng tần suất chỉ khoảng 16.28% cho thấy nhóm thu nhập
cao khá nhỏ.
ggplot(a, aes(x = AnnualIncome)) +
geom_bar(fill = "lightblue", color = "purple") +
labs(x = "Khoảng thu nhập", y = "Tần suất", title = "Biểu đồ tần suất thu nhập hàng năm") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))

City
thong_ke_dinh_tinh(a,'City')
## Gia_tri Tan_so Tan_suat
## 1 Acapulco 383 2.72
## 2 Bellingham 143 1.02
## 3 Beverly Hills 811 5.77
## 4 Bremerton 834 5.93
## 5 Camacho 452 3.22
## 6 Guadalajara 75 0.53
## 7 Hidalgo 845 6.01
## 8 Los Angeles 926 6.59
## 9 Merida 654 4.65
## 10 Mexico City 194 1.38
## 11 Orizaba 464 3.30
## 12 Portland 876 6.23
## 13 Salem 1386 9.86
## 14 San Andres 621 4.42
## 15 San Diego 866 6.16
## 16 San Francisco 130 0.92
## 17 Seattle 922 6.56
## 18 Spokane 875 6.22
## 19 Tacoma 1257 8.94
## 20 Vancouver 633 4.50
## 21 Victoria 176 1.25
## 22 Walla Walla 160 1.14
## 23 Yakima 376 2.67
Salem có tần số cao nhất (1386 lần xuất hiện, chiếm 9.86). Tiếp theo
là Tacoma (1257 lần, 8.94%).
Guadalajara có tần số thấp nhất (75 lần, chỉ 0.53%).
Nhìn chung, số lượng khách hàng ở các thành phố phân bố khá chênh
lệch, điều này có thể dẫn đến những kết quả thiên lệch trong việc phân
tích và so sánh giữa các thành phố.
ggplot(a, aes(x = City)) +
geom_bar(fill = "lightblue", color = "black") +
labs(x = "Thành phố", y = "Tần số", title = "Biểu đồ tần số khách hàng ở các thành phố") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))

StateorProvince
thong_ke_dinh_tinh(a,'StateorProvince')
## Gia_tri Tan_so Tan_suat
## 1 BC 809 5.75
## 2 CA 2733 19.44
## 3 DF 815 5.80
## 4 Guerrero 383 2.72
## 5 Jalisco 75 0.53
## 6 OR 2262 16.09
## 7 Veracruz 464 3.30
## 8 WA 4567 32.48
## 9 Yucatan 654 4.65
## 10 Zacatecas 1297 9.23
WA (Washington) chiếm tỷ lệ áp đảo (32.48%, 4567 lần xuất hiện), CA
(California) đứng thứ hai (19.44%, 2733 lần), OR (Oregon) đứng thứ ba
(16.09%, 2262 lần). => Ba bang này thuộc Tây Bắc Thái Bình Dương của
Hoa Kỳ chiếm tổng cộng 68.01% dữ liệu
Các tỉnh Mexico (DF, Guerrero, Jalisco, Veracruz, Yucatan, Zacatecas)
có tần suất thấp hơn nhiều. Tổng cộng các tỉnh Mexico chỉ chiếm khoảng
26.23% dữ liệu
Kết quả này cho thấy sự tập trung địa lý rõ rệt trong tập dữ liệu,
với phần lớn dữ liệu đến từ ba bang phía Tây Bắc Hoa Kỳ.
ggplot(a, aes(x = StateorProvince)) +
geom_bar(fill = "#FFC", color = "yellow") +
labs(x = "Bang", y = "Tần số", title = "Biểu đồ tần số khách hàng ở các bang") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))

Country
thong_ke_dinh_tinh(a,'Country')
## Gia_tri Tan_so Tan_suat
## 1 Canada 809 5.75
## 2 Mexico 3688 26.23
## 3 USA 9562 68.01
Dữ liệu cho thấy sự phân bố không đồng đều giữa các quốc gia, với Hoa
Kỳ (USA) chiếm tỷ lệ áp đảo (68.01%, 9.562 lần xuất hiện), tiếp theo là
Mexico (26.23%, 3.688 lần) và Canada (5.75%, 809 lần). Điều này cho thấy
tập dữ liệu chủ yếu tập trung vào thị trường Mỹ, có thể do dữ liệu được
thu thập từ nguồn ưu tiên các giao dịch hoặc sự kiện tại Hoa Kỳ.
ggplot(a, aes(x = Country)) +
geom_bar(fill = "#0CC", color = "red") +
labs(x = "Quốc gia", y = "Tần số", title = "Biểu đồ tần số khách hàng ở các quốc gia") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))

ProductFamily
thong_ke_dinh_tinh(a,'ProductFamily')
## Gia_tri Tan_so Tan_suat
## 1 Drink 1250 8.89
## 2 Food 10153 72.22
## 3 Non-Consumable 2656 18.89
Dữ liệu cho thấy sản phẩm thực phẩm (Food) chiếm tỷ lệ áp đảo
(72.22%, 10.153 lần xuất hiện), trong khi nhóm đồ uống (Drink) chỉ chiếm
8.89% và sản phẩm không tiêu dùng (Non-Consumable) chiếm 18.89%. Sự
chênh lệch rõ rệt này (Food gấp 8 lần Drink và gần 4 lần Non-Consumable)
phản ánh trọng tâm của tập dữ liệu chủ yếu tập trung vào các sản phẩm
thực phẩm.
ggplot(a, aes(x = ProductFamily)) +
geom_bar(fill = "purple", color = "black") +
labs(x = "Sản phẩm", y = "Tần số", title = "Phân khúc sản phẩm khách hàng mua")

theme(axis.text.x = element_text(angle = 45, hjust = 1))
## List of 1
## $ axis.text.x:List of 11
## ..$ family : NULL
## ..$ face : NULL
## ..$ colour : NULL
## ..$ size : NULL
## ..$ hjust : num 1
## ..$ vjust : NULL
## ..$ angle : num 45
## ..$ lineheight : NULL
## ..$ margin : NULL
## ..$ debug : NULL
## ..$ inherit.blank: logi FALSE
## ..- attr(*, "class")= chr [1:2] "element_text" "element"
## - attr(*, "class")= chr [1:2] "theme" "gg"
## - attr(*, "complete")= logi FALSE
## - attr(*, "validate")= logi TRUE
ProductDepartment
thong_ke_dinh_tinh(a,'ProductDepartment')
## Gia_tri Tan_so Tan_suat
## 1 Alcoholic Beverages 356 2.53
## 2 Baked Goods 425 3.02
## 3 Baking Goods 1072 7.63
## 4 Beverages 680 4.84
## 5 Breakfast Foods 188 1.34
## 6 Canned Foods 977 6.95
## 7 Canned Products 109 0.78
## 8 Carousel 59 0.42
## 9 Checkout 82 0.58
## 10 Dairy 903 6.42
## 11 Deli 699 4.97
## 12 Eggs 198 1.41
## 13 Frozen Foods 1382 9.83
## 14 Health and Hygiene 893 6.35
## 15 Household 1420 10.10
## 16 Meat 89 0.63
## 17 Periodicals 202 1.44
## 18 Produce 1994 14.18
## 19 Seafood 102 0.73
## 20 Snack Foods 1600 11.38
## 21 Snacks 352 2.50
## 22 Starchy Foods 277 1.97
Tập trung vào thực phẩm tươi và đồ gia dụng: Hai nhóm Produce và
Household chiếm tổng cộng gần 25% dữ liệu, cho thấy đây có thể là các
mặt hàng chủ lực.
Sự thiếu cân đối rõ rệt: Trong khi một số nhóm như Produce chiếm tới
14.18% thì nhiều nhóm khác như Meat, Seafood lại chiếm chưa tới 1%.
ggplot(a, aes(x = ProductDepartment)) +
geom_bar(fill = "#11aa77", color = "blue") +
labs(x = "Sản phẩm", y = "Tần số", title = "Bộ phận sản phẩm khách hàng mua") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))

ProductCategory
thong_ke_dinh_tinh(a,'ProductCategory')
## Gia_tri Tan_so Tan_suat
## 1 Baking Goods 484 3.44
## 2 Bathroom Products 365 2.60
## 3 Beer and Wine 356 2.53
## 4 Bread 425 3.02
## 5 Breakfast Foods 417 2.97
## 6 Candles 45 0.32
## 7 Candy 352 2.50
## 8 Canned Anchovies 44 0.31
## 9 Canned Clams 53 0.38
## 10 Canned Oysters 35 0.25
## 11 Canned Sardines 40 0.28
## 12 Canned Shrimp 38 0.27
## 13 Canned Soup 404 2.87
## 14 Canned Tuna 87 0.62
## 15 Carbonated Beverages 154 1.10
## 16 Cleaning Supplies 189 1.34
## 17 Cold Remedies 93 0.66
## 18 Dairy 903 6.42
## 19 Decongestants 85 0.60
## 20 Drinks 135 0.96
## 21 Eggs 198 1.41
## 22 Electrical 355 2.53
## 23 Frozen Desserts 323 2.30
## 24 Frozen Entrees 118 0.84
## 25 Fruit 765 5.44
## 26 Hardware 129 0.92
## 27 Hot Beverages 226 1.61
## 28 Hygiene 197 1.40
## 29 Jams and Jellies 588 4.18
## 30 Kitchen Products 217 1.54
## 31 Magazines 202 1.44
## 32 Meat 761 5.41
## 33 Miscellaneous 42 0.30
## 34 Packaged Vegetables 48 0.34
## 35 Pain Relievers 192 1.37
## 36 Paper Products 345 2.45
## 37 Pizza 194 1.38
## 38 Plastic Products 141 1.00
## 39 Pure Juice Beverages 165 1.17
## 40 Seafood 102 0.73
## 41 Side Dishes 153 1.09
## 42 Snack Foods 1600 11.38
## 43 Specialty 289 2.06
## 44 Starchy Foods 277 1.97
## 45 Vegetables 1728 12.29
Dữ liệu cho thấy Snack Foods (11.38%) và Vegetables (12.29%) là hai
danh mục phổ biến nhất, chiếm tổng cộng gần 1/4 dữ liệu. Các danh mục
đáng chú ý khác bao gồm Dairy (6.42%), Fruit (5.44%), và Meat (5.41%),
trong khi nhiều danh mục như đồ hải sản đóng hộp (Canned Oysters 0.25%,
Canned Shrimp 0.27%) hoặc các sản phẩm ít phổ biến (Candles 0.32%,
Miscellaneous 0.30%) có tần suất rất thấp. Sự phân bố này phản ánh tập
trung chính vào các mặt hàng tiêu dùng nhanh và thực phẩm tươi sống,
trong khi các sản phẩm đặc biệt hoặc ít phổ biến chỉ chiếm tỷ lệ
nhỏ.
ggplot(a, aes(x = ProductCategory)) +
geom_bar(fill = "#CC9", color = "black") +
labs(x = "Sản phẩm", y = "Tần số", title = "Danh mục sản phẩm khách hàng mua") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))

UnitsSold
skim(a$UnitsSold)
Data summary
| Name |
a$UnitsSold |
| Number of rows |
14059 |
| Number of columns |
1 |
| _______________________ |
|
| Column type frequency: |
|
| numeric |
1 |
| ________________________ |
|
| Group variables |
None |
Variable type: numeric
| data |
0 |
1 |
4.08 |
1.17 |
1 |
3 |
4 |
5 |
8 |
▁▃▇▂▁ |
Kết quả cho thấy trung bình 1 đơn mua sẽ mua khoảng 4.08 đơn vị sản
phẩm, giá trị độ lệch chuẩn bằng 1.17 cho thấy mức độ phân tán tương đối
thấp xung quanh giá trị trung bình.
Có thể thấy rằng có 50% giao dịch bán từ 3-5 đơn vị (khoảng tứ phân
vị) và 75% giao dịch bán ≤5 đơn vị.
barplot(table(a$UnitsSold),
col = "blue",
main = "Tần suất UnitsSold",
xlab = "Số đơn vị", ylab = "Số lần xuất hiện")

skim(a$Revenue)
Data summary
| Name |
a$Revenue |
| Number of rows |
14059 |
| Number of columns |
1 |
| _______________________ |
|
| Column type frequency: |
|
| numeric |
1 |
| ________________________ |
|
| Group variables |
None |
Variable type: numeric
| data |
0 |
1 |
13 |
8.22 |
0.53 |
6.84 |
11.25 |
17.37 |
56.7 |
▇▅▂▁▁ |
Biến Revenue (doanh thu) cho thấy một phân phối lệch phải rõ rệt với
giá trị trung bình 13.00 và trung vị 11.25, phản ánh sự hiện diện của
nhiều giao dịch có doanh thu cao kéo trung bình lên. Độ lệch chuẩn lớn
(8.22) cùng khoảng biến thiên rộng (từ 0.53 đến 56.7) cho thấy mức độ
chênh lệch đáng kể giữa các giao dịch.
hist(a$Revenue, col = "red",
main = "Phân phối Revenue",
xlab = "Doanh thu")

1 lần nữa xác nhận rõ ràng phân phối lệch phải mạnh của biến Revenue.
Các điểm riêng lẻ xuất hiện ở vùng 30-50, trùng khớp với giá trị tối đa
56.7 trong thống kê. Khoảng cách xa từ p75 (~17) đến các điểm này cho
thấy chúng thực sự là các giá trị cực trị
LS0tDQp0aXRsZTogIk5ISeG7hk0gVuG7pCBUVeG6pk4gMSAtIDEgxJBJ4buCTSBRVcOBIFRSw4xOSCINCmF1dGhvcjogIlbDtSBIb8OgbmcgVMOtbmggLSAyMjIxMDAwMzMxIg0KZGF0ZTogIjIwMjUtMDUtMTkiDQpvdXRwdXQ6DQogIGh0bWxfZG9jdW1lbnQ6IA0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUNCiAgICB0b2NfZGVwdGg6IDQNCiAgICB0b2NfZmxvYXQ6IHRydWUNCiAgICB0b2M6IHRydWUNCiAgcGRmX2RvY3VtZW50Og0KICAgIGxhdGV4X2VuZ2luZTogeGVsYXRleA0KLS0tDQoNCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFKQ0KYGBgDQojICoqUEjhuqZOIDEqKg0KIyMgKipDSMavxqBORyAxOiBNw5QgSMOMTkggVEjhu5BORyBLw4oqKg0KDQojIyMgKioxLjEgR2nhu5tpIHRoaeG7h3UgdsOgIHThu5VuZyBxdWFuKiogDQoNCiAgQ2jGsMahbmcgxJHhuqd1IHRpw6puIG3hu58gxJHhuqd1IGNobyBjdeG7kW4gc8OhY2ggYuG6sW5nIGPDoWNoIGdp4bubaSB0aGnhu4d1IHThu5VuZyBxdWFuIHbhu4EgbcO0IGjDrG5oIHRo4buRbmcga8OqLCB0cm9uZyDEkcOzIG3DtCBow6xuaCB0dXnhur9uIHTDrW5oIHThu5VuZyBxdcOhdCAoR2VuZXJhbGl6ZWQgTGluZWFyIE1vZGVsIOKAkyBHTE0pIMSRw7NuZyB2YWkgdHLDsiBj4buRdCBsw7VpIHh1ecOqbiBzdeG7kXQgbuG7mWkgZHVuZy4gQ2jGsMahbmcgbsOgeSDEkeG6t3QgbuG7gW4gdOG6o25nIGNobyBuZ8aw4budaSBo4buNYyB0aMO0bmcgcXVhIHZp4buHYyBnaeG6o2kgdGjDrWNoIGPDoWMga2jDoWkgbmnhu4dtIGPGoSBi4bqjbiwga8O9IGhp4buHdSBz4butIGThu6VuZyB0cm9uZyBtw7QgaMOsbmggdsOgIG5o4buvbmcgduG6pW4gxJHhu4EgdGhlbiBjaOG7kXQgY+G6p24gbMawdSDDvSBraGkgbMOgbSB2aeG7h2MgduG7m2kgZOG7ryBsaeG7h3UuDQoNCiAgTeG7mXQgdHJvbmcgbmjhu69uZyBu4buZaSBkdW5nIHF1YW4gdHLhu41uZyDEkcaw4bujYyDEkeG7gSBj4bqtcCBsw6AgY8OhY2ggYmnhu4N1IGRp4buFbiBk4buvIGxp4buHdSBi4bqxbmcgbmfDtG4gbmfhu68gdG/DoW4gaOG7jWMg4oCTIGLGsOG7m2MgxJHhuqd1IHRpw6puIMSR4buDIHjDonkgZOG7sW5nIG3DtCBow6xuaCBjw7MgdGjhu4MgeOG7rSBsw70gxJHGsOG7o2MuIELDqm4gY+G6oW5oIMSRw7MsIGNoxrDGoW5nIGPFqW5nIG5o4bqlbiBt4bqhbmggdmFpIHRyw7IgY+G7p2Egdmnhu4djIHRy4buxYyBxdWFuIGjDs2EgZOG7ryBsaeG7h3UgdGjDtG5nIHF1YSBiaeG7g3UgxJHhu5MgbmjhurFtIHBow6F0IGhp4buHbiBjw6FjIHh1IGjGsOG7m25nLCBt4buRaSBxdWFuIGjhu4cgdsOgIMSR4bq3YyDEkWnhu4NtIG7hu5VpIGLhuq10Lg0KDQogIFZp4buHYyB44butIGzDvSBjw6FjIGJp4bq/biBraMO0bmcgxJHhu4tuaCBsxrDhu6NuZywgbmjGsCBiaeG6v24gcGjDom4gbG/huqFpIGhheSBk4bqhbmcgdsSDbiBi4bqjbiwgY8WpbmcgxJHGsOG7o2MgdHLDrG5oIGLDoHkgdGjDtG5nIHF1YSBr4bu5IHRodeG6rXQgbcOjIGjDs2EsIGdpw7pwIGNodXnhu4NuIGNow7puZyB24buBIGThuqFuZyBz4buRIMSR4buDIMSRxrBhIHbDoG8gbcO0IGjDrG5oLiBU4burIMSRw7MsIG5nxrDhu51pIMSR4buNYyDEkcaw4bujYyBsw6BtIHF1ZW4gduG7m2kgY+G6pXUgdHLDumMgY8ahIGLhuqNuIGPhu6dhIG3hu5l0IG3DtCBow6xuaCB0aOG7kW5nIGvDqiwgYmFvIGfhu5NtIGhhaSB0aMOgbmggcGjhuqduOiBo4buHIHRo4buRbmcgKMSR4bqhaSBkaeG7h24gY2hvIHF1eSBsdeG6rXQgeMOhYyDEkeG7i25oKSB2w6Agbmfhuqt1IG5oacOqbiAoxJHhuqFpIGRp4buHbiBjaG8gcGjhuqduIGJp4bq/biB0aGnDqm4ga2jDtG5nIGdp4bqjaSB0aMOtY2ggxJHGsOG7o2MpLg0KDQogIFRp4bq/cCB0aGVvLCBjaMawxqFuZyBnaeG7m2kgdGhp4buHdSBuaMOzbSBtw7QgaMOsbmggaOG7k2kgcXV5IOKAkyBjw7RuZyBj4bulIHBow6JuIHTDrWNoIGNow61uaCDEkcaw4bujYyBz4butIGThu6VuZyB4dXnDqm4gc3Xhu5F0IGN14buRbiBzw6FjaCDigJMgdsOgIGjGsOG7m25nIGThuqtuIGPDoWNoIGRp4buFbiBnaeG6o2kga+G6v3QgcXXhuqMgY+G7p2EgbcO0IGjDrG5oIG3hu5l0IGPDoWNoIGPDsyDDvSBuZ2jEqWEuIELDqm4gY+G6oW5oIMSRw7MsIHTDoWMgZ2nhuqMgxJHGsGEgcmEgc28gc8OhbmggZ2nhu69hIG3DtCBow6xuaCB0aOG7kW5nIGvDqiB2w6AgbcO0IGjDrG5oIHbhuq10IGzDvSDEkeG7gyBnacO6cCBuZ8aw4budaSDEkeG7jWMgaGnhu4N1IHLDtSBz4buxIHTGsMahbmcgxJHhu5NuZyB2w6Aga2jDoWMgYmnhu4d0IGdp4buvYSBoYWkgY8OhY2ggdGnhur9wIGPhuq1uLg0KDQogIE5nb8OgaSByYSwgY2jGsMahbmcgY8WpbmcgbMOgbSByw7UgbeG7pWMgdGnDqnUgY+G7p2EgbcO0IGjDrG5oIHRo4buRbmcga8OqIHRyb25nIHZp4buHYyBtw7QgdOG6oywgZ2nhuqNpIHRow61jaCB2w6AgZOG7sSDEkW/DoW4gaGnhu4duIHTGsOG7o25nLCDEkeG7k25nIHRo4budaSBjaOG7iSByYSBoYWkgdGnDqnUgY2jDrSBxdWFuIHRy4buNbmcgxJHhu4MgxJHDoW5oIGdpw6EgbcO0IGjDrG5oOiDEkeG7mSBjaMOtbmggeMOhYyB2w6AgdMOtbmggxJHGoW4gZ2nhuqNuLiBN4buZdCBz4buRIGjhuqFuIGNo4bq/IGPhu6dhIG3DtCBow6xuaCB0aOG7kW5nIGvDqiBjxaluZyDEkcaw4bujYyBiw6BuIMSR4bq/biwgxJHhurdjIGJp4buHdCBsw6Agc+G7sSBraMOhYyBiaeG7h3QgZ2nhu69hIGThu68gbGnhu4d1IHF1YW4gc8OhdCAob2JzZXJ2YXRpb25hbCBkYXRhKSB2w6AgZOG7ryBsaeG7h3UgdGjhu7FjIG5naGnhu4dtIChleHBlcmltZW50YWwgZGF0YSksIGPDuW5nIHbhu5tpIG5o4buvbmcgdMOhYyDEkeG7mW5nIGPhu6dhIGNow7puZyDEkeG6v24gdmnhu4djIHN1eSBsdeG6rW4uDQoNCiAgS2jDoWkgbmnhu4dtIHbhu4Ega2jhuqMgbsSDbmcga2jDoWkgcXXDoXQgaMOzYSBj4bunYSBtw7QgaMOsbmgg4oCTIHThu6ljIG3hu6ljIMSR4buZIG3DoCBtw7QgaMOsbmggY8OzIHRo4buDIMOhcCBk4bulbmcgY2hvIGPDoWMgZOG7ryBsaeG7h3UgaG/hurdjIHTDrG5oIGh14buRbmcgbeG7m2kg4oCTIGPFqW5nIMSRxrDhu6NjIG5o4bqlbiBt4bqhbmggbmjGsCBt4buZdCB54bq/dSB04buRIHRoaeG6v3QgeeG6v3UgdHJvbmcgcGjDom4gdMOtY2ggdGjhu5FuZyBrw6ouIEN14buRaSBjw7luZywgY2jGsMahbmcga2jDqXAgbOG6oWkgYuG6sW5nIHBo4bqnbiBnaeG7m2kgdGhp4buHdSBjxqEgYuG6o24gduG7gSBwaOG6p24gbeG7gW0gUiwgY8O0bmcgY+G7pSBz4bq9IMSRxrDhu6NjIHPhu60gZOG7pW5nIHRyb25nIHN14buRdCBjdeG7kW4gc8OhY2ggxJHhu4MgbWluaCBo4buNYSB2w6AgdGjhu7FjIGjDoG5oIGPDoWMgbcO0IGjDrG5oIHRo4buRbmcga8OqLg0KDQojIyMgKioxLjIgIEPDoWMgcXV5IMaw4bubYyDEkeG7gyBtw7QgdOG6oyBk4buvIGxp4buHdSoqIA0KICBE4buvIGxp4buHdSB0b8OhbiBo4buNYzogYmnhur9uIHBo4bqjbiBo4buTaSAkeSQsIGJp4bq/biBnaeG6o2kgdGjDrWNoICR4XzEsIHhfMiwgXGxkb3RzLCB4X3AkLg0KICANCiAgUGjDom4gbG/huqFpIGJp4bq/biANCiAgDQogIC0gKipDb3ZhcmlhdGVzOioqIGJp4bq/biDEkeG7i25oIGzGsOG7o25nDQogIC0gKipGYWN0b3JzOioqIGJp4bq/biDEkeG7i25oIHTDrW5oDQogIA0KIyMjICoqMS4zIFbhur0gYmnhu4N1IMSR4buTKioNClBsb3R0aW5nIERhdGEgLSBW4bq9IGJp4buDdSDEkeG7kw0KLSBEw7luZyDEkeG7kyB0aOG7iyBuaMawIHNjYXR0ZXIgcGxvdHMsIHN0cmlwIGNoYXJ0cywgYm94cGxvdHMgxJHhu4MgcGjDoXQgaGnhu4duIHh1IGjGsOG7m25nLCBvdXRsaWVyLg0KICANCiMjIyAqKjEuNCBNw6MgaMOzYSBiaeG6v24gcGjDom4gbG/huqFpbG/huqFpKioNCkNvZGluZyBmb3IgRmFjdG9ycyAtIE3DoyBow7NhIGJp4bq/biBwaMOibiBsb+G6oWkNCg0KLSBCaeG6v24gZ2nhuqMgKER1bW15IHZhcmlhYmxlcyk6IGTDuW5nICRrLTEkIGJp4bq/biBnaeG6oyBjaG8gbeG7mXQgeeG6v3UgdOG7kSBjw7MgJGskIG3hu6ljLg0KICANCi0gUiBt4bq3YyDEkeG7i25oIHPhu60gZOG7pW5nIG3DoyBow7NhICJ0cmVhdG1lbnQgY29kaW5nIg0KICANCiMjIyAqKjEuNSAgU3RhdGlzdGljYWwgTW9kZWxzIERlc2NyaWJlIEJvdGggUmFuZG9tIGFuZCBTeXN0ZW1hdGljIEZlYXR1cmVzIG9mIERhdGEqKg0KU3RhdGlzdGljYWwgTW9kZWxzIERlc2NyaWJlIEJvdGggUmFuZG9tIGFuZCBTeXN0ZW1hdGljIEZlYXR1cmVzIG9mIERhdGEgLSBNw7QgaMOsbmggdGjhu5FuZyBrw6ogbcO0IHThuqMgY+G6oyB54bq/dSB04buRIG5n4bqrdSBuaGnDqm4gdsOgIGPDsyBo4buHIHRo4buRbmcgY+G7p2EgZOG7ryBsaeG7h3UNCg0KLSAqKlRow6BuaCBwaOG6p24gaOG7hyB0aOG7kW5nOioqIG3DtCB04bqjIHRydW5nIGLDrG5oIGPhu6dhIHBo4bqjbiBo4buTaSAkRSh5KSA9IM68ID0gzrLigoAgKyDOsuKCgXjigoEgKyAuLi4gKyDOsuKCmnjigpokDQogIA0KLSAqKlRow6BuaCBwaOG6p24gbmfhuqt1IG5oacOqbiAoUmFuZG9tKToqKiAkVmFyKHkpID0gz4PCsiQNCiAgDQotICoqVGjDoG5oIHBo4bqnbiBuZ+G6q3Ugbmhpw6puIChyYW5kb20gY29tcG9uZW50KSoqIG3DtCB04bqjIHBow6JuIHBo4buRaSBnacOhIHRy4buLIHBo4bqjbiBo4buTaSDhu6luZyB24bubaSBt4buXaSB04buVIGjhu6NwIGJp4bq/biBnaeG6o2kgdGjDrWNoLg0KDQotICoqVGjDoG5oIHBo4bqnbiBo4buHIHRo4buRbmcgKHN5c3RlbWF0aWMgY29tcG9uZW50KSoqIG3DtCB04bqjIG3hu5FpIHF1YW4gaOG7hyB0b8OhbiBo4buNYyBnaeG7r2EgdHJ1bmcgYsOsbmggcGjhuqNuIGjhu5NpIHbDoCBjw6FjIGJp4bq/biBnaeG6o2kgdGjDrWNoIChjaGnhu4F1IGNhbywgdHXhu5VpLCBnaeG7m2kgdMOtbmgsIGjDunQgdGh14buRYykuDQoNCi0gKipNw7QgaMOsbmggdGjhu5FuZyBrw6oqKiA9IHRow6BuaCBwaOG6p24gbmfhuqt1IG5oacOqbiArIHRow6BuaCBwaOG6p24gaOG7hyB0aOG7kW5nLCBtw7QgdOG6oyBj4bqjIGhhaSDEkeG6t2MgxJFp4buDbSBj4bunYSBk4buvIGxp4buHdSB0aOG7sWMgdOG6vy4NCg0KDQoNCg0KUGjhu5UgYmnhur9uIG5o4bqldCBsw6Aga2hpIG3DtCBow6xuaCB0dXnhur9uIHTDrW5oIHRyb25nIGPDoWMgdGhhbSBz4buROg0KDQokJA0KXG11X2kgPSBmKFxiZXRhXzAgKyBcYmV0YV8xIHhfe2kxfSArIFxjZG90cyArIFxiZXRhX3AgeF97aXB9KSBcdGFnezEuNX0NCiQkDQoNCiMjIyMgKipDw6FjIGThuqFuZyBtw7QgaMOsbmggaOG7k2kgcXV5OioqDQoNCi0gKipNw7QgaMOsbmggaOG7k2kgcXV5IHR1eeG6v24gdMOtbmgqKjogdGjDoG5oIHBo4bqnbiBo4buHIHRo4buRbmcgY8OzIGThuqFuZzoNCg0KJCQNCkVbeV9pXSA9IFxtdV9pID0gXGJldGFfMCArIFxiZXRhXzEgeF97aTF9ICsgXGNkb3RzICsgXGJldGFfcCB4X3tpcH0gXHRhZ3sxLjZ9DQokJA0KDQotICoqTcO0IGjDrG5oIGjhu5NpIHF1eSB0dXnhur9uIHTDrW5oIHThu5VuZyBxdcOhdCAoR0xNKSoqOiB0aMOgbmggcGjhuqduIGjhu4cgdGjhu5FuZyBjw7MgZOG6oW5nOg0KDQokJA0KXG11X2kgPSBnXnstMX0oXGJldGFfMCArIFxiZXRhXzEgeF97aTF9ICsgXGNkb3RzICsgXGJldGFfcCB4X3tpcH0pDQokJA0KDQpob+G6t2M6DQoNCiQkDQpnKFxtdV9pKSA9IFxiZXRhXzAgKyBcYmV0YV8xIHhfe2kxfSArIFxjZG90cyArIFxiZXRhX3AgeF97aXB9DQokJA0KDQpUcm9uZyDEkcOzICRnKFxjZG90KSQgbMOgIG3hu5l0IGjDoG0gbGnDqm4ga+G6v3QgxJHGoW4gxJFp4buHdSAoY2jhurNuZyBo4bqhbiBuaMawIGjDoG0gbG9nYXJpdCkuDQoNCg0KIyMjIyAqKk3hu5l0IHPhu5EgcXV5IMaw4bubYzoqKg0KDQotIFPhu5EgbMaw4bujbmcgYmnhur9uIGdp4bqjaSB0aMOtY2g6ICR4XzEsIHhfMiwgXGxkb3RzLCB4X3AkLg0KLSBT4buRIGzGsOG7o25nIHRoYW0gc+G7kSBo4buTaSBxdXk6ICRcYmV0YV8wLCBcYmV0YV8xLCBcbGRvdHMsIFxiZXRhX3AkLg0KLSBO4bq/dSAkXGJldGFfMCQga2jDtG5nIMSR4buVaSB2w6AgcGjhuqduIGPDsm4gbOG6oWkgbMOgICR4X2okIHRow6wgc+G7kSBsxrDhu6NuZyBiaeG6v24gZ2nhuqNpIHRow61jaCBsw6AgJHAkLCBz4buRIGzGsOG7o25nIHRoYW0gc+G7kSBsw6AgJHAgKyAxJC4NCg0KQ8OhYyBtw7QgaMOsbmggaOG7k2kgcXV5IHR1eeG6v24gdMOtbmggbMOgIHRyxrDhu51uZyBo4bujcCDEkeG6t2MgYmnhu4d0IGPhu6dhIG3DtCBow6xuaCBo4buTaSBxdXkgdHV54bq/biB0w61uaCB04buVbmcgcXXDoXQsIHbhu5tpIGjDoG0gbGnDqm4ga+G6v3QgJGckIGzDoCBow6BtIMSR4buTbmcgbmjhuqV0Lg0KDQojIyAqKkNIxq/GoE5HIDI6IE3DlCBIw4xOSCBI4buSSSBRVVkgVFVZ4bq+TiBUw41OSCAtIExJTkVBUiBSRUdSRUVTU0lPTiBNT0RFTFMqKg0KIyMjICoqMi4xOiBJbnRyb2R1Y3Rpb24gYW5kIE92ZXJ2aWV3KioNCg0KIyMjIyBUw7NtIHThuq90IG7hu5lpIGR1bmcNCg0KLSAqKkxpbmVhciByZWdyZXNzaW9uIG1vZGVsKiogbMOgIG3DtCBow6xuaCBo4buTaSBxdXkgcGjhu5UgYmnhur9uIG5o4bqldCB0cm9uZyB0aOG7kW5nIGvDqiB2w6AgbMOgIHRy4buNbmcgdMOibSBt4bufIMSR4bqndSBj4bunYSBjaMawxqFuZyAyLg0KLSBDaMawxqFuZyBuw6B5IHRoaeG6v3QgbOG6rXAgKipuZ8O0biBuZ+G7rywga8O9IGhp4buHdSB2w6AgZ2nhuqMgxJHhu4tuaCBjxqEgYuG6o24qKiBjaG8gdOG6pXQgY+G6oyBuZ8aw4budaSDEkeG7jWMgdHLGsOG7m2Mga2hpIGNodXnhu4NuIHNhbmcgbcO0IGjDrG5oIHThu5VuZyBxdcOhdCBoxqFuIOKAkyAqKmdlbmVyYWxpemVkIGxpbmVhciBtb2RlbHMgKEdMTXMpKiouDQotICoqTGluZWFyIHJlZ3Jlc3Npb24gbW9kZWxzKiogxJHGsOG7o2MgeGVtIG5oxrAgbeG7mXQgdHLGsOG7nW5nIGjhu6NwIMSR4bq3YyBiaeG7h3QgY+G7p2EgR0xNcy4NCg0KIyMjICoqMi4yIExpbmVhciBSZWdyZXNzaW9uIE1vZGVscyBEZWZpbmVkKioNCg0KIyMjIyAqKkPhuqV1IHRyw7pjIGPGoSBi4bqjbiBj4bunYSBtw7QgaMOsbmggaOG7k2kgcXV5IHR1eeG6v24gdMOtbmgqKg0KDQpMaW5lYXIgcmVncmVzc2lvbiBtb2RlbCBn4buTbSAyIHRow6BuaCBwaOG6p24gY2jDrW5oOg0KDQotICoqVGjDoG5oIHBo4bqnbiBuZ+G6q3Ugbmhpw6puIChyYW5kb20gY29tcG9uZW50KSoqOg0KICAtIEdp4bqjIMSR4buLbmggcGjGsMahbmcgc2FpIGPhu6dhIHBo4bqjbiBo4buTaSBcKCB5X2kgXCkgbMOgIGtow7RuZyDEkeG7lWk6ICANCiAgICBcWw0KICAgIFx0ZXh0e3Zhcn1beV9pXSA9IFxzaWdtYV4yIC8gd19pDQogICAgXF0NCiAgLSBcKCB3X2kgXCkgbMOgICoqdHLhu41uZyBz4buRIMawdSB0acOqbioqIMSRw6MgYmnhur90IChwcmlvciB3ZWlnaHRzKS4gTuG6v3UgXCggd19pID0gMSBcKSB24bubaSBt4buNaSBcKCBpIFwpLCBtw7QgaMOsbmggxJHGsOG7o2MgZ+G7jWkgbMOgICoqaOG7k2kgcXV5IHR1eeG6v24gdMOtbmggdGjGsOG7nW5nIChvcmRpbmFyeSBsaW5lYXIgcmVncmVzc2lvbikqKi4NCg0KLSAqKlRow6BuaCBwaOG6p24gaOG7hyB0aOG7kW5nIChzeXN0ZW1hdGljIGNvbXBvbmVudCkqKjoNCiAgLSBL4buzIHbhu41uZyBj4bunYSBcKCB5X2kgXCkgbMOgIGvhur90IGjhu6NwIHR1eeG6v24gdMOtbmggY+G7p2EgY8OhYyBiaeG6v24gZ2nhuqNpIHRow61jaDoNCiAgICBcWw0KICAgIFxtdV9pID0gRVt5X2ldID0gXGJldGFfMCArIFxzdW1fe2o9MX1ee3B9IFxiZXRhX2ogeF97aml9DQogICAgXF0NCg0KIyMjIyAqKlBow6JuIGxv4bqhaSBtw7QgaMOsbmgqKg0KDQotICoqU2ltcGxlIGxpbmVhciByZWdyZXNzaW9uKio6IGtoaSBjaOG7iSBjw7MgMSBiaeG6v24gZ2nhuqNpIHRow61jaCBcKCAocCA9IDEpIFwpLg0KLSAqKk11bHRpcGxlIGxpbmVhciByZWdyZXNzaW9uKio6IGtoaSBjw7Mgbmhp4buBdSBoxqFuIDEgYmnhur9uIGdp4bqjaSB0aMOtY2ggXCggKHAgPiAxKSBcKS4NCi0gKipXZWlnaHRlZCBsaW5lYXIgcmVncmVzc2lvbioqOiBraGkgY8OhYyB0cuG7jW5nIHPhu5EgXCggd19pIFwpIGtow6FjIG5oYXUuDQotICoqT3JkaW5hcnkgbGluZWFyIHJlZ3Jlc3Npb24qKjoga2hpIG3hu41pIHRy4buNbmcgc+G7kSBcKCB3X2kgPSAxIFwpLg0KDQojIyMjICoqQ8OhYyBnaeG6oyDEkeG7i25oIGNow61uaCoqDQoNCi0gKipQaMO5IGjhu6NwIChTdWl0YWJpbGl0eSkqKjogQ8O5bmcgbeG7mXQgbcO0IGjDrG5oIMOhcCBk4bulbmcgY2hvIG3hu41pIHF1YW4gc8OhdC4NCi0gKipUdXnhur9uIHTDrW5oIChMaW5lYXJpdHkpKio6IFF1YW4gaOG7hyBnaeG7r2Ega+G7syB24buNbmcgXCggXG11IFwpIHbDoCBiaeG6v24gZ2nhuqNpIHRow61jaCBsw6AgdHV54bq/biB0w61uaC4NCi0gKipQaMawxqFuZyBzYWkga2jDtG5nIMSR4buVaSAoQ29uc3RhbnQgdmFyaWFuY2UpKio6IFBoxrDGoW5nIHNhaSBcKCBcc2lnbWFeMiBcKSBsw6Aga2jDtG5nIMSR4buVaSAoaG/hurdjIHThu7cgbOG7hyB24bubaSBcKCAxL3dfaSBcKSkuDQotICoqxJDhu5ljIGzhuq1wIChJbmRlcGVuZGVuY2UpKio6IEPDoWMgcGjhuqNuIGjhu5NpIFwoIHlfaSBcKSBsw6AgxJHhu5ljIGzhuq1wIHbhu5tpIG5oYXUuDQoNCiMjIyMgKipWw60gZOG7pSBtaW5oIGjhu41hKioNCg0KLSBE4buvIGxp4buHdSBjw6JuIG7hurduZyBzxqEgc2luaCB0aGVvIHR14bqnbiB0deG7lWkgdGhhaSBr4buzIHThu6sgYuG7h25oIHZp4buHbiBTdCBHZW9yZ2XigJlzIChMb25kb24pIMSRxrDhu6NjIGTDuW5nIMSR4buDIG1pbmggaOG7jWEgbcO0IGjDrG5oIGjhu5NpIHF1eSB0dXnhur9uIHTDrW5oIGdp4buvYSBjw6JuIG7hurduZyB2w6AgdHXhuqduIHR14buVaS4NCg0KIyMjICoqMi4zIFNpbXBsZSBMaW5lYXIgUmVncmVzc2lvbioqDQoNCiMjIyMgKioyLjMuMSBMZWFzdC1TcXVhcmVzIEVzdGltYXRpb24qKg0KDQotIE3DtCBow6xuaCBo4buTaSBxdXkgdHV54bq/biB0w61uaCDEkcahbiBjw7MgZOG6oW5nOg0KDQokJA0KXG11X2kgPSBFW3lfaV0gPSBcYmV0YV8wICsgXGJldGFfMSB4X2ksXHF1YWQgXHRleHR7VmFyfVt5X2ldID0gXHNpZ21hXjIgLyB3X2kNCiQkDQoNCi0gVOG7lW5nIHNhaSBz4buRIGLDrG5oIHBoxrDGoW5nIGPDsyB0cuG7jW5nIHPhu5EgY+G6p24gdOG7kWkgdGhp4buDdSBow7NhOg0KDQokJA0KUyhcYmV0YV8wLCBcYmV0YV8xKSA9IFxzdW1fe2k9MX1ebiB3X2kgKHlfaSAtIFxiZXRhXzAgLSBcYmV0YV8xIHhfaSleMg0KJCQNCg0KIyMjIyAqKjIuMy4yIENvZWZmaWNpZW50IEVzdGltYXRlcyoqDQoNCi0gVHJ1bmcgYsOsbmggY8OzIHRy4buNbmcgc+G7kToNCg0KJCQNClxiYXJ7eH1fdyA9IFxmcmFje1xzdW1fe2k9MX1ee259IHdfaSB4X2l9e1xzdW1fe2k9MX1ee259IHdfaX0sXHF1YWQNClxiYXJ7eX1fdyA9IFxmcmFje1xzdW1fe2k9MX1ee259IHdfaSB5X2l9e1xzdW1fe2k9MX1ee259IHdfaX0NCiQkDQoNCi0gxq/hu5tjIGzGsOG7o25nIGjhu4cgc+G7kToNCg0KJCQNClxoYXR7XGJldGF9XzEgPSBcZnJhY3tcc3VtX3tpPTF9Xm4gd19pICh4X2kgLSBcYmFye3h9X3cpKHlfaSl9e1xzdW1fe2k9MX1ebiB3X2kgKHhfaSAtIFxiYXJ7eH1fdyleMn0NCiQkDQoNCiQkDQpcaGF0e1xiZXRhfV8wID0gXGJhcnt5fV93IC0gXGhhdHtcYmV0YX1fMSBcYmFye3h9X3cNCiQkDQoNCiMjIyMgKioyLjMuMyBFc3RpbWF0aW5nIHRoZSBWYXJpYW5jZSBcKCBcc2lnbWFeMiBcKSoqDQoNCi0gUGjhuqduIGTGsDoNCg0KJCQNCmVfaSA9IHlfaSAtIFxoYXR7XG11fV9pID0geV9pIC0gXGhhdHtcYmV0YX1fMCAtIFxoYXR7XGJldGF9XzEgeF9pDQokJA0KDQotIFThu5VuZyBiw6xuaCBwaMawxqFuZyBwaOG6p24gZMawIChSU1MpOg0KDQokJA0KXHRleHR7UlNTfSA9IFxzdW1fe2k9MX1ebiB3X2kgZV9pXjINCiQkDQoNCi0gxq/hu5tjIGzGsOG7o25nIGtow7RuZyBjaOG7h2NoIGPhu6dhIHBoxrDGoW5nIHNhaToNCg0KJCQNCnNeMiA9IFxmcmFje1x0ZXh0e1JTU319e24gLSAyfQ0KJCQNCg0KIyMjIyAqKjIuMy40IFN0YW5kYXJkIEVycm9ycyBvZiBDb2VmZmljaWVudHMqKg0KDQotIFBoxrDGoW5nIHNhaSB2w6Agc2FpIHPhu5EgY2h14bqpbiBj4bunYSBcKCBcaGF0e1xiZXRhfV8xIFwpOg0KDQokJA0KXHRleHR7VmFyfVtcaGF0e1xiZXRhfV8xXSA9IFxmcmFje1xzaWdtYV4yfXtcc3VtX3tpPTF9Xm4gd19pICh4X2kgLSBcYmFye3h9X3cpXjJ9DQokJA0KDQokJA0KXHRleHR7U0V9W1xoYXR7XGJldGF9XzFdID0gXHNxcnR7IFxmcmFje3NeMn17XHN1bV97aT0xfV5uIHdfaSAoeF9pIC0gXGJhcnt4fV93KV4yfSB9DQokJA0KDQotIFNhaSBz4buRIGNodeG6qW4gY+G7p2EgXCggXGhhdHtcYmV0YX1fMCBcKToNCg0KJCQNClx0ZXh0e1NFfVtcaGF0e1xiZXRhfV8wXSA9IFxzcXJ0eyBzXjIgXGxlZnQoIFxmcmFjezF9e1xzdW0gd19pfSArIFxmcmFje1xiYXJ7eH1fd14yfXtcc3VtIHdfaSAoeF9pIC0gXGJhcnt4fV93KV4yfSBccmlnaHQpIH0NCiQkDQoNCiMjIyMgKioyLjMuNSBTdGFuZGFyZCBFcnJvcnMgb2YgRml0dGVkIFZhbHVlcyoqDQoNCi0gU2FpIHPhu5EgY2h14bqpbiBj4bunYSBnacOhIHRy4buLIGThu7EgxJFvw6FuOg0KDQokJA0KXGhhdHtcbXV9X2kgPSBcaGF0e1xiZXRhfV8wICsgXGhhdHtcYmV0YX1fMSB4X2kNCiQkDQoNCiQkDQpcdGV4dHtTRX1bXGhhdHtcbXV9X2ldID0gcyBcY2RvdCBcc3FydHsgXGZyYWN7MX17XHN1bSB3X2l9ICsgXGZyYWN7KHhfaSAtIFxiYXJ7eH1fdyleMn17XHN1bSB3X2kgKHhfaSAtIFxiYXJ7eH1fdyleMn0gfQ0KJCQNCg0KDQojIyMjICoqVOG7lW5nIGvhur90KioNCg0KLSBI4buTaSBxdXkgdHV54bq/biB0w61uaCDEkcahbiBsw6AgYsaw4bubYyDEkeG6p3UgY8ahIGLhuqNuIHRyb25nIHBow6JuIHTDrWNoIGjhu5NpIHF1eS4gVmnhu4djIMaw4bubYyBsxrDhu6NuZyBo4buHIHPhu5EsIHBoxrDGoW5nIHNhaSB2w6Agc2FpIHPhu5EgY2h14bqpbiBjaG8gcGjDqXAgxJHDoW5oIGdpw6EgbeG7qWMgxJHhu5kgdGluIGPhuq15IGPhu6dhIG3DtCBow6xuaC4gQ8OhYyBjw7RuZyB0aOG7qWMgdHLDqm4gbMOgIG7hu4FuIHThuqNuZyDEkeG7gyBt4bufIHLhu5luZyBzYW5nIGjhu5NpIHF1eSB0dXnhur9uIHTDrW5oIGLhu5lpIHbDoCBnZW5lcmFsaXplZCBsaW5lYXIgbW9kZWxzLg0KDQoqKkdoaSBuaOG7myoqOiBLaeG7g20gdHJhIGPDoWMgZ2nhuqMgxJHhu4tuaCBj4bunYSBtw7QgaMOsbmggbMOgIHLhuqV0IHF1YW4gdHLhu41uZzogdHV54bq/biB0w61uaCwgcGjGsMahbmcgc2FpIGtow7RuZyDEkeG7lWksIMSR4buZYyBs4bqtcCB2w6AgbcO0IGjDrG5oIMOhcCBk4bulbmcgcGjDuSBo4bujcCBjaG8gdG/DoG4gYuG7mSBt4bqrdS4NCg0KIyMjICoqMi40IMav4bubYyBsxrDhu6NuZyB0cm9uZyBo4buTaSBxdXkgYuG7mWkgKG5oaeG7gXUgYmnhur9uKSoqDQoNCioqROG6oW5nIG1hIHRy4bqtbiBj4bunYSBtw7QgaMOsbmg6KioNCg0KTcO0IGjDrG5oIGjhu5NpIHF1eSB0dXnhur9uIHTDrW5oIGPDsyB0aOG7gyDEkcaw4bujYyB2aeG6v3QgZMaw4bubaSBk4bqhbmcgbWEgdHLhuq1uOg0KDQokJA0KeSA9IFhcYmV0YSArIFx2YXJlcHNpbG9uDQokJA0KICBUcm9uZyDEkcOzOg0KDQotIFwoeVwpOiB2ZWN0b3IgcGjhuqNuIGjhu5NpIChj4buhIFwobiBcdGltZXMgMVwpKQ0KLSBcKFhcKTogbWEgdHLhuq1uIHRoaeG6v3Qga+G6vyAoZGVzaWduIG1hdHJpeCkga8OtY2ggdGjGsOG7m2MgXChuIFx0aW1lcyAocCsxKVwpLCB24bubaSBj4buZdCDEkeG6p3UgdGnDqm4gdG/DoG4gc+G7kSAxICjhu6luZyB24bubaSBo4buHIHPhu5EgY2jhurduIFwoXGJldGFfMFwpKSwgY8OhYyBj4buZdCBjw7JuIGzhuqFpIGzDoCBnacOhIHRy4buLIGPhu6dhIGPDoWMgYmnhur9uIGdp4bqjaSB0aMOtY2ggXCh4X2pcKQ0KLSBcKFxiZXRhXCk6IHZlY3RvciBo4buHIHPhu5EgaOG7k2kgcXV5IChj4buhIFwoKHArMSkgXHRpbWVzIDFcKSkNCi0gXChcdmFyZXBzaWxvbiBcc2ltIFxtYXRoY2Fse059KDAsIFxzaWdtYV4yIEkpXCk6IHZlY3RvciBuaGnhu4V1IGPDsyBwaMOibiBwaOG7kWkgY2h14bqpbiDEkWEgYmnhur9uIHbhu5tpIHRydW5nIGLDrG5oIDAgdsOgIHBoxrDGoW5nIHNhaSBcKFxzaWdtYV4yIElcKQ0KDQogIA0KKirGr+G7m2MgbMaw4bujbmcgT0xTOioqDQoNCiQkDQpcaGF0e1xiZXRhfSA9IChYXlQgVyBYKV57LTF9IFheVCBXIHkNCiQkDQoNCioqUGjhuqduIGTGsCB2w6AgcGjGsMahbmcgc2FpIMaw4bubYyBsxrDhu6NuZzoqKg0KDQotIEdpw6EgdHLhu4sgZOG7sSDEkW/DoW4gKGZpdHRlZCB2YWx1ZXMpOg0KDQokJA0KXGhhdHtcbXV9X2kgPSBcaGF0e3l9X2kgPSBcaGF0e1xiZXRhfV8wICsgXHN1bV97aj0xfV57cH0gXGhhdHtcYmV0YX1faiB4X3tqaX0NCiQkDQoNCg0KLSDGr+G7m2MgbMaw4bujbmcgcGjGsMahbmcgc2FpIHBo4bqnbiBkxrA6DQoNCiQkDQpzXjIgPSBcZnJhY3tSU1N9e24gLSBwJ30NCiQkDQoNCiMjICoqQ0jGr8agTkcgMzogQ0jhuqhOIMSQT8OBTiBNw5QgSMOMTkggSOG7kkkgUVVZIFRVWeG6vk4gVMONTkggKioNCkxpbmVhciBSZWdyZXNzaW9uIE1vZGVsczogRGlhZ25vc3RpY3MgYW5kIE1vZGVsLUJ1aWxkaW5nIChDaOG6qW4gxJFvw6FuIG3DtCBow6xuaCBo4buTaSBxdXkgdHV54bq/biB0w61uaCkgDQoNCiMjIyAqKjMuMS4gR2nhu5tpIHRoaeG7h3UgdsOgIHThu5VuZyBxdWFuKioNCg0KU2F1IGtoaSB4w6J5IGThu7FuZyBt4buZdCBtw7QgaMOsbmggaOG7k2kgcXV5IHR1eeG6v24gdMOtbmgsIGPDtG5nIHZp4buHYyBraMO0bmcga+G6v3QgdGjDumMg4bufIHZp4buHYyDGsOG7m2MgbMaw4bujbmcgY8OhYyBo4buHIHPhu5EgaOG7k2kgcXV5IHbDoCBraeG7g20gxJHhu4tuaCDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ouIE3hu5l0IGLGsOG7m2MgcXVhbiB0cuG7jW5nIGtow7RuZyB0aOG7gyB0aGnhur91IGzDoCBjaOG6qW4gxJFvw6FuIG3DtCBow6xuaCDigJMgdOG7qWMgbMOgIMSRw6FuaCBnacOhIHhlbSBtw7QgaMOsbmggxJHDoyDEkcaw4bujYyB4w6J5IGThu7FuZyBjw7MgdGjhu7FjIHPhu7EgcGjDuSBo4bujcCB24bubaSBk4buvIGxp4buHdSBoYXkga2jDtG5nLg0KDQpDaOG6qW4gxJFvw6FuIG3DtCBow6xuaCBo4buTaSBxdXkgbMOgIG3hu5l0IHBo4bqnbiB0aGnhur90IHnhur91IHRyb25nIHBow6JuIHTDrWNoIGThu68gbGnhu4d1IHbDrCBuw7MgZ2nDunAgdGE6DQoNCi0gICBYw6FjIG1pbmggY8OhYyBnaeG6oyDEkeG7i25oIGPGoSBi4bqjbiBj4bunYSBtw7QgaMOsbmggaOG7k2kgcXV5IHR1eeG6v24gdMOtbmggY8OzIMSRxrDhu6NjIHRo4buPYSBtw6NuIGhheSBraMO0bmcgKHbDrSBk4bulIG5oxrAgcXVhbiBo4buHIHR1eeG6v24gdMOtbmgsIHBoxrDGoW5nIHNhaSBraMO0bmcgxJHhu5VpLCBwaMOibiBwaOG7kWkgY2h14bqpbuKApikuDQoNCi0gICBQaMOhdCBoaeG7h24gbmjhu69uZyBxdWFuIHPDoXQgYuG6pXQgdGjGsOG7nW5nIG5oxrAgxJFp4buDbSBuZ2/huqFpIGxhaSAob3V0bGllcnMpIGhv4bq3YyDEkWnhu4NtIGPDsyDhuqNuaCBoxrDhu59uZyBs4bubbiAoaW5mbHVlbnRpYWwgb2JzZXJ2YXRpb25zKSDigJMgbmjhu69uZyDEkWnhu4NtIGPDsyB0aOG7gyBiw7NwIG3DqW8ga+G6v3QgcXXhuqMgxrDhu5tjIGzGsOG7o25nIGhv4bq3YyBraeG7g20gxJHhu4tuaC4NCg0KLSAgIMSQw6FuaCBnacOhIMSR4buZIHRpbiBj4bqteSBj4bunYSBjw6FjIGjhu4cgc+G7kSDGsOG7m2MgbMaw4bujbmcuDQoNCsSQ4buBIHh14bqldCBjw6FjaCBj4bqjaSB0aGnhu4duIG3DtCBow6xuaCwgdsOtIGThu6U6IGJp4bq/biDEkeG7lWkgYmnhur9uLCB0aMOqbSBob+G6t2MgYuG7m3QgYmnhur9uIGdp4bqjaSB0aMOtY2gsIHPhu60gZOG7pW5nIG3DtCBow6xuaCBwaGkgdHV54bq/biBob+G6t2MgdOG7lW5nIHF1w6F0IChHTE0pIHRoYXkgdGjhur8uDQoNCk7hur91IGLhu48gcXVhIGLGsOG7m2MgbsOgeSwgbmfGsOG7nWkgcGjDom4gdMOtY2ggZOG7hSByxqFpIHbDoG8gYuG6q3kgY+G7p2Egdmnhu4djIOKAnHBow7kgaOG7o3AgcXXDoSBt4bupY+KAnSAob3ZlcmZpdHRpbmcpLCBoaeG7g3Ugc2FpIG3hu5FpIHF1YW4gaOG7hyBnaeG7r2EgY8OhYyBiaeG6v24sIGhv4bq3YyBk4buxIMSRb8OhbiBzYWkgbOG7h2NoIHRyb25nIHRo4buxYyB04bq/LiBEbyDEkcOzLCBjaOG6qW4gxJFvw6FuIG3DtCBow6xuaCBraMO0bmcgcGjhuqNpIGzDoCB0w7l5IGNo4buNbiDigJMgbcOgIGzDoCBt4buZdCBwaOG6p24gYuG6r3QgYnXhu5ljIHRyb25nIHBow6JuIHTDrWNoIGjhu5NpIHF1eSBuZ2hpw6ptIHTDumMuDQoNClRyb25nIGNoxrDGoW5nIG7DoHksIGNow7puZyB0YSBz4bq9IGjhu41jIGPDoWNoOg0KDQotICAgS2nhu4NtIHRyYSBjw6FjIGdp4bqjIMSR4buLbmggY+G7p2EgbcO0IGjDrG5oIGjhu5NpIHF1eS4NCg0KLSAgIFPhu60gZOG7pW5nIHBo4bqnbiBkxrAgKHJlc2lkdWFscykgxJHhu4Mga2nhu4NtIHRyYSDEkeG7mSBwaMO5IGjhu6NwLg0KDQotICAgUGjDoXQgaGnhu4duIHbDoCB44butIGzDvSBjw6FjIMSRaeG7g20g4bqjbmggaMaw4bufbmcgbOG7m24uDQoNCi0gICDEkG8gbMaw4budbmcgaGnhu4duIHTGsOG7o25nIMSRYSBj4buZbmcgdHV54bq/biB2w6AgY8OhY2ggZ2nhuqNtIHRoaeG7g3UuDQoNCiMjIyAqKjMuMiBHaeG6oyDEkeG7i25oIHRyb25nIG3DtCBow6xuaCBo4buTaSBxdXkgdHV54bq/biB0w61uaCoqDQoNCk3hu5l0IG3DtCBow6xuaCBo4buTaSBxdXkgdHV54bq/biB0w61uaCB0acOqdSBjaHXhuqluIMSRw7JpIGjhu49pIHBo4bqjaSB0aOG7j2EgbcOjbiA0IGdp4bqjIMSR4buLbmggY8ahIGLhuqNuOg0KDQoqKjEuIEdp4bqjIMSR4buLbmggMTogUXVhbiBo4buHIHR1eeG6v24gdMOtbmgqKg0KDQotIE3DtCBow6xuaCBnaeG6oyDEkeG7i25oIHLhurFuZyB0cnVuZyBiw6xuaCBj4bunYSBiaeG6v24gcGjhuqNuIGjhu5NpIFwoeVwpIGzDoCBow6BtIHR1eeG6v24gdMOtbmggY+G7p2EgY8OhYyBiaeG6v24gZ2nhuqNpIHRow61jaCBcKHhfMSwgeF8yLCBcbGRvdHMsIHhfcFwpLg0KDQotIE7hur91IHF1YW4gaOG7hyB0aOG6rXQgc+G7sSBsw6AgcGhpIHR1eeG6v24gbcOgIHRhIHbhuqtuIGTDuW5nIG3DtCBow6xuaCB0dXnhur9uIHTDrW5oLCBr4bq/dCBxdeG6oyDGsOG7m2MgbMaw4bujbmcgY8OzIHRo4buDIGLhu4sgdGhpw6puIGzhu4djaCB2w6AgZOG7sSDEkW/DoW4gc2FpLg0KDQpcKFxSaWdodGFycm93XCkgKipDw6FjaCBraeG7g20gdHJhOioqIHbhur0gYmnhu4N1IMSR4buTIHBo4bqnbiBkxrAgc28gduG7m2kgZ2nDoSB0cuG7iyBk4buxIMSRb8OhbiwgbuG6v3UgdGjhuqV5IHh1IGjGsOG7m25nIGNvbmcgKHBhcmFib2xhLCBTLXNoYXBl4oCmKSB0aMOsIGPDsyB0aOG7gyBsw6AgbcO0IGjDrG5oIHNhaSBk4bqhbmcuDQoNCioqMi4gR2nhuqMgxJHhu4tuaCAyOiAgUGjGsMahbmcgc2FpIGtow7RuZyDEkeG7lWkgKEhvbW9zY2VkYXN0aWNpdHkpKioNCg0KLSBQaMawxqFuZyBzYWkgY+G7p2Egc2FpIHPhu5EgXChcdmFyZXBzaWxvbl9pXCkgbMOgIG5oxrAgbmhhdSDhu58gbeG7jWkgbeG7qWMgZ2nDoSB0cuG7iyBj4bunYSBcKHhcKToNCg0KJCQNClx0ZXh0e1Zhcn0oeV9pKSA9IFxzaWdtYV4yDQokJA0KDQotIE7hur91IHBoxrDGoW5nIHNhaSB0aGF5IMSR4buVaSB0aGVvIFwoeFwpLCB0YSBjw7MgaGnhu4duIHTGsOG7o25nICoqcGjGsMahbmcgc2FpIHRoYXkgxJHhu5VpIChoZXRlcm9zY2VkYXN0aWNpdHkpKiosIGThuqtuIMSR4bq/biDGsOG7m2MgbMaw4bujbmcga2jDtG5nIGhp4buHdSBxdeG6oyB2w6Agc2FpIGzhu4djaCB0cm9uZyBraeG7g20gxJHhu4tuaC4NCg0KXChcUmlnaHRhcnJvd1wpICoqQ8OhY2gga2nhu4NtIHRyYToqKiB24bq9IMSR4buTIHRo4buLIHBo4bqnbiBkxrAuIE7hur91IHBo4bqnbiBkxrAgY8OzIGThuqFuZyBow6xuaCBuw7NuIChy4buZbmcgZOG6p24gaG/hurdjIGjhurlwIGzhuqFpKSB0aMOsIGPDsyB0aOG7gyBi4buLIGhldGVyb3NjZWRhc3RpY2l0eS4NCg0KKiozLiBHaeG6oyDEkeG7i25oIDM6IMSQ4buZYyBs4bqtcCoqDQoNCi0gQ8OhYyBxdWFuIHPDoXQgXCgoeF9pLCB5X2kpXCkgcGjhuqNpIMSR4buZYyBs4bqtcCBuaGF1Lg0KDQotIE7hur91IGThu68gbGnhu4d1IGPDsyB0w61uaCBjaHXhu5dpIHRo4budaSBnaWFuLCBk4buvIGxp4buHdSBs4buTbmcgZ2jDqXAgKG5lc3RlZCBkYXRhKSBob+G6t2MgcGjDom4gbmjDs20gKGNsdXN0ZXJlZCksIHRow6wgbcO0IGjDrG5oIHR1eeG6v24gdMOtbmggY8ahIGLhuqNuIGtow7RuZyBjw7JuIHBow7kgaOG7o3AuDQoNClwoXFJpZ2h0YXJyb3dcKSAqKkPDoWNoIGtp4buDbSB0cmE6KiogbuG6v3UgZOG7ryBsaeG7h3UgdGhlbyB0aOG7nWkgZ2lhbiwgbsOqbiBraeG7g20gdHJhIHBo4bqnbiBkxrAgY8OzIHh1IGjGsOG7m25nIChhdXRvY29ycmVsYXRpb24pIGhheSBraMO0bmcuDQoNCioqNC4gR2nhuqMgxJHhu4tuaCA0OiBQaMOibiBwaOG7kWkgY2h14bqpbiBj4bunYSBzYWkgc+G7kSoqDQoNCi0gTeG6t2MgZMO5IGtow7RuZyBi4bqvdCBideG7mWMgxJHhu4MgxrDhu5tjIGzGsOG7o25nIE9MUywgZ2nhuqMgxJHhu4tuaCBuw6B5IHLhuqV0IHF1YW4gdHLhu41uZyDEkeG7gyBraeG7g20gxJHhu4tuaCBnaeG6oyB0aHV54bq/dCB2w6AgdMOtbmgga2hv4bqjbmcgdGluIGPhuq15Og0KJCQNClx2YXJlcHNpbG9uX2kgXHNpbSBcbWF0aGNhbHtOfSgwLCBcc2lnbWFeMikNCiQkDQoNClwoXFJpZ2h0YXJyb3dcKSAqKkPDoWNoIGtp4buDbSB0cmE6KiogZMO5bmcgYmnhu4N1IMSR4buTIFEtUSBwbG90IChxdWFudGlsZS1xdWFudGlsZSkgxJHhu4Mgc28gc8OhbmggcGjhuqduIGTGsCB24bubaSBwaMOibiBwaOG7kWkgY2h14bqpbi4NCg0KIyMjICoqMy4zIEPDoWMgbG/huqFpIHBo4bqnbiBkxrAgKFJlc2lkdWFscykqKg0KDQpQaOG6p24gZMawIGzDoCBjw7RuZyBj4bulIHRydW5nIHTDom0gxJHhu4MgY2jhuqluIMSRb8OhbiBtw7QgaMOsbmguIEPDsyBuaGnhu4F1IGPDoWNoIHTDrW5oIHBo4bqnbiBkxrA6DQoNCioqMS4gUmF3IHJlc2lkdWFsIChQaOG6p24gZMawIHRow7QpOioqDQoNCiQkDQplX2kgPSB5X2kgLSBcaGF0e3l9X2kNCiQkDQrEkMahbiBnaeG6o24gbMOgIGhp4buHdSBnaeG7r2EgZ2nDoSB0cuG7iyB0aOG7sWMgdOG6vyB2w6AgZ2nDoSB0cuG7iyBk4buxIMSRb8Ohbi4NCg0KKioyLiBTdGFuZGFyZGl6ZWQgcmVzaWR1YWwgKFBo4bqnbiBkxrAgY2h14bqpbiBow7NhKToqKg0KDQokJA0Kcl9pID0gXGZyYWN7ZV9pfXtcaGF0e1xzaWdtYX0gXHNxcnR7MSAtIGhfe2lpfX19DQokJA0KDQotIEdpw7pwIHNvIHPDoW5oIHBo4bqnbiBkxrAgZ2nhu69hIGPDoWMgxJFp4buDbSBjw7MgbGV2ZXJhZ2Uga2jDoWMgbmhhdS4NCg0KLSBcKCBoX3tpaX0gXCk6IGxldmVyYWdlIOKAkyBt4bupYyDhuqNuaCBoxrDhu59uZyBj4bunYSDEkWnhu4NtIFwoIGkgXCkgbMOqbiBk4buxIMSRb8OhbiBcKCBcaGF0e3l9X2kgXCkuDQoNCioqMy4gU3R1ZGVudGl6ZWQgcmVzaWR1YWw6KioNCg0KJCQNCnRfaSA9IFxmcmFje2VfaX17XGhhdHtcc2lnbWF9X3soaSl9IFxzcXJ0ezEgLSBoX3tpaX19fQ0KJCQNCg0KLSBHaeG7kW5nIHN0YW5kYXJkaXplZCByZXNpZHVhbCBuaMawbmcgZMO5bmcgXChcaGF0e1xzaWdtYX1feyhpKX1cKSDigJMgcGjGsMahbmcgc2FpIMaw4bubYyBsxrDhu6NuZyBraMO0bmcgZMO5bmcgcXVhbiBzw6F0IFwoaVwpIFwoXHJpZ2h0YXJyb3dcKSBjaMOtbmggeMOhYyBoxqFuLg0KDQotIETDuW5nIMSR4buDIHBow6F0IGhp4buHbiBuZ2/huqFpIGxhaSB2w6wgbsOzIGfhuqduIHbhu5tpIHBow6JuIHBo4buRaSB0Lg0KDQojIyMgKiozLjQgQmnhu4N1IMSR4buTIHBo4bqnbiBkxrAgKFJlc2lkdWFsIFBsb3RzKSoqDQoNCk3hu5l0IHPhu5EgYmnhu4N1IMSR4buTIHF1YW4gdHLhu41uZzoNCg0KLSAqKlJlc2lkdWFsIHZzIEZpdHRlZCBQbG90OioqIGtp4buDbSB0cmEgdHV54bq/biB0w61uaCB2w6AgcGjGsMahbmcgc2FpIGtow7RuZyDEkeG7lWkuDQoNCi0gKipOb3JtYWwgUS1RIFBsb3QqKjoga2nhu4NtIHRyYSBwaMOibiBwaOG7kWkgY2h14bqpbiBj4bunYSBwaOG6p24gZMawLg0KDQotICoqU2NhbGUtTG9jYXRpb24gUGxvdDoqKiBjaHXhuqluIGjDs2EgcGjhuqduIGTGsCDEkeG7gyBk4buFIHBow6F0IGhp4buHbiBoZXRlcm9zY2VkYXN0aWNpdHkuDQoNCi0gKipSZXNpZHVhbHMgdnMgTGV2ZXJhZ2UgUGxvdDoqKiB4w6FjIMSR4buLbmggxJFp4buDbSDhuqNuaCBoxrDhu59uZyBs4bubbi4NCg0KIyMjICoqMy41IE5nb+G6oWkgbGFpIChPdXRsaWVycykqKg0KDQoqKsSQ4buLbmggbmdoxKlhOioqIEzDoCBjw6FjIMSRaeG7g20gZOG7ryBsaeG7h3UgbcOgIGdpw6EgdHLhu4sgcGjhuqNuIGjhu5NpIFwoIHlfaSBcKSBraMOhYyBiaeG7h3QgbOG7m24gc28gduG7m2kgZOG7sSDEkW/DoW4gdOG7qyBtw7QgaMOsbmgsIGTDuSBiaeG6v24gXCggeF9pIFwpIGtow7RuZyBi4bqldCB0aMaw4budbmcuDQoNCkTDuW5nIHN0dWRlbnRpemVkIHJlc2lkdWFsIMSR4buDIGtp4buDbSB0cmEuDQoNClF1eSB04bqvYyBuZ8aw4buhbmc6DQoNCi0gXCh8dF9pfCA+IDJcKTogbmdoaSBuZ+G7nS4NCg0KLSBcKHx0X2l8ID4gM1wpOiBjw7MgdGjhu4MgbMOgIG5nb+G6oWkgbGFpIMSRw6FuZyBr4buDLg0KDQpcKFxSaWdodGFycm93XCkgKipOZ2/huqFpIGxhaSBraMO0bmcgbmjhuqV0IHRoaeG6v3QgY8OzIOG6o25oIGjGsOG7n25nIGzhu5tuKiosIG5oxrBuZyBj4bqnbiBraeG7g20gdHJhIGvhu7kuDQojIyAqKkNIxq/GoE5HIDQ6IMav4buaQyBMxq/hu6JORyBI4buiUCBMw50gVOG7kEkgxJBBKioNCk1heGltdW0gbGlrZWhvb2QgZXN0aW1hdGlvbiAtIE1MRSAoxrDhu5tjIGzGsOG7o25nIGjhu6NwIGzDvSB04buRaSDEkWEpDQoNCiMjIyAqKjQuMSBHaeG7m2kgdGhp4buHdSoqDQoNClBoxrDGoW5nIHBow6FwIGLDrG5oIHBoxrDGoW5nIHThu5FpIHRoaeG7g3UgKE9MUykgY2jhu4kgaG/huqF0IMSR4buZbmcgaGnhu4d1IHF14bqjIGtoaSBk4buvIGxp4buHdSB0aOG7j2EgbcOjbiBjw6FjIGdp4bqjIMSR4buLbmggbmjGsCBwaMOibiBwaOG7kWkgY2h14bqpbiwgcGjGsMahbmcgc2FpIGtow7RuZyDEkeG7lWksIHbDoCBiaeG6v24gcGjhuqNuIGjhu5NpIGxpw6puIHThu6VjLiBUdXkgbmhpw6puLCBuaGnhu4F1IGxv4bqhaSBk4buvIGxp4buHdSB0aOG7sWMgdOG6vyBraMO0bmcgdHXDom4gdGhlbyBuaOG7r25nIMSRaeG7gXUga2nhu4duIMSRw7Mg4oCTIHbDrSBk4bulOiBk4buvIGxp4buHdSBuaOG7iyBwaMOibiwgxJHhur9tLCBob+G6t2MgZMawxqFuZyBsacOqbiB04bulYy4gS2hpIMSRw7MsIE1heGltdW0gTGlrZWxpaG9vZCBFc3RpbWF0aW9uIChNTEUpIGzDoCBwaMawxqFuZyBwaMOhcCBt4bqhbmggbeG6vSBoxqFuLCBkw7luZyDEkeG7gyDGsOG7m2MgbMaw4bujbmcgY8OhYyB0aGFtIHPhu5EgdHJvbmcgbcO0IGjDrG5oIHThu5VuZyBxdcOhdC4NCg0KTUxFIGzDoCBu4buBbiB04bqjbmcgY2hvIG3DtCBow6xuaCB0dXnhur9uIHTDrW5oIHThu5VuZyBxdcOhdCAoR0xNKSwgduG7kW4gbMOgIHRydW5nIHTDom0gY+G7p2EgcGjhuqduIGPDsm4gbOG6oWkgdHJvbmcgc8OhY2guDQoNCiMjIyAqKjQuMiBIw6BtIGjhu6NwIGzDvSAoTGlrZWxpaG9vZCBGdW5jdGlvbikqKg0KDQoqKsSQ4buLbmggbmdoxKlhOioqIEjDoG0gaOG7o3AgbMO9IGzDoCBt4buZdCBow6BtIHjDoWMgc3XhuqV0IGPhu6dhIHRvw6BuIGLhu5kgZOG7ryBsaeG7h3UgxJHDoyBxdWFuIHPDoXQsIGJp4buDdSBkaeG7hW4gbmjGsCBt4buZdCBow6BtIGPhu6dhIHRoYW0gc+G7kSBcKFx0aGV0YVwpLg0KDQpHaeG6oyBz4butIHRhIGPDsyBt4buZdCBt4bqrdSBn4buTbSBcKG5cKSBxdWFuIHPDoXQgxJHhu5ljIGzhuq1wIFwoeV8xLCB5XzIsIFxsZG90cywgeV9uXCksIHbhu5tpIG3hu5dpIFwoeV9pXCkgY8OzIHBow6JuIHBo4buRaSB4w6FjIHN14bqldCBcKGYoeV9pOyBcdGhldGEpXCksIHRow6w6DQoNCioqSMOgbSBo4bujcCBsw706KioNCg0KJCQNCkwoXHRoZXRhKSA9IFxwcm9kX3tpPTF9XntufSBmKHlfaTsgXHRoZXRhKQ0KJCQNCg0KLSBcKEwoXHRoZXRhKVwpOiBow6BtIGjhu6NwIGzDvQ0KDQotIFwoXHRoZXRhXCk6IHZlY3RvciBjw6FjIHRoYW0gc+G7kSBj4bqnbiDGsOG7m2MgbMaw4bujbmcNCg0KLSBcKGYoeV9pOyBcdGhldGEpXCk6IG3huq10IMSR4buZIHjDoWMgc3XhuqV0IChob+G6t2Mga2jhu5FpIHjDoWMgc3XhuqV0KSBj4bunYSBcKHlfaVwpDQoNCioqTG9nLWjhu6NwIGzDvSAobG9nLWxpa2VsaWhvb2QpOioqDQoNCiQkDQpcZWxsKFx0aGV0YSkgPSBcbG9nIEwoXHRoZXRhKSA9IFxzdW1fe2k9MX1ee259IFxsb2cgZih5X2k7IFx0aGV0YSkNCiQkDQoNCi0gROG7hSDEkeG6oW8gaMOgbSBoxqFuIHbDrCB0w61jaCB0aMOgbmggdOG7lW5nLg0KDQotIEdpw6EgdHLhu4sgY+G7sWMgxJHhuqFpIGPhu6dhIFwoXGVsbChcdGhldGEpXCkgdHLDuW5nIHbhu5tpIFwoTChcdGhldGEpXCkuDQoNCiMjIyAqKjQuMyDGr+G7m2MgbMaw4bujbmcgaOG7o3AgbMO9IHThu5FpIMSRYSAoTWF4aW11bSBMaWtlbGlob29kIEVzdGltYXRpb24g4oCTIE1MRSkqKg0KDQoqKsSQ4buLbmggbmdoxKlhOioqIE1MRSBsw6AgZ2nDoSB0cuG7iyBcKFxoYXR7XHRoZXRhfVwpIGPhu6dhIHRoYW0gc+G7kSBcKFx0aGV0YVwpIHNhbyBjaG8gbG9nLWxpa2VsaWhvb2QgxJHhuqF0IGPhu7FjIMSR4bqhaS4NCg0KDQokJA0KXGhhdHtcdGhldGF9ID0gXGFyZ1xtYXhfe1x0aGV0YX0gXCwgXGVsbChcdGhldGEpDQokJA0KxJDhu4MgdMOsbSBcKFxoYXR7XHRoZXRhfVwpLCB0YSBnaeG6o2k6DQoNCiQkDQpcZnJhY3tkXGVsbChcdGhldGEpfXtkXHRoZXRhfSA9IDANCiQkDQoNClwoXFJpZ2h0YXJyb3dcKSDEkMOieSBn4buNaSBsw6AgKnBoxrDGoW5nIHRyw6xuaCDEkWnhu4NtKiAoc2NvcmUgZXF1YXRpb24pLg0KDQojIyMgKio0LjQgTWEgdHLhuq1uIHRow7RuZyB0aW4gRmlzaGVyIHbDoCBwaMawxqFuZyBzYWkqKg0KDQoqKjEuIEjDoG0gxJFp4buDbSAoU2NvcmUgRnVuY3Rpb24pOioqDQoNCiQkDQpVKFx0aGV0YSkgPSBcZnJhY3tkXGVsbChcdGhldGEpfXtkXHRoZXRhfQ0KJCQNCg0KLSBcKFUoXHRoZXRhKVwpOiDEkeG7mSBk4buRYyBj4bunYSBsb2ctbGlrZWxpaG9vZCB0aGVvIFwoXHRoZXRhXCkNCg0KKioyLiBNYSB0cuG6rW4gdGjDtG5nIHRpbiBGaXNoZXI6KioNCg0KJCQNCkkoXHRoZXRhKSA9IC1cbWF0aGJie0V9IFxsZWZ0WyBcZnJhY3tkXjIgXGVsbChcdGhldGEpfXtkXHRoZXRhXjJ9IFxyaWdodF0NCiQkDQoNCi0gXChJKFx0aGV0YSlcKToga+G7syB24buNbmcgw6JtIGPhu6dhIMSR4bqhbyBow6BtIGLhuq1jIGhhaSBsb2ctbGlrZWxpaG9vZCDihpIgxJFvIMSR4buZIGNvbmcuDQoNCi0gTMOgIHjhuqVwIHjhu4kgbmfGsOG7o2MgbOG6oWkgY+G7p2EgcGjGsMahbmcgc2FpOg0KJCQNClxtYXRocm17VmFyfShcaGF0e1x0aGV0YX0pIFxhcHByb3ggXGZyYWN7MX17SShcdGhldGEpfQ0KJCQNCg0KIyMjICoqNC41IEPDoWMgdMOtbmggY2jhuqV0IGPhu6dhIE1MRSoqDQoNCk1MRSBjw7Mgbmhp4buBdSB0w61uaCBjaOG6pXQgdOG7kXQgduG7gSBt4bq3dCBsw70gdGh1eeG6v3QsIMSR4bq3YyBiaeG7h3Qga2hpIGvDrWNoIHRoxrDhu5tjIG3huqt1IG4gbOG7m246DQoNCnwgVMOtbmggY2jhuqV0ICAgICAgICAgICAgICAgIHwgR2nhuqNpIHRow61jaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwNCnwgKipOaOG6pXQgcXXDoW4qKiAgICAgICAgICAgIHwgJFxoYXR7XHRoZXRhfSBcdG8gXHRoZXRhJCBraGkgJG4gXHRvIFxpbmZ0eSQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KfCAqKktow7RuZyBjaOG7h2NoIHRp4buHbSBj4bqtbioqIHwgxJDhu5kgbOG7h2NoIGdp4buvYSAkXGhhdHtcdGhldGF9JCB2w6AgJFx0aGV0YSQgdGnhur9uIHbhu4EgMCAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KfCAqKkhp4buHdSBxdeG6oyoqICAgICAgICAgICAgIHwgTUxFIMSR4bqhdCBnaeG7m2kgaOG6oW4gQ3JhbcOpcuKAk1JhbywgbMOgIMaw4bubYyBsxrDhu6NuZyAidOG7kXQgbmjhuqV0IiAgICAgICAgICAgICAgICAgICAgICAgfA0KfCAqKlRp4buHbSBj4bqtbiBjaHXhuqluKiogICAgICAgfCBLaGkgJG4kIGzhu5tuLCBwaMOibiBwaOG7kWkgY+G7p2EgJFxoYXR7XHRoZXRhfSQgZ+G6p24gY2h14bqpbjogJFxoYXR7XHRoZXRhfSBcc2ltIFxtYXRoY2Fse059KFx0aGV0YSwgSShcdGhldGEpXnstMX0pJCB8DQoNCiMjICoqQ0jGr8agTkcgNTogQ+G6pFUgVFLDmkMgQ+G7pkEgTcOUIEjDjE5IIFRVWeG6vk4gVMONTkggVOG7lE5HIFFVw4FUIChHTE0gU1RSVUNUVVJFKSoqDQoNCiMjIyAqKjUuMSBHaeG7m2kgdGhp4buHdSoqDQoNCk3DtCBow6xuaCB0dXnhur9uIHTDrW5oIHThu5VuZyBxdcOhdCAoR0xNKSBsw6AgbeG7mXQga2h1w7RuIGto4buVIG3huqFuaCBt4bq9IGNobyB2aeG7h2MgbcO0IGjDrG5oIGjDs2EgY8OhYyBsb+G6oWkgZOG7ryBsaeG7h3Uga2jDoWMgbmhhdSDigJMga2jDtG5nIGNo4buJIGThu68gbGnhu4d1IGxpw6puIHThu6VjIGPDsyBwaMOibiBwaOG7kWkgY2h14bqpbiBuaMawIHRyb25nIGjhu5NpIHF1eSB0dXnhur9uIHTDrW5oLiBHTE0gYmFvIGfhu5NtIGjhu5NpIHF1eSBsb2dpc3RpYywgaOG7k2kgcXV5IFBvaXNzb24sIGjhu5NpIHF1eSBHYW1tYS4uLiB2w6AgbeG7nyBy4buZbmcga2jhuqMgbsSDbmcgcGjDom4gdMOtY2ggxJHhur9uIGThu68gbGnhu4d1IG5o4buLIHBow6JuLCDEkeG6v20sIHThu7cgbOG7hyB2w6AgZMawxqFuZyBsacOqbiB04bulYy4NCg0KTeG7l2kgR0xNIMSRxrDhu6NjIHjDonkgZOG7sW5nIHRyw6puIGPDuW5nIG3hu5l0IG5ndXnDqm4gbMO9IGNodW5nIGfhu5NtIGJhIHRow6BuaCBwaOG6p24gY2jDrW5oOiBwaMOibiBwaOG7kWkgeMOhYyBzdeG6pXQsIGjDoG0gbGnDqm4ga+G6v3QsIHbDoCB0aMOgbmggcGjhuqduIHR1eeG6v24gdMOtbmguDQoNCiMjIyAqKjUuMiBD4bqldSB0csO6YyAzIHBo4bqnbiBj4bunYSBHTE0qKg0KDQoqKjEuIFRow6BuaCBwaOG6p24gbmfhuqt1IG5oacOqbiAoUmFuZG9tIGNvbXBvbmVudCkqKg0KDQpCaeG6v24gcGjhuqNuIGjhu5NpIFwoIHlfaSBcKSDEkcaw4bujYyBnaeG6oyDEkeG7i25oIHBow6JuIHBo4buRaSB0aGVvIG3hu5l0IHBow6JuIHBo4buRaSB0aHXhu5ljIGjhu40gaMOgbSBtxakgbeG7mXQgdGhhbSBz4buRIChPbmUtUGFyYW1ldGVyIEV4cG9uZW50aWFsIEZhbWlseSk6DQoNCiQkDQpmKHlfaTsgXHRoZXRhX2ksIFxwaGkpID0gXGV4cCBcbGVmdFx7IFxmcmFje3lfaSBcdGhldGFfaSAtIGIoXHRoZXRhX2kpfXtccGhpfSArIGMoeV9pLCBccGhpKSBccmlnaHRcfQ0KJCQNCg0KLSAqKsOdIG5naMSpYSBjw6FjIGvDvSBoaeG7h3U6KioNCg0KICAtIFwoXHRoZXRhX2lcKTogdGhhbSBz4buRIHThu7Egbmhpw6puIChuYXR1cmFsIHBhcmFtZXRlcikNCiAgLSBcKFxwaGlcKTogdGhhbSBz4buRIHBow6JuIHTDoW4gKGRpc3BlcnNpb24gcGFyYW1ldGVyKSwga2jDtG5nIHBo4bqjaSBsw7pjIG7DoG8gY8WpbmcgY8OzICh2w60gZOG7pSBQb2lzc29uIHRow6wgXChccGhpID0gMVwpKQ0KICAtIFwoYihcdGhldGFfaSlcKTogaMOgbSBsb2cgcGFydGl0aW9uDQogIC0gXChjKHlfaSwgXHBoaSlcKTogaMOgbSBjaHXhuqluIGjDs2EgxJHhu4MgYuG6o28gdG/DoG4gdMOtY2ggcGjDom4gYuG6sW5nIDENCg0K4oaSIEjhu40gaMOgbSBtxakgYmFvIGfhu5NtIE5vcm1hbCwgUG9pc3NvbiwgQmlub21pYWwsIEdhbW1hLC4uLg0KDQoNCioqMi4gVGjDoG5oIHBo4bqnbiBo4buHIHRo4buRbmcgKFN5c3RlbWF0aWMgY29tcG9uZW50KSoqDQoNCkdp4buRbmcgbmjGsCBo4buTaSBxdXkgdHV54bq/biB0w61uaCwgR0xNIHbhuqtuIGTDuW5nIG3hu5l0IHByZWRpY3RvciB0dXnhur9uIHTDrW5oOg0KDQokJA0KXGV0YV9pID0geF9pXlQgXGJldGEgPSBcYmV0YV8wICsgXGJldGFfMSB4X3tpMX0gKyBcY2RvdHMgKyBcYmV0YV9wIHhfe2lwfQ0KJCQNCg0Kw50gbmdoxKlhOg0KDQotIFwoXGV0YV9pXCk6IHByZWRpY3RvciB0dXnhur9uIHTDrW5oDQotIFwoeF9pXCk6IHZlY3RvciBow6BuZyBn4buTbSBjw6FjIGJp4bq/biBnaeG6o2kgdGjDrWNoIGPhu6dhIHF1YW4gc8OhdCBcKGlcKQ0KLSBcKFxiZXRhXCk6IHZlY3RvciBo4buHIHPhu5EgaOG7k2kgcXV5DQoNCsSQw6J5IGzDoCB0aMOgbmggcGjhuqduIGNo4bupYSDhuqNuaCBoxrDhu59uZyBj4bunYSBjw6FjIGJp4bq/biDEkeG7mWMgbOG6rXAgbMOqbiBtw7QgaMOsbmguDQoNCg0KKiozLiBIw6BtIGxpw6puIGvhur90IChMaW5rIGZ1bmN0aW9uKSoqDQoNCkdMTSBkw7luZyBt4buZdCBow6BtIGxpw6puIGvhur90IFwoIGcoXGNkb3QpIFwpIMSR4buDIGvhur90IG7hu5FpIHRydW5nIGLDrG5oIFwoXG11X2kgPSBFW3lfaV1cKSB24bubaSBwcmVkaWN0b3IgdHV54bq/biB0w61uaCBcKFxldGFfaVwpOg0KDQokJA0KZyhcbXVfaSkgPSBcZXRhX2kgXHF1YWQgXHRleHR7aGF5fSBccXVhZCBcbXVfaSA9IGdeey0xfShcZXRhX2kpDQokJA0KDQrihpIgQ2hvIHBow6lwIG3DtCBow6xuaCBow7NhIGPDoWMgYmnhur9uIHBo4bqjbiBo4buTaSBjw7MgxJHhurdjIHTDrW5oIHBoaSB0dXnhur9uLCBraMO0bmcgw6JtLCBnaeG7m2kgaOG6oW4gdHJvbmcga2hv4bqjbmcgKDAsMSks4oCmDQoNCioqSMOgbSBsacOqbiBr4bq/dCB0aMaw4budbmcgZMO5bmc6KioNCg0KfCBQaMOibiBwaOG7kWkgIHwgXChcbXVfaSA9IEVbeV9pXVwpICAgIHwgTGluayBmdW5jdGlvbiBcKGcoXG11KVwpICAgICAgICAgICAgICAgICAgIHwgR2hpIGNow7ogICAgICAgICAgICAgICAgICAgfA0KfC0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfA0KfCBOb3JtYWwgICAgIHwgXChcbXUgXGluIFxtYXRoYmJ7Un1cKSAgfCBcKGcoXG11KSA9IFxtdVwpIChpZGVudGl0eSkgICAgICAgICAgICAgICAgfCBI4buTaSBxdXkgdHV54bq/biB0w61uaCBjaHXhuqluICAgfA0KfCBCaW5vbWlhbCAgIHwgXChcbXUgXGluICgwLDEpXCkgICAgICAgfCBcKGcoXG11KSA9IFxsb2cgXGZyYWN7XG11fXsxLVxtdX1cKSAgICAgICAgfCBMb2dpc3RpYyByZWdyZXNzaW9uICAgICAgICB8DQp8IFBvaXNzb24gICAgfCBcKFxtdSA+IDBcKSAgICAgICAgICAgICB8IFwoZyhcbXUpID0gXGxvZyhcbXUpXCkgICAgICAgICAgICAgICAgICAgICAgfCBI4buTaSBxdXkgxJHhur9tICAgICAgICAgICAgICAgfA0KfCBHYW1tYSAgICAgIHwgXChcbXUgPiAwXCkgICAgICAgICAgICAgfCBcKGcoXG11KSA9IFxsb2coXG11KVwpIGhv4bq3YyBcKGcoXG11KSA9IFxmcmFjezF9e1xtdX1cKSB8IE3DtCBow6xuaCBk4buvIGxp4buHdSBkxrDGoW5nICAgIHwNCg0KIyMjICoqNS4zIFbDrSBk4bulIG3DtCBow6xuaCBow7NhIHRyb25nIEdMTSoqDQoNCioqMS4gSOG7k2kgcXV5IExvZ2lzdGljIChuaOG7iyBwaMOibikqKg0KDQpcWw0KeV9pIFxzaW0gXHRleHR7QmVybm91bGxpfShccGlfaSkNClxdDQoNClxbDQpnKFxwaV9pKSA9IFxsb2cgXGxlZnQoXGZyYWN7XHBpX2l9ezEtXHBpX2l9XHJpZ2h0KSA9IFxldGFfaQ0KXF0NCg0KXFsNClxwaV9pID0gUCh5X2kgPSAxIFxtaWQgeF9pKQ0KXF0NCg0KLSBEw7luZyBjaG8gZOG7ryBsaeG7h3UgbmjGsDogc+G7kW5nL2No4bq/dCwgbXVhL2tow7RuZyBtdWEsIMSRw7puZy9zYWnigKYNCg0KDQoqKjIuIEjhu5NpIHF1eSBQb2lzc29uICjEkeG6v20pKioNCg0KXFsNCnlfaSBcc2ltIFx0ZXh0e1BvaXNzb259KFxtdV9pKQ0KXF0NCg0KXFsNClxsb2coXG11X2kpID0geF9pXlQgXGJldGENClxdDQoNCi0gXChcbXVfaVwpOiBz4buRIHPhu7Ega2nhu4duIGvhu7MgduG7jW5nIHjhuqN5IHJhLg0KDQotIETDuW5nIGNobyBk4buvIGxp4buHdTogc+G7kSBjYSBi4buHbmgsIHPhu5EgbOG6p24gdmkgcGjhuqFtLCBz4buRIGdpYW8gZOG7i2No4oCmDQoNCg0KKiozLiBI4buTaSBxdXkgR2FtbWEgKGTGsMahbmcgbGnDqm4gdOG7pWMpKioNCg0KXFsNCnlfaSBcc2ltIFx0ZXh0e0dhbW1hfShcYWxwaGEsIFxtdV9pKQ0KXF0NCg0KSMOgbSBsacOqbiBr4bq/dDoNCg0KXFsNCmcoXG11X2kpID0gXGxvZyhcbXVfaSkgXHF1YWQgXHRleHR7aG/hurdjfSBccXVhZCBnKFxtdV9pKSA9IFxmcmFjezF9e1xtdV9pfQ0KXF0NCg0KLSBEw7luZyBjaG8gZOG7ryBsaeG7h3UgY2hpIHBow60sIMSR4buZIGTDoGksIHRo4budaSBnaWFuDQoNCiMjIyAqKjUuNCBIw6BtIHBoxrDGoW5nIHNhaSAoVmFyaWFuY2UgRnVuY3Rpb24pKioNCg0KVHJvbmcgR0xNLCBwaMawxqFuZyBzYWkgY+G7p2EgXCggeV9pIFwpIGtow7RuZyBj4bqnbiBi4bqxbmcgbmhhdSBtw6AgxJHGsOG7o2MgbcO0IGjDrG5oIGjDs2EgbmjGsCBow6BtIGPhu6dhIFwoIFxtdV9pIFwpOg0KDQpcWw0KXHRleHR7VmFyfSh5X2kpID0gXHBoaSBcY2RvdCBWKFxtdV9pKQ0KXF0NCg0KVHJvbmcgxJHDszoNCg0KLSBcKCBccGhpIFwpOiB0aGFtIHPhu5EgcGjDom4gdMOhbiAoZGlzcGVyc2lvbiBwYXJhbWV0ZXIpDQotIFwoIFYoXG11KSBcKTogaMOgbSBwaMawxqFuZyBzYWkgcGjhu6UgdGh14buZYyB2w6BvIHRydW5nIGLDrG5oIFwoIFxtdSBcKQ0KDQpIw6BtIFwoIFYoXG11KSBcKSB0w7l5IHRoZW8gcGjDom4gcGjhu5FpIG5oxrAgc2F1Og0KDQp8IFBow6JuIHBo4buRaSAgfCBcKCBWKFxtdSkgXCkgICAgICAgICAgfA0KfC0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwNCnwgTm9ybWFsICAgICB8IDEgICAgICAgICAgICAgICAgICAgICB8DQp8IEJpbm9taWFsICAgfCBcKCBcbXUgKDEgLSBcbXUpIFwpICAgfA0KfCBQb2lzc29uICAgIHwgXCggXG11IFwpICAgICAgICAgICAgIHwNCnwgR2FtbWEgICAgICB8IFwoIFxtdV4yIFwpICAgICAgICAgICB8DQoNClZp4buHYyBtw7QgaMOsbmggaMOzYSBwaMawxqFuZyBzYWkgbmjGsCB0csOqbiBnacO6cCB44butIGzDvSDEkcaw4bujYyBoaeG7h24gdMaw4bujbmcgcGjGsMahbmcgc2FpIHRoYXkgxJHhu5VpIChoZXRlcm9zY2VkYXN0aWNpdHkpLCB24buRbiBsw6AgbeG7mXQgZ2nhuqMgxJHhu4tuaCBi4buLIHZpIHBo4bqhbSB0cm9uZyBwaMawxqFuZyBwaMOhcCBPTFMgKEjhu5NpIHF1eSB0dXnhur9uIHTDrW5oIHRow7RuZyB0aMaw4budbmcpLg0KDQojIyMgKio1LjUgQ8OhYyBraMOhaSBuaeG7h20gbeG7nyBy4buZbmcqKg0KDQoqKkNhbm9uaWNhbCBMaW5rIEZ1bmN0aW9uKiogbMOgIGjDoG0gbGnDqm4ga+G6v3Qgc2FvIGNobyBwcmVkaWN0b3IgdHV54bq/biB0w61uaCBjaMOtbmggbMOgIHRoYW0gc+G7kSB04buxIG5oacOqbiBcKFx0aGV0YVwpIHRyb25nIHBow6JuIHBo4buRaSBo4buNIGjDoG0gbcWpOg0KDQpcWw0KXHRoZXRhX2kgPSBcZXRhX2kgPSB4X2leVCBcYmV0YQ0KXF0NCg0KVsOtIGThu6UgduG7gSBow6BtIGxpw6puIGvhur90IGNodeG6qW4gKGNhbm9uaWNhbCBsaW5rKToNCg0KfCBQaMOibiBwaOG7kWkgfCBIw6BtIGxpw6puIGvhur90IChMaW5rIGZ1bmN0aW9uKSAgICB8DQp8LS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAgfA0KfCBCaW5vbWlhbCAgfCBsb2dpdDogXChcbG9nXGZyYWN7XG11fXsxLVxtdX1cKXwNCnwgUG9pc3NvbiAgIHwgbG9nOiBcKFxsb2coXG11KVwpICAgICAgICAgICAgICB8DQp8IE5vcm1hbCAgICB8IGlkZW50aXR5OiBcKFxtdVwpICAgICAgICAgICAgICAgfA0KDQo+ICoqTMawdSDDvToqKiBEw7kgR0xNIGfhu41pIGzDoCAidHV54bq/biB0w61uaCIsIG5oxrBuZyBt4buRaSBxdWFuIGjhu4cgZ2nhu69hIFwoIHkgXCkgdsOgIFwoIHggXCkgY8OzIHRo4buDICoqcGhpIHR1eeG6v24qKiBkbyBz4butIGThu6VuZyBow6BtIGxpw6puIGvhur90IChsaW5rIGZ1bmN0aW9uKS4NCg0KIyMgKipDSMavxqBORyA2OiDGr+G7mkMgTMav4buiTkcgVFJPTkcgTcOUIEjDjE5IIFRVWeG6vk4gVMONTkggVOG7lE5HIFFVw4FUIChHTE1zKSoqDQoNCiMjIyAqKjYuMSBHaeG7m2kgdGhp4buHdSoqDQoNClNhdSBraGkgeMOhYyDEkeG7i25oIMSRxrDhu6NjIGPhuqV1IHRyw7pjIGPhu6dhIG3hu5l0IEdMTSAoZ+G7k20gcGjDom4gcGjhu5FpIHjDoWMgc3XhuqV0LCBow6BtIGxpw6puIGvhur90IHbDoCB0aMOgbmggcGjhuqduIHR1eeG6v24gdMOtbmgpLCBixrDhu5tjIHRp4bq/cCB0aGVvIGzDoCDGsOG7m2MgbMaw4bujbmcgY8OhYyBo4buHIHPhu5EgaOG7k2kgcXV5IFwoXGJldGFcKSB0cm9uZyBtw7QgaMOsbmguDQoNCktow6FjIHbhu5tpIGjhu5NpIHF1eSB0dXnhur9uIHTDrW5oIGPhu5UgxJFp4buDbiDigJMgbsahaSB0YSBkw7luZyBwaMawxqFuZyBwaMOhcCBiw6xuaCBwaMawxqFuZyB04buRaSB0aGnhu4N1IChPTFMpIOKAkyB0cm9uZyBHTE0sIGPDoWMgaOG7hyBz4buRIMSRxrDhu6NjIMaw4bubYyBsxrDhu6NuZyBi4bqxbmcgKipwaMawxqFuZyBwaMOhcCBo4bujcCBsw70gdOG7kWkgxJFhIChNYXhpbXVtIExpa2VsaWhvb2QgRXN0aW1hdGlvbiAtIE1MRSkqKiB0aMO0bmcgcXVhIG3hu5l0IHRodeG6rXQgdG/DoW4gZ+G7jWkgbMOgICoqSXRlcmF0aXZlbHkgUmV3ZWlnaHRlZCBMZWFzdCBTcXVhcmVzIChJUkxTKSoqLg0KDQpQaMawxqFuZyBwaMOhcCBJUkxTIHRo4buxYyBoaeG7h24gdmnhu4djIGPhuq1wIG5o4bqtdCBjw6FjIMaw4bubYyBsxrDhu6NuZyBcKFxiZXRhXCkgbOG6t3AgxJFpIGzhurdwIGzhuqFpLCBt4buXaSBs4bqnbiBk4buxYSB0csOqbiB0cuG7jW5nIHPhu5EgxJHGsOG7o2MgxJFp4buBdSBjaOG7iW5oIHNhbyBjaG8gcGjDuSBo4bujcCB24bubaSBwaMOibiBwaOG7kWkgY+G7p2EgZOG7ryBsaeG7h3UgdsOgIGjDoG0gbGnDqm4ga+G6v3QgxJHGsOG7o2MgY2jhu41uLg0KDQojIyMgKio2LjIgVOG7lW5nIHF1YW4gduG7gSDGsOG7m2MgbMaw4bujbmcgaOG7o3AgbMO9IHThu5FpIMSRYSAoTUxFKSB0cm9uZyBHTE0qKg0KDQoqKkNobyBk4buvIGxp4buHdSBn4buTbToqKg0KDQotIEJp4bq/biBwaOG6o24gaOG7k2k6IFwoIHlfMSwgeV8yLCBcbGRvdHMsIHlfbiBcKSBjw7MgdGjhu4MgbMOgIGJp4bq/biDEkeG6v20sIG5o4buLIHBow6JuIGhv4bq3YyBsacOqbiB04bulYyBkxrDGoW5n4oCmDQoNCi0gQmnhur9uIGdp4bqjaSB0aMOtY2g6IFwoIHhfe2kxfSwgXGxkb3RzLCB4X3tpcH0gXCkgduG7m2kgXChpPTEsIFxsZG90cywgblwpLg0KDQoqKk3DtCBow6xuaCBHTE0gxJHGsOG7o2MgYmnhu4N1IGRp4buFbiBuaMawIHNhdToqKg0KDQpcWw0KZyhcbXVfaSkgPSBcZXRhX2kgPSBcbWF0aGJme3h9X2leVCBcYm9sZHN5bWJvbHtcYmV0YX0NClxdDQoNCnbhu5tpDQoNClxbDQpcbXVfaSA9IEVbeV9pXSA9IGdeey0xfShcbWF0aGJme3h9X2leVCBcYm9sZHN5bWJvbHtcYmV0YX0pDQpcXQ0KDQpN4bulYyB0acOqdSBsw6AgdMOsbSDGsOG7m2MgbMaw4bujbmcgXChcaGF0e1xib2xkc3ltYm9se1xiZXRhfX1cKSBzYW8gY2hvIGjDoG0gbG9nLWxpa2VsaWhvb2QgxJHhuqF0IGPhu7FjIMSR4bqhaToNCg0KXFsNClxlbGwoXGJvbGRzeW1ib2x7XGJldGF9KSA9IFxzdW1fe2k9MX1ebiBcbG9nIGYoeV9pOyBcdGhldGFfaSkNClxdDQoNCioqVHJvbmcgxJHDszoqKg0KDQotIFwoZih5X2k7IFx0aGV0YV9pKVwpIGzDoCBow6BtIG3huq10IMSR4buZIHjDoWMgc3XhuqV0IChob+G6t2MgaMOgbSBraOG7kWkgeMOhYyBzdeG6pXQpIGPhu6dhIGJp4bq/biBcKHlfaVwpLA0KDQotIFwoXHRoZXRhX2lcKSBsw6AgdGhhbSBz4buRIHThu7Egbmhpw6puIHRyb25nIHBow6JuIHBo4buRaSB0aHXhu5ljIGjhu40gaMOgbSBtxaksDQoNCi0gXChcdGhldGFfaVwpIGPDsyBxdWFuIGjhu4cgduG7m2kgXChcbXVfaVwpLCB04burIMSRw7MgbGnDqm4gaOG7hyB24bubaSBcKFxib2xkc3ltYm9se1xiZXRhfVwpLg0KDQpWaeG7h2MgxrDhu5tjIGzGsOG7o25nIG7DoHkgdGjGsOG7nW5nIMSRxrDhu6NjIHRo4buxYyBoaeG7h24gYuG6sW5nIHBoxrDGoW5nIHBow6FwICoqaOG7o3AgbMO9IHThu5FpIMSRYSAoTUxFKSoqLCBz4butIGThu6VuZyB0aHXhuq10IHRvw6FuICoqSXRlcmF0aXZlbHkgUmV3ZWlnaHRlZCBMZWFzdCBTcXVhcmVzIChJUkxTKSoqLg0KDQojIyMgKio2LjMgUGjGsMahbmcgcGjDoXAgSVJMUyAoSXRlcmF0aXZlbHkgUmV3ZWlnaHRlZCBMZWFzdCBTcXVhcmVzKSoqDQoNCioqMS4gVGh14bqtdCB0b8OhbiBJUkxTIChJdGVyYXRpdmVseSBSZXdlaWdodGVkIExlYXN0IFNxdWFyZXMpOioqDQoNCkdMTSBz4butIGThu6VuZyB0aHXhuq10IHRvw6FuIElSTFMgxJHhu4MgdMOsbSDGsOG7m2MgbMaw4bujbmcgXChcaGF0e1xib2xkc3ltYm9se1xiZXRhfX1cKS4gVGh14bqtdCB0b8OhbiBk4buxYSB0csOqbiB2aeG7h2MgbOG6t3AgbOG6oWkgY8OhYyBixrDhu5tjIGjhu5NpIHF1eSB0dXnhur9uIHTDrW5oIGPDsyB0cuG7jW5nIHPhu5EuDQoNCioqMi4gw50gdMaw4bufbmcgY8ahIGLhuqNuOioqDQoNCi0g4bueIG3hu5dpIHbDsm5nIGzhurdwLCBtw7QgaMOsbmggR0xNIMSRxrDhu6NjIHjhuqVwIHjhu4kgYuG6sW5nIG3hu5l0IGjhu5NpIHF1eSB0dXnhur9uIHTDrW5oIHbhu5tpIHRy4buNbmcgc+G7kS4NCg0KLSAqKkJp4bq/biBnaeG6oyAod29ya2luZyByZXNwb25zZSkqKiBcKCBcbWF0aGJme3p9IFwpIHbDoCAqKm1hIHRy4bqtbiB0cuG7jW5nIHPhu5EqKiBcKCBcbWF0aGJme1d9IFwpIMSRxrDhu6NjIGPhuq1wIG5o4bqtdCBsacOqbiB04bulYyDhu58gbeG7l2kgYsaw4bubYy4NCg0KKiozLiBI4buHIHBoxrDGoW5nIHRyw6xuaCBJUkxTOioqDQoNClxbDQpcbWF0aGJme1h9XlQgXG1hdGhiZntXfSBcbWF0aGJme1h9IFxoYXR7XGJvbGRzeW1ib2x7XGJldGF9fSA9IFxtYXRoYmZ7WH1eVCBcbWF0aGJme1d9IFxtYXRoYmZ7en0NClxdDQoNClRyb25nIMSRw7M6DQoNCi0gXChcbWF0aGJme1h9XCkgbMOgIG1hIHRy4bqtbiB0aGnhur90IGvhur8sDQoNCi0gXChcbWF0aGJme1d9XCkgbMOgIG1hIHRy4bqtbiB0cuG7jW5nIHPhu5Ega8OtY2ggdGjGsOG7m2MgXChuIFx0aW1lcyBuXCksDQoNCi0gXChcbWF0aGJme3p9XCkgbMOgIHZlY3RvciBiaeG6v24gZ2nhuqMgXChuIFx0aW1lcyAxXCksIHTDrW5oIHRoZW8gY8O0bmcgdGjhu6ljOg0KDQpcWw0Kel9pID0gXGV0YV9pICsgXGZyYWN7eV9pIC0gXG11X2l9e1xmcmFje2QgXG11X2l9e2QgXGV0YV9pfX0NClxdDQoNCi0gVHLhu41uZyBz4buRIFwoV19pXCkgxJHGsOG7o2MgdMOtbmggdGhlbzoNCg0KXFsNCldfaSA9IFxsZWZ0KFxmcmFje2QgXG11X2l9e2QgXGV0YV9pfVxyaWdodCleMiBcQmlnLyBcbWF0aHJte1Zhcn0oeV9pKQ0KXF0NCg0KUXXDoSB0csOsbmggbsOgeSDEkcaw4bujYyBs4bq3cCBs4bqhaSBjaG8gxJHhur9uIGtoaSBjw6FjIMaw4bubYyBsxrDhu6NuZyBcKFxib2xkc3ltYm9se1xiZXRhfVwpIGjhu5lpIHThu6UuDQoNCiMjIyAqKjYuNCBIw6BtIMSRaeG7g20sIG1hIHRy4bqtbiBGaXNoZXIgdsOgIHBoxrDGoW5nIHNhaSBj4bunYSDGsOG7m2MgbMaw4bujbmcqKg0KDQoqKkjDoG0gxJFp4buDbSAoU2NvcmUgRnVuY3Rpb24pKioNCg0KSMOgbSDEkWnhu4NtIGzDoCDEkeG6oW8gaMOgbSBj4bunYSBsb2ctbGlrZWxpaG9vZCB0aGVvIHZlY3RvciBo4buHIHPhu5EgXChcYm9sZHN5bWJvbHtcYmV0YX1cKToNCg0KXFsNClUoXGJvbGRzeW1ib2x7XGJldGF9KSA9IFxmcmFje1xwYXJ0aWFsIFxlbGwoXGJvbGRzeW1ib2x7XGJldGF9KX17XHBhcnRpYWwgXGJvbGRzeW1ib2x7XGJldGF9fQ0KXF0NCg0KxJDDonkgbMOgIGjhu4cgcGjGsMahbmcgdHLDrG5oIG3DoCBraGkgZ2nhuqNpIFwoVShcYm9sZHN5bWJvbHtcYmV0YX0pID0gMFwpLCB0YSB0aHUgxJHGsOG7o2MgxrDhu5tjIGzGsOG7o25nIGPhu7FjIMSR4bqhaSBcKFxoYXR7XGJvbGRzeW1ib2x7XGJldGF9fVwpLg0KDQoNCioqTWEgdHLhuq1uIHRow7RuZyB0aW4gRmlzaGVyKioNCg0KTWEgdHLhuq1uIHRow7RuZyB0aW4gRmlzaGVyIGzDoCBr4buzIHbhu41uZyDDom0gY+G7p2EgxJHhuqFvIGjDoG0gYuG6rWMgaGFpIGPhu6dhIGxvZy1saWtlbGlob29kOg0KDQpcWw0KXG1hdGhjYWx7SX0oXGJvbGRzeW1ib2x7XGJldGF9KSA9IC0gXG1hdGhiYntFfSBcbGVmdFsgXGZyYWN7XHBhcnRpYWxeMiBcZWxsKFxib2xkc3ltYm9se1xiZXRhfSl9e1xwYXJ0aWFsIFxib2xkc3ltYm9se1xiZXRhfSBcLCBccGFydGlhbCBcYm9sZHN5bWJvbHtcYmV0YX1eVH0gXHJpZ2h0XQ0KXF0NCg0KTWEgdHLhuq1uIG7DoHkgxJHDs25nIHZhaSB0csOyIG5oxrAgbeG7mXQgdGjGsOG7m2MgxJFvIMSR4buZICJz4bqvYyBuw6l0IiBj4bunYSBsb2ctbGlrZWxpaG9vZCB04bqhaSDEkWnhu4NtIGPhu7FjIMSR4bqhaSB2w6AgxJHGsOG7o2MgZMO5bmcgxJHhu4MgxJHDoW5oIGdpw6EgxJHhu5kgY2jDrW5oIHjDoWMgY+G7p2EgxrDhu5tjIGzGsOG7o25nLg0KDQoNCioqUGjGsMahbmcgc2FpIGPhu6dhIFwoXGhhdHtcYm9sZHN5bWJvbHtcYmV0YX19XCkqKg0KDQpLaGkgxJHDoyBjw7MgbWEgdHLhuq1uIHRow7RuZyB0aW4gRmlzaGVyLCBwaMawxqFuZyBzYWkgaGnhu4dwIHBoxrDGoW5nIHNhaSBj4bunYSB2ZWN0b3IgaOG7hyBz4buRIMaw4bubYyBsxrDhu6NuZyDEkcaw4bujYyB0w61uaCBsw6A6DQoNClxbDQpcbWF0aHJte1Zhcn0oXGhhdHtcYm9sZHN5bWJvbHtcYmV0YX19KSA9IFxtYXRoY2Fse0l9KFxoYXR7XGJvbGRzeW1ib2x7XGJldGF9fSleey0xfQ0KXF0NCg0KTuG6v3Ugc+G7rSBk4bulbmcgdGh14bqtdCB0b8OhbiAqKklSTFMqKiwgbWEgdHLhuq1uIHRow7RuZyB0aW4gRmlzaGVyIMSRxrDhu6NjIHjhuqVwIHjhu4kgYuG7n2k6DQoNClxbDQpcbWF0aHJte1Zhcn0oXGhhdHtcYm9sZHN5bWJvbHtcYmV0YX19KSA9IChcbWF0aGJme1h9XlQgXG1hdGhiZntXfSBcbWF0aGJme1h9KV57LTF9DQpcXQ0KDQpUcm9uZyDEkcOzOg0KDQotIFwoXG1hdGhiZntYfVwpOiBtYSB0cuG6rW4gdGhp4bq/dCBr4bq/LA0KDQotIFwoXG1hdGhiZntXfVwpOiBtYSB0cuG6rW4gdHLhu41uZyBz4buRIHThuqFpIG5naGnhu4dtIGjhu5lpIHThu6UsDQoNCi0gQ8O0bmcgdGjhu6ljIG7DoHkgeHXhuqV0IGhp4buHbiB04buxIG5oacOqbiB04burIGLGsOG7m2MgZ2nhuqNpIGjhu4cgcGjGsMahbmcgdHLDrG5oIElSTFMuDQoNCg0KKipHaGkgY2jDuioqDQoNCi0gQ8O0bmcgdGjhu6ljIHBoxrDGoW5nIHNhaSB0csOqbiBy4bqldCBxdWFuIHRy4buNbmcgxJHhu4MgdMOtbmgga2hv4bqjbmcgdGluIGPhuq15IHbDoCBraeG7g20gxJHhu4tuaCBnaeG6oyB0aHV54bq/dCB0cm9uZyBHTE0uDQoNCi0gVuG7m2kgY8OhYyBtw7QgaMOsbmggbOG7m24sIG1hIHRy4bqtbiBcKChcbWF0aGJme1h9XlQgXG1hdGhiZntXfSBcbWF0aGJme1h9KV57LTF9XCkgdGjGsOG7nW5nIMSRxrDhu6NjIHTDrW5oIHRow7RuZyBxdWEgZ2nhuqNpIGjhu4cgcGjGsMahbmcgdHLDrG5oIHRoYXkgdsOsIMSR4bqjbyB0cuG7sWMgdGnhur9wIMSR4buDIHRyw6FuaCBzYWkgc+G7kSBz4buRIGjhu41jLg0KDQojIyMgKio2LjUgU2FpIHPhu5EgY2h14bqpbiB2w6Aga2hv4bqjbmcgdGluIGPhuq15KioNCg0KKipTYWkgc+G7kSBjaHXhuqluIChTdGFuZGFyZCBFcnJvcikqKg0KDQpTYXUga2hpIGPDsyDEkcaw4bujYyDGsOG7m2MgbMaw4bujbmcgXChcaGF0e1xib2xkc3ltYm9se1xiZXRhfX1cKSB2w6AgbWEgdHLhuq1uIHBoxrDGoW5nIHNhaSBoaeG7h3AgcGjGsMahbmcgc2FpIFwoXG1hdGhybXtWYXJ9KFxoYXR7XGJvbGRzeW1ib2x7XGJldGF9fSlcKSwgdGEgdMOtbmggKipzYWkgc+G7kSBjaHXhuqluKiogY2hvIHThu6tuZyBo4buHIHPhu5EgXChcaGF0e1xiZXRhfV9qXCkgbmjGsCBzYXU6DQoNClxbDQpcbWF0aHJte1NFfShcaGF0e1xiZXRhfV9qKSA9IFxzcXJ0e1tcbWF0aHJte1Zhcn0oXGhhdHtcYm9sZHN5bWJvbHtcYmV0YX19KV1fe2pqfX0NClxdDQoNClRyb25nIMSRw7MsIFwoW1xjZG90XV97amp9XCkgbMOgIHBo4bqnbiB04butIGjDoG5nIFwoalwpLCBj4buZdCBcKGpcKSB0cm9uZyBtYSB0cuG6rW4gcGjGsMahbmcgc2FpLg0KDQoNCioqS2hv4bqjbmcgdGluIGPhuq15IFwoMTAwKDEgLSBcYWxwaGEpXCVcKSoqDQoNCktob+G6o25nIHRpbiBj4bqteSBjaG8gaOG7hyBz4buRIFwoXGhhdHtcYmV0YX1falwpIMSRxrDhu6NjIHTDrW5oIGLhurFuZyBjw7RuZyB0aOG7qWM6DQoNClxbDQpcaGF0e1xiZXRhfV9qIFxwbSB6X3tcYWxwaGEvMn0gXGNkb3QgXG1hdGhybXtTRX0oXGhhdHtcYmV0YX1faikNClxdDQoNClRyb25nIMSRw7M6DQoNCi0gXCh6X3tcYWxwaGEvMn1cKSBsw6AgYsOhY2ggcGjDom4gduG7iyBcKDEgLSBcYWxwaGEvMlwpIGPhu6dhIHBow6JuIHBo4buRaSBjaHXhuqluIGNodeG6qW4gaMOzYSAodGjGsOG7nW5nIHRyYSB04burIGLhuqNuZyBaKSwNCg0KLSBWw60gZOG7pTogduG7m2kgXChcYWxwaGEgPSAwLjA1XCksIFwoel97MC4wMjV9IFxhcHByb3ggMS45NlwpICh0xrDGoW5nIOG7qW5nIGtob+G6o25nIHRpbiBj4bqteSA5NSUpLg0KDQoNCioqS2nhu4NtIMSR4buLbmggV2FsZCoqDQoNCktp4buDbSDEkeG7i25oIFdhbGQgZ2nDunAgxJHDoW5oIGdpw6EgZ2nhuqMgdGh1eeG6v3Q6DQoNClxbDQpIXzA6IFxiZXRhX2ogPSAwIFxxdWFkIFx0ZXh0e3ZzfSBccXVhZCBIXzE6IFxiZXRhX2ogXG5lcSAwDQpcXQ0KDQpUaOG7kW5nIGvDqiBraeG7g20gxJHhu4tuaDoNCg0KXFsNClogPSBcZnJhY3tcaGF0e1xiZXRhfV9qfXtcbWF0aHJte1NFfShcaGF0e1xiZXRhfV9qKX0gXHNpbSBcbWF0aGNhbHtOfSgwLCAxKQ0KXF0NCg0KROG7sWEgdsOgbyBnacOhIHRy4buLIFwoWlwpLCB0YSBjw7MgdGjhu4MgdMOtbmggcC12YWx1ZSB2w6AgxJHGsGEgcmEga+G6v3QgbHXhuq1uIHRo4buRbmcga8OqLg0KDQoNCioqR2hpIGNow7oqKg0KDQotIEtp4buDbSDEkeG7i25oIFdhbGQgxJHGsOG7o2MgZMO5bmcgcGjhu5UgYmnhur9uIGRvIHTDrW5oIMSRxqFuIGdp4bqjbiB2w6AgY8OzIHRo4buDIHRo4buxYyBoaeG7h24gbmdheSBzYXUga2hpIGPDsyDGsOG7m2MgbMaw4bujbmcgdsOgIHBoxrDGoW5nIHNhaS4NCg0KLSBO4bq/dSBcKCB8WnwgPiB6X3tcYWxwaGEvMn0gXCksIGLDoWMgYuG7jyBcKEhfMFwpLCB04bupYyBsw6AgaOG7hyBz4buRIFwoXGJldGFfalwpIGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ouDQoNCiMjIyAqKjYuNiDGr+G7m2MgbMaw4bujbmcgdGhhbSBz4buRIHBow6JuIHTDoW4qKg0KDQpUcm9uZyBt4buZdCBz4buRIG3DtCBow6xuaCBHTE0sIMSR4bq3YyBiaeG7h3QgbMOgIGtoaSBwaMOibiBwaOG7kWkgdGh14buZYyBo4buNIHBow6JuIHBo4buRaSBtxakgKGV4cG9uZW50aWFsIGZhbWlseSkgKipraMO0bmcgY2h14bqpbiBow7NhKiosIHRhIGPhuqduIMaw4bubYyBsxrDhu6NuZyB0aGFtIHPhu5EgcGjDom4gdMOhbiBcKFxwaGlcKS4NCg0KKipDw7RuZyB0aOG7qWMgxrDhu5tjIGzGsOG7o25nOioqDQoNCiQkDQpcaGF0e1xwaGl9ID0gXGZyYWN7MX17biAtIHB9IFxzdW1fe2k9MX1ee259IFxmcmFjeyh5X2kgLSBcaGF0e1xtdX1faSleMn17VihcaGF0e1xtdX1faSl9DQokJA0KDQoqKlRyb25nIMSRw7M6KioNCg0KLSBcKG5cKTogc+G7kSBxdWFuIHPDoXQgIA0KDQotIFwocFwpOiBz4buRIHRoYW0gc+G7kSB0cm9uZyBtw7QgaMOsbmggKGJhbyBn4buTbSBo4buHIHPhu5EgY2jhurduIG7hur91IGPDsykgIA0KDQotIFwoXGhhdHtcbXV9X2kgPSBcbWF0aGJie0V9W3lfaV0gPSBnXnstMX0oXGV0YV9pKVwpOiBnacOhIHRy4buLIGvhu7MgduG7jW5nIMSRxrDhu6NjIMaw4bubYyBsxrDhu6NuZyAgDQoNCi0gXChWKFxoYXR7XG11fV9pKVwpOiBow6BtIHBoxrDGoW5nIHNhaSwgcGjhu6UgdGh14buZYyB2w6BvIHBow6JuIHBo4buRaToNCg0KfCBQaMOibiBwaOG7kWkgICAgICAgIHwgSMOgbSBwaMawxqFuZyBzYWkgXChWKFxtdSlcKSAgICAgfA0KfC0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfA0KfCBHYXVzc2lhbiAgICAgICAgIHwgXCgxXCkgICAgICAgICAgICAgICAgICAgICAgICAgfA0KfCBQb2lzc29uICAgICAgICAgIHwgXChcbXVcKSAgICAgICAgICAgICAgICAgICAgICAgfA0KfCBCaW5vbWlhbCAobG9naXQpIHwgXChcbXUoMSAtIFxtdSlcKSAgICAgICAgICAgICAgfA0KDQoNCiMjICoqQ0jGr8agTkcgNzogR0VORVJBTElaRUQgTElORUFSIE1PREVMUzogSU5GRVJFTkNFICoqDQrEkMOBTkggR0nDgSBN4buoQyDEkOG7mCBQSMOZIEjhu6JQIFbDgCBM4buwQSBDSOG7jE4gTcOUIEjDjE5IIFRST05HIEdMTQ0KDQojIyMgKio3LjEgR2nhu5tpIHRoaeG7h3UqKg0KDQpTYXUga2hpIMaw4bubYyBsxrDhu6NuZyBjw6FjIHRoYW0gc+G7kSAkXGJldGEkIHRyb25nIEdMTSwgYsaw4bubYyB0aeG6v3AgdGhlbyBsw6AgxJHDoW5oIGdpw6EgeGVtIG3DtCBow6xuaCBjw7MgcGjDuSBo4bujcCB24bubaSBk4buvIGxp4buHdSBraMO0bmcsIHbDoCBu4bq/dSBjw7Mgbmhp4buBdSBtw7QgaMOsbmggY+G6oW5oIHRyYW5oLCB0aMOsIG7Dqm4gY2jhu41uIG3DtCBow6xuaCBuw6BvIGzDoCB04buRdCBuaOG6pXQuDQoNCioqQ8OhYyBjw7RuZyBj4bulIMSRw6FuaCBnacOhIGJhbyBn4buTbToqKg0KDQotIERldmlhbmNlICjEkeG7mSBs4buHY2gpDQoNCi0gS2nhu4NtIMSR4buLbmggJFxjaGleMiQNCg0KLSBBSUMsIEJJQw0KDQotIFNvIHPDoW5oIG3DtCBow6xuaCBs4buTbmcgdsOgIGtow7RuZyBs4buTbmcNCg0KLSDEkOG7kyB0aOG7iyBwaOG6p24gZMawIHbDoCDEkWnhu4NtIOG6o25oIGjGsOG7n25nDQoNCiMjIyAqKjcuMiBEZXZpYW5jZSDigJMgxJFvIGzGsOG7nW5nIG3hu6ljIMSR4buZIHBow7kgaOG7o3AgY+G7p2EgbcO0IGjDrG5oKioNCg0KKirEkOG7i25oIG5naMSpYToqKg0KDQpEZXZpYW5jZSBsw6AgxJHhuqFpIGzGsOG7o25nIMSRbyBz4buxIGtow6FjIGJp4buHdCBnaeG7r2EgbcO0IGjDrG5oIGhp4buHbiB04bqhaSB2w6AgbcO0IGjDrG5oIMSR4bqneSDEkeG7pyAoc2F0dXJhdGVkIG1vZGVsKSDigJMgdOG7qWMgbcO0IGjDrG5oIGto4bubcCBob8OgbiB0b8OgbiB24bubaSBk4buvIGxp4buHdS4NCg0KJCQNCkQoeTsgXGhhdHtcbXV9KSA9IDIgXGxlZnRbIFxlbGwoeTsgeSkgLSBcZWxsKFxoYXR7XG11fTsgeSkgXHJpZ2h0XQ0KJCQNCg0KKipHaeG6o2kgdGjDrWNoIGvDvSBoaeG7h3U6KioNCg0KLSAkXGVsbCh5OyB5KSQ6IGxvZy1saWtlbGlob29kIGPhu6dhIG3DtCBow6xuaCBiw6NvIGjDsmEgKHNhdHVyYXRlZCBtb2RlbCkNCg0KLSAkXGVsbChcaGF0e1xtdX07IHkpJDogbG9nLWxpa2VsaWhvb2QgY+G7p2EgbcO0IGjDrG5oIMSRYW5nIHjDqXQNCg0KXChcUmlnaHRhcnJvd1wpIERldmlhbmNlIGPDoG5nIG5o4buPIOKGkiBtw7QgaMOsbmggY8OgbmcgZ+G6p24gduG7m2kgbcO0IGjDrG5oIGLDo28gaMOyYSDihpIgcGjDuSBo4bujcCBoxqFuLg0KDQojIyMgKio3LjMgU28gc8OhbmggbcO0IGjDrG5oIGLhurFuZyBraeG7g20gxJHhu4tuaCBkZXZpYW5jZSoqDQoNCktoaSBoYWkgbcO0IGjDrG5oIGzhu5NuZyBuaGF1LCB0YSBjw7MgdGjhu4Mgc28gc8OhbmggYuG6sW5nIGtp4buDbSDEkeG7i25oIHNhaSBiaeG7h3QgZGV2aWFuY2U6DQoNCioqQ8O0bmcgdGjhu6ljIGtp4buDbSDEkeG7i25oOioqDQoNCiQkDQpcRGVsdGEgRCA9IERfe1x0ZXh0e3JlZHVjZWR9fSAtIERfe1x0ZXh0e2Z1bGx9fSBcc2ltIFxjaGleMl97ZGZ9DQokJA0KDQoqKlRyb25nIMSRw7M6KioNCg0KLSAkZGYkOiBz4buRIHRoYW0gc+G7kSBi4buLIHLDoG5nIGJ14buZYyB0cm9uZyBtw7QgaMOsbmggbmjhu48gaMahbg0KDQpcKFxSaWdodGFycm93XCkgTuG6v3UgJFxEZWx0YSBEJCBs4bubbiB2w6AgcC12YWx1ZSBuaOG7jyDihpIgbcO0IGjDrG5oIMSR4bqneSDEkeG7pyB04buRdCBoxqFuLg0KDQojIyMgKio3LjQgQUlDIHbDoCBCSUMg4oCTIGzhu7FhIGNo4buNbiBnaeG7r2EgY8OhYyBtw7QgaMOsbmgga2jDtG5nIGzhu5NuZyoqDQoNCktoaSBjw6FjIG3DtCBow6xuaCBraMO0bmcgbOG7k25nIG5oYXUsIHRhIGTDuW5nIHRpw6p1IGNow60gdGjDtG5nIHRpbiDEkeG7gyBzbyBzw6FuaDoNCg0KKipBSUMgKEFrYWlrZSBJbmZvcm1hdGlvbiBDcml0ZXJpb24pOioqDQoNCiQkDQpBSUMgPSAtMlxlbGwgKyAyaw0KJCQNCg0KLSAkXGVsbCQ6IGxvZy1saWtlbGlob29kICANCg0KLSAkayQ6IHPhu5EgdGhhbSBz4buRIHRyb25nIG3DtCBow6xuaA0KDQoqKkJJQyAoQmF5ZXNpYW4gSW5mb3JtYXRpb24gQ3JpdGVyaW9uKToqKg0KDQokJA0KQklDID0gLTJcZWxsICsgXGxvZyhuKSBcY2RvdCBrDQokJA0KDQotICRuJDogc+G7kSBxdWFuIHPDoXQNCg0KXChcUmlnaHRhcnJvd1wpIENo4buNbiBtw7QgaMOsbmggY8OzIEFJQy9CSUMgKip0aOG6pXAgaMahbioqLiAgDQogDQpcKFxSaWdodGFycm93XCkgQklDIHBo4bqhdCBjw6FjIG3DtCBow6xuaCBwaOG7qWMgdOG6oXAgKipuaGnhu4F1IGjGoW4qKiBzbyB24bubaSBBSUMuDQoNCg0KIyMgKipDSMavxqBORyA4OiBI4buSSSBRVVkgTE9HSVNUSUMgKExPR0lTVElDIFJFR1JFU1NJT04pKioNCg0KIyMjICoqOC4xIEdp4bubaSB0aGnhu4d1KioNCg0KSOG7k2kgcXV5IGxvZ2lzdGljIGzDoCBt4buZdCB0cm9uZyBuaOG7r25nIG3DtCBow6xuaCBwaOG7lSBiaeG6v24gbmjhuqV0IHRodeG7mWMgaOG7jSBHTE0sIMSRxrDhu6NjIGTDuW5nIMSR4buDIG3DtCBow6xuaCBow7NhIGThu68gbGnhu4d1IG5o4buLIHBow6JuIChiaW5hcnkpLCB04bupYyBraGkgYmnhur9uIHBo4bqjbiBo4buTaQ0KDQpcWw0KeSBcaW4gXHswLDFcfQ0KXF0NCg0KVsOtIGThu6U6IGLhu4duaC9raMO0bmcgYuG7h25oLCBtdWEva2jDtG5nIG11YSwgxJHhuqF0L2tow7RuZyDEkeG6oXQuDQoNCsSQ4bq3YyDEkWnhu4NtOiAgDQpcWw0KXG11X2kgPSBFW3lfaV0gPSBQKHlfaT0xKSBcaW4gKDAsMSkNClxdDQoNClPhu60gZOG7pW5nIGjDoG0gbGnDqm4ga+G6v3QgbG9naXQ6ICANClxbDQpnKFxtdV9pKSA9IFxsb2dcbGVmdChcZnJhY3tcbXVfaX17MS1cbXVfaX1ccmlnaHQpID0gXGV0YV9pID0geF9pXlQgXGJldGENClxdDQoNCg0KDQojIyMgKio4LjIgUGjDom4gcGjhu5FpIEJlcm5vdWxsaSB2w6AgaMOgbSBsb2ctbGlrZWxpaG9vZCoqDQoNCkJp4bq/biBwaOG6o24gaOG7k2kgIA0KDQpcWw0KeV9pIFxpbiBcezAsMVx9DQpcXSAgDQpwaMOibiBwaOG7kWkgdGhlbzogIA0KDQpcWw0KeV9pIFxzaW0gXHRleHR7QmVybm91bGxpfShccGlfaSkNClxdDQoNClRyb25nIMSRw7M6DQoNClxbDQpccGlfaSA9IFAoeV9pPTEpDQpcXSAgDQp2w6A6ICANClxbDQpcbG9nXGxlZnQoXGZyYWN7XHBpX2l9ezEtXHBpX2l9XHJpZ2h0KSA9IHhfaV5UIFxiZXRhDQpcXQ0KDQpMb2ctbGlrZWxpaG9vZCBjaG8gdG/DoG4gYuG7mSBt4bqrdTogIA0KXFsNClxlbGwoXGJldGEpID0gXHN1bV97aT0xfV5uIFxsZWZ0WyB5X2kgXGxvZyhccGlfaSkgKyAoMSAtIHlfaSkgXGxvZygxLVxwaV9pKSBccmlnaHRdDQpcXQ0KDQpLaMO0bmcgY8OzIG5naGnhu4dtIGdp4bqjaSB0xrDhu51uZyBtaW5oIOKGkiBkw7luZyBJUkxTIMSR4buDIHTDrG0gXChcaGF0e1xiZXRhfVwpLg0KDQoNCiMjIyAqKjguMyBEaeG7hW4gZ2nhuqNpIGjhu4cgc+G7kSBo4buTaSBxdXkgdHJvbmcgbG9naXN0aWMgcmVncmVzc2lvbioqDQoNCktoaSBkw7luZyBsb2dpdCBsaW5rOiAgDQpcWw0KXGV0YV9pID0gXGxvZ1xsZWZ0KFxmcmFje1xwaV9pfXsxLVxwaV9pfVxyaWdodCkgPSB4X2leVCBcYmV0YQ0KXF0NCg0K4oaSIFwoXGJldGFfalwpIMSR4bqhaSBkaeG7h24gY2hvIGxvZyBvZGRzIHJhdGlvOiAgDQpcWw0KXHRleHR7T2RkcyByYXRpb30gPSBcZXhwKFxiZXRhX2opDQpcXQ0KDQotIE7hur91IFwoXGJldGFfaiA+IDBcKTogYmnhur9uIFwoeF9qXCkgbMOgbSB0xINuZyBraOG6oyBuxINuZyBcKHk9MVwpDQoNCi0gTuG6v3UgXChcYmV0YV9qIDwgMFwpOiBiaeG6v24gXCh4X2pcKSBsw6BtIGdp4bqjbSBraOG6oyBuxINuZyBcKHk9MVwpDQoNCg0KDQojIyMgKio4LjQgS2hv4bqjbmcgdGluIGPhuq15IHbDoCBraeG7g20gxJHhu4tuaCoqDQoNClNhdSBraGkgxrDhu5tjIGzGsOG7o25nIFwoXGhhdHtcYmV0YX1cKSwgdGEga2nhu4NtIMSR4buLbmggdOG7q25nIGjhu4cgc+G7kToNCg0KS2nhu4NtIMSR4buLbmggV2FsZDogIA0KXFsNClpfaiA9IFxmcmFje1xoYXR7XGJldGF9X2p9e1NFKFxoYXR7XGJldGF9X2opfSBcc2ltIE4oMCwxKQ0KXF0NCg0KS2hv4bqjbmcgdGluIGPhuq15IDk1JTogIA0KXFsNClxoYXR7XGJldGF9X2ogXHBtIHpfezAuOTc1fSBcY2RvdCBTRShcaGF0e1xiZXRhfV9qKQ0KXF0NCg0KQ2h1eeG7g24gc2FuZyBvZGRzIHJhdGlvIGLhurFuZyAgDQpcWw0KXGV4cChcaGF0e1xiZXRhfV9qKQ0KXF0NCg0KIyMgKipDSMavxqBORyA5OiBI4buSSSBRVVkgUE9JU1NPTiAoUE9JU1NPTiBSRUdSRVNTSU9OKSoqDQoNCiMjIyAqKjkuMSBHaeG7m2kgdGhp4buHdSB2w6Ag4bupbmcgZOG7pW5nIHRo4buxYyB04bq/KioNCg0KSOG7k2kgcXV5IFBvaXNzb24gbMOgIG3hu5l0IG3DtCBow6xuaCB0aHXhu5ljIGjhu40gR0xNLCDEkcaw4bujYyBz4butIGThu6VuZyDEkeG7gyBtw7QgaMOsbmggaMOzYSBjw6FjIGJp4bq/biBwaOG6o24gaOG7k2kgbMOgIHPhu5EgbMaw4bujbmcgc+G7sSBraeG7h24gxJHhur9tIMSRxrDhu6NjIHRyw6puIG3hu5l0IMSRxqFuIHbhu4sgcXVhbiBzw6F0LCBjaOG6s25nIGjhuqFuIG5oxrA6DQoNCi0gU+G7kSBs4bqnbiBuaOG6rXAgdmnhu4duDQoNCi0gU+G7kSB24bulIHRhaSBu4bqhbiBnaWFvIHRow7RuZw0KDQotIFPhu5EgbOG7l2kgcGjhuqduIG3hu4FtIHBow6F0IHNpbmgNCg0KxJDhurdjIGJp4buHdCBwaMO5IGjhu6NwIGtoaToNCg0KLSBCaeG6v24gcGjhuqNuIGjhu5NpIFwoIHkgXGluIFx7MCwgMSwgMiwgXGxkb3RzIFx9IFwpDQoNCi0gROG7ryBsaeG7h3Uga2jDtG5nIMOibSwgcuG7nWkgcuG6oWMNCg0KLSBN4bulYyB0acOqdSBsw6AgxrDhu5tjIGzGsOG7o25nIHPhu5Egc+G7sSBraeG7h24gdHJ1bmcgYsOsbmggdGhlbyBjw6FjIMSR4bq3YyB0w61uaCBcKCB4IFwpDQoNCg0KIyMjICoqOS4yIFBow6JuIHBo4buRaSBQb2lzc29uIHbDoCBsacOqbiBr4bq/dCBsb2cqKg0KDQoqKkjDoG0geMOhYyBzdeG6pXQ6KiogIA0KXFsNClAoeV9pKSA9IFxmcmFje2Veey1cbXVfaX0gXG11X2lee3lfaX19e3lfaSF9LCBccXVhZCB5X2kgPSAwLCAxLCAyLCBcbGRvdHMNClxdDQoNClRyb25nIMSRw7M6DQoNClxbDQpcbXVfaSA9IEVbeV9pXSA6IFx0ZXh0e3Phu5Egc+G7sSBraeG7h24ga+G7syB24buNbmcgY+G7p2EgcXVhbiBzw6F0IHRo4bupIH0gaQ0KXF0NCg0KXFsNClx0ZXh0e1Zhcn0oeV9pKSA9IFxtdV9pIFxxdWFkIDogXHRleHR7xJHhurdjIMSRaeG7g20gdGhlbiBjaOG7kXR9DQpcXQ0KDQoqKkjDoG0gbGnDqm4ga+G6v3QgKGNhbm9uaWNhbCk6KioNCg0KXFsNClxldGFfaSA9IFxsb2coXG11X2kpID0geF9pXlQgXGJldGEgXGltcGxpZXMgXG11X2kgPSBlXnt4X2leVCBcYmV0YX0NClxdDQoNCioqSMOgbSBsb2cgxJHhuqNtIGLhuqNvOioqDQoNClxbDQpcbXVfaSA+IDANClxdDQoNCk3hu5FpIHF1YW4gaOG7hyB0dXnhur9uIHTDrW5oIHRyw6puIGxvZy1zY2FsZS4NCg0KDQojIyMgKio5LjMgSMOgbSBsb2ctbGlrZWxpaG9vZCB2w6AgcGjGsMahbmcgdHLDrG5oIMSRaeG7g20qKg0KDQoqKkxvZy1saWtlbGlob29kIGPhu6dhIG3DtCBow6xuaDoqKg0KDQpcWw0KXGVsbChcYmV0YSkgPSBcc3VtX3tpPTF9Xm4gXGxlZnRbIHlfaSBcbG9nKFxtdV9pKSAtIFxtdV9pIC0gXGxvZyh5X2khKSBccmlnaHRdDQpcXQ0KDQpUaGF5IFwoXG11X2kgPSBlXnt4X2leVCBcYmV0YX1cKSwgdGEgxJHGsOG7o2M6DQoNClxbDQpcZWxsKFxiZXRhKSA9IFxzdW1fe2k9MX1ebiBcbGVmdFsgeV9pIHhfaV5UIFxiZXRhIC0gZV57eF9pXlQgXGJldGF9IC0gXGxvZyh5X2khKSBccmlnaHRdDQpcXQ0KDQoqKlNjb3JlIGZ1bmN0aW9uICjEkeG6oW8gaMOgbSBsb2ctbGlrZWxpaG9vZCk6KioNCg0KXFsNClUoXGJldGEpID0gXHN1bV97aT0xfV5uIHhfaSAoeV9pIC0gXG11X2kpDQpcXQ0KDQpHaeG6o2kgcGjGsMahbmcgdHLDrG5oIFwoIFUoXGJldGEpID0gMCBcKSDihpIgdMOsbSBcKFxoYXR7XGJldGF9XCkgYuG6sW5nIElSTFMuDQoNCiMjIyAqKjkuNCBEaeG7hW4gZ2nhuqNpIGjhu4cgc+G7kSBo4buTaSBxdXkqKg0KDQpUcm9uZyBo4buTaSBxdXkgUG9pc3NvbjoNCg0KLSBN4buXaSBcKFxiZXRhX2pcKSBsw6AgdMOhYyDEkeG7mW5nIGxvZyB0dXnhur9uIHTDrW5oIMSR4bq/biBz4buRIHPhu7Ega2nhu4duIHRydW5nIGLDrG5oLg0KDQotIFwoZV57XGJldGFfan1cKSBsw6AgdOG7tyBs4buHIHRoYXkgxJHhu5VpIGvhu7MgduG7jW5nIFwoXG11XCkga2hpIFwoeF9qXCkgdMSDbmcgMSDEkcahbiB24buLLCBnaeG7ryBjw6FjIGJp4bq/biBraMOhYyBraMO0bmcgxJHhu5VpLg0KDQpWw60gZOG7pToNCg0KLSBcKFxiZXRhX2ogPSAwLjY5MyBcUmlnaHRhcnJvdyBlXnswLjY5M30gPSAyXCk6IHPhu5Egc+G7sSBraeG7h24ga+G7syB24buNbmcgZ+G6pXAgxJHDtGkga2hpIFwoeF9qXCkgdMSDbmcgMSDEkcahbiB24buLLg0KDQotIFwoXGJldGFfaiA9IC0wLjIyM1wpIOKGkiBnaeG6o20ga2hv4bqjbmcgMjAlLg0KDQojIyAqKkNIxq/GoE5HIDEwOiBI4buSSSBRVVkgR0FNTUEgKEdBTU1BIFJFR1JFU1NJT04pKioNCg0KIyMjICoqMTAuMSBHaeG7m2kgdGhp4buHdSoqDQoNCkjhu5NpIHF1eSBHYW1tYSBsw6AgbeG7mXQgbcO0IGjDrG5oIHRodeG7mWMgaOG7jSBHTE0gZMO5bmcgxJHhu4MgbcO0IGjDrG5oIGjDs2EgY8OhYyBiaeG6v24gcGjhuqNuIGjhu5NpIGTGsMahbmcgbGnDqm4gdOG7pWMgY8OzIHBoxrDGoW5nIHNhaSB0xINuZyB0aGVvIGdpw6EgdHLhu4sgdHJ1bmcgYsOsbmguDQoNClbDrSBk4bulIOG7qW5nIGThu6VuZzoNCg0KLSBDaGkgcGjDrSB5IHThur8NCg0KLSBUaOG7nWkgZ2lhbiBz4buRbmcgKHN1cnZpdmFsIHRpbWUpDQoNCi0gTMaw4bujbmcgdGnDqnUgdGjhu6UgbsSDbmcgbMaw4bujbmcNCg0KIyMjICoqMTAuMiBQaMOibiBwaOG7kWkgR2FtbWEqKg0KDQpHaeG6oyDEkeG7i25oIGJp4bq/biBuZ+G6q3Ugbmhpw6puIFwoIHlfaSBcKSBwaMOibiBwaOG7kWkgR2FtbWEgduG7m2kgdGhhbSBz4buROg0KDQpcWw0KeV9pIFxzaW0gR2FtbWEoXGFscGhhLCBcbXVfaSkNClxdDQoNClRyb25nIMSRw7M6DQoNCi0gXCggXG11X2kgPSBFW3lfaV0gXCkgbMOgIGvhu7MgduG7jW5nLg0KDQotIFBoxrDGoW5nIHNhaTogIA0KXFsNClZhcih5X2kpID0gXGZyYWN7XG11X2leMn17XGFscGhhfSA9IFxwaGkgXG11X2leMg0KXF0NCg0KUGjGsMahbmcgc2FpIHThu7cgbOG7hyB24bubaSBiw6xuaCBwaMawxqFuZyBr4buzIHbhu41uZywgcGjDuSBo4bujcCBraGkgYmnhur9uIHRoacOqbiB04bu3IGzhu4cga2jDtG5nIMSR4buVaS4NCg0KIyMjICoqMTAuMyBIw6BtIG3huq10IMSR4buZIHjDoWMgc3XhuqV0IEdhbW1hIChk4bqhbmcgR0xNKSoqDQoNCioqSMOgbSBt4bqtdCDEkeG7mSB4w6FjIHN14bqldDoqKg0KDQpcWw0KZih5OyBcbXUsIFxwaGkpID0gXGZyYWN7MX17XEdhbW1hKDEvXHBoaSl9IFxsZWZ0KFxmcmFjezF9e1xwaGkgXG11fVxyaWdodCleezEvXHBoaX0geV57XGZyYWN7MX17XHBoaX0tMX0gXGV4cFxsZWZ0KC1cZnJhY3t5fXtccGhpIFxtdX1ccmlnaHQpDQpcXQ0KDQpIw6BtIG7DoHkgdGh14buZYyBo4buNIGjDoG0gbcWpIChleHBvbmVudGlhbCBmYW1pbHkpLCB24bubaToNCg0KXFsNClx0aGV0YSA9IC1cZnJhY3sxfXtcbXV9DQpcXQ0KDQpcWw0KYihcdGhldGEpID0gLVxsb2coLVx0aGV0YSkNClxdDQoNCkjDoG0gcGjGsMahbmcgc2FpOg0KDQpcWw0KVihcbXUpID0gXG11XjINClxdDQoNClwoXHBoaVwpIGzDoCB0aGFtIHPhu5EgcGjDom4gdMOhbi4NCg0KIyMjICoqMTAuNCBIw6BtIGxpw6puIGvhur90IChMaW5rIGZ1bmN0aW9uKSoqDQoNCioqTeG6t2MgxJHhu4tuaCB0cm9uZyBHTE06KioNCg0KXFsNCmcoXG11X2kpID0gXGxvZyhcbXVfaSkgPSBcZXRhX2kgPSB4X2leVCBcYmV0YQ0KXF0NCg0KQ8OhYyB0w7l5IGNo4buNbiBraMOhYzoNCg0KLSBJZGVudGl0eTogXCggZyhcbXUpID0gXG11IFwpDQoNCi0gSW52ZXJzZTogXCggZyhcbXUpID0gXGZyYWN7MX17XG11fSBcKQ0KDQpMaW5rIGxvZyDEkcaw4bujYyBkw7luZyBwaOG7lSBiaeG6v24gbmjhuqV0IHbDrCDEkeG6o20gYuG6o28gXCggXG11ID4gMCBcKS4NCg0KIyMgKipDSMavxqBORyAxMTogROG7riBMSeG7hlUgTkjDk00gSE/hurZDIFThu7YgTOG7hiAoR1JPVVBFRCBEQVRBIE9SIFBST1BPUlRJT05TKSoqDQoNCiMjIyAqKjExLjEgR2nhu5tpIHRoaeG7h3UqKg0KDQpE4buvIGxp4buHdSBuaOG7iyBwaMOibiBk4bqhbmcgMC8xIMSRxrDhu6NjIG3DtCBow6xuaCBow7NhIGLhurFuZyBo4buTaSBxdXkgbG9naXN0aWMuIFR1eSBuaGnDqm4sIG7hur91IGThu68gbGnhu4d1IGPDsyBk4bqhbmcgdOG7lW5nIGjhu6NwIChncm91cGVkKSBob+G6t2MgdGjhu4MgaGnhu4duIGTGsOG7m2kgZOG6oW5nIHThu7cgbOG7hywgdsOtIGThu6U6DQoNCjIwIHRow6BuaCBjw7RuZyB0cm9uZyAzMCB0aOG7rSBuZ2hp4buHbSDihpIgXCggeSA9IDIwLCBuID0gMzAgXCkNCg0KLSBU4bu3IGzhu4cgbeG6r2MgYuG7h25oIOG7nyBt4buXaSBxdeG6rW4NCg0KLSBU4bu3IGzhu4cgc2luaCB2acOqbiDEkeG6rXUgdHJvbmcgdOG7q25nIGzhu5twDQoNCuKGkiBD4bqnbiBkw7luZyBHTE0gZOG6oW5nIG5o4buLIHRo4bupYyB04buVbmcgcXXDoXQgKGJpbm9taWFsIEdMTSksIMOhcCBk4bulbmcgY2hvIHPhu5EgbOG6p24gdGjDoG5oIGPDtG5nIHRyw6puIHPhu5EgbOG6p24gdGjhu60uDQoNCiMjIyAqKjExLjIgTcO0IGjDrG5oIGjDs2Egc+G7kSB0aMOgbmggY8O0bmcgdHJvbmcgbmjDs20qKg0KDQpW4bubaSBcKCB5X2kgXHNpbSBcdGV4dHtCaW5vbWlhbH0obl9pLCBccGlfaSkgXCksIHRhIG3DtCBow6xuaCBow7NhOg0KDQpcWw0KXGxvZyBcbGVmdChcZnJhY3tccGlfaX17MSAtIFxwaV9pfVxyaWdodCkgPSBcZXRhX2kgPSB4X2leVCBcYmV0YSBcaW1wbGllcyBccGlfaSA9IFxmcmFje2Vee3hfaV5UIFxiZXRhfX17MSArIGVee3hfaV5UIFxiZXRhfX0NClxdDQoNClRyb25nIMSRw7M6DQoNCi0gXCggeV9pIFwpOiBz4buRIHRow6BuaCBjw7RuZyB0cm9uZyBuaMOzbSBcKGlcKQ0KDQotIFwoIG5faSBcKTogdOG7lW5nIHPhu5EgdGjhu60gbmdoaeG7h20gdHJvbmcgbmjDs20gXChpXCkNCg0KLSBcKCBccGlfaSBcKTogeMOhYyBzdeG6pXQgdGjDoG5oIGPDtG5nDQoNCi0gXCggXG11X2kgPSBFW3lfaV0gPSBuX2kgXHBpX2kgXCkNCg0KLSBcKCBcdGV4dHtWYXJ9KHlfaSkgPSBuX2kgXHBpX2kgKDEgLSBccGlfaSkgXCkNCg0K4oaSIFBow7kgaOG7o3AgY2hvIGThu68gbGnhu4d1IGThuqFuZyAibiB0cmlhbHMsIGsgc3VjY2Vzc2VzIi4NCg0KIyMjICoqMTEuMyBMb2ctbGlrZWxpaG9vZCB2w6AgSVJMUyoqDQoNCioqSMOgbSBsb2ctbGlrZWxpaG9vZDoqKg0KDQpcWw0KXGVsbChcYmV0YSkgPSBcc3VtX3tpPTF9Xm4gXGxlZnRbIHlfaSBcbG9nKFxwaV9pKSArIChuX2kgLSB5X2kpIFxsb2coMSAtIFxwaV9pKSBccmlnaHRdDQpcXQ0KDQpU4buRaSDEkWEgaMOzYSBsb2ctbGlrZWxpaG9vZCBi4bqxbmcgSVJMUyAobmjGsCBsb2dpc3RpYyksIG5oxrBuZyBjw7MgdGjDqm0geeG6v3UgdOG7kSBcKCBuX2kgXCkuDQoNCioqQmnhur9uIGdp4bqjIHbDoCB0cuG7jW5nIHPhu5E6KioNCg0KXFsNCndfaSA9IG5faSBccGlfaSAoMSAtIFxwaV9pKQ0KXF0NCg0KXFsNCnpfaSA9IFxldGFfaSArIFxmcmFje3lfaSAtIG5faSBccGlfaX17bl9pIFxwaV9pICgxIC0gXHBpX2kpfQ0KXF0NCg0KIyMjICoqMTEuNCDGr3UgxJFp4buDbSBzbyB24bubaSBtw7QgaMOsbmggbmjhu4sgcGjDom4qKg0KDQp8IEThuqFuZyBk4buvIGxp4buHdSAgICAgICAgICB8IE3DtCBow6xuaCB0xrDGoW5nIOG7qW5nICAgICAgICAgICAgICAgfCBHaGkgY2jDuiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwNCnwgMC8xIHThu6tuZyBjw6EgbmjDom4gICAgIHwgSOG7k2kgcXV5IGxvZ2lzdGljICAgICAgICAgICAgICAgfCBcKCB5X2kgXHNpbSBcdGV4dHtCZXJub3VsbGl9KFxwaV9pKSBcKSAgICAgICAgICAgICAgICAgICAgICAgICB8DQp8IE5ow7NtIG5oaeG7gXUgY8OhIG5ow6JuICAgIHwgQmlub21pYWwgR0xNIHbhu5tpIFwoIHlfaSAvIG5faSBcKSB8IFwoIHlfaSBcc2ltIFx0ZXh0e0Jpbm9taWFsfShuX2ksIFxwaV9pKSBcKSAgICAgICAgICAgICAgICAgICAgIHwNCg0K4oaSIE3DtCBow6xuaCBuaMOzbSBjaG8ga+G6v3QgcXXhuqMgxrDhu5tjIGzGsOG7o25nIGNow61uaCB4w6FjIGjGoW4gdsOsIGTDuW5nIG5oaeG7gXUgdGjDtG5nIHRpbiBoxqFuIHRyw6puIG3hu5dpIHF1YW4gc8OhdC4NCg0KIyMjICoqMTEuNSBE4buvIGxp4buHdSB04bu3IGzhu4cgKHByb3BvcnRpb25zKSoqDQoNCk7hur91IFwoIHlfaSAvIG5faSBcKSDEkcaw4bujYyBnaGkgZMaw4bubaSBk4bqhbmcgdOG7tyBs4buHICgwIDwgdOG7tyBs4buHIDwgMSksIHRhIHbhuqtuIGTDuW5nIG3DtCBow6xuaDoNCg0KXFsNClxsb2cgXGxlZnQoXGZyYWN7eV9pIC8gbl9pfXsxIC0geV9pIC8gbl9pfVxyaWdodCkgPSB4X2leVCBcYmV0YQ0KXF0NCg0K4oaSIE5oxrBuZyBwaOG6o2kgY2jhu4kgcsO1IHPhu5EgbOG6p24gdGjhu60gXCggbl9pIFwpIMSR4buDIHTDrW5oIMSRw7puZyBwaMawxqFuZyBzYWkuDQoNCiMjICoqQ0jGr8agTkcgMTI6IE3DlCBIw4xOSCBUVVnhur5OIFTDjU5IIFThu5RORyBRVcOBVCBUV0VFREVFIChUV0VFRElFIEdMTXMpKioNCg0KIyMjICoqMTIuMSBHaeG7m2kgdGhp4buHdSoqDQoNCk3DtCBow6xuaCAqKlR3ZWVkaWUgR0xNKiogbeG7nyBy4buZbmcgaOG7jSBow6BtIG3FqSBi4bqxbmcgY8OhY2ggY2hvIHBow6lwIHBow6JuIHBo4buRaSBjw7MgxJHhurdjIMSRaeG7g20gdHJ1bmcgZ2lhbiBnaeG7r2EgY8OhYyBwaMOibiBwaOG7kWkgcXVlbiB0aHXhu5ljIG5oxrA6DQoNCi0gR2F1c3NpYW4NCg0KLSBQb2lzc29uDQoNCi0gR2FtbWENCg0KLSBJbnZlcnNlIEdhdXNzaWFuDQoNCk3DtCBow6xuaCBUd2VlZGllIHBow7kgaOG7o3AgduG7m2kgY8OhYyBsb+G6oWkgZOG7ryBsaeG7h3UgY8OzIMSR4bq3YyDEkWnhu4NtOg0KDQotICoqTGnDqm4gdOG7pWMgZMawxqFuZyArIHLhuqV0IG5oaeG7gXUgZ2nDoSB0cuG7iyAwKiogIA0KICAodsOtIGThu6U6IGThu68gbGnhu4d1IGNoaSBwaMOtLCBjw7MgbmfGsOG7nWkga2jDtG5nIHRpw6p1IGTDuW5nKQ0KICANCi0gKipQaMOibiB0w6FuIHF1w6EgbeG7qWMgKG92ZXJkaXNwZXJzaW9uKSoqDQoNCi0gQ8OzIGPhuqMgcGjhuqduICoqcuG7nWkgcuG6oWMqKiAoMCwgMSwgMiwgLi4uKSAqKmzhuqtuIGxpw6puIHThu6VjIGTGsMahbmcqKg0KDQrihpIg4buobmcgZOG7pW5nIHLhu5luZyByw6NpIHRyb25nICoqYuG6o28gaGnhu4NtKiosICoqdMOgaSBjaMOtbmgqKiwgKip5IHThur8qKiwgdsOgIGPDoWMgYsOgaSB0b8OhbiAqKnplcm8taW5mbGF0ZWQgZGF0YSoqLg0KDQoNCiMjIyAqKjEyLjIgxJDhu4tuaCBuZ2jEqWEgdsOgIHTDrW5oIGNo4bqldCoqDQoNClR3ZWVkaWUgbMOgIG3hu5l0IGzhu5twIHBow6JuIHBo4buRaSB0aHXhu5ljICoqaOG7jSBow6BtIG3FqSAoZXhwb25lbnRpYWwgZmFtaWx5KSoqLCB24bubaSAqKmjDoG0gcGjGsMahbmcgc2FpKiogY8OzIGThuqFuZzoNCg0KXFsNClx0ZXh0e1Zhcn0oWSkgPSBccGhpIFxtdV5wDQpcXQ0KDQpUcm9uZyDEkcOzOg0KDQotIFwoIFxtdSA9IFxtYXRoYmJ7RX1bWV0gXCk6IGvhu7MgduG7jW5nDQoNCi0gXCggXHBoaSA+IDAgXCk6IGjhu4cgc+G7kSBwaMOibiB0w6FuDQoNCi0gXCggcCBcKTogY2jhu4kgc+G7kSBz4bupYyBt4bqhbmggKCoqcG93ZXIgaW5kZXgqKikNCg0KDQojIyMgKioxMi4zIEdpw6EgdHLhu4sgxJHhurdjIGJp4buHdCBj4bunYSBjaOG7iSBz4buRIFwoIHAgXCkqKg0KDQp8IFwoIHAgXCkgICAgICAgIHwgUGjDom4gcGjhu5FpIHTGsMahbmcg4bupbmcgICAgICAgICAgICAgICAgICAgICB8DQp8LS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18DQp8IDAgICAgICAgICAgICAgIHwgR2F1c3NpYW4gKE5vcm1hbCkgICAgICAgICAgICAgICAgICAgICAgICB8DQp8IDEgICAgICAgICAgICAgIHwgUG9pc3NvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQp8IFwoICgxLCAyKSBcKSAgIHwgVHdlZWRpZSBo4buXbiBo4bujcCAoMCArIGTGsMahbmcgbGnDqm4gdOG7pWMpICAgICB8DQp8IDIgICAgICAgICAgICAgIHwgR2FtbWEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQp8IDMgICAgICAgICAgICAgIHwgSW52ZXJzZSBHYXVzc2lhbiAgICAgICAgICAgICAgICAgICAgICAgICB8DQoNCuKGkiBW4bubaSBcKCAxIDwgcCA8IDIgXCksIG3DtCBow6xuaCAqKlR3ZWVkaWUgaOG7l24gaOG7o3AqKiBjw7MgdGjhu4M6DQoNCi0gVMOhaSBoaeG7h24gxJHGsOG7o2MgKipz4buRIGzGsOG7o25nIGzhu5tuIGdpw6EgdHLhu4sgMCoqDQoNCi0gTcO0IGjDrG5oIGjDs2EgxJHGsOG7o2MgKipnacOhIHRy4buLIGTGsMahbmcgbGnDqm4gdOG7pWMqKg0KDQoqKlLhuqV0IHBow7kgaOG7o3AqKiBjaG8gY8OhYyBiw6BpIHRvw6FuIG5oxrAgKipjaGkgcGjDrSBi4bqjbyBoaeG7g20qKiwgKip04buVbiB0aOG6pXQqKiwgKipk4buvIGxp4buHdSBjw7Mgc+G7kSAwIHbDoCBnacOhIHRy4buLIHRp4buBbiB04buHKiouDQoNCiMgKipQSOG6pk4gMioqDQojIyAqKlRI4buQTkcgS8OKIE3DlCBU4bqiIEPDgUMgQknhur5OIFN1cGVybWFya2V0IFRyYW5zYWN0aW9ucyoqDQoNCiMjIEdlbmRlcg0KDQpgYGB7cn0NCmEgPC0gcmVhZC5jc3YoZmlsZSA9ICdDOi9Vc2Vycy9BRE1JTi9Eb3dubG9hZHMvVGttdC5jc3YnLCBoZWFkZXIgPSBUKSAjIGxvYWQgZGF0YQ0KYGBgDQoNCmBgYHtyfQ0KdGhvbmdfa2VfZGluaF90aW5oIDwtIGZ1bmN0aW9uKGRhdGEsIHZhcl9uYW1lKSB7DQogICMgQ2hlY2sgaWYgdmFyaWFibGUgZXhpc3RzIGluIGRhdGENCiAgaWYgKCF2YXJfbmFtZSAlaW4lIG5hbWVzKGRhdGEpKSB7DQogICAgc3RvcCgiVmFyaWFibGUgZG9lcyBub3QgZXhpc3QgaW4gZGF0YSIpDQogIH0NCiAgDQogICMgQ29udmVydCB0byBmYWN0b3IgaWYgbmVlZGVkDQogIHZhcmlhYmxlIDwtIGFzLmZhY3RvcihkYXRhW1t2YXJfbmFtZV1dKQ0KICANCiAgIyBmcmVxDQogIGZyZXEgPC0gdGFibGUodmFyaWFibGUpDQogIHBlcmNlbnQgPC0gcHJvcC50YWJsZShmcmVxKSAqIDEwMA0KICANCiAgIyByZXN1bHQNCiAgcmVzdWx0IDwtIGRhdGEuZnJhbWUoDQogICAgR2lhX3RyaSA9IG5hbWVzKGZyZXEpLA0KICAgIFRhbl9zbyA9IGFzLnZlY3RvcihmcmVxKSwNCiAgICBUYW5fc3VhdCA9IHJvdW5kKGFzLnZlY3RvcihwZXJjZW50KSwgMikNCiAgKQ0KICByZXR1cm4ocmVzdWx0KQ0KfQ0KYGBgDQoNCg0KYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCmxpYnJhcnkoZ2dwbG90MikNCmxpYnJhcnkoZHBseXIpDQoNCiMgVOG6oW8gYuG6o25nIMSR4bq/bSBz4buRIGzGsOG7o25nIHRoZW8gZ2nhu5tpIHTDrW5oDQpnZW5kZXJfY291bnQgPC0gYSAlPiUNCiAgY291bnQoR2VuZGVyKSAlPiUNCiAgbXV0YXRlKHBlcmMgPSBuIC8gc3VtKG4pLA0KICAgICAgICAgbGFiZWwgPSBwYXN0ZTAoR2VuZGVyLCAiICgiLCByb3VuZChwZXJjICogMTAwKSwgIiUpIikpDQoNCiMgVuG6vSBiaeG7g3UgxJHhu5MgdHLDsm4NCmdncGxvdChnZW5kZXJfY291bnQsIGFlcyh4ID0gIiIsIHkgPSBuLCBmaWxsID0gR2VuZGVyKSkgKw0KICBnZW9tX2NvbCh3aWR0aCA9IDEpICsNCiAgY29vcmRfcG9sYXIodGhldGEgPSAieSIpICsNCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGxhYmVsKSwgcG9zaXRpb24gPSBwb3NpdGlvbl9zdGFjayh2anVzdCA9IDAuNSkpICsNCiAgbGFicyh0aXRsZSA9ICJU4bu3IGzhu4cgZ2nhu5tpIHTDrW5oIGtow6FjaCBow6BuZyIpICsNCiAgdGhlbWVfdm9pZCgpDQoNCmBgYA0KUGjDom4gYuG7kSBnaeG7m2kgdMOtbmgga2jDoSBjw6JuIGLhurFuZywgY2jhu4kgY2jDqm5oIGzhu4djaCBuaOG6uSBnaeG7r2EgbuG7ryAoRikgdsOgIG5hbSAoTSkuDQoNCsSQaeG7gXUgbsOgeSBjaG8gdGjhuqV5IGThu68gbGnhu4d1IGPDsyB0w61uaCDEkeG6oWkgZGnhu4duIGdp4bubaSB0xrDGoW5nIMSR4buRaSB04buRdCwgdHLDoW5oIMSRxrDhu6NjIHRoacOqbiBs4buHY2ggZ2nhu5tpIHTDrW5oLg0KDQojIyBNYXJpdGFsU3RhdHVzDQoNCmBgYHtyfQ0KdGhvbmdfa2VfZGluaF90aW5oKGEsJ01hcml0YWxTdGF0dXMnKQ0KYGBgDQpH4bqnbiBt4buZdCBu4butYSBraMOhY2ggaMOgbmcgbMOgIMSR4buZYyB0aMOibiwgY8OybiBs4bqhaSBsw6AgxJHDoyBr4bq/dCBow7RuLg0KDQpU4bu3IGzhu4cgbsOgeSBjxaluZyB0xrDGoW5nIMSR4buRaSBjw6JuIGLhurFuZywgZ2nDunAgc28gc8OhbmggaMOgbmggdmkgdGhlbyB0w6xuaCB0cuG6oW5nIGjDtG4gbmjDom4gbcOgIGtow7RuZyBsbyB0aGnDqm4gbOG7h2NoIGThu68gbGnhu4d1Lg0KDQpgYGB7cn0NCmdncGxvdChkYXRhID0gYSwgYWVzKHggPSAiIiwgZmlsbCA9IE1hcml0YWxTdGF0dXMpKSArDQogIGdlb21fYmFyKHdpZHRoID0gMSkgKw0KICBjb29yZF9wb2xhcigieSIpICsNCiAgbGFicyh0aXRsZSA9ICJU4bu3IGzhu4cgxJHhu5ljIHRow6JuIikgKw0KICB0aGVtZV92b2lkKCkNCg0KYGBgDQoNCiMjIEhvbWVvd25lcg0KDQpgYGB7cn0NCnRob25nX2tlX2RpbmhfdGluaChhLCAnSG9tZW93bmVyJykNCmBgYA0KUGjhuqduIGzhu5tuIGtow6FjaCBow6BuZyBsw6AgbmfGsOG7nWkgc+G7nyBo4buvdSBuaMOgIChjaGnhur9tIH42MCUpLg0KDQrEkGnhu4F1IG7DoHkgY8OzIHRo4buDIOG6o25oIGjGsOG7n25nIMSR4bq/biB0aMOzaSBxdWVuIGNoaSB0acOqdSBob+G6t2MgxrB1IHRpw6puIG11YSBz4bqvbSwgbMOgIG3hu5l0IMSR4bq3YyDEkWnhu4NtIHF1YW4gdHLhu41uZyDEkeG7gyBwaMOibiBraMO6YyBraMOhY2ggaMOgbmcuDQoNCmBgYHtyfQ0KZ2dwbG90KGRhdGEgPSBhLCBhZXMoeCA9IEhvbWVvd25lcikpICsNCiAgZ2VvbV9iYXIoZmlsbCA9ICIjQUVFMEFGIikgKw0KICBnZW9tX3RleHQoc3RhdCA9ICJjb3VudCIsIGFlcyhsYWJlbCA9IC4uY291bnQuLiksIHZqdXN0ID0gLTAuNSkgKw0KICBsYWJzKHRpdGxlID0gIlPhu58gaOG7r3UgbmjDoCIsDQogICAgICAgeCA9ICJDw7MgaG/hurdjIGtow7RuZyIsIHkgPSAiVOG6p24gc+G7kSIpICsNCiAgdGhlbWVfbWluaW1hbCgpDQpgYGANCg0KIyMgQ2hpbGRyZW4NCg0KKipDaGlsZHJlbioqIGNo4buJIHPhu5EgY29uIG3DoCBraMOhY2ggaMOgbmcgY8OzLCBiaeG6v24gbsOgeSBsw6AgMSBiaeG6v24gxJHhu4tuaCBsxrDhu6NuZyB2w6wgY8OhYyBnacOhIHRy4buLIGPhu6dhIG7DsyBjw7MgdGjhu4Mgc28gc8OhbmggduG7m2kgbmhhdS4NCmBgYHtyfQ0KbGlicmFyeShza2ltcikNCnNraW0oYSRDaGlsZHJlbikNCmBgYA0KVHJ1bmcgYsOsbmggMi41MyB2w6AgdHJ1bmcgduG7iyAzIGNobyB0aOG6pXkgZOG7ryBsaeG7h3UgY8OzIHh1IGjGsOG7m25nIHBow6JuIGLhu5EgxJHhu4F1Lg0KDQpLaMO0bmcgY8OzIGThuqV1IGhp4buHdSBs4buHY2ggbmdoacOqbSB0cuG7jW5nIGhv4bq3YyBjw7MgZ2nDoSB0cuG7iyBuZ2/huqFpIGzhu4cgYuG6pXQgdGjGsOG7nW5nLg0KDQpgYGB7cn0NCg0KZ2dwbG90KGEsIGFlcyh4ID0gYXMuZmFjdG9yKENoaWxkcmVuKSkpICsNCiAgZ2VvbV9iYXIoZmlsbCA9ICJsaWdodGJsdWUiKSArDQogIGdlb21fdGV4dChzdGF0ID0gImNvdW50IiwgYWVzKGxhYmVsID0gLi5jb3VudC4uKSwgdmp1c3QgPSAtMC41KSArDQogIGxhYnMoeCA9ICJT4buRIGNvbiIsIHkgPSAiU+G7kSBraMOhY2ggaMOgbmciLCB0aXRsZSA9ICJQaMOibiBi4buRIHPhu5EgY29uIGPhu6dhIGtow6FjaCBow6BuZyIpDQoNCg0KYGBgDQoNCiMjIEFubnVhbEluY29tZQ0KDQpgYGB7cn0NCnRob25nX2tlX2RpbmhfdGluaChhLCAnQW5udWFsSW5jb21lJykNCmBgYA0KDQokMzBLIC0gJDUwSyBjaGnhur9tIGjGoW4gMS8zICgzMi43MyUpIHThu5VuZyBz4buRIHF1YW4gc8OhdCDihpIgbMOgIG5ow7NtIMSRw7RuZyBuaOG6pXQuIEvhur90IGjhu6NwIHbhu5tpICQxMEsgLSAkMzBLLCB0YSBjw7Mga2hv4bqjbmcgNTUlIG5nxrDhu51pIHRodeG7mWMgbmjDs20gZMaw4bubaSAkNTBLIGNobyB0aOG6pXkgbeG7qWMgdGh1IG5o4bqtcCB0cnVuZyBiw6xuaCBob+G6t2MgdGjhuqVwIGzDoCBwaOG7lSBiaeG6v24uDQoNCk5ow7NtIHRodSBuaOG6rXAgY2FvICh0csOqbiAkOTBLKSBH4buTbSAkOTBLIC0gJDExMEssICQxMTBLIC0gJDEzMEssICQxMzBLIC0gJDE1MEssICQxNTBLKy4gVOG7lW5nIHThuqduIHN14bqldCBjaOG7iSBraG/huqNuZyAxNi4yOCUgY2hvIHRo4bqleSBuaMOzbSB0aHUgbmjhuq1wIGNhbyBraMOhIG5o4buPLg0KDQpgYGB7cn0NCmdncGxvdChhLCBhZXMoeCA9IEFubnVhbEluY29tZSkpICsNCiAgZ2VvbV9iYXIoZmlsbCA9ICJsaWdodGJsdWUiLCBjb2xvciA9ICJwdXJwbGUiKSArDQogIGxhYnMoeCA9ICJLaG/huqNuZyB0aHUgbmjhuq1wIiwgeSA9ICJU4bqnbiBzdeG6pXQiLCB0aXRsZSA9ICJCaeG7g3UgxJHhu5MgdOG6p24gc3XhuqV0IHRodSBuaOG6rXAgaMOgbmcgbsSDbSIpICsNCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKSkNCmBgYA0KDQojIyBDaXR5DQoNCmBgYHtyfQ0KdGhvbmdfa2VfZGluaF90aW5oKGEsJ0NpdHknKQ0KYGBgDQoNClNhbGVtIGPDsyB04bqnbiBz4buRIGNhbyBuaOG6pXQgKDEzODYgbOG6p24geHXhuqV0IGhp4buHbiwgY2hp4bq/bSA5Ljg2KS4gVGnhur9wIHRoZW8gbMOgIFRhY29tYSAoMTI1NyBs4bqnbiwgOC45NCUpLg0KDQpHdWFkYWxhamFyYSBjw7MgdOG6p24gc+G7kSB0aOG6pXAgbmjhuqV0ICg3NSBs4bqnbiwgY2jhu4kgMC41MyUpLg0KDQpOaMOsbiBjaHVuZywgc+G7kSBsxrDhu6NuZyBraMOhY2ggaMOgbmcg4bufIGPDoWMgdGjDoG5oIHBo4buRIHBow6JuIGLhu5Ega2jDoSBjaMOqbmggbOG7h2NoLCDEkWnhu4F1IG7DoHkgY8OzIHRo4buDIGThuqtuIMSR4bq/biBuaOG7r25nIGvhur90IHF14bqjIHRoacOqbiBs4buHY2ggdHJvbmcgdmnhu4djIHBow6JuIHTDrWNoIHbDoCBzbyBzw6FuaCBnaeG7r2EgY8OhYyB0aMOgbmggcGjhu5EuDQoNCg0KYGBge3J9DQpnZ3Bsb3QoYSwgYWVzKHggPSBDaXR5KSkgKw0KICBnZW9tX2JhcihmaWxsID0gImxpZ2h0Ymx1ZSIsIGNvbG9yID0gImJsYWNrIikgKw0KICBsYWJzKHggPSAiVGjDoG5oIHBo4buRIiwgeSA9ICJU4bqnbiBz4buRIiwgdGl0bGUgPSAiQmnhu4N1IMSR4buTIHThuqduIHPhu5Ega2jDoWNoIGjDoG5nIOG7nyBjw6FjIHRow6BuaCBwaOG7kSIpICsNCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKSkNCmBgYA0KDQojIyBTdGF0ZW9yUHJvdmluY2UNCmBgYHtyfQ0KdGhvbmdfa2VfZGluaF90aW5oKGEsJ1N0YXRlb3JQcm92aW5jZScpDQpgYGANCg0KV0EgKFdhc2hpbmd0b24pIGNoaeG6v20gdOG7tyBs4buHIMOhcCDEkeG6o28gKDMyLjQ4JSwgNDU2NyBs4bqnbiB4deG6pXQgaGnhu4duKSwgQ0EgKENhbGlmb3JuaWEpIMSR4bupbmcgdGjhu6kgaGFpICgxOS40NCUsIDI3MzMgbOG6p24pLCBPUiAoT3JlZ29uKSDEkeG7qW5nIHRo4bupIGJhICgxNi4wOSUsIDIyNjIgbOG6p24pLg0KPT4gQmEgYmFuZyBuw6B5IHRodeG7mWMgVMOieSBC4bqvYyBUaMOhaSBCw6xuaCBExrDGoW5nIGPhu6dhIEhvYSBL4buzIGNoaeG6v20gdOG7lW5nIGPhu5luZyA2OC4wMSUgZOG7ryBsaeG7h3UNCg0KQ8OhYyB04buJbmggTWV4aWNvIChERiwgR3VlcnJlcm8sIEphbGlzY28sIFZlcmFjcnV6LCBZdWNhdGFuLCBaYWNhdGVjYXMpIGPDsyB04bqnbiBzdeG6pXQgdGjhuqVwIGjGoW4gbmhp4buBdS4gVOG7lW5nIGPhu5luZyBjw6FjIHThu4luaCBNZXhpY28gY2jhu4kgY2hp4bq/bSBraG/huqNuZyAyNi4yMyUgZOG7ryBsaeG7h3UNCg0KS+G6v3QgcXXhuqMgbsOgeSBjaG8gdGjhuqV5IHPhu7EgdOG6rXAgdHJ1bmcgxJHhu4thIGzDvSByw7UgcuG7h3QgdHJvbmcgdOG6rXAgZOG7ryBsaeG7h3UsIHbhu5tpIHBo4bqnbiBs4bubbiBk4buvIGxp4buHdSDEkeG6v24gdOG7qyBiYSBiYW5nIHBow61hIFTDonkgQuG6r2MgSG9hIEvhu7MuDQoNCmBgYHtyfQ0KZ2dwbG90KGEsIGFlcyh4ID0gU3RhdGVvclByb3ZpbmNlKSkgKw0KICBnZW9tX2JhcihmaWxsID0gIiNGRkMiLCBjb2xvciA9ICJ5ZWxsb3ciKSArDQogIGxhYnMoeCA9ICJCYW5nIiwgeSA9ICJU4bqnbiBz4buRIiwgdGl0bGUgPSAiQmnhu4N1IMSR4buTIHThuqduIHPhu5Ega2jDoWNoIGjDoG5nIOG7nyBjw6FjIGJhbmciKSArDQogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIGhqdXN0ID0gMSkpDQpgYGANCg0KIyMgQ291bnRyeQ0KDQpgYGB7cn0NCnRob25nX2tlX2RpbmhfdGluaChhLCdDb3VudHJ5JykNCmBgYA0KDQpE4buvIGxp4buHdSBjaG8gdGjhuqV5IHPhu7EgcGjDom4gYuG7kSBraMO0bmcgxJHhu5NuZyDEkeG7gXUgZ2nhu69hIGPDoWMgcXXhu5FjIGdpYSwgduG7m2kgSG9hIEvhu7MgKFVTQSkgY2hp4bq/bSB04bu3IGzhu4cgw6FwIMSR4bqjbyAoNjguMDElLCA5LjU2MiBs4bqnbiB4deG6pXQgaGnhu4duKSwgdGnhur9wIHRoZW8gbMOgIE1leGljbyAoMjYuMjMlLCAzLjY4OCBs4bqnbikgdsOgIENhbmFkYSAoNS43NSUsIDgwOSBs4bqnbikuIMSQaeG7gXUgbsOgeSBjaG8gdGjhuqV5IHThuq1wIGThu68gbGnhu4d1IGNo4bunIHnhur91IHThuq1wIHRydW5nIHbDoG8gdGjhu4sgdHLGsOG7nW5nIE3hu7ksIGPDsyB0aOG7gyBkbyBk4buvIGxp4buHdSDEkcaw4bujYyB0aHUgdGjhuq1wIHThu6sgbmd14buTbiDGsHUgdGnDqm4gY8OhYyBnaWFvIGThu4tjaCBob+G6t2Mgc+G7sSBraeG7h24gdOG6oWkgSG9hIEvhu7MuDQoNCmBgYHtyfQ0KZ2dwbG90KGEsIGFlcyh4ID0gQ291bnRyeSkpICsNCiAgZ2VvbV9iYXIoZmlsbCA9ICIjMENDIiwgY29sb3IgPSAicmVkIikgKw0KICBsYWJzKHggPSAiUXXhu5FjIGdpYSIsIHkgPSAiVOG6p24gc+G7kSIsIHRpdGxlID0gIkJp4buDdSDEkeG7kyB04bqnbiBz4buRIGtow6FjaCBow6BuZyDhu58gY8OhYyBxdeG7kWMgZ2lhIikgKw0KICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEpKQ0KYGBgDQoNCiMjIFByb2R1Y3RGYW1pbHkNCmBgYHtyfQ0KdGhvbmdfa2VfZGluaF90aW5oKGEsJ1Byb2R1Y3RGYW1pbHknKQ0KYGBgDQoNCkThu68gbGnhu4d1IGNobyB0aOG6pXkgc+G6o24gcGjhuqltIHRo4buxYyBwaOG6qW0gKEZvb2QpIGNoaeG6v20gdOG7tyBs4buHIMOhcCDEkeG6o28gKDcyLjIyJSwgMTAuMTUzIGzhuqduIHh14bqldCBoaeG7h24pLCB0cm9uZyBraGkgbmjDs20gxJHhu5MgdeG7kW5nIChEcmluaykgY2jhu4kgY2hp4bq/bSA4Ljg5JSB2w6Agc+G6o24gcGjhuqltIGtow7RuZyB0acOqdSBkw7luZyAoTm9uLUNvbnN1bWFibGUpIGNoaeG6v20gMTguODklLiBT4buxIGNow6puaCBs4buHY2ggcsO1IHLhu4d0IG7DoHkgKEZvb2QgZ+G6pXAgOCBs4bqnbiBEcmluayB2w6AgZ+G6p24gNCBs4bqnbiBOb24tQ29uc3VtYWJsZSkgcGjhuqNuIMOhbmggdHLhu41uZyB0w6JtIGPhu6dhIHThuq1wIGThu68gbGnhu4d1IGNo4bunIHnhur91IHThuq1wIHRydW5nIHbDoG8gY8OhYyBz4bqjbiBwaOG6qW0gdGjhu7FjIHBo4bqpbS4NCg0KYGBge3J9DQpnZ3Bsb3QoYSwgYWVzKHggPSBQcm9kdWN0RmFtaWx5KSkgKw0KICBnZW9tX2JhcihmaWxsID0gInB1cnBsZSIsIGNvbG9yID0gImJsYWNrIikgKw0KICBsYWJzKHggPSAiU+G6o24gcGjhuqltIiwgeSA9ICJU4bqnbiBz4buRIiwgdGl0bGUgPSAiUGjDom4ga2jDumMgc+G6o24gcGjhuqltIGtow6FjaCBow6BuZyBtdWEiKQ0KICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEpKQ0KYGBgDQoNCiMjIFByb2R1Y3REZXBhcnRtZW50DQoNCmBgYHtyfQ0KdGhvbmdfa2VfZGluaF90aW5oKGEsJ1Byb2R1Y3REZXBhcnRtZW50JykNCmBgYA0KDQpU4bqtcCB0cnVuZyB2w6BvIHRo4buxYyBwaOG6qW0gdMawxqFpIHbDoCDEkeG7kyBnaWEgZOG7pW5nOiBIYWkgbmjDs20gUHJvZHVjZSB2w6AgSG91c2Vob2xkIGNoaeG6v20gdOG7lW5nIGPhu5luZyBn4bqnbiAyNSUgZOG7ryBsaeG7h3UsIGNobyB0aOG6pXkgxJHDonkgY8OzIHRo4buDIGzDoCBjw6FjIG3hurd0IGjDoG5nIGNo4bunIGzhu7FjLg0KDQpT4buxIHRoaeG6v3UgY8OibiDEkeG7kWkgcsO1IHLhu4d0OiBUcm9uZyBraGkgbeG7mXQgc+G7kSBuaMOzbSBuaMawIFByb2R1Y2UgY2hp4bq/bSB04bubaSAxNC4xOCUgdGjDrCBuaGnhu4F1IG5ow7NtIGtow6FjIG5oxrAgTWVhdCwgU2VhZm9vZCBs4bqhaSBjaGnhur9tIGNoxrBhIHThu5tpIDElLg0KDQpgYGB7cn0NCmdncGxvdChhLCBhZXMoeCA9IFByb2R1Y3REZXBhcnRtZW50KSkgKw0KICBnZW9tX2JhcihmaWxsID0gIiMxMWFhNzciLCBjb2xvciA9ICJibHVlIikgKw0KICBsYWJzKHggPSAiU+G6o24gcGjhuqltIiwgeSA9ICJU4bqnbiBz4buRIiwgdGl0bGUgPSAiQuG7mSBwaOG6rW4gc+G6o24gcGjhuqltIGtow6FjaCBow6BuZyBtdWEiKSArDQogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIGhqdXN0ID0gMSkpDQpgYGANCg0KIyMgUHJvZHVjdENhdGVnb3J5DQpgYGB7cn0NCnRob25nX2tlX2RpbmhfdGluaChhLCdQcm9kdWN0Q2F0ZWdvcnknKQ0KYGBgDQoNCkThu68gbGnhu4d1IGNobyB0aOG6pXkgU25hY2sgRm9vZHMgKDExLjM4JSkgdsOgIFZlZ2V0YWJsZXMgKDEyLjI5JSkgbMOgIGhhaSBkYW5oIG3hu6VjIHBo4buVIGJp4bq/biBuaOG6pXQsIGNoaeG6v20gdOG7lW5nIGPhu5luZyBn4bqnbiAxLzQgZOG7ryBsaeG7h3UuIEPDoWMgZGFuaCBt4bulYyDEkcOhbmcgY2jDuiDDvSBraMOhYyBiYW8gZ+G7k20gRGFpcnkgKDYuNDIlKSwgRnJ1aXQgKDUuNDQlKSwgdsOgIE1lYXQgKDUuNDElKSwgdHJvbmcga2hpIG5oaeG7gXUgZGFuaCBt4bulYyBuaMawIMSR4buTIGjhuqNpIHPhuqNuIMSRw7NuZyBo4buZcCAoQ2FubmVkIE95c3RlcnMgMC4yNSUsIENhbm5lZCBTaHJpbXAgMC4yNyUpIGhv4bq3YyBjw6FjIHPhuqNuIHBo4bqpbSDDrXQgcGjhu5UgYmnhur9uIChDYW5kbGVzIDAuMzIlLCBNaXNjZWxsYW5lb3VzIDAuMzAlKSBjw7MgdOG6p24gc3XhuqV0IHLhuqV0IHRo4bqlcC4gU+G7sSBwaMOibiBi4buRIG7DoHkgcGjhuqNuIMOhbmggdOG6rXAgdHJ1bmcgY2jDrW5oIHbDoG8gY8OhYyBt4bq3dCBow6BuZyB0acOqdSBkw7luZyBuaGFuaCB2w6AgdGjhu7FjIHBo4bqpbSB0xrDGoWkgc+G7kW5nLCB0cm9uZyBraGkgY8OhYyBz4bqjbiBwaOG6qW0gxJHhurdjIGJp4buHdCBob+G6t2Mgw610IHBo4buVIGJp4bq/biBjaOG7iSBjaGnhur9tIHThu7cgbOG7hyBuaOG7jy4NCg0KYGBge3J9DQpnZ3Bsb3QoYSwgYWVzKHggPSBQcm9kdWN0Q2F0ZWdvcnkpKSArDQogIGdlb21fYmFyKGZpbGwgPSAiI0NDOSIsIGNvbG9yID0gImJsYWNrIikgKw0KICBsYWJzKHggPSAiU+G6o24gcGjhuqltIiwgeSA9ICJU4bqnbiBz4buRIiwgdGl0bGUgPSAiRGFuaCBt4bulYyBz4bqjbiBwaOG6qW0ga2jDoWNoIGjDoG5nIG11YSIpICsNCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKSkNCmBgYA0KDQojIyBVbml0c1NvbGQNCg0KYGBge3J9DQpza2ltKGEkVW5pdHNTb2xkKQ0KYGBgDQoNCkvhur90IHF14bqjIGNobyB0aOG6pXkgdHJ1bmcgYsOsbmggMSDEkcahbiBtdWEgc+G6vSBtdWEga2hv4bqjbmcgNC4wOCDEkcahbiB24buLIHPhuqNuIHBo4bqpbSwgZ2nDoSB0cuG7iyDEkeG7mSBs4buHY2ggY2h14bqpbiBi4bqxbmcgMS4xNyBjaG8gdGjhuqV5IG3hu6ljIMSR4buZIHBow6JuIHTDoW4gdMawxqFuZyDEkeG7kWkgdGjhuqVwIHh1bmcgcXVhbmggZ2nDoSB0cuG7iyB0cnVuZyBiw6xuaC4NCg0KQ8OzIHRo4buDIHRo4bqleSBy4bqxbmcgY8OzIDUwJSBnaWFvIGThu4tjaCBiw6FuIHThu6sgMy01IMSRxqFuIHbhu4sgKGtob+G6o25nIHThu6kgcGjDom4gduG7iykgdsOgIDc1JSBnaWFvIGThu4tjaCBiw6FuIOKJpDUgxJHGoW4gduG7iy4NCmBgYHtyfQ0KYmFycGxvdCh0YWJsZShhJFVuaXRzU29sZCksIA0KICAgICAgICBjb2wgPSAiYmx1ZSIsIA0KICAgICAgICBtYWluID0gIlThuqduIHN14bqldCBVbml0c1NvbGQiLCANCiAgICAgICAgeGxhYiA9ICJT4buRIMSRxqFuIHbhu4siLCB5bGFiID0gIlPhu5EgbOG6p24geHXhuqV0IGhp4buHbiIpDQoNCmBgYHtyfQ0Kc2tpbShhJFJldmVudWUpDQpgYGANCg0KQmnhur9uIFJldmVudWUgKGRvYW5oIHRodSkgY2hvIHRo4bqleSBt4buZdCBwaMOibiBwaOG7kWkgbOG7h2NoIHBo4bqjaSByw7UgcuG7h3QgduG7m2kgZ2nDoSB0cuG7iyB0cnVuZyBiw6xuaCAxMy4wMCB2w6AgdHJ1bmcgduG7iyAxMS4yNSwgcGjhuqNuIMOhbmggc+G7sSBoaeG7h24gZGnhu4duIGPhu6dhIG5oaeG7gXUgZ2lhbyBk4buLY2ggY8OzIGRvYW5oIHRodSBjYW8ga8OpbyB0cnVuZyBiw6xuaCBsw6puLiDEkOG7mSBs4buHY2ggY2h14bqpbiBs4bubbiAoOC4yMikgY8O5bmcga2hv4bqjbmcgYmnhur9uIHRoacOqbiBy4buZbmcgKHThu6sgMC41MyDEkeG6v24gNTYuNykgY2hvIHRo4bqleSBt4bupYyDEkeG7mSBjaMOqbmggbOG7h2NoIMSRw6FuZyBr4buDIGdp4buvYSBjw6FjIGdpYW8gZOG7i2NoLg0KDQpgYGB7cn0NCmhpc3QoYSRSZXZlbnVlLCBjb2wgPSAicmVkIiwgDQogICAgIG1haW4gPSAiUGjDom4gcGjhu5FpIFJldmVudWUiLCANCiAgICAgeGxhYiA9ICJEb2FuaCB0aHUiKQ0KYGBgDQoNCjEgbOG6p24gbuG7r2EgeMOhYyBuaOG6rW4gcsO1IHLDoG5nIHBow6JuIHBo4buRaSBs4buHY2ggcGjhuqNpIG3huqFuaCBj4bunYSBiaeG6v24gUmV2ZW51ZS4gQ8OhYyDEkWnhu4NtIHJpw6puZyBs4bq7IHh14bqldCBoaeG7h24g4bufIHbDuW5nIDMwLTUwLCB0csO5bmcga2jhu5twIHbhu5tpIGdpw6EgdHLhu4sgdOG7kWkgxJFhIDU2LjcgdHJvbmcgdGjhu5FuZyBrw6ouIEtob+G6o25nIGPDoWNoIHhhIHThu6sgcDc1ICh+MTcpIMSR4bq/biBjw6FjIMSRaeG7g20gbsOgeSBjaG8gdGjhuqV5IGNow7puZyB0aOG7sWMgc+G7sSBsw6AgY8OhYyBnacOhIHRy4buLIGPhu7FjIHRy4buLDQo=