#Instructions for this dataset:
# Simply select ALL the lines in this script by pressing 
# CTRL+A on Windows or CMND+A on a Mac and execute them
# Once you have executed the commands the following objects
# will be created:
# Matrices:
# - FieldGoalAttempts
# - FieldGoals
# - Games
# - MinutesPlayed
# - Salary
# Vectors:
# - Players
# - Seasons

#Comments:
#Seasons are labeled based on the first year in the season
#E.g. the 2012-2013 season is preseneted as simply 2012

#Notes and Corrections to the data:
#Kevin Durant: 2006 - College Data Used
#Kevin Durant: 2005 - Proxied With 2006 Data
#Derrick Rose: 2012 - Did Not Play
#Derrick Rose: 2007 - College Data Used
#Derrick Rose: 2006 - Proxied With 2007 Data
#Derrick Rose: 2005 - Proxied With 2007 Data

#Seasons
Seasons <- c("2005","2006","2007","2008","2009","2010","2011","2012","2013","2014")

#Players
Players <- c("KobeBryant","JoeJohnson","LeBronJames","CarmeloAnthony","DwightHoward","ChrisBosh","ChrisPaul","KevinDurant","DerrickRose","DwayneWade")

#Salaries
KobeBryant_Salary <- c(15946875,17718750,19490625,21262500,23034375,24806250,25244493,27849149,30453805,23500000)
JoeJohnson_Salary <- c(12000000,12744189,13488377,14232567,14976754,16324500,18038573,19752645,21466718,23180790)
LeBronJames_Salary <- c(4621800,5828090,13041250,14410581,15779912,14500000,16022500,17545000,19067500,20644400)
CarmeloAnthony_Salary <- c(3713640,4694041,13041250,14410581,15779912,17149243,18518574,19450000,22407474,22458000)
DwightHoward_Salary <- c(4493160,4806720,6061274,13758000,15202590,16647180,18091770,19536360,20513178,21436271)
ChrisBosh_Salary <- c(3348000,4235220,12455000,14410581,15779912,14500000,16022500,17545000,19067500,20644400)
ChrisPaul_Salary <- c(3144240,3380160,3615960,4574189,13520500,14940153,16359805,17779458,18668431,20068563)
KevinDurant_Salary <- c(0,0,4171200,4484040,4796880,6053663,15506632,16669630,17832627,18995624)
DerrickRose_Salary <- c(0,0,0,4822800,5184480,5546160,6993708,16402500,17632688,18862875)
DwayneWade_Salary <- c(3031920,3841443,13041250,14410581,15779912,14200000,15691000,17182000,18673000,15000000)
#Matrix
Salary <- rbind(KobeBryant_Salary, JoeJohnson_Salary, LeBronJames_Salary, CarmeloAnthony_Salary, DwightHoward_Salary, ChrisBosh_Salary, ChrisPaul_Salary, KevinDurant_Salary, DerrickRose_Salary, DwayneWade_Salary)
rm(KobeBryant_Salary, JoeJohnson_Salary, CarmeloAnthony_Salary, DwightHoward_Salary, ChrisBosh_Salary, LeBronJames_Salary, ChrisPaul_Salary, DerrickRose_Salary, DwayneWade_Salary, KevinDurant_Salary)
colnames(Salary) <- Seasons
rownames(Salary) <- Players

#Games 
KobeBryant_G <- c(80,77,82,82,73,82,58,78,6,35)
JoeJohnson_G <- c(82,57,82,79,76,72,60,72,79,80)
LeBronJames_G <- c(79,78,75,81,76,79,62,76,77,69)
CarmeloAnthony_G <- c(80,65,77,66,69,77,55,67,77,40)
DwightHoward_G <- c(82,82,82,79,82,78,54,76,71,41)
ChrisBosh_G <- c(70,69,67,77,70,77,57,74,79,44)
ChrisPaul_G <- c(78,64,80,78,45,80,60,70,62,82)
KevinDurant_G <- c(35,35,80,74,82,78,66,81,81,27)
DerrickRose_G <- c(40,40,40,81,78,81,39,0,10,51)
DwayneWade_G <- c(75,51,51,79,77,76,49,69,54,62)
#Matrix
Games <- rbind(KobeBryant_G, JoeJohnson_G, LeBronJames_G, CarmeloAnthony_G, DwightHoward_G, ChrisBosh_G, ChrisPaul_G, KevinDurant_G, DerrickRose_G, DwayneWade_G)
rm(KobeBryant_G, JoeJohnson_G, CarmeloAnthony_G, DwightHoward_G, ChrisBosh_G, LeBronJames_G, ChrisPaul_G, DerrickRose_G, DwayneWade_G, KevinDurant_G)
colnames(Games) <- Seasons
rownames(Games) <- Players

#Minutes Played
KobeBryant_MP <- c(3277,3140,3192,2960,2835,2779,2232,3013,177,1207)
JoeJohnson_MP <- c(3340,2359,3343,3124,2886,2554,2127,2642,2575,2791)
LeBronJames_MP <- c(3361,3190,3027,3054,2966,3063,2326,2877,2902,2493)
CarmeloAnthony_MP <- c(2941,2486,2806,2277,2634,2751,1876,2482,2982,1428)
DwightHoward_MP <- c(3021,3023,3088,2821,2843,2935,2070,2722,2396,1223)
ChrisBosh_MP <- c(2751,2658,2425,2928,2526,2795,2007,2454,2531,1556)
ChrisPaul_MP <- c(2808,2353,3006,3002,1712,2880,2181,2335,2171,2857)
KevinDurant_MP <- c(1255,1255,2768,2885,3239,3038,2546,3119,3122,913)
DerrickRose_MP <- c(1168,1168,1168,3000,2871,3026,1375,0,311,1530)
DwayneWade_MP <- c(2892,1931,1954,3048,2792,2823,1625,2391,1775,1971)
#Matrix
MinutesPlayed <- rbind(KobeBryant_MP, JoeJohnson_MP, LeBronJames_MP, CarmeloAnthony_MP, DwightHoward_MP, ChrisBosh_MP, ChrisPaul_MP, KevinDurant_MP, DerrickRose_MP, DwayneWade_MP)
rm(KobeBryant_MP, JoeJohnson_MP, CarmeloAnthony_MP, DwightHoward_MP, ChrisBosh_MP, LeBronJames_MP, ChrisPaul_MP, DerrickRose_MP, DwayneWade_MP, KevinDurant_MP)
colnames(MinutesPlayed) <- Seasons
rownames(MinutesPlayed) <- Players

#Field Goals
KobeBryant_FG <- c(978,813,775,800,716,740,574,738,31,266)
JoeJohnson_FG <- c(632,536,647,620,635,514,423,445,462,446)
LeBronJames_FG <- c(875,772,794,789,768,758,621,765,767,624)
CarmeloAnthony_FG <- c(756,691,728,535,688,684,441,669,743,358)
DwightHoward_FG <- c(468,526,583,560,510,619,416,470,473,251)
ChrisBosh_FG <- c(549,543,507,615,600,524,393,485,492,343)
ChrisPaul_FG <- c(407,381,630,631,314,430,425,412,406,568)
KevinDurant_FG <- c(306,306,587,661,794,711,643,731,849,238)
DerrickRose_FG <- c(208,208,208,574,672,711,302,0,58,338)
DwayneWade_FG <- c(699,472,439,854,719,692,416,569,415,509)
#Matrix
FieldGoals <- rbind(KobeBryant_FG, JoeJohnson_FG, LeBronJames_FG, CarmeloAnthony_FG, DwightHoward_FG, ChrisBosh_FG, ChrisPaul_FG, KevinDurant_FG, DerrickRose_FG, DwayneWade_FG)
rm(KobeBryant_FG, JoeJohnson_FG, LeBronJames_FG, CarmeloAnthony_FG, DwightHoward_FG, ChrisBosh_FG, ChrisPaul_FG, KevinDurant_FG, DerrickRose_FG, DwayneWade_FG)
colnames(FieldGoals) <- Seasons
rownames(FieldGoals) <- Players

