Automatic selection for cognitive explorations
Initialization...
TASK: Genetic algorithm in the candidate set.
Initialization...
Algorithm started...
After 10 generations:
Best model: memore_total~1+total_r1+rota_c
Crit= 244.050306697682
Mean crit= 1547.67242696268
Change in best IC: -9755.94969330232 / Change in mean IC: -8452.32757303732
After 20 generations:
Best model: memore_total~1+total_r1+rota_c
Crit= 244.050306697682
Mean crit= 1511.40803694905

Change in best IC: 0 / Change in mean IC: -36.2643900136377
After 30 generations:
Best model: memore_total~1+total_r1+rota_c
Crit= 244.050306697682
Mean crit= 1468.26284646846

Change in best IC: 0 / Change in mean IC: -43.1451904805883
After 40 generations:
Best model: memore_total~1+total_r1+rota_c
Crit= 244.050306697682
Mean crit= 1376.64625977115

Change in best IC: 0 / Change in mean IC: -91.6165866973104
After 50 generations:
Best model: memore_total~1+total_r1+rota_c
Crit= 244.050306697682
Mean crit= 1341.55645259858

Change in best IC: 0 / Change in mean IC: -35.0898071725715
After 60 generations:
Best model: memore_total~1+total_r1+rota_c
Crit= 244.050306697682
Mean crit= 1361.52003540418

Change in best IC: 0 / Change in mean IC: 19.9635828056021
After 70 generations:
Best model: memore_total~1+total_r1+rota_c
Crit= 244.050306697682
Mean crit= 1390.81247694185

Change in best IC: 0 / Change in mean IC: 29.2924415376747
After 80 generations:
Best model: memore_total~1+total_r1+rota_c
Crit= 244.050306697682
Mean crit= 1379.85566413688

Change in best IC: 0 / Change in mean IC: -10.9568128049725
After 90 generations:
Best model: memore_total~1+total_r1+rota_c
Crit= 244.050306697682
Mean crit= 1348.28665193309

Change in best IC: 0 / Change in mean IC: -31.5690122037893
After 100 generations:
Best model: memore_total~1+total_r1+rota_c
Crit= 244.050306697682
Mean crit= 1338.10903998518

Change in best IC: 0 / Change in mean IC: -10.1776119479127
After 110 generations:
Best model: memore_total~1+total_r1+rota_c
Crit= 244.050306697682
Mean crit= 1318.41221968824

Change in best IC: 0 / Change in mean IC: -19.6968202969438
After 120 generations:
Best model: memore_total~1+total_r1+rota_c
Crit= 244.050306697682
Mean crit= 1308.79770429867

Change in best IC: 0 / Change in mean IC: -9.61451538956157
After 130 generations:
Best model: memore_total~1+total_r1+rota_c
Crit= 244.050306697682
Mean crit= 1308.79770429867

Change in best IC: 0 / Change in mean IC: 0
After 140 generations:
Best model: memore_total~1+total_r1+rota_c
Crit= 244.050306697682
Mean crit= 1299.44645385895

Change in best IC: 0 / Change in mean IC: -9.35125043972835
After 150 generations:
Best model: memore_total~1+total_r1+rota_c
Crit= 244.050306697682
Mean crit= 1299.44645385895

Change in best IC: 0 / Change in mean IC: 0
After 160 generations:
Best model: memore_total~1+total_r1+rota_c
Crit= 244.050306697682
Mean crit= 1299.44645385895

Change in best IC: 0 / Change in mean IC: 0
After 170 generations:
Best model: memore_total~1+total_r1+rota_c
Crit= 244.050306697682
Mean crit= 1299.44645385895

Change in best IC: 0 / Change in mean IC: 0
After 180 generations:
Best model: memore_total~1+total_r1+rota_c
Crit= 244.050306697682
Mean crit= 1290.14327146326

Change in best IC: 0 / Change in mean IC: -9.30318239568805
After 190 generations:
Best model: memore_total~1+total_r1+rota_c
Crit= 244.050306697682
Mean crit= 1290.14327146326

Change in best IC: 0 / Change in mean IC: 0
After 200 generations:
Best model: memore_total~1+total_r1+rota_c
Crit= 244.050306697682
Mean crit= 1290.14327146326

Change in best IC: 0 / Change in mean IC: 0
After 210 generations:
Best model: memore_total~1+total_r1+rota_c
Crit= 244.050306697682
Mean crit= 1290.14327146326

Change in best IC: 0 / Change in mean IC: 0
After 220 generations:
Best model: memore_total~1+total_r1+rota_c
Crit= 244.050306697682
Mean crit= 1290.14327146326

Change in best IC: 0 / Change in mean IC: 0
After 230 generations:
Best model: memore_total~1+total_r1+rota_c
Crit= 244.050306697682
Mean crit= 1290.14327146326

Improvements in best and average IC have bebingo en below the specified goals.
Algorithm is declared to have converged.
Completed.

