1 PHẦN MỞ ĐẦU
1.1 Lời nói đầu
Survival – Phân tích sự tồn tại
_ Phân tích sống sót_ Phân tích sống sót_ Phân tích sự
kiện
Phân tích sống sót hoặc Phân tích sự
kiện khi nhà nghiên cứu muốn tìm hiểu ảnh hưởng đến các biến
kết cục (biến phụ thuộc) mang tính thời
gian.
Khi so sánh 2 phương pháp điều trị cho các bệnh có tần số tử vong
cao như bệnh AIDS, các bệnh ung thư. Nếu mô hình phân tích như
phân tích hồi qui logistic, chỉ để ý đến biến kết cục
(sống/chết hoặc khỏi bệnh/không khỏi bệnh) mà
không quan tâm đến yếu tố thời gian thì tôi không tìm thấy sự
khác biệt giữa 2 phương pháp điều trị vì tỉ lệ tử vong gần như nhau,
nhưng thời gian dẫn đến tử vong ở 2 nhóm có thể khác nhau.
=> Vì vậy chúng ta phải sử dụng mô hình Phân tích sống
sót thì mới thấy sự khác biệt này. Như vậy mô hình nghiên cứu
mô tả kết cục là biến mang 2 giá trị đối lập (sống/chết) tuy
quan trọng nhưng không chính xác.
Mô hình chính để thể hiện mối liên hệ giữa thời gian dẫn đến sự
kiện (sống/chết, …) và các yếu tố nguy cơ (risk
factors) là mô hình có tên là “survival analysis – Phân
tích sống sót”. Cụm từ survival analysis xuất phát
từ nghiên cứu trong bảo hiểm, và giới nghiên cứu y khoa từ đó dùng cụm
từ cho bộ môn của mình. Nhưng như nói trên, sống/chết không
phải là biến duy nhất, vì trong thực tế chúng ta cũng có những biến cố
có bệnh hay không bệnh, xảy ra hay không xảy ra. Ngoài ra,
trong các bộ môn kĩ thuật, người ta dùng một cụm từ khác
“reliability analysis – Phân tích độ tin cậy”, để chỉ
cho khái niệm survival analysis. Tuy nhiên trong đề tài này
chúng tôi sẽ dùng cụm từ Phân tích sống sót.
1.2 Lý do chọn đề tài
Mô hình hóa dữ liệu thời gian đến sự kiện là một
chủ đề quan trọng với nhiều ứng dụng trong các lĩnh vực khác nhau. Tập
hợp các phương pháp để phân tích dữ liệu đó được gọi là phân tích sự tồn
tại, phân tích lịch sử sự kiện hoặc phân tích thời gian. Phân
tích sống sót được áp dụng rộng rãi vì định nghĩa về một
‘sự kiện’ có thể rất đa dạng và các ví dụ bao gồm chết và
sống, thành công và phá sản, tiếp tục hoặc hủy
bỏ. Do đó, các lĩnh vực ứng dụng bao gồm từ y học và xã hội học đến
tiếp thị và kinh tế. Trong bài tiểu luận này, chúng ta xem xét các
vấn đề cơ bản về lý thuyết của phân tích sống sót
bao gồm các công cụ ước tính cho các chức năng sinh tồn và rủi ro và
cách thực hành trên R dựa trên package
survival.
Đặc biệt, trong thời đại hiện nay vừa trải qua dịch bệnh
Covid-19 gây ảnh hưởng rất lớn đến sức khỏe,
kinh tế và xã hội của toàn thế giới. Do đó việc áp dụng phân tích
sống sót cho dịch bệnh Covid 19 là việc có ý nghĩa rất
quan trọng. Cụ thể, phân tích sống sót Covid-19 có thể đưa ra
các dự đoán về số ca nhiễm và tử vong trong tương lai dựa trên các mô
hình dự đoán, đánh giá khả năng ảnh hưởng của các biện pháp phòng chống
dịch bệnh và đưa ra các giải pháp để giảm thiểu tác động của dịch bệnh
đến sức khỏe và kinh tế.
Thấy được tầm quan trọng cũng như tiềm năng khi phân tích sự tồn
tại của package survival trong thời điểm hiện tại, chúng
tôi mong muốn có thể kết hợp các ngôn ngữ lập trình để
giải quyết vấn đề trong kinh tế xã hội hiện và mô hình này sẽ giúp ích
cho việc phân tích các nguy cơ, sự sống sót có thể xảy ra từ đó
có thể dễ dàng giải quyết được các vấn đề quan trọng.
1.3 Mục đích đề tài
Một ưu điểm của Phân tích sống sót là xử lý được
các trường hợp đối tượng nghiên cứu bỏ cuộc giữa chừng (như mất
dấu theo dõi, ngưng điều trị do tác dụng phụ của thuốc hoặc tử vong do
bệnh lý khác…).
Trong mô hình phân tích này các đối tượng còn sống kể cả đối tượng
bỏ cuộc được gọi là censored hoặc sự kiện chưa xảy
ra. Các đối tượng tử vong hoặc hết sống được gọi là
events hoặc sự kiện đã kết thúc. Mục tiêu suy luận
đối với phân tích sống sót là khoảng thời gian giữa thời điểm bắt đầu và
thời điểm sự kiện xảy ra. Trong nghiên cứu y học hiện nay, phân tích
sống sót được sử dụng rộng rãi trong các nghiên cứu lâm sàng để đánh giá
hiệu quả của một phương phương điều trị hoặc để đánh giá tình trạng sống
sót của một số các biện pháp điều trị ung thư. Trong kinh tế xã hội,
phân tích sống sót được dùng để phân tích rủi ro/ nguy
cơ để đánh giá sự tồn tại, của một doanh nghiệp nào đó.
1.4 Đối tượng, phạm vi nghiên cứu
Đối tượng nghiên cứu
Phân tích sống sót tập trung mô tả cho một cá thể hay một nhóm cá
thể nhất định. Một điểm xác định của một sự kiện được gọi là
failure (như là xuất hiện bệnh, chữa khỏi bệnh, tử
vong, tái phát sau khi đáp ứng với điều trị…) mà xảy ra sau một
khoảng thời gian được gọi là failure time (thời gian
dẫn đến sự kiện) hoặc (follow-up time (thời gian
theo dõi) trong nghiên cứu thuần tập/nghiên cứu dựa vào dân số)
trong suốt thời gian các cá thể được quan sát. Để xác định thời gian dẫn
đến sự kiện, chúng ta cần xác định thời điểm bắt đầu (có thể là ngày
nhận vào, ngày chẩn đoán…).
Phạm vi nghiên cứu
Trong bài báo này, chúng ta sẽ xem xét các vấn đề cơ bản về lý
thuyết của phân tích tỷ lệ sống sót bao gồm các công cụ ước tính cho các
chức năng sinh tồn và rủi ro.
Sau đó chúng ta sẽ sử dụng ngôn ngữ lập trình thống kê R để cho
phép ứng dụng thực tế của phương pháp này. Phép ước tính thường được
dùng để Phân tích sống sót được gọi là ước tính
KaplanMeier. Phép ước tính này giúp ta tính
được xác suất sống sót tích lũy tại các mốc thời gian khác nhau . Nếu
muốn so sánh sự khác biệt giữa 2 nhóm điều trị, dùng kiểm định log-rank
bằng cách so sánh 2 hàm xác suất tích lũy của 2 nhóm.
Nội dung chính của bài tiểu luận này là tìm hiểu về package
survival và thực hành trên R với package survival, vì vậy phần lý thuyết
về phân tích sống sót sẽ không được giải thích sâu.
3 LÝ THUYẾT PHÂN TÍCH SỐNG SÓT - SURVIVAL ANALYSIS
3.1 Phân tích sống sót là gì?
Phân tích sống sót (survival analysis) là một
phương pháp thống kê để đánh giá và dự đoán khả năng sống sót
hoặc thời gian đến sự kiện trong một tập dữ liệu.
Phân tích sống sót được sử dụng rộng rãi trong
nhiều lĩnh vực, bao gồm y học, y tế công cộng, kinh tế học, khoa học xã
hội, khoa học môi trường, khoa học dữ liệu và nghiên cứu thị trường. Nó
cung cấp một cách tiếp cận thống kê để đánh giá khả năng sống sót hoặc
thời gian đến sự kiện trong một tập dữ liệu, và đưa ra các dự đoán về
khả năng sống sót hoặc thời gian sống của một nhóm bệnh nhân hoặc cá
nhân trong tương lai.
Vậy, phân tích sống sót (Survival Analysis) liên
quan đến biến thời gian. Biến này ghi nhận thời gian từ lúc bắt
đầu theo dõi cho đến khi xảy ra sự kiện (time-to-failure/
time-to-event).
Các thuật ngữ cơ bản của phân tích sống sót bao
gồm:
• Dữ liệu thời gian và biến cố (time-to-event)
• Nhóm kiểm chứng (censoring)
• Hàm sinh tồn và hàm nguy cơ
Dữ liệu thời gian và biến cố
Trong nghiên cứu y học, rất hay gặp những trường hợp xảy ra sự
kiện liên quan đến thời gian. Ví dụ: thời gian chết, thời gian
khỏi bệnh sau khi điều trị, thời gian tái phát v.v… Tất cả các số
liệu liên quan đến những biến số như vậy gọi là số liệu sống sót
(survival data), mặc dù thuật ngữ này có
vẻ mô tả không chính xác bản chất của số liệu.
Ví dụ về các dữ liệu thời gian -sự kiện
(time-to-event)
• Buld: Thời gian sống sót của bóng đèn (từ lúc sản xuất
đến khi bị hỏng)
• Deat: Tử vong ( thời gian từ lúc bệnh nhân được chuẩn
đoán một loại bệnh nào đó đến khi họ tử vong) Những vấn đề gặp phải khi
sử dụng SA
• Data censoring and truncation: Số liệu bị cắt xén.
• Conditional probability: Xác suất có điều kiện.
Nhóm kiểm chứng
Để thực hiện phân tích sống sót, người ta cần ghi lại
thời gian diễn ra sự kiện 𝑡i cho các đối tượng
𝑖∈{1,…,𝑁} của một nhóm. Tuy nhiên, điều này không phải
lúc nào cũng khả thi và chúng ta chỉ có một phần thông tin về thời gian
diễn ra sự kiện. Trong trường hợp như vậy, người ta nói về kiểm
chứng. Cụ thể, một bệnh nhân có thời gian sống sót được kiểm
chứng nếu sự kiện chưa xảy ra đối với bệnh nhân này. Điều này có thể xảy
ra khi:
• Bệnh nhân bỏ nghiên cứu, ví dụ: ngừng đến phòng khám để tái
khám.
• Nghiên cứu các mốc thời gian cố định và sự kiện xảy ra sau thời
hạn.
Những ví dụ trên được gọi là right-censoring .Trong
hình bên dưới, chúng ta hình dung ý nghĩa của việc kiểm chứng:

Bản tóm tắt về các loại kiểm chứng:
• Kiểm chứng loại I: Tất cả các đối tượng bắt đầu và
kết thúc nghiên cứu cùng một lúc (thời lượng nghiên cứu cố định). Ví dụ
là các thí nghiệm trong phòng thí nghiệm.
• Kiểm chứng loại II: Tất cả các đối tượng bắt đầu
nghiên cứu cùng một lúc nhưng nghiên cứu kết thúc thì một số lượng đối
tượng cố định được xác định trước đã trải qua sự kiện (thời lượng nghiên
cứu linh hoạt). Ví dụ là các thí nghiệm trong phòng thí nghiệm.
• Kiểm chứng loại III: Các đối tượng tham gia nghiên
cứu vào các thời điểm khác nhau, nhưng thời lượng của nghiên cứu là cố
định. Ví dụ là các thử nghiệm lâm sàng.
3.2 Các hàm được sử dụng trong phân tích sống sót
Hàm sinh tồn
Đường cong tỷ lệ sống sót 𝑆(𝑡) biểu thị tỷ lệ
sống sót là một hàm của thời gian (t):
𝑆(𝑡)=𝑃𝑟(𝑇>𝑡)
Giá trị của hàm S(t) là tỷ lệ sống sót của một
nhóm vào thời điểm (t) so với thời điểm bắt đầu quan
sát.
Hàm sinh tồn có các thuộc tính sau:
Khoảng xác định của thời gian là 𝑡 ∈ [ 0 , ∞ )
.
𝑆(𝑡) luôn giảm, nghĩa là
𝑆(𝑡1)≥𝑆(𝑡2) với 𝑡1≤𝑡2
Tại thời điểm 𝑡=0, 𝑆(𝑡=0)=1, tức là xác suất sống
sót qua thời điểm 0 là 1.
Công cụ ước tính cho hàm sinh tồn
Công thức ước lượng Kaplan–Meier (KM) của hàm
sinh tồn 𝑆𝐾𝑀(𝑡) được xác định bởi

Ước lượng này đúng với mọi 𝑡>0 và nó chỉ phụ
thuộc vào hai biến, 𝑛𝑖 và 𝑑𝑖 là:
Hàm nguy cơ
Hàm nguy cơ (hazard function) là một khái niệm quan trọng trong
phân tích sống sót (survival analysis), được sử dụng để mô tả tốc độ xảy
ra sự kiện trong một nhóm dân số theo thời gian.
Công thức của hàm nguy cơ thường được biểu diễn dưới dạng:
h(t) = lim Δt → 0 [P(t ≤ T < t + Δt | T ≥ t) / Δt]
Trong đó:
t là thời gian quan sát, T là thời gian xảy ra sự kiện, Δt là một
khoảng thời gian rất nhỏ, tiến tới 0.
P(t ≤ T < t + Δt | T ≥ t) là xác suất xảy ra sự kiện trong
khoảng thời gian từ t đến t + Δt, biết rằng sự kiện đã không xảy ra
trước thời điểm t
Giá trị của hàm h(t) là tốc độ xảy ra sự kiện (event rate) tại
thời điểm t. Ví dụ, nếu h(10) = 0.05 nghĩa là tại thời điểm 10 đơn vị
thời gian sau khi bắt đầu quan sát, tốc độ xảy ra sự kiện là 0.05 sự
kiện trên một đơn vị thời gian.
Có nhiều phương pháp để ước tính hàm nguy cơ, nhưng phương pháp
phổ biến nhất là mô hình Cox Proportional
Hazards (mô hình tỷ lệ nguy cơ đồng nhất)
- Mô hình Cox Proportional Hazards:
Đây là một phương pháp để tính toán hàm nguy cơ.
Mô hình Cox Proportional Hazards được sử dụng để đánh
giá tác động của các yếu tố đến xác suất sống sót của một đối tượng hoặc
một nhóm đối tượng. Để tính toán hàm nguy cơ bằng mô hình Cox
Proportional Hazards, trước tiên ta phải xác định các yếu tố ảnh
hưởng đến xác suất sống sót và thu thập các dữ liệu liên quan đến các
yếu tố đó. Sau đó, ta sử dụng các phương pháp ước tính hợp lý để tính
toán các tham số của mô hình Cox Proportional
Hazards.
4 THỰC HÀNH VỚI PACKAGE SURVIVAL - PHÂN TÍCH SỐNG SÓT
4.1 Cài đặt và sử dụng package survival
Để sử dụng package survival trên
RStudio, ta thực hiện các bước sau:
Bước 1: Cài đặt package survival
Bạn có thể cài đặt package survival bằng cách chạy
lệnh sau trong RStudio:
install.packages("survival")
Nếu package đã được cài đặt trước đó, bạn có thể bỏ qua bước
này.
Bước 2: Tải package survival
Sau khi cài đặt, bạn cần gọi package survival bằng
lệnh sau:
# Gọi package survival từ thư viện
library(survival)
Bước 3: Sử dụng các hàm của package
survival
Sau khi đã tải package survival, bạn có thể sử dụng
các hàm của package này để phân tích dữ liệu thời gian đến sự kiện. Các
hàm này bao gồm:
survfit(): Tính toán các ước lượng sống sót bằng
phương pháp Kaplan-Meier hoặc phương pháp
Nelson-Aalen.
coxph(): Phân tích mô hình hồi quy
Cox để tìm các yếu tố ảnh hưởng đến thời gian đến sự
kiện.
survreg(): Phân tích mô hình hồi quy
Cox để tìm các yếu tố ảnh hưởng đến thang đo thời gian đến sự
kiện không phải là dạng số nguyên (ví dụ: thời gian sống sót được đo
bằng giờ, ngày, tháng,…).
cox.zph(): Kiểm định giả thuyết về sự đồng nhất của
các hệ số hồi quy Cox theo thời gian.
4.2 Dataset lung - dữ liệu về ung thư phổi
Trong suốt phần này, chúng tôi sẽ sử dụng dataset
lung từ package survival làm dữ liệu phân
tích.
Dataset lung là một trong những tập dữ liệu tiêu
biểu của package survival được sử dụng trong nhiều ví dụ và
hướng dẫn về phân tích dữ liệu. Dataset này được tạo ra từ nghiên
cứu lâm sàng về ung thư phổi và bao gồm thông tin về 228
bệnh nhân ung thư phổi với các biến như tuổi, giới tính, mức độ
suy giảm chức năng phổi,…
Dataset lung được sử dụng để minh họa cho nhiều
khía cạnh khác nhau của phân tích dữ liệu, bao gồm mô hình hồi quy
tuyến tính, mô hình hồi quy logistic, phân tích phân nhóm và đặc
biệt là phân tích sống sót.
Để truy cập dataset lung từ package survival trong R,
ta sử dụng lệnh sau:
# Gọi dataset về dữ liệu bệnh nhân của cách bệnh ung thư -> chọn dataset lung
data(cancer)
Dữ liệu ung thư phổi - lung có cấu trúc như
sau:
# Hiển thị các thành phần của dữ liệu
str(lung)
## 'data.frame': 228 obs. of 10 variables:
## $ inst : num 3 3 3 5 1 12 7 11 1 7 ...
## $ time : num 306 455 1010 210 883 ...
## $ status : num 2 2 1 2 2 1 2 2 2 2 ...
## $ age : num 74 68 56 57 60 74 68 71 53 61 ...
## $ sex : num 1 1 1 1 1 1 2 2 1 1 ...
## $ ph.ecog : num 1 0 0 1 0 1 2 2 1 2 ...
## $ ph.karno : num 90 90 90 90 100 50 70 60 70 70 ...
## $ pat.karno: num 100 90 90 60 90 80 60 80 80 70 ...
## $ meal.cal : num 1175 1225 NA 1150 NA ...
## $ wt.loss : num NA 15 15 11 0 0 10 1 16 34 ...
Mô tả các biến của dữ liệu ung thư phổi -
lung
inst: Mã số của bệnh nhân.
time: Thời gian sống sót hoặc thời gian
theo dõi (ngày).
status: Tình trạng sống sau thời gian theo dõi
(1 = Sống sót, 2 = Qua đời).
age: Tuổi của bệnh nhân.
sex: Giới tính của bệnh nhân (1 = Nam, 2 =
Nữ).
ph.ecog: Mức độ suy giảm phổi của bệnh
nhân (0 = Tốt, 1 = Tàn phế nhẹ, 2 = Tàn phế trung bình, 3 = Tàn phế
nặng).
ph.karno: Điểm Karnofsky của bệnh nhân,
đo lường sức khỏe tổng thể (100 điểm là sức khỏe tốt nhất, 0 điểm là
bệnh nhân đã qua đời)
pat.karno: Điểm Karnofsky của bệnh nhân
dựa trên người chăm sóc (nếu có).
meal.cal: Lượng calo tiêu thụ hàng ngày
của bệnh nhân.
wt.loss: Mức độ giảm cân của bệnh nhân
trong 6 tháng trước đó.
Các biến time và status được sử
dụng trong phân tích sống sót, trong khi các biến còn lại được sử dụng
để đánh giá các yếu tố ảnh hưởng đến sống sót của bệnh nhân. Các biến
ph.ecog và ph.karno cung cấp thông tin
về sức khỏe tổng thể của bệnh nhân, trong khi các biến
meal.cal và wt.loss cung cấp thông tin
về chế độ ăn uống và mức độ giảm cân của bệnh nhân.
4.3 Xử lý dữ liệu ung thư phổi - lung
Lưu ý rằng trạng thái (status) được mã hóa theo
cách không chuẩn trong bộ dữ liệu này. Thông thường, dữ liệu của biến
status gồm 2 giá trị: 0= còn sống, 1= đã chết.
Để thay đổi giá trị dữ liệu của biến về giá trị 0
và 1, chúng ta sẽ dùng hàm mutate() trong
package dplyr. Hàm mutate() trong package
dplyr được sử dụng để thay đổi giá trị của các biến trong
một tập dữ liệu. Để thay đổi giá trị của một biến bằng
mutate(), bạn cần xác định tên biến và cung cấp cho nó một
biểu thức hoặc hàm để tính toán giá trị mới. Quá trình thay đổi giá trị
dữ liệu của biến được thực hiện như sau:
# Gọi package dplyr từ thư viện
library(dplyr)
# Chuyển đổi giá trị của biến status 1 => 0 và 2 => 1
lung <- lung %>% mutate(status = recode(status, '1' = 0, '2' = 1))
# Hiển thị 6 quan sát đầu tiên của 3 biến quan tâm
head(lung[c("time","status","sex")])
## time status sex
## 1 306 1 1
## 2 455 1 1
## 3 1010 0 1
## 4 210 1 1
## 5 883 1 1
## 6 1022 0 1
Ngoài ra, chúng ta sẽ chia tuổi của bệnh nhân thành 3 nhóm cho
tiện quá trình phân tích:
# Chia tuổi thành 3 nhóm tuổi
lung <- lung %>%mutate(age_group = case_when(
age < 50 ~ "dưới 50 tuổi",
age >= 50 & age <= 65 ~ "50 đến 65 tuổi",
age > 65 ~ "trên 65 tuổi",
TRUE ~ "không rõ"))
# Hiển thị 6 quan sát đầu tiên của 4 biến quan tâm
head(lung[c("time","status","sex", "age_group")])
## time status sex age_group
## 1 306 1 1 trên 65 tuổi
## 2 455 1 1 trên 65 tuổi
## 3 1010 0 1 50 đến 65 tuổi
## 4 210 1 1 50 đến 65 tuổi
## 5 883 1 1 50 đến 65 tuổi
## 6 1022 0 1 trên 65 tuổi
Bây giờ chúng ta một bộ dữ liệu mới với:
time: Thời gian sống sót hoặc thời gian theo dõi
(ngày)
status: Tình trạng sống sau thời gian theo dõi
(0 = Sống sót, 1 = Đã chết)
age_group: Tuổi của bệnh nhân theo nhóm tuổi
(dưới 50 tuổi, 50 đến 65 tuổi, trên 65 tuổi)
Lưu ý: hàm Surv() trong
package survival mặc định chấp nhận TRUE/FALSE, trong đó
TRUE là sự kiện và FALSE là kiểm duyệt; 1/0 trong đó 1 là sự kiện và
0 là kiểm duyệt; hoặc 2/1 trong đó 2 là sự kiện và 1 là kiểm duyệt.
Hãy cẩn thận để đảm bảo dữ liệu được định dạng đúng.
4.4 Tạo đối tượng sinh tồn
Trong phân tích sống sót, để thực hiện các phương pháp phân tích
dữ liệu sống sót, ta cần tạo đối tượng sống sót
(survival object) dựa trên các thông tin về thời
gian sống sót và trạng thái sự kiện của các đối tượng
trong một nghiên cứu. Sau đó, ta có thể sử dụng các hàm để vẽ đường sống
sót và ước lượng các mô hình sống sót.
Trong R, ta có thể tạo đối tượng sống sót bằng hàm
Surv(). Cú pháp của hàm này như sau:
Surv(time, event, type = "right")
Trong đó:
time: Là vector chứa thông tin về thời gian
sống sót hoặc thời gian theo dõi của các đối tượng. Đây có thể là
thời gian từ lần khám đầu tiên đến lần khám cuối cùng, thời gian từ điều
trị đến sự kiện xảy ra, hoặc thời gian từ lần phát hiện căn bệnh đến sự
kiện xảy ra.
event: Là vector chứa thông tin về trạng
thái sự kiện của các đối tượng. Giá trị của event có thể là
0 (còn sống) hoặc 1 (chết hoặc xảy ra sự kiện
quan tâm).
type: Là tham số xác định cách tính toán
thời gian sống sót. Giá trị mặc định của type là “right”, có nghĩa
là thời gian sống sót được tính từ thời điểm khám cuối cùng trừ đi thời
điểm xảy ra sự kiện. Nếu giá trị của type là “left”, thời gian sống sót
sẽ được tính từ thời điểm khám đầu tiên trừ đi thời điểm xảy ra sự
kiện.
Ví dụ, ta có dữ liệu về thời gian sống sót và trạng thái sự
kiện của 10 bệnh nhân đầu tiên như sau:
# Lấy biến time và status từ dataset lung và tạo đối tượng sinh tồn mới
Surv(lung$time, lung$status)[1:10]
## [1] 306 455 1010+ 210 883 1022+ 310 361 218 166
Ta thấy đối tượng 1 có sự kiện tại thời điểm
306 ngày, đối tượng 2 có sự kiện tại
thời điểm 455 ngày, đối tượng 3 bị
kiểm duyệt tại thời điểm 1010 ngày, …
4.5 Tính toán đường cong sống sót
Hàm survfit() là một hàm dùng để tính toán và vẽ
đường sống sót ước tính (survival curves) dựa trên dữ
liệu về thời gian sống sót và trạng thái sự kiện của các đối tượng trong
một nghiên cứu. Hàm survfit() là một trong những hàm cơ bản
của package survival được dùng để phân tích sống sót trên
R.
Cú pháp của hàm survfit() như sau:
survfit(formula, data, weights, ...)
Trong đó:
formula: là công thức mô tả mối quan hệ giữa đối
tượng sống sót và các biến giải thích. Công thức này có dạng
Surv(time, event) ~ x1 + x2 + …
data: là data frame chứa các biến trong công
thức.
weights: là vector chứa các trọng số cho mỗi
quan sát trong mô hình.
Tôi sẽ dùng lại đối tượng sống sót
Surv(lung$time, lung$status) để tạo các đường cong sống sót
bằng phương pháp Kaplan-Meier. Tôi tạo đường cong sinh
tồn tổng thể với tham số “~1” chỉ định rằng không có
biến độc lập nào được sử dụng để phân nhóm, gán nó cho đối tượng
survfit_lung và xem xét cấu trúc bằng hàm
str():
# Tính toán đường cong sống sót của tất cả bệnh nhân
survfit_lung <- survfit(Surv(time, status) ~ 1, data = lung)
# Hiển thị các thành phần của dữ liệu lung
str(survfit_lung)
## List of 16
## $ n : int 228
## $ time : num [1:186] 5 11 12 13 15 26 30 31 53 54 ...
## $ n.risk : num [1:186] 228 227 224 223 221 220 219 218 217 215 ...
## $ n.event : num [1:186] 1 3 1 2 1 1 1 1 2 1 ...
## $ n.censor : num [1:186] 0 0 0 0 0 0 0 0 0 0 ...
## $ surv : num [1:186] 0.996 0.982 0.978 0.969 0.965 ...
## $ std.err : num [1:186] 0.0044 0.00885 0.00992 0.01179 0.01263 ...
## $ cumhaz : num [1:186] 0.00439 0.0176 0.02207 0.03103 0.03556 ...
## $ std.chaz : num [1:186] 0.00439 0.0088 0.00987 0.01173 0.01257 ...
## $ type : chr "right"
## $ logse : logi TRUE
## $ conf.int : num 0.95
## $ conf.type: chr "log"
## $ lower : num [1:186] 0.987 0.966 0.959 0.947 0.941 ...
## $ upper : num [1:186] 1 1 0.997 0.992 0.989 ...
## $ call : language survfit(formula = Surv(time, status) ~ 1, data = lung)
## - attr(*, "class")= chr "survfit"
Một số thành phần chính của đối tượng survfit này
sẽ được sử dụng để tạo các đường cong sống sót bao gồm:
time: Các mốc thời gian mà tại đó đường
cong có một bước, tức là ít nhất một sự kiện đã xảy ra.
surv: Uớc tính tỷ lệ sống sót tại thời
điểm tương ứng.
Tuy nhiên, để so sánh tỉ lệ sống sót giữa hai giới tính nam và
nữ, tôi sẽ thêm yếu tố giới tính “~sex” vào hàm
survfit() phân nhóm thành các đường cong sống sót theo
giới tính, gán nó cho đối tượng survfit_lung_bysex
và xem cấu trúc bằng hàm str():
# Tính toán đường cong sống sót theo giới tính
survfit_lung_bysex <- survfit(Surv(time, status) ~ sex, data = lung)
# Hiển thị các thành phần của dữ liệu lung
str(survfit_lung_bysex)
## List of 17
## $ n : int [1:2] 138 90
## $ time : num [1:206] 11 12 13 15 26 30 31 53 54 59 ...
## $ n.risk : num [1:206] 138 135 134 132 131 130 129 128 126 125 ...
## $ n.event : num [1:206] 3 1 2 1 1 1 1 2 1 1 ...
## $ n.censor : num [1:206] 0 0 0 0 0 0 0 0 0 0 ...
## $ surv : num [1:206] 0.978 0.971 0.957 0.949 0.942 ...
## $ std.err : num [1:206] 0.0127 0.0147 0.0181 0.0197 0.0211 ...
## $ cumhaz : num [1:206] 0.0217 0.0291 0.0441 0.0516 0.0593 ...
## $ std.chaz : num [1:206] 0.0126 0.0146 0.018 0.0195 0.021 ...
## $ strata : Named int [1:2] 119 87
## ..- attr(*, "names")= chr [1:2] "sex=1" "sex=2"
## $ type : chr "right"
## $ logse : logi TRUE
## $ conf.int : num 0.95
## $ conf.type: chr "log"
## $ lower : num [1:206] 0.954 0.943 0.923 0.913 0.904 ...
## $ upper : num [1:206] 1 0.999 0.991 0.987 0.982 ...
## $ call : language survfit(formula = Surv(time, status) ~ sex, data = lung)
## - attr(*, "class")= chr "survfit"
Ngoài ra, tôi sẽ đưa vào 2 yếu tố khác vào hàm
survfit() để phân nhóm thành các đường cong sống sót theo
suy giảm chức năng phổi (ph.ecog) và
nhóm tuổi (age_group):
survfit_lung_byph <- survfit(Surv(time, status) ~ ph.ecog, data = lung)
survfit_lung_byage <- survfit(Surv(time, status) ~ age_group, data = lung)
4.6 Đường cong sống sót Kaplan-Meier
Để vẽ đường cong sống sót Kaplan-Meier đơn giản trên R,
tôi dùng hàm cơ bản là hàm plot() để vẽ đồ thị như sau:
plot(surv_fit, main = "Đường cong sinh tồn Kaplan Meier", xlab = "Thời gian", ylab = "Xác suất sống sót")
Trong đó:
surv_fit: là biến được gán bởi hàm
survfit() dùng để tính toán đường cong sinh tồn (xem phần
4.4)
Đường cong sống sót Kaplan Meier đơn giản
Tiếp tục bộ dữ liệu ung thư phổi - lung.
chúng ta có đồ thị về đường cong sống sót Kaplan-Meier đơn giản
như sau:
plot(survfit_lung, xlab = "Thời gian (ngày)", ylab = "Xác suất sống sót", main = "Đường cong sinh tồn Kaplan Meier", col = c("blue"), lwd = 2)

