library(readr)
library(data.table)
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.3.3
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:data.table':
##
## between, first, last
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(skimr)
## Warning: package 'skimr' was built under R version 4.3.3
library(psych)
## Warning: package 'psych' was built under R version 4.3.3
##
## Attaching package: 'psych'
## The following objects are masked from 'package:ggplot2':
##
## %+%, alpha
library(csv)
## Warning: package 'csv' was built under R version 4.3.3
library(DT)
## Warning: package 'DT' was built under R version 4.3.3
library(pander)
## Warning: package 'pander' was built under R version 4.3.3
library(formattable)
## Warning: package 'formattable' was built under R version 4.3.3
library(htmltools)
##
## Attaching package: 'htmltools'
## The following object is masked from 'package:pander':
##
## p
library(DescTools)
## Warning: package 'DescTools' was built under R version 4.3.3
##
## Attaching package: 'DescTools'
## The following objects are masked from 'package:psych':
##
## AUC, ICC, SD
## The following object is masked from 'package:data.table':
##
## %like%
library(epitools)
library(pscl)
## Warning: package 'pscl' was built under R version 4.3.3
## Classes and Methods for R originally developed in the
## Political Science Computational Laboratory
## Department of Political Science
## Stanford University (2002-2015),
## by and under the direction of Simon Jackman.
## hurdle and zeroinfl functions by Achim Zeileis.
library(car)
## Warning: package 'car' was built under R version 4.3.3
## Loading required package: carData
## Warning: package 'carData' was built under R version 4.3.3
##
## Attaching package: 'car'
## The following object is masked from 'package:DescTools':
##
## Recode
## The following object is masked from 'package:psych':
##
## logit
## The following object is masked from 'package:dplyr':
##
## recode
PHÂN TÍCH CÁC YẾU TỐ ẢNH HƯỞNG ĐẾN NGUY CƠ RỐI LOẠN GIẤC NGỦ
DO TIÊU THỤ CAFFEINE
Bộ dữ liệu “Caffeine Intake Tracker” cung cấp thông tin chi tiết về
thói quen tiêu thụ caffeine của người dùng và tác động của nó đến giấc
ngủ. Dữ liệu không chỉ tập trung vào lượng caffeine tiêu thụ mà còn bao
gồm các yếu tố liên quan như loại đồ uống sử dụng (cà phê, trà, nước
tăng lực), thời điểm tiêu thụ trong ngày (sáng, chiều, tối), giới tính,
và mức độ ảnh hưởng đến giấc ngủ sau khi sử dụng. Mục tiêu của nghiên
cứu là tìm hiểu mối liên hệ giữa hành vi tiêu dùng caffeine và nguy cơ
rối loạn giấc ngủ. Dữ liệu được thu thập dưới dạng khảo sát giả lập, gồm
500 quan sát và 13 biến, tạo điều kiện thuận lợi cho việc phân tích định
lượng và đánh giá tác động của các yếu tố lối sống đến chất lượng giấc
ngủ của người tiêu dùng caffeine.
CHƯƠNG 1: TỔNG QUAN NGHIÊN CỨU
1.1. Lý do chọn đề tài
Hiện nay, tiêu thụ caffeine là một hành vi phổ biến trong giới trẻ,
đặc biệt là những người thường xuyên đối mặt với áp lực công việc, học
tập và lịch sinh hoạt thất thường. Caffeine được tìm thấy nhiều trong
các loại đồ uống quen thuộc như cà phê, trà, nước tăng lực hay nước ngọt
có ga. Đây đều là những sản phẩm dễ dàng tiếp cận trong đời sống hàng
ngày, và thường được người tiêu thụ sử dụng với mục đích giúp duy trì sự
tỉnh táo, nâng cao khả năng tập trung và kéo dài thời gian làm việc hoặc
học tập. Đặc biệt trong những thời điểm căng thẳng như kỳ thi, deadline
công việc hay những ngày làm việc cường độ cao, caffeine gần như trở
thành một “trợ thủ đắc lực” được sử dụng rộng rãi. Tuy nhiên, mặt trái
của việc lạm dụng caffeine, hoặc tiêu thụ không đúng thời điểm, đang dần
trở thành một vấn đề đáng lo ngại. Một trong những hệ quả tiêu biểu,
thường bị đánh giá thấp, chính là rối loạn giấc ngủ.
Rối loạn giấc ngủ không chỉ ảnh hưởng đến sức khỏe thể chất, tinh
thần mà còn làm giảm hiệu quả làm việc, học tập và chất lượng cuộc sống
nói chung. Thực tế cho thấy nhiều người tiêu thụ không ý thức được ảnh
hưởng tiêu cực tiềm ẩn của caffeine đối với giấc ngủ, và hành vi này
đang dần trở thành một vấn đề đáng báo động trong xã hội hiện đại. Không
giống như các chất kích thích bị kiểm soát chặt chẽ, caffeine rất dễ
tiếp cận và được sử dụng một cách tự do, thậm chí bị xem nhẹ về mức độ
rủi ro đối với sức khỏe.
Bộ dữ liệu “Caffeine Intake Tracker” ghi lại thói quen tiêu thụ
caffeine của từng cá nhân, bao gồm loại thức uống, thời điểm sử dụng và
trạng thái giấc ngủ tương ứng. Điều này tạo điều kiện thuận lợi để phân
tích mối quan hệ giữa hành vi tiêu dùng caffeine và nguy cơ rối loạn
giấc ngủ, đồng thời xem xét ảnh hưởng của các yếu tố liên quan như thời
gian, loại thức uống hay thói quen sinh hoạt trong ngày. Nghiên cứu đề
tài “Phân tích các yếu tố ảnh hưởng đến nguy cơ rối loạn giấc ngủ do
tiêu thụ caffeine” nhằm mục đích tìm hiểu sâu hơn về thực trạng tiêu thụ
caffeine cũng như đánh giá ảnh hưởng của nó đến chất lượng giấc ngủ.
Không chỉ dừng lại ở việc xác định mối tương quan giữa lượng caffeine
tiêu thụ và giấc ngủ, nghiên cứu còn xem xét vai trò của các yếu tố đi
kèm như thời điểm sử dụng, loại thức uống, thời gian làm việc hoặc học
tập, thói quen sinh hoạt và các đặc điểm nhân khẩu học khác (giới tính,
độ tuổi, nghề nghiệp…). Thông qua đó, nghiên cứu hướng đến việc xây dựng
một cái nhìn toàn diện hơn về hành vi sử dụng caffeine trong đời sống
hằng ngày của người tiêu thụ hiện nay.
1.2. Mục tiêu nghiên cứu
1.2.1. Mục tiêu chung
Nghiên cứu nhằm phân tích mối quan hệ giữa hành vi tiêu thụ caffeine
và nguy cơ rối loạn giấc ngủ ở người tiêu thụ, từ đó xác định các yếu tố
tác động chính và đề xuất một số khuyến nghị góp phần nâng cao nhận thức
cũng như điều chỉnh thói quen sử dụng caffeine một cách hợp lý trong
cộng đồng.
1.2.2. Mục tiêu cụ thể
Khảo sát mức độ tiêu thụ caffeine của người tiêu thụ thông qua các
loại thức uống phổ biến như cà phê, trà, nước tăng lực,…
Đánh giá tình trạng giấc ngủ của người tiêu thụ theo các tiêu chí
như: thời gian ngủ, chất lượng giấc ngủ, tần suất mất ngủ hoặc khó
ngủ.
Phân tích mối quan hệ giữa lượng caffeine tiêu thụ và nguy cơ rối
loạn giấc ngủ.
Xác định ảnh hưởng của các yếu tố khác như thời điểm sử dụng
caffeine, thói quen sinh hoạt, thời gian học tập hoặc làm việc, giới
tính, độ tuổi,… đến mức độ rối loạn giấc ngủ.
Đề xuất một số giải pháp nhằm hạn chế tác động tiêu cực của việc tiêu
thụ caffeine đến giấc ngủ, đồng thời nâng cao ý thức sử dụng caffeine
hợp lý trong cộng đồng người tiêu dùng.
1.3. Đối tượng và phạm vi nghiên cứu
Tập dữ liệu được sử dụng trong nghiên cứu này là kết quả từ một cuộc
khảo sát hành vi tiêu thụ caffeine, chủ yếu ở nhóm người tiêu thụ. Bộ dữ
liệu có tên “Caffeine Intake Tracker”, ghi nhận thông tin liên quan đến
loại thức uống chứa caffeine, thời điểm sử dụng, tổng lượng caffeine
tiêu thụ trong ngày (tính bằng mg), cùng với trạng thái giấc ngủ của
người tham gia.
Dữ liệu bao gồm 500 quan sát với nhiều biến số phản ánh thói quen
tiêu dùng và chất lượng giấc ngủ, trong đó đáng chú ý là các biến về
loại đồ uống (cà phê, trà, nước tăng lực), khung giờ tiêu thụ,… Các biến
này cho phép nghiên cứu một cách định lượng mối liên hệ giữa hành vi
tiêu thụ caffeine và nguy cơ rối loạn giấc ngủ trong thực tế.
1.4. Phương pháp nghiên cứu
Bài nghiên cứu sử dụng phương pháp thống kê mô tả kết hợp với các mô
hình hồi quy nhị phân để phân tích dữ liệu, nhằm xác định mức độ ảnh
hưởng của các yếu tố liên quan đến hành vi tiêu thụ caffeine và khả năng
xảy ra rối loạn giấc ngủ ở sinh viên.
1.5. Kết cấu đề tài
Chương 1: Tổng quan nghiên cứu.
Chương 2: Lý thuyết nghiên cứu
Chương 3: Dữ liệu nghiên cứu.
Chương 4: Phân tích và đưa ra kết quả.
Chương 5: Kết luận và kiến nghị.
CHƯƠNG 2: LÝ THUYẾT NGHIÊN CỨU
2.1. Bảng ngẫu nhiên
2.1.1. Cấu trúc
Bảng ngẫu nhiên hai chiều là công cụ dùng để phân loại các đối tượng
trong mẫu (hoặc tổng thể) dựa theo hai biến định tính: một biến dòng
(row variable) và một biến cột (column variable).
Giả sử:
Biến dòng \(X\) có \(I\) mức (levels),
Biến cột \(Y\) có \(J\) mức,
Khi đó, bảng ngẫu nhiên \(I \times
J\) có dạng như sau:
\[
\begin{array}{c|cccc|c}
\text{Biến X / Biến Y} & y_1 & y_2 & \cdots & y_J &
\text{Tổng dòng} \\
\hline
x_1 & n_{11} & n_{12} & \cdots & n_{1J} & n_{1.} \\
x_2 & n_{21} & n_{22} & \cdots & n_{2J} & n_{2.} \\
\vdots & \vdots & \vdots & \ddots & \vdots & \vdots
\\
x_I & n_{I1} & n_{I2} & \cdots & n_{IJ} & n_{I.} \\
\hline
\text{Tổng cột} & n_{.1} & n_{.2} & \cdots & n_{.J}
&
\end{array}
\]
Trong đó:
\(n_{ij}\): số lượng quan sát
rơi vào hàng \(i\) và cột \(j\),
\(n_{i.}\): tổng số quan sát ở
hàng \(i\),
\(n_{.j}\): tổng số quan sát ở
cột \(j\),
Tổng tất cả các ô là kích thước mẫu:
\[
n = \sum_{i=1}^{I} \sum_{j=1}^{J} n_{ij}
\]
2.1.2. Tần số và tỷ lệ
Để mô tả mối quan hệ giữa hai biến định tính trong bảng ngẫu nhiên,
ta cần phân biệt và tính toán các loại tần số và tỷ lệ sau:
1. Tần số tương đối (Tỷ lệ chung - Joint
Proportions)
Tỷ lệ chung được tính theo công thức:
\[
p_{ij} = \frac{n_{ij}}{n}
\]
Đây là tỷ lệ các quan sát rơi vào ô \((i,
j)\) trong toàn bộ mẫu. Tổng tất cả các tỷ lệ này bằng 1:
\[
\sum_i \sum_j p_{ij} = 1
\]
Ví dụ: Nếu \(p_{11} =
\frac{60}{200} = 0.3\), tức là 30% khách hàng là người trẻ và sử
dụng Mobile Banking.
2. Phân phối biên (Marginal
Distributions)
- Tỷ lệ tổng biên của dòng (Row Marginal
Proportions):
\[
p_{i.} = \frac{n_{i.}}{n} = \sum_j p_{ij}
\]
Đây là phân phối xác suất của biến \(X\).
Ví dụ: \(p_{1.} =
\frac{120}{200} = 0.6\).
- Tỷ lệ tổng biên của cột (Column Marginal
Proportions):
\[
p_{.j} = \frac{n_{.j}}{n} = \sum_i p_{ij}
\]
Đây là phân phối xác suất của biến \(Y\).
Ví dụ: \(p_{.1} =
\frac{75}{200} = 0.375\).
3. Phân phối có điều kiện (Conditional
Distributions)
- Phân phối có điều kiện của Y theo X:
\[
p_{j|i} = P(Y = Y_j | X = X_i) = \frac{n_{ij}}{n_{i.}}
\]
Ví dụ: Tỷ lệ người trẻ trong số người sử dụng Mobile
Banking là \(\frac{60}{120} =
0.5\).
- Phân phối có điều kiện của X theo Y:
\[
p_{i|j} = P(X = X_i | Y = Y_j) = \frac{n_{ij}}{n_{.j}}
\]
Ví dụ: Trong số người trẻ, tỷ lệ dùng Mobile Banking
là \(\frac{60}{75} = 0.8\).
Lưu ý: Nếu hai biến \(X\) và \(Y\) độc lập thống kê (statistically
independent), thì:
\[
p_{j|i} = p_j \quad \text{với mọi } i, \quad \text{và } \quad p_{i|j} =
p_i \quad \text{với mọi } j
\]
4. Tần số kỳ vọng (Expected
Frequencies)
Nếu giả định \(X\) và \(Y\) độc lập, thì tần số kỳ vọng tại ô \((i, j)\) là:
\[
m_{ij} = \frac{n_{i.} \cdot n_{.j}}{n}
\]
2.1.3. Các phân phối xác suất liên quan
Việc lựa chọn mô hình xác suất phù hợp cho các tần số ô \(n_{ij}\) phụ thuộc vào cách dữ liệu được
thu thập. Trong phân tích bảng ngẫu nhiên, chúng ta thường sử dụng các
mô hình xác suất sau:
1. Phân phối Poisson
Được áp dụng khi tổng hàng và tổng cột không cố định (tức \(n, n_{i.}, n_{.j}\) đều là ngẫu nhiên), và
các ô \(n_{ij}\) là các biến ngẫu nhiên
Poisson độc lập với tham số (kỳ vọng) \(\mu_{ij}\). Khi đó tổng \(n = \sum n_{ij}\) cũng tuân theo phân phối
Poisson. Đây là cơ sở để xây dựng mô hình Log-linear.
Ví dụ: Một trung tâm thương mại ghi nhận các sự cố an ninh
xảy ra trong khuôn viên chia theo khu vực và loại sự cố.
2. Phân phối Multinomial (Đa thức)
Áp dụng khi cỡ mẫu \(n\) được cố
định, và các đối tượng được phân loại ngẫu nhiên vào \(I \times J\) ô với xác suất \(p_{ij}\) cho mỗi ô (\(\sum p_{ij} = 1\)). Khi đó, vector tần số
các ô tuân theo phân phối Multinomial với tổng số \(n\) và xác suất \((p_{11}, p_{12}, \dots, p_{IJ})\).
Ví dụ: Khảo sát \(n = 200\)
khách hàng và phân loại họ theo hai biến.
3. Phân phối Product Multinomial (Tích các phân phối Đa
thức)
- Nếu tổng các dòng \(n_{i.}\) được
cố định trước (Row marginals fixed): Khi đó, từng hàng \(i\) trong bảng là ngẫu nhiên theo phân phối
Multinomial với kích thước mẫu \(n_i.\)
và xác suất \((p_{i1}, p_{i2}, \dots,
p_{iJ})\). Toàn bộ bảng là tích của \(I\) phân phối Multinomial độc lập.
Ví dụ: Chọn 120 người sử dụng Mobile Banking và phân chia
theo độ tuổi.
- Nếu tổng các cột \(n_{.j}\) được cố
định trước (Column marginals fixed): Tương tự, mỗi cột \(j\) là một phân phối Multinomial theo biến
dòng \(X\) với kích thước mẫu \(n_{.j}\) và xác suất \((p_{1j}, p_{2j}, \dots, p_{Ij})\).
Ví dụ: Chọn 75 người trẻ, 75 người trung niên, 50 người cao
tuổi, rồi phân tích theo việc có dùng Mobile Banking hay không.
2.2. Bảng ngẫu nhiên 2X2
Bảng ngẫu nhiên \(2 \times 2\) là
công cụ đơn giản nhưng rất hiệu quả để so sánh tỷ lệ giữa hai nhóm trong
các nghiên cứu với biến kết quả nhị phân (ví dụ: thành công/thất
bại).
Giả sử bảng có dạng:
Nhóm 1 (\(x_1\)) |
\(n_{11}\) |
\(n_{12}\) |
\(n_{1.}\) |
Nhóm 2 (\(x_2\)) |
\(n_{21}\) |
\(n_{22}\) |
\(n_{2.}\) |
Khi đó:
So sánh hai tỷ lệ này giúp đánh giá sự khác biệt giữa các nhóm trong
nghiên cứu.
2.2.1. Hiệu hai tỷ lệ
Hiệu số tỷ lệ được định nghĩa là \(D = p_1
- p_2\), phản ánh mức chênh lệch về xác suất thành công giữa hai
nhóm. Nếu \(D > 0\), nhóm 1 có tỷ lệ
thành công cao hơn nhóm 2; nếu \(D <
0\), ngược lại; còn nếu \(D =
0\), không có sự khác biệt rõ ràng. Sai số chuẩn của \(\hat{D}\) được tính bằng:
\[
SE(\hat{D}) = \sqrt{\frac{\hat{p}_1(1-\hat{p}_1)}{n_1} +
\frac{\hat{p}_2(1-\hat{p}_2)}{n_2}}
\]
Khoảng tin cậy 95%:
\[
\hat{D} \pm z_{\alpha/2} \times SE(\hat{D})
\]
2.2.2. Tỷ số nguy cơ (Relative Risk - RR)
Tỷ số nguy cơ đo lường mức độ rủi ro giữa hai nhóm: \(RR = \frac{p_1}{p_2}\). Nếu \(RR > 1\), nhóm 1 có nguy cơ cao hơn nhóm
2; nếu \(RR < 1\), nhóm 1 có nguy cơ
thấp hơn. Do phân phối \(RR\) không đối
xứng, ta thường dùng \(\log(RR)\) với
sai số chuẩn:
\[
SE(\log(\hat{RR})) = \sqrt{ \frac{1-\hat{p}_1}{n_{11}} +
\frac{1-\hat{p}_2}{n_{21}} }
\]
Khoảng tin cậy 95% cho \(\log(RR)\):
\[
\log(\hat{RR}) \pm z_{\alpha/2} \times SE(\log(\hat{RR}))
\]
2.2.3. Tỷ số chênh (Odds Ratio - OR)
Tỷ số chênh đo lường mức độ xảy ra của sự kiện so với không xảy ra,
được tính là:
\[
OR = \frac{n_{11}n_{22}}{n_{12}n_{21}}
\]
Nếu \(OR > 1\), odds ở nhóm 1
cao hơn nhóm 2;
Nếu \(OR < 1\), odds ở nhóm 1
thấp hơn; \(OR = 1\) cho thấy hai biến
độc lập.
Ý nghĩa của Odds Ratio (OR):
Odds Ratio (OR) là thước đo quan trọng trong các mô hình hồi quy
logistic và nghiên cứu bệnh chứng. OR có các đặc điểm đáng chú ý:
Tính đối xứng: OR không đổi khi hoán đổi nhóm
hoặc kết quả (OR mới = 1 / OR cũ).
Không bị ảnh hưởng bởi tổng biên: OR ổn định khi
nhân các hàng/cột với một hằng số.
Xấp xỉ RR khi sự kiện hiếm: Khi xác suất nhỏ, OR
≈ RR.
Là nền tảng cho hồi quy logistic: Vì mô hình này
dựa trên logit (log-odds).
Công thức sai số chuẩn và khoảng tin cậy 95% của \(\log(\widehat{OR})\):
\[
SE(\log(\widehat{OR})) = \sqrt{ \frac{1}{n_{11}} + \frac{1}{n_{12}} +
\frac{1}{n_{21}} + \frac{1}{n_{22}} }
\]
\[
\log(\widehat{OR}) \pm z_{\alpha/2} \times SE(\log(\widehat{OR}))
\]
So sánh các thước đo:
Hiệu số tỷ lệ (D): Dễ hiểu, đo lường khác biệt
tuyệt đối.
Tỷ số nguy cơ (RR): Phù hợp trong nghiên cứu
thuần tập hoặc thử nghiệm ngẫu nhiên.
Tỷ số chênh (OR): Phổ biến trong nghiên cứu bệnh
chứng và mô hình GLM, nhưng cần diễn giải thận trọng khi sự kiện phổ
biến.
2.3. Kiểm định Chi-bình phương Pearson
Kiểm định Chi-bình phương Pearson thường được dùng để đánh giá mối
quan hệ giữa hai biến định tính. Thống kê kiểm định được tính bằng:
\[
\chi^2 = \sum_{i=1}^I \sum_{j=1}^J \frac{(n_{ij} -
\hat{m}_{ij})^2}{\hat{m}_{ij}}
\]
Trong đó, \(n_{ij}\) là tần số quan
sát và \(\hat{m}_{ij}\) là tần số kỳ
vọng nếu hai biến độc lập.
Điều kiện áp dụng:
Nếu điều kiện không thỏa mãn (ví dụ bảng thưa hoặc cỡ mẫu nhỏ), nên
dùng kiểm định chính xác Fisher.
2.4. Mô hình hồi quy
2.4.1. Mô hình Logistic (Logistic Regression
Model)
Mô hình hồi quy logistic được sử dụng để dự đoán xác suất xảy ra của
một biến nhị phân (có/không, 1/0, đỗ/trượt…).
Thay vì mô hình hóa trực tiếp kết quả, mô hình logistic mô hình hóa
xác suất thông qua hàm logistic (sigmoid) – giúp đảm bảo giá trị dự đoán
luôn nằm trong khoảng (0, 1).
Tỷ số chênh (Odds): \[
\text{Odds} = \frac{p}{1 - p}
\]
Hàm logit (log-odds): \[
\log\left(\frac{p}{1 - p}\right) = \beta_0 + \beta_1 X_1 + \cdots +
\beta_p X_p
\]
Hàm dự đoán (sigmoid): \[
p = \frac{1}{1 + e^{-(\beta_0 + \beta_1 X_1 + \cdots + \beta_p X_p)}}
\]
Odds Ratio (OR): \[
OR = e^{\beta}
\]
Ý nghĩa:
Ưu điểm:
Diễn giải trực quan bằng xác suất hoặc odds ratio.
Tính toán hiệu quả, không yêu cầu tài nguyên cao.
Là nền tảng của nhiều mô hình thống kê hiện đại.
2.4.2. Mô hình Probit
Mô hình Probit được sử dụng để phân tích và dự đoán xác suất xảy ra
của một biến phản hồi nhị phân (0/1), tương tự như mô hình Logit. Tuy
nhiên, thay vì sử dụng hàm logistic, Probit dùng hàm phân phối tích lũy
chuẩn (CDF) để ánh xạ đầu vào thành xác suất.
Gọi \(Y\) là biến nhị phân (nhận giá
trị 0 hoặc 1), mô hình Probit giả định rằng:
\[
P(Y = 1 \mid X) = \Phi(X\beta)
\]
Trong đó:
Hàm liên kết trong mô hình Probit là nghịch đảo của hàm phân phối
chuẩn:
\[
\Phi^{-1}(P(Y=1)) = X\beta
\]
Điều này cho thấy mối quan hệ tuyến tính giữa các biến độc lập và
z-score (giá trị chuẩn hóa theo phân phối chuẩn).
Diễn giải hệ số
Các hệ số \(\beta\) không thể
diễn giải trực tiếp như trong mô hình Logit.
Tuy nhiên, dấu của \(\beta\) vẫn
cho biết chiều hướng ảnh hưởng của biến độc lập đến xác suất xảy ra biến
phụ thuộc.
Có thể tính hiệu ứng cận biên (marginal effects)
để giải thích ý nghĩa thực tế.
So sánh với Logit
Hàm liên kết |
Logit: \(\log(\frac{p}{1-p})\) |
Chuẩn hóa: \(\Phi^{-1}(p)\) |
Phân phối ngầm |
Logistic |
Chuẩn chuẩn hóa (Normal) |
Diễn giải hệ số |
OR (dễ hiểu hơn) |
Phức tạp hơn, cần hiệu ứng cận biên |
Ứng dụng |
Phổ biến |
Dùng khi dữ liệu có tính chuẩn hóa |
Ưu điểm
2.4.3. Mô hình Cloglog
Mô hình Cloglog là một dạng của hồi quy nhị phân, trong đó hàm liên
kết là:
\[
\log(-\log(1 - p)) = \eta = \beta_0 + \beta_1 x_1 + \cdots + \beta_k x_k
\]
Từ đó, xác suất xảy ra sự kiện là:
\[
p = 1 - \exp(-\exp(\eta))
\]
Để ước lượng các tham số \(\beta\),
mô hình sử dụng phương pháp ước lượng hợp lý tối đa
(MLE), thông qua việc cực đại hóa hàm log-likelihood:
\[
\ell(\beta) = \sum_{i=1}^{n} \left[ y_i \log(1 - \exp(-\exp(\eta_i))) +
(1 - y_i)( -\exp(\eta_i)) \right]
\]
Phương pháp này đặc biệt phù hợp khi xác suất xảy ra sự kiện không
đối xứng hoặc sự kiện hiếm. Hàm liên kết cloglog giúp mô hình phản ánh
tốt hơn sự thay đổi nhanh chóng về xác suất gần ngưỡng 1.
2.5. Kiểm định sự phù hợp của mô hình
Để đánh giá mức độ phù hợp của mô hình hồi quy nhị phân (logit,
probit, cloglog), một số chỉ số đánh giá phổ biến được sử dụng:
2.5.3. Log-Likelihood (Giá trị log của hàm hợp
lý)
- Công thức: \[
\log L = \sum_{i=1}^{n} \log f(y_i \mid x_i; \beta)
\]
- \(\log L\) càng lớn (ít âm hơn) thì
mô hình càng phù hợp với dữ liệu quan sát.
- Ý nghĩa: So sánh các mô hình dựa trên
log-likelihood giúp xác định mô hình nào mô tả dữ liệu tốt hơn. Tuy
nhiên, vì giá trị này thường âm và phụ thuộc vào số lượng tham số, cần
kết hợp với AIC để đưa ra đánh giá toàn diện.
2.5.4. Chỉ số McFadden’s \(R^2\) (Pseudo R-squared)
Trong mô hình hồi quy logistic hoặc các mô hình hồi quy nhị phân phi
tuyến khác như Probit, Cloglog, việc đánh giá mức độ phù hợp của mô hình
không thể sử dụng chỉ số \(R^2\) truyền
thống như trong hồi quy tuyến tính. Thay vào đó, ta sử dụng
Pseudo \(R^2\), với
phiên bản phổ biến nhất là McFadden’s \(R^2\).
Chỉ số này được tính theo công thức:
\[
R^2_{\text{McFadden}} = 1 - \frac{\log L_{\text{model}}}{\log
L_{\text{null}}}
\]
Trong đó:
\(\log L_{\text{model}}\) là
log-likelihood của mô hình đầy đủ (có các biến giải thích),
\(\log L_{\text{null}}\) là
log-likelihood của mô hình rỗng (chỉ có hằng số).
Ý nghĩa:
\(R^2_{\text{McFadden}}\) càng
cao thì mô hình càng phù hợp với dữ liệu.
Giá trị thường nằm trong khoảng từ 0 đến 1, nhưng trong thực tế,
các giá trị từ 0.2 đến 0.4 đã được coi là phù hợp tốt
đối với dữ liệu nhị phân.
2.6. Dự báo
Sau khi xây dựng mô hình hồi quy nhị phân (như logit, probit hoặc
cloglog), ta có thể sử dụng hàm predict()
để dự báo kết quả
cho các quan sát mới. Hàm này có hai lựa chọn phổ biến thông qua đối số
type
, bao gồm:
2.6.1. type = “link”
Trả về giá trị tuyến tính \(\eta =
\beta_0 + \beta_1 X_1 + \cdots + \beta_k X_k\), gọi là
biến liên kết.
Đây là đầu ra của mô hình trước khi chuyển thành xác
suất.
Thích hợp khi muốn phân tích nội tại mô hình hoặc kiểm tra mức độ
ảnh hưởng của các biến độc lập.
2.6.2. type = “response”
Trả về xác suất xảy ra của sự kiện \(Y = 1\), được tính thông qua hàm liên kết
nghịch đảo:
Với logit: \(\hat{p} = \frac{1}{1 +
e^{-\eta}}\)
Với probit: \(\hat{p} =
\Phi(\eta)\)
Với cloglog: \(\hat{p} = 1 -
\exp(-\exp(\eta))\)
Đây là cách dự báo phù hợp khi cần đưa ra xác suất trực tiếp cho
từng trường hợp mới.
CHƯƠNG 3: DỮ LIỆU NGHIÊN CỨU
3.1. Giới thiệu bộ dữ liệu
Bộ dữ liệu bao gồm 500 quan sát trên tổng 13 biến (gồm 4 biến định
lượng và 9 biến định tính), phản ánh thông tin về thói quen tiêu thụ
caffeine của người dùng và mức độ ảnh hưởng đến giấc ngủ. Các biến trong
dữ liệu thể hiện nhiều khía cạnh khác nhau như loại đồ uống chứa
caffeine được sử dụng (cà phê, trà, nước tăng lực), thời điểm tiêu thụ
trong ngày (sáng, chiều, tối), giới tính, cũng như mức độ tập trung và
chất lượng giấc ngủ sau khi tiêu thụ. Dưới đây là bảng chi tiết mô tả
từng biến trong dữ liệu, tương ứng với từng đối tượng được khảo sát.
d <- read.csv("D:/PTDLDT/caffeine_intake_tracker.csv")
data.table(d)
dldt <- c("sleep_impacted",
"beverage_coffee", "beverage_energy_drink", "beverage_tea",
"time_of_day_afternoon", "time_of_day_evening", "time_of_day_morning",
"gender_female", "gender_male")
dt <- d[, dldt]
dt <- data.frame(lapply(dt, as.factor))
3.2. Mô tả các biến trong bộ dữ liệu
caffeine_mg: Lượng caffeine tiêu thụ trong ngày,
đã chuẩn hóa về thang từ 0 đến 1.
age: Độ tuổi của người tham gia khảo sát, chuẩn
hóa từ nhỏ nhất đến lớn nhất.
focus_level: Mức độ tập trung của người tham gia
sau khi tiêu thụ caffeine, theo thang điểm từ 0 đến 1 (1 là tập trung
tối đa).
sleep_quality: Mức độ chất lượng giấc ngủ của
người tham gia, tự đánh giá theo thang điểm từ 0 đến 1 (1 là ngủ tốt
nhất).
sleep_impacted: Giấc ngủ có bị ảnh hưởng bởi
caffeine hay không (0 = không bị ảnh hưởng, 1 = bị ảnh hưởng).
beverage_coffee: Người tham gia có tiêu thụ cà
phê hay không (True = có, False = không).
beverage_energy_drink: Người tham gia có tiêu
thụ nước tăng lực hay không (True = có, False = không).
beverage_tea: Người tham gia có tiêu thụ trà hay
không (True = có, False = không).
time_of_day_morning: Caffeine được tiêu thụ vào
buổi sáng hay không (True = có, False = không).
time_of_day_afternoon: Caffeine được tiêu thụ
vào buổi chiều hay không (True = có, False = không).
time_of_day_evening: Caffeine được tiêu thụ vào
buổi tối hay không (True = có, False = không).
gender_female: Người tham gia là nữ hay không
(True = nữ, False = không phải nữ).
gender_male: Người tham gia là nam hay không
(True = nam, False = không phải nam).
CHƯƠNG 4: PHÂN TÍCH VÀ ĐƯA RA KẾT QUẢ
Trong bài luận này, biến phụ thuộc được lựa chọn là sleep_impacted,
phản ánh việc giấc ngủ có bị ảnh hưởng bởi caffeine hay không. Các biến
định tính còn lại sẽ được phân tích và kiểm định nhằm xác định liệu
chúng có mối liên hệ thống kê với biến phụ thuộc, từ đó góp phần làm
sáng tỏ những yếu tố có thể tác động đến chất lượng giấc ngủ của người
tiêu dùng caffeine.
data.table(dt)
4.1. Thống kê mô tả biến phụ thuộc
Lập bảng tần số và bảng tần suất
table(factor(dt$sleep_impacted,
levels = c(0, 1),
labels = c("Không bị ảnh hưởng", "Bị ảnh hưởng")))
##
## Không bị ảnh hưởng Bị ảnh hưởng
## 297 203
table(factor(dt$sleep_impacted,
levels = c(0, 1),
labels = c("Không bị ảnh hưởng", "Bị ảnh hưởng"))) / length(dt$sleep_impacted)
##
## Không bị ảnh hưởng Bị ảnh hưởng
## 0.594 0.406
Lập biểu đồ
# Gán nhãn rõ ràng cho biến sleep_impacted
dt$sleep_label <- factor(dt$sleep_impacted,
levels = c(0, 1),
labels = c("Không bị ảnh hưởng", "Bị ảnh hưởng"))
# Tính tỷ lệ
df_tyle <- as.data.frame(prop.table(table(dt$sleep_label)))
colnames(df_tyle) <- c("sleep_label", "tyle")
# Vẽ biểu đồ
ggplot(df_tyle, aes(x = sleep_label, y = tyle, fill = sleep_label)) +
geom_col(width = 0.6) +
geom_text(aes(label = scales::percent(tyle, accuracy = 0.1)),
vjust = -0.5, size = 5) +
scale_y_continuous(labels = scales::percent_format()) +
scale_fill_manual(values = c("Không bị ảnh hưởng" = "#81D4FA", # xanh lá
"Bị ảnh hưởng" = "#64B5F6")) + # đỏ
labs(title = "Biểu đồ 4.1. Tỷ lệ giấc ngủ bị ảnh hưởng bởi caffeine",
x = "Tình trạng ảnh hưởng",
y = "Tỷ lệ") +
theme_minimal(base_size = 14) +
theme(legend.position = "none")

Nhận xét
Biểu đồ cột và bảng ở trên thể hiện tỷ lệ người tham gia khảo sát
có giấc ngủ bị ảnh hưởng bởi việc tiêu thụ caffeine. Theo kết quả thu
được, có 203 người (chiếm 40.6%) cho
biết giấc ngủ của họ bị ảnh hưởng, trong khi
297 người còn lại (chiếm 59.4%) cho
biết không bị ảnh hưởng.
Như vậy, phần lớn người tham gia không cảm nhận thấy tác động
tiêu cực rõ rệt của caffeine đến giấc ngủ, tuy nhiên tỷ lệ bị ảnh hưởng
vẫn chiếm một phần đáng kể, cho thấy cần cân nhắc thời điểm và loại đồ
uống khi sử dụng caffeine, đặc biệt là với những người nhạy cảm về giấc
ngủ.
4.2. Thống kê suy diễn
4.2.1. Kiểm định tính độc lập
Kiểm định Chi bình phương là một phương pháp thống kê phổ biến dùng
để kiểm tra mức độ độc lập giữa hai biến phân loại. Phương pháp này giúp
xác định liệu có mối quan hệ đáng kể nào giữa các biến hay không thông
qua so sánh giữa tần số quan sát và tần số kỳ vọng trong bảng chéo.
Công thức tính giá trị thống kê Chi bình phương được thể hiện như
sau:
\[\chi^2 = \sum_{i,j} \frac{(n_{ij}
-\hat{\mu}_{ij})^2}{\hat{\mu}_{ij}}\]
4.2.2. Biến sleep_impacted và beverage_coffee
Giả thuyết kiểm định:
mtht <- table(dt$sleep_impacted, dt$beverage_coffee)
chisq.test(mtht)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: mtht
## X-squared = 36.058, df = 1, p-value = 1.915e-09
Nhận xét: Qua kết quả kiểm định cho thấy
p-value = 1.915 × 10⁻⁹ < 0.05, do đó ta bác bỏ giả
thuyết \(H_0\). Điều
này đồng nghĩa với việc tình trạng giấc ngủ bị ảnh hưởng và việc
tiêu thụ cà phê có mối liên hệ với nhau.
Nói cách khác, việc uống cà phê có thể ảnh hưởng đến chất
lượng giấc ngủ của người tham gia khảo sát. Kết quả này góp
phần củng cố giả thuyết rằng caffeine trong cà phê là một yếu tố có thể
làm suy giảm chất lượng giấc ngủ ở một bộ phận người dùng.
4.2.3. Biến sleep_impacted và
beverage_energy_drink
Giả thuyết kiểm định:
mtht1 <- table(dt$sleep_impacted, dt$beverage_energy_drink)
chisq.test(mtht1)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: mtht1
## X-squared = 10.569, df = 1, p-value = 0.00115
Nhận xét:
Qua kết quả kiểm định cho thấy p-value = 0.00115 <
0.05, do đó ta bác bỏ giả thuyết \(H_0\). Điều này đồng nghĩa với
việc tình trạng giấc ngủ bị ảnh hưởng và việc tiêu thụ nước tăng
lực có mối liên hệ với nhau.
Nói cách khác, việc uống nước tăng lực có thể ảnh hưởng đến
chất lượng giấc ngủ của người tham gia khảo sát. Kết quả này
củng cố nhận định rằng caffeine trong nước tăng lực là một yếu tố tiềm
ẩn có thể làm suy giảm chất lượng giấc ngủ, đặc biệt với những người
nhạy cảm với chất kích thích.
4.2.4. Biến sleep_impacted và beverage_tea
Giả thuyết kiểm định:
mtht2 <- table(dt$sleep_impacted, dt$beverage_tea)
chisq.test(mtht2)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: mtht2
## X-squared = 67.897, df = 1, p-value < 2.2e-16
Qua kết quả kiểm định cho thấy p-value < 2.2 × 10⁻¹⁶ <
0.05, do đó ta bác bỏ giả thuyết \(H_0\). Điều này có nghĩa là
tình trạng giấc ngủ bị ảnh hưởng và việc tiêu thụ trà có mối
liên hệ với nhau. Nói cách khác, việc uống trà có thể
ảnh hưởng đến chất lượng giấc ngủ của người tham gia khảo
sát.
4.2.5. Biến sleep_impacted và
time_of_day_afternoon
Giả thuyết kiểm định:
H₀: Tình trạng giấc ngủ bị ảnh hưởng và việc
tiêu thụ caffeine vào buổi chiều là hai biến độc lập.
H₁: Tình trạng giấc ngủ bị ảnh hưởng và việc
tiêu thụ caffeine vào buổi chiều có mối liên hệ với nhau.
mtht3 <- table(dt$sleep_impacted, dt$time_of_day_afternoon)
chisq.test(mtht3)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: mtht3
## X-squared = 3.5886, df = 1, p-value = 0.05818
Nhận xét:
Kết quả kiểm định cho thấy p-value = 0.05818 >
0.05, do đó ta không đủ bằng chứng để bác bỏ giả thuyết
\(H_0\) ở mức ý nghĩa 5%.
Điều này cho thấy không có mối liên hệ thống kê có ý
nghĩa giữa việc tiêu thụ caffeine vào buổi
chiều và tình trạng giấc ngủ bị ảnh hưởng. Nói
cách khác, dữ liệu khảo sát hiện tại chưa chỉ ra được rằng tiêu thụ
caffeine vào buổi chiều có ảnh hưởng rõ rệt đến chất lượng giấc ngủ của
người tham gia.
4.2.6. Biến sleep_impacted và
time_of_day_evening
Giả thuyết kiểm định:
mtht4 <- table(dt$sleep_impacted, dt$time_of_day_evening)
chisq.test(mtht4)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: mtht4
## X-squared = 166.26, df = 1, p-value < 2.2e-16
Nhận xét:
Kết quả kiểm định cho thấy p-value < 2.2 × 10⁻¹⁶ <
0.05, do đó ta bác bỏ giả thuyết \(H_0\). Điều này cho thấy
tình trạng giấc ngủ bị ảnh hưởng và việc tiêu thụ caffeine vào
buổi tối có mối liên hệ với nhau. Nói cách khác, việc
uống caffeine vào buổi tối có khả năng làm suy giảm chất lượng giấc
ngủ của người tham gia khảo sát.
4.2.7. Biến sleep_impacted và
time_of_day_morning
Giả thuyết kiểm định:
mtht5 <- table(dt$sleep_impacted, dt$time_of_day_morning)
chisq.test(mtht5)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: mtht5
## X-squared = 0.008461, df = 1, p-value = 0.9267
Nhận xét:
Kết quả kiểm định cho thấy p-value = 0.9267 >
0.05, do đó ta không bác bỏ giả thuyết \(H_0\). Điều này có nghĩa là
chưa có bằng chứng thống kê đủ mạnh để khẳng định mối liên hệ
giữa việc tiêu thụ caffeine vào buổi sáng và tình trạng giấc ngủ bị ảnh
hưởng. Nói cách khác, việc uống caffeine vào buổi sáng
dường như không ảnh hưởng đáng kể đến chất lượng giấc ngủ của
người tham gia khảo sát.
4.2.8. Biến sleep_impacted và gender_female
Giả thuyết kiểm định:
mtht6 <- table(dt$sleep_impacted, dt$gender_female)
chisq.test(mtht6)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: mtht6
## X-squared = 0, df = 1, p-value = 1
Nhận xét:
Kết quả kiểm định cho thấy p-value = 1 > 0.05, do
đó ta không bác bỏ giả thuyết \(H_0\). Điều này có nghĩa là
không có bằng chứng thống kê nào cho thấy mối liên hệ giữa giới
tính nữ và việc giấc ngủ bị ảnh hưởng bởi caffeine. Nói cách
khác, giới tính nữ không phải là yếu tố có ảnh hưởng rõ rệt đến
chất lượng giấc ngủ trong bối cảnh tiêu thụ caffeine theo dữ
liệu khảo sát hiện có.
4.2.9. Biến sleep_impacted và gender_male
Giả thuyết kiểm định:
mtht7 <- table(dt$sleep_impacted, dt$gender_male)
chisq.test(mtht7)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: mtht7
## X-squared = 0, df = 1, p-value = 1
Nhận xét:
Kết quả kiểm định cho thấy p-value = 1 > 0.05, do
đó ta không bác bỏ giả thuyết \(H_0\). Điều này cho thấy
không có mối liên hệ thống kê có ý nghĩa giữa giới tính nam và
việc giấc ngủ bị ảnh hưởng bởi caffeine. Nói cách khác,
nam giới không có khả năng bị ảnh hưởng đến giấc ngủ khác biệt
rõ rệt so với các nhóm còn lại trong khảo sát này.
Kết luận:
Qua các kiểm định Chi bình phương, chỉ có các biến như
loại đồ uống caffeine (cà phê, trà, nước tăng lực) và
thời điểm tiêu thụ trong ngày (đặc biệt là buổi tối)
cho thấy có mối liên hệ rõ ràng với biến
sleep_impacted
(giấc ngủ bị ảnh
hưởng).
Ngược lại, các biến liên quan đến giới tính hoặc
việc tiêu thụ vào buổi sáng không có ý nghĩa thống kê
trong bộ dữ liệu này.
Tiếp theo, tác giả sẽ tiến hành mô tả chi tiết các biến có ảnh
hưởng, từ đó đưa ra cái nhìn khái quát hơn về mức độ tác động của từng
yếu tố đến chất lượng giấc ngủ khi tiêu thụ caffeine.
4.3. Thống kê mô tả 2 biến
4.3.1. Biến Biến sleep_impacted và
beverage_coffee
Lập bảng tần số và bảng tần suất
# Gán nhãn rõ ràng cho các biến
dt$sleep_impacted <- factor(dt$sleep_impacted,
levels = c(0, 1),
labels = c("Không bị ảnh hưởng", "Bị ảnh hưởng"))
dt$beverage_coffee <- factor(dt$beverage_coffee,
levels = c(FALSE, TRUE),
labels = c("Không uống cà phê", "Có uống cà phê"))
tkmt<- table(dt$sleep_impacted, dt$beverage_coffee)
addmargins(tkmt)
##
## Không uống cà phê Có uống cà phê Sum
## Không bị ảnh hưởng 173 124 297
## Bị ảnh hưởng 62 141 203
## Sum 235 265 500
ptkmt <- prop.table(tkmt)
addmargins(ptkmt)
##
## Không uống cà phê Có uống cà phê Sum
## Không bị ảnh hưởng 0.346 0.248 0.594
## Bị ảnh hưởng 0.124 0.282 0.406
## Sum 0.470 0.530 1.000
Lập biểu đồ
# Chuyển bảng tần số thành data frame
df_plot <- as.data.frame(tkmt)
colnames(df_plot) <- c("Sleep_Impacted", "Beverage_Coffee", "Count")
# Vẽ biểu đồ tần số
library(ggplot2)
ggplot(df_plot, aes(x = Beverage_Coffee, y = Count, fill = Sleep_Impacted)) +
geom_bar(stat = "identity", position = position_dodge(width = 0.7), width = 0.6) +
geom_text(aes(label = Count),
position = position_dodge(width = 0.7),
vjust = -0.3, size = 3.5) +
scale_fill_manual(values = c("#6BAED6", "#2171B5")) +
labs(
title = "Biểu đồ 4.2. Tác động của cà phê đến giấc ngủ",
x = "Tình trạng tiêu thụ cà phê",
y = "Số người",
fill = "Tình trạng giấc ngủ"
) +
theme_minimal()

Nhận xét:
Bảng và biểu đồ trên cho thấy trong nhóm không uống cà
phê, có 173 người không bị ảnh hưởng đến giấc
ngủ (chiếm khoảng 34.6%) và 62 người
bị ảnh hưởng (chiếm 12.4%). Trong khi đó, ở
nhóm có uống cà phê, có 124 người không bị ảnh
hưởng (chiếm 24.8%) và 141 người bị
ảnh hưởng (chiếm 28.2%).
Tổng quan, ta thấy rằng tỷ lệ người bị ảnh hưởng đến giấc ngủ
cao hơn rõ rệt trong nhóm có uống cà phê so với nhóm không
uống. Điều này củng cố thêm kết luận từ kiểm định thống kê, cho thấy
việc tiêu thụ cà phê có thể là yếu tố làm suy giảm chất lượng
giấc ngủ ở một bộ phận người tham gia khảo sát.
4.3.2. Biến Biến sleep_impacted và
beverage_energy_drink
Lập bảng tần số và bảng tần suất
dt$beverage_energy_drink <- factor(dt$beverage_energy_drink,
levels = c(FALSE, TRUE),
labels = c("Không uống energy drink", "Có uống energy drink"))
tkmt1 <- table(dt$sleep_impacted, dt$beverage_energy_drink)
addmargins(tkmt1)
##
## Không uống energy drink Có uống energy drink Sum
## Không bị ảnh hưởng 280 17 297
## Bị ảnh hưởng 173 30 203
## Sum 453 47 500
ptkmt1 <- prop.table(tkmt1)
addmargins(ptkmt1)
##
## Không uống energy drink Có uống energy drink Sum
## Không bị ảnh hưởng 0.560 0.034 0.594
## Bị ảnh hưởng 0.346 0.060 0.406
## Sum 0.906 0.094 1.000
Lập biểu đồ
# Chuyển bảng tần số thành data frame
df_plot1 <- as.data.frame(tkmt1)
colnames(df_plot1) <- c("Sleep_Impacted", "Beverage_Energy", "Count")
# Vẽ biểu đồ
library(ggplot2)
ggplot(df_plot1, aes(x = Beverage_Energy, y = Count, fill = Sleep_Impacted)) +
geom_bar(stat = "identity", position = position_dodge(width = 0.7), width = 0.6) +
geom_text(aes(label = Count),
position = position_dodge(width = 0.7),
vjust = -0.3, size = 3.5) +
scale_fill_manual(values = c("#6BAED6", "#2171B5")) +
labs(
title = "Biểu đồ 4.3. Tác động của energy drink đến giấc ngủ",
x = "Tình trạng tiêu thụ energy drink",
y = "Số người",
fill = "Tình trạng giấc ngủ"
) +
theme_minimal()

Nhận xét:
Bảng và biểu đồ trên cho thấy trong nhóm không uống nước tăng
lực, có 280 người không bị ảnh hưởng đến giấc
ngủ (chiếm khoảng 56.0%) và 173 người
bị ảnh hưởng (chiếm 34.6%). Trong khi đó, ở
nhóm có uống nước tăng lực, chỉ có 17 người
không bị ảnh hưởng (chiếm 3.4%), trong khi có
30 người bị ảnh hưởng (chiếm
6.0%).
Tổng quan, ta thấy rằng tỷ lệ người bị ảnh hưởng đến giấc ngủ
cao hơn rõ rệt trong nhóm có uống nước tăng lực, trong khi phần
lớn những người không bị ảnh hưởng lại thuộc nhóm không uống.
4.3.3. Biến Biến sleep_impacted và
beverage_tea
Lập bảng tần số và bảng tần suất
dt$beverage_tea <- factor(dt$beverage_tea,
levels = c(FALSE, TRUE),
labels = c("Không uống trà", "Có uống trà"))
# Lập bảng tần số chéo
tkmt2 <- table(dt$sleep_impacted, dt$beverage_tea)
addmargins(tkmt2)
##
## Không uống trà Có uống trà Sum
## Không bị ảnh hưởng 141 156 297
## Bị ảnh hưởng 171 32 203
## Sum 312 188 500
ptkmt2 <- prop.table(tkmt2)
addmargins(ptkmt2)
##
## Không uống trà Có uống trà Sum
## Không bị ảnh hưởng 0.282 0.312 0.594
## Bị ảnh hưởng 0.342 0.064 0.406
## Sum 0.624 0.376 1.000
Lập biểu đồ
# Chuyển sang dạng data frame để vẽ
df_plot2 <- as.data.frame(tkmt2)
colnames(df_plot2) <- c("Sleep_Impacted", "Beverage_Tea", "Count")
# Vẽ biểu đồ
library(ggplot2)
ggplot(df_plot2, aes(x = Beverage_Tea, y = Count, fill = Sleep_Impacted)) +
geom_bar(stat = "identity", position = position_dodge(width = 0.7), width = 0.6) +
geom_text(aes(label = Count),
position = position_dodge(width = 0.7),
vjust = -0.3, size = 3.5) +
scale_fill_manual(values = c("#6BAED6", "#2171B5")) +
labs(
title = "Biểu đồ 4.4. Ảnh hưởng của việc uống trà đến giấc ngủ",
x = "Tình trạng tiêu thụ trà",
y = "Số người",
fill = "Tình trạng giấc ngủ"
) +
theme_minimal()

Nhận xét:
Bảng và biểu đồ trên cho thấy trong nhóm không uống
trà, có 141 người không bị ảnh hưởng đến giấc
ngủ (chiếm khoảng 28.2%) và 171 người
bị ảnh hưởng (chiếm 34.2%). Trong khi đó, ở
nhóm có uống trà, có 156 người không bị ảnh
hưởng (chiếm 31.2%) và chỉ có 32 người
bị ảnh hưởng (chiếm 6.4%).
Tổng quan, ta nhận thấy rằng tỷ lệ người bị ảnh hưởng đến
giấc ngủ thấp hơn rõ rệt trong nhóm có uống trà, trong khi phần
lớn những người bị ảnh hưởng lại thuộc nhóm không uống. Điều này cho
thấy việc uống trà có thể không phải là nguyên nhân chính gây
rối loạn giấc ngủ, hoặc thậm chí có thể liên quan đến
một lối sống giúp cải thiện giấc ngủ ở một số
người.
4.3.4. Biến sleep_impacted và
time_of_day_evening
Lập bảng tần số và bảng tần suất
dt$time_of_day_evening <- factor(dt$time_of_day_evening,
levels = c(FALSE, TRUE),
labels = c("Không uống buổi tối", "Có uống buổi tối"))
tkmt3 <- table(dt$sleep_impacted, dt$time_of_day_evening)
addmargins(tkmt3)
##
## Không uống buổi tối Có uống buổi tối Sum
## Không bị ảnh hưởng 228 69 297
## Bị ảnh hưởng 36 167 203
## Sum 264 236 500
ptkmt3 <- prop.table(tkmt3)
addmargins(ptkmt3)
##
## Không uống buổi tối Có uống buổi tối Sum
## Không bị ảnh hưởng 0.456 0.138 0.594
## Bị ảnh hưởng 0.072 0.334 0.406
## Sum 0.528 0.472 1.000
Lập biểu đồ
# Tạo bảng dữ liệu từ bảng tần số
df_evening <- as.data.frame(table(dt$sleep_impacted, dt$time_of_day_evening))
# Đặt tên cột cho rõ ràng
colnames(df_evening) <- c("Sleep_Impacted", "Evening_Intake", "Count")
# Vẽ biểu đồ cột
library(ggplot2)
ggplot(df_evening, aes(x = Evening_Intake, y = Count, fill = Sleep_Impacted)) +
geom_bar(stat = "identity", position = position_dodge(width = 0.7), width = 0.6) +
geom_text(aes(label = Count),
position = position_dodge(width = 0.7),
vjust = -0.3, size = 3.5) +
scale_fill_manual(values = c("#6BAED6", "#2171B5")) +
labs(
title = "Biểu đồ 4.5. Ảnh hưởng giấc ngủ theo việc uống caffeine buổi tối",
x = "Trạng thái tiêu thụ caffeine buổi tối",
y = "Số người",
fill = "Tình trạng giấc ngủ"
) +
theme_minimal()

Nhận xét:
Bảng và biểu đồ trên cho thấy trong nhóm có uống caffeine vào
buổi tối, có 167 người bị ảnh hưởng đến giấc
ngủ (chiếm khoảng 33.4%) và chỉ có 69
người không bị ảnh hưởng (chiếm 13.8%). Trong
khi đó, ở nhóm không uống buổi tối, có 228
người không bị ảnh hưởng (chiếm 45.6%) và chỉ
có 36 người bị ảnh hưởng (chiếm
7.2%).
Tổng thể, có thể thấy rằng tỷ lệ người bị ảnh hưởng giấc ngủ
cao hơn đáng kể trong nhóm có uống caffeine vào buổi tối, trong
khi tỷ lệ không bị ảnh hưởng lại tập trung ở nhóm không uống. Điều này
cho thấy rằng việc tiêu thụ caffeine vào buổi tối có thể là yếu
tố làm tăng nguy cơ rối loạn giấc ngủ, và người sử dụng nên cân
nhắc thời điểm uống để đảm bảo chất lượng giấc ngủ.
4.4. Kiểm định hiệu tỷ lệ
4.4.1. Biến Biến sleep_impacted và
beverage_coffee
addmargins(tkmt)
##
## Không uống cà phê Có uống cà phê Sum
## Không bị ảnh hưởng 173 124 297
## Bị ảnh hưởng 62 141 203
## Sum 235 265 500
\[
p_1 = P(\text{Bị ảnh hưởng giấc ngủ} \mid \text{Không uống cà phê})
\quad \text{(Tỷ lệ bị ảnh hưởng ở nhóm không uống cà phê)}
\]
\[
p_2 = P(\text{Bị ảnh hưởng giấc ngủ} \mid \text{Có uống cà phê}) \quad
\text{(Tỷ lệ bị ảnh hưởng ở nhóm có uống cà phê)}
\]
Giả thuyết kiểm định:
\[
H_0: p_1 - p_2 = 0 \quad \text{(Tỷ lệ bị ảnh hưởng giấc ngủ ở hai nhóm
bằng nhau)}
\]
\[
H_1: p_1 - p_2 < 0 \quad \text{(Tỷ lệ bị ảnh hưởng ở nhóm không uống
cà phê thấp hơn nhóm có uống cà phê)}
\]
# Số người bị ảnh hưởng giấc ngủ trong từng nhóm uống cà phê
counts_coffee <- c(tkmt["Bị ảnh hưởng", "Không uống cà phê"],
tkmt["Bị ảnh hưởng", "Có uống cà phê"])
# Tổng số người trong từng nhóm uống cà phê
totals_coffee <- c(sum(tkmt[, "Không uống cà phê"]),
sum(tkmt[, "Có uống cà phê"]))
# Kiểm định tỉ lệ một phía: p1 < p2
test_coffee_less <- prop.test(counts_coffee, totals_coffee,
alternative = "less", correct = FALSE)
# Hiển thị kết quả
test_coffee_less
##
## 2-sample test for equality of proportions without continuity correction
##
## data: counts_coffee out of totals_coffee
## X-squared = 37.162, df = 1, p-value = 5.436e-10
## alternative hypothesis: less
## 95 percent confidence interval:
## -1.0000000 -0.1991227
## sample estimates:
## prop 1 prop 2
## 0.2638298 0.5320755
Nhận xét
Với mức ý nghĩa \(\alpha = 5\%\), ta
bác bỏ giả thuyết không (\(H_0\)) vì
giá trị p-value rất nhỏ (\(\ll 0.05\)).
Điều này cho thấy có bằng chứng thống kê để khẳng định rằng tỷ
lệ bị ảnh hưởng giấc ngủ ở nhóm không uống cà phê thấp hơn đáng kể so
với nhóm có uống cà phê.
4.4.2. Biến Biến sleep_impacted và
beverage_energy_drink
# Lập bảng tần số chéo
tkmt1 <- table(dt$sleep_impacted, dt$beverage_energy_drink)
addmargins(tkmt1)
##
## Không uống energy drink Có uống energy drink Sum
## Không bị ảnh hưởng 280 17 297
## Bị ảnh hưởng 173 30 203
## Sum 453 47 500
\[
p_1 = P(\text{Bị ảnh hưởng giấc ngủ} \mid \text{Không uống nước tăng
lực}) \quad \text{(Tỷ lệ bị ảnh hưởng ở nhóm không uống)}
\]
\[
p_2 = P(\text{Bị ảnh hưởng giấc ngủ} \mid \text{Có uống nước tăng lực})
\quad \text{(Tỷ lệ bị ảnh hưởng ở nhóm có uống)}
\]
Giả thuyết kiểm định: \[
H_0: p_1 - p_2 = 0 \quad \text{(Tỷ lệ bị ảnh hưởng giấc ngủ ở hai nhóm
bằng nhau)}
\]
\[
H_1: p_1 - p_2 < 0 \quad \text{(Tỷ lệ bị ảnh hưởng ở nhóm không uống
nước tăng lực thấp hơn nhóm có uống)}
\]
# Số người bị ảnh hưởng giấc ngủ trong từng nhóm
counts_energy <- c(tkmt1["Bị ảnh hưởng", "Không uống energy drink"],
tkmt1["Bị ảnh hưởng", "Có uống energy drink"])
# Tổng số người trong từng nhóm
totals_energy <- c(sum(tkmt1[, "Không uống energy drink"]),
sum(tkmt1[, "Có uống energy drink"]))
# Kiểm định tỉ lệ một phía: p1 < p2
test_energy_less <- prop.test(counts_energy, totals_energy,
alternative = "less", correct = FALSE)
# Hiển thị kết quả kiểm định
test_energy_less
##
## 2-sample test for equality of proportions without continuity correction
##
## data: counts_energy out of totals_energy
## X-squared = 11.608, df = 1, p-value = 0.0003284
## alternative hypothesis: less
## 95 percent confidence interval:
## -1.0000000 -0.1351558
## sample estimates:
## prop 1 prop 2
## 0.3818985 0.6382979
Nhận xét
Với mức ý nghĩa \(\alpha = 5\%\) và
giá trị p-value = 0.0003284 (rất nhỏ hơn 0.05), ta bác bỏ giả
thuyết không \(H_0\). Điều này
cho thấy có bằng chứng thống kê để khẳng định rằng tỷ lệ bị ảnh
hưởng giấc ngủ ở nhóm không uống nước tăng lực (38.19%) thấp hơn đáng kể
so với nhóm có uống nước tăng lực (63.83%).
4.4.3. Biến Biến sleep_impacted và
beverage_tea
# Lập bảng tần số chéo
tkmt2 <- table(dt$sleep_impacted, dt$beverage_tea)
addmargins(tkmt2)
##
## Không uống trà Có uống trà Sum
## Không bị ảnh hưởng 141 156 297
## Bị ảnh hưởng 171 32 203
## Sum 312 188 500
\[
p_1 = P(\text{Bị ảnh hưởng giấc ngủ} \mid \text{Không uống trà})
\]
\[
p_2 = P(\text{Bị ảnh hưởng giấc ngủ} \mid \text{Có uống trà})
\]
Giả thuyết kiểm định: \[
H_0: p_1 - p_2 = 0 \quad \text{(Tỷ lệ bị ảnh hưởng giấc ngủ ở hai nhóm
bằng nhau)}
\]
\[
H_1: p_1 - p_2 > 0 \quad \text{(Tỷ lệ bị ảnh hưởng ở nhóm không uống
trà cao hơn nhóm có uống trà)}
\]
# Số người bị ảnh hưởng giấc ngủ trong từng nhóm uống trà
counts_tea <- c(tkmt2["Bị ảnh hưởng", "Không uống trà"],
tkmt2["Bị ảnh hưởng", "Có uống trà"])
# Tổng số người trong từng nhóm uống trà
totals_tea <- c(sum(tkmt2[, "Không uống trà"]),
sum(tkmt2[, "Có uống trà"]))
# Kiểm định tỉ lệ một phía: p1 > p2
test_tea_greater <- prop.test(counts_tea, totals_tea,
alternative = "greater", correct = FALSE)
# Hiển thị kết quả kiểm định
test_tea_greater
##
## 2-sample test for equality of proportions without continuity correction
##
## data: counts_tea out of totals_tea
## X-squared = 69.455, df = 1, p-value < 2.2e-16
## alternative hypothesis: greater
## 95 percent confidence interval:
## 0.3132075 1.0000000
## sample estimates:
## prop 1 prop 2
## 0.5480769 0.1702128
Nhận xét
Với mức ý nghĩa \(\alpha =
5\%\) và p-value rất nhỏ (<
2.2e-16), ta bác bỏ giả thuyết không (\(H_0\)). Điều này cho thấy:
Có bằng chứng thống kê để khẳng định rằng tỷ lệ bị ảnh hưởng
giấc ngủ ở nhóm không uống trà cao hơn đáng kể so với nhóm có uống
trà.
4.4.4. Biến sleep_impacted và
time_of_day_evening
addmargins(tkmt3)
##
## Không uống buổi tối Có uống buổi tối Sum
## Không bị ảnh hưởng 228 69 297
## Bị ảnh hưởng 36 167 203
## Sum 264 236 500
Giả thuyết kiểm định:
# Số người bị ảnh hưởng giấc ngủ trong từng nhóm
counts_evening <- c(tkmt3["Bị ảnh hưởng", "Không uống buổi tối"],
tkmt3["Bị ảnh hưởng", "Có uống buổi tối"])
# Tổng số người trong từng nhóm
totals_evening <- c(sum(tkmt3[, "Không uống buổi tối"]),
sum(tkmt3[, "Có uống buổi tối"]))
# Kiểm định tỉ lệ một phía: p1 < p2
test_evening_less <- prop.test(counts_evening, totals_evening,
alternative = "less", correct = FALSE)
# Hiển thị kết quả kiểm định
test_evening_less
##
## 2-sample test for equality of proportions without continuity correction
##
## data: counts_evening out of totals_evening
## X-squared = 168.62, df = 1, p-value < 2.2e-16
## alternative hypothesis: less
## 95 percent confidence interval:
## -1.0000000 -0.5114408
## sample estimates:
## prop 1 prop 2
## 0.1363636 0.7076271
Nhận xét
Với p-value < 2.2e-16, nhỏ hơn rất nhiều so với mức ý nghĩa alpha
= 5%, ta bác bỏ giả thuyết không (H0). Có bằng chứng thống kê cho thấy
rằng tỷ lệ bị ảnh hưởng giấc ngủ ở nhóm không uống buổi tối thấp hơn
đáng kể so với nhóm có uống buổi tối
4.5.Relative Risk và khoảng ước lượng cho Relative
Risk
4.5.1. Biến Biến sleep_impacted và
beverage_coffee
rr <- table(dt$beverage_coffee,dt$sleep_impacted)
rr<- rr[, c("Bị ảnh hưởng", "Không bị ảnh hưởng")]
addmargins(rr)
##
## Bị ảnh hưởng Không bị ảnh hưởng Sum
## Không uống cà phê 62 173 235
## Có uống cà phê 141 124 265
## Sum 203 297 500
RelRisk(rr, conf.level = .95)
## rel. risk lwr.ci upr.ci
## 0.4958503 0.3878239 0.6280792
Nhận xét:
Relative Risk giữa biến sleep_impacted
và
beverage_coffee
là 0.4958503, nhỏ hơn 1.
Điều này cho thấy rằng người không uống cà phê có nguy cơ bị ảnh
hưởng đến giấc ngủ thấp hơn so với người có uống cà phê (chỉ
bằng khoảng 49.6% so với nhóm có uống cà phê).
Khoảng tin cậy 95% của RR là từ 0.3878 đến
0.6281. Điều này chứng minh rằng mối liên hệ
giữa việc uống cà phê và tình trạng ảnh hưởng đến giấc ngủ là có ý nghĩa
thống kê.
Kết quả củng cố giả thuyết rằng tiêu thụ cà phê có thể
làm suy giảm chất lượng giấc ngủ, và những người không
uống cà phê có xu hướng ít bị ảnh hưởng hơn về
giấc ngủ.
4.5.2. Biến Biến sleep_impacted và
beverage_energy_drink
rr1 <- table(dt$beverage_energy_drink,dt$sleep_impacted)
rr1 <- rr1[, c("Bị ảnh hưởng", "Không bị ảnh hưởng")]
addmargins(rr1)
##
## Bị ảnh hưởng Không bị ảnh hưởng Sum
## Không uống energy drink 173 280 453
## Có uống energy drink 30 17 47
## Sum 203 297 500
RelRisk(rr1, conf.level = .95)
## rel. risk lwr.ci upr.ci
## 0.5983076 0.4811892 0.7884799
Nhận xét:
Relative Risk giữa biến
sleep_impacted
và beverage_energy_drink
là
0.5983, tức là người không uống nước tăng lực
có nguy cơ bị ảnh hưởng đến giấc ngủ chỉ bằng khoảng 59.8% so với người
có uống nước tăng lực.
Khoảng tin cậy 95% của RR là từ
0.4812 đến 0.7885 cho thấy rằng
mối liên hệ này có ý nghĩa thống kê.
Điều này đồng nghĩa với việc việc tiêu thụ nước tăng lực
có thể làm tăng nguy cơ bị ảnh hưởng đến giấc ngủ. Những người
không tiêu thụ nước tăng lực có xu hướng ít bị rối loạn giấc ngủ
hơn so với nhóm có sử dụng.
4.5.3. Biến Biến sleep_impacted và
beverage_tea
rr2 <- table(dt$beverage_tea,dt$sleep_impacted)
rr2 <- rr2[, c("Bị ảnh hưởng", "Không bị ảnh hưởng")]
addmargins(rr2)
##
## Bị ảnh hưởng Không bị ảnh hưởng Sum
## Không uống trà 171 141 312
## Có uống trà 32 156 188
## Sum 203 297 500
RelRisk(rr2, conf.level = .95)
## rel. risk lwr.ci upr.ci
## 3.219952 2.337169 4.512233
Nhận xét:
Relative Risk giữa biến
sleep_impacted
và beverage_tea
là
3.220, tức là nguy cơ bị ảnh hưởng đến giấc ngủ
ở nhóm không uống trà cao gấp khoảng 3.22 lần so với nhóm có uống
trà.
Khoảng tin cậy 95% là từ 2.337
đến 4.512 cho thấy rằng mối liên hệ giữa việc
uống trà và tình trạng ảnh hưởng giấc ngủ là có ý nghĩa thống
kê.
Điều này ngụ ý rằng những người không uống trà có nguy cơ
cao hơn đáng kể bị ảnh hưởng đến giấc ngủ, trong khi
việc uống trà có thể liên quan đến chất lượng giấc ngủ tốt
hơn ở một số đối tượng.
4.5.4. Biến sleep_impacted và
time_of_day_evening
rr3 <- table(dt$time_of_day_evening,dt$sleep_impacted)
rr3 <- rr3[, c("Bị ảnh hưởng", "Không bị ảnh hưởng")]
addmargins(rr3)
##
## Bị ảnh hưởng Không bị ảnh hưởng Sum
## Không uống buổi tối 36 228 264
## Có uống buổi tối 167 69 236
## Sum 203 297 500
RelRisk(rr3, conf.level = .95)
## rel. risk lwr.ci upr.ci
## 0.1927055 0.1401257 0.2617947
Nhận xét:
Relative Risk giữa biến
sleep_impacted
và time_of_day_evening
là
0.193, tức là những người không tiêu thụ
caffeine vào buổi tối có nguy cơ bị ảnh hưởng đến giấc ngủ chỉ bằng
khoảng 19.3% so với những người có tiêu thụ vào buổi
tối.
Khoảng tin cậy 95% từ 0.1401
đến 0.2618 cho thấy kết quả này có ý nghĩa
thống kê.
Điều này cho thấy rằng việc tiêu thụ caffeine vào buổi
tối có liên quan chặt chẽ đến việc bị ảnh hưởng đến giấc ngủ.
Những người uống caffeine vào buổi tối có khả năng bị ảnh hưởng
giấc ngủ cao hơn đáng kể so với những người không uống vào thời
điểm này.
4.6. Odds ratio và khoảng ước lượng cho Odds
ratio
4.6.1. Biến Biến sleep_impacted và
beverage_coffee
or <- table(dt$beverage_coffee,dt$sleep_impacted)
or <- or[, c("Bị ảnh hưởng", "Không bị ảnh hưởng")]
addmargins(or)
##
## Bị ảnh hưởng Không bị ảnh hưởng Sum
## Không uống cà phê 62 173 235
## Có uống cà phê 141 124 265
## Sum 203 297 500
OddsRatio(or, conf.level = .95)
## odds ratio lwr.ci upr.ci
## 0.3151724 0.2161076 0.4596489
Nhận xét:
Odds của việc bị ảnh hưởng giấc ngủ ở nhóm không uống cà phê chỉ
bằng 31.5% so với odds ở nhóm có uống cà phê. Điều này cho thấy rằng
người không uống cà phê có khả năng bị ảnh hưởng giấc ngủ thấp hơn đáng
kể so với người uống cà phê.
Khoảng tin cậy 95% của Odds Ratio nằm trong
khoảng từ 0.2161 đến 0.4596. Điều này cho thấy kết quả
là có ý nghĩa thống kê, và việc tiêu thụ cà phê
có mối liên hệ đáng kể với chất lượng giấc ngủ.
4.6.2. Biến Biến sleep_impacted và
beverage_energy_drink
or1 <- table(dt$beverage_energy_drink,dt$sleep_impacted)
or1 <- or1[, c("Bị ảnh hưởng", "Không bị ảnh hưởng")]
addmargins(or1)
##
## Bị ảnh hưởng Không bị ảnh hưởng Sum
## Không uống energy drink 173 280 453
## Có uống energy drink 30 17 47
## Sum 203 297 500
OddsRatio(or1, conf.level = .95)
## odds ratio lwr.ci upr.ci
## 0.3501190 0.1875078 0.6537506
Nhận xét:
Odds của việc bị ảnh hưởng giấc ngủ ở nhóm không uống nước tăng
lực chỉ bằng 35% so với odds ở nhóm có uống nước tăng lực. Hay nói cách
khác, người có uống energy drink có nguy cơ bị ảnh hưởng giấc ngủ cao
hơn gần 3 lần so với người không uống.
Khoảng tin cậy 95% của Odds Ratio nằm trong
khoảng từ 0.1875 đến 0.6538. Điều này cho thấy kết quả
là có ý nghĩa thống kê, và có thể kết luận rằng
việc uống nước tăng lực có liên quan đến việc làm giảm chất lượng giấc
ngủ của người dùng.
4.6.3. Biến Biến sleep_impacted và
beverage_tea
or2 <- table(dt$beverage_tea,dt$sleep_impacted)
or2 <- or2[, c("Bị ảnh hưởng", "Không bị ảnh hưởng")]
addmargins(or2)
##
## Bị ảnh hưởng Không bị ảnh hưởng Sum
## Không uống trà 171 141 312
## Có uống trà 32 156 188
## Sum 203 297 500
OddsRatio(or2, conf.level = .95)
## odds ratio lwr.ci upr.ci
## 5.912234 3.804327 9.188094
Nhận xét:
Odds của việc bị ảnh hưởng giấc ngủ ở nhóm không uống trà cao gấp
5.91 lần so với odds của nhóm có uống trà.. Điều này có nghĩa là
khả năng bị ảnh hưởng đến giấc ngủ ở nhóm không uống trà cao gấp
gần 6 lần so với nhóm có uống trà.
Khoảng tin cậy 95% của Odds Ratio là
[3.80; 9.19]. Điều này cho thấy rằng kết quả là
có ý nghĩa thống kê, và có thể kết luận rằng
việc không uống trà có liên quan đáng kể đến việc tăng khả năng
bị ảnh hưởng giấc ngủ.
4.6.4. Biến sleep_impacted và
time_of_day_evening
or3 <- table(dt$time_of_day_evening,dt$sleep_impacted)
or3 <- or3[, c("Bị ảnh hưởng", "Không bị ảnh hưởng")]
addmargins(or3)
##
## Bị ảnh hưởng Không bị ảnh hưởng Sum
## Không uống buổi tối 36 228 264
## Có uống buổi tối 167 69 236
## Sum 203 297 500
OddsRatio(or3, conf.level = .95)
## odds ratio lwr.ci upr.ci
## 0.06523795 0.04160995 0.10228296
Nhận xét:
Odds của việc bị ảnh hưởng giấc ngủ ở nhóm không uống vào buổi
tối chỉ bằng 6.5% so với odds của nhóm có uống vào buổi tối. Nói cách
khác, người có uống đồ uống chứa caffeine vào buổi tối có nguy cơ bị ảnh
hưởng giấc ngủ cao gấp khoảng 15.3 lần so với người không uống.
Khoảng tin cậy 95% cho Odds Ratio là
[0.042; 0.102] cho thấy kết quả này là có ý
nghĩa thống kê.
Kết quả này cho thấy có mối liên hệ chặt chẽ giữa việc
uống caffeine vào buổi tối và nguy cơ bị ảnh hưởng đến giấc
ngủ. Cụ thể, những người uống caffeine vào buổi tối có
nguy cơ bị ảnh hưởng giấc ngủ cao hơn đáng kể so với
những người không uống vào thời điểm này.
4.7. Mô hình hồi quy đơn
4.7.1. Mô hình Logit
\[
H_0: \text{Biến không có ảnh hưởng đến xác suất giấc ngủ bị ảnh hưởng}
\] \[
H_1: \text{Biến có ảnh hưởng đến xác suất giấc ngủ bị ảnh hưởng}
\] Trước tiên, tác giả thực hiện các mô hình hồi quy logistic đơn
biến, mỗi mô hình chỉ bao gồm một biến giải thích nhằm phân tích riêng
lẻ ảnh hưởng của từng yếu tố đến khả năng ảnh hưởng đến giấc ngủ.
4.7.1.1. Biến beverage_coffee
# Tạo biến nhị phân mới cho mô hình
dt$sleep_binary <- ifelse(dt$sleep_impacted == "Bị ảnh hưởng", 1, 0)
# Chạy mô hình logistic
xstt.ML <- glm(sleep_binary ~ beverage_coffee, data = dt, family = binomial)
summary(xstt.ML)
##
## Call:
## glm(formula = sleep_binary ~ beverage_coffee, family = binomial,
## data = dt)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.0262 0.1480 -6.933 4.13e-12 ***
## beverage_coffeeCó uống cà phê 1.1546 0.1925 5.997 2.01e-09 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 675.37 on 499 degrees of freedom
## Residual deviance: 637.48 on 498 degrees of freedom
## AIC: 641.48
##
## Number of Fisher Scoring iterations: 4
# Mô hình hồi quy logistic với biến beverage_coffee
reglogit_coffee <- glm(sleep_binary ~ beverage_coffee, data = dt, family = binomial(link = 'logit'))
summary(reglogit_coffee)
##
## Call:
## glm(formula = sleep_binary ~ beverage_coffee, family = binomial(link = "logit"),
## data = dt)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.0262 0.1480 -6.933 4.13e-12 ***
## beverage_coffeeCó uống cà phê 1.1546 0.1925 5.997 2.01e-09 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 675.37 on 499 degrees of freedom
## Residual deviance: 637.48 on 498 degrees of freedom
## AIC: 641.48
##
## Number of Fisher Scoring iterations: 4
Nhận xét:
Hàm hồi quy logistic được ước lượng như sau:
\[
\ln\left(\frac{\hat{\pi}}{1 - \hat{\pi}}\right) = -1.0262 + 1.1546 \cdot
\text{beverage_coffee}
\]
Có uống cà phê |
Không uống cà phê |
1.15 |
2.01e-09 |
3.16 |
Người có uống cà phê có odds bị ảnh hưởng giấc ngủ
cao gấp 3 lần so với người không uống cà phê (có ý
nghĩa thống kê mạnh). |
Kết luận:
Kết quả hồi quy logistic cho thấy biến thói quen uống cà phê
(beverage_coffee) có ảnh hưởng đáng kể đến khả năng bị ảnh hưởng giấc
ngủ. Cụ thể, những người có uống cà phê có odds bị ảnh hưởng giấc ngủ
cao hơn khoảng 3.16 lần so với những người không uống cà phê. Hệ số hồi
quy là 1.15 với p-value = 2.01e-09, nhỏ hơn mức ý nghĩa 5%, cho thấy kết
quả này có ý nghĩa thống kê rất mạnh. Điều này đồng nghĩa với việc thói
quen uống cà phê là một yếu tố có liên quan rõ rệt đến chất lượng giấc
ngủ và cần được xem xét trong các phân tích liên quan đến sức khỏe giấc
ngủ.
Khoảng tin cậy cho các hệ số của mô hình:
confint(reglogit_coffee)
## Waiting for profiling to be done...
## 2.5 % 97.5 %
## (Intercept) -1.3234637 -0.7421469
## beverage_coffeeCó uống cà phê 0.7811067 1.5365395
Nhận xét:
Khoảng tin cậy 95% cho hệ số hồi quy của biến
beverage_coffee là từ 0.7811 đến 1.5365. Vì toàn bộ khoảng này
đều lớn hơn 0, điều này cho thấy rằng biến beverage_coffee có ảnh hưởng
dương và có ý nghĩa thống kê đến khả năng bị ảnh hưởng giấc ngủ. Nói
cách khác, những người có uống cà phê có xu hướng dễ bị ảnh hưởng đến
giấc ngủ hơn so với những người không uống.
4.7.1.2. Biến beverage_energy_drink
# Mô hình hồi quy logistic với biến beverage_energy_drink
reglogit_energy <- glm(sleep_binary ~ beverage_energy_drink,
family = binomial(link = "logit"),
data = dt)
summary(reglogit_energy)
##
## Call:
## glm(formula = sleep_binary ~ beverage_energy_drink, family = binomial(link = "logit"),
## data = dt)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.4815 0.0967 -4.979 6.39e-07
## beverage_energy_drinkCó uống energy drink 1.0495 0.3186 3.294 0.000988
##
## (Intercept) ***
## beverage_energy_drinkCó uống energy drink ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 675.37 on 499 degrees of freedom
## Residual deviance: 663.99 on 498 degrees of freedom
## AIC: 667.99
##
## Number of Fisher Scoring iterations: 4
Nhận xét:
Phương trình hồi quy:
\[
\ln\left(\frac{\hat{\pi}}{1 - \hat{\pi}}\right) = -0.4815 + 1.0495 \cdot
\text{beverage_energy_drink}
\]
Có uống energy drink |
Không uống |
1.05 |
0.000988 |
2.86 |
Người có uống nước tăng lực có odds bị ảnh hưởng
giấc ngủ cao gấp gần 3 lần so với người không uống
(có ý nghĩa thống kê). |
Kết quả hồi quy logistic cho thấy biến thói quen sử dụng nước tăng
lực (beverage_energy_drink) có ảnh hưởng đáng kể đến khả năng bị ảnh
hưởng giấc ngủ. Cụ thể, người có uống nước tăng lực có odds bị ảnh hưởng
giấc ngủ cao hơn khoảng 2.86 lần so với người không uống . Hệ số hồi quy
là 1.05, với p-value = 0.000988, nhỏ hơn mức ý nghĩa 5%, cho thấy mối
liên hệ này có ý nghĩa thống kê mạnh. Điều này cho thấy việc sử dụng
nước tăng lực là một yếu tố quan trọng cần được lưu ý khi nghiên cứu các
vấn đề liên quan đến chất lượng giấc ngủ.
Nhận xét:
Khoảng tin cậy cho các hệ số của mô hình:
confint(reglogit_energy)
## Waiting for profiling to be done...
## 2.5 % 97.5 %
## (Intercept) -0.6725984 -0.2932331
## beverage_energy_drinkCó uống energy drink 0.4361736 1.6930492
Nhận xét:
Khoảng tin cậy 95% cho hệ số hồi quy của biến
beverage_energy_drink là từ 0.4362 đến 1.6930. Vì toàn bộ
khoảng này đều lớn hơn 0, ta kết luận rằng việc uống nước tăng lực có
ảnh hưởng dương và có ý nghĩa thống kê đến khả năng bị ảnh hưởng giấc
ngủ. Nói cách khác, những người có uống nước tăng lực có khả năng bị ảnh
hưởng đến giấc ngủ cao hơn so với người không uống.
4.7.1.3. Biến beverage_tea
# Mô hình hồi quy logistic với biến beverage_tea
reglogit_tea <- glm(sleep_binary ~ beverage_tea,
data = dt,
family = binomial(link = "logit"))
summary(reglogit_tea)
##
## Call:
## glm(formula = sleep_binary ~ beverage_tea, family = binomial(link = "logit"),
## data = dt)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 0.1929 0.1138 1.696 0.0899 .
## beverage_teaCó uống trà -1.7770 0.2249 -7.900 2.79e-15 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 675.37 on 499 degrees of freedom
## Residual deviance: 601.17 on 498 degrees of freedom
## AIC: 605.17
##
## Number of Fisher Scoring iterations: 3
Nhận xét:
Ta có hàm hồi quy logistic:
\[
\ln\left(\frac{\hat{\pi}}{1 - \hat{\pi}}\right) = 0.1929 - 1.7770 \cdot
\text{beverage_tea}
\]
Có uống trà |
Không uống trà |
-1.78 |
2.79e-15 |
0.17 |
Người có uống trà có odds bị ảnh hưởng giấc ngủ
thấp hơn 83% so với người không uống
trà (có ý nghĩa thống kê rất mạnh). |
Kết luận:
Kết quả hồi quy logistic cho thấy biến thói quen sử dụng trà
(beverage_tea) có ảnh hưởng đáng kể đến khả năng bị ảnh hưởng giấc ngủ.
Cụ thể, người có uống trà có odds bị ảnh hưởng giấc ngủ thấp hơn khoảng
83% so với người không uống trà. Hệ số hồi quy là -1.78, với p-value ≈
2.79e-15, nhỏ hơn rất nhiều so với mức ý nghĩa 5%, cho thấy mối liên hệ
này có ý nghĩa thống kê rất mạnh. Điều này gợi ý rằng việc sử dụng trà
có thể là một yếu tố bảo vệ, giúp giảm nguy cơ bị ảnh hưởng giấc
ngủ.
Khoảng tin cậy cho các hệ số của mô hình:
confint(reglogit_tea)
## Waiting for profiling to be done...
## 2.5 % 97.5 %
## (Intercept) -0.02948552 0.4168906
## beverage_teaCó uống trà -2.23110122 -1.3471822
Nhận xét:
Khoảng tin cậy 95% cho hệ số hồi quy của biến beverage_tea là từ
-2.2311 đến -1.3472. Vì toàn bộ khoảng này đều nhỏ hơn 0, ta kết luận
rằng việc uống trà có ảnh hưởng âm và có ý nghĩa thống kê đến khả năng
bị ảnh hưởng giấc ngủ. Nói cách khác, những người có uống trà có khả
năng bị ảnh hưởng đến giấc ngủ thấp hơn so với người không uống.
4.7.1.4. Biến time_of_day_evening
# Mô hình hồi quy logistic với biến time_of_day_evening
reglogit_evening <- glm(sleep_binary ~ time_of_day_evening,
data = dt,
family = binomial(link = "logit"))
summary(reglogit_evening)
##
## Call:
## glm(formula = sleep_binary ~ time_of_day_evening, family = binomial(link = "logit"),
## data = dt)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.8458 0.1793 -10.29 <2e-16 ***
## time_of_day_eveningCó uống buổi tối 2.7297 0.2294 11.90 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 675.37 on 499 degrees of freedom
## Residual deviance: 495.52 on 498 degrees of freedom
## AIC: 499.52
##
## Number of Fisher Scoring iterations: 4
Nhận xét:
Ta có hàm hồi quy:
\[
\ln\left(\frac{\hat\pi}{1 - \hat\pi}\right) = -1.8458 + 2.7297 \cdot
\text{time_of_day_evening}
\]
Có uống buổi tối |
Không uống buổi tối |
2.73 |
< 2e-16 |
15.33 |
Người có uống buổi tối có odds bị ảnh hưởng giấc
ngủ cao hơn khoảng 15 lần so với người không
uống buổi tối (có ý nghĩa thống kê rất mạnh). |
Kết luận:
Kết quả hồi quy logistic cho thấy thời điểm uống buổi tối có ảnh
hưởng rất đáng kể đến khả năng bị ảnh hưởng giấc ngủ. Cụ thể, người có
uống vào buổi tối có odds bị ảnh hưởng giấc ngủ cao hơn khoảng 15.33 lần
so với người không uống buổi tối. Hệ số hồi quy là 2.73, với p-value
< 2e-16, nhỏ hơn rất nhiều so với mức ý nghĩa 5%, cho thấy mối liên
hệ này có ý nghĩa thống kê rất mạnh. Điều này nhấn mạnh rằng việc tiêu
thụ các loại thức uống vào buổi tối là yếu tố có tác động mạnh đến chất
lượng giấc ngủ, cần được xem xét kỹ trong các nghiên cứu liên quan đến
sức khỏe giấc ngủ.
Khoảng tin cậy cho các hệ số của mô hình:
confint(reglogit_evening)
## Waiting for profiling to be done...
## 2.5 % 97.5 %
## (Intercept) -2.213420 -1.508283
## time_of_day_eveningCó uống buổi tối 2.290603 3.191457
Nhận xét:
Khoảng tin cậy 95% cho hệ số hồi quy của biến
time_of_day_evening nằm trong khoảng từ 2.2906 đến 3.1915. Vì
toàn bộ khoảng tin cậy này lớn hơn 0, ta kết luận rằng việc uống đồ uống
vào buổi tối có ảnh hưởng dương và có ý nghĩa thống kê đến khả năng bị
ảnh hưởng giấc ngủ. Cụ thể, những người uống vào buổi tối có xác suất bị
ảnh hưởng giấc ngủ cao hơn rõ rệt so với những người không uống.
4.7.2. Mô hình Probit
\[
H_0: \text{Biến không có ảnh hưởng đến xác suất giấc ngủ bị ảnh hưởng}
\]
\[
H_1: \text{Biến có ảnh hưởng đến xác suất giấc ngủ bị ảnh hưởng}
\]
Tác giả thực hiện hồi quy Probit đơn biến, mỗi mô hình chỉ bao gồm
một biến giải thích nhằm phân tích riêng lẻ ảnh hưởng của từng yếu tố
đến khả năng ảnh hưởng đến giấc ngủ.
4.7.2.1. Biến beverage_coffee
# Mô hình Probit với biến beverage_coffee
probit_coffee <- glm(sleep_binary ~ beverage_coffee, data = dt, family = binomial(link = "probit"))
summary(probit_coffee)
##
## Call:
## glm(formula = sleep_binary ~ beverage_coffee, family = binomial(link = "probit"),
## data = dt)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.63158 0.08797 -7.180 6.99e-13 ***
## beverage_coffeeCó uống cà phê 0.71207 0.11696 6.088 1.14e-09 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 675.37 on 499 degrees of freedom
## Residual deviance: 637.48 on 498 degrees of freedom
## AIC: 641.48
##
## Number of Fisher Scoring iterations: 4
Nhận xét:
Ta có hàm Probit ước lượng:
\[
\Phi^{-1}(\hat{\pi}) = -0.63158 + 0.71207 \cdot \text{beverage_coffee}
\]
Kết quả hồi quy Probit cho thấy thói quen uống cà phê có ảnh hưởng
đáng kể đến xác suất bị ảnh hưởng giấc ngủ. Hệ số ước lượng cho biến “Có
uống cà phê” là 0.712 với p-value = 1.14e-09, cho thấy mối quan hệ này
có ý nghĩa thống kê rất mạnh. Điều này đồng nghĩa với việc những người
có uống cà phê có xác suất bị ảnh hưởng giấc ngủ cao hơn so với những
người không uống cà phê. Kết quả này củng cố giả thuyết rằng caffeine
trong cà phê là một yếu tố đáng chú ý khi xem xét đến chất lượng giấc
ngủ.
Khoảng tin cậy cho các hệ số của mô hình:
confint(probit_coffee)
## Waiting for profiling to be done...
## 2.5 % 97.5 %
## (Intercept) -0.8055766 -0.4606198
## beverage_coffeeCó uống cà phê 0.4837101 0.9422671
Nhận xét:
Với độ tin cậy 95%, hệ số Intercept có khoảng tin cậy từ -0.8056 đến
-0.4606, cho thấy xác suất bị ảnh hưởng giấc ngủ ở nhóm không uống cà
phê là tương đối thấp.
Hệ số của biến beverage_coffee nằm trong khoảng từ 0.4837 đến 0.9423,
đều dương và không chứa 0. Điều này cho thấy việc uống cà phê làm tăng
xác suất bị ảnh hưởng đến giấc ngủ một cách có ý nghĩa thống kê.
4.7.2.2. Biến beverage_energy_drink
probit_energy <- glm(sleep_binary ~ beverage_energy_drink,
family = binomial(link = "probit"), data = dt)
summary(probit_energy)
##
## Call:
## glm(formula = sleep_binary ~ beverage_energy_drink, family = binomial(link = "probit"),
## data = dt)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.30050 0.05986 -5.020 5.17e-07
## beverage_energy_drinkCó uống energy drink 0.65441 0.19638 3.332 0.000861
##
## (Intercept) ***
## beverage_energy_drinkCó uống energy drink ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 675.37 on 499 degrees of freedom
## Residual deviance: 663.99 on 498 degrees of freedom
## AIC: 667.99
##
## Number of Fisher Scoring iterations: 4
Nhận xét:
Ta có hàm hồi quy Probit:
\[
\Phi^{-1}(\hat{\pi}) = -0.30050 + 0.65441 \cdot
\text{beverage_energy_drink}
\]
Kết quả hồi quy Probit cho thấy việc uống nước tăng lực (energy
drink) có ảnh hưởng đáng kể đến xác suất bị ảnh hưởng giấc ngủ. Cụ thể,
hệ số ước lượng cho biến “Có uống energy drink” là 0.654 với p-value =
0.000861, nhỏ hơn mức ý nghĩa 1%, cho thấy mối quan hệ này có ý nghĩa
thống kê mạnh. Điều này cho thấy những người có thói quen sử dụng nước
tăng lực có xác suất bị ảnh hưởng giấc ngủ cao hơn so với những người
không sử dụng. Kết quả này gợi ý rằng nước tăng lực là một yếu tố cần
được lưu ý trong các nghiên cứu về chất lượng giấc ngủ.
Khoảng tin cậy cho các hệ số của mô hình:
confint(probit_energy )
## Waiting for profiling to be done...
## 2.5 % 97.5 %
## (Intercept) -0.4181583 -0.1834748
## beverage_energy_drinkCó uống energy drink 0.2724920 1.0430772
Nhận xét:
Với độ tin cậy 95%, giá trị thực của Intercept nằm
trong khoảng từ -0.4182 đến -0.1835,
trong khi đó giá trị thực của tham số
beverage_energy_drink (ứng với nhóm “Có uống energy drink”) nằm
trong khoảng từ 0.2725 đến 1.0431.
Khoảng tin cậy của tham số beverage_energy_drink
hoàn toàn nằm phía dương, cho thấy biến này có ảnh hưởng đáng kể
và có ý nghĩa thống kê trong mô hình. Nói cách khác, việc
uống nước tăng lực có khả năng làm tăng xác suất bị ảnh hưởng
đến giấc ngủ một cách có ý nghĩa thống kê, so với nhóm không
uống.
4.7.2.3. Biến beverage_tea
probit_tea <- glm(sleep_binary ~ beverage_tea,
family = binomial(link = "probit"), data = dt)
summary(probit_tea)
##
## Call:
## glm(formula = sleep_binary ~ beverage_tea, family = binomial(link = "probit"),
## data = dt)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 0.12080 0.07114 1.698 0.0895 .
## beverage_teaCó uống trà -1.07413 0.12952 -8.293 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 675.37 on 499 degrees of freedom
## Residual deviance: 601.17 on 498 degrees of freedom
## AIC: 605.17
##
## Number of Fisher Scoring iterations: 3
Nhận xét:
Ta có hàm hồi quy Probit:
\[
\Phi^{-1}(\hat{\pi}) = 0.12080 - 1.07413 \cdot \text{beverage_tea}
\]
Kết quả hồi quy Probit cho thấy việc uống trà có ảnh hưởng đáng kể
đến xác suất bị ảnh hưởng giấc ngủ. Biến “Có uống trà” có hệ số ước
lượng là -1.074, với p-value < 2e-16, cho thấy mối liên hệ âm này có
ý nghĩa thống kê rất mạnh. Nghĩa là, những người có thói quen uống trà
có xác suất bị ảnh hưởng giấc ngủ thấp hơn so với người không uống. Điều
này gợi ý rằng uống trà có thể có tác động tích cực đến giấc ngủ, hoặc
ít nhất là không gây ảnh hưởng tiêu cực như một số loại thức uống chứa
caffeine khác.
Khoảng tin cậy cho các hệ số của mô hình:
confint(probit_tea)
## Waiting for profiling to be done...
## 2.5 % 97.5 %
## (Intercept) -0.01847695 0.2604419
## beverage_teaCó uống trà -1.33076128 -0.8228012
Nhận xét:
Với độ tin cậy 95%, khoảng tin cậy cho hệ số chặn (Intercept) nằm
trong khoảng từ -0.0185 đến 0.2604, nghĩa là không có ý nghĩa thống kê
vì khoảng này chứa 0.
Tuy nhiên, hệ số của biến beverage_tea nằm trong khoảng từ -1.331 đến
-0.823, không chứa 0, cho thấy việc uống trà có ảnh hưởng tiêu cực đáng
kể đến xác suất bị ảnh hưởng giấc ngủ trong mô hình Probit, và ảnh hưởng
này là có ý nghĩa thống kê ở mức 5%.
4.7.2.4. Biến time_of_day_evening
# Mô hình Probit với biến time_of_day_evening
probit_evening <- glm(sleep_binary ~ time_of_day_evening,
family = binomial(link = "probit"),
data = dt)
summary(probit_evening)
##
## Call:
## glm(formula = sleep_binary ~ time_of_day_evening, family = binomial(link = "probit"),
## data = dt)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.09680 0.09661 -11.35 <2e-16 ***
## time_of_day_eveningCó uống buổi tối 1.64327 0.12946 12.69 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 675.37 on 499 degrees of freedom
## Residual deviance: 495.52 on 498 degrees of freedom
## AIC: 499.52
##
## Number of Fisher Scoring iterations: 4
Nhận xét:
Ta có phương trình hồi quy Probit:
\[
\Phi^{-1}(\hat{\pi}) = -1.0968 + 1.6433 \cdot \text{time_of_day_evening}
\]
Kết quả hồi quy Probit cho thấy thời điểm tiêu thụ đồ uống vào buổi
tối có ảnh hưởng rất rõ rệt đến xác suất bị ảnh hưởng giấc ngủ. Cụ thể,
biến “Có uống buổi tối” có hệ số ước lượng là 1.643, với p-value <
2e-16, cho thấy đây là một yếu tố có ý nghĩa thống kê cực kỳ mạnh. Điều
này cho thấy những người uống đồ uống vào buổi tối có xác suất bị ảnh
hưởng giấc ngủ cao hơn đáng kể so với những người không uống vào thời
điểm này. Như vậy, thời điểm tiêu thụ thức uống – đặc biệt là buổi tối –
là yếu tố quan trọng cần lưu ý khi nghiên cứu các vấn đề liên quan đến
chất lượng giấc ngủ.
Khoảng tin cậy cho các hệ số của mô hình:
confint(probit_evening)
## Waiting for profiling to be done...
## 2.5 % 97.5 %
## (Intercept) -1.289851 -0.9108277
## time_of_day_eveningCó uống buổi tối 1.391968 1.8996081
Nhận xét:
Với độ tin cậy 95%:
Giá trị thực của Intercept nằm trong khoảng từ -1.29 đến -0.91, cho
thấy ở nhóm không uống vào buổi tối, xác suất bị ảnh hưởng đến giấc ngủ
là tương đối thấp.
Hệ số của biến time_of_day_evening nằm trong khoảng từ 1.39 đến 1.90,
điều này khẳng định rằng việc uống vào buổi tối làm tăng đáng kể xác
suất bị ảnh hưởng đến giấc ngủ.
4.7.3. Mô hình Cloglog
4.7.3.1. Biến beverage_coffee
# Mô hình Cloglog với biến beverage_coffee
cloglog_coffee <- glm(sleep_binary ~ beverage_coffee, data = dt, family = binomial(link = "cloglog"))
summary(cloglog_coffee)
##
## Call:
## glm(formula = sleep_binary ~ beverage_coffee, family = binomial(link = "cloglog"),
## data = dt)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.1832 0.1275 -9.280 < 2e-16 ***
## beverage_coffeeCó uống cà phê 0.9080 0.1539 5.899 3.66e-09 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 675.37 on 499 degrees of freedom
## Residual deviance: 637.48 on 498 degrees of freedom
## AIC: 641.48
##
## Number of Fisher Scoring iterations: 5
Dựa trên kết quả mô hình hồi quy với hàm liên kết cloglog, ta có
phương trình:
\[
\log\left(-\log\left(1 - P(\text{sleep} = 1)\right)\right) = -1.1832 +
0.9080 \cdot \text{beverage_coffee}
\] Nhận xét:
Kết quả hồi quy Cloglog đơn biến cho thấy việc uống cà phê có ảnh
hưởng có ý nghĩa thống kê đến khả năng có giấc ngủ, với giá trị p =
3.66e-09, nhỏ hơn mức ý nghĩa 5%. Cụ thể, hệ số ước lượng là 0.908, cho
thấy nhóm người có uống cà phê có giá trị cloglog cao hơn, đồng nghĩa
với việc xác suất có giấc ngủ cũng cao hơn so với nhóm không uống cà
phê. Điều này cho thấy, theo mô hình Cloglog, việc tiêu thụ cà phê có
mối liên hệ đáng kể với khả năng có giấc ngủ, và mối liên hệ này mang ý
nghĩa thống kê rõ rệt.
4.7.3.2. Biến beverage_energy_drink
# Mô hình Cloglog với biến beverage_energy_drink
cloglog_energy <- glm(sleep_binary ~ beverage_energy_drink, data = dt, family = binomial(link = "cloglog"))
summary(cloglog_energy)
##
## Call:
## glm(formula = sleep_binary ~ beverage_energy_drink, family = binomial(link = "cloglog"),
## data = dt)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.73167 0.07676 -9.531 < 2e-16
## beverage_energy_drinkCó uống energy drink 0.74847 0.20543 3.644 0.000269
##
## (Intercept) ***
## beverage_energy_drinkCó uống energy drink ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 675.37 on 499 degrees of freedom
## Residual deviance: 663.99 on 498 degrees of freedom
## AIC: 667.99
##
## Number of Fisher Scoring iterations: 5
Dựa trên kết quả mô hình hồi quy với hàm liên kết
cloglog, ta có phương trình hồi quy như sau:
\[
\log\left(-\log\left(1 - P(\text{sleep} = 1)\right)\right) = -0.73167 +
0.74847 \cdot \text{beverage_energy_drink}
\] Nhận xét:
Kết quả hồi quy Cloglog đơn biến cho thấy việc uống nước tăng lực có
ảnh hưởng có ý nghĩa thống kê đến khả năng có giấc ngủ, với giá trị p =
0.000269, nhỏ hơn mức ý nghĩa 5%. Cụ thể, hệ số ước lượng là 0.74847,
cho thấy nhóm người có uống nước tăng lực có giá trị cloglog cao hơn,
đồng nghĩa với việc xác suất có giấc ngủ cũng cao hơn so với nhóm không
uống. Điều này cho thấy, theo mô hình Cloglog, việc tiêu thụ nước tăng
lực có mối liên hệ đáng kể với khả năng có giấc ngủ, và mối liên hệ này
mang ý nghĩa thống kê rõ rệt.
4.7.3.3. Biến beverage_tea
# Mô hình Cloglog với biến beverage_tea
cloglog_tea <- glm(sleep_binary ~ beverage_tea, data = dt, family = binomial(link = "cloglog"))
summary(cloglog_tea)
##
## Call:
## glm(formula = sleep_binary ~ beverage_tea, family = binomial(link = "cloglog"),
## data = dt)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.2304 0.0785 -2.935 0.00334 **
## beverage_teaCó uống trà -1.4485 0.1937 -7.480 7.45e-14 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 675.37 on 499 degrees of freedom
## Residual deviance: 601.17 on 498 degrees of freedom
## AIC: 605.17
##
## Number of Fisher Scoring iterations: 5
Phương trình hồi quy được xây dựng từ mô hình Cloglog đơn biến có
dạng:
\[
\log\left(-\log\left(1 - P(\text{sleep} = 1)\right)\right) = -0.2304 -
1.4485 \cdot \text{beverage_tea}
\] Nhận xét:
Kết quả hồi quy Cloglog đơn biến cho thấy việc uống trà có ảnh hưởng
có ý nghĩa thống kê đến khả năng có giấc ngủ, với giá trị p = 7.45e-14,
nhỏ hơn mức ý nghĩa 5%. Hệ số ước lượng là -1.4485, mang dấu âm, cho
thấy nhóm người có uống trà có giá trị cloglog thấp hơn, đồng nghĩa với
việc xác suất có giấc ngủ cũng thấp hơn so với nhóm không uống trà. Điều
này phản ánh rằng, theo mô hình Cloglog, việc tiêu thụ trà có mối liên
hệ ngược chiều và đáng kể về mặt thống kê với khả năng có giấc ngủ.
4.7.3.4. Biến time_of_day_evening
# Mô hình Cloglog với biến time_of_day_evening
cloglog_evening <- glm(sleep_binary ~ time_of_day_evening,
data = dt,
family = binomial(link = "cloglog"))
summary(cloglog_evening)
##
## Call:
## glm(formula = sleep_binary ~ time_of_day_evening, family = binomial(link = "cloglog"),
## data = dt)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.9200 0.1668 -11.51 <2e-16 ***
## time_of_day_eveningCó uống buổi tối 2.1268 0.1860 11.43 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 675.37 on 499 degrees of freedom
## Residual deviance: 495.52 on 498 degrees of freedom
## AIC: 499.52
##
## Number of Fisher Scoring iterations: 5
Dựa trên kết quả hồi quy, phương trình mô hình có dạng:
\[
\log\left(-\log\left(1 - P(\text{sleep} = 1)\right)\right) = -1.9200 +
2.1268 \cdot \text{time_of_day_evening}
\]
Nhận xét:
Kết quả hồi quy Cloglog đơn biến cho thấy việc uống vào buổi tối có
ảnh hưởng có ý nghĩa thống kê đến khả năng có giấc ngủ, với giá trị p
< 2e-16, nhỏ hơn mức ý nghĩa 5%. Cụ thể, hệ số ước lượng là 2.1268,
cho thấy nhóm người có uống vào buổi tối có giá trị cloglog cao hơn đáng
kể so với nhóm không uống vào buổi tối, tức là xác suất có giấc ngủ cũng
cao hơn. Điều này cho thấy mối liên hệ tích cực và có ý nghĩa thống kê
rõ rệt giữa việc uống vào buổi tối và khả năng có giấc ngủ.
4.8. Mô hình hồi quy bội
alias(lm(sleep_binary ~ beverage_coffee + beverage_energy_drink + beverage_tea + time_of_day_evening, data = dt))
## Model :
## sleep_binary ~ beverage_coffee + beverage_energy_drink + beverage_tea +
## time_of_day_evening
##
## Complete :
## (Intercept) beverage_coffeeCó uống cà phê
## beverage_teaCó uống trà 1 -1
## beverage_energy_drinkCó uống energy drink
## beverage_teaCó uống trà -1
## time_of_day_eveningCó uống buổi tối
## beverage_teaCó uống trà 0
Kết quả từ hàm alias() cho thấy biến beverage_tea có mối quan hệ
tuyến tính chính xác với các biến giải thích khác trong mô hình, cụ thể
là:
\[
\text{beverage_tea} = 1 \times \text{Intercept} - 1 \times
\text{beverage_coffee} - 1 \times \text{beverage_energy_drink}
\]
Điều này phản ánh hiện tượng đa cộng tuyến hoàn toàn
(perfect multicollinearity), tức là một biến có thể được biểu
diễn chính xác bằng tổ hợp tuyến tính của các biến còn lại. Trong trường
hợp này, hệ số của biến beverage_tea
không thể được ước
lượng một cách duy nhất, dẫn đến giá trị NA
trong kết quả
hồi quy.
Vì lý do đó, biến beverage_tea sẽ được loại khỏi mô hình hồi quy bội
để đảm bảo tính xác định của mô hình và tránh sai lệch trong phân
tích.
4.8.1. Mô hình Logit
mhhq_logit <- glm(sleep_binary ~ beverage_coffee + beverage_energy_drink + time_of_day_evening,
data = dt, family = binomial(link = "logit"))
summary(mhhq_logit)
##
## Call:
## glm(formula = sleep_binary ~ beverage_coffee + beverage_energy_drink +
## time_of_day_evening, family = binomial(link = "logit"), data = dt)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -3.0623 0.2862 -10.699 < 2e-16
## beverage_coffeeCó uống cà phê 1.7330 0.2728 6.352 2.13e-10
## beverage_energy_drinkCó uống energy drink 2.1320 0.4379 4.869 1.12e-06
## time_of_day_eveningCó uống buổi tối 2.7365 0.2469 11.082 < 2e-16
##
## (Intercept) ***
## beverage_coffeeCó uống cà phê ***
## beverage_energy_drinkCó uống energy drink ***
## time_of_day_eveningCó uống buổi tối ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 675.37 on 499 degrees of freedom
## Residual deviance: 443.30 on 496 degrees of freedom
## AIC: 451.3
##
## Number of Fisher Scoring iterations: 5
Nhận xét:
Phương trình hồi quy logit có dạng:
\[
\log\left( \frac{\hat{\pi}}{1 - \hat{\pi}} \right) = -3.0623 + 1.7330
\cdot \text{beverage_coffee} + 2.1320 \cdot \text{beverage_energy_drink}
+ 2.7365 \cdot \text{time_of_day_evening}
\]
beverage_coffee |
So với không uống |
1.733 |
2.13e-10 |
5.65 |
Người uống cà phê có xác suất buồn ngủ cao gấp 5.65 lần so với người
không uống. |
beverage_energy_drink |
So với không uống |
2.132 |
1.12e-06 |
8.43 |
Việc sử dụng nước tăng lực làm tăng xác suất buồn ngủ gấp 8.43
lần. |
time_of_day_evening |
So với ban ngày |
2.737 |
< 2e-16 |
15.45 |
Uống vào buổi tối làm tăng xác suất buồn ngủ gấp 15.45 lần so với
uống ban ngày. |
Kết luận:
Dựa trên kết quả mô hình hồi quy Logit, các yếu tố có ảnh hưởng đáng
kể đến xác suất buồn ngủ bao gồm việc uống cà phê, sử dụng nước tăng lực
và thời điểm uống vào buổi tối. Cụ thể, người có uống cà phê có xác suất
buồn ngủ cao gấp khoảng 5.65 lần so với người không uống. Việc sử dụng
nước tăng lực làm tăng xác suất buồn ngủ lên 8.43 lần, trong khi uống
vào buổi tối làm tăng xác suất này lên đến 15.45 lần so với uống ban
ngày. Tất cả các biến này đều có ý nghĩa thống kê cao (p-value <
0.001), cho thấy mối liên hệ chặt chẽ giữa các loại đồ uống, thời điểm
tiêu thụ và tình trạng buồn ngủ. Điều này gợi ý rằng việc sử dụng các
loại đồ uống kích thích vào buổi tối có thể làm thay đổi trạng thái sinh
lý, làm tăng nguy cơ buồn ngủ ngoài ý muốn.
4.8.2. Mô hình Probit
mhhq_probit <- glm(sleep_binary ~ beverage_coffee + beverage_energy_drink + time_of_day_evening,
data = dt,
family = binomial(link = "probit"))
summary(mhhq_probit)
##
## Call:
## glm(formula = sleep_binary ~ beverage_coffee + beverage_energy_drink +
## time_of_day_evening, family = binomial(link = "probit"),
## data = dt)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.7792 0.1530 -11.631 < 2e-16
## beverage_coffeeCó uống cà phê 0.9948 0.1537 6.473 9.61e-11
## beverage_energy_drinkCó uống energy drink 1.2319 0.2467 4.993 5.94e-07
## time_of_day_eveningCó uống buổi tối 1.6163 0.1372 11.778 < 2e-16
##
## (Intercept) ***
## beverage_coffeeCó uống cà phê ***
## beverage_energy_drinkCó uống energy drink ***
## time_of_day_eveningCó uống buổi tối ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 675.37 on 499 degrees of freedom
## Residual deviance: 443.17 on 496 degrees of freedom
## AIC: 451.17
##
## Number of Fisher Scoring iterations: 5
Nhận xét:
Phương trình hồi quy Probit có dạng:
\[
\Phi^{-1}(\hat{\pi}) = -1.7792 + 0.9948 \cdot \text{beverage_coffee} +
1.2319 \cdot \text{beverage_energy_drink} + 1.6163 \cdot
\text{time_of_day_evening}
\]
beverage_coffee |
So với không uống cà phê |
0.9948 |
9.61e-11 |
Người uống cà phê có xác suất buồn ngủ cao hơn đáng kể. |
beverage_energy_drink |
So với không uống energy drink |
1.2319 |
5.94e-07 |
Người uống nước tăng lực có xác suất buồn ngủ cao hơn đáng kể. |
time_of_day_evening |
So với ban ngày |
1.6163 |
< 2e-16 |
Uống vào buổi tối làm tăng xác suất buồn ngủ so với ban ngày. |
Kết luận:
Dựa trên kết quả mô hình hồi quy Probit, các yếu tố có ảnh hưởng đáng
kể đến xác suất buồn ngủ sau khi uống gồm: uống cà phê, uống nước tăng
lực, và thời điểm uống vào buổi tối. Cụ thể, những người uống cà phê
hoặc nước tăng lực có xác suất buồn ngủ cao hơn đáng kể so với người
không sử dụng các loại đồ uống này. Đặc biệt, thời điểm uống vào buổi
tối làm tăng xác suất buồn ngủ mạnh nhất trong số các yếu tố, cho thấy
vai trò quan trọng của thời gian tiêu thụ đồ uống. Kết quả này gợi ý
rằng, dù các loại đồ uống trên thường được xem là giúp tỉnh táo, nhưng
trong thực tế có thể gây tác dụng ngược tùy vào thời điểm và cơ địa
người sử dụng.
4.8.3. Mô hình Cloglog
mhhq_cloglog <- glm(sleep_binary ~ beverage_coffee + beverage_energy_drink + time_of_day_evening,
data = dt,
family = binomial(link = "cloglog"))
summary(mhhq_cloglog)
##
## Call:
## glm(formula = sleep_binary ~ beverage_coffee + beverage_energy_drink +
## time_of_day_evening, family = binomial(link = "cloglog"),
## data = dt)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -2.7190 0.2260 -12.032 < 2e-16
## beverage_coffeeCó uống cà phê 1.1940 0.1996 5.982 2.20e-09
## beverage_energy_drinkCó uống energy drink 1.4865 0.2767 5.371 7.81e-08
## time_of_day_eveningCó uống buổi tối 2.0146 0.1877 10.736 < 2e-16
##
## (Intercept) ***
## beverage_coffeeCó uống cà phê ***
## beverage_energy_drinkCó uống energy drink ***
## time_of_day_eveningCó uống buổi tối ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 675.37 on 499 degrees of freedom
## Residual deviance: 444.81 on 496 degrees of freedom
## AIC: 452.81
##
## Number of Fisher Scoring iterations: 5
Bảng: Các biến có ý nghĩa thống kê trong mô hình Cloglog
beverage_coffee |
So với không uống cà phê |
1.194 |
2.20e-09 |
3.30 |
Người uống cà phê có xác suất có giấc ngủ cao hơn khoảng 3.3 lần so
với người không uống cà phê. |
beverage_energy_drink |
So với không uống energy drink |
1.487 |
7.81e-08 |
4.42 |
Người uống nước tăng lực có xác suất có giấc ngủ cao hơn khoảng 4.42
lần so với người không uống. |
time_of_day_evening |
So với không uống buổi tối |
2.015 |
< 2e-16 |
7.50 |
Người uống vào buổi tối có xác suất có giấc ngủ cao hơn khoảng 7.5
lần so với người không uống vào buổi tối. |
Phương trình hồi quy Cloglog được ước lượng như sau:
\[
\log(-\log(1 - \hat{\pi})) = -2.7190 + 1.1940 \cdot \text{Coffee} +
1.4865 \cdot \text{Energy} + 2.0146 \cdot \text{Evening}
\]
Kết luận:
Kết quả hồi quy từ mô hình Cloglog tổng quát cho thấy các biến
beverage_coffee, beverage_energy_drink và time_of_day_evening đều có ảnh
hưởng có ý nghĩa thống kê đến xác suất mất ngủ, với p-value đều nhỏ hơn
0.01 (nhỏ hơn mức ý nghĩa 5%). Cụ thể, các hệ số ước lượng đều dương,
cho thấy việc uống cà phê, uống nước tăng lực hoặc tiêu thụ các loại đồ
uống này vào buổi tối đều làm tăng xác suất mất ngủ. Chẳng hạn, hệ số
ước lượng của biến “có uống cà phê” là 1.194, tương ứng với xác suất mất
ngủ cao hơn khoảng 3.3 lần so với người không uống cà phê, khi các yếu
tố khác không đổi. Biến “beverage_tea” bị loại khỏi mô hình do hiện
tượng đa cộng tuyến.
Nhìn chung, mô hình cho thấy các loại đồ uống chứa caffeine và thời
điểm tiêu thụ chúng là những yếu tố rủi ro quan trọng ảnh hưởng tiêu cực
đến khả năng có được giấc ngủ trong mẫu nghiên cứu này.
4.9 Đánh giá mô hình hồi quy bội
Chỉ số AIC
AIC(mhhq_logit)
## [1] 451.3008
AIC(mhhq_probit)
## [1] 451.1743
AIC(mhhq_cloglog)
## [1] 452.8134
Chỉ số BIC
BIC(mhhq_logit)
## [1] 468.1592
BIC(mhhq_probit)
## [1] 468.0328
BIC(mhhq_cloglog)
## [1] 469.6718
Chỉ số Log-Likelihood
# So sánh Log-Likelihood
logLik(mhhq_logit)
## 'log Lik.' -221.6504 (df=4)
logLik(mhhq_probit)
## 'log Lik.' -221.5872 (df=4)
logLik(mhhq_cloglog)
## 'log Lik.' -222.4067 (df=4)
Chỉ số McFadden_R2
pR2(mhhq_logit)["McFadden"]
## fitting null model for pseudo-r2
## McFadden
## 0.3436174
pR2(mhhq_probit)["McFadden"]
## fitting null model for pseudo-r2
## McFadden
## 0.3438047
pR2(mhhq_cloglog)["McFadden"]
## fitting null model for pseudo-r2
## McFadden
## 0.3413778
So sánh các mô hình
Logit |
451.3008 |
468.1592 |
-221.6504 |
0.3436 |
Probit |
451.1743 |
468.0328 |
-221.5872 |
0.3438 |
Cloglog |
452.8134 |
469.6718 |
-222.4067 |
0.3414 |
Dựa trên bảng so sánh các mô hình, ta có thể đưa ra nhận xét như
sau:
Dựa trên bảng so sánh các mô hình hồi quy, có thể thấy rằng mô
hình Probit mang lại kết quả phù hợp nhất. Mô hình này
có giá trị AIC thấp nhất (451.1743) và BIC thấp
nhất (468.0328), đồng thời đạt Log-Likelihood cao
nhất (–221.5872) và hệ số McFadden R² lớn nhất
(0.3438). Những chỉ số này cho thấy khả năng giải thích biến phụ thuộc
tốt hơn so với các mô hình còn lại, bao gồm cả Logit và
Cloglog.
Từ các tiêu chí thống kê và mức độ phù hợp mô hình, có thể kết
luận rằng mô hình Probit là lựa chọn ưu việt nhất để dự đoán xác suất
mất ngủ dựa trên các yếu tố liên quan đến đồ uống và thời điểm tiêu
thụ.
4.10. Dự báo
new_person <- data.frame(
beverage_coffee = factor("Có uống cà phê", levels = levels(dt$beverage_coffee)),
beverage_energy_drink = factor("Có uống energy drink", levels = levels(dt$beverage_energy_drink)),
time_of_day_evening = factor("Có uống buổi tối", levels = levels(dt$time_of_day_evening))
)
predict(mhhq_probit, newdata = new_person, type = "response")
## 1
## 0.9804849
predict(mhhq_probit, newdata = new_person, type = "link")
## 1
## 2.063868
Kết luận:
Dựa trên kết quả dự báo từ mô hình hồi quy Probit (mhhq_probit), giá
trị tuyến tính (linear predictor) thu được là 2.0639 và xác suất tương
ứng là 0.9805. Giá trị tuyến tính này là kết quả của việc kết hợp các hệ
số ước lượng với giá trị của các biến giải thích, thông qua hàm liên kết
Probit. Khi áp dụng hàm phân phối tích lũy chuẩn (CDF) lên giá trị này,
ta thu được xác suất rằng cá nhân có đặc điểm như trong new_person sẽ
thuộc nhóm bị ảnh hưởng đến giấc ngủ là khoảng 98.05%.
Điều này cho thấy tổ hợp các yếu tố như có uống cà phê, có sử dụng
nước tăng lực, và dùng vào buổi tối đều góp phần làm tăng mạnh khả năng
bị ảnh hưởng giấc ngủ. Giá trị tuyến tính dương lớn (khoảng 2.06) cũng
phản ánh tác động cộng hưởng rõ rệt từ các biến giải thích lên xác suất
xảy ra hiện tượng.
Từ đó, có thể nhận định rằng mô hình Probit không chỉ phù hợp về mặt
thống kê mà còn cho thấy khả năng dự báo hiệu quả, giúp xác định rõ
những yếu tố nguy cơ làm giảm chất lượng giấc ngủ ở những người có hành
vi tiêu dùng tương tự.
CHƯƠNG 5: KẾT LUẬN VÀ KIẾN NGHỊ
5.1. Kết luận
Trong tiểu luận này, tác giả đã tiến hành một phân tích định lượng
toàn diện trên bộ dữ liệu gồm 500 quan sát với 9 biến, nhằm đánh giá mối
liên hệ giữa hành vi tiêu thụ đồ uống chứa caffeine và khả năng giấc ngủ
bị ảnh hưởng. Biến phụ thuộc là một biến nhị phân phản ánh liệu giấc ngủ
của cá nhân có bị tác động tiêu cực bởi các yếu tố liên quan đến
caffeine hay không. Các biến độc lập bao gồm loại đồ uống (cà phê, nước
tăng lực, trà) và thời điểm sử dụng (ban đêm hay không).
Phân tích thống kê mô tả ban đầu giúp xác định đặc điểm phân bố của
từng biến và nhận diện các yếu tố tiềm năng ảnh hưởng đến giấc ngủ. Tiếp
theo, ba mô hình hồi quy nhị phân gồm Logit, Probit và Cloglog được sử
dụng để kiểm định mức độ ảnh hưởng của các biến độc lập. Việc so sánh
các mô hình dựa trên các tiêu chí như AIC, log-likelihood và chỉ số
McFadden R². Kết quả cho thấy mô hình Probit là phù hợp nhất, với AIC
thấp nhất (451.17) và McFadden R² cao nhất (0.3653), phản ánh năng lực
giải thích tốt nhất.
Kết quả hồi quy cho thấy ba yếu tố có ảnh hưởng đáng kể đến khả năng
giấc ngủ bị ảnh hưởng gồm: uống cà phê, uống nước tăng lực và tiêu thụ
vào buổi tối. Trong đó, yếu tố thời điểm sử dụng vào buổi tối có tác
động mạnh nhất. Ngược lại, việc uống trà có xu hướng làm giảm xác suất
bị ảnh hưởng giấc ngủ, tuy nhiên biến này bị loại khỏi mô hình do tồn
tại hiện tượng đa cộng tuyến hoàn toàn.
Dự báo từ mô hình Probit cho thấy, một người có uống cà phê, sử dụng
nước tăng lực và tiêu thụ vào buổi tối có xác suất bị ảnh hưởng giấc ngủ
lên tới 98%. Kết quả này nhấn mạnh mối liên hệ chặt chẽ giữa hành vi
tiêu dùng caffeine và chất lượng giấc ngủ, qua đó cung cấp những gợi ý
thiết thực trong giáo dục sức khỏe và điều chỉnh thói quen tiêu dùng,
đặc biệt đối với giới trẻ.
5.2. Hạn chế của đề tài
Mặc dù nghiên cứu đã cung cấp một cái nhìn có giá trị về mối quan hệ
giữa hành vi tiêu dùng đồ uống và khả năng có giấc ngủ, đề tài vẫn tồn
tại một số hạn chế nhất định.
Thứ nhất, bộ dữ liệu sử dụng trong nghiên cứu có quy mô giới hạn với
500 quan sát, và không phản ánh đầy đủ các đặc điểm nhân khẩu học hay
yếu tố sinh lý của người tham gia, do đó khả năng khái quát hóa kết quả
còn hạn chế.
Thứ hai, các biến độc lập chủ yếu là định tính và được mã hóa dạng
nhị phân, điều này có thể làm mất đi một phần tính đa dạng và chi tiết
của dữ liệu thực tế. Thứ ba, nghiên cứu chỉ sử dụng các mô hình hồi quy
nhị phân cổ điển (Logit, Probit, Cloglog), chưa xét đến các phương pháp
hiện đại như hồi quy phi tuyến, kỹ thuật học máy, hoặc xử lý dữ liệu mất
cân bằng – những yếu tố có thể cải thiện độ chính xác và tính ứng dụng
của mô hình.
Cuối cùng, do sử dụng dữ liệu quan sát, nghiên cứu chưa thể xác định
quan hệ nhân quả giữa các biến, mà chỉ dừng lại ở mức độ tương quan, do
đó cần cẩn trọng trong việc diễn giải và ứng dụng kết quả.
5.3. Kiến nghị
Đối với cá nhân người tiêu dùng: Cần có sự điều chỉnh hành vi tiêu
dùng đồ uống chứa caffein, đặc biệt là không nên sử dụng vào buổi tối để
tránh tác động tiêu cực đến chất lượng giấc ngủ.
Đối với truyền thông và y tế cộng đồng: Nên triển khai các chiến dịch
nâng cao nhận thức về ảnh hưởng của đồ uống caffein đối với giấc ngủ,
nhấn mạnh đến yếu tố thời điểm và liều lượng tiêu thụ.
Đối với nghiên cứu tương lai: Có thể mở rộng dữ liệu với nhiều biến
định lượng hơn như thời gian ngủ thực tế, mức độ stress hoặc đặc điểm
sức khỏe tổng thể để hoàn thiện mô hình và có đánh giá toàn diện
hơn.
LS0tDQp0aXRsZTogIlBURExEVCINCmF1dGhvcjogIkzDqiBUaOG7iyBOZ+G7jWMgw4FuaCINCmRhdGU6ICJgciBmb3JtYXQoU3lzLnRpbWUoKSwgJyVIOiVNOiVTLCAlZCAtICVtIC0gJVknKWAiDQpvdXRwdXQ6DQogIGh0bWxfZG9jdW1lbnQ6DQogICAgdG9jOiBUUlVFDQogICAgdG9jX2Zsb2F0OiBUUlVFDQogICAgZGZfcHJpbnQ6IHBhZ2VkDQogICAgY29kZV9kb3dubG9hZDogdHJ1ZQ0KICAgIGNvZGVfZm9sZGluZzogaGlkZQ0KICBwZGZfZG9jdW1lbnQ6DQogICAgZXh0cmFfZGVwZW5kZW5jaWVzOg0KICAgICAgdmlldG5hbTogdXRmOA0KICAgIHRvYzogeWVzDQogICAgbnVtYmVyX3NlY3Rpb25zOiB5ZXMNCiAgd29yZF9kb2N1bWVudDoNCiAgICB0b2M6IHllcw0KICAgIG51bWJlcl9zZWN0aW9uczogeWVzDQpnZW9tZXRyeToNCiAgICAgIC0gaW5uZXI9M2NtDQogICAgICAtIG91dGVyPTRjbQ0KICAgICAgLSB0b3A9M2NtDQogICAgICAtIGJvdHRvbT00Y20NCiAgICAgIC0gaGVhZHNlcD0yMnB0DQogICAgICAtIGhlYWRoZWlnaHQ9MTFwdA0KICAgICAgLSBmb290c2tpcD0zM3B0DQogICAgICAtIGlnbm9yZWhlYWQNCiAgICAgIC0gaWdub3JlZm9vdA0KICAgICAgLSBoZWlnaHRyb3VuZGVkDQotLS0NCg0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUpDQpgYGANCg0KPHN0eWxlPg0KYm9keSB7DQogIGZvbnQtZmFtaWx5OiAiVGltZXMgTmV3IFJvbWFuIiwgc2Fucy1zZXJpZjsNCiAgZm9udC1zaXplOiAxNnB4Ow0KICB0ZXh0LWFsaWduOiBqdXN0aWZ5Ow0KICBsaW5lLWhlaWdodDogMS41Ow0KfQ0KaDIgew0KICBjb2xvcjogcmVkOw0KfQ0KaDMgew0KICBjb2xvcjogZGFya2JsdWU7DQp9DQo8L3N0eWxlPg0KDQpgYGB7cn0NCmxpYnJhcnkocmVhZHIpDQpsaWJyYXJ5KGRhdGEudGFibGUpDQpsaWJyYXJ5KGdncGxvdDIpDQpsaWJyYXJ5KGRwbHlyKQ0KbGlicmFyeShza2ltcikNCmxpYnJhcnkocHN5Y2gpDQpsaWJyYXJ5KGNzdikNCmxpYnJhcnkoRFQpDQpsaWJyYXJ5KHBhbmRlcikNCmxpYnJhcnkoZm9ybWF0dGFibGUpDQpsaWJyYXJ5KGh0bWx0b29scykNCmxpYnJhcnkoRGVzY1Rvb2xzKQ0KbGlicmFyeShlcGl0b29scykNCmxpYnJhcnkocHNjbCkNCmxpYnJhcnkoY2FyKQ0KYGBgDQoNCiMgKipQSMOCTiBUw41DSCBDw4FDIFnhur5VIFThu5Ag4bqiTkggSMav4bueTkcgxJDhur5OIE5HVVkgQ8agIFLhu5BJIExP4bqgTiBHSeG6pEMgTkfhu6YgRE8gVEnDilUgVEjhu6QgQ0FGRkVJTkUqKg0KDQpC4buZIGThu68gbGnhu4d1ICJDYWZmZWluZSBJbnRha2UgVHJhY2tlciIgY3VuZyBj4bqlcCB0aMO0bmcgdGluIGNoaSB0aeG6v3QgduG7gSB0aMOzaSBxdWVuIHRpw6p1IHRo4bulIGNhZmZlaW5lIGPhu6dhIG5nxrDhu51pIGTDuW5nIHbDoCB0w6FjIMSR4buZbmcgY+G7p2EgbsOzIMSR4bq/biBnaeG6pWMgbmfhu6cuIEThu68gbGnhu4d1IGtow7RuZyBjaOG7iSB04bqtcCB0cnVuZyB2w6BvIGzGsOG7o25nIGNhZmZlaW5lIHRpw6p1IHRo4bulIG3DoCBjw7JuIGJhbyBn4buTbSBjw6FjIHnhur91IHThu5EgbGnDqm4gcXVhbiBuaMawIGxv4bqhaSDEkeG7kyB14buRbmcgc+G7rSBk4bulbmcgKGPDoCBwaMOqLCB0csOgLCBuxrDhu5tjIHTEg25nIGzhu7FjKSwgdGjhu51pIMSRaeG7g20gdGnDqnUgdGjhu6UgdHJvbmcgbmfDoHkgKHPDoW5nLCBjaGnhu4F1LCB04buRaSksIGdp4bubaSB0w61uaCwgdsOgIG3hu6ljIMSR4buZIOG6o25oIGjGsOG7n25nIMSR4bq/biBnaeG6pWMgbmfhu6cgc2F1IGtoaSBz4butIGThu6VuZy4gTeG7pWMgdGnDqnUgY+G7p2EgbmdoacOqbiBj4bupdSBsw6AgdMOsbSBoaeG7g3UgbeG7kWkgbGnDqm4gaOG7hyBnaeG7r2EgaMOgbmggdmkgdGnDqnUgZMO5bmcgY2FmZmVpbmUgdsOgIG5ndXkgY8ahIHLhu5FpIGxv4bqhbiBnaeG6pWMgbmfhu6cuIEThu68gbGnhu4d1IMSRxrDhu6NjIHRodSB0aOG6rXAgZMaw4bubaSBk4bqhbmcga2jhuqNvIHPDoXQgZ2nhuqMgbOG6rXAsIGfhu5NtIDUwMCBxdWFuIHPDoXQgdsOgIDEzIGJp4bq/biwgdOG6oW8gxJFp4buBdSBraeG7h24gdGh14bqtbiBs4bujaSBjaG8gdmnhu4djIHBow6JuIHTDrWNoIMSR4buLbmggbMaw4bujbmcgdsOgIMSRw6FuaCBnacOhIHTDoWMgxJHhu5luZyBj4bunYSBjw6FjIHnhur91IHThu5EgbOG7kWkgc+G7kW5nIMSR4bq/biBjaOG6pXQgbMaw4bujbmcgZ2nhuqVjIG5n4bunIGPhu6dhIG5nxrDhu51pIHRpw6p1IGTDuW5nIGNhZmZlaW5lLg0KDQojICoqQ0jGr8agTkcgMTogVOG7lE5HIFFVQU4gTkdIScOKTiBD4buoVSoqDQoNCiMjICoqMS4xLiBMw70gZG8gY2jhu41uIMSR4buBIHTDoGkqKg0KDQogIEhp4buHbiBuYXksIHRpw6p1IHRo4bulIGNhZmZlaW5lIGzDoCBt4buZdCBow6BuaCB2aSBwaOG7lSBiaeG6v24gdHJvbmcgZ2nhu5tpIHRy4bq7LCDEkeG6t2MgYmnhu4d0IGzDoCBuaOG7r25nIG5nxrDhu51pIHRoxrDhu51uZyB4dXnDqm4gxJHhu5FpIG3hurd0IHbhu5tpIMOhcCBs4buxYyBjw7RuZyB2aeG7h2MsIGjhu41jIHThuq1wIHbDoCBs4buLY2ggc2luaCBob+G6oXQgdGjhuqV0IHRoxrDhu51uZy4gQ2FmZmVpbmUgxJHGsOG7o2MgdMOsbSB0aOG6pXkgbmhp4buBdSB0cm9uZyBjw6FjIGxv4bqhaSDEkeG7kyB14buRbmcgcXVlbiB0aHXhu5ljIG5oxrAgY8OgIHBow6osIHRyw6AsIG7GsOG7m2MgdMSDbmcgbOG7sWMgaGF5IG7GsOG7m2Mgbmfhu410IGPDsyBnYS4gxJDDonkgxJHhu4F1IGzDoCBuaOG7r25nIHPhuqNuIHBo4bqpbSBk4buFIGTDoG5nIHRp4bq/cCBj4bqtbiB0cm9uZyDEkeG7nWkgc+G7kW5nIGjDoG5nIG5nw6B5LCB2w6AgdGjGsOG7nW5nIMSRxrDhu6NjIG5nxrDhu51pIHRpw6p1IHRo4bulIHPhu60gZOG7pW5nIHbhu5tpIG3hu6VjIMSRw61jaCBnacO6cCBkdXkgdHLDrCBz4buxIHThu4luaCB0w6FvLCBuw6JuZyBjYW8ga2jhuqMgbsSDbmcgdOG6rXAgdHJ1bmcgdsOgIGvDqW8gZMOgaSB0aOG7nWkgZ2lhbiBsw6BtIHZp4buHYyBob+G6t2MgaOG7jWMgdOG6rXAuIMSQ4bq3YyBiaeG7h3QgdHJvbmcgbmjhu69uZyB0aOG7nWkgxJFp4buDbSBjxINuZyB0aOG6s25nIG5oxrAga+G7syB0aGksIGRlYWRsaW5lIGPDtG5nIHZp4buHYyBoYXkgbmjhu69uZyBuZ8OgeSBsw6BtIHZp4buHYyBjxrDhu51uZyDEkeG7mSBjYW8sIGNhZmZlaW5lIGfhuqduIG5oxrAgdHLhu58gdGjDoG5oIG3hu5l0IOKAnHRy4bujIHRo4bunIMSR4bqvYyBs4buxY+KAnSDEkcaw4bujYyBz4butIGThu6VuZyBy4buZbmcgcsOjaS4gVHV5IG5oacOqbiwgbeG6t3QgdHLDoWkgY+G7p2Egdmnhu4djIGzhuqFtIGThu6VuZyBjYWZmZWluZSwgaG/hurdjIHRpw6p1IHRo4bulIGtow7RuZyDEkcO6bmcgdGjhu51pIMSRaeG7g20sIMSRYW5nIGThuqduIHRy4bufIHRow6BuaCBt4buZdCB24bqlbiDEkeG7gSDEkcOhbmcgbG8gbmfhuqFpLiBN4buZdCB0cm9uZyBuaOG7r25nIGjhu4cgcXXhuqMgdGnDqnUgYmnhu4N1LCB0aMaw4budbmcgYuG7iyDEkcOhbmggZ2nDoSB0aOG6pXAsIGNow61uaCBsw6AgcuG7kWkgbG/huqFuIGdp4bqlYyBuZ+G7py4NCg0KICBS4buRaSBsb+G6oW4gZ2nhuqVjIG5n4bunIGtow7RuZyBjaOG7iSDhuqNuaCBoxrDhu59uZyDEkeG6v24gc+G7qWMga2jhu49lIHRo4buDIGNo4bqldCwgdGluaCB0aOG6p24gbcOgIGPDsm4gbMOgbSBnaeG6o20gaGnhu4d1IHF14bqjIGzDoG0gdmnhu4djLCBo4buNYyB04bqtcCB2w6AgY2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcgbsOzaSBjaHVuZy4gVGjhu7FjIHThur8gY2hvIHRo4bqleSBuaGnhu4F1IG5nxrDhu51pIHRpw6p1IHRo4bulIGtow7RuZyDDvSB0aOG7qWMgxJHGsOG7o2Mg4bqjbmggaMaw4bufbmcgdGnDqnUgY+G7sWMgdGnhu4FtIOG6qW4gY+G7p2EgY2FmZmVpbmUgxJHhu5FpIHbhu5tpIGdp4bqlYyBuZ+G7pywgdsOgIGjDoG5oIHZpIG7DoHkgxJFhbmcgZOG6p24gdHLhu58gdGjDoG5oIG3hu5l0IHbhuqVuIMSR4buBIMSRw6FuZyBiw6FvIMSR4buZbmcgdHJvbmcgeMOjIGjhu5lpIGhp4buHbiDEkeG6oWkuIEtow7RuZyBnaeG7kW5nIG5oxrAgY8OhYyBjaOG6pXQga8OtY2ggdGjDrWNoIGLhu4sga2nhu4NtIHNvw6F0IGNo4bq3dCBjaOG6vSwgY2FmZmVpbmUgcuG6pXQgZOG7hSB0aeG6v3AgY+G6rW4gdsOgIMSRxrDhu6NjIHPhu60gZOG7pW5nIG3hu5l0IGPDoWNoIHThu7EgZG8sIHRo4bqtbSBjaMOtIGLhu4sgeGVtIG5o4bq5IHbhu4EgbeG7qWMgxJHhu5kgcuG7p2kgcm8gxJHhu5FpIHbhu5tpIHPhu6ljIGto4buPZS4NCiAgDQogIELhu5kgZOG7ryBsaeG7h3Ug4oCcQ2FmZmVpbmUgSW50YWtlIFRyYWNrZXLigJ0gZ2hpIGzhuqFpIHRow7NpIHF1ZW4gdGnDqnUgdGjhu6UgY2FmZmVpbmUgY+G7p2EgdOG7q25nIGPDoSBuaMOibiwgYmFvIGfhu5NtIGxv4bqhaSB0aOG7qWMgdeG7kW5nLCB0aOG7nWkgxJFp4buDbSBz4butIGThu6VuZyB2w6AgdHLhuqFuZyB0aMOhaSBnaeG6pWMgbmfhu6cgdMawxqFuZyDhu6luZy4gxJBp4buBdSBuw6B5IHThuqFvIMSRaeG7gXUga2nhu4duIHRodeG6rW4gbOG7o2kgxJHhu4MgcGjDom4gdMOtY2ggbeG7kWkgcXVhbiBo4buHIGdp4buvYSBow6BuaCB2aSB0acOqdSBkw7luZyBjYWZmZWluZSB2w6Agbmd1eSBjxqEgcuG7kWkgbG/huqFuIGdp4bqlYyBuZ+G7pywgxJHhu5NuZyB0aOG7nWkgeGVtIHjDqXQg4bqjbmggaMaw4bufbmcgY+G7p2EgY8OhYyB54bq/dSB04buRIGxpw6puIHF1YW4gbmjGsCB0aOG7nWkgZ2lhbiwgbG/huqFpIHRo4bupYyB14buRbmcgaGF5IHRow7NpIHF1ZW4gc2luaCBob+G6oXQgdHJvbmcgbmfDoHkuIE5naGnDqm4gY+G7qXUgxJHhu4EgdMOgaSDigJxQaMOibiB0w61jaCBjw6FjIHnhur91IHThu5Eg4bqjbmggaMaw4bufbmcgxJHhur9uIG5ndXkgY8ahIHLhu5FpIGxv4bqhbiBnaeG6pWMgbmfhu6cgZG8gdGnDqnUgdGjhu6UgY2FmZmVpbmXigJ0gbmjhurFtIG3hu6VjIMSRw61jaCB0w6xtIGhp4buDdSBzw6J1IGjGoW4gduG7gSB0aOG7sWMgdHLhuqFuZyB0acOqdSB0aOG7pSBjYWZmZWluZSBjxaluZyBuaMawIMSRw6FuaCBnacOhIOG6o25oIGjGsOG7n25nIGPhu6dhIG7DsyDEkeG6v24gY2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7py4NCiAgDQogIEtow7RuZyBjaOG7iSBk4burbmcgbOG6oWkg4bufIHZp4buHYyB4w6FjIMSR4buLbmggbeG7kWkgdMawxqFuZyBxdWFuIGdp4buvYSBsxrDhu6NuZyBjYWZmZWluZSB0acOqdSB0aOG7pSB2w6AgZ2nhuqVjIG5n4bunLCBuZ2hpw6puIGPhu6l1IGPDsm4geGVtIHjDqXQgdmFpIHRyw7IgY+G7p2EgY8OhYyB54bq/dSB04buRIMSRaSBrw6htIG5oxrAgdGjhu51pIMSRaeG7g20gc+G7rSBk4bulbmcsIGxv4bqhaSB0aOG7qWMgdeG7kW5nLCB0aOG7nWkgZ2lhbiBsw6BtIHZp4buHYyBob+G6t2MgaOG7jWMgdOG6rXAsIHRow7NpIHF1ZW4gc2luaCBob+G6oXQgdsOgIGPDoWMgxJHhurdjIMSRaeG7g20gbmjDom4ga2jhuql1IGjhu41jIGtow6FjIChnaeG7m2kgdMOtbmgsIMSR4buZIHR14buVaSwgbmdo4buBIG5naGnhu4dwLi4uKS4gVGjDtG5nIHF1YSDEkcOzLCBuZ2hpw6puIGPhu6l1IGjGsOG7m25nIMSR4bq/biB2aeG7h2MgeMOieSBk4buxbmcgbeG7mXQgY8OhaSBuaMOsbiB0b8OgbiBkaeG7h24gaMahbiB24buBIGjDoG5oIHZpIHPhu60gZOG7pW5nIGNhZmZlaW5lIHRyb25nIMSR4budaSBz4buRbmcgaOG6sW5nIG5nw6B5IGPhu6dhIG5nxrDhu51pIHRpw6p1IHRo4bulIGhp4buHbiBuYXkuDQoNCiMjICoqMS4yLiBN4bulYyB0acOqdSBuZ2hpw6puIGPhu6l1KioNCg0KIyMjICoqMS4yLjEuICBN4bulYyB0acOqdSBjaHVuZyoqDQoNCiAgTmdoacOqbiBj4bupdSBuaOG6sW0gcGjDom4gdMOtY2ggbeG7kWkgcXVhbiBo4buHIGdp4buvYSBow6BuaCB2aSB0acOqdSB0aOG7pSBjYWZmZWluZSB2w6Agbmd1eSBjxqEgcuG7kWkgbG/huqFuIGdp4bqlYyBuZ+G7pyDhu58gbmfGsOG7nWkgdGnDqnUgdGjhu6UsIHThu6sgxJHDsyB4w6FjIMSR4buLbmggY8OhYyB54bq/dSB04buRIHTDoWMgxJHhu5luZyBjaMOtbmggdsOgIMSR4buBIHh14bqldCBt4buZdCBz4buRIGtodXnhur9uIG5naOG7iyBnw7NwIHBo4bqnbiBuw6JuZyBjYW8gbmjhuq1uIHRo4bupYyBjxaluZyBuaMawIMSRaeG7gXUgY2jhu4luaCB0aMOzaSBxdWVuIHPhu60gZOG7pW5nIGNhZmZlaW5lIG3hu5l0IGPDoWNoIGjhu6NwIGzDvSB0cm9uZyBj4buZbmcgxJHhu5NuZy4NCg0KIyMjICoqMS4yLjIuICBN4bulYyB0acOqdSBj4bulIHRo4buDKioNCg0KICBLaOG6o28gc8OhdCBt4bupYyDEkeG7mSB0acOqdSB0aOG7pSBjYWZmZWluZSBj4bunYSBuZ8aw4budaSB0acOqdSB0aOG7pSB0aMO0bmcgcXVhIGPDoWMgbG/huqFpIHRo4bupYyB14buRbmcgcGjhu5UgYmnhur9uIG5oxrAgY8OgIHBow6osIHRyw6AsIG7GsOG7m2MgdMSDbmcgbOG7sWMsLi4uDQoNCiAgxJDDoW5oIGdpw6EgdMOsbmggdHLhuqFuZyBnaeG6pWMgbmfhu6cgY+G7p2EgbmfGsOG7nWkgdGnDqnUgdGjhu6UgdGhlbyBjw6FjIHRpw6p1IGNow60gbmjGsDogdGjhu51pIGdpYW4gbmfhu6csIGNo4bqldCBsxrDhu6NuZyBnaeG6pWMgbmfhu6csIHThuqduIHN14bqldCBt4bqldCBuZ+G7pyBob+G6t2Mga2jDsyBuZ+G7py4NCg0KICBQaMOibiB0w61jaCBt4buRaSBxdWFuIGjhu4cgZ2nhu69hIGzGsOG7o25nIGNhZmZlaW5lIHRpw6p1IHRo4bulIHbDoCBuZ3V5IGPGoSBy4buRaSBsb+G6oW4gZ2nhuqVjIG5n4bunLg0KDQogIFjDoWMgxJHhu4tuaCDhuqNuaCBoxrDhu59uZyBj4bunYSBjw6FjIHnhur91IHThu5Ega2jDoWMgbmjGsCB0aOG7nWkgxJFp4buDbSBz4butIGThu6VuZyBjYWZmZWluZSwgdGjDs2kgcXVlbiBzaW5oIGhv4bqhdCwgdGjhu51pIGdpYW4gaOG7jWMgdOG6rXAgaG/hurdjIGzDoG0gdmnhu4djLCBnaeG7m2kgdMOtbmgsIMSR4buZIHR14buVaSwuLi4gxJHhur9uIG3hu6ljIMSR4buZIHLhu5FpIGxv4bqhbiBnaeG6pWMgbmfhu6cuDQoNCiAgxJDhu4EgeHXhuqV0IG3hu5l0IHPhu5EgZ2nhuqNpIHBow6FwIG5o4bqxbSBo4bqhbiBjaOG6vyB0w6FjIMSR4buZbmcgdGnDqnUgY+G7sWMgY+G7p2Egdmnhu4djIHRpw6p1IHRo4bulIGNhZmZlaW5lIMSR4bq/biBnaeG6pWMgbmfhu6csIMSR4buTbmcgdGjhu51pIG7Dom5nIGNhbyDDvSB0aOG7qWMgc+G7rSBk4bulbmcgY2FmZmVpbmUgaOG7o3AgbMO9IHRyb25nIGPhu5luZyDEkeG7k25nIG5nxrDhu51pIHRpw6p1IGTDuW5nLg0KDQojIyAqKjEuMy4gxJDhu5FpIHTGsOG7o25nIHbDoCBwaOG6oW0gdmkgbmdoacOqbiBj4bupdSoqDQoNCiAgVOG6rXAgZOG7ryBsaeG7h3UgxJHGsOG7o2Mgc+G7rSBk4bulbmcgdHJvbmcgbmdoacOqbiBj4bupdSBuw6B5IGzDoCBr4bq/dCBxdeG6oyB04burIG3hu5l0IGN14buZYyBraOG6o28gc8OhdCBow6BuaCB2aSB0acOqdSB0aOG7pSBjYWZmZWluZSwgY2jhu6cgeeG6v3Ug4bufIG5ow7NtIG5nxrDhu51pIHRpw6p1IHRo4bulLiBC4buZIGThu68gbGnhu4d1IGPDsyB0w6puIOKAnENhZmZlaW5lIEludGFrZSBUcmFja2Vy4oCdLCBnaGkgbmjhuq1uIHRow7RuZyB0aW4gbGnDqm4gcXVhbiDEkeG6v24gbG/huqFpIHRo4bupYyB14buRbmcgY2jhu6lhIGNhZmZlaW5lLCB0aOG7nWkgxJFp4buDbSBz4butIGThu6VuZywgdOG7lW5nIGzGsOG7o25nIGNhZmZlaW5lIHRpw6p1IHRo4bulIHRyb25nIG5nw6B5ICh0w61uaCBi4bqxbmcgbWcpLCBjw7luZyB24bubaSB0cuG6oW5nIHRow6FpIGdp4bqlYyBuZ+G7pyBj4bunYSBuZ8aw4budaSB0aGFtIGdpYS4NCg0KICBE4buvIGxp4buHdSBiYW8gZ+G7k20gNTAwIHF1YW4gc8OhdCB24bubaSBuaGnhu4F1IGJp4bq/biBz4buRIHBo4bqjbiDDoW5oIHRow7NpIHF1ZW4gdGnDqnUgZMO5bmcgdsOgIGNo4bqldCBsxrDhu6NuZyBnaeG6pWMgbmfhu6csIHRyb25nIMSRw7MgxJHDoW5nIGNow7ogw70gbMOgIGPDoWMgYmnhur9uIHbhu4EgbG/huqFpIMSR4buTIHXhu5FuZyAoY8OgIHBow6osIHRyw6AsIG7GsOG7m2MgdMSDbmcgbOG7sWMpLCBraHVuZyBnaeG7nSB0acOqdSB0aOG7pSzigKYgQ8OhYyBiaeG6v24gbsOgeSBjaG8gcGjDqXAgbmdoacOqbiBj4bupdSBt4buZdCBjw6FjaCDEkeG7i25oIGzGsOG7o25nIG3hu5FpIGxpw6puIGjhu4cgZ2nhu69hIGjDoG5oIHZpIHRpw6p1IHRo4bulIGNhZmZlaW5lIHbDoCBuZ3V5IGPGoSBy4buRaSBsb+G6oW4gZ2nhuqVjIG5n4bunIHRyb25nIHRo4buxYyB04bq/Lg0KDQojIyAqKjEuNC4gUGjGsMahbmcgcGjDoXAgbmdoacOqbiBj4bupdSoqDQoNCiAgQsOgaSBuZ2hpw6puIGPhu6l1IHPhu60gZOG7pW5nIHBoxrDGoW5nIHBow6FwIHRo4buRbmcga8OqIG3DtCB04bqjIGvhur90IGjhu6NwIHbhu5tpIGPDoWMgbcO0IGjDrG5oIGjhu5NpIHF1eSBuaOG7iyBwaMOibiDEkeG7gyBwaMOibiB0w61jaCBk4buvIGxp4buHdSwgbmjhurFtIHjDoWMgxJHhu4tuaCBt4bupYyDEkeG7mSDhuqNuaCBoxrDhu59uZyBj4bunYSBjw6FjIHnhur91IHThu5EgbGnDqm4gcXVhbiDEkeG6v24gaMOgbmggdmkgdGnDqnUgdGjhu6UgY2FmZmVpbmUgdsOgIGto4bqjIG7Eg25nIHjhuqN5IHJhIHLhu5FpIGxv4bqhbiBnaeG6pWMgbmfhu6cg4bufIHNpbmggdmnDqm4uIA0KDQojIyAqKjEuNS4gS+G6v3QgY+G6pXUgxJHhu4EgdMOgaSoqDQoNCkNoxrDGoW5nIDE6IFThu5VuZyBxdWFuIG5naGnDqm4gY+G7qXUuIA0KDQpDaMawxqFuZyAyOiBMw70gdGh1eeG6v3QgbmdoacOqbiBj4bupdQ0KDQpDaMawxqFuZyAzOiBE4buvIGxp4buHdSBuZ2hpw6puIGPhu6l1LiANCg0KQ2jGsMahbmcgNDogUGjDom4gdMOtY2ggdsOgIMSRxrBhIHJhIGvhur90IHF14bqjLg0KDQpDaMawxqFuZyA1OiBL4bq/dCBsdeG6rW4gdsOgIGtp4bq/biBuZ2jhu4suDQoNCiMgKipDSMavxqBORyAyOiBMw50gVEhVWeG6vlQgTkdIScOKTiBD4buoVSoqDQoNCiMjICoqMi4xLiBC4bqjbmcgbmfhuqt1IG5oacOqbioqDQoNCiMjIyAqKjIuMS4xLiAgQ+G6pXUgdHLDumMqKg0KDQpC4bqjbmcgbmfhuqt1IG5oacOqbiBoYWkgY2hp4buBdSBsw6AgY8O0bmcgY+G7pSBkw7luZyDEkeG7gyBwaMOibiBsb+G6oWkgY8OhYyDEkeG7kWkgdMaw4bujbmcgdHJvbmcgbeG6q3UgKGhv4bq3YyB04buVbmcgdGjhu4MpIGThu7FhIHRoZW8gaGFpIGJp4bq/biDEkeG7i25oIHTDrW5oOiBt4buZdCBiaeG6v24gZMOybmcgKF9yb3cgdmFyaWFibGVfKSB2w6AgbeG7mXQgYmnhur9uIGPhu5l0IChfY29sdW1uIHZhcmlhYmxlXykuDQoNCkdp4bqjIHPhu606DQoNCi0gQmnhur9uIGTDsm5nIFwoIFggXCkgY8OzIFwoIEkgXCkgbeG7qWMgKGxldmVscyksDQoNCi0gQmnhur9uIGPhu5l0IFwoIFkgXCkgY8OzIFwoIEogXCkgbeG7qWMsDQoNCktoaSDEkcOzLCBi4bqjbmcgbmfhuqt1IG5oacOqbiBcKCBJIFx0aW1lcyBKIFwpIGPDsyBk4bqhbmcgbmjGsCBzYXU6DQoNCiQkDQpcYmVnaW57YXJyYXl9e2N8Y2NjY3xjfQ0KXHRleHR7Qmnhur9uIFggLyBCaeG6v24gWX0gJiB5XzEgJiB5XzIgJiBcY2RvdHMgJiB5X0ogJiBcdGV4dHtU4buVbmcgZMOybmd9IFxcDQpcaGxpbmUNCnhfMSAmIG5fezExfSAmIG5fezEyfSAmIFxjZG90cyAmIG5fezFKfSAmIG5fezEufSBcXA0KeF8yICYgbl97MjF9ICYgbl97MjJ9ICYgXGNkb3RzICYgbl97Mkp9ICYgbl97Mi59IFxcDQpcdmRvdHMgJiBcdmRvdHMgJiBcdmRvdHMgJiBcZGRvdHMgJiBcdmRvdHMgJiBcdmRvdHMgXFwNCnhfSSAmIG5fe0kxfSAmIG5fe0kyfSAmIFxjZG90cyAmIG5fe0lKfSAmIG5fe0kufSBcXA0KXGhsaW5lDQpcdGV4dHtU4buVbmcgY+G7mXR9ICYgbl97LjF9ICYgbl97LjJ9ICYgXGNkb3RzICYgbl97Lkp9ICYNClxlbmR7YXJyYXl9DQokJA0KDQpUcm9uZyDEkcOzOg0KDQotIFwoIG5fe2lqfSBcKTogc+G7kSBsxrDhu6NuZyBxdWFuIHPDoXQgcsahaSB2w6BvIGjDoG5nIFwoIGkgXCkgdsOgIGPhu5l0IFwoIGogXCksDQoNCi0gXCggbl97aS59IFwpOiB04buVbmcgc+G7kSBxdWFuIHPDoXQg4bufIGjDoG5nIFwoIGkgXCksDQoNCi0gXCggbl97Lmp9IFwpOiB04buVbmcgc+G7kSBxdWFuIHPDoXQg4bufIGPhu5l0IFwoIGogXCksDQoNCi0gVOG7lW5nIHThuqV0IGPhuqMgY8OhYyDDtCBsw6Aga8OtY2ggdGjGsOG7m2MgbeG6q3U6ICANCg0KICBcWw0KICBuID0gXHN1bV97aT0xfV57SX0gXHN1bV97aj0xfV57Sn0gbl97aWp9DQogIFxdDQoNCiMjIyAqKjIuMS4yLiBU4bqnbiBz4buRIHbDoCB04bu3IGzhu4cqKg0KDQrEkOG7gyBtw7QgdOG6oyBt4buRaSBxdWFuIGjhu4cgZ2nhu69hIGhhaSBiaeG6v24gxJHhu4tuaCB0w61uaCB0cm9uZyBi4bqjbmcgbmfhuqt1IG5oacOqbiwgdGEgY+G6p24gcGjDom4gYmnhu4d0IHbDoCB0w61uaCB0b8OhbiBjw6FjIGxv4bqhaSB04bqnbiBz4buRIHbDoCB04bu3IGzhu4cgc2F1Og0KDQoqKjEuIFThuqduIHPhu5EgdMawxqFuZyDEkeG7kWkgKFThu7cgbOG7hyBjaHVuZyAtICpKb2ludCBQcm9wb3J0aW9ucyopKioNCg0KVOG7tyBs4buHIGNodW5nIMSRxrDhu6NjIHTDrW5oIHRoZW8gY8O0bmcgdGjhu6ljOg0KDQokJA0KcF97aWp9ID0gXGZyYWN7bl97aWp9fXtufQ0KJCQNCg0KxJDDonkgbMOgIHThu7cgbOG7hyBjw6FjIHF1YW4gc8OhdCByxqFpIHbDoG8gw7QgJChpLCBqKSQgdHJvbmcgdG/DoG4gYuG7mSBt4bqrdS4gVOG7lW5nIHThuqV0IGPhuqMgY8OhYyB04bu3IGzhu4cgbsOgeSBi4bqxbmcgMToNCg0KJCQNClxzdW1faSBcc3VtX2ogcF97aWp9ID0gMQ0KJCQNCg0KKipWw60gZOG7pToqKiBO4bq/dSAkcF97MTF9ID0gXGZyYWN7NjB9ezIwMH0gPSAwLjMkLCB04bupYyBsw6AgMzAlIGtow6FjaCBow6BuZyBsw6AgbmfGsOG7nWkgdHLhursgdsOgIHPhu60gZOG7pW5nIE1vYmlsZSBCYW5raW5nLg0KDQoqKjIuIFBow6JuIHBo4buRaSBiacOqbiAoKk1hcmdpbmFsIERpc3RyaWJ1dGlvbnMqKSoqDQoNCi0gKipU4bu3IGzhu4cgdOG7lW5nIGJpw6puIGPhu6dhIGTDsm5nIChSb3cgTWFyZ2luYWwgUHJvcG9ydGlvbnMpOioqDQoNCiQkDQpwX3tpLn0gPSBcZnJhY3tuX3tpLn19e259ID0gXHN1bV9qIHBfe2lqfQ0KJCQNCg0KxJDDonkgbMOgIHBow6JuIHBo4buRaSB4w6FjIHN14bqldCBj4bunYSBiaeG6v24gJFgkLiANCg0KKipWw60gZOG7pToqKiAkcF97MS59ID0gXGZyYWN7MTIwfXsyMDB9ID0gMC42JC4NCg0KLSAqKlThu7cgbOG7hyB04buVbmcgYmnDqm4gY+G7p2EgY+G7mXQgKENvbHVtbiBNYXJnaW5hbCBQcm9wb3J0aW9ucyk6KioNCg0KJCQNCnBfey5qfSA9IFxmcmFje25fey5qfX17bn0gPSBcc3VtX2kgcF97aWp9DQokJA0KDQrEkMOieSBsw6AgcGjDom4gcGjhu5FpIHjDoWMgc3XhuqV0IGPhu6dhIGJp4bq/biAkWSQuICANCg0KKipWw60gZOG7pToqKiAkcF97LjF9ID0gXGZyYWN7NzV9ezIwMH0gPSAwLjM3NSQuDQoNCioqMy4gUGjDom4gcGjhu5FpIGPDsyDEkWnhu4F1IGtp4buHbiAoKkNvbmRpdGlvbmFsIERpc3RyaWJ1dGlvbnMqKSoqDQoNCi0gKipQaMOibiBwaOG7kWkgY8OzIMSRaeG7gXUga2nhu4duIGPhu6dhIFkgdGhlbyBYOioqDQoNCiQkDQpwX3tqfGl9ID0gUChZID0gWV9qIHwgWCA9IFhfaSkgPSBcZnJhY3tuX3tpan19e25fe2kufX0NCiQkDQoNCioqVsOtIGThu6U6KiogVOG7tyBs4buHIG5nxrDhu51pIHRy4bq7IHRyb25nIHPhu5EgbmfGsOG7nWkgc+G7rSBk4bulbmcgTW9iaWxlIEJhbmtpbmcgbMOgICRcZnJhY3s2MH17MTIwfSA9IDAuNSQuDQoNCi0gKipQaMOibiBwaOG7kWkgY8OzIMSRaeG7gXUga2nhu4duIGPhu6dhIFggdGhlbyBZOioqDQoNCiQkDQpwX3tpfGp9ID0gUChYID0gWF9pIHwgWSA9IFlfaikgPSBcZnJhY3tuX3tpan19e25fey5qfX0NCiQkDQoNCioqVsOtIGThu6U6KiogVHJvbmcgc+G7kSBuZ8aw4budaSB0cuG6uywgdOG7tyBs4buHIGTDuW5nIE1vYmlsZSBCYW5raW5nIGzDoCAkXGZyYWN7NjB9ezc1fSA9IDAuOCQuDQoNCioqTMawdSDDvToqKiBO4bq/dSBoYWkgYmnhur9uICRYJCB2w6AgJFkkIMSR4buZYyBs4bqtcCB0aOG7kW5nIGvDqiAoKnN0YXRpc3RpY2FsbHkgaW5kZXBlbmRlbnQqKSwgdGjDrDoNCg0KJCQNCnBfe2p8aX0gPSBwX2ogXHF1YWQgXHRleHR7duG7m2kgbeG7jWkgfSBpLCBccXVhZCBcdGV4dHt2w6AgfSBccXVhZCBwX3tpfGp9ID0gcF9pIFxxdWFkIFx0ZXh0e3bhu5tpIG3hu41pIH0gag0KJCQNCg0KKio0LiBU4bqnbiBz4buRIGvhu7MgduG7jW5nICgqRXhwZWN0ZWQgRnJlcXVlbmNpZXMqKSoqDQoNCk7hur91IGdp4bqjIMSR4buLbmggJFgkIHbDoCAkWSQgxJHhu5ljIGzhuq1wLCB0aMOsIHThuqduIHPhu5Ega+G7syB24buNbmcgdOG6oWkgw7QgJChpLCBqKSQgbMOgOg0KDQokJA0KbV97aWp9ID0gXGZyYWN7bl97aS59IFxjZG90IG5fey5qfX17bn0NCiQkDQoNCiMjIyAqKjIuMS4zLiBDw6FjIHBow6JuIHBo4buRaSB4w6FjIHN14bqldCBsacOqbiBxdWFuKioNCg0KVmnhu4djIGzhu7FhIGNo4buNbiBtw7QgaMOsbmggeMOhYyBzdeG6pXQgcGjDuSBo4bujcCBjaG8gY8OhYyB04bqnbiBz4buRIMO0IFwoIG5fe2lqfSBcKSBwaOG7pSB0aHXhu5ljIHbDoG8gY8OhY2ggZOG7ryBsaeG7h3UgxJHGsOG7o2MgdGh1IHRo4bqtcC4gVHJvbmcgcGjDom4gdMOtY2ggYuG6o25nIG5n4bqrdSBuaGnDqm4sIGNow7puZyB0YSB0aMaw4budbmcgc+G7rSBk4bulbmcgY8OhYyBtw7QgaMOsbmggeMOhYyBzdeG6pXQgc2F1Og0KDQoqKjEuIFBow6JuIHBo4buRaSBQb2lzc29uKioNCg0KxJDGsOG7o2Mgw6FwIGThu6VuZyBraGkgdOG7lW5nIGjDoG5nIHbDoCB04buVbmcgY+G7mXQga2jDtG5nIGPhu5EgxJHhu4tuaCAodOG7qWMgXCggbiwgbl97aS59LCBuX3suan0gXCkgxJHhu4F1IGzDoCBuZ+G6q3Ugbmhpw6puKSwgdsOgIGPDoWMgw7QgXCggbl97aWp9IFwpIGzDoCBjw6FjIGJp4bq/biBuZ+G6q3Ugbmhpw6puIFBvaXNzb24gxJHhu5ljIGzhuq1wIHbhu5tpIHRoYW0gc+G7kSAoa+G7syB24buNbmcpIFwoIFxtdV97aWp9IFwpLiBLaGkgxJHDsyB04buVbmcgXCggbiA9IFxzdW0gbl97aWp9IFwpIGPFqW5nIHR1w6JuIHRoZW8gcGjDom4gcGjhu5FpIFBvaXNzb24uIMSQw6J5IGzDoCBjxqEgc+G7nyDEkeG7gyB4w6J5IGThu7FuZyBtw7QgaMOsbmggTG9nLWxpbmVhci4gIA0KDQoqVsOtIGThu6U6KiBN4buZdCB0cnVuZyB0w6JtIHRoxrDGoW5nIG3huqFpIGdoaSBuaOG6rW4gY8OhYyBz4buxIGPhu5EgYW4gbmluaCB44bqjeSByYSB0cm9uZyBraHXDtG4gdmnDqm4gY2hpYSB0aGVvIGtodSB24buxYyB2w6AgbG/huqFpIHPhu7EgY+G7kS4NCg0KKioyLiBQaMOibiBwaOG7kWkgTXVsdGlub21pYWwgKMSQYSB0aOG7qWMpKioNCg0Kw4FwIGThu6VuZyBraGkgY+G7oSBt4bqrdSBcKCBuIFwpIMSRxrDhu6NjIGPhu5EgxJHhu4tuaCwgdsOgIGPDoWMgxJHhu5FpIHTGsOG7o25nIMSRxrDhu6NjIHBow6JuIGxv4bqhaSBuZ+G6q3Ugbmhpw6puIHbDoG8gXCggSSBcdGltZXMgSiBcKSDDtCB24bubaSB4w6FjIHN14bqldCBcKCBwX3tpan0gXCkgY2hvIG3hu5dpIMO0IChcKCBcc3VtIHBfe2lqfSA9IDEgXCkpLiBLaGkgxJHDsywgdmVjdG9yIHThuqduIHPhu5EgY8OhYyDDtCB0dcOibiB0aGVvIHBow6JuIHBo4buRaSBNdWx0aW5vbWlhbCB24bubaSB04buVbmcgc+G7kSBcKCBuIFwpIHbDoCB4w6FjIHN14bqldCBcKCAocF97MTF9LCBwX3sxMn0sIFxkb3RzLCBwX3tJSn0pIFwpLiAgDQoNCipWw60gZOG7pToqIEto4bqjbyBzw6F0IFwoIG4gPSAyMDAgXCkga2jDoWNoIGjDoG5nIHbDoCBwaMOibiBsb+G6oWkgaOG7jSB0aGVvIGhhaSBiaeG6v24uDQoNCioqMy4gUGjDom4gcGjhu5FpIFByb2R1Y3QgTXVsdGlub21pYWwgKFTDrWNoIGPDoWMgcGjDom4gcGjhu5FpIMSQYSB0aOG7qWMpKioNCg0KLSBO4bq/dSB04buVbmcgY8OhYyBkw7JuZyBcKCBuX3tpLn0gXCkgxJHGsOG7o2MgY+G7kSDEkeG7i25oIHRyxrDhu5tjIChSb3cgbWFyZ2luYWxzIGZpeGVkKTogS2hpIMSRw7MsIHThu6tuZyBow6BuZyBcKCBpIFwpIHRyb25nIGLhuqNuZyBsw6Agbmfhuqt1IG5oacOqbiB0aGVvIHBow6JuIHBo4buRaSBNdWx0aW5vbWlhbCB24bubaSBrw61jaCB0aMaw4bubYyBt4bqrdSBcKCBuX2kuIFwpIHbDoCB4w6FjIHN14bqldCBcKCAocF97aTF9LCBwX3tpMn0sIFxkb3RzLCBwX3tpSn0pIFwpLiBUb8OgbiBi4buZIGLhuqNuZyBsw6AgdMOtY2ggY+G7p2EgXCggSSBcKSBwaMOibiBwaOG7kWkgTXVsdGlub21pYWwgxJHhu5ljIGzhuq1wLiAgDQoNCipWw60gZOG7pToqIENo4buNbiAxMjAgbmfGsOG7nWkgc+G7rSBk4bulbmcgTW9iaWxlIEJhbmtpbmcgdsOgIHBow6JuIGNoaWEgdGhlbyDEkeG7mSB0deG7lWkuDQoNCi0gTuG6v3UgdOG7lW5nIGPDoWMgY+G7mXQgXCggbl97Lmp9IFwpIMSRxrDhu6NjIGPhu5EgxJHhu4tuaCB0csaw4bubYyAoQ29sdW1uIG1hcmdpbmFscyBmaXhlZCk6IFTGsMahbmcgdOG7sSwgbeG7l2kgY+G7mXQgXCggaiBcKSBsw6AgbeG7mXQgcGjDom4gcGjhu5FpIE11bHRpbm9taWFsIHRoZW8gYmnhur9uIGTDsm5nIFwoIFggXCkgduG7m2kga8OtY2ggdGjGsOG7m2MgbeG6q3UgXCggbl97Lmp9IFwpIHbDoCB4w6FjIHN14bqldCBcKCAocF97MWp9LCBwX3syan0sIFxkb3RzLCBwX3tJan0pIFwpLiAgDQoNCipWw60gZOG7pToqIENo4buNbiA3NSBuZ8aw4budaSB0cuG6uywgNzUgbmfGsOG7nWkgdHJ1bmcgbmnDqm4sIDUwIG5nxrDhu51pIGNhbyB0deG7lWksIHLhu5NpIHBow6JuIHTDrWNoIHRoZW8gdmnhu4djIGPDsyBkw7luZyBNb2JpbGUgQmFua2luZyBoYXkga2jDtG5nLg0KDQojIyAqKjIuMi4gQuG6o25nIG5n4bqrdSBuaGnDqm4gMlgyKioNCg0KQuG6o25nIG5n4bqrdSBuaGnDqm4gXCgyIFx0aW1lcyAyXCkgbMOgIGPDtG5nIGPhu6UgxJHGoW4gZ2nhuqNuIG5oxrBuZyBy4bqldCBoaeG7h3UgcXXhuqMgxJHhu4Mgc28gc8OhbmggdOG7tyBs4buHIGdp4buvYSBoYWkgbmjDs20gdHJvbmcgY8OhYyBuZ2hpw6puIGPhu6l1IHbhu5tpIGJp4bq/biBr4bq/dCBxdeG6oyBuaOG7iyBwaMOibiAodsOtIGThu6U6IHRow6BuaCBjw7RuZy90aOG6pXQgYuG6oWkpLg0KDQpHaeG6oyBz4butIGLhuqNuZyBjw7MgZOG6oW5nOg0KDQp8IE5ow7NtICAgICAgIHwgVGjDoG5oIGPDtG5nIChcKHlfMVwpKSB8IFRo4bqldCBi4bqhaSAoXCh5XzJcKSkgfCBU4buVbmcgY+G7mW5nIHwNCnwtLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tfA0KfCBOaMOzbSAxIChcKHhfMVwpKSB8IFwobl97MTF9XCkgICAgICAgICAgICAgfCBcKG5fezEyfVwpICAgICAgICAgICB8IFwobl97MS59XCkgICB8DQp8IE5ow7NtIDIgKFwoeF8yXCkpIHwgXChuX3syMX1cKSAgICAgICAgICAgICB8IFwobl97MjJ9XCkgICAgICAgICAgIHwgXChuX3syLn1cKSAgIHwNCg0KS2hpIMSRw7M6DQoNCi0gVOG7tyBs4buHIHRow6BuaCBjw7RuZyBuaMOzbSAxOiBcKCBcaGF0e3B9XzEgPSBcZnJhY3tuX3sxMX19e25fezEufX0gXCkNCg0KLSBU4bu3IGzhu4cgdGjDoG5oIGPDtG5nIG5ow7NtIDI6IFwoIFxoYXR7cH1fMiA9IFxmcmFje25fezIxfX17bl97Mi59fSBcKQ0KDQpTbyBzw6FuaCBoYWkgdOG7tyBs4buHIG7DoHkgZ2nDunAgxJHDoW5oIGdpw6Egc+G7sSBraMOhYyBiaeG7h3QgZ2nhu69hIGPDoWMgbmjDs20gdHJvbmcgbmdoacOqbiBj4bupdS4NCg0KIyMjICoqMi4yLjEuIEhp4buHdSBoYWkgdOG7tyBs4buHKioNCg0KSGnhu4d1IHPhu5EgdOG7tyBs4buHIMSRxrDhu6NjIMSR4buLbmggbmdoxKlhIGzDoCBcKCBEID0gcF8xIC0gcF8yIFwpLCBwaOG6o24gw6FuaCBt4bupYyBjaMOqbmggbOG7h2NoIHbhu4EgeMOhYyBzdeG6pXQgdGjDoG5oIGPDtG5nIGdp4buvYSBoYWkgbmjDs20uIE7hur91IFwoIEQgPiAwIFwpLCBuaMOzbSAxIGPDsyB04bu3IGzhu4cgdGjDoG5oIGPDtG5nIGNhbyBoxqFuIG5ow7NtIDI7IG7hur91IFwoIEQgPCAwIFwpLCBuZ8aw4bujYyBs4bqhaTsgY8OybiBu4bq/dSBcKCBEID0gMCBcKSwga2jDtG5nIGPDsyBz4buxIGtow6FjIGJp4buHdCByw7UgcsOgbmcuIFNhaSBz4buRIGNodeG6qW4gY+G7p2EgXCggXGhhdHtEfSBcKSDEkcaw4bujYyB0w61uaCBi4bqxbmc6DQoNClxbDQpTRShcaGF0e0R9KSA9IFxzcXJ0e1xmcmFje1xoYXR7cH1fMSgxLVxoYXR7cH1fMSl9e25fMX0gKyBcZnJhY3tcaGF0e3B9XzIoMS1caGF0e3B9XzIpfXtuXzJ9fQ0KXF0NCg0KS2hv4bqjbmcgdGluIGPhuq15IDk1JToNCg0KXFsNClxoYXR7RH0gXHBtIHpfe1xhbHBoYS8yfSBcdGltZXMgU0UoXGhhdHtEfSkNClxdDQoNCiMjIyAqKjIuMi4yLiBU4bu3IHPhu5Egbmd1eSBjxqEgKFJlbGF0aXZlIFJpc2sgLSBSUikqKg0KDQpU4bu3IHPhu5Egbmd1eSBjxqEgxJFvIGzGsOG7nW5nIG3hu6ljIMSR4buZIHLhu6dpIHJvIGdp4buvYSBoYWkgbmjDs206IFwoIFJSID0gXGZyYWN7cF8xfXtwXzJ9IFwpLiBO4bq/dSBcKCBSUiA+IDEgXCksIG5ow7NtIDEgY8OzIG5ndXkgY8ahIGNhbyBoxqFuIG5ow7NtIDI7IG7hur91IFwoIFJSIDwgMSBcKSwgbmjDs20gMSBjw7Mgbmd1eSBjxqEgdGjhuqVwIGjGoW4uIERvIHBow6JuIHBo4buRaSBcKCBSUiBcKSBraMO0bmcgxJHhu5FpIHjhu6luZywgdGEgdGjGsOG7nW5nIGTDuW5nIFwoIFxsb2coUlIpIFwpIHbhu5tpIHNhaSBz4buRIGNodeG6qW46DQoNClxbDQpTRShcbG9nKFxoYXR7UlJ9KSkgPSBcc3FydHsgXGZyYWN7MS1caGF0e3B9XzF9e25fezExfX0gKyBcZnJhY3sxLVxoYXR7cH1fMn17bl97MjF9fSB9DQpcXQ0KDQpLaG/huqNuZyB0aW4gY+G6rXkgOTUlIGNobyBcKCBcbG9nKFJSKSBcKToNCg0KXFsNClxsb2coXGhhdHtSUn0pIFxwbSB6X3tcYWxwaGEvMn0gXHRpbWVzIFNFKFxsb2coXGhhdHtSUn0pKQ0KXF0NCg0KIyMjICoqMi4yLjMuIFThu7cgc+G7kSBjaMOqbmggKE9kZHMgUmF0aW8gLSBPUikqKg0KDQpU4bu3IHPhu5EgY2jDqm5oIMSRbyBsxrDhu51uZyBt4bupYyDEkeG7mSB44bqjeSByYSBj4bunYSBz4buxIGtp4buHbiBzbyB24bubaSBraMO0bmcgeOG6o3kgcmEsIMSRxrDhu6NjIHTDrW5oIGzDoDoNCg0KXFsNCk9SID0gXGZyYWN7bl97MTF9bl97MjJ9fXtuX3sxMn1uX3syMX19DQpcXQ0KDQotIE7hur91IFwoIE9SID4gMSBcKSwgb2RkcyDhu58gbmjDs20gMSBjYW8gaMahbiBuaMOzbSAyOyANCg0KLSBO4bq/dSBcKCBPUiA8IDEgXCksIG9kZHMg4bufIG5ow7NtIDEgdGjhuqVwIGjGoW47IFwoIE9SID0gMSBcKSBjaG8gdGjhuqV5IGhhaSBiaeG6v24gxJHhu5ljIGzhuq1wLg0KDQoqKsOdIG5naMSpYSBj4bunYSBPZGRzIFJhdGlvIChPUik6KioNCg0KT2RkcyBSYXRpbyAoT1IpIGzDoCB0aMaw4bubYyDEkW8gcXVhbiB0cuG7jW5nIHRyb25nIGPDoWMgbcO0IGjDrG5oIGjhu5NpIHF1eSBsb2dpc3RpYyB2w6AgbmdoacOqbiBj4bupdSBi4buHbmggY2jhu6luZy4gT1IgY8OzIGPDoWMgxJHhurdjIMSRaeG7g20gxJHDoW5nIGNow7ogw706DQoNCi0gKipUw61uaCDEkeG7kWkgeOG7qW5nKio6IE9SIGtow7RuZyDEkeG7lWkga2hpIGhvw6FuIMSR4buVaSBuaMOzbSBob+G6t2Mga+G6v3QgcXXhuqMgKE9SIG3hu5tpID0gMSAvIE9SIGPFqSkuDQoNCi0gKipLaMO0bmcgYuG7iyDhuqNuaCBoxrDhu59uZyBi4bufaSB04buVbmcgYmnDqm4qKjogT1Ig4buVbiDEkeG7i25oIGtoaSBuaMOibiBjw6FjIGjDoG5nL2Phu5l0IHbhu5tpIG3hu5l0IGjhurFuZyBz4buRLg0KDQotICoqWOG6pXAgeOG7iSBSUiBraGkgc+G7sSBraeG7h24gaGnhur9tKio6IEtoaSB4w6FjIHN14bqldCBuaOG7jywgT1Ig4omIIFJSLg0KDQotICoqTMOgIG7hu4FuIHThuqNuZyBjaG8gaOG7k2kgcXV5IGxvZ2lzdGljKio6IFbDrCBtw7QgaMOsbmggbsOgeSBk4buxYSB0csOqbiBsb2dpdCAobG9nLW9kZHMpLg0KDQpDw7RuZyB0aOG7qWMgc2FpIHPhu5EgY2h14bqpbiB2w6Aga2hv4bqjbmcgdGluIGPhuq15IDk1JSBj4bunYSBcKCBcbG9nKFx3aWRlaGF0e09SfSkgXCk6DQoNClxbDQpTRShcbG9nKFx3aWRlaGF0e09SfSkpID0gXHNxcnR7IFxmcmFjezF9e25fezExfX0gKyBcZnJhY3sxfXtuX3sxMn19ICsgXGZyYWN7MX17bl97MjF9fSArIFxmcmFjezF9e25fezIyfX0gfQ0KXF0NCg0KXFsNClxsb2coXHdpZGVoYXR7T1J9KSBccG0gel97XGFscGhhLzJ9IFx0aW1lcyBTRShcbG9nKFx3aWRlaGF0e09SfSkpDQpcXQ0KDQoNCioqU28gc8OhbmggY8OhYyB0aMaw4bubYyDEkW86KioNCg0KLSAqKkhp4buHdSBz4buRIHThu7cgbOG7hyAoRCkqKjogROG7hSBoaeG7g3UsIMSRbyBsxrDhu51uZyBraMOhYyBiaeG7h3QgdHV54buHdCDEkeG7kWkuDQoNCi0gKipU4bu3IHPhu5Egbmd1eSBjxqEgKFJSKSoqOiBQaMO5IGjhu6NwIHRyb25nIG5naGnDqm4gY+G7qXUgdGh14bqnbiB04bqtcCBob+G6t2MgdGjhu60gbmdoaeG7h20gbmfhuqt1IG5oacOqbi4NCg0KLSAqKlThu7cgc+G7kSBjaMOqbmggKE9SKSoqOiBQaOG7lSBiaeG6v24gdHJvbmcgbmdoacOqbiBj4bupdSBi4buHbmggY2jhu6luZyB2w6AgbcO0IGjDrG5oIEdMTSwgbmjGsG5nIGPhuqduIGRp4buFbiBnaeG6o2kgdGjhuq1uIHRy4buNbmcga2hpIHPhu7Ega2nhu4duIHBo4buVIGJp4bq/bi4NCg0KIyMgKioyLjMuIEtp4buDbSDEkeG7i25oIENoaS1iw6xuaCBwaMawxqFuZyBQZWFyc29uKioNCg0KS2nhu4NtIMSR4buLbmggQ2hpLWLDrG5oIHBoxrDGoW5nIFBlYXJzb24gdGjGsOG7nW5nIMSRxrDhu6NjIGTDuW5nIMSR4buDIMSRw6FuaCBnacOhIG3hu5FpIHF1YW4gaOG7hyBnaeG7r2EgaGFpIGJp4bq/biDEkeG7i25oIHTDrW5oLiBUaOG7kW5nIGvDqiBraeG7g20gxJHhu4tuaCDEkcaw4bujYyB0w61uaCBi4bqxbmc6DQoNClxbDQpcY2hpXjIgPSBcc3VtX3tpPTF9XkkgXHN1bV97aj0xfV5KIFxmcmFjeyhuX3tpan0gLSBcaGF0e219X3tpan0pXjJ9e1xoYXR7bX1fe2lqfX0NClxdDQoNClRyb25nIMSRw7MsIFwobl97aWp9XCkgbMOgIHThuqduIHPhu5EgcXVhbiBzw6F0IHbDoCBcKFxoYXR7bX1fe2lqfVwpIGzDoCB04bqnbiBz4buRIGvhu7MgduG7jW5nIG7hur91IGhhaSBiaeG6v24gxJHhu5ljIGzhuq1wLg0KDQotICoqR2nhuqMgdGh1eeG6v3QgSOKCgCoqOiBIYWkgYmnhur9uIMSR4buZYyBs4bqtcC4NCg0KLSAqKkLhuq1jIHThu7EgZG8qKjogXChkZiA9IChJIC0gMSkoSiAtIDEpXCkNCg0KLSAqKlF1eSB04bqvYyoqOiBCw6FjIGLhu48gSOKCgCBu4bq/dToNCg0KICAtIFwoXGNoaV4yID4gXGNoaV4yX3tcYWxwaGEsIGRmfVwpDQogIA0KICAtIFwocCA8IFxhbHBoYVwpDQoNCioqxJBp4buBdSBraeG7h24gw6FwIGThu6VuZyoqOg0KDQotIE3hu41pIHThuqduIHPhu5Ega+G7syB24buNbmcg4omlIDENCg0KLSBLaMO0bmcgcXXDoSAyMCUgc+G7kSDDtCBjw7MgXChcaGF0e219X3tpan0gPCA1XCkNCg0KTuG6v3UgxJFp4buBdSBraeG7h24ga2jDtG5nIHRo4buPYSBtw6NuICh2w60gZOG7pSBi4bqjbmcgdGjGsGEgaG/hurdjIGPhu6EgbeG6q3Ugbmjhu48pLCBuw6puIGTDuW5nIGtp4buDbSDEkeG7i25oIGNow61uaCB4w6FjIEZpc2hlci4NCg0KIyMgKioyLjQuIE3DtCBow6xuaCBo4buTaSBxdXkqKg0KDQojIyMgKioyLjQuMS4gTcO0IGjDrG5oIExvZ2lzdGljIChMb2dpc3RpYyBSZWdyZXNzaW9uIE1vZGVsKSoqDQoNCk3DtCBow6xuaCBo4buTaSBxdXkgbG9naXN0aWMgxJHGsOG7o2Mgc+G7rSBk4bulbmcgxJHhu4MgZOG7sSDEkW/DoW4geMOhYyBzdeG6pXQgeOG6o3kgcmEgY+G7p2EgbeG7mXQgYmnhur9uIG5o4buLIHBow6JuIChjw7Mva2jDtG5nLCAxLzAsIMSR4buXL3RyxrDhu6N0Li4uKS4NCg0KVGhheSB2w6wgbcO0IGjDrG5oIGjDs2EgdHLhu7FjIHRp4bq/cCBr4bq/dCBxdeG6oywgbcO0IGjDrG5oIGxvZ2lzdGljIG3DtCBow6xuaCBow7NhIHjDoWMgc3XhuqV0IHRow7RuZyBxdWEgaMOgbSBsb2dpc3RpYyAoc2lnbW9pZCkg4oCTIGdpw7pwIMSR4bqjbSBi4bqjbyBnacOhIHRy4buLIGThu7EgxJFvw6FuIGx1w7RuIG7hurFtIHRyb25nIGtob+G6o25nICgwLCAxKS4NCg0KLSAqKlThu7cgc+G7kSBjaMOqbmggKE9kZHMpKio6IA0KXFsNClx0ZXh0e09kZHN9ID0gXGZyYWN7cH17MSAtIHB9DQpcXQ0KDQotICoqSMOgbSBsb2dpdCAobG9nLW9kZHMpKio6DQpcWw0KXGxvZ1xsZWZ0KFxmcmFje3B9ezEgLSBwfVxyaWdodCkgPSBcYmV0YV8wICsgXGJldGFfMSBYXzEgKyBcY2RvdHMgKyBcYmV0YV9wIFhfcA0KXF0NCg0KLSAqKkjDoG0gZOG7sSDEkW/DoW4gKHNpZ21vaWQpKio6DQpcWw0KcCA9IFxmcmFjezF9ezEgKyBlXnstKFxiZXRhXzAgKyBcYmV0YV8xIFhfMSArIFxjZG90cyArIFxiZXRhX3AgWF9wKX19DQpcXQ0KDQotICoqT2RkcyBSYXRpbyAoT1IpKio6DQpcWw0KT1IgPSBlXntcYmV0YX0NClxdDQoNCioqw50gbmdoxKlhOioqDQoNCi0gT1IgPiAxOiBvZGRzIHTEg25nIOKGkiB4w6FjIHN14bqldCB0xINuZy4NCg0KLSBPUiA8IDE6IG9kZHMgZ2nhuqNtIOKGkiB4w6FjIHN14bqldCBnaeG6o20uDQoNCi0gT1IgPSAxOiBraMO0bmcg4bqjbmggaMaw4bufbmcuDQoNCioqxq91IMSRaeG7g206KioNCg0KLSBEaeG7hW4gZ2nhuqNpIHRy4buxYyBxdWFuIGLhurFuZyB4w6FjIHN14bqldCBob+G6t2Mgb2RkcyByYXRpby4NCg0KLSBUw61uaCB0b8OhbiBoaeG7h3UgcXXhuqMsIGtow7RuZyB5w6p1IGPhuqd1IHTDoGkgbmd1ecOqbiBjYW8uDQoNCi0gTMOgIG7hu4FuIHThuqNuZyBj4bunYSBuaGnhu4F1IG3DtCBow6xuaCB0aOG7kW5nIGvDqiBoaeG7h24gxJHhuqFpLg0KDQojIyMgKioyLjQuMi4gTcO0IGjDrG5oIFByb2JpdCoqDQoNCk3DtCBow6xuaCBQcm9iaXQgxJHGsOG7o2Mgc+G7rSBk4bulbmcgxJHhu4MgcGjDom4gdMOtY2ggdsOgIGThu7EgxJFvw6FuIHjDoWMgc3XhuqV0IHjhuqN5IHJhIGPhu6dhIG3hu5l0IGJp4bq/biBwaOG6o24gaOG7k2kgbmjhu4sgcGjDom4gKDAvMSksIHTGsMahbmcgdOG7sSBuaMawIG3DtCBow6xuaCBMb2dpdC4gVHV5IG5oacOqbiwgdGhheSB2w6wgc+G7rSBk4bulbmcgaMOgbSBsb2dpc3RpYywgUHJvYml0IGTDuW5nIGjDoG0gcGjDom4gcGjhu5FpIHTDrWNoIGzFqXkgY2h14bqpbiAoQ0RGKSDEkeG7gyDDoW5oIHjhuqEgxJHhuqd1IHbDoG8gdGjDoG5oIHjDoWMgc3XhuqV0Lg0KDQpH4buNaSBcKCBZIFwpIGzDoCBiaeG6v24gbmjhu4sgcGjDom4gKG5o4bqtbiBnacOhIHRy4buLIDAgaG/hurdjIDEpLCBtw7QgaMOsbmggUHJvYml0IGdp4bqjIMSR4buLbmggcuG6sW5nOg0KDQpcWw0KUChZID0gMSBcbWlkIFgpID0gXFBoaShYXGJldGEpDQpcXQ0KDQpUcm9uZyDEkcOzOg0KDQotIFwoIFxQaGkoXGNkb3QpIFwpIGzDoCBow6BtIHBow6JuIHBo4buRaSB0w61jaCBsxal5IGNodeG6qW4gKENERikgY+G7p2EgcGjDom4gcGjhu5FpIGNodeG6qW4gY2h14bqpbiBow7NhLg0KDQotIFwoIFhcYmV0YSA9IFxiZXRhXzAgKyBcYmV0YV8xIFhfMSArIFxjZG90cyArIFxiZXRhX3AgWF9wIFwpDQoNCkjDoG0gbGnDqm4ga+G6v3QgdHJvbmcgbcO0IGjDrG5oIFByb2JpdCBsw6Agbmdo4buLY2ggxJHhuqNvIGPhu6dhIGjDoG0gcGjDom4gcGjhu5FpIGNodeG6qW46DQoNClxbDQpcUGhpXnstMX0oUChZPTEpKSA9IFhcYmV0YQ0KXF0NCg0KxJBp4buBdSBuw6B5IGNobyB0aOG6pXkgbeG7kWkgcXVhbiBo4buHIHR1eeG6v24gdMOtbmggZ2nhu69hIGPDoWMgYmnhur9uIMSR4buZYyBs4bqtcCB2w6AgKip6LXNjb3JlKiogKGdpw6EgdHLhu4sgY2h14bqpbiBow7NhIHRoZW8gcGjDom4gcGjhu5FpIGNodeG6qW4pLg0KDQoqKkRp4buFbiBnaeG6o2kgaOG7hyBz4buRKioNCg0KLSBDw6FjIGjhu4cgc+G7kSBcKCBcYmV0YSBcKSBraMO0bmcgdGjhu4MgZGnhu4VuIGdp4bqjaSB0cuG7sWMgdGnhur9wIG5oxrAgdHJvbmcgbcO0IGjDrG5oIExvZ2l0Lg0KDQotIFR1eSBuaGnDqm4sIGThuqV1IGPhu6dhIFwoIFxiZXRhIFwpIHbhuqtuIGNobyBiaeG6v3QgY2hp4buBdSBoxrDhu5tuZyDhuqNuaCBoxrDhu59uZyBj4bunYSBiaeG6v24gxJHhu5ljIGzhuq1wIMSR4bq/biB4w6FjIHN14bqldCB44bqjeSByYSBiaeG6v24gcGjhu6UgdGh14buZYy4NCg0KLSBDw7MgdGjhu4MgdMOtbmggKipoaeG7h3Ug4bupbmcgY+G6rW4gYmnDqm4qKiAobWFyZ2luYWwgZWZmZWN0cykgxJHhu4MgZ2nhuqNpIHRow61jaCDDvSBuZ2jEqWEgdGjhu7FjIHThur8uDQoNCioqU28gc8OhbmggduG7m2kgTG9naXQqKg0KDQp8IMSQ4bq3YyDEkWnhu4NtICAgICAgICAgfCBMb2dpdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcm9iaXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KfC0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18DQp8IEjDoG0gbGnDqm4ga+G6v3QgICAgIHwgTG9naXQ6IFwoIFxsb2coXGZyYWN7cH17MS1wfSkgXCkgfCBDaHXhuqluIGjDs2E6IFwoIFxQaGleey0xfShwKSBcKSAgICAgfA0KfCBQaMOibiBwaOG7kWkgbmfhuqdtICAgfCBMb2dpc3RpYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDaHXhuqluIGNodeG6qW4gaMOzYSAoTm9ybWFsKSAgICAgICAgICB8DQp8IERp4buFbiBnaeG6o2kgaOG7hyBz4buRICB8IE9SIChk4buFIGhp4buDdSBoxqFuKSAgICAgICAgICAgICAgICAgIHwgUGjhu6ljIHThuqFwIGjGoW4sIGPhuqduIGhp4buHdSDhu6luZyBj4bqtbiBiacOqbiB8DQp8IOG7qG5nIGThu6VuZyAgICAgICAgIHwgUGjhu5UgYmnhur9uICAgICAgICAgICAgICAgICAgICAgICAgICB8IETDuW5nIGtoaSBk4buvIGxp4buHdSBjw7MgdMOtbmggY2h14bqpbiBow7NhIHwNCg0KKirGr3UgxJFp4buDbSoqICAgDQoNCi0gUGjDuSBo4bujcCBraGkgZ2nhuqMgxJHhu4tuaCBy4bqxbmcgc2FpIHPhu5EgY8OzIHBow6JuIHBo4buRaSBjaHXhuqluLg0KDQotIEvhur90IHF14bqjIOG7lW4gxJHhu4tuaCB0cm9uZyBuaGnhu4F1IHRyxrDhu51uZyBo4bujcCBjw7MgcGjDom4gcGjhu5FpIHjDoWMgc3XhuqV0IGNodeG6qW4gbmfhuqdtLg0KDQojIyMgKioyLjQuMy4gTcO0IGjDrG5oIENsb2dsb2cqKg0KDQpNw7QgaMOsbmggQ2xvZ2xvZyBsw6AgbeG7mXQgZOG6oW5nIGPhu6dhIGjhu5NpIHF1eSBuaOG7iyBwaMOibiwgdHJvbmcgxJHDsyBow6BtIGxpw6puIGvhur90IGzDoDoNCg0KJCQNClxsb2coLVxsb2coMSAtIHApKSA9IFxldGEgPSBcYmV0YV8wICsgXGJldGFfMSB4XzEgKyBcY2RvdHMgKyBcYmV0YV9rIHhfaw0KJCQNCg0KVOG7qyDEkcOzLCB4w6FjIHN14bqldCB44bqjeSByYSBz4buxIGtp4buHbiBsw6A6DQoNCiQkDQpwID0gMSAtIFxleHAoLVxleHAoXGV0YSkpDQokJA0KDQrEkOG7gyDGsOG7m2MgbMaw4bujbmcgY8OhYyB0aGFtIHPhu5EgXCggXGJldGEgXCksIG3DtCBow6xuaCBz4butIGThu6VuZyAqKnBoxrDGoW5nIHBow6FwIMaw4bubYyBsxrDhu6NuZyBo4bujcCBsw70gdOG7kWkgxJFhIChNTEUpKiosIHRow7RuZyBxdWEgdmnhu4djIGPhu7FjIMSR4bqhaSBow7NhIGjDoG0gbG9nLWxpa2VsaWhvb2Q6DQoNCiQkDQpcZWxsKFxiZXRhKSA9IFxzdW1fe2k9MX1ee259IFxsZWZ0WyB5X2kgXGxvZygxIC0gXGV4cCgtXGV4cChcZXRhX2kpKSkgKyAoMSAtIHlfaSkoIC1cZXhwKFxldGFfaSkpIFxyaWdodF0NCiQkDQoNClBoxrDGoW5nIHBow6FwIG7DoHkgxJHhurdjIGJp4buHdCBwaMO5IGjhu6NwIGtoaSB4w6FjIHN14bqldCB44bqjeSByYSBz4buxIGtp4buHbiBraMO0bmcgxJHhu5FpIHjhu6luZyBob+G6t2Mgc+G7sSBraeG7h24gaGnhur9tLiBIw6BtIGxpw6puIGvhur90IGNsb2dsb2cgZ2nDunAgbcO0IGjDrG5oIHBo4bqjbiDDoW5oIHThu5F0IGjGoW4gc+G7sSB0aGF5IMSR4buVaSBuaGFuaCBjaMOzbmcgduG7gSB4w6FjIHN14bqldCBn4bqnbiBuZ8aw4buhbmcgMS4NCg0KIyMgKioyLjUuIEtp4buDbSDEkeG7i25oIHPhu7EgcGjDuSBo4bujcCBj4bunYSBtw7QgaMOsbmgqKg0KDQrEkOG7gyDEkcOhbmggZ2nDoSBt4bupYyDEkeG7mSBwaMO5IGjhu6NwIGPhu6dhIG3DtCBow6xuaCBo4buTaSBxdXkgbmjhu4sgcGjDom4gKGxvZ2l0LCBwcm9iaXQsIGNsb2dsb2cpLCBt4buZdCBz4buRIGNo4buJIHPhu5EgxJHDoW5oIGdpw6EgcGjhu5UgYmnhur9uIMSRxrDhu6NjIHPhu60gZOG7pW5nOg0KDQojIyMgKioyLjUuMS4gQ2jhu4kgc+G7kSBBSUMgKEFrYWlrZSBJbmZvcm1hdGlvbiBDcml0ZXJpb24pKioNCg0KLSAqKkPDtG5nIHRo4bupYyoqOg0KDQogICQkDQogIEFJQyA9IC0yIFxjZG90IFxsb2coTCkgKyAyaw0KICAkJA0KICANCiAgVHJvbmcgxJHDszoNCiAgDQogIC0gXCggTCBcKSBsw6AgZ2nDoSB0cuG7iyBow6BtIGjhu6NwIGzDvSB04buRaSDEkWEgKGxpa2VsaWhvb2QpLA0KICANCiAgLSBcKCBrIFwpIGzDoCBz4buRIGzGsOG7o25nIHRoYW0gc+G7kSDGsOG7m2MgbMaw4bujbmcgdHJvbmcgbcO0IGjDrG5oLg0KDQotICoqw50gbmdoxKlhKio6IEFJQyBsw6AgdGjGsOG7m2MgxJFvIGPDom4gYuG6sW5nIGdp4buvYSDEkeG7mSBwaMO5IGjhu6NwIGPhu6dhIG3DtCBow6xuaCB2w6AgxJHhu5kgcGjhu6ljIHThuqFwIGPhu6dhIG7Dsy4gTcO0IGjDrG5oIGPDsyBBSUMgKip0aOG6pXAgaMahbioqIMSRxrDhu6NjIHhlbSBsw6AgKipwaMO5IGjhu6NwIGjGoW4qKiwgdHLDoW5oIMSRxrDhu6NjIGhp4buHbiB0xrDhu6NuZyBvdmVyZml0dGluZy4NCg0KIyMjICoqMi41LjIuIENo4buJIHPhu5EgQklDIChCYXllc2lhbiBJbmZvcm1hdGlvbiBDcml0ZXJpb24pKioNCg0KQklDIGzDoCBt4buZdCB0acOqdSBjaMOtIMSRw6FuaCBnacOhIG3hu6ljIMSR4buZIHBow7kgaOG7o3AgY+G7p2EgbcO0IGjDrG5oLCDEkeG6t2MgYmnhu4d0IGjhu691IMOtY2gga2hpIHNvIHPDoW5oIG5oaeG7gXUgbcO0IGjDrG5oIGtow6FjIG5oYXUuIEJJQyDEkcaw4bujYyB0w61uaCB0aGVvIGPDtG5nIHRo4bupYzoNCg0KJCQNClx0ZXh0e0JJQ30gPSAtMiBcY2RvdCBcbG9nKEwpICsgayBcY2RvdCBcbG9nKG4pDQokJA0KDQpUcm9uZyDEkcOzOg0KDQotIFwoIEwgXCk6IExvZy1saWtlbGlob29kIGPhu6dhIG3DtCBow6xuaA0KDQotIFwoIGsgXCk6IFPhu5EgdGhhbSBz4buRIMaw4bubYyBsxrDhu6NuZyB0cm9uZyBtw7QgaMOsbmgNCg0KLSBcKCBuIFwpOiBLw61jaCB0aMaw4bubYyBt4bqrdQ0KDQoqKsOdIG5naMSpYToqKg0KDQotIEJJQyBwaOG6oXQgbeG6oW5oIGPDoWMgbcO0IGjDrG5oIGPDsyBxdcOhIG5oaeG7gXUgdGhhbSBz4buRICjEkeG7gyB0csOhbmggb3ZlcmZpdHRpbmcpLg0KDQotIE3DtCBow6xuaCBjw7MgKipCSUMgbmjhu48gaMahbioqIMSRxrDhu6NjIHhlbSBsw6AgKipwaMO5IGjhu6NwIGjGoW4qKi4NCg0KIyMjICoqMi41LjMuIExvZy1MaWtlbGlob29kIChHacOhIHRy4buLIGxvZyBj4bunYSBow6BtIGjhu6NwIGzDvSkqKg0KDQotICoqQ8O0bmcgdGjhu6ljKio6DQogICQkDQogIFxsb2cgTCA9IFxzdW1fe2k9MX1ee259IFxsb2cgZih5X2kgXG1pZCB4X2k7IFxiZXRhKQ0KICAkJA0KICAtIFwoIFxsb2cgTCBcKSBjw6BuZyBs4bubbiAow610IMOibSBoxqFuKSB0aMOsIG3DtCBow6xuaCBjw6BuZyBwaMO5IGjhu6NwIHbhu5tpIGThu68gbGnhu4d1IHF1YW4gc8OhdC4NCg0KLSAqKsOdIG5naMSpYSoqOiBTbyBzw6FuaCBjw6FjIG3DtCBow6xuaCBk4buxYSB0csOqbiBsb2ctbGlrZWxpaG9vZCBnacO6cCB4w6FjIMSR4buLbmggbcO0IGjDrG5oIG7DoG8gbcO0IHThuqMgZOG7ryBsaeG7h3UgdOG7kXQgaMahbi4gVHV5IG5oacOqbiwgdsOsIGdpw6EgdHLhu4sgbsOgeSB0aMaw4budbmcgw6JtIHbDoCBwaOG7pSB0aHXhu5ljIHbDoG8gc+G7kSBsxrDhu6NuZyB0aGFtIHPhu5EsIGPhuqduIGvhur90IGjhu6NwIHbhu5tpIEFJQyDEkeG7gyDEkcawYSByYSDEkcOhbmggZ2nDoSB0b8OgbiBkaeG7h24uDQoNCiMjIyAqKjIuNS40LiBDaOG7iSBz4buRIE1jRmFkZGVuJ3MgXCggUl4yIFwpIChQc2V1ZG8gUi1zcXVhcmVkKSoqDQoNClRyb25nIG3DtCBow6xuaCBo4buTaSBxdXkgbG9naXN0aWMgaG/hurdjIGPDoWMgbcO0IGjDrG5oIGjhu5NpIHF1eSBuaOG7iyBwaMOibiBwaGkgdHV54bq/biBraMOhYyBuaMawIFByb2JpdCwgQ2xvZ2xvZywgdmnhu4djIMSRw6FuaCBnacOhIG3hu6ljIMSR4buZIHBow7kgaOG7o3AgY+G7p2EgbcO0IGjDrG5oIGtow7RuZyB0aOG7gyBz4butIGThu6VuZyBjaOG7iSBz4buRIFwoIFJeMiBcKSB0cnV54buBbiB0aOG7kW5nIG5oxrAgdHJvbmcgaOG7k2kgcXV5IHR1eeG6v24gdMOtbmguIFRoYXkgdsOgbyDEkcOzLCB0YSBz4butIGThu6VuZyAqKlBzZXVkbyBcKCBSXjIgXCkqKiwgduG7m2kgcGhpw6puIGLhuqNuIHBo4buVIGJp4bq/biBuaOG6pXQgbMOgICoqTWNGYWRkZW7igJlzIFwoIFJeMiBcKSoqLg0KDQpDaOG7iSBz4buRIG7DoHkgxJHGsOG7o2MgdMOtbmggdGhlbyBjw7RuZyB0aOG7qWM6DQoNClxbDQpSXjJfe1x0ZXh0e01jRmFkZGVufX0gPSAxIC0gXGZyYWN7XGxvZyBMX3tcdGV4dHttb2RlbH19fXtcbG9nIExfe1x0ZXh0e251bGx9fX0NClxdDQoNClRyb25nIMSRw7M6DQoNCi0gXCggXGxvZyBMX3tcdGV4dHttb2RlbH19IFwpIGzDoCBsb2ctbGlrZWxpaG9vZCBj4bunYSBtw7QgaMOsbmggxJHhuqd5IMSR4bunIChjw7MgY8OhYyBiaeG6v24gZ2nhuqNpIHRow61jaCksDQogIA0KLSBcKCBcbG9nIExfe1x0ZXh0e251bGx9fSBcKSBsw6AgbG9nLWxpa2VsaWhvb2QgY+G7p2EgbcO0IGjDrG5oIHLhu5duZyAoY2jhu4kgY8OzIGjhurFuZyBz4buRKS4NCg0KKirDnSBuZ2jEqWE6KioNCg0KLSBcKCBSXjJfe1x0ZXh0e01jRmFkZGVufX0gXCkgY8OgbmcgY2FvIHRow6wgbcO0IGjDrG5oIGPDoG5nIHBow7kgaOG7o3AgduG7m2kgZOG7ryBsaeG7h3UuDQoNCi0gR2nDoSB0cuG7iyB0aMaw4budbmcgbuG6sW0gdHJvbmcga2hv4bqjbmcgdOG7qyAwIMSR4bq/biAxLCBuaMawbmcgdHJvbmcgdGjhu7FjIHThur8sIGPDoWMgZ2nDoSB0cuG7iyB04burICoqMC4yIMSR4bq/biAwLjQqKiDEkcOjIMSRxrDhu6NjIGNvaSBsw6AgcGjDuSBo4bujcCB04buRdCDEkeG7kWkgduG7m2kgZOG7ryBsaeG7h3Ugbmjhu4sgcGjDom4uDQogIA0KIyMgKioyLjYuIEThu7EgYsOhbyoqDQoNClNhdSBraGkgeMOieSBk4buxbmcgbcO0IGjDrG5oIGjhu5NpIHF1eSBuaOG7iyBwaMOibiAobmjGsCBsb2dpdCwgcHJvYml0IGhv4bq3YyBjbG9nbG9nKSwgdGEgY8OzIHRo4buDIHPhu60gZOG7pW5nIGjDoG0gYHByZWRpY3QoKWAgxJHhu4MgZOG7sSBiw6FvIGvhur90IHF14bqjIGNobyBjw6FjIHF1YW4gc8OhdCBt4bubaS4gSMOgbSBuw6B5IGPDsyBoYWkgbOG7sWEgY2jhu41uIHBo4buVIGJp4bq/biB0aMO0bmcgcXVhIMSR4buRaSBz4buRIGB0eXBlYCwgYmFvIGfhu5NtOg0KDQojIyMgKioyLjYuMS4gdHlwZSA9ICJsaW5rIioqDQoNCi0gVHLhuqMgduG7gSBnacOhIHRy4buLIHR1eeG6v24gdMOtbmggXCggXGV0YSA9IFxiZXRhXzAgKyBcYmV0YV8xIFhfMSArIFxjZG90cyArIFxiZXRhX2sgWF9rIFwpLCBn4buNaSBsw6AgKipiaeG6v24gbGnDqm4ga+G6v3QqKi4NCg0KLSDEkMOieSBsw6AgxJHhuqd1IHJhIGPhu6dhIG3DtCBow6xuaCB0csaw4bubYyBraGkgY2h1eeG7g24gdGjDoG5oIHjDoWMgc3XhuqV0Lg0KDQotIFRow61jaCBo4bujcCBraGkgbXXhu5FuIHBow6JuIHTDrWNoIG7hu5lpIHThuqFpIG3DtCBow6xuaCBob+G6t2Mga2nhu4NtIHRyYSBt4bupYyDEkeG7mSDhuqNuaCBoxrDhu59uZyBj4bunYSBjw6FjIGJp4bq/biDEkeG7mWMgbOG6rXAuDQoNCiMjIyAqKjIuNi4yLiB0eXBlID0gInJlc3BvbnNlIioqDQoNCi0gVHLhuqMgduG7gSAqKnjDoWMgc3XhuqV0KiogeOG6o3kgcmEgY+G7p2Egc+G7sSBraeG7h24gXCggWSA9IDEgXCksIMSRxrDhu6NjIHTDrW5oIHRow7RuZyBxdWEgaMOgbSBsacOqbiBr4bq/dCBuZ2jhu4tjaCDEkeG6o286DQoNCiAgLSBW4bubaSBsb2dpdDogXCggXGhhdHtwfSA9IFxmcmFjezF9ezEgKyBlXnstXGV0YX19IFwpDQogIA0KICAtIFbhu5tpIHByb2JpdDogXCggXGhhdHtwfSA9IFxQaGkoXGV0YSkgXCkNCiAgDQogIC0gVuG7m2kgY2xvZ2xvZzogXCggXGhhdHtwfSA9IDEgLSBcZXhwKC1cZXhwKFxldGEpKSBcKQ0KICANCi0gxJDDonkgbMOgIGPDoWNoIGThu7EgYsOhbyBwaMO5IGjhu6NwIGtoaSBj4bqnbiDEkcawYSByYSB4w6FjIHN14bqldCB0cuG7sWMgdGnhur9wIGNobyB04burbmcgdHLGsOG7nW5nIGjhu6NwIG3hu5tpLg0KDQogIA0KIyAqKkNIxq/GoE5HIDM6IEThu64gTEnhu4ZVIE5HSEnDik4gQ+G7qFUqKg0KDQojIyAqKjMuMS4gR2nhu5tpIHRoaeG7h3UgYuG7mSBk4buvIGxp4buHdSoqDQoNCiAgQuG7mSBk4buvIGxp4buHdSBiYW8gZ+G7k20gNTAwIHF1YW4gc8OhdCB0csOqbiB04buVbmcgMTMgYmnhur9uIChn4buTbSA0IGJp4bq/biDEkeG7i25oIGzGsOG7o25nIHbDoCA5IGJp4bq/biDEkeG7i25oIHTDrW5oKSwgcGjhuqNuIMOhbmggdGjDtG5nIHRpbiB24buBIHRow7NpIHF1ZW4gdGnDqnUgdGjhu6UgY2FmZmVpbmUgY+G7p2EgbmfGsOG7nWkgZMO5bmcgdsOgIG3hu6ljIMSR4buZIOG6o25oIGjGsOG7n25nIMSR4bq/biBnaeG6pWMgbmfhu6cuIEPDoWMgYmnhur9uIHRyb25nIGThu68gbGnhu4d1IHRo4buDIGhp4buHbiBuaGnhu4F1IGtow61hIGPhuqFuaCBraMOhYyBuaGF1IG5oxrAgbG/huqFpIMSR4buTIHXhu5FuZyBjaOG7qWEgY2FmZmVpbmUgxJHGsOG7o2Mgc+G7rSBk4bulbmcgKGPDoCBwaMOqLCB0csOgLCBuxrDhu5tjIHTEg25nIGzhu7FjKSwgdGjhu51pIMSRaeG7g20gdGnDqnUgdGjhu6UgdHJvbmcgbmfDoHkgKHPDoW5nLCBjaGnhu4F1LCB04buRaSksIGdp4bubaSB0w61uaCwgY8WpbmcgbmjGsCBt4bupYyDEkeG7mSB04bqtcCB0cnVuZyB2w6AgY2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7pyBzYXUga2hpIHRpw6p1IHRo4bulLiBExrDhu5tpIMSRw6J5IGzDoCBi4bqjbmcgY2hpIHRp4bq/dCBtw7QgdOG6oyB04burbmcgYmnhur9uIHRyb25nIGThu68gbGnhu4d1LCB0xrDGoW5nIOG7qW5nIHbhu5tpIHThu6tuZyDEkeG7kWkgdMaw4bujbmcgxJHGsOG7o2Mga2jhuqNvIHPDoXQuDQoNCmBgYHtyfQ0KZCA8LSByZWFkLmNzdigiRDovUFRETERUL2NhZmZlaW5lX2ludGFrZV90cmFja2VyLmNzdiIpDQpkYXRhLnRhYmxlKGQpDQpgYGANCg0KDQpgYGB7cn0NCmRsZHQgPC0gYygic2xlZXBfaW1wYWN0ZWQiLCANCiAgICAgICAgICAiYmV2ZXJhZ2VfY29mZmVlIiwgImJldmVyYWdlX2VuZXJneV9kcmluayIsICJiZXZlcmFnZV90ZWEiLA0KICAgICAgICAgICJ0aW1lX29mX2RheV9hZnRlcm5vb24iLCAidGltZV9vZl9kYXlfZXZlbmluZyIsICJ0aW1lX29mX2RheV9tb3JuaW5nIiwNCiAgICAgICAgICAiZ2VuZGVyX2ZlbWFsZSIsICJnZW5kZXJfbWFsZSIpDQpkdCA8LSBkWywgZGxkdF0NCmBgYA0KDQpgYGB7cn0NCmR0IDwtIGRhdGEuZnJhbWUobGFwcGx5KGR0LCBhcy5mYWN0b3IpKQ0KYGBgDQoNCiMjICoqMy4yLiBNw7QgdOG6oyBjw6FjIGJp4bq/biB0cm9uZyBi4buZIGThu68gbGnhu4d1KioNCg0KLSAqKmNhZmZlaW5lX21nKio6IEzGsOG7o25nIGNhZmZlaW5lIHRpw6p1IHRo4bulIHRyb25nIG5nw6B5LCDEkcOjIGNodeG6qW4gaMOzYSB24buBIHRoYW5nIHThu6sgMCDEkeG6v24gMS4gIA0KDQotICoqYWdlKio6IMSQ4buZIHR14buVaSBj4bunYSBuZ8aw4budaSB0aGFtIGdpYSBraOG6o28gc8OhdCwgY2h14bqpbiBow7NhIHThu6sgbmjhu48gbmjhuqV0IMSR4bq/biBs4bubbiBuaOG6pXQuICANCg0KLSAqKmZvY3VzX2xldmVsKio6IE3hu6ljIMSR4buZIHThuq1wIHRydW5nIGPhu6dhIG5nxrDhu51pIHRoYW0gZ2lhIHNhdSBraGkgdGnDqnUgdGjhu6UgY2FmZmVpbmUsIHRoZW8gdGhhbmcgxJFp4buDbSB04burIDAgxJHhur9uIDEgKDEgbMOgIHThuq1wIHRydW5nIHThu5FpIMSRYSkuICANCg0KLSAqKnNsZWVwX3F1YWxpdHkqKjogTeG7qWMgxJHhu5kgY2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7pyBj4bunYSBuZ8aw4budaSB0aGFtIGdpYSwgdOG7sSDEkcOhbmggZ2nDoSB0aGVvIHRoYW5nIMSRaeG7g20gdOG7qyAwIMSR4bq/biAxICgxIGzDoCBuZ+G7pyB04buRdCBuaOG6pXQpLiAgDQoNCi0gKipzbGVlcF9pbXBhY3RlZCoqOiBHaeG6pWMgbmfhu6cgY8OzIGLhu4sg4bqjbmggaMaw4bufbmcgYuG7n2kgY2FmZmVpbmUgaGF5IGtow7RuZyAoMCA9IGtow7RuZyBi4buLIOG6o25oIGjGsOG7n25nLCAxID0gYuG7iyDhuqNuaCBoxrDhu59uZykuICANCg0KLSAqKmJldmVyYWdlX2NvZmZlZSoqOiBOZ8aw4budaSB0aGFtIGdpYSBjw7MgdGnDqnUgdGjhu6UgY8OgIHBow6ogaGF5IGtow7RuZyAoVHJ1ZSA9IGPDsywgRmFsc2UgPSBraMO0bmcpLiAgDQoNCi0gKipiZXZlcmFnZV9lbmVyZ3lfZHJpbmsqKjogTmfGsOG7nWkgdGhhbSBnaWEgY8OzIHRpw6p1IHRo4bulIG7GsOG7m2MgdMSDbmcgbOG7sWMgaGF5IGtow7RuZyAoVHJ1ZSA9IGPDsywgRmFsc2UgPSBraMO0bmcpLiAgDQotICoqYmV2ZXJhZ2VfdGVhKio6IE5nxrDhu51pIHRoYW0gZ2lhIGPDsyB0acOqdSB0aOG7pSB0csOgIGhheSBraMO0bmcgKFRydWUgPSBjw7MsIEZhbHNlID0ga2jDtG5nKS4gIA0KDQotICoqdGltZV9vZl9kYXlfbW9ybmluZyoqOiBDYWZmZWluZSDEkcaw4bujYyB0acOqdSB0aOG7pSB2w6BvIGJ14buVaSBzw6FuZyBoYXkga2jDtG5nIChUcnVlID0gY8OzLCBGYWxzZSA9IGtow7RuZykuICANCg0KLSAqKnRpbWVfb2ZfZGF5X2FmdGVybm9vbioqOiBDYWZmZWluZSDEkcaw4bujYyB0acOqdSB0aOG7pSB2w6BvIGJ14buVaSBjaGnhu4F1IGhheSBraMO0bmcgKFRydWUgPSBjw7MsIEZhbHNlID0ga2jDtG5nKS4gIA0KDQotICoqdGltZV9vZl9kYXlfZXZlbmluZyoqOiBDYWZmZWluZSDEkcaw4bujYyB0acOqdSB0aOG7pSB2w6BvIGJ14buVaSB04buRaSBoYXkga2jDtG5nIChUcnVlID0gY8OzLCBGYWxzZSA9IGtow7RuZykuICANCg0KLSAqKmdlbmRlcl9mZW1hbGUqKjogTmfGsOG7nWkgdGhhbSBnaWEgbMOgIG7hu68gaGF5IGtow7RuZyAoVHJ1ZSA9IG7hu68sIEZhbHNlID0ga2jDtG5nIHBo4bqjaSBu4buvKS4gIA0KDQotICoqZ2VuZGVyX21hbGUqKjogTmfGsOG7nWkgdGhhbSBnaWEgbMOgIG5hbSBoYXkga2jDtG5nIChUcnVlID0gbmFtLCBGYWxzZSA9IGtow7RuZyBwaOG6o2kgbmFtKS4NCg0KIyAqKkNIxq/GoE5HIDQ6IFBIw4JOIFTDjUNIIFbDgCDEkMavQSBSQSBL4bq+VCBRVeG6oioqDQoNClRyb25nIGLDoGkgbHXhuq1uIG7DoHksIGJp4bq/biBwaOG7pSB0aHXhu5ljIMSRxrDhu6NjIGzhu7FhIGNo4buNbiBsw6Agc2xlZXBfaW1wYWN0ZWQsIHBo4bqjbiDDoW5oIHZp4buHYyBnaeG6pWMgbmfhu6cgY8OzIGLhu4sg4bqjbmggaMaw4bufbmcgYuG7n2kgY2FmZmVpbmUgaGF5IGtow7RuZy4gQ8OhYyBiaeG6v24gxJHhu4tuaCB0w61uaCBjw7JuIGzhuqFpIHPhur0gxJHGsOG7o2MgcGjDom4gdMOtY2ggdsOgIGtp4buDbSDEkeG7i25oIG5o4bqxbSB4w6FjIMSR4buLbmggbGnhu4d1IGNow7puZyBjw7MgbeG7kWkgbGnDqm4gaOG7hyB0aOG7kW5nIGvDqiB24bubaSBiaeG6v24gcGjhu6UgdGh14buZYywgdOG7qyDEkcOzIGfDs3AgcGjhuqduIGzDoG0gc8OhbmcgdOG7jyBuaOG7r25nIHnhur91IHThu5EgY8OzIHRo4buDIHTDoWMgxJHhu5luZyDEkeG6v24gY2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7pyBj4bunYSBuZ8aw4budaSB0acOqdSBkw7luZyBjYWZmZWluZS4NCg0KYGBge3J9DQpkYXRhLnRhYmxlKGR0KQ0KYGBgDQoNCiMjICoqNC4xLiBUaOG7kW5nIGvDqiBtw7QgdOG6oyBiaeG6v24gcGjhu6UgdGh14buZYyoqDQoNCl8qKkzhuq1wIGLhuqNuZyB04bqnbiBz4buRIHbDoCBi4bqjbmcgdOG6p24gc3XhuqV0KipfDQoNCmBgYHtyfQ0KdGFibGUoZmFjdG9yKGR0JHNsZWVwX2ltcGFjdGVkLA0KICAgICAgICAgICAgIGxldmVscyA9IGMoMCwgMSksDQogICAgICAgICAgICAgbGFiZWxzID0gYygiS2jDtG5nIGLhu4sg4bqjbmggaMaw4bufbmciLCAiQuG7iyDhuqNuaCBoxrDhu59uZyIpKSkNCnRhYmxlKGZhY3RvcihkdCRzbGVlcF9pbXBhY3RlZCwNCiAgICAgICAgICAgICBsZXZlbHMgPSBjKDAsIDEpLA0KICAgICAgICAgICAgIGxhYmVscyA9IGMoIktow7RuZyBi4buLIOG6o25oIGjGsOG7n25nIiwgIkLhu4sg4bqjbmggaMaw4bufbmciKSkpIC8gbGVuZ3RoKGR0JHNsZWVwX2ltcGFjdGVkKQ0KYGBgDQoNCl8qKkzhuq1wIGJp4buDdSDEkeG7kyoqXw0KDQpgYGB7cn0NCiMgR8OhbiBuaMOjbiByw7UgcsOgbmcgY2hvIGJp4bq/biBzbGVlcF9pbXBhY3RlZA0KZHQkc2xlZXBfbGFiZWwgPC0gZmFjdG9yKGR0JHNsZWVwX2ltcGFjdGVkLA0KICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoMCwgMSksDQogICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiS2jDtG5nIGLhu4sg4bqjbmggaMaw4bufbmciLCAiQuG7iyDhuqNuaCBoxrDhu59uZyIpKQ0KDQojIFTDrW5oIHThu7cgbOG7hw0KZGZfdHlsZSA8LSBhcy5kYXRhLmZyYW1lKHByb3AudGFibGUodGFibGUoZHQkc2xlZXBfbGFiZWwpKSkNCmNvbG5hbWVzKGRmX3R5bGUpIDwtIGMoInNsZWVwX2xhYmVsIiwgInR5bGUiKQ0KDQojIFbhur0gYmnhu4N1IMSR4buTDQpnZ3Bsb3QoZGZfdHlsZSwgYWVzKHggPSBzbGVlcF9sYWJlbCwgeSA9IHR5bGUsIGZpbGwgPSBzbGVlcF9sYWJlbCkpICsNCiAgZ2VvbV9jb2wod2lkdGggPSAwLjYpICsNCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHNjYWxlczo6cGVyY2VudCh0eWxlLCBhY2N1cmFjeSA9IDAuMSkpLA0KICAgICAgICAgICAgdmp1c3QgPSAtMC41LCBzaXplID0gNSkgKw0KICBzY2FsZV95X2NvbnRpbnVvdXMobGFiZWxzID0gc2NhbGVzOjpwZXJjZW50X2Zvcm1hdCgpKSArDQogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoIktow7RuZyBi4buLIOG6o25oIGjGsOG7n25nIiA9ICIjODFENEZBIiwgICMgeGFuaCBsw6ENCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQuG7iyDhuqNuaCBoxrDhu59uZyIgPSAiIzY0QjVGNiIpKSArICAgICAgIyDEkeG7jw0KICBsYWJzKHRpdGxlID0gIkJp4buDdSDEkeG7kyA0LjEuIFThu7cgbOG7hyBnaeG6pWMgbmfhu6cgYuG7iyDhuqNuaCBoxrDhu59uZyBi4bufaSBjYWZmZWluZSIsDQogICAgICAgeCA9ICJUw6xuaCB0cuG6oW5nIOG6o25oIGjGsOG7n25nIiwNCiAgICAgICB5ID0gIlThu7cgbOG7hyIpICsNCiAgdGhlbWVfbWluaW1hbChiYXNlX3NpemUgPSAxNCkgKw0KICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpDQpgYGANCg0KXyoqTmjhuq1uIHjDqXQqKl8NCg0KLSBCaeG7g3UgxJHhu5MgY+G7mXQgdsOgIGLhuqNuZyDhu58gdHLDqm4gdGjhu4MgaGnhu4duIHThu7cgbOG7hyBuZ8aw4budaSB0aGFtIGdpYSBraOG6o28gc8OhdCBjw7MgZ2nhuqVjIG5n4bunIGLhu4sg4bqjbmggaMaw4bufbmcgYuG7n2kgdmnhu4djIHRpw6p1IHRo4bulIGNhZmZlaW5lLiBUaGVvIGvhur90IHF14bqjIHRodSDEkcaw4bujYywgY8OzICoqMjAzIG5nxrDhu51pKiogKGNoaeG6v20gKio0MC42JSoqKSBjaG8gYmnhur90IGdp4bqlYyBuZ+G7pyBj4bunYSBo4buNICoqYuG7iyDhuqNuaCBoxrDhu59uZyoqLCB0cm9uZyBraGkgKioyOTcgbmfGsOG7nWkgY8OybiBs4bqhaSoqIChjaGnhur9tICoqNTkuNCUqKikgY2hvIGJp4bq/dCAqKmtow7RuZyBi4buLIOG6o25oIGjGsOG7n25nKiouICANCg0KLSBOaMawIHbhuq15LCBwaOG6p24gbOG7m24gbmfGsOG7nWkgdGhhbSBnaWEga2jDtG5nIGPhuqNtIG5o4bqtbiB0aOG6pXkgdMOhYyDEkeG7mW5nIHRpw6p1IGPhu7FjIHLDtSBy4buHdCBj4bunYSBjYWZmZWluZSDEkeG6v24gZ2nhuqVjIG5n4bunLCB0dXkgbmhpw6puIHThu7cgbOG7hyBi4buLIOG6o25oIGjGsOG7n25nIHbhuqtuIGNoaeG6v20gbeG7mXQgcGjhuqduIMSRw6FuZyBr4buDLCBjaG8gdGjhuqV5IGPhuqduIGPDom4gbmjhuq9jIHRo4budaSDEkWnhu4NtIHbDoCBsb+G6oWkgxJHhu5MgdeG7kW5nIGtoaSBz4butIGThu6VuZyBjYWZmZWluZSwgxJHhurdjIGJp4buHdCBsw6AgduG7m2kgbmjhu69uZyBuZ8aw4budaSBuaOG6oXkgY+G6o20gduG7gSBnaeG6pWMgbmfhu6cuDQoNCiMjICoqNC4yLiBUaOG7kW5nIGvDqiBzdXkgZGnhu4VuKioNCg0KIyMjICoqNC4yLjEuIEtp4buDbSDEkeG7i25oIHTDrW5oIMSR4buZYyBs4bqtcCoqDQoNCktp4buDbSDEkeG7i25oIENoaSBiw6xuaCBwaMawxqFuZyBsw6AgbeG7mXQgcGjGsMahbmcgcGjDoXAgdGjhu5FuZyBrw6ogcGjhu5UgYmnhur9uIGTDuW5nIMSR4buDIGtp4buDbSB0cmEgbeG7qWMgxJHhu5kgxJHhu5ljIGzhuq1wIGdp4buvYSBoYWkgYmnhur9uIHBow6JuIGxv4bqhaS4gUGjGsMahbmcgcGjDoXAgbsOgeSBnacO6cCB4w6FjIMSR4buLbmggbGnhu4d1IGPDsyBt4buRaSBxdWFuIGjhu4cgxJHDoW5nIGvhu4MgbsOgbyBnaeG7r2EgY8OhYyBiaeG6v24gaGF5IGtow7RuZyB0aMO0bmcgcXVhIHNvIHPDoW5oIGdp4buvYSB04bqnbiBz4buRIHF1YW4gc8OhdCB2w6AgdOG6p24gc+G7kSBr4buzIHbhu41uZyB0cm9uZyBi4bqjbmcgY2jDqW8uDQoNCkPDtG5nIHRo4bupYyB0w61uaCBnacOhIHRy4buLIHRo4buRbmcga8OqIENoaSBiw6xuaCBwaMawxqFuZyDEkcaw4bujYyB0aOG7gyBoaeG7h24gbmjGsCBzYXU6DQoNCiQkXGNoaV4yID0gXHN1bV97aSxqfSBcZnJhY3sobl97aWp9IC1caGF0e1xtdX1fe2lqfSleMn17XGhhdHtcbXV9X3tpan19JCQNCg0KIyMjICoqNC4yLjIuIEJp4bq/biBzbGVlcF9pbXBhY3RlZCB2w6AgYmV2ZXJhZ2VfY29mZmVlKioNCg0KKipHaeG6oyB0aHV54bq/dCBraeG7g20gxJHhu4tuaDoqKg0KDQotICoqSOKCgCoqOiBUw6xuaCB0cuG6oW5nIGdp4bqlYyBuZ+G7pyBi4buLIOG6o25oIGjGsOG7n25nIHbDoCB2aeG7h2MgdGnDqnUgdGjhu6UgY8OgIHBow6ogbMOgIGhhaSBiaeG6v24gxJHhu5ljIGzhuq1wLg0KDQotICoqSOKCgSoqOiBUw6xuaCB0cuG6oW5nIGdp4bqlYyBuZ+G7pyBi4buLIOG6o25oIGjGsOG7n25nIHbDoCB2aeG7h2MgdGnDqnUgdGjhu6UgY8OgIHBow6ogY8OzIG3hu5FpIGxpw6puIGjhu4cgduG7m2kgbmhhdS4NCg0KYGBge3J9DQptdGh0IDwtIHRhYmxlKGR0JHNsZWVwX2ltcGFjdGVkLCBkdCRiZXZlcmFnZV9jb2ZmZWUpDQpjaGlzcS50ZXN0KG10aHQpDQpgYGANCg0KXyoqTmjhuq1uIHjDqXQ6KipfDQpRdWEga+G6v3QgcXXhuqMga2nhu4NtIMSR4buLbmggY2hvIHRo4bqleSAqKnAtdmFsdWUgPSAxLjkxNSDDlyAxMOKBu+KBuSA8IDAuMDUqKiwgZG8gxJHDsyB0YSBiw6FjIGLhu48gZ2nhuqMgdGh1eeG6v3QgKipcKEhfMFwpKiouIMSQaeG7gXUgbsOgeSDEkeG7k25nIG5naMSpYSB24bubaSB2aeG7h2MgKip0w6xuaCB0cuG6oW5nIGdp4bqlYyBuZ+G7pyBi4buLIOG6o25oIGjGsOG7n25nIHbDoCB2aeG7h2MgdGnDqnUgdGjhu6UgY8OgIHBow6ogY8OzIG3hu5FpIGxpw6puIGjhu4cgduG7m2kgbmhhdSoqLg0KDQpOw7NpIGPDoWNoIGtow6FjLCAqKnZp4buHYyB14buRbmcgY8OgIHBow6ogY8OzIHRo4buDIOG6o25oIGjGsOG7n25nIMSR4bq/biBjaOG6pXQgbMaw4bujbmcgZ2nhuqVjIG5n4bunKiogY+G7p2EgbmfGsOG7nWkgdGhhbSBnaWEga2jhuqNvIHPDoXQuIEvhur90IHF14bqjIG7DoHkgZ8OzcCBwaOG6p24gY+G7p25nIGPhu5EgZ2nhuqMgdGh1eeG6v3QgcuG6sW5nIGNhZmZlaW5lIHRyb25nIGPDoCBwaMOqIGzDoCBt4buZdCB54bq/dSB04buRIGPDsyB0aOG7gyBsw6BtIHN1eSBnaeG6o20gY2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7pyDhu58gbeG7mXQgYuG7mSBwaOG6rW4gbmfGsOG7nWkgZMO5bmcuDQoNCiMjIyAqKjQuMi4zLiBCaeG6v24gc2xlZXBfaW1wYWN0ZWQgdsOgIGJldmVyYWdlX2VuZXJneV9kcmluayoqDQoNCioqR2nhuqMgdGh1eeG6v3Qga2nhu4NtIMSR4buLbmg6KioNCg0KLSAqKkjigoAqKjogVMOsbmggdHLhuqFuZyBnaeG6pWMgbmfhu6cgYuG7iyDhuqNuaCBoxrDhu59uZyB2w6Agdmnhu4djIHRpw6p1IHRo4bulIG7GsOG7m2MgdMSDbmcgbOG7sWMgbMOgIGhhaSBiaeG6v24gxJHhu5ljIGzhuq1wLg0KDQotICoqSOKCgSoqOiBUw6xuaCB0cuG6oW5nIGdp4bqlYyBuZ+G7pyBi4buLIOG6o25oIGjGsOG7n25nIHbDoCB2aeG7h2MgdGnDqnUgdGjhu6Ugbsaw4bubYyB0xINuZyBs4buxYyBjw7MgbeG7kWkgbGnDqm4gaOG7hyB24bubaSBuaGF1Lg0KDQpgYGB7cn0NCm10aHQxIDwtIHRhYmxlKGR0JHNsZWVwX2ltcGFjdGVkLCBkdCRiZXZlcmFnZV9lbmVyZ3lfZHJpbmspDQpjaGlzcS50ZXN0KG10aHQxKQ0KYGBgDQoNCl8qKk5o4bqtbiB4w6l0OioqXyAgDQoNClF1YSBr4bq/dCBxdeG6oyBraeG7g20gxJHhu4tuaCBjaG8gdGjhuqV5ICoqcC12YWx1ZSA9IDAuMDAxMTUgPCAwLjA1KiosIGRvIMSRw7MgdGEgYsOhYyBi4buPIGdp4bqjIHRodXnhur90ICoqXChIXzBcKSoqLiDEkGnhu4F1IG7DoHkgxJHhu5NuZyBuZ2jEqWEgduG7m2kgdmnhu4djICoqdMOsbmggdHLhuqFuZyBnaeG6pWMgbmfhu6cgYuG7iyDhuqNuaCBoxrDhu59uZyB2w6Agdmnhu4djIHRpw6p1IHRo4bulIG7GsOG7m2MgdMSDbmcgbOG7sWMgY8OzIG3hu5FpIGxpw6puIGjhu4cgduG7m2kgbmhhdSoqLg0KDQpOw7NpIGPDoWNoIGtow6FjLCAqKnZp4buHYyB14buRbmcgbsaw4bubYyB0xINuZyBs4buxYyBjw7MgdGjhu4Mg4bqjbmggaMaw4bufbmcgxJHhur9uIGNo4bqldCBsxrDhu6NuZyBnaeG6pWMgbmfhu6cqKiBj4bunYSBuZ8aw4budaSB0aGFtIGdpYSBraOG6o28gc8OhdC4gS+G6v3QgcXXhuqMgbsOgeSBj4bunbmcgY+G7kSBuaOG6rW4gxJHhu4tuaCBy4bqxbmcgY2FmZmVpbmUgdHJvbmcgbsaw4bubYyB0xINuZyBs4buxYyBsw6AgbeG7mXQgeeG6v3UgdOG7kSB0aeG7gW0g4bqpbiBjw7MgdGjhu4MgbMOgbSBzdXkgZ2nhuqNtIGNo4bqldCBsxrDhu6NuZyBnaeG6pWMgbmfhu6csIMSR4bq3YyBiaeG7h3QgduG7m2kgbmjhu69uZyBuZ8aw4budaSBuaOG6oXkgY+G6o20gduG7m2kgY2jhuqV0IGvDrWNoIHRow61jaC4NCg0KIyMjICoqNC4yLjQuIEJp4bq/biBzbGVlcF9pbXBhY3RlZCB2w6AgYmV2ZXJhZ2VfdGVhKioNCg0KKipHaeG6oyB0aHV54bq/dCBraeG7g20gxJHhu4tuaDoqKg0KDQotICoqSOKCgCoqOiBUw6xuaCB0cuG6oW5nIGdp4bqlYyBuZ+G7pyBi4buLIOG6o25oIGjGsOG7n25nIHbDoCB2aeG7h2MgdGnDqnUgdGjhu6UgdHLDoCBsw6AgaGFpIGJp4bq/biDEkeG7mWMgbOG6rXAuDQoNCi0gKipI4oKBKio6IFTDrG5oIHRy4bqhbmcgZ2nhuqVjIG5n4bunIGLhu4sg4bqjbmggaMaw4bufbmcgdsOgIHZp4buHYyB0acOqdSB0aOG7pSB0csOgIGPDsyBt4buRaSBsacOqbiBo4buHIHbhu5tpIG5oYXUuDQoNCmBgYHtyfQ0KbXRodDIgPC0gdGFibGUoZHQkc2xlZXBfaW1wYWN0ZWQsIGR0JGJldmVyYWdlX3RlYSkNCmNoaXNxLnRlc3QobXRodDIpDQpgYGANCg0KUXVhIGvhur90IHF14bqjIGtp4buDbSDEkeG7i25oIGNobyB0aOG6pXkgKipwLXZhbHVlIDwgMi4yIMOXIDEw4oG7wrnigbYgPCAwLjA1KiosIGRvIMSRw7MgdGEgKipiw6FjIGLhu48gZ2nhuqMgdGh1eeG6v3QgXChIXzBcKSoqLiDEkGnhu4F1IG7DoHkgY8OzIG5naMSpYSBsw6AgKip0w6xuaCB0cuG6oW5nIGdp4bqlYyBuZ+G7pyBi4buLIOG6o25oIGjGsOG7n25nIHbDoCB2aeG7h2MgdGnDqnUgdGjhu6UgdHLDoCBjw7MgbeG7kWkgbGnDqm4gaOG7hyB24bubaSBuaGF1KiouIE7Ds2kgY8OhY2gga2jDoWMsICoqdmnhu4djIHXhu5FuZyB0csOgIGPDsyB0aOG7gyDhuqNuaCBoxrDhu59uZyDEkeG6v24gY2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7pyoqIGPhu6dhIG5nxrDhu51pIHRoYW0gZ2lhIGto4bqjbyBzw6F0LiANCg0KIyMjICoqNC4yLjUuIEJp4bq/biBzbGVlcF9pbXBhY3RlZCB2w6AgdGltZV9vZl9kYXlfYWZ0ZXJub29uKioNCg0KKipHaeG6oyB0aHV54bq/dCBraeG7g20gxJHhu4tuaDoqKg0KDQotICoqSOKCgCoqOiBUw6xuaCB0cuG6oW5nIGdp4bqlYyBuZ+G7pyBi4buLIOG6o25oIGjGsOG7n25nIHbDoCB2aeG7h2MgdGnDqnUgdGjhu6UgY2FmZmVpbmUgdsOgbyBideG7lWkgY2hp4buBdSBsw6AgaGFpIGJp4bq/biDEkeG7mWMgbOG6rXAuDQoNCi0gKipI4oKBKio6IFTDrG5oIHRy4bqhbmcgZ2nhuqVjIG5n4bunIGLhu4sg4bqjbmggaMaw4bufbmcgdsOgIHZp4buHYyB0acOqdSB0aOG7pSBjYWZmZWluZSB2w6BvIGJ14buVaSBjaGnhu4F1IGPDsyBt4buRaSBsacOqbiBo4buHIHbhu5tpIG5oYXUuDQoNCmBgYHtyfQ0KbXRodDMgPC0gdGFibGUoZHQkc2xlZXBfaW1wYWN0ZWQsIGR0JHRpbWVfb2ZfZGF5X2FmdGVybm9vbikNCmNoaXNxLnRlc3QobXRodDMpDQpgYGANCg0KXyoqTmjhuq1uIHjDqXQ6KipfICANCg0KS+G6v3QgcXXhuqMga2nhu4NtIMSR4buLbmggY2hvIHRo4bqleSAqKnAtdmFsdWUgPSAwLjA1ODE4ID4gMC4wNSoqLCBkbyDEkcOzIHRhICoqa2jDtG5nIMSR4bunIGLhurFuZyBjaOG7qW5nIMSR4buDIGLDoWMgYuG7jyBnaeG6oyB0aHV54bq/dCBcKEhfMFwpKiog4bufIG3hu6ljIMO9IG5naMSpYSA1JS4NCg0KxJBp4buBdSBuw6B5IGNobyB0aOG6pXkgKipraMO0bmcgY8OzIG3hu5FpIGxpw6puIGjhu4cgdGjhu5FuZyBrw6ogY8OzIMO9IG5naMSpYSoqIGdp4buvYSAqKnZp4buHYyB0acOqdSB0aOG7pSBjYWZmZWluZSB2w6BvIGJ14buVaSBjaGnhu4F1KiogdsOgICoqdMOsbmggdHLhuqFuZyBnaeG6pWMgbmfhu6cgYuG7iyDhuqNuaCBoxrDhu59uZyoqLiBOw7NpIGPDoWNoIGtow6FjLCBk4buvIGxp4buHdSBraOG6o28gc8OhdCBoaeG7h24gdOG6oWkgY2jGsGEgY2jhu4kgcmEgxJHGsOG7o2MgcuG6sW5nIHRpw6p1IHRo4bulIGNhZmZlaW5lIHbDoG8gYnXhu5VpIGNoaeG7gXUgY8OzIOG6o25oIGjGsOG7n25nIHLDtSBy4buHdCDEkeG6v24gY2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7pyBj4bunYSBuZ8aw4budaSB0aGFtIGdpYS4NCg0KIyMjICoqNC4yLjYuIEJp4bq/biBzbGVlcF9pbXBhY3RlZCB2w6AgdGltZV9vZl9kYXlfZXZlbmluZyoqDQoNCioqR2nhuqMgdGh1eeG6v3Qga2nhu4NtIMSR4buLbmg6KioNCg0KLSAqKkjigoAqKjogVMOsbmggdHLhuqFuZyBnaeG6pWMgbmfhu6cgYuG7iyDhuqNuaCBoxrDhu59uZyB2w6Agdmnhu4djIHRpw6p1IHRo4bulIGNhZmZlaW5lIHbDoG8gYnXhu5VpIHThu5FpIGzDoCBoYWkgYmnhur9uIMSR4buZYyBs4bqtcC4NCg0KLSAqKkjigoEqKjogVMOsbmggdHLhuqFuZyBnaeG6pWMgbmfhu6cgYuG7iyDhuqNuaCBoxrDhu59uZyB2w6Agdmnhu4djIHRpw6p1IHRo4bulIGNhZmZlaW5lIHbDoG8gYnXhu5VpIHThu5FpIGPDsyBt4buRaSBsacOqbiBo4buHIHbhu5tpIG5oYXUuDQoNCmBgYHtyfQ0KbXRodDQgPC0gdGFibGUoZHQkc2xlZXBfaW1wYWN0ZWQsIGR0JHRpbWVfb2ZfZGF5X2V2ZW5pbmcpDQpjaGlzcS50ZXN0KG10aHQ0KQ0KYGBgDQoNCl8qKk5o4bqtbiB4w6l0OioqXyAgDQoNCkvhur90IHF14bqjIGtp4buDbSDEkeG7i25oIGNobyB0aOG6pXkgKipwLXZhbHVlIDwgMi4yIMOXIDEw4oG7wrnigbYgPCAwLjA1KiosIGRvIMSRw7MgdGEgKipiw6FjIGLhu48gZ2nhuqMgdGh1eeG6v3QgXChIXzBcKSoqLiDEkGnhu4F1IG7DoHkgY2hvIHRo4bqleSAqKnTDrG5oIHRy4bqhbmcgZ2nhuqVjIG5n4bunIGLhu4sg4bqjbmggaMaw4bufbmcgdsOgIHZp4buHYyB0acOqdSB0aOG7pSBjYWZmZWluZSB2w6BvIGJ14buVaSB04buRaSBjw7MgbeG7kWkgbGnDqm4gaOG7hyB24bubaSBuaGF1KiouIE7Ds2kgY8OhY2gga2jDoWMsICoqdmnhu4djIHXhu5FuZyBjYWZmZWluZSB2w6BvIGJ14buVaSB04buRaSBjw7Mga2jhuqMgbsSDbmcgbMOgbSBzdXkgZ2nhuqNtIGNo4bqldCBsxrDhu6NuZyBnaeG6pWMgbmfhu6cqKiBj4bunYSBuZ8aw4budaSB0aGFtIGdpYSBraOG6o28gc8OhdC4NCg0KIyMjICoqNC4yLjcuIEJp4bq/biBzbGVlcF9pbXBhY3RlZCB2w6AgdGltZV9vZl9kYXlfbW9ybmluZyoqDQoNCioqR2nhuqMgdGh1eeG6v3Qga2nhu4NtIMSR4buLbmg6KioNCg0KLSAqKkjigoAqKjogVMOsbmggdHLhuqFuZyBnaeG6pWMgbmfhu6cgYuG7iyDhuqNuaCBoxrDhu59uZyB2w6Agdmnhu4djIHRpw6p1IHRo4bulIGNhZmZlaW5lIHbDoG8gYnXhu5VpIHPDoW5nIGzDoCBoYWkgYmnhur9uIMSR4buZYyBs4bqtcC4NCg0KLSAqKkjigoEqKjogVMOsbmggdHLhuqFuZyBnaeG6pWMgbmfhu6cgYuG7iyDhuqNuaCBoxrDhu59uZyB2w6Agdmnhu4djIHRpw6p1IHRo4bulIGNhZmZlaW5lIHbDoG8gYnXhu5VpIHPDoW5nIGPDsyBt4buRaSBsacOqbiBo4buHIHbhu5tpIG5oYXUuDQoNCmBgYHtyfQ0KbXRodDUgPC0gdGFibGUoZHQkc2xlZXBfaW1wYWN0ZWQsIGR0JHRpbWVfb2ZfZGF5X21vcm5pbmcpDQpjaGlzcS50ZXN0KG10aHQ1KQ0KYGBgDQoNCl8qKk5o4bqtbiB4w6l0OioqXyAgDQoNCkvhur90IHF14bqjIGtp4buDbSDEkeG7i25oIGNobyB0aOG6pXkgKipwLXZhbHVlID0gMC45MjY3ID4gMC4wNSoqLCBkbyDEkcOzIHRhICoqa2jDtG5nIGLDoWMgYuG7jyBnaeG6oyB0aHV54bq/dCBcKEhfMFwpKiouIMSQaeG7gXUgbsOgeSBjw7MgbmdoxKlhIGzDoCAqKmNoxrBhIGPDsyBi4bqxbmcgY2jhu6luZyB0aOG7kW5nIGvDqiDEkeG7pyBt4bqhbmggxJHhu4Mga2jhurNuZyDEkeG7i25oIG3hu5FpIGxpw6puIGjhu4cgZ2nhu69hIHZp4buHYyB0acOqdSB0aOG7pSBjYWZmZWluZSB2w6BvIGJ14buVaSBzw6FuZyB2w6AgdMOsbmggdHLhuqFuZyBnaeG6pWMgbmfhu6cgYuG7iyDhuqNuaCBoxrDhu59uZyoqLiBOw7NpIGPDoWNoIGtow6FjLCAqKnZp4buHYyB14buRbmcgY2FmZmVpbmUgdsOgbyBideG7lWkgc8OhbmcgZMaw4budbmcgbmjGsCBraMO0bmcg4bqjbmggaMaw4bufbmcgxJHDoW5nIGvhu4MgxJHhur9uIGNo4bqldCBsxrDhu6NuZyBnaeG6pWMgbmfhu6cqKiBj4bunYSBuZ8aw4budaSB0aGFtIGdpYSBraOG6o28gc8OhdC4NCg0KIyMjICoqNC4yLjguIEJp4bq/biBzbGVlcF9pbXBhY3RlZCB2w6AgZ2VuZGVyX2ZlbWFsZSoqDQoNCioqR2nhuqMgdGh1eeG6v3Qga2nhu4NtIMSR4buLbmg6KioNCg0KLSAqKkjigoAqKjogVMOsbmggdHLhuqFuZyBnaeG6pWMgbmfhu6cgYuG7iyDhuqNuaCBoxrDhu59uZyB2w6AgZ2nhu5tpIHTDrW5oIG7hu68gbMOgIGhhaSBiaeG6v24gxJHhu5ljIGzhuq0uDQoNCi0gKipI4oKBKio6IFTDrG5oIHRy4bqhbmcgZ2nhuqVjIG5n4bunIGLhu4sg4bqjbmggaMaw4bufbmcgdsOgIGdp4bubaSB0w61uaCBu4buvIGPDsyBt4buRaSBsacOqbiBo4buHIHbhu5tpIG5oYXUuDQoNCmBgYHtyfQ0KbXRodDYgPC0gdGFibGUoZHQkc2xlZXBfaW1wYWN0ZWQsIGR0JGdlbmRlcl9mZW1hbGUpDQpjaGlzcS50ZXN0KG10aHQ2KQ0KYGBgDQoNCl8qKk5o4bqtbiB4w6l0OioqXyAgDQoNCkvhur90IHF14bqjIGtp4buDbSDEkeG7i25oIGNobyB0aOG6pXkgKipwLXZhbHVlID0gMSA+IDAuMDUqKiwgZG8gxJHDsyB0YSAqKmtow7RuZyBiw6FjIGLhu48gZ2nhuqMgdGh1eeG6v3QgXChIXzBcKSoqLiDEkGnhu4F1IG7DoHkgY8OzIG5naMSpYSBsw6AgKipraMO0bmcgY8OzIGLhurFuZyBjaOG7qW5nIHRo4buRbmcga8OqIG7DoG8gY2hvIHRo4bqleSBt4buRaSBsacOqbiBo4buHIGdp4buvYSBnaeG7m2kgdMOtbmggbuG7ryB2w6Agdmnhu4djIGdp4bqlYyBuZ+G7pyBi4buLIOG6o25oIGjGsOG7n25nIGLhu59pIGNhZmZlaW5lKiouIE7Ds2kgY8OhY2gga2jDoWMsICoqZ2nhu5tpIHTDrW5oIG7hu68ga2jDtG5nIHBo4bqjaSBsw6AgeeG6v3UgdOG7kSBjw7Mg4bqjbmggaMaw4bufbmcgcsO1IHLhu4d0IMSR4bq/biBjaOG6pXQgbMaw4bujbmcgZ2nhuqVjIG5n4bunIHRyb25nIGLhu5FpIGPhuqNuaCB0acOqdSB0aOG7pSBjYWZmZWluZSoqIHRoZW8gZOG7ryBsaeG7h3Uga2jhuqNvIHPDoXQgaGnhu4duIGPDsy4NCg0KIyMjICoqNC4yLjkuIEJp4bq/biBzbGVlcF9pbXBhY3RlZCB2w6AgZ2VuZGVyX21hbGUqKg0KDQoqKkdp4bqjIHRodXnhur90IGtp4buDbSDEkeG7i25oOioqDQoNCi0gKipI4oKAKio6IFTDrG5oIHRy4bqhbmcgZ2nhuqVjIG5n4bunIGLhu4sg4bqjbmggaMaw4bufbmcgdsOgIGdp4bubaSB0w61uaCBuYW0gbMOgIGhhaSBiaeG6v24gxJHhu5ljIGzhuq1wLg0KDQotICoqSOKCgSoqOiBUw6xuaCB0cuG6oW5nIGdp4bqlYyBuZ+G7pyBi4buLIOG6o25oIGjGsOG7n25nIHbDoCBnaeG7m2kgdMOtbmggbmFtIGPDsyBt4buRaSBsacOqbiBo4buHIHbhu5tpIG5oYXUuDQoNCmBgYHtyfQ0KbXRodDcgPC0gdGFibGUoZHQkc2xlZXBfaW1wYWN0ZWQsIGR0JGdlbmRlcl9tYWxlKQ0KY2hpc3EudGVzdChtdGh0NykNCmBgYA0KDQpfKipOaOG6rW4geMOpdDoqKl8gIA0KDQpL4bq/dCBxdeG6oyBraeG7g20gxJHhu4tuaCBjaG8gdGjhuqV5ICoqcC12YWx1ZSA9IDEgPiAwLjA1KiosIGRvIMSRw7MgdGEgKipraMO0bmcgYsOhYyBi4buPIGdp4bqjIHRodXnhur90IFwoSF8wXCkqKi4gxJBp4buBdSBuw6B5IGNobyB0aOG6pXkgKipraMO0bmcgY8OzIG3hu5FpIGxpw6puIGjhu4cgdGjhu5FuZyBrw6ogY8OzIMO9IG5naMSpYSBnaeG7r2EgZ2nhu5tpIHTDrW5oIG5hbSB2w6Agdmnhu4djIGdp4bqlYyBuZ+G7pyBi4buLIOG6o25oIGjGsOG7n25nIGLhu59pIGNhZmZlaW5lKiouIE7Ds2kgY8OhY2gga2jDoWMsICoqbmFtIGdp4bubaSBraMO0bmcgY8OzIGto4bqjIG7Eg25nIGLhu4sg4bqjbmggaMaw4bufbmcgxJHhur9uIGdp4bqlYyBuZ+G7pyBraMOhYyBiaeG7h3QgcsO1IHLhu4d0IHNvIHbhu5tpIGPDoWMgbmjDs20gY8OybiBs4bqhaSoqIHRyb25nIGto4bqjbyBzw6F0IG7DoHkuDQoNCl8qKkvhur90IGx14bqtbjoqKl8NCg0KLSBRdWEgY8OhYyBraeG7g20gxJHhu4tuaCBDaGkgYsOsbmggcGjGsMahbmcsIGNo4buJIGPDsyBjw6FjIGJp4bq/biBuaMawICoqbG/huqFpIMSR4buTIHXhu5FuZyBjYWZmZWluZSoqIChjw6AgcGjDqiwgdHLDoCwgbsaw4bubYyB0xINuZyBs4buxYykgdsOgICoqdGjhu51pIMSRaeG7g20gdGnDqnUgdGjhu6UgdHJvbmcgbmfDoHkqKiAoxJHhurdjIGJp4buHdCBsw6AgYnXhu5VpIHThu5FpKSBjaG8gdGjhuqV5IGPDsyBt4buRaSBsacOqbiBo4buHIHLDtSByw6BuZyB24bubaSBiaeG6v24gKipgc2xlZXBfaW1wYWN0ZWRgKiogKGdp4bqlYyBuZ+G7pyBi4buLIOG6o25oIGjGsOG7n25nKS4gDQoNCi0gTmfGsOG7o2MgbOG6oWksIGPDoWMgYmnhur9uIGxpw6puIHF1YW4gxJHhur9uICoqZ2nhu5tpIHTDrW5oKiogaG/hurdjICoqdmnhu4djIHRpw6p1IHRo4bulIHbDoG8gYnXhu5VpIHPDoW5nKioga2jDtG5nIGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ogdHJvbmcgYuG7mSBk4buvIGxp4buHdSBuw6B5Lg0KDQotIFRp4bq/cCB0aGVvLCB0w6FjIGdp4bqjIHPhur0gdGnhur9uIGjDoG5oIG3DtCB04bqjIGNoaSB0aeG6v3QgY8OhYyBiaeG6v24gY8OzIOG6o25oIGjGsOG7n25nLCB04burIMSRw7MgxJHGsGEgcmEgY8OhaSBuaMOsbiBraMOhaSBxdcOhdCBoxqFuIHbhu4EgbeG7qWMgxJHhu5kgdMOhYyDEkeG7mW5nIGPhu6dhIHThu6tuZyB54bq/dSB04buRIMSR4bq/biBjaOG6pXQgbMaw4bujbmcgZ2nhuqVjIG5n4bunIGtoaSB0acOqdSB0aOG7pSBjYWZmZWluZS4NCg0KIyMgKio0LjMuIFRo4buRbmcga8OqIG3DtCB04bqjIDIgYmnhur9uKioNCg0KIyMjICoqNC4zLjEuIEJp4bq/biBCaeG6v24gc2xlZXBfaW1wYWN0ZWQgdsOgIGJldmVyYWdlX2NvZmZlZSoqDQoNCl8qKkzhuq1wIGLhuqNuZyB04bqnbiBz4buRIHbDoCBi4bqjbmcgdOG6p24gc3XhuqV0KipfDQoNCmBgYHtyfQ0KIyBHw6FuIG5ow6NuIHLDtSByw6BuZyBjaG8gY8OhYyBiaeG6v24NCmR0JHNsZWVwX2ltcGFjdGVkIDwtIGZhY3RvcihkdCRzbGVlcF9pbXBhY3RlZCwNCiAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKDAsIDEpLA0KICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoIktow7RuZyBi4buLIOG6o25oIGjGsOG7n25nIiwgIkLhu4sg4bqjbmggaMaw4bufbmciKSkNCg0KZHQkYmV2ZXJhZ2VfY29mZmVlIDwtIGZhY3RvcihkdCRiZXZlcmFnZV9jb2ZmZWUsDQogICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoRkFMU0UsIFRSVUUpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJLaMO0bmcgdeG7kW5nIGPDoCBwaMOqIiwgIkPDsyB14buRbmcgY8OgIHBow6oiKSkNCg0KdGttdDwtIHRhYmxlKGR0JHNsZWVwX2ltcGFjdGVkLCBkdCRiZXZlcmFnZV9jb2ZmZWUpDQphZGRtYXJnaW5zKHRrbXQpDQpwdGttdCA8LSBwcm9wLnRhYmxlKHRrbXQpDQphZGRtYXJnaW5zKHB0a210KQ0KYGBgDQoNCl8qKkzhuq1wIGJp4buDdSDEkeG7kyoqXw0KDQpgYGB7cn0NCiMgQ2h1eeG7g24gYuG6o25nIHThuqduIHPhu5EgdGjDoG5oIGRhdGEgZnJhbWUNCmRmX3Bsb3QgPC0gYXMuZGF0YS5mcmFtZSh0a210KQ0KY29sbmFtZXMoZGZfcGxvdCkgPC0gYygiU2xlZXBfSW1wYWN0ZWQiLCAiQmV2ZXJhZ2VfQ29mZmVlIiwgIkNvdW50IikNCg0KIyBW4bq9IGJp4buDdSDEkeG7kyB04bqnbiBz4buRDQpsaWJyYXJ5KGdncGxvdDIpDQpnZ3Bsb3QoZGZfcGxvdCwgYWVzKHggPSBCZXZlcmFnZV9Db2ZmZWUsIHkgPSBDb3VudCwgZmlsbCA9IFNsZWVwX0ltcGFjdGVkKSkgKw0KICBnZW9tX2JhcihzdGF0ID0gImlkZW50aXR5IiwgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSh3aWR0aCA9IDAuNyksIHdpZHRoID0gMC42KSArDQogIGdlb21fdGV4dChhZXMobGFiZWwgPSBDb3VudCksDQogICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC43KSwNCiAgICAgICAgICAgIHZqdXN0ID0gLTAuMywgc2l6ZSA9IDMuNSkgKw0KICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCIjNkJBRUQ2IiwgIiMyMTcxQjUiKSkgKw0KICBsYWJzKA0KICAgIHRpdGxlID0gIkJp4buDdSDEkeG7kyA0LjIuIFTDoWMgxJHhu5luZyBj4bunYSBjw6AgcGjDqiDEkeG6v24gZ2nhuqVjIG5n4bunIiwNCiAgICB4ID0gIlTDrG5oIHRy4bqhbmcgdGnDqnUgdGjhu6UgY8OgIHBow6oiLA0KICAgIHkgPSAiU+G7kSBuZ8aw4budaSIsDQogICAgZmlsbCA9ICJUw6xuaCB0cuG6oW5nIGdp4bqlYyBuZ+G7pyINCiAgKSArDQogIHRoZW1lX21pbmltYWwoKQ0KYGBgDQoNCl8qKk5o4bqtbiB4w6l0OioqXyANCg0KQuG6o25nIHbDoCBiaeG7g3UgxJHhu5MgdHLDqm4gY2hvIHRo4bqleSB0cm9uZyBuaMOzbSAqKmtow7RuZyB14buRbmcgY8OgIHBow6oqKiwgY8OzICoqMTczIG5nxrDhu51pIGtow7RuZyBi4buLIOG6o25oIGjGsOG7n25nIMSR4bq/biBnaeG6pWMgbmfhu6cqKiAoY2hp4bq/bSBraG/huqNuZyAqKjM0LjYlKiopIHbDoCAqKjYyIG5nxrDhu51pIGLhu4sg4bqjbmggaMaw4bufbmcqKiAoY2hp4bq/bSAqKjEyLjQlKiopLiBUcm9uZyBraGkgxJHDsywg4bufIG5ow7NtICoqY8OzIHXhu5FuZyBjw6AgcGjDqioqLCBjw7MgKioxMjQgbmfGsOG7nWkga2jDtG5nIGLhu4sg4bqjbmggaMaw4bufbmcqKiAoY2hp4bq/bSAqKjI0LjglKiopIHbDoCAqKjE0MSBuZ8aw4budaSBi4buLIOG6o25oIGjGsOG7n25nKiogKGNoaeG6v20gKioyOC4yJSoqKS4NCg0KVOG7lW5nIHF1YW4sIHRhIHRo4bqleSBy4bqxbmcgKip04bu3IGzhu4cgbmfGsOG7nWkgYuG7iyDhuqNuaCBoxrDhu59uZyDEkeG6v24gZ2nhuqVjIG5n4bunIGNhbyBoxqFuIHLDtSBy4buHdCB0cm9uZyBuaMOzbSBjw7MgdeG7kW5nIGPDoCBwaMOqKiogc28gduG7m2kgbmjDs20ga2jDtG5nIHXhu5FuZy4gxJBp4buBdSBuw6B5IGPhu6duZyBj4buRIHRow6ptIGvhur90IGx14bqtbiB04burIGtp4buDbSDEkeG7i25oIHRo4buRbmcga8OqLCBjaG8gdGjhuqV5ICoqdmnhu4djIHRpw6p1IHRo4bulIGPDoCBwaMOqIGPDsyB0aOG7gyBsw6AgeeG6v3UgdOG7kSBsw6BtIHN1eSBnaeG6o20gY2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7pyoqIOG7nyBt4buZdCBi4buZIHBo4bqtbiBuZ8aw4budaSB0aGFtIGdpYSBraOG6o28gc8OhdC4NCg0KIyMjICoqNC4zLjIuIEJp4bq/biBCaeG6v24gc2xlZXBfaW1wYWN0ZWQgdsOgIGJldmVyYWdlX2VuZXJneV9kcmluayoqDQoNCl8qKkzhuq1wIGLhuqNuZyB04bqnbiBz4buRIHbDoCBi4bqjbmcgdOG6p24gc3XhuqV0KipfDQoNCmBgYHtyfQ0KZHQkYmV2ZXJhZ2VfZW5lcmd5X2RyaW5rIDwtIGZhY3RvcihkdCRiZXZlcmFnZV9lbmVyZ3lfZHJpbmssDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoRkFMU0UsIFRSVUUpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJLaMO0bmcgdeG7kW5nIGVuZXJneSBkcmluayIsICJDw7MgdeG7kW5nIGVuZXJneSBkcmluayIpKQ0KdGttdDEgPC0gdGFibGUoZHQkc2xlZXBfaW1wYWN0ZWQsIGR0JGJldmVyYWdlX2VuZXJneV9kcmluaykNCmFkZG1hcmdpbnModGttdDEpDQpwdGttdDEgPC0gcHJvcC50YWJsZSh0a210MSkNCmFkZG1hcmdpbnMocHRrbXQxKQ0KYGBgDQoNCl8qKkzhuq1wIGJp4buDdSDEkeG7kyoqXw0KDQpgYGB7cn0NCiMgQ2h1eeG7g24gYuG6o25nIHThuqduIHPhu5EgdGjDoG5oIGRhdGEgZnJhbWUNCmRmX3Bsb3QxIDwtIGFzLmRhdGEuZnJhbWUodGttdDEpDQpjb2xuYW1lcyhkZl9wbG90MSkgPC0gYygiU2xlZXBfSW1wYWN0ZWQiLCAiQmV2ZXJhZ2VfRW5lcmd5IiwgIkNvdW50IikNCg0KIyBW4bq9IGJp4buDdSDEkeG7kw0KbGlicmFyeShnZ3Bsb3QyKQ0KZ2dwbG90KGRmX3Bsb3QxLCBhZXMoeCA9IEJldmVyYWdlX0VuZXJneSwgeSA9IENvdW50LCBmaWxsID0gU2xlZXBfSW1wYWN0ZWQpKSArDQogIGdlb21fYmFyKHN0YXQgPSAiaWRlbnRpdHkiLCBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC43KSwgd2lkdGggPSAwLjYpICsNCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IENvdW50KSwNCiAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjcpLA0KICAgICAgICAgICAgdmp1c3QgPSAtMC4zLCBzaXplID0gMy41KSArDQogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoIiM2QkFFRDYiLCAiIzIxNzFCNSIpKSArDQogIGxhYnMoDQogICAgdGl0bGUgPSAiQmnhu4N1IMSR4buTIDQuMy4gVMOhYyDEkeG7mW5nIGPhu6dhIGVuZXJneSBkcmluayDEkeG6v24gZ2nhuqVjIG5n4bunIiwNCiAgICB4ID0gIlTDrG5oIHRy4bqhbmcgdGnDqnUgdGjhu6UgZW5lcmd5IGRyaW5rIiwNCiAgICB5ID0gIlPhu5EgbmfGsOG7nWkiLA0KICAgIGZpbGwgPSAiVMOsbmggdHLhuqFuZyBnaeG6pWMgbmfhu6ciDQogICkgKw0KICB0aGVtZV9taW5pbWFsKCkNCmBgYA0KDQpfKipOaOG6rW4geMOpdDoqKl8gDQoNCkLhuqNuZyB2w6AgYmnhu4N1IMSR4buTIHRyw6puIGNobyB0aOG6pXkgdHJvbmcgbmjDs20gKipraMO0bmcgdeG7kW5nIG7GsOG7m2MgdMSDbmcgbOG7sWMqKiwgY8OzICoqMjgwIG5nxrDhu51pIGtow7RuZyBi4buLIOG6o25oIGjGsOG7n25nIMSR4bq/biBnaeG6pWMgbmfhu6cqKiAoY2hp4bq/bSBraG/huqNuZyAqKjU2LjAlKiopIHbDoCAqKjE3MyBuZ8aw4budaSBi4buLIOG6o25oIGjGsOG7n25nKiogKGNoaeG6v20gKiozNC42JSoqKS4gVHJvbmcga2hpIMSRw7MsIOG7nyBuaMOzbSAqKmPDsyB14buRbmcgbsaw4bubYyB0xINuZyBs4buxYyoqLCBjaOG7iSBjw7MgKioxNyBuZ8aw4budaSBraMO0bmcgYuG7iyDhuqNuaCBoxrDhu59uZyoqIChjaGnhur9tICoqMy40JSoqKSwgdHJvbmcga2hpIGPDsyAqKjMwIG5nxrDhu51pIGLhu4sg4bqjbmggaMaw4bufbmcqKiAoY2hp4bq/bSAqKjYuMCUqKikuDQoNClThu5VuZyBxdWFuLCB0YSB0aOG6pXkgcuG6sW5nICoqdOG7tyBs4buHIG5nxrDhu51pIGLhu4sg4bqjbmggaMaw4bufbmcgxJHhur9uIGdp4bqlYyBuZ+G7pyBjYW8gaMahbiByw7UgcuG7h3QgdHJvbmcgbmjDs20gY8OzIHXhu5FuZyBuxrDhu5tjIHTEg25nIGzhu7FjKiosIHRyb25nIGtoaSBwaOG6p24gbOG7m24gbmjhu69uZyBuZ8aw4budaSBraMO0bmcgYuG7iyDhuqNuaCBoxrDhu59uZyBs4bqhaSB0aHXhu5ljIG5ow7NtIGtow7RuZyB14buRbmcuIA0KDQojIyMgKio0LjMuMy4gQmnhur9uIEJp4bq/biBzbGVlcF9pbXBhY3RlZCB2w6AgYmV2ZXJhZ2VfdGVhKioNCg0KXyoqTOG6rXAgYuG6o25nIHThuqduIHPhu5EgdsOgIGLhuqNuZyB04bqnbiBzdeG6pXQqKl8NCg0KYGBge3J9DQpkdCRiZXZlcmFnZV90ZWEgPC0gZmFjdG9yKGR0JGJldmVyYWdlX3RlYSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYyhGQUxTRSwgVFJVRSksDQogICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoIktow7RuZyB14buRbmcgdHLDoCIsICJDw7MgdeG7kW5nIHRyw6AiKSkNCiMgTOG6rXAgYuG6o25nIHThuqduIHPhu5EgY2jDqW8NCnRrbXQyIDwtIHRhYmxlKGR0JHNsZWVwX2ltcGFjdGVkLCBkdCRiZXZlcmFnZV90ZWEpDQphZGRtYXJnaW5zKHRrbXQyKQ0KcHRrbXQyIDwtIHByb3AudGFibGUodGttdDIpDQphZGRtYXJnaW5zKHB0a210MikNCmBgYA0KDQpfKipM4bqtcCBiaeG7g3UgxJHhu5MqKl8NCg0KYGBge3J9DQojIENodXnhu4NuIHNhbmcgZOG6oW5nIGRhdGEgZnJhbWUgxJHhu4MgduG6vQ0KZGZfcGxvdDIgPC0gYXMuZGF0YS5mcmFtZSh0a210MikNCmNvbG5hbWVzKGRmX3Bsb3QyKSA8LSBjKCJTbGVlcF9JbXBhY3RlZCIsICJCZXZlcmFnZV9UZWEiLCAiQ291bnQiKQ0KDQojIFbhur0gYmnhu4N1IMSR4buTDQpsaWJyYXJ5KGdncGxvdDIpDQpnZ3Bsb3QoZGZfcGxvdDIsIGFlcyh4ID0gQmV2ZXJhZ2VfVGVhLCB5ID0gQ291bnQsIGZpbGwgPSBTbGVlcF9JbXBhY3RlZCkpICsNCiAgZ2VvbV9iYXIoc3RhdCA9ICJpZGVudGl0eSIsIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjcpLCB3aWR0aCA9IDAuNikgKw0KICBnZW9tX3RleHQoYWVzKGxhYmVsID0gQ291bnQpLA0KICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSh3aWR0aCA9IDAuNyksDQogICAgICAgICAgICB2anVzdCA9IC0wLjMsIHNpemUgPSAzLjUpICsNCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiIzZCQUVENiIsICIjMjE3MUI1IikpICsNCiAgbGFicygNCiAgICB0aXRsZSA9ICJCaeG7g3UgxJHhu5MgNC40LiDhuqJuaCBoxrDhu59uZyBj4bunYSB2aeG7h2MgdeG7kW5nIHRyw6AgxJHhur9uIGdp4bqlYyBuZ+G7pyIsDQogICAgeCA9ICJUw6xuaCB0cuG6oW5nIHRpw6p1IHRo4bulIHRyw6AiLA0KICAgIHkgPSAiU+G7kSBuZ8aw4budaSIsDQogICAgZmlsbCA9ICJUw6xuaCB0cuG6oW5nIGdp4bqlYyBuZ+G7pyINCiAgKSArDQogIHRoZW1lX21pbmltYWwoKQ0KYGBgDQoNCl8qKk5o4bqtbiB4w6l0OioqXyANCg0KQuG6o25nIHbDoCBiaeG7g3UgxJHhu5MgdHLDqm4gY2hvIHRo4bqleSB0cm9uZyBuaMOzbSAqKmtow7RuZyB14buRbmcgdHLDoCoqLCBjw7MgKioxNDEgbmfGsOG7nWkga2jDtG5nIGLhu4sg4bqjbmggaMaw4bufbmcgxJHhur9uIGdp4bqlYyBuZ+G7pyoqIChjaGnhur9tIGtob+G6o25nICoqMjguMiUqKikgdsOgICoqMTcxIG5nxrDhu51pIGLhu4sg4bqjbmggaMaw4bufbmcqKiAoY2hp4bq/bSAqKjM0LjIlKiopLiBUcm9uZyBraGkgxJHDsywg4bufIG5ow7NtICoqY8OzIHXhu5FuZyB0csOgKiosIGPDsyAqKjE1NiBuZ8aw4budaSBraMO0bmcgYuG7iyDhuqNuaCBoxrDhu59uZyoqIChjaGnhur9tICoqMzEuMiUqKikgdsOgIGNo4buJIGPDsyAqKjMyIG5nxrDhu51pIGLhu4sg4bqjbmggaMaw4bufbmcqKiAoY2hp4bq/bSAqKjYuNCUqKikuDQoNClThu5VuZyBxdWFuLCB0YSBuaOG6rW4gdGjhuqV5IHLhurFuZyAqKnThu7cgbOG7hyBuZ8aw4budaSBi4buLIOG6o25oIGjGsOG7n25nIMSR4bq/biBnaeG6pWMgbmfhu6cgdGjhuqVwIGjGoW4gcsO1IHLhu4d0IHRyb25nIG5ow7NtIGPDsyB14buRbmcgdHLDoCoqLCB0cm9uZyBraGkgcGjhuqduIGzhu5tuIG5o4buvbmcgbmfGsOG7nWkgYuG7iyDhuqNuaCBoxrDhu59uZyBs4bqhaSB0aHXhu5ljIG5ow7NtIGtow7RuZyB14buRbmcuIMSQaeG7gXUgbsOgeSBjaG8gdGjhuqV5ICoqdmnhu4djIHXhu5FuZyB0csOgIGPDsyB0aOG7gyBraMO0bmcgcGjhuqNpIGzDoCBuZ3V5w6puIG5ow6JuIGNow61uaCBnw6J5IHLhu5FpIGxv4bqhbiBnaeG6pWMgbmfhu6cqKiwgaG/hurdjIHRo4bqtbSBjaMOtIGPDsyB0aOG7gyBsacOqbiBxdWFuIMSR4bq/biAqKm3hu5l0IGzhu5FpIHPhu5FuZyBnacO6cCBj4bqjaSB0aGnhu4duIGdp4bqlYyBuZ+G7pyoqIOG7nyBt4buZdCBz4buRIG5nxrDhu51pLg0KDQojIyMgKio0LjMuNC4gQmnhur9uIHNsZWVwX2ltcGFjdGVkIHbDoCB0aW1lX29mX2RheV9ldmVuaW5nKioNCg0KXyoqTOG6rXAgYuG6o25nIHThuqduIHPhu5EgdsOgIGLhuqNuZyB04bqnbiBzdeG6pXQqKl8NCg0KYGBge3J9DQpkdCR0aW1lX29mX2RheV9ldmVuaW5nIDwtIGZhY3RvcihkdCR0aW1lX29mX2RheV9ldmVuaW5nLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYyhGQUxTRSwgVFJVRSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJLaMO0bmcgdeG7kW5nIGJ14buVaSB04buRaSIsICJDw7MgdeG7kW5nIGJ14buVaSB04buRaSIpKQ0KdGttdDMgPC0gdGFibGUoZHQkc2xlZXBfaW1wYWN0ZWQsIGR0JHRpbWVfb2ZfZGF5X2V2ZW5pbmcpDQphZGRtYXJnaW5zKHRrbXQzKQ0KDQpwdGttdDMgPC0gcHJvcC50YWJsZSh0a210MykNCmFkZG1hcmdpbnMocHRrbXQzKQ0KYGBgDQoNCl8qKkzhuq1wIGJp4buDdSDEkeG7kyoqXw0KDQpgYGB7cn0NCiMgVOG6oW8gYuG6o25nIGThu68gbGnhu4d1IHThu6sgYuG6o25nIHThuqduIHPhu5ENCmRmX2V2ZW5pbmcgPC0gYXMuZGF0YS5mcmFtZSh0YWJsZShkdCRzbGVlcF9pbXBhY3RlZCwgZHQkdGltZV9vZl9kYXlfZXZlbmluZykpDQoNCiMgxJDhurd0IHTDqm4gY+G7mXQgY2hvIHLDtSByw6BuZw0KY29sbmFtZXMoZGZfZXZlbmluZykgPC0gYygiU2xlZXBfSW1wYWN0ZWQiLCAiRXZlbmluZ19JbnRha2UiLCAiQ291bnQiKQ0KDQojIFbhur0gYmnhu4N1IMSR4buTIGPhu5l0DQpsaWJyYXJ5KGdncGxvdDIpDQpnZ3Bsb3QoZGZfZXZlbmluZywgYWVzKHggPSBFdmVuaW5nX0ludGFrZSwgeSA9IENvdW50LCBmaWxsID0gU2xlZXBfSW1wYWN0ZWQpKSArDQogIGdlb21fYmFyKHN0YXQgPSAiaWRlbnRpdHkiLCBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC43KSwgd2lkdGggPSAwLjYpICsNCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IENvdW50KSwNCiAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjcpLA0KICAgICAgICAgICAgdmp1c3QgPSAtMC4zLCBzaXplID0gMy41KSArDQogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoIiM2QkFFRDYiLCAiIzIxNzFCNSIpKSArDQogIGxhYnMoDQogICAgdGl0bGUgPSAiQmnhu4N1IMSR4buTIDQuNS4g4bqibmggaMaw4bufbmcgZ2nhuqVjIG5n4bunIHRoZW8gdmnhu4djIHXhu5FuZyBjYWZmZWluZSBideG7lWkgdOG7kWkiLA0KICAgIHggPSAiVHLhuqFuZyB0aMOhaSB0acOqdSB0aOG7pSBjYWZmZWluZSBideG7lWkgdOG7kWkiLA0KICAgIHkgPSAiU+G7kSBuZ8aw4budaSIsDQogICAgZmlsbCA9ICJUw6xuaCB0cuG6oW5nIGdp4bqlYyBuZ+G7pyINCiAgKSArDQogIHRoZW1lX21pbmltYWwoKQ0KYGBgDQoNCl8qKk5o4bqtbiB4w6l0OioqXyANCg0KQuG6o25nIHbDoCBiaeG7g3UgxJHhu5MgdHLDqm4gY2hvIHRo4bqleSB0cm9uZyBuaMOzbSAqKmPDsyB14buRbmcgY2FmZmVpbmUgdsOgbyBideG7lWkgdOG7kWkqKiwgY8OzICoqMTY3IG5nxrDhu51pIGLhu4sg4bqjbmggaMaw4bufbmcgxJHhur9uIGdp4bqlYyBuZ+G7pyoqIChjaGnhur9tIGtob+G6o25nICoqMzMuNCUqKikgdsOgIGNo4buJIGPDsyAqKjY5IG5nxrDhu51pIGtow7RuZyBi4buLIOG6o25oIGjGsOG7n25nKiogKGNoaeG6v20gKioxMy44JSoqKS4gVHJvbmcga2hpIMSRw7MsIOG7nyBuaMOzbSAqKmtow7RuZyB14buRbmcgYnXhu5VpIHThu5FpKiosIGPDsyAqKjIyOCBuZ8aw4budaSBraMO0bmcgYuG7iyDhuqNuaCBoxrDhu59uZyoqIChjaGnhur9tICoqNDUuNiUqKikgdsOgIGNo4buJIGPDsyAqKjM2IG5nxrDhu51pIGLhu4sg4bqjbmggaMaw4bufbmcqKiAoY2hp4bq/bSAqKjcuMiUqKikuDQoNClThu5VuZyB0aOG7gywgY8OzIHRo4buDIHRo4bqleSBy4bqxbmcgKip04bu3IGzhu4cgbmfGsOG7nWkgYuG7iyDhuqNuaCBoxrDhu59uZyBnaeG6pWMgbmfhu6cgY2FvIGjGoW4gxJHDoW5nIGvhu4MgdHJvbmcgbmjDs20gY8OzIHXhu5FuZyBjYWZmZWluZSB2w6BvIGJ14buVaSB04buRaSoqLCB0cm9uZyBraGkgdOG7tyBs4buHIGtow7RuZyBi4buLIOG6o25oIGjGsOG7n25nIGzhuqFpIHThuq1wIHRydW5nIOG7nyBuaMOzbSBraMO0bmcgdeG7kW5nLiDEkGnhu4F1IG7DoHkgY2hvIHRo4bqleSBy4bqxbmcgKip2aeG7h2MgdGnDqnUgdGjhu6UgY2FmZmVpbmUgdsOgbyBideG7lWkgdOG7kWkgY8OzIHRo4buDIGzDoCB54bq/dSB04buRIGzDoG0gdMSDbmcgbmd1eSBjxqEgcuG7kWkgbG/huqFuIGdp4bqlYyBuZ+G7pyoqLCB2w6AgbmfGsOG7nWkgc+G7rSBk4bulbmcgbsOqbiBjw6JuIG5o4bqvYyB0aOG7nWkgxJFp4buDbSB14buRbmcgxJHhu4MgxJHhuqNtIGLhuqNvIGNo4bqldCBsxrDhu6NuZyBnaeG6pWMgbmfhu6cuDQoNCiMjICoqNC40LiBLaeG7g20gxJHhu4tuaCBoaeG7h3UgdOG7tyBs4buHKioNCg0KIyMjICoqNC40LjEuIEJp4bq/biBCaeG6v24gc2xlZXBfaW1wYWN0ZWQgdsOgIGJldmVyYWdlX2NvZmZlZSoqDQoNCmBgYHtyfQ0KYWRkbWFyZ2lucyh0a210KQ0KYGBgDQokJA0KcF8xID0gUChcdGV4dHtC4buLIOG6o25oIGjGsOG7n25nIGdp4bqlYyBuZ+G7p30gXG1pZCBcdGV4dHtLaMO0bmcgdeG7kW5nIGPDoCBwaMOqfSkgXHF1YWQgXHRleHR7KFThu7cgbOG7hyBi4buLIOG6o25oIGjGsOG7n25nIOG7nyBuaMOzbSBraMO0bmcgdeG7kW5nIGPDoCBwaMOqKX0NCiQkDQoNCiQkDQpwXzIgPSBQKFx0ZXh0e0Lhu4sg4bqjbmggaMaw4bufbmcgZ2nhuqVjIG5n4bunfSBcbWlkIFx0ZXh0e0PDsyB14buRbmcgY8OgIHBow6p9KSBccXVhZCBcdGV4dHsoVOG7tyBs4buHIGLhu4sg4bqjbmggaMaw4bufbmcg4bufIG5ow7NtIGPDsyB14buRbmcgY8OgIHBow6opfQ0KJCQNCg0KKipHaeG6oyB0aHV54bq/dCBraeG7g20gxJHhu4tuaDoqKg0KDQokJA0KSF8wOiBwXzEgLSBwXzIgPSAwIFxxdWFkIFx0ZXh0eyhU4bu3IGzhu4cgYuG7iyDhuqNuaCBoxrDhu59uZyBnaeG6pWMgbmfhu6cg4bufIGhhaSBuaMOzbSBi4bqxbmcgbmhhdSl9DQokJA0KDQokJA0KSF8xOiBwXzEgLSBwXzIgPCAwIFxxdWFkIFx0ZXh0eyhU4bu3IGzhu4cgYuG7iyDhuqNuaCBoxrDhu59uZyDhu58gbmjDs20ga2jDtG5nIHXhu5FuZyBjw6AgcGjDqiB0aOG6pXAgaMahbiBuaMOzbSBjw7MgdeG7kW5nIGPDoCBwaMOqKX0NCiQkDQoNCmBgYHtyfQ0KIyBT4buRIG5nxrDhu51pIGLhu4sg4bqjbmggaMaw4bufbmcgZ2nhuqVjIG5n4bunIHRyb25nIHThu6tuZyBuaMOzbSB14buRbmcgY8OgIHBow6oNCmNvdW50c19jb2ZmZWUgPC0gYyh0a210WyJC4buLIOG6o25oIGjGsOG7n25nIiwgIktow7RuZyB14buRbmcgY8OgIHBow6oiXSwNCiAgICAgICAgICAgICAgICAgICB0a210WyJC4buLIOG6o25oIGjGsOG7n25nIiwgIkPDsyB14buRbmcgY8OgIHBow6oiXSkNCg0KIyBU4buVbmcgc+G7kSBuZ8aw4budaSB0cm9uZyB04burbmcgbmjDs20gdeG7kW5nIGPDoCBwaMOqDQp0b3RhbHNfY29mZmVlIDwtIGMoc3VtKHRrbXRbLCAiS2jDtG5nIHXhu5FuZyBjw6AgcGjDqiJdKSwNCiAgICAgICAgICAgICAgICAgICBzdW0odGttdFssICJDw7MgdeG7kW5nIGPDoCBwaMOqIl0pKQ0KDQojIEtp4buDbSDEkeG7i25oIHThu4kgbOG7hyBt4buZdCBwaMOtYTogcDEgPCBwMg0KdGVzdF9jb2ZmZWVfbGVzcyA8LSBwcm9wLnRlc3QoY291bnRzX2NvZmZlZSwgdG90YWxzX2NvZmZlZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdGVybmF0aXZlID0gImxlc3MiLCBjb3JyZWN0ID0gRkFMU0UpDQoNCiMgSGnhu4NuIHRo4buLIGvhur90IHF14bqjDQp0ZXN0X2NvZmZlZV9sZXNzDQpgYGANCioqTmjhuq1uIHjDqXQqKg0KDQpW4bubaSBt4bupYyDDvSBuZ2jEqWEgJFxhbHBoYSA9IDVcJSQsIHRhIGLDoWMgYuG7jyBnaeG6oyB0aHV54bq/dCBraMO0bmcgKCRIXzAkKSB2w6wgZ2nDoSB0cuG7iyBwLXZhbHVlIHLhuqV0IG5o4buPICgkXGxsIDAuMDUkKS4gKirEkGnhu4F1IG7DoHkgY2hvIHRo4bqleSBjw7MgYuG6sW5nIGNo4bupbmcgdGjhu5FuZyBrw6ogxJHhu4Mga2jhurNuZyDEkeG7i25oIHLhurFuZyB04bu3IGzhu4cgYuG7iyDhuqNuaCBoxrDhu59uZyBnaeG6pWMgbmfhu6cg4bufIG5ow7NtIGtow7RuZyB14buRbmcgY8OgIHBow6ogdGjhuqVwIGjGoW4gxJHDoW5nIGvhu4Mgc28gduG7m2kgbmjDs20gY8OzIHXhu5FuZyBjw6AgcGjDqi4qKg0KDQojIyMgKio0LjQuMi4gQmnhur9uIEJp4bq/biBzbGVlcF9pbXBhY3RlZCB2w6AgYmV2ZXJhZ2VfZW5lcmd5X2RyaW5rKioNCg0KYGBge3J9DQojIEzhuq1wIGLhuqNuZyB04bqnbiBz4buRIGNow6lvDQp0a210MSA8LSB0YWJsZShkdCRzbGVlcF9pbXBhY3RlZCwgZHQkYmV2ZXJhZ2VfZW5lcmd5X2RyaW5rKQ0KYWRkbWFyZ2lucyh0a210MSkNCmBgYA0KDQokJA0KcF8xID0gUChcdGV4dHtC4buLIOG6o25oIGjGsOG7n25nIGdp4bqlYyBuZ+G7p30gXG1pZCBcdGV4dHtLaMO0bmcgdeG7kW5nIG7GsOG7m2MgdMSDbmcgbOG7sWN9KSBccXVhZCBcdGV4dHsoVOG7tyBs4buHIGLhu4sg4bqjbmggaMaw4bufbmcg4bufIG5ow7NtIGtow7RuZyB14buRbmcpfQ0KJCQNCg0KJCQNCnBfMiA9IFAoXHRleHR7QuG7iyDhuqNuaCBoxrDhu59uZyBnaeG6pWMgbmfhu6d9IFxtaWQgXHRleHR7Q8OzIHXhu5FuZyBuxrDhu5tjIHTEg25nIGzhu7FjfSkgXHF1YWQgXHRleHR7KFThu7cgbOG7hyBi4buLIOG6o25oIGjGsOG7n25nIOG7nyBuaMOzbSBjw7MgdeG7kW5nKX0NCiQkDQoNCioqR2nhuqMgdGh1eeG6v3Qga2nhu4NtIMSR4buLbmg6KioNCiQkDQpIXzA6IHBfMSAtIHBfMiA9IDAgXHF1YWQgXHRleHR7KFThu7cgbOG7hyBi4buLIOG6o25oIGjGsOG7n25nIGdp4bqlYyBuZ+G7pyDhu58gaGFpIG5ow7NtIGLhurFuZyBuaGF1KX0NCiQkDQoNCiQkDQpIXzE6IHBfMSAtIHBfMiA8IDAgXHF1YWQgXHRleHR7KFThu7cgbOG7hyBi4buLIOG6o25oIGjGsOG7n25nIOG7nyBuaMOzbSBraMO0bmcgdeG7kW5nIG7GsOG7m2MgdMSDbmcgbOG7sWMgdGjhuqVwIGjGoW4gbmjDs20gY8OzIHXhu5FuZyl9DQokJA0KDQpgYGB7cn0NCiMgU+G7kSBuZ8aw4budaSBi4buLIOG6o25oIGjGsOG7n25nIGdp4bqlYyBuZ+G7pyB0cm9uZyB04burbmcgbmjDs20NCmNvdW50c19lbmVyZ3kgPC0gYyh0a210MVsiQuG7iyDhuqNuaCBoxrDhu59uZyIsICJLaMO0bmcgdeG7kW5nIGVuZXJneSBkcmluayJdLA0KICAgICAgICAgICAgICAgICAgIHRrbXQxWyJC4buLIOG6o25oIGjGsOG7n25nIiwgIkPDsyB14buRbmcgZW5lcmd5IGRyaW5rIl0pDQoNCiMgVOG7lW5nIHPhu5EgbmfGsOG7nWkgdHJvbmcgdOG7q25nIG5ow7NtDQp0b3RhbHNfZW5lcmd5IDwtIGMoc3VtKHRrbXQxWywgIktow7RuZyB14buRbmcgZW5lcmd5IGRyaW5rIl0pLA0KICAgICAgICAgICAgICAgICAgIHN1bSh0a210MVssICJDw7MgdeG7kW5nIGVuZXJneSBkcmluayJdKSkNCg0KIyBLaeG7g20gxJHhu4tuaCB04buJIGzhu4cgbeG7mXQgcGjDrWE6IHAxIDwgcDINCnRlc3RfZW5lcmd5X2xlc3MgPC0gcHJvcC50ZXN0KGNvdW50c19lbmVyZ3ksIHRvdGFsc19lbmVyZ3ksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHRlcm5hdGl2ZSA9ICJsZXNzIiwgY29ycmVjdCA9IEZBTFNFKQ0KDQojIEhp4buDbiB0aOG7iyBr4bq/dCBxdeG6oyBraeG7g20gxJHhu4tuaA0KdGVzdF9lbmVyZ3lfbGVzcw0KYGBgDQoqKk5o4bqtbiB4w6l0KioNCg0KVuG7m2kgbeG7qWMgw70gbmdoxKlhICRcYWxwaGEgPSA1XCUkIHbDoCBnacOhIHRy4buLIHAtdmFsdWUgPSAwLjAwMDMyODQgKHLhuqV0IG5o4buPIGjGoW4gMC4wNSksIHRhICoqYsOhYyBi4buPIGdp4bqjIHRodXnhur90IGtow7RuZyAkSF8wJCoqLiDEkGnhu4F1IG7DoHkgY2hvIHRo4bqleSBjw7MgYuG6sW5nIGNo4bupbmcgdGjhu5FuZyBrw6ogxJHhu4Mga2jhurNuZyDEkeG7i25oIHLhurFuZyAqKnThu7cgbOG7hyBi4buLIOG6o25oIGjGsOG7n25nIGdp4bqlYyBuZ+G7pyDhu58gbmjDs20ga2jDtG5nIHXhu5FuZyBuxrDhu5tjIHTEg25nIGzhu7FjICgzOC4xOSUpIHRo4bqlcCBoxqFuIMSRw6FuZyBr4buDIHNvIHbhu5tpIG5ow7NtIGPDsyB14buRbmcgbsaw4bubYyB0xINuZyBs4buxYyAoNjMuODMlKSoqLg0KDQojIyMgKio0LjQuMy4gQmnhur9uIEJp4bq/biBzbGVlcF9pbXBhY3RlZCB2w6AgYmV2ZXJhZ2VfdGVhKioNCg0KYGBge3J9DQojIEzhuq1wIGLhuqNuZyB04bqnbiBz4buRIGNow6lvDQp0a210MiA8LSB0YWJsZShkdCRzbGVlcF9pbXBhY3RlZCwgZHQkYmV2ZXJhZ2VfdGVhKQ0KYWRkbWFyZ2lucyh0a210MikNCmBgYA0KDQokJA0KcF8xID0gUChcdGV4dHtC4buLIOG6o25oIGjGsOG7n25nIGdp4bqlYyBuZ+G7p30gXG1pZCBcdGV4dHtLaMO0bmcgdeG7kW5nIHRyw6B9KQ0KJCQNCg0KJCQNCnBfMiA9IFAoXHRleHR7QuG7iyDhuqNuaCBoxrDhu59uZyBnaeG6pWMgbmfhu6d9IFxtaWQgXHRleHR7Q8OzIHXhu5FuZyB0csOgfSkNCiQkDQoNCioqR2nhuqMgdGh1eeG6v3Qga2nhu4NtIMSR4buLbmg6KioNCiQkDQpIXzA6IHBfMSAtIHBfMiA9IDAgXHF1YWQgXHRleHR7KFThu7cgbOG7hyBi4buLIOG6o25oIGjGsOG7n25nIGdp4bqlYyBuZ+G7pyDhu58gaGFpIG5ow7NtIGLhurFuZyBuaGF1KX0NCiQkDQoNCg0KJCQNCkhfMTogcF8xIC0gcF8yID4gMCBccXVhZCBcdGV4dHsoVOG7tyBs4buHIGLhu4sg4bqjbmggaMaw4bufbmcg4bufIG5ow7NtIGtow7RuZyB14buRbmcgdHLDoCBjYW8gaMahbiBuaMOzbSBjw7MgdeG7kW5nIHRyw6ApfQ0KJCQNCg0KYGBge3J9DQojIFPhu5EgbmfGsOG7nWkgYuG7iyDhuqNuaCBoxrDhu59uZyBnaeG6pWMgbmfhu6cgdHJvbmcgdOG7q25nIG5ow7NtIHXhu5FuZyB0csOgDQpjb3VudHNfdGVhIDwtIGModGttdDJbIkLhu4sg4bqjbmggaMaw4bufbmciLCAiS2jDtG5nIHXhu5FuZyB0csOgIl0sDQogICAgICAgICAgICAgICAgdGttdDJbIkLhu4sg4bqjbmggaMaw4bufbmciLCAiQ8OzIHXhu5FuZyB0csOgIl0pDQoNCiMgVOG7lW5nIHPhu5EgbmfGsOG7nWkgdHJvbmcgdOG7q25nIG5ow7NtIHXhu5FuZyB0csOgDQp0b3RhbHNfdGVhIDwtIGMoc3VtKHRrbXQyWywgIktow7RuZyB14buRbmcgdHLDoCJdKSwNCiAgICAgICAgICAgICAgICBzdW0odGttdDJbLCAiQ8OzIHXhu5FuZyB0csOgIl0pKQ0KDQojIEtp4buDbSDEkeG7i25oIHThu4kgbOG7hyBt4buZdCBwaMOtYTogcDEgPiBwMg0KdGVzdF90ZWFfZ3JlYXRlciA8LSBwcm9wLnRlc3QoY291bnRzX3RlYSwgdG90YWxzX3RlYSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdGVybmF0aXZlID0gImdyZWF0ZXIiLCBjb3JyZWN0ID0gRkFMU0UpDQoNCiMgSGnhu4NuIHRo4buLIGvhur90IHF14bqjIGtp4buDbSDEkeG7i25oDQp0ZXN0X3RlYV9ncmVhdGVyDQpgYGANCioqTmjhuq1uIHjDqXQqKg0KDQpW4bubaSAqKm3hu6ljIMO9IG5naMSpYSAkXGFscGhhID0gNVwlJCoqIHbDoCAqKnAtdmFsdWUgcuG6pXQgbmjhu48gKDwgMi4yZS0xNikqKiwgdGEgKipiw6FjIGLhu48gZ2nhuqMgdGh1eeG6v3Qga2jDtG5nICgkSF8wJCkqKi4gxJBp4buBdSBuw6B5IGNobyB0aOG6pXk6ICoqQ8OzIGLhurFuZyBjaOG7qW5nIHRo4buRbmcga8OqIMSR4buDIGto4bqzbmcgxJHhu4tuaCBy4bqxbmcgdOG7tyBs4buHIGLhu4sg4bqjbmggaMaw4bufbmcgZ2nhuqVjIG5n4bunIOG7nyBuaMOzbSBraMO0bmcgdeG7kW5nIHRyw6AgY2FvIGjGoW4gxJHDoW5nIGvhu4Mgc28gduG7m2kgbmjDs20gY8OzIHXhu5FuZyB0csOgLioqDQoNCiMjIyAqKjQuNC40LiBCaeG6v24gc2xlZXBfaW1wYWN0ZWQgdsOgIHRpbWVfb2ZfZGF5X2V2ZW5pbmcqKg0KDQpgYGB7cn0NCmFkZG1hcmdpbnModGttdDMpDQpgYGANCi0gXCggcF8xID0gUChcdGV4dHtC4buLIOG6o25oIGjGsOG7n25nIGdp4bqlYyBuZ+G7p30gXG1pZCBcdGV4dHtLaMO0bmcgdeG7kW5nIGJ14buVaSB04buRaX0pIFwpDQoNCi0gXCggcF8yID0gUChcdGV4dHtC4buLIOG6o25oIGjGsOG7n25nIGdp4bqlYyBuZ+G7p30gXG1pZCBcdGV4dHtDw7MgdeG7kW5nIGJ14buVaSB04buRaX0pIFwpDQoNCioqR2nhuqMgdGh1eeG6v3Qga2nhu4NtIMSR4buLbmg6KioNCg0KLSBcKCBIXzA6IHBfMSAtIHBfMiA9IDAgXCkgKFThu7cgbOG7hyBi4buLIOG6o25oIGjGsOG7n25nIGLhurFuZyBuaGF1IGdp4buvYSBoYWkgbmjDs20pDQoNCi0gXCggSF8xOiBwXzEgLSBwXzIgPCAwIFwpIChU4bu3IGzhu4cgYuG7iyDhuqNuaCBoxrDhu59uZyDhu58gbmjDs20ga2jDtG5nIHXhu5FuZyBideG7lWkgdOG7kWkgdGjhuqVwIGjGoW4pDQoNCmBgYHtyfQ0KIyBT4buRIG5nxrDhu51pIGLhu4sg4bqjbmggaMaw4bufbmcgZ2nhuqVjIG5n4bunIHRyb25nIHThu6tuZyBuaMOzbQ0KY291bnRzX2V2ZW5pbmcgPC0gYyh0a210M1siQuG7iyDhuqNuaCBoxrDhu59uZyIsICJLaMO0bmcgdeG7kW5nIGJ14buVaSB04buRaSJdLA0KICAgICAgICAgICAgICAgICAgICB0a210M1siQuG7iyDhuqNuaCBoxrDhu59uZyIsICJDw7MgdeG7kW5nIGJ14buVaSB04buRaSJdKQ0KDQojIFThu5VuZyBz4buRIG5nxrDhu51pIHRyb25nIHThu6tuZyBuaMOzbQ0KdG90YWxzX2V2ZW5pbmcgPC0gYyhzdW0odGttdDNbLCAiS2jDtG5nIHXhu5FuZyBideG7lWkgdOG7kWkiXSksDQogICAgICAgICAgICAgICAgICAgIHN1bSh0a210M1ssICJDw7MgdeG7kW5nIGJ14buVaSB04buRaSJdKSkNCg0KIyBLaeG7g20gxJHhu4tuaCB04buJIGzhu4cgbeG7mXQgcGjDrWE6IHAxIDwgcDINCnRlc3RfZXZlbmluZ19sZXNzIDwtIHByb3AudGVzdChjb3VudHNfZXZlbmluZywgdG90YWxzX2V2ZW5pbmcsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0ZXJuYXRpdmUgPSAibGVzcyIsIGNvcnJlY3QgPSBGQUxTRSkNCg0KIyBIaeG7g24gdGjhu4sga+G6v3QgcXXhuqMga2nhu4NtIMSR4buLbmgNCnRlc3RfZXZlbmluZ19sZXNzDQpgYGANCioqTmjhuq1uIHjDqXQqKg0KDQpW4bubaSBwLXZhbHVlIDwgMi4yZS0xNiwgbmjhu48gaMahbiBy4bqldCBuaGnhu4F1IHNvIHbhu5tpIG3hu6ljIMO9IG5naMSpYSBhbHBoYSA9IDUlLCB0YSBiw6FjIGLhu48gZ2nhuqMgdGh1eeG6v3Qga2jDtG5nIChIMCkuIEPDsyBi4bqxbmcgY2jhu6luZyB0aOG7kW5nIGvDqiBjaG8gdGjhuqV5IHLhurFuZyB04bu3IGzhu4cgYuG7iyDhuqNuaCBoxrDhu59uZyBnaeG6pWMgbmfhu6cg4bufIG5ow7NtIGtow7RuZyB14buRbmcgYnXhu5VpIHThu5FpIHRo4bqlcCBoxqFuIMSRw6FuZyBr4buDIHNvIHbhu5tpIG5ow7NtIGPDsyB14buRbmcgYnXhu5VpIHThu5FpDQoNCg0KIyMgKio0LjUuUmVsYXRpdmUgUmlzayB2w6Aga2hv4bqjbmcgxrDhu5tjIGzGsOG7o25nIGNobyBSZWxhdGl2ZSBSaXNrKioNCg0KIyMjICoqNC41LjEuIEJp4bq/biBCaeG6v24gc2xlZXBfaW1wYWN0ZWQgdsOgIGJldmVyYWdlX2NvZmZlZSoqDQoNCmBgYHtyfQ0KcnIgPC0gdGFibGUoZHQkYmV2ZXJhZ2VfY29mZmVlLGR0JHNsZWVwX2ltcGFjdGVkKQ0KcnI8LSByclssIGMoIkLhu4sg4bqjbmggaMaw4bufbmciLCAiS2jDtG5nIGLhu4sg4bqjbmggaMaw4bufbmciKV0NCmFkZG1hcmdpbnMocnIpDQpSZWxSaXNrKHJyLCBjb25mLmxldmVsID0gLjk1KQ0KYGBgDQpfKipOaOG6rW4geMOpdDoqKl8gDQoNCi0gUmVsYXRpdmUgUmlzayBnaeG7r2EgYmnhur9uIGBzbGVlcF9pbXBhY3RlZGAgdsOgIGBiZXZlcmFnZV9jb2ZmZWVgIGzDoCAqKjAuNDk1ODUwMyoqLCBuaOG7jyBoxqFuIDEuIMSQaeG7gXUgbsOgeSBjaG8gdGjhuqV5IHLhurFuZyAqKm5nxrDhu51pIGtow7RuZyB14buRbmcgY8OgIHBow6ogY8OzIG5ndXkgY8ahIGLhu4sg4bqjbmggaMaw4bufbmcgxJHhur9uIGdp4bqlYyBuZ+G7pyB0aOG6pXAgaMahbioqIHNvIHbhu5tpIG5nxrDhu51pIGPDsyB14buRbmcgY8OgIHBow6ogKGNo4buJIGLhurFuZyBraG/huqNuZyAqKjQ5LjYlKiogc28gduG7m2kgbmjDs20gY8OzIHXhu5FuZyBjw6AgcGjDqikuDQoNCi0gS2hv4bqjbmcgdGluIGPhuq15IDk1JSBj4bunYSBSUiBsw6AgdOG7qyAqKjAuMzg3OCoqIMSR4bq/biAqKjAuNjI4MSoqLiDEkGnhu4F1IG7DoHkgY2jhu6luZyBtaW5oIHLhurFuZyAqKm3hu5FpIGxpw6puIGjhu4cgZ2nhu69hIHZp4buHYyB14buRbmcgY8OgIHBow6ogdsOgIHTDrG5oIHRy4bqhbmcg4bqjbmggaMaw4bufbmcgxJHhur9uIGdp4bqlYyBuZ+G7pyBsw6AgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqioqLg0KDQotIEvhur90IHF14bqjIGPhu6duZyBj4buRIGdp4bqjIHRodXnhur90IHLhurFuZyAqKnRpw6p1IHRo4bulIGPDoCBwaMOqIGPDsyB0aOG7gyBsw6BtIHN1eSBnaeG6o20gY2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7pyoqLCB2w6Agbmjhu69uZyBuZ8aw4budaSAqKmtow7RuZyB14buRbmcgY8OgIHBow6oqKiBjw7MgeHUgaMaw4bubbmcgKirDrXQgYuG7iyDhuqNuaCBoxrDhu59uZyBoxqFuKiogduG7gSBnaeG6pWMgbmfhu6cuDQoNCiMjIyAqKjQuNS4yLiBCaeG6v24gQmnhur9uIHNsZWVwX2ltcGFjdGVkIHbDoCBiZXZlcmFnZV9lbmVyZ3lfZHJpbmsqKg0KDQpgYGB7cn0NCnJyMSA8LSB0YWJsZShkdCRiZXZlcmFnZV9lbmVyZ3lfZHJpbmssZHQkc2xlZXBfaW1wYWN0ZWQpDQpycjEgPC0gcnIxWywgYygiQuG7iyDhuqNuaCBoxrDhu59uZyIsICJLaMO0bmcgYuG7iyDhuqNuaCBoxrDhu59uZyIpXQ0KYWRkbWFyZ2lucyhycjEpDQpSZWxSaXNrKHJyMSwgY29uZi5sZXZlbCA9IC45NSkNCmBgYA0KDQpfKipOaOG6rW4geMOpdDoqKl8gDQoNCi0gKipSZWxhdGl2ZSBSaXNrKiogZ2nhu69hIGJp4bq/biBgc2xlZXBfaW1wYWN0ZWRgIHbDoCBgYmV2ZXJhZ2VfZW5lcmd5X2RyaW5rYCBsw6AgKiowLjU5ODMqKiwgdOG7qWMgbMOgICoqbmfGsOG7nWkga2jDtG5nIHXhu5FuZyBuxrDhu5tjIHTEg25nIGzhu7FjIGPDsyBuZ3V5IGPGoSBi4buLIOG6o25oIGjGsOG7n25nIMSR4bq/biBnaeG6pWMgbmfhu6cgY2jhu4kgYuG6sW5nIGtob+G6o25nIDU5LjglIHNvIHbhu5tpIG5nxrDhu51pIGPDsyB14buRbmcgbsaw4bubYyB0xINuZyBs4buxYyoqLg0KDQotICoqS2hv4bqjbmcgdGluIGPhuq15IDk1JSoqIGPhu6dhIFJSIGzDoCB04burICoqMC40ODEyKiogxJHhur9uICoqMC43ODg1KiogIGNobyB0aOG6pXkgcuG6sW5nICoqbeG7kWkgbGnDqm4gaOG7hyBuw6B5IGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6oqKi4NCg0KLSDEkGnhu4F1IG7DoHkgxJHhu5NuZyBuZ2jEqWEgduG7m2kgdmnhu4djICoqdmnhu4djIHRpw6p1IHRo4bulIG7GsOG7m2MgdMSDbmcgbOG7sWMgY8OzIHRo4buDIGzDoG0gdMSDbmcgbmd1eSBjxqEgYuG7iyDhuqNuaCBoxrDhu59uZyDEkeG6v24gZ2nhuqVjIG5n4bunKiouIE5o4buvbmcgbmfGsOG7nWkgKipraMO0bmcgdGnDqnUgdGjhu6Ugbsaw4bubYyB0xINuZyBs4buxYyBjw7MgeHUgaMaw4bubbmcgw610IGLhu4sgcuG7kWkgbG/huqFuIGdp4bqlYyBuZ+G7pyBoxqFuKiogc28gduG7m2kgbmjDs20gY8OzIHPhu60gZOG7pW5nLg0KDQojIyMgKio0LjUuMy4gQmnhur9uIEJp4bq/biBzbGVlcF9pbXBhY3RlZCB2w6AgYmV2ZXJhZ2VfdGVhKioNCg0KYGBge3J9DQpycjIgPC0gdGFibGUoZHQkYmV2ZXJhZ2VfdGVhLGR0JHNsZWVwX2ltcGFjdGVkKQ0KcnIyIDwtIHJyMlssIGMoIkLhu4sg4bqjbmggaMaw4bufbmciLCAiS2jDtG5nIGLhu4sg4bqjbmggaMaw4bufbmciKV0NCmFkZG1hcmdpbnMocnIyKQ0KUmVsUmlzayhycjIsIGNvbmYubGV2ZWwgPSAuOTUpDQpgYGANCg0KXyoqTmjhuq1uIHjDqXQ6KipfIA0KDQotICoqUmVsYXRpdmUgUmlzayoqIGdp4buvYSBiaeG6v24gYHNsZWVwX2ltcGFjdGVkYCB2w6AgYGJldmVyYWdlX3RlYWAgbMOgICoqMy4yMjAqKiwgdOG7qWMgbMOgICoqbmd1eSBjxqEgYuG7iyDhuqNuaCBoxrDhu59uZyDEkeG6v24gZ2nhuqVjIG5n4bunIOG7nyBuaMOzbSBraMO0bmcgdeG7kW5nIHRyw6AgY2FvIGfhuqVwIGtob+G6o25nIDMuMjIgbOG6p24gc28gduG7m2kgbmjDs20gY8OzIHXhu5FuZyB0csOgKiouDQoNCi0gKipLaG/huqNuZyB0aW4gY+G6rXkgOTUlKiogbMOgIHThu6sgKioyLjMzNyoqIMSR4bq/biAqKjQuNTEyKiogY2hvIHRo4bqleSBy4bqxbmcgKipt4buRaSBsacOqbiBo4buHIGdp4buvYSB2aeG7h2MgdeG7kW5nIHRyw6AgdsOgIHTDrG5oIHRy4bqhbmcg4bqjbmggaMaw4bufbmcgZ2nhuqVjIG5n4bunIGzDoCBjw7Mgw70gbmdoxKlhIHRo4buRbmcga8OqKiouDQoNCi0gxJBp4buBdSBuw6B5IG5n4bulIMO9IHLhurFuZyAqKm5o4buvbmcgbmfGsOG7nWkga2jDtG5nIHXhu5FuZyB0csOgIGPDsyBuZ3V5IGPGoSBjYW8gaMahbiDEkcOhbmcga+G7gyBi4buLIOG6o25oIGjGsOG7n25nIMSR4bq/biBnaeG6pWMgbmfhu6cqKiwgdHJvbmcga2hpICoqdmnhu4djIHXhu5FuZyB0csOgIGPDsyB0aOG7gyBsacOqbiBxdWFuIMSR4bq/biBjaOG6pXQgbMaw4bujbmcgZ2nhuqVjIG5n4bunIHThu5F0IGjGoW4qKiDhu58gbeG7mXQgc+G7kSDEkeG7kWkgdMaw4bujbmcuDQoNCiMjIyAqKjQuNS40LiBCaeG6v24gc2xlZXBfaW1wYWN0ZWQgdsOgIHRpbWVfb2ZfZGF5X2V2ZW5pbmcqKg0KDQpgYGB7cn0NCnJyMyA8LSB0YWJsZShkdCR0aW1lX29mX2RheV9ldmVuaW5nLGR0JHNsZWVwX2ltcGFjdGVkKQ0KcnIzIDwtIHJyM1ssIGMoIkLhu4sg4bqjbmggaMaw4bufbmciLCAiS2jDtG5nIGLhu4sg4bqjbmggaMaw4bufbmciKV0NCmFkZG1hcmdpbnMocnIzKQ0KUmVsUmlzayhycjMsIGNvbmYubGV2ZWwgPSAuOTUpDQpgYGANCg0KXyoqTmjhuq1uIHjDqXQ6KipfIA0KDQotICoqUmVsYXRpdmUgUmlzayoqIGdp4buvYSBiaeG6v24gYHNsZWVwX2ltcGFjdGVkYCB2w6AgYHRpbWVfb2ZfZGF5X2V2ZW5pbmdgIGzDoCAqKjAuMTkzKiosIHThu6ljIGzDoCAqKm5o4buvbmcgbmfGsOG7nWkga2jDtG5nIHRpw6p1IHRo4bulIGNhZmZlaW5lIHbDoG8gYnXhu5VpIHThu5FpIGPDsyBuZ3V5IGPGoSBi4buLIOG6o25oIGjGsOG7n25nIMSR4bq/biBnaeG6pWMgbmfhu6cgY2jhu4kgYuG6sW5nIGtob+G6o25nIDE5LjMlIHNvIHbhu5tpIG5o4buvbmcgbmfGsOG7nWkgY8OzIHRpw6p1IHRo4bulIHbDoG8gYnXhu5VpIHThu5FpKiouDQoNCi0gKipLaG/huqNuZyB0aW4gY+G6rXkgOTUlKiogdOG7qyAqKjAuMTQwMSoqIMSR4bq/biAqKjAuMjYxOCoqIGNobyB0aOG6pXkgKipr4bq/dCBxdeG6oyBuw6B5IGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6oqKi4NCg0KLSDEkGnhu4F1IG7DoHkgY2hvIHRo4bqleSBy4bqxbmcgKip2aeG7h2MgdGnDqnUgdGjhu6UgY2FmZmVpbmUgdsOgbyBideG7lWkgdOG7kWkgY8OzIGxpw6puIHF1YW4gY2jhurd0IGNo4bq9IMSR4bq/biB2aeG7h2MgYuG7iyDhuqNuaCBoxrDhu59uZyDEkeG6v24gZ2nhuqVjIG5n4bunKiouIE5o4buvbmcgbmfGsOG7nWkgdeG7kW5nIGNhZmZlaW5lIHbDoG8gYnXhu5VpIHThu5FpICoqY8OzIGto4bqjIG7Eg25nIGLhu4sg4bqjbmggaMaw4bufbmcgZ2nhuqVjIG5n4bunIGNhbyBoxqFuIMSRw6FuZyBr4buDKiogc28gduG7m2kgbmjhu69uZyBuZ8aw4budaSBraMO0bmcgdeG7kW5nIHbDoG8gdGjhu51pIMSRaeG7g20gbsOgeS4NCg0KIyMgKio0LjYuIE9kZHMgcmF0aW8gdsOgIGtob+G6o25nIMaw4bubYyBsxrDhu6NuZyBjaG8gT2RkcyByYXRpbyoqDQoNCiMjIyAqKjQuNi4xLiBCaeG6v24gQmnhur9uIHNsZWVwX2ltcGFjdGVkIHbDoCBiZXZlcmFnZV9jb2ZmZWUqKg0KDQpgYGB7cn0NCm9yIDwtIHRhYmxlKGR0JGJldmVyYWdlX2NvZmZlZSxkdCRzbGVlcF9pbXBhY3RlZCkNCm9yIDwtIG9yWywgYygiQuG7iyDhuqNuaCBoxrDhu59uZyIsICJLaMO0bmcgYuG7iyDhuqNuaCBoxrDhu59uZyIpXQ0KYWRkbWFyZ2lucyhvcikNCk9kZHNSYXRpbyhvciwgY29uZi5sZXZlbCA9IC45NSkNCmBgYA0KDQpfKipOaOG6rW4geMOpdDoqKl8gDQoNCi0gT2RkcyBj4bunYSB2aeG7h2MgYuG7iyDhuqNuaCBoxrDhu59uZyBnaeG6pWMgbmfhu6cg4bufIG5ow7NtIGtow7RuZyB14buRbmcgY8OgIHBow6ogY2jhu4kgYuG6sW5nIDMxLjUlIHNvIHbhu5tpIG9kZHMg4bufIG5ow7NtIGPDsyB14buRbmcgY8OgIHBow6ouIMSQaeG7gXUgbsOgeSBjaG8gdGjhuqV5IHLhurFuZyBuZ8aw4budaSBraMO0bmcgdeG7kW5nIGPDoCBwaMOqIGPDsyBraOG6oyBuxINuZyBi4buLIOG6o25oIGjGsOG7n25nIGdp4bqlYyBuZ+G7pyB0aOG6pXAgaMahbiDEkcOhbmcga+G7gyBzbyB24bubaSBuZ8aw4budaSB14buRbmcgY8OgIHBow6ouDQoNCi0gKipLaG/huqNuZyB0aW4gY+G6rXkgOTUlKiogY+G7p2EgT2RkcyBSYXRpbyBu4bqxbSB0cm9uZyBraG/huqNuZyB04burICoqMC4yMTYxIMSR4bq/biAwLjQ1OTYqKi4gxJBp4buBdSBuw6B5IGNobyB0aOG6pXkga+G6v3QgcXXhuqMgbMOgICoqY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqioqLCB2w6AgKip2aeG7h2MgdGnDqnUgdGjhu6UgY8OgIHBow6ogY8OzIG3hu5FpIGxpw6puIGjhu4cgxJHDoW5nIGvhu4MgduG7m2kgY2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7pyoqLg0KDQojIyMgKio0LjYuMi4gQmnhur9uIEJp4bq/biBzbGVlcF9pbXBhY3RlZCB2w6AgYmV2ZXJhZ2VfZW5lcmd5X2RyaW5rKioNCg0KYGBge3J9DQpvcjEgPC0gdGFibGUoZHQkYmV2ZXJhZ2VfZW5lcmd5X2RyaW5rLGR0JHNsZWVwX2ltcGFjdGVkKQ0Kb3IxIDwtIG9yMVssIGMoIkLhu4sg4bqjbmggaMaw4bufbmciLCAiS2jDtG5nIGLhu4sg4bqjbmggaMaw4bufbmciKV0NCmFkZG1hcmdpbnMob3IxKQ0KT2Rkc1JhdGlvKG9yMSwgY29uZi5sZXZlbCA9IC45NSkNCmBgYA0KDQpfKipOaOG6rW4geMOpdDoqKl8NCg0KLSBPZGRzIGPhu6dhIHZp4buHYyBi4buLIOG6o25oIGjGsOG7n25nIGdp4bqlYyBuZ+G7pyDhu58gbmjDs20ga2jDtG5nIHXhu5FuZyBuxrDhu5tjIHTEg25nIGzhu7FjIGNo4buJIGLhurFuZyAzNSUgc28gduG7m2kgb2RkcyDhu58gbmjDs20gY8OzIHXhu5FuZyBuxrDhu5tjIHTEg25nIGzhu7FjLiBIYXkgbsOzaSBjw6FjaCBraMOhYywgbmfGsOG7nWkgY8OzIHXhu5FuZyBlbmVyZ3kgZHJpbmsgY8OzIG5ndXkgY8ahIGLhu4sg4bqjbmggaMaw4bufbmcgZ2nhuqVjIG5n4bunIGNhbyBoxqFuIGfhuqduIDMgbOG6p24gc28gduG7m2kgbmfGsOG7nWkga2jDtG5nIHXhu5FuZy4NCg0KLSAqKktob+G6o25nIHRpbiBj4bqteSA5NSUqKiBj4bunYSBPZGRzIFJhdGlvIG7hurFtIHRyb25nIGtob+G6o25nIHThu6sgKiowLjE4NzUgxJHhur9uIDAuNjUzOCoqLiDEkGnhu4F1IG7DoHkgY2hvIHRo4bqleSBr4bq/dCBxdeG6oyBsw6AgKipjw7Mgw70gbmdoxKlhIHRo4buRbmcga8OqKiosIHbDoCBjw7MgdGjhu4MgKipr4bq/dCBsdeG6rW4gcuG6sW5nIHZp4buHYyB14buRbmcgbsaw4bubYyB0xINuZyBs4buxYyBjw7MgbGnDqm4gcXVhbiDEkeG6v24gdmnhu4djIGzDoG0gZ2nhuqNtIGNo4bqldCBsxrDhu6NuZyBnaeG6pWMgbmfhu6cqKiBj4bunYSBuZ8aw4budaSBkw7luZy4NCg0KIyMjICoqNC42LjMuIEJp4bq/biBCaeG6v24gc2xlZXBfaW1wYWN0ZWQgdsOgIGJldmVyYWdlX3RlYSoqDQoNCmBgYHtyfQ0Kb3IyIDwtIHRhYmxlKGR0JGJldmVyYWdlX3RlYSxkdCRzbGVlcF9pbXBhY3RlZCkNCm9yMiA8LSBvcjJbLCBjKCJC4buLIOG6o25oIGjGsOG7n25nIiwgIktow7RuZyBi4buLIOG6o25oIGjGsOG7n25nIildDQphZGRtYXJnaW5zKG9yMikNCk9kZHNSYXRpbyhvcjIsIGNvbmYubGV2ZWwgPSAuOTUpDQpgYGANCg0KXyoqTmjhuq1uIHjDqXQ6KipfDQoNCi0gT2RkcyBj4bunYSB2aeG7h2MgYuG7iyDhuqNuaCBoxrDhu59uZyBnaeG6pWMgbmfhu6cg4bufIG5ow7NtIGtow7RuZyB14buRbmcgdHLDoCBjYW8gZ+G6pXAgNS45MSBs4bqnbiBzbyB24bubaSBvZGRzIGPhu6dhIG5ow7NtIGPDsyB14buRbmcgdHLDoC4uIMSQaeG7gXUgbsOgeSBjw7MgbmdoxKlhIGzDoCAqKmto4bqjIG7Eg25nIGLhu4sg4bqjbmggaMaw4bufbmcgxJHhur9uIGdp4bqlYyBuZ+G7pyDhu58gbmjDs20ga2jDtG5nIHXhu5FuZyB0csOgIGNhbyBn4bqlcCBn4bqnbiA2IGzhuqduKiogc28gduG7m2kgbmjDs20gY8OzIHXhu5FuZyB0csOgLg0KDQotICoqS2hv4bqjbmcgdGluIGPhuq15IDk1JSoqIGPhu6dhIE9kZHMgUmF0aW8gbMOgICoqWzMuODA7IDkuMTldKiouIMSQaeG7gXUgbsOgeSBjaG8gdGjhuqV5IHLhurFuZyBr4bq/dCBxdeG6oyBsw6AgKipjw7Mgw70gbmdoxKlhIHRo4buRbmcga8OqKiosIHbDoCBjw7MgdGjhu4Mga+G6v3QgbHXhuq1uIHLhurFuZyAqKnZp4buHYyBraMO0bmcgdeG7kW5nIHRyw6AgY8OzIGxpw6puIHF1YW4gxJHDoW5nIGvhu4MgxJHhur9uIHZp4buHYyB0xINuZyBraOG6oyBuxINuZyBi4buLIOG6o25oIGjGsOG7n25nIGdp4bqlYyBuZ+G7pyoqLg0KDQojIyMgKio0LjYuNC4gQmnhur9uIHNsZWVwX2ltcGFjdGVkIHbDoCB0aW1lX29mX2RheV9ldmVuaW5nKioNCg0KYGBge3J9DQpvcjMgPC0gdGFibGUoZHQkdGltZV9vZl9kYXlfZXZlbmluZyxkdCRzbGVlcF9pbXBhY3RlZCkNCm9yMyA8LSBvcjNbLCBjKCJC4buLIOG6o25oIGjGsOG7n25nIiwgIktow7RuZyBi4buLIOG6o25oIGjGsOG7n25nIildDQphZGRtYXJnaW5zKG9yMykNCk9kZHNSYXRpbyhvcjMsIGNvbmYubGV2ZWwgPSAuOTUpDQpgYGANCl8qKk5o4bqtbiB4w6l0OioqXw0KDQotIE9kZHMgY+G7p2Egdmnhu4djIGLhu4sg4bqjbmggaMaw4bufbmcgZ2nhuqVjIG5n4bunIOG7nyBuaMOzbSBraMO0bmcgdeG7kW5nIHbDoG8gYnXhu5VpIHThu5FpIGNo4buJIGLhurFuZyA2LjUlIHNvIHbhu5tpIG9kZHMgY+G7p2EgbmjDs20gY8OzIHXhu5FuZyB2w6BvIGJ14buVaSB04buRaS4gTsOzaSBjw6FjaCBraMOhYywgbmfGsOG7nWkgY8OzIHXhu5FuZyDEkeG7kyB14buRbmcgY2jhu6lhIGNhZmZlaW5lIHbDoG8gYnXhu5VpIHThu5FpIGPDsyBuZ3V5IGPGoSBi4buLIOG6o25oIGjGsOG7n25nIGdp4bqlYyBuZ+G7pyBjYW8gZ+G6pXAga2hv4bqjbmcgMTUuMyBs4bqnbiBzbyB24bubaSBuZ8aw4budaSBraMO0bmcgdeG7kW5nLg0KDQotICoqS2hv4bqjbmcgdGluIGPhuq15IDk1JSoqIGNobyBPZGRzIFJhdGlvIGzDoCAqKlswLjA0MjsgMC4xMDJdKiogY2hvIHRo4bqleSBr4bq/dCBxdeG6oyBuw6B5IGzDoCAqKmPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6oqKi4NCg0KLSBL4bq/dCBxdeG6oyBuw6B5IGNobyB0aOG6pXkgY8OzIG3hu5FpIGxpw6puIGjhu4cgY2jhurd0IGNo4bq9IGdp4buvYSAqKnZp4buHYyB14buRbmcgY2FmZmVpbmUgdsOgbyBideG7lWkgdOG7kWkgdsOgIG5ndXkgY8ahIGLhu4sg4bqjbmggaMaw4bufbmcgxJHhur9uIGdp4bqlYyBuZ+G7pyoqLiBD4bulIHRo4buDLCBuaOG7r25nIG5nxrDhu51pIHXhu5FuZyBjYWZmZWluZSB2w6BvIGJ14buVaSB04buRaSBjw7MgKipuZ3V5IGPGoSBi4buLIOG6o25oIGjGsOG7n25nIGdp4bqlYyBuZ+G7pyBjYW8gaMahbiDEkcOhbmcga+G7gyoqIHNvIHbhu5tpIG5o4buvbmcgbmfGsOG7nWkga2jDtG5nIHXhu5FuZyB2w6BvIHRo4budaSDEkWnhu4NtIG7DoHkuDQoNCiMjICoqNC43LiBNw7QgaMOsbmggaOG7k2kgcXV5IMSRxqFuKioNCg0KIyMjICoqNC43LjEuIE3DtCBow6xuaCBMb2dpdCoqDQoNCiQkDQpIXzA6IFx0ZXh0e0Jp4bq/biBraMO0bmcgY8OzIOG6o25oIGjGsOG7n25nIMSR4bq/biB4w6FjIHN14bqldCBnaeG6pWMgbmfhu6cgYuG7iyDhuqNuaCBoxrDhu59uZ30NCiQkDQokJA0KSF8xOiBcdGV4dHtCaeG6v24gY8OzIOG6o25oIGjGsOG7n25nIMSR4bq/biB4w6FjIHN14bqldCBnaeG6pWMgbmfhu6cgYuG7iyDhuqNuaCBoxrDhu59uZ30NCiQkDQpUcsaw4bubYyB0acOqbiwgdMOhYyBnaeG6oyB0aOG7sWMgaGnhu4duIGPDoWMgbcO0IGjDrG5oIGjhu5NpIHF1eSBsb2dpc3RpYyDEkcahbiBiaeG6v24sIG3hu5dpIG3DtCBow6xuaCBjaOG7iSBiYW8gZ+G7k20gbeG7mXQgYmnhur9uIGdp4bqjaSB0aMOtY2ggbmjhurFtIHBow6JuIHTDrWNoIHJpw6puZyBs4bq7IOG6o25oIGjGsOG7n25nIGPhu6dhIHThu6tuZyB54bq/dSB04buRIMSR4bq/biBraOG6oyBuxINuZyDhuqNuaCBoxrDhu59uZyDEkeG6v24gZ2nhuqVjIG5n4bunLiANCg0KIyMjIyAqKio0LjcuMS4xLiBCaeG6v24gYmV2ZXJhZ2VfY29mZmVlKioqDQoNCmBgYHtyfQ0KIyBU4bqhbyBiaeG6v24gbmjhu4sgcGjDom4gbeG7m2kgY2hvIG3DtCBow6xuaA0KZHQkc2xlZXBfYmluYXJ5IDwtIGlmZWxzZShkdCRzbGVlcF9pbXBhY3RlZCA9PSAiQuG7iyDhuqNuaCBoxrDhu59uZyIsIDEsIDApDQoNCiMgQ2jhuqF5IG3DtCBow6xuaCBsb2dpc3RpYw0KeHN0dC5NTCA8LSBnbG0oc2xlZXBfYmluYXJ5IH4gYmV2ZXJhZ2VfY29mZmVlLCBkYXRhID0gZHQsIGZhbWlseSA9IGJpbm9taWFsKQ0Kc3VtbWFyeSh4c3R0Lk1MKQ0KYGBgDQoNCmBgYHtyfQ0KIyBNw7QgaMOsbmggaOG7k2kgcXV5IGxvZ2lzdGljIHbhu5tpIGJp4bq/biBiZXZlcmFnZV9jb2ZmZWUNCnJlZ2xvZ2l0X2NvZmZlZSA8LSBnbG0oc2xlZXBfYmluYXJ5IH4gYmV2ZXJhZ2VfY29mZmVlLCBkYXRhID0gZHQsIGZhbWlseSA9IGJpbm9taWFsKGxpbmsgPSAnbG9naXQnKSkNCnN1bW1hcnkocmVnbG9naXRfY29mZmVlKQ0KYGBgDQoNCl8qKk5o4bqtbiB4w6l0OioqXw0KDQpIw6BtIGjhu5NpIHF1eSBsb2dpc3RpYyDEkcaw4bujYyDGsOG7m2MgbMaw4bujbmcgbmjGsCBzYXU6DQoNCiQkDQpcbG5cbGVmdChcZnJhY3tcaGF0e1xwaX19ezEgLSBcaGF0e1xwaX19XHJpZ2h0KSA9IC0xLjAyNjIgKyAxLjE1NDYgXGNkb3QgXHRleHR7YmV2ZXJhZ2VfY29mZmVlfQ0KJCQNCg0KDQp8IEJp4bq/biAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOaMOzbSBzbyBzw6FuaCAgICAgICAgICAgICAgfCBI4buHIHPhu5EgKM6yKSB8IHAtdmFsdWUgICB8IE9kZHMgUmF0aW8gKGVezrIpIHwgRGnhu4VuIGdp4bqjaSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwNCnwgQ8OzIHXhu5FuZyBjw6AgcGjDqiB8S2jDtG5nIHXhu5FuZyBjw6AgcGjDqiB8IDEuMTUgICAgICB8IDIuMDFlLTA5ICB8IDMuMTYgICAgICAgICAgICAgfCBOZ8aw4budaSAqKmPDsyB14buRbmcgY8OgIHBow6oqKiBjw7Mgb2RkcyBi4buLIOG6o25oIGjGsOG7n25nIGdp4bqlYyBuZ+G7pyBjYW8gZ+G6pXAgMyBs4bqnbiBzbyB24bubaSBuZ8aw4budaSAqKmtow7RuZyB14buRbmcgY8OgIHBow6oqKiAoKmPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ogbeG6oW5oKikuIHwNCg0KXyoqS+G6v3QgbHXhuq1uOioqXw0KDQpL4bq/dCBxdeG6oyBo4buTaSBxdXkgbG9naXN0aWMgY2hvIHRo4bqleSBiaeG6v24gdGjDs2kgcXVlbiB14buRbmcgY8OgIHBow6ogKGJldmVyYWdlX2NvZmZlZSkgY8OzIOG6o25oIGjGsOG7n25nIMSRw6FuZyBr4buDIMSR4bq/biBraOG6oyBuxINuZyBi4buLIOG6o25oIGjGsOG7n25nIGdp4bqlYyBuZ+G7py4gQ+G7pSB0aOG7gywgbmjhu69uZyBuZ8aw4budaSBjw7MgdeG7kW5nIGPDoCBwaMOqIGPDsyBvZGRzIGLhu4sg4bqjbmggaMaw4bufbmcgZ2nhuqVjIG5n4bunIGNhbyBoxqFuIGtob+G6o25nIDMuMTYgbOG6p24gc28gduG7m2kgbmjhu69uZyBuZ8aw4budaSBraMO0bmcgdeG7kW5nIGPDoCBwaMOqLiBI4buHIHPhu5EgaOG7k2kgcXV5IGzDoCAxLjE1IHbhu5tpIHAtdmFsdWUgPSAyLjAxZS0wOSwgbmjhu48gaMahbiBt4bupYyDDvSBuZ2jEqWEgNSUsIGNobyB0aOG6pXkga+G6v3QgcXXhuqMgbsOgeSBjw7Mgw70gbmdoxKlhIHRo4buRbmcga8OqIHLhuqV0IG3huqFuaC4gxJBp4buBdSBuw6B5IMSR4buTbmcgbmdoxKlhIHbhu5tpIHZp4buHYyB0aMOzaSBxdWVuIHXhu5FuZyBjw6AgcGjDqiBsw6AgbeG7mXQgeeG6v3UgdOG7kSBjw7MgbGnDqm4gcXVhbiByw7UgcuG7h3QgxJHhur9uIGNo4bqldCBsxrDhu6NuZyBnaeG6pWMgbmfhu6cgdsOgIGPhuqduIMSRxrDhu6NjIHhlbSB4w6l0IHRyb25nIGPDoWMgcGjDom4gdMOtY2ggbGnDqm4gcXVhbiDEkeG6v24gc+G7qWMga2jhu49lIGdp4bqlYyBuZ+G7py4NCg0KS2hv4bqjbmcgdGluIGPhuq15IGNobyBjw6FjIGjhu4cgc+G7kSBj4bunYSBtw7QgaMOsbmg6DQoNCmBgYHtyfQ0KY29uZmludChyZWdsb2dpdF9jb2ZmZWUpDQpgYGANCg0KXyoqTmjhuq1uIHjDqXQ6KipfDQoNCktob+G6o25nIHRpbiBj4bqteSA5NSUgY2hvIGjhu4cgc+G7kSBo4buTaSBxdXkgY+G7p2EgKipiaeG6v24gYmV2ZXJhZ2VfY29mZmVlKiogbMOgIHThu6sgMC43ODExIMSR4bq/biAxLjUzNjUuIFbDrCB0b8OgbiBi4buZIGtob+G6o25nIG7DoHkgxJHhu4F1IGzhu5tuIGjGoW4gMCwgxJFp4buBdSBuw6B5IGNobyB0aOG6pXkgcuG6sW5nIGJp4bq/biBiZXZlcmFnZV9jb2ZmZWUgY8OzIOG6o25oIGjGsOG7n25nIGTGsMahbmcgdsOgIGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ogxJHhur9uIGto4bqjIG7Eg25nIGLhu4sg4bqjbmggaMaw4bufbmcgZ2nhuqVjIG5n4bunLiBOw7NpIGPDoWNoIGtow6FjLCBuaOG7r25nIG5nxrDhu51pIGPDsyB14buRbmcgY8OgIHBow6ogY8OzIHh1IGjGsOG7m25nIGThu4UgYuG7iyDhuqNuaCBoxrDhu59uZyDEkeG6v24gZ2nhuqVjIG5n4bunIGjGoW4gc28gduG7m2kgbmjhu69uZyBuZ8aw4budaSBraMO0bmcgdeG7kW5nLg0KDQojIyMjICoqKjQuNy4xLjIuIEJp4bq/biBiZXZlcmFnZV9lbmVyZ3lfZHJpbmsqKioNCg0KYGBge3J9DQojIE3DtCBow6xuaCBo4buTaSBxdXkgbG9naXN0aWMgduG7m2kgYmnhur9uIGJldmVyYWdlX2VuZXJneV9kcmluaw0KcmVnbG9naXRfZW5lcmd5IDwtIGdsbShzbGVlcF9iaW5hcnkgfiBiZXZlcmFnZV9lbmVyZ3lfZHJpbmssIA0KICAgICAgICAgICAgICAgICAgICAgICBmYW1pbHkgPSBiaW5vbWlhbChsaW5rID0gImxvZ2l0IiksIA0KICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gZHQpDQpzdW1tYXJ5KHJlZ2xvZ2l0X2VuZXJneSkNCmBgYA0KDQpfKipOaOG6rW4geMOpdDoqKl8NCg0KKipQaMawxqFuZyB0csOsbmggaOG7k2kgcXV5OioqDQoNCiQkDQpcbG5cbGVmdChcZnJhY3tcaGF0e1xwaX19ezEgLSBcaGF0e1xwaX19XHJpZ2h0KSA9IC0wLjQ4MTUgKyAxLjA0OTUgXGNkb3QgXHRleHR7YmV2ZXJhZ2VfZW5lcmd5X2RyaW5rfQ0KJCQNCg0KfCBCaeG6v24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ow7NtIHNvIHPDoW5oICAgICAgICAgICAgICAgfCBI4buHIHPhu5EgKM6yKSB8IHAtdmFsdWUgICB8IE9kZHMgUmF0aW8gKGVezrIpIHwgRGnhu4VuIGdp4bqjaSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS18LS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfA0KfCBDw7MgdeG7kW5nIGVuZXJneSBkcmluayB8IEtow7RuZyB14buRbmcgICAgICAgICB8IDEuMDUgICAgICB8IDAuMDAwOTg4ICB8IDIuODYgICAgICAgICAgICAgfCBOZ8aw4budaSAqKmPDsyB14buRbmcgbsaw4bubYyB0xINuZyBs4buxYyoqIGPDsyBvZGRzIGLhu4sg4bqjbmggaMaw4bufbmcgZ2nhuqVjIG5n4bunIGNhbyBn4bqlcCBn4bqnbiAzIGzhuqduIHNvIHbhu5tpIG5nxrDhu51pICoqa2jDtG5nIHXhu5FuZyoqICgqY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqiopLiB8DQoNCkvhur90IHF14bqjIGjhu5NpIHF1eSBsb2dpc3RpYyBjaG8gdGjhuqV5IGJp4bq/biB0aMOzaSBxdWVuIHPhu60gZOG7pW5nIG7GsOG7m2MgdMSDbmcgbOG7sWMgKGJldmVyYWdlX2VuZXJneV9kcmluaykgY8OzIOG6o25oIGjGsOG7n25nIMSRw6FuZyBr4buDIMSR4bq/biBraOG6oyBuxINuZyBi4buLIOG6o25oIGjGsOG7n25nIGdp4bqlYyBuZ+G7py4gQ+G7pSB0aOG7gywgbmfGsOG7nWkgY8OzIHXhu5FuZyBuxrDhu5tjIHTEg25nIGzhu7FjIGPDsyBvZGRzIGLhu4sg4bqjbmggaMaw4bufbmcgZ2nhuqVjIG5n4bunIGNhbyBoxqFuIGtob+G6o25nIDIuODYgbOG6p24gc28gduG7m2kgbmfGsOG7nWkga2jDtG5nIHXhu5FuZyAuIEjhu4cgc+G7kSBo4buTaSBxdXkgbMOgIDEuMDUsIHbhu5tpIHAtdmFsdWUgPSAwLjAwMDk4OCwgbmjhu48gaMahbiBt4bupYyDDvSBuZ2jEqWEgNSUsIGNobyB0aOG6pXkgbeG7kWkgbGnDqm4gaOG7hyBuw6B5IGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ogbeG6oW5oLiDEkGnhu4F1IG7DoHkgY2hvIHRo4bqleSB2aeG7h2Mgc+G7rSBk4bulbmcgbsaw4bubYyB0xINuZyBs4buxYyBsw6AgbeG7mXQgeeG6v3UgdOG7kSBxdWFuIHRy4buNbmcgY+G6p24gxJHGsOG7o2MgbMawdSDDvSBraGkgbmdoacOqbiBj4bupdSBjw6FjIHbhuqVuIMSR4buBIGxpw6puIHF1YW4gxJHhur9uIGNo4bqldCBsxrDhu6NuZyBnaeG6pWMgbmfhu6cuDQoNCl8qKk5o4bqtbiB4w6l0OioqXw0KDQpLaG/huqNuZyB0aW4gY+G6rXkgY2hvIGPDoWMgaOG7hyBz4buRIGPhu6dhIG3DtCBow6xuaDoNCg0KYGBge3J9DQpjb25maW50KHJlZ2xvZ2l0X2VuZXJneSkNCmBgYA0KXyoqTmjhuq1uIHjDqXQ6KipfDQoNCktob+G6o25nIHRpbiBj4bqteSA5NSUgY2hvIGjhu4cgc+G7kSBo4buTaSBxdXkgY+G7p2EgKipiaeG6v24gYmV2ZXJhZ2VfZW5lcmd5X2RyaW5rKiogbMOgIHThu6sgMC40MzYyIMSR4bq/biAxLjY5MzAuIFbDrCB0b8OgbiBi4buZIGtob+G6o25nIG7DoHkgxJHhu4F1IGzhu5tuIGjGoW4gMCwgdGEga+G6v3QgbHXhuq1uIHLhurFuZyB2aeG7h2MgdeG7kW5nIG7GsOG7m2MgdMSDbmcgbOG7sWMgY8OzIOG6o25oIGjGsOG7n25nIGTGsMahbmcgdsOgIGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ogxJHhur9uIGto4bqjIG7Eg25nIGLhu4sg4bqjbmggaMaw4bufbmcgZ2nhuqVjIG5n4bunLiBOw7NpIGPDoWNoIGtow6FjLCBuaOG7r25nIG5nxrDhu51pIGPDsyB14buRbmcgbsaw4bubYyB0xINuZyBs4buxYyBjw7Mga2jhuqMgbsSDbmcgYuG7iyDhuqNuaCBoxrDhu59uZyDEkeG6v24gZ2nhuqVjIG5n4bunIGNhbyBoxqFuIHNvIHbhu5tpIG5nxrDhu51pIGtow7RuZyB14buRbmcuDQoNCiMjIyMgKioqNC43LjEuMy4gQmnhur9uIGJldmVyYWdlX3RlYSoqKg0KDQpgYGB7cn0NCiMgTcO0IGjDrG5oIGjhu5NpIHF1eSBsb2dpc3RpYyB24bubaSBiaeG6v24gYmV2ZXJhZ2VfdGVhDQpyZWdsb2dpdF90ZWEgPC0gZ2xtKHNsZWVwX2JpbmFyeSB+IGJldmVyYWdlX3RlYSwgDQogICAgICAgICAgICAgICAgICAgIGRhdGEgPSBkdCwgDQogICAgICAgICAgICAgICAgICAgIGZhbWlseSA9IGJpbm9taWFsKGxpbmsgPSAibG9naXQiKSkNCnN1bW1hcnkocmVnbG9naXRfdGVhKQ0KYGBgDQoNCl8qKk5o4bqtbiB4w6l0OioqXw0KDQpUYSBjw7MgaMOgbSBo4buTaSBxdXkgbG9naXN0aWM6DQoNCiQkDQpcbG5cbGVmdChcZnJhY3tcaGF0e1xwaX19ezEgLSBcaGF0e1xwaX19XHJpZ2h0KSA9IDAuMTkyOSAtIDEuNzc3MCBcY2RvdCBcdGV4dHtiZXZlcmFnZV90ZWF9DQokJA0KDQp8IEJp4bq/biAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOaMOzbSBzbyBzw6FuaCAgICAgICAgICAgfCBI4buHIHPhu5EgKM6yKSB8IHAtdmFsdWUgICB8IE9kZHMgUmF0aW8gKGVezrIpIHwgRGnhu4VuIGdp4bqjaSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwNCnwgQ8OzIHXhu5FuZyB0csOgICAgICAgIHwgS2jDtG5nIHXhu5FuZyB0csOgIHwgLTEuNzggICAgIHwgMi43OWUtMTUgIHwgMC4xNyAgICAgICAgICAgICB8IE5nxrDhu51pICoqY8OzIHXhu5FuZyB0csOgKiogY8OzIG9kZHMgYuG7iyDhuqNuaCBoxrDhu59uZyBnaeG6pWMgbmfhu6cgKip0aOG6pXAgaMahbiA4MyUqKiBzbyB24bubaSBuZ8aw4budaSAqKmtow7RuZyB14buRbmcgdHLDoCoqICgqY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqiBy4bqldCBt4bqhbmgqKS4gfA0KDQoqKkvhur90IGx14bqtbjoqKiANCg0KS+G6v3QgcXXhuqMgaOG7k2kgcXV5IGxvZ2lzdGljIGNobyB0aOG6pXkgYmnhur9uIHRow7NpIHF1ZW4gc+G7rSBk4bulbmcgdHLDoCAoYmV2ZXJhZ2VfdGVhKSBjw7Mg4bqjbmggaMaw4bufbmcgxJHDoW5nIGvhu4MgxJHhur9uIGto4bqjIG7Eg25nIGLhu4sg4bqjbmggaMaw4bufbmcgZ2nhuqVjIG5n4bunLiBD4bulIHRo4buDLCBuZ8aw4budaSBjw7MgdeG7kW5nIHRyw6AgY8OzIG9kZHMgYuG7iyDhuqNuaCBoxrDhu59uZyBnaeG6pWMgbmfhu6cgdGjhuqVwIGjGoW4ga2hv4bqjbmcgODMlIHNvIHbhu5tpIG5nxrDhu51pIGtow7RuZyB14buRbmcgdHLDoC4gSOG7hyBz4buRIGjhu5NpIHF1eSBsw6AgLTEuNzgsIHbhu5tpIHAtdmFsdWUg4omIIDIuNzllLTE1LCBuaOG7jyBoxqFuIHLhuqV0IG5oaeG7gXUgc28gduG7m2kgbeG7qWMgw70gbmdoxKlhIDUlLCBjaG8gdGjhuqV5IG3hu5FpIGxpw6puIGjhu4cgbsOgeSBjw7Mgw70gbmdoxKlhIHRo4buRbmcga8OqIHLhuqV0IG3huqFuaC4gxJBp4buBdSBuw6B5IGfhu6NpIMO9IHLhurFuZyB2aeG7h2Mgc+G7rSBk4bulbmcgdHLDoCBjw7MgdGjhu4MgbMOgIG3hu5l0IHnhur91IHThu5EgYuG6o28gduG7hywgZ2nDunAgZ2nhuqNtIG5ndXkgY8ahIGLhu4sg4bqjbmggaMaw4bufbmcgZ2nhuqVjIG5n4bunLg0KDQpLaG/huqNuZyB0aW4gY+G6rXkgY2hvIGPDoWMgaOG7hyBz4buRIGPhu6dhIG3DtCBow6xuaDoNCg0KYGBge3J9DQpjb25maW50KHJlZ2xvZ2l0X3RlYSkNCmBgYA0KXyoqTmjhuq1uIHjDqXQ6KipfDQoNCktob+G6o25nIHRpbiBj4bqteSA5NSUgY2hvIGjhu4cgc+G7kSBo4buTaSBxdXkgY+G7p2EgYmnhur9uIGJldmVyYWdlX3RlYSBsw6AgdOG7qyAtMi4yMzExIMSR4bq/biAtMS4zNDcyLiBWw6wgdG/DoG4gYuG7mSBraG/huqNuZyBuw6B5IMSR4buBdSBuaOG7jyBoxqFuIDAsIHRhIGvhur90IGx14bqtbiBy4bqxbmcgdmnhu4djIHXhu5FuZyB0csOgIGPDsyDhuqNuaCBoxrDhu59uZyDDom0gdsOgIGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ogxJHhur9uIGto4bqjIG7Eg25nIGLhu4sg4bqjbmggaMaw4bufbmcgZ2nhuqVjIG5n4bunLiBOw7NpIGPDoWNoIGtow6FjLCBuaOG7r25nIG5nxrDhu51pIGPDsyB14buRbmcgdHLDoCBjw7Mga2jhuqMgbsSDbmcgYuG7iyDhuqNuaCBoxrDhu59uZyDEkeG6v24gZ2nhuqVjIG5n4bunIHRo4bqlcCBoxqFuIHNvIHbhu5tpIG5nxrDhu51pIGtow7RuZyB14buRbmcuDQoNCiMjIyMgKioqNC43LjEuNC4gQmnhur9uIHRpbWVfb2ZfZGF5X2V2ZW5pbmcqKioNCg0KYGBge3J9DQojIE3DtCBow6xuaCBo4buTaSBxdXkgbG9naXN0aWMgduG7m2kgYmnhur9uIHRpbWVfb2ZfZGF5X2V2ZW5pbmcNCnJlZ2xvZ2l0X2V2ZW5pbmcgPC0gZ2xtKHNsZWVwX2JpbmFyeSB+IHRpbWVfb2ZfZGF5X2V2ZW5pbmcsIA0KICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGR0LCANCiAgICAgICAgICAgICAgICAgICAgICAgIGZhbWlseSA9IGJpbm9taWFsKGxpbmsgPSAibG9naXQiKSkNCnN1bW1hcnkocmVnbG9naXRfZXZlbmluZykNCmBgYA0KDQpfKipOaOG6rW4geMOpdDoqKl8NCg0KVGEgY8OzIGjDoG0gaOG7k2kgcXV5Og0KDQokJA0KXGxuXGxlZnQoXGZyYWN7XGhhdFxwaX17MSAtIFxoYXRccGl9XHJpZ2h0KSA9IC0xLjg0NTggKyAyLjcyOTcgXGNkb3QgXHRleHR7dGltZV9vZl9kYXlfZXZlbmluZ30NCiQkDQoNCnwgQmnhur9uICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ow7NtIHNvIHPDoW5oICAgICAgICAgICB8IEjhu4cgc+G7kSAozrIpIHwgcC12YWx1ZSAgfCBPZGRzIFJhdGlvIChlXs6yKSB8IERp4buFbiBnaeG6o2kgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLXwtLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwNCnwgQ8OzIHXhu5FuZyBideG7lWkgdOG7kWkgfCBLaMO0bmcgdeG7kW5nIGJ14buVaSB04buRaSB8IDIuNzMgICAgICB8IDwgMmUtMTYgIHwgMTUuMzMgICAgICAgICAgICB8IE5nxrDhu51pICoqY8OzIHXhu5FuZyBideG7lWkgdOG7kWkqKiBjw7Mgb2RkcyBi4buLIOG6o25oIGjGsOG7n25nIGdp4bqlYyBuZ+G7pyBjYW8gaMahbiBraG/huqNuZyAqKjE1IGzhuqduKiogc28gduG7m2kgbmfGsOG7nWkgKipraMO0bmcgdeG7kW5nIGJ14buVaSB04buRaSoqICgqY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqiBy4bqldCBt4bqhbmgqKS4gfA0KDQpfKipL4bq/dCBsdeG6rW46KipfDQoNCkvhur90IHF14bqjIGjhu5NpIHF1eSBsb2dpc3RpYyBjaG8gdGjhuqV5IHRo4budaSDEkWnhu4NtIHXhu5FuZyBideG7lWkgdOG7kWkgY8OzIOG6o25oIGjGsOG7n25nIHLhuqV0IMSRw6FuZyBr4buDIMSR4bq/biBraOG6oyBuxINuZyBi4buLIOG6o25oIGjGsOG7n25nIGdp4bqlYyBuZ+G7py4gQ+G7pSB0aOG7gywgbmfGsOG7nWkgY8OzIHXhu5FuZyB2w6BvIGJ14buVaSB04buRaSBjw7Mgb2RkcyBi4buLIOG6o25oIGjGsOG7n25nIGdp4bqlYyBuZ+G7pyBjYW8gaMahbiBraG/huqNuZyAxNS4zMyBs4bqnbiBzbyB24bubaSBuZ8aw4budaSBraMO0bmcgdeG7kW5nIGJ14buVaSB04buRaS4gSOG7hyBz4buRIGjhu5NpIHF1eSBsw6AgMi43MywgduG7m2kgcC12YWx1ZSA8IDJlLTE2LCBuaOG7jyBoxqFuIHLhuqV0IG5oaeG7gXUgc28gduG7m2kgbeG7qWMgw70gbmdoxKlhIDUlLCBjaG8gdGjhuqV5IG3hu5FpIGxpw6puIGjhu4cgbsOgeSBjw7Mgw70gbmdoxKlhIHRo4buRbmcga8OqIHLhuqV0IG3huqFuaC4gxJBp4buBdSBuw6B5IG5o4bqlbiBt4bqhbmggcuG6sW5nIHZp4buHYyB0acOqdSB0aOG7pSBjw6FjIGxv4bqhaSB0aOG7qWMgdeG7kW5nIHbDoG8gYnXhu5VpIHThu5FpIGzDoCB54bq/dSB04buRIGPDsyB0w6FjIMSR4buZbmcgbeG6oW5oIMSR4bq/biBjaOG6pXQgbMaw4bujbmcgZ2nhuqVjIG5n4bunLCBj4bqnbiDEkcaw4bujYyB4ZW0geMOpdCBr4bu5IHRyb25nIGPDoWMgbmdoacOqbiBj4bupdSBsacOqbiBxdWFuIMSR4bq/biBz4bupYyBraOG7j2UgZ2nhuqVjIG5n4bunLg0KDQpLaG/huqNuZyB0aW4gY+G6rXkgY2hvIGPDoWMgaOG7hyBz4buRIGPhu6dhIG3DtCBow6xuaDoNCg0KYGBge3J9DQpjb25maW50KHJlZ2xvZ2l0X2V2ZW5pbmcpDQpgYGANCl8qKk5o4bqtbiB4w6l0OioqXw0KDQpLaG/huqNuZyB0aW4gY+G6rXkgOTUlIGNobyBo4buHIHPhu5EgaOG7k2kgcXV5IGPhu6dhICoqYmnhur9uIHRpbWVfb2ZfZGF5X2V2ZW5pbmcqKiBu4bqxbSB0cm9uZyBraG/huqNuZyB04burIDIuMjkwNiDEkeG6v24gMy4xOTE1LiBWw6wgdG/DoG4gYuG7mSBraG/huqNuZyB0aW4gY+G6rXkgbsOgeSBs4bubbiBoxqFuIDAsIHRhIGvhur90IGx14bqtbiBy4bqxbmcgdmnhu4djIHXhu5FuZyDEkeG7kyB14buRbmcgdsOgbyBideG7lWkgdOG7kWkgY8OzIOG6o25oIGjGsOG7n25nIGTGsMahbmcgdsOgIGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ogxJHhur9uIGto4bqjIG7Eg25nIGLhu4sg4bqjbmggaMaw4bufbmcgZ2nhuqVjIG5n4bunLiBD4bulIHRo4buDLCBuaOG7r25nIG5nxrDhu51pIHXhu5FuZyB2w6BvIGJ14buVaSB04buRaSBjw7MgeMOhYyBzdeG6pXQgYuG7iyDhuqNuaCBoxrDhu59uZyBnaeG6pWMgbmfhu6cgY2FvIGjGoW4gcsO1IHLhu4d0IHNvIHbhu5tpIG5o4buvbmcgbmfGsOG7nWkga2jDtG5nIHXhu5FuZy4NCg0KIyMjICoqNC43LjIuIE3DtCBow6xuaCBQcm9iaXQqKg0KDQokJA0KSF8wOiBcdGV4dHtCaeG6v24ga2jDtG5nIGPDsyDhuqNuaCBoxrDhu59uZyDEkeG6v24geMOhYyBzdeG6pXQgZ2nhuqVjIG5n4bunIGLhu4sg4bqjbmggaMaw4bufbmd9DQokJA0KDQokJA0KSF8xOiBcdGV4dHtCaeG6v24gY8OzIOG6o25oIGjGsOG7n25nIMSR4bq/biB4w6FjIHN14bqldCBnaeG6pWMgbmfhu6cgYuG7iyDhuqNuaCBoxrDhu59uZ30NCiQkDQoNClTDoWMgZ2nhuqMgdGjhu7FjIGhp4buHbiBo4buTaSBxdXkgUHJvYml0IMSRxqFuIGJp4bq/biwgbeG7l2kgbcO0IGjDrG5oIGNo4buJIGJhbyBn4buTbSBt4buZdCBiaeG6v24gZ2nhuqNpIHRow61jaCBuaOG6sW0gcGjDom4gdMOtY2ggcmnDqm5nIGzhursg4bqjbmggaMaw4bufbmcgY+G7p2EgdOG7q25nIHnhur91IHThu5EgxJHhur9uIGto4bqjIG7Eg25nIOG6o25oIGjGsOG7n25nIMSR4bq/biBnaeG6pWMgbmfhu6cuIA0KDQojIyMjICoqKjQuNy4yLjEuIEJp4bq/biBiZXZlcmFnZV9jb2ZmZWUqKioNCg0KYGBge3J9DQojIE3DtCBow6xuaCBQcm9iaXQgduG7m2kgYmnhur9uIGJldmVyYWdlX2NvZmZlZQ0KcHJvYml0X2NvZmZlZSA8LSBnbG0oc2xlZXBfYmluYXJ5IH4gYmV2ZXJhZ2VfY29mZmVlLCBkYXRhID0gZHQsIGZhbWlseSA9IGJpbm9taWFsKGxpbmsgPSAicHJvYml0IikpDQpzdW1tYXJ5KHByb2JpdF9jb2ZmZWUpDQoNCmBgYA0KXyoqTmjhuq1uIHjDqXQ6KipfDQoNClRhIGPDsyBow6BtIFByb2JpdCDGsOG7m2MgbMaw4bujbmc6DQoNCiQkDQpcUGhpXnstMX0oXGhhdHtccGl9KSA9IC0wLjYzMTU4ICsgMC43MTIwNyBcY2RvdCBcdGV4dHtiZXZlcmFnZV9jb2ZmZWV9DQokJA0KDQpL4bq/dCBxdeG6oyBo4buTaSBxdXkgUHJvYml0IGNobyB0aOG6pXkgdGjDs2kgcXVlbiB14buRbmcgY8OgIHBow6ogY8OzIOG6o25oIGjGsOG7n25nIMSRw6FuZyBr4buDIMSR4bq/biB4w6FjIHN14bqldCBi4buLIOG6o25oIGjGsOG7n25nIGdp4bqlYyBuZ+G7py4gSOG7hyBz4buRIMaw4bubYyBsxrDhu6NuZyBjaG8gYmnhur9uICJDw7MgdeG7kW5nIGPDoCBwaMOqIiBsw6AgMC43MTIgduG7m2kgcC12YWx1ZSA9IDEuMTRlLTA5LCBjaG8gdGjhuqV5IG3hu5FpIHF1YW4gaOG7hyBuw6B5IGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ogcuG6pXQgbeG6oW5oLiDEkGnhu4F1IG7DoHkgxJHhu5NuZyBuZ2jEqWEgduG7m2kgdmnhu4djIG5o4buvbmcgbmfGsOG7nWkgY8OzIHXhu5FuZyBjw6AgcGjDqiBjw7MgeMOhYyBzdeG6pXQgYuG7iyDhuqNuaCBoxrDhu59uZyBnaeG6pWMgbmfhu6cgY2FvIGjGoW4gc28gduG7m2kgbmjhu69uZyBuZ8aw4budaSBraMO0bmcgdeG7kW5nIGPDoCBwaMOqLiBL4bq/dCBxdeG6oyBuw6B5IGPhu6duZyBj4buRIGdp4bqjIHRodXnhur90IHLhurFuZyBjYWZmZWluZSB0cm9uZyBjw6AgcGjDqiBsw6AgbeG7mXQgeeG6v3UgdOG7kSDEkcOhbmcgY2jDuiDDvSBraGkgeGVtIHjDqXQgxJHhur9uIGNo4bqldCBsxrDhu6NuZyBnaeG6pWMgbmfhu6cuDQoNCktob+G6o25nIHRpbiBj4bqteSBjaG8gY8OhYyBo4buHIHPhu5EgY+G7p2EgbcO0IGjDrG5oOg0KDQpgYGB7cn0NCmNvbmZpbnQocHJvYml0X2NvZmZlZSkNCmBgYA0KXyoqTmjhuq1uIHjDqXQ6KipfDQoNClbhu5tpIMSR4buZIHRpbiBj4bqteSA5NSUsIGjhu4cgc+G7kSBJbnRlcmNlcHQgY8OzIGtob+G6o25nIHRpbiBj4bqteSB04burIC0wLjgwNTYgxJHhur9uIC0wLjQ2MDYsIGNobyB0aOG6pXkgeMOhYyBzdeG6pXQgYuG7iyDhuqNuaCBoxrDhu59uZyBnaeG6pWMgbmfhu6cg4bufIG5ow7NtIGtow7RuZyB14buRbmcgY8OgIHBow6ogbMOgIHTGsMahbmcgxJHhu5FpIHRo4bqlcC4NCg0KSOG7hyBz4buRIGPhu6dhIGJp4bq/biBiZXZlcmFnZV9jb2ZmZWUgbuG6sW0gdHJvbmcga2hv4bqjbmcgdOG7qyAwLjQ4MzcgxJHhur9uIDAuOTQyMywgxJHhu4F1IGTGsMahbmcgdsOgIGtow7RuZyBjaOG7qWEgMC4gxJBp4buBdSBuw6B5IGNobyB0aOG6pXkgdmnhu4djIHXhu5FuZyBjw6AgcGjDqiBsw6BtIHTEg25nIHjDoWMgc3XhuqV0IGLhu4sg4bqjbmggaMaw4bufbmcgxJHhur9uIGdp4bqlYyBuZ+G7pyBt4buZdCBjw6FjaCBjw7Mgw70gbmdoxKlhIHRo4buRbmcga8OqLg0KDQojIyMjICoqKjQuNy4yLjIuIEJp4bq/biBiZXZlcmFnZV9lbmVyZ3lfZHJpbmsqKioNCg0KYGBge3J9DQpwcm9iaXRfZW5lcmd5IDwtIGdsbShzbGVlcF9iaW5hcnkgfiBiZXZlcmFnZV9lbmVyZ3lfZHJpbmssIA0KICAgICAgICAgICAgICAgICAgICAgZmFtaWx5ID0gYmlub21pYWwobGluayA9ICJwcm9iaXQiKSwgZGF0YSA9IGR0KQ0Kc3VtbWFyeShwcm9iaXRfZW5lcmd5KQ0KYGBgDQpfKipOaOG6rW4geMOpdDoqKl8NCg0KVGEgY8OzIGjDoG0gaOG7k2kgcXV5IFByb2JpdDoNCg0KJCQNClxQaGleey0xfShcaGF0e1xwaX0pID0gLTAuMzAwNTAgKyAwLjY1NDQxIFxjZG90IFx0ZXh0e2JldmVyYWdlX2VuZXJneV9kcmlua30NCiQkDQoNCkvhur90IHF14bqjIGjhu5NpIHF1eSBQcm9iaXQgY2hvIHRo4bqleSB2aeG7h2MgdeG7kW5nIG7GsOG7m2MgdMSDbmcgbOG7sWMgKGVuZXJneSBkcmluaykgY8OzIOG6o25oIGjGsOG7n25nIMSRw6FuZyBr4buDIMSR4bq/biB4w6FjIHN14bqldCBi4buLIOG6o25oIGjGsOG7n25nIGdp4bqlYyBuZ+G7py4gQ+G7pSB0aOG7gywgaOG7hyBz4buRIMaw4bubYyBsxrDhu6NuZyBjaG8gYmnhur9uICJDw7MgdeG7kW5nIGVuZXJneSBkcmluayIgbMOgIDAuNjU0IHbhu5tpIHAtdmFsdWUgPSAwLjAwMDg2MSwgbmjhu48gaMahbiBt4bupYyDDvSBuZ2jEqWEgMSUsIGNobyB0aOG6pXkgbeG7kWkgcXVhbiBo4buHIG7DoHkgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqiBt4bqhbmguIMSQaeG7gXUgbsOgeSBjaG8gdGjhuqV5IG5o4buvbmcgbmfGsOG7nWkgY8OzIHRow7NpIHF1ZW4gc+G7rSBk4bulbmcgbsaw4bubYyB0xINuZyBs4buxYyBjw7MgeMOhYyBzdeG6pXQgYuG7iyDhuqNuaCBoxrDhu59uZyBnaeG6pWMgbmfhu6cgY2FvIGjGoW4gc28gduG7m2kgbmjhu69uZyBuZ8aw4budaSBraMO0bmcgc+G7rSBk4bulbmcuIEvhur90IHF14bqjIG7DoHkgZ+G7o2kgw70gcuG6sW5nIG7GsOG7m2MgdMSDbmcgbOG7sWMgbMOgIG3hu5l0IHnhur91IHThu5EgY+G6p24gxJHGsOG7o2MgbMawdSDDvSB0cm9uZyBjw6FjIG5naGnDqm4gY+G7qXUgduG7gSBjaOG6pXQgbMaw4bujbmcgZ2nhuqVjIG5n4bunLg0KDQpLaG/huqNuZyB0aW4gY+G6rXkgY2hvIGPDoWMgaOG7hyBz4buRIGPhu6dhIG3DtCBow6xuaDoNCg0KYGBge3J9DQpjb25maW50KHByb2JpdF9lbmVyZ3kgKQ0KYGBgDQoNCl8qKk5o4bqtbiB4w6l0OioqXw0KDQpW4bubaSDEkeG7mSB0aW4gY+G6rXkgOTUlLCBnacOhIHRy4buLIHRo4buxYyBj4bunYSAqKkludGVyY2VwdCoqIG7hurFtIHRyb25nIGtob+G6o25nIHThu6sgKiotMC40MTgyKiogxJHhur9uICoqLTAuMTgzNSoqLCB0cm9uZyBraGkgxJHDsyBnacOhIHRy4buLIHRo4buxYyBj4bunYSAqKnRoYW0gc+G7kSBiZXZlcmFnZV9lbmVyZ3lfZHJpbmsqKiAo4bupbmcgduG7m2kgbmjDs20gIkPDsyB14buRbmcgZW5lcmd5IGRyaW5rIikgbuG6sW0gdHJvbmcga2hv4bqjbmcgdOG7qyAqKjAuMjcyNSoqIMSR4bq/biAqKjEuMDQzMSoqLg0KDQpLaG/huqNuZyB0aW4gY+G6rXkgY+G7p2EgdGhhbSBz4buRICoqYmV2ZXJhZ2VfZW5lcmd5X2RyaW5rKiogaG/DoG4gdG/DoG4gbuG6sW0gcGjDrWEgZMawxqFuZywgY2hvIHRo4bqleSAqKmJp4bq/biBuw6B5IGPDsyDhuqNuaCBoxrDhu59uZyDEkcOhbmcga+G7gyB2w6AgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqioqIHRyb25nIG3DtCBow6xuaC4gTsOzaSBjw6FjaCBraMOhYywgdmnhu4djICoqdeG7kW5nIG7GsOG7m2MgdMSDbmcgbOG7sWMgY8OzIGto4bqjIG7Eg25nIGzDoG0gdMSDbmcgeMOhYyBzdeG6pXQgYuG7iyDhuqNuaCBoxrDhu59uZyDEkeG6v24gZ2nhuqVjIG5n4bunKiogbeG7mXQgY8OhY2ggY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqiwgc28gduG7m2kgbmjDs20ga2jDtG5nIHXhu5FuZy4NCg0KIyMjIyAqKio0LjcuMi4zLiBCaeG6v24gYmV2ZXJhZ2VfdGVhKioqDQoNCmBgYHtyfQ0KcHJvYml0X3RlYSA8LSBnbG0oc2xlZXBfYmluYXJ5IH4gYmV2ZXJhZ2VfdGVhLCANCiAgICAgICAgICAgICAgICAgIGZhbWlseSA9IGJpbm9taWFsKGxpbmsgPSAicHJvYml0IiksIGRhdGEgPSBkdCkNCnN1bW1hcnkocHJvYml0X3RlYSkNCmBgYA0KXyoqTmjhuq1uIHjDqXQ6KipfDQoNClRhIGPDsyBow6BtIGjhu5NpIHF1eSBQcm9iaXQ6DQoNCiQkDQpcUGhpXnstMX0oXGhhdHtccGl9KSA9IDAuMTIwODAgLSAxLjA3NDEzIFxjZG90IFx0ZXh0e2JldmVyYWdlX3RlYX0NCiQkDQoNCkvhur90IHF14bqjIGjhu5NpIHF1eSBQcm9iaXQgY2hvIHRo4bqleSB2aeG7h2MgdeG7kW5nIHRyw6AgY8OzIOG6o25oIGjGsOG7n25nIMSRw6FuZyBr4buDIMSR4bq/biB4w6FjIHN14bqldCBi4buLIOG6o25oIGjGsOG7n25nIGdp4bqlYyBuZ+G7py4gQmnhur9uIOKAnEPDsyB14buRbmcgdHLDoOKAnSBjw7MgaOG7hyBz4buRIMaw4bubYyBsxrDhu6NuZyBsw6AgLTEuMDc0LCB24bubaSBwLXZhbHVlIDwgMmUtMTYsIGNobyB0aOG6pXkgbeG7kWkgbGnDqm4gaOG7hyDDom0gbsOgeSBjw7Mgw70gbmdoxKlhIHRo4buRbmcga8OqIHLhuqV0IG3huqFuaC4gTmdoxKlhIGzDoCwgbmjhu69uZyBuZ8aw4budaSBjw7MgdGjDs2kgcXVlbiB14buRbmcgdHLDoCBjw7MgeMOhYyBzdeG6pXQgYuG7iyDhuqNuaCBoxrDhu59uZyBnaeG6pWMgbmfhu6cgdGjhuqVwIGjGoW4gc28gduG7m2kgbmfGsOG7nWkga2jDtG5nIHXhu5FuZy4gxJBp4buBdSBuw6B5IGfhu6NpIMO9IHLhurFuZyB14buRbmcgdHLDoCBjw7MgdGjhu4MgY8OzIHTDoWMgxJHhu5luZyB0w61jaCBj4buxYyDEkeG6v24gZ2nhuqVjIG5n4bunLCBob+G6t2Mgw610IG5o4bqldCBsw6Aga2jDtG5nIGfDonkg4bqjbmggaMaw4bufbmcgdGnDqnUgY+G7sWMgbmjGsCBt4buZdCBz4buRIGxv4bqhaSB0aOG7qWMgdeG7kW5nIGNo4bupYSBjYWZmZWluZSBraMOhYy4NCg0KS2hv4bqjbmcgdGluIGPhuq15IGNobyBjw6FjIGjhu4cgc+G7kSBj4bunYSBtw7QgaMOsbmg6DQoNCmBgYHtyfQ0KY29uZmludChwcm9iaXRfdGVhKQ0KYGBgDQoNCl8qKk5o4bqtbiB4w6l0OioqXw0KDQpW4bubaSDEkeG7mSB0aW4gY+G6rXkgOTUlLCBraG/huqNuZyB0aW4gY+G6rXkgY2hvIGjhu4cgc+G7kSBjaOG6t24gKEludGVyY2VwdCkgbuG6sW0gdHJvbmcga2hv4bqjbmcgdOG7qyAtMC4wMTg1IMSR4bq/biAwLjI2MDQsIG5naMSpYSBsw6Aga2jDtG5nIGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ogdsOsIGtob+G6o25nIG7DoHkgY2jhu6lhIDAuDQoNClR1eSBuaGnDqm4sIGjhu4cgc+G7kSBj4bunYSBiaeG6v24gYmV2ZXJhZ2VfdGVhIG7hurFtIHRyb25nIGtob+G6o25nIHThu6sgLTEuMzMxIMSR4bq/biAtMC44MjMsIGtow7RuZyBjaOG7qWEgMCwgY2hvIHRo4bqleSB2aeG7h2MgdeG7kW5nIHRyw6AgY8OzIOG6o25oIGjGsOG7n25nIHRpw6p1IGPhu7FjIMSRw6FuZyBr4buDIMSR4bq/biB4w6FjIHN14bqldCBi4buLIOG6o25oIGjGsOG7n25nIGdp4bqlYyBuZ+G7pyB0cm9uZyBtw7QgaMOsbmggUHJvYml0LCB2w6Ag4bqjbmggaMaw4bufbmcgbsOgeSBsw6AgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqiDhu58gbeG7qWMgNSUuDQoNCiMjIyMgKioqNC43LjIuNC4gQmnhur9uIHRpbWVfb2ZfZGF5X2V2ZW5pbmcqKioNCg0KYGBge3J9DQojIE3DtCBow6xuaCBQcm9iaXQgduG7m2kgYmnhur9uIHRpbWVfb2ZfZGF5X2V2ZW5pbmcNCnByb2JpdF9ldmVuaW5nIDwtIGdsbShzbGVlcF9iaW5hcnkgfiB0aW1lX29mX2RheV9ldmVuaW5nLCANCiAgICAgICAgICAgICAgICAgICAgICBmYW1pbHkgPSBiaW5vbWlhbChsaW5rID0gInByb2JpdCIpLCANCiAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gZHQpDQpzdW1tYXJ5KHByb2JpdF9ldmVuaW5nKQ0KYGBgDQpfKipOaOG6rW4geMOpdDoqKl8NCg0KVGEgY8OzIHBoxrDGoW5nIHRyw6xuaCBo4buTaSBxdXkgUHJvYml0Og0KDQokJA0KXFBoaV57LTF9KFxoYXR7XHBpfSkgPSAtMS4wOTY4ICsgMS42NDMzIFxjZG90IFx0ZXh0e3RpbWVfb2ZfZGF5X2V2ZW5pbmd9DQokJA0KDQpL4bq/dCBxdeG6oyBo4buTaSBxdXkgUHJvYml0IGNobyB0aOG6pXkgdGjhu51pIMSRaeG7g20gdGnDqnUgdGjhu6UgxJHhu5MgdeG7kW5nIHbDoG8gYnXhu5VpIHThu5FpIGPDsyDhuqNuaCBoxrDhu59uZyBy4bqldCByw7UgcuG7h3QgxJHhur9uIHjDoWMgc3XhuqV0IGLhu4sg4bqjbmggaMaw4bufbmcgZ2nhuqVjIG5n4bunLiBD4bulIHRo4buDLCBiaeG6v24g4oCcQ8OzIHXhu5FuZyBideG7lWkgdOG7kWnigJ0gY8OzIGjhu4cgc+G7kSDGsOG7m2MgbMaw4bujbmcgbMOgIDEuNjQzLCB24bubaSBwLXZhbHVlIDwgMmUtMTYsIGNobyB0aOG6pXkgxJHDonkgbMOgIG3hu5l0IHnhur91IHThu5EgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqiBj4buxYyBr4buzIG3huqFuaC4gxJBp4buBdSBuw6B5IGNobyB0aOG6pXkgbmjhu69uZyBuZ8aw4budaSB14buRbmcgxJHhu5MgdeG7kW5nIHbDoG8gYnXhu5VpIHThu5FpIGPDsyB4w6FjIHN14bqldCBi4buLIOG6o25oIGjGsOG7n25nIGdp4bqlYyBuZ+G7pyBjYW8gaMahbiDEkcOhbmcga+G7gyBzbyB24bubaSBuaOG7r25nIG5nxrDhu51pIGtow7RuZyB14buRbmcgdsOgbyB0aOG7nWkgxJFp4buDbSBuw6B5LiBOaMawIHbhuq15LCB0aOG7nWkgxJFp4buDbSB0acOqdSB0aOG7pSB0aOG7qWMgdeG7kW5nIOKAkyDEkeG6t2MgYmnhu4d0IGzDoCBideG7lWkgdOG7kWkg4oCTIGzDoCB54bq/dSB04buRIHF1YW4gdHLhu41uZyBj4bqnbiBsxrB1IMO9IGtoaSBuZ2hpw6puIGPhu6l1IGPDoWMgduG6pW4gxJHhu4EgbGnDqm4gcXVhbiDEkeG6v24gY2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7py4NCg0KS2hv4bqjbmcgdGluIGPhuq15IGNobyBjw6FjIGjhu4cgc+G7kSBj4bunYSBtw7QgaMOsbmg6DQoNCmBgYHtyfQ0KY29uZmludChwcm9iaXRfZXZlbmluZykNCmBgYA0KXyoqTmjhuq1uIHjDqXQ6KipfDQoNClbhu5tpIMSR4buZIHRpbiBj4bqteSA5NSU6DQoNCkdpw6EgdHLhu4sgdGjhu7FjIGPhu6dhIEludGVyY2VwdCBu4bqxbSB0cm9uZyBraG/huqNuZyB04burIC0xLjI5IMSR4bq/biAtMC45MSwgY2hvIHRo4bqleSDhu58gbmjDs20ga2jDtG5nIHXhu5FuZyB2w6BvIGJ14buVaSB04buRaSwgeMOhYyBzdeG6pXQgYuG7iyDhuqNuaCBoxrDhu59uZyDEkeG6v24gZ2nhuqVjIG5n4bunIGzDoCB0xrDGoW5nIMSR4buRaSB0aOG6pXAuDQoNCkjhu4cgc+G7kSBj4bunYSBiaeG6v24gdGltZV9vZl9kYXlfZXZlbmluZyBu4bqxbSB0cm9uZyBraG/huqNuZyB04burIDEuMzkgxJHhur9uIDEuOTAsIMSRaeG7gXUgbsOgeSBraOG6s25nIMSR4buLbmggcuG6sW5nIHZp4buHYyB14buRbmcgdsOgbyBideG7lWkgdOG7kWkgbMOgbSB0xINuZyDEkcOhbmcga+G7gyB4w6FjIHN14bqldCBi4buLIOG6o25oIGjGsOG7n25nIMSR4bq/biBnaeG6pWMgbmfhu6cuDQoNCiMjIyAqKjQuNy4zLiBNw7QgaMOsbmggQ2xvZ2xvZyoqDQoNCiMjIyMgKioqNC43LjMuMS4gQmnhur9uIGJldmVyYWdlX2NvZmZlZSoqKg0KDQpgYGB7cn0NCiMgTcO0IGjDrG5oIENsb2dsb2cgduG7m2kgYmnhur9uIGJldmVyYWdlX2NvZmZlZQ0KY2xvZ2xvZ19jb2ZmZWUgPC0gZ2xtKHNsZWVwX2JpbmFyeSB+IGJldmVyYWdlX2NvZmZlZSwgZGF0YSA9IGR0LCBmYW1pbHkgPSBiaW5vbWlhbChsaW5rID0gImNsb2dsb2ciKSkNCnN1bW1hcnkoY2xvZ2xvZ19jb2ZmZWUpDQpgYGANCg0KROG7sWEgdHLDqm4ga+G6v3QgcXXhuqMgbcO0IGjDrG5oIGjhu5NpIHF1eSB24bubaSBow6BtIGxpw6puIGvhur90IGNsb2dsb2csIHRhIGPDsyBwaMawxqFuZyB0csOsbmg6DQoNCiQkDQpcbG9nXGxlZnQoLVxsb2dcbGVmdCgxIC0gUChcdGV4dHtzbGVlcH0gPSAxKVxyaWdodClccmlnaHQpID0gLTEuMTgzMiArIDAuOTA4MCBcY2RvdCBcdGV4dHtiZXZlcmFnZV9jb2ZmZWV9DQokJA0KXyoqTmjhuq1uIHjDqXQ6KipfDQoNCkvhur90IHF14bqjIGjhu5NpIHF1eSBDbG9nbG9nIMSRxqFuIGJp4bq/biBjaG8gdGjhuqV5IHZp4buHYyB14buRbmcgY8OgIHBow6ogY8OzIOG6o25oIGjGsOG7n25nIGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ogxJHhur9uIGto4bqjIG7Eg25nIGPDsyBnaeG6pWMgbmfhu6csIHbhu5tpIGdpw6EgdHLhu4sgcCA9IDMuNjZlLTA5LCBuaOG7jyBoxqFuIG3hu6ljIMO9IG5naMSpYSA1JS4gQ+G7pSB0aOG7gywgaOG7hyBz4buRIMaw4bubYyBsxrDhu6NuZyBsw6AgMC45MDgsIGNobyB0aOG6pXkgbmjDs20gbmfGsOG7nWkgY8OzIHXhu5FuZyBjw6AgcGjDqiBjw7MgZ2nDoSB0cuG7iyBjbG9nbG9nIGNhbyBoxqFuLCDEkeG7k25nIG5naMSpYSB24bubaSB2aeG7h2MgeMOhYyBzdeG6pXQgY8OzIGdp4bqlYyBuZ+G7pyBjxaluZyBjYW8gaMahbiBzbyB24bubaSBuaMOzbSBraMO0bmcgdeG7kW5nIGPDoCBwaMOqLiDEkGnhu4F1IG7DoHkgY2hvIHRo4bqleSwgdGhlbyBtw7QgaMOsbmggQ2xvZ2xvZywgdmnhu4djIHRpw6p1IHRo4bulIGPDoCBwaMOqIGPDsyBt4buRaSBsacOqbiBo4buHIMSRw6FuZyBr4buDIHbhu5tpIGto4bqjIG7Eg25nIGPDsyBnaeG6pWMgbmfhu6csIHbDoCBt4buRaSBsacOqbiBo4buHIG7DoHkgbWFuZyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ogcsO1IHLhu4d0Lg0KDQojIyMjICoqKjQuNy4zLjIuIEJp4bq/biBiZXZlcmFnZV9lbmVyZ3lfZHJpbmsqKioNCg0KYGBge3J9DQojIE3DtCBow6xuaCBDbG9nbG9nIHbhu5tpIGJp4bq/biBiZXZlcmFnZV9lbmVyZ3lfZHJpbmsNCmNsb2dsb2dfZW5lcmd5IDwtIGdsbShzbGVlcF9iaW5hcnkgfiBiZXZlcmFnZV9lbmVyZ3lfZHJpbmssIGRhdGEgPSBkdCwgZmFtaWx5ID0gYmlub21pYWwobGluayA9ICJjbG9nbG9nIikpDQpzdW1tYXJ5KGNsb2dsb2dfZW5lcmd5KQ0KYGBgDQoNCkThu7FhIHRyw6puIGvhur90IHF14bqjIG3DtCBow6xuaCBo4buTaSBxdXkgduG7m2kgaMOgbSBsacOqbiBr4bq/dCAqKmNsb2dsb2cqKiwgdGEgY8OzIHBoxrDGoW5nIHRyw6xuaCBo4buTaSBxdXkgbmjGsCBzYXU6DQoNCiQkDQpcbG9nXGxlZnQoLVxsb2dcbGVmdCgxIC0gUChcdGV4dHtzbGVlcH0gPSAxKVxyaWdodClccmlnaHQpID0gLTAuNzMxNjcgKyAwLjc0ODQ3IFxjZG90IFx0ZXh0e2JldmVyYWdlX2VuZXJneV9kcmlua30NCiQkDQpfKipOaOG6rW4geMOpdDoqKl8NCg0KS+G6v3QgcXXhuqMgaOG7k2kgcXV5IENsb2dsb2cgxJHGoW4gYmnhur9uIGNobyB0aOG6pXkgdmnhu4djIHXhu5FuZyBuxrDhu5tjIHTEg25nIGzhu7FjIGPDsyDhuqNuaCBoxrDhu59uZyBjw7Mgw70gbmdoxKlhIHRo4buRbmcga8OqIMSR4bq/biBraOG6oyBuxINuZyBjw7MgZ2nhuqVjIG5n4bunLCB24bubaSBnacOhIHRy4buLIHAgPSAwLjAwMDI2OSwgbmjhu48gaMahbiBt4bupYyDDvSBuZ2jEqWEgNSUuIEPhu6UgdGjhu4MsIGjhu4cgc+G7kSDGsOG7m2MgbMaw4bujbmcgbMOgIDAuNzQ4NDcsIGNobyB0aOG6pXkgbmjDs20gbmfGsOG7nWkgY8OzIHXhu5FuZyBuxrDhu5tjIHTEg25nIGzhu7FjIGPDsyBnacOhIHRy4buLIGNsb2dsb2cgY2FvIGjGoW4sIMSR4buTbmcgbmdoxKlhIHbhu5tpIHZp4buHYyB4w6FjIHN14bqldCBjw7MgZ2nhuqVjIG5n4bunIGPFqW5nIGNhbyBoxqFuIHNvIHbhu5tpIG5ow7NtIGtow7RuZyB14buRbmcuIMSQaeG7gXUgbsOgeSBjaG8gdGjhuqV5LCB0aGVvIG3DtCBow6xuaCBDbG9nbG9nLCB2aeG7h2MgdGnDqnUgdGjhu6Ugbsaw4bubYyB0xINuZyBs4buxYyBjw7MgbeG7kWkgbGnDqm4gaOG7hyDEkcOhbmcga+G7gyB24bubaSBraOG6oyBuxINuZyBjw7MgZ2nhuqVjIG5n4bunLCB2w6AgbeG7kWkgbGnDqm4gaOG7hyBuw6B5IG1hbmcgw70gbmdoxKlhIHRo4buRbmcga8OqIHLDtSBy4buHdC4NCg0KIyMjIyAqKio0LjcuMy4zLiBCaeG6v24gYmV2ZXJhZ2VfdGVhKioqDQoNCmBgYHtyfQ0KIyBNw7QgaMOsbmggQ2xvZ2xvZyB24bubaSBiaeG6v24gYmV2ZXJhZ2VfdGVhDQpjbG9nbG9nX3RlYSA8LSBnbG0oc2xlZXBfYmluYXJ5IH4gYmV2ZXJhZ2VfdGVhLCBkYXRhID0gZHQsIGZhbWlseSA9IGJpbm9taWFsKGxpbmsgPSAiY2xvZ2xvZyIpKQ0Kc3VtbWFyeShjbG9nbG9nX3RlYSkNCmBgYA0KDQpQaMawxqFuZyB0csOsbmggaOG7k2kgcXV5IMSRxrDhu6NjIHjDonkgZOG7sW5nIHThu6sgbcO0IGjDrG5oIENsb2dsb2cgxJHGoW4gYmnhur9uIGPDsyBk4bqhbmc6DQoNCiQkDQpcbG9nXGxlZnQoLVxsb2dcbGVmdCgxIC0gUChcdGV4dHtzbGVlcH0gPSAxKVxyaWdodClccmlnaHQpID0gLTAuMjMwNCAtIDEuNDQ4NSBcY2RvdCBcdGV4dHtiZXZlcmFnZV90ZWF9DQokJA0KXyoqTmjhuq1uIHjDqXQ6KipfDQoNCkvhur90IHF14bqjIGjhu5NpIHF1eSBDbG9nbG9nIMSRxqFuIGJp4bq/biBjaG8gdGjhuqV5IHZp4buHYyB14buRbmcgdHLDoCBjw7Mg4bqjbmggaMaw4bufbmcgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqiDEkeG6v24ga2jhuqMgbsSDbmcgY8OzIGdp4bqlYyBuZ+G7pywgduG7m2kgZ2nDoSB0cuG7iyBwID0gNy40NWUtMTQsIG5o4buPIGjGoW4gbeG7qWMgw70gbmdoxKlhIDUlLiBI4buHIHPhu5EgxrDhu5tjIGzGsOG7o25nIGzDoCAtMS40NDg1LCBtYW5nIGThuqV1IMOibSwgY2hvIHRo4bqleSBuaMOzbSBuZ8aw4budaSBjw7MgdeG7kW5nIHRyw6AgY8OzIGdpw6EgdHLhu4sgY2xvZ2xvZyB0aOG6pXAgaMahbiwgxJHhu5NuZyBuZ2jEqWEgduG7m2kgdmnhu4djIHjDoWMgc3XhuqV0IGPDsyBnaeG6pWMgbmfhu6cgY8WpbmcgdGjhuqVwIGjGoW4gc28gduG7m2kgbmjDs20ga2jDtG5nIHXhu5FuZyB0csOgLiDEkGnhu4F1IG7DoHkgcGjhuqNuIMOhbmggcuG6sW5nLCB0aGVvIG3DtCBow6xuaCBDbG9nbG9nLCB2aeG7h2MgdGnDqnUgdGjhu6UgdHLDoCBjw7MgbeG7kWkgbGnDqm4gaOG7hyBuZ8aw4bujYyBjaGnhu4F1IHbDoCDEkcOhbmcga+G7gyB24buBIG3hurd0IHRo4buRbmcga8OqIHbhu5tpIGto4bqjIG7Eg25nIGPDsyBnaeG6pWMgbmfhu6cuDQoNCiMjIyMgKioqNC43LjMuNC4gQmnhur9uIHRpbWVfb2ZfZGF5X2V2ZW5pbmcqKioNCg0KYGBge3J9DQojIE3DtCBow6xuaCBDbG9nbG9nIHbhu5tpIGJp4bq/biB0aW1lX29mX2RheV9ldmVuaW5nDQpjbG9nbG9nX2V2ZW5pbmcgPC0gZ2xtKHNsZWVwX2JpbmFyeSB+IHRpbWVfb2ZfZGF5X2V2ZW5pbmcsIA0KICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gZHQsIA0KICAgICAgICAgICAgICAgICAgICAgICBmYW1pbHkgPSBiaW5vbWlhbChsaW5rID0gImNsb2dsb2ciKSkNCnN1bW1hcnkoY2xvZ2xvZ19ldmVuaW5nKQ0KYGBgDQoNCkThu7FhIHRyw6puIGvhur90IHF14bqjIGjhu5NpIHF1eSwgcGjGsMahbmcgdHLDrG5oIG3DtCBow6xuaCBjw7MgZOG6oW5nOg0KDQokJA0KXGxvZ1xsZWZ0KC1cbG9nXGxlZnQoMSAtIFAoXHRleHR7c2xlZXB9ID0gMSlccmlnaHQpXHJpZ2h0KSA9IC0xLjkyMDAgKyAyLjEyNjggXGNkb3QgXHRleHR7dGltZV9vZl9kYXlfZXZlbmluZ30NCiQkDQoNCl8qKk5o4bqtbiB4w6l0OioqXw0KDQpL4bq/dCBxdeG6oyBo4buTaSBxdXkgQ2xvZ2xvZyDEkcahbiBiaeG6v24gY2hvIHRo4bqleSB2aeG7h2MgdeG7kW5nIHbDoG8gYnXhu5VpIHThu5FpIGPDsyDhuqNuaCBoxrDhu59uZyBjw7Mgw70gbmdoxKlhIHRo4buRbmcga8OqIMSR4bq/biBraOG6oyBuxINuZyBjw7MgZ2nhuqVjIG5n4bunLCB24bubaSBnacOhIHRy4buLIHAgPCAyZS0xNiwgbmjhu48gaMahbiBt4bupYyDDvSBuZ2jEqWEgNSUuIEPhu6UgdGjhu4MsIGjhu4cgc+G7kSDGsOG7m2MgbMaw4bujbmcgbMOgIDIuMTI2OCwgY2hvIHRo4bqleSBuaMOzbSBuZ8aw4budaSBjw7MgdeG7kW5nIHbDoG8gYnXhu5VpIHThu5FpIGPDsyBnacOhIHRy4buLIGNsb2dsb2cgY2FvIGjGoW4gxJHDoW5nIGvhu4Mgc28gduG7m2kgbmjDs20ga2jDtG5nIHXhu5FuZyB2w6BvIGJ14buVaSB04buRaSwgdOG7qWMgbMOgIHjDoWMgc3XhuqV0IGPDsyBnaeG6pWMgbmfhu6cgY8WpbmcgY2FvIGjGoW4uIMSQaeG7gXUgbsOgeSBjaG8gdGjhuqV5IG3hu5FpIGxpw6puIGjhu4cgdMOtY2ggY+G7sWMgdsOgIGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ogcsO1IHLhu4d0IGdp4buvYSB2aeG7h2MgdeG7kW5nIHbDoG8gYnXhu5VpIHThu5FpIHbDoCBraOG6oyBuxINuZyBjw7MgZ2nhuqVjIG5n4bunLg0KDQojIyAqKjQuOC4gTcO0IGjDrG5oIGjhu5NpIHF1eSBi4buZaSoqDQoNCmBgYHtyfQ0KYWxpYXMobG0oc2xlZXBfYmluYXJ5IH4gYmV2ZXJhZ2VfY29mZmVlICsgYmV2ZXJhZ2VfZW5lcmd5X2RyaW5rICsgYmV2ZXJhZ2VfdGVhICsgdGltZV9vZl9kYXlfZXZlbmluZywgZGF0YSA9IGR0KSkNCmBgYA0KDQpL4bq/dCBxdeG6oyB04burIGjDoG0gYWxpYXMoKSBjaG8gdGjhuqV5IGJp4bq/biBiZXZlcmFnZV90ZWEgY8OzIG3hu5FpIHF1YW4gaOG7hyB0dXnhur9uIHTDrW5oIGNow61uaCB4w6FjIHbhu5tpIGPDoWMgYmnhur9uIGdp4bqjaSB0aMOtY2gga2jDoWMgdHJvbmcgbcO0IGjDrG5oLCBj4bulIHRo4buDIGzDoDoNCg0KJCQNClx0ZXh0e2JldmVyYWdlX3RlYX0gPSAxIFx0aW1lcyBcdGV4dHtJbnRlcmNlcHR9IC0gMSBcdGltZXMgXHRleHR7YmV2ZXJhZ2VfY29mZmVlfSAtIDEgXHRpbWVzIFx0ZXh0e2JldmVyYWdlX2VuZXJneV9kcmlua30NCiQkDQoNCsSQaeG7gXUgbsOgeSBwaOG6o24gw6FuaCBoaeG7h24gdMaw4bujbmcgKirEkWEgY+G7mW5nIHR1eeG6v24gaG/DoG4gdG/DoG4qKiAoKnBlcmZlY3QgbXVsdGljb2xsaW5lYXJpdHkqKSwgdOG7qWMgbMOgIG3hu5l0IGJp4bq/biBjw7MgdGjhu4MgxJHGsOG7o2MgYmnhu4N1IGRp4buFbiBjaMOtbmggeMOhYyBi4bqxbmcgdOG7lSBo4bujcCB0dXnhur9uIHTDrW5oIGPhu6dhIGPDoWMgYmnhur9uIGPDsm4gbOG6oWkuIFRyb25nIHRyxrDhu51uZyBo4bujcCBuw6B5LCBo4buHIHPhu5EgY+G7p2EgYmnhur9uIGBiZXZlcmFnZV90ZWFgIGtow7RuZyB0aOG7gyDEkcaw4bujYyDGsOG7m2MgbMaw4bujbmcgbeG7mXQgY8OhY2ggZHV5IG5o4bqldCwgZOG6q24gxJHhur9uIGdpw6EgdHLhu4sgYE5BYCB0cm9uZyBr4bq/dCBxdeG6oyBo4buTaSBxdXkuDQoNClbDrCBsw70gZG8gxJHDsywgYmnhur9uIGJldmVyYWdlX3RlYSBz4bq9IMSRxrDhu6NjIGxv4bqhaSBraOG7j2kgbcO0IGjDrG5oIGjhu5NpIHF1eSBi4buZaSDEkeG7gyDEkeG6o20gYuG6o28gdMOtbmggeMOhYyDEkeG7i25oIGPhu6dhIG3DtCBow6xuaCB2w6AgdHLDoW5oIHNhaSBs4buHY2ggdHJvbmcgcGjDom4gdMOtY2guDQoNCiMjIyAqKjQuOC4xLiBNw7QgaMOsbmggTG9naXQqKg0KDQpgYGB7cn0NCm1oaHFfbG9naXQgPC0gZ2xtKHNsZWVwX2JpbmFyeSB+IGJldmVyYWdlX2NvZmZlZSArIGJldmVyYWdlX2VuZXJneV9kcmluayArIHRpbWVfb2ZfZGF5X2V2ZW5pbmcsDQogICAgICAgICAgICAgICAgICBkYXRhID0gZHQsIGZhbWlseSA9IGJpbm9taWFsKGxpbmsgPSAibG9naXQiKSkNCnN1bW1hcnkobWhocV9sb2dpdCkNCmBgYA0KDQpfKipOaOG6rW4geMOpdDoqKl8NCg0KUGjGsMahbmcgdHLDrG5oIGjhu5NpIHF1eSBsb2dpdCBjw7MgZOG6oW5nOg0KDQokJA0KXGxvZ1xsZWZ0KCBcZnJhY3tcaGF0e1xwaX19ezEgLSBcaGF0e1xwaX19IFxyaWdodCkgPSAtMy4wNjIzICsgMS43MzMwIFxjZG90IFx0ZXh0e2JldmVyYWdlX2NvZmZlZX0gKyAyLjEzMjAgXGNkb3QgXHRleHR7YmV2ZXJhZ2VfZW5lcmd5X2RyaW5rfSArIDIuNzM2NSBcY2RvdCBcdGV4dHt0aW1lX29mX2RheV9ldmVuaW5nfQ0KJCQNCg0KfCBCaeG6v24gICAgICAgICAgICAgICAgICAgICAgICAgfCBOaMOzbSBzbyBzw6FuaCAgICAgICAgIHwgSOG7hyBz4buRICjOsikgfCBwLXZhbHVlICAgfCBPZGRzIFJhdGlvIChlXs6yKSB8IERp4buFbiBnaeG6o2kgY2hpIHRp4bq/dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS18LS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18DQp8IGJldmVyYWdlX2NvZmZlZSAgICAgICAgICAgICB8IFNvIHbhu5tpIGtow7RuZyB14buRbmcgICAgfCAxLjczMyAgICAgfCAyLjEzZS0xMCAgfCA1LjY1ICAgICAgICAgICAgIHwgTmfGsOG7nWkgdeG7kW5nIGPDoCBwaMOqIGPDsyB4w6FjIHN14bqldCBideG7k24gbmfhu6cgY2FvIGfhuqVwIDUuNjUgbOG6p24gc28gduG7m2kgbmfGsOG7nWkga2jDtG5nIHXhu5FuZy4gIHwNCnwgYmV2ZXJhZ2VfZW5lcmd5X2RyaW5rICAgICAgIHwgU28gduG7m2kga2jDtG5nIHXhu5FuZyAgICB8IDIuMTMyICAgICB8IDEuMTJlLTA2ICB8IDguNDMgICAgICAgICAgICAgfCBWaeG7h2Mgc+G7rSBk4bulbmcgbsaw4bubYyB0xINuZyBs4buxYyBsw6BtIHTEg25nIHjDoWMgc3XhuqV0IGJ14buTbiBuZ+G7pyBn4bqlcCA4LjQzIGzhuqduLiAgICAgICAgICAgICAgIHwNCnwgdGltZV9vZl9kYXlfZXZlbmluZyAgICAgICAgIHwgU28gduG7m2kgYmFuIG5nw6B5ICAgICAgfCAyLjczNyAgICAgfCA8IDJlLTE2ICAgfCAxNS40NSAgICAgICAgICAgIHwgVeG7kW5nIHbDoG8gYnXhu5VpIHThu5FpIGzDoG0gdMSDbmcgeMOhYyBzdeG6pXQgYnXhu5NuIG5n4bunIGfhuqVwIDE1LjQ1IGzhuqduIHNvIHbhu5tpIHXhu5FuZyBiYW4gbmfDoHkuICB8DQoNCioqS+G6v3QgbHXhuq1uOioqDQoNCkThu7FhIHRyw6puIGvhur90IHF14bqjIG3DtCBow6xuaCBo4buTaSBxdXkgTG9naXQsIGPDoWMgeeG6v3UgdOG7kSBjw7Mg4bqjbmggaMaw4bufbmcgxJHDoW5nIGvhu4MgxJHhur9uIHjDoWMgc3XhuqV0IGJ14buTbiBuZ+G7pyBiYW8gZ+G7k20gdmnhu4djIHXhu5FuZyBjw6AgcGjDqiwgc+G7rSBk4bulbmcgbsaw4bubYyB0xINuZyBs4buxYyB2w6AgdGjhu51pIMSRaeG7g20gdeG7kW5nIHbDoG8gYnXhu5VpIHThu5FpLiBD4bulIHRo4buDLCBuZ8aw4budaSBjw7MgdeG7kW5nIGPDoCBwaMOqIGPDsyB4w6FjIHN14bqldCBideG7k24gbmfhu6cgY2FvIGfhuqVwIGtob+G6o25nIDUuNjUgbOG6p24gc28gduG7m2kgbmfGsOG7nWkga2jDtG5nIHXhu5FuZy4gVmnhu4djIHPhu60gZOG7pW5nIG7GsOG7m2MgdMSDbmcgbOG7sWMgbMOgbSB0xINuZyB4w6FjIHN14bqldCBideG7k24gbmfhu6cgbMOqbiA4LjQzIGzhuqduLCB0cm9uZyBraGkgdeG7kW5nIHbDoG8gYnXhu5VpIHThu5FpIGzDoG0gdMSDbmcgeMOhYyBzdeG6pXQgbsOgeSBsw6puIMSR4bq/biAxNS40NSBs4bqnbiBzbyB24bubaSB14buRbmcgYmFuIG5nw6B5LiBU4bqldCBj4bqjIGPDoWMgYmnhur9uIG7DoHkgxJHhu4F1IGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ogY2FvIChwLXZhbHVlIDwgMC4wMDEpLCBjaG8gdGjhuqV5IG3hu5FpIGxpw6puIGjhu4cgY2jhurd0IGNo4bq9IGdp4buvYSBjw6FjIGxv4bqhaSDEkeG7kyB14buRbmcsIHRo4budaSDEkWnhu4NtIHRpw6p1IHRo4bulIHbDoCB0w6xuaCB0cuG6oW5nIGJ14buTbiBuZ+G7py4gxJBp4buBdSBuw6B5IGfhu6NpIMO9IHLhurFuZyB2aeG7h2Mgc+G7rSBk4bulbmcgY8OhYyBsb+G6oWkgxJHhu5MgdeG7kW5nIGvDrWNoIHRow61jaCB2w6BvIGJ14buVaSB04buRaSBjw7MgdGjhu4MgbMOgbSB0aGF5IMSR4buVaSB0cuG6oW5nIHRow6FpIHNpbmggbMO9LCBsw6BtIHTEg25nIG5ndXkgY8ahIGJ14buTbiBuZ+G7pyBuZ2/DoGkgw70gbXXhu5FuLg0KDQojIyMgKio0LjguMi4gTcO0IGjDrG5oIFByb2JpdCoqDQoNCmBgYHtyfQ0KbWhocV9wcm9iaXQgPC0gZ2xtKHNsZWVwX2JpbmFyeSB+IGJldmVyYWdlX2NvZmZlZSArIGJldmVyYWdlX2VuZXJneV9kcmluayArICB0aW1lX29mX2RheV9ldmVuaW5nLA0KICAgICAgICAgICAgICAgICAgIGRhdGEgPSBkdCwNCiAgICAgICAgICAgICAgICAgICBmYW1pbHkgPSBiaW5vbWlhbChsaW5rID0gInByb2JpdCIpKQ0Kc3VtbWFyeShtaGhxX3Byb2JpdCkNCmBgYA0KXyoqTmjhuq1uIHjDqXQ6KipfDQoNClBoxrDGoW5nIHRyw6xuaCBo4buTaSBxdXkgUHJvYml0IGPDsyBk4bqhbmc6DQoNCiQkDQpcUGhpXnstMX0oXGhhdHtccGl9KSA9IC0xLjc3OTIgKyAwLjk5NDggXGNkb3QgXHRleHR7YmV2ZXJhZ2VfY29mZmVlfSArIDEuMjMxOSBcY2RvdCBcdGV4dHtiZXZlcmFnZV9lbmVyZ3lfZHJpbmt9ICsgMS42MTYzIFxjZG90IFx0ZXh0e3RpbWVfb2ZfZGF5X2V2ZW5pbmd9DQokJA0KDQp8IEJp4bq/biAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ow7NtIHNvIHPDoW5oICAgICAgICAgICAgICAgICAgICAgICAgIHwgSOG7hyBz4buRICjOsikgfCBwLXZhbHVlICAgIHwgRGnhu4VuIGdp4bqjaSBjaGkgdGnhur90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfA0KfCBiZXZlcmFnZV9jb2ZmZWUgICAgICAgICAgICAgfCBTbyB24bubaSBraMO0bmcgdeG7kW5nIGPDoCBwaMOqICAgICAgICAgICAgIHwgMC45OTQ4ICAgIHwgOS42MWUtMTEgICB8IE5nxrDhu51pIHXhu5FuZyBjw6AgcGjDqiBjw7MgeMOhYyBzdeG6pXQgYnXhu5NuIG5n4bunIGNhbyBoxqFuIMSRw6FuZyBr4buDLiAgICAgICAgICAgICB8DQp8IGJldmVyYWdlX2VuZXJneV9kcmluayAgICAgICB8IFNvIHbhu5tpIGtow7RuZyB14buRbmcgZW5lcmd5IGRyaW5rICAgICAgIHwgMS4yMzE5ICAgIHwgNS45NGUtMDcgICB8IE5nxrDhu51pIHXhu5FuZyBuxrDhu5tjIHTEg25nIGzhu7FjIGPDsyB4w6FjIHN14bqldCBideG7k24gbmfhu6cgY2FvIGjGoW4gxJHDoW5nIGvhu4MuICAgICB8DQp8IHRpbWVfb2ZfZGF5X2V2ZW5pbmcgICAgICAgICB8IFNvIHbhu5tpIGJhbiBuZ8OgeSAgICAgICAgICAgICAgICAgICAgICB8IDEuNjE2MyAgICB8IDwgMmUtMTYgICAgfCBV4buRbmcgdsOgbyBideG7lWkgdOG7kWkgbMOgbSB0xINuZyB4w6FjIHN14bqldCBideG7k24gbmfhu6cgc28gduG7m2kgYmFuIG5nw6B5LiAgICAgICB8DQoNCioqS+G6v3QgbHXhuq1uOioqDQoNCkThu7FhIHRyw6puIGvhur90IHF14bqjIG3DtCBow6xuaCBo4buTaSBxdXkgUHJvYml0LCBjw6FjIHnhur91IHThu5EgY8OzIOG6o25oIGjGsOG7n25nIMSRw6FuZyBr4buDIMSR4bq/biB4w6FjIHN14bqldCBideG7k24gbmfhu6cgc2F1IGtoaSB14buRbmcgZ+G7k206IHXhu5FuZyBjw6AgcGjDqiwgdeG7kW5nIG7GsOG7m2MgdMSDbmcgbOG7sWMsIHbDoCB0aOG7nWkgxJFp4buDbSB14buRbmcgdsOgbyBideG7lWkgdOG7kWkuIEPhu6UgdGjhu4MsIG5o4buvbmcgbmfGsOG7nWkgdeG7kW5nIGPDoCBwaMOqIGhv4bq3YyBuxrDhu5tjIHTEg25nIGzhu7FjIGPDsyB4w6FjIHN14bqldCBideG7k24gbmfhu6cgY2FvIGjGoW4gxJHDoW5nIGvhu4Mgc28gduG7m2kgbmfGsOG7nWkga2jDtG5nIHPhu60gZOG7pW5nIGPDoWMgbG/huqFpIMSR4buTIHXhu5FuZyBuw6B5LiDEkOG6t2MgYmnhu4d0LCB0aOG7nWkgxJFp4buDbSB14buRbmcgdsOgbyBideG7lWkgdOG7kWkgbMOgbSB0xINuZyB4w6FjIHN14bqldCBideG7k24gbmfhu6cgbeG6oW5oIG5o4bqldCB0cm9uZyBz4buRIGPDoWMgeeG6v3UgdOG7kSwgY2hvIHRo4bqleSB2YWkgdHLDsiBxdWFuIHRy4buNbmcgY+G7p2EgdGjhu51pIGdpYW4gdGnDqnUgdGjhu6UgxJHhu5MgdeG7kW5nLiBL4bq/dCBxdeG6oyBuw6B5IGfhu6NpIMO9IHLhurFuZywgZMO5IGPDoWMgbG/huqFpIMSR4buTIHXhu5FuZyB0csOqbiB0aMaw4budbmcgxJHGsOG7o2MgeGVtIGzDoCBnacO6cCB04buJbmggdMOhbywgbmjGsG5nIHRyb25nIHRo4buxYyB04bq/IGPDsyB0aOG7gyBnw6J5IHTDoWMgZOG7pW5nIG5nxrDhu6NjIHTDuXkgdsOgbyB0aOG7nWkgxJFp4buDbSB2w6AgY8ahIMSR4buLYSBuZ8aw4budaSBz4butIGThu6VuZy4NCg0KIyMjICoqNC44LjMuIE3DtCBow6xuaCBDbG9nbG9nKioNCg0KYGBge3J9DQptaGhxX2Nsb2dsb2cgPC0gZ2xtKHNsZWVwX2JpbmFyeSB+IGJldmVyYWdlX2NvZmZlZSArIGJldmVyYWdlX2VuZXJneV9kcmluayArICB0aW1lX29mX2RheV9ldmVuaW5nLA0KICAgICAgICAgICAgICAgICAgICBkYXRhID0gZHQsDQogICAgICAgICAgICAgICAgICAgIGZhbWlseSA9IGJpbm9taWFsKGxpbmsgPSAiY2xvZ2xvZyIpKQ0Kc3VtbWFyeShtaGhxX2Nsb2dsb2cpDQpgYGANCg0KQuG6o25nOiBDw6FjIGJp4bq/biBjw7Mgw70gbmdoxKlhIHRo4buRbmcga8OqIHRyb25nIG3DtCBow6xuaCBDbG9nbG9nDQoNCnwgQmnhur9uICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmjDs20gc28gc8OhbmggICAgICAgICAgICAgfCBI4buHIHPhu5EgKM6yKSB8IHAtdmFsdWUgICAgIHwgZXhwKM6yKSAoaGF6YXJkIHJhdGlvKSB8IERp4buFbiBnaeG6o2kgY2hpIHRp4bq/dCB8DQp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLXwNCnwgYmV2ZXJhZ2VfY29mZmVlICAgICAgICAgICAgIHwgU28gduG7m2kga2jDtG5nIHXhu5FuZyBjw6AgcGjDqiAgfCAxLjE5NCAgICAgfCAyLjIwZS0wOSAgICB8IDMuMzAgICAgICAgICAgICAgICAgICAgfCBOZ8aw4budaSB14buRbmcgY8OgIHBow6ogY8OzIHjDoWMgc3XhuqV0IGPDsyBnaeG6pWMgbmfhu6cgY2FvIGjGoW4ga2hv4bqjbmcgMy4zIGzhuqduIHNvIHbhu5tpIG5nxrDhu51pIGtow7RuZyB14buRbmcgY8OgIHBow6ouIHwNCnwgYmV2ZXJhZ2VfZW5lcmd5X2RyaW5rICAgICAgIHwgU28gduG7m2kga2jDtG5nIHXhu5FuZyBlbmVyZ3kgZHJpbmsgfCAxLjQ4NyAgICAgfCA3LjgxZS0wOCAgICB8IDQuNDIgICAgICAgICAgICAgICAgICAgfCBOZ8aw4budaSB14buRbmcgbsaw4bubYyB0xINuZyBs4buxYyBjw7MgeMOhYyBzdeG6pXQgY8OzIGdp4bqlYyBuZ+G7pyBjYW8gaMahbiBraG/huqNuZyA0LjQyIGzhuqduIHNvIHbhu5tpIG5nxrDhu51pIGtow7RuZyB14buRbmcuIHwNCnwgdGltZV9vZl9kYXlfZXZlbmluZyAgICAgICAgIHwgU28gduG7m2kga2jDtG5nIHXhu5FuZyBideG7lWkgdOG7kWkgfCAyLjAxNSAgICAgfCA8IDJlLTE2ICAgICB8IDcuNTAgICAgICAgICAgICAgICAgICAgfCBOZ8aw4budaSB14buRbmcgdsOgbyBideG7lWkgdOG7kWkgY8OzIHjDoWMgc3XhuqV0IGPDsyBnaeG6pWMgbmfhu6cgY2FvIGjGoW4ga2hv4bqjbmcgNy41IGzhuqduIHNvIHbhu5tpIG5nxrDhu51pIGtow7RuZyB14buRbmcgdsOgbyBideG7lWkgdOG7kWkuIHwNCg0KUGjGsMahbmcgdHLDrG5oIGjhu5NpIHF1eSBDbG9nbG9nIMSRxrDhu6NjIMaw4bubYyBsxrDhu6NuZyBuaMawIHNhdToNCg0KJCQNClxsb2coLVxsb2coMSAtIFxoYXR7XHBpfSkpID0gLTIuNzE5MCArIDEuMTk0MCBcY2RvdCBcdGV4dHtDb2ZmZWV9ICsgMS40ODY1IFxjZG90IFx0ZXh0e0VuZXJneX0gKyAyLjAxNDYgXGNkb3QgXHRleHR7RXZlbmluZ30NCiQkDQoNCioqS+G6v3QgbHXhuq1uOioqDQoNCkvhur90IHF14bqjIGjhu5NpIHF1eSB04burIG3DtCBow6xuaCBDbG9nbG9nIHThu5VuZyBxdcOhdCBjaG8gdGjhuqV5IGPDoWMgYmnhur9uIGJldmVyYWdlX2NvZmZlZSwgYmV2ZXJhZ2VfZW5lcmd5X2RyaW5rIHbDoCB0aW1lX29mX2RheV9ldmVuaW5nIMSR4buBdSBjw7Mg4bqjbmggaMaw4bufbmcgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqiDEkeG6v24geMOhYyBzdeG6pXQgbeG6pXQgbmfhu6csIHbhu5tpIHAtdmFsdWUgxJHhu4F1IG5o4buPIGjGoW4gMC4wMSAobmjhu48gaMahbiBt4bupYyDDvSBuZ2jEqWEgNSUpLiBD4bulIHRo4buDLCBjw6FjIGjhu4cgc+G7kSDGsOG7m2MgbMaw4bujbmcgxJHhu4F1IGTGsMahbmcsIGNobyB0aOG6pXkgdmnhu4djIHXhu5FuZyBjw6AgcGjDqiwgdeG7kW5nIG7GsOG7m2MgdMSDbmcgbOG7sWMgaG/hurdjIHRpw6p1IHRo4bulIGPDoWMgbG/huqFpIMSR4buTIHXhu5FuZyBuw6B5IHbDoG8gYnXhu5VpIHThu5FpIMSR4buBdSBsw6BtIHTEg25nIHjDoWMgc3XhuqV0IG3huqV0IG5n4bunLiBDaOG6s25nIGjhuqFuLCBo4buHIHPhu5EgxrDhu5tjIGzGsOG7o25nIGPhu6dhIGJp4bq/biAiY8OzIHXhu5FuZyBjw6AgcGjDqiIgbMOgIDEuMTk0LCB0xrDGoW5nIOG7qW5nIHbhu5tpIHjDoWMgc3XhuqV0IG3huqV0IG5n4bunIGNhbyBoxqFuIGtob+G6o25nIDMuMyBs4bqnbiBzbyB24bubaSBuZ8aw4budaSBraMO0bmcgdeG7kW5nIGPDoCBwaMOqLCBraGkgY8OhYyB54bq/dSB04buRIGtow6FjIGtow7RuZyDEkeG7lWkuIEJp4bq/biAiYmV2ZXJhZ2VfdGVhIiBi4buLIGxv4bqhaSBraOG7j2kgbcO0IGjDrG5oIGRvIGhp4buHbiB0xrDhu6NuZyDEkWEgY+G7mW5nIHR1eeG6v24uIA0KDQpOaMOsbiBjaHVuZywgbcO0IGjDrG5oIGNobyB0aOG6pXkgY8OhYyBsb+G6oWkgxJHhu5MgdeG7kW5nIGNo4bupYSBjYWZmZWluZSB2w6AgdGjhu51pIMSRaeG7g20gdGnDqnUgdGjhu6UgY2jDum5nIGzDoCBuaOG7r25nIHnhur91IHThu5EgcuG7p2kgcm8gcXVhbiB0cuG7jW5nIOG6o25oIGjGsOG7n25nIHRpw6p1IGPhu7FjIMSR4bq/biBraOG6oyBuxINuZyBjw7MgxJHGsOG7o2MgZ2nhuqVjIG5n4bunIHRyb25nIG3huqt1IG5naGnDqm4gY+G7qXUgbsOgeS4NCg0KIyMgKio0LjkgxJDDoW5oIGdpw6EgbcO0IGjDrG5oIGjhu5NpIHF1eSBi4buZaSoqDQoNCioqQ2jhu4kgc+G7kSBBSUMqKg0KDQpgYGB7cn0NCkFJQyhtaGhxX2xvZ2l0KQ0KQUlDKG1oaHFfcHJvYml0KQ0KQUlDKG1oaHFfY2xvZ2xvZykNCmBgYA0KKipDaOG7iSBz4buRIEJJQyoqDQoNCmBgYHtyfQ0KQklDKG1oaHFfbG9naXQpDQpCSUMobWhocV9wcm9iaXQpDQpCSUMobWhocV9jbG9nbG9nKQ0KYGBgDQoNCioqQ2jhu4kgc+G7kSBMb2ctTGlrZWxpaG9vZCoqDQoNCmBgYHtyfQ0KIyBTbyBzw6FuaCBMb2ctTGlrZWxpaG9vZA0KbG9nTGlrKG1oaHFfbG9naXQpDQpsb2dMaWsobWhocV9wcm9iaXQpDQpsb2dMaWsobWhocV9jbG9nbG9nKQ0KYGBgDQoqKkNo4buJIHPhu5EgTWNGYWRkZW5fUjIqKg0KDQpgYGB7cn0NCnBSMihtaGhxX2xvZ2l0KVsiTWNGYWRkZW4iXQ0KcFIyKG1oaHFfcHJvYml0KVsiTWNGYWRkZW4iXQ0KcFIyKG1oaHFfY2xvZ2xvZylbIk1jRmFkZGVuIl0NCmBgYA0KDQoqKlNvIHPDoW5oIGPDoWMgbcO0IGjDrG5oKioNCg0KfCBNw7QgaMOsbmggICAgICAgICAgICB8ICAgIEFJQyAgICB8ICAgICBCSUMgICAgIHwgTG9nLUxpa2VsaWhvb2QgfCBSwrIgLyBNY0ZhZGRlbiBSwrIgfA0KfC0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS18DQp8IExvZ2l0ICAgICAgICAgICAgICB8IDQ1MS4zMDA4ICB8IDQ2OC4xNTkyICAgIHwgLTIyMS42NTA0ICAgICAgfCAwLjM0MzYgICAgICAgICAgIHwNCnwgUHJvYml0ICAgICAgICAgICAgIHwgNDUxLjE3NDMgIHwgNDY4LjAzMjggICAgfCAtMjIxLjU4NzIgICAgICB8IDAuMzQzOCAgICAgICAgICAgfA0KfCBDbG9nbG9nICAgICAgICAgICAgfCA0NTIuODEzNCAgfCA0NjkuNjcxOCAgICB8IC0yMjIuNDA2NyAgICAgIHwgMC4zNDE0ICAgICAgICAgICB8DQoNCg0KROG7sWEgdHLDqm4gYuG6o25nIHNvIHPDoW5oIGPDoWMgbcO0IGjDrG5oLCB0YSBjw7MgdGjhu4MgxJHGsGEgcmEgbmjhuq1uIHjDqXQgbmjGsCBzYXU6DQoNCi0gROG7sWEgdHLDqm4gYuG6o25nIHNvIHPDoW5oIGPDoWMgbcO0IGjDrG5oIGjhu5NpIHF1eSwgY8OzIHRo4buDIHRo4bqleSBy4bqxbmcgbcO0IGjDrG5oICoqUHJvYml0KiogbWFuZyBs4bqhaSBr4bq/dCBxdeG6oyBwaMO5IGjhu6NwIG5o4bqldC4gTcO0IGjDrG5oIG7DoHkgY8OzIGdpw6EgdHLhu4sgKipBSUMgdGjhuqVwIG5o4bqldCoqICg0NTEuMTc0MykgdsOgICoqQklDIHRo4bqlcCBuaOG6pXQqKiAoNDY4LjAzMjgpLCDEkeG7k25nIHRo4budaSDEkeG6oXQgKipMb2ctTGlrZWxpaG9vZCBjYW8gbmjhuqV0KiogKOKAkzIyMS41ODcyKSB2w6AgKipo4buHIHPhu5EgTWNGYWRkZW4gUsKyIGzhu5tuIG5o4bqldCoqICgwLjM0MzgpLiBOaOG7r25nIGNo4buJIHPhu5EgbsOgeSBjaG8gdGjhuqV5IGto4bqjIG7Eg25nIGdp4bqjaSB0aMOtY2ggYmnhur9uIHBo4bulIHRodeG7mWMgdOG7kXQgaMahbiBzbyB24bubaSBjw6FjIG3DtCBow6xuaCBjw7JuIGzhuqFpLCBiYW8gZ+G7k20gY+G6oyBMb2dpdCB2w6AgQ2xvZ2xvZy4NCg0KLSBU4burIGPDoWMgdGnDqnUgY2jDrSB0aOG7kW5nIGvDqiB2w6AgbeG7qWMgxJHhu5kgcGjDuSBo4bujcCBtw7QgaMOsbmgsIGPDsyB0aOG7gyBr4bq/dCBsdeG6rW4gcuG6sW5nIG3DtCBow6xuaCBQcm9iaXQgbMOgIGzhu7FhIGNo4buNbiDGsHUgdmnhu4d0IG5o4bqldCDEkeG7gyBk4buxIMSRb8OhbiB4w6FjIHN14bqldCBt4bqldCBuZ+G7pyBk4buxYSB0csOqbiBjw6FjIHnhur91IHThu5EgbGnDqm4gcXVhbiDEkeG6v24gxJHhu5MgdeG7kW5nIHbDoCB0aOG7nWkgxJFp4buDbSB0acOqdSB0aOG7pS4NCg0KIyMgKio0LjEwLiBE4buxIGLDoW8qKg0KDQpgYGB7cn0NCm5ld19wZXJzb24gPC0gZGF0YS5mcmFtZSgNCiAgYmV2ZXJhZ2VfY29mZmVlID0gZmFjdG9yKCJDw7MgdeG7kW5nIGPDoCBwaMOqIiwgbGV2ZWxzID0gbGV2ZWxzKGR0JGJldmVyYWdlX2NvZmZlZSkpLA0KICBiZXZlcmFnZV9lbmVyZ3lfZHJpbmsgPSBmYWN0b3IoIkPDsyB14buRbmcgZW5lcmd5IGRyaW5rIiwgbGV2ZWxzID0gbGV2ZWxzKGR0JGJldmVyYWdlX2VuZXJneV9kcmluaykpLA0KICB0aW1lX29mX2RheV9ldmVuaW5nID0gZmFjdG9yKCJDw7MgdeG7kW5nIGJ14buVaSB04buRaSIsIGxldmVscyA9IGxldmVscyhkdCR0aW1lX29mX2RheV9ldmVuaW5nKSkNCikNCmBgYA0KDQoNCmBgYHtyfQ0KcHJlZGljdChtaGhxX3Byb2JpdCwgbmV3ZGF0YSA9IG5ld19wZXJzb24sIHR5cGUgPSAicmVzcG9uc2UiKQ0KYGBgDQoNCmBgYHtyfQ0KcHJlZGljdChtaGhxX3Byb2JpdCwgbmV3ZGF0YSA9IG5ld19wZXJzb24sIHR5cGUgPSAibGluayIpDQpgYGANCioqS+G6v3QgbHXhuq1uOioqDQoNCkThu7FhIHRyw6puIGvhur90IHF14bqjIGThu7EgYsOhbyB04burIG3DtCBow6xuaCBo4buTaSBxdXkgUHJvYml0IChtaGhxX3Byb2JpdCksIGdpw6EgdHLhu4sgdHV54bq/biB0w61uaCAobGluZWFyIHByZWRpY3RvcikgdGh1IMSRxrDhu6NjIGzDoCAyLjA2MzkgdsOgIHjDoWMgc3XhuqV0IHTGsMahbmcg4bupbmcgbMOgIDAuOTgwNS4gR2nDoSB0cuG7iyB0dXnhur9uIHTDrW5oIG7DoHkgbMOgIGvhur90IHF14bqjIGPhu6dhIHZp4buHYyBr4bq/dCBo4bujcCBjw6FjIGjhu4cgc+G7kSDGsOG7m2MgbMaw4bujbmcgduG7m2kgZ2nDoSB0cuG7iyBj4bunYSBjw6FjIGJp4bq/biBnaeG6o2kgdGjDrWNoLCB0aMO0bmcgcXVhIGjDoG0gbGnDqm4ga+G6v3QgUHJvYml0LiBLaGkgw6FwIGThu6VuZyBow6BtIHBow6JuIHBo4buRaSB0w61jaCBsxal5IGNodeG6qW4gKENERikgbMOqbiBnacOhIHRy4buLIG7DoHksIHRhIHRodSDEkcaw4bujYyB4w6FjIHN14bqldCBy4bqxbmcgY8OhIG5ow6JuIGPDsyDEkeG6t2MgxJFp4buDbSBuaMawIHRyb25nIG5ld19wZXJzb24gc+G6vSB0aHXhu5ljIG5ow7NtIGLhu4sg4bqjbmggaMaw4bufbmcgxJHhur9uIGdp4bqlYyBuZ+G7pyBsw6Aga2hv4bqjbmcgOTguMDUlLg0KDQrEkGnhu4F1IG7DoHkgY2hvIHRo4bqleSB04buVIGjhu6NwIGPDoWMgeeG6v3UgdOG7kSBuaMawIGPDsyB14buRbmcgY8OgIHBow6osIGPDsyBz4butIGThu6VuZyBuxrDhu5tjIHTEg25nIGzhu7FjLCB2w6AgZMO5bmcgdsOgbyBideG7lWkgdOG7kWkgxJHhu4F1IGfDs3AgcGjhuqduIGzDoG0gdMSDbmcgbeG6oW5oIGto4bqjIG7Eg25nIGLhu4sg4bqjbmggaMaw4bufbmcgZ2nhuqVjIG5n4bunLiBHacOhIHRy4buLIHR1eeG6v24gdMOtbmggZMawxqFuZyBs4bubbiAoa2hv4bqjbmcgMi4wNikgY8WpbmcgcGjhuqNuIMOhbmggdMOhYyDEkeG7mW5nIGPhu5luZyBoxrDhu59uZyByw7UgcuG7h3QgdOG7qyBjw6FjIGJp4bq/biBnaeG6o2kgdGjDrWNoIGzDqm4geMOhYyBzdeG6pXQgeOG6o3kgcmEgaGnhu4duIHTGsOG7o25nLg0KDQpU4burIMSRw7MsIGPDsyB0aOG7gyBuaOG6rW4gxJHhu4tuaCBy4bqxbmcgbcO0IGjDrG5oIFByb2JpdCBraMO0bmcgY2jhu4kgcGjDuSBo4bujcCB24buBIG3hurd0IHRo4buRbmcga8OqIG3DoCBjw7JuIGNobyB0aOG6pXkga2jhuqMgbsSDbmcgZOG7sSBiw6FvIGhp4buHdSBxdeG6oywgZ2nDunAgeMOhYyDEkeG7i25oIHLDtSBuaOG7r25nIHnhur91IHThu5Egbmd1eSBjxqEgbMOgbSBnaeG6o20gY2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7pyDhu58gbmjhu69uZyBuZ8aw4budaSBjw7MgaMOgbmggdmkgdGnDqnUgZMO5bmcgdMawxqFuZyB04buxLg0KDQojICoqQ0jGr8agTkcgNTogS+G6vlQgTFXhuqxOIFbDgCBLSeG6vk4gTkdI4buKKioNCg0KIyMgKio1LjEuIEvhur90IGx14bqtbioqDQoNClRyb25nIHRp4buDdSBsdeG6rW4gbsOgeSwgdMOhYyBnaeG6oyDEkcOjIHRp4bq/biBow6BuaCBt4buZdCBwaMOibiB0w61jaCDEkeG7i25oIGzGsOG7o25nIHRvw6BuIGRp4buHbiB0csOqbiBi4buZIGThu68gbGnhu4d1IGfhu5NtIDUwMCBxdWFuIHPDoXQgduG7m2kgOSBiaeG6v24sIG5o4bqxbSDEkcOhbmggZ2nDoSBt4buRaSBsacOqbiBo4buHIGdp4buvYSBow6BuaCB2aSB0acOqdSB0aOG7pSDEkeG7kyB14buRbmcgY2jhu6lhIGNhZmZlaW5lIHbDoCBraOG6oyBuxINuZyBnaeG6pWMgbmfhu6cgYuG7iyDhuqNuaCBoxrDhu59uZy4gQmnhur9uIHBo4bulIHRodeG7mWMgbMOgIG3hu5l0IGJp4bq/biBuaOG7iyBwaMOibiBwaOG6o24gw6FuaCBsaeG7h3UgZ2nhuqVjIG5n4bunIGPhu6dhIGPDoSBuaMOibiBjw7MgYuG7iyB0w6FjIMSR4buZbmcgdGnDqnUgY+G7sWMgYuG7n2kgY8OhYyB54bq/dSB04buRIGxpw6puIHF1YW4gxJHhur9uIGNhZmZlaW5lIGhheSBraMO0bmcuIEPDoWMgYmnhur9uIMSR4buZYyBs4bqtcCBiYW8gZ+G7k20gbG/huqFpIMSR4buTIHXhu5FuZyAoY8OgIHBow6osIG7GsOG7m2MgdMSDbmcgbOG7sWMsIHRyw6ApIHbDoCB0aOG7nWkgxJFp4buDbSBz4butIGThu6VuZyAoYmFuIMSRw6ptIGhheSBraMO0bmcpLg0KDQpQaMOibiB0w61jaCB0aOG7kW5nIGvDqiBtw7QgdOG6oyBiYW4gxJHhuqd1IGdpw7pwIHjDoWMgxJHhu4tuaCDEkeG6t2MgxJFp4buDbSBwaMOibiBi4buRIGPhu6dhIHThu6tuZyBiaeG6v24gdsOgIG5o4bqtbiBkaeG7h24gY8OhYyB54bq/dSB04buRIHRp4buBbSBuxINuZyDhuqNuaCBoxrDhu59uZyDEkeG6v24gZ2nhuqVjIG5n4bunLiBUaeG6v3AgdGhlbywgYmEgbcO0IGjDrG5oIGjhu5NpIHF1eSBuaOG7iyBwaMOibiBn4buTbSBMb2dpdCwgUHJvYml0IHbDoCBDbG9nbG9nIMSRxrDhu6NjIHPhu60gZOG7pW5nIMSR4buDIGtp4buDbSDEkeG7i25oIG3hu6ljIMSR4buZIOG6o25oIGjGsOG7n25nIGPhu6dhIGPDoWMgYmnhur9uIMSR4buZYyBs4bqtcC4gVmnhu4djIHNvIHPDoW5oIGPDoWMgbcO0IGjDrG5oIGThu7FhIHRyw6puIGPDoWMgdGnDqnUgY2jDrSBuaMawIEFJQywgbG9nLWxpa2VsaWhvb2QgdsOgIGNo4buJIHPhu5EgTWNGYWRkZW4gUsKyLiBL4bq/dCBxdeG6oyBjaG8gdGjhuqV5IG3DtCBow6xuaCBQcm9iaXQgbMOgIHBow7kgaOG7o3AgbmjhuqV0LCB24bubaSBBSUMgdGjhuqVwIG5o4bqldCAoNDUxLjE3KSB2w6AgTWNGYWRkZW4gUsKyIGNhbyBuaOG6pXQgKDAuMzY1MyksIHBo4bqjbiDDoW5oIG7Eg25nIGzhu7FjIGdp4bqjaSB0aMOtY2ggdOG7kXQgbmjhuqV0Lg0KDQpL4bq/dCBxdeG6oyBo4buTaSBxdXkgY2hvIHRo4bqleSBiYSB54bq/dSB04buRIGPDsyDhuqNuaCBoxrDhu59uZyDEkcOhbmcga+G7gyDEkeG6v24ga2jhuqMgbsSDbmcgZ2nhuqVjIG5n4bunIGLhu4sg4bqjbmggaMaw4bufbmcgZ+G7k206IHXhu5FuZyBjw6AgcGjDqiwgdeG7kW5nIG7GsOG7m2MgdMSDbmcgbOG7sWMgdsOgIHRpw6p1IHRo4bulIHbDoG8gYnXhu5VpIHThu5FpLiBUcm9uZyDEkcOzLCB54bq/dSB04buRIHRo4budaSDEkWnhu4NtIHPhu60gZOG7pW5nIHbDoG8gYnXhu5VpIHThu5FpIGPDsyB0w6FjIMSR4buZbmcgbeG6oW5oIG5o4bqldC4gTmfGsOG7o2MgbOG6oWksIHZp4buHYyB14buRbmcgdHLDoCBjw7MgeHUgaMaw4bubbmcgbMOgbSBnaeG6o20geMOhYyBzdeG6pXQgYuG7iyDhuqNuaCBoxrDhu59uZyBnaeG6pWMgbmfhu6csIHR1eSBuaGnDqm4gYmnhur9uIG7DoHkgYuG7iyBsb+G6oWkga2jhu49pIG3DtCBow6xuaCBkbyB04buTbiB04bqhaSBoaeG7h24gdMaw4bujbmcgxJFhIGPhu5luZyB0dXnhur9uIGhvw6BuIHRvw6BuLg0KDQpE4buxIGLDoW8gdOG7qyBtw7QgaMOsbmggUHJvYml0IGNobyB0aOG6pXksIG3hu5l0IG5nxrDhu51pIGPDsyB14buRbmcgY8OgIHBow6osIHPhu60gZOG7pW5nIG7GsOG7m2MgdMSDbmcgbOG7sWMgdsOgIHRpw6p1IHRo4bulIHbDoG8gYnXhu5VpIHThu5FpIGPDsyB4w6FjIHN14bqldCBi4buLIOG6o25oIGjGsOG7n25nIGdp4bqlYyBuZ+G7pyBsw6puIHThu5tpIDk4JS4gS+G6v3QgcXXhuqMgbsOgeSBuaOG6pW4gbeG6oW5oIG3hu5FpIGxpw6puIGjhu4cgY2jhurd0IGNo4bq9IGdp4buvYSBow6BuaCB2aSB0acOqdSBkw7luZyBjYWZmZWluZSB2w6AgY2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7pywgcXVhIMSRw7MgY3VuZyBj4bqlcCBuaOG7r25nIGfhu6NpIMO9IHRoaeG6v3QgdGjhu7FjIHRyb25nIGdpw6FvIGThu6VjIHPhu6ljIGto4buPZSB2w6AgxJFp4buBdSBjaOG7iW5oIHRow7NpIHF1ZW4gdGnDqnUgZMO5bmcsIMSR4bq3YyBiaeG7h3QgxJHhu5FpIHbhu5tpIGdp4bubaSB0cuG6uy4NCg0KIyMgKio1LjIuIEjhuqFuIGNo4bq/IGPhu6dhIMSR4buBIHTDoGkqKg0KDQpN4bq3YyBkw7kgbmdoacOqbiBj4bupdSDEkcOjIGN1bmcgY+G6pXAgbeG7mXQgY8OhaSBuaMOsbiBjw7MgZ2nDoSB0cuG7iyB24buBIG3hu5FpIHF1YW4gaOG7hyBnaeG7r2EgaMOgbmggdmkgdGnDqnUgZMO5bmcgxJHhu5MgdeG7kW5nIHbDoCBraOG6oyBuxINuZyBjw7MgZ2nhuqVjIG5n4bunLCDEkeG7gSB0w6BpIHbhuqtuIHThu5NuIHThuqFpIG3hu5l0IHPhu5EgaOG6oW4gY2jhur8gbmjhuqV0IMSR4buLbmguIA0KDQpUaOG7qSBuaOG6pXQsIGLhu5kgZOG7ryBsaeG7h3Ugc+G7rSBk4bulbmcgdHJvbmcgbmdoacOqbiBj4bupdSBjw7MgcXV5IG3DtCBnaeG7m2kgaOG6oW4gduG7m2kgNTAwIHF1YW4gc8OhdCwgdsOgIGtow7RuZyBwaOG6o24gw6FuaCDEkeG6p3kgxJHhu6cgY8OhYyDEkeG6t2MgxJFp4buDbSBuaMOibiBraOG6qXUgaOG7jWMgaGF5IHnhur91IHThu5Egc2luaCBsw70gY+G7p2EgbmfGsOG7nWkgdGhhbSBnaWEsIGRvIMSRw7Mga2jhuqMgbsSDbmcga2jDoWkgcXXDoXQgaMOzYSBr4bq/dCBxdeG6oyBjw7JuIGjhuqFuIGNo4bq/LiANCg0KVGjhu6kgaGFpLCBjw6FjIGJp4bq/biDEkeG7mWMgbOG6rXAgY2jhu6cgeeG6v3UgbMOgIMSR4buLbmggdMOtbmggdsOgIMSRxrDhu6NjIG3DoyBow7NhIGThuqFuZyBuaOG7iyBwaMOibiwgxJFp4buBdSBuw6B5IGPDsyB0aOG7gyBsw6BtIG3huqV0IMSRaSBt4buZdCBwaOG6p24gdMOtbmggxJFhIGThuqFuZyB2w6AgY2hpIHRp4bq/dCBj4bunYSBk4buvIGxp4buHdSB0aOG7sWMgdOG6vy4gVGjhu6kgYmEsIG5naGnDqm4gY+G7qXUgY2jhu4kgc+G7rSBk4bulbmcgY8OhYyBtw7QgaMOsbmggaOG7k2kgcXV5IG5o4buLIHBow6JuIGPhu5UgxJFp4buDbiAoTG9naXQsIFByb2JpdCwgQ2xvZ2xvZyksIGNoxrBhIHjDqXQgxJHhur9uIGPDoWMgcGjGsMahbmcgcGjDoXAgaGnhu4duIMSR4bqhaSBuaMawIGjhu5NpIHF1eSBwaGkgdHV54bq/biwga+G7uSB0aHXhuq10IGjhu41jIG3DoXksIGhv4bq3YyB44butIGzDvSBk4buvIGxp4buHdSBt4bqldCBjw6JuIGLhurFuZyDigJMgbmjhu69uZyB54bq/dSB04buRIGPDsyB0aOG7gyBj4bqjaSB0aGnhu4duIMSR4buZIGNow61uaCB4w6FjIHbDoCB0w61uaCDhu6luZyBk4bulbmcgY+G7p2EgbcO0IGjDrG5oLiANCg0KQ3Xhu5FpIGPDuW5nLCBkbyBz4butIGThu6VuZyBk4buvIGxp4buHdSBxdWFuIHPDoXQsIG5naGnDqm4gY+G7qXUgY2jGsGEgdGjhu4MgeMOhYyDEkeG7i25oIHF1YW4gaOG7hyBuaMOibiBxdeG6oyBnaeG7r2EgY8OhYyBiaeG6v24sIG3DoCBjaOG7iSBk4burbmcgbOG6oWkg4bufIG3hu6ljIMSR4buZIHTGsMahbmcgcXVhbiwgZG8gxJHDsyBj4bqnbiBj4bqpbiB0cuG7jW5nIHRyb25nIHZp4buHYyBkaeG7hW4gZ2nhuqNpIHbDoCDhu6luZyBk4bulbmcga+G6v3QgcXXhuqMuDQoNCiMjICoqNS4zLiBLaeG6v24gbmdo4buLKioNCg0KxJDhu5FpIHbhu5tpIGPDoSBuaMOibiBuZ8aw4budaSB0acOqdSBkw7luZzogQ+G6p24gY8OzIHPhu7EgxJFp4buBdSBjaOG7iW5oIGjDoG5oIHZpIHRpw6p1IGTDuW5nIMSR4buTIHXhu5FuZyBjaOG7qWEgY2FmZmVpbiwgxJHhurdjIGJp4buHdCBsw6Aga2jDtG5nIG7Dqm4gc+G7rSBk4bulbmcgdsOgbyBideG7lWkgdOG7kWkgxJHhu4MgdHLDoW5oIHTDoWMgxJHhu5luZyB0acOqdSBj4buxYyDEkeG6v24gY2jhuqV0IGzGsOG7o25nIGdp4bqlYyBuZ+G7py4NCg0KxJDhu5FpIHbhu5tpIHRydXnhu4FuIHRow7RuZyB2w6AgeSB04bq/IGPhu5luZyDEkeG7k25nOiBOw6puIHRyaeG7g24ga2hhaSBjw6FjIGNoaeG6v24gZOG7i2NoIG7Dom5nIGNhbyBuaOG6rW4gdGjhu6ljIHbhu4Eg4bqjbmggaMaw4bufbmcgY+G7p2EgxJHhu5MgdeG7kW5nIGNhZmZlaW4gxJHhu5FpIHbhu5tpIGdp4bqlYyBuZ+G7pywgbmjhuqVuIG3huqFuaCDEkeG6v24geeG6v3UgdOG7kSB0aOG7nWkgxJFp4buDbSB2w6AgbGnhu4F1IGzGsOG7o25nIHRpw6p1IHRo4bulLg0KDQrEkOG7kWkgduG7m2kgbmdoacOqbiBj4bupdSB0xrDGoW5nIGxhaTogQ8OzIHRo4buDIG3hu58gcuG7mW5nIGThu68gbGnhu4d1IHbhu5tpIG5oaeG7gXUgYmnhur9uIMSR4buLbmggbMaw4bujbmcgaMahbiBuaMawIHRo4budaSBnaWFuIG5n4bunIHRo4buxYyB04bq/LCBt4bupYyDEkeG7mSBzdHJlc3MgaG/hurdjIMSR4bq3YyDEkWnhu4NtIHPhu6ljIGto4buPZSB04buVbmcgdGjhu4MgxJHhu4MgaG/DoG4gdGhp4buHbiBtw7QgaMOsbmggdsOgIGPDsyDEkcOhbmggZ2nDoSB0b8OgbiBkaeG7h24gaMahbi4NCg0KDQoNCg0KDQoNCg==