版权声明:本套课程材料开源,使用和分享必须遵守「创作共用许可协议 CC BY-NC-SA」(来源引用-非商业用途使用-以相同方式共享)。


Chap07:基础统计

本章要点目录

## 本章所需R包
library(bruceR)
## 数据准备:大五人格问卷BFI(完整数据)
data = as.data.table(psych::bfi)
data[, let(
  Gender = factor(gender, levels=1:2, labels=c("Male", "Female")),
  Age = as.numeric(age),
  Edu = as.factor(education),
  E = MEAN(data, "E", 1:5, rev=c(1,2), range=1:6),
  A = MEAN(data, "A", 1:5, rev=1, range=1:6),
  C = MEAN(data, "C", 1:5, rev=c(4,5), range=1:6),
  N = MEAN(data, "N", 1:5, rev=NULL, range=1:6),
  O = MEAN(data, "O", 1:5, rev=c(2,5), range=1:6)
)]
str(data)
Classes 'data.table' and 'data.frame':  2800 obs. of  36 variables:
 $ A1       : int  2 2 5 4 2 6 2 4 4 2 ...
 $ A2       : int  4 4 4 4 3 6 5 3 3 5 ...
 $ A3       : int  3 5 5 6 3 5 5 1 6 6 ...
 $ A4       : int  4 2 4 5 4 6 3 5 3 6 ...
 $ A5       : int  4 5 4 5 5 5 5 1 3 5 ...
 $ C1       : int  2 5 4 4 4 6 5 3 6 6 ...
 $ C2       : int  3 4 5 4 4 6 4 2 6 5 ...
 $ C3       : int  3 4 4 3 5 6 4 4 3 6 ...
 $ C4       : int  4 3 2 5 3 1 2 2 4 2 ...
 $ C5       : int  4 4 5 5 2 3 3 4 5 1 ...
 $ E1       : int  3 1 2 5 2 2 4 3 5 2 ...
 $ E2       : int  3 1 4 3 2 1 3 6 3 2 ...
 $ E3       : int  3 6 4 4 5 6 4 4 NA 4 ...
 $ E4       : int  4 4 4 4 4 5 5 2 4 5 ...
 $ E5       : int  4 3 5 4 5 6 5 1 3 5 ...
 $ N1       : int  3 3 4 2 2 3 1 6 5 5 ...
 $ N2       : int  4 3 5 5 3 5 2 3 5 5 ...
 $ N3       : int  2 3 4 2 4 2 2 2 2 5 ...
 $ N4       : int  2 5 2 4 4 2 1 6 3 2 ...
 $ N5       : int  3 5 3 1 3 3 1 4 3 4 ...
 $ O1       : int  3 4 4 3 3 4 5 3 6 5 ...
 $ O2       : int  6 2 2 3 3 3 2 2 6 1 ...
 $ O3       : int  3 4 5 4 4 5 5 4 6 5 ...
 $ O4       : int  4 3 5 3 3 6 6 5 6 5 ...
 $ O5       : int  3 3 2 5 3 1 1 3 1 2 ...
 $ gender   : int  1 2 2 2 1 2 1 1 1 2 ...
 $ education: int  NA NA NA NA NA 3 NA 2 1 NA ...
 $ age      : int  16 18 17 17 17 21 18 19 19 17 ...
 $ Gender   : Factor w/ 2 levels "Male","Female": 1 2 2 2 1 2 1 1 1 2 ...
 $ Age      : num  16 18 17 17 17 21 18 19 19 17 ...
 $ Edu      : Factor w/ 5 levels "1","2","3","4",..: NA NA NA NA NA 3 NA 2 1 NA ...
 $ E        : num  3.8 5 4.2 3.6 4.8 5.6 4.2 2.4 3.25 4.8 ...
 $ A        : num  4 4.2 3.8 4.6 4 4.6 4.6 2.6 3.6 5.4 ...
 $ C        : num  2.8 4 4 3 4.4 5.6 4.4 3.4 4 5.6 ...
 $ N        : num  2.8 3.8 3.6 2.8 3.2 3 1.4 4.2 3.6 4.2 ...
 $ O        : num  3 4 4.8 3.2 3.6 5 5.4 4.2 5 5.2 ...
 - attr(*, ".internal.selfref")=<externalptr> 

描述统计与相关分析

频次统计

【实践1】频次统计

## Freq(x, varname, labels, sort, digits, file)
## 请查阅帮助文档:?Freq 或 help(Freq)

Freq(data$Gender)  # 直接放变量
Frequency Statistics:
─────────────────
           N    %
─────────────────
Male     919 32.8
Female  1881 67.2
─────────────────
Total N = 2,800
Freq(data, "Gender")  # 分别设定数据集和变量名
Frequency Statistics:
─────────────────
           N    %
─────────────────
Male     919 32.8
Female  1881 67.2
─────────────────
Total N = 2,800
Freq(data$Gender, digits=3)  # 保留3位小数
Frequency Statistics:
───────────────────
           N      %
───────────────────
Male     919 32.821
Female  1881 67.179
───────────────────
Total N = 2,800
Freq(data$Gender, digits=3, file="Freq.doc")  # 保存结果表到Word文档
✔ Table saved to "D:/RStudio/RCourse/Freq.doc"

Freq(data$Edu)  # 默认按数值标签排序
Frequency Statistics:
───────────────
         N    %
───────────────
1      224  8.0
2      292 10.4
3     1249 44.6
4      394 14.1
5      418 14.9
(NA)   223  8.0
───────────────
Total N = 2,800
Valid N = 2,577
Freq(data$Edu, sort="-")  # 按频次结果倒序排
Frequency Statistics:
───────────────
         N    %
───────────────
3     1249 44.6
5      418 14.9
4      394 14.1
2      292 10.4
1      224  8.0
(NA)   223  8.0
───────────────
Total N = 2,800
Valid N = 2,577
Freq(data$Edu, sort="+")  # 按频次结果正序排
Frequency Statistics:
───────────────
         N    %
───────────────
(NA)   223  8.0
1      224  8.0
2      292 10.4
4      394 14.1
5      418 14.9
3     1249 44.6
───────────────
Total N = 2,800
Valid N = 2,577
Freq(data$Age)  # 查看可能的异常值
Frequency Statistics:
───────────
      N   %
───────────
3     1 0.0
9     1 0.0
11    3 0.1
12   28 1.0
13    7 0.2
14   21 0.8
15   26 0.9
16   61 2.2
17  100 3.6
18  124 4.4
19  190 6.8
20  212 7.6
21  144 5.1
22  122 4.4
23  138 4.9
24  105 3.8
25  113 4.0
26   99 3.5
27   97 3.5
28   86 3.1
29   78 2.8
30   65 2.3
31   73 2.6
32   66 2.4
33   50 1.8
34   52 1.9
35   52 1.9
36   50 1.8
37   36 1.3
38   52 1.9
39   50 1.8
40   56 2.0
41   32 1.1
42   30 1.1
43   37 1.3
44   25 0.9
45   28 1.0
46   25 0.9
47   21 0.8
48   30 1.1
49   16 0.6
50   34 1.2
51   24 0.9
52   26 0.9
53   17 0.6
54   14 0.5
55   17 0.6
56   17 0.6
57    9 0.3
58    7 0.2
59    5 0.2
60    6 0.2
61    4 0.1
62    4 0.1
63    3 0.1
64    1 0.0
65    1 0.0
66    1 0.0
67    3 0.1
68    1 0.0
70    1 0.0
72    1 0.0
74    1 0.0
86    1 0.0
───────────
Total N = 2,800

描述统计

【实践2】描述统计

## Describe(data, ..., digits, file, plot, plot.file, ...)
## 请查阅帮助文档:?Describe 或 help(Describe)

Describe(data$Age)
Descriptive Statistics:
─────────────────────────────────────────────────────────
      N  Mean    SD | Median  Min   Max Skewness Kurtosis
─────────────────────────────────────────────────────────
   2800 28.78 11.13 |  26.00 3.00 86.00     1.02     0.56
─────────────────────────────────────────────────────────
Describe(data$Age, plot=TRUE)  # 正偏态(长尾指向右边/正向极端值多)
Descriptive Statistics:
─────────────────────────────────────────────────────────
      N  Mean    SD | Median  Min   Max Skewness Kurtosis
─────────────────────────────────────────────────────────
   2800 28.78 11.13 |  26.00 3.00 86.00     1.02     0.56
─────────────────────────────────────────────────────────

Describe(data[, .(Gender, Age, Edu)], plot=TRUE,
         upper.triangle=TRUE)
NOTE: `Gender`, `Edu` transformed to numeric.

Descriptive Statistics:
────────────────────────────────────────────────────────────────────
            N (NA)  Mean    SD | Median  Min   Max Skewness Kurtosis
────────────────────────────────────────────────────────────────────
Gender*  2800       1.67  0.47 |   2.00 1.00  2.00    -0.73    -1.47
Age      2800      28.78 11.13 |  26.00 3.00 86.00     1.02     0.56
Edu*     2577  223  3.19  1.11 |   3.00 1.00  5.00    -0.05    -0.32
────────────────────────────────────────────────────────────────────

Describe(data[, Gender:O], plot=TRUE,
         upper.triangle=TRUE,
         upper.smooth="lm")
NOTE: `Gender`, `Edu` transformed to numeric.

Descriptive Statistics:
────────────────────────────────────────────────────────────────────
            N (NA)  Mean    SD | Median  Min   Max Skewness Kurtosis
