Last Updated: 07/02/2025

1 Course Title

PSY 3330 – Childhood Psychopathology (Fall 2025)

2 Course Meeting Time and Place

Monday, Wednesday, & Friday 10:30–11:20 a.m., 158 Van Allen (VAN)

3 Course Website

https://icon.uiowa.edu

To access the course site, log into Iowa Courses Online (ICON) using your Hawk ID and password.

4 Course Home

The University of Iowa
The College of Liberal Arts and Sciences
Department of Psychological and Brain Sciences

The College of Liberal Arts and Sciences (CLAS) is the home of this course, and CLAS governs the add and drop deadlines, academic misconduct policies, and other policies and procedures. Other UI colleges may have different policies.

5 Instructor Contact Information

Professor Petersen
Office: 175 Psychological and Brain Sciences Building (PBSB)
E-mail: isaac-t-petersen@uiowa.edu
Office Phone: 467-1014
Student drop-in hours: Monday 11:20–12:20 & Wednesday 2–4
Note: I’m here to help you learn and succeed. Please come to my office hours to ask questions about course material, assignments, exams, or professional development (career-related issues), for instance. I welcome you to discuss any concerns you might have about the class. I am also available to meet with you by appointment, although I would appreciate your making every effort to see me during office hours. The best way to reach me outside of class is by email.

6 Graduate Teaching Assistant

The class has one graduate teaching assistant (TA).

Ariel Kim
Office: 255H Psychological and Brain Sciences Building (PBSB)—ring the bell at 255W, and she will let you in
Student drop-in hours: Wednesday 11:20–12:20 & Friday 1:10–2:10
E-mail:

7 Departmental Resources

Department of Psychological and Brain Sciences: https://psychology.uiowa.edu
Department of Psychological and Brain Sciences Main Office: G60 Psychological and Brain Sciences Building (335-2406)
Coordinator of Undergraduate Studies: Professor Windschitl (paul-windschitl@uiowa.edu; 335-3681)
Academic Coordinator: Janeil Page-Jamison (janeil-page@uiowa.edu; 384-3657)
Departmental Executive Officer (DEO)/Department Chair: Professor Blumberg (mark-blumberg@uiowa.edu; 335-2424)

8 Prerequisites

The Department of Psychological and Brain Sciences has a hierarchical course structure that requires students to complete certain prerequisite courses before taking upper-level courses. This course requires successful completion (C- or higher) of Elementary Psychology, Introduction to Clinical Psychology, and Research Methods in Psychology. The department will check student records to ensure completion of course prerequisites.

9 Description of Course

This course satisfies the upper-level elective requirement for Psychological and Brain Sciences majors. Additionally, students with broad interests in health and development will find this course useful. The goal of this course is to provide students with a comprehensive introduction to child and adolescent psychopathology. This includes an emphasis on the developmental psychopathology framework and involves thinking critically about the causes, consequences, ongoing questions, and preventative challenges of child psychopathology facing scientists, youth and their families, clinicians, and society. We apply elements of the developmental psychopathology model to a range of childhood disorders. Within each syndrome, possible genetic, neurobiological, psychological, familial, and socio-cultural causal factors will be scrutinized. We will also review and discuss risk and resilience factors for child psychopathology (individual, family, community) as well as models of treatment and prevention. You are urged to reconsider your decision to take this class if you are reluctant to examine these topics in a scientific manner.

10 Learning Outcomes

At the end of this course, you will be able to:

  • Identify the symptoms and course of psychological disorders in childhood.
  • Distinguish the various risk factors that contribute to psychopathology in childhood.
  • Identify factors that may protect against the development of psychopathology and promote resilience.
  • Describe different methods for treatment and prevention of psychological disorders in childhood.
  • Critique, analyze, and synthesize original source articles in developmental psychopathology.
  • Produce an APA-style literature review that integrates empirical findings in developmental psychopathology.

11 Required Materials

11.1 Textbook

To provide you with a textbook for as low cost as possible, you will be provided an eText of the following book via ICON Direct, unless you opt out:

Mash, E. J., Wolfe, D. A., & Williams, K. N. (2023). Childhood psychopathology (8th Ed.). Cengage.

Your U-Bill will be charged automatically after your course has started, unless you opt out prior to the last day for tuition and fee reduction course deadline. For frequently asked questions about ICON Direct, including how to access the eText, see here. However, if you want to purchase a hardcopy of the textbook (for a higher cost) you may opt out of the eText via ICON Direct. For instructions how to opt out of ICON Direct, see here. However, if you opt out, please note:

  • You risk falling behind in the course if you have not acquired alternate versions of the same materials prior to the first day of the class.
  • Instructors are not responsible for providing you with alternative materials or waiving course/class requirements.

11.2 Articles

NOTE: UPDATE ICON WITH MCARTHUR ARTICLE (TO REPLACE CHRISTAKIS ARTICLE FOR LIT CRITIQUE)

In addition to the textbook, additional required readings for selected topics will include the following articles. PDFs of these articles can be found on ICON.

  1. Shea, S. E., Gordon, K., Hawkins, A., Kawchuk, J., & Smith, D. (2000). Pathology in the hundred acre wood: A neurodevelopmental perspective on A.A. Milne. Canadian Medical Association Journal, 163(12), 1557–1559. https://www.cmaj.ca/content/cmaj/163/12/1557.full.pdf (Just for fun! 😊)
  2. Ra, C. K., Cho, J., Stone, M. D., De La Cerda, J., Goldenson, N. I., Moroney, E., Tung, I., Lee, S. S., & Leventhal, A. M. (2018). Association of digital media use with subsequent symptoms of attention-deficit/hyperactivity disorder among adolescents. JAMA, 320(3), 255–263. https://doi.org/10.1001/jama.2018.8931
  3. McArthur, B. A., Tough, S., & Madigan, S. (2022). Screen time and developmental and behavioral outcomes for preschool children. Pediatric Research, 91(6), 1616–1621. https://doi.org/10.1038/s41390-021-01572-w
  4. Thapar, A., Rice, F., Hay, D., Boivin, J., Langley, K., van den Bree, M., Rutter, M., & Harold, G. (2009). Prenatal smoking might not cause attention-deficit/hyperactivity disorder: Evidence from a novel design. Biological Psychiatry, 66(8), 722–727. https://doi.org/10.1016/j.biopsych.2009.05.032
  5. Ozonoff, S., Iosif, A.-M., Baguio, F., Cook, I. C., Hill, M. M., Hutman, T., Rogers, S. J., Rozga, A., Sangha, S., Sigman, M., Steinfeld, M. B., & Young, G. S. (2010). A prospective study of the emergence of early behavioral signs of autism. Journal of the American Academy of Child & Adolescent Psychiatry, 49(3), 256–266.e252. https://doi.org/10.1016/j.jaac.2009.11.009
  6. Frick, P. J. (2012). Developmental pathways to conduct disorder: Implications for future directions in research, assessment, and treatment. Journal of Clinical Child & Adolescent Psychology, 41(3), 378–389. https://doi.org/10.1080/15374416.2012.664815
  7. How to Write a Literature Review.
  8. Kendall, P. C., Settipani, C. A., & Cummings, C. M. (2012). No need to worry: The promising future of child anxiety research. Journal of Clinical Child & Adolescent Psychology, 41(1), 103–115. https://doi.org/10.1080/15374416.2012.632352
  9. Stringaris, A., Vidal-Ribas, P., Brotman, M. A., & Leibenluft, E. (2018). Practitioner Review: Definition, recognition, and treatment challenges of irritability in young people. Journal of Child Psychology and Psychiatry, 59(7), 721–739. https://doi.org/10.1111/jcpp.12823
  10. Stice, E., South, K., & Shaw, H. (2012). Future directions in etiologic, prevention, and treatment research for eating disorders. Journal of Clinical Child & Adolescent Psychology, 41(6), 845–855. https://doi.org/10.1080/15374416.2012.728156
  11. Young, R., Sproeber, N., Groschwitz, R. C., Preiss, M., & Plener, P. L. (2014). Why alternative teenagers self-harm: Exploring the link between non-suicidal self-injury, attempted suicide and adolescent identity. BMC Psychiatry, 14(1), 137. https://doi.org/10.1186/1471-244X-14-137
  12. Colvert, E., Rutter, M., Kreppner, J., Beckett, C., Castle, J., Groothues, C., Hawkins, A., Stevens, S., & Sonuga-Barke, E. J. S. (2008). Do theory of mind and executive function deficits underlie the adverse outcomes associated with profound early deprivation?: Findings from the English and Romanian adoptees study. Journal of Abnormal Child Psychology, 36(7), 1057–1068. https://doi.org/10.1007/s10802-008-9232-x
  13. Nelson, C. A., III, Zeanah, C. H., Fox, N. A., Marshall, P. J., Smyke, A. T., & Guthrie, D. (2007). Cognitive recovery in socially deprived young children: The Bucharest Early Intervention Project. Science, 318(5858), 1937–1940. https://doi.org/10.1126/science.1143921
  14. Davis, E. P., Glynn, L. M., Schetter, C. D., Hobel, C., Chicz-Demet, A., & Sandman, C. A. (2007). Prenatal exposure to maternal depression and cortisol influences infant temperament. Journal of the American Academy of Child & Adolescent Psychiatry, 46(6), 737–746. https://doi.org/10.1097/chi.0b013e318047b775
  15. Burke, J. D., Pardini, D. A., & Loeber, R. (2008). Reciprocal relationships between parenting behavior and disruptive psychopathology from childhood through adolescence. Journal of Abnormal Child Psychology, 36(5), 679–692. https://doi.org/10.1007/s10802-008-9219-7
  16. Cummings, E. M., Goeke-Morey, M. C., & Papp, L. M. (2004). Everyday marital conflict and child aggression. Journal of Abnormal Child Psychology, 32(2), 191–202. https://doi.org/10.1023/B:JACP.0000019770.13216.be
  17. McDonough, M. H., Jose, P. E., & Stuart, J. (2016). Bi-directional effects of peer relationships and adolescent substance use: A longitudinal study. Journal of Youth and Adolescence, 45(8), 1652–1663. https://doi.org/10.1007/s10964-015-0355-4
  18. Bonanno, R. A., & Hymel, S. (2013). Cyber bullying and internalizing difficulties: Above and beyond the impact of traditional forms of bullying. Journal of Youth and Adolescence, 42(5), 685–697. https://doi.org/10.1007/s10964-013-9937-1
  19. Chung, H. L., & Steinberg, L. (2006). Relations between neighborhood factors, parenting behaviors, peer deviance, and delinquency among serious juvenile offenders. Developmental Psychology, 42(2), 319–331. https://doi.org/10.1037/0012-1649.42.2.319
  20. Collishaw, S., Pickles, A., Messer, J., Rutter, M., Shearer, C., & Maughan, B. (2007). Resilience to adult psychopathology following childhood maltreatment: Evidence from a community sample. Child Abuse & Neglect, 31(3), 211–229. https://doi.org/10.1016/j.chiabu.2007.02.004
  21. Conduct Problems Prevention Research Group. (2011). The effects of the fast track preventive intervention on the development of conduct disorder across childhood. Child Development, 82(1), 331–345. https://doi.org/10.1111/j.1467-8624.2010.01558.x

12 Academic Honesty and Misconduct

All students in CLAS courses are expected to abide by the college’s standards of academic honesty. Academic misconduct must be reported by instructors to CLAS according to these procedures. Please note that collaboration with other classmates on quizzes and during exams is not permitted. However, I do encourage you to collaborate with classmates to prepare for exams (e.g., informal study groups). In addition, you are expected to follow the course’s policy on the use of artificial intelligence (AI), which is outlined below.

13 Artificial Intelligence (AI) Policy

Because writing, analytical, and critical thinking skills are part of the learning outcomes of this course, all work submitted by students should be prepared by the student. You are training these cognitive muscles; if you go to the gym, you would not have AI lift the weights for you. For these reasons, AI-generated submissions are not permitted and will be treated as plagiarism. Learning these core foundational skills will make you a better user of AI in the future, because you will be better-positioned in the future to critically evaluate AI responses and to identify when (and the ways in which) its responses are inaccurate. Moreover, in many industries, use of AI is not permitted because you cannot share the company’s proprietary information. Thus, developing strong competencies in these domains (without the use of AI) will prepare you for a competitive workplace.

14 Course Requirements and Policies

14.1 Lecture

We will meet three times weekly for lectures, at the time and location described above. My powerpoint presentations for the lectures will be posted on ICON no later than noon on the day before the lecture (though I may continue to refine the slides up until the time of lecture). Please note: powerpoint presentations are an outline of my points. It is your responsibility to take notes during class. If you have questions about the lecture notes or need clarification of any of the points, please ask in class or meet with the TA or Professor Petersen during office hours. If you miss class and/or need help catching up on the notes, please make an appointment with the TA.

14.2 Attendance and Participation

Attendance at lectures is required and will be checked and factored into final grades (see grading section below). There are 43 lectures during the semester (excluding examinations). You will receive one point for attendance at each lecture up to 40 points (i.e., you will not receive extra credit for attending all 43 lectures). Thus, you will not be penalized for missing up to 3 lectures. However, you will be responsible for learning any material missed for quizzes and exams, and I strongly encourage you to attend all lectures. Poor lecture attendance is likely to affect the quality of students’ work and success in the course.

Students who miss more than 3 lectures due to participation in University activities must give the instructor a statement before the absence signed by a responsible official that specifies the dates and times the student will miss class. Authorized activities include participation in athletic teams, the marching band or pep band, debate teams, and other recognized University groups, as well as participation in University field trips, service with the National Guard, and jury duty. Absences due to illnesses or emergencies (that go over 3 lectures) must be documented with the University of Iowa Absence Explanation Form and sent to the TA within 48 hours of the absence. Per university policy, if a student will be absent 5 or more consecutive days and the absence is due to illness or other emergency, please contact the Registrar Service Center at (319) 384-4300 or .

14.3 Readings

Readings from your text are assigned by lecture topic. You should read and take notes on the material before class. Past experience has shown that to do well in this class you should read the assigned material, attend lectures and take notes, and review your notes each week. There is too much material being covered in this class to try to study only by frantic preparation immediately before quizzes and exams.

14.4 Workload

This is a 3 semester hour course. Students should therefore expect to spend 6 additional hours per week (outside of class) reading the textbook and articles, reviewing lecture material, preparing for quizzes and exams, and completing writing assignments.

14.5 Quizzes

Six quizzes will be administered via the ICON website. Students are allowed to use their textbook and lecture notes on the quizzes. However, students may not work together on the quizzes. Questions will be randomized and presented such that students must answer one question at a time (i.e., students may not go back to a previous question in the quiz). Quizzes will consist of approximately 20–30 multiple choice or very short answer questions. Although students may take the quiz at any time when it is available, students must complete the quiz within 2 hours. We will not accept late responses or multiple submissions. Your lowest quiz score will be dropped. We will not accept excused absences for quizzes because (a) you have a week to complete the quiz (and can submit it at any point during that week), and (b) we drop your lowest quiz score. Each quiz will be weighted the same in the final grade.

Although students will have access to their course materials during the quiz, reading and advanced preparation will be necessary to do well on the quizzes. Material for quiz questions will be taken from required readings (texts and articles) as well as from lecture material. Quiz due dates and topics will be announced in class and via email and are listed below. All quizzes should be submitted to ICON by 11:59 p.m. on the due date.

Quiz # Dates Available Topics Covered
1 9/4 – 9/11 History/D&P Model, Theories & Causes, Research with Children
2 9/22 – 9/29 ADHD, ASD, Intellectual Disability, Specific Learning Disorder
3 10/20 – 10/27 CD, Anxiety, Depression, Bipolar, DMDD
4 11/1 – 11/8 Elimination, Eating, Substance-Related Disorders, Self-Injury
5 11/15 – 11/29 Maltreatment and Resilience
6 12/1 – 12/8 Levels of Analysis Articles, Prevention

14.6 Examinations

There will be 2 exams; one mid-term exam and one non-cumulative final exam. Exam 1 will be administered during class time. The date, time, and location of the final exam will be announced by the 5th week of class by the College of Liberal Arts and Sciences; the duration of the final exam will be 120 minutes. Each exam will emphasize information presented for the half of the class that precedes it. However, some integration of information across sections will be required for questions on the final exam. Exams will consist of short-answer and multiple choice questions based upon both readings (texts and articles) and the lecture material. Exam dates are listed below.

Exam 1 (Mid-Term Exam): Wednesday, October 4, 2025 during class
Exam 2 (Final Exam): TBD during finals week (the date, time, and location will be announced by the 5th week of class by the College of Liberal Arts and Sciences)

14.6.1 Missing Exams

University regulations require that students be allowed to make up examinations that have been missed due to illness, religious holy days, military service obligations (including service-related medical appointments), or other unavoidable circumstances or University-sponsored activities. Students with UI-authorized activities must discuss their absences with the instructor as soon as possible. Religious obligations must be communicated within the first three weeks of classes. See below for the documentation necessary for an absence to be excused and to be eligible to take a make-up exam.

Students are allowed to make up exams that have been missed due to illness, mandatory religious observations, official University activities, or other unavoidable circumstances. Note: the format of the make-up exam may differ from the original exam. If you know that you must be away at the time of an exam for one of these reasons, Professor Petersen or the TA must be contacted in advance whenever possible to schedule a make-up exam. In order to take a make-up exam, you must provide acceptable documentation to be eligible to take it: including documentation for any report of illness; any other circumstances must be documented by the University of Iowa Absence Explanation Form (located in ICON under “Student Tools”) and must be approved by Professor Petersen. In sum, to be eligible for a make-up exam, Professor Petersen or the TA must be contacted before the examination whenever possible, and you must send acceptable form of documentation to Professor Petersen or the TA.

14.7 Literature Critiques