=> Nhận xét đồ thị: đường cong sống sót của dữ liệu ung thư phổi -
lung là một đường cong với xu hướng giảm liên tục.
Ngoài hàm plot() cơ bản trong R, ta có thể sử dụng
package survminer và sử dụng hàm ggsurvplot()
để vẽ đồ thị:
ggsurvplot(survfit_lung, data = lung, risk.table = TRUE, pval = TRUE, legend.title = "Giới Tính", xlab = "Thời gian (ngày)", ylab = "Xác suất sống sót",)

Đường cong sống sót Kaplan Meier theo yếu tố giới
tính
Nâng cao hơn, ta có thể vẽ đường cong sống sót Kaplan-Meier cho
từng nhóm được phân loại theo yếu tố. Trong ví dụ này, đường cong sống
sót Kaplan-Meier được vẽ mỗi nhóm giới tính khác nhau trong dữ liệu ung
thư phổi:
ggsurvplot(survfit_lung_bysex, data = lung, risk.table = TRUE, pval = TRUE, legend.title = "Giới Tính", xlab = "Thời gian (ngày)", ylab = "Xác suất sóng sót")

=> Nhận xét đồ thị: có sự khác biệt về xác suất sống sót giữa 2
nhóm nhớm tính (p=0.0013 < 0.05) và giới tính nam (sex=1) có xác suất
sóng sót qua thời gian thấp hơn giới tính nữ (sex=1)
Đường cong sinh tồn Kaplan Meier theo yếu tố mức độ suy
giảm chức năng phổi
Đường cong sinh tồn Kaplan-Meier được vẽ mỗi nhóm suy giảm chức
năng phổi khác nhau trong dữ liệu ung thư phổi-lung:
ggsurvplot(survfit_lung_byph, data = lung, risk.table = TRUE, pval = TRUE, legend.title = "Mức độ suy giảm chức năng phổi", xlab = "Thời gian (ngày)", ylab = "Xác suất sóng sót")

=> Nhận xét đồ thị: có sự khác biệt đáng kể giữa các mức độ suy
giảm chức năng phổi (p~0.0001 < 0.05) và mức độ suy giảm chức năng
phổi càng càng cao thì xuất suất sóng sốt qua thời gian càng thấp.
Đường cong sinh tồn Kaplan Meier theo từng nhóm
tuổi
Đường cong sinh tồn Kaplan-Meier được vẽ mỗi nhóm nhóm tuổi khác
nhau trong dữ liệu ung thư phổi:
ggsurvplot(survfit_lung_byage, data = lung, risk.table = TRUE, pval = TRUE, legend.title = "Nhóm tuổi", xlab = "Thời gian (ngày)", ylab = "Xác suất sóng sót")

=> Nhận xét đồ thị: không có sự khác nhau đáng kể giữa các nhóm
tuổi (p= 0.18 > 0.05) khi xác suất sống sót giữa các độ tuổi trong
500 ngày đầu gần như không có sự khác biệt.
4.7 So sánh các đường cong sinh tồn
Để so sánh các đường cong sinh tồn trên R bằng
log-rank, bạn có thể sử dụng hàm
survdiff() trong gói survival. Hàm này cho
phép bạn tính toán giá trị thống kê log-rank và
giá trị p để so sánh đường cong sinh tồn giữa hai hoặc
nhiều nhóm. Sau đây là một ví dụ cụ thể về cách thực hiện so sánh các
đường cong sinh tồn bằng log-rank trên R:
survdiff(surv_obj ~ x1, data)
Trong đó:
Kết quả của kiểm định log-rank bao gồm
giá trị chi-squared và giá trị p. Nếu
giá trị p nhỏ hơn mức ý nghĩa được chọn trước (thường
là 0,05), bạn có thể kết luận rằng có sự khác biệt đáng
kể về tỷ lệ sống sót giữa các nhóm được so sánh.
Trong ví dụ này, đường cong sinh tồn Kaplan-Meier
được tính toán cho mỗi nhóm giới tính và mức độ suy giảm chức
năng phổi và mỗi nhóm tuổi khác nhau trong dữ liệu ung thư phổi
như sau:
# So sánh 2 nhóm giới tính của dữ liệu lung
logrank_test1 <- survdiff(with(lung, Surv(time, status)) ~ sex, data = lung)
# So sánh 4 nhóm mức độ suy giảm chức năng phổi
logrank_test2 <- survdiff(with(lung, Surv(time, status)) ~ ph.ecog, data = lung)
# So sánh 3 nhóm độ tuổi
logrank_test3 <- survdiff(with(lung, Surv(time, status)) ~ age_group, data = lung)
print(logrank_test1)
## Call:
## survdiff(formula = with(lung, Surv(time, status)) ~ sex, data = lung)
##
## N Observed Expected (O-E)^2/E (O-E)^2/V
## sex=1 138 112 91.6 4.55 10.3
## sex=2 90 53 73.4 5.68 10.3
##
## Chisq= 10.3 on 1 degrees of freedom, p= 0.001
print(logrank_test2)
## Call:
## survdiff(formula = with(lung, Surv(time, status)) ~ ph.ecog,
## data = lung)
##
## n=227, 1 observation deleted due to missingness.
##
## N Observed Expected (O-E)^2/E (O-E)^2/V
## ph.ecog=0 63 37 54.153 5.4331 8.2119
## ph.ecog=1 113 82 83.528 0.0279 0.0573
## ph.ecog=2 50 44 26.147 12.1893 14.6491
## ph.ecog=3 1 1 0.172 3.9733 4.0040
##
## Chisq= 22 on 3 degrees of freedom, p= 7e-05
print(logrank_test3)
## Call:
## survdiff(formula = with(lung, Surv(time, status)) ~ age_group,
## data = lung)
##
## N Observed Expected (O-E)^2/E (O-E)^2/V
## age_group=50 đến 65 tuổi 116 81 87.1 0.428 0.916
## age_group=dưới 50 tuổi 20 11 15.4 1.238 1.373
## age_group=trên 65 tuổi 92 73 62.5 1.753 2.855
##
## Chisq= 3.5 on 2 degrees of freedom, p= 0.2
Kết quả kiểm định:
Nhóm giới tính (male-female): giá trị p=
0.001 < 0.05 nên có thể kết luận rằng có sự khác biệt
đáng kể giữa nhóm giới tính nam và nữ về tỉ lệ sống sót.
Nhóm Mức độ suy giảm phổi của bệnh nhân
(0 = Tốt, 1 = Tàn phế nhẹ, 2 = Tàn phế trung bình, 3 = Tàn phế
nặng): giá trị p= 7e-05 < 0.05 nên có thể
kết luận rằng có sự khác biệt đáng kể giữa các nhóm mức độ về tỉ lệ
sống sót.
Nhóm Độ tuổi ( dưới 50, 50 đến 65, trên 65): giá
trị p= 0.2 > 0.05 nên có thể kết luận rằng không
có sự khác biệt đáng kể giữa 3 nhóm tuổi được xét.
4.8 Mô hình hồi quy Cox
Mô hình Cox (Cox proportional hazards model) là
một phương pháp hồi quy theo tỉ lệ nguy cơ, được sử dụng trong
phân tích sống sót để đánh giá tác động của các biến độc lập đến tỉ lệ
sống sót. Trong R, chúng ta có thể sử dụng hàm coxph()
trong package survival để tạo một mô hình
Cox. Để tạo một mô hình Cox trên R, tôi dùng hàm sau:
coxph(surv_obj ~ x1 + x2 + ..., data = mydata)
Trong đó:
Tiếp tục với dữ liệu ung thư phổi - lung theo
biến giới tính, chúng ta có mô hình Cox như sau:
# Tạo mô hình cox theo giới tính
coxfit <- coxph(Surv(time, status) ~ sex, data = lung)
coxfit
## Call:
## coxph(formula = Surv(time, status) ~ sex, data = lung)
##
## coef exp(coef) se(coef) z p
## sex -0.5310 0.5880 0.1672 -3.176 0.00149
##
## Likelihood ratio test=10.63 on 1 df, p=0.001111
## n= 228, number of events= 165
4.9 Kiểm định sự phù hợp của mô hình Cox
Trong R, để kiểm tra tính phù hợp của mô hình
Cox với giả định độc lập về thời gian (proportional
hazards assumption), chúng ta có thể sử dụng hàm
cox.zph() trong package survival.
Cú pháp sử dụng hàm cox.zph() như sau:
cox.zph(model, transform = "km")
Trong đó:
model: Là đối tượng mô hình Cox đã được ước
lượng bằng hàm coxph() trong gói survival.
transform: Là phương pháp biến đổi thời gian
(time transformation) được sử dụng để tính toán các thống kê kiểm định.
Giá trị mặc định là “km” tương ứng với phương pháp đường chéo
Kaplan-Meier.
Các biến độc lập được kiểm tra bằng cách tính toán hệ số tương
quan giữa các giá trị dự đoán của hàm Cox và
các hàm đường chéo Kaplan-Meier tương ứng với từng nhóm
giá trị của biến độc lập đó. Nếu giá trị p của kiểm định nhỏ hơn một
ngưỡng xác định (thường là 0.05), ta có thể bác bỏ giả
định độc lập về thời gian và cần phải tìm cách điều
chỉnh mô hình Cox để phù hợp hơn với dữ liệu.
Ví dụ với mô hình Cox đã được tạo từ hàm coxph() (xem phần 4.8), ta
kiểm định như sau:
# Kiểm định mô hình cox
cox.zph(coxfit, transform = "km")
## chisq df p
## sex 2.86 1 0.091
## GLOBAL 2.86 1 0.091
Kết quả cho thấy: giá trị p= 0.091 > 0.05 nên
mô hình Cox được tạo trên là phù hợp.
4.10 So sánh tỉ lệ tử vong giữa hai nhóm bằng mô hình Cox
Từ mô hình Cox, tôi có thể thu được các bảng kết
quả kiểm định giữa hai nhóm giới tính bằng cách sử dụng
hàm tbl_regression() từ package gtsummary, với
tùy chọn exp = TRUE để trả về tỷ lệ rủi ro:
# Gọi package gtsummary từ thư viện
library("gtsummary")
# Tạo mô hình cox theo giới tính và trả về tỷ lệ rủi ro HR
coxph(Surv(time, status) ~ sex, data = lung) %>% tbl_regression(exp = TRUE)
| Characteristic |
HR |
95% CI |
p-value |
| sex |
0.59 |
0.42, 0.82 |
0.001 |
HR biểu thị tỷ lệ nguy cơ giữa hai nhóm
tại bất kỳ thời điểm cụ thể nào. HR < 1 cho thấy
nguy cơ tử vong giảm trong khi HR > 1 cho thấy nguy
cơ tử vong tăng lên.
- Kết quả từ hàm
tbl_regression() cho thấy: Giá trị
p=0.001<0.05 nên kết quả trên là có ý nghĩa thống kê. HR =
0,59 ngụ ý rằng số nam giới sắp chết nhiều gấp
0,59 lần so với nữ giới, tại bất kỳ thời điểm nào. Nói cách
khác, phụ nữ có nguy cơ tử vong thấp hơn đáng kể so với nam giới trong
các dữ liệu này.
Áp dụng với yếu tố mức độ suy giảm chức năng phổi ph.ecog:
# Tạo mô hình cox theo mức độ suy giảm chức năng phổi và trả về tỷ lệ rủi ro HR
coxph(Surv(time, status) ~ ph.ecog, data = lung) %>% tbl_regression(exp = TRUE)
| Characteristic |
HR |
95% CI |
p-value |
| ph.ecog |
1.61 |
1.29, 2.01 |
<0.001 |
- Kết quả từ hàm
tbl_regression() cho thấy: Giá trị
p=0.001<0.05 nên kết quả trên là có ý nghĩa thống kê. HR =
1.61 ngụ ý cho thấy nguy cơ tử vong tăng lên theo mức độ suy
giảm chức năng phổi và với mỗi mức suy giảm chức năng phổi tăng lên thì
xuất sắc bệnh nhân sắp chết có thể tăng theo 1,61
lần.
4.11 Dự đoán tỉ lệ sống sót trong tương lai
Đ ể dự đoán tỉ lệ sống sót của một cá nhân dựa trên mô hình Cox đã
được ước lượng trên R, chúng ta có thể sử dụng hàm
predict() trong package survival.
Cú pháp sử dụng hàm predict() để dự đoán tỉ lệ sống sót
của một cá nhân như sau:
predict(object, newdata, type = "survival")
Trong đó:
object: Là đối tượng mô hình Cox đã
được ước lượng bằng hàm coxph() trong package
survival.
newdata: Là bộ dữ liệu chứa thông tin về các
biến độc lập của biến cần dự đoán. Bộ dữ liệu này phải có cùng tên
và định dạng với bộ dữ liệu được sử dụng để ước lượng mô hình.
type: Là loại dự đoán cần thực hiện. Trong
trường hợp này, ta sử dụng type = "survival" để dự đoán tỉ
lệ sống sót.
Ví dụ: tôi muốn sự báo tỉ lệ sống sót của nhóm giới tính
Nam vào ngày thứ 1050, tôi thực hiện các bước
dự báo như sau:
# Tạo mô hình cox để dự báo
mod <- coxph(Surv(time,status) ~+ sex, data = cancer)
# Tạo 1 dòng quan sát mới để dự báo
pred_dat <- data.frame(time = c(1050), status = c(0), sex = c(0))
# Tiến hành dự báo bằng hàm predict
preds <- predict(mod, newdata = pred_dat,
type = "survival", se.fit = TRUE)
# Lọc xác suất sống sót từ biến preds
pred_dat$prob <- preds$fit
pred_dat
## time status sex prob
## 1 1050 0 0 0.002573077
Kết quả: vào ngày 1050, với trạng thái sóng
sốt (0) và giới tính Nam (0) ta có tỉ lệ sống
sót là 0.00257
4.12 Kết quả phân tích dữ liệu ung thư phổi - lung
Thông qua các bước thực hành phân tích sống sót trên R với dữ liệu
ung thư phổi - lung, chúng ta có bản tóm tắt các kết quả:
- Dataset lung là một trong những tập dữ liệu tiêu
biểu của package
survival được sử dụng trong nhiều ví dụ và
hướng dẫn về phân tích dữ liệu. Dataset này được tạo ra từ nghiên
cứu lâm sàng về ung thư phổi và bao gồm thông tin về 228
bệnh nhân ung thư phổi với các biến như tuổi, giới tính, mức độ
suy giảm chức năng phổi,…
- Biến time, status là tổ hợp biến
time-to-event (dữ liệu thời gian - sự kiện) được dùng
để phân tích sống sót trong R. Bên cạnh đó, biến age, sex,
ph.ecog là 3 biến yếu tố dùng để phân nhóm và đánh giá ảnh
hưởng của chúng lên tỉ lệ sống sót.
- Đồ thị sống sót tổng thể của bệnh nhân ung thư
phổi:

