Tên: Mai Huy

MSSV: 43.01.104.065

Số thứ tự: 08

Câu a)

# Load thư viện MASS
library(MASS)

Attaching package: 㤼㸱MASS㤼㸲

The following object is masked _by_ 㤼㸱.GlobalEnv㤼㸲:

    Boston
# Chúng ta đã có dataset Boston
Boston

Các dòng cho biết về vùng điều tra dân số Hoa Kì ở vùng Boston, các cột cho biết các biến đo lường về dân số

# Tìm hiểu dataset Boston
?Boston
#CÓ 506 dòng và 14 cột
dim(Boston)
[1] 506  14

Câu b)

# attach dùng để khiến cho những biến feature trong dữ liệu có sẵn trong Rstudio theo tên
attach(Boston)
The following object is masked _by_ .GlobalEnv:

    chas

The following objects are masked from Boston (pos = 4):

    age, black, chas, crim, dis, indus, lstat, medv, nox,
    ptratio, rad, rm, tax, zn
# Pairs() dùng để tạo ra ma trận đồ thị phân tán của dữ liệu
pairs(Boston)

Chúng ta có thể thấy rằng các biến dữ liệu có mối quan hệ tương quan với nhau, biến medv có tỉ lệ đối xứng nghịch đảo với các biến lstat, nox, indus và tỉ lệ trực tiếp với rm

Câu c)

# Gán biến Boston.corr cho dataset Boston
Boston.corr = cor(Boston)
# Lấy tất cả các dòng trừ dòng crime và lấy cột crime của biểu đồ tương quan
Boston.corr.crim = Boston.corr[-1,1]
# In ra chỉ số tương quan của biến crime với các biến còn lại theo thứ tự giảm dần
print(
  Boston.corr.crim[order(abs(Boston.corr.crim), decreasing = T)]
)
        rad         tax       lstat         nox       indus 
 0.62550515  0.58276431  0.45562148  0.42097171  0.40658341 
       medv       black         dis         age     ptratio 
-0.38830461 -0.38506394 -0.37967009  0.35273425  0.28994558 
         rm          zn        chas 
-0.21924670 -0.20046922 -0.05589158 

4 biến có chỉ số tương quan tốt nhất với crime là rad, tax, lstat, nox đều có giá trị dương, bây giờ hãy thử hiển thị biểu đồ phân tán của chúng với biến crime

#Biểu đồ phân tán của các biến  dữ liệu với các dữ liệu cột được chia thành cửa sổ 2x2 bằng cách sử dụng hàm mfrow=c(2,2)
par(mfrow=c(2,2))
# Lưu biến aux thành tên 4 biến có chỉ số tương quan tốt nhất với crime bao gồm là rad, tax, lstat, nox
aux = names(Boston.corr.crim[order(abs(Boston.corr.crim), decreasing = T)][1:4])
# Hiển thị biểu đồ phân tán của biến crime với 4 biến rad, tax, lstat, nox với crime là trục y và 4 biến kia là trục x
for(i in aux){
  plot(get(i), crim, xlab=i)
}

Câu d)

# Hiển thị histogram của biến crime
hist(crim)

Chúng ta thấy rằng tần suất có tội phạm ở các vùng ngoại ô là không cao, hầu hết tỉ lệ có tội phạm ở vùng ngoại ô là dưới 10% và chỉ có 1 số ít những vùng ngoại ô có tỉ lệ trên 20%

#Giờ chúng ta hãy tính thử số lượng vùng ngoại ô có tỉ lệ tội phạm trên 30%
# CHúng ta thấy rằng chỉ có 8 vùng ngoại ô có tỉ lệ tội phạm trên 30%
length(crim[crim>30])
[1] 8
# Hiển thị histogram của biến tax
hist(tax)

Chúng ta thấy rằng có một số vùng ngoại ô có thuế rất cao lên tới gần 700

#Thử tính thử số vùng ngoại ô có thuế cao hơn 500
# Chúng ta thấy có 137 vùng ngoại ô thuế cao hơn 500 
length(tax[tax>500])
[1] 137
# Và có 369 vùng ngoại ô thuế nhỏ hơn 500
length(tax[tax<500])
[1] 369
# Hiển thị histogram của biến ptraito
hist(ptratio)

Chúng ta thấy số lượng vùng ngoại ô có tỉ lệ học sinh và giáo viên >20 là rất nhiều nhưng không nhiều vùng ngoại ô có tỉ lệ học sinh giáo viên <14

