library(dplyr)
## Warning: package 'dplyr' was built under R version 4.3.1
## 
## 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(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.3.1
library(scales)
## Warning: package 'scales' was built under R version 4.3.1
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.3.1
## Warning: package 'tidyr' was built under R version 4.3.1
## Warning: package 'readr' was built under R version 4.3.1
## Warning: package 'purrr' was built under R version 4.3.1
## Warning: package 'forcats' was built under R version 4.3.1
## Warning: package 'lubridate' was built under R version 4.3.1
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats   1.0.0     ✔ stringr   1.5.0
## ✔ lubridate 1.9.2     ✔ tibble    3.2.1
## ✔ purrr     1.0.1     ✔ tidyr     1.3.0
## ✔ readr     2.1.4     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ readr::col_factor() masks scales::col_factor()
## ✖ purrr::discard()    masks scales::discard()
## ✖ dplyr::filter()     masks stats::filter()
## ✖ dplyr::lag()        masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(tidyselect)
## Warning: package 'tidyselect' was built under R version 4.3.1
library(epitools)
library(DescTools)
## Warning: package 'DescTools' was built under R version 4.3.1
library(caTools)
## Warning: package 'caTools' was built under R version 4.3.1
library(tidytext)
## Warning: package 'tidytext' was built under R version 4.3.1

Chương 1: Giới Thiệu

1.1 Lý do chọn Đề Tài

Đại dịch đã tác động lớn đến nền kinh tế toàn cầu và nhiều ngành nghề, khiến nhiều công việc bị gián đoạn hoặc giảm bớt,rất nhiều doanh nghiệp và tổ chức đã chuyển sang hình thức làm việc từ xa để giảm nguy cơ lây nhiễm và duy trì hoạt động.Một số ngành nghề có nhu cầu tăng cao như chăm sóc sức khỏe, dược phẩm, dịch vụ giao hàng, công nghệ thông tin và truyền thông trực tuyến,nhiều doanh nghiệp có thể giảm đầu tư tuyển dụng hoặc dừng tuyển mới trong bối cảnh khó khăn kinh tế.Nhiều doanh nghiệp phải chuyển đổi và thích ứng để duy trì hoạt động thông qua giao dịch trực tuyến, cài đặt hệ thống làm việc từ xa, và sử dụng công nghệ.

Chính vì thế, tôi thực hiện nghiên cứu về các yếu tố tác động đến công việc trước và sau đại dịch theo từng độ tuổi dựa trên bảng khảo sát thông tin.

1.2 Mục Tiêu Nghiên Cứu

Dựa trên những dữ liệu đã thu thập được mục tiêu chính của đề tài này là phân tích các yếu tố ảnh hưởng đến tâm lý của dịch Covid

1.3 Đối tượng nghiên cứu

Đối tượng nghiên cứu: các yếu tố ảnh hưởng đến tâm lý của dịch Covid Về hướng kĩ thuật, nghiên cứu này có đối tượng là dữ liệu thời gian. Các đối tượng trong quan hệ là dữ liệu thời gian theo độ tuổi từ 19 đến 60 tuổi trở lên

1.4 Phương pháp nghiên cứu

Sử dụng mô hình hồi quy tuyến tính để phân tích các yếu tố anh hưởng đến tâm lý công việc trước và sau đại dịch

1.5 Kết cấu đề bài

Chương 1 Giới thiệu

Chương 2 Tổng quan lý thuyết

Chương 3 Thiết kế nghiên cứu

Chương 4 Kết quả nghiên cứu

Chương 5 Kết luận

Chương 2 Tổng quan lý thuyết

2.1 Đánh giá mức độ thư giãn trong công việc trước và trong dịch (relaxed)

Mức độ thư giãn trong công việc có thể có sự khác biệt đáng kể giữa trước và trong đại dịch COVID-19. Dưới đây là một số điểm đánh giá chung về mức độ thư giãn trong công việc trong hai giai đoạn này:

Trước đại dịch:

Môi trường làm việc đa dạng: Trước khi đại dịch bùng phát, nhiều người làm việc tại văn phòng, nhà máy, cửa hàng hoặc các nơi công cộng khác. Môi trường làm việc trực tiếp này có thể mang lại cảm giác thoải mái và gắn kết với đồng nghiệp.

Giao tiếp trực tiếp: Làm việc trực tiếp cho phép bạn dễ dàng giao tiếp và tương tác với đồng nghiệp, giúp giảm căng thẳng và cải thiện tinh thần làm việc.

Cơ hội vui chơi và thư giãn: Trước đại dịch, người lao động thường có nhiều cơ hội thư giãn sau giờ làm việc, chẳng hạn như đi dạo chơi, đi xem phim, hẹn hò với bạn bè hay tham gia các hoạt động giải trí khác.

Trong đại dịch:

Làm việc từ xa: Đại dịch COVID-19 đã tác động mạnh mẽ đến môi trường làm việc, khiến rất nhiều người phải làm việc từ xa. Mặc dù có những lợi ích như tiết kiệm thời gian di chuyển, nhưng làm việc từ xa có thể làm mất đi sự gắn kết và tương tác trực tiếp với đồng nghiệp.

Căng thẳng và lo âu: Đại dịch gây ra một môi trường không chắc chắn và lo lắng, khiến nhiều người phải đối mặt với cảm giác bất an về công việc và tương lai.

Thiếu cơ hội thư giãn: Với hạn chế di chuyển và giãn cách xã hội, nhiều cơ hội thư giãn sau giờ làm việc đã bị hạn chế. Điều này có thể làm tăng mức độ căng thẳng và giảm đi sự thư giãn sau một ngày làm việc căng thẳng.

Mức độ thư giãn trong công việc có thể thay đổi tùy thuộc vào từng trường hợp cụ thể. Một số người có thể thấy thư giãn hơn khi làm việc từ xa, trong khi người khác có thể cảm thấy cô đơn và cần tìm cách tạo ra môi trường làm việc thư giãn tại nhà. Trong mọi trường hợp, quản lý tâm lý và tạo ra cân bằng trong công việc và cuộc sống cá nhân rất quan trọng để duy trì mức độ thư giãn và sự hài lòng trong công việc.

2.2 Nghể nghiệp trước và trong dịch (occupation)

Nghề nghiệp trước và trong đại dịch có thể có sự khác biệt rõ rệt, đặc biệt là do ảnh hưởng của đại dịch COVID-19 lên nền kinh tế và các ngành nghề. Dưới đây là một số ví dụ về sự thay đổi và tác động của đại dịch đối với một số ngành nghề cụ thể:

Ngành y tế và chăm sóc sức khỏe:

Trước đại dịch: Ngành y tế và chăm sóc sức khỏe đã là lĩnh vực ổn định và có nhu cầu cao về nhân lực. Trong đại dịch: Các chuyên gia y tế và nhân viên chăm sóc sức khỏe trở thành nhóm người có vai trò quan trọng trong đối phó với đại dịch. Nhu cầu về nhân lực trong ngành này tăng cao, đặc biệt là ở các bệnh viện và các cơ sở chăm sóc sức khỏe cơ sở.

Một số ngành nghề phổ biến như:

Công nghệ thông tin và truyền thông trực tuyến: Trước đại dịch: Công nghệ thông tin đã phát triển nhanh chóng và trở thành một lĩnh vực có nhiều cơ hội việc làm. Trong đại dịch: Đại dịch đã thúc đẩy việc sử dụng công nghệ thông tin và truyền thông trực tuyến hơn bao giờ hết. Các công ty công nghệ và truyền thông trực tuyến như Zoom, Microsoft Teams, và các nền tảng giáo dục trực tuyến đã trở nên phổ biến hơn và có nhu cầu cao về kỹ thuật viên, lập trình viên, và chuyên gia liên quan.

Ngành du lịch và dịch vụ hàng không: Trước đại dịch: Ngành du lịch và dịch vụ hàng không phát triển mạnh mẽ, cung cấp nhiều cơ hội việc làm liên quan đến dịch vụ, khách sạn, hàng không, hướng dẫn du lịch, v.v. Trong đại dịch: Đại dịch đã ảnh hưởng nặng nề đến ngành du lịch và dịch vụ hàng không. Hạn chế di chuyển và giãn cách xã hội đã làm giảm mạnh nhu cầu du lịch và dịch vụ liên quan, dẫn đến việc giảm bớt các cơ hội việc làm trong lĩnh vực này.

Ngành sản xuất và nhà máy: Trước đại dịch: Ngành sản xuất và nhà máy thường hoạt động với nhiều công nhân và quy mô sản xuất lớn. Trong đại dịch: Nhiều nhà máy và cơ sở sản xuất đã phải điều chỉnh quy trình và triển khai biện pháp giãn cách xã hội để đảm bảo an toàn cho nhân viên. Điều này có thể làm giảm quy mô sản xuất và ảnh hưởng đến nhu cầu về lao động trong ngành này.

Chương 3 Thiết kế nghiên cứu

3.1 Giới thiệu mô hình hồi quy tuyến tính

Mô hình hồi quy tuyến tính là một trong những phương pháp thống kê cơ bản được sử dụng để dự đoán mối quan hệ tuyến tính giữa một biến phụ thuộc (outcome variable) và một hoặc nhiều biến độc lập (predictor variables). Trong R, việc xây dựng mô hình hồi quy tuyến tính được thực hiện bằng cách sử dụng hàm lm() (Linear Model).

gồm có 5 bước như:

  1. chuẩn bị dữ liệu

  2. Xác định biến phụ thuộc và biến độc lập

  3. Xây dựng mô hình hồi quy tuyến tính

  4. Kiểm tra và đánh giá mô hình

  5. Đọc kết quả

  6. Dự đoán với mô hình

Chương 4 Kết Quả nghiên cứu

4.1 Tổng Quan về dữ liệu

Bộ dữ liệu sử dụng trong phân tích được lấy từ trang kaggle.com,có 1176 quan sát gồm 8 biến định tính và 9 biến định lượng

age: nhóm tuổi

gender: Giới tính

occupation: Nghề nghiệp

line_of_work: Dòng công việc do người đó thực hiện

time_bp: Thời gian dành cho công việc trước đại dịch

time_dp: Thời gian dành cho công việc trong thời kỳ đại dịch

travel_time: Thời gian di chuyển

easeof_online: Thích công việc trực tuyến

home_env: Thích môi trường gia đình

prod_inc: Đánh giá tăng năng suất

sleep_bal: Đánh giá chu kỳ giấc ngủ

new_skill: Có bất kỳ kỹ năng mới nào đã được học hay không

fam_connect: Đánh giá mức độ kết nối của người đó với gia đình

relaxed: Đánh giá mức độ thư giãn của người đó

self_time: Đánh giá bao nhiêu thời gian bản thân đã được mua

like_hw: Thích làm việc tại nhà

dislike_hw: Không thích làm việc tại nhà

prefer: làm việc tại nhà hay đi học

certaindays_hw: Thích liệu một số ngày làm việc tại nhà có cần thiết hay không

library(readxl)
psyco <- read_excel("D:/psyco.xlsx")
View(psyco)
str(psyco)
## tibble [1,175 × 19] (S3: tbl_df/tbl/data.frame)
##  $ age           : chr [1:1175] "19-25" "19-25" "19-25" "19-25" ...
##  $ gender        : chr [1:1175] "Male" "Male" "Male" "Male" ...
##  $ occupation    : chr [1:1175] "Student in College" "Student in School" "Student in College" "Student in College" ...
##  $ line_of_work  : chr [1:1175] NA NA NA NA ...
##  $ time_bp       : num [1:1175] 7 7 7 7 7 5 5 7 5 7 ...
##  $ time_dp       : num [1:1175] 5 11 7 7 7 7 4 9 9 7 ...
##  $ travel_time   : num [1:1175] 0.5 0.5 1.5 1.5 1.5 0.5 0.5 0.5 0.5 1.5 ...
##  $ easeof_online : num [1:1175] 1 1 2 2 2 1 2 2 2 1 ...
##  $ home_env      : num [1:1175] 2 1 2 1 2 2 1 1 2 1 ...
##  $ prod_inc      : num [1:1175] 0 -0.5 1 0 0 -1 0.5 0 1 0 ...
##  $ sleep_bal     : num [1:1175] 0 0.5 0 1 0 -1 0.5 -0.5 1 0 ...
##  $ new_skill     : num [1:1175] 0.5 -1 0.5 0.5 0 0 1 -0.5 1 0 ...
##  $ fam_connect   : num [1:1175] 1 1 0.5 0 0 -0.5 0.5 -1 1 -1 ...
##  $ relaxed       : num [1:1175] -0.5 1 0.5 -1 0.5 0 1 -0.5 1 0 ...
##  $ self_time     : num [1:1175] -0.5 1 0.5 -0.5 0 0 1 0 1 0 ...
##  $ like_hw       : num [1:1175] 100 1111 1100 100 1010 ...
##  $ dislike_hw    : num [1:1175] 1 1110 111 1111 1000 ...
##  $ prefer        : chr [1:1175] "Complete Physical Attendance" "Complete Physical Attendance" "Complete Physical Attendance" "Complete Physical Attendance" ...
##  $ certaindays_hw: chr [1:1175] "No" "No" "Yes" "No" ...

4.2 Chọn biến định tính và biến định lượng làm biến phụ thuộc

4.2.1 Chọn biến định tính làm biến phụ thuộc

Chọn biến định tính prefer là biến phụ thuộc

Giải thích: nhằm đánh giá xe các yếu tố như Thích liệu một số ngày làm việc tại nhà có cần thiết hay không, Thích công việc trực tuyến Thích môi trường gia đình

4.2.2 Chọn biến định lượng làm biến phụ thuộc

Chọn biến định lượng relaxed phụ thuộc

Giải thích: Mức độ thư giãn phụ thuộc vào dòng công việc của nười đó hiện tại, công viện trực tiếp hay trực tuyến nếu công việc khác nhau cũng làm ảnh hưởng đến tâm lý

4.3 Thống kê mô tả

4.3.1 Thống kê mô tả các biến định tính

4.3.1.1 Biến prefer(số người thích làm việc tại nhà hay đi học)

Bảng tần số

table(psyco$prefer)
## 
## Complete Physical Attendance         Work/study from home 
##                          836                          339

có 836 người đi học đầu đủ tham gia cuộc bình chọn và 339 người thích học làm việc tại nhà tham gia bình chọn

table(psyco$prefer)/sum(table(psyco$prefer))
## 
## Complete Physical Attendance         Work/study from home 
##                    0.7114894                    0.2885106

tỉ lệ đi học đầy đủ chiếm 71.14% và thích học và làm việc tại nhà chiếm 28.8%

Đồ thị

psyco |> ggplot(aes(x = prefer, y = after_stat(count))) +
geom_bar(fill = 'black') +geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat ='count', color = 'red', vjust = - .5) +labs(x = 'người làm việc tại nhà', y = 'số người')

Dựa vào đồ thị ta thấy số người thích đi học lên đến 836 người so với 1157 người chiếm 71% và số người thích học tập và làm việc tại nah2 chiếm 29%

4.3.1.2 Biến occupation (Nghề nghiệp)

Bảng tần số

table(psyco$occupation)
## 
##                                Currently Out of Work 
##                                                   44 
##                                         Entrepreneur 
##                                                  119 
##                                            Homemaker 
##                                                   82 
## Medical Professional aiding efforts against COVID-19 
##                                                   73 
##                               Retired/Senior Citizen 
##                                                    2 
##                                   Student in College 
##                                                  358 
##                                    Student in School 
##                                                   18 
##                                 Working Professional 
##                                                  479

Từ bảng ta thấy có 44 người không có việc làm tham gia vào vuộc bình chọn 82 người nội trợ 2 Người đã nghỉ hưu/Người cao tuổi tham gia bình chọn có 18 người là sinh viên, có 119 doanh nhân có 73 người nỗ lực hỗ trợ của Chuyên gia Y tế chống lại COVID-19 tham gia bình chọn có 358 sinh viên đại học tham gia bình chọn, có 479 người làm việc chuyên nghiệp tham gia bình chọn

table(psyco$occupation)/sum(table(psyco$occupation))
## 
##                                Currently Out of Work 
##                                          0.037446809 
##                                         Entrepreneur 
##                                          0.101276596 
##                                            Homemaker 
##                                          0.069787234 
## Medical Professional aiding efforts against COVID-19 
##                                          0.062127660 
##                               Retired/Senior Citizen 
##                                          0.001702128 
##                                   Student in College 
##                                          0.304680851 
##                                    Student in School 
##                                          0.015319149 
##                                 Working Professional 
##                                          0.407659574

Tỉ lệ người không có việc làm chiêm 0.37% người nội trợ chiếm 0.698% Người đã nghỉ hưu/Người cao tuổi chiếm 0.1% sinh viên chiếm 0.15% doanh nhân chiếm 10.1% người nỗ lực hỗ trợ của Chuyên gia Y tế chống lại COVID-19 chiếm 6.21% sinh viên đại học chiếm 30.4% ngyuoi72 làm việc chuyên nghiệp chiếm 40.7%

Đồ thị

library(ggplot2)
psyco |> ggplot(aes(x = occupation, y = after_stat(count))) +
geom_bar(fill = 'black') +geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat ='count', color = 'red', vjust = - .5) +labs(x = 'Công việc', y = 'số tuổi')

Từ đồ thị ta thấy công việc Working Professional được nhiều người ưa chuộng nhất có 479 trên tổng 1175 người chiếm 40.77% và Retired/Senior Citizen chiếm 2 người trong 1175 người chiếm 0.17%

4.3.1.3 Biến gender (giới tính)

Bảng tần số

table(psyco$gender)
## 
## Female   Male 
##    521    654

Có 512 người nữ tham gia bình chọn và 654 nam tham gia

table(psyco$gender)/sum(table(psyco$gender))
## 
##    Female      Male 
## 0.4434043 0.5565957

Tỉ lệ nữ chiếm 44.3% và nam chiếm 55.6%

Đồ thị

psyco |> ggplot(aes(x = gender, y = after_stat(count))) +
geom_bar(fill = 'black') +geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat ='count', color = 'red', vjust = - .5) +labs(x = 'giới tính', y = 'Công việc')

Từ đồ thị ta thấy tỷ lệ nam giới có công việc trước và trong dịch là 654 người trên tổng 1157 nguời chiếm 56% tỷ lệ nữ giới trước và trong dịch có công việc là 512 người chiếm 44%

4.3.1.4 Biến certaindays_hw (số người thích làm công việc tại nhà)

Bảng tần số

table(psyco$certaindays_hw)
## 
##  No Yes 
## 576 599

số người thích công việc tại nhà là 568 người không thích là 309 người khác là 298 người

table(psyco$certaindays_hw)/sum(table(psyco$certaindays_hw))
## 
##        No       Yes 
## 0.4902128 0.5097872

tỉ lệ đồng ý chiếm 48.34% không đồng ý chiếm 26.29% khác chiếm 25.36%

Đồ thị

library(ggplot2)
psyco |> ggplot(aes(x = certaindays_hw, y = after_stat(count))) +
geom_bar(fill = 'black') +geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat ='count', color = 'red', vjust = - .5) +labs(x = 'làm việc tại nhà có cần thiết không', y = 'công việc')

Từ đồ thị ta thấy mục độ cần thiết làm công việc tại nhà là 48.34%, Mức độ không cần thiết làm tại nhà là 26.30%, Mức độ làm tại nhà hay làm tại cửa hàng là 25.36% trên tổng 1157 biến

4.3.1.5 Biến easeof_online: Thích công việc trực tuyến

Bảng tần số

table(psyco$easeof_online)
## 
##   1   2 
## 592 583

có 592 người thích công việc trực tuyến và 583 người không thích công việc trực tuyến

table(psyco$easeof_online)/sum(table(psyco$easeof_online))
## 
##         1         2 
## 0.5038298 0.4961702

người thích công việc trực tuyến chiếm 50.3% và không thích công việc trực tuyến chiếm 49.6%

Đồ thị

library(ggplot2)
psyco |> ggplot(aes(x = easeof_online, y = after_stat(count))) +
geom_bar(fill = 'black') +geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat ='count', color = 'red', vjust = - .5) +labs(x = 'thích công việc trực tuyến', y = 'công việc')

Từ đồ thị ta thấy số người thích công việc trực tuyến chiếm 50.38% và không thích chiếm 49.62%

4.3.1.6 Biến home_env: Thích môi trường gia đình

Bảng tần số

table(psyco$home_env)
## 
##   1   2 
## 555 620

số người thích môi trường gia đình 555 người trên tổng 1157 người và 620 người không thích

table(psyco$home_env)/sum(table(psyco$home_env))
## 
##         1         2 
## 0.4723404 0.5276596

tỉ lệ người thích môi trường gia đình chiếm 47.23% và không thích chiếm 52.7%

Đồ thị

library(ggplot2)
psyco |> ggplot(aes(x = home_env, y = after_stat(count))) +
geom_bar(fill = 'black') +geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat ='count', color = 'red', vjust = - .5) +labs(x = 'thích môi trường gia đình', y = 'công việc')

Từ đồ thị ta thấy mục độ thích môi trường gia đình chiếm 52.8% và không thích môi truong gia đình chiếm 47.2%

4.3.2 Thống kê mô tả các biến định lượng

4.3.2.1 Thống kê mô tả biến relaxed

Bảng tần số

table(psyco$relaxed)
## 
##   -1 -0.5    0  0.5    1 
##  144  268  306  274  183
table(psyco$relaxed)/sum(table(psyco$relaxed))
## 
##        -1      -0.5         0       0.5         1 
## 0.1225532 0.2280851 0.2604255 0.2331915 0.1557447

Đồ thị

psyco |> ggplot(aes(x = relaxed, y = after_stat(count))) +
geom_bar(fill = 'black') +geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat ='count', color = 'red', vjust = - .5) +labs(x = 'thời gian nghỉ ngơi', y = 'Công việc')

4.3.2.2 Thống kê mô tả biến age

Bảng tần số

table(psyco$age)
## 
## 19-25 26-32 33-40 40-50 45278 50-60   60+ 
##   346   261   102   181    73   170    42

từ bàng ta thấy có 346 người từ đổ tuổi 19-25 tham gia cuộc bình chọn 261 người từ độ tuổi 26-32 tham gia cuộc bình chọn 102 người từ độ tuổi 33-40 tham gia cuộc bình chọn có 181 người từ độ tuổi 40-50 tham gia bình chọn có 170 tham gia bình chọn rừ độ tuổi 50-60 có 42 người trên 60+ tham gia bình chọn