────────────────────────────────────────────────────────────────────
Gender*  2800       1.67  0.47 |   2.00 1.00  2.00    -0.73    -1.47
Age      2800      28.78 11.13 |  26.00 3.00 86.00     1.02     0.56
Edu*     2577  223  3.19  1.11 |   3.00 1.00  5.00    -0.05    -0.32
E        2800       4.15  1.06 |   4.20 1.00  6.00    -0.48    -0.21
A        2800       4.65  0.90 |   4.80 1.00  6.00    -0.76     0.40
C        2800       4.27  0.95 |   4.40 1.00  6.00    -0.40    -0.19
N        2800       3.16  1.20 |   3.00 1.00  6.00     0.21    -0.67
O        2800       4.59  0.81 |   4.60 1.20  6.00    -0.34    -0.29
────────────────────────────────────────────────────────────────────

Describe(data[, Gender:O], file="Desc.doc")  # 保存结果表到Word文档
NOTE: `Gender`, `Edu` transformed to numeric.

✔ Table saved to "D:/RStudio/RCourse/Desc.doc"

【知识点】正态分布与正负偏态

相关分析

【实践3】相关分析

## Corr(data, method, ..., digits, file, plot, plot.file, ...)
## 请查阅帮助文档:?Corr 或 help(Corr)

Corr(data[, Gender:O])
NOTE: `Gender`, `Edu` transformed to numeric.

Pearson's r and 95% confidence intervals:
───────────────────────────────────────────────
                r       [95% CI]     p        N
───────────────────────────────────────────────
Gender-Age   0.05 [ 0.01,  0.08]  .012 *   2800
Gender-Edu   0.01 [-0.03,  0.05]  .695     2577
Gender-E     0.11 [ 0.07,  0.14] <.001 *** 2800
Gender-A     0.21 [ 0.17,  0.24] <.001 *** 2800
Gender-C     0.09 [ 0.06,  0.13] <.001 *** 2800
Gender-N     0.12 [ 0.09,  0.16] <.001 *** 2800
Gender-O    -0.06 [-0.10, -0.02]  .002 **  2800
Age-Edu      0.24 [ 0.21,  0.28] <.001 *** 2577
Age-E        0.06 [ 0.03,  0.10] <.001 *** 2800
Age-A        0.19 [ 0.15,  0.22] <.001 *** 2800
Age-C        0.12 [ 0.08,  0.15] <.001 *** 2800
Age-N       -0.12 [-0.15, -0.08] <.001 *** 2800
Age-O        0.08 [ 0.04,  0.12] <.001 *** 2800
Edu-E        0.01 [-0.03,  0.05]  .697     2577
Edu-A        0.05 [ 0.01,  0.08]  .021 *   2577
Edu-C        0.02 [-0.02,  0.06]  .305     2577
Edu-N       -0.05 [-0.09, -0.01]  .012 *   2577
Edu-O        0.11 [ 0.07,  0.14] <.001 *** 2577
E-A          0.46 [ 0.43,  0.49] <.001 *** 2800
E-C          0.26 [ 0.23,  0.30] <.001 *** 2800
E-N         -0.22 [-0.26, -0.18] <.001 *** 2800
E-O          0.21 [ 0.18,  0.25] <.001 *** 2800
A-C          0.26 [ 0.22,  0.29] <.001 *** 2800
A-N         -0.19 [-0.22, -0.15] <.001 *** 2800
A-O          0.15 [ 0.11,  0.18] <.001 *** 2800
C-N         -0.23 [-0.27, -0.20] <.001 *** 2800
C-O          0.20 [ 0.16,  0.23] <.001 *** 2800
N-O         -0.09 [-0.12, -0.05] <.001 *** 2800
───────────────────────────────────────────────

Corr(data[, Gender:O], plot=FALSE, file="Corr.doc")
NOTE: `Gender`, `Edu` transformed to numeric.

Descriptive Statistics and Correlation Matrix:
NOTE: `Gender`, `Edu` transformed to numeric.

✔ Table saved to "D:/RStudio/RCourse/Corr.doc"

注意:较早版本SPSS的相关系数表,只输出到** p < .01显著性水平,不够精确。

最新学术规范:大于.001的需要报告精确p(如p = .035、p = .006、p < .001),不能只报告范围(如p < .05)!p值不能等于0(不能写p = .000,要写p < .001)!

【知识点】相关系数(r)的效应量大小

  • 相关系数 |r|(请参阅effectsize::interpret_r()函数帮助文档)
    • 经典参考(Cohen, 1988)
      • 极小效应:0~0.1
      • 小效应:0.1~0.3
      • 中效应:0.3~0.5
      • 大效应:0.5~1
    • 现代参考(Funder & Ozer, 2019)
      • 微小效应:0~0.05
      • 极小效应:0.05~0.1
      • 小效应:0.1~0.2
      • 中效应:0.2~0.3
      • 大效应:0.3~0.4
      • 极大效应:0.4~1
effectsize::interpret_r(0.01)
[1] "tiny"
(Rules: funder2019)
effectsize::interpret_r(0.05)
[1] "very small"
(Rules: funder2019)
effectsize::interpret_r(0.1)
[1] "small"
(Rules: funder2019)
effectsize::interpret_r(0.2)
[1] "medium"
(Rules: funder2019)
effectsize::interpret_r(0.3)
[1] "large"
(Rules: funder2019)
effectsize::interpret_r(0.4)
[1] "very large"
(Rules: funder2019)

t检验

单样本t检验

【实践4】单样本t检验

TTEST(data, y="Age")

One-Sample t-test

Hypothesis: two-sided (μ ≠ 0)

Descriptives:
────────────────────────────
 Variable    N   Mean (S.D.)
────────────────────────────
      Age 2800 28.78 (11.13)
────────────────────────────

Results of t-test:
─────────────────────────────────────────────────────────────────────────────
                     t   df     p      Difference [95% CI] Cohen’s d [95% CI]
─────────────────────────────────────────────────────────────────────────────
Age: (Age - 0)  136.87 2799 <.001 *** 28.78 [28.37, 29.19]  2.59 [2.55, 2.62]
─────────────────────────────────────────────────────────────────────────────
TTEST(data, y="Age", test.value=20)

One-Sample t-test

Hypothesis: two-sided (μ ≠ 20)

Descriptives:
────────────────────────────
 Variable    N   Mean (S.D.)
────────────────────────────
      Age 2800 28.78 (11.13)
────────────────────────────

Results of t-test:
────────────────────────────────────────────────────────────────────────────
                     t   df     p     Difference [95% CI] Cohen’s d [95% CI]
────────────────────────────────────────────────────────────────────────────
Age: (Age - 20)  41.76 2799 <.001 ***   8.78 [8.37, 9.19]  0.79 [0.75, 0.83]
────────────────────────────────────────────────────────────────────────────
TTEST(data, y="Age", test.value=28)  # 统计显著不等于大效应!

One-Sample t-test

Hypothesis: two-sided (μ ≠ 28)

Descriptives:
────────────────────────────
 Variable    N   Mean (S.D.)
────────────────────────────
      Age 2800 28.78 (11.13)
────────────────────────────

Results of t-test:
───────────────────────────────────────────────────────────────────────────
                    t   df     p     Difference [95% CI] Cohen’s d [95% CI]
───────────────────────────────────────────────────────────────────────────
Age: (Age - 28)  3.72 2799 <.001 ***   0.78 [0.37, 1.19]  0.07 [0.03, 0.11]
───────────────────────────────────────────────────────────────────────────

【知识点】标准化均值差异(d)的效应量大小

  • Cohen’s d(请参阅effectsize::interpret_cohens_d()函数帮助文档)
    • 经典参考(Cohen, 1988)
      • 极小效应:0~0.2
      • 小效应:0.2~0.5
      • 中效应:0.5~0.8
      • 大效应:0.8及以上(至无穷大)

独立样本t检验

【实践5】独立样本t检验

TTEST(data, y="E", x="gender")

Independent-Samples t-test

Hypothesis: two-sided (μ2 - μ1 ≠ 0)

Descriptives:
───────────────────────────────────────
 Variable Factor Level    N Mean (S.D.)
───────────────────────────────────────
        E gender     1  919 3.99 (1.12)
        E gender     2 1881 4.22 (1.02)
───────────────────────────────────────

Levene’s test for homogeneity of variance:
────────────────────────────────────────────────
                   Levene’s F df1  df2     p    
────────────────────────────────────────────────
E: gender (2 - 1)        9.87   1 2798  .002 ** 
────────────────────────────────────────────────
Note: H0 = equal variance (homoscedasticity).
If significant (violation of the assumption),
then you should better set `var.equal=FALSE`.

Results of t-test:
─────────────────────────────────────────────────────────────────────────────
                      t   df     p     Difference [95% CI] Cohen’s d [95% CI]
─────────────────────────────────────────────────────────────────────────────
E: gender (2 - 1)  5.60 2798 <.001 ***   0.24 [0.15, 0.32]  0.23 [0.15, 0.30]
─────────────────────────────────────────────────────────────────────────────
TTEST(data, y="E", x="gender", var.equal=FALSE)

Independent-Samples t-test

Hypothesis: two-sided (μ2 - μ1 ≠ 0)

Descriptives:
───────────────────────────────────────
 Variable Factor Level    N Mean (S.D.)
───────────────────────────────────────
        E gender     1  919 3.99 (1.12)
        E gender     2 1881 4.22 (1.02)
───────────────────────────────────────

Levene’s test for homogeneity of variance:
────────────────────────────────────────────────
                   Levene’s F df1  df2     p    