You will be required to complete two literature critique assignments. These assignments are designed to help you learn to critically analyze original source articles in written form. Both assignments involve providing a critique of a research article (Ra et al., 2018 – Article #2, and McArthur et al., 2022 – Article #3). Both papers should be 2–3 pages long (double-spaced, APA format, 12-point Times New Roman font) and will be turned in via ICON. Each should be in essay form and carefully proofread for spelling and grammatical errors. Students may not work together on the critiques. More information on how to structure the critiques will be provided in class. Note: Turnitin will be used via ICON to check for plagiarism of a fellow student and from the internet. The critiques are due on Monday, August 28 and Friday, September 8 by 11:59 p.m.

14.8 Literature Review

You will be required to write a literature review on a topic related to child psychopathology. The topic of the paper is completely up to the student; the only requirement is that it must be relevant to psychopathology in children or adolescents. The paper must include a review and analysis of at least 5 empirical articles on the topic, published since 2000. You are encouraged to work with the UI Writing Center in revising your paper.

14.8.1 Format

The paper should have five sections:

  1. Cover Letter, described here
  2. Title Page
  3. Abstract
  4. Main body
  5. References

The main body of the paper should be 10–12 pages, excluding the cover letter, title page, abstract, and references. The text should be double-spaced, in APA format, and in 12-point Times New Roman font. For sample papers in APA format, see here.

14.8.2 Stages

14.8.2.1 Overview

This paper will be completed in 6 stages, all uploaded to ICON:

  1. Generate a topic
  2. Identify articles
  3. Understand findings from articles
  4. Write a complete draft
  5. Give and receive feedback
  6. Incorporate feedback and polish writing

The goals of this project are for each student to produce a thoughtful paper that describes an aspect of this course that captured their interest and to gain more experience with scientific writing. Each stage of the process will be discussed in class, so attendance is critical. Additionally, grading rubrics for each stage will be posted so that students understand the basis for evaluation of each stage of the assignment. Successful completion of this assignment requires students to adhere closely to the deadlines outlined. For this reason, substantial penalties will be applied to all late work (20% off final grade for each day the assignment is late). Further, to make sure the peer review process for first drafts is successful, any first drafts submitted after the deadline of Friday, November 3 will receive a zero and will not receive a peer review (the student will still receive instructor feedback). If you have concerns about meeting one of the literature review deadlines, please contact Professor Petesen or the TA as soon as possible to discuss. All assignments should be uploaded to ICON by 11:59 p.m. on the due date.

The stages—and deadlines—are described below:

14.8.2.2 Deadlines

The workflow of the literature review stages, their respective percentages in the total literature review grade, and relevant due dates are listed below.

Stage Assignment Description Percent Due Date
1 Develop a topic description (2 sentences) and 3–5 keywords you will then use to conduct a literature search using Google Scholar, PsycINFO, and/or PubMed. 2.5% 9/15
2 Identify and generate a list of 5 empirical articles that you will include in your review based on your searches of Google Scholar, PsycINFO, and/or PubMed. 2.5% 9/25
3 Write brief summaries of each of the 5 empirical articles that includes clear descriptions of both the methodology and relevant findings. 10% 10/16
4 Compose a complete first draft of the review that includes an introduction with thesis, description, critique, and integration of the 5 empirical studies. 25% 11/3
5a Peer reviews are assigned. 11/6
5b Give feedback by providing anonymous peer review of another student’s paper. 10% 11/27
5c Receive feedback from peer and from instructor. 11/29
6 Incorporate feedback and produce a final document. 50% 12/8

14.8.2.3 Stage 1: Generate a Topic

You will first develop a topic and a set of keywords for your paper. For the review format, this involves generating a specific topic and keywords you will then use to conduct a literature search using Google Scholar, PsycINFO, and/or PubMed. We will discuss strategies for generating topics and keywords in class, and examples will be provided. By the deadline, you will turn in a summary of your research topic (1–2 sentences) and a list of keywords that will start your literature search.

14.8.2.4 Stage 2: Identify Articles

After your topic has been approved, you will then conduct a search to identify the articles for your paper. You will search PsychINFO or PubMed and identify a minimum of five empirical articles that are all relevant to your topic. As we will discuss in class, it is important to define your topic carefully so that all of your identified articles are addressing common components. By the deadline, you will turn in your list of articles.

14.8.2.5 Stage 3: Understand Findings from Articles

Once you have identified the five papers you wish to write about, you will then produce brief summaries of each article that include a description of the methods employed by the researchers and their basic findings (2–4 paragraphs per article for each of your five articles). You will also include your reference list, in APA style. By the deadline, you will turn in your article summaries.

14.8.2.6 Stage 4: Write a Complete Draft

Next, you will write and turn in a complete draft of your paper. The systematic review should include both description of the empirical studies you’ve included as well as analysis, critique, and integration of findings. For this stage, you will also generate a thesis that describes the overall message of your review and you will work to demonstrate how each article is (or is not) supportive of your thesis. The goal of this stage is to develop your ideas and argument so that you can receive feedback. By the deadline, you will turn in your first draft of the paper. Note: you must turn in a complete draft of your paper—not an outline.

14.8.2.7 Stage 5: Give and Receiving Feedback

Following submission of your first draft, all students will receive detailed feedback from the instructor, which will include critique of content, organization, and argument. Additionally each student will complete an anonymous peer review of a fellow student’s paper (your draft will also be peer reviewed). Peer reviews will be blinded and only I (the instructor) will know which papers belong to which students. Reviews will be assigned in class. More details about providing an appropriate review and the formatting will be provided in class. By the deadline, you will turn in your review of the peer’s paper. The instructor will then re-distribute the peer reviews to authors.

14.8.2.8 Stage 6: Incorporating Feedback and Polishing Writing

You will receive comments from the instructor and from your peer reviewer via email. You will then use these comments to revise your paper. Your final paper must include a cover letter that details the changes you made to your draft based on feedback from the instructor as well as from your peer reviewer. Additionally, students are encouraged to meet with the TA during the week of November 27 to review their feedback and discuss plans for revision. By the deadline, you will submit the literature review. The literature review should include the manuscript itself as well as a cover letter describing the changes made in response to comments from the instructor and the peer reviewer.

15 Grading System and the Use of +/-

Final grades will be assigned at the end of the semester on the basis of your total percentage of points earned on quizzes, examinations, written assignments, and lecture attendance, as detailed below. Grades will be assigned on an absolute scale (criterion-referenced grading; see below); course grades will not be curved. No extra-credit opportunities are available for this course. Please note: As a matter of fairness to all students, I assign grades based on performance and do not negotiate grades. Additionally, a penalty of 20% per day will be applied to all assignments turned in late. Final grades will be assigned based on the following ranges:

Grade Percent
A+ 97–100%
A 93–96
A− 90–92
B+ 87–89
B 83–86
B− 80–82
C+ 77–79
C 73–76
C− 70–72
D+ 67–69
D 63–66
D− 60–62
F 0–59

I round up from .5 when determining final grades. For example, a course percent of 79.50 would receive a B−, whereas a course percent of 79.49 would receive a C+.

16 Course Grades

Final course grades will be assessed based on your performance in the activities below. The relative contribution of each component to your final grade is as follows:

17 Tentative Course Outline (exam dates fixed)

Date Topic Reading Assignment Due
8/21 History of Child Psychopathology MWW Ch. 1
8/23 Developmental Psychopathology MWW Ch. 1; Article 1
8/25 Theories & Causes MWW Ch. 2; Article 2
8/28 Theories & Causes MWW Ch. 2 Critique 1 Due (Article 2)
8/30 Research with Children MWW Ch. 3; Article 3
9/1 Conducting a Literature Search
9/4 No Class – Labor Day Quiz 1 Opens
9/6 DSM Assessment & Diagnosis MWW Ch. 4
9/8 Attention-Deficit Hyperactivity Disorder MWW Ch. 8 Critique 2 Due (Article 3)
9/11 Attention-Deficit Hyperactivity Disorder MWW Ch. 8 Quiz 1 Closes
9/13 Attention-Deficit Hyperactivity Disorder MWW Ch. 8; Article 4
9/15 Autism Spectrum Disorders MWW Ch. 6 Topic and Keywords Due
9/18 Autism Spectrum Disorders MWW Ch. 6
9/20 Autism Spectrum Disorders/Writing Article Summaries MWW Ch. 6; Article 5
9/22 Research Day – Work on Paper Quiz 2 Opens
9/25 Intellectual Disability MWW Ch. 5 List of Articles Due
9/27 Intellectual Disability/Learning Disorders MWW Ch. 5
9/29 Learning Disorders MWW Section 7.4 (“Specific Learning Disorder”) through the end of the chapter Quiz 2 Closes
10/2 Catch-Up and Exam Review
10/4 MIDTERM EXAM IN CLASS
10/6 Conduct Problems MWW Ch. 9
10/9 Conduct Problems MWW Ch. 9; Article 6
10/11 Writing a Literature Review Article 7
10/13 Anxiety Disorders MWW Ch. 11
10/16 Anxiety Disorders MWW Ch. 11 Article Summaries Due
10/18 Anxiety Disorders MWW Ch. 11; Article 8
10/20 Depression MWW Ch. 10 Quiz 3 Opens
10/23 Depression MWW Ch. 10
10/25 Bipolar Disorder/DMDD MWW Ch. 10; Article 9
10/27 Elimination/Feeding Disorders MWW Section 13.3: (“Elimination Disorders”, “Enuresis”, and “Encopresis”); MWW Ch. 14 Quiz 3 Closes
10/30 Eating Disorders MWW Ch. 14
11/1 Eating Disorders Article 10 Quiz 4 Opens
11/3 Substance Use and Risk-Taking MWW Section 13.5 (“Adolescent Substance-Use Disorders”) through the end of the chapter 1st Draft Due
11/6 Suicide and Self-Injury Article 11 Peer Reviews Assigned
11/8 Child Maltreatment & Trauma MWW Ch. 12 Quiz 4 Closes
11/10 Child Maltreatment & Trauma MWW Ch. 12
11/13 Child Maltreatment & Trauma Articles 12 & 13
11/15 Individual Differences Article 14 Quiz 5 Opens
11/17 Parenting Article 15
11/20–11/24 FALL BREAK – NO CLASSES
11/27 Divorce and Marital Conflict Article 16 Peer Review Due
11/29 Peer Relationships & Bullying Articles 17 & 18 Quiz 5 Closes; Receive Reviews
12/1 Neighborhood Factors Article 19 Quiz 6 Opens
12/4 Resilience Article 20
12/6 Prevention Science Article 21
12/8 Catch-Up/Final Exam Review in Class Quiz 6 Closes; Final Paper Due
12/8 FINAL PAPER DUE
FINAL EXAM TBD (Week of 12/11–12/15)

18 Date and Time of the Final Exam

The final examination date and time will be announced by the Registrar generally by the fifth week of classes, and it will be announced on the course ICON site once it is known. Do not plan your end of the semester travel plans until the final exam schedule is made public. It is your responsibility to know the date, time, and place of the final exam. According to the Registrar’s final exam policy, students have a maximum of two weeks after the announced final exam schedule to request a change if an exam conflict exists or if a student has more than two exams scheduled for the same day (see the policy here).

19 Course Resources

There are many course resources available to help you succeed in the class, including:

  • the textbook and readings
  • lectures and slides
  • getting and reviewing missed notes from a peer
  • TA office hours
  • instructor office hours
  • peer study groups
  • the UI Writing Center
  • Tutor Iowa: https://tutor.uiowa.edu

20 Drop Deadline for this Course

You may drop an individual course before the drop deadline; after this deadline you will need collegiate approval. You can look up the drop deadline for this course here. When you drop a course, a “W” will appear on your transcript. The mark of “W” is a neutral mark that does not affect your GPA. To discuss how dropping (or staying in) a course might affect your academic goals, please contact your Academic Advisor. Directions for adding or dropping a course and other registration changes can be found on the Registrar’s website. Students can find policies on dropping CLAS courses here.

21 Feedback about the Course

I welcome feedback at any point during the class. If you have comments on the class or my teaching, please feel free to meet with me during office hours.

21.1 Student Complaints

Students with a complaint about a grade or a related matter should first discuss the situation with the instructor, and finally with the DEO (Chair) of the department, school, or program offering the course. Sometimes students will be referred to the department or program’s Director of Undergraduate Studies (DUS) or Director of Graduate Studies (DGS). Students should contact CLAS Undergraduate Programs for support when the matter is not resolved at the previous level.

22 Communication: UI Email

Students are responsible for all official correspondences sent to their UI email address (uiowa.edu) and must use this address for any communication with instructors or staff in the UI community. For the privacy and the protection of student records, UI faculty and staff can only correspond with UI email addresses.

22.1 Other Expectations of Student Performance

Students have the right to a distraction-free learning environment. You have the responsibility to help create such a classroom environment. Please treat other students in the class, the TA, and the instructor with respect. Students are expected to help each other learn and to contribute overall to the learning environment of the course. Arriving prepared for class is part of this expectation.

23 University Policies

University Policies

Accommodations for Students with Disabilities
The University is committed to providing an educational experience that is accessible to all students. If a student has a diagnosed disability or other disabling condition that may impact the student’s ability to complete the course requirements as stated in the syllabus, the student may seek accommodations through Student Disability Services (SDS). SDS is responsible for making Letters of Accommodation (LOA) available to the student. The student must provide a LOA to the instructor as early in the semester as possible, but requests not made at least two weeks prior to the scheduled activity for which an accommodation is sought may not be accommodated. The LOA will specify what reasonable course accommodations the student is eligible for and those the instructor should provide. Additional information can be found on the SDS website.

Class Recordings
Students may be enrolled in a class where some sessions will be recorded or live-streamed. Such recordings/streaming will only be available to students registered for the class. These recordings are the intellectual property of the instructor and they may not be shared or reproduced without the explicit, written consent of the instructor. Further, students may not share these sessions with those not in the class or upload them to any other online environment. Doing so would be a breach of the Code of Student Conduct, and, in some cases, a violation of state and federal law, including the Federal Education Rights and Privacy Act (FERPA).

The unauthorized video or audio recording of academic activities (e.g., lectures, course discussions, office hours, etc.) by a student is prohibited. Students with a reasonable accommodation for recording approved by Student Disability Services should notify each instructor and provide the Letter of Accommodation prior to using the accommodation. A student may record classroom activities with prior written permission from the instructor and notice to other students in the class that audio or video recording may occur. Any and all classroom recording must be for personal academic use only. The distribution, sharing, sale, or posting of recordings on the internet (including social media), in whole or in part, is prohibited and doing so may be a violation of the Code of Student Life and/or state or federal privacy, copyright, or other laws.

24 Where to Get Academic Support for This Course

25 Mental Health Resources and Student Support

Students are encouraged to be mindful of their mental health and seek help as a preventive measure or if feeling overwhelmed and/or struggling to meet course expectations. Students are encouraged to talk to their instructor for assistance with specific class-related concerns. For additional support and counseling, students are encouraged to contact University Counseling Service (UCS). Information about UCS, including resources and how to schedule an appointment, can be found at counseling.uiowa.edu. Find out more about UI mental health services at: mentalhealth.uiowa.edu, including the 24-7 UI Support and Crisis Line.

Additionally, the Office of the Dean of Students can help students navigate personal crisis situations. They can provide one-on-one support, help with identifying options, and access to basic needs resources (such as food, rent, childcare, etc.). Student Care and Assistance: 132 IMU, dos-assistance@uiowa.edu, or 319-335-1162 and more info: dos.uiowa.edu/assistance

If you feel that you or someone you know may be struggling with an academic, emotional, or psychological problem, the following organizations are available for assistance:

Service Contact Info
University of Iowa Academic Advising Center 353-5700, https://advisingcenter.uiowa.edu
University Counseling Services 335-7294, https://www.uiowa.edu/ucs
Student Health Service - Mental Health 335-8394, https://studenthealth.uiowa.edu/services/psychiatry
University of Iowa Hospitals and Clinics Adult Psychiatry Services Clinic 353-6314, https://www.uihealthcare.org/Psychiatry
Seashore Clinic (in the UI Department of Psychological and Brain Sciences) 335-2467, https://psychology.uiowa.edu/resources/seashore-clinic
Women’s Resource and Action Center 335-1486, https://wrac.uiowa.edu
Rape Victim Advocacy Program 319-335-6000 or 800-228-1625, https://www.uiowa.edu/~rvap
Office of Sexual Misconduct 319-335-6200, https://osmrc.uiowa.edu
CommUnity 855-325-4296, https://builtbycommunity.org/crisis
Community & Family Resources 351-4357, https://www.cfrhelps.org/

If you or someone you know is contemplating suicide, either call or text the Suicide and Crisis Lifeline at 988, or call 911.

26 Disclaimer

This syllabus is subject to change. Any changes will be discussed in class, via email, and/or on ICON.

LS0tCnRpdGxlOiAiQ291cnNlIFN5bGxhYnVzIgotLS0KCmBgYHtyIHNldHVwLCBpbmNsdWRlID0gRkFMU0V9CmtuaXRyOjpvcHRzX2NodW5rJHNldCgKICBlY2hvID0gVFJVRSwKICBlcnJvciA9IFRSVUUsCiAgY29tbWVudCA9ICIiKQpgYGAKCkxhc3QgVXBkYXRlZDogYHIgZm9ybWF0KFN5cy5EYXRlKCksICIlbS8lZC8lWSIpYAoKIyBDb3Vyc2UgVGl0bGUgeyN0aXRsZX0KClBTWSAzMzMwIOKAkyBDaGlsZGhvb2QgUHN5Y2hvcGF0aG9sb2d5IChGYWxsIDIwMjUpCgojIENvdXJzZSBNZWV0aW5nIFRpbWUgYW5kIFBsYWNlIHsjbGVjdHVyZVRpbWV9CgpNb25kYXksIFdlZG5lc2RheSwgJiBGcmlkYXkgMTA6MzDigJMxMToyMCBhLm0uLCAxNTggVmFuIEFsbGVuIChWQU4pCgojIENvdXJzZSBXZWJzaXRlIHsjd2Vic2l0ZX0KCmh0dHBzOi8vaWNvbi51aW93YS5lZHUKClRvIGFjY2VzcyB0aGUgY291cnNlIHNpdGUsIGxvZyBpbnRvIFtJb3dhIENvdXJzZXMgT25saW5lIChJQ09OKV0oaHR0cHM6Ly9pY29uLnVpb3dhLmVkdSkgdXNpbmcgeW91ciBIYXdrIElEIGFuZCBwYXNzd29yZC4KCiMgQ291cnNlIEhvbWUgeyNob21lfQoKVGhlIFVuaXZlcnNpdHkgb2YgSW93YVwKVGhlIENvbGxlZ2Ugb2YgTGliZXJhbCBBcnRzIGFuZCBTY2llbmNlc1wKRGVwYXJ0bWVudCBvZiBQc3ljaG9sb2dpY2FsIGFuZCBCcmFpbiBTY2llbmNlcwoKVGhlIENvbGxlZ2Ugb2YgTGliZXJhbCBBcnRzIGFuZCBTY2llbmNlcyAoQ0xBUykgaXMgdGhlIGhvbWUgb2YgdGhpcyBjb3Vyc2UsIGFuZCBDTEFTIGdvdmVybnMgdGhlIGFkZCBhbmQgZHJvcCBkZWFkbGluZXMsIGFjYWRlbWljIG1pc2NvbmR1Y3QgcG9saWNpZXMsIGFuZCBvdGhlciBwb2xpY2llcyBhbmQgcHJvY2VkdXJlcy4KT3RoZXIgVUkgY29sbGVnZXMgbWF5IGhhdmUgZGlmZmVyZW50IHBvbGljaWVzLgoKIyBJbnN0cnVjdG9yIENvbnRhY3QgSW5mb3JtYXRpb24geyNpbnN0cnVjdG9yfQoKW1Byb2Zlc3NvciBQZXRlcnNlbl0oaHR0cHM6Ly9wc3ljaG9sb2d5LnVpb3dhLmVkdS9wZW9wbGUvaXNhYWMtcGV0ZXJzZW4pXApPZmZpY2U6IDE3NSBQc3ljaG9sb2dpY2FsIGFuZCBCcmFpbiBTY2llbmNlcyBCdWlsZGluZyAoUEJTQilcCkUtbWFpbDogW2lzYWFjLXQtcGV0ZXJzZW5AdWlvd2EuZWR1XShtYWlsdG86aXNhYWMtdC1wZXRlcnNlbkB1aW93YS5lZHUpXApPZmZpY2UgUGhvbmU6IDQ2Ny0xMDE0XApTdHVkZW50IGRyb3AtaW4gaG91cnM6IE1vbmRheSAxMToyMOKAkzEyOjIwICYgV2VkbmVzZGF5IDLigJM0XApOb3RlOiBJJ20gaGVyZSB0byBoZWxwIHlvdSBsZWFybiBhbmQgc3VjY2VlZC4KUGxlYXNlIGNvbWUgdG8gbXkgb2ZmaWNlIGhvdXJzIHRvIGFzayBxdWVzdGlvbnMgYWJvdXQgY291cnNlIG1hdGVyaWFsLCBhc3NpZ25tZW50cywgZXhhbXMsIG9yIHByb2Zlc3Npb25hbCBkZXZlbG9wbWVudCAoY2FyZWVyLXJlbGF0ZWQgaXNzdWVzKSwgZm9yIGluc3RhbmNlLgpJIHdlbGNvbWUgeW91IHRvIGRpc2N1c3MgYW55IGNvbmNlcm5zIHlvdSBtaWdodCBoYXZlIGFib3V0IHRoZSBjbGFzcy4KSSBhbSBhbHNvIGF2YWlsYWJsZSB0byBtZWV0IHdpdGggeW91IGJ5IGFwcG9pbnRtZW50LCBhbHRob3VnaCBJIHdvdWxkIGFwcHJlY2lhdGUgeW91ciBtYWtpbmcgZXZlcnkgZWZmb3J0IHRvIHNlZSBtZSBkdXJpbmcgb2ZmaWNlIGhvdXJzLgpUaGUgYmVzdCB3YXkgdG8gcmVhY2ggbWUgb3V0c2lkZSBvZiBjbGFzcyBpcyBieSBlbWFpbC4KCiMgR3JhZHVhdGUgVGVhY2hpbmcgQXNzaXN0YW50IHsjVEF9CgpUaGUgY2xhc3MgaGFzIG9uZSBncmFkdWF0ZSB0ZWFjaGluZyBhc3Npc3RhbnQgKFRBKS4KCkFyaWVsIEtpbVwKT2ZmaWNlOiAyNTVIIFBzeWNob2xvZ2ljYWwgYW5kIEJyYWluIFNjaWVuY2VzIEJ1aWxkaW5nIChQQlNCKeKAlHJpbmcgdGhlIGJlbGwgYXQgMjU1VywgYW5kIHNoZSB3aWxsIGxldCB5b3UgaW5cClN0dWRlbnQgZHJvcC1pbiBob3VyczogV2VkbmVzZGF5IDExOjIw4oCTMTI6MjAgJiBGcmlkYXkgMToxMOKAkzI6MTBcCkUtbWFpbDogbmFtLXlvb24ta2ltQHVpb3dhLmVkdQoKIyBEZXBhcnRtZW50YWwgUmVzb3VyY2VzIHsjZGVwdFJlc291cmNlc30KCkRlcGFydG1lbnQgb2YgUHN5Y2hvbG9naWNhbCBhbmQgQnJhaW4gU2NpZW5jZXM6IFtodHRwczovL3BzeWNob2xvZ3kudWlvd2EuZWR1XShodHRwczovL3BzeWNob2xvZ3kudWlvd2EuZWR1KVwKRGVwYXJ0bWVudCBvZiBQc3ljaG9sb2dpY2FsIGFuZCBCcmFpbiBTY2llbmNlcyBNYWluIE9mZmljZTogRzYwIFBzeWNob2xvZ2ljYWwgYW5kIEJyYWluIFNjaWVuY2VzIEJ1aWxkaW5nICgzMzUtMjQwNilcCkNvb3JkaW5hdG9yIG9mIFVuZGVyZ3JhZHVhdGUgU3R1ZGllczogUHJvZmVzc29yIFdpbmRzY2hpdGwgKFtwYXVsLXdpbmRzY2hpdGxAdWlvd2EuZWR1XShtYWlsdG86cGF1bC13aW5kc2NoaXRsQHVpb3dhLmVkdSk7IDMzNS0zNjgxKVwKQWNhZGVtaWMgQ29vcmRpbmF0b3I6IEphbmVpbCBQYWdlLUphbWlzb24gKFtqYW5laWwtcGFnZUB1aW93YS5lZHVdKG1haWx0bzpqYW5laWwtcGFnZUB1aW93YS5lZHUpOyAzODQtMzY1NylcCkRlcGFydG1lbnRhbCBFeGVjdXRpdmUgT2ZmaWNlciAoREVPKS9EZXBhcnRtZW50IENoYWlyOiBQcm9mZXNzb3IgQmx1bWJlcmcgKFttYXJrLWJsdW1iZXJnQHVpb3dhLmVkdV0obWFpbHRvOm1hcmstYmx1bWJlcmdAdWlvd2EuZWR1KTsgMzM1LTI0MjQpCgojIFByZXJlcXVpc2l0ZXMgeyNwcmVyZXFzfQoKVGhlIERlcGFydG1lbnQgb2YgUHN5Y2hvbG9naWNhbCBhbmQgQnJhaW4gU2NpZW5jZXMgaGFzIGEgaGllcmFyY2hpY2FsIGNvdXJzZSBzdHJ1Y3R1cmUgdGhhdCByZXF1aXJlcyBzdHVkZW50cyB0byBjb21wbGV0ZSBjZXJ0YWluIHByZXJlcXVpc2l0ZSBjb3Vyc2VzIGJlZm9yZSB0YWtpbmcgdXBwZXItbGV2ZWwgY291cnNlcy4KVGhpcyBjb3Vyc2UgcmVxdWlyZXMgc3VjY2Vzc2Z1bCBjb21wbGV0aW9uIChDLSBvciBoaWdoZXIpIG9mIEVsZW1lbnRhcnkgUHN5Y2hvbG9neSwgSW50cm9kdWN0aW9uIHRvIENsaW5pY2FsIFBzeWNob2xvZ3ksIGFuZCBSZXNlYXJjaCBNZXRob2RzIGluIFBzeWNob2xvZ3kuClRoZSBkZXBhcnRtZW50IHdpbGwgY2hlY2sgc3R1ZGVudCByZWNvcmRzIHRvIGVuc3VyZSBjb21wbGV0aW9uIG9mIGNvdXJzZSBwcmVyZXF1aXNpdGVzLiAgCgojIERlc2NyaXB0aW9uIG9mIENvdXJzZSB7I2Rlc2NyaXB0aW9ufQoKVGhpcyBjb3Vyc2Ugc2F0aXNmaWVzIHRoZSB1cHBlci1sZXZlbCBlbGVjdGl2ZSByZXF1aXJlbWVudCBmb3IgUHN5Y2hvbG9naWNhbCBhbmQgQnJhaW4gU2NpZW5jZXMgbWFqb3JzLgpBZGRpdGlvbmFsbHksIHN0dWRlbnRzIHdpdGggYnJvYWQgaW50ZXJlc3RzIGluIGhlYWx0aCBhbmQgZGV2ZWxvcG1lbnQgd2lsbCBmaW5kIHRoaXMgY291cnNlIHVzZWZ1bC4gClRoZSBnb2FsIG9mIHRoaXMgY291cnNlIGlzIHRvIHByb3ZpZGUgc3R1ZGVudHMgd2l0aCBhIGNvbXByZWhlbnNpdmUgaW50cm9kdWN0aW9uIHRvIGNoaWxkIGFuZCBhZG9sZXNjZW50IHBzeWNob3BhdGhvbG9neS4KVGhpcyBpbmNsdWRlcyBhbiBlbXBoYXNpcyBvbiB0aGUgZGV2ZWxvcG1lbnRhbCBwc3ljaG9wYXRob2xvZ3kgZnJhbWV3b3JrIGFuZCBpbnZvbHZlcyB0aGlua2luZyBjcml0aWNhbGx5IGFib3V0IHRoZSBjYXVzZXMsIGNvbnNlcXVlbmNlcywgb25nb2luZyBxdWVzdGlvbnMsIGFuZCBwcmV2ZW50YXRpdmUgY2hhbGxlbmdlcyBvZiBjaGlsZCBwc3ljaG9wYXRob2xvZ3kgZmFjaW5nIHNjaWVudGlzdHMsIHlvdXRoIGFuZCB0aGVpciBmYW1pbGllcywgY2xpbmljaWFucywgYW5kIHNvY2lldHkuIApXZSBhcHBseSBlbGVtZW50cyBvZiB0aGUgZGV2ZWxvcG1lbnRhbCBwc3ljaG9wYXRob2xvZ3kgbW9kZWwgdG8gYSByYW5nZSBvZiBjaGlsZGhvb2QgZGlzb3JkZXJzLiAKV2l0aGluIGVhY2ggc3luZHJvbWUsIHBvc3NpYmxlIGdlbmV0aWMsIG5ldXJvYmlvbG9naWNhbCwgcHN5Y2hvbG9naWNhbCwgZmFtaWxpYWwsIGFuZCBzb2Npby1jdWx0dXJhbCBjYXVzYWwgZmFjdG9ycyB3aWxsIGJlIHNjcnV0aW5pemVkLgpXZSB3aWxsIGFsc28gcmV2aWV3IGFuZCBkaXNjdXNzIHJpc2sgYW5kIHJlc2lsaWVuY2UgZmFjdG9ycyBmb3IgY2hpbGQgcHN5Y2hvcGF0aG9sb2d5IChpbmRpdmlkdWFsLCBmYW1pbHksIGNvbW11bml0eSkgYXMgd2VsbCBhcyBtb2RlbHMgb2YgdHJlYXRtZW50IGFuZCBwcmV2ZW50aW9uLgoqWW91IGFyZSB1cmdlZCB0byByZWNvbnNpZGVyIHlvdXIgZGVjaXNpb24gdG8gdGFrZSB0aGlzIGNsYXNzIGlmIHlvdSBhcmUgcmVsdWN0YW50IHRvIGV4YW1pbmUgdGhlc2UgdG9waWNzIGluIGEgc2NpZW50aWZpYyBtYW5uZXIuKgoKIyBMZWFybmluZyBPdXRjb21lcyB7I2xlYXJuaW5nT3V0Y29tZXN9CgpBdCB0aGUgZW5kIG9mIHRoaXMgY291cnNlLCB5b3Ugd2lsbCBiZSBhYmxlIHRvOgoKLSBJZGVudGlmeSB0aGUgc3ltcHRvbXMgYW5kIGNvdXJzZSBvZiBwc3ljaG9sb2dpY2FsIGRpc29yZGVycyBpbiBjaGlsZGhvb2QuCi0gRGlzdGluZ3Vpc2ggdGhlIHZhcmlvdXMgcmlzayBmYWN0b3JzIHRoYXQgY29udHJpYnV0ZSB0byBwc3ljaG9wYXRob2xvZ3kgaW4gY2hpbGRob29kLiAgCi0gSWRlbnRpZnkgZmFjdG9ycyB0aGF0IG1heSBwcm90ZWN0IGFnYWluc3QgdGhlIGRldmVsb3BtZW50IG9mIHBzeWNob3BhdGhvbG9neSBhbmQgcHJvbW90ZSByZXNpbGllbmNlLgotIERlc2NyaWJlIGRpZmZlcmVudCBtZXRob2RzIGZvciB0cmVhdG1lbnQgYW5kIHByZXZlbnRpb24gb2YgcHN5Y2hvbG9naWNhbCBkaXNvcmRlcnMgaW4gY2hpbGRob29kLgotIENyaXRpcXVlLCBhbmFseXplLCBhbmQgc3ludGhlc2l6ZSBvcmlnaW5hbCBzb3VyY2UgYXJ0aWNsZXMgaW4gZGV2ZWxvcG1lbnRhbCBwc3ljaG9wYXRob2xvZ3kuCi0gUHJvZHVjZSBhbiBBUEEtc3R5bGUgbGl0ZXJhdHVyZSByZXZpZXcgdGhhdCBpbnRlZ3JhdGVzIGVtcGlyaWNhbCBmaW5kaW5ncyBpbiBkZXZlbG9wbWVudGFsIHBzeWNob3BhdGhvbG9neS4KCiMgUmVxdWlyZWQgTWF0ZXJpYWxzIHsjbWF0ZXJpYWxzfQoKIyMgVGV4dGJvb2sgeyN0ZXh0Ym9va30KClRvIHByb3ZpZGUgeW91IHdpdGggYSB0ZXh0Ym9vayBmb3IgYXMgbG93IGNvc3QgYXMgcG9zc2libGUsIHlvdSB3aWxsIGJlIHByb3ZpZGVkIGFuIGVUZXh0IG9mIHRoZSBmb2xsb3dpbmcgYm9vayB2aWEgSUNPTiBEaXJlY3QsIHVubGVzcyB5b3Ugb3B0IG91dDoKCioqTWFzaCwgRS4gSi4sIFdvbGZlLCBELiBBLiwgJiBXaWxsaWFtcywgSy4gTi4gKDIwMjMpLiAqQ2hpbGRob29kIHBzeWNob3BhdGhvbG9neSogKDh0aCBFZC4pLiBDZW5nYWdlLioqCgpZb3VyIFUtQmlsbCB3aWxsIGJlIGNoYXJnZWQgYXV0b21hdGljYWxseSBhZnRlciB5b3VyIGNvdXJzZSBoYXMgc3RhcnRlZCwgdW5sZXNzIHlvdSBbb3B0IG91dF0oaHR0cHM6Ly90ZWFjaC51aW93YS5lZHUvaWNvbi1kaXJlY3Qvb3B0LW91dCkgcHJpb3IgdG8gdGhlIGxhc3QgZGF5IGZvciB0dWl0aW9uIGFuZCBmZWUgcmVkdWN0aW9uIFtjb3Vyc2UgZGVhZGxpbmVdKGh0dHBzOi8vcmVnaXN0cmFyLnVpb3dhLmVkdS9jb3Vyc2UtZGVhZGxpbmVzKS4KRm9yIGZyZXF1ZW50bHkgYXNrZWQgcXVlc3Rpb25zIGFib3V0IElDT04gRGlyZWN0LCBpbmNsdWRpbmcgaG93IHRvIGFjY2VzcyB0aGUgZVRleHQsIHNlZSBbaGVyZV0oaHR0cHM6Ly90ZWFjaC51aW93YS5lZHUvaWNvbi1kaXJlY3Qvc3R1ZGVudC1mcmVxdWVudGx5LWFza2VkLXF1ZXN0aW9ucykuCkhvd2V2ZXIsIGlmIHlvdSB3YW50IHRvIHB1cmNoYXNlIGEgaGFyZGNvcHkgb2YgdGhlIHRleHRib29rIChmb3IgYSBoaWdoZXIgY29zdCkgeW91IG1heSBbb3B0IG91dF0oaHR0cHM6Ly90ZWFjaC51aW93YS5lZHUvaWNvbi1kaXJlY3Qvb3B0LW91dCkgb2YgdGhlIGVUZXh0IHZpYSBJQ09OIERpcmVjdC4KRm9yIGluc3RydWN0aW9ucyBob3cgdG8gb3B0IG91dCBvZiBJQ09OIERpcmVjdCwgc2VlIFtoZXJlXShodHRwczovL3RlYWNoLnVpb3dhLmVkdS9pY29uLWRpcmVjdC9vcHQtb3V0KS4KSG93ZXZlciwgaWYgeW91IG9wdCBvdXQsIHBsZWFzZSBub3RlOgoKLSBZb3UgcmlzayBmYWxsaW5nIGJlaGluZCBpbiB0aGUgY291cnNlIGlmIHlvdSBoYXZlIG5vdCBhY3F1aXJlZCBhbHRlcm5hdGUgdmVyc2lvbnMgb2YgdGhlIHNhbWUgbWF0ZXJpYWxzIHByaW9yIHRvIHRoZSBmaXJzdCBkYXkgb2YgdGhlIGNsYXNzLgotIEluc3RydWN0b3JzIGFyZSBub3QgcmVzcG9uc2libGUgZm9yIHByb3ZpZGluZyB5b3Ugd2l0aCBhbHRlcm5hdGl2ZSBtYXRlcmlhbHMgb3Igd2FpdmluZyBjb3Vyc2UvY2xhc3MgcmVxdWlyZW1lbnRzLgoKIyMgQXJ0aWNsZXMgeyNhcnRpY2xlc30KCjx1PioqKk5PVEU6IFVQREFURSBJQ09OIFdJVEggTUNBUlRIVVIgQVJUSUNMRSAoVE8gUkVQTEFDRSBDSFJJU1RBS0lTIEFSVElDTEUgRk9SIExJVCBDUklUSVFVRSkqKio8L3U+CgpJbiBhZGRpdGlvbiB0byB0aGUgdGV4dGJvb2ssIGFkZGl0aW9uYWwgcmVxdWlyZWQgcmVhZGluZ3MgZm9yIHNlbGVjdGVkIHRvcGljcyB3aWxsIGluY2x1ZGUgdGhlIGZvbGxvd2luZyBhcnRpY2xlcy4KUERGcyBvZiB0aGVzZSBhcnRpY2xlcyBjYW4gYmUgZm91bmQgb24gW0lDT05dKGh0dHBzOi8vaWNvbi51aW93YS5lZHUpLgoKMS4gU2hlYSwgUy4gRS4sIEdvcmRvbiwgSy4sIEhhd2tpbnMsIEEuLCBLYXdjaHVrLCBKLiwgJiBTbWl0aCwgRC4gKDIwMDApLiBQYXRob2xvZ3kgaW4gdGhlIGh1bmRyZWQgYWNyZSB3b29kOiBBIG5ldXJvZGV2ZWxvcG1lbnRhbCBwZXJzcGVjdGl2ZSBvbiBBLkEuIE1pbG5lLiAqQ2FuYWRpYW4gTWVkaWNhbCBBc3NvY2lhdGlvbiBKb3VybmFsLCAxNjMqKDEyKSwgMTU1N+KAkzE1NTkuIGh0dHBzOi8vd3d3LmNtYWouY2EvY29udGVudC9jbWFqLzE2My8xMi8xNTU3LmZ1bGwucGRmIChKdXN0IGZvciBmdW4hIPCfmIopCjEuIFJhLCBDLiBLLiwgQ2hvLCBKLiwgU3RvbmUsIE0uIEQuLCBEZSBMYSBDZXJkYSwgSi4sIEdvbGRlbnNvbiwgTi4gSS4sIE1vcm9uZXksIEUuLCBUdW5nLCBJLiwgTGVlLCBTLiBTLiwgJiBMZXZlbnRoYWwsIEEuIE0uICgyMDE4KS4gQXNzb2NpYXRpb24gb2YgZGlnaXRhbCBtZWRpYSB1c2Ugd2l0aCBzdWJzZXF1ZW50IHN5bXB0b21zIG9mIGF0dGVudGlvbi1kZWZpY2l0L2h5cGVyYWN0aXZpdHkgZGlzb3JkZXIgYW1vbmcgYWRvbGVzY2VudHMuICpKQU1BLCAzMjAqKDMpLCAyNTXigJMyNjMuIGh0dHBzOi8vZG9pLm9yZy8xMC4xMDAxL2phbWEuMjAxOC44OTMxCjEuIE1jQXJ0aHVyLCBCLiBBLiwgVG91Z2gsIFMuLCAmIE1hZGlnYW4sIFMuICgyMDIyKS4gU2NyZWVuIHRpbWUgYW5kIGRldmVsb3BtZW50YWwgYW5kIGJlaGF2aW9yYWwgb3V0Y29tZXMgZm9yIHByZXNjaG9vbCBjaGlsZHJlbi4gKlBlZGlhdHJpYyBSZXNlYXJjaCwgOTEqKDYpLCAxNjE24oCTMTYyMS4gaHR0cHM6Ly9kb2kub3JnLzEwLjEwMzgvczQxMzkwLTAyMS0wMTU3Mi13CjEuIFRoYXBhciwgQS4sIFJpY2UsIEYuLCBIYXksIEQuLCBCb2l2aW4sIEouLCBMYW5nbGV5LCBLLiwgdmFuIGRlbiBCcmVlLCBNLiwgUnV0dGVyLCBNLiwgJiBIYXJvbGQsIEcuICgyMDA5KS4gUHJlbmF0YWwgc21va2luZyBtaWdodCBub3QgY2F1c2UgYXR0ZW50aW9uLWRlZmljaXQvaHlwZXJhY3Rpdml0eSBkaXNvcmRlcjogRXZpZGVuY2UgZnJvbSBhIG5vdmVsIGRlc2lnbi4gKkJpb2xvZ2ljYWwgUHN5Y2hpYXRyeSwgNjYqKDgpLCA3MjLigJM3MjcuIGh0dHBzOi8vZG9pLm9yZy8xMC4xMDE2L2ouYmlvcHN5Y2guMjAwOS4wNS4wMzIKMS4gT3pvbm9mZiwgUy4sIElvc2lmLCBBLi1NLiwgQmFndWlvLCBGLiwgQ29vaywgSS4gQy4sIEhpbGwsIE0uIE0uLCBIdXRtYW4sIFQuLCBSb2dlcnMsIFMuIEouLCBSb3pnYSwgQS4sIFNhbmdoYSwgUy4sIFNpZ21hbiwgTS4sIFN0ZWluZmVsZCwgTS4gQi4sICYgWW91bmcsIEcuIFMuICgyMDEwKS4gQSBwcm9zcGVjdGl2ZSBzdHVkeSBvZiB0aGUgZW1lcmdlbmNlIG9mIGVhcmx5IGJlaGF2aW9yYWwgc2lnbnMgb2YgYXV0aXNtLiAqSm91cm5hbCBvZiB0aGUgQW1lcmljYW4gQWNhZGVteSBvZiBDaGlsZCAmIEFkb2xlc2NlbnQgUHN5Y2hpYXRyeSwgNDkqKDMpLCAyNTbigJMyNjYuZTI1Mi4gaHR0cHM6Ly9kb2kub3JnLzEwLjEwMTYvai5qYWFjLjIwMDkuMTEuMDA5CjEuIEZyaWNrLCBQLiBKLiAoMjAxMikuIERldmVsb3BtZW50YWwgcGF0aHdheXMgdG8gY29uZHVjdCBkaXNvcmRlcjogSW1wbGljYXRpb25zIGZvciBmdXR1cmUgZGlyZWN0aW9ucyBpbiByZXNlYXJjaCwgYXNzZXNzbWVudCwgYW5kIHRyZWF0bWVudC4gKkpvdXJuYWwgb2YgQ2xpbmljYWwgQ2hpbGQgJiBBZG9sZXNjZW50IFBzeWNob2xvZ3ksIDQxKigzKSwgMzc44oCTMzg5LiBodHRwczovL2RvaS5vcmcvMTAuMTA4MC8xNTM3NDQxNi4yMDEyLjY2NDgxNQoxLiBIb3cgdG8gV3JpdGUgYSBMaXRlcmF0dXJlIFJldmlldy4KMS4gS2VuZGFsbCwgUC4gQy4sIFNldHRpcGFuaSwgQy4gQS4sICYgQ3VtbWluZ3MsIEMuIE0uICgyMDEyKS4gTm8gbmVlZCB0byB3b3JyeTogVGhlIHByb21pc2luZyBmdXR1cmUgb2YgY2hpbGQgYW54aWV0eSByZXNlYXJjaC4gKkpvdXJuYWwgb2YgQ2xpbmljYWwgQ2hpbGQgJiBBZG9sZXNjZW50IFBzeWNob2xvZ3ksIDQxKigxKSwgMTAz4oCTMTE1LiBodHRwczovL2RvaS5vcmcvMTAuMTA4MC8xNTM3NDQxNi4yMDEyLjYzMjM1MgoxLiBTdHJpbmdhcmlzLCBBLiwgVmlkYWwtUmliYXMsIFAuLCBCcm90bWFuLCBNLiBBLiwgJiBMZWliZW5sdWZ0LCBFLiAoMjAxOCkuIFByYWN0aXRpb25lciBSZXZpZXc6IERlZmluaXRpb24sIHJlY29nbml0aW9uLCBhbmQgdHJlYXRtZW50IGNoYWxsZW5nZXMgb2YgaXJyaXRhYmlsaXR5IGluIHlvdW5nIHBlb3BsZS4gKkpvdXJuYWwgb2YgQ2hpbGQgUHN5Y2hvbG9neSBhbmQgUHN5Y2hpYXRyeSwgNTkqKDcpLCA3MjHigJM3MzkuIGh0dHBzOi8vZG9pLm9yZy8xMC4xMTExL2pjcHAuMTI4MjMKMS4gU3RpY2UsIEUuLCBTb3V0aCwgSy4sICYgU2hhdywgSC4gKDIwMTIpLiBGdXR1cmUgZGlyZWN0aW9ucyBpbiBldGlvbG9naWMsIHByZXZlbnRpb24sIGFuZCB0cmVhdG1lbnQgcmVzZWFyY2ggZm9yIGVhdGluZyBkaXNvcmRlcnMuICpKb3VybmFsIG9mIENsaW5pY2FsIENoaWxkICYgQWRvbGVzY2VudCBQc3ljaG9sb2d5LCA0MSooNiksIDg0NeKAkzg1NS4gaHR0cHM6Ly9kb2kub3JnLzEwLjEwODAvMTUzNzQ0MTYuMjAxMi43MjgxNTYKMS4gWW91bmcsIFIuLCBTcHJvZWJlciwgTi4sIEdyb3NjaHdpdHosIFIuIEMuLCBQcmVpc3MsIE0uLCAmIFBsZW5lciwgUC4gTC4gKDIwMTQpLiBXaHkgYWx0ZXJuYXRpdmUgdGVlbmFnZXJzIHNlbGYtaGFybTogRXhwbG9yaW5nIHRoZSBsaW5rIGJldHdlZW4gbm9uLXN1aWNpZGFsIHNlbGYtaW5qdXJ5LCBhdHRlbXB0ZWQgc3VpY2lkZSBhbmQgYWRvbGVzY2VudCBpZGVudGl0eS4gKkJNQyBQc3ljaGlhdHJ5LCAxNCooMSksIDEzNy4gaHR0cHM6Ly9kb2kub3JnLzEwLjExODYvMTQ3MS0yNDRYLTE0LTEzNwoxLiBDb2x2ZXJ0LCBFLiwgUnV0dGVyLCBNLiwgS3JlcHBuZXIsIEouLCBCZWNrZXR0LCBDLiwgQ2FzdGxlLCBKLiwgR3Jvb3RodWVzLCBDLiwgSGF3a2lucywgQS4sIFN0ZXZlbnMsIFMuLCAmIFNvbnVnYS1CYXJrZSwgRS4gSi4gUy4gKDIwMDgpLiBEbyB0aGVvcnkgb2YgbWluZCBhbmQgZXhlY3V0aXZlIGZ1bmN0aW9uIGRlZmljaXRzIHVuZGVybGllIHRoZSBhZHZlcnNlIG91dGNvbWVzIGFzc29jaWF0ZWQgd2l0aCBwcm9mb3VuZCBlYXJseSBkZXByaXZhdGlvbj86IEZpbmRpbmdzIGZyb20gdGhlIEVuZ2xpc2ggYW5kIFJvbWFuaWFuIGFkb3B0ZWVzIHN0dWR5LiAqSm91cm5hbCBvZiBBYm5vcm1hbCBDaGlsZCBQc3ljaG9sb2d5LCAzNiooNyksIDEwNTfigJMxMDY4LiBodHRwczovL2RvaS5vcmcvMTAuMTAwNy9zMTA4MDItMDA4LTkyMzIteAoxLiBOZWxzb24sIEMuIEEuLCBJSUksIFplYW5haCwgQy4gSC4sIEZveCwgTi4gQS4sIE1hcnNoYWxsLCBQLiBKLiwgU215a2UsIEEuIFQuLCAmIEd1dGhyaWUsIEQuICgyMDA3KS4gQ29nbml0aXZlIHJlY292ZXJ5IGluIHNvY2lhbGx5IGRlcHJpdmVkIHlvdW5nIGNoaWxkcmVuOiBUaGUgQnVjaGFyZXN0IEVhcmx5IEludGVydmVudGlvbiBQcm9qZWN0LiAqU2NpZW5jZSwgMzE4Kig1ODU4KSwgMTkzN+KAkzE5NDAuIGh0dHBzOi8vZG9pLm9yZy8xMC4xMTI2L3NjaWVuY2UuMTE0MzkyMQoxLiBEYXZpcywgRS4gUC4sIEdseW5uLCBMLiBNLiwgU2NoZXR0ZXIsIEMuIEQuLCBIb2JlbCwgQy4sIENoaWN6LURlbWV0LCBBLiwgJiBTYW5kbWFuLCBDLiBBLiAoMjAwNykuIFByZW5hdGFsIGV4cG9zdXJlIHRvIG1hdGVybmFsIGRlcHJlc3Npb24gYW5kIGNvcnRpc29sIGluZmx1ZW5jZXMgaW5mYW50IHRlbXBlcmFtZW50LiAqSm91cm5hbCBvZiB0aGUgQW1lcmljYW4gQWNhZGVteSBvZiBDaGlsZCAmIEFkb2xlc2NlbnQgUHN5Y2hpYXRyeSwgNDYqKDYpLCA3MzfigJM3NDYuIGh0dHBzOi8vZG9pLm9yZy8xMC4xMDk3L2NoaS4wYjAxM2UzMTgwNDdiNzc1CjEuIEJ1cmtlLCBKLiBELiwgUGFyZGluaSwgRC4gQS4sICYgTG9lYmVyLCBSLiAoMjAwOCkuIFJlY2lwcm9jYWwgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHBhcmVudGluZyBiZWhhdmlvciBhbmQgZGlzcnVwdGl2ZSBwc3ljaG9wYXRob2xvZ3kgZnJvbSBjaGlsZGhvb2QgdGhyb3VnaCBhZG9sZXNjZW5jZS4gKkpvdXJuYWwgb2YgQWJub3JtYWwgQ2hpbGQgUHN5Y2hvbG9neSwgMzYqKDUpLCA2NznigJM2OTIuIGh0dHBzOi8vZG9pLm9yZy8xMC4xMDA3L3MxMDgwMi0wMDgtOTIxOS03CjEuIEN1bW1pbmdzLCBFLiBNLiwgR29la2UtTW9yZXksIE0uIEMuLCAmIFBhcHAsIEwuIE0uICgyMDA0KS4gRXZlcnlkYXkgbWFyaXRhbCBjb25mbGljdCBhbmQgY2hpbGQgYWdncmVzc2lvbi4gKkpvdXJuYWwgb2YgQWJub3JtYWwgQ2hpbGQgUHN5Y2hvbG9neSwgMzIqKDIpLCAxOTHigJMyMDIuIGh0dHBzOi8vZG9pLm9yZy8xMC4xMDIzL0I6SkFDUC4wMDAwMDE5NzcwLjEzMjE2LmJlCjEuIE1jRG9ub3VnaCwgTS4gSC4sIEpvc2UsIFAuIEUuLCAmIFN0dWFydCwgSi4gKDIwMTYpLiBCaS1kaXJlY3Rpb25hbCBlZmZlY3RzIG9mIHBlZXIgcmVsYXRpb25zaGlwcyBhbmQgYWRvbGVzY2VudCBzdWJzdGFuY2UgdXNlOiBBIGxvbmdpdHVkaW5hbCBzdHVkeS4gKkpvdXJuYWwgb2YgWW91dGggYW5kIEFkb2xlc2NlbmNlLCA0NSooOCksIDE2NTLigJMxNjYzLiBodHRwczovL2RvaS5vcmcvMTAuMTAwNy9zMTA5NjQtMDE1LTAzNTUtNAoxLiBCb25hbm5vLCBSLiBBLiwgJiBIeW1lbCwgUy4gKDIwMTMpLiBDeWJlciBidWxseWluZyBhbmQgaW50ZXJuYWxpemluZyBkaWZmaWN1bHRpZXM6IEFib3ZlIGFuZCBiZXlvbmQgdGhlIGltcGFjdCBvZiB0cmFkaXRpb25hbCBmb3JtcyBvZiBidWxseWluZy4gKkpvdXJuYWwgb2YgWW91dGggYW5kIEFkb2xlc2NlbmNlLCA0MiooNSksIDY4NeKAkzY5Ny4gaHR0cHM6Ly9kb2kub3JnLzEwLjEwMDcvczEwOTY0LTAxMy05OTM3LTEKMS4gQ2h1bmcsIEguIEwuLCAmIFN0ZWluYmVyZywgTC4gKDIwMDYpLiBSZWxhdGlvbnMgYmV0d2VlbiBuZWlnaGJvcmhvb2QgZmFjdG9ycywgcGFyZW50aW5nIGJlaGF2aW9ycywgcGVlciBkZXZpYW5jZSwgYW5kIGRlbGlucXVlbmN5IGFtb25nIHNlcmlvdXMganV2ZW5pbGUgb2ZmZW5kZXJzLiAqRGV2ZWxvcG1lbnRhbCBQc3ljaG9sb2d5LCA0MiooMiksIDMxOeKAkzMzMS4gaHR0cHM6Ly9kb2kub3JnLzEwLjEwMzcvMDAxMi0xNjQ5LjQyLjIuMzE5CjEuIENvbGxpc2hhdywgUy4sIFBpY2tsZXMsIEEuLCBNZXNzZXIsIEouLCBSdXR0ZXIsIE0uLCBTaGVhcmVyLCBDLiwgJiBNYXVnaGFuLCBCLiAoMjAwNykuIFJlc2lsaWVuY2UgdG8gYWR1bHQgcHN5Y2hvcGF0aG9sb2d5IGZvbGxvd2luZyBjaGlsZGhvb2QgbWFsdHJlYXRtZW50OiBFdmlkZW5jZSBmcm9tIGEgY29tbXVuaXR5IHNhbXBsZS4gKkNoaWxkIEFidXNlICYgTmVnbGVjdCwgMzEqKDMpLCAyMTHigJMyMjkuIGh0dHBzOi8vZG9pLm9yZy8xMC4xMDE2L2ouY2hpYWJ1LjIwMDcuMDIuMDA0CjEuIENvbmR1Y3QgUHJvYmxlbXMgUHJldmVudGlvbiBSZXNlYXJjaCBHcm91cC4gKDIwMTEpLiBUaGUgZWZmZWN0cyBvZiB0aGUgZmFzdCB0cmFjayBwcmV2ZW50aXZlIGludGVydmVudGlvbiBvbiB0aGUgZGV2ZWxvcG1lbnQgb2YgY29uZHVjdCBkaXNvcmRlciBhY3Jvc3MgY2hpbGRob29kLiAqQ2hpbGQgRGV2ZWxvcG1lbnQsIDgyKigxKSwgMzMx4oCTMzQ1LiBodHRwczovL2RvaS5vcmcvMTAuMTExMS9qLjE0NjctODYyNC4yMDEwLjAxNTU4LngKCiMgQWNhZGVtaWMgSG9uZXN0eSBhbmQgTWlzY29uZHVjdCB7I2FjYWRlbWljSG9uZXN0eX0KCkFsbCBzdHVkZW50cyBpbiBDTEFTIGNvdXJzZXMgYXJlIGV4cGVjdGVkIHRvIGFiaWRlIGJ5IHRoZSBbY29sbGVnZSdzIHN0YW5kYXJkcyBvZiBhY2FkZW1pYyBob25lc3R5XShodHRwczovL2NsYXMudWlvd2EuZWR1L3N0dWRlbnRzL2hhbmRib29rL2FjYWRlbWljLWZyYXVkLWhvbm9yLWNvZGUpLgpBY2FkZW1pYyBtaXNjb25kdWN0IG11c3QgYmUgcmVwb3J0ZWQgYnkgaW5zdHJ1Y3RvcnMgdG8gQ0xBUyBhY2NvcmRpbmcgdG8gW3RoZXNlIHByb2NlZHVyZXNdKGh0dHBzOi8vcG9saWN5LmNsYXMudWlvd2EuZWR1L2NsYXMtcG9saWNpZXMtYW5kLXByb2NlZHVyZXMvdW5kZXJncmFkdWF0ZS1lZHVjYXRpb24vYWNhZGVtaWMtbWlzY29uZHVjdC11bmRlcmdyYWR1YXRlKS4KUGxlYXNlIG5vdGUgdGhhdCBjb2xsYWJvcmF0aW9uIHdpdGggb3RoZXIgY2xhc3NtYXRlcyBvbiBxdWl6emVzIGFuZCBkdXJpbmcgZXhhbXMgaXMgbm90IHBlcm1pdHRlZC4KSG93ZXZlciwgSSBkbyBlbmNvdXJhZ2UgeW91IHRvIGNvbGxhYm9yYXRlIHdpdGggY2xhc3NtYXRlcyB0byAqcHJlcGFyZSogZm9yIGV4YW1zIChlLmcuLCBpbmZvcm1hbCBzdHVkeSBncm91cHMpLgpJbiBhZGRpdGlvbiwgeW91IGFyZSBleHBlY3RlZCB0byBmb2xsb3cgdGhlIGNvdXJzZSdzIHBvbGljeSBvbiB0aGUgdXNlIG9mIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIChBSSksIHdoaWNoIGlzIG91dGxpbmVkIGJlbG93LgoKIyBBcnRpZmljaWFsIEludGVsbGlnZW5jZSAoQUkpIFBvbGljeSB7I2FpfQoKQmVjYXVzZSB3cml0aW5nLCBhbmFseXRpY2FsLCBhbmQgY3JpdGljYWwgdGhpbmtpbmcgc2tpbGxzIGFyZSBwYXJ0IG9mIHRoZSBsZWFybmluZyBvdXRjb21lcyBvZiB0aGlzIGNvdXJzZSwgYWxsIHdvcmsgc3VibWl0dGVkIGJ5IHN0dWRlbnRzIHNob3VsZCBiZSBwcmVwYXJlZCBieSB0aGUgc3R1ZGVudC4KWW91IGFyZSB0cmFpbmluZyB0aGVzZSBjb2duaXRpdmUgbXVzY2xlczsgaWYgeW91IGdvIHRvIHRoZSBneW0sIHlvdSB3b3VsZCBub3QgaGF2ZSBBSSBsaWZ0IHRoZSB3ZWlnaHRzIGZvciB5b3UuCkZvciB0aGVzZSByZWFzb25zLCBBSS1nZW5lcmF0ZWQgc3VibWlzc2lvbnMgYXJlIG5vdCBwZXJtaXR0ZWQgYW5kIHdpbGwgYmUgdHJlYXRlZCBhcyBwbGFnaWFyaXNtLgpMZWFybmluZyB0aGVzZSBjb3JlIGZvdW5kYXRpb25hbCBza2lsbHMgd2lsbCBtYWtlIHlvdSBhIGJldHRlciB1c2VyIG9mIEFJIGluIHRoZSBmdXR1cmUsIGJlY2F1c2UgeW91IHdpbGwgYmUgYmV0dGVyLXBvc2l0aW9uZWQgaW4gdGhlIGZ1dHVyZSB0byBjcml0aWNhbGx5IGV2YWx1YXRlIEFJIHJlc3BvbnNlcyBhbmQgdG8gaWRlbnRpZnkgd2hlbiAoYW5kIHRoZSB3YXlzIGluIHdoaWNoKSBpdHMgcmVzcG9uc2VzIGFyZSBpbmFjY3VyYXRlLgpNb3Jlb3ZlciwgaW4gbWFueSBpbmR1c3RyaWVzLCB1c2Ugb2YgQUkgaXMgbm90IHBlcm1pdHRlZCBiZWNhdXNlIHlvdSBjYW5ub3Qgc2hhcmUgdGhlIGNvbXBhbnkncyBwcm9wcmlldGFyeSBpbmZvcm1hdGlvbi4KVGh1cywgZGV2ZWxvcGluZyBzdHJvbmcgY29tcGV0ZW5jaWVzIGluIHRoZXNlIGRvbWFpbnMgKHdpdGhvdXQgdGhlIHVzZSBvZiBBSSkgd2lsbCBwcmVwYXJlIHlvdSBmb3IgYSBjb21wZXRpdGl2ZSB3b3JrcGxhY2UuCgojIENvdXJzZSBSZXF1aXJlbWVudHMgYW5kIFBvbGljaWVzIHsjcmVxdWlyZW1lbnRzfQoKIyMgTGVjdHVyZSB7I2xlY3R1cmV9CgpXZSB3aWxsIG1lZXQgdGhyZWUgdGltZXMgd2Vla2x5IGZvciBsZWN0dXJlcywgYXQgdGhlIHRpbWUgYW5kIGxvY2F0aW9uIGRlc2NyaWJlZCBbYWJvdmVdKCNsZWN0dXJlVGltZSkuCk15IHBvd2VycG9pbnQgcHJlc2VudGF0aW9ucyBmb3IgdGhlIGxlY3R1cmVzIHdpbGwgYmUgcG9zdGVkIG9uIFtJQ09OXShodHRwczovL2ljb24udWlvd2EuZWR1KSBubyBsYXRlciB0aGFuIG5vb24gb24gdGhlIGRheSBiZWZvcmUgdGhlIGxlY3R1cmUgKHRob3VnaCBJIG1heSBjb250aW51ZSB0byByZWZpbmUgdGhlIHNsaWRlcyB1cCB1bnRpbCB0aGUgdGltZSBvZiBsZWN0dXJlKS4KPHU+UGxlYXNlIG5vdGU6PC91PiBwb3dlcnBvaW50IHByZXNlbnRhdGlvbnMgYXJlIGFuIG91dGxpbmUgb2YgbXkgcG9pbnRzLiAKPHU+SXQgaXMgeW91ciByZXNwb25zaWJpbGl0eSB0byB0YWtlIG5vdGVzIGR1cmluZyBjbGFzcy48L3U+CklmIHlvdSBoYXZlIHF1ZXN0aW9ucyBhYm91dCB0aGUgbGVjdHVyZSBub3RlcyBvciBuZWVkIGNsYXJpZmljYXRpb24gb2YgYW55IG9mIHRoZSBwb2ludHMsIHBsZWFzZSBhc2sgaW4gY2xhc3Mgb3IgbWVldCB3aXRoIHRoZSBUQSBvciBQcm9mZXNzb3IgUGV0ZXJzZW4gZHVyaW5nIG9mZmljZSBob3Vycy4gCklmIHlvdSBtaXNzIGNsYXNzIGFuZC9vciBuZWVkIGhlbHAgY2F0Y2hpbmcgdXAgb24gdGhlIG5vdGVzLCBwbGVhc2UgbWFrZSBhbiBhcHBvaW50bWVudCB3aXRoIHRoZSBUQS4KCiMjIEF0dGVuZGFuY2UgYW5kIFBhcnRpY2lwYXRpb24geyNhdHRlbmRhbmNlUGFydGljaXBhdGlvbn0KCkF0dGVuZGFuY2UgYXQgbGVjdHVyZXMgaXMgcmVxdWlyZWQgYW5kIHdpbGwgYmUgY2hlY2tlZCBhbmQgZmFjdG9yZWQgaW50byBmaW5hbCBncmFkZXMgKHNlZSBncmFkaW5nIHNlY3Rpb24gW2JlbG93XSgjZ3JhZGluZykpLgpUaGVyZSBhcmUgNDMgbGVjdHVyZXMgZHVyaW5nIHRoZSBzZW1lc3RlciAoZXhjbHVkaW5nIGV4YW1pbmF0aW9ucykuCllvdSB3aWxsIHJlY2VpdmUgb25lIHBvaW50IGZvciBhdHRlbmRhbmNlIGF0IGVhY2ggbGVjdHVyZSB1cCB0byA0MCBwb2ludHMgKGkuZS4sIHlvdSB3aWxsIG5vdCByZWNlaXZlIGV4dHJhIGNyZWRpdCBmb3IgYXR0ZW5kaW5nIGFsbCA0MyBsZWN0dXJlcykuCjx1PlRodXMsIHlvdSB3aWxsIG5vdCBiZSBwZW5hbGl6ZWQgZm9yIG1pc3NpbmcgdXAgdG8gMyBsZWN0dXJlcy4KSG93ZXZlciwgeW91IHdpbGwgYmUgcmVzcG9uc2libGUgZm9yIGxlYXJuaW5nIGFueSBtYXRlcmlhbCBtaXNzZWQgZm9yIHF1aXp6ZXMgYW5kIGV4YW1zLCBhbmQgSSBzdHJvbmdseSBlbmNvdXJhZ2UgeW91IHRvIGF0dGVuZCBhbGwgbGVjdHVyZXMuClBvb3IgbGVjdHVyZSBhdHRlbmRhbmNlIGlzIGxpa2VseSB0byBhZmZlY3QgdGhlIHF1YWxpdHkgb2Ygc3R1ZGVudHMnIHdvcmsgYW5kIHN1Y2Nlc3MgaW4gdGhlIGNvdXJzZS48L3U+CgpTdHVkZW50cyB3aG8gbWlzcyA8dT5tb3JlIHRoYW4gMyBsZWN0dXJlczwvdT4gZHVlIHRvIHBhcnRpY2lwYXRpb24gaW4gVW5pdmVyc2l0eSBhY3Rpdml0aWVzIG11c3QgZ2l2ZSB0aGUgaW5zdHJ1Y3RvciBhIHN0YXRlbWVudCA8dT5iZWZvcmUgdGhlIGFic2VuY2U8L3U+IHNpZ25lZCBieSBhIHJlc3BvbnNpYmxlIG9mZmljaWFsIHRoYXQgc3BlY2lmaWVzIHRoZSBkYXRlcyBhbmQgdGltZXMgdGhlIHN0dWRlbnQgd2lsbCBtaXNzIGNsYXNzLgpBdXRob3JpemVkIGFjdGl2aXRpZXMgaW5jbHVkZSBwYXJ0aWNpcGF0aW9uIGluIGF0aGxldGljIHRlYW1zLCB0aGUgbWFyY2hpbmcgYmFuZCBvciBwZXAgYmFuZCwgZGViYXRlIHRlYW1zLCBhbmQgb3RoZXIgcmVjb2duaXplZCBVbml2ZXJzaXR5IGdyb3VwcywgYXMgd2VsbCBhcyBwYXJ0aWNpcGF0aW9uIGluIFVuaXZlcnNpdHkgZmllbGQgdHJpcHMsIHNlcnZpY2Ugd2l0aCB0aGUgTmF0aW9uYWwgR3VhcmQsIGFuZCBqdXJ5IGR1dHkuCkFic2VuY2VzIGR1ZSB0byBpbGxuZXNzZXMgb3IgZW1lcmdlbmNpZXMgKHRoYXQgZ28gb3ZlciAzIGxlY3R1cmVzKSBtdXN0IGJlIGRvY3VtZW50ZWQgd2l0aCB0aGUgVW5pdmVyc2l0eSBvZiBJb3dhIFtBYnNlbmNlIEV4cGxhbmF0aW9uIEZvcm1dKGh0dHBzOi8vY2xhcy51aW93YS5lZHUvZmFjdWx0eS9zdHVkZW50LWF0dGVuZGFuY2UtYW5kLWFic2VuY2VzKSBhbmQgc2VudCB0byB0aGUgVEEgd2l0aGluIDQ4IGhvdXJzIG9mIHRoZSBhYnNlbmNlLgpQZXIgdW5pdmVyc2l0eSBwb2xpY3ksIGlmIGEgc3R1ZGVudCB3aWxsIGJlIGFic2VudCA8dT41IG9yIG1vcmUgY29uc2VjdXRpdmUgZGF5cyBhbmQgdGhlIGFic2VuY2UgaXMgZHVlIHRvIGlsbG5lc3Mgb3Igb3RoZXIgZW1lcmdlbmN5PC91PiwgcGxlYXNlIGNvbnRhY3QgdGhlIFJlZ2lzdHJhciBTZXJ2aWNlIENlbnRlciBhdCAoMzE5KSAzODQtNDMwMCBvciByZWdpc3RyYXJAdWlvd2EuZWR1LgoKIyMgUmVhZGluZ3MgeyNyZWFkaW5nc30KClJlYWRpbmdzIGZyb20geW91ciB0ZXh0IGFyZSBhc3NpZ25lZCBieSBsZWN0dXJlIHRvcGljLgpZb3Ugc2hvdWxkIHJlYWQgYW5kIHRha2Ugbm90ZXMgb24gdGhlIG1hdGVyaWFsIGJlZm9yZSBjbGFzcy4KUGFzdCBleHBlcmllbmNlIGhhcyBzaG93biB0aGF0IHRvIGRvIHdlbGwgaW4gdGhpcyBjbGFzcyB5b3Ugc2hvdWxkIHJlYWQgdGhlIGFzc2lnbmVkIG1hdGVyaWFsLCBhdHRlbmQgbGVjdHVyZXMgYW5kIHRha2Ugbm90ZXMsIGFuZCByZXZpZXcgeW91ciBub3RlcyBlYWNoIHdlZWsuClRoZXJlIGlzIHRvbyBtdWNoIG1hdGVyaWFsIGJlaW5nIGNvdmVyZWQgaW4gdGhpcyBjbGFzcyB0byB0cnkgdG8gc3R1ZHkgb25seSBieSBmcmFudGljIHByZXBhcmF0aW9uIGltbWVkaWF0ZWx5IGJlZm9yZSBxdWl6emVzIGFuZCBleGFtcy4KCiMjIFdvcmtsb2FkIHsjd29ya2xvYWR9CgpUaGlzIGlzIGEgMyBzZW1lc3RlciBob3VyIGNvdXJzZS4KU3R1ZGVudHMgc2hvdWxkIHRoZXJlZm9yZSBleHBlY3QgdG8gc3BlbmQgWzYgYWRkaXRpb25hbCBob3VycyBwZXIgd2Vla10oaHR0cHM6Ly9jbGFzLnVpb3dhLmVkdS9mYWN1bHR5L3N0dWRlbnQtd29ya2xvYWQtZ3VpZGVsaW5lcykgKG91dHNpZGUgb2YgY2xhc3MpIHJlYWRpbmcgdGhlIHRleHRib29rIGFuZCBhcnRpY2xlcywgcmV2aWV3aW5nIGxlY3R1cmUgbWF0ZXJpYWwsIHByZXBhcmluZyBmb3IgcXVpenplcyBhbmQgZXhhbXMsIGFuZCBjb21wbGV0aW5nIHdyaXRpbmcgYXNzaWdubWVudHMuCgojIyBRdWl6emVzIHsjcXVpenplc30KClNpeCBxdWl6emVzIHdpbGwgYmUgYWRtaW5pc3RlcmVkIHZpYSB0aGUgW0lDT05dKGh0dHBzOi8vaWNvbi51aW93YS5lZHUpIHdlYnNpdGUuClN0dWRlbnRzIDx1PmFyZTwvdT4gYWxsb3dlZCB0byB1c2UgdGhlaXIgdGV4dGJvb2sgYW5kIGxlY3R1cmUgbm90ZXMgb24gdGhlIHF1aXp6ZXMuCkhvd2V2ZXIsIHN0dWRlbnRzIDx1Pm1heSBub3Q8L3U+IHdvcmsgdG9nZXRoZXIgb24gdGhlIHF1aXp6ZXMuCjx1PlF1ZXN0aW9ucyB3aWxsIGJlIHJhbmRvbWl6ZWQgYW5kIHByZXNlbnRlZCBzdWNoIHRoYXQgc3R1ZGVudHMgbXVzdCBhbnN3ZXIgb25lIHF1ZXN0aW9uIGF0IGEgdGltZSAoaS5lLiwgc3R1ZGVudHMgbWF5IG5vdCBnbyBiYWNrIHRvIGEgcHJldmlvdXMgcXVlc3Rpb24gaW4gdGhlIHF1aXopLjwvdT4KUXVpenplcyB3aWxsIGNvbnNpc3Qgb2YgYXBwcm94aW1hdGVseSAyMOKAkzMwIG11bHRpcGxlIGNob2ljZSBvciB2ZXJ5IHNob3J0IGFuc3dlciBxdWVzdGlvbnMuCkFsdGhvdWdoIHN0dWRlbnRzIG1heSB0YWtlIHRoZSBxdWl6IGF0IGFueSB0aW1lIHdoZW4gaXQgaXMgYXZhaWxhYmxlLCBzdHVkZW50cyBtdXN0IGNvbXBsZXRlIHRoZSBxdWl6IHdpdGhpbiA8dT4yIGhvdXJzPC91Pi4gCldlIHdpbGwgbm90IGFjY2VwdCBsYXRlIHJlc3BvbnNlcyBvciBtdWx0aXBsZSBzdWJtaXNzaW9ucy4KWW91ciBsb3dlc3QgcXVpeiBzY29yZSB3aWxsIGJlIGRyb3BwZWQuCldlIHdpbGwgbm90IGFjY2VwdCBleGN1c2VkIGFic2VuY2VzIGZvciBxdWl6emVzIGJlY2F1c2UgKGEpIHlvdSBoYXZlIGEgd2VlayB0byBjb21wbGV0ZSB0aGUgcXVpeiAoYW5kIGNhbiBzdWJtaXQgaXQgYXQgYW55IHBvaW50IGR1cmluZyB0aGF0IHdlZWspLCBhbmQgKGIpIHdlIGRyb3AgeW91ciBsb3dlc3QgcXVpeiBzY29yZS4KRWFjaCBxdWl6IHdpbGwgYmUgd2VpZ2h0ZWQgdGhlIHNhbWUgaW4gdGhlIGZpbmFsIGdyYWRlLgoKQWx0aG91Z2ggc3R1ZGVudHMgd2lsbCBoYXZlIGFjY2VzcyB0byB0aGVpciBjb3Vyc2UgbWF0ZXJpYWxzIGR1cmluZyB0aGUgcXVpeiwgcmVhZGluZyBhbmQgYWR2YW5jZWQgcHJlcGFyYXRpb24gd2lsbCBiZSBuZWNlc3NhcnkgdG8gZG8gd2VsbCBvbiB0aGUgcXVpenplcy4KPHU+TWF0ZXJpYWwgZm9yIHF1aXogcXVlc3Rpb25zIHdpbGwgYmUgdGFrZW4gZnJvbSByZXF1aXJlZCByZWFkaW5ncyAodGV4dHMgYW5kIGFydGljbGVzKSBhcyB3ZWxsIGFzIGZyb20gbGVjdHVyZSBtYXRlcmlhbC48L3U+ClF1aXogZHVlIGRhdGVzIGFuZCB0b3BpY3Mgd2lsbCBiZSBhbm5vdW5jZWQgaW4gY2xhc3MgYW5kIHZpYSBlbWFpbCBhbmQgYXJlIGxpc3RlZCBiZWxvdy4KQWxsIHF1aXp6ZXMgc2hvdWxkIGJlIHN1Ym1pdHRlZCB0byBbSUNPTl0oaHR0cHM6Ly9pY29uLnVpb3dhLmVkdSkgYnkgMTE6NTkgcC5tLiBvbiB0aGUgZHVlIGRhdGUuCgp8IFF1aXogIyB8IERhdGVzIEF2YWlsYWJsZSB8IFRvcGljcyBDb3ZlcmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfC0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgMSAgICAgIHwgOS80IOKAkyA5LzExICAgICAgfCBIaXN0b3J5L0QmUCBNb2RlbCwgVGhlb3JpZXMgJiBDYXVzZXMsIFJlc2VhcmNoIHdpdGggQ2hpbGRyZW4gICB8CnwgMiAgICAgIHwgOS8yMiDigJMgOS8yOSAgICAgfCBBREhELCBBU0QsIEludGVsbGVjdHVhbCBEaXNhYmlsaXR5LCBTcGVjaWZpYyBMZWFybmluZyBEaXNvcmRlciB8CnwgMyAgICAgIHwgMTAvMjAg4oCTIDEwLzI3ICAgfCBDRCwgQW54aWV0eSwgRGVwcmVzc2lvbiwgQmlwb2xhciwgRE1ERCAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgNCAgICAgIHwgMTEvMSDigJMgMTEvOCAgICAgfCBFbGltaW5hdGlvbiwgRWF0aW5nLCBTdWJzdGFuY2UtUmVsYXRlZCBEaXNvcmRlcnMsIFNlbGYtSW5qdXJ5ICB8CnwgNSAgICAgIHwgMTEvMTUg4oCTIDExLzI5ICAgfCBNYWx0cmVhdG1lbnQgYW5kIFJlc2lsaWVuY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgNiAgICAgIHwgMTIvMSDigJMgMTIvOCAgICAgfCBMZXZlbHMgb2YgQW5hbHlzaXMgQXJ0aWNsZXMsIFByZXZlbnRpb24gICAgICAgICAgICAgICAgICAgICAgICB8CgojIyBFeGFtaW5hdGlvbnMgeyNleGFtc30KClRoZXJlIHdpbGwgYmUgMiBleGFtczsgb25lIG1pZC10ZXJtIGV4YW0gYW5kIG9uZSBub24tY3VtdWxhdGl2ZSBmaW5hbCBleGFtLgpFeGFtIDEgd2lsbCBiZSBhZG1pbmlzdGVyZWQgZHVyaW5nIGNsYXNzIHRpbWUuClRoZSBkYXRlLCB0aW1lLCBhbmQgbG9jYXRpb24gb2YgdGhlIGZpbmFsIGV4YW0gd2lsbCBiZSBhbm5vdW5jZWQgYnkgdGhlIDV0aCB3ZWVrIG9mIGNsYXNzIGJ5IHRoZSBDb2xsZWdlIG9mIExpYmVyYWwgQXJ0cyBhbmQgU2NpZW5jZXM7IHRoZSBkdXJhdGlvbiBvZiB0aGUgZmluYWwgZXhhbSB3aWxsIGJlIDEyMCBtaW51dGVzLgpFYWNoIGV4YW0gd2lsbCBlbXBoYXNpemUgaW5mb3JtYXRpb24gcHJlc2VudGVkIGZvciB0aGUgaGFsZiBvZiB0aGUgY2xhc3MgdGhhdCBwcmVjZWRlcyBpdC4KSG93ZXZlciwgc29tZSBpbnRlZ3JhdGlvbiBvZiBpbmZvcm1hdGlvbiBhY3Jvc3Mgc2VjdGlvbnMgd2lsbCBiZSByZXF1aXJlZCBmb3IgcXVlc3Rpb25zIG9uIHRoZSBmaW5hbCBleGFtLgpFeGFtcyB3aWxsIGNvbnNpc3Qgb2Ygc2hvcnQtYW5zd2VyIGFuZCBtdWx0aXBsZSBjaG9pY2UgcXVlc3Rpb25zIGJhc2VkIHVwb24gYm90aCByZWFkaW5ncyAodGV4dHMgYW5kIGFydGljbGVzKSBhbmQgdGhlIGxlY3R1cmUgbWF0ZXJpYWwuCkV4YW0gZGF0ZXMgYXJlIGxpc3RlZCBiZWxvdy4KCioqRXhhbSAxIChNaWQtVGVybSBFeGFtKToJV2VkbmVzZGF5LCBPY3RvYmVyIDQsIDIwMjUgZHVyaW5nIGNsYXNzKipcCioqRXhhbSAyIChGaW5hbCBFeGFtKTogVEJEIGR1cmluZyBmaW5hbHMgd2VlayoqICh0aGUgZGF0ZSwgdGltZSwgYW5kIGxvY2F0aW9uIHdpbGwgYmUgYW5ub3VuY2VkIGJ5IHRoZSA1dGggd2VlayBvZiBjbGFzcyBieSB0aGUgQ29sbGVnZSBvZiBMaWJlcmFsIEFydHMgYW5kIFNjaWVuY2VzKQoKIyMjIE1pc3NpbmcgRXhhbXMgeyNtaXNzaW5nRXhhbXN9CgpbVW5pdmVyc2l0eSByZWd1bGF0aW9ucyByZXF1aXJlIHRoYXQgc3R1ZGVudHMgYmUgYWxsb3dlZCB0byBtYWtlIHVwIGV4YW1pbmF0aW9uc10oaHR0cHM6Ly9vcHNtYW51YWwudWlvd2EuZWR1L3N0dWRlbnRzL2Fic2VuY2VzLWNsYXNzKSB0aGF0IGhhdmUgYmVlbiBtaXNzZWQgZHVlIHRvIGlsbG5lc3MsIHJlbGlnaW91cyBob2x5IGRheXMsIG1pbGl0YXJ5IHNlcnZpY2Ugb2JsaWdhdGlvbnMgKGluY2x1ZGluZyBzZXJ2aWNlLXJlbGF0ZWQgbWVkaWNhbCBhcHBvaW50bWVudHMpLCBvciBvdGhlciB1bmF2b2lkYWJsZSBjaXJjdW1zdGFuY2VzIG9yIFVuaXZlcnNpdHktc3BvbnNvcmVkIGFjdGl2aXRpZXMuClN0dWRlbnRzIHdpdGggVUktYXV0aG9yaXplZCBhY3Rpdml0aWVzIG11c3QgZGlzY3VzcyB0aGVpciBhYnNlbmNlcyB3aXRoIHRoZSBpbnN0cnVjdG9yIGFzIHNvb24gYXMgcG9zc2libGUuClJlbGlnaW91cyBvYmxpZ2F0aW9ucyBtdXN0IGJlIGNvbW11bmljYXRlZCB3aXRoaW4gdGhlIGZpcnN0IHRocmVlIHdlZWtzIG9mIGNsYXNzZXMuClNlZSBiZWxvdyBmb3IgdGhlIGRvY3VtZW50YXRpb24gbmVjZXNzYXJ5IGZvciBhbiBhYnNlbmNlIHRvIGJlIGV4Y3VzZWQgYW5kIHRvIGJlIGVsaWdpYmxlIHRvIHRha2UgYSBtYWtlLXVwIGV4YW0uCgpTdHVkZW50cyBhcmUgYWxsb3dlZCB0byBtYWtlIHVwIGV4YW1zIHRoYXQgaGF2ZSBiZWVuIG1pc3NlZCBkdWUgdG8gaWxsbmVzcywgbWFuZGF0b3J5IHJlbGlnaW91cyBvYnNlcnZhdGlvbnMsIG9mZmljaWFsIFVuaXZlcnNpdHkgYWN0aXZpdGllcywgb3Igb3RoZXIgdW5hdm9pZGFibGUgY2lyY3Vtc3RhbmNlcy4KTm90ZTogdGhlIGZvcm1hdCBvZiB0aGUgbWFrZS11cCBleGFtIG1heSBkaWZmZXIgZnJvbSB0aGUgb3JpZ2luYWwgZXhhbS4KSWYgeW91IGtub3cgdGhhdCB5b3UgbXVzdCBiZSBhd2F5IGF0IHRoZSB0aW1lIG9mIGFuIGV4YW0gZm9yIG9uZSBvZiB0aGVzZSByZWFzb25zLCBQcm9mZXNzb3IgUGV0ZXJzZW4gb3IgdGhlIFRBIG11c3QgYmUgY29udGFjdGVkIGluIGFkdmFuY2Ugd2hlbmV2ZXIgcG9zc2libGUgdG8gc2NoZWR1bGUgYSBtYWtlLXVwIGV4YW0uCkluIG9yZGVyIHRvIHRha2UgYSBtYWtlLXVwIGV4YW0sIHlvdSBtdXN0IHByb3ZpZGUgYWNjZXB0YWJsZSBkb2N1bWVudGF0aW9uIHRvIGJlIGVsaWdpYmxlIHRvIHRha2UgaXQ6IGluY2x1ZGluZyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcmVwb3J0IG9mIGlsbG5lc3M7IGFueSBvdGhlciBjaXJjdW1zdGFuY2VzIG11c3QgYmUgZG9jdW1lbnRlZCBieSB0aGUgVW5pdmVyc2l0eSBvZiBJb3dhIFtBYnNlbmNlIEV4cGxhbmF0aW9uIEZvcm1dKGh0dHBzOi8vY2xhcy51aW93YS5lZHUvc2l0ZXMvY2xhcy51aW93YS5lZHUvZmlsZXMvMjAyNC0wNS9BQlNFTkNFJTIwRVhQTEFOQVRJT04lMjBGT1JNLnBkZikgKGxvY2F0ZWQgaW4gSUNPTiB1bmRlciAiU3R1ZGVudCBUb29scyIpIGFuZCBtdXN0IGJlIGFwcHJvdmVkIGJ5IFByb2Zlc3NvciBQZXRlcnNlbi4KPHU+SW4gc3VtLCB0byBiZSBlbGlnaWJsZSBmb3IgYSBtYWtlLXVwIGV4YW0sIFByb2Zlc3NvciBQZXRlcnNlbiBvciB0aGUgVEEgbXVzdCBiZSBjb250YWN0ZWQgYmVmb3JlIHRoZSBleGFtaW5hdGlvbiB3aGVuZXZlciBwb3NzaWJsZSwgYW5kIHlvdSBtdXN0IHNlbmQgYWNjZXB0YWJsZSBmb3JtIG9mIGRvY3VtZW50YXRpb24gdG8gUHJvZmVzc29yIFBldGVyc2VuIG9yIHRoZSBUQTwvdT4uCgojIyBMaXRlcmF0dXJlIENyaXRpcXVlcyB7I2xpdENyaXRpcXVlc30KCllvdSB3aWxsIGJlIHJlcXVpcmVkIHRvIGNvbXBsZXRlIHR3byBsaXRlcmF0dXJlIGNyaXRpcXVlIGFzc2lnbm1lbnRzLgpUaGVzZSBhc3NpZ25tZW50cyBhcmUgZGVzaWduZWQgdG8gaGVscCB5b3UgbGVhcm4gdG8gY3JpdGljYWxseSBhbmFseXplIG9yaWdpbmFsIHNvdXJjZSBhcnRpY2xlcyBpbiB3cml0dGVuIGZvcm0uCkJvdGggYXNzaWdubWVudHMgaW52b2x2ZSBwcm92aWRpbmcgYSBjcml0aXF1ZSBvZiBhIHJlc2VhcmNoIGFydGljbGUgKFJhIGV0IGFsLiwgMjAxOCDigJMgQXJ0aWNsZSAjMiwgYW5kIE1jQXJ0aHVyIGV0IGFsLiwgMjAyMiDigJMgQXJ0aWNsZSAjMykuCkJvdGggcGFwZXJzIHNob3VsZCBiZSAy4oCTMyBwYWdlcyBsb25nIChkb3VibGUtc3BhY2VkLCBBUEEgZm9ybWF0LCAxMi1wb2ludCBUaW1lcyBOZXcgUm9tYW4gZm9udCkgYW5kIHdpbGwgYmUgdHVybmVkIGluIHZpYSBbSUNPTl0oaHR0cHM6Ly9pY29uLnVpb3dhLmVkdSkuCkVhY2ggc2hvdWxkIGJlIGluIGVzc2F5IGZvcm0gYW5kIGNhcmVmdWxseSBwcm9vZnJlYWQgZm9yIHNwZWxsaW5nIGFuZCBncmFtbWF0aWNhbCBlcnJvcnMuCjx1PlN0dWRlbnRzIG1heSBub3Qgd29yayB0b2dldGhlciBvbiB0aGUgY3JpdGlxdWVzLjwvdT4KTW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8gc3RydWN0dXJlIHRoZSBjcml0aXF1ZXMgd2lsbCBiZSBwcm92aWRlZCBpbiBjbGFzcy4KTm90ZTogVHVybml0aW4gd2lsbCBiZSB1c2VkIHZpYSBbSUNPTl0oaHR0cHM6Ly9pY29uLnVpb3dhLmVkdSkgdG8gY2hlY2sgZm9yIHBsYWdpYXJpc20gb2YgYSBmZWxsb3cgc3R1ZGVudCBhbmQgZnJvbSB0aGUgaW50ZXJuZXQuCioqVGhlIGNyaXRpcXVlcyBhcmUgZHVlIG9uIE1vbmRheSwgQXVndXN0IDI4IGFuZCBGcmlkYXksIFNlcHRlbWJlciA4IGJ5IDExOjU5IHAubS4qKgoKIyMgTGl0ZXJhdHVyZSBSZXZpZXcgeyNsaXRSZXZpZXd9CgpZb3Ugd2lsbCBiZSByZXF1aXJlZCB0byB3cml0ZSBhIDx1PmxpdGVyYXR1cmUgcmV2aWV3PC91PiBvbiBhIHRvcGljIHJlbGF0ZWQgdG8gY2hpbGQgcHN5Y2hvcGF0aG9sb2d5LgpUaGUgdG9waWMgb2YgdGhlIHBhcGVyIGlzIGNvbXBsZXRlbHkgdXAgdG8gdGhlIHN0dWRlbnQ7IHRoZSBvbmx5IHJlcXVpcmVtZW50IGlzIHRoYXQgaXQgbXVzdCBiZSByZWxldmFudCB0byBwc3ljaG9wYXRob2xvZ3kgaW4gY2hpbGRyZW4gb3IgYWRvbGVzY2VudHMuClRoZSBwYXBlciBtdXN0IGluY2x1ZGUgYSByZXZpZXcgYW5kIGFuYWx5c2lzIG9mIGF0IGxlYXN0IDUgZW1waXJpY2FsIGFydGljbGVzIG9uIHRoZSB0b3BpYywgcHVibGlzaGVkIHNpbmNlIDIwMDAuCllvdSBhcmUgZW5jb3VyYWdlZCB0byB3b3JrIHdpdGggdGhlIFtVSSBXcml0aW5nIENlbnRlcl0oaHR0cHM6Ly93cml0aW5nY2VudGVyLnVpb3dhLmVkdSkgaW4gcmV2aXNpbmcgeW91ciBwYXBlci4KCiMjIyBGb3JtYXQgeyNsaXRSZXZpZXdGb3JtYXR9CgpUaGUgcGFwZXIgc2hvdWxkIGhhdmUgZml2ZSBzZWN0aW9uczoKCjEuIENvdmVyIExldHRlciwgZGVzY3JpYmVkIFtoZXJlXSgjc3RhZ2U2KQoxLiBUaXRsZSBQYWdlCjEuIEFic3RyYWN0CjEuIE1haW4gYm9keQoxLiBSZWZlcmVuY2VzCgpUaGUgbWFpbiBib2R5IG9mIHRoZSBwYXBlciBzaG91bGQgYmUgPHU+MTDigJMxMiBwYWdlczwvdT4sIGV4Y2x1ZGluZyB0aGUgY292ZXIgbGV0dGVyLCB0aXRsZSBwYWdlLCBhYnN0cmFjdCwgYW5kIHJlZmVyZW5jZXMuClRoZSB0ZXh0IHNob3VsZCBiZSBkb3VibGUtc3BhY2VkLCBpbiBbQVBBIGZvcm1hdF0oaHR0cHM6Ly9vd2wucHVyZHVlLmVkdS9vd2wvcmVzZWFyY2hfYW5kX2NpdGF0aW9uL2FwYV9zdHlsZS9hcGFfZm9ybWF0dGluZ19hbmRfc3R5bGVfZ3VpZGUvaW5kZXguaHRtbCksIGFuZCBpbiAxMi1wb2ludCBUaW1lcyBOZXcgUm9tYW4gZm9udC4KRm9yIHNhbXBsZSBwYXBlcnMgaW4gQVBBIGZvcm1hdCwgc2VlIFtoZXJlXShodHRwczovL293bC5wdXJkdWUuZWR1L293bC9yZXNlYXJjaF9hbmRfY2l0YXRpb24vYXBhX3N0eWxlL2FwYV9mb3JtYXR0aW5nX2FuZF9zdHlsZV9ndWlkZS9hcGFfc2FtcGxlX3BhcGVyLmh0bWwpLgoKIyMjIFN0YWdlcyB7I3N0YWdlc30KCiMjIyMgT3ZlcnZpZXcgeyNzdGFnZXNPdmVydmlld30KClRoaXMgcGFwZXIgd2lsbCBiZSBjb21wbGV0ZWQgaW4gNiBzdGFnZXMsIGFsbCB1cGxvYWRlZCB0byBbSUNPTl0oaHR0cHM6Ly9pY29uLnVpb3dhLmVkdSk6CgoxLiBbR2VuZXJhdGUgYSB0b3BpY10oI3N0YWdlMSkKMS4gW0lkZW50aWZ5IGFydGljbGVzXSgjc3RhZ2UyKQoxLiBbVW5kZXJzdGFuZCBmaW5kaW5ncyBmcm9tIGFydGljbGVzXSgjc3RhZ2UzKQoxLiBbV3JpdGUgYSBjb21wbGV0ZSBkcmFmdF0oI3N0YWdlNCkKMS4gW0dpdmUgYW5kIHJlY2VpdmUgZmVlZGJhY2tdKCNzdGFnZTUpCjEuIFtJbmNvcnBvcmF0ZSBmZWVkYmFjayBhbmQgcG9saXNoIHdyaXRpbmddKCNzdGFnZTYpCgpUaGUgZ29hbHMgb2YgdGhpcyBwcm9qZWN0IGFyZSBmb3IgZWFjaCBzdHVkZW50IHRvIHByb2R1Y2UgYSB0aG91Z2h0ZnVsIHBhcGVyIHRoYXQgZGVzY3JpYmVzIGFuIGFzcGVjdCBvZiB0aGlzIGNvdXJzZSB0aGF0IGNhcHR1cmVkIHRoZWlyIGludGVyZXN0IGFuZCB0byBnYWluIG1vcmUgZXhwZXJpZW5jZSB3aXRoIHNjaWVudGlmaWMgd3JpdGluZy4KRWFjaCBzdGFnZSBvZiB0aGUgcHJvY2VzcyB3aWxsIGJlIGRpc2N1c3NlZCBpbiBjbGFzcywgc28gYXR0ZW5kYW5jZSBpcyBjcml0aWNhbC4KQWRkaXRpb25hbGx5LCBncmFkaW5nIHJ1YnJpY3MgZm9yIGVhY2ggc3RhZ2Ugd2lsbCBiZSBwb3N0ZWQgc28gdGhhdCBzdHVkZW50cyB1bmRlcnN0YW5kIHRoZSBiYXNpcyBmb3IgZXZhbHVhdGlvbiBvZiBlYWNoIHN0YWdlIG9mIHRoZSBhc3NpZ25tZW50LgpTdWNjZXNzZnVsIGNvbXBsZXRpb24gb2YgdGhpcyBhc3NpZ25tZW50IHJlcXVpcmVzIHN0dWRlbnRzIHRvIGFkaGVyZSBjbG9zZWx5IHRvIHRoZSBkZWFkbGluZXMgb3V0bGluZWQuCjx1PkZvciB0aGlzIHJlYXNvbiwgc3Vic3RhbnRpYWwgcGVuYWx0aWVzIHdpbGwgYmUgYXBwbGllZCB0byBhbGwgbGF0ZSB3b3JrICgyMCUgb2ZmIGZpbmFsIGdyYWRlIGZvciBlYWNoIGRheSB0aGUgYXNzaWdubWVudCBpcyBsYXRlKS4KRnVydGhlciwgdG8gbWFrZSBzdXJlIHRoZSBwZWVyIHJldmlldyBwcm9jZXNzIGZvciBmaXJzdCBkcmFmdHMgaXMgc3VjY2Vzc2Z1bCwgYW55IGZpcnN0IGRyYWZ0cyBzdWJtaXR0ZWQgYWZ0ZXIgdGhlIGRlYWRsaW5lIG9mIEZyaWRheSwgTm92ZW1iZXIgMyB3aWxsIHJlY2VpdmUgYSB6ZXJvIGFuZCB3aWxsIG5vdCByZWNlaXZlIGEgcGVlciByZXZpZXcgKHRoZSBzdHVkZW50IHdpbGwgc3RpbGwgcmVjZWl2ZSBpbnN0cnVjdG9yIGZlZWRiYWNrKS4KSWYgeW91IGhhdmUgY29uY2VybnMgYWJvdXQgbWVldGluZyBvbmUgb2YgdGhlIGxpdGVyYXR1cmUgcmV2aWV3IGRlYWRsaW5lcywgcGxlYXNlIGNvbnRhY3QgUHJvZmVzc29yIFBldGVzZW4gb3IgdGhlIFRBIGFzIHNvb24gYXMgcG9zc2libGUgdG8gZGlzY3Vzcy48L3U+CkFsbCBhc3NpZ25tZW50cyBzaG91bGQgYmUgdXBsb2FkZWQgdG8gW0lDT05dKGh0dHBzOi8vaWNvbi51aW93YS5lZHUpIGJ5IDExOjU5IHAubS4gb24gdGhlIGR1ZSBkYXRlLgoKVGhlIHN0YWdlc+KAlGFuZCBkZWFkbGluZXPigJRhcmUgZGVzY3JpYmVkIGJlbG93OgoKIyMjIyBEZWFkbGluZXMgeyNkZWFkbGluZXN9CgpUaGUgd29ya2Zsb3cgb2YgdGhlIGxpdGVyYXR1cmUgcmV2aWV3IHN0YWdlcywgdGhlaXIgcmVzcGVjdGl2ZSBwZXJjZW50YWdlcyBpbiB0aGUgdG90YWwgbGl0ZXJhdHVyZSByZXZpZXcgZ3JhZGUsIGFuZCByZWxldmFudCBkdWUgZGF0ZXMgYXJlIGxpc3RlZCBiZWxvdy4KCnwgU3RhZ2UgfCBBc3NpZ25tZW50IERlc2NyaXB0aW9uIHwgUGVyY2VudCB8IER1ZSBEYXRlIHwKfC0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLXwtLS0tLS0tLS0tfAp8IDEgICAgIHwgKipEZXZlbG9wIGEgdG9waWMgZGVzY3JpcHRpb24gKDIgc2VudGVuY2VzKSBhbmQgM+KAkzUga2V5d29yZHMqKiB5b3Ugd2lsbCB0aGVuIHVzZSB0byBjb25kdWN0IGEgbGl0ZXJhdHVyZSBzZWFyY2ggdXNpbmcgW0dvb2dsZSBTY2hvbGFyXShodHRwczovL3B1cmwubGliLnVpb3dhLmVkdS9Hb29nbGVTY2gpLCBbUHN5Y0lORk9dKGh0dHBzOi8vcHVybC5saWIudWlvd2EuZWR1L2FwYS9wc3ljaW5mbyksIGFuZC9vciBbUHViTWVkXShodHRwczovL3B1cmwubGliLnVpb3dhLmVkdS9ubG0vcHVibWVkKS4gfCAyLjUlIHwgOS8xNSAgfAp8IDIgICAgIHwgKipJZGVudGlmeSBhbmQgZ2VuZXJhdGUgYSBsaXN0IG9mIDUgZW1waXJpY2FsIGFydGljbGVzKiogdGhhdCB5b3Ugd2lsbCBpbmNsdWRlIGluIHlvdXIgcmV2aWV3IGJhc2VkIG9uIHlvdXIgc2VhcmNoZXMgb2YgW0dvb2dsZSBTY2hvbGFyXShodHRwczovL3B1cmwubGliLnVpb3dhLmVkdS9Hb29nbGVTY2gpLCBbUHN5Y0lORk9dKGh0dHBzOi8vcHVybC5saWIudWlvd2EuZWR1L2FwYS9wc3ljaW5mbyksIGFuZC9vciBbUHViTWVkXShodHRwczovL3B1cmwubGliLnVpb3dhLmVkdS9ubG0vcHVibWVkKS4gICAgfCAyLjUlIHwgOS8yNSAgfAp8IDMgICAgIHwgKipXcml0ZSBicmllZiBzdW1tYXJpZXMqKiBvZiBlYWNoIG9mIHRoZSA1IGVtcGlyaWNhbCBhcnRpY2xlcyB0aGF0IGluY2x1ZGVzIGNsZWFyIGRlc2NyaXB0aW9ucyBvZiBib3RoIHRoZSBtZXRob2RvbG9neSBhbmQgcmVsZXZhbnQgZmluZGluZ3MuIHwgMTAlICB8IDEwLzE2IHwKfCA0ICAgICB8ICoqQ29tcG9zZSBhIGNvbXBsZXRlIGZpcnN0IGRyYWZ0Kiogb2YgdGhlIHJldmlldyB0aGF0IGluY2x1ZGVzIGFuIGludHJvZHVjdGlvbiB3aXRoIHRoZXNpcywgZGVzY3JpcHRpb24sIGNyaXRpcXVlLCBhbmQgaW50ZWdyYXRpb24gb2YgdGhlIDUgZW1waXJpY2FsIHN0dWRpZXMuIHwgMjUlICB8IDExLzMgIHwKfCA1YSAgICB8IFBlZXIgcmV2aWV3cyBhcmUgYXNzaWduZWQuIHwg4oCTICB8IDExLzYgfAp8IDViICAgIHwgKipHaXZlIGZlZWRiYWNrKiogYnkgcHJvdmlkaW5nIGFub255bW91cyBwZWVyIHJldmlldyBvZiBhbm90aGVyIHN0dWRlbnQncyBwYXBlci4gfCAxMCUgIHwgMTEvMjcgfAp8IDVjICAgIHwgKipSZWNlaXZlIGZlZWRiYWNrKiogZnJvbSBwZWVyIGFuZCBmcm9tIGluc3RydWN0b3IuIHwg4oCTIHwgMTEvMjkgfAp8IDYgICAgIHwgKipJbmNvcnBvcmF0ZSBmZWVkYmFjayBhbmQgcHJvZHVjZSBhIGZpbmFsIGRvY3VtZW50LioqIHwgNTAlICB8IDEyLzggIHwKCiMjIyMgU3RhZ2UgMTogR2VuZXJhdGUgYSBUb3BpYyB7I3N0YWdlMX0KCllvdSB3aWxsIGZpcnN0IGRldmVsb3AgYSB0b3BpYyBhbmQgYSBzZXQgb2Yga2V5d29yZHMgZm9yIHlvdXIgcGFwZXIuCkZvciB0aGUgcmV2aWV3IGZvcm1hdCwgdGhpcyBpbnZvbHZlcyBnZW5lcmF0aW5nIGEgc3BlY2lmaWMgdG9waWMgYW5kIGtleXdvcmRzIHlvdSB3aWxsIHRoZW4gdXNlIHRvIGNvbmR1Y3QgYSBsaXRlcmF0dXJlIHNlYXJjaCB1c2luZyBbR29vZ2xlIFNjaG9sYXJdKGh0dHBzOi8vcHVybC5saWIudWlvd2EuZWR1L0dvb2dsZVNjaCksIFtQc3ljSU5GT10oaHR0cHM6Ly9wdXJsLmxpYi51aW93YS5lZHUvYXBhL3BzeWNpbmZvKSwgYW5kL29yIFtQdWJNZWRdKGh0dHBzOi8vcHVybC5saWIudWlvd2EuZWR1L25sbS9wdWJtZWQpLgpXZSB3aWxsIGRpc2N1c3Mgc3RyYXRlZ2llcyBmb3IgZ2VuZXJhdGluZyB0b3BpY3MgYW5kIGtleXdvcmRzIGluIGNsYXNzLCBhbmQgZXhhbXBsZXMgd2lsbCBiZSBwcm92aWRlZC4KPHU+QnkgdGhlIFtkZWFkbGluZV0oI2RlYWRsaW5lcyksIHlvdSB3aWxsIHR1cm4gaW4gYSBzdW1tYXJ5IG9mIHlvdXIgcmVzZWFyY2ggdG9waWMgKDHigJMyIHNlbnRlbmNlcykgYW5kIGEgbGlzdCBvZiBrZXl3b3JkcyB0aGF0IHdpbGwgc3RhcnQgeW91ciBsaXRlcmF0dXJlIHNlYXJjaDwvdT4uCgojIyMjIFN0YWdlIDI6IElkZW50aWZ5IEFydGljbGVzIHsjc3RhZ2UyfQoKQWZ0ZXIgeW91ciB0b3BpYyBoYXMgYmVlbiBhcHByb3ZlZCwgeW91IHdpbGwgdGhlbiBjb25kdWN0IGEgc2VhcmNoIHRvIGlkZW50aWZ5IHRoZSBhcnRpY2xlcyBmb3IgeW91ciBwYXBlci4KWW91IHdpbGwgc2VhcmNoIFBzeWNoSU5GTyBvciBQdWJNZWQgYW5kIGlkZW50aWZ5IGEgbWluaW11bSBvZiBmaXZlIGVtcGlyaWNhbCBhcnRpY2xlcyB0aGF0IGFyZSBhbGwgcmVsZXZhbnQgdG8geW91ciB0b3BpYy4KQXMgd2Ugd2lsbCBkaXNjdXNzIGluIGNsYXNzLCBpdCBpcyBpbXBvcnRhbnQgdG8gZGVmaW5lIHlvdXIgdG9waWMgY2FyZWZ1bGx5IHNvIHRoYXQgYWxsIG9mIHlvdXIgaWRlbnRpZmllZCBhcnRpY2xlcyBhcmUgYWRkcmVzc2luZyBjb21tb24gY29tcG9uZW50cy4KPHU+QnkgdGhlIFtkZWFkbGluZV0oI2RlYWRsaW5lcyksIHlvdSB3aWxsIHR1cm4gaW4geW91ciBsaXN0IG9mIGFydGljbGVzPC91Pi4gCgojIyMjIFN0YWdlIDM6IFVuZGVyc3RhbmQgRmluZGluZ3MgZnJvbSBBcnRpY2xlcyB7I3N0YWdlM30KCk9uY2UgeW91IGhhdmUgaWRlbnRpZmllZCB0aGUgZml2ZSBwYXBlcnMgeW91IHdpc2ggdG8gd3JpdGUgYWJvdXQsIHlvdSB3aWxsIHRoZW4gcHJvZHVjZSBicmllZiBzdW1tYXJpZXMgb2YgZWFjaCBhcnRpY2xlIHRoYXQgaW5jbHVkZSBhIGRlc2NyaXB0aW9uIG9mIHRoZSBtZXRob2RzIGVtcGxveWVkIGJ5IHRoZSByZXNlYXJjaGVycyBhbmQgdGhlaXIgYmFzaWMgZmluZGluZ3MgKDLigJM0IHBhcmFncmFwaHMgcGVyIGFydGljbGUgZm9yIGVhY2ggb2YgeW91ciBmaXZlIGFydGljbGVzKS4KWW91IHdpbGwgYWxzbyBpbmNsdWRlIHlvdXIgcmVmZXJlbmNlIGxpc3QsIGluIEFQQSBzdHlsZS4KPHU+QnkgdGhlIFtkZWFkbGluZV0oI2RlYWRsaW5lcyksIHlvdSB3aWxsIHR1cm4gaW4geW91ciBhcnRpY2xlIHN1bW1hcmllczwvdT4uCgojIyMjIFN0YWdlIDQ6IFdyaXRlIGEgQ29tcGxldGUgRHJhZnQgeyNzdGFnZTR9CgpOZXh0LCB5b3Ugd2lsbCB3cml0ZSBhbmQgdHVybiBpbiBhIGNvbXBsZXRlIGRyYWZ0IG9mIHlvdXIgcGFwZXIuClRoZSBzeXN0ZW1hdGljIHJldmlldyBzaG91bGQgaW5jbHVkZSBib3RoIGRlc2NyaXB0aW9uIG9mIHRoZSBlbXBpcmljYWwgc3R1ZGllcyB5b3UndmUgaW5jbHVkZWQgYXMgd2VsbCBhcyBhbmFseXNpcywgY3JpdGlxdWUsIGFuZCBpbnRlZ3JhdGlvbiBvZiBmaW5kaW5ncy4KRm9yIHRoaXMgc3RhZ2UsIHlvdSB3aWxsIGFsc28gZ2VuZXJhdGUgYSB0aGVzaXMgdGhhdCBkZXNjcmliZXMgdGhlIG92ZXJhbGwgbWVzc2FnZSBvZiB5b3VyIHJldmlldyBhbmQgeW91IHdpbGwgd29yayB0byBkZW1vbnN0cmF0ZSBob3cgZWFjaCBhcnRpY2xlIGlzIChvciBpcyBub3QpIHN1cHBvcnRpdmUgb2YgeW91ciB0aGVzaXMuClRoZSBnb2FsIG9mIHRoaXMgc3RhZ2UgaXMgdG8gZGV2ZWxvcCB5b3VyIGlkZWFzIGFuZCBhcmd1bWVudCBzbyB0aGF0IHlvdSBjYW4gcmVjZWl2ZSBmZWVkYmFjay4KPHU+QnkgdGhlIFtkZWFkbGluZV0oI2RlYWRsaW5lcyksIHlvdSB3aWxsIHR1cm4gaW4geW91ciBmaXJzdCBkcmFmdCBvZiB0aGUgcGFwZXIuCk5vdGU6IHlvdSBtdXN0IHR1cm4gaW4gYSBjb21wbGV0ZSBkcmFmdCBvZiB5b3VyIHBhcGVy4oCUbm90IGFuIG91dGxpbmUuPC91PgoKIyMjIyBTdGFnZSA1OiBHaXZlIGFuZCBSZWNlaXZpbmcgRmVlZGJhY2sgeyNzdGFnZTV9CgpGb2xsb3dpbmcgc3VibWlzc2lvbiBvZiB5b3VyIGZpcnN0IGRyYWZ0LCBhbGwgc3R1ZGVudHMgd2lsbCByZWNlaXZlIGRldGFpbGVkIGZlZWRiYWNrIGZyb20gdGhlIGluc3RydWN0b3IsIHdoaWNoIHdpbGwgaW5jbHVkZSBjcml0aXF1ZSBvZiBjb250ZW50LCBvcmdhbml6YXRpb24sIGFuZCBhcmd1bWVudC4KQWRkaXRpb25hbGx5IGVhY2ggc3R1ZGVudCB3aWxsIGNvbXBsZXRlIGFuIGFub255bW91cyBwZWVyIHJldmlldyBvZiBhIGZlbGxvdyBzdHVkZW50J3MgcGFwZXIgKHlvdXIgZHJhZnQgd2lsbCBhbHNvIGJlIHBlZXIgcmV2aWV3ZWQpLgpQZWVyIHJldmlld3Mgd2lsbCBiZSBibGluZGVkIGFuZCBvbmx5IEkgKHRoZSBpbnN0cnVjdG9yKSB3aWxsIGtub3cgd2hpY2ggcGFwZXJzIGJlbG9uZyB0byB3aGljaCBzdHVkZW50cy4KUmV2aWV3cyB3aWxsIGJlIGFzc2lnbmVkIGluIGNsYXNzLgpNb3JlIGRldGFpbHMgYWJvdXQgcHJvdmlkaW5nIGFuIGFwcHJvcHJpYXRlIHJldmlldyBhbmQgdGhlIGZvcm1hdHRpbmcgd2lsbCBiZSBwcm92aWRlZCBpbiBjbGFzcy4KPHU+QnkgdGhlIFtkZWFkbGluZV0oI2RlYWRsaW5lcyksIHlvdSB3aWxsIHR1cm4gaW4geW91ciByZXZpZXcgb2YgdGhlIHBlZXIncyBwYXBlci48L3U+ClRoZSBpbnN0cnVjdG9yIHdpbGwgdGhlbiByZS1kaXN0cmlidXRlIHRoZSBwZWVyIHJldmlld3MgdG8gYXV0aG9ycy4gIAoKIyMjIyBTdGFnZSA2OiBJbmNvcnBvcmF0aW5nIEZlZWRiYWNrIGFuZCBQb2xpc2hpbmcgV3JpdGluZyB7I3N0YWdlNn0KCllvdSB3aWxsIHJlY2VpdmUgY29tbWVudHMgZnJvbSB0aGUgaW5zdHJ1Y3RvciBhbmQgZnJvbSB5b3VyIHBlZXIgcmV2aWV3ZXIgdmlhIGVtYWlsLgpZb3Ugd2lsbCB0aGVuIHVzZSB0aGVzZSBjb21tZW50cyB0byByZXZpc2UgeW91ciBwYXBlci4KWW91ciBmaW5hbCBwYXBlciBtdXN0IGluY2x1ZGUgYSA8dT5jb3ZlciBsZXR0ZXI8L3U+IHRoYXQgZGV0YWlscyB0aGUgY2hhbmdlcyB5b3UgbWFkZSB0byB5b3VyIGRyYWZ0IGJhc2VkIG9uIGZlZWRiYWNrIGZyb20gdGhlIGluc3RydWN0b3IgYXMgd2VsbCBhcyBmcm9tIHlvdXIgcGVlciByZXZpZXdlci4KPHU+QWRkaXRpb25hbGx5LCBzdHVkZW50cyBhcmUgZW5jb3VyYWdlZCB0byBtZWV0IHdpdGggdGhlIFRBIGR1cmluZyB0aGUgd2VlayBvZiBOb3ZlbWJlciAyNyB0byByZXZpZXcgdGhlaXIgZmVlZGJhY2sgYW5kIGRpc2N1c3MgcGxhbnMgZm9yIHJldmlzaW9uLjwvdT4KPHU+QnkgdGhlIFtkZWFkbGluZV0oI2RlYWRsaW5lcyksIHlvdSB3aWxsIHN1Ym1pdCB0aGUgbGl0ZXJhdHVyZSByZXZpZXc8L3U+LgpUaGUgbGl0ZXJhdHVyZSByZXZpZXcgc2hvdWxkIGluY2x1ZGUgdGhlIG1hbnVzY3JpcHQgaXRzZWxmIGFzIHdlbGwgYXMgYSBjb3ZlciBsZXR0ZXIgZGVzY3JpYmluZyB0aGUgY2hhbmdlcyBtYWRlIGluIHJlc3BvbnNlIHRvIGNvbW1lbnRzIGZyb20gdGhlIGluc3RydWN0b3IgYW5kIHRoZSBwZWVyIHJldmlld2VyLgoKIyBHcmFkaW5nIFN5c3RlbSBhbmQgdGhlIFVzZSBvZiArLy0geyNncmFkaW5nU3lzdGVtfQoKRmluYWwgZ3JhZGVzIHdpbGwgYmUgYXNzaWduZWQgYXQgdGhlIGVuZCBvZiB0aGUgc2VtZXN0ZXIgb24gdGhlIGJhc2lzIG9mIHlvdXIgdG90YWwgcGVyY2VudGFnZSBvZiBwb2ludHMgZWFybmVkIG9uIHF1aXp6ZXMsIGV4YW1pbmF0aW9ucywgd3JpdHRlbiBhc3NpZ25tZW50cywgYW5kIGxlY3R1cmUgYXR0ZW5kYW5jZSwgYXMgZGV0YWlsZWQgYmVsb3cuCkdyYWRlcyB3aWxsIGJlIGFzc2lnbmVkIG9uIGFuIGFic29sdXRlIHNjYWxlIChjcml0ZXJpb24tcmVmZXJlbmNlZCBncmFkaW5nOyBzZWUgYmVsb3cpOyBjb3Vyc2UgZ3JhZGVzIHdpbGwgbm90IGJlIGN1cnZlZC4KTm8gZXh0cmEtY3JlZGl0IG9wcG9ydHVuaXRpZXMgYXJlIGF2YWlsYWJsZSBmb3IgdGhpcyBjb3Vyc2UuClBsZWFzZSBub3RlOiBBcyBhIG1hdHRlciBvZiBmYWlybmVzcyB0byBhbGwgc3R1ZGVudHMsIEkgYXNzaWduIGdyYWRlcyBiYXNlZCBvbiBwZXJmb3JtYW5jZSBhbmQgZG8gbm90IG5lZ290aWF0ZSBncmFkZXMuCkFkZGl0aW9uYWxseSwgYSBwZW5hbHR5IG9mIDIwJSBwZXIgZGF5IHdpbGwgYmUgYXBwbGllZCB0byBhbGwgYXNzaWdubWVudHMgdHVybmVkIGluIGxhdGUuCkZpbmFsIGdyYWRlcyB3aWxsIGJlIGFzc2lnbmVkIGJhc2VkIG9uIHRoZSBmb2xsb3dpbmcgcmFuZ2VzOgoKfCBHcmFkZSB8IFBlcmNlbnQgfAp8Oi0tLS0tLXw6LS0tLS0tLS18CnwgQSsgICAgfCA5N+KAkzEwMCUgfAp8IEEgICAgIHwgOTPigJM5NiAgIHwKfCBB4oiSICAgIHwgOTDigJM5MiAgIHwKfCBCKyAgICB8IDg34oCTODkgICB8CnwgQiAgICAgfCA4M+KAkzg2ICAgfAp8IELiiJIgICAgfCA4MOKAkzgyICAgfAp8IEMrICAgIHwgNzfigJM3OSAgIHwKfCBDICAgICB8IDcz4oCTNzYgICB8CnwgQ+KIkiAgICB8IDcw4oCTNzIgICB8CnwgRCsgICAgfCA2N+KAkzY5ICAgfAp8IEQgICAgIHwgNjPigJM2NiAgIHwKfCBE4oiSICAgIHwgNjDigJM2MiAgIHwKfCBGICAgICB8IDDigJM1OSAgICB8CgpJIHJvdW5kIHVwIGZyb20gLjUgd2hlbiBkZXRlcm1pbmluZyBmaW5hbCBncmFkZXMuCkZvciBleGFtcGxlLCBhIGNvdXJzZSBwZXJjZW50IG9mIDc5LjUwIHdvdWxkIHJlY2VpdmUgYSBC4oiSLCB3aGVyZWFzIGEgY291cnNlIHBlcmNlbnQgb2YgNzkuNDkgd291bGQgcmVjZWl2ZSBhIEMrLgoKIyBDb3Vyc2UgR3JhZGVzIHsjY291cnNlR3JhZGVzfQoKRmluYWwgY291cnNlIGdyYWRlcyB3aWxsIGJlIGFzc2Vzc2VkIGJhc2VkIG9uIHlvdXIgcGVyZm9ybWFuY2UgaW4gdGhlIGFjdGl2aXRpZXMgYmVsb3cuClRoZSByZWxhdGl2ZSBjb250cmlidXRpb24gb2YgZWFjaCBjb21wb25lbnQgdG8geW91ciBmaW5hbCBncmFkZSBpcyBhcyBmb2xsb3dzOgoKLSA1JSAgICBbTGVjdHVyZSBBdHRlbmRhbmNlXSgjYXR0ZW5kYW5jZVBhcnRpY2lwYXRpb24pCi0gMTAlICAgW0xpdGVyYXR1cmUgQ3JpdGlxdWVzXSgjbGl0Q3JpdGlxdWVzKSAoMiBhdCA1JSBlYWNoKQotIDIwJSAgIFtFeGFtIDFdKCNleGFtcykgKE1pZC1UZXJtKQotIDIwJSAgIFtFeGFtIDJdKCNleGFtcykgKEZpbmFsKQotIDE1JSAgIFtRdWl6emVzXSgjcXVpenplcykgKDUgcXVpenplcyBhZnRlciBkcm9wcGluZyBsb3dlc3QgcXVpeiBzY29yZSwgMyUgZWFjaCkKLSAzMCUgICBbTGl0ZXJhdHVyZSBSZXZpZXddKCNsaXRSZXZpZXcpCgojIFRlbnRhdGl2ZSBDb3Vyc2UgT3V0bGluZSAoZXhhbSBkYXRlcyBmaXhlZCkgeyNvdXRsaW5lfQoKfCBEYXRlICAgICAgICB8IFRvcGljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUmVhZGluZyAgICAgICAgICAgICAgICAgIHwgQXNzaWdubWVudCBEdWUgICAgICAgICAgICAgICAgICAgICAgICAgfAp8Oi0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgOC8yMSAgICAgICAgfCBIaXN0b3J5IG9mIENoaWxkIFBzeWNob3BhdGhvbG9neSAgICAgICAgICAgICAgICAgICAgICB8IE1XVyBDaC4gMSAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCA4LzIzICAgICAgICB8IERldmVsb3BtZW50YWwgUHN5Y2hvcGF0aG9sb2d5ICAgICAgICAgICAgICAgICAgICAgICAgIHwgTVdXIENoLiAxOyBBcnRpY2xlIDEgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IDgvMjUgICAgICAgIHwgVGhlb3JpZXMgJiBDYXVzZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNV1cgQ2guIDI7IEFydGljbGUgMiAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgOC8yOCAgICAgICAgfCBUaGVvcmllcyAmIENhdXNlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1XVyBDaC4gMiAgICAgICAgICAgICAgICB8ICoqQ3JpdGlxdWUgMSBEdWUgKEFydGljbGUgMikqKiAgICAgICAgIHwKfCA4LzMwICAgICAgICB8IFJlc2VhcmNoIHdpdGggQ2hpbGRyZW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTVdXIENoLiAzOyBBcnRpY2xlIDMgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IDkvMSAgICAgICAgIHwgKkNvbmR1Y3RpbmcgYSBMaXRlcmF0dXJlIFNlYXJjaCogICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgOS80ICAgICAgICAgfCAqKk5vIENsYXNzIOKAkyBMYWJvciBEYXkqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKipRdWl6IDEgT3BlbnMqKiAgICAgICAgICAgICAgICAgICAgICAgfAp8IDkvNiAgICAgICAgIHwgRFNNIEFzc2Vzc21lbnQgJiBEaWFnbm9zaXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNV1cgQ2guIDQgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgOS84ICAgICAgICAgfCBBdHRlbnRpb24tRGVmaWNpdCBIeXBlcmFjdGl2aXR5IERpc29yZGVyICAgICAgICAgICAgICB8IE1XVyBDaC4gOCAgICAgICAgICAgICAgICB8ICoqQ3JpdGlxdWUgMiBEdWUgKEFydGljbGUgMykqKiAgICAgICAgIHwKfCA5LzExICAgICAgICB8IEF0dGVudGlvbi1EZWZpY2l0IEh5cGVyYWN0aXZpdHkgRGlzb3JkZXIgICAgICAgICAgICAgIHwgTVdXIENoLiA4ICAgICAgICAgICAgICAgIHwgKipRdWl6IDEgQ2xvc2VzKiogICAgICAgICAgICAgICAgICAgICAgfAp8IDkvMTMgICAgICAgIHwgQXR0ZW50aW9uLURlZmljaXQgSHlwZXJhY3Rpdml0eSBEaXNvcmRlciAgICAgICAgICAgICAgfCBNV1cgQ2guIDg7IEFydGljbGUgNCAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgOS8xNSAgICAgICAgfCBBdXRpc20gU3BlY3RydW0gRGlzb3JkZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1XVyBDaC4gNiAgICAgICAgICAgICAgICB8ICoqVG9waWMgYW5kIEtleXdvcmRzIER1ZSoqICAgICAgICAgICAgIHwKfCA5LzE4ICAgICAgICB8IEF1dGlzbSBTcGVjdHJ1bSBEaXNvcmRlcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTVdXIENoLiA2ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IDkvMjAgICAgICAgIHwgQXV0aXNtIFNwZWN0cnVtIERpc29yZGVycy8qV3JpdGluZyBBcnRpY2xlIFN1bW1hcmllcyogfCBNV1cgQ2guIDY7IEFydGljbGUgNSAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgOS8yMiAgICAgICAgfCAqKlJlc2VhcmNoIERheSDigJMgV29yayBvbiBQYXBlcioqICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKipRdWl6IDIgT3BlbnMqKiAgICAgICAgICAgICAgICAgICAgICAgfAp8IDkvMjUgICAgICAgIHwgSW50ZWxsZWN0dWFsIERpc2FiaWxpdHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNV1cgQ2guIDUgICAgICAgICAgICAgICAgfCAqKkxpc3Qgb2YgQXJ0aWNsZXMgRHVlKiogICAgICAgICAgICAgICB8CnwgOS8yNyAgICAgICAgfCBJbnRlbGxlY3R1YWwgRGlzYWJpbGl0eS9MZWFybmluZyBEaXNvcmRlcnMgICAgICAgICAgICB8IE1XVyBDaC4gNSAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCA5LzI5ICAgICAgICB8IExlYXJuaW5nIERpc29yZGVycyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTVdXIFNlY3Rpb24gNy40ICgiU3BlY2lmaWMgTGVhcm5pbmcgRGlzb3JkZXIiKSB0aHJvdWdoIHRoZSBlbmQgb2YgdGhlIGNoYXB0ZXIgfCAqKlF1aXogMiBDbG9zZXMqKiAgICAgICAgICAgICAgICAgICAgICB8CnwgMTAvMiAgICAgICAgfCBDYXRjaC1VcCBhbmQgRXhhbSBSZXZpZXcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAxMC80ICAgICAgICB8ICoqTUlEVEVSTSBFWEFNIElOIENMQVNTKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IDEwLzYgICAgICAgIHwgQ29uZHVjdCBQcm9ibGVtcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNV1cgQ2guIDkgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgMTAvOSAgICAgICAgfCBDb25kdWN0IFByb2JsZW1zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1XVyBDaC4gOTsgQXJ0aWNsZSA2ICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAxMC8xMSAgICAgICB8ICpXcml0aW5nIGEgTGl0ZXJhdHVyZSBSZXZpZXcqICAgICAgICAgICAgICAgICAgICAgICAgIHwgQXJ0aWNsZSA3ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IDEwLzEzICAgICAgIHwgQW54aWV0eSBEaXNvcmRlcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNV1cgQ2guIDExICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgMTAvMTYgICAgICAgfCBBbnhpZXR5IERpc29yZGVycyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1XVyBDaC4gMTEgICAgICAgICAgICAgICB8ICoqQXJ0aWNsZSBTdW1tYXJpZXMgRHVlKiogICAgICAgICAgICAgIHwKfCAxMC8xOCAgICAgICB8IEFueGlldHkgRGlzb3JkZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTVdXIENoLiAxMTsgQXJ0aWNsZSA4ICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IDEwLzIwICAgICAgIHwgRGVwcmVzc2lvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNV1cgQ2guIDEwICAgICAgICAgICAgICAgfCAqKlF1aXogMyBPcGVucyoqICAgICAgICAgICAgICAgICAgICAgICB8CnwgMTAvMjMgICAgICAgfCBEZXByZXNzaW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1XVyBDaC4gMTAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAxMC8yNSAgICAgICB8IEJpcG9sYXIgRGlzb3JkZXIvRE1ERCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTVdXIENoLiAxMDsgQXJ0aWNsZSA5ICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IDEwLzI3ICAgICAgIHwgRWxpbWluYXRpb24vRmVlZGluZyBEaXNvcmRlcnMgICAgICAgICAgICAgICAgICAgICAgICAgfCBNV1cgU2VjdGlvbiAxMy4zOiAoIkVsaW1pbmF0aW9uIERpc29yZGVycyIsICJFbnVyZXNpcyIsIGFuZCAiRW5jb3ByZXNpcyIpOyBNV1cgQ2guIDE0IHwgKipRdWl6IDMgQ2xvc2VzKiogICAgICAgICAgICAgICAgICAgICAgfAp8IDEwLzMwICAgICAgIHwgRWF0aW5nIERpc29yZGVycyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNV1cgQ2guIDE0ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgMTEvMSAgICAgICAgfCBFYXRpbmcgRGlzb3JkZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEFydGljbGUgMTAgICAgICAgICAgICAgICB8ICoqUXVpeiA0IE9wZW5zKiogICAgICAgICAgICAgICAgICAgICAgIHwKfCAxMS8zICAgICAgICB8IFN1YnN0YW5jZSBVc2UgYW5kIFJpc2stVGFraW5nICAgICAgICAgICAgICAgICAgICAgICAgIHwgTVdXIFNlY3Rpb24gMTMuNSAoIkFkb2xlc2NlbnQgU3Vic3RhbmNlLVVzZSBEaXNvcmRlcnMiKSB0aHJvdWdoIHRoZSBlbmQgb2YgdGhlIGNoYXB0ZXIgfCAqKjFzdCBEcmFmdCBEdWUqKiAgICAgICAgICAgICAgICAgICAgICB8CnwgMTEvNiAgICAgICAgfCBTdWljaWRlIGFuZCBTZWxmLUluanVyeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEFydGljbGUgMTEgICAgICAgICAgICAgICB8ICoqUGVlciBSZXZpZXdzIEFzc2lnbmVkKiogICAgICAgICAgICAgIHwKfCAxMS84ICAgICAgICB8IENoaWxkIE1hbHRyZWF0bWVudCAmIFRyYXVtYSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTVdXIENoLiAxMiAgICAgICAgICAgICAgIHwgKipRdWl6IDQgQ2xvc2VzKiogICAgICAgICAgICAgICAgICAgICAgfAp8IDExLzEwICAgICAgIHwgQ2hpbGQgTWFsdHJlYXRtZW50ICYgVHJhdW1hICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNV1cgQ2guIDEyICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgMTEvMTMgICAgICAgfCBDaGlsZCBNYWx0cmVhdG1lbnQgJiBUcmF1bWEgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEFydGljbGVzIDEyICYgMTMgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAxMS8xNSAgICAgICB8IEluZGl2aWR1YWwgRGlmZmVyZW5jZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQXJ0aWNsZSAxNCAgICAgICAgICAgICAgIHwgKipRdWl6IDUgT3BlbnMqKiAgICAgICAgICAgICAgICAgICAgICAgfAp8IDExLzE3ICAgICAgIHwgUGFyZW50aW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBBcnRpY2xlIDE1ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgMTEvMjDigJMxMS8yNCB8ICoqRkFMTCBCUkVBSyDigJMgTk8gQ0xBU1NFUyoqICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgMTEvMjcgICAgICAgfCBEaXZvcmNlIGFuZCBNYXJpdGFsIENvbmZsaWN0ICAgICAgICAgICAgICAgICAgICAgICAgICB8IEFydGljbGUgMTYgICAgICAgICAgICAgICB8ICoqUGVlciBSZXZpZXcgRHVlKiogICAgICAgICAgICAgICAgICAgIHwKfCAxMS8yOSAgICAgICB8IFBlZXIgUmVsYXRpb25zaGlwcyAmIEJ1bGx5aW5nICAgICAgICAgICAgICAgICAgICAgICAgIHwgQXJ0aWNsZXMgMTcgJiAxOCAgICAgICAgIHwgKipRdWl6IDUgQ2xvc2VzKio7ICoqUmVjZWl2ZSBSZXZpZXdzKiogfAp8IDEyLzEgICAgICAgIHwgTmVpZ2hib3Job29kIEZhY3RvcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBBcnRpY2xlIDE5ICAgICAgICAgICAgICAgfCAqKlF1aXogNiBPcGVucyoqICAgICAgICAgICAgICAgICAgICAgICB8CnwgMTIvNCAgICAgICAgfCBSZXNpbGllbmNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEFydGljbGUgMjAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAxMi82ICAgICAgICB8IFByZXZlbnRpb24gU2NpZW5jZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQXJ0aWNsZSAyMSAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IDEyLzggICAgICAgIHwgQ2F0Y2gtVXAvRmluYWwgRXhhbSBSZXZpZXcgaW4gQ2xhc3MgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqKlF1aXogNiBDbG9zZXMqKjsgKipGaW5hbCBQYXBlciBEdWUqKiB8CnwgMTIvOCAgICAgICAgfCAqKkZJTkFMIFBBUEVSIERVRSoqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAgICAgICAgICAgICB8ICoqRklOQUwgRVhBTSBUQkQgKFdlZWsgb2YgMTIvMTHigJMxMi8xNSkqKiAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CgojIERhdGUgYW5kIFRpbWUgb2YgdGhlIEZpbmFsIEV4YW0geyNmaW5hbEV4YW19CgpUaGUgW2ZpbmFsIGV4YW1pbmF0aW9uIGRhdGUgYW5kIHRpbWVdKGh0dHBzOi8vcmVnaXN0cmFyLnVpb3dhLmVkdS9maW5hbC1leGFtLXNjaGVkdWxlcykgd2lsbCBiZSBhbm5vdW5jZWQgYnkgdGhlIFJlZ2lzdHJhciBnZW5lcmFsbHkgYnkgdGhlIGZpZnRoIHdlZWsgb2YgY2xhc3NlcywgYW5kIGl0IHdpbGwgYmUgYW5ub3VuY2VkIG9uIHRoZSBjb3Vyc2UgSUNPTiBzaXRlIG9uY2UgaXQgaXMga25vd24uCjx1PkRvIG5vdCBwbGFuIHlvdXIgZW5kIG9mIHRoZSBzZW1lc3RlciB0cmF2ZWwgcGxhbnMgdW50aWwgdGhlIGZpbmFsIGV4YW0gc2NoZWR1bGUgaXMgbWFkZSBwdWJsaWMuCkl0IGlzIHlvdXIgcmVzcG9uc2liaWxpdHkgdG8ga25vdyB0aGUgZGF0ZSwgdGltZSwgYW5kIHBsYWNlIG9mIHRoZSBmaW5hbCBleGFtLjwvdT4KQWNjb3JkaW5nIHRvIHRoZSBSZWdpc3RyYXIncyBmaW5hbCBleGFtIHBvbGljeSwgc3R1ZGVudHMgPHU+aGF2ZSBhIG1heGltdW0gb2YgdHdvIHdlZWtzIGFmdGVyIHRoZSBhbm5vdW5jZWQgZmluYWwgZXhhbSBzY2hlZHVsZTwvdT4gdG8gcmVxdWVzdCBhIGNoYW5nZSBpZiBhbiBleGFtIGNvbmZsaWN0IGV4aXN0cyBvciBpZiBhIHN0dWRlbnQgaGFzIG1vcmUgdGhhbiB0d28gZXhhbXMgc2NoZWR1bGVkIGZvciB0aGUgc2FtZSBkYXkgKHNlZSB0aGUgW3BvbGljeV0oaHR0cHM6Ly9yZWdpc3RyYXIudWlvd2EuZWR1L21ha2V1cC1maW5hbC1leGFtaW5hdGlvbi1wb2xpY2llcykgaGVyZSkuCgojIENvdXJzZSBSZXNvdXJjZXMgeyNjb3Vyc2VSZXNvdXJjZXN9CgpUaGVyZSBhcmUgbWFueSBjb3Vyc2UgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSBzdWNjZWVkIGluIHRoZSBjbGFzcywgaW5jbHVkaW5nOgoKLSB0aGUgdGV4dGJvb2sgYW5kIHJlYWRpbmdzCi0gbGVjdHVyZXMgYW5kIHNsaWRlcwotIGdldHRpbmcgYW5kIHJldmlld2luZyBtaXNzZWQgbm90ZXMgZnJvbSBhIHBlZXIKLSBUQSBvZmZpY2UgaG91cnMKLSBpbnN0cnVjdG9yIG9mZmljZSBob3VycwotIHBlZXIgc3R1ZHkgZ3JvdXBzCi0gdGhlIFVJIFtXcml0aW5nIENlbnRlcl0oaHR0cHM6Ly93cml0aW5nY2VudGVyLnVpb3dhLmVkdSkKLSBUdXRvciBJb3dhOiBodHRwczovL3R1dG9yLnVpb3dhLmVkdQoKIyBEcm9wIERlYWRsaW5lIGZvciB0aGlzIENvdXJzZSB7I2Ryb3BEZWFkbGluZX0KCllvdSBtYXkgZHJvcCBhbiBpbmRpdmlkdWFsIGNvdXJzZSBiZWZvcmUgdGhlIGRyb3AgZGVhZGxpbmU7IGFmdGVyIHRoaXMgZGVhZGxpbmUgeW91IHdpbGwgbmVlZCBjb2xsZWdpYXRlIGFwcHJvdmFsLgpZb3UgY2FuIGxvb2sgdXAgdGhlIGRyb3AgZGVhZGxpbmUgZm9yIHRoaXMgY291cnNlIFtoZXJlXShodHRwczovL3JlZ2lzdHJhci51aW93YS5lZHUvY291cnNlLWRlYWRsaW5lcykuCldoZW4geW91IGRyb3AgYSBjb3Vyc2UsIGEgIlciIHdpbGwgYXBwZWFyIG9uIHlvdXIgdHJhbnNjcmlwdC4KVGhlIG1hcmsgb2YgIlciIGlzIGEgbmV1dHJhbCBtYXJrIHRoYXQgZG9lcyBub3QgYWZmZWN0IHlvdXIgR1BBLgpUbyBkaXNjdXNzIGhvdyBkcm9wcGluZyAob3Igc3RheWluZyBpbikgYSBjb3Vyc2UgbWlnaHQgYWZmZWN0IHlvdXIgYWNhZGVtaWMgZ29hbHMsIHBsZWFzZSBjb250YWN0IHlvdXIgQWNhZGVtaWMgQWR2aXNvci4KRGlyZWN0aW9ucyBmb3IgYWRkaW5nIG9yIGRyb3BwaW5nIGEgY291cnNlIGFuZCBvdGhlciByZWdpc3RyYXRpb24gY2hhbmdlcyBjYW4gYmUgZm91bmQgb24gdGhlIFtSZWdpc3RyYXIncyB3ZWJzaXRlXShodHRwczovL3JlZ2lzdHJhci51aW93YS5lZHUvY2hhbmdlLXJlZ2lzdHJhdGlvbi1teXVpKS4KU3R1ZGVudHMgY2FuIGZpbmQgcG9saWNpZXMgb24gZHJvcHBpbmcgQ0xBUyBjb3Vyc2VzIFtoZXJlXShodHRwczovL2NsYXMudWlvd2EuZWR1L3N0dWRlbnRzL3N0dWRlbnRzLWFjYWRlbWljLXBvbGljaWVzL3JlZ2lzdHJhdGlvbi1wb2xpY2llcyNkcm9wcGluZykuCgojIEZlZWRiYWNrIGFib3V0IHRoZSBDb3Vyc2UgeyNmZWVkYmFja30KCkkgd2VsY29tZSBmZWVkYmFjayBhdCBhbnkgcG9pbnQgZHVyaW5nIHRoZSBjbGFzcy4KSWYgeW91IGhhdmUgY29tbWVudHMgb24gdGhlIGNsYXNzIG9yIG15IHRlYWNoaW5nLCBwbGVhc2UgZmVlbCBmcmVlIHRvIG1lZXQgd2l0aCBtZSBkdXJpbmcgb2ZmaWNlIGhvdXJzLgoKIyMgU3R1ZGVudCBDb21wbGFpbnRzIHsjY29tcGxhaW50c30KClN0dWRlbnRzIHdpdGggYSBjb21wbGFpbnQgYWJvdXQgYSBncmFkZSBvciBhIHJlbGF0ZWQgbWF0dGVyIHNob3VsZCBmaXJzdCBkaXNjdXNzIHRoZSBzaXR1YXRpb24gd2l0aCB0aGUgaW5zdHJ1Y3RvciwgYW5kIGZpbmFsbHkgd2l0aCB0aGUgREVPIChDaGFpcikgb2YgdGhlIGRlcGFydG1lbnQsIHNjaG9vbCwgb3IgcHJvZ3JhbSBvZmZlcmluZyB0aGUgY291cnNlLgpTb21ldGltZXMgc3R1ZGVudHMgd2lsbCBiZSByZWZlcnJlZCB0byB0aGUgZGVwYXJ0bWVudCBvciBwcm9ncmFtJ3MgRGlyZWN0b3Igb2YgVW5kZXJncmFkdWF0ZSBTdHVkaWVzIChEVVMpIG9yIERpcmVjdG9yIG9mIEdyYWR1YXRlIFN0dWRpZXMgKERHUykuClN0dWRlbnRzIHNob3VsZCBjb250YWN0IFtDTEFTIFVuZGVyZ3JhZHVhdGUgUHJvZ3JhbXNdKGh0dHBzOi8vY2xhcy51aW93YS5lZHUvc3R1ZGVudHMvaGFuZGJvb2svc3R1ZGVudC1yaWdodHMtcmVzcG9uc2liaWxpdGllcyNyaWdodHMpIGZvciBzdXBwb3J0IHdoZW4gdGhlIG1hdHRlciBpcyBub3QgcmVzb2x2ZWQgYXQgdGhlIHByZXZpb3VzIGxldmVsLgoKIyBDb21tdW5pY2F0aW9uOiBVSSBFbWFpbCB7I2VtYWlsfQoKU3R1ZGVudHMgYXJlIHJlc3BvbnNpYmxlIGZvciBhbGwgb2ZmaWNpYWwgY29ycmVzcG9uZGVuY2VzIHNlbnQgdG8gdGhlaXIgVUkgZW1haWwgYWRkcmVzcyAodWlvd2EuZWR1KSBhbmQgbXVzdCB1c2UgdGhpcyBhZGRyZXNzIGZvciBhbnkgY29tbXVuaWNhdGlvbiB3aXRoIGluc3RydWN0b3JzIG9yIHN0YWZmIGluIHRoZSBVSSBjb21tdW5pdHkuCkZvciB0aGUgcHJpdmFjeSBhbmQgdGhlIHByb3RlY3Rpb24gb2Ygc3R1ZGVudCByZWNvcmRzLCBVSSBmYWN1bHR5IGFuZCBzdGFmZiBjYW4gb25seSBjb3JyZXNwb25kIHdpdGggVUkgZW1haWwgYWRkcmVzc2VzLgoKIyMgT3RoZXIgRXhwZWN0YXRpb25zIG9mIFN0dWRlbnQgUGVyZm9ybWFuY2UgeyNvdGhlckV4cGVjdGF0aW9uc30KClN0dWRlbnRzIGhhdmUgdGhlIHJpZ2h0IHRvIGEgZGlzdHJhY3Rpb24tZnJlZSBsZWFybmluZyBlbnZpcm9ubWVudC4KWW91IGhhdmUgdGhlIHJlc3BvbnNpYmlsaXR5IHRvIGhlbHAgY3JlYXRlIHN1Y2ggYSBjbGFzc3Jvb20gZW52aXJvbm1lbnQuClBsZWFzZSB0cmVhdCBvdGhlciBzdHVkZW50cyBpbiB0aGUgY2xhc3MsIHRoZSBUQSwgYW5kIHRoZSBpbnN0cnVjdG9yIHdpdGggcmVzcGVjdC4KU3R1ZGVudHMgYXJlIGV4cGVjdGVkIHRvIGhlbHAgZWFjaCBvdGhlciBsZWFybiBhbmQgdG8gY29udHJpYnV0ZSBvdmVyYWxsIHRvIHRoZSBsZWFybmluZyBlbnZpcm9ubWVudCBvZiB0aGUgY291cnNlLgpBcnJpdmluZyBwcmVwYXJlZCBmb3IgY2xhc3MgaXMgcGFydCBvZiB0aGlzIGV4cGVjdGF0aW9uLgoKIyBVbml2ZXJzaXR5IFBvbGljaWVzIHsjVUlvd2FQb2xpY2llc30KCltVbml2ZXJzaXR5IFBvbGljaWVzXShodHRwczovL3Byb3Zvc3QudWlvd2EuZWR1L3N0dWRlbnQtY291cnNlLXBvbGljaWVzKQoKW0FjY29tbW9kYXRpb25zIGZvciBTdHVkZW50cyB3aXRoIERpc2FiaWxpdGllc10oaHR0cHM6Ly9wcm92b3N0LnVpb3dhLmVkdS9zdHVkZW50LWNvdXJzZS1wb2xpY2llcylcClRoZSBVbml2ZXJzaXR5IGlzIGNvbW1pdHRlZCB0byBwcm92aWRpbmcgYW4gZWR1Y2F0aW9uYWwgZXhwZXJpZW5jZSB0aGF0IGlzIGFjY2Vzc2libGUgdG8gYWxsIHN0dWRlbnRzLgpJZiBhIHN0dWRlbnQgaGFzIGEgZGlhZ25vc2VkIGRpc2FiaWxpdHkgb3Igb3RoZXIgZGlzYWJsaW5nIGNvbmRpdGlvbiB0aGF0IG1heSBpbXBhY3QgdGhlIHN0dWRlbnQncyBhYmlsaXR5IHRvIGNvbXBsZXRlIHRoZSBjb3Vyc2UgcmVxdWlyZW1lbnRzIGFzIHN0YXRlZCBpbiB0aGUgc3lsbGFidXMsIHRoZSBzdHVkZW50IG1heSBzZWVrIGFjY29tbW9kYXRpb25zIHRocm91Z2ggW1N0dWRlbnQgRGlzYWJpbGl0eSBTZXJ2aWNlc10oaHR0cHM6Ly9zZHMuc3R1ZGVudGxpZmUudWlvd2EuZWR1L3N0dWRlbnRzKSAoU0RTKS4KU0RTIGlzIHJlc3BvbnNpYmxlIGZvciBtYWtpbmcgW0xldHRlcnMgb2YgQWNjb21tb2RhdGlvbiAoTE9BKV0oaHR0cHM6Ly9zZHMuc3R1ZGVudGxpZmUudWlvd2EuZWR1L3N0dWRlbnRzL2xldHRlci1hY2NvbW1vZGF0aW9ucy1sb2EpIGF2YWlsYWJsZSB0byB0aGUgc3R1ZGVudC4KPHU+VGhlIHN0dWRlbnQgbXVzdCBwcm92aWRlIGEgTE9BIHRvIHRoZSBpbnN0cnVjdG9yIGFzIGVhcmx5IGluIHRoZSBzZW1lc3RlciBhcyBwb3NzaWJsZSwgYnV0IHJlcXVlc3RzIG5vdCBtYWRlIGF0IGxlYXN0IHR3byB3ZWVrcyBwcmlvciB0byB0aGUgc2NoZWR1bGVkIGFjdGl2aXR5IGZvciB3aGljaCBhbiBhY2NvbW1vZGF0aW9uIGlzIHNvdWdodCBtYXkgbm90IGJlIGFjY29tbW9kYXRlZC48L3U+ClRoZSBMT0Egd2lsbCBzcGVjaWZ5IHdoYXQgcmVhc29uYWJsZSBjb3Vyc2UgYWNjb21tb2RhdGlvbnMgdGhlIHN0dWRlbnQgaXMgZWxpZ2libGUgZm9yIGFuZCB0aG9zZSB0aGUgaW5zdHJ1Y3RvciBzaG91bGQgcHJvdmlkZS4KQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgb24gdGhlIFtTRFMgd2Vic2l0ZV0oaHR0cHM6Ly9zZHMuc3R1ZGVudGxpZmUudWlvd2EuZWR1L3N0dWRlbnRzL2FwcGx5KS4KCltDbGFzcyBSZWNvcmRpbmdzXShodHRwczovL3Byb3Zvc3QudWlvd2EuZWR1L3N0dWRlbnQtY291cnNlLXBvbGljaWVzKVwKU3R1ZGVudHMgbWF5IGJlIGVucm9sbGVkIGluIGEgY2xhc3Mgd2hlcmUgc29tZSBzZXNzaW9ucyB3aWxsIGJlIHJlY29yZGVkIG9yIGxpdmUtc3RyZWFtZWQuClN1Y2ggcmVjb3JkaW5ncy9zdHJlYW1pbmcgd2lsbCBvbmx5IGJlIGF2YWlsYWJsZSB0byBzdHVkZW50cyByZWdpc3RlcmVkIGZvciB0aGUgY2xhc3MuClRoZXNlIHJlY29yZGluZ3MgYXJlIHRoZSBpbnRlbGxlY3R1YWwgcHJvcGVydHkgb2YgdGhlIGluc3RydWN0b3IgYW5kIHRoZXkgbWF5IG5vdCBiZSBzaGFyZWQgb3IgcmVwcm9kdWNlZCB3aXRob3V0IHRoZSBleHBsaWNpdCwgd3JpdHRlbiBjb25zZW50IG9mIHRoZSBpbnN0cnVjdG9yLgpGdXJ0aGVyLCBzdHVkZW50cyBtYXkgbm90IHNoYXJlIHRoZXNlIHNlc3Npb25zIHdpdGggdGhvc2Ugbm90IGluIHRoZSBjbGFzcyBvciB1cGxvYWQgdGhlbSB0byBhbnkgb3RoZXIgb25saW5lIGVudmlyb25tZW50LgpEb2luZyBzbyB3b3VsZCBiZSBhIGJyZWFjaCBvZiB0aGUgQ29kZSBvZiBTdHVkZW50IENvbmR1Y3QsIGFuZCwgaW4gc29tZSBjYXNlcywgYSB2aW9sYXRpb24gb2Ygc3RhdGUgYW5kIGZlZGVyYWwgbGF3LCBpbmNsdWRpbmcgdGhlIEZlZGVyYWwgRWR1Y2F0aW9uIFJpZ2h0cyBhbmQgUHJpdmFjeSBBY3QgKEZFUlBBKS4KClRoZSB1bmF1dGhvcml6ZWQgdmlkZW8gb3IgYXVkaW8gcmVjb3JkaW5nIG9mIGFjYWRlbWljIGFjdGl2aXRpZXMgKGUuZy4sIGxlY3R1cmVzLCBjb3Vyc2UgZGlzY3Vzc2lvbnMsIG9mZmljZSBob3VycywgZXRjLikgYnkgYSBzdHVkZW50IGlzIHByb2hpYml0ZWQuClN0dWRlbnRzIHdpdGggYSByZWFzb25hYmxlIGFjY29tbW9kYXRpb24gZm9yIHJlY29yZGluZyBhcHByb3ZlZCBieSBTdHVkZW50IERpc2FiaWxpdHkgU2VydmljZXMgc2hvdWxkIG5vdGlmeSBlYWNoIGluc3RydWN0b3IgYW5kIHByb3ZpZGUgdGhlIExldHRlciBvZiBBY2NvbW1vZGF0aW9uIHByaW9yIHRvIHVzaW5nIHRoZSBhY2NvbW1vZGF0aW9uLgpBIHN0dWRlbnQgbWF5IHJlY29yZCBjbGFzc3Jvb20gYWN0aXZpdGllcyB3aXRoIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbiBmcm9tIHRoZSBpbnN0cnVjdG9yIGFuZCBub3RpY2UgdG8gb3RoZXIgc3R1ZGVudHMgaW4gdGhlIGNsYXNzIHRoYXQgYXVkaW8gb3IgdmlkZW8gcmVjb3JkaW5nIG1heSBvY2N1ci4KQW55IGFuZCBhbGwgY2xhc3Nyb29tIHJlY29yZGluZyBtdXN0IGJlIGZvciBwZXJzb25hbCBhY2FkZW1pYyB1c2Ugb25seS4KVGhlIGRpc3RyaWJ1dGlvbiwgc2hhcmluZywgc2FsZSwgb3IgcG9zdGluZyBvZiByZWNvcmRpbmdzIG9uIHRoZSBpbnRlcm5ldCAoaW5jbHVkaW5nIHNvY2lhbCBtZWRpYSksIGluIHdob2xlIG9yIGluIHBhcnQsIGlzIHByb2hpYml0ZWQgYW5kIGRvaW5nIHNvIG1heSBiZSBhIHZpb2xhdGlvbiBvZiB0aGUgQ29kZSBvZiBTdHVkZW50IExpZmUgYW5kL29yIHN0YXRlIG9yIGZlZGVyYWwgcHJpdmFjeSwgY29weXJpZ2h0LCBvciBvdGhlciBsYXdzLgoKLSBbRnJlZSBTcGVlY2ggYW5kIEV4cHJlc3Npb25dKGh0dHBzOi8vcHJvdm9zdC51aW93YS5lZHUvc3R1ZGVudC1jb3Vyc2UtcG9saWNpZXMpCi0gW05vbi1EaXNjcmltaW5hdGlvbl0oaHR0cHM6Ly9wcm92b3N0LnVpb3dhLmVkdS9zdHVkZW50LWNvdXJzZS1wb2xpY2llcykKLSBbQWNjb21tb2RhdGlvbnMgZm9yIFN0dWRlbnRzIHdpdGggRGlzYWJpbGl0aWVzXShodHRwczovL3Byb3Zvc3QudWlvd2EuZWR1L3N0dWRlbnQtY291cnNlLXBvbGljaWVzKQotIFtBYnNlbmNlcyBmcm9tIENsYXNzXShodHRwczovL3Byb3Zvc3QudWlvd2EuZWR1L3N0dWRlbnQtY291cnNlLXBvbGljaWVzKQotIFtBYnNlbmNlcyBmb3IgUmVsaWdpb3VzIEhvbHkgRGF5c10oaHR0cHM6Ly9wcm92b3N0LnVpb3dhLmVkdS9zdHVkZW50LWNvdXJzZS1wb2xpY2llcykKLSBbQWJzZW5jZXMgZm9yIE1pbGl0YXJ5IFNlcnZpY2UgT2JsaWdhdGlvbnNdKGh0dHBzOi8vcHJvdm9zdC51aW93YS5lZHUvc3R1ZGVudC1jb3Vyc2UtcG9saWNpZXMpCi0gW0NsYXNzcm9vbSBFeHBlY3RhdGlvbnNdKGh0dHBzOi8vcHJvdm9zdC51aW93YS5lZHUvc3R1ZGVudC1jb3Vyc2UtcG9saWNpZXMpCi0gW1NleHVhbCBIYXJhc3NtZW50L01pc2NvbmR1Y3QgYW5kIFN1cHBvcnRpdmUgTWVhc3VyZXNdKGh0dHBzOi8vcHJvdm9zdC51aW93YS5lZHUvc3R1ZGVudC1jb3Vyc2UtcG9saWNpZXMpCi0gW0NvbmZsaWN0IFJlc29sdXRpb25dKGh0dHBzOi8vcHJvdm9zdC51aW93YS5lZHUvc3R1ZGVudC1jb3Vyc2UtcG9saWNpZXMpCi0gW01lbnRhbCBIZWFsdGhdKGh0dHBzOi8vcHJvdm9zdC51aW93YS5lZHUvc3R1ZGVudC1jb3Vyc2UtcG9saWNpZXMpCi0gW0Jhc2ljIE5lZWRzIGFuZCBTdHVkZW50IFN1cHBvcnRdKGh0dHBzOi8vcHJvdm9zdC51aW93YS5lZHUvc3R1ZGVudC1jb3Vyc2UtcG9saWNpZXMpCi0gW0NsYXNzIFJlY29yZGluZ3NdKGh0dHBzOi8vcHJvdm9zdC51aW93YS5lZHUvc3R1ZGVudC1jb3Vyc2UtcG9saWNpZXMpCgojIFdoZXJlIHRvIEdldCBBY2FkZW1pYyBTdXBwb3J0IGZvciBUaGlzIENvdXJzZSB7I2FjYWRlbWljLXN1cHBvcnR9CgotIERyb3AtaW4gc3R1ZHkgZ3JvdXBzIGFuZCBvbmUtb24tb25lIHR1dG9yaW5nOiBzdHVkZW50IGRyb3AtaW4gaG91cnMgb2YgdGhlIFRBIGFuZCBpbnN0cnVjdG9yCi0gRm9ybWFsIHR1dG9yaW5nOiBUdXRvciBJb3dhOiBodHRwczovL3R1dG9yLnVpb3dhLmVkdQotIFVJIFdyaXRpbmcgQ2VudGVyOiBodHRwczovL3dyaXRpbmdjZW50ZXIudWlvd2EuZWR1Ci0gQWNhZGVtaWMgYWNjb21tb2RhdGlvbnM6IGh0dHBzOi8vc2RzLnN0dWRlbnRsaWZlLnVpb3dhLmVkdQoKIyBNZW50YWwgSGVhbHRoIFJlc291cmNlcyBhbmQgU3R1ZGVudCBTdXBwb3J0IHsjbWVudGFsLWhlYWx0aH0KClN0dWRlbnRzIGFyZSBlbmNvdXJhZ2VkIHRvIGJlIG1pbmRmdWwgb2YgdGhlaXIgbWVudGFsIGhlYWx0aCBhbmQgc2VlayBoZWxwIGFzIGEgcHJldmVudGl2ZSBtZWFzdXJlIG9yIGlmIGZlZWxpbmcgb3ZlcndoZWxtZWQgYW5kL29yIHN0cnVnZ2xpbmcgdG8gbWVldCBjb3Vyc2UgZXhwZWN0YXRpb25zLgpTdHVkZW50cyBhcmUgZW5jb3VyYWdlZCB0byB0YWxrIHRvIHRoZWlyIGluc3RydWN0b3IgZm9yIGFzc2lzdGFuY2Ugd2l0aCBzcGVjaWZpYyBjbGFzcy1yZWxhdGVkIGNvbmNlcm5zLgpGb3IgYWRkaXRpb25hbCBzdXBwb3J0IGFuZCBjb3Vuc2VsaW5nLCBzdHVkZW50cyBhcmUgZW5jb3VyYWdlZCB0byBjb250YWN0IFVuaXZlcnNpdHkgQ291bnNlbGluZyBTZXJ2aWNlIChVQ1MpLgpJbmZvcm1hdGlvbiBhYm91dCBVQ1MsIGluY2x1ZGluZyByZXNvdXJjZXMgYW5kIGhvdyB0byBzY2hlZHVsZSBhbiBhcHBvaW50bWVudCwgY2FuIGJlIGZvdW5kIGF0IFtjb3Vuc2VsaW5nLnVpb3dhLmVkdV0oaHR0cDovL2NvdW5zZWxpbmcudWlvd2EuZWR1KS4KRmluZCBvdXQgbW9yZSBhYm91dCBVSSBtZW50YWwgaGVhbHRoIHNlcnZpY2VzIGF0OiBbbWVudGFsaGVhbHRoLnVpb3dhLmVkdV0oaHR0cDovL21lbnRhbGhlYWx0aC51aW93YS5lZHUpLCBpbmNsdWRpbmcgdGhlIDI0LTcgW1VJIFN1cHBvcnQgYW5kIENyaXNpcyBMaW5lXShodHRwczovL21lbnRhbGhlYWx0aC51aW93YS5lZHUvdWktc3VwcG9ydC1hbmQtY3Jpc2lzLWxpbmUpLgoKQWRkaXRpb25hbGx5LCB0aGUgT2ZmaWNlIG9mIHRoZSBEZWFuIG9mIFN0dWRlbnRzIGNhbiBoZWxwIHN0dWRlbnRzIG5hdmlnYXRlIHBlcnNvbmFsIGNyaXNpcyBzaXR1YXRpb25zLgpUaGV5IGNhbiBwcm92aWRlIG9uZS1vbi1vbmUgc3VwcG9ydCwgaGVscCB3aXRoIGlkZW50aWZ5aW5nIG9wdGlvbnMsIGFuZCBhY2Nlc3MgdG8gW2Jhc2ljIG5lZWRzIHJlc291cmNlcyAoc3VjaCBhcyBmb29kLCByZW50LCBjaGlsZGNhcmUsIGV0Yy4pXShodHRwOi8vYmFzaWNuZWVkcy51aW93YS5lZHUpLgpTdHVkZW50IENhcmUgYW5kIEFzc2lzdGFuY2U6IDEzMiBJTVUsIFtkb3MtYXNzaXN0YW5jZUB1aW93YS5lZHVdKG1haWx0bzpkb3MtYXNzaXN0YW5jZUB1aW93YS5lZHUpLCBvciAzMTktMzM1LTExNjIgYW5kIG1vcmUgaW5mbzogW2Rvcy51aW93YS5lZHUvYXNzaXN0YW5jZV0oaHR0cHM6Ly9kb3MudWlvd2EuZWR1L2Fzc2lzdGFuY2UpCgpJZiB5b3UgZmVlbCB0aGF0IHlvdSBvciBzb21lb25lIHlvdSBrbm93IG1heSBiZSBzdHJ1Z2dsaW5nIHdpdGggYW4gYWNhZGVtaWMsIGVtb3Rpb25hbCwgb3IgcHN5Y2hvbG9naWNhbCBwcm9ibGVtLCB0aGUgZm9sbG93aW5nIG9yZ2FuaXphdGlvbnMgYXJlIGF2YWlsYWJsZSBmb3IgYXNzaXN0YW5jZToKCnwgU2VydmljZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb250YWN0IEluZm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAp8IFVuaXZlcnNpdHkgb2YgSW93YSBBY2FkZW1pYyBBZHZpc2luZyBDZW50ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMzUzLTU3MDAsIGh0dHBzOi8vYWR2aXNpbmdjZW50ZXIudWlvd2EuZWR1ICAgICAgICAgICAgICAgICAgICAgICB8CnwgVW5pdmVyc2l0eSBDb3Vuc2VsaW5nIFNlcnZpY2VzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzMzUtNzI5NCwgaHR0cHM6Ly93d3cudWlvd2EuZWR1L3VjcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBTdHVkZW50IEhlYWx0aCBTZXJ2aWNlIC0gTWVudGFsIEhlYWx0aCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDMzNS04Mzk0LCBodHRwczovL3N0dWRlbnRoZWFsdGgudWlvd2EuZWR1L3NlcnZpY2VzL3BzeWNoaWF0cnkgICAgfAp8IFVuaXZlcnNpdHkgb2YgSW93YSBIb3NwaXRhbHMgYW5kIENsaW5pY3MgQWR1bHQgUHN5Y2hpYXRyeSBTZXJ2aWNlcyBDbGluaWMgIHwgMzUzLTYzMTQsIGh0dHBzOi8vd3d3LnVpaGVhbHRoY2FyZS5vcmcvUHN5Y2hpYXRyeSAgICAgICAgICAgICAgICB8CnwgU2Vhc2hvcmUgQ2xpbmljIChpbiB0aGUgVUkgRGVwYXJ0bWVudCBvZiBQc3ljaG9sb2dpY2FsIGFuZCBCcmFpbiBTY2llbmNlcykgfCAzMzUtMjQ2NywgaHR0cHM6Ly9wc3ljaG9sb2d5LnVpb3dhLmVkdS9yZXNvdXJjZXMvc2Vhc2hvcmUtY2xpbmljIHwKfCBXb21lbidzIFJlc291cmNlIGFuZCBBY3Rpb24gQ2VudGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDMzNS0xNDg2LCBodHRwczovL3dyYWMudWlvd2EuZWR1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFJhcGUgVmljdGltIEFkdm9jYWN5IFByb2dyYW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMzE5LTMzNS02MDAwIG9yIDgwMC0yMjgtMTYyNSwgaHR0cHM6Ly93d3cudWlvd2EuZWR1L35ydmFwICAgICAgICB8CnwgT2ZmaWNlIG9mIFNleHVhbCBNaXNjb25kdWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzMTktMzM1LTYyMDAsIGh0dHBzOi8vb3NtcmMudWlvd2EuZWR1ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBDb21tVW5pdHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDg1NS0zMjUtNDI5NiwgaHR0cHM6Ly9idWlsdGJ5Y29tbXVuaXR5Lm9yZy9jcmlzaXMgICAgICAgICAgICAgICAgfAp8IENvbW11bml0eSAmIEZhbWlseSBSZXNvdXJjZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMzUxLTQzNTcsIGh0dHBzOi8vd3d3LmNmcmhlbHBzLm9yZy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cgo8dT5JZiB5b3Ugb3Igc29tZW9uZSB5b3Uga25vdyBpcyBjb250ZW1wbGF0aW5nIHN1aWNpZGU8L3U+LCBlaXRoZXIgY2FsbCBvciB0ZXh0IHRoZSBTdWljaWRlIGFuZCBDcmlzaXMgTGlmZWxpbmUgYXQgOTg4LCBvciBjYWxsIDkxMS4KCiMgRGlzY2xhaW1lciB7I2Rpc2NsYWltZXJ9CgpUaGlzIHN5bGxhYnVzIGlzIHN1YmplY3QgdG8gY2hhbmdlLgpBbnkgY2hhbmdlcyB3aWxsIGJlIGRpc2N1c3NlZCBpbiBjbGFzcywgdmlhIGVtYWlsLCBhbmQvb3Igb24gW0lDT05dKGh0dHBzOi8vaWNvbi51aW93YS5lZHUpLgo=