Introduction
This project is about the ratings of hotels in India. It is the study of dependence of many variables like hotel facilities, different site ratings, points of nearby location, the demographics of hotels etc. on the star rating of hotels.
It is a pre-crawled dataset, taken as subset of a bigger dataset (more than 33344 hotels) that was created by extracting data from goibibo.com, a leading travel site from India.
The detailed analysis with code can be found here.
This is the study the hotel_star_rating and site_review_rating as dependent variables to investigate the impact of guest_recommendation, hotel facilities, poi, reviews on site etc. as independent variables on dependent variables.
Columns Explanation
guest_recommendation - How many guests that stayed here have recommended this hotels to others on the site
hotel_category - Either regular or go/stay
hotel_star_rating - The out-of-five star rating of this hotel
image_count - The number of images provided with the listing poperty_type - The type of property. Usually a hotel
room_count - Number of rooms
site_review_count - The number of reviews for this hotel left on the site by users
site_review_rating - The overall rating for this hotel by users
poi - (Number of) nearby locations of interest
Facilities in hotel (yes/no)
internet - Availability of Internet
room_service - Availability of Room Service
pool - Availability of Pool
gym - Availability of Gym/Spa restaurant - Availability of Restaurant
doc - Availability of Doctor tour - Availability of Outside tour
AC - Availability of AC in room
Number of reviews on site
rev_positive - Number of positive reviews
rev_critical - Number of critical reviews
rev_images - Number of reviews with images
Reviews on hotel by different categories(1-5)
service_quality - The quality of service
amenities - The level of comfort
food_drinks - The quality of food/ drinks
value_money - The comparison of price of hotel and amenities with experience of user
location - The attributes of location
cleanliness - The amount of cleanliness
Analysis
Preliminary work
- We have the data of 4000 hotels out of which we choose 1978 hotels with no missing data.
- Most of the hotels have room service and internet but very few have gym or pool.
- Most of the hotels are regular but gostays have higher star and site ratings.
- Hotels, resorts and palaces have higher star ratings. Also, bungalow, tent and beach hut have higher site ratings.
- Availability of pool, gym and restaurant have a very high effect on star ratings and site ratings.
Visualization
- Most hotels have either 0 or 3 star ratings with a mean of 1.973. They have site rating around 4 with a mean of 3.807.
- There is a positive linear dependence of guest recommendation with site ratings but no significant relation with star ratings.
- There is a positive linear dependence of site review count, room count, image count and point of interest with star ratings but slight relation with site ratings.
- There are more positive reviews(45.5) than critical reviews(8.3).
- Higher site rated hotels have less critical reviews but high positive reviews and reviews with images.
- All site ratings by category have similar values and are positively related to each other.
Correlations
- site ratings for different category and site review rating are highly positively correlated to each other(> 0.75).
- site_review_count, positive reviews, critical reviews and reviews with images are highly correlated to each other(> 0.70).
- hotel star rating is slightly correlated with its site rating (0.21).
- guest recommendation is highly correlated to site review rating (0.54).
- other variables are slightly positively correlated to each other.
- by \(\chi^{2}\) tests we could see that hotel star ratings depends very highly on pool, gym and restaurant.
Hypothesis H1-H4: The average site review ratings of hotels with availability of room service, doctor, tour and AC respectively are higher than hotels with non-availability of these facilities
H1 and H3 have p-value >0.05. Thus we could not reject the null hypothesis. H2 and H4 have p-value >0.05. Thus we could reject the null hypothesis and accept the alternative hypotheses.
Model Selection
We selected the best fit model to reperesent hotel star ratings w.r.t. other variables.
hotel_star_rating ~ image_count + room_count + poi + rev_positive + service_quality + amenities + value_money + location
Call:
lm(formula = model2, data = num_fill)
Residuals:
Min 1Q Median 3Q Max
-5.2218 -1.2668 0.2744 1.0552 3.7486
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.2187715 0.1663037 1.315 0.18850
image_count 0.0251043 0.0023882 10.512 < 2e-16 ***
room_count 0.0006800 0.0002304 2.951 0.00321 **
poi 0.0174416 0.0039420 4.425 1.02e-05 ***
rev_positive 0.0030391 0.0003683 8.252 2.82e-16 ***
service_quality 0.2511091 0.1397814 1.796 0.07258 .
amenities 0.8102837 0.1535247 5.278 1.45e-07 ***
value_money -0.9687292 0.1467228 -6.602 5.19e-11 ***
location 0.1947483 0.0943291 2.065 0.03910 *
---
Signif. codes: 0 â***â 0.001 â**â 0.01 â*â 0.05 â.â 0.1 â â 1
Residual standard error: 1.375 on 1969 degrees of freedom
Multiple R-squared: 0.1871, Adjusted R-squared: 0.1838
F-statistic: 56.65 on 8 and 1969 DF, p-value: < 2.2e-16
Here are the coefficients plot

