1 Binomial Distribution

1.1 Question

  • What is a binomial distribution in Statistics?
  • What is binomial distribution used for?
  • Please argue 4 requirements needed to be a binomial distribution?
  • Is a binomial distribution a normal distribution?
  • 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

  • Binomial distribution in Statistics is the probability of success (p) or failure (1-p) in a experiment which repeated multiple times. Therefore, we can say binomial is a sequence of indentical Bernoulli events.Also, Binomial distribution graph describes the probability of achieving our desired outcome a specific number of times.

  • Binomial distribution is used to compute the probability of sucess in the experiment which repeated multiple times and the outcome is either a sucess or a failure

  • 4 requirements needed to be a binomial distribution:

  • There are only two outcomes, caleed success and failure

  • The n trials are independent

  • The probability of each outcome remains constant from trial to trial.

  • A fixed number of trials

  • The probability of having four or less correct answers if a student attempts to answer every question at random:

Considering there is only one out five possible answers is correct. The probability to answer a question correctly is 1/5 = 0.2

The probability of having four or less correct answers if a student attemps to answer every question at random:

## [1] 0.6296483

The probability is 62.96483%.

2 Poisson Distribution

2.1 Question

  • What is a Poisson distribution in Statistics?
  • When and Why is Poisson distribution used?
  • What is the difference between Binomial distribution and Poisson distribution?
  • 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).
  • 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.2 Answer

  • Poisson Distribution in statistic is a distribution that shows how many times an event is possible to happen within a specific period time. It start with letter Po and a single value parameter, lambda. It is also deals with the frequency with which an event occurs within a specific interval. Simply put, it requires knowing how often it occurs for a specific period of time or distance.

  • Poisson distribution is used when there are independent events which happen at a instant rate in interval of time. It is used because it can be a tool that helps people to predict the probability of certain events from happening when we know how often the event has occured and it gives us the probability of a given number of events happening in a fixed interval of time

  • The difference between Binomial distribution and Poisson distribution are

  • The binomial distribution is only for the probability of sucess on a certain frame while the poisson distribution is used for events which could occur a very large number of times.

  • The Binomial distribution only has 2 outcomes, success or failure and the poisson distribution has no limit of possible outcome

  • The probability of sucess in binomial distribution is constant and in poisson distribution has tiny ability to succed.

  • What we know: 20 cars crossing/ minute on average what we need to find: find the probability of having >= 13 cars in a particular minute and vizualise

Average number of cars crossing per minute is \(μ=20\)

we will use ppois function to find the porbability of having or more 13 cars, so we will use lower.trail= F and set q at 16

## Warning: package 'ggplot2' was built under R version 3.6.3
## Warning: package 'dplyr' was built under R version 3.6.3
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
## [1] 0.06612764

We have 6.612764% probability of having 13 or more cars crossing the bridger in any particular minute in the upper tail of the probability density function

## [1] 0.9338724

We have 93.38724% probability of having 13 or more cars crossing the bridger in any particular minute.

3 Uniform Distribution (Continuous or Discrete)

3.1 Question

  • How do you find the continuous uniform distribution?
  • Is the uniform distribution discrete or continuous?
  • What does it mean to have a uniform distribution?
  • How do you solve uniform distribution problems using R?

3.2 Answer

  • The continous uniform distribution is a continous probability distribution and we can find when it is concerned with events that are equally likely to occur.Also, when the cdf that the function is continuous, is does not go in steps like the discrete case. Further, the probability density function takes values in the range a to b. An example of the continous uniform distribution is an idealized random number generator.

  • Uniform distribution is divided into categories which are discrete uniform distributions and continuous uniform distribution. Discrete uniform distributions have a finite number of outcomes. A continuous uniform distribution is a statistical distribution with an infinite number of equally likely measurable values.

  • It means the outcomes of uniform distribution have equal probability, the mean and the variance are uniterpretable, and possess no predictice power.

  • We solve uniform distribution problems using R by applying the function runif. The runif() function generates random deviates of the uniform distribution and is written. We also use dunif() function gives the density

4 Exponential Distribution

4.1 Question

  • What is exponential distribution example?
  • What is the exponential distribution used for?
  • What is exponential distribution rate?
  • Is exponential distribution discrete or continuous?
  • 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

  • The exponential disribution example is actually the time between events in a poisson process. it is also describes the arrival time of a randomly recurring independent event sequenceThe exponential distribution example length, the amount of time, in months, and the amount of time until a tsunami occurs.

  • The exponential distribution is a continous probability ditribution used for modelling the time we need to wait before a given event occurs.

  • The exponential distribution rate is = 0 and β = 1, x ≥ μ; β > 0

  • The exponential distribution is one of the widely used continuous distribution

  • What we know: mean = 3 minutes What we want to know: probability being checkout and completed in less than two minutes

## [1] 0.4865829

The probability is 48.65829%

5 Normal Distribution

5.1 Question

  • What is a normal distribution and Standard Normal Distrubution in Statistics?
  • Why is it called normal distribution?
  • How do you calculate normal distribution?
  • What are the characteristics of a normal distribution?
  • 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

  • In statistics, the normal distribution is the function of probability that portrays how the values of a variable are distributed and it graph shows that the majority of the data center around the mean. The standard normal distribution (also known as Z distribution) is a normal distribution with a mean of 0 and a standard deviation of 1.Also, it is zero-centered and the extent to which a particular measurement deviates from the mean is given by the standard deviation.

  • It is called normal distribution because its distribution are at least approximately normally distributed and has mean= median= mode, symmetry about the center, and 50% of values less than the mean and 50% greater than the mean. Also, it approximates the binomial probabilites well.

  • we can calculate normal distribution in R using pnorm function. pnorm function has the same default mean and sd arguments as dnorm. The function pnorm returns the integral from minus infinite to q of the pdf of the nomal distribution where q is a Z-score. it is the function that replaces the table of probabilites and Z-scores.

  • The characteristics of a nomral distributions are

  • symmetric

  • unimodal

  • asymptotic

  • the mean, media, and mode are equal.

## [1] 0.3085375
## [1] 0.372079
## [1] 0.8413447

6 Chi-squared Distribution

6.1 Question

  • What is the chi square distribution used for?
  • What is the chi square distribution formula?
  • What is the chi distribution?
  • Is Chi square distribution continuous?
  • 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

  • Chi square distribution is used for hypothesis testing, computing confidence interval, determining the goodness of fit

  • The chi square distribution formula is capital Greek letter chi squared followed by a parameter“l dpicting the degress of freedom. So, we can read it with variable as”Variable Y follows a chi square distribution with degress of freddom.

  • Chi square distribution is the distribution of the sum of squared standard normal deviates.

  • Chi square distribution is continuous

7 Student \(t\) Distribution

7.1 Question

  • What is the Student \(t\) distribution used for?
  • Why is it called Student \(t\) distribution?
  • How do you find the Student \(t\) distribution?
  • What kind of distribution is the \(t\) distribution?
  • 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

  • The student \(t\) distribution used for estimating population parameters when the sample size is small or when the population variance is unknown

  • It is called Student \(t\) distribution because Gosset’s employer preferred staff to use pen names so he used the name “Student” to hide his identity. Also, it become well known when Ronald Fisher who called the distribution as “Student’s distribution” and represented the test value with the letter t.Also, \(t\) distribution has own charateristric which is the mean of the distribution is equal to 0 and its standard deviations differ ccording to the sample size n.

  • We can find the student \(t\) distribution by looking at the distribution it self. It is symmetric, bell-shaped, and has heavier tails which mean that it is more likely to proce values that fall far from its mean

  • The student \(t\) distribution is a continuous distribition.

8 F Distribution

