library(tidyverse)
library(plotly)
library(ggplot2)
library(ggfortify)
library(ggpubr)
library(sciplot)
library(lsr)
library(knitr)
                                                   Abstract

This survey analysis was performed with scales obtained from the Becks Cognitive Insight Scale (Beck, Bauruch, Balter, Steer, & Warman, 2004) and The Centrality of Religiosity Scale (Huber & Huber, 2012) to see if there is a relationship between the participants Insight and Religiosity. This survey collected 45 participants. Additionally, the study looked at the relationship between Age and Gender with Insight and Religiosity scores. In addition to a plot that shows the approximate scores of each participant a linear regression was performed. In addition the the regression analysis a One-Way ANOVA were performed to examine the similar concept. A One-Way ANOVA were then Performed followed by an ANCOVA and MANOVA. There were no significance in any of the analysis performed. This could be due to the small sample size and poor diversity among the population.

                                                     Methods

A bar graph were used to represent the overall scores of each participant. A regression analysis were then performed to analyze the relationship between the Religiosity (R Totals) and Insight (I Totals) scores. A One-Way ANOVA was then performed to also assess the relationship between Religiosity and Insight Scores. This was then followed by a Three-Way ANOVA to assess the relationship between the Religiosity scores, Age, and Gender to the Insight scores. Lastly, A MANOVA analysis were performed to combine the Religiosity and Insight scores to compare the relationship with the Age and Gender variables.

                                                     Results
summary(FaithandInsight)
    Subnum              Gender           Age              I1       
 Length:45          Min.   :1.000   Min.   :1.000   Min.   :1.000  
 Class :character   1st Qu.:2.000   1st Qu.:1.000   1st Qu.:2.000  
 Mode  :character   Median :2.000   Median :1.000   Median :2.000  
                    Mean   :1.778   Mean   :2.267   Mean   :2.556  
                    3rd Qu.:2.000   3rd Qu.:4.000   3rd Qu.:3.000  
                    Max.   :3.000   Max.   :5.000   Max.   :4.000  
       I2              I3              I4              I5            I6       
 Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.0   Min.   :1.000  
 1st Qu.:2.000   1st Qu.:1.000   1st Qu.:2.000   1st Qu.:1.0   1st Qu.:2.000  
 Median :2.000   Median :2.000   Median :2.000   Median :2.0   Median :2.000  
 Mean   :2.333   Mean   :1.711   Mean   :2.356   Mean   :1.8   Mean   :2.244  
 3rd Qu.:3.000   3rd Qu.:2.000   3rd Qu.:3.000   3rd Qu.:2.0   3rd Qu.:3.000  
 Max.   :4.000   Max.   :4.000   Max.   :4.000   Max.   :3.0   Max.   :4.000  
       I7              I8              I9             I10       
 Min.   :1.000   Min.   :2.000   Min.   :1.000   Min.   :1.000  
 1st Qu.:1.000   1st Qu.:2.000   1st Qu.:2.000   1st Qu.:1.000  
 Median :2.000   Median :3.000   Median :3.000   Median :2.000  
 Mean   :2.067   Mean   :3.178   Mean   :2.889   Mean   :1.622  
 3rd Qu.:3.000   3rd Qu.:4.000   3rd Qu.:3.000   3rd Qu.:2.000  
 Max.   :4.000   Max.   :4.000   Max.   :4.000   Max.   :3.000  
      I11             I12             I13           I14             I15       
 Min.   :1.000   Min.   :1.000   Min.   :1.0   Min.   :2.000   Min.   :1.000  
 1st Qu.:1.000   1st Qu.:2.000   1st Qu.:2.0   1st Qu.:3.000   1st Qu.:3.000  
 Median :2.000   Median :3.000   Median :3.0   Median :4.000   Median :3.000  
 Mean   :2.022   Mean   :2.444   Mean   :2.4   Mean   :3.444   Mean   :3.556  
 3rd Qu.:2.000   3rd Qu.:3.000   3rd Qu.:3.0   3rd Qu.:4.000   3rd Qu.:5.000  
 Max.   :4.000   Max.   :4.000   Max.   :4.0   Max.   :4.000   Max.   :6.000  
     ITotal            18              19              20       
 Min.   :29.00   Min.   :1.000   Min.   :1.000   Min.   :1.000  
 1st Qu.:34.00   1st Qu.:2.000   1st Qu.:1.000   1st Qu.:1.000  
 Median :37.00   Median :2.000   Median :2.000   Median :3.000  
 Mean   :36.51   Mean   :2.822   Mean   :2.333   Mean   :3.444  
 3rd Qu.:40.00   3rd Qu.:5.000   3rd Qu.:3.000   3rd Qu.:6.000  
 Max.   :44.00   Max.   :6.000   Max.   :6.000   Max.   :6.000  
       21              22              23              24       
 Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
 1st Qu.:1.000   1st Qu.:1.000   1st Qu.:1.000   1st Qu.:1.000  
 Median :1.000   Median :2.000   Median :1.000   Median :2.000  
 Mean   :2.067   Mean   :2.267   Mean   :1.667   Mean   :2.667  
 3rd Qu.:3.000   3rd Qu.:3.000   3rd Qu.:2.000   3rd Qu.:3.000  
 Max.   :6.000   Max.   :7.000   Max.   :5.000   Max.   :7.000  
       25              26            RTotal          Total      
 Min.   :1.000   Min.   :1.000   Min.   : 9.00   Min.   :40.00  
 1st Qu.:1.000   1st Qu.:1.000   1st Qu.:15.00   1st Qu.:50.00  
 Median :1.000   Median :2.000   Median :21.00   Median :59.00  
 Mean   :1.778   Mean   :2.956   Mean   :21.98   Mean   :58.49  
 3rd Qu.:2.000   3rd Qu.:4.000   3rd Qu.:28.00   3rd Qu.:64.00  
 Max.   :7.000   Max.   :6.000   Max.   :40.00   Max.   :81.00  

This is a summary of the data by column and questions.

ggplot(FaithandInsight, aes(x = Subnum, y = Total)) + 
  geom_col() +
  geom_rug() +
  labs(title = "Overall Participant Scores", x = "Participant") +
  stat_smooth(method = "lm", col = 'red')