table(psyco$age)/sum(table(psyco$age))
## 
##      19-25      26-32      33-40      40-50      45278      50-60        60+ 
## 0.29446809 0.22212766 0.08680851 0.15404255 0.06212766 0.14468085 0.03574468

Tì lệ tuối tham gia bình chọn từ 19-25 chiếm 29.44% 26-32 chiếm 22.2% 33-40 chiếm 0.86% 40-50 chiếm 15.4% 50-60 chiếm 14.4% trên 60+ chiếm 3.57%

Đồ thị

psyco |> ggplot(aes(x = age, y = after_stat(count))) +
geom_bar(fill = 'black') +geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat ='count', color = 'red', vjust = - .5) +labs(x = 'Độ tuổi', y = 'Công việc')

Từ đồ thị ta thấy những người có độ tuổi từ 19-25 có công việc cao nhất gồm 346 trên tổng 1175 người chiếm 29.45% và số người có công việc thấp nhất ở độ tuổi 60+ với 42 người chiếm 3.57%

4.3.2.3 Thống kê mô tả biến time_bp (Thời gian dành cho công việc trước đại dịch)

table(psyco$time_bp)
## 
##   4   5   7   9  11  12 
##  33 283 412 343  53  51

thời gian dành cho công việc 4 tiếng 1 ngày có 33 người 5 tiếng có 283 người 7 tiếng có 412 người 9 tiếng có 343 người 11 tiếng có 53 người 12 tiếng có 51 người

table(psyco$time_bp)/sum(table(psyco$time_bp))
## 
##          4          5          7          9         11         12 
## 0.02808511 0.24085106 0.35063830 0.29191489 0.04510638 0.04340426

4 tiếng chiếm 0.28% 5 tiếng chiếm 24.08% 7 tiếng chiếm 35.06% 9 tiếng chiếm 29.19% 11 tiếng chiếm 4.51% 12 tiếng chiếm 4.34%

Đồ thị

psyco |> ggplot(aes(x = time_bp, y = after_stat(count))) +
geom_bar(fill = 'black') +geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat ='count', color = 'red', vjust = - .5) +labs(x = 'thời gian công việc trước đại dịch', y = 'số người')

dựa vào biểu đồ ta thấy thởi gian dành cho cong việc ở mức 7 chiếm 412 người trên 1157 người chiếm 35.06% và mức 4 chiếm ít nhất với 2.81%

4.3.2.4 Thống kê mô tả biến time_dp(Thời gian dành cho công việc sau đại dịch)

table(psyco$time_dp)
## 
##   4   5   7   9  11  12 
## 149 180 238 326 113 169

thời gian dành cho công việc 4 tiếng 1 ngày có 149 người 5 tiếng có 180 người 7 tiếng có 283 người 9 tiếng có 326 người 11 tiếng có 113 người 12 tiếng có 169 người

table(psyco$time_bp)/sum(table(psyco$time_bp))
## 
##          4          5          7          9         11         12 
## 0.02808511 0.24085106 0.35063830 0.29191489 0.04510638 0.04340426

4 tiếng chiếm 0.28% 5 tiếng chiếm 24.08% 7 tiếng chiếm 35.06% 9 tiếng chiếm 29.19% 11 tiếng chiếm 4.51% 12 tiếng chiếm 4.34%

Đồ thị

psyco |> ggplot(aes(x = time_bp, y = after_stat(count))) +
geom_bar(fill = 'black') +geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat ='count', color = 'red', vjust = - .5) +labs(x = 'thời gian công việc sau đại dịch', y = 'số người')

Dựa vào đồ thị ta thấy thời gian trung bình người đi làm trước đại dịch lên đến 326 trên tông 1175 người chiếm 35.06% và thấp nhất ở mức 149 người chiếm 2.81%

4.3.2.5 Biến prod_inc ( Đánh giá tăng năng suất)

table(psyco$prod_inc)
## 
##   -1 -0.5    0  0.5    1 
##  150  279  295  302  149

tăng năng suất ở múc -1 là 150 người -0.5 là 279 người 0 là 295 0.5 là 302 người mức 1 là 149 người

table(psyco$prod_inc)/sum(table(psyco$prod_inc))
## 
##        -1      -0.5         0       0.5         1 
## 0.1276596 0.2374468 0.2510638 0.2570213 0.1268085

chiếm 12.7% ở mức -1 23.7% mức -0.5 25.10% ở mức 0 25.7% ở mức 0.5 12.6% ờ mức 1

psyco |> ggplot(aes(x = prod_inc, y = after_stat(count))) +
geom_bar(fill = 'black') +geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat ='count', color = 'red', vjust = - .5) +labs(x = 'đánh giá tăng năng suất', y = 'số người')

Dữa vào đồ thị thấy có 302 người được đánh giá tăng năng suất trên tổng 1157 người chiếm 25.7052% và 149 người đánh giá ít nhất chiếm 12.681%

4.3.2.6 Biến sleep_bal (Đánh giá chu kỳ giấc ngủ)

table(psyco$sleep_bal)
## 
##   -1 -0.5    0  0.5    1 
##  214  313  270  271  107

Đánh giá giấc ngủ ở mức -1 là 214 người -0.5 là 313 người 0 là 270 người 0.5 là 271 người 1 là 107 người

table(psyco$sleep_bal)/sum(table(psyco$sleep_bal))
## 
##         -1       -0.5          0        0.5          1 
## 0.18212766 0.26638298 0.22978723 0.23063830 0.09106383

mức -1 chiếm 18.21% mức -0.5 chiếm 26.6% mức 0 chiếm 22.9% mức 0.5 chiếm 23.06% mức 1 chiếm 9.16%

Đồ thị

psyco |> ggplot(aes(x = sleep_bal, y = after_stat(count))) +
geom_bar(fill = 'black') +geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat ='count', color = 'red', vjust = - .5) +labs(x = 'giấc ngủ', y = 'số người')

Dựa vào biểu đồ ta thấy có tông 313 người dược đánh giá giấc ngủ chiếm 26.638% và có ít nhất 107 người chiếm 9.106%

4.3.2.7 Thống kê mô tả biến fam_connect

table(psyco$fam_connect)
## 
##   -1 -0.5    0  0.5    1 
##  181   92  162  414  326

ở mức -1 là 181 người -0.5 là 91 người 0 là 162 người 0.5 là 414 người 1 là 326 người

table(psyco$fam_connect)/sum(table(psyco$fam_connect))
## 
##         -1       -0.5          0        0.5          1 
## 0.15404255 0.07829787 0.13787234 0.35234043 0.27744681

mức -1 chiếm 15.40% mức -0.5 chiếm 7.82% mức 0 chiếm 13.7% mức 0.5 chiếm 35.23% mức 1 chiếm 27.7%

Đồ thị

psyco |> ggplot(aes(x = sleep_bal, y = after_stat(count))) +
geom_bar(fill = 'black') +geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat ='count', color = 'red', vjust = - .5) +labs(x = 'mức độ kết nối của người đó với gia đình', y = 'số người')

Từ đồ thị ta thấy mức độ kết nối của người đó với gia đình cao nhất ở độ tuổi 60+ có 326 người chiếm 9.106%

4.4 Thống kê suy diễn cho dữ liệu định tính

4.4.1 Kiểm định tính độc lập cho 2 biến định tính

4.4.1.1 Biến prefer và biến gender

prefer = psyco$prefer
gender = psyco$gender
dt1 <- table(prefer, psyco$gender)
dt1
##                               
## prefer                         Female Male
##   Complete Physical Attendance    311  525
##   Work/study from home            210  129
chisq.test(dt1)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  dt1
## X-squared = 58.848, df = 1, p-value = 1.704e-14

Kết quả kiểm định cho thấy, P-value < 0.05 vì vậy bác bỏ giả thuyết H0, tức là nghề nghiệp của người đó và giới tính có quan hệ với nhau

4.4.1.2 Biến prefer và biến home_env

dt2 <- table(prefer, psyco$home_env)
dt2
##                               
## prefer                           1   2
##   Complete Physical Attendance 395 441
##   Work/study from home         160 179
chisq.test(dt2)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  dt2
## X-squared = 0, df = 1, p-value = 1

Kết quả kiểm định cho thấy, P-value < 0.05 vì vậy bác bỏ giả thuyết H0, tức là nghề nghiệp và số người làm việc tại nhà có quan hệ với nhau

4.4.1.3 Biến prefer và biến certaindays_hw

dt3 <- table(prefer, psyco$certaindays_hw)
dt3
##                               
## prefer                          No Yes
##   Complete Physical Attendance 410 426
##   Work/study from home         166 173
chisq.test(dt3)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  dt3
## X-squared = 0, df = 1, p-value = 1

Kết quả kiểm định cho thấy, P-value < 0.05 vì vậy bác bỏ giả thuyết H0, tức là đi học hay đi làm và ột số ngày làm việc tại nhà có cần thiết hay không có quan hệ với nhau

4.4.1.4 Biến prefer và biến easeof_online

dte <- table(prefer, psyco$easeof_online)
dte
##                               
## prefer                           1   2
##   Complete Physical Attendance 441 395
##   Work/study from home         151 188
chisq.test(dte)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  dte
## X-squared = 6.1767, df = 1, p-value = 0.01294

Kết quả kiểm định cho thấy, P-value < 0.05 vì vậy bác bỏ giả thuyết H0, tức là đi học hay đi làm và thích công việc trực tuyến có quan hệ với nhau

4.4.1.5 Biến prefer và biến home_env

dth <- table(prefer, psyco$home_env)
dth
##                               
## prefer                           1   2
##   Complete Physical Attendance 395 441
##   Work/study from home         160 179
chisq.test(dth)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  dth
## X-squared = 0, df = 1, p-value = 1

Kết quả kiểm định cho thấy, P-value < 0.05 vì vậy bác bỏ giả thuyết H0, tức là đi học hay đi làm và thích môi trường gia đình có quan hệ với nhau

4.4.1.6 Biến relaxed và biến age

relaxed = psyco$relaxed
dt4 <- table(relaxed, psyco$age)
dt4
##        
## relaxed 19-25 26-32 33-40 40-50 45278 50-60 60+
##    -1      65     5     2    27     7    36   2
##    -0.5    67    23    47     4    23   104   0
##    0       89   130     5    45    28     9   0
##    0.5     78    14    46   103    12    20   1
##    1       47    89     2     2     3     1  39
chisq.test(dt4)
## 
##  Pearson's Chi-squared test
## 
## data:  dt4
## X-squared = 829.59, df = 24, p-value < 2.2e-16

Kết quả kiểm định cho thấy, P-value < 0.05 vì vậy bác bỏ giả thuyết H0, tức là mức độ thư giãn của người đó và độ tuổi có quan hệ với nhau

4.4.1.7 Biến relaxed và biến prefer

dt5 <- table(relaxed, psyco$age)
dt5
##        
## relaxed 19-25 26-32 33-40 40-50 45278 50-60 60+
##    -1      65     5     2    27     7    36   2
##    -0.5    67    23    47     4    23   104   0
##    0       89   130     5    45    28     9   0
##    0.5     78    14    46   103    12    20   1
##    1       47    89     2     2     3     1  39
chisq.test(dt5)
## 
##  Pearson's Chi-squared test
## 
## data:  dt5
## X-squared = 829.59, df = 24, p-value < 2.2e-16

Kết quả kiểm định cho thấy, P-value < 0.05 vì vậy bác bỏ giả thuyết H0, tức là mức độ thư giãn của người đó và số người làm việc tại nhà hay đi học có quan hệ với nhau

4.4.1.8 Biến relaxed và biến certaindays_hw

dt6 <- table(relaxed, psyco$certaindays_hw)
dt6
##        
## relaxed  No Yes
##    -1    70  74
##    -0.5 132 136
##    0    153 153
##    0.5  123 151
##    1     98  85
chisq.test(dt6)
## 
##  Pearson's Chi-squared test
## 
## data:  dt6
## X-squared = 3.5068, df = 4, p-value = 0.4769

Kết quả kiểm định cho thấy, P-value < 0.05 vì vậy bác bỏ giả thuyết H0, tức là mức độ thư giãn của người đó và một số ngày làm việc tại nhà có cần thiết hay không có quan hệ với nhau

4.4.1.9 Biến relaxed và biến travel_time

dt7 <- table(relaxed, psyco$travel_time)
dt7
##        
## relaxed 0.5 1.5 2.5   3
##    -1    64  42  24  14
##    -0.5 206  57   2   3
##    0    206  82  18   0
##    0.5  140  67  63   4
##    1     83  95   4   1
chisq.test(dt7)
## Warning in chisq.test(dt7): Chi-squared approximation may be incorrect
## 
##  Pearson's Chi-squared test
## 
## data:  dt7
## X-squared = 225.33, df = 12, p-value < 2.2e-16

ết quả kiểm định cho thấy, P-value < 0.05 vì vậy bác bỏ giả thuyết H0, tức là mức độ thư giãn của người đó và thời gian di chuyển có quan hệ với nhau

4.1.1.10 Biến relaxed và biến self_time

dt8 <- table(relaxed, psyco$self_time)
dt8
##        
## relaxed  -1 -0.5   0 0.5   1
##    -1    53   72  12   5   2
##    -0.5   6  146  92  23   1
##    0      9   26 177  92   2
##    0.5    0    7  81 166  20
##    1      1    1  55   3 123
chisq.test(dt8)
## 
##  Pearson's Chi-squared test
## 
## data:  dt8
## X-squared = 1406.9, df = 16, p-value < 2.2e-16

Kết quả kiểm định cho thấy, P-value < 0.05 vì vậy bác bỏ giả thuyết H0, tức là mức độ thư giãn của người đó và mức độ kết nối của đánh giá bao nhiêu thời gian bản thân đã được mua có quan hệ với nhau

4.4.1.11 Biến relaxed và biến gender

dt9 <- table(relaxed, psyco$gender)
dt9
##        
## relaxed Female Male
##    -1       60   84
##    -0.5    161  107
##    0        70  236
##    0.5     122  152
##    1       108   75
chisq.test(dt9)
## 
##  Pearson's Chi-squared test
## 
## data:  dt9
## X-squared = 100.4, df = 4, p-value < 2.2e-16

Kết quả kiểm định cho thấy, P-value < 0.05 vì vậy bác bỏ giả thuyết H0, tức là mức độ thư giãn của người đó và giới tính có quan hệ với nhau

4.4.2 Rủi ro tương đối (Risk ratio) và rỷ lệ chênh (oddsratio)

4.4.2.1 Biến Biến prefer và biến gender

library(epitools)
d1 <- table(psyco$prefer, psyco$gender)
riskratio(d1)
## $data
##                               
##                                Female Male Total
##   Complete Physical Attendance    311  525   836
##   Work/study from home            210  129   339
##   Total                           521  654  1175
## 
## $measure
##                               risk ratio with 95% C.I.
##                                 estimate     lower     upper
##   Complete Physical Attendance 1.0000000        NA        NA
##   Work/study from home         0.6059503 0.5239007 0.7008499
## 
## $p.value
##                               two-sided
##                                  midp.exact fisher.exact   chi.square
##   Complete Physical Attendance           NA           NA           NA
##   Work/study from home         1.165734e-14  1.30989e-14 1.025679e-14
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
epitab(d1, method = "oddsratio")
## $tab
##                               
##                                Female       p0 Male        p1 oddsratio
##   Complete Physical Attendance    311 0.596929  525 0.8027523 1.0000000
##   Work/study from home            210 0.403071  129 0.1972477 0.3638912
##                               
##                                    lower     upper     p.value
##   Complete Physical Attendance        NA        NA          NA
##   Work/study from home         0.2805031 0.4720688 1.30989e-14
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

4.4.2.2 Biến prefer và biến easeof_online

library(epitools)
d2 <- table(psyco$prefer, psyco$easeof_online)
riskratio(d2)
## $data
##                               
##                                  1   2 Total
##   Complete Physical Attendance 441 395   836
##   Work/study from home         151 188   339
##   Total                        592 583  1175
## 
## $measure
##                               risk ratio with 95% C.I.
##                                estimate    lower    upper
##   Complete Physical Attendance 1.000000       NA       NA
##   Work/study from home         1.173728 1.041735 1.322444
## 
## $p.value
##                               two-sided
##                                midp.exact fisher.exact chi.square
##   Complete Physical Attendance         NA           NA         NA
##   Work/study from home         0.01089995   0.01199882 0.01078203
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
epitab(d2, method = "oddsratio")
## $tab
##                               
##                                  1        p0   2      p1 oddsratio    lower
##   Complete Physical Attendance 441 0.7449324 395 0.67753  1.000000       NA
##   Work/study from home         151 0.2550676 188 0.32247  1.390024 1.078669
##                               
##                                   upper    p.value
##   Complete Physical Attendance       NA         NA
##   Work/study from home         1.791251 0.01199882
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

4.4.2.4 Biến prefer và biến home_env

library(epitools)
dh <- table(psyco$prefer, psyco$home_env)
riskratio(dh)
## $data
##                               
##                                  1   2 Total
##   Complete Physical Attendance 395 441   836
##   Work/study from home         160 179   339
##   Total                        555 620  1175
## 
## $measure
##                               risk ratio with 95% C.I.
##                                estimate    lower    upper
##   Complete Physical Attendance  1.00000       NA       NA
##   Work/study from home          1.00097 0.888357 1.127858
## 
## $p.value
##                               two-sided
##                                midp.exact fisher.exact chi.square
##   Complete Physical Attendance         NA           NA         NA
##   Work/study from home          0.9877286            1  0.9873012
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
epitab(dh, method = "oddsratio")
## $tab
##                               
##                                  1        p0   2        p1 oddsratio     lower
##   Complete Physical Attendance 395 0.7117117 441 0.7112903  1.000000        NA
##   Work/study from home         160 0.2882883 179 0.2887097  1.002055 0.7782223
##                               
##                                   upper p.value
##   Complete Physical Attendance       NA      NA
##   Work/study from home         1.290267       1
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

4.4.2.5 Biến relaxed và biến travel_time

library(epitools)
d3 <- table(psyco$relaxed, psyco$travel_time)
riskratio(d3)
## Warning in chisq.test(xx, correct = correction): Chi-squared approximation may
## be incorrect
## $data
##        
##         0.5 1.5 2.5  3 Total
##   -1     64  42  24 14   144
##   -0.5  206  57   2  3   268
##   0     206  82  18  0   306
##   0.5   140  67  63  4   274
##   1      83  95   4  1   183
##   Total 699 343 111 22  1175
## 
## $measure
##       risk ratio with 95% C.I.
##         estimate     lower     upper
##   -1   1.0000000        NA        NA
##   -0.5 0.5469853 0.3937720 0.7598127
##   0    0.7185847 0.5334710 0.9679325
##   0.5  0.8168852 0.6011855 1.1099760
##   1    1.3469770 1.0260223 1.7683309
## 
## $p.value
##       two-sided
##          midp.exact fisher.exact   chi.square
##   -1             NA           NA           NA
##   -0.5 0.0006113543 7.241984e-16 1.690807e-15
##   0    0.0376014697 5.064695e-11 5.691453e-11
##   0.5  0.2065144396 5.225243e-04 3.570631e-04
##   1    0.0257050514 2.481452e-10 1.185593e-09
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
epitab(d3, method = "oddsratio")
## Warning in chisq.test(xx, correct = correction): Chi-squared approximation may
## be incorrect
## $tab
##       
##        0.5         p0 1.5        p1 oddsratio     lower     upper      p.value
##   -1    64 0.09155937  42 0.1224490 1.0000000        NA        NA           NA
##   -0.5 206 0.29470672  57 0.1661808 0.4216366 0.2589864 0.6864355 7.241984e-16
##   0    206 0.29470672  82 0.2390671 0.6065650 0.3806954 0.9664447 5.064695e-11
##   0.5  140 0.20028612  67 0.1953353 0.7292517 0.4485198 1.1856958 5.225243e-04
##   1     83 0.11874106  95 0.2769679 1.7441193 1.0705656 2.8414441 2.481452e-10
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

4.4.2.6 Biến relaxed và biến certaindays_hw

library(epitools)
d4 <- table(psyco$relaxed, psyco$certaindays_hw)
riskratio(d4)
## $data
##        
##          No Yes Total
##   -1     70  74   144
##   -0.5  132 136   268
##   0     153 153   306
##   0.5   123 151   274
##   1      98  85   183
##   Total 576 599  1175
## 
## $measure
##       risk ratio with 95% C.I.
##         estimate     lower    upper
##   -1   1.0000000        NA       NA
##   -0.5 0.9874950 0.8102277 1.203546
##   0    0.9729730 0.8010821 1.181747
##   0.5  1.0724009 0.8855423 1.298689
##   1    0.9038547 0.7236621 1.128915
## 
## $p.value
##       two-sided
##        midp.exact fisher.exact chi.square
##   -1           NA           NA         NA
##   -0.5  0.9016946    0.9179945  0.9009882
##   0     0.7846127    0.8399322  0.7834049
##   0.5   0.4705854    0.4721369  0.4684011
##   1     0.3778292    0.4354085  0.3748576
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
epitab(d4, method = "oddsratio")
## $tab
##       
##         No        p0 Yes        p1 oddsratio     lower    upper   p.value
##   -1    70 0.1215278  74 0.1235392 1.0000000        NA       NA        NA
##   -0.5 132 0.2291667 136 0.2270451 0.9746110 0.6499526 1.461440 0.9179945
##   0    153 0.2656250 153 0.2554257 0.9459459 0.6364763 1.405887 0.8399322
##   0.5  123 0.2135417 151 0.2520868 1.1612832 0.7750889 1.739902 0.4721369
##   1     98 0.1701389  85 0.1419032 0.8204633 0.5298669 1.270432 0.4354085
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

4.4.3 Mô hình logit

