1 Basic Descriptives

1.1 Cases by Ethnic Conflict and Cases by levels of Coethnicity in Ethnic Conflicts

Percentage wise distribution of the type of Civil Wars (Ethnic/Non-Ethnic)
conflict_ethnic total_cases percentage_of_cases
0 40 25.15723
1 119 74.84277
Distribution by Co-ethnicity Status in Ethnic Civil Wars
coethnic_rebel_pgm_nachiket total_cases percentage_of_cases
0.0 1374 65.74163
0.5 196 9.37799
1.0 520 24.88038

1.2 Basic CrossTabs on Rebel Strength (Nachiket) and Coethnicity (Nachiket and DK)

## 
##    Cell Contents
## |-------------------------|
## |                   Count |
## |             Row Percent |
## |          Column Percent |
## |-------------------------|
## 
## Total Observations in Table:  2051 
## 
##                           | Coethnicity_Nachiket_Variable Binary 
## Rebel Strength (Nachiket) |        0  |        1  | Row Total | 
## --------------------------|-----------|-----------|-----------|
##                         1 |      975  |      539  |     1514  | 
##                           |   64.399% |   35.601% |   73.818% | 
##                           |   71.376% |   78.686% |           | 
## --------------------------|-----------|-----------|-----------|
##                         2 |      149  |       73  |      222  | 
##                           |   67.117% |   32.883% |   10.824% | 
##                           |   10.908% |   10.657% |           | 
## --------------------------|-----------|-----------|-----------|
##                         3 |      219  |       66  |      285  | 
##                           |   76.842% |   23.158% |   13.896% | 
##                           |   16.032% |    9.635% |           | 
## --------------------------|-----------|-----------|-----------|
##                         4 |        0  |        7  |        7  | 
##                           |    0.000% |  100.000% |    0.341% | 
##                           |    0.000% |    1.022% |           | 
## --------------------------|-----------|-----------|-----------|
##                         5 |       23  |        0  |       23  | 
##                           |  100.000% |    0.000% |    1.121% | 
##                           |    1.684% |    0.000% |           | 
## --------------------------|-----------|-----------|-----------|
##              Column Total |     1366  |      685  |     2051  | 
##                           |   66.602% |   33.398% |           | 
## --------------------------|-----------|-----------|-----------|
## 
## 
## 
##  Pearson's Chi-squared test
## 
## data:  main_civilwars_ethnic_longitudnal$rebel_strength_nachiket_scaled and main_civilwars_ethnic_longitudnal$coethnic_rebel_pgm_nachiket_binary
## X-squared = 42.258, df = 4, p-value = 1.475e-08
## 
##    Cell Contents
## |-------------------------|
## |                   Count |
## |             Row Percent |
## |          Column Percent |
## |-------------------------|
## 
## Total Observations in Table:  2051 
## 
##                           | Coethnicity_Nachiket_Variable 
## Rebel Strength (Nachiket) |        0  |      0.5  |        1  | Row Total | 
## --------------------------|-----------|-----------|-----------|-----------|
##                         1 |      975  |      152  |      387  |     1514  | 
##                           |   64.399% |   10.040% |   25.561% |   73.818% | 
##                           |   71.376% |   77.551% |   79.141% |           | 
## --------------------------|-----------|-----------|-----------|-----------|
##                         2 |      149  |       22  |       51  |      222  | 
##                           |   67.117% |    9.910% |   22.973% |   10.824% | 
##                           |   10.908% |   11.224% |   10.429% |           | 
## --------------------------|-----------|-----------|-----------|-----------|
##                         3 |      219  |       22  |       44  |      285  | 
##                           |   76.842% |    7.719% |   15.439% |   13.896% | 
##                           |   16.032% |   11.224% |    8.998% |           | 
## --------------------------|-----------|-----------|-----------|-----------|
##                         4 |        0  |        0  |        7  |        7  | 
##                           |    0.000% |    0.000% |  100.000% |    0.341% | 
##                           |    0.000% |    0.000% |    1.431% |           | 
## --------------------------|-----------|-----------|-----------|-----------|
##                         5 |       23  |        0  |        0  |       23  | 
##                           |  100.000% |    0.000% |    0.000% |    1.121% | 
##                           |    1.684% |    0.000% |    0.000% |           | 
## --------------------------|-----------|-----------|-----------|-----------|
##              Column Total |     1366  |      196  |      489  |     2051  | 
##                           |   66.602% |    9.556% |   23.842% |           | 
## --------------------------|-----------|-----------|-----------|-----------|
## 
## 
## 
##  Pearson's Chi-squared test
## 
## data:  main_civilwars_ethnic_longitudnal$rebel_strength_nachiket_scaled and main_civilwars_ethnic_longitudnal$coethnic_rebel_pgm_nachiket
## X-squared = 51.287, df = 8, p-value = 2.31e-08
## 
##    Cell Contents
## |-------------------------|
## |                   Count |
## |             Row Percent |
## |          Column Percent |
## |-------------------------|
## 
## Total Observations in Table:  1685 
## 
##                           | Coethnicity_DK_Variable 
## Rebel Strength (Nachiket) |        0  |      0.5  |        1  | Row Total | 
## --------------------------|-----------|-----------|-----------|-----------|
##                         1 |      783  |      296  |      104  |     1183  | 
##                           |   66.188% |   25.021% |    8.791% |   70.208% | 
##                           |   67.734% |   87.059% |   55.026% |           | 
## --------------------------|-----------|-----------|-----------|-----------|
##                         2 |      146  |       22  |       41  |      209  | 
##                           |   69.856% |   10.526% |   19.617% |   12.404% | 
##                           |   12.630% |    6.471% |   21.693% |           | 
## --------------------------|-----------|-----------|-----------|-----------|
##                         3 |      197  |       22  |       44  |      263  | 
##                           |   74.905% |    8.365% |   16.730% |   15.608% | 
##                           |   17.042% |    6.471% |   23.280% |           | 
## --------------------------|-----------|-----------|-----------|-----------|
##                         4 |        7  |        0  |        0  |        7  | 
##                           |  100.000% |    0.000% |    0.000% |    0.415% | 
##                           |    0.606% |    0.000% |    0.000% |           | 
## --------------------------|-----------|-----------|-----------|-----------|
##                         5 |       23  |        0  |        0  |       23  | 
##                           |  100.000% |    0.000% |    0.000% |    1.365% | 
##                           |    1.990% |    0.000% |    0.000% |           | 
## --------------------------|-----------|-----------|-----------|-----------|
##              Column Total |     1156  |      340  |      189  |     1685  | 
##                           |   68.605% |   20.178% |   11.217% |           | 
## --------------------------|-----------|-----------|-----------|-----------|
## 
## 
## 
##  Pearson's Chi-squared test
## 
## data:  main_civilwars_ethnic_longitudnal$rebel_strength_nachiket_scaled and main_civilwars_ethnic_longitudnal$coethnic_rebel_pgm_dk
## X-squared = 84.375, df = 8, p-value = 6.408e-15

1.3 Basic Crosstabs on State Strength and Co-ethnicity

## 
##    Cell Contents
## |-------------------------|
## |                   Count |
## |             Row Percent |
## |          Column Percent |
## |-------------------------|
## 
## Total Observations in Table:  2090 
## 
##                | Coethnicity_Nachiket_Variable 
## State Strength |        0  |        1  | Row Total | 
## ---------------|-----------|-----------|-----------|
##              1 |      223  |      208  |      431  | 
##                |   51.740% |   48.260% |   20.622% | 
##                |   16.230% |   29.050% |           | 
## ---------------|-----------|-----------|-----------|
##              2 |      362  |       99  |      461  | 
##                |   78.525% |   21.475% |   22.057% | 
##                |   26.346% |   13.827% |           | 
## ---------------|-----------|-----------|-----------|
##              3 |      672  |       76  |      748  | 
##                |   89.840% |   10.160% |   35.789% | 
##                |   48.908% |   10.615% |           | 
## ---------------|-----------|-----------|-----------|
##              4 |       27  |      108  |      135  | 
##                |   20.000% |   80.000% |    6.459% | 
##                |    1.965% |   15.084% |           | 
## ---------------|-----------|-----------|-----------|
##              5 |       90  |      225  |      315  | 
##                |   28.571% |   71.429% |   15.072% | 
##                |    6.550% |   31.425% |           | 
## ---------------|-----------|-----------|-----------|
##   Column Total |     1374  |      716  |     2090  | 
##                |   65.742% |   34.258% |           | 
## ---------------|-----------|-----------|-----------|
## 
## 
## 
##  Pearson's Chi-squared test
## 
## data:  main_civilwars_ethnic_longitudnal$state_strength and main_civilwars_ethnic_longitudnal$coethnic_rebel_pgm_nachiket_binary
## X-squared = 582.48, df = 4, p-value < 2.2e-16
## 
##    Cell Contents
## |-------------------------|
## |                   Count |
## |             Row Percent |
## |          Column Percent |
## |-------------------------|
## 
## Total Observations in Table:  2090 
## 
##                | Coethnicity_Nachiket_Variable 
## State Strength |        0  |      0.5  |        1  | Row Total | 
## ---------------|-----------|-----------|-----------|-----------|
##              1 |      223  |      133  |       75  |      431  | 
##                |   51.740% |   30.858% |   17.401% |   20.622% | 
##                |   16.230% |   67.857% |   14.423% |           | 
## ---------------|-----------|-----------|-----------|-----------|
##              2 |      362  |        0  |       99  |      461  | 
##                |   78.525% |    0.000% |   21.475% |   22.057% | 
##                |   26.346% |    0.000% |   19.038% |           | 
## ---------------|-----------|-----------|-----------|-----------|
##              3 |      672  |        9  |       67  |      748  | 
##                |   89.840% |    1.203% |    8.957% |   35.789% | 
##                |   48.908% |    4.592% |   12.885% |           | 
## ---------------|-----------|-----------|-----------|-----------|
##              4 |       27  |        0  |      108  |      135  | 
##                |   20.000% |    0.000% |   80.000% |    6.459% | 
##                |    1.965% |    0.000% |   20.769% |           | 
## ---------------|-----------|-----------|-----------|-----------|
##              5 |       90  |       54  |      171  |      315  | 
##                |   28.571% |   17.143% |   54.286% |   15.072% | 
##                |    6.550% |   27.551% |   32.885% |           | 
## ---------------|-----------|-----------|-----------|-----------|
##   Column Total |     1374  |      196  |      520  |     2090  | 
##                |   65.742% |    9.378% |   24.880% |           | 
## ---------------|-----------|-----------|-----------|-----------|
## 
## 
## 
##  Pearson's Chi-squared test
## 
## data:  main_civilwars_ethnic_longitudnal$state_strength and main_civilwars_ethnic_longitudnal$coethnic_rebel_pgm_nachiket
## X-squared = 903.44, df = 8, p-value < 2.2e-16
## 
##    Cell Contents
## |-------------------------|
## |                   Count |
## |             Row Percent |
## |          Column Percent |
## |-------------------------|
## 
## Total Observations in Table:  1715 
## 
##                | Coethnicity_DK_Variable 
## State Strength |        0  |      0.5  |        1  | Row Total | 
## ---------------|-----------|-----------|-----------|-----------|
##              1 |      206  |      128  |       63  |      397  | 
##                |   51.889% |   32.242% |   15.869% |   23.149% | 
##                |   17.728% |   37.647% |   29.577% |           | 
## ---------------|-----------|-----------|-----------|-----------|
##              2 |      304  |       58  |       41  |      403  | 
##                |   75.434% |   14.392% |   10.174% |   23.499% | 
##                |   26.162% |   17.059% |   19.249% |           | 
## ---------------|-----------|-----------|-----------|-----------|
##              3 |      566  |       24  |       60  |      650  | 
##                |   87.077% |    3.692% |    9.231% |   37.901% | 
##                |   48.709% |    7.059% |   28.169% |           | 
## ---------------|-----------|-----------|-----------|-----------|
##              4 |        0  |       27  |        0  |       27  | 
##                |    0.000% |  100.000% |    0.000% |    1.574% | 
##                |    0.000% |    7.941% |    0.000% |           | 
## ---------------|-----------|-----------|-----------|-----------|
##              5 |       86  |      103  |       49  |      238  | 
##                |   36.134% |   43.277% |   20.588% |   13.878% | 
##                |    7.401% |   30.294% |   23.005% |           | 
## ---------------|-----------|-----------|-----------|-----------|
##   Column Total |     1162  |      340  |      213  |     1715  | 
##                |   67.755% |   19.825% |   12.420% |           | 
## ---------------|-----------|-----------|-----------|-----------|
## 
## 
## 
##  Pearson's Chi-squared test
## 
## data:  main_civilwars_ethnic_longitudnal$state_strength and main_civilwars_ethnic_longitudnal$coethnic_rebel_pgm_dk
## X-squared = 410.17, df = 8, p-value < 2.2e-16

1.4 Basic Crosstab on Threat Perception and Coethnicity

## 
##    Cell Contents
## |-------------------------|
## |                   Count |
## |             Row Percent |
## |          Column Percent |
## |-------------------------|
## 
## Total Observations in Table:  2051 
## 
##                 | Coethnicity_Nachiket_Variable 
## Level of Threat |        0  |        1  | Row Total | 
## ----------------|-----------|-----------|-----------|
##               1 |     1018  |      436  |     1454  | 
##                 |   70.014% |   29.986% |   70.892% | 
##                 |   74.524% |   63.650% |           | 
## ----------------|-----------|-----------|-----------|
##               2 |       28  |      122  |      150  | 
##                 |   18.667% |   81.333% |    7.314% | 
##                 |    2.050% |   17.810% |           | 
## ----------------|-----------|-----------|-----------|
##               3 |      320  |      127  |      447  | 
##                 |   71.588% |   28.412% |   21.794% | 
##                 |   23.426% |   18.540% |           | 
## ----------------|-----------|-----------|-----------|
##    Column Total |     1366  |      685  |     2051  | 
##                 |   66.602% |   33.398% |           | 
## ----------------|-----------|-----------|-----------|
## 
## 
## 
##  Pearson's Chi-squared test
## 
## data:  main_civilwars_ethnic_longitudnal$Level_of_Threat and main_civilwars_ethnic_longitudnal$coethnic_rebel_pgm_nachiket_binary
## X-squared = 167.56, df = 2, p-value < 2.2e-16
## 
##    Cell Contents
## |-------------------------|
## |                   Count |
## |             Row Percent |
## |          Column Percent |
## |-------------------------|
## 
## Total Observations in Table:  2051 
## 
##                 | Coethnicity_Nachiket_Variable 
## Level of Threat |        0  |      0.5  |        1  | Row Total | 
## ----------------|-----------|-----------|-----------|-----------|
##               1 |     1018  |       63  |      373  |     1454  | 
##                 |   70.014% |    4.333% |   25.653% |   70.892% | 
##                 |   74.524% |   32.143% |   76.278% |           | 
## ----------------|-----------|-----------|-----------|-----------|
##               2 |       28  |       89  |       33  |      150  | 
##                 |   18.667% |   59.333% |   22.000% |    7.314% | 
##                 |    2.050% |   45.408% |    6.748% |           | 
## ----------------|-----------|-----------|-----------|-----------|
##               3 |      320  |       44  |       83  |      447  | 
##                 |   71.588% |    9.843% |   18.568% |   21.794% | 
##                 |   23.426% |   22.449% |   16.973% |           | 
## ----------------|-----------|-----------|-----------|-----------|
##    Column Total |     1366  |      196  |      489  |     2051  | 
##                 |   66.602% |    9.556% |   23.842% |           | 
## ----------------|-----------|-----------|-----------|-----------|
## 
## 
## 
##  Pearson's Chi-squared test
## 
## data:  main_civilwars_ethnic_longitudnal$Level_of_Threat and main_civilwars_ethnic_longitudnal$coethnic_rebel_pgm_nachiket
## X-squared = 493.86, df = 4, p-value < 2.2e-16
## 
##    Cell Contents
## |-------------------------|
## |                   Count |
## |             Row Percent |
## |          Column Percent |
## |-------------------------|
## 
## Total Observations in Table:  1685 
## 
##                 | Coethnicity_DK_Variable 
## Level of Threat |        0  |      0.5  |        1  | Row Total | 
## ----------------|-----------|-----------|-----------|-----------|
##               1 |      823  |      212  |       85  |     1120  | 
##                 |   73.482% |   18.929% |    7.589% |   66.469% | 
##                 |   71.194% |   62.353% |   44.974% |           | 
## ----------------|-----------|-----------|-----------|-----------|
##               2 |       28  |       84  |       38  |      150  | 
##                 |   18.667% |   56.000% |   25.333% |    8.902% | 
##                 |    2.422% |   24.706% |   20.106% |           | 
## ----------------|-----------|-----------|-----------|-----------|
##               3 |      305  |       44  |       66  |      415  | 
##                 |   73.494% |   10.602% |   15.904% |   24.629% | 
##                 |   26.384% |   12.941% |   34.921% |           | 
## ----------------|-----------|-----------|-----------|-----------|
##    Column Total |     1156  |      340  |      189  |     1685  | 
##                 |   68.605% |   20.178% |   11.217% |           | 
## ----------------|-----------|-----------|-----------|-----------|
## 
## 
## 
##  Pearson's Chi-squared test
## 
## data:  main_civilwars_ethnic_longitudnal$Level_of_Threat and main_civilwars_ethnic_longitudnal$coethnic_rebel_pgm_dk
## X-squared = 222.89, df = 4, p-value < 2.2e-16

1.5 Basic Crosstabs on Rebel Strength (Adam NSA) and Coethnicity (nachiket and DK)

## 
##    Cell Contents
## |-------------------------|
## |                   Count |
## |             Row Percent |
## |          Column Percent |
## |-------------------------|
## 
## Total Observations in Table:  1908 
## 
##                           | Coethnicity_Nachiket_Variable Binary 
## Rebel Strength (Adam NSA) |        0  |        1  | Row Total | 
## --------------------------|-----------|-----------|-----------|
##                         1 |     1274  |      594  |     1868  | 
##                           |   68.201% |   31.799% |   97.904% | 
##                           |   96.956% |  100.000% |           | 
## --------------------------|-----------|-----------|-----------|
##                         2 |       30  |        0  |       30  | 
##                           |  100.000% |    0.000% |    1.572% | 
##                           |    2.283% |    0.000% |           | 
## --------------------------|-----------|-----------|-----------|
##                         3 |       10  |        0  |       10  | 
##                           |  100.000% |    0.000% |    0.524% | 
##                           |    0.761% |    0.000% |           | 
## --------------------------|-----------|-----------|-----------|
##              Column Total |     1314  |      594  |     1908  | 
##                           |   68.868% |   31.132% |           | 
## --------------------------|-----------|-----------|-----------|
## 
## 
## 
##  Pearson's Chi-squared test
## 
## data:  main_civilwars_ethnic_longitudnal$rebstrength_adam_nsa and main_civilwars_ethnic_longitudnal$coethnic_rebel_pgm_nachiket_binary
## X-squared = 18.469, df = 2, p-value = 9.759e-05
## 
##    Cell Contents
## |-------------------------|
## |                   Count |
## |             Row Percent |
## |          Column Percent |
## |-------------------------|
## 
## Total Observations in Table:  1908 
## 
##                           | Coethnicity_Nachiket_Variable Binary 
## Rebel Strength (Adam NSA) |        0  |      0.5  |        1  | Row Total | 
## --------------------------|-----------|-----------|-----------|-----------|
##                         1 |     1274  |      177  |      417  |     1868  | 
##                           |   68.201% |    9.475% |   22.323% |   97.904% | 
##                           |   96.956% |  100.000% |  100.000% |           | 
## --------------------------|-----------|-----------|-----------|-----------|
##                         2 |       30  |        0  |        0  |       30  | 
##                           |  100.000% |    0.000% |    0.000% |    1.572% | 
##                           |    2.283% |    0.000% |    0.000% |           | 
## --------------------------|-----------|-----------|-----------|-----------|
##                         3 |       10  |        0  |        0  |       10  | 
##                           |  100.000% |    0.000% |    0.000% |    0.524% | 
##                           |    0.761% |    0.000% |    0.000% |           | 
## --------------------------|-----------|-----------|-----------|-----------|
##              Column Total |     1314  |      177  |      417  |     1908  | 
##                           |   68.868% |    9.277% |   21.855% |           | 
## --------------------------|-----------|-----------|-----------|-----------|
## 
## 
## 
##  Pearson's Chi-squared test
## 
## data:  main_civilwars_ethnic_longitudnal$rebstrength_adam_nsa and main_civilwars_ethnic_longitudnal$coethnic_rebel_pgm_nachiket
## X-squared = 18.469, df = 4, p-value = 0.0009988
## 
##    Cell Contents
## |-------------------------|
## |                   Count |
## |             Row Percent |
## |          Column Percent |
## |-------------------------|
## 
## Total Observations in Table:  1548 
## 
##                       | Coethnicity_DK_Variable 
## Rebel Strength (Adam) |        0  |      0.5  |        1  | Row Total | 
## ----------------------|-----------|-----------|-----------|-----------|
##                     1 |     1036  |      321  |      155  |     1512  | 
##                       |   68.519% |   21.230% |   10.251% |   97.674% | 
##                       |   96.642% |  100.000% |  100.000% |           | 
## ----------------------|-----------|-----------|-----------|-----------|
##                     2 |       26  |        0  |        0  |       26  | 
##                       |  100.000% |    0.000% |    0.000% |    1.680% | 
##                       |    2.425% |    0.000% |    0.000% |           | 
## ----------------------|-----------|-----------|-----------|-----------|
##                     3 |       10  |        0  |        0  |       10  | 
##                       |  100.000% |    0.000% |    0.000% |    0.646% | 
##                       |    0.933% |    0.000% |    0.000% |           | 
## ----------------------|-----------|-----------|-----------|-----------|
##          Column Total |     1072  |      321  |      155  |     1548  | 
##                       |   69.251% |   20.736% |   10.013% |           | 
## ----------------------|-----------|-----------|-----------|-----------|
## 
## 
## 
##  Pearson's Chi-squared test
## 
## data:  main_civilwars_ethnic_longitudnal$rebstrength_adam_nsa and main_civilwars_ethnic_longitudnal$coethnic_rebel_pgm_dk
## X-squared = 16.366, df = 4, p-value = 0.002566

1.6 Basic Crosstabs on State Strength and Rebel Strength (Adam NSA and Nachiket Scaled)

## 
##    Cell Contents
## |-------------------------|
## |                   Count |
## |             Row Percent |
## |          Column Percent |
## |-------------------------|
## 
## Total Observations in Table:  1908 
## 
##                | Reb Strength ADAM NSA 
## State Strength |        1  |        2  |        3  | Row Total | 
## ---------------|-----------|-----------|-----------|-----------|
##              1 |      312  |       30  |       10  |      352  | 
##                |   88.636% |    8.523% |    2.841% |   18.449% | 
##                |   16.702% |  100.000% |  100.000% |           | 
## ---------------|-----------|-----------|-----------|-----------|
##              2 |      461  |        0  |        0  |      461  | 
##                |  100.000% |    0.000% |    0.000% |   24.161% | 
##                |   24.679% |    0.000% |    0.000% |           | 
## ---------------|-----------|-----------|-----------|-----------|
##              3 |      702  |        0  |        0  |      702  | 
##                |  100.000% |    0.000% |    0.000% |   36.792% | 
##                |   37.580% |    0.000% |    0.000% |           | 
## ---------------|-----------|-----------|-----------|-----------|
##              4 |      135  |        0  |        0  |      135  | 
##                |  100.000% |    0.000% |    0.000% |    7.075% | 
##                |    7.227% |    0.000% |    0.000% |           | 
## ---------------|-----------|-----------|-----------|-----------|
##              5 |      258  |        0  |        0  |      258  | 
##                |  100.000% |    0.000% |    0.000% |   13.522% | 
##                |   13.812% |    0.000% |    0.000% |           | 
## ---------------|-----------|-----------|-----------|-----------|
##   Column Total |     1868  |       30  |       10  |     1908  | 
##                |   97.904% |    1.572% |    0.524% |           | 
## ---------------|-----------|-----------|-----------|-----------|
## 
## 
## 
##  Pearson's Chi-squared test
## 
## data:  main_civilwars_ethnic_longitudnal$state_strength and main_civilwars_ethnic_longitudnal$rebstrength_adam_nsa
## X-squared = 180.6, df = 8, p-value < 2.2e-16
## 
##    Cell Contents
## |-------------------------|
## |                   Count |
## |             Row Percent |
## |          Column Percent |
## |-------------------------|
## 
## Total Observations in Table:  2051 
## 
##                | Rebel Strength Nachiket Scaled 
## State Strength |        1  |        2  |        3  |        4  |        5  | Row Total | 
## ---------------|-----------|-----------|-----------|-----------|-----------|-----------|
##              1 |      103  |      160  |      133  |        7  |       20  |      423  | 
##                |   24.350% |   37.825% |   31.442% |    1.655% |    4.728% |   20.624% | 
##                |    6.803% |   72.072% |   46.667% |  100.000% |   86.957% |           | 
## ---------------|-----------|-----------|-----------|-----------|-----------|-----------|
##              2 |      318  |       19  |      124  |        0  |        0  |      461  | 
##                |   68.980% |    4.121% |   26.898% |    0.000% |    0.000% |   22.477% | 
##                |   21.004% |    8.559% |   43.509% |    0.000% |    0.000% |           | 
## ---------------|-----------|-----------|-----------|-----------|-----------|-----------|
##              3 |      643  |       43  |       28  |        0  |        3  |      717  | 
##                |   89.679% |    5.997% |    3.905% |    0.000% |    0.418% |   34.959% | 
##                |   42.470% |   19.369% |    9.825% |    0.000% |   13.043% |           | 
## ---------------|-----------|-----------|-----------|-----------|-----------|-----------|
##              4 |      135  |        0  |        0  |        0  |        0  |      135  | 
##                |  100.000% |    0.000% |    0.000% |    0.000% |    0.000% |    6.582% | 
##                |    8.917% |    0.000% |    0.000% |    0.000% |    0.000% |           | 
## ---------------|-----------|-----------|-----------|-----------|-----------|-----------|
##              5 |      315  |        0  |        0  |        0  |        0  |      315  | 
##                |  100.000% |    0.000% |    0.000% |    0.000% |    0.000% |   15.358% | 
##                |   20.806% |    0.000% |    0.000% |    0.000% |    0.000% |           | 
## ---------------|-----------|-----------|-----------|-----------|-----------|-----------|
##   Column Total |     1514  |      222  |      285  |        7  |       23  |     2051  | 
##                |   73.818% |   10.824% |   13.896% |    0.341% |    1.121% |           | 
## ---------------|-----------|-----------|-----------|-----------|-----------|-----------|
## 
## 
## 
##  Pearson's Chi-squared test
## 
## data:  main_civilwars_ethnic_longitudnal$state_strength and main_civilwars_ethnic_longitudnal$rebel_strength_nachiket_scaled
## X-squared = 929.33, df = 16, p-value < 2.2e-16

1.7 Basic crosstabs on Outcome Binary DK and Coethnicity Nachiket/DK

## 
##    Cell Contents
## |-------------------------|
## |                   Count |
## |             Row Percent |
## |          Column Percent |
## |-------------------------|
## 
## Total Observations in Table:  1627 
## 
##              | Coethnic Nachiket 
##      Outcome |        0  |        1  | Row Total | 
## -------------|-----------|-----------|-----------|
##            0 |      469  |      367  |      836  | 
##              |   56.100% |   43.900% |   51.383% | 
##              |   40.889% |   76.458% |           | 
## -------------|-----------|-----------|-----------|
##            1 |      678  |      113  |      791  | 
##              |   85.714% |   14.286% |   48.617% | 
##              |   59.111% |   23.542% |           | 
## -------------|-----------|-----------|-----------|
## Column Total |     1147  |      480  |     1627  | 
##              |   70.498% |   29.502% |           | 
## -------------|-----------|-----------|-----------|
## 
## 
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  main_civilwars_ethnic_longitudnal$outcome_binary_rebel_victory_kaur and main_civilwars_ethnic_longitudnal$coethnic_rebel_pgm_nachiket_binary
## X-squared = 169.96, df = 1, p-value < 2.2e-16
## 
##    Cell Contents
## |-------------------------|
## |                   Count |
## |             Row Percent |
## |          Column Percent |
## |-------------------------|
## 
## Total Observations in Table:  1383 
## 
##              | Coethnic (DK) 
##      Outcome |        0  |      0.5  |        1  | Row Total | 
## -------------|-----------|-----------|-----------|-----------|
##            0 |      359  |      182  |       90  |      631  | 
##              |   56.894% |   28.843% |   14.263% |   45.625% | 
##              |   35.127% |   80.889% |   66.176% |           | 
## -------------|-----------|-----------|-----------|-----------|
##            1 |      663  |       43  |       46  |      752  | 
##              |   88.165% |    5.718% |    6.117% |   54.375% | 
##              |   64.873% |   19.111% |   33.824% |           | 
## -------------|-----------|-----------|-----------|-----------|
## Column Total |     1022  |      225  |      136  |     1383  | 
##              |   73.897% |   16.269% |    9.834% |           | 
## -------------|-----------|-----------|-----------|-----------|
## 
## 
## 
##  Pearson's Chi-squared test
## 
## data:  main_civilwars_ethnic_longitudnal$state_strength and main_civilwars_ethnic_longitudnal$coethnic_rebel_pgm_dk
## X-squared = 410.17, df = 8, p-value < 2.2e-16

2 Regressions

2.1 Regression for co_ethnicity_nachiket as DV

2.1.1 Bivariate Model 1: Coethnic Binary and Country Fixed Effects

##                          model_coethnic_bivariate1
## Dependent Var.: coethnic_rebel_pgm_nachiket_binary
##                                                   
## Level_of_Threat                   -0.2428 (0.1494)
## Fixed-Effects:      ------------------------------
## government                                     Yes
## _______________     ______________________________
## S.E.: Clustered                     by: government
## Observations                                 2,051
## R2                                         0.57325
## Within R2                                  0.03335
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Interpretation: In this bivariate model Level of threat seems to significantly impact the DV. A unit increase in the level of threat reduces the probability of co-ethnicity between rebel groups and PGM by almost 39% (p < 0.001). This model accounts for 58% of the variation with Government fixed effects and SE clustered at the level of government.

2.1.2 Bivariate Model 2: Coethnic Binary and Conflict Fixed Effects

##                          model_coethnic_bivariate2
## Dependent Var.: coethnic_rebel_pgm_nachiket_binary
##                                                   
## Level_of_Threat                 -0.4663** (0.1534)
## Fixed-Effects:      ------------------------------
## ucdp_conflictid                                Yes
## _______________     ______________________________
## S.E.: Clustered                     by: government
## Observations                                 2,025
## R2                                         0.60817
## Within R2                                  0.06771
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Interpretation: In this bivariate model Level of threat seems to significantly impact the DV. A unit increase in the level of threat reduces the probability of co-ethnicity between rebel groups and PGM by almost 48% (p < 0.001). This model accounts for 60% of the variation in coethnicity variable with Conflict fixed effects and SE clustered at the level of government.

2.1.3 Bivariate Model 3: Coethnic Non Binary and Government Fixed Effects

##                   model_coethnic_bivariate3
## Dependent Var.: coethnic_rebel_pgm_nachiket
##                                            
## Level_of_Threat            -0.1839 (0.1378)
## Fixed-Effects:  ---------------------------
## government                              Yes
## _______________ ___________________________
## S.E.: Clustered              by: government
## Observations                          2,051
## R2                                  0.53593
## Within R2                           0.02196
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Interpretation: In this bivariate model Level of threat seems to impact the DV but not at the conventional 5% level but instead at the 10% level. A unit increase in the level of threat reduces the probability of co-ethnicity between rebel groups and PGM by almost 29.5% (p < 0.1). This model accounts for 53.86% of the variation in coethnicity variable with government fixed effects and SE clustered at the level of government.

2.1.4 Bivariate Model 4: Coethnic Non Binary and conflict Fixed Effects

##                   model_coethnic_bivariate4
## Dependent Var.: coethnic_rebel_pgm_nachiket
##                                            
## Level_of_Threat            -0.3532 (0.2118)
## Fixed-Effects:  ---------------------------
## ucdp_conflictid                         Yes
## _______________ ___________________________
## S.E.: Clustered              by: government
## Observations                          2,025
## R2                                  0.55952
## Within R2                           0.04369
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Interpretation: In this bivariate model Level of threat seems to impact the DV but not at the conventional 5% level but instead at the 10% level. A unit increase in the level of threat reduces the probability of co-ethnicity between rebel groups and PGM by almost 36.25% (p < 0.1). This model accounts for 55.65% of the variation in co-ethnicity variable with conflict fixed effects and SE clustered at the level of government.

2.1.5 First Model

Simple Linear Model with no fixed effects

##                                      model_coethnicity_nachiket_1
## Dependent Var.:                coethnic_rebel_pgm_nachiket_binary
##                                                                  
## Constant                                      -0.3047*** (0.0786)
## polity2                                        0.0285*** (0.0024)
## Level_of_Threat                                0.4559*** (0.0278)
## state_strength                                 0.0702*** (0.0145)
## rebel_strength_nachiket_scaled                -0.3429*** (0.0229)
## duration_year                                  0.0096*** (0.0008)
## ethpol                                           0.1127. (0.0633)
## ______________________________     ______________________________
## S.E. type                                                     IID
## Observations                                                1,995
## R2                                                        0.27640
## Adj. R2                                                   0.27421
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Interpretation: Polity2 significantly influences this probability, with each unit increase in the polity score associated with a 2.91% rise in the likelihood of coethnicity (p < 0.001). Similarly, the Level of Threat has a substantial impact, increasing the probability by 44.80% (p < 0.001), suggesting that higher threats drive closer ethnic alignments. On the other hand, State Strength positively contributes to this dynamic, with a stronger state correlating to an 6.78% increase in coethnic alignment (p < 0.001). In contrast, Rebel Strength plays a divergent role, where more robust rebel groups are 34.07% less likely to align ethnically with government programs (p < 0.001). Finally, the Duration of Conflict shows a modest but significant effect, with each additional year of conflict leading to a .95% increase in the probability of coethnic alignment (p < 0.001). These results underscore the significant and nuanced influences of political, military, and conflict duration factors on the ethnic dynamics of rebel groups in relation to government programs.

2.1.6 Second Model

Simple Model with Interaction Term Removing level of threat because interaction term is there (for synergistic effect)

##                                                       model_coethnicity_nachiket_2
## Dependent Var.:                                 coethnic_rebel_pgm_nachiket_binary
##                                                                                   
## Constant                                                        0.2750*** (0.0750)
## polity2                                                         0.0426*** (0.0024)
## state_strength                                                    0.0475* (0.0230)
## rebel_strength_nachiket_scaled                                  0.1127*** (0.0317)
## duration_year                                                   0.0069*** (0.0008)
## ethpol                                                             0.0943 (0.0669)
## state_strength x rebel_strength_nachiket_scaled                -0.1100*** (0.0168)
## ________________________________________            ______________________________
## S.E. type                                                                      IID
## Observations                                                                 1,995
## R2                                                                         0.19618
## Adj. R2                                                                    0.19375
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

In the regression model Polity2 has a strong positive effect, with each unit increase leading to a 4.15% increase in the probability of coethnic alignment (p < 0.001). State Strength also plays a significant role, increasing the likelihood by 5.39% (p < 0.05). Interestingly, Rebel Strength is positively associated with coethnic alignment as well, contributing to a 12.55% rise in probability (p < 0.001). However, the interaction between State Strength and Rebel Strength has a negative effect, reducing the probability by 11.25% (p < 0.001), indicating that stronger states and stronger rebels may not align ethnically as much. The Duration of Conflict also has a small yet significant effect, with each additional year of conflict leading to a 0.74% increase in the likelihood of coethnic alignment (p < 0.001). These findings highlight the complex interplay between political, military, and conflict-related factors in shaping ethnic alignments within rebel groups and government programs.

2.1.7 Third Model

Fixed Effects Ordinary Least Square Models with Clustered errors at the Country/government level

##                                      model_coethnicity_nachiket_3
## Dependent Var.:                coethnic_rebel_pgm_nachiket_binary
##                                                                  
## polity2                                         0.0707** (0.0208)
## Level_of_Threat                               -0.4659*** (0.0695)
## state_strength                                -0.3903*** (0.0942)
## rebel_strength_nachiket_scaled                   -0.1241 (0.1074)
## duration_year                                     0.0069 (0.0101)
## Fixed-Effects:                     ------------------------------
## government                                                    Yes
## ______________________________     ______________________________
## S.E.: Clustered                                    by: government
## Observations                                                1,995
## R2                                                        0.58832
## Within R2                                                 0.06954
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Polity2 stands out with a significant positive impact on coethnic alignment. For every unit increase in Polity2, the likelihood of coethnic alignment rises by 5.30% (p < 0.01). On the flip side, both the Level of Threat and State Strength have substantial negative effects: the Level of Threat reduces the probability of coethnic alignment by a striking 51.94% (p < 0.001), while State Strength decreases it by 27.22% (p < 0.001). Rebel Strength doesn’t show a significant impact (p = 0.1321), and the Duration of Conflict contributes a small positive effect, raising the probability of coethnic alignment by 0.7% per year (p = 0.0103). The model incorporates fixed effects for government and clusters standard errors by government. It explains 58% of the variance in coethnic alignment. Overall, the findings reveal that democratic governance fosters coethnic alignment, while higher threats and stronger states tend to inhibit it, reflecting the complex dynamics between political and security factors in conflict situations.

2.1.7.1 2.1.3.1 (Non Binary) Coethnicity with Government fixed effects

##                                model_coethnicity_nachi..31
## Dependent Var.:                coethnic_rebel_pgm_nachiket
##                                                           
## Level_of_Threat                        -0.4319*** (0.0470)
## polity2                                 0.0732*** (0.0145)
## state_strength                         -0.4193*** (0.0592)
## rebel_strength_nachiket_scaled            -0.1223 (0.1090)
## duration_year                              0.0064 (0.0069)
## Fixed-Effects:                 ---------------------------
## government                                             Yes
## ______________________________ ___________________________
## S.E.: Clustered                             by: government
## Observations                                         1,995
## R2                                                 0.55324
## Within R2                                          0.06550
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

2.1.7.2 2.1.3.2 (Non Binary) Coethnicity with conflic level fixed effects

##                                model_coethnicity_nachi..32
## Dependent Var.:                coethnic_rebel_pgm_nachiket
##                                                           
## polity2                                    0.0482 (0.0583)
## Level_of_Threat                        -0.4581*** (0.0210)
## state_strength                         -0.3527*** (0.0670)
## rebel_strength_nachiket_scaled            -0.0998 (0.1134)
## duration_year                             -0.0019 (0.0042)
## Fixed-Effects:                 ---------------------------
## ucdp_conflictid                                        Yes
## ______________________________ ___________________________
## S.E.: Clustered                             by: government
## Observations                                         1,972
## R2                                                 0.56484
## Within R2                                          0.06051
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

2.1.7.3 2.1.3.3 Third Model (Binary) with Conflict fixed effects

##                                     model_coethnicity_nachiket_33
## Dependent Var.:                coethnic_rebel_pgm_nachiket_binary
##                                                                  
## polity2                                           0.0633 (0.0549)
## Level_of_Threat                               -0.5261*** (0.0257)
## state_strength                                 -0.2339** (0.0650)
## rebel_strength_nachiket_scaled                   -0.0566 (0.1004)
## duration_year                                    -0.0041 (0.0038)
## Fixed-Effects:                     ------------------------------
## ucdp_conflictid                                               Yes
## ______________________________     ______________________________
## S.E.: Clustered                                    by: government
## Observations                                                1,972
## R2                                                        0.61116
## Within R2                                                 0.07461
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

2.1.8 Fourth Model

Same as the Second model but with FE and clustered errors: Interaction term Level of threat removed because we wish to capture the synergistic effects of interaction term

##                                                       model_coethnicity_nachiket_4
## Dependent Var.:                                 coethnic_rebel_pgm_nachiket_binary
##                                                                                   
## polity2                                                          -0.0241* (0.0114)
## state_strength                                                  0.6534*** (0.0845)
## rebel_strength_nachiket_scaled                                     0.1998 (0.1389)
## duration_year                                                      0.0145 (0.0091)
## state_strength x rebel_strength_nachiket_scaled                -0.3613*** (0.0546)
## Fixed-Effects:                                      ------------------------------
## government                                                                     Yes
## ________________________________________            ______________________________
## S.E.: Clustered                                                     by: government
## Observations                                                                 1,995
## R2                                                                         0.58811
## Within R2                                                                  0.06906
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Interpretation: The significant coefficients reveal some interesting dynamics. State Strength has a strong positive effect, increasing the probability of coethnic alignment by 70.37% (p < 0.001). The interaction between State Strength and Rebel Strength also significantly affects coethnic alignment, but in a negative direction, reducing the probability by 35.41% (p < 0.001).

In terms of non-significant effects, Polity2 shows a minor negative impact on coethnic alignment , and Rebel Strength contributes positively but is not statistically significant . Duration of Conflict has a modest positive effect, increasing the likelihood of alignment by 1.70% per additional year, though this is on the border of significance. The model includes fixed effects for government and clusters standard errors by government, explaining 57.77% of the variance in coethnic alignment.

2.1.8.1 2.1.4.1 Coethnicity non-binary, government fixed effects

##                                                 model_coethnicity_nachi..41
## Dependent Var.:                                 coethnic_rebel_pgm_nachiket
##                                                                            
## polity2                                                    -0.0080 (0.0102)
## state_strength                                           0.4223*** (0.1056)
## rebel_strength_nachiket_scaled                              0.1068 (0.0791)
## duration_year                                              0.0123. (0.0061)
## state_strength x rebel_strength_nachiket_scaled         -0.2632*** (0.0693)
## Fixed-Effects:                                  ---------------------------
## government                                                              Yes
## ________________________________________        ___________________________
## S.E.: Clustered                                              by: government
## Observations                                                          1,995
## R2                                                                  0.54681
## Within R2                                                           0.05204
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

2.1.8.2 2.1.4.2 Coethnicity non-binary, conflict level fixed effects

##                                                 model_coethnicity_nachi..42
## Dependent Var.:                                 coethnic_rebel_pgm_nachiket
##                                                                            
## polity2                                                     0.0087 (0.0643)
## state_strength                                           0.2945*** (0.0624)
## rebel_strength_nachiket_scaled                              0.0538 (0.0888)
## duration_year                                               0.0010 (0.0054)
## state_strength x rebel_strength_nachiket_scaled          -0.2280** (0.0747)
## Fixed-Effects:                                  ---------------------------
## ucdp_conflictid                                                         Yes
## ________________________________________        ___________________________
## S.E.: Clustered                                              by: government
## Observations                                                          1,972
## R2                                                                  0.55405
## Within R2                                                           0.03723
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

2.1.8.3 2.1.4.3 Coethnicity binary, conflict fixed effects

##                                                      model_coethnicity_nachiket_43
## Dependent Var.:                                 coethnic_rebel_pgm_nachiket_binary
##                                                                                   
## polity2                                                            0.0180 (0.0635)
## state_strength                                                  0.5542*** (0.0571)
## rebel_strength_nachiket_scaled                                    0.1473. (0.0858)
## duration_year                                                     -0.0001 (0.0052)
## state_strength x rebel_strength_nachiket_scaled                -0.2906*** (0.0705)
## Fixed-Effects:                                      ------------------------------
## ucdp_conflictid                                                                Yes
## ________________________________________            ______________________________
## S.E.: Clustered                                                     by: government
## Observations                                                                 1,972
## R2                                                                         0.60140
## Within R2                                                                  0.05137
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

2.1.9 Fifth Model

Additional Controls FEOLS Adding Three Variables and Removing State Strength due to possibility of Multicollinearity adn adding outcome binary

##                                         model_coethnicity_nachiket_5
## Dependent Var.:                   coethnic_rebel_pgm_nachiket_binary
##                                                                     
## polity2                                            -0.0509* (0.0212)
## gdpcapita_imputed_entire                           -0.3985. (0.2149)
## lmilper_imputed_entire                              -0.0967 (0.2427)
## ltroopratio_imputed_entire                           0.1938 (0.1201)
## rebel_strength_nachiket_scaled                       0.0828 (0.1611)
## duration_year                                       -0.0022 (0.0042)
## outcome_binary_rebel_victory_kaur                  -0.4763* (0.1939)
## Fixed-Effects:                        ------------------------------
## government                                                       Yes
## _________________________________     ______________________________
## S.E.: Clustered                                       by: government
## Observations                                                   1,562
## R2                                                           0.75286
## Within R2                                                    0.02602
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Interpretation: In this regression model for coethnic alignment, the significant coefficients highlight key factors affecting alignment. Polity2 has a notable negative effect, with each unit increase leading to a 5.09% reduction in the probability of coethnic alignment (p < 0.05). Additionally, the outcome of rebel victory has a significant negative impact, reducing the probability of coethnic alignment by 47.60% (p < 0.05). This could mean morelikely to win in those cases with no coethnic alignment

Non-significant coefficients include GDPCapita, LMILPER, and LtroopRatio, which do not show strong evidence of affecting alignment. Rebel Strength and Duration of Conflict also lack statistical significance in this model.

The model includes fixed effects for government and clusters standard errors by government, with an R² of 75.29%, indicating a high level of explanatory power for coethnic alignment.

2.2 Regression for Coethnicity DK as DV

2.2.1 First Model

Simple Linear Model with no fixed effects

##                                model_coethnicity_..1
## Dependent Var.:                coethnic_rebel_pgm_dk
##                                                     
## Constant                           -0.1413* (0.0628)
## polity2                           0.0156*** (0.0020)
## Level_of_Threat                   0.2732*** (0.0221)
## state_strength                     0.0306** (0.0115)
## rebel_strength_nachiket_scaled   -0.1718*** (0.0181)
## duration_year                     0.0077*** (0.0008)
## ethpol                              -0.0860 (0.0550)
## ______________________________ _____________________
## S.E. type                                        IID
## Observations                                   1,637
## R2                                           0.17614
## Adj. R2                                      0.17311
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Interpretation: In this regression model for coethnic alignment, several significant factors stand out. Polity2 has a positive effect, with each unit increase leading to a 1.60% increase in the probability of coethnic alignment (p < 0.001). The Level of Threat also significantly enhances alignment, increasing the probability by 26.66% (p < 0.001). State Strength contributes positively as well, raising the probability of coethnic alignment by 2.88% (p < 0.001).

Rebel Strength, on the other hand, shows a significant negative effect, reducing the likelihood of coethnic alignment by 16.70% (p < 0.001). The Duration of Conflict also has a positive and significant impact, increasing alignment probability by 0.89% per additional year (p < 0.001). Ethnic Polarization (EthPol) significantly decreases alignment by 16.33% (p < 0.01).

The model uses IID standard errors, with an R² of 17.54%, suggesting that while these factors explain some variance in coethnic alignment, a significant portion remains unexplained.

2.2.2 Second Model

Simple Model with Interaction Term Removing level of threat because interaction term is there (for synergistic effect)

##                                                 model_coethnicity_..2
## Dependent Var.:                                 coethnic_rebel_pgm_dk
##                                                                      
## Constant                                           0.2246*** (0.0592)
## polity2                                            0.0236*** (0.0020)
## state_strength                                        0.0076 (0.0180)
## rebel_strength_nachiket_scaled                     0.0833*** (0.0250)
## duration_year                                      0.0058*** (0.0008)
## ethpol                                               -0.0678 (0.0574)
## state_strength x rebel_strength_nachiket_scaled   -0.0582*** (0.0131)
## ________________________________________        _____________________
## S.E. type                                                         IID
## Observations                                                    1,637
## R2                                                            0.10980
## Adj. R2                                                       0.10653
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Interpretation: In this regression model for coethnic alignment, several key factors have significant effects. Polity2 positively influences alignment, with each unit increase leading to a 2.38% increase in the probability (p < 0.001). Rebel Strength also contributes positively, increasing the probability of coethnic alignment by 8.30% (p < 0.001). The Duration of Conflict similarly has a positive effect, raising alignment probability by 0.58% per additional year (p < 0.001).

The interaction between State Strength and Rebel Strength is significantly negative, reducing the probability of coethnic alignment by 5.86% (p < 0.001), suggesting that while both factors individually boost alignment, their combined effect is detrimental. Ethnic Polarization (EthPol) has a significant negative impact, decreasing alignment by 6.66% (p < 0.05).

The model uses IID standard errors, with an R² of 11.26%, indicating that while some factors are significant, the model explains a relatively modest portion of the variance in coethnic alignment.

2.2.3 Third Model

Fixed Effects Ordinary Least Square Models with Clustered errors at the Country/government level

##                                model_coethnicity_..3
## Dependent Var.:                coethnic_rebel_pgm_dk
##                                                     
## polity2                             0.0786* (0.0344)
## Level_of_Threat                  -0.4544*** (0.0872)
## state_strength                   -0.5151*** (0.1153)
## rebel_strength_nachiket_scaled      -0.1262 (0.1259)
## duration_year                        0.0062 (0.0090)
## Fixed-Effects:                 ---------------------
## government                                       Yes
## ______________________________ _____________________
## S.E.: Clustered                       by: government
## Observations                                   1,637
## R2                                           0.56092
## Within R2                                    0.11093
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Interpretation: In this regression model for coethnic alignment, several factors show significant effects. Polity2 has a positive impact, with each unit increase leading to a 7.71% increase in the probability of coethnic alignment (p < 0.05). The Level of Threat significantly reduces alignment, decreasing the probability by 46.71% (p < 0.001). Similarly, State Strength also has a substantial negative effect, reducing alignment by 50.84% (p < 0.001).

Non-significant coefficients include Rebel Strength and Duration of Conflict, which do not show strong evidence of impacting coethnic alignment.

The model includes fixed effects for government and clusters standard errors by government. With an R² of 54.81%, it captures a substantial portion of the variance in coethnic alignment.

2.2.4 Fourth Model

Same as the Second model but with FE and clustered errors Level of threat removed because we wish to capture the synergistic effects of interaction term

##                                                 model_coethnicity_..4
## Dependent Var.:                                 coethnic_rebel_pgm_dk
##                                                                      
## polity2                                               0.0056 (0.0294)
## state_strength                                        0.1765 (0.2270)
## rebel_strength_nachiket_scaled                        0.0135 (0.0477)
## duration_year                                         0.0123 (0.0083)
## state_strength x rebel_strength_nachiket_scaled      -0.1706 (0.1254)
## Fixed-Effects:                                  ---------------------
## government                                                        Yes
## ________________________________________        _____________________
## S.E.: Clustered                                        by: government
## Observations                                                    1,637
## R2                                                            0.53674
## Within R2                                                     0.06197
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

In this regression model for coethnic alignment, none of the coefficients are statistically significant. Polity2, State Strength, Rebel Strength, and Duration of Conflict all show effects that are not significant, indicating that these variables do not have a reliable impact on coethnic alignment in this model. The interaction term between State Strength and Rebel Strength is also not significant.

The model includes fixed effects for government and clusters standard errors by government. With an R² of 52.38%, the model accounts for a substantial portion of the variance in coethnic alignment, but the lack of significant predictors suggests that the factors included may not be strongly influencing alignment in this specific setup.

2.2.5 Fifth Model

Additional Controls FEOLS

Adding Three Variables and Removing State Strength due to possibility of Multicollinearity and adding outcome binary

##                                   model_coethnicity_..5
## Dependent Var.:                   coethnic_rebel_pgm_dk
##                                                        
## polity2                              -0.1350** (0.0443)
## gdpcapita_imputed_entire               -1.059. (0.5318)
## lmilper_imputed_entire                  0.2221 (0.4565)
## ltroopratio_imputed_entire             0.4193. (0.2235)
## rebel_strength_nachiket_scaled          0.4906 (0.3835)
## duration_year                          -0.0066 (0.0056)
## outcome_binary_rebel_victory_kaur      -1.258* (0.4613)
## Fixed-Effects:                    ---------------------
## government                                          Yes
## _________________________________ _____________________
## S.E.: Clustered                          by: government
## Observations                                      1,335
## R2                                              0.67378
## Within R2                                       0.11927
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Interpretation: In this regression model analyzing coethnic alignment, several significant findings emerge. Polity2 exhibits a negative effect, where each unit increase, decreases the probability of coethnic alignment by 13.50% (p < 0.01). Similarly, the outcome of rebel victory has a notable negative impact, reducing the likelihood of coethnic alignment by 125.56% (p < 0.05). This suggests that higher levels of democratization and successful rebel victories are associated with diminished coethnic alignment.

On the other hand, the coefficients for GDPCapita, LMILPER, LtroopRatio, Rebel Strength, and Duration of Conflict do not show statistically significant effects on coethnic alignment in this model.

The analysis incorporates fixed effects for government and clusters standard errors by government, providing robust estimates. The model explains 67.38% of the variance in coethnic alignment, highlighting its substantial explanatory power in understanding the dynamics of ethnic alignment within rebel groups and government programs.

2.3 Regression for Outcome DK binary (DK Rebel Victory Binary) as DV

2.3.1 First Model

Simple Linear Model with no fixed effects (Coethnicity Nachiket as BINARY)

##                                            model_outcome_binary_dk_1
## Dependent Var.:                    outcome_binary_rebel_victory_kaur
##                                                                     
## Constant                                          -1.066*** (0.0803)
## coethnic_rebel_pgm_nachiket_binary               -0.2090*** (0.0259)
## Level_of_Threat                                   0.4500*** (0.0350)
## polity2                                          -0.0763*** (0.0025)
## state_strength                                    0.3761*** (0.0148)
## rebel_strength_nachiket_scaled                   -0.0981*** (0.0261)
## duration_year                                    -0.0098*** (0.0014)
## ethpol                                             0.2015** (0.0648)
## __________________________________    ______________________________
## S.E. type                                                        IID
## Observations                                                   1,562
## R2                                                           0.48056
## Adj. R2                                                      0.47822
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

In this model examining the outcome of rebel victory, several factors show significant effects. The constant term is negative, indicating that, in the absence of other variables, the baseline probability of rebel victory is low (p < 0.001). Coethnic alignment with the rebel group significantly reduces the probability of rebel victory by 20.80% (p < 0.001).

Level of Threat has a positive and significant impact, increasing the likelihood of rebel victory by 44.78% (p < 0.001). State Strength also significantly affects the outcome, raising the probability of victory by 37.60% (p < 0.001). Polity2, however, decreases the probability of rebel victory by 7.65% (p < 0.001). Rebel Strength contributes negatively, reducing the chance of victory by 9.65% (p < 0.001). Additionally, each year of conflict slightly decreases the probability of victory by 0.98% (p < 0.001). Ethnic Polarization (EthPol) has a positive effect, increasing the likelihood of victory by 20.84% (p < 0.01).

The model uses IID standard errors, with an R² of 48.05%, demonstrating a moderate explanatory power in predicting the likelihood of rebel victory.

2.3.1.1 Logit

##                                          model_outcome_binary_dk_1_1
## Dependent Var.:                    outcome_binary_rebel_victory_kaur
##                                                                     
## Constant                                           -14.58*** (1.128)
## coethnic_rebel_pgm_nachiket_binary                -1.331*** (0.1996)
## Level_of_Threat                                    3.891*** (0.3712)
## polity2                                          -0.5707*** (0.0345)
## state_strength                                     3.315*** (0.2403)
## rebel_strength_nachiket_scaled                    -0.6485** (0.2235)
## duration_year                                    -0.0709*** (0.0111)
## ethpol                                               1.264* (0.5669)
## __________________________________    ______________________________
## S.E. type                                                        IID
## Observations                                                   1,562
## Squared Cor.                                                 0.51135
## Pseudo R2                                                    0.43708
## BIC                                                          1,277.7
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

2.3.2 Second Model

Simple Linear Model with no fixed effects (Coethnicity Nachiket as NON BINARY)

##                                        model_outcome_binary_dk_2
## Dependent Var.:                outcome_binary_rebel_victory_kaur
##                                                                 
## Constant                                      -1.069*** (0.0819)
## coethnic_rebel_pgm_nachiket                  -0.1935*** (0.0293)
## Level_of_Threat                               0.4140*** (0.0343)
## polity2                                      -0.0768*** (0.0025)
## state_strength                                0.3784*** (0.0151)
## rebel_strength_nachiket_scaled                -0.0710** (0.0255)
## duration_year                                -0.0108*** (0.0014)
## ethpol                                        0.2362*** (0.0654)
## ______________________________    ______________________________
## S.E. type                                                    IID
## Observations                                               1,562
## R2                                                       0.47363
## Adj. R2                                                  0.47125
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

In this model analyzing the likelihood of rebel victory, several key variables show significant effects. The constant term is significantly negative, indicating that the baseline probability of rebel victory is low (p < 0.001). Coethnic alignment with the rebel group significantly decreases the probability of victory by 19.01% (p < 0.001).

Level of Threat significantly enhances the likelihood of rebel victory, increasing it by 40.41% (p < 0.001). State Strength similarly contributes positively, raising the probability of victory by 37.71% (p < 0.001). Polity2 has a negative effect, reducing the probability of rebel victory by 7.69% (p < 0.001). Rebel Strength also has a significant negative impact, decreasing the likelihood of victory by 6.39% (p < 0.01). Each additional year of conflict slightly decreases the probability of victory by 1.10% (p < 0.001). Ethnic Polarization (EthPol) has a positive effect, increasing the likelihood of victory by 23.50% (p < 0.001).

The model employs IID standard errors, with an R² of 47.33%, indicating a moderate level of explanatory power in predicting rebel victory outcomes.

2.3.2.1 Logit

##                                      model_outcome_binary_dk_2_1
## Dependent Var.:                outcome_binary_rebel_victory_kaur
##                                                                 
## Constant                                       -14.21*** (1.095)
## coethnic_rebel_pgm_nachiket                   -1.133*** (0.2181)
## Level_of_Threat                                3.676*** (0.3612)
## polity2                                      -0.5657*** (0.0337)
## state_strength                                 3.250*** (0.2340)
## rebel_strength_nachiket_scaled                 -0.5331* (0.2187)
## duration_year                                -0.0736*** (0.0110)
## ethpol                                           1.200* (0.5641)
## ______________________________    ______________________________
## S.E. type                                                    IID
## Observations                                               1,562
## Squared Cor.                                             0.49878
## Pseudo R2                                                0.42877
## BIC                                                      1,295.7
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

2.3.3 Third Model

Simple Model with Interaction Term. Removing level of threat because interaction term is there (for synergistic effect). (Coethnicity Nachiket as BINARY)

##                                                         model_outcome_binary_dk_3
## Dependent Var.:                                 outcome_binary_rebel_victory_kaur
##                                                                                  
## Constant                                                          0.0341 (0.0706)
## coethnic_rebel_pgm_nachiket_binary                               -0.0118 (0.0242)
## polity2                                                       -0.0697*** (0.0025)
## state_strength                                                 0.0960*** (0.0209)
## rebel_strength_nachiket_scaled                                  -0.0507. (0.0294)
## duration_year                                                 -0.0190*** (0.0014)
## ethpol                                                            0.0913 (0.0664)
## state_strength x rebel_strength_nachiket_scaled                0.1430*** (0.0157)
## ________________________________________           ______________________________
## S.E. type                                                                     IID
## Observations                                                                1,562
## R2                                                                        0.45444
## Adj. R2                                                                   0.45198
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Interpretation: In this regression model examining the probability of rebel victory, several significant factors emerge. Polity2 has a negative effect, with each unit increase decreasing the likelihood of rebel victory by 7% (p < 0.001). State Strength significantly increases the probability of rebel victory by 9.55% (p < 0.001). Additionally, the interaction between State Strength and Rebel Strength shows a significant positive effect, enhancing the probability of victory by 15.34% (p < 0.001).

The non-significant coefficients include Coethnic Alignment, Rebel Strength, Duration of Conflict, and Ethnic Polarization. The Constant term is not significantly different from zero, and Coethnic Alignment with the rebel group does not significantly impact victory probability.

The model uses IID standard errors and explains 46.68% of the variance in rebel victory, reflecting a moderate level of explanatory power.

2.3.3.1 Logit

##                                                       model_outcome_binary_dk_3_1
## Dependent Var.:                                 outcome_binary_rebel_victory_kaur
##                                                                                  
## Constant                                                           -2.996 (4.885)
## coethnic_rebel_pgm_nachiket_binary                               -0.1171 (0.7031)
## polity2                                                        -0.4173** (0.1415)
## state_strength                                                    0.4577 (0.8063)
## rebel_strength_nachiket_scaled                                    -0.4277 (1.309)
## duration_year                                                    -0.1314 (0.1430)
## ethpol                                                             0.9721 (2.421)
## state_strength x rebel_strength_nachiket_scaled                    1.033 (0.9639)
## ________________________________________           ______________________________
## S.E.: Clustered                                                    by: government
## Observations                                                                1,562
## Squared Cor.                                                              0.47091
## Pseudo R2                                                                 0.39646
## BIC                                                                       1,365.7
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

2.3.4 Fourth Model

Simple Model with Interaction Term. Removing level of threat because interaction term is there (for synergistic effect). (Coethnicity Nachiket as NON-BINARY)

##                                                         model_outcome_binary_dk_4
## Dependent Var.:                                 outcome_binary_rebel_victory_kaur
##                                                                                  
## Constant                                                          0.0369 (0.0711)
## coethnic_rebel_pgm_nachiket                                       0.0102 (0.0280)
## polity2                                                       -0.0706*** (0.0025)
## state_strength                                                 0.0936*** (0.0212)
## rebel_strength_nachiket_scaled                                  -0.0549. (0.0296)
## duration_year                                                 -0.0193*** (0.0014)
## ethpol                                                            0.0909 (0.0665)
## state_strength x rebel_strength_nachiket_scaled                0.1459*** (0.0158)
## ________________________________________           ______________________________
## S.E. type                                                                     IID
## Observations                                                                1,562
## R2                                                                        0.45440
## Adj. R2                                                                   0.45194
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

In this model examining the outcome of rebel victory, several significant findings are evident. Polity2 has a significant negative effect, where each unit increase decreases the probability of rebel victory by 7.08% (p < 0.001). State Strength also significantly contributes to the likelihood of victory, increasing it by 9.28% (p < 0.001). Additionally, the interaction between State Strength and Rebel Strength is positively significant, raising the probability of victory by 15.63% (p < 0.001). Duration is also signidicant with each additional year decreasing the probability of victory by 19.8% (p < 0.0001)

The non-significant variables in this model include Coethnic Alignment, Rebel Strength, and Ethnic Polarization, none of which show a statistically significant impact on the outcome of rebel victory.

The model employs IID standard errors and explains 45.44% of the variance in rebel victory, indicating a moderate level of explanatory power.

2.3.4.1 logit

##                                                       model_outcome_binary_dk_4_1
## Dependent Var.:                                 outcome_binary_rebel_victory_kaur
##                                                                                  
## Constant                                                       -2.883*** (0.6400)
## coethnic_rebel_pgm_nachiket                                       0.1073 (0.2241)
## polity2                                                       -0.4259*** (0.0237)
## state_strength                                                   0.4179* (0.1809)
## rebel_strength_nachiket_scaled                                  -0.4745* (0.2280)
## duration_year                                                 -0.1342*** (0.0135)
## ethpol                                                            0.7979 (0.6389)
## state_strength x rebel_strength_nachiket_scaled                 1.077*** (0.1338)
## ________________________________________           ______________________________
## S.E. type                                                                     IID
## Observations                                                                1,562
## Squared Cor.                                                              0.46912
## Pseudo R2                                                                 0.39640
## BIC                                                                       1,365.8
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

2.3.4.2 Conflict outcome as non-binary

##                                                 model_outcome_b..41
## Dependent Var.:                                             outcome
##                                                                    
## Constant                                        -0.4574*** (0.1271)
## coethnic_rebel_pgm_nachiket                      0.2641*** (0.0448)
## polity2                                         -0.0644*** (0.0045)
## state_strength                                   0.1943*** (0.0395)
## rebel_strength_nachiket_scaled                   0.5342*** (0.0557)
## duration_year                                       0.0014 (0.0015)
## ethpol                                             -0.1374 (0.1146)
## state_strength x rebel_strength_nachiket_scaled     0.0022 (0.0294)
## ________________________________________        ___________________
## S.E. type                                                       IID
## Observations                                                  1,732
## R2                                                          0.25501
## Adj. R2                                                     0.25199
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

2.3.4.3 Conflict outcome as non-binary and Bivariate model + government FE

##                             model_outco..42
## Dependent Var.:                     outcome
##                                            
## coethnic_rebel_pgm_nachiket 0.2860 (0.3161)
## Fixed-Effects:              ---------------
## government                              Yes
## ___________________________ _______________
## S.E.: Clustered              by: government
## Observations                          1,787
## R2                                  0.57000
## Within R2                           0.02399
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

2.3.4.4 Conflict outcome as non-binary and Bivariate model + Conflict fixed effects

##                             model_outco..43
## Dependent Var.:                     outcome
##                                            
## coethnic_rebel_pgm_nachiket 0.3257 (0.3033)
## Fixed-Effects:              ---------------
## ucdp_conflictid                         Yes
## ___________________________ _______________
## S.E.: Clustered              by: government
## Observations                          1,767
## R2                                  0.58076
## Within R2                           0.03096
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

2.3.4.5 Conflict outcome as non-binary and Multivariate model + government fixed effects without interaction terms and level of threat

##                                model_outcome_..44
## Dependent Var.:                           outcome
##                                                  
## coethnic_rebel_pgm_nachiket       0.3109 (0.3377)
## polity2                          0.0813* (0.0361)
## state_strength                 -0.3792** (0.1298)
## rebel_strength_nachiket_scaled   -0.0102 (0.0970)
## duration_year                    -0.0061 (0.0150)
## Fixed-Effects:                 ------------------
## government                                    Yes
## ______________________________ __________________
## S.E.: Clustered                    by: government
## Observations                                1,732
## R2                                        0.59086
## Within R2                                 0.05470
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

2.3.4.6 Conflict outcome as non-binary and Multivariate model + conflict fixed effects without interaction terms and level of threat

##                                model_outcom..45
## Dependent Var.:                         outcome
##                                                
## coethnic_rebel_pgm_nachiket     0.3699 (0.3296)
## polity2                        -0.3623 (0.2910)
## state_strength                  0.5218 (0.3986)
## rebel_strength_nachiket_scaled  0.2095 (0.1994)
## duration_year                   0.0541 (0.0394)
## Fixed-Effects:                 ----------------
## ucdp_conflictid                             Yes
## ______________________________ ________________
## S.E.: Clustered                  by: government
## Observations                              1,712
## R2                                      0.60058
## Within R2                               0.05894
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

2.3.5 Fifth Model

Fixed Effects Ordinary Least Square Models with Clustered errors at the Country/government level. Coethnic Nachiket (BINARY)

##                                            model_outcome_binary_dk_5
## Dependent Var.:                    outcome_binary_rebel_victory_kaur
##                                                                     
## coethnic_rebel_pgm_nachiket_binary                   0.0106 (0.0086)
## polity2                                          -0.1241*** (0.0172)
## Level_of_Threat                                   0.9401*** (0.0822)
## state_strength                                    0.3812*** (0.0955)
## rebel_strength_nachiket_scaled                      0.1873* (0.0683)
## duration_year                                       0.0073. (0.0037)
## Fixed-Effects:                        ------------------------------
## government                                                       Yes
## __________________________________    ______________________________
## S.E.: Clustered                                       by: government
## Observations                                                   1,562
## R2                                                           0.99626
## Within R2                                                    0.96178
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(OVERFITTING) In this regression model for rebel victory, some significant factors are evident. Polity2 shows a strong negative impact, with each unit increase decreasing the probability of rebel victory by 9.04% (p < 0.001). Level of Threat is positively significant, significantly increasing the likelihood of victory by 108.5% (p < 0.001).

The analysis incorporates fixed effects for government and clusters standard errors by government. With an exceptionally high R² of 99.35% and a Within R² of 96.18%, this model explains an extremely high proportion of the variance in rebel victory, reflecting its strong explanatory power.

2.3.5.1 Logit

##                                      model_outcome_binary_dk_5_1
## Dependent Var.:                outcome_binary_rebel_victory_kaur
##                                                                 
## polity2                                     -3.742*** (9.53e-13)
## Level_of_Threat                              29.06*** (6.77e-12)
## rebel_strength_nachiket_scaled               25.07*** (2.63e-12)
## duration_year                               0.2494*** (6.85e-13)
## Fixed-Effects:                    ------------------------------
## government                                                   Yes
## ______________________________    ______________________________
## S.E.: Clustered                                   by: government
## Convergence                                                FALSE
## Observations                                                 546
## Squared Cor.                                                   1
## Pseudo R2                                                 1.0000
## BIC                                                       50.421
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

2.3.5.2 Outcome non binary

##                                    model_outcom..51
## Dependent Var.:                             outcome
##                                                    
## coethnic_rebel_pgm_nachiket_binary  0.4842 (0.3112)
## polity2                             0.0338 (0.0316)
## Level_of_Threat                    0.3426. (0.1783)
## state_strength                     -0.0810 (0.1238)
## rebel_strength_nachiket_scaled      0.0056 (0.0718)
## duration_year                      -0.0069 (0.0179)
## Fixed-Effects:                     ----------------
## government                                      Yes
## __________________________________ ________________
## S.E.: Clustered                      by: government
## Observations                                  1,732
## R2                                          0.60908
## Within R2                                   0.09680
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

2.3.6 Sixth Model

Fixed Effects Ordinary Least Square Models with Clustered errors at the Country/government level. Coethnic Nachiket (NON BINARY)

##                                        model_outcome_binary_dk_6
## Dependent Var.:                outcome_binary_rebel_victory_kaur
##                                                                 
## coethnic_rebel_pgm_nachiket                      0.0111 (0.0088)
## polity2                                      -0.1241*** (0.0172)
## Level_of_Threat                               0.9403*** (0.0823)
## state_strength                                0.3813*** (0.0955)
## rebel_strength_nachiket_scaled                  0.1874* (0.0683)
## duration_year                                   0.0073. (0.0037)
## Fixed-Effects:                    ------------------------------
## government                                                   Yes
## ______________________________    ______________________________
## S.E.: Clustered                                   by: government
## Observations                                               1,562
## R2                                                       0.99626
## Within R2                                                0.96179
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

OVERFITTING

In this model analyzing rebel victory, some variables show significant effects. Polity2 negatively impacts the probability of rebel victory, with each unit increase decreasing the likelihood by 9.04% (p < 0.001). Level of Threat significantly increases the probability of victory by 108.5% (p < 0.001).

The model includes fixed effects for government and clusters standard errors by government. With an R² of 99.35% and a Within R² of 93.39%, the model explains an exceptionally high proportion of the variance in rebel victory, highlighting its strong explanatory power.

2.3.6.1 Logit

##                                      model_outcome_binary_dk_6_1
## Dependent Var.:                outcome_binary_rebel_victory_kaur
##                                                                 
## polity2                                     -3.742*** (9.53e-13)
## Level_of_Threat                              29.06*** (6.77e-12)
## rebel_strength_nachiket_scaled               25.07*** (2.63e-12)
## duration_year                               0.2494*** (6.85e-13)
## Fixed-Effects:                    ------------------------------
## government                                                   Yes
## ______________________________    ______________________________
## S.E.: Clustered                                   by: government
## Convergence                                                FALSE
## Observations                                                 546
## Squared Cor.                                                   1
## Pseudo R2                                                 1.0000
## BIC                                                       50.421
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

2.3.6.2 Outcome non binary

##                                model_outcom..61
## Dependent Var.:                         outcome
##                                                
## coethnic_rebel_pgm_nachiket     0.3351 (0.3464)
## polity2                         0.0494 (0.0309)
## Level_of_Threat                 0.2929 (0.1852)
## state_strength                 -0.1571 (0.1366)
## rebel_strength_nachiket_scaled -0.0307 (0.0814)
## duration_year                  -0.0036 (0.0165)
## Fixed-Effects:                 ----------------
## government                                  Yes
## ______________________________ ________________
## S.E.: Clustered                  by: government
## Observations                              1,732
## R2                                      0.59296
## Within R2                               0.05955
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

2.3.7 Seventh Model

Same as the Third and Fourth models but with FE and clustered errors Coethnic NACHIKET (BINARY) Level of threat removed because we wish to capture the synergistic effects of interaction term

##                                                         model_outcome_binary_dk_7
## Dependent Var.:                                 outcome_binary_rebel_victory_kaur
##                                                                                  
## coethnic_rebel_pgm_nachiket_binary                               -0.0181 (0.0111)
## polity2                                                        0.1884*** (0.0352)
## state_strength                                                 -3.379*** (0.4400)
## rebel_strength_nachiket_scaled                                -0.8436*** (0.0979)
## duration_year                                                   -0.0142* (0.0050)
## state_strength x rebel_strength_nachiket_scaled                 1.518*** (0.2217)
## Fixed-Effects:                                     ------------------------------
## government                                                                    Yes
## ________________________________________           ______________________________
## S.E.: Clustered                                                    by: government
## Observations                                                                1,562
## R2                                                                        0.99556
## Within R2                                                                 0.95465
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

OVERFITTING

In this model, a few key factors significantly influence the probability of rebel victory. The interaction between state_strength and rebel_strength_nachiket_scaled shows a substantial positive impact, with a 1-unit increase in this interaction increasing the probability of rebel victory by approximately 166.8%. This suggests that when both state strength and rebel strength are high, the likelihood of a rebel victory significantly rises.

However, higher levels of state_strength alone reduce the probability of a rebel victory by about 387.9%. Similarly, stronger rebel forces (rebel_strength_nachiket_scaled) by themselves decrease the chances of rebel success by roughly 100%. Additionally, a more democratic political environment (polity2) increases the probability of a rebel victory by around 23.6%, while each passing year of conflict (duration_year) lowers it by about 1.89%. The variable representing whether the rebel group is coethnic with the program (coethnic_rebel_pgm_nachiket_binary) has a minor negative impact, but it is not statistically significant.

Overall, this model highlights that the interplay between state and rebel strengths plays a crucial role in determining outcomes, with certain political conditions also contributing significantly.

2.3.7.1 Logit

##                                          model_outcome_binary_dk_7_1
## Dependent Var.:                    outcome_binary_rebel_victory_kaur
##                                                                     
## coethnic_rebel_pgm_nachiket_binary                    -3.360 (2.787)
## polity2                                              0.0380 (0.0411)
## state_strength                                    -25.82*** (0.1646)
## rebel_strength_nachiket_scaled                      44.97*** (5.643)
## Fixed-Effects:                        ------------------------------
## government                                                       Yes
## __________________________________    ______________________________
## S.E.: Clustered                                       by: government
## Convergence                                                    FALSE
## Observations                                                     546
## Squared Cor.                                                  1.0000
## Pseudo R2                                                     1.0000
## BIC                                                           50.421
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

2.3.7.2 outcome non binary

##                                                 model_outcome_bi..7
## Dependent Var.:                                             outcome
##                                                                    
## coethnic_rebel_pgm_nachiket_binary                  0.4845 (0.3100)
## polity2                                            0.1163* (0.0444)
## state_strength                                   -0.9555** (0.3051)
## rebel_strength_nachiket_scaled                  -0.2259*** (0.0505)
## duration_year                                      -0.0112 (0.0166)
## state_strength x rebel_strength_nachiket_scaled    0.2957* (0.1373)
## Fixed-Effects:                                  -------------------
## government                                                      Yes
## ________________________________________        ___________________
## S.E.: Clustered                                      by: government
## Observations                                                  1,732
## R2                                                          0.60830
## Within R2                                                   0.09498
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

2.3.8 Eighth Model

Same as the Third and Fourth models but with FE and clustered errors Coethnic NACHIKET (NON-BINARY) Level of threat removed because we wish to capture the synergistic effects of interaction term

##                                                         model_outcome_binary_dk_8
## Dependent Var.:                                 outcome_binary_rebel_victory_kaur
##                                                                                  
## coethnic_rebel_pgm_nachiket                                      -0.0189 (0.0112)
## polity2                                                        0.1884*** (0.0351)
## state_strength                                                 -3.378*** (0.4395)
## rebel_strength_nachiket_scaled                                -0.8437*** (0.0978)
## duration_year                                                   -0.0142* (0.0050)
## state_strength x rebel_strength_nachiket_scaled                 1.518*** (0.2214)
## Fixed-Effects:                                     ------------------------------
## government                                                                    Yes
## ________________________________________           ______________________________
## S.E.: Clustered                                                    by: government
## Observations                                                                1,562
## R2                                                                        0.99557
## Within R2                                                                 0.95468
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

The relationship between polity2 and the outcome is quite strong and significant. Here, a one-unit increase in polity2 (which measures how democratic a government is) is associated with a 23.55% increase in the probability of a rebel victory. This suggests that more democratic environments might somehow favor rebel outcomes, which could be an interesting point to explore further.

On the other hand, state_strength is highly significant but in the opposite direction. A stronger state is linked to a substantial decrease in the probability of a rebel victory, with a 387.9% reduction. This isn’t surprising since stronger states likely have better resources and strategies to suppress rebellions.

The rebel_strength_nachiket_scaled variable is also quite impactful. When rebel strength increases, the likelihood of a rebel victory drops by 100%, which seems counterintuitive at first glance. However, this might be capturing some complex dynamics where stronger rebels might engage in prolonged conflicts without necessarily securing outright victories.

There’s also an interesting interaction between state_strength and rebel_strength_nachiket_scaled. The combined effect of stronger states and stronger rebels increases the probability of a rebel victory by 166.8%. This could indicate that when both sides are strong, the conflict dynamics shift, possibly leading to more balanced power struggles where rebels have a better chance.

Finally, coethnic_rebel_pgm_nachiket and duration_year are less significant but still noteworthy. The coethnic alignment slightly decreases the probability of a rebel victory by around 1.99%, while each additional year of conflict duration slightly decreases the probability by 1.89%. These effects, while smaller, still add nuance to the overall picture.

OVERFITTING

2.3.8.1 logit Model

##                                      model_outcome_binary_dk_8_1
## Dependent Var.:                outcome_binary_rebel_victory_kaur
##                                                                 
## coethnic_rebel_pgm_nachiket                       -3.360 (2.787)
## polity2                                          0.0380 (0.0411)
## state_strength                                -25.82*** (0.1646)
## rebel_strength_nachiket_scaled                  44.97*** (5.643)
## Fixed-Effects:                    ------------------------------
## government                                                   Yes
## ______________________________    ______________________________
## S.E.: Clustered                                   by: government
## Convergence                                                FALSE
## Observations                                                 546
## Squared Cor.                                              1.0000
## Pseudo R2                                                 1.0000
## BIC                                                       50.421
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

2.3.9 Ninth Model

Additional Controls FEOLS with Coethnic Nachiket (Binary)

Adding Three Variables and Removing State Strength due to possibility of Multicollinearity and adding individual predictors of state strength

##                                            model_outcome_binary_dk_9
## Dependent Var.:                    outcome_binary_rebel_victory_kaur
##                                                                     
## coethnic_rebel_pgm_nachiket_binary                  -0.0076 (0.0063)
## polity2                                          -0.0947*** (0.0051)
## gdpcapita_imputed_entire                          -1.150*** (0.0792)
## lmilper_imputed_entire                             0.7848** (0.2523)
## ltroopratio_imputed_entire                        0.3660*** (0.0326)
## rebel_strength_nachiket_scaled                    0.8464*** (0.1350)
## duration_year                                       0.0075* (0.0036)
## Fixed-Effects:                        ------------------------------
## government                                                       Yes
## __________________________________    ______________________________
## S.E.: Clustered                                       by: government
## Observations                                                   1,562
## R2                                                           0.99678
## Within R2                                                    0.96710
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

OVERFITTING

In this model, several factors play a significant role in influencing the likelihood of a rebel victory. Polity2 is negatively associated with rebel victory; a one-unit increase in this measure decreases the probability of a rebel victory by 9.48%. This suggests that in more democratic settings, rebels are less likely to succeed.

Economic strength, as captured by gdpcapita_imputed_entire, significantly reduces the probability of a rebel victory by 115.6%, indicating that wealthier states are better at quelling rebellions. Meanwhile, military personnel per capita (lmilper_imputed_entire) and troop ratio (ltroopratio_imputed_entire) increase the probability of rebel success by 78.46% and 36.63%, respectively. This might reflect the dynamics where higher military engagement or larger troop presence makes conflict outcomes less predictable.

Rebel_strength_nachiket_scaled also positively impacts the likelihood of a rebel victory, increasing it by 84.68%, showing that stronger rebel groups have a better chance of winning. Finally, the duration of the conflict (duration_year) slightly increases the probability of a rebel victory by 0.75%, suggesting that the longer the conflict drags on, the more likely the rebels are to succeed.

The model has government fixed effects and clusters standard errors by government, ensuring that country-specific factors are accounted for.

2.3.9.1 Logit Model

##                                          model_outcome_binary_dk_9_1
## Dependent Var.:                    outcome_binary_rebel_victory_kaur
##                                                                     
## coethnic_rebel_pgm_nachiket_binary               -2.416*** (1.99e-6)
## polity2                                          -3.961*** (4.29e-8)
## gdpcapita_imputed_entire                         -44.79*** (2.32e-6)
## rebel_strength_nachiket_scaled                    47.27*** (4.27e-6)
## Fixed-Effects:                        ------------------------------
## government                                                       Yes
## __________________________________    ______________________________
## S.E.: Clustered                                       by: government
## Convergence                                                    FALSE
## Observations                                                     546
## Squared Cor.                                                  1.0000
## Pseudo R2                                                     1.0000
## BIC                                                           50.421
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

2.3.10 Tenth Model

Additional Controls FEOLS with Coethnic Nachiket (Non-Binary)

Adding Three Variables and Removing State Strength due to possibility of Multi-collinearity and adding individual predictors of state strength

##                                       model_outcome_binary_dk_10
## Dependent Var.:                outcome_binary_rebel_victory_kaur
##                                                                 
## coethnic_rebel_pgm_nachiket                     -0.0080 (0.0065)
## polity2                                      -0.0947*** (0.0051)
## gdpcapita_imputed_entire                      -1.150*** (0.0792)
## lmilper_imputed_entire                         0.7846** (0.2522)
## ltroopratio_imputed_entire                    0.3660*** (0.0326)
## rebel_strength_nachiket_scaled                0.8463*** (0.1349)
## duration_year                                   0.0075* (0.0036)
## Fixed-Effects:                    ------------------------------
## government                                                   Yes
## ______________________________    ______________________________
## S.E.: Clustered                                   by: government
## Observations                                               1,562
## R2                                                       0.99678
## Within R2                                                0.96711
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

In model outcome_binary_dk_10, the impact of key variables on the probability of rebel victory is evident.

Polity2 shows a significant negative effect, reducing the probability of rebel victory by 9.48% for each unit increase. GDP per capita (gdpcapita_imputed_entire) also significantly decreases the likelihood of rebel victory by 115.6%. Military personnel (lmilper_imputed_entire) and troop ratio (ltroopratio_imputed_entire) increase the probability of rebel victory, with troop ratio having a pronounced effect of 36.63%. Rebel strength (rebel_strength_nachiket_scaled) positively influences the probability, increasing it by 84.67%. Duration year has a smaller but statistically significant positive effect, increasing the probability by 0.75% with each additional year. The coefficient for coethnic_rebel_pgm_nachiket remains negligible and statistically insignificant, indicating minimal impact on the outcome.

2.3.10.1 Logit Model

##                                  model_outcome_binary_dk_10_1
## Dependent Var.:             outcome_binary_rebel_victory_kaur
##                                                              
## coethnic_rebel_pgm_nachiket              -22.90*** (1.45e-14)
## polity2                                   -36.17*** (1.32e-5)
## Fixed-Effects:                 ------------------------------
## government                                                Yes
## ___________________________    ______________________________
## S.E.: Clustered                                by: government
## Observations                                              546
## Squared Cor.                                          0.70703
## Pseudo R2                                             0.75266
## BIC                                                    146.80
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

2.3.10.2 Logit Model for non-longitudinal

##                                model_outcome_binary_dk_10_1_1
## Dependent Var.:             outcome_binary_rebel_victory_kaur
##                                                              
## Constant                                       0.1207 (1.452)
## coethnic_rebel_pgm_nachiket                    -1.544 (1.087)
## Level_of_Threat                               0.1314 (0.6451)
## ___________________________    ______________________________
## S.E.: Clustered                                by: government
## Observations                                            1,618
## Squared Cor.                                          0.08763
## Pseudo R2                                             0.06482
## BIC                                                   2,119.1
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

2.4 Some More Models for Outcome variable (Binary and Non-Binary)

2.4.1 Univariate Models for: Conflict outcome (binary and non-binary) ~ Coethnicity (binary and non-binary)

Univariate Model For Outcome (Binary) and Coethnicity Nachiket (Binary)–Model1; Univariate Model For Outcome (Binary) and Coethnicity Nachiket (Non Binary)Model 2; Univariate Model For Outcome (Non-Binary) and Coethnicity Nachiket (Non Binary)–Model 3; Univariate Model For Outcome (Non Binary) and Coethnicity Nachiket (Binary)

##                                                                  One
## Dependent Var.:                    outcome_binary_rebel_victory_kaur
##                                                                     
## coethnic_rebel_pgm_nachiket_binary                  -0.0473 (0.0491)
## coethnic_rebel_pgm_nachiket                                         
## Fixed-Effects:                        ------------------------------
## government                                                       Yes
## __________________________________    ______________________________
## S.E.: Clustered                                       by: government
## Observations                                                   1,627
## R2                                                           0.90649
## Within R2                                                    0.00510
## 
##                                                                  Two
## Dependent Var.:                    outcome_binary_rebel_victory_kaur
##                                                                     
## coethnic_rebel_pgm_nachiket_binary                                  
## coethnic_rebel_pgm_nachiket                         -0.0494 (0.0506)
## Fixed-Effects:                        ------------------------------
## government                                                       Yes
## __________________________________    ______________________________
## S.E.: Clustered                                       by: government
## Observations                                                   1,627
## R2                                                           0.90652
## Within R2                                                    0.00532
## 
##                                              Three            Four
## Dependent Var.:                            outcome         outcome
##                                                                   
## coethnic_rebel_pgm_nachiket_binary                 0.4156 (0.2951)
## coethnic_rebel_pgm_nachiket        0.2860 (0.3161)                
## Fixed-Effects:                     --------------- ---------------
## government                                     Yes             Yes
## __________________________________ _______________ _______________
## S.E.: Clustered                     by: government  by: government
## Observations                                 1,787           1,787
## R2                                         0.57000         0.58337
## Within R2                                  0.02399         0.05434
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Model One:

Coethnic Rebel PGM Binary: This variable has a slight negative effect on the probability of rebel victory, though not quite statistically significant. Coethnic Rebel PGM: This variable isn’t included in this model. Fixed Effects: The model includes fixed effects for government, and observations are clustered by government. Overall Fit: The model explains a high proportion of the variance (R² = 0.90649), but the within-country R² is quite low, indicating little variation explained within countries.

Model Two:

Coethnic Rebel PGM Binary: Not included in this model. Coethnic Rebel PGM: This variable shows a slight negative effect on the probability of rebel victory, though it’s not strongly significant. Fixed Effects: Includes country fixed effects with clustering by government. Overall Fit: The model has a similar high R² as Model One (0.90652) and a similar low within-country R², indicating consistency in overall fit but minimal within-country explanatory power.

Model Three:

Coethnic Rebel PGM Binary: Not included here. Coethnic Rebel PGM: Shows a positive effect on the outcome, but it’s not statistically significant. Fixed Effects: Government fixed effects are included, and observations are clustered by government. Overall Fit: This model explains less variance overall (R² = 0.56869) compared to the previous models and has a slightly higher within-country R², suggesting it captures more variation within countries.

Model Four:

Coethnic Rebel PGM Binary: This variable has a positive effect on the outcome, which is statistically significant, indicating that higher values are associated with increased rebel victory probabilities. Coethnic Rebel PGM: Not included in this model. Fixed Effects: Includes country-level fixed effects and clusters by government. Overall Fit: The model has a moderate R² (0.58333) and a higher within-country R² compared to earlier models, reflecting a better fit for the variation within countries.

General Notes: All models include fixed effects for government and cluster standard errors by government. The significant variation in R² and Within R² across models indicates differing levels of fit and explanatory power, depending on the variable used and the outcome analyzed. The non-significance of the coefficients across these models suggests that the direct impact of coethnic alignment on rebel victory or other outcomes may not be as substantial as hypothesized, or may be influenced by other unobserved factors.

2.4.2 THREE CONTROLS Multivariate Models for: ⁠Conflict outcome (binary and non-binary) ~ Coethnicity (binary and non-binary) + gdp + polity + duration

Multivariate Model For Outcome (Binary) and Coethnicity Nachiket (Binary)+ gdp + polity + duration –Model1; Multivariate Model For Outcome (Binary) and Coethnicity Nachiket (Non Binary) + gdp + polity + duration Model 2; Multivariate Model For Outcome (Non-Binary) and Coethnicity Nachiket (Non Binary) + gdp + polity + duration –Model 3; Multivariate Model For Outcome (Non Binary) and Coethnicity Nachiket (Binary) + gdp + polity + duration –Model 4

##                                                                  One
## Dependent Var.:                    outcome_binary_rebel_victory_kaur
##                                                                     
## coethnic_rebel_pgm_nachiket_binary                  -0.0646 (0.0495)
## gdpcapita_imputed_entire                            -0.3886 (0.2543)
## polity2                                          -0.0887*** (0.0146)
## duration_year                                       -0.0110 (0.0099)
## coethnic_rebel_pgm_nachiket                                         
## Fixed-Effects:                        ------------------------------
## government                                                       Yes
## __________________________________    ______________________________
## S.E.: Clustered                                       by: government
## Observations                                                   1,617
## R2                                                           0.96133
## Within R2                                                    0.59107
## 
##                                                                  Two
## Dependent Var.:                    outcome_binary_rebel_victory_kaur
##                                                                     
## coethnic_rebel_pgm_nachiket_binary                                  
## gdpcapita_imputed_entire                            -0.3891 (0.2540)
## polity2                                          -0.0887*** (0.0146)
## duration_year                                       -0.0110 (0.0098)
## coethnic_rebel_pgm_nachiket                         -0.0675 (0.0506)
## Fixed-Effects:                        ------------------------------
## government                                                       Yes
## __________________________________    ______________________________
## S.E.: Clustered                                       by: government
## Observations                                                   1,617
## R2                                                           0.96137
## Within R2                                                    0.59149
## 
##                                               Three             Four
## Dependent Var.:                             outcome          outcome
##                                                                     
## coethnic_rebel_pgm_nachiket_binary                   0.4504 (0.2732)
## gdpcapita_imputed_entire           -0.1752 (0.6993) -0.2060 (0.7356)
## polity2                             0.0170 (0.0200)  0.0135 (0.0208)
## duration_year                      -0.0114 (0.0179) -0.0139 (0.0186)
## coethnic_rebel_pgm_nachiket         0.3083 (0.3022)                 
## Fixed-Effects:                     ---------------- ----------------
## government                                      Yes              Yes
## __________________________________ ________________ ________________
## S.E.: Clustered                      by: government   by: government
## Observations                                  1,780            1,780
## R2                                          0.57374          0.58906
## Within R2                                   0.03800          0.07258
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Model One:

Coethnic Rebel PGM Binary: Decreases the probability of rebel victory by 6.46%, though it’s not statistically significant. GDP per Capita: Reduces the probability of victory by 38.84%. Polity2: A 1-unit increase lowers the probability of rebel victory by 8.87%. Duration Year: Affects the probability negatively by 1.10% per year. Fixed Effects: Country-level fixed effects are included, and clustering is by government.

Model Two: GDP per Capita: Same as Model One, showing a 38.89% decrease in victory probability. Polity2: Same as Model One, reducing probability by 8.87%. Duration Year: Similarly decreases the probability by 1.10% annually. Coethnic Rebel PGM: Slightly less negative impact compared to Model One at -6.75%. Fixed Effects: Country-level fixed effects and government clustering applied.

Model Three: Coethnic Rebel PGM Binary: Increases the probability of rebel victory by 48.51%, though not statistically significant. GDP per Capita: Shows a non-significant decrease in probability of 11.89%. Polity2: A minor positive effect on probability of 1.33%. Duration Year: Slightly reduces the probability by 1.49% per year. Fixed Effects: Includes country-level fixed effects and government clustering.

Model Four: Coethnic Rebel PGM Binary: Increases the probability of rebel victory by 55.06%, statistically significant. GDP per Capita: Slightly decreases probability by 14.20%. Polity2: A small positive effect of 0.96%. Duration Year: A minor negative effect of 1.77% per year. Fixed Effects: Country-level fixed effects included, clustering by government.

General Notes: All models incorporate fixed effects for government and cluster standard errors by government, which helps account for within-government correlations. The high R² values in Models One and Two suggest these models explain a substantial portion of the variance in the outcome variable. Despite this, the coefficients for the key variables of interest (coethnic_rebel_pgm_nachiket_binary and coethnic_rebel_pgm_nachiket) are not statistically significant across models, indicating that, within this dataset, the direct impact of coethnic alignment on rebel victory might be limited or overshadowed by other factors.

2.4.3 FOUR CONTROLS Multivariate Models for: ⁠Conflict outcome (binary and non-binary) ~ Coethnicity (binary and non-binary) + gdp + polity + duration + ethpol

Multivariate Model For Outcome (Binary) and Coethnicity Nachiket (Binary)+ gdp + polity + duration + ethpol –Model1; Multivariate Model For Outcome (Binary) and Coethnicity Nachiket (Non Binary) + gdp + polity + duration + ethpol Model 2; Multivariate Model For Outcome (Non-Binary) and Coethnicity Nachiket (Non Binary) + gdp + polity + duration + ethpol –Model 3; Multivariate Model For Outcome (Non Binary) and Coethnicity Nachiket (Binary) + gdp + polity + duration + ethpol –Model 4

##                                                                  One
## Dependent Var.:                    outcome_binary_rebel_victory_kaur
##                                                                     
## coethnic_rebel_pgm_nachiket_binary                  -0.0501 (0.0529)
## gdpcapita_imputed_entire                         -0.7622*** (0.1761)
## polity2                                          -0.0788*** (0.0109)
## duration_year                                       -0.0022 (0.0076)
## coethnic_rebel_pgm_nachiket                                         
## Fixed-Effects:                        ------------------------------
## government                                                       Yes
## __________________________________    ______________________________
## S.E.: Clustered                                       by: government
## Observations                                                   1,562
## R2                                                           0.96782
## Within R2                                                    0.67107
## 
##                                                                  Two
## Dependent Var.:                    outcome_binary_rebel_victory_kaur
##                                                                     
## coethnic_rebel_pgm_nachiket_binary                                  
## gdpcapita_imputed_entire                         -0.7622*** (0.1760)
## polity2                                          -0.0788*** (0.0108)
## duration_year                                       -0.0022 (0.0076)
## coethnic_rebel_pgm_nachiket                         -0.0525 (0.0548)
## Fixed-Effects:                        ------------------------------
## government                                                       Yes
## __________________________________    ______________________________
## S.E.: Clustered                                       by: government
## Observations                                                   1,562
## R2                                                           0.96785
## Within R2                                                    0.67132
## 
##                                                Three              Four
## Dependent Var.:                              outcome           outcome
##                                                                       
## coethnic_rebel_pgm_nachiket_binary                    0.5253. (0.2538)
## gdpcapita_imputed_entire           -1.267** (0.3517) -1.375** (0.4536)
## polity2                             0.0390. (0.0189)  0.0365. (0.0196)
## duration_year                        0.0085 (0.0156)   0.0070 (0.0160)
## coethnic_rebel_pgm_nachiket          0.3678 (0.2911)                  
## Fixed-Effects:                     ----------------- -----------------
## government                                       Yes               Yes
## __________________________________ _________________ _________________
## S.E.: Clustered                       by: government    by: government
## Observations                                   1,732             1,732
## R2                                           0.60436           0.62380
## Within R2                                    0.08588           0.13081
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Model One:

Coethnic Rebel PGM Binary: A 5.01% decrease in the probability of rebel victory, though not quite significant. GDP per Capita: Significantly lowers the probability of victory by about 76.55%. Polity2: Decreases the probability of victory by 7.88%, a strong effect. Duration Year: Very little impact on the probability, changing by just -0.23% per year. Fixed Effects: Country-level fixed effects are included, with clustering by government. Model Two:

GDP per Capita: Similar to Model One, reduces victory probability by 76.55%. Polity2: Same significant effect as Model One, reducing the probability by 7.88%. Duration Year: Also shows a minimal effect of -0.23% per year. Coethnic Rebel PGM: Shows a slight negative effect, decreasing victory probability by 5.25%. Fixed Effects: Country-level fixed effects and clustering by government are applied. Model Three:

Coethnic Rebel PGM Binary: Increases the probability of rebel victory by 55.10%, a significant effect. GDP per Capita: A significant decrease in probability, about 119.80%. Polity2: A positive effect on victory probability of 3.52%, but less significant. Duration Year: Slightly increases probability by 0.50% per year. Fixed Effects: Includes country-level fixed effects and clustering by government. Model Four:

Coethnic Rebel PGM Binary: Increases the probability of rebel victory by 32.40%, significant but less so than in Model Three. GDP per Capita: Also significantly reduces the probability, about 129.50%. Polity2: A small positive effect of 3.24% on victory probability. Duration Year: Minimal positive effect on probability, about 0.32% per year. Fixed Effects: Country-level fixed effects and clustering by government are used.

General Notes: These models include additional control variables to account for more factors influencing the outcome. The addition of ethpol seems to influence the coefficients and significance levels of the main variables, particularly in Model Three, where the binary measure of coethnic alignment becomes significant. The overall R² and Within R² values suggest that these models capture a substantial amount of variance in the outcome, with the presence of ethpol enhancing the model fit in some cases.

3 Part A Visualisations

3.1 Stargazer

(1) (2) (3) (4)
Level_of_Threat -0.243 -0.184 -0.432***
(0.149) (0.138) (0.047)
(0.115) (0.193) (<0.001)
polity2 0.073*** -0.008
(0.015) (0.010)
(<0.001) (0.441)
state_strength -0.419*** 0.422***
(0.059) (0.106)
(<0.001) (<0.001)
rebel_strength_nachiket_scaled -0.122 0.107
(0.109) (0.079)
(0.273) (0.190)
duration_year 0.006 0.012+
(0.007) (0.006)
(0.363) (0.056)
state_strength × rebel_strength_nachiket_scaled -0.263***
(0.069)
(<0.001)
Num.Obs. 2051 2051 1995 1995
R2 0.573 0.536 0.553 0.547
R2 Adj. 0.567 0.529 0.547 0.540
R2 Within 0.033 0.022 0.065 0.052
R2 Within Adj. 0.033 0.021 0.063 0.050
AIC 1051.1 793.4 666.4 694.9
BIC 1219.8 962.2 828.7 857.3
RMSE 0.31 0.29 0.28 0.28
Std.Errors by: government by: government by: government by: government
FE: government X X X X

Note: ^^ + p < 0.1, * p < 0.05, ** p < 0.01, *** p < 0.001

3.2 Coefplots

LS0tCnRpdGxlOiAiQ2l2aWwgV2FycyBEYXRhc2V0IE1haW4gUlB1YiBMT05HSVRVRElOQUwiCmF1dGhvcjogIkRyLiBEaXBpbiBLYXVyIgpvdXRwdXQ6IAogIGh0bWxfZG9jdW1lbnQ6CiAgICB0aGVtZTogY29zbW8KICAgIGhpZ2hsaWdodDogdGFuZ28KICAgIHRvYzogdHJ1ZQogICAgdG9jX2Zsb2F0OiB0cnVlCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUKICAgIGNvZGVfZG93bmxvYWQ6IHRydWUKICAgIG51bWJlcl9zZWN0aW9uczogdHJ1ZSAgIyBOdW1iZXIgc2VjdGlvbnMgZm9yIHRoZSB0YWJsZSBvZiBjb250ZW50cwogICAgZmlnX2NhcHRpb246IHRydWUgICAgICAjIEVuYWJsZSBmaWd1cmUgY2FwdGlvbnMKICAgIGNzczogc3R5bGVzLmNzcyAgICAgICAgIyBMaW5rIHRvIGEgY3VzdG9tIENTUyBmaWxlIGZvciBzdHlsaW5nCi0tLQoKYGBge3IgZWNobz1GQUxTRSwgd2FybmluZz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0KI0xvYWRpbmcgTGlicmFyaWVzCmxpYnJhcnkodGlkeXZlcnNlKQpsaWJyYXJ5KHRpZHlyKQpsaWJyYXJ5KGRwbHlyKQpsaWJyYXJ5KGdncGxvdDIpCmxpYnJhcnkoa25pdHIpCmxpYnJhcnkoa2FibGVFeHRyYSkKbGlicmFyeShzbmFrZWNhc2UpCmxpYnJhcnkoZ2d0aGVtZXMpCmxpYnJhcnkoV0RJKQpsaWJyYXJ5KGJldGFyZWcpCmxpYnJhcnkoZm9yY2F0cykKbGlicmFyeShzdHJpbmdkaXN0KQpsaWJyYXJ5KGV4cHNzKQpsaWJyYXJ5KGxmZSkKbGlicmFyeShkZXZ0b29scykKbGlicmFyeSh6b28pCmxpYnJhcnkoc2FuZHdpY2gpCmxpYnJhcnkocGxtKQpsaWJyYXJ5KGJyb29tKQpsaWJyYXJ5KHN0YXJnYXplcikKbGlicmFyeShqYW5pdG9yKQpsaWJyYXJ5KG1vZGVsc3VtbWFyeSkKbGlicmFyeSh0cmFuc2Zvcm1yKQpsaWJyYXJ5KGdnYW5pbWF0ZSkKbGlicmFyeShnaWZza2kpCmxpYnJhcnkoYXYpCmxpYnJhcnkoZmxleHRhYmxlKQpsaWJyYXJ5KElSZGlzcGxheSkKbGlicmFyeShnbW9kZWxzKQpsaWJyYXJ5KGZpeGVzdCkKbGlicmFyeShjYSkKbGlicmFyeShzdGFyZ2F6ZXIpCmxpYnJhcnkodGV4cmVnKQpsaWJyYXJ5KG1sb2dpdCkKCmBgYAoKYGBge3IgZWNobz1GQUxTRSwgd2FybmluZz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0KIyBMT0FESU5HIERBVEFTRVRTIGFuZCBtYWtpbmcgbmV3IHZhcmlhYmxlcwptYWluX2Npdmlsd2FycyA8LSByZWFkLmNzdigiL1VzZXJzL05hY2hpa2V0L0ZpbGVzIEZyb20gZS5sb2NhbGl6ZWQvUHJvZiBEaXBpbiBLYXVyIFJBIHdvcmsvRGF0YXNldHMvRmluYWxfVW5pdmVyc2VfY2l2aWx3YXJzLmNzdiIpCgptYWluX2Npdmlsd2FycyA8LSBtYWluX2Npdmlsd2FycyAlPiUgbXV0YXRlKGR1cmF0aW9uX3llYXIgPSBlbmR5cl9jb25mbGljdCAtIHN0YXJ0eXJfY29uZmxpY3QpCgptYWluX2Npdmlsd2Fyc19ldGhuaWMgPC0gbWFpbl9jaXZpbHdhcnMgJT4lIAogIGZpbHRlcihjb25mbGljdF9ldGhuaWMgPT0gMSkKCm1haW5fY2l2aWx3YXJzX2V0aG5pY19sb25naXR1ZG5hbCA8LSBtYWluX2Npdmlsd2Fyc19ldGhuaWMgJT4lCiAgZmlsdGVyKCFpcy5uYShzdGFydHlyX2NvbmZsaWN0KSAmICFpcy5uYShlbmR5cl9jb25mbGljdCkpICU+JSAKICByb3d3aXNlKCkgJT4lCiAgZG8oZGF0YS5mcmFtZSguLCBZZWFyID0gc2VxKC4kc3RhcnR5cl9jb25mbGljdCwgLiRlbmR5cl9jb25mbGljdCkpKSAlPiUKICB1bmdyb3VwKCkKYGBgCgpgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQojIyBNYWtpbmcgYSBTdGF0ZSBTdHJlbmd0aCBWYXJpYWJsZSBieSBTdGFuZGFyZGlzaW5nIHRoZSB0aHJlZSB2YXJpYWJsZXMgdGhhdCB3ZSBhbHJlYWR5IGhhdmUgIyMKCiMgRmlyc3Qgd2UgcmVwbGFjZSBOQXMgd2l0aCBpbXB1dGVkIG1lYW5zCgojIyBUUlkgV0lUSCBJTVBVVEFUSU9OIEZST00gVEhFIENPVU5UUlkgTEVWRUw6IFRyaWVkIGFuZCB0aGUgbm90ZSBoZXJlIGlzIHRoYXQgaGFkIHRvIGJlIGRvbmUgbWFudWFsbHkgdG9vayBhIGJpdCBvZiB0aW1lIHdhcyBzdWNjZXNmdWwgYW5kIHRoZSBOQXMgd2Ugd2VyZSBzdGlsbCBsZWZ0IHdpdGggd2VyZTogNyBpbiBsb2dwY2dkcCwgMTAgZWFjaCBpbiBsbWlscGVyIGFuZCBsdHJvb3ByYXRpbyBhbmQgdGhlbiBvbmx5IHRoZXNlIHdlcmUgaW4gdHVybiBpbXB1dGVkIGZyb20gb3ZlcmFsbCBhdmVyYWdlcy4gdGhpcyBmb3Igc3VyZSByZWR1Y2VzIGRpc2NyZXBhbmNpZXMKCm1haW5fY2l2aWx3YXJzX2V0aG5pY19sb25naXR1ZG5hbCA8LSBtYWluX2Npdmlsd2Fyc19ldGhuaWNfbG9uZ2l0dWRuYWwgJT4lIAogIG11dGF0ZSgKICAgIGdkcGNhcGl0YV9pbXB1dGVkX2VudGlyZSA9IGlmZWxzZShpcy5uYShsb2dwY2dkcCksIG1lYW4obG9ncGNnZHAsIG5hLnJtID0gVFJVRSksIGxvZ3BjZ2RwKSwKICAgIGxtaWxwZXJfaW1wdXRlZF9lbnRpcmUgPSBpZmVsc2UoaXMubmEobG1pbHBlciksIG1lYW4obG1pbHBlciwgbmEucm0gPSBUUlVFKSwgbG1pbHBlciksCiAgICBsdHJvb3ByYXRpb19pbXB1dGVkX2VudGlyZSA9IGlmZWxzZShpcy5uYShsdHJvb3ByYXRpbyksIG1lYW4obHRyb29wcmF0aW8sIG5hLnJtID0gVFJVRSksIGx0cm9vcHJhdGlvKQogICkgJT4lIAogIG11dGF0ZShnZHBjYXBpdGFfc2NhbGVkX2VudGlyZSA9IHNjYWxlKGdkcGNhcGl0YV9pbXB1dGVkX2VudGlyZSksCiAgICAgICAgIGxtaWxwZXJfc2NhbGVkX2VudGlyZSA9IHNjYWxlKGxtaWxwZXJfaW1wdXRlZF9lbnRpcmUpLAogICAgICAgICBsdHJvb3ByYXRpb19zY2FsZWRfZW50aXJlID0gc2NhbGUobHRyb29wcmF0aW9faW1wdXRlZF9lbnRpcmUpCiAgICAgICAgICkKYGBgCgpgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQojIyMgQWxzbyBjb252ZXJ0aW5nIHRoZSAiY29ldGhuaWNfcmViZWxfcGdtX25hY2hpa2V0IiB0byBhIGJpbmFyeSB2YXJpYWJsZSB3aGVyZSAiMC41cyIgYXJlIGJlaW5nIHR1cm5lZCBpbnRvICIxcyIgZm9yIHB1cnBvc2VzIG9mIG1ha2luZyB0aGlzIGEgZHVtbXkgb3V0Y29tZSB2YXJpYWJsZSBhbmQgcmVsYWJlbGluZyB0aGlzIGFzICJjb2V0aG5pY19yZWJlbF9wZ21fbmFjaGlrZXRfYmluYXJ5IgoKbWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsIDwtIG1haW5fY2l2aWx3YXJzX2V0aG5pY19sb25naXR1ZG5hbCAlPiUgCiAgbXV0YXRlKGNvZXRobmljX3JlYmVsX3BnbV9uYWNoaWtldF9iaW5hcnkgPSBjYXNlX3doZW4oCiAgIGNvZXRobmljX3JlYmVsX3BnbV9uYWNoaWtldCA9PSAxIH4gMSwKICAgY29ldGhuaWNfcmViZWxfcGdtX25hY2hpa2V0ID09IDAuNSB+IDEsIAogICBjb2V0aG5pY19yZWJlbF9wZ21fbmFjaGlrZXQgPT0gMCB+IDAsCiAgKSkKCgojIyBNYWtpbmcgYSBuZXcgdmFyaWFibGUgZm9yIHJlYmVsIHN0cmVuZ3RoIGJhc2VkIG9uIHdoYXQgd2UgZGVjaWRlZCwgaS5lLiByZWJlbCBzdHJlbmd0aCBiYXNlZCBvbiB0aGUgbG9nX3Ryb29wIHJhdGlvIFRoZSBpZGVhIGlzIHRvIGNyZWF0ZSBhIHNjYWxlIGNhbGxlZCByZWJlbF9zdHJlbmd0aF9uYWNoaWtldF9zY2FsZWQgd2hlcmUgdGhlIHNjYWxlIHZhbHVlIGludmVyc2VseSByZWZsZWN0cyB0aGUgImxvZyB0cm9vcCByYXRpbyLigJRoaWdoZXIgbG9nIHRyb29wIHJhdGlvcyAoaW5kaWNhdGluZyBzdHJvbmdlciBnb3Zlcm5tZW50IHRyb29wcyByZWxhdGl2ZSB0byByZWJlbHMpIGNvcnJlc3BvbmQgdG8gbG93ZXIgdmFsdWVzIG9uIHRoZSBzY2FsZSwgaW5kaWNhdGluZyB3ZWFrZXIgcmViZWwgc3RyZW5ndGguCgojQnV0IHdlIHdhbnQgdG8gaW52ZXJ0IHRoaXMgc2NhbGUgZm9yCiMgSGlnaGVyIGxvZyB0cm9vcCByYXRpbyAoZ292ZXJubWVudCB0cm9vcHMgYXJlIG11Y2ggc3Ryb25nZXIgdGhhbiByZWJlbHMpIOKGkiBMb3dlciBzY2FsZSB2YWx1ZSAobG93ZXIgcmViZWwgc3RyZW5ndGgpCiMgTG93ZXIgbG9nIHRyb29wIHJhdGlvIChyZWJlbHMgYXJlIHN0cm9uZ2VyIHJlbGF0aXZlIHRvIGdvdmVybm1lbnQgdHJvb3BzKSDihpIgSGlnaGVyIHNjYWxlIHZhbHVlIChoaWdoZXIgcmViZWwgc3RyZW5ndGgpCgoKIyBMb2dpY2FsbHkgdGhpcyBpcyBob3cgdGhlIGJyZWFrcyBtYWtlIHRoZSBtb3N0IHNlbnNlCiMgLUluZiB0byAtMC41OiBUaGlzIGluY2x1ZGVzIGFsbCB2YWx1ZXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIC0wLjUuCiMgLTAuNSB0byAwOiBUaGlzIGluY2x1ZGVzIHZhbHVlcyBncmVhdGVyIHRoYW4gLTAuNSBhbmQgdXAgdG8gMC4KIyAwIHRvIDE6IFRoaXMgaW5jbHVkZXMgdmFsdWVzIGdyZWF0ZXIgdGhhbiAwIGFuZCB1cCB0byAxLgojIDEgdG8gMjogVGhpcyBpbmNsdWRlcyB2YWx1ZXMgZ3JlYXRlciB0aGFuIDEgYW5kIHVwIHRvIDIuCiMgMiB0byBJbmY6IFRoaXMgaW5jbHVkZXMgdmFsdWVzIGdyZWF0ZXIgdGhhbiAyLgoKbWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsIDwtIG1haW5fY2l2aWx3YXJzX2V0aG5pY19sb25naXR1ZG5hbCAlPiUKICBtdXRhdGUocmViZWxfc3RyZW5ndGhfbmFjaGlrZXRfc2NhbGVkID0gY3V0KGxvZ3Ryb29wLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrcyA9IGMoLUluZiwgLTAuNSwgMCwxLDIsIEluZiksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZS5sb3dlc3QgPSBUUlVFLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoNSwgNCwgMywgMiwgMSkpKQoKI0ludmVyc2luZyB0aGUgc2NhbGUgb3dpbmcgdG8gbnVtZXJpY2lzYXRpb24KbWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsIDwtIG1haW5fY2l2aWx3YXJzX2V0aG5pY19sb25naXR1ZG5hbCAlPiUKICBtdXRhdGUocmViZWxfc3RyZW5ndGhfbmFjaGlrZXRfc2NhbGVkID0gYXMubnVtZXJpYyhyZWJlbF9zdHJlbmd0aF9uYWNoaWtldF9zY2FsZWQpKSAlPiUgCiAgbXV0YXRlKHJlYmVsX3N0cmVuZ3RoX25hY2hpa2V0X3NjYWxlZCA9IGNhc2Vfd2hlbigKICAgIHJlYmVsX3N0cmVuZ3RoX25hY2hpa2V0X3NjYWxlZCA9PSAxIH41LAogICAgcmViZWxfc3RyZW5ndGhfbmFjaGlrZXRfc2NhbGVkID09IDIgfjQsCiAgICByZWJlbF9zdHJlbmd0aF9uYWNoaWtldF9zY2FsZWQgPT0gMyB+MywKICAgIHJlYmVsX3N0cmVuZ3RoX25hY2hpa2V0X3NjYWxlZCA9PSA0IH4yLAogICAgcmViZWxfc3RyZW5ndGhfbmFjaGlrZXRfc2NhbGVkID09IDUgfjEKICApKQogIAoKIyBPbiBhIHNjYWxlIG9mIDEgdG8gNToKIyAKIyAxOiBJbmRpY2F0ZXMgdmVyeSBzdHJvbmcgZ292ZXJubWVudCBmb3JjZXMgY29tcGFyZWQgdG8gcmViZWxzIChoaWdoIGxvZyB0cm9vcCByYXRpbywgbG93IHJlYmVsIHN0cmVuZ3RoKS4KIyA1OiBJbmRpY2F0ZXMgdmVyeSBzdHJvbmcgcmViZWwgZm9yY2VzIGNvbXBhcmVkIHRvIGdvdmVybm1lbnQgZm9yY2VzIChsb3cgb3IgbmVnYXRpdmUgbG9nIHRyb29wIHJhdGlvLCBoaWdoIHJlYmVsIHN0cmVuZ3RoKS4KCgoKCiMgIk5vdGUgb24gUmViX1N0cmVuZ3RoIE5TQSIKIyMgUmViX1N0cmVuZ3RoX05TQSAoNSBpcyBzdHJvbmdlc3QgYnV0IGRhdGFzZXQgaGFzIGluY29uc2lzdGVuY2llcykKIyBUaGlzIGludmVyc2lvbiBpbXBsaWVzIHRoYXQ6CiMgSW4gdGhlIG9yaWdpbmFsIEN1bm5pbmdoYW0gZXQgYWwuIG1lYXN1cmU6CiMgMSBtaWdodCByZXByZXNlbnQgbXVjaCBzdHJvbmdlciByZWJlbHMgY29tcGFyZWQgdG8gdGhlIGdvdmVybm1lbnQuCiMgNSBtaWdodCByZXByZXNlbnQgbXVjaCB3ZWFrZXIgcmViZWxzIGNvbXBhcmVkIHRvIHRoZSBnb3Zlcm5tZW50LgoKIyBJbiB0aGUgcmVic3RyZW5ndGhfTlNBIG1lYXN1cmU6CiMgMSB3b3VsZCBub3cgcmVwcmVzZW50IG11Y2ggd2Vha2VyIHJlYmVscyBjb21wYXJlZCB0byB0aGUgZ292ZXJubWVudC4KIyA1IHdvdWxkIG5vdyByZXByZXNlbnQgbXVjaCBzdHJvbmdlciByZWJlbHMgY29tcGFyZWQgdG8gdGhlIGdvdmVybm1lbnQuCmBgYAoKYGBge3IgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KIyMgUGVyZm9ybWluZyBQQ0EKCiMgU2VsZWN0IHRoZSBzY2FsZWQgY29sdW1ucyBmb3IgUENBCnNjYWxlZF9kYXRhX2VudGlyZSA8LSBtYWluX2Npdmlsd2Fyc19ldGhuaWNfbG9uZ2l0dWRuYWwgJT4lCiAgc2VsZWN0KGdkcGNhcGl0YV9zY2FsZWRfZW50aXJlLCBsbWlscGVyX3NjYWxlZF9lbnRpcmUsIGx0cm9vcHJhdGlvX3NjYWxlZF9lbnRpcmUpCgojIFBlcmZvcm0gUENBCnBjYV9yZXN1bHQgPC0gcHJjb21wKHNjYWxlZF9kYXRhX2VudGlyZSwgY2VudGVyID0gVFJVRSwgc2NhbGUuID0gVFJVRSkKCiMgRXh0cmFjdCB0aGUgZmlyc3QgcHJpbmNpcGFsIGNvbXBvbmVudCBhcyBzdGF0ZV9zdHJlbmd0aAptYWluX2Npdmlsd2Fyc19ldGhuaWNfbG9uZ2l0dWRuYWwgPC0gbWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsICU+JQogIG11dGF0ZShzdGF0ZV9zdHJlbmd0aF9wY2EgPSBwY2FfcmVzdWx0JHhbLCAxXSkKCiMgU2NhbGUgc3RhdGVfc3RyZW5ndGggdG8gYSByYW5nZSBvZiAxIHRvIDUKbWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsIDwtIG1haW5fY2l2aWx3YXJzX2V0aG5pY19sb25naXR1ZG5hbCAlPiUKICBtdXRhdGUoc3RhdGVfc3RyZW5ndGhfc2NhbGVkID0gY3V0KHN0YXRlX3N0cmVuZ3RoX3BjYSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVha3MgPSBxdWFudGlsZShzdGF0ZV9zdHJlbmd0aF9wY2EsIHByb2JzID0gc2VxKDAsIDEsIGxlbmd0aC5vdXQgPSA2KSwgbmEucm0gPSBUUlVFKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlLmxvd2VzdCA9IFRSVUUsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygxLCAyLCAzLCA0LCA1KSkpCgojIENvbnZlcnQgc3RhdGVfc3RyZW5ndGggdG8gbnVtZXJpYwptYWluX2Npdmlsd2Fyc19ldGhuaWNfbG9uZ2l0dWRuYWwgPC0gbWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsICU+JQogIG11dGF0ZShzdGF0ZV9zdHJlbmd0aCA9IGFzLm51bWVyaWMoYXMuY2hhcmFjdGVyKHN0YXRlX3N0cmVuZ3RoX3NjYWxlZCkpKQpgYGAKCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CiMjIENvbnNlcXVlbnRseSBNYWtpbmcgYSBsZXZlbCBvZiB0aHJlYXQgKFRocmVhdCBQZXJjZXB0aW9uKSBWYXJpYWJsZSAjIwojIGNvbmNlcHR1YWxseSBob3cgdGhpcyB2YXJpYWJsZSBpcyBkZWZpbmVkIGlzIHRoYXQgbm93IHRoYXQgcmViX3N0cmVuZ3RoX25zYSB2YXJpYWJsZSBpcyBvbiBhIHNjYWxlIG9mIDEtMyBhbmQgd2UgaGF2ZSBzdGF0ZS1zdHJlbmd0aCBvbiB0aGUgc2FtZSBsZXZlbCBzbyBpZiBzdGF0ZV9zdHJlbmd0aCA9IHJlYl9zdHJlbmd0aCB0aGVuIExldmVsIG9mIHRocmVhdCBpcyAyIChhdCBwYXJpdHkpIGFuZCBpZiByZWJfc3RyZW5ndGggPCBzdGF0ZV9zdHJlbmd0aCB0aGVuIGxldmVsIG9mIHRocmVhdCBpcyAxIGFuZCBpZiByZWJfc3RyZW5ndGggPiBzdGF0ZV9zdHJlbmd0aCB0aGVuIExldmVsIG9mIFRocmVhdCBpcyAzLiBUaGVyZSBpcyBhIHNvbGlkIG1hdGhlbWF0aWNhbCByZWFzb24gYXMgdG8gd2h5IHRoaXMgY2Fubm90IGJlIG1hZGUgb24gYSBzY2FsZSBvZiAxIHRvIDUuIAoKCm1haW5fY2l2aWx3YXJzX2V0aG5pY19sb25naXR1ZG5hbCA8LSBtYWluX2Npdmlsd2Fyc19ldGhuaWNfbG9uZ2l0dWRuYWwgJT4lIAogIG11dGF0ZShMZXZlbF9vZl9UaHJlYXQgPSBjYXNlX3doZW4oCiAgICBpcy5uYShyZWJlbF9zdHJlbmd0aF9uYWNoaWtldF9zY2FsZWQpIH4gTkFfcmVhbF8sCiAgICBzdGF0ZV9zdHJlbmd0aCA8IHJlYmVsX3N0cmVuZ3RoX25hY2hpa2V0X3NjYWxlZCB+IDMsCiAgICBzdGF0ZV9zdHJlbmd0aCA9PSByZWJlbF9zdHJlbmd0aF9uYWNoaWtldF9zY2FsZWQgfiAyLAogICAgc3RhdGVfc3RyZW5ndGggPiByZWJlbF9zdHJlbmd0aF9uYWNoaWtldF9zY2FsZWQgfiAxLAogICAgVFJVRSB+IE5BX3JlYWxfCiAgKSkgJT4lICAKICBzZWxlY3QodWNkcF9jb25mbGljdGlkLCBZZWFyLCBnb3Zlcm5tZW50LCByZWJlbHMsIHJlYmVsX2V0aG5pYywgcmViZWxfZXRobmljaXR5X05BRywgcmViZWxfcmVsaWdpb25fTkFHLCBwcm9fZ292dF9taWxpdGlhX3BnbV9jcmVhdGVkLCBjb25mbGljdF9ldGhuaWMsIHBnbV9ldGhuaWNpdHlfMSwgcGdtX2V0aG5pY2l0eV8yLCBjb2V0aG5pY19yZWJlbF9wZ21fbmFjaGlrZXQsIGNvZXRobmljX3JlYmVsX3BnbV9uYWNoaWtldF9iaW5hcnksIGNvZXRobmljX3N0YXRlX3BnbV9hYmJzZXRhbCwgY29ldGhuaWNfcmViZWxfcGdtX3N0YW50b24sIGNvZXRobmljX3JlYmVsX3BnbV9kaywgc3RhdGVfc3RyZW5ndGgsIHJlYmVsX3N0cmVuZ3RoX25hY2hpa2V0X3NjYWxlZCwgTGV2ZWxfb2ZfVGhyZWF0LCBldmVyeXRoaW5nKCkpCgpybShzY2FsZWRfZGF0YV9lbnRpcmUpCndyaXRlLmNzdihtYWluX2Npdmlsd2Fyc19ldGhuaWNfbG9uZ2l0dWRuYWwsIkxvbmdpdHVkaW5hbF9GaW5hbF9ldGhuaWNfb25seS5jc3YiKQoKCiMjIyBMYXN0bHkgQ29udmVydGluZyBPdXRjb21lIGludG8gYSBjaHIgY2F0ZWdvcmljYWwgdmFyaWFibGUgd2hlcmUgMCA9IGxvc2UgKHJlYmVsIGxvc3MpLCAxID0gZHJhdyAoc2V0dGxlbWVudCksIDIgPSB3aW4gKHJlYmVsIHZpY3RvcnkpCm1haW5fY2l2aWx3YXJzX2V0aG5pY19sb25naXR1ZG5hbCA8LSBtYWluX2Npdmlsd2Fyc19ldGhuaWNfbG9uZ2l0dWRuYWwgJT4lIAogIG11dGF0ZShvdXRjb21lX2NhdCA9ICBjYXNlX3doZW4oCiAgICBvdXRjb21lID09IDAgfiAiTG9zcyIsCiAgICBvdXRjb21lID09IDEgfiAiRHJhdyIsCiAgICBvdXRjb21lICA9PSAyIH4gIldpbiIsCiAgICBUUlVFIH4gTkFfY2hhcmFjdGVyXwogICkpCiAgCm1haW5fY2l2aWx3YXJzX2V0aG5pY19sb25naXR1ZG5hbCRvdXRjb21lX2NhdCA8LSBmYWN0b3IobWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsJG91dGNvbWVfY2F0KQpgYGAKCiMgQmFzaWMgRGVzY3JpcHRpdmVzIHsudGFic2V0fQoKIyMgQ2FzZXMgYnkgRXRobmljIENvbmZsaWN0IGFuZCBDYXNlcyBieSBsZXZlbHMgb2YgQ29ldGhuaWNpdHkgaW4gRXRobmljIENvbmZsaWN0cwoKYGBge3IgZWNobz1GQUxTRSwgd2FybmluZz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0KIyMjIFBlcmNlbnRhZ2Ugd2lzZSBkaXN0cmlidXRpb24gb2YgdGhlIHR5cGUgb2YgQ2l2aWwgV2FycyAoRXRobmljL05vbi1FdGhuaWMpCgptYWluX2Npdmlsd2Fyc19wZXJjZW50YWdlIDwtIG1haW5fY2l2aWx3YXJzICU+JSAKICBncm91cF9ieShjb25mbGljdF9ldGhuaWMpICU+JSAKICBzdW1tYXJpc2UodG90YWxfY2FzZXMgPSBuKCkpICU+JSAKICBtdXRhdGUocGVyY2VudGFnZV9vZl9jYXNlcyA9IHRvdGFsX2Nhc2VzL3N1bSh0b3RhbF9jYXNlcykqMTAwKQoKCmtuaXRyOjprYWJsZShtYWluX2Npdmlsd2Fyc19wZXJjZW50YWdlLCBmb3JtYXQgPSAiaHRtbCIsIGNhcHRpb24gPSAiUGVyY2VudGFnZSB3aXNlIGRpc3RyaWJ1dGlvbiBvZiB0aGUgdHlwZSBvZiBDaXZpbCBXYXJzIChFdGhuaWMvTm9uLUV0aG5pYykiKSAlPiUKICBrYWJsZV9zdHlsaW5nKGJvb3RzdHJhcF9vcHRpb25zID0gYygic3RyaXBlZCIsICJob3ZlciIsICJjb25kZW5zZWQiLCAicmVzcG9uc2l2ZSIpLAogICAgICAgICAgICAgICAgZnVsbF93aWR0aCA9IEZBTFNFKQoKIyMjIERpc3RyaWJ1dGlvbiBieSBDby1ldGhuaWNpdHkgU3RhdHVzIGluIEV0aG5pYyBDaXZpbCBXYXJzCm1haW5fY2l2aWx3YXJzX2V0aG5pY19sb25naXR1ZG5hbF9wZXJjZW50YWdlIDwtIG1haW5fY2l2aWx3YXJzX2V0aG5pY19sb25naXR1ZG5hbCAlPiUgCiAgZ3JvdXBfYnkoY29ldGhuaWNfcmViZWxfcGdtX25hY2hpa2V0KSAlPiUgCiAgc3VtbWFyaXNlKHRvdGFsX2Nhc2VzID0gbigpKSAlPiUgCiAgbXV0YXRlKHBlcmNlbnRhZ2Vfb2ZfY2FzZXMgPSB0b3RhbF9jYXNlcy9zdW0odG90YWxfY2FzZXMpKjEwMCkKCmtuaXRyOjprYWJsZShtYWluX2Npdmlsd2Fyc19ldGhuaWNfbG9uZ2l0dWRuYWxfcGVyY2VudGFnZSwgZm9ybWF0ID0gImh0bWwiLCBjYXB0aW9uID0gIkRpc3RyaWJ1dGlvbiBieSBDby1ldGhuaWNpdHkgU3RhdHVzIGluIEV0aG5pYyBDaXZpbCBXYXJzIikgJT4lCiAga2FibGVfc3R5bGluZyhib290c3RyYXBfb3B0aW9ucyA9IGMoInN0cmlwZWQiLCAiaG92ZXIiLCAiY29uZGVuc2VkIiwgInJlc3BvbnNpdmUiKSwKICAgICAgICAgICAgICAgIGZ1bGxfd2lkdGggPSBGQUxTRSkKCmBgYAoKIyMgQmFzaWMgQ3Jvc3NUYWJzIG9uIFJlYmVsIFN0cmVuZ3RoIChOYWNoaWtldCkgYW5kIENvZXRobmljaXR5IChOYWNoaWtldCBhbmQgREspCgpgYGB7ciBlY2hvPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQoKIyBSZWJlbCBTdHJlbmd0aCAoTmFjaGlrZXQpIGFuZCBDb19ldGhuaWNpdHkgKE5hY2hpa2V0KQpDcm9zc1RhYmxlKG1haW5fY2l2aWx3YXJzX2V0aG5pY19sb25naXR1ZG5hbCRyZWJlbF9zdHJlbmd0aF9uYWNoaWtldF9zY2FsZWQsbWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsJGNvZXRobmljX3JlYmVsX3BnbV9uYWNoaWtldF9iaW5hcnksIHByb3AuY2hpc3EgPSBGQUxTRSwKICAgICAgICAgICBwcm9wLnQgPSBGQUxTRSwgICAgICAgIyBIaWRlIHByb3BvcnRpb25zCiAgICAgICAgICAgZG5uID0gYygiUmViZWwgU3RyZW5ndGggKE5hY2hpa2V0KSIsICJDb2V0aG5pY2l0eV9OYWNoaWtldF9WYXJpYWJsZSBCaW5hcnkiKSwgICMgQ3VzdG9tIGNvbHVtbiBuYW1lcwogICAgICAgICAgIGNhcHRpb24gPSAiQ3Jvc3N0YWIgZm9yIFJlYmVsIFN0cmVuZ3RoIChOYWNoaWtldCkgYW5kIENvZXRobmljaXR5IG9mIFJlYmVscy1NaWxpdGlhIChOYWNoaWtldCkiLAogICAgICAgICAgIGZvcm1hdCA9ICJTUFNTIikKCmNoaXNxX3Rlc3RfMSA8LSBjaGlzcS50ZXN0KG1haW5fY2l2aWx3YXJzX2V0aG5pY19sb25naXR1ZG5hbCRyZWJlbF9zdHJlbmd0aF9uYWNoaWtldF9zY2FsZWQsIG1haW5fY2l2aWx3YXJzX2V0aG5pY19sb25naXR1ZG5hbCRjb2V0aG5pY19yZWJlbF9wZ21fbmFjaGlrZXRfYmluYXJ5KQpwcmludChjaGlzcV90ZXN0XzEpCgoKIyBSZWJlbCBTdHJlbmd0aCAoTmFjaGlrZXQpIGFuZCBDb19ldGhuaWNpdHkgTmFjaGlrZXQgKG5vbi1iaW5hcnkpCkNyb3NzVGFibGUobWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsJHJlYmVsX3N0cmVuZ3RoX25hY2hpa2V0X3NjYWxlZCxtYWluX2Npdmlsd2Fyc19ldGhuaWNfbG9uZ2l0dWRuYWwkY29ldGhuaWNfcmViZWxfcGdtX25hY2hpa2V0LCBwcm9wLmNoaXNxID0gRkFMU0UsCiAgICAgICAgICAgcHJvcC50ID0gRkFMU0UsICAgICAgICMgSGlkZSBwcm9wb3J0aW9ucwogICAgICAgICAgIGRubiA9IGMoIlJlYmVsIFN0cmVuZ3RoIChOYWNoaWtldCkiLCAiQ29ldGhuaWNpdHlfTmFjaGlrZXRfVmFyaWFibGUiKSwgICMgQ3VzdG9tIGNvbHVtbiBuYW1lcwogICAgICAgICAgY2FwdGlvbiA9ICJDcm9zc3RhYiBmb3IgUmViZWwgU3RyZW5ndGggKE5hY2hpa2V0KSBhbmQgQ29ldGhuaWNpdHkgb2YgTm9uX2JpbmFyeSAoTmFjaGlrZXQpIiwKICAgICAgICAgIGZvcm1hdCA9ICJTUFNTIikKY2hpc3FfdGVzdF8yXzEgPC0gY2hpc3EudGVzdChtYWluX2Npdmlsd2Fyc19ldGhuaWNfbG9uZ2l0dWRuYWwkcmViZWxfc3RyZW5ndGhfbmFjaGlrZXRfc2NhbGVkLCBtYWluX2Npdmlsd2Fyc19ldGhuaWNfbG9uZ2l0dWRuYWwkY29ldGhuaWNfcmViZWxfcGdtX25hY2hpa2V0KQpwcmludChjaGlzcV90ZXN0XzJfMSkKCgojIFJlYmVsIFN0cmVuZ3RoIChOYWNoaWtldCkgYW5kIENvX2V0aG5pY2l0eSAoREspCkNyb3NzVGFibGUobWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsJHJlYmVsX3N0cmVuZ3RoX25hY2hpa2V0X3NjYWxlZCxtYWluX2Npdmlsd2Fyc19ldGhuaWNfbG9uZ2l0dWRuYWwkY29ldGhuaWNfcmViZWxfcGdtX2RrLCBwcm9wLmNoaXNxID0gRkFMU0UsCiAgICAgICAgICAgcHJvcC50ID0gRkFMU0UsICAgICAgICMgSGlkZSBwcm9wb3J0aW9ucwogICAgICAgICAgIGRubiA9IGMoIlJlYmVsIFN0cmVuZ3RoIChOYWNoaWtldCkiLCAiQ29ldGhuaWNpdHlfREtfVmFyaWFibGUiKSwgICMgQ3VzdG9tIGNvbHVtbiBuYW1lcwogICAgICAgICAgY2FwdGlvbiA9ICJDcm9zc3RhYiBmb3IgUmViZWwgU3RyZW5ndGggKE5hY2hpa2V0KSBhbmQgQ29ldGhuaWNpdHkgb2YgUmViZWxzLU1pbGl0aWEgKERLKSIsCiAgICAgICAgICBmb3JtYXQgPSAiU1BTUyIpCmNoaXNxX3Rlc3RfMiA8LSBjaGlzcS50ZXN0KG1haW5fY2l2aWx3YXJzX2V0aG5pY19sb25naXR1ZG5hbCRyZWJlbF9zdHJlbmd0aF9uYWNoaWtldF9zY2FsZWQsIG1haW5fY2l2aWx3YXJzX2V0aG5pY19sb25naXR1ZG5hbCRjb2V0aG5pY19yZWJlbF9wZ21fZGspCnByaW50KGNoaXNxX3Rlc3RfMikKCgpgYGAKCiMjIEJhc2ljIENyb3NzdGFicyBvbiBTdGF0ZSBTdHJlbmd0aCBhbmQgQ28tZXRobmljaXR5CgpgYGB7ciBlY2hvPUZBTFNFLG1lc3NhZ2U9RkFMU0Usd2FybmluZz1GQUxTRX0KIyBTdGF0ZSBTdHJlbmd0aCBhbmQgQ29fZXRobmljaXR5IChOYWNoaWtldCkKQ3Jvc3NUYWJsZShtYWluX2Npdmlsd2Fyc19ldGhuaWNfbG9uZ2l0dWRuYWwkc3RhdGVfc3RyZW5ndGgsbWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsJGNvZXRobmljX3JlYmVsX3BnbV9uYWNoaWtldF9iaW5hcnksIHByb3AuY2hpc3EgPSBGQUxTRSwKICAgICAgICAgICBwcm9wLnQgPSBGQUxTRSwgICAgICAgIyBIaWRlIHByb3BvcnRpb25zCiAgICAgICAgICAgZG5uID0gYygiU3RhdGUgU3RyZW5ndGgiLCAiQ29ldGhuaWNpdHlfTmFjaGlrZXRfVmFyaWFibGUiKSwgICMgQ3VzdG9tIGNvbHVtbiBuYW1lcwogICAgICAgICAgY2FwdGlvbiA9ICJDcm9zc3RhYiBmb3IgU3RhdGUgU3RyZW5ndGggYW5kIENvZXRobmljaXR5IG9mIFJlYmVscy1NaWxpdGlhIChOYWNoaWtldCBCaW5hcnkpIiwKICAgICAgICAgIGZvcm1hdCA9ICJTUFNTIikKCmNoaXNxX3Rlc3RfMyA8LSBjaGlzcS50ZXN0KG1haW5fY2l2aWx3YXJzX2V0aG5pY19sb25naXR1ZG5hbCRzdGF0ZV9zdHJlbmd0aCwgbWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsJGNvZXRobmljX3JlYmVsX3BnbV9uYWNoaWtldF9iaW5hcnkpCnByaW50KGNoaXNxX3Rlc3RfMykKCiMgU3RhdGUgU3RyZW5ndGggYW5kIENvX2V0aG5pY2l0eSBOb24tQmluYXJ5IChOYWNoaWtldCkKQ3Jvc3NUYWJsZShtYWluX2Npdmlsd2Fyc19ldGhuaWNfbG9uZ2l0dWRuYWwkc3RhdGVfc3RyZW5ndGgsbWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsJGNvZXRobmljX3JlYmVsX3BnbV9uYWNoaWtldCwgcHJvcC5jaGlzcSA9IEZBTFNFLAogICAgICAgICAgIHByb3AudCA9IEZBTFNFLCAgICAgICAjIEhpZGUgcHJvcG9ydGlvbnMKICAgICAgICAgICBkbm4gPSBjKCJTdGF0ZSBTdHJlbmd0aCIsICJDb2V0aG5pY2l0eV9OYWNoaWtldF9WYXJpYWJsZSIpLCAgIyBDdXN0b20gY29sdW1uIG5hbWVzCiAgICAgICAgICBjYXB0aW9uID0gIkNyb3NzdGFiIGZvciBTdGF0ZSBTdHJlbmd0aCBhbmQgQ29ldGhuaWNpdHkgb2YgUmViZWxzLU1pbGl0aSBOb24tQmluYXJ5IE5hY2hpa2V0IiwKICAgICAgICAgIGZvcm1hdCA9ICJTUFNTIikKCmNoaXNxX3Rlc3RfM18xIDwtIGNoaXNxLnRlc3QobWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsJHN0YXRlX3N0cmVuZ3RoLCBtYWluX2Npdmlsd2Fyc19ldGhuaWNfbG9uZ2l0dWRuYWwkY29ldGhuaWNfcmViZWxfcGdtX25hY2hpa2V0KQpwcmludChjaGlzcV90ZXN0XzNfMSkKCiNTdGF0ZSBTdHJlbmd0aCBhbmQgQ29fZXRobmljaXR5IChESykKQ3Jvc3NUYWJsZShtYWluX2Npdmlsd2Fyc19ldGhuaWNfbG9uZ2l0dWRuYWwkc3RhdGVfc3RyZW5ndGgsbWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsJGNvZXRobmljX3JlYmVsX3BnbV9kaywgcHJvcC5jaGlzcSA9IEZBTFNFLAogICAgICAgICAgIHByb3AudCA9IEZBTFNFLCAgICAgICAjIEhpZGUgcHJvcG9ydGlvbnMKICAgICAgICAgICBkbm4gPSBjKCJTdGF0ZSBTdHJlbmd0aCIsICJDb2V0aG5pY2l0eV9ES19WYXJpYWJsZSIpLCAgIyBDdXN0b20gY29sdW1uIG5hbWVzCiAgICAgICAgICBjYXB0aW9uID0gIkNyb3NzdGFiIGZvciBTdGF0ZSBTdHJlbmd0aCBhbmQgQ29ldGhuaWNpdHkgb2YgUmViZWxzLU1pbGl0aWEgKERLKSIsCiAgICAgICAgICBmb3JtYXQgPSAiU1BTUyIpCgpjaGlzcV90ZXN0XzQgPC0gY2hpc3EudGVzdChtYWluX2Npdmlsd2Fyc19ldGhuaWNfbG9uZ2l0dWRuYWwkc3RhdGVfc3RyZW5ndGgsIG1haW5fY2l2aWx3YXJzX2V0aG5pY19sb25naXR1ZG5hbCRjb2V0aG5pY19yZWJlbF9wZ21fZGspCnByaW50KGNoaXNxX3Rlc3RfNCkKYGBgCgojIyBCYXNpYyBDcm9zc3RhYiBvbiBUaHJlYXQgUGVyY2VwdGlvbiBhbmQgQ29ldGhuaWNpdHkKCmBgYHtyIGVjaG89RkFMU0UsIHdhcm5pbmc9RkFMU0UsIG1lc3NhZ2U9RkFMU0V9CiMgTGV2ZWwgb2YgVGhyZWF0IGFuZCBDb19ldGhuaWNpdHkgKE5hY2hpa2V0KQpDcm9zc1RhYmxlKG1haW5fY2l2aWx3YXJzX2V0aG5pY19sb25naXR1ZG5hbCRMZXZlbF9vZl9UaHJlYXQsbWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsJGNvZXRobmljX3JlYmVsX3BnbV9uYWNoaWtldF9iaW5hcnksIHByb3AuY2hpc3EgPSBGQUxTRSwKICAgICAgICAgICBwcm9wLnQgPSBGQUxTRSwgICAgICAgIyBIaWRlIHByb3BvcnRpb25zCiAgICAgICAgICAgZG5uID0gYygiTGV2ZWwgb2YgVGhyZWF0IiwgIkNvZXRobmljaXR5X05hY2hpa2V0X1ZhcmlhYmxlIiksICAjIEN1c3RvbSBjb2x1bW4gbmFtZXMKICAgICAgICAgIGNhcHRpb24gPSAiQ3Jvc3N0YWIgZm9yIExldmVsIG9mIFRocmVhdCBhbmQgQ29ldGhuaWNpdHkgb2YgUmViZWxzLU1pbGl0aWEgKE5hY2hpa2V0KSIsCiAgICAgICAgICBmb3JtYXQgPSAiU1BTUyIpCgpjaGlzcV90ZXN0XzUgPC0gY2hpc3EudGVzdChtYWluX2Npdmlsd2Fyc19ldGhuaWNfbG9uZ2l0dWRuYWwkTGV2ZWxfb2ZfVGhyZWF0LCBtYWluX2Npdmlsd2Fyc19ldGhuaWNfbG9uZ2l0dWRuYWwkY29ldGhuaWNfcmViZWxfcGdtX25hY2hpa2V0X2JpbmFyeSkKcHJpbnQoY2hpc3FfdGVzdF81KQoKCiMgTGV2ZWwgb2YgVGhyZWF0IGFuZCBDb19ldGhuaWNpdHkgTm9uIEJpbmFyeSAoTmFjaGlrZXQpCkNyb3NzVGFibGUobWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsJExldmVsX29mX1RocmVhdCxtYWluX2Npdmlsd2Fyc19ldGhuaWNfbG9uZ2l0dWRuYWwkY29ldGhuaWNfcmViZWxfcGdtX25hY2hpa2V0LCBwcm9wLmNoaXNxID0gRkFMU0UsCiAgICAgICAgICAgcHJvcC50ID0gRkFMU0UsICAgICAgICMgSGlkZSBwcm9wb3J0aW9ucwogICAgICAgICAgIGRubiA9IGMoIkxldmVsIG9mIFRocmVhdCIsICJDb2V0aG5pY2l0eV9OYWNoaWtldF9WYXJpYWJsZSIpLCAgIyBDdXN0b20gY29sdW1uIG5hbWVzCiAgICAgICAgICBjYXB0aW9uID0gIkNyb3NzdGFiIGZvciBMZXZlbCBvZiBUaHJlYXQgYW5kIENvZXRobmljaXR5IG9mIFJlYmVscy1NaWxpdGlhIE5vbiBCaW5hcnkgdmFyIE5hY2hpa2V0IiwKICAgICAgICAgIGZvcm1hdCA9ICJTUFNTIikKCmNoaXNxX3Rlc3RfNV8xIDwtIGNoaXNxLnRlc3QobWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsJExldmVsX29mX1RocmVhdCwgbWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsJGNvZXRobmljX3JlYmVsX3BnbV9uYWNoaWtldCkKcHJpbnQoY2hpc3FfdGVzdF81XzEpCgoKI0xldmVsIG9mIFRocmVhdCBhbmQgQ29fZXRobmljaXR5IChESykpCkNyb3NzVGFibGUobWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsJExldmVsX29mX1RocmVhdCxtYWluX2Npdmlsd2Fyc19ldGhuaWNfbG9uZ2l0dWRuYWwkY29ldGhuaWNfcmViZWxfcGdtX2RrLCBwcm9wLmNoaXNxID0gRkFMU0UsCiAgICAgICAgICAgcHJvcC50ID0gRkFMU0UsICAgICAgICMgSGlkZSBwcm9wb3J0aW9ucwogICAgICAgICAgIGRubiA9IGMoIkxldmVsIG9mIFRocmVhdCIsICJDb2V0aG5pY2l0eV9ES19WYXJpYWJsZSIpLCAgIyBDdXN0b20gY29sdW1uIG5hbWVzCiAgICAgICAgICBjYXB0aW9uID0gIkNyb3NzdGFiIGZvciBMZXZlbCBvZiBUaHJlYXQgYW5kIENvZXRobmljaXR5IG9mIFJlYmVscy1NaWxpdGlhIChESykiLAogICAgICAgICAgZm9ybWF0ID0gIlNQU1MiKQoKY2hpc3FfdGVzdF82IDwtIGNoaXNxLnRlc3QobWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsJExldmVsX29mX1RocmVhdCwgbWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsJGNvZXRobmljX3JlYmVsX3BnbV9kaykKcHJpbnQoY2hpc3FfdGVzdF82KQpgYGAKCiMjIEJhc2ljIENyb3NzdGFicyBvbiBSZWJlbCBTdHJlbmd0aCAoQWRhbSBOU0EpIGFuZCBDb2V0aG5pY2l0eSAobmFjaGlrZXQgYW5kIERLKQpgYGB7ciBlY2hvPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQojIFJlYmVsIFN0cmVuZ3RoIChBZGFtIE5TQSkgYW5kIENvX2V0aG5pY2l0eSAoTmFjaGlrZXQpCkNyb3NzVGFibGUobWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsJHJlYnN0cmVuZ3RoX2FkYW1fbnNhLG1haW5fY2l2aWx3YXJzX2V0aG5pY19sb25naXR1ZG5hbCRjb2V0aG5pY19yZWJlbF9wZ21fbmFjaGlrZXRfYmluYXJ5LCBwcm9wLmNoaXNxID0gRkFMU0UsCiAgICAgICAgICAgcHJvcC50ID0gRkFMU0UsICAgICAgICMgSGlkZSBwcm9wb3J0aW9ucwogICAgICAgICAgIGRubiA9IGMoIlJlYmVsIFN0cmVuZ3RoIChBZGFtIE5TQSkiLCAiQ29ldGhuaWNpdHlfTmFjaGlrZXRfVmFyaWFibGUgQmluYXJ5IiksICAjIEN1c3RvbSBjb2x1bW4gbmFtZXMKICAgICAgICAgICBjYXB0aW9uID0gIkNyb3NzdGFiIGZvciBSZWJlbCBTdHJlbmd0aCAoQWRhbSBOU0EpIGFuZCBDb2V0aG5pY2l0eSBvZiBSZWJlbHMtTWlsaXRpYSAoTmFjaGlrZXQpIiwKICAgICAgICAgICBmb3JtYXQgPSAiU1BTUyIpCgpjaGlzcV90ZXN0XzcgPC0gY2hpc3EudGVzdChtYWluX2Npdmlsd2Fyc19ldGhuaWNfbG9uZ2l0dWRuYWwkcmVic3RyZW5ndGhfYWRhbV9uc2EsIG1haW5fY2l2aWx3YXJzX2V0aG5pY19sb25naXR1ZG5hbCRjb2V0aG5pY19yZWJlbF9wZ21fbmFjaGlrZXRfYmluYXJ5KQpwcmludChjaGlzcV90ZXN0XzcpCgoKIyBSZWJlbCBTdHJlbmd0aCAoQWRhbSBOU0EpIGFuZCBDb19ldGhuaWNpdHkgTm9uLUJpbmFyeSAoTmFjaGlrZXQpCkNyb3NzVGFibGUobWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsJHJlYnN0cmVuZ3RoX2FkYW1fbnNhLG1haW5fY2l2aWx3YXJzX2V0aG5pY19sb25naXR1ZG5hbCRjb2V0aG5pY19yZWJlbF9wZ21fbmFjaGlrZXQsIHByb3AuY2hpc3EgPSBGQUxTRSwKICAgICAgICAgICBwcm9wLnQgPSBGQUxTRSwgICAgICAgIyBIaWRlIHByb3BvcnRpb25zCiAgICAgICAgICAgZG5uID0gYygiUmViZWwgU3RyZW5ndGggKEFkYW0gTlNBKSIsICJDb2V0aG5pY2l0eV9OYWNoaWtldF9WYXJpYWJsZSBCaW5hcnkiKSwgICMgQ3VzdG9tIGNvbHVtbiBuYW1lcwogICAgICAgICAgIGNhcHRpb24gPSAiQ3Jvc3N0YWIgZm9yIFJlYmVsIFN0cmVuZ3RoIChBZGFtIE5TQSkgYW5kIENvZXRobmljaXR5IG9mIFJlYmVscy1NaWxpdGlhIE5vbi1CaW5hcnkgKE5hY2hpa2V0KSIsCiAgICAgICAgICAgZm9ybWF0ID0gIlNQU1MiKQoKY2hpc3FfdGVzdF83XzEgPC0gY2hpc3EudGVzdChtYWluX2Npdmlsd2Fyc19ldGhuaWNfbG9uZ2l0dWRuYWwkcmVic3RyZW5ndGhfYWRhbV9uc2EsIG1haW5fY2l2aWx3YXJzX2V0aG5pY19sb25naXR1ZG5hbCRjb2V0aG5pY19yZWJlbF9wZ21fbmFjaGlrZXQpCnByaW50KGNoaXNxX3Rlc3RfN18xKQoKCiMgUmViZWwgU3RyZW5ndGggKEFkYW0gTlNBKSBhbmQgQ29fZXRobmljaXR5IChESykKQ3Jvc3NUYWJsZShtYWluX2Npdmlsd2Fyc19ldGhuaWNfbG9uZ2l0dWRuYWwkcmVic3RyZW5ndGhfYWRhbV9uc2EsbWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsJGNvZXRobmljX3JlYmVsX3BnbV9kaywgcHJvcC5jaGlzcSA9IEZBTFNFLAogICAgICAgICAgIHByb3AudCA9IEZBTFNFLCAgICAgICAjIEhpZGUgcHJvcG9ydGlvbnMKICAgICAgICAgICBkbm4gPSBjKCJSZWJlbCBTdHJlbmd0aCAoQWRhbSkiLCAiQ29ldGhuaWNpdHlfREtfVmFyaWFibGUiKSwgICMgQ3VzdG9tIGNvbHVtbiBuYW1lcwogICAgICAgICAgY2FwdGlvbiA9ICJDcm9zc3RhYiBmb3IgUmViZWwgU3RyZW5ndGggKEFkYW0pIGFuZCBDb2V0aG5pY2l0eSBvZiBSZWJlbHMtTWlsaXRpYSAoREspIiwKICAgICAgICAgIGZvcm1hdCA9ICJTUFNTIikKY2hpc3FfdGVzdF84IDwtIGNoaXNxLnRlc3QobWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsJHJlYnN0cmVuZ3RoX2FkYW1fbnNhLCBtYWluX2Npdmlsd2Fyc19ldGhuaWNfbG9uZ2l0dWRuYWwkY29ldGhuaWNfcmViZWxfcGdtX2RrKQpwcmludChjaGlzcV90ZXN0XzgpCmBgYAoKIyMgQmFzaWMgQ3Jvc3N0YWJzIG9uIFN0YXRlIFN0cmVuZ3RoIGFuZCBSZWJlbCBTdHJlbmd0aCAoQWRhbSBOU0EgYW5kIE5hY2hpa2V0IFNjYWxlZCkKCmBgYHtyIGVjaG89RkFMU0UsIHdhcm5pbmc9RkFMU0UsIG1lc3NhZ2U9RkFMU0V9CiMgU3RhdGUgU3RyZW5ndGggYW5kIFJlYmVsIFN0cmVuZ3RoIChBZGFtIE5TQSkKQ3Jvc3NUYWJsZShtYWluX2Npdmlsd2Fyc19ldGhuaWNfbG9uZ2l0dWRuYWwkc3RhdGVfc3RyZW5ndGgsbWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsJHJlYnN0cmVuZ3RoX2FkYW1fbnNhLCBwcm9wLmNoaXNxID0gRkFMU0UsCiAgICAgICAgICAgcHJvcC50ID0gRkFMU0UsICAgICAgICMgSGlkZSBwcm9wb3J0aW9ucwogICAgICAgICAgIGRubiA9IGMoIlN0YXRlIFN0cmVuZ3RoIiwgIlJlYiBTdHJlbmd0aCBBREFNIE5TQSIpLCAgIyBDdXN0b20gY29sdW1uIG5hbWVzCiAgICAgICAgICBjYXB0aW9uID0gIkNyb3NzdGFiIGZvciBTdGF0ZSBTdHJlbmd0aCBhbmQgUmViIFN0cmVuZ3RoIEFkYW0gTlNBKSIsCiAgICAgICAgICBmb3JtYXQgPSAiU1BTUyIpCgpjaGlzcV90ZXN0XzkgPC0gY2hpc3EudGVzdChtYWluX2Npdmlsd2Fyc19ldGhuaWNfbG9uZ2l0dWRuYWwkc3RhdGVfc3RyZW5ndGgsIG1haW5fY2l2aWx3YXJzX2V0aG5pY19sb25naXR1ZG5hbCRyZWJzdHJlbmd0aF9hZGFtX25zYSkKcHJpbnQoY2hpc3FfdGVzdF85KQoKI1N0YXRlIFN0cmVuZ3RoIGFuZCBSZWJlbCBTdHJlbmd0aCAoTmFjaGlrZXQpCkNyb3NzVGFibGUobWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsJHN0YXRlX3N0cmVuZ3RoLG1haW5fY2l2aWx3YXJzX2V0aG5pY19sb25naXR1ZG5hbCRyZWJlbF9zdHJlbmd0aF9uYWNoaWtldF9zY2FsZWQsIHByb3AuY2hpc3EgPSBGQUxTRSwKICAgICAgICAgICBwcm9wLnQgPSBGQUxTRSwgICAgICAgIyBIaWRlIHByb3BvcnRpb25zCiAgICAgICAgICAgZG5uID0gYygiU3RhdGUgU3RyZW5ndGgiLCAiUmViZWwgU3RyZW5ndGggTmFjaGlrZXQgU2NhbGVkIiksICAjIEN1c3RvbSBjb2x1bW4gbmFtZXMKICAgICAgICAgIGNhcHRpb24gPSAiQ3Jvc3N0YWIgZm9yIFN0YXRlIFN0cmVuZ3RoIGFuZCBSZWJlbCBTdHJlbmd0aCBOYWNoaWtldCIsCiAgICAgICAgICBmb3JtYXQgPSAiU1BTUyIpCgpjaGlzcV90ZXN0XzEwIDwtIGNoaXNxLnRlc3QobWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsJHN0YXRlX3N0cmVuZ3RoLCBtYWluX2Npdmlsd2Fyc19ldGhuaWNfbG9uZ2l0dWRuYWwkcmViZWxfc3RyZW5ndGhfbmFjaGlrZXRfc2NhbGVkKQpwcmludChjaGlzcV90ZXN0XzEwKQoKYGBgCgojIyBCYXNpYyBjcm9zc3RhYnMgb24gT3V0Y29tZSBCaW5hcnkgREsgYW5kIENvZXRobmljaXR5IE5hY2hpa2V0L0RLCgpgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQoKCiMgT3V0Y29tZSBESyBhbmQgQ29ldGhuaWNpdHkgQmluYXJ5IE5hY2hpa2V0CkNyb3NzVGFibGUobWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsJG91dGNvbWVfYmluYXJ5X3JlYmVsX3ZpY3Rvcnlfa2F1ciwgbWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsJGNvZXRobmljX3JlYmVsX3BnbV9uYWNoaWtldF9iaW5hcnksIHByb3AuY2hpc3EgPSBGQUxTRSwKICAgICAgICAgICBwcm9wLnQgPSBGQUxTRSwgICAgICAgIyBIaWRlIHByb3BvcnRpb25zCiAgICAgICAgICAgZG5uID0gYygiT3V0Y29tZSIsICJDb2V0aG5pYyBOYWNoaWtldCIpLCAgIyBDdXN0b20gY29sdW1uIG5hbWVzCiAgICAgICAgICBjYXB0aW9uID0gIkNyb3NzdGFiIGZvciBPdXRjb21lIGFuZCBDb2V0aG5pYyBOYWNoaWtldCIsCiAgICAgICAgICBmb3JtYXQgPSAiU1BTUyIpCgpjaGlzcV90ZXN0XzExIDwtIGNoaXNxLnRlc3QobWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsJG91dGNvbWVfYmluYXJ5X3JlYmVsX3ZpY3Rvcnlfa2F1ciwgbWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsJGNvZXRobmljX3JlYmVsX3BnbV9uYWNoaWtldF9iaW5hcnkpCnByaW50KGNoaXNxX3Rlc3RfMTEpCgoKIyBPdXRjb21lIERLIGFuZCBDb2V0aG5pY2l0eSBCaW5hcnkgREsKQ3Jvc3NUYWJsZShtYWluX2Npdmlsd2Fyc19ldGhuaWNfbG9uZ2l0dWRuYWwkb3V0Y29tZV9iaW5hcnlfcmViZWxfdmljdG9yeV9rYXVyLCBtYWluX2Npdmlsd2Fyc19ldGhuaWNfbG9uZ2l0dWRuYWwkY29ldGhuaWNfcmViZWxfcGdtX2RrLCBwcm9wLmNoaXNxID0gRkFMU0UsCiAgICAgICAgICAgcHJvcC50ID0gRkFMU0UsICAgICAgICMgSGlkZSBwcm9wb3J0aW9ucwogICAgICAgICAgIGRubiA9IGMoIk91dGNvbWUiLCAiQ29ldGhuaWMgKERLKSIpLCAgIyBDdXN0b20gY29sdW1uIG5hbWVzCiAgICAgICAgICBjYXB0aW9uID0gIkNyb3NzdGFiIGZvciBPdXRjb21lIGFuZCBDb2V0aG5pY2l0eSBESyIsCiAgICAgICAgICBmb3JtYXQgPSAiU1BTUyIpCgpjaGlzcV90ZXN0XzEyIDwtIGNoaXNxLnRlc3QobWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsJHN0YXRlX3N0cmVuZ3RoLCBtYWluX2Npdmlsd2Fyc19ldGhuaWNfbG9uZ2l0dWRuYWwkY29ldGhuaWNfcmViZWxfcGdtX2RrKQpwcmludChjaGlzcV90ZXN0XzEyKQoKYGBgCgojIFJlZ3Jlc3Npb25zIHsudGFic2V0fQoKIyMgUmVncmVzc2lvbiBmb3IgY29fZXRobmljaXR5X25hY2hpa2V0IGFzIERWIHsudGFic2V0fQoKIyMjIEJpdmFyaWF0ZSBNb2RlbCAxOiBDb2V0aG5pYyBCaW5hcnkgYW5kIENvdW50cnkgRml4ZWQgRWZmZWN0cwoKYGBge3IgZWNobz1GQUxTRSx3YXJuaW5nPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQptb2RlbF9jb2V0aG5pY19iaXZhcmlhdGUxIDwtIGZlb2xzKGNvZXRobmljX3JlYmVsX3BnbV9uYWNoaWtldF9iaW5hcnkgfiBMZXZlbF9vZl9UaHJlYXQgfCBnb3Zlcm5tZW50LCBkYXRhID0gbWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsLCBjbHVzdGVyID0gfmdvdmVybm1lbnQsIG5hLmFjdGlvbiA9IG5hLm9taXQpCgpmaXhlc3Q6OmV0YWJsZShtb2RlbF9jb2V0aG5pY19iaXZhcmlhdGUxKQpgYGAKSW50ZXJwcmV0YXRpb246IEluIHRoaXMgYml2YXJpYXRlIG1vZGVsIExldmVsIG9mIHRocmVhdCBzZWVtcyB0byBzaWduaWZpY2FudGx5IGltcGFjdCB0aGUgRFYuIEEgdW5pdCBpbmNyZWFzZSBpbiB0aGUgbGV2ZWwgb2YgdGhyZWF0IHJlZHVjZXMgdGhlIHByb2JhYmlsaXR5IG9mIGNvLWV0aG5pY2l0eSBiZXR3ZWVuIHJlYmVsIGdyb3VwcyBhbmQgUEdNIGJ5IGFsbW9zdCAzOSUgKHAgPCAwLjAwMSkuIFRoaXMgbW9kZWwgYWNjb3VudHMgZm9yIDU4JSBvZiB0aGUgdmFyaWF0aW9uIHdpdGggR292ZXJubWVudCBmaXhlZCBlZmZlY3RzIGFuZCBTRSBjbHVzdGVyZWQgYXQgdGhlIGxldmVsIG9mIGdvdmVybm1lbnQuCgojIyMgQml2YXJpYXRlIE1vZGVsIDI6IENvZXRobmljIEJpbmFyeSBhbmQgQ29uZmxpY3QgRml4ZWQgRWZmZWN0cwoKYGBge3IgZWNobz1GQUxTRSx3YXJuaW5nPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQptb2RlbF9jb2V0aG5pY19iaXZhcmlhdGUyIDwtIGZlb2xzKGNvZXRobmljX3JlYmVsX3BnbV9uYWNoaWtldF9iaW5hcnkgfiBMZXZlbF9vZl9UaHJlYXQgfCB1Y2RwX2NvbmZsaWN0aWQsIGRhdGEgPSBtYWluX2Npdmlsd2Fyc19ldGhuaWNfbG9uZ2l0dWRuYWwsIGNsdXN0ZXIgPSB+Z292ZXJubWVudCkKCmZpeGVzdDo6ZXRhYmxlKG1vZGVsX2NvZXRobmljX2JpdmFyaWF0ZTIpCmBgYAoKSW50ZXJwcmV0YXRpb246IEluIHRoaXMgYml2YXJpYXRlIG1vZGVsIExldmVsIG9mIHRocmVhdCBzZWVtcyB0byBzaWduaWZpY2FudGx5IGltcGFjdCB0aGUgRFYuIEEgdW5pdCBpbmNyZWFzZSBpbiB0aGUgbGV2ZWwgb2YgdGhyZWF0IHJlZHVjZXMgdGhlIHByb2JhYmlsaXR5IG9mIGNvLWV0aG5pY2l0eSBiZXR3ZWVuIHJlYmVsIGdyb3VwcyBhbmQgUEdNIGJ5IGFsbW9zdCA0OCUgKHAgPCAwLjAwMSkuIFRoaXMgbW9kZWwgYWNjb3VudHMgZm9yIDYwJSBvZiB0aGUgdmFyaWF0aW9uIGluIGNvZXRobmljaXR5IHZhcmlhYmxlIHdpdGggQ29uZmxpY3QgZml4ZWQgZWZmZWN0cyBhbmQgU0UgY2x1c3RlcmVkIGF0IHRoZSBsZXZlbCBvZiBnb3Zlcm5tZW50LgoKIyMjIEJpdmFyaWF0ZSBNb2RlbCAzOiBDb2V0aG5pYyBOb24gQmluYXJ5IGFuZCBHb3Zlcm5tZW50IEZpeGVkIEVmZmVjdHMKCmBgYHtyIGVjaG89RkFMU0Usd2FybmluZz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0KbW9kZWxfY29ldGhuaWNfYml2YXJpYXRlMyA8LSBmZW9scyhjb2V0aG5pY19yZWJlbF9wZ21fbmFjaGlrZXQgfiBMZXZlbF9vZl9UaHJlYXQgfCBnb3Zlcm5tZW50LCBkYXRhID0gbWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsLCBjbHVzdGVyID0gfmdvdmVybm1lbnQsIG5hLmFjdGlvbiA9IG5hLm9taXQpCgpmaXhlc3Q6OmV0YWJsZShtb2RlbF9jb2V0aG5pY19iaXZhcmlhdGUzKQoKYGBgCkludGVycHJldGF0aW9uOiBJbiB0aGlzIGJpdmFyaWF0ZSBtb2RlbCBMZXZlbCBvZiB0aHJlYXQgc2VlbXMgdG8gaW1wYWN0IHRoZSBEViBidXQgbm90IGF0IHRoZSBjb252ZW50aW9uYWwgNSUgbGV2ZWwgYnV0IGluc3RlYWQgYXQgdGhlIDEwJSBsZXZlbC4gQSB1bml0IGluY3JlYXNlIGluIHRoZSBsZXZlbCBvZiB0aHJlYXQgcmVkdWNlcyB0aGUgcHJvYmFiaWxpdHkgb2YgY28tZXRobmljaXR5IGJldHdlZW4gcmViZWwgZ3JvdXBzIGFuZCBQR00gYnkgYWxtb3N0IDI5LjUlIChwIDwgMC4xKS4gVGhpcyBtb2RlbCBhY2NvdW50cyBmb3IgNTMuODYlIG9mIHRoZSB2YXJpYXRpb24gaW4gY29ldGhuaWNpdHkgdmFyaWFibGUgd2l0aCBnb3Zlcm5tZW50IGZpeGVkIGVmZmVjdHMgYW5kIFNFIGNsdXN0ZXJlZCBhdCB0aGUgbGV2ZWwgb2YgZ292ZXJubWVudC4KCiMjIyBCaXZhcmlhdGUgTW9kZWwgNDogQ29ldGhuaWMgTm9uIEJpbmFyeSBhbmQgY29uZmxpY3QgRml4ZWQgRWZmZWN0cwoKYGBge3IgZWNobz1GQUxTRSx3YXJuaW5nPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQptb2RlbF9jb2V0aG5pY19iaXZhcmlhdGU0IDwtIGZlb2xzKGNvZXRobmljX3JlYmVsX3BnbV9uYWNoaWtldCB+IExldmVsX29mX1RocmVhdCB8IHVjZHBfY29uZmxpY3RpZCwgZGF0YSA9IG1haW5fY2l2aWx3YXJzX2V0aG5pY19sb25naXR1ZG5hbCwgY2x1c3RlciA9IH5nb3Zlcm5tZW50KQoKZml4ZXN0OjpldGFibGUobW9kZWxfY29ldGhuaWNfYml2YXJpYXRlNCkKCmBgYAoKSW50ZXJwcmV0YXRpb246IEluIHRoaXMgYml2YXJpYXRlIG1vZGVsIExldmVsIG9mIHRocmVhdCBzZWVtcyB0byBpbXBhY3QgdGhlIERWIGJ1dCBub3QgYXQgdGhlIGNvbnZlbnRpb25hbCA1JSBsZXZlbCBidXQgaW5zdGVhZCBhdCB0aGUgMTAlIGxldmVsLiBBIHVuaXQgaW5jcmVhc2UgaW4gdGhlIGxldmVsIG9mIHRocmVhdCByZWR1Y2VzIHRoZSBwcm9iYWJpbGl0eSBvZiBjby1ldGhuaWNpdHkgYmV0d2VlbiByZWJlbCBncm91cHMgYW5kIFBHTSBieSBhbG1vc3QgMzYuMjUlIChwIDwgMC4xKS4gVGhpcyBtb2RlbCBhY2NvdW50cyBmb3IgNTUuNjUlIG9mIHRoZSB2YXJpYXRpb24gaW4gY28tZXRobmljaXR5IHZhcmlhYmxlIHdpdGggY29uZmxpY3QgZml4ZWQgZWZmZWN0cyBhbmQgU0UgY2x1c3RlcmVkIGF0IHRoZSBsZXZlbCBvZiBnb3Zlcm5tZW50LgoKIyMjIEZpcnN0IE1vZGVsCgoqKlNpbXBsZSBMaW5lYXIgTW9kZWwgd2l0aCBubyBmaXhlZCBlZmZlY3RzKioKCmBgYHtyIGVjaG89RkFMU0Usd2FybmluZz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0KCgptb2RlbF9jb2V0aG5pY2l0eV9uYWNoaWtldF8xIDwtICBmZW9scyhjb2V0aG5pY19yZWJlbF9wZ21fbmFjaGlrZXRfYmluYXJ5IH4gcG9saXR5MiArTGV2ZWxfb2ZfVGhyZWF0ICsgc3RhdGVfc3RyZW5ndGggKyByZWJlbF9zdHJlbmd0aF9uYWNoaWtldF9zY2FsZWQgKyBkdXJhdGlvbl95ZWFyICsgZXRocG9sLAogICAgICAgICAgICAgICBkYXRhID0gbWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsKQoKZml4ZXN0OjpldGFibGUobW9kZWxfY29ldGhuaWNpdHlfbmFjaGlrZXRfMSkKYGBgCgpJbnRlcnByZXRhdGlvbjogUG9saXR5MiBzaWduaWZpY2FudGx5IGluZmx1ZW5jZXMgdGhpcyBwcm9iYWJpbGl0eSwgd2l0aCBlYWNoIHVuaXQgaW5jcmVhc2UgaW4gdGhlIHBvbGl0eSBzY29yZSBhc3NvY2lhdGVkIHdpdGggYSAyLjkxJSByaXNlIGluIHRoZSBsaWtlbGlob29kIG9mIGNvZXRobmljaXR5IChwIDwgMC4wMDEpLiBTaW1pbGFybHksIHRoZSBMZXZlbCBvZiBUaHJlYXQgaGFzIGEgc3Vic3RhbnRpYWwgaW1wYWN0LCBpbmNyZWFzaW5nIHRoZSBwcm9iYWJpbGl0eSBieSA0NC44MCUgKHAgPCAwLjAwMSksIHN1Z2dlc3RpbmcgdGhhdCBoaWdoZXIgdGhyZWF0cyBkcml2ZSBjbG9zZXIgZXRobmljIGFsaWdubWVudHMuIE9uIHRoZSBvdGhlciBoYW5kLCBTdGF0ZSBTdHJlbmd0aCBwb3NpdGl2ZWx5IGNvbnRyaWJ1dGVzIHRvIHRoaXMgZHluYW1pYywgd2l0aCBhIHN0cm9uZ2VyIHN0YXRlIGNvcnJlbGF0aW5nIHRvIGFuIDYuNzglIGluY3JlYXNlIGluIGNvZXRobmljIGFsaWdubWVudCAocCA8IDAuMDAxKS4gSW4gY29udHJhc3QsIFJlYmVsIFN0cmVuZ3RoIHBsYXlzIGEgZGl2ZXJnZW50IHJvbGUsIHdoZXJlIG1vcmUgcm9idXN0IHJlYmVsIGdyb3VwcyBhcmUgMzQuMDclIGxlc3MgbGlrZWx5IHRvIGFsaWduIGV0aG5pY2FsbHkgd2l0aCBnb3Zlcm5tZW50IHByb2dyYW1zIChwIDwgMC4wMDEpLiBGaW5hbGx5LCB0aGUgRHVyYXRpb24gb2YgQ29uZmxpY3Qgc2hvd3MgYSBtb2Rlc3QgYnV0IHNpZ25pZmljYW50IGVmZmVjdCwgd2l0aCBlYWNoIGFkZGl0aW9uYWwgeWVhciBvZiBjb25mbGljdCBsZWFkaW5nIHRvIGEgLjk1JSBpbmNyZWFzZSBpbiB0aGUgcHJvYmFiaWxpdHkgb2YgY29ldGhuaWMgYWxpZ25tZW50IChwIDwgMC4wMDEpLiBUaGVzZSByZXN1bHRzIHVuZGVyc2NvcmUgdGhlIHNpZ25pZmljYW50IGFuZCBudWFuY2VkIGluZmx1ZW5jZXMgb2YgcG9saXRpY2FsLCBtaWxpdGFyeSwgYW5kIGNvbmZsaWN0IGR1cmF0aW9uIGZhY3RvcnMgb24gdGhlIGV0aG5pYyBkeW5hbWljcyBvZiByZWJlbCBncm91cHMgaW4gcmVsYXRpb24gdG8gZ292ZXJubWVudCBwcm9ncmFtcy4KCiMjIyBTZWNvbmQgTW9kZWwKCioqU2ltcGxlIE1vZGVsIHdpdGggSW50ZXJhY3Rpb24gVGVybSoqClJlbW92aW5nIGxldmVsIG9mIHRocmVhdCBiZWNhdXNlIGludGVyYWN0aW9uIHRlcm0gaXMgdGhlcmUgKGZvciBzeW5lcmdpc3RpYyBlZmZlY3QpCmBgYHtyIGVjaG89RkFMU0UsbWVzc2FnZT1GQUxTRSx3YXJuaW5nPUZBTFNFfQoKbW9kZWxfY29ldGhuaWNpdHlfbmFjaGlrZXRfMiA8LSBmZW9scyhjb2V0aG5pY19yZWJlbF9wZ21fbmFjaGlrZXRfYmluYXJ5IH4gcG9saXR5MiArIHN0YXRlX3N0cmVuZ3RoICsgcmViZWxfc3RyZW5ndGhfbmFjaGlrZXRfc2NhbGVkICsgZHVyYXRpb25feWVhciArIGV0aHBvbCArIHN0YXRlX3N0cmVuZ3RoKnJlYmVsX3N0cmVuZ3RoX25hY2hpa2V0X3NjYWxlZCwKICAgICAgICAgICAgICAgZGF0YSA9IG1haW5fY2l2aWx3YXJzX2V0aG5pY19sb25naXR1ZG5hbCkKCgpmaXhlc3Q6OmV0YWJsZShtb2RlbF9jb2V0aG5pY2l0eV9uYWNoaWtldF8yKQoKYGBgCkluIHRoZSByZWdyZXNzaW9uIG1vZGVsIFBvbGl0eTIgaGFzIGEgc3Ryb25nIHBvc2l0aXZlIGVmZmVjdCwgd2l0aCBlYWNoIHVuaXQgaW5jcmVhc2UgbGVhZGluZyB0byBhIDQuMTUlIGluY3JlYXNlIGluIHRoZSBwcm9iYWJpbGl0eSBvZiBjb2V0aG5pYyBhbGlnbm1lbnQgKHAgPCAwLjAwMSkuIFN0YXRlIFN0cmVuZ3RoIGFsc28gcGxheXMgYSBzaWduaWZpY2FudCByb2xlLCBpbmNyZWFzaW5nIHRoZSBsaWtlbGlob29kIGJ5IDUuMzklIChwIDwgMC4wNSkuIEludGVyZXN0aW5nbHksIFJlYmVsIFN0cmVuZ3RoIGlzIHBvc2l0aXZlbHkgYXNzb2NpYXRlZCB3aXRoIGNvZXRobmljIGFsaWdubWVudCBhcyB3ZWxsLCBjb250cmlidXRpbmcgdG8gYSAxMi41NSUgcmlzZSBpbiBwcm9iYWJpbGl0eSAocCA8IDAuMDAxKS4gSG93ZXZlciwgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gU3RhdGUgU3RyZW5ndGggYW5kIFJlYmVsIFN0cmVuZ3RoIGhhcyBhIG5lZ2F0aXZlIGVmZmVjdCwgcmVkdWNpbmcgdGhlIHByb2JhYmlsaXR5IGJ5IDExLjI1JSAocCA8IDAuMDAxKSwgaW5kaWNhdGluZyB0aGF0IHN0cm9uZ2VyIHN0YXRlcyBhbmQgc3Ryb25nZXIgcmViZWxzIG1heSBub3QgYWxpZ24gZXRobmljYWxseSBhcyBtdWNoLiBUaGUgRHVyYXRpb24gb2YgQ29uZmxpY3QgYWxzbyBoYXMgYSBzbWFsbCB5ZXQgc2lnbmlmaWNhbnQgZWZmZWN0LCB3aXRoIGVhY2ggYWRkaXRpb25hbCB5ZWFyIG9mIGNvbmZsaWN0IGxlYWRpbmcgdG8gYSAwLjc0JSBpbmNyZWFzZSBpbiB0aGUgbGlrZWxpaG9vZCBvZiBjb2V0aG5pYyBhbGlnbm1lbnQgKHAgPCAwLjAwMSkuIFRoZXNlIGZpbmRpbmdzIGhpZ2hsaWdodCB0aGUgY29tcGxleCBpbnRlcnBsYXkgYmV0d2VlbiBwb2xpdGljYWwsIG1pbGl0YXJ5LCBhbmQgY29uZmxpY3QtcmVsYXRlZCBmYWN0b3JzIGluIHNoYXBpbmcgZXRobmljIGFsaWdubWVudHMgd2l0aGluIHJlYmVsIGdyb3VwcyBhbmQgZ292ZXJubWVudCBwcm9ncmFtcy4KCiMjIyBUaGlyZCBNb2RlbAoKKipGaXhlZCBFZmZlY3RzIE9yZGluYXJ5IExlYXN0IFNxdWFyZSBNb2RlbHMgd2l0aCBDbHVzdGVyZWQgZXJyb3JzIGF0IHRoZSBDb3VudHJ5L2dvdmVybm1lbnQgbGV2ZWwqKgoKYGBge3IgZWNobz1GQUxTRSxtZXNzYWdlPUZBTFNFLHdhcm5pbmc9RkFMU0V9Cm1vZGVsX2NvZXRobmljaXR5X25hY2hpa2V0XzMgPC0gZmVvbHMoY29ldGhuaWNfcmViZWxfcGdtX25hY2hpa2V0X2JpbmFyeSB+IHBvbGl0eTIgKyBMZXZlbF9vZl9UaHJlYXQgKyBzdGF0ZV9zdHJlbmd0aCArIHJlYmVsX3N0cmVuZ3RoX25hY2hpa2V0X3NjYWxlZCArIGR1cmF0aW9uX3llYXIgKyBldGhwb2wgfCBnb3Zlcm5tZW50LAogICAgICAgICAgICAgICBkYXRhID0gbWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsLCBjbHVzdGVyID0gfmdvdmVybm1lbnQpCgpmaXhlc3Q6OmV0YWJsZShtb2RlbF9jb2V0aG5pY2l0eV9uYWNoaWtldF8zKQpgYGAKClBvbGl0eTIgc3RhbmRzIG91dCB3aXRoIGEgc2lnbmlmaWNhbnQgcG9zaXRpdmUgaW1wYWN0IG9uIGNvZXRobmljIGFsaWdubWVudC4gRm9yIGV2ZXJ5IHVuaXQgaW5jcmVhc2UgaW4gUG9saXR5MiwgdGhlIGxpa2VsaWhvb2Qgb2YgY29ldGhuaWMgYWxpZ25tZW50IHJpc2VzIGJ5IDUuMzAlIChwIDwgMC4wMSkuIE9uIHRoZSBmbGlwIHNpZGUsIGJvdGggdGhlIExldmVsIG9mIFRocmVhdCBhbmQgU3RhdGUgU3RyZW5ndGggaGF2ZSBzdWJzdGFudGlhbCBuZWdhdGl2ZSBlZmZlY3RzOiB0aGUgTGV2ZWwgb2YgVGhyZWF0IHJlZHVjZXMgdGhlIHByb2JhYmlsaXR5IG9mIGNvZXRobmljIGFsaWdubWVudCBieSBhIHN0cmlraW5nIDUxLjk0JSAocCA8IDAuMDAxKSwgd2hpbGUgU3RhdGUgU3RyZW5ndGggZGVjcmVhc2VzIGl0IGJ5IDI3LjIyJSAocCA8IDAuMDAxKS4gUmViZWwgU3RyZW5ndGggZG9lc27igJl0IHNob3cgYSBzaWduaWZpY2FudCBpbXBhY3QgKHAgPSAwLjEzMjEpLCBhbmQgdGhlIER1cmF0aW9uIG9mIENvbmZsaWN0IGNvbnRyaWJ1dGVzIGEgc21hbGwgcG9zaXRpdmUgZWZmZWN0LCByYWlzaW5nIHRoZSBwcm9iYWJpbGl0eSBvZiBjb2V0aG5pYyBhbGlnbm1lbnQgYnkgMC43JSBwZXIgeWVhciAocCA9IDAuMDEwMykuIFRoZSBtb2RlbCBpbmNvcnBvcmF0ZXMgZml4ZWQgZWZmZWN0cyBmb3IgZ292ZXJubWVudCBhbmQgY2x1c3RlcnMgc3RhbmRhcmQgZXJyb3JzIGJ5IGdvdmVybm1lbnQuIEl0IGV4cGxhaW5zIDU4JSBvZiB0aGUgdmFyaWFuY2UgaW4gY29ldGhuaWMgYWxpZ25tZW50LiBPdmVyYWxsLCB0aGUgZmluZGluZ3MgcmV2ZWFsIHRoYXQgZGVtb2NyYXRpYyBnb3Zlcm5hbmNlIGZvc3RlcnMgY29ldGhuaWMgYWxpZ25tZW50LCB3aGlsZSBoaWdoZXIgdGhyZWF0cyBhbmQgc3Ryb25nZXIgc3RhdGVzIHRlbmQgdG8gaW5oaWJpdCBpdCwgcmVmbGVjdGluZyB0aGUgY29tcGxleCBkeW5hbWljcyBiZXR3ZWVuIHBvbGl0aWNhbCBhbmQgc2VjdXJpdHkgZmFjdG9ycyBpbiBjb25mbGljdCBzaXR1YXRpb25zLgoKIyMjIyAyLjEuMy4xIChOb24gQmluYXJ5KSBDb2V0aG5pY2l0eSB3aXRoIEdvdmVybm1lbnQgZml4ZWQgZWZmZWN0cwoKYGBge3IgZWNobz1GQUxTRSxtZXNzYWdlPUZBTFNFLHdhcm5pbmc9RkFMU0V9Cm1vZGVsX2NvZXRobmljaXR5X25hY2hpa2V0XzMxIDwtIGZlb2xzKGNvZXRobmljX3JlYmVsX3BnbV9uYWNoaWtldCB+IExldmVsX29mX1RocmVhdCsgcG9saXR5MiArIHN0YXRlX3N0cmVuZ3RoICsgcmViZWxfc3RyZW5ndGhfbmFjaGlrZXRfc2NhbGVkICsgZHVyYXRpb25feWVhciArIGV0aHBvbCB8IGdvdmVybm1lbnQsCiAgICAgICAgICAgICAgIGRhdGEgPSBtYWluX2Npdmlsd2Fyc19ldGhuaWNfbG9uZ2l0dWRuYWwsIGNsdXN0ZXIgPSB+Z292ZXJubWVudCwgbmEuYWN0aW9uID0gbmEub21pdCkKCmZpeGVzdDo6ZXRhYmxlKG1vZGVsX2NvZXRobmljaXR5X25hY2hpa2V0XzMxKQpgYGAKCiMjIyMgMi4xLjMuMiAoTm9uIEJpbmFyeSkgQ29ldGhuaWNpdHkgd2l0aCBjb25mbGljIGxldmVsIGZpeGVkIGVmZmVjdHMKCmBgYHtyIGVjaG89RkFMU0UsbWVzc2FnZT1GQUxTRSx3YXJuaW5nPUZBTFNFfQptb2RlbF9jb2V0aG5pY2l0eV9uYWNoaWtldF8zMiA8LSBmZW9scyhjb2V0aG5pY19yZWJlbF9wZ21fbmFjaGlrZXQgfiBwb2xpdHkyICsgTGV2ZWxfb2ZfVGhyZWF0ICsgc3RhdGVfc3RyZW5ndGggKyByZWJlbF9zdHJlbmd0aF9uYWNoaWtldF9zY2FsZWQgKyBkdXJhdGlvbl95ZWFyICsgZXRocG9sIHwgdWNkcF9jb25mbGljdGlkLAogICAgICAgICAgICAgICBkYXRhID0gbWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsLCBjbHVzdGVyID0gfmdvdmVybm1lbnQpCgpmaXhlc3Q6OmV0YWJsZShtb2RlbF9jb2V0aG5pY2l0eV9uYWNoaWtldF8zMikKYGBgCgojIyMjIDIuMS4zLjMgVGhpcmQgTW9kZWwgKEJpbmFyeSkgd2l0aCBDb25mbGljdCBmaXhlZCBlZmZlY3RzCgpgYGB7ciBlY2hvPUZBTFNFLG1lc3NhZ2U9RkFMU0Usd2FybmluZz1GQUxTRX0KbW9kZWxfY29ldGhuaWNpdHlfbmFjaGlrZXRfMzMgPC0gZmVvbHMoY29ldGhuaWNfcmViZWxfcGdtX25hY2hpa2V0X2JpbmFyeSB+IHBvbGl0eTIgKyBMZXZlbF9vZl9UaHJlYXQgKyBzdGF0ZV9zdHJlbmd0aCArIHJlYmVsX3N0cmVuZ3RoX25hY2hpa2V0X3NjYWxlZCArIGR1cmF0aW9uX3llYXIgKyBldGhwb2wgfCB1Y2RwX2NvbmZsaWN0aWQsCiAgICAgICAgICAgICAgIGRhdGEgPSBtYWluX2Npdmlsd2Fyc19ldGhuaWNfbG9uZ2l0dWRuYWwsIGNsdXN0ZXIgPSB+Z292ZXJubWVudCkKCmZpeGVzdDo6ZXRhYmxlKG1vZGVsX2NvZXRobmljaXR5X25hY2hpa2V0XzMzKQpgYGAKCiMjIyBGb3VydGggTW9kZWwKCioqU2FtZSBhcyB0aGUgU2Vjb25kIG1vZGVsIGJ1dCB3aXRoIEZFIGFuZCBjbHVzdGVyZWQgZXJyb3JzOiBJbnRlcmFjdGlvbiB0ZXJtKioKTGV2ZWwgb2YgdGhyZWF0IHJlbW92ZWQgYmVjYXVzZSB3ZSB3aXNoIHRvIGNhcHR1cmUgdGhlIHN5bmVyZ2lzdGljIGVmZmVjdHMgb2YgaW50ZXJhY3Rpb24gdGVybSAKYGBge3IgZWNobz1GQUxTRSx3YXJuaW5nPUZBTFNFLG1lc3NhZ2U9RkFMU0V9Cm1vZGVsX2NvZXRobmljaXR5X25hY2hpa2V0XzQgPC0gZmVvbHMoY29ldGhuaWNfcmViZWxfcGdtX25hY2hpa2V0X2JpbmFyeSB+IHBvbGl0eTIgKyBzdGF0ZV9zdHJlbmd0aCArIHJlYmVsX3N0cmVuZ3RoX25hY2hpa2V0X3NjYWxlZCArIGR1cmF0aW9uX3llYXIgKyBldGhwb2wgKyBzdGF0ZV9zdHJlbmd0aCpyZWJlbF9zdHJlbmd0aF9uYWNoaWtldF9zY2FsZWQgfCBnb3Zlcm5tZW50LAogICAgICAgICAgICAgICBkYXRhID0gbWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsLCBjbHVzdGVyID0gfmdvdmVybm1lbnQpCgoKZml4ZXN0OjpldGFibGUobW9kZWxfY29ldGhuaWNpdHlfbmFjaGlrZXRfNCkKCmBgYApJbnRlcnByZXRhdGlvbjogVGhlIHNpZ25pZmljYW50IGNvZWZmaWNpZW50cyByZXZlYWwgc29tZSBpbnRlcmVzdGluZyBkeW5hbWljcy4gU3RhdGUgU3RyZW5ndGggaGFzIGEgc3Ryb25nIHBvc2l0aXZlIGVmZmVjdCwgaW5jcmVhc2luZyB0aGUgcHJvYmFiaWxpdHkgb2YgY29ldGhuaWMgYWxpZ25tZW50IGJ5IDcwLjM3JSAocCA8IDAuMDAxKS4gVGhlIGludGVyYWN0aW9uIGJldHdlZW4gU3RhdGUgU3RyZW5ndGggYW5kIFJlYmVsIFN0cmVuZ3RoIGFsc28gc2lnbmlmaWNhbnRseSBhZmZlY3RzIGNvZXRobmljIGFsaWdubWVudCwgYnV0IGluIGEgbmVnYXRpdmUgZGlyZWN0aW9uLCByZWR1Y2luZyB0aGUgcHJvYmFiaWxpdHkgYnkgMzUuNDElIChwIDwgMC4wMDEpLgoKSW4gdGVybXMgb2Ygbm9uLXNpZ25pZmljYW50IGVmZmVjdHMsIFBvbGl0eTIgc2hvd3MgYSBtaW5vciBuZWdhdGl2ZSBpbXBhY3Qgb24gY29ldGhuaWMgYWxpZ25tZW50ICwgYW5kIFJlYmVsIFN0cmVuZ3RoIGNvbnRyaWJ1dGVzIHBvc2l0aXZlbHkgYnV0IGlzIG5vdCBzdGF0aXN0aWNhbGx5IHNpZ25pZmljYW50IC4gRHVyYXRpb24gb2YgQ29uZmxpY3QgaGFzIGEgbW9kZXN0IHBvc2l0aXZlIGVmZmVjdCwgaW5jcmVhc2luZyB0aGUgbGlrZWxpaG9vZCBvZiBhbGlnbm1lbnQgYnkgMS43MCUgcGVyIGFkZGl0aW9uYWwgeWVhciwgdGhvdWdoIHRoaXMgaXMgb24gdGhlIGJvcmRlciBvZiBzaWduaWZpY2FuY2UuIFRoZSBtb2RlbCBpbmNsdWRlcyBmaXhlZCBlZmZlY3RzIGZvciBnb3Zlcm5tZW50IGFuZCBjbHVzdGVycyBzdGFuZGFyZCBlcnJvcnMgYnkgZ292ZXJubWVudCwgZXhwbGFpbmluZyA1Ny43NyUgb2YgdGhlIHZhcmlhbmNlIGluIGNvZXRobmljIGFsaWdubWVudC4KCiMjIyMgMi4xLjQuMSBDb2V0aG5pY2l0eSBub24tYmluYXJ5LCBnb3Zlcm5tZW50IGZpeGVkIGVmZmVjdHMKCmBgYHtyIGVjaG89RkFMU0Usd2FybmluZz1GQUxTRSxtZXNzYWdlPUZBTFNFfQptb2RlbF9jb2V0aG5pY2l0eV9uYWNoaWtldF80MSA8LSBmZW9scyhjb2V0aG5pY19yZWJlbF9wZ21fbmFjaGlrZXQgfiBwb2xpdHkyICsgc3RhdGVfc3RyZW5ndGggKyByZWJlbF9zdHJlbmd0aF9uYWNoaWtldF9zY2FsZWQgKyBkdXJhdGlvbl95ZWFyICsgZXRocG9sICsgc3RhdGVfc3RyZW5ndGgqcmViZWxfc3RyZW5ndGhfbmFjaGlrZXRfc2NhbGVkIHwgZ292ZXJubWVudCwKICAgICAgICAgICAgICAgZGF0YSA9IG1haW5fY2l2aWx3YXJzX2V0aG5pY19sb25naXR1ZG5hbCwgY2x1c3RlciA9IH5nb3Zlcm5tZW50LCBuYS5hY3Rpb24gPSBuYS5vbWl0KQoKCmZpeGVzdDo6ZXRhYmxlKG1vZGVsX2NvZXRobmljaXR5X25hY2hpa2V0XzQxKQpgYGAKCiMjIyMgMi4xLjQuMiBDb2V0aG5pY2l0eSBub24tYmluYXJ5LCBjb25mbGljdCBsZXZlbCBmaXhlZCBlZmZlY3RzCgpgYGB7ciBlY2hvPUZBTFNFLHdhcm5pbmc9RkFMU0UsbWVzc2FnZT1GQUxTRX0KbW9kZWxfY29ldGhuaWNpdHlfbmFjaGlrZXRfNDIgPC0gZmVvbHMoY29ldGhuaWNfcmViZWxfcGdtX25hY2hpa2V0IH4gcG9saXR5MiArIHN0YXRlX3N0cmVuZ3RoICsgcmViZWxfc3RyZW5ndGhfbmFjaGlrZXRfc2NhbGVkICsgZHVyYXRpb25feWVhciArIGV0aHBvbCArIHN0YXRlX3N0cmVuZ3RoKnJlYmVsX3N0cmVuZ3RoX25hY2hpa2V0X3NjYWxlZCB8IHVjZHBfY29uZmxpY3RpZCwKICAgICAgICAgICAgICAgZGF0YSA9IG1haW5fY2l2aWx3YXJzX2V0aG5pY19sb25naXR1ZG5hbCwgY2x1c3RlciA9IH5nb3Zlcm5tZW50KQoKCmZpeGVzdDo6ZXRhYmxlKG1vZGVsX2NvZXRobmljaXR5X25hY2hpa2V0XzQyKQpgYGAKCiMjIyMgMi4xLjQuMyBDb2V0aG5pY2l0eSBiaW5hcnksIGNvbmZsaWN0IGZpeGVkIGVmZmVjdHMKCmBgYHtyIGVjaG89RkFMU0Usd2FybmluZz1GQUxTRSxtZXNzYWdlPUZBTFNFfQptb2RlbF9jb2V0aG5pY2l0eV9uYWNoaWtldF80MyA8LSBmZW9scyhjb2V0aG5pY19yZWJlbF9wZ21fbmFjaGlrZXRfYmluYXJ5IH4gcG9saXR5MiArIHN0YXRlX3N0cmVuZ3RoICsgcmViZWxfc3RyZW5ndGhfbmFjaGlrZXRfc2NhbGVkICsgZHVyYXRpb25feWVhciArIGV0aHBvbCArIHN0YXRlX3N0cmVuZ3RoKnJlYmVsX3N0cmVuZ3RoX25hY2hpa2V0X3NjYWxlZCB8IHVjZHBfY29uZmxpY3RpZCwKICAgICAgICAgICAgICAgZGF0YSA9IG1haW5fY2l2aWx3YXJzX2V0aG5pY19sb25naXR1ZG5hbCwgY2x1c3RlciA9IH5nb3Zlcm5tZW50KQoKZml4ZXN0OjpldGFibGUobW9kZWxfY29ldGhuaWNpdHlfbmFjaGlrZXRfNDMpCmBgYAoKIyMjIEZpZnRoIE1vZGVsCioqQWRkaXRpb25hbCBDb250cm9scyBGRU9MUyoqCkFkZGluZyBUaHJlZSBWYXJpYWJsZXMgYW5kIFJlbW92aW5nIFN0YXRlIFN0cmVuZ3RoIGR1ZSB0byBwb3NzaWJpbGl0eSBvZiBNdWx0aWNvbGxpbmVhcml0eSBhZG4gYWRkaW5nIG91dGNvbWUgYmluYXJ5CgpgYGB7ciBlY2hvPUZBTFNFLHdhcm5pbmc9RkFMU0UsbWVzc2FnZT1GQUxTRX0KbW9kZWxfY29ldGhuaWNpdHlfbmFjaGlrZXRfNSA8LSBmZW9scyhjb2V0aG5pY19yZWJlbF9wZ21fbmFjaGlrZXRfYmluYXJ5IH4gcG9saXR5MiArIGdkcGNhcGl0YV9pbXB1dGVkX2VudGlyZSArIGxtaWxwZXJfaW1wdXRlZF9lbnRpcmUgKyBsdHJvb3ByYXRpb19pbXB1dGVkX2VudGlyZSArIHJlYmVsX3N0cmVuZ3RoX25hY2hpa2V0X3NjYWxlZCArIGR1cmF0aW9uX3llYXIgKyBldGhwb2wgKyBvdXRjb21lX2JpbmFyeV9yZWJlbF92aWN0b3J5X2thdXIgfCBnb3Zlcm5tZW50LAogICAgICAgICAgICAgICBkYXRhID0gbWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsLCBjbHVzdGVyID0gfmdvdmVybm1lbnQpCgpmaXhlc3Q6OmV0YWJsZShtb2RlbF9jb2V0aG5pY2l0eV9uYWNoaWtldF81KQpgYGAKSW50ZXJwcmV0YXRpb246IEluIHRoaXMgcmVncmVzc2lvbiBtb2RlbCBmb3IgY29ldGhuaWMgYWxpZ25tZW50LCB0aGUgc2lnbmlmaWNhbnQgY29lZmZpY2llbnRzIGhpZ2hsaWdodCBrZXkgZmFjdG9ycyBhZmZlY3RpbmcgYWxpZ25tZW50LiBQb2xpdHkyIGhhcyBhIG5vdGFibGUgbmVnYXRpdmUgZWZmZWN0LCB3aXRoIGVhY2ggdW5pdCBpbmNyZWFzZSBsZWFkaW5nIHRvIGEgNS4wOSUgcmVkdWN0aW9uIGluIHRoZSBwcm9iYWJpbGl0eSBvZiBjb2V0aG5pYyBhbGlnbm1lbnQgKHAgPCAwLjA1KS4gQWRkaXRpb25hbGx5LCB0aGUgb3V0Y29tZSBvZiByZWJlbCB2aWN0b3J5IGhhcyBhIHNpZ25pZmljYW50IG5lZ2F0aXZlIGltcGFjdCwgcmVkdWNpbmcgdGhlIHByb2JhYmlsaXR5IG9mIGNvZXRobmljIGFsaWdubWVudCBieSA0Ny42MCUgKHAgPCAwLjA1KS4gVGhpcyBjb3VsZCBtZWFuIG1vcmVsaWtlbHkgdG8gd2luIGluIHRob3NlIGNhc2VzIHdpdGggbm8gY29ldGhuaWMgYWxpZ25tZW50CgpOb24tc2lnbmlmaWNhbnQgY29lZmZpY2llbnRzIGluY2x1ZGUgR0RQQ2FwaXRhLCBMTUlMUEVSLCBhbmQgTHRyb29wUmF0aW8sIHdoaWNoIGRvIG5vdCBzaG93IHN0cm9uZyBldmlkZW5jZSBvZiBhZmZlY3RpbmcgYWxpZ25tZW50LiBSZWJlbCBTdHJlbmd0aCBhbmQgRHVyYXRpb24gb2YgQ29uZmxpY3QgYWxzbyBsYWNrIHN0YXRpc3RpY2FsIHNpZ25pZmljYW5jZSBpbiB0aGlzIG1vZGVsLgoKVGhlIG1vZGVsIGluY2x1ZGVzIGZpeGVkIGVmZmVjdHMgZm9yIGdvdmVybm1lbnQgYW5kIGNsdXN0ZXJzIHN0YW5kYXJkIGVycm9ycyBieSBnb3Zlcm5tZW50LCB3aXRoIGFuIFLCsiBvZiA3NS4yOSUsIGluZGljYXRpbmcgYSBoaWdoIGxldmVsIG9mIGV4cGxhbmF0b3J5IHBvd2VyIGZvciBjb2V0aG5pYyBhbGlnbm1lbnQuCgoKCgojIyBSZWdyZXNzaW9uIGZvciBDb2V0aG5pY2l0eSBESyBhcyBEViB7LnRhYnNldH0KCiMjIyBGaXJzdCBNb2RlbAoqKlNpbXBsZSBMaW5lYXIgTW9kZWwgd2l0aCBubyBmaXhlZCBlZmZlY3RzKioKYGBge3IgZWNobz1GQUxTRSwgd2FybmluZz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0KIyMgTG9naXQgUmVncmVzc2lvbiBmb3IgY29fZXRobmljaXR5X2RrIGFzIERWCgoKbW9kZWxfY29ldGhuaWNpdHlfZGtfMSA8LSBmZW9scyhjb2V0aG5pY19yZWJlbF9wZ21fZGsgfiBwb2xpdHkyICtMZXZlbF9vZl9UaHJlYXQgKyBzdGF0ZV9zdHJlbmd0aCArIHJlYmVsX3N0cmVuZ3RoX25hY2hpa2V0X3NjYWxlZCArIGR1cmF0aW9uX3llYXIgKyBldGhwb2wsCiAgICAgICAgICAgICAgIGRhdGEgPSBtYWluX2Npdmlsd2Fyc19ldGhuaWNfbG9uZ2l0dWRuYWwpCgpmaXhlc3Q6OmV0YWJsZShtb2RlbF9jb2V0aG5pY2l0eV9ka18xKQpgYGAKSW50ZXJwcmV0YXRpb246IEluIHRoaXMgcmVncmVzc2lvbiBtb2RlbCBmb3IgY29ldGhuaWMgYWxpZ25tZW50LCBzZXZlcmFsIHNpZ25pZmljYW50IGZhY3RvcnMgc3RhbmQgb3V0LiBQb2xpdHkyIGhhcyBhIHBvc2l0aXZlIGVmZmVjdCwgd2l0aCBlYWNoIHVuaXQgaW5jcmVhc2UgbGVhZGluZyB0byBhIDEuNjAlIGluY3JlYXNlIGluIHRoZSBwcm9iYWJpbGl0eSBvZiBjb2V0aG5pYyBhbGlnbm1lbnQgKHAgPCAwLjAwMSkuIFRoZSBMZXZlbCBvZiBUaHJlYXQgYWxzbyBzaWduaWZpY2FudGx5IGVuaGFuY2VzIGFsaWdubWVudCwgaW5jcmVhc2luZyB0aGUgcHJvYmFiaWxpdHkgYnkgMjYuNjYlIChwIDwgMC4wMDEpLiBTdGF0ZSBTdHJlbmd0aCBjb250cmlidXRlcyBwb3NpdGl2ZWx5IGFzIHdlbGwsIHJhaXNpbmcgdGhlIHByb2JhYmlsaXR5IG9mIGNvZXRobmljIGFsaWdubWVudCBieSAyLjg4JSAocCA8IDAuMDAxKS4gCgpSZWJlbCBTdHJlbmd0aCwgb24gdGhlIG90aGVyIGhhbmQsIHNob3dzIGEgc2lnbmlmaWNhbnQgbmVnYXRpdmUgZWZmZWN0LCByZWR1Y2luZyB0aGUgbGlrZWxpaG9vZCBvZiBjb2V0aG5pYyBhbGlnbm1lbnQgYnkgMTYuNzAlIChwIDwgMC4wMDEpLiBUaGUgRHVyYXRpb24gb2YgQ29uZmxpY3QgYWxzbyBoYXMgYSBwb3NpdGl2ZSBhbmQgc2lnbmlmaWNhbnQgaW1wYWN0LCBpbmNyZWFzaW5nIGFsaWdubWVudCBwcm9iYWJpbGl0eSBieSAwLjg5JSBwZXIgYWRkaXRpb25hbCB5ZWFyIChwIDwgMC4wMDEpLiBFdGhuaWMgUG9sYXJpemF0aW9uIChFdGhQb2wpIHNpZ25pZmljYW50bHkgZGVjcmVhc2VzIGFsaWdubWVudCBieSAxNi4zMyUgKHAgPCAwLjAxKS4KClRoZSBtb2RlbCB1c2VzIElJRCBzdGFuZGFyZCBlcnJvcnMsIHdpdGggYW4gUsKyIG9mIDE3LjU0JSwgc3VnZ2VzdGluZyB0aGF0IHdoaWxlIHRoZXNlIGZhY3RvcnMgZXhwbGFpbiBzb21lIHZhcmlhbmNlIGluIGNvZXRobmljIGFsaWdubWVudCwgYSBzaWduaWZpY2FudCBwb3J0aW9uIHJlbWFpbnMgdW5leHBsYWluZWQuCgojIyMgU2Vjb25kIE1vZGVsCioqU2ltcGxlIE1vZGVsIHdpdGggSW50ZXJhY3Rpb24gVGVybSoqClJlbW92aW5nIGxldmVsIG9mIHRocmVhdCBiZWNhdXNlIGludGVyYWN0aW9uIHRlcm0gaXMgdGhlcmUgKGZvciBzeW5lcmdpc3RpYyBlZmZlY3QpCgoKYGBge3IgZWNobz1GQUxTRSxtZXNzYWdlPUZBTFNFLHdhcm5pbmc9RkFMU0V9Cgptb2RlbF9jb2V0aG5pY2l0eV9ka18yIDwtIGZlb2xzKGNvZXRobmljX3JlYmVsX3BnbV9kayB+IHBvbGl0eTIgKyBzdGF0ZV9zdHJlbmd0aCArIHJlYmVsX3N0cmVuZ3RoX25hY2hpa2V0X3NjYWxlZCArIGR1cmF0aW9uX3llYXIgKyBldGhwb2wgKyBzdGF0ZV9zdHJlbmd0aCpyZWJlbF9zdHJlbmd0aF9uYWNoaWtldF9zY2FsZWQsCiAgICAgICAgICAgICAgIGRhdGEgPSBtYWluX2Npdmlsd2Fyc19ldGhuaWNfbG9uZ2l0dWRuYWwpCgoKZml4ZXN0OjpldGFibGUobW9kZWxfY29ldGhuaWNpdHlfZGtfMikKCmBgYApJbnRlcnByZXRhdGlvbjogSW4gdGhpcyByZWdyZXNzaW9uIG1vZGVsIGZvciBjb2V0aG5pYyBhbGlnbm1lbnQsIHNldmVyYWwga2V5IGZhY3RvcnMgaGF2ZSBzaWduaWZpY2FudCBlZmZlY3RzLiBQb2xpdHkyIHBvc2l0aXZlbHkgaW5mbHVlbmNlcyBhbGlnbm1lbnQsIHdpdGggZWFjaCB1bml0IGluY3JlYXNlIGxlYWRpbmcgdG8gYSAyLjM4JSBpbmNyZWFzZSBpbiB0aGUgcHJvYmFiaWxpdHkgKHAgPCAwLjAwMSkuIFJlYmVsIFN0cmVuZ3RoIGFsc28gY29udHJpYnV0ZXMgcG9zaXRpdmVseSwgaW5jcmVhc2luZyB0aGUgcHJvYmFiaWxpdHkgb2YgY29ldGhuaWMgYWxpZ25tZW50IGJ5IDguMzAlIChwIDwgMC4wMDEpLiBUaGUgRHVyYXRpb24gb2YgQ29uZmxpY3Qgc2ltaWxhcmx5IGhhcyBhIHBvc2l0aXZlIGVmZmVjdCwgcmFpc2luZyBhbGlnbm1lbnQgcHJvYmFiaWxpdHkgYnkgMC41OCUgcGVyIGFkZGl0aW9uYWwgeWVhciAocCA8IDAuMDAxKS4gCgpUaGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBTdGF0ZSBTdHJlbmd0aCBhbmQgUmViZWwgU3RyZW5ndGggaXMgc2lnbmlmaWNhbnRseSBuZWdhdGl2ZSwgcmVkdWNpbmcgdGhlIHByb2JhYmlsaXR5IG9mIGNvZXRobmljIGFsaWdubWVudCBieSA1Ljg2JSAocCA8IDAuMDAxKSwgc3VnZ2VzdGluZyB0aGF0IHdoaWxlIGJvdGggZmFjdG9ycyBpbmRpdmlkdWFsbHkgYm9vc3QgYWxpZ25tZW50LCB0aGVpciBjb21iaW5lZCBlZmZlY3QgaXMgZGV0cmltZW50YWwuIEV0aG5pYyBQb2xhcml6YXRpb24gKEV0aFBvbCkgaGFzIGEgc2lnbmlmaWNhbnQgbmVnYXRpdmUgaW1wYWN0LCBkZWNyZWFzaW5nIGFsaWdubWVudCBieSA2LjY2JSAocCA8IDAuMDUpLgoKVGhlIG1vZGVsIHVzZXMgSUlEIHN0YW5kYXJkIGVycm9ycywgd2l0aCBhbiBSwrIgb2YgMTEuMjYlLCBpbmRpY2F0aW5nIHRoYXQgd2hpbGUgc29tZSBmYWN0b3JzIGFyZSBzaWduaWZpY2FudCwgdGhlIG1vZGVsIGV4cGxhaW5zIGEgcmVsYXRpdmVseSBtb2Rlc3QgcG9ydGlvbiBvZiB0aGUgdmFyaWFuY2UgaW4gY29ldGhuaWMgYWxpZ25tZW50LgoKIyMjIFRoaXJkIE1vZGVsCgoqKkZpeGVkIEVmZmVjdHMgT3JkaW5hcnkgTGVhc3QgU3F1YXJlIE1vZGVscyB3aXRoIENsdXN0ZXJlZCBlcnJvcnMgYXQgdGhlIENvdW50cnkvZ292ZXJubWVudCBsZXZlbCoqCgpgYGB7ciBlY2hvPUZBTFNFLG1lc3NhZ2U9RkFMU0Usd2FybmluZz1GQUxTRX0KbW9kZWxfY29ldGhuaWNpdHlfZGtfMyA8LSBmZW9scyhjb2V0aG5pY19yZWJlbF9wZ21fZGsgfiBwb2xpdHkyICsgTGV2ZWxfb2ZfVGhyZWF0ICsgc3RhdGVfc3RyZW5ndGggKyByZWJlbF9zdHJlbmd0aF9uYWNoaWtldF9zY2FsZWQgKyBkdXJhdGlvbl95ZWFyICsgZXRocG9sIHwgZ292ZXJubWVudCwKICAgICAgICAgICAgICAgZGF0YSA9IG1haW5fY2l2aWx3YXJzX2V0aG5pY19sb25naXR1ZG5hbCwgY2x1c3RlciA9IH5nb3Zlcm5tZW50KQoKCmZpeGVzdDo6ZXRhYmxlKG1vZGVsX2NvZXRobmljaXR5X2RrXzMpCmBgYApJbnRlcnByZXRhdGlvbjogSW4gdGhpcyByZWdyZXNzaW9uIG1vZGVsIGZvciBjb2V0aG5pYyBhbGlnbm1lbnQsIHNldmVyYWwgZmFjdG9ycyBzaG93IHNpZ25pZmljYW50IGVmZmVjdHMuIFBvbGl0eTIgaGFzIGEgcG9zaXRpdmUgaW1wYWN0LCB3aXRoIGVhY2ggdW5pdCBpbmNyZWFzZSBsZWFkaW5nIHRvIGEgNy43MSUgaW5jcmVhc2UgaW4gdGhlIHByb2JhYmlsaXR5IG9mIGNvZXRobmljIGFsaWdubWVudCAocCA8IDAuMDUpLiBUaGUgTGV2ZWwgb2YgVGhyZWF0IHNpZ25pZmljYW50bHkgcmVkdWNlcyBhbGlnbm1lbnQsIGRlY3JlYXNpbmcgdGhlIHByb2JhYmlsaXR5IGJ5IDQ2LjcxJSAocCA8IDAuMDAxKS4gU2ltaWxhcmx5LCBTdGF0ZSBTdHJlbmd0aCBhbHNvIGhhcyBhIHN1YnN0YW50aWFsIG5lZ2F0aXZlIGVmZmVjdCwgcmVkdWNpbmcgYWxpZ25tZW50IGJ5IDUwLjg0JSAocCA8IDAuMDAxKS4KCk5vbi1zaWduaWZpY2FudCBjb2VmZmljaWVudHMgaW5jbHVkZSBSZWJlbCBTdHJlbmd0aCBhbmQgRHVyYXRpb24gb2YgQ29uZmxpY3QsIHdoaWNoIGRvIG5vdCBzaG93IHN0cm9uZyBldmlkZW5jZSBvZiBpbXBhY3RpbmcgY29ldGhuaWMgYWxpZ25tZW50LiAKClRoZSBtb2RlbCBpbmNsdWRlcyBmaXhlZCBlZmZlY3RzIGZvciBnb3Zlcm5tZW50IGFuZCBjbHVzdGVycyBzdGFuZGFyZCBlcnJvcnMgYnkgZ292ZXJubWVudC4gV2l0aCBhbiBSwrIgb2YgNTQuODElLCBpdCBjYXB0dXJlcyBhIHN1YnN0YW50aWFsIHBvcnRpb24gb2YgdGhlIHZhcmlhbmNlIGluIGNvZXRobmljIGFsaWdubWVudC4KCiMjIyBGb3VydGggTW9kZWwKCioqU2FtZSBhcyB0aGUgU2Vjb25kIG1vZGVsIGJ1dCB3aXRoIEZFIGFuZCBjbHVzdGVyZWQgZXJyb3JzKioKTGV2ZWwgb2YgdGhyZWF0IHJlbW92ZWQgYmVjYXVzZSB3ZSB3aXNoIHRvIGNhcHR1cmUgdGhlIHN5bmVyZ2lzdGljIGVmZmVjdHMgb2YgaW50ZXJhY3Rpb24gdGVybSAKYGBge3IgZWNobz1GQUxTRSx3YXJuaW5nPUZBTFNFLG1lc3NhZ2U9RkFMU0V9Cm1vZGVsX2NvZXRobmljaXR5X2RrXzQgPC0gZmVvbHMoY29ldGhuaWNfcmViZWxfcGdtX2RrIH4gcG9saXR5MiArIHN0YXRlX3N0cmVuZ3RoICsgcmViZWxfc3RyZW5ndGhfbmFjaGlrZXRfc2NhbGVkICsgZHVyYXRpb25feWVhciArIGV0aHBvbCArIHN0YXRlX3N0cmVuZ3RoKnJlYmVsX3N0cmVuZ3RoX25hY2hpa2V0X3NjYWxlZCB8IGdvdmVybm1lbnQsCiAgICAgICAgICAgICAgIGRhdGEgPSBtYWluX2Npdmlsd2Fyc19ldGhuaWNfbG9uZ2l0dWRuYWwsIGNsdXN0ZXIgPSB+Z292ZXJubWVudCkKCgpmaXhlc3Q6OmV0YWJsZShtb2RlbF9jb2V0aG5pY2l0eV9ka180KQpgYGAKSW4gdGhpcyByZWdyZXNzaW9uIG1vZGVsIGZvciBjb2V0aG5pYyBhbGlnbm1lbnQsIG5vbmUgb2YgdGhlIGNvZWZmaWNpZW50cyBhcmUgc3RhdGlzdGljYWxseSBzaWduaWZpY2FudC4gUG9saXR5MiwgU3RhdGUgU3RyZW5ndGgsIFJlYmVsIFN0cmVuZ3RoLCBhbmQgRHVyYXRpb24gb2YgQ29uZmxpY3QgYWxsIHNob3cgZWZmZWN0cyB0aGF0IGFyZSBub3Qgc2lnbmlmaWNhbnQsIGluZGljYXRpbmcgdGhhdCB0aGVzZSB2YXJpYWJsZXMgZG8gbm90IGhhdmUgYSByZWxpYWJsZSBpbXBhY3Qgb24gY29ldGhuaWMgYWxpZ25tZW50IGluIHRoaXMgbW9kZWwuIFRoZSBpbnRlcmFjdGlvbiB0ZXJtIGJldHdlZW4gU3RhdGUgU3RyZW5ndGggYW5kIFJlYmVsIFN0cmVuZ3RoIGlzIGFsc28gbm90IHNpZ25pZmljYW50LgoKVGhlIG1vZGVsIGluY2x1ZGVzIGZpeGVkIGVmZmVjdHMgZm9yIGdvdmVybm1lbnQgYW5kIGNsdXN0ZXJzIHN0YW5kYXJkIGVycm9ycyBieSBnb3Zlcm5tZW50LiBXaXRoIGFuIFLCsiBvZiA1Mi4zOCUsIHRoZSBtb2RlbCBhY2NvdW50cyBmb3IgYSBzdWJzdGFudGlhbCBwb3J0aW9uIG9mIHRoZSB2YXJpYW5jZSBpbiBjb2V0aG5pYyBhbGlnbm1lbnQsIGJ1dCB0aGUgbGFjayBvZiBzaWduaWZpY2FudCBwcmVkaWN0b3JzIHN1Z2dlc3RzIHRoYXQgdGhlIGZhY3RvcnMgaW5jbHVkZWQgbWF5IG5vdCBiZSBzdHJvbmdseSBpbmZsdWVuY2luZyBhbGlnbm1lbnQgaW4gdGhpcyBzcGVjaWZpYyBzZXR1cC4KCgojIyMgRmlmdGggTW9kZWwKCioqQWRkaXRpb25hbCBDb250cm9scyBGRU9MUyoqCgpBZGRpbmcgVGhyZWUgVmFyaWFibGVzIGFuZCBSZW1vdmluZyBTdGF0ZSBTdHJlbmd0aCBkdWUgdG8gcG9zc2liaWxpdHkgb2YgTXVsdGljb2xsaW5lYXJpdHkgYW5kIGFkZGluZyBvdXRjb21lIGJpbmFyeQpgYGB7ciBlY2hvPUZBTFNFLHdhcm5pbmc9RkFMU0UsbWVzc2FnZT1GQUxTRX0KbW9kZWxfY29ldGhuaWNpdHlfZGtfNSA8LSBmZW9scyhjb2V0aG5pY19yZWJlbF9wZ21fZGsgfiBwb2xpdHkyICsgZ2RwY2FwaXRhX2ltcHV0ZWRfZW50aXJlICsgbG1pbHBlcl9pbXB1dGVkX2VudGlyZSArIGx0cm9vcHJhdGlvX2ltcHV0ZWRfZW50aXJlICsgcmViZWxfc3RyZW5ndGhfbmFjaGlrZXRfc2NhbGVkICsgZHVyYXRpb25feWVhciArIGV0aHBvbCArIG91dGNvbWVfYmluYXJ5X3JlYmVsX3ZpY3Rvcnlfa2F1ciB8IGdvdmVybm1lbnQsCiAgICAgICAgICAgICAgIGRhdGEgPSBtYWluX2Npdmlsd2Fyc19ldGhuaWNfbG9uZ2l0dWRuYWwsIGNsdXN0ZXIgPSB+Z292ZXJubWVudCkKCmZpeGVzdDo6ZXRhYmxlKG1vZGVsX2NvZXRobmljaXR5X2RrXzUpCmBgYApJbnRlcnByZXRhdGlvbjogSW4gdGhpcyByZWdyZXNzaW9uIG1vZGVsIGFuYWx5emluZyBjb2V0aG5pYyBhbGlnbm1lbnQsIHNldmVyYWwgc2lnbmlmaWNhbnQgZmluZGluZ3MgZW1lcmdlLiBQb2xpdHkyIGV4aGliaXRzIGEgbmVnYXRpdmUgZWZmZWN0LCB3aGVyZSBlYWNoIHVuaXQgaW5jcmVhc2UsIGRlY3JlYXNlcyB0aGUgcHJvYmFiaWxpdHkgb2YgY29ldGhuaWMgYWxpZ25tZW50IGJ5IDEzLjUwJSAocCA8IDAuMDEpLiBTaW1pbGFybHksIHRoZSBvdXRjb21lIG9mIHJlYmVsIHZpY3RvcnkgaGFzIGEgbm90YWJsZSBuZWdhdGl2ZSBpbXBhY3QsIHJlZHVjaW5nIHRoZSBsaWtlbGlob29kIG9mIGNvZXRobmljIGFsaWdubWVudCBieSAxMjUuNTYlIChwIDwgMC4wNSkuIFRoaXMgc3VnZ2VzdHMgdGhhdCBoaWdoZXIgbGV2ZWxzIG9mIGRlbW9jcmF0aXphdGlvbiBhbmQgc3VjY2Vzc2Z1bCByZWJlbCB2aWN0b3JpZXMgYXJlIGFzc29jaWF0ZWQgd2l0aCBkaW1pbmlzaGVkIGNvZXRobmljIGFsaWdubWVudC4KCk9uIHRoZSBvdGhlciBoYW5kLCB0aGUgY29lZmZpY2llbnRzIGZvciBHRFBDYXBpdGEsIExNSUxQRVIsIEx0cm9vcFJhdGlvLCBSZWJlbCBTdHJlbmd0aCwgYW5kIER1cmF0aW9uIG9mIENvbmZsaWN0IGRvIG5vdCBzaG93IHN0YXRpc3RpY2FsbHkgc2lnbmlmaWNhbnQgZWZmZWN0cyBvbiBjb2V0aG5pYyBhbGlnbm1lbnQgaW4gdGhpcyBtb2RlbC4KClRoZSBhbmFseXNpcyBpbmNvcnBvcmF0ZXMgZml4ZWQgZWZmZWN0cyBmb3IgZ292ZXJubWVudCBhbmQgY2x1c3RlcnMgc3RhbmRhcmQgZXJyb3JzIGJ5IGdvdmVybm1lbnQsIHByb3ZpZGluZyByb2J1c3QgZXN0aW1hdGVzLiBUaGUgbW9kZWwgZXhwbGFpbnMgNjcuMzglIG9mIHRoZSB2YXJpYW5jZSBpbiBjb2V0aG5pYyBhbGlnbm1lbnQsIGhpZ2hsaWdodGluZyBpdHMgc3Vic3RhbnRpYWwgZXhwbGFuYXRvcnkgcG93ZXIgaW4gdW5kZXJzdGFuZGluZyB0aGUgZHluYW1pY3Mgb2YgZXRobmljIGFsaWdubWVudCB3aXRoaW4gcmViZWwgZ3JvdXBzIGFuZCBnb3Zlcm5tZW50IHByb2dyYW1zLgoKCiMjIFJlZ3Jlc3Npb24gZm9yIE91dGNvbWUgREsgYmluYXJ5IChESyBSZWJlbCBWaWN0b3J5IEJpbmFyeSkgYXMgRFYgey50YWJzZXR9CgojIyMgRmlyc3QgTW9kZWwKCioqU2ltcGxlIExpbmVhciBNb2RlbCB3aXRoIG5vIGZpeGVkIGVmZmVjdHMgKENvZXRobmljaXR5IE5hY2hpa2V0IGFzIEJJTkFSWSkqKgoKCmBgYHtyIGVjaG89RkFMU0UsIHdhcm5pbmc9RkFMU0UsIG1lc3NhZ2U9RkFMU0V9CiMjIFJlZ3Jlc3Npb24gZm9yIGNvX2V0aG5pY2l0eV9kayBhcyBEVgoKCm1vZGVsX291dGNvbWVfYmluYXJ5X2RrXzEgPC0gZmVvbHMob3V0Y29tZV9iaW5hcnlfcmViZWxfdmljdG9yeV9rYXVyIH4gY29ldGhuaWNfcmViZWxfcGdtX25hY2hpa2V0X2JpbmFyeSsgTGV2ZWxfb2ZfVGhyZWF0ICsgcG9saXR5MiArIHN0YXRlX3N0cmVuZ3RoICsgcmViZWxfc3RyZW5ndGhfbmFjaGlrZXRfc2NhbGVkICsgZHVyYXRpb25feWVhciArIGV0aHBvbCwgZGF0YSA9IG1haW5fY2l2aWx3YXJzX2V0aG5pY19sb25naXR1ZG5hbCkKCmZpeGVzdDo6ZXRhYmxlKG1vZGVsX291dGNvbWVfYmluYXJ5X2RrXzEpCmBgYApJbiB0aGlzIG1vZGVsIGV4YW1pbmluZyB0aGUgb3V0Y29tZSBvZiByZWJlbCB2aWN0b3J5LCBzZXZlcmFsIGZhY3RvcnMgc2hvdyBzaWduaWZpY2FudCBlZmZlY3RzLiBUaGUgY29uc3RhbnQgdGVybSBpcyBuZWdhdGl2ZSwgaW5kaWNhdGluZyB0aGF0LCBpbiB0aGUgYWJzZW5jZSBvZiBvdGhlciB2YXJpYWJsZXMsIHRoZSBiYXNlbGluZSBwcm9iYWJpbGl0eSBvZiByZWJlbCB2aWN0b3J5IGlzIGxvdyAocCA8IDAuMDAxKS4gQ29ldGhuaWMgYWxpZ25tZW50IHdpdGggdGhlIHJlYmVsIGdyb3VwIHNpZ25pZmljYW50bHkgcmVkdWNlcyB0aGUgcHJvYmFiaWxpdHkgb2YgcmViZWwgdmljdG9yeSBieSAyMC44MCUgKHAgPCAwLjAwMSkuCgpMZXZlbCBvZiBUaHJlYXQgaGFzIGEgcG9zaXRpdmUgYW5kIHNpZ25pZmljYW50IGltcGFjdCwgaW5jcmVhc2luZyB0aGUgbGlrZWxpaG9vZCBvZiByZWJlbCB2aWN0b3J5IGJ5IDQ0Ljc4JSAocCA8IDAuMDAxKS4gU3RhdGUgU3RyZW5ndGggYWxzbyBzaWduaWZpY2FudGx5IGFmZmVjdHMgdGhlIG91dGNvbWUsIHJhaXNpbmcgdGhlIHByb2JhYmlsaXR5IG9mIHZpY3RvcnkgYnkgMzcuNjAlIChwIDwgMC4wMDEpLiBQb2xpdHkyLCBob3dldmVyLCBkZWNyZWFzZXMgdGhlIHByb2JhYmlsaXR5IG9mIHJlYmVsIHZpY3RvcnkgYnkgNy42NSUgKHAgPCAwLjAwMSkuIFJlYmVsIFN0cmVuZ3RoIGNvbnRyaWJ1dGVzIG5lZ2F0aXZlbHksIHJlZHVjaW5nIHRoZSBjaGFuY2Ugb2YgdmljdG9yeSBieSA5LjY1JSAocCA8IDAuMDAxKS4gQWRkaXRpb25hbGx5LCBlYWNoIHllYXIgb2YgY29uZmxpY3Qgc2xpZ2h0bHkgZGVjcmVhc2VzIHRoZSBwcm9iYWJpbGl0eSBvZiB2aWN0b3J5IGJ5IDAuOTglIChwIDwgMC4wMDEpLiBFdGhuaWMgUG9sYXJpemF0aW9uIChFdGhQb2wpIGhhcyBhIHBvc2l0aXZlIGVmZmVjdCwgaW5jcmVhc2luZyB0aGUgbGlrZWxpaG9vZCBvZiB2aWN0b3J5IGJ5IDIwLjg0JSAocCA8IDAuMDEpLgoKVGhlIG1vZGVsIHVzZXMgSUlEIHN0YW5kYXJkIGVycm9ycywgd2l0aCBhbiBSwrIgb2YgNDguMDUlLCBkZW1vbnN0cmF0aW5nIGEgbW9kZXJhdGUgZXhwbGFuYXRvcnkgcG93ZXIgaW4gcHJlZGljdGluZyB0aGUgbGlrZWxpaG9vZCBvZiByZWJlbCB2aWN0b3J5LgoKIyMjIyBMb2dpdAoKYGBge3IgZWNobz1GQUxTRSwgd2FybmluZz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0KIyMgUmVncmVzc2lvbiBmb3IgY29fZXRobmljaXR5X2RrIGFzIERWCgoKbW9kZWxfb3V0Y29tZV9iaW5hcnlfZGtfMV8xIDwtIGZlZ2xtKG91dGNvbWVfYmluYXJ5X3JlYmVsX3ZpY3Rvcnlfa2F1ciB+IGNvZXRobmljX3JlYmVsX3BnbV9uYWNoaWtldF9iaW5hcnkrIExldmVsX29mX1RocmVhdCArIHBvbGl0eTIgKyBzdGF0ZV9zdHJlbmd0aCArIHJlYmVsX3N0cmVuZ3RoX25hY2hpa2V0X3NjYWxlZCArIGR1cmF0aW9uX3llYXIgKyBldGhwb2wsZmFtaWx5ID0gYmlub21pYWwobGluayA9ICJsb2dpdCIpLCBkYXRhID0gbWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsKQoKZml4ZXN0OjpldGFibGUobW9kZWxfb3V0Y29tZV9iaW5hcnlfZGtfMV8xKQpgYGAKCgojIyMgU2Vjb25kIE1vZGVsCgoqKlNpbXBsZSBMaW5lYXIgTW9kZWwgd2l0aCBubyBmaXhlZCBlZmZlY3RzIChDb2V0aG5pY2l0eSBOYWNoaWtldCBhcyBOT04gQklOQVJZKSoqCgoKYGBge3IgZWNobz1GQUxTRSwgd2FybmluZz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0KIyMgUmVncmVzc2lvbiBmb3IgY29fZXRobmljaXR5X2RrIGFzIERWCgoKbW9kZWxfb3V0Y29tZV9iaW5hcnlfZGtfMiA8LSBmZW9scyhvdXRjb21lX2JpbmFyeV9yZWJlbF92aWN0b3J5X2thdXIgfiBjb2V0aG5pY19yZWJlbF9wZ21fbmFjaGlrZXQgKyBMZXZlbF9vZl9UaHJlYXQgKyBwb2xpdHkyICsgc3RhdGVfc3RyZW5ndGggKyByZWJlbF9zdHJlbmd0aF9uYWNoaWtldF9zY2FsZWQgKyBkdXJhdGlvbl95ZWFyICsgZXRocG9sLCBkYXRhID0gbWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsKQoKZml4ZXN0OjpldGFibGUobW9kZWxfb3V0Y29tZV9iaW5hcnlfZGtfMikKYGBgCkluIHRoaXMgbW9kZWwgYW5hbHl6aW5nIHRoZSBsaWtlbGlob29kIG9mIHJlYmVsIHZpY3RvcnksIHNldmVyYWwga2V5IHZhcmlhYmxlcyBzaG93IHNpZ25pZmljYW50IGVmZmVjdHMuIFRoZSBjb25zdGFudCB0ZXJtIGlzIHNpZ25pZmljYW50bHkgbmVnYXRpdmUsIGluZGljYXRpbmcgdGhhdCB0aGUgYmFzZWxpbmUgcHJvYmFiaWxpdHkgb2YgcmViZWwgdmljdG9yeSBpcyBsb3cgKHAgPCAwLjAwMSkuIENvZXRobmljIGFsaWdubWVudCB3aXRoIHRoZSByZWJlbCBncm91cCBzaWduaWZpY2FudGx5IGRlY3JlYXNlcyB0aGUgcHJvYmFiaWxpdHkgb2YgdmljdG9yeSBieSAxOS4wMSUgKHAgPCAwLjAwMSkuIAoKTGV2ZWwgb2YgVGhyZWF0IHNpZ25pZmljYW50bHkgZW5oYW5jZXMgdGhlIGxpa2VsaWhvb2Qgb2YgcmViZWwgdmljdG9yeSwgaW5jcmVhc2luZyBpdCBieSA0MC40MSUgKHAgPCAwLjAwMSkuIFN0YXRlIFN0cmVuZ3RoIHNpbWlsYXJseSBjb250cmlidXRlcyBwb3NpdGl2ZWx5LCByYWlzaW5nIHRoZSBwcm9iYWJpbGl0eSBvZiB2aWN0b3J5IGJ5IDM3LjcxJSAocCA8IDAuMDAxKS4gUG9saXR5MiBoYXMgYSBuZWdhdGl2ZSBlZmZlY3QsIHJlZHVjaW5nIHRoZSBwcm9iYWJpbGl0eSBvZiByZWJlbCB2aWN0b3J5IGJ5IDcuNjklIChwIDwgMC4wMDEpLiBSZWJlbCBTdHJlbmd0aCBhbHNvIGhhcyBhIHNpZ25pZmljYW50IG5lZ2F0aXZlIGltcGFjdCwgZGVjcmVhc2luZyB0aGUgbGlrZWxpaG9vZCBvZiB2aWN0b3J5IGJ5IDYuMzklIChwIDwgMC4wMSkuIEVhY2ggYWRkaXRpb25hbCB5ZWFyIG9mIGNvbmZsaWN0IHNsaWdodGx5IGRlY3JlYXNlcyB0aGUgcHJvYmFiaWxpdHkgb2YgdmljdG9yeSBieSAxLjEwJSAocCA8IDAuMDAxKS4gRXRobmljIFBvbGFyaXphdGlvbiAoRXRoUG9sKSBoYXMgYSBwb3NpdGl2ZSBlZmZlY3QsIGluY3JlYXNpbmcgdGhlIGxpa2VsaWhvb2Qgb2YgdmljdG9yeSBieSAyMy41MCUgKHAgPCAwLjAwMSkuCgpUaGUgbW9kZWwgZW1wbG95cyBJSUQgc3RhbmRhcmQgZXJyb3JzLCB3aXRoIGFuIFLCsiBvZiA0Ny4zMyUsIGluZGljYXRpbmcgYSBtb2RlcmF0ZSBsZXZlbCBvZiBleHBsYW5hdG9yeSBwb3dlciBpbiBwcmVkaWN0aW5nIHJlYmVsIHZpY3Rvcnkgb3V0Y29tZXMuCgojIyMjIExvZ2l0CgoKYGBge3IgZWNobz1GQUxTRSwgd2FybmluZz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0KIyMgUmVncmVzc2lvbiBmb3IgY29fZXRobmljaXR5X2RrIGFzIERWCgoKbW9kZWxfb3V0Y29tZV9iaW5hcnlfZGtfMl8xIDwtIGZlZ2xtKG91dGNvbWVfYmluYXJ5X3JlYmVsX3ZpY3Rvcnlfa2F1ciB+IGNvZXRobmljX3JlYmVsX3BnbV9uYWNoaWtldCArIExldmVsX29mX1RocmVhdCArIHBvbGl0eTIgKyBzdGF0ZV9zdHJlbmd0aCArIHJlYmVsX3N0cmVuZ3RoX25hY2hpa2V0X3NjYWxlZCArIGR1cmF0aW9uX3llYXIgKyBldGhwb2wsIGZhbWlseSA9IGJpbm9taWFsKGxpbmsgPSAibG9naXQiKSwgZGF0YSA9IG1haW5fY2l2aWx3YXJzX2V0aG5pY19sb25naXR1ZG5hbCkKCmZpeGVzdDo6ZXRhYmxlKG1vZGVsX291dGNvbWVfYmluYXJ5X2RrXzJfMSkKYGBgCgojIyMgVGhpcmQgTW9kZWwKCioqU2ltcGxlIE1vZGVsIHdpdGggSW50ZXJhY3Rpb24gVGVybS4gUmVtb3ZpbmcgbGV2ZWwgb2YgdGhyZWF0IGJlY2F1c2UgaW50ZXJhY3Rpb24gdGVybSBpcyB0aGVyZSAoZm9yIHN5bmVyZ2lzdGljIGVmZmVjdCkuIChDb2V0aG5pY2l0eSBOYWNoaWtldCBhcyBCSU5BUlkpKioKCgpgYGB7ciBlY2hvPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQojIyBSZWdyZXNzaW9uIGZvciBjb19ldGhuaWNpdHlfZGsgYXMgRFYKCgptb2RlbF9vdXRjb21lX2JpbmFyeV9ka18zIDwtIGZlb2xzKG91dGNvbWVfYmluYXJ5X3JlYmVsX3ZpY3Rvcnlfa2F1ciB+IGNvZXRobmljX3JlYmVsX3BnbV9uYWNoaWtldF9iaW5hcnkgKyBwb2xpdHkyICsgc3RhdGVfc3RyZW5ndGggKyByZWJlbF9zdHJlbmd0aF9uYWNoaWtldF9zY2FsZWQgKyBkdXJhdGlvbl95ZWFyICsgZXRocG9sICsgc3RhdGVfc3RyZW5ndGgqcmViZWxfc3RyZW5ndGhfbmFjaGlrZXRfc2NhbGVkLCBkYXRhID0gbWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsKQoKZml4ZXN0OjpldGFibGUobW9kZWxfb3V0Y29tZV9iaW5hcnlfZGtfMykKCmBgYAoKSW50ZXJwcmV0YXRpb246IEluIHRoaXMgcmVncmVzc2lvbiBtb2RlbCBleGFtaW5pbmcgdGhlIHByb2JhYmlsaXR5IG9mIHJlYmVsIHZpY3RvcnksIHNldmVyYWwgc2lnbmlmaWNhbnQgZmFjdG9ycyBlbWVyZ2UuIFBvbGl0eTIgaGFzIGEgbmVnYXRpdmUgZWZmZWN0LCB3aXRoIGVhY2ggdW5pdCBpbmNyZWFzZSBkZWNyZWFzaW5nIHRoZSBsaWtlbGlob29kIG9mIHJlYmVsIHZpY3RvcnkgYnkgNyUgKHAgPCAwLjAwMSkuIFN0YXRlIFN0cmVuZ3RoIHNpZ25pZmljYW50bHkgaW5jcmVhc2VzIHRoZSBwcm9iYWJpbGl0eSBvZiByZWJlbCB2aWN0b3J5IGJ5IDkuNTUlIChwIDwgMC4wMDEpLiBBZGRpdGlvbmFsbHksIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIFN0YXRlIFN0cmVuZ3RoIGFuZCBSZWJlbCBTdHJlbmd0aCBzaG93cyBhIHNpZ25pZmljYW50IHBvc2l0aXZlIGVmZmVjdCwgZW5oYW5jaW5nIHRoZSBwcm9iYWJpbGl0eSBvZiB2aWN0b3J5IGJ5IDE1LjM0JSAocCA8IDAuMDAxKS4KClRoZSBub24tc2lnbmlmaWNhbnQgY29lZmZpY2llbnRzIGluY2x1ZGUgQ29ldGhuaWMgQWxpZ25tZW50LCBSZWJlbCBTdHJlbmd0aCwgRHVyYXRpb24gb2YgQ29uZmxpY3QsIGFuZCBFdGhuaWMgUG9sYXJpemF0aW9uLiBUaGUgQ29uc3RhbnQgdGVybSBpcyBub3Qgc2lnbmlmaWNhbnRseSBkaWZmZXJlbnQgZnJvbSB6ZXJvLCBhbmQgQ29ldGhuaWMgQWxpZ25tZW50IHdpdGggdGhlIHJlYmVsIGdyb3VwIGRvZXMgbm90IHNpZ25pZmljYW50bHkgaW1wYWN0IHZpY3RvcnkgcHJvYmFiaWxpdHkuCgpUaGUgbW9kZWwgdXNlcyBJSUQgc3RhbmRhcmQgZXJyb3JzIGFuZCBleHBsYWlucyA0Ni42OCUgb2YgdGhlIHZhcmlhbmNlIGluIHJlYmVsIHZpY3RvcnksIHJlZmxlY3RpbmcgYSBtb2RlcmF0ZSBsZXZlbCBvZiBleHBsYW5hdG9yeSBwb3dlci4KCiMjIyMgTG9naXQKCmBgYHtyIGVjaG89RkFMU0UsIHdhcm5pbmc9RkFMU0UsIG1lc3NhZ2U9RkFMU0V9Cgptb2RlbF9vdXRjb21lX2JpbmFyeV9ka18zXzEgPC0gZmVnbG0ob3V0Y29tZV9iaW5hcnlfcmViZWxfdmljdG9yeV9rYXVyIH4gY29ldGhuaWNfcmViZWxfcGdtX25hY2hpa2V0X2JpbmFyeSArIHBvbGl0eTIgKyBzdGF0ZV9zdHJlbmd0aCArIHJlYmVsX3N0cmVuZ3RoX25hY2hpa2V0X3NjYWxlZCArIGR1cmF0aW9uX3llYXIgKyBldGhwb2wgKyBzdGF0ZV9zdHJlbmd0aCpyZWJlbF9zdHJlbmd0aF9uYWNoaWtldF9zY2FsZWQsIGZhbWlseSA9IGJpbm9taWFsKGxpbmsgPSAibG9naXQiKSwgZGF0YSA9IG1haW5fY2l2aWx3YXJzX2V0aG5pY19sb25naXR1ZG5hbCwgY2x1c3RlciA9IH5nb3Zlcm5tZW50KQoKZml4ZXN0OjpldGFibGUobW9kZWxfb3V0Y29tZV9iaW5hcnlfZGtfM18xKQoKYGBgCgojIyMgRm91cnRoIE1vZGVsCgoqKlNpbXBsZSBNb2RlbCB3aXRoIEludGVyYWN0aW9uIFRlcm0uIFJlbW92aW5nIGxldmVsIG9mIHRocmVhdCBiZWNhdXNlIGludGVyYWN0aW9uIHRlcm0gaXMgdGhlcmUgKGZvciBzeW5lcmdpc3RpYyBlZmZlY3QpLiAoQ29ldGhuaWNpdHkgTmFjaGlrZXQgYXMgTk9OLUJJTkFSWSkqKgoKCmBgYHtyIGVjaG89RkFMU0UsIHdhcm5pbmc9RkFMU0UsIG1lc3NhZ2U9RkFMU0V9Cgptb2RlbF9vdXRjb21lX2JpbmFyeV9ka180IDwtIGZlb2xzKG91dGNvbWVfYmluYXJ5X3JlYmVsX3ZpY3Rvcnlfa2F1ciB+IGNvZXRobmljX3JlYmVsX3BnbV9uYWNoaWtldCArIHBvbGl0eTIgKyBzdGF0ZV9zdHJlbmd0aCArIHJlYmVsX3N0cmVuZ3RoX25hY2hpa2V0X3NjYWxlZCArIGR1cmF0aW9uX3llYXIgKyBldGhwb2wgKyBzdGF0ZV9zdHJlbmd0aCpyZWJlbF9zdHJlbmd0aF9uYWNoaWtldF9zY2FsZWQsIGRhdGEgPSBtYWluX2Npdmlsd2Fyc19ldGhuaWNfbG9uZ2l0dWRuYWwpCgpmaXhlc3Q6OmV0YWJsZShtb2RlbF9vdXRjb21lX2JpbmFyeV9ka180KQoKYGBgCgpJbiB0aGlzIG1vZGVsIGV4YW1pbmluZyB0aGUgb3V0Y29tZSBvZiByZWJlbCB2aWN0b3J5LCBzZXZlcmFsIHNpZ25pZmljYW50IGZpbmRpbmdzIGFyZSBldmlkZW50LiBQb2xpdHkyIGhhcyBhIHNpZ25pZmljYW50IG5lZ2F0aXZlIGVmZmVjdCwgd2hlcmUgZWFjaCB1bml0IGluY3JlYXNlIGRlY3JlYXNlcyB0aGUgcHJvYmFiaWxpdHkgb2YgcmViZWwgdmljdG9yeSBieSA3LjA4JSAocCA8IDAuMDAxKS4gU3RhdGUgU3RyZW5ndGggYWxzbyBzaWduaWZpY2FudGx5IGNvbnRyaWJ1dGVzIHRvIHRoZSBsaWtlbGlob29kIG9mIHZpY3RvcnksIGluY3JlYXNpbmcgaXQgYnkgOS4yOCUgKHAgPCAwLjAwMSkuIEFkZGl0aW9uYWxseSwgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gU3RhdGUgU3RyZW5ndGggYW5kIFJlYmVsIFN0cmVuZ3RoIGlzIHBvc2l0aXZlbHkgc2lnbmlmaWNhbnQsIHJhaXNpbmcgdGhlIHByb2JhYmlsaXR5IG9mIHZpY3RvcnkgYnkgMTUuNjMlIChwIDwgMC4wMDEpLiBEdXJhdGlvbiBpcyBhbHNvIHNpZ25pZGljYW50IHdpdGggZWFjaCBhZGRpdGlvbmFsIHllYXIgZGVjcmVhc2luZyB0aGUgcHJvYmFiaWxpdHkgb2YgdmljdG9yeSBieSAxOS44JSAocCA8IDAuMDAwMSkKClRoZSBub24tc2lnbmlmaWNhbnQgdmFyaWFibGVzIGluIHRoaXMgbW9kZWwgaW5jbHVkZSBDb2V0aG5pYyBBbGlnbm1lbnQsIFJlYmVsIFN0cmVuZ3RoLCBhbmQgRXRobmljIFBvbGFyaXphdGlvbiwgbm9uZSBvZiB3aGljaCBzaG93IGEgc3RhdGlzdGljYWxseSBzaWduaWZpY2FudCBpbXBhY3Qgb24gdGhlIG91dGNvbWUgb2YgcmViZWwgdmljdG9yeS4gCgpUaGUgbW9kZWwgZW1wbG95cyBJSUQgc3RhbmRhcmQgZXJyb3JzIGFuZCBleHBsYWlucyA0NS40NCUgb2YgdGhlIHZhcmlhbmNlIGluIHJlYmVsIHZpY3RvcnksIGluZGljYXRpbmcgYSBtb2RlcmF0ZSBsZXZlbCBvZiBleHBsYW5hdG9yeSBwb3dlci4KCiMjIyMgbG9naXQKYGBge3IgZWNobz1GQUxTRSwgd2FybmluZz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0KCm1vZGVsX291dGNvbWVfYmluYXJ5X2RrXzRfMSA8LSBmZWdsbShvdXRjb21lX2JpbmFyeV9yZWJlbF92aWN0b3J5X2thdXIgfiBjb2V0aG5pY19yZWJlbF9wZ21fbmFjaGlrZXQgKyBwb2xpdHkyICsgc3RhdGVfc3RyZW5ndGggKyByZWJlbF9zdHJlbmd0aF9uYWNoaWtldF9zY2FsZWQgKyBkdXJhdGlvbl95ZWFyICsgZXRocG9sICsgc3RhdGVfc3RyZW5ndGgqcmViZWxfc3RyZW5ndGhfbmFjaGlrZXRfc2NhbGVkLGZhbWlseSA9IGJpbm9taWFsKGxpbmsgPSAibG9naXQiKSwgZGF0YSA9IG1haW5fY2l2aWx3YXJzX2V0aG5pY19sb25naXR1ZG5hbCkKCmZpeGVzdDo6ZXRhYmxlKG1vZGVsX291dGNvbWVfYmluYXJ5X2RrXzRfMSkKCmBgYAoKIyMjIyBDb25mbGljdCBvdXRjb21lIGFzIG5vbi1iaW5hcnkgCgpgYGB7ciBlY2hvPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQptb2RlbF9vdXRjb21lX2JpbmFyeV9ka180MSA8LSBmZW9scyhvdXRjb21lIH4gY29ldGhuaWNfcmViZWxfcGdtX25hY2hpa2V0ICsgcG9saXR5MiArIHN0YXRlX3N0cmVuZ3RoICsgcmViZWxfc3RyZW5ndGhfbmFjaGlrZXRfc2NhbGVkICsgZHVyYXRpb25feWVhciArIGV0aHBvbCArIHN0YXRlX3N0cmVuZ3RoKnJlYmVsX3N0cmVuZ3RoX25hY2hpa2V0X3NjYWxlZCwgZGF0YSA9IG1haW5fY2l2aWx3YXJzX2V0aG5pY19sb25naXR1ZG5hbCkKCmZpeGVzdDo6ZXRhYmxlKG1vZGVsX291dGNvbWVfYmluYXJ5X2RrXzQxKQpgYGAKCiMjIyMgQ29uZmxpY3Qgb3V0Y29tZSBhcyBub24tYmluYXJ5IGFuZCBCaXZhcmlhdGUgbW9kZWwgKyBnb3Zlcm5tZW50IEZFCgpgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQptb2RlbF9vdXRjb21lX2JpbmFyeV9ka180MiA8LSBmZW9scyhvdXRjb21lIH4gY29ldGhuaWNfcmViZWxfcGdtX25hY2hpa2V0IHwgZ292ZXJubWVudCxkYXRhID0gbWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsLCBjbHVzdGVyID0gfmdvdmVybm1lbnQpCgpmaXhlc3Q6OmV0YWJsZShtb2RlbF9vdXRjb21lX2JpbmFyeV9ka180MikKYGBgCgojIyMjIENvbmZsaWN0IG91dGNvbWUgYXMgbm9uLWJpbmFyeSBhbmQgQml2YXJpYXRlIG1vZGVsICsgQ29uZmxpY3QgZml4ZWQgZWZmZWN0cwoKYGBge3IgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KbW9kZWxfb3V0Y29tZV9iaW5hcnlfZGtfNDMgPC0gZmVvbHMob3V0Y29tZSB+IGNvZXRobmljX3JlYmVsX3BnbV9uYWNoaWtldCB8IHVjZHBfY29uZmxpY3RpZCxkYXRhID0gbWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsLCBjbHVzdGVyID0gfmdvdmVybm1lbnQpCgpmaXhlc3Q6OmV0YWJsZShtb2RlbF9vdXRjb21lX2JpbmFyeV9ka180MykKYGBgCgoKIyMjIyBDb25mbGljdCBvdXRjb21lIGFzIG5vbi1iaW5hcnkgYW5kIE11bHRpdmFyaWF0ZSBtb2RlbCArIGdvdmVybm1lbnQgZml4ZWQgZWZmZWN0cyB3aXRob3V0IGludGVyYWN0aW9uIHRlcm1zIGFuZCBsZXZlbCBvZiB0aHJlYXQKCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9Cm1vZGVsX291dGNvbWVfYmluYXJ5X2RrXzQ0IDwtIGZlb2xzKG91dGNvbWUgfiBjb2V0aG5pY19yZWJlbF9wZ21fbmFjaGlrZXQgKyBwb2xpdHkyICsgc3RhdGVfc3RyZW5ndGggKyByZWJlbF9zdHJlbmd0aF9uYWNoaWtldF9zY2FsZWQgKyBkdXJhdGlvbl95ZWFyICsgZXRocG9sIHwgZ292ZXJubWVudCxkYXRhID0gbWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsLCBjbHVzdGVyID0gfmdvdmVybm1lbnQpCgpmaXhlc3Q6OmV0YWJsZShtb2RlbF9vdXRjb21lX2JpbmFyeV9ka180NCkKYGBgCiMjIyMgQ29uZmxpY3Qgb3V0Y29tZSBhcyBub24tYmluYXJ5IGFuZCBNdWx0aXZhcmlhdGUgbW9kZWwgKyBjb25mbGljdCBmaXhlZCBlZmZlY3RzIHdpdGhvdXQgaW50ZXJhY3Rpb24gdGVybXMgYW5kIGxldmVsIG9mIHRocmVhdAoKYGBge3IgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KbW9kZWxfb3V0Y29tZV9iaW5hcnlfZGtfNDUgPC0gZmVvbHMob3V0Y29tZSB+IGNvZXRobmljX3JlYmVsX3BnbV9uYWNoaWtldCArIHBvbGl0eTIgKyBzdGF0ZV9zdHJlbmd0aCArIHJlYmVsX3N0cmVuZ3RoX25hY2hpa2V0X3NjYWxlZCArIGR1cmF0aW9uX3llYXIgKyBldGhwb2wgfCB1Y2RwX2NvbmZsaWN0aWQsZGF0YSA9IG1haW5fY2l2aWx3YXJzX2V0aG5pY19sb25naXR1ZG5hbCwgY2x1c3RlciA9IH5nb3Zlcm5tZW50KQoKZml4ZXN0OjpldGFibGUobW9kZWxfb3V0Y29tZV9iaW5hcnlfZGtfNDUpCmBgYAoKCiMjIyBGaWZ0aCBNb2RlbAoKKipGaXhlZCBFZmZlY3RzIE9yZGluYXJ5IExlYXN0IFNxdWFyZSBNb2RlbHMgd2l0aCBDbHVzdGVyZWQgZXJyb3JzIGF0IHRoZSBDb3VudHJ5L2dvdmVybm1lbnQgbGV2ZWwuIENvZXRobmljIE5hY2hpa2V0IChCSU5BUlkpKioKCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9Cm1vZGVsX291dGNvbWVfYmluYXJ5X2RrXzUgPC0gZmVvbHMob3V0Y29tZV9iaW5hcnlfcmViZWxfdmljdG9yeV9rYXVyIH4gY29ldGhuaWNfcmViZWxfcGdtX25hY2hpa2V0X2JpbmFyeSArIHBvbGl0eTIgK0xldmVsX29mX1RocmVhdCArIHN0YXRlX3N0cmVuZ3RoICsgcmViZWxfc3RyZW5ndGhfbmFjaGlrZXRfc2NhbGVkICsgZHVyYXRpb25feWVhciArIGV0aHBvbCB8IGdvdmVybm1lbnQgLAogICAgICAgICAgICAgICBkYXRhID0gbWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsLCBjbHVzdGVyID0gfmdvdmVybm1lbnQpCgpmaXhlc3Q6OmV0YWJsZShtb2RlbF9vdXRjb21lX2JpbmFyeV9ka181KQoKYGBgCgooT1ZFUkZJVFRJTkcpCkluIHRoaXMgcmVncmVzc2lvbiBtb2RlbCBmb3IgcmViZWwgdmljdG9yeSwgc29tZSBzaWduaWZpY2FudCBmYWN0b3JzIGFyZSBldmlkZW50LiBQb2xpdHkyIHNob3dzIGEgc3Ryb25nIG5lZ2F0aXZlIGltcGFjdCwgd2l0aCBlYWNoIHVuaXQgaW5jcmVhc2UgZGVjcmVhc2luZyB0aGUgcHJvYmFiaWxpdHkgb2YgcmViZWwgdmljdG9yeSBieSA5LjA0JSAocCA8IDAuMDAxKS4gTGV2ZWwgb2YgVGhyZWF0IGlzIHBvc2l0aXZlbHkgc2lnbmlmaWNhbnQsIHNpZ25pZmljYW50bHkgaW5jcmVhc2luZyB0aGUgbGlrZWxpaG9vZCBvZiB2aWN0b3J5IGJ5IDEwOC41JSAocCA8IDAuMDAxKS4KClRoZSBhbmFseXNpcyBpbmNvcnBvcmF0ZXMgZml4ZWQgZWZmZWN0cyBmb3IgZ292ZXJubWVudCBhbmQgY2x1c3RlcnMgc3RhbmRhcmQgZXJyb3JzIGJ5IGdvdmVybm1lbnQuIFdpdGggYW4gZXhjZXB0aW9uYWxseSBoaWdoIFLCsiBvZiA5OS4zNSUgYW5kIGEgV2l0aGluIFLCsiBvZiA5Ni4xOCUsIHRoaXMgbW9kZWwgZXhwbGFpbnMgYW4gZXh0cmVtZWx5IGhpZ2ggcHJvcG9ydGlvbiBvZiB0aGUgdmFyaWFuY2UgaW4gcmViZWwgdmljdG9yeSwgcmVmbGVjdGluZyBpdHMgc3Ryb25nIGV4cGxhbmF0b3J5IHBvd2VyLgoKIyMjIyBMb2dpdApgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQptb2RlbF9vdXRjb21lX2JpbmFyeV9ka181XzEgPC0gZmVnbG0ob3V0Y29tZV9iaW5hcnlfcmViZWxfdmljdG9yeV9rYXVyIH4gY29ldGhuaWNfcmViZWxfcGdtX25hY2hpa2V0X2JpbmFyeSArIHBvbGl0eTIgK0xldmVsX29mX1RocmVhdCArIHN0YXRlX3N0cmVuZ3RoICsgcmViZWxfc3RyZW5ndGhfbmFjaGlrZXRfc2NhbGVkICsgZHVyYXRpb25feWVhciArIGV0aHBvbCB8IGdvdmVybm1lbnQgLGZhbWlseSA9IGJpbm9taWFsKGxpbmsgPSAibG9naXQiKSwKICAgICAgICAgICAgICAgZGF0YSA9IG1haW5fY2l2aWx3YXJzX2V0aG5pY19sb25naXR1ZG5hbCwgY2x1c3RlciA9IH5nb3Zlcm5tZW50KQoKZml4ZXN0OjpldGFibGUobW9kZWxfb3V0Y29tZV9iaW5hcnlfZGtfNV8xKQoKYGBgCiMjIyMgT3V0Y29tZSBub24gYmluYXJ5CgpgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQptb2RlbF9vdXRjb21lX2JpbmFyeV9ka181MSA8LSBmZW9scyhvdXRjb21lIH4gY29ldGhuaWNfcmViZWxfcGdtX25hY2hpa2V0X2JpbmFyeSArIHBvbGl0eTIgK0xldmVsX29mX1RocmVhdCArIHN0YXRlX3N0cmVuZ3RoICsgcmViZWxfc3RyZW5ndGhfbmFjaGlrZXRfc2NhbGVkICsgZHVyYXRpb25feWVhciArIGV0aHBvbCB8IGdvdmVybm1lbnQgLAogICAgICAgICAgICAgICBkYXRhID0gbWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsLCBjbHVzdGVyID0gfmdvdmVybm1lbnQpCgpmaXhlc3Q6OmV0YWJsZShtb2RlbF9vdXRjb21lX2JpbmFyeV9ka181MSkKYGBgCgoKIyMjIFNpeHRoIE1vZGVsCgoqKkZpeGVkIEVmZmVjdHMgT3JkaW5hcnkgTGVhc3QgU3F1YXJlIE1vZGVscyB3aXRoIENsdXN0ZXJlZCBlcnJvcnMgYXQgdGhlIENvdW50cnkvZ292ZXJubWVudCBsZXZlbC4gQ29ldGhuaWMgTmFjaGlrZXQgKE5PTiBCSU5BUlkpKioKCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9Cm1vZGVsX291dGNvbWVfYmluYXJ5X2RrXzYgPC0gZmVvbHMob3V0Y29tZV9iaW5hcnlfcmViZWxfdmljdG9yeV9rYXVyIH4gY29ldGhuaWNfcmViZWxfcGdtX25hY2hpa2V0ICsgcG9saXR5MiArTGV2ZWxfb2ZfVGhyZWF0ICsgc3RhdGVfc3RyZW5ndGggKyByZWJlbF9zdHJlbmd0aF9uYWNoaWtldF9zY2FsZWQgKyBkdXJhdGlvbl95ZWFyICsgZXRocG9sIHwgZ292ZXJubWVudCwKICAgICAgICAgICAgICAgZGF0YSA9IG1haW5fY2l2aWx3YXJzX2V0aG5pY19sb25naXR1ZG5hbCwgY2x1c3RlciA9IH5nb3Zlcm5tZW50KQoKZml4ZXN0OjpldGFibGUobW9kZWxfb3V0Y29tZV9iaW5hcnlfZGtfNikKYGBgCk9WRVJGSVRUSU5HCgpJbiB0aGlzIG1vZGVsIGFuYWx5emluZyByZWJlbCB2aWN0b3J5LCBzb21lIHZhcmlhYmxlcyBzaG93IHNpZ25pZmljYW50IGVmZmVjdHMuIFBvbGl0eTIgbmVnYXRpdmVseSBpbXBhY3RzIHRoZSBwcm9iYWJpbGl0eSBvZiByZWJlbCB2aWN0b3J5LCB3aXRoIGVhY2ggdW5pdCBpbmNyZWFzZSBkZWNyZWFzaW5nIHRoZSBsaWtlbGlob29kIGJ5IDkuMDQlIChwIDwgMC4wMDEpLiBMZXZlbCBvZiBUaHJlYXQgc2lnbmlmaWNhbnRseSBpbmNyZWFzZXMgdGhlIHByb2JhYmlsaXR5IG9mIHZpY3RvcnkgYnkgMTA4LjUlIChwIDwgMC4wMDEpLiAKClRoZSBtb2RlbCBpbmNsdWRlcyBmaXhlZCBlZmZlY3RzIGZvciBnb3Zlcm5tZW50IGFuZCBjbHVzdGVycyBzdGFuZGFyZCBlcnJvcnMgYnkgZ292ZXJubWVudC4gV2l0aCBhbiBSwrIgb2YgOTkuMzUlIGFuZCBhIFdpdGhpbiBSwrIgb2YgOTMuMzklLCB0aGUgbW9kZWwgZXhwbGFpbnMgYW4gZXhjZXB0aW9uYWxseSBoaWdoIHByb3BvcnRpb24gb2YgdGhlIHZhcmlhbmNlIGluIHJlYmVsIHZpY3RvcnksIGhpZ2hsaWdodGluZyBpdHMgc3Ryb25nIGV4cGxhbmF0b3J5IHBvd2VyLgoKIyMjIyBMb2dpdApgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQptb2RlbF9vdXRjb21lX2JpbmFyeV9ka182XzEgPC0gZmVnbG0ob3V0Y29tZV9iaW5hcnlfcmViZWxfdmljdG9yeV9rYXVyIH4gY29ldGhuaWNfcmViZWxfcGdtX25hY2hpa2V0ICsgcG9saXR5MiArTGV2ZWxfb2ZfVGhyZWF0ICsgc3RhdGVfc3RyZW5ndGggKyByZWJlbF9zdHJlbmd0aF9uYWNoaWtldF9zY2FsZWQgKyBkdXJhdGlvbl95ZWFyICsgZXRocG9sIHwgZ292ZXJubWVudCxmYW1pbHkgPSBiaW5vbWlhbChsaW5rID0gImxvZ2l0IiksCiAgICAgICAgICAgICAgIGRhdGEgPSBtYWluX2Npdmlsd2Fyc19ldGhuaWNfbG9uZ2l0dWRuYWwsIGNsdXN0ZXIgPSB+Z292ZXJubWVudCkKCmZpeGVzdDo6ZXRhYmxlKG1vZGVsX291dGNvbWVfYmluYXJ5X2RrXzZfMSkKYGBgCgojIyMjIE91dGNvbWUgbm9uIGJpbmFyeQpgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQptb2RlbF9vdXRjb21lX2JpbmFyeV9ka182MSA8LSBmZW9scyhvdXRjb21lIH4gY29ldGhuaWNfcmViZWxfcGdtX25hY2hpa2V0ICsgcG9saXR5MiArTGV2ZWxfb2ZfVGhyZWF0ICsgc3RhdGVfc3RyZW5ndGggKyByZWJlbF9zdHJlbmd0aF9uYWNoaWtldF9zY2FsZWQgKyBkdXJhdGlvbl95ZWFyICsgZXRocG9sIHwgZ292ZXJubWVudCwKICAgICAgICAgICAgICAgZGF0YSA9IG1haW5fY2l2aWx3YXJzX2V0aG5pY19sb25naXR1ZG5hbCwgY2x1c3RlciA9IH5nb3Zlcm5tZW50KQoKZml4ZXN0OjpldGFibGUobW9kZWxfb3V0Y29tZV9iaW5hcnlfZGtfNjEpCmBgYAoKIyMjIFNldmVudGggTW9kZWwKCioqU2FtZSBhcyB0aGUgVGhpcmQgYW5kIEZvdXJ0aCBtb2RlbHMgYnV0IHdpdGggRkUgYW5kIGNsdXN0ZXJlZCBlcnJvcnMgQ29ldGhuaWMgTkFDSElLRVQgKEJJTkFSWSkqKgpMZXZlbCBvZiB0aHJlYXQgcmVtb3ZlZCBiZWNhdXNlIHdlIHdpc2ggdG8gY2FwdHVyZSB0aGUgc3luZXJnaXN0aWMgZWZmZWN0cyBvZiBpbnRlcmFjdGlvbiB0ZXJtIApgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQptb2RlbF9vdXRjb21lX2JpbmFyeV9ka183IDwtIGZlb2xzKG91dGNvbWVfYmluYXJ5X3JlYmVsX3ZpY3Rvcnlfa2F1ciB+CiAgICAgICAgICAgICAgICAgICAgICAgIGNvZXRobmljX3JlYmVsX3BnbV9uYWNoaWtldF9iaW5hcnkgKyBwb2xpdHkyICsgc3RhdGVfc3RyZW5ndGggKyByZWJlbF9zdHJlbmd0aF9uYWNoaWtldF9zY2FsZWQgKyBkdXJhdGlvbl95ZWFyICsgZXRocG9sICsgc3RhdGVfc3RyZW5ndGgqcmViZWxfc3RyZW5ndGhfbmFjaGlrZXRfc2NhbGVkIHwgZ292ZXJubWVudCwgZGF0YSA9IG1haW5fY2l2aWx3YXJzX2V0aG5pY19sb25naXR1ZG5hbCwgY2x1c3RlciA9IH5nb3Zlcm5tZW50KQoKCmZpeGVzdDo6ZXRhYmxlKG1vZGVsX291dGNvbWVfYmluYXJ5X2RrXzcpCgpgYGAKT1ZFUkZJVFRJTkcKCkluIHRoaXMgbW9kZWwsIGEgZmV3IGtleSBmYWN0b3JzIHNpZ25pZmljYW50bHkgaW5mbHVlbmNlIHRoZSBwcm9iYWJpbGl0eSBvZiByZWJlbCB2aWN0b3J5LiBUaGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBzdGF0ZV9zdHJlbmd0aCBhbmQgcmViZWxfc3RyZW5ndGhfbmFjaGlrZXRfc2NhbGVkIHNob3dzIGEgc3Vic3RhbnRpYWwgcG9zaXRpdmUgaW1wYWN0LCB3aXRoIGEgMS11bml0IGluY3JlYXNlIGluIHRoaXMgaW50ZXJhY3Rpb24gaW5jcmVhc2luZyB0aGUgcHJvYmFiaWxpdHkgb2YgcmViZWwgdmljdG9yeSBieSBhcHByb3hpbWF0ZWx5IDE2Ni44JS4gVGhpcyBzdWdnZXN0cyB0aGF0IHdoZW4gYm90aCBzdGF0ZSBzdHJlbmd0aCBhbmQgcmViZWwgc3RyZW5ndGggYXJlIGhpZ2gsIHRoZSBsaWtlbGlob29kIG9mIGEgcmViZWwgdmljdG9yeSBzaWduaWZpY2FudGx5IHJpc2VzLgoKSG93ZXZlciwgaGlnaGVyIGxldmVscyBvZiBzdGF0ZV9zdHJlbmd0aCBhbG9uZSByZWR1Y2UgdGhlIHByb2JhYmlsaXR5IG9mIGEgcmViZWwgdmljdG9yeSBieSBhYm91dCAzODcuOSUuIFNpbWlsYXJseSwgc3Ryb25nZXIgcmViZWwgZm9yY2VzIChyZWJlbF9zdHJlbmd0aF9uYWNoaWtldF9zY2FsZWQpIGJ5IHRoZW1zZWx2ZXMgZGVjcmVhc2UgdGhlIGNoYW5jZXMgb2YgcmViZWwgc3VjY2VzcyBieSByb3VnaGx5IDEwMCUuIEFkZGl0aW9uYWxseSwgYSBtb3JlIGRlbW9jcmF0aWMgcG9saXRpY2FsIGVudmlyb25tZW50IChwb2xpdHkyKSBpbmNyZWFzZXMgdGhlIHByb2JhYmlsaXR5IG9mIGEgcmViZWwgdmljdG9yeSBieSBhcm91bmQgMjMuNiUsIHdoaWxlIGVhY2ggcGFzc2luZyB5ZWFyIG9mIGNvbmZsaWN0IChkdXJhdGlvbl95ZWFyKSBsb3dlcnMgaXQgYnkgYWJvdXQgMS44OSUuIFRoZSB2YXJpYWJsZSByZXByZXNlbnRpbmcgd2hldGhlciB0aGUgcmViZWwgZ3JvdXAgaXMgY29ldGhuaWMgd2l0aCB0aGUgcHJvZ3JhbSAoY29ldGhuaWNfcmViZWxfcGdtX25hY2hpa2V0X2JpbmFyeSkgaGFzIGEgbWlub3IgbmVnYXRpdmUgaW1wYWN0LCBidXQgaXQgaXMgbm90IHN0YXRpc3RpY2FsbHkgc2lnbmlmaWNhbnQuCgpPdmVyYWxsLCB0aGlzIG1vZGVsIGhpZ2hsaWdodHMgdGhhdCB0aGUgaW50ZXJwbGF5IGJldHdlZW4gc3RhdGUgYW5kIHJlYmVsIHN0cmVuZ3RocyBwbGF5cyBhIGNydWNpYWwgcm9sZSBpbiBkZXRlcm1pbmluZyBvdXRjb21lcywgd2l0aCBjZXJ0YWluIHBvbGl0aWNhbCBjb25kaXRpb25zIGFsc28gY29udHJpYnV0aW5nIHNpZ25pZmljYW50bHkuCgojIyMjIExvZ2l0CgpgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQptb2RlbF9vdXRjb21lX2JpbmFyeV9ka183XzEgPC0gZmVnbG0ob3V0Y29tZV9iaW5hcnlfcmViZWxfdmljdG9yeV9rYXVyIH4KICAgICAgICAgICAgICAgICAgICAgICAgY29ldGhuaWNfcmViZWxfcGdtX25hY2hpa2V0X2JpbmFyeSArIHBvbGl0eTIgKyBzdGF0ZV9zdHJlbmd0aCArIHJlYmVsX3N0cmVuZ3RoX25hY2hpa2V0X3NjYWxlZCArIGR1cmF0aW9uX3llYXIgKyBldGhwb2wgKyBzdGF0ZV9zdHJlbmd0aCpyZWJlbF9zdHJlbmd0aF9uYWNoaWtldF9zY2FsZWQgfCBnb3Zlcm5tZW50LCBmYW1pbHkgPSBiaW5vbWlhbChsaW5rID0gImxvZ2l0IiksIGRhdGEgPSBtYWluX2Npdmlsd2Fyc19ldGhuaWNfbG9uZ2l0dWRuYWwsIGNsdXN0ZXIgPSB+Z292ZXJubWVudCkKCgpmaXhlc3Q6OmV0YWJsZShtb2RlbF9vdXRjb21lX2JpbmFyeV9ka183XzEpCgpgYGAKCiMjIyMgb3V0Y29tZSBub24gYmluYXJ5CmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9Cm1vZGVsX291dGNvbWVfYmluYXJ5X2RrXzcgPC0gZmVvbHMob3V0Y29tZSB+CiAgICAgICAgICAgICAgICAgICAgICAgIGNvZXRobmljX3JlYmVsX3BnbV9uYWNoaWtldF9iaW5hcnkgKyBwb2xpdHkyICsgc3RhdGVfc3RyZW5ndGggKyByZWJlbF9zdHJlbmd0aF9uYWNoaWtldF9zY2FsZWQgKyBkdXJhdGlvbl95ZWFyICsgZXRocG9sICsgc3RhdGVfc3RyZW5ndGgqcmViZWxfc3RyZW5ndGhfbmFjaGlrZXRfc2NhbGVkIHwgZ292ZXJubWVudCwgZGF0YSA9IG1haW5fY2l2aWx3YXJzX2V0aG5pY19sb25naXR1ZG5hbCwgY2x1c3RlciA9IH5nb3Zlcm5tZW50KQoKCmZpeGVzdDo6ZXRhYmxlKG1vZGVsX291dGNvbWVfYmluYXJ5X2RrXzcpCgpgYGAKCgojIyMgRWlnaHRoIE1vZGVsCgoqKlNhbWUgYXMgdGhlIFRoaXJkIGFuZCBGb3VydGggbW9kZWxzIGJ1dCB3aXRoIEZFIGFuZCBjbHVzdGVyZWQgZXJyb3JzIENvZXRobmljIE5BQ0hJS0VUIChOT04tQklOQVJZKSoqCkxldmVsIG9mIHRocmVhdCByZW1vdmVkIGJlY2F1c2Ugd2Ugd2lzaCB0byBjYXB0dXJlIHRoZSBzeW5lcmdpc3RpYyBlZmZlY3RzIG9mIGludGVyYWN0aW9uIHRlcm0gCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9Cm1vZGVsX291dGNvbWVfYmluYXJ5X2RrXzggPC0gZmVvbHMob3V0Y29tZV9iaW5hcnlfcmViZWxfdmljdG9yeV9rYXVyIH4KICAgICAgICAgICAgICAgICAgICAgICAgY29ldGhuaWNfcmViZWxfcGdtX25hY2hpa2V0ICsgcG9saXR5MiArIHN0YXRlX3N0cmVuZ3RoICsgcmViZWxfc3RyZW5ndGhfbmFjaGlrZXRfc2NhbGVkICsgZHVyYXRpb25feWVhciArIGV0aHBvbCArIHN0YXRlX3N0cmVuZ3RoKnJlYmVsX3N0cmVuZ3RoX25hY2hpa2V0X3NjYWxlZCB8IGdvdmVybm1lbnQsIGRhdGEgPSBtYWluX2Npdmlsd2Fyc19ldGhuaWNfbG9uZ2l0dWRuYWwsIGNsdXN0ZXIgPSB+Z292ZXJubWVudCkKCgpmaXhlc3Q6OmV0YWJsZShtb2RlbF9vdXRjb21lX2JpbmFyeV9ka184KQoKYGBgCgpUaGUgcmVsYXRpb25zaGlwIGJldHdlZW4gcG9saXR5MiBhbmQgdGhlIG91dGNvbWUgaXMgcXVpdGUgc3Ryb25nIGFuZCBzaWduaWZpY2FudC4gSGVyZSwgYSBvbmUtdW5pdCBpbmNyZWFzZSBpbiBwb2xpdHkyICh3aGljaCBtZWFzdXJlcyBob3cgZGVtb2NyYXRpYyBhIGdvdmVybm1lbnQgaXMpIGlzIGFzc29jaWF0ZWQgd2l0aCBhIDIzLjU1JSBpbmNyZWFzZSBpbiB0aGUgcHJvYmFiaWxpdHkgb2YgYSByZWJlbCB2aWN0b3J5LiBUaGlzIHN1Z2dlc3RzIHRoYXQgbW9yZSBkZW1vY3JhdGljIGVudmlyb25tZW50cyBtaWdodCBzb21laG93IGZhdm9yIHJlYmVsIG91dGNvbWVzLCB3aGljaCBjb3VsZCBiZSBhbiBpbnRlcmVzdGluZyBwb2ludCB0byBleHBsb3JlIGZ1cnRoZXIuCgpPbiB0aGUgb3RoZXIgaGFuZCwgc3RhdGVfc3RyZW5ndGggaXMgaGlnaGx5IHNpZ25pZmljYW50IGJ1dCBpbiB0aGUgb3Bwb3NpdGUgZGlyZWN0aW9uLiBBIHN0cm9uZ2VyIHN0YXRlIGlzIGxpbmtlZCB0byBhIHN1YnN0YW50aWFsIGRlY3JlYXNlIGluIHRoZSBwcm9iYWJpbGl0eSBvZiBhIHJlYmVsIHZpY3RvcnksIHdpdGggYSAzODcuOSUgcmVkdWN0aW9uLiBUaGlzIGlzbid0IHN1cnByaXNpbmcgc2luY2Ugc3Ryb25nZXIgc3RhdGVzIGxpa2VseSBoYXZlIGJldHRlciByZXNvdXJjZXMgYW5kIHN0cmF0ZWdpZXMgdG8gc3VwcHJlc3MgcmViZWxsaW9ucy4KClRoZSByZWJlbF9zdHJlbmd0aF9uYWNoaWtldF9zY2FsZWQgdmFyaWFibGUgaXMgYWxzbyBxdWl0ZSBpbXBhY3RmdWwuIFdoZW4gcmViZWwgc3RyZW5ndGggaW5jcmVhc2VzLCB0aGUgbGlrZWxpaG9vZCBvZiBhIHJlYmVsIHZpY3RvcnkgZHJvcHMgYnkgMTAwJSwgd2hpY2ggc2VlbXMgY291bnRlcmludHVpdGl2ZSBhdCBmaXJzdCBnbGFuY2UuIEhvd2V2ZXIsIHRoaXMgbWlnaHQgYmUgY2FwdHVyaW5nIHNvbWUgY29tcGxleCBkeW5hbWljcyB3aGVyZSBzdHJvbmdlciByZWJlbHMgbWlnaHQgZW5nYWdlIGluIHByb2xvbmdlZCBjb25mbGljdHMgd2l0aG91dCBuZWNlc3NhcmlseSBzZWN1cmluZyBvdXRyaWdodCB2aWN0b3JpZXMuCgpUaGVyZSdzIGFsc28gYW4gaW50ZXJlc3RpbmcgaW50ZXJhY3Rpb24gYmV0d2VlbiBzdGF0ZV9zdHJlbmd0aCBhbmQgcmViZWxfc3RyZW5ndGhfbmFjaGlrZXRfc2NhbGVkLiBUaGUgY29tYmluZWQgZWZmZWN0IG9mIHN0cm9uZ2VyIHN0YXRlcyBhbmQgc3Ryb25nZXIgcmViZWxzIGluY3JlYXNlcyB0aGUgcHJvYmFiaWxpdHkgb2YgYSByZWJlbCB2aWN0b3J5IGJ5IDE2Ni44JS4gVGhpcyBjb3VsZCBpbmRpY2F0ZSB0aGF0IHdoZW4gYm90aCBzaWRlcyBhcmUgc3Ryb25nLCB0aGUgY29uZmxpY3QgZHluYW1pY3Mgc2hpZnQsIHBvc3NpYmx5IGxlYWRpbmcgdG8gbW9yZSBiYWxhbmNlZCBwb3dlciBzdHJ1Z2dsZXMgd2hlcmUgcmViZWxzIGhhdmUgYSBiZXR0ZXIgY2hhbmNlLgoKRmluYWxseSwgY29ldGhuaWNfcmViZWxfcGdtX25hY2hpa2V0IGFuZCBkdXJhdGlvbl95ZWFyIGFyZSBsZXNzIHNpZ25pZmljYW50IGJ1dCBzdGlsbCBub3Rld29ydGh5LiBUaGUgY29ldGhuaWMgYWxpZ25tZW50IHNsaWdodGx5IGRlY3JlYXNlcyB0aGUgcHJvYmFiaWxpdHkgb2YgYSByZWJlbCB2aWN0b3J5IGJ5IGFyb3VuZCAxLjk5JSwgd2hpbGUgZWFjaCBhZGRpdGlvbmFsIHllYXIgb2YgY29uZmxpY3QgZHVyYXRpb24gc2xpZ2h0bHkgZGVjcmVhc2VzIHRoZSBwcm9iYWJpbGl0eSBieSAxLjg5JS4gVGhlc2UgZWZmZWN0cywgd2hpbGUgc21hbGxlciwgc3RpbGwgYWRkIG51YW5jZSB0byB0aGUgb3ZlcmFsbCBwaWN0dXJlLgoKT1ZFUkZJVFRJTkcKCiMjIyMgbG9naXQgTW9kZWwKCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9Cm1vZGVsX291dGNvbWVfYmluYXJ5X2RrXzhfMSA8LSBmZWdsbShvdXRjb21lX2JpbmFyeV9yZWJlbF92aWN0b3J5X2thdXIgfgogICAgICAgICAgICAgICAgICAgICAgICBjb2V0aG5pY19yZWJlbF9wZ21fbmFjaGlrZXQgKyBwb2xpdHkyICsgc3RhdGVfc3RyZW5ndGggKyByZWJlbF9zdHJlbmd0aF9uYWNoaWtldF9zY2FsZWQgKyBkdXJhdGlvbl95ZWFyICsgZXRocG9sICsgc3RhdGVfc3RyZW5ndGgqcmViZWxfc3RyZW5ndGhfbmFjaGlrZXRfc2NhbGVkIHwgZ292ZXJubWVudCwgZGF0YSA9IG1haW5fY2l2aWx3YXJzX2V0aG5pY19sb25naXR1ZG5hbCwgZmFtaWx5ID0gYmlub21pYWwobGluayA9ICJsb2dpdCIpLCBjbHVzdGVyID0gfmdvdmVybm1lbnQpCgoKZml4ZXN0OjpldGFibGUobW9kZWxfb3V0Y29tZV9iaW5hcnlfZGtfOF8xKQoKYGBgCgojIyMgTmludGggTW9kZWwKCioqQWRkaXRpb25hbCBDb250cm9scyBGRU9MUyB3aXRoIENvZXRobmljIE5hY2hpa2V0IChCaW5hcnkpKioKCkFkZGluZyBUaHJlZSBWYXJpYWJsZXMgYW5kIFJlbW92aW5nIFN0YXRlIFN0cmVuZ3RoIGR1ZSB0byBwb3NzaWJpbGl0eSBvZiBNdWx0aWNvbGxpbmVhcml0eSBhbmQgYWRkaW5nIGluZGl2aWR1YWwgcHJlZGljdG9ycyBvZiBzdGF0ZSBzdHJlbmd0aApgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQptb2RlbF9vdXRjb21lX2JpbmFyeV9ka185IDwtIGZlb2xzKG91dGNvbWVfYmluYXJ5X3JlYmVsX3ZpY3Rvcnlfa2F1ciB+CiAgICAgICAgICAgICAgICAgICAgICAgIGNvZXRobmljX3JlYmVsX3BnbV9uYWNoaWtldF9iaW5hcnkgKyBwb2xpdHkyICsgZ2RwY2FwaXRhX2ltcHV0ZWRfZW50aXJlICsgbG1pbHBlcl9pbXB1dGVkX2VudGlyZSArIGx0cm9vcHJhdGlvX2ltcHV0ZWRfZW50aXJlICsgcmViZWxfc3RyZW5ndGhfbmFjaGlrZXRfc2NhbGVkICsgZHVyYXRpb25feWVhciArIGV0aHBvbCB8IGdvdmVybm1lbnQsCiAgICAgICAgICAgICAgIGRhdGEgPSBtYWluX2Npdmlsd2Fyc19ldGhuaWNfbG9uZ2l0dWRuYWwsIGNsdXN0ZXIgPSB+Z292ZXJubWVudCkKCgpmaXhlc3Q6OmV0YWJsZShtb2RlbF9vdXRjb21lX2JpbmFyeV9ka185KQoKYGBgCk9WRVJGSVRUSU5HCgpJbiB0aGlzIG1vZGVsLCBzZXZlcmFsIGZhY3RvcnMgcGxheSBhIHNpZ25pZmljYW50IHJvbGUgaW4gaW5mbHVlbmNpbmcgdGhlIGxpa2VsaWhvb2Qgb2YgYSByZWJlbCB2aWN0b3J5LiBQb2xpdHkyIGlzIG5lZ2F0aXZlbHkgYXNzb2NpYXRlZCB3aXRoIHJlYmVsIHZpY3Rvcnk7IGEgb25lLXVuaXQgaW5jcmVhc2UgaW4gdGhpcyBtZWFzdXJlIGRlY3JlYXNlcyB0aGUgcHJvYmFiaWxpdHkgb2YgYSByZWJlbCB2aWN0b3J5IGJ5IDkuNDglLiBUaGlzIHN1Z2dlc3RzIHRoYXQgaW4gbW9yZSBkZW1vY3JhdGljIHNldHRpbmdzLCByZWJlbHMgYXJlIGxlc3MgbGlrZWx5IHRvIHN1Y2NlZWQuCgpFY29ub21pYyBzdHJlbmd0aCwgYXMgY2FwdHVyZWQgYnkgZ2RwY2FwaXRhX2ltcHV0ZWRfZW50aXJlLCBzaWduaWZpY2FudGx5IHJlZHVjZXMgdGhlIHByb2JhYmlsaXR5IG9mIGEgcmViZWwgdmljdG9yeSBieSAxMTUuNiUsIGluZGljYXRpbmcgdGhhdCB3ZWFsdGhpZXIgc3RhdGVzIGFyZSBiZXR0ZXIgYXQgcXVlbGxpbmcgcmViZWxsaW9ucy4gTWVhbndoaWxlLCBtaWxpdGFyeSBwZXJzb25uZWwgcGVyIGNhcGl0YSAobG1pbHBlcl9pbXB1dGVkX2VudGlyZSkgYW5kIHRyb29wIHJhdGlvIChsdHJvb3ByYXRpb19pbXB1dGVkX2VudGlyZSkgaW5jcmVhc2UgdGhlIHByb2JhYmlsaXR5IG9mIHJlYmVsIHN1Y2Nlc3MgYnkgNzguNDYlIGFuZCAzNi42MyUsIHJlc3BlY3RpdmVseS4gVGhpcyBtaWdodCByZWZsZWN0IHRoZSBkeW5hbWljcyB3aGVyZSBoaWdoZXIgbWlsaXRhcnkgZW5nYWdlbWVudCBvciBsYXJnZXIgdHJvb3AgcHJlc2VuY2UgbWFrZXMgY29uZmxpY3Qgb3V0Y29tZXMgbGVzcyBwcmVkaWN0YWJsZS4KClJlYmVsX3N0cmVuZ3RoX25hY2hpa2V0X3NjYWxlZCBhbHNvIHBvc2l0aXZlbHkgaW1wYWN0cyB0aGUgbGlrZWxpaG9vZCBvZiBhIHJlYmVsIHZpY3RvcnksIGluY3JlYXNpbmcgaXQgYnkgODQuNjglLCBzaG93aW5nIHRoYXQgc3Ryb25nZXIgcmViZWwgZ3JvdXBzIGhhdmUgYSBiZXR0ZXIgY2hhbmNlIG9mIHdpbm5pbmcuIEZpbmFsbHksIHRoZSBkdXJhdGlvbiBvZiB0aGUgY29uZmxpY3QgKGR1cmF0aW9uX3llYXIpIHNsaWdodGx5IGluY3JlYXNlcyB0aGUgcHJvYmFiaWxpdHkgb2YgYSByZWJlbCB2aWN0b3J5IGJ5IDAuNzUlLCBzdWdnZXN0aW5nIHRoYXQgdGhlIGxvbmdlciB0aGUgY29uZmxpY3QgZHJhZ3Mgb24sIHRoZSBtb3JlIGxpa2VseSB0aGUgcmViZWxzIGFyZSB0byBzdWNjZWVkLgoKVGhlIG1vZGVsIGhhcyBnb3Zlcm5tZW50IGZpeGVkIGVmZmVjdHMgYW5kIGNsdXN0ZXJzIHN0YW5kYXJkIGVycm9ycyBieSBnb3Zlcm5tZW50LCBlbnN1cmluZyB0aGF0IGNvdW50cnktc3BlY2lmaWMgZmFjdG9ycyBhcmUgYWNjb3VudGVkIGZvci4KCiMjIyMgTG9naXQgTW9kZWwKYGBge3IgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KbW9kZWxfb3V0Y29tZV9iaW5hcnlfZGtfOV8xIDwtIGZlZ2xtKG91dGNvbWVfYmluYXJ5X3JlYmVsX3ZpY3Rvcnlfa2F1ciB+CiAgICAgICAgICAgICAgICAgICAgICAgIGNvZXRobmljX3JlYmVsX3BnbV9uYWNoaWtldF9iaW5hcnkgKyBwb2xpdHkyICsgZ2RwY2FwaXRhX2ltcHV0ZWRfZW50aXJlICsgbG1pbHBlcl9pbXB1dGVkX2VudGlyZSArIGx0cm9vcHJhdGlvX2ltcHV0ZWRfZW50aXJlICsgcmViZWxfc3RyZW5ndGhfbmFjaGlrZXRfc2NhbGVkICsgZHVyYXRpb25feWVhciArIGV0aHBvbCB8IGdvdmVybm1lbnQsCiAgICAgICAgICAgICAgIGRhdGEgPSBtYWluX2Npdmlsd2Fyc19ldGhuaWNfbG9uZ2l0dWRuYWwsIGZhbWlseSA9IGJpbm9taWFsKGxpbmsgPSAibG9naXQiKSwgY2x1c3RlciA9IH5nb3Zlcm5tZW50KQoKCmZpeGVzdDo6ZXRhYmxlKG1vZGVsX291dGNvbWVfYmluYXJ5X2RrXzlfMSkKCmBgYAoKCiMjIyBUZW50aCBNb2RlbAoKKipBZGRpdGlvbmFsIENvbnRyb2xzIEZFT0xTIHdpdGggQ29ldGhuaWMgTmFjaGlrZXQgKE5vbi1CaW5hcnkpKioKCkFkZGluZyBUaHJlZSBWYXJpYWJsZXMgYW5kIFJlbW92aW5nIFN0YXRlIFN0cmVuZ3RoIGR1ZSB0byBwb3NzaWJpbGl0eSBvZiBNdWx0aS1jb2xsaW5lYXJpdHkgYW5kIGFkZGluZyBpbmRpdmlkdWFsIHByZWRpY3RvcnMgb2Ygc3RhdGUgc3RyZW5ndGgKYGBge3IgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KbW9kZWxfb3V0Y29tZV9iaW5hcnlfZGtfMTAgPC0gZmVvbHMob3V0Y29tZV9iaW5hcnlfcmViZWxfdmljdG9yeV9rYXVyIH4KICAgICAgICAgICAgICAgICAgICAgICAgY29ldGhuaWNfcmViZWxfcGdtX25hY2hpa2V0ICsgcG9saXR5MiArIGdkcGNhcGl0YV9pbXB1dGVkX2VudGlyZSArIGxtaWxwZXJfaW1wdXRlZF9lbnRpcmUgKyBsdHJvb3ByYXRpb19pbXB1dGVkX2VudGlyZSArIHJlYmVsX3N0cmVuZ3RoX25hY2hpa2V0X3NjYWxlZCArIGR1cmF0aW9uX3llYXIgKyBldGhwb2wgfCBnb3Zlcm5tZW50LAogICAgICAgICAgICAgICBkYXRhID0gbWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsLCBjbHVzdGVyID0gfmdvdmVybm1lbnQpCgoKZml4ZXN0OjpldGFibGUobW9kZWxfb3V0Y29tZV9iaW5hcnlfZGtfMTApCgpgYGAKSW4gbW9kZWwgb3V0Y29tZV9iaW5hcnlfZGtfMTAsIHRoZSBpbXBhY3Qgb2Yga2V5IHZhcmlhYmxlcyBvbiB0aGUgcHJvYmFiaWxpdHkgb2YgcmViZWwgdmljdG9yeSBpcyBldmlkZW50LgoKUG9saXR5MiBzaG93cyBhIHNpZ25pZmljYW50IG5lZ2F0aXZlIGVmZmVjdCwgcmVkdWNpbmcgdGhlIHByb2JhYmlsaXR5IG9mIHJlYmVsIHZpY3RvcnkgYnkgOS40OCUgZm9yIGVhY2ggdW5pdCBpbmNyZWFzZS4KR0RQIHBlciBjYXBpdGEgKGdkcGNhcGl0YV9pbXB1dGVkX2VudGlyZSkgYWxzbyBzaWduaWZpY2FudGx5IGRlY3JlYXNlcyB0aGUgbGlrZWxpaG9vZCBvZiByZWJlbCB2aWN0b3J5IGJ5IDExNS42JS4KTWlsaXRhcnkgcGVyc29ubmVsIChsbWlscGVyX2ltcHV0ZWRfZW50aXJlKSBhbmQgdHJvb3AgcmF0aW8gKGx0cm9vcHJhdGlvX2ltcHV0ZWRfZW50aXJlKSBpbmNyZWFzZSB0aGUgcHJvYmFiaWxpdHkgb2YgcmViZWwgdmljdG9yeSwgd2l0aCB0cm9vcCByYXRpbyBoYXZpbmcgYSBwcm9ub3VuY2VkIGVmZmVjdCBvZiAzNi42MyUuClJlYmVsIHN0cmVuZ3RoIChyZWJlbF9zdHJlbmd0aF9uYWNoaWtldF9zY2FsZWQpIHBvc2l0aXZlbHkgaW5mbHVlbmNlcyB0aGUgcHJvYmFiaWxpdHksIGluY3JlYXNpbmcgaXQgYnkgODQuNjclLgpEdXJhdGlvbiB5ZWFyIGhhcyBhIHNtYWxsZXIgYnV0IHN0YXRpc3RpY2FsbHkgc2lnbmlmaWNhbnQgcG9zaXRpdmUgZWZmZWN0LCBpbmNyZWFzaW5nIHRoZSBwcm9iYWJpbGl0eSBieSAwLjc1JSB3aXRoIGVhY2ggYWRkaXRpb25hbCB5ZWFyLgpUaGUgY29lZmZpY2llbnQgZm9yIGNvZXRobmljX3JlYmVsX3BnbV9uYWNoaWtldCByZW1haW5zIG5lZ2xpZ2libGUgYW5kIHN0YXRpc3RpY2FsbHkgaW5zaWduaWZpY2FudCwgaW5kaWNhdGluZyBtaW5pbWFsIGltcGFjdCBvbiB0aGUgb3V0Y29tZS4KCiMjIyMgTG9naXQgTW9kZWwKCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9Cm1vZGVsX291dGNvbWVfYmluYXJ5X2RrXzEwXzEgPC0gZmVnbG0ob3V0Y29tZV9iaW5hcnlfcmViZWxfdmljdG9yeV9rYXVyIH4KICAgICAgICAgICAgICAgICAgICAgICAgY29ldGhuaWNfcmViZWxfcGdtX25hY2hpa2V0ICsgcG9saXR5MiB8IGdvdmVybm1lbnQsCiAgICAgICAgICAgICAgIGRhdGEgPSBtYWluX2Npdmlsd2Fyc19ldGhuaWNfbG9uZ2l0dWRuYWwsIGZhbWlseSA9IGJpbm9taWFsKGxpbmsgPSAibG9naXQiKSwgY2x1c3RlciA9IH5nb3Zlcm5tZW50KQoKZml4ZXN0OjpldGFibGUobW9kZWxfb3V0Y29tZV9iaW5hcnlfZGtfMTBfMSkKIyArIGdkcGNhcGl0YV9pbXB1dGVkX2VudGlyZSArIGxtaWxwZXJfaW1wdXRlZF9lbnRpcmUgKyBsdHJvb3ByYXRpb19pbXB1dGVkX2VudGlyZSArIHJlYmVsX3N0cmVuZ3RoX25hY2hpa2V0X3NjYWxlZCArIGR1cmF0aW9uX3llYXIgKyBldGhwb2wgCmBgYAoKIyMjIyBMb2dpdCBNb2RlbCBmb3Igbm9uLWxvbmdpdHVkaW5hbAoKYGBge3IgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KbW9kZWxfb3V0Y29tZV9iaW5hcnlfZGtfMTBfMV8xIDwtIGZlZ2xtKG91dGNvbWVfYmluYXJ5X3JlYmVsX3ZpY3Rvcnlfa2F1ciB+CiAgICAgICAgICAgICAgICAgICAgICAgIGNvZXRobmljX3JlYmVsX3BnbV9uYWNoaWtldCArICBMZXZlbF9vZl9UaHJlYXQsCiAgICAgICAgICAgICAgIGRhdGEgPSBtYWluX2Npdmlsd2Fyc19ldGhuaWNfbG9uZ2l0dWRuYWwsIGZhbWlseSA9IGJpbm9taWFsKGxpbmsgPSAibG9naXQiKSwgY2x1c3RlciA9IH5nb3Zlcm5tZW50KQoKZml4ZXN0OjpldGFibGUobW9kZWxfb3V0Y29tZV9iaW5hcnlfZGtfMTBfMV8xKQojICAKYGBgCgoKCiMjIFNvbWUgTW9yZSBNb2RlbHMgZm9yIE91dGNvbWUgdmFyaWFibGUgKEJpbmFyeSBhbmQgTm9uLUJpbmFyeSkgey50YWJzZXR9CgoKIyMjIFVuaXZhcmlhdGUgTW9kZWxzIGZvcjogQ29uZmxpY3Qgb3V0Y29tZSAoYmluYXJ5IGFuZCBub24tYmluYXJ5KSB+IENvZXRobmljaXR5IChiaW5hcnkgYW5kIG5vbi1iaW5hcnkpCgoqKipVbml2YXJpYXRlIE1vZGVsIEZvciBPdXRjb21lIChCaW5hcnkpIGFuZCBDb2V0aG5pY2l0eSBOYWNoaWtldCAoQmluYXJ5KS0tTW9kZWwxOyBVbml2YXJpYXRlIE1vZGVsIEZvciBPdXRjb21lIChCaW5hcnkpIGFuZCBDb2V0aG5pY2l0eSBOYWNoaWtldCAoTm9uIEJpbmFyeSlNb2RlbCAyOyBVbml2YXJpYXRlIE1vZGVsIEZvciBPdXRjb21lIChOb24tQmluYXJ5KSBhbmQgQ29ldGhuaWNpdHkgTmFjaGlrZXQgKE5vbiBCaW5hcnkpLS1Nb2RlbCAzOyBVbml2YXJpYXRlIE1vZGVsIEZvciBPdXRjb21lIChOb24gQmluYXJ5KSBhbmQgQ29ldGhuaWNpdHkgTmFjaGlrZXQgKEJpbmFyeSkqKioKYGBge3IgZWNobz1GQUxTRSwgd2FybmluZz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0KTW9kZWxzX091dGNvbWVfU2ltcGxlIDwtIGxpc3QoCiAgT25lID0gIGZlb2xzKG91dGNvbWVfYmluYXJ5X3JlYmVsX3ZpY3Rvcnlfa2F1ciB+IGNvZXRobmljX3JlYmVsX3BnbV9uYWNoaWtldF9iaW5hcnkgfCBnb3Zlcm5tZW50ICxkYXRhID0gbWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsLCBjbHVzdGVyID0gfmdvdmVybm1lbnQpLAogIFR3byA9IGZlb2xzKG91dGNvbWVfYmluYXJ5X3JlYmVsX3ZpY3Rvcnlfa2F1ciB+IGNvZXRobmljX3JlYmVsX3BnbV9uYWNoaWtldHwgZ292ZXJubWVudCAsZGF0YSA9IG1haW5fY2l2aWx3YXJzX2V0aG5pY19sb25naXR1ZG5hbCwgY2x1c3RlciA9IH5nb3Zlcm5tZW50KSwKICBUaHJlZSA9IGZlb2xzKG91dGNvbWUgfiBjb2V0aG5pY19yZWJlbF9wZ21fbmFjaGlrZXR8IGdvdmVybm1lbnQgLGRhdGEgPSBtYWluX2Npdmlsd2Fyc19ldGhuaWNfbG9uZ2l0dWRuYWwsIGNsdXN0ZXIgPSB+Z292ZXJubWVudCksCiAgRm91ciA9IGZlb2xzKG91dGNvbWUgfiBjb2V0aG5pY19yZWJlbF9wZ21fbmFjaGlrZXRfYmluYXJ5fCBnb3Zlcm5tZW50ICxkYXRhID0gbWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsLCBjbHVzdGVyID0gfmdvdmVybm1lbnQpKQoKZml4ZXN0OjpldGFibGUoTW9kZWxzX091dGNvbWVfU2ltcGxlKQoKYGBgCk1vZGVsIE9uZToKCkNvZXRobmljIFJlYmVsIFBHTSBCaW5hcnk6IFRoaXMgdmFyaWFibGUgaGFzIGEgc2xpZ2h0IG5lZ2F0aXZlIGVmZmVjdCBvbiB0aGUgcHJvYmFiaWxpdHkgb2YgcmViZWwgdmljdG9yeSwgdGhvdWdoIG5vdCBxdWl0ZSBzdGF0aXN0aWNhbGx5IHNpZ25pZmljYW50LgpDb2V0aG5pYyBSZWJlbCBQR006IFRoaXMgdmFyaWFibGUgaXNu4oCZdCBpbmNsdWRlZCBpbiB0aGlzIG1vZGVsLgpGaXhlZCBFZmZlY3RzOiBUaGUgbW9kZWwgaW5jbHVkZXMgZml4ZWQgZWZmZWN0cyBmb3IgZ292ZXJubWVudCwgYW5kIG9ic2VydmF0aW9ucyBhcmUgY2x1c3RlcmVkIGJ5IGdvdmVybm1lbnQuCk92ZXJhbGwgRml0OiBUaGUgbW9kZWwgZXhwbGFpbnMgYSBoaWdoIHByb3BvcnRpb24gb2YgdGhlIHZhcmlhbmNlIChSwrIgPSAwLjkwNjQ5KSwgYnV0IHRoZSB3aXRoaW4tY291bnRyeSBSwrIgaXMgcXVpdGUgbG93LCBpbmRpY2F0aW5nIGxpdHRsZSB2YXJpYXRpb24gZXhwbGFpbmVkIHdpdGhpbiBjb3VudHJpZXMuCgpNb2RlbCBUd286CgpDb2V0aG5pYyBSZWJlbCBQR00gQmluYXJ5OiBOb3QgaW5jbHVkZWQgaW4gdGhpcyBtb2RlbC4KQ29ldGhuaWMgUmViZWwgUEdNOiBUaGlzIHZhcmlhYmxlIHNob3dzIGEgc2xpZ2h0IG5lZ2F0aXZlIGVmZmVjdCBvbiB0aGUgcHJvYmFiaWxpdHkgb2YgcmViZWwgdmljdG9yeSwgdGhvdWdoIGl04oCZcyBub3Qgc3Ryb25nbHkgc2lnbmlmaWNhbnQuCkZpeGVkIEVmZmVjdHM6IEluY2x1ZGVzIGNvdW50cnkgZml4ZWQgZWZmZWN0cyB3aXRoIGNsdXN0ZXJpbmcgYnkgZ292ZXJubWVudC4KT3ZlcmFsbCBGaXQ6IFRoZSBtb2RlbCBoYXMgYSBzaW1pbGFyIGhpZ2ggUsKyIGFzIE1vZGVsIE9uZSAoMC45MDY1MikgYW5kIGEgc2ltaWxhciBsb3cgd2l0aGluLWNvdW50cnkgUsKyLCBpbmRpY2F0aW5nIGNvbnNpc3RlbmN5IGluIG92ZXJhbGwgZml0IGJ1dCBtaW5pbWFsIHdpdGhpbi1jb3VudHJ5IGV4cGxhbmF0b3J5IHBvd2VyLgoKTW9kZWwgVGhyZWU6CgpDb2V0aG5pYyBSZWJlbCBQR00gQmluYXJ5OiBOb3QgaW5jbHVkZWQgaGVyZS4KQ29ldGhuaWMgUmViZWwgUEdNOiBTaG93cyBhIHBvc2l0aXZlIGVmZmVjdCBvbiB0aGUgb3V0Y29tZSwgYnV0IGl04oCZcyBub3Qgc3RhdGlzdGljYWxseSBzaWduaWZpY2FudC4KRml4ZWQgRWZmZWN0czogR292ZXJubWVudCBmaXhlZCBlZmZlY3RzIGFyZSBpbmNsdWRlZCwgYW5kIG9ic2VydmF0aW9ucyBhcmUgY2x1c3RlcmVkIGJ5IGdvdmVybm1lbnQuCk92ZXJhbGwgRml0OiBUaGlzIG1vZGVsIGV4cGxhaW5zIGxlc3MgdmFyaWFuY2Ugb3ZlcmFsbCAoUsKyID0gMC41Njg2OSkgY29tcGFyZWQgdG8gdGhlIHByZXZpb3VzIG1vZGVscyBhbmQgaGFzIGEgc2xpZ2h0bHkgaGlnaGVyIHdpdGhpbi1jb3VudHJ5IFLCsiwgc3VnZ2VzdGluZyBpdCBjYXB0dXJlcyBtb3JlIHZhcmlhdGlvbiB3aXRoaW4gY291bnRyaWVzLgoKTW9kZWwgRm91cjoKCkNvZXRobmljIFJlYmVsIFBHTSBCaW5hcnk6IFRoaXMgdmFyaWFibGUgaGFzIGEgcG9zaXRpdmUgZWZmZWN0IG9uIHRoZSBvdXRjb21lLCB3aGljaCBpcyBzdGF0aXN0aWNhbGx5IHNpZ25pZmljYW50LCBpbmRpY2F0aW5nIHRoYXQgaGlnaGVyIHZhbHVlcyBhcmUgYXNzb2NpYXRlZCB3aXRoIGluY3JlYXNlZCByZWJlbCB2aWN0b3J5IHByb2JhYmlsaXRpZXMuCkNvZXRobmljIFJlYmVsIFBHTTogTm90IGluY2x1ZGVkIGluIHRoaXMgbW9kZWwuCkZpeGVkIEVmZmVjdHM6IEluY2x1ZGVzIGNvdW50cnktbGV2ZWwgZml4ZWQgZWZmZWN0cyBhbmQgY2x1c3RlcnMgYnkgZ292ZXJubWVudC4KT3ZlcmFsbCBGaXQ6IFRoZSBtb2RlbCBoYXMgYSBtb2RlcmF0ZSBSwrIgKDAuNTgzMzMpIGFuZCBhIGhpZ2hlciB3aXRoaW4tY291bnRyeSBSwrIgY29tcGFyZWQgdG8gZWFybGllciBtb2RlbHMsIHJlZmxlY3RpbmcgYSBiZXR0ZXIgZml0IGZvciB0aGUgdmFyaWF0aW9uIHdpdGhpbiBjb3VudHJpZXMuCgpHZW5lcmFsIE5vdGVzOgpBbGwgbW9kZWxzIGluY2x1ZGUgZml4ZWQgZWZmZWN0cyBmb3IgZ292ZXJubWVudCBhbmQgY2x1c3RlciBzdGFuZGFyZCBlcnJvcnMgYnkgZ292ZXJubWVudC4gVGhlIHNpZ25pZmljYW50IHZhcmlhdGlvbiBpbiBSwrIgYW5kIFdpdGhpbiBSwrIgYWNyb3NzIG1vZGVscyBpbmRpY2F0ZXMgZGlmZmVyaW5nIGxldmVscyBvZiBmaXQgYW5kIGV4cGxhbmF0b3J5IHBvd2VyLCBkZXBlbmRpbmcgb24gdGhlIHZhcmlhYmxlIHVzZWQgYW5kIHRoZSBvdXRjb21lIGFuYWx5emVkLiBUaGUgbm9uLXNpZ25pZmljYW5jZSBvZiB0aGUgY29lZmZpY2llbnRzIGFjcm9zcyB0aGVzZSBtb2RlbHMgc3VnZ2VzdHMgdGhhdCB0aGUgZGlyZWN0IGltcGFjdCBvZiBjb2V0aG5pYyBhbGlnbm1lbnQgb24gcmViZWwgdmljdG9yeSBvciBvdGhlciBvdXRjb21lcyBtYXkgbm90IGJlIGFzIHN1YnN0YW50aWFsIGFzIGh5cG90aGVzaXplZCwgb3IgbWF5IGJlIGluZmx1ZW5jZWQgYnkgb3RoZXIgdW5vYnNlcnZlZCBmYWN0b3JzLgoKCgojIyMgVEhSRUUgQ09OVFJPTFMgTXVsdGl2YXJpYXRlIE1vZGVscyBmb3I6IOKBoENvbmZsaWN0IG91dGNvbWUgKGJpbmFyeSBhbmQgbm9uLWJpbmFyeSkgfiBDb2V0aG5pY2l0eSAoYmluYXJ5IGFuZCBub24tYmluYXJ5KSArIGdkcCArIHBvbGl0eSArIGR1cmF0aW9uIAoKKioqTXVsdGl2YXJpYXRlIE1vZGVsIEZvciBPdXRjb21lIChCaW5hcnkpIGFuZCBDb2V0aG5pY2l0eSBOYWNoaWtldCAoQmluYXJ5KSsgZ2RwICsgcG9saXR5ICsgZHVyYXRpb24gLS1Nb2RlbDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE11bHRpdmFyaWF0ZSBNb2RlbCBGb3IgT3V0Y29tZSAoQmluYXJ5KSBhbmQgQ29ldGhuaWNpdHkgTmFjaGlrZXQgKE5vbiBCaW5hcnkpICsgZ2RwICsgcG9saXR5ICsgZHVyYXRpb24gIE1vZGVsIDI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNdWx0aXZhcmlhdGUgTW9kZWwgRm9yIE91dGNvbWUgKE5vbi1CaW5hcnkpIGFuZCBDb2V0aG5pY2l0eSBOYWNoaWtldCAoTm9uIEJpbmFyeSkgKyBnZHAgKyBwb2xpdHkgKyBkdXJhdGlvbiAtLU1vZGVsIDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTXVsdGl2YXJpYXRlIE1vZGVsIEZvciBPdXRjb21lIChOb24gQmluYXJ5KSBhbmQgQ29ldGhuaWNpdHkgTmFjaGlrZXQgKEJpbmFyeSkgKyBnZHAgKyBwb2xpdHkgKyBkdXJhdGlvbiAtLU1vZGVsIDQqKioKYGBge3IgZWNobz1GQUxTRSwgd2FybmluZz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0KTW9kZWxzX091dGNvbWVfdGhyZWVjb250cm9scyA8LSBsaXN0KAogIE9uZSA9ICBmZW9scyhvdXRjb21lX2JpbmFyeV9yZWJlbF92aWN0b3J5X2thdXIgfiBjb2V0aG5pY19yZWJlbF9wZ21fbmFjaGlrZXRfYmluYXJ5ICsgZ2RwY2FwaXRhX2ltcHV0ZWRfZW50aXJlICsgcG9saXR5MiArIGR1cmF0aW9uX3llYXIgfCBnb3Zlcm5tZW50ICxkYXRhID0gbWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsLCBjbHVzdGVyID0gfmdvdmVybm1lbnQpLAogIAogIFR3byA9IGZlb2xzKG91dGNvbWVfYmluYXJ5X3JlYmVsX3ZpY3Rvcnlfa2F1ciB+IGNvZXRobmljX3JlYmVsX3BnbV9uYWNoaWtldCArIGdkcGNhcGl0YV9pbXB1dGVkX2VudGlyZSArIHBvbGl0eTIgKyBkdXJhdGlvbl95ZWFyfCBnb3Zlcm5tZW50ICxkYXRhID0gbWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsLCBjbHVzdGVyID0gfmdvdmVybm1lbnQpLAogIAogIFRocmVlID0gZmVvbHMob3V0Y29tZSB+IGNvZXRobmljX3JlYmVsX3BnbV9uYWNoaWtldCArIGdkcGNhcGl0YV9pbXB1dGVkX2VudGlyZSArIHBvbGl0eTIgKyBkdXJhdGlvbl95ZWFyfCBnb3Zlcm5tZW50ICxkYXRhID0gbWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsLCBjbHVzdGVyID0gfmdvdmVybm1lbnQpLAogIAogIEZvdXIgPSBmZW9scyhvdXRjb21lIH4gY29ldGhuaWNfcmViZWxfcGdtX25hY2hpa2V0X2JpbmFyeSArIGdkcGNhcGl0YV9pbXB1dGVkX2VudGlyZSArIHBvbGl0eTIgKyBkdXJhdGlvbl95ZWFyfCBnb3Zlcm5tZW50ICxkYXRhID0gbWFpbl9jaXZpbHdhcnNfZXRobmljX2xvbmdpdHVkbmFsLCBjbHVzdGVyID0gfmdvdmVybm1lbnQpKQoKZml4ZXN0OjpldGFibGUoTW9kZWxzX091dGNvbWVfdGhyZWVjb250cm9scykKCmBgYApNb2RlbCBPbmU6CgpDb2V0aG5pYyBSZWJlbCBQR00gQmluYXJ5OiBEZWNyZWFzZXMgdGhlIHByb2JhYmlsaXR5IG9mIHJlYmVsIHZpY3RvcnkgYnkgNi40NiUsIHRob3VnaCBpdCdzIG5vdCBzdGF0aXN0aWNhbGx5IHNpZ25pZmljYW50LgpHRFAgcGVyIENhcGl0YTogUmVkdWNlcyB0aGUgcHJvYmFiaWxpdHkgb2YgdmljdG9yeSBieSAzOC44NCUuClBvbGl0eTI6IEEgMS11bml0IGluY3JlYXNlIGxvd2VycyB0aGUgcHJvYmFiaWxpdHkgb2YgcmViZWwgdmljdG9yeSBieSA4Ljg3JS4KRHVyYXRpb24gWWVhcjogQWZmZWN0cyB0aGUgcHJvYmFiaWxpdHkgbmVnYXRpdmVseSBieSAxLjEwJSBwZXIgeWVhci4KRml4ZWQgRWZmZWN0czogQ291bnRyeS1sZXZlbCBmaXhlZCBlZmZlY3RzIGFyZSBpbmNsdWRlZCwgYW5kIGNsdXN0ZXJpbmcgaXMgYnkgZ292ZXJubWVudC4KCk1vZGVsIFR3bzoKR0RQIHBlciBDYXBpdGE6IFNhbWUgYXMgTW9kZWwgT25lLCBzaG93aW5nIGEgMzguODklIGRlY3JlYXNlIGluIHZpY3RvcnkgcHJvYmFiaWxpdHkuClBvbGl0eTI6IFNhbWUgYXMgTW9kZWwgT25lLCByZWR1Y2luZyBwcm9iYWJpbGl0eSBieSA4Ljg3JS4KRHVyYXRpb24gWWVhcjogU2ltaWxhcmx5IGRlY3JlYXNlcyB0aGUgcHJvYmFiaWxpdHkgYnkgMS4xMCUgYW5udWFsbHkuCkNvZXRobmljIFJlYmVsIFBHTTogU2xpZ2h0bHkgbGVzcyBuZWdhdGl2ZSBpbXBhY3QgY29tcGFyZWQgdG8gTW9kZWwgT25lIGF0IC02Ljc1JS4KRml4ZWQgRWZmZWN0czogQ291bnRyeS1sZXZlbCBmaXhlZCBlZmZlY3RzIGFuZCBnb3Zlcm5tZW50IGNsdXN0ZXJpbmcgYXBwbGllZC4KCk1vZGVsIFRocmVlOgpDb2V0aG5pYyBSZWJlbCBQR00gQmluYXJ5OiBJbmNyZWFzZXMgdGhlIHByb2JhYmlsaXR5IG9mIHJlYmVsIHZpY3RvcnkgYnkgNDguNTElLCB0aG91Z2ggbm90IHN0YXRpc3RpY2FsbHkgc2lnbmlmaWNhbnQuCkdEUCBwZXIgQ2FwaXRhOiBTaG93cyBhIG5vbi1zaWduaWZpY2FudCBkZWNyZWFzZSBpbiBwcm9iYWJpbGl0eSBvZiAxMS44OSUuClBvbGl0eTI6IEEgbWlub3IgcG9zaXRpdmUgZWZmZWN0IG9uIHByb2JhYmlsaXR5IG9mIDEuMzMlLgpEdXJhdGlvbiBZZWFyOiBTbGlnaHRseSByZWR1Y2VzIHRoZSBwcm9iYWJpbGl0eSBieSAxLjQ5JSBwZXIgeWVhci4KRml4ZWQgRWZmZWN0czogSW5jbHVkZXMgY291bnRyeS1sZXZlbCBmaXhlZCBlZmZlY3RzIGFuZCBnb3Zlcm5tZW50IGNsdXN0ZXJpbmcuCgpNb2RlbCBGb3VyOgpDb2V0aG5pYyBSZWJlbCBQR00gQmluYXJ5OiBJbmNyZWFzZXMgdGhlIHByb2JhYmlsaXR5IG9mIHJlYmVsIHZpY3RvcnkgYnkgNTUuMDYlLCBzdGF0aXN0aWNhbGx5IHNpZ25pZmljYW50LgpHRFAgcGVyIENhcGl0YTogU2xpZ2h0bHkgZGVjcmVhc2VzIHByb2JhYmlsaXR5IGJ5IDE0LjIwJS4KUG9saXR5MjogQSBzbWFsbCBwb3NpdGl2ZSBlZmZlY3Qgb2YgMC45NiUuCkR1cmF0aW9uIFllYXI6IEEgbWlub3IgbmVnYXRpdmUgZWZmZWN0IG9mIDEuNzclIHBlciB5ZWFyLgpGaXhlZCBFZmZlY3RzOiBDb3VudHJ5LWxldmVsIGZpeGVkIGVmZmVjdHMgaW5jbHVkZWQsIGNsdXN0ZXJpbmcgYnkgZ292ZXJubWVudC4KCgpHZW5lcmFsIE5vdGVzOgpBbGwgbW9kZWxzIGluY29ycG9yYXRlIGZpeGVkIGVmZmVjdHMgZm9yIGdvdmVybm1lbnQgYW5kIGNsdXN0ZXIgc3RhbmRhcmQgZXJyb3JzIGJ5IGdvdmVybm1lbnQsIHdoaWNoIGhlbHBzIGFjY291bnQgZm9yIHdpdGhpbi1nb3Zlcm5tZW50IGNvcnJlbGF0aW9ucy4gVGhlIGhpZ2ggUsKyIHZhbHVlcyBpbiBNb2RlbHMgT25lIGFuZCBUd28gc3VnZ2VzdCB0aGVzZSBtb2RlbHMgZXhwbGFpbiBhIHN1YnN0YW50aWFsIHBvcnRpb24gb2YgdGhlIHZhcmlhbmNlIGluIHRoZSBvdXRjb21lIHZhcmlhYmxlLiBEZXNwaXRlIHRoaXMsIHRoZSBjb2VmZmljaWVudHMgZm9yIHRoZSBrZXkgdmFyaWFibGVzIG9mIGludGVyZXN0IChjb2V0aG5pY19yZWJlbF9wZ21fbmFjaGlrZXRfYmluYXJ5IGFuZCBjb2V0aG5pY19yZWJlbF9wZ21fbmFjaGlrZXQpIGFyZSBub3Qgc3RhdGlzdGljYWxseSBzaWduaWZpY2FudCBhY3Jvc3MgbW9kZWxzLCBpbmRpY2F0aW5nIHRoYXQsIHdpdGhpbiB0aGlzIGRhdGFzZXQsIHRoZSBkaXJlY3QgaW1wYWN0IG9mIGNvZXRobmljIGFsaWdubWVudCBvbiByZWJlbCB2aWN0b3J5IG1pZ2h0IGJlIGxpbWl0ZWQgb3Igb3ZlcnNoYWRvd2VkIGJ5IG90aGVyIGZhY3RvcnMuCgoKCiMjIyBGT1VSIENPTlRST0xTIE11bHRpdmFyaWF0ZSBNb2RlbHMgZm9yOiDigaBDb25mbGljdCBvdXRjb21lIChiaW5hcnkgYW5kIG5vbi1iaW5hcnkpIH4gQ29ldGhuaWNpdHkgKGJpbmFyeSBhbmQgbm9uLWJpbmFyeSkgKyBnZHAgKyBwb2xpdHkgKyBkdXJhdGlvbiArIGV0aHBvbAoKKioqTXVsdGl2YXJpYXRlIE1vZGVsIEZvciBPdXRjb21lIChCaW5hcnkpIGFuZCBDb2V0aG5pY2l0eSBOYWNoaWtldCAoQmluYXJ5KSsgZ2RwICsgcG9saXR5ICsgZHVyYXRpb24gKyBldGhwb2wgLS1Nb2RlbDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTXVsdGl2YXJpYXRlIE1vZGVsIEZvciBPdXRjb21lIChCaW5hcnkpIGFuZCBDb2V0aG5pY2l0eSBOYWNoaWtldCAoTm9uIEJpbmFyeSkgKyBnZHAgKyBwb2xpdHkgKyBkdXJhdGlvbiArIGV0aHBvbCBNb2RlbCAyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNdWx0aXZhcmlhdGUgTW9kZWwgRm9yIE91dGNvbWUgKE5vbi1CaW5hcnkpIGFuZCBDb2V0aG5pY2l0eSBOYWNoaWtldCAoTm9uIEJpbmFyeSkgKyBnZHAgKyBwb2xpdHkgKyBkdXJhdGlvbiArIGV0aHBvbCAtLU1vZGVsIDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNdWx0aXZhcmlhdGUgTW9kZWwgRm9yIE91dGNvbWUgKE5vbiBCaW5hcnkpIGFuZCBDb2V0aG5pY2l0eSBOYWNoaWtldCAoQmluYXJ5KSArIGdkcCArIHBvbGl0eSArIGR1cmF0aW9uICsgZXRocG9sIC0tTW9kZWwgNCoqKgpgYGB7ciBlY2hvPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQpNb2RlbHNfT3V0Y29tZV9mb3VyY29udHJvbHMgPC0gbGlzdCgKICBPbmUgPSAgZmVvbHMob3V0Y29tZV9iaW5hcnlfcmViZWxfdmljdG9yeV9rYXVyIH4gY29ldGhuaWNfcmViZWxfcGdtX25hY2hpa2V0X2JpbmFyeSArIGdkcGNhcGl0YV9pbXB1dGVkX2VudGlyZSArIHBvbGl0eTIgKyBkdXJhdGlvbl95ZWFyICsgZXRocG9sIHwgZ292ZXJubWVudCAsZGF0YSA9IG1haW5fY2l2aWx3YXJzX2V0aG5pY19sb25naXR1ZG5hbCwgY2x1c3RlciA9IH5nb3Zlcm5tZW50KSwKICAKICBUd28gPSBmZW9scyhvdXRjb21lX2JpbmFyeV9yZWJlbF92aWN0b3J5X2thdXIgfiBjb2V0aG5pY19yZWJlbF9wZ21fbmFjaGlrZXQgKyBnZHBjYXBpdGFfaW1wdXRlZF9lbnRpcmUgKyBwb2xpdHkyICsgZHVyYXRpb25feWVhciArIGV0aHBvbHwgZ292ZXJubWVudCAsZGF0YSA9IG1haW5fY2l2aWx3YXJzX2V0aG5pY19sb25naXR1ZG5hbCwgY2x1c3RlciA9IH5nb3Zlcm5tZW50KSwKICAKICBUaHJlZSA9IGZlb2xzKG91dGNvbWUgfiBjb2V0aG5pY19yZWJlbF9wZ21fbmFjaGlrZXQgKyBnZHBjYXBpdGFfaW1wdXRlZF9lbnRpcmUgKyBwb2xpdHkyICsgZHVyYXRpb25feWVhciArIGV0aHBvbHwgZ292ZXJubWVudCAsZGF0YSA9IG1haW5fY2l2aWx3YXJzX2V0aG5pY19sb25naXR1ZG5hbCwgY2x1c3RlciA9IH5nb3Zlcm5tZW50KSwKICAKICBGb3VyID0gZmVvbHMob3V0Y29tZSB+IGNvZXRobmljX3JlYmVsX3BnbV9uYWNoaWtldF9iaW5hcnkgKyBnZHBjYXBpdGFfaW1wdXRlZF9lbnRpcmUgKyBwb2xpdHkyICsgZHVyYXRpb25feWVhciArIGV0aHBvbHwgZ292ZXJubWVudCAsZGF0YSA9IG1haW5fY2l2aWx3YXJzX2V0aG5pY19sb25naXR1ZG5hbCwgY2x1c3RlciA9IH5nb3Zlcm5tZW50KSkKCmZpeGVzdDo6ZXRhYmxlKE1vZGVsc19PdXRjb21lX2ZvdXJjb250cm9scykKCmBgYAoKCk1vZGVsIE9uZToKCkNvZXRobmljIFJlYmVsIFBHTSBCaW5hcnk6IEEgNS4wMSUgZGVjcmVhc2UgaW4gdGhlIHByb2JhYmlsaXR5IG9mIHJlYmVsIHZpY3RvcnksIHRob3VnaCBub3QgcXVpdGUgc2lnbmlmaWNhbnQuCkdEUCBwZXIgQ2FwaXRhOiBTaWduaWZpY2FudGx5IGxvd2VycyB0aGUgcHJvYmFiaWxpdHkgb2YgdmljdG9yeSBieSBhYm91dCA3Ni41NSUuClBvbGl0eTI6IERlY3JlYXNlcyB0aGUgcHJvYmFiaWxpdHkgb2YgdmljdG9yeSBieSA3Ljg4JSwgYSBzdHJvbmcgZWZmZWN0LgpEdXJhdGlvbiBZZWFyOiBWZXJ5IGxpdHRsZSBpbXBhY3Qgb24gdGhlIHByb2JhYmlsaXR5LCBjaGFuZ2luZyBieSBqdXN0IC0wLjIzJSBwZXIgeWVhci4KRml4ZWQgRWZmZWN0czogQ291bnRyeS1sZXZlbCBmaXhlZCBlZmZlY3RzIGFyZSBpbmNsdWRlZCwgd2l0aCBjbHVzdGVyaW5nIGJ5IGdvdmVybm1lbnQuCk1vZGVsIFR3bzoKCkdEUCBwZXIgQ2FwaXRhOiBTaW1pbGFyIHRvIE1vZGVsIE9uZSwgcmVkdWNlcyB2aWN0b3J5IHByb2JhYmlsaXR5IGJ5IDc2LjU1JS4KUG9saXR5MjogU2FtZSBzaWduaWZpY2FudCBlZmZlY3QgYXMgTW9kZWwgT25lLCByZWR1Y2luZyB0aGUgcHJvYmFiaWxpdHkgYnkgNy44OCUuCkR1cmF0aW9uIFllYXI6IEFsc28gc2hvd3MgYSBtaW5pbWFsIGVmZmVjdCBvZiAtMC4yMyUgcGVyIHllYXIuCkNvZXRobmljIFJlYmVsIFBHTTogU2hvd3MgYSBzbGlnaHQgbmVnYXRpdmUgZWZmZWN0LCBkZWNyZWFzaW5nIHZpY3RvcnkgcHJvYmFiaWxpdHkgYnkgNS4yNSUuCkZpeGVkIEVmZmVjdHM6IENvdW50cnktbGV2ZWwgZml4ZWQgZWZmZWN0cyBhbmQgY2x1c3RlcmluZyBieSBnb3Zlcm5tZW50IGFyZSBhcHBsaWVkLgpNb2RlbCBUaHJlZToKCkNvZXRobmljIFJlYmVsIFBHTSBCaW5hcnk6IEluY3JlYXNlcyB0aGUgcHJvYmFiaWxpdHkgb2YgcmViZWwgdmljdG9yeSBieSA1NS4xMCUsIGEgc2lnbmlmaWNhbnQgZWZmZWN0LgpHRFAgcGVyIENhcGl0YTogQSBzaWduaWZpY2FudCBkZWNyZWFzZSBpbiBwcm9iYWJpbGl0eSwgYWJvdXQgMTE5LjgwJS4KUG9saXR5MjogQSBwb3NpdGl2ZSBlZmZlY3Qgb24gdmljdG9yeSBwcm9iYWJpbGl0eSBvZiAzLjUyJSwgYnV0IGxlc3Mgc2lnbmlmaWNhbnQuCkR1cmF0aW9uIFllYXI6IFNsaWdodGx5IGluY3JlYXNlcyBwcm9iYWJpbGl0eSBieSAwLjUwJSBwZXIgeWVhci4KRml4ZWQgRWZmZWN0czogSW5jbHVkZXMgY291bnRyeS1sZXZlbCBmaXhlZCBlZmZlY3RzIGFuZCBjbHVzdGVyaW5nIGJ5IGdvdmVybm1lbnQuCk1vZGVsIEZvdXI6CgpDb2V0aG5pYyBSZWJlbCBQR00gQmluYXJ5OiBJbmNyZWFzZXMgdGhlIHByb2JhYmlsaXR5IG9mIHJlYmVsIHZpY3RvcnkgYnkgMzIuNDAlLCBzaWduaWZpY2FudCBidXQgbGVzcyBzbyB0aGFuIGluIE1vZGVsIFRocmVlLgpHRFAgcGVyIENhcGl0YTogQWxzbyBzaWduaWZpY2FudGx5IHJlZHVjZXMgdGhlIHByb2JhYmlsaXR5LCBhYm91dCAxMjkuNTAlLgpQb2xpdHkyOiBBIHNtYWxsIHBvc2l0aXZlIGVmZmVjdCBvZiAzLjI0JSBvbiB2aWN0b3J5IHByb2JhYmlsaXR5LgpEdXJhdGlvbiBZZWFyOiBNaW5pbWFsIHBvc2l0aXZlIGVmZmVjdCBvbiBwcm9iYWJpbGl0eSwgYWJvdXQgMC4zMiUgcGVyIHllYXIuCkZpeGVkIEVmZmVjdHM6IENvdW50cnktbGV2ZWwgZml4ZWQgZWZmZWN0cyBhbmQgY2x1c3RlcmluZyBieSBnb3Zlcm5tZW50IGFyZSB1c2VkLgoKCkdlbmVyYWwgTm90ZXM6ClRoZXNlIG1vZGVscyBpbmNsdWRlIGFkZGl0aW9uYWwgY29udHJvbCB2YXJpYWJsZXMgdG8gYWNjb3VudCBmb3IgbW9yZSBmYWN0b3JzIGluZmx1ZW5jaW5nIHRoZSBvdXRjb21lLiBUaGUgYWRkaXRpb24gb2YgZXRocG9sIHNlZW1zIHRvIGluZmx1ZW5jZSB0aGUgY29lZmZpY2llbnRzIGFuZCBzaWduaWZpY2FuY2UgbGV2ZWxzIG9mIHRoZSBtYWluIHZhcmlhYmxlcywgcGFydGljdWxhcmx5IGluIE1vZGVsIFRocmVlLCB3aGVyZSB0aGUgYmluYXJ5IG1lYXN1cmUgb2YgY29ldGhuaWMgYWxpZ25tZW50IGJlY29tZXMgc2lnbmlmaWNhbnQuIFRoZSBvdmVyYWxsIFLCsiBhbmQgV2l0aGluIFLCsiB2YWx1ZXMgc3VnZ2VzdCB0aGF0IHRoZXNlIG1vZGVscyBjYXB0dXJlIGEgc3Vic3RhbnRpYWwgYW1vdW50IG9mIHZhcmlhbmNlIGluIHRoZSBvdXRjb21lLCB3aXRoIHRoZSBwcmVzZW5jZSBvZiBldGhwb2wgZW5oYW5jaW5nIHRoZSBtb2RlbCBmaXQgaW4gc29tZSBjYXNlcy4KCiMgUGFydCBBIFZpc3VhbGlzYXRpb25zCgojIyBTdGFyZ2F6ZXIKCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CnN0YXJnYXplcl8xIDwtIG1vZGVsc3VtbWFyeShsaXN0KG1vZGVsX2NvZXRobmljX2JpdmFyaWF0ZTEsIG1vZGVsX2NvZXRobmljX2JpdmFyaWF0ZTMsIG1vZGVsX2NvZXRobmljaXR5X25hY2hpa2V0XzMxLCBtb2RlbF9jb2V0aG5pY2l0eV9uYWNoaWtldF80MSksIG91dHB1dCA9ICJtYXJrZG93biIsCiAgc3RhdGlzdGljID0gYygic3RkLmVycm9yIiwgInAudmFsdWUiKSwKICBzdGFycyA9IFRSVUUpCgpzdGFyZ2F6ZXJfMQoKYGBgCgoKIyMgQ29lZnBsb3RzCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CmNvZWZwbG90KG1vZGVsX2NvZXRobmljX2JpdmFyaWF0ZTEsIAogICAgICAgICBwbG90ID0gVFJVRSwgCiAgICAgICAgIGludGVyY2VwdCA9IEZBTFNFLCAKICAgICAgICAgY29uZmludCA9IFRSVUUsIAogICAgICAgICBzdGFycyA9IFRSVUUsCiAgICAgICAgIGhvcml6b250YWwgPSBUUlVFLAogICAgICAgICBjb2wgPSAiZGFya2JsdWUiLAogICAgICAgICBtYWluID0gIkNvZWZmaWNpZW50IFBsb3Qgb2YgTGV2ZWwgb2YgVGhyZWF0IikKCm10ZXh0KCJGb3IgTW9kZWwgMi4xLjEgKEJpdmFyaWF0ZSBNb2RlbCAxOiBDb2V0aG5pYyBCaW5hcnkgYW5kIENvdW50cnkgRml4ZWQgRWZmZWN0cykiLCBzaWRlID0gMywgbGluZSA9IDAuNSwgY2V4ID0gMC44LCBjb2wgPSAiZGFya2JsdWUiKQpgYGAKCgpgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQpjb2VmcGxvdChtb2RlbF9jb2V0aG5pY19iaXZhcmlhdGUzLAogICAgICAgICBwbG90ID0gVFJVRSwgCiAgICAgICAgIGludGVyY2VwdCA9IEZBTFNFLCAKICAgICAgICAgY29uZmludCA9IFRSVUUsIAogICAgICAgICBzdGFycyA9IFRSVUUsIAogICAgICAgICBjb2wgPSAiZGFya3JlZCIsCiAgICAgICAgIG1haW4gPSAiQ29lZmZpY2llbnQgUGxvdCBvZiBMZXZlbCBvZiBUaHJlYXQgIikKbXRleHQoIkZvciAyLjEuMyAoQml2YXJpYXRlIE1vZGVsIDM6IENvZXRobmljIE5vbiBCaW5hcnkgYW5kIEdvdnQgRkUpIixzaWRlID0gMywgbGluZSA9IDAuNSwgY2V4ID0gMC44LCBjb2wgPSAiZGFya3JlZCIpCmBgYAoKCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CmNvZWZwbG90KG1vZGVsX2NvZXRobmljaXR5X25hY2hpa2V0XzMxLAogICAgICAgICBwbG90ID0gVFJVRSwgCiAgICAgICAgIGludGVyY2VwdCA9IEZBTFNFLCAKICAgICAgICAgY29uZmludCA9IFRSVUUsIAogICAgICAgICBzdGFycyA9IFRSVUUsIAogICAgICAgICBjb2wgPSAiZGFya2dyZWVuIiwKICAgICAgICAgbWFpbiA9ICIgQ29lZmZpY2llbnQgUGxvdCIpCgptdGV4dCgiIEZvciAyLjEuNy4xIDIuMS4zLjEgKE5vbiBCaW5hcnkpIENvZXRobmljaXR5IHdpdGggR292ZXJubWVudCBmaXhlZCBlZmZlY3RzIiwgc2lkZSA9IDMsIGxpbmUgPSAwLjUsIGNleCA9IDAuOCwgY29sID0gImRhcmtncmVlbiIpCgpgYGAKCgpgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQpjb2VmcGxvdChtb2RlbF9jb2V0aG5pY2l0eV9uYWNoaWtldF80MSwKICAgICAgICAgcGxvdCA9IFRSVUUsIAogICAgICAgICBpbnRlcmNlcHQgPSBGQUxTRSwgCiAgICAgICAgIGNvbmZpbnQgPSBUUlVFLCAKICAgICAgICAgc3RhcnMgPSBUUlVFLCAKICAgICAgICAgY29sID0gImRhcmtvcmFuZ2UiLAogICAgICAgICBtYWluID0gIiBDb2VmZmljaWVudCBQbG90KSIpCgptdGV4dCgiRm9yIDIuMS44LjEgMi4xLjQuMSBDb2V0aG5pY2l0eSBub24tYmluYXJ5LCBnb3Zlcm5tZW50IGZpeGVkIGVmZmVjdHMiLHNpZGUgPSAzLCBsaW5lID0gMC41LCBjZXggPSAwLjgsIGNvbCA9ICJkYXJrb3JhbmdlIikKYGBgCgo=