#Field Goal Attempts
KobeBryant_FGA <- c(2173,1757,1690,1712,1569,1639,1336,1595,73,713)
JoeJohnson_FGA <- c(1395,1139,1497,1420,1386,1161,931,1052,1018,1025)
LeBronJames_FGA <- c(1823,1621,1642,1613,1528,1485,1169,1354,1353,1279)
CarmeloAnthony_FGA <- c(1572,1453,1481,1207,1502,1503,1025,1489,1643,806)
DwightHoward_FGA <- c(881,873,974,979,834,1044,726,813,800,423)
ChrisBosh_FGA <- c(1087,1094,1027,1263,1158,1056,807,907,953,745)
ChrisPaul_FGA <- c(947,871,1291,1255,637,928,890,856,870,1170)
KevinDurant_FGA <- c(647,647,1366,1390,1668,1538,1297,1433,1688,467)
DerrickRose_FGA <- c(436,436,436,1208,1373,1597,695,0,164,835)
DwayneWade_FGA <- c(1413,962,937,1739,1511,1384,837,1093,761,1084)
#Matrix
FieldGoalAttempts <- rbind(KobeBryant_FGA, JoeJohnson_FGA, LeBronJames_FGA, CarmeloAnthony_FGA, DwightHoward_FGA, ChrisBosh_FGA, ChrisPaul_FGA, KevinDurant_FGA, DerrickRose_FGA, DwayneWade_FGA)
rm(KobeBryant_FGA, JoeJohnson_FGA, LeBronJames_FGA, CarmeloAnthony_FGA, DwightHoward_FGA, ChrisBosh_FGA, ChrisPaul_FGA, KevinDurant_FGA, DerrickRose_FGA, DwayneWade_FGA)
colnames(FieldGoalAttempts) <- Seasons
rownames(FieldGoalAttempts) <- Players

#Points
KobeBryant_PTS <- c(2832,2430,2323,2201,1970,2078,1616,2133,83,782)
JoeJohnson_PTS <- c(1653,1426,1779,1688,1619,1312,1129,1170,1245,1154)
LeBronJames_PTS <- c(2478,2132,2250,2304,2258,2111,1683,2036,2089,1743)
CarmeloAnthony_PTS <- c(2122,1881,1978,1504,1943,1970,1245,1920,2112,966)
DwightHoward_PTS <- c(1292,1443,1695,1624,1503,1784,1113,1296,1297,646)
ChrisBosh_PTS <- c(1572,1561,1496,1746,1678,1438,1025,1232,1281,928)
ChrisPaul_PTS <- c(1258,1104,1684,1781,841,1268,1189,1186,1185,1564)
KevinDurant_PTS <- c(903,903,1624,1871,2472,2161,1850,2280,2593,686)
DerrickRose_PTS <- c(597,597,597,1361,1619,2026,852,0,159,904)
DwayneWade_PTS <- c(2040,1397,1254,2386,2045,1941,1082,1463,1028,1331)
#Matrix
Points <- rbind(KobeBryant_PTS, JoeJohnson_PTS, LeBronJames_PTS, CarmeloAnthony_PTS, DwightHoward_PTS, ChrisBosh_PTS, ChrisPaul_PTS, KevinDurant_PTS, DerrickRose_PTS, DwayneWade_PTS)
rm(KobeBryant_PTS, JoeJohnson_PTS, LeBronJames_PTS, CarmeloAnthony_PTS, DwightHoward_PTS, ChrisBosh_PTS, ChrisPaul_PTS, KevinDurant_PTS, DerrickRose_PTS, DwayneWade_PTS)
colnames(Points) <- Seasons
rownames(Points) <- Players

Salary
                   2005     2006     2007     2008     2009     2010     2011
KobeBryant     15946875 17718750 19490625 21262500 23034375 24806250 25244493
JoeJohnson     12000000 12744189 13488377 14232567 14976754 16324500 18038573
LeBronJames     4621800  5828090 13041250 14410581 15779912 14500000 16022500
CarmeloAnthony  3713640  4694041 13041250 14410581 15779912 17149243 18518574
DwightHoward    4493160  4806720  6061274 13758000 15202590 16647180 18091770
ChrisBosh       3348000  4235220 12455000 14410581 15779912 14500000 16022500
ChrisPaul       3144240  3380160  3615960  4574189 13520500 14940153 16359805
KevinDurant           0        0  4171200  4484040  4796880  6053663 15506632
DerrickRose           0        0        0  4822800  5184480  5546160  6993708
DwayneWade      3031920  3841443 13041250 14410581 15779912 14200000 15691000
                   2012     2013     2014
KobeBryant     27849149 30453805 23500000
JoeJohnson     19752645 21466718 23180790
LeBronJames    17545000 19067500 20644400
CarmeloAnthony 19450000 22407474 22458000
DwightHoward   19536360 20513178 21436271
ChrisBosh      17545000 19067500 20644400
ChrisPaul      17779458 18668431 20068563
KevinDurant    16669630 17832627 18995624
DerrickRose    16402500 17632688 18862875
DwayneWade     17182000 18673000 15000000
Games
               2005 2006 2007 2008 2009 2010 2011 2012 2013 2014
KobeBryant       80   77   82   82   73   82   58   78    6   35
JoeJohnson       82   57   82   79   76   72   60   72   79   80
LeBronJames      79   78   75   81   76   79   62   76   77   69
CarmeloAnthony   80   65   77   66   69   77   55   67   77   40
DwightHoward     82   82   82   79   82   78   54   76   71   41
ChrisBosh        70   69   67   77   70   77   57   74   79   44
ChrisPaul        78   64   80   78   45   80   60   70   62   82
KevinDurant      35   35   80   74   82   78   66   81   81   27
DerrickRose      40   40   40   81   78   81   39    0   10   51
DwayneWade       75   51   51   79   77   76   49   69   54   62
MinutesPlayed
               2005 2006 2007 2008 2009 2010 2011 2012 2013 2014