8.1 Question

  • What does F distribution mean?
  • What does the F distribution tell you?
  • What is an F distribution used for?
  • How is the F distribution derived?
  • 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

  • F distribution is the density function of a probability that is used in analysis of cariance and is a function of the ratio of two independent random variables which each of them has a chi square distribution and is divided by its number of degress of freedom.

  • F distribution tells us the value to find out if the means between two populations are significantly different

  • F distribution is used for deciding to accept or reject the null hypothesis.

  • The F distribution is derived by defining the quotient \(Z= Y/X\). Then the PDF of Z can be determined from the result of the joint distribution of a quotient. Now, the gamma function has been defined. Then, we use the substitution \(t=x((z+1)/2)\). Therefore, we can found the quotient \(F=(Y/m)/(X/n)\). So, after that we can decide it’s PDF.

LS0tDQp0aXRsZTogJ1Byb2JhYmlsaXR5IERpc3RyaWJ1dGlvbnMnDQphdXRob3I6ICdTb2ZpYSBOaWNrbGF1cyBTZXRpYWJ1ZGknDQpkYXRlOiAiYHIgZm9ybWF0KFN5cy5EYXRlKCksICclQiAlZCwgJVknKWAiDQpvdXRwdXQ6DQogIGh0bWxfZG9jdW1lbnQ6DQogICAgbnVtYmVyX3NlY3Rpb25zOiB0cnVlDQogICAgZmlnX2NhcHRpb246IHRydWUNCiAgICB0b2M6IHRydWUNCiAgICBmaWdfd2lkdGg6IDcNCiAgICBmaWdfaGVpZ2h0OiA0LjUNCiAgICB0aGVtZTogcGFwZXINCiAgICBoaWdobGlnaHQ6IHRhbmdvDQogICAgY29kZV9mb2xkaW5nOiBoaWRlDQogICAgY29kZV9kb3dubG9hZDogdHJ1ZQ0KLS0tDQoNCmBgYHtyIExvZ28sIGVjaG89RkFMU0UsZmlnLmFsaWduPSdjZW50ZXInLCBvdXQud2lkdGggPSAnNDAlJ30NCmtuaXRyOjppbmNsdWRlX2dyYXBoaWNzKCJDOi9Vc2Vycy91c2VyL0Rvd25sb2Fkcy9tYXRhbmEucG5nIikNCmBgYA0KDQogIA0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUpDQpgYGANCg0KIyBCaW5vbWlhbCBEaXN0cmlidXRpb24gey50YWJzZXQgLnRhYnNldC1mYWRlIC50YWJzZXQtcGlsbHN9DQoNCjxjZW50ZXI+DQo8aWZyYW1lIHdpZHRoPSI4MDAiIGhlaWdodD0iNDUwIiBzcmM9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL19GYlpJOW10U1NNIiBmcmFtZWJvcmRlcj0iMCIgYWxsb3c9ImFjY2VsZXJvbWV0ZXI7IGF1dG9wbGF5OyBlbmNyeXB0ZWQtbWVkaWE7IGd5cm9zY29wZTsgcGljdHVyZS1pbi1waWN0dXJlIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+DQo8L2NlbnRlcj4NCg0KIyMgUXVlc3Rpb24NCg0KKiBXaGF0IGlzIGEgYmlub21pYWwgZGlzdHJpYnV0aW9uIGluIFN0YXRpc3RpY3M/DQoqIFdoYXQgaXMgYmlub21pYWwgZGlzdHJpYnV0aW9uIHVzZWQgZm9yPw0KKiBQbGVhc2UgYXJndWUgNCByZXF1aXJlbWVudHMgbmVlZGVkIHRvIGJlIGEgYmlub21pYWwgZGlzdHJpYnV0aW9uPw0KKiBJcyBhIGJpbm9taWFsIGRpc3RyaWJ1dGlvbiBhIG5vcm1hbCBkaXN0cmlidXRpb24/DQoqIFN1cHBvc2UgdGhlcmUgYXJlIHR3ZW50eSBtdWx0aXBsZSBjaG9pY2UgcXVlc3Rpb25zIGluIGFuIFN0YXRpc3RpY3MgY2xhc3MgcXVpei4gRWFjaCBxdWVzdGlvbiBoYXMgZml2ZSBwb3NzaWJsZSBhbnN3ZXJzLCBhbmQgb25seSBvbmUgb2YgdGhlbSBpcyBjb3JyZWN0LiBGaW5kIHRoZSBwcm9iYWJpbGl0eSBvZiBoYXZpbmcgZm91ciBvciBsZXNzIGNvcnJlY3QgYW5zd2VycyBpZiBhIHN0dWRlbnQgYXR0ZW1wdHMgdG8gYW5zd2VyIGV2ZXJ5IHF1ZXN0aW9uIGF0IHJhbmRvbSAoRXhwbGFpbiB0aGlzIGV4ZXJjaXNlIGJ5IHVzaW5nIFIpLg0KDQoNCiMjIEFuc3dlcg0KDQoqIEJpbm9taWFsIGRpc3RyaWJ1dGlvbiBpbiBTdGF0aXN0aWNzIGlzIHRoZSBwcm9iYWJpbGl0eSBvZiBzdWNjZXNzIChwKSBvciBmYWlsdXJlICgxLXApIGluIGEgZXhwZXJpbWVudCB3aGljaCByZXBlYXRlZCBtdWx0aXBsZSB0aW1lcy4gVGhlcmVmb3JlLCB3ZSBjYW4gc2F5IGJpbm9taWFsIGlzIGEgc2VxdWVuY2Ugb2YgaW5kZW50aWNhbCBCZXJub3VsbGkgZXZlbnRzLkFsc28sIEJpbm9taWFsIGRpc3RyaWJ1dGlvbiBncmFwaCBkZXNjcmliZXMgdGhlIHByb2JhYmlsaXR5IG9mIGFjaGlldmluZyBvdXIgZGVzaXJlZCBvdXRjb21lIGEgc3BlY2lmaWMgbnVtYmVyIG9mIHRpbWVzLg0KDQoqIEJpbm9taWFsIGRpc3RyaWJ1dGlvbiBpcyB1c2VkIHRvIGNvbXB1dGUgdGhlIHByb2JhYmlsaXR5IG9mIHN1Y2VzcyBpbiB0aGUgZXhwZXJpbWVudCB3aGljaCByZXBlYXRlZCBtdWx0aXBsZSB0aW1lcyBhbmQgdGhlIG91dGNvbWUgaXMgZWl0aGVyIGEgc3VjZXNzIG9yIGEgZmFpbHVyZQ0KDQoqIDQgcmVxdWlyZW1lbnRzIG5lZWRlZCB0byBiZSBhIGJpbm9taWFsIGRpc3RyaWJ1dGlvbjoNCi0gVGhlcmUgYXJlIG9ubHkgdHdvIG91dGNvbWVzLCBjYWxlZWQgc3VjY2VzcyBhbmQgZmFpbHVyZQ0KLSBUaGUgbiB0cmlhbHMgYXJlIGluZGVwZW5kZW50DQotIFRoZSBwcm9iYWJpbGl0eSBvZiBlYWNoIG91dGNvbWUgcmVtYWlucyBjb25zdGFudCBmcm9tIHRyaWFsIHRvIHRyaWFsLg0KLSBBIGZpeGVkIG51bWJlciBvZiB0cmlhbHMNCg0KKiBUaGUgcHJvYmFiaWxpdHkgb2YgaGF2aW5nIGZvdXIgb3IgbGVzcyBjb3JyZWN0IGFuc3dlcnMgaWYgYSBzdHVkZW50IGF0dGVtcHRzIHRvIGFuc3dlciBldmVyeSBxdWVzdGlvbiBhdCByYW5kb206DQoNCkNvbnNpZGVyaW5nIHRoZXJlIGlzIG9ubHkgb25lIG91dCBmaXZlIHBvc3NpYmxlIGFuc3dlcnMgaXMgY29ycmVjdC4gVGhlIHByb2JhYmlsaXR5IHRvIGFuc3dlciBhIHF1ZXN0aW9uIGNvcnJlY3RseSBpcyAxLzUgPSAwLjIgDQoNClRoZSBwcm9iYWJpbGl0eSBvZiBoYXZpbmcgZm91ciBvciBsZXNzIGNvcnJlY3QgYW5zd2VycyBpZiBhIHN0dWRlbnQgYXR0ZW1wcyB0byBhbnN3ZXIgZXZlcnkgcXVlc3Rpb24gYXQgcmFuZG9tOg0KDQpgYGB7cn0NCnBiaW5vbSg0LCBzaXplPTIwLCBwcm9iPTAuMikNCg0KYGBgDQoNClRoZSBwcm9iYWJpbGl0eSBpcyA2Mi45NjQ4MyUuDQoNCiMgUG9pc3NvbiBEaXN0cmlidXRpb24gey50YWJzZXQgLnRhYnNldC1mYWRlIC50YWJzZXQtcGlsbHN9DQoNCjxjZW50ZXI+DQo8aWZyYW1lIHdpZHRoPSI4MDAiIGhlaWdodD0iNDUwIiBzcmM9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL0xWa2Y4SFliMUdvIiBmcmFtZWJvcmRlcj0iMCIgYWxsb3c9ImFjY2VsZXJvbWV0ZXI7IGF1dG9wbGF5OyBlbmNyeXB0ZWQtbWVkaWE7IGd5cm9zY29wZTsgcGljdHVyZS1pbi1waWN0dXJlIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+DQo8L2NlbnRlcj4NCg0KIyMgUXVlc3Rpb24NCg0KKiBXaGF0IGlzIGEgUG9pc3NvbiBkaXN0cmlidXRpb24gaW4gU3RhdGlzdGljcz8NCiogV2hlbiBhbmQgV2h5IGlzIFBvaXNzb24gZGlzdHJpYnV0aW9uIHVzZWQ/DQoqIFdoYXQgaXMgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBCaW5vbWlhbCBkaXN0cmlidXRpb24gYW5kIFBvaXNzb24gZGlzdHJpYnV0aW9uPw0KKiBJZiB0d2VudHkgY2FycyBhcmUgY3Jvc3NpbmcgYSBicmlkZ2UgcGVyIG1pbnV0ZSBvbiBhdmVyYWdlLCB2aXN1YWxpemUgYW5kIGZpbmQgdGhlIHByb2JhYmlsaXR5IG9mIGhhdmluZyB0aGlydGVlbiBvciBtb3JlIGNhcnMgY3Jvc3NpbmcgdGhlIGJyaWRnZSBpbiBhIHBhcnRpY3VsYXIgbWludXRlIChFeHBsYWluIHRoaXMgZXhlcmNpc2UgYnkgdXNpbmcgUikuDQoqIFN1cHBvc2UgdGhlIHByb2JhYmlsaXR5IHRoYXQgYSBkcnVnIHByb2R1Y2VzIGEgY2VydGFpbiBzaWRlIGVmZmVjdCBpcyAkcCA9IDAuMSUkIGFuZCAkbiA9IDEsMDAwJCBwYXRpZW50cyBpbiBhIGNsaW5pY2FsIHRyaWFsIHJlY2VpdmUgdGhlIGRydWcuIFdoYXQgaXMgdGhlIHByb2JhYmlsaXR5IDAgcGVvcGxlIGV4cGVyaWVuY2UgdGhlIHNpZGUgZWZmZWN0IGJ5IHVzaW5nIHZpc3VhbGl6YXRpb24gdGVjaG5pcXVlcz8gKEV4cGxhaW4gdGhpcyBleGVyY2lzZSBieSB1c2luZyBSKQ0KDQoNCiMjIEFuc3dlcg0KDQoqIFBvaXNzb24gRGlzdHJpYnV0aW9uIGluIHN0YXRpc3RpYyBpcyBhIGRpc3RyaWJ1dGlvbiB0aGF0IHNob3dzIGhvdyBtYW55IHRpbWVzIGFuIGV2ZW50IGlzIHBvc3NpYmxlIHRvIGhhcHBlbiB3aXRoaW4gYSBzcGVjaWZpYyBwZXJpb2QgdGltZS4gSXQgc3RhcnQgd2l0aCBsZXR0ZXIgUG8gYW5kIGEgc2luZ2xlIHZhbHVlIHBhcmFtZXRlciwgbGFtYmRhLiBJdCBpcyBhbHNvIGRlYWxzIHdpdGggdGhlIGZyZXF1ZW5jeSB3aXRoIHdoaWNoIGFuIGV2ZW50IG9jY3VycyB3aXRoaW4gYSBzcGVjaWZpYyBpbnRlcnZhbC4gU2ltcGx5IHB1dCwgaXQgcmVxdWlyZXMga25vd2luZyBob3cgb2Z0ZW4gaXQgb2NjdXJzIGZvciBhIHNwZWNpZmljIHBlcmlvZCBvZiB0aW1lIG9yIGRpc3RhbmNlLg0KDQoqIFBvaXNzb24gZGlzdHJpYnV0aW9uIGlzIHVzZWQgd2hlbiB0aGVyZSBhcmUgaW5kZXBlbmRlbnQgZXZlbnRzIHdoaWNoIGhhcHBlbiBhdCBhIGluc3RhbnQgcmF0ZSBpbiBpbnRlcnZhbCBvZiB0aW1lLiBJdCBpcyB1c2VkIGJlY2F1c2UgaXQgY2FuIGJlIGEgdG9vbCB0aGF0IGhlbHBzIHBlb3BsZSB0byBwcmVkaWN0IHRoZSBwcm9iYWJpbGl0eSBvZiBjZXJ0YWluIGV2ZW50cyBmcm9tIGhhcHBlbmluZyB3aGVuIHdlIGtub3cgaG93IG9mdGVuIHRoZSBldmVudCBoYXMgb2NjdXJlZCBhbmQgaXQgZ2l2ZXMgdXMgdGhlIHByb2JhYmlsaXR5IG9mIGEgZ2l2ZW4gbnVtYmVyIG9mIGV2ZW50cyBoYXBwZW5pbmcgaW4gYSBmaXhlZCBpbnRlcnZhbCBvZiB0aW1lDQoNCiogVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBCaW5vbWlhbCBkaXN0cmlidXRpb24gYW5kIFBvaXNzb24gZGlzdHJpYnV0aW9uIGFyZQ0KDQotIFRoZSBiaW5vbWlhbCBkaXN0cmlidXRpb24gaXMgb25seSBmb3IgdGhlIHByb2JhYmlsaXR5IG9mIHN1Y2VzcyBvbiBhIGNlcnRhaW4gZnJhbWUgd2hpbGUgdGhlIHBvaXNzb24gZGlzdHJpYnV0aW9uIGlzIHVzZWQgZm9yIGV2ZW50cyB3aGljaCBjb3VsZCBvY2N1ciBhIHZlcnkgbGFyZ2UgbnVtYmVyIG9mIHRpbWVzLg0KDQotIFRoZSBCaW5vbWlhbCBkaXN0cmlidXRpb24gb25seSBoYXMgMiBvdXRjb21lcywgc3VjY2VzcyBvciBmYWlsdXJlIGFuZCB0aGUgcG9pc3NvbiBkaXN0cmlidXRpb24gaGFzIG5vIGxpbWl0IG9mIHBvc3NpYmxlIG91dGNvbWUNCg0KLSBUaGUgcHJvYmFiaWxpdHkgb2Ygc3VjZXNzIGluIGJpbm9taWFsIGRpc3RyaWJ1dGlvbiBpcyBjb25zdGFudCBhbmQgaW4gcG9pc3NvbiBkaXN0cmlidXRpb24gaGFzIHRpbnkgYWJpbGl0eSB0byBzdWNjZWQuDQoNCiogV2hhdCB3ZSBrbm93OiAyMCBjYXJzIGNyb3NzaW5nLyBtaW51dGUgb24gYXZlcmFnZQ0Kd2hhdCB3ZSBuZWVkIHRvIGZpbmQ6IGZpbmQgdGhlIHByb2JhYmlsaXR5IG9mIGhhdmluZyA+PSAxMyBjYXJzIGluIGEgcGFydGljdWxhciBtaW51dGUgYW5kIHZpenVhbGlzZQ0KDQpBdmVyYWdlIG51bWJlciBvZiBjYXJzIGNyb3NzaW5nIHBlciBtaW51dGUgaXMgJM68PTIwJA0KDQp3ZSB3aWxsIHVzZSBwcG9pcyBmdW5jdGlvbiB0byBmaW5kIHRoZSBwb3JiYWJpbGl0eSBvZiBoYXZpbmcgb3IgbW9yZSAxMyBjYXJzLCBzbyB3ZSB3aWxsIHVzZSBsb3dlci50cmFpbD0gRiBhbmQgc2V0IHEgYXQgMTYNCg0KYGBge3J9DQpsaWJyYXJ5KGdncGxvdDIpDQpsaWJyYXJ5KGRwbHlyKQ0KcHBvaXMoMTMgLCBsYW1iZGE9MjAgLCBsb3dlci50YWlsID0gVCkNCmBgYA0KDQpXZSBoYXZlIDYuNjEyNzY0JSBwcm9iYWJpbGl0eSBvZiBoYXZpbmcgMTMgb3IgbW9yZSBjYXJzIGNyb3NzaW5nIHRoZSBicmlkZ2VyIGluIGFueSBwYXJ0aWN1bGFyIG1pbnV0ZSBpbiB0aGUgdXBwZXIgdGFpbCBvZiB0aGUgcHJvYmFiaWxpdHkgZGVuc2l0eSBmdW5jdGlvbg0KDQpgYGB7cn0NCmxpYnJhcnkoZ2dwbG90MikNCmxpYnJhcnkoZHBseXIpDQpwcG9pcygxMyAsIGxhbWJkYT0yMCAsIGxvd2VyLnRhaWwgPSBGKQ0KYGBgDQoNCldlIGhhdmUgOTMuMzg3MjQlIHByb2JhYmlsaXR5IG9mIGhhdmluZyAxMyBvciBtb3JlIGNhcnMgY3Jvc3NpbmcgdGhlIGJyaWRnZXIgaW4gYW55IHBhcnRpY3VsYXIgbWludXRlLiANCg0KKg0KDQoNCiMgVW5pZm9ybSBEaXN0cmlidXRpb24gKENvbnRpbnVvdXMgb3IgRGlzY3JldGUpIHsudGFic2V0IC50YWJzZXQtZmFkZSAudGFic2V0LXBpbGxzfQ0KDQo8Y2VudGVyPg0KPGlmcmFtZSB3aWR0aD0iODAwIiBoZWlnaHQ9IjQ1MCIgc3JjPSJodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC8zQzltcGotTllnbyIgZnJhbWVib3JkZXI9IjAiIGFsbG93PSJhY2NlbGVyb21ldGVyOyBhdXRvcGxheTsgZW5jcnlwdGVkLW1lZGlhOyBneXJvc2NvcGU7IHBpY3R1cmUtaW4tcGljdHVyZSIgYWxsb3dmdWxsc2NyZWVuPjwvaWZyYW1lPg0KPC9jZW50ZXI+DQoNCiMjIFF1ZXN0aW9uDQoNCiogSG93IGRvIHlvdSBmaW5kIHRoZSBjb250aW51b3VzIHVuaWZvcm0gZGlzdHJpYnV0aW9uPw0KKiBJcyB0aGUgdW5pZm9ybSBkaXN0cmlidXRpb24gZGlzY3JldGUgb3IgY29udGludW91cz8NCiogV2hhdCBkb2VzIGl0IG1lYW4gdG8gaGF2ZSBhIHVuaWZvcm0gZGlzdHJpYnV0aW9uPw0KKiBIb3cgZG8geW91IHNvbHZlIHVuaWZvcm0gZGlzdHJpYnV0aW9uIHByb2JsZW1zIHVzaW5nIFI/DQoNCg0KIyMgQW5zd2VyDQoNCiogVGhlIGNvbnRpbm91cyB1bmlmb3JtIGRpc3RyaWJ1dGlvbiBpcyBhIGNvbnRpbm91cyBwcm9iYWJpbGl0eSBkaXN0cmlidXRpb24gYW5kIHdlIGNhbiBmaW5kIHdoZW4gaXQgaXMgY29uY2VybmVkIHdpdGggZXZlbnRzIHRoYXQgYXJlIGVxdWFsbHkgbGlrZWx5IHRvIG9jY3VyLkFsc28sIHdoZW4gIHRoZSBjZGYgdGhhdCB0aGUgZnVuY3Rpb24gaXMgY29udGludW91cywgaXMgZG9lcyBub3QgZ28gaW4gc3RlcHMgbGlrZSB0aGUgZGlzY3JldGUgY2FzZS4gRnVydGhlciwgdGhlIHByb2JhYmlsaXR5IGRlbnNpdHkgZnVuY3Rpb24gdGFrZXMgdmFsdWVzIGluIHRoZSByYW5nZSBhIHRvIGIuIEFuIGV4YW1wbGUgb2YgdGhlIGNvbnRpbm91cyB1bmlmb3JtIGRpc3RyaWJ1dGlvbiBpcyBhbiBpZGVhbGl6ZWQgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IuDQoNCiogVW5pZm9ybSBkaXN0cmlidXRpb24gaXMgZGl2aWRlZCBpbnRvIGNhdGVnb3JpZXMgd2hpY2ggYXJlIGRpc2NyZXRlIHVuaWZvcm0gZGlzdHJpYnV0aW9ucyBhbmQgY29udGludW91cyB1bmlmb3JtIGRpc3RyaWJ1dGlvbi4gRGlzY3JldGUgdW5pZm9ybSBkaXN0cmlidXRpb25zIGhhdmUgYSBmaW5pdGUgbnVtYmVyIG9mIG91dGNvbWVzLiBBIGNvbnRpbnVvdXMgdW5pZm9ybSBkaXN0cmlidXRpb24gaXMgYSBzdGF0aXN0aWNhbCBkaXN0cmlidXRpb24gd2l0aCBhbiBpbmZpbml0ZSBudW1iZXIgb2YgZXF1YWxseSBsaWtlbHkgbWVhc3VyYWJsZSB2YWx1ZXMuDQoNCiogSXQgbWVhbnMgdGhlIG91dGNvbWVzIG9mIHVuaWZvcm0gZGlzdHJpYnV0aW9uIGhhdmUgZXF1YWwgcHJvYmFiaWxpdHksIHRoZSBtZWFuIGFuZCB0aGUgdmFyaWFuY2UgYXJlIHVuaXRlcnByZXRhYmxlLCBhbmQgcG9zc2VzcyBubyBwcmVkaWN0aWNlIHBvd2VyLg0KDQoqIFdlIHNvbHZlIHVuaWZvcm0gZGlzdHJpYnV0aW9uIHByb2JsZW1zIHVzaW5nIFIgYnkgYXBwbHlpbmcgdGhlIGZ1bmN0aW9uIHJ1bmlmLiBUaGUgcnVuaWYoKSBmdW5jdGlvbiBnZW5lcmF0ZXMgcmFuZG9tIGRldmlhdGVzIG9mIHRoZSB1bmlmb3JtIGRpc3RyaWJ1dGlvbiBhbmQgaXMgd3JpdHRlbi4gV2UgYWxzbyB1c2UgZHVuaWYoKSBmdW5jdGlvbiBnaXZlcyB0aGUgZGVuc2l0eQ0KDQojIEV4cG9uZW50aWFsIERpc3RyaWJ1dGlvbiB7LnRhYnNldCAudGFic2V0LWZhZGUgLnRhYnNldC1waWxsc30NCg0KPGNlbnRlcj4NCjxpZnJhbWUgd2lkdGg9IjgwMCIgaGVpZ2h0PSI0NTAiIHNyYz0iaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvMmtnMU8wajFKOWMiIGZyYW1lYm9yZGVyPSIwIiBhbGxvdz0iYWNjZWxlcm9tZXRlcjsgYXV0b3BsYXk7IGVuY3J5cHRlZC1tZWRpYTsgZ3lyb3Njb3BlOyBwaWN0dXJlLWluLXBpY3R1cmUiIGFsbG93ZnVsbHNjcmVlbj48L2lmcmFtZT4NCjwvY2VudGVyPg0KDQojIyBRdWVzdGlvbg0KDQoqIFdoYXQgaXMgZXhwb25lbnRpYWwgZGlzdHJpYnV0aW9uIGV4YW1wbGU/DQoqIFdoYXQgaXMgdGhlIGV4cG9uZW50aWFsIGRpc3RyaWJ1dGlvbiB1c2VkIGZvcj8NCiogV2hhdCBpcyBleHBvbmVudGlhbCBkaXN0cmlidXRpb24gcmF0ZT8NCiogSXMgZXhwb25lbnRpYWwgZGlzdHJpYnV0aW9uIGRpc2NyZXRlIG9yIGNvbnRpbnVvdXM/DQoqIFN1cHBvc2UgdGhlIG1lYW4gY2hlY2tvdXQgdGltZSBvZiBhIHN1cGVybWFya2V0IGNhc2hpZXIgaXMgdGhyZWUgbWludXRlcy4gRmluZCB0aGUgcHJvYmFiaWxpdHkgb2YgYSBjdXN0b21lciBjaGVja291dCBiZWluZyBjb21wbGV0ZWQgYnkgdGhlIGNhc2hpZXIgaW4gbGVzcyB0aGFuIHR3byBtaW51dGVzIChFeHBsYWluIHRoaXMgZXhlcmNpc2UgYnkgdXNpbmcgUikuDQoNCg0KIyMgQW5zd2VyDQoNCiogVGhlIGV4cG9uZW50aWFsIGRpc3JpYnV0aW9uIGV4YW1wbGUgaXMgYWN0dWFsbHkgdGhlIHRpbWUgYmV0d2VlbiBldmVudHMgaW4gYSBwb2lzc29uIHByb2Nlc3MuIGl0IGlzIGFsc28gZGVzY3JpYmVzIHRoZSBhcnJpdmFsIHRpbWUgb2YgYSByYW5kb21seSByZWN1cnJpbmcgaW5kZXBlbmRlbnQgZXZlbnQgc2VxdWVuY2VUaGUgZXhwb25lbnRpYWwgZGlzdHJpYnV0aW9uIGV4YW1wbGUgbGVuZ3RoLCB0aGUgYW1vdW50IG9mIHRpbWUsIGluIG1vbnRocywgYW5kIHRoZSBhbW91bnQgb2YgdGltZSB1bnRpbCBhIHRzdW5hbWkgb2NjdXJzLg0KDQoqIFRoZSBleHBvbmVudGlhbCBkaXN0cmlidXRpb24gaXMgYSBjb250aW5vdXMgcHJvYmFiaWxpdHkgZGl0cmlidXRpb24gdXNlZCBmb3IgbW9kZWxsaW5nIHRoZSB0aW1lIHdlIG5lZWQgdG8gd2FpdCBiZWZvcmUgYSBnaXZlbiBldmVudCBvY2N1cnMuDQoNCiogVGhlIGV4cG9uZW50aWFsIGRpc3RyaWJ1dGlvbiByYXRlIGlzICA9IDAgYW5kIM6yID0gMSwgeCDiiaUgzrw7IM6yID4gMA0KDQoqIFRoZSBleHBvbmVudGlhbCBkaXN0cmlidXRpb24gaXMgb25lIG9mIHRoZSB3aWRlbHkgdXNlZCAgY29udGludW91cyBkaXN0cmlidXRpb24gDQoNCiogV2hhdCB3ZSBrbm93OiBtZWFuID0gMyBtaW51dGVzDQpXaGF0IHdlIHdhbnQgdG8ga25vdzogcHJvYmFiaWxpdHkgYmVpbmcgY2hlY2tvdXQgYW5kIGNvbXBsZXRlZCBpbiBsZXNzIHRoYW4gdHdvIG1pbnV0ZXMNCg0KYGBge3J9DQpwZXhwKDIsIHJhdGUgPSAxLzMpDQpgYGANCg0KVGhlIHByb2JhYmlsaXR5IGlzIDQ4LjY1ODI5JQ0KDQojIE5vcm1hbCBEaXN0cmlidXRpb24gey50YWJzZXQgLnRhYnNldC1mYWRlIC50YWJzZXQtcGlsbHN9DQoNCjxjZW50ZXI+DQo8aWZyYW1lIHdpZHRoPSI4MDAiIGhlaWdodD0iNDUwIiBzcmM9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL0lodG1XMjhzbER3IiBmcmFtZWJvcmRlcj0iMCIgYWxsb3c9ImFjY2VsZXJvbWV0ZXI7IGF1dG9wbGF5OyBlbmNyeXB0ZWQtbWVkaWE7IGd5cm9zY29wZTsgcGljdHVyZS1pbi1waWN0dXJlIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+DQo8L2NlbnRlcj4NCg0KPGNlbnRlcj4NCjxpZnJhbWUgd2lkdGg9IjgwMCIgaGVpZ2h0PSI0NTAiIHNyYz0iaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvY29BOGd6OVVhY2ciIGZyYW1lYm9yZGVyPSIwIiBhbGxvdz0iYWNjZWxlcm9tZXRlcjsgYXV0b3BsYXk7IGVuY3J5cHRlZC1tZWRpYTsgZ3lyb3Njb3BlOyBwaWN0dXJlLWluLXBpY3R1cmUiIGFsbG93ZnVsbHNjcmVlbj48L2lmcmFtZT4NCjwvY2VudGVyPg0KDQojIyBRdWVzdGlvbg0KDQoqIFdoYXQgaXMgYSBub3JtYWwgZGlzdHJpYnV0aW9uIGFuZCBTdGFuZGFyZCBOb3JtYWwgRGlzdHJ1YnV0aW9uIGluIFN0YXRpc3RpY3M/DQoqIFdoeSBpcyBpdCBjYWxsZWQgbm9ybWFsIGRpc3RyaWJ1dGlvbj8NCiogSG93IGRvIHlvdSBjYWxjdWxhdGUgbm9ybWFsIGRpc3RyaWJ1dGlvbj8NCiogV2hhdCBhcmUgdGhlIGNoYXJhY3RlcmlzdGljcyBvZiBhIG5vcm1hbCBkaXN0cmlidXRpb24/DQoqIFRoZSBhbm51YWwgc2FsYXJpZXMgb2YgZW1wbG95ZWVzIGluIGEgbGFyZ2UgY29tcGFueSBhcmUgYXBwcm94aW1hdGVseSBub3JtYWxseSBkaXN0cmlidXRlZCB3aXRoIGEgbWVhbiBvZiAkNTAsMDAwIGFuZCBhIHN0YW5kYXJkIGRldmlhdGlvbiBvZiAkMjAsMDAwIChFeHBsYWluIHRoaXMgZXhlcmNpc2UgYnkgdXNpbmcgUikuDQogIC0gV2hhdCBwZXJjZW50IG9mIHBlb3BsZSBlYXJuIGxlc3MgdGhhbiAkNDAsMDAwPw0KICAtIFdoYXQgcGVyY2VudCBvZiBwZW9wbGUgZWFybiBiZXR3ZWVuICQ0NSwwMDAgYW5kICQ2NSwwMDA/DQogIC0gV2hhdCBwZXJjZW50IG9mIHBlb3BsZSBlYXJuIG1vcmUgdGhhbiAkNzAsMDAwPw0KDQoNCiMjIEFuc3dlcg0KDQoqIEluIHN0YXRpc3RpY3MsIHRoZSBub3JtYWwgZGlzdHJpYnV0aW9uIGlzIHRoZSBmdW5jdGlvbiBvZiBwcm9iYWJpbGl0eSB0aGF0IHBvcnRyYXlzIGhvdyB0aGUgdmFsdWVzIG9mIGEgdmFyaWFibGUgYXJlIGRpc3RyaWJ1dGVkIGFuZCBpdCBncmFwaCBzaG93cyB0aGF0IHRoZSBtYWpvcml0eSBvZiB0aGUgZGF0YSBjZW50ZXIgYXJvdW5kIHRoZSBtZWFuLiBUaGUgc3RhbmRhcmQgbm9ybWFsIGRpc3RyaWJ1dGlvbiAoYWxzbyBrbm93biBhcyBaIGRpc3RyaWJ1dGlvbikgaXMgYSBub3JtYWwgZGlzdHJpYnV0aW9uIHdpdGggYSBtZWFuIG9mIDAgYW5kIGEgc3RhbmRhcmQgZGV2aWF0aW9uIG9mIDEuQWxzbywgaXQgaXMgemVyby1jZW50ZXJlZCBhbmQgdGhlIGV4dGVudCB0byB3aGljaCBhIHBhcnRpY3VsYXIgbWVhc3VyZW1lbnQgZGV2aWF0ZXMgZnJvbSB0aGUgbWVhbiBpcyBnaXZlbiBieSB0aGUgc3RhbmRhcmQgZGV2aWF0aW9uLg0KDQoqIEl0IGlzIGNhbGxlZCBub3JtYWwgZGlzdHJpYnV0aW9uIGJlY2F1c2UgaXRzIGRpc3RyaWJ1dGlvbiBhcmUgYXQgbGVhc3QgYXBwcm94aW1hdGVseSBub3JtYWxseSBkaXN0cmlidXRlZCBhbmQgaGFzIG1lYW49IG1lZGlhbj0gbW9kZSwgc3ltbWV0cnkgYWJvdXQgdGhlIGNlbnRlciwgYW5kIDUwJSBvZiB2YWx1ZXMgbGVzcyB0aGFuIHRoZSBtZWFuIGFuZCA1MCUgZ3JlYXRlciB0aGFuIHRoZSBtZWFuLiBBbHNvLCBpdCBhcHByb3hpbWF0ZXMgdGhlIGJpbm9taWFsIHByb2JhYmlsaXRlcyB3ZWxsLg0KDQoqIHdlIGNhbiBjYWxjdWxhdGUgbm9ybWFsIGRpc3RyaWJ1dGlvbiBpbiBSIHVzaW5nIHBub3JtIGZ1bmN0aW9uLiBwbm9ybSBmdW5jdGlvbiBoYXMgdGhlIHNhbWUgZGVmYXVsdCBtZWFuIGFuZCBzZCBhcmd1bWVudHMgYXMgZG5vcm0uIFRoZSBmdW5jdGlvbiBwbm9ybSByZXR1cm5zIHRoZSBpbnRlZ3JhbCBmcm9tIG1pbnVzIGluZmluaXRlIHRvIHEgb2YgdGhlIHBkZiBvZiB0aGUgbm9tYWwgZGlzdHJpYnV0aW9uIHdoZXJlIHEgaXMgYSBaLXNjb3JlLiBpdCBpcyB0aGUgZnVuY3Rpb24gdGhhdCByZXBsYWNlcyB0aGUgdGFibGUgb2YgcHJvYmFiaWxpdGVzIGFuZCBaLXNjb3Jlcy4NCg0KKiBUaGUgY2hhcmFjdGVyaXN0aWNzIG9mIGEgbm9tcmFsIGRpc3RyaWJ1dGlvbnMgYXJlDQotIHN5bW1ldHJpYw0KLSB1bmltb2RhbA0KLSBhc3ltcHRvdGljDQotIHRoZSBtZWFuLCBtZWRpYSwgYW5kIG1vZGUgYXJlIGVxdWFsLg0KDQoqIA0KYGBge3J9DQpwbm9ybSg0MDAwMCwgbWVhbj01MDAwMCwgc2Q9MjAwMDApDQoNCnBub3JtKDY1MDAwLCBtZWFuPTUwMDAwLCBzZD0yMDAwMCktcG5vcm0oNDUwMDAsbWVhbj01MDAwMCwgc2Q9MjAwMDApDQoNCnBub3JtKDcwMDAwLG1lYW49NTAwMDAsc2Q9MjAwMDApDQpgYGANCg0KDQoNCg0KIyBDaGktc3F1YXJlZCBEaXN0cmlidXRpb24gey50YWJzZXQgLnRhYnNldC1mYWRlIC50YWJzZXQtcGlsbHN9DQoNCjxjZW50ZXI+DQo8aWZyYW1lIHdpZHRoPSI4MDAiIGhlaWdodD0iNDUwIiBzcmM9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL0ZFRWpsM0tEZzFrIiBmcmFtZWJvcmRlcj0iMCIgYWxsb3c9ImFjY2VsZXJvbWV0ZXI7IGF1dG9wbGF5OyBlbmNyeXB0ZWQtbWVkaWE7IGd5cm9zY29wZTsgcGljdHVyZS1pbi1waWN0dXJlIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+DQo8L2NlbnRlcj4NCg0KIyMgUXVlc3Rpb24NCg0KKiBXaGF0IGlzIHRoZSBjaGkgc3F1YXJlIGRpc3RyaWJ1dGlvbiB1c2VkIGZvcj8NCiogV2hhdCBpcyB0aGUgY2hpIHNxdWFyZSBkaXN0cmlidXRpb24gZm9ybXVsYT8NCiogV2hhdCBpcyB0aGUgY2hpIGRpc3RyaWJ1dGlvbj8NCiogSXMgQ2hpIHNxdWFyZSBkaXN0cmlidXRpb24gY29udGludW91cz8NCiogMjU2IHZpc3VhbCBhcnRpc3RzIHdlcmUgc3VydmV5ZWQgdG8gZmluZCBvdXQgdGhlaXIgem9kaWFjIHNpZ24uIFRoZSByZXN1bHRzIHdlcmU6IEFyaWVzICgyOSksIFRhdXJ1cyAoMjQpLCBHZW1pbmkgKDIyKSwgQ2FuY2VyICgxOSksIExlbyAoMjEpLCBWaXJnbyAoMTgpLCBMaWJyYSAoMTkpLCBTY29ycGlvICgyMCksIFNhZ2l0dGFyaXVzICgyMyksIENhcHJpY29ybiAoMTgpLCBBcXVhcml1cyAoMjApLCBQaXNjZXMgKDIzKS4gVGVzdCB0aGUgaHlwb3RoZXNpcyB0aGF0IHpvZGlhYyBzaWducyBhcmUgZXZlbmx5IGRpc3RyaWJ1dGVkIGFjcm9zcyB2aXN1YWwgYXJ0aXN0cyAoRXhwbGFpbiB0aGlzIGV4ZXJjaXNlIGJ5IHVzaW5nIFIpLg0KDQoNCiMjIEFuc3dlcg0KDQoqIENoaSBzcXVhcmUgZGlzdHJpYnV0aW9uIGlzIHVzZWQgZm9yIGh5cG90aGVzaXMgdGVzdGluZywgY29tcHV0aW5nIGNvbmZpZGVuY2UgaW50ZXJ2YWwsIGRldGVybWluaW5nIHRoZSBnb29kbmVzcyBvZiBmaXQNCg0KKiBUaGUgY2hpIHNxdWFyZSBkaXN0cmlidXRpb24gZm9ybXVsYSBpcyBjYXBpdGFsIEdyZWVrIGxldHRlciBjaGkgc3F1YXJlZCBmb2xsb3dlZCBieSBhIHBhcmFtZXRlciJsIGRwaWN0aW5nIHRoZSBkZWdyZXNzIG9mIGZyZWVkb20uIFNvLCB3ZSBjYW4gcmVhZCBpdCB3aXRoIHZhcmlhYmxlIGFzICJWYXJpYWJsZSBZIGZvbGxvd3MgYSBjaGkgc3F1YXJlIGRpc3RyaWJ1dGlvbiB3aXRoIGRlZ3Jlc3Mgb2YgZnJlZGRvbS4gIA0KDQoqIENoaSBzcXVhcmUgZGlzdHJpYnV0aW9uIGlzIHRoZSBkaXN0cmlidXRpb24gb2YgdGhlIHN1bSBvZiBzcXVhcmVkIHN0YW5kYXJkIG5vcm1hbCBkZXZpYXRlcy4NCg0KKiBDaGkgc3F1YXJlIGRpc3RyaWJ1dGlvbiBpcyBjb250aW51b3VzDQoNCioNCg0KIyBTdHVkZW50ICR0JCBEaXN0cmlidXRpb24gey50YWJzZXQgLnRhYnNldC1mYWRlIC50YWJzZXQtcGlsbHN9DQoNCjxjZW50ZXI+DQo8aWZyYW1lIHdpZHRoPSI4MDAiIGhlaWdodD0iNDUwIiBzcmM9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL3Q0aHBqSzF6NXVZIiBmcmFtZWJvcmRlcj0iMCIgYWxsb3c9ImFjY2VsZXJvbWV0ZXI7IGF1dG9wbGF5OyBlbmNyeXB0ZWQtbWVkaWE7IGd5cm9zY29wZTsgcGljdHVyZS1pbi1waWN0dXJlIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+DQo8L2NlbnRlcj4NCg0KIyMgUXVlc3Rpb24NCg0KKiBXaGF0IGlzIHRoZSBTdHVkZW50ICR0JCBkaXN0cmlidXRpb24gdXNlZCBmb3I/DQoqIFdoeSBpcyBpdCBjYWxsZWQgU3R1ZGVudCAkdCQgZGlzdHJpYnV0aW9uPw0KKiBIb3cgZG8geW91IGZpbmQgdGhlIFN0dWRlbnQgJHQkIGRpc3RyaWJ1dGlvbj8NCiogV2hhdCBraW5kIG9mIGRpc3RyaWJ1dGlvbiBpcyB0aGUgJHQkIGRpc3RyaWJ1dGlvbj8NCiogUGhpbGlwcyBDb3Jwb3JhdGlvbiBtYW51ZmFjdHVyZXMgbGlnaHQgYnVsYnMuIFRoZSBDRU8gY2xhaW1zIHRoYXQgYW4gYXZlcmFnZSBBY21lIGxpZ2h0IGJ1bGIgbGFzdHMgMzAwIGRheXMuIEEgcmVzZWFyY2hlciByYW5kb21seSBzZWxlY3RzIDE1IGJ1bGJzIGZvciB0ZXN0aW5nLiBUaGUgc2FtcGxlZCBidWxicyBsYXN0IGFuIGF2ZXJhZ2Ugb2YgMjkwIGRheXMsIHdpdGggYSBzdGFuZGFyZCBkZXZpYXRpb24gb2YgNTAgZGF5cy4gSWYgdGhlIENFTydzIGNsYWltIHdlcmUgdHJ1ZSwgd2hhdCBpcyB0aGUgcHJvYmFiaWxpdHkgdGhhdCAxNSByYW5kb21seSBzZWxlY3RlZCBidWxicyB3b3VsZCBoYXZlIGFuIGF2ZXJhZ2UgbGlmZSBvZiBubyBtb3JlIHRoYW4gMjkwIGRheXM/IChFeHBsYWluIHRoaXMgZXhlcmNpc2UgYnkgdXNpbmcgUikNCg0KPiBOb3RlOiBUaGVyZSBhcmUgdHdvIHdheXMgdG8gc29sdmUgdGhpcyBwcm9ibGVtLCB1c2luZyB0aGUgVCBEaXN0cmlidXRpb24gQ2FsY3VsYXRvci4gQm90aCBhcHByb2FjaGVzIGFyZSBwcmVzZW50ZWQgYmVsb3cuIFNvbHV0aW9uIEEgaXMgdGhlIHRyYWRpdGlvbmFsIGFwcHJvYWNoLiBJdCByZXF1aXJlcyB5b3UgdG8gY29tcHV0ZSB0aGUgdCBzdGF0aXN0aWMsIGJhc2VkIG9uIGRhdGEgcHJlc2VudGVkIGluIHRoZSBwcm9ibGVtIGRlc2NyaXB0aW9uLiBUaGVuLCB5b3UgdXNlIHRoZSBUIERpc3RyaWJ1dGlvbiBDYWxjdWxhdG9yIHRvIGZpbmQgdGhlIHByb2JhYmlsaXR5LiBTb2x1dGlvbiBCIGlzIGVhc2llci4gWW91IHNpbXBseSBlbnRlciB0aGUgcHJvYmxlbSBkYXRhIGludG8gdGhlIFQgRGlzdHJpYnV0aW9uIENhbGN1bGF0b3IuIFRoZSBjYWxjdWxhdG9yIGNvbXB1dGVzIGEgdCBzdGF0aXN0aWMgImJlaGluZCB0aGUgc2NlbmVzIiwgYW5kIGRpc3BsYXlzIHRoZSBwcm9iYWJpbGl0eS4gQm90aCBhcHByb2FjaGVzIGNvbWUgdXAgd2l0aCBleGFjdGx5IHRoZSBzYW1lIGFuc3dlci4NCg0KDQojIyBBbnN3ZXINCg0KKiBUaGUgc3R1ZGVudCAkdCQgZGlzdHJpYnV0aW9uIHVzZWQgZm9yIGVzdGltYXRpbmcgcG9wdWxhdGlvbiBwYXJhbWV0ZXJzIHdoZW4gdGhlIHNhbXBsZSBzaXplIGlzIHNtYWxsIG9yIHdoZW4gdGhlIHBvcHVsYXRpb24gdmFyaWFuY2UgaXMgdW5rbm93bg0KDQoqIEl0IGlzIGNhbGxlZCBTdHVkZW50ICR0JCBkaXN0cmlidXRpb24gYmVjYXVzZSBHb3NzZXQncyBlbXBsb3llciBwcmVmZXJyZWQgc3RhZmYgdG8gdXNlIHBlbiBuYW1lcyBzbyBoZSB1c2VkIHRoZSBuYW1lICJTdHVkZW50IiB0byBoaWRlIGhpcyBpZGVudGl0eS4gQWxzbywgaXQgYmVjb21lIHdlbGwga25vd24gd2hlbiBSb25hbGQgRmlzaGVyIHdobyBjYWxsZWQgdGhlIGRpc3RyaWJ1dGlvbiBhcyAiU3R1ZGVudCdzIGRpc3RyaWJ1dGlvbiIgYW5kIHJlcHJlc2VudGVkIHRoZSB0ZXN0IHZhbHVlIHdpdGggdGhlIGxldHRlciB0LkFsc28sICR0JCBkaXN0cmlidXRpb24gaGFzIG93biBjaGFyYXRlcmlzdHJpYyB3aGljaCBpcyB0aGUgbWVhbiBvZiB0aGUgZGlzdHJpYnV0aW9uIGlzIGVxdWFsIHRvIDAgYW5kIGl0cyBzdGFuZGFyZCBkZXZpYXRpb25zIGRpZmZlciBjY29yZGluZyB0byB0aGUgc2FtcGxlIHNpemUgbi4NCg0KKiBXZSAgY2FuIGZpbmQgdGhlIHN0dWRlbnQgJHQkIGRpc3RyaWJ1dGlvbiBieSBsb29raW5nIGF0IHRoZSBkaXN0cmlidXRpb24gaXQgc2VsZi4gSXQgaXMgc3ltbWV0cmljLCBiZWxsLXNoYXBlZCwgYW5kIGhhcyBoZWF2aWVyIHRhaWxzIHdoaWNoIG1lYW4gdGhhdCBpdCBpcyBtb3JlIGxpa2VseSB0byBwcm9jZSB2YWx1ZXMgdGhhdCBmYWxsIGZhciBmcm9tIGl0cyBtZWFuDQoNCiogVGhlIHN0dWRlbnQgJHQkIGRpc3RyaWJ1dGlvbiBpcyBhIGNvbnRpbnVvdXMgZGlzdHJpYml0aW9uLg0KDQoqDQoNCiMgRiBEaXN0cmlidXRpb24gey50YWJzZXQgLnRhYnNldC1mYWRlIC50YWJzZXQtcGlsbHN9DQoNCjxjZW50ZXI+DQo8aWZyYW1lIHdpZHRoPSI4MDAiIGhlaWdodD0iNDUwIiBzcmM9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL0dfUkR4QVpKLXVnIiBmcmFtZWJvcmRlcj0iMCIgYWxsb3c9ImFjY2VsZXJvbWV0ZXI7IGF1dG9wbGF5OyBlbmNyeXB0ZWQtbWVkaWE7IGd5cm9zY29wZTsgcGljdHVyZS1pbi1waWN0dXJlIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+DQo8L2NlbnRlcj4NCg0KIyMgUXVlc3Rpb24NCg0KKiBXaGF0IGRvZXMgRiBkaXN0cmlidXRpb24gbWVhbj8NCiogV2hhdCBkb2VzIHRoZSBGIGRpc3RyaWJ1dGlvbiB0ZWxsIHlvdT8NCiogV2hhdCBpcyBhbiBGIGRpc3RyaWJ1dGlvbiB1c2VkIGZvcj8NCiogSG93IGlzIHRoZSBGIGRpc3RyaWJ1dGlvbiBkZXJpdmVkPw0KKiBTdXBwb3NlIHlvdSByYW5kb21seSBzZWxlY3QgNyB3b21lbiBmcm9tIGEgcG9wdWxhdGlvbiBvZiB3b21lbiwgYW5kIDEyIG1lbiBmcm9tIGEgcG9wdWxhdGlvbiBvZiBtZW4uIFRoZSB0YWJsZSBiZWxvdyBzaG93cyB0aGUgc3RhbmRhcmQgZGV2aWF0aW9uIGluIGVhY2ggc2FtcGxlIGFuZCBpbiBlYWNoIHBvcHVsYXRpb24uIChDb21wdXRlIHRoZSBmIHN0YXRpc3RpYywgRXhwbGFpbiB0aGlzIGV4ZXJjaXNlIGJ5IHVzaW5nIFIpDQoNClBvcHVsYXRpb24JICBQb3B1bGF0aW9uIHN0YW5kYXJkIGRldmlhdGlvbgkgICAgU2FtcGxlIHN0YW5kYXJkIGRldmlhdGlvbg0KLS0tLS0tLS0tLSAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpXb21lbgkgICAgICAgICAgICAgICAzMAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzUNCk1lbgkgICAgICAgICAgICAgICAgIDUwCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0NQ0KDQoNCiMjIEFuc3dlcg0KDQoqIEYgZGlzdHJpYnV0aW9uIGlzIHRoZSBkZW5zaXR5IGZ1bmN0aW9uIG9mIGEgcHJvYmFiaWxpdHkgdGhhdCBpcyB1c2VkIGluIGFuYWx5c2lzIG9mIGNhcmlhbmNlIGFuZCBpcyBhIGZ1bmN0aW9uIG9mIHRoZSByYXRpbyBvZiB0d28gaW5kZXBlbmRlbnQgcmFuZG9tIHZhcmlhYmxlcyB3aGljaCBlYWNoIG9mIHRoZW0gaGFzIGEgY2hpIHNxdWFyZSBkaXN0cmlidXRpb24gYW5kIGlzIGRpdmlkZWQgYnkgaXRzIG51bWJlciBvZiBkZWdyZXNzIG9mIGZyZWVkb20uDQoNCg0KKiBGIGRpc3RyaWJ1dGlvbiB0ZWxscyB1cyB0aGUgdmFsdWUgdG8gZmluZCBvdXQgaWYgdGhlIG1lYW5zIGJldHdlZW4gdHdvIHBvcHVsYXRpb25zIGFyZSBzaWduaWZpY2FudGx5IGRpZmZlcmVudA0KDQoqIEYgZGlzdHJpYnV0aW9uIGlzIHVzZWQgZm9yIGRlY2lkaW5nIHRvIGFjY2VwdCBvciByZWplY3QgdGhlIG51bGwgaHlwb3RoZXNpcy4NCg0KKiBUaGUgRiBkaXN0cmlidXRpb24gaXMgZGVyaXZlZCBieSBkZWZpbmluZyB0aGUgcXVvdGllbnQgJFo9IFkvWCQuIFRoZW4gdGhlIFBERiBvZiBaIGNhbiBiZSBkZXRlcm1pbmVkIGZyb20gdGhlIHJlc3VsdCBvZiB0aGUgam9pbnQgZGlzdHJpYnV0aW9uIG9mIGEgcXVvdGllbnQuIE5vdywgdGhlIGdhbW1hIGZ1bmN0aW9uIGhhcyBiZWVuIGRlZmluZWQuIFRoZW4sIHdlIHVzZSB0aGUgc3Vic3RpdHV0aW9uICR0PXgoKHorMSkvMikkLiBUaGVyZWZvcmUsIHdlIGNhbiBmb3VuZCB0aGUgcXVvdGllbnQgJEY9KFkvbSkvKFgvbikkLiBTbywgYWZ0ZXIgdGhhdCB3ZSBjYW4gZGVjaWRlIGl0J3MgUERGLg0KDQoNCg==