==============================================================================

TEMPLATE JAWABAN KUIS

Komputasi Statistika, Kelas D

Prodi S1 Statistika FSAD ITS - Semester Genap 2025/2026

Kamis, 12 Maret 2026

==============================================================================

Nama : Adelia Khairunnisa Putri

NRP : 5003251144

Kelas : D

==============================================================================

==============================================================================

Soal 1 [TOTAL 50 poin] - Winsorized Mean

==============================================================================

# Data
x <- c(12, 45, 52, 58, 61, 63, 67, 70, 72, 75, 78, 82, 88, 95, 310)

— [a] Buatlah fungsi winsorized_mean(x, alpha) —

winsorized_mean <- function(x, alpha) {
  n <- length (x)
  k <- floor(n*alpha)
  jumlah = 0
  
  for(i in 1:n){
   if(i<= k){
     jumlah <- jumlah + x[k+1]
   } else if (k<i && i<=(n-k)){
     jumlah <-  jumlah + x[i]
   } else {
     jumlah <-  jumlah +x[n-k]
   }
  
  }
  
  
  ratarata=jumlah/n
  return(ratarata)
}

— [b] Hitung ordinary mean (alpha=0) dan Winsorized mean 20% (alpha=0.2) —

# Ordinary mean
ordinary <- winsorized_mean (x, 0)
ordinary
[1] 81.86667
# Winsorized mean 20%
winsorized <- winsorized_mean (x, 0.2)
winsorized
[1] 69.73333

— VISUALISASI DATA SOAL 1 —

#Histogram
hist(x,
     main = "Histogram Data",
     xlab = "Output",
     col = "deeppink",
     breaks = 10)

# Boxplot
boxplot(x,
        main = "Boxplot Data",
        horizontal = TRUE,
        col = "hotpink")

— ANALISIS DAN INTERPRETASI DATA SOAL 1 —

Histogram menunjukkan bahwa sebagian besar data berada pada rentang nilai yang relatif berdekatan, namun terdapat satu nilai yang sangat besar yaitu 310. Nilai ini menyebabkan distribusi data menjadi menceng ke kanan (right-skewed). Boxplot juga menunjukkan nilai 310 sebagai outlier, yaitu nilai yang terpisah jauh dari sebaran utama data. Keberadaan outlier ini menunjukkan bahwa data tidak simetris.

Outlier tersebut membuat rata-rata biasa menjadi lebih tinggi dari kondisi sebenarnya. Ordinary mean data ini sekitar 81.86667 karena nilai outlier ikut dihitung. Setelah dilakukan Winsorizing sebesar 20%, pengaruh nilai ekstrem dikurangi sehingga rata-rata turun menjadi sekitar 69.73333. Nilai ini lebih mendekati sebagian besar data.

==============================================================================

Soal 2 [TOTAL 60 poin] - Weighted Multivariate Descriptive Statistics

==============================================================================

# --- Baca data CSV ---
df <- read.csv("C:/Users/HP ELITEBOOK 630 G11/Downloads/Quiz 1 Komstat/data_quiz1.csv")
X <- as.matrix(df[, c("x1", "x2", "x3")])
w <- df$w

— [a] Buatlah fungsi weighted_corr(X, w) —

weighted_corr <- function(X, w) {
  n <- length(w)
  W <- diag(w)
  
  jumlah <- 0
  for(i in 1:n){
    jumlah <- jumlah + w[i]
  }
  n_w <- jumlah
  
  vect <- rep(1, n)
  
  x_bar_w <- (t(X) %*% W %*% vect) / n_w
  
  D <- X-(vect %*% t(x_bar_w))
  
  S_w <- (t(D) %*% W %*% D)/n_w
  
  s_w <- sqrt(diag(S_w))
  
  V <- diag(s_w)
  
  R_w <- solve(V) %*% S_w %*% solve(V)
  
  return(list(
    W = W,
    x_bar_w = x_bar_w,
    S_w = S_w,
    s_w = s_w,
    R_w = R_w
  ))
}

— [b] Aplikasikan fungsi pada data —