────────────────────────────────────────────────
E: gender (2 - 1)        9.87   1 2798  .002 ** 
────────────────────────────────────────────────
Note: H0 = equal variance (homoscedasticity).
If significant (violation of the assumption),
then you should better set `var.equal=FALSE`.

Results of t-test (adjusted df):
────────────────────────────────────────────────────────────────────────────────
                      t      df     p     Difference [95% CI] Cohen’s d [95% CI]
────────────────────────────────────────────────────────────────────────────────
E: gender (2 - 1)  5.43 1682.75 <.001 ***   0.24 [0.15, 0.32]  0.22 [0.14, 0.30]
────────────────────────────────────────────────────────────────────────────────
TTEST(data, y=c("E", "A", "C", "N", "O"), x="gender")

Independent-Samples t-test

Hypothesis: two-sided (μ2 - μ1 ≠ 0)

Descriptives:
───────────────────────────────────────
 Variable Factor Level    N Mean (S.D.)
───────────────────────────────────────
        E gender     1  919 3.99 (1.12)
        E gender     2 1881 4.22 (1.02)
        A gender     1  919 4.39 (0.93)
        A gender     2 1881 4.78 (0.85)
        C gender     1  919 4.14 (0.97)
        C gender     2 1881 4.33 (0.94)
        N gender     1  919 2.95 (1.14)
        N gender     2 1881 3.27 (1.21)
        O gender     1  919 4.65 (0.81)
        O gender     2 1881 4.55 (0.80)
───────────────────────────────────────

Levene’s test for homogeneity of variance:
────────────────────────────────────────────────
                   Levene’s F df1  df2     p    
────────────────────────────────────────────────
E: gender (2 - 1)        9.87   1 2798  .002 ** 
A: gender (2 - 1)        8.94   1 2798  .003 ** 
C: gender (2 - 1)        2.30   1 2798  .129    
N: gender (2 - 1)        5.15   1 2798  .023 *  
O: gender (2 - 1)        1.11   1 2798  .293    
────────────────────────────────────────────────
Note: H0 = equal variance (homoscedasticity).
If significant (violation of the assumption),
then you should better set `var.equal=FALSE`.

Results of t-test:
─────────────────────────────────────────────────────────────────────────────────
                       t   df     p      Difference [95% CI]   Cohen’s d [95% CI]
─────────────────────────────────────────────────────────────────────────────────
E: gender (2 - 1)   5.60 2798 <.001 ***  0.24 [ 0.15,  0.32]  0.23 [ 0.15,  0.30]
A: gender (2 - 1)  11.22 2798 <.001 ***  0.40 [ 0.33,  0.47]  0.45 [ 0.37,  0.53]
C: gender (2 - 1)   4.98 2798 <.001 ***  0.19 [ 0.11,  0.26]  0.20 [ 0.12,  0.28]
N: gender (2 - 1)   6.60 2798 <.001 ***  0.32 [ 0.22,  0.41]  0.27 [ 0.19,  0.34]
O: gender (2 - 1)  -3.11 2798  .002 **  -0.10 [-0.16, -0.04] -0.13 [-0.20, -0.05]
─────────────────────────────────────────────────────────────────────────────────
TTEST(data,
      y = c("E", "A", "C", "N", "O"),
      x = "Gender",
      bf10 = TRUE,  # 计算贝叶斯因子(BF10)
      file = "T-test1.doc")

配对样本t检验

【实践6】配对样本t检验

bruceR::within.1  # 宽数据
  ID A1 A2 A3 A4
1 S1  3  4  8  9
2 S2  6  6  9  8
3 S3  4  4  8  8
4 S4  3  2  7  7
5 S5  5  4  5 12
6 S6  7  5  6 13
7 S7  5  3  7 12
8 S8  2  3  6 11
TTEST(within.1, y=c("A1", "A2"), paired=TRUE)

Paired-Samples t-test

Hypothesis: two-sided (μ2 - μ1 ≠ 0)

Descriptives:
───────────────────────
 Variable N Mean (S.D.)
───────────────────────
       A1 8 4.38 (1.69)
       A2 8 3.88 (1.25)
───────────────────────

Results of t-test:
─────────────────────────────────────────────────────────────────────────────
                       t df     p     Difference [95% CI]  Cohen’s d [95% CI]
─────────────────────────────────────────────────────────────────────────────
Paired: (A2 - A1)  -1.18  7  .275     -0.50 [-1.50, 0.50] -0.42 [-1.25, 0.42]
─────────────────────────────────────────────────────────────────────────────
TTEST(within.1, y=c("A1", "A2", "A3", "A4"), paired=TRUE)

Paired-Samples t-test

Hypothesis: two-sided (μ2 - μ1 ≠ 0)

Descriptives:
────────────────────────
 Variable N  Mean (S.D.)
────────────────────────
       A1 8  4.38 (1.69)
       A2 8  3.88 (1.25)
       A3 8  7.00 (1.31)
       A4 8 10.00 (2.27)
────────────────────────

Results of t-test:
─────────────────────────────────────────────────────────────────────────────
                       t df     p     Difference [95% CI]  Cohen’s d [95% CI]
─────────────────────────────────────────────────────────────────────────────
Paired: (A2 - A1)  -1.18  7  .275     -0.50 [-1.50, 0.50] -0.42 [-1.25, 0.42]
Paired: (A4 - A3)   2.54  7  .039 *    3.00 [ 0.21, 5.79]  0.90 [ 0.06, 1.73]
─────────────────────────────────────────────────────────────────────────────

* 拓展:手动计算p

p.z(1.96)
[1] 0.05
p(z=1.96)
z = 1.96, p = 0.050 *  
p(z=2.58)
z = 2.58, p = 0.010 ** 
p(z=3.30)
z = 3.30, p = 1e-03 ***
p.t(2, 100)
[1] 0.04821
p(t=2, df=100)
t(100) = 2.00, p = 0.048 *  
p(t=2, df=1000)
t(1000) = 2.00, p = 0.046 *  
p(t=2, df=10000)
t(10000) = 2.00, p = 0.046 *  
p.f(4, 1, 100)
[1] 0.04821
p(f=4, df1=1, df2=100)
F(1, 100) = 4.00, p = 0.048 *  
p.r(0.2, 100)
[1] 0.04604
p(r=0.2, n=100)
r(98) = 0.20, p = 0.046 *  
p(r=0.3, n=100)
r(98) = 0.30, p = 0.002 ** 
p(r=0.4, n=100)
r(98) = 0.40, p = 4e-05 ***
p(r=0.2, n=100)
r(98) = 0.20, p = 0.046 *  
p(r=0.2, n=1000)
r(998) = 0.20, p = 2e-10 ***
p(r=0.2, n=10000)
r(9998) = 0.20, p = 9e-91 ***
p.chi2(3.84, 1)
[1] 0.05004
p(chi2=3.84, df=1)
χ²(1) = 3.84, p = 0.050 .  

信度分析

内部一致性信度

【实践7】大五人格量表信度分析

  • Cronbach’s α
  • 设定变量范围的三种方式
    • var + items: common and unique parts of variable names
    • vars: a character vector of variable names
    • varrange: starting and stopping positions of variables
## Alpha(data, var, items, ..., rev, digits)
## 请查阅帮助文档:?Alpha 或 help(Alpha)

Alpha(data, "E", 1:5)  # 外倾性:E1、E2应该反向计分

Reliability Analysis

Summary:
Total Items: 5
Scale Range: 1 ~ 6
Total Cases: 2800
Valid Cases: 2713 (96.9%)

Scale Statistics:
Mean = 3.791
S.D. = 0.542
Cronbach’s α = -0.624
McDonald’s ω = 0.150

Warning: Scale reliability is low. You may check item codings.
Items E1, E2 correlate negatively with the scale and may be reversed.
You can specify this argument: rev=c("E1", "E2")

Item Statistics (Cronbach’s α If Item Deleted):
─────────────────────────────────────────────
     Mean    S.D. Item-Rest Cor. Cronbach’s α
─────────────────────────────────────────────
E1  2.972 (1.632)         -0.263       -0.270
E2  3.144 (1.607)         -0.355       -0.074
E3  4.000 (1.352)         -0.002       -0.881
E4  4.421 (1.461)         -0.202       -0.423
E5  4.418 (1.337)         -0.047       -0.765
─────────────────────────────────────────────
Item-Rest Cor. = Corrected Item-Total Correlation
Alpha(data, "E", 1:5, rev=1:2)  # 反向计分

Reliability Analysis

Summary:
Total Items: 5
Scale Range: 1 ~ 6
Total Cases: 2800
Valid Cases: 2713 (96.9%)

Scale Statistics:
Mean = 4.145
S.D. = 1.060
Cronbach’s α = 0.761
McDonald’s ω = 0.763

Item Statistics (Cronbach’s α If Item Deleted):
───────────────────────────────────────────────────
           Mean    S.D. Item-Rest Cor. Cronbach’s α
───────────────────────────────────────────────────
E1 (rev)  4.028 (1.632)          0.513        0.725
E2 (rev)  3.856 (1.607)          0.606        0.688
E3        4.000 (1.352)          0.501        0.728
E4        4.421 (1.461)          0.578        0.701
E5        4.418 (1.337)          0.455        0.742
───────────────────────────────────────────────────
Item-Rest Cor. = Corrected Item-Total Correlation
Alpha(data, "A", 1:5, rev=1)  # 宜人性

Reliability Analysis