# Thử tính số lượng vùng ngoại ô có tỉ lệ học sinh và giáo viên <14
length(ptratio[ptratio<14])
[1] 16

Câu e)

#Có khoản 35 vùng ngoại ô giao với con sông Charles và 471 vùng không giao
summary(chas==1) 
   Mode   FALSE    TRUE 
logical     471      35 

Câu f)

#Câu f
# Giá trị trung bình của tỉ lệ học sinh-giáo viên trong dataset
median(ptratio)
[1] 19.05

Câu g)

#Vùng ngoại ô ở Boston có giá trị trung bình của những người chủ thấp nhất là vùng ngoaị ô thứ 399
which.min(medv)
[1] 399
#Biểu đồ phân tán của các biến  dữ liệu với các dữ liệu cột được chia thành cửa sổ 2x2 bằng cách sử dụng hàm mfrow=c(2,2), mar dùng để điều chỉnh kích thước của các biểu đồ về độ cao, rộng
par(mfrow=c(5,3), mar=c(2, 2, 1, 0))

# Xét từng cột trong dataset Boston
for (i in 1:ncol(Boston)){
  # Biểu đồ phân tán của từng cột trong dataset Boston
  hist(Boston[, i], main=colnames(Boston)[i])
  # Hiển thị 1 đường thẳng màu đỏ có độ rộng =3 chỉ mục dòng thứ 399 của dữ liệu biểu diễn vị trí vùng ngoại ô có giá trị trung bình của người chủ nhà thấp nhất
  abline(v=Boston[399, i], col="red", lw=3)
}

Câu h)

#Có 64 vùng ngoại ô có hơn 7 phòng được trú ngụ và 442 vùng dưới hoặc bằng 7 phòng
summary(rm > 7)
   Mode   FALSE    TRUE 
logical     442      64 
#Có 13 vùng ngoại ô có hơn 8 phòng được trú ngụ và 493 vùng dưới hoặc bằng 8 phòng
summary(rm > 8)
   Mode   FALSE    TRUE 
logical     493      13 
#Tạo chỉ mục index theo đặc điểm vùng ngoại ô có hơn 8 phòng :
idx <- rm > 8
#Biểu đồ phân tán của các biến  dữ liệu với các dữ liệu cột được chia thành cửa sổ 2x2 bằng cách sử dụng hàm mfrow=c(2,2), mar dùng để điều chỉnh kích thước của các biểu đồ về độ cao, rộng
par(mfrow=c(5,3), mar=c(2, 2, 1, 0))
# Xét từng cột trong dataset Boston
for (i in 1:ncol(Boston)){
  # Biểu đồ phân tán của từng cột trong dataset Boston
  hist(Boston[, i], main=colnames(Boston)[i])
  # Hiển thị những đường thẳng màu đỏ có độ rộng =1 chỉ mục những dòng của dữ liệu biểu diễn trí vị trí vùng ngoại ô có hơn 8 phòng được trú ngụ
  abline(v=Boston[idx, i], col="red", lw=1)
}

