1 Introduction

2 Tables

This is the space where I will describe the data set, my team and the 2025 season.

Table Discussion- Table 1: My team did not make the playoffs, some stat to prove it

summary %>% 
  kbl() %>%
  kable_styling()
team_name mean_score sd_score mean_fgp sd_fgp mean_rebounds sd_rebounds mean_3ptpct sd_3ptpct mean_steals sd_steals
Aces 85.52174 9.558566 45.26739 5.815881 33.78261 5.879959 35.26957 7.075776 6.804348 2.671825
Dream 76.92857 10.588518 41.27857 6.777565 35.95238 4.405940 30.82857 9.315926 7.142857 2.816081
Fever 84.50000 10.169898 45.56429 5.378404 35.09524 5.494163 34.99524 8.989885 5.880952 2.286785
Liberty 84.98077 9.916298 44.53462 5.609966 36.90385 5.770988 35.37692 10.057611 7.750000 2.186187
Lynx 82.35849 11.386724 45.20755 6.336459 33.15094 5.058870 37.80377 9.428760 8.358491 3.168926
Mercury 81.92857 12.597702 44.28333 7.338070 32.26190 5.392224 32.97143 10.344865 6.547619 2.120773
Mystics 79.30000 8.691876 43.35750 4.824504 31.85000 4.660527 36.64250 8.688746 7.275000 2.241651
Sky 77.40000 9.623156 42.44250 5.219878 36.60000 5.573748 31.73500 11.624191 7.000000 3.297241
Sparks 78.40000 10.567973 42.62750 6.151505 32.67500 5.520997 32.08750 10.995435 7.300000 2.775349
Storm 82.66667 9.654183 43.42619 5.385484 34.66667 6.018940 28.35238 9.027309 9.238095 3.267053
Sun 80.36170 9.893840 44.30000 5.282169 33.42553 4.619169 32.84043 11.666911 7.893617 3.285237
Wings 84.20000 11.469469 44.46750 5.238437 34.75000 4.650613 32.06000 11.754646 7.125000 2.945553
#making a table to show average score in a win versus average score in a loss
my_team_means %>%
  kbl(caption = "2025 Los Angeles Sparks") %>%
  kable_classic(full_width = F, html_font = "Cambria")
2025 Los Angeles Sparks
result mean
Loss 76.6875
Win 85.2500

3 Histograms

Histogram discussion

#creating a histogram 
p <- my_team %>%
  ggplot( aes(x=team_score, fill=result)) + 
    geom_histogram(color = "purple", alpha = 0.6, position = 'identity') + 
    scale_fill_manual(values=c("purple", "yellow"))
p
## `stat_bin()` using `bins = 30`. Pick better value `binwidth`.

#making side by side box plots to compare points scored in a win versus a loss
 boxplot(team_score ~ result, data = my_team, notch = TRUE, 
        col = c("purple", "yellow"),
        main = "Points scored by game result",
        xlab = "Result", ylab = "Points")
## Warning in (function (z, notch = FALSE, width = NULL, varwidth = FALSE, : some
## notches went outside hinges ('box'): maybe set notch=FALSE

Histogram Discussion Winning v Losing, Side by Side, etc.

4 Models

\(~\)

After all models were run and model reduction was completed, my final model is team_score = -50.4334385 + 4.044072 * field_goal_pct + -1.6678826 * total_rebounds + 2.5656832 * three_point_field_goal_pct + -0.0989813 * field_goal_pct:total_rebounds + 0.0609006 * three_point_field_goal_pct:total_rebounds

This model significantly predicts team score, F(rmodel4sum$fstatistic[1], rmodel4sum$fstatistic[2]) = rmodel4sum$fstatistic[1], p, adjusted R^2= radj.r.squared

See table below for results.