KobeBryant     3277 3140 3192 2960 2835 2779 2232 3013  177 1207
JoeJohnson     3340 2359 3343 3124 2886 2554 2127 2642 2575 2791
LeBronJames    3361 3190 3027 3054 2966 3063 2326 2877 2902 2493
CarmeloAnthony 2941 2486 2806 2277 2634 2751 1876 2482 2982 1428
DwightHoward   3021 3023 3088 2821 2843 2935 2070 2722 2396 1223
ChrisBosh      2751 2658 2425 2928 2526 2795 2007 2454 2531 1556
ChrisPaul      2808 2353 3006 3002 1712 2880 2181 2335 2171 2857
KevinDurant    1255 1255 2768 2885 3239 3038 2546 3119 3122  913
DerrickRose    1168 1168 1168 3000 2871 3026 1375    0  311 1530
DwayneWade     2892 1931 1954 3048 2792 2823 1625 2391 1775 1971
#matrix
my.data <- 1:20
my.data
 [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20
A <- matrix(my.data, 4, 5)
A
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    5    9   13   17
[2,]    2    6   10   14   18
[3,]    3    7   11   15   19
[4,]    4    8   12   16   20
A[2,3]
[1] 10
B <- matrix(my.data, 4, 5, byrow=T)
B
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    2    3    4    5
[2,]    6    7    8    9   10
[3,]   11   12   13   14   15
[4,]   16   17   18   19   20
B[2,5]
[1] 10
#rbind
r1 <- c("I", "am", "happy")
r2 <- c("What", "a", "day")
r3 <- c(1,2,3)
C <- rbind(r1, r2, r3)
C
   [,1]   [,2] [,3]   
r1 "I"    "am" "happy"
r2 "What" "a"  "day"  
r3 "1"    "2"  "3"    
#cbind
c1 <- 1:5
c2 <- -1:-5
D <- cbind(c1,c2)
D
     c1 c2
[1,]  1 -1
[2,]  2 -2
[3,]  3 -3
[4,]  4 -4
[5,]  5 -5
       
#named vectors
Charlie <- 1:5
Charlie
[1] 1 2 3 4 5
#give names
names(Charlie) <- c("a", "b", "c", "d", "e")
Charlie
a b c d e 
1 2 3 4 5 
Charlie["d"]
d 
4 
names(Charlie)
[1] "a" "b" "c" "d" "e"
#clear names
names(Charlie) <- NULL
Charlie
[1] 1 2 3 4 5
#Naming matrix dimensions 1
temp.vec <- rep(c("a", "B", "zZ"), each=3)
temp.vec
[1] "a"  "a"  "a"  "B"  "B"  "B"  "zZ" "zZ" "zZ"
Bravo <- matrix(temp.vec, 3,3)
Bravo
     [,1] [,2] [,3]
[1,] "a"  "B"  "zZ"
[2,] "a"  "B"  "zZ"
[3,] "a"  "B"  "zZ"
rownames(Bravo) <- c("How", "are", "you")
Bravo
    [,1] [,2] [,3]
How "a"  "B"  "zZ"
are "a"  "B"  "zZ"
you "a"  "B"  "zZ"
colnames(Bravo) <- c("X", "Y", "Z")
Bravo
    X   Y   Z   
How "a" "B" "zZ"
are "a" "B" "zZ"
you "a" "B" "zZ"
Bravo["are", "Y"] <- 0
Bravo
    X   Y   Z   
How "a" "B" "zZ"
are "a" "0" "zZ"
you "a" "B" "zZ"
rownames(Bravo) <- NULL
Bravo
     X   Y   Z   
[1,] "a" "B" "zZ"
[2,] "a" "0" "zZ"
[3,] "a" "B" "zZ"
Games
               2005 2006 2007 2008 2009 2010 2011 2012 2013 2014
KobeBryant       80   77   82   82   73   82   58   78    6   35
JoeJohnson       82   57   82   79   76   72   60   72   79   80
LeBronJames      79   78   75   81   76   79   62   76   77   69
CarmeloAnthony   80   65   77   66   69   77   55   67   77   40
DwightHoward     82   82   82   79   82   78   54   76   71   41
ChrisBosh        70   69   67   77   70   77   57   74   79   44
ChrisPaul        78   64   80   78   45   80   60   70   62   82
KevinDurant      35   35   80   74   82   78   66   81   81   27
DerrickRose      40   40   40   81   78   81   39    0   10   51
DwayneWade       75   51   51   79   77   76   49   69   54   62
rownames(Games)
 [1] "KobeBryant"     "JoeJohnson"     "LeBronJames"    "CarmeloAnthony"
 [5] "DwightHoward"   "ChrisBosh"      "ChrisPaul"      "KevinDurant"   
 [9] "DerrickRose"    "DwayneWade"    
colnames(Games)
 [1] "2005" "2006" "2007" "2008" "2009" "2010" "2011" "2012" "2013" "2014"
Games["LeBronJames", "2012"]
[1] 76
FieldGoals
               2005 2006 2007 2008 2009 2010 2011 2012 2013 2014
KobeBryant      978  813  775  800  716  740  574  738   31  266
JoeJohnson      632  536  647  620  635  514  423  445  462  446
LeBronJames     875  772  794  789  768  758  621  765  767  624
CarmeloAnthony  756  691  728  535  688  684  441  669  743  358
DwightHoward    468  526  583  560  510  619  416  470  473  251
ChrisBosh       549  543  507  615  600  524  393  485  492  343
ChrisPaul       407  381  630  631  314  430  425  412  406  568
KevinDurant     306  306  587  661  794  711  643  731  849  238
DerrickRose     208  208  208  574  672  711  302    0   58  338
DwayneWade      699  472  439  854  719  692  416  569  415  509
round(FieldGoals / Games,1)
               2005 2006 2007 2008 2009 2010 2011 2012 2013 2014
KobeBryant     12.2 10.6  9.5  9.8  9.8  9.0  9.9  9.5  5.2  7.6
JoeJohnson      7.7  9.4  7.9  7.8  8.4  7.1  7.0  6.2  5.8  5.6
LeBronJames    11.1  9.9 10.6  9.7 10.1  9.6 10.0 10.1 10.0  9.0
CarmeloAnthony  9.4 10.6  9.5  8.1 10.0  8.9  8.0 10.0  9.6  8.9
DwightHoward    5.7  6.4  7.1  7.1  6.2  7.9  7.7  6.2  6.7  6.1
ChrisBosh       7.8  7.9  7.6  8.0  8.6  6.8  6.9  6.6  6.2  7.8
ChrisPaul       5.2  6.0  7.9  8.1  7.0  5.4  7.1  5.9  6.5  6.9
KevinDurant     8.7  8.7  7.3  8.9  9.7  9.1  9.7  9.0 10.5  8.8
DerrickRose     5.2  5.2  5.2  7.1  8.6  8.8  7.7  NaN  5.8  6.6
DwayneWade      9.3  9.3  8.6 10.8  9.3  9.1  8.5  8.2  7.7  8.2
round(MinutesPlayed / Games)
               2005 2006 2007 2008 2009 2010 2011 2012 2013 2014
KobeBryant       41   41   39   36   39   34   38   39   30   34
JoeJohnson       41   41   41   40   38   35   35   37   33   35
LeBronJames      43   41   40   38   39   39   38   38   38   36
CarmeloAnthony   37   38   36   34   38   36   34   37   39   36
DwightHoward     37   37   38   36   35   38   38   36   34   30
ChrisBosh        39   39   36   38   36   36   35   33   32   35
ChrisPaul        36   37   38   38   38   36   36   33   35   35
KevinDurant      36   36   35   39   40   39   39   39   39   34
DerrickRose      29   29   29   37   37   37   35  NaN   31   30
DwayneWade       39   38   38   39   36   37   33   35   33   32
matplot(FieldGoals)


t(FieldGoals)
     KobeBryant JoeJohnson LeBronJames CarmeloAnthony DwightHoward ChrisBosh
2005        978        632         875            756          468       549
2006        813        536         772            691          526       543
2007        775        647         794            728          583       507
2008        800        620         789            535          560       615
2009        716        635         768            688          510       600
2010        740        514         758            684          619       524
2011        574        423         621            441          416       393
2012        738        445         765            669          470       485
2013         31        462         767            743          473       492
2014        266        446         624            358          251       343
     ChrisPaul KevinDurant DerrickRose DwayneWade
2005       407         306         208        699
2006       381         306         208        472
2007       630         587         208        439
2008       631         661         574        854
2009       314         794         672        719
2010       430         711         711        692
2011       425         643         302        416
2012       412         731           0        569
2013       406         849          58        415
2014       568         238         338        509
matplot(t(FieldGoals/Games), type="b", pch=15:18, col=c(1:4,6))
legend("bottomleft", inset=0.01, legend=Players, col=c(1:4,6), pch=15:18, horiz=F)



matplot(t(FieldGoals/FieldGoalAttempts), type="b", pch=15:18, col=c(1:4,6))
legend("bottomleft", inset=0.01, legend=Players, col=c(1:4,6), pch=15:18, horiz=F)


x <- c("a", "b", "c", "d", "e")
x
[1] "a" "b" "c" "d" "e"
x[c(1,5)]
[1] "a" "e"
x[1]
[1] "a"
Games
               2005 2006 2007 2008 2009 2010 2011 2012 2013 2014
KobeBryant       80   77   82   82   73   82   58   78    6   35
JoeJohnson       82   57   82   79   76   72   60   72   79   80
LeBronJames      79   78   75   81   76   79   62   76   77   69
CarmeloAnthony   80   65   77   66   69   77   55   67   77   40
DwightHoward     82   82   82   79   82   78   54   76   71   41
ChrisBosh        70   69   67   77   70   77   57   74   79   44
ChrisPaul        78   64   80   78   45   80   60   70   62   82
KevinDurant      35   35   80   74   82   78   66   81   81   27
DerrickRose      40   40   40   81   78   81   39    0   10   51
DwayneWade       75   51   51   79   77   76   49   69   54   62
Games[1:3,6:10]
            2010 2011 2012 2013 2014
KobeBryant    82   58   78    6   35
JoeJohnson    72   60   72   79   80
LeBronJames   79   62   76   77   69
Games[c(1,10),]
           2005 2006 2007 2008 2009 2010 2011 2012 2013 2014
KobeBryant   80   77   82   82   73   82   58   78    6   35
DwayneWade   75   51   51   79   77   76   49   69   54   62
Games[, c("2008", "2009")]
               2008 2009
KobeBryant       82   73
JoeJohnson       79   76
LeBronJames      81   76
CarmeloAnthony   66   69
DwightHoward     79   82
ChrisBosh        77   70
ChrisPaul        78   45
KevinDurant      74   82
DerrickRose      81   78
DwayneWade       79   77
Games[1,]
2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 
  80   77   82   82   73   82   58   78    6   35 
is.matrix(Games[1,])
[1] FALSE
is.vector(Games[1,])
[1] TRUE
Games[1,,drop=F]
           2005 2006 2007 2008 2009 2010 2011 2012 2013 2014
KobeBryant   80   77   82   82   73   82   58   78    6   35
Games[1,5,drop=F]
           2009
KobeBryant   73
Data <- MinutesPlayed[1:3,]
matplot(t(Data), type="b", pch=15:18, col=c(1:4,6))
legend("bottomleft", inset=0.01, legend=Players[1:3], col=c(1:4,6), pch=15:18, horiz=F)


Data <- MinutesPlayed[1,,drop=F]
matplot(t(Data), type="b", pch=15:18, col=c(1:4,6))
legend("bottomleft", inset=0.01, legend=Players[1], col=c(1:4,6), pch=15:18, horiz=F)


myplot <- function(){
  Data <- MinutesPlayed[2:3,,drop=F]
  matplot(t(Data), type="b", pch=15:18, col=c(1:4,6))
  legend("bottomleft", inset=0.01, legend=Players[2:3], col=c(1:4,6), pch=15:18, horiz=F)
}

myplot()



myplot <- function(data,rows=1:10){
  Data <- data[rows,,drop=F]
  matplot(t(Data), type="b", pch=15:18, col=c(1:4,6))
  legend("bottomleft", inset=0.01, legend=Players[rows], col=c(1:4,6), pch=15:18, horiz=F)
}

myplot(Salary)

myplot(MinutesPlayed)

myplot(MinutesPlayed/Games, 3)


#Salary
myplot(Salary)

myplot(Salary/Games)

myplot(Salary/FieldGoals)


#In-Game Metrics
myplot(MinutesPlayed)

myplot(Points)


#In-Game Metrics Normalized
myplot(FieldGoals/Games)

myplot(FieldGoals/FieldGoalAttempts)

myplot(FieldGoalAttempts/Games)

myplot(Points/Games)


#Interesting Observations
myplot(MinutesPlayed/Games)

myplot(Games)


#Time is Valuable
myplot(FieldGoals/MinutesPlayed)


#Player Style
myplot(Points/FieldGoals)

LS0tCnRpdGxlOiAiQmFza2V0YmFsbCBBbmFseXNpcyIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKCmBgYHtyfQoKI0luc3RydWN0aW9ucyBmb3IgdGhpcyBkYXRhc2V0OgojIFNpbXBseSBzZWxlY3QgQUxMIHRoZSBsaW5lcyBpbiB0aGlzIHNjcmlwdCBieSBwcmVzc2luZyAKIyBDVFJMK0Egb24gV2luZG93cyBvciBDTU5EK0Egb24gYSBNYWMgYW5kIGV4ZWN1dGUgdGhlbQojIE9uY2UgeW91IGhhdmUgZXhlY3V0ZWQgdGhlIGNvbW1hbmRzIHRoZSBmb2xsb3dpbmcgb2JqZWN0cwojIHdpbGwgYmUgY3JlYXRlZDoKIyBNYXRyaWNlczoKIyAtIEZpZWxkR29hbEF0dGVtcHRzCiMgLSBGaWVsZEdvYWxzCiMgLSBHYW1lcwojIC0gTWludXRlc1BsYXllZAojIC0gU2FsYXJ5CiMgVmVjdG9yczoKIyAtIFBsYXllcnMKIyAtIFNlYXNvbnMKCiNDb21tZW50czoKI1NlYXNvbnMgYXJlIGxhYmVsZWQgYmFzZWQgb24gdGhlIGZpcnN0IHllYXIgaW4gdGhlIHNlYXNvbgojRS5nLiB0aGUgMjAxMi0yMDEzIHNlYXNvbiBpcyBwcmVzZW5ldGVkIGFzIHNpbXBseSAyMDEyCgojTm90ZXMgYW5kIENvcnJlY3Rpb25zIHRvIHRoZSBkYXRhOgojS2V2aW4gRHVyYW50OiAyMDA2IC0gQ29sbGVnZSBEYXRhIFVzZWQKI0tldmluIER1cmFudDogMjAwNSAtIFByb3hpZWQgV2l0aCAyMDA2IERhdGEKI0RlcnJpY2sgUm9zZTogMjAxMiAtIERpZCBOb3QgUGxheQojRGVycmljayBSb3NlOiAyMDA3IC0gQ29sbGVnZSBEYXRhIFVzZWQKI0RlcnJpY2sgUm9zZTogMjAwNiAtIFByb3hpZWQgV2l0aCAyMDA3IERhdGEKI0RlcnJpY2sgUm9zZTogMjAwNSAtIFByb3hpZWQgV2l0aCAyMDA3IERhdGEKCiNTZWFzb25zClNlYXNvbnMgPC0gYygiMjAwNSIsIjIwMDYiLCIyMDA3IiwiMjAwOCIsIjIwMDkiLCIyMDEwIiwiMjAxMSIsIjIwMTIiLCIyMDEzIiwiMjAxNCIpCgojUGxheWVycwpQbGF5ZXJzIDwtIGMoIktvYmVCcnlhbnQiLCJKb2VKb2huc29uIiwiTGVCcm9uSmFtZXMiLCJDYXJtZWxvQW50aG9ueSIsIkR3aWdodEhvd2FyZCIsIkNocmlzQm9zaCIsIkNocmlzUGF1bCIsIktldmluRHVyYW50IiwiRGVycmlja1Jvc2UiLCJEd2F5bmVXYWRlIikKCiNTYWxhcmllcwpLb2JlQnJ5YW50X1NhbGFyeSA8LSBjKDE1OTQ2ODc1LDE3NzE4NzUwLDE5NDkwNjI1LDIxMjYyNTAwLDIzMDM0Mzc1LDI0ODA2MjUwLDI1MjQ0NDkzLDI3ODQ5MTQ5LDMwNDUzODA1LDIzNTAwMDAwKQpKb2VKb2huc29uX1NhbGFyeSA8LSBjKDEyMDAwMDAwLDEyNzQ0MTg5LDEzNDg4Mzc3LDE0MjMyNTY3LDE0OTc2NzU0LDE2MzI0NTAwLDE4MDM4NTczLDE5NzUyNjQ1LDIxNDY2NzE4LDIzMTgwNzkwKQpMZUJyb25KYW1lc19TYWxhcnkgPC0gYyg0NjIxODAwLDU4MjgwOTAsMTMwNDEyNTAsMTQ0MTA1ODEsMTU3Nzk5MTIsMTQ1MDAwMDAsMTYwMjI1MDAsMTc1NDUwMDAsMTkwNjc1MDAsMjA2NDQ0MDApCkNhcm1lbG9BbnRob255X1NhbGFyeSA8LSBjKDM3MTM2NDAsNDY5NDA0MSwxMzA0MTI1MCwxNDQxMDU4MSwxNTc3OTkxMiwxNzE0OTI0MywxODUxODU3NCwxOTQ1MDAwMCwyMjQwNzQ3NCwyMjQ1ODAwMCkKRHdpZ2h0SG93YXJkX1NhbGFyeSA8LSBjKDQ0OTMxNjAsNDgwNjcyMCw2MDYxMjc0LDEzNzU4MDAwLDE1MjAyNTkwLDE2NjQ3MTgwLDE4MDkxNzcwLDE5NTM2MzYwLDIwNTEzMTc4LDIxNDM2MjcxKQpDaHJpc0Jvc2hfU2FsYXJ5IDwtIGMoMzM0ODAwMCw0MjM1MjIwLDEyNDU1MDAwLDE0NDEwNTgxLDE1Nzc5OTEyLDE0NTAwMDAwLDE2MDIyNTAwLDE3NTQ1MDAwLDE5MDY3NTAwLDIwNjQ0NDAwKQpDaHJpc1BhdWxfU2FsYXJ5IDwtIGMoMzE0NDI0MCwzMzgwMTYwLDM2MTU5NjAsNDU3NDE4OSwxMzUyMDUwMCwxNDk0MDE1MywxNjM1OTgwNSwxNzc3OTQ1OCwxODY2ODQzMSwyMDA2ODU2MykKS2V2aW5EdXJhbnRfU2FsYXJ5IDwtIGMoMCwwLDQxNzEyMDAsNDQ4NDA0MCw0Nzk2ODgwLDYwNTM2NjMsMTU1MDY2MzIsMTY2Njk2MzAsMTc4MzI2MjcsMTg5OTU2MjQpCkRlcnJpY2tSb3NlX1NhbGFyeSA8LSBjKDAsMCwwLDQ4MjI4MDAsNTE4NDQ4MCw1NTQ2MTYwLDY5OTM3MDgsMTY0MDI1MDAsMTc2MzI2ODgsMTg4NjI4NzUpCkR3YXluZVdhZGVfU2FsYXJ5IDwtIGMoMzAzMTkyMCwzODQxNDQzLDEzMDQxMjUwLDE0NDEwNTgxLDE1Nzc5OTEyLDE0MjAwMDAwLDE1NjkxMDAwLDE3MTgyMDAwLDE4NjczMDAwLDE1MDAwMDAwKQojTWF0cml4ClNhbGFyeSA8LSByYmluZChLb2JlQnJ5YW50X1NhbGFyeSwgSm9lSm9obnNvbl9TYWxhcnksIExlQnJvbkphbWVzX1NhbGFyeSwgQ2FybWVsb0FudGhvbnlfU2FsYXJ5LCBEd2lnaHRIb3dhcmRfU2FsYXJ5LCBDaHJpc0Jvc2hfU2FsYXJ5LCBDaHJpc1BhdWxfU2FsYXJ5LCBLZXZpbkR1cmFudF9TYWxhcnksIERlcnJpY2tSb3NlX1NhbGFyeSwgRHdheW5lV2FkZV9TYWxhcnkpCnJtKEtvYmVCcnlhbnRfU2FsYXJ5LCBKb2VKb2huc29uX1NhbGFyeSwgQ2FybWVsb0FudGhvbnlfU2FsYXJ5LCBEd2lnaHRIb3dhcmRfU2FsYXJ5LCBDaHJpc0Jvc2hfU2FsYXJ5LCBMZUJyb25KYW1lc19TYWxhcnksIENocmlzUGF1bF9TYWxhcnksIERlcnJpY2tSb3NlX1NhbGFyeSwgRHdheW5lV2FkZV9TYWxhcnksIEtldmluRHVyYW50X1NhbGFyeSkKY29sbmFtZXMoU2FsYXJ5KSA8LSBTZWFzb25zCnJvd25hbWVzKFNhbGFyeSkgPC0gUGxheWVycwoKI0dhbWVzIApLb2JlQnJ5YW50X0cgPC0gYyg4MCw3Nyw4Miw4Miw3Myw4Miw1OCw3OCw2LDM1KQpKb2VKb2huc29uX0cgPC0gYyg4Miw1Nyw4Miw3OSw3Niw3Miw2MCw3Miw3OSw4MCkKTGVCcm9uSmFtZXNfRyA8LSBjKDc5LDc4LDc1LDgxLDc2LDc5LDYyLDc2LDc3LDY5KQpDYXJtZWxvQW50aG9ueV9HIDwtIGMoODAsNjUsNzcsNjYsNjksNzcsNTUsNjcsNzcsNDApCkR3aWdodEhvd2FyZF9HIDwtIGMoODIsODIsODIsNzksODIsNzgsNTQsNzYsNzEsNDEpCkNocmlzQm9zaF9HIDwtIGMoNzAsNjksNjcsNzcsNzAsNzcsNTcsNzQsNzksNDQpCkNocmlzUGF1bF9HIDwtIGMoNzgsNjQsODAsNzgsNDUsODAsNjAsNzAsNjIsODIpCktldmluRHVyYW50X0cgPC0gYygzNSwzNSw4MCw3NCw4Miw3OCw2Niw4MSw4MSwyNykKRGVycmlja1Jvc2VfRyA8LSBjKDQwLDQwLDQwLDgxLDc4LDgxLDM5LDAsMTAsNTEpCkR3YXluZVdhZGVfRyA8LSBjKDc1LDUxLDUxLDc5LDc3LDc2LDQ5LDY5LDU0LDYyKQojTWF0cml4CkdhbWVzIDwtIHJiaW5kKEtvYmVCcnlhbnRfRywgSm9lSm9obnNvbl9HLCBMZUJyb25KYW1lc19HLCBDYXJtZWxvQW50aG9ueV9HLCBEd2lnaHRIb3dhcmRfRywgQ2hyaXNCb3NoX0csIENocmlzUGF1bF9HLCBLZXZpbkR1cmFudF9HLCBEZXJyaWNrUm9zZV9HLCBEd2F5bmVXYWRlX0cpCnJtKEtvYmVCcnlhbnRfRywgSm9lSm9obnNvbl9HLCBDYXJtZWxvQW50aG9ueV9HLCBEd2lnaHRIb3dhcmRfRywgQ2hyaXNCb3NoX0csIExlQnJvbkphbWVzX0csIENocmlzUGF1bF9HLCBEZXJyaWNrUm9zZV9HLCBEd2F5bmVXYWRlX0csIEtldmluRHVyYW50X0cpCmNvbG5hbWVzKEdhbWVzKSA8LSBTZWFzb25zCnJvd25hbWVzKEdhbWVzKSA8LSBQbGF5ZXJzCgojTWludXRlcyBQbGF5ZWQKS29iZUJyeWFudF9NUCA8LSBjKDMyNzcsMzE0MCwzMTkyLDI5NjAsMjgzNSwyNzc5LDIyMzIsMzAxMywxNzcsMTIwNykKSm9lSm9obnNvbl9NUCA8LSBjKDMzNDAsMjM1OSwzMzQzLDMxMjQsMjg4NiwyNTU0LDIxMjcsMjY0MiwyNTc1LDI3OTEpCkxlQnJvbkphbWVzX01QIDwtIGMoMzM2MSwzMTkwLDMwMjcsMzA1NCwyOTY2LDMwNjMsMjMyNiwyODc3LDI5MDIsMjQ5MykKQ2FybWVsb0FudGhvbnlfTVAgPC0gYygyOTQxLDI0ODYsMjgwNiwyMjc3LDI2MzQsMjc1MSwxODc2LDI0ODIsMjk4MiwxNDI4KQpEd2lnaHRIb3dhcmRfTVAgPC0gYygzMDIxLDMwMjMsMzA4OCwyODIxLDI4NDMsMjkzNSwyMDcwLDI3MjIsMjM5NiwxMjIzKQpDaHJpc0Jvc2hfTVAgPC0gYygyNzUxLDI2NTgsMjQyNSwyOTI4LDI1MjYsMjc5NSwyMDA3LDI0NTQsMjUzMSwxNTU2KQpDaHJpc1BhdWxfTVAgPC0gYygyODA4LDIzNTMsMzAwNiwzMDAyLDE3MTIsMjg4MCwyMTgxLDIzMzUsMjE3MSwyODU3KQpLZXZpbkR1cmFudF9NUCA8LSBjKDEyNTUsMTI1NSwyNzY4LDI4ODUsMzIzOSwzMDM4LDI1NDYsMzExOSwzMTIyLDkxMykKRGVycmlja1Jvc2VfTVAgPC0gYygxMTY4LDExNjgsMTE2OCwzMDAwLDI4NzEsMzAyNiwxMzc1LDAsMzExLDE1MzApCkR3YXluZVdhZGVfTVAgPC0gYygyODkyLDE5MzEsMTk1NCwzMDQ4LDI3OTIsMjgyMywxNjI1LDIzOTEsMTc3NSwxOTcxKQojTWF0cml4Ck1pbnV0ZXNQbGF5ZWQgPC0gcmJpbmQoS29iZUJyeWFudF9NUCwgSm9lSm9obnNvbl9NUCwgTGVCcm9uSmFtZXNfTVAsIENhcm1lbG9BbnRob255X01QLCBEd2lnaHRIb3dhcmRfTVAsIENocmlzQm9zaF9NUCwgQ2hyaXNQYXVsX01QLCBLZXZpbkR1cmFudF9NUCwgRGVycmlja1Jvc2VfTVAsIER3YXluZVdhZGVfTVApCnJtKEtvYmVCcnlhbnRfTVAsIEpvZUpvaG5zb25fTVAsIENhcm1lbG9BbnRob255X01QLCBEd2lnaHRIb3dhcmRfTVAsIENocmlzQm9zaF9NUCwgTGVCcm9uSmFtZXNfTVAsIENocmlzUGF1bF9NUCwgRGVycmlja1Jvc2VfTVAsIER3YXluZVdhZGVfTVAsIEtldmluRHVyYW50X01QKQpjb2xuYW1lcyhNaW51dGVzUGxheWVkKSA8LSBTZWFzb25zCnJvd25hbWVzKE1pbnV0ZXNQbGF5ZWQpIDwtIFBsYXllcnMKCiNGaWVsZCBHb2FscwpLb2JlQnJ5YW50X0ZHIDwtIGMoOTc4LDgxMyw3NzUsODAwLDcxNiw3NDAsNTc0LDczOCwzMSwyNjYpCkpvZUpvaG5zb25fRkcgPC0gYyg2MzIsNTM2LDY0Nyw2MjAsNjM1LDUxNCw0MjMsNDQ1LDQ2Miw0NDYpCkxlQnJvbkphbWVzX0ZHIDwtIGMoODc1LDc3Miw3OTQsNzg5LDc2OCw3NTgsNjIxLDc2NSw3NjcsNjI0KQpDYXJtZWxvQW50aG9ueV9GRyA8LSBjKDc1Niw2OTEsNzI4LDUzNSw2ODgsNjg0LDQ0MSw2NjksNzQzLDM1OCkKRHdpZ2h0SG93YXJkX0ZHIDwtIGMoNDY4LDUyNiw1ODMsNTYwLDUxMCw2MTksNDE2LDQ3MCw0NzMsMjUxKQpDaHJpc0Jvc2hfRkcgPC0gYyg1NDksNTQzLDUwNyw2MTUsNjAwLDUyNCwzOTMsNDg1LDQ5MiwzNDMpCkNocmlzUGF1bF9GRyA8LSBjKDQwNywzODEsNjMwLDYzMSwzMTQsNDMwLDQyNSw0MTIsNDA2LDU2OCkKS2V2aW5EdXJhbnRfRkcgPC0gYygzMDYsMzA2LDU4Nyw2NjEsNzk0LDcxMSw2NDMsNzMxLDg0OSwyMzgpCkRlcnJpY2tSb3NlX0ZHIDwtIGMoMjA4LDIwOCwyMDgsNTc0LDY3Miw3MTEsMzAyLDAsNTgsMzM4KQpEd2F5bmVXYWRlX0ZHIDwtIGMoNjk5LDQ3Miw0MzksODU0LDcxOSw2OTIsNDE2LDU2OSw0MTUsNTA5KQojTWF0cml4CkZpZWxkR29hbHMgPC0gcmJpbmQoS29iZUJyeWFudF9GRywgSm9lSm9obnNvbl9GRywgTGVCcm9uSmFtZXNfRkcsIENhcm1lbG9BbnRob255X0ZHLCBEd2lnaHRIb3dhcmRfRkcsIENocmlzQm9zaF9GRywgQ2hyaXNQYXVsX0ZHLCBLZXZpbkR1cmFudF9GRywgRGVycmlja1Jvc2VfRkcsIER3YXluZVdhZGVfRkcpCnJtKEtvYmVCcnlhbnRfRkcsIEpvZUpvaG5zb25fRkcsIExlQnJvbkphbWVzX0ZHLCBDYXJtZWxvQW50aG9ueV9GRywgRHdpZ2h0SG93YXJkX0ZHLCBDaHJpc0Jvc2hfRkcsIENocmlzUGF1bF9GRywgS2V2aW5EdXJhbnRfRkcsIERlcnJpY2tSb3NlX0ZHLCBEd2F5bmVXYWRlX0ZHKQpjb2xuYW1lcyhGaWVsZEdvYWxzKSA8LSBTZWFzb25zCnJvd25hbWVzKEZpZWxkR29hbHMpIDwtIFBsYXllcnMKCiNGaWVsZCBHb2FsIEF0dGVtcHRzCktvYmVCcnlhbnRfRkdBIDwtIGMoMjE3MywxNzU3LDE2OTAsMTcxMiwxNTY5LDE2MzksMTMzNiwxNTk1LDczLDcxMykKSm9lSm9obnNvbl9GR0EgPC0gYygxMzk1LDExMzksMTQ5NywxNDIwLDEzODYsMTE2MSw5MzEsMTA1MiwxMDE4LDEwMjUpCkxlQnJvbkphbWVzX0ZHQSA8LSBjKDE4MjMsMTYyMSwxNjQyLDE2MTMsMTUyOCwxNDg1LDExNjksMTM1NCwxMzUzLDEyNzkpCkNhcm1lbG9BbnRob255X0ZHQSA8LSBjKDE1NzIsMTQ1MywxNDgxLDEyMDcsMTUwMiwxNTAzLDEwMjUsMTQ4OSwxNjQzLDgwNikKRHdpZ2h0SG93YXJkX0ZHQSA8LSBjKDg4MSw4NzMsOTc0LDk3OSw4MzQsMTA0NCw3MjYsODEzLDgwMCw0MjMpCkNocmlzQm9zaF9GR0EgPC0gYygxMDg3LDEwOTQsMTAyNywxMjYzLDExNTgsMTA1Niw4MDcsOTA3LDk1Myw3NDUpCkNocmlzUGF1bF9GR0EgPC0gYyg5NDcsODcxLDEyOTEsMTI1NSw2MzcsOTI4LDg5MCw4NTYsODcwLDExNzApCktldmluRHVyYW50X0ZHQSA8LSBjKDY0Nyw2NDcsMTM2NiwxMzkwLDE2NjgsMTUzOCwxMjk3LDE0MzMsMTY4OCw0NjcpCkRlcnJpY2tSb3NlX0ZHQSA8LSBjKDQzNiw0MzYsNDM2LDEyMDgsMTM3MywxNTk3LDY5NSwwLDE2NCw4MzUpCkR3YXluZVdhZGVfRkdBIDwtIGMoMTQxMyw5NjIsOTM3LDE3MzksMTUxMSwxMzg0LDgzNywxMDkzLDc2MSwxMDg0KQojTWF0cml4CkZpZWxkR29hbEF0dGVtcHRzIDwtIHJiaW5kKEtvYmVCcnlhbnRfRkdBLCBKb2VKb2huc29uX0ZHQSwgTGVCcm9uSmFtZXNfRkdBLCBDYXJtZWxvQW50aG9ueV9GR0EsIER3aWdodEhvd2FyZF9GR0EsIENocmlzQm9zaF9GR0EsIENocmlzUGF1bF9GR0EsIEtldmluRHVyYW50X0ZHQSwgRGVycmlja1Jvc2VfRkdBLCBEd2F5bmVXYWRlX0ZHQSkKcm0oS29iZUJyeWFudF9GR0EsIEpvZUpvaG5zb25fRkdBLCBMZUJyb25KYW1lc19GR0EsIENhcm1lbG9BbnRob255X0ZHQSwgRHdpZ2h0SG93YXJkX0ZHQSwgQ2hyaXNCb3NoX0ZHQSwgQ2hyaXNQYXVsX0ZHQSwgS2V2aW5EdXJhbnRfRkdBLCBEZXJyaWNrUm9zZV9GR0EsIER3YXluZVdhZGVfRkdBKQpjb2xuYW1lcyhGaWVsZEdvYWxBdHRlbXB0cykgPC0gU2Vhc29ucwpyb3duYW1lcyhGaWVsZEdvYWxBdHRlbXB0cykgPC0gUGxheWVycwoKI1BvaW50cwpLb2JlQnJ5YW50X1BUUyA8LSBjKDI4MzIsMjQzMCwyMzIzLDIyMDEsMTk3MCwyMDc4LDE2MTYsMjEzMyw4Myw3ODIpCkpvZUpvaG5zb25fUFRTIDwtIGMoMTY1MywxNDI2LDE3NzksMTY4OCwxNjE5LDEzMTIsMTEyOSwxMTcwLDEyNDUsMTE1NCkKTGVCcm9uSmFtZXNfUFRTIDwtIGMoMjQ3OCwyMTMyLDIyNTAsMjMwNCwyMjU4LDIxMTEsMTY4MywyMDM2LDIwODksMTc0MykKQ2FybWVsb0FudGhvbnlfUFRTIDwtIGMoMjEyMiwxODgxLDE5NzgsMTUwNCwxOTQzLDE5NzAsMTI0NSwxOTIwLDIxMTIsOTY2KQpEd2lnaHRIb3dhcmRfUFRTIDwtIGMoMTI5MiwxNDQzLDE2OTUsMTYyNCwxNTAzLDE3ODQsMTExMywxMjk2LDEyOTcsNjQ2KQpDaHJpc0Jvc2hfUFRTIDwtIGMoMTU3MiwxNTYxLDE0OTYsMTc0NiwxNjc4LDE0MzgsMTAyNSwxMjMyLDEyODEsOTI4KQpDaHJpc1BhdWxfUFRTIDwtIGMoMTI1OCwxMTA0LDE2ODQsMTc4MSw4NDEsMTI2OCwxMTg5LDExODYsMTE4NSwxNTY0KQpLZXZpbkR1cmFudF9QVFMgPC0gYyg5MDMsOTAzLDE2MjQsMTg3MSwyNDcyLDIxNjEsMTg1MCwyMjgwLDI1OTMsNjg2KQpEZXJyaWNrUm9zZV9QVFMgPC0gYyg1OTcsNTk3LDU5NywxMzYxLDE2MTksMjAyNiw4NTIsMCwxNTksOTA0KQpEd2F5bmVXYWRlX1BUUyA8LSBjKDIwNDAsMTM5NywxMjU0LDIzODYsMjA0NSwxOTQxLDEwODIsMTQ2MywxMDI4LDEzMzEpCiNNYXRyaXgKUG9pbnRzIDwtIHJiaW5kKEtvYmVCcnlhbnRfUFRTLCBKb2VKb2huc29uX1BUUywgTGVCcm9uSmFtZXNfUFRTLCBDYXJtZWxvQW50aG9ueV9QVFMsIER3aWdodEhvd2FyZF9QVFMsIENocmlzQm9zaF9QVFMsIENocmlzUGF1bF9QVFMsIEtldmluRHVyYW50X1BUUywgRGVycmlja1Jvc2VfUFRTLCBEd2F5bmVXYWRlX1BUUykKcm0oS29iZUJyeWFudF9QVFMsIEpvZUpvaG5zb25fUFRTLCBMZUJyb25KYW1lc19QVFMsIENhcm1lbG9BbnRob255X1BUUywgRHdpZ2h0SG93YXJkX1BUUywgQ2hyaXNCb3NoX1BUUywgQ2hyaXNQYXVsX1BUUywgS2V2aW5EdXJhbnRfUFRTLCBEZXJyaWNrUm9zZV9QVFMsIER3YXluZVdhZGVfUFRTKQpjb2xuYW1lcyhQb2ludHMpIDwtIFNlYXNvbnMKcm93bmFtZXMoUG9pbnRzKSA8LSBQbGF5ZXJzCgpTYWxhcnkKR2FtZXMKTWludXRlc1BsYXllZAoKI21hdHJpeApteS5kYXRhIDwtIDE6MjAKbXkuZGF0YQoKQSA8LSBtYXRyaXgobXkuZGF0YSwgNCwgNSkKQQpBWzIsM10KCkIgPC0gbWF0cml4KG15LmRhdGEsIDQsIDUsIGJ5cm93PVQpCkIKQlsyLDVdCgojcmJpbmQKcjEgPC0gYygiSSIsICJhbSIsICJoYXBweSIpCnIyIDwtIGMoIldoYXQiLCAiYSIsICJkYXkiKQpyMyA8LSBjKDEsMiwzKQpDIDwtIHJiaW5kKHIxLCByMiwgcjMpCkMKCiNjYmluZApjMSA8LSAxOjUKYzIgPC0gLTE6LTUKRCA8LSBjYmluZChjMSxjMikKRAogICAgICAgCiNuYW1lZCB2ZWN0b3JzCkNoYXJsaWUgPC0gMTo1CkNoYXJsaWUKCiNnaXZlIG5hbWVzCm5hbWVzKENoYXJsaWUpIDwtIGMoImEiLCAiYiIsICJjIiwgImQiLCAiZSIpCkNoYXJsaWUKQ2hhcmxpZVsiZCJdCm5hbWVzKENoYXJsaWUpCgojY2xlYXIgbmFtZXMKbmFtZXMoQ2hhcmxpZSkgPC0gTlVMTApDaGFybGllCgojTmFtaW5nIG1hdHJpeCBkaW1lbnNpb25zIDEKdGVtcC52ZWMgPC0gcmVwKGMoImEiLCAiQiIsICJ6WiIpLCBlYWNoPTMpCnRlbXAudmVjCgpCcmF2byA8LSBtYXRyaXgodGVtcC52ZWMsIDMsMykKQnJhdm8KCnJvd25hbWVzKEJyYXZvKSA8LSBjKCJIb3ciLCAiYXJlIiwgInlvdSIpCkJyYXZvCgpjb2xuYW1lcyhCcmF2bykgPC0gYygiWCIsICJZIiwgIloiKQpCcmF2bwoKQnJhdm9bImFyZSIsICJZIl0gPC0gMApCcmF2bwoKcm93bmFtZXMoQnJhdm8pIDwtIE5VTEwKQnJhdm8KCkdhbWVzCnJvd25hbWVzKEdhbWVzKQpjb2xuYW1lcyhHYW1lcykKR2FtZXNbIkxlQnJvbkphbWVzIiwgIjIwMTIiXQoKRmllbGRHb2FscwoKcm91bmQoRmllbGRHb2FscyAvIEdhbWVzLDEpCgpyb3VuZChNaW51dGVzUGxheWVkIC8gR2FtZXMpCgptYXRwbG90KEZpZWxkR29hbHMpCgp0KEZpZWxkR29hbHMpCgptYXRwbG90KHQoRmllbGRHb2Fscy9HYW1lcyksIHR5cGU9ImIiLCBwY2g9MTU6MTgsIGNvbD1jKDE6NCw2KSkKbGVnZW5kKCJib3R0b21sZWZ0IiwgaW5zZXQ9MC4wMSwgbGVnZW5kPVBsYXllcnMsIGNvbD1jKDE6NCw2KSwgcGNoPTE1OjE4LCBob3Jpej1GKQoKCm1hdHBsb3QodChGaWVsZEdvYWxzL0ZpZWxkR29hbEF0dGVtcHRzKSwgdHlwZT0iYiIsIHBjaD0xNToxOCwgY29sPWMoMTo0LDYpKQpsZWdlbmQoImJvdHRvbWxlZnQiLCBpbnNldD0wLjAxLCBsZWdlbmQ9UGxheWVycywgY29sPWMoMTo0LDYpLCBwY2g9MTU6MTgsIGhvcml6PUYpCgp4IDwtIGMoImEiLCAiYiIsICJjIiwgImQiLCAiZSIpCngKeFtjKDEsNSldCnhbMV0KCkdhbWVzCkdhbWVzWzE6Myw2OjEwXQpHYW1lc1tjKDEsMTApLF0KR2FtZXNbLCBjKCIyMDA4IiwgIjIwMDkiKV0KR2FtZXNbMSxdCmlzLm1hdHJpeChHYW1lc1sxLF0pCmlzLnZlY3RvcihHYW1lc1sxLF0pCgpHYW1lc1sxLCxkcm9wPUZdCkdhbWVzWzEsNSxkcm9wPUZdCgpEYXRhIDwtIE1pbnV0ZXNQbGF5ZWRbMTozLF0KbWF0cGxvdCh0KERhdGEpLCB0eXBlPSJiIiwgcGNoPTE1OjE4LCBjb2w9YygxOjQsNikpCmxlZ2VuZCgiYm90dG9tbGVmdCIsIGluc2V0PTAuMDEsIGxlZ2VuZD1QbGF5ZXJzWzE6M10sIGNvbD1jKDE6NCw2KSwgcGNoPTE1OjE4LCBob3Jpej1GKQoKRGF0YSA8LSBNaW51dGVzUGxheWVkWzEsLGRyb3A9Rl0KbWF0cGxvdCh0KERhdGEpLCB0eXBlPSJiIiwgcGNoPTE1OjE4LCBjb2w9YygxOjQsNikpCmxlZ2VuZCgiYm90dG9tbGVmdCIsIGluc2V0PTAuMDEsIGxlZ2VuZD1QbGF5ZXJzWzFdLCBjb2w9YygxOjQsNiksIHBjaD0xNToxOCwgaG9yaXo9RikKCm15cGxvdCA8LSBmdW5jdGlvbigpewogIERhdGEgPC0gTWludXRlc1BsYXllZFsyOjMsLGRyb3A9Rl0KICBtYXRwbG90KHQoRGF0YSksIHR5cGU9ImIiLCBwY2g9MTU6MTgsIGNvbD1jKDE6NCw2KSkKICBsZWdlbmQoImJvdHRvbWxlZnQiLCBpbnNldD0wLjAxLCBsZWdlbmQ9UGxheWVyc1syOjNdLCBjb2w9YygxOjQsNiksIHBjaD0xNToxOCwgaG9yaXo9RikKfQoKbXlwbG90KCkKCgpteXBsb3QgPC0gZnVuY3Rpb24oZGF0YSxyb3dzPTE6MTApewogIERhdGEgPC0gZGF0YVtyb3dzLCxkcm9wPUZdCiAgbWF0cGxvdCh0KERhdGEpLCB0eXBlPSJiIiwgcGNoPTE1OjE4LCBjb2w9YygxOjQsNikpCiAgbGVnZW5kKCJib3R0b21sZWZ0IiwgaW5zZXQ9MC4wMSwgbGVnZW5kPVBsYXllcnNbcm93c10sIGNvbD1jKDE6NCw2KSwgcGNoPTE1OjE4LCBob3Jpej1GKQp9CgpteXBsb3QoU2FsYXJ5KQpteXBsb3QoTWludXRlc1BsYXllZCkKbXlwbG90KE1pbnV0ZXNQbGF5ZWQvR2FtZXMsIDMpCgojU2FsYXJ5Cm15cGxvdChTYWxhcnkpCm15cGxvdChTYWxhcnkvR2FtZXMpCm15cGxvdChTYWxhcnkvRmllbGRHb2FscykKCiNJbi1HYW1lIE1ldHJpY3MKbXlwbG90KE1pbnV0ZXNQbGF5ZWQpCm15cGxvdChQb2ludHMpCgojSW4tR2FtZSBNZXRyaWNzIE5vcm1hbGl6ZWQKbXlwbG90KEZpZWxkR29hbHMvR2FtZXMpCm15cGxvdChGaWVsZEdvYWxzL0ZpZWxkR29hbEF0dGVtcHRzKQpteXBsb3QoRmllbGRHb2FsQXR0ZW1wdHMvR2FtZXMpCm15cGxvdChQb2ludHMvR2FtZXMpCgojSW50ZXJlc3RpbmcgT2JzZXJ2YXRpb25zCm15cGxvdChNaW51dGVzUGxheWVkL0dhbWVzKQpteXBsb3QoR2FtZXMpCgojVGltZSBpcyBWYWx1YWJsZQpteXBsb3QoRmllbGRHb2Fscy9NaW51dGVzUGxheWVkKQoKI1BsYXllciBTdHlsZQpteXBsb3QoUG9pbnRzL0ZpZWxkR29hbHMpCgpgYGAKCgo=