prefer = psyco$prefer
easeof_online = psyco$easeof_online
home_env = psyco$home_env
occupation = psyco$occupation
fam_connect = psyco$fam_connect
gender = psyco$gender
certaindays_hw = psyco$certaindays_hw
travel_time = psyco$travel_time
like_hw = psyco$like_hw
dislike_hw = psyco$dislike_hw
mh1 <- glm(data = psyco, formula = factor(prefer) ~ gender + easeof_online + home_env + certaindays_hw + fam_connect + travel_time, family = binomial(link = "logit"))
levels(factor(prefer))
## [1] "Complete Physical Attendance" "Work/study from home"
summary(mh1)
## 
## Call:
## glm(formula = factor(prefer) ~ gender + easeof_online + home_env + 
##     certaindays_hw + fam_connect + travel_time, family = binomial(link = "logit"), 
##     data = psyco)
## 
## Coefficients:
##                   Estimate Std. Error z value Pr(>|z|)    
## (Intercept)       -0.41098    0.33680  -1.220   0.2224    
## genderMale        -1.18570    0.14106  -8.406  < 2e-16 ***
## easeof_online      0.33371    0.13748   2.427   0.0152 *  
## home_env          -0.05008    0.13755  -0.364   0.7158    
## certaindays_hwYes -0.06996    0.13761  -0.508   0.6112    
## fam_connect        0.83118    0.11516   7.217 5.30e-13 ***
## travel_time       -0.57341    0.11063  -5.183 2.18e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 1411.9  on 1174  degrees of freedom
## Residual deviance: 1267.9  on 1168  degrees of freedom
## AIC: 1281.9
## 
## Number of Fisher Scoring iterations: 4

4.4.4 Mô hình probit

mh2 <- glm(data = psyco, formula = factor(prefer) ~ gender + easeof_online + home_env + certaindays_hw + fam_connect + travel_time, family = binomial(link = "probit"))
levels(factor(prefer))
## [1] "Complete Physical Attendance" "Work/study from home"
summary(mh2)
## 
## Call:
## glm(formula = factor(prefer) ~ gender + easeof_online + home_env + 
##     certaindays_hw + fam_connect + travel_time, family = binomial(link = "probit"), 
##     data = psyco)
## 
## Coefficients:
##                   Estimate Std. Error z value Pr(>|z|)    
## (Intercept)       -0.31924    0.19798  -1.612   0.1069    
## genderMale        -0.66299    0.08201  -8.084 6.25e-16 ***
## easeof_online      0.20687    0.08077   2.561   0.0104 *  
## home_env          -0.02718    0.08089  -0.336   0.7369    
## certaindays_hwYes -0.02860    0.08092  -0.353   0.7238    
## fam_connect        0.44838    0.06461   6.940 3.92e-12 ***
## travel_time       -0.29050    0.06230  -4.663 3.12e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 1411.9  on 1174  degrees of freedom
## Residual deviance: 1276.0  on 1168  degrees of freedom
## AIC: 1290
## 
## Number of Fisher Scoring iterations: 5

4.4.5 Mô hình cloglog

mh3 <- glm(data = psyco, formula = factor(prefer) ~ gender + easeof_online + home_env + certaindays_hw + fam_connect + travel_time, family = binomial(link = "cloglog"))
levels(factor(prefer))
## [1] "Complete Physical Attendance" "Work/study from home"
summary(mh3)
## 
## Call:
## glm(formula = factor(prefer) ~ gender + easeof_online + home_env + 
##     certaindays_hw + fam_connect + travel_time, family = binomial(link = "cloglog"), 
##     data = psyco)
## 
## Coefficients:
##                   Estimate Std. Error z value Pr(>|z|)    
## (Intercept)       -0.60296    0.27023  -2.231   0.0257 *  
## genderMale        -1.02745    0.11417  -8.999  < 2e-16 ***
## easeof_online      0.25587    0.11053   2.315   0.0206 *  
## home_env          -0.06445    0.11040  -0.584   0.5594    
## certaindays_hwYes -0.07171    0.11031  -0.650   0.5156    
## fam_connect        0.74055    0.09533   7.768 7.96e-15 ***
## travel_time       -0.49513    0.09143  -5.415 6.12e-08 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 1411.9  on 1174  degrees of freedom
## Residual deviance: 1258.5  on 1168  degrees of freedom
## AIC: 1272.5
## 
## Number of Fisher Scoring iterations: 6

4.5 Lựa chọn mô hình

# Tiêu chí AIC - Akaike Information Criterion
aic1 <- AIC(mh1)
aic2 <- AIC(mh2)
aic3 <- AIC(mh3)
AIC <-cbind(aic1,aic2,aic3)
AIC
##         aic1     aic2     aic3
## [1,] 1281.95 1289.968 1272.519
# Tiêu chí Deviance
de1 <- deviance(mh1)
de2 <- deviance(mh2)
de3 <- deviance(mh3)
deviance <- cbind(de1,de2,de3)
deviance
##          de1      de2      de3
## [1,] 1267.95 1275.968 1258.519
# Tiêu chí Brier Score
bs1 <- BrierScore(mh1)
bs2 <- BrierScore(mh2)
bs3 <- BrierScore(mh3)
BrierScore <- cbind(bs1,bs2,bs3)
BrierScore
##            bs1       bs2       bs3
## [1,] 0.1756904 0.1774658 0.1741582

Dựa vào 3 tiêu chí AIC, Deviance, BrierScore, ta thấy 3 tiêu chí của mô hình cloglog nhỏ nhất, tức là mô hình cloglog là mô hình tốt nhất trong 3 mô hình.

4.6 Giải thích kết quả mô hình

summary(mh3)
## 
## Call:
## glm(formula = factor(prefer) ~ gender + easeof_online + home_env + 
##     certaindays_hw + fam_connect + travel_time, family = binomial(link = "cloglog"), 
##     data = psyco)
## 
## Coefficients:
##                   Estimate Std. Error z value Pr(>|z|)    
## (Intercept)       -0.60296    0.27023  -2.231   0.0257 *  
## genderMale        -1.02745    0.11417  -8.999  < 2e-16 ***
## easeof_online      0.25587    0.11053   2.315   0.0206 *  
## home_env          -0.06445    0.11040  -0.584   0.5594    
## certaindays_hwYes -0.07171    0.11031  -0.650   0.5156    
## fam_connect        0.74055    0.09533   7.768 7.96e-15 ***
## travel_time       -0.49513    0.09143  -5.415 6.12e-08 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 1411.9  on 1174  degrees of freedom
## Residual deviance: 1258.5  on 1168  degrees of freedom
## AIC: 1272.5
## 
## Number of Fisher Scoring iterations: 6

Mô hình hồi quy trong bài được xác định như sau:

\[ \mathrm{cloglog(\pi)} = -0.60296 -1.02745gender + 0.25587easeof_online - -0.06445home_env -0.07171certaindays_hw + 0.74055fam_connect - 0.49513travel_time \] Kết quả phân tích hồi quy Logit cho thấy, 6 biến đưa vào mô hình hồi quy để phân tích nhưng kết quả phân tích chỉ có 4 biến độc lập có ý nghĩa thống kê bao gồm:

gender Giới tính

easeof_online Thích công việc trực tuyến

fam_connect Đánh giá mức độ kết nối của người đó với gia đình

travel_time Thời gian di chuyển

Với giả thuyết các yếu tố khác không đổi, ảnh hưởng của từng biến đến được diễn giải như sau:

easeof_online Thích công việc trực tuyến sẽ có tác động khác nhau đến làm việc tại nhà hay đi học Ở mức ý nghĩa 5%, ước lượng 0.25587 cho biến này cho thấy có mối liên hệ tích tích cực làm việc tại nhà hay đi học

fam_connect Đánh giá mức độ kết nối của người đó với gia đình sẽ có tác động khác nhau đến làm việc tại nhà hay đi học Ở mức ý nghĩa 5%, ước lượng 0.74055 cho biến này cho thấy có mối liên hệ tích tích cực làm việc tại nhà hay đi học

travel_time Thời gian di chuyển sẽ có tác động khác nhau đến làm việc tại nhà hay đi học Ở mức ý nghĩa 5%, ước lượng -0.49513 cho biến này cho thấy có mối liên hệ tích tiêu cực làm việc tại nhà hay đi học

gender Giới tính khác nhau sẽ có tác động khác nhau đến làm việc tại nhà hay đi học Ở mức ý nghĩa 5%, ước lượng -1.02745 cho biến này cho thấy có mối liên hệ tích tiêu cực làm việc tại nhà hay đi học

4.7 Độ chính xác mô hình

library(caret)
## Warning: package 'caret' was built under R version 4.3.1
## Loading required package: lattice
## 
## Attaching package: 'caret'
## The following objects are masked from 'package:DescTools':
## 
##     MAE, RMSE
## The following object is masked from 'package:purrr':
## 
##     lift
### Mô hình cloglog
predictions <- predict(mh3, newdata = psyco, type = "response")
predicted_classes <- ifelse(predictions > 0.5, "1", "0")
predictions1<-factor(predicted_classes, levels = c("0","1"))
actual<- factor(psyco$prefer, labels = c("0","1"))
confusionMatrix(table(predictions1, actual))
## Confusion Matrix and Statistics
## 
##             actual
## predictions1   0   1
##            0 779 213
##            1  57 126
##                                          
##                Accuracy : 0.7702         
##                  95% CI : (0.7451, 0.794)
##     No Information Rate : 0.7115         
##     P-Value [Acc > NIR] : 3.307e-06      
##                                          
##                   Kappa : 0.3516         
##                                          
##  Mcnemar's Test P-Value : < 2.2e-16      
##                                          
##             Sensitivity : 0.9318         
##             Specificity : 0.3717         
##          Pos Pred Value : 0.7853         
##          Neg Pred Value : 0.6885         
##              Prevalence : 0.7115         
##          Detection Rate : 0.6630         
##    Detection Prevalence : 0.8443         
##       Balanced Accuracy : 0.6517         
##                                          
##        'Positive' Class : 0              
## 

Mô hình có 77.02% độ chính xác, có độ nhạy 93.18% và độ hiệu quả là 37.17%

Chương 5: Kết luận

5.1 Kết Luận

Tóm lại, đại dịch COVID-19 đã tạo ra nhiều thách thức và cơ hội cho doanh nghiệp. Những doanh nghiệp linh hoạt và tận dụng được cơ hội kỹ thuật số thường có khả năng thích nghi tốt hơn trong thời kỳ khó khăn này. Trước đại dịch COVID-19:

Môi trường kinh doanh thuận lợi: Trước đại dịch, nền kinh tế có xu hướng tăng trưởng ổn định, doanh nghiệp dễ dàng tiếp cận thị trường và nguồn lực.

Cạnh tranh mạnh mẽ: Doanh nghiệp đối đầu với sự cạnh tranh cao từ cả doanh nghiệp trong và ngoài nước. Hạn chế kỹ thuật số: Trong môi trường kinh doanh trước đại dịch, một số doanh nghiệp có thể chưa khai thác tối đa tiềm năng của công nghệ số và kỹ thuật số. Trong đại dịch COVID-19:

Khủng hoảng kinh tế: Đại dịch COVID-19 đã gây ra khủng hoảng kinh tế toàn cầu, dẫn đến suy thoái kinh tế và mất việc làm. Thích ứng với điều kiện mới: Doanh nghiệp phải thích ứng với các biện pháp phong tỏa, giãn cách xã hội và các hạn chế hoạt động kinh doanh.

Tăng cường kỹ thuật số: Đại dịch đã thúc đẩy sự chuyển đổi kỹ thuật số, khiến nhiều doanh nghiệp tập trung hơn vào phát triển và tiếp cận thị trường trực tuyến. Nhu cầu sản phẩm/dịch vụ thay đổi: Một số lĩnh vực như dịch vụ y tế, chăm sóc sức khỏe, sản phẩm giải trí trực tuyến, giao hàng và dịch vụ trực tuyến tăng trưởng mạnh mẽ, trong khi một số lĩnh vực khác bị ảnh hưởng tiêu cực. Điều kiện làm việc thay đổi: Nhiều công ty đã thúc đẩy hình thức làm việc từ xa để duy trì hoạt động kinh doanh trong đại dịch.

5.2 Kiến nghị

Dựa trên tình hình kinh doanh trong đại dịch COVID-19, dưới đây là một số kiến nghị cho doanh nghiệp:

Đẩy mạnh kỹ thuật số: Tiếp tục đầu tư và tăng cường quá trình chuyển đổi kỹ thuật số trong hoạt động kinh doanh của bạn. Xây dựng một trang web tối ưu và dễ sử dụng, tăng cường mạng xã hội và tiếp cận thị trường trực tuyến để thu hút và duy trì khách hàng trong thời gian khó khăn này.

Đa dạng hóa nguồn thu: Nghiên cứu và mở rộng lĩnh vực kinh doanh hoặc sản phẩm/dịch vụ của bạn để đa dạng hóa nguồn thu. Điều này có thể giúp giảm thiểu tác động của việc suy giảm nhu cầu trong một lĩnh vực cụ thể.

Tập trung vào sự an toàn và y tế: Nếu doanh nghiệp của bạn hoạt động trong các lĩnh vực có liên quan đến sức khỏe, chăm sóc cá nhân hoặc dịch vụ y tế, hãy đảm bảo tuân thủ các quy định về sự an toàn và y tế để bảo vệ khách hàng và nhân viên.

Tối ưu hóa quản lý tài chính: Xem xét và cải thiện quy trình quản lý tài chính của doanh nghiệp. Giảm thiểu các chi phí không cần thiết và tối ưu hóa việc thu hồi tiền nhanh chóng từ khách hàng để cải thiện dòng tiền.

Xây dựng và duy trì quan hệ khách hàng: Tạo sự tin tưởng và tăng cường quan hệ với khách hàng. Tìm hiểu nhu cầu của họ trong thời gian khó khăn và cung cấp giải pháp phù hợp. Cung cấp dịch vụ khách hàng xuất sắc và giải quyết các vấn đề nhanh chóng để duy trì lòng tin của khách hàng.

Nâng cao khả năng thích nghi: Hãy cẩn trọng với các biến đổi trong môi trường kinh doanh và xã hội. Dự đoán và thích nghi nhanh chóng với những thay đổi này để đảm bảo bền vững và phát triển trong tương lai.

Hỗ trợ nhân viên: Tạo điều kiện làm việc an toàn và đảm bảo sức khỏe tinh thần của nhân viên trong thời gian khó khăn. Đưa ra các chương trình hỗ trợ tinh thần và thúc đẩy sự cống hiến của nhân viên trong công việc.

Nắm bắt cơ hội: Hãy tìm kiếm cơ hội mới xuất hiện trong đại dịch, chẳng hạn như thị trường mới, nhu cầu mới hoặc các đối tác tiềm năng. Sẵn lòng thay đổi chiến lược kinh doanh nếu cần thiết để tận dụng những cơ hội này.

Duy trì trách nhiệm xã hội: Trong thời gian khó khăn, doanh nghiệp cũng cần chú trọng đến trách nhiệm xã hội. Hỗ trợ cộng đồng, đóng góp vào việc giảm thiểu tác động tiêu cực của đại dịch và thể hiện sự đồng tình với cộng đồng xung quanh.

Những kiến nghị này sẽ giúp doanh nghiệp vượt qua khó khăn và phát triển bền vững trong và sau đại dịch COVID-19.

Tài liệu kham khảo

T.K.Thanh, T.M.Tường, V.A.L.Duy, Bài giảng Phân tích dữ liệu định tính.