Dependent variable:
team_score
field_goal_pct 4.044***
(1.221)
three_point_field_goal_pct -1.668*
(0.925)
total_rebounds 2.566**
(1.097)
field_goal_pct:total_rebounds -0.099**
(0.037)
three_point_field_goal_pct:total_rebounds 0.061**
(0.028)
Constant -50.433
(38.164)
Observations 40
R2 0.503
Adjusted R2 0.429
Residual Std. Error 7.983 (df = 34)
F Statistic 6.869*** (df = 5; 34)
Note: p<0.1; p<0.05; p<0.01
#creating histogram of residuals
ols_plot_resid_hist(model4)

#creating versus fit plot
ols_plot_resid_fit(model4)

#creating studentized residuals plot
ols_plot_resid_stud(model4)

#creating leverage plot
ols_plot_resid_lev(model4, threshold = 3)

#creating cooks distance plot
ols_plot_cooksd_chart(model4)

#to find the median values
summary(cor_data)
##  field_goal_pct  total_rebounds  three_point_field_goal_pct     steals    
##  Min.   :26.00   Min.   :21.00   Min.   :10.50              Min.   : 1.0  
##  1st Qu.:39.05   1st Qu.:29.00   1st Qu.:25.00              1st Qu.: 5.0  
##  Median :40.90   Median :33.00   Median :32.80              Median : 6.5  
##  Mean   :42.63   Mean   :32.67   Mean   :32.09              Mean   : 7.3  
##  3rd Qu.:47.12   3rd Qu.:36.00   3rd Qu.:38.55              3rd Qu.: 9.0  
##  Max.   :60.00   Max.   :49.00   Max.   :60.90              Max.   :13.0
#creating new data frame for the median game
newdata=data.frame(field_goal_pct=40.90, total_rebounds = 33, three_point_field_goal_pct = 32.80, steals = 6.5)

#predicting team score with medians
predict(model4, newdata, interval = "confidence", level = 0.95)
##        fit     lwr      upr
## 1 77.25382 74.3196 80.18804

I built the model to predict my team’s points for a game where they achieved the median value for every variable. The predicted team score is rprediction[1]. With 95% confidence interval, (rprediction[2],rprediction[3])