LS0tDQp0aXRsZTogIkLDoGkgdOG6rXAgMyINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCiMjIyBUw6puOiBNYWkgSHV5DQojIyMgTVNTVjogNDMuMDEuMTA0LjA2NQ0KIyMjIFPhu5EgdGjhu6kgdOG7sTogMDgNCg0KIyBDw6J1IGEpDQoNCmBgYHtyfQ0KIyBMb2FkIHRoxrAgdmnhu4duIE1BU1MNCmxpYnJhcnkoTUFTUykNCiMgQ2jDum5nIHRhIMSRw6MgY8OzIGRhdGFzZXQgQm9zdG9uDQpCb3N0b24NCmBgYA0KDQpDw6FjIGTDsm5nIGNobyBiaeG6v3QgduG7gSB2w7luZyDEkWnhu4F1IHRyYSBkw6JuIHPhu5EgSG9hIEvDrCDhu58gdsO5bmcgQm9zdG9uLCBjw6FjIGPhu5l0IGNobyBiaeG6v3QgY8OhYyBiaeG6v24gxJFvIGzGsOG7nW5nIHbhu4EgZMOibiBz4buRDQoNCmBgYHtyfQ0KIyBUw6xtIGhp4buDdSBkYXRhc2V0IEJvc3Rvbg0KP0Jvc3Rvbg0KI0PDkyA1MDYgZMOybmcgdsOgIDE0IGPhu5l0DQpkaW0oQm9zdG9uKQ0KDQpgYGANCg0KDQojIEPDonUgYikNCg0KYGBge3J9DQojIGF0dGFjaCBkw7luZyDEkeG7gyBraGnhur9uIGNobyBuaOG7r25nIGJp4bq/biBmZWF0dXJlIHRyb25nIGThu68gbGnhu4d1IGPDsyBz4bq1biB0cm9uZyBSc3R1ZGlvIHRoZW8gdMOqbg0KYXR0YWNoKEJvc3RvbikNCiMgUGFpcnMoKSBkw7luZyDEkeG7gyB04bqhbyByYSBtYSB0cuG6rW4gxJHhu5MgdGjhu4sgcGjDom4gdMOhbiBj4bunYSBk4buvIGxp4buHdQ0KcGFpcnMoQm9zdG9uKQ0KDQpgYGANCg0KQ2jDum5nIHRhIGPDsyB0aOG7gyB0aOG6pXkgcuG6sW5nIGPDoWMgYmnhur9uIGThu68gbGnhu4d1IGPDsyBt4buRaSBxdWFuIGjhu4cgdMawxqFuZyBxdWFuIHbhu5tpIG5oYXUsIGJp4bq/biBtZWR2IGPDsyB04buJIGzhu4cgxJHhu5FpIHjhu6luZyBuZ2jhu4tjaCDEkeG6o28gduG7m2kgY8OhYyBiaeG6v24gbHN0YXQsIG5veCwgaW5kdXMgdsOgIHThu4kgbOG7hyB0cuG7sWMgdGnhur9wIHbhu5tpIHJtDQoNCiMgQ8OidSBjKQ0KDQpgYGB7cn0NCiMgR8OhbiBiaeG6v24gQm9zdG9uLmNvcnIgY2hvIGRhdGFzZXQgQm9zdG9uDQpCb3N0b24uY29yciA9IGNvcihCb3N0b24pDQojIEzhuqV5IHThuqV0IGPhuqMgY8OhYyBkw7JuZyB0cuG7qyBkw7JuZyBjcmltZSB2w6AgbOG6pXkgY+G7mXQgY3JpbWUgY+G7p2EgYmnhu4N1IMSR4buTIHTGsMahbmcgcXVhbg0KQm9zdG9uLmNvcnIuY3JpbSA9IEJvc3Rvbi5jb3JyWy0xLDFdDQojIEluIHJhIGNo4buJIHPhu5EgdMawxqFuZyBxdWFuIGPhu6dhIGJp4bq/biBjcmltZSB24bubaSBjw6FjIGJp4bq/biBjw7JuIGzhuqFpIHRoZW8gdGjhu6kgdOG7sSBnaeG6o20gZOG6p24NCnByaW50KA0KICBCb3N0b24uY29yci5jcmltW29yZGVyKGFicyhCb3N0b24uY29yci5jcmltKSwgZGVjcmVhc2luZyA9IFQpXQ0KKQ0KYGBgDQoNCiMjIyA0IGJp4bq/biBjw7MgY2jhu4kgc+G7kSB0xrDGoW5nIHF1YW4gdOG7kXQgbmjhuqV0IHbhu5tpIGNyaW1lIGzDoCByYWQsIHRheCwgbHN0YXQsIG5veCDEkeG7gXUgY8OzIGdpw6EgdHLhu4sgZMawxqFuZywgYsOieSBnaeG7nSBow6N5IHRo4butIGhp4buDbiB0aOG7iyBiaeG7g3UgxJHhu5MgcGjDom4gdMOhbiBj4bunYSBjaMO6bmcgduG7m2kgYmnhur9uIGNyaW1lDQoNCmBgYHtyfQ0KI0Jp4buDdSDEkeG7kyBwaMOibiB0w6FuIGPhu6dhIGPDoWMgYmnhur9uICBk4buvIGxp4buHdSB24bubaSBjw6FjIGThu68gbGnhu4d1IGPhu5l0IMSRxrDhu6NjIGNoaWEgdGjDoG5oIGPhu61hIHPhu5UgMngyIGLhurFuZyBjw6FjaCBz4butIGThu6VuZyBow6BtIG1mcm93PWMoMiwyKQ0KcGFyKG1mcm93PWMoMiwyKSkNCiMgTMawdSBiaeG6v24gYXV4IHRow6BuaCB0w6puIDQgYmnhur9uIGPDsyBjaOG7iSBz4buRIHTGsMahbmcgcXVhbiB04buRdCBuaOG6pXQgduG7m2kgY3JpbWUgYmFvIGfhu5NtIGzDoCByYWQsIHRheCwgbHN0YXQsIG5veA0KYXV4ID0gbmFtZXMoQm9zdG9uLmNvcnIuY3JpbVtvcmRlcihhYnMoQm9zdG9uLmNvcnIuY3JpbSksIGRlY3JlYXNpbmcgPSBUKV1bMTo0XSkNCiMgSGnhu4NuIHRo4buLIGJp4buDdSDEkeG7kyBwaMOibiB0w6FuIGPhu6dhIGJp4bq/biBjcmltZSB24bubaSA0IGJp4bq/biByYWQsIHRheCwgbHN0YXQsIG5veCB24bubaSBjcmltZSBsw6AgdHLhu6VjIHkgdsOgIDQgYmnhur9uIGtpYSBsw6AgdHLhu6VjIHgNCmZvcihpIGluIGF1eCl7DQogIHBsb3QoZ2V0KGkpLCBjcmltLCB4bGFiPWkpDQp9DQpgYGANCg0KIyBDw6J1IGQpDQoNCmBgYHtyfQ0KIyBIaeG7g24gdGjhu4sgaGlzdG9ncmFtIGPhu6dhIGJp4bq/biBjcmltZQ0KaGlzdChjcmltKQ0KDQpgYGANCkNow7puZyB0YSB0aOG6pXkgcuG6sW5nIHThuqduIHN14bqldCBjw7MgdOG7mWkgcGjhuqFtIOG7nyBjw6FjIHbDuW5nIG5nb+G6oWkgw7QgbMOgIGtow7RuZyBjYW8sIGjhuqd1IGjhur90IHThu4kgbOG7hyBjw7MgdOG7mWkgcGjhuqFtIOG7nyB2w7luZyBuZ2/huqFpIMO0IGzDoCBkxrDhu5tpIDEwJSB2w6AgY2jhu4kgY8OzIDEgc+G7kSDDrXQgbmjhu69uZyB2w7luZyBuZ2/huqFpIMO0IGPDsyB04buJIGzhu4cgdHLDqm4gMjAlDQoNCmBgYHtyfQ0KI0dp4budIGNow7puZyB0YSBow6N5IHTDrW5oIHRo4butIHPhu5EgbMaw4bujbmcgdsO5bmcgbmdv4bqhaSDDtCBjw7MgdOG7iSBs4buHIHThu5lpIHBo4bqhbSB0csOqbiAzMCUNCiMgQ0jDum5nIHRhIHRo4bqleSBy4bqxbmcgY2jhu4kgY8OzIDggdsO5bmcgbmdv4bqhaSDDtCBjw7MgdOG7iSBs4buHIHThu5lpIHBo4bqhbSB0csOqbiAzMCUNCmxlbmd0aChjcmltW2NyaW0+MzBdKQ0KYGBgDQoNCmBgYHtyfQ0KIyBIaeG7g24gdGjhu4sgaGlzdG9ncmFtIGPhu6dhIGJp4bq/biB0YXgNCmhpc3QodGF4KQ0KYGBgDQoNCkNow7puZyB0YSB0aOG6pXkgcuG6sW5nIGPDsyBt4buZdCBz4buRIHbDuW5nIG5nb+G6oWkgw7QgY8OzIHRodeG6vyBy4bqldCBjYW8gbMOqbiB04bubaSBn4bqnbiA3MDANCmBgYHtyfQ0KI1Ro4butIHTDrW5oIHRo4butIHPhu5EgdsO5bmcgbmdv4bqhaSDDtCBjw7MgdGh14bq/IGNhbyBoxqFuIDUwMA0KIyBDaMO6bmcgdGEgdGjhuqV5IGPDsyAxMzcgdsO5bmcgbmdv4bqhaSDDtCB0aHXhur8gY2FvIGjGoW4gNTAwIA0KbGVuZ3RoKHRheFt0YXg+NTAwXSkNCiMgVsOgIGPDsyAzNjkgdsO5bmcgbmdv4bqhaSDDtCB0aHXhur8gbmjhu48gaMahbiA1MDANCmxlbmd0aCh0YXhbdGF4PDUwMF0pDQpgYGANCg0KYGBge3J9DQojIEhp4buDbiB0aOG7iyBoaXN0b2dyYW0gY+G7p2EgYmnhur9uIHB0cmFpdG8NCmhpc3QocHRyYXRpbykNCmBgYA0KDQpDaMO6bmcgdGEgdGjhuqV5IHPhu5EgbMaw4bujbmcgdsO5bmcgbmdv4bqhaSDDtCBjw7MgdOG7iSBs4buHIGjhu41jIHNpbmggdsOgIGdpw6FvIHZpw6puID4yMCBsw6AgcuG6pXQgbmhp4buBdSBuaMawbmcga2jDtG5nIG5oaeG7gXUgdsO5bmcgbmdv4bqhaSDDtCBjw7MgdOG7iSBs4buHIGjhu41jIHNpbmggZ2nDoW8gdmnDqm4gPDE0DQoNCmBgYHtyfQ0KIyBUaOG7rSB0w61uaCBz4buRIGzGsOG7o25nIHbDuW5nIG5nb+G6oWkgw7QgY8OzIHThu4kgbOG7hyBo4buNYyBzaW5oIHbDoCBnacOhbyB2acOqbiA8MTQNCmxlbmd0aChwdHJhdGlvW3B0cmF0aW88MTRdKQ0KYGBgDQoNCiMgQ8OidSBlKQ0KIA0KYGBge3J9DQojQ8OzIGtob+G6o24gMzUgdsO5bmcgbmdv4bqhaSDDtCBnaWFvIHbhu5tpIGNvbiBzw7RuZyBDaGFybGVzIHbDoCA0NzEgdsO5bmcga2jDtG5nIGdpYW8NCnN1bW1hcnkoY2hhcz09MSkgDQpgYGANCg0KIyBDw6J1IGYpDQoNCmBgYHtyfQ0KIyBHacOhIHRy4buLIHRydW5nIGLDrG5oIGPhu6dhIHThu4kgbOG7hyBo4buNYyBzaW5oLWdpw6FvIHZpw6puIHRyb25nIGRhdGFzZXQNCm1lZGlhbihwdHJhdGlvKQ0KYGBgDQoNCiMgQ8OidSBnKQ0KDQpgYGB7cn0NCiNWw7luZyBuZ2/huqFpIMO0IOG7nyBCb3N0b24gY8OzIGdpw6EgdHLhu4sgdHJ1bmcgYsOsbmggY+G7p2Egbmjhu69uZyBuZ8aw4budaSBjaOG7pyB0aOG6pXAgbmjhuqV0IGzDoCB2w7luZyBuZ29h4buLIMO0IHRo4bupIDM5OQ0Kd2hpY2gubWluKG1lZHYpDQojQmnhu4N1IMSR4buTIHBow6JuIHTDoW4gY+G7p2EgY8OhYyBiaeG6v24gIGThu68gbGnhu4d1IHbhu5tpIGPDoWMgZOG7ryBsaeG7h3UgY+G7mXQgxJHGsOG7o2MgY2hpYSB0aMOgbmggY+G7rWEgc+G7lSAyeDIgYuG6sW5nIGPDoWNoIHPhu60gZOG7pW5nIGjDoG0gbWZyb3c9YygyLDIpLCBtYXIgZMO5bmcgxJHhu4MgxJFp4buBdSBjaOG7iW5oIGvDrWNoIHRoxrDhu5tjIGPhu6dhIGPDoWMgYmnhu4N1IMSR4buTIHbhu4EgxJHhu5kgY2FvLCBy4buZbmcNCnBhcihtZnJvdz1jKDUsMyksIG1hcj1jKDIsIDIsIDEsIDApKQ0KDQojIFjDqXQgdOG7q25nIGPhu5l0IHRyb25nIGRhdGFzZXQgQm9zdG9uDQpmb3IgKGkgaW4gMTpuY29sKEJvc3Rvbikpew0KICAjIEJp4buDdSDEkeG7kyBwaMOibiB0w6FuIGPhu6dhIHThu6tuZyBj4buZdCB0cm9uZyBkYXRhc2V0IEJvc3Rvbg0KICBoaXN0KEJvc3RvblssIGldLCBtYWluPWNvbG5hbWVzKEJvc3RvbilbaV0pDQogICMgSGnhu4NuIHRo4buLIDEgxJHGsOG7nW5nIHRo4bqzbmcgbcOgdSDEkeG7jyBjw7MgxJHhu5kgcuG7mW5nID0zIGNo4buJIG3hu6VjIGTDsm5nIHRo4bupIDM5OSBj4bunYSBk4buvIGxp4buHdSBiaeG7g3UgZGnhu4VuIHbhu4sgdHLDrSB2w7luZyBuZ2/huqFpIMO0IGPDsyBnacOhIHRy4buLIHRydW5nIGLDrG5oIGPhu6dhIG5nxrDhu51pIGNo4bunIG5ow6AgdGjhuqVwIG5o4bqldA0KICBhYmxpbmUodj1Cb3N0b25bMzk5LCBpXSwgY29sPSJyZWQiLCBsdz0zKQ0KfQ0KYGBgDQoNCg0KIyBDw6J1IGgpDQoNCmBgYHtyfQ0KI0PDsyA2NCB2w7luZyBuZ2/huqFpIMO0IGPDsyBoxqFuIDcgcGjDsm5nIMSRxrDhu6NjIHRyw7ogbmfhu6UgdsOgIDQ0MiB2w7luZyBkxrDhu5tpIGhv4bq3YyBi4bqxbmcgNyBwaMOybmcNCnN1bW1hcnkocm0gPiA3KQ0KI0PDsyAxMyB2w7luZyBuZ2/huqFpIMO0IGPDsyBoxqFuIDggcGjDsm5nIMSRxrDhu6NjIHRyw7ogbmfhu6UgdsOgIDQ5MyB2w7luZyBkxrDhu5tpIGhv4bq3YyBi4bqxbmcgOCBwaMOybmcNCnN1bW1hcnkocm0gPiA4KQ0KI1ThuqFvIGNo4buJIG3hu6VjIGluZGV4IHRoZW8gxJHhurdjIMSRaeG7g20gdsO5bmcgbmdv4bqhaSDDtCBjw7MgaMahbiA4IHBow7JuZyA6DQppZHggPC0gcm0gPiA4DQojQmnhu4N1IMSR4buTIHBow6JuIHTDoW4gY+G7p2EgY8OhYyBiaeG6v24gIGThu68gbGnhu4d1IHbhu5tpIGPDoWMgZOG7ryBsaeG7h3UgY+G7mXQgxJHGsOG7o2MgY2hpYSB0aMOgbmggY+G7rWEgc+G7lSAyeDIgYuG6sW5nIGPDoWNoIHPhu60gZOG7pW5nIGjDoG0gbWZyb3c9YygyLDIpLCBtYXIgZMO5bmcgxJHhu4MgxJFp4buBdSBjaOG7iW5oIGvDrWNoIHRoxrDhu5tjIGPhu6dhIGPDoWMgYmnhu4N1IMSR4buTIHbhu4EgxJHhu5kgY2FvLCBy4buZbmcNCnBhcihtZnJvdz1jKDUsMyksIG1hcj1jKDIsIDIsIDEsIDApKQ0KIyBYw6l0IHThu6tuZyBj4buZdCB0cm9uZyBkYXRhc2V0IEJvc3Rvbg0KZm9yIChpIGluIDE6bmNvbChCb3N0b24pKXsNCiAgIyBCaeG7g3UgxJHhu5MgcGjDom4gdMOhbiBj4bunYSB04burbmcgY+G7mXQgdHJvbmcgZGF0YXNldCBCb3N0b24NCiAgaGlzdChCb3N0b25bLCBpXSwgbWFpbj1jb2xuYW1lcyhCb3N0b24pW2ldKQ0KICAjIEhp4buDbiB0aOG7iyBuaOG7r25nIMSRxrDhu51uZyB0aOG6s25nIG3DoHUgxJHhu48gY8OzIMSR4buZIHLhu5luZyA9MSBjaOG7iSBt4bulYyBuaOG7r25nIGTDsm5nIGPhu6dhIGThu68gbGnhu4d1IGJp4buDdSBkaeG7hW4gdHLDrSB24buLIHRyw60gdsO5bmcgbmdv4bqhaSDDtCBjw7MgaMahbiA4IHBow7JuZyDEkcaw4bujYyB0csO6IG5n4bulDQogIGFibGluZSh2PUJvc3RvbltpZHgsIGldLCBjb2w9InJlZCIsIGx3PTEpDQp9DQpgYGANCg0KDQo=