1 Binomial Distribution

1.1 Question

  1. What is a binomial distribution in Statistics?
  2. What is binomial distribution used for?
  3. Please argue 4 requirements needed to be a binomial distribution?
  4. Is a binomial distribution a normal distribution?
  5. Suppose there are twenty multiple choice questions in an Statistics class quiz. Each question has five possible answers, and only one of them is correct. Find the probability of having four or less correct answers if a student attempts to answer every question at random (Explain this exercise by using R).

1.2 Answer

1.The binomial distribution is a discrete probability distribution. It describes the outcome of n independent trials in an experiment. Each trial is assumed to have only two outcomes, either “success” or “failure”.

2.This distribution is often used to model the number of successes in the number of samples n from the total population of N.

3.~The experiment consists of n identical trials. ~Each trial results in one of the two outcomes, called success and failure. ~The probability of success, denoted p, remains the same from trial to trial. ~The n trials are independent. That is, the outcome of any trial does not affect the outcome of the others.

4.A binomial distribution is very different from a normal distribution, and yet if the sample size is large enough, the shapes will be quite similar.The key difference is that a binomial distribution is discrete, not continuous. In other words, it is not possible to find a data value between any two data values.The normal distribution is a continuous distribution that arises in many natural processes. “Continuous” means that between any two data values we could (at least in theory) find another data value.

dbinom(x = 5, size = 20, prob = 0.2)
## [1] 0.1745595

2 Poisson Distribution

library(dplyr) library(ggplot2) library(scales) ## Question

  1. What is a Poisson distribution in Statistics?
  2. When and Why is Poisson distribution used?
  3. What is the difference between Binomial distribution and Poisson distribution?
  4. If twenty cars are crossing a bridge per minute on average, visualize and find the probability of having thirteen or more cars crossing the bridge in a particular minute (Explain this exercise by using R).
  5. Suppose the probability that a drug produces a certain side effect is \(p = 0.1%\) and \(n = 1,000\) patients in a clinical trial receive the drug. What is the probability 0 people experience the side effect by using visualization techniques? (Explain this exercise by using R)

2.1 Answer

  1. The Poisson distribution is the discrete probability distribution of independent event occurrences in an interval.

  2. Poisson distribution expresses the probability of a given number of events occurring in a fixed interval of time or space if these events occur with a known constant mean rate and independently of the time since the last event.The Poisson distribution can also be used for the number of events in other specified intervals such as distance, area or volume.

  3. Condition to apply Poisson Distribution: ~The probability of more than one occurrence in the small interval is negligible (i.e. they are rare events). ~Every event must be at random and independent from others. ~The probability of the event taking place is proportional to the size of the interval for a small interval. ~Events are often failures, injuries, or extreme natural occurrences, such as Earthquakes where there is no theoretical upper limit of the number of incidents.

Conditions to apply Binomial Distribution: ~The number of observations n is fixed. ~Each observation is independent. ~Each observation represents one of two outcomes (“success” or “failure”). ~The probability of “success” p is the same for each outcome.

ppois(13, 20, lower.tail = FALSE)
## [1] 0.9338724
ppois(1, 0.1, lower.tail = FALSE)
## [1] 0.00467884

3 Uniform Distribution (Continuous or Discrete)

3.1 Question

  1. How do you find the continuous uniform distribution?
  2. Is the uniform distribution discrete or continuous?
  3. What does it mean to have a uniform distribution?
  4. How do you solve uniform distribution problems using R?

3.2 Answer

  1. Continious uniform distribution is a continuous distribution, this means that it takes values within a specified range, like between 0 and 1.

  2. Uniform distribution can be a discrete and continious.

  3. Equal probability is needed in all outcomes.

  4. We apply the generation function runif of the uniform distribution, EXAMPLE: Select one hundred random numbers between one and three.

rand.unif <- runif(100, min=1, max=5)  
rand.unif
##   [1] 4.551830 3.039447 4.489863 2.736648 3.067194 3.184929 3.096254 1.210800
##   [9] 1.543073 2.377385 4.759156 3.240182 3.742632 1.343668 4.250692 1.614251
##  [17] 2.861298 3.681598 1.685703 3.371738 4.769937 1.718381 3.778615 2.014807
##  [25] 3.793615 1.670166 2.430274 3.460869 1.762356 1.383872 2.478480 4.525571
##  [33] 4.974964 1.088550 2.752910 2.761194 1.533711 1.683846 4.846062 1.958685
##  [41] 2.267648 4.285059 4.896468 3.697093 2.262891 3.089332 4.140702 4.393605
##  [49] 3.623482 4.220449 1.623285 4.127437 3.797060 4.151963 4.372748 4.257567
##  [57] 1.501522 4.994090 4.733721 4.805337 1.196099 4.291626 3.928125 4.828620
##  [65] 1.953570 4.511141 4.287884 3.932583 3.555852 2.159554 3.644092 3.761043
##  [73] 4.592241 2.410963 3.253696 3.726983 1.804516 2.940644 2.573420 4.561513
##  [81] 4.512053 1.932532 1.540129 1.525010 4.549646 1.000884 3.123945 4.044722
##  [89] 4.504830 3.411770 4.558829 2.257134 4.498540 4.608054 2.387682 1.085323
##  [97] 4.767784 1.356449 4.257992 4.272247

4 Exponential Distribution

4.1 Question

  1. What is exponential distribution example?
  2. What is the exponential distribution used for?
  3. What is exponential distribution rate?
  4. Is exponential distribution discrete or continuous?
  5. Suppose the mean checkout time of a supermarket cashier is three minutes. Find the probability of a customer checkout being completed by the cashier in less than two minutes (Explain this exercise by using R).

4.2 Answer

  1. The exponential distribution describes the arrival time of a randomly recurring independent event sequence, ,like a time, and length of a voice call between 2 people.

  2. The exponential distribution is widely used in the field of reliability. Reliability deals with the amount of time a product lasts.

  3. Exponential distribution rate is are all rates (λ) of the unit of time, which is the parameter of the Poisson distribution. One thing that would save you from the confusion later about X ~ Exp(0.25) is to remember that 0.25 is not a time duration, but it is an event rate, which is the same as the parameter λ in a Poisson process.

  4. Exponential distribution is a continuous probability distribution.

5.The checkout processing rate is equals to one divided by the mean checkout completion time. Hence the processing rate is 1/3 checkouts per minute. We then apply the function pexp of the exponential distribution with rate=1/3.

pexp(2, rate=1/3) 
## [1] 0.4865829

5 Normal Distribution

5.1 Question

  1. What is a normal distribution and Standard Normal Distrubution in Statistics?
  2. Why is it called normal distribution?
  3. How do you calculate normal distribution?
  4. What are the characteristics of a normal distribution?
  5. The annual salaries of employees in a large company are approximately normally distributed with a mean of $50,000 and a standard deviation of $20,000 (Explain this exercise by using R).
  • What percent of people earn less than $40,000?
  • What percent of people earn between $45,000 and $65,000?
  • What percent of people earn more than $70,000?

5.2 Answer

1.In statistics, the standard deviation is a measure of the amount of variation or dispersion of a set of values. A low standard deviation indicates that the values tend to be close to the mean (also called the expected value) of the set, while a high standard deviation indicates that the values are spread out over a wider range.The normal distribution is defined by the following probability density function, where μ is the population mean and σ square is the variance.

The standard normal distribution is a normal distribution with a mean of zero and standard deviation of 1. The standard normal distribution is centered at zero and the degree to which a given measurement deviates from the mean is given by the standard deviation.

2.because the normal distribution has mean (mean) equal to 0 and standard deviation equal to 1 which is represented as a bell-shaped curve.

3.Normal distribution can be found by dividing 1 by the σ.√2πe, then multiplying that value e^-1/2 . (x - μ / σ) squared.

4.~Bell-shaped curve (μ = Md = Mo) ~Curves are symmetrical ~The curve peaks at X = μ ~The area under the curve is 1; ½ on the right side of the middle value and ½ on the left. ~The graph is always on the x-axis