LS0tDQp0aXRsZTogIkFzc2lnbm1lbnQgNjogTG9zIEFuZ2VsZXMgU3BhcmtzIg0KYXV0aG9yOiAiQ2VhcmEgTydOZWFsIg0KZGF0ZTogImByIFN5cy5EYXRlKClgIg0Kb3V0cHV0Og0KICBodG1sX2RvY3VtZW50OiANCiAgICB0b2M6IHllcw0KICAgIHRvY19kZXB0aDogNA0KICAgIHRvY19mbG9hdDogeWVzDQogICAgbnVtYmVyX3NlY3Rpb25zOiB5ZXMNCiAgICB0b2NfY29sbGFwc2VkOiB5ZXMNCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUNCiAgICBjb2RlX2Rvd25sb2FkOiB5ZXMNCiAgICBzbW9vdGhfc2Nyb2xsOiB5ZXMNCiAgICB0aGVtZTogbHVtZW4NCiAgcGRmX2RvY3VtZW50OiANCiAgICB0b2M6IHllcw0KICAgIHRvY19kZXB0aDogNA0KICAgIGZpZ19jYXB0aW9uOiB5ZXMNCiAgICBudW1iZXJfc2VjdGlvbnM6IHllcw0KICAgIGZpZ193aWR0aDogMw0KICAgIGZpZ19oZWlnaHQ6IDMNCiAgd29yZF9kb2N1bWVudDogDQogICAgdG9jOiB5ZXMNCiAgICB0b2NfZGVwdGg6IDQNCiAgICBmaWdfY2FwdGlvbjogeWVzDQogICAga2VlcF9tZDogeWVzDQplZGl0b3Jfb3B0aW9uczogDQogIGNodW5rX291dHB1dF90eXBlOiBpbmxpbmUNCi0tLQ0KDQpgYGB7Y3NzLCBlY2hvID0gRkFMU0V9DQojVE9DOjpiZWZvcmUgew0KICBjb250ZW50OiAiVGFibGUgb2YgQ29udGVudHMiOw0KICBmb250LXdlaWdodDogYm9sZDsNCiAgZm9udC1zaXplOiAxLjJlbTsNCiAgZGlzcGxheTogYmxvY2s7DQogIGNvbG9yOiBuYXZ5Ow0KICBtYXJnaW4tYm90dG9tOiAxMHB4Ow0KfQ0KDQoNCmRpdiNUT0MgbGkgeyAgICAgLyogdGFibGUgb2YgY29udGVudCAgKi8NCiAgICBsaXN0LXN0eWxlOnVwcGVyLXJvbWFuOw0KICAgIGJhY2tncm91bmQtaW1hZ2U6bm9uZTsNCiAgICBiYWNrZ3JvdW5kLXJlcGVhdDpub25lOw0KICAgIGJhY2tncm91bmQtcG9zaXRpb246MDsNCn0NCg0KaDEudGl0bGUgeyAgICAvKiBsZXZlbCAxIGhlYWRlciBvZiB0aXRsZSAgKi8NCiAgZm9udC1zaXplOiAyMnB4Ow0KICBmb250LXdlaWdodDogYm9sZDsNCiAgY29sb3I6IERhcmtSZWQ7DQogIHRleHQtYWxpZ246IGNlbnRlcjsNCiAgZm9udC1mYW1pbHk6ICJHaWxsIFNhbnMiLCBzYW5zLXNlcmlmOw0KfQ0KDQpoNC5hdXRob3IgeyAvKiBIZWFkZXIgNCAtIGFuZCB0aGUgYXV0aG9yIGFuZCBkYXRhIGhlYWRlcnMgdXNlIHRoaXMgdG9vICAqLw0KICBmb250LXNpemU6IDE1cHg7DQogIGZvbnQtd2VpZ2h0OiBib2xkOw0KICBmb250LWZhbWlseTogc3lzdGVtLXVpOw0KICBjb2xvcjogbmF2eTsNCiAgdGV4dC1hbGlnbjogY2VudGVyOw0KfQ0KDQpoNC5kYXRlIHsgLyogSGVhZGVyIDQgLSBhbmQgdGhlIGF1dGhvciBhbmQgZGF0YSBoZWFkZXJzIHVzZSB0aGlzIHRvbyAgKi8NCiAgZm9udC1zaXplOiAxOHB4Ow0KICBmb250LXdlaWdodDogYm9sZDsNCiAgZm9udC1mYW1pbHk6ICJHaWxsIFNhbnMiLCBzYW5zLXNlcmlmOw0KICBjb2xvcjogRGFya0JsdWU7DQogIHRleHQtYWxpZ246IGNlbnRlcjsNCn0NCg0KaDEgeyAvKiBIZWFkZXIgMSAtIGFuZCB0aGUgYXV0aG9yIGFuZCBkYXRhIGhlYWRlcnMgdXNlIHRoaXMgdG9vICAqLw0KICAgIGZvbnQtc2l6ZTogMjBweDsNCiAgICBmb250LXdlaWdodDogYm9sZDsNCiAgICBmb250LWZhbWlseTogIlRpbWVzIE5ldyBSb21hbiIsIFRpbWVzLCBzZXJpZjsNCiAgICBjb2xvcjogZGFya3JlZDsNCiAgICB0ZXh0LWFsaWduOiBsZWZ0Ow0KfQ0KDQpoMiB7IC8qIEhlYWRlciAyIC0gYW5kIHRoZSBhdXRob3IgYW5kIGRhdGEgaGVhZGVycyB1c2UgdGhpcyB0b28gICovDQogICAgZm9udC1zaXplOiAxOHB4Ow0KICAgIGZvbnQtd2VpZ2h0OiBib2xkOw0KICAgIGZvbnQtZmFtaWx5OiAiVGltZXMgTmV3IFJvbWFuIiwgVGltZXMsIHNlcmlmOw0KICAgIGNvbG9yOiBuYXZ5Ow0KICAgIHRleHQtYWxpZ246IGxlZnQ7DQp9DQoNCmgzIHsgLyogSGVhZGVyIDMgLSBhbmQgdGhlIGF1dGhvciBhbmQgZGF0YSBoZWFkZXJzIHVzZSB0aGlzIHRvbyAgKi8NCiAgICBmb250LXNpemU6IDE2cHg7DQogICAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogICAgZm9udC1mYW1pbHk6ICJUaW1lcyBOZXcgUm9tYW4iLCBUaW1lcywgc2VyaWY7DQogICAgY29sb3I6IG5hdnk7DQogICAgdGV4dC1hbGlnbjogbGVmdDsNCn0NCg0KaDQgeyAvKiBIZWFkZXIgNCAtIGFuZCB0aGUgYXV0aG9yIGFuZCBkYXRhIGhlYWRlcnMgdXNlIHRoaXMgdG9vICAqLw0KICAgIGZvbnQtc2l6ZTogMTRweDsNCiAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogICAgZm9udC1mYW1pbHk6ICJUaW1lcyBOZXcgUm9tYW4iLCBUaW1lcywgc2VyaWY7DQogICAgY29sb3I6IGRhcmtyZWQ7DQogICAgdGV4dC1hbGlnbjogbGVmdDsNCn0NCg0KLyogQWRkIGRvdHMgYWZ0ZXIgbnVtYmVyZWQgaGVhZGVycyAqLw0KLmhlYWRlci1zZWN0aW9uLW51bWJlcjo6YWZ0ZXIgew0KICBjb250ZW50OiAiLiI7DQoNCmJvZHkgeyBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyB9DQoNCi5oaWdobGlnaHRtZSB7IGJhY2tncm91bmQtY29sb3I6eWVsbG93OyB9DQoNCnAgeyBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyB9DQoNCn0NCmBgYA0KDQoNCmBgYCB7ciBzZXR1cCwgaW5jbHVkZT1GfQ0Kc2V0d2QoIkM6L1VzZXJzL2NlYXJhL09uZURyaXZlIC0gRWxvbiBVbml2ZXJzaXR5L0Rlc2t0b3AvOXN0YTMxOCIpDQoNCiNyZWFkcyBpbiB0aGUgZGF0YSBzZXQNCmRhdGEgPSByZWFkLmNzdigiV05CQV8yMDI1X2JveC1zY29yZXMuY3N2IiwgaGVhZGVyID0gVCkNCg0KbGlicmFyeShnZ3Bsb3QyKQ0KbGlicmFyeShkcGx5cikNCmxpYnJhcnkoY2FyKQ0KbGlicmFyeShvbHNycikNCmxpYnJhcnkoa2FibGVFeHRyYSkNCg0KYGBgDQoNCmBgYCB7ciB3cmFuZ2xpbmcsIGluY2x1ZGU9Rn0NCiNzdW1tYXJ5KGRhdGEpDQoNCiNBbGwgV05CQSB0ZWFtcyBpbmNsdWRlZCwgcmVtb3ZlIGFsbCBzdGFyIGdhbWUgc2NvcmUNCmRhdGEgPSBkYXRhICU+JQ0KICBmaWx0ZXIodGVhbV9uYW1lICE9ICJUZWFtIFdOQkEiICYgdGVhbV9uYW1lICE9ICJUZWFtIFVTQSIpDQoNCiNncm91cCBkYXRhIGJ5IHRlYW0sIGZpbmQgbWVhbiBhbmQgU0Qgb2YgYWxsIHZhcmlhYmxlcw0Kc3VtbWFyeSA9IGRhdGEgJT4lDQogIGdyb3VwX2J5KHRlYW1fbmFtZSkgJT4lDQogIHN1bW1hcmlzZShtZWFuX3Njb3JlPW1lYW4odGVhbV9zY29yZSksIHNkX3Njb3JlPXNkKHRlYW1fc2NvcmUpLA0KICAgICAgICAgICAgbWVhbl9mZ3AgPSBtZWFuKGZpZWxkX2dvYWxfcGN0KSwgc2RfZmdwID0gc2QoZmllbGRfZ29hbF9wY3QpLCANCiAgICAgICAgICAgIG1lYW5fcmVib3VuZHMgPSBtZWFuKHRvdGFsX3JlYm91bmRzKSwgc2RfcmVib3VuZHMgPSBzZCh0b3RhbF9yZWJvdW5kcyksDQogICAgICAgICAgICBtZWFuXzNwdHBjdCA9IG1lYW4odGhyZWVfcG9pbnRfZmllbGRfZ29hbF9wY3QpLCBzZF8zcHRwY3QgPSBzZCh0aHJlZV9wb2ludF9maWVsZF9nb2FsX3BjdCksIA0KICAgICAgICAgICAgbWVhbl9zdGVhbHMgPSBtZWFuKHN0ZWFscyksIHNkX3N0ZWFscyA9IHNkKHN0ZWFscykpDQogIA0KI3NlbGVjdCBvbmx5IHZhcmlhYmxlcyB3ZSBuZWVkIGFuZCBmaWx0ZXIgb24gbXkgdGVhbSAgDQpteV90ZWFtID0gZGF0YSAlPiUNCiAgc2VsZWN0KHRlYW1fc2NvcmUsIGZpZWxkX2dvYWxfcGN0LCB0b3RhbF9yZWJvdW5kcywgdGhyZWVfcG9pbnRfZmllbGRfZ29hbF9wY3QsIHN0ZWFscywgdGVhbV9uYW1lLCB0ZWFtX3dpbm5lcikgJT4lIA0KICBmaWx0ZXIodGVhbV9uYW1lID09ICJTcGFya3MiKSAlPiUNCiAgbXV0YXRlKHJlc3VsdD0gY2FzZV93aGVuKHRlYW1fd2lubmVyPT1UUlVFfiJXaW4iLCB0ZWFtX3dpbm5lcj09RkFMU0V+Ikxvc3MiKSkNCiNncm91cHMgY2FzZXMgYnkgd2luIG9yIGxvc3MNCg0KI3N1bW1hcml6ZSBhbGwgdmFyaWFibGVzIHdpdGggbWVhbiBhbmQgU0QsIG5ldyBkYXRhIHNldCBjYWxsZWQgbXlfdGVhbV9tZWFucw0KbXlfdGVhbV9tZWFucyA9IG15X3RlYW0gJT4lDQogIGdyb3VwX2J5KHJlc3VsdCkgJT4lDQogIHN1bW1hcml6ZShtZWFuPW1lYW4odGVhbV9zY29yZSkpDQoNCmBgYA0KDQojIEludHJvZHVjdGlvbiANCg0KIyBUYWJsZXMNClRoaXMgaXMgdGhlIHNwYWNlIHdoZXJlIEkgd2lsbCBkZXNjcmliZSB0aGUgZGF0YSBzZXQsIG15IHRlYW0gYW5kIHRoZSAyMDI1IHNlYXNvbi4gDQoNClRhYmxlIERpc2N1c3Npb24tIA0KVGFibGUgMTogTXkgdGVhbSBkaWQgbm90IG1ha2UgdGhlIHBsYXlvZmZzLCBzb21lIHN0YXQgdG8gcHJvdmUgaXQNCg0KYGBge3IgdGFibGVzLCBpbmNsdWRlPVR9DQpzdW1tYXJ5ICU+JSANCiAga2JsKCkgJT4lDQogIGthYmxlX3N0eWxpbmcoKQ0KDQojbWFraW5nIGEgdGFibGUgdG8gc2hvdyBhdmVyYWdlIHNjb3JlIGluIGEgd2luIHZlcnN1cyBhdmVyYWdlIHNjb3JlIGluIGEgbG9zcw0KbXlfdGVhbV9tZWFucyAlPiUNCiAga2JsKGNhcHRpb24gPSAiMjAyNSBMb3MgQW5nZWxlcyBTcGFya3MiKSAlPiUNCiAga2FibGVfY2xhc3NpYyhmdWxsX3dpZHRoID0gRiwgaHRtbF9mb250ID0gIkNhbWJyaWEiKQ0KYGBgDQoNCiMgSGlzdG9ncmFtcw0KSGlzdG9ncmFtIGRpc2N1c3Npb24NCmBgYHtyIGdyYXBocywgaW5jbHVkZT1ULCBmaWcud2lkdGg9IDUsIGZpZC5oZWlnaHQ9NH0NCiNjcmVhdGluZyBhIGhpc3RvZ3JhbSANCnAgPC0gbXlfdGVhbSAlPiUNCiAgZ2dwbG90KCBhZXMoeD10ZWFtX3Njb3JlLCBmaWxsPXJlc3VsdCkpICsgDQogICAgZ2VvbV9oaXN0b2dyYW0oY29sb3IgPSAicHVycGxlIiwgYWxwaGEgPSAwLjYsIHBvc2l0aW9uID0gJ2lkZW50aXR5JykgKyANCiAgICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXM9YygicHVycGxlIiwgInllbGxvdyIpKQ0KcA0KDQojbWFraW5nIHNpZGUgYnkgc2lkZSBib3ggcGxvdHMgdG8gY29tcGFyZSBwb2ludHMgc2NvcmVkIGluIGEgd2luIHZlcnN1cyBhIGxvc3MNCiBib3hwbG90KHRlYW1fc2NvcmUgfiByZXN1bHQsIGRhdGEgPSBteV90ZWFtLCBub3RjaCA9IFRSVUUsIA0KICAgICAgICBjb2wgPSBjKCJwdXJwbGUiLCAieWVsbG93IiksDQogICAgICAgIG1haW4gPSAiUG9pbnRzIHNjb3JlZCBieSBnYW1lIHJlc3VsdCIsDQogICAgICAgIHhsYWIgPSAiUmVzdWx0IiwgeWxhYiA9ICJQb2ludHMiKQ0KYGBgDQoNCkhpc3RvZ3JhbSBEaXNjdXNzaW9uDQpXaW5uaW5nIHYgTG9zaW5nLCBTaWRlIGJ5IFNpZGUsIGV0Yy4NCg0KIyBNb2RlbHMNCmBgYHtyIGZpcnN0IG9yZGVyIG1vZGVsLCBpbmNsdWRlPUZ9DQojY3JlYXRlIGFuZCBzdW1tYXJpemUgbW9kZWwgMQ0KbW9kZWwxID0gbG0odGVhbV9zY29yZX5maWVsZF9nb2FsX3BjdCArIHRocmVlX3BvaW50X2ZpZWxkX2dvYWxfcGN0ICsgc3RlYWxzICsgdG90YWxfcmVib3VuZHMsIGRhdGEgPSBteV90ZWFtKSANCnN1bW1hcnkobW9kZWwxKQ0KDQojdmFyaWFuY2UgaW5mbGF0aW9uIGZhY3RvcnMNCnZpZihtb2RlbDEpDQoNCiNjcmVhdGUgbmV3IGRhdGEgZnJhbWUgdG8gdXNlIENPUiBmdW5jdGlvbg0KY29yX2RhdGEgPSBteV90ZWFtICU+JQ0KICBzZWxlY3QoZmllbGRfZ29hbF9wY3QsIHRvdGFsX3JlYm91bmRzLCB0aHJlZV9wb2ludF9maWVsZF9nb2FsX3BjdCwgc3RlYWxzKQ0KDQojdG8gZ2V0IGNvcnJlbGF0aW9uIG1hdHJpeCANCmNvcihjb3JfZGF0YSkNCmBgYA0KDQoNCmBgYHtyIGludGVyYWN0aW9uIG1vZGVsLCByZXN1bHRzID0gJ2FzaXMnLCBpbmNsdWRlID0gRiwgY29tbWVudCA9IE5BfQ0KI21vZGVsMyBpcyBvdXIgaW50ZXJhY3Rpb24gbW9kZWwNCm1vZGVsMz0gbG0odGVhbV9zY29yZX4gZmllbGRfZ29hbF9wY3QqdGhyZWVfcG9pbnRfZmllbGRfZ29hbF9wY3QgKyBzdGVhbHMqZmllbGRfZ29hbF9wY3QgKyBmaWVsZF9nb2FsX3BjdCp0b3RhbF9yZWJvdW5kcyArIHRocmVlX3BvaW50X2ZpZWxkX2dvYWxfcGN0KnRvdGFsX3JlYm91bmRzICsgc3RlYWxzKnRvdGFsX3JlYm91bmRzICsgdGhyZWVfcG9pbnRfZmllbGRfZ29hbF9wY3Qqc3RlYWxzICtmaWVsZF9nb2FsX3BjdCArIHRocmVlX3BvaW50X2ZpZWxkX2dvYWxfcGN0KyB0b3RhbF9yZWJvdW5kcyArIHN0ZWFscywgZGF0YSA9IG15X3RlYW0pDQpzdW1tYXJ5KG1vZGVsMykNCg0KI2NyZWF0aW5nIG1vZGVsIDQgd2l0aCBub24tc2lnbmlmaWNhbnQgdGVybXMgcmVtb3ZlZA0KbW9kZWw0PSBsbSh0ZWFtX3Njb3JlfmZpZWxkX2dvYWxfcGN0ICsgdGhyZWVfcG9pbnRfZmllbGRfZ29hbF9wY3QgKyB0b3RhbF9yZWJvdW5kcyArIGZpZWxkX2dvYWxfcGN0KnRvdGFsX3JlYm91bmRzICsgdGhyZWVfcG9pbnRfZmllbGRfZ29hbF9wY3QqdG90YWxfcmVib3VuZHMsIGRhdGEgPSBteV90ZWFtKSANCg0KbW9kZWw0c3VtPSBzdW1tYXJ5KG1vZGVsNCkNCg0KYGBgDQokfiQNCg0KQWZ0ZXIgYWxsIG1vZGVscyB3ZXJlIHJ1biBhbmQgbW9kZWwgcmVkdWN0aW9uIHdhcyBjb21wbGV0ZWQsIG15IGZpbmFsIG1vZGVsIGlzIA0KdGVhbV9zY29yZSA9IGByIG1vZGVsNCRjb2VmZmljaWVudHNbMV1gICsgYHIgbW9kZWw0JGNvZWZmaWNpZW50c1syXWAgKiBmaWVsZF9nb2FsX3BjdCArIA0KYHIgbW9kZWw0JGNvZWZmaWNpZW50c1szXWAgKiB0b3RhbF9yZWJvdW5kcyArIGByIG1vZGVsNCRjb2VmZmljaWVudHNbNF1gICogdGhyZWVfcG9pbnRfZmllbGRfZ29hbF9wY3QgKyBgciBtb2RlbDQkY29lZmZpY2llbnRzWzVdYCAqIGZpZWxkX2dvYWxfcGN0OnRvdGFsX3JlYm91bmRzICsgYHIgbW9kZWw0JGNvZWZmaWNpZW50c1s2XWAgKiB0aHJlZV9wb2ludF9maWVsZF9nb2FsX3BjdDp0b3RhbF9yZWJvdW5kcw0KDQpUaGlzIG1vZGVsIHNpZ25pZmljYW50bHkgcHJlZGljdHMgdGVhbSBzY29yZSwgRihgcm1vZGVsNHN1bSRmc3RhdGlzdGljWzFdYCwgYHJtb2RlbDRzdW0kZnN0YXRpc3RpY1syXWApID0gYHJtb2RlbDRzdW0kZnN0YXRpc3RpY1sxXWAsIHAsIGFkanVzdGVkIFJeMj0gYHJhZGouci5zcXVhcmVkYA0KDQpTZWUgdGFibGUgYmVsb3cgZm9yIHJlc3VsdHMuIA0KDQpgYGAge3IsIGluY2x1ZGUgPSBULCBlY2hvPUYsIHJlc3VsdHM9ICdhc2lzJywgY29tbWVudD0gTkEsIG1lc3NhZ2UgPSBGfQ0KI2luY2x1ZGluZyBwYWNrYWdlIGZvciBBUEEgc3R5bGUgdGFibGUNCmxpYnJhcnkoc3RhcmdhemVyKQ0KI2NyZWF0aW5nIEFQQSBzdHlsZSB0YWJsZQ0Kc3RhcmdhemVyKG1vZGVsNCwgdHlwZSA9ICJodG1sIikNCmBgYA0KDQpgYGB7ciByZXNpZHVhbHN9DQoNCiNjcmVhdGluZyBoaXN0b2dyYW0gb2YgcmVzaWR1YWxzDQpvbHNfcGxvdF9yZXNpZF9oaXN0KG1vZGVsNCkNCg0KI2NyZWF0aW5nIHZlcnN1cyBmaXQgcGxvdA0Kb2xzX3Bsb3RfcmVzaWRfZml0KG1vZGVsNCkNCg0KI2NyZWF0aW5nIHN0dWRlbnRpemVkIHJlc2lkdWFscyBwbG90DQpvbHNfcGxvdF9yZXNpZF9zdHVkKG1vZGVsNCkNCg0KI2NyZWF0aW5nIGxldmVyYWdlIHBsb3QNCm9sc19wbG90X3Jlc2lkX2xldihtb2RlbDQsIHRocmVzaG9sZCA9IDMpDQoNCiNjcmVhdGluZyBjb29rcyBkaXN0YW5jZSBwbG90DQpvbHNfcGxvdF9jb29rc2RfY2hhcnQobW9kZWw0KQ0KDQpgYGANCg0KYGBge3IgcHJlZGljdGlvbn0NCiN0byBmaW5kIHRoZSBtZWRpYW4gdmFsdWVzDQpzdW1tYXJ5KGNvcl9kYXRhKQ0KDQojY3JlYXRpbmcgbmV3IGRhdGEgZnJhbWUgZm9yIHRoZSBtZWRpYW4gZ2FtZQ0KbmV3ZGF0YT1kYXRhLmZyYW1lKGZpZWxkX2dvYWxfcGN0PTQwLjkwLCB0b3RhbF9yZWJvdW5kcyA9IDMzLCB0aHJlZV9wb2ludF9maWVsZF9nb2FsX3BjdCA9IDMyLjgwLCBzdGVhbHMgPSA2LjUpDQoNCiNwcmVkaWN0aW5nIHRlYW0gc2NvcmUgd2l0aCBtZWRpYW5zDQpwcmVkaWN0KG1vZGVsNCwgbmV3ZGF0YSwgaW50ZXJ2YWwgPSAiY29uZmlkZW5jZSIsIGxldmVsID0gMC45NSkNCmBgYA0KDQpJIGJ1aWx0IHRoZSBtb2RlbCB0byBwcmVkaWN0IG15IHRlYW0ncyBwb2ludHMgZm9yIGEgZ2FtZSB3aGVyZSB0aGV5IGFjaGlldmVkIHRoZSBtZWRpYW4gdmFsdWUgZm9yIGV2ZXJ5IHZhcmlhYmxlLiBUaGUgcHJlZGljdGVkIHRlYW0gc2NvcmUgaXMgYHJwcmVkaWN0aW9uWzFdYC4gV2l0aCA5NSUgY29uZmlkZW5jZSBpbnRlcnZhbCwgKGBycHJlZGljdGlvblsyXWAsYHJwcmVkaWN0aW9uWzNdYCkNCg==