$name
[1] "glmulti.analysis"
$method
[1] "g"
$fitting
[1] "glm"
$crit
[1] "aicc"
$level
[1] 2
$marginality
[1] TRUE
$confsetsize
[1] 113
$bestic
[1] 244.0503
$icvalues
[1] 244.0503 244.9526 245.5923 245.6145 245.9842 246.4071 246.6443 247.3656 247.4865 247.7751 247.8108 248.0166 248.1868 248.2331
[15] 248.3058 248.3298 248.4816 248.4864 248.5104 248.5572 248.6376 248.7036 248.9722 249.0805 249.1046 249.1403 249.1753 249.1770
[29] 249.1772 249.7029 249.9928 250.5859 250.8952 251.0462 251.0519 251.0777 251.1337 251.1514 251.1516 251.1539 251.2010 251.2511
[43] 251.2608 251.2717 251.3039 251.3545 251.3771 251.3823 251.5185 251.5593 251.5787 251.6261 251.6308 251.6553 251.8842 251.8937
[57] 252.0565 252.5920 252.6363 252.9726 252.9798 253.0069 253.7716 254.1128 254.3043 254.3060 254.3167 254.3264 254.3315 254.3342
[71] 254.3598 254.4058 254.4695 254.4867 254.5061 254.5695 254.8721 254.8733 254.9044 254.9293 254.9797 255.0037 257.0993 257.5889
[85] 257.6234 257.6862 257.7287 257.8787 257.9126 257.9173 257.9189 258.4583 261.4287 261.4577 266.4486 6603.7656 6604.9943 6605.1350
[99] 6605.4939 6606.0806 6606.2698 6606.7404 6607.9137 6608.7082 6610.1237 6611.5814 6613.3317 6614.3980 6619.9700 6625.8903 6632.1664 6635.9715
[113] 9425.4489
$bestmodel
[1] "memore_total ~ 1 + total_r1 + rota_c"
$modelweights
[1] 1.432157e-01 9.121481e-02 6.624434e-02 6.551260e-02 5.445681e-02 4.407850e-02 3.914803e-02 2.729445e-02 2.569348e-02 2.224177e-02
[11] 2.184773e-02 1.971135e-02 1.810311e-02 1.768931e-02 1.705758e-02 1.685392e-02 1.562210e-02 1.558462e-02 1.539916e-02 1.504265e-02
[21] 1.445019e-02 1.398111e-02 1.222401e-02 1.157986e-02 1.144124e-02 1.123870e-02 1.104362e-02 1.103418e-02 1.103307e-02 8.482890e-03
[31] 7.338337e-03 5.455117e-03 4.673563e-03 4.333572e-03 4.321300e-03 4.265812e-03 4.148125e-03 4.111534e-03 4.111236e-03 4.106443e-03
[41] 4.010835e-03 3.911679e-03 3.892617e-03 3.871523e-03 3.809632e-03 3.714565e-03 3.672863e-03 3.663188e-03 3.422159e-03 3.352946e-03
[51] 3.320572e-03 3.242852e-03 3.235223e-03 3.195886e-03 2.850299e-03 2.836685e-03 2.614980e-03 2.000744e-03 1.956896e-03 1.654021e-03
[61] 1.648065e-03 1.625907e-03 1.109261e-03 9.352899e-04 8.498901e-04 8.491697e-04 8.446604e-04 8.405591e-04 8.384237e-04 8.372898e-04
[71] 8.266249e-04 8.078416e-04 7.825091e-04 7.758022e-04 7.683166e-04 7.443515e-04 6.398247e-04 6.394535e-04 6.295939e-04 6.217887e-04
[81] 6.063217e-04 5.991017e-04 2.101044e-04 1.644853e-04 1.616716e-04 1.566732e-04 1.533813e-04 1.422958e-04 1.399069e-04 1.395747e-04
[91] 1.394612e-04 1.064943e-04 2.411714e-05 2.377020e-05 1.960043e-06 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
[101] 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
[111] 0.000000e+00 0.000000e+00 0.000000e+00
$generations
[1] 230
$elapsed
[1] 0.03301938
$includeobjects
[1] TRUE
Table 3 Top Ranked results