Summary:
Total Items: 5
Scale Range: 1 ~ 6
Total Cases: 2800
Valid Cases: 2709 (96.8%)

Scale Statistics:
Mean = 4.643
S.D. = 0.901
Cronbach’s α = 0.704
McDonald’s ω = 0.724

Item Statistics (Cronbach’s α If Item Deleted):
───────────────────────────────────────────────────
           Mean    S.D. Item-Rest Cor. Cronbach’s α
───────────────────────────────────────────────────
A1 (rev)  4.588 (1.405)          0.311        0.718
A2        4.797 (1.176)          0.563        0.618
A3        4.599 (1.305)          0.589        0.601
A4        4.682 (1.486)          0.395        0.687
A5        4.551 (1.262)          0.487        0.645
───────────────────────────────────────────────────
Item-Rest Cor. = Corrected Item-Total Correlation
Alpha(data, "C", 1:5, rev=c(4, 5))  # 尽责性

Reliability Analysis

Summary:
Total Items: 5
Scale Range: 1 ~ 6
Total Cases: 2800
Valid Cases: 2707 (96.7%)

Scale Statistics:
Mean = 4.262
S.D. = 0.954
Cronbach’s α = 0.729
McDonald’s ω = 0.734

Item Statistics (Cronbach’s α If Item Deleted):
───────────────────────────────────────────────────
           Mean    S.D. Item-Rest Cor. Cronbach’s α
───────────────────────────────────────────────────
C1        4.509 (1.238)          0.455        0.696
C2        4.364 (1.321)          0.507        0.677
C3        4.299 (1.289)          0.468        0.691
C4 (rev)  4.446 (1.374)          0.557        0.656
C5 (rev)  3.692 (1.628)          0.478        0.694
───────────────────────────────────────────────────
Item-Rest Cor. = Corrected Item-Total Correlation
Alpha(data, "N", 1:5)  # 神经质/情绪不稳定性

Reliability Analysis

Summary:
Total Items: 5
Scale Range: 1 ~ 6
Total Cases: 2800
Valid Cases: 2694 (96.2%)

Scale Statistics:
Mean = 3.164
S.D. = 1.195
Cronbach’s α = 0.813
McDonald’s ω = 0.818

Item Statistics (Cronbach’s α If Item Deleted):
─────────────────────────────────────────────
     Mean    S.D. Item-Rest Cor. Cronbach’s α
─────────────────────────────────────────────
N1  2.931 (1.573)          0.666        0.757
N2  3.509 (1.526)          0.651        0.763
N3  3.217 (1.600)          0.673        0.755
N4  3.190 (1.573)          0.542        0.795
N5  2.973 (1.622)          0.487        0.812
─────────────────────────────────────────────
Item-Rest Cor. = Corrected Item-Total Correlation
Alpha(data, "O", 1:5, rev=c(2, 5))  # 开放性

Reliability Analysis

Summary:
Total Items: 5
Scale Range: 1 ~ 6
Total Cases: 2800
Valid Cases: 2726 (97.4%)

Scale Statistics:
Mean = 4.594
S.D. = 0.807
Cronbach’s α = 0.603
McDonald’s ω = 0.618

Item Statistics (Cronbach’s α If Item Deleted):
───────────────────────────────────────────────────
           Mean    S.D. Item-Rest Cor. Cronbach’s α
───────────────────────────────────────────────────
O1        4.819 (1.128)          0.389        0.536
O2 (rev)  4.300 (1.562)          0.340        0.566
O3        4.439 (1.221)          0.452        0.500
O4        4.898 (1.217)          0.220        0.614
O5 (rev)  4.516 (1.325)          0.416        0.516
───────────────────────────────────────────────────
Item-Rest Cor. = Corrected Item-Total Correlation

* 拓展:探索性因素分析(EFA)

【实践8】大五人格量表探索性因素分析(EFA)

EFA(psych::bfi, "E", 1:5)

Principal Component Analysis

Summary:
Total Items: 5
Scale Range: 1 ~ 6
Total Cases: 2800
Valid Cases: 2713 (96.9%)

Extraction Method:
- Principal Component Analysis
Rotation Method:
- (Only one component was extracted. The solution was not rotated.)

KMO and Bartlett's Test:
- Kaiser-Meyer-Olkin (KMO) Measure of Sampling Adequacy: MSA = 0.799
- Bartlett's Test of Sphericity: Approx. χ²(10) = 3011.40, p < 1e-99 ***

Total Variance Explained:
──────────────────────────────────────────────────────────────────────────────────
             Eigenvalue Variance % Cumulative % SS Loading Variance % Cumulative %
──────────────────────────────────────────────────────────────────────────────────
Component 1       2.565     51.298       51.298      2.565     51.298       51.298
Component 2       0.768     15.368       66.666                                   
Component 3       0.643     12.851       79.517                                   
Component 4       0.561     11.211       90.728                                   
Component 5       0.464      9.272      100.000                                   
──────────────────────────────────────────────────────────────────────────────────

Component Loadings (Sorted by Size):
──────────────────────
       PC1 Communality
──────────────────────
E2  -0.780       0.608
E4   0.758       0.575
E1  -0.700       0.490
E3   0.691       0.477
E5   0.644       0.414
──────────────────────
Communality = Sum of Squared (SS) Factor Loadings
(Uniqueness = 1 - Communality)

EFA(data = psych::bfi,
    varrange = "A1:O5",
    nfactors = "parallel",
    hide.loadings = 0.45)

Principal Component Analysis

Summary:
Total Items: 25
Scale Range: 1 ~ 6
Total Cases: 2800
Valid Cases: 2436 (87.0%)

Extraction Method:
- Principal Component Analysis
Rotation Method:
- Varimax (with Kaiser Normalization)

KMO and Bartlett's Test:
- Kaiser-Meyer-Olkin (KMO) Measure of Sampling Adequacy: MSA = 0.849
- Bartlett's Test of Sphericity: Approx. χ²(300) = 18146.07, p < 1e-99 ***

Total Variance Explained:
───────────────────────────────────────────────────────────────────────────────────
              Eigenvalue Variance % Cumulative % SS Loading Variance % Cumulative %
───────────────────────────────────────────────────────────────────────────────────
Component 1        5.134     20.537       20.537      3.185     12.738       12.738
Component 2        2.752     11.008       31.545      3.100     12.400       25.138
Component 3        2.143      8.571       40.116      2.619     10.476       35.615
Component 4        1.852      7.409       47.525      2.378      9.512       45.127
Component 5        1.548      6.193       53.718      2.148      8.591       53.718
Component 6        1.074      4.294       58.012                                   
Component 7        0.840      3.358       61.370                                   
Component 8        0.799      3.197       64.567                                   
Component 9        0.719      2.876       67.443                                   
Component 10       0.688      2.752       70.195                                   
Component 11       0.676      2.705       72.901                                   
Component 12       0.652      2.607       75.508                                   
Component 13       0.623      2.493       78.001                                   
Component 14       0.597      2.386       80.387                                   
Component 15       0.563      2.252       82.640                                   
Component 16       0.543      2.173       84.813                                   
Component 17       0.515      2.058       86.871                                   
Component 18       0.495      1.978       88.849                                   
Component 19       0.483      1.931       90.779                                   
Component 20       0.449      1.796       92.575                                   
Component 21       0.423      1.693       94.269                                   
Component 22       0.401      1.603       95.871                                   
Component 23       0.388      1.551       97.422                                   
Component 24       0.382      1.527       98.950                                   
Component 25       0.263      1.050      100.000                                   
───────────────────────────────────────────────────────────────────────────────────

Component Loadings (Rotated) (Sorted by Size):
─────────────────────────────────────────────────
      RC2    RC1    RC3    RC5    RC4 Communality
─────────────────────────────────────────────────
N1  0.806                                   0.710
N2  0.794                                   0.670
N3  0.794                                   0.636
N4  0.649                                   0.587
N5  0.631                                   0.482
E2        -0.722                            0.608
E4         0.700                            0.610
E1        -0.679                            0.478
E3         0.625                            0.532
E5         0.586                            0.506
C2                0.738                     0.579
C4               -0.692                     0.566
C3                0.679                     0.478
C1                0.654                     0.483
C5               -0.627                     0.532
A2                       0.716              0.582
A3                       0.689              0.606
A1                      -0.638              0.467
A5                       0.572              0.542
A4                       0.530              0.424
O5                             -0.677       0.473
O3                              0.640       0.561
O2                             -0.606       0.436
O1                              0.598       0.444
O4                              0.494       0.440
─────────────────────────────────────────────────
Communality = Sum of Squared (SS) Factor Loadings
(Uniqueness = 1 - Communality)

* 拓展:验证性因素分析(CFA)

【实践9】大五人格量表验证性因素分析(CFA)