Figure 1.1 Indicates the total of each participant. The lowest scores were around 40. The highest were around 80.

regression.model <- lm( ITotal~ RTotal, data = FaithandInsight)
 summary.lm( regression.model )

Call:
lm(formula = ITotal ~ RTotal, data = FaithandInsight)

Residuals:
    Min      1Q  Median      3Q     Max 
-7.6896 -2.6006  0.3994  3.2391  7.3816 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 36.11962    1.46466  24.661   <2e-16 ***
RTotal       0.01781    0.06103   0.292    0.772    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 3.947 on 43 degrees of freedom
Multiple R-squared:  0.001977,  Adjusted R-squared:  -0.02123 
F-statistic: 0.08519 on 1 and 43 DF,  p-value: 0.7718

The regression F statistic (0.08519) indicates that there is low variability. However the P value (0.7718) indicates there is not any significance of the Religiosity scores(R Total) effecting the Insight scores(I Total).

autoplot(regression.model)

Figure 1.2 These graphs represents the regression model and indicate that the distributions of scores are too spread out to indicate a correlation between the Religiosity scores and the Insight scores.

aov.model <- aov(formula = ITotal ~ RTotal, data = FaithandInsight)
summary(aov.model)
            Df Sum Sq Mean Sq F value Pr(>F)
RTotal       1    1.3   1.327   0.085  0.772
Residuals   43  669.9  15.579               

This One-Way ANOVA and the P value (0.772) indicate there is not any significance of the Religiosity scores (R Total) effecting the Insight scores (I Total).

autoplot(aov.model)

Figure 1.3 These graphs represent the One-Way ANOVA and indicate that the distributions of scores are too spread out to indicate a correlation between the Religiosity scores and the Insight scores.

aov.model2 <- aov(formula = ITotal ~ RTotal + Age + Gender, data = FaithandInsight)
summary.aov(aov.model2)
            Df Sum Sq Mean Sq F value Pr(>F)
RTotal       1    1.3   1.327   0.085  0.773
Age          1    8.0   7.971   0.508  0.480
Gender       1   18.2  18.210   1.160  0.288
Residuals   41  643.7  15.701               

The Three-way ANOVA and the Religiosity (R Total) P value of (.773), Age P value of (.480), and Gender P value of (.288) indicate there is not any significance of the Religiosity, Age, or Gender Variables effecting the Insight scores(I Total).

ggplot(aov.model2, aes(group = Age, x =RTotal, y = ITotal, color = factor(Age, labels = c("18-30", 
    "31-40", "41-50", "51-60", "60+")))) + 
  theme(legend.text = element_text(colour="Black", size = 16, face = "bold")) +
  theme(legend.background = element_rect(colour = 'Dark Blue', fill = 'Green', size = 3)) +
  geom_boxplot() +
  labs(color = "Age") +
labs(title= "Scores by Age Groups") 

Figure 1.4 Represents the Three-Way ANOVA and indicates that the highest scoring group of participants were in the 18-30 range and the least in the 31-40 range. Those in the 60+ range scored higher on Insight. Those in the 18-30 were second highest on Insight. There is little variation from the mean.

Figure 1.5 Represents the Three-Way ANOVA with a focus on Gender and indicates that female participants scored higher on Insight. There is little variation from the mean.

manova.model <- manova(cbind(ITotal, RTotal) ~  Age*Gender, data = FaithandInsight)
summary(manova.model, test = "Wilks")
           Df   Wilks approx F num Df den Df Pr(>F)
Age         1 0.94400   1.1864      2     40 0.3158
Gender      1 0.94253   1.2195      2     40 0.3061
Age:Gender  1 0.94715   1.1159      2     40 0.3376
Residuals  41                                      

This Two-way MANOVA indicates that the variables of Age and Gender fit the model well with little discrimination as indicated by the Wilks test scores being under 1. However the P value for Gender (.3061), and the P value for Age (.3158) indicate there in no significant in any of the variables to Religiosity or Insight.

ggplot(manova.model, aes(x = Age, y = Gender, color = factor(Gender, labels = c("Male", 
    "Female", "Decline to Answer")))) + 
  geom_violin() +
  scale_x_continuous(labels =c("1" = "18-30", "2" = "31-40", "3" = "41-50", "4" = "51-60", "5" = "60+")) +
  labs(color = "Gender") +
  labs(title= "Gender Focus") +
  stat_smooth(method = "aov", col = "red")

Figure 1.6 Represents the MANOVA measuring the relationship of Age and Gender to Religiosity and Insight. It appears that females in the 18-31 range scored the highest on Religiosity and Insight. Males from the 41-60 range scored highest for their group.

ggplot(manova.model, aes(x = Age, y = Gender, color = factor(Age, labels = c("18-30", "31-40", "41-50", "51-60", "60+")))) + 
  geom_violin() +
  labs(color = "Age") +
  labs(title= "Age Focus") +
  stat_smooth(method = "aov", col = "red")

Figure 1.7 Represents the Age perspective of the above MANOVA and indicates that those in the 41-50 range scored the lowest on Religiosity and Insight while those in the 18-30 range scored the highest.

 
                                                      Discussion

The Overall goal of this study is to see if there is a relationship between ones Insight and how Religious the participants are. In this Regard there was no evidence found to support that hypothesis. With the small sample collected it was discovered that participants in the 18-30 age group scored the highest on Insight and Religiosity. The 41-50 and the group that scored the least on Insight and Religiosity were those in the age group of 31-40. It was also found that females scored higher on both Religiosity and Insight scales. There was no significant correlation found between Age or Gender on Religiosity or Insight. In the future this study could yield better results with a larger sample size and a more diverse distribution among age. In the future switching the primary scale looked at from the Insight scores to the Religiosity scores would be beneficial for a better overall picture.


                                                      Work Cited
                              

Beck, A. T., Bauruch, E., Balter, J. M., Steer, R. A., & Warman, D. M. (2004). A new instrument for measuring insight: the Beck Cognitive Insight Scale. Elsevier, 319-329. Huber, S., & Huber, O. W. (2012). The Centrality of Religiosity Scale. Religions, 710-724.

Anderson, M. L. (2016). Moral Foundations Theory: An Exploratory Study of Politics and Decision-Making. Journal of Leadership, Accountability and Ethics, 13(2), 74-92.