We see that location, amenities, service_quality has high positive coefficients and value_money has high negative coefficient.
Results & Conclusion
We saw that hotel ratings increases with increase in guest recommendation as more recommendation means more users like it and have given it higher ratings on site.
Gostays hotels and large hotels in the shape of resorts, palace and bungalows have higher ratings as these have more space and are more attractive. More site review count, image count and have higher ratings as it has more publicity. More room count has more ratings as it can accomodate more people thus more publicity. From regression we see that points of interest has a strong dependence on star ratings. (p-value<0.05). It is because more places increases the worth of hotels to stay in. Positive reviews increases the ratings while critical reviews slightly decreases it.
From our hypotheses testing we found that availability of pool, gym and restaurants at hotels have higher ratings because these are somewhat less available and more rare for low star hotels. Other facilities like internet, room service, doctor on call, AC, tours are more easily available at any star hotels.
From regression service quality, amenities, location increases the ratings while value money decreases it. This could be because service quality, amenities and location factor are accessible by anyone and more value means better overall service. Whereas increase in money value is although good but expensive which could means less people could afford it so it has negative impact on hotel star ratings.
\[EndOfFile\]
LS0tDQp0aXRsZTogIkFuYWx5c2lzIG9mIFJhdGluZ3Mgb2YgSW5kaWFuIEhvdGVscyINCmF1dGhvcjogIkhpbWFuc2h1IER3aXZlZGkiDQpkYXRlOiAiMDIgSmFudWFyeSAyMDE4Ig0Kb3V0cHV0OiBodG1sX25vdGVib29rDQplbWFpbDogaGltYW5kd2l2ZWRpQGdtYWlsLmNvbQ0KY29sbGVnZTogSUlUIEthbnB1cg0KLS0tDQoNCiMjSW50cm9kdWN0aW9uDQoNClRoaXMgcHJvamVjdCBpcyBhYm91dCB0aGUgcmF0aW5ncyBvZiBob3RlbHMgaW4gSW5kaWEuIEl0IGlzIHRoZSBzdHVkeSBvZiBkZXBlbmRlbmNlIG9mIG1hbnkgdmFyaWFibGVzIGxpa2UgaG90ZWwgZmFjaWxpdGllcywgZGlmZmVyZW50IHNpdGUgcmF0aW5ncywgcG9pbnRzIG9mIG5lYXJieSBsb2NhdGlvbiwgdGhlIGRlbW9ncmFwaGljcyBvZiBob3RlbHMgZXRjLiBvbiB0aGUgc3RhciByYXRpbmcgb2YgaG90ZWxzLiAgDQpJdCBpcyBhIHByZS1jcmF3bGVkIFtkYXRhc2V0XShodHRwczovL3d3dy5rYWdnbGUuY29tL1Byb21wdENsb3VkSFEvaG90ZWxzLW9uLWdvaWJpYm8pLCB0YWtlbiBhcyBzdWJzZXQgb2YgYSBiaWdnZXIgZGF0YXNldCAobW9yZSB0aGFuIDMzMzQ0IGhvdGVscykgdGhhdCB3YXMgY3JlYXRlZCBieSBleHRyYWN0aW5nIGRhdGEgZnJvbSBnb2liaWJvLmNvbSwgYSBsZWFkaW5nIHRyYXZlbCBzaXRlIGZyb20gSW5kaWEuICANClRoZSBkZXRhaWxlZCBhbmFseXNpcyB3aXRoIGNvZGUgY2FuIGJlIGZvdW5kIFtoZXJlXShodHRwczovL3d3dy5ycHVicy5jb20vaGltYW5kd2l2ZWRpL3Byb2plY3RfaG90ZWwpLiAgDQpUaGlzIGlzIHRoZSBzdHVkeSB0aGUgaG90ZWxfc3Rhcl9yYXRpbmcgYW5kIHNpdGVfcmV2aWV3X3JhdGluZyBhcyBkZXBlbmRlbnQgdmFyaWFibGVzIHRvIGludmVzdGlnYXRlIHRoZSBpbXBhY3Qgb2YgZ3Vlc3RfcmVjb21tZW5kYXRpb24sIGhvdGVsIGZhY2lsaXRpZXMsIHBvaSwgcmV2aWV3cyBvbiBzaXRlIGV0Yy4gYXMgaW5kZXBlbmRlbnQgdmFyaWFibGVzIG9uIGRlcGVuZGVudCB2YXJpYWJsZXMuDQoNCiMjI0NvbHVtbnMgRXhwbGFuYXRpb24NCg0KZ3Vlc3RfcmVjb21tZW5kYXRpb24gLSBIb3cgbWFueSBndWVzdHMgdGhhdCBzdGF5ZWQgaGVyZSBoYXZlIHJlY29tbWVuZGVkIHRoaXMgaG90ZWxzIHRvIG90aGVycyBvbiB0aGUgc2l0ZSAgDQpob3RlbF9jYXRlZ29yeSAgICAgICAtIEVpdGhlciByZWd1bGFyIG9yIGdvL3N0YXkgIA0KaG90ZWxfc3Rhcl9yYXRpbmcgICAgLSBUaGUgb3V0LW9mLWZpdmUgc3RhciByYXRpbmcgb2YgdGhpcyBob3RlbCAgDQppbWFnZV9jb3VudCAgICAgICAgICAtIFRoZSBudW1iZXIgb2YgaW1hZ2VzIHByb3ZpZGVkIHdpdGggdGhlIGxpc3RpbmcNCnBvcGVydHlfdHlwZSAgICAgICAgIC0gVGhlIHR5cGUgb2YgcHJvcGVydHkuIFVzdWFsbHkgYSBob3RlbCAgDQpyb29tX2NvdW50ICAgICAgICAgICAtIE51bWJlciBvZiByb29tcyAgDQpzaXRlX3Jldmlld19jb3VudCAgICAtIFRoZSBudW1iZXIgb2YgcmV2aWV3cyBmb3IgdGhpcyBob3RlbCBsZWZ0IG9uIHRoZSBzaXRlIGJ5IHVzZXJzICANCnNpdGVfcmV2aWV3X3JhdGluZyAgIC0gVGhlIG92ZXJhbGwgcmF0aW5nIGZvciB0aGlzIGhvdGVsIGJ5IHVzZXJzICANCnBvaSAgICAgICAgICAgICAgICAgIC0gKE51bWJlciBvZikgbmVhcmJ5IGxvY2F0aW9ucyBvZiBpbnRlcmVzdCAgDQoNCiMjIyNGYWNpbGl0aWVzIGluIGhvdGVsICh5ZXMvbm8pDQoNCmludGVybmV0ICAgICAgICAgICAgIC0gQXZhaWxhYmlsaXR5IG9mIEludGVybmV0ICANCnJvb21fc2VydmljZSAgICAgICAgIC0gQXZhaWxhYmlsaXR5IG9mIFJvb20gU2VydmljZSAgDQpwb29sICAgICAgICAgICAgICAgICAtIEF2YWlsYWJpbGl0eSBvZiBQb29sICANCmd5bSAgICAgICAgICAgICAgICAgIC0gQXZhaWxhYmlsaXR5IG9mIEd5bS9TcGEgDQpyZXN0YXVyYW50ICAgICAgICAgICAtIEF2YWlsYWJpbGl0eSBvZiBSZXN0YXVyYW50ICANCmRvYyAgICAgICAgICAgICAgICAgIC0gQXZhaWxhYmlsaXR5IG9mIERvY3RvciANCnRvdXIgICAgICAgICAgICAgICAgIC0gQXZhaWxhYmlsaXR5IG9mIE91dHNpZGUgdG91ciAgDQpBQyAgICAgICAgICAgICAgICAgICAtIEF2YWlsYWJpbGl0eSBvZiBBQyBpbiByb29tICANCg0KIyMjI051bWJlciBvZiByZXZpZXdzIG9uIHNpdGUNCg0KcmV2X3Bvc2l0aXZlICAgICAgICAgLSBOdW1iZXIgb2YgcG9zaXRpdmUgcmV2aWV3cyAgDQpyZXZfY3JpdGljYWwgICAgICAgICAtIE51bWJlciBvZiBjcml0aWNhbCByZXZpZXdzICANCnJldl9pbWFnZXMgICAgICAgICAgIC0gTnVtYmVyIG9mIHJldmlld3Mgd2l0aCBpbWFnZXMgIA0KDQojIyMjUmV2aWV3cyBvbiBob3RlbCBieSBkaWZmZXJlbnQgY2F0ZWdvcmllcygxLTUpDQoNCnNlcnZpY2VfcXVhbGl0eSAgICAgIC0gVGhlIHF1YWxpdHkgb2Ygc2VydmljZSAgDQphbWVuaXRpZXMgICAgICAgICAgICAtIFRoZSBsZXZlbCBvZiBjb21mb3J0ICANCmZvb2RfZHJpbmtzICAgICAgICAgIC0gVGhlIHF1YWxpdHkgb2YgZm9vZC8gZHJpbmtzICANCnZhbHVlX21vbmV5ICAgICAgICAgIC0gVGhlIGNvbXBhcmlzb24gb2YgcHJpY2Ugb2YgaG90ZWwgYW5kIGFtZW5pdGllcyB3aXRoIGV4cGVyaWVuY2Ugb2YgdXNlciAgDQpsb2NhdGlvbiAgICAgICAgICAgICAtIFRoZSBhdHRyaWJ1dGVzIG9mIGxvY2F0aW9uICANCmNsZWFubGluZXNzICAgICAgICAgIC0gVGhlIGFtb3VudCBvZiBjbGVhbmxpbmVzcyAgDQoNCiMjQW5hbHlzaXMNCg0KIyMjUHJlbGltaW5hcnkgd29yaw0KDQoqIFdlIGhhdmUgdGhlIGRhdGEgb2YgNDAwMCBob3RlbHMgb3V0IG9mIHdoaWNoIHdlIGNob29zZSAxOTc4IGhvdGVscyB3aXRoIG5vIG1pc3NpbmcgZGF0YS4NCiogTW9zdCBvZiB0aGUgaG90ZWxzIGhhdmUgcm9vbSBzZXJ2aWNlIGFuZCBpbnRlcm5ldCBidXQgdmVyeSBmZXcgaGF2ZSBneW0gb3IgcG9vbC4NCiogTW9zdCBvZiB0aGUgaG90ZWxzIGFyZSByZWd1bGFyIGJ1dCBnb3N0YXlzIGhhdmUgaGlnaGVyIHN0YXIgYW5kIHNpdGUgcmF0aW5ncy4NCiogSG90ZWxzLCByZXNvcnRzIGFuZCBwYWxhY2VzIGhhdmUgaGlnaGVyIHN0YXIgcmF0aW5ncy4gQWxzbywgYnVuZ2Fsb3csIHRlbnQgYW5kIGJlYWNoIGh1dCBoYXZlIGhpZ2hlciBzaXRlIHJhdGluZ3MuDQoqIEF2YWlsYWJpbGl0eSBvZiBwb29sLCBneW0gYW5kIHJlc3RhdXJhbnQgaGF2ZSBhIHZlcnkgaGlnaCBlZmZlY3Qgb24gc3RhciByYXRpbmdzIGFuZCBzaXRlIHJhdGluZ3MuDQoNCiMjI1Zpc3VhbGl6YXRpb24NCg0KKiBNb3N0IGhvdGVscyBoYXZlIGVpdGhlciAwIG9yIDMgc3RhciByYXRpbmdzIHdpdGggYSBtZWFuIG9mIDEuOTczLiBUaGV5IGhhdmUgc2l0ZSByYXRpbmcgYXJvdW5kIDQgd2l0aCBhIG1lYW4gb2YgMy44MDcuDQoqIFRoZXJlIGlzIGEgcG9zaXRpdmUgbGluZWFyIGRlcGVuZGVuY2Ugb2YgZ3Vlc3QgcmVjb21tZW5kYXRpb24gd2l0aCBzaXRlIHJhdGluZ3MgYnV0IG5vIHNpZ25pZmljYW50IHJlbGF0aW9uIHdpdGggc3RhciByYXRpbmdzLg0KKiBUaGVyZSBpcyBhIHBvc2l0aXZlIGxpbmVhciBkZXBlbmRlbmNlIG9mIHNpdGUgcmV2aWV3IGNvdW50LCByb29tIGNvdW50LCBpbWFnZSBjb3VudCBhbmQgcG9pbnQgb2YgaW50ZXJlc3Qgd2l0aCBzdGFyIHJhdGluZ3MgYnV0IHNsaWdodCByZWxhdGlvbiB3aXRoIHNpdGUgcmF0aW5ncy4NCiogVGhlcmUgYXJlIG1vcmUgcG9zaXRpdmUgcmV2aWV3cyg0NS41KSB0aGFuIGNyaXRpY2FsIHJldmlld3MoOC4zKS4NCiogSGlnaGVyIHNpdGUgcmF0ZWQgaG90ZWxzIGhhdmUgbGVzcyBjcml0aWNhbCByZXZpZXdzIGJ1dCBoaWdoIHBvc2l0aXZlIHJldmlld3MgYW5kIHJldmlld3Mgd2l0aCBpbWFnZXMuDQoqIEFsbCBzaXRlIHJhdGluZ3MgYnkgY2F0ZWdvcnkgaGF2ZSBzaW1pbGFyIHZhbHVlcyBhbmQgYXJlIHBvc2l0aXZlbHkgcmVsYXRlZCB0byBlYWNoIG90aGVyLg0KDQojIyNDb3JyZWxhdGlvbnMNCg0KKiBzaXRlIHJhdGluZ3MgZm9yIGRpZmZlcmVudCBjYXRlZ29yeSBhbmQgc2l0ZSByZXZpZXcgcmF0aW5nIGFyZSBoaWdobHkgcG9zaXRpdmVseSBjb3JyZWxhdGVkIHRvIGVhY2ggb3RoZXIoPiAwLjc1KS4NCiogc2l0ZV9yZXZpZXdfY291bnQsIHBvc2l0aXZlIHJldmlld3MsIGNyaXRpY2FsIHJldmlld3MgYW5kIHJldmlld3Mgd2l0aCBpbWFnZXMgYXJlIGhpZ2hseSBjb3JyZWxhdGVkIHRvIGVhY2ggb3RoZXIoPiAwLjcwKS4NCiogaG90ZWwgc3RhciByYXRpbmcgaXMgc2xpZ2h0bHkgY29ycmVsYXRlZCB3aXRoIGl0cyBzaXRlIHJhdGluZyAoMC4yMSkuDQoqIGd1ZXN0IHJlY29tbWVuZGF0aW9uIGlzIGhpZ2hseSBjb3JyZWxhdGVkIHRvIHNpdGUgcmV2aWV3IHJhdGluZyAoMC41NCkuDQoqIG90aGVyIHZhcmlhYmxlcyBhcmUgc2xpZ2h0bHkgcG9zaXRpdmVseSBjb3JyZWxhdGVkIHRvIGVhY2ggb3RoZXIuDQoqIGJ5ICRcY2hpXnsyfSQgdGVzdHMgd2UgY291bGQgc2VlIHRoYXQgaG90ZWwgc3RhciByYXRpbmdzIGRlcGVuZHMgdmVyeSBoaWdobHkgb24gcG9vbCwgZ3ltIGFuZCByZXN0YXVyYW50Lg0KDQoqKkh5cG90aGVzaXMgSDEtSDQ6KiogKlRoZSBhdmVyYWdlIHNpdGUgcmV2aWV3IHJhdGluZ3Mgb2YgaG90ZWxzIHdpdGggYXZhaWxhYmlsaXR5IG9mIHJvb20gc2VydmljZSwgZG9jdG9yLCB0b3VyIGFuZCBBQyByZXNwZWN0aXZlbHkgYXJlIGhpZ2hlciB0aGFuIGhvdGVscyB3aXRoIG5vbi1hdmFpbGFiaWxpdHkgb2YgdGhlc2UgZmFjaWxpdGllcyAqDQoNCkgxIGFuZCBIMyBoYXZlIHAtdmFsdWUgPjAuMDUuIFRodXMgd2UgY291bGQgbm90IHJlamVjdCB0aGUgbnVsbCBoeXBvdGhlc2lzLg0KSDIgYW5kIEg0IGhhdmUgcC12YWx1ZSA+MC4wNS4gVGh1cyB3ZSBjb3VsZCByZWplY3QgdGhlIG51bGwgaHlwb3RoZXNpcyBhbmQgYWNjZXB0IHRoZSBhbHRlcm5hdGl2ZSBoeXBvdGhlc2VzLg0KDQojIyNNb2RlbCBTZWxlY3Rpb24NCg0KV2Ugc2VsZWN0ZWQgdGhlIGJlc3QgZml0IG1vZGVsIHRvIHJlcGVyZXNlbnQgaG90ZWwgc3RhciByYXRpbmdzIHcuci50LiBvdGhlciB2YXJpYWJsZXMuDQoNCmhvdGVsX3N0YXJfcmF0aW5nIH4gaW1hZ2VfY291bnQgKyByb29tX2NvdW50ICsgcG9pICsgcmV2X3Bvc2l0aXZlICsgc2VydmljZV9xdWFsaXR5ICsgYW1lbml0aWVzICsgdmFsdWVfbW9uZXkgKyBsb2NhdGlvbg0KDQpgYGB7ciBpbmNsdWRlPUZBTFNFfQ0KbG9hZCgiQzovVXNlcnMvSGltYW5zaHUvRGVza3RvcC9Ib3RlbC9Qcm9qZWN0X0hvdGVsLlJEYXRhIikNCmF0dGFjaChmaWxsKQ0KYGBgDQoNCmBgYHtyIGVjaG89RkFMU0V9DQptb2RlbDIgPSBob3RlbF9zdGFyX3JhdGluZ35pbWFnZV9jb3VudCtyb29tX2NvdW50K3BvaStyZXZfcG9zaXRpdmUrc2VydmljZV9xdWFsaXR5K2FtZW5pdGllcyt2YWx1ZV9tb25leStsb2NhdGlvbg0KZml0MiA9IGxtKG1vZGVsMiwgZGF0YSA9IG51bV9maWxsKQ0Kc3VtbWFyeShmaXQyKQ0KYGBgDQoNCkhlcmUgYXJlIHRoZSBjb2VmZmljaWVudHMgcGxvdA0KDQpgYGB7ciBlY2hvPUZBTFNFLHdhcm5pbmc9RkFMU0V9DQpjb2VmcGxvdChmaXQyLCBpbnRlcmNlcHQ9IEZBTFNFLCBvdXRlckNJPTEuOTYsY29lZmZpY2llbnRzPWMoImltYWdlX2NvdW50Iiwicm9vbV9jb3VudCIsInBvaSIsInJldl9wb3NpdGl2ZSIsInNlcnZpY2VfcXVhbGl0eSIsImFtZW5pdGllcyIsInZhbHVlX21vbmV5IiwibG9jYXRpb24iKSkNCmBgYA0KDQpXZSBzZWUgdGhhdCBsb2NhdGlvbiwgYW1lbml0aWVzLCBzZXJ2aWNlX3F1YWxpdHkgaGFzIGhpZ2ggcG9zaXRpdmUgY29lZmZpY2llbnRzIGFuZCB2YWx1ZV9tb25leSBoYXMgaGlnaCBuZWdhdGl2ZSBjb2VmZmljaWVudC4NCg0KIyNSZXN1bHRzICYgQ29uY2x1c2lvbg0KDQpXZSBzYXcgdGhhdCBob3RlbCByYXRpbmdzIGluY3JlYXNlcyB3aXRoIGluY3JlYXNlIGluIGd1ZXN0IHJlY29tbWVuZGF0aW9uIGFzIG1vcmUgcmVjb21tZW5kYXRpb24gbWVhbnMgbW9yZSB1c2VycyBsaWtlIGl0IGFuZCBoYXZlIGdpdmVuIGl0IGhpZ2hlciByYXRpbmdzIG9uIHNpdGUuICANCkdvc3RheXMgaG90ZWxzIGFuZCBsYXJnZSBob3RlbHMgaW4gdGhlIHNoYXBlIG9mIHJlc29ydHMsIHBhbGFjZSBhbmQgYnVuZ2Fsb3dzIGhhdmUgaGlnaGVyIHJhdGluZ3MgYXMgdGhlc2UgaGF2ZSBtb3JlIHNwYWNlIGFuZCBhcmUgbW9yZSBhdHRyYWN0aXZlLg0KTW9yZSBzaXRlIHJldmlldyBjb3VudCwgaW1hZ2UgY291bnQgYW5kIGhhdmUgaGlnaGVyIHJhdGluZ3MgYXMgaXQgaGFzIG1vcmUgcHVibGljaXR5Lg0KTW9yZSByb29tIGNvdW50IGhhcyBtb3JlIHJhdGluZ3MgYXMgaXQgY2FuIGFjY29tb2RhdGUgbW9yZSBwZW9wbGUgdGh1cyBtb3JlIHB1YmxpY2l0eS4NCkZyb20gcmVncmVzc2lvbiB3ZSBzZWUgdGhhdCBwb2ludHMgb2YgaW50ZXJlc3QgaGFzIGEgc3Ryb25nIGRlcGVuZGVuY2Ugb24gc3RhciByYXRpbmdzLiAocC12YWx1ZTwwLjA1KS4gSXQgaXMgYmVjYXVzZSBtb3JlIHBsYWNlcyBpbmNyZWFzZXMgdGhlIHdvcnRoIG9mIGhvdGVscyB0byBzdGF5IGluLg0KUG9zaXRpdmUgcmV2aWV3cyBpbmNyZWFzZXMgdGhlIHJhdGluZ3Mgd2hpbGUgY3JpdGljYWwgcmV2aWV3cyBzbGlnaHRseSBkZWNyZWFzZXMgaXQuICANCkZyb20gb3VyIGh5cG90aGVzZXMgdGVzdGluZyB3ZSBmb3VuZCB0aGF0IGF2YWlsYWJpbGl0eSBvZiBwb29sLCBneW0gYW5kIHJlc3RhdXJhbnRzIGF0IGhvdGVscyBoYXZlIGhpZ2hlciByYXRpbmdzIGJlY2F1c2UgdGhlc2UgYXJlIHNvbWV3aGF0IGxlc3MgYXZhaWxhYmxlIGFuZCBtb3JlIHJhcmUgZm9yIGxvdyBzdGFyIGhvdGVscy4gT3RoZXIgZmFjaWxpdGllcyBsaWtlIGludGVybmV0LCByb29tIHNlcnZpY2UsIGRvY3RvciBvbiBjYWxsLCBBQywgdG91cnMgYXJlIG1vcmUgZWFzaWx5IGF2YWlsYWJsZSBhdCBhbnkgc3RhciBob3RlbHMuICAgDQpGcm9tIHJlZ3Jlc3Npb24gc2VydmljZSBxdWFsaXR5LCBhbWVuaXRpZXMsIGxvY2F0aW9uIGluY3JlYXNlcyB0aGUgcmF0aW5ncyB3aGlsZSB2YWx1ZSBtb25leSBkZWNyZWFzZXMgaXQuIFRoaXMgY291bGQgYmUgYmVjYXVzZSBzZXJ2aWNlIHF1YWxpdHksIGFtZW5pdGllcyBhbmQgbG9jYXRpb24gZmFjdG9yIGFyZSBhY2Nlc3NpYmxlIGJ5IGFueW9uZSBhbmQgbW9yZSB2YWx1ZSBtZWFucyBiZXR0ZXIgb3ZlcmFsbCBzZXJ2aWNlLiBXaGVyZWFzIGluY3JlYXNlIGluIG1vbmV5IHZhbHVlIGlzIGFsdGhvdWdoIGdvb2QgYnV0IGV4cGVuc2l2ZSB3aGljaCBjb3VsZCBtZWFucyBsZXNzIHBlb3BsZSBjb3VsZCBhZmZvcmQgaXQgc28gaXQgaGFzIG5lZ2F0aXZlIGltcGFjdCBvbiBob3RlbCBzdGFyIHJhdGluZ3MuDQoNCiQkRW5kT2ZGaWxlJCQ=