Survival Analysis Report of Titanic data.
titanic_s=TitanicSurvival
head(titanic_s)
str(titanic_s)
'data.frame': 1309 obs. of 4 variables:
$ survived : Factor w/ 2 levels "no","yes": 2 2 1 1 1 2 2 1 2 1 ...
$ sex : Factor w/ 2 levels "female","male": 1 2 1 2 1 2 1 2 1 2 ...
$ age : num 29 0.917 2 30 25 ...
$ passengerClass: Factor w/ 3 levels "1st","2nd","3rd": 1 1 1 1 1 1 1 1 1 1 ...
summary(titanic_s)
survived sex age
no :809 female:466 Min. : 0.1667
yes:500 male :843 1st Qu.:21.0000
Median :28.0000
Mean :29.8811
3rd Qu.:39.0000
Max. :80.0000
NA's :263
passengerClass
1st:323
2nd:277
3rd:709
From the summary table we get to know that-
1)There are “263” NULL values in the age variable.
2)Also the some of the variables are of character type.
So, we need to resolve both the above mentioned problems before beginning the analysis.
As shown in the above table the missing values and non-numeric values have been resolved.
Now to better understand the relationship and influence of different variables ,here are some graphical representation among different variables.

Above distribution graph shows the survival of people of different age group.

Above graphs shows the number of people survived or died of different age,sex and passengerclass.

The boxplot represents the different age group people with different passengerclass.
Now moving over to analysis of our titanic data.
1)First we have to split the data into train and test data.
2)Creating a model or logistics equation for the suiting the data,considering survived as a dependent variable and rest as independent variable.
summary(model_ti)
Call:
glm(formula = survived ~ ., family = binomial(link = "logit"),
data = train_ti)
Deviance Residuals:
Min 1Q Median 3Q Max
-2.3103 -0.6880 -0.4285 0.6478 2.3842
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 7.01299 0.52146 13.449 < 2e-16
sex -2.48680 0.17326 -14.353 < 2e-16
age -0.03117 0.00700 -4.453 8.48e-06
passengerClass -1.15000 0.11230 -10.240 < 2e-16
(Intercept) ***
sex ***
age ***
passengerClass ***
---
Signif. codes:
0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 1308.86 on 981 degrees of freedom
Residual deviance: 913.05 on 978 degrees of freedom
AIC: 921.05
Number of Fisher Scoring iterations: 4
As from the above table,we came to know that according to p-value all the independent variables are significant but since in logistics regression not only p-value is considered but also we have to see the residual error and AIC.
summary(model_ti3)
Call:
glm(formula = survived ~ . - age, family = "binomial", data = train_ti)
Deviance Residuals:
Min 1Q Median 3Q Max
-2.1543 -0.7119 -0.4603 0.7040 2.1436
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 5.67741 0.40067 14.170 <2e-16
sex -2.51197 0.17128 -14.666 <2e-16
passengerClass -0.94837 0.09964 -9.518 <2e-16
(Intercept) ***
sex ***
passengerClass ***
---
Signif. codes:
0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 1308.86 on 981 degrees of freedom
Residual deviance: 933.71 on 979 degrees of freedom
AIC: 939.71
Number of Fisher Scoring iterations: 4
After excluding different variable we came to the result that none of the variables can be ignored as excluding them led to increase in residual error and AIC
So best fitted model for this data is “model_ti” inclusive of all the independent variables.
Now we have to predict the survival rate for the test data.
head(pred_ti)
Allison, Miss. Helen Loraine
0.9649007
Andrews, Miss. Kornelia Theodos
0.8041507
Astor, Col. John Jacob
0.3599375
Barkworth, Mr. Algernon Henry W
0.1673867
Bazzani, Miss. Albina
0.9151907
Behr, Mr. Karl Howell
0.5197262
Above data shows the probablity of survival of people in test data.
table_ti
predictedvalue
actualvalue FALSE TRUE
0 180 25
1 38 84
from above confusion matrix shows the number of values truely predicted and falsely predicted
A11=TRUE NEGATIVE (truely predicted as “not survived” )
A22=TRUE POSITIVE (truely predicted as “survived”)
A12=FALSE POSITIVE (falsely predicted as “survived”)
A21=FALSE NEGATIVE (falsely predicted as “not survived”)
Now based on the set threshold we have to check its accuracy and find the best threshold value for max accuracy.
#determining accuracy of the prediction
acc=((180+84)/(180+84+38+25))
acc
[1] 0.8073394
#since accuracy is 80% we can increase it by selecting optimal threshold
library(ROCR)
rocr_ti=prediction(pred_ti,test_ti$survived)
rocr_ti_per=performance(rocr_ti,"acc")
rocr_ti_per1=performance(rocr_ti,"tpr","fpr")
plot(rocr_ti_per)

