Done as a part of class project, with data taken from a local source describing incoming and outgoing flights from Santa Monica Airport .
Impact of Columbus Day on flight frequency over Santa Monica Airport
The scope of the analysis is to see if there are any quantifiable differences before/after Columbus day (Monday, October 12th, 2015) - an oft cited milestone for recent changes in noise. These changes are thought to be related to the implementation of the NextGen program by the FAA.
Data Pre-processing:
Used the flight data from csv files for March 22 and November 15, 2015, and removed null values.
The mentioned dates have been chosen to observe the impact of Columbus day on flight frequency.
Private plane and no code flight data removed.
Some redundant values for latitude, longitude and altitude combinations have been removed .
The data is separated into day and night time observations, where day is 6:30AM to 12AM, and night is 12AM to 6:30AM.
library(ggplot2)
library(dplyr)
library(plotly)
#df1d_22<-read.csv("./RTL150322_day.csv",header = TRUE)
#df1d_15<-read.csv("./RTL151115_day.csv",header = TRUE)
#df1n_22<-read.csv("./RTL150322_night.csv",header = TRUE)
#df1n_15<-read.csv("./RTL151115_night.csv",header = TRUE)
SMO <- data.frame(label = 'SMO', lon=-118.456667, lat=34.010167)
smo <- c(SMO$lon, SMO$lat)
1. Overall Trend
From the below map plots we can see the different flights flowing in and out of Santa Monica Airport (SMO), during day and night time.
On the map: 22 March 15 Novemeber
Day time - 6:30AM to 12:00AM
(Mouse over the map to see latitude and longitude points. )

Night time - 12:00AM to 6:30AM

2 : Altitude of different flights over a point during day
Chosen Point : latitude = 34.03602, longitude= -118
It can be seen that on 15 Novemeber, 6 different flights were flying at different altitudes over the chosen point on map, represented as a fluctuating line graph moving from 4675 to 10375 as the highest altitude.
For the same point, on 22 March, a single flight was observed.

3 : Number of different flights during the day
15 different flights were seen between 19:00:00 -20:00:00 hours.

10 different flights were seen between 19:00:00 -20:00:00 hours.

4 : Average Altitude Descent for flight A57D52
Date : 22 March 2015, 06:30AM to 12AM
Between 08:37 to 08:45 the altitude of the flight descended from 10725 to 4050.
The observations have been grouped and averaged over every minute.

Date : 15 November 2015, 6:30AM to 12:00AM
The flight has two occurences on the same day.
Between 09:04 to 09:12 the altitude of the flight descended from 10801 to 4155, which is nearly similar to 22 March descent.
Between 23:29 to 23:35 the altitude of the flight descended from 10685 to 4800, whereas, there was no occurrence of this flight on 22 March around this time.
The observations have been grouped and averaged over every minute.