Table 4 Multiple regression model
Model Summary
--------------------------------------------------------------
R 0.524 RMSE 4.742
R-Squared 0.275 Coef. Var 41.777
Adj. R-Squared 0.236 MSE 22.483
Pred R-Squared 0.135 MAE 3.612
--------------------------------------------------------------
RMSE: Root Mean Square Error
MSE: Mean Square Error
MAE: Mean Absolute Error
ANOVA
-------------------------------------------------------------------
Sum of
Squares DF Mean Square F Sig.
-------------------------------------------------------------------
Regression 315.220 2 157.610 7.01 0.0026
Residual 831.880 37 22.483
Total 1147.100 39
-------------------------------------------------------------------
Parameter Estimates
----------------------------------------------------------------------------------------
model Beta Std. Error Std. Beta t Sig lower upper
----------------------------------------------------------------------------------------
(Intercept) -9.750 5.704 -1.709 0.096 -21.307 1.806
rota_c 0.073 0.028 0.369 2.630 0.012 0.017 0.129
total_r1 0.388 0.139 0.390 2.786 0.008 0.106 0.671
----------------------------------------------------------------------------------------
OK: residuals appear as normally distributed (p = 0.628).
OK: Error variance appears to be homoscedastic (p = 0.158).
# Check for Multicollinearity
Low Correlation
Term VIF Increased SE Tolerance
rota_c 1.00 1.00 1.00
total_r1 1.00 1.00 1.00
BOOTSTRAP OF LINEAR MODEL (method = rows)
Original Model Fit
------------------
Call:
lm(formula = memore_total ~ rota_c + total_r1, data = ds)
Coefficients:
(Intercept) rota_c total_r1
-9.75019 0.07263 0.38827
Bootstrap SD's:
(Intercept) rota_c total_r1
7.19846070 0.03125937 0.14016524
LS0tDQp0aXRsZTogIk1FTU9SRSAtIEV4Y2VycHRzIGZyb20gbWFpbiBhbmFseXNpcyINCmF1dGhvcjogIkx1aXMgQW51bmNpYcOnw6NvIg0Kb3V0cHV0Og0KICBodG1sX25vdGVib29rOg0KICAgIHRvYzogeWVzDQogICAgdG9jX2Zsb2F0OiB5ZXMNCiAgICBudW1iZXJfc2VjdGlvbnM6IHllcw0KICAgIHRoZW1lOiB1bml0ZWQNCiAgICBoaWdobGlnaHQ6IHRleHRtYXRlDQplZGl0b3Jfb3B0aW9uczogDQogIGNodW5rX291dHB1dF90eXBlOiBpbmxpbmUNCi0tLQ0KDQo8ZGl2IGNsYXNzPSJhbGVydCBhbGVydC1pbmZvIj4NCioqTm90ZSoqOiBUaGlzIGlzIHRoZSBSIG1hcmtkb3duIG9mIHRoZSBtYW51c2NyaXB0ICJOb24tdmVyYmFsIGludGVsbGlnZW5jZSBvdXRwZXJmb3JtcyBzZWxlY3RpdmUgYXR0ZW50aW9uIGluIGEgdmlzdWFsIHNob3J0LXRlcm0gbWVtb3J5IHRlc3QgIi4gQ2xpY2sgcnVuIHRvIHJlcHJvZHVjZSBhbGwgYW5hbHl6ZXMuIERhdGEgaXMgY29weXJpZ2h0ZWQgYW5kIG5vdCBmb3IgcHVibGljIHVzZS4NCg0KSWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBxdWVyaWVzLCBwbGVhc2UgcmVhY2ggbWUgb3V0IGF0IA0KbHVpc2ZjYUBwdWMtcmlvLmJyDQoNCmxhc3QgdXBkYXRlZDogYHIgZm9ybWF0KFN5cy50aW1lKCksICclZCAlQiwgJVknKWANCjwvZGl2Pg0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRSB9DQojR2xvYmFsIG9wdGlvbnMNCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gRkFMU0UsIA0KICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBGQUxTRSwgDQogICAgICAgICAgICAgICAgICAgICAgd2FybmluZyA9IEZBTFNFLCANCiAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlID0gVFJVRSwNCiAgICAgICAgICAgICAgICAgICAgICBjYWNoZSA9IEZBTFNFKQ0KIyBhdXRvIGZvcm1hdCAoa2FibGUpDQpvcHRpb25zKGthYmxlRXh0cmEuYXV0b19mb3JtYXQgPSBGQUxTRSkNCmBgYA0KDQoNCmBgYHtyIHBhY2thZ2VzIH0NCnBhY21hbjo6cF9sb2FkKHRpZHl2ZXJzZSwNCiAgICAgICAgICAgICAgIGphbml0b3IsDQogICAgICAgICAgICAgICBEYXRhRXhwbG9yZXIsDQogICAgICAgICAgICAgICBzdW1tYXJ5dG9vbHMsDQogICAgICAgICAgICAgICBrbml0ciwNCiAgICAgICAgICAgICAgIGthYmxlRXh0cmEsDQogICAgICAgICAgICAgICBnbG11bHRpLCAjcnVuIHNldmVyYWwgbGluZWFyIG1vZGVscw0KICAgICAgICAgICAgICAgcGVyZm9ybWFuY2UsICNjaGVjayBvbHMgYXNzdW1wdGlvbnMNCiAgICAgICAgICAgICAgIGdnaXJhcGhFeHRyYSkgI3Bsb3QgcHJlZGljdGlvbnMNCg0KYGBgDQoNCiMgRGF0YSBwcm9jZXNzaW5nDQoNCiMjIExvYWQgZGF0YSANCg0KPkR1ZSB0byBjb3B5cmlnaHQgcmVzdHJpY3Rpb25zLCB0aGUgb3JpZ2luYWwgZGF0YSBpcyBub3QgYXZhaWxhYmxlLg0KDQojIyBTZWxlY3Qgb25seSBzcGVjaWZpYyB2ZWN0b3JzDQoNCmBgYHtyLCAsIGV2YWwgPSBGQUxTRSB9DQpybShsaXN0PWxzKClbISBscygpICVpbiUgYygiZGFkb3NfZ2VyYWwiLCAiYmFja3VwIildKQ0KYGBgDQoNCiMjIENsZWFuIGRhdGFzZXQNCg0KYGBge3IsIGV2YWwgPSBGQUxTRSB9DQpkYWRvc19nZXJhbCA8LSBjbGVhbl9uYW1lcyhkYWRvc19nZXJhbCkNCmBgYA0KDQoNCmBgYHtyLCBldmFsID0gRkFMU0UgfQ0KdmlldyhkZlN1bW1hcnkoZGFkb3NfZ2VyYWwpKQ0KYGBgDQoNCg0KIyMgU2VsZWN0IHNwZWNpZmljIHZhcmlhYmxlcyBmcm9tIHRoZSBvcmlnaW5hbCBkcw0KDQpgYGB7ciwgZXZhbCA9IEZBTFNFIH0NCmRzIDwtIGRhZG9zX2dlcmFsICU+JSANCiAgc2VsZWN0KGlkLCBpZGFkZSwgdV9mbmFzYywgc2V4bywgIGVzY29sYXJpZGFkZV9ncnVwbywgZmFpeGFfZXRhcmlhLA0KICAgICAgICAgIHJvdGFfYywgcm90YV9hLCByb3RhX2QsDQogICAgICAgICAgc3RhcnRzX3dpdGgoIm1lbW9fcmUiKSwNCiAgICAgICAgICBzdGFydHNfd2l0aCgicjFfIikpDQpgYGANCg0KIyMgRml4IGxldmVscw0KDQpgYGB7ciwgZXZhbCA9IEZBTFNFfQ0KZHMgPC0gZHMgJT4lIG11dGF0ZShlc2NvbGFyaWRhZGVfZ3J1cG8gPSBhcy5mYWN0b3IoZXNjb2xhcmlkYWRlX2dydXBvKSkNCmRzIDwtIGRzICU+JSBtdXRhdGUoc2V4byA9IGFzLmZhY3RvcihzZXhvKSkNCmBgYA0KDQoNCiMjIEFwcGx5IHNjb3JpbmcgKE1FTU9SRSkNCg0KYGBge3IsIGV2YWw9IEZBTFNFIH0NCiNDcmVhdGUgc3RyaW5ncw0KZHMgPC0gZHMgJT4lIA0KICAgIG11dGF0ZShyZXNwXzEgPSBpZl9lbHNlKG1lbW9fcmUwMSA9PSAwLCJWTiIsIkZQIikpICU+JSANCiAgICBtdXRhdGUocmVzcF8yID0gaWZfZWxzZShtZW1vX3JlMDIgPT0gMSwiVlAiLCJGTiIpKSAlPiUgDQogICAgbXV0YXRlKHJlc3BfMyA9IGlmX2Vsc2UobWVtb19yZTAzID09IDEsIlZQIiwiRk4iKSkgJT4lIA0KICAgIG11dGF0ZShyZXNwXzQgPSBpZl9lbHNlKG1lbW9fcmUwNCA9PSAxLCJWUCIsIkZOIikpICU+JSANCiAgICBtdXRhdGUocmVzcF81ID0gaWZfZWxzZShtZW1vX3JlMDUgPT0gMCwiVk4iLCJGUCIpKSAlPiUgDQogICAgbXV0YXRlKHJlc3BfNiA9IGlmX2Vsc2UobWVtb19yZTA2ID09IDEsIlZQIiwiRk4iKSkgJT4lIA0KICAgIG11dGF0ZShyZXNwXzcgPSBpZl9lbHNlKG1lbW9fcmUwNyA9PSAwLCJWTiIsIkZQIikpICU+JSANCiAgICBtdXRhdGUocmVzcF84ID0gaWZfZWxzZShtZW1vX3JlMDggPT0gMSwiVlAiLCJGTiIpKSAlPiUgDQogICAgbXV0YXRlKHJlc3BfOSA9IGlmX2Vsc2UobWVtb19yZTA5ID09IDAsIlZOIiwiRlAiKSkgJT4lIA0KICAgIG11dGF0ZShyZXNwXzEwID0gaWZfZWxzZShtZW1vX3JlMTAgPT0gMSwiVlAiLCJGTiIpKSAlPiUgDQogICAgbXV0YXRlKHJlc3BfMTEgPSBpZl9lbHNlKG1lbW9fcmUxMSA9PSAwLCJWTiIsIkZQIikpICU+JSANCiAgICBtdXRhdGUocmVzcF8xMiA9IGlmX2Vsc2UobWVtb19yZTEyID09IDEsIlZQIiwiRk4iKSkgJT4lIA0KICAgIG11dGF0ZShyZXNwXzEzID0gaWZfZWxzZShtZW1vX3JlMTMgPT0gMCwiVk4iLCJGUCIpKSAlPiUgDQogICAgbXV0YXRlKHJlc3BfMTQgPSBpZl9lbHNlKG1lbW9fcmUxNCA9PSAxLCJWUCIsIkZOIikpICU+JSANCiAgICBtdXRhdGUocmVzcF8xNSA9IGlmX2Vsc2UobWVtb19yZTE1ID09IDEsIlZQIiwiRk4iKSkgJT4lIA0KICAgIG11dGF0ZShyZXNwXzE2ID0gaWZfZWxzZShtZW1vX3JlMTYgPT0gMCwiVk4iLCJGUCIpKSAlPiUgDQogICAgbXV0YXRlKHJlc3BfMTcgPSBpZl9lbHNlKG1lbW9fcmUxNyA9PSAwLCJWTiIsIkZQIikpICU+JSANCiAgICBtdXRhdGUocmVzcF8xOCA9IGlmX2Vsc2UobWVtb19yZTE4ID09IDEsIlZQIiwiRk4iKSkgJT4lIA0KICAgIG11dGF0ZShyZXNwXzE5ID0gaWZfZWxzZShtZW1vX3JlMTkgPT0gMCwiVk4iLCJGUCIpKSAlPiUgDQogICAgbXV0YXRlKHJlc3BfMjAgPSBpZl9lbHNlKG1lbW9fcmUyMCA9PSAxLCJWUCIsIkZOIikpICU+JSANCiAgICBtdXRhdGUocmVzcF8yMSA9IGlmX2Vsc2UobWVtb19yZTIxID09IDAsIlZOIiwiRlAiKSkgJT4lIA0KICAgIG11dGF0ZShyZXNwXzIyID0gaWZfZWxzZShtZW1vX3JlMjIgPT0gMSwiVlAiLCJGTiIpKSAlPiUgDQogICAgbXV0YXRlKHJlc3BfMjMgPSBpZl9lbHNlKG1lbW9fcmUyMyA9PSAwLCJWTiIsIkZQIikpICU+JSANCiAgICBtdXRhdGUocmVzcF8yNCA9IGlmX2Vsc2UobWVtb19yZTI0ID09IDAsIlZOIiwiRlAiKSkgJT4lIA0KICAgICNwYXJhIGFuYWxpc2UgZmF0b3JpYWwNCiAgICBtdXRhdGUoY29kZV9yZXNwXzEgPSBpZl9lbHNlKG1lbW9fcmUwMSA9PSAwLDEsMCkpICU+JSANCiAgICBtdXRhdGUoY29kZV9yZXNwXzIgPSBpZl9lbHNlKG1lbW9fcmUwMiA9PSAxLDEsMCkpICU+JSANCiAgICBtdXRhdGUoY29kZV9yZXNwXzMgPSBpZl9lbHNlKG1lbW9fcmUwMyA9PSAxLDEsMCkpICU+JSANCiAgICBtdXRhdGUoY29kZV9yZXNwXzQgPSBpZl9lbHNlKG1lbW9fcmUwNCA9PSAxLDEsMCkpICU+JSANCiAgICBtdXRhdGUoY29kZV9yZXNwXzUgPSBpZl9lbHNlKG1lbW9fcmUwNSA9PSAwLDEsMCkpICU+JSANCiAgICBtdXRhdGUoY29kZV9yZXNwXzYgPSBpZl9lbHNlKG1lbW9fcmUwNiA9PSAxLDEsMCkpICU+JSANCiAgICBtdXRhdGUoY29kZV9yZXNwXzcgPSBpZl9lbHNlKG1lbW9fcmUwNyA9PSAwLDEsMCkpICU+JSANCiAgICBtdXRhdGUoY29kZV9yZXNwXzggPSBpZl9lbHNlKG1lbW9fcmUwOCA9PSAxLDEsMCkpICU+JSANCiAgICBtdXRhdGUoY29kZV9yZXNwXzkgPSBpZl9lbHNlKG1lbW9fcmUwOSA9PSAwLDEsMCkpICU+JSANCiAgICBtdXRhdGUoY29kZV9yZXNwXzEwID0gaWZfZWxzZShtZW1vX3JlMTAgPT0gMSwxLDApKSAlPiUgDQogICAgbXV0YXRlKGNvZGVfcmVzcF8xMSA9IGlmX2Vsc2UobWVtb19yZTExID09IDAsMSwwKSkgJT4lIA0KICAgIG11dGF0ZShjb2RlX3Jlc3BfMTIgPSBpZl9lbHNlKG1lbW9fcmUxMiA9PSAxLDEsMCkpICU+JSANCiAgICBtdXRhdGUoY29kZV9yZXNwXzEzID0gaWZfZWxzZShtZW1vX3JlMTMgPT0gMCwxLDApKSAlPiUgDQogICAgbXV0YXRlKGNvZGVfcmVzcF8xNCA9IGlmX2Vsc2UobWVtb19yZTE0ID09IDEsMSwwKSkgJT4lIA0KICAgIG11dGF0ZShjb2RlX3Jlc3BfMTUgPSBpZl9lbHNlKG1lbW9fcmUxNSA9PSAxLDEsMCkpICU+JSANCiAgICBtdXRhdGUoY29kZV9yZXNwXzE2ID0gaWZfZWxzZShtZW1vX3JlMTYgPT0gMCwxLDApKSAlPiUgDQogICAgbXV0YXRlKGNvZGVfcmVzcF8xNyA9IGlmX2Vsc2UobWVtb19yZTE3ID09IDAsMSwwKSkgJT4lIA0KICAgIG11dGF0ZShjb2RlX3Jlc3BfMTggPSBpZl9lbHNlKG1lbW9fcmUxOCA9PSAxLDEsMCkpICU+JSANCiAgICBtdXRhdGUoY29kZV9yZXNwXzE5ID0gaWZfZWxzZShtZW1vX3JlMTkgPT0gMCwxLDApKSAlPiUgDQogICAgbXV0YXRlKGNvZGVfcmVzcF8yMCA9IGlmX2Vsc2UobWVtb19yZTIwID09IDEsMSwwKSkgJT4lIA0KICAgIG11dGF0ZShjb2RlX3Jlc3BfMjEgPSBpZl9lbHNlKG1lbW9fcmUyMSA9PSAwLDEsMCkpICU+JSANCiAgICBtdXRhdGUoY29kZV9yZXNwXzIyID0gaWZfZWxzZShtZW1vX3JlMjIgPT0gMSwxLDApKSAlPiUgDQogICAgbXV0YXRlKGNvZGVfcmVzcF8yMyA9IGlmX2Vsc2UobWVtb19yZTIzID09IDAsMSwwKSkgJT4lIA0KICAgIG11dGF0ZShjb2RlX3Jlc3BfMjQgPSBpZl9lbHNlKG1lbW9fcmUyNCA9PSAwLDEsMCkpIA0KDQojQ29tcHV0ZSBzdHJpbmdzDQpkcyA8LSBkcyAlPiUNCiAgbXV0YXRlKHZwX3RvdGFsID0gcm93U3VtcyhzZWxlY3QoLiwgcmVzcF8xOnJlc3BfMjQpID09ICJWUCIsIG5hLnJtID0gVFJVRSkpICU+JSANCiAgbXV0YXRlKGZuX3RvdGFsID0gcm93U3VtcyhzZWxlY3QoLiwgcmVzcF8xOnJlc3BfMjQpID09ICJGTiIsIG5hLnJtID0gVFJVRSkpICU+JSANCiAgbXV0YXRlKGZwX3RvdGFsID0gcm93U3VtcyhzZWxlY3QoLiwgcmVzcF8xOnJlc3BfMjQpID09ICJGUCIsIG5hLnJtID0gVFJVRSkpICU+JSANCiAgbXV0YXRlKHZuX3RvdGFsID0gcm93U3VtcyhzZWxlY3QoLiwgcmVzcF8xOnJlc3BfMjQpID09ICJWTiIsIG5hLnJtID0gVFJVRSkpICU+JSANCiAgbXV0YXRlKHRvdF9hY2VydG8gPSByb3dTdW1zKC4gPT0gIlZQIiwgbmEucm0gPSBUUlVFKSArIHJvd1N1bXMoLiA9PSAgIlZOIiwgbmEucm0gPSBUUlVFKSkgJT4lIA0KICBtdXRhdGUodG90X2Vycm8gPSByb3dTdW1zKC4gPT0gIkZQIiwgbmEucm0gPSBUUlVFKSArIHJvd1N1bXMoLiA9PSAgIkZOIiwgbmEucm0gPSBUUlVFKSkgJT4lDQogIG11dGF0ZShtZW1vcmVfdG90YWwgPSB0b3RfYWNlcnRvIC0gdG90X2Vycm8pIA0KYGBgDQoNCg0KIyMgQXBwbHkgc2NvcmluZyAoUjEpDQoNCmBgYHtyLCBldmFsID0gRkFMU0UgfQ0KZHMgPC0gZHMgJT4lIA0KICBtdXRhdGUocjFfMSA9IGlmX2Vsc2UocjFfMSA9PSAiYyIsMSwwKSkgJT4lIA0KICBtdXRhdGUocjFfMiA9IGlmX2Vsc2UocjFfMiA9PSAiZiIsMSwwKSkgJT4lIA0KICBtdXRhdGUocjFfMyA9IGlmX2Vsc2UocjFfMyA9PSAiZSIsMSwwKSkgJT4lIA0KICBtdXRhdGUocjFfNCA9IGlmX2Vsc2UocjFfNCA9PSAiZCIsMSwwKSkgJT4lIA0KICBtdXRhdGUocjFfNSA9IGlmX2Vsc2UocjFfNSA9PSAiZiIsMSwwKSkgJT4lIA0KICBtdXRhdGUocjFfNiA9IGlmX2Vsc2UocjFfNiA9PSAiYiIsMSwwKSkgJT4lIA0KICBtdXRhdGUocjFfNyA9IGlmX2Vsc2UocjFfNyA9PSAiYSIsMSwwKSkgJT4lIA0KICBtdXRhdGUocjFfOCA9IGlmX2Vsc2UocjFfOCA9PSAiZCIsMSwwKSkgJT4lIA0KICBtdXRhdGUocjFfOSA9IGlmX2Vsc2UocjFfOSA9PSAiZSIsMSwwKSkgJT4lIA0KICBtdXRhdGUocjFfMTAgPSBpZl9lbHNlKHIxXzEwID09ICJlIiwxLDApKSAlPiUgDQogIG11dGF0ZShyMV8xMSA9IGlmX2Vsc2UocjFfMTEgPT0gImMiLDEsMCkpICU+JSANCiAgbXV0YXRlKHIxXzEyID0gaWZfZWxzZShyMV8xMiA9PSAiZiIsMSwwKSkgJT4lIA0KICBtdXRhdGUocjFfMTMgPSBpZl9lbHNlKHIxXzEzID09ICJkIiwxLDApKSAlPiUgDQogIG11dGF0ZShyMV8xNCA9IGlmX2Vsc2UocjFfMTQgPT0gImIiLDEsMCkpICU+JSANCiAgbXV0YXRlKHIxXzE1ID0gaWZfZWxzZShyMV8xNSA9PSAiZSIsMSwwKSkgJT4lIA0KICBtdXRhdGUocjFfMTYgPSBpZl9lbHNlKHIxXzE2ID09ICJmIiwxLDApKSAlPiUgDQogIG11dGF0ZShyMV8xNyA9IGlmX2Vsc2UocjFfMTcgPT0gImEiLDEsMCkpICU+JSANCiAgbXV0YXRlKHIxXzE4ID0gaWZfZWxzZShyMV8xOCA9PSAiYyIsMSwwKSkgJT4lIA0KICBtdXRhdGUocjFfMTkgPSBpZl9lbHNlKHIxXzE5ID09ICJkIiwxLDApKSAlPiUgDQogIG11dGF0ZShyMV8yMCA9IGlmX2Vsc2UocjFfMjAgPT0gImIiLDEsMCkpICU+JSANCiAgbXV0YXRlKHIxXzIxID0gaWZfZWxzZShyMV8yMSA9PSAiZCIsMSwwKSkgJT4lIA0KICBtdXRhdGUocjFfMjIgPSBpZl9lbHNlKHIxXzIyID09ICJmIiwxLDApKSAlPiUgDQogIG11dGF0ZShyMV8yMyA9IGlmX2Vsc2UocjFfMjMgPT0gImciLDEsMCkpICU+JSANCiAgbXV0YXRlKHIxXzI0ID0gaWZfZWxzZShyMV8yNCA9PSAiYiIsMSwwKSkgJT4lIA0KICBtdXRhdGUocjFfMjUgPSBpZl9lbHNlKHIxXzI1ID09ICJoIiwxLDApKSAlPiUgDQogIG11dGF0ZShyMV8yNiA9IGlmX2Vsc2UocjFfMjYgPT0gImQiLDEsMCkpICU+JSANCiAgbXV0YXRlKHIxXzI3ID0gaWZfZWxzZShyMV8yNyA9PSAiYSIsMSwwKSkgJT4lIA0KICBtdXRhdGUocjFfMjggPSBpZl9lbHNlKHIxXzI4ID09ICJoIiwxLDApKSAlPiUgDQogIG11dGF0ZShyMV8yOSA9IGlmX2Vsc2UocjFfMjkgPT0gImciLDEsMCkpICU+JSANCiAgbXV0YXRlKHIxXzMwID0gaWZfZWxzZShyMV8zMCA9PSAiYyIsMSwwKSkgJT4lIA0KICBtdXRhdGUocjFfMzEgPSBpZl9lbHNlKHIxXzMxID09ICJiIiwxLDApKSAlPiUgDQogIG11dGF0ZShyMV8zMiA9IGlmX2Vsc2UocjFfMzIgPT0gImciLDEsMCkpICU+JSANCiAgbXV0YXRlKHIxXzMzID0gaWZfZWxzZShyMV8zMyA9PSAiaCIsMSwwKSkgJT4lIA0KICBtdXRhdGUocjFfMzQgPSBpZl9lbHNlKHIxXzM0ID09ICJhIiwxLDApKSAlPiUgDQogIG11dGF0ZShyMV8zNSA9IGlmX2Vsc2UocjFfMzUgPT0gImMiLDEsMCkpICU+JSANCiAgbXV0YXRlKHIxXzM2ID0gaWZfZWxzZShyMV8zNiA9PSAiZyIsMSwwKSkgJT4lIA0KICBtdXRhdGUocjFfMzcgPSBpZl9lbHNlKHIxXzM3ID09ICJhIiwxLDApKSAlPiUgDQogIG11dGF0ZShyMV8zOCA9IGlmX2Vsc2UocjFfMzggPT0gImMiLDEsMCkpICU+JSANCiAgbXV0YXRlKHIxXzM5ID0gaWZfZWxzZShyMV8zOSA9PSAiaCIsMSwwKSkgJT4lIA0KICBtdXRhdGUocjFfNDAgPSBpZl9lbHNlKHIxXzQwID09ICJnIiwxLDApKQ0KDQpgYGANCg0KIyMgU2NvcmUgUjENCg0KYGBge3IsIGV2YWwgPSBGQUxTRSB9DQpkcyA8LSBkcyAlPiUgI2dldCBkcw0KICBzZWxlY3QoaWQsIHIxXzE6cjFfNDApICU+JSAjc2VsZWN0IGlkIGFuZCBSMSBpdGVtcyANCiAgZmlsdGVyX2F0KHZhcnMoLWlkKSwgYW55X3ZhcnMoIWlzLm5hKC4pKSkgJT4lICAjZmlsdGVyIGlmIGFsbCBSMSBpcyBlbXB0eQ0KICBtdXRhdGUodG90YWxfcjEgPSByb3dTdW1zKHNlbGVjdCguLCByMV8xOnIxXzQwKSwgbmEucm09VCkpICU+JSAgI2NyZWF0ZSBhIHN1bW1hdGl2ZSBzY29yZQ0KICBzZWxlY3QoaWQsIHRvdGFsX3IxKSAlPiUgICNzZWxlY3QgdG8gbWVyZ2UNCiAgbGVmdF9qb2luKGRzLC4sIGJ5ID0gImlkIikgI2pvaW4NCmBgYA0KDQoNCiMgRGF0YSBBbmFseXNpcw0KDQojIyBMb2FkIGRhdGENCg0KYGBge3IsIGV2YWwgPSBUUlVFIH0NCmxvYWQoIkM6L1VzZXJzL2x1aXNmL0Ryb3Bib3gvUHVjLVJpby9Db25zdWx0b3JpYSAtIEl2YW4gUmFiZWxvLzIwMjEgLSBBcnRpZ28gLS0gUFNSQy9CYXNlIC0gTUVNT1JFIDIwMjAgQXV0b21hdGVkIG1vZGVsIHNlbGVjdGlvbi5SRGF0YSIpDQpgYGANCg0KDQojIyBQc3ljaG9tZXRyaWMgcHJvcGVydGllcw0KDQojIyMgTUVNT1JFIA0KDQpgYGB7cn0NCnVzZXJmcmllbmRseXNjaWVuY2U6OnNjYWxlUmVsaWFiaWxpdHkoZGF0PWRzICU+JSBzZWxlY3Qoc3RhcnRzX3dpdGgoImNvZGVfcmVzcCIpKSwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zID0gJ2FsbCcsIGRpZ2l0cyA9IDIsIGNpID0gVFJVRSwNCiAgICAgICAgICAgICAgICAgaW50ZXJ2YWwudHlwZT0ibm9ybWFsLXRoZW9yeSIsIGNvbmYubGV2ZWw9Ljk1LA0KICAgICAgICAgICAgICAgICBzaWxlbnQ9RkFMU0UsIHNhbXBsZXM9MTAwMCwgYm9vdHN0cmFwU2VlZCA9IE5VTEwsDQogICAgICAgICAgICAgICAgIG9tZWdhLnBzeWNoID0gVFJVRSwgcG9seSA9IFRSVUUpDQpgYGANCiMjIyBSb3Rhcw0KDQpgYGB7cn0NCmRzICU+JSANCiAgc2VsZWN0KHJvdGFfYywgcm90YV9hLCByb3RhX2QpICU+JSBhcy5tYXRyaXgoKSAlPiUgSG1pc2M6OnJjb3JyKCkgDQpgYGANCg0KDQojIyBUYWJsZSAxIERlbW9ncmFwaGljcw0KDQpgYGB7cn0NCmRzICU+JSANCiAgc2VsZWN0KGlkYWRlLCBzZXhvLCBlc2NvbGFyaWRhZGVfZ3J1cG8sIHVfZm5hc2MpICU+JQ0KICAjYXJzZW5hbDo6dGFibGVieSh+LiwgZGF0YSA9IC4pICU+JSBzdW1tYXJ5KCkNCiAgY29tcGFyZUdyb3Vwczo6Y29tcGFyZUdyb3Vwcyggfi4sIGluY2x1ZGUubWlzcyA9IFQpICU+JSANCiAgY29tcGFyZUdyb3Vwczo6Y3JlYXRlVGFibGUoKSANCmBgYA0KDQoNCg0KYGBge3J9DQpjaGlzcS50ZXN0KHRhYmxlKGRzJHNleG8pKQ0KYGBgDQoNCmBgYHtyfQ0KY2hpc3EudGVzdCh0YWJsZShkcyRlc2NvbGFyaWRhZGVfZ3J1cG8pKQ0KYGBgDQoNCiMjIFRhYmxlIDIgTWVhbnMgYW5kIFNEIA0KDQpgYGB7ciByZXN1bHRzID0gJ2FzaXMnIH0NCmRzICU+JSANCiAgc2VsZWN0KHN0YXJ0c193aXRoKCJyb3RhIiksIHRvdGFsX3IxLCBtZW1vcmVfdG90YWwpICU+JSANCiAgZGVzY3IoIHBsYWluLmFzY2lpID0gRkFMU0UsIHN0eWxlID0gJ3JtYXJrZG93bicpDQpgYGANCg0KDQoNCiMgQXV0b21hdGljIHNlbGVjdGlvbiBmb3IgY29nbml0aXZlIGV4cGxvcmF0aW9ucw0KDQpgYGB7ciBjcmVhdGluZyBhIGF1dG9tYXRpYyBtb2RlbCB9DQpmaXQgPC0gZ2xtdWx0aShtZW1vcmVfdG90YWwgfiB0b3RhbF9yMSArIHJvdGFfYyArIHJvdGFfYSArIHJvdGFfZCwgDQogICAgICAgICAgZGF0YSA9IGRzLCANCiAgICAgICAgICBjcml0ID0gImFpY2MiLA0KICAgICAgICAgIGxldmVsID0gMiwgI2FsbG93IGludGVyYWN0aW9uDQogICAgICAgICAgbWV0aG9kID0gImciLA0KICAgICAgICAgIGNvbmZzZXRzaXplID0gMTEzLA0KICAgICAgICAgIG1hcmdpbmFsaXR5ID0gVCkgIzwtLSBEb24ndCBsZWF2ZSBvdXQgdGhlIG1haW4gZWZmZWN0DQpgYGANCg0KYGBge3J9DQpzdW1tYXJ5KGZpdCkNCmBgYA0KIyMgVGFibGUgMyBUb3AgUmFua2VkIHJlc3VsdHMNCg0KYGBge3IgY2hlY2sgbW9kbHMgfQ0KI3N1bW1hcnkoZml0KSRiZXN0bW9kZWwNCiNDaGVjayBtb2RlbHMNCnRvcCA8LSB3ZWlnaHRhYmxlKGZpdCkNCnRvcCA8LSB0b3BbdG9wJGFpY2MgPD0gbWluKHRvcCRhaWNjKSArIDIsXQ0KdG9wDQojaHR0cDovL3d3dy5tZXRhZm9yLXByb2plY3Qub3JnL2Rva3UucGhwL3RpcHM6bW9kZWxfc2VsZWN0aW9uX3dpdGhfZ2xtdWx0aV9hbmRfbXVtaW4NCmBgYA0KDQoNCmBgYHtyIHBsb3QgdGhlIHJlc3VsdHMgfQ0KI1IgYmFzZSBwbG90cw0KcGxvdChmaXQsIHR5cGUgPSAicyIpICM8LS0gcmVsYXRpdmUgaW1wb3J0YW5jZQ0KcGxvdChmaXQsIHR5cGUgPSAidyIpICM8LSBtb2RlbCB3ZWlnaHRzDQpgYGANCg0KYGBge3J9DQojIFBsb3QgSW1wb3J0YW5jaWEgbWVkaWEgZG9zIHRlcm1vcw0KY29lZihmaXQpICU+JSANCiAgZGF0YS5mcmFtZSgpICU+JSANCiAgcm93bmFtZXNfdG9fY29sdW1uKCJQcmVkaWN0b3IiKSAlPiUgDQogIGZpbHRlcihQcmVkaWN0b3IgIT0gIihJbnRlcmNlcHQpIikgJT4lIA0KICBqYW5pdG9yOjpjbGVhbl9uYW1lcygpICU+JSANCiAgbXV0YXRlX2F0KHZhcnMocHJlZGljdG9yKSwgDQogICAgICAgICAgICBsaXN0KH5zdHJfcmVwbGFjZSguLCAicm90YV9hIiwgIkFsdGVybmF0aW5nICBhdHRlbnRpb24iKSAlPiUgDQogICAgICAgICAgICAgICAgICAgc3RyX3JlcGxhY2UoLiwgInJvdGFfZCIsICJEaXZpZGVkIGF0dGVudGlvbiIpICU+JSANCiAgICAgICAgICAgICAgICAgICBzdHJfcmVwbGFjZSguLCAicm90YV9jIiwgIlNlbGVjdGl2ZSBhdHRlbnRpb24iKSAlPiUgDQogICAgICAgICAgICAgICAgICAgc3RyX3JlcGxhY2UoLiwgInRvdGFsX3IxIiwgIkludGVsbGlnZW5jZSIpKSkgJT4lIA0KICBnZ3Bsb3QoLiwgYWVzKHg9IGZjdF9pbm9yZGVyKHByZWRpY3RvciwgaW1wb3J0YW5jZSksIHkgPSBpbXBvcnRhbmNlKSkgKw0KICBnZW9tX2JhcihzdGF0PSJpZGVudGl0eSIsIGNvbG9yPSJibGFjayIsIA0KICAgICAgICAgICBwb3NpdGlvbj1wb3NpdGlvbl9kb2RnZSgpKSArIA0KICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLjgsICBsaW5ldHlwZT0iZG90dGVkIikgKw0KICBjb29yZF9mbGlwKCkgKw0KICBsYWJzKHggPSAiIiwgeSA9ICJJbXBvcnRhbmNlIikgKw0KICAgc2NhbGVfeF9kaXNjcmV0ZShsYWJlbHMgPSBmdW5jdGlvbih4KSBzdHJfd3JhcCh4LCB3aWR0aCA9IDEwKSkgKw0KICB0aGVtZV9idygpDQpgYGANCg0KIyMgVGFibGUgNCBNdWx0aXBsZSByZWdyZXNzaW9uIG1vZGVsDQoNCmBgYHtyIGNyZWF0ZSB0aGUgcmlnaHQgbW9kZWwgfQ0KbW9kX2ZpbmFsIDwtIGxtKG1lbW9yZV90b3RhbCB+IHJvdGFfYyArIHRvdGFsX3IxLCBkcykNCmBgYA0KDQoNCg0KYGBge3J9DQpvbHNycjo6b2xzX3JlZ3Jlc3MobW9kX2ZpbmFsKQ0KYGBgDQoNCg0KYGBge3J9DQpjaGVja19ub3JtYWxpdHkobW9kX2ZpbmFsKQ0KYGBgDQoNCmBgYHtyfQ0KY2hlY2tfaGV0ZXJvc2NlZGFzdGljaXR5KG1vZF9maW5hbCkNCmBgYA0KDQpgYGB7cn0NCiNvbHNycjo6b2xzX3Rlc3RfYnJldXNjaF9wYWdhbihtb2RfZmluYWwpDQpjaGVja19jb2xsaW5lYXJpdHkobW9kX2ZpbmFsKQ0KYGBgDQoNCmBgYHtyfQ0Kb2xzcnI6Om9sc192aWZfdG9sKG1vZF9maW5hbCkNCmBgYA0KDQoNCmBgYHtyIGJvb3RzdHJhcCB0aGUgcmVncmVzc2lvbiBtb2RlbCB9DQptb2RfZmluYWxfYm9vdCA8LSBzaW1wbGVib290OjpsbS5ib290KG1vZF9maW5hbCwgUiA9IDEwMDApDQpzdW1tYXJ5KG1vZF9maW5hbF9ib290KQ0KYGBgDQoNCg0KDQpgYGB7ciBwbG90IGl0IHRvZ2V0aGVyIH0NCmdyaWRFeHRyYTo6Z3JpZC5hcnJhbmdlKA0KZ2dwbG90KGRzLCBhZXMoeD1yb3RhX2MsIHkgPSBtZW1vcmVfdG90YWwpKSArDQogIGdlb21faml0dGVyKCkgKw0KICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iKSArDQogIGxhYnMoeCA9ICJTZWxlY3RpdmUgYXR0ZW50aW9uIiwgeSA9ICJWaXN1YWwgc2hvcnQtdGVybSBtZW1vcnkiKSArIHRoZW1lX2J3KCksDQoNCmdncGxvdChkcywgYWVzKHg9dG90YWxfcjEsIHkgPSBtZW1vcmVfdG90YWwpKSArDQogIGdlb21faml0dGVyKCkgKw0KICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iKSArDQogIGxhYnMoeCA9ICJHZW5lcmFsIG5vbi12ZXJiYWwgaW50ZWxsaWdlbmNlICIsIHkgPSAiVmlzdWFsIHNob3J0LXRlcm0gbWVtb3J5IikgKyB0aGVtZV9idygpKQ0KDQpgYGANCg0KDQpgYGB7ciBwbG90IHByZWRpY3Rpb25zIH0NCmdnUHJlZGljdChtb2RfZmluYWwsIHNlPVRSVUUsaW50ZXJhY3RpdmU9VFJVRSkNCiNodHRwczovL2NyYW4uci1wcm9qZWN0Lm9yZy93ZWIvcGFja2FnZXMvZ2dpcmFwaEV4dHJhL3ZpZ25ldHRlcy9nZ1ByZWRpY3QuaHRtbA0KI2h0dHBzOi8vcnB1YnMuY29tL2NhcmRpb21vb24vNDc0NzA3DQpgYGANCg0KDQojIFBBU1Q6IFRyeWluZyB0byBoYXZlIGFuIGF1dG9tYXRpYyBzZWxlY3Rpb24gKERpc2NhcnRlZCBkdWUgdG8gdGhlb3JldGljYWwgaW5jb25zaXN0ZW5jeSkNCg0KDQojIyBnbG11bHRpIGFjaGlldmUgYSBzb2x1dGlvbi4NCg0KYGBge3IsIGV2YWwgPSBGQUxTRSB9DQpmaXQyIDwtIGdsbXVsdGk6OmdsbXVsdGkobWVtb3JlX3RvdGFsIH4gdG90YWxfcjEgKyByb3RhX2MgKyByb3RhX2EgKyByb3RhX2QsIA0KICAgICAgICAgICAgICAgICBkYXRhID0gZHMsIGNyaXQgPSAiYmljIikNCnN1bW1hcnkoZml0MikNCg0KYGBgDQoNCg0KRGVzcGl0ZSB0aGlzIGFjaGlldmVtZW50LCB0aGlzIHNvbHV0aW9uIGlzIG5vdCBkdWFibGUuIElzIHRoZW9yZXRpY2FsbHkgbWVhbmlubGVzcy4gDQoNCmBgYHtyLCBldmFsID0gRkFMU0UgfQ0KZml0MiA8LSBsbShtZW1vcmVfdG90YWwgfiAxICsgcm90YV9jOnRvdGFsX3IxLCBkcykNCmludGVyYWN0aW9uczo6aW50ZXJhY3RfcGxvdChtb2RlbCA9IGZpdDIsIHByZWQgPSByb3RhX2MsIG1vZHggPSB0b3RhbF9yMSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnZhbCA9IFRSVUUsIHJvYnVzdCA9IFQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50LnR5cGUgPSAiY29uZmlkZW5jZSIsIGludC53aWR0aCA9IC44KQ0KDQpzdW1tYXJ5KGZpdDIpDQoNCmBgYA0KDQoNCkknbGwgdHJ5IHRvIHNpbXVsYXRlIHdpdGggdGhlIGRhdGEgY29tcHV0aW5nIHRoZSBTRCBmb3IgUjEuDQoNCmBgYHtyLCBldmFsPUZBTFNFIH0NCmRzICU+JSANCiAgbXV0YXRlKGNhdF9yMSA9IGNhc2Vfd2hlbigNCiAgICB0b3RhbF9yMSA+PSByb3VuZChtZWFuKHRvdGFsX3IxLCBuYS5ybT1UKSwwKStyb3VuZChzZCh0b3RhbF9yMSwgbmEucm09VCksMCkgfiAiQWNpbWEiLA0KICAgIHRvdGFsX3IxIDw9IHJvdW5kKG1lYW4odG90YWxfcjEsIG5hLnJtPVQpLDApLXJvdW5kKHNkKHRvdGFsX3IxLCBuYS5ybT1UKSwwKSB+ICJBYmFpeG8iLA0KICAgIHRvdGFsX3IxID4gcm91bmQobWVhbih0b3RhbF9yMSwgbmEucm09VCksMCktcm91bmQoc2QodG90YWxfcjEsIG5hLnJtPVQpLDApIA0KICAgICYgdG90YWxfcjEgPCByb3VuZChtZWFuKHRvdGFsX3IxLCBuYS5ybT1UKSwwKStyb3VuZChzZCh0b3RhbF9yMSwgbmEucm09VCksMCl+ICJNw6lkaWEiKSkgLT4gZHMNCg0KDQpgYGANCg0KVGhhbiBjaGVja2luZyBpdHMgZWZmZWN0cw0KDQpgYGB7ciwgZXZhbCA9IEZBTFNFIH0NCmxtKG1lbW9yZV90b3RhbCB+IHJvdGFfYyAqIGZhY3RvcihjYXRfcjEpLCBkcykgJT4lIA0KICBhcGFUYWJsZXM6OmFwYS5hb3YudGFibGUoLiwgdHlwZSA9IDMpDQoNCmBgYA0KQW5kIHBsb3R0aW5nDQoNCmBgYHtyLCBldmFsID0gRkFMU0UgfQ0KZHMgJT4lIA0KICBmaWx0ZXIoIWlzLm5hKGNhdF9yMSkpICU+JSANCiAgZ2dwbG90KC4sIGFlcyh4PXJvdGFfYywgeSA9IG1lbW9yZV90b3RhbCwgY29sb3IgPSBjYXRfcjEpKSArDQogIGdlb21fc21vb3RoKG1ldGhvZD0ibG0iKQ0KYGBgDQoNCg0KYGBge3IsIGV2YWwgPSBGQUxTRSB9DQpkcyAlPiUgDQogIGZpbHRlcighaXMubmEoY2F0X3IxKSkgJT4lIA0KICBzZWxlY3QoY2F0X3IxLCB0b3RhbF9yMSkgJT4lIA0KICBwcmludChuPW5yb3coLikpDQpgYGANCg0KYGBge3IsIGV2YWwgPSBGQUxTRSB9DQpkcyAlPiUgDQogIGdyb3VwX2J5KGNhdF9yMSkgJT4lIA0KICBzdW1tYXJpc2UobWVhbih0b3RhbF9yMSkpDQpgYGANCg0KDQpgYGB7ciwgZXZhbD1GQUxTRSB9DQp3cml0ZS50YWJsZShkcywgZmlsZT0ibWVtb3JlX3NlbS5jc3YiLCByb3cubmFtZXM9RkFMU0UsIGNvbC5uYW1lcz1UUlVFLCBzZXAgPSAiLCIsIHFtZXRob2QgPSAiZG91YmxlIikgDQpgYGANCg0KDQoNCiMgQ29weXJpZ2h0LCAyMDIxDQojIEx1aXMgQW51bmNpYcOnw6NvLCBQaEQgLSBsdWlzZmNhQHB1Yy1yaW8uYnIgKFBVQy1SaW8pDQo=