plot(rocr_ti_per1,colorize=TRUE)

from the above chart we can say that threshold must b in between 0.5to0.6 ,So again making table by setting threshold in between 0.5to0.6
table_ti1=table(actualvalue=test_ti$survived,predictedvalue=pred_ti>0.51)
table_ti1
predictedvalue
actualvalue FALSE TRUE
0 181 24
1 38 84
accuracy_ti1=((181+84)/(181+84+24+39))
accuracy_ti1
[1] 0.8079268
plot(table_ti1,col=c("red","green"))

1)Above shown is the confusion matrix with optimal threshold value and accuracy corresponding to it Hence for threshold 0.51 we get the maximum accuracy as 80.8%.
2)The graph represents the table in the graphical view showing green(predicted as “survived”) and red(predicted as “died”)

Above graph shows that-
1)People on high class are having less chance of dying than low passengerclass.
2)Also the age has less affect on the survival rate of the people.
Hence we the predict the test data with 80.8% accuracy
LS0tDQp0aXRsZTogIlN1cnZpdmFsIEFuYWx5c2lzIEZvciBUaXRhbmljIERhdGEiDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KU3Vydml2YWwgQW5hbHlzaXMgUmVwb3J0IG9mIFRpdGFuaWMgZGF0YS4NCg0KYGBge3J9DQojaW1wb3J0aW5nIHRpdGFuaWMgZGF0YXNldA0KdGl0YW5pY19zPVRpdGFuaWNTdXJ2aXZhbA0KaGVhZCh0aXRhbmljX3MpDQpzdHIodGl0YW5pY19zKQ0Kc3VtbWFyeSh0aXRhbmljX3MpDQoNCmBgYA0KRnJvbSB0aGUgc3VtbWFyeSB0YWJsZSB3ZSBnZXQgdG8ga25vdyB0aGF0LQ0KDQoxKVRoZXJlIGFyZSAiMjYzIiBOVUxMIHZhbHVlcyBpbiB0aGUgYWdlIHZhcmlhYmxlLg0KDQoyKUFsc28gIHRoZSBzb21lIG9mIHRoZSB2YXJpYWJsZXMgYXJlIG9mIGNoYXJhY3RlciB0eXBlLg0KDQpTbywgd2UgbmVlZCB0byByZXNvbHZlIGJvdGggdGhlIGFib3ZlIG1lbnRpb25lZCBwcm9ibGVtcyBiZWZvcmUgYmVnaW5uaW5nIHRoZSBhbmFseXNpcy4NCmBgYHtyfQ0KDQp0aXRhbmljX3MkYWdlW2lzLm5hKHRpdGFuaWNfcyRhZ2UpXT1tZWFuKHRpdGFuaWNfcyRhZ2UsbmEucm0gPSBUUlVFKQ0KdGl0YW5pY19zJHN1cnZpdmVkPWlmZWxzZSh0aXRhbmljX3Mkc3Vydml2ZWQ9PSJ5ZXMiLDEsMCkNCnRpdGFuaWNfcyRzZXg9YXMubnVtZXJpYyh0aXRhbmljX3Mkc2V4KQ0KdGl0YW5pY19zJHBhc3NlbmdlckNsYXNzPWFzLm51bWVyaWModGl0YW5pY19zJHBhc3NlbmdlckNsYXNzKQ0KaGVhZCh0aXRhbmljX3MpDQpgYGANCkFzIHNob3duIGluIHRoZSBhYm92ZSB0YWJsZSB0aGUgbWlzc2luZyB2YWx1ZXMgYW5kIG5vbi1udW1lcmljIHZhbHVlcyBoYXZlIGJlZW4gcmVzb2x2ZWQuDQoNCk5vdyB0byBiZXR0ZXIgdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGFuZCBpbmZsdWVuY2Ugb2YgZGlmZmVyZW50IHZhcmlhYmxlcyAsaGVyZSBhcmUgc29tZSBncmFwaGljYWwgcmVwcmVzZW50YXRpb24gYW1vbmcgZGlmZmVyZW50IHZhcmlhYmxlcy4NCmBgYHtyfQ0KI2RlbnNpdHkgcGxvdCBmb3Igc3Vydml2YWwgb2YgZGlmZmVyZW50IGFnZQ0KbGlicmFyeShnZ3Bsb3QyKQ0KZ3JfdGl0YW5pYz1UaXRhbmljU3Vydml2YWwNCmdyX3RpdGFuaWMkc3Vydml2ZWQ9ZmFjdG9yKGdyX3RpdGFuaWMkc3Vydml2ZWQpDQphPSBxcGxvdChhZ2UsZGF0YSA9IGdyX3RpdGFuaWMsZ2VvbSA9ICJkZW5zaXR5IixmaWxsPXN1cnZpdmVkLGFscGhhPUkoLjcpLG1haW4gPSAiZGlzdHJpYnV0aW9uIG9mIGFnZSIseGxhYiA9ICJBZ2UiLHlsYWIgPSAiZGVuc2l0eSIsbmEucm09VFJVRSkNCmErIHRoZW1lKGF4aXMudGl0bGUgPSBlbGVtZW50X3RleHQoZmFjZSA9ICJib2xkLml0YWxpYyIsc2l6ZSA9IDEwLGNvbG91ciA9ICJncmVlbiIpKQ0KDQpgYGANCkFib3ZlIGRpc3RyaWJ1dGlvbiBncmFwaCBzaG93cyB0aGUgc3Vydml2YWwgb2YgcGVvcGxlIG9mIGRpZmZlcmVudCBhZ2UgZ3JvdXAuDQpgYGB7cn0NCiNzdXJ2aXZhbCBzY2F0dGVycGxvdCBvZiBwZW9wbGUgb2YgZGlmZmVyZW50IGFnZSBncm91cCxzZXggYW5kIGNsYXNzDQpxcGxvdChhZ2UsYWdlLGRhdGE9Z3JfdGl0YW5pYyxzaGFwZT1zdXJ2aXZlZCxjb2xvcj1zdXJ2aXZlZCxmYWNldHMgPSBwYXNzZW5nZXJDbGFzc35zZXgsc2l6ZT1JKDIpLG1haW4gPSAic3Vydml2YWwgc2NhdHRlcnBsb3QiLG5hLnJtPVRSVUUpDQpgYGANCkFib3ZlIGdyYXBocyBzaG93cyB0aGUgbnVtYmVyIG9mIHBlb3BsZSBzdXJ2aXZlZCBvciBkaWVkIG9mIGRpZmZlcmVudCBhZ2Usc2V4IGFuZCBwYXNzZW5nZXJjbGFzcy4NCmBgYHtyfQ0KI2JveHBsb3QgDQpncl90aXRhbmljJGFnZVtpcy5uYShncl90aXRhbmljJGFnZSldPW1lYW4oZ3JfdGl0YW5pYyRhZ2UsbmEucm0gPSBUUlVFKQ0KZ2dwbG90KGdyX3RpdGFuaWMsYWVzKGFnZSxhZ2UsZmlsbD1wYXNzZW5nZXJDbGFzcyxuYS5ybT1UUlVFKSxuYS5ybT1UUlVFKStnZW9tX2JveHBsb3QoKSt0aGVtZShheGlzLnRpdGxlID0gZWxlbWVudF90ZXh0KGZhY2UgPSAiYm9sZC5pdGFsaWMiLHNpemUgPSAxMixjb2xvciA9ICJibHVlIikpDQpgYGANClRoZSBib3hwbG90IHJlcHJlc2VudHMgdGhlIGRpZmZlcmVudCBhZ2UgZ3JvdXAgcGVvcGxlIHdpdGggZGlmZmVyZW50IHBhc3NlbmdlcmNsYXNzLg0KDQpOb3cgbW92aW5nIG92ZXIgdG8gYW5hbHlzaXMgb2Ygb3VyIHRpdGFuaWMgZGF0YS4NCg0KMSlGaXJzdCB3ZSBoYXZlIHRvIHNwbGl0IHRoZSBkYXRhIGludG8gdHJhaW4gYW5kIHRlc3QgZGF0YS4NCg0KMilDcmVhdGluZyBhIG1vZGVsIG9yIGxvZ2lzdGljcyBlcXVhdGlvbiBmb3IgdGhlIHN1aXRpbmcgdGhlIGRhdGEsY29uc2lkZXJpbmcgc3Vydml2ZWQgYXMgYSBkZXBlbmRlbnQgdmFyaWFibGUgYW5kIHJlc3QgYXMgaW5kZXBlbmRlbnQgdmFyaWFibGUuDQpgYGB7cn0NCiNzcGxpdGluZyB0aGUgZGF0YSB1c2luZyBjYXRvb2xzIGxpYnJhcnkNCmxpYnJhcnkoY2FUb29scykNCnNwbGl0X3RpPXNhbXBsZS5zcGxpdCh0aXRhbmljX3MsU3BsaXRSYXRpbyA9IDAuOCkNCnRyYWluX3RpPXN1YnNldCh0aXRhbmljX3Msc3BsaXRfdGk9PSJUUlVFIikNCnRlc3RfdGk9c3Vic2V0KHRpdGFuaWNfcyxzcGxpdF90aT09IkZBTFNFIikNCiNjcmVhdGluZyBnbG0gbW9kZWwNCm1vZGVsX3RpPWdsbShzdXJ2aXZlZH4uLGRhdGEgPSB0cmFpbl90aSxmYW1pbHkgPSBiaW5vbWlhbChsaW5rID0gImxvZ2l0IikpDQpzdW1tYXJ5KG1vZGVsX3RpKQ0KYGBgDQpBcyBmcm9tIHRoZSBhYm92ZSB0YWJsZSx3ZSBjYW1lIHRvIGtub3cgdGhhdCBhY2NvcmRpbmcgdG8gcC12YWx1ZSBhbGwgdGhlIGluZGVwZW5kZW50IHZhcmlhYmxlcyBhcmUgc2lnbmlmaWNhbnQgYnV0IHNpbmNlIGluIGxvZ2lzdGljcyByZWdyZXNzaW9uIG5vdCBvbmx5IHAtdmFsdWUgaXMgY29uc2lkZXJlZCBidXQgYWxzbyB3ZSBoYXZlIHRvIHNlZSB0aGUgcmVzaWR1YWwgZXJyb3IgYW5kIEFJQy4gDQpgYGB7cn0NCiNjcmVhdGluZyBtb2RlbCB3aXRoIGRpZmZlcmVudCB2YXJpYWJsZXMgZm9yIHJlZHVjaW5nIHJlc2lkdWFsIGVycm9yIGFuZCBhY2N1cmFjeQ0KbW9kZWxfdGkxPWdsbShzdXJ2aXZlZH4uLXNleCxkYXRhID0gdHJhaW5fdGksZmFtaWx5ID0gYmlub21pYWwobGluayA9ICJsb2dpdCIpKQ0Kc3VtbWFyeShtb2RlbF90aTEpI3Rob3VnaCBleGNsdWRpbmcgc2V4IGxlZCB0byBpbmNyZWFzZSBpbiB0aGUgdmFsdWUgb2YgcmVzaWR1YWwgZXJyb3IgYW5kIEFJQyB3ZSBhcmUgbm90IG9taXRpbmcgaXQNCm1vZGVsX3RpMj1nbG0oc3Vydml2ZWR+Li1wYXNzZW5nZXJDbGFzcyxkYXRhID0gdHJhaW5fdGksZmFtaWx5ID0gImJpbm9taWFsIikNCnN1bW1hcnkobW9kZWxfdGkyKQ0KbW9kZWxfdGkzPWdsbShzdXJ2aXZlZH4uLWFnZSxkYXRhID0gdHJhaW5fdGksZmFtaWx5ID0gImJpbm9taWFsIikNCnN1bW1hcnkobW9kZWxfdGkzKQ0KDQpgYGANCkFmdGVyIGV4Y2x1ZGluZyBkaWZmZXJlbnQgdmFyaWFibGUgd2UgY2FtZSB0byB0aGUgcmVzdWx0IHRoYXQgbm9uZSBvZiB0aGUgdmFyaWFibGVzIGNhbiBiZSBpZ25vcmVkIGFzIGV4Y2x1ZGluZyB0aGVtIGxlZCB0byBpbmNyZWFzZSBpbiByZXNpZHVhbCBlcnJvciBhbmQgQUlDDQoNClNvIGJlc3QgZml0dGVkIG1vZGVsIGZvciB0aGlzIGRhdGEgaXMgIm1vZGVsX3RpIiBpbmNsdXNpdmUgb2YgYWxsIHRoZSBpbmRlcGVuZGVudCB2YXJpYWJsZXMuDQoNCk5vdyB3ZSBoYXZlIHRvIHByZWRpY3QgdGhlIHN1cnZpdmFsIHJhdGUgZm9yIHRoZSB0ZXN0IGRhdGEuDQpgYGB7cn0NCiNwcmVkaWN0aW5nIHRoZSBzdXJ2aXZhbCBwcm9iYWJsaXR5IG9mIHRlc3QgZGF0YQ0KcHJlZF90aT1wcmVkaWN0KG1vZGVsX3RpLHRlc3RfdGksdHlwZSA9ICJyZXNwb25zZSIpDQpoZWFkKHByZWRfdGkpDQpgYGANCkFib3ZlIGRhdGEgc2hvd3MgdGhlIHByb2JhYmxpdHkgb2Ygc3Vydml2YWwgb2YgcGVvcGxlIGluIHRlc3QgZGF0YS4NCmBgYHtyfQ0KI2NvbmZ1c2lvbiBtYXRyaXgNCnRhYmxlX3RpPXRhYmxlKGFjdHVhbHZhbHVlPXRlc3RfdGkkc3Vydml2ZWQscHJlZGljdGVkdmFsdWU9cHJlZF90aT4wLjUpDQp0YWJsZV90aQ0KYGBgDQpmcm9tIGFib3ZlIGNvbmZ1c2lvbiBtYXRyaXggc2hvd3MgdGhlIG51bWJlciBvZiB2YWx1ZXMgdHJ1ZWx5IHByZWRpY3RlZCBhbmQgZmFsc2VseSBwcmVkaWN0ZWQNCg0KQTExPVRSVUUgTkVHQVRJVkUgKHRydWVseSBwcmVkaWN0ZWQgYXMgIm5vdCBzdXJ2aXZlZCIgKQ0KDQpBMjI9VFJVRSBQT1NJVElWRSAodHJ1ZWx5IHByZWRpY3RlZCBhcyAic3Vydml2ZWQiKQ0KDQpBMTI9RkFMU0UgUE9TSVRJVkUgKGZhbHNlbHkgcHJlZGljdGVkIGFzICJzdXJ2aXZlZCIpDQoNCkEyMT1GQUxTRSBORUdBVElWRSAoZmFsc2VseSBwcmVkaWN0ZWQgYXMgIm5vdCBzdXJ2aXZlZCIpDQoNCk5vdyBiYXNlZCBvbiB0aGUgc2V0IHRocmVzaG9sZCB3ZSBoYXZlIHRvIGNoZWNrIGl0cyBhY2N1cmFjeSBhbmQgZmluZCB0aGUgYmVzdCB0aHJlc2hvbGQgdmFsdWUgZm9yIG1heCBhY2N1cmFjeS4NCmBgYHtyfQ0KI2RldGVybWluaW5nIGFjY3VyYWN5IG9mIHRoZSBwcmVkaWN0aW9uDQphY2M9KCgxODArODQpLygxODArODQrMzgrMjUpKQ0KYWNjDQojc2luY2UgYWNjdXJhY3kgaXMgODAlIHdlIGNhbiBpbmNyZWFzZSBpdCBieSBzZWxlY3Rpbmcgb3B0aW1hbCB0aHJlc2hvbGQNCmxpYnJhcnkoUk9DUikNCnJvY3JfdGk9cHJlZGljdGlvbihwcmVkX3RpLHRlc3RfdGkkc3Vydml2ZWQpDQpyb2NyX3RpX3Blcj1wZXJmb3JtYW5jZShyb2NyX3RpLCJhY2MiKQ0Kcm9jcl90aV9wZXIxPXBlcmZvcm1hbmNlKHJvY3JfdGksInRwciIsImZwciIpDQpwbG90KHJvY3JfdGlfcGVyKQ0KcGxvdChyb2NyX3RpX3BlcjEsY29sb3JpemU9VFJVRSkNCg0KYGBgDQpmcm9tIHRoZSBhYm92ZSBjaGFydCB3ZSBjYW4gc2F5IHRoYXQgdGhyZXNob2xkIG11c3QgYiBpbiBiZXR3ZWVuIDAuNXRvMC42DQosU28gYWdhaW4gbWFraW5nIHRhYmxlIGJ5IHNldHRpbmcgdGhyZXNob2xkIGluIGJldHdlZW4gMC41dG8wLjYNCmBgYHtyfQ0KdGFibGVfdGkxPXRhYmxlKGFjdHVhbHZhbHVlPXRlc3RfdGkkc3Vydml2ZWQscHJlZGljdGVkdmFsdWU9cHJlZF90aT4wLjUxKQ0KdGFibGVfdGkxDQphY2N1cmFjeV90aTE9KCgxODErODQpLygxODErODQrMjQrMzkpKQ0KYWNjdXJhY3lfdGkxDQpwbG90KHRhYmxlX3RpMSxjb2w9YygicmVkIiwiZ3JlZW4iKSkNCmBgYA0KMSlBYm92ZSBzaG93biBpcyB0aGUgY29uZnVzaW9uIG1hdHJpeCB3aXRoIG9wdGltYWwgdGhyZXNob2xkIHZhbHVlIGFuZCBhY2N1cmFjeSBjb3JyZXNwb25kaW5nIHRvIGl0DQpIZW5jZSBmb3IgdGhyZXNob2xkIDAuNTEgd2UgZ2V0IHRoZSBtYXhpbXVtIGFjY3VyYWN5IGFzIDgwLjglLg0KDQoyKVRoZSBncmFwaCByZXByZXNlbnRzIHRoZSB0YWJsZSBpbiB0aGUgZ3JhcGhpY2FsIHZpZXcgc2hvd2luZyBncmVlbihwcmVkaWN0ZWQgYXMgInN1cnZpdmVkIikgYW5kIHJlZChwcmVkaWN0ZWQgYXMgImRpZWQiKQ0KDQpgYGB7cn0NCmxpYnJhcnkoZ3JpZEV4dHJhKQ0KZzE9Z2dwbG90KHRyYWluX3RpLGFlcyh4PXBhc3NlbmdlckNsYXNzLHk9c3Vydml2ZWQpKStnZW9tX3BvaW50KCkrc3RhdF9zbW9vdGgobWV0aG9kID0gImdsbSIsbWV0aG9kLmFyZ3MgPSBsaXN0KGZhbWlseT0iYmlub21pYWwiKSxzZT1UUlVFKSt0aGVtZShheGlzLnRpdGxlID0gZWxlbWVudF90ZXh0KGZhY2UgPSAiYm9sZC5pdGFsaWMiLHNpemUgPSAxMixjb2xvciA9ICJibHVlIikpDQpnMj1nZ3Bsb3QodHJhaW5fdGksYWVzKHg9YWdlLHk9c3Vydml2ZWQpKStnZW9tX3BvaW50KCkrc3RhdF9zbW9vdGgobWV0aG9kID0gImdsbSIsbWV0aG9kLmFyZ3MgPSBsaXN0KGZhbWlseT0iYmlub21pYWwiKSxzZT1UUlVFKSt0aGVtZShheGlzLnRpdGxlID0gZWxlbWVudF90ZXh0KGZhY2UgPSAiYm9sZC5pdGFsaWMiLHNpemUgPSAxMixjb2xvciA9ICJicm93biIpKQ0KDQpncmlkLmFycmFuZ2UoZzEsZzIsbnJvdz0xKQ0KDQpgYGANCkFib3ZlIGdyYXBoIHNob3dzIHRoYXQtDQoNCjEpUGVvcGxlIG9uIGhpZ2ggY2xhc3MgYXJlIGhhdmluZyBsZXNzIGNoYW5jZSBvZiBkeWluZyB0aGFuIGxvdyBwYXNzZW5nZXJjbGFzcy4NCg0KMilBbHNvIHRoZSBhZ2UgaGFzIGxlc3MgYWZmZWN0IG9uIHRoZSBzdXJ2aXZhbCByYXRlIG9mIHRoZSBwZW9wbGUuDQoNCkhlbmNlIHdlIHRoZSBwcmVkaWN0IHRoZSB0ZXN0IGRhdGEgd2l0aCA4MC44JSBhY2N1cmFjeQ0KDQo=