LS0tDQp0aXRsZTogIlRp4buDdSBMdeG6rW4gS+G6v3QgVGjDumMgTcO0biBI4buNYyINCmF1dGhvcjogIk5nw7QgSG/DoG5nIER1eSINCmRhdGU6ICIyMDIzLTA3LTI4Ig0Kb3V0cHV0Og0KICBodG1sX2RvY3VtZW50Og0KICAgIHRvYzogeWVzDQogICAgdG9jX2Zsb2F0Og0KICAgICAgY29sbGFwc2VkOiBubw0KICAgICAgZGZfcHJpbnQ6IHBhZ2VkDQogICAgICBoaWdobGlnaHQ6IGthdGUNCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUNCiAgICBjb2RlX2Rvd25sb2FkOiB5ZXMNCiAgICBudW1iZXJfc2VjdGlvbnM6IG5vDQogIHBkZl9kb2N1bWVudDoNCiAgICB0b2M6IHllcw0KICB3b3JkX2RvY3VtZW50Og0KICAgIHRvYzogeWVzDQotLS0NCmBgYHtyfQ0KbGlicmFyeShkcGx5cikNCmBgYA0KDQpgYGB7cn0NCmxpYnJhcnkoZ2dwbG90MikNCmBgYA0KDQpgYGB7cn0NCmxpYnJhcnkoc2NhbGVzKQ0KYGBgDQoNCmBgYHtyfQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpgYGANCg0KYGBge3J9DQpsaWJyYXJ5KHRpZHlzZWxlY3QpDQpgYGANCg0KYGBge3J9DQpsaWJyYXJ5KGVwaXRvb2xzKQ0KbGlicmFyeShEZXNjVG9vbHMpDQpgYGANCg0KYGBge3J9DQpsaWJyYXJ5KGNhVG9vbHMpDQpgYGANCg0KYGBge3J9DQpsaWJyYXJ5KHRpZHl0ZXh0KQ0KYGBgDQoNCiMgQ2jGsMahbmcgMTogR2nhu5tpIFRoaeG7h3UNCg0KIyMgMS4xIEzDvSBkbyBjaOG7jW4gxJDhu4EgVMOgaQ0KDQrEkOG6oWkgZOG7i2NoIMSRw6MgdMOhYyDEkeG7mW5nIGzhu5tuIMSR4bq/biBu4buBbiBraW5oIHThur8gdG/DoG4gY+G6p3UgdsOgIG5oaeG7gXUgbmfDoG5oIG5naOG7gSwga2hp4bq/biBuaGnhu4F1IGPDtG5nIHZp4buHYyBi4buLIGdpw6FuIMSRb+G6oW4gaG/hurdjIGdp4bqjbSBi4bubdCxy4bqldCBuaGnhu4F1IGRvYW5oIG5naGnhu4dwIHbDoCB04buVIGNo4bupYyDEkcOjIGNodXnhu4NuIHNhbmcgaMOsbmggdGjhu6ljIGzDoG0gdmnhu4djIHThu6sgeGEgxJHhu4MgZ2nhuqNtIG5ndXkgY8ahIGzDonkgbmhp4buFbSB2w6AgZHV5IHRyw6wgaG/huqF0IMSR4buZbmcuTeG7mXQgc+G7kSBuZ8Ogbmggbmdo4buBIGPDsyBuaHUgY+G6p3UgdMSDbmcgY2FvIG5oxrAgY2jEg20gc8OzYyBz4bupYyBraOG7j2UsIGTGsOG7o2MgcGjhuqltLCBk4buLY2ggduG7pSBnaWFvIGjDoG5nLCBjw7RuZyBuZ2jhu4cgdGjDtG5nIHRpbiB2w6AgdHJ1eeG7gW4gdGjDtG5nIHRy4buxYyB0dXnhur9uLG5oaeG7gXUgZG9hbmggbmdoaeG7h3AgY8OzIHRo4buDIGdp4bqjbSDEkeG6p3UgdMawIHR1eeG7g24gZOG7pW5nIGhv4bq3YyBk4burbmcgdHV54buDbiBt4bubaSB0cm9uZyBi4buRaSBj4bqjbmgga2jDsyBraMSDbiBraW5oIHThur8uTmhp4buBdSBkb2FuaCBuZ2hp4buHcCBwaOG6o2kgY2h1eeG7g24gxJHhu5VpIHbDoCB0aMOtY2gg4bupbmcgxJHhu4MgZHV5IHRyw6wgaG/huqF0IMSR4buZbmcgdGjDtG5nIHF1YSBnaWFvIGThu4tjaCB0cuG7sWMgdHV54bq/biwgY8OgaSDEkeG6t3QgaOG7hyB0aOG7kW5nIGzDoG0gdmnhu4djIHThu6sgeGEsIHbDoCBz4butIGThu6VuZyBjw7RuZyBuZ2jhu4cuDQoNCkNow61uaCB2w6wgdGjhur8sIHTDtGkgdGjhu7FjIGhp4buHbiBuZ2hpw6puIGPhu6l1IHbhu4EgY8OhYyB54bq/dSB04buRIHTDoWMgxJHhu5luZyDEkeG6v24gY8O0bmcgdmnhu4djIHRyxrDhu5tjIHbDoCBzYXUgxJHhuqFpIGThu4tjaCB0aGVvIHThu6tuZyDEkeG7mSB0deG7lWkgZOG7sWEgdHLDqm4gYuG6o25nIGto4bqjbyBzw6F0IHRow7RuZyB0aW4uDQoNCiMjIDEuMiBN4bulYyBUacOqdSBOZ2hpw6puIEPhu6l1DQoNCkThu7FhIHRyw6puIG5o4buvbmcgZOG7ryBsaeG7h3UgxJHDoyB0aHUgdGjhuq1wIMSRxrDhu6NjIG3hu6VjIHRpw6p1IGNow61uaCBj4bunYSDEkeG7gSB0w6BpIG7DoHkgbMOgIHBow6JuIHTDrWNoIGPDoWMgeeG6v3UgdOG7kSDhuqNuaCBoxrDhu59uZyDEkeG6v24gdMOibSBsw70gY+G7p2EgZOG7i2NoIENvdmlkDQoNCiMjIDEuMyDEkOG7kWkgdMaw4bujbmcgbmdoacOqbiBj4bupdQ0KDQrEkOG7kWkgdMaw4bujbmcgbmdoacOqbiBj4bupdTogY8OhYyB54bq/dSB04buRIOG6o25oIGjGsOG7n25nIMSR4bq/biB0w6JtIGzDvSBj4bunYSBk4buLY2ggQ292aWQNClbhu4EgaMaw4bubbmcga8SpIHRodeG6rXQsIG5naGnDqm4gY+G7qXUgbsOgeSBjw7MgxJHhu5FpIHTGsOG7o25nIGzDoCBk4buvIGxp4buHdSB0aOG7nWkgZ2lhbi4gQ8OhYyDEkeG7kWkgdMaw4bujbmcgdHJvbmcgcXVhbiBo4buHIGzDoCBk4buvIGxp4buHdSB0aOG7nWkgZ2lhbiB0aGVvIMSR4buZIHR14buVaSB04burIDE5IMSR4bq/biA2MCB0deG7lWkgdHLhu58gbMOqbg0KDQojIyAxLjQgUGjGsMahbmcgcGjDoXAgbmdoacOqbiBj4bupdQ0KDQpT4butIGThu6VuZyBtw7QgaMOsbmggaOG7k2kgcXV5IHR1eeG6v24gdMOtbmggxJHhu4MgcGjDom4gdMOtY2ggY8OhYyB54bq/dSB04buRIGFuaCBoxrDhu59uZyDEkeG6v24gdMOibSBsw70gY8O0bmcgdmnhu4djIHRyxrDhu5tjIHbDoCBzYXUgxJHhuqFpIGThu4tjaA0KDQojIyAxLjUgS+G6v3QgY+G6pXUgxJHhu4EgYsOgaQ0KDQpDaMawxqFuZyAxIEdp4bubaSB0aGnhu4d1DQoNCkNoxrDGoW5nIDIgVOG7lW5nIHF1YW4gbMO9IHRodXnhur90DQoNCkNoxrDGoW5nIDMgVGhp4bq/dCBr4bq/IG5naGnDqm4gY+G7qXUNCg0KQ2jGsMahbmcgNCBL4bq/dCBxdeG6oyBuZ2hpw6puIGPhu6l1DQoNCkNoxrDGoW5nIDUgS+G6v3QgbHXhuq1uDQoNCiMgQ2jGsMahbmcgMiBU4buVbmcgcXVhbiBsw70gdGh1eeG6v3QNCg0KIyMgMi4xIMSQw6FuaCBnacOhIG3hu6ljIMSR4buZIHRoxrAgZ2nDo24gdHJvbmcgY8O0bmcgdmnhu4djIHRyxrDhu5tjIHbDoCB0cm9uZyBk4buLY2ggKHJlbGF4ZWQpDQoNCk3hu6ljIMSR4buZIHRoxrAgZ2nDo24gdHJvbmcgY8O0bmcgdmnhu4djIGPDsyB0aOG7gyBjw7Mgc+G7sSBraMOhYyBiaeG7h3QgxJHDoW5nIGvhu4MgZ2nhu69hIHRyxrDhu5tjIHbDoCB0cm9uZyDEkeG6oWkgZOG7i2NoIENPVklELTE5LiBExrDhu5tpIMSRw6J5IGzDoCBt4buZdCBz4buRIMSRaeG7g20gxJHDoW5oIGdpw6EgY2h1bmcgduG7gSBt4bupYyDEkeG7mSB0aMawIGdpw6NuIHRyb25nIGPDtG5nIHZp4buHYyB0cm9uZyBoYWkgZ2lhaSDEkW/huqFuIG7DoHk6DQoNClRyxrDhu5tjIMSR4bqhaSBk4buLY2g6DQoNCk3DtGkgdHLGsOG7nW5nIGzDoG0gdmnhu4djIMSRYSBk4bqhbmc6IFRyxrDhu5tjIGtoaSDEkeG6oWkgZOG7i2NoIGLDuW5nIHBow6F0LCBuaGnhu4F1IG5nxrDhu51pIGzDoG0gdmnhu4djIHThuqFpIHbEg24gcGjDsm5nLCBuaMOgIG3DoXksIGPhu61hIGjDoG5nIGhv4bq3YyBjw6FjIG7GoWkgY8O0bmcgY+G7mW5nIGtow6FjLiBNw7RpIHRyxrDhu51uZyBsw6BtIHZp4buHYyB0cuG7sWMgdGnhur9wIG7DoHkgY8OzIHRo4buDIG1hbmcgbOG6oWkgY+G6o20gZ2nDoWMgdGhv4bqjaSBtw6FpIHbDoCBn4bqvbiBr4bq/dCB24bubaSDEkeG7k25nIG5naGnhu4dwLg0KDQpHaWFvIHRp4bq/cCB0cuG7sWMgdGnhur9wOiBMw6BtIHZp4buHYyB0cuG7sWMgdGnhur9wIGNobyBwaMOpcCBi4bqhbiBk4buFIGTDoG5nIGdpYW8gdGnhur9wIHbDoCB0xrDGoW5nIHTDoWMgduG7m2kgxJHhu5NuZyBuZ2hp4buHcCwgZ2nDunAgZ2nhuqNtIGPEg25nIHRo4bqzbmcgdsOgIGPhuqNpIHRoaeG7h24gdGluaCB0aOG6p24gbMOgbSB2aeG7h2MuDQoNCkPGoSBo4buZaSB2dWkgY2jGoWkgdsOgIHRoxrAgZ2nDo246IFRyxrDhu5tjIMSR4bqhaSBk4buLY2gsIG5nxrDhu51pIGxhbyDEkeG7mW5nIHRoxrDhu51uZyBjw7Mgbmhp4buBdSBjxqEgaOG7mWkgdGjGsCBnacOjbiBzYXUgZ2nhu50gbMOgbSB2aeG7h2MsIGNo4bqzbmcgaOG6oW4gbmjGsCDEkWkgZOG6oW8gY2jGoWksIMSRaSB4ZW0gcGhpbSwgaOG6uW4gaMOyIHbhu5tpIGLhuqFuIGLDqCBoYXkgdGhhbSBnaWEgY8OhYyBob+G6oXQgxJHhu5luZyBnaeG6o2kgdHLDrSBraMOhYy4NCg0KVHJvbmcgxJHhuqFpIGThu4tjaDoNCg0KTMOgbSB2aeG7h2MgdOG7qyB4YTogxJDhuqFpIGThu4tjaCBDT1ZJRC0xOSDEkcOjIHTDoWMgxJHhu5luZyBt4bqhbmggbeG6vSDEkeG6v24gbcO0aSB0csaw4budbmcgbMOgbSB2aeG7h2MsIGtoaeG6v24gcuG6pXQgbmhp4buBdSBuZ8aw4budaSBwaOG6o2kgbMOgbSB2aeG7h2MgdOG7qyB4YS4gTeG6t2MgZMO5IGPDsyBuaOG7r25nIGzhu6NpIMOtY2ggbmjGsCB0aeG6v3Qga2nhu4dtIHRo4budaSBnaWFuIGRpIGNodXnhu4NuLCBuaMawbmcgbMOgbSB2aeG7h2MgdOG7qyB4YSBjw7MgdGjhu4MgbMOgbSBt4bqldCDEkWkgc+G7sSBn4bqvbiBr4bq/dCB2w6AgdMawxqFuZyB0w6FjIHRy4buxYyB0aeG6v3AgduG7m2kgxJHhu5NuZyBuZ2hp4buHcC4NCg0KQ8SDbmcgdGjhurNuZyB2w6AgbG8gw6J1OiDEkOG6oWkgZOG7i2NoIGfDonkgcmEgbeG7mXQgbcO0aSB0csaw4budbmcga2jDtG5nIGNo4bqvYyBjaOG6r24gdsOgIGxvIGzhuq9uZywga2hp4bq/biBuaGnhu4F1IG5nxrDhu51pIHBo4bqjaSDEkeG7kWkgbeG6t3QgduG7m2kgY+G6o20gZ2nDoWMgYuG6pXQgYW4gduG7gSBjw7RuZyB2aeG7h2MgdsOgIHTGsMahbmcgbGFpLg0KDQpUaGnhur91IGPGoSBo4buZaSB0aMawIGdpw6NuOiBW4bubaSBo4bqhbiBjaOG6vyBkaSBjaHV54buDbiB2w6AgZ2nDo24gY8OhY2ggeMOjIGjhu5lpLCBuaGnhu4F1IGPGoSBo4buZaSB0aMawIGdpw6NuIHNhdSBnaeG7nSBsw6BtIHZp4buHYyDEkcOjIGLhu4sgaOG6oW4gY2jhur8uIMSQaeG7gXUgbsOgeSBjw7MgdGjhu4MgbMOgbSB0xINuZyBt4bupYyDEkeG7mSBjxINuZyB0aOG6s25nIHbDoCBnaeG6o20gxJFpIHPhu7EgdGjGsCBnacOjbiBzYXUgbeG7mXQgbmfDoHkgbMOgbSB2aeG7h2MgY8SDbmcgdGjhurNuZy4NCg0KTeG7qWMgxJHhu5kgdGjGsCBnacOjbiB0cm9uZyBjw7RuZyB2aeG7h2MgY8OzIHRo4buDIHRoYXkgxJHhu5VpIHTDuXkgdGh14buZYyB2w6BvIHThu6tuZyB0csaw4budbmcgaOG7o3AgY+G7pSB0aOG7gy4gTeG7mXQgc+G7kSBuZ8aw4budaSBjw7MgdGjhu4MgdGjhuqV5IHRoxrAgZ2nDo24gaMahbiBraGkgbMOgbSB2aeG7h2MgdOG7qyB4YSwgdHJvbmcga2hpIG5nxrDhu51pIGtow6FjIGPDsyB0aOG7gyBj4bqjbSB0aOG6pXkgY8O0IMSRxqFuIHbDoCBj4bqnbiB0w6xtIGPDoWNoIHThuqFvIHJhIG3DtGkgdHLGsOG7nW5nIGzDoG0gdmnhu4djIHRoxrAgZ2nDo24gdOG6oWkgbmjDoC4gVHJvbmcgbeG7jWkgdHLGsOG7nW5nIGjhu6NwLCBxdeG6o24gbMO9IHTDom0gbMO9IHbDoCB04bqhbyByYSBjw6JuIGLhurFuZyB0cm9uZyBjw7RuZyB2aeG7h2MgdsOgIGN14buZYyBz4buRbmcgY8OhIG5ow6JuIHLhuqV0IHF1YW4gdHLhu41uZyDEkeG7gyBkdXkgdHLDrCBt4bupYyDEkeG7mSB0aMawIGdpw6NuIHbDoCBz4buxIGjDoGkgbMOybmcgdHJvbmcgY8O0bmcgdmnhu4djLg0KDQojIyAyLjIgTmdo4buDIG5naGnhu4dwIHRyxrDhu5tjIHbDoCB0cm9uZyBk4buLY2ggKG9jY3VwYXRpb24pDQoNCk5naOG7gSBuZ2hp4buHcCB0csaw4bubYyB2w6AgdHJvbmcgxJHhuqFpIGThu4tjaCBjw7MgdGjhu4MgY8OzIHPhu7Ega2jDoWMgYmnhu4d0IHLDtSBy4buHdCwgxJHhurdjIGJp4buHdCBsw6AgZG8g4bqjbmggaMaw4bufbmcgY+G7p2EgxJHhuqFpIGThu4tjaCBDT1ZJRC0xOSBsw6puIG7hu4FuIGtpbmggdOG6vyB2w6AgY8OhYyBuZ8Ogbmggbmdo4buBLiBExrDhu5tpIMSRw6J5IGzDoCBt4buZdCBz4buRIHbDrSBk4bulIHbhu4Egc+G7sSB0aGF5IMSR4buVaSB2w6AgdMOhYyDEkeG7mW5nIGPhu6dhIMSR4bqhaSBk4buLY2ggxJHhu5FpIHbhu5tpIG3hu5l0IHPhu5EgbmfDoG5oIG5naOG7gSBj4bulIHRo4buDOg0KDQpOZ8OgbmggeSB04bq/IHbDoCBjaMSDbSBzw7NjIHPhu6ljIGto4buPZToNCg0KVHLGsOG7m2MgxJHhuqFpIGThu4tjaDogTmfDoG5oIHkgdOG6vyB2w6AgY2jEg20gc8OzYyBz4bupYyBraOG7j2UgxJHDoyBsw6AgbMSpbmggduG7sWMg4buVbiDEkeG7i25oIHbDoCBjw7Mgbmh1IGPhuqd1IGNhbyB24buBIG5ow6JuIGzhu7FjLg0KVHJvbmcgxJHhuqFpIGThu4tjaDogQ8OhYyBjaHV5w6puIGdpYSB5IHThur8gdsOgIG5ow6JuIHZpw6puIGNoxINtIHPDs2Mgc+G7qWMga2jhu49lIHRy4bufIHRow6BuaCBuaMOzbSBuZ8aw4budaSBjw7MgdmFpIHRyw7IgcXVhbiB0cuG7jW5nIHRyb25nIMSR4buRaSBwaMOzIHbhu5tpIMSR4bqhaSBk4buLY2guIE5odSBj4bqndSB24buBIG5ow6JuIGzhu7FjIHRyb25nIG5nw6BuaCBuw6B5IHTEg25nIGNhbywgxJHhurdjIGJp4buHdCBsw6Ag4bufIGPDoWMgYuG7h25oIHZp4buHbiB2w6AgY8OhYyBjxqEgc+G7nyBjaMSDbSBzw7NjIHPhu6ljIGto4buPZSBjxqEgc+G7ny4NCg0KTeG7mXQgc+G7kSBuZ8Ogbmggbmdo4buBIHBo4buVIGJp4bq/biBuaMawOg0KDQpDw7RuZyBuZ2jhu4cgdGjDtG5nIHRpbiB2w6AgdHJ1eeG7gW4gdGjDtG5nIHRy4buxYyB0dXnhur9uOg0KVHLGsOG7m2MgxJHhuqFpIGThu4tjaDogQ8O0bmcgbmdo4buHIHRow7RuZyB0aW4gxJHDoyBwaMOhdCB0cmnhu4NuIG5oYW5oIGNow7NuZyB2w6AgdHLhu58gdGjDoG5oIG3hu5l0IGzEqW5oIHbhu7FjIGPDsyBuaGnhu4F1IGPGoSBo4buZaSB2aeG7h2MgbMOgbS4NClRyb25nIMSR4bqhaSBk4buLY2g6IMSQ4bqhaSBk4buLY2ggxJHDoyB0aMO6YyDEkeG6qXkgdmnhu4djIHPhu60gZOG7pW5nIGPDtG5nIG5naOG7hyB0aMO0bmcgdGluIHbDoCB0cnV54buBbiB0aMO0bmcgdHLhu7FjIHR1eeG6v24gaMahbiBiYW8gZ2nhu50gaOG6v3QuIEPDoWMgY8O0bmcgdHkgY8O0bmcgbmdo4buHIHbDoCB0cnV54buBbiB0aMO0bmcgdHLhu7FjIHR1eeG6v24gbmjGsCBab29tLCBNaWNyb3NvZnQgVGVhbXMsIHbDoCBjw6FjIG7hu4FuIHThuqNuZyBnacOhbyBk4bulYyB0cuG7sWMgdHV54bq/biDEkcOjIHRy4bufIG7Dqm4gcGjhu5UgYmnhur9uIGjGoW4gdsOgIGPDsyBuaHUgY+G6p3UgY2FvIHbhu4Ega+G7uSB0aHXhuq10IHZpw6puLCBs4bqtcCB0csOsbmggdmnDqm4sIHbDoCBjaHV5w6puIGdpYSBsacOqbiBxdWFuLg0KDQpOZ8OgbmggZHUgbOG7i2NoIHbDoCBk4buLY2ggduG7pSBow6BuZyBraMO0bmc6DQpUcsaw4bubYyDEkeG6oWkgZOG7i2NoOiBOZ8OgbmggZHUgbOG7i2NoIHbDoCBk4buLY2ggduG7pSBow6BuZyBraMO0bmcgcGjDoXQgdHJp4buDbiBt4bqhbmggbeG6vSwgY3VuZyBj4bqlcCBuaGnhu4F1IGPGoSBo4buZaSB2aeG7h2MgbMOgbSBsacOqbiBxdWFuIMSR4bq/biBk4buLY2ggduG7pSwga2jDoWNoIHPhuqFuLCBow6BuZyBraMO0bmcsIGjGsOG7m25nIGThuqtuIGR1IGzhu4tjaCwgdi52Lg0KVHJvbmcgxJHhuqFpIGThu4tjaDogxJDhuqFpIGThu4tjaCDEkcOjIOG6o25oIGjGsOG7n25nIG7hurduZyBu4buBIMSR4bq/biBuZ8OgbmggZHUgbOG7i2NoIHbDoCBk4buLY2ggduG7pSBow6BuZyBraMO0bmcuIEjhuqFuIGNo4bq/IGRpIGNodXnhu4NuIHbDoCBnacOjbiBjw6FjaCB4w6MgaOG7mWkgxJHDoyBsw6BtIGdp4bqjbSBt4bqhbmggbmh1IGPhuqd1IGR1IGzhu4tjaCB2w6AgZOG7i2NoIHbhu6UgbGnDqm4gcXVhbiwgZOG6q24gxJHhur9uIHZp4buHYyBnaeG6o20gYuG7m3QgY8OhYyBjxqEgaOG7mWkgdmnhu4djIGzDoG0gdHJvbmcgbMSpbmggduG7sWMgbsOgeS4NCg0KTmfDoG5oIHPhuqNuIHh14bqldCB2w6AgbmjDoCBtw6F5Og0KVHLGsOG7m2MgxJHhuqFpIGThu4tjaDogTmfDoG5oIHPhuqNuIHh14bqldCB2w6AgbmjDoCBtw6F5IHRoxrDhu51uZyBob+G6oXQgxJHhu5luZyB24bubaSBuaGnhu4F1IGPDtG5nIG5ow6JuIHbDoCBxdXkgbcO0IHPhuqNuIHh14bqldCBs4bubbi4NClRyb25nIMSR4bqhaSBk4buLY2g6IE5oaeG7gXUgbmjDoCBtw6F5IHbDoCBjxqEgc+G7nyBz4bqjbiB4deG6pXQgxJHDoyBwaOG6o2kgxJFp4buBdSBjaOG7iW5oIHF1eSB0csOsbmggdsOgIHRyaeG7g24ga2hhaSBiaeG7h24gcGjDoXAgZ2nDo24gY8OhY2ggeMOjIGjhu5lpIMSR4buDIMSR4bqjbSBi4bqjbyBhbiB0b8OgbiBjaG8gbmjDom4gdmnDqm4uIMSQaeG7gXUgbsOgeSBjw7MgdGjhu4MgbMOgbSBnaeG6o20gcXV5IG3DtCBz4bqjbiB4deG6pXQgdsOgIOG6o25oIGjGsOG7n25nIMSR4bq/biBuaHUgY+G6p3UgduG7gSBsYW8gxJHhu5luZyB0cm9uZyBuZ8OgbmggbsOgeS4NCg0KIyBDaMawxqFuZyAzIFRoaeG6v3Qga+G6vyBuZ2hpw6puIGPhu6l1DQoNCiMjIDMuMSBHaeG7m2kgdGhp4buHdSBtw7QgaMOsbmggaOG7k2kgcXV5IHR1eeG6v24gdMOtbmgNCg0KTcO0IGjDrG5oIGjhu5NpIHF1eSB0dXnhur9uIHTDrW5oIGzDoCBt4buZdCB0cm9uZyBuaOG7r25nIHBoxrDGoW5nIHBow6FwIHRo4buRbmcga8OqIGPGoSBi4bqjbiDEkcaw4bujYyBz4butIGThu6VuZyDEkeG7gyBk4buxIMSRb8OhbiBt4buRaSBxdWFuIGjhu4cgdHV54bq/biB0w61uaCBnaeG7r2EgbeG7mXQgYmnhur9uIHBo4bulIHRodeG7mWMgKG91dGNvbWUgdmFyaWFibGUpIHbDoCBt4buZdCBob+G6t2Mgbmhp4buBdSBiaeG6v24gxJHhu5ljIGzhuq1wIChwcmVkaWN0b3IgdmFyaWFibGVzKS4gVHJvbmcgUiwgdmnhu4djIHjDonkgZOG7sW5nIG3DtCBow6xuaCBo4buTaSBxdXkgdHV54bq/biB0w61uaCDEkcaw4bujYyB0aOG7sWMgaGnhu4duIGLhurFuZyBjw6FjaCBz4butIGThu6VuZyBow6BtIGxtKCkgKExpbmVhciBNb2RlbCkuDQoNCmfhu5NtIGPDsyA1IGLGsOG7m2MgbmjGsDoNCg0KMS4gY2h14bqpbiBi4buLIGThu68gbGnhu4d1DQoNCjIuIFjDoWMgxJHhu4tuaCBiaeG6v24gcGjhu6UgdGh14buZYyB2w6AgYmnhur9uIMSR4buZYyBs4bqtcA0KDQozLiBYw6J5IGThu7FuZyBtw7QgaMOsbmggaOG7k2kgcXV5IHR1eeG6v24gdMOtbmgNCg0KNC4gS2nhu4NtIHRyYSB2w6AgxJHDoW5oIGdpw6EgbcO0IGjDrG5oDQoNCjUuIMSQ4buNYyBr4bq/dCBxdeG6ow0KDQo2LiBE4buxIMSRb8OhbiB24bubaSBtw7QgaMOsbmgNCg0KIyBDaMawxqFuZyA0IEvhur90IFF14bqjIG5naGnDqm4gY+G7qXUNCg0KIyMgNC4xIFThu5VuZyBRdWFuIHbhu4EgZOG7ryBsaeG7h3UNCg0KQuG7mSBk4buvIGxp4buHdSBz4butIGThu6VuZyB0cm9uZyBwaMOibiB0w61jaCDEkcaw4bujYyBs4bqleSB04burIHRyYW5nIGthZ2dsZS5jb20sY8OzIDExNzYgcXVhbiBzw6F0IGfhu5NtIDggYmnhur9uIMSR4buLbmggdMOtbmggdsOgIDkgYmnhur9uIMSR4buLbmggbMaw4bujbmcNCg0KYWdlOiBuaMOzbSB0deG7lWkNCg0KZ2VuZGVyOiBHaeG7m2kgdMOtbmggDQoNCm9jY3VwYXRpb246IE5naOG7gSBuZ2hp4buHcA0KDQpsaW5lX29mX3dvcms6IETDsm5nIGPDtG5nIHZp4buHYyBkbyBuZ8aw4budaSDEkcOzIHRo4buxYyBoaeG7h24NCg0KdGltZV9icDogVGjhu51pIGdpYW4gZMOgbmggY2hvIGPDtG5nIHZp4buHYyB0csaw4bubYyDEkeG6oWkgZOG7i2NoDQoNCnRpbWVfZHA6IFRo4budaSBnaWFuIGTDoG5oIGNobyBjw7RuZyB2aeG7h2MgdHJvbmcgdGjhu51pIGvhu7MgxJHhuqFpIGThu4tjaA0KDQp0cmF2ZWxfdGltZTogVGjhu51pIGdpYW4gZGkgY2h1eeG7g24NCg0KZWFzZW9mX29ubGluZTogVGjDrWNoIGPDtG5nIHZp4buHYyB0cuG7sWMgdHV54bq/bg0KDQpob21lX2VudjogVGjDrWNoIG3DtGkgdHLGsOG7nW5nIGdpYSDEkcOsbmgNCg0KcHJvZF9pbmM6IMSQw6FuaCBnacOhIHTEg25nIG7Eg25nIHN14bqldA0KDQpzbGVlcF9iYWw6IMSQw6FuaCBnacOhIGNodSBr4buzIGdp4bqlYyBuZ+G7pw0KDQpuZXdfc2tpbGw6IEPDsyBi4bqldCBr4buzIGvhu7kgbsSDbmcgbeG7m2kgbsOgbyDEkcOjIMSRxrDhu6NjIGjhu41jIGhheSBraMO0bmcNCg0KZmFtX2Nvbm5lY3Q6IMSQw6FuaCBnacOhIG3hu6ljIMSR4buZIGvhur90IG7hu5FpIGPhu6dhIG5nxrDhu51pIMSRw7MgduG7m2kgZ2lhIMSRw6xuaA0KDQpyZWxheGVkOiDEkMOhbmggZ2nDoSBt4bupYyDEkeG7mSB0aMawIGdpw6NuIGPhu6dhIG5nxrDhu51pIMSRw7MNCg0Kc2VsZl90aW1lOiDEkMOhbmggZ2nDoSBiYW8gbmhpw6p1IHRo4budaSBnaWFuIGLhuqNuIHRow6JuIMSRw6MgxJHGsOG7o2MgbXVhDQoNCmxpa2VfaHc6IFRow61jaCBsw6BtIHZp4buHYyB04bqhaSBuaMOgIA0KDQpkaXNsaWtlX2h3OiBLaMO0bmcgdGjDrWNoIGzDoG0gdmnhu4djIHThuqFpIG5ow6ANCg0KcHJlZmVyOiBsw6BtIHZp4buHYyB04bqhaSBuaMOgIGhheSDEkWkgaOG7jWMNCg0KY2VydGFpbmRheXNfaHc6IFRow61jaCBsaeG7h3UgbeG7mXQgc+G7kSBuZ8OgeSBsw6BtIHZp4buHYyB04bqhaSBuaMOgIGPDsyBj4bqnbiB0aGnhur90IGhheSBraMO0bmcNCg0KYGBge3J9DQpsaWJyYXJ5KHJlYWR4bCkNCnBzeWNvIDwtIHJlYWRfZXhjZWwoIkQ6L3BzeWNvLnhsc3giKQ0KVmlldyhwc3ljbykNCnN0cihwc3ljbykNCmBgYA0KDQojIyA0LjIgQ2jhu41uIGJp4bq/biDEkeG7i25oIHTDrW5oIHbDoCBiaeG6v24gxJHhu4tuaCBsxrDhu6NuZyBsw6BtIGJp4bq/biBwaOG7pSB0aHXhu5ljDQoNCiMjIyA0LjIuMSBDaOG7jW4gYmnhur9uIMSR4buLbmggdMOtbmggbMOgbSBiaeG6v24gcGjhu6UgdGh14buZYw0KDQpDaOG7jW4gYmnhur9uIMSR4buLbmggdMOtbmggcHJlZmVyIGzDoCBiaeG6v24gcGjhu6UgdGh14buZYw0KDQpHaeG6o2kgdGjDrWNoOiBuaOG6sW0gxJHDoW5oIGdpw6EgeGUgY8OhYyB54bq/dSB04buRIG5oxrAgVGjDrWNoIGxp4buHdSBt4buZdCBz4buRIG5nw6B5IGzDoG0gdmnhu4djIHThuqFpIG5ow6AgY8OzIGPhuqduIHRoaeG6v3QgaGF5IGtow7RuZywgVGjDrWNoIGPDtG5nIHZp4buHYyB0cuG7sWMgdHV54bq/biBUaMOtY2ggbcO0aSB0csaw4budbmcgZ2lhIMSRw6xuaA0KDQojIyMgNC4yLjIgQ2jhu41uIGJp4bq/biDEkeG7i25oIGzGsOG7o25nIGzDoG0gYmnhur9uIHBo4bulIHRodeG7mWMNCg0KQ2jhu41uIGJp4bq/biDEkeG7i25oIGzGsOG7o25nIHJlbGF4ZWQgcGjhu6UgdGh14buZYyANCg0KR2nhuqNpIHRow61jaDogTeG7qWMgxJHhu5kgdGjGsCBnacOjbiBwaOG7pSB0aHXhu5ljIHbDoG8gZMOybmcgY8O0bmcgdmnhu4djIGPhu6dhIG7GsOG7nWkgxJHDsyBoaeG7h24gdOG6oWksIGPDtG5nIHZp4buHbiAgdHLhu7FjIHRp4bq/cCBoYXkgdHLhu7FjIHR1eeG6v24gbuG6v3UgY8O0bmcgdmnhu4djIGtow6FjIG5oYXUgY8WpbmcgbMOgbSDhuqNuaCBoxrDhu59uZyDEkeG6v24gdMOibSBsw70NCg0KIyMgNC4zIFRo4buRbmcga8OqIG3DtCB04bqjDQoNCiMjIyA0LjMuMSBUaOG7kW5nIGvDqiBtw7QgdOG6oyBjw6FjIGJp4bq/biDEkeG7i25oIHTDrW5oDQoNCiMjIyMgNC4zLjEuMSBCaeG6v24gcHJlZmVyKHPhu5EgbmfGsOG7nWkgdGjDrWNoIGzDoG0gdmnhu4djIHThuqFpIG5ow6AgaGF5IMSRaSBo4buNYykNCg0KQuG6o25nIHThuqduIHPhu5ENCg0KYGBge3J9DQp0YWJsZShwc3ljbyRwcmVmZXIpDQpgYGANCg0KY8OzIDgzNiBuZ8aw4budaSDEkWkgaOG7jWMgxJHhuqd1IMSR4bunIHRoYW0gZ2lhIGN14buZYyBiw6xuaCBjaOG7jW4gdsOgIDMzOSBuZ8aw4budaSB0aMOtY2ggaOG7jWMgbMOgbSB2aeG7h2MgdOG6oWkgbmjDoCB0aGFtIGdpYSBiw6xuaCBjaOG7jW4NCg0KYGBge3J9DQp0YWJsZShwc3ljbyRwcmVmZXIpL3N1bSh0YWJsZShwc3ljbyRwcmVmZXIpKQ0KYGBgDQoNCnThu4kgbOG7hyDEkWkgaOG7jWMgxJHhuqd5IMSR4bunIGNoaeG6v20gNzEuMTQlIHbDoCB0aMOtY2ggaOG7jWMgdsOgIGzDoG0gdmnhu4djIHThuqFpIG5ow6AgY2hp4bq/bSAyOC44JQ0KDQrEkOG7kyB0aOG7iw0KDQpgYGB7cn0NCnBzeWNvIHw+IGdncGxvdChhZXMoeCA9IHByZWZlciwgeSA9IGFmdGVyX3N0YXQoY291bnQpKSkgKw0KZ2VvbV9iYXIoZmlsbCA9ICdibGFjaycpICtnZW9tX3RleHQoYWVzKGxhYmVsID0gc2NhbGVzOjpwZXJjZW50KGFmdGVyX3N0YXQoY291bnQvc3VtKGNvdW50KSkpKSwgc3RhdCA9J2NvdW50JywgY29sb3IgPSAncmVkJywgdmp1c3QgPSAtIC41KSArbGFicyh4ID0gJ25nxrDhu51pIGzDoG0gdmnhu4djIHThuqFpIG5ow6AnLCB5ID0gJ3Phu5EgbmfGsOG7nWknKQ0KYGBgDQoNCkThu7FhIHbDoG8gxJHhu5MgdGjhu4sgdGEgdGjhuqV5IHPhu5EgbmfGsOG7nWkgdGjDrWNoIMSRaSBo4buNYyBsw6puIMSR4bq/biA4MzYgbmfGsOG7nWkgc28gduG7m2kgMTE1NyBuZ8aw4budaSAgY2hp4bq/bSA3MSUgdsOgIHPhu5EgbmfGsOG7nWkgdGjDrWNoIGjhu41jIHThuq1wIHbDoCBsw6BtIHZp4buHYyB04bqhaSBuYWgyIGNoaeG6v20gMjklDQoNCiMjIyMgNC4zLjEuMiBCaeG6v24gb2NjdXBhdGlvbiAoTmdo4buBIG5naGnhu4dwKQ0KDQpC4bqjbmcgdOG6p24gc+G7kQ0KDQpgYGB7cn0NCnRhYmxlKHBzeWNvJG9jY3VwYXRpb24pDQpgYGANCg0KVOG7qyBi4bqjbmcgdGEgdGjhuqV5IGPDsyA0NCBuZ8aw4budaSBraMO0bmcgY8OzIHZp4buHYyBsw6BtIHRoYW0gZ2lhIHbDoG8gdnXhu5ljIGLDrG5oIGNo4buNbiA4MiBuZ8aw4budaSBu4buZaSB0cuG7oyAyIE5nxrDhu51pIMSRw6Mgbmdo4buJIGjGsHUvTmfGsOG7nWkgY2FvIHR14buVaSB0aGFtIGdpYSBiw6xuaCBjaOG7jW4gY8OzIDE4IG5nxrDhu51pIGzDoCBzaW5oIHZpw6puLCBjw7MgMTE5IGRvYW5oIG5ow6JuIGPDsyA3MyBuZ8aw4budaSBu4buXIGzhu7FjIGjhu5cgdHLhu6MgY+G7p2EgQ2h1ecOqbiBnaWEgWSB04bq/IGNo4buRbmcgbOG6oWkgQ09WSUQtMTkgdGhhbSBnaWEgYsOsbmggY2jhu41uIGPDsyAzNTggc2luaCB2acOqbiDEkeG6oWkgaOG7jWMgdGhhbSBnaWEgYsOsbmggY2jhu41uLCBjw7MgNDc5IG5nxrDhu51pIGzDoG0gdmnhu4djIGNodXnDqm4gbmdoaeG7h3AgdGhhbSBnaWEgYsOsbmggY2jhu41uDQoNCmBgYHtyfQ0KdGFibGUocHN5Y28kb2NjdXBhdGlvbikvc3VtKHRhYmxlKHBzeWNvJG9jY3VwYXRpb24pKQ0KYGBgDQoNClThu4kgbOG7hyBuZ8aw4budaSBraMO0bmcgY8OzIHZp4buHYyBsw6BtIGNoacOqbSAgMC4zNyUgbmfGsOG7nWkgbuG7mWkgdHLhu6MgY2hp4bq/bSAwLjY5OCUgTmfGsOG7nWkgxJHDoyBuZ2jhu4kgaMawdS9OZ8aw4budaSBjYW8gdHXhu5VpIGNoaeG6v20gMC4xJSBzaW5oIHZpw6puIGNoaeG6v20gMC4xNSUgZG9hbmggbmjDom4gY2hp4bq/bSAxMC4xJSBuZ8aw4budaSBu4buXIGzhu7FjIGjhu5cgdHLhu6MgY+G7p2EgQ2h1ecOqbiBnaWEgWSB04bq/IGNo4buRbmcgbOG6oWkgQ09WSUQtMTkgY2hp4bq/bSA2LjIxJSBzaW5oIHZpw6puIMSR4bqhaSBo4buNYyBjaGnhur9tIDMwLjQlIG5neXVvaTcyIGzDoG0gdmnhu4djIGNodXnDqm4gbmdoaeG7h3AgY2hp4bq/bSA0MC43JQ0KDQrEkOG7kyB0aOG7iw0KDQpgYGB7cn0NCmxpYnJhcnkoZ2dwbG90MikNCnBzeWNvIHw+IGdncGxvdChhZXMoeCA9IG9jY3VwYXRpb24sIHkgPSBhZnRlcl9zdGF0KGNvdW50KSkpICsNCmdlb21fYmFyKGZpbGwgPSAnYmxhY2snKSArZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHNjYWxlczo6cGVyY2VudChhZnRlcl9zdGF0KGNvdW50L3N1bShjb3VudCkpKSksIHN0YXQgPSdjb3VudCcsIGNvbG9yID0gJ3JlZCcsIHZqdXN0ID0gLSAuNSkgK2xhYnMoeCA9ICdDw7RuZyB2aeG7h2MnLCB5ID0gJ3Phu5EgdHXhu5VpJykNCmBgYA0KDQpU4burIMSR4buTIHRo4buLIHRhIHRo4bqleSBjw7RuZyB2aeG7h2MgIFdvcmtpbmcgUHJvZmVzc2lvbmFsIMSRxrDhu6NjIG5oaeG7gXUgbmfGsOG7nWkgxrBhIGNodeG7mW5nIG5o4bqldCBjw7MgNDc5IHRyw6puIHThu5VuZyAxMTc1IG5nxrDhu51pIGNoaeG6v20gNDAuNzclIHbDoCBSZXRpcmVkL1NlbmlvciBDaXRpemVuIGNoaeG6v20gMiBuZ8aw4budaSB0cm9uZyAxMTc1IG5nxrDhu51pIGNoaeG6v20gMC4xNyUNCg0KIyMjIyA0LjMuMS4zIEJp4bq/biBnZW5kZXIgKGdp4bubaSB0w61uaCkNCg0KQuG6o25nIHThuqduIHPhu5ENCg0KYGBge3J9DQp0YWJsZShwc3ljbyRnZW5kZXIpDQpgYGANCg0KQ8OzIDUxMiBuZ8aw4budaSBu4buvIHRoYW0gZ2lhIGLDrG5oIGNo4buNbiB2w6AgNjU0IG5hbSB0aGFtIGdpYQ0KDQpgYGB7cn0NCnRhYmxlKHBzeWNvJGdlbmRlcikvc3VtKHRhYmxlKHBzeWNvJGdlbmRlcikpDQpgYGANCg0KVOG7iSBs4buHIG7hu68gY2hp4bq/bSA0NC4zJSB2w6AgbmFtIGNoaeG6v20gNTUuNiUNCg0KxJDhu5MgdGjhu4sNCg0KYGBge3J9DQpwc3ljbyB8PiBnZ3Bsb3QoYWVzKHggPSBnZW5kZXIsIHkgPSBhZnRlcl9zdGF0KGNvdW50KSkpICsNCmdlb21fYmFyKGZpbGwgPSAnYmxhY2snKSArZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHNjYWxlczo6cGVyY2VudChhZnRlcl9zdGF0KGNvdW50L3N1bShjb3VudCkpKSksIHN0YXQgPSdjb3VudCcsIGNvbG9yID0gJ3JlZCcsIHZqdXN0ID0gLSAuNSkgK2xhYnMoeCA9ICdnaeG7m2kgdMOtbmgnLCB5ID0gJ0PDtG5nIHZp4buHYycpDQpgYGANCg0KVOG7qyDEkeG7kyB0aOG7iyB0YSB0aOG6pXkgdOG7tyBs4buHIG5hbSBnaeG7m2kgY8OzIGPDtG5nIHZp4buHYyB0csaw4bubYyB2w6AgdHJvbmcgZOG7i2NoIGzDoCA2NTQgbmfGsOG7nWkgdHLDqm4gdOG7lW5nIDExNTcgbmd14budaSBjaGnhur9tIDU2JSB04bu3IGzhu4cgbuG7ryBnaeG7m2kgdHLGsOG7m2MgdsOgIHRyb25nIGThu4tjaCBjw7MgY8O0bmcgdmnhu4djIGzDoCA1MTIgbmfGsOG7nWkgY2hp4bq/bSA0NCUNCg0KIyMjIyA0LjMuMS40IEJp4bq/biBjZXJ0YWluZGF5c19odyAoc+G7kSBuZ8aw4budaSB0aMOtY2ggbMOgbSBjw7RuZyB2aeG7h2MgdOG6oWkgbmjDoCkNCg0KQuG6o25nIHThuqduIHPhu5ENCg0KYGBge3J9DQp0YWJsZShwc3ljbyRjZXJ0YWluZGF5c19odykNCmBgYA0KDQpz4buRIG5nxrDhu51pIHRow61jaCBjw7RuZyB2aeG7h2MgdOG6oWkgbmjDoCBsw6AgNTY4IG5nxrDhu51pIGtow7RuZyB0aMOtY2ggbMOgIDMwOSBuZ8aw4budaSBraMOhYyBsw6AgMjk4IG5nxrDhu51pDQoNCg0KYGBge3J9DQp0YWJsZShwc3ljbyRjZXJ0YWluZGF5c19odykvc3VtKHRhYmxlKHBzeWNvJGNlcnRhaW5kYXlzX2h3KSkNCmBgYA0KDQp04buJIGzhu4cgxJHhu5NuZyDDvSBjaGnhur9tIDQ4LjM0JSBraMO0bmcgxJHhu5NuZyDDvSBjaGnhur9tIDI2LjI5JSBraMOhYyBjaGnhur9tIDI1LjM2JQ0KDQrEkOG7kyB0aOG7iw0KDQpgYGB7cn0NCmxpYnJhcnkoZ2dwbG90MikNCnBzeWNvIHw+IGdncGxvdChhZXMoeCA9IGNlcnRhaW5kYXlzX2h3LCB5ID0gYWZ0ZXJfc3RhdChjb3VudCkpKSArDQpnZW9tX2JhcihmaWxsID0gJ2JsYWNrJykgK2dlb21fdGV4dChhZXMobGFiZWwgPSBzY2FsZXM6OnBlcmNlbnQoYWZ0ZXJfc3RhdChjb3VudC9zdW0oY291bnQpKSkpLCBzdGF0ID0nY291bnQnLCBjb2xvciA9ICdyZWQnLCB2anVzdCA9IC0gLjUpICtsYWJzKHggPSAnbMOgbSB2aeG7h2MgdOG6oWkgbmjDoCBjw7MgY+G6p24gdGhp4bq/dCBraMO0bmcnLCB5ID0gJ2PDtG5nIHZp4buHYycpDQpgYGANCg0KVOG7qyDEkeG7kyB0aOG7iyB0YSB0aOG6pXkgbeG7pWMgxJHhu5kgY+G6p24gdGhp4bq/dCBsw6BtIGPDtG5nIHZp4buHYyB04bqhaSBuaMOgIGzDoCA0OC4zNCUsIE3hu6ljIMSR4buZIGtow7RuZyBj4bqnbiB0aGnhur90IGzDoG0gdOG6oWkgbmjDoCBsw6AgMjYuMzAlLCBN4bupYyDEkeG7mSBsw6BtIHThuqFpIG5ow6AgaGF5IGzDoG0gdOG6oWkgY+G7rWEgaMOgbmcgbMOgIDI1LjM2JSB0csOqbiB04buVbmcgMTE1NyBiaeG6v24NCg0KIyMjIyA0LjMuMS41IEJp4bq/biBlYXNlb2Zfb25saW5lOiBUaMOtY2ggY8O0bmcgdmnhu4djIHRy4buxYyB0dXnhur9uIA0KDQpC4bqjbmcgdOG6p24gc+G7kQ0KDQpgYGB7cn0NCnRhYmxlKHBzeWNvJGVhc2VvZl9vbmxpbmUpDQpgYGANCg0KY8OzIDU5MiBuZ8aw4budaSB0aMOtY2ggY8O0bmcgdmnhu4djIHRy4buxYyB0dXnhur9uIHbDoCA1ODMgbmfGsOG7nWkga2jDtG5nIHRow61jaCBjw7RuZyB2aeG7h2MgdHLhu7FjIHR1eeG6v24NCg0KDQpgYGB7cn0NCnRhYmxlKHBzeWNvJGVhc2VvZl9vbmxpbmUpL3N1bSh0YWJsZShwc3ljbyRlYXNlb2Zfb25saW5lKSkNCmBgYA0KDQpuZ8aw4budaSB0aMOtY2ggY8O0bmcgdmnhu4djIHRy4buxYyB0dXnhur9uIGNoaeG6v20gNTAuMyUgdsOgIGtow7RuZyB0aMOtY2ggY8O0bmcgdmnhu4djIHRy4buxYyB0dXnhur9uIGNoaeG6v20gNDkuNiUNCg0KxJDhu5MgdGjhu4sNCg0KYGBge3J9DQpsaWJyYXJ5KGdncGxvdDIpDQpwc3ljbyB8PiBnZ3Bsb3QoYWVzKHggPSBlYXNlb2Zfb25saW5lLCB5ID0gYWZ0ZXJfc3RhdChjb3VudCkpKSArDQpnZW9tX2JhcihmaWxsID0gJ2JsYWNrJykgK2dlb21fdGV4dChhZXMobGFiZWwgPSBzY2FsZXM6OnBlcmNlbnQoYWZ0ZXJfc3RhdChjb3VudC9zdW0oY291bnQpKSkpLCBzdGF0ID0nY291bnQnLCBjb2xvciA9ICdyZWQnLCB2anVzdCA9IC0gLjUpICtsYWJzKHggPSAndGjDrWNoIGPDtG5nIHZp4buHYyB0cuG7sWMgdHV54bq/bicsIHkgPSAnY8O0bmcgdmnhu4djJykNCmBgYA0KDQpU4burIMSR4buTIHRo4buLIHRhIHRo4bqleSBz4buRIG5nxrDhu51pIHRow61jaCBjw7RuZyB2aeG7h2MgdHLhu7FjIHR1eeG6v24gY2hp4bq/bSA1MC4zOCUgdsOgIGtow7RuZyB0aMOtY2ggY2hp4bq/bSA0OS42MiUNCg0KIyMjIyA0LjMuMS42IEJp4bq/biBob21lX2VudjogVGjDrWNoIG3DtGkgdHLGsOG7nW5nIGdpYSDEkcOsbmgNCg0KQuG6o25nIHThuqduIHPhu5ENCg0KYGBge3J9DQp0YWJsZShwc3ljbyRob21lX2VudikNCmBgYA0KDQpz4buRIG5nxrDhu51pIHRow61jaCBtw7RpIHRyxrDhu51uZyBnaWEgxJHDrG5oIDU1NSBuZ8aw4budaSB0csOqbiB04buVbmcgMTE1NyBuZ8aw4budaSB2w6AgNjIwIG5nxrDhu51pIGtow7RuZyB0aMOtY2ggDQoNCg0KYGBge3J9DQp0YWJsZShwc3ljbyRob21lX2Vudikvc3VtKHRhYmxlKHBzeWNvJGhvbWVfZW52KSkNCmBgYA0KDQp04buJIGzhu4cgbmfGsOG7nWkgdGjDrWNoIG3DtGkgdHLGsOG7nW5nIGdpYSDEkcOsbmggY2hp4bq/bSA0Ny4yMyUgdsOgIGtow7RuZyB0aMOtY2ggY2hp4bq/bSA1Mi43JQ0KDQoNCsSQ4buTIHRo4buLDQoNCmBgYHtyfQ0KbGlicmFyeShnZ3Bsb3QyKQ0KcHN5Y28gfD4gZ2dwbG90KGFlcyh4ID0gaG9tZV9lbnYsIHkgPSBhZnRlcl9zdGF0KGNvdW50KSkpICsNCmdlb21fYmFyKGZpbGwgPSAnYmxhY2snKSArZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHNjYWxlczo6cGVyY2VudChhZnRlcl9zdGF0KGNvdW50L3N1bShjb3VudCkpKSksIHN0YXQgPSdjb3VudCcsIGNvbG9yID0gJ3JlZCcsIHZqdXN0ID0gLSAuNSkgK2xhYnMoeCA9ICd0aMOtY2ggbcO0aSB0csaw4budbmcgZ2lhIMSRw6xuaCcsIHkgPSAnY8O0bmcgdmnhu4djJykNCmBgYA0KDQpU4burIMSR4buTIHRo4buLIHRhIHRo4bqleSBt4bulYyDEkeG7mSB0aMOtY2ggbcO0aSB0csaw4budbmcgZ2lhIMSRw6xuaCBjaGnhur9tIDUyLjglIHbDoCBraMO0bmcgdGjDrWNoIG3DtGkgdHJ1b25nIGdpYSDEkcOsbmggY2hp4bq/bSA0Ny4yJQ0KDQojIyMgNC4zLjIgVGjhu5FuZyBrw6ogbcO0IHThuqMgY8OhYyBiaeG6v24gxJHhu4tuaCBsxrDhu6NuZyANCg0KIyMjIyA0LjMuMi4xIFRo4buRbmcga8OqIG3DtCB04bqjIGJp4bq/biByZWxheGVkDQoNCkLhuqNuZyB04bqnbiBz4buRDQoNCmBgYHtyfQ0KdGFibGUocHN5Y28kcmVsYXhlZCkNCmBgYA0KDQpgYGB7cn0NCnRhYmxlKHBzeWNvJHJlbGF4ZWQpL3N1bSh0YWJsZShwc3ljbyRyZWxheGVkKSkNCmBgYA0KDQrEkOG7kyB0aOG7iw0KDQpgYGB7cn0NCnBzeWNvIHw+IGdncGxvdChhZXMoeCA9IHJlbGF4ZWQsIHkgPSBhZnRlcl9zdGF0KGNvdW50KSkpICsNCmdlb21fYmFyKGZpbGwgPSAnYmxhY2snKSArZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHNjYWxlczo6cGVyY2VudChhZnRlcl9zdGF0KGNvdW50L3N1bShjb3VudCkpKSksIHN0YXQgPSdjb3VudCcsIGNvbG9yID0gJ3JlZCcsIHZqdXN0ID0gLSAuNSkgK2xhYnMoeCA9ICd0aOG7nWkgZ2lhbiBuZ2jhu4kgbmfGoWknLCB5ID0gJ0PDtG5nIHZp4buHYycpDQpgYGANCg0KIyMjIyA0LjMuMi4yIFRo4buRbmcga8OqIG3DtCB04bqjIGJp4bq/biBhZ2UNCg0KQuG6o25nIHThuqduIHPhu5ENCg0KYGBge3J9DQp0YWJsZShwc3ljbyRhZ2UpDQpgYGANCg0KdOG7qyBiw6BuZyB0YSB0aOG6pXkgY8OzIDM0NiBuZ8aw4budaSB04burIMSR4buVIHR14buVaSAxOS0yNSB0aGFtIGdpYSBjdeG7mWMgYsOsbmggY2jhu41uIDI2MSBuZ8aw4budaSB04burIMSR4buZIHR14buVaSAyNi0zMiB0aGFtIGdpYSBjdeG7mWMgYsOsbmggY2jhu41uIDEwMiBuZ8aw4budaSB04burIMSR4buZIHR14buVaSAzMy00MCB0aGFtIGdpYSBjdeG7mWMgYsOsbmggY2jhu41uIGPDsyAxODEgbmfGsOG7nWkgdOG7qyDEkeG7mSB0deG7lWkgNDAtNTAgdGhhbSBnaWEgYsOsbmggY2jhu41uIGPDsyAxNzAgdGhhbSBnaWEgYsOsbmggY2jhu41uIHLhu6sgxJHhu5kgdHXhu5VpIDUwLTYwIGPDsyA0MiBuZ8aw4budaSB0csOqbiA2MCsgdGhhbSBnaWEgYsOsbmggY2jhu41uDQoNCmBgYHtyfQ0KdGFibGUocHN5Y28kYWdlKS9zdW0odGFibGUocHN5Y28kYWdlKSkNCmBgYA0KDQpUw6wgbOG7hyB0deG7kWkgdGhhbSBnaWEgYsOsbmggY2jhu41uIHThu6sgMTktMjUgY2hp4bq/bSAyOS40NCUgMjYtMzIgY2hp4bq/bSAyMi4yJSAzMy00MCBjaGnhur9tIDAuODYlIDQwLTUwIGNoaeG6v20gMTUuNCUgNTAtNjAgY2hp4bq/bSAxNC40JSB0csOqbiA2MCsgY2hp4bq/bSAzLjU3JQ0KDQrEkOG7kyB0aOG7iw0KDQpgYGB7cn0NCnBzeWNvIHw+IGdncGxvdChhZXMoeCA9IGFnZSwgeSA9IGFmdGVyX3N0YXQoY291bnQpKSkgKw0KZ2VvbV9iYXIoZmlsbCA9ICdibGFjaycpICtnZW9tX3RleHQoYWVzKGxhYmVsID0gc2NhbGVzOjpwZXJjZW50KGFmdGVyX3N0YXQoY291bnQvc3VtKGNvdW50KSkpKSwgc3RhdCA9J2NvdW50JywgY29sb3IgPSAncmVkJywgdmp1c3QgPSAtIC41KSArbGFicyh4ID0gJ8SQ4buZIHR14buVaScsIHkgPSAnQ8O0bmcgdmnhu4djJykNCmBgYA0KDQpU4burIMSR4buTIHRo4buLIHRhIHRo4bqleSBuaOG7r25nIG5nxrDhu51pIGPDsyDEkeG7mSB0deG7lWkgdOG7qyAxOS0yNSBjw7MgY8O0bmcgdmnhu4djIGNhbyBuaOG6pXQgZ+G7k20gMzQ2IHRyw6puIHThu5VuZyAxMTc1IG5nxrDhu51pIGNoaeG6v20gMjkuNDUlIHbDoCBz4buRIG5nxrDhu51pIGPDsyBjw7RuZyB2aeG7h2MgdGjhuqVwIG5o4bqldCDhu58gxJHhu5kgdHXhu5VpIDYwKyB24bubaSA0MiBuZ8aw4budaSBjaGnhur9tIDMuNTclDQoNCiMjIyMgNC4zLjIuMyBUaOG7kW5nIGvDqiBtw7QgdOG6oyBiaeG6v24gdGltZV9icCAoVGjhu51pIGdpYW4gZMOgbmggY2hvIGPDtG5nIHZp4buHYyB0csaw4bubYyDEkeG6oWkgZOG7i2NoKQ0KDQpgYGB7cn0NCnRhYmxlKHBzeWNvJHRpbWVfYnApDQpgYGANCg0KdGjhu51pIGdpYW4gZMOgbmggY2hvIGPDtG5nIHZp4buHYyA0IHRp4bq/bmcgMSBuZ8OgeSBjw7MgMzMgbmfGsOG7nWkgNSB0aeG6v25nIGPDsyAyODMgbmfGsOG7nWkgNyB0aeG6v25nIGPDsyA0MTIgbmfGsOG7nWkgOSB0aeG6v25nIGPDsyAzNDMgbmfGsOG7nWkgMTEgdGnhur9uZyBjw7MgNTMgbmfGsOG7nWkgMTIgdGnhur9uZyBjw7MgNTEgbmfGsOG7nWkNCg0KYGBge3J9DQp0YWJsZShwc3ljbyR0aW1lX2JwKS9zdW0odGFibGUocHN5Y28kdGltZV9icCkpDQpgYGANCg0KNCB0aeG6v25nIGNoaeG6v20gMC4yOCUgNSB0aeG6v25nIGNoaeG6v20gMjQuMDglIDcgdGnhur9uZyBjaGnhur9tIDM1LjA2JSA5IHRp4bq/bmcgY2hp4bq/bSAyOS4xOSUgMTEgdGnhur9uZyBjaGnhur9tIDQuNTElIDEyIHRp4bq/bmcgY2hp4bq/bSA0LjM0JQ0KDQrEkOG7kyB0aOG7iw0KDQpgYGB7cn0NCnBzeWNvIHw+IGdncGxvdChhZXMoeCA9IHRpbWVfYnAsIHkgPSBhZnRlcl9zdGF0KGNvdW50KSkpICsNCmdlb21fYmFyKGZpbGwgPSAnYmxhY2snKSArZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHNjYWxlczo6cGVyY2VudChhZnRlcl9zdGF0KGNvdW50L3N1bShjb3VudCkpKSksIHN0YXQgPSdjb3VudCcsIGNvbG9yID0gJ3JlZCcsIHZqdXN0ID0gLSAuNSkgK2xhYnMoeCA9ICd0aOG7nWkgZ2lhbiBjw7RuZyB2aeG7h2MgdHLGsOG7m2MgxJHhuqFpIGThu4tjaCcsIHkgPSAnc+G7kSBuZ8aw4budaScpDQpgYGANCg0KZOG7sWEgdsOgbyBiaeG7g3UgxJHhu5MgdGEgdGjhuqV5IHRo4bufaSBnaWFuIGTDoG5oIGNobyBjb25nIHZp4buHYyDhu58gbeG7qWMgNyBjaGnhur9tIDQxMiBuZ8aw4budaSB0csOqbiAxMTU3IG5nxrDhu51pIGNoaeG6v20gMzUuMDYlIHbDoCBt4bupYyA0IGNoaeG6v20gw610IG5o4bqldCB24bubaSAyLjgxJQ0KDQojIyMjIDQuMy4yLjQgVGjhu5FuZyBrw6ogbcO0IHThuqMgYmnhur9uIHRpbWVfZHAoVGjhu51pIGdpYW4gZMOgbmggY2hvIGPDtG5nIHZp4buHYyBzYXUgxJHhuqFpIGThu4tjaCkNCg0KYGBge3J9DQp0YWJsZShwc3ljbyR0aW1lX2RwKQ0KYGBgDQoNCnRo4budaSBnaWFuIGTDoG5oIGNobyBjw7RuZyB2aeG7h2MgNCB0aeG6v25nIDEgbmfDoHkgY8OzIDE0OSBuZ8aw4budaSA1IHRp4bq/bmcgY8OzIDE4MCBuZ8aw4budaSA3IHRp4bq/bmcgY8OzIDI4MyBuZ8aw4budaSA5IHRp4bq/bmcgY8OzIDMyNiBuZ8aw4budaSAxMSB0aeG6v25nIGPDsyAxMTMgbmfGsOG7nWkgMTIgdGnhur9uZyBjw7MgMTY5IG5nxrDhu51pDQoNCmBgYHtyfQ0KdGFibGUocHN5Y28kdGltZV9icCkvc3VtKHRhYmxlKHBzeWNvJHRpbWVfYnApKQ0KYGBgDQoNCjQgdGnhur9uZyBjaGnhur9tIDAuMjglIDUgdGnhur9uZyBjaGnhur9tIDI0LjA4JSA3IHRp4bq/bmcgY2hp4bq/bSAzNS4wNiUgOSB0aeG6v25nIGNoaeG6v20gMjkuMTklIDExIHRp4bq/bmcgY2hp4bq/bSA0LjUxJSAxMiB0aeG6v25nIGNoaeG6v20gNC4zNCUNCg0KxJDhu5MgdGjhu4sNCg0KYGBge3J9DQpwc3ljbyB8PiBnZ3Bsb3QoYWVzKHggPSB0aW1lX2JwLCB5ID0gYWZ0ZXJfc3RhdChjb3VudCkpKSArDQpnZW9tX2JhcihmaWxsID0gJ2JsYWNrJykgK2dlb21fdGV4dChhZXMobGFiZWwgPSBzY2FsZXM6OnBlcmNlbnQoYWZ0ZXJfc3RhdChjb3VudC9zdW0oY291bnQpKSkpLCBzdGF0ID0nY291bnQnLCBjb2xvciA9ICdyZWQnLCB2anVzdCA9IC0gLjUpICtsYWJzKHggPSAndGjhu51pIGdpYW4gY8O0bmcgdmnhu4djIHNhdSDEkeG6oWkgZOG7i2NoJywgeSA9ICdz4buRIG5nxrDhu51pJykNCmBgYA0KDQpE4buxYSB2w6BvIMSR4buTIHRo4buLIHRhIHRo4bqleSB0aOG7nWkgZ2lhbiB0cnVuZyBiw6xuaCBuZ8aw4budaSDEkWkgbMOgbSB0csaw4bubYyDEkeG6oWkgZOG7i2NoIGzDqm4gxJHhur9uIDMyNiB0csOqbiB0w7RuZyAxMTc1IG5nxrDhu51pIGNoaeG6v20gMzUuMDYlIHbDoCB0aOG6pXAgbmjhuqV0IOG7nyBt4bupYyAxNDkgbmfGsOG7nWkgY2hp4bq/bSAyLjgxJQ0KDQojIyMjIDQuMy4yLjUgQmnhur9uIHByb2RfaW5jICggxJDDoW5oIGdpw6EgdMSDbmcgbsSDbmcgc3XhuqV0KQ0KDQpgYGB7cn0NCnRhYmxlKHBzeWNvJHByb2RfaW5jKQ0KYGBgDQoNCnTEg25nIG7Eg25nIHN14bqldCDhu58gbcO6YyAtMSBsw6AgMTUwIG5nxrDhu51pIC0wLjUgbMOgIDI3OSBuZ8aw4budaSAwIGzDoCAyOTUgMC41IGzDoCAzMDIgbmfGsOG7nWkgbeG7qWMgMSBsw6AgMTQ5IG5nxrDhu51pDQoNCmBgYHtyfQ0KdGFibGUocHN5Y28kcHJvZF9pbmMpL3N1bSh0YWJsZShwc3ljbyRwcm9kX2luYykpDQpgYGANCg0KY2hp4bq/bSAxMi43JSDhu58gbeG7qWMgLTEgMjMuNyUgbeG7qWMgLTAuNSAyNS4xMCUg4bufIG3hu6ljIDAgMjUuNyUg4bufIG3hu6ljIDAuNSAxMi42JSDhu50gbeG7qWMgMQ0KDQpgYGB7cn0NCnBzeWNvIHw+IGdncGxvdChhZXMoeCA9IHByb2RfaW5jLCB5ID0gYWZ0ZXJfc3RhdChjb3VudCkpKSArDQpnZW9tX2JhcihmaWxsID0gJ2JsYWNrJykgK2dlb21fdGV4dChhZXMobGFiZWwgPSBzY2FsZXM6OnBlcmNlbnQoYWZ0ZXJfc3RhdChjb3VudC9zdW0oY291bnQpKSkpLCBzdGF0ID0nY291bnQnLCBjb2xvciA9ICdyZWQnLCB2anVzdCA9IC0gLjUpICtsYWJzKHggPSAnxJHDoW5oIGdpw6EgdMSDbmcgbsSDbmcgc3XhuqV0JywgeSA9ICdz4buRIG5nxrDhu51pJykNCmBgYA0KDQpE4buvYSB2w6BvIMSR4buTIHRo4buLIHRo4bqleSBjw7MgMzAyIG5nxrDhu51pIMSRxrDhu6NjIMSRw6FuaCBnacOhIHTEg25nIG7Eg25nIHN14bqldCB0csOqbiB04buVbmcgMTE1NyBuZ8aw4budaSBjaGnhur9tIDI1LjcwNTIlIHbDoCAxNDkgbmfGsOG7nWkgxJHDoW5oIGdpw6Egw610IG5o4bqldCBjaGnhur9tIDEyLjY4MSUNCg0KIyMjIyA0LjMuMi42IEJp4bq/biBzbGVlcF9iYWwgKMSQw6FuaCBnacOhIGNodSBr4buzIGdp4bqlYyBuZ+G7pykNCg0KYGBge3J9DQp0YWJsZShwc3ljbyRzbGVlcF9iYWwpDQpgYGANCg0KxJDDoW5oIGdpw6EgZ2nhuqVjIG5n4bunIOG7nyBt4bupYyAtMSBsw6AgMjE0IG5nxrDhu51pIC0wLjUgbMOgIDMxMyBuZ8aw4budaSAwIGzDoCAyNzAgbmfGsOG7nWkgMC41IGzDoCAyNzEgbmfGsOG7nWkgMSBsw6AgMTA3IG5nxrDhu51pDQoNCg0KYGBge3J9DQp0YWJsZShwc3ljbyRzbGVlcF9iYWwpL3N1bSh0YWJsZShwc3ljbyRzbGVlcF9iYWwpKQ0KYGBgDQoNCm3hu6ljIC0xIGNoaeG6v20gMTguMjElIG3hu6ljIC0wLjUgY2hp4bq/bSAyNi42JSBt4bupYyAwIGNoaeG6v20gMjIuOSUgbeG7qWMgMC41IGNoaeG6v20gMjMuMDYlIG3hu6ljIDEgY2hp4bq/bSA5LjE2JQ0KDQrEkOG7kyB0aOG7iw0KDQpgYGB7cn0NCnBzeWNvIHw+IGdncGxvdChhZXMoeCA9IHNsZWVwX2JhbCwgeSA9IGFmdGVyX3N0YXQoY291bnQpKSkgKw0KZ2VvbV9iYXIoZmlsbCA9ICdibGFjaycpICtnZW9tX3RleHQoYWVzKGxhYmVsID0gc2NhbGVzOjpwZXJjZW50KGFmdGVyX3N0YXQoY291bnQvc3VtKGNvdW50KSkpKSwgc3RhdCA9J2NvdW50JywgY29sb3IgPSAncmVkJywgdmp1c3QgPSAtIC41KSArbGFicyh4ID0gJ2dp4bqlYyBuZ+G7pycsIHkgPSAnc+G7kSBuZ8aw4budaScpDQpgYGANCg0KROG7sWEgdsOgbyBiaeG7g3UgxJHhu5MgdGEgdGjhuqV5IGPDsyB0w7RuZyAzMTMgbmfGsOG7nWkgZMaw4bujYyDEkcOhbmggZ2nDoSBnaeG6pWMgbmfhu6cgY2hp4bq/bSAyNi42MzglIHbDoCBjw7Mgw610IG5o4bqldCAxMDcgbmfGsOG7nWkgY2hp4bq/bSA5LjEwNiUNCg0KIyMjIyA0LjMuMi43IFRo4buRbmcga8OqIG3DtCB04bqjIGJp4bq/biBmYW1fY29ubmVjdA0KDQpgYGB7cn0NCnRhYmxlKHBzeWNvJGZhbV9jb25uZWN0KQ0KYGBgDQoNCuG7nyBt4bupYyAtMSBsw6AgMTgxIG5nxrDhu51pIC0wLjUgbMOgIDkxIG5nxrDhu51pIDAgbMOgIDE2MiBuZ8aw4budaSAwLjUgbMOgIDQxNCBuZ8aw4budaSAxIGzDoCAzMjYgbmfGsOG7nWkNCg0KYGBge3J9DQp0YWJsZShwc3ljbyRmYW1fY29ubmVjdCkvc3VtKHRhYmxlKHBzeWNvJGZhbV9jb25uZWN0KSkNCmBgYA0KDQpt4bupYyAtMSBjaGnhur9tIDE1LjQwJSBt4bupYyAtMC41IGNoaeG6v20gNy44MiUgbeG7qWMgMCBjaGnhur9tIDEzLjclIG3hu6ljIDAuNSBjaGnhur9tIDM1LjIzJSBt4bupYyAxIGNoaeG6v20gMjcuNyUNCg0KxJDhu5MgdGjhu4sNCg0KYGBge3J9DQpwc3ljbyB8PiBnZ3Bsb3QoYWVzKHggPSBzbGVlcF9iYWwsIHkgPSBhZnRlcl9zdGF0KGNvdW50KSkpICsNCmdlb21fYmFyKGZpbGwgPSAnYmxhY2snKSArZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHNjYWxlczo6cGVyY2VudChhZnRlcl9zdGF0KGNvdW50L3N1bShjb3VudCkpKSksIHN0YXQgPSdjb3VudCcsIGNvbG9yID0gJ3JlZCcsIHZqdXN0ID0gLSAuNSkgK2xhYnMoeCA9ICdt4bupYyDEkeG7mSBr4bq/dCBu4buRaSBj4bunYSBuZ8aw4budaSDEkcOzIHbhu5tpIGdpYSDEkcOsbmgnLCB5ID0gJ3Phu5EgbmfGsOG7nWknKQ0KYGBgDQoNClThu6sgxJHhu5MgdGjhu4sgdGEgdGjhuqV5IG3hu6ljIMSR4buZIGvhur90IG7hu5FpIGPhu6dhIG5nxrDhu51pIMSRw7MgduG7m2kgZ2lhIMSRw6xuaCBjYW8gbmjhuqV0IOG7nyDEkeG7mSB0deG7lWkgNjArIGPDsyAzMjYgbmfGsOG7nWkgY2hp4bq/bSA5LjEwNiUgDQoNCiMjIDQuNCBUaOG7kW5nIGvDqiBzdXkgZGnhu4VuIGNobyBk4buvIGxp4buHdSDEkeG7i25oIHTDrW5oDQoNCiMjIyA0LjQuMSBLaeG7g20gxJHhu4tuaCB0w61uaCDEkeG7mWMgbOG6rXAgY2hvIDIgYmnhur9uIMSR4buLbmggdMOtbmgNCg0KIyMjIyA0LjQuMS4xIEJp4bq/biBwcmVmZXIgdsOgIGJp4bq/biBnZW5kZXINCg0KYGBge3J9DQpwcmVmZXIgPSBwc3ljbyRwcmVmZXINCmdlbmRlciA9IHBzeWNvJGdlbmRlcg0KYGBgDQoNCmBgYHtyfQ0KZHQxIDwtIHRhYmxlKHByZWZlciwgcHN5Y28kZ2VuZGVyKQ0KZHQxDQpgYGANCg0KYGBge3J9DQpjaGlzcS50ZXN0KGR0MSkNCmBgYA0KDQpL4bq/dCBxdeG6oyBraeG7g20gxJHhu4tuaCBjaG8gdGjhuqV5LCBQLXZhbHVlIDwgMC4wNSB2w6wgduG6rXkgYsOhYyBi4buPIGdp4bqjIHRodXnhur90IEgwLCB04bupYyBsw6Agbmdo4buBIG5naGnhu4dwIGPhu6dhIG5nxrDhu51pIMSRw7MgdsOgIGdp4bubaSB0w61uaCBjw7MgcXVhbiBo4buHIHbhu5tpIG5oYXUNCg0KIyMjIyA0LjQuMS4yIEJp4bq/biBwcmVmZXIgdsOgIGJp4bq/biBob21lX2Vudg0KDQpgYGB7cn0NCmR0MiA8LSB0YWJsZShwcmVmZXIsIHBzeWNvJGhvbWVfZW52KQ0KZHQyDQpgYGANCg0KYGBge3J9DQpjaGlzcS50ZXN0KGR0MikNCmBgYA0KDQpL4bq/dCBxdeG6oyBraeG7g20gxJHhu4tuaCBjaG8gdGjhuqV5LCBQLXZhbHVlIDwgMC4wNSB2w6wgduG6rXkgYsOhYyBi4buPIGdp4bqjIHRodXnhur90IEgwLCB04bupYyBsw6Agbmdo4buBIG5naGnhu4dwIHbDoCBz4buRIG5nxrDhu51pIGzDoG0gdmnhu4djIHThuqFpIG5ow6AgY8OzIHF1YW4gaOG7hyB24bubaSBuaGF1DQoNCiMjIyMgNC40LjEuMyBCaeG6v24gcHJlZmVyIHbDoCBiaeG6v24gY2VydGFpbmRheXNfaHcNCg0KYGBge3J9DQpkdDMgPC0gdGFibGUocHJlZmVyLCBwc3ljbyRjZXJ0YWluZGF5c19odykNCmR0Mw0KYGBgDQoNCmBgYHtyfQ0KY2hpc3EudGVzdChkdDMpDQpgYGANCg0KS+G6v3QgcXXhuqMga2nhu4NtIMSR4buLbmggY2hvIHRo4bqleSwgUC12YWx1ZSA8IDAuMDUgdsOsIHbhuq15IGLDoWMgYuG7jyBnaeG6oyB0aHV54bq/dCBIMCwgdOG7qWMgbMOgIMSRaSBo4buNYyBoYXkgxJFpIGzDoG0gdsOgIOG7mXQgc+G7kSBuZ8OgeSBsw6BtIHZp4buHYyB04bqhaSBuaMOgIGPDsyBj4bqnbiB0aGnhur90IGhheSBraMO0bmcgIGPDsyBxdWFuIGjhu4cgduG7m2kgbmhhdQ0KDQojIyMjIDQuNC4xLjQgQmnhur9uIHByZWZlciB2w6AgYmnhur9uIGVhc2VvZl9vbmxpbmUNCg0KYGBge3J9DQpkdGUgPC0gdGFibGUocHJlZmVyLCBwc3ljbyRlYXNlb2Zfb25saW5lKQ0KZHRlDQpgYGANCg0KYGBge3J9DQpjaGlzcS50ZXN0KGR0ZSkNCmBgYA0KDQpL4bq/dCBxdeG6oyBraeG7g20gxJHhu4tuaCBjaG8gdGjhuqV5LCBQLXZhbHVlIDwgMC4wNSB2w6wgduG6rXkgYsOhYyBi4buPIGdp4bqjIHRodXnhur90IEgwLCB04bupYyBsw6AgxJFpIGjhu41jIGhheSDEkWkgbMOgbSB2w6AgdGjDrWNoIGPDtG5nIHZp4buHYyB0cuG7sWMgdHV54bq/biBjw7MgcXVhbiBo4buHIHbhu5tpIG5oYXUNCg0KIyMjIyA0LjQuMS41IEJp4bq/biBwcmVmZXIgdsOgIGJp4bq/biBob21lX2Vudg0KDQpgYGB7cn0NCmR0aCA8LSB0YWJsZShwcmVmZXIsIHBzeWNvJGhvbWVfZW52KQ0KZHRoDQpgYGANCg0KYGBge3J9DQpjaGlzcS50ZXN0KGR0aCkNCmBgYA0KDQpL4bq/dCBxdeG6oyBraeG7g20gxJHhu4tuaCBjaG8gdGjhuqV5LCBQLXZhbHVlIDwgMC4wNSB2w6wgduG6rXkgYsOhYyBi4buPIGdp4bqjIHRodXnhur90IEgwLCB04bupYyBsw6AgxJFpIGjhu41jIGhheSDEkWkgbMOgbSB2w6AgdGjDrWNoIG3DtGkgdHLGsOG7nW5nIGdpYSDEkcOsbmggY8OzIHF1YW4gaOG7hyB24bubaSBuaGF1DQoNCiMjIyMgNC40LjEuNiBCaeG6v24gcmVsYXhlZCB2w6AgYmnhur9uIGFnZQ0KDQpgYGB7cn0NCnJlbGF4ZWQgPSBwc3ljbyRyZWxheGVkDQpkdDQgPC0gdGFibGUocmVsYXhlZCwgcHN5Y28kYWdlKQ0KZHQ0DQpgYGANCg0KYGBge3J9DQpjaGlzcS50ZXN0KGR0NCkNCmBgYA0KDQpL4bq/dCBxdeG6oyBraeG7g20gxJHhu4tuaCBjaG8gdGjhuqV5LCBQLXZhbHVlIDwgMC4wNSB2w6wgduG6rXkgYsOhYyBi4buPIGdp4bqjIHRodXnhur90IEgwLCB04bupYyBsw6AgbeG7qWMgxJHhu5kgdGjGsCBnacOjbiBj4bunYSBuZ8aw4budaSDEkcOzIHbDoCDEkeG7mSB0deG7lWkgY8OzIHF1YW4gaOG7hyB24bubaSBuaGF1DQoNCiMjIyMgNC40LjEuNyBCaeG6v24gcmVsYXhlZCB2w6AgYmnhur9uIHByZWZlcg0KDQpgYGB7cn0NCmR0NSA8LSB0YWJsZShyZWxheGVkLCBwc3ljbyRhZ2UpDQpkdDUNCmBgYA0KDQpgYGB7cn0NCmNoaXNxLnRlc3QoZHQ1KQ0KYGBgDQoNCkvhur90IHF14bqjIGtp4buDbSDEkeG7i25oIGNobyB0aOG6pXksIFAtdmFsdWUgPCAwLjA1IHbDrCB24bqteSBiw6FjIGLhu48gZ2nhuqMgdGh1eeG6v3QgSDAsIHThu6ljIGzDoCBt4bupYyDEkeG7mSB0aMawIGdpw6NuIGPhu6dhIG5nxrDhu51pIMSRw7MgdsOgIHPhu5EgbmfGsOG7nWkgbMOgbSB2aeG7h2MgdOG6oWkgbmjDoCBoYXkgxJFpIGjhu41jIGPDsyBxdWFuIGjhu4cgduG7m2kgbmhhdQ0KDQojIyMjIDQuNC4xLjggQmnhur9uIHJlbGF4ZWQgdsOgIGJp4bq/biBjZXJ0YWluZGF5c19odw0KDQpgYGB7cn0NCmR0NiA8LSB0YWJsZShyZWxheGVkLCBwc3ljbyRjZXJ0YWluZGF5c19odykNCmR0Ng0KYGBgDQoNCmBgYHtyfQ0KY2hpc3EudGVzdChkdDYpDQpgYGANCg0KS+G6v3QgcXXhuqMga2nhu4NtIMSR4buLbmggY2hvIHRo4bqleSwgUC12YWx1ZSA8IDAuMDUgdsOsIHbhuq15IGLDoWMgYuG7jyBnaeG6oyB0aHV54bq/dCBIMCwgdOG7qWMgbMOgIG3hu6ljIMSR4buZIHRoxrAgZ2nDo24gY+G7p2EgbmfGsOG7nWkgxJHDsyB2w6AgbeG7mXQgc+G7kSBuZ8OgeSBsw6BtIHZp4buHYyB04bqhaSBuaMOgIGPDsyBj4bqnbiB0aGnhur90IGhheSBraMO0bmcgY8OzIHF1YW4gaOG7hyB24bubaSBuaGF1DQoNCiMjIyMgNC40LjEuOSBCaeG6v24gcmVsYXhlZCB2w6AgYmnhur9uIHRyYXZlbF90aW1lDQoNCmBgYHtyfQ0KZHQ3IDwtIHRhYmxlKHJlbGF4ZWQsIHBzeWNvJHRyYXZlbF90aW1lKQ0KZHQ3DQpgYGANCg0KYGBge3J9DQpjaGlzcS50ZXN0KGR0NykNCmBgYA0KDQrhur90IHF14bqjIGtp4buDbSDEkeG7i25oIGNobyB0aOG6pXksIFAtdmFsdWUgPCAwLjA1IHbDrCB24bqteSBiw6FjIGLhu48gZ2nhuqMgdGh1eeG6v3QgSDAsIHThu6ljIGzDoCBt4bupYyDEkeG7mSB0aMawIGdpw6NuIGPhu6dhIG5nxrDhu51pIMSRw7MgdsOgIHRo4budaSBnaWFuIGRpIGNodXnhu4NuIGPDsyBxdWFuIGjhu4cgduG7m2kgbmhhdQ0KDQojIyMjIDQuMS4xLjEwIEJp4bq/biByZWxheGVkIHbDoCBiaeG6v24gc2VsZl90aW1lDQoNCmBgYHtyfQ0KZHQ4IDwtIHRhYmxlKHJlbGF4ZWQsIHBzeWNvJHNlbGZfdGltZSkNCmR0OA0KYGBgDQoNCmBgYHtyfQ0KY2hpc3EudGVzdChkdDgpDQpgYGANCg0KS+G6v3QgcXXhuqMga2nhu4NtIMSR4buLbmggY2hvIHRo4bqleSwgUC12YWx1ZSA8IDAuMDUgdsOsIHbhuq15IGLDoWMgYuG7jyBnaeG6oyB0aHV54bq/dCBIMCwgdOG7qWMgbMOgIG3hu6ljIMSR4buZIHRoxrAgZ2nDo24gY+G7p2EgbmfGsOG7nWkgxJHDsyB2w6AgbeG7qWMgxJHhu5kga+G6v3QgbuG7kWkgY+G7p2EgxJHDoW5oIGdpw6EgYmFvIG5oacOqdSB0aOG7nWkgZ2lhbiBi4bqjbiB0aMOibiDEkcOjIMSRxrDhu6NjIG11YSBjw7MgcXVhbiBo4buHIHbhu5tpIG5oYXUNCg0KIyMjIyA0LjQuMS4xMSBCaeG6v24gcmVsYXhlZCB2w6AgYmnhur9uIGdlbmRlcg0KDQpgYGB7cn0NCmR0OSA8LSB0YWJsZShyZWxheGVkLCBwc3ljbyRnZW5kZXIpDQpkdDkNCmBgYA0KDQpgYGB7cn0NCmNoaXNxLnRlc3QoZHQ5KQ0KYGBgDQoNCkvhur90IHF14bqjIGtp4buDbSDEkeG7i25oIGNobyB0aOG6pXksIFAtdmFsdWUgPCAwLjA1IHbDrCB24bqteSBiw6FjIGLhu48gZ2nhuqMgdGh1eeG6v3QgSDAsIHThu6ljIGzDoCBt4bupYyDEkeG7mSB0aMawIGdpw6NuIGPhu6dhIG5nxrDhu51pIMSRw7MgdsOgIGdp4bubaSB0w61uaCBjw7MgcXVhbiBo4buHIHbhu5tpIG5oYXUNCg0KIyMjIDQuNC4yIFLhu6dpIHJvIHTGsMahbmcgxJHhu5FpIChSaXNrIHJhdGlvKSB2w6AgcuG7tyBs4buHIGNow6puaCAob2Rkc3JhdGlvKQ0KDQojIyMjIDQuNC4yLjEgQmnhur9uIEJp4bq/biBwcmVmZXIgdsOgIGJp4bq/biBnZW5kZXINCg0KYGBge3J9DQpsaWJyYXJ5KGVwaXRvb2xzKQ0KZDEgPC0gdGFibGUocHN5Y28kcHJlZmVyLCBwc3ljbyRnZW5kZXIpDQpyaXNrcmF0aW8oZDEpDQpgYGANCg0KYGBge3J9DQplcGl0YWIoZDEsIG1ldGhvZCA9ICJvZGRzcmF0aW8iKQ0KYGBgDQoNCiMjIyMgNC40LjIuMiBCaeG6v24gcHJlZmVyIHbDoCBiaeG6v24gZWFzZW9mX29ubGluZQ0KDQpgYGB7cn0NCmxpYnJhcnkoZXBpdG9vbHMpDQpkMiA8LSB0YWJsZShwc3ljbyRwcmVmZXIsIHBzeWNvJGVhc2VvZl9vbmxpbmUpDQpyaXNrcmF0aW8oZDIpDQpgYGANCg0KYGBge3J9DQplcGl0YWIoZDIsIG1ldGhvZCA9ICJvZGRzcmF0aW8iKQ0KYGBgDQoNCiMjIyMgNC40LjIuNCBCaeG6v24gcHJlZmVyIHbDoCBiaeG6v24gaG9tZV9lbnYNCg0KYGBge3J9DQpsaWJyYXJ5KGVwaXRvb2xzKQ0KZGggPC0gdGFibGUocHN5Y28kcHJlZmVyLCBwc3ljbyRob21lX2VudikNCnJpc2tyYXRpbyhkaCkNCmBgYA0KDQpgYGB7cn0NCmVwaXRhYihkaCwgbWV0aG9kID0gIm9kZHNyYXRpbyIpDQpgYGANCg0KIyMjIyA0LjQuMi41IEJp4bq/biByZWxheGVkIHbDoCBiaeG6v24gdHJhdmVsX3RpbWUNCg0KYGBge3J9DQpsaWJyYXJ5KGVwaXRvb2xzKQ0KZDMgPC0gdGFibGUocHN5Y28kcmVsYXhlZCwgcHN5Y28kdHJhdmVsX3RpbWUpDQpyaXNrcmF0aW8oZDMpDQpgYGANCg0KYGBge3J9DQplcGl0YWIoZDMsIG1ldGhvZCA9ICJvZGRzcmF0aW8iKQ0KYGBgDQoNCiMjIyMgNC40LjIuNiBCaeG6v24gcmVsYXhlZCB2w6AgYmnhur9uIGNlcnRhaW5kYXlzX2h3DQoNCmBgYHtyfQ0KbGlicmFyeShlcGl0b29scykNCmQ0IDwtIHRhYmxlKHBzeWNvJHJlbGF4ZWQsIHBzeWNvJGNlcnRhaW5kYXlzX2h3KQ0Kcmlza3JhdGlvKGQ0KQ0KYGBgDQoNCmBgYHtyfQ0KZXBpdGFiKGQ0LCBtZXRob2QgPSAib2Rkc3JhdGlvIikNCmBgYA0KDQojIyMgNC40LjMgTcO0IGjDrG5oIGxvZ2l0DQoNCmBgYHtyfQ0KcHJlZmVyID0gcHN5Y28kcHJlZmVyDQplYXNlb2Zfb25saW5lID0gcHN5Y28kZWFzZW9mX29ubGluZQ0KaG9tZV9lbnYgPSBwc3ljbyRob21lX2Vudg0Kb2NjdXBhdGlvbiA9IHBzeWNvJG9jY3VwYXRpb24NCmZhbV9jb25uZWN0ID0gcHN5Y28kZmFtX2Nvbm5lY3QNCmdlbmRlciA9IHBzeWNvJGdlbmRlcg0KY2VydGFpbmRheXNfaHcgPSBwc3ljbyRjZXJ0YWluZGF5c19odw0KdHJhdmVsX3RpbWUgPSBwc3ljbyR0cmF2ZWxfdGltZQ0KbGlrZV9odyA9IHBzeWNvJGxpa2VfaHcNCmRpc2xpa2VfaHcgPSBwc3ljbyRkaXNsaWtlX2h3DQptaDEgPC0gZ2xtKGRhdGEgPSBwc3ljbywgZm9ybXVsYSA9IGZhY3RvcihwcmVmZXIpIH4gZ2VuZGVyICsgZWFzZW9mX29ubGluZSArIGhvbWVfZW52ICsgY2VydGFpbmRheXNfaHcgKyBmYW1fY29ubmVjdCArIHRyYXZlbF90aW1lLCBmYW1pbHkgPSBiaW5vbWlhbChsaW5rID0gImxvZ2l0IikpDQpsZXZlbHMoZmFjdG9yKHByZWZlcikpDQpgYGANCg0KYGBge3J9DQpzdW1tYXJ5KG1oMSkNCmBgYA0KDQojIyMgNC40LjQgTcO0IGjDrG5oIHByb2JpdA0KDQpgYGB7cn0NCm1oMiA8LSBnbG0oZGF0YSA9IHBzeWNvLCBmb3JtdWxhID0gZmFjdG9yKHByZWZlcikgfiBnZW5kZXIgKyBlYXNlb2Zfb25saW5lICsgaG9tZV9lbnYgKyBjZXJ0YWluZGF5c19odyArIGZhbV9jb25uZWN0ICsgdHJhdmVsX3RpbWUsIGZhbWlseSA9IGJpbm9taWFsKGxpbmsgPSAicHJvYml0IikpDQpsZXZlbHMoZmFjdG9yKHByZWZlcikpDQpgYGANCg0KYGBge3J9DQpzdW1tYXJ5KG1oMikNCmBgYA0KDQojIyMgNC40LjUgTcO0IGjDrG5oIGNsb2dsb2cNCg0KYGBge3J9DQptaDMgPC0gZ2xtKGRhdGEgPSBwc3ljbywgZm9ybXVsYSA9IGZhY3RvcihwcmVmZXIpIH4gZ2VuZGVyICsgZWFzZW9mX29ubGluZSArIGhvbWVfZW52ICsgY2VydGFpbmRheXNfaHcgKyBmYW1fY29ubmVjdCArIHRyYXZlbF90aW1lLCBmYW1pbHkgPSBiaW5vbWlhbChsaW5rID0gImNsb2dsb2ciKSkNCmxldmVscyhmYWN0b3IocHJlZmVyKSkNCmBgYA0KDQpgYGB7cn0NCnN1bW1hcnkobWgzKQ0KYGBgDQoNCiMjIDQuNSBM4buxYSBjaOG7jW4gbcO0IGjDrG5oDQoNCmBgYHtyfQ0KIyBUacOqdSBjaMOtIEFJQyAtIEFrYWlrZSBJbmZvcm1hdGlvbiBDcml0ZXJpb24NCmFpYzEgPC0gQUlDKG1oMSkNCmFpYzIgPC0gQUlDKG1oMikNCmFpYzMgPC0gQUlDKG1oMykNCkFJQyA8LWNiaW5kKGFpYzEsYWljMixhaWMzKQ0KQUlDDQpgYGANCg0KYGBge3J9DQojIFRpw6p1IGNow60gRGV2aWFuY2UNCmRlMSA8LSBkZXZpYW5jZShtaDEpDQpkZTIgPC0gZGV2aWFuY2UobWgyKQ0KZGUzIDwtIGRldmlhbmNlKG1oMykNCmRldmlhbmNlIDwtIGNiaW5kKGRlMSxkZTIsZGUzKQ0KZGV2aWFuY2UNCmBgYA0KDQpgYGB7cn0NCiMgVGnDqnUgY2jDrSBCcmllciBTY29yZQ0KYnMxIDwtIEJyaWVyU2NvcmUobWgxKQ0KYnMyIDwtIEJyaWVyU2NvcmUobWgyKQ0KYnMzIDwtIEJyaWVyU2NvcmUobWgzKQ0KQnJpZXJTY29yZSA8LSBjYmluZChiczEsYnMyLGJzMykNCkJyaWVyU2NvcmUNCmBgYA0KDQpE4buxYSB2w6BvIDMgdGnDqnUgY2jDrSBBSUMsIERldmlhbmNlLCBCcmllclNjb3JlLCB0YSB0aOG6pXkgMyB0acOqdSBjaMOtIGPhu6dhIG3DtCBow6xuaCBjbG9nbG9nIG5o4buPIG5o4bqldCwgdOG7qWMgbMOgIG3DtCBow6xuaCBjbG9nbG9nIGzDoCBtw7QgaMOsbmggdOG7kXQgbmjhuqV0IHRyb25nIDMgbcO0IGjDrG5oLg0KDQojIyA0LjYgR2nhuqNpIHRow61jaCBr4bq/dCBxdeG6oyBtw7QgaMOsbmgNCg0KYGBge3J9DQpzdW1tYXJ5KG1oMykNCmBgYA0KDQpNw7QgaMOsbmggaOG7k2kgcXV5IHRyb25nIGLDoGkgxJHGsOG7o2MgeMOhYyDEkeG7i25oIG5oxrAgc2F1Og0KDQokJA0KXG1hdGhybXtjbG9nbG9nKFxwaSl9ID0gLTAuNjAyOTYgLTEuMDI3NDVnZW5kZXIgKyAwLjI1NTg3ZWFzZW9mX29ubGluZSAtIC0wLjA2NDQ1aG9tZV9lbnYgLTAuMDcxNzFjZXJ0YWluZGF5c19odyArIDAuNzQwNTVmYW1fY29ubmVjdCAtIDAuNDk1MTN0cmF2ZWxfdGltZQ0KJCQNCkvhur90IHF14bqjIHBow6JuIHTDrWNoIGjhu5NpIHF1eSBMb2dpdCBjaG8gdGjhuqV5LCA2IGJp4bq/biDEkcawYSB2w6BvIG3DtCBow6xuaCBo4buTaSBxdXkgxJHhu4MgcGjDom4gdMOtY2ggbmjGsG5nIGvhur90IHF14bqjIHBow6JuIHTDrWNoIGNo4buJIGPDsyA0IGJp4bq/biDEkeG7mWMgbOG6rXAgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqiBiYW8gZ+G7k206DQoNCmdlbmRlciBHaeG7m2kgdMOtbmgNCg0KZWFzZW9mX29ubGluZSAgVGjDrWNoIGPDtG5nIHZp4buHYyB0cuG7sWMgdHV54bq/bg0KDQpmYW1fY29ubmVjdCDEkMOhbmggZ2nDoSBt4bupYyDEkeG7mSBr4bq/dCBu4buRaSBj4bunYSBuZ8aw4budaSDEkcOzIHbhu5tpIGdpYSDEkcOsbmgNCg0KdHJhdmVsX3RpbWUgVGjhu51pIGdpYW4gZGkgY2h1eeG7g24NCg0KVuG7m2kgZ2nhuqMgdGh1eeG6v3QgY8OhYyB54bq/dSB04buRIGtow6FjIGtow7RuZyDEkeG7lWksIOG6o25oIGjGsOG7n25nIGPhu6dhIHThu6tuZyBiaeG6v24gxJHhur9uIMSRxrDhu6NjIGRp4buFbiBnaeG6o2kgbmjGsCBzYXU6DQoNCmVhc2VvZl9vbmxpbmUgIFRow61jaCBjw7RuZyB2aeG7h2MgdHLhu7FjIHR1eeG6v24gc+G6vSBjw7MgdMOhYyDEkeG7mW5nIGtow6FjIG5oYXUgxJHhur9uIGzDoG0gdmnhu4djIHThuqFpIG5ow6AgaGF5IMSRaSBo4buNYyDhu54gbeG7qWMgw70gbmdoxKlhIDUlLCDGsOG7m2MgbMaw4bujbmcgMC4yNTU4NyBjaG8gYmnhur9uIG7DoHkgY2hvIHRo4bqleSBjw7MgbeG7kWkgbGnDqm4gaOG7hyB0w61jaCB0w61jaCBj4buxYyBsw6BtIHZp4buHYyB04bqhaSBuaMOgIGhheSDEkWkgaOG7jWMNCg0KZmFtX2Nvbm5lY3QgxJDDoW5oIGdpw6EgbeG7qWMgxJHhu5kga+G6v3QgbuG7kWkgY+G7p2EgbmfGsOG7nWkgxJHDsyB24bubaSBnaWEgxJHDrG5oIHPhur0gY8OzIHTDoWMgxJHhu5luZyBraMOhYyBuaGF1IMSR4bq/biBsw6BtIHZp4buHYyB04bqhaSBuaMOgIGhheSDEkWkgaOG7jWMg4bueIG3hu6ljIMO9IG5naMSpYSA1JSwgxrDhu5tjIGzGsOG7o25nIDAuNzQwNTUgY2hvIGJp4bq/biBuw6B5IGNobyB0aOG6pXkgY8OzIG3hu5FpIGxpw6puIGjhu4cgdMOtY2ggdMOtY2ggY+G7sWMgbMOgbSB2aeG7h2MgdOG6oWkgbmjDoCBoYXkgxJFpIGjhu41jDQoNCnRyYXZlbF90aW1lIFRo4budaSBnaWFuIGRpIGNodXnhu4NuIHPhur0gY8OzIHTDoWMgxJHhu5luZyBraMOhYyBuaGF1IMSR4bq/biBsw6BtIHZp4buHYyB04bqhaSBuaMOgIGhheSDEkWkgaOG7jWMg4bueIG3hu6ljIMO9IG5naMSpYSA1JSwgxrDhu5tjIGzGsOG7o25nIC0wLjQ5NTEzICBjaG8gYmnhur9uIG7DoHkgY2hvIHRo4bqleSBjw7MgbeG7kWkgbGnDqm4gaOG7hyB0w61jaCB0acOqdSBj4buxYyBsw6BtIHZp4buHYyB04bqhaSBuaMOgIGhheSDEkWkgaOG7jWMNCg0KZ2VuZGVyIEdp4bubaSB0w61uaCBraMOhYyBuaGF1IHPhur0gY8OzIHTDoWMgxJHhu5luZyBraMOhYyBuaGF1IMSR4bq/biBsw6BtIHZp4buHYyB04bqhaSBuaMOgIGhheSDEkWkgaOG7jWMg4bueIG3hu6ljIMO9IG5naMSpYSA1JSwgxrDhu5tjIGzGsOG7o25nIC0xLjAyNzQ1IGNobyBiaeG6v24gbsOgeSBjaG8gdGjhuqV5IGPDsyBt4buRaSBsacOqbiBo4buHIHTDrWNoIHRpw6p1IGPhu7FjIGzDoG0gdmnhu4djIHThuqFpIG5ow6AgaGF5IMSRaSBo4buNYw0KDQojIyA0LjcgxJDhu5kgY2jDrW5oIHjDoWMgbcO0IGjDrG5oDQoNCmBgYHtyfQ0KbGlicmFyeShjYXJldCkNCmBgYA0KDQpgYGB7cn0NCiMjIyBNw7QgaMOsbmggY2xvZ2xvZw0KcHJlZGljdGlvbnMgPC0gcHJlZGljdChtaDMsIG5ld2RhdGEgPSBwc3ljbywgdHlwZSA9ICJyZXNwb25zZSIpDQpwcmVkaWN0ZWRfY2xhc3NlcyA8LSBpZmVsc2UocHJlZGljdGlvbnMgPiAwLjUsICIxIiwgIjAiKQ0KcHJlZGljdGlvbnMxPC1mYWN0b3IocHJlZGljdGVkX2NsYXNzZXMsIGxldmVscyA9IGMoIjAiLCIxIikpDQphY3R1YWw8LSBmYWN0b3IocHN5Y28kcHJlZmVyLCBsYWJlbHMgPSBjKCIwIiwiMSIpKQ0KY29uZnVzaW9uTWF0cml4KHRhYmxlKHByZWRpY3Rpb25zMSwgYWN0dWFsKSkNCmBgYA0KDQpNw7QgaMOsbmggY8OzIDc3LjAyJSDEkeG7mSBjaMOtbmggeMOhYywgY8OzIMSR4buZIG5o4bqheSA5My4xOCUgdsOgIMSR4buZIGhp4buHdSBxdeG6oyBsw6AgMzcuMTclDQoNCg0KIyBDaMawxqFuZyA1OiBL4bq/dCBsdeG6rW4NCg0KIyMgNS4xIEvhur90IEx14bqtbg0KDQpUw7NtIGzhuqFpLCDEkeG6oWkgZOG7i2NoIENPVklELTE5IMSRw6MgdOG6oW8gcmEgbmhp4buBdSB0aMOhY2ggdGjhu6ljIHbDoCBjxqEgaOG7mWkgY2hvIGRvYW5oIG5naGnhu4dwLiBOaOG7r25nIGRvYW5oIG5naGnhu4dwIGxpbmggaG/huqF0IHbDoCB04bqtbiBk4bulbmcgxJHGsOG7o2MgY8ahIGjhu5lpIGvhu7kgdGh14bqtdCBz4buRIHRoxrDhu51uZyBjw7Mga2jhuqMgbsSDbmcgdGjDrWNoIG5naGkgdOG7kXQgaMahbiB0cm9uZyB0aOG7nWkga+G7syBraMOzIGtoxINuIG7DoHkuDQpUcsaw4bubYyDEkeG6oWkgZOG7i2NoIENPVklELTE5Og0KDQpNw7RpIHRyxrDhu51uZyBraW5oIGRvYW5oIHRodeG6rW4gbOG7o2k6IFRyxrDhu5tjIMSR4bqhaSBk4buLY2gsIG7hu4FuIGtpbmggdOG6vyBjw7MgeHUgaMaw4bubbmcgdMSDbmcgdHLGsOG7n25nIOG7lW4gxJHhu4tuaCwgZG9hbmggbmdoaeG7h3AgZOG7hSBkw6BuZyB0aeG6v3AgY+G6rW4gdGjhu4sgdHLGsOG7nW5nIHbDoCBuZ3Xhu5NuIGzhu7FjLg0KDQpD4bqhbmggdHJhbmggbeG6oW5oIG3hur06IERvYW5oIG5naGnhu4dwIMSR4buRaSDEkeG6p3UgduG7m2kgc+G7sSBj4bqhbmggdHJhbmggY2FvIHThu6sgY+G6oyBkb2FuaCBuZ2hp4buHcCB0cm9uZyB2w6Agbmdvw6BpIG7GsOG7m2MuDQpI4bqhbiBjaOG6vyBr4bu5IHRodeG6rXQgc+G7kTogVHJvbmcgbcO0aSB0csaw4budbmcga2luaCBkb2FuaCB0csaw4bubYyDEkeG6oWkgZOG7i2NoLCBt4buZdCBz4buRIGRvYW5oIG5naGnhu4dwIGPDsyB0aOG7gyBjaMawYSBraGFpIHRow6FjIHThu5FpIMSRYSB0aeG7gW0gbsSDbmcgY+G7p2EgY8O0bmcgbmdo4buHIHPhu5EgdsOgIGvhu7kgdGh14bqtdCBz4buRLg0KVHJvbmcgxJHhuqFpIGThu4tjaCBDT1ZJRC0xOToNCg0KS2jhu6duZyBob+G6o25nIGtpbmggdOG6vzogxJDhuqFpIGThu4tjaCBDT1ZJRC0xOSDEkcOjIGfDonkgcmEga2jhu6duZyBob+G6o25nIGtpbmggdOG6vyB0b8OgbiBj4bqndSwgZOG6q24gxJHhur9uIHN1eSB0aG/DoWkga2luaCB04bq/IHbDoCBt4bqldCB2aeG7h2MgbMOgbS4NClRow61jaCDhu6luZyB24bubaSDEkWnhu4F1IGtp4buHbiBt4bubaTogRG9hbmggbmdoaeG7h3AgcGjhuqNpIHRow61jaCDhu6luZyB24bubaSBjw6FjIGJp4buHbiBwaMOhcCBwaG9uZyB04buPYSwgZ2nDo24gY8OhY2ggeMOjIGjhu5lpIHbDoCBjw6FjIGjhuqFuIGNo4bq/IGhv4bqhdCDEkeG7mW5nIGtpbmggZG9hbmguDQoNClTEg25nIGPGsOG7nW5nIGvhu7kgdGh14bqtdCBz4buROiDEkOG6oWkgZOG7i2NoIMSRw6MgdGjDumMgxJHhuql5IHPhu7EgY2h1eeG7g24gxJHhu5VpIGvhu7kgdGh14bqtdCBz4buRLCBraGnhur9uIG5oaeG7gXUgZG9hbmggbmdoaeG7h3AgdOG6rXAgdHJ1bmcgaMahbiB2w6BvIHBow6F0IHRyaeG7g24gdsOgIHRp4bq/cCBj4bqtbiB0aOG7iyB0csaw4budbmcgdHLhu7FjIHR1eeG6v24uDQpOaHUgY+G6p3Ugc+G6o24gcGjhuqltL2Thu4tjaCB24bulIHRoYXkgxJHhu5VpOiBN4buZdCBz4buRIGzEqW5oIHbhu7FjIG5oxrAgZOG7i2NoIHbhu6UgeSB04bq/LCBjaMSDbSBzw7NjIHPhu6ljIGto4buPZSwgc+G6o24gcGjhuqltIGdp4bqjaSB0csOtIHRy4buxYyB0dXnhur9uLCBnaWFvIGjDoG5nIHbDoCBk4buLY2ggduG7pSB0cuG7sWMgdHV54bq/biB0xINuZyB0csaw4bufbmcgbeG6oW5oIG3hur0sIHRyb25nIGtoaSBt4buZdCBz4buRIGzEqW5oIHbhu7FjIGtow6FjIGLhu4sg4bqjbmggaMaw4bufbmcgdGnDqnUgY+G7sWMuDQrEkGnhu4F1IGtp4buHbiBsw6BtIHZp4buHYyB0aGF5IMSR4buVaTogTmhp4buBdSBjw7RuZyB0eSDEkcOjIHRow7pjIMSR4bqpeSBow6xuaCB0aOG7qWMgbMOgbSB2aeG7h2MgdOG7qyB4YSDEkeG7gyBkdXkgdHLDrCBob+G6oXQgxJHhu5luZyBraW5oIGRvYW5oIHRyb25nIMSR4bqhaSBk4buLY2guDQoNCiMjIDUuMiBLaeG6v24gbmdo4buLDQoNCkThu7FhIHRyw6puIHTDrG5oIGjDrG5oIGtpbmggZG9hbmggdHJvbmcgxJHhuqFpIGThu4tjaCBDT1ZJRC0xOSwgZMaw4bubaSDEkcOieSBsw6AgbeG7mXQgc+G7kSBraeG6v24gbmdo4buLIGNobyBkb2FuaCBuZ2hp4buHcDoNCg0KxJDhuql5IG3huqFuaCBr4bu5IHRodeG6rXQgc+G7kTogVGnhur9wIHThu6VjIMSR4bqndSB0xrAgdsOgIHTEg25nIGPGsOG7nW5nIHF1w6EgdHLDrG5oIGNodXnhu4NuIMSR4buVaSBr4bu5IHRodeG6rXQgc+G7kSB0cm9uZyBob+G6oXQgxJHhu5luZyBraW5oIGRvYW5oIGPhu6dhIGLhuqFuLiBYw6J5IGThu7FuZyBt4buZdCB0cmFuZyB3ZWIgdOG7kWkgxrB1IHbDoCBk4buFIHPhu60gZOG7pW5nLCB0xINuZyBjxrDhu51uZyBt4bqhbmcgeMOjIGjhu5lpIHbDoCB0aeG6v3AgY+G6rW4gdGjhu4sgdHLGsOG7nW5nIHRy4buxYyB0dXnhur9uIMSR4buDIHRodSBow7p0IHbDoCBkdXkgdHLDrCBraMOhY2ggaMOgbmcgdHJvbmcgdGjhu51pIGdpYW4ga2jDsyBraMSDbiBuw6B5Lg0KDQrEkGEgZOG6oW5nIGjDs2Egbmd14buTbiB0aHU6IE5naGnDqm4gY+G7qXUgdsOgIG3hu58gcuG7mW5nIGzEqW5oIHbhu7FjIGtpbmggZG9hbmggaG/hurdjIHPhuqNuIHBo4bqpbS9k4buLY2ggduG7pSBj4bunYSBi4bqhbiDEkeG7gyDEkWEgZOG6oW5nIGjDs2Egbmd14buTbiB0aHUuIMSQaeG7gXUgbsOgeSBjw7MgdGjhu4MgZ2nDunAgZ2nhuqNtIHRoaeG7g3UgdMOhYyDEkeG7mW5nIGPhu6dhIHZp4buHYyBzdXkgZ2nhuqNtIG5odSBj4bqndSB0cm9uZyBt4buZdCBsxKluaCB24buxYyBj4bulIHRo4buDLg0KDQpU4bqtcCB0cnVuZyB2w6BvIHPhu7EgYW4gdG/DoG4gdsOgIHkgdOG6vzogTuG6v3UgZG9hbmggbmdoaeG7h3AgY+G7p2EgYuG6oW4gaG/huqF0IMSR4buZbmcgdHJvbmcgY8OhYyBsxKluaCB24buxYyBjw7MgbGnDqm4gcXVhbiDEkeG6v24gc+G7qWMga2jhu49lLCBjaMSDbSBzw7NjIGPDoSBuaMOibiBob+G6t2MgZOG7i2NoIHbhu6UgeSB04bq/LCBow6N5IMSR4bqjbSBi4bqjbyB0dcOibiB0aOG7pyBjw6FjIHF1eSDEkeG7i25oIHbhu4Egc+G7sSBhbiB0b8OgbiB2w6AgeSB04bq/IMSR4buDIGLhuqNvIHbhu4cga2jDoWNoIGjDoG5nIHbDoCBuaMOibiB2acOqbi4NCg0KVOG7kWkgxrB1IGjDs2EgcXXhuqNuIGzDvSB0w6BpIGNow61uaDogWGVtIHjDqXQgdsOgIGPhuqNpIHRoaeG7h24gcXV5IHRyw6xuaCBxdeG6o24gbMO9IHTDoGkgY2jDrW5oIGPhu6dhIGRvYW5oIG5naGnhu4dwLiBHaeG6o20gdGhp4buDdSBjw6FjIGNoaSBwaMOtIGtow7RuZyBj4bqnbiB0aGnhur90IHbDoCB04buRaSDGsHUgaMOzYSB2aeG7h2MgdGh1IGjhu5NpIHRp4buBbiBuaGFuaCBjaMOzbmcgdOG7qyBraMOhY2ggaMOgbmcgxJHhu4MgY+G6o2kgdGhp4buHbiBkw7JuZyB0aeG7gW4uDQoNCljDonkgZOG7sW5nIHbDoCBkdXkgdHLDrCBxdWFuIGjhu4cga2jDoWNoIGjDoG5nOiBU4bqhbyBz4buxIHRpbiB0xrDhu59uZyB2w6AgdMSDbmcgY8aw4budbmcgcXVhbiBo4buHIHbhu5tpIGtow6FjaCBow6BuZy4gVMOsbSBoaeG7g3Ugbmh1IGPhuqd1IGPhu6dhIGjhu40gdHJvbmcgdGjhu51pIGdpYW4ga2jDsyBraMSDbiB2w6AgY3VuZyBj4bqlcCBnaeG6o2kgcGjDoXAgcGjDuSBo4bujcC4gQ3VuZyBj4bqlcCBk4buLY2ggduG7pSBraMOhY2ggaMOgbmcgeHXhuqV0IHPhuq9jIHbDoCBnaeG6o2kgcXV54bq/dCBjw6FjIHbhuqVuIMSR4buBIG5oYW5oIGNow7NuZyDEkeG7gyBkdXkgdHLDrCBsw7JuZyB0aW4gY+G7p2Ega2jDoWNoIGjDoG5nLg0KDQpOw6JuZyBjYW8ga2jhuqMgbsSDbmcgdGjDrWNoIG5naGk6IEjDo3kgY+G6qW4gdHLhu41uZyB24bubaSBjw6FjIGJp4bq/biDEkeG7lWkgdHJvbmcgbcO0aSB0csaw4budbmcga2luaCBkb2FuaCB2w6AgeMOjIGjhu5lpLiBE4buxIMSRb8OhbiB2w6AgdGjDrWNoIG5naGkgbmhhbmggY2jDs25nIHbhu5tpIG5o4buvbmcgdGhheSDEkeG7lWkgbsOgeSDEkeG7gyDEkeG6o20gYuG6o28gYuG7gW4gduG7r25nIHbDoCBwaMOhdCB0cmnhu4NuIHRyb25nIHTGsMahbmcgbGFpLg0KDQpI4buXIHRy4bujIG5ow6JuIHZpw6puOiBU4bqhbyDEkWnhu4F1IGtp4buHbiBsw6BtIHZp4buHYyBhbiB0b8OgbiB2w6AgxJHhuqNtIGLhuqNvIHPhu6ljIGto4buPZSB0aW5oIHRo4bqnbiBj4bunYSBuaMOibiB2acOqbiB0cm9uZyB0aOG7nWkgZ2lhbiBraMOzIGtoxINuLiDEkMawYSByYSBjw6FjIGNoxrDGoW5nIHRyw6xuaCBo4buXIHRy4bujIHRpbmggdGjhuqduIHbDoCB0aMO6YyDEkeG6qXkgc+G7sSBj4buRbmcgaGnhur9uIGPhu6dhIG5ow6JuIHZpw6puIHRyb25nIGPDtG5nIHZp4buHYy4NCg0KTuG6r20gYuG6r3QgY8ahIGjhu5lpOiBIw6N5IHTDrG0ga2nhur9tIGPGoSBo4buZaSBt4bubaSB4deG6pXQgaGnhu4duIHRyb25nIMSR4bqhaSBk4buLY2gsIGNo4bqzbmcgaOG6oW4gbmjGsCB0aOG7iyB0csaw4budbmcgbeG7m2ksIG5odSBj4bqndSBt4bubaSBob+G6t2MgY8OhYyDEkeG7kWkgdMOhYyB0aeG7gW0gbsSDbmcuIFPhurVuIGzDsm5nIHRoYXkgxJHhu5VpIGNoaeG6v24gbMaw4bujYyBraW5oIGRvYW5oIG7hur91IGPhuqduIHRoaeG6v3QgxJHhu4MgdOG6rW4gZOG7pW5nIG5o4buvbmcgY8ahIGjhu5lpIG7DoHkuDQoNCkR1eSB0csOsIHRyw6FjaCBuaGnhu4dtIHjDoyBo4buZaTogVHJvbmcgdGjhu51pIGdpYW4ga2jDsyBraMSDbiwgZG9hbmggbmdoaeG7h3AgY8WpbmcgY+G6p24gY2jDuiB0cuG7jW5nIMSR4bq/biB0csOhY2ggbmhp4buHbSB4w6MgaOG7mWkuIEjhu5cgdHLhu6MgY+G7mW5nIMSR4buTbmcsIMSRw7NuZyBnw7NwIHbDoG8gdmnhu4djIGdp4bqjbSB0aGnhu4N1IHTDoWMgxJHhu5luZyB0acOqdSBj4buxYyBj4bunYSDEkeG6oWkgZOG7i2NoIHbDoCB0aOG7gyBoaeG7h24gc+G7sSDEkeG7k25nIHTDrG5oIHbhu5tpIGPhu5luZyDEkeG7k25nIHh1bmcgcXVhbmguDQoNCk5o4buvbmcga2nhur9uIG5naOG7iyBuw6B5IHPhur0gZ2nDunAgZG9hbmggbmdoaeG7h3Agdsaw4bujdCBxdWEga2jDsyBraMSDbiB2w6AgcGjDoXQgdHJp4buDbiBi4buBbiB24buvbmcgdHJvbmcgdsOgIHNhdSDEkeG6oWkgZOG7i2NoIENPVklELTE5Lg0KDQojIExpbmsgZmlsZSBQREYgYsOgaSB0aeG7g3UgbHXhuq1uDQoNCmZpbGU6Ly8vRDovVGklRTElQkIlODN1JTIwbHUlRTElQkElQURuJTIwUFRETERULnBkZg0KDQojIExpbmsgZ29vZ2xlIGRyaXZlIGLhu5kgZOG7ryBsaeG7h3UNCg0KaHR0cHM6Ly9kcml2ZS5nb29nbGUuY29tL2RyaXZlL2ZvbGRlcnMvMXJVcWZvVlRjYTJqU0ROTEUxazBRdWVyQ0VLcnVlY0Q4DQoNCiMgVMOgaSBsaeG7h3Uga2hhbSBraOG6o28NCg0KVC5LLlRoYW5oLCBULk0uVMaw4budbmcsIFYuQS5MLkR1eSwgQsOgaSBnaeG6o25nIFBow6JuIHTDrWNoIGThu68gbGnhu4d1IMSR4buLbmggdMOtbmguDQoNCg==