CFA(data = na.omit(psych::bfi),
    "E =~ E[1:5]
     A =~ A[1:5]
     C =~ C[1:5]
     N =~ N[1:5]
     O =~ O[1:5]")

Model Syntax (lavaan):
E =~ E1 + E2 + E3 + E4 + E5
A =~ A1 + A2 + A3 + A4 + A5
C =~ C1 + C2 + C3 + C4 + C5
N =~ N1 + N2 + N3 + N4 + N5
O =~ O1 + O2 + O3 + O4 + O5

Fit Measures (lavaan):
χ²(265, N = 2236) = 3843.296, p < 1e-99 ***
χ²/df = 14.503
AIC = 182698.556 (Akaike Information Criterion)
BIC = 183041.303 (Bayesian Information Criterion)
CFI = 0.780 (Comparative Fit Index)
TLI = 0.751 (Tucker-Lewis Index; Non-Normed Fit Index, NNFI)
NFI = 0.768 (Normed Fit Index)
IFI = 0.780 (Incremental Fit Index)
GFI = 0.862 (Goodness-of-Fit Index)
AGFI = 0.830 (Adjusted Goodness-of-Fit Index)
RMSEA = 0.078, 90% CI [0.076, 0.080] (Root Mean Square Error of Approximation)
SRMR = 0.076 (Standardized Root Mean Square Residual)

Model Estimates (lavaan):
──────────────────────────────────────────────────────────────────────────
                   Estimate    S.E.       z     p       LLCI   ULCI   Beta
──────────────────────────────────────────────────────────────────────────
Latent Variables:                                                         
  E =~ E1             0.907 (0.035)  26.094 <.001 ***  0.838  0.975  0.560
  E =~ E2             1.114 (0.033)  33.914 <.001 ***  1.049  1.178  0.694
  E =~ E3            -0.866 (0.028) -30.936 <.001 *** -0.920 -0.811 -0.645
  E =~ E4            -1.027 (0.030) -34.530 <.001 *** -1.085 -0.968 -0.704
  E =~ E5            -0.746 (0.029) -26.147 <.001 *** -0.802 -0.691 -0.561
  A =~ A1             0.460 (0.032)  14.328 <.001 ***  0.397  0.523  0.330
  A =~ A2            -0.734 (0.025) -29.758 <.001 *** -0.782 -0.685 -0.634
  A =~ A3            -0.955 (0.027) -35.954 <.001 *** -1.008 -0.903 -0.741
  A =~ A4            -0.728 (0.032) -22.664 <.001 *** -0.791 -0.665 -0.503
  A =~ A5            -0.852 (0.026) -32.282 <.001 *** -0.903 -0.800 -0.678
  C =~ C1             0.652 (0.028)  23.697 <.001 ***  0.598  0.706  0.536
  C =~ C2             0.758 (0.029)  25.826 <.001 ***  0.700  0.815  0.578
  C =~ C3             0.707 (0.029)  24.376 <.001 ***  0.650  0.764  0.550
  C =~ C4            -0.949 (0.030) -32.012 <.001 *** -1.008 -0.891 -0.697
  C =~ C5            -1.014 (0.036) -28.108 <.001 *** -1.084 -0.943 -0.622
  N =~ N1             1.284 (0.029)  43.743 <.001 ***  1.227  1.342  0.821
  N =~ N2             1.222 (0.029)  41.954 <.001 ***  1.165  1.279  0.796
  N =~ N3             1.152 (0.031)  36.823 <.001 ***  1.091  1.214  0.722
  N =~ N4             0.891 (0.033)  27.399 <.001 ***  0.827  0.955  0.571
  N =~ N5             0.825 (0.035)  23.897 <.001 ***  0.757  0.892  0.509
  O =~ O1             0.629 (0.027)  23.245 <.001 ***  0.576  0.682  0.562
  O =~ O2            -0.666 (0.038) -17.641 <.001 *** -0.740 -0.592 -0.431
  O =~ O3             0.861 (0.029)  29.360 <.001 ***  0.804  0.919  0.722
  O =~ O4             0.260 (0.029)   8.850 <.001 ***  0.203  0.318  0.221
  O =~ O5            -0.633 (0.032) -19.604 <.001 *** -0.696 -0.570 -0.476
──────────────────────────────────────────────────────────────────────────
Note. Raw (Standard) Confidence Interval (CI) and SE.

Estimator: ML

【作业7】基础统计练习

作业要求:

  • 基于【作业4】【作业6】的期末自选数据和代码积累,运用本章所学的基础统计方法和代码,练习描述统计、相关分析、t检验(根据自己的数据情况选择最合适的一种t检验方法)
  • 使用R Markdown完成,对关键代码及结果要有注释说明

平台提交:

  • 运行得到的HTML网页,及其关键部分截图
LS0tDQp0aXRsZTogIuOAilLor63oqIDjgIvnrKw356ug77ya5Z+656GA57uf6K6hIg0Kc3VidGl0bGU6IDxhIGhyZWY9Imh0dHBzOi8vcHN5Y2hicnVjZS5naXRodWIuaW8vUkNvdXJzZS8iPui/lOWbnuivvueoi+S4u+mhtTwvYT4NCmF1dGhvcjogIuaOiOivvuaVmeW4iO+8muWMheWvkuWQtOmcnCINCiMgZGF0ZTogImByIFN5cy5EYXRlKClgIg0Kb3V0cHV0Og0KICBodG1sX2RvY3VtZW50Og0KICAgIHRvYzogdHJ1ZQ0KICAgIHRvY19kZXB0aDogMw0KICAgIHRvY19mbG9hdDoNCiAgICAgIGNvbGxhcHNlZDogZmFsc2UNCiAgICAgIHNtb290aF9zY3JvbGw6IGZhbHNlDQogICAgY29kZV9kb3dubG9hZDogdHJ1ZQ0KICAgIGFuY2hvcl9zZWN0aW9uczogdHJ1ZQ0KICAgIGhpZ2hsaWdodDogcHlnbWVudHMNCiAgICBjc3M6IFJtZENTUy5jc3MNCi0tLQ0KDQpgYGB7PWh0bWx9DQo8cCBzdHlsZT0iZm9udC1zaXplOiAxMnB4Ij7niYjmnYPlo7DmmI7vvJrmnKzlpZfor77nqIvmnZDmlpnlvIDmupDvvIzkvb/nlKjlkozliIbkuqvlv4XpobvpgbXlrojjgIzliJvkvZzlhbHnlKjorrjlj6/ljY/orq4gQ0MgQlktTkMtU0HjgI3vvIjmnaXmupDlvJXnlKgt6Z2e5ZWG5Lia55So6YCU5L2/55SoLeS7peebuOWQjOaWueW8j+WFseS6q++8ieOAgjxpbWcgc3JjPSJpbWcvQ0MtQlktTkMtU0EuanBnIiB3aWR0aD0iMTIwcHgiIGhlaWdodD0iNDJweCIgc3R5bGU9ImZsb2F0OiByaWdodCIgLz48L3A+DQpgYGANCg0KYGBge3IgQ29uZmlnLCBpbmNsdWRlPUZBTFNFfQ0Kb3B0aW9ucygNCiAga25pdHIua2FibGUuTkEgPSAiIiwNCiAgZGlnaXRzID0gNA0KKQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KA0KICBjb21tZW50ID0gIiIsDQogIGZpZy53aWR0aCA9IDgsDQogIGZpZy5oZWlnaHQgPSA2LA0KICBkcGkgPSAzMDANCikNCmBgYA0KDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KIyBDaGFwMDfvvJrln7rnoYDnu5/orqENCg0KIyMjIyDlvoDmnJ/opoHngrnlm57pob4NCg0KLSAgIFtDaGFwMDUgXCMg5Y+Y6YeP6K6h566XXShodHRwczovL3BzeWNoYnJ1Y2UuZ2l0aHViLmlvL1JDb3Vyc2UvQ2hhcDA1KXsudXJpfQ0KLSAgIFtDaGFwMDYgXCMg5pWw5o2u5pON5L2cXShodHRwczovL3BzeWNoYnJ1Y2UuZ2l0aHViLmlvL1JDb3Vyc2UvQ2hhcDA2KXsudXJpfQ0KDQojIyMjIOacrOeroOimgeeCueebruW9lQ0KDQotICAgW+OAkOWunui3tTHjgJHpopHmrKHnu5/orqFdKCPlrp7ot7Ux6aKR5qyh57uf6K6hKQ0KLSAgIFvjgJDlrp7ot7Uy44CR5o+P6L+w57uf6K6hXSgj5a6e6Le1MuaPj+i/sOe7n+iuoSkNCi0gICBb44CQ55+l6K+G54K544CR5q2j5oCB5YiG5biD5LiO5q2j6LSf5YGP5oCBXSgj55+l6K+G54K55q2j5oCB5YiG5biD5LiO5q2j6LSf5YGP5oCBKQ0KLSAgIFvjgJDlrp7ot7Uz44CR55u45YWz5YiG5p6QXSgj5a6e6Le1M+ebuOWFs+WIhuaekCnvvIjph43ngrnvvIkNCi0gICBb44CQ55+l6K+G54K544CR55u45YWz57O75pWw77yIcu+8ieeahOaViOW6lOmHj+Wkp+Wwj10oI+efpeivhueCueebuOWFs+ezu+aVsHLnmoTmlYjlupTph4/lpKflsI8pDQotICAgW+OAkOWunui3tTTjgJHljZXmoLfmnKx05qOA6aqMXSgj5a6e6Le1NOWNleagt+acrHTmo4DpqowpDQotICAgW+OAkOefpeivhueCueOAkeagh+WHhuWMluWdh+WAvOW3ruW8gu+8iGTvvInnmoTmlYjlupTph4/lpKflsI9dKCPnn6Xor4bngrnmoIflh4bljJblnYflgLzlt67lvIJk55qE5pWI5bqU6YeP5aSn5bCPKQ0KLSAgIFvjgJDlrp7ot7U144CR54us56uL5qC35pysdOajgOmqjF0oI+Wunui3tTXni6znq4vmoLfmnKx05qOA6aqMKe+8iOmHjeeCue+8iQ0KLSAgIFvjgJDlrp7ot7U244CR6YWN5a+55qC35pysdOajgOmqjF0oI+Wunui3tTbphY3lr7nmoLfmnKx05qOA6aqMKQ0KLSAgIFvjgJDlrp7ot7U344CR5aSn5LqU5Lq65qC86YeP6KGo5L+h5bqm5YiG5p6QXSgj5a6e6Le1N+Wkp+S6lOS6uuagvOmHj+ihqOS/oeW6puWIhuaekCnvvIjph43ngrnvvIkNCi0gICBb44CQ5a6e6Le1OOOAkeWkp+S6lOS6uuagvOmHj+ihqOaOoue0ouaAp+WboOe0oOWIhuaekO+8iEVGQe+8iV0oI+Wunui3tTjlpKfkupTkurrmoLzph4/ooajmjqLntKLmgKflm6DntKDliIbmnpBlZmEpDQotICAgW+OAkOWunui3tTnjgJHlpKfkupTkurrmoLzph4/ooajpqozor4HmgKflm6DntKDliIbmnpDvvIhDRkHvvIldKCPlrp7ot7U55aSn5LqU5Lq65qC86YeP6KGo6aqM6K+B5oCn5Zug57Sg5YiG5p6QY2ZhKQ0KDQpgYGB7ciwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCiMjIOacrOeroOaJgOmcgFLljIUNCmxpYnJhcnkoYnJ1Y2VSKQ0KYGBgDQoNCmBgYHtyfQ0KIyMg5pWw5o2u5YeG5aSH77ya5aSn5LqU5Lq65qC86Zeu5Y23QkZJ77yI5a6M5pW05pWw5o2u77yJDQpkYXRhID0gYXMuZGF0YS50YWJsZShwc3ljaDo6YmZpKQ0KZGF0YVssIGxldCgNCiAgR2VuZGVyID0gZmFjdG9yKGdlbmRlciwgbGV2ZWxzPTE6MiwgbGFiZWxzPWMoIk1hbGUiLCAiRmVtYWxlIikpLA0KICBBZ2UgPSBhcy5udW1lcmljKGFnZSksDQogIEVkdSA9IGFzLmZhY3RvcihlZHVjYXRpb24pLA0KICBFID0gTUVBTihkYXRhLCAiRSIsIDE6NSwgcmV2PWMoMSwyKSwgcmFuZ2U9MTo2KSwNCiAgQSA9IE1FQU4oZGF0YSwgIkEiLCAxOjUsIHJldj0xLCByYW5nZT0xOjYpLA0KICBDID0gTUVBTihkYXRhLCAiQyIsIDE6NSwgcmV2PWMoNCw1KSwgcmFuZ2U9MTo2KSwNCiAgTiA9IE1FQU4oZGF0YSwgIk4iLCAxOjUsIHJldj1OVUxMLCByYW5nZT0xOjYpLA0KICBPID0gTUVBTihkYXRhLCAiTyIsIDE6NSwgcmV2PWMoMiw1KSwgcmFuZ2U9MTo2KQ0KKV0NCnN0cihkYXRhKQ0KYGBgDQoNCiMg5o+P6L+w57uf6K6h5LiO55u45YWz5YiG5p6QDQoNCiMjIOmikeasoee7n+iuoQ0KDQojIyMjIOOAkOWunui3tTHjgJHpopHmrKHnu5/orqEgeyPlrp7ot7Ux6aKR5qyh57uf6K6hfQ0KDQotICAgW2BGcmVxKClg5Ye95pWw5biu5Yqp5paH5qGjXShodHRwczovL3BzeWNoYnJ1Y2UuZ2l0aHViLmlvL2JydWNlUi9yZWZlcmVuY2UvRnJlcS5odG1sKXsudXJpfQ0KDQpgYGB7cn0NCiMjIEZyZXEoeCwgdmFybmFtZSwgbGFiZWxzLCBzb3J0LCBkaWdpdHMsIGZpbGUpDQojIyDor7fmn6XpmIXluK7liqnmlofmoaPvvJo/RnJlcSDmiJYgaGVscChGcmVxKQ0KDQpGcmVxKGRhdGEkR2VuZGVyKSAgIyDnm7TmjqXmlL7lj5jph48NCkZyZXEoZGF0YSwgIkdlbmRlciIpICAjIOWIhuWIq+iuvuWumuaVsOaNrumbhuWSjOWPmOmHj+WQjQ0KRnJlcShkYXRhJEdlbmRlciwgZGlnaXRzPTMpICAjIOS/neeVmTPkvY3lsI/mlbANCkZyZXEoZGF0YSRHZW5kZXIsIGRpZ2l0cz0zLCBmaWxlPSJGcmVxLmRvYyIpICAjIOS/neWtmOe7k+aenOihqOWIsFdvcmTmlofmoaMNCmBgYA0KDQohW10oaW1hZ2VzL2NsaXBib2FyZC0xNjk0ODY1MjQ0LnBuZykNCg0KYGBge3J9DQpGcmVxKGRhdGEkRWR1KSAgIyDpu5jorqTmjInmlbDlgLzmoIfnrb7mjpLluo8NCkZyZXEoZGF0YSRFZHUsIHNvcnQ9Ii0iKSAgIyDmjInpopHmrKHnu5PmnpzlgJLluo/mjpINCkZyZXEoZGF0YSRFZHUsIHNvcnQ9IisiKSAgIyDmjInpopHmrKHnu5PmnpzmraPluo/mjpINCg0KRnJlcShkYXRhJEFnZSkgICMg5p+l55yL5Y+v6IO955qE5byC5bi45YC8DQpgYGANCg0KIyMg5o+P6L+w57uf6K6hDQoNCiMjIyMg44CQ5a6e6Le1MuOAkeaPj+i/sOe7n+iuoSB7I+Wunui3tTLmj4/ov7Dnu5/orqF9DQoNCi0gICBbYERlc2NyaWJlKClg5Ye95pWw5biu5Yqp5paH5qGjXShodHRwczovL3BzeWNoYnJ1Y2UuZ2l0aHViLmlvL2JydWNlUi9yZWZlcmVuY2UvRGVzY3JpYmUuaHRtbCl7LnVyaX0NCg0KYGBge3J9DQojIyBEZXNjcmliZShkYXRhLCAuLi4sIGRpZ2l0cywgZmlsZSwgcGxvdCwgcGxvdC5maWxlLCAuLi4pDQojIyDor7fmn6XpmIXluK7liqnmlofmoaPvvJo/RGVzY3JpYmUg5oiWIGhlbHAoRGVzY3JpYmUpDQoNCkRlc2NyaWJlKGRhdGEkQWdlKQ0KRGVzY3JpYmUoZGF0YSRBZ2UsIHBsb3Q9VFJVRSkgICMg5q2j5YGP5oCB77yI6ZW/5bC+5oyH5ZCR5Y+z6L65L+ato+WQkeaegeerr+WAvOWkmu+8iQ0KDQpEZXNjcmliZShkYXRhWywgLihHZW5kZXIsIEFnZSwgRWR1KV0sIHBsb3Q9VFJVRSwNCiAgICAgICAgIHVwcGVyLnRyaWFuZ2xlPVRSVUUpDQoNCkRlc2NyaWJlKGRhdGFbLCBHZW5kZXI6T10sIHBsb3Q9VFJVRSwNCiAgICAgICAgIHVwcGVyLnRyaWFuZ2xlPVRSVUUsDQogICAgICAgICB1cHBlci5zbW9vdGg9ImxtIikNCg0KRGVzY3JpYmUoZGF0YVssIEdlbmRlcjpPXSwgZmlsZT0iRGVzYy5kb2MiKSAgIyDkv53lrZjnu5PmnpzooajliLBXb3Jk5paH5qGjDQpgYGANCg0KIVtdKGltYWdlcy9jbGlwYm9hcmQtMzk4NTQ5NDU3MC5wbmcpDQoNCiMjIyMg44CQ55+l6K+G54K544CR5q2j5oCB5YiG5biD5LiO5q2j6LSf5YGP5oCBIHsj55+l6K+G54K55q2j5oCB5YiG5biD5LiO5q2j6LSf5YGP5oCBfQ0KDQohW10oaW1hZ2VzL2NsaXBib2FyZC00MDY5OTkwNTIucG5nKQ0KDQojIyDnm7jlhbPliIbmnpANCg0KIyMjIyDjgJDlrp7ot7Uz44CR55u45YWz5YiG5p6QIHsj5a6e6Le1M+ebuOWFs+WIhuaekH0NCg0KLSAgIFtgQ29ycigpYOWHveaVsOW4ruWKqeaWh+aho10oaHR0cHM6Ly9wc3ljaGJydWNlLmdpdGh1Yi5pby9icnVjZVIvcmVmZXJlbmNlL0NvcnIuaHRtbCl7LnVyaX0NCg0KYGBge3J9DQojIyBDb3JyKGRhdGEsIG1ldGhvZCwgLi4uLCBkaWdpdHMsIGZpbGUsIHBsb3QsIHBsb3QuZmlsZSwgLi4uKQ0KIyMg6K+35p+l6ZiF5biu5Yqp5paH5qGj77yaP0NvcnIg5oiWIGhlbHAoQ29ycikNCg0KQ29ycihkYXRhWywgR2VuZGVyOk9dKQ0KQ29ycihkYXRhWywgR2VuZGVyOk9dLCBwbG90PUZBTFNFLCBmaWxlPSJDb3JyLmRvYyIpDQpgYGANCg0KIVtdKGltYWdlcy9jbGlwYm9hcmQtMzUyODg5Mjg4My5wbmcpDQoNCiFbXShpbWFnZXMvY2xpcGJvYXJkLTMxNDAxMzg0MTAucG5nKQ0KDQrms6jmhI/vvJrovoPml6nniYjmnKxTUFNT55qE55u45YWz57O75pWw6KGo77yM5Y+q6L6T5Ye65YiwXCpcKiAqcCogXDwgLjAx5pi+6JGX5oCn5rC05bmz77yM5LiN5aSf57K+56Gu44CCDQoNCuacgOaWsOWtpuacr+inhOiMg++8muWkp+S6ji4wMDHnmoTpnIDopoEqKuaKpeWRiueyvuehripwKuWAvCoq77yI5aaCKnAqID0gLjAzNeOAgSpwKiA9IC4wMDbjgIEqcCogXDwgLjAwMe+8ie+8jOS4jeiDveWPquaKpeWRiuiMg+WbtO+8iOWmgipwKiBcPCAuMDXvvInvvIEqKipwKioqKirlgLzkuI3og73nrYnkuo4wKirvvIjkuI3og73lhpkqcCogPSAuMDAw77yM6KaB5YaZKnAqIFw8IC4wMDHvvInvvIENCg0KIyMjIyDjgJDnn6Xor4bngrnjgJHnm7jlhbPns7vmlbDvvIhy77yJ55qE5pWI5bqU6YeP5aSn5bCPIHsj55+l6K+G54K555u45YWz57O75pWwcueahOaViOW6lOmHj+Wkp+Wwj30NCg0KLSAgIOebuOWFs+ezu+aVsCBcfCpyKlx877yI6K+35Y+C6ZiFYGVmZmVjdHNpemU6OmludGVycHJldF9yKClg5Ye95pWw5biu5Yqp5paH5qGj77yJDQogICAgLSAgIOe7j+WFuOWPguiAg++8iENvaGVuLCAxOTg477yJDQogICAgICAgIC0gICDmnoHlsI/mlYjlupTvvJowXH4wLjENCiAgICAgICAgLSAgIOWwj+aViOW6lO+8mjAuMVx+MC4zDQogICAgICAgIC0gICDkuK3mlYjlupTvvJowLjNcfjAuNQ0KICAgICAgICAtICAg5aSn5pWI5bqU77yaMC41XH4xDQogICAgLSAgIOeOsOS7o+WPguiAg++8iEZ1bmRlciAmIE96ZXIsIDIwMTnvvIkNCiAgICAgICAgLSAgIOW+ruWwj+aViOW6lO+8mjBcfjAuMDUNCiAgICAgICAgLSAgIOaegeWwj+aViOW6lO+8mjAuMDVcfjAuMQ0KICAgICAgICAtICAg5bCP5pWI5bqU77yaMC4xXH4wLjINCiAgICAgICAgLSAgIOS4reaViOW6lO+8mjAuMlx+MC4zDQogICAgICAgIC0gICDlpKfmlYjlupTvvJowLjNcfjAuNA0KICAgICAgICAtICAg5p6B5aSn5pWI5bqU77yaMC40XH4xDQoNCmBgYHtyfQ0KZWZmZWN0c2l6ZTo6aW50ZXJwcmV0X3IoMC4wMSkNCmVmZmVjdHNpemU6OmludGVycHJldF9yKDAuMDUpDQplZmZlY3RzaXplOjppbnRlcnByZXRfcigwLjEpDQplZmZlY3RzaXplOjppbnRlcnByZXRfcigwLjIpDQplZmZlY3RzaXplOjppbnRlcnByZXRfcigwLjMpDQplZmZlY3RzaXplOjppbnRlcnByZXRfcigwLjQpDQpgYGANCg0KIyB05qOA6aqMDQoNCiMjIOWNleagt+acrHTmo4DpqowNCg0KIyMjIyDjgJDlrp7ot7U044CR5Y2V5qC35pysdOajgOmqjCB7I+Wunui3tTTljZXmoLfmnKx05qOA6aqMfQ0KDQotICAgW2BUVEVTVCgpYOWHveaVsOW4ruWKqeaWh+aho10oaHR0cHM6Ly9wc3ljaGJydWNlLmdpdGh1Yi5pby9icnVjZVIvcmVmZXJlbmNlL1RURVNULmh0bWwpey51cml9DQoNCmBgYHtyfQ0KVFRFU1QoZGF0YSwgeT0iQWdlIikNClRURVNUKGRhdGEsIHk9IkFnZSIsIHRlc3QudmFsdWU9MjApDQpUVEVTVChkYXRhLCB5PSJBZ2UiLCB0ZXN0LnZhbHVlPTI4KSAgIyDnu5/orqHmmL7okZfkuI3nrYnkuo7lpKfmlYjlupTvvIENCmBgYA0KDQojIyMjIOOAkOefpeivhueCueOAkeagh+WHhuWMluWdh+WAvOW3ruW8gu+8iGTvvInnmoTmlYjlupTph4/lpKflsI8geyPnn6Xor4bngrnmoIflh4bljJblnYflgLzlt67lvIJk55qE5pWI5bqU6YeP5aSn5bCPfQ0KDQotICAgQ29oZW4ncyAqZCrvvIjor7flj4LpmIVgZWZmZWN0c2l6ZTo6aW50ZXJwcmV0X2NvaGVuc19kKClg5Ye95pWw5biu5Yqp5paH5qGj77yJDQogICAgLSAgIOe7j+WFuOWPguiAg++8iENvaGVuLCAxOTg477yJDQogICAgICAgIC0gICDmnoHlsI/mlYjlupTvvJowXH4wLjINCiAgICAgICAgLSAgIOWwj+aViOW6lO+8mjAuMlx+MC41DQogICAgICAgIC0gICDkuK3mlYjlupTvvJowLjVcfjAuOA0KICAgICAgICAtICAg5aSn5pWI5bqU77yaMC445Y+K5Lul5LiK77yI6Iez5peg56m35aSn77yJDQoNCiMjIOeLrOeri+agt+acrHTmo4DpqowNCg0KIyMjIyDjgJDlrp7ot7U144CR54us56uL5qC35pysdOajgOmqjCB7I+Wunui3tTXni6znq4vmoLfmnKx05qOA6aqMfQ0KDQotICAgW2BUVEVTVCgpYOWHveaVsOW4ruWKqeaWh+aho10oaHR0cHM6Ly9wc3ljaGJydWNlLmdpdGh1Yi5pby9icnVjZVIvcmVmZXJlbmNlL1RURVNULmh0bWwpey51cml9DQoNCmBgYHtyfQ0KVFRFU1QoZGF0YSwgeT0iRSIsIHg9ImdlbmRlciIpDQoNClRURVNUKGRhdGEsIHk9IkUiLCB4PSJnZW5kZXIiLCB2YXIuZXF1YWw9RkFMU0UpDQoNClRURVNUKGRhdGEsIHk9YygiRSIsICJBIiwgIkMiLCAiTiIsICJPIiksIHg9ImdlbmRlciIpDQpgYGANCg0KYGBge3IsIHJlc3VsdHM9RkFMU0V9DQpUVEVTVChkYXRhLA0KICAgICAgeSA9IGMoIkUiLCAiQSIsICJDIiwgIk4iLCAiTyIpLA0KICAgICAgeCA9ICJHZW5kZXIiLA0KICAgICAgYmYxMCA9IFRSVUUsICAjIOiuoeeul+i0neWPtuaWr+WboOWtkO+8iEJGMTDvvIkNCiAgICAgIGZpbGUgPSAiVC10ZXN0MS5kb2MiKQ0KYGBgDQoNCiFbXShpbWFnZXMvY2xpcGJvYXJkLTE0NjE0NDQ5Ni5wbmcpDQoNCiMjIOmFjeWvueagt+acrHTmo4DpqowNCg0KIyMjIyDjgJDlrp7ot7U244CR6YWN5a+55qC35pysdOajgOmqjCB7I+Wunui3tTbphY3lr7nmoLfmnKx05qOA6aqMfQ0KDQotICAgW2BUVEVTVCgpYOWHveaVsOW4ruWKqeaWh+aho10oaHR0cHM6Ly9wc3ljaGJydWNlLmdpdGh1Yi5pby9icnVjZVIvcmVmZXJlbmNlL1RURVNULmh0bWwpey51cml9DQoNCmBgYHtyfQ0KYnJ1Y2VSOjp3aXRoaW4uMSAgIyDlrr3mlbDmja4NCg0KVFRFU1Qod2l0aGluLjEsIHk9YygiQTEiLCAiQTIiKSwgcGFpcmVkPVRSVUUpDQoNClRURVNUKHdpdGhpbi4xLCB5PWMoIkExIiwgIkEyIiwgIkEzIiwgIkE0IiksIHBhaXJlZD1UUlVFKQ0KYGBgDQoNCiMgXCog5ouT5bGV77ya5omL5Yqo6K6h566XKnAq5YC8DQoNCiFbXShpbWFnZXMvY2xpcGJvYXJkLTI4OTg0MjI4NTMucG5nKQ0KDQohW10oaW1hZ2VzL2NsaXBib2FyZC00MTM1MjI3MjkucG5nKQ0KDQpgYGB7cn0NCnAueigxLjk2KQ0KcCh6PTEuOTYpDQpwKHo9Mi41OCkNCnAoej0zLjMwKQ0KYGBgDQoNCmBgYHtyfQ0KcC50KDIsIDEwMCkNCnAodD0yLCBkZj0xMDApDQpwKHQ9MiwgZGY9MTAwMCkNCnAodD0yLCBkZj0xMDAwMCkNCmBgYA0KDQpgYGB7cn0NCnAuZig0LCAxLCAxMDApDQpwKGY9NCwgZGYxPTEsIGRmMj0xMDApDQpgYGANCg0KYGBge3J9DQpwLnIoMC4yLCAxMDApDQpwKHI9MC4yLCBuPTEwMCkNCnAocj0wLjMsIG49MTAwKQ0KcChyPTAuNCwgbj0xMDApDQoNCnAocj0wLjIsIG49MTAwKQ0KcChyPTAuMiwgbj0xMDAwKQ0KcChyPTAuMiwgbj0xMDAwMCkNCmBgYA0KDQpgYGB7cn0NCnAuY2hpMigzLjg0LCAxKQ0KcChjaGkyPTMuODQsIGRmPTEpDQpgYGANCg0KIyDkv6HluqbliIbmnpANCg0KIyMg5YaF6YOo5LiA6Ie05oCn5L+h5bqmDQoNCiMjIyMg44CQ5a6e6Le1N+OAkeWkp+S6lOS6uuagvOmHj+ihqOS/oeW6puWIhuaekCB7I+Wunui3tTflpKfkupTkurrmoLzph4/ooajkv6HluqbliIbmnpB9DQoNCi0gICBDcm9uYmFjaCdzIM6xDQogICAgLSAgIFtgQWxwaGEoKWDlh73mlbDluK7liqnmlofmoaNdKGh0dHBzOi8vcHN5Y2hicnVjZS5naXRodWIuaW8vYnJ1Y2VSL3JlZmVyZW5jZS9BbHBoYS5odG1sKXsudXJpfQ0KLSAgIOiuvuWumuWPmOmHj+iMg+WbtOeahOS4ieenjeaWueW8jw0KICAgIC0gICAqKmB2YXJgICsgYGl0ZW1zYCoqOiBjb21tb24gYW5kIHVuaXF1ZSBwYXJ0cyBvZiB2YXJpYWJsZSBuYW1lcw0KICAgIC0gICAqKmB2YXJzYCoqOiBhIGNoYXJhY3RlciB2ZWN0b3Igb2YgdmFyaWFibGUgbmFtZXMNCiAgICAtICAgKipgdmFycmFuZ2VgKio6IHN0YXJ0aW5nIGFuZCBzdG9wcGluZyBwb3NpdGlvbnMgb2YgdmFyaWFibGVzDQoNCmBgYHtyfQ0KIyMgQWxwaGEoZGF0YSwgdmFyLCBpdGVtcywgLi4uLCByZXYsIGRpZ2l0cykNCiMjIOivt+afpemYheW4ruWKqeaWh+aho++8mj9BbHBoYSDmiJYgaGVscChBbHBoYSkNCg0KQWxwaGEoZGF0YSwgIkUiLCAxOjUpICAjIOWkluWAvuaAp++8mkUx44CBRTLlupTor6Xlj43lkJHorqHliIYNCkFscGhhKGRhdGEsICJFIiwgMTo1LCByZXY9MToyKSAgIyDlj43lkJHorqHliIYNCkFscGhhKGRhdGEsICJBIiwgMTo1LCByZXY9MSkgICMg5a6c5Lq65oCnDQpBbHBoYShkYXRhLCAiQyIsIDE6NSwgcmV2PWMoNCwgNSkpICAjIOWwvei0o+aApw0KQWxwaGEoZGF0YSwgIk4iLCAxOjUpICAjIOelnue7j+i0qC/mg4Xnu6rkuI3nqLPlrprmgKcNCkFscGhhKGRhdGEsICJPIiwgMTo1LCByZXY9YygyLCA1KSkgICMg5byA5pS+5oCnDQpgYGANCg0KIyBcKiDmi5PlsZXvvJrmjqLntKLmgKflm6DntKDliIbmnpDvvIhFRkHvvIkNCg0KIyMjIyDjgJDlrp7ot7U444CR5aSn5LqU5Lq65qC86YeP6KGo5o6i57Si5oCn5Zug57Sg5YiG5p6Q77yIRUZB77yJIHsj5a6e6Le1OOWkp+S6lOS6uuagvOmHj+ihqOaOoue0ouaAp+WboOe0oOWIhuaekGVmYX0NCg0KLSAgIFtgRUZBKClg5Ye95pWw5biu5Yqp5paH5qGjXShodHRwczovL3BzeWNoYnJ1Y2UuZ2l0aHViLmlvL2JydWNlUi9yZWZlcmVuY2UvRUZBLmh0bWwpey51cml9DQoNCiFbXShpbWFnZXMvY2xpcGJvYXJkLTE3ODA2OTQ3MDMucG5nKQ0KDQpgYGB7ciwgd2FybmluZz1GQUxTRX0NCkVGQShwc3ljaDo6YmZpLCAiRSIsIDE6NSkNCg0KRUZBKGRhdGEgPSBwc3ljaDo6YmZpLA0KICAgIHZhcnJhbmdlID0gIkExOk81IiwNCiAgICBuZmFjdG9ycyA9ICJwYXJhbGxlbCIsDQogICAgaGlkZS5sb2FkaW5ncyA9IDAuNDUpDQpgYGANCg0KIyBcKiDmi5PlsZXvvJrpqozor4HmgKflm6DntKDliIbmnpDvvIhDRkHvvIkNCg0KIyMjIyDjgJDlrp7ot7U544CR5aSn5LqU5Lq65qC86YeP6KGo6aqM6K+B5oCn5Zug57Sg5YiG5p6Q77yIQ0ZB77yJIHsj5a6e6Le1OeWkp+S6lOS6uuagvOmHj+ihqOmqjOivgeaAp+WboOe0oOWIhuaekGNmYX0NCg0KLSAgIFtgQ0ZBKClg5Ye95pWw5biu5Yqp5paH5qGjXShodHRwczovL3BzeWNoYnJ1Y2UuZ2l0aHViLmlvL2JydWNlUi9yZWZlcmVuY2UvQ0ZBLmh0bWwpey51cml9DQoNCiFbXShpbWFnZXMvY2xpcGJvYXJkLTE5NjA4OTc3MjQucG5nKQ0KDQpgYGB7cn0NCkNGQShkYXRhID0gbmEub21pdChwc3ljaDo6YmZpKSwNCiAgICAiRSA9fiBFWzE6NV0NCiAgICAgQSA9fiBBWzE6NV0NCiAgICAgQyA9fiBDWzE6NV0NCiAgICAgTiA9fiBOWzE6NV0NCiAgICAgTyA9fiBPWzE6NV0iKQ0KYGBgDQoNCiFbXShpbWFnZXMvY2xpcGJvYXJkLTIxNzM0NTIzOTAucG5nKQ0KDQojIOOAkOS9nOS4mjfjgJHln7rnoYDnu5/orqHnu4PkuaANCg0K5L2c5Lia6KaB5rGC77yaDQoNCi0gICDln7rkuo5b44CQ5L2c5LiaNOOAkV0oaHR0cHM6Ly9wc3ljaGJydWNlLmdpdGh1Yi5pby9SQ291cnNlL0NoYXAwMyMlRTQlQkQlOUMlRTQlQjglOUE0JUU2JTlDJTlGJUU2JTlDJUFCJUU4JTg3JUFBJUU5JTgwJTg5JUU1JTg1JUFDJUU1JUJDJTgwJUU2JTk1JUIwJUU2JThEJUFFJUU1JUFGJUJDJUU1JTg1JUE1KeWSjFvjgJDkvZzkuJo244CRXShodHRwczovL3BzeWNoYnJ1Y2UuZ2l0aHViLmlvL1JDb3Vyc2UvQ2hhcDA1IyVFNCVCRCU5QyVFNCVCOCU5QTYlRTYlOUMlOUYlRTYlOUMlQUIlRTQlQkQlOUMlRTQlQjglOUElRTYlOTUlQjAlRTYlOEQlQUUlRTUlOEYlOTglRTklODclOEYlRTglQUUlQTElRTclQUUlOTcpey51cml955qE5pyf5pyr6Ieq6YCJ5pWw5o2u5ZKM5Luj56CB56ev57Sv77yM6L+Q55So5pys56ug5omA5a2m55qE5Z+656GA57uf6K6h5pa55rOV5ZKM5Luj56CB77yM57uD5LmgKirmj4/ov7Dnu5/orqHjgIHnm7jlhbPliIbmnpDjgIF05qOA6aqMKirvvIjmoLnmja7oh6rlt7HnmoTmlbDmja7mg4XlhrXpgInmi6nmnIDlkIjpgILnmoTkuIDnp4105qOA6aqM5pa55rOV77yJDQotICAg5L2/55SoUiBNYXJrZG93buWujOaIkO+8jOWvueWFs+mUruS7o+eggeWPiue7k+aenOimgeacieazqOmHiuivtOaYjg0KDQrlubPlj7Dmj5DkuqTvvJoNCg0KLSAgIOi/kOihjOW+l+WIsOeahEhUTUznvZHpobXvvIzlj4rlhbblhbPplK7pg6jliIbmiKrlm74NCg0KYGBge3IsIGluY2x1ZGU9RkFMU0V9DQp1bmxpbmsoYygiRnJlcS5kb2MiLCAiRGVzYy5kb2MiLCAiQ29yci5kb2MiLA0KICAgICAgICAgIlQtdGVzdDEuZG9jIikpDQpgYGANCg==