- Đồ thị đường cong sóng sót là đồ thị liên tục giảm, không có xu
hướng tăng ở bất kỳ thời điểm nào vì bệnh nhân chết đi không thể
sống lại.
Yếu tố giới tính có ảnh hưởng đến tỉ lệ sóng sót
của bệnh nhân, trong đó bệnh nhanh mang giới tính nam có tỉ lệ sóng sót
qua thời gian thấp hơn so với bệnh nhân mang giới tính nữ.
Yếu tố mức độ suy giảm chức năng phổi có ảnh hưởng đến tỉ
lệ sống sót của bệnh nhân, trong đó bệnh nhân có mức độ suy
giảm phổi càng lớn thì tỉ lệ sống sót qua thời gian càng thấp.
Yếu tố độ tuổi gần như không có ảnh hưởng đến tỉ
lệ sống sót của bệnh nhân.
LS0tDQp0aXRsZTogIsSQ4buAIFTDgEk6IFBIw4JOIFTDjUNIIFPhu5BORyBDw5JOIC0gUEFDS0FHRSBTVVJWSVZBTCINCmF1dGhvcjoNCiAgLSBuYW1lOiAiTMOqIFBo4bqhbSBUaOG7iyBQaMawxqFuZyBUaeG7gW4gLSAyMTIxMDA2NTczIg0KICAtIG5hbWU6ICJOZ3V54buFbiBLaMOhbmggQW4gLSAyMTIxMDEyNTQ0Ig0KZGF0ZTogIjIwMjMtMDctMDEiDQpvdXRwdXQ6IA0KIGh0bWxfZG9jdW1lbnQ6DQogICAgdG9jOiB0cnVlDQogICAgdG9jX2RlcHRoOiA1DQogICAgdG9jX2Zsb2F0OiB0cnVlDQogICAgdGhlbWU6IGx1bWVuDQogICAgY29kZV9mb2xkaW5nOiBoaWRlDQogICAgY29kZV9kb3dubG9hZDogdHJ1ZQ0KLS0tDQoNCmBgYHs9aHRtbH0NCjxzdHlsZT4NCmJvZHkge3RleHQtYWxpZ246IGp1c3RpZnkgfQ0KPC9zdHlsZT4NCmBgYA0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUpDQpgYGANCg0KIVtdKGJpYXRsLnBuZykNCg0KIyAxIFBI4bqmTiBN4bueIMSQ4bqmVQ0KDQojIyAxLjEgTOG7nWkgbsOzaSDEkeG6p3UNCg0KwqDCoMKgYFN1cnZpdmFsYCAqKi0tIFBow6JuIHTDrWNoIHPhu7EgdOG7k24gdOG6oWkqKiAqKlxfIFBow6JuIHTDrWNoIHPhu5FuZyBzw7N0XF8gUGjDom4gdMOtY2ggc+G7kW5nIHPDs3RcXyBQaMOibiB0w61jaCBz4buxIGtp4buHbioqDQoNCsKgwqDCoCoqUGjDom4gdMOtY2ggc+G7kW5nIHPDs3QqKiBob+G6t2MgKipQaMOibiB0w61jaCBz4buxIGtp4buHbioqIGtoaSBuaMOgIG5naGnDqm4gY+G7qXUgbXXhu5FuIHTDrG0gaGnhu4N1IOG6o25oIGjGsOG7n25nIMSR4bq/biBjw6FjIGJp4bq/biBr4bq/dCBj4bulYyAoKipiaeG6v24gcGjhu6UgdGh14buZYyoqKSBtYW5nIHTDrW5oICp0aOG7nWkgZ2lhbiouDQoNCsKgwqDCoEtoaSBzbyBzw6FuaCAyIHBoxrDGoW5nIHBow6FwIMSRaeG7gXUgdHLhu4sgY2hvIGPDoWMgYuG7h25oIGPDsyB04bqnbiBz4buRIHThu60gdm9uZyBjYW8gbmjGsCAqYuG7h25oIEFJRFMsIGPDoWMgYuG7h25oIHVuZyB0aMawKi4gTuG6v3UgbcO0IGjDrG5oIHBow6JuIHTDrWNoIG5oxrAgcGjDom4gdMOtY2ggaOG7k2kgcXVpIGxvZ2lzdGljLCBjaOG7iSDEkeG7gyDDvSDEkeG6v24gYmnhur9uIGvhur90IGPhu6VjICgqc+G7kW5nL2No4bq/dCogaG/hurdjICpraOG7j2kgYuG7h25oL2tow7RuZyBraOG7j2kgYuG7h25oKikgbcOgICpraMO0bmcgcXVhbiB0w6JtIMSR4bq/biB54bq/dSB04buRIHRo4budaSBnaWFuKiB0aMOsIHTDtGkga2jDtG5nIHTDrG0gdGjhuqV5IHPhu7Ega2jDoWMgYmnhu4d0IGdp4buvYSAyIHBoxrDGoW5nIHBow6FwIMSRaeG7gXUgdHLhu4sgdsOsIHThu4kgbOG7hyB04butIHZvbmcgZ+G6p24gbmjGsCBuaGF1LCBuaMawbmcgdGjhu51pIGdpYW4gZOG6q24gxJHhur9uIHThu60gdm9uZyDhu58gMiBuaMOzbSBjw7MgdGjhu4Mga2jDoWMgbmhhdS4NCg0KPVw+IFbDrCB24bqteSBjaMO6bmcgdGEgcGjhuqNpIHPhu60gZOG7pW5nIG3DtCBow6xuaCAqKlBow6JuIHTDrWNoIHPhu5FuZyBzw7N0KiogdGjDrCBt4bubaSB0aOG6pXkgc+G7sSBraMOhYyBiaeG7h3QgbsOgeS4gTmjGsCB24bqteSBtw7QgaMOsbmggbmdoacOqbiBj4bupdSBtw7QgdOG6oyBr4bq/dCBj4bulYyBsw6AgYmnhur9uIG1hbmcgMiBnacOhIHRy4buLIMSR4buRaSBs4bqtcCAoKnPhu5FuZy9jaOG6v3QqKSB0dXkgcXVhbiB0cuG7jW5nIG5oxrBuZyBraMO0bmcgY2jDrW5oIHjDoWMuDQoNCsKgwqDCoE3DtCBow6xuaCBjaMOtbmggxJHhu4MgdGjhu4MgaGnhu4duIG3hu5FpIGxpw6puIGjhu4cgZ2nhu69hIHRo4budaSBnaWFuIGThuqtuIMSR4bq/biBz4buxIGtp4buHbiAoKnPhu5FuZy9jaOG6v3QsIC4uLiopIHbDoCBjw6FjIHnhur91IHThu5Egbmd1eSBjxqEgKihyaXNrIGZhY3RvcnMpKiBsw6AgbcO0IGjDrG5oIGPDsyB0w6puIGzDoCAiKipzdXJ2aXZhbCBhbmFseXNpcyAtLSBQaMOibiB0w61jaCBz4buRbmcgc8OzdCoqIi4gQ+G7pW0gdOG7qyBgc3Vydml2YWwgYW5hbHlzaXNgIHh14bqldCBwaMOhdCB04burIG5naGnDqm4gY+G7qXUgdHJvbmcgYuG6o28gaGnhu4NtLCB2w6AgZ2nhu5tpIG5naGnDqm4gY+G7qXUgeSBraG9hIHThu6sgxJHDsyBkw7luZyBj4bulbSB04burIGNobyBi4buZIG3DtG4gY+G7p2EgbcOsbmguIE5oxrBuZyBuaMawIG7Ds2kgdHLDqm4sICpz4buRbmcvY2jhur90KiBraMO0bmcgcGjhuqNpIGzDoCBiaeG6v24gZHV5IG5o4bqldCwgdsOsIHRyb25nIHRo4buxYyB04bq/IGNow7puZyB0YSBjxaluZyBjw7Mgbmjhu69uZyBiaeG6v24gY+G7kSAqY8OzKiBi4buHbmggaGF5IGtow7RuZyBi4buHbmgsIHjhuqN5IHJhIGhheSBraMO0bmcgeOG6o3kgcmEuIE5nb8OgaSByYSwgdHJvbmcgY8OhYyBi4buZIG3DtG4ga8SpIHRodeG6rXQsIG5nxrDhu51pIHRhIGTDuW5nIG3hu5l0IGPhu6VtIHThu6sga2jDoWMgIioqcmVsaWFiaWxpdHkgYW5hbHlzaXMgLS0gUGjDom4gdMOtY2ggxJHhu5kgdGluIGPhuq15KioiLCDEkeG7gyBjaOG7iSBjaG8ga2jDoWkgbmnhu4dtIGBzdXJ2aXZhbCBhbmFseXNpc2AuIFR1eSBuaGnDqm4gdHJvbmcgxJHhu4EgdMOgaSBuw6B5IGNow7puZyB0w7RpIHPhur0gZMO5bmcgY+G7pW0gdOG7qyAqKlBow6JuIHTDrWNoIHPhu5FuZyBzw7N0KiouDQoNCiMjIDEuMiBMw70gZG8gY2jhu41uIMSR4buBIHTDoGkNCg0KwqDCoMKgKipNw7QgaMOsbmggaMOzYSBk4buvIGxp4buHdSB0aOG7nWkgZ2lhbiDEkeG6v24gc+G7sSBraeG7h24qKiBsw6AgbeG7mXQgY2jhu6cgxJHhu4EgcXVhbiB0cuG7jW5nIHbhu5tpIG5oaeG7gXUg4bupbmcgZOG7pW5nIHRyb25nIGPDoWMgbMSpbmggduG7sWMga2jDoWMgbmhhdS4gVOG6rXAgaOG7o3AgY8OhYyBwaMawxqFuZyBwaMOhcCDEkeG7gyBwaMOibiB0w61jaCBk4buvIGxp4buHdSDEkcOzIMSRxrDhu6NjIGfhu41pIGzDoCBwaMOibiB0w61jaCBz4buxIHThu5NuIHThuqFpLCBwaMOibiB0w61jaCBs4buLY2ggc+G7rSBz4buxIGtp4buHbiBob+G6t2MgcGjDom4gdMOtY2ggdGjhu51pIGdpYW4uICoqUGjDom4gdMOtY2ggc+G7kW5nIHPDs3QqKiDEkcaw4bujYyDDoXAgZOG7pW5nIHLhu5luZyByw6NpIHbDrCDEkeG7i25oIG5naMSpYSB24buBIG3hu5l0IConc+G7sSBraeG7h24nKiBjw7MgdGjhu4MgcuG6pXQgxJFhIGThuqFuZyB2w6AgY8OhYyB2w60gZOG7pSBiYW8gZ+G7k20gKmNo4bq/dCB2w6Agc+G7kW5nKiwgKnRow6BuaCBjw7RuZyB2w6AgcGjDoSBz4bqjbiosICp0aeG6v3AgdOG7pWMgaG/hurdjIGjhu6d5IGLhu48qLiBEbyDEkcOzLCBjw6FjIGzEqW5oIHbhu7FjIOG7qW5nIGThu6VuZyBiYW8gZ+G7k20gdOG7qyB5IGjhu41jIHbDoCB4w6MgaOG7mWkgaOG7jWMgxJHhur9uIHRp4bq/cCB0aOG7iyB2w6Aga2luaCB04bq/LiBUcm9uZyBiw6BpIHRp4buDdSBsdeG6rW4gbsOgeSwgY2jDum5nIHRhICp4ZW0geMOpdCBjw6FjIHbhuqVuIMSR4buBIGPGoSBi4bqjbiB24buBIGzDvSB0aHV54bq/dCogY+G7p2EgKipwaMOibiB0w61jaCBz4buRbmcgc8OzdCoqIGJhbyBn4buTbSBjw6FjIGPDtG5nIGPhu6UgxrDhu5tjIHTDrW5oIGNobyBjw6FjIGNo4bupYyBuxINuZyBzaW5oIHThu5NuIHbDoCBy4bunaSBybyB2w6AgY8OhY2ggKnRo4buxYyBow6BuaCB0csOqbiBSKiBk4buxYSB0csOqbiBwYWNrYWdlIGBzdXJ2aXZhbGAuDQoNCsKgwqDCoMSQ4bq3YyBiaeG7h3QsIHRyb25nIHRo4budaSDEkeG6oWkgaGnhu4duIG5heSB24burYSB0cuG6o2kgcXVhIGThu4tjaCBi4buHbmggKioqQ292aWQtMTkqKiogZ8OieSDhuqNuaCBoxrDhu59uZyBy4bqldCBs4bubbiDEkeG6v24gc+G7qWMga2jhu49lLCBraW5oIHThur8gdsOgIHjDoyBo4buZaSBj4bunYSB0b8OgbiB0aOG6vyBnaeG7m2kuIERvIMSRw7MgKnZp4buHYyDDoXAgZOG7pW5nIHBow6JuIHTDrWNoIHPhu5FuZyBzw7N0KiBjaG8gZOG7i2NoIGLhu4duaCAqQ292aWQgMTkqIGzDoCB2aeG7h2MgY8OzIMO9IG5naMSpYSBy4bqldCBxdWFuIHRy4buNbmcuIEPhu6UgdGjhu4MsICpwaMOibiB0w61jaCBz4buRbmcgc8OzdCBDb3ZpZC0xOSogY8OzIHRo4buDIMSRxrBhIHJhIGPDoWMgZOG7sSDEkW/DoW4gduG7gSBz4buRIGNhIG5oaeG7hW0gdsOgIHThu60gdm9uZyB0cm9uZyB0xrDGoW5nIGxhaSBk4buxYSB0csOqbiBjw6FjIG3DtCBow6xuaCBk4buxIMSRb8OhbiwgxJHDoW5oIGdpw6Ega2jhuqMgbsSDbmcg4bqjbmggaMaw4bufbmcgY+G7p2EgY8OhYyBiaeG7h24gcGjDoXAgcGjDsm5nIGNo4buRbmcgZOG7i2NoIGLhu4duaCB2w6AgxJHGsGEgcmEgY8OhYyBnaeG6o2kgcGjDoXAgxJHhu4MgZ2nhuqNtIHRoaeG7g3UgdMOhYyDEkeG7mW5nIGPhu6dhIGThu4tjaCBi4buHbmggxJHhur9uIHPhu6ljIGto4buPZSB2w6Aga2luaCB04bq/Lg0KDQrCoMKgwqBUaOG6pXkgxJHGsOG7o2MgdOG6p20gcXVhbiB0cuG7jW5nIGPFqW5nIG5oxrAgdGnhu4FtIG7Eg25nIGtoaSBwaMOibiB0w61jaCBz4buxIHThu5NuIHThuqFpIGPhu6dhIHBhY2thZ2UgYHN1cnZpdmFsYCB0cm9uZyB0aOG7nWkgxJFp4buDbSBoaeG7h24gdOG6oWksIGNow7puZyB0w7RpIG1vbmcgbXXhu5FuIGPDsyB0aOG7gyAqKmvhur90IGjhu6NwIGPDoWMgbmfDtG4gbmfhu68gbOG6rXAgdHLDrG5oKiogxJHhu4MgZ2nhuqNpIHF1eeG6v3QgduG6pW4gxJHhu4EgdHJvbmcga2luaCB04bq/IHjDoyBo4buZaSBoaeG7h24gdsOgIG3DtCBow6xuaCBuw6B5IHPhur0gZ2nDunAgw61jaCBjaG8gdmnhu4djICpwaMOibiB0w61jaCBjw6FjIG5ndXkgY8ahLCBz4buxIHPhu5FuZyBzw7N0KiBjw7MgdGjhu4MgeOG6o3kgcmEgdOG7qyDEkcOzIGPDsyB0aOG7gyBk4buFIGTDoG5nIGdp4bqjaSBxdXnhur90IMSRxrDhu6NjIGPDoWMgduG6pW4gxJHhu4EgcXVhbiB0cuG7jW5nLg0KDQojIyAxLjMgTeG7pWMgxJHDrWNoIMSR4buBIHTDoGkNCg0KwqDCoMKgTeG7mXQgxrB1IMSRaeG7g20gY+G7p2EgKipQaMOibiB0w61jaCBz4buRbmcgc8OzdCoqIGzDoCB44butIGzDvSDEkcaw4bujYyBjw6FjIHRyxrDhu51uZyBo4bujcCDEkeG7kWkgdMaw4bujbmcgbmdoacOqbiBj4bupdSBi4buPIGN14buZYyBnaeG7r2EgY2jhu6tuZyAqKCpuaMawIG3huqV0IGThuqV1IHRoZW8gZMO1aSwgbmfGsG5nIMSRaeG7gXUgdHLhu4sgZG8gdMOhYyBk4bulbmcgcGjhu6UgY+G7p2EgdGh14buRYyBob+G6t2MgdOG7rSB2b25nIGRvIGLhu4duaCBsw70ga2jDoWMuLi4pLg0KDQrCoMKgwqBUcm9uZyBtw7QgaMOsbmggcGjDom4gdMOtY2ggbsOgeSBjw6FjIMSR4buRaSB0xrDhu6NuZyBjw7JuIHPhu5FuZyBr4buDIGPhuqMgxJHhu5FpIHTGsOG7o25nIGLhu48gY3Xhu5ljIMSRxrDhu6NjIGfhu41pIGzDoCAqYGNlbnNvcmVkYCogaG/hurdjIHPhu7Ega2nhu4duIGNoxrBhIHjhuqN5IHJhLiBDw6FjIMSR4buRaSB0xrDhu6NuZyB04butIHZvbmcgaG/hurdjIGjhur90IHPhu5FuZyDEkcaw4bujYyBn4buNaSBsw6AgKmBldmVudHNgKiBob+G6t2Mgc+G7sSBraeG7h24gxJHDoyBr4bq/dCB0aMO6Yy4gTeG7pWMgdGnDqnUgc3V5IGx14bqtbiDEkeG7kWkgduG7m2kgcGjDom4gdMOtY2ggc+G7kW5nIHPDs3QgbMOgIGtob+G6o25nIHRo4budaSBnaWFuIGdp4buvYSB0aOG7nWkgxJFp4buDbSBi4bqvdCDEkeG6p3UgdsOgIHRo4budaSDEkWnhu4NtIHPhu7Ega2nhu4duIHjhuqN5IHJhLiBUcm9uZyBuZ2hpw6puIGPhu6l1IHkgaOG7jWMgaGnhu4duIG5heSwgcGjDom4gdMOtY2ggc+G7kW5nIHPDs3QgxJHGsOG7o2Mgc+G7rSBk4bulbmcgcuG7mW5nIHLDo2kgdHJvbmcgY8OhYyBuZ2hpw6puIGPhu6l1IGzDom0gc8OgbmcgxJHhu4MgxJHDoW5oIGdpw6EgaGnhu4d1IHF14bqjIGPhu6dhIG3hu5l0IHBoxrDGoW5nIHBoxrDGoW5nIMSRaeG7gXUgdHLhu4sgaG/hurdjIMSR4buDIMSRw6FuaCBnacOhIHTDrG5oIHRy4bqhbmcgc+G7kW5nIHPDs3QgY+G7p2EgbeG7mXQgc+G7kSBjw6FjIGJp4buHbiBwaMOhcCDEkWnhu4F1IHRy4buLIHVuZyB0aMawLiBUcm9uZyBraW5oIHThur8geMOjIGjhu5lpLCBwaMOibiB0w61jaCBz4buRbmcgc8OzdCDEkcaw4bujYyBkw7luZyDEkeG7gyBwaMOibiB0w61jaCAqKnLhu6dpIHJvLyBuZ3V5IGPGoSoqIMSR4buDIMSRw6FuaCBnacOhIHPhu7EgdOG7k24gdOG6oWksIGPhu6dhIG3hu5l0IGRvYW5oIG5naGnhu4dwIG7DoG8gxJHDsy4NCg0KIyMgMS40IMSQ4buRaSB0xrDhu6NuZywgcGjhuqFtIHZpIG5naGnDqm4gY+G7qXUNCg0KKirEkOG7kWkgdMaw4bujbmcgbmdoacOqbiBj4bupdSoqDQoNCsKgwqDCoFBow6JuIHTDrWNoIHPhu5FuZyBzw7N0IHThuq1wIHRydW5nIG3DtCB04bqjIGNobyBt4buZdCBjw6EgdGjhu4MgaGF5IG3hu5l0IG5ow7NtIGPDoSB0aOG7gyBuaOG6pXQgxJHhu4tuaC4gTeG7mXQgxJFp4buDbSB4w6FjIMSR4buLbmggY+G7p2EgbeG7mXQgc+G7sSBraeG7h24gxJHGsOG7o2MgZ+G7jWkgbMOgIGBmYWlsdXJlYCAobmjGsCBsw6AgKnh14bqldCBoaeG7h24gYuG7h25oLCBjaOG7r2Ega2jhu49pIGLhu4duaCwgdOG7rSB2b25nLCB0w6FpIHBow6F0IHNhdSBraGkgxJHDoXAg4bupbmcgduG7m2kgxJFp4buBdSB0cuG7iyouLi4pIG3DoCB44bqjeSByYSBzYXUgbeG7mXQga2hv4bqjbmcgdGjhu51pIGdpYW4gxJHGsOG7o2MgZ+G7jWkgbMOgIGBmYWlsdXJlIHRpbWVgICgqdGjhu51pIGdpYW4gZOG6q24gxJHhur9uIHPhu7Ega2nhu4duKikgaG/hurdjIChgZm9sbG93LXVwIHRpbWVgICgqdGjhu51pIGdpYW4gdGhlbyBkw7VpKikgdHJvbmcgbmdoacOqbiBj4bupdSB0aHXhuqduIHThuq1wL25naGnDqm4gY+G7qXUgZOG7sWEgdsOgbyBkw6JuIHPhu5EpIHRyb25nIHN14buRdCB0aOG7nWkgZ2lhbiBjw6FjIGPDoSB0aOG7gyDEkcaw4bujYyBxdWFuIHPDoXQuIMSQ4buDIHjDoWMgxJHhu4tuaCB0aOG7nWkgZ2lhbiBk4bqrbiDEkeG6v24gc+G7sSBraeG7h24sIGNow7puZyB0YSBj4bqnbiB4w6FjIMSR4buLbmggdGjhu51pIMSRaeG7g20gYuG6r3QgxJHhuqd1IChjw7MgdGjhu4MgbMOgICpuZ8OgeSBuaOG6rW4gdsOgbywgbmfDoHkgY2jhuqluIMSRb8OhbiouLi4pLg0KDQrCoMKgwqAqKlBo4bqhbSB2aSBuZ2hpw6puIGPhu6l1KioNCg0KwqDCoMKgVHJvbmcgYsOgaSBiw6FvIG7DoHksIGNow7puZyB0YSBz4bq9IHhlbSB4w6l0IGPDoWMgduG6pW4gxJHhu4EgY8ahIGLhuqNuIHbhu4EgbMO9IHRodXnhur90IGPhu6dhIHBow6JuIHTDrWNoIHThu7cgbOG7hyBz4buRbmcgc8OzdCBiYW8gZ+G7k20gY8OhYyBjw7RuZyBj4bulIMaw4bubYyB0w61uaCBjaG8gY8OhYyBjaOG7qWMgbsSDbmcgc2luaCB04buTbiB2w6AgcuG7p2kgcm8uDQoNCsKgwqDCoFNhdSDEkcOzIGNow7puZyB0YSBz4bq9IHPhu60gZOG7pW5nIG5nw7RuIG5n4buvIGzhuq1wIHRyw6xuaCB0aOG7kW5nIGvDqiBSIMSR4buDIGNobyBwaMOpcCDhu6luZyBk4bulbmcgdGjhu7FjIHThur8gY+G7p2EgcGjGsMahbmcgcGjDoXAgbsOgeS4gUGjDqXAgxrDhu5tjIHTDrW5oIHRoxrDhu51uZyDEkcaw4bujYyBkw7luZyDEkeG7gyBQaMOibiB0w61jaCBz4buRbmcgc8OzdCDEkcaw4bujYyBn4buNaSBsw6AgxrDhu5tjIHTDrW5oICoqKkthcGxhbk1laWVyKioqLiBQaMOpcCDGsOG7m2MgdMOtbmggbsOgeSBnacO6cCB0YSB0w61uaCDEkcaw4bujYyB4w6FjIHN14bqldCBz4buRbmcgc8OzdCB0w61jaCBsxal5IHThuqFpIGPDoWMgbeG7kWMgdGjhu51pIGdpYW4ga2jDoWMgbmhhdSAuIE7hur91IG114buRbiBzbyBzw6FuaCBz4buxIGtow6FjIGJp4buHdCBnaeG7r2EgMiBuaMOzbSDEkWnhu4F1IHRy4buLLCBkw7luZyBraeG7g20gxJHhu4tuaCBsb2ctcmFuayBi4bqxbmcgY8OhY2ggc28gc8OhbmggMiBow6BtIHjDoWMgc3XhuqV0IHTDrWNoIGzFqXkgY+G7p2EgMiBuaMOzbS4NCg0KwqDCoMKgTuG7mWkgZHVuZyBjaMOtbmggY+G7p2EgYsOgaSB0aeG7g3UgbHXhuq1uIG7DoHkgbMOgIHTDrG0gaGnhu4N1IHbhu4EgcGFja2FnZSBzdXJ2aXZhbCB2w6AgdGjhu7FjIGjDoG5oIHRyw6puIFIgduG7m2kgcGFja2FnZSBzdXJ2aXZhbCwgdsOsIHbhuq15IHBo4bqnbiBsw70gdGh1eeG6v3QgduG7gSBwaMOibiB0w61jaCBz4buRbmcgc8OzdCBz4bq9IGtow7RuZyDEkcaw4bujYyBnaeG6o2kgdGjDrWNoIHPDonUuDQoNCiMgMiBU4buUTkcgUVVBTiBW4buAIFBBQ0tBR0UgU1VSVklWQUwNCg0KIyMgMi4xIFRow7RuZyB0aW4gcGFja2FnZSBzdXJ2aXZhbA0KDQrCoMKgwqBQYWNrYWdlIGBzdXJ2aXZhbGAgY2jhu6lhIGPDoWMgcXV5IHRyw6xuaCBwaMOibiB0w61jaCBz4buxIHPhu5FuZyBzw7N0IGPhu5F0IGzDtWksIGJhbyBn4buTbSDEkeG7i25oIG5naMSpYSB24buBIGPDoWMgxJHhu5FpIHTGsOG7o25nICpTdXJ2KiwgxJHGsOG7nW5nIGNvbmcgKkthcGxhbi1NZWllciogdsOgICpBYWxlbi1Kb2hhbnNlbiogKMSRYSB0cuG6oW5nIHRow6FpKSwgbcO0IGjDrG5oICpDb3gqIHbDoCBtw7QgaMOsbmggdGjhu51pIGdpYW4gdGjhuqV0IGLhuqFpIHTEg25nIHThu5FjIHRoZW8gdGhhbSBz4buRLg0KDQoqKlBoacOqbiBi4bqjbiBt4bubaSBuaOG6pXQqKjogMy41LTUNCg0KKipQaGnDqm4gYuG6o24gUiBo4buXIHRy4bujKio6IFIoXD4zLjUuMCkNCg0KKipOaMOzbSB0w6FjIGdpw6EqKjogKlRlcnJ5IE0gVGhlcm5lYXUsIFRob21hcyBMdW1sZXksIEF0a2luc29uIEVsaXphYmV0aCwgQ3Jvd3NvbiBDeW50aGlhKg0KDQoqKk5nxrDhu51pIHBo4bulIHRyw6FjaCBjaMOtbmgqKjogKlRlcnJ5IE0gVGhlcm5lYXUqDQoNCioqVMOgaSBsaeG7h3UgaMaw4bubbmcgZOG6q24qKjogPGh0dHBzOi8vY3Jhbi5yLXByb2plY3Qub3JnL3dlYi9wYWNrYWdlcy9zdXJ2aXZhbC9zdXJ2aXZhbC5wZGY+DQoNCiMjIDIuMiBHaeG7m2kgdGhp4buHdSBwYWNrYWdlIHN1cnZpdmFsDQoNCsKgwqDCoCoqUGjDom4gdMOtY2ggc+G7kW5nIHPDs3QqKiDEkcaw4bujYyBz4butIGThu6VuZyBwaOG7lSBiaeG6v24gdHJvbmcgc2luaCBo4buNYywgeSBo4buNYywga+G7uSB0aHXhuq10LCB0aeG6v3AgdGjhu4ssIGtob2EgaOG7jWMgeMOjIGjhu5lpIGhv4bq3YyBraG9hIGjhu41jLg0KDQrCoMKgwqBDw7MgaGFpIHBoxrDGoW5nIHBow6FwIMSRw7NuZyBnw7NwIHF1YW4gdHLhu41uZyBjaG8gc+G7sSBwaMOhdCB0cmnhu4NuIGPhu6dhIGzEqW5oIHbhu7FjIG7DoHkuIMSQ4bqndSB0acOqbiBsw6AgcGjGsMahbmcgcGjDoXAgY+G7p2EgKioqS2FwbGFuIHbDoCBNZWllcioqKioqLCoqIG5nxrDhu51pIMSRw6MgZ2nhu5tpIHRoaeG7h3UgbeG7mXQgY8O0bmcgY+G7pSAiKirGr+G7m2MgdMOtbmggeMOhYyBzdeG6pXQgc+G7kW5nIHPDs3QqKiIuIFRo4bupIGhhaSBsw6AgdOG7qyAqKipDb3gqKiwqIG5nxrDhu51pIMSRw6MgZ2nhu5tpIHRoaeG7h3UgbeG7mXQgbcO0IGjDrG5oIMSRxrDhu6NjIGfhu41pIGzDoCAiKipNw7QgaMOsbmggcuG7p2kgcm8gdGhlbyB04bu3IGzhu4cgQ294KioiIChDUEhNKSwgbMOgIG3hu5l0IG3DtCBow6xuaCBo4buTaSBxdXkuIFRo4bqtdCDEkeG6t2MgYmnhu4d0IGtoaSBj4bqjIGhhaSBtw7QgaMOsbmggbsOgeSDEkeG7gXUgxJHGsOG7o2Mgc+G7rSBk4bulbmcgbmhp4buBdSBjaG8gxJHhur9uIG5heSB2w6AgbHXDtG4gbMOgIGzhu7FjIGNo4buNbiBj4bunYSBt4buNaSBuaMOgIGtob2EgaOG7jWMga2hpIHBow6JuIHTDrWNoIHbhu4EgKipk4buvIGxp4buHdSBz4buRbmcgc8OzdCAoc3Vydml2YWwgZGF0YSkqKi4NCg0KwqDCoMKgVHJvbmcgbmjhu69uZyBuxINtIHF1YSwgbmhp4buBdSBiw6FvIGPDoW8gxJHDoyDEkcaw4bujYyB2aeG6v3QgduG7gSBraOG6o28gc8OhdCAqcGjDom4gdMOtY2ggdOG7tyBs4buHIHPhu5FuZyBzw7N0Ki4gVHV5IG5oacOqbiwgZG8gc+G7sSBwaOG7qWMgdOG6oXAgY+G7p2EgY8OhYyBwaMawxqFuZyBwaMOhcCwgxJHhurdjIGJp4buHdCBsw6AgxJHhu5FpIHbhu5tpIGThu68gbGnhu4d1IMSRYSBiaeG6v24sIGPDoWMgY3Xhu5ljIHRo4bqjbyBsdeG6rW4gZOG7hSBk4bqrbiDEkeG6v24gbmjhuqdtIGzhuqtuLiBOZ2/DoGkgcmEsIOG7nyBj4bqlcCDEkeG7mSBnaeG7m2kgdGhp4buHdSBjw7Mgc+G6tW4gY8OhYyDEkcOhbmggZ2nDoSwgxJHDonkgaG/DoG4gdG/DoG4gbMOgIGzDvSB0aHV54bq/dCBob+G6t2Mgc+G7rSBk4bulbmcgY8OhYyBuZ8O0biBuZ+G7ryBs4bqtcCB0csOsbmggKG5oxrAgc3RhdGEgaG/hurdjIFNBUykgxJHGsOG7o2Mgc+G7rSBk4bulbmcgY2jhu6cgeeG6v3UgdHJvbmcgY8OhYyB0aOG7kW5nIGvDqiBzaW5oIGjhu41jLg0KDQrCoMKgwqBOZ8aw4bujYyBs4bqhaSwgxJHDoW5oIGdpw6EgY+G7p2EgbeG7mXQgc+G7kSBuZ8aw4budaSDEkcOjIGvhur90IGjhu6NwIHRyw6xuaCBiw6B5IGzDvSB0aHV54bq/dCB24bubaSB0aOG7sWMgdOG6vyBz4butIGThu6VuZyAqKm5nw7RuIG5n4buvIGzhuq1wIHRyw6xuaCB0aOG7kW5nIGvDqiBSKiouIFIgbMOgIG5nw7RuIG5n4buvIMSRxrDhu6NjIHPhu60gZOG7pW5nIHLhu5luZyByw6NpIGNobyBjw6FjIHbhuqVuIMSR4buBIGNodW5nIHRyb25nIGtob2EgaOG7jWMgZOG7ryBsaeG7h3UgdsOsIG7DsyBr4bq/dCBo4bujcCBjw6FjIHTDrW5oIG7Eg25nIHThu6sgY8OhYyBtw7QgaMOsbmggbOG6rXAgdHLDrG5oIGtow6FjIG5oYXUuIENow7puZyB0YSBoxrDhu5tuZyB04bubaSBt4buZdCBjw6FjaCB0csOsbmggYsOgeSB0b8OgbiBkaeG7h24gdsOgIMSR4bunIHLhu5luZyDEkeG7gyBiYW8gZ+G7k20gdOG6pXQgY+G6oyBjw6FjIGNo4bunIMSR4buBIGPhuqduIHRoaeG6v3QgY2hvIHBow6JuIHTDrWNoIHPhu5FuZyBzw7N0IMSRYSBiaeG6v24gbmjGsG5nIMSR4buTbmcgdGjhu51pIGPFqW5nIGThu4UgaGnhu4N1Lg0KDQrCoMKgwqDEkOG7gyB0aOG7sWMgaGnhu4duIHThuqV0IGPhuqMgxJFp4buBdSBuw6B5LCBj4bqnbiBi4buVIHN1bmcgY2hvIHZp4buHYyB0csOsbmggYsOgeSBjw6FjIHBoxrDGoW5nIHBow6FwIHbhu5tpIMSR4bqneSDEkeG7pyB0aMO0bmcgdGluIGPGoSBi4bqjbi4gR2nhuqNpIHRow61jaCBjaGkgdGnhur90IHZp4buHYyBraeG7g20gY2jhu6luZyB2w6AgeOG7rSBsw70gZOG7ryBsaeG7h3UgduG7gSBjw6FjIHPhu7Ega2nhu4duIHRo4budaSBnaWFuLCBi4bufaSB2w6wgduG7gSBjxqEgYuG6o24gdOG6pXQgY+G6oyBjw6FjIHBoxrDGoW5nIHBow6FwIMSR4buBdSBz4butIGThu6VuZyBraeG7g20gY2jhu6luZyDEkeG7gyByw7p0IHJhIGPDoWMgxrDhu5tjIHTDrW5oIGhp4buHdSBxdeG6oy4gQ3Xhu5FpIGPDuW5nLCBjaMO6bmcgdGEgdGjDqm0gbeG7mXQgdsOtIGThu6UgxJHDoyBob+G6oXQgxJHhu5luZyBjaG8gdGjhuqV5IGPDoWNoICp0aOG7sWMgaGnhu4duIHBow6JuIHTDrWNoIGto4bqjIG7Eg25nIHPhu5FuZyBzw7N0IHRo4buxYyB04bq/IHbhu5tpIFIqLg0KDQrCoMKgwqBUcm9uZyBwaOG6p24gdGnhur9wIHRoZW8sIGNow7puZyB0YSBjdW5nIGPhuqVwIG3hu5l0IGThu68gbGnhu4d1IMSR4buDIHBow6JuIHTDrWNoIHPhu7Egc+G7kW5nIHPDs3QgdsOgIMO9IG5naMSpYSBj4bunYSB2aeG7h2MgcGjDom4gdMOtY2ggY2jDum5nLiBUaeG6v3AgdGhlbywgY2jDum5nIHRhIG3DtCB04bqjIGPDoWMgxJHhurdjIMSRaeG7g20gY2h1bmcgY+G7p2EgY8OhYyAqaMOgbSBzaW5oIHThu5NuLCDGsOG7m2MgbMaw4bujbmcgY2hvIGPDoWMgaMOgbSBzaW5oIHThu5NuIHbDoCBzbyBzw6FuaCBoYWkgxJHGsOG7nW5nIGNvbmcgc2luaCB04buTbiouIFNhdSDEkcOzLCBjaMO6bmcgdGEgZ2nhu5tpIHRoaeG7h3UgKk3DtCBow6xuaCBuZ3V5IGPGoSB0aGVvIHThu7cgbOG7hyBDb3gqLiBO4bq/dSBnaeG6oyDEkeG7i25oIHLhu6dpIHJvIHRoZW8gdOG7tyBs4buHIGtow7RuZyDEkcO6bmcsIG5nxrDhu51pIHRhIGPhuqduIHPhu60gZOG7pW5nIG3DtCBow6xuaCBDb3ggcGjDom4gdOG6p25nLiBDdeG7kWkgY8O5bmcsIGNow7puZyB0YSB0csOsbmggYsOgeSBt4buZdCBwaOG6p24gduG7gSBwaMOibiB0w61jaCB04bu3IGzhu4cgc+G7kW5nIHRo4buxYyB04bq/IGLhurFuZyBSLiBCw6BpIGLDoW8ga+G6v3QgdGjDumMgduG7m2kgcGjhuqduIHTDs20gdOG6r3Qgbmfhuq9uIGfhu41uIHbDoCBr4bq/dCBsdeG6rW4uDQoNCiMjIDIuMyBDw6FjIGjDoG0gY8ahIGLhuqNuIHRyb25nIFINCg0KwqDCoMKgRMaw4bubaSDEkcOieSBsw6AgKm3hu5l0IHPhu5EgaMOgbSBjxqEgYuG6o24qIHRyb25nIHBhY2thZ2UgYHN1cnZpdmFsYDoNCg0KLSAgIGBTdXJ2KHRpbWUsIGV2ZW50KWA6IMSQxrDhu6NjIHPhu60gZOG7pW5nIMSR4buDIHThuqFvIHJhIMSR4buRaSB0xrDhu6NuZyBgU3VydmAgdHJvbmcgUi4gxJDhu5FpIHTGsOG7o25nIG7DoHkgxJHGsOG7o2Mgc+G7rSBk4bulbmcgxJHhu4MgxJHhu4tuaCBuZ2jEqWEgdsOgIGzGsHUgdHLhu68gZOG7ryBsaeG7h3Ugc+G7kW5nIHPDs3QgdsOgIHRo4budaSBnaWFuIHRoZW8gZMO1aSB0xrDGoW5nIOG7qW5nLg0KDQotICAgYFN1cnZmaXQoZm9ybXVsYSwgZGF0YSlgOiDEkMaw4bujYyBz4butIGThu6VuZyDEkeG7gyB0w61uaCB0b8OhbiB04bu3IGzhu4cgc+G7kW5nIHPDs3QgaG/hurdjIHBow6JuIHTDrWNoIHRo4budaSBnaWFuIMSR4bq/biBz4buxIGtp4buHbiBjaG8gY8OhYyBuaMOzbSBk4buvIGxp4buHdSBraMOhYyBuaGF1Lg0KDQotICAgYENveHBoKFN1cnYgKHRpbWUsIGV2ZW50KSB+IEksIGRhdGEpYCA6IE3DtCBow6xuaCBjb3ggdGnDqnUgY2h14bqpbiwgbcO0IGjDrG5oIENveCDEkcaw4bujYyBz4butIGThu6VuZyDEkeG7gyB4w6FjIMSR4buLbmggeeG6v3UgdOG7kSDhuqNuaCBoxrDhu59uZyDEkeG6v24gdGjhu51pIGdpYW4gc+G7kW5nIHPDs3QgaG/hurdjIHRo4budaSBnaWFuIMSR4bq/biBz4buxIGtp4buHbi4NCg0KLSAgIGBTdXJ2cmVnKGZvcm11bGEsIGRhdGEpYDogSMOgbSBuw6B5IMSRxrDhu6NjIHPhu60gZOG7pW5nIMSR4buDIHBow6JuIHTDrWNoIGPDoWMgeeG6v3UgdOG7kSDhuqNuaCBoxrDhu59uZyDEkeG6v24gdGjhu51pIGdpYW4gc+G7kW5nIHPDs3QgaG/hurdjIHRo4budaSBnaWFuIMSR4bq/biBz4buxIGtp4buHbiB0cm9uZyBtw7QgaMOsbmggaOG7k2kgcXV5Lg0KDQotICAgYFN1cnZleHAoKWA6IEjDoG0gbsOgeSDEkcaw4bujYyBz4butIGThu6VuZyDEkeG7gyB0w61uaCB0b8OhbiB04bu3IGzhu4cgc+G7kW5nIHPDs3QgaG/hurdjIHBow6JuIHTDrWNoIHRo4budaSBnaWFuIMSR4bq/biBz4buxIGtp4buHbiBjaG8gY8OhYyBuaMOzbSBk4buvIGxp4buHdSBraMOhYyBuaGF1IHRyb25nIG3DtCBow6xuaCBwaMOibiBwaOG7kWkgbcWpLg0KDQojIDMgTMOdIFRIVVnhur5UIFBIw4JOIFTDjUNIIFPhu5BORyBTw5NUIC0gU1VSVklWQUwgQU5BTFlTSVMNCg0KIyMgMy4xIFBow6JuIHTDrWNoIHPhu5FuZyBzw7N0IGzDoCBnw6w/DQoNCsKgwqDCoCoqUGjDom4gdMOtY2ggc+G7kW5nIHPDs3QgKHN1cnZpdmFsIGFuYWx5c2lzKSoqIGzDoCAqbeG7mXQgcGjGsMahbmcgcGjDoXAgdGjhu5FuZyBrw6oqIMSR4buDIMSRw6FuaCBnacOhIHbDoCAqZOG7sSDEkW/DoW4ga2jhuqMgbsSDbmcgc+G7kW5nIHPDs3QgaG/hurdjIHRo4budaSBnaWFuIMSR4bq/biBz4buxIGtp4buHbiogdHJvbmcgbeG7mXQgdOG6rXAgZOG7ryBsaeG7h3UuDQoNCsKgwqDCoCoqUGjDom4gdMOtY2ggc+G7kW5nIHPDs3QqKiDEkcaw4bujYyBz4butIGThu6VuZyBy4buZbmcgcsOjaSB0cm9uZyBuaGnhu4F1IGzEqW5oIHbhu7FjLCBiYW8gZ+G7k20geSBo4buNYywgeSB04bq/IGPDtG5nIGPhu5luZywga2luaCB04bq/IGjhu41jLCBraG9hIGjhu41jIHjDoyBo4buZaSwga2hvYSBo4buNYyBtw7RpIHRyxrDhu51uZywga2hvYSBo4buNYyBk4buvIGxp4buHdSB2w6AgbmdoacOqbiBj4bupdSB0aOG7iyB0csaw4budbmcuIE7DsyBjdW5nIGPhuqVwIG3hu5l0IGPDoWNoIHRp4bq/cCBj4bqtbiB0aOG7kW5nIGvDqiDEkeG7gyDEkcOhbmggZ2nDoSBraOG6oyBuxINuZyBz4buRbmcgc8OzdCBob+G6t2MgdGjhu51pIGdpYW4gxJHhur9uIHPhu7Ega2nhu4duIHRyb25nIG3hu5l0IHThuq1wIGThu68gbGnhu4d1LCB2w6AgxJHGsGEgcmEgY8OhYyBk4buxIMSRb8OhbiB24buBIGto4bqjIG7Eg25nIHPhu5FuZyBzw7N0IGhv4bq3YyB0aOG7nWkgZ2lhbiBz4buRbmcgY+G7p2EgbeG7mXQgbmjDs20gYuG7h25oIG5ow6JuIGhv4bq3YyBjw6EgbmjDom4gdHJvbmcgdMawxqFuZyBsYWkuDQoNCsKgwqDCoFbhuq15LCAqKnBow6JuIHTDrWNoIHPhu5FuZyBzw7N0IChTdXJ2aXZhbCBBbmFseXNpcykqKiBsacOqbiBxdWFuIMSR4bq/biAqYmnhur9uIHRo4budaSBnaWFuKi4gQmnhur9uIG7DoHkgZ2hpIG5o4bqtbiB0aOG7nWkgZ2lhbiB04burIGzDumMgYuG6r3QgxJHhuqd1IHRoZW8gZMO1aSBjaG8gxJHhur9uIGtoaSB44bqjeSByYSBz4buxIGtp4buHbiAoKnRpbWUtdG8tZmFpbHVyZS8gdGltZS10by1ldmVudCopLg0KDQrCoMKgwqAqKkPDoWMgdGh14bqtdCBuZ+G7ryBjxqEgYuG6o24qKiBj4bunYSBwaMOibiB0w61jaCBz4buRbmcgc8OzdCBiYW8gZ+G7k206DQoNCirigKIgROG7ryBsaeG7h3UgdGjhu51pIGdpYW4gdsOgIGJp4bq/biBj4buRICh0aW1lLXRvLWV2ZW50KSoNCg0KKuKAoiBOaMOzbSBraeG7g20gY2jhu6luZyAoY2Vuc29yaW5nKSoNCg0KKuKAoiBIw6BtIHNpbmggdOG7k24gdsOgIGjDoG0gbmd1eSBjxqEqDQoNCioqROG7ryBsaeG7h3UgdGjhu51pIGdpYW4gdsOgIGJp4bq/biBj4buRKioNCg0KwqDCoMKgVHJvbmcgbmdoacOqbiBj4bupdSB5IGjhu41jLCBy4bqldCBoYXkgZ+G6t3Agbmjhu69uZyB0csaw4budbmcgaOG7o3AgeOG6o3kgcmEgKnPhu7Ega2nhu4duIGxpw6puIHF1YW4gxJHhur9uIHRo4budaSBnaWFuKi4gVsOtIGThu6U6ICp0aOG7nWkgZ2lhbiBjaOG6v3QsIHRo4budaSBnaWFuIGto4buPaSBi4buHbmggc2F1IGtoaSDEkWnhu4F1IHRy4buLLCB0aOG7nWkgZ2lhbiB0w6FpIHBow6F0IHYudi4uLiogVOG6pXQgY+G6oyBjw6FjIHPhu5EgbGnhu4d1IGxpw6puIHF1YW4gxJHhur9uIG5o4buvbmcgYmnhur9uIHPhu5EgbmjGsCB24bqteSBn4buNaSBsw6AgKnPhu5EgbGnhu4d1IHPhu5FuZyBzw7N0ICgqKipzdXJ2aXZhbCBkYXRhKioqKSosIG3hurdjIGTDuSB0aHXhuq10IG5n4buvIG7DoHkgY8OzIHbhursgbcO0IHThuqMga2jDtG5nIGNow61uaCB4w6FjIGLhuqNuIGNo4bqldCBj4bunYSBz4buRIGxp4buHdS4NCg0KwqDCoMKgVsOtIGThu6UgduG7gSBjw6FjICpk4buvIGxp4buHdSB0aOG7nWkgZ2lhbiAtc+G7sSBraeG7h24gKHRpbWUtdG8tZXZlbnQpKg0KDQrigKIgYEJ1bGRgOiBUaOG7nWkgZ2lhbiBz4buRbmcgc8OzdCBj4bunYSBiw7NuZyDEkcOobiAodOG7qyBsw7pjIHPhuqNuIHh14bqldCDEkeG6v24ga2hpIGLhu4sgaOG7j25nKQ0KDQrigKIgYERlYXRgOiBU4butIHZvbmcgKCB0aOG7nWkgZ2lhbiB04burIGzDumMgYuG7h25oIG5ow6JuIMSRxrDhu6NjIGNodeG6qW4gxJFvw6FuIG3hu5l0IGxv4bqhaSBi4buHbmggbsOgbyDEkcOzIMSR4bq/biBraGkgaOG7jSB04butIHZvbmcpIE5o4buvbmcgduG6pW4gxJHhu4EgZ+G6t3AgcGjhuqNpIGtoaSBz4butIGThu6VuZyBTQQ0KDQrigKIgYERhdGEgY2Vuc29yaW5nIGFuZCB0cnVuY2F0aW9uYDogU+G7kSBsaeG7h3UgYuG7iyBj4bqvdCB4w6luLg0KDQrigKIgYENvbmRpdGlvbmFsIHByb2JhYmlsaXR5YDogWMOhYyBzdeG6pXQgY8OzIMSRaeG7gXUga2nhu4duLg0KDQrCoMKgwqAqKk5ow7NtIGtp4buDbSBjaOG7qW5nKioNCg0KwqDCoMKgxJDhu4MgKnRo4buxYyBoaeG7h24gcGjDom4gdMOtY2ggc+G7kW5nIHPDs3QqLCBuZ8aw4budaSB0YSBj4bqnbiBnaGkgbOG6oWkgdGjhu51pIGdpYW4gZGnhu4VuIHJhIHPhu7Ega2nhu4duICoq8J2RoWkqKiBjaG8gY8OhYyDEkeG7kWkgdMaw4bujbmcgKirwnZGW4oiIezEsLi4uLPCdkYF9KiogY+G7p2EgbeG7mXQgbmjDs20uIFR1eSBuaGnDqm4sIMSRaeG7gXUgbsOgeSBraMO0bmcgcGjhuqNpIGzDumMgbsOgbyBjxaluZyBraOG6oyB0aGkgdsOgIGNow7puZyB0YSBjaOG7iSBjw7MgbeG7mXQgcGjhuqduIHRow7RuZyB0aW4gduG7gSB0aOG7nWkgZ2lhbiBkaeG7hW4gcmEgc+G7sSBraeG7h24uIFRyb25nIHRyxrDhu51uZyBo4bujcCBuaMawIHbhuq15LCBuZ8aw4budaSB0YSBuw7NpIHbhu4EgKipraeG7g20gY2jhu6luZy4qKiBD4bulIHRo4buDLCBt4buZdCBi4buHbmggbmjDom4gY8OzIHRo4budaSBnaWFuIHPhu5FuZyBzw7N0IMSRxrDhu6NjIGtp4buDbSBjaOG7qW5nIG7hur91IHPhu7Ega2nhu4duIGNoxrBhIHjhuqN5IHJhIMSR4buRaSB24bubaSBi4buHbmggbmjDom4gbsOgeS4gxJBp4buBdSBuw6B5IGPDsyB0aOG7gyB44bqjeSByYSBraGk6DQoNCuKAoiBC4buHbmggbmjDom4gYuG7jyBuZ2hpw6puIGPhu6l1LCB2w60gZOG7pTogbmfhu6tuZyDEkeG6v24gcGjDsm5nIGtow6FtIMSR4buDIHTDoWkga2jDoW0uDQoNCuKAoiBOZ2hpw6puIGPhu6l1IGPDoWMgbeG7kWMgdGjhu51pIGdpYW4gY+G7kSDEkeG7i25oIHbDoCBz4buxIGtp4buHbiB44bqjeSByYSBzYXUgdGjhu51pIGjhuqFuLg0KDQrCoMKgwqBOaOG7r25nIHbDrSBk4bulIHRyw6puIMSRxrDhu6NjIGfhu41pIGzDoCBgcmlnaHQtY2Vuc29yaW5nYCAuVHJvbmcgaMOsbmggYsOqbiBkxrDhu5tpLCBjaMO6bmcgdGEgaMOsbmggZHVuZyDDvSBuZ2jEqWEgY+G7p2Egdmnhu4djIGtp4buDbSBjaOG7qW5nOg0KDQohW10oaGluaHRsLzIucG5nKQ0KDQrCoMKgwqBC4bqjbiB0w7NtIHThuq90IHbhu4EgKipjw6FjIGxv4bqhaSBraeG7g20gY2jhu6luZyoqOg0KDQrigKIgKipLaeG7g20gY2jhu6luZyBsb+G6oWkgSToqKiBU4bqldCBj4bqjIGPDoWMgxJHhu5FpIHTGsOG7o25nIGLhuq90IMSR4bqndSB2w6Aga+G6v3QgdGjDumMgbmdoacOqbiBj4bupdSBjw7luZyBt4buZdCBsw7pjICh0aOG7nWkgbMaw4bujbmcgbmdoacOqbiBj4bupdSBj4buRIMSR4buLbmgpLiBWw60gZOG7pSBsw6AgY8OhYyB0aMOtIG5naGnhu4dtIHRyb25nIHBow7JuZyB0aMOtIG5naGnhu4dtLg0KDQrigKIgKipLaeG7g20gY2jhu6luZyBsb+G6oWkgSUk6KiogVOG6pXQgY+G6oyBjw6FjIMSR4buRaSB0xrDhu6NuZyBi4bqvdCDEkeG6p3UgbmdoacOqbiBj4bupdSBjw7luZyBt4buZdCBsw7pjIG5oxrBuZyBuZ2hpw6puIGPhu6l1IGvhur90IHRow7pjIHRow6wgbeG7mXQgc+G7kSBsxrDhu6NuZyDEkeG7kWkgdMaw4bujbmcgY+G7kSDEkeG7i25oIMSRxrDhu6NjIHjDoWMgxJHhu4tuaCB0csaw4bubYyDEkcOjIHRy4bqjaSBxdWEgc+G7sSBraeG7h24gKHRo4budaSBsxrDhu6NuZyBuZ2hpw6puIGPhu6l1IGxpbmggaG/huqF0KS4gVsOtIGThu6UgbMOgIGPDoWMgdGjDrSBuZ2hp4buHbSB0cm9uZyBwaMOybmcgdGjDrSBuZ2hp4buHbS4NCg0K4oCiICoqS2nhu4NtIGNo4bupbmcgbG/huqFpIElJSToqKiBDw6FjIMSR4buRaSB0xrDhu6NuZyB0aGFtIGdpYSBuZ2hpw6puIGPhu6l1IHbDoG8gY8OhYyB0aOG7nWkgxJFp4buDbSBraMOhYyBuaGF1LCBuaMawbmcgdGjhu51pIGzGsOG7o25nIGPhu6dhIG5naGnDqm4gY+G7qXUgbMOgIGPhu5EgxJHhu4tuaC4gVsOtIGThu6UgbMOgIGPDoWMgdGjhu60gbmdoaeG7h20gbMOibSBzw6BuZy4NCg0KIyMgMy4yIEPDoWMgaMOgbSDEkcaw4bujYyBz4butIGThu6VuZyB0cm9uZyBwaMOibiB0w61jaCBz4buRbmcgc8OzdA0KDQrCoMKgwqAqKkjDoG0gc2luaCB04buTbioqDQoNCsKgwqDCoMSQxrDhu51uZyBjb25nIHThu7cgbOG7hyBz4buRbmcgc8OzdCAqKvCdkYYo8J2RoSkqKiBiaeG7g3UgdGjhu4sgdOG7tyBs4buHIHPhu5FuZyBzw7N0IGzDoCBt4buZdCBow6BtIGPhu6dhIHRo4budaSBnaWFuICoqKHQpKio6DQoNCioq8J2RhijwnZGhKT3wnZGD8J2RnyjwnZGHXD7wnZGhKSoqDQoNCsKgwqDCoEdpw6EgdHLhu4sgY+G7p2EgaMOgbSAqKlModCkqKiBsw6AgdOG7tyBs4buHIHPhu5FuZyBzw7N0IGPhu6dhIG3hu5l0IG5ow7NtIHbDoG8gdGjhu51pIMSRaeG7g20gKioodCkqKiBzbyB24bubaSB0aOG7nWkgxJFp4buDbSBi4bqvdCDEkeG6p3UgcXVhbiBzw6F0Lg0KDQrCoMKgwqBIw6BtIHNpbmggdOG7k24gY8OzIGPDoWMgdGh14buZYyB0w61uaCBzYXU6DQoNCi0gICBLaG/huqNuZyB4w6FjIMSR4buLbmggY+G7p2EgdGjhu51pIGdpYW4gbMOgICoq8J2RoSDiiIggWyAwICwg4oieICkqKiAuDQoNCi0gICAqKvCdkYYo8J2RoSkqKiBsdcO0biBnaeG6o20sIG5naMSpYSBsw6AgYPCdkYYo8J2RoTEp4oml8J2RhijwnZGhMilgIHbhu5tpICoq8J2RoTHiiaTwnZGhMioqDQoNCi0gICBU4bqhaSB0aOG7nWkgxJFp4buDbSDwnZGhPTAsIGDwnZGGKPCdkaE9MCk9MWAsIHThu6ljIGzDoCB4w6FjIHN14bqldCBz4buRbmcgc8OzdCBxdWEgdGjhu51pIMSRaeG7g20gMCBsw6AgMS4NCg0KwqDCoMKgKipDw7RuZyBj4bulIMaw4bubYyB0w61uaCBjaG8gaMOgbSBzaW5oIHThu5NuKioNCg0KLSAgICoqS2FwbGFuLS1NZWllcioqDQoNCsKgwqDCoEPDtG5nIHRo4bupYyDGsOG7m2MgbMaw4bujbmcgKkthcGxhbi0tTWVpZXIqICooS00pKiBj4bunYSBow6BtIHNpbmggdOG7k24g8J2RhvCdkL7wnZGAKPCdkaEpIMSRxrDhu6NjIHjDoWMgxJHhu4tuaCBi4bufaQ0KDQohW10oaGluaHRsLzMuMi4xLjcucG5nKQ0KDQrCoMKgwqDGr+G7m2MgbMaw4bujbmcgbsOgeSDEkcO6bmcgduG7m2kgbeG7jWkgKirwnZGhXD4wKiogdsOgIG7DsyBjaOG7iSBwaOG7pSB0aHXhu5ljIHbDoG8gaGFpIGJp4bq/biwgKirwnZGb8J2RlioqIHbDoCAqKvCdkZHwnZGWKiogbMOgOg0KDQotICAgYPCdkZvwnZGWYCA6IHPhu5EgcuG7p2kgcm8gdOG6oWkgdGjhu51pIMSRaeG7g20gKirwnZGh8J2RlioqLA0KDQotICAgYPCdkZHwnZGWYDogc+G7kSBz4buxIGtp4buHbiB04bqhaSB0aOG7nWkgxJFp4buDbSAqKvCdkaHwnZGWKioNCg0KwqDCoMKgKipIw6BtIG5ndXkgY8ahKioNCg0KwqDCoMKgSMOgbSBuZ3V5IGPGoSAoaGF6YXJkIGZ1bmN0aW9uKSBsw6AgbeG7mXQga2jDoWkgbmnhu4dtIHF1YW4gdHLhu41uZyB0cm9uZyBwaMOibiB0w61jaCBz4buRbmcgc8OzdCAoc3Vydml2YWwgYW5hbHlzaXMpLCDEkcaw4bujYyBz4butIGThu6VuZyDEkeG7gyBtw7QgdOG6oyB04buRYyDEkeG7mSB44bqjeSByYSBz4buxIGtp4buHbiB0cm9uZyBt4buZdCBuaMOzbSBkw6JuIHPhu5EgdGhlbyB0aOG7nWkgZ2lhbi4NCg0KwqDCoMKgQ8O0bmcgdGjhu6ljIGPhu6dhIGjDoG0gbmd1eSBjxqEgdGjGsOG7nW5nIMSRxrDhu6NjIGJp4buDdSBkaeG7hW4gZMaw4bubaSBk4bqhbmc6DQoNCmgodCkgPSBsaW0gzpR0IOKGkiAwIFtQKHQg4omkIFQgXDwgdCArIM6UdCBcfCBUIOKJpSB0KSAvIM6UdF0NCg0KwqDCoMKgVHJvbmcgxJHDszoNCg0KLSAgIHQgbMOgIHRo4budaSBnaWFuIHF1YW4gc8OhdCwgVCBsw6AgdGjhu51pIGdpYW4geOG6o3kgcmEgc+G7sSBraeG7h24sIM6UdCBsw6AgbeG7mXQga2hv4bqjbmcgdGjhu51pIGdpYW4gcuG6pXQgbmjhu48sIHRp4bq/biB04bubaSAwLg0KDQotICAgUCh0IOKJpCBUIFw8IHQgKyDOlHQgXHwgVCDiiaUgdCkgbMOgIHjDoWMgc3XhuqV0IHjhuqN5IHJhIHPhu7Ega2nhu4duIHRyb25nIGtob+G6o25nIHRo4budaSBnaWFuIHThu6sgdCDEkeG6v24gdCArIM6UdCwgYmnhur90IHLhurFuZyBz4buxIGtp4buHbiDEkcOjIGtow7RuZyB44bqjeSByYSB0csaw4bubYyB0aOG7nWkgxJFp4buDbSB0DQoNCsKgwqDCoEdpw6EgdHLhu4sgY+G7p2EgaMOgbSBoKHQpIGzDoCB04buRYyDEkeG7mSB44bqjeSByYSBz4buxIGtp4buHbiAoZXZlbnQgcmF0ZSkgdOG6oWkgdGjhu51pIMSRaeG7g20gdC4gVsOtIGThu6UsIG7hur91IGgoMTApID0gMC4wNSBuZ2jEqWEgbMOgIHThuqFpIHRo4budaSDEkWnhu4NtIDEwIMSRxqFuIHbhu4sgdGjhu51pIGdpYW4gc2F1IGtoaSBi4bqvdCDEkeG6p3UgcXVhbiBzw6F0LCB04buRYyDEkeG7mSB44bqjeSByYSBz4buxIGtp4buHbiBsw6AgMC4wNSBz4buxIGtp4buHbiB0csOqbiBt4buZdCDEkcahbiB24buLIHRo4budaSBnaWFuLg0KDQrCoMKgwqBDw7Mgbmhp4buBdSBwaMawxqFuZyBwaMOhcCDEkeG7gyDGsOG7m2MgdMOtbmggaMOgbSBuZ3V5IGPGoSwgbmjGsG5nIHBoxrDGoW5nIHBow6FwIHBo4buVIGJp4bq/biBuaOG6pXQgbMOgICoqbcO0IGjDrG5oIENveCoqICoqUHJvcG9ydGlvbmFsIEhhemFyZHMqKiAoKm3DtCBow6xuaCB04bu3IGzhu4cgbmd1eSBjxqEgxJHhu5NuZyBuaOG6pXQqKQ0KDQotICAgKipNw7QgaMOsbmggQ294IFByb3BvcnRpb25hbCBIYXphcmRzOioqDQoNCsKgwqDCoMSQw6J5IGzDoCBt4buZdCBwaMawxqFuZyBwaMOhcCDEkeG7gyAqdMOtbmggdG/DoW4gaMOgbSBuZ3V5IGPGoS4qICoqTcO0IGjDrG5oIENveCBQcm9wb3J0aW9uYWwgSGF6YXJkcyoqIMSRxrDhu6NjIHPhu60gZOG7pW5nIMSR4buDIMSRw6FuaCBnacOhIHTDoWMgxJHhu5luZyBj4bunYSBjw6FjIHnhur91IHThu5EgxJHhur9uIHjDoWMgc3XhuqV0IHPhu5FuZyBzw7N0IGPhu6dhIG3hu5l0IMSR4buRaSB0xrDhu6NuZyBob+G6t2MgbeG7mXQgbmjDs20gxJHhu5FpIHTGsOG7o25nLiDEkOG7gyAqdMOtbmggdG/DoW4gaMOgbSBuZ3V5IGPGoSBi4bqxbmcgbcO0IGjDrG5oIENveCBQcm9wb3J0aW9uYWwgSGF6YXJkcyosIHRyxrDhu5tjIHRpw6puIHRhIHBo4bqjaSB4w6FjIMSR4buLbmggY8OhYyB54bq/dSB04buRIOG6o25oIGjGsOG7n25nIMSR4bq/biB4w6FjIHN14bqldCBz4buRbmcgc8OzdCB2w6AgdGh1IHRo4bqtcCBjw6FjIGThu68gbGnhu4d1IGxpw6puIHF1YW4gxJHhur9uIGPDoWMgeeG6v3UgdOG7kSDEkcOzLiBTYXUgxJHDsywgdGEgc+G7rSBk4bulbmcgY8OhYyBwaMawxqFuZyBwaMOhcCDGsOG7m2MgdMOtbmggaOG7o3AgbMO9IMSR4buDIHTDrW5oIHRvw6FuIGPDoWMgdGhhbSBz4buRIGPhu6dhICoqbcO0IGjDrG5oKiogKipDb3ggUHJvcG9ydGlvbmFsIEhhemFyZHMqKi4NCg0KIyA0IFRI4buwQyBIw4BOSCBW4buaSSBQQUNLQUdFIFNVUlZJVkFMIC0gUEjDgk4gVMONQ0ggU+G7kE5HIFPDk1QNCg0KIyMgNC4xIEPDoGkgxJHhurd0IHbDoCBz4butIGThu6VuZyBwYWNrYWdlIHN1cnZpdmFsDQoNCsKgwqDCoMSQ4buDIHPhu60gZOG7pW5nIHBhY2thZ2UgYHN1cnZpdmFsYCB0csOqbiAqKlJTdHVkaW8qKiwgdGEgdGjhu7FjIGhp4buHbiBjw6FjIGLGsOG7m2Mgc2F1Og0KDQoqKkLGsOG7m2MgMSoqOiBDw6BpIMSR4bq3dCBwYWNrYWdlIGBzdXJ2aXZhbGANCg0KwqDCoMKgQuG6oW4gY8OzIHRo4buDIGPDoGkgxJHhurd0IHBhY2thZ2UgYHN1cnZpdmFsYCBi4bqxbmcgY8OhY2ggY2jhuqF5IGzhu4duaCBzYXUgdHJvbmcgUlN0dWRpbzoNCg0KYGBgICAgICAgICAgDQppbnN0YWxsLnBhY2thZ2VzKCJzdXJ2aXZhbCIpDQpgYGANCg0KwqDCoMKgTuG6v3UgcGFja2FnZSDEkcOjIMSRxrDhu6NjIGPDoGkgxJHhurd0IHRyxrDhu5tjIMSRw7MsIGLhuqFuIGPDsyB0aOG7gyBi4buPIHF1YSBixrDhu5tjIG7DoHkuDQoNCioqQsaw4bubYyAyKio6IFThuqNpIHBhY2thZ2UgYHN1cnZpdmFsYA0KDQrCoMKgwqBTYXUga2hpIGPDoGkgxJHhurd0LCBi4bqhbiBj4bqnbiBn4buNaSBwYWNrYWdlIGBzdXJ2aXZhbGAgYuG6sW5nIGzhu4duaCBzYXU6DQoNCmBgYHtyLCB3YXJuaW5nPUZBTFNFLCBlcnJvcj1GQUxTRSwgbWVzc2FnZT1GQUxTRX0NCiMgR+G7jWkgcGFja2FnZSBzdXJ2aXZhbCB04burIHRoxrAgdmnhu4duDQpsaWJyYXJ5KHN1cnZpdmFsKQ0KYGBgDQoNCioqQsaw4bubYyAzKio6IFPhu60gZOG7pW5nIGPDoWMgaMOgbSBj4bunYSBwYWNrYWdlIGBzdXJ2aXZhbGANCg0KwqDCoMKgU2F1IGtoaSDEkcOjIHThuqNpIHBhY2thZ2UgYHN1cnZpdmFsYCwgYuG6oW4gY8OzIHRo4buDIHPhu60gZOG7pW5nIGPDoWMgaMOgbSBj4bunYSBwYWNrYWdlIG7DoHkgxJHhu4MgcGjDom4gdMOtY2ggZOG7ryBsaeG7h3UgdGjhu51pIGdpYW4gxJHhur9uIHPhu7Ega2nhu4duLiBDw6FjIGjDoG0gbsOgeSBiYW8gZ+G7k206DQoNCi0gICBgc3VydmZpdCgpYDogVMOtbmggdG/DoW4gY8OhYyDGsOG7m2MgbMaw4bujbmcgc+G7kW5nIHPDs3QgYuG6sW5nICoqcGjGsMahbmcgcGjDoXAgS2FwbGFuLU1laWVyKiogaG/hurdjICoqcGjGsMahbmcgcGjDoXAgTmVsc29uLUFhbGVuKiouDQoNCi0gICBgY294cGgoKWA6IFBow6JuIHTDrWNoICoqbcO0IGjDrG5oIGjhu5NpIHF1eSBDb3gqKiDEkeG7gyB0w6xtIGPDoWMgeeG6v3UgdOG7kSDhuqNuaCBoxrDhu59uZyDEkeG6v24gdGjhu51pIGdpYW4gxJHhur9uIHPhu7Ega2nhu4duLg0KDQotICAgYHN1cnZyZWcoKWA6IFBow6JuIHTDrWNoICoqbcO0IGjDrG5oIGjhu5NpIHF1eSBDb3gqKiDEkeG7gyB0w6xtIGPDoWMgeeG6v3UgdOG7kSDhuqNuaCBoxrDhu59uZyDEkeG6v24gdGhhbmcgxJFvIHRo4budaSBnaWFuIMSR4bq/biBz4buxIGtp4buHbiBraMO0bmcgcGjhuqNpIGzDoCBk4bqhbmcgc+G7kSBuZ3V5w6puICh2w60gZOG7pTogdGjhu51pIGdpYW4gc+G7kW5nIHPDs3QgxJHGsOG7o2MgxJFvIGLhurFuZyBnaeG7nSwgbmfDoHksIHRow6FuZywuLi4pLg0KDQotICAgYGNveC56cGgoKWA6IEtp4buDbSDEkeG7i25oIGdp4bqjIHRodXnhur90IHbhu4Egc+G7sSDEkeG7k25nIG5o4bqldCBj4bunYSBjw6FjICoqaOG7hyBz4buRIGjhu5NpIHF1eSBDb3gqKiB0aGVvIHRo4budaSBnaWFuLg0KDQojIyA0LjIgRGF0YXNldCBsdW5nIC0gZOG7ryBsaeG7h3UgduG7gSB1bmcgdGjGsCBwaOG7lWkNCg0KwqDCoMKgVHJvbmcgc3Xhu5F0IHBo4bqnbiBuw6B5LCBjaMO6bmcgdMO0aSBz4bq9IHPhu60gZOG7pW5nIGRhdGFzZXQgKipsdW5nKiogdOG7qyBwYWNrYWdlIGBzdXJ2aXZhbGAgbMOgbSBk4buvIGxp4buHdSBwaMOibiB0w61jaC4NCg0KwqDCoMKgRGF0YXNldCAqKmx1bmcqKiBsw6AgbeG7mXQgdHJvbmcgbmjhu69uZyB04bqtcCBk4buvIGxp4buHdSB0acOqdSBiaeG7g3UgY+G7p2EgcGFja2FnZSBgc3Vydml2YWxgIMSRxrDhu6NjIHPhu60gZOG7pW5nIHRyb25nIG5oaeG7gXUgdsOtIGThu6UgdsOgIGjGsOG7m25nIGThuqtuIHbhu4EgcGjDom4gdMOtY2ggZOG7ryBsaeG7h3UuIERhdGFzZXQgbsOgeSDEkcaw4bujYyB04bqhbyByYSB04burICpuZ2hpw6puIGPhu6l1IGzDom0gc8OgbmcgduG7gSB1bmcgdGjGsCBwaOG7lWkqIHbDoCBiYW8gZ+G7k20gdGjDtG5nIHRpbiB24buBICoqMjI4IGLhu4duaCBuaMOibiB1bmcgdGjGsCBwaOG7lWkqKiB24bubaSBjw6FjIGJp4bq/biBuaMawIHR14buVaSwgZ2nhu5tpIHTDrW5oLCBt4bupYyDEkeG7mSBzdXkgZ2nhuqNtIGNo4bupYyBuxINuZyBwaOG7lWksLi4uDQoNCsKgwqDCoERhdGFzZXQgKipsdW5nKiogxJHGsOG7o2Mgc+G7rSBk4bulbmcgxJHhu4MgbWluaCBo4buNYSBjaG8gbmhp4buBdSBraMOtYSBj4bqhbmgga2jDoWMgbmhhdSBj4bunYSBwaMOibiB0w61jaCBk4buvIGxp4buHdSwgYmFvIGfhu5NtIG3DtCBow6xuaCAqaOG7k2kgcXV5IHR1eeG6v24gdMOtbmgsIG3DtCBow6xuaCBo4buTaSBxdXkgbG9naXN0aWMsIHBow6JuIHTDrWNoIHBow6JuIG5ow7NtKiB2w6AgxJHhurdjIGJp4buHdCBsw6AgKioqcGjDom4gdMOtY2ggc+G7kW5nIHPDs3QqKi4qDQoNCsKgwqDCoMSQ4buDIHRydXkgY+G6rXAgZGF0YXNldCBsdW5nIHThu6sgcGFja2FnZSBgc3Vydml2YWxgIHRyb25nIFIsIHRhIHPhu60gZOG7pW5nIGzhu4duaCBzYXU6DQoNCmBgYHtyfQ0KIyBH4buNaSBkYXRhc2V0IHbhu4EgZOG7ryBsaeG7h3UgYuG7h25oIG5ow6JuIGPhu6dhIGPDoWNoIGLhu4duaCB1bmcgdGjGsCAtPiBjaOG7jW4gZGF0YXNldCBsdW5nDQpkYXRhKGNhbmNlcikNCmBgYA0KDQrCoMKgwqBE4buvIGxp4buHdSB1bmcgdGjGsCBwaOG7lWkgLSAqKmx1bmcqKiBjw7MgY+G6pXUgdHLDumMgbmjGsCBzYXU6DQoNCmBgYHtyfQ0KIyBIaeG7g24gdGjhu4sgY8OhYyB0aMOgbmggcGjhuqduIGPhu6dhIGThu68gbGnhu4d1DQpzdHIobHVuZykNCmBgYA0KDQrCoMKgwqBNw7QgdOG6oyBjw6FjIGJp4bq/biBj4bunYSBk4buvIGxp4buHdSB1bmcgdGjGsCBwaOG7lWkgLSAqKmx1bmcqKg0KDQoxLiAgKippbnN0Kio6ICpNw6Mgc+G7kSogY+G7p2EgYuG7h25oIG5ow6JuLg0KDQoyLiAgKip0aW1lKio6IFRo4budaSBnaWFuICpz4buRbmcgc8OzdCogaG/hurdjIHRo4budaSBnaWFuICp0aGVvIGTDtWkqICgqbmfDoHkqKS4NCg0KMy4gICoqc3RhdHVzKio6IFTDrG5oIHRy4bqhbmcgc+G7kW5nIHNhdSB0aOG7nWkgZ2lhbiB0aGVvIGTDtWkgKCoxID0gU+G7kW5nIHPDs3QsIDIgPSBRdWEgxJHhu51pKikuDQoNCjQuICAqKmFnZSoqOiBUdeG7lWkgY+G7p2EgYuG7h25oIG5ow6JuLg0KDQo1LiAgKipzZXgqKjogR2nhu5tpIHTDrW5oIGPhu6dhIGLhu4duaCBuaMOibiAoKjEgPSBOYW0sIDIgPSBO4buvKikuDQoNCjYuICAqKnBoLmVjb2cqKjogTeG7qWMgxJHhu5kgKnN1eSBnaeG6o20gcGjhu5VpKiBj4bunYSBi4buHbmggbmjDom4gKCowID0gVOG7kXQsIDEgPSBUw6BuIHBo4bq/IG5o4bq5LCAyID0gVMOgbiBwaOG6vyB0cnVuZyBiw6xuaCwgMyA9IFTDoG4gcGjhur8gbuG6t25nKikuDQoNCjcuICAqKnBoLmthcm5vKio6ICrEkGnhu4NtIEthcm5vZnNreSogY+G7p2EgYuG7h25oIG5ow6JuLCDEkW8gbMaw4budbmcgc+G7qWMga2jhu49lIHThu5VuZyB0aOG7gyAoKjEwMCDEkWnhu4NtIGzDoCBz4bupYyBraOG7j2UgdOG7kXQgbmjhuqV0LCAwIMSRaeG7g20gbMOgIGLhu4duaCBuaMOibiDEkcOjIHF1YSDEkeG7nWkqKQ0KDQo4LiAgKipwYXQua2Fybm8qKjogxJBp4buDbSAqS2Fybm9mc2t5KiBj4bunYSBi4buHbmggbmjDom4gZOG7sWEgdHLDqm4gbmfGsOG7nWkgY2jEg20gc8OzYyAobuG6v3UgY8OzKS4NCg0KOS4gICoqbWVhbC5jYWwqKjogKkzGsOG7o25nIGNhbG8gdGnDqnUgdGjhu6UqIGjDoG5nIG5nw6B5IGPhu6dhIGLhu4duaCBuaMOibi4NCg0KMTAuICoqd3QubG9zcyoqOiAqTeG7qWMgxJHhu5kgZ2nhuqNtIGPDom4qIGPhu6dhIGLhu4duaCBuaMOibiAqdHJvbmcgNiB0aMOhbmcgdHLGsOG7m2MqIMSRw7MuDQoNCsKgwqDCoEPDoWMgYmnhur9uICoqdGltZSoqIHbDoCAqKnN0YXR1cyoqIMSRxrDhu6NjIHPhu60gZOG7pW5nIHRyb25nIHBow6JuIHTDrWNoIHPhu5FuZyBzw7N0LCB0cm9uZyBraGkgY8OhYyBiaeG6v24gY8OybiBs4bqhaSDEkcaw4bujYyBz4butIGThu6VuZyDEkeG7gyDEkcOhbmggZ2nDoSBjw6FjIHnhur91IHThu5Eg4bqjbmggaMaw4bufbmcgxJHhur9uIHPhu5FuZyBzw7N0IGPhu6dhIGLhu4duaCBuaMOibi4gQ8OhYyBiaeG6v24gKipwaC5lY29nKiogdsOgICoqcGgua2Fybm8qKiBjdW5nIGPhuqVwIHRow7RuZyB0aW4gduG7gSBz4bupYyBraOG7j2UgdOG7lW5nIHRo4buDIGPhu6dhIGLhu4duaCBuaMOibiwgdHJvbmcga2hpIGPDoWMgYmnhur9uICoqbWVhbC5jYWwqKiB2w6AgKip3dC5sb3NzKiogY3VuZyBj4bqlcCB0aMO0bmcgdGluIHbhu4EgY2jhur8gxJHhu5kgxINuIHXhu5FuZyB2w6AgbeG7qWMgxJHhu5kgZ2nhuqNtIGPDom4gY+G7p2EgYuG7h25oIG5ow6JuLg0KDQojIyA0LjMgWOG7rSBsw70gZOG7ryBsaeG7h3UgdW5nIHRoxrAgcGjhu5VpIC0gbHVuZw0KDQrCoMKgwqBMxrB1IMO9IHLhurFuZyB0cuG6oW5nIHRow6FpICgqKnN0YXR1cyoqKSDEkcaw4bujYyBtw6MgaMOzYSB0aGVvIGPDoWNoIGtow7RuZyBjaHXhuqluIHRyb25nIGLhu5kgZOG7ryBsaeG7h3UgbsOgeS4gVGjDtG5nIHRoxrDhu51uZywgZOG7ryBsaeG7h3UgY+G7p2EgYmnhur9uIHN0YXR1cyBn4buTbSAyIGdpw6EgdHLhu4s6ICoqMD0gY8OybiBz4buRbmcsIDE9IMSRw6MgY2jhur90KiouDQoNCsKgwqDCoMSQ4buDIHRoYXkgxJHhu5VpIGdpw6EgdHLhu4sgZOG7ryBsaeG7h3UgY+G7p2EgYmnhur9uIHbhu4EgZ2nDoSB0cuG7iyAqKjAqKiB2w6AgKioxKiosIGNow7puZyB0YSBz4bq9IGTDuW5nIGjDoG0gYG11dGF0ZSgpYCB0cm9uZyBwYWNrYWdlIGBkcGx5cmAuIEjDoG0gYG11dGF0ZSgpYCB0cm9uZyBwYWNrYWdlIGBkcGx5cmAgxJHGsOG7o2Mgc+G7rSBk4bulbmcgxJHhu4MgdGhheSDEkeG7lWkgZ2nDoSB0cuG7iyBj4bunYSBjw6FjIGJp4bq/biB0cm9uZyBt4buZdCB04bqtcCBk4buvIGxp4buHdS4gxJDhu4MgdGhheSDEkeG7lWkgZ2nDoSB0cuG7iyBj4bunYSBt4buZdCBiaeG6v24gYuG6sW5nIGBtdXRhdGUoKWAsIGLhuqFuIGPhuqduIHjDoWMgxJHhu4tuaCB0w6puIGJp4bq/biB2w6AgY3VuZyBj4bqlcCBjaG8gbsOzIG3hu5l0IGJp4buDdSB0aOG7qWMgaG/hurdjIGjDoG0gxJHhu4MgdMOtbmggdG/DoW4gZ2nDoSB0cuG7iyBt4bubaS4gUXXDoSB0csOsbmggdGhheSDEkeG7lWkgZ2nDoSB0cuG7iyBk4buvIGxp4buHdSBj4bunYSBiaeG6v24gxJHGsOG7o2MgdGjhu7FjIGhp4buHbiBuaMawIHNhdToNCg0KYGBge3IsIHdhcm5pbmc9RkFMU0UsIGVycm9yPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQ0KIyBH4buNaSBwYWNrYWdlIGRwbHlyIHThu6sgdGjGsCB2aeG7h24NCmxpYnJhcnkoZHBseXIpDQojIENodXnhu4NuIMSR4buVaSBnacOhIHRy4buLIGPhu6dhIGJp4bq/biBzdGF0dXMgMSA9PiAwIHbDoCAyID0+IDEgDQpsdW5nIDwtIGx1bmcgJT4lIG11dGF0ZShzdGF0dXMgPSByZWNvZGUoc3RhdHVzLCAnMScgPSAwLCAnMicgPSAxKSkNCiMgSGnhu4NuIHRo4buLIDYgcXVhbiBzw6F0IMSR4bqndSB0acOqbiBj4bunYSAzIGJp4bq/biBxdWFuIHTDom0NCmhlYWQobHVuZ1tjKCJ0aW1lIiwic3RhdHVzIiwic2V4IildKQ0KYGBgDQoNCsKgwqDCoE5nb8OgaSByYSwgY2jDum5nIHRhIHPhur0gY2hpYSB0deG7lWkgY+G7p2EgYuG7h25oIG5ow6JuIHRow6BuaCAzIG5ow7NtIGNobyB0aeG7h24gcXXDoSB0csOsbmggcGjDom4gdMOtY2g6DQoNCmBgYHtyfQ0KIyBDaGlhIHR14buVaSB0aMOgbmggMyBuaMOzbSB0deG7lWkgDQpsdW5nIDwtIGx1bmcgJT4lbXV0YXRlKGFnZV9ncm91cCA9IGNhc2Vfd2hlbigNCiAgICBhZ2UgPCA1MCB+ICJkxrDhu5tpIDUwIHR14buVaSIsDQogICAgYWdlID49IDUwICYgYWdlIDw9IDY1IH4gIjUwIMSR4bq/biA2NSB0deG7lWkiLA0KICAgIGFnZSA+IDY1IH4gInRyw6puIDY1IHR14buVaSIsDQogICAgVFJVRSB+ICJraMO0bmcgcsO1IikpDQojIEhp4buDbiB0aOG7iyA2IHF1YW4gc8OhdCDEkeG6p3UgdGnDqm4gY+G7p2EgNCBiaeG6v24gcXVhbiB0w6JtDQpoZWFkKGx1bmdbYygidGltZSIsInN0YXR1cyIsInNleCIsICJhZ2VfZ3JvdXAiKV0pDQpgYGANCg0KwqDCoMKgQsOieSBnaeG7nSBjaMO6bmcgdGEgbeG7mXQgYuG7mSBk4buvIGxp4buHdSBt4bubaSB24bubaToNCg0KLSAgICoqdGltZSoqOiBUaOG7nWkgZ2lhbiBz4buRbmcgc8OzdCBob+G6t2MgdGjhu51pIGdpYW4gdGhlbyBkw7VpICgqKm5nw6B5KiopDQoNCi0gICAqKnN0YXR1cyoqOiBUw6xuaCB0cuG6oW5nIHPhu5FuZyBzYXUgdGjhu51pIGdpYW4gdGhlbyBkw7VpICgqKjAgPSBT4buRbmcgc8OzdCwgMSA9IMSQw6MgY2jhur90KiopDQoNCi0gICAqKmFnZV9ncm91cCoqOiBUdeG7lWkgY+G7p2EgYuG7h25oIG5ow6JuIHRoZW8gbmjDs20gdHXhu5VpICgqZMaw4bubaSA1MCB0deG7lWksIDUwIMSR4bq/biA2NSB0deG7lWksIHRyw6puIDY1IHR14buVaSopDQoNCsKgwqDCoCoqKkzGsHUgw70qKio6IGjDoG0gYFN1cnYoKWAgdHJvbmcgcGFja2FnZSBgc3Vydml2YWxgIG3hurdjIMSR4buLbmggY2jhuqVwIG5o4bqtbiBUUlVFL0ZBTFNFLCB0cm9uZyDEkcOzIFRSVUUgbMOgIHPhu7Ega2nhu4duIHbDoCBGQUxTRSBsw6Aga2nhu4NtIGR1eeG7h3Q7ICoxLzAgdHJvbmcgxJHDsyAxIGzDoCBz4buxIGtp4buHbiB2w6AgMCBsw6Aga2nhu4NtIGR1eeG7h3QqOyBob+G6t2MgMi8xIHRyb25nIMSRw7MgMiBsw6Agc+G7sSBraeG7h24gdsOgIDEgbMOgIGtp4buDbSBkdXnhu4d0LiBIw6N5IGPhuqluIHRo4bqtbiDEkeG7gyDEkeG6o20gYuG6o28gZOG7ryBsaeG7h3UgxJHGsOG7o2MgxJHhu4tuaCBk4bqhbmcgxJHDum5nLg0KDQojIyA0LjQgVOG6oW8gxJHhu5FpIHTGsOG7o25nIHNpbmggdOG7k24NCg0KwqDCoMKgVHJvbmcgcGjDom4gdMOtY2ggc+G7kW5nIHPDs3QsIMSR4buDIHRo4buxYyBoaeG7h24gY8OhYyBwaMawxqFuZyBwaMOhcCBwaMOibiB0w61jaCBk4buvIGxp4buHdSBz4buRbmcgc8OzdCwgdGEgY+G6p24gKnThuqFvIMSR4buRaSB0xrDhu6NuZyBz4buRbmcgc8OzdCogKCoqc3Vydml2YWwgb2JqZWN0KiopIGThu7FhIHRyw6puIGPDoWMgdGjDtG5nIHRpbiB24buBICp0aOG7nWkgZ2lhbiBz4buRbmcgc8OzdCogdsOgICp0cuG6oW5nIHRow6FpIHPhu7Ega2nhu4duKiBj4bunYSBjw6FjIMSR4buRaSB0xrDhu6NuZyB0cm9uZyBt4buZdCBuZ2hpw6puIGPhu6l1LiBTYXUgxJHDsywgdGEgY8OzIHRo4buDIHPhu60gZOG7pW5nIGPDoWMgaMOgbSDEkeG7gyB24bq9IMSRxrDhu51uZyBz4buRbmcgc8OzdCB2w6AgxrDhu5tjIGzGsOG7o25nIGPDoWMgbcO0IGjDrG5oIHPhu5FuZyBzw7N0Lg0KDQrCoMKgwqBUcm9uZyBSLCB0YSBjw7MgdGjhu4MgdOG6oW8gxJHhu5FpIHTGsOG7o25nIHPhu5FuZyBzw7N0IGLhurFuZyBow6BtIGBTdXJ2KClgLiBDw7ogcGjDoXAgY+G7p2EgaMOgbSBuw6B5IG5oxrAgc2F1Og0KDQpgYGAgICAgICAgICANClN1cnYodGltZSwgZXZlbnQsIHR5cGUgPSAicmlnaHQiKQ0KYGBgDQoNCsKgwqDCoFRyb25nIMSRw7M6DQoNCi0gICAqKnRpbWUqKjogTMOgIHZlY3RvciBjaOG7qWEgdGjDtG5nIHRpbiB24buBIHQqaOG7nWkgZ2lhbiBz4buRbmcgc8OzdCBob+G6t2MgdGjhu51pIGdpYW4gdGhlbyBkw7VpIGPhu6dhIGPDoWMgxJHhu5FpIHTGsOG7o25nKi4gxJDDonkgY8OzIHRo4buDIGzDoCB0aOG7nWkgZ2lhbiB04burIGzhuqduIGtow6FtIMSR4bqndSB0acOqbiDEkeG6v24gbOG6p24ga2jDoW0gY3Xhu5FpIGPDuW5nLCB0aOG7nWkgZ2lhbiB04burIMSRaeG7gXUgdHLhu4sgxJHhur9uIHPhu7Ega2nhu4duIHjhuqN5IHJhLCBob+G6t2MgdGjhu51pIGdpYW4gdOG7qyBs4bqnbiBwaMOhdCBoaeG7h24gY8SDbiBi4buHbmggxJHhur9uIHPhu7Ega2nhu4duIHjhuqN5IHJhLg0KDQotICAgKipldmVudCoqOiBMw6AgdmVjdG9yIGNo4bupYSB0aMO0bmcgdGluIHbhu4EgKnRy4bqhbmcgdGjDoWkgc+G7sSBraeG7h24qIGPhu6dhIGPDoWMgxJHhu5FpIHTGsOG7o25nLiBHacOhIHRy4buLIGPhu6dhIGV2ZW50IGPDsyB0aOG7gyBsw6AgKiowIChjw7JuIHPhu5FuZykqKiBob+G6t2MgKioxIChjaOG6v3QgaG/hurdjIHjhuqN5IHJhIHPhu7Ega2nhu4duIHF1YW4gdMOibSkqKi4NCg0KLSAgICoqdHlwZSoqOiBMw6AgKnRoYW0gc+G7kSB4w6FjIMSR4buLbmggY8OhY2ggdMOtbmggdG/DoW4gdGjhu51pIGdpYW4gc+G7kW5nIHPDs3QqLiBHacOhIHRy4buLIG3hurdjIMSR4buLbmggY+G7p2EgdHlwZSBsw6AgInJpZ2h0IiwgY8OzIG5naMSpYSBsw6AgdGjhu51pIGdpYW4gc+G7kW5nIHPDs3QgxJHGsOG7o2MgdMOtbmggdOG7qyB0aOG7nWkgxJFp4buDbSBraMOhbSBjdeG7kWkgY8O5bmcgdHLhu6sgxJFpIHRo4budaSDEkWnhu4NtIHjhuqN5IHJhIHPhu7Ega2nhu4duLiBO4bq/dSBnacOhIHRy4buLIGPhu6dhIHR5cGUgbMOgICJsZWZ0IiwgdGjhu51pIGdpYW4gc+G7kW5nIHPDs3Qgc+G6vSDEkcaw4bujYyB0w61uaCB04burIHRo4budaSDEkWnhu4NtIGtow6FtIMSR4bqndSB0acOqbiB0cuG7qyDEkWkgdGjhu51pIMSRaeG7g20geOG6o3kgcmEgc+G7sSBraeG7h24uDQoNCsKgwqDCoFbDrSBk4bulLCB0YSBjw7MgZCrhu68gbGnhu4d1IHbhu4EgdGjhu51pIGdpYW4gc+G7kW5nIHPDs3QgdsOgIHRy4bqhbmcgdGjDoWkgc+G7sSBraeG7h24qIGPhu6dhICoxMCBi4buHbmggbmjDom4gxJHhuqd1IHRpw6puKiBuaMawIHNhdToNCg0KYGBge3J9DQojIEzhuqV5IGJp4bq/biB0aW1lIHbDoCBzdGF0dXMgdOG7qyBkYXRhc2V0IGx1bmcgdsOgIHThuqFvIMSR4buRaSB0xrDhu6NuZyBzaW5oIHThu5NuIG3hu5tpDQpTdXJ2KGx1bmckdGltZSwgbHVuZyRzdGF0dXMpWzE6MTBdDQpgYGANCg0KwqDCoMKgVGEgdGjhuqV5IMSR4buRaSB0xrDhu6NuZyAqKjEqKiBjw7Mgc+G7sSBraeG7h24gdOG6oWkgdGjhu51pIMSRaeG7g20gKiozMDYgbmfDoHkqKiwgxJHhu5FpIHTGsOG7o25nICoqMioqIGPDsyBz4buxIGtp4buHbiB04bqhaSB0aOG7nWkgxJFp4buDbSAqKjQ1NSBuZ8OgeSoqLCDEkeG7kWkgdMaw4bujbmcgKiozKiogYuG7iyBraeG7g20gZHV54buHdCB04bqhaSB0aOG7nWkgxJFp4buDbSAqKjEwMTAgbmfDoHkqKiwgLi4uDQoNCiMjIDQuNSBUw61uaCB0b8OhbiDEkcaw4budbmcgY29uZyBz4buRbmcgc8OzdA0KDQrCoMKgwqBIw6BtIGBzdXJ2Zml0KClgIGzDoCBt4buZdCBow6BtIGTDuW5nIMSR4buDIHTDrW5oIHRvw6FuIHbDoCB24bq9IMSRxrDhu51uZyBz4buRbmcgc8OzdCDGsOG7m2MgdMOtbmggKCoqc3Vydml2YWwgY3VydmVzKiopIGThu7FhIHRyw6puIGThu68gbGnhu4d1IHbhu4EgdGjhu51pIGdpYW4gc+G7kW5nIHPDs3QgdsOgIHRy4bqhbmcgdGjDoWkgc+G7sSBraeG7h24gY+G7p2EgY8OhYyDEkeG7kWkgdMaw4bujbmcgdHJvbmcgbeG7mXQgbmdoacOqbiBj4bupdS4gSMOgbSBgc3VydmZpdCgpYCBsw6AgbeG7mXQgdHJvbmcgbmjhu69uZyBow6BtIGPGoSBi4bqjbiBj4bunYSBwYWNrYWdlIGBzdXJ2aXZhbGAgxJHGsOG7o2MgZMO5bmcgxJHhu4MgcGjDom4gdMOtY2ggc+G7kW5nIHPDs3QgdHLDqm4gUi4NCg0KwqDCoMKgQ8O6IHBow6FwIGPhu6dhIGjDoG0gYHN1cnZmaXQoKWAgbmjGsCBzYXU6DQoNCmBgYCAgICAgICAgIA0Kc3VydmZpdChmb3JtdWxhLCBkYXRhLCB3ZWlnaHRzLCAuLi4pDQpgYGANCg0KwqDCoMKgVHJvbmcgxJHDszoNCg0KLSAgICoqZm9ybXVsYSoqOiBsw6AgY8O0bmcgdGjhu6ljIG3DtCB04bqjIG3hu5FpIHF1YW4gaOG7hyBnaeG7r2EgxJHhu5FpIHTGsOG7o25nIHPhu5FuZyBzw7N0IHbDoCBjw6FjIGJp4bq/biBnaeG6o2kgdGjDrWNoLiBDw7RuZyB0aOG7qWMgbsOgeSBjw7MgZOG6oW5nIGBTdXJ2KHRpbWUsIGV2ZW50KSB+IHgxICsgeDIgKyDigKZgDQoNCi0gICAqKmRhdGEqKjogbMOgIGRhdGEgZnJhbWUgY2jhu6lhIGPDoWMgYmnhur9uIHRyb25nIGPDtG5nIHRo4bupYy4NCg0KLSAgICoqd2VpZ2h0cyoqOiBsw6AgdmVjdG9yIGNo4bupYSBjw6FjIHRy4buNbmcgc+G7kSBjaG8gbeG7l2kgcXVhbiBzw6F0IHRyb25nIG3DtCBow6xuaC4NCg0KwqDCoMKgVMO0aSBz4bq9IGTDuW5nIGzhuqFpIMSR4buRaSB0xrDhu6NuZyBz4buRbmcgc8OzdCBgU3VydihsdW5nJHRpbWUsIGx1bmckc3RhdHVzKWAgxJHhu4MgdOG6oW8gY8OhYyDEkcaw4budbmcgY29uZyBz4buRbmcgc8OzdCBi4bqxbmcgcGjGsMahbmcgcGjDoXAgKipLYXBsYW4tTWVpZXIqKi4gVMO0aSB04bqhbyDEkcaw4budbmcgY29uZyBzaW5oIHThu5NuIHThu5VuZyB0aOG7gyB24bubaSB0aGFtIHPhu5EgKioiXH4xIioqIGNo4buJIMSR4buLbmggcuG6sW5nIGtow7RuZyBjw7MgYmnhur9uIMSR4buZYyBs4bqtcCBuw6BvIMSRxrDhu6NjIHPhu60gZOG7pW5nIMSR4buDIHBow6JuIG5ow7NtLCBnw6FuIG7DsyBjaG8gxJHhu5FpIHTGsOG7o25nICoqc3VydmZpdF9sdW5nKiogdsOgIHhlbSB4w6l0IGPhuqV1IHRyw7pjIGLhurFuZyBow6BtIGBzdHIoKWA6DQoNCmBgYHtyfQ0KIyBUw61uaCB0b8OhbiDEkcaw4budbmcgY29uZyBz4buRbmcgc8OzdCBj4bunYSB04bqldCBj4bqjIGLhu4duaCBuaMOibg0Kc3VydmZpdF9sdW5nIDwtIHN1cnZmaXQoU3Vydih0aW1lLCBzdGF0dXMpIH4gMSwgZGF0YSA9IGx1bmcpDQojIEhp4buDbiB0aOG7iyBjw6FjIHRow6BuaCBwaOG6p24gY+G7p2EgZOG7ryBsaeG7h3UgbHVuZw0Kc3RyKHN1cnZmaXRfbHVuZykNCmBgYA0KDQrCoMKgwqBN4buZdCBz4buRIHRow6BuaCBwaOG6p24gY2jDrW5oIGPhu6dhIMSR4buRaSB0xrDhu6NuZyAqKnN1cnZmaXQqKiBuw6B5IHPhur0gxJHGsOG7o2Mgc+G7rSBk4bulbmcgxJHhu4MgdOG6oW8gY8OhYyDEkcaw4budbmcgY29uZyBz4buRbmcgc8OzdCBiYW8gZ+G7k206DQoNCi0gICAqKnRpbWUqKjogKkPDoWMgbeG7kWMgdGjhu51pIGdpYW4qIG3DoCB04bqhaSDEkcOzIMSRxrDhu51uZyBjb25nIGPDsyBt4buZdCBixrDhu5tjLCB04bupYyBsw6Agw610IG5o4bqldCBt4buZdCBz4buxIGtp4buHbiDEkcOjIHjhuqN5IHJhLg0KDQotICAgKipzdXJ2Kio6ICpV4bubYyB0w61uaCB04bu3IGzhu4cgc+G7kW5nIHPDs3QqIHThuqFpIHRo4budaSDEkWnhu4NtIHTGsMahbmcg4bupbmcuDQoNCsKgwqDCoFR1eSBuaGnDqm4sIMSR4buDICpzbyBzw6FuaCB04buJIGzhu4cgc+G7kW5nIHPDs3QgZ2nhu69hIGhhaSBnaeG7m2kgdMOtbmggbmFtIHbDoCBu4buvKiwgdMO0aSBz4bq9IHRow6ptIHnhur91IHThu5EgZ2nhu5tpIHTDrW5oICoqIlx+c2V4IioqIHbDoG8gaMOgbSBgc3VydmZpdCgpYCAqcGjDom4gbmjDs20gdGjDoG5oIGPDoWMgxJHGsOG7nW5nIGNvbmcgc+G7kW5nIHPDs3QgdGhlbyBnaeG7m2kgdMOtbmgqLCBnw6FuIG7DsyBjaG8gxJHhu5FpIHTGsOG7o25nICoqc3VydmZpdF9sdW5nX2J5c2V4KiogdsOgIHhlbSBj4bqldSB0csO6YyBi4bqxbmcgaMOgbSBgc3RyKClgOg0KDQpgYGB7cn0NCiMgVMOtbmggdG/DoW4gxJHGsOG7nW5nIGNvbmcgc+G7kW5nIHPDs3QgdGhlbyBnaeG7m2kgdMOtbmgNCnN1cnZmaXRfbHVuZ19ieXNleCA8LSBzdXJ2Zml0KFN1cnYodGltZSwgc3RhdHVzKSB+IHNleCwgZGF0YSA9IGx1bmcpDQojIEhp4buDbiB0aOG7iyBjw6FjIHRow6BuaCBwaOG6p24gY+G7p2EgZOG7ryBsaeG7h3UgbHVuZw0Kc3RyKHN1cnZmaXRfbHVuZ19ieXNleCkNCmBgYA0KDQrCoMKgwqBOZ2/DoGkgcmEsIHTDtGkgc+G6vSDEkcawYSB2w6BvIDIgeeG6v3UgdOG7kSBraMOhYyB2w6BvIGjDoG0gYHN1cnZmaXQoKWAgxJHhu4MgcGjDom4gbmjDs20gdGjDoG5oIGPDoWMgxJHGsOG7nW5nIGNvbmcgc+G7kW5nIHPDs3QgdGhlbyAqKnN1eSBnaeG6o20gY2jhu6ljIG7Eg25nIHBo4buVaSoqICoqKHBoLmVjb2cpKiogdsOgICoqbmjDs20gdHXhu5VpKiogKiooYWdlX2dyb3VwKSoqOg0KDQpgYGB7cn0NCnN1cnZmaXRfbHVuZ19ieXBoIDwtIHN1cnZmaXQoU3Vydih0aW1lLCBzdGF0dXMpIH4gcGguZWNvZywgZGF0YSA9IGx1bmcpDQpzdXJ2Zml0X2x1bmdfYnlhZ2UgPC0gc3VydmZpdChTdXJ2KHRpbWUsIHN0YXR1cykgfiBhZ2VfZ3JvdXAsIGRhdGEgPSBsdW5nKQ0KYGBgDQoNCiMjIDQuNiDEkMaw4budbmcgY29uZyBz4buRbmcgc8OzdCBLYXBsYW4tTWVpZXINCg0KwqDCoMKgxJDhu4MgKnbhur0gxJHGsOG7nW5nIGNvbmcgc+G7kW5nIHPDs3QgS2FwbGFuLU1laWVyIMSRxqFuIGdp4bqjbiB0csOqbiBSKiwgdMO0aSBkw7luZyBow6BtIGPGoSBi4bqjbiBsw6AgaMOgbSBgcGxvdCgpYCDEkeG7gyB24bq9IMSR4buTIHRo4buLIG5oxrAgc2F1Og0KDQpgYGAgICAgICAgICANCnBsb3Qoc3Vydl9maXQsIG1haW4gPSAixJDGsOG7nW5nIGNvbmcgc2luaCB04buTbiBLYXBsYW4gTWVpZXIiLCB4bGFiID0gIlRo4budaSBnaWFuIiwgeWxhYiA9ICJYw6FjIHN14bqldCBz4buRbmcgc8OzdCIpDQpgYGANCg0KVHJvbmcgxJHDszoNCg0KLSAgIGBzdXJ2X2ZpdGA6IGzDoCBiaeG6v24gxJHGsOG7o2MgZ8OhbiBi4bufaSBow6BtIGBzdXJ2Zml0KClgIGTDuW5nIMSR4buDIHTDrW5oIHRvw6FuIMSRxrDhu51uZyBjb25nIHNpbmggdOG7k24gKHhlbSBwaOG6p24gNC40KQ0KDQrCoMKgwqAqKsSQxrDhu51uZyBjb25nIHPhu5FuZyBzw7N0IEthcGxhbiBNZWllciDEkcahbiBnaeG6o24qKg0KDQrCoMKgwqBUaeG6v3AgdOG7pWMgYuG7mSBk4buvIGxp4buHdSAqdW5nIHRoxrAgcGjhu5VpKiAtICoqbHVuZyoqLiBjaMO6bmcgdGEgY8OzIMSR4buTIHRo4buLIHbhu4EgKsSRxrDhu51uZyBjb25nIHPhu5FuZyBzw7N0IEthcGxhbi1NZWllciogxJHGoW4gZ2nhuqNuIG5oxrAgc2F1Og0KDQpgYGB7ciwgd2FybmluZz1GQUxTRSwgZXJyb3I9RkFMU0UsIG1lc3NhZ2U9RkFMU0V9DQpwbG90KHN1cnZmaXRfbHVuZywgeGxhYiA9ICJUaOG7nWkgZ2lhbiAobmfDoHkpIiwgeWxhYiA9ICJYw6FjIHN14bqldCBz4buRbmcgc8OzdCIsIG1haW4gPSAixJDGsOG7nW5nIGNvbmcgc2luaCB04buTbiBLYXBsYW4gTWVpZXIiLCBjb2wgPSBjKCJibHVlIiksIGx3ZCA9IDIpDQpgYGANCg0KPVw+IE5o4bqtbiB4w6l0IMSR4buTIHRo4buLOiDEkcaw4budbmcgY29uZyBz4buRbmcgc8OzdCBj4bunYSBk4buvIGxp4buHdSB1bmcgdGjGsCBwaOG7lWkgLSBsdW5nIGzDoCBt4buZdCDEkcaw4budbmcgY29uZyB24bubaSB4dSBoxrDhu5tuZyBnaeG6o20gbGnDqm4gdOG7pWMuDQoNCsKgwqDCoE5nb8OgaSBow6BtIGBwbG90KClgIGPGoSBi4bqjbiB0cm9uZyBSLCB0YSBjw7MgdGjhu4Mgc+G7rSBk4bulbmcgcGFja2FnZSBgc3Vydm1pbmVyYCB2w6Agc+G7rSBk4bulbmcgaMOgbSBgZ2dzdXJ2cGxvdCgpYCDEkeG7gyB24bq9IMSR4buTIHRo4buLOg0KDQpgYGB7ciwgd2FybmluZz1GQUxTRSwgZXJyb3I9RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIGVjaG89RkFMU0V9DQpsaWJyYXJ5KHN1cnZtaW5lcikNCmBgYA0KDQpgYGB7ciwgd2FybmluZz1GQUxTRSwgZXJyb3I9RkFMU0UsIG1lc3NhZ2U9RkFMU0V9DQpnZ3N1cnZwbG90KHN1cnZmaXRfbHVuZywgZGF0YSA9IGx1bmcsIHJpc2sudGFibGUgPSBUUlVFLCBwdmFsID0gVFJVRSwgbGVnZW5kLnRpdGxlID0gIkdp4bubaSBUw61uaCIsIHhsYWIgPSAiVGjhu51pIGdpYW4gKG5nw6B5KSIsIHlsYWIgPSAiWMOhYyBzdeG6pXQgc+G7kW5nIHPDs3QiLCkNCmBgYA0KDQrCoMKgwqAqKsSQxrDhu51uZyBjb25nIHPhu5FuZyBzw7N0IEthcGxhbiBNZWllciB0aGVvIHnhur91IHThu5EgZ2nhu5tpIHTDrW5oKioNCg0KwqDCoMKgTsOibmcgY2FvIGjGoW4sIHRhIGPDsyB0aOG7gyB24bq9IMSRxrDhu51uZyBjb25nIHPhu5FuZyBzw7N0IEthcGxhbi1NZWllciBjaG8gdOG7q25nIG5ow7NtIMSRxrDhu6NjIHBow6JuIGxv4bqhaSB0aGVvIHnhur91IHThu5EuIFRyb25nIHbDrSBk4bulIG7DoHksIMSRxrDhu51uZyBjb25nIHPhu5FuZyBzw7N0IEthcGxhbi1NZWllciDEkcaw4bujYyB24bq9IG3hu5dpIG5ow7NtIGdp4bubaSB0w61uaCBraMOhYyBuaGF1IHRyb25nIGThu68gbGnhu4d1IHVuZyB0aMawIHBo4buVaToNCg0KYGBge3IsIHdhcm5pbmc9RkFMU0UsIGVycm9yPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQ0KZ2dzdXJ2cGxvdChzdXJ2Zml0X2x1bmdfYnlzZXgsIGRhdGEgPSBsdW5nLCByaXNrLnRhYmxlID0gVFJVRSwgcHZhbCA9IFRSVUUsIGxlZ2VuZC50aXRsZSA9ICJHaeG7m2kgVMOtbmgiLCB4bGFiID0gIlRo4budaSBnaWFuIChuZ8OgeSkiLCB5bGFiID0gIljDoWMgc3XhuqV0IHPDs25nIHPDs3QiKQ0KYGBgDQoNCj1cPiBOaOG6rW4geMOpdCDEkeG7kyB0aOG7izogY8OzIHPhu7Ega2jDoWMgYmnhu4d0IHbhu4EgeMOhYyBzdeG6pXQgc+G7kW5nIHPDs3QgZ2nhu69hIDIgbmjDs20gbmjhu5ttIHTDrW5oIChwPTAuMDAxMyBcPCAwLjA1KSB2w6AgZ2nhu5tpIHTDrW5oIG5hbSAoc2V4PTEpIGPDsyB4w6FjIHN14bqldCBzw7NuZyBzw7N0IHF1YSB0aOG7nWkgZ2lhbiB0aOG6pXAgaMahbiBnaeG7m2kgdMOtbmggbuG7ryAoc2V4PTEpDQoNCsKgwqDCoCoqxJDGsOG7nW5nIGNvbmcgc2luaCB04buTbiBLYXBsYW4gTWVpZXIgdGhlbyB54bq/dSB04buRIG3hu6ljIMSR4buZIHN1eSBnaeG6o20gY2jhu6ljIG7Eg25nIHBo4buVaSoqDQoNCsKgwqDCoMSQxrDhu51uZyBjb25nIHNpbmggdOG7k24gS2FwbGFuLU1laWVyIMSRxrDhu6NjIHbhur0gbeG7l2kgbmjDs20gc3V5IGdp4bqjbSBjaOG7qWMgbsSDbmcgcGjhu5VpIGtow6FjIG5oYXUgdHJvbmcgZOG7ryBsaeG7h3UgdW5nIHRoxrAgcGjhu5VpLWx1bmc6DQoNCmBgYHtyLCB3YXJuaW5nPUZBTFNFLCBlcnJvcj1GQUxTRSwgbWVzc2FnZT1GQUxTRX0NCmdnc3VydnBsb3Qoc3VydmZpdF9sdW5nX2J5cGgsIGRhdGEgPSBsdW5nLCByaXNrLnRhYmxlID0gVFJVRSwgcHZhbCA9IFRSVUUsIGxlZ2VuZC50aXRsZSA9ICJN4bupYyDEkeG7mSBzdXkgZ2nhuqNtIGNo4bupYyBuxINuZyBwaOG7lWkiLCB4bGFiID0gIlRo4budaSBnaWFuIChuZ8OgeSkiLCB5bGFiID0gIljDoWMgc3XhuqV0IHPDs25nIHPDs3QiKQ0KYGBgDQoNCj1cPiBOaOG6rW4geMOpdCDEkeG7kyB0aOG7izogY8OzIHPhu7Ega2jDoWMgYmnhu4d0IMSRw6FuZyBr4buDIGdp4buvYSBjw6FjIG3hu6ljIMSR4buZIHN1eSBnaeG6o20gY2jhu6ljIG7Eg25nIHBo4buVaSAocFx+MC4wMDAxIFw8IDAuMDUpIHbDoCBt4bupYyDEkeG7mSBzdXkgZ2nhuqNtIGNo4bupYyBuxINuZyBwaOG7lWkgY8OgbmcgY8OgbmcgY2FvIHRow6wgeHXhuqV0IHN14bqldCBzw7NuZyBz4buRdCBxdWEgdGjhu51pIGdpYW4gY8OgbmcgdGjhuqVwLg0KDQrCoMKgwqAqKsSQxrDhu51uZyBjb25nIHNpbmggdOG7k24gS2FwbGFuIE1laWVyIHRoZW8gdOG7q25nIG5ow7NtIHR14buVaSoqDQoNCsKgwqDCoMSQxrDhu51uZyBjb25nIHNpbmggdOG7k24gS2FwbGFuLU1laWVyIMSRxrDhu6NjIHbhur0gbeG7l2kgbmjDs20gbmjDs20gdHXhu5VpIGtow6FjIG5oYXUgdHJvbmcgZOG7ryBsaeG7h3UgdW5nIHRoxrAgcGjhu5VpOg0KDQpgYGB7cn0NCmdnc3VydnBsb3Qoc3VydmZpdF9sdW5nX2J5YWdlLCBkYXRhID0gbHVuZywgcmlzay50YWJsZSA9IFRSVUUsIHB2YWwgPSBUUlVFLCBsZWdlbmQudGl0bGUgPSAiTmjDs20gdHXhu5VpIiwgeGxhYiA9ICJUaOG7nWkgZ2lhbiAobmfDoHkpIiwgeWxhYiA9ICJYw6FjIHN14bqldCBzw7NuZyBzw7N0IikNCmBgYA0KDQo9XD4gTmjhuq1uIHjDqXQgxJHhu5MgdGjhu4s6IGtow7RuZyBjw7Mgc+G7sSBraMOhYyBuaGF1IMSRw6FuZyBr4buDIGdp4buvYSBjw6FjIG5ow7NtIHR14buVaSAocD0gMC4xOCBcPiAwLjA1KSBraGkgeMOhYyBzdeG6pXQgc+G7kW5nIHPDs3QgZ2nhu69hIGPDoWMgxJHhu5kgdHXhu5VpIHRyb25nIDUwMCBuZ8OgeSDEkeG6p3UgZ+G6p24gbmjGsCBraMO0bmcgY8OzIHPhu7Ega2jDoWMgYmnhu4d0Lg0KDQojIyA0LjcgU28gc8OhbmggY8OhYyDEkcaw4budbmcgY29uZyBzaW5oIHThu5NuDQoNCsKgwqDCoMSQ4buDIHNvIHPDoW5oIGPDoWMgxJHGsOG7nW5nIGNvbmcgc2luaCB04buTbiB0csOqbiBSIGLhurFuZyAqKmxvZy1yYW5rKiosIGLhuqFuIGPDsyB0aOG7gyBz4butIGThu6VuZyBow6BtICoqc3VydmRpZmYoKSoqIHRyb25nIGfDs2kgYHN1cnZpdmFsYC4gSMOgbSBuw6B5IGNobyBwaMOpcCBi4bqhbiB0w61uaCB0b8OhbiBnacOhIHRy4buLIHRo4buRbmcga8OqICoqbG9nLXJhbmsqKiB2w6AgKipnacOhIHRy4buLIHAqKiDEkeG7gyBzbyBzw6FuaCDEkcaw4budbmcgY29uZyBzaW5oIHThu5NuIGdp4buvYSBoYWkgaG/hurdjIG5oaeG7gXUgbmjDs20uIFNhdSDEkcOieSBsw6AgbeG7mXQgdsOtIGThu6UgY+G7pSB0aOG7gyB24buBIGPDoWNoIHRo4buxYyBoaeG7h24gc28gc8OhbmggY8OhYyDEkcaw4budbmcgY29uZyBzaW5oIHThu5NuIGLhurFuZyAqKmxvZy1yYW5rKiogdHLDqm4gUjoNCg0KYGBgICAgICAgICAgDQpzdXJ2ZGlmZihzdXJ2X29iaiB+IHgxLCBkYXRhKQ0KYGBgDQoNClRyb25nIMSRw7M6DQoNCi0gICBgc3Vydl9vYmpgOiBsw6AgxJHhu5FpIHTGsOG7o25nIHPhu5FuZyBzw7N0IMSRxrDhu6NjIHThuqFvIGLhu59pIGjDoG0gc3VydigpICh4ZW0gbeG7pWMgNC40KQ0KDQotICAgYHgxYDogbMOgIHnhur91IHThu5EgxJHGsOG7o2MgxJHGsGEgdsOgbyDEkeG7gyBwaMOibiBuaMOzbSB2w6Agc28gc8OhbmgNCg0KwqDCoMKgS+G6v3QgcXXhuqMgY+G7p2Ega2nhu4NtIMSR4buLbmggKipsb2ctcmFuayoqIGJhbyBn4buTbSAqKmdpw6EgdHLhu4sgY2hpLXNxdWFyZWQqKiB2w6AgKipnacOhIHRy4buLIHAqKi4gTuG6v3UgKipnacOhIHRy4buLIHAqKiBuaOG7jyBoxqFuIG3hu6ljIMO9IG5naMSpYSDEkcaw4bujYyBjaOG7jW4gdHLGsOG7m2MgKHRoxrDhu51uZyBsw6AgKiowLDA1KiopLCBi4bqhbiBjw7MgdGjhu4Mga+G6v3QgbHXhuq1uIHLhurFuZyBjw7Mgc+G7sSBraMOhYyBiaeG7h3QgxJHDoW5nIGvhu4MgduG7gSB04bu3IGzhu4cgc+G7kW5nIHPDs3QgZ2nhu69hIGPDoWMgbmjDs20gxJHGsOG7o2Mgc28gc8OhbmguDQoNCsKgwqDCoFRyb25nIHbDrSBk4bulIG7DoHksICoqxJHGsOG7nW5nIGNvbmcgc2luaCB04buTbiBLYXBsYW4tTWVpZXIqKiDEkcaw4bujYyB0w61uaCB0b8OhbiBjaG8gKipt4buXaSBuaMOzbSBnaeG7m2kgdMOtbmggdsOgIG3hu6ljIMSR4buZIHN1eSBnaeG6o20gY2jhu6ljIG7Eg25nIHBo4buVaSB2w6AgbeG7l2kgbmjDs20gdHXhu5VpIGtow6FjIG5oYXUqKiB0cm9uZyBk4buvIGxp4buHdSB1bmcgdGjGsCBwaOG7lWkgbmjGsCBzYXU6DQoNCmBgYHtyfQ0KIyBTbyBzw6FuaCAyIG5ow7NtIGdp4bubaSB0w61uaCBj4bunYSBk4buvIGxp4buHdSBsdW5nDQpsb2dyYW5rX3Rlc3QxIDwtIHN1cnZkaWZmKHdpdGgobHVuZywgU3Vydih0aW1lLCBzdGF0dXMpKSB+IHNleCwgZGF0YSA9IGx1bmcpDQojIFNvIHPDoW5oIDQgbmjDs20gbeG7qWMgxJHhu5kgc3V5IGdp4bqjbSBjaOG7qWMgbsSDbmcgcGjhu5VpIA0KbG9ncmFua190ZXN0MiA8LSBzdXJ2ZGlmZih3aXRoKGx1bmcsIFN1cnYodGltZSwgc3RhdHVzKSkgfiBwaC5lY29nLCBkYXRhID0gbHVuZykNCiMgU28gc8OhbmggMyBuaMOzbSDEkeG7mSB0deG7lWkgDQpsb2dyYW5rX3Rlc3QzIDwtIHN1cnZkaWZmKHdpdGgobHVuZywgU3Vydih0aW1lLCBzdGF0dXMpKSB+IGFnZV9ncm91cCwgZGF0YSA9IGx1bmcpDQpwcmludChsb2dyYW5rX3Rlc3QxKQ0KcHJpbnQobG9ncmFua190ZXN0MikNCnByaW50KGxvZ3JhbmtfdGVzdDMpDQpgYGANCg0KwqDCoMKgS+G6v3QgcXXhuqMga2nhu4NtIMSR4buLbmg6DQoNCi0gICAqKk5ow7NtIGdp4bubaSB0w61uaCAobWFsZS1mZW1hbGUpKio6IGdpw6EgdHLhu4sgKipwPSAwLjAwMSBcPCAwLjA1KiogbsOqbiBjw7MgdGjhu4Mga+G6v3QgbHXhuq1uIHLhurFuZyAqY8OzIHPhu7Ega2jDoWMgYmnhu4d0IMSRw6FuZyBr4buDIGdp4buvYSBuaMOzbSBnaeG7m2kgdMOtbmggbmFtIHbDoCBu4buvIHbhu4EgdOG7iSBs4buHIHPhu5FuZyBzw7N0Ki4NCg0KLSAgICoqTmjDs20gTeG7qWMgxJHhu5kgc3V5IGdp4bqjbSBwaOG7lWkgY+G7p2EgYuG7h25oIG5ow6JuKiogKiooMCA9IFThu5F0LCAxID0gVMOgbiBwaOG6vyBuaOG6uSwgMiA9IFTDoG4gcGjhur8gdHJ1bmcgYsOsbmgsIDMgPSBUw6BuIHBo4bq/IG7hurduZykqKjogZ2nDoSB0cuG7iyAqKnA9IDdlLTA1IFw8IDAuMDUqKiBuw6puIGPDsyB0aOG7gyBr4bq/dCBsdeG6rW4gcuG6sW5nICpjw7Mgc+G7sSBraMOhYyBiaeG7h3QgxJHDoW5nIGvhu4MgZ2nhu69hIGPDoWMgbmjDs20gbeG7qWMgxJHhu5kgduG7gSB04buJIGzhu4cgc+G7kW5nIHPDs3QuKg0KDQotICAgKipOaMOzbSDEkOG7mSB0deG7lWkgKCBkxrDhu5tpIDUwLCA1MCDEkeG6v24gNjUsIHRyw6puIDY1KSoqOiBnacOhIHRy4buLICoqcD0gMC4yIFw+IDAuMDUqKiBuw6puIGPDsyB0aOG7gyBr4bq/dCBsdeG6rW4gcuG6sW5nICpraMO0bmcgY8OzIHPhu7Ega2jDoWMgYmnhu4d0IMSRw6FuZyBr4buDIGdp4buvYSAzIG5ow7NtIHR14buVaSDEkcaw4bujYyB4w6l0LioNCg0KIyMgNC44IE3DtCBow6xuaCBo4buTaSBxdXkgQ294DQoNCsKgwqDCoE3DtCBow6xuaCAqKkNveCAoQ294IHByb3BvcnRpb25hbCBoYXphcmRzIG1vZGVsKSoqIGzDoCAqbeG7mXQgcGjGsMahbmcgcGjDoXAgaOG7k2kgcXV5IHRoZW8gdOG7iSBs4buHIG5ndXkgY8ahKiwgxJHGsOG7o2Mgc+G7rSBk4bulbmcgdHJvbmcgcGjDom4gdMOtY2ggc+G7kW5nIHPDs3QgxJHhu4MgxJHDoW5oIGdpw6EgdMOhYyDEkeG7mW5nIGPhu6dhIGPDoWMgYmnhur9uIMSR4buZYyBs4bqtcCDEkeG6v24gdOG7iSBs4buHIHPhu5FuZyBzw7N0LiBUcm9uZyBSLCBjaMO6bmcgdGEgY8OzIHRo4buDIHPhu60gZOG7pW5nIGjDoG0gYGNveHBoKClgIHRyb25nIHBhY2thZ2UgYHN1cnZpdmFsYCDEkeG7gyB04bqhbyBt4buZdCAqKm3DtCBow6xuaCBDb3gqKi4gxJDhu4MgdOG6oW8gbeG7mXQgbcO0IGjDrG5oIENveCB0csOqbiBSLCB0w7RpIGTDuW5nIGjDoG0gc2F1Og0KDQpgYGAgICAgICAgICANCmNveHBoKHN1cnZfb2JqIH4geDEgKyB4MiArIC4uLiwgZGF0YSA9IG15ZGF0YSkNCmBgYA0KDQpUcm9uZyDEkcOzOg0KDQotICAgKipzdXJ2X29iaioqOiBsw6AgKsSR4buRaSB0xrDhu6NuZyBzaW5oIHThu5NuKiDEkcaw4bujYyB04bqhbyB04burIGjDoG0gYHN1cnYoKWAgKHBo4bqnbiA0LjQpDQoNCi0gICAqKngqKjogbMOgICpjw6FjIHnhur91IHThu5EgxJHGsOG7o2MgxJHGsGEgdsOgbyBtw7QgaMOsbmgqIMSR4buDIHBow6JuIG5ow7NtIGPDoWMgxJHGsOG7nW5nIGNvbmcgc2luaCB04buTbiBraMOhYyBuaGF1Lg0KDQrCoMKgwqBUaeG6v3AgdOG7pWMgduG7m2kgZOG7ryBsaeG7h3UgdW5nIHRoxrAgcGjhu5VpIC0gKipsdW5nKiogdGhlbyBiaeG6v24gKipnaeG7m2kgdMOtbmgqKiwgY2jDum5nIHRhIGPDsyBtw7QgaMOsbmggQ294IG5oxrAgc2F1Og0KDQpgYGB7cn0NCiMgVOG6oW8gbcO0IGjDrG5oIGNveCB0aGVvIGdp4bubaSB0w61uaA0KY294Zml0IDwtIGNveHBoKFN1cnYodGltZSwgc3RhdHVzKSB+IHNleCwgZGF0YSA9IGx1bmcpDQpjb3hmaXQNCmBgYA0KDQojIyA0LjkgS2nhu4NtIMSR4buLbmggc+G7sSBwaMO5IGjhu6NwIGPhu6dhIG3DtCBow6xuaCBDb3gNCg0KwqDCoMKgVHJvbmcgUiwgxJHhu4MgKmtp4buDbSB0cmEgdMOtbmggcGjDuSBo4bujcCogY+G7p2EgKiptw7QgaMOsbmggQ294KiogduG7m2kgZ2nhuqMgxJHhu4tuaCAqKsSR4buZYyBs4bqtcCB24buBIHRo4budaSBnaWFuIChwcm9wb3J0aW9uYWwgaGF6YXJkcyBhc3N1bXB0aW9uKSoqLCBjaMO6bmcgdGEgY8OzIHRo4buDIHPhu60gZOG7pW5nIGjDoG0gYGNveC56cGgoKWAgdHJvbmcgcGFja2FnZSBgc3Vydml2YWxgLg0KDQpDw7ogcGjDoXAgc+G7rSBk4bulbmcgaMOgbSBgY294LnpwaCgpYCBuaMawIHNhdToNCg0KYGBgICAgICAgICAgDQpjb3guenBoKG1vZGVsLCB0cmFuc2Zvcm0gPSAia20iKQ0KYGBgDQoNClRyb25nIMSRw7M6DQoNCi0gICAqKm1vZGVsOioqIEzDoCDEkeG7kWkgdMaw4bujbmcgbcO0IGjDrG5oIENveCDEkcOjIMSRxrDhu6NjIMaw4bubYyBsxrDhu6NuZyBi4bqxbmcgaMOgbSBjb3hwaCgpIHRyb25nIGfDs2kgc3Vydml2YWwuDQoNCi0gICAqKnRyYW5zZm9ybToqKiBMw6AgcGjGsMahbmcgcGjDoXAgYmnhur9uIMSR4buVaSB0aOG7nWkgZ2lhbiAodGltZSB0cmFuc2Zvcm1hdGlvbikgxJHGsOG7o2Mgc+G7rSBk4bulbmcgxJHhu4MgdMOtbmggdG/DoW4gY8OhYyB0aOG7kW5nIGvDqiBraeG7g20gxJHhu4tuaC4gR2nDoSB0cuG7iyBt4bq3YyDEkeG7i25oIGzDoCAia20iIHTGsMahbmcg4bupbmcgduG7m2kgcGjGsMahbmcgcGjDoXAgxJHGsOG7nW5nIGNow6lvIEthcGxhbi1NZWllci4NCg0KwqDCoMKgQ8OhYyBiaeG6v24gxJHhu5ljIGzhuq1wIMSRxrDhu6NjIGtp4buDbSB0cmEgYuG6sW5nIGPDoWNoIHTDrW5oIHRvw6FuIGjhu4cgc+G7kSB0xrDGoW5nIHF1YW4gZ2nhu69hIGPDoWMgZ2nDoSB0cuG7iyBk4buxIMSRb8OhbiBj4bunYSAqKmjDoG0gQ294KiogdsOgICoqY8OhYyBow6BtIMSRxrDhu51uZyBjaMOpbyBLYXBsYW4tTWVpZXIqKiB0xrDGoW5nIOG7qW5nIHbhu5tpIHThu6tuZyBuaMOzbSBnacOhIHRy4buLIGPhu6dhIGJp4bq/biDEkeG7mWMgbOG6rXAgxJHDsy4gTuG6v3UgZ2nDoSB0cuG7iyBwIGPhu6dhIGtp4buDbSDEkeG7i25oIG5o4buPIGjGoW4gbeG7mXQgbmfGsOG7oW5nIHjDoWMgxJHhu4tuaCAodGjGsOG7nW5nIGzDoCAqKjAuMDUqKiksIHRhIGPDsyB0aOG7gyBiw6FjIGLhu48gZ2nhuqMgxJHhu4tuaCAqKsSR4buZYyBs4bqtcCB24buBIHRo4budaSBnaWFuKiogdsOgIGPhuqduIHBo4bqjaSB0w6xtIGPDoWNoIMSRaeG7gXUgY2jhu4luaCBtw7QgaMOsbmggQ294IMSR4buDIHBow7kgaOG7o3AgaMahbiB24bubaSBk4buvIGxp4buHdS4NCg0KVsOtIGThu6UgduG7m2kgbcO0IGjDrG5oIENveCDEkcOjIMSRxrDhu6NjIHThuqFvIHThu6sgaMOgbSBjb3hwaCgpICh4ZW0gcGjhuqduIDQuOCksIHRhIGtp4buDbSDEkeG7i25oIG5oxrAgc2F1Og0KDQpgYGB7cn0NCiMgS2nhu4NtIMSR4buLbmggbcO0IGjDrG5oIGNveA0KY294LnpwaChjb3hmaXQsIHRyYW5zZm9ybSA9ICJrbSIpDQpgYGANCg0KwqDCoMKgS+G6v3QgcXXhuqMgY2hvIHRo4bqleTogZ2nDoSB0cuG7iyAqKnA9IDAuMDkxIFw+IDAuMDUqKiBuw6puIG3DtCBow6xuaCBDb3ggxJHGsOG7o2MgdOG6oW8gdHLDqm4gbMOgIHBow7kgaOG7o3AuDQoNCiMjIDQuMTAgU28gc8OhbmggdOG7iSBs4buHIHThu60gdm9uZyBnaeG7r2EgaGFpIG5ow7NtIGLhurFuZyBtw7QgaMOsbmggQ294DQoNCsKgwqDCoCoqVOG7qyBtw7QgaMOsbmggQ294KiosIHTDtGkgY8OzIHRo4buDIHRodSDEkcaw4bujYyBjw6FjIGLhuqNuZyBr4bq/dCBxdeG6oyBraeG7g20gxJHhu4tuaCBnaeG7r2EgKipoYWkgbmjDs20gZ2nhu5tpIHTDrW5oKiogYuG6sW5nIGPDoWNoIHPhu60gZOG7pW5nIGjDoG0gYHRibF9yZWdyZXNzaW9uKClgIHThu6sgcGFja2FnZSBgZ3RzdW1tYXJ5YCwgduG7m2kgdMO5eSBjaOG7jW4gYGV4cCA9IFRSVUVgIMSR4buDIHRy4bqjIHbhu4EgdOG7tyBs4buHIHLhu6dpIHJvOg0KDQpgYGB7ciwgd2FybmluZz1GQUxTRSwgZXJyb3I9RkFMU0UsIG1lc3NhZ2U9RkFMU0V9DQojIEfhu41pIHBhY2thZ2UgZ3RzdW1tYXJ5IHThu6sgdGjGsCB2aeG7h24NCmxpYnJhcnkoImd0c3VtbWFyeSIpDQojIFThuqFvIG3DtCBow6xuaCBjb3ggdGhlbyBnaeG7m2kgdMOtbmggdsOgIHRy4bqjIHbhu4EgdOG7tyBs4buHIHLhu6dpIHJvIEhSDQpjb3hwaChTdXJ2KHRpbWUsIHN0YXR1cykgfiBzZXgsIGRhdGEgPSBsdW5nKSAlPiUgdGJsX3JlZ3Jlc3Npb24oZXhwID0gVFJVRSkgDQpgYGANCg0KwqDCoMKgKipIUioqICpiaeG7g3UgdGjhu4sgdOG7tyBs4buHIG5ndXkgY8ahIGdp4buvYSBoYWkgbmjDs20qIHThuqFpIGLhuqV0IGvhu7MgdGjhu51pIMSRaeG7g20gY+G7pSB0aOG7gyBuw6BvLiAqKkhSIFw8IDEqKiBjaG8gdGjhuqV5IG5ndXkgY8ahIHThu60gdm9uZyBnaeG6o20gdHJvbmcga2hpICoqSFIgXD4gMSoqIGNobyB0aOG6pXkgbmd1eSBjxqEgdOG7rSB2b25nIHTEg25nIGzDqm4uDQoNCi0gICBL4bq/dCBxdeG6oyB04burIGjDoG0gYHRibF9yZWdyZXNzaW9uKClgIGNobyB0aOG6pXk6IEdpw6EgdHLhu4sgcD0wLjAwMVw8MC4wNSBuw6puIGvhur90IHF14bqjIHRyw6puIGzDoCBjw7Mgw70gbmdoxKlhIHRo4buRbmcga8OqLiAqKkhSID0gMCw1OSoqIG5n4bulIMO9IHLhurFuZyBz4buRIG5hbSBnaeG7m2kgKnPhuq9wIGNo4bq/dCogbmhp4buBdSAqKmfhuqVwIDAsNTkqKiBs4bqnbiBzbyB24bubaSBu4buvIGdp4bubaSwgdOG6oWkgYuG6pXQga+G7syB0aOG7nWkgxJFp4buDbSBuw6BvLiBOw7NpIGPDoWNoIGtow6FjLCBwaOG7pSBu4buvIGPDsyBuZ3V5IGPGoSB04butIHZvbmcgdGjhuqVwIGjGoW4gxJHDoW5nIGvhu4Mgc28gduG7m2kgbmFtIGdp4bubaSB0cm9uZyBjw6FjIGThu68gbGnhu4d1IG7DoHkuDQoNCsKgwqDCoMOBcCBk4bulbmcgduG7m2kgeeG6v3UgdOG7kSBt4bupYyDEkeG7mSBzdXkgZ2nhuqNtIGNo4bupYyBuxINuZyBwaOG7lWkgcGguZWNvZzoNCg0KYGBge3IsIHdhcm5pbmc9RkFMU0UsIGVycm9yPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQ0KIyBU4bqhbyBtw7QgaMOsbmggY294IHRoZW8gbeG7qWMgxJHhu5kgc3V5IGdp4bqjbSBjaOG7qWMgbsSDbmcgcGjhu5VpIHbDoCB0cuG6oyB24buBIHThu7cgbOG7hyBy4bunaSBybyBIUg0KY294cGgoU3Vydih0aW1lLCBzdGF0dXMpIH4gcGguZWNvZywgZGF0YSA9IGx1bmcpICU+JSB0YmxfcmVncmVzc2lvbihleHAgPSBUUlVFKSANCmBgYA0KDQotICAgS+G6v3QgcXXhuqMgdOG7qyBow6BtIGB0YmxfcmVncmVzc2lvbigpYCBjaG8gdGjhuqV5OiBHacOhIHRy4buLIHA9MC4wMDFcPDAuMDUgbsOqbiBr4bq/dCBxdeG6oyB0csOqbiBsw6AgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqi4gKipIUiA9IDEuNjEqKiBuZ+G7pSDDvSBjaG8gdGjhuqV5IG5ndXkgY8ahIHThu60gdm9uZyB0xINuZyBsw6puIHRoZW8gbeG7qWMgxJHhu5kgc3V5IGdp4bqjbSBjaOG7qWMgbsSDbmcgcGjhu5VpIHbDoCB24bubaSBt4buXaSBt4bupYyBzdXkgZ2nhuqNtIGNo4bupYyBuxINuZyBwaOG7lWkgdMSDbmcgbMOqbiB0aMOsIHh14bqldCBz4bqvYyBi4buHbmggbmjDom4gc+G6r3AgY2jhur90IGPDsyB0aOG7gyB0xINuZyB0aGVvICoqMSw2MSBs4bqnbioqLg0KDQojIyA0LjExIEThu7EgxJFvw6FuIHThu4kgbOG7hyBz4buRbmcgc8OzdCB0cm9uZyB0xrDGoW5nIGxhaQ0KDQrEkMKgwqDCoOG7gyBk4buxIMSRb8OhbiB04buJIGzhu4cgc+G7kW5nIHPDs3QgY+G7p2EgbeG7mXQgY8OhIG5ow6JuIGThu7FhIHRyw6puIG3DtCBow6xuaCBDb3ggxJHDoyDEkcaw4bujYyDGsOG7m2MgbMaw4bujbmcgdHLDqm4gUiwgY2jDum5nIHRhIGPDsyB0aOG7gyBz4butIGThu6VuZyBow6BtIGBwcmVkaWN0KClgIHRyb25nIHBhY2thZ2UgYHN1cnZpdmFsYC4NCg0KQ8O6IHBow6FwIHPhu60gZOG7pW5nIGjDoG0gYHByZWRpY3QoKWAgxJHhu4MgZOG7sSDEkW/DoW4gdOG7iSBs4buHIHPhu5FuZyBzw7N0IGPhu6dhIG3hu5l0IGPDoSBuaMOibiBuaMawIHNhdToNCg0KYGBgICAgICAgICAgDQpwcmVkaWN0KG9iamVjdCwgbmV3ZGF0YSwgdHlwZSA9ICJzdXJ2aXZhbCIpDQpgYGANCg0KVHJvbmcgxJHDszoNCg0KLSAgICoqb2JqZWN0Kio6IEzDoCAqxJHhu5FpIHTGsOG7o25nIG3DtCBow6xuaCBDb3gqIMSRw6MgxJHGsOG7o2MgxrDhu5tjIGzGsOG7o25nIGLhurFuZyBow6BtIGBjb3hwaCgpYCB0cm9uZyBwYWNrYWdlICpzdXJ2aXZhbCouDQoNCi0gICAqKm5ld2RhdGEqKjogTMOgICpi4buZIGThu68gbGnhu4d1IGNo4bupYSB0aMO0bmcgdGluIHbhu4EgY8OhYyBiaeG6v24gxJHhu5ljIGzhuq1wKiBj4bunYSBiaeG6v24gY+G6p24gZOG7sSDEkW/DoW4uIELhu5kgZOG7ryBsaeG7h3UgbsOgeSBwaOG6o2kgY8OzIGPDuW5nIHTDqm4gdsOgIMSR4buLbmggZOG6oW5nIHbhu5tpIGLhu5kgZOG7ryBsaeG7h3UgxJHGsOG7o2Mgc+G7rSBk4bulbmcgxJHhu4MgxrDhu5tjIGzGsOG7o25nIG3DtCBow6xuaC4NCg0KLSAgICoqdHlwZSoqOiBMw6AgbG/huqFpIGThu7EgxJFvw6FuIGPhuqduIHRo4buxYyBoaeG7h24uIFRyb25nIHRyxrDhu51uZyBo4bujcCBuw6B5LCB0YSBz4butIGThu6VuZyBgdHlwZSA9ICJzdXJ2aXZhbCJgIMSR4buDIGThu7EgxJFvw6FuIHThu4kgbOG7hyBz4buRbmcgc8OzdC4NCg0KwqDCoMKgVsOtIGThu6U6IHTDtGkgbXXhu5FuIHPhu7EgYsOhbyB04buJIGzhu4cgc+G7kW5nIHPDs3QgY+G7p2EgbmjDs20gKipnaeG7m2kgdMOtbmggTmFtKiogdsOgbyAqKm5nw6B5IHRo4bupIDEwNTAqKiwgdMO0aSB0aOG7sWMgaGnhu4duIGPDoWMgYsaw4bubYyBk4buxIGLDoW8gbmjGsCBzYXU6DQoNCmBgYHtyfQ0KIyBU4bqhbyBtw7QgaMOsbmggY294IMSR4buDIGThu7EgYsOhbw0KbW9kIDwtIGNveHBoKFN1cnYodGltZSxzdGF0dXMpIH4rIHNleCwgZGF0YSA9IGNhbmNlcikNCiMgVOG6oW8gMSBkw7JuZyBxdWFuIHPDoXQgbeG7m2kgxJHhu4MgZOG7sSBiw6FvDQpwcmVkX2RhdCA8LSBkYXRhLmZyYW1lKHRpbWUgPSBjKDEwNTApLCBzdGF0dXMgPSBjKDApLCBzZXggPSBjKDApKQ0KIyBUaeG6v24gaMOgbmggZOG7sSBiw6FvIGLhurFuZyBow6BtIHByZWRpY3QNCnByZWRzIDwtIHByZWRpY3QobW9kLCBuZXdkYXRhID0gcHJlZF9kYXQsDQogICAgICAgICAgICAgICAgIHR5cGUgPSAic3Vydml2YWwiLCBzZS5maXQgPSBUUlVFKQ0KIyBM4buNYyB4w6FjIHN14bqldCBz4buRbmcgc8OzdCB04burIGJp4bq/biBwcmVkcw0KcHJlZF9kYXQkcHJvYiA8LSBwcmVkcyRmaXQNCnByZWRfZGF0DQpgYGANCg0KS+G6v3QgcXXhuqM6IHbDoG8gbmfDoHkgKioxMDUwKiosIHbhu5tpICoqdHLhuqFuZyB0aMOhaSBzw7NuZyBz4buRdCAoMCkqKiB2w6AgKipnaeG7m2kgdMOtbmggTmFtICgwKSoqIHRhIGPDsyB04buJIGzhu4cgc+G7kW5nIHPDs3QgbMOgICoqMC4wMDI1NyoqDQoNCiMjIDQuMTIgS+G6v3QgcXXhuqMgcGjDom4gdMOtY2ggZOG7ryBsaeG7h3UgdW5nIHRoxrAgcGjhu5VpIC0gbHVuZw0KDQrCoMKgwqBUaMO0bmcgcXVhIGPDoWMgYsaw4bubYyB0aOG7sWMgaMOgbmggcGjDom4gdMOtY2ggc+G7kW5nIHPDs3QgdHLDqm4gUiB24bubaSBk4buvIGxp4buHdSB1bmcgdGjGsCBwaOG7lWkgLSBsdW5nLCBjaMO6bmcgdGEgY8OzIGLhuqNuIHTDs20gdOG6r3QgY8OhYyBr4bq/dCBxdeG6ozoNCg0KMS4gIERhdGFzZXQgKipsdW5nKiogbMOgIG3hu5l0IHRyb25nIG5o4buvbmcgdOG6rXAgZOG7ryBsaeG7h3UgdGnDqnUgYmnhu4N1IGPhu6dhIHBhY2thZ2UgYHN1cnZpdmFsYCDEkcaw4bujYyBz4butIGThu6VuZyB0cm9uZyBuaGnhu4F1IHbDrSBk4bulIHbDoCBoxrDhu5tuZyBk4bqrbiB24buBIHBow6JuIHTDrWNoIGThu68gbGnhu4d1LiBEYXRhc2V0IG7DoHkgxJHGsOG7o2MgdOG6oW8gcmEgdOG7qyAqbmdoacOqbiBj4bupdSBsw6JtIHPDoG5nIHbhu4EgdW5nIHRoxrAgcGjhu5VpKiB2w6AgYmFvIGfhu5NtIHRow7RuZyB0aW4gduG7gSAqKjIyOCBi4buHbmggbmjDom4gdW5nIHRoxrAgcGjhu5VpKiogduG7m2kgY8OhYyBiaeG6v24gbmjGsCB0deG7lWksIGdp4bubaSB0w61uaCwgbeG7qWMgxJHhu5kgc3V5IGdp4bqjbSBjaOG7qWMgbsSDbmcgcGjhu5VpLC4uLg0KMi4gIEJp4bq/biAqKnRpbWUsIHN0YXR1cyoqIGzDoCB04buVIGjhu6NwIGJp4bq/biAqKnRpbWUtdG8tZXZlbnQgKGThu68gbGnhu4d1IHRo4budaSBnaWFuIC0gc+G7sSBraeG7h24pKiogxJHGsOG7o2MgZMO5bmcgxJHhu4MgcGjDom4gdMOtY2ggc+G7kW5nIHPDs3QgdHJvbmcgUi4gQsOqbiBj4bqhbmggxJHDsywgYmnhur9uICoqYWdlLCBzZXgsIHBoLmVjb2cqKiBsw6AgKjMgYmnhur9uIHnhur91IHThu5EgZMO5bmcgxJHhu4MgcGjDom4gbmjDs20gdsOgIMSRw6FuaCBnacOhIOG6o25oIGjGsOG7n25nIGPhu6dhIGNow7puZyBsw6puIHThu4kgbOG7hyBz4buRbmcgc8OzdC4qDQozLiAgKirEkOG7kyB0aOG7iyBz4buRbmcgc8OzdCB04buVbmcgdGjhu4MqKiBj4bunYSBi4buHbmggbmjDom4gdW5nIHRoxrAgcGjhu5VpOg0KDQpgYGB7ciwgd2FybmluZz1GQUxTRSwgZXJyb3I9RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIGVjaG89RkFMU0V9DQpwbG90KHN1cnZmaXRfbHVuZywgeGxhYiA9ICJUaOG7nWkgZ2lhbiAobmfDoHkpIiwgeWxhYiA9ICJYw6FjIHN14bqldCBz4buRbmcgc8OzdCIsIG1haW4gPSAixJDGr+G7nW5nIGNvbmcgc2luaCB04buTbiBLYXBsYW4gTWVpZXIiLCBjb2wgPSBjKCJibHVlIiksIGx3ZCA9IDIpDQpgYGANCg0KLSAgIMSQ4buTIHRo4buLIMSRxrDhu51uZyBjb25nIHPDs25nIHPDs3QgbMOgIMSR4buTIHRo4buLICpsacOqbiB04bulYyBnaeG6o20sIGtow7RuZyBjw7MgeHUgaMaw4bubbmcgdMSDbmcqIOG7nyBi4bqldCBr4buzIHRo4budaSDEkWnhu4NtIG7DoG8gdsOsIGLhu4duaCBuaMOibiBjaOG6v3QgxJFpIGtow7RuZyB0aOG7gyBz4buRbmcgbOG6oWkuDQoNCjQuICBZ4bq/dSB04buRICoqZ2nhu5tpIHTDrW5oIGPDsyDhuqNuaCBoxrDhu59uZyDEkeG6v24gdOG7iSBs4buHIHPDs25nIHPDs3QqKiBj4bunYSBi4buHbmggbmjDom4sIHRyb25nIMSRw7MgYuG7h25oIG5oYW5oIG1hbmcgZ2nhu5tpIHTDrW5oIG5hbSBjw7MgdOG7iSBs4buHIHPDs25nIHPDs3QgcXVhIHRo4budaSBnaWFuIHRo4bqlcCBoxqFuIHNvIHbhu5tpIGLhu4duaCBuaMOibiBtYW5nIGdp4bubaSB0w61uaCBu4buvLg0KDQo1LiAgWeG6v3UgdOG7kSAqKm3hu6ljIMSR4buZIHN1eSBnaeG6o20gY2jhu6ljIG7Eg25nIHBo4buVaSBjw7Mg4bqjbmggaMaw4bufbmcgxJHhur9uIHThu4kgbOG7hyBz4buRbmcgc8OzdCoqIGPhu6dhIGLhu4duaCBuaMOibiwgdHJvbmcgxJHDsyBi4buHbmggbmjDom4gY8OzIG3hu6ljIMSR4buZIHN1eSBnaeG6o20gcGjhu5VpIGPDoG5nIGzhu5tuIHRow6wgdOG7iSBs4buHIHPhu5FuZyBzw7N0IHF1YSB0aOG7nWkgZ2lhbiBjw6BuZyB0aOG6pXAuDQoNCjYuICBZ4bq/dSB04buRICoqxJHhu5kgdHXhu5VpIGfhuqduIG5oxrAga2jDtG5nIGPDsyDhuqNuaCBoxrDhu59uZyoqIMSR4bq/biB04buJIGzhu4cgc+G7kW5nIHPDs3QgY+G7p2EgYuG7h25oIG5ow6JuLg0KDQojIDUgVEjhu7BDIEjDgE5IIE7Dgk5HIENBTyBW4buaSSBQQUNLQUdFIFNVUlZJVkFMDQoNCiMjIDUuMSBOZ3V5IGPGoSBj4bqhbmggdHJhbmggLSBjb21wZXRpbmcgcmlza3MNCg0KwqDCoMKgKipDb21wZXRpbmcgcmlza3MgKG5ndXkgY8ahIGPhuqFuaCB0cmFuaCkqKiBsw6AgbeG7mXQga2jDoWkgbmnhu4dtIHRyb25nIHBow6JuIHTDrWNoIHPhu5FuZyBzw7N0LCDEkeG7gSBj4bqtcCDEkeG6v24gdmnhu4djIGPDsyAqbmhp4buBdSBoxqFuIG3hu5l0IHPhu7Ega2nhu4duIGPDsyB0aOG7gyB44bqjeSByYSDEkeG7kWkgduG7m2kgY8OhYyBjw6EgbmjDom4gdHJvbmcgcXXDoSB0csOsbmggdGhlbyBkw7VpKi4gVHJvbmcgcGjDom4gdMOtY2ggc+G7kW5nIHPDs3QsIHPhu7Ega2nhu4duIHF1YW4gdMOibSB0aMaw4budbmcgbMOgIHPhu7Ega2nhu4duIHPhu5ttIG5o4bqldCB44bqjeSByYSB0cm9uZyBxdcOhIHRyw6xuaCB0aGVvIGTDtWksIG5oxrBuZyB0cm9uZyB0csaw4budbmcgaOG7o3AgY8OzIG5oaeG7gXUgc+G7sSBraeG7h24gY8OzIHRo4buDIHjhuqN5IHJhLCB2w60gZOG7pSBuaMawOg0KDQotICAgKlTDoWkgcGjDoXQuKg0KDQotICAgKkNo4bq/dCBkbyBi4buHbmguKg0KDQotICAgKkNo4bq/dCB2w6wgeeG6v3UgdOG7kSBraMOhYy4qDQoNCsKgwqDCoE5oxrAgduG6rXksICpwaMOibiB0w61jaCBuZ3V5IGPGoSBj4bqhbmggdHJhbmgqIMSRxrDhu6NjIHPhu60gZOG7pW5nIMSR4buDIHTDrW5oIHRvw6FuIHThu7cgbOG7hyBuZ3V5IGPGoSBj4bunYSAqY8OhYyBz4buxIGtp4buHbiBj4bqhbmggdHJhbmgqIHbDoCDEkW8gbMaw4budbmcg4bqjbmggaMaw4bufbmcgY+G7p2EgY2jDum5nIMSR4bq/biBz4buxIGtp4buHbiBxdWFuIHTDom0uDQoNCiMjIyA1LjEuMSBEYXRhc2V0IG1lbGFub21hIC0gdW5nIHRoxrAgZGENCg0KwqDCoMKgxJDhu4MgKnBow6JuIHTDrWNoIG5ndXkgY8ahIGPhuqFuaCB0cmFuaCosIGNow7puZyB0YSBz4bq9IHPhu60gZOG7pW5nIGThu68gbGnhu4d1IHbhu4EgKnVuZyB0aHUgZGEqIC0gKiptZWxhbm9tYSoqIHRyb25nIHBhY2thZ2UgYE1BU1NgIGLhurFuZyBjw6FjaCB0aOG7sWMgaGnhu4duIG5oxrAgc2F1Og0KDQpgYGB7cn0NCiMgU+G7rSBk4bulbmcgZGF0YXNldCBtZWxhbm9tYSB04burIHBhY2thZ2UgTUFTUw0KZGF0YShNZWxhbm9tYSwgcGFja2FnZSA9ICJNQVNTIikNCiMgSGnhu4NuIHRo4buLIDYgcXVhbiBzw6F0IMSR4bqndSB0acOqbg0KaGVhZChNZWxhbm9tYSkNCmBgYA0KDQrCoMKgwqBC4buZIGThu68gbGnhu4d1IGfhu5NtICoqMjA1IHF1YW4gc8OhdCoqIHbDoCAqKjcgYmnhur9uKiogc2F1Og0KDQotICAgKip0aW1lKio6ICpUaOG7nWkgZ2lhbiogKCpuZ8OgeSopIHThu6sgbMO6YyBjaOG6qW4gxJFvw6FuIHVuZyB0aMawIMSR4bq/biBz4buxIGtp4buHbiBxdWFuIHTDom0gKCp0w6FpIHBow6F0IHVuZyB0aMawIGhv4bq3YyB04butIHZvbmcqKSBob+G6t2Mga+G6v3QgdGjDumMgdGhlbyBkw7VpLg0KDQotICAgKipzdGF0dXMqKjogdMOsbmggdHLhuqFuZzogKjE9IGNo4bq/dCB2w6wgdW5nIHRoxrAgZGEsIDI9IGPDsm4gc+G7kW5nLCAzPSBjaOG6v3QgdsOsIG5ndXnDqm4gbmjDom4ga2jDoWMqLg0KDQotICAgKipzZXgqKjogR2nhu5tpIHTDrW5oIGPhu6dhIGLhu4duaCBuaMOibi4NCg0KLSAgICoqYWdlKio6IFR14buVaSBj4bunYSBi4buHbmggbmjDom4uDQoNCi0gICAqKnRow61ja25lc3MqKjogxJHhu5kgZMOgeSBraOG7kWkgdSBiYW4gxJHhuqd1ICgqdMOtbmggYuG6sW5nIG1tKikuDQoNCi0gICAqKnVsY2VyKio6IEPDsyBoYXkga2jDtG5nIHbhur90IGxvw6l0IHRyw6puIGRhIGJhbiDEkeG6p3UuDQoNCioqTcOjIGjDs2EgbOG6oWkgZOG7ryBsaeG7h3UgY+G7p2EgYmnhur9uIHN0YXR1cyoqDQoNCsKgwqDCoFbDrCBi4buZIGThu68gbGnhu4d1IHbhu4EgKnVuZyB0aMawIGRhKi0gKiptZWxhbm9tYSoqIGPDsyBiaeG6v24gKipzdGF0dXMqKiB24bubaSBnacOhIHRy4buLIGNoxrBhIMSRxrDhu6NjIG3DoyBow7NhIGNodeG6qW4sIGNow7puZyB0YSBz4bq9ICpjaHV54buDbiDEkeG7lWkgZ2nDoSB0cuG7iyB0cm9uZyBiaeG6v24qIHRow6BuaCBjw6FjIGdpw6EgdHLhu4sgbeG7m2kgxJHhu4MgdHLDoW5oIG5o4bqnbSBs4bqrbjoNCg0KYGBge3J9DQojIENodXnhu4NuIMSR4buVaSBk4buvIGxp4buHdSBj4bunYSBiaeG6v24gc3RhdHVzIDI9PjAsIDM9PjINCk1lbGFub21hIDwtIA0KICBNZWxhbm9tYSAlPiUgDQogIG11dGF0ZShzdGF0dXMgPSBhcy5mYWN0b3IocmVjb2RlKHN0YXR1cywgYDJgID0gMCwgYDFgID0gMSwgYDNgID0gMikpKQ0KIyBIaeG7g24gdGjhu4sgNiBxdWFuIHPDoXQgxJHhuqd1IHRpw6puDQpoZWFkKE1lbGFub21hKQ0KYGBgDQoNCkLDonkgZ2nhu50gY2jDum5nIHRhIGPDszoNCg0KLSAgICoqc3RhdHVzKio6ICowPSBjw7JuIHPhu5FuZywgMT0gY2jhur90IHbDrCB1bmcgdGjGsCBkYSwgMj0gY2jhur90IHbDrCBjw6FjIG5ndXnDqm4gbmjDom4ga2jDoWMqLg0KDQojIyMgNS4xLjIgVOG7tyBs4buHIHTDrWNoIGzFqXkgLSBDdW11bGF0aXZlIGluY2lkZW5jZQ0KDQrCoMKgwqAqKlThu7cgbOG7hyB0w61jaCBsxal5IC0gQ3VtdWxhdGl2ZSBpbmNpZGVuY2UqKiBsw6AgbeG7mXQga2jDoWkgbmnhu4dtIHRyb25nICpwaMOibiB0w61jaCBuZ3V5IGPGoSBj4bqhbmggdHJhbmgqLCDEkcaw4bujYyBz4butIGThu6VuZyDEkeG7gyB0w61uaCB0b8OhbiB04bu3IGzhu4cgeOG6o3kgcmEgY+G7p2EgKm5oaeG7gXUgc+G7sSBraeG7h24gcXVhbiB0w6JtKiAodsOtIGThu6U6IHTDoWkgcGjDoXQgdW5nIHRoxrAgdsOgIGNo4bq/dCkgdHJvbmcgbeG7mXQgbmjDs20gY+G7pSB0aOG7gyB04bqhaSBt4buZdCB0aOG7nWkgxJFp4buDbSBuaOG6pXQgxJHhu4tuaCB0cm9uZyBxdcOhIHRyw6xuaCB0aGVvIGTDtWkuDQoNCkPDtG5nIHRo4bupYyB0w61uaCBU4bu3IGzhu4cgdMOtY2ggbMWpeSDEkcaw4bujYyBjaG8gYuG7n2k6ICoqQ3VtdWxhdGl2ZSBpbmNpZGVuY2UgPSB04buVbmcgc+G7kSBz4buxIGtp4buHbi9z4buRIG5ndXkgY8ahLioqDQoNCsSQ4buDIHXhu5tjIHTDrW5oIHThu7cgbOG7hyB0w61jaCBsxal5IHRyb25nIHLhu6dpIHJvIGPhuqFuaCB0cmFuaCwgY2jDum5nIHRhIHRo4buxYyBoaeG7h24gYuG6sW5nIGPDoWNoIHPhu60gZOG7pW5nIGjDoG0gYGN1bWluYygpYCB04burIHBhY2thZ2UgYHRpZHljbXByc2tgOg0KDQpgYGB7ciwgd2FybmluZz1GQUxTRSwgZXJyb3I9RkFMU0UsIG1lc3NhZ2U9RkFMU0V9DQojIEfhu41pIHBhY2thZ2UgdHlkeWNtcHJzayB04burIHRoxrAgdmnhu4duDQpsaWJyYXJ5KCJ0aWR5Y21wcnNrIikNCiMgxq/hu5tjIHTDrW5oIHThu7cgbOG7hyB0w61jaCBsxal5DQpjdW1pbmMoU3Vydih0aW1lLCBzdGF0dXMpIH4gMSwgZGF0YSA9IE1lbGFub21hKQ0KYGBgDQoNCsKgwqDCoENow7puZyB0YSBjw7MgdGjhu4Mgc+G7rSBk4bulbmcgaMOgbSBgZ2djdW1pbmMoKWAgdOG7qyBwYWNrYWdlIGBnZ3N1cnZmaXRgIMSR4buDIHbhur0gYmnhu4N1IMSR4buTIHThu7cgbOG7hyB0w61jaCBsxal5LiBUaGVvIG3hurdjIMSR4buLbmgsIG7DsyBjaOG7iSB24bq9IHPGoSDEkeG7kyBsb+G6oWkgc+G7sSBraeG7h24gxJHhuqd1IHRpw6puLiBWw6wgduG6rXksIGJp4buDdSDEkeG7kyBzYXUgxJHDonkgY2hvIHRo4bqleSB04bu3IGzhu4cgdOG7rSB2b25nIHTDrWNoIGzFqXkgZG8gdW5nIHRoxrAgZGE6DQoNCmBgYHtyLCB3YXJuaW5nPUZBTFNFLCBlcnJvcj1GQUxTRSwgbWVzc2FnZT1GQUxTRX0NCiMgR+G7jWkgcGFja2FnZSBnZ3N1cnZmaXQgdOG7qyB0aMawIHZp4buHbg0KbGlicmFyeSgiZ2dzdXJ2Zml0IikNCiMgVuG6vSDEkeG7kyB0aOG7iyB24bubaSBi4bqjbmcgYXQgcmljayB2w6Aga2hv4bqjbmcgdGluIGPhuq15IA0KY3VtaW5jKFN1cnYodGltZSwgc3RhdHVzKSB+IDEsIGRhdGEgPSBNZWxhbm9tYSkgJT4lIA0KICBnZ2N1bWluYygpICsgDQogIGxhYnMoDQogICAgeCA9ICJEYXlzIg0KICApICsgDQogIGFkZF9jb25maWRlbmNlX2ludGVydmFsKCkgKw0KICBhZGRfcmlza3RhYmxlKCkNCmBgYA0KDQrCoMKgwqBOZ2/DoGkgcmEsIGNow7puZyB0YSBjw7MgdGjhu4MgdGjhu4MgaGnhu4duIGPhuqMgaGFpIGxv4bqhaSBz4buxIGtp4buHbiBsw6AgY2jhur90IHbDrCB1bmcgdGjGsCBkYSB2w6AgY2jhur90IHbDrCBuZ3V5w6puIG5ow6JuIGtow6FjLCB0YSB0aOG7sWMgaGnhu4duIG5oxrAgc2F1Og0KDQpgYGB7cn0NCiMgdOG7tyBs4buHIHTDrWNoIGzFqXkgbmd1eSBjxqEgY+G7p2EgY2jhur90IHbDrCB1bmcgdGjGsCBkYSB2w6AgY2jhur90IHbDrCBuZ3V5w6puIG5ow6JuIGtow6FjDQpjdW1pbmMoU3Vydih0aW1lLCBzdGF0dXMpIH4gMSwgZGF0YSA9IE1lbGFub21hKSAlPiUgDQogIGdnY3VtaW5jKG91dGNvbWUgPSBjKCIxIiwgIjIiKSkgKw0KICB5bGltKGMoMCwgMSkpICsgbGFicyh4ID0gIkRheXMiKQ0KYGBgDQoNCsKgwqDCoELDonkgZ2nhu50sIGdp4bqjIHPhu60gY2jDum5nIHRhICptdeG7kW4ga2nhu4NtIHRyYSBjw6FpIGNo4bq/dCBkbyB1bmcgdGjGsCBkYSBob+G6t2MgY8OhYyBuZ3V5w6puIG5ow6JuIGtow6FjKiB0cm9uZyBk4buvIGxp4buHdSB0aGVvIGJp4bq/biAqKnVsY2VyKio6ICpDw7MgaGF5IGtow7RuZyB24bq/dCBsb8OpdCB0csOqbiBkYSBiYW4gxJHhuqd1KiAoKiowPWtow7RuZywgMT1jw7MqKikuIENow7puZyB0YSBjw7MgdGjhu4MgxrDhu5tjIHTDrW5oIHThu7cgbOG7hyB0w61jaCBsxal5IHThuqFpIGPDoWMgdGjhu51pIMSRaeG7g20ga2jDoWMgbmhhdSB0aGVvIG5ow7NtIHbDoCBoaeG7g24gdGjhu4sgdOG7tyBs4buHIMSRw7MgdHJvbmcgYuG6o25nIGPDoWNoIHPhu60gZOG7pW5nIGjDoG0gYHRibF9jdW1pbmMoKWAgdOG7qyBnw7NpIHBhY2thZ2UgYHRpZHljbXByc2tgIMSR4buDIGtp4buDbSB0cmEgc+G7sSBraMOhYyBiaeG7h3QgZ2nhu69hIGPDoWMgbmjDs20gdHJvbmcgdG/DoG4gYuG7mSB0aOG7nWkgZ2lhbiB0aGVvIGTDtWkgYuG6sW5nIGPDoWNoIHPhu60gZOG7pW5nIGjDoG0gYGFkZF9wKClgOg0KDQpgYGB7cn0NCiMgdOG7tyBs4buHIHTDrWNoIGzFqXkgbmd1eSBjxqEgY+G7p2EgY2jhur90IHbDrCB1bmcgdGjGsCBkYSB2w6AgY2jhur90IHbDrCBuZ3V5w6puIG5ow6JuIGtow6FjIG5oxrBuZyBjw7MgeeG6v3UgdOG7kSB24bq/dCBsb8OpdA0KY3VtaW5jKFN1cnYodGltZSwgc3RhdHVzKSB+IHVsY2VyLCBkYXRhID0gTWVsYW5vbWEpICU+JSANCiAgdGJsX2N1bWluYygNCiAgICB0aW1lcyA9IDE4MjYuMjUsIA0KICAgIGxhYmVsX2hlYWRlciA9ICIqKnt0aW1lLzM2NS4yNX0teWVhciBjdW1pbmMqKiIpICU+JSANCiAgYWRkX3AoKQ0KYGBgDQoNCsKgwqDCoFNhdSDEkcOzLCBjaMO6bmcgdGEgY8OzIHRo4buDIHRo4bqleSDEkeG7kyB0aOG7iyB24buBIGPDoWkgY2jhur90IGRvIHVuZyB0aMawIGRhLCB0aGVvIHTDrG5oIHRy4bqhbmcgduG6v3QgbG/DqXQsIGNow7puZyB0YSBz4butIGThu6VuZyBgZ2djdW1pbmMoKWAgdOG7qyBwYWNrYWdlIGBnZ3N1cnZmaXRgOg0KDQpgYGB7cn0NCmN1bWluYyhTdXJ2KHRpbWUsIHN0YXR1cykgfiB1bGNlciwgZGF0YSA9IE1lbGFub21hKSAlPiUgDQogIGdnY3VtaW5jKCkgKyANCiAgbGFicygNCiAgICB4ID0gIkRheXMiDQogICkgKyANCiAgYWRkX2NvbmZpZGVuY2VfaW50ZXJ2YWwoKSArDQogIGFkZF9yaXNrdGFibGUoKQ0KYGBgDQoNCiMjIyA1LjEuMyBI4buTaSBxdXkgQ294IHRyb25nIG5ndXkgY8ahIGPhuqFuaCB0cmFuaA0KDQrCoMKgwqBHaeG6oyBz4butIGNow7puZyB0YSBxdWFuIHTDom0gxJHhur9uIHZp4buHYyB4ZW0geMOpdCDhuqNuaCBoxrDhu59uZyBj4bunYSB0deG7lWkgdMOhYyB2w6AgZ2nhu5tpIHTDrW5oIMSR4buRaSB24bubaSBjw6FpIGNo4bq/dCBkbyB1bmcgdGjGsCBkYSwgduG7m2kgY8OhaSBjaOG6v3QgZG8gY8OhYyBuZ3V5w6puIG5ow6JuIGtow6FjIGzDoCBt4buZdCBz4buxIGtp4buHbiBj4bqhbmggdHJhbmguDQoNCkjDoG0gYGNycigpYCB04burIHBhY2thZ2UgYHRpZHljbXByc2tgIHPhur0gxrDhu5tjIHTDrW5oIGPDoWMgbmd1eSBjxqEgcGjDom4gcGjhu5FpIHBo4bulOg0KDQpgYGB7ciwgd2FybmluZz1GQUxTRSwgZXJyb3I9RkFMU0UsIG1lc3NhZ2U9RkFMU0V9DQojIHThuqFvIG3DtCBow6xuaCBjb3ggduG7m2kgMiB54bq/dSB04buRIGzDoCBnaeG7m2kgdMOtbmggdsOgIHR14buVaQ0KY3JyKFN1cnYodGltZSwgc3RhdHVzKSB+IHNleCArIGFnZSwgZGF0YSA9IE1lbGFub21hKQ0KYGBgDQoNClbDoCBjaMO6bmcgdGEgY8OzIHRo4buDIHThuqFvIGPDoWMgYuG6o25nIGvhur90IHF14bqjIMSRxrDhu6NjIMSR4buLbmggZOG6oW5nIGLhurFuZyBjw6FjaCBz4butIGThu6VuZyBow6BtIGB0YmxfcmVncmVzc2lvbigpYCB04burIHBhY2thZ2UgYGd0c3VtbWFyeWAsIHbhu5tpIHTDuXkgY2jhu41uIGBleHAgPSBUUlVFYCDEkeG7gyBjw7MgxJHGsOG7o2MgxrDhu5tjIHTDrW5oIHThu7cgbOG7hyBy4bunaSBybzoNCg0KYGBge3J9DQojICsgdHLhuqMgduG7gSB04bu3IGzhu4cgbmd1eSBjxqEgdMOtY2ggbMWpeQ0KY3JyKFN1cnYodGltZSwgc3RhdHVzKSB+IHNleCArIGFnZSwgZGF0YSA9IE1lbGFub21hKSAlPiUgDQogIHRibF9yZWdyZXNzaW9uKGV4cCA9IFRSVUUpDQpgYGANCg0KwqDCoMKgS+G6v3QgcXXhuqMgY2hvIHRo4bqleTogKkdp4bubaSB0w61uaCBuYW0qICoqKDE9bmFtLCAwPW7hu68pKiogKmPDsyBsacOqbiBxdWFuIMSRw6FuZyBr4buDKiDEkeG6v24gdmnhu4djIHTEg25nIG5ndXkgY8ahIHThu60gdm9uZyBkbyBraOG7kWkgdSDDoWMgdMOtbmggKCoqdsOsIHAtdmFsdWU9MC4wM1w8MC4wNSoqKSwgdHJvbmcga2hpICp0deG7lWkgdMOhYyogKmtow7RuZyBsacOqbiBxdWFuIMSRw6FuZyBr4buDKiDEkeG6v24gdOG7rSB2b25nIGRvIGto4buRaSB1IMOhYyB0w61uaCAoKip2w6wgcC12YWx1ZT0wLjJcPjAuMDUqKikuDQoNCiMjIDUuMiBUcuG7sWMgcXVhbiBow7NhIMSRxrDhu51uZyBjb25nIHThu4kgbOG7hyB04butIHZvbmcgLSBGaXQgY29tcGxleCBzdXJ2aXZhbCBjdXJ2ZXMNCg0KwqDCoMKgKioiRml0IGNvbXBsZXggc3Vydml2YWwgY3VydmVzIioqIGPDsyB0aOG7gyDEkcaw4bujYyBk4buLY2ggc2FuZyB0aeG6v25nIFZp4buHdCBsw6AgKioixJDGsOG7nW5nIGNvbmcgdOG7iSBs4buHIHThu60gdm9uZyIqKi4gxJDDonkgbMOgIG3hu5l0IHRodeG6rXQgbmfhu68gdHJvbmcgcGjDom4gdMOtY2ggc+G7kW5nIGPDsm4gKCoqKnN1cnZpdmFsIGFuYWx5c2lzKioqKSDEkeG7gyBtw7QgaMOsbmggaMOzYSBk4buvIGxp4buHdSB0aOG7nWkgZ2lhbiBz4buxIGtp4buHbiBwaOG7qWMgdOG6oXAsIHRyb25nIMSRw7Mgc+G7sSBraeG7h24gY8OzIHRo4buDIHjhuqN5IHJhIOG7nyBuaGnhu4F1IGzhuqduIGtow6FjIG5oYXUgaG/hurdjIGPDsyBuaGnhu4F1IG5ndXnDqm4gbmjDom4ga2jDoWMgbmhhdSBk4bqrbiDEkeG6v24gc+G7sSBraeG7h24geOG6o3kgcmEuDQoNCsKgwqDCoENow7puZyB0YSB24bqrbiBz4bq9IHPhu60gZOG7pW5nIGThu68gbGnhu4d1IHVuZyB0aMawIHBo4buVaSAtIGx1bmcgY2hvIHZp4buHYyB0cuG7sWMgcXVhbiBow7NhIMSRxrDhu51uZyB04buJIGzhu4cgdOG7rSB2b25nLiBDaMO6bmcgdGEgc+G6vSB04bqhbyBt4buZdCBi4bqjbmcgY8OhYyDEkcaw4budbmcgY29uZyBz4buRbmcgc8OzdCB0aGVvIGdp4bubaSB0w61uaCDEkcaw4bujYyBwaMOibiBjaGlhIHRoZW8gMiB54bq/dSB04buRLiBC4bqjbmcgY8OhYyDEkeG7kyB0aOG7iyB0cuG7sWMgcXVhbiDEkcaw4bujYyB0aOG7sWMgaGnhu4duIG5oxrAgc2F1Og0KDQpgYGB7cn0NCmZpdHggPC0gc3VydmZpdCggU3Vydih0aW1lLCBzdGF0dXMpIH4gc2V4ICsgYWdlX2dyb3VwICsgcGguZWNvZywNCiAgICAgICAgICAgICAgICBkYXRhID0gbHVuZyApDQpgYGANCg0KYGBge3J9DQpnZ3N1cnYgPC0gZ2dzdXJ2cGxvdChmaXR4LCBmdW4gPSAiZXZlbnQiLCBjb25mLmludCA9IFRSVUUsDQogICAgICAgICAgICAgICAgICAgICBnZ3RoZW1lID0gdGhlbWVfYncoKSkNCiAgIA0KZ2dzdXJ2JHBsb3QgK3RoZW1lX2J3KCkgKyANCiAgdGhlbWUgKGxlZ2VuZC5wb3NpdGlvbiA9ICJyaWdodCIpKw0KICBmYWNldF9ncmlkKGFnZV9ncm91cCB+IHBoLmVjb2cpDQpgYGANCg0KwqDCoMKgVOG7qyBi4bqjbmcgY8OhYyDEkeG7kyB0aOG7iywgdGEgdGjhuqV5IMSR4buTIHRo4buLIDEgdGh14buZYyBuaMOzbSA1MCDEkeG6v24gNjAgdHXhu5VpIHbDoCBjw7MgbeG7qWMgxJHhu5kgc3V5IGdp4bqjbSBjaOG7qWMgbsSDbmcgcGjhu5VpID0gMCB2w6AgY8OzIDIgxJHGsOG7nW5nIGNvbmcgdOG7iSBs4buHIHThu60gdm9uZyBsw6AgZ2nhu5tpIHTDrW5oIG5hbSB2w6AgbuG7ry4NCg0KDQojIDYgw4FQIEThu6RORyBQSMOCTiBUw41DSCBT4buQTkcgU8OTVCBW4buaSSBQQUNLQUdFIFNVUlZJVkFMDQoNCg0KIyMgNi4xIMSQ4buLbmggcGjDrSBi4bqjbyBoaeG7g20NCg0KQ2jDum5nIHRhIHPhur0gc+G7rSBk4bulbmcgZOG7ryBsaeG7h3UgduG7gSB4w6FjIHN14bqldCBz4buRbmcgc8OzdCBj4bunYSBk4buvIGxp4buHdSB1bmcgdGjGsCBwaOG7lWkgKHhlbSBwaOG6p24gNC4xKSDEkeG7gyDDoXAgZOG7pW5nIHbDoG8gxJHhu4tuaCBnacOhIGLhuqNvIGhp4buDbSDEkWnhu4F1IHRy4buLIHVuZyB0aMawIHBo4buVaS4gDQoNCkLhurFuZyBjw6FjaCB4ZW0geMOpdCBjw6FjIMSR4buTIHRo4buLIMSRxrDhu51uZyBjb25nIHPhu5FuZyBzw7N0IHRyb25nIFIgdsOgIHBow6JuIHTDrWNoIGPDoWMgY2jhu4kgc+G7kSBsacOqbiBxdWFuLCB0w7RpIMSRw6MgeMOieSBk4buxbmcgbeG7mXQgbcO0IGjDrG5oIMSR4buLbmggZ2nDoSBi4bqjbyBoaeG7g20gaOG7lyB0cuG7oyDEkWnhu4F1IHRy4buLIHVuZyB0aMawIHBo4buVaSBt4buZdCBjw6FjaCBjaMOtbmggeMOhYy4gDQoNCk3DtCBow6xuaCBuw6B5IGNobyBwaMOpcCB0w61uaCB0b8OhbiBt4bupYyDEkeG7mSBy4bunaSBybyB2w6AgeMOhYyDEkeG7i25oIGPDoWMga2hv4bqjbiBi4buTaSB0aMaw4budbmcgcGjDuSBo4bujcCBk4buxYSB0csOqbiB4w6FjIHN14bqldCBz4buRbmcgc8OzdCBj4bunYSBuZ8aw4budaSDEkcaw4bujYyBi4bqjbyBoaeG7g20uIFZp4buHYyDDoXAgZOG7pW5nIGThu68gbGnhu4d1IHjDoWMgc3XhuqV0IHPhu5FuZyBzw7N0IHbDoG8gxJHhu4tuaCBnacOhIGLhuqNvIGhp4buDbSBnacO6cCB0xINuZyB0w61uaCBjw7RuZyBi4bqxbmcgdsOgIGNow61uaCB4w6FjIHRyb25nIHZp4buHYyDEkeG7i25oIGdpw6EgY8OhYyBjaMOtbmggc8OhY2ggYuG6o28gaGnhu4NtIMSRaeG7gXUgdHLhu4sgdW5nIHRoxrAuDQoNCk5oxrAgduG6rXksIGPDtG5nIHRo4bupYyDEkeG7i25oIHBow60gYuG6o28gaGnhu4NtIGjhu5cgdHLhu6MgxJFp4buBdSB0cuG7iyB1bmcgdGjGsCBwaOG7lWkgY8OzIHRo4buDIHPhu60gZOG7pW5nIG3hu5l0IHBoxrDGoW5nIHRyw6xuaCDEkcahbiBnaeG6o246DQoNClBow60gYuG6o28gaGnhu4NtID0gUGjDrSDEkWnhu4F1IHRy4buLIG3hu5dpIG5nw6B5IHggVGjhu51pIGdpYW4gc+G7kW5nIHPDs3QgdHJ1bmcgYsOsbmgNCg0KQ2jDum5nIHRhIHPhur0gxJHhurd0IGdp4bqjIHRoaeG6v3QgbmjGsCBzYXU6DQoNCi0gS2jDtG5nIGPDsyB0w6xuaCB0cuG6oW5nIGzhuqFtIHBow6F0IHjhuqN5IHJhLg0KDQotIFBow60gxJFp4buBdSB0cuG7iyBuaMawIG5oYXUgKCB2w60gZOG7pSA1MDBrL25nw6B5KQ0KDQotIMSQ4buRaSB0xrDhu6NuZyBtdWEgYuG6o28gaGnhu4NtOiBi4buHbmggbmjDom4gYuG7iyB1bmcgdGjGsCAtIGjhu5cgdHLhu6MgY2hpIHBow60gxJFp4buBdSB0cuG7iyBjaG8gdOG7m2kga2hpIGNo4bq/dC4NCg0KTmjGsCB24bqteSwgxJHhu4MgxJHhu4tuaCBwaMOtIGLhuqNvIGhp4buDbSBo4buXIHRy4bujIHVuZyB0aMawIHBo4buVaSwgdGEgY+G6p24gdMOtbmggdGjhu51pIGdpYW4gc+G7kW5nIHPDs3QgdHJ1bmcgYsOsbmg6DQoNCmBgYHtyfQ0KZml0IDwtIGNveHBoKFN1cnYodGltZSwgc3RhdHVzKSB+IDEsIGRhdGEgPSBsdW5nKQ0KcHJpbnQobWVkaWFuKHN1cnZmaXQoZml0KSR0aW1lKSkNCmBgYA0KDQpL4bq/dCBxdeG6ozogUGjDrSBi4bqjbyBoaeG7g20gPSA1MDAuMDAwKjI3ND0gMTM3LjAwMC4wMDANCg0KTmjGsCB24bqteSwgY2jDum5nIHRhIGPhuqduIGLDoW4gYuG6o28gaGnhu4NtIGjhu5cgdHLhu6MgxJFp4buBdSB0cuG7iyB1bmcgdGjGoSB24bubaSBt4bupYyBnacOhIHRyw6puIDEzNyB0cmnhu4d1DQoNCk5nb8OgaSByYSwgYuG6sW5nIGPDoWNoIHPhu60gZOG7pW5nIHBhY2thZ2Ugc3Vydml2YWwgdsOgIHBow6JuIHTDrWNoIHPhu5FuZyBzw7N0LCBjaMO6bmcgdGEgY8OzIHRo4buDIMSRxrBhIHJhIHBow60gYuG6o28gaGnhu4NtIGtow6FjIG5oYXUgY2hvIHThu6tuZyBuaMOzbSBraMOhY2ggaMOgbmcuDQoNCiMjIDYuMiBOZ8Ogbmggc+G6o24geHXhuqV0IHPhuqNuIHBo4bqpbQ0KDQpUcm9uZyBz4bqjbiB4deG6pXQgc+G6o24gcGjhuqltLCBwaMOibiB0w61jaCBz4buRbmcgc8OzdCBjw7MgdGjhu4MgxJHGsOG7o2Mgw6FwIGThu6VuZyDEkeG7gyB4w6FjIMSR4buLbmggY2jhuqV0IGzGsOG7o25nIGPhu6dhIHPhuqNuIHBo4bqpbSBk4buxYSB0csOqbiB2aeG7h2Mga2nhu4NtIHRyYSBt4buZdCBz4buRIGzGsOG7o25nIHPhuqNuIHBo4bqpbSBt4bqrdS4NCg0KxJDhu4MgdGjhu7FjIGhp4buHbiBwaMOibiB0w61jaCBz4buRbmcgc8OzdCBjaG8gbmfDoG5oIHPhuqNuIHh14bqldCBz4bqjbiBwaOG6qW0sIHTDtGkgc+G6vSBkw7luZyBk4buvIGxp4buHdSBsaWdodGJ1bGIgduG7gSAyIG5ow7NtIGLDs25nIMSRw6huOiBodeG7s25oIHF1YW5nIHbDoCBz4bujaSDEkeG7kXQNCg0KDQpgYGB7ciwgd2FybmluZz1GQUxTRSwgZXJyb3I9RkFMU0UsIG1lc3NhZ2U9RkFMU0V9DQpsaWJyYXJ5KHJlYWR4bCkNCmxpZ2h0YnVsYiA8LSByZWFkX2V4Y2VsKCJsaWdodGJ1bGIueGxzeCIpDQpgYGANCg0KTGlnaHRidWxiIGzDoCBk4buvIGxp4buHdSAgxJHGsOG7o2MgdMO0aSBs4bqleSB04burIGThu68gbGnhu4d1IG3huqt1IGPhu6dhIHBo4bqnbiBt4buBbSBNQVRMQUIgKHBo4bqnbiBt4buBbSBjdW5nIGPhuqVwIG3DtGkgdHLGsOG7nW5nIHTDrW5oIHRvw6FuIHPhu5EgdsOgIGzhuq1wIHRyw6xuaCwgZG8gY8O0bmcgdHkgTWF0aFdvcmtzIHRoaeG6v3Qga+G6vykgdsOgIMSRw6MgxJHGsOG7o2MgdMO0aSBsxrB1IHbDoG8gZXhjZWwNCg0KDQoNCmBgYHtyfQ0KbGlnaHRidWxiIDwtIGxpZ2h0YnVsYiAlPiUgbXV0YXRlKHN0YXR1cyA9IHJlY29kZShzdGF0dXMsICcxJyA9IDAsICcwJyA9IDEpKQ0KaGVhZChsaWdodGJ1bGIpDQpgYGANClRyb25nIMSRw7M6DQoNCi0gVGltZTogROG7ryBsaeG7h3UgdHXhu5VpIHRo4buNICh0w61uaCBi4bqxbmcgZ2nhu50pIGPhu6dhIGhhaSBsb+G6oWkgYsOzbmcgxJHDqG4NCi0gU3RhdHVzOiBUaMO0bmcgdGluIGtp4buDbSBkdXnhu4d0IHbhu5tpIDA9IGNoxrBhIHh14bqldCBoaeG7h24gbOG7l2kgdsOgIDE9IMSRw6MgeHXhuqV0IGhp4buHbiBs4buXaQ0KLSBUeXBlOiBsb+G6oWkgYsOzbmcgxJHDqG4gduG7m2kgMD0gxJHDqG4gaHXhu7NuaCBxdWFuZywgMT0gxJHDqG4gc+G7o2kgxJHhu5F0DQoNClRhIGPDsyDEkeG7kyB0aOG7iyDEkcaw4budbmcgY29uZyBz4buRbmcgc8OzdCBj4bunYSAyIGxv4bqhaSBiw7NuZyDEkcOobiBuaMawIHNhdToNCg0KYGBge3J9DQpib25nZGVuIDwtIHN1cnZmaXQoU3Vydih0aW1lLCBzdGF0dXMpIH4gdHlwZSwgZGF0YSA9IGxpZ2h0YnVsYikNCnBsb3QoYm9uZ2RlbiwgbWFpbiA9ICLEkMaw4budbmcgY29uZyBraMO0bmcgZ+G6t3AgbOG7l2kgY+G7p2EgYsOzbmcgxJHDqG4gIiwgeGxhYiA9ICJUaOG7nWkgZ2lhbiAoZ2nhu50pIiwgeWxhYiA9ICJYw6FjIHN14bqldCBraMO0bmcgZ+G6t3AgbOG7l2kiKQ0KYGBgDQoNCkNow7puZyB0YSBjw7MgdGjhu4MgdGjhuqV5IHLhurFuZyB4w6FjIHN14bqldCBn4bq3cCBs4buXaSBj4bunYSBiw7NuZyDEkcOobiBz4bujaSDEkeG7kXQgY2FvIGjGoW4gbmhp4buBdSBzbyB24bubaSBiw7NuZyDEkcOobiBodeG7s25oIHF1YW5nLg0KDQoNCg0KIyA3IFBI4bqmTiBL4bq+VCBMVeG6rE4NCg0KIyMgNy4xIMavdSDEkWnhu4NtIGPhu6dhIHBhY2thZ2Ugc3Vydml2YWwNCg0KLSAgIFBow7kgaOG7o3AgduG7m2kgbmhp4buBdSBsb+G6oWkgZOG7ryBsaeG7h3U6IFBhY2thZ2UgInN1cnZpdmFsIiBjw7MgdGjhu4MgxJHGsOG7o2Mgc+G7rSBk4bulbmcgY2hvIG5oaeG7gXUgbG/huqFpIGThu68gbGnhu4d1IHBow6JuIHTDrWNoIHPhu5FuZyBjw7JuLCBiYW8gZ+G7k20gZOG7ryBsaeG7h3UgY2Vuc29yZWQsIGThu68gbGnhu4d1IHPhu7Ega2nhu4duIHLhu51pIHLhuqFjIHbDoCBk4buvIGxp4buHdSBraMO0bmcgY2Vuc29yZWQuDQoNCi0gICDEkOG7mSB0aW4gY+G6rXkgY2FvOiBDw6FjIG3DtCBow6xuaCBzdXJ2aXZhbCBwaMOibiB0w61jaCBk4buvIGxp4buHdSB0aOG7nWkgZ2lhbiDEkeG6v24gc+G7sSBraeG7h24gdGjGsOG7nW5nIMSRxrDhu6NjIHPhu60gZOG7pW5nIHRyb25nIGPDoWMgbmdoacOqbiBj4bupdSB5IHThur8gdsOgIGtpbmggdOG6vyBo4buNYywgdsOgIHBhY2thZ2UgInN1cnZpdmFsIiBjdW5nIGPhuqVwIGPDoWMgY8O0bmcgY+G7pSB2w6AgaMOgbSDEkeG7gyBwaMOibiB0w61jaCBjw6FjIG3DtCBow6xuaCBuw6B5IHbhu5tpIMSR4buZIHRpbiBj4bqteSBjYW8uDQoNCi0gICBDdW5nIGPhuqVwIGPDoWMgY8O0bmcgY+G7pSDEkeG7gyDEkcOhbmggZ2nDoSBt4buRaSBxdWFuIGjhu4cgZ2nhu69hIGPDoWMgYmnhur9uIHbDoCB0aOG7nWkgZ2lhbiBjaG8gxJHhur9uIHPhu7Ega2nhu4duOiBQYWNrYWdlICJzdXJ2aXZhbCIgY3VuZyBj4bqlcCBjw6FjIGPDtG5nIGPhu6UgxJHhu4MgxJHDoW5oIGdpw6EgbeG7kWkgcXVhbiBo4buHIGdp4buvYSBjw6FjIGJp4bq/biB2w6AgdGjhu51pIGdpYW4gY2hvIMSR4bq/biBz4buxIGtp4buHbiwgYmFvIGfhu5NtIHBow6JuIHTDrWNoIENveCBwcm9wb3J0aW9uYWwgaGF6YXJkcyB2w6AgdMOtbmggdG/DoW4gc3Vydml2YWwgZnVuY3Rpb24uDQoNCi0gICBUw61jaCBo4bujcCB04buRdCB24bubaSBjw6FjIHBhY2thZ2Uga2jDoWMgdHJvbmcgUjogUGFja2FnZSAic3Vydml2YWwiIHTDrWNoIGjhu6NwIHThu5F0IHbhu5tpIGPDoWMgcGFja2FnZSBraMOhYyB0cm9uZyBSLCBjaG8gcGjDqXAgcGjDom4gdMOtY2ggZOG7ryBsaeG7h3UgcGjDom4gdMOtY2ggc+G7kW5nIGPDsm4gdsOgIMSRw6FuaCBnacOhIG3hu5FpIHF1YW4gaOG7hyBnaeG7r2EgY8OhYyBiaeG6v24gdsOgIHRo4budaSBnaWFuIGNobyDEkeG6v24gc+G7sSBraeG7h24gdHJvbmcgbmhp4buBdSBuZ+G7ryBj4bqjbmgga2jDoWMgbmhhdS4NCg0KIyMgNy4yIE5oxrDhu6NjIMSRaeG7g20gY+G7p2EgcGFja2FnZSBzdXJ2aXZhbA0KDQotICAgS2jDsyBz4butIGThu6VuZyBjaG8gbmfGsOG7nWkgbeG7m2kgYuG6r3QgxJHhuqd1OiBQYWNrYWdlICJzdXJ2aXZhbCIgY8OzIG5oaeG7gXUgaMOgbSB2w6AgdGhhbSBz4buRIHBo4bupYyB04bqhcCwgZG8gxJHDsyBjw7MgdGjhu4Mga2jDsyBz4butIGThu6VuZyBjaG8gbmfGsOG7nWkgbeG7m2kgYuG6r3QgxJHhuqd1IHPhu60gZOG7pW5nIFIgaG/hurdjIHBow6JuIHTDrWNoIGThu68gbGnhu4d1IHRo4budaSBnaWFuIMSR4bq/biBz4buxIGtp4buHbi4NCg0KLSAgIMSQw7JpIGjhu49pIGtp4bq/biB0aOG7qWMgduG7gSBwaMOibiB0w61jaCBz4buRbmcgc8OzdDogUGFja2FnZSAic3Vydml2YWwiIMSRw7JpIGjhu49pIGtp4bq/biB0aOG7qWMgY2h1ecOqbiBzw6J1IHbhu4EgcGjDom4gdMOtY2ggZOG7ryBsaeG7h3UgcGjDom4gdMOtY2ggc+G7kW5nIHPDs3QgdsOgIGPDoWMgbcO0IGjDrG5oIHN1cnZpdmFsLCBkbyDEkcOzIGtow7RuZyBwaMO5IGjhu6NwIGNobyBuaOG7r25nIG5nxrDhu51pIGtow7RuZyBjw7MgbuG7gW4gdOG6o25nIGtp4bq/biB0aOG7qWMgxJHhuqd5IMSR4bunLg0KDQotICAgQ8OzIHRo4buDIGfhurdwIHbhuqVuIMSR4buBIHbhu5tpIGThu68gbGnhu4d1IHRoaeG6v3U6IFBhY2thZ2UgInN1cnZpdmFsIiBjw7MgdGjhu4MgZ+G6t3AgduG6pW4gxJHhu4Ega2hpIHBow6JuIHTDrWNoIGThu68gbGnhu4d1IHRo4budaSBnaWFuIMSR4bq/biBz4buxIGtp4buHbiBjw7MgZOG7ryBsaeG7h3UgdGhp4bq/dSBob+G6t2MgZOG7ryBsaeG7h3UgY2Vuc29yZWQgbmhp4buBdSwgZG8gxJHDsyBj4bqnbiBwaOG6o2kgeOG7rSBsw70ga+G7uSB0csaw4bubYyBraGkgcGjDom4gdMOtY2guDQoNCi0gICBLaMO0bmcgcGjDuSBo4bujcCBjaG8gY8OhYyBuZ2hpw6puIGPhu6l1IHF1YW4gc8OhdCBuZ+G6r24gaOG6oW46IFBhY2thZ2UgInN1cnZpdmFsIiB0aMaw4budbmcgxJHGsOG7o2Mgc+G7rSBk4bulbmcgxJHhu4MgcGjDom4gdMOtY2ggZOG7ryBsaeG7h3UgdGjhu51pIGdpYW4gxJHhur9uIHPhu7Ega2nhu4duIHRyb25nIGPDoWMgbmdoacOqbiBj4bupdSBxdWFuIHPDoXQgZMOgaSBo4bqhbiwgZG8gxJHDsyBraMO0bmcgcGjDuSBo4bujcCBjaG8gY8OhYyBuZ2hpw6puIGPhu6l1IHF1YW4gc8OhdCBuZ+G6r24gaOG6oW4uDQoNCiMjIDcuMyDDnSBuZ2jEqWEgY+G7p2EgcGjDom4gdMOtY2ggc+G7kW5nIGPDsm4NCg0KLSAgICoqVHJvbmcgeSBo4buNYyoqOiBQaMOibiB0w61jaCBz4buRbmcgc8OzdCDEkcaw4bujYyBz4butIGThu6VuZyB0cm9uZyBuZ2hpw6puIGPhu6l1IHkgaOG7jWMgxJHhu4MgxJHDoW5oIGdpw6EgdMOhYyDEkeG7mW5nIGPhu6dhIGPDoWMgeeG6v3UgdOG7kSBraMOhYyBuaGF1IMSR4bq/biBz4buxIGtp4buHbiBxdWFuIHRy4buNbmcgbmjGsCB04butIHZvbmcsIGLhu4duaCBsw70sIHTDoWkgcGjDoXQgYuG7h25oLCB2w6AgdGjhu51pIGdpYW4gc+G7kW5nIHPDs3QuIE7DsyBjw7MgdGjhu4MgZ2nDunAgY8OhYyBuaMOgIG5naGnDqm4gY+G7qXUgcGjDom4gdMOtY2ggdsOgIMSRxrBhIHJhIGThu7EgYsOhbyB24buBIG5ndXkgY8ahIG3huq9jIGLhu4duaCwgdOG7kWMgxJHhu5kgdGnhur9uIHRyaeG7g24gYuG7h25oIHbDoCBk4buxIGLDoW8gdGjhu51pIGdpYW4gc+G7kW5nIHPDs3QuDQoNCi0gICAqKlRyb25nIGtpbmggdOG6vyBo4buNYyoqOiBQaMOibiB0w61jaCBz4buRbmcgc8OzdCBjxaluZyDEkcaw4bujYyBz4butIGThu6VuZyB0cm9uZyBraW5oIHThur8gaOG7jWMgxJHhu4MgxJHDoW5oIGdpw6EgdMOhYyDEkeG7mW5nIGPhu6dhIGPDoWMgY2jDrW5oIHPDoWNoIHbDoCBjw6FjIHnhur91IHThu5Ega2jDoWMgxJHhur9uIHPhu7Ega2nhu4duIHF1YW4gdHLhu41uZyBuaMawIHRo4budaSBnaWFuIHRo4bqldCBuZ2hp4buHcCwgdGjhu51pIGdpYW4gbmdo4buJIGjGsHUsIHbDoCB0aOG7nWkgZ2lhbiBraW5oIGRvYW5oIGPhu6dhIG3hu5l0IGRvYW5oIG5naGnhu4dwLg0KDQotICAgKipUcm9uZyBuZ2hpw6puIGPhu6l1IHjDoyBo4buZaSoqOiBQaMOibiB0w61jaCBz4buRbmcgc8OzdCBjxaluZyBjw7MgZ2nDoSB0cuG7iyB0cm9uZyBuZ2hpw6puIGPhu6l1IHjDoyBo4buZaSwgZ2nDunAgY8OhYyBuaMOgIG5naGnDqm4gY+G7qXUgxJHDoW5oIGdpw6EgdMOhYyDEkeG7mW5nIGPhu6dhIGPDoWMgeeG6v3UgdOG7kSBraMOhYyDEkeG6v24gc+G7sSBraeG7h24gcXVhbiB0cuG7jW5nIG5oxrAgdGjhu51pIGdpYW4gY2h1eeG7g24gxJHhu5VpIHZp4buHYyBsw6BtLCB0aOG7nWkgZ2lhbiBr4bq/dCBow7RuIGhv4bq3YyBseSBow7RuLCB2w6AgdGjhu51pIGdpYW4gc+G7kW5nIHPDs3QgY+G7p2EgbeG7mXQgbmjDs20gbmfGsOG7nWkuDQoNCiAgICBUdXkgbmhpw6puLCBiw6BpIHRp4buDdSBsdeG6rW4gbsOgeSBjaOG7iSB0aOG7sWMgaMOgbmggcGjDom4gdMOtY2ggc3Vydml2YWwgYW5hbHlzaXMgduG7m2kgZOG7ryBsaeG7h3UgdGh14buZYyB24buBIHkgaOG7jWMuDQoNCiMgOCBUw4BJIExJ4buGVSBUSEFNIEtI4bqiTw0KDQoxLiAgUGjDom4gdMOtY2ggc+G7kW5nIGPDsm4gLSBD4bqpbSBuYW5nIGThu4tjaCB04buFIGjhu41jIHbhu5tpIFIgKEFwcGxpZWQgRXBpKQ0KDQoyLiAgQSBwYWNrYWdlIGZvciBzdXJ2aXZhbCBhbmFseXNpcyBpbiBSIC0gVGVycnkgVGhlcm5lYXUNCg0KMy4gIFN1cnZpdmFsIEFuYWx5c2lzIGluIFIgLSBFbWlseSBDLlphYm9yDQo=