pnorm(0, lower.tail = FALSE) - pnorm(39, lower.tail = FALSE)
## [1] 0.5
pnorm(45, mean = 50, sd = 20, lower.tail = FALSE) - pnorm(65, mean = 50, sd = 20, lower.tail = FALSE)
## [1] 0.372079
pnorm(70, mean = 50, sd = 20, lower.tail = TRUE) - pnorm(50, mean = 50, sd = 20, lower.tail = TRUE)
## [1] 0.3413447

6 Chi-squared Distribution

6.1 Question

  1. What is the chi square distribution used for?
  2. What is the chi square distribution formula?
  3. What is the chi distribution?
  4. Is Chi square distribution continuous?
  5. 256 visual artists were surveyed to find out their zodiac sign. The results were: Aries (29), Taurus (24), Gemini (22), Cancer (19), Leo (21), Virgo (18), Libra (19), Scorpio (20), Sagittarius (23), Capricorn (18), Aquarius (20), Pisces (23). Test the hypothesis that zodiac signs are evenly distributed across visual artists (Explain this exercise by using R).

6.2 Answer

  1. The chi-square distribution is used in the common chi-square tests for goodness of fit of an observed distribution to a theoretical one, the independence of two criteria of classification of qualitative data, and in confidence interval estimation for a population standard deviation of a normal distribution from a sample standard deviation.

2.Χ^2 = [ ( n - 1 ) * s^2 ] / σ^2

3.In probability theory and statistics, the chi distribution is a continuous probability distribution. It is the distribution of the positive square root of the sum of squares of a set of independent random variables each following a standard normal distribution, or equivalently, the distribution of the Euclidean distance of the random variables from the origin. It is thus related to the chi-squared distribution by describing the distribution of the positive square roots of a variable obeying a chi-squared distribution.

4.Yes

7 Student \(t\) Distribution

7.1 Question

  1. What is the Student \(t\) distribution used for?
  2. Why is it called Student \(t\) distribution?
  3. How do you find the Student \(t\) distribution?
  4. What kind of distribution is the \(t\) distribution?
  5. Philips Corporation manufactures light bulbs. The CEO claims that an average Acme light bulb lasts 300 days. A researcher randomly selects 15 bulbs for testing. The sampled bulbs last an average of 290 days, with a standard deviation of 50 days. If the CEO’s claim were true, what is the probability that 15 randomly selected bulbs would have an average life of no more than 290 days? (Explain this exercise by using R)

Note: There are two ways to solve this problem, using the T Distribution Calculator. Both approaches are presented below. Solution A is the traditional approach. It requires you to compute the t statistic, based on data presented in the problem description. Then, you use the T Distribution Calculator to find the probability. Solution B is easier. You simply enter the problem data into the T Distribution Calculator. The calculator computes a t statistic “behind the scenes”, and displays the probability. Both approaches come up with exactly the same answer.

7.2 Answer

  1. The t-distributionestimating the mean of a normally distributed population in situations where the sample size is small and the population standard deviation is unknown. The t-distribution plays a role in a number of widely used statistical analyses, including Student’s t-test for assessing the statistical significance of the difference between two sample means, the construction of confidence intervals for the difference between two population means, and in linear regression analysis. The Student’s t-distribution also arises in the Bayesian analysis of data from a normal family.

2.The T-Distribution, also known as Student’s T Distribution gets its name from William Sealy Gosset who first published it in English in 1908 in the scientific journal Biometrika using his pseudonym “Student” because his employer preferred staff to use pen names when publishing scientific papers instead of their real name, so he used the name “Student” to hide his identity.

3.When some samples are drawn from normal population whose variance is known, a distribution of the sample mean is normal. When, however, the variance of the population is unknown, the distribution is not normal but student-t, whose tail longer. That means the fact that sample mean with unknown population variance is inclined to be an extreme value. If you use normal distribution for hypothesis testing instead of t distribution, probability of error becomes bigger.

4.Student’s t-distribution, is a type of probability distribution that is similar to the normal distribution with its bell shape but has heavier tails. T distributions have a greater chance for extreme values than normal distributions, hence the fatter tails.

8 F Distribution

8.1 Question

  1. What does F distribution mean?
  2. What does the F distribution tell you?
  3. What is an F distribution used for?
  4. How is the F distribution derived?
  5. Suppose you randomly select 7 women from a population of women, and 12 men from a population of men. The table below shows the standard deviation in each sample and in each population. (Compute the f statistic, Explain this exercise by using R)
Population Population standard deviation Sample standard deviation
Women 30 35
Men 50 45

8.2 Answer

1.F distribution is a probability density function that is used especially in analysis of variance and is a function of the ratio of two independent random variables each of which has a chi-square distribution and is divided by its number of degrees of freedom.

2.To calculate a probabilities

3.Statistical testing.

4.The F-distribution arises from inferential statistics concerning population variances. More specifically, we use an F-distribution when we are studying the ratio of the variances of two normally distributed populations.