# Panggil fungsi
weighted_corr(X,w)
$W
       [,1]  [,2]  [,3]  [,4]  [,5]  [,6]  [,7]  [,8]  [,9] [,10] [,11] [,12] [,13] [,14] [,15]
 [1,] 14.34  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
 [2,]  0.00 14.19  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
 [3,]  0.00  0.00 12.49  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
 [4,]  0.00  0.00  0.00 11.45  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
 [5,]  0.00  0.00  0.00  0.00 17.45  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
 [6,]  0.00  0.00  0.00  0.00  0.00 15.24  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
 [7,]  0.00  0.00  0.00  0.00  0.00  0.00 34.73  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
 [8,]  0.00  0.00  0.00  0.00  0.00  0.00  0.00 17.97  0.00  0.00  0.00  0.00  0.00  0.00  0.00
 [9,]  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00 33.13  0.00  0.00  0.00  0.00  0.00  0.00
[10,]  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00 35.93  0.00  0.00  0.00  0.00  0.00
[11,]  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00 15.55  0.00  0.00  0.00  0.00
[12,]  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00 16.54  0.00  0.00  0.00
[13,]  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00 17.25  0.00  0.00
[14,]  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00 14.93  0.00
[15,]  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  7.24
[16,]  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
[17,]  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
[18,]  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
[19,]  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
[20,]  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
[21,]  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
[22,]  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
[23,]  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
[24,]  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
[25,]  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
[26,]  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
      [,16] [,17] [,18] [,19] [,20] [,21] [,22] [,23] [,24] [,25] [,26] [,27] [,28] [,29] [,30]
 [1,]  0.00   0.0  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
 [2,]  0.00   0.0  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
 [3,]  0.00   0.0  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
 [4,]  0.00   0.0  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
 [5,]  0.00   0.0  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
 [6,]  0.00   0.0  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
 [7,]  0.00   0.0  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
 [8,]  0.00   0.0  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
 [9,]  0.00   0.0  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
[10,]  0.00   0.0  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
[11,]  0.00   0.0  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
[12,]  0.00   0.0  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
[13,]  0.00   0.0  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
[14,]  0.00   0.0  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
[15,]  0.00   0.0  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
[16,]  9.85   0.0  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
[17,]  0.00  11.1  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
[18,]  0.00   0.0 12.89  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
[19,]  0.00   0.0  0.00 11.14  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
[20,]  0.00   0.0  0.00  0.00  7.06  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
[21,]  0.00   0.0  0.00  0.00  0.00 13.96  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
[22,]  0.00   0.0  0.00  0.00  0.00  0.00 23.13  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
[23,]  0.00   0.0  0.00  0.00  0.00  0.00  0.00 19.74  0.00  0.00  0.00  0.00  0.00  0.00  0.00
[24,]  0.00   0.0  0.00  0.00  0.00  0.00  0.00  0.00 17.53  0.00  0.00  0.00  0.00  0.00  0.00
[25,]  0.00   0.0  0.00  0.00  0.00  0.00  0.00  0.00  0.00 12.56  0.00  0.00  0.00  0.00  0.00
[26,]  0.00   0.0  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00 13.01  0.00  0.00  0.00  0.00
      [,31] [,32] [,33] [,34] [,35] [,36] [,37] [,38]
 [1,]  0.00  0.00  0.00  0.00   0.0  0.00  0.00  0.00
 [2,]  0.00  0.00  0.00  0.00   0.0  0.00  0.00  0.00
 [3,]  0.00  0.00  0.00  0.00   0.0  0.00  0.00  0.00
 [4,]  0.00  0.00  0.00  0.00   0.0  0.00  0.00  0.00
 [5,]  0.00  0.00  0.00  0.00   0.0  0.00  0.00  0.00
 [6,]  0.00  0.00  0.00  0.00   0.0  0.00  0.00  0.00
 [7,]  0.00  0.00  0.00  0.00   0.0  0.00  0.00  0.00
 [8,]  0.00  0.00  0.00  0.00   0.0  0.00  0.00  0.00
 [9,]  0.00  0.00  0.00  0.00   0.0  0.00  0.00  0.00
