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 a more valuable probability density function with many application, or we can be thought of as simply the probability of a Success or Failure (True or False) outcome in an experiment that is repeated multiple times. Binomial distribution is used to make model the number of successes in the number of samples n from the total population of N. 4 requirements needed to be a binomial distribution are:

~ There are a fixed number of trials. Think of trials as repetitions of an experiment. The letter n denotes the number of trials.

~ The random variable, , number of successes, is discrete.

~ There are only two possible outcomes, called “success” and “failure,” for each trial. The letter p denotes the probability of a success on any one trial, and q denotes the probability of a failure on any one trial. p + q = 1.

~ The n trials are independent and are repeated using identical conditions. Think of this as drawing WITH replacement. Because the n trials are independent, the outcome of one trial does not help in predicting the outcome of another trial.

Binomial distribution is not normal distribution, because Binomial distribution is discrete and normal distribution is continuous. This means that in binomial distribution there are no data points between any two data points. This is very different from a normal distribution which has continuous data points.

## [1] 0.1745595

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 statistics is a distribution function useful for characterizing events with very low probabilities of occurrence within some definite time or space. The Poisson distribution is applicable only when several conditions hold. There are conditions for Poisson distribution:

~ An event can occur any number of times during a time period.

~ Events occur independently. In other words, if an event occurs, it does not affect the probability of another event occurring in the same time period.

~ The rate of occurrence is constant; that is, the rate does not change based on time.

~ The probability of an event occurring is proportional to the length of the time period. For example, it should be twice as likely for an event to occur in a 2 hour time period than it is for an event to occur in a 1 hour period.

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. The difference between Binomial distribution and Poisson distribution is:

~ If your question has an average probability of an event happening per unit (i.e. per unit of time, cycle, event) and you want to find probability of a certain number of events happening in a period of time (or number of events), then use the Poisson Distribution.

~ If you are given an exact probability and you want to find the probability of the event happening a certain number out times out of x (i.e. 10 times out of 100, or 99 times out of 1000), use the Binomial Distribution formula.

## [1] 0.9338724
## [1] 0

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

We could find the continuous uniform distribution because that is one of the simplest probability distributions in statistics. It is a continuous distribution, this means that it takes values within a specified range, example: between 0 until 4. Distribution Uniform can be continuous or discrete. To have a uniform distribution, all outcomes must have a equal probability

##  [1] 2.477867 2.625134 1.493019 4.055915 3.214214 2.984814 3.369831 4.477995
##  [9] 2.357439 1.664951 3.041807 2.208930 1.106576 1.660057 2.200097 3.681368
## [17] 4.227799 3.382552 4.750185 3.420419

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 distribution is often concerned with the amount of time until some specific event occurs. For example, the amount of time (beginning now) until an earthquake occurs has an exponential distribution. Other examples include the length, in minutes, of long distance business telephone calls, and the amount of time in months. The exponential distribution is widely used in the field of reliability. Reliability deals with the amount of time a product lasts.

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. Exponential distribution is a continuous probability distribution

## [1] 0.4865829

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 dollars\) 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 dollars\) and $65,000?
    • What percent of people earn more than $70,000?

5.2 Answer

A normal distribution, sometimes called the bell curve, is a distribution that occurs naturally in many situations and describes how the values of a variable are distributed. The standard deviation is a measure of variability. It defines the width of the normal distribution. The standard deviation determines how far away from the mean the values tend to fall. It represents the typical distance between the observations and the average. It called Normal distribution because the normal distribution has mean (mean) equal to 0 and standard deviation equal to 1 which is represented as a bell-shaped curve. Calculating Normal distribution can be found by dividing \(1\) by the \(σ.√2πe\), then multiplying that value \(e^-1/2 . (x - μ / σ)^2\). The characteristics of a normal distribution are:

~ 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

## [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

The Chi Square distribution is used for many test statistics. Two of the more common tests using the Chi Square distribution are tests of deviations of differences between theoretically expected and observed frequencies (one-way tables) and the relationship between categorical variables (contingency tables).

The distribution of the chi-square statistic is called the chi-square distribution. The chi-square distribution is defined by the following probability density function: \(Y = Y0 * ( Χ2 ) ( v/2 - 1 ) * e-Χ2 / 2\)

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.

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 t distribution is a probability distribution that is used to estimate population parameters when the sample size is small and/or when the population variance is unknown.

The Student t is designed for use with small data sets for which the variance is unknown. This distribution was first described by W. S. Gosset, who published his work under the pen name “Student” because his employer, the Guinness brewery, would not permit him to publish it under his own name.

We could find the t-distribution 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.

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

  • 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 ditribution 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.

The F distribution tell that F-distribution is a skewed distribution of probabilities similar to a chi-squared distribution. But where the chi-squared distribution deals with the degree of freedom with one set of variables, the F-distribution deals with multiple levels of events having different degrees of freedom. This means that there are several versions of the F-distribution for differing levels of degrees of freedom.

F distribution is used when you are comparing more than two groups, you will need the F-distribution for the F-test. You can use the F statistic when deciding to support or reject the null hypothesis. In your F test results, you’ll have both an F value and an F critical value. The F critical value is also called the F statistic. The value you calculate from your data is called the F value (without the “critical” part).

The F-distribution is derived from a ratio involving two populations. There is a sample from each of these populations and thus there are degrees of freedom for both of these samples.

