LỜI CAM ĐOAN

Em xin cam đoan đề tài “PHÂN TÍCH CÁC ĐẶC ĐIỂM CỦA XE Ô TÔ ẢNH HƯỞNG ĐẾN QUYẾT ĐỊNH MUA XE” do chính bản thân em nghiên cứu và thực hiện dưới sự hướng dẫn của giảng viên Ths.Trần Mạnh Tường. Kết quả trong bài báo cáo này là trung thực và không sao chép từ bất kì bài nào khác. Các thông tin sử dụng trong bài báo cáo có nguồn gốc, xuất xứ rõ ràng, đảm bảo tính minh bạch và trách nhiệm trong quá trình nghiên cứu. Nếu vi phạm lời cam đoan này, em xin chịu hoàn toàn trách nhiệm.

LỜI CẢM ƠN

Lời đầu tiên cho phép em xin gửi lời cảm ơn chân thành đối với quý Thầy/Cô trường Đại học Tài chính - Marketing, đặc biệt là các thầy cô trong khoa Khoa học dữ liệu đã giảng dạy và truyền tải các kiến thức về kinh tế - tài chính để em ứng dụng trong bài báo cáo. Bài báo cáo này được hoàn thiện dưới sự chỉ bảo tận tình của ThS. Trần Mạnh Tường. Thầy đã dành nhiều thời gian hướng dẫn cũng như giải đáp mọi thắc mắc của em trong suốt quá trình thực hiện báo cáo. Em xin bày tỏ lòng biết ơn đến Thầy. Trong quá trình làm tiểu luận em khó tránh khỏi những sai sót và thiếu sót rất mong quý Thầy/Cô bỏ qua. Tuy nhiên với thời gian, kinh nghiệm và kiến thức còn hạn còn hạn chế không thể tránh khỏi những sai sót nhất định. Em rất mong nhận được sự chỉ bảo, đóng góp ý kiến của các quý Thầy/Cô để bài báo cáo thực hành nghề nghiệp của em được hoàn thiện hơn!

Sau cùng em xin kính chúc quý Thầy/Cô mạnh khỏe và đạt được nhiều thành công trong sự nghiệp giáo dục của mình!

Em xin chân thành cảm ơn!

CHƯƠNG I: TỔNG QUAN NGHIÊN CỨU

1.1 Lý do chọn đề tài

Trong bối cảnh thị trường ô tô ngày càng sôi động và cạnh tranh khốc liệt, việc hiểu rõ các yếu tố ảnh hưởng đến quyết định mua xe của người tiêu dùng trở thành vấn đề có ý nghĩa thực tiễn và học thuật sâu sắc. Người tiêu dùng ngày nay không chỉ quan tâm đến giá cả mà còn xem xét nhiều đặc điểm kỹ thuật và tiện ích của xe như loại hộp số, xuất xứ, tình trạng sở hữu, kiểu dáng, mức tiêu hao nhiên liệu, và các tính năng an toàn. Những yếu tố này đóng vai trò then chốt trong việc hình thành hành vi và xu hướng tiêu dùng trong ngành ô tô.

Việc phân tích các đặc điểm cụ thể của xe ảnh hưởng đến quyết định mua không chỉ giúp các doanh nghiệp sản xuất và phân phối ô tô định vị sản phẩm phù hợp với nhu cầu thị trường, mà còn hỗ trợ các nhà hoạch định chính sách trong việc thúc đẩy tiêu dùng và kiểm soát thị trường xe đã qua sử dụng. Bên cạnh đó, người tiêu dùng cũng có thêm cơ sở để đưa ra quyết định mua sắm hiệu quả và hợp lý hơn.

Xuất phát từ ý nghĩa thực tiễn đó, đề tài “Phân tích các đặc điểm của xe ô tô ảnh hưởng đến quyết định mua xe” được lựa chọn nhằm góp phần làm rõ vai trò của từng yếu tố đặc trưng của xe trong quá trình ra quyết định của khách hàng, từ đó đưa ra những hàm ý hữu ích cho thị trường và các bên liên quan.

1.2 Mục tiêu nghiên cứu

Mục tiêu chính của đề tài “Phân tích các đặc điểm của xe ô tô ảnh hưởng đến quyết định mua xe” là tìm hiểu và đánh giá các yếu tố định tính có ảnh hưởng đến quyết định mua xe ô tô đã qua sử dụng của người tiêu dùng. Cụ thể, nghiên cứu hướng đến các mục tiêu sau:

Phân tích đặc điểm phân bố của biến phụ thuộc - quyết định mua xe – và các biến độc lập như loại hộp số, tình trạng sở hữu xe, tình trạng bảo hành, …, nhằm mô tả tổng quan dữ liệu và hành vi mua xe của người tiêu dùng.

Xác định mối liên hệ giữa các đặc điểm định tính của xe và quyết định mua xe thông qua các công cụ phân tích thống kê như bảng tần số chéo, tỷ lệ phần trăm, tỷ số rủi ro (Risk Ratio), tỷ số chênh lệch (Odds Ratio),…

Đánh giá mức độ ảnh hưởng của một số yếu tố kỹ thuật phổ biến (ví dụ: hộp số tự động hay cơ khí) đến khả năng khách hàng chọn mua xe, từ đó rút ra các kết luận mang tính thực tiễn.

Áp dụng phương pháp phân tích định tính trên dữ liệu thực tế nhằm rèn luyện kỹ năng xử lý, trình bày và giải thích kết quả một cách logic, mạch lạc và khoa học.

1.3 Đối tượng và phạm vi nghiên cứu

Đối tượng nghiên cứu của đề tài “Phân tích các đặc điểm của xe ảnh hưởng đến quyết định mua xe ô tô đã qua sử dụng” là hành vi ra quyết định mua xe ô tô đã qua sử dụng của người tiêu dùng, được thể hiện qua việc lựa chọn mua hoặc không mua xe, tùy thuộc vào các đặc điểm cụ thể của chiếc xe. Cụ thể, nghiên cứu khai thác một số biến định tính như:

transmission (loại hộp số),

state (tình trạng sở hữu xe),

has_warranty (tình trạng bảo hành),

và biến định lượng hỗ trợ là price_usd (giá xe).

1.4 Kết cấu đề tài

Ngoài phần Mở đầu và Phụ lục, nội dung chính của đề tài được chia thành 5 chương như sau:

Chương I. Tổng quan nghiên cứu: Trình bày lý do chọn đề tài, mục tiêu nghiên cứu, câu hỏi nghiên cứu, đối tượng và phạm vi nghiên cứu, phương pháp tiếp cậcận, cấu trúc đề tài và lược khảo các nghiên cứu trước.

Chương II. Dữ liệu nghiên cứu: Giới thiệu về bộ dữ liệu được sử dụng, mô tả các biến trong dữ liệu, đặc biệt là các biến liên quan trực tiếp đến mục tiêu phân tích.

Chương III. Phương pháp nghiên cứu: Trình bày các phương pháp thống kê mô tả và phân tích được sử dụng trong nghiên cứu như bảng tần số, bảng chéo, tỷ số rủi ro (Risk Ratio), tỷ số odds (Odds Ratio), kiểm định tỷ lệ và mô hình hồi quy tuyến tính cho biến nhị phân….

Chương IV. Kết quả nghiên cứu: Phân tích dữ liệu thực tế dựa trên các phương pháp đã trình bày, diễn giải các kết quả đạt được và thảo luận các phát hiện chính từ mô hình và kiểm định.

Chương V. Kết luận và kiến nghị: Tóm tắt các kết quả chính của nghiên cứu, rút ra kết luận và đề xuất một số kiến nghị có thể áp dụng trong thực tiễn hoặc nghiên cứu tiếp theo.

1.5 Lược khảo các nghiên cứu trước

Dựa trên ba nghiên cứu của Gupta (2013), Oprea (2010) và Gumilar và cộng sự (2020), có thể thấy rằng quyết định mua xe ô tô chịu ảnh hưởng bởi nhiều đặc điểm cụ thể của xe và yếu tố liên quan. Những kết quả này có mối liên hệ rõ ràng với đề tài “Phân tích các đặc điểm của xe ảnh hưởng đến quyết định mua xe ô tô”, bởi chúng cùng tập trung vào việc xác định các yếu tố then chốt từ phía sản phẩm tác động đến hành vi tiêu dùng.

Cụ thể, nghiên cứu của Gupta (2013) nhấn mạnh vai trò của giá cả, hiệu suất nhiên liệu và ảnh hưởng từ nhóm tham chiếu, cho thấy người mua đặc biệt quan tâm đến chi phí sử dụng và ý kiến xã hội khi lựa chọn xe. Điều này gợi ý rằng trong phân tích đặc điểm xe, những yếu tố kinh tế và xã hội nên được xem xét như là các biến quan trọng.

Tương tự, Oprea (2010) sử dụng khai phá dữ liệu để cho thấy sự liên hệ giữa giá xe và các đặc điểm kỹ thuật như năm sản xuất, quãng đường đã đi, dung tích động cơ, loại nhiên liệu,… Điều này cho thấy các thông số kỹ thuật của xe có thể là những chỉ báo mạnh mẽ cho hành vi mua, hỗ trợ trực tiếp cho mục tiêu đề tài là tìm ra đặc điểm nào ảnh hưởng nhiều đến quyết định mua.

Trong khi đó, nghiên cứu của Gumilar và cộng sự (2020) một lần nữa khẳng định ảnh hưởng của giá cả, sản phẩm (có thể hiểu là đặc điểm xe như mẫu mã, tính năng), và địa điểm mua đến hành vi tiêu dùng. Những yếu tố này đều liên quan trực tiếp hoặc gián tiếp đến đặc điểm của xe – nội dung trọng tâm trong đề tài đang nghiên cứu.

CHƯƠNG II: DỮ LIỆU NGHIÊN CỨU

Bộ dữ liệu “cars” chứa thông tin về các quảng cáo xe ô tô, được thu thập từ một trong những danh mục trực tuyến phổ biến nhất tại Belarus. Dữ liệu được tạo và công bố bởi Kirill Lepchenkov trên nền tảng Kaggle (https://www.kaggle.com). Tập dữ liệu bao gồm 20 biến và 38.531 quan sát, mô tả chi tiết các đặc điểm của xe như: thông tin chung (hãng xe, model, năm sản xuất), thông số kỹ thuật (loại động cơ, hộp số, tiêu thụ nhiên liệu), hình thức thân xe và hệ dẫn động, cũng như thông tin về giá bán và tình trạng pháp lý.

Dựa trên bộ dữ liệu này, nghiên cứu sẽ phân tích các yếu tố đặc điểm của xe có thể ảnh hưởng đến quyết định mua xe ô tô bao gồm cả xe đã qua sử dụng của người tiêu dùng. Cụ thể, việc khai thác dữ liệu giúp xác định những thuộc tính nào của xe (ví dụ: loại nhiên liệu, hãng sản xuất, số km đã đi, tình trạng xe, mức giá,…) có khả năng tác động mạnh đến sức hấp dẫn của một chiếc xe trên thị trường xe. Qua đó, nghiên cứu cung cấp cái nhìn định lượng giúp cả người bán và người mua xe hiểu rõ hơn về các yếu tố quan trọng ảnh hưởng đến hành vi mua hàng trong thị trường ô tô đã qua sử dụng.

Các biến trong bộ dữ liệu được phân loại thành 13 biến định tính và 7 biến định lượng cụ thể như sau:

Biến định tính (qualitative / categorical):

  1. manufacturer_name – Hãng sản xuất

  2. model_name – Dòng xe

  3. transmission – Loại hộp số

  4. color – Màu xe

  5. engine_fuel – Loại nhiên liệu

  6. engine_has_gas – Có gắn thêm hệ thống gas (True/False)

  7. engine_type – Kiểu động cơ

  8. body_type – Kiểu thân xe

  9. has_warranty – Còn bảo hành (True/False)

  10. state – Tình trạng xe (mới/cũ)

  11. drivetrain – Hệ dẫn động

  12. purchase_decision – Quyết định mua xe (YES/NO)

  13. location_region – Khu vực rao bán

Biến định lượng (quantitative / numeric):

  1. odometer_value – Số km đã đi

  2. year_produced – Năm sản xuất

  3. engine_capacity – Dung tích động cơ (lít)

  4. price_usd – Giá xe (USD)

  5. number_of_photos – Số lượng ảnh đăng kèm

  6. up_counter – Số lần “đẩy” tin đăng

  7. duration_listed – Số ngày tin tồn tại trên website

data <- read.csv("C:/Users/Ngo Trang/Documents/Phân tích dữ liệu định tính/cars.csv", header = TRUE)
library(DT)
datatable(head(data,5))

CHƯƠNG III: PHƯƠNG PHÁP NGHIÊN CỨU

3.1 Mô hình Hồi quy Logistic

Mô hình hồi quy logistic được sử dụng để mô hình hóa mối quan hệ giữa một biến phụ thuộc nhị phân \(Y \in \{0,1\}\) với một hoặc nhiều biến độc lập \(X_1, X_2, \ldots, X_k\). Mục tiêu là ước lượng xác suất xảy ra của sự kiện \(Y = 1\) dựa trên các giá trị của các biến giải thích.

Hàm xác suất của mô hình logistic có dạng:

\[ P(Y = 1 \mid X) = \pi(X) = \frac{1}{1 + e^{-\eta}} \]

trong đó:

\[ \eta = \beta_0 + \beta_1 X_1 + \beta_2 X_2 + \cdots + \beta_k X_k \]

Hay viết gọn:

\[ \pi(X) = \frac{e^{\beta_0 + \beta_1 X_1 + \cdots + \beta_k X_k}}{1 + e^{\beta_0 + \beta_1 X_1 + \cdots + \beta_k X_k}} \]

Hàm \(\pi(X)\) biểu diễn xác suất xảy ra sự kiện \(Y = 1\), còn \(\eta\) là tổ hợp tuyến tính của các biến độc lập. Lấy logit hai phía của phương trình, ta thu được biểu diễn tuyến tính:

\[ \text{logit}(\pi(X)) = \log\left( \frac{\pi(X)}{1 - \pi(X)} \right) = \beta_0 + \beta_1 X_1 + \beta_2 X_2 + \cdots + \beta_k X_k \]

Ý nghĩa các hệ số

  • Hệ số \(\beta_j\) (với \(j = 1, 2, ..., k\)) biểu diễn mức thay đổi của \(\log(\text{odds})\) khi biến \(X_j\) tăng một đơn vị (giữ các biến khác không đổi).
  • Ta có thể lấy lũy thừa để chuyển về odds ratio:

\[ \text{OR}_j = e^{\beta_j} \]

  • Nếu \(\text{OR}_j > 1\): biến \(X_j\) làm tăng xác suất xảy ra sự kiện.
  • Nếu \(\text{OR}_j < 1\): biến \(X_j\) làm giảm xác suất xảy ra sự kiện.

Ước lượng tham số

Các hệ số \(\beta_0, \beta_1, ..., \beta_k\) được ước lượng thông qua phương pháp Tối đa hóa Hàm hợp lý (Maximum Likelihood Estimation - MLE). Hàm hợp lý (likelihood function) được viết:

\[ L(\beta) = \prod_{i=1}^{n} \pi_i^{y_i} (1 - \pi_i)^{1 - y_i} \]

Trong đó: - \(\pi_i = P(Y_i = 1 \mid X_i)\) - \(y_i \in \{0,1\}\) là giá trị quan sát được

Hàm log-likelihood tương ứng là:

\[ \ell(\beta) = \sum_{i=1}^{n} \left[ y_i \log(\pi_i) + (1 - y_i) \log(1 - \pi_i) \right] \]

3.2 Mô hình Probit

Mô hình hồi quy Probit là một mô hình được sử dụng khi biến phụ thuộc là biến nhị phân \(Y \in \{0,1\}\), tương tự như mô hình Logit. Điểm khác biệt chính nằm ở cách thức mô hình hóa xác suất: thay vì sử dụng hàm logistic, mô hình Probit sử dụng hàm phân phối chuẩn tích lũy.

Hàm xác suất và liên hệ tuyến tính

Mô hình Probit giả định rằng xác suất xảy ra sự kiện \(Y = 1\) được xác định bởi hàm phân phối tích lũy chuẩn chuẩn hóa:

\[ P(Y = 1 \mid X) = \pi(X) = \Phi(\eta) \]

với:

\[ \eta = \beta_0 + \beta_1 X_1 + \beta_2 X_2 + \cdots + \beta_k X_k \]

trong đó: - \(\Phi(\cdot)\) là hàm phân phối tích lũy của phân phối chuẩn chuẩn hoá \(N(0,1)\), - \(\beta_0\) là hệ số chặn, - \(\beta_1, \ldots, \beta_k\) là các hệ số hồi quy.

Hàm xác suất có thể viết:

\[ \pi(X) = \Phi\left( \beta_0 + \sum_{j=1}^{k} \beta_j X_j \right) \]

  • Mô hình Probit cho rằng tồn tại một biến tiềm ẩn liên tục \(Y^*\), được mô hình hoá tuyến tính:

\[ Y^* = \beta_0 + \beta_1 X_1 + \cdots + \beta_k X_k + \varepsilon \]

trong đó \(\varepsilon \sim N(0,1)\), và ta chỉ quan sát biến nhị phân:

\[ Y = \begin{cases} 1, & \text{nếu } Y^* > 0 \\ 0, & \text{nếu } Y^* \leq 0 \end{cases} \]

  • Các hệ số \(\beta_j\) biểu diễn ảnh hưởng của biến \(X_j\) đến xác suất thông qua sự thay đổi của biến tiềm ẩn \(Y^*\).
  • Việc diễn giải trực tiếp \(\beta_j\) không đơn giản như trong mô hình Logit. Tuy nhiên, dấu của \(\beta_j\) vẫn cho biết chiều hướng ảnh hưởng (tăng hoặc giảm xác suất).

Các tham số \(\beta_0, \beta_1, \ldots, \beta_k\) được ước lượng bằng phương pháp Tối đa hoá hàm hợp lý (Maximum Likelihood Estimation - MLE). Hàm hợp lý được viết:

\[ L(\beta) = \prod_{i=1}^{n} \Phi(\eta_i)^{y_i} \left[ 1 - \Phi(\eta_i) \right]^{1 - y_i} \]

trong đó:

\[ \eta_i = \beta_0 + \beta_1 X_{i1} + \cdots + \beta_k X_{ik} \]

Hàm log-likelihood tương ứng:

\[ \ell(\beta) = \sum_{i=1}^{n} \left[ y_i \log(\Phi(\eta_i)) + (1 - y_i) \log(1 - \Phi(\eta_i)) \right] \]

Tuy mô hình Logit và Probit có cách xây dựng khác nhau, nhưng trong thực tế, kết quả ước lượng và phân loại của hai mô hình thường khá tương đồng. Sự khác biệt chủ yếu đến từ giả định phân phối sai số: Logit sử dụng phân phối logistic, còn Probit sử dụng phân phối chuẩn.

3.3 Mô hình Complementary log-log (Cloglog)

Mô hình hồi quy Complementary Log-log (viết tắt là ) là một mô hình nhị phân trong cùng họ với Logit và Probit. Điểm khác biệt của mô hình này nằm ở việc sử dụng hàm liên kết (link function) không đối xứng — cụ thể là hàm :

\[ \text{cloglog}(\pi(X)) = \log\left( -\log(1 - \pi(X)) \right) \]

Trong đó \(\pi(X) = P(Y = 1 \mid X)\) là xác suất xảy ra sự kiện.

Mô hình được định nghĩa như sau:

\[ \log\left( -\log(1 - \pi(X)) \right) = \eta = \beta_0 + \beta_1 X_1 + \beta_2 X_2 + \cdots + \beta_k X_k \]

Hay tương đương:

\[ \pi(X) = 1 - \exp\left( -\exp\left( \beta_0 + \beta_1 X_1 + \cdots + \beta_k X_k \right) \right) \]

Đặc điểm và ứng dụng

  • Mô hình Cloglog phù hợp trong các tình huống mà xác suất xảy ra sự kiện \(Y = 1\) tăng rất nhanh ở một số vùng giá trị của biến giải thích, nhưng chậm ở những vùng khác. Do đó, nó thích hợp khi dữ liệu có tính chất .
  • Được ứng dụng nhiều trong:
  • Tương tự các mô hình nhị phân khác, dấu của hệ số \(\beta_j\) cho biết chiều hướng tác động của biến \(X_j\) đến log của xác suất tích lũy:

\[ \beta_j > 0 \Rightarrow \text{biến } X_j \text{ làm tăng } P(Y = 1) \] \[ \beta_j < 0 \Rightarrow \text{biến } X_j \text{ làm giảm } P(Y = 1) \]

  • Tuy nhiên, vì hàm liên kết không đối xứng nên mức độ thay đổi không đồng đều, và việc diễn giải trực tiếp hệ số không đơn giản như trong Logit.

Ước lượng tham số

Tham số của mô hình Cloglog được ước lượng bằng phương pháp Tối đa hóa hàm hợp lý (MLE). Hàm hợp lý được viết:

\[ L(\beta) = \prod_{i=1}^{n} \left[ 1 - \exp\left( -\exp(\eta_i) \right) \right]^{y_i} \cdot \left[ \exp\left( -\exp(\eta_i) \right) \right]^{1 - y_i} \]

với:

\[ \eta_i = \beta_0 + \beta_1 X_{i1} + \cdots + \beta_k X_{ik} \]

Hàm log-likelihood:

\[ \ell(\beta) = \sum_{i=1}^{n} \left[ y_i \log\left( 1 - \exp\left( -\exp(\eta_i) \right) \right) + (1 - y_i)\left( -\exp(\eta_i) \right) \right] \]

CHƯƠNG IV: KẾT QUẢ NGHIÊN CỨU

Tại bài báo cáo này các biến được sử dụng để phân tích bao gồm:

Biến phụ thuộc

purchase_decision - Quyết định mua xe: Phản ánh việc người mua có lựa chọn chiếc xe đó hay không, được thể hiện qua hành vi người bán chấp nhận trao đổi (như một chỉ báo về khả năng bán).

  • YES – Xe được chấp nhận trao đổi → Được mua

  • NO – Không chấp nhận trao đổi → Không được mua

Biến độc lập

  1. transmission – Loại hộp số: Loại hộp số mà xe sử dụng, phản ánh sự thuận tiện và thói quen sử dụng của người lái.
  • automatic – Hộp số tự động

  • mechanical – Hộp số cơ khí

  1. state – Tình trạng sở hữu của xe: Phản ánh hiện trạng sử dụng của phương tiện, từ đó ảnh hưởng đến quyết định mua của khách hàng.
  • emergency – Xe thuộc diện sử dụng đặc biệt, như xe cứu thương, cứu hỏa hoặc xe dịch vụ.

  • new – Xe hoàn toàn mới, chưa qua sử dụng.

  • owned – Xe đã qua sử dụng, thuộc sở hữu cá nhân hoặc đã đăng ký trước đó.

  1. has_warranty – Tình trạng bảo hành: Cho biết xe có còn trong thời hạn bảo hành hay không, thể hiện mức độ tin cậy và an tâm cho người mua.
  • TRUE – Có bảo hành

  • FALSE – Không bảo hành

  1. price_usd – Giá xe (USD): Giá bán xe tính theo đô la Mỹ, là yếu tố tài chính then chốt ảnh hưởng đến quyết định mua xe.

Phạm vi giá trị: Dao động từ vài trăm đến hàng chục nghìn USD tùy theo dòng xe và chất lượng.

4.1 Thống kê mô tả cho từng biến

4.1.1 Biến purchase_decision (Quyết định mua xe)

Đầu tiên, tôi lập bảng tần số và tần suất cho biến purchase_decision nhằm mục tiêu thống kê số lượng các quan sát theo từng mức giá trị của biến phụ thuộc. Biến này phản ánh việc xe ô tô có được người mua lựa chọn hay không, dưới dạng nhị phân (YES/NO). Qua bảng này, tôi có thể đánh giá sơ bộ mức độ phổ biến của hành vi mua trong toàn bộ tập dữ liệu.

# Bảng tần số
pu1 <- table(data$purchase_decision)
# Bảng tần suất
pu2 <- prop.table(pu1)
pu <- data.frame(
  "_" = names(pu1),
  "Tần số" = as.vector(pu1),
  "Tần suất" = round(as.vector(pu2) * 100, 2)
  )
datatable(pu)
library(ggplot2)
ggplot(as.data.frame(pu2), aes(x = "", y = Freq, fill = Var1)) +
  geom_col(width = 1, color = "white") +
  coord_polar("y") +
  geom_text(aes(label = paste0(round(Freq * 100), "%")),
            position = position_stack(vjust = 0.5)) +
  labs(title = "Phân bố tỷ lệ theo quyết định mua xe (purchase_decision)", fill = "Trạng thái mua xe") +
  theme_void() +
  theme(plot.title = element_text(hjust = 0.5))

Kết quả thống kê mô tả của biến purchase_decision cho thấy trong tổng số 38.531 quan sát, có 24.945 trường hợp (chiếm 64,74%) không có hành vi mua (mức giá trị NO), trong khi chỉ có 13.586 trường hợp (chiếm 35,26%) thể hiện hành vi mua xe (YES).

Sự chênh lệch rõ rệt này phản ánh rằng đa số xe ô tô trong dữ liệu chưa được người mua lựa chọn, hoặc chưa hội đủ điều kiện hấp dẫn để dẫn đến giao dịch. Đây là một đặc điểm quan trọng, cho thấy cần tiếp tục phân tích các yếu tố có thể tác động đến quyết định mua, nhằm hiểu rõ hơn vì sao người mua chỉ lựa chọn một tỷ lệ nhỏ trong số các xe được rao bán.

4.1.2 Biến transmission (Loại hộp số)

Trong phần này, tôi lập bảng tần số cho biến transmission nhằm mục tiêu thống kê số lượng các quan sát theo từng loại hộp số được sử dụng trong xe ô tô đã qua sử dụng. Biến này phản ánh đặc điểm kỹ thuật quan trọng có thể ảnh hưởng đến quyết định lựa chọn xe của người mua, do thói quen lái và mức độ thuận tiện khác nhau giữa các loại hộp số.

# Bảng tần số
tr1 <- table(data$transmission)
# Bảng tần suất
tr2 <- prop.table(tr1)
tr <- data.frame(
  "_" = names(tr1),
  "Tần số" = as.vector(tr1),
  "Tần suất" = round(as.vector(tr2) * 100, 2)
  )
datatable(tr)
ggplot(as.data.frame(tr2), aes(x = "", y = Freq, fill = Var1)) +
  geom_col(width = 1, color = "white") +
  coord_polar("y") +
  geom_text(aes(label = paste0(round(Freq * 100), "%")),
            position = position_stack(vjust = 0.5)) +
  labs(title = "Tỷ lệ phân bố các nhóm thuộc biến hộp số (transmission)", fill = "Loại hộp số") +
  theme_void() +
  theme(plot.title = element_text(hjust = 0.5))

Kết quả thống kê cho thấy trong tổng số 38.531 xe được khảo sát, có 25.633 xe (chiếm 66,53%) sử dụng hộp số sàn (mechanical), trong khi chỉ có 12.898 xe (chiếm 33,47%) sử dụng hộp số tự động (automatic).

Điều này cho thấy xe số sàn vẫn chiếm ưu thế trên thị trường xe ô tô đã qua sử dụng trong tập dữ liệu khảo sát. Tuy nhiên, tỷ lệ xe số tự động cũng tương đối đáng kể, phản ánh sự hiện diện ngày càng phổ biến của loại hộp số này, có thể liên quan đến thói quen lái và xu hướng lựa chọn xe tiện nghi hơn của người mua trong thời gian gần đây.

4.1.3 state (Tình trạng sở hữu xe)

Tiếp theo, tôi tiến hành lập bảng tần số cho biến state nhằm thống kê số lượng xe theo tình trạng sở hữu hoặc mục đích sử dụng trong tập dữ liệu. Biến này phản ánh trạng thái của xe như đã qua sử dụng, xe mới hoặc xe phục vụ trong các tình huống khẩn cấp - những yếu tố có thể ảnh hưởng đến quyết định mua của người tiêu dùng, đặc biệt trong bối cảnh người mua ngày càng cân nhắc giữa giá trị sử dụng, độ tin cậy và chi phí đầu tư ban đầu.

# Bảng tần số
st1 <- table(data$state)
# Bảng tần suất
st2 <- prop.table(st1)
st <- data.frame(
  "_" = names(st1),
  "Tần số" = as.vector(st1),
  "Tần suất" = round(as.vector(st2) * 100, 3)
  )
datatable(st)
ggplot(as.data.frame(st1), aes(x = Var1, y = Freq, fill = Var1)) +
  geom_col(width = 0.7, color = "white") +
  geom_text(aes(label = paste0(Freq, " (", round(st2 * 100), "%)")),
            vjust = -0.5, size = 4) +
  labs(
    title = "Biểu đồ cột mô tả lựa chọn theo tình trạng của xe (state)",
    x = "Tình trạng xe",
    y = "Tần số",
    fill = "Tình trạng xe"
  ) +
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5))

Kết quả thống kê tần số cho biến state cho thấy rằng phần lớn các xe trong tập dữ liệu thuộc nhóm xe đã qua sử dụng (owned), với tần số lên tới 37.723 xe, chiếm 97,90% toàn bộ mẫu. Trong khi đó, nhóm xe mới (new) chỉ ghi nhận 438 xe, tương đương 1,14%, và nhóm xe phục vụ trong các tình huống khẩn cấp (emergency) có 370 xe, chiếm tỷ lệ khiêm tốn 0,96%. Sự chênh lệch rõ rệt này phản ánh thực tế rằng thị trường xe đã qua sử dụng chiếm ưu thế trong dữ liệu thu thập được, đồng thời cũng cho thấy hành vi mua xe của người tiêu dùng có thể tập trung chủ yếu vào nhóm xe này. Mặt khác, tỷ lệ xe mới và xe khẩn cấp khá thấp, điều này cần được cân nhắc khi phân tích mối quan hệ giữa biến state với các yếu tố khác như quyết định mua, bởi cơ cấu mẫu không đồng đều có thể ảnh hưởng đến kết luận thống kê.

4.1.4 has_warranty (Còn bảo hành)

Phần này, tôi lập bảng tần số cho biến has_warranty nhằm mục tiêu thống kê số lượng xe còn trong thời hạn bảo hành. Biến này phản ánh mức độ đảm bảo kỹ thuật đi kèm với xe khi bán, có thể đóng vai trò như một yếu tố tạo niềm tin và ảnh hưởng đến quyết định mua của người tiêu dùng, đặc biệt trong bối cảnh mua bán xe thường tiềm ẩn rủi ro về chất lượng.

# Bảng tần số
ha1 <- table(data$has_warranty)
# Bảng tần suất
ha2 <- prop.table(ha1)
ha <- data.frame(
  "_" = names(ha1),
  "Tần số" = as.vector(ha1),
  "Tần suất" = round(as.vector(ha2) * 100, 3)
  )
datatable(ha)
ggplot(as.data.frame(ha2), aes(x = "", y = Freq, fill = Var1)) +
  geom_col(width = 1, color = "white") +
  coord_polar("y") +
  geom_text(aes(label = paste0(round(Freq * 100), "%")),
            position = position_stack(vjust = 0.5)) +
  labs(title = "Tỷ lệ phân bố các nhóm thuộc biến tình trạng bảo hành xe (has_warranty)", fill = "Tình trạng bảo hành") +
  theme_void() +
  theme(plot.title = element_text(hjust = 0.5))

Kết quả thống kê cho thấy trong tổng số 38.531 xe, có tới 38.082 xe (chiếm 98,84%) không còn trong thời hạn bảo hành (FALSE), trong khi chỉ có 449 xe (chiếm 1,17%) còn bảo hành (TRUE).

Tỷ lệ xe còn bảo hành là rất thấp, cho thấy rằng phần lớn các xe ô tô đã qua sử dụng trên thị trường không đi kèm với chính sách bảo hành chính hãng hoặc bảo hành mở rộng. Điều này có thể ảnh hưởng đáng kể đến tâm lý người mua, bởi vì bảo hành thường được xem là một yếu tố đảm bảo chất lượng và giảm thiểu rủi ro sau mua. Đây cũng là cơ sở quan trọng để xem xét biến này như một yếu tố tác động đến quyết định mua xe trong các phân tích tiếp theo.

4.1.5 price_usd (Giá xe)

library(knitr)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(tidyr)
# Tính thống kê mô tả
pr <- data %>%
  summarise(
    `Số quan sát (n)` = n(),
    `Giá trị nhỏ nhất (Min)` = min(price_usd, na.rm = TRUE),
    `Q1 (25%)` = quantile(price_usd, 0.25, na.rm = TRUE),
    `Trung vị (Median)` = median(price_usd, na.rm = TRUE),
    `Trung bình (Mean)` = mean(price_usd, na.rm = TRUE),
    `Q3 (75%)` = quantile(price_usd, 0.75, na.rm = TRUE),
    `Giá trị lớn nhất (Max)` = max(price_usd, na.rm = TRUE),
    `Độ lệch chuẩn (SD)` = sd(price_usd, na.rm = TRUE),
    `Phương sai (Variance)` = var(price_usd, na.rm = TRUE),
    `Hệ số biến thiên (CV)` = sd(price_usd, na.rm = TRUE) / mean(price_usd, na.rm = TRUE)
  ) %>%
  tidyr::pivot_longer(everything(), names_to = "Chỉ số thống kê", values_to = "Giá trị thống kê")
kable(pr, digits = 2, caption = "Thống kê mô tả biến price_usd")
Thống kê mô tả biến price_usd
Chỉ số thống kê Giá trị thống kê
Số quan sát (n) 38531.00
Giá trị nhỏ nhất (Min) 1.00
Q1 (25%) 2100.00
Trung vị (Median) 4800.00
Trung bình (Mean) 6639.97
Q3 (75%) 8990.00
Giá trị lớn nhất (Max) 50000.00
Độ lệch chuẩn (SD) 6428.15
Phương sai (Variance) 41321138.37
Hệ số biến thiên (CV) 0.97
hist(data$price_usd,
     breaks = 50,
     main = "Biểu đồ Histogram của giá xe (price_usd)",
     xlab = "Giá xe (USD)",
     col = "skyblue", border = "white")

Biến price_usd trong tập dữ liệu gồm 38.531 quan sát, với giá trị dao động từ 1.000 đến 50.000 USD, cho thấy mức độ phân tán rất rộng. Giá trị trung bình là 6.639,97, cao hơn đáng kể so với trung vị là 4.800, cho thấy phân phối có xu hướng lệch phải - tức là tồn tại một số lượng nhỏ các xe có giá rất cao kéo trung bình lên. Khoảng tứ phân vị (Q1 = 2.100, Q3 = 8.990) cho thấy 50% xe nằm trong khoảng giá từ 2.100 đến 8.990, phản ánh sự tập trung chính của thị trường vào phân khúc xe tầm trung hoặc giá rẻ. Độ lệch chuẩn cao (SD = 6.428,15) cùng với phương sai lớn (Var = 41.321.138,37) cho thấy mức độ biến động mạnh về giá giữa các xe. Đặc biệt, hệ số biến thiên (CV) = 0,97, tức gần 1, cho thấy mức độ phân tán tương đối lớn so với trung bình, điều này hàm ý thị trường xe cũ có sự đa dạng rất cao về mức giá – có thể do khác biệt về hãng xe, đời xe, tình trạng sử dụng, loại xe, và các yếu tố kỹ thuật khác.

# Thiết lập bố cục gồm 1 hàng, 2 cột
par(mfrow = c(1, 2))

# Biểu đồ 1: Boxplot của giá xe
boxplot(data$price_usd,
        main = "Boxplot của giá xe",
        ylab = "Giá (USD)",
        col = "orange")

# Biểu đồ 2: Histogram sau biến đổi log
hist(log1p(data$price_usd),
     breaks = 50,
     main = "Histogram của log(1 + price_usd)",
     xlab = "log(1 + Giá)",
     col = "lightgreen", border = "white")

# Reset bố cục sau khi vẽ (nếu cần vẽ biểu đồ mới sau đó)
par(mfrow = c(1, 1))

Hình bên trái cho thấy giá xe có nhiều điểm ngoại lệ ở mức cao, trong khi biểu đồ bên phải sau khi biến đổi log giúp làm giảm độ lệch của phân phối, mang lại hình dạng gần chuẩn hơn. Điều này cho thấy biến đổi log có thể hữu ích khi sử dụng trong mô hình hồi quy.

Biểu đồ bên trái – Boxplot của price_usd (Giá xe): Phần lớn các mức giá xe tập trung ở khoảng từ 0 đến 15.000 USD. Có rất nhiều giá trị ngoại lệ (outliers) ở phía trên, đặc biệt là các xe có giá vượt quá 30.000 USD, được biểu diễn bằng các dấu chấm tròn. Chiều dài “râu” phía trên dài hơn rất nhiều so với phía dưới, cho thấy phân phối giá bị lệch phải mạnh (phần đuôi kéo dài về phía giá cao).

Biểu đồ bên phải – Histogram của log(1 + price_usd): Sau khi biến đổi log, phân phối của giá xe trở nên gần đối xứng hơn (gần chuẩn), không còn bị kéo lệch mạnh về một phía như trước. Điều này cho thấy việc biến đổi log giúp dữ liệu trở nên dễ mô hình hóa hơn, đặc biệt là khi đưa vào các mô hình hồi quy (logistic, probit…).

Qua hai biểu đồ, có thể thấy biến price_usd gốc có phân phối lệch phải với nhiều ngoại lệ. Tuy nhiên, sau khi áp dụng biến đổi log, phân phối trở nên đối xứng hơn và phù hợp hơn để sử dụng trong phân tích hồi quy. Do đó, việc sử dụng log(price_usd) trong mô hình có thể cải thiện tính tuyến tính và độ phù hợp mô hình.

4.2 Phân tích loại hộp số xe ảnh hưởng đến quyết định mua xe

4.2.1 Thống kê mô tả cho cặp biến purchase_decision và transmission

Trong trường hợp này, chúng ta lập bảng tần số chéo và tính tỷ lệ phần trăm theo hàng giữa hai biến purchase_decision (quyết định mua xe) và transmission (loại hộp số xe), nhằm mục tiêu phân tích mối liên hệ giữa hành vi mua xe và loại hộp số được trang bị. Việc phân tổ chéo giữa hai biến định tính này cho phép quan sát sự khác biệt trong tỷ lệ mua giữa các nhóm hộp số khác nhau, từ đó đưa ra nhận định ban đầu về khả năng loại hộp số ảnh hưởng đến quyết định mua xe của người tiêu dùng.

pu_tr1 <- table(data$purchase_decision, data$transmission)
pu_tr1_total <- addmargins(pu_tr1)
pu_tr2 <- round(prop.table(pu_tr1, margin = 1) * 100, 2)
kable(pu_tr1_total, caption = "Bảng 1. Tần số giữa quyết định mua xe và loại hộp số")
Bảng 1. Tần số giữa quyết định mua xe và loại hộp số
automatic mechanical Sum
NO 8115 16830 24945
YES 4783 8803 13586
Sum 12898 25633 38531
kable(pu_tr2, caption = "Bảng 2. Tần suất (%) giữa quyết định mua xe và loại hộp số")
Bảng 2. Tần suất (%) giữa quyết định mua xe và loại hộp số
automatic mechanical
NO 32.53 67.47
YES 35.21 64.79
ggplot(as.data.frame(pu_tr1), aes(x = Var1, y = Freq, fill = Var2)) +
  geom_col(position = position_dodge(width = 0.9)) +
  geom_text(aes(label = paste0(Freq, " (", 
                               round(pu_tr2[cbind(as.character(Var1), as.character(Var2))], 1), "%)")),
            position = position_dodge(width = 0.9),
            vjust = -0.3, size = 3) +
  labs(
    title = "Phân bố quyết định mua xe theo loại hộp số",
    x = "Quyết định mua xe",
    y = "Số lượng",
    fill = "Loại hộp số"
  ) +
  theme_minimal()

Kết quả từ bảng tần số cho thấy trong tổng số 24.945 trường hợp không mua xe, có 8.115 xe sử dụng hộp số tự động và 16.830 xe sử dụng hộp số cơ khí. Trong khi đó, trong tổng số 13.586 trường hợp đã mua xe, có 4.783 xe là hộp số tự động và 8.803 xe là hộp số cơ khí.

Bảng tần suất theo hàng cho thấy, trong nhóm không mua xe, tỷ lệ xe số tự động chiếm 32,53%, trong khi xe số cơ khí chiếm 67,47%. Ở nhóm đã mua xe, tỷ lệ xe số tự động là 35,21%, còn xe số cơ khí chiếm 64,79%. Như vậy, người mua có xu hướng chọn xe hộp số tự động nhiều hơn so với nhóm không mua, tuy sự khác biệt là không lớn.

4.2.2 Phân tích thông qua Relative Risk

Trong phần này, tôi tiến hành tính toán Rủi ro tương đối (Relative Risk – RR) nhằm phân tích mức độ ảnh hưởng của từng loại hộp số đến quyết định mua xe ô tô của khách hàng. Mục tiêu là đánh giá xem khách hàng có xu hướng quan tâm và đưa ra quyết định mua (YES) hay không mua (NO) tùy theo loại hộp số mà xe đang sử dụng. Để đảm bảo kết quả khách quan và toàn diện, việc tính RR sẽ được thực hiện theo 4 hướng tiếp cận khác nhau bằng cách đảo chiều hàng, cột trong bảng chéo.

  • Quan tâm đến khách hàng mua xe với xe sử dụng hộp số cơ khí
library(epitools)
RRpu_tr1 <- riskratio(pu_tr1)
## Bảng tần số
kable(RRpu_tr1$data, caption = "Bảng tần số giữa purchase_decision và transmission")
Bảng tần số giữa purchase_decision và transmission
automatic mechanical Total
NO 8115 16830 24945
YES 4783 8803 13586
Total 12898 25633 38531
## Bảng Risk Ratio
kable(RRpu_tr1$measure, digits = 3, caption = "Bảng Tỷ số rủi ro (Risk Ratio)")
Bảng Tỷ số rủi ro (Risk Ratio)
estimate lower upper
NO 1.00 NA NA
YES 0.96 0.946 0.975

Dựa vào kết quả tính Rủi ro tương đối ở trên ta có được RR = 0.96 đồng nghĩa với việc số khách hàng đồng ý mua xe sử dụng hộp số cơ khí bằng 0.96 lần số khách hàng không đồng ý mua xe sử dụng hộp số cơ khí.

  • Quan tâm đến khách hàng không mua xe với xe sử dụng hộp số tự động
RRpu_tr2<- riskratio(pu_tr1, rev = "b")
## Bảng tần số
kable(RRpu_tr2$data, caption = "Bảng tần số giữa purchase_decision và transmission")
Bảng tần số giữa purchase_decision và transmission
mechanical automatic Total
YES 8803 4783 13586
NO 16830 8115 24945
Total 25633 12898 38531
## Bảng Risk Ratio
kable(RRpu_tr2$measure, digits = 3, caption = "Bảng Tỷ số rủi ro (Risk Ratio)")
Bảng Tỷ số rủi ro (Risk Ratio)
estimate lower upper
YES 1.000 NA NA
NO 0.924 0.898 0.951

Dựa vào kết quả tính Tỷ số rủi ro (Relative Risk) ở trên, ta thu được giá trị RR = 0.924. Điều này có nghĩa là số khách hàng không đồng ý mua xe sử dụng hộp số từ động bằng 0.924 lần so với số khách hàng đồng ý mua xe có cùng loại hộp số tự động.

  • Quan tâm đến khách hàng mua xe với xe sử dụng hộp số tự động
RRpu_tr3<- riskratio(pu_tr1, rev = "c")
## Bảng tần số
kable(RRpu_tr3$data, caption = "Bảng tần số giữa purchase_decision và transmission")
Bảng tần số giữa purchase_decision và transmission
mechanical automatic Total
NO 16830 8115 24945
YES 8803 4783 13586
Total 25633 12898 38531
## Bảng Risk Ratio
kable(RRpu_tr3$measure, digits = 3, caption = "Bảng Tỷ số rủi ro (Risk Ratio)")
Bảng Tỷ số rủi ro (Risk Ratio)
estimate lower upper
NO 1.000 NA NA
YES 1.082 1.051 1.114

Kết quả ở trên cho ta thấy giá trị Tỷ số rủi ro (Relative Risk) là RR = 1.082. Điều này có nghĩa là số khách hàng đồng ý mua xe sử dụng hộp số từ động cao gấp 1.082 lần so với số khách hàng không đồng ý mua xe có cùng loại hộp số tự động.

  • Quan tâm đến khách hàng không mua xe với xe sử dụng hộp số cơ khí
RRpu_tr4<- riskratio(pu_tr1, rev = "r")
## Bảng tần số
kable(RRpu_tr4$data, caption = "Bảng tần số giữa purchase_decision và transmission")
Bảng tần số giữa purchase_decision và transmission
automatic mechanical Total
YES 4783 8803 13586
NO 8115 16830 24945
Total 12898 25633 38531
## Bảng Risk Ratio
kable(RRpu_tr4$measure, digits = 3, caption = "Bảng Tỷ số rủi ro (Risk Ratio)")
Bảng Tỷ số rủi ro (Risk Ratio)
estimate lower upper
YES 1.000 NA NA
NO 1.041 1.026 1.057

Tỷ số rủi ro (Relative Risk) thu được với giá trị RR = 1.041. Điều này có nghĩa là số khách hàng không đồng ý mua xe sử dụng hộp số cơ khí cao gấp 1.041 lần so với số khách hàng đồng ý mua xe có cùng loại hộp số cơ khí.

4.2.3 Phân tích thông qua Odd-Ratio

Chúng ta có thể hiểu rằng Odd là một đại lượng thống kê đo lường xác suất của một sự kiện xảy ra so với không xảy ra. Odd được tính bằng cách chia tỷ lệ giữa xác suất xảy ra và xác suất không xảy ra của một sự kiện. Ngoài ra ta có thêm chỉ số odd ratio là tỷ lệ giữa odds của hai nhóm khác nhau. Nó cho biết mức độ thay đổi của odd giữa hai nhóm so với nhau.

Trong phần này tôi sẽ tính tỷ lệ Odd Ratio của cặp biến purchase_decisiontransmission.

## Bảng tần số
kable(oddsratio(pu_tr1,rev = "r")$data, caption = "Bảng tần số giữa purchase_decision và transmission")
Bảng tần số giữa purchase_decision và transmission
automatic mechanical Total
YES 4783 8803 13586
NO 8115 16830 24945
Total 12898 25633 38531
## Bảng Risk Ratio
kable(oddsratio(pu_tr1,rev = "r")$measure, digits = 3, caption = "Bảng kết quả Odd Ratio")
Bảng kết quả Odd Ratio
estimate lower upper
YES 1.000 NA NA
NO 1.127 1.078 1.178

Kết quả cho thấy Odds Ratio ≈ 1.127, tức là:

Tỷ số giữa số lượng khách hàng đồng ý mua và mua xe hộp tự động (4783/8115) cao hơn gấp 1.127 lần so với tỷ số tương ứng ở xe hộp số cơ khí (8803/16830).

Nói cách khác, xác suất đồng ý mua của xe cơ khí là thấp hơn so với xe tự động, hay xe sử dụng hộp số cơ khí có xu hướng kém hấp dẫn hơn trong quyết định mua của khách hàng.

4.2.4 Thống kê suy diễn

  • Kiểm định tính độc lập cho cặp biến purchase_decision và transmission

Giả thuyết:

H₀ :purchase_decision và transmission độc lập với nhau.

H₁ :purchase_decision và transmission không độc lập.

chisq.test(pu_tr1)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  pu_tr1
## X-squared = 28.117, df = 1, p-value = 1.142e-07

Qua kết quả kiểm định cho ta p-value = 1.142e-07 < 0.05 bác bỏ H₀, đồng nghĩa với việc phân loại hộp số xe có ảnh hưởng đến quyết định mua xe của khách hàng.

  • Khoảng ước lượng

p₁ = P(Tỷ lệ quyết định mua xe ở nhóm xe sử dụng hộp số tự động)

p₂ = P(Tỷ lệ quyết định mua xe ở nhóm xe sử dụng hộp số cơ khí)

Giả thuyết:

H₀: p₁ − p₂ = 0(Tỷ lệ quyết định mua xe ở nhóm xe sử dụng hộp số tự động và nhóm xe sử dụng hộp cơ khí bằng nhau)

H₁: p₁ − p₂ > 0(Tỷ lệ quyết định mua xe ở nhóm xe sử dụng hộp số tự động lớn hơn nhóm xe sử dụng hộp cơ khí)

success1 <- pu_tr1["YES", c("automatic", "mechanical")]
total1 <- colSums(pu_tr1)[c("automatic", "mechanical")]
# Kiểm định tỷ lệ: p1 - p2 > 0
prop.test(success1, total1, alternative = "greater", correct = FALSE)
## 
##  2-sample test for equality of proportions without continuity correction
## 
## data:  success1 out of total1
## X-squared = 28.237, df = 1, p-value = 5.367e-08
## alternative hypothesis: greater
## 95 percent confidence interval:
##  0.01887936 1.00000000
## sample estimates:
##    prop 1    prop 2 
## 0.3708327 0.3434245

Kết quả kiểm định cho thấy p-value = 5.367e-08 < α=5%, tức là có ý nghĩa thống kê rất mạnh để bác bỏ giả thuyết H₀. Điều này cho thấy tỷ lệ khách hàng quyết định mua xe ở nhóm hộp số tự động cao hơn đáng kể so với hộp số cơ khí. Cụ thể, tỷ lệ mua ở nhóm hộp số tự động là 37.08%, trong khi nhóm cơ khí là 34.34%.

4.2.5 Mô hình hồi quy cho dữ liệu nhị phân

Mô hình logit

Ngoài ra chúng ta có thể thực hiện mô hình hồi quy khi có hàm liên kết dạng g(μ)=logit(μ)=ln(μ/(1−μ)) để phân tích mối quan hệ giữa quyết định mua xe và loại hộp số xe. Trong đó, phạm trù “automatic” (hộp số tự động) được chọn làm mức tham chiếu trong biến transmission. Mô hình hồi quy logistic sẽ cho biết xác suất mua xe thay đổi như thế nào khi khách hàng lựa chọn xe sử dụng hộp số cơ khí so với hộp số tự động.

logit1 <- glm(factor(purchase_decision) ~ transmission, data = data, family = binomial(link = "logit"))
summary(logit1)
## 
## Call:
## glm(formula = factor(purchase_decision) ~ transmission, family = binomial(link = "logit"), 
##     data = data)
## 
## Coefficients:
##                        Estimate Std. Error z value Pr(>|z|)    
## (Intercept)            -0.52865    0.01823 -29.000  < 2e-16 ***
## transmissionmechanical -0.11942    0.02248  -5.313 1.08e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 50016  on 38530  degrees of freedom
## Residual deviance: 49988  on 38529  degrees of freedom
## AIC: 49992
## 
## Number of Fisher Scoring iterations: 4

Phương trình logit của mô hình được biểu diễn như sau:

\[ \log\left(\frac{\mu}{1 - \mu}\right) = -0.52865 - 0.11942 \cdot \text{transmission}_{\text{mechanical}} \]

Trong đó, π là xác suất một khách hàng sẽ mua xe, và transmission (mechanical) = 1 nếu xe có hộp số cơ khí, 0 nếu là hộp số tự động. Như vậy, loại hộp số có ảnh hưởng đáng kể đến hành vi mua xe của khách hàng, với xu hướng ưu tiên xe số tự động hơn xe số cơ khí.

Kết quả hồi quy logistic cho thấy biến transmission (loại hộp số) có ảnh hưởng có ý nghĩa thống kê đến quyết định mua xe (p = 1.08e-07 < 0.001). Trong mô hình, biến transmission được xử lý dưới dạng biến định tính với hai mức: “automatic” và “mechanical”, trong đó “automatic” được R mặc định chọn làm nhóm cơ sở do đứng trước theo thứ tự bảng chữ cái. Do đó, biến giả transmission (mechanical) nhận giá trị 1 nếu xe có hộp số cơ khí, và 0 nếu là hộp số tự động. Hệ số ước lượng của biến transmission (mechanical) là -0.11942, cho thấy xe sử dụng hộp số cơ khí có log-odds mua xe thấp hơn trung bình 0.119 đơn vị so với xe số tự động, giữ các yếu tố khác không đổi. Tỷ số odds tương ứng là exp(−0.11942) ≈ 0.8875, nghĩa là khả năng mua xe số cơ khí chỉ bằng khoảng 88.75% so với xe số tự động.

Mô hình probit

Tương tự, chúng ta cũng có thể áp dụng mô hình hồi quy probit để phân tích mối quan hệ giữa quyết định mua xe và loại hộp số. Trong mô hình này, phạm trù “automatic” (hộp số tự động) tiếp tục được chọn làm mức tham chiếu trong biến transmission. Mô hình hồi quy sử dụng hàm liên kết chuẩn sẽ cho biết xác suất mua xe thay đổi như thế nào khi khách hàng lựa chọn xe sử dụng hộp số cơ khí so với hộp số tự động, nhưng được biểu diễn thông qua biến đổi tuyến tính trên thang chuẩn hóa.

probit1 <- glm(factor(purchase_decision) ~ transmission, family = binomial(link = "probit"), data = data)
summary(probit1)
## 
## Call:
## glm(formula = factor(purchase_decision) ~ transmission, family = binomial(link = "probit"), 
##     data = data)
## 
## Coefficients:
##                        Estimate Std. Error z value Pr(>|z|)    
## (Intercept)            -0.32965    0.01126 -29.286  < 2e-16 ***
## transmissionmechanical -0.07349    0.01385  -5.307 1.11e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 50016  on 38530  degrees of freedom
## Residual deviance: 49988  on 38529  degrees of freedom
## AIC: 49992
## 
## Number of Fisher Scoring iterations: 4

Từ kết quả ước lượng mô hình hồi quy nhị phân với hàm probit, ta thu được phương trình:

\[ \Phi^{-1}(\mu) = -0.32965 - 0.07349 \cdot \text{transmission}_{\text{mechanical}} \] Kết quả hồi quy sử dụng mô hình Probit cho thấy loại hộp số là một yếu tố có ảnh hưởng thống kê rõ rệt đến xác suất khách hàng quyết định mua xe. Cụ thể:

Hệ số chặn (Intercept) là −0.32965 khi xe sử dụng hộp số tự động (mức tham chiếu). Điều này cho thấy xác suất trung bình để khách hàng mua xe hộp số tự động là khoảng 37.0%.

Hệ số ước lượng cho biến transmissionmechanical là −0.07349, mang ý nghĩa rằng nếu xe sử dụng hộp số cơ khí, thì điểm z (z-score) trong thang chuẩn hóa sẽ giảm thêm 0.07349 đơn vị so với xe hộp số tự động. Khi đó, xác suất mua xe giảm xuống còn khoảng 34.3%.

Từ kết quả này, có thể rút ra rằng khách hàng có xu hướng ưu tiên lựa chọn xe có hộp số tự động hơn là hộp số cơ khí. Do đó, các doanh nghiệp trong lĩnh vực phân phối ô tô, đặc biệt là thị trường xe đã qua sử dụng, nên cân nhắc yếu tố hộp số trong định hướng nhập hàng, xây dựng danh mục xe và thiết kế các chương trình tiếp thị, nhằm tối ưu hóa khả năng tiêu thụ và đáp ứng tốt hơn nhu cầu thực tế từ phía khách hàng.

Mô hình cloglog

Cuối cùng, tôi thực hiện phân tích bằng mô hình hồi quy sử dụng hàm liên kết cloglog. Đây là một lựa chọn thay thế cho logit và probit, thường được sử dụng khi khả năng xảy ra sự kiện là nhỏ hoặc có xu hướng bất đối xứng. Việc áp dụng mô hình này nhằm kiểm tra tính ổn định của mối quan hệ giữa trạng thái khách hàng và hành vi mua xe dưới một góc nhìn khác, đồng thời đánh giá xem mô hình phi đối xứng có cải thiện khả năng giải thích hành vi thực tế của khách hàng hay không.

cloglog1 <- glm(factor(purchase_decision) ~ transmission, family = binomial(link = "cloglog"), data = data)
summary(cloglog1)
## 
## Call:
## glm(formula = factor(purchase_decision) ~ transmission, family = binomial(link = "cloglog"), 
##     data = data)
## 
## Coefficients:
##                        Estimate Std. Error z value Pr(>|z|)    
## (Intercept)            -0.76926    0.01459 -52.728  < 2e-16 ***
## transmissionmechanical -0.09654    0.01811  -5.329 9.85e-08 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 50016  on 38530  degrees of freedom
## Residual deviance: 49988  on 38529  degrees of freedom
## AIC: 49992
## 
## Number of Fisher Scoring iterations: 5

Từ kết quả ước lượng mô hình hồi quy nhị phân với hàm liên kết cloglog, ta thu được phương trình:

\[ \log\left(-\log(1 - \mu)\right) = -0.7693 - 0.0965 \cdot \text{transmission}_{\text{mechanical}} \] Trong đó,𝜇là xác suất khách hàng quyết định mua xe (purchase_decision = “YES”).

Biến transmission là biến định tính gồm hai mức: “automatic” (mức tham chiếu) và “mechanical”. Khi khách hàng chọn xe sử dụng hộp số tự động, biến giả transmission_mechanical bằng 0, do đó phương trình chỉ còn là hằng số chặn −0.7693. Khi khách hàng chọn xe hộp số cơ khí, phương trình được điều chỉnh bởi hệ số −0.0965.

Hệ số chặn −0.7693: đại diện cho log-cloglog (log của log nghịch đảo) của xác suất mua xe đối với nhóm khách hàng chọn xe có hộp số tự động (mức tham chiếu).

Hệ số transmissionmechanical = -0.0965: mang dấu âm, cho thấy khách hàng lựa chọn xe sử dụng hộp số cơ khí có xác suất mua xe thấp hơn so với khách hàng chọn hộp số tự động. Hệ số này có ý nghĩa thống kê rất cao (p < 0.001), khẳng định rằng loại hộp số ảnh hưởng đến hành vi mua xe.

Kết quả mô hình cloglog cho thấy rằng loại hộp số là một yếu tố có ảnh hưởng đáng kể đến xác suất khách hàng quyết định mua xe. Cụ thể, xác suất mua xe giảm xuống khi khách hàng lựa chọn hộp số cơ khí thay vì hộp số tự động. Đây là bằng chứng cho thấy thị trường có xu hướng ưu ái các dòng xe sử dụng hộp số tự động — có thể do tính tiện lợi, dễ điều khiển và phù hợp hơn với nhu cầu của đại đa số khách hàng hiện nay.

4.3 Phân tích tình trạng sở hữu của xe ảnh hưởng đến quyết định mua xe

4.3.1 Thống kê mô tả cho cặp biến purchase_decision và state

Tiếp theo, chúng ta tiến hành lập bảng tần số chéo và tính tỷ lệ phần trăm theo hàng giữa hai biến purchase_decision (quyết định mua xe) và state (tình trạng sở hữu hoặc mục đích sử dụng của xe), nhằm phân tích mối liên hệ giữa hành vi mua xe và trạng thái sử dụng của phương tiện. Việc phân tổ chéo giữa hai biến định tính này cho phép quan sát sự khác biệt trong tỷ lệ mua giữa các nhóm xe khác nhau như xe đã qua sử dụng, xe mới hoặc xe phục vụ khẩn cấp. Từ đó, có thể đưa ra những nhận định sơ bộ về việc liệu tình trạng sử dụng của xe có thể ảnh hưởng đến quyết định mua xe của người tiêu dùng hay không.

pu_st1 <- table(data$purchase_decision, data$state)
pu_st1_total <- addmargins(pu_st1)
pu_st2 <- round(prop.table(pu_st1, margin = 1) * 100, 2)
kable(pu_st1_total, caption = "Bảng 1. Tần số giữa quyết định mua xe và Tình trạng sở hữu xe")
Bảng 1. Tần số giữa quyết định mua xe và Tình trạng sở hữu xe
emergency new owned Sum
NO 264 49 24632 24945
YES 106 389 13091 13586
Sum 370 438 37723 38531
kable(pu_st2, caption = "Bảng 2. Tần suất (%) giữa quyết định mua xe và Tình trạng sở hữu xe")
Bảng 2. Tần suất (%) giữa quyết định mua xe và Tình trạng sở hữu xe
emergency new owned
NO 1.06 0.20 98.75
YES 0.78 2.86 96.36
ggplot(as.data.frame(pu_st1), aes(x = Var1, y = Freq, fill = Var2)) +
  geom_col(position = position_dodge(width = 0.9)) +
  geom_text(aes(label = paste0(Freq, " (", 
                               round(pu_st2[cbind(as.character(Var1), as.character(Var2))], 2), "%)")),
            position = position_dodge(width = 0.9),
            vjust = -0.3, size = 3) +
  labs(
    title = "Phân bố quyết định mua xe theo tình trạng sở hữu xe",
    x = "Quyết định mua xe",
    y = "Số lượng",
    fill = "Tình trạng sở hữu xe"
  ) +
  theme_minimal()

Kết quả bảng tần số chéo giữa hai biến purchase_decisionstate cho thấy sự khác biệt rõ rệt trong hành vi mua xe theo từng nhóm tình trạng xe. Cụ thể, trong tổng số 24.945 trường hợp không mua xe, có tới 24.632 xe thuộc nhóm đã qua sử dụng (owned), chiếm 98,75%, trong khi xe mới (new) và xe khẩn cấp (emergency) chỉ chiếm lần lượt 0,20% và 1,06%. Ngược lại, trong 13.586 trường hợp đã mua xe, số lượng xe thuộc nhóm owned là 13.091 xe, tương đương 96,36%, trong khi xe mới chiếm 2,86% (389 xe) và xe khẩn cấp chiếm 0,78% (106 xe).

Tuy nhóm owned chiếm ưu thế tuyệt đối trong toàn bộ dữ liệu (với tổng số 37.723 xe, chiếm hơn 97% tổng mẫu), tỷ lệ xe mới trong nhóm mua lại cao hơn đáng kể so với nhóm không mua (2,86% so với 0,20%). Điều này cho thấy rằng người tiêu dùng có xu hướng lựa chọn xe mới nhiều hơn khi quyết định mua, dù xe mới chỉ chiếm một phần rất nhỏ trong cơ cấu mẫu. Sự chênh lệch này gợi ý rằng tình trạng sử dụng của xe có thể là yếu tố ảnh hưởng đến hành vi mua xe, và cần được kiểm định thống kê sâu hơn để đưa ra kết luận chắc chắn.

4.3.2 Thống kê suy diễn

  • Kiểm định tính độc lập cho cặp biến purchase_decision và state

Giả thuyết:

H₀ :purchase_decision và state độc lập với nhau.

H₁ :purchase_decision và state không độc lập với nhau.

chisq.test(pu_st1)
## 
##  Pearson's Chi-squared test
## 
## data:  pu_st1
## X-squared = 562.49, df = 2, p-value < 2.2e-16

Qua kết quả kiểm định cho ta p-value < 2.2e-16 < 0.05 bác bỏ H₀, đồng nghĩa với việc tình trạng sở hữu của xe có ảnh hưởng đến quyết định mua xe của khách hàng.

  • Khoảng ước lượng

p₁ = P(Tỷ lệ quyết định mua xe ở nhóm xe đã qua sử dụng)

p₂ = P(Tỷ lệ quyết định mua xe ở nhóm xe mới)

Giả thuyết:

H₀: p₁ − p₂ = 0(Tỷ lệ quyết định mua xe ở nhóm xe đã sử dụng và nhóm xe mới bằng nhau)

H₁: p₁ − p₂ < 0(Tỷ lệ quyết định mua xe ở nhóm xe đã sử dụng thấp hơn nhóm xe mới)

success2 <- pu_st1["YES", c("owned", "new")]
total2 <- colSums(pu_st1)[c("owned", "new")]
# Kiểm định tỷ lệ: p1 - p2 < 0
prop.test(success2, total2, alternative = "less", correct = FALSE)
## 
##  2-sample test for equality of proportions without continuity correction
## 
## data:  success2 out of total2
## X-squared = 554.88, df = 1, p-value < 2.2e-16
## alternative hypothesis: less
## 95 percent confidence interval:
##  -1.0000000 -0.5159987
## sample estimates:
##    prop 1    prop 2 
## 0.3470297 0.8881279

Kết quả kiểm định cho thấy p-value < 2.2e-16 < α=5%, tức là có ý nghĩa thống kê rất mạnh để bác bỏ giả thuyết H₀. Điều này cho thấy tỷ lệ khách hàng quyết định mua xe ở nhóm xe đã sử dụng thấp hơn đáng kể so với nhóm xe mới. Cụ thể, tỷ lệ mua ở nhóm xe đã sử dụng là 34.7%, trong khi nhóm xe mới là 88.81%.

4.3.3 Mô hình hồi quy cho dữ liệu nhị phân

Mô hình logit

Trong phần này, tôi sử dụng mô hình hồi quy logistic nhị phân với hàm liên kết logit để phân tích mối quan hệ giữa quyết định mua xe purchase_decision và trạng thái khách hàng state. Mô hình nhằm đánh giá xem xác suất khách hàng đưa ra quyết định mua xe thay đổi như thế nào khi họ thuộc vào các trạng thái khác nhau trong biến state. Kết quả sẽ giúp xác định nhóm khách hàng nào có xu hướng mua xe cao hơn, từ đó hỗ trợ chiến lược tiếp thị và phân loại đối tượng tiềm năng.

logit2 <- glm(factor(purchase_decision) ~ state, data = data, family = binomial(link = "logit"))
summary(logit2)
## 
## Call:
## glm(formula = factor(purchase_decision) ~ state, family = binomial(link = "logit"), 
##     data = data)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  -0.9125     0.1150  -7.936 2.09e-15 ***
## statenew      2.9843     0.1903  15.685  < 2e-16 ***
## stateowned    0.2804     0.1155   2.428   0.0152 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 50016  on 38530  degrees of freedom
## Residual deviance: 49457  on 38528  degrees of freedom
## AIC: 49463
## 
## Number of Fisher Scoring iterations: 4

Dựa trên kết quả hồi quy logistic, ta thu được phương trình ước lượng như sau:

\[ \log\left(\frac{\mu}{1 - \mu}\right) = -0.9125 + 2.9843 \cdot \text{state}_{\text{new}} + 0.2804 \cdot \text{state}_{\text{owned}} \]

Trong đó, μ là xác suất để khách hàng đưa ra quyết định mua xe (purchase_decision = “YES”). Phương trình trên mô tả mối quan hệ giữa trạng thái của khách hàng và logit (log-odds) của xác suất họ quyết định mua xe. Biến state là một biến định tính gồm ba mức phân loại: “emergency” (mức tham chiếu), “new” và “owned”. Khi khách hàng thuộc nhóm “emergency”, cả hai biến giả state_new và state_owned đều bằng 0, do đó logit chỉ còn là hằng số chặn: −0.9125. Khi khách hàng thuộc nhóm “new” hoặc “owned”, các biến giả tương ứng sẽ bằng 1 và làm thay đổi logit của xác suất mua.

Hệ số chặn −0.9125: đại diện cho log-odds mua xe của nhóm khách hàng “emergency” – nhóm tham chiếu. Đây là xác suất cơ bản để so sánh với các nhóm còn lại.

Hệ số state_new = 2.9843: cho thấy log-odds mua xe của nhóm khách hàng “new” cao hơn nhóm “emergency” là 2.9843 đơn vị. Điều này thể hiện xu hướng mua xe ở nhóm khách hàng mới là rất mạnh, và hệ số này có ý nghĩa thống kê cao (p < 0.001).

Hệ số state_owned = 0.2804: cho thấy log-odds mua xe của nhóm khách hàng “owned” cao hơn “emergency” là 0.2804 đơn vị. Mức tăng này có ý nghĩa thống kê ở mức 5% (p = 0.0152), nhưng yếu hơn nhiều so với nhóm “new”.

Kết quả mô hình cho thấy biến state có ảnh hưởng đáng kể đến xác suất mua xe của khách hàng. Nhóm khách hàng “new” có xác suất mua xe cao vượt trội so với nhóm “emergency”, cho thấy đây là phân khúc khách hàng tiềm năng và có nhu cầu mua sắm thực sự. Nhóm “owned” cũng có xu hướng mua cao hơn nhóm “emergency”, nhưng sự khác biệt không lớn.

Tổng thể, các hệ số đều mang dấu dương và có ý nghĩa thống kê, khẳng định rằng trạng thái khách hàng là một yếu tố giải thích hợp lý cho hành vi mua xe. Mô hình có giá trị dự đoán và có thể được sử dụng trong các chiến lược phân khúc khách hàng.

Mô hình Probit

Tiếp theo, tôi áp dụng mô hình hồi quy probit để phân tích cùng mối quan hệ giữa quyết định mua xe và trạng thái khách hàng. Mô hình này sử dụng hàm liên kết chuẩn hóa nhằm kiểm tra xem kết quả phân tích có ổn định khi thay đổi hàm liên kết hay không. Việc sử dụng probit giúp kiểm tra tính nhất quán trong hướng và ý nghĩa của các hệ số, từ đó đảm bảo rằng kết luận đưa ra không phụ thuộc duy nhất vào lựa chọn kỹ thuật ban đầu.

probit2 <- glm(factor(purchase_decision) ~ state, family = binomial(link = "probit"), data = data)
summary(probit2)
## 
## Call:
## glm(formula = factor(purchase_decision) ~ state, family = binomial(link = "probit"), 
##     data = data)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept) -0.56368    0.06906  -8.162  3.3e-16 ***
## statenew     1.78031    0.10503  16.950  < 2e-16 ***
## stateowned   0.17033    0.06938   2.455   0.0141 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 50016  on 38530  degrees of freedom
## Residual deviance: 49457  on 38528  degrees of freedom
## AIC: 49463
## 
## Number of Fisher Scoring iterations: 4

Từ kết quả mô hình hồi quy nhị phân sử dụng hàm liên kết probit, ta có phương trình:

\[ \Phi^{-1}(\mu) = -0.5637 + 1.7803 \cdot \text{state}_{\text{new}} + 0.1703 \cdot \text{state}_{\text{owned}} \]

Trong đó, 𝜇là xác suất khách hàng quyết định mua xe, tức là P(purchase_decision=“YES”).

Biến state gồm ba mức: “emergency” (mức tham chiếu), “new” và “owned”. Như vậy:Khi khách hàng thuộc nhóm “emergency”, cả hai biến giả bằng 0, phương trình rút gọn còn −0.5637. Khi khách hàng thuộc nhóm “new”, phương trình tăng thêm 1.7803 đơn vị so với nhóm tham chiếu. Khi khách hàng thuộc nhóm “owned”, phương trình tăng thêm 0.1703 đơn vị so với nhóm tham chiếu.

Hệ số chặn −0.5637: biểu diễn điểm z (z-score) tương ứng với xác suất mua xe của nhóm khách hàng “emergency”. Đây là mức cơ sở để so sánh với các nhóm còn lại.

Hệ số state_new = 1.7803: có giá trị dương và rất có ý nghĩa thống kê (p < 0.001), cho thấy khách hàng thuộc nhóm “new” có xác suất mua xe cao hơn đáng kể so với nhóm “emergency”.

Hệ số state_owned = 0.1703: cũng mang dấu dương và có ý nghĩa thống kê (p = 0.0141), cho thấy xác suất mua xe của nhóm “owned” cao hơn nhóm “emergency”, nhưng mức chênh lệch nhỏ hơn đáng kể so với nhóm “new”.

Kết quả mô hình probit khẳng định rằng trạng thái của khách hàng là yếu tố có ảnh hưởng đến xác suất ra quyết định mua xe. Cụ thể: Nhóm “new” là nhóm có khả năng mua xe cao nhất, thể hiện qua hệ số rất lớn và có ý nghĩa cao. Nhóm “owned” có khả năng mua xe cao hơn nhóm “emergency” nhưng mức tăng không mạnh. Nhóm “emergency” là nhóm có xác suất mua xe thấp nhất và được dùng làm chuẩn để so sánh. Việc sử dụng mô hình probit cho phép đánh giá xác suất xảy ra hành vi mua xe thông qua phân phối chuẩn, phù hợp trong trường hợp biến phụ thuộc là nhị phân và mô hình hóa theo xác suất tích lũy.

Mô hình cloglog

Trong phần này, tôi thực hiện phân tích mối quan hệ giữa quyết định mua xe của khách hàng purchase_decision và trạng thái khách hàng state bằng mô hình hồi quy nhị phân sử dụng hàm liên kết cloglog (complementary log-log). Mô hình này được áp dụng nhằm kiểm tra xem xác suất khách hàng quyết định mua xe thay đổi như thế nào khi họ thuộc các trạng thái khác nhau, trong bối cảnh xác suất xảy ra sự kiện có thể phân bố bất đối xứng.

cloglog2 <- glm(factor(purchase_decision) ~ state, family = binomial(link = "cloglog"), data = data)
summary(cloglog2)
## 
## Call:
## glm(formula = factor(purchase_decision) ~ state, family = binomial(link = "cloglog"), 
##     data = data)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept) -1.08603    0.09759  -11.13   <2e-16 ***
## statenew     1.87011    0.11533   16.21   <2e-16 ***
## stateowned   0.23324    0.09799    2.38   0.0173 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 50016  on 38530  degrees of freedom
## Residual deviance: 49457  on 38528  degrees of freedom
## AIC: 49463
## 
## Number of Fisher Scoring iterations: 5

Phương trình ước lượng từ mô hình cloglog có dạng:

\[ \log\left(-\log(1 - \mu)\right) = -1.0860 + 1.8701 \cdot \text{state}_{\text{new}} + 0.2332 \cdot \text{state}_{\text{owned}} \] Trong đó, 𝜇là xác suất khách hàng quyết định mua xe (purchase_decision = “YES”).

Hệ số chặn −1.0860: biểu thị mức log(-log(1−μ)) khi khách hàng thuộc nhóm “emergency”; đây là xác suất cơ sở để so sánh với các nhóm còn lại — tương ứng với xác suất mua xe rất thấp trong nhóm này.

Hệ số state_new = 1.8701: cho thấy khi khách hàng thuộc nhóm “new”, log(-log(1−μ)) tăng thêm 1.8701 đơn vị so với nhóm “emergency”. Điều này tương ứng với xác suất mua xe tăng mạnh, phản ánh rõ xu hướng mua xe của khách hàng mới; mức ý nghĩa thống kê rất cao (p < 0.001).

Hệ số state_owned = 0.2332: cho thấy khách hàng thuộc nhóm “owned” có log(-log(1−μ)) cao hơn “emergency” khoảng 0.2332 đơn vị, tương ứng với xác suất mua xe tăng nhẹ; hệ số này có ý nghĩa thống kê ở mức 5% (p = 0.0173), tuy không mạnh như nhóm “new” nhưng vẫn đáng chú ý.

Mô hình cloglog phản ánh rằng trạng thái khách hàng có ảnh hưởng rõ rệt đến xác suất ra quyết định mua xe. Cụ thể: Nhóm “new” có xác suất mua xe cao vượt trội, cho thấy đây là phân khúc tiềm năng cần được ưu tiên tiếp cận trong các chiến dịch marketing hoặc bán hàng. Nhóm “owned” cũng có xác suất mua cao hơn nhóm “emergency”, nhưng mức tăng không lớn. Điều này gợi ý rằng nhóm khách hàng đã sở hữu xe có thể có nhu cầu đổi xe hoặc mua thêm xe, nhưng không mạnh mẽ như nhóm khách hàng mới. Nhóm “emergency” có xác suất mua xe thấp nhất, phản ánh có thể họ chưa sẵn sàng về tài chính hoặc nhu cầu chưa rõ ràng - là nhóm khó chuyển đổi. Tổng thể, các hệ số đều có ý nghĩa thống kê, cho thấy mô hình cloglog phù hợp để phân tích mối quan hệ giữa trạng thái khách hàng và hành vi mua xe.

4.4 Phân tích tình trạng bảo hành xe ảnh hưởng đến quyết định mua xe

4.4.1 Thống kê mô tả cho cặp biến purchase_decision và has_warranty

Tiếp theo, chúng ta lập bảng tần số chéo và tính tỷ lệ phần trăm theo hàng giữa hai biến purchase_decision (quyết định mua xe) và has_warranty (tình trạng còn bảo hành), nhằm mục tiêu phân tích mối liên hệ giữa hành vi mua xe và việc xe có còn bảo hành hay không. Phân tổ chéo giữa hai biến định tính này cho phép quan sát sự khác biệt trong tỷ lệ mua giữa hai nhóm xe (có bảo hành và không có bảo hành), từ đó đưa ra nhận định ban đầu về khả năng tình trạng bảo hành ảnh hưởng đến quyết định mua xe của người tiêu dùng.

pu_ha1 <- table(data$purchase_decision, data$has_warranty)
pu_ha1_total <- addmargins(pu_ha1)
pu_ha2 <- round(prop.table(pu_ha1, margin = 1) * 100, 2)
kable(pu_ha1_total, caption = "Bảng 1. Tần số giữa quyết định mua xe và tình trạng bảo hành xe")
Bảng 1. Tần số giữa quyết định mua xe và tình trạng bảo hành xe
FALSE TRUE Sum
NO 24887 58 24945
YES 13195 391 13586
Sum 38082 449 38531
kable(pu_ha2, caption = "Bảng 2. Tần suất (%) giữa quyết định mua xe và tình trạng bảo hành xe")
Bảng 2. Tần suất (%) giữa quyết định mua xe và tình trạng bảo hành xe
FALSE TRUE
NO 99.77 0.23
YES 97.12 2.88
ggplot(as.data.frame(pu_ha1), aes(x = Var1, y = Freq, fill = Var2)) +
  geom_col(position = position_dodge(width = 0.9)) +
  geom_text(aes(label = paste0(Freq, " (", 
                               round(pu_ha2[cbind(as.character(Var1), as.character(Var2))], 2), "%)")),
            position = position_dodge(width = 0.9),
            vjust = -0.3, size = 3) +
  labs(
    title = "Phân bố quyết định mua xe theo tình trạng bảo hành của xe",
    x = "Quyết định mua xe",
    y = "Số lượng",
    fill = "Tình trạng bảo hành"
  ) +
  theme_minimal()

4.4.2 Phân tích thông qua Relative Risk

Trong phần này, tôi tiến hành tính toán Rủi ro tương đối (Relative Risk – RR) nhằm phân tích mức độ ảnh hưởng của tình trạng bảo hành has_warranty đến quyết định mua xe ô tô của khách hàng purchase_decision. Mục tiêu là đánh giá liệu khách hàng có xu hướng đưa ra quyết định mua (YES) hay không mua (NO) tùy theo việc xe còn hay không còn bảo hành. Để đảm bảo tính khách quan và toàn diện trong phân tích, chỉ số RR sẽ được tính toán theo bốn hướng tiếp cận khác nhau bằng cách hoán đổi vị trí hàng và cột trong bảng phân phối chéo giữa hai biến, từ đó kiểm tra độ ổn định và nhất quán của mối quan hệ quan sát được.

RRpu_ha1 <- riskratio(pu_ha1)
## Bảng tần số
kable(RRpu_ha1$data, caption = "Bảng tần số giữa purchase_decision và has_warranty")
Bảng tần số giữa purchase_decision và has_warranty
FALSE TRUE Total
NO 24887 58 24945
YES 13195 391 13586
Total 38082 449 38531
## Bảng Risk Ratio
kable(RRpu_ha1$measure, digits = 3, caption = "Bảng Tỷ số rủi ro (Risk Ratio)")
Bảng Tỷ số rủi ro (Risk Ratio)
estimate lower upper
NO 1.000 NA NA
YES 12.378 9.402 16.296

Từ kết quả nhận được ở trên cho thấy nhóm khách hàng quyết đinh mua xe ở nhóm xe đang trong thời gian bảo hành gấp 9.402 lần so với nhóm khách hàng không quyết định mua xe ở nhóm ô tô đang còn trong thời gian bảo hành.

4.4.3 Phân tích thông qua Odd-Ratio

Chúng ta sẽ tiếp tục việc phân tích với việc tính Odd-Ratio của cặp biến purchase_decisionhas_warranty

## Bảng tần số
kable(oddsratio(pu_ha1, rev = "r")$data, caption = "Bảng tần số giữa purchase_decision và has_warranty")
Bảng tần số giữa purchase_decision và has_warranty
FALSE TRUE Total
YES 13195 391 13586
NO 24887 58 24945
Total 38082 449 38531
## Bảng Risk Ratio
kable(oddsratio(pu_ha1,rev = "r")$measure, digits = 3, caption = "Bảng kết quả Odd Ratio")
Bảng kết quả Odd Ratio
estimate lower upper
YES 1.000 NA NA
NO 0.079 0.059 0.103

Tại nhóm khách hàng quyết định mua xe ô tô thì tỷ số khách hàng chọn ô tô hết thời gian bảo hành thấp hơn 0.079 lần so với tỷ số khách hàng chọn ô tô đang còn thời gian bảo hành.

4.4.4 Thống kê suy diễn

  • Kiểm định tính độc lập cho cặp biến purchase_decision và has_warranty

Giả thuyết:

H₀ :purchase_decision và has_warrantye độc lập với nhau.

H₁ :purchase_decision và has_warranty không độc lập với nhau.

chisq.test(pu_ha1)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  pu_ha1
## X-squared = 532.17, df = 1, p-value < 2.2e-16

Qua kết quả kiểm định cho ta p-value < 2.2e-16 < 0.05 bác bỏ H₀, đồng nghĩa với việc tình trạng bảo hành của xe có ảnh hưởng đến quyết định mua xe của khách hàng.

  • Khoảng ước lượng

p₁ = P(Tỷ lệ quyết định mua xe ở nhóm xe không còn bảo hành)

p₂ = P(Tỷ lệ quyết định mua xe ở nhóm xe còn bảo hành)

Giả thuyết:

H₀: p₁ − p₂ = 0(Tỷ lệ quyết định mua xe ở nhóm xe không còn bảo hành và còn bảo hành là bằng nhau)

H₁: p₁ − p₂ < 0(Tỷ lệ quyết định mua xe ở nhóm xe Không còn bảo hành thấp hơn so với nhóm xe còn bảo hành)

success3 <- pu_ha1["YES", c("FALSE", "TRUE")]
total3 <- colSums(pu_ha1)[c("FALSE", "TRUE")]
# Kiểm định tỷ lệ: p1 - p2 < 0
prop.test(success3, total3, alternative = "less", correct = FALSE)
## 
##  2-sample test for equality of proportions without continuity correction
## 
## data:  success3 out of total3
## X-squared = 534.46, df = 1, p-value < 2.2e-16
## alternative hypothesis: less
## 95 percent confidence interval:
##  -1.0000000 -0.4979926
## sample estimates:
##    prop 1    prop 2 
## 0.3464892 0.8708241

Kết quả kiểm định cho thấy p-value < 2.2e-16 < α=5%, tức là có ý nghĩa thống kê rất mạnh để bác bỏ giả thuyết H₀. Điều này cho thấy tỷ lệ quyết định mua xe ở nhóm xe Không còn bảo hành thấp hơn đáng kể so với nhóm xe còn bảo hành. Cụ thể, tỷ lệ mua ở nhóm xe không còn bảo hành là 34.65%, trong khi nhóm xe còn bảo hành là 87.08%.

4.4.5 Mô hình hồi quy cho dữ liệu nhị phân

Mô hình logit

logit3 <- glm(factor(purchase_decision) ~ has_warranty, data = data, family = binomial(link = "logit"))
summary(logit3)
## 
## Call:
## glm(formula = factor(purchase_decision) ~ has_warranty, family = binomial(link = "logit"), 
##     data = data)
## 
## Coefficients:
##                  Estimate Std. Error z value Pr(>|z|)    
## (Intercept)      -0.63451    0.01077  -58.92   <2e-16 ***
## has_warrantyTRUE  2.54277    0.14112   18.02   <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: 50016  on 38530  degrees of freedom
## Residual deviance: 49490  on 38529  degrees of freedom
## AIC: 49494
## 
## Number of Fisher Scoring iterations: 4

Từ kết quả mô hình hồi quy logistic với biến phụ thuộc là quyết định mua xe (purchase_decision) và biến độc lập là tình trạng bảo hành (has_warranty), ta thu được phương trình ước lượng như sau:

\[ \log\left( \frac{\mu}{1 - \mu} \right) = -0.6345 + 2.5428 \cdot \text{has_warranty} \]

Trong đó, \(\mu\) là xác suất khách hàng đưa ra quyết định mua xe (tức purchase_decision = “YES”). Biến giải thích has_warranty là biến nhị phân, được mã hóa mặc định trong R theo kiểu logic với mức 1 tương ứng với “có bảo hành” (TRUE) và mức 0 là “không bảo hành” (FALSE). Khi một chiếc xe không có bảo hành, phương trình rút gọn còn lại là \(\log(\mu / (1 - \mu)) = -0.6345\), phản ánh log-odds mua xe trong trường hợp này. Ngược lại, khi xe có bảo hành, log-odds sẽ tăng thêm 2.5428 đơn vị.

Hệ số chặn -0.6345 đại diện cho log-odds mua xe khi xe không có bảo hành. Khi chuyển sang odds, ta có odds mua xe ở nhóm không bảo hành là \(exp(-0.6345) \approx 0.530\), nghĩa là khả năng mua xe thấp hơn khả năng không mua. Hệ số 2.5428 có ý nghĩa thống kê rất cao (p < 0.001), cho thấy việc có bảo hành làm tăng đáng kể khả năng khách hàng sẽ mua xe. Cụ thể, odds mua xe ở nhóm có bảo hành cao hơn nhóm không bảo hành khoảng \(exp(2.5428) \approx 12.72\) lần – một mức tăng rất lớn cả về mặt thống kê lẫn thực tiễn.

Ngoài ra, mô hình cho thấy null deviance giảm từ 50016 xuống 49490, đồng thời AIC là 49494, chứng tỏ biến has_warranty đã cải thiện đáng kể khả năng dự đoán của mô hình. Tóm lại, kết quả phân tích khẳng định rằng bảo hành là yếu tố có ảnh hưởng mạnh và rõ rệt đến quyết định mua xe. Đây là thông tin quan trọng, gợi ý rằng doanh nghiệp nên tích hợp chính sách bảo hành để tăng khả năng chuyển đổi từ người quan tâm sang người mua thực tế.

Mô hình probit

probit3 <- glm(factor(purchase_decision) ~ has_warranty, family = binomial(link = "probit"), data = data)
summary(probit3)
## 
## Call:
## glm(formula = factor(purchase_decision) ~ has_warranty, family = binomial(link = "probit"), 
##     data = data)
## 
## Coefficients:
##                   Estimate Std. Error z value Pr(>|z|)    
## (Intercept)      -0.394817   0.006608  -59.75   <2e-16 ***
## has_warrantyTRUE  1.525112   0.075442   20.22   <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: 50016  on 38530  degrees of freedom
## Residual deviance: 49490  on 38529  degrees of freedom
## AIC: 49494
## 
## Number of Fisher Scoring iterations: 4

Dựa trên kết quả hồi quy Probit, ta thu được phương trình ước lượng như sau:

\[ \Phi^{-1}(\mu) = -0.3948 + 1.5251 \cdot \text{has_warranty} \]

Trong đó, \(\Phi^{-1}(\mu)\) là phân vị chuẩn (inverse CDF) ứng với xác suất \(\mu\) mà khách hàng quyết định mua xe (tức purchase_decision = “YES”). Biến has_warranty là biến nhị phân, với giá trị 1 tương ứng với “có bảo hành” (TRUE) và 0 là “không có bảo hành” (FALSE). Khi xe không có bảo hành, phương trình thu gọn còn lại là \(\Phi^{-1}(\mu) = -0.3948\), đại diện cho mức xu hướng (latent propensity) mua xe trong nhóm này. Khi có bảo hành, giá trị phân vị sẽ tăng thêm 1.5251 đơn vị.

Hệ số chặn -0.3948 phản ánh xu hướng mua xe của nhóm không bảo hành. Vì hàm liên kết của mô hình Probit là phân phối chuẩn tích lũy, nên không thể diễn giải trực tiếp hệ số theo odds ratio như trong Logit. Tuy nhiên, dấu và độ lớn của hệ số vẫn cho thấy được chiều hướng và cường độ tác động.

Hệ số 1.5251 có giá trị dương lớn và có ý nghĩa thống kê rất cao (p < 0.001), cho thấy bảo hành làm tăng rõ rệt xác suất khách hàng quyết định mua xe. Nói cách khác, xe có bảo hành giúp dịch chuyển đáng kể giá trị ngưỡng quyết định (latent variable) về phía có khả năng mua cao hơn.

Xét về độ phù hợp, null deviance giảm từ 50016 xuống còn 49490 sau khi đưa biến bảo hành vào mô hình. Chỉ số AIC là 49494, tương đương với mô hình logit cùng biến giải thích. Điều này cho thấy mô hình Probit cũng mô tả tốt mối quan hệ giữa tình trạng bảo hành và hành vi mua xe. Mặc dù việc diễn giải xác suất cụ thể trong Probit phức tạp hơn so với Logit, nhưng hướng tác động là tương đồng: bảo hành có tác động tích cực và có ý nghĩa thống kê đến xác suất mua xe. Tóm lại, kết quả từ mô hình Probit một lần nữa củng cố kết luận rằng bảo hành là một yếu tố quan trọng ảnh hưởng đến quyết định mua xe, và nên được xem xét trong các chính sách bán hàng và định vị thị trường xe đã qua sử dụng.

Mô hình cloglog

cloglog3 <- glm(factor(purchase_decision) ~ has_warranty, family = binomial(link = "cloglog"), data = data)
summary(cloglog3)
## 
## Call:
## glm(formula = factor(purchase_decision) ~ has_warranty, family = binomial(link = "cloglog"), 
##     data = data)
## 
## Coefficients:
##                   Estimate Std. Error z value Pr(>|z|)    
## (Intercept)      -0.854734   0.008771  -97.45   <2e-16 ***
## has_warrantyTRUE  1.570904   0.060511   25.96   <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: 50016  on 38530  degrees of freedom
## Residual deviance: 49490  on 38529  degrees of freedom
## AIC: 49494
## 
## Number of Fisher Scoring iterations: 5

Dựa trên kết quả hồi quy sử dụng hàm liên kết complementary log-log, phương trình ước lượng thu được như sau:

\[ \log\left( -\log(1 - \mu) \right) = -0.8547 + 1.5709 \cdot \text{has_warranty} \]

Trong đó, \(\mu\) là xác suất khách hàng đưa ra quyết định mua xe (tức purchase_decision = “YES”). Hàm liên kết cloglog (complementary log-log) được sử dụng thay vì logit hoặc probit, phù hợp hơn trong các tình huống khi xác suất xảy ra sự kiện tiến gần về 0 hoặc 1 không đối xứng. Biến giải thích has_warranty là biến nhị phân, nhận giá trị 1 nếu xe có bảo hành (TRUE) và 0 nếu không (FALSE).

Khi xe không có bảo hành, phương trình thu gọn còn lại là \(\log(-\log(1 - \mu)) = -0.8547\). Trong khi đó, nếu xe có bảo hành, biểu thức tăng thêm 1.5709 đơn vị. Hệ số chặn -0.8547 đại diện cho log(-log(1 - μ)) trong nhóm không có bảo hành. Hệ số 1.5709 mang giá trị dương và có ý nghĩa thống kê rất cao (p < 0.001), cho thấy bảo hành có ảnh hưởng tích cực đến xác suất khách hàng mua xe.

Tuy mô hình cloglog không cho phép diễn giải hệ số theo xác suất hoặc odds một cách trực tiếp như logit, nhưng dấu và độ lớn của hệ số vẫn phản ánh chiều hướng và mức độ ảnh hưởng. Trong trường hợp này, việc có bảo hành làm dịch chuyển mạnh xác suất mua xe về phía gần 1 – điều này đặc biệt quan trọng trong các thị trường mà hành vi mua là hiếm gặp hoặc xảy ra trong điều kiện ngưỡng xác suất không cân xứng.

Về mức độ phù hợp, mô hình có residual deviance là 49490 (giảm từ null deviance 50016), và AIC = 49494, tương đương với các mô hình sử dụng liên kết khác. Sự hội tụ nhanh sau 5 vòng lặp Fisher Scoring cho thấy mô hình ổn định.

Tóm lại, kết quả từ mô hình cloglog tiếp tục khẳng định rằng bảo hành là một yếu tố ảnh hưởng rõ rệt đến hành vi mua xe của khách hàng. Với hàm liên kết đặc thù, cloglog đặc biệt thích hợp khi phân phối xác suất không đối xứng, và có thể xem là một lựa chọn thay thế hữu ích trong phân tích hành vi tiêu dùng.

4.5 Phân tích giá cả xe ảnh hưởng đến quyết định mua xe

4.5.1 Thống kê mô tả price_usd theo từng nhóm purchase_decision

data %>%
  group_by(purchase_decision) %>%
  summarise(
    n = n(),
    min = min(price_usd, na.rm = TRUE),
    Q1 = quantile(price_usd, 0.25, na.rm = TRUE),
    median = median(price_usd, na.rm = TRUE),
    mean = mean(price_usd, na.rm = TRUE),
    Q3 = quantile(price_usd, 0.75, na.rm = TRUE),
    max = max(price_usd, na.rm = TRUE),
    sd = sd(price_usd, na.rm = TRUE)
  )
## # A tibble: 2 × 9
##   purchase_decision     n   min    Q1 median  mean    Q3   max    sd
##   <chr>             <int> <dbl> <dbl>  <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 NO                24945     1  2300   5000 6642.  9000 49900 6095.
## 2 YES               13586     1  1999   4350 6636.  8700 50000 6999.
boxplot(price_usd ~ purchase_decision,
        data = data,
        main = "So sánh giá xe giữa các nhóm quyết định mua",
        xlab = "Purchase Decision",
        ylab = "Giá xe (USD)",
        col = c("tomato", "skyblue"))

Bảng thống kê mô tả cho biến giá xe theo hai nhóm quyết định mua (YES) và không mua (NO) cho thấy mức giá trung bình và phân bố giữa hai nhóm tương đối tương đồng. Cụ thể, ở nhóm không mua xe (NO), giá xe có trung bình là 6.642 USD, trung vị là 5.000 USD, với khoảng tứ phân vị từ 2.300 đến 9.000 USD. Trong khi đó, nhóm mua xe (YES) có giá trung bình gần tương đương (6.636 USD), nhưng trung vị thấp hơn, chỉ 4.350 USD. Điều này cho thấy mặc dù trung bình giá xe là gần như nhau giữa hai nhóm, nhưng những người quyết định mua có xu hướng mua những chiếc xe ở mức giá thấp hơn so với nhóm không mua.

Mức giá tối đa ở cả hai nhóm đều rất cao (gần 50.000 USD), tuy nhiên độ lệch chuẩn ở nhóm mua xe là 6.999 USD – cao hơn so với nhóm không mua (6.095 USD), cho thấy sự phân tán giá trong nhóm mua lớn hơn. Ngoài ra, nhóm mua có giá xe thấp nhất thấp hơn một chút (1.000 USD so với 1.000 USD), và tứ phân vị thứ nhất (Q1 = 1.999) cũng thấp hơn so với nhóm không mua (Q1 = 2.300).

Nhìn chung, kết quả cho thấy khách hàng có xu hướng mua những chiếc xe rẻ hơn, nhưng mức độ dao động trong lựa chọn cao hơn, phản ánh sự đa dạng trong hành vi tiêu dùng. Dù giá trung bình gần như không khác biệt, việc chênh lệch ở trung vị và độ lệch chuẩn cho thấy nhóm mua có sự phân hóa rõ nét hơn về mức chi trả, từ những xe giá rất thấp đến xe cao cấp, trong khi nhóm không mua tập trung nhiều hơn ở mức giá trung bình.

4.5.2 Kiểm định sự khác biệt trung bình giữa 2 nhóm (YES/NO)

Kiểm định sự khác biệt trung bình giữa 2 nhóm (YES/NO) mục đích kiểm tra xem giá trung bình của xe giữa hai nhóm khách hàng – mua xe (YES) và không mua xe (NO) – có sự khác biệt có ý nghĩa thống kê hay không.

# Kiểm định t-test
t.test(price_usd ~ purchase_decision, data = data)
## 
##  Welch Two Sample t-test
## 
## data:  price_usd by purchase_decision
## t = 0.094732, df = 24819, p-value = 0.9245
## alternative hypothesis: true difference in means between group NO and group YES is not equal to 0
## 95 percent confidence interval:
##  -133.1424  146.6658
## sample estimates:
##  mean in group NO mean in group YES 
##          6642.355          6635.593

Giả thuyết:

H₀: Không có sự khác biệt về giá trung bình xe giữa hai nhóm

H₁: Có sự khác biệt về giá trung bình xe giữa hai nhóm

Khoảng tin cậy 95% cho hiệu số trung bình: (−133.14, 146.67)

Trung bình giá xe:

Nhóm NO: 6.642 USD

Nhóm YES: 6.636 USD

Với giá trị p rất lớn (p = 0.9245 > 0.05), ta không đủ bằng chứng để bác bỏ giả thuyết H₀. Điều này có nghĩa là không có sự khác biệt có ý nghĩa thống kê về giá trung bình xe giữa hai nhóm khách hàng mua và không mua. Kết quả này cho thấy mức giá xe không phải là yếu tố phân biệt rõ ràng hành vi mua xe trong dữ liệu hiện có.

4.5.3 Ước lượng khoảng tin cậy cho trung bình price_usd theo từng nhóm

Bài toán: Giả sử chúng ta quan tâm đến giá trị trung bình của biến price_usd đối với nhóm khách hàng đã quyết định mua xe (tức purchase_decision = “YES”). Ta muốn ước lượng khoảng giá trị mà trung bình giá xe thật sự trong tổng thể (population mean) nằm trong đó, với độ tin cậy 95%.

library(DescTools)
## Warning: package 'DescTools' was built under R version 4.3.3
MeanCI(data$price_usd[data$purchase_decision == "YES"])
##     mean   lwr.ci   upr.ci 
## 6635.593 6517.895 6753.291

Với độ tin cậy 95%, ta có thể khẳng định rằng giá trung bình thực sự của xe được mua bởi khách hàng trong nhóm YES nằm trong khoảng từ 6.517,90 đến 6.753,29 USD. Khoảng tin cậy khá hẹp, phản ánh độ chính xác cao nhờ cỡ mẫu lớn. Điều này cho phép ta đưa ra nhận định đáng tin cậy về mức chi tiêu trung bình của nhóm khách hàng đã đưa ra quyết định mua xe. Tiếp theo để Ước lượng trung bình tổng thể của giá xe (price_usd) đối với khách hàng không mua xe, với độ tin cậy 95%.

MeanCI(data$price_usd[data$purchase_decision == "NO"])
##     mean   lwr.ci   upr.ci 
## 6642.355 6566.715 6717.995

Với độ tin cậy 95%, ta có thể kết luận rằng giá trung bình thực sự của xe trong nhóm khách hàng không mua xe nằm trong khoảng từ 6.566,72 USD đến 6.717,99 USD. Khoảng tin cậy hẹp cho thấy kết quả ước lượng có độ chính xác cao nhờ cỡ mẫu lớn. Khi so sánh với nhóm mua xe, có thể thấy rằng giá trung bình giữa hai nhóm là khá tương đồng, sự khác biệt rất nhỏ và không mang ý nghĩa thống kê đáng kể – phù hợp với kết quả kiểm định đã trình bày trước đó.

4.5.4 Mô hình hồi quy cho dữ liệu nhị phân

Trong quá trình phân tích, biến price_usd (giá xe) được xem xét như một biến độc lập tiềm năng ảnh hưởng đến quyết định mua xe của khách hàng. Tuy nhiên, khi đưa trực tiếp biến price_usd vào mô hình hồi quy logistic, hệ số ước lượng thu được không có ý nghĩa thống kê và giá trị p rất lớn (p > 0.9), cho thấy giá xe không có mối liên hệ rõ ràng với xác suất mua xe trong dạng tuyến tính ban đầu.

Mặt khác, việc khảo sát phân phối của price_usd qua biểu đồ histogram cho thấy biến này có phân phối lệch phải rất mạnh, với nhiều giá trị lớn vượt trội và khoảng biến thiên rộng. Điều này làm giảm hiệu quả của các mô hình hồi quy tuyến tính tổng quát (GLM), vốn giả định rằng mối liên hệ giữa biến độc lập và liên kết logit (hoặc probit, cloglog) là tuyến tính hoặc gần tuyến tính.

Do đó, để làm cho phân phối trở nên đối xứng hơn và giảm ảnh hưởng của các giá trị ngoại lai, biến price_usd được biến đổi bằng hàm logarit, cụ thể là log(1 + price_usd). Cách biến đổi này vừa đảm bảo xử lý được các giá trị bằng 0, vừa giúp:

Chuẩn hóa phân phối của biến đầu vào, giúp nó gần hơn với phân phối chuẩn;

Giảm ảnh hưởng của các giá trị cực lớn, giúp mô hình ổn định hơn;

Tăng khả năng phát hiện mối quan hệ phi tuyến giữa giá và xác suất mua;

Cải thiện độ phù hợp mô hình cũng như ý nghĩa thống kê của các hệ số ước lượng.

Mô hình logit

logit4 <- glm(factor(purchase_decision) ~ log1p(price_usd), data = data, family = binomial(link = "logit"))
summary(logit4)
## 
## Call:
## glm(formula = factor(purchase_decision) ~ log1p(price_usd), family = binomial(link = "logit"), 
##     data = data)
## 
## Coefficients:
##                  Estimate Std. Error z value Pr(>|z|)    
## (Intercept)      -0.05744    0.08699  -0.660    0.509    
## log1p(price_usd) -0.06595    0.01036  -6.366 1.95e-10 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 50016  on 38530  degrees of freedom
## Residual deviance: 49976  on 38529  degrees of freedom
## AIC: 49980
## 
## Number of Fisher Scoring iterations: 4

Dựa trên kết quả hồi quy logistic, ta thu được phương trình ước lượng như sau:

\[ \log\left(\frac{p}{1 - p}\right) = -0.05744 - 0.06595 \cdot \log(1 + \text{price_usd}) \]

Trong đó, \(p\) là xác suất khách hàng quyết định mua xe.

Hệ số của biến log(1 + price_usd) có giá trị âm (-0.06595) và có ý nghĩa thống kê rất cao với p-value = 1.95e-10 (< 0.001), cho thấy mối quan hệ nghịch chiều giữa giá xe và xác suất mua. Khi log(1 + price_usd) tăng thêm 1 đơn vị, log-odds của việc mua xe giảm trung bình 0.06595 đơn vị. Odds ratio tương ứng là exp(-0.06595) ≈ 0.936, nghĩa là mỗi khi giá xe tăng theo thang log, khả năng mua xe giảm khoảng 6.4%. Việc biến đổi log đã làm cho biến trở nên có ý nghĩa hơn trong mô hình so với dạng ban đầu chưa biến đổi.

Mô hình probit

Dưới đây là phần nhận xét kết quả hồi quy Probit giữa quyết định mua xe và giá xe (price_usd):

probit4 <- glm(factor(purchase_decision) ~ log1p(price_usd),family = binomial(link = "probit"),data = data)
summary(probit4)
## 
## Call:
## glm(formula = factor(purchase_decision) ~ log1p(price_usd), family = binomial(link = "probit"), 
##     data = data)
## 
## Coefficients:
##                   Estimate Std. Error z value Pr(>|z|)    
## (Intercept)      -0.041037   0.053590  -0.766    0.444    
## log1p(price_usd) -0.040417   0.006377  -6.338 2.32e-10 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 50016  on 38530  degrees of freedom
## Residual deviance: 49976  on 38529  degrees of freedom
## AIC: 49980
## 
## Number of Fisher Scoring iterations: 4

Phương trình hồi quy probit ước lượng được viết như sau:

\[ \Phi^{-1}(p) = -0.041037 - 0.040417 \cdot \log(1 + \text{price_usd}) \]

Trong đó, \(p\) là xác suất khách hàng quyết định mua xe, và \(\Phi^{-1}(p)\) là hàm nghịch đảo của phân phối chuẩn tích lũy (probit link function).

Mô hình hồi quy probit sử dụng biến log(1 + price_usd) cho thấy hệ số ước lượng là -0.040417 với giá trị p rất nhỏ (2.32e-10 < 0.001), cho thấy biến này có ý nghĩa thống kê rất cao. Hệ số âm chỉ ra rằng có mối quan hệ nghịch chiều giữa giá xe (sau biến đổi log) và xác suất khách hàng quyết định mua. Cụ thể, khi log(1 + price_usd) tăng thêm một đơn vị, xác suất mua xe có xu hướng giảm. Mặc dù việc giải thích định lượng trong mô hình probit không trực tiếp thông qua odds ratio như trong logistic, nhưng hướng tác động và mức độ ý nghĩa của biến vẫn rõ ràng và nhất quán. So sánh với mô hình trước đó (logit), ta thấy mô hình probit cho kết quả tương tự cả về dấu và mức ý nghĩa thống kê, cho thấy tính ổn định và độ tin cậy cao của kết luận. Ngoài ra, Residual deviance giảm từ 50016 xuống 49976 và AIC giảm còn 49980, chứng tỏ mô hình có cải thiện nhẹ so với mô hình rỗng.

Mô hình cloglog

cloglog4 <- glm(factor(purchase_decision) ~ log1p(price_usd),family = binomial(link = "cloglog"), data = data)
summary(cloglog4)
## 
## Call:
## glm(formula = factor(purchase_decision) ~ log1p(price_usd), family = binomial(link = "cloglog"), 
##     data = data)
## 
## Coefficients:
##                   Estimate Std. Error z value Pr(>|z|)    
## (Intercept)      -0.386175   0.069886  -5.526 3.28e-08 ***
## log1p(price_usd) -0.053583   0.008346  -6.420 1.36e-10 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 50016  on 38530  degrees of freedom
## Residual deviance: 49976  on 38529  degrees of freedom
## AIC: 49980
## 
## Number of Fisher Scoring iterations: 5

Phương trình hồi quy cloglog ước lượng được viết như sau:

\[ \log(-\log(1 - p)) = -0.386175 - 0.053583 \cdot \log(1 + \text{price_usd}) \]

Trong đó, \(p\) là xác suất khách hàng quyết định mua xe, và biểu thức bên trái là hàm liên kết complementary log-log.

Mô hình hồi quy cloglog sử dụng biến log(1 + price_usd) cho thấy cả hai hệ số đều có ý nghĩa thống kê cao (p < 0.001). Cụ thể, hệ số của log(1 + price_usd) là -0.053583 với giá trị p = 1.36e-10, cho thấy có mối quan hệ nghịch chiều rõ rệt giữa giá xe (sau khi log hóa) và xác suất mua. Hệ số âm cho thấy rằng khi log(1 + price_usd) tăng lên, xác suất mua xe giảm, phù hợp với kỳ vọng thực tế rằng xe càng đắt thì khả năng mua càng thấp. Mặc dù mô hình cloglog không diễn giải trực tiếp qua odds như logistic, nhưng hướng tác động và mức ý nghĩa là nhất quán với các mô hình khác. Ngoài ra, deviance giảm nhẹ (từ 50016 xuống 49976) và AIC giảm còn 49980, cho thấy mô hình có cải thiện nhẹ so với mô hình rỗng. So sánh với các mô hình logit và probit, kết quả của cloglog tương đối tương đồng, cho thấy ảnh hưởng của giá xe sau log là ổn định và đáng tin cậy bất kể lựa chọn hàm liên kết.

4.6 Phân tích đa biến ảnh hưởng đến quyết định mua xe

4.6.1 Mô hình logit

Dưới đây là phần nhận xét kết quả mô hình hồi quy logistic đa biến giữa quyết định mua xe (purchase_decision) và các biến giải thích: transmission, state, has_warranty, và price_usd

logit5 <- glm(factor(purchase_decision) ~ transmission + state + has_warranty + price_usd, data = data, family = binomial(link = "logit"))
summary(logit5)
## 
## Call:
## glm(formula = factor(purchase_decision) ~ transmission + state + 
##     has_warranty + price_usd, family = binomial(link = "logit"), 
##     data = data)
## 
## Coefficients:
##                          Estimate Std. Error z value Pr(>|z|)    
## (Intercept)            -6.882e-01  1.173e-01  -5.867 4.45e-09 ***
## transmissionmechanical -2.270e-01  2.598e-02  -8.735  < 2e-16 ***
## statenew                2.366e+00  2.409e-01   9.824  < 2e-16 ***
## stateowned              3.590e-01  1.159e-01   3.098  0.00195 ** 
## has_warrantyTRUE        1.419e+00  1.983e-01   7.154 8.45e-13 ***
## price_usd              -2.431e-05  2.120e-06 -11.467  < 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: 50016  on 38530  degrees of freedom
## Residual deviance: 49265  on 38525  degrees of freedom
## AIC: 49277
## 
## Number of Fisher Scoring iterations: 4

Phương trình hồi quy logistic ước lượng có dạng:

\[ \log\left( \frac{\mu}{1 - \mu} \right) = -0.6882 - 0.2270 \cdot \text{transmission}_{\text{mechanical}} + 2.366 \cdot \text{state}_{\text{new}} + 0.3590 \cdot \text{state}_{\text{owned}} + 1.419 \cdot \text{has_warranty}_{\text{TRUE}} - 2.431 \times 10^{-5} \cdot \text{price_usd} \]

Trong đó, \(\mu\) là xác suất khách hàng quyết định mua xe (purchase_decision = “YES”).

  • Hệ số chặn -0.6882: là log-odds mua xe cho khách hàng thuộc nhóm tham chiếu - sử dụng hộp số tự động, state = “emergency”, không có bảo hành, và giá xe bằng 0 (ý nghĩa kỹ thuật).

  • transmission-mechanical = -0.2270 (p < 0.001): khách hàng đối với xe có hộp số cơ khí có log-odds mua xe thấp hơn đáng kể so với xe số tự động. Điều này cho thấy xu hướng ưu tiên hộp số tự động trong hành vi mua xe.

  • statenew = 2.366 (p < 0.001): khách hàng mới có log-odds mua xe cao hơn nhóm “emergency” đến 2.366 đơn vị, thể hiện nhóm khách hàng mua xe mới là phân khúc tiềm năng nhất.

  • stateowned = 0.3590 (p ≈ 0.002): khách hàng thuộc nhóm “owned” cũng có xác suất mua cao hơn nhóm “emergency”, nhưng mức tăng khiêm tốn hơn so với nhóm “new”.

  • has_warrantyTRUE = 1.419 (p < 0.001): xe có bảo hành giúp tăng log-odds mua xe lên đáng kể. Điều này phản ánh tầm quan trọng của yếu tố bảo hành trong quyết định tiêu dùng.

  • price_usd = -2.431 × 10⁻⁵ (p < 0.001): khi giá xe tăng thêm 1 đơn vị (USD), log-odds mua xe giảm nhẹ. Tuy giá trị hệ số nhỏ, nhưng vẫn có ý nghĩa thống kê, cho thấy giá xe có ảnh hưởng nghịch chiều tới xác suất mua khi các yếu tố khác được kiểm soát đồng thời.

  • Residual deviance giảm từ 50016 xuống 49265: mô hình đã giải thích được một phần phương sai, cho thấy các biến đưa vào có ý nghĩa.

  • AIC = 49277: thấp hơn đáng kể so với mô hình đơn biến, thể hiện mức độ phù hợp cao hơn.

Mô hình hồi quy logistic với nhiều biến giải thích cho thấy rằng các yếu tố về trạng thái khách hàng, loại hộp số, bảo hành và giá xe đều có ảnh hưởng đáng kể đến xác suất mua xe. Trong đó, yếu tố state = newhas_warranty = TRUE có tác động tích cực mạnh nhất. Biến price_usd tuy có hệ số nhỏ, nhưng ảnh hưởng tiêu cực của nó chỉ bộc lộ rõ khi kết hợp với các biến khác — điều này lý giải vì sao mô hình đơn biến trước đó không có ý nghĩa, nhưng lại có ý nghĩa trong mô hình đa biến.

Tổng thể, mô hình có độ phù hợp tốt và cung cấp cái nhìn thực tế để hỗ trợ ra quyết định trong hoạt động kinh doanh, như nhắm mục tiêu vào khách hàng mới, ưu tiên xe có bảo hành và chiến lược giá linh hoạt.

4.6.2 Mô hình probit

probit5 <- glm(factor(purchase_decision) ~ transmission + state + has_warranty + price_usd, family = binomial(link = "probit"), data = data)
summary(probit5)
## 
## Call:
## glm(formula = factor(purchase_decision) ~ transmission + state + 
##     has_warranty + price_usd, family = binomial(link = "probit"), 
##     data = data)
## 
## Coefficients:
##                          Estimate Std. Error z value Pr(>|z|)    
## (Intercept)            -4.291e-01  7.052e-02  -6.085 1.17e-09 ***
## transmissionmechanical -1.377e-01  1.594e-02  -8.637  < 2e-16 ***
## statenew                1.440e+00  1.431e-01  10.062  < 2e-16 ***
## stateowned              2.179e-01  6.963e-02   3.129  0.00175 ** 
## has_warrantyTRUE        9.014e-01  1.195e-01   7.546 4.50e-14 ***
## price_usd              -1.441e-05  1.273e-06 -11.321  < 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: 50016  on 38530  degrees of freedom
## Residual deviance: 49256  on 38525  degrees of freedom
## AIC: 49268
## 
## Number of Fisher Scoring iterations: 5

Phương trình hồi quy Probit ước lượng có dạng:

\[ \Phi^{-1}(\mu) = -0.4291 - 0.1377 \cdot \text{transmission}_{\text{mechanical}} + 1.440 \cdot \text{state}_{\text{new}} + 0.2179 \cdot \text{state}_{\text{owned}} + 0.9014 \cdot \text{has_warranty}_{\text{TRUE}} - 1.441 \times 10^{-5} \cdot \text{price_usd} \]

Trong đó, \(\Phi^{-1}(\mu)\) là phân vị chuẩn (inverse CDF) của xác suất \(\mu\) mà khách hàng quyết định mua xe.

  • Hệ số chặn -0.4291: là giá trị ngưỡng chuẩn trong trường hợp khách hàng thuộc nhóm tham chiếu (số tự động, trạng thái “emergency”, không bảo hành, giá = 0).

  • transmission (mechanical) = -0.1377 (p < 0.001): xe sử dụng hộp số cơ khí có xác suất mua thấp hơn xe số tự động. Dấu âm thể hiện chiều tác động ngược.

  • statenew = 1.440 (p < 0.001): khách hàng mới có xác suất mua cao hơn nhiều so với nhóm “emergency”, phản ánh sự chủ động và tiềm năng ở nhóm khách hàng này.

  • stateowned = 0.2179 (p ≈ 0.0017): nhóm đã từng sở hữu xe có xác suất mua cao hơn nhóm “emergency”, nhưng thấp hơn nhiều so với nhóm “new”.

  • has_warranty (TRUE) = 0.9014 (p < 0.001): sự hiện diện của bảo hành làm tăng xác suất khách hàng mua xe một cách đáng kể. Đây là yếu tố rất quan trọng trong hành vi tiêu dùng.

  • price_usd = -1.441 × 10⁻⁵ (p < 0.001): khi giá xe tăng thêm 1 USD, xác suất mua giảm nhẹ, cho thấy ảnh hưởng tiêu cực của giá đến quyết định mua – mặc dù mức độ ảnh hưởng không lớn về giá trị tuyệt đối.

  • Residual deviance giảm còn 49256 so với null deviance 50016, cho thấy mô hình giải thích được một phần phương sai.

  • AIC = 49268: thấp hơn so với mô hình đơn biến và thấp hơn mô hình logit đa biến, thể hiện mức độ phù hợp tốt hơn trong số các mô hình đã ước lượng.

Mô hình Probit đa biến cho thấy tất cả các biến giải thích đều có ảnh hưởng thống kê đáng kể đến xác suất mua xe. Trong đó, state = “new”, has_warranty, và transmission là các yếu tố quan trọng. Mặc dù price_usd có ảnh hưởng nhỏ về mặt tuyệt đối, nhưng vẫn có ý nghĩa thống kê khi được đưa vào mô hình cùng các biến khác.

4.6.3 Mô hình cloglog

cloglog5 <- glm(factor(purchase_decision) ~ transmission + state + has_warranty + price_usd,family = binomial(link = "cloglog"), data = data)
summary(cloglog5)
## 
## Call:
## glm(formula = factor(purchase_decision) ~ transmission + state + 
##     has_warranty + price_usd, family = binomial(link = "cloglog"), 
##     data = data)
## 
## Coefficients:
##                          Estimate Std. Error z value Pr(>|z|)    
## (Intercept)            -9.005e-01  9.918e-02  -9.079  < 2e-16 ***
## transmissionmechanical -1.841e-01  2.089e-02  -8.812  < 2e-16 ***
## statenew                1.635e+00  1.566e-01  10.443  < 2e-16 ***
## stateowned              2.964e-01  9.813e-02   3.021  0.00252 ** 
## has_warrantyTRUE        1.032e+00  1.174e-01   8.795  < 2e-16 ***
## price_usd              -2.050e-05  1.746e-06 -11.737  < 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: 50016  on 38530  degrees of freedom
## Residual deviance: 49215  on 38525  degrees of freedom
## AIC: 49227
## 
## Number of Fisher Scoring iterations: 8

Phương trình hồi quy ước lượng có dạng:

\[ \log\left( -\log(1 - \mu) \right) = -0.9005 - 0.1841 \cdot \text{transmission}_{\text{mechanical}} + 1.635 \cdot \text{state}_{\text{new}} + 0.2964 \cdot \text{state}_{\text{owned}} + 1.032 \cdot \text{has_warranty}_{\text{TRUE}} - 2.050 \times 10^{-5} \cdot \text{price_usd} \]

Trong đó, \(\mu\) là xác suất khách hàng quyết định mua xe (purchase_decision = “YES”).

  • (Intercept) = -0.9005: đại diện cho mức log(-log(1 − μ)) trong nhóm tham chiếu (xe số tự động, khách hàng “emergency”, không có bảo hành, giá xe bằng 0). Giá trị này mang tính kỹ thuật.

  • transmission (mechanical) = -0.1841 (p < 0.001): khách hàng tiếp cận xe sử dụng hộp số cơ khí có xác suất mua xe thấp hơn so với xe tự động, cho thấy sở thích nghiêng về hộp số tự động.

  • state (new) = 1.635 (p < 0.001): khách hàng tiếp cận xe mới có xác suất mua cao hơn đáng kể so với nhóm emergency, là dấu hiệu rõ ràng của một nhóm khách hàng tiềm năng, chủ động mua sắm.

  • state (owned) = 0.2964 (p ≈ 0.0025): nhóm đã sở hữu xe có khả năng mua xe cao hơn nhóm “emergency”, nhưng tác động yếu hơn so với nhóm “new”.

  • has_warrantyTRUE = 1.032 (p < 0.001): xe có bảo hành làm tăng đáng kể xác suất mua – đây là yếu tố có ảnh hưởng rõ rệt và thực tiễn.

  • price_usd = -2.050 × 10⁻⁵(p < 0.001): giá xe tăng thì xác suất mua giảm, phản ánh nhạy cảm với giá của khách hàng. Mặc dù giá trị hệ số nhỏ, nhưng ảnh hưởng vẫn có ý nghĩa thống kê trong bối cảnh các yếu tố khác được kiểm soát.

  • Residual deviance = 49215, giảm so với null deviance = 50016.

  • AIC = 49227, thấp nhất trong 3 mô hình nhị phân đã ước lượng (logit: 49277, probit: 49268, cloglog: 49227).

Mô hình cloglog cho thấy tất cả các biến giải thích đều có ý nghĩa thống kê cao và ảnh hưởng rõ rệt đến hành vi mua xe. Đặc biệt, các biến state = new, has_warranty, và transmission đóng vai trò then chốt. Mặc dù ảnh hưởng của giá xe là nhỏ về độ lớn hệ số, nhưng vẫn đáng kể về thống kê trong ngữ cảnh điều kiện.

Với AIC thấp nhất, mô hình cloglog là lựa chọn phù hợp nhất để mô tả hành vi mua xe trong tập dữ liệu này, phản ánh đặc điểm quyết định có phần lệch về phía một nhóm khách hàng cụ thể (chẳng hạn như nhóm “new” rất nổi trội).

4.6.4 Đánh giá mô hình

model_comparison <- data.frame(
  Model = c("Logit", "Probit", "Cloglog"),
  AIC   = c(AIC(logit5), AIC(probit5), AIC(cloglog5)),
  BIC   = c(BIC(logit5), BIC(probit5), BIC(cloglog5))
)
print(model_comparison)
##     Model      AIC      BIC
## 1   Logit 49277.32 49328.67
## 2  Probit 49268.49 49319.85
## 3 Cloglog 49227.02 49278.37

Trong quá trình đánh giá và lựa chọn mô hình hồi quy nhị phân phù hợp, nghiên cứu đã so sánh ba mô hình phổ biến gồm: logit, probit và cloglog. Hai tiêu chí được sử dụng là AIC (Akaike Information Criterion) và BIC (Bayesian Information Criterion), vốn là những chỉ số cân bằng giữa mức độ phù hợp của mô hình với độ phức tạp của nó.

Kết quả cho thấy mô hình cloglog đạt giá trị AIC = 49227.02 và BIC = 49278.37, đều thấp hơn rõ rệt so với các mô hình còn lại. Điều này cho thấy cloglog không chỉ mô tả dữ liệu tốt hơn mà còn tránh được việc “quá khớp” (overfitting) so với logit và probit.

Hơn nữa, mô hình cloglog đặc biệt phù hợp trong bối cảnh mà xác suất xảy ra sự kiện là không đối xứng, chẳng hạn như hành vi mua xe có thể xảy ra với tần suất thấp hơn không mua – điều thường thấy trong các nghiên cứu về hành vi lựa chọn.

Do đó, mô hình cloglog được lựa chọn là mô hình phù hợp nhất để phân tích và giải thích hành vi ra quyết định mua xe trong nghiên cứu này.

Tiếp theo, tác giả sử dụng ma trận nhầm lần để tiếp tục đánh giá mô hình. Ma trận nhầm lẫn (confusion matrix) là công cụ đánh giá hiệu suất của mô hình phân loại nhị phân, bằng cách so sánh giữa giá trị dự đoán và giá trị thực tế.

library(pROC)
## Warning: package 'pROC' was built under R version 4.3.3
## Type 'citation("pROC")' for a citation.
## 
## Attaching package: 'pROC'
## The following objects are masked from 'package:stats':
## 
##     cov, smooth, var
data$purchase_decision_bin <- ifelse(data$purchase_decision == "YES", 1, 0)
pred_cloglog5 <- predict(cloglog5, type = "response")
roc_cloglog5 <- roc(data$purchase_decision_bin, pred_cloglog5)
## Setting levels: control = 0, case = 1
## Setting direction: controls < cases
thresh_cloglog <- coords(roc_cloglog5, "best", ret = "threshold")
pred_cloglog_label <- ifelse(pred_cloglog5 >= as.numeric(thresh_cloglog), 1, 0)
cm_matrix <- table(Prediction = pred_cloglog_label, Reference = data$purchase_decision_bin)
print(cm_matrix)
##           Reference
## Prediction     0     1
##          0 12205  5424
##          1 12740  8162
cm_df <- as.data.frame(cm_matrix)
colnames(cm_df) <- c("Prediction", "Reference", "Freq")

ggplot(cm_df, aes(x = factor(Reference), y = factor(Prediction), fill = Freq)) +
  geom_tile(color = "black") + 
  scale_fill_gradient(low = "blue", high = "red") +
  geom_text(aes(label = Freq), size = 5) +
  labs(
    title = "Ma trận nhầm lẫn - Mô hình Cloglog",
    x = "Thực tế (Reference)",
    y = "Dự đoán (Prediction)"
  ) +
  theme_minimal() +
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold", size = 14),
    axis.text = element_text(size = 12)
  )

TN <- cm_matrix[1,1]
FP <- cm_matrix[2,1]
FN <- cm_matrix[1,2]
TP <- cm_matrix[2,2]

accuracy  <- (TP + TN) / sum(cm_matrix)
precision <- TP / (TP + FP)
recall    <- TP / (TP + FN)  # sensitivity
f1_score  <- 2 * (precision * recall) / (precision + recall)

cat("=== Đánh giá mô hình Cloglog ===\n")
## === Đánh giá mô hình Cloglog ===
cat("Accuracy:", round(accuracy, 3), "\n")
## Accuracy: 0.529
cat("Precision:", round(precision, 3), "\n")
## Precision: 0.39
cat("Recall (Sensitivity):", round(recall, 3), "\n")
## Recall (Sensitivity): 0.601
cat("F1-score:", round(f1_score, 3), "\n")
## F1-score: 0.473
library(knitr)
# Hiển thị bảng bằng kable
kable(cm_df, caption = "Ma trận nhầm lẫn - Mô hình Cloglog")
Ma trận nhầm lẫn - Mô hình Cloglog
Prediction Reference Freq
0 0 12205
1 0 12740
0 1 5424
1 1 8162

Ma trận nhầm lẫn của mô hình cloglog cho thấy mô hình dự đoán đúng 8.162 trường hợp khách hàng mua xe và 12.205 trường hợp không mua xe. Tuy nhiên, số lượng dự đoán sai vẫn rất đáng kể, trong đó có 12.740 trường hợp mô hình dự đoán mua xe nhưng thực tế không mua (false positive) và 5.424 trường hợp mô hình dự đoán không mua xe nhưng thực tế lại mua (false negative). Điều này cho thấy khả năng phân loại của mô hình còn hạn chế, đặc biệt là xu hướng dự đoán quá nhiều trường hợp mua, gây lãng phí nếu được ứng dụng vào các chiến dịch marketing thực tế. Việc cải thiện mô hình bằng cách bổ sung thêm các biến giải thích quan trọng hơn là cần thiết.

CHƯƠNG V: KẾT LUẬN VÀ HƯỚNG NGHIÊN CỨU TIÊP THEO

Kết luận

Qua quá trình phân tích dữ liệu và ước lượng các mô hình hồi quy nhị phân, báo cáo đã chỉ ra rằng một số đặc điểm của xe có ảnh hưởng rõ rệt đến quyết định mua xe ô tô của khách hàng. Cụ thể, tình trạng của khách hàng (biến state) là yếu tố có tác động mạnh nhất, trong đó khách hàng chọn xe new có xác suất mua xe cao hơn hẳn so với nhóm tham chiếu, phản ánh động lực tiêu dùng mạnh mẽ từ phân khúc này. Ngoài ra, việc chiếc xe có đi kèm bảo hành hay không cũng ảnh hưởng đáng kể đến khả năng mua, cho thấy yếu tố an toàn và niềm tin đóng vai trò quan trọng trong hành vi tiêu dùng. Loại hộp số là một yếu tố bổ sung có ý nghĩa thống kê, với xu hướng rõ ràng rằng người tiêu dùng ưu tiên xe số tự động hơn so với xe số cơ khí. Đối với biến giá xe, khi được phân tích trong mô hình đa biến thì nó vẫn cho thấy ảnh hưởng tiêu cực có ý nghĩa đến xác suất mua, phản ánh sự thận trọng của người tiêu dùng khi giá trị sản phẩm tăng cao.

Mô hình sử dụng hàm liên kết complementary log-log (cloglog) có độ phù hợp tốt nhất so với các mô hình logit và probit, thể hiện qua chỉ số AIC và BIC thấp nhất. Điều này cho thấy mô hình cloglog phù hợp trong bối cảnh hành vi mua có xu hướng thiên lệch mạnh về một nhóm nhất định, điển hình là nhóm khách hàng chọn xe new có xác suất mua rất cao.

Từ các kết quả thu được, báo cáo đề xuất một số kiến nghị nhằm hỗ trợ hoạt động tiếp thị và bán hàng của doanh nghiệp trong lĩnh vực ô tô đã qua sử dụng. Trước hết, doanh nghiệp nên chú trọng vào nhóm khách hàng chọn xe new thông qua các chiến lược nhắm mục tiêu rõ ràng, vì đây là đối tượng có xu hướng tiêu dùng mạnh nhất. Bên cạnh đó, việc mở rộng và minh bạch các chính sách bảo hành sẽ giúp gia tăng sự tin tưởng từ phía người tiêu dùng và nâng cao tỷ lệ mua hàng. Đối với loại hộp số, việc tập trung quảng bá các dòng xe số tự động có thể đáp ứng tốt hơn nhu cầu thị trường hiện tại. Đồng thời, các chính sách định giá nên được thiết kế linh hoạt hơn, chẳng hạn như khuyến mãi, ưu đãi theo mùa hoặc hỗ trợ tài chính, nhằm giảm bớt tác động tiêu cực của yếu tố giá đến quyết định mua.

Tổng thể, báo cáo đã góp phần làm rõ mối quan hệ giữa các đặc điểm sản phẩm và hành vi tiêu dùng trong lĩnh vực ô tô, đồng thời cung cấp cơ sở định lượng quan trọng để định hướng các quyết định kinh doanh thực tiễn.

Hướng nghiên cứu tiếp theo

Báo cáo hiện tại đã xây dựng một mô hình phù hợp và có cơ sở lý luận vững chắc, với các biến giải thích đều có ý nghĩa thống kê và phản ánh đúng hành vi mua xe trong thực tiễn. Việc lựa chọn mô hình cloglog là hợp lý khi xét đến tiêu chí AIC thấp nhất, đồng thời mô hình cũng giúp làm rõ vai trò nổi bật của các yếu tố như tình trạng khách hàng, bảo hành và hộp số. Tuy nhiên, kết quả từ ma trận nhầm lẫn cho thấy khả năng phân loại của mô hình vẫn còn hạn chế, đặc biệt là tỷ lệ dự đoán sai cao ở nhóm khách hàng không mua, dẫn đến nguy cơ đánh giá sai tiềm năng khách hàng. Đây là điểm cho thấy mô hình vẫn còn dư địa để cải thiện. Trong các bước tiếp theo, nghiên cứu có thể hướng đến việc mở rộng quy mô mẫu, bổ sung thêm các biến có sức gợi mạnh hơn (chẳng hạn như thương hiệu, quãng đường đã đi, hoặc yếu tố liên quan đến người tiêu dùng), và kết hợp thêm các kỹ thuật đánh giá hiệu quả mô hình ở cấp độ thực tiễn hoặc độ chính xác theo nhóm mục tiêu cụ thể, qua đó giúp nâng cao độ chính xác và tính ứng dụng của mô hình trong các chiến lược kinh doanh thực tế.

TÀI LIỆU THAM KHẢO

[1] Trần Mạnh Tường (2025), Giáo trình Phân tích Dữ liệu Định tính.

[2] Gupta, S. (2013). A study of buying decision influencers for passenger car segment in New Delhi. International journal of business and Management Invention, 2(12), 64-71.

[3] Oprea, C. (2010). Making the decision on buying second-hand car market using data mining techniques. The USV Annals of Economics and Public Administration, 10(3), 17-26.

[4] Gumilar, BR, Sumarwan, U., & Sartono, B. (2020). Phân tích các yếu tố ảnh hưởng đến quyết định mua xe. Inovasi: Jurnal Ekonomi, Keuangan, dan Manajemen , 16 (1), 60-71.

LS0tDQp0aXRsZTogIlBIw4JOIFTDjUNIIEPDgUMgxJDhurZDIMSQSeG7gk0gQ+G7pkEgWEUgw5QgVMOUIOG6ok5IIEjGr+G7nk5HIMSQ4bq+TiBRVVnhur5UIMSQ4buKTkggTVVBIFhFIg0KYXV0aG9yOiAiU2luaCB2acOqbiB0aOG7sWMgaGnhu4duOiBOZ+G7jSBUaOG7iyBUcmFuZyINCmRhdGU6ICJUaMOhbmcgNyBuxINtIDIwMjUiDQpvdXRwdXQ6DQogIGh0bWxfZG9jdW1lbnQ6DQogICAgY29kZV9mb2xkaW5nOiBoaWRlDQogICAgY29kZV9kb3dubG9hZDogdHJ1ZQ0KICAgIG51bWJlcl9zZWN0aW9uczogZmFsc2UgDQogICAgdG9jX2RlcHRoOiA1DQogICAgdG9jOiB0cnVlDQogICAgdG9jX2Zsb2F0Og0KICAgICAgY29sbGFwc2VkOiB0cnVlDQogICAgICBzbW9vdGhfc2Nyb2xsOiB0cnVlDQogICAgdGhlbWU6IHVuaXRlZA0KICB3b3JkX2RvY3VtZW50Og0KICAgIHRvYzogdHJ1ZQ0KICAgIG51bWJlcl9zZWN0aW9uczogZmFsc2UgDQogIHBkZl9kb2N1bWVudDoNCiAgICB0b2M6IHRydWUNCiAgICB0b2NfZGVwdGg6ICc1Jw0KICAgIG51bWJlcl9zZWN0aW9uczogZmFsc2UgDQphbHdheXNfYWxsb3dfaHRtbDogdHJ1ZSAgICANCi0tLQ0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUpDQpgYGANCg0KYGBge2NzcyxlY2hvID0gRkFMU0V9DQpoMSB7DQogIGZvbnQtZmFtaWx5OiAiVGltZXMgTmV3IFJvbWFuIiwgVGltZXMsIHNlcmlmOw0KICBmb250LXNpemU6IDMycHg7DQogIGZvbnQtd2VpZ2h0OiBib2xkDQp9DQoNCmgyIHsNCiAgZm9udC1mYW1pbHk6ICJUaW1lcyBOZXcgUm9tYW4iLCBUaW1lcywgc2VyaWY7DQogIGZvbnQtc2l6ZTogMjhweDsNCiAgZm9udC13ZWlnaHQ6IGJvbGQ7DQp9DQoNCmgzIHsNCiAgZm9udC1mYW1pbHk6ICJUaW1lcyBOZXcgUm9tYW4iLCBUaW1lcywgc2VyaWY7DQogIGZvbnQtc2l6ZTogMjRweDsNCiAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogIGZvbnQtc3R5bGU6IGl0YWxpYzsNCn0NCg0KaDQgew0KICBmb250LWZhbWlseTogIlRpbWVzIE5ldyBSb21hbiIsIFRpbWVzLCBzZXJpZjsNCiAgZm9udC1zaXplOiAyMHB4Ow0KICBmb250LXN0eWxlOiBpdGFsaWM7DQp9DQoNCmJvZHkgew0KICBmb250LWZhbWlseTogIlRpbWVzIE5ldyBSb21hbiIsIFRpbWVzLCBzZXJpZjsNCiAgZm9udC1zaXplOiAxOHB4Ow0KfQ0KDQpwOm5vdChoMSk6bm90KGgyKTpub3QoaDMpOm5vdChoNCk6bm90KGg1KSB7DQogIHRleHQtaW5kZW50OiAyZW07DQp9DQoNCnAgew0KICB0ZXh0LWFsaWduOiBqdXN0aWZ5Ow0KfQ0KDQoudG9jaWZ5LWhlYWRlciB7DQogIGZvbnQtd2VpZ2h0OiBib2xkOw0KfQ0KDQoudG9jaWZ5LXdyYXBwZXIgew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAzMzY2OyANCiAgY29sb3I6ICNGRkZGRkY7IA0KfQ0KLnRvY2lmeS1pdGVtLmFjdGl2ZSwgLnRvY2lmeS1pdGVtOmhvdmVyIHsNCiAgYmFja2dyb3VuZC1jb2xvcjogIzAwMzM2NjsNCiAgY29sb3I6ICNGRkZGRkY7DQp9DQpgYGANCg0KDQojICoqTOG7nEkgQ0FNIMSQT0FOKioNCg0KRW0geGluIGNhbSDEkW9hbiDEkeG7gSB0w6BpIOKAnFBIw4JOIFTDjUNIIEPDgUMgxJDhurZDIMSQSeG7gk0gQ+G7pkEgWEUgw5QgVMOUIOG6ok5IIEjGr+G7nk5HIMSQ4bq+TiBRVVnhur5UIMSQ4buKTkggTVVBIFhF4oCdIGRvIGNow61uaCBi4bqjbiB0aMOibiBlbSBuZ2hpw6puIGPhu6l1IHbDoCB0aOG7sWMgaGnhu4duIGTGsOG7m2kgc+G7sSBoxrDhu5tuZyBk4bqrbiBj4bunYSBnaeG6o25nIHZpw6puIFRocy5UcuG6p24gTeG6oW5oIFTGsOG7nW5nLg0KS+G6v3QgcXXhuqMgdHJvbmcgYsOgaSBiw6FvIGPDoW8gbsOgeSBsw6AgdHJ1bmcgdGjhu7FjIHbDoCBraMO0bmcgc2FvIGNow6lwIHThu6sgYuG6pXQga8OsIGLDoGkgbsOgbyBraMOhYy4gQ8OhYyB0aMO0bmcgdGluIHPhu60gZOG7pW5nIHRyb25nIGLDoGkgYsOhbyBjw6FvIGPDsyBuZ3Xhu5NuIGfhu5FjLCB4deG6pXQgeOG7qSByw7UgcsOgbmcsIMSR4bqjbSBi4bqjbyB0w61uaCBtaW5oIGLhuqFjaCB2w6AgdHLDoWNoIG5oaeG7h20gdHJvbmcgcXXDoSB0csOsbmggbmdoacOqbiBj4bupdS4gDQpO4bq/dSB2aSBwaOG6oW0gbOG7nWkgY2FtIMSRb2FuIG7DoHksICBlbSB4aW4gY2jhu4t1IGhvw6BuIHRvw6BuIHRyw6FjaCBuaGnhu4dtLg0KDQojICoqTOG7nEkgQ+G6ok0gxqBOKiogDQoNCkzhu51pIMSR4bqndSB0acOqbiBjaG8gcGjDqXAgZW0geGluIGfhu61pIGzhu51pIGPhuqNtIMahbiBjaMOibiB0aMOgbmggxJHhu5FpIHbhu5tpIHF1w70gVGjhuqd5L0PDtCB0csaw4budbmcgxJDhuqFpIGjhu41jIFTDoGkgY2jDrW5oIC0gTWFya2V0aW5nLCDEkeG6t2MgYmnhu4d0IGzDoCBjw6FjIHRo4bqneSBjw7QgdHJvbmcga2hvYSBLaG9hIGjhu41jIGThu68gbGnhu4d1IMSRw6MgZ2nhuqNuZyBk4bqheSB2w6AgdHJ1eeG7gW4gdOG6o2kgY8OhYyBraeG6v24gdGjhu6ljIHbhu4Ega2luaCB04bq/IC0gdMOgaSBjaMOtbmggxJHhu4MgZW0g4bupbmcgZOG7pW5nIHRyb25nIGLDoGkgYsOhbyBjw6FvLiBCw6BpIGLDoW8gY8OhbyBuw6B5IMSRxrDhu6NjIGhvw6BuIHRoaeG7h24gZMaw4bubaSBz4buxIGNo4buJIGLhuqNvIHThuq1uIHTDrG5oIGPhu6dhIFRoUy4gVHLhuqduIE3huqFuaCBUxrDhu51uZy4gVGjhuqd5IMSRw6MgZMOgbmggbmhp4buBdSB0aOG7nWkgZ2lhbiBoxrDhu5tuZyBk4bqrbiBjxaluZyBuaMawIGdp4bqjaSDEkcOhcCBt4buNaSB0aOG6r2MgbeG6r2MgY+G7p2EgZW0gdHJvbmcgc3Xhu5F0IHF1w6EgdHLDrG5oIHRo4buxYyBoaeG7h24gYsOhbyBjw6FvLiBFbSB4aW4gYsOgeSB04buPIGzDsm5nIGJp4bq/dCDGoW4gxJHhur9uIA0KVGjhuqd5Lg0KVHJvbmcgcXXDoSB0csOsbmggbMOgbSB0aeG7g3UgbHXhuq1uIGVtIGtow7MgdHLDoW5oIGto4buPaSBuaOG7r25nIHNhaSBzw7N0IHbDoCB0aGnhur91IHPDs3QgcuG6pXQgbW9uZyBxdcO9IFRo4bqneS9Dw7QgYuG7jyBxdWEuIFR1eSBuaGnDqm4gduG7m2kgdGjhu51pIGdpYW4sIGtpbmggbmdoaeG7h20gdsOgIGtpw6rMgW4gdGjGsMyBYyBjw7JuIGjhuqFuIGPDsm4gaOG6oW4gY2jhur8ga2jDtG5nIHRo4buDIHRyw6FuaCBraOG7j2kgbmjhu69uZyBzYWkgc8OzdCBuaOG6pXQgxJHhu4tuaC4gRW0gcuG6pXQgbW9uZyBuaOG6rW4gxJHGsMahzKNjIHPGsMyjIGNo4buJIGLhuqNvLCDEkcOzbmcgZ8OzcCDDvSBracOqzIFuIGPhu6dhIGPDoWMgcXXDvSBUaOG6p3kvQ8O0IMSR4buDIGLDoGkgYsOhbyBjw6FvIHRo4buxYyBow6BuaCBuZ2jhu4EgbmdoaeG7h3AgY+G7p2EgZW0gxJHGsMahzKNjIGhvw6BuIHRoaeG7h24gaMahbiENCg0KU2F1IGPDuW5nIGVtIHhpbiBrw61uaCBjaMO6YyBxdcO9IFRo4bqneS9Dw7QgbeG6oW5oIGto4buPZSB2w6AgxJHhuqF0IMSRxrDGocyjYyBuaGnhu4F1IHRow6BuaCBjw7RuZyB0cm9uZyBzxrDMoyBuZ2hp4buHcCBnacOhbyBkdcyjYyBj4bunYSBtw6xuaCENCg0KRW0geGluIGNow6JuIHRow6BuaCBj4bqjbSDGoW4hDQoNCiMgKipDSMavxqBORyBJOiBU4buUTkcgUVVBTiBOR0hJw4pOIEPhu6hVKioNCg0KIyMgMS4xIEzDvSBkbyBjaOG7jW4gxJHhu4EgdMOgaQ0KDQpUcm9uZyBi4buRaSBj4bqjbmggdGjhu4sgdHLGsOG7nW5nIMO0IHTDtCBuZ8OgeSBjw6BuZyBzw7RpIMSR4buZbmcgdsOgIGPhuqFuaCB0cmFuaCBraOG7kWMgbGnhu4d0LCB2aeG7h2MgaGnhu4N1IHLDtSBjw6FjIHnhur91IHThu5Eg4bqjbmggaMaw4bufbmcgxJHhur9uIHF1eeG6v3QgxJHhu4tuaCBtdWEgeGUgY+G7p2EgbmfGsOG7nWkgdGnDqnUgZMO5bmcgdHLhu58gdGjDoG5oIHbhuqVuIMSR4buBIGPDsyDDvSBuZ2jEqWEgdGjhu7FjIHRp4buFbiB2w6AgaOG7jWMgdGh14bqtdCBzw6J1IHPhuq9jLiBOZ8aw4budaSB0acOqdSBkw7luZyBuZ8OgeSBuYXkga2jDtG5nIGNo4buJIHF1YW4gdMOibSDEkeG6v24gZ2nDoSBj4bqjIG3DoCBjw7JuIHhlbSB4w6l0IG5oaeG7gXUgxJHhurdjIMSRaeG7g20ga+G7uSB0aHXhuq10IHbDoCB0aeG7h24gw61jaCBj4bunYSB4ZSBuaMawIGxv4bqhaSBo4buZcCBz4buRLCB4deG6pXQgeOG7qSwgdMOsbmggdHLhuqFuZyBz4bufIGjhu691LCBraeG7g3UgZMOhbmcsIG3hu6ljIHRpw6p1IGhhbyBuaGnDqm4gbGnhu4d1LCB2w6AgY8OhYyB0w61uaCBuxINuZyBhbiB0b8Ogbi4gTmjhu69uZyB54bq/dSB04buRIG7DoHkgxJHDs25nIHZhaSB0csOyIHRoZW4gY2jhu5F0IHRyb25nIHZp4buHYyBow6xuaCB0aMOgbmggaMOgbmggdmkgdsOgIHh1IGjGsOG7m25nIHRpw6p1IGTDuW5nIHRyb25nIG5nw6BuaCDDtCB0w7QuDQoNClZp4buHYyBwaMOibiB0w61jaCBjw6FjIMSR4bq3YyDEkWnhu4NtIGPhu6UgdGjhu4MgY+G7p2EgeGUg4bqjbmggaMaw4bufbmcgxJHhur9uIHF1eeG6v3QgxJHhu4tuaCBtdWEga2jDtG5nIGNo4buJIGdpw7pwIGPDoWMgZG9hbmggbmdoaeG7h3Agc+G6o24geHXhuqV0IHbDoCBwaMOibiBwaOG7kWkgw7QgdMO0IMSR4buLbmggduG7iyBz4bqjbiBwaOG6qW0gcGjDuSBo4bujcCB24bubaSBuaHUgY+G6p3UgdGjhu4sgdHLGsOG7nW5nLCBtw6AgY8OybiBo4buXIHRy4bujIGPDoWMgbmjDoCBob+G6oWNoIMSR4buLbmggY2jDrW5oIHPDoWNoIHRyb25nIHZp4buHYyB0aMO6YyDEkeG6qXkgdGnDqnUgZMO5bmcgdsOgIGtp4buDbSBzb8OhdCB0aOG7iyB0csaw4budbmcgeGUgxJHDoyBxdWEgc+G7rSBk4bulbmcuIELDqm4gY+G6oW5oIMSRw7MsIG5nxrDhu51pIHRpw6p1IGTDuW5nIGPFqW5nIGPDsyB0aMOqbSBjxqEgc+G7nyDEkeG7gyDEkcawYSByYSBxdXnhur90IMSR4buLbmggbXVhIHPhuq9tIGhp4buHdSBxdeG6oyB2w6AgaOG7o3AgbMO9IGjGoW4uDQoNClh14bqldCBwaMOhdCB04burIMO9IG5naMSpYSB0aOG7sWMgdGnhu4VuIMSRw7MsIMSR4buBIHTDoGkgIlBow6JuIHTDrWNoIGPDoWMgxJHhurdjIMSRaeG7g20gY+G7p2EgeGUgw7QgdMO0IOG6o25oIGjGsOG7n25nIMSR4bq/biBxdXnhur90IMSR4buLbmggbXVhIHhlIiDEkcaw4bujYyBs4buxYSBjaOG7jW4gbmjhurFtIGfDs3AgcGjhuqduIGzDoG0gcsO1IHZhaSB0csOyIGPhu6dhIHThu6tuZyB54bq/dSB04buRIMSR4bq3YyB0csawbmcgY+G7p2EgeGUgdHJvbmcgcXXDoSB0csOsbmggcmEgcXV54bq/dCDEkeG7i25oIGPhu6dhIGtow6FjaCBow6BuZywgdOG7qyDEkcOzIMSRxrBhIHJhIG5o4buvbmcgaMOgbSDDvSBo4buvdSDDrWNoIGNobyB0aOG7iyB0csaw4budbmcgdsOgIGPDoWMgYsOqbiBsacOqbiBxdWFuLg0KDQoNCiMjIDEuMiBN4bulYyB0acOqdSBuZ2hpw6puIGPhu6l1DQoNCk3hu6VjIHRpw6p1IGNow61uaCBj4bunYSDEkeG7gSB0w6BpIOKAnFBow6JuIHTDrWNoIGPDoWMgxJHhurdjIMSRaeG7g20gY+G7p2EgeGUgw7QgdMO0IOG6o25oIGjGsOG7n25nIMSR4bq/biBxdXnhur90IMSR4buLbmggbXVhIHhl4oCdIGzDoCB0w6xtIGhp4buDdSB2w6AgxJHDoW5oIGdpw6EgY8OhYyB54bq/dSB04buRIMSR4buLbmggdMOtbmggY8OzIOG6o25oIGjGsOG7n25nIMSR4bq/biBxdXnhur90IMSR4buLbmggbXVhIHhlIMO0IHTDtCDEkcOjIHF1YSBz4butIGThu6VuZyBj4bunYSBuZ8aw4budaSB0acOqdSBkw7luZy4gQ+G7pSB0aOG7gywgbmdoacOqbiBj4bupdSBoxrDhu5tuZyDEkeG6v24gY8OhYyBt4bulYyB0acOqdSBzYXU6DQoNClBow6JuIHTDrWNoIMSR4bq3YyDEkWnhu4NtIHBow6JuIGLhu5EgY+G7p2EgYmnhur9uIHBo4bulIHRodeG7mWMgLSBxdXnhur90IMSR4buLbmggbXVhIHhlIOKAkyB2w6AgY8OhYyBiaeG6v24gxJHhu5ljIGzhuq1wIG5oxrAgbG/huqFpIGjhu5lwIHPhu5EsIHTDrG5oIHRy4bqhbmcgc+G7nyBo4buvdSB4ZSwgdMOsbmggdHLhuqFuZyBi4bqjbyBow6BuaCwgLi4uLCBuaOG6sW0gbcO0IHThuqMgdOG7lW5nIHF1YW4gZOG7ryBsaeG7h3UgdsOgIGjDoG5oIHZpIG11YSB4ZSBj4bunYSBuZ8aw4budaSB0acOqdSBkw7luZy4NCg0KWMOhYyDEkeG7i25oIG3hu5FpIGxpw6puIGjhu4cgZ2nhu69hIGPDoWMgxJHhurdjIMSRaeG7g20gxJHhu4tuaCB0w61uaCBj4bunYSB4ZSB2w6AgcXV54bq/dCDEkeG7i25oIG11YSB4ZSB0aMO0bmcgcXVhIGPDoWMgY8O0bmcgY+G7pSBwaMOibiB0w61jaCB0aOG7kW5nIGvDqiBuaMawIGLhuqNuZyB04bqnbiBz4buRIGNow6lvLCB04bu3IGzhu4cgcGjhuqduIHRyxINtLCB04bu3IHPhu5EgcuG7p2kgcm8gKFJpc2sgUmF0aW8pLCB04bu3IHPhu5EgY2jDqm5oIGzhu4djaCAoT2RkcyBSYXRpbyksLi4uDQoNCsSQw6FuaCBnacOhIG3hu6ljIMSR4buZIOG6o25oIGjGsOG7n25nIGPhu6dhIG3hu5l0IHPhu5EgeeG6v3UgdOG7kSBr4bu5IHRodeG6rXQgcGjhu5UgYmnhur9uICh2w60gZOG7pTogaOG7mXAgc+G7kSB04buxIMSR4buZbmcgaGF5IGPGoSBraMOtKSDEkeG6v24ga2jhuqMgbsSDbmcga2jDoWNoIGjDoG5nIGNo4buNbiBtdWEgeGUsIHThu6sgxJHDsyByw7p0IHJhIGPDoWMga+G6v3QgbHXhuq1uIG1hbmcgdMOtbmggdGjhu7FjIHRp4buFbi4NCg0Kw4FwIGThu6VuZyBwaMawxqFuZyBwaMOhcCBwaMOibiB0w61jaCDEkeG7i25oIHTDrW5oIHRyw6puIGThu68gbGnhu4d1IHRo4buxYyB04bq/IG5o4bqxbSByw6huIGx1eeG7h24ga+G7uSBuxINuZyB44butIGzDvSwgdHLDrG5oIGLDoHkgdsOgIGdp4bqjaSB0aMOtY2gga+G6v3QgcXXhuqMgbeG7mXQgY8OhY2ggbG9naWMsIG3huqFjaCBs4bqhYyB2w6Aga2hvYSBo4buNYy4NCg0KIyMgMS4zIMSQ4buRaSB0xrDhu6NuZyB2w6AgcGjhuqFtIHZpIG5naGnDqm4gY+G7qXUNCg0KxJDhu5FpIHTGsOG7o25nIG5naGnDqm4gY+G7qXUgY+G7p2EgxJHhu4EgdMOgaSDigJxQaMOibiB0w61jaCBjw6FjIMSR4bq3YyDEkWnhu4NtIGPhu6dhIHhlIOG6o25oIGjGsOG7n25nIMSR4bq/biBxdXnhur90IMSR4buLbmggbXVhIHhlIMO0IHTDtCDEkcOjIHF1YSBz4butIGThu6VuZ+KAnSBsw6AgaMOgbmggdmkgcmEgcXV54bq/dCDEkeG7i25oIG11YSB4ZSDDtCB0w7QgxJHDoyBxdWEgc+G7rSBk4bulbmcgY+G7p2EgbmfGsOG7nWkgdGnDqnUgZMO5bmcsIMSRxrDhu6NjIHRo4buDIGhp4buHbiBxdWEgdmnhu4djIGzhu7FhIGNo4buNbiBtdWEgaG/hurdjIGtow7RuZyBtdWEgeGUsIHTDuXkgdGh14buZYyB2w6BvIGPDoWMgxJHhurdjIMSRaeG7g20gY+G7pSB0aOG7gyBj4bunYSBjaGnhur9jIHhlLiBD4bulIHRo4buDLCBuZ2hpw6puIGPhu6l1IGtoYWkgdGjDoWMgbeG7mXQgc+G7kSBiaeG6v24gxJHhu4tuaCB0w61uaCBuaMawOg0KDQp0cmFuc21pc3Npb24gKGxv4bqhaSBo4buZcCBz4buRKSwNCg0Kc3RhdGUgKHTDrG5oIHRy4bqhbmcgc+G7nyBo4buvdSB4ZSksDQoNCmhhc193YXJyYW50eSAodMOsbmggdHLhuqFuZyBi4bqjbyBow6BuaCksDQoNCnbDoCBiaeG6v24gxJHhu4tuaCBsxrDhu6NuZyBo4buXIHRy4bujIGzDoCBwcmljZV91c2QgKGdpw6EgeGUpLg0KDQojIyAxLjQgS+G6v3QgY+G6pXUgxJHhu4EgdMOgaQ0KDQpOZ2/DoGkgcGjhuqduIE3hu58gxJHhuqd1IHbDoCBQaOG7pSBs4bulYywgbuG7mWkgZHVuZyBjaMOtbmggY+G7p2EgxJHhu4EgdMOgaSDEkcaw4bujYyBjaGlhIHRow6BuaCA1IGNoxrDGoW5nIG5oxrAgc2F1Og0KDQpDaMawxqFuZyBJLiBU4buVbmcgcXVhbiBuZ2hpw6puIGPhu6l1OiBUcsOsbmggYsOgeSBsw70gZG8gY2jhu41uIMSR4buBIHTDoGksIG3hu6VjIHRpw6p1IG5naGnDqm4gY+G7qXUsIGPDonUgaOG7j2kgbmdoacOqbiBj4bupdSwgxJHhu5FpIHTGsOG7o25nIHbDoCBwaOG6oW0gdmkgbmdoacOqbiBj4bupdSwgcGjGsMahbmcgcGjDoXAgdGnhur9wIGPhuq1j4bqtbiwgY+G6pXUgdHLDumMgxJHhu4EgdMOgaSB2w6AgbMaw4bujYyBraOG6o28gY8OhYyBuZ2hpw6puIGPhu6l1IHRyxrDhu5tjLg0KDQpDaMawxqFuZyBJSS4gROG7ryBsaeG7h3UgbmdoacOqbiBj4bupdTogR2nhu5tpIHRoaeG7h3UgduG7gSBi4buZIGThu68gbGnhu4d1IMSRxrDhu6NjIHPhu60gZOG7pW5nLCBtw7QgdOG6oyBjw6FjIGJp4bq/biB0cm9uZyBk4buvIGxp4buHdSwgxJHhurdjIGJp4buHdCBsw6AgY8OhYyBiaeG6v24gbGnDqm4gcXVhbiB0cuG7sWMgdGnhur9wIMSR4bq/biBt4bulYyB0acOqdSBwaMOibiB0w61jaC4NCg0KQ2jGsMahbmcgSUlJLiBQaMawxqFuZyBwaMOhcCBuZ2hpw6puIGPhu6l1OiBUcsOsbmggYsOgeSBjw6FjIHBoxrDGoW5nIHBow6FwIHRo4buRbmcga8OqIG3DtCB04bqjIHbDoCBwaMOibiB0w61jaCDEkcaw4bujYyBz4butIGThu6VuZyB0cm9uZyBuZ2hpw6puIGPhu6l1IG5oxrAgYuG6o25nIHThuqduIHPhu5EsIGLhuqNuZyBjaMOpbywgdOG7tyBz4buRIHLhu6dpIHJvIChSaXNrIFJhdGlvKSwgdOG7tyBz4buRIG9kZHMgKE9kZHMgUmF0aW8pLCBraeG7g20gxJHhu4tuaCB04bu3IGzhu4cgdsOgIG3DtCBow6xuaCBo4buTaSBxdXkgdHV54bq/biB0w61uaCBjaG8gYmnhur9uIG5o4buLIHBow6JuLi4uLg0KDQpDaMawxqFuZyBJVi4gS+G6v3QgcXXhuqMgbmdoacOqbiBj4bupdTogUGjDom4gdMOtY2ggZOG7ryBsaeG7h3UgdGjhu7FjIHThur8gZOG7sWEgdHLDqm4gY8OhYyBwaMawxqFuZyBwaMOhcCDEkcOjIHRyw6xuaCBiw6B5LCBkaeG7hW4gZ2nhuqNpIGPDoWMga+G6v3QgcXXhuqMgxJHhuqF0IMSRxrDhu6NjIHbDoCB0aOG6o28gbHXhuq1uIGPDoWMgcGjDoXQgaGnhu4duIGNow61uaCB04burIG3DtCBow6xuaCB2w6Aga2nhu4NtIMSR4buLbmguDQoNCkNoxrDGoW5nIFYuIEvhur90IGx14bqtbiB2w6Aga2nhur9uIG5naOG7izogVMOzbSB04bqvdCBjw6FjIGvhur90IHF14bqjIGNow61uaCBj4bunYSBuZ2hpw6puIGPhu6l1LCByw7p0IHJhIGvhur90IGx14bqtbiB2w6AgxJHhu4EgeHXhuqV0IG3hu5l0IHPhu5Ega2nhur9uIG5naOG7iyBjw7MgdGjhu4Mgw6FwIGThu6VuZyB0cm9uZyB0aOG7sWMgdGnhu4VuIGhv4bq3YyBuZ2hpw6puIGPhu6l1IHRp4bq/cCB0aGVvLg0KDQojIyAxLjUgTMaw4bujYyBraOG6o28gY8OhYyBuZ2hpw6puIGPhu6l1IHRyxrDhu5tjDQoNCkThu7FhIHRyw6puIGJhIG5naGnDqm4gY+G7qXUgY+G7p2EgR3VwdGEgKDIwMTMpLCBPcHJlYSAoMjAxMCkgdsOgIEd1bWlsYXIgdsOgIGPhu5luZyBz4buxICgyMDIwKSwgY8OzIHRo4buDIHRo4bqleSBy4bqxbmcgcXV54bq/dCDEkeG7i25oIG11YSB4ZSDDtCB0w7QgY2jhu4t1IOG6o25oIGjGsOG7n25nIGLhu59pIG5oaeG7gXUgxJHhurdjIMSRaeG7g20gY+G7pSB0aOG7gyBj4bunYSB4ZSB2w6AgeeG6v3UgdOG7kSBsacOqbiBxdWFuLiBOaOG7r25nIGvhur90IHF14bqjIG7DoHkgY8OzIG3hu5FpIGxpw6puIGjhu4cgcsO1IHLDoG5nIHbhu5tpIMSR4buBIHTDoGkgIlBow6JuIHTDrWNoIGPDoWMgxJHhurdjIMSRaeG7g20gY+G7p2EgeGUg4bqjbmggaMaw4bufbmcgxJHhur9uIHF1eeG6v3QgxJHhu4tuaCBtdWEgeGUgw7QgdMO0IiwgYuG7n2kgY2jDum5nIGPDuW5nIHThuq1wIHRydW5nIHbDoG8gdmnhu4djIHjDoWMgxJHhu4tuaCBjw6FjIHnhur91IHThu5EgdGhlbiBjaOG7kXQgdOG7qyBwaMOtYSBz4bqjbiBwaOG6qW0gdMOhYyDEkeG7mW5nIMSR4bq/biBow6BuaCB2aSB0acOqdSBkw7luZy4NCg0KQ+G7pSB0aOG7gywgbmdoacOqbiBj4bupdSBj4bunYSBHdXB0YSAoMjAxMykgbmjhuqVuIG3huqFuaCB2YWkgdHLDsiBj4bunYSBnacOhIGPhuqMsIGhp4buHdSBzdeG6pXQgbmhpw6puIGxp4buHdSB2w6Ag4bqjbmggaMaw4bufbmcgdOG7qyBuaMOzbSB0aGFtIGNoaeG6v3UsIGNobyB0aOG6pXkgbmfGsOG7nWkgbXVhIMSR4bq3YyBiaeG7h3QgcXVhbiB0w6JtIMSR4bq/biBjaGkgcGjDrSBz4butIGThu6VuZyB2w6Agw70ga2nhur9uIHjDoyBo4buZaSBraGkgbOG7sWEgY2jhu41uIHhlLiDEkGnhu4F1IG7DoHkgZ+G7o2kgw70gcuG6sW5nIHRyb25nIHBow6JuIHTDrWNoIMSR4bq3YyDEkWnhu4NtIHhlLCBuaOG7r25nIHnhur91IHThu5Ega2luaCB04bq/IHbDoCB4w6MgaOG7mWkgbsOqbiDEkcaw4bujYyB4ZW0geMOpdCBuaMawIGzDoCBjw6FjIGJp4bq/biBxdWFuIHRy4buNbmcuDQoNClTGsMahbmcgdOG7sSwgT3ByZWEgKDIwMTApIHPhu60gZOG7pW5nIGtoYWkgcGjDoSBk4buvIGxp4buHdSDEkeG7gyBjaG8gdGjhuqV5IHPhu7EgbGnDqm4gaOG7hyBnaeG7r2EgZ2nDoSB4ZSB2w6AgY8OhYyDEkeG6t2MgxJFp4buDbSBr4bu5IHRodeG6rXQgbmjGsCBuxINtIHPhuqNuIHh14bqldCwgcXXDo25nIMSRxrDhu51uZyDEkcOjIMSRaSwgZHVuZyB0w61jaCDEkeG7mW5nIGPGoSwgbG/huqFpIG5oacOqbiBsaeG7h3UsLi4uIMSQaeG7gXUgbsOgeSBjaG8gdGjhuqV5IGPDoWMgdGjDtG5nIHPhu5Ega+G7uSB0aHXhuq10IGPhu6dhIHhlIGPDsyB0aOG7gyBsw6Agbmjhu69uZyBjaOG7iSBiw6FvIG3huqFuaCBt4bq9IGNobyBow6BuaCB2aSBtdWEsIGjhu5cgdHLhu6MgdHLhu7FjIHRp4bq/cCBjaG8gbeG7pWMgdGnDqnUgxJHhu4EgdMOgaSBsw6AgdMOsbSByYSDEkeG6t2MgxJFp4buDbSBuw6BvIOG6o25oIGjGsOG7n25nIG5oaeG7gXUgxJHhur9uIHF1eeG6v3QgxJHhu4tuaCBtdWEuDQoNClRyb25nIGtoaSDEkcOzLCBuZ2hpw6puIGPhu6l1IGPhu6dhIEd1bWlsYXIgdsOgIGPhu5luZyBz4buxICgyMDIwKSBt4buZdCBs4bqnbiBu4buvYSBraOG6s25nIMSR4buLbmgg4bqjbmggaMaw4bufbmcgY+G7p2EgZ2nDoSBj4bqjLCBz4bqjbiBwaOG6qW0gKGPDsyB0aOG7gyBoaeG7g3UgbMOgIMSR4bq3YyDEkWnhu4NtIHhlIG5oxrAgbeG6q3UgbcOjLCB0w61uaCBuxINuZyksIHbDoCDEkeG7i2EgxJFp4buDbSBtdWEgxJHhur9uIGjDoG5oIHZpIHRpw6p1IGTDuW5nLiBOaOG7r25nIHnhur91IHThu5EgbsOgeSDEkeG7gXUgbGnDqm4gcXVhbiB0cuG7sWMgdGnhur9wIGhv4bq3YyBnacOhbiB0aeG6v3AgxJHhur9uIMSR4bq3YyDEkWnhu4NtIGPhu6dhIHhlIOKAkyBu4buZaSBkdW5nIHRy4buNbmcgdMOibSB0cm9uZyDEkeG7gSB0w6BpIMSRYW5nIG5naGnDqm4gY+G7qXUuDQoNCiMgKipDSMavxqBORyBJSTogROG7riBMSeG7hlUgTkdIScOKTiBD4buoVSoqDQoNCkLhu5kgZOG7ryBsaeG7h3Ug4oCcY2Fyc+KAnSBjaOG7qWEgdGjDtG5nIHRpbiB24buBIGPDoWMgcXXhuqNuZyBjw6FvIHhlIMO0IHTDtCwgxJHGsOG7o2MgdGh1IHRo4bqtcCB04burIG3hu5l0IHRyb25nIG5o4buvbmcgZGFuaCBt4bulYyB0cuG7sWMgdHV54bq/biBwaOG7lSBiaeG6v24gbmjhuqV0IHThuqFpIEJlbGFydXMuIEThu68gbGnhu4d1IMSRxrDhu6NjIHThuqFvIHbDoCBjw7RuZyBi4buRIGLhu59pIEtpcmlsbCBMZXBjaGVua292IHRyw6puIG7hu4FuIHThuqNuZyBLYWdnbGUgKGh0dHBzOi8vd3d3LmthZ2dsZS5jb20pLiBU4bqtcCBk4buvIGxp4buHdSBiYW8gZ+G7k20gMjAgYmnhur9uIHbDoCAzOC41MzEgcXVhbiBzw6F0LCBtw7QgdOG6oyBjaGkgdGnhur90IGPDoWMgxJHhurdjIMSRaeG7g20gY+G7p2EgeGUgbmjGsDogdGjDtG5nIHRpbiBjaHVuZyAoaMOjbmcgeGUsIG1vZGVsLCBuxINtIHPhuqNuIHh14bqldCksIHRow7RuZyBz4buRIGvhu7kgdGh14bqtdCAobG/huqFpIMSR4buZbmcgY8ahLCBo4buZcCBz4buRLCB0acOqdSB0aOG7pSBuaGnDqm4gbGnhu4d1KSwgaMOsbmggdGjhu6ljIHRow6JuIHhlIHbDoCBo4buHIGThuqtuIMSR4buZbmcsIGPFqW5nIG5oxrAgdGjDtG5nIHRpbiB24buBIGdpw6EgYsOhbiB2w6AgdMOsbmggdHLhuqFuZyBwaMOhcCBsw70uDQoNCkThu7FhIHRyw6puIGLhu5kgZOG7ryBsaeG7h3UgbsOgeSwgbmdoacOqbiBj4bupdSBz4bq9IHBow6JuIHTDrWNoIGPDoWMgeeG6v3UgdOG7kSDEkeG6t2MgxJFp4buDbSBj4bunYSB4ZSBjw7MgdGjhu4Mg4bqjbmggaMaw4bufbmcgxJHhur9uIHF1eeG6v3QgxJHhu4tuaCBtdWEgeGUgw7QgdMO0IGJhbyBn4buTbSBj4bqjIHhlIMSRw6MgcXVhIHPhu60gZOG7pW5nIGPhu6dhIG5nxrDhu51pIHRpw6p1IGTDuW5nLiBD4bulIHRo4buDLCB2aeG7h2Mga2hhaSB0aMOhYyBk4buvIGxp4buHdSBnacO6cCB4w6FjIMSR4buLbmggbmjhu69uZyB0aHXhu5ljIHTDrW5oIG7DoG8gY+G7p2EgeGUgKHbDrSBk4bulOiBsb+G6oWkgbmhpw6puIGxp4buHdSwgaMOjbmcgc+G6o24geHXhuqV0LCBz4buRIGttIMSRw6MgxJFpLCB0w6xuaCB0cuG6oW5nIHhlLCBt4bupYyBnacOhLC4uLikgY8OzIGto4bqjIG7Eg25nIHTDoWMgxJHhu5luZyBt4bqhbmggxJHhur9uIHPhu6ljIGjhuqVwIGThuqtuIGPhu6dhIG3hu5l0IGNoaeG6v2MgeGUgdHLDqm4gdGjhu4sgdHLGsOG7nW5nIHhlLiBRdWEgxJHDsywgbmdoacOqbiBj4bupdSBjdW5nIGPhuqVwIGPDoWkgbmjDrG4gxJHhu4tuaCBsxrDhu6NuZyBnacO6cCBj4bqjIG5nxrDhu51pIGLDoW4gdsOgIG5nxrDhu51pIG11YSB4ZSBoaeG7g3UgcsO1IGjGoW4gduG7gSBjw6FjIHnhur91IHThu5EgcXVhbiB0cuG7jW5nIOG6o25oIGjGsOG7n25nIMSR4bq/biBow6BuaCB2aSBtdWEgaMOgbmcgdHJvbmcgdGjhu4sgdHLGsOG7nW5nIMO0IHTDtCDEkcOjIHF1YSBz4butIGThu6VuZy4NCg0KQ8OhYyBiaeG6v24gdHJvbmcgYuG7mSBk4buvIGxp4buHdSDEkcaw4bujYyBwaMOibiBsb+G6oWkgdGjDoG5oIDEzIGJp4bq/biDEkeG7i25oIHTDrW5oIHbDoCA3IGJp4bq/biDEkeG7i25oIGzGsOG7o25nIGPhu6UgdGjhu4MgbmjGsCBzYXU6DQoNCioqQmnhur9uIMSR4buLbmggdMOtbmgqKiAocXVhbGl0YXRpdmUgLyBjYXRlZ29yaWNhbCk6DQoNCjEuIG1hbnVmYWN0dXJlcl9uYW1lIOKAkyBIw6NuZyBz4bqjbiB4deG6pXQNCg0KMi4gbW9kZWxfbmFtZSDigJMgRMOybmcgeGUNCg0KMy4gdHJhbnNtaXNzaW9uIOKAkyBMb+G6oWkgaOG7mXAgc+G7kQ0KDQo0LiBjb2xvciDigJMgTcOgdSB4ZQ0KDQo1LiBlbmdpbmVfZnVlbCDigJMgTG/huqFpIG5oacOqbiBsaeG7h3UNCg0KNi4gZW5naW5lX2hhc19nYXMg4oCTIEPDsyBn4bqvbiB0aMOqbSBo4buHIHRo4buRbmcgZ2FzIChUcnVlL0ZhbHNlKQ0KDQo3LiBlbmdpbmVfdHlwZSDigJMgS2nhu4N1IMSR4buZbmcgY8ahDQoNCjguIGJvZHlfdHlwZSDigJMgS2nhu4N1IHRow6JuIHhlDQoNCjkuIGhhc193YXJyYW50eSDigJMgQ8OybiBi4bqjbyBow6BuaCAoVHJ1ZS9GYWxzZSkNCg0KMTAuIHN0YXRlIOKAkyBUw6xuaCB0cuG6oW5nIHhlICht4bubaS9jxakpDQoNCjExLiBkcml2ZXRyYWluIOKAkyBI4buHIGThuqtuIMSR4buZbmcNCg0KMTIuIHB1cmNoYXNlX2RlY2lzaW9uIOKAkyBRdXnhur90IMSR4buLbmggbXVhIHhlIChZRVMvTk8pDQoNCjEzLiBsb2NhdGlvbl9yZWdpb24g4oCTIEtodSB24buxYyByYW8gYsOhbg0KDQoqKkJp4bq/biDEkeG7i25oIGzGsOG7o25nKiogKHF1YW50aXRhdGl2ZSAvIG51bWVyaWMpOg0KDQoxLiBvZG9tZXRlcl92YWx1ZSDigJMgU+G7kSBrbSDEkcOjIMSRaQ0KDQoyLiB5ZWFyX3Byb2R1Y2VkIOKAkyBOxINtIHPhuqNuIHh14bqldA0KDQozLiBlbmdpbmVfY2FwYWNpdHkg4oCTIER1bmcgdMOtY2ggxJHhu5luZyBjxqEgKGzDrXQpDQoNCjQuIHByaWNlX3VzZCDigJMgR2nDoSB4ZSAoVVNEKQ0KDQo1LiBudW1iZXJfb2ZfcGhvdG9zIOKAkyBT4buRIGzGsOG7o25nIOG6o25oIMSRxINuZyBrw6htDQoNCjYuIHVwX2NvdW50ZXIg4oCTIFPhu5EgbOG6p24g4oCcxJHhuql54oCdIHRpbiDEkcSDbmcNCg0KNy4gZHVyYXRpb25fbGlzdGVkIOKAkyBT4buRIG5nw6B5IHRpbiB04buTbiB04bqhaSB0csOqbiB3ZWJzaXRlDQoNCmBgYHtyLG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQpkYXRhIDwtIHJlYWQuY3N2KCJDOi9Vc2Vycy9OZ28gVHJhbmcvRG9jdW1lbnRzL1Bow6JuIHTDrWNoIGThu68gbGnhu4d1IMSR4buLbmggdMOtbmgvY2Fycy5jc3YiLCBoZWFkZXIgPSBUUlVFKQ0KbGlicmFyeShEVCkNCmRhdGF0YWJsZShoZWFkKGRhdGEsNSkpDQpgYGANCg0KDQojICoqQ0jGr8agTkcgSUlJOiBQSMavxqBORyBQSMOBUCBOR0hJw4pOIEPhu6hVKioNCg0KIyMgMy4xIE3DtCBow6xuaCBI4buTaSBxdXkgTG9naXN0aWMNCg0KTcO0IGjDrG5oIGjhu5NpIHF1eSBsb2dpc3RpYyDEkcaw4bujYyBz4butIGThu6VuZyDEkeG7gyBtw7QgaMOsbmggaMOzYSBt4buRaSBxdWFuIGjhu4cgZ2nhu69hIG3hu5l0IGJp4bq/biBwaOG7pSB0aHXhu5ljIG5o4buLIHBow6JuIFwoIFkgXGluIFx7MCwxXH0gXCkgduG7m2kgbeG7mXQgaG/hurdjIG5oaeG7gXUgYmnhur9uIMSR4buZYyBs4bqtcCBcKCBYXzEsIFhfMiwgXGxkb3RzLCBYX2sgXCkuIE3hu6VjIHRpw6p1IGzDoCDGsOG7m2MgbMaw4bujbmcgeMOhYyBzdeG6pXQgeOG6o3kgcmEgY+G7p2Egc+G7sSBraeG7h24gXCggWSA9IDEgXCkgZOG7sWEgdHLDqm4gY8OhYyBnacOhIHRy4buLIGPhu6dhIGPDoWMgYmnhur9uIGdp4bqjaSB0aMOtY2guDQoNCg0KSMOgbSB4w6FjIHN14bqldCBj4bunYSBtw7QgaMOsbmggbG9naXN0aWMgY8OzIGThuqFuZzoNCg0KXFsNClAoWSA9IDEgXG1pZCBYKSA9IFxwaShYKSA9IFxmcmFjezF9ezEgKyBlXnstXGV0YX19DQpcXQ0KDQp0cm9uZyDEkcOzOg0KDQpcWw0KXGV0YSA9IFxiZXRhXzAgKyBcYmV0YV8xIFhfMSArIFxiZXRhXzIgWF8yICsgXGNkb3RzICsgXGJldGFfayBYX2sNClxdDQoNCkhheSB2aeG6v3QgZ+G7jW46DQoNClxbDQpccGkoWCkgPSBcZnJhY3tlXntcYmV0YV8wICsgXGJldGFfMSBYXzEgKyBcY2RvdHMgKyBcYmV0YV9rIFhfa319ezEgKyBlXntcYmV0YV8wICsgXGJldGFfMSBYXzEgKyBcY2RvdHMgKyBcYmV0YV9rIFhfa319DQpcXQ0KDQpIw6BtIFwoXHBpKFgpXCkgYmnhu4N1IGRp4buFbiB4w6FjIHN14bqldCB44bqjeSByYSBz4buxIGtp4buHbiBcKFkgPSAxXCksIGPDsm4gXChcZXRhXCkgbMOgIHThu5UgaOG7o3AgdHV54bq/biB0w61uaCBj4bunYSBjw6FjIGJp4bq/biDEkeG7mWMgbOG6rXAuIEzhuqV5IGxvZ2l0IGhhaSBwaMOtYSBj4bunYSBwaMawxqFuZyB0csOsbmgsIHRhIHRodSDEkcaw4bujYyBiaeG7g3UgZGnhu4VuIHR1eeG6v24gdMOtbmg6DQoNClxbDQpcdGV4dHtsb2dpdH0oXHBpKFgpKSA9IFxsb2dcbGVmdCggXGZyYWN7XHBpKFgpfXsxIC0gXHBpKFgpfSBccmlnaHQpID0gXGJldGFfMCArIFxiZXRhXzEgWF8xICsgXGJldGFfMiBYXzIgKyBcY2RvdHMgKyBcYmV0YV9rIFhfaw0KXF0NCg0KKirDnSBuZ2jEqWEgY8OhYyBo4buHIHPhu5EqKg0KDQotIEjhu4cgc+G7kSBcKFxiZXRhX2pcKSAoduG7m2kgXChqID0gMSwgMiwgLi4uLCBrXCkpIGJp4buDdSBkaeG7hW4gbeG7qWMgdGhheSDEkeG7lWkgY+G7p2EgXChcbG9nKFx0ZXh0e29kZHN9KVwpIGtoaSBiaeG6v24gXChYX2pcKSB0xINuZyBt4buZdCDEkcahbiB24buLIChnaeG7ryBjw6FjIGJp4bq/biBraMOhYyBraMO0bmcgxJHhu5VpKS4NCi0gVGEgY8OzIHRo4buDIGzhuqV5IGzFqXkgdGjhu6thIMSR4buDIGNodXnhu4NuIHbhu4Egb2RkcyByYXRpbzoNCg0KXFsNClx0ZXh0e09SfV9qID0gZV57XGJldGFfan0NClxdDQoNCi0gTuG6v3UgXChcdGV4dHtPUn1faiA+IDFcKTogYmnhur9uIFwoWF9qXCkgbMOgbSB0xINuZyB4w6FjIHN14bqldCB44bqjeSByYSBz4buxIGtp4buHbi4NCi0gTuG6v3UgXChcdGV4dHtPUn1faiA8IDFcKTogYmnhur9uIFwoWF9qXCkgbMOgbSBnaeG6o20geMOhYyBzdeG6pXQgeOG6o3kgcmEgc+G7sSBraeG7h24uDQoNCioqxq/hu5tjIGzGsOG7o25nIHRoYW0gc+G7kSoqDQoNCkPDoWMgaOG7hyBz4buRIFwoXGJldGFfMCwgXGJldGFfMSwgLi4uLCBcYmV0YV9rXCkgxJHGsOG7o2MgxrDhu5tjIGzGsOG7o25nIHRow7RuZyBxdWEgcGjGsMahbmcgcGjDoXAgVOG7kWkgxJFhIGjDs2EgSMOgbSBo4bujcCBsw70gKE1heGltdW0gTGlrZWxpaG9vZCBFc3RpbWF0aW9uIC0gTUxFKS4gSMOgbSBo4bujcCBsw70gKGxpa2VsaWhvb2QgZnVuY3Rpb24pIMSRxrDhu6NjIHZp4bq/dDoNCg0KXFsNCkwoXGJldGEpID0gXHByb2Rfe2k9MX1ee259IFxwaV9pXnt5X2l9ICgxIC0gXHBpX2kpXnsxIC0geV9pfQ0KXF0NCg0KVHJvbmcgxJHDszoNCi0gXChccGlfaSA9IFAoWV9pID0gMSBcbWlkIFhfaSlcKQ0KLSBcKHlfaSBcaW4gXHswLDFcfVwpIGzDoCBnacOhIHRy4buLIHF1YW4gc8OhdCDEkcaw4bujYw0KDQpIw6BtIGxvZy1saWtlbGlob29kIHTGsMahbmcg4bupbmcgbMOgOg0KDQpcWw0KXGVsbChcYmV0YSkgPSBcc3VtX3tpPTF9XntufSBcbGVmdFsgeV9pIFxsb2coXHBpX2kpICsgKDEgLSB5X2kpIFxsb2coMSAtIFxwaV9pKSBccmlnaHRdDQpcXQ0KDQojIyAzLjIgTcO0IGjDrG5oIFByb2JpdA0KDQpNw7QgaMOsbmggaOG7k2kgcXV5IFByb2JpdCBsw6AgbeG7mXQgbcO0IGjDrG5oIMSRxrDhu6NjIHPhu60gZOG7pW5nIGtoaSBiaeG6v24gcGjhu6UgdGh14buZYyBsw6AgYmnhur9uIG5o4buLIHBow6JuIFwoIFkgXGluIFx7MCwxXH0gXCksIHTGsMahbmcgdOG7sSBuaMawIG3DtCBow6xuaCBMb2dpdC4gxJBp4buDbSBraMOhYyBiaeG7h3QgY2jDrW5oIG7hurFtIOG7nyBjw6FjaCB0aOG7qWMgbcO0IGjDrG5oIGjDs2EgeMOhYyBzdeG6pXQ6IHRoYXkgdsOsIHPhu60gZOG7pW5nIGjDoG0gbG9naXN0aWMsIG3DtCBow6xuaCBQcm9iaXQgc+G7rSBk4bulbmcgaMOgbSBwaMOibiBwaOG7kWkgY2h14bqpbiB0w61jaCBsxal5Lg0KDQoqKkjDoG0geMOhYyBzdeG6pXQgdsOgIGxpw6puIGjhu4cgdHV54bq/biB0w61uaCoqDQoNCk3DtCBow6xuaCBQcm9iaXQgZ2nhuqMgxJHhu4tuaCBy4bqxbmcgeMOhYyBzdeG6pXQgeOG6o3kgcmEgc+G7sSBraeG7h24gXCggWSA9IDEgXCkgxJHGsOG7o2MgeMOhYyDEkeG7i25oIGLhu59pIGjDoG0gcGjDom4gcGjhu5FpIHTDrWNoIGzFqXkgY2h14bqpbiBjaHXhuqluIGjDs2E6DQoNClxbDQpQKFkgPSAxIFxtaWQgWCkgPSBccGkoWCkgPSBcUGhpKFxldGEpDQpcXQ0KDQp24bubaToNCg0KXFsNClxldGEgPSBcYmV0YV8wICsgXGJldGFfMSBYXzEgKyBcYmV0YV8yIFhfMiArIFxjZG90cyArIFxiZXRhX2sgWF9rDQpcXQ0KDQp0cm9uZyDEkcOzOg0KLSBcKCBcUGhpKFxjZG90KSBcKSBsw6AgaMOgbSBwaMOibiBwaOG7kWkgdMOtY2ggbMWpeSBj4bunYSBwaMOibiBwaOG7kWkgY2h14bqpbiBjaHXhuqluIGhvw6EgXCggTigwLDEpIFwpLA0KLSBcKCBcYmV0YV8wIFwpIGzDoCBo4buHIHPhu5EgY2jhurduLA0KLSBcKCBcYmV0YV8xLCBcbGRvdHMsIFxiZXRhX2sgXCkgbMOgIGPDoWMgaOG7hyBz4buRIGjhu5NpIHF1eS4NCg0KSMOgbSB4w6FjIHN14bqldCBjw7MgdGjhu4Mgdmnhur90Og0KDQpcWw0KXHBpKFgpID0gXFBoaVxsZWZ0KCBcYmV0YV8wICsgXHN1bV97aj0xfV57a30gXGJldGFfaiBYX2ogXHJpZ2h0KQ0KXF0NCg0KLSBNw7QgaMOsbmggUHJvYml0IGNobyBy4bqxbmcgdOG7k24gdOG6oWkgbeG7mXQgYmnhur9uIHRp4buBbSDhuqluIGxpw6puIHThu6VjIFwoIFleKiBcKSwgxJHGsOG7o2MgbcO0IGjDrG5oIGhvw6EgdHV54bq/biB0w61uaDoNCg0KXFsNClleKiA9IFxiZXRhXzAgKyBcYmV0YV8xIFhfMSArIFxjZG90cyArIFxiZXRhX2sgWF9rICsgXHZhcmVwc2lsb24NClxdDQoNCnRyb25nIMSRw7MgXCggXHZhcmVwc2lsb24gXHNpbSBOKDAsMSkgXCksIHbDoCB0YSBjaOG7iSBxdWFuIHPDoXQgYmnhur9uIG5o4buLIHBow6JuOg0KDQpcWw0KWSA9IA0KXGJlZ2lue2Nhc2VzfQ0KMSwgJiBcdGV4dHtu4bq/dSB9IFleKiA+IDAgXFwNCjAsICYgXHRleHR7buG6v3UgfSBZXiogXGxlcSAwDQpcZW5ke2Nhc2VzfQ0KXF0NCg0KLSBDw6FjIGjhu4cgc+G7kSBcKCBcYmV0YV9qIFwpIGJp4buDdSBkaeG7hW4g4bqjbmggaMaw4bufbmcgY+G7p2EgYmnhur9uIFwoIFhfaiBcKSDEkeG6v24geMOhYyBzdeG6pXQgdGjDtG5nIHF1YSBz4buxIHRoYXkgxJHhu5VpIGPhu6dhIGJp4bq/biB0aeG7gW0g4bqpbiBcKCBZXiogXCkuDQotIFZp4buHYyBkaeG7hW4gZ2nhuqNpIHRy4buxYyB0aeG6v3AgXCggXGJldGFfaiBcKSBraMO0bmcgxJHGoW4gZ2nhuqNuIG5oxrAgdHJvbmcgbcO0IGjDrG5oIExvZ2l0LiBUdXkgbmhpw6puLCBk4bqldSBj4bunYSBcKCBcYmV0YV9qIFwpIHbhuqtuIGNobyBiaeG6v3QgY2hp4buBdSBoxrDhu5tuZyDhuqNuaCBoxrDhu59uZyAodMSDbmcgaG/hurdjIGdp4bqjbSB4w6FjIHN14bqldCkuDQoNCkPDoWMgdGhhbSBz4buRIFwoIFxiZXRhXzAsIFxiZXRhXzEsIFxsZG90cywgXGJldGFfayBcKSDEkcaw4bujYyDGsOG7m2MgbMaw4bujbmcgYuG6sW5nIHBoxrDGoW5nIHBow6FwIFThu5FpIMSRYSBob8OhIGjDoG0gaOG7o3AgbMO9IChNYXhpbXVtIExpa2VsaWhvb2QgRXN0aW1hdGlvbiAtIE1MRSkuIEjDoG0gaOG7o3AgbMO9IMSRxrDhu6NjIHZp4bq/dDoNCg0KXFsNCkwoXGJldGEpID0gXHByb2Rfe2k9MX1ee259IFxQaGkoXGV0YV9pKV57eV9pfSBcbGVmdFsgMSAtIFxQaGkoXGV0YV9pKSBccmlnaHRdXnsxIC0geV9pfQ0KXF0NCg0KdHJvbmcgxJHDszoNCg0KXFsNClxldGFfaSA9IFxiZXRhXzAgKyBcYmV0YV8xIFhfe2kxfSArIFxjZG90cyArIFxiZXRhX2sgWF97aWt9DQpcXQ0KDQpIw6BtIGxvZy1saWtlbGlob29kIHTGsMahbmcg4bupbmc6DQoNClxbDQpcZWxsKFxiZXRhKSA9IFxzdW1fe2k9MX1ee259IFxsZWZ0WyB5X2kgXGxvZyhcUGhpKFxldGFfaSkpICsgKDEgLSB5X2kpIFxsb2coMSAtIFxQaGkoXGV0YV9pKSkgXHJpZ2h0XQ0KXF0NCg0KVHV5IG3DtCBow6xuaCBMb2dpdCB2w6AgUHJvYml0IGPDsyBjw6FjaCB4w6J5IGThu7FuZyBraMOhYyBuaGF1LCBuaMawbmcgdHJvbmcgdGjhu7FjIHThur8sIGvhur90IHF14bqjIMaw4bubYyBsxrDhu6NuZyB2w6AgcGjDom4gbG/huqFpIGPhu6dhIGhhaSBtw7QgaMOsbmggdGjGsOG7nW5nIGtow6EgdMawxqFuZyDEkeG7k25nLiBT4buxIGtow6FjIGJp4buHdCBjaOG7pyB54bq/dSDEkeG6v24gdOG7qyBnaeG6oyDEkeG7i25oIHBow6JuIHBo4buRaSBzYWkgc+G7kTogTG9naXQgc+G7rSBk4bulbmcgcGjDom4gcGjhu5FpIGxvZ2lzdGljLCBjw7JuIFByb2JpdCBz4butIGThu6VuZyBwaMOibiBwaOG7kWkgY2h14bqpbi4NCg0KIyMgMy4zIE3DtCBow6xuaCBDb21wbGVtZW50YXJ5IGxvZy1sb2cgKENsb2dsb2cpDQoNCk3DtCBow6xuaCBo4buTaSBxdXkgQ29tcGxlbWVudGFyeSBMb2ctbG9nICh2aeG6v3QgdOG6r3QgbMOgIFx0ZXh0YmZ7Q2xvZ2xvZ30pIGzDoCBt4buZdCBtw7QgaMOsbmggbmjhu4sgcGjDom4gdHJvbmcgY8O5bmcgaOG7jSB24bubaSBMb2dpdCB2w6AgUHJvYml0LiDEkGnhu4NtIGtow6FjIGJp4buHdCBj4bunYSBtw7QgaMOsbmggbsOgeSBu4bqxbSDhu58gdmnhu4djIHPhu60gZOG7pW5nIGjDoG0gbGnDqm4ga+G6v3QgKGxpbmsgZnVuY3Rpb24pIGtow7RuZyDEkeG7kWkgeOG7qW5nIOKAlCBj4bulIHRo4buDIGzDoCBow6BtIFxlbXBoe2NvbXBsZW1lbnRhcnkgbG9nLWxvZ306DQoNClxbDQpcdGV4dHtjbG9nbG9nfShccGkoWCkpID0gXGxvZ1xsZWZ0KCAtXGxvZygxIC0gXHBpKFgpKSBccmlnaHQpDQpcXQ0KDQpUcm9uZyDEkcOzIFwoIFxwaShYKSA9IFAoWSA9IDEgXG1pZCBYKSBcKSBsw6AgeMOhYyBzdeG6pXQgeOG6o3kgcmEgc+G7sSBraeG7h24uDQoNCk3DtCBow6xuaCDEkcaw4bujYyDEkeG7i25oIG5naMSpYSBuaMawIHNhdToNCg0KXFsNClxsb2dcbGVmdCggLVxsb2coMSAtIFxwaShYKSkgXHJpZ2h0KSA9IFxldGEgPSBcYmV0YV8wICsgXGJldGFfMSBYXzEgKyBcYmV0YV8yIFhfMiArIFxjZG90cyArIFxiZXRhX2sgWF9rDQpcXQ0KDQpIYXkgdMawxqFuZyDEkcawxqFuZzoNCg0KXFsNClxwaShYKSA9IDEgLSBcZXhwXGxlZnQoIC1cZXhwXGxlZnQoIFxiZXRhXzAgKyBcYmV0YV8xIFhfMSArIFxjZG90cyArIFxiZXRhX2sgWF9rIFxyaWdodCkgXHJpZ2h0KQ0KXF0NCg0KKirEkOG6t2MgxJFp4buDbSB2w6Ag4bupbmcgZOG7pW5nKioNCg0KLSBNw7QgaMOsbmggQ2xvZ2xvZyBwaMO5IGjhu6NwIHRyb25nIGPDoWMgdMOsbmggaHXhu5FuZyBtw6AgeMOhYyBzdeG6pXQgeOG6o3kgcmEgc+G7sSBraeG7h24gXCggWSA9IDEgXCkgdMSDbmcgcuG6pXQgbmhhbmgg4bufIG3hu5l0IHPhu5EgdsO5bmcgZ2nDoSB0cuG7iyBj4bunYSBiaeG6v24gZ2nhuqNpIHRow61jaCwgbmjGsG5nIGNo4bqtbSDhu58gbmjhu69uZyB2w7luZyBraMOhYy4gRG8gxJHDsywgbsOzIHRow61jaCBo4bujcCBraGkgZOG7ryBsaeG7h3UgY8OzIHTDrW5oIGNo4bqldCBcdGV4dGJme2tow7RuZyDEkeG7kWkgeOG7qW5nfS4NCi0gxJDGsOG7o2Mg4bupbmcgZOG7pW5nIG5oaeG7gXUgdHJvbmc6DQpcYmVnaW57aXRlbWl6ZX0NCiAgICBcaXRlbSBQaMOibiB0w61jaCBcdGV4dGJme3Ro4budaSBnaWFuIHPhu5FuZyAoc3Vydml2YWwgYW5hbHlzaXMpfSwNCiAgICBcaXRlbSBE4buvIGxp4buHdSB24buBIFx0ZXh0YmZ7c+G7sSBraeG7h24gaGnhur9tIGfhurdwfSwNCiAgICBcaXRlbSBNw7QgaMOsbmggaMOzYSBcdGV4dGJme3jDoWMgc3XhuqV0IHjhuqN5IHJhIHRyb25nIG3hu5l0IGtob+G6o25nIHRo4budaSBnaWFuIG5o4buPfS4NCiBcZW5ke2l0ZW1pemV9DQoNCi0gVMawxqFuZyB04buxIGPDoWMgbcO0IGjDrG5oIG5o4buLIHBow6JuIGtow6FjLCBk4bqldSBj4bunYSBo4buHIHPhu5EgXCggXGJldGFfalwpIGNobyBiaeG6v3QgY2hp4buBdSBoxrDhu5tuZyB0w6FjIMSR4buZbmcgY+G7p2EgYmnhur9uIFwoIFhfalwpIMSR4bq/biBsb2cgY+G7p2EgeMOhYyBzdeG6pXQgdMOtY2ggbMWpeToNCg0KXFsNClxiZXRhX2ogPiAwIFxSaWdodGFycm93IFx0ZXh0e2Jp4bq/biB9IFhfaiBcdGV4dHsgbMOgbSB0xINuZyB9IFAoWSA9IDEpDQpcXQ0KXFsNClxiZXRhX2ogPCAwIFxSaWdodGFycm93IFx0ZXh0e2Jp4bq/biB9IFhfaiBcdGV4dHsgbMOgbSBnaeG6o20gfSBQKFkgPSAxKQ0KXF0NCg0KLSBUdXkgbmhpw6puLCB2w6wgaMOgbSBsacOqbiBr4bq/dCBraMO0bmcgxJHhu5FpIHjhu6luZyBuw6puIG3hu6ljIMSR4buZIHRoYXkgxJHhu5VpIGtow7RuZyDEkeG7k25nIMSR4buBdSwgdsOgIHZp4buHYyBkaeG7hW4gZ2nhuqNpIHRy4buxYyB0aeG6v3AgaOG7hyBz4buRIGtow7RuZyDEkcahbiBnaeG6o24gbmjGsCB0cm9uZyBMb2dpdC4NCg0KKirGr+G7m2MgbMaw4bujbmcgdGhhbSBz4buRKioNCg0KVGhhbSBz4buRIGPhu6dhIG3DtCBow6xuaCBDbG9nbG9nIMSRxrDhu6NjIMaw4bubYyBsxrDhu6NuZyBi4bqxbmcgcGjGsMahbmcgcGjDoXAgVOG7kWkgxJFhIGjDs2EgaMOgbSBo4bujcCBsw70gKE1MRSkuIEjDoG0gaOG7o3AgbMO9IMSRxrDhu6NjIHZp4bq/dDoNCg0KXFsNCkwoXGJldGEpID0gXHByb2Rfe2k9MX1ee259IFxsZWZ0WyAxIC0gXGV4cFxsZWZ0KCAtXGV4cChcZXRhX2kpIFxyaWdodCkgXHJpZ2h0XV57eV9pfQ0KXGNkb3QNClxsZWZ0WyBcZXhwXGxlZnQoIC1cZXhwKFxldGFfaSkgXHJpZ2h0KSBccmlnaHRdXnsxIC0geV9pfQ0KXF0NCg0KduG7m2k6DQoNClxbDQpcZXRhX2kgPSBcYmV0YV8wICsgXGJldGFfMSBYX3tpMX0gKyBcY2RvdHMgKyBcYmV0YV9rIFhfe2lrfQ0KXF0NCg0KSMOgbSBsb2ctbGlrZWxpaG9vZDoNCg0KXFsNClxlbGwoXGJldGEpID0gXHN1bV97aT0xfV57bn0gXGxlZnRbDQp5X2kgXGxvZ1xsZWZ0KCAxIC0gXGV4cFxsZWZ0KCAtXGV4cChcZXRhX2kpIFxyaWdodCkgXHJpZ2h0KQ0KKw0KKDEgLSB5X2kpXGxlZnQoIC1cZXhwKFxldGFfaSkgXHJpZ2h0KQ0KXHJpZ2h0XQ0KXF0NCg0KIyAqKkNIxq/GoE5HIElWOiBL4bq+VCBRVeG6oiBOR0hJw4pOIEPhu6hVKioNCg0KVOG6oWkgYsOgaSBiw6FvIGPDoW8gbsOgeSBjw6FjIGJp4bq/biDEkcaw4bujYyBz4butIGThu6VuZyDEkeG7gyBwaMOibiB0w61jaCBiYW8gZ+G7k206DQoNCioqQmnhur9uIHBo4bulIHRodeG7mWMqKg0KDQoqKnB1cmNoYXNlX2RlY2lzaW9uKiogLSBRdXnhur90IMSR4buLbmggbXVhIHhlOiBQaOG6o24gw6FuaCB2aeG7h2MgbmfGsOG7nWkgbXVhIGPDsyBs4buxYSBjaOG7jW4gY2hp4bq/YyB4ZSDEkcOzIGhheSBraMO0bmcsIMSRxrDhu6NjIHRo4buDIGhp4buHbiBxdWEgaMOgbmggdmkgbmfGsOG7nWkgYsOhbiBjaOG6pXAgbmjhuq1uIHRyYW8gxJHhu5VpIChuaMawIG3hu5l0IGNo4buJIGLDoW8gduG7gSBraOG6oyBuxINuZyBiw6FuKS4NCg0KLSBZRVMg4oCTIFhlIMSRxrDhu6NjIGNo4bqlcCBuaOG6rW4gdHJhbyDEkeG7lWkg4oaSIMSQxrDhu6NjIG11YQ0KDQotIE5PIOKAkyBLaMO0bmcgY2jhuqVwIG5o4bqtbiB0cmFvIMSR4buVaSDihpIgS2jDtG5nIMSRxrDhu6NjIG11YQ0KDQoqKkJp4bq/biDEkeG7mWMgbOG6rXAqKg0KDQoxLiAqKnRyYW5zbWlzc2lvbioqIOKAkyBMb+G6oWkgaOG7mXAgc+G7kTogTG/huqFpIGjhu5lwIHPhu5EgbcOgIHhlIHPhu60gZOG7pW5nLCBwaOG6o24gw6FuaCBz4buxIHRodeG6rW4gdGnhu4duIHbDoCB0aMOzaSBxdWVuIHPhu60gZOG7pW5nIGPhu6dhIG5nxrDhu51pIGzDoWkuDQoNCi0gYXV0b21hdGljIOKAkyBI4buZcCBz4buRIHThu7EgxJHhu5luZw0KDQotIG1lY2hhbmljYWwg4oCTIEjhu5lwIHPhu5EgY8ahIGtow60NCg0KMi4gKipzdGF0ZSoqIOKAkyBUw6xuaCB0cuG6oW5nIHPhu58gaOG7r3UgY+G7p2EgeGU6IFBo4bqjbiDDoW5oIGhp4buHbiB0cuG6oW5nIHPhu60gZOG7pW5nIGPhu6dhIHBoxrDGoW5nIHRp4buHbiwgdOG7qyDEkcOzIOG6o25oIGjGsOG7n25nIMSR4bq/biBxdXnhur90IMSR4buLbmggbXVhIGPhu6dhIGtow6FjaCBow6BuZy4NCg0KLSBlbWVyZ2VuY3kg4oCTIFhlIHRodeG7mWMgZGnhu4duIHPhu60gZOG7pW5nIMSR4bq3YyBiaeG7h3QsIG5oxrAgeGUgY+G7qXUgdGjGsMahbmcsIGPhu6l1IGjhu49hIGhv4bq3YyB4ZSBk4buLY2ggduG7pS4NCg0KLSBuZXcg4oCTIFhlIGhvw6BuIHRvw6BuIG3hu5tpLCBjaMawYSBxdWEgc+G7rSBk4bulbmcuDQoNCi0gb3duZWQg4oCTIFhlIMSRw6MgcXVhIHPhu60gZOG7pW5nLCB0aHXhu5ljIHPhu58gaOG7r3UgY8OhIG5ow6JuIGhv4bq3YyDEkcOjIMSRxINuZyBrw70gdHLGsOG7m2MgxJHDsy4NCg0KMy4gKipoYXNfd2FycmFudHkqKiDigJMgVMOsbmggdHLhuqFuZyBi4bqjbyBow6BuaDogQ2hvIGJp4bq/dCB4ZSBjw7MgY8OybiB0cm9uZyB0aOG7nWkgaOG6oW4gYuG6o28gaMOgbmggaGF5IGtow7RuZywgdGjhu4MgaGnhu4duIG3hu6ljIMSR4buZIHRpbiBj4bqteSB2w6AgYW4gdMOibSBjaG8gbmfGsOG7nWkgbXVhLg0KDQotIFRSVUUg4oCTIEPDsyBi4bqjbyBow6BuaA0KDQotIEZBTFNFIOKAkyBLaMO0bmcgYuG6o28gaMOgbmgNCg0KNC4gKipwcmljZV91c2QqKiDigJMgR2nDoSB4ZSAoVVNEKTogR2nDoSBiw6FuIHhlIHTDrW5oIHRoZW8gxJHDtCBsYSBN4bu5LCBsw6AgeeG6v3UgdOG7kSB0w6BpIGNow61uaCB0aGVuIGNo4buRdCDhuqNuaCBoxrDhu59uZyDEkeG6v24gcXV54bq/dCDEkeG7i25oIG11YSB4ZS4NCg0KUGjhuqFtIHZpIGdpw6EgdHLhu4s6IERhbyDEkeG7mW5nIHThu6sgdsOgaSB0csSDbSDEkeG6v24gaMOgbmcgY2jhu6VjIG5naMOsbiBVU0QgdMO5eSB0aGVvIGTDsm5nIHhlIHbDoCBjaOG6pXQgbMaw4bujbmcuDQoNCiMjIDQuMSBUaOG7kW5nIGvDqiBtw7QgdOG6oyBjaG8gdOG7q25nIGJp4bq/bg0KDQojIyMgNC4xLjEgQmnhur9uIHB1cmNoYXNlX2RlY2lzaW9uIChRdXnhur90IMSR4buLbmggbXVhIHhlKQ0KDQrEkOG6p3UgdGnDqm4sIHTDtGkgbOG6rXAgYuG6o25nIHThuqduIHPhu5EgdsOgIHThuqduIHN14bqldCBjaG8gYmnhur9uICpwdXJjaGFzZV9kZWNpc2lvbiogbmjhurFtIG3hu6VjIHRpw6p1IHRo4buRbmcga8OqIHPhu5EgbMaw4bujbmcgY8OhYyBxdWFuIHPDoXQgdGhlbyB04burbmcgbeG7qWMgZ2nDoSB0cuG7iyBj4bunYSBiaeG6v24gcGjhu6UgdGh14buZYy4gQmnhur9uIG7DoHkgcGjhuqNuIMOhbmggdmnhu4djIHhlIMO0IHTDtCBjw7MgxJHGsOG7o2MgbmfGsOG7nWkgbXVhIGzhu7FhIGNo4buNbiBoYXkga2jDtG5nLCBkxrDhu5tpIGThuqFuZyBuaOG7iyBwaMOibiAoWUVTL05PKS4gUXVhIGLhuqNuZyBuw6B5LCB0w7RpIGPDsyB0aOG7gyDEkcOhbmggZ2nDoSBzxqEgYuG7mSBt4bupYyDEkeG7mSBwaOG7lSBiaeG6v24gY+G7p2EgaMOgbmggdmkgbXVhIHRyb25nIHRvw6BuIGLhu5kgdOG6rXAgZOG7ryBsaeG7h3UuIA0KDQpgYGB7cn0NCiMgQuG6o25nIHThuqduIHPhu5ENCnB1MSA8LSB0YWJsZShkYXRhJHB1cmNoYXNlX2RlY2lzaW9uKQ0KIyBC4bqjbmcgdOG6p24gc3XhuqV0DQpwdTIgPC0gcHJvcC50YWJsZShwdTEpDQpwdSA8LSBkYXRhLmZyYW1lKA0KICAiXyIgPSBuYW1lcyhwdTEpLA0KICAiVOG6p24gc+G7kSIgPSBhcy52ZWN0b3IocHUxKSwNCiAgIlThuqduIHN14bqldCIgPSByb3VuZChhcy52ZWN0b3IocHUyKSAqIDEwMCwgMikNCiAgKQ0KZGF0YXRhYmxlKHB1KQ0KYGBgDQoNCg0KYGBge3J9DQpsaWJyYXJ5KGdncGxvdDIpDQpnZ3Bsb3QoYXMuZGF0YS5mcmFtZShwdTIpLCBhZXMoeCA9ICIiLCB5ID0gRnJlcSwgZmlsbCA9IFZhcjEpKSArDQogIGdlb21fY29sKHdpZHRoID0gMSwgY29sb3IgPSAid2hpdGUiKSArDQogIGNvb3JkX3BvbGFyKCJ5IikgKw0KICBnZW9tX3RleHQoYWVzKGxhYmVsID0gcGFzdGUwKHJvdW5kKEZyZXEgKiAxMDApLCAiJSIpKSwNCiAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25fc3RhY2sodmp1c3QgPSAwLjUpKSArDQogIGxhYnModGl0bGUgPSAiUGjDom4gYuG7kSB04bu3IGzhu4cgdGhlbyBxdXnhur90IMSR4buLbmggbXVhIHhlIChwdXJjaGFzZV9kZWNpc2lvbikiLCBmaWxsID0gIlRy4bqhbmcgdGjDoWkgbXVhIHhlIikgKw0KICB0aGVtZV92b2lkKCkgKw0KICB0aGVtZShwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGhqdXN0ID0gMC41KSkNCmBgYA0KDQpL4bq/dCBxdeG6oyB0aOG7kW5nIGvDqiBtw7QgdOG6oyBj4bunYSBiaeG6v24gKnB1cmNoYXNlX2RlY2lzaW9uKiBjaG8gdGjhuqV5IHRyb25nIHThu5VuZyBz4buRIDM4LjUzMSBxdWFuIHPDoXQsIGPDsyAyNC45NDUgdHLGsOG7nW5nIGjhu6NwIChjaGnhur9tIDY0LDc0JSkga2jDtG5nIGPDsyBow6BuaCB2aSBtdWEgKG3hu6ljIGdpw6EgdHLhu4sgTk8pLCB0cm9uZyBraGkgY2jhu4kgY8OzIDEzLjU4NiB0csaw4budbmcgaOG7o3AgKGNoaeG6v20gMzUsMjYlKSB0aOG7gyBoaeG7h24gaMOgbmggdmkgbXVhIHhlIChZRVMpLg0KDQpT4buxIGNow6puaCBs4buHY2ggcsO1IHLhu4d0IG7DoHkgcGjhuqNuIMOhbmggcuG6sW5nIMSRYSBz4buRIHhlIMO0IHTDtCB0cm9uZyBk4buvIGxp4buHdSBjaMawYSDEkcaw4bujYyBuZ8aw4budaSBtdWEgbOG7sWEgY2jhu41uLCBob+G6t2MgY2jGsGEgaOG7mWkgxJHhu6cgxJFp4buBdSBraeG7h24gaOG6pXAgZOG6q24gxJHhu4MgZOG6q24gxJHhur9uIGdpYW8gZOG7i2NoLiDEkMOieSBsw6AgbeG7mXQgxJHhurdjIMSRaeG7g20gcXVhbiB0cuG7jW5nLCBjaG8gdGjhuqV5IGPhuqduIHRp4bq/cCB04bulYyBwaMOibiB0w61jaCBjw6FjIHnhur91IHThu5EgY8OzIHRo4buDIHTDoWMgxJHhu5luZyDEkeG6v24gcXV54bq/dCDEkeG7i25oIG11YSwgbmjhurFtIGhp4buDdSByw7UgaMahbiB2w6wgc2FvIG5nxrDhu51pIG11YSBjaOG7iSBs4buxYSBjaOG7jW4gbeG7mXQgdOG7tyBs4buHIG5o4buPIHRyb25nIHPhu5EgY8OhYyB4ZSDEkcaw4bujYyByYW8gYsOhbi4NCg0KDQojIyMgNC4xLjIgQmnhur9uIHRyYW5zbWlzc2lvbiAoTG/huqFpIGjhu5lwIHPhu5EpDQoNClRyb25nIHBo4bqnbiBuw6B5LCB0w7RpIGzhuq1wIGLhuqNuZyB04bqnbiBz4buRIGNobyBiaeG6v24gKnRyYW5zbWlzc2lvbiogbmjhurFtIG3hu6VjIHRpw6p1IHRo4buRbmcga8OqIHPhu5EgbMaw4bujbmcgY8OhYyBxdWFuIHPDoXQgdGhlbyB04burbmcgbG/huqFpIGjhu5lwIHPhu5EgxJHGsOG7o2Mgc+G7rSBk4bulbmcgdHJvbmcgeGUgw7QgdMO0IMSRw6MgcXVhIHPhu60gZOG7pW5nLiBCaeG6v24gbsOgeSBwaOG6o24gw6FuaCDEkeG6t2MgxJFp4buDbSBr4bu5IHRodeG6rXQgcXVhbiB0cuG7jW5nIGPDsyB0aOG7gyDhuqNuaCBoxrDhu59uZyDEkeG6v24gcXV54bq/dCDEkeG7i25oIGzhu7FhIGNo4buNbiB4ZSBj4bunYSBuZ8aw4budaSBtdWEsIGRvIHRow7NpIHF1ZW4gbMOhaSB2w6AgbeG7qWMgxJHhu5kgdGh14bqtbiB0aeG7h24ga2jDoWMgbmhhdSBnaeG7r2EgY8OhYyBsb+G6oWkgaOG7mXAgc+G7kS4NCg0KYGBge3J9DQojIELhuqNuZyB04bqnbiBz4buRDQp0cjEgPC0gdGFibGUoZGF0YSR0cmFuc21pc3Npb24pDQojIELhuqNuZyB04bqnbiBzdeG6pXQNCnRyMiA8LSBwcm9wLnRhYmxlKHRyMSkNCnRyIDwtIGRhdGEuZnJhbWUoDQogICJfIiA9IG5hbWVzKHRyMSksDQogICJU4bqnbiBz4buRIiA9IGFzLnZlY3Rvcih0cjEpLA0KICAiVOG6p24gc3XhuqV0IiA9IHJvdW5kKGFzLnZlY3Rvcih0cjIpICogMTAwLCAyKQ0KICApDQpkYXRhdGFibGUodHIpDQpgYGANCg0KYGBge3J9DQpnZ3Bsb3QoYXMuZGF0YS5mcmFtZSh0cjIpLCBhZXMoeCA9ICIiLCB5ID0gRnJlcSwgZmlsbCA9IFZhcjEpKSArDQogIGdlb21fY29sKHdpZHRoID0gMSwgY29sb3IgPSAid2hpdGUiKSArDQogIGNvb3JkX3BvbGFyKCJ5IikgKw0KICBnZW9tX3RleHQoYWVzKGxhYmVsID0gcGFzdGUwKHJvdW5kKEZyZXEgKiAxMDApLCAiJSIpKSwNCiAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25fc3RhY2sodmp1c3QgPSAwLjUpKSArDQogIGxhYnModGl0bGUgPSAiVOG7tyBs4buHIHBow6JuIGLhu5EgY8OhYyBuaMOzbSB0aHXhu5ljIGJp4bq/biBo4buZcCBz4buRICh0cmFuc21pc3Npb24pIiwgZmlsbCA9ICJMb+G6oWkgaOG7mXAgc+G7kSIpICsNCiAgdGhlbWVfdm9pZCgpICsNCiAgdGhlbWUocGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAuNSkpDQpgYGANCg0KS+G6v3QgcXXhuqMgdGjhu5FuZyBrw6ogY2hvIHRo4bqleSB0cm9uZyB04buVbmcgc+G7kSAzOC41MzEgeGUgxJHGsOG7o2Mga2jhuqNvIHPDoXQsIGPDsyAyNS42MzMgeGUgKGNoaeG6v20gNjYsNTMlKSBz4butIGThu6VuZyBo4buZcCBz4buRIHPDoG4gKG1lY2hhbmljYWwpLCB0cm9uZyBraGkgY2jhu4kgY8OzIDEyLjg5OCB4ZSAoY2hp4bq/bSAzMyw0NyUpIHPhu60gZOG7pW5nIGjhu5lwIHPhu5EgdOG7sSDEkeG7mW5nIChhdXRvbWF0aWMpLg0KDQrEkGnhu4F1IG7DoHkgY2hvIHRo4bqleSB4ZSBz4buRIHPDoG4gduG6q24gY2hp4bq/bSDGsHUgdGjhur8gdHLDqm4gdGjhu4sgdHLGsOG7nW5nIHhlIMO0IHTDtCDEkcOjIHF1YSBz4butIGThu6VuZyB0cm9uZyB04bqtcCBk4buvIGxp4buHdSBraOG6o28gc8OhdC4gVHV5IG5oacOqbiwgdOG7tyBs4buHIHhlIHPhu5EgdOG7sSDEkeG7mW5nIGPFqW5nIHTGsMahbmcgxJHhu5FpIMSRw6FuZyBr4buDLCBwaOG6o24gw6FuaCBz4buxIGhp4buHbiBkaeG7h24gbmfDoHkgY8OgbmcgcGjhu5UgYmnhur9uIGPhu6dhIGxv4bqhaSBo4buZcCBz4buRIG7DoHksIGPDsyB0aOG7gyBsacOqbiBxdWFuIMSR4bq/biB0aMOzaSBxdWVuIGzDoWkgdsOgIHh1IGjGsOG7m25nIGzhu7FhIGNo4buNbiB4ZSB0aeG7h24gbmdoaSBoxqFuIGPhu6dhIG5nxrDhu51pIG11YSB0cm9uZyB0aOG7nWkgZ2lhbiBn4bqnbiDEkcOieS4NCg0KIyMjIDQuMS4zIHN0YXRlIChUw6xuaCB0cuG6oW5nIHPhu58gaOG7r3UgeGUpDQoNClRp4bq/cCB0aGVvLCB0w7RpIHRp4bq/biBow6BuaCBs4bqtcCBi4bqjbmcgdOG6p24gc+G7kSBjaG8gYmnhur9uICpzdGF0ZSogbmjhurFtIHRo4buRbmcga8OqIHPhu5EgbMaw4bujbmcgeGUgdGhlbyB0w6xuaCB0cuG6oW5nIHPhu58gaOG7r3UgaG/hurdjIG3hu6VjIMSRw61jaCBz4butIGThu6VuZyB0cm9uZyB04bqtcCBk4buvIGxp4buHdS4gQmnhur9uIG7DoHkgcGjhuqNuIMOhbmggdHLhuqFuZyB0aMOhaSBj4bunYSB4ZSBuaMawIMSRw6MgcXVhIHPhu60gZOG7pW5nLCB4ZSBt4bubaSBob+G6t2MgeGUgcGjhu6VjIHbhu6UgdHJvbmcgY8OhYyB0w6xuaCBodeG7kW5nIGto4bqpbiBj4bqlcCAtIG5o4buvbmcgeeG6v3UgdOG7kSBjw7MgdGjhu4Mg4bqjbmggaMaw4bufbmcgxJHhur9uIHF1eeG6v3QgxJHhu4tuaCBtdWEgY+G7p2EgbmfGsOG7nWkgdGnDqnUgZMO5bmcsIMSR4bq3YyBiaeG7h3QgdHJvbmcgYuG7kWkgY+G6o25oIG5nxrDhu51pIG11YSBuZ8OgeSBjw6BuZyBjw6JuIG5o4bqvYyBnaeG7r2EgZ2nDoSB0cuG7iyBz4butIGThu6VuZywgxJHhu5kgdGluIGPhuq15IHbDoCBjaGkgcGjDrSDEkeG6p3UgdMawIGJhbiDEkeG6p3UuDQoNCmBgYHtyfQ0KIyBC4bqjbmcgdOG6p24gc+G7kQ0Kc3QxIDwtIHRhYmxlKGRhdGEkc3RhdGUpDQojIELhuqNuZyB04bqnbiBzdeG6pXQNCnN0MiA8LSBwcm9wLnRhYmxlKHN0MSkNCnN0IDwtIGRhdGEuZnJhbWUoDQogICJfIiA9IG5hbWVzKHN0MSksDQogICJU4bqnbiBz4buRIiA9IGFzLnZlY3RvcihzdDEpLA0KICAiVOG6p24gc3XhuqV0IiA9IHJvdW5kKGFzLnZlY3RvcihzdDIpICogMTAwLCAzKQ0KICApDQpkYXRhdGFibGUoc3QpDQpgYGANCg0KDQpgYGB7cn0NCmdncGxvdChhcy5kYXRhLmZyYW1lKHN0MSksIGFlcyh4ID0gVmFyMSwgeSA9IEZyZXEsIGZpbGwgPSBWYXIxKSkgKw0KICBnZW9tX2NvbCh3aWR0aCA9IDAuNywgY29sb3IgPSAid2hpdGUiKSArDQogIGdlb21fdGV4dChhZXMobGFiZWwgPSBwYXN0ZTAoRnJlcSwgIiAoIiwgcm91bmQoc3QyICogMTAwKSwgIiUpIikpLA0KICAgICAgICAgICAgdmp1c3QgPSAtMC41LCBzaXplID0gNCkgKw0KICBsYWJzKA0KICAgIHRpdGxlID0gIkJp4buDdSDEkeG7kyBj4buZdCBtw7QgdOG6oyBs4buxYSBjaOG7jW4gdGhlbyB0w6xuaCB0cuG6oW5nIGPhu6dhIHhlIChzdGF0ZSkiLA0KICAgIHggPSAiVMOsbmggdHLhuqFuZyB4ZSIsDQogICAgeSA9ICJU4bqnbiBz4buRIiwNCiAgICBmaWxsID0gIlTDrG5oIHRy4bqhbmcgeGUiDQogICkgKw0KICB0aGVtZV9taW5pbWFsKCkgKw0KICB0aGVtZShwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGhqdXN0ID0gMC41KSkNCmBgYA0KDQoNCkvhur90IHF14bqjIHRo4buRbmcga8OqIHThuqduIHPhu5EgY2hvIGJp4bq/biAqc3RhdGUqIGNobyB0aOG6pXkgcuG6sW5nIHBo4bqnbiBs4bubbiBjw6FjIHhlIHRyb25nIHThuq1wIGThu68gbGnhu4d1IHRodeG7mWMgbmjDs20geGUgxJHDoyBxdWEgc+G7rSBk4bulbmcgKG93bmVkKSwgduG7m2kgdOG6p24gc+G7kSBsw6puIHThu5tpIDM3LjcyMyB4ZSwgY2hp4bq/bSA5Nyw5MCUgdG/DoG4gYuG7mSBt4bqrdS4gVHJvbmcga2hpIMSRw7MsIG5ow7NtIHhlIG3hu5tpIChuZXcpIGNo4buJIGdoaSBuaOG6rW4gNDM4IHhlLCB0xrDGoW5nIMSRxrDGoW5nIDEsMTQlLCB2w6AgbmjDs20geGUgcGjhu6VjIHbhu6UgdHJvbmcgY8OhYyB0w6xuaCBodeG7kW5nIGto4bqpbiBj4bqlcCAoZW1lcmdlbmN5KSBjw7MgMzcwIHhlLCBjaGnhur9tIHThu7cgbOG7hyBraGnDqm0gdOG7kW4gMCw5NiUuIFPhu7EgY2jDqm5oIGzhu4djaCByw7UgcuG7h3QgbsOgeSBwaOG6o24gw6FuaCB0aOG7sWMgdOG6vyBy4bqxbmcgdGjhu4sgdHLGsOG7nW5nIHhlIMSRw6MgcXVhIHPhu60gZOG7pW5nIGNoaeG6v20gxrB1IHRo4bq/IHRyb25nIGThu68gbGnhu4d1IHRodSB0aOG6rXAgxJHGsOG7o2MsIMSR4buTbmcgdGjhu51pIGPFqW5nIGNobyB0aOG6pXkgaMOgbmggdmkgbXVhIHhlIGPhu6dhIG5nxrDhu51pIHRpw6p1IGTDuW5nIGPDsyB0aOG7gyB04bqtcCB0cnVuZyBjaOG7pyB54bq/dSB2w6BvIG5ow7NtIHhlIG7DoHkuIE3hurd0IGtow6FjLCB04bu3IGzhu4cgeGUgbeG7m2kgdsOgIHhlIGto4bqpbiBj4bqlcCBraMOhIHRo4bqlcCwgxJFp4buBdSBuw6B5IGPhuqduIMSRxrDhu6NjIGPDom4gbmjhuq9jIGtoaSBwaMOibiB0w61jaCBt4buRaSBxdWFuIGjhu4cgZ2nhu69hIGJp4bq/biBzdGF0ZSB24bubaSBjw6FjIHnhur91IHThu5Ega2jDoWMgbmjGsCBxdXnhur90IMSR4buLbmggbXVhLCBi4bufaSBjxqEgY+G6pXUgbeG6q3Uga2jDtG5nIMSR4buTbmcgxJHhu4F1IGPDsyB0aOG7gyDhuqNuaCBoxrDhu59uZyDEkeG6v24ga+G6v3QgbHXhuq1uIHRo4buRbmcga8OqLg0KDQojIyMgNC4xLjQgaGFzX3dhcnJhbnR5IChDw7JuIGLhuqNvIGjDoG5oKQ0KDQpQaOG6p24gbsOgeSwgdMO0aSBs4bqtcCBi4bqjbmcgdOG6p24gc+G7kSBjaG8gYmnhur9uICpoYXNfd2FycmFudHkqIG5o4bqxbSBt4bulYyB0acOqdSB0aOG7kW5nIGvDqiBz4buRIGzGsOG7o25nIHhlIGPDsm4gdHJvbmcgdGjhu51pIGjhuqFuIGLhuqNvIGjDoG5oLiBCaeG6v24gbsOgeSBwaOG6o24gw6FuaCBt4bupYyDEkeG7mSDEkeG6o20gYuG6o28ga+G7uSB0aHXhuq10IMSRaSBrw6htIHbhu5tpIHhlIGtoaSBiw6FuLCBjw7MgdGjhu4MgxJHDs25nIHZhaSB0csOyIG5oxrAgbeG7mXQgeeG6v3UgdOG7kSB04bqhbyBuaeG7gW0gdGluIHbDoCDhuqNuaCBoxrDhu59uZyDEkeG6v24gcXV54bq/dCDEkeG7i25oIG11YSBj4bunYSBuZ8aw4budaSB0acOqdSBkw7luZywgxJHhurdjIGJp4buHdCB0cm9uZyBi4buRaSBj4bqjbmggbXVhIGLDoW4geGUgdGjGsOG7nW5nIHRp4buBbSDhuqluIHLhu6dpIHJvIHbhu4EgY2jhuqV0IGzGsOG7o25nLg0KDQoNCmBgYHtyfQ0KIyBC4bqjbmcgdOG6p24gc+G7kQ0KaGExIDwtIHRhYmxlKGRhdGEkaGFzX3dhcnJhbnR5KQ0KIyBC4bqjbmcgdOG6p24gc3XhuqV0DQpoYTIgPC0gcHJvcC50YWJsZShoYTEpDQpoYSA8LSBkYXRhLmZyYW1lKA0KICAiXyIgPSBuYW1lcyhoYTEpLA0KICAiVOG6p24gc+G7kSIgPSBhcy52ZWN0b3IoaGExKSwNCiAgIlThuqduIHN14bqldCIgPSByb3VuZChhcy52ZWN0b3IoaGEyKSAqIDEwMCwgMykNCiAgKQ0KZGF0YXRhYmxlKGhhKQ0KYGBgDQoNCmBgYHtyfQ0KZ2dwbG90KGFzLmRhdGEuZnJhbWUoaGEyKSwgYWVzKHggPSAiIiwgeSA9IEZyZXEsIGZpbGwgPSBWYXIxKSkgKw0KICBnZW9tX2NvbCh3aWR0aCA9IDEsIGNvbG9yID0gIndoaXRlIikgKw0KICBjb29yZF9wb2xhcigieSIpICsNCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHBhc3RlMChyb3VuZChGcmVxICogMTAwKSwgIiUiKSksDQogICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX3N0YWNrKHZqdXN0ID0gMC41KSkgKw0KICBsYWJzKHRpdGxlID0gIlThu7cgbOG7hyBwaMOibiBi4buRIGPDoWMgbmjDs20gdGh14buZYyBiaeG6v24gdMOsbmggdHLhuqFuZyBi4bqjbyBow6BuaCB4ZSAoaGFzX3dhcnJhbnR5KSIsIGZpbGwgPSAiVMOsbmggdHLhuqFuZyBi4bqjbyBow6BuaCIpICsNCiAgdGhlbWVfdm9pZCgpICsNCiAgdGhlbWUocGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAuNSkpDQpgYGANCg0KS+G6v3QgcXXhuqMgdGjhu5FuZyBrw6ogY2hvIHRo4bqleSB0cm9uZyB04buVbmcgc+G7kSAzOC41MzEgeGUsIGPDsyB04bubaSAzOC4wODIgeGUgKGNoaeG6v20gOTgsODQlKSBraMO0bmcgY8OybiB0cm9uZyB0aOG7nWkgaOG6oW4gYuG6o28gaMOgbmggKEZBTFNFKSwgdHJvbmcga2hpIGNo4buJIGPDsyA0NDkgeGUgKGNoaeG6v20gMSwxNyUpIGPDsm4gYuG6o28gaMOgbmggKFRSVUUpLg0KDQpU4bu3IGzhu4cgeGUgY8OybiBi4bqjbyBow6BuaCBsw6AgcuG6pXQgdGjhuqVwLCBjaG8gdGjhuqV5IHLhurFuZyBwaOG6p24gbOG7m24gY8OhYyB4ZSDDtCB0w7QgxJHDoyBxdWEgc+G7rSBk4bulbmcgdHLDqm4gdGjhu4sgdHLGsOG7nW5nIGtow7RuZyDEkWkga8OobSB24bubaSBjaMOtbmggc8OhY2ggYuG6o28gaMOgbmggY2jDrW5oIGjDo25nIGhv4bq3YyBi4bqjbyBow6BuaCBt4bufIHLhu5luZy4gxJBp4buBdSBuw6B5IGPDsyB0aOG7gyDhuqNuaCBoxrDhu59uZyDEkcOhbmcga+G7gyDEkeG6v24gdMOibSBsw70gbmfGsOG7nWkgbXVhLCBi4bufaSB2w6wgYuG6o28gaMOgbmggdGjGsOG7nW5nIMSRxrDhu6NjIHhlbSBsw6AgbeG7mXQgeeG6v3UgdOG7kSDEkeG6o20gYuG6o28gY2jhuqV0IGzGsOG7o25nIHbDoCBnaeG6o20gdGhp4buDdSBy4bunaSBybyBzYXUgbXVhLiDEkMOieSBjxaluZyBsw6AgY8ahIHPhu58gcXVhbiB0cuG7jW5nIMSR4buDIHhlbSB4w6l0IGJp4bq/biBuw6B5IG5oxrAgbeG7mXQgeeG6v3UgdOG7kSB0w6FjIMSR4buZbmcgxJHhur9uIHF1eeG6v3QgxJHhu4tuaCBtdWEgeGUgdHJvbmcgY8OhYyBwaMOibiB0w61jaCB0aeG6v3AgdGhlby4NCg0KIyMjIDQuMS41IHByaWNlX3VzZCAoR2nDoSB4ZSkNCg0KYGBge3J9DQpsaWJyYXJ5KGtuaXRyKQ0KbGlicmFyeShkcGx5cikNCmxpYnJhcnkodGlkeXIpDQojIFTDrW5oIHRo4buRbmcga8OqIG3DtCB04bqjDQpwciA8LSBkYXRhICU+JQ0KICBzdW1tYXJpc2UoDQogICAgYFPhu5EgcXVhbiBzw6F0IChuKWAgPSBuKCksDQogICAgYEdpw6EgdHLhu4sgbmjhu48gbmjhuqV0IChNaW4pYCA9IG1pbihwcmljZV91c2QsIG5hLnJtID0gVFJVRSksDQogICAgYFExICgyNSUpYCA9IHF1YW50aWxlKHByaWNlX3VzZCwgMC4yNSwgbmEucm0gPSBUUlVFKSwNCiAgICBgVHJ1bmcgduG7iyAoTWVkaWFuKWAgPSBtZWRpYW4ocHJpY2VfdXNkLCBuYS5ybSA9IFRSVUUpLA0KICAgIGBUcnVuZyBiw6xuaCAoTWVhbilgID0gbWVhbihwcmljZV91c2QsIG5hLnJtID0gVFJVRSksDQogICAgYFEzICg3NSUpYCA9IHF1YW50aWxlKHByaWNlX3VzZCwgMC43NSwgbmEucm0gPSBUUlVFKSwNCiAgICBgR2nDoSB0cuG7iyBs4bubbiBuaOG6pXQgKE1heClgID0gbWF4KHByaWNlX3VzZCwgbmEucm0gPSBUUlVFKSwNCiAgICBgxJDhu5kgbOG7h2NoIGNodeG6qW4gKFNEKWAgPSBzZChwcmljZV91c2QsIG5hLnJtID0gVFJVRSksDQogICAgYFBoxrDGoW5nIHNhaSAoVmFyaWFuY2UpYCA9IHZhcihwcmljZV91c2QsIG5hLnJtID0gVFJVRSksDQogICAgYEjhu4cgc+G7kSBiaeG6v24gdGhpw6puIChDVilgID0gc2QocHJpY2VfdXNkLCBuYS5ybSA9IFRSVUUpIC8gbWVhbihwcmljZV91c2QsIG5hLnJtID0gVFJVRSkNCiAgKSAlPiUNCiAgdGlkeXI6OnBpdm90X2xvbmdlcihldmVyeXRoaW5nKCksIG5hbWVzX3RvID0gIkNo4buJIHPhu5EgdGjhu5FuZyBrw6oiLCB2YWx1ZXNfdG8gPSAiR2nDoSB0cuG7iyB0aOG7kW5nIGvDqiIpDQprYWJsZShwciwgZGlnaXRzID0gMiwgY2FwdGlvbiA9ICJUaOG7kW5nIGvDqiBtw7QgdOG6oyBiaeG6v24gcHJpY2VfdXNkIikNCmBgYA0KDQoNCmBgYHtyfQ0KaGlzdChkYXRhJHByaWNlX3VzZCwNCiAgICAgYnJlYWtzID0gNTAsDQogICAgIG1haW4gPSAiQmnhu4N1IMSR4buTIEhpc3RvZ3JhbSBj4bunYSBnacOhIHhlIChwcmljZV91c2QpIiwNCiAgICAgeGxhYiA9ICJHacOhIHhlIChVU0QpIiwNCiAgICAgY29sID0gInNreWJsdWUiLCBib3JkZXIgPSAid2hpdGUiKQ0KYGBgDQoNCkJp4bq/biAqcHJpY2VfdXNkKiB0cm9uZyB04bqtcCBk4buvIGxp4buHdSBn4buTbSAzOC41MzEgcXVhbiBzw6F0LCB24bubaSBnacOhIHRy4buLIGRhbyDEkeG7mW5nIHThu6sgMS4wMDAgxJHhur9uIDUwLjAwMCBVU0QsIGNobyB0aOG6pXkgbeG7qWMgxJHhu5kgcGjDom4gdMOhbiBy4bqldCBy4buZbmcuIEdpw6EgdHLhu4sgdHJ1bmcgYsOsbmggbMOgIDYuNjM5LDk3LCBjYW8gaMahbiDEkcOhbmcga+G7gyBzbyB24bubaSB0cnVuZyB24buLIGzDoCA0LjgwMCwgY2hvIHRo4bqleSBwaMOibiBwaOG7kWkgY8OzIHh1IGjGsOG7m25nIGzhu4djaCBwaOG6o2kgLSB04bupYyBsw6AgdOG7k24gdOG6oWkgbeG7mXQgc+G7kSBsxrDhu6NuZyBuaOG7jyBjw6FjIHhlIGPDsyBnacOhIHLhuqV0IGNhbyBrw6lvIHRydW5nIGLDrG5oIGzDqm4uIEtob+G6o25nIHThu6kgcGjDom4gduG7iyAoUTEgPSAyLjEwMCwgUTMgPSA4Ljk5MCkgY2hvIHRo4bqleSA1MCUgeGUgbuG6sW0gdHJvbmcga2hv4bqjbmcgZ2nDoSB04burIDIuMTAwIMSR4bq/biA4Ljk5MCwgcGjhuqNuIMOhbmggc+G7sSB04bqtcCB0cnVuZyBjaMOtbmggY+G7p2EgdGjhu4sgdHLGsOG7nW5nIHbDoG8gcGjDom4ga2jDumMgeGUgdOG6p20gdHJ1bmcgaG/hurdjIGdpw6EgcuG6uy4gxJDhu5kgbOG7h2NoIGNodeG6qW4gY2FvIChTRCA9IDYuNDI4LDE1KSBjw7luZyB24bubaSBwaMawxqFuZyBzYWkgbOG7m24gKFZhciA9IDQxLjMyMS4xMzgsMzcpIGNobyB0aOG6pXkgbeG7qWMgxJHhu5kgYmnhur9uIMSR4buZbmcgbeG6oW5oIHbhu4EgZ2nDoSBnaeG7r2EgY8OhYyB4ZS4gxJDhurdjIGJp4buHdCwgaOG7hyBz4buRIGJp4bq/biB0aGnDqm4gKENWKSA9IDAsOTcsIHThu6ljIGfhuqduIDEsIGNobyB0aOG6pXkgbeG7qWMgxJHhu5kgcGjDom4gdMOhbiB0xrDGoW5nIMSR4buRaSBs4bubbiBzbyB24bubaSB0cnVuZyBiw6xuaCwgxJFp4buBdSBuw6B5IGjDoG0gw70gdGjhu4sgdHLGsOG7nW5nIHhlIGPFqSBjw7Mgc+G7sSDEkWEgZOG6oW5nIHLhuqV0IGNhbyB24buBIG3hu6ljIGdpw6Eg4oCTIGPDsyB0aOG7gyBkbyBraMOhYyBiaeG7h3QgduG7gSBow6NuZyB4ZSwgxJHhu51pIHhlLCB0w6xuaCB0cuG6oW5nIHPhu60gZOG7pW5nLCBsb+G6oWkgeGUsIHbDoCBjw6FjIHnhur91IHThu5Ega+G7uSB0aHXhuq10IGtow6FjLg0KDQoNCmBgYHtyfQ0KIyBUaGnhur90IGzhuq1wIGLhu5EgY+G7pWMgZ+G7k20gMSBow6BuZywgMiBj4buZdA0KcGFyKG1mcm93ID0gYygxLCAyKSkNCg0KIyBCaeG7g3UgxJHhu5MgMTogQm94cGxvdCBj4bunYSBnacOhIHhlDQpib3hwbG90KGRhdGEkcHJpY2VfdXNkLA0KICAgICAgICBtYWluID0gIkJveHBsb3QgY+G7p2EgZ2nDoSB4ZSIsDQogICAgICAgIHlsYWIgPSAiR2nDoSAoVVNEKSIsDQogICAgICAgIGNvbCA9ICJvcmFuZ2UiKQ0KDQojIEJp4buDdSDEkeG7kyAyOiBIaXN0b2dyYW0gc2F1IGJp4bq/biDEkeG7lWkgbG9nDQpoaXN0KGxvZzFwKGRhdGEkcHJpY2VfdXNkKSwNCiAgICAgYnJlYWtzID0gNTAsDQogICAgIG1haW4gPSAiSGlzdG9ncmFtIGPhu6dhIGxvZygxICsgcHJpY2VfdXNkKSIsDQogICAgIHhsYWIgPSAibG9nKDEgKyBHacOhKSIsDQogICAgIGNvbCA9ICJsaWdodGdyZWVuIiwgYm9yZGVyID0gIndoaXRlIikNCg0KIyBSZXNldCBi4buRIGPhu6VjIHNhdSBraGkgduG6vSAobuG6v3UgY+G6p24gduG6vSBiaeG7g3UgxJHhu5MgbeG7m2kgc2F1IMSRw7MpDQpwYXIobWZyb3cgPSBjKDEsIDEpKQ0KYGBgDQoNCkjDrG5oIGLDqm4gdHLDoWkgY2hvIHRo4bqleSBnacOhIHhlIGPDsyBuaGnhu4F1IMSRaeG7g20gbmdv4bqhaSBs4buHIOG7nyBt4bupYyBjYW8sIHRyb25nIGtoaSBiaeG7g3UgxJHhu5MgYsOqbiBwaOG6o2kgc2F1IGtoaSBiaeG6v24gxJHhu5VpIGxvZyBnacO6cCBsw6BtIGdp4bqjbSDEkeG7mSBs4buHY2ggY+G7p2EgcGjDom4gcGjhu5FpLCBtYW5nIGzhuqFpIGjDrG5oIGThuqFuZyBn4bqnbiBjaHXhuqluIGjGoW4uIMSQaeG7gXUgbsOgeSBjaG8gdGjhuqV5IGJp4bq/biDEkeG7lWkgbG9nIGPDsyB0aOG7gyBo4buvdSDDrWNoIGtoaSBz4butIGThu6VuZyB0cm9uZyBtw7QgaMOsbmggaOG7k2kgcXV5Lg0KDQpCaeG7g3UgxJHhu5MgYsOqbiB0csOhaSDigJMgQm94cGxvdCBj4bunYSBwcmljZV91c2QgKEdpw6EgeGUpOiBQaOG6p24gbOG7m24gY8OhYyBt4bupYyBnacOhIHhlIHThuq1wIHRydW5nIOG7nyBraG/huqNuZyB04burIDAgxJHhur9uIDE1LjAwMCBVU0QuIEPDsyBy4bqldCBuaGnhu4F1IGdpw6EgdHLhu4sgbmdv4bqhaSBs4buHIChvdXRsaWVycykg4bufIHBow61hIHRyw6puLCDEkeG6t2MgYmnhu4d0IGzDoCBjw6FjIHhlIGPDsyBnacOhIHbGsOG7o3QgcXXDoSAzMC4wMDAgVVNELCDEkcaw4bujYyBiaeG7g3UgZGnhu4VuIGLhurFuZyBjw6FjIGThuqV1IGNo4bqlbSB0csOybi4gQ2hp4buBdSBkw6BpICJyw6J1IiBwaMOtYSB0csOqbiBkw6BpIGjGoW4gcuG6pXQgbmhp4buBdSBzbyB24bubaSBwaMOtYSBkxrDhu5tpLCBjaG8gdGjhuqV5IHBow6JuIHBo4buRaSBnacOhIGLhu4sgbOG7h2NoIHBo4bqjaSBt4bqhbmggKHBo4bqnbiDEkXXDtGkga8OpbyBkw6BpIHbhu4EgcGjDrWEgZ2nDoSBjYW8pLg0KDQpCaeG7g3UgxJHhu5MgYsOqbiBwaOG6o2kg4oCTIEhpc3RvZ3JhbSBj4bunYSBsb2coMSArIHByaWNlX3VzZCk6IFNhdSBraGkgYmnhur9uIMSR4buVaSBsb2csIHBow6JuIHBo4buRaSBj4bunYSBnacOhIHhlIHRy4bufIG7Dqm4gZ+G6p24gxJHhu5FpIHjhu6luZyBoxqFuIChn4bqnbiBjaHXhuqluKSwga2jDtG5nIGPDsm4gYuG7iyBrw6lvIGzhu4djaCBt4bqhbmggduG7gSBt4buZdCBwaMOtYSBuaMawIHRyxrDhu5tjLiDEkGnhu4F1IG7DoHkgY2hvIHRo4bqleSB2aeG7h2MgYmnhur9uIMSR4buVaSBsb2cgZ2nDunAgZOG7ryBsaeG7h3UgdHLhu58gbsOqbiBk4buFIG3DtCBow6xuaCBow7NhIGjGoW4sIMSR4bq3YyBiaeG7h3QgbMOgIGtoaSDEkcawYSB2w6BvIGPDoWMgbcO0IGjDrG5oIGjhu5NpIHF1eSAobG9naXN0aWMsIHByb2JpdC4uLikuDQoNClF1YSBoYWkgYmnhu4N1IMSR4buTLCBjw7MgdGjhu4MgdGjhuqV5IGJp4bq/biAqcHJpY2VfdXNkKiBn4buRYyBjw7MgcGjDom4gcGjhu5FpIGzhu4djaCBwaOG6o2kgduG7m2kgbmhp4buBdSBuZ2/huqFpIGzhu4cuIFR1eSBuaGnDqm4sIHNhdSBraGkgw6FwIGThu6VuZyBiaeG6v24gxJHhu5VpIGxvZywgcGjDom4gcGjhu5FpIHRy4bufIG7Dqm4gxJHhu5FpIHjhu6luZyBoxqFuIHbDoCBwaMO5IGjhu6NwIGjGoW4gxJHhu4Mgc+G7rSBk4bulbmcgdHJvbmcgcGjDom4gdMOtY2ggaOG7k2kgcXV5LiBEbyDEkcOzLCB2aeG7h2Mgc+G7rSBk4bulbmcgbG9nKHByaWNlX3VzZCkgdHJvbmcgbcO0IGjDrG5oIGPDsyB0aOG7gyBj4bqjaSB0aGnhu4duIHTDrW5oIHR1eeG6v24gdMOtbmggdsOgIMSR4buZIHBow7kgaOG7o3AgbcO0IGjDrG5oLg0KDQojIyA0LjIgUGjDom4gdMOtY2ggbG/huqFpIGjhu5lwIHPhu5EgeGUg4bqjbmggaMaw4bufbmcgxJHhur9uIHF1eeG6v3QgxJHhu4tuaCBtdWEgeGUNCg0KIyMjIDQuMi4xIFRo4buRbmcga8OqIG3DtCB04bqjIGNobyBj4bq3cCBiaeG6v24gcHVyY2hhc2VfZGVjaXNpb24gdsOgIHRyYW5zbWlzc2lvbg0KDQpUcm9uZyB0csaw4budbmcgaOG7o3AgbsOgeSwgY2jDum5nIHRhIGzhuq1wIGLhuqNuZyB04bqnbiBz4buRIGNow6lvIHbDoCB0w61uaCB04bu3IGzhu4cgcGjhuqduIHRyxINtIHRoZW8gaMOgbmcgZ2nhu69hIGhhaSBiaeG6v24gKnB1cmNoYXNlX2RlY2lzaW9uKiAocXV54bq/dCDEkeG7i25oIG11YSB4ZSkgdsOgICp0cmFuc21pc3Npb24qIChsb+G6oWkgaOG7mXAgc+G7kSB4ZSksIG5o4bqxbSBt4bulYyB0acOqdSBwaMOibiB0w61jaCBt4buRaSBsacOqbiBo4buHIGdp4buvYSBow6BuaCB2aSBtdWEgeGUgdsOgIGxv4bqhaSBo4buZcCBz4buRIMSRxrDhu6NjIHRyYW5nIGLhu4suIFZp4buHYyBwaMOibiB04buVIGNow6lvIGdp4buvYSBoYWkgYmnhur9uIMSR4buLbmggdMOtbmggbsOgeSBjaG8gcGjDqXAgcXVhbiBzw6F0IHPhu7Ega2jDoWMgYmnhu4d0IHRyb25nIHThu7cgbOG7hyBtdWEgZ2nhu69hIGPDoWMgbmjDs20gaOG7mXAgc+G7kSBraMOhYyBuaGF1LCB04burIMSRw7MgxJHGsGEgcmEgbmjhuq1uIMSR4buLbmggYmFuIMSR4bqndSB24buBIGto4bqjIG7Eg25nIGxv4bqhaSBo4buZcCBz4buRIOG6o25oIGjGsOG7n25nIMSR4bq/biBxdXnhur90IMSR4buLbmggbXVhIHhlIGPhu6dhIG5nxrDhu51pIHRpw6p1IGTDuW5nLg0KDQoNCmBgYHtyfQ0KcHVfdHIxIDwtIHRhYmxlKGRhdGEkcHVyY2hhc2VfZGVjaXNpb24sIGRhdGEkdHJhbnNtaXNzaW9uKQ0KcHVfdHIxX3RvdGFsIDwtIGFkZG1hcmdpbnMocHVfdHIxKQ0KcHVfdHIyIDwtIHJvdW5kKHByb3AudGFibGUocHVfdHIxLCBtYXJnaW4gPSAxKSAqIDEwMCwgMikNCmthYmxlKHB1X3RyMV90b3RhbCwgY2FwdGlvbiA9ICJC4bqjbmcgMS4gVOG6p24gc+G7kSBnaeG7r2EgcXV54bq/dCDEkeG7i25oIG11YSB4ZSB2w6AgbG/huqFpIGjhu5lwIHPhu5EiKQ0Ka2FibGUocHVfdHIyLCBjYXB0aW9uID0gIkLhuqNuZyAyLiBU4bqnbiBzdeG6pXQgKCUpIGdp4buvYSBxdXnhur90IMSR4buLbmggbXVhIHhlIHbDoCBsb+G6oWkgaOG7mXAgc+G7kSIpDQoNCmBgYA0KDQoNCg0KYGBge3J9DQpnZ3Bsb3QoYXMuZGF0YS5mcmFtZShwdV90cjEpLCBhZXMoeCA9IFZhcjEsIHkgPSBGcmVxLCBmaWxsID0gVmFyMikpICsNCiAgZ2VvbV9jb2wocG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSh3aWR0aCA9IDAuOSkpICsNCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHBhc3RlMChGcmVxLCAiICgiLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3VuZChwdV90cjJbY2JpbmQoYXMuY2hhcmFjdGVyKFZhcjEpLCBhcy5jaGFyYWN0ZXIoVmFyMikpXSwgMSksICIlKSIpKSwNCiAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjkpLA0KICAgICAgICAgICAgdmp1c3QgPSAtMC4zLCBzaXplID0gMykgKw0KICBsYWJzKA0KICAgIHRpdGxlID0gIlBow6JuIGLhu5EgcXV54bq/dCDEkeG7i25oIG11YSB4ZSB0aGVvIGxv4bqhaSBo4buZcCBz4buRIiwNCiAgICB4ID0gIlF1eeG6v3QgxJHhu4tuaCBtdWEgeGUiLA0KICAgIHkgPSAiU+G7kSBsxrDhu6NuZyIsDQogICAgZmlsbCA9ICJMb+G6oWkgaOG7mXAgc+G7kSINCiAgKSArDQogIHRoZW1lX21pbmltYWwoKQ0KYGBgDQoNCkvhur90IHF14bqjIHThu6sgYuG6o25nIHThuqduIHPhu5EgY2hvIHRo4bqleSB0cm9uZyB04buVbmcgc+G7kSAyNC45NDUgdHLGsOG7nW5nIGjhu6NwIGtow7RuZyBtdWEgeGUsIGPDsyA4LjExNSB4ZSBz4butIGThu6VuZyBo4buZcCBz4buRIHThu7EgxJHhu5luZyB2w6AgMTYuODMwIHhlIHPhu60gZOG7pW5nIGjhu5lwIHPhu5EgY8ahIGtow60uIFRyb25nIGtoaSDEkcOzLCB0cm9uZyB04buVbmcgc+G7kSAxMy41ODYgdHLGsOG7nW5nIGjhu6NwIMSRw6MgbXVhIHhlLCBjw7MgNC43ODMgeGUgbMOgIGjhu5lwIHPhu5EgdOG7sSDEkeG7mW5nIHbDoCA4LjgwMyB4ZSBsw6AgaOG7mXAgc+G7kSBjxqEga2jDrS4NCg0KQuG6o25nIHThuqduIHN14bqldCB0aGVvIGjDoG5nIGNobyB0aOG6pXksIHRyb25nIG5ow7NtIGtow7RuZyBtdWEgeGUsIHThu7cgbOG7hyB4ZSBz4buRIHThu7EgxJHhu5luZyBjaGnhur9tIDMyLDUzJSwgdHJvbmcga2hpIHhlIHPhu5EgY8ahIGtow60gY2hp4bq/bSA2Nyw0NyUuIOG7niBuaMOzbSDEkcOjIG11YSB4ZSwgdOG7tyBs4buHIHhlIHPhu5EgdOG7sSDEkeG7mW5nIGzDoCAzNSwyMSUsIGPDsm4geGUgc+G7kSBjxqEga2jDrSBjaGnhur9tIDY0LDc5JS4gTmjGsCB24bqteSwgbmfGsOG7nWkgbXVhIGPDsyB4dSBoxrDhu5tuZyBjaOG7jW4geGUgaOG7mXAgc+G7kSB04buxIMSR4buZbmcgbmhp4buBdSBoxqFuIHNvIHbhu5tpIG5ow7NtIGtow7RuZyBtdWEsIHR1eSBz4buxIGtow6FjIGJp4buHdCBsw6Aga2jDtG5nIGzhu5tuLg0KDQojIyMgNC4yLjIgUGjDom4gdMOtY2ggdGjDtG5nIHF1YSBSZWxhdGl2ZSBSaXNrDQoNClRyb25nIHBo4bqnbiBuw6B5LCB0w7RpIHRp4bq/biBow6BuaCB0w61uaCB0b8OhbiBS4bunaSBybyB0xrDGoW5nIMSR4buRaSAoUmVsYXRpdmUgUmlzayDigJMgUlIpIG5o4bqxbSBwaMOibiB0w61jaCBt4bupYyDEkeG7mSDhuqNuaCBoxrDhu59uZyBj4bunYSB04burbmcgbG/huqFpIGjhu5lwIHPhu5EgxJHhur9uIHF1eeG6v3QgxJHhu4tuaCBtdWEgeGUgw7QgdMO0IGPhu6dhIGtow6FjaCBow6BuZy4gTeG7pWMgdGnDqnUgbMOgIMSRw6FuaCBnacOhIHhlbSBraMOhY2ggaMOgbmcgY8OzIHh1IGjGsOG7m25nIHF1YW4gdMOibSB2w6AgxJHGsGEgcmEgcXV54bq/dCDEkeG7i25oIG11YSAoWUVTKSBoYXkga2jDtG5nIG11YSAoTk8pIHTDuXkgdGhlbyBsb+G6oWkgaOG7mXAgc+G7kSBtw6AgeGUgxJFhbmcgc+G7rSBk4bulbmcuIMSQ4buDIMSR4bqjbSBi4bqjbyBr4bq/dCBxdeG6oyBraMOhY2ggcXVhbiB2w6AgdG/DoG4gZGnhu4duLCB2aeG7h2MgdMOtbmggUlIgc+G6vSDEkcaw4bujYyB0aOG7sWMgaGnhu4duIHRoZW8gNCBoxrDhu5tuZyB0aeG6v3AgY+G6rW4ga2jDoWMgbmhhdSBi4bqxbmcgY8OhY2ggxJHhuqNvIGNoaeG7gXUgaMOgbmcsIGPhu5l0IHRyb25nIGLhuqNuZyBjaMOpby4NCg0KLSAqKlF1YW4gdMOibSDEkeG6v24ga2jDoWNoIGjDoG5nIG11YSB4ZSB24bubaSB4ZSBz4butIGThu6VuZyBo4buZcCBz4buRIGPGoSBraMOtKioNCg0KYGBge3J9DQpsaWJyYXJ5KGVwaXRvb2xzKQ0KUlJwdV90cjEgPC0gcmlza3JhdGlvKHB1X3RyMSkNCiMjIELhuqNuZyB04bqnbiBz4buRDQprYWJsZShSUnB1X3RyMSRkYXRhLCBjYXB0aW9uID0gIkLhuqNuZyB04bqnbiBz4buRIGdp4buvYSBwdXJjaGFzZV9kZWNpc2lvbiB2w6AgdHJhbnNtaXNzaW9uIikNCiMjIELhuqNuZyBSaXNrIFJhdGlvDQprYWJsZShSUnB1X3RyMSRtZWFzdXJlLCBkaWdpdHMgPSAzLCBjYXB0aW9uID0gIkLhuqNuZyBU4bu3IHPhu5EgcuG7p2kgcm8gKFJpc2sgUmF0aW8pIikNCg0KYGBgDQoNCkThu7FhIHbDoG8ga+G6v3QgcXXhuqMgdMOtbmggUuG7p2kgcm8gdMawxqFuZyDEkeG7kWkg4bufIHRyw6puIHRhIGPDsyDEkcaw4bujYyBSUiA9IDAuOTYgxJHhu5NuZyBuZ2jEqWEgduG7m2kgdmnhu4djIHPhu5Ega2jDoWNoIGjDoG5nIMSR4buTbmcgw70gbXVhIHhlIHPhu60gZOG7pW5nIGjhu5lwIHPhu5EgY8ahIGtow60gYuG6sW5nIDAuOTYgbOG6p24gc+G7kSBraMOhY2ggaMOgbmcga2jDtG5nIMSR4buTbmcgw70gbXVhIHhlIHPhu60gZOG7pW5nIGjhu5lwIHPhu5EgY8ahIGtow60uDQoNCi0gKipRdWFuIHTDom0gxJHhur9uIGtow6FjaCBow6BuZyBraMO0bmcgbXVhIHhlIHbhu5tpIHhlIHPhu60gZOG7pW5nIGjhu5lwIHPhu5EgdOG7sSDEkeG7mW5nKioNCg0KYGBge3J9DQpSUnB1X3RyMjwtIHJpc2tyYXRpbyhwdV90cjEsIHJldiA9ICJiIikNCiMjIELhuqNuZyB04bqnbiBz4buRDQprYWJsZShSUnB1X3RyMiRkYXRhLCBjYXB0aW9uID0gIkLhuqNuZyB04bqnbiBz4buRIGdp4buvYSBwdXJjaGFzZV9kZWNpc2lvbiB2w6AgdHJhbnNtaXNzaW9uIikNCiMjIELhuqNuZyBSaXNrIFJhdGlvDQprYWJsZShSUnB1X3RyMiRtZWFzdXJlLCBkaWdpdHMgPSAzLCBjYXB0aW9uID0gIkLhuqNuZyBU4bu3IHPhu5EgcuG7p2kgcm8gKFJpc2sgUmF0aW8pIikNCmBgYA0KDQpE4buxYSB2w6BvIGvhur90IHF14bqjIHTDrW5oIFThu7cgc+G7kSBy4bunaSBybyAoUmVsYXRpdmUgUmlzaykg4bufIHRyw6puLCB0YSB0aHUgxJHGsOG7o2MgZ2nDoSB0cuG7iyBSUiA9IDAuOTI0LiDEkGnhu4F1IG7DoHkgY8OzIG5naMSpYSBsw6Agc+G7kSBraMOhY2ggaMOgbmcga2jDtG5nIMSR4buTbmcgw70gbXVhIHhlIHPhu60gZOG7pW5nIGjhu5lwIHPhu5EgdOG7qyDEkeG7mW5nIGLhurFuZyAwLjkyNCBs4bqnbiBzbyB24bubaSBz4buRIGtow6FjaCBow6BuZyDEkeG7k25nIMO9IG11YSB4ZSBjw7MgY8O5bmcgbG/huqFpIGjhu5lwIHPhu5EgdOG7sSDEkeG7mW5nLg0KDQotICoqUXVhbiB0w6JtIMSR4bq/biBraMOhY2ggaMOgbmcgbXVhIHhlIHbhu5tpIHhlIHPhu60gZOG7pW5nIGjhu5lwIHPhu5EgdOG7sSDEkeG7mW5nKioNCg0KYGBge3J9DQpSUnB1X3RyMzwtIHJpc2tyYXRpbyhwdV90cjEsIHJldiA9ICJjIikNCiMjIELhuqNuZyB04bqnbiBz4buRDQprYWJsZShSUnB1X3RyMyRkYXRhLCBjYXB0aW9uID0gIkLhuqNuZyB04bqnbiBz4buRIGdp4buvYSBwdXJjaGFzZV9kZWNpc2lvbiB2w6AgdHJhbnNtaXNzaW9uIikNCiMjIELhuqNuZyBSaXNrIFJhdGlvDQprYWJsZShSUnB1X3RyMyRtZWFzdXJlLCBkaWdpdHMgPSAzLCBjYXB0aW9uID0gIkLhuqNuZyBU4bu3IHPhu5EgcuG7p2kgcm8gKFJpc2sgUmF0aW8pIikNCmBgYA0KDQpL4bq/dCBxdeG6oyDhu58gdHLDqm4gY2hvIHRhIHRo4bqleSBnacOhIHRy4buLIFThu7cgc+G7kSBy4bunaSBybyAoUmVsYXRpdmUgUmlzaykgbMOgIFJSID0gMS4wODIuIMSQaeG7gXUgbsOgeSBjw7MgbmdoxKlhIGzDoCBz4buRIGtow6FjaCBow6BuZyDEkeG7k25nIMO9IG11YSB4ZSBz4butIGThu6VuZyBo4buZcCBz4buRIHThu6sgxJHhu5luZyBjYW8gZ+G6pXAgMS4wODIgbOG6p24gc28gduG7m2kgc+G7kSBraMOhY2ggaMOgbmcga2jDtG5nIMSR4buTbmcgw70gbXVhIHhlIGPDsyBjw7luZyBsb+G6oWkgaOG7mXAgc+G7kSB04buxIMSR4buZbmcuDQoNCi0gKipRdWFuIHTDom0gxJHhur9uIGtow6FjaCBow6BuZyBraMO0bmcgbXVhIHhlIHbhu5tpIHhlIHPhu60gZOG7pW5nIGjhu5lwIHPhu5EgY8ahIGtow60qKg0KDQpgYGB7cn0NClJScHVfdHI0PC0gcmlza3JhdGlvKHB1X3RyMSwgcmV2ID0gInIiKQ0KIyMgQuG6o25nIHThuqduIHPhu5ENCmthYmxlKFJScHVfdHI0JGRhdGEsIGNhcHRpb24gPSAiQuG6o25nIHThuqduIHPhu5EgZ2nhu69hIHB1cmNoYXNlX2RlY2lzaW9uIHbDoCB0cmFuc21pc3Npb24iKQ0KIyMgQuG6o25nIFJpc2sgUmF0aW8NCmthYmxlKFJScHVfdHI0JG1lYXN1cmUsIGRpZ2l0cyA9IDMsIGNhcHRpb24gPSAiQuG6o25nIFThu7cgc+G7kSBy4bunaSBybyAoUmlzayBSYXRpbykiKQ0KYGBgDQoNClThu7cgc+G7kSBy4bunaSBybyAoUmVsYXRpdmUgUmlzaykgdGh1IMSRxrDhu6NjIHbhu5tpIGdpw6EgdHLhu4sgUlIgPSAxLjA0MS4gxJBp4buBdSBuw6B5IGPDsyBuZ2jEqWEgbMOgIHPhu5Ega2jDoWNoIGjDoG5nIGtow7RuZyDEkeG7k25nIMO9IG11YSB4ZSBz4butIGThu6VuZyBo4buZcCBz4buRIGPGoSBraMOtIGNhbyBn4bqlcCAxLjA0MSBs4bqnbiBzbyB24bubaSBz4buRIGtow6FjaCBow6BuZyDEkeG7k25nIMO9IG11YSB4ZSBjw7MgY8O5bmcgbG/huqFpIGjhu5lwIHPhu5EgY8ahIGtow60uDQoNCg0KIyMjIDQuMi4zIFBow6JuIHTDrWNoIHRow7RuZyBxdWEgT2RkLVJhdGlvDQoNCkNow7puZyB0YSBjw7MgdGjhu4MgaGnhu4N1IHLhurFuZyBPZGQgbMOgIG3hu5l0IMSR4bqhaSBsxrDhu6NuZyB0aOG7kW5nIGvDqiDEkW8gbMaw4budbmcgeMOhYyBzdeG6pXQgY+G7p2EgbeG7mXQgc+G7sSBraeG7h24geOG6o3kgcmEgc28gduG7m2kga2jDtG5nIHjhuqN5IHJhLiBPZGQgxJHGsOG7o2MgdMOtbmggYuG6sW5nIGPDoWNoIGNoaWEgdOG7tyBs4buHIGdp4buvYSB4w6FjIHN14bqldCB44bqjeSByYSB2w6AgeMOhYyBzdeG6pXQga2jDtG5nIHjhuqN5IHJhIGPhu6dhIG3hu5l0IHPhu7Ega2nhu4duLiBOZ2/DoGkgcmEgdGEgY8OzIHRow6ptIGNo4buJIHPhu5Egb2RkIHJhdGlvIGzDoCB04bu3IGzhu4cgZ2nhu69hIG9kZHMgY+G7p2EgaGFpIG5ow7NtIGtow6FjIG5oYXUuIE7DsyBjaG8gYmnhur90IG3hu6ljIMSR4buZIHRoYXkgxJHhu5VpIGPhu6dhIG9kZCBnaeG7r2EgaGFpIG5ow7NtIHNvIHbhu5tpIG5oYXUuIA0KDQpUcm9uZyBwaOG6p24gbsOgeSB0w7RpIHPhur0gdMOtbmggdOG7tyBs4buHIE9kZCBSYXRpbyBj4bunYSBj4bq3cCBiaeG6v24gKnB1cmNoYXNlX2RlY2lzaW9uKiB2w6AgKnRyYW5zbWlzc2lvbiouDQoNCg0KYGBge3J9DQojIyBC4bqjbmcgdOG6p24gc+G7kQ0Ka2FibGUob2Rkc3JhdGlvKHB1X3RyMSxyZXYgPSAiciIpJGRhdGEsIGNhcHRpb24gPSAiQuG6o25nIHThuqduIHPhu5EgZ2nhu69hIHB1cmNoYXNlX2RlY2lzaW9uIHbDoCB0cmFuc21pc3Npb24iKQ0KIyMgQuG6o25nIFJpc2sgUmF0aW8NCmthYmxlKG9kZHNyYXRpbyhwdV90cjEscmV2ID0gInIiKSRtZWFzdXJlLCBkaWdpdHMgPSAzLCBjYXB0aW9uID0gIkLhuqNuZyBr4bq/dCBxdeG6oyBPZGQgUmF0aW8iKQ0KYGBgDQoNCkvhur90IHF14bqjIGNobyB0aOG6pXkgT2RkcyBSYXRpbyDiiYggMS4xMjcsIHThu6ljIGzDoDoNCg0KVOG7tyBz4buRIGdp4buvYSBz4buRIGzGsOG7o25nIGtow6FjaCBow6BuZyDEkeG7k25nIMO9IG11YSB2w6AgbXVhIHhlIGjhu5lwIHThu7EgxJHhu5luZyAoNDc4My84MTE1KSBjYW8gaMahbiBn4bqlcCAxLjEyNyBs4bqnbiBzbyB24bubaSB04bu3IHPhu5EgdMawxqFuZyDhu6luZyDhu58geGUgaOG7mXAgc+G7kSBjxqEga2jDrSAoODgwMy8xNjgzMCkuDQoNCk7Ds2kgY8OhY2gga2jDoWMsIHjDoWMgc3XhuqV0IMSR4buTbmcgw70gbXVhIGPhu6dhIHhlIGPGoSBraMOtIGzDoCB0aOG6pXAgaMahbiBzbyB24bubaSB4ZSB04buxIMSR4buZbmcsIGhheSB4ZSBz4butIGThu6VuZyBo4buZcCBz4buRIGPGoSBraMOtIGPDsyB4dSBoxrDhu5tuZyBrw6ltIGjhuqVwIGThuqtuIGjGoW4gdHJvbmcgcXV54bq/dCDEkeG7i25oIG11YSBj4bunYSBraMOhY2ggaMOgbmcuDQoNCiMjIyA0LjIuNCBUaOG7kW5nIGvDqiBzdXkgZGnhu4VuIA0KDQotICoqS2nhu4NtIMSR4buLbmggdMOtbmggxJHhu5ljIGzhuq1wIGNobyBj4bq3cCBiaeG6v24gcHVyY2hhc2VfZGVjaXNpb24gdsOgIHRyYW5zbWlzc2lvbioqDQoNCkdp4bqjIHRodXnhur90Og0KDQpI4oKAIDpwdXJjaGFzZV9kZWNpc2lvbiB2w6AgdHJhbnNtaXNzaW9uIMSR4buZYyBs4bqtcCB24bubaSBuaGF1Lg0KDQpI4oKBIDpwdXJjaGFzZV9kZWNpc2lvbiB2w6AgdHJhbnNtaXNzaW9uIGtow7RuZyDEkeG7mWMgbOG6rXAuIA0KDQpgYGB7cn0NCmNoaXNxLnRlc3QocHVfdHIxKQ0KYGBgDQoNClF1YSBr4bq/dCBxdeG6oyBraeG7g20gxJHhu4tuaCBjaG8gdGEgcC12YWx1ZSA9IDEuMTQyZS0wNyA8IDAuMDUgYsOhYyBi4buPIEjigoAsIMSR4buTbmcgbmdoxKlhIHbhu5tpIHZp4buHYyBwaMOibiBsb+G6oWkgaOG7mXAgc+G7kSB4ZSBjw7Mg4bqjbmggaMaw4bufbmcgxJHhur9uIHF1eeG6v3QgxJHhu4tuaCBtdWEgeGUgY+G7p2Ega2jDoWNoIGjDoG5nLiANCg0KDQotICoqS2hv4bqjbmcgxrDhu5tjIGzGsOG7o25nKioNCg0KcOKCgSA9IFAoVOG7tyBs4buHIHF1eeG6v3QgxJHhu4tuaCBtdWEgeGUg4bufIG5ow7NtIHhlIHPhu60gZOG7pW5nIGjhu5lwIHPhu5EgdOG7sSDEkeG7mW5nKQ0KDQpw4oKCID0gUChU4bu3IGzhu4cgcXV54bq/dCDEkeG7i25oIG11YSB4ZSDhu58gbmjDs20geGUgc+G7rSBk4bulbmcgaOG7mXAgc+G7kSBjxqEga2jDrSkNCg0KR2nhuqMgdGh1eeG6v3Q6DQoNCkjigoA6IHDigoEg4oiSIHDigoIgPSAwKFThu7cgbOG7hyBxdXnhur90IMSR4buLbmggbXVhIHhlIOG7nyBuaMOzbSB4ZSBz4butIGThu6VuZyBo4buZcCBz4buRIHThu7EgxJHhu5luZyB2w6AgbmjDs20geGUgc+G7rSBk4bulbmcgaOG7mXAgY8ahIGtow60gYuG6sW5nIG5oYXUpDQoNCkjigoE6IHDigoEg4oiSIHDigoIgPiAwKFThu7cgbOG7hyBxdXnhur90IMSR4buLbmggbXVhIHhlIOG7nyBuaMOzbSB4ZSBz4butIGThu6VuZyBo4buZcCBz4buRIHThu7EgxJHhu5luZyBs4bubbiBoxqFuIG5ow7NtIHhlIHPhu60gZOG7pW5nIGjhu5lwIGPGoSBraMOtKQ0KDQpgYGB7cn0NCnN1Y2Nlc3MxIDwtIHB1X3RyMVsiWUVTIiwgYygiYXV0b21hdGljIiwgIm1lY2hhbmljYWwiKV0NCnRvdGFsMSA8LSBjb2xTdW1zKHB1X3RyMSlbYygiYXV0b21hdGljIiwgIm1lY2hhbmljYWwiKV0NCiMgS2nhu4NtIMSR4buLbmggdOG7tyBs4buHOiBwMSAtIHAyID4gMA0KcHJvcC50ZXN0KHN1Y2Nlc3MxLCB0b3RhbDEsIGFsdGVybmF0aXZlID0gImdyZWF0ZXIiLCBjb3JyZWN0ID0gRkFMU0UpDQpgYGANCkvhur90IHF14bqjIGtp4buDbSDEkeG7i25oIGNobyB0aOG6pXkgcC12YWx1ZSA9IDUuMzY3ZS0wOCA8IM6xPTUlLCB04bupYyBsw6AgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqiBy4bqldCBt4bqhbmggxJHhu4MgYsOhYyBi4buPIGdp4bqjIHRodXnhur90IEjigoAuIMSQaeG7gXUgbsOgeSBjaG8gdGjhuqV5IHThu7cgbOG7hyBraMOhY2ggaMOgbmcgcXV54bq/dCDEkeG7i25oIG11YSB4ZSDhu58gbmjDs20gaOG7mXAgc+G7kSB04buxIMSR4buZbmcgY2FvIGjGoW4gxJHDoW5nIGvhu4Mgc28gduG7m2kgaOG7mXAgc+G7kSBjxqEga2jDrS4gQ+G7pSB0aOG7gywgdOG7tyBs4buHIG11YSDhu58gbmjDs20gaOG7mXAgc+G7kSB04buxIMSR4buZbmcgbMOgIDM3LjA4JSwgdHJvbmcga2hpIG5ow7NtIGPGoSBraMOtIGzDoCAzNC4zNCUuIA0KDQojIyMgNC4yLjUgTcO0IGjDrG5oIGjhu5NpIHF1eSBjaG8gZOG7ryBsaeG7h3Ugbmjhu4sgcGjDom4gDQoNCioqTcO0IGjDrG5oIGxvZ2l0KioNCg0KTmdvw6BpIHJhIGNow7puZyB0YSBjw7MgdGjhu4MgdGjhu7FjIGhp4buHbiBtw7QgaMOsbmggaOG7k2kgcXV5IGtoaSBjw7MgaMOgbSBsacOqbiBr4bq/dCBk4bqhbmcgZyjOvCk9bG9naXQozrwpPWxuKM68Lygx4oiSzrwpKSDEkeG7gyBwaMOibiB0w61jaCBt4buRaSBxdWFuIGjhu4cgZ2nhu69hIHF1eeG6v3QgxJHhu4tuaCBtdWEgeGUgdsOgIGxv4bqhaSBo4buZcCBz4buRIHhlLiBUcm9uZyDEkcOzLCBwaOG6oW0gdHLDuSAiYXV0b21hdGljIiAoaOG7mXAgc+G7kSB04buxIMSR4buZbmcpIMSRxrDhu6NjIGNo4buNbiBsw6BtIG3hu6ljIHRoYW0gY2hp4bq/dSB0cm9uZyBiaeG6v24gdHJhbnNtaXNzaW9uLiBNw7QgaMOsbmggaOG7k2kgcXV5IGxvZ2lzdGljIHPhur0gY2hvIGJp4bq/dCB4w6FjIHN14bqldCBtdWEgeGUgdGhheSDEkeG7lWkgbmjGsCB0aOG6vyBuw6BvIGtoaSBraMOhY2ggaMOgbmcgbOG7sWEgY2jhu41uIHhlIHPhu60gZOG7pW5nIGjhu5lwIHPhu5EgY8ahIGtow60gc28gduG7m2kgaOG7mXAgc+G7kSANCnThu7EgxJHhu5luZy4NCg0KDQpgYGB7cn0NCmxvZ2l0MSA8LSBnbG0oZmFjdG9yKHB1cmNoYXNlX2RlY2lzaW9uKSB+IHRyYW5zbWlzc2lvbiwgZGF0YSA9IGRhdGEsIGZhbWlseSA9IGJpbm9taWFsKGxpbmsgPSAibG9naXQiKSkNCnN1bW1hcnkobG9naXQxKQ0KYGBgDQoNClBoxrDGoW5nIHRyw6xuaCBsb2dpdCBj4bunYSBtw7QgaMOsbmggxJHGsOG7o2MgYmnhu4N1IGRp4buFbiBuaMawIHNhdToNCg0KJCQNClxsb2dcbGVmdChcZnJhY3tcbXV9ezEgLSBcbXV9XHJpZ2h0KSA9IC0wLjUyODY1IC0gMC4xMTk0MiBcY2RvdCBcdGV4dHt0cmFuc21pc3Npb259X3tcdGV4dHttZWNoYW5pY2FsfX0gDQokJA0KDQpUcm9uZyDEkcOzLCDPgCBsw6AgeMOhYyBzdeG6pXQgbeG7mXQga2jDoWNoIGjDoG5nIHPhur0gbXVhIHhlLCB2w6AgdHJhbnNtaXNzaW9uIChtZWNoYW5pY2FsKSA9IDEgbuG6v3UgeGUgY8OzIGjhu5lwIHPhu5EgY8ahIGtow60sIDAgbuG6v3UgbMOgIGjhu5lwIHPhu5EgdOG7sSDEkeG7mW5nLiBOaMawIHbhuq15LCBsb+G6oWkgaOG7mXAgc+G7kSBjw7Mg4bqjbmggaMaw4bufbmcgxJHDoW5nIGvhu4MgxJHhur9uIGjDoG5oIHZpIG11YSB4ZSBj4bunYSBraMOhY2ggaMOgbmcsIHbhu5tpIHh1IGjGsOG7m25nIMawdSB0acOqbiB4ZSBz4buRIHThu7EgxJHhu5luZyBoxqFuIHhlIHPhu5EgY8ahIGtow60uDQoNCkvhur90IHF14bqjIGjhu5NpIHF1eSBsb2dpc3RpYyBjaG8gdGjhuqV5IGJp4bq/biB0cmFuc21pc3Npb24gKGxv4bqhaSBo4buZcCBz4buRKSBjw7Mg4bqjbmggaMaw4bufbmcgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqiDEkeG6v24gcXV54bq/dCDEkeG7i25oIG11YSB4ZSAocCA9IDEuMDhlLTA3IDwgMC4wMDEpLiBUcm9uZyBtw7QgaMOsbmgsIGJp4bq/biB0cmFuc21pc3Npb24gxJHGsOG7o2MgeOG7rSBsw70gZMaw4bubaSBk4bqhbmcgYmnhur9uIMSR4buLbmggdMOtbmggduG7m2kgaGFpIG3hu6ljOiAiYXV0b21hdGljIiB2w6AgIm1lY2hhbmljYWwiLCB0cm9uZyDEkcOzICJhdXRvbWF0aWMiIMSRxrDhu6NjIFIgbeG6t2MgxJHhu4tuaCBjaOG7jW4gbMOgbSBuaMOzbSBjxqEgc+G7nyBkbyDEkeG7qW5nIHRyxrDhu5tjIHRoZW8gdGjhu6kgdOG7sSBi4bqjbmcgY2jhu68gY8OhaS4gRG8gxJHDsywgYmnhur9uIGdp4bqjIHRyYW5zbWlzc2lvbiAobWVjaGFuaWNhbCkgbmjhuq1uIGdpw6EgdHLhu4sgMSBu4bq/dSB4ZSBjw7MgaOG7mXAgc+G7kSBjxqEga2jDrSwgdsOgIDAgbuG6v3UgbMOgIGjhu5lwIHPhu5EgdOG7sSDEkeG7mW5nLiBI4buHIHPhu5EgxrDhu5tjIGzGsOG7o25nIGPhu6dhIGJp4bq/biB0cmFuc21pc3Npb24gKG1lY2hhbmljYWwpIGzDoCAtMC4xMTk0MiwgY2hvIHRo4bqleSB4ZSBz4butIGThu6VuZyBo4buZcCBz4buRIGPGoSBraMOtIGPDsyBsb2ctb2RkcyBtdWEgeGUgdGjhuqVwIGjGoW4gdHJ1bmcgYsOsbmggMC4xMTkgxJHGoW4gduG7iyBzbyB24bubaSB4ZSBz4buRIHThu7EgxJHhu5luZywgZ2nhu68gY8OhYyB54bq/dSB04buRIGtow6FjIGtow7RuZyDEkeG7lWkuIFThu7cgc+G7kSBvZGRzIHTGsMahbmcg4bupbmcgbMOgIGV4cCjiiJIwLjExOTQyKSDiiYggMC44ODc1LCBuZ2jEqWEgbMOgIGto4bqjIG7Eg25nIG11YSB4ZSBz4buRIGPGoSBraMOtIGNo4buJIGLhurFuZyBraG/huqNuZyA4OC43NSUgc28gduG7m2kgeGUgc+G7kSB04buxIMSR4buZbmcuIA0KDQoqKk3DtCBow6xuaCBwcm9iaXQqKg0KDQpUxrDGoW5nIHThu7EsIGNow7puZyB0YSBjxaluZyBjw7MgdGjhu4Mgw6FwIGThu6VuZyBtw7QgaMOsbmggaOG7k2kgcXV5IHByb2JpdCDEkeG7gyBwaMOibiB0w61jaCBt4buRaSBxdWFuIGjhu4cgZ2nhu69hIHF1eeG6v3QgxJHhu4tuaCBtdWEgeGUgdsOgIGxv4bqhaSBo4buZcCBz4buRLiBUcm9uZyBtw7QgaMOsbmggbsOgeSwgcGjhuqFtIHRyw7kgImF1dG9tYXRpYyIgKGjhu5lwIHPhu5EgdOG7sSDEkeG7mW5nKSB0aeG6v3AgdOG7pWMgxJHGsOG7o2MgY2jhu41uIGzDoG0gbeG7qWMgdGhhbSBjaGnhur91IHRyb25nIGJp4bq/biB0cmFuc21pc3Npb24uIE3DtCBow6xuaCBo4buTaSBxdXkgc+G7rSBk4bulbmcgaMOgbSBsacOqbiBr4bq/dCBjaHXhuqluIHPhur0gY2hvIGJp4bq/dCB4w6FjIHN14bqldCBtdWEgeGUgdGhheSDEkeG7lWkgbmjGsCB0aOG6vyBuw6BvIGtoaSBraMOhY2ggaMOgbmcgbOG7sWEgY2jhu41uIHhlIHPhu60gZOG7pW5nIGjhu5lwIHPhu5EgY8ahIGtow60gc28gduG7m2kgaOG7mXAgc+G7kSB04buxIMSR4buZbmcsIG5oxrBuZyDEkcaw4bujYyBiaeG7g3UgZGnhu4VuIHRow7RuZyBxdWEgYmnhur9uIMSR4buVaSB0dXnhur9uIHTDrW5oIHRyw6puIHRoYW5nIGNodeG6qW4gaMOzYS4NCg0KDQoNCmBgYHtyfQ0KcHJvYml0MSA8LSBnbG0oZmFjdG9yKHB1cmNoYXNlX2RlY2lzaW9uKSB+IHRyYW5zbWlzc2lvbiwgZmFtaWx5ID0gYmlub21pYWwobGluayA9ICJwcm9iaXQiKSwgZGF0YSA9IGRhdGEpDQpzdW1tYXJ5KHByb2JpdDEpDQpgYGANCg0KVOG7qyBr4bq/dCBxdeG6oyDGsOG7m2MgbMaw4bujbmcgbcO0IGjDrG5oIGjhu5NpIHF1eSBuaOG7iyBwaMOibiB24bubaSBow6BtIHByb2JpdCwgdGEgdGh1IMSRxrDhu6NjIHBoxrDGoW5nIHRyw6xuaDoNCg0KJCQNClxQaGleey0xfShcbXUpID0gLTAuMzI5NjUgLSAwLjA3MzQ5IFxjZG90IFx0ZXh0e3RyYW5zbWlzc2lvbn1fe1x0ZXh0e21lY2hhbmljYWx9fQ0KJCQNCkvhur90IHF14bqjIGjhu5NpIHF1eSBz4butIGThu6VuZyBtw7QgaMOsbmggUHJvYml0IGNobyB0aOG6pXkgbG/huqFpIGjhu5lwIHPhu5EgbMOgIG3hu5l0IHnhur91IHThu5EgY8OzIOG6o25oIGjGsOG7n25nIHRo4buRbmcga8OqIHLDtSBy4buHdCDEkeG6v24geMOhYyBzdeG6pXQga2jDoWNoIGjDoG5nIHF1eeG6v3QgxJHhu4tuaCBtdWEgeGUuIEPhu6UgdGjhu4M6DQoNCkjhu4cgc+G7kSBjaOG6t24gKEludGVyY2VwdCkgbMOgIOKIkjAuMzI5NjUga2hpIHhlIHPhu60gZOG7pW5nIGjhu5lwIHPhu5EgdOG7sSDEkeG7mW5nICht4bupYyB0aGFtIGNoaeG6v3UpLiDEkGnhu4F1IG7DoHkgY2hvIHRo4bqleSB4w6FjIHN14bqldCB0cnVuZyBiw6xuaCDEkeG7gyBraMOhY2ggaMOgbmcgbXVhIHhlIGjhu5lwIHPhu5EgdOG7sSDEkeG7mW5nIGzDoCBraG/huqNuZyAzNy4wJS4NCg0KSOG7hyBz4buRIMaw4bubYyBsxrDhu6NuZyBjaG8gYmnhur9uIHRyYW5zbWlzc2lvbm1lY2hhbmljYWwgbMOgIOKIkjAuMDczNDksIG1hbmcgw70gbmdoxKlhIHLhurFuZyBu4bq/dSB4ZSBz4butIGThu6VuZyBo4buZcCBz4buRIGPGoSBraMOtLCB0aMOsIMSRaeG7g20geiAoei1zY29yZSkgdHJvbmcgdGhhbmcgY2h14bqpbiBow7NhIHPhur0gZ2nhuqNtIHRow6ptIDAuMDczNDkgxJHGoW4gduG7iyBzbyB24bubaSB4ZSBo4buZcCBz4buRIHThu7EgxJHhu5luZy4gS2hpIMSRw7MsIHjDoWMgc3XhuqV0IG11YSB4ZSBnaeG6o20geHXhu5FuZyBjw7JuIGtob+G6o25nIDM0LjMlLg0KDQpU4burIGvhur90IHF14bqjIG7DoHksIGPDsyB0aOG7gyByw7p0IHJhIHLhurFuZyBraMOhY2ggaMOgbmcgY8OzIHh1IGjGsOG7m25nIMawdSB0acOqbiBs4buxYSBjaOG7jW4geGUgY8OzIGjhu5lwIHPhu5EgdOG7sSDEkeG7mW5nIGjGoW4gbMOgIGjhu5lwIHPhu5EgY8ahIGtow60uIERvIMSRw7MsIGPDoWMgZG9hbmggbmdoaeG7h3AgdHJvbmcgbMSpbmggduG7sWMgcGjDom4gcGjhu5FpIMO0IHTDtCwgxJHhurdjIGJp4buHdCBsw6AgdGjhu4sgdHLGsOG7nW5nIHhlIMSRw6MgcXVhIHPhu60gZOG7pW5nLCBuw6puIGPDom4gbmjhuq9jIHnhur91IHThu5EgaOG7mXAgc+G7kSB0cm9uZyDEkeG7i25oIGjGsOG7m25nIG5o4bqtcCBow6BuZywgeMOieSBk4buxbmcgZGFuaCBt4bulYyB4ZSB2w6AgdGhp4bq/dCBr4bq/IGPDoWMgY2jGsMahbmcgdHLDrG5oIHRp4bq/cCB0aOG7iywgbmjhurFtIHThu5FpIMawdSBow7NhIGto4bqjIG7Eg25nIHRpw6p1IHRo4bulIHbDoCDEkcOhcCDhu6luZyB04buRdCBoxqFuIG5odSBj4bqndSB0aOG7sWMgdOG6vyB04burIHBow61hIGtow6FjaCBow6BuZy4NCg0KKipNw7QgaMOsbmggY2xvZ2xvZyoqDQoNCkN14buRaSBjw7luZywgdMO0aSB0aOG7sWMgaGnhu4duIHBow6JuIHTDrWNoIGLhurFuZyBtw7QgaMOsbmggaOG7k2kgcXV5IHPhu60gZOG7pW5nIGjDoG0gbGnDqm4ga+G6v3QgY2xvZ2xvZy4gxJDDonkgbMOgIG3hu5l0IGzhu7FhIGNo4buNbiB0aGF5IHRo4bq/IGNobyBsb2dpdCB2w6AgcHJvYml0LCB0aMaw4budbmcgxJHGsOG7o2Mgc+G7rSBk4bulbmcga2hpIGto4bqjIG7Eg25nIHjhuqN5IHJhIHPhu7Ega2nhu4duIGzDoCBuaOG7jyBob+G6t2MgY8OzIHh1IGjGsOG7m25nIGLhuqV0IMSR4buRaSB44bupbmcuIFZp4buHYyDDoXAgZOG7pW5nIG3DtCBow6xuaCBuw6B5IG5o4bqxbSBraeG7g20gdHJhIHTDrW5oIOG7lW4gxJHhu4tuaCBj4bunYSBt4buRaSBxdWFuIGjhu4cgZ2nhu69hIHRy4bqhbmcgdGjDoWkga2jDoWNoIGjDoG5nIHbDoCBow6BuaCB2aSBtdWEgeGUgZMaw4bubaSBt4buZdCBnw7NjIG5ow6xuIGtow6FjLCDEkeG7k25nIHRo4budaSDEkcOhbmggZ2nDoSB4ZW0gbcO0IGjDrG5oIHBoaSDEkeG7kWkgeOG7qW5nIGPDsyBj4bqjaSB0aGnhu4duIGto4bqjIG7Eg25nIGdp4bqjaSB0aMOtY2ggaMOgbmggdmkgdGjhu7FjIHThur8gY+G7p2Ega2jDoWNoIGjDoG5nIGhheSBraMO0bmcuDQoNCmBgYHtyfQ0KY2xvZ2xvZzEgPC0gZ2xtKGZhY3RvcihwdXJjaGFzZV9kZWNpc2lvbikgfiB0cmFuc21pc3Npb24sIGZhbWlseSA9IGJpbm9taWFsKGxpbmsgPSAiY2xvZ2xvZyIpLCBkYXRhID0gZGF0YSkNCnN1bW1hcnkoY2xvZ2xvZzEpDQpgYGANCg0KVOG7qyBr4bq/dCBxdeG6oyDGsOG7m2MgbMaw4bujbmcgbcO0IGjDrG5oIGjhu5NpIHF1eSBuaOG7iyBwaMOibiB24bubaSBow6BtIGxpw6puIGvhur90IGNsb2dsb2csIHRhIHRodSDEkcaw4bujYyBwaMawxqFuZyB0csOsbmg6DQoNCiQkDQpcbG9nXGxlZnQoLVxsb2coMSAtIFxtdSlccmlnaHQpID0gLTAuNzY5MyAtIDAuMDk2NSBcY2RvdCBcdGV4dHt0cmFuc21pc3Npb259X3tcdGV4dHttZWNoYW5pY2FsfX0NCiQkDQpUcm9uZyDEkcOzLPCdnIdsw6AgeMOhYyBzdeG6pXQga2jDoWNoIGjDoG5nIHF1eeG6v3QgxJHhu4tuaCBtdWEgeGUgKHB1cmNoYXNlX2RlY2lzaW9uID0gIllFUyIpLg0KDQpCaeG6v24gdHJhbnNtaXNzaW9uIGzDoCBiaeG6v24gxJHhu4tuaCB0w61uaCBn4buTbSBoYWkgbeG7qWM6ICJhdXRvbWF0aWMiICht4bupYyB0aGFtIGNoaeG6v3UpIHbDoCAibWVjaGFuaWNhbCIuIEtoaSBraMOhY2ggaMOgbmcgY2jhu41uIHhlIHPhu60gZOG7pW5nIGjhu5lwIHPhu5EgdOG7sSDEkeG7mW5nLCBiaeG6v24gZ2nhuqMgdHJhbnNtaXNzaW9uX21lY2hhbmljYWwgYuG6sW5nIDAsIGRvIMSRw7MgcGjGsMahbmcgdHLDrG5oIGNo4buJIGPDsm4gbMOgIGjhurFuZyBz4buRIGNo4bq3biDiiJIwLjc2OTMuIEtoaSBraMOhY2ggaMOgbmcgY2jhu41uIHhlIGjhu5lwIHPhu5EgY8ahIGtow60sIHBoxrDGoW5nIHRyw6xuaCDEkcaw4bujYyDEkWnhu4F1IGNo4buJbmggYuG7n2kgaOG7hyBz4buRIOKIkjAuMDk2NS4NCg0KSOG7hyBz4buRIGNo4bq3biDiiJIwLjc2OTM6IMSR4bqhaSBkaeG7h24gY2hvIGxvZy1jbG9nbG9nIChsb2cgY+G7p2EgbG9nIG5naOG7i2NoIMSR4bqjbykgY+G7p2EgeMOhYyBzdeG6pXQgbXVhIHhlIMSR4buRaSB24bubaSBuaMOzbSBraMOhY2ggaMOgbmcgY2jhu41uIHhlIGPDsyBo4buZcCBz4buRIHThu7EgxJHhu5luZyAobeG7qWMgdGhhbSBjaGnhur91KS4NCg0KSOG7hyBz4buRIHRyYW5zbWlzc2lvbm1lY2hhbmljYWwgPSAtMC4wOTY1OiBtYW5nIGThuqV1IMOibSwgY2hvIHRo4bqleSBraMOhY2ggaMOgbmcgbOG7sWEgY2jhu41uIHhlIHPhu60gZOG7pW5nIGjhu5lwIHPhu5EgY8ahIGtow60gY8OzIHjDoWMgc3XhuqV0IG11YSB4ZSB0aOG6pXAgaMahbiBzbyB24bubaSBraMOhY2ggaMOgbmcgY2jhu41uIGjhu5lwIHPhu5EgdOG7sSDEkeG7mW5nLiBI4buHIHPhu5EgbsOgeSBjw7Mgw70gbmdoxKlhIHRo4buRbmcga8OqIHLhuqV0IGNhbyAocCA8IDAuMDAxKSwga2jhurNuZyDEkeG7i25oIHLhurFuZyBsb+G6oWkgaOG7mXAgc+G7kSDhuqNuaCBoxrDhu59uZyDEkeG6v24gaMOgbmggdmkgbXVhIHhlLg0KDQpL4bq/dCBxdeG6oyBtw7QgaMOsbmggY2xvZ2xvZyBjaG8gdGjhuqV5IHLhurFuZyBsb+G6oWkgaOG7mXAgc+G7kSBsw6AgbeG7mXQgeeG6v3UgdOG7kSBjw7Mg4bqjbmggaMaw4bufbmcgxJHDoW5nIGvhu4MgxJHhur9uIHjDoWMgc3XhuqV0IGtow6FjaCBow6BuZyBxdXnhur90IMSR4buLbmggbXVhIHhlLiBD4bulIHRo4buDLCB4w6FjIHN14bqldCBtdWEgeGUgZ2nhuqNtIHh14buRbmcga2hpIGtow6FjaCBow6BuZyBs4buxYSBjaOG7jW4gaOG7mXAgc+G7kSBjxqEga2jDrSB0aGF5IHbDrCBo4buZcCBz4buRIHThu7EgxJHhu5luZy4gxJDDonkgbMOgIGLhurFuZyBjaOG7qW5nIGNobyB0aOG6pXkgdGjhu4sgdHLGsOG7nW5nIGPDsyB4dSBoxrDhu5tuZyDGsHUgw6FpIGPDoWMgZMOybmcgeGUgc+G7rSBk4bulbmcgaOG7mXAgc+G7kSB04buxIMSR4buZbmcg4oCUIGPDsyB0aOG7gyBkbyB0w61uaCB0aeG7h24gbOG7o2ksIGThu4UgxJFp4buBdSBraGnhu4NuIHbDoCBwaMO5IGjhu6NwIGjGoW4gduG7m2kgbmh1IGPhuqd1IGPhu6dhIMSR4bqhaSDEkWEgc+G7kSBraMOhY2ggaMOgbmcgaGnhu4duIG5heS4NCg0KIyMgNC4zIFBow6JuIHTDrWNoIHTDrG5oIHRy4bqhbmcgc+G7nyBo4buvdSBj4bunYSB4ZSDhuqNuaCBoxrDhu59uZyDEkeG6v24gcXV54bq/dCDEkeG7i25oIG11YSB4ZQ0KDQojIyMgNC4zLjEgVGjhu5FuZyBrw6ogbcO0IHThuqMgY2hvIGPhurdwIGJp4bq/biBwdXJjaGFzZV9kZWNpc2lvbiB2w6Agc3RhdGUNCg0KVGnhur9wIHRoZW8sIGNow7puZyB0YSB0aeG6v24gaMOgbmggbOG6rXAgYuG6o25nIHThuqduIHPhu5EgY2jDqW8gdsOgIHTDrW5oIHThu7cgbOG7hyBwaOG6p24gdHLEg20gdGhlbyBow6BuZyBnaeG7r2EgaGFpIGJp4bq/biAqcHVyY2hhc2VfZGVjaXNpb24qIChxdXnhur90IMSR4buLbmggbXVhIHhlKSB2w6AgKnN0YXRlKiAodMOsbmggdHLhuqFuZyBz4bufIGjhu691IGhv4bq3YyBt4bulYyDEkcOtY2ggc+G7rSBk4bulbmcgY+G7p2EgeGUpLCBuaOG6sW0gcGjDom4gdMOtY2ggbeG7kWkgbGnDqm4gaOG7hyBnaeG7r2EgaMOgbmggdmkgbXVhIHhlIHbDoCB0cuG6oW5nIHRow6FpIHPhu60gZOG7pW5nIGPhu6dhIHBoxrDGoW5nIHRp4buHbi4gVmnhu4djIHBow6JuIHThu5UgY2jDqW8gZ2nhu69hIGhhaSBiaeG6v24gxJHhu4tuaCB0w61uaCBuw6B5IGNobyBwaMOpcCBxdWFuIHPDoXQgc+G7sSBraMOhYyBiaeG7h3QgdHJvbmcgdOG7tyBs4buHIG11YSBnaeG7r2EgY8OhYyBuaMOzbSB4ZSBraMOhYyBuaGF1IG5oxrAgeGUgxJHDoyBxdWEgc+G7rSBk4bulbmcsIHhlIG3hu5tpIGhv4bq3YyB4ZSBwaOG7pWMgduG7pSBraOG6qW4gY+G6pXAuIFThu6sgxJHDsywgY8OzIHRo4buDIMSRxrBhIHJhIG5o4buvbmcgbmjhuq1uIMSR4buLbmggc8ahIGLhu5kgduG7gSB2aeG7h2MgbGnhu4d1IHTDrG5oIHRy4bqhbmcgc+G7rSBk4bulbmcgY+G7p2EgeGUgY8OzIHRo4buDIOG6o25oIGjGsOG7n25nIMSR4bq/biBxdXnhur90IMSR4buLbmggbXVhIHhlIGPhu6dhIG5nxrDhu51pIHRpw6p1IGTDuW5nIGhheSBraMO0bmcuDQoNCmBgYHtyfQ0KcHVfc3QxIDwtIHRhYmxlKGRhdGEkcHVyY2hhc2VfZGVjaXNpb24sIGRhdGEkc3RhdGUpDQpwdV9zdDFfdG90YWwgPC0gYWRkbWFyZ2lucyhwdV9zdDEpDQpwdV9zdDIgPC0gcm91bmQocHJvcC50YWJsZShwdV9zdDEsIG1hcmdpbiA9IDEpICogMTAwLCAyKQ0Ka2FibGUocHVfc3QxX3RvdGFsLCBjYXB0aW9uID0gIkLhuqNuZyAxLiBU4bqnbiBz4buRIGdp4buvYSBxdXnhur90IMSR4buLbmggbXVhIHhlIHbDoCBUw6xuaCB0cuG6oW5nIHPhu58gaOG7r3UgeGUiKQ0Ka2FibGUocHVfc3QyLCBjYXB0aW9uID0gIkLhuqNuZyAyLiBU4bqnbiBzdeG6pXQgKCUpIGdp4buvYSBxdXnhur90IMSR4buLbmggbXVhIHhlIHbDoCBUw6xuaCB0cuG6oW5nIHPhu58gaOG7r3UgeGUiKQ0KYGBgDQoNCmBgYHtyfQ0KZ2dwbG90KGFzLmRhdGEuZnJhbWUocHVfc3QxKSwgYWVzKHggPSBWYXIxLCB5ID0gRnJlcSwgZmlsbCA9IFZhcjIpKSArDQogIGdlb21fY29sKHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjkpKSArDQogIGdlb21fdGV4dChhZXMobGFiZWwgPSBwYXN0ZTAoRnJlcSwgIiAoIiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91bmQocHVfc3QyW2NiaW5kKGFzLmNoYXJhY3RlcihWYXIxKSwgYXMuY2hhcmFjdGVyKFZhcjIpKV0sIDIpLCAiJSkiKSksDQogICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC45KSwNCiAgICAgICAgICAgIHZqdXN0ID0gLTAuMywgc2l6ZSA9IDMpICsNCiAgbGFicygNCiAgICB0aXRsZSA9ICJQaMOibiBi4buRIHF1eeG6v3QgxJHhu4tuaCBtdWEgeGUgdGhlbyB0w6xuaCB0cuG6oW5nIHPhu58gaOG7r3UgeGUiLA0KICAgIHggPSAiUXV54bq/dCDEkeG7i25oIG11YSB4ZSIsDQogICAgeSA9ICJT4buRIGzGsOG7o25nIiwNCiAgICBmaWxsID0gIlTDrG5oIHRy4bqhbmcgc+G7nyBo4buvdSB4ZSINCiAgKSArDQogIHRoZW1lX21pbmltYWwoKQ0KYGBgDQoNCkvhur90IHF14bqjIGLhuqNuZyB04bqnbiBz4buRIGNow6lvIGdp4buvYSBoYWkgYmnhur9uICpwdXJjaGFzZV9kZWNpc2lvbiogdsOgICpzdGF0ZSogY2hvIHRo4bqleSBz4buxIGtow6FjIGJp4buHdCByw7UgcuG7h3QgdHJvbmcgaMOgbmggdmkgbXVhIHhlIHRoZW8gdOG7q25nIG5ow7NtIHTDrG5oIHRy4bqhbmcgeGUuIEPhu6UgdGjhu4MsIHRyb25nIHThu5VuZyBz4buRIDI0Ljk0NSB0csaw4budbmcgaOG7o3Aga2jDtG5nIG11YSB4ZSwgY8OzIHThu5tpIDI0LjYzMiB4ZSB0aHXhu5ljIG5ow7NtIMSRw6MgcXVhIHPhu60gZOG7pW5nIChvd25lZCksIGNoaeG6v20gOTgsNzUlLCB0cm9uZyBraGkgeGUgbeG7m2kgKG5ldykgdsOgIHhlIGto4bqpbiBj4bqlcCAoZW1lcmdlbmN5KSBjaOG7iSBjaGnhur9tIGzhuqduIGzGsOG7o3QgMCwyMCUgdsOgIDEsMDYlLiBOZ8aw4bujYyBs4bqhaSwgdHJvbmcgMTMuNTg2IHRyxrDhu51uZyBo4bujcCDEkcOjIG11YSB4ZSwgc+G7kSBsxrDhu6NuZyB4ZSB0aHXhu5ljIG5ow7NtIG93bmVkIGzDoCAxMy4wOTEgeGUsIHTGsMahbmcgxJHGsMahbmcgOTYsMzYlLCB0cm9uZyBraGkgeGUgbeG7m2kgY2hp4bq/bSAyLDg2JSAoMzg5IHhlKSB2w6AgeGUga2jhuqluIGPhuqVwIGNoaeG6v20gMCw3OCUgKDEwNiB4ZSkuDQoNClR1eSBuaMOzbSBvd25lZCBjaGnhur9tIMawdSB0aOG6vyB0dXnhu4d0IMSR4buRaSB0cm9uZyB0b8OgbiBi4buZIGThu68gbGnhu4d1ICh24bubaSB04buVbmcgc+G7kSAzNy43MjMgeGUsIGNoaeG6v20gaMahbiA5NyUgdOG7lW5nIG3huqt1KSwgdOG7tyBs4buHIHhlIG3hu5tpIHRyb25nIG5ow7NtIG11YSBs4bqhaSBjYW8gaMahbiDEkcOhbmcga+G7gyBzbyB24bubaSBuaMOzbSBraMO0bmcgbXVhICgyLDg2JSBzbyB24bubaSAwLDIwJSkuIMSQaeG7gXUgbsOgeSBjaG8gdGjhuqV5IHLhurFuZyBuZ8aw4budaSB0acOqdSBkw7luZyBjw7MgeHUgaMaw4bubbmcgbOG7sWEgY2jhu41uIHhlIG3hu5tpIG5oaeG7gXUgaMahbiBraGkgcXV54bq/dCDEkeG7i25oIG11YSwgZMO5IHhlIG3hu5tpIGNo4buJIGNoaeG6v20gbeG7mXQgcGjhuqduIHLhuqV0IG5o4buPIHRyb25nIGPGoSBj4bqldSBt4bqrdS4gU+G7sSBjaMOqbmggbOG7h2NoIG7DoHkgZ+G7o2kgw70gcuG6sW5nIHTDrG5oIHRy4bqhbmcgc+G7rSBk4bulbmcgY+G7p2EgeGUgY8OzIHRo4buDIGzDoCB54bq/dSB04buRIOG6o25oIGjGsOG7n25nIMSR4bq/biBow6BuaCB2aSBtdWEgeGUsIHbDoCBj4bqnbiDEkcaw4bujYyBraeG7g20gxJHhu4tuaCB0aOG7kW5nIGvDqiBzw6J1IGjGoW4gxJHhu4MgxJHGsGEgcmEga+G6v3QgbHXhuq1uIGNo4bqvYyBjaOG6r24uDQoNCiMjIyA0LjMuMiBUaOG7kW5nIGvDqiBzdXkgZGnhu4VuIA0KDQotICoqS2nhu4NtIMSR4buLbmggdMOtbmggxJHhu5ljIGzhuq1wIGNobyBj4bq3cCBiaeG6v24gcHVyY2hhc2VfZGVjaXNpb24gdsOgIHN0YXRlKioNCg0KR2nhuqMgdGh1eeG6v3Q6DQoNCkjigoAgOnB1cmNoYXNlX2RlY2lzaW9uIHbDoCBzdGF0ZSDEkeG7mWMgbOG6rXAgduG7m2kgbmhhdS4NCg0KSOKCgSA6cHVyY2hhc2VfZGVjaXNpb24gdsOgIHN0YXRlIGtow7RuZyDEkeG7mWMgbOG6rXAgduG7m2kgbmhhdS4NCg0KYGBge3J9DQpjaGlzcS50ZXN0KHB1X3N0MSkNCmBgYA0KDQpRdWEga+G6v3QgcXXhuqMga2nhu4NtIMSR4buLbmggY2hvIHRhIHAtdmFsdWUgPCAyLjJlLTE2IDwgMC4wNSBiw6FjIGLhu48gSOKCgCwgxJHhu5NuZyBuZ2jEqWEgduG7m2kgdmnhu4djIHTDrG5oIHRy4bqhbmcgc+G7nyBo4buvdSBj4bunYSB4ZSBjw7Mg4bqjbmggaMaw4bufbmcgxJHhur9uIHF1eeG6v3QgxJHhu4tuaCBtdWEgeGUgY+G7p2Ega2jDoWNoIGjDoG5nLiANCg0KLSAqKktob+G6o25nIMaw4bubYyBsxrDhu6NuZyoqDQoNCnDigoEgPSBQKFThu7cgbOG7hyBxdXnhur90IMSR4buLbmggbXVhIHhlIOG7nyBuaMOzbSB4ZSDEkcOjIHF1YSBz4butIGThu6VuZykNCg0KcOKCgiA9IFAoVOG7tyBs4buHIHF1eeG6v3QgxJHhu4tuaCBtdWEgeGUg4bufIG5ow7NtIHhlIG3hu5tpKQ0KDQpHaeG6oyB0aHV54bq/dDoNCg0KSOKCgDogcOKCgSDiiJIgcOKCgiA9IDAoVOG7tyBs4buHIHF1eeG6v3QgxJHhu4tuaCBtdWEgeGUg4bufIG5ow7NtIHhlIMSRw6Mgc+G7rSBk4bulbmcgdsOgIG5ow7NtIHhlIG3hu5tpIGLhurFuZyBuaGF1KQ0KDQpI4oKBOiBw4oKBIOKIkiBw4oKCIDwgMChU4bu3IGzhu4cgcXV54bq/dCDEkeG7i25oIG11YSB4ZSDhu58gbmjDs20geGUgxJHDoyBz4butIGThu6VuZyB0aOG6pXAgaMahbiBuaMOzbSB4ZSBt4bubaSkNCg0KYGBge3J9DQpzdWNjZXNzMiA8LSBwdV9zdDFbIllFUyIsIGMoIm93bmVkIiwgIm5ldyIpXQ0KdG90YWwyIDwtIGNvbFN1bXMocHVfc3QxKVtjKCJvd25lZCIsICJuZXciKV0NCiMgS2nhu4NtIMSR4buLbmggdOG7tyBs4buHOiBwMSAtIHAyIDwgMA0KcHJvcC50ZXN0KHN1Y2Nlc3MyLCB0b3RhbDIsIGFsdGVybmF0aXZlID0gImxlc3MiLCBjb3JyZWN0ID0gRkFMU0UpDQpgYGANCg0KS+G6v3QgcXXhuqMga2nhu4NtIMSR4buLbmggY2hvIHRo4bqleSBwLXZhbHVlIDwgMi4yZS0xNiA8IM6xPTUlLCB04bupYyBsw6AgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqiBy4bqldCBt4bqhbmggxJHhu4MgYsOhYyBi4buPIGdp4bqjIHRodXnhur90IEjigoAuIMSQaeG7gXUgbsOgeSBjaG8gdGjhuqV5IHThu7cgbOG7hyBraMOhY2ggaMOgbmcgcXV54bq/dCDEkeG7i25oIG11YSB4ZSDhu58gbmjDs20geGUgxJHDoyBz4butIGThu6VuZyB0aOG6pXAgaMahbiDEkcOhbmcga+G7gyBzbyB24bubaSBuaMOzbSB4ZSBt4bubaS4gQ+G7pSB0aOG7gywgdOG7tyBs4buHIG11YSDhu58gbmjDs20geGUgxJHDoyBz4butIGThu6VuZyBsw6AgMzQuNyUsIHRyb25nIGtoaSBuaMOzbSB4ZSBt4bubaSBsw6AgODguODElLg0KDQojIyMgNC4zLjMgTcO0IGjDrG5oIGjhu5NpIHF1eSBjaG8gZOG7ryBsaeG7h3Ugbmjhu4sgcGjDom4NCg0KKipNw7QgaMOsbmggbG9naXQqKg0KDQpUcm9uZyBwaOG6p24gbsOgeSwgdMO0aSBz4butIGThu6VuZyBtw7QgaMOsbmggaOG7k2kgcXV5IGxvZ2lzdGljIG5o4buLIHBow6JuIHbhu5tpIGjDoG0gbGnDqm4ga+G6v3QgbG9naXQgxJHhu4MgcGjDom4gdMOtY2ggbeG7kWkgcXVhbiBo4buHIGdp4buvYSBxdXnhur90IMSR4buLbmggbXVhIHhlICpwdXJjaGFzZV9kZWNpc2lvbiogdsOgIHRy4bqhbmcgdGjDoWkga2jDoWNoIGjDoG5nICpzdGF0ZSouIE3DtCBow6xuaCBuaOG6sW0gxJHDoW5oIGdpw6EgeGVtIHjDoWMgc3XhuqV0IGtow6FjaCBow6BuZyDEkcawYSByYSBxdXnhur90IMSR4buLbmggbXVhIHhlIHRoYXkgxJHhu5VpIG5oxrAgdGjhur8gbsOgbyBraGkgaOG7jSB0aHXhu5ljIHbDoG8gY8OhYyB0cuG6oW5nIHRow6FpIGtow6FjIG5oYXUgdHJvbmcgYmnhur9uIHN0YXRlLiBL4bq/dCBxdeG6oyBz4bq9IGdpw7pwIHjDoWMgxJHhu4tuaCBuaMOzbSBraMOhY2ggaMOgbmcgbsOgbyBjw7MgeHUgaMaw4bubbmcgbXVhIHhlIGNhbyBoxqFuLCB04burIMSRw7MgaOG7lyB0cuG7oyBjaGnhur9uIGzGsOG7o2MgdGnhur9wIHRo4buLIHbDoCBwaMOibiBsb+G6oWkgxJHhu5FpIHTGsOG7o25nIHRp4buBbSBuxINuZy4NCg0KYGBge3J9DQpsb2dpdDIgPC0gZ2xtKGZhY3RvcihwdXJjaGFzZV9kZWNpc2lvbikgfiBzdGF0ZSwgZGF0YSA9IGRhdGEsIGZhbWlseSA9IGJpbm9taWFsKGxpbmsgPSAibG9naXQiKSkNCnN1bW1hcnkobG9naXQyKQ0KYGBgDQoNCkThu7FhIHRyw6puIGvhur90IHF14bqjIGjhu5NpIHF1eSBsb2dpc3RpYywgdGEgdGh1IMSRxrDhu6NjIHBoxrDGoW5nIHRyw6xuaCDGsOG7m2MgbMaw4bujbmcgbmjGsCBzYXU6DQoNCiQkDQpcbG9nXGxlZnQoXGZyYWN7XG11fXsxIC0gXG11fVxyaWdodCkgPSAtMC45MTI1ICsgMi45ODQzIFxjZG90IFx0ZXh0e3N0YXRlfV97XHRleHR7bmV3fX0gKyAwLjI4MDQgXGNkb3QgXHRleHR7c3RhdGV9X3tcdGV4dHtvd25lZH19DQokJA0KDQpUcm9uZyDEkcOzLCDOvCBsw6AgeMOhYyBzdeG6pXQgxJHhu4Mga2jDoWNoIGjDoG5nIMSRxrBhIHJhIHF1eeG6v3QgxJHhu4tuaCBtdWEgeGUgKHB1cmNoYXNlX2RlY2lzaW9uID0gIllFUyIpLiBQaMawxqFuZyB0csOsbmggdHLDqm4gbcO0IHThuqMgbeG7kWkgcXVhbiBo4buHIGdp4buvYSB0cuG6oW5nIHRow6FpIGPhu6dhIGtow6FjaCBow6BuZyB2w6AgbG9naXQgKGxvZy1vZGRzKSBj4bunYSB4w6FjIHN14bqldCBo4buNIHF1eeG6v3QgxJHhu4tuaCBtdWEgeGUuIEJp4bq/biAqc3RhdGUqIGzDoCBt4buZdCBiaeG6v24gxJHhu4tuaCB0w61uaCBn4buTbSBiYSBt4bupYyBwaMOibiBsb+G6oWk6ICJlbWVyZ2VuY3kiICht4bupYyB0aGFtIGNoaeG6v3UpLCAibmV3IiB2w6AgIm93bmVkIi4gS2hpIGtow6FjaCBow6BuZyB0aHXhu5ljIG5ow7NtICJlbWVyZ2VuY3kiLCBj4bqjIGhhaSBiaeG6v24gZ2nhuqMgc3RhdGVfbmV3IHbDoCBzdGF0ZV9vd25lZCDEkeG7gXUgYuG6sW5nIDAsIGRvIMSRw7MgbG9naXQgY2jhu4kgY8OybiBsw6AgaOG6sW5nIHPhu5EgY2jhurduOiDiiJIwLjkxMjUuIEtoaSBraMOhY2ggaMOgbmcgdGh14buZYyBuaMOzbSAibmV3IiBob+G6t2MgIm93bmVkIiwgY8OhYyBiaeG6v24gZ2nhuqMgdMawxqFuZyDhu6luZyBz4bq9IGLhurFuZyAxIHbDoCBsw6BtIHRoYXkgxJHhu5VpIGxvZ2l0IGPhu6dhIHjDoWMgc3XhuqV0IG11YS4NCg0KSOG7hyBz4buRIGNo4bq3biDiiJIwLjkxMjU6IMSR4bqhaSBkaeG7h24gY2hvIGxvZy1vZGRzIG11YSB4ZSBj4bunYSBuaMOzbSBraMOhY2ggaMOgbmcgImVtZXJnZW5jeSIg4oCTIG5ow7NtIHRoYW0gY2hp4bq/dS4gxJDDonkgbMOgIHjDoWMgc3XhuqV0IGPGoSBi4bqjbiDEkeG7gyBzbyBzw6FuaCB24bubaSBjw6FjIG5ow7NtIGPDsm4gbOG6oWkuDQoNCkjhu4cgc+G7kSBzdGF0ZV9uZXcgPSAyLjk4NDM6IGNobyB0aOG6pXkgbG9nLW9kZHMgbXVhIHhlIGPhu6dhIG5ow7NtIGtow6FjaCBow6BuZyAibmV3IiBjYW8gaMahbiBuaMOzbSAiZW1lcmdlbmN5IiBsw6AgMi45ODQzIMSRxqFuIHbhu4suIMSQaeG7gXUgbsOgeSB0aOG7gyBoaeG7h24geHUgaMaw4bubbmcgbXVhIHhlIOG7nyBuaMOzbSBraMOhY2ggaMOgbmcgbeG7m2kgbMOgIHLhuqV0IG3huqFuaCwgdsOgIGjhu4cgc+G7kSBuw6B5IGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ogY2FvIChwIDwgMC4wMDEpLg0KDQpI4buHIHPhu5Egc3RhdGVfb3duZWQgPSAwLjI4MDQ6IGNobyB0aOG6pXkgbG9nLW9kZHMgbXVhIHhlIGPhu6dhIG5ow7NtIGtow6FjaCBow6BuZyAib3duZWQiIGNhbyBoxqFuICJlbWVyZ2VuY3kiIGzDoCAwLjI4MDQgxJHGoW4gduG7iy4gTeG7qWMgdMSDbmcgbsOgeSBjw7Mgw70gbmdoxKlhIHRo4buRbmcga8OqIOG7nyBt4bupYyA1JSAocCA9IDAuMDE1MiksIG5oxrBuZyB54bq/dSBoxqFuIG5oaeG7gXUgc28gduG7m2kgbmjDs20gIm5ldyIuDQoNCkvhur90IHF14bqjIG3DtCBow6xuaCBjaG8gdGjhuqV5IGJp4bq/biBzdGF0ZSBjw7Mg4bqjbmggaMaw4bufbmcgxJHDoW5nIGvhu4MgxJHhur9uIHjDoWMgc3XhuqV0IG11YSB4ZSBj4bunYSBraMOhY2ggaMOgbmcuIE5ow7NtIGtow6FjaCBow6BuZyAibmV3IiBjw7MgeMOhYyBzdeG6pXQgbXVhIHhlIGNhbyB2xrDhu6N0IHRy4buZaSBzbyB24bubaSBuaMOzbSAiZW1lcmdlbmN5IiwgY2hvIHRo4bqleSDEkcOieSBsw6AgcGjDom4ga2jDumMga2jDoWNoIGjDoG5nIHRp4buBbSBuxINuZyB2w6AgY8OzIG5odSBj4bqndSBtdWEgc+G6r20gdGjhu7FjIHPhu7EuIE5ow7NtICJvd25lZCIgY8WpbmcgY8OzIHh1IGjGsOG7m25nIG11YSBjYW8gaMahbiBuaMOzbSAiZW1lcmdlbmN5IiwgbmjGsG5nIHPhu7Ega2jDoWMgYmnhu4d0IGtow7RuZyBs4bubbi4NCg0KVOG7lW5nIHRo4buDLCBjw6FjIGjhu4cgc+G7kSDEkeG7gXUgbWFuZyBk4bqldSBkxrDGoW5nIHbDoCBjw7Mgw70gbmdoxKlhIHRo4buRbmcga8OqLCBraOG6s25nIMSR4buLbmggcuG6sW5nIHRy4bqhbmcgdGjDoWkga2jDoWNoIGjDoG5nIGzDoCBt4buZdCB54bq/dSB04buRIGdp4bqjaSB0aMOtY2ggaOG7o3AgbMO9IGNobyBow6BuaCB2aSBtdWEgeGUuIE3DtCBow6xuaCBjw7MgZ2nDoSB0cuG7iyBk4buxIMSRb8OhbiB2w6AgY8OzIHRo4buDIMSRxrDhu6NjIHPhu60gZOG7pW5nIHRyb25nIGPDoWMgY2hp4bq/biBsxrDhu6NjIHBow6JuIGtow7pjIGtow6FjaCBow6BuZy4NCg0KKipNw7QgaMOsbmggUHJvYml0KioNCg0KVGnhur9wIHRoZW8sIHTDtGkgw6FwIGThu6VuZyBtw7QgaMOsbmggaOG7k2kgcXV5IHByb2JpdCDEkeG7gyBwaMOibiB0w61jaCBjw7luZyBt4buRaSBxdWFuIGjhu4cgZ2nhu69hIHF1eeG6v3QgxJHhu4tuaCBtdWEgeGUgdsOgIHRy4bqhbmcgdGjDoWkga2jDoWNoIGjDoG5nLiBNw7QgaMOsbmggbsOgeSBz4butIGThu6VuZyBow6BtIGxpw6puIGvhur90IGNodeG6qW4gaMOzYSBuaOG6sW0ga2nhu4NtIHRyYSB4ZW0ga+G6v3QgcXXhuqMgcGjDom4gdMOtY2ggY8OzIOG7lW4gxJHhu4tuaCBraGkgdGhheSDEkeG7lWkgaMOgbSBsacOqbiBr4bq/dCBoYXkga2jDtG5nLiBWaeG7h2Mgc+G7rSBk4bulbmcgcHJvYml0IGdpw7pwIGtp4buDbSB0cmEgdMOtbmggbmjhuqV0IHF1w6FuIHRyb25nIGjGsOG7m25nIHbDoCDDvSBuZ2jEqWEgY+G7p2EgY8OhYyBo4buHIHPhu5EsIHThu6sgxJHDsyDEkeG6o20gYuG6o28gcuG6sW5nIGvhur90IGx14bqtbiDEkcawYSByYSBraMO0bmcgcGjhu6UgdGh14buZYyBkdXkgbmjhuqV0IHbDoG8gbOG7sWEgY2jhu41uIGvhu7kgdGh14bqtdCBiYW4gxJHhuqd1Lg0KDQpgYGB7cn0NCnByb2JpdDIgPC0gZ2xtKGZhY3RvcihwdXJjaGFzZV9kZWNpc2lvbikgfiBzdGF0ZSwgZmFtaWx5ID0gYmlub21pYWwobGluayA9ICJwcm9iaXQiKSwgZGF0YSA9IGRhdGEpDQpzdW1tYXJ5KHByb2JpdDIpDQpgYGANCg0KVOG7qyBr4bq/dCBxdeG6oyBtw7QgaMOsbmggaOG7k2kgcXV5IG5o4buLIHBow6JuIHPhu60gZOG7pW5nIGjDoG0gbGnDqm4ga+G6v3QgcHJvYml0LCB0YSBjw7MgcGjGsMahbmcgdHLDrG5oOg0KDQokJA0KXFBoaV57LTF9KFxtdSkgPSAtMC41NjM3ICsgMS43ODAzIFxjZG90IFx0ZXh0e3N0YXRlfV97XHRleHR7bmV3fX0gKyAwLjE3MDMgXGNkb3QgXHRleHR7c3RhdGV9X3tcdGV4dHtvd25lZH19DQokJA0KDQpUcm9uZyDEkcOzLCDwnZyHbMOgIHjDoWMgc3XhuqV0IGtow6FjaCBow6BuZyBxdXnhur90IMSR4buLbmggbXVhIHhlLCB04bupYyBsw6AgUChwdXJjaGFzZV9kZWNpc2lvbj0iWUVTIikuDQoNCkJp4bq/biAqc3RhdGUqIGfhu5NtIGJhIG3hu6ljOiAiZW1lcmdlbmN5IiAobeG7qWMgdGhhbSBjaGnhur91KSwgIm5ldyIgdsOgICJvd25lZCIuIE5oxrAgduG6rXk6S2hpIGtow6FjaCBow6BuZyB0aHXhu5ljIG5ow7NtICJlbWVyZ2VuY3kiLCBj4bqjIGhhaSBiaeG6v24gZ2nhuqMgYuG6sW5nIDAsIHBoxrDGoW5nIHRyw6xuaCByw7p0IGfhu41uIGPDsm4g4oiSMC41NjM3LiBLaGkga2jDoWNoIGjDoG5nIHRodeG7mWMgbmjDs20gIm5ldyIsIHBoxrDGoW5nIHRyw6xuaCB0xINuZyB0aMOqbSAxLjc4MDMgxJHGoW4gduG7iyBzbyB24bubaSBuaMOzbSB0aGFtIGNoaeG6v3UuIEtoaSBraMOhY2ggaMOgbmcgdGh14buZYyBuaMOzbSAib3duZWQiLCBwaMawxqFuZyB0csOsbmggdMSDbmcgdGjDqm0gMC4xNzAzIMSRxqFuIHbhu4sgc28gduG7m2kgbmjDs20gdGhhbSBjaGnhur91Lg0KDQpI4buHIHPhu5EgY2jhurduIOKIkjAuNTYzNzogYmnhu4N1IGRp4buFbiDEkWnhu4NtIHogKHotc2NvcmUpIHTGsMahbmcg4bupbmcgduG7m2kgeMOhYyBzdeG6pXQgbXVhIHhlIGPhu6dhIG5ow7NtIGtow6FjaCBow6BuZyAiZW1lcmdlbmN5Ii4gxJDDonkgbMOgIG3hu6ljIGPGoSBz4bufIMSR4buDIHNvIHPDoW5oIHbhu5tpIGPDoWMgbmjDs20gY8OybiBs4bqhaS4NCg0KSOG7hyBz4buRIHN0YXRlX25ldyA9IDEuNzgwMzogY8OzIGdpw6EgdHLhu4sgZMawxqFuZyB2w6AgcuG6pXQgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqiAocCA8IDAuMDAxKSwgY2hvIHRo4bqleSBraMOhY2ggaMOgbmcgdGh14buZYyBuaMOzbSAibmV3IiBjw7MgeMOhYyBzdeG6pXQgbXVhIHhlIGNhbyBoxqFuIMSRw6FuZyBr4buDIHNvIHbhu5tpIG5ow7NtICJlbWVyZ2VuY3kiLg0KDQpI4buHIHPhu5Egc3RhdGVfb3duZWQgPSAwLjE3MDM6IGPFqW5nIG1hbmcgZOG6pXUgZMawxqFuZyB2w6AgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqiAocCA9IDAuMDE0MSksIGNobyB0aOG6pXkgeMOhYyBzdeG6pXQgbXVhIHhlIGPhu6dhIG5ow7NtICJvd25lZCIgY2FvIGjGoW4gbmjDs20gImVtZXJnZW5jeSIsIG5oxrBuZyBt4bupYyBjaMOqbmggbOG7h2NoIG5o4buPIGjGoW4gxJHDoW5nIGvhu4Mgc28gduG7m2kgbmjDs20gIm5ldyIuDQoNCkvhur90IHF14bqjIG3DtCBow6xuaCBwcm9iaXQga2jhurNuZyDEkeG7i25oIHLhurFuZyB0cuG6oW5nIHRow6FpIGPhu6dhIGtow6FjaCBow6BuZyBsw6AgeeG6v3UgdOG7kSBjw7Mg4bqjbmggaMaw4bufbmcgxJHhur9uIHjDoWMgc3XhuqV0IHJhIHF1eeG6v3QgxJHhu4tuaCBtdWEgeGUuIEPhu6UgdGjhu4M6IE5ow7NtICJuZXciIGzDoCBuaMOzbSBjw7Mga2jhuqMgbsSDbmcgbXVhIHhlIGNhbyBuaOG6pXQsIHRo4buDIGhp4buHbiBxdWEgaOG7hyBz4buRIHLhuqV0IGzhu5tuIHbDoCBjw7Mgw70gbmdoxKlhIGNhby4gTmjDs20gIm93bmVkIiBjw7Mga2jhuqMgbsSDbmcgbXVhIHhlIGNhbyBoxqFuIG5ow7NtICJlbWVyZ2VuY3kiIG5oxrBuZyBt4bupYyB0xINuZyBraMO0bmcgbeG6oW5oLiBOaMOzbSAiZW1lcmdlbmN5IiBsw6AgbmjDs20gY8OzIHjDoWMgc3XhuqV0IG11YSB4ZSB0aOG6pXAgbmjhuqV0IHbDoCDEkcaw4bujYyBkw7luZyBsw6BtIGNodeG6qW4gxJHhu4Mgc28gc8OhbmguIFZp4buHYyBz4butIGThu6VuZyBtw7QgaMOsbmggcHJvYml0IGNobyBwaMOpcCDEkcOhbmggZ2nDoSB4w6FjIHN14bqldCB44bqjeSByYSBow6BuaCB2aSBtdWEgeGUgdGjDtG5nIHF1YSBwaMOibiBwaOG7kWkgY2h14bqpbiwgcGjDuSBo4bujcCB0cm9uZyB0csaw4budbmcgaOG7o3AgYmnhur9uIHBo4bulIHRodeG7mWMgbMOgIG5o4buLIHBow6JuIHbDoCBtw7QgaMOsbmggaMOzYSB0aGVvIHjDoWMgc3XhuqV0IHTDrWNoIGzFqXkuDQoNCioqTcO0IGjDrG5oIGNsb2dsb2cqKg0KDQpUcm9uZyBwaOG6p24gbsOgeSwgdMO0aSB0aOG7sWMgaGnhu4duIHBow6JuIHTDrWNoIG3hu5FpIHF1YW4gaOG7hyBnaeG7r2EgcXV54bq/dCDEkeG7i25oIG11YSB4ZSBj4bunYSBraMOhY2ggaMOgbmcgKnB1cmNoYXNlX2RlY2lzaW9uKiB2w6AgdHLhuqFuZyB0aMOhaSBraMOhY2ggaMOgbmcgKnN0YXRlKiBi4bqxbmcgbcO0IGjDrG5oIGjhu5NpIHF1eSBuaOG7iyBwaMOibiBz4butIGThu6VuZyBow6BtIGxpw6puIGvhur90IGNsb2dsb2cgKGNvbXBsZW1lbnRhcnkgbG9nLWxvZykuIE3DtCBow6xuaCBuw6B5IMSRxrDhu6NjIMOhcCBk4bulbmcgbmjhurFtIGtp4buDbSB0cmEgeGVtIHjDoWMgc3XhuqV0IGtow6FjaCBow6BuZyBxdXnhur90IMSR4buLbmggbXVhIHhlIHRoYXkgxJHhu5VpIG5oxrAgdGjhur8gbsOgbyBraGkgaOG7jSB0aHXhu5ljIGPDoWMgdHLhuqFuZyB0aMOhaSBraMOhYyBuaGF1LCB0cm9uZyBi4buRaSBj4bqjbmggeMOhYyBzdeG6pXQgeOG6o3kgcmEgc+G7sSBraeG7h24gY8OzIHRo4buDIHBow6JuIGLhu5EgYuG6pXQgxJHhu5FpIHjhu6luZy4NCg0KYGBge3J9DQpjbG9nbG9nMiA8LSBnbG0oZmFjdG9yKHB1cmNoYXNlX2RlY2lzaW9uKSB+IHN0YXRlLCBmYW1pbHkgPSBiaW5vbWlhbChsaW5rID0gImNsb2dsb2ciKSwgZGF0YSA9IGRhdGEpDQpzdW1tYXJ5KGNsb2dsb2cyKQ0KYGBgDQoNClBoxrDGoW5nIHRyw6xuaCDGsOG7m2MgbMaw4bujbmcgdOG7qyBtw7QgaMOsbmggY2xvZ2xvZyBjw7MgZOG6oW5nOg0KDQokJA0KXGxvZ1xsZWZ0KC1cbG9nKDEgLSBcbXUpXHJpZ2h0KSA9IC0xLjA4NjAgKyAxLjg3MDEgXGNkb3QgXHRleHR7c3RhdGV9X3tcdGV4dHtuZXd9fSArIDAuMjMzMiBcY2RvdCBcdGV4dHtzdGF0ZX1fe1x0ZXh0e293bmVkfX0NCiQkDQpUcm9uZyDEkcOzLCDwnZyHbMOgIHjDoWMgc3XhuqV0IGtow6FjaCBow6BuZyBxdXnhur90IMSR4buLbmggbXVhIHhlIChwdXJjaGFzZV9kZWNpc2lvbiA9ICJZRVMiKS4NCg0KSOG7hyBz4buRIGNo4bq3biDiiJIxLjA4NjA6IGJp4buDdSB0aOG7iyBt4bupYyBsb2coLWxvZygx4oiSzrwpKSBraGkga2jDoWNoIGjDoG5nIHRodeG7mWMgbmjDs20gImVtZXJnZW5jeSI7IMSRw6J5IGzDoCB4w6FjIHN14bqldCBjxqEgc+G7nyDEkeG7gyBzbyBzw6FuaCB24bubaSBjw6FjIG5ow7NtIGPDsm4gbOG6oWkg4oCUIHTGsMahbmcg4bupbmcgduG7m2kgeMOhYyBzdeG6pXQgbXVhIHhlIHLhuqV0IHRo4bqlcCB0cm9uZyBuaMOzbSBuw6B5Lg0KDQpI4buHIHPhu5Egc3RhdGVfbmV3ID0gMS44NzAxOiBjaG8gdGjhuqV5IGtoaSBraMOhY2ggaMOgbmcgdGh14buZYyBuaMOzbSAibmV3IiwgbG9nKC1sb2coMeKIks68KSkgdMSDbmcgdGjDqm0gMS44NzAxIMSRxqFuIHbhu4sgc28gduG7m2kgbmjDs20gImVtZXJnZW5jeSIuIMSQaeG7gXUgbsOgeSB0xrDGoW5nIOG7qW5nIHbhu5tpIHjDoWMgc3XhuqV0IG11YSB4ZSB0xINuZyBt4bqhbmgsIHBo4bqjbiDDoW5oIHLDtSB4dSBoxrDhu5tuZyBtdWEgeGUgY+G7p2Ega2jDoWNoIGjDoG5nIG3hu5tpOyBt4bupYyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ogcuG6pXQgY2FvIChwIDwgMC4wMDEpLg0KDQpI4buHIHPhu5Egc3RhdGVfb3duZWQgPSAwLjIzMzI6IGNobyB0aOG6pXkga2jDoWNoIGjDoG5nIHRodeG7mWMgbmjDs20gIm93bmVkIiBjw7MgbG9nKC1sb2coMeKIks68KSkgY2FvIGjGoW4gImVtZXJnZW5jeSIga2hv4bqjbmcgMC4yMzMyIMSRxqFuIHbhu4ssIHTGsMahbmcg4bupbmcgduG7m2kgeMOhYyBzdeG6pXQgbXVhIHhlIHTEg25nIG5o4bq5OyBo4buHIHPhu5EgbsOgeSBjw7Mgw70gbmdoxKlhIHRo4buRbmcga8OqIOG7nyBt4bupYyA1JSAocCA9IDAuMDE3MyksIHR1eSBraMO0bmcgbeG6oW5oIG5oxrAgbmjDs20gIm5ldyIgbmjGsG5nIHbhuqtuIMSRw6FuZyBjaMO6IMO9Lg0KDQpNw7QgaMOsbmggY2xvZ2xvZyBwaOG6o24gw6FuaCBy4bqxbmcgdHLhuqFuZyB0aMOhaSBraMOhY2ggaMOgbmcgY8OzIOG6o25oIGjGsOG7n25nIHLDtSBy4buHdCDEkeG6v24geMOhYyBzdeG6pXQgcmEgcXV54bq/dCDEkeG7i25oIG11YSB4ZS4gQ+G7pSB0aOG7gzogTmjDs20gIm5ldyIgY8OzIHjDoWMgc3XhuqV0IG11YSB4ZSBjYW8gdsaw4bujdCB0cuG7mWksIGNobyB0aOG6pXkgxJHDonkgbMOgIHBow6JuIGtow7pjIHRp4buBbSBuxINuZyBj4bqnbiDEkcaw4bujYyDGsHUgdGnDqm4gdGnhur9wIGPhuq1uIHRyb25nIGPDoWMgY2hp4bq/biBk4buLY2ggbWFya2V0aW5nIGhv4bq3YyBiw6FuIGjDoG5nLiBOaMOzbSAib3duZWQiIGPFqW5nIGPDsyB4w6FjIHN14bqldCBtdWEgY2FvIGjGoW4gbmjDs20gImVtZXJnZW5jeSIsIG5oxrBuZyBt4bupYyB0xINuZyBraMO0bmcgbOG7m24uIMSQaeG7gXUgbsOgeSBn4bujaSDDvSBy4bqxbmcgbmjDs20ga2jDoWNoIGjDoG5nIMSRw6Mgc+G7nyBo4buvdSB4ZSBjw7MgdGjhu4MgY8OzIG5odSBj4bqndSDEkeG7lWkgeGUgaG/hurdjIG11YSB0aMOqbSB4ZSwgbmjGsG5nIGtow7RuZyBt4bqhbmggbeG6vSBuaMawIG5ow7NtIGtow6FjaCBow6BuZyBt4bubaS4gTmjDs20gImVtZXJnZW5jeSIgY8OzIHjDoWMgc3XhuqV0IG11YSB4ZSB0aOG6pXAgbmjhuqV0LCBwaOG6o24gw6FuaCBjw7MgdGjhu4MgaOG7jSBjaMawYSBz4bq1biBzw6BuZyB24buBIHTDoGkgY2jDrW5oIGhv4bq3YyBuaHUgY+G6p3UgY2jGsGEgcsO1IHLDoG5nIC0gbMOgIG5ow7NtIGtow7MgY2h1eeG7g24gxJHhu5VpLiBU4buVbmcgdGjhu4MsIGPDoWMgaOG7hyBz4buRIMSR4buBdSBjw7Mgw70gbmdoxKlhIHRo4buRbmcga8OqLCBjaG8gdGjhuqV5IG3DtCBow6xuaCBjbG9nbG9nIHBow7kgaOG7o3AgxJHhu4MgcGjDom4gdMOtY2ggbeG7kWkgcXVhbiBo4buHIGdp4buvYSB0cuG6oW5nIHRow6FpIGtow6FjaCBow6BuZyB2w6AgaMOgbmggdmkgbXVhIHhlLg0KDQojIyA0LjQgUGjDom4gdMOtY2ggdMOsbmggdHLhuqFuZyBi4bqjbyBow6BuaCB4ZSDhuqNuaCBoxrDhu59uZyDEkeG6v24gcXV54bq/dCDEkeG7i25oIG11YSB4ZQ0KDQojIyMgNC40LjEgVGjhu5FuZyBrw6ogbcO0IHThuqMgY2hvIGPhurdwIGJp4bq/biBwdXJjaGFzZV9kZWNpc2lvbiB2w6AgaGFzX3dhcnJhbnR5DQoNClRp4bq/cCB0aGVvLCBjaMO6bmcgdGEgbOG6rXAgYuG6o25nIHThuqduIHPhu5EgY2jDqW8gdsOgIHTDrW5oIHThu7cgbOG7hyBwaOG6p24gdHLEg20gdGhlbyBow6BuZyBnaeG7r2EgaGFpIGJp4bq/biAqcHVyY2hhc2VfZGVjaXNpb24qIChxdXnhur90IMSR4buLbmggbXVhIHhlKSB2w6AgKmhhc193YXJyYW50eSogKHTDrG5oIHRy4bqhbmcgY8OybiBi4bqjbyBow6BuaCksIG5o4bqxbSBt4bulYyB0acOqdSBwaMOibiB0w61jaCBt4buRaSBsacOqbiBo4buHIGdp4buvYSBow6BuaCB2aSBtdWEgeGUgdsOgIHZp4buHYyB4ZSBjw7MgY8OybiBi4bqjbyBow6BuaCBoYXkga2jDtG5nLiBQaMOibiB04buVIGNow6lvIGdp4buvYSBoYWkgYmnhur9uIMSR4buLbmggdMOtbmggbsOgeSBjaG8gcGjDqXAgcXVhbiBzw6F0IHPhu7Ega2jDoWMgYmnhu4d0IHRyb25nIHThu7cgbOG7hyBtdWEgZ2nhu69hIGhhaSBuaMOzbSB4ZSAoY8OzIGLhuqNvIGjDoG5oIHbDoCBraMO0bmcgY8OzIGLhuqNvIGjDoG5oKSwgdOG7qyDEkcOzIMSRxrBhIHJhIG5o4bqtbiDEkeG7i25oIGJhbiDEkeG6p3UgduG7gSBraOG6oyBuxINuZyB0w6xuaCB0cuG6oW5nIGLhuqNvIGjDoG5oIOG6o25oIGjGsOG7n25nIMSR4bq/biBxdXnhur90IMSR4buLbmggbXVhIHhlIGPhu6dhIG5nxrDhu51pIHRpw6p1IGTDuW5nLg0KDQpgYGB7cn0NCnB1X2hhMSA8LSB0YWJsZShkYXRhJHB1cmNoYXNlX2RlY2lzaW9uLCBkYXRhJGhhc193YXJyYW50eSkNCnB1X2hhMV90b3RhbCA8LSBhZGRtYXJnaW5zKHB1X2hhMSkNCnB1X2hhMiA8LSByb3VuZChwcm9wLnRhYmxlKHB1X2hhMSwgbWFyZ2luID0gMSkgKiAxMDAsIDIpDQprYWJsZShwdV9oYTFfdG90YWwsIGNhcHRpb24gPSAiQuG6o25nIDEuIFThuqduIHPhu5EgZ2nhu69hIHF1eeG6v3QgxJHhu4tuaCBtdWEgeGUgdsOgIHTDrG5oIHRy4bqhbmcgYuG6o28gaMOgbmggeGUiKQ0Ka2FibGUocHVfaGEyLCBjYXB0aW9uID0gIkLhuqNuZyAyLiBU4bqnbiBzdeG6pXQgKCUpIGdp4buvYSBxdXnhur90IMSR4buLbmggbXVhIHhlIHbDoCB0w6xuaCB0cuG6oW5nIGLhuqNvIGjDoG5oIHhlIikNCmBgYA0KDQpgYGB7cn0NCmdncGxvdChhcy5kYXRhLmZyYW1lKHB1X2hhMSksIGFlcyh4ID0gVmFyMSwgeSA9IEZyZXEsIGZpbGwgPSBWYXIyKSkgKw0KICBnZW9tX2NvbChwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC45KSkgKw0KICBnZW9tX3RleHQoYWVzKGxhYmVsID0gcGFzdGUwKEZyZXEsICIgKCIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdW5kKHB1X2hhMltjYmluZChhcy5jaGFyYWN0ZXIoVmFyMSksIGFzLmNoYXJhY3RlcihWYXIyKSldLCAyKSwgIiUpIikpLA0KICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSh3aWR0aCA9IDAuOSksDQogICAgICAgICAgICB2anVzdCA9IC0wLjMsIHNpemUgPSAzKSArDQogIGxhYnMoDQogICAgdGl0bGUgPSAiUGjDom4gYuG7kSBxdXnhur90IMSR4buLbmggbXVhIHhlIHRoZW8gdMOsbmggdHLhuqFuZyBi4bqjbyBow6BuaCBj4bunYSB4ZSIsDQogICAgeCA9ICJRdXnhur90IMSR4buLbmggbXVhIHhlIiwNCiAgICB5ID0gIlPhu5EgbMaw4bujbmciLA0KICAgIGZpbGwgPSAiVMOsbmggdHLhuqFuZyBi4bqjbyBow6BuaCINCiAgKSArDQogIHRoZW1lX21pbmltYWwoKQ0KYGBgDQoNCiMjIyA0LjQuMiBQaMOibiB0w61jaCB0aMO0bmcgcXVhIFJlbGF0aXZlIFJpc2sNCg0KVHJvbmcgcGjhuqduIG7DoHksIHTDtGkgdGnhur9uIGjDoG5oIHTDrW5oIHRvw6FuIFLhu6dpIHJvIHTGsMahbmcgxJHhu5FpIChSZWxhdGl2ZSBSaXNrIOKAkyBSUikgbmjhurFtIHBow6JuIHTDrWNoIG3hu6ljIMSR4buZIOG6o25oIGjGsOG7n25nIGPhu6dhIHTDrG5oIHRy4bqhbmcgYuG6o28gaMOgbmggKmhhc193YXJyYW50eSogxJHhur9uIHF1eeG6v3QgxJHhu4tuaCBtdWEgeGUgw7QgdMO0IGPhu6dhIGtow6FjaCBow6BuZyAqcHVyY2hhc2VfZGVjaXNpb24qLiBN4bulYyB0acOqdSBsw6AgxJHDoW5oIGdpw6EgbGnhu4d1IGtow6FjaCBow6BuZyBjw7MgeHUgaMaw4bubbmcgxJHGsGEgcmEgcXV54bq/dCDEkeG7i25oIG11YSAoWUVTKSBoYXkga2jDtG5nIG11YSAoTk8pIHTDuXkgdGhlbyB2aeG7h2MgeGUgY8OybiBoYXkga2jDtG5nIGPDsm4gYuG6o28gaMOgbmguIMSQ4buDIMSR4bqjbSBi4bqjbyB0w61uaCBraMOhY2ggcXVhbiB2w6AgdG/DoG4gZGnhu4duIHRyb25nIHBow6JuIHTDrWNoLCBjaOG7iSBz4buRIFJSIHPhur0gxJHGsOG7o2MgdMOtbmggdG/DoW4gdGhlbyBi4buRbiBoxrDhu5tuZyB0aeG6v3AgY+G6rW4ga2jDoWMgbmhhdSBi4bqxbmcgY8OhY2ggaG/DoW4gxJHhu5VpIHbhu4sgdHLDrSBow6BuZyB2w6AgY+G7mXQgdHJvbmcgYuG6o25nIHBow6JuIHBo4buRaSBjaMOpbyBnaeG7r2EgaGFpIGJp4bq/biwgdOG7qyDEkcOzIGtp4buDbSB0cmEgxJHhu5kg4buVbiDEkeG7i25oIHbDoCBuaOG6pXQgcXXDoW4gY+G7p2EgbeG7kWkgcXVhbiBo4buHIHF1YW4gc8OhdCDEkcaw4bujYy4NCg0KYGBge3J9DQpSUnB1X2hhMSA8LSByaXNrcmF0aW8ocHVfaGExKQ0KIyMgQuG6o25nIHThuqduIHPhu5ENCmthYmxlKFJScHVfaGExJGRhdGEsIGNhcHRpb24gPSAiQuG6o25nIHThuqduIHPhu5EgZ2nhu69hIHB1cmNoYXNlX2RlY2lzaW9uIHbDoCBoYXNfd2FycmFudHkiKQ0KIyMgQuG6o25nIFJpc2sgUmF0aW8NCmthYmxlKFJScHVfaGExJG1lYXN1cmUsIGRpZ2l0cyA9IDMsIGNhcHRpb24gPSAiQuG6o25nIFThu7cgc+G7kSBy4bunaSBybyAoUmlzayBSYXRpbykiKQ0KDQpgYGANCg0KVOG7qyBr4bq/dCBxdeG6oyBuaOG6rW4gxJHGsOG7o2Mg4bufIHRyw6puIGNobyB0aOG6pXkgbmjDs20ga2jDoWNoIGjDoG5nIHF1eeG6v3QgxJFpbmggbXVhIHhlIOG7nyBuaMOzbSB4ZSDEkWFuZyB0cm9uZyB0aOG7nWkgZ2lhbiBi4bqjbyBow6BuaCBn4bqlcCA5LjQwMiBs4bqnbiBzbyB24bubaSBuaMOzbSBraMOhY2ggaMOgbmcga2jDtG5nIHF1eeG6v3QgxJHhu4tuaCBtdWEgeGUg4bufIG5ow7NtIMO0IHTDtCDEkWFuZyBjw7JuIHRyb25nIHRo4budaSBnaWFuIGLhuqNvIGjDoG5oLg0KDQojIyMgNC40LjMgUGjDom4gdMOtY2ggdGjDtG5nIHF1YSBPZGQtUmF0aW8gDQoNCkNow7puZyB0YSBz4bq9IHRp4bq/cCB04bulYyB2aeG7h2MgcGjDom4gdMOtY2ggduG7m2kgdmnhu4djIHTDrW5oIE9kZC1SYXRpbyBj4bunYSBj4bq3cCBiaeG6v24gKnB1cmNoYXNlX2RlY2lzaW9uKiB2w6AgKmhhc193YXJyYW50eSoNCg0KYGBge3J9DQojIyBC4bqjbmcgdOG6p24gc+G7kQ0Ka2FibGUob2Rkc3JhdGlvKHB1X2hhMSwgcmV2ID0gInIiKSRkYXRhLCBjYXB0aW9uID0gIkLhuqNuZyB04bqnbiBz4buRIGdp4buvYSBwdXJjaGFzZV9kZWNpc2lvbiB2w6AgaGFzX3dhcnJhbnR5IikNCiMjIELhuqNuZyBSaXNrIFJhdGlvDQprYWJsZShvZGRzcmF0aW8ocHVfaGExLHJldiA9ICJyIikkbWVhc3VyZSwgZGlnaXRzID0gMywgY2FwdGlvbiA9ICJC4bqjbmcga+G6v3QgcXXhuqMgT2RkIFJhdGlvIikNCmBgYA0KDQpU4bqhaSBuaMOzbSBraMOhY2ggaMOgbmcgcXV54bq/dCDEkeG7i25oIG11YSB4ZSDDtCB0w7QgdGjDrCB04bu3IHPhu5Ega2jDoWNoIGjDoG5nIGNo4buNbiDDtCB0w7QgaOG6v3QgdGjhu51pIGdpYW4gYuG6o28gaMOgbmggdGjhuqVwIGjGoW4gMC4wNzkgbOG6p24gc28gduG7m2kgdOG7tyBz4buRIGtow6FjaCBow6BuZyBjaOG7jW4gw7QgdMO0IMSRYW5nIGPDsm4gdGjhu51pIGdpYW4gYuG6o28gaMOgbmguDQoNCiMjIyA0LjQuNCBUaOG7kW5nIGvDqiBzdXkgZGnhu4VuIA0KDQotICoqS2nhu4NtIMSR4buLbmggdMOtbmggxJHhu5ljIGzhuq1wIGNobyBj4bq3cCBiaeG6v24gcHVyY2hhc2VfZGVjaXNpb24gdsOgIGhhc193YXJyYW50eSoqDQoNCkdp4bqjIHRodXnhur90Og0KDQpI4oKAIDpwdXJjaGFzZV9kZWNpc2lvbiB2w6AgaGFzX3dhcnJhbnR5ZSDEkeG7mWMgbOG6rXAgduG7m2kgbmhhdS4NCg0KSOKCgSA6cHVyY2hhc2VfZGVjaXNpb24gdsOgIGhhc193YXJyYW50eSBraMO0bmcgxJHhu5ljIGzhuq1wIHbhu5tpIG5oYXUuDQoNCmBgYHtyfQ0KY2hpc3EudGVzdChwdV9oYTEpDQpgYGANClF1YSBr4bq/dCBxdeG6oyBraeG7g20gxJHhu4tuaCBjaG8gdGEgcC12YWx1ZSA8IDIuMmUtMTYgPCAwLjA1IGLDoWMgYuG7jyBI4oKALCDEkeG7k25nIG5naMSpYSB24bubaSB2aeG7h2MgdMOsbmggdHLhuqFuZyBi4bqjbyBow6BuaCBj4bunYSB4ZSBjw7Mg4bqjbmggaMaw4bufbmcgxJHhur9uIHF1eeG6v3QgxJHhu4tuaCBtdWEgeGUgY+G7p2Ega2jDoWNoIGjDoG5nLiANCg0KLSAqKktob+G6o25nIMaw4bubYyBsxrDhu6NuZyoqDQoNCnDigoEgPSBQKFThu7cgbOG7hyBxdXnhur90IMSR4buLbmggbXVhIHhlIOG7nyBuaMOzbSB4ZSBraMO0bmcgY8OybiBi4bqjbyBow6BuaCkNCg0KcOKCgiA9IFAoVOG7tyBs4buHIHF1eeG6v3QgxJHhu4tuaCBtdWEgeGUg4bufIG5ow7NtIHhlIGPDsm4gYuG6o28gaMOgbmgpDQoNCkdp4bqjIHRodXnhur90Og0KDQpI4oKAOiBw4oKBIOKIkiBw4oKCID0gMChU4bu3IGzhu4cgcXV54bq/dCDEkeG7i25oIG11YSB4ZSDhu58gbmjDs20geGUga2jDtG5nIGPDsm4gYuG6o28gaMOgbmggdsOgIGPDsm4gYuG6o28gaMOgbmggbMOgIGLhurFuZyBuaGF1KQ0KDQpI4oKBOiBw4oKBIOKIkiBw4oKCIDwgMChU4bu3IGzhu4cgcXV54bq/dCDEkeG7i25oIG11YSB4ZSDhu58gbmjDs20geGUgS2jDtG5nIGPDsm4gYuG6o28gaMOgbmggdGjhuqVwIGjGoW4gc28gduG7m2kgbmjDs20geGUgY8OybiBi4bqjbyBow6BuaCkNCg0KYGBge3J9DQpzdWNjZXNzMyA8LSBwdV9oYTFbIllFUyIsIGMoIkZBTFNFIiwgIlRSVUUiKV0NCnRvdGFsMyA8LSBjb2xTdW1zKHB1X2hhMSlbYygiRkFMU0UiLCAiVFJVRSIpXQ0KIyBLaeG7g20gxJHhu4tuaCB04bu3IGzhu4c6IHAxIC0gcDIgPCAwDQpwcm9wLnRlc3Qoc3VjY2VzczMsIHRvdGFsMywgYWx0ZXJuYXRpdmUgPSAibGVzcyIsIGNvcnJlY3QgPSBGQUxTRSkNCg0KYGBgDQoNCkvhur90IHF14bqjIGtp4buDbSDEkeG7i25oIGNobyB0aOG6pXkgcC12YWx1ZSA8IDIuMmUtMTYgPCDOsT01JSwgdOG7qWMgbMOgIGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ogcuG6pXQgbeG6oW5oIMSR4buDIGLDoWMgYuG7jyBnaeG6oyB0aHV54bq/dCBI4oKALiDEkGnhu4F1IG7DoHkgY2hvIHRo4bqleSB04bu3IGzhu4cgcXV54bq/dCDEkeG7i25oIG11YSB4ZSDhu58gbmjDs20geGUgS2jDtG5nIGPDsm4gYuG6o28gaMOgbmggdGjhuqVwIGjGoW4gxJHDoW5nIGvhu4Mgc28gduG7m2kgbmjDs20geGUgY8OybiBi4bqjbyBow6BuaC4gQ+G7pSB0aOG7gywgdOG7tyBs4buHIG11YSDhu58gbmjDs20geGUga2jDtG5nIGPDsm4gYuG6o28gaMOgbmggbMOgIDM0LjY1JSwgdHJvbmcga2hpIG5ow7NtIHhlIGPDsm4gYuG6o28gaMOgbmggbMOgIDg3LjA4JS4NCg0KIyMjIDQuNC41IE3DtCBow6xuaCBo4buTaSBxdXkgY2hvIGThu68gbGnhu4d1IG5o4buLIHBow6JuDQoNCioqTcO0IGjDrG5oIGxvZ2l0KioNCg0KDQpgYGB7cn0NCmxvZ2l0MyA8LSBnbG0oZmFjdG9yKHB1cmNoYXNlX2RlY2lzaW9uKSB+IGhhc193YXJyYW50eSwgZGF0YSA9IGRhdGEsIGZhbWlseSA9IGJpbm9taWFsKGxpbmsgPSAibG9naXQiKSkNCnN1bW1hcnkobG9naXQzKQ0KYGBgDQoNClThu6sga+G6v3QgcXXhuqMgbcO0IGjDrG5oIGjhu5NpIHF1eSBsb2dpc3RpYyB24bubaSBiaeG6v24gcGjhu6UgdGh14buZYyBsw6AgcXV54bq/dCDEkeG7i25oIG11YSB4ZSAocHVyY2hhc2VfZGVjaXNpb24pIHbDoCBiaeG6v24gxJHhu5ljIGzhuq1wIGzDoCB0w6xuaCB0cuG6oW5nIGLhuqNvIGjDoG5oIChoYXNfd2FycmFudHkpLCB0YSB0aHUgxJHGsOG7o2MgcGjGsMahbmcgdHLDrG5oIMaw4bubYyBsxrDhu6NuZyBuaMawIHNhdToNCg0KDQokJA0KXGxvZ1xsZWZ0KCBcZnJhY3tcbXV9ezEgLSBcbXV9IFxyaWdodCkgPSAtMC42MzQ1ICsgMi41NDI4IFxjZG90IFx0ZXh0e2hhc193YXJyYW50eX0NCiQkDQoNClRyb25nIMSRw7MsICRcbXUkIGzDoCB4w6FjIHN14bqldCBraMOhY2ggaMOgbmcgxJHGsGEgcmEgcXV54bq/dCDEkeG7i25oIG11YSB4ZSAodOG7qWMgcHVyY2hhc2VcX2RlY2lzaW9uID0gIllFUyIpLiBCaeG6v24gZ2nhuqNpIHRow61jaCBgaGFzX3dhcnJhbnR5YCBsw6AgYmnhur9uIG5o4buLIHBow6JuLCDEkcaw4bujYyBtw6MgaMOzYSBt4bq3YyDEkeG7i25oIHRyb25nIFIgdGhlbyBraeG7g3UgbG9naWMgduG7m2kgbeG7qWMgMSB0xrDGoW5nIOG7qW5nIHbhu5tpICJjw7MgYuG6o28gaMOgbmgiIChUUlVFKSB2w6AgbeG7qWMgMCBsw6AgImtow7RuZyBi4bqjbyBow6BuaCIgKEZBTFNFKS4gS2hpIG3hu5l0IGNoaeG6v2MgeGUga2jDtG5nIGPDsyBi4bqjbyBow6BuaCwgcGjGsMahbmcgdHLDrG5oIHLDunQgZ+G7jW4gY8OybiBs4bqhaSBsw6AgJFxsb2coXG11IC8gKDEgLSBcbXUpKSA9IC0wLjYzNDUkLCBwaOG6o24gw6FuaCBsb2ctb2RkcyBtdWEgeGUgdHJvbmcgdHLGsOG7nW5nIGjhu6NwIG7DoHkuIE5nxrDhu6NjIGzhuqFpLCBraGkgeGUgY8OzIGLhuqNvIGjDoG5oLCBsb2ctb2RkcyBz4bq9IHTEg25nIHRow6ptIDIuNTQyOCDEkcahbiB24buLLg0KDQpI4buHIHPhu5EgY2jhurduIC0wLjYzNDUgxJHhuqFpIGRp4buHbiBjaG8gbG9nLW9kZHMgbXVhIHhlIGtoaSB4ZSBraMO0bmcgY8OzIGLhuqNvIGjDoG5oLiBLaGkgY2h1eeG7g24gc2FuZyBvZGRzLCB0YSBjw7Mgb2RkcyBtdWEgeGUg4bufIG5ow7NtIGtow7RuZyBi4bqjbyBow6BuaCBsw6AgJGV4cCgtMC42MzQ1KSBcYXBwcm94IDAuNTMwJCwgbmdoxKlhIGzDoCBraOG6oyBuxINuZyBtdWEgeGUgdGjhuqVwIGjGoW4ga2jhuqMgbsSDbmcga2jDtG5nIG11YS4gDQpI4buHIHPhu5EgMi41NDI4IGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ogcuG6pXQgY2FvIChwIDwgMC4wMDEpLCBjaG8gdGjhuqV5IHZp4buHYyBjw7MgYuG6o28gaMOgbmggbMOgbSB0xINuZyDEkcOhbmcga+G7gyBraOG6oyBuxINuZyBraMOhY2ggaMOgbmcgc+G6vSBtdWEgeGUuIEPhu6UgdGjhu4MsIG9kZHMgbXVhIHhlIOG7nyBuaMOzbSBjw7MgYuG6o28gaMOgbmggY2FvIGjGoW4gbmjDs20ga2jDtG5nIGLhuqNvIGjDoG5oIGtob+G6o25nICRleHAoMi41NDI4KSBcYXBwcm94IDEyLjcyJCBs4bqnbiDigJMgbeG7mXQgbeG7qWMgdMSDbmcgcuG6pXQgbOG7m24gY+G6oyB24buBIG3hurd0IHRo4buRbmcga8OqIGzhuqtuIHRo4buxYyB0aeG7hW4uDQoNCk5nb8OgaSByYSwgbcO0IGjDrG5oIGNobyB0aOG6pXkgbnVsbCBkZXZpYW5jZSBnaeG6o20gdOG7qyA1MDAxNiB4deG7kW5nIDQ5NDkwLCDEkeG7k25nIHRo4budaSBBSUMgbMOgIDQ5NDk0LCBjaOG7qW5nIHThu48gYmnhur9uIGhhc1xfd2FycmFudHkgxJHDoyBj4bqjaSB0aGnhu4duIMSRw6FuZyBr4buDIGto4bqjIG7Eg25nIGThu7EgxJFvw6FuIGPhu6dhIG3DtCBow6xuaC4gVMOzbSBs4bqhaSwga+G6v3QgcXXhuqMgcGjDom4gdMOtY2gga2jhurNuZyDEkeG7i25oIHLhurFuZyBi4bqjbyBow6BuaCBsw6AgeeG6v3UgdOG7kSBjw7Mg4bqjbmggaMaw4bufbmcgbeG6oW5oIHbDoCByw7UgcuG7h3QgxJHhur9uIHF1eeG6v3QgxJHhu4tuaCBtdWEgeGUuIMSQw6J5IGzDoCB0aMO0bmcgdGluIHF1YW4gdHLhu41uZywgZ+G7o2kgw70gcuG6sW5nIGRvYW5oIG5naGnhu4dwIG7Dqm4gdMOtY2ggaOG7o3AgY2jDrW5oIHPDoWNoIGLhuqNvIGjDoG5oIMSR4buDIHTEg25nIGto4bqjIG7Eg25nIGNodXnhu4NuIMSR4buVaSB04burIG5nxrDhu51pIHF1YW4gdMOibSBzYW5nIG5nxrDhu51pIG11YSB0aOG7sWMgdOG6vy4NCg0KDQoqKk3DtCBow6xuaCBwcm9iaXQqKg0KDQpgYGB7cn0NCnByb2JpdDMgPC0gZ2xtKGZhY3RvcihwdXJjaGFzZV9kZWNpc2lvbikgfiBoYXNfd2FycmFudHksIGZhbWlseSA9IGJpbm9taWFsKGxpbmsgPSAicHJvYml0IiksIGRhdGEgPSBkYXRhKQ0Kc3VtbWFyeShwcm9iaXQzKQ0KYGBgDQoNCg0KROG7sWEgdHLDqm4ga+G6v3QgcXXhuqMgaOG7k2kgcXV5IFByb2JpdCwgdGEgdGh1IMSRxrDhu6NjIHBoxrDGoW5nIHRyw6xuaCDGsOG7m2MgbMaw4bujbmcgbmjGsCBzYXU6DQoNCiQkDQpcUGhpXnstMX0oXG11KSA9IC0wLjM5NDggKyAxLjUyNTEgXGNkb3QgXHRleHR7aGFzX3dhcnJhbnR5fQ0KJCQNCg0KVHJvbmcgxJHDsywgJFxQaGleey0xfShcbXUpJCBsw6AgcGjDom4gduG7iyBjaHXhuqluIChpbnZlcnNlIENERikg4bupbmcgduG7m2kgeMOhYyBzdeG6pXQgJFxtdSQgbcOgIGtow6FjaCBow6BuZyBxdXnhur90IMSR4buLbmggbXVhIHhlICh04bupYyBwdXJjaGFzZVxfZGVjaXNpb24gPSAiWUVTIikuIEJp4bq/biAqaGFzX3dhcnJhbnR5KiBsw6AgYmnhur9uIG5o4buLIHBow6JuLCB24bubaSBnacOhIHRy4buLIDEgdMawxqFuZyDhu6luZyB24bubaSAiY8OzIGLhuqNvIGjDoG5oIiAoVFJVRSkgdsOgIDAgbMOgICJraMO0bmcgY8OzIGLhuqNvIGjDoG5oIiAoRkFMU0UpLiBLaGkgeGUga2jDtG5nIGPDsyBi4bqjbyBow6BuaCwgcGjGsMahbmcgdHLDrG5oIHRodSBn4buNbiBjw7JuIGzhuqFpIGzDoCAkXFBoaV57LTF9KFxtdSkgPSAtMC4zOTQ4JCwgxJHhuqFpIGRp4buHbiBjaG8gbeG7qWMgeHUgaMaw4bubbmcgKGxhdGVudCBwcm9wZW5zaXR5KSBtdWEgeGUgdHJvbmcgbmjDs20gbsOgeS4gS2hpIGPDsyBi4bqjbyBow6BuaCwgZ2nDoSB0cuG7iyBwaMOibiB24buLIHPhur0gdMSDbmcgdGjDqm0gMS41MjUxIMSRxqFuIHbhu4suDQoNCkjhu4cgc+G7kSBjaOG6t24gLTAuMzk0OCBwaOG6o24gw6FuaCB4dSBoxrDhu5tuZyBtdWEgeGUgY+G7p2EgbmjDs20ga2jDtG5nIGLhuqNvIGjDoG5oLiBWw6wgaMOgbSBsacOqbiBr4bq/dCBj4bunYSBtw7QgaMOsbmggUHJvYml0IGzDoCBwaMOibiBwaOG7kWkgY2h14bqpbiB0w61jaCBsxal5LCBuw6puIGtow7RuZyB0aOG7gyBkaeG7hW4gZ2nhuqNpIHRy4buxYyB0aeG6v3AgaOG7hyBz4buRIHRoZW8gb2RkcyByYXRpbyBuaMawIHRyb25nIExvZ2l0LiBUdXkgbmhpw6puLCBk4bqldSB2w6AgxJHhu5kgbOG7m24gY+G7p2EgaOG7hyBz4buRIHbhuqtuIGNobyB0aOG6pXkgxJHGsOG7o2MgY2hp4buBdSBoxrDhu5tuZyB2w6AgY8aw4budbmcgxJHhu5kgdMOhYyDEkeG7mW5nLiANCg0KSOG7hyBz4buRIDEuNTI1MSBjw7MgZ2nDoSB0cuG7iyBkxrDGoW5nIGzhu5tuIHbDoCBjw7Mgw70gbmdoxKlhIHRo4buRbmcga8OqIHLhuqV0IGNhbyAocCA8IDAuMDAxKSwgY2hvIHRo4bqleSBi4bqjbyBow6BuaCBsw6BtIHTEg25nIHLDtSBy4buHdCB4w6FjIHN14bqldCBraMOhY2ggaMOgbmcgcXV54bq/dCDEkeG7i25oIG11YSB4ZS4gTsOzaSBjw6FjaCBraMOhYywgeGUgY8OzIGLhuqNvIGjDoG5oIGdpw7pwIGThu4tjaCBjaHV54buDbiDEkcOhbmcga+G7gyBnacOhIHRy4buLIG5nxrDhu6FuZyBxdXnhur90IMSR4buLbmggKGxhdGVudCB2YXJpYWJsZSkgduG7gSBwaMOtYSBjw7Mga2jhuqMgbsSDbmcgbXVhIGNhbyBoxqFuLg0KDQpYw6l0IHbhu4EgxJHhu5kgcGjDuSBo4bujcCwgbnVsbCBkZXZpYW5jZSBnaeG6o20gdOG7qyA1MDAxNiB4deG7kW5nIGPDsm4gNDk0OTAgc2F1IGtoaSDEkcawYSBiaeG6v24gYuG6o28gaMOgbmggdsOgbyBtw7QgaMOsbmguIENo4buJIHPhu5EgQUlDIGzDoCA0OTQ5NCwgdMawxqFuZyDEkcawxqFuZyB24bubaSBtw7QgaMOsbmggbG9naXQgY8O5bmcgYmnhur9uIGdp4bqjaSB0aMOtY2guIMSQaeG7gXUgbsOgeSBjaG8gdGjhuqV5IG3DtCBow6xuaCBQcm9iaXQgY8WpbmcgbcO0IHThuqMgdOG7kXQgbeG7kWkgcXVhbiBo4buHIGdp4buvYSB0w6xuaCB0cuG6oW5nIGLhuqNvIGjDoG5oIHbDoCBow6BuaCB2aSBtdWEgeGUuIE3hurdjIGTDuSB2aeG7h2MgZGnhu4VuIGdp4bqjaSB4w6FjIHN14bqldCBj4bulIHRo4buDIHRyb25nIFByb2JpdCBwaOG7qWMgdOG6oXAgaMahbiBzbyB24bubaSBMb2dpdCwgbmjGsG5nIGjGsOG7m25nIHTDoWMgxJHhu5luZyBsw6AgdMawxqFuZyDEkeG7k25nOiBi4bqjbyBow6BuaCBjw7MgdMOhYyDEkeG7mW5nIHTDrWNoIGPhu7FjIHbDoCBjw7Mgw70gbmdoxKlhIHRo4buRbmcga8OqIMSR4bq/biB4w6FjIHN14bqldCBtdWEgeGUuIFTDs20gbOG6oWksIGvhur90IHF14bqjIHThu6sgbcO0IGjDrG5oIFByb2JpdCBt4buZdCBs4bqnbiBu4buvYSBj4bunbmcgY+G7kSBr4bq/dCBsdeG6rW4gcuG6sW5nIGLhuqNvIGjDoG5oIGzDoCBt4buZdCB54bq/dSB04buRIHF1YW4gdHLhu41uZyDhuqNuaCBoxrDhu59uZyDEkeG6v24gcXV54bq/dCDEkeG7i25oIG11YSB4ZSwgdsOgIG7Dqm4gxJHGsOG7o2MgeGVtIHjDqXQgdHJvbmcgY8OhYyBjaMOtbmggc8OhY2ggYsOhbiBow6BuZyB2w6AgxJHhu4tuaCB24buLIHRo4buLIHRyxrDhu51uZyB4ZSDEkcOjIHF1YSBz4butIGThu6VuZy4NCg0KDQoqKk3DtCBow6xuaCBjbG9nbG9nKioNCg0KYGBge3J9DQpjbG9nbG9nMyA8LSBnbG0oZmFjdG9yKHB1cmNoYXNlX2RlY2lzaW9uKSB+IGhhc193YXJyYW50eSwgZmFtaWx5ID0gYmlub21pYWwobGluayA9ICJjbG9nbG9nIiksIGRhdGEgPSBkYXRhKQ0Kc3VtbWFyeShjbG9nbG9nMykNCmBgYA0KDQoNCkThu7FhIHRyw6puIGvhur90IHF14bqjIGjhu5NpIHF1eSBz4butIGThu6VuZyBow6BtIGxpw6puIGvhur90IGNvbXBsZW1lbnRhcnkgbG9nLWxvZywgcGjGsMahbmcgdHLDrG5oIMaw4bubYyBsxrDhu6NuZyB0aHUgxJHGsOG7o2MgbmjGsCBzYXU6DQoNCiQkDQpcbG9nXGxlZnQoIC1cbG9nKDEgLSBcbXUpIFxyaWdodCkgPSAtMC44NTQ3ICsgMS41NzA5IFxjZG90IFx0ZXh0e2hhc193YXJyYW50eX0NCiQkDQoNClRyb25nIMSRw7MsICRcbXUkIGzDoCB4w6FjIHN14bqldCBraMOhY2ggaMOgbmcgxJHGsGEgcmEgcXV54bq/dCDEkeG7i25oIG11YSB4ZSAodOG7qWMgcHVyY2hhc2VcX2RlY2lzaW9uID0gIllFUyIpLiBIw6BtIGxpw6puIGvhur90IGNsb2dsb2cgKGNvbXBsZW1lbnRhcnkgbG9nLWxvZykgxJHGsOG7o2Mgc+G7rSBk4bulbmcgdGhheSB2w6wgbG9naXQgaG/hurdjIHByb2JpdCwgcGjDuSBo4bujcCBoxqFuIHRyb25nIGPDoWMgdMOsbmggaHXhu5FuZyBraGkgeMOhYyBzdeG6pXQgeOG6o3kgcmEgc+G7sSBraeG7h24gdGnhur9uIGfhuqduIHbhu4EgMCBob+G6t2MgMSBraMO0bmcgxJHhu5FpIHjhu6luZy4gQmnhur9uIGdp4bqjaSB0aMOtY2ggYGhhc193YXJyYW50eWAgbMOgIGJp4bq/biBuaOG7iyBwaMOibiwgbmjhuq1uIGdpw6EgdHLhu4sgMSBu4bq/dSB4ZSBjw7MgYuG6o28gaMOgbmggKFRSVUUpIHbDoCAwIG7hur91IGtow7RuZyAoRkFMU0UpLg0KDQpLaGkgeGUga2jDtG5nIGPDsyBi4bqjbyBow6BuaCwgcGjGsMahbmcgdHLDrG5oIHRodSBn4buNbiBjw7JuIGzhuqFpIGzDoCAkXGxvZygtXGxvZygxIC0gXG11KSkgPSAtMC44NTQ3JC4gVHJvbmcga2hpIMSRw7MsIG7hur91IHhlIGPDsyBi4bqjbyBow6BuaCwgYmnhu4N1IHRo4bupYyB0xINuZyB0aMOqbSAxLjU3MDkgxJHGoW4gduG7iy4gSOG7hyBz4buRIGNo4bq3biAtMC44NTQ3IMSR4bqhaSBkaeG7h24gY2hvIGxvZygtbG9nKDEgLSDOvCkpIHRyb25nIG5ow7NtIGtow7RuZyBjw7MgYuG6o28gaMOgbmguIEjhu4cgc+G7kSAxLjU3MDkgbWFuZyBnacOhIHRy4buLIGTGsMahbmcgdsOgIGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ogcuG6pXQgY2FvIChwIDwgMC4wMDEpLCBjaG8gdGjhuqV5IGLhuqNvIGjDoG5oIGPDsyDhuqNuaCBoxrDhu59uZyB0w61jaCBj4buxYyDEkeG6v24geMOhYyBzdeG6pXQga2jDoWNoIGjDoG5nIG11YSB4ZS4NCg0KVHV5IG3DtCBow6xuaCBjbG9nbG9nIGtow7RuZyBjaG8gcGjDqXAgZGnhu4VuIGdp4bqjaSBo4buHIHPhu5EgdGhlbyB4w6FjIHN14bqldCBob+G6t2Mgb2RkcyBt4buZdCBjw6FjaCB0cuG7sWMgdGnhur9wIG5oxrAgbG9naXQsIG5oxrBuZyBk4bqldSB2w6AgxJHhu5kgbOG7m24gY+G7p2EgaOG7hyBz4buRIHbhuqtuIHBo4bqjbiDDoW5oIGNoaeG7gXUgaMaw4bubbmcgdsOgIG3hu6ljIMSR4buZIOG6o25oIGjGsOG7n25nLiBUcm9uZyB0csaw4budbmcgaOG7o3AgbsOgeSwgdmnhu4djIGPDsyBi4bqjbyBow6BuaCBsw6BtIGThu4tjaCBjaHV54buDbiBt4bqhbmggeMOhYyBzdeG6pXQgbXVhIHhlIHbhu4EgcGjDrWEgZ+G6p24gMSDigJMgxJFp4buBdSBuw6B5IMSR4bq3YyBiaeG7h3QgcXVhbiB0cuG7jW5nIHRyb25nIGPDoWMgdGjhu4sgdHLGsOG7nW5nIG3DoCBow6BuaCB2aSBtdWEgbMOgIGhp4bq/bSBn4bq3cCBob+G6t2MgeOG6o3kgcmEgdHJvbmcgxJFp4buBdSBraeG7h24gbmfGsOG7oW5nIHjDoWMgc3XhuqV0IGtow7RuZyBjw6JuIHjhu6luZy4NCg0KVuG7gSBt4bupYyDEkeG7mSBwaMO5IGjhu6NwLCBtw7QgaMOsbmggY8OzIHJlc2lkdWFsIGRldmlhbmNlIGzDoCA0OTQ5MCAoZ2nhuqNtIHThu6sgbnVsbCBkZXZpYW5jZSA1MDAxNiksIHbDoCBBSUMgPSA0OTQ5NCwgdMawxqFuZyDEkcawxqFuZyB24bubaSBjw6FjIG3DtCBow6xuaCBz4butIGThu6VuZyBsacOqbiBr4bq/dCBraMOhYy4gU+G7sSBo4buZaSB04bulIG5oYW5oIHNhdSA1IHbDsm5nIGzhurdwIEZpc2hlciBTY29yaW5nIGNobyB0aOG6pXkgbcO0IGjDrG5oIOG7lW4gxJHhu4tuaC4NCg0KVMOzbSBs4bqhaSwga+G6v3QgcXXhuqMgdOG7qyBtw7QgaMOsbmggY2xvZ2xvZyB0aeG6v3AgdOG7pWMga2jhurNuZyDEkeG7i25oIHLhurFuZyBi4bqjbyBow6BuaCBsw6AgbeG7mXQgeeG6v3UgdOG7kSDhuqNuaCBoxrDhu59uZyByw7UgcuG7h3QgxJHhur9uIGjDoG5oIHZpIG11YSB4ZSBj4bunYSBraMOhY2ggaMOgbmcuIFbhu5tpIGjDoG0gbGnDqm4ga+G6v3QgxJHhurdjIHRow7ksIGNsb2dsb2cgxJHhurdjIGJp4buHdCB0aMOtY2ggaOG7o3Aga2hpIHBow6JuIHBo4buRaSB4w6FjIHN14bqldCBraMO0bmcgxJHhu5FpIHjhu6luZywgdsOgIGPDsyB0aOG7gyB4ZW0gbMOgIG3hu5l0IGzhu7FhIGNo4buNbiB0aGF5IHRo4bq/IGjhu691IMOtY2ggdHJvbmcgcGjDom4gdMOtY2ggaMOgbmggdmkgdGnDqnUgZMO5bmcuDQoNCg0KIyMgNC41IFBow6JuIHTDrWNoIGdpw6EgY+G6oyB4ZSDhuqNuaCBoxrDhu59uZyDEkeG6v24gcXV54bq/dCDEkeG7i25oIG11YSB4ZQ0KDQojIyMgNC41LjEgVGjhu5FuZyBrw6ogbcO0IHThuqMgcHJpY2VfdXNkIHRoZW8gdOG7q25nIG5ow7NtIHB1cmNoYXNlX2RlY2lzaW9uDQoNCmBgYHtyfQ0KZGF0YSAlPiUNCiAgZ3JvdXBfYnkocHVyY2hhc2VfZGVjaXNpb24pICU+JQ0KICBzdW1tYXJpc2UoDQogICAgbiA9IG4oKSwNCiAgICBtaW4gPSBtaW4ocHJpY2VfdXNkLCBuYS5ybSA9IFRSVUUpLA0KICAgIFExID0gcXVhbnRpbGUocHJpY2VfdXNkLCAwLjI1LCBuYS5ybSA9IFRSVUUpLA0KICAgIG1lZGlhbiA9IG1lZGlhbihwcmljZV91c2QsIG5hLnJtID0gVFJVRSksDQogICAgbWVhbiA9IG1lYW4ocHJpY2VfdXNkLCBuYS5ybSA9IFRSVUUpLA0KICAgIFEzID0gcXVhbnRpbGUocHJpY2VfdXNkLCAwLjc1LCBuYS5ybSA9IFRSVUUpLA0KICAgIG1heCA9IG1heChwcmljZV91c2QsIG5hLnJtID0gVFJVRSksDQogICAgc2QgPSBzZChwcmljZV91c2QsIG5hLnJtID0gVFJVRSkNCiAgKQ0KYGBgDQoNCmBgYHtyfQ0KYm94cGxvdChwcmljZV91c2QgfiBwdXJjaGFzZV9kZWNpc2lvbiwNCiAgICAgICAgZGF0YSA9IGRhdGEsDQogICAgICAgIG1haW4gPSAiU28gc8OhbmggZ2nDoSB4ZSBnaeG7r2EgY8OhYyBuaMOzbSBxdXnhur90IMSR4buLbmggbXVhIiwNCiAgICAgICAgeGxhYiA9ICJQdXJjaGFzZSBEZWNpc2lvbiIsDQogICAgICAgIHlsYWIgPSAiR2nDoSB4ZSAoVVNEKSIsDQogICAgICAgIGNvbCA9IGMoInRvbWF0byIsICJza3libHVlIikpDQpgYGANCg0KQuG6o25nIHRo4buRbmcga8OqIG3DtCB04bqjIGNobyBiaeG6v24gZ2nDoSB4ZSB0aGVvIGhhaSBuaMOzbSBxdXnhur90IMSR4buLbmggbXVhIChZRVMpIHbDoCBraMO0bmcgbXVhIChOTykgY2hvIHRo4bqleSBt4bupYyBnacOhIHRydW5nIGLDrG5oIHbDoCBwaMOibiBi4buRIGdp4buvYSBoYWkgbmjDs20gdMawxqFuZyDEkeG7kWkgdMawxqFuZyDEkeG7k25nLiBD4bulIHRo4buDLCDhu58gbmjDs20ga2jDtG5nIG11YSB4ZSAoTk8pLCBnacOhIHhlIGPDsyB0cnVuZyBiw6xuaCBsw6AgNi42NDIgVVNELCB0cnVuZyB24buLIGzDoCA1LjAwMCBVU0QsIHbhu5tpIGtob+G6o25nIHThu6kgcGjDom4gduG7iyB04burIDIuMzAwIMSR4bq/biA5LjAwMCBVU0QuIFRyb25nIGtoaSDEkcOzLCBuaMOzbSBtdWEgeGUgKFlFUykgY8OzIGdpw6EgdHJ1bmcgYsOsbmggZ+G6p24gdMawxqFuZyDEkcawxqFuZyAoNi42MzYgVVNEKSwgbmjGsG5nIHRydW5nIHbhu4sgdGjhuqVwIGjGoW4sIGNo4buJIDQuMzUwIFVTRC4gxJBp4buBdSBuw6B5IGNobyB0aOG6pXkgbeG6t2MgZMO5IHRydW5nIGLDrG5oIGdpw6EgeGUgbMOgIGfhuqduIG5oxrAgbmhhdSBnaeG7r2EgaGFpIG5ow7NtLCBuaMawbmcgbmjhu69uZyBuZ8aw4budaSBxdXnhur90IMSR4buLbmggbXVhIGPDsyB4dSBoxrDhu5tuZyBtdWEgbmjhu69uZyBjaGnhur9jIHhlIOG7nyBt4bupYyBnacOhIHRo4bqlcCBoxqFuIHNvIHbhu5tpIG5ow7NtIGtow7RuZyBtdWEuDQoNCk3hu6ljIGdpw6EgdOG7kWkgxJFhIOG7nyBj4bqjIGhhaSBuaMOzbSDEkeG7gXUgcuG6pXQgY2FvIChn4bqnbiA1MC4wMDAgVVNEKSwgdHV5IG5oacOqbiDEkeG7mSBs4buHY2ggY2h14bqpbiDhu58gbmjDs20gbXVhIHhlIGzDoCA2Ljk5OSBVU0Qg4oCTIGNhbyBoxqFuIHNvIHbhu5tpIG5ow7NtIGtow7RuZyBtdWEgKDYuMDk1IFVTRCksIGNobyB0aOG6pXkgc+G7sSBwaMOibiB0w6FuIGdpw6EgdHJvbmcgbmjDs20gbXVhIGzhu5tuIGjGoW4uIE5nb8OgaSByYSwgbmjDs20gbXVhIGPDsyBnacOhIHhlIHRo4bqlcCBuaOG6pXQgdGjhuqVwIGjGoW4gbeG7mXQgY2jDunQgKDEuMDAwIFVTRCBzbyB24bubaSAxLjAwMCBVU0QpLCB2w6AgdOG7qSBwaMOibiB24buLIHRo4bupIG5o4bqldCAoUTEgPSAxLjk5OSkgY8WpbmcgdGjhuqVwIGjGoW4gc28gduG7m2kgbmjDs20ga2jDtG5nIG11YSAoUTEgPSAyLjMwMCkuDQoNCk5ow6xuIGNodW5nLCBr4bq/dCBxdeG6oyBjaG8gdGjhuqV5IGtow6FjaCBow6BuZyBjw7MgeHUgaMaw4bubbmcgbXVhIG5o4buvbmcgY2hp4bq/YyB4ZSBy4bq7IGjGoW4sIG5oxrBuZyBt4bupYyDEkeG7mSBkYW8gxJHhu5luZyB0cm9uZyBs4buxYSBjaOG7jW4gY2FvIGjGoW4sIHBo4bqjbiDDoW5oIHPhu7EgxJFhIGThuqFuZyB0cm9uZyBow6BuaCB2aSB0acOqdSBkw7luZy4gRMO5IGdpw6EgdHJ1bmcgYsOsbmggZ+G6p24gbmjGsCBraMO0bmcga2jDoWMgYmnhu4d0LCB2aeG7h2MgY2jDqm5oIGzhu4djaCDhu58gdHJ1bmcgduG7iyB2w6AgxJHhu5kgbOG7h2NoIGNodeG6qW4gY2hvIHRo4bqleSBuaMOzbSBtdWEgY8OzIHPhu7EgcGjDom4gaMOzYSByw7UgbsOpdCBoxqFuIHbhu4EgbeG7qWMgY2hpIHRy4bqjLCB04burIG5o4buvbmcgeGUgZ2nDoSBy4bqldCB0aOG6pXAgxJHhur9uIHhlIGNhbyBj4bqlcCwgdHJvbmcga2hpIG5ow7NtIGtow7RuZyBtdWEgdOG6rXAgdHJ1bmcgbmhp4buBdSBoxqFuIOG7nyBt4bupYyBnacOhIHRydW5nIGLDrG5oLg0KDQojIyMgNC41LjIgS2nhu4NtIMSR4buLbmggc+G7sSBraMOhYyBiaeG7h3QgdHJ1bmcgYsOsbmggZ2nhu69hIDIgbmjDs20gKFlFUy9OTykNCg0KS2nhu4NtIMSR4buLbmggc+G7sSBraMOhYyBiaeG7h3QgdHJ1bmcgYsOsbmggZ2nhu69hIDIgbmjDs20gKFlFUy9OTykgbeG7pWMgxJHDrWNoIGtp4buDbSB0cmEgeGVtIGdpw6EgdHJ1bmcgYsOsbmggY+G7p2EgeGUgZ2nhu69hIGhhaSBuaMOzbSBraMOhY2ggaMOgbmcg4oCTIG11YSB4ZSAoWUVTKSB2w6Aga2jDtG5nIG11YSB4ZSAoTk8pIOKAkyBjw7Mgc+G7sSBraMOhYyBiaeG7h3QgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqiBoYXkga2jDtG5nLg0KDQpgYGB7cn0NCiMgS2nhu4NtIMSR4buLbmggdC10ZXN0DQp0LnRlc3QocHJpY2VfdXNkIH4gcHVyY2hhc2VfZGVjaXNpb24sIGRhdGEgPSBkYXRhKQ0KYGBgDQoNCkdp4bqjIHRodXnhur90Og0KDQpI4oKAOiBLaMO0bmcgY8OzIHPhu7Ega2jDoWMgYmnhu4d0IHbhu4EgZ2nDoSB0cnVuZyBiw6xuaCB4ZSBnaeG7r2EgaGFpIG5ow7NtDQoNCkjigoE6IEPDsyBz4buxIGtow6FjIGJp4buHdCB24buBIGdpw6EgdHJ1bmcgYsOsbmggeGUgZ2nhu69hIGhhaSBuaMOzbQ0KDQpLaG/huqNuZyB0aW4gY+G6rXkgOTUlIGNobyBoaeG7h3Ugc+G7kSB0cnVuZyBiw6xuaDogKOKIkjEzMy4xNCzCoDE0Ni42NykNCg0KVHJ1bmcgYsOsbmggZ2nDoSB4ZToNCg0KTmjDs20gTk86IDYuNjQyIFVTRA0KDQpOaMOzbSBZRVM6IDYuNjM2IFVTRA0KDQpW4bubaSBnacOhIHRy4buLIHAgcuG6pXQgbOG7m24gKHAgPSAwLjkyNDUgPiAwLjA1KSwgdGEga2jDtG5nIMSR4bunIGLhurFuZyBjaOG7qW5nIMSR4buDIGLDoWMgYuG7jyBnaeG6oyB0aHV54bq/dCBI4oKALiDEkGnhu4F1IG7DoHkgY8OzIG5naMSpYSBsw6Aga2jDtG5nIGPDsyBz4buxIGtow6FjIGJp4buHdCBjw7Mgw70gbmdoxKlhIHRo4buRbmcga8OqIHbhu4EgZ2nDoSB0cnVuZyBiw6xuaCB4ZSBnaeG7r2EgaGFpIG5ow7NtIGtow6FjaCBow6BuZyBtdWEgdsOgIGtow7RuZyBtdWEuIEvhur90IHF14bqjIG7DoHkgY2hvIHRo4bqleSBt4bupYyBnacOhIHhlIGtow7RuZyBwaOG6o2kgbMOgIHnhur91IHThu5EgcGjDom4gYmnhu4d0IHLDtSByw6BuZyBow6BuaCB2aSBtdWEgeGUgdHJvbmcgZOG7ryBsaeG7h3UgaGnhu4duIGPDsy4NCg0KIyMjIDQuNS4zIMav4bubYyBsxrDhu6NuZyBraG/huqNuZyB0aW4gY+G6rXkgY2hvIHRydW5nIGLDrG5oIHByaWNlX3VzZCB0aGVvIHThu6tuZyBuaMOzbQ0KDQpCw6BpIHRvw6FuOg0KR2nhuqMgc+G7rSBjaMO6bmcgdGEgcXVhbiB0w6JtIMSR4bq/biBnacOhIHRy4buLIHRydW5nIGLDrG5oIGPhu6dhIGJp4bq/biBwcmljZV91c2QgxJHhu5FpIHbhu5tpIG5ow7NtIGtow6FjaCBow6BuZyDEkcOjIHF1eeG6v3QgxJHhu4tuaCBtdWEgeGUgKHThu6ljIHB1cmNoYXNlX2RlY2lzaW9uID0gIllFUyIpLiBUYSBtdeG7kW4gxrDhu5tjIGzGsOG7o25nIGtob+G6o25nIGdpw6EgdHLhu4sgbcOgIHRydW5nIGLDrG5oIGdpw6EgeGUgdGjhuq10IHPhu7EgdHJvbmcgdOG7lW5nIHRo4buDIChwb3B1bGF0aW9uIG1lYW4pIG7hurFtIHRyb25nIMSRw7MsIHbhu5tpIMSR4buZIHRpbiBj4bqteSA5NSUuDQoNCmBgYHtyfQ0KbGlicmFyeShEZXNjVG9vbHMpDQpNZWFuQ0koZGF0YSRwcmljZV91c2RbZGF0YSRwdXJjaGFzZV9kZWNpc2lvbiA9PSAiWUVTIl0pDQpgYGANCg0KVuG7m2kgxJHhu5kgdGluIGPhuq15IDk1JSwgdGEgY8OzIHRo4buDIGto4bqzbmcgxJHhu4tuaCBy4bqxbmcgZ2nDoSB0cnVuZyBiw6xuaCB0aOG7sWMgc+G7sSBj4bunYSB4ZSDEkcaw4bujYyBtdWEgYuG7n2kga2jDoWNoIGjDoG5nIHRyb25nIG5ow7NtIFlFUyBu4bqxbSB0cm9uZyBraG/huqNuZyB04burIDYuNTE3LDkwIMSR4bq/biA2Ljc1MywyOSBVU0QuIEtob+G6o25nIHRpbiBj4bqteSBraMOhIGjhurlwLCBwaOG6o24gw6FuaCDEkeG7mSBjaMOtbmggeMOhYyBjYW8gbmjhu50gY+G7oSBt4bqrdSBs4bubbi4gxJBp4buBdSBuw6B5IGNobyBwaMOpcCB0YSDEkcawYSByYSBuaOG6rW4gxJHhu4tuaCDEkcOhbmcgdGluIGPhuq15IHbhu4EgbeG7qWMgY2hpIHRpw6p1IHRydW5nIGLDrG5oIGPhu6dhIG5ow7NtIGtow6FjaCBow6BuZyDEkcOjIMSRxrBhIHJhIHF1eeG6v3QgxJHhu4tuaCBtdWEgeGUuDQogVGnhur9wIHRoZW8gxJHhu4Mgxq/hu5tjIGzGsOG7o25nIHRydW5nIGLDrG5oIHThu5VuZyB0aOG7gyBj4bunYSBnacOhIHhlIChwcmljZV91c2QpIMSR4buRaSB24bubaSBraMOhY2ggaMOgbmcga2jDtG5nIG11YSB4ZSwgduG7m2kgxJHhu5kgdGluIGPhuq15IDk1JS4NCg0KYGBge3J9DQpNZWFuQ0koZGF0YSRwcmljZV91c2RbZGF0YSRwdXJjaGFzZV9kZWNpc2lvbiA9PSAiTk8iXSkNCmBgYA0KDQpW4bubaSDEkeG7mSB0aW4gY+G6rXkgOTUlLCB0YSBjw7MgdGjhu4Mga+G6v3QgbHXhuq1uIHLhurFuZyBnacOhIHRydW5nIGLDrG5oIHRo4buxYyBz4buxIGPhu6dhIHhlIHRyb25nIG5ow7NtIGtow6FjaCBow6BuZyBraMO0bmcgbXVhIHhlIG7hurFtIHRyb25nIGtob+G6o25nIHThu6sgNi41NjYsNzIgVVNEIMSR4bq/biA2LjcxNyw5OSBVU0QuIEtob+G6o25nIHRpbiBj4bqteSBo4bq5cCBjaG8gdGjhuqV5IGvhur90IHF14bqjIMaw4bubYyBsxrDhu6NuZyBjw7MgxJHhu5kgY2jDrW5oIHjDoWMgY2FvIG5o4budIGPhu6EgbeG6q3UgbOG7m24uIEtoaSBzbyBzw6FuaCB24bubaSBuaMOzbSBtdWEgeGUsIGPDsyB0aOG7gyB0aOG6pXkgcuG6sW5nIGdpw6EgdHJ1bmcgYsOsbmggZ2nhu69hIGhhaSBuaMOzbSBsw6Aga2jDoSB0xrDGoW5nIMSR4buTbmcsIHPhu7Ega2jDoWMgYmnhu4d0IHLhuqV0IG5o4buPIHbDoCBraMO0bmcgbWFuZyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ogxJHDoW5nIGvhu4Mg4oCTIHBow7kgaOG7o3AgduG7m2kga+G6v3QgcXXhuqMga2nhu4NtIMSR4buLbmggxJHDoyB0csOsbmggYsOgeSB0csaw4bubYyDEkcOzLg0KDQoNCiMjIyA0LjUuNCBNw7QgaMOsbmggaOG7k2kgcXV5IGNobyBk4buvIGxp4buHdSBuaOG7iyBwaMOibg0KDQpUcm9uZyBxdcOhIHRyw6xuaCBwaMOibiB0w61jaCwgYmnhur9uIHByaWNlX3VzZCAoZ2nDoSB4ZSkgxJHGsOG7o2MgeGVtIHjDqXQgbmjGsCBt4buZdCBiaeG6v24gxJHhu5ljIGzhuq1wIHRp4buBbSBuxINuZyDhuqNuaCBoxrDhu59uZyDEkeG6v24gcXV54bq/dCDEkeG7i25oIG11YSB4ZSBj4bunYSBraMOhY2ggaMOgbmcuIFR1eSBuaGnDqm4sIGtoaSDEkcawYSB0cuG7sWMgdGnhur9wIGJp4bq/biBwcmljZV91c2QgdsOgbyBtw7QgaMOsbmggaOG7k2kgcXV5IGxvZ2lzdGljLCBo4buHIHPhu5EgxrDhu5tjIGzGsOG7o25nIHRodSDEkcaw4bujYyBraMO0bmcgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqiB2w6AgZ2nDoSB0cuG7iyBwIHLhuqV0IGzhu5tuIChwID4gMC45KSwgY2hvIHRo4bqleSBnacOhIHhlIGtow7RuZyBjw7MgbeG7kWkgbGnDqm4gaOG7hyByw7UgcsOgbmcgduG7m2kgeMOhYyBzdeG6pXQgbXVhIHhlIHRyb25nIGThuqFuZyB0dXnhur9uIHTDrW5oIGJhbiDEkeG6p3UuDQoNCk3hurd0IGtow6FjLCB2aeG7h2Mga2jhuqNvIHPDoXQgcGjDom4gcGjhu5FpIGPhu6dhIHByaWNlX3VzZCBxdWEgYmnhu4N1IMSR4buTIGhpc3RvZ3JhbSBjaG8gdGjhuqV5IGJp4bq/biBuw6B5IGPDsyBwaMOibiBwaOG7kWkgbOG7h2NoIHBo4bqjaSBy4bqldCBt4bqhbmgsIHbhu5tpIG5oaeG7gXUgZ2nDoSB0cuG7iyBs4bubbiB2xrDhu6N0IHRy4buZaSB2w6Aga2hv4bqjbmcgYmnhur9uIHRoacOqbiBy4buZbmcuIMSQaeG7gXUgbsOgeSBsw6BtIGdp4bqjbSBoaeG7h3UgcXXhuqMgY+G7p2EgY8OhYyBtw7QgaMOsbmggaOG7k2kgcXV5IHR1eeG6v24gdMOtbmggdOG7lW5nIHF1w6F0IChHTE0pLCB24buRbiBnaeG6oyDEkeG7i25oIHLhurFuZyBt4buRaSBsacOqbiBo4buHIGdp4buvYSBiaeG6v24gxJHhu5ljIGzhuq1wIHbDoCBsacOqbiBr4bq/dCBsb2dpdCAoaG/hurdjIHByb2JpdCwgY2xvZ2xvZykgbMOgIHR1eeG6v24gdMOtbmggaG/hurdjIGfhuqduIHR1eeG6v24gdMOtbmguDQoNCkRvIMSRw7MsIMSR4buDIGzDoG0gY2hvIHBow6JuIHBo4buRaSB0cuG7nyBuw6puIMSR4buRaSB44bupbmcgaMahbiB2w6AgZ2nhuqNtIOG6o25oIGjGsOG7n25nIGPhu6dhIGPDoWMgZ2nDoSB0cuG7iyBuZ2/huqFpIGxhaSwgYmnhur9uIHByaWNlX3VzZCDEkcaw4bujYyBiaeG6v24gxJHhu5VpIGLhurFuZyBow6BtIGxvZ2FyaXQsIGPhu6UgdGjhu4MgbMOgIGxvZygxICsgcHJpY2VfdXNkKS4gQ8OhY2ggYmnhur9uIMSR4buVaSBuw6B5IHbhu6thIMSR4bqjbSBi4bqjbyB44butIGzDvSDEkcaw4bujYyBjw6FjIGdpw6EgdHLhu4sgYuG6sW5nIDAsIHbhu6thIGdpw7pwOg0KDQpDaHXhuqluIGjDs2EgcGjDom4gcGjhu5FpIGPhu6dhIGJp4bq/biDEkeG6p3UgdsOgbywgZ2nDunAgbsOzIGfhuqduIGjGoW4gduG7m2kgcGjDom4gcGjhu5FpIGNodeG6qW47DQoNCkdp4bqjbSDhuqNuaCBoxrDhu59uZyBj4bunYSBjw6FjIGdpw6EgdHLhu4sgY+G7sWMgbOG7m24sIGdpw7pwIG3DtCBow6xuaCDhu5VuIMSR4buLbmggaMahbjsNCg0KVMSDbmcga2jhuqMgbsSDbmcgcGjDoXQgaGnhu4duIG3hu5FpIHF1YW4gaOG7hyBwaGkgdHV54bq/biBnaeG7r2EgZ2nDoSB2w6AgeMOhYyBzdeG6pXQgbXVhOw0KDQpD4bqjaSB0aGnhu4duIMSR4buZIHBow7kgaOG7o3AgbcO0IGjDrG5oIGPFqW5nIG5oxrAgw70gbmdoxKlhIHRo4buRbmcga8OqIGPhu6dhIGPDoWMgaOG7hyBz4buRIMaw4bubYyBsxrDhu6NuZy4NCg0KKipNw7QgaMOsbmggbG9naXQqKg0KDQpgYGB7cn0NCmxvZ2l0NCA8LSBnbG0oZmFjdG9yKHB1cmNoYXNlX2RlY2lzaW9uKSB+IGxvZzFwKHByaWNlX3VzZCksIGRhdGEgPSBkYXRhLCBmYW1pbHkgPSBiaW5vbWlhbChsaW5rID0gImxvZ2l0IikpDQpzdW1tYXJ5KGxvZ2l0NCkNCmBgYA0KDQpE4buxYSB0csOqbiBr4bq/dCBxdeG6oyBo4buTaSBxdXkgbG9naXN0aWMsIHRhIHRodSDEkcaw4bujYyBwaMawxqFuZyB0csOsbmggxrDhu5tjIGzGsOG7o25nIG5oxrAgc2F1Og0KDQokJA0KXGxvZ1xsZWZ0KFxmcmFje3B9ezEgLSBwfVxyaWdodCkgPSAtMC4wNTc0NCAtIDAuMDY1OTUgXGNkb3QgXGxvZygxICsgXHRleHR7cHJpY2VfdXNkfSkNCiQkDQoNClRyb25nIMSRw7MsIFwocFwpIGzDoCB4w6FjIHN14bqldCBraMOhY2ggaMOgbmcgcXV54bq/dCDEkeG7i25oIG11YSB4ZS4NCg0KSOG7hyBz4buRIGPhu6dhIGJp4bq/biBsb2coMSArIHByaWNlX3VzZCkgY8OzIGdpw6EgdHLhu4sgw6JtICgtMC4wNjU5NSkgdsOgIGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ogcuG6pXQgY2FvIHbhu5tpIHAtdmFsdWUgPSAxLjk1ZS0xMCAoPCAwLjAwMSksIGNobyB0aOG6pXkgbeG7kWkgcXVhbiBo4buHIG5naOG7i2NoIGNoaeG7gXUgZ2nhu69hIGdpw6EgeGUgdsOgIHjDoWMgc3XhuqV0IG11YS4gS2hpIGxvZygxICsgcHJpY2VfdXNkKSB0xINuZyB0aMOqbSAxIMSRxqFuIHbhu4ssIGxvZy1vZGRzIGPhu6dhIHZp4buHYyBtdWEgeGUgZ2nhuqNtIHRydW5nIGLDrG5oIDAuMDY1OTUgxJHGoW4gduG7iy4gT2RkcyByYXRpbyB0xrDGoW5nIOG7qW5nIGzDoCBleHAoLTAuMDY1OTUpIOKJiCAwLjkzNiwgbmdoxKlhIGzDoCBt4buXaSBraGkgZ2nDoSB4ZSB0xINuZyB0aGVvIHRoYW5nIGxvZywga2jhuqMgbsSDbmcgbXVhIHhlIGdp4bqjbSBraG/huqNuZyA2LjQlLiBWaeG7h2MgYmnhur9uIMSR4buVaSBsb2cgxJHDoyBsw6BtIGNobyBiaeG6v24gdHLhu58gbsOqbiBjw7Mgw70gbmdoxKlhIGjGoW4gdHJvbmcgbcO0IGjDrG5oIHNvIHbhu5tpIGThuqFuZyBiYW4gxJHhuqd1IGNoxrBhIGJp4bq/biDEkeG7lWkuDQoNCg0KKipNw7QgaMOsbmggcHJvYml0KioNCg0KRMaw4bubaSDEkcOieSBsw6AgcGjhuqduIG5o4bqtbiB4w6l0IGvhur90IHF14bqjIGjhu5NpIHF1eSBQcm9iaXQgZ2nhu69hIHF1eeG6v3QgxJHhu4tuaCBtdWEgeGUgdsOgIGdpw6EgeGUgKHByaWNlX3VzZCk6DQoNCmBgYHtyfQ0KcHJvYml0NCA8LSBnbG0oZmFjdG9yKHB1cmNoYXNlX2RlY2lzaW9uKSB+IGxvZzFwKHByaWNlX3VzZCksZmFtaWx5ID0gYmlub21pYWwobGluayA9ICJwcm9iaXQiKSxkYXRhID0gZGF0YSkNCnN1bW1hcnkocHJvYml0NCkNCmBgYA0KDQoNClBoxrDGoW5nIHRyw6xuaCBo4buTaSBxdXkgcHJvYml0IMaw4bubYyBsxrDhu6NuZyDEkcaw4bujYyB2aeG6v3QgbmjGsCBzYXU6DQoNCiQkDQpcUGhpXnstMX0ocCkgPSAtMC4wNDEwMzcgLSAwLjA0MDQxNyBcY2RvdCBcbG9nKDEgKyBcdGV4dHtwcmljZV91c2R9KQ0KJCQNCg0KVHJvbmcgxJHDsywgXChwXCkgbMOgIHjDoWMgc3XhuqV0IGtow6FjaCBow6BuZyBxdXnhur90IMSR4buLbmggbXVhIHhlLCB2w6AgXChcUGhpXnstMX0ocClcKSBsw6AgaMOgbSBuZ2jhu4tjaCDEkeG6o28gY+G7p2EgcGjDom4gcGjhu5FpIGNodeG6qW4gdMOtY2ggbMWpeSAocHJvYml0IGxpbmsgZnVuY3Rpb24pLg0KDQpNw7QgaMOsbmggaOG7k2kgcXV5IHByb2JpdCBz4butIGThu6VuZyBiaeG6v24gbG9nKDEgKyBwcmljZV91c2QpIGNobyB0aOG6pXkgaOG7hyBz4buRIMaw4bubYyBsxrDhu6NuZyBsw6AgLTAuMDQwNDE3IHbhu5tpIGdpw6EgdHLhu4sgcCBy4bqldCBuaOG7jyAoMi4zMmUtMTAgPCAwLjAwMSksIGNobyB0aOG6pXkgYmnhur9uIG7DoHkgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqiBy4bqldCBjYW8uIEjhu4cgc+G7kSDDom0gY2jhu4kgcmEgcuG6sW5nIGPDsyBt4buRaSBxdWFuIGjhu4cgbmdo4buLY2ggY2hp4buBdSBnaeG7r2EgZ2nDoSB4ZSAoc2F1IGJp4bq/biDEkeG7lWkgbG9nKSB2w6AgeMOhYyBzdeG6pXQga2jDoWNoIGjDoG5nIHF1eeG6v3QgxJHhu4tuaCBtdWEuIEPhu6UgdGjhu4MsIGtoaSBsb2coMSArIHByaWNlX3VzZCkgdMSDbmcgdGjDqm0gbeG7mXQgxJHGoW4gduG7iywgeMOhYyBzdeG6pXQgbXVhIHhlIGPDsyB4dSBoxrDhu5tuZyBnaeG6o20uIE3hurdjIGTDuSB2aeG7h2MgZ2nhuqNpIHRow61jaCDEkeG7i25oIGzGsOG7o25nIHRyb25nIG3DtCBow6xuaCBwcm9iaXQga2jDtG5nIHRy4buxYyB0aeG6v3AgdGjDtG5nIHF1YSBvZGRzIHJhdGlvIG5oxrAgdHJvbmcgbG9naXN0aWMsIG5oxrBuZyBoxrDhu5tuZyB0w6FjIMSR4buZbmcgdsOgIG3hu6ljIMSR4buZIMO9IG5naMSpYSBj4bunYSBiaeG6v24gduG6q24gcsO1IHLDoG5nIHbDoCBuaOG6pXQgcXXDoW4uIFNvIHPDoW5oIHbhu5tpIG3DtCBow6xuaCB0csaw4bubYyDEkcOzIChsb2dpdCksIHRhIHRo4bqleSBtw7QgaMOsbmggcHJvYml0IGNobyBr4bq/dCBxdeG6oyB0xrDGoW5nIHThu7EgY+G6oyB24buBIGThuqV1IHbDoCBt4bupYyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6osIGNobyB0aOG6pXkgdMOtbmgg4buVbiDEkeG7i25oIHbDoCDEkeG7mSB0aW4gY+G6rXkgY2FvIGPhu6dhIGvhur90IGx14bqtbi4gTmdvw6BpIHJhLCBSZXNpZHVhbCBkZXZpYW5jZSBnaeG6o20gdOG7qyA1MDAxNiB4deG7kW5nIDQ5OTc2IHbDoCBBSUMgZ2nhuqNtIGPDsm4gNDk5ODAsIGNo4bupbmcgdOG7jyBtw7QgaMOsbmggY8OzIGPhuqNpIHRoaeG7h24gbmjhurkgc28gduG7m2kgbcO0IGjDrG5oIHLhu5duZy4NCg0KKipNw7QgaMOsbmggY2xvZ2xvZyoqDQoNCmBgYHtyfQ0KY2xvZ2xvZzQgPC0gZ2xtKGZhY3RvcihwdXJjaGFzZV9kZWNpc2lvbikgfiBsb2cxcChwcmljZV91c2QpLGZhbWlseSA9IGJpbm9taWFsKGxpbmsgPSAiY2xvZ2xvZyIpLCBkYXRhID0gZGF0YSkNCnN1bW1hcnkoY2xvZ2xvZzQpDQpgYGANCg0KUGjGsMahbmcgdHLDrG5oIGjhu5NpIHF1eSBjbG9nbG9nIMaw4bubYyBsxrDhu6NuZyDEkcaw4bujYyB2aeG6v3QgbmjGsCBzYXU6DQoNCiQkDQpcbG9nKC1cbG9nKDEgLSBwKSkgPSAtMC4zODYxNzUgLSAwLjA1MzU4MyBcY2RvdCBcbG9nKDEgKyBcdGV4dHtwcmljZV91c2R9KQ0KJCQNCg0KVHJvbmcgxJHDsywgXChwXCkgbMOgIHjDoWMgc3XhuqV0IGtow6FjaCBow6BuZyBxdXnhur90IMSR4buLbmggbXVhIHhlLCB2w6AgYmnhu4N1IHRo4bupYyBiw6puIHRyw6FpIGzDoCBow6BtIGxpw6puIGvhur90IGNvbXBsZW1lbnRhcnkgbG9nLWxvZy4NCg0KTcO0IGjDrG5oIGjhu5NpIHF1eSBjbG9nbG9nIHPhu60gZOG7pW5nIGJp4bq/biBsb2coMSArIHByaWNlX3VzZCkgY2hvIHRo4bqleSBj4bqjIGhhaSBo4buHIHPhu5EgxJHhu4F1IGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ogY2FvIChwIDwgMC4wMDEpLiBD4bulIHRo4buDLCBo4buHIHPhu5EgY+G7p2EgbG9nKDEgKyBwcmljZV91c2QpIGzDoCAtMC4wNTM1ODMgduG7m2kgZ2nDoSB0cuG7iyBwID0gMS4zNmUtMTAsIGNobyB0aOG6pXkgY8OzIG3hu5FpIHF1YW4gaOG7hyBuZ2jhu4tjaCBjaGnhu4F1IHLDtSBy4buHdCBnaeG7r2EgZ2nDoSB4ZSAoc2F1IGtoaSBsb2cgaMOzYSkgdsOgIHjDoWMgc3XhuqV0IG11YS4gSOG7hyBz4buRIMOibSBjaG8gdGjhuqV5IHLhurFuZyBraGkgbG9nKDEgKyBwcmljZV91c2QpIHTEg25nIGzDqm4sIHjDoWMgc3XhuqV0IG11YSB4ZSBnaeG6o20sIHBow7kgaOG7o3AgduG7m2kga+G7syB24buNbmcgdGjhu7FjIHThur8gcuG6sW5nIHhlIGPDoG5nIMSR4bqvdCB0aMOsIGto4bqjIG7Eg25nIG11YSBjw6BuZyB0aOG6pXAuIE3hurdjIGTDuSBtw7QgaMOsbmggY2xvZ2xvZyBraMO0bmcgZGnhu4VuIGdp4bqjaSB0cuG7sWMgdGnhur9wIHF1YSBvZGRzIG5oxrAgbG9naXN0aWMsIG5oxrBuZyBoxrDhu5tuZyB0w6FjIMSR4buZbmcgdsOgIG3hu6ljIMO9IG5naMSpYSBsw6AgbmjhuqV0IHF1w6FuIHbhu5tpIGPDoWMgbcO0IGjDrG5oIGtow6FjLiBOZ2/DoGkgcmEsIGRldmlhbmNlIGdp4bqjbSBuaOG6uSAodOG7qyA1MDAxNiB4deG7kW5nIDQ5OTc2KSB2w6AgQUlDIGdp4bqjbSBjw7JuIDQ5OTgwLCBjaG8gdGjhuqV5IG3DtCBow6xuaCBjw7MgY+G6o2kgdGhp4buHbiBuaOG6uSBzbyB24bubaSBtw7QgaMOsbmggcuG7l25nLiBTbyBzw6FuaCB24bubaSBjw6FjIG3DtCBow6xuaCBsb2dpdCB2w6AgcHJvYml0LCBr4bq/dCBxdeG6oyBj4bunYSBjbG9nbG9nIHTGsMahbmcgxJHhu5FpIHTGsMahbmcgxJHhu5NuZywgY2hvIHRo4bqleSDhuqNuaCBoxrDhu59uZyBj4bunYSBnacOhIHhlIHNhdSBsb2cgbMOgIOG7lW4gxJHhu4tuaCB2w6AgxJHDoW5nIHRpbiBj4bqteSBi4bqldCBr4buDIGzhu7FhIGNo4buNbiBow6BtIGxpw6puIGvhur90Lg0KDQojIyA0LjYgUGjDom4gdMOtY2ggxJFhIGJp4bq/biDhuqNuaCBoxrDhu59uZyDEkeG6v24gcXV54bq/dCDEkeG7i25oIG11YSB4ZSANCg0KIyMjIDQuNi4xIE3DtCBow6xuaCBsb2dpdA0KDQpExrDhu5tpIMSRw6J5IGzDoCBwaOG6p24gbmjhuq1uIHjDqXQga+G6v3QgcXXhuqMgbcO0IGjDrG5oIGjhu5NpIHF1eSBsb2dpc3RpYyDEkWEgYmnhur9uIGdp4buvYSBxdXnhur90IMSR4buLbmggbXVhIHhlIChwdXJjaGFzZV9kZWNpc2lvbikgdsOgIGPDoWMgYmnhur9uIGdp4bqjaSB0aMOtY2g6IHRyYW5zbWlzc2lvbiwgc3RhdGUsIGhhc193YXJyYW50eSwgdsOgIHByaWNlX3VzZA0KDQpgYGB7cn0NCmxvZ2l0NSA8LSBnbG0oZmFjdG9yKHB1cmNoYXNlX2RlY2lzaW9uKSB+IHRyYW5zbWlzc2lvbiArIHN0YXRlICsgaGFzX3dhcnJhbnR5ICsgcHJpY2VfdXNkLCBkYXRhID0gZGF0YSwgZmFtaWx5ID0gYmlub21pYWwobGluayA9ICJsb2dpdCIpKQ0Kc3VtbWFyeShsb2dpdDUpDQpgYGANCg0KDQpQaMawxqFuZyB0csOsbmggaOG7k2kgcXV5IGxvZ2lzdGljIMaw4bubYyBsxrDhu6NuZyBjw7MgZOG6oW5nOg0KDQokJA0KXGxvZ1xsZWZ0KCBcZnJhY3tcbXV9ezEgLSBcbXV9IFxyaWdodCkgPSAtMC42ODgyIC0gMC4yMjcwIFxjZG90IFx0ZXh0e3RyYW5zbWlzc2lvbn1fe1x0ZXh0e21lY2hhbmljYWx9fSArIDIuMzY2IFxjZG90IFx0ZXh0e3N0YXRlfV97XHRleHR7bmV3fX0gKyAwLjM1OTAgXGNkb3QgXHRleHR7c3RhdGV9X3tcdGV4dHtvd25lZH19ICsgMS40MTkgXGNkb3QgXHRleHR7aGFzX3dhcnJhbnR5fV97XHRleHR7VFJVRX19IC0gMi40MzEgXHRpbWVzIDEwXnstNX0gXGNkb3QgXHRleHR7cHJpY2VfdXNkfQ0KJCQNCg0KVHJvbmcgxJHDsywgJFxtdSQgbMOgIHjDoWMgc3XhuqV0IGtow6FjaCBow6BuZyBxdXnhur90IMSR4buLbmggbXVhIHhlIChwdXJjaGFzZVxfZGVjaXNpb24gPSAiWUVTIikuDQoNCi0gSOG7hyBz4buRIGNo4bq3biAtMC42ODgyOiBsw6AgbG9nLW9kZHMgbXVhIHhlIGNobyBraMOhY2ggaMOgbmcgdGh14buZYyBuaMOzbSB0aGFtIGNoaeG6v3UgLSBz4butIGThu6VuZyBo4buZcCBz4buRIHThu7EgxJHhu5luZywgc3RhdGUgPSAiZW1lcmdlbmN5Iiwga2jDtG5nIGPDsyBi4bqjbyBow6BuaCwgdsOgIGdpw6EgeGUgYuG6sW5nIDAgKMO9IG5naMSpYSBr4bu5IHRodeG6rXQpLg0KDQotIHRyYW5zbWlzc2lvbi1tZWNoYW5pY2FsID0gLTAuMjI3MCAocCA8IDAuMDAxKToga2jDoWNoIGjDoG5nIMSR4buRaSB24bubaSB4ZSBjw7MgaOG7mXAgc+G7kSBjxqEga2jDrSBjw7MgbG9nLW9kZHMgbXVhIHhlIHRo4bqlcCBoxqFuIMSRw6FuZyBr4buDIHNvIHbhu5tpIHhlIHPhu5EgdOG7sSDEkeG7mW5nLiDEkGnhu4F1IG7DoHkgY2hvIHRo4bqleSB4dSBoxrDhu5tuZyDGsHUgdGnDqm4gaOG7mXAgc+G7kSB04buxIMSR4buZbmcgdHJvbmcgaMOgbmggdmkgbXVhIHhlLg0KDQotIHN0YXRlbmV3ID0gMi4zNjYgKHAgPCAwLjAwMSk6IGtow6FjaCBow6BuZyBt4bubaSBjw7MgbG9nLW9kZHMgbXVhIHhlIGNhbyBoxqFuIG5ow7NtICJlbWVyZ2VuY3kiIMSR4bq/biAyLjM2NiDEkcahbiB24buLLCB0aOG7gyBoaeG7h24gbmjDs20ga2jDoWNoIGjDoG5nIG11YSB4ZSBt4bubaSBsw6AgcGjDom4ga2jDumMgdGnhu4FtIG7Eg25nIG5o4bqldC4NCg0KLSBzdGF0ZW93bmVkID0gMC4zNTkwIChwIOKJiCAwLjAwMik6IGtow6FjaCBow6BuZyB0aHXhu5ljIG5ow7NtICJvd25lZCIgY8WpbmcgY8OzIHjDoWMgc3XhuqV0IG11YSBjYW8gaMahbiBuaMOzbSAiZW1lcmdlbmN5IiwgbmjGsG5nIG3hu6ljIHTEg25nIGtoacOqbSB04buRbiBoxqFuIHNvIHbhu5tpIG5ow7NtICJuZXciLg0KDQotIGhhc193YXJyYW50eVRSVUUgPSAxLjQxOSAocCA8IDAuMDAxKTogeGUgY8OzIGLhuqNvIGjDoG5oIGdpw7pwIHTEg25nIGxvZy1vZGRzIG11YSB4ZSBsw6puIMSRw6FuZyBr4buDLiDEkGnhu4F1IG7DoHkgcGjhuqNuIMOhbmggdOG6p20gcXVhbiB0cuG7jW5nIGPhu6dhIHnhur91IHThu5EgYuG6o28gaMOgbmggdHJvbmcgcXV54bq/dCDEkeG7i25oIHRpw6p1IGTDuW5nLg0KDQotIHByaWNlX3VzZCA9IC0yLjQzMSDDlyAxMOKBu+KBtSAocCA8IDAuMDAxKToga2hpIGdpw6EgeGUgdMSDbmcgdGjDqm0gMSDEkcahbiB24buLIChVU0QpLCBsb2ctb2RkcyBtdWEgeGUgZ2nhuqNtIG5o4bq5LiBUdXkgZ2nDoSB0cuG7iyBo4buHIHPhu5Egbmjhu48sIG5oxrBuZyB24bqrbiBjw7Mgw70gbmdoxKlhIHRo4buRbmcga8OqLCBjaG8gdGjhuqV5IGdpw6EgeGUgY8OzIOG6o25oIGjGsOG7n25nIG5naOG7i2NoIGNoaeG7gXUgdOG7m2kgeMOhYyBzdeG6pXQgbXVhIGtoaSBjw6FjIHnhur91IHThu5Ega2jDoWMgxJHGsOG7o2Mga2nhu4NtIHNvw6F0IMSR4buTbmcgdGjhu51pLg0KDQotIFJlc2lkdWFsIGRldmlhbmNlIGdp4bqjbSB04burIDUwMDE2IHh14buRbmcgNDkyNjU6IG3DtCBow6xuaCDEkcOjIGdp4bqjaSB0aMOtY2ggxJHGsOG7o2MgbeG7mXQgcGjhuqduIHBoxrDGoW5nIHNhaSwgY2hvIHRo4bqleSBjw6FjIGJp4bq/biDEkcawYSB2w6BvIGPDsyDDvSBuZ2jEqWEuDQoNCi0gQUlDID0gNDkyNzc6IHRo4bqlcCBoxqFuIMSRw6FuZyBr4buDIHNvIHbhu5tpIG3DtCBow6xuaCDEkcahbiBiaeG6v24sIHRo4buDIGhp4buHbiBt4bupYyDEkeG7mSBwaMO5IGjhu6NwIGNhbyBoxqFuLg0KDQoNCk3DtCBow6xuaCBo4buTaSBxdXkgbG9naXN0aWMgduG7m2kgbmhp4buBdSBiaeG6v24gZ2nhuqNpIHRow61jaCBjaG8gdGjhuqV5IHLhurFuZyAqKmPDoWMgeeG6v3UgdOG7kSB24buBIHRy4bqhbmcgdGjDoWkga2jDoWNoIGjDoG5nLCBsb+G6oWkgaOG7mXAgc+G7kSwgYuG6o28gaMOgbmggdsOgIGdpw6EgeGUgxJHhu4F1IGPDsyDhuqNuaCBoxrDhu59uZyDEkcOhbmcga+G7gyDEkeG6v24geMOhYyBzdeG6pXQgbXVhIHhlKiouIFRyb25nIMSRw7MsIHnhur91IHThu5EgKnN0YXRlID0gbmV3KiB2w6AgKmhhc193YXJyYW50eSA9IFRSVUUqIGPDsyB0w6FjIMSR4buZbmcgdMOtY2ggY+G7sWMgbeG6oW5oIG5o4bqldC4gQmnhur9uICpwcmljZV91c2QqIHR1eSBjw7MgaOG7hyBz4buRIG5o4buPLCBuaMawbmcg4bqjbmggaMaw4bufbmcgdGnDqnUgY+G7sWMgY+G7p2EgbsOzIGNo4buJIGLhu5ljIGzhu5kgcsO1IGtoaSBr4bq/dCBo4bujcCB24bubaSBjw6FjIGJp4bq/biBraMOhYyDigJQgxJFp4buBdSBuw6B5IGzDvSBnaeG6o2kgdsOsIHNhbyBtw7QgaMOsbmggxJHGoW4gYmnhur9uIHRyxrDhu5tjIMSRw7Mga2jDtG5nIGPDsyDDvSBuZ2jEqWEsIG5oxrBuZyBs4bqhaSBjw7Mgw70gbmdoxKlhIHRyb25nIG3DtCBow6xuaCDEkWEgYmnhur9uLg0KDQpU4buVbmcgdGjhu4MsIG3DtCBow6xuaCBjw7MgxJHhu5kgcGjDuSBo4bujcCB04buRdCB2w6AgY3VuZyBj4bqlcCBjw6FpIG5ow6xuIHRo4buxYyB04bq/IMSR4buDIGjhu5cgdHLhu6MgcmEgcXV54bq/dCDEkeG7i25oIHRyb25nIGhv4bqhdCDEkeG7mW5nIGtpbmggZG9hbmgsIG5oxrAgbmjhuq9tIG3hu6VjIHRpw6p1IHbDoG8ga2jDoWNoIGjDoG5nIG3hu5tpLCDGsHUgdGnDqm4geGUgY8OzIGLhuqNvIGjDoG5oIHbDoCBjaGnhur9uIGzGsOG7o2MgZ2nDoSBsaW5oIGhv4bqhdC4NCg0KIyMjIDQuNi4yIE3DtCBow6xuaCBwcm9iaXQNCg0KYGBge3J9DQpwcm9iaXQ1IDwtIGdsbShmYWN0b3IocHVyY2hhc2VfZGVjaXNpb24pIH4gdHJhbnNtaXNzaW9uICsgc3RhdGUgKyBoYXNfd2FycmFudHkgKyBwcmljZV91c2QsIGZhbWlseSA9IGJpbm9taWFsKGxpbmsgPSAicHJvYml0IiksIGRhdGEgPSBkYXRhKQ0Kc3VtbWFyeShwcm9iaXQ1KQ0KYGBgDQoNCg0KUGjGsMahbmcgdHLDrG5oIGjhu5NpIHF1eSBQcm9iaXQgxrDhu5tjIGzGsOG7o25nIGPDsyBk4bqhbmc6DQoNCiQkDQpcUGhpXnstMX0oXG11KSA9IC0wLjQyOTEgLSAwLjEzNzcgXGNkb3QgXHRleHR7dHJhbnNtaXNzaW9ufV97XHRleHR7bWVjaGFuaWNhbH19ICsgMS40NDAgXGNkb3QgXHRleHR7c3RhdGV9X3tcdGV4dHtuZXd9fSArIDAuMjE3OSBcY2RvdCBcdGV4dHtzdGF0ZX1fe1x0ZXh0e293bmVkfX0gKyAwLjkwMTQgXGNkb3QgXHRleHR7aGFzX3dhcnJhbnR5fV97XHRleHR7VFJVRX19IC0gMS40NDEgXHRpbWVzIDEwXnstNX0gXGNkb3QgXHRleHR7cHJpY2VfdXNkfQ0KJCQNCg0KVHJvbmcgxJHDsywgXCggXFBoaV57LTF9KFxtdSkgXCkgbMOgIHBow6JuIHbhu4sgY2h14bqpbiAoaW52ZXJzZSBDREYpIGPhu6dhIHjDoWMgc3XhuqV0IFwoIFxtdSBcKSBtw6Aga2jDoWNoIGjDoG5nIHF1eeG6v3QgxJHhu4tuaCBtdWEgeGUuDQoNCi0gSOG7hyBz4buRIGNo4bq3biAtMC40MjkxOiBsw6AgZ2nDoSB0cuG7iyBuZ8aw4buhbmcgY2h14bqpbiB0cm9uZyB0csaw4budbmcgaOG7o3Aga2jDoWNoIGjDoG5nIHRodeG7mWMgbmjDs20gdGhhbSBjaGnhur91IChz4buRIHThu7EgxJHhu5luZywgdHLhuqFuZyB0aMOhaSDigJxlbWVyZ2VuY3nigJ0sIGtow7RuZyBi4bqjbyBow6BuaCwgZ2nDoSA9IDApLg0KDQotIHRyYW5zbWlzc2lvbiAobWVjaGFuaWNhbCkgPSAtMC4xMzc3IChwIDwgMC4wMDEpOiB4ZSBz4butIGThu6VuZyBo4buZcCBz4buRIGPGoSBraMOtIGPDsyB4w6FjIHN14bqldCBtdWEgdGjhuqVwIGjGoW4geGUgc+G7kSB04buxIMSR4buZbmcuIEThuqV1IMOibSB0aOG7gyBoaeG7h24gY2hp4buBdSB0w6FjIMSR4buZbmcgbmfGsOG7o2MuDQoNCi0gc3RhdGVuZXcgPSAxLjQ0MCAocCA8IDAuMDAxKToga2jDoWNoIGjDoG5nIG3hu5tpIGPDsyB4w6FjIHN14bqldCBtdWEgY2FvIGjGoW4gbmhp4buBdSBzbyB24bubaSBuaMOzbSDigJxlbWVyZ2VuY3nigJ0sIHBo4bqjbiDDoW5oIHPhu7EgY2jhu6cgxJHhu5luZyB2w6AgdGnhu4FtIG7Eg25nIOG7nyBuaMOzbSBraMOhY2ggaMOgbmcgbsOgeS4NCg0KLSBzdGF0ZW93bmVkID0gMC4yMTc5IChwIOKJiCAwLjAwMTcpOiBuaMOzbSDEkcOjIHThu6tuZyBz4bufIGjhu691IHhlIGPDsyB4w6FjIHN14bqldCBtdWEgY2FvIGjGoW4gbmjDs20g4oCcZW1lcmdlbmN54oCdLCBuaMawbmcgdGjhuqVwIGjGoW4gbmhp4buBdSBzbyB24bubaSBuaMOzbSDigJxuZXfigJ0uDQoNCi0gaGFzX3dhcnJhbnR5IChUUlVFKSA9IDAuOTAxNCAocCA8IDAuMDAxKTogc+G7sSBoaeG7h24gZGnhu4duIGPhu6dhIGLhuqNvIGjDoG5oIGzDoG0gdMSDbmcgeMOhYyBzdeG6pXQga2jDoWNoIGjDoG5nIG11YSB4ZSBt4buZdCBjw6FjaCDEkcOhbmcga+G7gy4gxJDDonkgbMOgIHnhur91IHThu5EgcuG6pXQgcXVhbiB0cuG7jW5nIHRyb25nIGjDoG5oIHZpIHRpw6p1IGTDuW5nLg0KDQotIHByaWNlX3VzZCA9IC0xLjQ0MSDDlyAxMOKBu+KBtSAocCA8IDAuMDAxKToga2hpIGdpw6EgeGUgdMSDbmcgdGjDqm0gMSBVU0QsIHjDoWMgc3XhuqV0IG11YSBnaeG6o20gbmjhurksIGNobyB0aOG6pXkg4bqjbmggaMaw4bufbmcgdGnDqnUgY+G7sWMgY+G7p2EgZ2nDoSDEkeG6v24gcXV54bq/dCDEkeG7i25oIG11YSDigJMgbeG6t2MgZMO5IG3hu6ljIMSR4buZIOG6o25oIGjGsOG7n25nIGtow7RuZyBs4bubbiB24buBIGdpw6EgdHLhu4sgdHV54buHdCDEkeG7kWkuDQoNCi0gUmVzaWR1YWwgZGV2aWFuY2UgZ2nhuqNtIGPDsm4gNDkyNTYgc28gduG7m2kgbnVsbCBkZXZpYW5jZSA1MDAxNiwgY2hvIHRo4bqleSBtw7QgaMOsbmggZ2nhuqNpIHRow61jaCDEkcaw4bujYyBt4buZdCBwaOG6p24gcGjGsMahbmcgc2FpLg0KDQotIEFJQyA9IDQ5MjY4OiB0aOG6pXAgaMahbiBzbyB24bubaSBtw7QgaMOsbmggxJHGoW4gYmnhur9uIHbDoCB0aOG6pXAgaMahbiBtw7QgaMOsbmggbG9naXQgxJFhIGJp4bq/biwgdGjhu4MgaGnhu4duIG3hu6ljIMSR4buZIHBow7kgaOG7o3AgdOG7kXQgaMahbiB0cm9uZyBz4buRIGPDoWMgbcO0IGjDrG5oIMSRw6MgxrDhu5tjIGzGsOG7o25nLg0KDQpNw7QgaMOsbmggUHJvYml0IMSRYSBiaeG6v24gY2hvIHRo4bqleSB04bqldCBj4bqjIGPDoWMgYmnhur9uIGdp4bqjaSB0aMOtY2ggxJHhu4F1IGPDsyDhuqNuaCBoxrDhu59uZyB0aOG7kW5nIGvDqiDEkcOhbmcga+G7gyDEkeG6v24geMOhYyBzdeG6pXQgbXVhIHhlLiBUcm9uZyDEkcOzLCBzdGF0ZSA9ICJuZXciLCBoYXNfd2FycmFudHksIHbDoCB0cmFuc21pc3Npb24gbMOgIGPDoWMgeeG6v3UgdOG7kSBxdWFuIHRy4buNbmcuIE3hurdjIGTDuSBgcHJpY2VfdXNkYCBjw7Mg4bqjbmggaMaw4bufbmcgbmjhu48gduG7gSBt4bq3dCB0dXnhu4d0IMSR4buRaSwgbmjGsG5nIHbhuqtuIGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6oga2hpIMSRxrDhu6NjIMSRxrBhIHbDoG8gbcO0IGjDrG5oIGPDuW5nIGPDoWMgYmnhur9uIGtow6FjLg0KDQoNCiMjIyA0LjYuMyBNw7QgaMOsbmggY2xvZ2xvZw0KDQpgYGB7cn0NCmNsb2dsb2c1IDwtIGdsbShmYWN0b3IocHVyY2hhc2VfZGVjaXNpb24pIH4gdHJhbnNtaXNzaW9uICsgc3RhdGUgKyBoYXNfd2FycmFudHkgKyBwcmljZV91c2QsZmFtaWx5ID0gYmlub21pYWwobGluayA9ICJjbG9nbG9nIiksIGRhdGEgPSBkYXRhKQ0Kc3VtbWFyeShjbG9nbG9nNSkNCmBgYA0KDQpQaMawxqFuZyB0csOsbmggaOG7k2kgcXV5IMaw4bubYyBsxrDhu6NuZyBjw7MgZOG6oW5nOg0KDQokJA0KXGxvZ1xsZWZ0KCAtXGxvZygxIC0gXG11KSBccmlnaHQpID0gLTAuOTAwNSAtIDAuMTg0MSBcY2RvdCBcdGV4dHt0cmFuc21pc3Npb259X3tcdGV4dHttZWNoYW5pY2FsfX0gKyAxLjYzNSBcY2RvdCBcdGV4dHtzdGF0ZX1fe1x0ZXh0e25ld319ICsgMC4yOTY0IFxjZG90IFx0ZXh0e3N0YXRlfV97XHRleHR7b3duZWR9fSArIDEuMDMyIFxjZG90IFx0ZXh0e2hhc193YXJyYW50eX1fe1x0ZXh0e1RSVUV9fSAtIDIuMDUwIFx0aW1lcyAxMF57LTV9IFxjZG90IFx0ZXh0e3ByaWNlX3VzZH0NCiQkDQoNClRyb25nIMSRw7MsIFwoIFxtdSBcKSBsw6AgeMOhYyBzdeG6pXQga2jDoWNoIGjDoG5nIHF1eeG6v3QgxJHhu4tuaCBtdWEgeGUgKHB1cmNoYXNlXF9kZWNpc2lvbiA9ICJZRVMiKS4NCg0KLSAoSW50ZXJjZXB0KSA9IC0wLjkwMDU6IMSR4bqhaSBkaeG7h24gY2hvIG3hu6ljIGxvZygtbG9nKDEg4oiSIM68KSkgdHJvbmcgbmjDs20gdGhhbSBjaGnhur91ICh4ZSBz4buRIHThu7EgxJHhu5luZywga2jDoWNoIGjDoG5nIOKAnGVtZXJnZW5jeeKAnSwga2jDtG5nIGPDsyBi4bqjbyBow6BuaCwgZ2nDoSB4ZSBi4bqxbmcgMCkuIEdpw6EgdHLhu4sgbsOgeSBtYW5nIHTDrW5oIGvhu7kgdGh14bqtdC4NCg0KLSB0cmFuc21pc3Npb24gKG1lY2hhbmljYWwpID0gLTAuMTg0MSAocCA8IDAuMDAxKToga2jDoWNoIGjDoG5nIHRp4bq/cCBj4bqtbiB4ZSBz4butIGThu6VuZyBo4buZcCBz4buRIGPGoSBraMOtIGPDsyB4w6FjIHN14bqldCBtdWEgeGUgdGjhuqVwIGjGoW4gc28gduG7m2kgeGUgdOG7sSDEkeG7mW5nLCBjaG8gdGjhuqV5IHPhu58gdGjDrWNoIG5naGnDqm5nIHbhu4EgaOG7mXAgc+G7kSB04buxIMSR4buZbmcuDQoNCi0gc3RhdGUgKG5ldykgPSAxLjYzNSAocCA8IDAuMDAxKToga2jDoWNoIGjDoG5nIHRp4bq/cCBj4bqtbiB4ZSBt4bubaSBjw7MgeMOhYyBzdeG6pXQgbXVhIGNhbyBoxqFuIMSRw6FuZyBr4buDIHNvIHbhu5tpIG5ow7NtIGVtZXJnZW5jeSwgbMOgIGThuqV1IGhp4buHdSByw7UgcsOgbmcgY+G7p2EgbeG7mXQgbmjDs20ga2jDoWNoIGjDoG5nIHRp4buBbSBuxINuZywgY2jhu6cgxJHhu5luZyBtdWEgc+G6r20uDQoNCi0gc3RhdGUgKG93bmVkKSA9IDAuMjk2NCAocCDiiYggMC4wMDI1KTogbmjDs20gxJHDoyBz4bufIGjhu691IHhlIGPDsyBraOG6oyBuxINuZyBtdWEgeGUgY2FvIGjGoW4gbmjDs20g4oCcZW1lcmdlbmN54oCdLCBuaMawbmcgdMOhYyDEkeG7mW5nIHnhur91IGjGoW4gc28gduG7m2kgbmjDs20gIm5ldyIuDQoNCi0gaGFzX3dhcnJhbnR5VFJVRSA9IDEuMDMyIChwIDwgMC4wMDEpOiB4ZSBjw7MgYuG6o28gaMOgbmggbMOgbSB0xINuZyDEkcOhbmcga+G7gyB4w6FjIHN14bqldCBtdWEg4oCTIMSRw6J5IGzDoCB54bq/dSB04buRIGPDsyDhuqNuaCBoxrDhu59uZyByw7UgcuG7h3QgdsOgIHRo4buxYyB0aeG7hW4uDQoNCi0gcHJpY2VfdXNkID0gLTIuMDUwIMOXIDEw4oG74oG1KHAgPCAwLjAwMSk6IGdpw6EgeGUgdMSDbmcgdGjDrCB4w6FjIHN14bqldCBtdWEgZ2nhuqNtLCBwaOG6o24gw6FuaCBuaOG6oXkgY+G6o20gduG7m2kgZ2nDoSBj4bunYSBraMOhY2ggaMOgbmcuIE3hurdjIGTDuSBnacOhIHRy4buLIGjhu4cgc+G7kSBuaOG7jywgbmjGsG5nIOG6o25oIGjGsOG7n25nIHbhuqtuIGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ogdHJvbmcgYuG7kWkgY+G6o25oIGPDoWMgeeG6v3UgdOG7kSBraMOhYyDEkcaw4bujYyBraeG7g20gc2/DoXQuDQoNCi0gUmVzaWR1YWwgZGV2aWFuY2UgPSA0OTIxNSwgZ2nhuqNtIHNvIHbhu5tpIG51bGwgZGV2aWFuY2UgPSA1MDAxNi4NCg0KLSBBSUMgPSA0OTIyNywgdGjhuqVwIG5o4bqldCB0cm9uZyAzIG3DtCBow6xuaCBuaOG7iyBwaMOibiDEkcOjIMaw4bubYyBsxrDhu6NuZyAobG9naXQ6IDQ5Mjc3LCBwcm9iaXQ6IDQ5MjY4LCBjbG9nbG9nOiA0OTIyNykuDQoNCk3DtCBow6xuaCBjbG9nbG9nIGNobyB0aOG6pXkgdOG6pXQgY+G6oyBjw6FjIGJp4bq/biBnaeG6o2kgdGjDrWNoIMSR4buBdSBjw7Mgw70gbmdoxKlhIHRo4buRbmcga8OqIGNhbyB2w6Ag4bqjbmggaMaw4bufbmcgcsO1IHLhu4d0IMSR4bq/biBow6BuaCB2aSBtdWEgeGUuIMSQ4bq3YyBiaeG7h3QsIGPDoWMgYmnhur9uIGBzdGF0ZSA9IG5ld2AsIGBoYXNfd2FycmFudHlgLCB2w6AgYHRyYW5zbWlzc2lvbmAgxJHDs25nIHZhaSB0csOyIHRoZW4gY2jhu5F0LiBN4bq3YyBkw7kg4bqjbmggaMaw4bufbmcgY+G7p2EgZ2nDoSB4ZSBsw6Agbmjhu48gduG7gSDEkeG7mSBs4bubbiBo4buHIHPhu5EsIG5oxrBuZyB24bqrbiDEkcOhbmcga+G7gyB24buBIHRo4buRbmcga8OqIHRyb25nIG5n4buvIGPhuqNuaCDEkWnhu4F1IGtp4buHbi4NCg0KVuG7m2kgQUlDIHRo4bqlcCBuaOG6pXQsIG3DtCBow6xuaCBjbG9nbG9nIGzDoCBs4buxYSBjaOG7jW4gcGjDuSBo4bujcCBuaOG6pXQgxJHhu4MgbcO0IHThuqMgaMOgbmggdmkgbXVhIHhlIHRyb25nIHThuq1wIGThu68gbGnhu4d1IG7DoHksIHBo4bqjbiDDoW5oIMSR4bq3YyDEkWnhu4NtIHF1eeG6v3QgxJHhu4tuaCBjw7MgcGjhuqduIGzhu4djaCB24buBIHBow61hIG3hu5l0IG5ow7NtIGtow6FjaCBow6BuZyBj4bulIHRo4buDIChjaOG6s25nIGjhuqFuIG5oxrAgbmjDs20gIm5ldyIgcuG6pXQgbuG7lWkgdHLhu5lpKS4NCg0KIyMjIDQuNi40IMSQw6FuaCBnacOhIG3DtCBow6xuaA0KDQpgYGB7cn0NCm1vZGVsX2NvbXBhcmlzb24gPC0gZGF0YS5mcmFtZSgNCiAgTW9kZWwgPSBjKCJMb2dpdCIsICJQcm9iaXQiLCAiQ2xvZ2xvZyIpLA0KICBBSUMgICA9IGMoQUlDKGxvZ2l0NSksIEFJQyhwcm9iaXQ1KSwgQUlDKGNsb2dsb2c1KSksDQogIEJJQyAgID0gYyhCSUMobG9naXQ1KSwgQklDKHByb2JpdDUpLCBCSUMoY2xvZ2xvZzUpKQ0KKQ0KcHJpbnQobW9kZWxfY29tcGFyaXNvbikNCmBgYA0KDQpUcm9uZyBxdcOhIHRyw6xuaCDEkcOhbmggZ2nDoSB2w6AgbOG7sWEgY2jhu41uIG3DtCBow6xuaCBo4buTaSBxdXkgbmjhu4sgcGjDom4gcGjDuSBo4bujcCwgbmdoacOqbiBj4bupdSDEkcOjIHNvIHPDoW5oIGJhIG3DtCBow6xuaCBwaOG7lSBiaeG6v24gZ+G7k206IGxvZ2l0LCBwcm9iaXQgdsOgIGNsb2dsb2cuIEhhaSB0acOqdSBjaMOtIMSRxrDhu6NjIHPhu60gZOG7pW5nIGzDoCBBSUMgKEFrYWlrZSBJbmZvcm1hdGlvbiBDcml0ZXJpb24pIHbDoCBCSUMgKEJheWVzaWFuIEluZm9ybWF0aW9uIENyaXRlcmlvbiksIHbhu5FuIGzDoCBuaOG7r25nIGNo4buJIHPhu5EgY8OibiBi4bqxbmcgZ2nhu69hIG3hu6ljIMSR4buZIHBow7kgaOG7o3AgY+G7p2EgbcO0IGjDrG5oIHbhu5tpIMSR4buZIHBo4bupYyB04bqhcCBj4bunYSBuw7MuDQoNCkvhur90IHF14bqjIGNobyB0aOG6pXkgbcO0IGjDrG5oIGNsb2dsb2cgxJHhuqF0IGdpw6EgdHLhu4sgQUlDID0gNDkyMjcuMDIgdsOgIEJJQyA9IDQ5Mjc4LjM3LCDEkeG7gXUgdGjhuqVwIGjGoW4gcsO1IHLhu4d0IHNvIHbhu5tpIGPDoWMgbcO0IGjDrG5oIGPDsm4gbOG6oWkuIMSQaeG7gXUgbsOgeSBjaG8gdGjhuqV5IGNsb2dsb2cga2jDtG5nIGNo4buJIG3DtCB04bqjIGThu68gbGnhu4d1IHThu5F0IGjGoW4gbcOgIGPDsm4gdHLDoW5oIMSRxrDhu6NjIHZp4buHYyAicXXDoSBraOG7m3AiIChvdmVyZml0dGluZykgc28gduG7m2kgbG9naXQgdsOgIHByb2JpdC4NCg0KSMahbiBu4buvYSwgbcO0IGjDrG5oIGNsb2dsb2cgxJHhurdjIGJp4buHdCBwaMO5IGjhu6NwIHRyb25nIGLhu5FpIGPhuqNuaCBtw6AgeMOhYyBzdeG6pXQgeOG6o3kgcmEgc+G7sSBraeG7h24gbMOgIGtow7RuZyDEkeG7kWkgeOG7qW5nLCBjaOG6s25nIGjhuqFuIG5oxrAgaMOgbmggdmkgbXVhIHhlIGPDsyB0aOG7gyB44bqjeSByYSB24bubaSB04bqnbiBzdeG6pXQgdGjhuqVwIGjGoW4ga2jDtG5nIG11YSDigJMgxJFp4buBdSB0aMaw4budbmcgdGjhuqV5IHRyb25nIGPDoWMgbmdoacOqbiBj4bupdSB24buBIGjDoG5oIHZpIGzhu7FhIGNo4buNbi4NCg0KRG8gxJHDsywgbcO0IGjDrG5oIGNsb2dsb2cgxJHGsOG7o2MgbOG7sWEgY2jhu41uIGzDoCBtw7QgaMOsbmggcGjDuSBo4bujcCBuaOG6pXQgxJHhu4MgcGjDom4gdMOtY2ggdsOgIGdp4bqjaSB0aMOtY2ggaMOgbmggdmkgcmEgcXV54bq/dCDEkeG7i25oIG11YSB4ZSB0cm9uZyBuZ2hpw6puIGPhu6l1IG7DoHkuDQoNClRp4bq/cCB0aGVvLCB0w6FjIGdp4bqjIHPhu60gZOG7pW5nIG1hIHRy4bqtbiBuaOG6p20gbOG6p24gxJHhu4MgdGnhur9wIHThu6VjIMSRw6FuaCBnacOhIG3DtCBow6xuaC4gTWEgdHLhuq1uIG5o4bqnbSBs4bqrbiAoY29uZnVzaW9uIG1hdHJpeCkgbMOgIGPDtG5nIGPhu6UgxJHDoW5oIGdpw6EgaGnhu4d1IHN14bqldCBj4bunYSBtw7QgaMOsbmggcGjDom4gbG/huqFpIG5o4buLIHBow6JuLCBi4bqxbmcgY8OhY2ggc28gc8OhbmggZ2nhu69hIGdpw6EgdHLhu4sgZOG7sSDEkW/DoW4gdsOgIGdpw6EgdHLhu4sgdGjhu7FjIHThur8uIA0KDQpgYGB7cn0NCmxpYnJhcnkocFJPQykNCmRhdGEkcHVyY2hhc2VfZGVjaXNpb25fYmluIDwtIGlmZWxzZShkYXRhJHB1cmNoYXNlX2RlY2lzaW9uID09ICJZRVMiLCAxLCAwKQ0KcHJlZF9jbG9nbG9nNSA8LSBwcmVkaWN0KGNsb2dsb2c1LCB0eXBlID0gInJlc3BvbnNlIikNCnJvY19jbG9nbG9nNSA8LSByb2MoZGF0YSRwdXJjaGFzZV9kZWNpc2lvbl9iaW4sIHByZWRfY2xvZ2xvZzUpDQp0aHJlc2hfY2xvZ2xvZyA8LSBjb29yZHMocm9jX2Nsb2dsb2c1LCAiYmVzdCIsIHJldCA9ICJ0aHJlc2hvbGQiKQ0KcHJlZF9jbG9nbG9nX2xhYmVsIDwtIGlmZWxzZShwcmVkX2Nsb2dsb2c1ID49IGFzLm51bWVyaWModGhyZXNoX2Nsb2dsb2cpLCAxLCAwKQ0KY21fbWF0cml4IDwtIHRhYmxlKFByZWRpY3Rpb24gPSBwcmVkX2Nsb2dsb2dfbGFiZWwsIFJlZmVyZW5jZSA9IGRhdGEkcHVyY2hhc2VfZGVjaXNpb25fYmluKQ0KcHJpbnQoY21fbWF0cml4KQ0KY21fZGYgPC0gYXMuZGF0YS5mcmFtZShjbV9tYXRyaXgpDQpjb2xuYW1lcyhjbV9kZikgPC0gYygiUHJlZGljdGlvbiIsICJSZWZlcmVuY2UiLCAiRnJlcSIpDQoNCmdncGxvdChjbV9kZiwgYWVzKHggPSBmYWN0b3IoUmVmZXJlbmNlKSwgeSA9IGZhY3RvcihQcmVkaWN0aW9uKSwgZmlsbCA9IEZyZXEpKSArDQogIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIpICsgDQogIHNjYWxlX2ZpbGxfZ3JhZGllbnQobG93ID0gImJsdWUiLCBoaWdoID0gInJlZCIpICsNCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IEZyZXEpLCBzaXplID0gNSkgKw0KICBsYWJzKA0KICAgIHRpdGxlID0gIk1hIHRy4bqtbiBuaOG6p20gbOG6q24gLSBNw7QgaMOsbmggQ2xvZ2xvZyIsDQogICAgeCA9ICJUaOG7sWMgdOG6vyAoUmVmZXJlbmNlKSIsDQogICAgeSA9ICJE4buxIMSRb8OhbiAoUHJlZGljdGlvbikiDQogICkgKw0KICB0aGVtZV9taW5pbWFsKCkgKw0KICB0aGVtZSgNCiAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGhqdXN0ID0gMC41LCBmYWNlID0gImJvbGQiLCBzaXplID0gMTQpLA0KICAgIGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIpDQogICkNClROIDwtIGNtX21hdHJpeFsxLDFdDQpGUCA8LSBjbV9tYXRyaXhbMiwxXQ0KRk4gPC0gY21fbWF0cml4WzEsMl0NClRQIDwtIGNtX21hdHJpeFsyLDJdDQoNCmFjY3VyYWN5ICA8LSAoVFAgKyBUTikgLyBzdW0oY21fbWF0cml4KQ0KcHJlY2lzaW9uIDwtIFRQIC8gKFRQICsgRlApDQpyZWNhbGwgICAgPC0gVFAgLyAoVFAgKyBGTikgICMgc2Vuc2l0aXZpdHkNCmYxX3Njb3JlICA8LSAyICogKHByZWNpc2lvbiAqIHJlY2FsbCkgLyAocHJlY2lzaW9uICsgcmVjYWxsKQ0KDQpjYXQoIj09PSDEkMOhbmggZ2nDoSBtw7QgaMOsbmggQ2xvZ2xvZyA9PT1cbiIpDQpjYXQoIkFjY3VyYWN5OiIsIHJvdW5kKGFjY3VyYWN5LCAzKSwgIlxuIikNCmNhdCgiUHJlY2lzaW9uOiIsIHJvdW5kKHByZWNpc2lvbiwgMyksICJcbiIpDQpjYXQoIlJlY2FsbCAoU2Vuc2l0aXZpdHkpOiIsIHJvdW5kKHJlY2FsbCwgMyksICJcbiIpDQpjYXQoIkYxLXNjb3JlOiIsIHJvdW5kKGYxX3Njb3JlLCAzKSwgIlxuIikNCg0KYGBgDQoNCg0KYGBge3J9DQpsaWJyYXJ5KGtuaXRyKQ0KIyBIaeG7g24gdGjhu4sgYuG6o25nIGLhurFuZyBrYWJsZQ0Ka2FibGUoY21fZGYsIGNhcHRpb24gPSAiTWEgdHLhuq1uIG5o4bqnbSBs4bqrbiAtIE3DtCBow6xuaCBDbG9nbG9nIikNCg0KYGBgDQoNCk1hIHRy4bqtbiBuaOG6p20gbOG6q24gY+G7p2EgbcO0IGjDrG5oIGNsb2dsb2cgY2hvIHRo4bqleSBtw7QgaMOsbmggZOG7sSDEkW/DoW4gxJHDum5nIDguMTYyIHRyxrDhu51uZyBo4bujcCBraMOhY2ggaMOgbmcgbXVhIHhlIHbDoCAxMi4yMDUgdHLGsOG7nW5nIGjhu6NwIGtow7RuZyBtdWEgeGUuIFR1eSBuaGnDqm4sIHPhu5EgbMaw4bujbmcgZOG7sSDEkW/DoW4gc2FpIHbhuqtuIHLhuqV0IMSRw6FuZyBr4buDLCB0cm9uZyDEkcOzIGPDsyAxMi43NDAgdHLGsOG7nW5nIGjhu6NwIG3DtCBow6xuaCBk4buxIMSRb8OhbiBtdWEgeGUgbmjGsG5nIHRo4buxYyB04bq/IGtow7RuZyBtdWEgKGZhbHNlIHBvc2l0aXZlKSB2w6AgNS40MjQgdHLGsOG7nW5nIGjhu6NwIG3DtCBow6xuaCBk4buxIMSRb8OhbiBraMO0bmcgbXVhIHhlIG5oxrBuZyB0aOG7sWMgdOG6vyBs4bqhaSBtdWEgKGZhbHNlIG5lZ2F0aXZlKS4gxJBp4buBdSBuw6B5IGNobyB0aOG6pXkga2jhuqMgbsSDbmcgcGjDom4gbG/huqFpIGPhu6dhIG3DtCBow6xuaCBjw7JuIGjhuqFuIGNo4bq/LCDEkeG6t2MgYmnhu4d0IGzDoCB4dSBoxrDhu5tuZyBk4buxIMSRb8OhbiBxdcOhIG5oaeG7gXUgdHLGsOG7nW5nIGjhu6NwIG11YSwgZ8OieSBsw6NuZyBwaMOtIG7hur91IMSRxrDhu6NjIOG7qW5nIGThu6VuZyB2w6BvIGPDoWMgY2hp4bq/biBk4buLY2ggbWFya2V0aW5nIHRo4buxYyB04bq/LiBWaeG7h2MgY+G6o2kgdGhp4buHbiBtw7QgaMOsbmggYuG6sW5nIGPDoWNoIGLhu5Ugc3VuZyB0aMOqbSBjw6FjIGJp4bq/biBnaeG6o2kgdGjDrWNoIHF1YW4gdHLhu41uZyBoxqFuIGzDoCBj4bqnbiB0aGnhur90Lg0KDQoNCiMgQ0jGr8agTkcgVjogS+G6vlQgTFXhuqxOIFbDgCBIxq/hu5pORyBOR0hJw4pOIEPhu6hVIFRJw4pQIFRIRU8NCg0KKipL4bq/dCBsdeG6rW4qKg0KDQpRdWEgcXXDoSB0csOsbmggcGjDom4gdMOtY2ggZOG7ryBsaeG7h3UgdsOgIMaw4bubYyBsxrDhu6NuZyBjw6FjIG3DtCBow6xuaCBo4buTaSBxdXkgbmjhu4sgcGjDom4sIGLDoW8gY8OhbyDEkcOjIGNo4buJIHJhIHLhurFuZyBt4buZdCBz4buRIMSR4bq3YyDEkWnhu4NtIGPhu6dhIHhlIGPDsyDhuqNuaCBoxrDhu59uZyByw7UgcuG7h3QgxJHhur9uIHF1eeG6v3QgxJHhu4tuaCBtdWEgeGUgw7QgdMO0IGPhu6dhIGtow6FjaCBow6BuZy4gQ+G7pSB0aOG7gywgdMOsbmggdHLhuqFuZyBj4bunYSBraMOhY2ggaMOgbmcgKGJp4bq/biBzdGF0ZSkgbMOgIHnhur91IHThu5EgY8OzIHTDoWMgxJHhu5luZyBt4bqhbmggbmjhuqV0LCB0cm9uZyDEkcOzIGtow6FjaCBow6BuZyBjaOG7jW4geGUgbmV3IGPDsyB4w6FjIHN14bqldCBtdWEgeGUgY2FvIGjGoW4gaOG6s24gc28gduG7m2kgbmjDs20gdGhhbSBjaGnhur91LCBwaOG6o24gw6FuaCDEkeG7mW5nIGzhu7FjIHRpw6p1IGTDuW5nIG3huqFuaCBt4bq9IHThu6sgcGjDom4ga2jDumMgbsOgeS4gTmdvw6BpIHJhLCB2aeG7h2MgY2hp4bq/YyB4ZSBjw7MgxJFpIGvDqG0gYuG6o28gaMOgbmggaGF5IGtow7RuZyBjxaluZyDhuqNuaCBoxrDhu59uZyDEkcOhbmcga+G7gyDEkeG6v24ga2jhuqMgbsSDbmcgbXVhLCBjaG8gdGjhuqV5IHnhur91IHThu5EgYW4gdG/DoG4gdsOgIG5p4buBbSB0aW4gxJHDs25nIHZhaSB0csOyIHF1YW4gdHLhu41uZyB0cm9uZyBow6BuaCB2aSB0acOqdSBkw7luZy4gTG/huqFpIGjhu5lwIHPhu5EgbMOgIG3hu5l0IHnhur91IHThu5EgYuG7lSBzdW5nIGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6osIHbhu5tpIHh1IGjGsOG7m25nIHLDtSByw6BuZyBy4bqxbmcgbmfGsOG7nWkgdGnDqnUgZMO5bmcgxrB1IHRpw6puIHhlIHPhu5EgdOG7sSDEkeG7mW5nIGjGoW4gc28gduG7m2kgeGUgc+G7kSBjxqEga2jDrS4gxJDhu5FpIHbhu5tpIGJp4bq/biBnacOhIHhlLCBraGkgxJHGsOG7o2MgcGjDom4gdMOtY2ggdHJvbmcgbcO0IGjDrG5oIMSRYSBiaeG6v24gdGjDrCBuw7MgduG6q24gY2hvIHRo4bqleSDhuqNuaCBoxrDhu59uZyB0acOqdSBj4buxYyBjw7Mgw70gbmdoxKlhIMSR4bq/biB4w6FjIHN14bqldCBtdWEsIHBo4bqjbiDDoW5oIHPhu7EgdGjhuq1uIHRy4buNbmcgY+G7p2EgbmfGsOG7nWkgdGnDqnUgZMO5bmcga2hpIGdpw6EgdHLhu4sgc+G6o24gcGjhuqltIHTEg25nIGNhby4NCg0KTcO0IGjDrG5oIHPhu60gZOG7pW5nIGjDoG0gbGnDqm4ga+G6v3QgY29tcGxlbWVudGFyeSBsb2ctbG9nIChjbG9nbG9nKSBjw7MgxJHhu5kgcGjDuSBo4bujcCB04buRdCBuaOG6pXQgc28gduG7m2kgY8OhYyBtw7QgaMOsbmggbG9naXQgdsOgIHByb2JpdCwgdGjhu4MgaGnhu4duIHF1YSBjaOG7iSBz4buRIEFJQyB2w6AgQklDIHRo4bqlcCBuaOG6pXQuIMSQaeG7gXUgbsOgeSBjaG8gdGjhuqV5IG3DtCBow6xuaCBjbG9nbG9nIHBow7kgaOG7o3AgdHJvbmcgYuG7kWkgY+G6o25oIGjDoG5oIHZpIG11YSBjw7MgeHUgaMaw4bubbmcgdGhpw6puIGzhu4djaCBt4bqhbmggduG7gSBt4buZdCBuaMOzbSBuaOG6pXQgxJHhu4tuaCwgxJFp4buDbiBow6xuaCBsw6AgbmjDs20ga2jDoWNoIGjDoG5nIGNo4buNbiB4ZSBuZXcgY8OzIHjDoWMgc3XhuqV0IG11YSBy4bqldCBjYW8uDQoNClThu6sgY8OhYyBr4bq/dCBxdeG6oyB0aHUgxJHGsOG7o2MsIGLDoW8gY8OhbyDEkeG7gSB4deG6pXQgbeG7mXQgc+G7kSBraeG6v24gbmdo4buLIG5o4bqxbSBo4buXIHRy4bujIGhv4bqhdCDEkeG7mW5nIHRp4bq/cCB0aOG7iyB2w6AgYsOhbiBow6BuZyBj4bunYSBkb2FuaCBuZ2hp4buHcCB0cm9uZyBsxKluaCB24buxYyDDtCB0w7QgxJHDoyBxdWEgc+G7rSBk4bulbmcuIFRyxrDhu5tjIGjhur90LCBkb2FuaCBuZ2hp4buHcCBuw6puIGNow7ogdHLhu41uZyB2w6BvIG5ow7NtIGtow6FjaCBow6BuZyBjaOG7jW4geGUgbmV3IHRow7RuZyBxdWEgY8OhYyBjaGnhur9uIGzGsOG7o2Mgbmjhuq9tIG3hu6VjIHRpw6p1IHLDtSByw6BuZywgdsOsIMSRw6J5IGzDoCDEkeG7kWkgdMaw4bujbmcgY8OzIHh1IGjGsOG7m25nIHRpw6p1IGTDuW5nIG3huqFuaCBuaOG6pXQuIELDqm4gY+G6oW5oIMSRw7MsIHZp4buHYyBt4bufIHLhu5luZyB2w6AgbWluaCBi4bqhY2ggY8OhYyBjaMOtbmggc8OhY2ggYuG6o28gaMOgbmggc+G6vSBnacO6cCBnaWEgdMSDbmcgc+G7sSB0aW4gdMaw4bufbmcgdOG7qyBwaMOtYSBuZ8aw4budaSB0acOqdSBkw7luZyB2w6AgbsOibmcgY2FvIHThu7cgbOG7hyBtdWEgaMOgbmcuIMSQ4buRaSB24bubaSBsb+G6oWkgaOG7mXAgc+G7kSwgdmnhu4djIHThuq1wIHRydW5nIHF14bqjbmcgYsOhIGPDoWMgZMOybmcgeGUgc+G7kSB04buxIMSR4buZbmcgY8OzIHRo4buDIMSRw6FwIOG7qW5nIHThu5F0IGjGoW4gbmh1IGPhuqd1IHRo4buLIHRyxrDhu51uZyBoaeG7h24gdOG6oWkuIMSQ4buTbmcgdGjhu51pLCBjw6FjIGNow61uaCBzw6FjaCDEkeG7i25oIGdpw6EgbsOqbiDEkcaw4bujYyB0aGnhur90IGvhur8gbGluaCBob+G6oXQgaMahbiwgY2jhurNuZyBo4bqhbiBuaMawIGtodXnhur9uIG3Do2ksIMawdSDEkcOjaSB0aGVvIG3DuWEgaG/hurdjIGjhu5cgdHLhu6MgdMOgaSBjaMOtbmgsIG5o4bqxbSBnaeG6o20gYuG7m3QgdMOhYyDEkeG7mW5nIHRpw6p1IGPhu7FjIGPhu6dhIHnhur91IHThu5EgZ2nDoSDEkeG6v24gcXV54bq/dCDEkeG7i25oIG11YS4NCg0KVOG7lW5nIHRo4buDLCBiw6FvIGPDoW8gxJHDoyBnw7NwIHBo4bqnbiBsw6BtIHLDtSBt4buRaSBxdWFuIGjhu4cgZ2nhu69hIGPDoWMgxJHhurdjIMSRaeG7g20gc+G6o24gcGjhuqltIHbDoCBow6BuaCB2aSB0acOqdSBkw7luZyB0cm9uZyBsxKluaCB24buxYyDDtCB0w7QsIMSR4buTbmcgdGjhu51pIGN1bmcgY+G6pXAgY8ahIHPhu58gxJHhu4tuaCBsxrDhu6NuZyBxdWFuIHRy4buNbmcgxJHhu4MgxJHhu4tuaCBoxrDhu5tuZyBjw6FjIHF1eeG6v3QgxJHhu4tuaCBraW5oIGRvYW5oIHRo4buxYyB0aeG7hW4uIA0KDQoqKkjGsOG7m25nIG5naGnDqm4gY+G7qXUgdGnhur9wIHRoZW8qKg0KDQpCw6FvIGPDoW8gaGnhu4duIHThuqFpIMSRw6MgeMOieSBk4buxbmcgbeG7mXQgbcO0IGjDrG5oIHBow7kgaOG7o3AgdsOgIGPDsyBjxqEgc+G7nyBsw70gbHXhuq1uIHbhu69uZyBjaOG6r2MsIHbhu5tpIGPDoWMgYmnhur9uIGdp4bqjaSB0aMOtY2ggxJHhu4F1IGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ogdsOgIHBo4bqjbiDDoW5oIMSRw7puZyBow6BuaCB2aSBtdWEgeGUgdHJvbmcgdGjhu7FjIHRp4buFbi4gVmnhu4djIGzhu7FhIGNo4buNbiBtw7QgaMOsbmggY2xvZ2xvZyBsw6AgaOG7o3AgbMO9IGtoaSB4w6l0IMSR4bq/biB0acOqdSBjaMOtIEFJQyB0aOG6pXAgbmjhuqV0LCDEkeG7k25nIHRo4budaSBtw7QgaMOsbmggY8WpbmcgZ2nDunAgbMOgbSByw7UgdmFpIHRyw7IgbuG7lWkgYuG6rXQgY+G7p2EgY8OhYyB54bq/dSB04buRIG5oxrAgdMOsbmggdHLhuqFuZyBraMOhY2ggaMOgbmcsIGLhuqNvIGjDoG5oIHbDoCBo4buZcCBz4buRLiBUdXkgbmhpw6puLCBr4bq/dCBxdeG6oyB04burIG1hIHRy4bqtbiBuaOG6p20gbOG6q24gY2hvIHRo4bqleSBraOG6oyBuxINuZyBwaMOibiBsb+G6oWkgY+G7p2EgbcO0IGjDrG5oIHbhuqtuIGPDsm4gaOG6oW4gY2jhur8sIMSR4bq3YyBiaeG7h3QgbMOgIHThu7cgbOG7hyBk4buxIMSRb8OhbiBzYWkgY2FvIOG7nyBuaMOzbSBraMOhY2ggaMOgbmcga2jDtG5nIG11YSwgZOG6q24gxJHhur9uIG5ndXkgY8ahIMSRw6FuaCBnacOhIHNhaSB0aeG7gW0gbsSDbmcga2jDoWNoIGjDoG5nLiDEkMOieSBsw6AgxJFp4buDbSBjaG8gdGjhuqV5IG3DtCBow6xuaCB24bqrbiBjw7JuIGTGsCDEkeG7i2EgxJHhu4MgY+G6o2kgdGhp4buHbi4gVHJvbmcgY8OhYyBixrDhu5tjIHRp4bq/cCB0aGVvLCBuZ2hpw6puIGPhu6l1IGPDsyB0aOG7gyBoxrDhu5tuZyDEkeG6v24gdmnhu4djIG3hu58gcuG7mW5nIHF1eSBtw7QgbeG6q3UsIGLhu5Ugc3VuZyB0aMOqbSBjw6FjIGJp4bq/biBjw7Mgc+G7qWMgZ+G7o2kgbeG6oW5oIGjGoW4gKGNo4bqzbmcgaOG6oW4gbmjGsCB0aMawxqFuZyBoaeG7h3UsIHF1w6NuZyDEkcaw4budbmcgxJHDoyDEkWksIGhv4bq3YyB54bq/dSB04buRIGxpw6puIHF1YW4gxJHhur9uIG5nxrDhu51pIHRpw6p1IGTDuW5nKSwgdsOgIGvhur90IGjhu6NwIHRow6ptIGPDoWMga+G7uSB0aHXhuq10IMSRw6FuaCBnacOhIGhp4buHdSBxdeG6oyBtw7QgaMOsbmgg4bufIGPhuqVwIMSR4buZIHRo4buxYyB0aeG7hW4gaG/hurdjIMSR4buZIGNow61uaCB4w6FjIHRoZW8gbmjDs20gbeG7pWMgdGnDqnUgY+G7pSB0aOG7gywgcXVhIMSRw7MgZ2nDunAgbsOibmcgY2FvIMSR4buZIGNow61uaCB4w6FjIHbDoCB0w61uaCDhu6luZyBk4bulbmcgY+G7p2EgbcO0IGjDrG5oIHRyb25nIGPDoWMgY2hp4bq/biBsxrDhu6NjIGtpbmggZG9hbmggdGjhu7FjIHThur8uDQoNCiMgKipUw4BJIExJ4buGVSBUSEFNIEtI4bqiTyoqDQoNClsxXSBUcuG6p24gTeG6oW5oIFTGsOG7nW5nICgyMDI1KSwgR2nDoW8gdHLDrG5oIFBow6JuIHTDrWNoIEThu68gbGnhu4d1IMSQ4buLbmggdMOtbmguDQoNClsyXSBHdXB0YSwgUy4gKDIwMTMpLiBBIHN0dWR5IG9mIGJ1eWluZyBkZWNpc2lvbiBpbmZsdWVuY2VycyBmb3IgcGFzc2VuZ2VyIGNhciBzZWdtZW50IGluIE5ldyBEZWxoaS4gSW50ZXJuYXRpb25hbCBqb3VybmFsIG9mIGJ1c2luZXNzIGFuZCBNYW5hZ2VtZW50IEludmVudGlvbiwgMigxMiksIDY0LTcxLg0KDQpbM10gT3ByZWEsIEMuICgyMDEwKS4gTWFraW5nIHRoZSBkZWNpc2lvbiBvbiBidXlpbmcgc2Vjb25kLWhhbmQgY2FyIG1hcmtldCB1c2luZyBkYXRhIG1pbmluZyB0ZWNobmlxdWVzLiBUaGUgVVNWIEFubmFscyBvZiBFY29ub21pY3MgYW5kIFB1YmxpYyBBZG1pbmlzdHJhdGlvbiwgMTAoMyksIDE3LTI2Lg0KDQpbNF0gR3VtaWxhciwgQlIsIFN1bWFyd2FuLCBVLiwgJiBTYXJ0b25vLCBCLiAoMjAyMCkuIFBow6JuIHTDrWNoIGPDoWMgeeG6v3UgdOG7kSDhuqNuaCBoxrDhu59uZyDEkeG6v24gcXV54bq/dCDEkeG7i25oIG11YSB4ZS4gSW5vdmFzaTogSnVybmFsIEVrb25vbWksIEtldWFuZ2FuLCBkYW4gTWFuYWplbWVuICwgMTYgKDEpLCA2MC03MS4NCg0KDQo=