[10,]  0.00  0.00  0.00  0.00   0.0  0.00  0.00  0.00
[11,]  0.00  0.00  0.00  0.00   0.0  0.00  0.00  0.00
[12,]  0.00  0.00  0.00  0.00   0.0  0.00  0.00  0.00
[13,]  0.00  0.00  0.00  0.00   0.0  0.00  0.00  0.00
[14,]  0.00  0.00  0.00  0.00   0.0  0.00  0.00  0.00
[15,]  0.00  0.00  0.00  0.00   0.0  0.00  0.00  0.00
[16,]  0.00  0.00  0.00  0.00   0.0  0.00  0.00  0.00
[17,]  0.00  0.00  0.00  0.00   0.0  0.00  0.00  0.00
[18,]  0.00  0.00  0.00  0.00   0.0  0.00  0.00  0.00
[19,]  0.00  0.00  0.00  0.00   0.0  0.00  0.00  0.00
[20,]  0.00  0.00  0.00  0.00   0.0  0.00  0.00  0.00
[21,]  0.00  0.00  0.00  0.00   0.0  0.00  0.00  0.00
[22,]  0.00  0.00  0.00  0.00   0.0  0.00  0.00  0.00
[23,]  0.00  0.00  0.00  0.00   0.0  0.00  0.00  0.00
[24,]  0.00  0.00  0.00  0.00   0.0  0.00  0.00  0.00
[25,]  0.00  0.00  0.00  0.00   0.0  0.00  0.00  0.00
[26,]  0.00  0.00  0.00  0.00   0.0  0.00  0.00  0.00
 [ reached 'max' / getOption("max.print") -- omitted 12 rows ]

$x_bar_w
       [,1]
x1 73.88530
x2 65.39059
x3 17.00938

$S_w
          x1        x2        x3
x1  38.16362 -37.75105 -27.15386
x2 -37.75105  41.10767  29.16587
x3 -27.15386  29.16587  21.14757

$s_w
      x1       x2       x3 
6.177671 6.411527 4.598649 

$R_w
           [,1]       [,2]       [,3]
[1,]  1.0000000 -0.9531095 -0.9558207
[2,] -0.9531095  1.0000000  0.9891979
[3,] -0.9558207  0.9891979  1.0000000

Tampilkan vektor mean tertimbang

tampilkan$x_bar_w
       [,1]
x1 73.88530
x2 65.39059
x3 17.00938

Tampilkan matriks varians-kovarians tertimbang

tampilkan$S_w
          x1        x2        x3
x1  38.16362 -37.75105 -27.15386
x2 -37.75105  41.10767  29.16587
x3 -27.15386  29.16587  21.14757

Tampilkan vektor standar deviasi tertimbang

tampilkan$s_w
      x1       x2       x3 
6.177671 6.411527 4.598649 

Tampilkan matriks korelasi tertimbang

tampilkan$R_w
           [,1]       [,2]       [,3]
[1,]  1.0000000 -0.9531095 -0.9558207
[2,] -0.9531095  1.0000000  0.9891979
[3,] -0.9558207  0.9891979  1.0000000

— VISUALISASI DATA SOAL 2 —

# Scatter Plot x1 vs x2
plot(df$x1, df$x2,
     main = "Scatter Plot x1 vs x2",
     xlab = "x1 (Indeks Udara)",
     ylab = "x2 (Indeks Air)",
     pch = 19,
     col = "magenta")

#Pola titik membentuk kecenderungan menurun dari kiri atas ke kanan bawah, menunjukkan hubungan negatif antara indeks udara (x1) dan indeks air (x2). Artinya, ketika nilai x1 meningkat, nilai x2 cenderung menurun.
# Scatter Plot x1 vs x3
plot(df$x1, df$x3,
     main = "Scatter Plot x1 vs x3",
     xlab = "x1 (Indeks Udara)",
     ylab = "x3 (RTH)",
     pch = 19,
     col = "plum")

#Pola titik menunjukkan kecenderungan menurun yang cukup jelas antara indeks udara (x1) dan RTH (x3). Hal ini menunjukkan hubungan negatif, di mana semakin tinggi x1, nilai x3 cenderung semakin rendah.
# Scatter Plot x2 vs x3
plot(df$x2, df$x3,
     main = "Scatter Plot x2 vs x3",
     xlab = "x2 (Indeks Air)",
     ylab = "x3 (RTH)",
     pch = 19,
     col = "orchid")