Andes, P. (2019). Sidgwick’s Dualism of Practical Reason, Evolutionary Debunking, and Moral Psychoolgy. Cambridge University Press, 31, 361-377.

Bader, C. F. (2008). Unraveling Religious Worldviews: The Relationship between images of God and Political Ideology in a Cross-Cultural Analysis. The Sociological Quarterly, 49(4), 689-718.

Drummond, D. C. (2017). EMPATHY AND THE EVOLUTION OF COMPASSION: FROM DEEP HISTORY TO INFUSED VIRTUE. Joint Publication Board of Zygon, 258-278.

Eze, E. C. (2009). Between History and the Gods: Reason, Morality, and Politics in Today’s Africa. Indiana University Press, 55(2), 77-94.

Frederick, S. (2005). Cognative Reflection and Decision Making. Jounral of Economic Perspectives, 19(1), 25-42.

Greely, A. M. (1988). Evidence that a Maternal Image of God Correlates with Liberal Politics. Sociology and Social Research, 72: 150-4.

Gross, M. L. (1996). Moral Reasoning and Ideogical Affiliation: A cross-National Study. Political Psychology, 17(2), 317-338.

Joldersma, C. W. (2011). Providential Deism, Divine Reason, and Locke’s Educational Theory. The Journal of Educational Thought, 45(2), 113.

Kuhn, T. (1996). The Structure of Scientific Revolutions. University of Chicago Press.

Locke, J. Y. (1989). Some thoughts concerning education. Oxford University Press., 1-352.

Loewen, P. C. (2019). Empathy and Political preferences. Retrieved from www.princeton.edu/csdp/events/Loewen03162017.

Morris, S. G. (2020). Empathy and the Liberal-Conservative Political Divide in the U.S. Journal of Social and Political Psychology, 8(1), 08-24.

Preston, O. C. (2018). Psychopathic traits and politics: Examining affiliation, support of political issues, and the role of empathy. Personality and Individual Differences, 142-148.

Proeschold-Bell, R. J. (2014). Closeness to God Among Those Doing God’s Work: A Spiritual Well-Being Measure For Clergy. Journal of Religion and Health, 53(3), 878-894.

Richardson, A. W. (2002). Narrating the History of Reason Itself: Friedman, Kuhn, and a Constitutive A Priori for the Twenty-First Century. Perspectives on Science, 10(3), 253 274.

Sa, W. C. (1999). The Domain Specificity and Generality of Belief Bias: Searching for a Generalizable Critical Thinking Skill. Journal of Educational Psychology, 91(3), 497 510.

Scheffer, M. L. (2021). The rise and fall of rationality in language. Proceedings of the National Academy of Sciences of the United States of America, 118(51).

Spreng, N. R. (2009). The Toronto Empathy Questionaire: Scale development and initial validation of a factor-analytic solution to multiple empathy measures. Journal of personality Assessment, 91(1) 62-71.

Zhang, Q. Z. (2017). An Analytical Overview of Kohlberg’s Theory of Moral Development in College Moral Education in Mainland China. Open Journal of Social Sciences, 151-160.

LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6IGRlZmF1bHQKICBodG1sX2RvY3VtZW50OgogICAgZGZfcHJpbnQ6IG91dHB1dAogIHBkZl9kb2N1bWVudDogCiAgICBrZWVwX3RleDogdHJ1ZQotLS0KCmBgYHtyfQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShwbG90bHkpCmxpYnJhcnkoZ2dwbG90MikKbGlicmFyeShnZ2ZvcnRpZnkpCmxpYnJhcnkoZ2dwdWJyKQpsaWJyYXJ5KHNjaXBsb3QpCmxpYnJhcnkobHNyKQpsaWJyYXJ5KGtuaXRyKQpgYGAKCmBgYCAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBYnN0cmFjdApgYGAKClRoaXMgc3VydmV5IGFuYWx5c2lzIHdhcyBwZXJmb3JtZWQgd2l0aCBzY2FsZXMgb2J0YWluZWQgZnJvbSB0aGUgQmVja3MgQ29nbml0aXZlIEluc2lnaHQgU2NhbGUgKEJlY2ssIEJhdXJ1Y2gsIEJhbHRlciwgU3RlZXIsICYgV2FybWFuLCAyMDA0KSBhbmQgVGhlIENlbnRyYWxpdHkgb2YgUmVsaWdpb3NpdHkgU2NhbGUgKEh1YmVyICYgSHViZXIsIDIwMTIpIHRvIHNlZSBpZiB0aGVyZSBpcyBhIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSBwYXJ0aWNpcGFudHMgSW5zaWdodCBhbmQgUmVsaWdpb3NpdHkuIFRoaXMgc3VydmV5IGNvbGxlY3RlZCA0NSBwYXJ0aWNpcGFudHMuIEFkZGl0aW9uYWxseSwgdGhlIHN0dWR5IGxvb2tlZCBhdCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gQWdlIGFuZCBHZW5kZXIgd2l0aCBJbnNpZ2h0IGFuZCBSZWxpZ2lvc2l0eSBzY29yZXMuIEluIGFkZGl0aW9uIHRvIGEgcGxvdCB0aGF0IHNob3dzIHRoZSBhcHByb3hpbWF0ZSBzY29yZXMgb2YgZWFjaCBwYXJ0aWNpcGFudCBhIGxpbmVhciByZWdyZXNzaW9uIHdhcyBwZXJmb3JtZWQuIEluIGFkZGl0aW9uIHRoZSB0aGUgcmVncmVzc2lvbiBhbmFseXNpcyBhIE9uZS1XYXkgQU5PVkEgd2VyZSBwZXJmb3JtZWQgdG8gZXhhbWluZSB0aGUgc2ltaWxhciBjb25jZXB0LiBBIE9uZS1XYXkgQU5PVkEgd2VyZSB0aGVuIFBlcmZvcm1lZCBmb2xsb3dlZCBieSBhbiBBTkNPVkEgYW5kIE1BTk9WQS4gVGhlcmUgd2VyZSBubyBzaWduaWZpY2FuY2UgaW4gYW55IG9mIHRoZSBhbmFseXNpcyBwZXJmb3JtZWQuIFRoaXMgY291bGQgYmUgZHVlIHRvIHRoZSBzbWFsbCBzYW1wbGUgc2l6ZSBhbmQgcG9vciBkaXZlcnNpdHkgYW1vbmcgdGhlIHBvcHVsYXRpb24uCgpgYGAKCmBgYAoKYGBgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWV0aG9kcwpgYGAKCkEgYmFyIGdyYXBoIHdlcmUgdXNlZCB0byByZXByZXNlbnQgdGhlIG92ZXJhbGwgc2NvcmVzIG9mIGVhY2ggcGFydGljaXBhbnQuIEEgcmVncmVzc2lvbiBhbmFseXNpcyB3ZXJlIHRoZW4gcGVyZm9ybWVkIHRvIGFuYWx5emUgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSBSZWxpZ2lvc2l0eSAoUiBUb3RhbHMpIGFuZCBJbnNpZ2h0IChJIFRvdGFscykgc2NvcmVzLiBBIE9uZS1XYXkgQU5PVkEgd2FzIHRoZW4gcGVyZm9ybWVkIHRvIGFsc28gYXNzZXNzIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBSZWxpZ2lvc2l0eSBhbmQgSW5zaWdodCBTY29yZXMuIFRoaXMgd2FzIHRoZW4gZm9sbG93ZWQgYnkgYSBUaHJlZS1XYXkgQU5PVkEgdG8gYXNzZXNzIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgUmVsaWdpb3NpdHkgc2NvcmVzLCBBZ2UsIGFuZCBHZW5kZXIgdG8gdGhlIEluc2lnaHQgc2NvcmVzLiBMYXN0bHksIEEgTUFOT1ZBIGFuYWx5c2lzIHdlcmUgcGVyZm9ybWVkIHRvIGNvbWJpbmUgdGhlIFJlbGlnaW9zaXR5IGFuZCBJbnNpZ2h0IHNjb3JlcyB0byBjb21wYXJlIHRoZSByZWxhdGlvbnNoaXAgd2l0aCB0aGUgQWdlIGFuZCBHZW5kZXIgdmFyaWFibGVzLgoKYGBgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0cwpgYGAKCmBgYHtyfQpzdW1tYXJ5KEZhaXRoYW5kSW5zaWdodCkKYGBgCgpUaGlzIGlzIGEgc3VtbWFyeSBvZiB0aGUgZGF0YSBieSBjb2x1bW4gYW5kIHF1ZXN0aW9ucy4KCgpgYGB7cn0KZ2dwbG90KEZhaXRoYW5kSW5zaWdodCwgYWVzKHggPSBTdWJudW0sIHkgPSBUb3RhbCkpICsgCiAgZ2VvbV9jb2woKSArCiAgZ2VvbV9ydWcoKSArCiAgbGFicyh0aXRsZSA9ICJPdmVyYWxsIFBhcnRpY2lwYW50IFNjb3JlcyIsIHggPSAiUGFydGljaXBhbnQiKSArCiAgc3RhdF9zbW9vdGgobWV0aG9kID0gImxtIiwgY29sID0gJ3JlZCcpCmBgYAoKKipGaWd1cmUgMS4xKiogSW5kaWNhdGVzIHRoZSB0b3RhbCBvZiBlYWNoIHBhcnRpY2lwYW50LiBUaGUgbG93ZXN0IHNjb3JlcyB3ZXJlIGFyb3VuZCA0MC4gVGhlIGhpZ2hlc3Qgd2VyZSBhcm91bmQgODAuCgoKYGBge3J9CnJlZ3Jlc3Npb24ubW9kZWwgPC0gbG0oIElUb3RhbH4gUlRvdGFsLCBkYXRhID0gRmFpdGhhbmRJbnNpZ2h0KQogc3VtbWFyeS5sbSggcmVncmVzc2lvbi5tb2RlbCApCmBgYAoKVGhlIHJlZ3Jlc3Npb24gRiBzdGF0aXN0aWMgKDAuMDg1MTkpIGluZGljYXRlcyB0aGF0IHRoZXJlIGlzIGxvdyB2YXJpYWJpbGl0eS4gSG93ZXZlciB0aGUgUCB2YWx1ZSAoMC43NzE4KSBpbmRpY2F0ZXMgdGhlcmUgaXMgbm90IGFueSBzaWduaWZpY2FuY2Ugb2YgdGhlIFJlbGlnaW9zaXR5IHNjb3JlcyhSIFRvdGFsKSBlZmZlY3RpbmcgdGhlIEluc2lnaHQgc2NvcmVzKEkgVG90YWwpLgoKCmBgYHtyfQphdXRvcGxvdChyZWdyZXNzaW9uLm1vZGVsKQpgYGAKCioqRmlndXJlIDEuMioqIFRoZXNlIGdyYXBocyByZXByZXNlbnRzIHRoZSByZWdyZXNzaW9uIG1vZGVsIGFuZCBpbmRpY2F0ZSB0aGF0IHRoZSBkaXN0cmlidXRpb25zIG9mIHNjb3JlcyBhcmUgdG9vIHNwcmVhZCBvdXQgdG8gaW5kaWNhdGUgYSBjb3JyZWxhdGlvbiBiZXR3ZWVuIHRoZSBSZWxpZ2lvc2l0eSBzY29yZXMgYW5kIHRoZSBJbnNpZ2h0IHNjb3Jlcy4KCgpgYGB7cn0KYW92Lm1vZGVsIDwtIGFvdihmb3JtdWxhID0gSVRvdGFsIH4gUlRvdGFsLCBkYXRhID0gRmFpdGhhbmRJbnNpZ2h0KQpzdW1tYXJ5KGFvdi5tb2RlbCkKYGBgCgpUaGlzIE9uZS1XYXkgQU5PVkEgYW5kIHRoZSBQIHZhbHVlICgwLjc3MikgaW5kaWNhdGUgdGhlcmUgaXMgbm90IGFueSBzaWduaWZpY2FuY2Ugb2YgdGhlIFJlbGlnaW9zaXR5IHNjb3JlcyAoUiBUb3RhbCkgZWZmZWN0aW5nIHRoZSBJbnNpZ2h0IHNjb3JlcyAoSSBUb3RhbCkuCgoKYGBge3J9CmF1dG9wbG90KGFvdi5tb2RlbCkKYGBgCgoqKkZpZ3VyZSAxLjMqKiBUaGVzZSBncmFwaHMgcmVwcmVzZW50IHRoZSBPbmUtV2F5IEFOT1ZBIGFuZCBpbmRpY2F0ZSB0aGF0IHRoZSBkaXN0cmlidXRpb25zIG9mIHNjb3JlcyBhcmUgdG9vIHNwcmVhZCBvdXQgdG8gaW5kaWNhdGUgYSBjb3JyZWxhdGlvbiBiZXR3ZWVuIHRoZSBSZWxpZ2lvc2l0eSBzY29yZXMgYW5kIHRoZSBJbnNpZ2h0IHNjb3Jlcy4KCgpgYGB7cn0KYW92Lm1vZGVsMiA8LSBhb3YoZm9ybXVsYSA9IElUb3RhbCB+IFJUb3RhbCArIEFnZSArIEdlbmRlciwgZGF0YSA9IEZhaXRoYW5kSW5zaWdodCkKc3VtbWFyeS5hb3YoYW92Lm1vZGVsMikKYGBgCgpUaGUgVGhyZWUtd2F5IEFOT1ZBIGFuZCB0aGUgUmVsaWdpb3NpdHkgKFIgVG90YWwpIFAgdmFsdWUgb2YgKC43NzMpLCBBZ2UgUCB2YWx1ZSBvZiAoLjQ4MCksIGFuZCBHZW5kZXIgUCB2YWx1ZSBvZiAoLjI4OCkgaW5kaWNhdGUgdGhlcmUgaXMgbm90IGFueSBzaWduaWZpY2FuY2Ugb2YgdGhlIFJlbGlnaW9zaXR5LCBBZ2UsIG9yIEdlbmRlciBWYXJpYWJsZXMgZWZmZWN0aW5nIHRoZSBJbnNpZ2h0IHNjb3JlcyhJIFRvdGFsKS4KCgpgYGB7cn0KZ2dwbG90KGFvdi5tb2RlbDIsIGFlcyhncm91cCA9IEFnZSwgeCA9UlRvdGFsLCB5ID0gSVRvdGFsLCBjb2xvciA9IGZhY3RvcihBZ2UsIGxhYmVscyA9IGMoIjE4LTMwIiwgCiAgICAiMzEtNDAiLCAiNDEtNTAiLCAiNTEtNjAiLCAiNjArIikpKSkgKyAKICB0aGVtZShsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvdXI9IkJsYWNrIiwgc2l6ZSA9IDE2LCBmYWNlID0gImJvbGQiKSkgKwogIHRoZW1lKGxlZ2VuZC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGNvbG91ciA9ICdEYXJrIEJsdWUnLCBmaWxsID0gJ0dyZWVuJywgc2l6ZSA9IDMpKSArCiAgZ2VvbV9ib3hwbG90KCkgKwogIGxhYnMoY29sb3IgPSAiQWdlIikgKwpsYWJzKHRpdGxlPSAiU2NvcmVzIGJ5IEFnZSBHcm91cHMiKSAKYGBgCgoqKkZpZ3VyZSAxLjQqKiBSZXByZXNlbnRzIHRoZSBUaHJlZS1XYXkgQU5PVkEgYW5kIGluZGljYXRlcyB0aGF0IHRoZSBoaWdoZXN0IHNjb3JpbmcgZ3JvdXAgb2YgcGFydGljaXBhbnRzIHdlcmUgaW4gdGhlIDE4LTMwIHJhbmdlIGFuZCB0aGUgbGVhc3QgaW4gdGhlIDMxLTQwIHJhbmdlLiBUaG9zZSBpbiB0aGUgNjArIHJhbmdlIHNjb3JlZCBoaWdoZXIgb24gSW5zaWdodC4gVGhvc2UgaW4gdGhlIDE4LTMwIHdlcmUgc2Vjb25kIGhpZ2hlc3Qgb24gSW5zaWdodC4gVGhlcmUgaXMgbGl0dGxlIHZhcmlhdGlvbiBmcm9tIHRoZSBtZWFuLgoKCmBgYHtyIGVjaG89RkFMU0V9CmdncGxvdChhb3YubW9kZWwyLCBhZXMoZ3JvdXAgPSBHZW5kZXIsIHggPSBSVG90YWwsIHkgPSBJVG90YWwsIGNvbG9yID0gZmFjdG9yKEdlbmRlciwgbGFiZWxzID0gYygiTWFsZSIsIAogICAgIkZlbWFsZSIsICJEZWNsaW5lIHRvIEFuc3dlciIpKSkpICsKICB0aGVtZShsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvdXI9IkJsYWNrIiwgc2l6ZSA9IDE2LCBmYWNlID0gImJvbGQiKSkgKwogIHRoZW1lKGxlZ2VuZC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGNvbG91ciA9ICdEYXJrIEJsdWUnLCBmaWxsID0gJ0dyZWVuJywgc2l6ZSA9IDMpKSArCiAgZ2VvbV9ib3hwbG90KCkgKwogIGxhYnModGl0bGU9ICJTY29yZXMgYnkgR2VuZGVyIikgKwogIGxhYnMoY29sb3IgPSAnR2VuZGVyJywgZmlsbCA9ICdHZW5kZXInKSArCiAgc3RhdF9zbW9vdGgobWV0aG9kID0gImFvdiIsIGNvbCA9ICJyZWQiKQogIApgYGAKCioqRmlndXJlIDEuNSoqIFJlcHJlc2VudHMgdGhlIFRocmVlLVdheSBBTk9WQSB3aXRoIGEgZm9jdXMgb24gR2VuZGVyIGFuZCBpbmRpY2F0ZXMgdGhhdCBmZW1hbGUgcGFydGljaXBhbnRzIHNjb3JlZCBoaWdoZXIgb24gSW5zaWdodC4gVGhlcmUgaXMgbGl0dGxlIHZhcmlhdGlvbiBmcm9tIHRoZSBtZWFuLgoKCmBgYHtyfQptYW5vdmEubW9kZWwgPC0gbWFub3ZhKGNiaW5kKElUb3RhbCwgUlRvdGFsKSB+ICBBZ2UqR2VuZGVyLCBkYXRhID0gRmFpdGhhbmRJbnNpZ2h0KQpzdW1tYXJ5KG1hbm92YS5tb2RlbCwgdGVzdCA9ICJXaWxrcyIpCmBgYAoKVGhpcyBUd28td2F5IE1BTk9WQSBpbmRpY2F0ZXMgdGhhdCB0aGUgdmFyaWFibGVzIG9mIEFnZSBhbmQgR2VuZGVyIGZpdCB0aGUgbW9kZWwgd2VsbCB3aXRoIGxpdHRsZSBkaXNjcmltaW5hdGlvbiBhcyBpbmRpY2F0ZWQgYnkgdGhlIFdpbGtzIHRlc3Qgc2NvcmVzIGJlaW5nIHVuZGVyIDEuIEhvd2V2ZXIgdGhlIFAgdmFsdWUgZm9yIEdlbmRlciAoLjMwNjEpLCBhbmQgdGhlIFAgdmFsdWUgZm9yIEFnZSAoLjMxNTgpIGluZGljYXRlIHRoZXJlIGluIG5vIHNpZ25pZmljYW50IGluIGFueSBvZiB0aGUgdmFyaWFibGVzIHRvIFJlbGlnaW9zaXR5IG9yIEluc2lnaHQuCgoKYGBge3IgZWNobz1UUlVFfQpnZ3Bsb3QobWFub3ZhLm1vZGVsLCBhZXMoeCA9IEFnZSwgeSA9IEdlbmRlciwgY29sb3IgPSBmYWN0b3IoR2VuZGVyLCBsYWJlbHMgPSBjKCJNYWxlIiwgCiAgICAiRmVtYWxlIiwgIkRlY2xpbmUgdG8gQW5zd2VyIikpKSkgKyAKICBnZW9tX3Zpb2xpbigpICsKICBzY2FsZV94X2NvbnRpbnVvdXMobGFiZWxzID1jKCIxIiA9ICIxOC0zMCIsICIyIiA9ICIzMS00MCIsICIzIiA9ICI0MS01MCIsICI0IiA9ICI1MS02MCIsICI1IiA9ICI2MCsiKSkgKwogIGxhYnMoY29sb3IgPSAiR2VuZGVyIikgKwogIGxhYnModGl0bGU9ICJHZW5kZXIgRm9jdXMiKSArCiAgc3RhdF9zbW9vdGgobWV0aG9kID0gImFvdiIsIGNvbCA9ICJyZWQiKQpgYGAKCioqRmlndXJlIDEuNioqIFJlcHJlc2VudHMgdGhlIE1BTk9WQSBtZWFzdXJpbmcgdGhlIHJlbGF0aW9uc2hpcCBvZiBBZ2UgYW5kIEdlbmRlciB0byBSZWxpZ2lvc2l0eSBhbmQgSW5zaWdodC4gSXQgYXBwZWFycyB0aGF0IGZlbWFsZXMgaW4gdGhlIDE4LTMxIHJhbmdlIHNjb3JlZCB0aGUgaGlnaGVzdCBvbiBSZWxpZ2lvc2l0eSBhbmQgSW5zaWdodC4gTWFsZXMgZnJvbSB0aGUgNDEtNjAgcmFuZ2Ugc2NvcmVkIGhpZ2hlc3QgZm9yIHRoZWlyIGdyb3VwLgoKCmBgYHtyfQpnZ3Bsb3QobWFub3ZhLm1vZGVsLCBhZXMoeCA9IEFnZSwgeSA9IEdlbmRlciwgY29sb3IgPSBmYWN0b3IoQWdlLCBsYWJlbHMgPSBjKCIxOC0zMCIsICIzMS00MCIsICI0MS01MCIsICI1MS02MCIsICI2MCsiKSkpKSArIAogIGdlb21fdmlvbGluKCkgKwogIGxhYnMoY29sb3IgPSAiQWdlIikgKwogIGxhYnModGl0bGU9ICJBZ2UgRm9jdXMiKSArCiAgc3RhdF9zbW9vdGgobWV0aG9kID0gImFvdiIsIGNvbCA9ICJyZWQiKQpgYGAKCioqRmlndXJlIDEuNyoqIFJlcHJlc2VudHMgdGhlIEFnZSBwZXJzcGVjdGl2ZSBvZiB0aGUgYWJvdmUgTUFOT1ZBIGFuZCBpbmRpY2F0ZXMgdGhhdCB0aG9zZSBpbiB0aGUgNDEtNTAgcmFuZ2Ugc2NvcmVkIHRoZSBsb3dlc3Qgb24gUmVsaWdpb3NpdHkgYW5kIEluc2lnaHQgd2hpbGUgdGhvc2UgaW4gdGhlIDE4LTMwIHJhbmdlIHNjb3JlZCB0aGUgaGlnaGVzdC4KCmBgYCAgICAgICAgIAogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpc2N1c3Npb24KYGBgCgpUaGUgT3ZlcmFsbCBnb2FsIG9mIHRoaXMgc3R1ZHkgaXMgdG8gc2VlIGlmIHRoZXJlIGlzIGEgcmVsYXRpb25zaGlwIGJldHdlZW4gb25lcyBJbnNpZ2h0IGFuZCBob3cgUmVsaWdpb3VzIHRoZSBwYXJ0aWNpcGFudHMgYXJlLiBJbiB0aGlzIFJlZ2FyZCB0aGVyZSB3YXMgbm8gZXZpZGVuY2UgZm91bmQgdG8gc3VwcG9ydCB0aGF0IGh5cG90aGVzaXMuIFdpdGggdGhlIHNtYWxsIHNhbXBsZSBjb2xsZWN0ZWQgaXQgd2FzIGRpc2NvdmVyZWQgdGhhdCBwYXJ0aWNpcGFudHMgaW4gdGhlIDE4LTMwIGFnZSBncm91cCBzY29yZWQgdGhlIGhpZ2hlc3Qgb24gSW5zaWdodCBhbmQgUmVsaWdpb3NpdHkuIFRoZSA0MS01MCBhbmQgdGhlIGdyb3VwIHRoYXQgc2NvcmVkIHRoZSBsZWFzdCBvbiBJbnNpZ2h0IGFuZCBSZWxpZ2lvc2l0eSB3ZXJlIHRob3NlIGluIHRoZSBhZ2UgZ3JvdXAgb2YgMzEtNDAuIEl0IHdhcyBhbHNvIGZvdW5kIHRoYXQgZmVtYWxlcyBzY29yZWQgaGlnaGVyIG9uIGJvdGggUmVsaWdpb3NpdHkgYW5kIEluc2lnaHQgc2NhbGVzLiBUaGVyZSB3YXMgbm8gc2lnbmlmaWNhbnQgY29ycmVsYXRpb24gZm91bmQgYmV0d2VlbiBBZ2Ugb3IgR2VuZGVyIG9uIFJlbGlnaW9zaXR5IG9yIEluc2lnaHQuIEluIHRoZSBmdXR1cmUgdGhpcyBzdHVkeSBjb3VsZCB5aWVsZCBiZXR0ZXIgcmVzdWx0cyB3aXRoIGEgbGFyZ2VyIHNhbXBsZSBzaXplIGFuZCBhIG1vcmUgZGl2ZXJzZSBkaXN0cmlidXRpb24gYW1vbmcgYWdlLiBJbiB0aGUgZnV0dXJlIHN3aXRjaGluZyB0aGUgcHJpbWFyeSBzY2FsZSBsb29rZWQgYXQgZnJvbSB0aGUgSW5zaWdodCBzY29yZXMgdG8gdGhlIFJlbGlnaW9zaXR5IHNjb3JlcyB3b3VsZCBiZSBiZW5lZmljaWFsIGZvciBhIGJldHRlciBvdmVyYWxsIHBpY3R1cmUuCgpgYGAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmsgQ2l0ZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCmBgYAoKQmVjaywgQS4gVC4sIEJhdXJ1Y2gsIEUuLCBCYWx0ZXIsIEouIE0uLCBTdGVlciwgUi4gQS4sICYgV2FybWFuLCBELiBNLiAoMjAwNCkuIEEgbmV3IGluc3RydW1lbnQgZm9yIG1lYXN1cmluZyBpbnNpZ2h0OiB0aGUgQmVjayBDb2duaXRpdmUgSW5zaWdodCBTY2FsZS4gRWxzZXZpZXIsIDMxOS0zMjkuIEh1YmVyLCBTLiwgJiBIdWJlciwgTy4gVy4gKDIwMTIpLiBUaGUgQ2VudHJhbGl0eSBvZiBSZWxpZ2lvc2l0eSBTY2FsZS4gUmVsaWdpb25zLCA3MTAtNzI0LgoKQW5kZXJzb24sIE0uIEwuICgyMDE2KS4gTW9yYWwgRm91bmRhdGlvbnMgVGhlb3J5OiBBbiBFeHBsb3JhdG9yeSBTdHVkeSBvZiBQb2xpdGljcyBhbmQgCkRlY2lzaW9uLU1ha2luZy4gSm91cm5hbCBvZiBMZWFkZXJzaGlwLCBBY2NvdW50YWJpbGl0eSBhbmQgRXRoaWNzLCAxMygyKSwgNzQtOTIuIAoKQW5kZXMsIFAuICgyMDE5KS4gU2lkZ3dpY2sncyBEdWFsaXNtIG9mIFByYWN0aWNhbCBSZWFzb24sIEV2b2x1dGlvbmFyeSBEZWJ1bmtpbmcsIGFuZCBNb3JhbCAKUHN5Y2hvb2xneS4gQ2FtYnJpZGdlIFVuaXZlcnNpdHkgUHJlc3MsIDMxLCAzNjEtMzc3LiAKCkJhZGVyLCBDLiBGLiAoMjAwOCkuIFVucmF2ZWxpbmcgUmVsaWdpb3VzIFdvcmxkdmlld3M6IFRoZSBSZWxhdGlvbnNoaXAgYmV0d2VlbiBpbWFnZXMgb2YgCkdvZCBhbmQgUG9saXRpY2FsIElkZW9sb2d5IGluIGEgQ3Jvc3MtQ3VsdHVyYWwgQW5hbHlzaXMuIFRoZSBTb2Npb2xvZ2ljYWwgUXVhcnRlcmx5LCAKNDkoNCksIDY4OS03MTguIAoKRHJ1bW1vbmQsIEQuIEMuICgyMDE3KS4gRU1QQVRIWSBBTkQgVEhFIEVWT0xVVElPTiBPRiBDT01QQVNTSU9OOiBGUk9NIApERUVQIEhJU1RPUlkgVE8gSU5GVVNFRCBWSVJUVUUuIEpvaW50IFB1YmxpY2F0aW9uIEJvYXJkIG9mIFp5Z29uLCAyNTgtMjc4LiAKCkV6ZSwgRS4gQy4gKDIwMDkpLiBCZXR3ZWVuIEhpc3RvcnkgYW5kIHRoZSBHb2RzOiBSZWFzb24sIE1vcmFsaXR5LCBhbmQgUG9saXRpY3MgaW4gVG9kYXkncyAKQWZyaWNhLiBJbmRpYW5hIFVuaXZlcnNpdHkgUHJlc3MsIDU1KDIpLCA3Ny05NC4gCgpGcmVkZXJpY2ssIFMuICgyMDA1KS4gQ29nbmF0aXZlIFJlZmxlY3Rpb24gYW5kIERlY2lzaW9uIE1ha2luZy4gSm91bnJhbCBvZiBFY29ub21pYyAKUGVyc3BlY3RpdmVzLCAxOSgxKSwgMjUtNDIuIAoKR3JlZWx5LCBBLiBNLiAoMTk4OCkuIEV2aWRlbmNlIHRoYXQgYSBNYXRlcm5hbCBJbWFnZSBvZiBHb2QgQ29ycmVsYXRlcyB3aXRoIExpYmVyYWwgUG9saXRpY3MuIApTb2Npb2xvZ3kgYW5kIFNvY2lhbCBSZXNlYXJjaCwgNzI6IDE1MC00LiAKCkdyb3NzLCBNLiBMLiAoMTk5NikuIE1vcmFsIFJlYXNvbmluZyBhbmQgSWRlb2dpY2FsIEFmZmlsaWF0aW9uOiBBIGNyb3NzLU5hdGlvbmFsIFN0dWR5LiAKUG9saXRpY2FsIFBzeWNob2xvZ3ksIDE3KDIpLCAzMTctMzM4LiAKCkpvbGRlcnNtYSwgQy4gVy4gKDIwMTEpLiBQcm92aWRlbnRpYWwgRGVpc20sIERpdmluZSBSZWFzb24sIGFuZCBMb2NrZSdzIEVkdWNhdGlvbmFsIFRoZW9yeS4gClRoZSBKb3VybmFsIG9mIEVkdWNhdGlvbmFsIFRob3VnaHQsIDQ1KDIpLCAxMTMuIAoKS3VobiwgVC4gKDE5OTYpLiBUaGUgU3RydWN0dXJlIG9mIFNjaWVudGlmaWMgUmV2b2x1dGlvbnMuIFVuaXZlcnNpdHkgb2YgQ2hpY2FnbyBQcmVzcy4gCgpMb2NrZSwgSi4gWS4gKDE5ODkpLiBTb21lIHRob3VnaHRzIGNvbmNlcm5pbmcgZWR1Y2F0aW9uLiBPeGZvcmQgVW5pdmVyc2l0eSBQcmVzcy4sIDEtMzUyLiAKCkxvZXdlbiwgUC4gQy4gKDIwMTkpLiBFbXBhdGh5IGFuZCBQb2xpdGljYWwgcHJlZmVyZW5jZXMuIFJldHJpZXZlZCBmcm9tIAp3d3cucHJpbmNldG9uLmVkdS9jc2RwL2V2ZW50cy9Mb2V3ZW4wMzE2MjAxNy4gCgpNb3JyaXMsIFMuIEcuICgyMDIwKS4gRW1wYXRoeSBhbmQgdGhlIExpYmVyYWwtQ29uc2VydmF0aXZlIFBvbGl0aWNhbCBEaXZpZGUgaW4gdGhlIFUuUy4gSm91cm5hbCAKb2YgU29jaWFsIGFuZCBQb2xpdGljYWwgUHN5Y2hvbG9neSwgOCgxKSwgMDgtMjQuIAoKUHJlc3RvbiwgTy4gQy4gKDIwMTgpLiBQc3ljaG9wYXRoaWMgdHJhaXRzIGFuZCBwb2xpdGljczogRXhhbWluaW5nIGFmZmlsaWF0aW9uLCBzdXBwb3J0IG9mIHBvbGl0aWNhbCAKaXNzdWVzLCBhbmQgdGhlIHJvbGUgb2YgZW1wYXRoeS4gUGVyc29uYWxpdHkgYW5kIEluZGl2aWR1YWwgRGlmZmVyZW5jZXMsIDE0Mi0xNDguIAoKUHJvZXNjaG9sZC1CZWxsLCBSLiBKLiAoMjAxNCkuIENsb3NlbmVzcyB0byBHb2QgQW1vbmcgVGhvc2UgRG9pbmcgR29kJ3MgV29yazogQSBTcGlyaXR1YWwgCldlbGwtQmVpbmcgTWVhc3VyZSBGb3IgQ2xlcmd5LiBKb3VybmFsIG9mIFJlbGlnaW9uIGFuZCBIZWFsdGgsIDUzKDMpLCA4NzgtODk0LiAKClJpY2hhcmRzb24sIEEuIFcuICgyMDAyKS4gTmFycmF0aW5nIHRoZSBIaXN0b3J5IG9mIFJlYXNvbiBJdHNlbGY6IEZyaWVkbWFuLCBLdWhuLCBhbmQgYSAKQ29uc3RpdHV0aXZlIEEgUHJpb3JpIGZvciB0aGUgVHdlbnR5LUZpcnN0IENlbnR1cnkuIFBlcnNwZWN0aXZlcyBvbiBTY2llbmNlLCAxMCgzKSwgMjUzCjI3NC4gCgpTYSwgVy4gQy4gKDE5OTkpLiBUaGUgRG9tYWluIFNwZWNpZmljaXR5IGFuZCBHZW5lcmFsaXR5IG9mIEJlbGllZiBCaWFzOiBTZWFyY2hpbmcgZm9yIGEgCkdlbmVyYWxpemFibGUgQ3JpdGljYWwgVGhpbmtpbmcgU2tpbGwuIEpvdXJuYWwgb2YgRWR1Y2F0aW9uYWwgUHN5Y2hvbG9neSwgOTEoMyksIDQ5Nwo1MTAuIAoKU2NoZWZmZXIsIE0uIEwuICgyMDIxKS4gVGhlIHJpc2UgYW5kIGZhbGwgb2YgcmF0aW9uYWxpdHkgaW4gbGFuZ3VhZ2UuIFByb2NlZWRpbmdzIG9mIHRoZSBOYXRpb25hbCAKQWNhZGVteSBvZiBTY2llbmNlcyBvZiB0aGUgVW5pdGVkIFN0YXRlcyBvZiBBbWVyaWNhLCAxMTgoNTEpLiAKClNwcmVuZywgTi4gUi4gKDIwMDkpLiBUaGUgVG9yb250byBFbXBhdGh5IFF1ZXN0aW9uYWlyZTogU2NhbGUgZGV2ZWxvcG1lbnQgYW5kIGluaXRpYWwgCnZhbGlkYXRpb24gb2YgYSBmYWN0b3ItYW5hbHl0aWMgc29sdXRpb24gdG8gbXVsdGlwbGUgZW1wYXRoeSBtZWFzdXJlcy4gSm91cm5hbCBvZiAKcGVyc29uYWxpdHkgQXNzZXNzbWVudCwgOTEoMSkgNjItNzEuIAoKWmhhbmcsIFEuIFouICgyMDE3KS4gQW4gQW5hbHl0aWNhbCBPdmVydmlldyBvZiBLb2hsYmVyZydzIFRoZW9yeSBvZiBNb3JhbCBEZXZlbG9wbWVudCBpbiAKQ29sbGVnZSBNb3JhbCBFZHVjYXRpb24gaW4gTWFpbmxhbmQgQ2hpbmEuIE9wZW4gSm91cm5hbCBvZiBTb2NpYWwgU2NpZW5jZXMsIDE1MS0xNjAuIAoK