Conclusion:
From the overall trends, it can be observed that, more number of flights fly during the day time as compared to night time before and after the Columbus day.
The flight altitude is observed to be higher over the point with latitude = 34.08 and longitude = 118 , after Columbus Day.
10 different flights were seen between 19:00:00 -20:00:00 hours, which is less than the number of flights at the same time on Novemeber 15, a probable impact of Columbus day.
Flight A57D52 was observed to fly once on 22March, whereas it appeared twice in the 24 hour schedule on November 15. Surprisingly, both the chosen days are Sundays. This is a clear indicator of the change of flight pattern after Columbus Day on domestic flights from Santa Monica Airport.
Site created and maintained by Ankita Aggarwal| USC | ankitaa@ usc.edu
LS0tDQp0aXRsZTogIkRhdGEgV3JhbmdsaW5nIHdpdGggUiINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQo8YnI+DQpEb25lIGFzIGEgcGFydCBvZiBjbGFzcyBwcm9qZWN0LCB3aXRoIGRhdGEgdGFrZW4gZnJvbSBhIGxvY2FsIHNvdXJjZSBkZXNjcmliaW5nIDxzdHJvbmc+IGluY29taW5nIGFuZCBvdXRnb2luZyBmbGlnaHRzIGZyb20gU2FudGEgTW9uaWNhIEFpcnBvcnQgPC9zdHJvbmc+Lg0KDQojIyBJbXBhY3Qgb2YgQ29sdW1idXMgRGF5IG9uIGZsaWdodCBmcmVxdWVuY3kgb3ZlciBTYW50YSBNb25pY2EgQWlycG9ydA0KDQpUaGUgc2NvcGUgb2YgdGhlIGFuYWx5c2lzIGlzIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHF1YW50aWZpYWJsZSBkaWZmZXJlbmNlcyBiZWZvcmUvYWZ0ZXIgQ29sdW1idXMgZGF5IChNb25kYXksIE9jdG9iZXIgMTJ0aCwgMjAxNSkgLSBhbiBvZnQgY2l0ZWQgbWlsZXN0b25lIGZvciByZWNlbnQgY2hhbmdlcyBpbiBub2lzZS4gVGhlc2UgY2hhbmdlcyBhcmUgdGhvdWdodCB0byBiZSByZWxhdGVkIHRvIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTmV4dEdlbiBwcm9ncmFtIGJ5IHRoZSBGQUEuDQoNCjxoND48c3Ryb25nPkRhdGEgUHJlLXByb2Nlc3Npbmc6PC9zdHJvbmc+PC9oND4NCjxsaT5Vc2VkIHRoZSBmbGlnaHQgZGF0YSBmcm9tIGNzdiBmaWxlcyBmb3IgTWFyY2ggMjIgYW5kIE5vdmVtYmVyIDE1LCAyMDE1LCBhbmQgcmVtb3ZlZCBudWxsIHZhbHVlcy4gPC9saT4NCjxsaT4gVGhlIG1lbnRpb25lZCBkYXRlcyBoYXZlIGJlZW4gY2hvc2VuIHRvIG9ic2VydmUgdGhlIGltcGFjdCBvZiBDb2x1bWJ1cyBkYXkgb24gZmxpZ2h0IGZyZXF1ZW5jeS4gPC9saT4NCjxsaT4gUHJpdmF0ZSBwbGFuZSBhbmQgbm8gY29kZSBmbGlnaHQgZGF0YSByZW1vdmVkLjwvbGk+DQo8bGk+IFNvbWUgcmVkdW5kYW50IHZhbHVlcyBmb3IgbGF0aXR1ZGUsIGxvbmdpdHVkZSBhbmQgYWx0aXR1ZGUgY29tYmluYXRpb25zIGhhdmUgYmVlbiByZW1vdmVkIC48L2xpPg0KPGxpPiBUaGUgZGF0YSBpcyBzZXBhcmF0ZWQgaW50byBkYXkgYW5kIG5pZ2h0IHRpbWUgb2JzZXJ2YXRpb25zLCB3aGVyZSBkYXkgaXMgNjozMEFNIHRvIDEyQU0sIGFuZCBuaWdodCBpcyAxMkFNIHRvIDY6MzBBTS4gPC9saT4NCg0KYGBge3J9DQpsaWJyYXJ5KGdncGxvdDIpDQpsaWJyYXJ5KGRwbHlyKQ0KbGlicmFyeShwbG90bHkpDQpkZjFkXzIyPC1yZWFkLmNzdigiLi9SVEwxNTAzMjJfZGF5LmNzdiIsaGVhZGVyID0gVFJVRSkNCmRmMWRfMTU8LXJlYWQuY3N2KCIuL1JUTDE1MTExNV9kYXkuY3N2IixoZWFkZXIgPSBUUlVFKQ0KZGYxbl8yMjwtcmVhZC5jc3YoIi4vUlRMMTUwMzIyX25pZ2h0LmNzdiIsaGVhZGVyID0gVFJVRSkNCmRmMW5fMTU8LXJlYWQuY3N2KCIuL1JUTDE1MTExNV9uaWdodC5jc3YiLGhlYWRlciA9IFRSVUUpDQpTTU8gPC0gZGF0YS5mcmFtZShsYWJlbCA9ICdTTU8nLCBsb249LTExOC40NTY2NjcsIGxhdD0zNC4wMTAxNjcpDQpzbW8gPC0gYyhTTU8kbG9uLCBTTU8kbGF0KQ0KDQpgYGANCg0KIyMgMS4gT3ZlcmFsbCBUcmVuZA0KDQpGcm9tIHRoZSBiZWxvdyBtYXAgcGxvdHMgd2UgY2FuIHNlZSB0aGUgZGlmZmVyZW50IGZsaWdodHMgZmxvd2luZyBpbiBhbmQgb3V0IG9mIFNhbnRhIE1vbmljYSBBaXJwb3J0IChTTU8pLCBkdXJpbmcgZGF5IGFuZCBuaWdodCB0aW1lLg0KDQpPbiB0aGUgbWFwOiA8c3BhbiBzdHlsZT0iY29sb3I6Ymx1ZSI+MjIgTWFyY2ggPC9zcGFuPg0KPHNwYW4gc3R5bGU9ImNvbG9yOmdyZWVuIj4xNSBOb3ZlbWViZXI8L3NwYW4+DQoNCjxjZW50ZXI+DQo8aDQ+IERheSB0aW1lIC0gNjozMEFNIHRvIDEyOjAwQU0gPC9oND4NCigqKk1vdXNlIG92ZXIgdGhlIG1hcCB0byBzZWUgbGF0aXR1ZGUgYW5kIGxvbmdpdHVkZSBwb2ludHMuICoqKQ0KDQpgYGB7ciB3YXJuaW5nPUZBTFNFLG1lc3NhZ2U9RkFMU0UsZXJyb3I9RkFMU0UsIGVjaG89RkFMU0V9DQoNCm1hcC5nb29nbGUgPC0gZ2V0X21hcChzbW8sIHpvb20gPSAxMiwgc2NhbGU9MSkgICMgZ2V0IG1hcCBhcm91bmQgU01PDQpnZ21hcChtYXAuZ29vZ2xlKSArDQogIGdlb21fcG9pbnQoZGF0YSA9IFNNTywgYWVzKHggPSBsb24sIHkgPSBsYXQpLCBjb2xvcj0icmVkIiwgc2l6ZT0xMCwgYWxwaGE9LjUpICsNCiAgDQogIGdlb21fcG9pbnQoZGF0YSA9IGRmMWRfMjIsIA0KICAgICAgICAgICAgIHNpemU9MSwgYWxwaGE9LjUsY29sb3VyID0gImJsdWUiLA0KICAgICAgICAgICAgIGFlcyh4ID0gbG9uLCB5ID0gbGF0LGNvbG91ciA9ICJibHVlIiwgdGV4dCA9IHBhc3RlKCJBaXJsaW5lOiIsIGZsaWdodCwgIjxicj5jb2RlOiIsIGNvZGUsICI8YnI+dGltZXN0YW1wOiIsIHRpbWVzdGFtcCwgIjxicj5hbHQ6IiwgYWx0KSkpICsNCiAgDQogIGdlb21fcG9pbnQoZGF0YSA9IGRmMWRfMTUsIA0KICAgICAgICAgICAgIHNpemU9MSwgYWxwaGE9LjA1LGNvbG91ciA9ICJncmVlbiIsDQogICAgICAgICAgICAgYWVzKHggPSBsb24sIHkgPSBsYXQsY29sb3VyID0gImdyZWVuIiwgdGV4dCA9IHBhc3RlKCJBaXJsaW5lOiIsIGZsaWdodCwgIjxicj5jb2RlOiIsIGNvZGUsICI8YnI+dGltZXN0YW1wOiIsIHRpbWVzdGFtcCwgIjxicj5hbHQ6IiwgYWx0KSkpICsNCiAgdGhlbWUobGVnZW5kLmJveC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KCksIGxlZ2VuZC5wb3NpdGlvbiA9ICJsZWZ0IiwgbGVnZW5kLmtleSA9IGVsZW1lbnRfcmVjdChmaWxsID0gIndoaXRlIiwgY29sb3VyID0gImJsYWNrIikpKw0KICBnZ3RpdGxlKCJPdmVyYWxsIFRyZW5kIC0gZGF5IGZsaWdodHMgb24gMDMvMTUgYW5kIDExLzIyIikNCg0KZ2dwbG90bHkoKQ0KYGBgDQoNCjxoND4gTmlnaHQgdGltZSAtIDEyOjAwQU0gdG8gNjozMEFNIDwvaDQ+DQoNCmBgYHtyIGVjaG89RkFMU0Usd2FybmluZz1GQUxTRSxtZXNzYWdlPUZBTFNFLGVycm9yPUZBTFNFfQ0KbWFwLmdvb2dsZSA8LSBnZXRfbWFwKHNtbywgem9vbSA9IDEyLCBzY2FsZSA9IDEpIA0KZ2dtYXAobWFwLmdvb2dsZSkgKw0KICBnZW9tX3BvaW50KGRhdGEgPSBTTU8sIGFlcyh4ID0gbG9uLCB5ID0gbGF0KSwgY29sb3I9InJlZCIsIHNpemU9MTAsIGFscGhhPS41KSArDQogIA0KICBnZW9tX3BvaW50KGRhdGEgPSBkZjFuXzIyLCANCiAgICAgICAgICAgICBzaXplPTEsIGFscGhhPS41LGNvbG91ciA9ICJibHVlIiwNCiAgICAgICAgICAgICBhZXMoeCA9IGxvbiwgeSA9IGxhdCxjb2xvdXIgPSAiYmx1ZSIsIHRleHQgPSBwYXN0ZSgiQWlybGluZToiLCBmbGlnaHQsICI8YnI+Y29kZToiLCBjb2RlLCAiPGJyPnRpbWVzdGFtcDoiLCB0aW1lc3RhbXAsICI8YnI+YWx0OiIsIGFsdCkpKSArDQogIA0KICBnZW9tX3BvaW50KGRhdGEgPSBkZjFuXzE1LCANCiAgICAgICAgICAgICBzaXplPTEsIGFscGhhPS4wOCxjb2xvdXIgPSAiZ3JlZW4iLA0KICAgICAgICAgICAgIGFlcyh4ID0gbG9uLCB5ID0gbGF0LCB0ZXh0ID0gcGFzdGUoIkFpcmxpbmU6IiwgZmxpZ2h0LCAiPGJyPmNvZGU6IiwgY29kZSwgIjxicj50aW1lc3RhbXA6IiwgdGltZXN0YW1wLCAiPGJyPmFsdDoiLCBhbHQpKSkgKw0KICB0aGVtZShsZWdlbmQuYm94LmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoKSwgbGVnZW5kLnBvc2l0aW9uID0gImxlZnQiLCBsZWdlbmQua2V5ID0gZWxlbWVudF9yZWN0KGZpbGwgPSAid2hpdGUiLCBjb2xvdXIgPSAiYmxhY2siKSkrDQogIGdndGl0bGUoIk92ZXJhbGwgdHJlbmQgLSBuaWdodCBmbGlnaHRzIG9uIDAzLzE1IGFuZCAxMS8yMiIpDQoNCmdncGxvdGx5KCkNCmBgYA0KPC9jZW50ZXI+DQojIyAyIDogQWx0aXR1ZGUgb2YgZGlmZmVyZW50IGZsaWdodHMgb3ZlciBhIHBvaW50IGR1cmluZyBkYXkNCjxicj4NCjxsaT48c3Ryb25nPiBDaG9zZW4gUG9pbnQgOiBsYXRpdHVkZSA9IDM0LjAzNjAyLCBsb25naXR1ZGU9IC0xMTggPC9zdHJvbmc+PC9saT4NCg0KPGxpPiBJdCBjYW4gYmUgc2VlbiB0aGF0IG9uIDxzcGFuIHN0eWxlPSJjb2xvcjpyZWQiPjE1IE5vdmVtZWJlcjwvc3Bhbj4sIDxpPjxzdHJvbmc+NiBkaWZmZXJlbnQgZmxpZ2h0cyB3ZXJlIGZseWluZyBhdCBkaWZmZXJlbnQgYWx0aXR1ZGVzIG92ZXIgdGhlIGNob3NlbiBwb2ludCBvbiBtYXAsPC9zdHJvbmc+PC9pPiByZXByZXNlbnRlZCBhcyBhIGZsdWN0dWF0aW5nIGxpbmUgZ3JhcGggbW92aW5nIGZyb20gNDY3NSB0byAxMDM3NSBhcyB0aGUgaGlnaGVzdCBhbHRpdHVkZS4gPC9saT4gDQoNCjxsaT4gRm9yIHRoZSBzYW1lIHBvaW50LCBvbiA8c3BhbiBzdHlsZT0iY29sb3I6Ymx1ZSI+MjIgTWFyY2g8L3NwYW4+LCBhIHNpbmdsZSBmbGlnaHQgd2FzIG9ic2VydmVkLiA8L2xpPg0KDQoNCmBgYHtyIGVjaG89IEZBTFNFLHdhcm5pbmc9RkFMU0UsbWVzc2FnZT1GQUxTRSxlcnJvcj1GQUxTRX0NCg0KDQpkZmRfbjEgPC0gZGYxZF8xNSAlPiUgZmlsdGVyKGxhdD09IDM0LjAzNjAyLCBsb248PSAtMTE4KQ0KZGZkX24yIDwtIGRmMWRfMjIgJT4lIGZpbHRlcihsYXQ9PSAzNC4wMzYwMikNCg0KDQphbHQxPC0gZGZkX24xWzhdDQphbHQyPC0gZGZkX24yWzhdDQoNCmdncGxvdChkZmRfbjEsIGFlcyh0aW1lc3RhbXApKSArDQogZ2VvbV9saW5lKGFlcyh5ID0gYWx0MSwgY29sb3VyID0gImFsdDEiKSkgKw0KIGdlb21fbGluZShhZXMoeSA9IGFsdDIsIGNvbG91ciA9ICJhbHQyIikpICsNCmxhYnModGl0bGU9IkFsdGl0dWRlIG9mIGRpZmZlcmVudCBmbGlnaHRzIGR1cmluZyBkYXkgdGltZSBvdmVyIGxhdGl0dWRlID0gMzQuMDMiICwgc3VidGl0bGUgPSJhbHQxID0gMTUtTm92LCBhbHQyID0gMjItTWFyIikNCg0KDQpgYGANCiMjIDMgOiBOdW1iZXIgb2YgZGlmZmVyZW50IGZsaWdodHMgZHVyaW5nIHRoZSBkYXkNCg0KICoqMTUqKiAqZGlmZmVyZW50IGZsaWdodHMgd2VyZSBzZWVuIGJldHdlZW4gMTk6MDA6MDAgLTIwOjAwOjAwIGhvdXJzLioNCg0KPGNlbnRlcj4NCmBgYHtyIGVjaG89RkFMU0V9DQpsaWJyYXJ5KHJlYWRyKQ0KbGlicmFyeShkcGx5cikNCmxpYnJhcnkobHVicmlkYXRlKQ0KDQoNCmRmMWRfYWFhPC0gZGYxZF8xNSAlPiUgDQogIG11dGF0ZShob3VyX29mX2RheSA9IGhvdXIoYXMuUE9TSVhjdChzdHJwdGltZSh0aW1lc3RhbXAsICIlWS0lbS0lZCAlSDolTTolUyIpKSkpICU+JSANCiAgZ3JvdXBfYnkoaG91cl9vZl9kYXkpICU+JSANCiAgc3VtbWFyaXNlKGNvdW50RmxpZ2h0cyA9IG5fZGlzdGluY3QoY29kZSkpDQoNCmdncGxvdChkZjFkX2FhYSwgYWVzKGhvdXJfb2ZfZGF5LCBjb3VudEZsaWdodHMsIGNvbG91ciA9ImJsdWUiKSkgKyBnZW9tX2NvbChmaWxsID0gImJsdWUiKSArIGxhYnModGl0bGU9Ik51bWJlciBvZiBGbGlnaHRzIG9uIDE1LU5vdiBiZXR3ZWVuIDZBTSB0byAxMkFNIikNCg0KDQpgYGANCjwvY2VudGVyPg0KDQoqKjEwKiogKmRpZmZlcmVudCBmbGlnaHRzIHdlcmUgc2VlbiBiZXR3ZWVuIDE5OjAwOjAwIC0yMDowMDowMCBob3Vycy4qDQo8Y2VudGVyPg0KYGBge3IgZWNobz1GQUxTRX0NCmRmMWRfMmE8LSBkZjFkXzIyICU+JSANCiAgbXV0YXRlKGhvdXJfb2ZfZGF5ID0gaG91cihhcy5QT1NJWGN0KHN0cnB0aW1lKHRpbWVzdGFtcCwgIiVZLSVtLSVkICVIOiVNOiVTIikpKSkgJT4lIA0KICBncm91cF9ieShob3VyX29mX2RheSkgJT4lIA0KICBzdW1tYXJpc2UoY291bnRGbGlnaHRzID0gbl9kaXN0aW5jdChjb2RlKSkNCg0KZ2dwbG90KGRmMWRfMmEsIGFlcyhob3VyX29mX2RheSwgY291bnRGbGlnaHRzLCBjb2xvdXIgPSJncmVlbiIpKSArIGdlb21fY29sKGZpbGwgPSAiZ3JlZW4iKSArIGxhYnModGl0bGU9Ik51bWJlciBvZiBGbGlnaHRzIG9uIDIyLU1hcmNoIGJldHdlZW4gNkFNIHRvIDEyQU0iKQ0KYGBgDQo8L2NlbnRlcj4NCg0KIyMgNCA6IEF2ZXJhZ2UgQWx0aXR1ZGUgRGVzY2VudCBmb3IgZmxpZ2h0IEE1N0Q1MiANCg0KPHN0cm9uZz4gRGF0ZSA6IDIyIE1hcmNoIDIwMTUsIDA2OjMwQU0gdG8gMTJBTSA8L3N0cm9uZz4NCg0KPGxpPiBCZXR3ZWVuIDA4OjM3IHRvIDA4OjQ1IHRoZSBhbHRpdHVkZSBvZiB0aGUgZmxpZ2h0IGRlc2NlbmRlZCBmcm9tIDEwNzI1IHRvIDQwNTAuIDwvbGk+DQo8bGk+IFRoZSBvYnNlcnZhdGlvbnMgaGF2ZSBiZWVuIGdyb3VwZWQgYW5kIGF2ZXJhZ2VkIG92ZXIgZXZlcnkgbWludXRlLiA8L2xpPg0KDQo8Y2VudGVyPg0KYGBge3IgZWNobz1GQUxTRX0NCmRmeDwtIGRmMWRfMjIgJT4lIGZpbHRlcihjb2RlPT0iQTU3RDUyIikNCmRmMWRfMmE8LSBkZnggJT4lIG11dGF0ZShpbnRlcnZhbCA9IGZsb29yX2RhdGUodGltZXN0YW1wLCB1bml0PSJob3VyIikgK21pbnV0ZXMoZmxvb3IobWludXRlKHRpbWVzdGFtcCkvMSkqMSkpICU+JSANCiAgZ3JvdXBfYnkoaW50ZXJ2YWwpICU+JSANCiAgc3VtbWFyaXNlKGF2Z0FsdCA9IG1lYW4oYWx0KSkNCg0KbGlicmFyeShnZ3RoZW1lcykNCnA8LSBnZ3Bsb3QoZGYxZF8yYSwgYWVzKGludGVydmFsLCBhdmdBbHQpKSArDQogIGdlb21fcG9pbnQoY29sb3VyID0ib3JhbmdlIikNCnAgKyB0aGVtZV9idygpICsgZ2d0aXRsZSgiQXZlcmFnZSBhbHRpdHVkZSBkZXNjZW50IGdyb3VwZWQgYnkgbWludXRlIiwgc3VidGl0bGU9IiBmbGlnaHQgQTU3RDUyIG9uIDIyIE1hcmNoIGJldHdlZW4gODozN0FNIHRvIDg6NDVBTSIpDQoNCmBgYA0KPC9jZW50ZXI+DQoNCjxzdHJvbmc+IERhdGUgOiAxNSBOb3ZlbWJlciAyMDE1LCA2OjMwQU0gdG8gMTI6MDBBTSA8L3N0cm9uZz4NCjxsaT4gVGhlIGZsaWdodCBoYXMgdHdvIG9jY3VyZW5jZXMgb24gdGhlIHNhbWUgZGF5LiA8L2xpPg0KPGxpPkJldHdlZW4gMDk6MDQgdG8gMDk6MTIgdGhlIGFsdGl0dWRlIG9mIHRoZSBmbGlnaHQgZGVzY2VuZGVkIGZyb20gMTA4MDEgdG8gNDE1NSwgd2hpY2ggaXMgbmVhcmx5IHNpbWlsYXIgdG8gMjIgTWFyY2ggZGVzY2VudC4gIDwvbGk+DQo8bGk+QmV0d2VlbiAyMzoyOSB0byAyMzozNSB0aGUgYWx0aXR1ZGUgb2YgdGhlIGZsaWdodCBkZXNjZW5kZWQgZnJvbSAxMDY4NSB0byA0ODAwLCB3aGVyZWFzLCB0aGVyZSB3YXMgbm8gb2NjdXJyZW5jZSBvZiB0aGlzIGZsaWdodCBvbiAyMiBNYXJjaCBhcm91bmQgdGhpcyB0aW1lLiAgPC9saT4NCjxsaT4gVGhlIG9ic2VydmF0aW9ucyBoYXZlIGJlZW4gZ3JvdXBlZCBhbmQgYXZlcmFnZWQgb3ZlciBldmVyeSBtaW51dGUuIDwvbGk+DQoNCjxjZW50ZXI+DQpgYGB7ciBlY2hvPUZBTFNFfQ0KZGZ4PC0gZGYxZF8xNSAlPiUgZmlsdGVyKGNvZGU9PSJBNTdENTIiKQ0KZGYxZF8yYTwtIGRmeCAlPiUgbXV0YXRlKGludGVydmFsID0gZmxvb3JfZGF0ZSh0aW1lc3RhbXAsIHVuaXQ9ImhvdXIiKSArbWludXRlcyhmbG9vcihtaW51dGUodGltZXN0YW1wKS8xKSoxKSkgJT4lIA0KICBncm91cF9ieShpbnRlcnZhbCkgJT4lIA0KICBzdW1tYXJpc2UoYXZnQWx0ID0gbWVhbihhbHQpKQ0KDQpsaWJyYXJ5KGdndGhlbWVzKQ0KcDwtIGdncGxvdChkZjFkXzJhLCBhZXMoaW50ZXJ2YWwsIGF2Z0FsdCkpICsNCiAgZ2VvbV9wb2ludChjb2xvdXIgPSJvcmFuZ2UiKQ0KcCArIHRoZW1lX2J3KCkgKyBnZ3RpdGxlKCJBdmVyYWdlIGFsdGl0dWRlIGRlc2NlbnQgZ3JvdXBlZCBieSBtaW51dGUgIiwgc3VidGl0bGU9ImZsaWdodCA8c3Ryb25nPkE1N0Q1Mjwvc3Ryb25nPiBvbiAxNSBOb3ZlbWViZXIgYmV0d2VlbiA5OjA0IEFNIHRvIDk6MTJBTSBhbmQgMjM6MjlQTSB0byAyMzozNVBNIikNCmBgYA0KDQo8L2NlbnRlcj4NCg0KIyMgQ29uY2x1c2lvbjoNCg0KMS4gRnJvbSB0aGUgb3ZlcmFsbCB0cmVuZHMsIGl0IGNhbiBiZSBvYnNlcnZlZCB0aGF0LCA8c3Ryb25nPm1vcmUgbnVtYmVyIG9mIGZsaWdodHMgZmx5IGR1cmluZyB0aGUgZGF5IHRpbWUgYXMgY29tcGFyZWQgdG8gbmlnaHQgdGltZSBiZWZvcmUgYW5kIGFmdGVyIHRoZSBDb2x1bWJ1cyBkYXkuIDwvc3Ryb25nPg0KDQoyLiBUaGUgZmxpZ2h0IDxzdHJvbmc+YWx0aXR1ZGUgPC9zdHJvbmc+aXMgb2JzZXJ2ZWQgdG8gYmUgPHN0cm9uZz5oaWdoZXIgb3ZlciB0aGUgcG9pbnQgPC9zdHJvbmc+d2l0aCBsYXRpdHVkZSA9IDM0LjA4IGFuZCBsb25naXR1ZGUgPSAxMTggLCBhZnRlciBDb2x1bWJ1cyBEYXkuDQoNCjMuIDxzdHJvbmc+MTAgZGlmZmVyZW50IGZsaWdodHM8L3N0cm9uZz4gd2VyZSBzZWVuIGJldHdlZW4gMTk6MDA6MDAgLTIwOjAwOjAwIGhvdXJzLCB3aGljaCBpcyA8c3Ryb25nPmxlc3MgdGhhbiB0aGUgbnVtYmVyIG9mIGZsaWdodHMgYXQgdGhlIHNhbWUgdGltZSBvbiBOb3ZlbWViZXIgMTU8L3N0cm9uZz4sIGEgcHJvYmFibGUgaW1wYWN0IG9mIENvbHVtYnVzIGRheS4NCg0KNC4gRmxpZ2h0IDxzdHJvbmc+QTU3RDUyPC9zdHJvbmc+IHdhcyBvYnNlcnZlZCB0byBmbHkgb25jZSBvbiAyMk1hcmNoLCB3aGVyZWFzIGl0IDxzdHJvbmc+YXBwZWFyZWQgdHdpY2UgaW4gdGhlIDI0IGhvdXIgc2NoZWR1bGUgb24gTm92ZW1iZXIgMTU8L3N0cm9uZz4uIFN1cnByaXNpbmdseSwgYm90aCB0aGUgY2hvc2VuIGRheXMgYXJlIDxzdHJvbmc+U3VuZGF5czwvc3Ryb25nPi4gVGhpcyBpcyBhIGNsZWFyIGluZGljYXRvciBvZiB0aGUgY2hhbmdlIG9mIGZsaWdodCBwYXR0ZXJuIGFmdGVyIENvbHVtYnVzIERheSBvbiBkb21lc3RpYyBmbGlnaHRzIGZyb20gU2FudGEgTW9uaWNhIEFpcnBvcnQuDQo8YnI+DQo8YnI+DQoNCg0KICAgICAgICAgICAgDQo8c3BhbiBzdHlsZT0iZm9udC1zaXplOjcwJSI+PGNlbnRlcj5TaXRlIGNyZWF0ZWQgYW5kIG1haW50YWluZWQgYnkgQW5raXRhIEFnZ2Fyd2FsfCBVU0MgfCBhbmtpdGFhQCB1c2MuZWR1IDwvY2VudGVyPjwvc3Bhbj4NCjxicj4NCjxicj4NCg0KDQoNCg0K