#Pola titik membentuk kecenderungan meningkat dari kiri bawah ke kanan atas, menunjukkan hubungan positif antara indeks air (x2) dan RTH (x3). Artinya, peningkatan x2 diikuti dengan peningkatan x3.

— ANALISIS DAN INTERPRETASI DATA SOAL 2 —

Data menunjukkan bahwa variabel x1 memiliki hubungan negatif terhadap x2 dan x3, sedangkan x2 dan x3 memiliki hubungan positif. Ini menunjukkan bahwa perubahan pada satu variabel lingkungan dapat berkaitan dengan perubahan pada variabel lainnya dengan arah yang berbeda.

LS0tDQp0aXRsZTogIlRVR0FTIDIgQURFTElBIEtIQUlSVU5OSVNBIFBVVFJJICg1MDAzMjUxMTQ0KSINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KDQotLS0NCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQojIFRFTVBMQVRFIEpBV0FCQU4gS1VJUw0KIyBLb21wdXRhc2kgU3RhdGlzdGlrYSwgS2VsYXMgRA0KIyBQcm9kaSBTMSBTdGF0aXN0aWthIEZTQUQgSVRTIC0gU2VtZXN0ZXIgR2VuYXAgMjAyNS8yMDI2DQojIEthbWlzLCAxMiBNYXJldCAyMDI2DQojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KIyBOYW1hICA6IEFkZWxpYSBLaGFpcnVubmlzYSBQdXRyaQ0KIyBOUlAgICA6IDUwMDMyNTExNDQNCiMgS2VsYXMgOiBEDQojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KDQojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KIyBTb2FsIDEgW1RPVEFMIDUwIHBvaW5dIC0gV2luc29yaXplZCBNZWFuDQojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KDQpgYGB7cn0NCiMgRGF0YQ0KeCA8LSBjKDEyLCA0NSwgNTIsIDU4LCA2MSwgNjMsIDY3LCA3MCwgNzIsIDc1LCA3OCwgODIsIDg4LCA5NSwgMzEwKQ0KYGBgDQoNCiMgLS0tIFthXSBCdWF0bGFoIGZ1bmdzaSB3aW5zb3JpemVkX21lYW4oeCwgYWxwaGEpIC0tLQ0KYGBge3J9DQp3aW5zb3JpemVkX21lYW4gPC0gZnVuY3Rpb24oeCwgYWxwaGEpIHsNCiAgbiA8LSBsZW5ndGggKHgpDQogIGsgPC0gZmxvb3IobiphbHBoYSkNCiAganVtbGFoID0gMA0KICANCiAgZm9yKGkgaW4gMTpuKXsNCiAgIGlmKGk8PSBrKXsNCiAgICAganVtbGFoIDwtIGp1bWxhaCArIHhbaysxXQ0KICAgfSBlbHNlIGlmIChrPGkgJiYgaTw9KG4taykpew0KICAgICBqdW1sYWggPC0gIGp1bWxhaCArIHhbaV0NCiAgIH0gZWxzZSB7DQogICAgIGp1bWxhaCA8LSAganVtbGFoICt4W24ta10NCiAgIH0NCiAgDQogIH0NCiAgDQogIA0KICByYXRhcmF0YT1qdW1sYWgvbg0KICByZXR1cm4ocmF0YXJhdGEpDQp9DQpgYGANCiMgLS0tIFtiXSBIaXR1bmcgb3JkaW5hcnkgbWVhbiAoYWxwaGE9MCkgZGFuIFdpbnNvcml6ZWQgbWVhbiAyMCUgKGFscGhhPTAuMikgLS0tDQpgYGB7cn0NCiMgT3JkaW5hcnkgbWVhbg0Kb3JkaW5hcnkgPC0gd2luc29yaXplZF9tZWFuICh4LCAwKQ0Kb3JkaW5hcnkNCmBgYA0KDQpgYGB7cn0NCiMgV2luc29yaXplZCBtZWFuIDIwJQ0Kd2luc29yaXplZCA8LSB3aW5zb3JpemVkX21lYW4gKHgsIDAuMikNCndpbnNvcml6ZWQNCmBgYA0KIyAtLS0gVklTVUFMSVNBU0kgREFUQSBTT0FMIDEgLS0tDQpgYGB7cn0NCiNIaXN0b2dyYW0NCmhpc3QoeCwNCiAgICAgbWFpbiA9ICJIaXN0b2dyYW0gRGF0YSIsDQogICAgIHhsYWIgPSAiT3V0cHV0IiwNCiAgICAgY29sID0gImRlZXBwaW5rIiwNCiAgICAgYnJlYWtzID0gMTApDQpgYGANCg0KYGBge3J9DQojIEJveHBsb3QNCmJveHBsb3QoeCwNCiAgICAgICAgbWFpbiA9ICJCb3hwbG90IERhdGEiLA0KICAgICAgICBob3Jpem9udGFsID0gVFJVRSwNCiAgICAgICAgY29sID0gImhvdHBpbmsiKQ0KYGBgDQojIC0tLSBBTkFMSVNJUyBEQU4gSU5URVJQUkVUQVNJIERBVEEgU09BTCAxIC0tLQ0KSGlzdG9ncmFtIG1lbnVuanVra2FuIGJhaHdhIHNlYmFnaWFuIGJlc2FyIGRhdGEgYmVyYWRhIHBhZGEgcmVudGFuZyBuaWxhaSB5YW5nIHJlbGF0aWYgYmVyZGVrYXRhbiwgbmFtdW4gdGVyZGFwYXQgc2F0dSBuaWxhaSB5YW5nIHNhbmdhdCBiZXNhciB5YWl0dSAzMTAuIE5pbGFpIGluaSBtZW55ZWJhYmthbiBkaXN0cmlidXNpIGRhdGEgbWVuamFkaSBtZW5jZW5nIGtlIGthbmFuIChyaWdodC1za2V3ZWQpLiBCb3hwbG90IGp1Z2EgbWVudW5qdWtrYW4gbmlsYWkgMzEwIHNlYmFnYWkgb3V0bGllciwgeWFpdHUgbmlsYWkgeWFuZyB0ZXJwaXNhaCBqYXVoIGRhcmkgc2ViYXJhbiB1dGFtYSBkYXRhLiBLZWJlcmFkYWFuIG91dGxpZXIgaW5pIG1lbnVuanVra2FuIGJhaHdhIGRhdGEgdGlkYWsgc2ltZXRyaXMuDQoNCk91dGxpZXIgdGVyc2VidXQgbWVtYnVhdCByYXRhLXJhdGEgYmlhc2EgbWVuamFkaSBsZWJpaCB0aW5nZ2kgZGFyaSBrb25kaXNpIHNlYmVuYXJueWEuIE9yZGluYXJ5IG1lYW4gZGF0YSBpbmkgc2VraXRhciA4MS44NjY2NyBrYXJlbmEgbmlsYWkgb3V0bGllciBpa3V0IGRpaGl0dW5nLiBTZXRlbGFoIGRpbGFrdWthbiBXaW5zb3JpemluZyBzZWJlc2FyIDIwJSwgcGVuZ2FydWggbmlsYWkgZWtzdHJlbSBkaWt1cmFuZ2kgc2VoaW5nZ2EgcmF0YS1yYXRhIHR1cnVuIG1lbmphZGkgc2VraXRhciA2OS43MzMzMy4gTmlsYWkgaW5pIGxlYmloIG1lbmRla2F0aSBzZWJhZ2lhbiBiZXNhciBkYXRhLg0KDQoNCg0KIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCiMgU29hbCAyIFtUT1RBTCA2MCBwb2luXSAtIFdlaWdodGVkIE11bHRpdmFyaWF0ZSBEZXNjcmlwdGl2ZSBTdGF0aXN0aWNzDQojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KYGBge3J9DQojIC0tLSBCYWNhIGRhdGEgQ1NWIC0tLQ0KZGYgPC0gcmVhZC5jc3YoIkM6L1VzZXJzL0hQIEVMSVRFQk9PSyA2MzAgRzExL0Rvd25sb2Fkcy9RdWl6IDEgS29tc3RhdC9kYXRhX3F1aXoxLmNzdiIpDQpYIDwtIGFzLm1hdHJpeChkZlssIGMoIngxIiwgIngyIiwgIngzIildKQ0KdyA8LSBkZiR3DQpgYGANCiMgLS0tIFthXSBCdWF0bGFoIGZ1bmdzaSB3ZWlnaHRlZF9jb3JyKFgsIHcpIC0tLQ0KYGBge3J9DQp3ZWlnaHRlZF9jb3JyIDwtIGZ1bmN0aW9uKFgsIHcpIHsNCiAgbiA8LSBsZW5ndGgodykNCiAgVyA8LSBkaWFnKHcpDQogIA0KICBqdW1sYWggPC0gMA0KICBmb3IoaSBpbiAxOm4pew0KICAgIGp1bWxhaCA8LSBqdW1sYWggKyB3W2ldDQogIH0NCiAgbl93IDwtIGp1bWxhaA0KICANCiAgdmVjdCA8LSByZXAoMSwgbikNCiAgDQogIHhfYmFyX3cgPC0gKHQoWCkgJSolIFcgJSolIHZlY3QpIC8gbl93DQogIA0KICBEIDwtIFgtKHZlY3QgJSolIHQoeF9iYXJfdykpDQogIA0KICBTX3cgPC0gKHQoRCkgJSolIFcgJSolIEQpL25fdw0KICANCiAgc193IDwtIHNxcnQoZGlhZyhTX3cpKQ0KICANCiAgViA8LSBkaWFnKHNfdykNCiAgDQogIFJfdyA8LSBzb2x2ZShWKSAlKiUgU193ICUqJSBzb2x2ZShWKQ0KICANCiAgcmV0dXJuKGxpc3QoDQogICAgVyA9IFcsDQogICAgeF9iYXJfdyA9IHhfYmFyX3csDQogICAgU193ID0gU193LA0KICAgIHNfdyA9IHNfdywNCiAgICBSX3cgPSBSX3cNCiAgKSkNCn0NCmBgYA0KIyAtLS0gW2JdIEFwbGlrYXNpa2FuIGZ1bmdzaSBwYWRhIGRhdGEgLS0tDQpgYGB7cn0NCiMgUGFuZ2dpbCBmdW5nc2kNCndlaWdodGVkX2NvcnIoWCx3KQ0KYGBgDQojIFRhbXBpbGthbiB2ZWt0b3IgbWVhbiB0ZXJ0aW1iYW5nDQpgYGB7cn0NCnRhbXBpbGthbiR4X2Jhcl93DQpgYGANCiMgVGFtcGlsa2FuIG1hdHJpa3MgdmFyaWFucy1rb3ZhcmlhbnMgdGVydGltYmFuZw0KYGBge3J9DQp0YW1waWxrYW4kU193DQpgYGANCiMgVGFtcGlsa2FuIHZla3RvciBzdGFuZGFyIGRldmlhc2kgdGVydGltYmFuZw0KYGBge3J9DQp0YW1waWxrYW4kc193DQpgYGANCiMgVGFtcGlsa2FuIG1hdHJpa3Mga29yZWxhc2kgdGVydGltYmFuZw0KYGBge3J9DQp0YW1waWxrYW4kUl93DQpgYGANCiMgLS0tIFZJU1VBTElTQVNJIERBVEEgU09BTCAyIC0tLQ0KYGBge3J9DQojIFNjYXR0ZXIgUGxvdCB4MSB2cyB4Mg0KcGxvdChkZiR4MSwgZGYkeDIsDQogICAgIG1haW4gPSAiU2NhdHRlciBQbG90IHgxIHZzIHgyIiwNCiAgICAgeGxhYiA9ICJ4MSAoSW5kZWtzIFVkYXJhKSIsDQogICAgIHlsYWIgPSAieDIgKEluZGVrcyBBaXIpIiwNCiAgICAgcGNoID0gMTksDQogICAgIGNvbCA9ICJtYWdlbnRhIikNCmBgYA0KYGBge3J9DQojUG9sYSB0aXRpayBtZW1iZW50dWsga2VjZW5kZXJ1bmdhbiBtZW51cnVuIGRhcmkga2lyaSBhdGFzIGtlIGthbmFuIGJhd2FoLCBtZW51bmp1a2thbiBodWJ1bmdhbiBuZWdhdGlmIGFudGFyYSBpbmRla3MgdWRhcmEgKHgxKSBkYW4gaW5kZWtzIGFpciAoeDIpLiBBcnRpbnlhLCBrZXRpa2EgbmlsYWkgeDEgbWVuaW5na2F0LCBuaWxhaSB4MiBjZW5kZXJ1bmcgbWVudXJ1bi4NCmBgYA0KDQpgYGB7cn0NCiMgU2NhdHRlciBQbG90IHgxIHZzIHgzDQpwbG90KGRmJHgxLCBkZiR4MywNCiAgICAgbWFpbiA9ICJTY2F0dGVyIFBsb3QgeDEgdnMgeDMiLA0KICAgICB4bGFiID0gIngxIChJbmRla3MgVWRhcmEpIiwNCiAgICAgeWxhYiA9ICJ4MyAoUlRIKSIsDQogICAgIHBjaCA9IDE5LA0KICAgICBjb2wgPSAicGx1bSIpDQpgYGANCmBgYHtyfQ0KI1BvbGEgdGl0aWsgbWVudW5qdWtrYW4ga2VjZW5kZXJ1bmdhbiBtZW51cnVuIHlhbmcgY3VrdXAgamVsYXMgYW50YXJhIGluZGVrcyB1ZGFyYSAoeDEpIGRhbiBSVEggKHgzKS4gSGFsIGluaSBtZW51bmp1a2thbiBodWJ1bmdhbiBuZWdhdGlmLCBkaSBtYW5hIHNlbWFraW4gdGluZ2dpIHgxLCBuaWxhaSB4MyBjZW5kZXJ1bmcgc2VtYWtpbiByZW5kYWguDQpgYGANCg0KYGBge3J9DQojIFNjYXR0ZXIgUGxvdCB4MiB2cyB4Mw0KcGxvdChkZiR4MiwgZGYkeDMsDQogICAgIG1haW4gPSAiU2NhdHRlciBQbG90IHgyIHZzIHgzIiwNCiAgICAgeGxhYiA9ICJ4MiAoSW5kZWtzIEFpcikiLA0KICAgICB5bGFiID0gIngzIChSVEgpIiwNCiAgICAgcGNoID0gMTksDQogICAgIGNvbCA9ICJvcmNoaWQiKQ0KYGBgDQoNCmBgYHtyfQ0KI1BvbGEgdGl0aWsgbWVtYmVudHVrIGtlY2VuZGVydW5nYW4gbWVuaW5na2F0IGRhcmkga2lyaSBiYXdhaCBrZSBrYW5hbiBhdGFzLCBtZW51bmp1a2thbiBodWJ1bmdhbiBwb3NpdGlmIGFudGFyYSBpbmRla3MgYWlyICh4MikgZGFuIFJUSCAoeDMpLiBBcnRpbnlhLCBwZW5pbmdrYXRhbiB4MiBkaWlrdXRpIGRlbmdhbiBwZW5pbmdrYXRhbiB4My4NCmBgYA0KIyAtLS0gQU5BTElTSVMgREFOIElOVEVSUFJFVEFTSSBEQVRBIFNPQUwgMiAtLS0NCkRhdGEgbWVudW5qdWtrYW4gYmFod2EgdmFyaWFiZWwgeDEgbWVtaWxpa2kgaHVidW5nYW4gbmVnYXRpZiB0ZXJoYWRhcCB4MiBkYW4geDMsIHNlZGFuZ2thbiB4MiBkYW4geDMgbWVtaWxpa2kgaHVidW5nYW4gcG9zaXRpZi4gSW5pIG1lbnVuanVra2FuIGJhaHdhIHBlcnViYWhhbiBwYWRhIHNhdHUgdmFyaWFiZWwgbGluZ2t1bmdhbiBkYXBhdCBiZXJrYWl0YW4gZGVuZ2FuIHBlcnViYWhhbiBwYWRhIHZhcmlhYmVsIGxhaW5ueWEgZGVuZ2FuIGFyYWggeWFuZyBiZXJiZWRhLg0KDQoNCg0KDQoNCg==