LS0tDQp0aXRsZTogJ1Byb2JhYmlsaXR5IERpc3RyaWJ1dGlvbnMnDQphdXRob3I6ICdZb25hdGhhbiBBbmdncmFpd2FuJw0KZGF0ZTogImByIGZvcm1hdChTeXMuRGF0ZSgpLCAnJUIgJWQsICVZJylgIg0Kb3V0cHV0Og0KICBodG1sX2RvY3VtZW50Og0KICAgIG51bWJlcl9zZWN0aW9uczogdHJ1ZQ0KICAgIGZpZ19jYXB0aW9uOiB0cnVlDQogICAgdG9jOiB0cnVlDQogICAgZmlnX3dpZHRoOiA3DQogICAgZmlnX2hlaWdodDogNC41DQogICAgdGhlbWU6IHBhcGVyDQogICAgaGlnaGxpZ2h0OiB0YW5nbw0KICAgIGNvZGVfZm9sZGluZzogaGlkZQ0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCi0tLQ0KDQpgYGB7ciBMb2dvLGVjaG89RkFMU0UsZmlnLmFsaWduPSdjZW50ZXInLCBvdXQud2lkdGggPSAnNDAlJ30NCg0Ka25pdHI6OmluY2x1ZGVfZ3JhcGhpY3MoIkM6L1VzZXJzL1lvbmF0aGFuL0Rvd25sb2Fkcy9sb2dvbWF0YW5hLmpwZyIpDQpgYGANCg0KICANCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFKQ0KYGBgDQoNCiMgQmlub21pYWwgRGlzdHJpYnV0aW9uIHsudGFic2V0IC50YWJzZXQtZmFkZSAudGFic2V0LXBpbGxzfQ0KDQo8Y2VudGVyPg0KPGlmcmFtZSB3aWR0aD0iODAwIiBoZWlnaHQ9IjQ1MCIgc3JjPSJodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC9fRmJaSTltdFNTTSIgZnJhbWVib3JkZXI9IjAiIGFsbG93PSJhY2NlbGVyb21ldGVyOyBhdXRvcGxheTsgZW5jcnlwdGVkLW1lZGlhOyBneXJvc2NvcGU7IHBpY3R1cmUtaW4tcGljdHVyZSIgYWxsb3dmdWxsc2NyZWVuPjwvaWZyYW1lPg0KPC9jZW50ZXI+DQoNCiMjIFF1ZXN0aW9uDQoNCjEuIFdoYXQgaXMgYSBiaW5vbWlhbCBkaXN0cmlidXRpb24gaW4gU3RhdGlzdGljcz8NCjIuIFdoYXQgaXMgYmlub21pYWwgZGlzdHJpYnV0aW9uIHVzZWQgZm9yPw0KMy4gUGxlYXNlIGFyZ3VlIDQgcmVxdWlyZW1lbnRzIG5lZWRlZCB0byBiZSBhIGJpbm9taWFsIGRpc3RyaWJ1dGlvbj8NCjQuIElzIGEgYmlub21pYWwgZGlzdHJpYnV0aW9uIGEgbm9ybWFsIGRpc3RyaWJ1dGlvbj8NCjUuIFN1cHBvc2UgdGhlcmUgYXJlIHR3ZW50eSBtdWx0aXBsZSBjaG9pY2UgcXVlc3Rpb25zIGluIGFuIFN0YXRpc3RpY3MgY2xhc3MgcXVpei4gRWFjaCBxdWVzdGlvbiBoYXMgZml2ZSBwb3NzaWJsZSBhbnN3ZXJzLCBhbmQgb25seSBvbmUgb2YgdGhlbSBpcyBjb3JyZWN0LiBGaW5kIHRoZSBwcm9iYWJpbGl0eSBvZiBoYXZpbmcgZm91ciBvciBsZXNzIGNvcnJlY3QgYW5zd2VycyBpZiBhIHN0dWRlbnQgYXR0ZW1wdHMgdG8gYW5zd2VyIGV2ZXJ5IHF1ZXN0aW9uIGF0IHJhbmRvbSAoRXhwbGFpbiB0aGlzIGV4ZXJjaXNlIGJ5IHVzaW5nIFIpLg0KDQoNCiMjIEFuc3dlcg0KDQoxLlRoZSBiaW5vbWlhbCBkaXN0cmlidXRpb24gaXMgYSBkaXNjcmV0ZSBwcm9iYWJpbGl0eSBkaXN0cmlidXRpb24uIEl0IGRlc2NyaWJlcyB0aGUgb3V0Y29tZSBvZiBuIGluZGVwZW5kZW50IHRyaWFscyBpbiBhbiBleHBlcmltZW50LiBFYWNoIHRyaWFsIGlzIGFzc3VtZWQgdG8gaGF2ZSBvbmx5IHR3byBvdXRjb21lcywgZWl0aGVyIOKAnHN1Y2Nlc3PigJ0gb3Ig4oCcZmFpbHVyZeKAnS4gDQoNCjIuVGhpcyBkaXN0cmlidXRpb24gaXMgb2Z0ZW4gdXNlZCB0byBtb2RlbCB0aGUgbnVtYmVyIG9mIHN1Y2Nlc3NlcyBpbiB0aGUgbnVtYmVyIG9mIHNhbXBsZXMgbiBmcm9tIHRoZSB0b3RhbCBwb3B1bGF0aW9uIG9mIE4uDQoNCjMuflRoZSBleHBlcmltZW50IGNvbnNpc3RzIG9mIG4gaWRlbnRpY2FsIHRyaWFscy4NCiAgfkVhY2ggdHJpYWwgcmVzdWx0cyBpbiBvbmUgb2YgdGhlIHR3byBvdXRjb21lcywgY2FsbGVkIHN1Y2Nlc3MgYW5kIGZhaWx1cmUuDQogIH5UaGUgcHJvYmFiaWxpdHkgb2Ygc3VjY2VzcywgZGVub3RlZCBwLCByZW1haW5zIHRoZSBzYW1lIGZyb20gdHJpYWwgdG8gdHJpYWwuDQogIH5UaGUgbiB0cmlhbHMgYXJlIGluZGVwZW5kZW50LiBUaGF0IGlzLCB0aGUgb3V0Y29tZSBvZiBhbnkgdHJpYWwgZG9lcyBub3QgYWZmZWN0IHRoZSBvdXRjb21lIG9mIHRoZSBvdGhlcnMuDQogIA0KNC5BIGJpbm9taWFsIGRpc3RyaWJ1dGlvbiBpcyB2ZXJ5IGRpZmZlcmVudCBmcm9tIGEgbm9ybWFsIGRpc3RyaWJ1dGlvbiwgYW5kIHlldCBpZiB0aGUgc2FtcGxlIHNpemUgaXMgbGFyZ2UgZW5vdWdoLCB0aGUgc2hhcGVzIHdpbGwgYmUgcXVpdGUgc2ltaWxhci5UaGUga2V5IGRpZmZlcmVuY2UgaXMgdGhhdCBhIGJpbm9taWFsIGRpc3RyaWJ1dGlvbiBpcyBkaXNjcmV0ZSwgbm90IGNvbnRpbnVvdXMuIEluIG90aGVyIHdvcmRzLCBpdCBpcyBub3QgcG9zc2libGUgdG8gZmluZCBhIGRhdGEgdmFsdWUgYmV0d2VlbiBhbnkgdHdvIGRhdGEgdmFsdWVzLlRoZSBub3JtYWwgZGlzdHJpYnV0aW9uIGlzIGEgY29udGludW91cyBkaXN0cmlidXRpb24gdGhhdCBhcmlzZXMgaW4gbWFueSBuYXR1cmFsIHByb2Nlc3Nlcy4gIkNvbnRpbnVvdXMiIG1lYW5zIHRoYXQgYmV0d2VlbiBhbnkgdHdvIGRhdGEgdmFsdWVzIHdlIGNvdWxkIChhdCBsZWFzdCBpbiB0aGVvcnkpIGZpbmQgYW5vdGhlciBkYXRhIHZhbHVlLg0KDQo1Lg0KDQpgYGB7cn0NCmRiaW5vbSh4ID0gNSwgc2l6ZSA9IDIwLCBwcm9iID0gMC4yKQ0KYGBgDQoNCiMgUG9pc3NvbiBEaXN0cmlidXRpb24gey50YWJzZXQgLnRhYnNldC1mYWRlIC50YWJzZXQtcGlsbHN9DQoNCjxjZW50ZXI+DQo8aWZyYW1lIHdpZHRoPSI4MDAiIGhlaWdodD0iNDUwIiBzcmM9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL0xWa2Y4SFliMUdvIiBmcmFtZWJvcmRlcj0iMCIgYWxsb3c9ImFjY2VsZXJvbWV0ZXI7IGF1dG9wbGF5OyBlbmNyeXB0ZWQtbWVkaWE7IGd5cm9zY29wZTsgcGljdHVyZS1pbi1waWN0dXJlIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+DQo8L2NlbnRlcj4NCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KGdncGxvdDIpDQpsaWJyYXJ5KHNjYWxlcykNCiMjIFF1ZXN0aW9uDQoNCjEuIFdoYXQgaXMgYSBQb2lzc29uIGRpc3RyaWJ1dGlvbiBpbiBTdGF0aXN0aWNzPw0KMi4gV2hlbiBhbmQgV2h5IGlzIFBvaXNzb24gZGlzdHJpYnV0aW9uIHVzZWQ/DQozLiBXaGF0IGlzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gQmlub21pYWwgZGlzdHJpYnV0aW9uIGFuZCBQb2lzc29uIGRpc3RyaWJ1dGlvbj8NCjQuIElmIHR3ZW50eSBjYXJzIGFyZSBjcm9zc2luZyBhIGJyaWRnZSBwZXIgbWludXRlIG9uIGF2ZXJhZ2UsIHZpc3VhbGl6ZSBhbmQgZmluZCB0aGUgcHJvYmFiaWxpdHkgb2YgaGF2aW5nIHRoaXJ0ZWVuIG9yIG1vcmUgY2FycyBjcm9zc2luZyB0aGUgYnJpZGdlIGluIGEgcGFydGljdWxhciBtaW51dGUgKEV4cGxhaW4gdGhpcyBleGVyY2lzZSBieSB1c2luZyBSKS4NCjUuIFN1cHBvc2UgdGhlIHByb2JhYmlsaXR5IHRoYXQgYSBkcnVnIHByb2R1Y2VzIGEgY2VydGFpbiBzaWRlIGVmZmVjdCBpcyAkcCA9IDAuMSUkIGFuZCAkbiA9IDEsMDAwJCBwYXRpZW50cyBpbiBhIGNsaW5pY2FsIHRyaWFsIHJlY2VpdmUgdGhlIGRydWcuIFdoYXQgaXMgdGhlIHByb2JhYmlsaXR5IDAgcGVvcGxlIGV4cGVyaWVuY2UgdGhlIHNpZGUgZWZmZWN0IGJ5IHVzaW5nIHZpc3VhbGl6YXRpb24gdGVjaG5pcXVlcz8gKEV4cGxhaW4gdGhpcyBleGVyY2lzZSBieSB1c2luZyBSKQ0KDQoNCiMjIEFuc3dlcg0KDQoxLiBUaGUgUG9pc3NvbiBkaXN0cmlidXRpb24gaXMgdGhlIGRpc2NyZXRlIHByb2JhYmlsaXR5IGRpc3RyaWJ1dGlvbiBvZiBpbmRlcGVuZGVudCBldmVudCBvY2N1cnJlbmNlcyBpbiBhbiBpbnRlcnZhbC4NCg0KMi4gUG9pc3NvbiBkaXN0cmlidXRpb24gIGV4cHJlc3NlcyB0aGUgcHJvYmFiaWxpdHkgb2YgYSBnaXZlbiBudW1iZXIgb2YgZXZlbnRzIG9jY3VycmluZyBpbiBhIGZpeGVkIGludGVydmFsIG9mIHRpbWUgb3Igc3BhY2UgaWYgdGhlc2UgZXZlbnRzIG9jY3VyIHdpdGggYSBrbm93biBjb25zdGFudCBtZWFuIHJhdGUgYW5kIGluZGVwZW5kZW50bHkgb2YgdGhlIHRpbWUgc2luY2UgdGhlIGxhc3QgZXZlbnQuVGhlIFBvaXNzb24gZGlzdHJpYnV0aW9uIGNhbiBhbHNvIGJlIHVzZWQgZm9yIHRoZSBudW1iZXIgb2YgZXZlbnRzIGluIG90aGVyIHNwZWNpZmllZCBpbnRlcnZhbHMgc3VjaCBhcyBkaXN0YW5jZSwgYXJlYSBvciB2b2x1bWUuDQoNCjMuIENvbmRpdGlvbiB0byBhcHBseSBQb2lzc29uIERpc3RyaWJ1dGlvbjoNCn5UaGUgcHJvYmFiaWxpdHkgb2YgbW9yZSB0aGFuIG9uZSBvY2N1cnJlbmNlIGluIHRoZSBzbWFsbCBpbnRlcnZhbCBpcyBuZWdsaWdpYmxlIChpLmUuIHRoZXkgYXJlIHJhcmUgZXZlbnRzKS4NCn5FdmVyeSBldmVudCBtdXN0IGJlIGF0IHJhbmRvbSBhbmQgaW5kZXBlbmRlbnQgZnJvbSBvdGhlcnMuDQp+VGhlIHByb2JhYmlsaXR5IG9mIHRoZSBldmVudCB0YWtpbmcgcGxhY2UgaXMgcHJvcG9ydGlvbmFsIHRvIHRoZSBzaXplIG9mIHRoZSBpbnRlcnZhbCBmb3IgYSBzbWFsbCBpbnRlcnZhbC4NCn5FdmVudHMgYXJlIG9mdGVuIGZhaWx1cmVzLCBpbmp1cmllcywgb3IgZXh0cmVtZSBuYXR1cmFsIG9jY3VycmVuY2VzLCBzdWNoIGFzIEVhcnRocXVha2VzIHdoZXJlIHRoZXJlIGlzIG5vIHRoZW9yZXRpY2FsIHVwcGVyIGxpbWl0IG9mIHRoZSBudW1iZXIgb2YgaW5jaWRlbnRzLg0KDQpDb25kaXRpb25zIHRvIGFwcGx5IEJpbm9taWFsIERpc3RyaWJ1dGlvbjoNCn5UaGUgbnVtYmVyIG9mIG9ic2VydmF0aW9ucyBuIGlzIGZpeGVkLg0KfkVhY2ggb2JzZXJ2YXRpb24gaXMgaW5kZXBlbmRlbnQuDQp+RWFjaCBvYnNlcnZhdGlvbiByZXByZXNlbnRzIG9uZSBvZiB0d28gb3V0Y29tZXMgKOKAnHN1Y2Nlc3PigJ0gb3Ig4oCcZmFpbHVyZeKAnSkuDQp+VGhlIHByb2JhYmlsaXR5IG9mIOKAnHN1Y2Nlc3PigJ0gcCBpcyB0aGUgc2FtZSBmb3IgZWFjaCBvdXRjb21lLg0KDQo0Lg0KYGBge3J9DQpwcG9pcygxMywgMjAsIGxvd2VyLnRhaWwgPSBGQUxTRSkNCmBgYA0KDQo1Lg0KYGBge3J9DQpwcG9pcygxLCAwLjEsIGxvd2VyLnRhaWwgPSBGQUxTRSkNCmBgYA0KDQoNCiMgVW5pZm9ybSBEaXN0cmlidXRpb24gKENvbnRpbnVvdXMgb3IgRGlzY3JldGUpIHsudGFic2V0IC50YWJzZXQtZmFkZSAudGFic2V0LXBpbGxzfQ0KDQo8Y2VudGVyPg0KPGlmcmFtZSB3aWR0aD0iODAwIiBoZWlnaHQ9IjQ1MCIgc3JjPSJodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC8zQzltcGotTllnbyIgZnJhbWVib3JkZXI9IjAiIGFsbG93PSJhY2NlbGVyb21ldGVyOyBhdXRvcGxheTsgZW5jcnlwdGVkLW1lZGlhOyBneXJvc2NvcGU7IHBpY3R1cmUtaW4tcGljdHVyZSIgYWxsb3dmdWxsc2NyZWVuPjwvaWZyYW1lPg0KPC9jZW50ZXI+DQoNCiMjIFF1ZXN0aW9uDQoNCjEuIEhvdyBkbyB5b3UgZmluZCB0aGUgY29udGludW91cyB1bmlmb3JtIGRpc3RyaWJ1dGlvbj8NCjIuIElzIHRoZSB1bmlmb3JtIGRpc3RyaWJ1dGlvbiBkaXNjcmV0ZSBvciBjb250aW51b3VzPw0KMy4gV2hhdCBkb2VzIGl0IG1lYW4gdG8gaGF2ZSBhIHVuaWZvcm0gZGlzdHJpYnV0aW9uPw0KNC4gSG93IGRvIHlvdSBzb2x2ZSB1bmlmb3JtIGRpc3RyaWJ1dGlvbiBwcm9ibGVtcyB1c2luZyBSPw0KDQoNCiMjIEFuc3dlcg0KDQoxLiBDb250aW5pb3VzIHVuaWZvcm0gZGlzdHJpYnV0aW9uIGlzIGEgY29udGludW91cyBkaXN0cmlidXRpb24sIHRoaXMgbWVhbnMgdGhhdCBpdCB0YWtlcyB2YWx1ZXMgd2l0aGluIGEgc3BlY2lmaWVkIHJhbmdlLCBsaWtlIGJldHdlZW4gMCBhbmQgMS4NCg0KMi4gVW5pZm9ybSAgZGlzdHJpYnV0aW9uIGNhbiBiZSBhIGRpc2NyZXRlIGFuZCBjb250aW5pb3VzLg0KDQozLiBFcXVhbCBwcm9iYWJpbGl0eSBpcyBuZWVkZWQgaW4gYWxsIG91dGNvbWVzLg0KDQo0LiBXZSBhcHBseSB0aGUgZ2VuZXJhdGlvbiBmdW5jdGlvbiBydW5pZiBvZiB0aGUgdW5pZm9ybSBkaXN0cmlidXRpb24sIEVYQU1QTEU6IFNlbGVjdCBvbmUgaHVuZHJlZCByYW5kb20gbnVtYmVycyBiZXR3ZWVuIG9uZSBhbmQgdGhyZWUuDQpgYGB7cn0NCnJhbmQudW5pZiA8LSBydW5pZigxMDAsIG1pbj0xLCBtYXg9NSkgIA0KcmFuZC51bmlmDQpgYGANCg0KDQojIEV4cG9uZW50aWFsIERpc3RyaWJ1dGlvbiB7LnRhYnNldCAudGFic2V0LWZhZGUgLnRhYnNldC1waWxsc30NCg0KPGNlbnRlcj4NCjxpZnJhbWUgd2lkdGg9IjgwMCIgaGVpZ2h0PSI0NTAiIHNyYz0iaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvMmtnMU8wajFKOWMiIGZyYW1lYm9yZGVyPSIwIiBhbGxvdz0iYWNjZWxlcm9tZXRlcjsgYXV0b3BsYXk7IGVuY3J5cHRlZC1tZWRpYTsgZ3lyb3Njb3BlOyBwaWN0dXJlLWluLXBpY3R1cmUiIGFsbG93ZnVsbHNjcmVlbj48L2lmcmFtZT4NCjwvY2VudGVyPg0KDQojIyBRdWVzdGlvbg0KDQoxLiBXaGF0IGlzIGV4cG9uZW50aWFsIGRpc3RyaWJ1dGlvbiBleGFtcGxlPw0KMi4gV2hhdCBpcyB0aGUgZXhwb25lbnRpYWwgZGlzdHJpYnV0aW9uIHVzZWQgZm9yPw0KMy4gV2hhdCBpcyBleHBvbmVudGlhbCBkaXN0cmlidXRpb24gcmF0ZT8NCjQuIElzIGV4cG9uZW50aWFsIGRpc3RyaWJ1dGlvbiBkaXNjcmV0ZSBvciBjb250aW51b3VzPw0KNS4gU3VwcG9zZSB0aGUgbWVhbiBjaGVja291dCB0aW1lIG9mIGEgc3VwZXJtYXJrZXQgY2FzaGllciBpcyB0aHJlZSBtaW51dGVzLiBGaW5kIHRoZSBwcm9iYWJpbGl0eSBvZiBhIGN1c3RvbWVyIGNoZWNrb3V0IGJlaW5nIGNvbXBsZXRlZCBieSB0aGUgY2FzaGllciBpbiBsZXNzIHRoYW4gdHdvIG1pbnV0ZXMgKEV4cGxhaW4gdGhpcyBleGVyY2lzZSBieSB1c2luZyBSKS4NCg0KDQojIyBBbnN3ZXINCg0KMS4gVGhlIGV4cG9uZW50aWFsIGRpc3RyaWJ1dGlvbiBkZXNjcmliZXMgdGhlIGFycml2YWwgdGltZSBvZiBhIHJhbmRvbWx5IHJlY3VycmluZyBpbmRlcGVuZGVudCBldmVudCBzZXF1ZW5jZSwgLGxpa2UgYSB0aW1lLCBhbmQgbGVuZ3RoIG9mIGEgdm9pY2UgY2FsbCBiZXR3ZWVuIDIgcGVvcGxlLg0KDQoyLiBUaGUgZXhwb25lbnRpYWwgZGlzdHJpYnV0aW9uIGlzIHdpZGVseSB1c2VkIGluIHRoZSBmaWVsZCBvZiByZWxpYWJpbGl0eS4gUmVsaWFiaWxpdHkgZGVhbHMgd2l0aCB0aGUgYW1vdW50IG9mIHRpbWUgYSBwcm9kdWN0IGxhc3RzLg0KDQozLiBFeHBvbmVudGlhbCBkaXN0cmlidXRpb24gcmF0ZSBpcyAgYXJlIGFsbCByYXRlcyAozrspIG9mIHRoZSB1bml0IG9mIHRpbWUsIHdoaWNoIGlzIHRoZSBwYXJhbWV0ZXIgb2YgdGhlIFBvaXNzb24gZGlzdHJpYnV0aW9uLiBPbmUgdGhpbmcgdGhhdCB3b3VsZCBzYXZlIHlvdSBmcm9tIHRoZSBjb25mdXNpb24gbGF0ZXIgYWJvdXQgWCB+IEV4cCgwLjI1KSBpcyB0byByZW1lbWJlciB0aGF0IDAuMjUgaXMgbm90IGEgdGltZSBkdXJhdGlvbiwgYnV0IGl0IGlzIGFuIGV2ZW50IHJhdGUsIHdoaWNoIGlzIHRoZSBzYW1lIGFzIHRoZSBwYXJhbWV0ZXIgzrsgaW4gYSBQb2lzc29uIHByb2Nlc3MuDQoNCjQuIEV4cG9uZW50aWFsIGRpc3RyaWJ1dGlvbiBpcyBhIGNvbnRpbnVvdXMgcHJvYmFiaWxpdHkgZGlzdHJpYnV0aW9uLg0KDQo1LlRoZSBjaGVja291dCBwcm9jZXNzaW5nIHJhdGUgaXMgZXF1YWxzIHRvIG9uZSBkaXZpZGVkIGJ5IHRoZSBtZWFuIGNoZWNrb3V0IGNvbXBsZXRpb24gdGltZS4gSGVuY2UgdGhlIHByb2Nlc3NpbmcgcmF0ZSBpcyAxLzMgY2hlY2tvdXRzIHBlciBtaW51dGUuIFdlIHRoZW4gYXBwbHkgdGhlIGZ1bmN0aW9uIHBleHAgb2YgdGhlIGV4cG9uZW50aWFsIGRpc3RyaWJ1dGlvbiB3aXRoIHJhdGU9MS8zLg0KYGBge3J9DQpwZXhwKDIsIHJhdGU9MS8zKSANCmBgYA0KDQoNCg0KIyBOb3JtYWwgRGlzdHJpYnV0aW9uIHsudGFic2V0IC50YWJzZXQtZmFkZSAudGFic2V0LXBpbGxzfQ0KDQo8Y2VudGVyPg0KPGlmcmFtZSB3aWR0aD0iODAwIiBoZWlnaHQ9IjQ1MCIgc3JjPSJodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC9JaHRtVzI4c2xEdyIgZnJhbWVib3JkZXI9IjAiIGFsbG93PSJhY2NlbGVyb21ldGVyOyBhdXRvcGxheTsgZW5jcnlwdGVkLW1lZGlhOyBneXJvc2NvcGU7IHBpY3R1cmUtaW4tcGljdHVyZSIgYWxsb3dmdWxsc2NyZWVuPjwvaWZyYW1lPg0KPC9jZW50ZXI+DQoNCjxjZW50ZXI+DQo8aWZyYW1lIHdpZHRoPSI4MDAiIGhlaWdodD0iNDUwIiBzcmM9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL2NvQThnejlVYWNnIiBmcmFtZWJvcmRlcj0iMCIgYWxsb3c9ImFjY2VsZXJvbWV0ZXI7IGF1dG9wbGF5OyBlbmNyeXB0ZWQtbWVkaWE7IGd5cm9zY29wZTsgcGljdHVyZS1pbi1waWN0dXJlIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+DQo8L2NlbnRlcj4NCg0KIyMgUXVlc3Rpb24NCg0KMS4gV2hhdCBpcyBhIG5vcm1hbCBkaXN0cmlidXRpb24gYW5kIFN0YW5kYXJkIE5vcm1hbCBEaXN0cnVidXRpb24gaW4gU3RhdGlzdGljcz8NCjIuIFdoeSBpcyBpdCBjYWxsZWQgbm9ybWFsIGRpc3RyaWJ1dGlvbj8NCjMuIEhvdyBkbyB5b3UgY2FsY3VsYXRlIG5vcm1hbCBkaXN0cmlidXRpb24/DQo0LiBXaGF0IGFyZSB0aGUgY2hhcmFjdGVyaXN0aWNzIG9mIGEgbm9ybWFsIGRpc3RyaWJ1dGlvbj8NCjUuIFRoZSBhbm51YWwgc2FsYXJpZXMgb2YgZW1wbG95ZWVzIGluIGEgbGFyZ2UgY29tcGFueSBhcmUgYXBwcm94aW1hdGVseSBub3JtYWxseSBkaXN0cmlidXRlZCB3aXRoIGEgbWVhbiBvZiAkNTAsMDAwIGFuZCBhIHN0YW5kYXJkIGRldmlhdGlvbiBvZiAkMjAsMDAwIChFeHBsYWluIHRoaXMgZXhlcmNpc2UgYnkgdXNpbmcgUikuDQogIC0gV2hhdCBwZXJjZW50IG9mIHBlb3BsZSBlYXJuIGxlc3MgdGhhbiAkNDAsMDAwPw0KICAtIFdoYXQgcGVyY2VudCBvZiBwZW9wbGUgZWFybiBiZXR3ZWVuICQ0NSwwMDAgYW5kICQ2NSwwMDA/DQogIC0gV2hhdCBwZXJjZW50IG9mIHBlb3BsZSBlYXJuIG1vcmUgdGhhbiAkNzAsMDAwPw0KDQoNCiMjIEFuc3dlcg0KDQoxLkluIHN0YXRpc3RpY3MsIHRoZSBzdGFuZGFyZCBkZXZpYXRpb24gaXMgYSBtZWFzdXJlIG9mIHRoZSBhbW91bnQgb2YgdmFyaWF0aW9uIG9yIGRpc3BlcnNpb24gb2YgYSBzZXQgb2YgdmFsdWVzLiBBIGxvdyBzdGFuZGFyZCBkZXZpYXRpb24gaW5kaWNhdGVzIHRoYXQgdGhlIHZhbHVlcyB0ZW5kIHRvIGJlIGNsb3NlIHRvIHRoZSBtZWFuIChhbHNvIGNhbGxlZCB0aGUgZXhwZWN0ZWQgdmFsdWUpIG9mIHRoZSBzZXQsIHdoaWxlIGEgaGlnaCBzdGFuZGFyZCBkZXZpYXRpb24gaW5kaWNhdGVzIHRoYXQgdGhlIHZhbHVlcyBhcmUgc3ByZWFkIG91dCBvdmVyIGEgd2lkZXIgcmFuZ2UuVGhlIG5vcm1hbCBkaXN0cmlidXRpb24gaXMgZGVmaW5lZCBieSB0aGUgZm9sbG93aW5nIHByb2JhYmlsaXR5IGRlbnNpdHkgZnVuY3Rpb24sIHdoZXJlIM68IGlzIHRoZSBwb3B1bGF0aW9uIG1lYW4gYW5kIM+DIHNxdWFyZSBpcyB0aGUgdmFyaWFuY2UuDQoNClRoZSBzdGFuZGFyZCBub3JtYWwgZGlzdHJpYnV0aW9uIGlzIGEgbm9ybWFsIGRpc3RyaWJ1dGlvbiB3aXRoIGEgbWVhbiBvZiB6ZXJvIGFuZCBzdGFuZGFyZCBkZXZpYXRpb24gb2YgMS4gVGhlIHN0YW5kYXJkIG5vcm1hbCBkaXN0cmlidXRpb24gaXMgY2VudGVyZWQgYXQgemVybyBhbmQgdGhlIGRlZ3JlZSB0byB3aGljaCBhIGdpdmVuIG1lYXN1cmVtZW50IGRldmlhdGVzIGZyb20gdGhlIG1lYW4gaXMgZ2l2ZW4gYnkgdGhlIHN0YW5kYXJkIGRldmlhdGlvbi4NCg0KMi5iZWNhdXNlIHRoZSBub3JtYWwgZGlzdHJpYnV0aW9uIGhhcyBtZWFuIChtZWFuKSBlcXVhbCB0byAwIGFuZCBzdGFuZGFyZCBkZXZpYXRpb24gZXF1YWwgdG8gMSB3aGljaCBpcyByZXByZXNlbnRlZCBhcyBhIGJlbGwtc2hhcGVkIGN1cnZlLg0KDQozLk5vcm1hbCBkaXN0cmlidXRpb24gY2FuIGJlIGZvdW5kIGJ5IGRpdmlkaW5nIDEgYnkgdGhlIM+DLuKImjLPgGUsIHRoZW4gbXVsdGlwbHlpbmcgdGhhdCB2YWx1ZSBlXi0xLzIgLiAoeCAtIM68IC8gz4MpIHNxdWFyZWQuDQoNCjQufkJlbGwtc2hhcGVkIGN1cnZlICjOvCA9IE1kID0gTW8pDQogIH5DdXJ2ZXMgYXJlIHN5bW1ldHJpY2FsDQogIH5UaGUgY3VydmUgcGVha3MgYXQgWCA9IM68DQogIH5UaGUgYXJlYSB1bmRlciB0aGUgY3VydmUgaXMgMTsgwr0gb24gdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIG1pZGRsZSB2YWx1ZSBhbmQgwr0gb24gdGhlIGxlZnQuDQogIH5UaGUgZ3JhcGggaXMgYWx3YXlzIG9uIHRoZSB4LWF4aXMNCg0KNS4NCmBgYHtyfQ0KcG5vcm0oMCwgbG93ZXIudGFpbCA9IEZBTFNFKSAtIHBub3JtKDM5LCBsb3dlci50YWlsID0gRkFMU0UpDQpgYGANCg0KYGBge3J9DQpwbm9ybSg0NSwgbWVhbiA9IDUwLCBzZCA9IDIwLCBsb3dlci50YWlsID0gRkFMU0UpIC0gcG5vcm0oNjUsIG1lYW4gPSA1MCwgc2QgPSAyMCwgbG93ZXIudGFpbCA9IEZBTFNFKQ0KYGBgDQoNCmBgYHtyfQ0KcG5vcm0oNzAsIG1lYW4gPSA1MCwgc2QgPSAyMCwgbG93ZXIudGFpbCA9IFRSVUUpIC0gcG5vcm0oNTAsIG1lYW4gPSA1MCwgc2QgPSAyMCwgbG93ZXIudGFpbCA9IFRSVUUpDQpgYGANCg0KDQojIENoaS1zcXVhcmVkIERpc3RyaWJ1dGlvbiB7LnRhYnNldCAudGFic2V0LWZhZGUgLnRhYnNldC1waWxsc30NCg0KPGNlbnRlcj4NCjxpZnJhbWUgd2lkdGg9IjgwMCIgaGVpZ2h0PSI0NTAiIHNyYz0iaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvRkVFamwzS0RnMWsiIGZyYW1lYm9yZGVyPSIwIiBhbGxvdz0iYWNjZWxlcm9tZXRlcjsgYXV0b3BsYXk7IGVuY3J5cHRlZC1tZWRpYTsgZ3lyb3Njb3BlOyBwaWN0dXJlLWluLXBpY3R1cmUiIGFsbG93ZnVsbHNjcmVlbj48L2lmcmFtZT4NCjwvY2VudGVyPg0KDQojIyBRdWVzdGlvbg0KDQoxLiBXaGF0IGlzIHRoZSBjaGkgc3F1YXJlIGRpc3RyaWJ1dGlvbiB1c2VkIGZvcj8NCjIuIFdoYXQgaXMgdGhlIGNoaSBzcXVhcmUgZGlzdHJpYnV0aW9uIGZvcm11bGE/DQozLiBXaGF0ICBpcyB0aGUgY2hpIGRpc3RyaWJ1dGlvbj8NCjQuIElzIENoaSBzcXVhcmUgZGlzdHJpYnV0aW9uIGNvbnRpbnVvdXM/DQo1LiAyNTYgdmlzdWFsIGFydGlzdHMgd2VyZSBzdXJ2ZXllZCB0byBmaW5kIG91dCB0aGVpciB6b2RpYWMgc2lnbi4gVGhlIHJlc3VsdHMgd2VyZTogQXJpZXMgKDI5KSwgVGF1cnVzICgyNCksIEdlbWluaSAoMjIpLCBDYW5jZXIgKDE5KSwgTGVvICgyMSksIFZpcmdvICgxOCksIExpYnJhICgxOSksIFNjb3JwaW8gKDIwKSwgU2FnaXR0YXJpdXMgKDIzKSwgQ2Fwcmljb3JuICgxOCksIEFxdWFyaXVzICgyMCksIFBpc2NlcyAoMjMpLiBUZXN0IHRoZSBoeXBvdGhlc2lzIHRoYXQgem9kaWFjIHNpZ25zIGFyZSBldmVubHkgZGlzdHJpYnV0ZWQgYWNyb3NzIHZpc3VhbCBhcnRpc3RzIChFeHBsYWluIHRoaXMgZXhlcmNpc2UgYnkgdXNpbmcgUikuDQoNCg0KIyMgQW5zd2VyDQoNCjEuIFRoZSBjaGktc3F1YXJlIGRpc3RyaWJ1dGlvbiBpcyB1c2VkIGluIHRoZSBjb21tb24gY2hpLXNxdWFyZSB0ZXN0cyBmb3IgZ29vZG5lc3Mgb2YgZml0IG9mIGFuIG9ic2VydmVkIGRpc3RyaWJ1dGlvbiB0byBhIHRoZW9yZXRpY2FsIG9uZSwgdGhlIGluZGVwZW5kZW5jZSBvZiB0d28gY3JpdGVyaWEgb2YgY2xhc3NpZmljYXRpb24gb2YgcXVhbGl0YXRpdmUgZGF0YSwgYW5kIGluIGNvbmZpZGVuY2UgaW50ZXJ2YWwgZXN0aW1hdGlvbiBmb3IgYSBwb3B1bGF0aW9uIHN0YW5kYXJkIGRldmlhdGlvbiBvZiBhIG5vcm1hbCBkaXN0cmlidXRpb24gZnJvbSBhIHNhbXBsZSBzdGFuZGFyZCBkZXZpYXRpb24uDQoNCjIuzqdeMiA9IFsgKCBuIC0gMSApICogc14yIF0gLyDPg14yDQoNCjMuSW4gcHJvYmFiaWxpdHkgdGhlb3J5IGFuZCBzdGF0aXN0aWNzLCB0aGUgY2hpIGRpc3RyaWJ1dGlvbiBpcyBhIGNvbnRpbnVvdXMgcHJvYmFiaWxpdHkgZGlzdHJpYnV0aW9uLiBJdCBpcyB0aGUgZGlzdHJpYnV0aW9uIG9mIHRoZSBwb3NpdGl2ZSBzcXVhcmUgcm9vdCBvZiB0aGUgc3VtIG9mIHNxdWFyZXMgb2YgYSBzZXQgb2YgaW5kZXBlbmRlbnQgcmFuZG9tIHZhcmlhYmxlcyBlYWNoIGZvbGxvd2luZyBhIHN0YW5kYXJkIG5vcm1hbCBkaXN0cmlidXRpb24sIG9yIGVxdWl2YWxlbnRseSwgdGhlIGRpc3RyaWJ1dGlvbiBvZiB0aGUgRXVjbGlkZWFuIGRpc3RhbmNlIG9mIHRoZSByYW5kb20gdmFyaWFibGVzIGZyb20gdGhlIG9yaWdpbi4gSXQgaXMgdGh1cyByZWxhdGVkIHRvIHRoZSBjaGktc3F1YXJlZCBkaXN0cmlidXRpb24gYnkgZGVzY3JpYmluZyB0aGUgZGlzdHJpYnV0aW9uIG9mIHRoZSBwb3NpdGl2ZSBzcXVhcmUgcm9vdHMgb2YgYSB2YXJpYWJsZSBvYmV5aW5nIGEgY2hpLXNxdWFyZWQgZGlzdHJpYnV0aW9uLg0KDQo0Llllcw0KDQojIFN0dWRlbnQgJHQkIERpc3RyaWJ1dGlvbiB7LnRhYnNldCAudGFic2V0LWZhZGUgLnRhYnNldC1waWxsc30NCg0KPGNlbnRlcj4NCjxpZnJhbWUgd2lkdGg9IjgwMCIgaGVpZ2h0PSI0NTAiIHNyYz0iaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvdDRocGpLMXo1dVkiIGZyYW1lYm9yZGVyPSIwIiBhbGxvdz0iYWNjZWxlcm9tZXRlcjsgYXV0b3BsYXk7IGVuY3J5cHRlZC1tZWRpYTsgZ3lyb3Njb3BlOyBwaWN0dXJlLWluLXBpY3R1cmUiIGFsbG93ZnVsbHNjcmVlbj48L2lmcmFtZT4NCjwvY2VudGVyPg0KDQojIyBRdWVzdGlvbg0KDQoxLiBXaGF0IGlzIHRoZSBTdHVkZW50ICR0JCBkaXN0cmlidXRpb24gdXNlZCBmb3I/DQoyLiBXaHkgaXMgaXQgY2FsbGVkIFN0dWRlbnQgJHQkIGRpc3RyaWJ1dGlvbj8NCjMuIEhvdyBkbyB5b3UgZmluZCB0aGUgU3R1ZGVudCAkdCQgZGlzdHJpYnV0aW9uPw0KNC4gV2hhdCBraW5kIG9mIGRpc3RyaWJ1dGlvbiBpcyB0aGUgJHQkIGRpc3RyaWJ1dGlvbj8NCjUuIFBoaWxpcHMgQ29ycG9yYXRpb24gbWFudWZhY3R1cmVzIGxpZ2h0IGJ1bGJzLiBUaGUgQ0VPIGNsYWltcyB0aGF0IGFuIGF2ZXJhZ2UgQWNtZSBsaWdodCBidWxiIGxhc3RzIDMwMCBkYXlzLiBBIHJlc2VhcmNoZXIgcmFuZG9tbHkgc2VsZWN0cyAxNSBidWxicyBmb3IgdGVzdGluZy4gVGhlIHNhbXBsZWQgYnVsYnMgbGFzdCBhbiBhdmVyYWdlIG9mIDI5MCBkYXlzLCB3aXRoIGEgc3RhbmRhcmQgZGV2aWF0aW9uIG9mIDUwIGRheXMuIElmIHRoZSBDRU8ncyBjbGFpbSB3ZXJlIHRydWUsIHdoYXQgaXMgdGhlIHByb2JhYmlsaXR5IHRoYXQgMTUgcmFuZG9tbHkgc2VsZWN0ZWQgYnVsYnMgd291bGQgaGF2ZSBhbiBhdmVyYWdlIGxpZmUgb2Ygbm8gbW9yZSB0aGFuIDI5MCBkYXlzPyAoRXhwbGFpbiB0aGlzIGV4ZXJjaXNlIGJ5IHVzaW5nIFIpDQoNCj4gTm90ZTogVGhlcmUgYXJlIHR3byB3YXlzIHRvIHNvbHZlIHRoaXMgcHJvYmxlbSwgdXNpbmcgdGhlIFQgRGlzdHJpYnV0aW9uIENhbGN1bGF0b3IuIEJvdGggYXBwcm9hY2hlcyBhcmUgcHJlc2VudGVkIGJlbG93LiBTb2x1dGlvbiBBIGlzIHRoZSB0cmFkaXRpb25hbCBhcHByb2FjaC4gSXQgcmVxdWlyZXMgeW91IHRvIGNvbXB1dGUgdGhlIHQgc3RhdGlzdGljLCBiYXNlZCBvbiBkYXRhIHByZXNlbnRlZCBpbiB0aGUgcHJvYmxlbSBkZXNjcmlwdGlvbi4gVGhlbiwgeW91IHVzZSB0aGUgVCBEaXN0cmlidXRpb24gQ2FsY3VsYXRvciB0byBmaW5kIHRoZSBwcm9iYWJpbGl0eS4gU29sdXRpb24gQiBpcyBlYXNpZXIuIFlvdSBzaW1wbHkgZW50ZXIgdGhlIHByb2JsZW0gZGF0YSBpbnRvIHRoZSBUIERpc3RyaWJ1dGlvbiBDYWxjdWxhdG9yLiBUaGUgY2FsY3VsYXRvciBjb21wdXRlcyBhIHQgc3RhdGlzdGljICJiZWhpbmQgdGhlIHNjZW5lcyIsIGFuZCBkaXNwbGF5cyB0aGUgcHJvYmFiaWxpdHkuIEJvdGggYXBwcm9hY2hlcyBjb21lIHVwIHdpdGggZXhhY3RseSB0aGUgc2FtZSBhbnN3ZXIuDQoNCg0KIyMgQW5zd2VyDQoNCjEuIFRoZSB0LWRpc3RyaWJ1dGlvbmVzdGltYXRpbmcgdGhlIG1lYW4gb2YgYSBub3JtYWxseSBkaXN0cmlidXRlZCBwb3B1bGF0aW9uIGluIHNpdHVhdGlvbnMgd2hlcmUgdGhlIHNhbXBsZSBzaXplIGlzIHNtYWxsIGFuZCB0aGUgcG9wdWxhdGlvbiBzdGFuZGFyZCBkZXZpYXRpb24gaXMgdW5rbm93bi4gVGhlIHQtZGlzdHJpYnV0aW9uIHBsYXlzIGEgcm9sZSBpbiBhIG51bWJlciBvZiB3aWRlbHkgdXNlZCBzdGF0aXN0aWNhbCBhbmFseXNlcywgaW5jbHVkaW5nIFN0dWRlbnQncyB0LXRlc3QgZm9yIGFzc2Vzc2luZyB0aGUgc3RhdGlzdGljYWwgc2lnbmlmaWNhbmNlIG9mIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdHdvIHNhbXBsZSBtZWFucywgdGhlIGNvbnN0cnVjdGlvbiBvZiBjb25maWRlbmNlIGludGVydmFscyBmb3IgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0d28gcG9wdWxhdGlvbiBtZWFucywgYW5kIGluIGxpbmVhciByZWdyZXNzaW9uIGFuYWx5c2lzLiBUaGUgU3R1ZGVudCdzIHQtZGlzdHJpYnV0aW9uIGFsc28gYXJpc2VzIGluIHRoZSBCYXllc2lhbiBhbmFseXNpcyBvZiBkYXRhIGZyb20gYSBub3JtYWwgZmFtaWx5Lg0KDQoyLlRoZSBULURpc3RyaWJ1dGlvbiwgYWxzbyBrbm93biBhcyBTdHVkZW50J3MgVCBEaXN0cmlidXRpb24gZ2V0cyBpdHMgbmFtZSBmcm9tIFdpbGxpYW0gU2VhbHkgR29zc2V0IHdobyBmaXJzdCBwdWJsaXNoZWQgaXQgaW4gRW5nbGlzaCBpbiAxOTA4IGluIHRoZSBzY2llbnRpZmljIGpvdXJuYWwgQmlvbWV0cmlrYSB1c2luZyBoaXMgcHNldWRvbnltICJTdHVkZW50IiBiZWNhdXNlIGhpcyBlbXBsb3llciBwcmVmZXJyZWQgc3RhZmYgdG8gdXNlIHBlbiBuYW1lcyB3aGVuIHB1Ymxpc2hpbmcgc2NpZW50aWZpYyBwYXBlcnMgaW5zdGVhZCBvZiB0aGVpciByZWFsIG5hbWUsIHNvIGhlIHVzZWQgdGhlIG5hbWUgIlN0dWRlbnQiIHRvIGhpZGUgaGlzIGlkZW50aXR5Lg0KDQozLldoZW4gc29tZSBzYW1wbGVzIGFyZSBkcmF3biBmcm9tIG5vcm1hbCBwb3B1bGF0aW9uIHdob3NlIHZhcmlhbmNlIGlzIGtub3duLCBhIGRpc3RyaWJ1dGlvbiBvZiB0aGUgc2FtcGxlIG1lYW4gaXMgbm9ybWFsLiBXaGVuLCBob3dldmVyLCB0aGUgdmFyaWFuY2Ugb2YgdGhlIHBvcHVsYXRpb24gaXMgdW5rbm93biwgdGhlIGRpc3RyaWJ1dGlvbiBpcyBub3Qgbm9ybWFsIGJ1dCBzdHVkZW50LXQsIHdob3NlIHRhaWwgbG9uZ2VyLiBUaGF0IG1lYW5zIHRoZSBmYWN0IHRoYXQgc2FtcGxlIG1lYW4gd2l0aCB1bmtub3duIHBvcHVsYXRpb24gdmFyaWFuY2UgaXMgaW5jbGluZWQgdG8gYmUgYW4gZXh0cmVtZSB2YWx1ZS4gSWYgeW91IHVzZSBub3JtYWwgZGlzdHJpYnV0aW9uIGZvciBoeXBvdGhlc2lzIHRlc3RpbmcgaW5zdGVhZCBvZiB0IGRpc3RyaWJ1dGlvbiwgcHJvYmFiaWxpdHkgb2YgZXJyb3IgYmVjb21lcyBiaWdnZXIuDQoNCjQuU3R1ZGVudCdzIHQtZGlzdHJpYnV0aW9uLCBpcyBhIHR5cGUgb2YgcHJvYmFiaWxpdHkgZGlzdHJpYnV0aW9uIHRoYXQgaXMgc2ltaWxhciB0byB0aGUgbm9ybWFsIGRpc3RyaWJ1dGlvbiB3aXRoIGl0cyBiZWxsIHNoYXBlIGJ1dCBoYXMgaGVhdmllciB0YWlscy4gVCBkaXN0cmlidXRpb25zIGhhdmUgYSBncmVhdGVyIGNoYW5jZSBmb3IgZXh0cmVtZSB2YWx1ZXMgdGhhbiBub3JtYWwgZGlzdHJpYnV0aW9ucywgaGVuY2UgdGhlIGZhdHRlciB0YWlscy4NCg0KDQojIEYgRGlzdHJpYnV0aW9uIHsudGFic2V0IC50YWJzZXQtZmFkZSAudGFic2V0LXBpbGxzfQ0KDQo8Y2VudGVyPg0KPGlmcmFtZSB3aWR0aD0iODAwIiBoZWlnaHQ9IjQ1MCIgc3JjPSJodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC9HX1JEeEFaSi11ZyIgZnJhbWVib3JkZXI9IjAiIGFsbG93PSJhY2NlbGVyb21ldGVyOyBhdXRvcGxheTsgZW5jcnlwdGVkLW1lZGlhOyBneXJvc2NvcGU7IHBpY3R1cmUtaW4tcGljdHVyZSIgYWxsb3dmdWxsc2NyZWVuPjwvaWZyYW1lPg0KPC9jZW50ZXI+DQoNCiMjIFF1ZXN0aW9uDQoNCjEuIFdoYXQgZG9lcyBGIGRpc3RyaWJ1dGlvbiBtZWFuPw0KMi4gV2hhdCBkb2VzIHRoZSBGIGRpc3RyaWJ1dGlvbiB0ZWxsIHlvdT8NCjMuIFdoYXQgaXMgYW4gRiBkaXN0cmlidXRpb24gdXNlZCBmb3I/DQo0LiBIb3cgaXMgdGhlIEYgZGlzdHJpYnV0aW9uIGRlcml2ZWQ/DQo1LiBTdXBwb3NlIHlvdSByYW5kb21seSBzZWxlY3QgNyB3b21lbiBmcm9tIGEgcG9wdWxhdGlvbiBvZiB3b21lbiwgYW5kIDEyIG1lbiBmcm9tIGEgcG9wdWxhdGlvbiBvZiBtZW4uIFRoZSB0YWJsZSBiZWxvdyBzaG93cyB0aGUgc3RhbmRhcmQgZGV2aWF0aW9uIGluIGVhY2ggc2FtcGxlIGFuZCBpbiBlYWNoIHBvcHVsYXRpb24uIChDb21wdXRlIHRoZSBmIHN0YXRpc3RpYywgRXhwbGFpbiB0aGlzIGV4ZXJjaXNlIGJ5IHVzaW5nIFIpDQoNClBvcHVsYXRpb24JICBQb3B1bGF0aW9uIHN0YW5kYXJkIGRldmlhdGlvbgkgICAgU2FtcGxlIHN0YW5kYXJkIGRldmlhdGlvbg0KLS0tLS0tLS0tLSAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpXb21lbgkgICAgICAgICAgICAgICAzMAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzUNCk1lbgkgICAgICAgICAgICAgICAgIDUwCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0NQ0KDQoNCiMjIEFuc3dlcg0KDQoxLkYgZGlzdHJpYnV0aW9uIGlzIGEgcHJvYmFiaWxpdHkgZGVuc2l0eSBmdW5jdGlvbiB0aGF0IGlzIHVzZWQgZXNwZWNpYWxseSBpbiBhbmFseXNpcyBvZiB2YXJpYW5jZSBhbmQgaXMgYSBmdW5jdGlvbiBvZiB0aGUgcmF0aW8gb2YgdHdvIGluZGVwZW5kZW50IHJhbmRvbSB2YXJpYWJsZXMgZWFjaCBvZiB3aGljaCBoYXMgYSBjaGktc3F1YXJlIGRpc3RyaWJ1dGlvbiBhbmQgaXMgZGl2aWRlZCBieSBpdHMgbnVtYmVyIG9mIGRlZ3JlZXMgb2YgZnJlZWRvbS4NCg0KMi5UbyBjYWxjdWxhdGUgYSBwcm9iYWJpbGl0aWVzDQoNCjMuU3RhdGlzdGljYWwgdGVzdGluZy4NCg0KNC5UaGUgRi1kaXN0cmlidXRpb24gYXJpc2VzIGZyb20gaW5mZXJlbnRpYWwgc3RhdGlzdGljcyBjb25jZXJuaW5nIHBvcHVsYXRpb24gdmFyaWFuY2VzLiBNb3JlIHNwZWNpZmljYWxseSwgd2UgdXNlIGFuIEYtZGlzdHJpYnV0aW9uIHdoZW4gd2UgYXJlIHN0dWR5aW5nIHRoZSByYXRpbyBvZiB0aGUgdmFyaWFuY2VzIG9mIHR3byBub3JtYWxseSBkaXN0cmlidXRlZCBwb3B1bGF0aW9ucy4NCg0KDQoNCg0KDQoNCg0KDQo=