## [1] 1.680384
## [1] 0.595102
LS0tDQp0aXRsZTogJ1Byb2JhYmlsaXR5IERpc3RyaWJ1dGlvbnMnDQphdXRob3I6ICdJbWVsZGEgU2lhbnR1cmknDQpkYXRlOiAiYHIgZm9ybWF0KFN5cy5EYXRlKCksICclQiAlZCwgJVknKWAiDQpvdXRwdXQ6DQogIGh0bWxfZG9jdW1lbnQ6DQogICAgbnVtYmVyX3NlY3Rpb25zOiB0cnVlDQogICAgZmlnX2NhcHRpb246IHRydWUNCiAgICB0b2M6IHRydWUNCiAgICBmaWdfd2lkdGg6IDcNCiAgICBmaWdfaGVpZ2h0OiA0LjUNCiAgICB0aGVtZTogcGFwZXINCiAgICBoaWdobGlnaHQ6IHRhbmdvDQogICAgY29kZV9mb2xkaW5nOiBoaWRlDQogICAgY29kZV9kb3dubG9hZDogdHJ1ZQ0KLS0tDQoNCmBgYHtyIExvZ28sIGVjaG89RkFMU0UsZmlnLmFsaWduPSdjZW50ZXInLCBvdXQud2lkdGggPSAnNDAlJ30NCmtuaXRyOjppbmNsdWRlX2dyYXBoaWNzKCJDOi9Vc2Vycy9JTUVMREEgU0lBTlRVUkkvRG93bmxvYWRzLzV0aCBTZW1lc3Rlci9TdGF0aXN0aWNhbCBDb21wdXRpbmcvV2VlayAyL21hdGFuYXVuaXYucG5nIikNCmBgYA0KDQogIA0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUpDQpgYGANCg0KIyBCaW5vbWlhbCBEaXN0cmlidXRpb24gey50YWJzZXQgLnRhYnNldC1mYWRlIC50YWJzZXQtcGlsbHN9DQoNCjxjZW50ZXI+DQo8aWZyYW1lIHdpZHRoPSI4MDAiIGhlaWdodD0iNDUwIiBzcmM9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL19GYlpJOW10U1NNIiBmcmFtZWJvcmRlcj0iMCIgYWxsb3c9ImFjY2VsZXJvbWV0ZXI7IGF1dG9wbGF5OyBlbmNyeXB0ZWQtbWVkaWE7IGd5cm9zY29wZTsgcGljdHVyZS1pbi1waWN0dXJlIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+DQo8L2NlbnRlcj4NCg0KIyMgUXVlc3Rpb24NCg0KKiBXaGF0IGlzIGEgYmlub21pYWwgZGlzdHJpYnV0aW9uIGluIFN0YXRpc3RpY3M/DQoqIFdoYXQgaXMgYmlub21pYWwgZGlzdHJpYnV0aW9uIHVzZWQgZm9yPw0KKiBQbGVhc2UgYXJndWUgNCByZXF1aXJlbWVudHMgbmVlZGVkIHRvIGJlIGEgYmlub21pYWwgZGlzdHJpYnV0aW9uPw0KKiBJcyBhIGJpbm9taWFsIGRpc3RyaWJ1dGlvbiBhIG5vcm1hbCBkaXN0cmlidXRpb24/DQoqIFN1cHBvc2UgdGhlcmUgYXJlIHR3ZW50eSBtdWx0aXBsZSBjaG9pY2UgcXVlc3Rpb25zIGluIGFuIFN0YXRpc3RpY3MgY2xhc3MgcXVpei4gRWFjaCBxdWVzdGlvbiBoYXMgZml2ZSBwb3NzaWJsZSBhbnN3ZXJzLCBhbmQgb25seSBvbmUgb2YgdGhlbSBpcyBjb3JyZWN0LiBGaW5kIHRoZSBwcm9iYWJpbGl0eSBvZiBoYXZpbmcgZm91ciBvciBsZXNzIGNvcnJlY3QgYW5zd2VycyBpZiBhIHN0dWRlbnQgYXR0ZW1wdHMgdG8gYW5zd2VyIGV2ZXJ5IHF1ZXN0aW9uIGF0IHJhbmRvbSAoRXhwbGFpbiB0aGlzIGV4ZXJjaXNlIGJ5IHVzaW5nIFIpLg0KDQoNCiMjIEFuc3dlcg0KDQogIEJpbm9taWFsIGRpc3RyaWJ1dGlvbiBpbiBzdGF0aXN0aWNzIGlzIGEgbW9yZSB2YWx1YWJsZSBwcm9iYWJpbGl0eSBkZW5zaXR5IGZ1bmN0aW9uIHdpdGggbWFueSBhcHBsaWNhdGlvbiwgb3Igd2UgY2FuIGJlIHRob3VnaHQgb2YgYXMgc2ltcGx5IHRoZSBwcm9iYWJpbGl0eSBvZiBhIFN1Y2Nlc3Mgb3IgRmFpbHVyZSAoVHJ1ZSBvciBGYWxzZSkgb3V0Y29tZSBpbiBhbiBleHBlcmltZW50IHRoYXQgaXMgcmVwZWF0ZWQgbXVsdGlwbGUgdGltZXMuIEJpbm9taWFsIGRpc3RyaWJ1dGlvbiBpcyB1c2VkIHRvIG1ha2UgbW9kZWwgdGhlIG51bWJlciBvZiBzdWNjZXNzZXMgaW4gdGhlIG51bWJlciBvZiBzYW1wbGVzIG4gZnJvbSB0aGUgdG90YWwgcG9wdWxhdGlvbiBvZiBOLiA0IHJlcXVpcmVtZW50cyBuZWVkZWQgdG8gYmUgYSBiaW5vbWlhbCBkaXN0cmlidXRpb24gYXJlOiANCiAgDQogICp+KiBUaGVyZSBhcmUgYSBmaXhlZCBudW1iZXIgb2YgdHJpYWxzLiBUaGluayBvZiB0cmlhbHMgYXMgcmVwZXRpdGlvbnMgb2YgYW4gZXhwZXJpbWVudC4gVGhlIGxldHRlciBuIGRlbm90ZXMgdGhlIG51bWJlciBvZiB0cmlhbHMuDQogIA0KICAqfiogVGhlIHJhbmRvbSB2YXJpYWJsZSwgICwgbnVtYmVyIG9mIHN1Y2Nlc3NlcywgaXMgZGlzY3JldGUuDQogIA0KICAqfiogVGhlcmUgYXJlIG9ubHkgdHdvIHBvc3NpYmxlIG91dGNvbWVzLCBjYWxsZWQg4oCcc3VjY2Vzc+KAnSBhbmQg4oCcZmFpbHVyZSzigJ0gZm9yIGVhY2ggdHJpYWwuIFRoZSBsZXR0ZXIgcCBkZW5vdGVzIHRoZSBwcm9iYWJpbGl0eSBvZiBhIHN1Y2Nlc3Mgb24gYW55IG9uZSB0cmlhbCwgYW5kIHEgZGVub3RlcyB0aGUgcHJvYmFiaWxpdHkgb2YgYSBmYWlsdXJlIG9uIGFueSBvbmUgdHJpYWwuIHAgKyBxID0gMS4NCiAgDQogICp+KiBUaGUgbiB0cmlhbHMgYXJlIGluZGVwZW5kZW50IGFuZCBhcmUgcmVwZWF0ZWQgdXNpbmcgaWRlbnRpY2FsIGNvbmRpdGlvbnMuIFRoaW5rIG9mIHRoaXMgYXMgZHJhd2luZyBXSVRIIHJlcGxhY2VtZW50LiBCZWNhdXNlIHRoZSBuIHRyaWFscyBhcmUgaW5kZXBlbmRlbnQsIHRoZSBvdXRjb21lIG9mIG9uZSB0cmlhbCBkb2VzIG5vdCBoZWxwIGluIHByZWRpY3RpbmcgdGhlIG91dGNvbWUgb2YgYW5vdGhlciB0cmlhbC4NCiAgICANCiAgQmlub21pYWwgZGlzdHJpYnV0aW9uIGlzIG5vdCBub3JtYWwgZGlzdHJpYnV0aW9uLCBiZWNhdXNlIEJpbm9taWFsIGRpc3RyaWJ1dGlvbiBpcyBkaXNjcmV0ZSBhbmQgbm9ybWFsIGRpc3RyaWJ1dGlvbiBpcyBjb250aW51b3VzLiBUaGlzIG1lYW5zIHRoYXQgaW4gYmlub21pYWwgZGlzdHJpYnV0aW9uIHRoZXJlIGFyZSBubyBkYXRhIHBvaW50cyBiZXR3ZWVuIGFueSB0d28gZGF0YSBwb2ludHMuIFRoaXMgaXMgdmVyeSBkaWZmZXJlbnQgZnJvbSBhIG5vcm1hbCBkaXN0cmlidXRpb24gd2hpY2ggaGFzIGNvbnRpbnVvdXMgZGF0YSBwb2ludHMuDQoNCmBgYHtyfQ0KcHJvYiA8LSAwLjIgI3Byb2JhYmlsaXR5DQoNCmRiaW5vbSh4PTUsDQogICAgICAgc2l6ZT0yMCwNCiAgICAgICBwcm9iPTAuMikNCmBgYA0KDQoNCiMgUG9pc3NvbiBEaXN0cmlidXRpb24gey50YWJzZXQgLnRhYnNldC1mYWRlIC50YWJzZXQtcGlsbHN9DQoNCjxjZW50ZXI+DQo8aWZyYW1lIHdpZHRoPSI4MDAiIGhlaWdodD0iNDUwIiBzcmM9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL0xWa2Y4SFliMUdvIiBmcmFtZWJvcmRlcj0iMCIgYWxsb3c9ImFjY2VsZXJvbWV0ZXI7IGF1dG9wbGF5OyBlbmNyeXB0ZWQtbWVkaWE7IGd5cm9zY29wZTsgcGljdHVyZS1pbi1waWN0dXJlIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+DQo8L2NlbnRlcj4NCg0KIyMgUXVlc3Rpb24NCg0KKiBXaGF0IGlzIGEgUG9pc3NvbiBkaXN0cmlidXRpb24gaW4gU3RhdGlzdGljcz8NCiogV2hlbiBhbmQgV2h5IGlzIFBvaXNzb24gZGlzdHJpYnV0aW9uIHVzZWQ/DQoqIFdoYXQgaXMgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBCaW5vbWlhbCBkaXN0cmlidXRpb24gYW5kIFBvaXNzb24gZGlzdHJpYnV0aW9uPw0KKiBJZiB0d2VudHkgY2FycyBhcmUgY3Jvc3NpbmcgYSBicmlkZ2UgcGVyIG1pbnV0ZSBvbiBhdmVyYWdlLCB2aXN1YWxpemUgYW5kIGZpbmQgdGhlIHByb2JhYmlsaXR5IG9mIGhhdmluZyB0aGlydGVlbiBvciBtb3JlIGNhcnMgY3Jvc3NpbmcgdGhlIGJyaWRnZSBpbiBhIHBhcnRpY3VsYXIgbWludXRlIChFeHBsYWluIHRoaXMgZXhlcmNpc2UgYnkgdXNpbmcgUikuDQoqIFN1cHBvc2UgdGhlIHByb2JhYmlsaXR5IHRoYXQgYSBkcnVnIHByb2R1Y2VzIGEgY2VydGFpbiBzaWRlIGVmZmVjdCBpcyAkcCA9IDAuMSUkIGFuZCAkbiA9IDEsMDAwJCBwYXRpZW50cyBpbiBhIGNsaW5pY2FsIHRyaWFsIHJlY2VpdmUgdGhlIGRydWcuIFdoYXQgaXMgdGhlIHByb2JhYmlsaXR5IDAgcGVvcGxlIGV4cGVyaWVuY2UgdGhlIHNpZGUgZWZmZWN0IGJ5IHVzaW5nIHZpc3VhbGl6YXRpb24gdGVjaG5pcXVlcz8gKEV4cGxhaW4gdGhpcyBleGVyY2lzZSBieSB1c2luZyBSKQ0KDQoNCiMjIEFuc3dlcg0KDQogIFBvaXNzb24gZGlzdHJpYnV0aW9uLCBpbiBzdGF0aXN0aWNzIGlzIGEgZGlzdHJpYnV0aW9uIGZ1bmN0aW9uIHVzZWZ1bCBmb3IgY2hhcmFjdGVyaXppbmcgZXZlbnRzIHdpdGggdmVyeSBsb3cgcHJvYmFiaWxpdGllcyBvZiBvY2N1cnJlbmNlIHdpdGhpbiBzb21lIGRlZmluaXRlIHRpbWUgb3Igc3BhY2UuIFRoZSBQb2lzc29uIGRpc3RyaWJ1dGlvbiBpcyBhcHBsaWNhYmxlIG9ubHkgd2hlbiBzZXZlcmFsIGNvbmRpdGlvbnMgaG9sZC4gVGhlcmUgYXJlIGNvbmRpdGlvbnMgZm9yIFBvaXNzb24gZGlzdHJpYnV0aW9uOiANCiAgDQogICp+KiBBbiBldmVudCBjYW4gb2NjdXIgYW55IG51bWJlciBvZiB0aW1lcyBkdXJpbmcgYSB0aW1lIHBlcmlvZC4NCiAgICANCiAgKn4qIEV2ZW50cyBvY2N1ciBpbmRlcGVuZGVudGx5LiBJbiBvdGhlciB3b3JkcywgaWYgYW4gZXZlbnQgb2NjdXJzLCBpdCBkb2VzIG5vdCBhZmZlY3QgdGhlIHByb2JhYmlsaXR5IG9mIGFub3RoZXIgZXZlbnQgb2NjdXJyaW5nIGluIHRoZSBzYW1lIHRpbWUgcGVyaW9kLg0KICAgIA0KICAqfiogVGhlIHJhdGUgb2Ygb2NjdXJyZW5jZSBpcyBjb25zdGFudDsgdGhhdCBpcywgdGhlIHJhdGUgZG9lcyBub3QgY2hhbmdlIGJhc2VkIG9uIHRpbWUuDQogICAgDQogICp+KiBUaGUgcHJvYmFiaWxpdHkgb2YgYW4gZXZlbnQgb2NjdXJyaW5nIGlzIHByb3BvcnRpb25hbCB0byB0aGUgbGVuZ3RoIG9mIHRoZSB0aW1lIHBlcmlvZC4gRm9yIGV4YW1wbGUsIGl0IHNob3VsZCBiZSB0d2ljZSBhcyBsaWtlbHkgZm9yIGFuIGV2ZW50IHRvIG9jY3VyIGluIGEgMiBob3VyIHRpbWUgcGVyaW9kIHRoYW4gaXQgaXMgZm9yIGFuIGV2ZW50IHRvIG9jY3VyIGluIGEgMSBob3VyIHBlcmlvZC4NCiAgICANCiAgUG9pc3NvbiBkaXN0cmlidXRpb24gIGV4cHJlc3NlcyB0aGUgcHJvYmFiaWxpdHkgb2YgYSBnaXZlbiBudW1iZXIgb2YgZXZlbnRzIG9jY3VycmluZyBpbiBhIGZpeGVkIGludGVydmFsIG9mIHRpbWUgb3Igc3BhY2UgaWYgdGhlc2UgZXZlbnRzIG9jY3VyIHdpdGggYSBrbm93biBjb25zdGFudCBtZWFuIHJhdGUgYW5kIGluZGVwZW5kZW50bHkgb2YgdGhlIHRpbWUgc2luY2UgdGhlIGxhc3QgZXZlbnQuIFRoZSBQb2lzc29uIGRpc3RyaWJ1dGlvbiBjYW4gYWxzbyBiZSB1c2VkIGZvciB0aGUgbnVtYmVyIG9mIGV2ZW50cyBpbiBvdGhlciBzcGVjaWZpZWQgaW50ZXJ2YWxzIHN1Y2ggYXMgZGlzdGFuY2UsIGFyZWEgb3Igdm9sdW1lLiBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIEJpbm9taWFsIGRpc3RyaWJ1dGlvbiBhbmQgUG9pc3NvbiBkaXN0cmlidXRpb24gaXM6DQogIA0KKn4qCUlmIHlvdXIgcXVlc3Rpb24gaGFzIGFuIGF2ZXJhZ2UgcHJvYmFiaWxpdHkgb2YgYW4gZXZlbnQgaGFwcGVuaW5nIHBlciB1bml0IChpLmUuIHBlciB1bml0IG9mIHRpbWUsIGN5Y2xlLCBldmVudCkgYW5kIHlvdSB3YW50IHRvIGZpbmQgcHJvYmFiaWxpdHkgb2YgYSBjZXJ0YWluIG51bWJlciBvZiBldmVudHMgaGFwcGVuaW5nIGluIGEgcGVyaW9kIG9mIHRpbWUgKG9yIG51bWJlciBvZiBldmVudHMpLCB0aGVuIHVzZSB0aGUgUG9pc3NvbiBEaXN0cmlidXRpb24uDQoNCip+KglJZiB5b3UgYXJlIGdpdmVuIGFuIGV4YWN0IHByb2JhYmlsaXR5IGFuZCB5b3Ugd2FudCB0byBmaW5kIHRoZSBwcm9iYWJpbGl0eSBvZiB0aGUgZXZlbnQgaGFwcGVuaW5nIGEgY2VydGFpbiBudW1iZXIgb3V0IHRpbWVzIG91dCBvZiB4IChpLmUuIDEwIHRpbWVzIG91dCBvZiAxMDAsIG9yIDk5IHRpbWVzIG91dCBvZiAxMDAwKSwgdXNlIHRoZSBCaW5vbWlhbCBEaXN0cmlidXRpb24gZm9ybXVsYS4NCg0KYGBge3J9DQpwcG9pcygxMywyMCwgbG93ZXIudGFpbCA9IEZBTFNFKQ0KYGBgDQpgYGB7cn0NCnN1Y2Nlc3MgPC0gMDoxMDAwDQpkcG9pcygxMDAwLGxhbWJkYT0xMDApDQpwbG90KHN1Y2Nlc3MsIGRwb2lzKHN1Y2Nlc3MsbGFtYmRhPTEwMCksIHR5cGUgPSdoJykNCmBgYA0KDQoNCiMgVW5pZm9ybSBEaXN0cmlidXRpb24gKENvbnRpbnVvdXMgb3IgRGlzY3JldGUpIHsudGFic2V0IC50YWJzZXQtZmFkZSAudGFic2V0LXBpbGxzfQ0KDQo8Y2VudGVyPg0KPGlmcmFtZSB3aWR0aD0iODAwIiBoZWlnaHQ9IjQ1MCIgc3JjPSJodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC8zQzltcGotTllnbyIgZnJhbWVib3JkZXI9IjAiIGFsbG93PSJhY2NlbGVyb21ldGVyOyBhdXRvcGxheTsgZW5jcnlwdGVkLW1lZGlhOyBneXJvc2NvcGU7IHBpY3R1cmUtaW4tcGljdHVyZSIgYWxsb3dmdWxsc2NyZWVuPjwvaWZyYW1lPg0KPC9jZW50ZXI+DQoNCiMjIFF1ZXN0aW9uDQoNCiogSG93IGRvIHlvdSBmaW5kIHRoZSBjb250aW51b3VzIHVuaWZvcm0gZGlzdHJpYnV0aW9uPw0KKiBJcyB0aGUgdW5pZm9ybSBkaXN0cmlidXRpb24gZGlzY3JldGUgb3IgY29udGludW91cz8NCiogV2hhdCBkb2VzIGl0IG1lYW4gdG8gaGF2ZSBhIHVuaWZvcm0gZGlzdHJpYnV0aW9uPw0KKiBIb3cgZG8geW91IHNvbHZlIHVuaWZvcm0gZGlzdHJpYnV0aW9uIHByb2JsZW1zIHVzaW5nIFI/DQoNCg0KIyMgQW5zd2VyDQoNCiAgV2UgY291bGQgZmluZCB0aGUgY29udGludW91cyB1bmlmb3JtIGRpc3RyaWJ1dGlvbiBiZWNhdXNlIHRoYXQgaXMgb25lIG9mIHRoZSBzaW1wbGVzdCBwcm9iYWJpbGl0eSBkaXN0cmlidXRpb25zIGluIHN0YXRpc3RpY3MuIEl0IGlzIGEgY29udGludW91cyBkaXN0cmlidXRpb24sIHRoaXMgbWVhbnMgdGhhdCBpdCB0YWtlcyB2YWx1ZXMgd2l0aGluIGEgc3BlY2lmaWVkIHJhbmdlLCBleGFtcGxlOiBiZXR3ZWVuIDAgdW50aWwgNC4gRGlzdHJpYnV0aW9uIFVuaWZvcm0gY2FuIGJlIGNvbnRpbnVvdXMgb3IgZGlzY3JldGUuIFRvIGhhdmUgYSB1bmlmb3JtIGRpc3RyaWJ1dGlvbiwgYWxsIG91dGNvbWVzIG11c3QgaGF2ZSBhIGVxdWFsIHByb2JhYmlsaXR5DQogIA0KYGBge3J9DQpyYW5kLnVuaWYgPC0gcnVuaWYoMjAsIG1pbiA9IDEsIG1heCA9IDUpDQpyYW5kLnVuaWYNCmBgYA0KICANCg0KIyBFeHBvbmVudGlhbCBEaXN0cmlidXRpb24gey50YWJzZXQgLnRhYnNldC1mYWRlIC50YWJzZXQtcGlsbHN9DQoNCjxjZW50ZXI+DQo8aWZyYW1lIHdpZHRoPSI4MDAiIGhlaWdodD0iNDUwIiBzcmM9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkLzJrZzFPMGoxSjljIiBmcmFtZWJvcmRlcj0iMCIgYWxsb3c9ImFjY2VsZXJvbWV0ZXI7IGF1dG9wbGF5OyBlbmNyeXB0ZWQtbWVkaWE7IGd5cm9zY29wZTsgcGljdHVyZS1pbi1waWN0dXJlIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+DQo8L2NlbnRlcj4NCg0KIyMgUXVlc3Rpb24NCg0KKiBXaGF0IGlzIGV4cG9uZW50aWFsIGRpc3RyaWJ1dGlvbiBleGFtcGxlPw0KKiBXaGF0IGlzIHRoZSBleHBvbmVudGlhbCBkaXN0cmlidXRpb24gdXNlZCBmb3I/DQoqIFdoYXQgaXMgZXhwb25lbnRpYWwgZGlzdHJpYnV0aW9uIHJhdGU/DQoqIElzIGV4cG9uZW50aWFsIGRpc3RyaWJ1dGlvbiBkaXNjcmV0ZSBvciBjb250aW51b3VzPw0KKiBTdXBwb3NlIHRoZSBtZWFuIGNoZWNrb3V0IHRpbWUgb2YgYSBzdXBlcm1hcmtldCBjYXNoaWVyIGlzIHRocmVlIG1pbnV0ZXMuIEZpbmQgdGhlIHByb2JhYmlsaXR5IG9mIGEgY3VzdG9tZXIgY2hlY2tvdXQgYmVpbmcgY29tcGxldGVkIGJ5IHRoZSBjYXNoaWVyIGluIGxlc3MgdGhhbiB0d28gbWludXRlcyAoRXhwbGFpbiB0aGlzIGV4ZXJjaXNlIGJ5IHVzaW5nIFIpLg0KDQoNCiMjIEFuc3dlcg0KDQogIFRoZSBleHBvbmVudGlhbCBkaXN0cmlidXRpb24gaXMgb2Z0ZW4gY29uY2VybmVkIHdpdGggdGhlIGFtb3VudCBvZiB0aW1lIHVudGlsIHNvbWUgc3BlY2lmaWMgZXZlbnQgb2NjdXJzLiBGb3IgZXhhbXBsZSwgdGhlIGFtb3VudCBvZiB0aW1lIChiZWdpbm5pbmcgbm93KSB1bnRpbCBhbiBlYXJ0aHF1YWtlIG9jY3VycyBoYXMgYW4gZXhwb25lbnRpYWwgZGlzdHJpYnV0aW9uLiBPdGhlciBleGFtcGxlcyBpbmNsdWRlIHRoZSBsZW5ndGgsIGluIG1pbnV0ZXMsIG9mIGxvbmcgZGlzdGFuY2UgYnVzaW5lc3MgdGVsZXBob25lIGNhbGxzLCBhbmQgdGhlIGFtb3VudCBvZiB0aW1lIGluIG1vbnRocy4gVGhlIGV4cG9uZW50aWFsIGRpc3RyaWJ1dGlvbiBpcyB3aWRlbHkgdXNlZCBpbiB0aGUgZmllbGQgb2YgcmVsaWFiaWxpdHkuIFJlbGlhYmlsaXR5IGRlYWxzIHdpdGggdGhlIGFtb3VudCBvZiB0aW1lIGEgcHJvZHVjdCBsYXN0cy4NCiAgDQogIEV4cG9uZW50aWFsIGRpc3RyaWJ1dGlvbiByYXRlIGlzICBhcmUgYWxsIHJhdGVzICgkzrskKSBvZiB0aGUgdW5pdCBvZiB0aW1lLCB3aGljaCBpcyB0aGUgcGFyYW1ldGVyIG9mIHRoZSBQb2lzc29uIGRpc3RyaWJ1dGlvbi4gT25lIHRoaW5nIHRoYXQgd291bGQgc2F2ZSB5b3UgZnJvbSB0aGUgY29uZnVzaW9uIGxhdGVyIGFib3V0IFggfiBFeHAoMC4yNSkgaXMgdG8gcmVtZW1iZXIgdGhhdCAwLjI1IGlzIG5vdCBhIHRpbWUgZHVyYXRpb24sIGJ1dCBpdCBpcyBhbiBldmVudCByYXRlLCB3aGljaCBpcyB0aGUgc2FtZSBhcyB0aGUgcGFyYW1ldGVyIM67IGluIGEgUG9pc3NvbiBwcm9jZXNzLiBFeHBvbmVudGlhbCBkaXN0cmlidXRpb24gaXMgYSBjb250aW51b3VzIHByb2JhYmlsaXR5IGRpc3RyaWJ1dGlvbiANCiAgDQpgYGB7cn0NCnBleHAoMiwgcmF0ZT0gMS8zKQ0KYGBgDQoNCg0KIyBOb3JtYWwgRGlzdHJpYnV0aW9uIHsudGFic2V0IC50YWJzZXQtZmFkZSAudGFic2V0LXBpbGxzfQ0KDQo8Y2VudGVyPg0KPGlmcmFtZSB3aWR0aD0iODAwIiBoZWlnaHQ9IjQ1MCIgc3JjPSJodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC9JaHRtVzI4c2xEdyIgZnJhbWVib3JkZXI9IjAiIGFsbG93PSJhY2NlbGVyb21ldGVyOyBhdXRvcGxheTsgZW5jcnlwdGVkLW1lZGlhOyBneXJvc2NvcGU7IHBpY3R1cmUtaW4tcGljdHVyZSIgYWxsb3dmdWxsc2NyZWVuPjwvaWZyYW1lPg0KPC9jZW50ZXI+DQoNCjxjZW50ZXI+DQo8aWZyYW1lIHdpZHRoPSI4MDAiIGhlaWdodD0iNDUwIiBzcmM9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL2NvQThnejlVYWNnIiBmcmFtZWJvcmRlcj0iMCIgYWxsb3c9ImFjY2VsZXJvbWV0ZXI7IGF1dG9wbGF5OyBlbmNyeXB0ZWQtbWVkaWE7IGd5cm9zY29wZTsgcGljdHVyZS1pbi1waWN0dXJlIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+DQo8L2NlbnRlcj4NCg0KIyMgUXVlc3Rpb24NCg0KKiBXaGF0IGlzIGEgbm9ybWFsIGRpc3RyaWJ1dGlvbiBhbmQgU3RhbmRhcmQgTm9ybWFsIERpc3RydWJ1dGlvbiBpbiBTdGF0aXN0aWNzPw0KKiBXaHkgaXMgaXQgY2FsbGVkIG5vcm1hbCBkaXN0cmlidXRpb24/DQoqIEhvdyBkbyB5b3UgY2FsY3VsYXRlIG5vcm1hbCBkaXN0cmlidXRpb24/DQoqIFdoYXQgYXJlIHRoZSBjaGFyYWN0ZXJpc3RpY3Mgb2YgYSBub3JtYWwgZGlzdHJpYnV0aW9uPw0KKiBUaGUgYW5udWFsIHNhbGFyaWVzIG9mIGVtcGxveWVlcyBpbiBhIGxhcmdlIGNvbXBhbnkgYXJlIGFwcHJveGltYXRlbHkgbm9ybWFsbHkgZGlzdHJpYnV0ZWQgd2l0aCBhIG1lYW4gb2YgJDUwLDAwMCBkb2xsYXJzJCBhbmQgYSBzdGFuZGFyZCBkZXZpYXRpb24gb2YgJDIwLDAwMCAoRXhwbGFpbiB0aGlzIGV4ZXJjaXNlIGJ5IHVzaW5nIFIpLg0KICAtIFdoYXQgcGVyY2VudCBvZiBwZW9wbGUgZWFybiBsZXNzIHRoYW4gJDQwLDAwMD8NCiAgLSBXaGF0IHBlcmNlbnQgb2YgcGVvcGxlIGVhcm4gYmV0d2VlbiAkNDUsMDAwIGRvbGxhcnMkIGFuZCAkNjUsMDAwPw0KICAtIFdoYXQgcGVyY2VudCBvZiBwZW9wbGUgZWFybiBtb3JlIHRoYW4gJDcwLDAwMD8NCg0KDQojIyBBbnN3ZXINCg0KICBBIG5vcm1hbCBkaXN0cmlidXRpb24sIHNvbWV0aW1lcyBjYWxsZWQgdGhlIGJlbGwgY3VydmUsIGlzIGEgZGlzdHJpYnV0aW9uIHRoYXQgb2NjdXJzIG5hdHVyYWxseSBpbiBtYW55IHNpdHVhdGlvbnMgYW5kIGRlc2NyaWJlcyBob3cgdGhlIHZhbHVlcyBvZiBhIHZhcmlhYmxlIGFyZSBkaXN0cmlidXRlZC4gVGhlIHN0YW5kYXJkIGRldmlhdGlvbiBpcyBhIG1lYXN1cmUgb2YgdmFyaWFiaWxpdHkuIEl0IGRlZmluZXMgdGhlIHdpZHRoIG9mIHRoZSBub3JtYWwgZGlzdHJpYnV0aW9uLiBUaGUgc3RhbmRhcmQgZGV2aWF0aW9uIGRldGVybWluZXMgaG93IGZhciBhd2F5IGZyb20gdGhlIG1lYW4gdGhlIHZhbHVlcyB0ZW5kIHRvIGZhbGwuIEl0IHJlcHJlc2VudHMgdGhlIHR5cGljYWwgZGlzdGFuY2UgYmV0d2VlbiB0aGUgb2JzZXJ2YXRpb25zIGFuZCB0aGUgYXZlcmFnZS4gSXQgY2FsbGVkIE5vcm1hbCBkaXN0cmlidXRpb24gYmVjYXVzZSB0aGUgbm9ybWFsIGRpc3RyaWJ1dGlvbiBoYXMgbWVhbiAobWVhbikgZXF1YWwgdG8gMCBhbmQgc3RhbmRhcmQgZGV2aWF0aW9uIGVxdWFsIHRvIDEgd2hpY2ggaXMgcmVwcmVzZW50ZWQgYXMgYSBiZWxsLXNoYXBlZCBjdXJ2ZS4gQ2FsY3VsYXRpbmcgTm9ybWFsIGRpc3RyaWJ1dGlvbiBjYW4gYmUgZm91bmQgYnkgZGl2aWRpbmcgJDEkIGJ5IHRoZSAkz4Mu4oiaMs+AZSQsIHRoZW4gbXVsdGlwbHlpbmcgdGhhdCB2YWx1ZSAkZV4tMS8yIC4gKHggLSDOvCAvIM+DKV4yJC4gVGhlIGNoYXJhY3RlcmlzdGljcyBvZiBhIG5vcm1hbCBkaXN0cmlidXRpb24gYXJlOg0KICAgICAgDQogICp+KiBCZWxsLXNoYXBlZCBjdXJ2ZSAoJM68JCA9IE1kID0gTW8pDQogIA0KICAqfiogQ3VydmVzIGFyZSBzeW1tZXRyaWNhbA0KICANCiAgKn4qIFRoZSBjdXJ2ZSBwZWFrcyBhdCBYID0gJM68JA0KICANCiAgKn4qIFRoZSBhcmVhIHVuZGVyIHRoZSBjdXJ2ZSBpcyAxOyDCvSBvbiB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgbWlkZGxlIHZhbHVlIGFuZCDCvSBvbiB0aGUgbGVmdC4NCiAgDQogICp+KiBUaGUgZ3JhcGggaXMgYWx3YXlzIG9uIHRoZSB4LWF4aXMNCg0KYGBge3J9DQpwbm9ybSg0MDAwMCwgbWVhbiA9IDUwMDAwLCBzZCA9IDIwMDAwKQ0KDQpwbm9ybSg2NTAwMCwgbWVhbiA9IDUwMDAwLCBzZCA9IDIwMDAwKSAtIHBub3JtKDQ1MDAwLCBtZWFuID0gNTAwMDAsIHNkID0gMjAwMDApDQoNCnBub3JtKDcwMDAwLCBtZWFuID0gNTAwMDAsIHNkID0gMjAwMDApDQpgYGANCg0KDQojIENoaS1zcXVhcmVkIERpc3RyaWJ1dGlvbiB7LnRhYnNldCAudGFic2V0LWZhZGUgLnRhYnNldC1waWxsc30NCg0KPGNlbnRlcj4NCjxpZnJhbWUgd2lkdGg9IjgwMCIgaGVpZ2h0PSI0NTAiIHNyYz0iaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvRkVFamwzS0RnMWsiIGZyYW1lYm9yZGVyPSIwIiBhbGxvdz0iYWNjZWxlcm9tZXRlcjsgYXV0b3BsYXk7IGVuY3J5cHRlZC1tZWRpYTsgZ3lyb3Njb3BlOyBwaWN0dXJlLWluLXBpY3R1cmUiIGFsbG93ZnVsbHNjcmVlbj48L2lmcmFtZT4NCjwvY2VudGVyPg0KDQojIyBRdWVzdGlvbg0KDQoqIFdoYXQgaXMgdGhlIGNoaSBzcXVhcmUgZGlzdHJpYnV0aW9uIHVzZWQgZm9yPw0KKiBXaGF0IGlzIHRoZSBjaGkgc3F1YXJlIGRpc3RyaWJ1dGlvbiBmb3JtdWxhPw0KKiBXaGF0IGlzIHRoZSBjaGkgZGlzdHJpYnV0aW9uPw0KKiBJcyBDaGkgc3F1YXJlIGRpc3RyaWJ1dGlvbiBjb250aW51b3VzPw0KKiAyNTYgdmlzdWFsIGFydGlzdHMgd2VyZSBzdXJ2ZXllZCB0byBmaW5kIG91dCB0aGVpciB6b2RpYWMgc2lnbi4gVGhlIHJlc3VsdHMgd2VyZTogQXJpZXMgKDI5KSwgVGF1cnVzICgyNCksIEdlbWluaSAoMjIpLCBDYW5jZXIgKDE5KSwgTGVvICgyMSksIFZpcmdvICgxOCksIExpYnJhICgxOSksIFNjb3JwaW8gKDIwKSwgU2FnaXR0YXJpdXMgKDIzKSwgQ2Fwcmljb3JuICgxOCksIEFxdWFyaXVzICgyMCksIFBpc2NlcyAoMjMpLiBUZXN0IHRoZSBoeXBvdGhlc2lzIHRoYXQgem9kaWFjIHNpZ25zIGFyZSBldmVubHkgZGlzdHJpYnV0ZWQgYWNyb3NzIHZpc3VhbCBhcnRpc3RzIChFeHBsYWluIHRoaXMgZXhlcmNpc2UgYnkgdXNpbmcgUikuDQoNCg0KIyMgQW5zd2VyDQoNCiAgVGhlIENoaSBTcXVhcmUgZGlzdHJpYnV0aW9uIGlzIHVzZWQgZm9yIG1hbnkgdGVzdCBzdGF0aXN0aWNzLiBUd28gb2YgdGhlIG1vcmUgY29tbW9uIHRlc3RzIHVzaW5nIHRoZSBDaGkgU3F1YXJlIGRpc3RyaWJ1dGlvbiBhcmUgdGVzdHMgb2YgZGV2aWF0aW9ucyBvZiBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZW9yZXRpY2FsbHkgZXhwZWN0ZWQgYW5kIG9ic2VydmVkIGZyZXF1ZW5jaWVzIChvbmUtd2F5IHRhYmxlcykgYW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBjYXRlZ29yaWNhbCB2YXJpYWJsZXMgKGNvbnRpbmdlbmN5IHRhYmxlcykuIA0KICANCiAgVGhlIGRpc3RyaWJ1dGlvbiBvZiB0aGUgY2hpLXNxdWFyZSBzdGF0aXN0aWMgaXMgY2FsbGVkIHRoZSBjaGktc3F1YXJlIGRpc3RyaWJ1dGlvbi4gVGhlIGNoaS1zcXVhcmUgZGlzdHJpYnV0aW9uIGlzIGRlZmluZWQgYnkgdGhlIGZvbGxvd2luZyBwcm9iYWJpbGl0eSBkZW5zaXR5IGZ1bmN0aW9uOg0KJFkgPSBZMCAqICggzqcyICkgKCB2LzIgLSAxICkgKiBlLc6nMiAvIDIkDQoNCiAgVGhlIGNoaSBkaXN0cmlidXRpb24gaXMgYSBjb250aW51b3VzIHByb2JhYmlsaXR5IGRpc3RyaWJ1dGlvbi4gSXQgaXMgdGhlIGRpc3RyaWJ1dGlvbiBvZiB0aGUgcG9zaXRpdmUgc3F1YXJlIHJvb3Qgb2YgdGhlIHN1bSBvZiBzcXVhcmVzIG9mIGEgc2V0IG9mIGluZGVwZW5kZW50IHJhbmRvbSB2YXJpYWJsZXMgZWFjaCBmb2xsb3dpbmcgYSBzdGFuZGFyZCBub3JtYWwgZGlzdHJpYnV0aW9uLCBvciBlcXVpdmFsZW50bHksIHRoZSBkaXN0cmlidXRpb24gb2YgdGhlIEV1Y2xpZGVhbiBkaXN0YW5jZSBvZiB0aGUgcmFuZG9tIHZhcmlhYmxlcyBmcm9tIHRoZSBvcmlnaW4uIEl0IGlzIHRodXMgcmVsYXRlZCB0byB0aGUgY2hpLXNxdWFyZWQgZGlzdHJpYnV0aW9uIGJ5IGRlc2NyaWJpbmcgdGhlIGRpc3RyaWJ1dGlvbiBvZiB0aGUgcG9zaXRpdmUgc3F1YXJlIHJvb3RzIG9mIGEgdmFyaWFibGUgb2JleWluZyBhIGNoaS1zcXVhcmVkIGRpc3RyaWJ1dGlvbi4gDQogIA0KDQojIFN0dWRlbnQgJHQkIERpc3RyaWJ1dGlvbiB7LnRhYnNldCAudGFic2V0LWZhZGUgLnRhYnNldC1waWxsc30NCg0KPGNlbnRlcj4NCjxpZnJhbWUgd2lkdGg9IjgwMCIgaGVpZ2h0PSI0NTAiIHNyYz0iaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvdDRocGpLMXo1dVkiIGZyYW1lYm9yZGVyPSIwIiBhbGxvdz0iYWNjZWxlcm9tZXRlcjsgYXV0b3BsYXk7IGVuY3J5cHRlZC1tZWRpYTsgZ3lyb3Njb3BlOyBwaWN0dXJlLWluLXBpY3R1cmUiIGFsbG93ZnVsbHNjcmVlbj48L2lmcmFtZT4NCjwvY2VudGVyPg0KDQojIyBRdWVzdGlvbg0KDQoqIFdoYXQgaXMgdGhlIFN0dWRlbnQgJHQkIGRpc3RyaWJ1dGlvbiB1c2VkIGZvcj8NCiogV2h5IGlzIGl0IGNhbGxlZCBTdHVkZW50ICR0JCBkaXN0cmlidXRpb24/DQoqIEhvdyBkbyB5b3UgZmluZCB0aGUgU3R1ZGVudCAkdCQgZGlzdHJpYnV0aW9uPw0KKiBXaGF0IGtpbmQgb2YgZGlzdHJpYnV0aW9uIGlzIHRoZSAkdCQgZGlzdHJpYnV0aW9uPw0KKiBQaGlsaXBzIENvcnBvcmF0aW9uIG1hbnVmYWN0dXJlcyBsaWdodCBidWxicy4gVGhlIENFTyBjbGFpbXMgdGhhdCBhbiBhdmVyYWdlIEFjbWUgbGlnaHQgYnVsYiBsYXN0cyAzMDAgZGF5cy4gQSByZXNlYXJjaGVyIHJhbmRvbWx5IHNlbGVjdHMgMTUgYnVsYnMgZm9yIHRlc3RpbmcuIFRoZSBzYW1wbGVkIGJ1bGJzIGxhc3QgYW4gYXZlcmFnZSBvZiAyOTAgZGF5cywgd2l0aCBhIHN0YW5kYXJkIGRldmlhdGlvbiBvZiA1MCBkYXlzLiBJZiB0aGUgQ0VPJ3MgY2xhaW0gd2VyZSB0cnVlLCB3aGF0IGlzIHRoZSBwcm9iYWJpbGl0eSB0aGF0IDE1IHJhbmRvbWx5IHNlbGVjdGVkIGJ1bGJzIHdvdWxkIGhhdmUgYW4gYXZlcmFnZSBsaWZlIG9mIG5vIG1vcmUgdGhhbiAyOTAgZGF5cz8gKEV4cGxhaW4gdGhpcyBleGVyY2lzZSBieSB1c2luZyBSKQ0KDQo+IE5vdGU6IFRoZXJlIGFyZSB0d28gd2F5cyB0byBzb2x2ZSB0aGlzIHByb2JsZW0sIHVzaW5nIHRoZSBUIERpc3RyaWJ1dGlvbiBDYWxjdWxhdG9yLiBCb3RoIGFwcHJvYWNoZXMgYXJlIHByZXNlbnRlZCBiZWxvdy4gU29sdXRpb24gQSBpcyB0aGUgdHJhZGl0aW9uYWwgYXBwcm9hY2guIEl0IHJlcXVpcmVzIHlvdSB0byBjb21wdXRlIHRoZSB0IHN0YXRpc3RpYywgYmFzZWQgb24gZGF0YSBwcmVzZW50ZWQgaW4gdGhlIHByb2JsZW0gZGVzY3JpcHRpb24uIFRoZW4sIHlvdSB1c2UgdGhlIFQgRGlzdHJpYnV0aW9uIENhbGN1bGF0b3IgdG8gZmluZCB0aGUgcHJvYmFiaWxpdHkuIFNvbHV0aW9uIEIgaXMgZWFzaWVyLiBZb3Ugc2ltcGx5IGVudGVyIHRoZSBwcm9ibGVtIGRhdGEgaW50byB0aGUgVCBEaXN0cmlidXRpb24gQ2FsY3VsYXRvci4gVGhlIGNhbGN1bGF0b3IgY29tcHV0ZXMgYSB0IHN0YXRpc3RpYyAiYmVoaW5kIHRoZSBzY2VuZXMiLCBhbmQgZGlzcGxheXMgdGhlIHByb2JhYmlsaXR5LiBCb3RoIGFwcHJvYWNoZXMgY29tZSB1cCB3aXRoIGV4YWN0bHkgdGhlIHNhbWUgYW5zd2VyLg0KDQoNCiMjIEFuc3dlcg0KDQogIFRoZSB0IGRpc3RyaWJ1dGlvbiBpcyBhIHByb2JhYmlsaXR5IGRpc3RyaWJ1dGlvbiB0aGF0IGlzIHVzZWQgdG8gZXN0aW1hdGUgcG9wdWxhdGlvbiBwYXJhbWV0ZXJzIHdoZW4gdGhlIHNhbXBsZSBzaXplIGlzIHNtYWxsIGFuZC9vciB3aGVuIHRoZSBwb3B1bGF0aW9uIHZhcmlhbmNlIGlzIHVua25vd24uDQoNCiAgVGhlIFN0dWRlbnQgdCBpcyBkZXNpZ25lZCBmb3IgdXNlIHdpdGggc21hbGwgZGF0YSBzZXRzIGZvciB3aGljaCB0aGUgdmFyaWFuY2UgaXMgdW5rbm93bi4gVGhpcyBkaXN0cmlidXRpb24gd2FzIGZpcnN0IGRlc2NyaWJlZCBieSBXLiBTLiBHb3NzZXQsIHdobyBwdWJsaXNoZWQgaGlzIHdvcmsgdW5kZXIgdGhlIHBlbiBuYW1lIOKAnFN0dWRlbnTigJ0gYmVjYXVzZSBoaXMgZW1wbG95ZXIsIHRoZSBHdWlubmVzcyBicmV3ZXJ5LCB3b3VsZCBub3QgcGVybWl0IGhpbSB0byBwdWJsaXNoIGl0IHVuZGVyIGhpcyBvd24gbmFtZS4NCg0KICBXZSBjb3VsZCBmaW5kIHRoZSB0LWRpc3RyaWJ1dGlvbiBXaGVuIHNvbWUgc2FtcGxlcyBhcmUgZHJhd24gZnJvbSBub3JtYWwgcG9wdWxhdGlvbiB3aG9zZSB2YXJpYW5jZSBpcyBrbm93biwgYSBkaXN0cmlidXRpb24gb2YgdGhlIHNhbXBsZSBtZWFuIGlzIG5vcm1hbC4gV2hlbiwgaG93ZXZlciwgdGhlIHZhcmlhbmNlIG9mIHRoZSBwb3B1bGF0aW9uIGlzIHVua25vd24sIHRoZSBkaXN0cmlidXRpb24gaXMgbm90IG5vcm1hbCBidXQgc3R1ZGVudC10LCB3aG9zZSB0YWlsIGxvbmdlci4gVGhhdCBtZWFucyB0aGUgZmFjdCB0aGF0IHNhbXBsZSBtZWFuIHdpdGggdW5rbm93biBwb3B1bGF0aW9uIHZhcmlhbmNlIGlzIGluY2xpbmVkIHRvIGJlIGFuIGV4dHJlbWUgdmFsdWUuIElmIHlvdSB1c2Ugbm9ybWFsIGRpc3RyaWJ1dGlvbiBmb3IgaHlwb3RoZXNpcyB0ZXN0aW5nIGluc3RlYWQgb2YgdCBkaXN0cmlidXRpb24sIHByb2JhYmlsaXR5IG9mIGVycm9yIGJlY29tZXMgYmlnZ2VyLg0KDQogIFQtZGlzdHJpYnV0aW9uIGlzIGEgdHlwZSBvZiBwcm9iYWJpbGl0eSBkaXN0cmlidXRpb24gdGhhdCBpcyBzaW1pbGFyIHRvIHRoZSBub3JtYWwgZGlzdHJpYnV0aW9uIHdpdGggaXRzIGJlbGwgc2hhcGUgYnV0IGhhcyBoZWF2aWVyIHRhaWxzLiBUIGRpc3RyaWJ1dGlvbnMgaGF2ZSBhIGdyZWF0ZXIgY2hhbmNlIGZvciBleHRyZW1lIHZhbHVlcyB0aGFuIG5vcm1hbCBkaXN0cmlidXRpb25zLCBoZW5jZSB0aGUgZmF0dGVyIHRhaWxzLg0KICANCg0KIyBGIERpc3RyaWJ1dGlvbiB7LnRhYnNldCAudGFic2V0LWZhZGUgLnRhYnNldC1waWxsc30NCg0KPGNlbnRlcj4NCjxpZnJhbWUgd2lkdGg9IjgwMCIgaGVpZ2h0PSI0NTAiIHNyYz0iaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvR19SRHhBWkotdWciIGZyYW1lYm9yZGVyPSIwIiBhbGxvdz0iYWNjZWxlcm9tZXRlcjsgYXV0b3BsYXk7IGVuY3J5cHRlZC1tZWRpYTsgZ3lyb3Njb3BlOyBwaWN0dXJlLWluLXBpY3R1cmUiIGFsbG93ZnVsbHNjcmVlbj48L2lmcmFtZT4NCjwvY2VudGVyPg0KDQojIyBRdWVzdGlvbg0KDQoqIFdoYXQgZG9lcyBGIGRpc3RyaWJ1dGlvbiBtZWFuPw0KKiBXaGF0IGRvZXMgdGhlIEYgZGlzdHJpYnV0aW9uIHRlbGwgeW91Pw0KKiBXaGF0IGlzIGFuIEYgZGlzdHJpYnV0aW9uIHVzZWQgZm9yPw0KKiBIb3cgaXMgdGhlIEYgZGlzdHJpYnV0aW9uIGRlcml2ZWQ/DQoqIFN1cHBvc2UgeW91IHJhbmRvbWx5IHNlbGVjdCA3IHdvbWVuIGZyb20gYSBwb3B1bGF0aW9uIG9mIHdvbWVuLCBhbmQgMTIgbWVuIGZyb20gYSBwb3B1bGF0aW9uIG9mIG1lbi4gVGhlIHRhYmxlIGJlbG93IHNob3dzIHRoZSBzdGFuZGFyZCBkZXZpYXRpb24gaW4gZWFjaCBzYW1wbGUgYW5kIGluIGVhY2ggcG9wdWxhdGlvbi4gKENvbXB1dGUgdGhlIGYgc3RhdGlzdGljLCBFeHBsYWluIHRoaXMgZXhlcmNpc2UgYnkgdXNpbmcgUikNCg0KUG9wdWxhdGlvbgkgIFBvcHVsYXRpb24gc3RhbmRhcmQgZGV2aWF0aW9uCSAgICBTYW1wbGUgc3RhbmRhcmQgZGV2aWF0aW9uDQotLS0tLS0tLS0tICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCldvbWVuCSAgICAgICAgICAgICAgIDMwCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNQ0KTWVuCSAgICAgICAgICAgICAgICAgNTAJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ1DQoNCg0KIyMgQW5zd2VyDQoNCiAgRiBkaXRyaWJ1dGlvbiBpcyBhIHByb2JhYmlsaXR5IGRlbnNpdHkgZnVuY3Rpb24gdGhhdCBpcyB1c2VkIGVzcGVjaWFsbHkgaW4gYW5hbHlzaXMgb2YgdmFyaWFuY2UgYW5kIGlzIGEgZnVuY3Rpb24gb2YgdGhlIHJhdGlvIG9mIHR3byBpbmRlcGVuZGVudCByYW5kb20gdmFyaWFibGVzIGVhY2ggb2Ygd2hpY2ggaGFzIGEgY2hpLXNxdWFyZSBkaXN0cmlidXRpb24gYW5kIGlzIGRpdmlkZWQgYnkgaXRzIG51bWJlciBvZiBkZWdyZWVzIG9mIGZyZWVkb20uIA0KDQogIFRoZSBGIGRpc3RyaWJ1dGlvbiB0ZWxsIHRoYXQgRi1kaXN0cmlidXRpb24gaXMgYSBza2V3ZWQgZGlzdHJpYnV0aW9uIG9mIHByb2JhYmlsaXRpZXMgc2ltaWxhciB0byBhIGNoaS1zcXVhcmVkIGRpc3RyaWJ1dGlvbi4gQnV0IHdoZXJlIHRoZSBjaGktc3F1YXJlZCBkaXN0cmlidXRpb24gZGVhbHMgd2l0aCB0aGUgZGVncmVlIG9mIGZyZWVkb20gd2l0aCBvbmUgc2V0IG9mIHZhcmlhYmxlcywgdGhlIEYtZGlzdHJpYnV0aW9uIGRlYWxzIHdpdGggbXVsdGlwbGUgbGV2ZWxzIG9mIGV2ZW50cyBoYXZpbmcgZGlmZmVyZW50IGRlZ3JlZXMgb2YgZnJlZWRvbS4gVGhpcyBtZWFucyB0aGF0IHRoZXJlIGFyZSBzZXZlcmFsIHZlcnNpb25zIG9mIHRoZSBGLWRpc3RyaWJ1dGlvbiBmb3IgZGlmZmVyaW5nIGxldmVscyBvZiBkZWdyZWVzIG9mIGZyZWVkb20uDQogIA0KICBGIGRpc3RyaWJ1dGlvbiBpcyB1c2VkIHdoZW4geW91IGFyZSBjb21wYXJpbmcgbW9yZSB0aGFuIHR3byBncm91cHMsIHlvdSB3aWxsIG5lZWQgdGhlIEYtZGlzdHJpYnV0aW9uIGZvciB0aGUgRi10ZXN0LiBZb3UgY2FuIHVzZSB0aGUgRiBzdGF0aXN0aWMgd2hlbiBkZWNpZGluZyB0byBzdXBwb3J0IG9yIHJlamVjdCB0aGUgbnVsbCBoeXBvdGhlc2lzLiBJbiB5b3VyIEYgdGVzdCByZXN1bHRzLCB5b3XigJlsbCBoYXZlIGJvdGggYW4gRiB2YWx1ZSBhbmQgYW4gRiBjcml0aWNhbCB2YWx1ZS4gVGhlIEYgY3JpdGljYWwgdmFsdWUgaXMgYWxzbyBjYWxsZWQgdGhlIEYgc3RhdGlzdGljLiBUaGUgdmFsdWUgeW91IGNhbGN1bGF0ZSBmcm9tIHlvdXIgZGF0YSBpcyBjYWxsZWQgdGhlIEYgdmFsdWUgKHdpdGhvdXQgdGhlIOKAnGNyaXRpY2Fs4oCdIHBhcnQpLg0KICANCiAgVGhlIEYtZGlzdHJpYnV0aW9uIGlzIGRlcml2ZWQgZnJvbSBhIHJhdGlvIGludm9sdmluZyB0d28gcG9wdWxhdGlvbnMuIFRoZXJlIGlzIGEgc2FtcGxlIGZyb20gZWFjaCBvZiB0aGVzZSBwb3B1bGF0aW9ucyBhbmQgdGh1cyB0aGVyZSBhcmUgZGVncmVlcyBvZiBmcmVlZG9tIGZvciBib3RoIG9mIHRoZXNlIHNhbXBsZXMuDQogIA0KYGBge3J9DQp4MSA8LSAzMA0KeDIgPC0gNTANCg0KeTEgPC0gMzUNCnkyIDwtIDQ1DQoNCnAgPSAoeTFeMi94MV4yKQ0KcSA9ICh5Ml4yL3gyXjIpDQoNCkYxID0gcC9xDQpGMQ0KDQpGMiA9IHEvcA0KRjINCmBgYA0KDQo=