6 Applications of Artificial Intelligence & Machine Learning in Financial Services

[fusion_builder_container hundred_percent=”no” equal_height_columns=”no” menu_anchor=”” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”” id=”” background_color=”” background_image=”” background_position=”center center” background_repeat=”no-repeat” fade=”no” background_parallax=”none” parallax_speed=”0.3″ video_mp4=”” video_webm=”” video_ogv=”” video_url=”” video_aspect_ratio=”16:9″ video_loop=”yes” video_mute=”yes” overlay_color=”” video_preview_image=”” border_size=”” border_color=”” border_style=”solid” padding_top=”” padding_bottom=”” padding_left=”” padding_right=””][fusion_builder_row][fusion_builder_column type=”1_1″ layout=”1_1″ background_position=”left top” background_color=”” border_size=”” border_color=”” border_style=”solid” border_position=”all” spacing=”yes” background_image=”” background_repeat=”no-repeat” padding_top=”” padding_right=”” padding_bottom=”” padding_left=”” margin_top=”0px” margin_bottom=”0px” class=”” id=”” animation_type=”” animation_speed=”0.3″ animation_direction=”left” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” center_content=”no” last=”no” min_height=”” hover_type=”none” link=””][fusion_separator style_type=”default” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”” id=”” sep_color=”rgba(224,222,222,0)” top_margin=”” bottom_margin=”50px” border_size=”” icon=”” icon_circle=”” icon_circle_color=”” width=”” alignment=”center” /][fusion_text columns=”” column_min_width=”” column_spacing=”” rule_style=”default” rule_size=”” rule_color=”” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”” id=””]

The rise of Artificial Intelligence and machine learning in finance is causing disruption on a massive scale. Major banks are increasingly turning to AI in financial services to improve existing processes and develop new innovations. A recent PWC study found AI has the potential to comprise USD $15.7 trillion of the world economy by 2030, signalling a huge potential sector for multiple industries including financial services. This article will highlight 6 applications of AI in Finance today to give professionals an idea of what is possible and will also suggest some next steps to build a deeper understanding of artificial intelligence in financial services & machine learning applications in finance. Specifically, it will provide an overview of how AI applies to wealth and asset management, insurance, customer service, robotic process automation, credit scoring & compliance and fraud detection.

6 Applications of Artificial Intelligence in Finance

Wealth and Asset Management

Did you know the worlds biggest investment group, BlackRock with $6.3 trillion assets under management now has a dedicated AI Lab?

A key differentiator in the world of wealth management is the ability to determine which assets and securities will yield the best results. In this sense, Artificial Intelligence has a huge role to play in giving wealth managers a competitive edge. In 2014, UBS pursued an ambitious plan to acquire AI firm Sqreem technologies to give their wealth advisors the ability to provide tailored advice to their wealthy clientele. Others have followed suit, and in an effort to better predict market trends and make better performance calculations, organisations such as Blackstone, S&P Global and Euronext are adopting machine learning in finance to improve forecasting and, ultimately, increase value for their clients.

Insurance

“98% of insurance executives believe artificial intelligence will play a disruptive role in the industry”

When you take a step back to look at the inner workings of insurance industry it becomes clear that AI has a wide range of applications. For one, the industry is driven by data. An insurer’s key role is to understand as much about you as possible before making an assessment – about your lifestyle, your education, your health and so on. Given AI algorithms enable better modelling and the fact that developments in IOT have led to the explosion of available data points (just think about wearables) it means insurers have access to a new formula to understand you and serve you better.

For example, US startup Lemonade employed a bot called ‘Jim’ who took less than 3 seconds to settle an insurance claim by executing multiple back-end processes concurrently. On the front-end, it’s also an example of a big step forward in customer service and product development.

Another US startup called MetroMile is using AI to develop an entirely new business model in which the insurance premium is calculated based on usage by installing an IOT device on cars to pull data on the user.

Customer Service

The Millennial Disruption Index reports that 71% of Millennials would rather go the dentist than listen to what a bank has to tell them!

The fact is that a lot of the new Fintech upstarts that are disrupting the industry have built a solid reputation of excellent customer service by utilising emergent AI technologies such as NLP to provide instant service. If you’ve ever used Revolut’s banking app then their support service utilises smart chat to direct your enquiry to the relevant support staff. So no need to go through multiple hoops to speak to the right person. Taking it a step further, machines can now fully address customer queries where relevant. Take for example Royal Bank of Scotland, who as early as 2016, installed an AI assistant Called Luvo to help users deal with user queries and when it’s not able to the system hands over to an actual human. The rise of these robo-advisors will seemingly re-define customer experiences and give incumbents a tool to bring up their A game.

Robotic Process Automation

Did you know that the global RPA market is expected to reach USD 8.75 billion by 2024?

RPA is software that can automate repetitive tasks normally done by humans. Understanding this, one can look at the middle and front office processes in financial services (think deposit processing, underwriting support, billing and so on) and see the benefits for firms to employ this technology. From increased productivity to better time-management and huge cost savings, the advantages are clear.

A leader in the field of RPA is Romanian Unicorn UiPath, which offers banking automation to a wide range of clients in the banking sector and their rapid global expansion serves as a barometer of that banks are increasingly turning to RPA to bump up the bottom line.

Credit Scoring

AI and machine learning are helping 80% of the Indian population with no credit score gain access to credit. How, you might ask?

New Fintech companies such as Upstarts is using AI to gather alternate data to prove creditworthiness. This alternate data may take multiple forms that ultimately analyse a user’s digital footprint to gather data to help make lending decisions. In the case of Upstart, the company analyses your employment history, educational background and other sources of data such as social media to make credit decisions. Upstart is not alone with a host of companies employing machine learning in finance, especially those targeting emerging markets, such as Cashe in Mumbai, where billions remained unbanked to make credit decisions.

It’s a brave new word and AI-powered algorithms are already disrupting the lending industry to enable millions of undeserved customers to access financing options previously out of reach.

Compliance and Fraud Detection

Did you know that the regulatory compliance technology market is expected to be over worth over $118 billion by 2020?

Following the financial crisis of 2009, firms operating in the financial services are under immense pressure to be compliant with complex regulatory frameworks designed to protect the system against undue risk and fraudulent behaviour. The process of compliance is in itself long and arduous with mountains of paperwork and legal documents often involved. A prime example AI in action to help streamline the processes is JP Morgans implementation of COIN, a machine learning system that completed 360,000 hours of compliance work in seconds!

More than just helping to analyse documents, AI is also helping to redefine KYC and AML processes to help reduce the risk of fraud. Using advanced predictive analytics, banks have the ability to analyse massive data sets that pick up on suspicious activities. In early 2018, HSBC integrated software from UK startup Quantexa, to pick up on fraudulent activities and at a significant cost reduction.

How you can be part of the AI revolution in Finance

There is increasing industry importance on the introduction and implementation of Artificial Intelligence. As a result, having a robust understanding of AI, its use cases and its best implementations is vitally important for industry success.

Fortunately, CFTE has formed AI in Finance— a leading programme which allows participants to learn from senior industry leaders who hail from the large financial institutions, fast growing startups and regulatory agencies. Featuring 18 guest speakers and 5 senior lecturers, learners will understand how AI transforms finance. Designed for those novices or professionals who want to be part of this flourishing industry (and with no prerequisites) — join the AI revolution in Finance today!

If you’d like to learn more about the course speakers, content and structure, please click the button below where you can learn more about artificial intelligence & machine learning applications in finance, the course itself and download the full prospectus. You can also subscribe to our weekly newsletter after the jump!

This is an updated version of a blog originally published May 23rd 2018. Updated on December 18th 2018.

[fusion_button link=”//www.cfte.education/aifinance?utm_source=Blog&utm_medium=banner&utm_campaign=Applications%20of%20AI%20in%20Finance” title=”” target=”_self” link_attributes=”” alignment=”center” modal=”” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”” id=”” color=”default” button_gradient_top_color=”” button_gradient_bottom_color=”” button_gradient_top_color_hover=”” button_gradient_bottom_color_hover=”” accent_color=”” accent_hover_color=”” type=”” bevel_color=”” border_width=”” size=”xlarge” stretch=”default” shape=”” icon=”” icon_position=”left” icon_divider=”no” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=””]Learn More[/fusion_button] [/fusion_text][fusion_separator style_type=”default” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”” id=”” sep_color=”rgba(255,252,252,0)” top_margin=”50px” bottom_margin=”” border_size=”” icon=”” icon_circle=”” icon_circle_color=”” width=”” alignment=”center” /][/fusion_builder_column][fusion_builder_column type=”1_1″ layout=”1_1″ spacing=”” center_content=”no” link=”” target=”_self” min_height=”” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”” id=”” background_color=”” background_image=”” background_position=”left top” background_repeat=”no-repeat” hover_type=”none” border_size=”0″ border_color=”” border_style=”solid” border_position=”all” padding_top=”” padding_right=”” padding_bottom=”” padding_left=”” margin_top=”” margin_bottom=”” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=”” last=”no”][fusion_code]PHN0eWxlPgogI19mb3JtXzlfIHsgZm9udC1zaXplOjE0cHg7IGxpbmUtaGVpZ2h0OjEuNjsgZm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgc2Fucy1zZXJpZjsgbWFyZ2luOjA7IH0KICNfZm9ybV85XyAqIHsgb3V0bGluZTowOyB9CiAuX2Zvcm1faGlkZSB7IGRpc3BsYXk6bm9uZTsgdmlzaWJpbGl0eTpoaWRkZW47IH0KIC5fZm9ybV9zaG93IHsgZGlzcGxheTpibG9jazsgdmlzaWJpbGl0eTp2aXNpYmxlOyB9CiAjX2Zvcm1fOV8uX2Zvcm0tdG9wIHsgdG9wOjA7IH0KICNfZm9ybV85Xy5fZm9ybS1ib3R0b20geyBib3R0b206MDsgfQogI19mb3JtXzlfLl9mb3JtLWxlZnQgeyBsZWZ0OjA7IH0KICNfZm9ybV85Xy5fZm9ybS1yaWdodCB7IHJpZ2h0OjA7IH0KICNfZm9ybV85XyBpbnB1dFt0eXBlPSJ0ZXh0Il0sI19mb3JtXzlfIGlucHV0W3R5cGU9ImRhdGUiXSwjX2Zvcm1fOV8gdGV4dGFyZWEgeyBwYWRkaW5nOjZweDsgaGVpZ2h0OmF1dG87IGJvcmRlcjojOTc5Nzk3IDFweCBzb2xpZDsgYm9yZGVyLXJhZGl1czo0cHg7IGNvbG9yOiMwMDAgIWltcG9ydGFudDsgZm9udC1zaXplOjEzcHg7IC13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94OyAtbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDsgYm94LXNpemluZzpib3JkZXItYm94OyB9CiAjX2Zvcm1fOV8gdGV4dGFyZWEgeyByZXNpemU6bm9uZTsgfQogI19mb3JtXzlfIC5fc3VibWl0IHsgLXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7IGN1cnNvcjpwb2ludGVyOyBmb250LWZhbWlseTphcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOjE0cHg7IHRleHQtYWxpZ246Y2VudGVyOyBiYWNrZ3JvdW5kOiMzMzMgIWltcG9ydGFudDsgYm9yZGVyOjAgIWltcG9ydGFudDsgLW1vei1ib3JkZXItcmFkaXVzOjRweCAhaW1wb3J0YW50OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6NHB4ICFpbXBvcnRhbnQ7IGJvcmRlci1yYWRpdXM6NHB4ICFpbXBvcnRhbnQ7IGNvbG9yOiNmZmYgIWltcG9ydGFudDsgcGFkZGluZzoxMHB4ICFpbXBvcnRhbnQ7IH0KICNfZm9ybV85XyAuX2Nsb3NlLWljb24geyBjdXJzb3I6cG9pbnRlcjsgYmFja2dyb3VuZC1pbWFnZTp1cmwoJ2h0dHBzOi8vZDIyNmFqNGFvMXQ2MXEuY2xvdWRmcm9udC5uZXQvZXNma3lqaDF1X2Zvcm1zLWNsb3NlLWRhcmsucG5nJyk7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYmFja2dyb3VuZC1zaXplOjE0LjJweCAxNC4ycHg7IHBvc2l0aW9uOmFic29sdXRlOyBkaXNwbGF5OmJsb2NrOyB0b3A6MTFweDsgcmlnaHQ6OXB4OyBvdmVyZmxvdzpoaWRkZW47IHdpZHRoOjE2LjJweDsgaGVpZ2h0OjE2LjJweDsgfQogI19mb3JtXzlfIC5fY2xvc2UtaWNvbjpiZWZvcmUgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgfQogI19mb3JtXzlfIC5fZm9ybS1ib2R5IHsgbWFyZ2luLWJvdHRvbTozMHB4OyB9CiAjX2Zvcm1fOV8gLl9mb3JtLWltYWdlLWxlZnQgeyB3aWR0aDoxNTBweDsgZmxvYXQ6bGVmdDsgfQogI19mb3JtXzlfIC5fZm9ybS1jb250ZW50LXJpZ2h0IHsgbWFyZ2luLWxlZnQ6MTY0cHg7IH0KICNfZm9ybV85XyAuX2Zvcm0tYnJhbmRpbmcgeyBjb2xvcjojZmZmOyBmb250LXNpemU6MTBweDsgY2xlYXI6Ym90aDsgdGV4dC1hbGlnbjpsZWZ0OyBtYXJnaW4tdG9wOjMwcHg7IGZvbnQtd2VpZ2h0OjEwMDsgfQogI19mb3JtXzlfIC5fZm9ybS1icmFuZGluZyAuX2xvZ28geyBkaXNwbGF5OmJsb2NrOyB3aWR0aDoxMzBweDsgaGVpZ2h0OjE0cHg7IG1hcmdpbi10b3A6NnB4OyBiYWNrZ3JvdW5kLWltYWdlOnVybCgnaHR0cHM6Ly9kMjI2YWo0YW8xdDYxcS5jbG91ZGZyb250Lm5ldC9oaDl1anFndjVfYWNsb2dvX2xpLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MTMwcHggYXV0bzsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyB9CiAjX2Zvcm1fOV8gLl9mb3JtLWxhYmVsLCNfZm9ybV85XyAuX2Zvcm1fZWxlbWVudCAuX2Zvcm0tbGFiZWwgeyBmb250LXdlaWdodDpib2xkOyBtYXJnaW4tYm90dG9tOjVweDsgZGlzcGxheTpibG9jazsgfQogI19mb3JtXzlfLl9kYXJrIC5fZm9ybS1icmFuZGluZyB7IGNvbG9yOiMzMzM7IH0KICNfZm9ybV85Xy5fZGFyayAuX2Zvcm0tYnJhbmRpbmcgLl9sb2dvIHsgYmFja2dyb3VuZC1pbWFnZTp1cmwoJ2h0dHBzOi8vZDIyNmFqNGFvMXQ2MXEuY2xvdWRmcm9udC5uZXQvamZ0cTJjOHNfYWNsb2dvX2RrLnBuZycpOyB9CiAjX2Zvcm1fOV8gLl9mb3JtX2VsZW1lbnQgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgbWFyZ2luLWJvdHRvbToxMHB4OyBmb250LXNpemU6MDsgbWF4LXdpZHRoOjEwMCU7IH0KICNfZm9ybV85XyAuX2Zvcm1fZWxlbWVudCAqIHsgZm9udC1zaXplOjE0cHg7IH0KICNfZm9ybV85XyAuX2Zvcm1fZWxlbWVudC5fY2xlYXIgeyBjbGVhcjpib3RoOyB3aWR0aDoxMDAlOyBmbG9hdDpub25lOyB9CiAjX2Zvcm1fOV8gLl9mb3JtX2VsZW1lbnQuX2NsZWFyOmFmdGVyIHsgY2xlYXI6bGVmdDsgfQogI19mb3JtXzlfIC5fZm9ybV9lbGVtZW50IGlucHV0W3R5cGU9InRleHQiXSwjX2Zvcm1fOV8gLl9mb3JtX2VsZW1lbnQgaW5wdXRbdHlwZT0iZGF0ZSJdLCNfZm9ybV85XyAuX2Zvcm1fZWxlbWVudCBzZWxlY3QsI19mb3JtXzlfIC5fZm9ybV9lbGVtZW50IHRleHRhcmVhOm5vdCguZy1yZWNhcHRjaGEtcmVzcG9uc2UpIHsgZGlzcGxheTpibG9jazsgd2lkdGg6MTAwJTsgLXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7IC1tb3otYm94LXNpemluZzpib3JkZXItYm94OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH0KICNfZm9ybV85XyAuX2ZpZWxkLXdyYXBwZXIgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgfQogI19mb3JtXzlfIC5faW5saW5lLXN0eWxlIHsgZmxvYXQ6bGVmdDsgfQogI19mb3JtXzlfIC5faW5saW5lLXN0eWxlIGlucHV0W3R5cGU9InRleHQiXSB7IHdpZHRoOjE1MHB4OyB9CiAjX2Zvcm1fOV8gLl9pbmxpbmUtc3R5bGU6bm90KC5fY2xlYXIpICsgLl9pbmxpbmUtc3R5bGU6bm90KC5fY2xlYXIpIHsgbWFyZ2luLWxlZnQ6MjBweDsgfQogI19mb3JtXzlfIC5fZm9ybV9lbGVtZW50IGltZy5fZm9ybS1pbWFnZSB7IG1heC13aWR0aDoxMDAlOyB9CiAjX2Zvcm1fOV8gLl9jbGVhci1lbGVtZW50IHsgY2xlYXI6bGVmdDsgfQogI19mb3JtXzlfIC5fZnVsbF93aWR0aCB7IHdpZHRoOjEwMCU7IH0KICNfZm9ybV85XyAuX2Zvcm1fZnVsbF9maWVsZCB7IGRpc3BsYXk6YmxvY2s7IHdpZHRoOjEwMCU7IG1hcmdpbi1ib3R0b206MTBweDsgfQogI19mb3JtXzlfIGlucHV0W3R5cGU9InRleHQiXS5faGFzX2Vycm9yLCNfZm9ybV85XyB0ZXh0YXJlYS5faGFzX2Vycm9yIHsgYm9yZGVyOiNmMzdjN2IgMXB4IHNvbGlkOyB9CiAjX2Zvcm1fOV8gaW5wdXRbdHlwZT0iY2hlY2tib3giXS5faGFzX2Vycm9yIHsgb3V0bGluZTojZjM3YzdiIDFweCBzb2xpZDsgfQogI19mb3JtXzlfIC5fZXJyb3IgeyBkaXNwbGF5OmJsb2NrOyBwb3NpdGlvbjphYnNvbHV0ZTsgZm9udC1zaXplOjEzcHg7IHotaW5kZXg6MTAwMDAwMDE7IH0KICNfZm9ybV85XyAuX2Vycm9yLl9hYm92ZSB7IHBhZGRpbmctYm90dG9tOjRweDsgdG9wOi00MXB4OyByaWdodDowOyB9CiAjX2Zvcm1fOV8gLl9lcnJvci5fYmVsb3cgeyBwYWRkaW5nLXRvcDo0cHg7IHRvcDoxMDAlOyByaWdodDowOyB9CiAjX2Zvcm1fOV8gLl9lcnJvci5fYWJvdmUgLl9lcnJvci1hcnJvdyB7IGJvdHRvbTowOyByaWdodDoxNXB4OyBib3JkZXItbGVmdDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1yaWdodDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci10b3A6NXB4IHNvbGlkICNmMzdjN2I7IH0KICNfZm9ybV85XyAuX2Vycm9yLl9iZWxvdyAuX2Vycm9yLWFycm93IHsgdG9wOjA7IHJpZ2h0OjE1cHg7IGJvcmRlci1sZWZ0OjVweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLXJpZ2h0OjVweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLWJvdHRvbTo1cHggc29saWQgI2YzN2M3YjsgfQogI19mb3JtXzlfIC5fZXJyb3ItaW5uZXIgeyBwYWRkaW5nOjhweCAxMnB4OyBiYWNrZ3JvdW5kLWNvbG9yOiNmMzdjN2I7IGZvbnQtc2l6ZToxM3B4OyBmb250LWZhbWlseTphcmlhbCwgc2Fucy1zZXJpZjsgY29sb3I6I2ZmZjsgdGV4dC1hbGlnbjpjZW50ZXI7IHRleHQtZGVjb3JhdGlvbjpub25lOyAtd2Via2l0LWJvcmRlci1yYWRpdXM6NHB4OyAtbW96LWJvcmRlci1yYWRpdXM6NHB4OyBib3JkZXItcmFkaXVzOjRweDsgfQogI19mb3JtXzlfIC5fZXJyb3ItaW5uZXIuX2Zvcm1fZXJyb3IgeyBtYXJnaW4tYm90dG9tOjVweDsgdGV4dC1hbGlnbjpsZWZ0OyB9CiAjX2Zvcm1fOV8gLl9idXR0b24td3JhcHBlciAuX2Vycm9yLWlubmVyLl9mb3JtX2Vycm9yIHsgcG9zaXRpb246c3RhdGljOyB9CiAjX2Zvcm1fOV8gLl9lcnJvci1pbm5lci5fbm9fYXJyb3cgeyBtYXJnaW4tYm90dG9tOjEwcHg7IH0KICNfZm9ybV85XyAuX2Vycm9yLWFycm93IHsgcG9zaXRpb246YWJzb2x1dGU7IHdpZHRoOjA7IGhlaWdodDowOyB9CiAjX2Zvcm1fOV8gLl9lcnJvci1odG1sIHsgbWFyZ2luLWJvdHRvbToxMHB4OyB9CiAucGlrYS1zaW5nbGUgeyB6LWluZGV4OjEwMDAwMDAxICFpbXBvcnRhbnQ7IH0KIEBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6MzIwcHgpIGFuZCAobWF4LXdpZHRoOjY2N3B4KSB7IDo6LXdlYmtpdC1zY3JvbGxiYXIgeyBkaXNwbGF5Om5vbmU7IH0KICNfZm9ybV85XyB7IG1hcmdpbjowOyB3aWR0aDoxMDAlOyBtaW4td2lkdGg6MTAwJTsgbWF4LXdpZHRoOjEwMCU7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgfQogI19mb3JtXzlfICogeyAtd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDsgLW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgZm9udC1zaXplOjFlbTsgfQogI19mb3JtXzlfIC5fZm9ybS1jb250ZW50IHsgbWFyZ2luOjA7IHdpZHRoOjEwMCU7IH0KICNfZm9ybV85XyAuX2Zvcm0taW5uZXIgeyBkaXNwbGF5OmJsb2NrOyBtaW4td2lkdGg6MTAwJTsgfQogI19mb3JtXzlfIC5fZm9ybS10aXRsZSwjX2Zvcm1fOV8gLl9pbmxpbmUtc3R5bGUgeyBtYXJnaW4tdG9wOjA7IG1hcmdpbi1yaWdodDowOyBtYXJnaW4tbGVmdDowOyB9CiAjX2Zvcm1fOV8gLl9mb3JtLXRpdGxlIHsgZm9udC1zaXplOjEuMmVtOyB9CiAjX2Zvcm1fOV8gLl9mb3JtX2VsZW1lbnQgeyBtYXJnaW46MCAwIDIwcHg7IHBhZGRpbmc6MDsgd2lkdGg6MTAwJTsgfQogI19mb3JtXzlfIC5fZm9ybS1lbGVtZW50LCNfZm9ybV85XyAuX2lubGluZS1zdHlsZSwjX2Zvcm1fOV8gaW5wdXRbdHlwZT0idGV4dCJdLCNfZm9ybV85XyBsYWJlbCwjX2Zvcm1fOV8gcCwjX2Zvcm1fOV8gdGV4dGFyZWE6bm90KC5nLXJlY2FwdGNoYS1yZXNwb25zZSkgeyBmbG9hdDpub25lOyBkaXNwbGF5OmJsb2NrOyB3aWR0aDoxMDAlOyB9CiAjX2Zvcm1fOV8gLl9yb3cuX2NoZWNrYm94LXJhZGlvIGxhYmVsIHsgZGlzcGxheT
ppbmxpbmU7IH0KICNfZm9ybV85XyAuX3JvdywjX2Zvcm1fOV8gcCwjX2Zvcm1fOV8gbGFiZWwgeyBtYXJnaW4tYm90dG9tOjAuN2VtOyB3aWR0aDoxMDAlOyB9CiAjX2Zvcm1fOV8gLl9yb3cgaW5wdXRbdHlwZT0iY2hlY2tib3giXSwjX2Zvcm1fOV8gLl9yb3cgaW5wdXRbdHlwZT0icmFkaW8iXSB7IG1hcmdpbjowICFpbXBvcnRhbnQ7IHZlcnRpY2FsLWFsaWduOm1pZGRsZSAhaW1wb3J0YW50OyB9CiAjX2Zvcm1fOV8gLl9yb3cgaW5wdXRbdHlwZT0iY2hlY2tib3giXSArIHNwYW4gbGFiZWwgeyBkaXNwbGF5OmlubGluZTsgfQogI19mb3JtXzlfIC5fcm93IHNwYW4gbGFiZWwgeyBtYXJnaW46MCAhaW1wb3J0YW50OyB3aWR0aDppbml0aWFsICFpbXBvcnRhbnQ7IHZlcnRpY2FsLWFsaWduOm1pZGRsZSAhaW1wb3J0YW50OyB9CiAjX2Zvcm1fOV8gLl9mb3JtLWltYWdlIHsgbWF4LXdpZHRoOjEwMCU7IGhlaWdodDphdXRvICFpbXBvcnRhbnQ7IH0KICNfZm9ybV85XyBpbnB1dFt0eXBlPSJ0ZXh0Il0geyBwYWRkaW5nLWxlZnQ6MTBweDsgcGFkZGluZy1yaWdodDoxMHB4OyBmb250LXNpemU6MTZweDsgbGluZS1oZWlnaHQ6MS4zZW07IC13ZWJraXQtYXBwZWFyYW5jZTpub25lOyB9CiAjX2Zvcm1fOV8gaW5wdXRbdHlwZT0icmFkaW8iXSwjX2Zvcm1fOV8gaW5wdXRbdHlwZT0iY2hlY2tib3giXSB7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB3aWR0aDoxLjNlbTsgaGVpZ2h0OjEuM2VtOyBmb250LXNpemU6MWVtOyBtYXJnaW46MCAwLjNlbSAwIDA7IHZlcnRpY2FsLWFsaWduOmJhc2VsaW5lOyB9CiAjX2Zvcm1fOV8gYnV0dG9uW3R5cGU9InN1Ym1pdCJdIHsgcGFkZGluZzoyMHB4OyBmb250LXNpemU6MS41ZW07IH0KICNfZm9ybV85XyAuX2lubGluZS1zdHlsZSB7IG1hcmdpbjoyMHB4IDAgMCAhaW1wb3J0YW50OyB9CiB9CiAjX2Zvcm1fOV8geyBwb3NpdGlvbjpyZWxhdGl2ZTsgdGV4dC1hbGlnbjpsZWZ0OyBtYXJnaW46MjVweCBhdXRvIDA7IHBhZGRpbmc6MjBweDsgLXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7IC1tb3otYm94LXNpemluZzpib3JkZXItYm94OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7ICp6b29tOjE7IGJhY2tncm91bmQ6I2ZmZiAhaW1wb3J0YW50OyBib3JkZXI6MHB4IHNvbGlkICNiMGIwYjAgIWltcG9ydGFudDsgd2lkdGg6NTAwcHg7IC1tb3otYm9yZGVyLXJhZGl1czowcHggIWltcG9ydGFudDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjBweCAhaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOjBweCAhaW1wb3J0YW50OyBjb2xvcjojMDAwICFpbXBvcnRhbnQ7IH0KICNfZm9ybV85XyAuX2Zvcm0tdGl0bGUgeyBmb250LXNpemU6MjJweDsgbGluZS1oZWlnaHQ6MjJweDsgZm9udC13ZWlnaHQ6NjAwOyBtYXJnaW4tYm90dG9tOjA7IH0KICNfZm9ybV85XzpiZWZvcmUsI19mb3JtXzlfOmFmdGVyIHsgY29udGVudDoiICI7IGRpc3BsYXk6dGFibGU7IH0KICNfZm9ybV85XzphZnRlciB7IGNsZWFyOmJvdGg7IH0KICNfZm9ybV85Xy5faW5saW5lLXN0eWxlIHsgd2lkdGg6YXV0bzsgZGlzcGxheTppbmxpbmUtYmxvY2s7IH0KICNfZm9ybV85Xy5faW5saW5lLXN0eWxlIGlucHV0W3R5cGU9InRleHQiXSwjX2Zvcm1fOV8uX2lubGluZS1zdHlsZSBpbnB1dFt0eXBlPSJkYXRlIl0geyBwYWRkaW5nOjEwcHggMTJweDsgfQogI19mb3JtXzlfLl9pbmxpbmUtc3R5bGUgYnV0dG9uLl9pbmxpbmUtc3R5bGUgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgdG9wOjI3cHg7IH0KICNfZm9ybV85Xy5faW5saW5lLXN0eWxlIHAgeyBtYXJnaW46MDsgfQogI19mb3JtXzlfLl9pbmxpbmUtc3R5bGUgLl9idXR0b24td3JhcHBlciB7IHBvc2l0aW9uOnJlbGF0aXZlOyBtYXJnaW46MjdweCAxMi41cHggMCAyMHB4OyB9CiAjX2Zvcm1fOV8gLl9mb3JtLXRoYW5rLXlvdSB7IHBvc2l0aW9uOnJlbGF0aXZlOyBsZWZ0OjA7IHJpZ2h0OjA7IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXNpemU6MThweDsgfQogQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDozMjBweCkgYW5kIChtYXgtd2lkdGg6NjY3cHgpIHsgI19mb3JtXzlfLl9pbmxpbmUtZm9ybS5faW5saW5lLXN0eWxlIC5faW5saW5lLXN0eWxlLl9idXR0b24td3JhcHBlciB7IG1hcmdpbi10b3A6MjBweCAhaW1wb3J0YW50OyBtYXJnaW4tbGVmdDowICFpbXBvcnRhbnQ7IH0KIH0KPC9zdHlsZT4KPGZvcm0gbWV0aG9kPSJQT1NUIiBhY3Rpb249Imh0dHA6Ly9jb21tdW5pY2F0aW9ucy5jZnRlLmVkdWNhdGlvbi9wcm9jLnBocCIgaWQ9Il9mb3JtXzlfIiBjbGFzcz0iX2Zvcm0gX2Zvcm1fOSBfaW5saW5lLWZvcm0gIF9kYXJrIiBub3ZhbGlkYXRlPgogIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InUiIHZhbHVlPSI5IiAvPgogIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImYiIHZhbHVlPSI5IiAvPgogIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InMiIC8+CiAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYyIgdmFsdWU9IjAiIC8+CiAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibSIgdmFsdWU9IjAiIC8+CiAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0IiB2YWx1ZT0ic3ViIiAvPgogIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InYiIHZhbHVlPSIyIiAvPgogIDxkaXYgY2xhc3M9Il9mb3JtLWNvbnRlbnQiPgogICAgPGRpdiBjbGFzcz0iX2Zvcm1fZWxlbWVudCBfeDU0MjQzOTgyIF9mdWxsX3dpZHRoIF9jbGVhciIgPgogICAgICA8ZGl2IGNsYXNzPSJfZm9ybS10aXRsZSI+CiAgICAgICAgU3Vic2NyaWJlIHRvIG91ciBXZWVrbHkgTmV3c2xldHRlcgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iX2Zvcm1fZWxlbWVudCBfeDYwOTMzNDcyIF9mdWxsX3dpZHRoICIgPgogICAgICA8bGFiZWwgY2xhc3M9Il9mb3JtLWxhYmVsIj4KICAgICAgICBGaXJzdCBOYW1lKgogICAgICA8L2xhYmVsPgogICAgICA8ZGl2IGNsYXNzPSJfZmllbGQtd3JhcHBlciI+CiAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImZpcnN0bmFtZSIgcGxhY2Vob2xkZXI9IlR5cGUgeW91ciBmaXJzdCBuYW1lIiByZXF1aXJlZC8+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJfZm9ybV9lbGVtZW50IF94NDI2NDg2MDAgX2Z1bGxfd2lkdGggIiA+CiAgICAgIDxsYWJlbCBjbGFzcz0iX2Zvcm0tbGFiZWwiPgogICAgICAgIExhc3QgTmFtZSoKICAgICAgPC9sYWJlbD4KICAgICAgPGRpdiBjbGFzcz0iX2ZpZWxkLXdyYXBwZXIiPgogICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJsYXN0bmFtZSIgcGxhY2Vob2xkZXI9IlR5cGUgeW91ciBsYXN0IG5hbWUiIHJlcXVpcmVkLz4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9Il9mb3JtX2VsZW1lbnQgX3gwNDk3NDkxOSBfZnVsbF93aWR0aCAiID4KICAgICAgPGxhYmVsIGNsYXNzPSJfZm9ybS1sYWJlbCI+CiAgICAgICAgRW1haWwqCiAgICAgIDwvbGFiZWw+CiAgICAgIDxkaXYgY2xhc3M9Il9maWVsZC13cmFwcGVyIj4KICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZW1haWwiIHBsYWNlaG9sZGVyPSJUeXBlIHlvdXIgZW1haWwiIHJlcXVpcmVkLz4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9Il9mb3JtX2VsZW1lbnQgX2ZpZWxkMSBfZnVsbF93aWR0aCAiID4KICAgICAgPGxhYmVsIGNsYXNzPSJfZm9ybS1sYWJlbCI+CiAgICAgICAgQ291bnRyeQogICAgICA8L2xhYmVsPgogICAgICA8ZGl2IGNsYXNzPSJfZmllbGQtd3JhcHBlciI+CiAgICAgICAgPHNlbGVjdCBuYW1lPSJmaWVsZFsxXSIgPgogICAgICAgICAgPG9wdGlvbiBzZWxlY3RlZD4KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQWZnaGFuaXN0YW4iID4KICAgICAgICAgICAgQWZnaGFuaXN0YW4KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQWxiYW5pYSIgPgogICAgICAgICAgICBBbGJhbmlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkFsZ2VyaWEiID4KICAgICAgICAgICAgQWxnZXJpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJBbWVyaWNhbiBTYW1vYSIgPgogICAgICAgICAgICBBbWVyaWNhbiBTYW1vYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJBbmRvcnJhIiA+CiAgICAgICAgICAgIEFuZG9ycmEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQW5nb2xhIiA+CiAgICAgICAgICAgIEFuZ29sYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJBbmd1aWxsYSIgPgogICAgICAgICAgICBBbmd1aWxsYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJBbnRhcmN0aWNhIiA+CiAgICAgICAgICAgIEFudGFyY3RpY2EKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQW50aWd1YSBhbmQgQmFyYnVkYSIgPgogICAgICAgICAgICBBbnRpZ3VhIGFuZCBCYXJidWRhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkFyZ2VudGluYSIgPgogICAgICAgICAgICBBcmdlbnRpbmEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQXJtZW5pYSIgPgogICAgICAgICAgICBBcm1lbmlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkFydWJhIiA+CiAgICAgICAgICAgIEFydWJhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkF1c3RyYWxpYSIgPgogICAgICAgICAgICBBdXN0cmFsaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQXVzdHJpYSIgPgogICAgICAgICAgICBBdXN0cmlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkF6ZXJiYWlqYW4iID4KICAgICAgICAgICAgQXplcmJhaWphbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCYWhhbWFzIiA+CiAgICAgICAgICAgIEJhaGFtYXMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQmFocmFpbiIgPgogICAgICAgICAgICBCYWhyYWluCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJhbmdsYWRlc2giID4KICAgICAgICAgICAgQmFuZ2xhZGVzaAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCYXJiYWRvcyIgPgogICAgICAgICAgICBCYXJiYWRvcwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCZWxhcnVzIiA+CiAgICAgICAgICAgIEJlbGFydXMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQmVsZ2l1bSIgPgogICAgICAgICAgICBCZWxnaXVtCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJlbGl6ZSIgPgogICAgICAgICAgICBCZWxpemUKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQmVuaW4iID4KICAgICAgICAgICAgQmVuaW4KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQmVybXVkYSIgPgogICAgICAgICAgICBCZXJtdWRhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJodXRhbiIgPgogICAgICAgICAgICBCaHV0YW4KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQm9saXZpYSIgPgogICAgICAgICAgICBCb2xpdmlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJvc25pYSBhbmQgSGVyemVnb3ZpbmEiID4KICAgICAgICAgICAgQm9zbmlhIGFuZCBIZXJ6ZWdvdmluYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCb3Rzd2FuYSIgPgogICAgICAgICAgICBCb3Rzd2FuYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCb3V2ZXQgSXNsYW5kIiA+CiAgICAgICAgICAgI
EJvdXZldCBJc2xhbmQKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQnJhemlsIiA+CiAgICAgICAgICAgIEJyYXppbAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCcml0aXNoIEluZGlhbiBPY2VhbiBUZXJyaXRvcnkiID4KICAgICAgICAgICAgQnJpdGlzaCBJbmRpYW4gT2NlYW4gVGVycml0b3J5CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJydW5laSBEYXJ1c3NhbGFtIiA+CiAgICAgICAgICAgIEJydW5laSBEYXJ1c3NhbGFtCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJ1bGdhcmlhIiA+CiAgICAgICAgICAgIEJ1bGdhcmlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJ1cmtpbmEgRmFzbyIgPgogICAgICAgICAgICBCdXJraW5hIEZhc28KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQnVydW5kaSIgPgogICAgICAgICAgICBCdXJ1bmRpCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNhbWJvZGlhIiA+CiAgICAgICAgICAgIENhbWJvZGlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNhbWVyb29uIiA+CiAgICAgICAgICAgIENhbWVyb29uCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNhbmFkYSIgPgogICAgICAgICAgICBDYW5hZGEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQ2FwZSBWZXJkZSIgPgogICAgICAgICAgICBDYXBlIFZlcmRlCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNheW1hbiBJc2xhbmRzIiA+CiAgICAgICAgICAgIENheW1hbiBJc2xhbmRzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNlbnRyYWwgQWZyaWNhbiBSZXB1YmxpYyIgPgogICAgICAgICAgICBDZW50cmFsIEFmcmljYW4gUmVwdWJsaWMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQ2hhZCIgPgogICAgICAgICAgICBDaGFkCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNoaWxlIiA+CiAgICAgICAgICAgIENoaWxlCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNoaW5hIiA+CiAgICAgICAgICAgIENoaW5hCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNocmlzdG1hcyBJc2xhbmQiID4KICAgICAgICAgICAgQ2hyaXN0bWFzIElzbGFuZAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDb2NvcyAoS2VlbGluZykgSXNsYW5kcyIgPgogICAgICAgICAgICBDb2NvcyAoS2VlbGluZykgSXNsYW5kcwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDb2xvbWJpYSIgPgogICAgICAgICAgICBDb2xvbWJpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDb21vcm9zIiA+CiAgICAgICAgICAgIENvbW9yb3MKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQ29uZ28iID4KICAgICAgICAgICAgQ29uZ28KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQ29uZ28sIHRoZSBEZW1vY3JhdGljIFJlcHVibGljIG9mIHRoZSIgPgogICAgICAgICAgICBDb25nbywgdGhlIERlbW9jcmF0aWMgUmVwdWJsaWMgb2YgdGhlCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNvb2sgSXNsYW5kcyIgPgogICAgICAgICAgICBDb29rIElzbGFuZHMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQ29zdGEgUmljYSIgPgogICAgICAgICAgICBDb3N0YSBSaWNhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNvdGUgRCYjMDM5O0l2b2lyZSIgPgogICAgICAgICAgICBDb3RlIEQmIzAzOTtJdm9pcmUKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQ3JvYXRpYSIgPgogICAgICAgICAgICBDcm9hdGlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkN1YmEiID4KICAgICAgICAgICAgQ3ViYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDeXBydXMiID4KICAgICAgICAgICAgQ3lwcnVzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkN6ZWNoIFJlcHVibGljIiA+CiAgICAgICAgICAgIEN6ZWNoIFJlcHVibGljCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkRlbm1hcmsiID4KICAgICAgICAgICAgRGVubWFyawogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJEamlib3V0aSIgPgogICAgICAgICAgICBEamlib3V0aQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJEb21pbmljYSIgPgogICAgICAgICAgICBEb21pbmljYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJEb21pbmljYW4gUmVwdWJsaWMiID4KICAgICAgICAgICAgRG9taW5pY2FuIFJlcHVibGljCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkVjdWFkb3IiID4KICAgICAgICAgICAgRWN1YWRvcgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJFZ3lwdCIgPgogICAgICAgICAgICBFZ3lwdAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJFbCBTYWx2YWRvciIgPgogICAgICAgICAgICBFbCBTYWx2YWRvcgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJFcXVhdG9yaWFsIEd1aW5lYSIgPgogICAgICAgICAgICBFcXVhdG9yaWFsIEd1aW5lYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJFcml0cmVhIiA+CiAgICAgICAgICAgIEVyaXRyZWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRXN0b25pYSIgPgogICAgICAgICAgICBFc3RvbmlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkV0aGlvcGlhIiA+CiAgICAgICAgICAgIEV0aGlvcGlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkZhbGtsYW5kIElzbGFuZHMgKE1hbHZpbmFzKSIgPgogICAgICAgICAgICBGYWxrbGFuZCBJc2xhbmRzIChNYWx2aW5hcykKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRmFyb2UgSXNsYW5kcyIgPgogICAgICAgICAgICBGYXJvZSBJc2xhbmRzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkZpamkiID4KICAgICAgICAgICAgRmlqaQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJGaW5sYW5kIiA+CiAgICAgICAgICAgIEZpbmxhbmQKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRnJhbmNlIiA+CiAgICAgICAgICAgIEZyYW5jZQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJGcmVuY2ggR3VpYW5hIiA+CiAgICAgICAgICAgIEZyZW5jaCBHdWlhbmEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRnJlbmNoIFBvbHluZXNpYSIgPgogICAgICAgICAgICBGcmVuY2ggUG9seW5lc2lhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkZyZW5jaCBTb3V0aGVybiBUZXJyaXRvcmllcyIgPgogICAgICAgICAgICBGcmVuY2ggU291dGhlcm4gVGVycml0b3JpZXMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iR2Fib24iID4KICAgICAgICAgICAgR2Fib24KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iR2FtYmlhIiA+CiAgICAgICAgICAgIEdhbWJpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJHZW9yZ2lhIiA+CiAgICAgICAgICAgIEdlb3JnaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iR2VybWFueSIgPgogICAgICAgICAgICBHZXJtYW55CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkdoYW5hIiA+CiAgICAgICAgICAgIEdoYW5hCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkdpYnJhbHRhciIgPgogICAgICAgICAgICBHaWJyYWx0YXIKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iR3JlZWNlIiA+CiAgICAgICAgICAgIEdyZWVjZQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJHcmVlbmxhbmQiID4KICAgICAgICAgICAgR3JlZW5sYW5kCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkdyZW5hZGEiID4KICAgICAgICAgICAgR3JlbmFkYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJHdWFkZWxvdXBlIiA+CiAgICAgICAgICAgIEd1YWRlbG91cGUKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iR3VhbSIgPgogICAgICAgICAgICBHdWFtCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikd1YXRlbWFsYSIgPgogICAgICAgICAgICBHdWF0ZW1hbGEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iR3VpbmVhIiA+CiAgICAgICAgICAgIEd1aW5lYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJHdWluZWEtQmlzc2F1IiA+CiAgICAgICAgICAgIEd1aW5lYS1CaXNzYXUKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iR3V5YW5hIiA+CiAgICAgICAgICAgIEd1eWFuYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJIYWl0aSIgPgogICAgICAgICAgICBIYWl0aQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJIZWFyZCBJc2xhbmQgYW5kIE1jZG9uYWxkIElzbGFuZHMiID4KICAgICAgICAgICAgSGVhcmQgSXNsYW5kIGFuZCBNY2RvbmFsZCBJc2xhbmRzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkhvbHkgU2VlIChWYXRpY2FuIENpdHkgU3RhdGUpIiA+CiAgICAgICAgICAgIEhvbHkgU2VlIChWYXRpY2FuIENpdHkgU3RhdGUpCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkhvbmR1cmFzIiA+CiAgICAgICAgICAgIEhvbmR1cmFzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkhvbmcgS29uZyIgPgogICAgICAgICAgICBIb25nIEtvbmcKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iSHVuZ2FyeSIgPgogICAgICAgICAgICBIdW5nYXJ5CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkljZWxhbmQiID4KICAgICAgICAgICAgSWNlbGFuZAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJJbmRpYSIgPgogICAgICAgICAgICBJbmRpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJJbmRvbmVzaWEiID4KICAgICAgICAgICAgSW5kb25lc2lhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IklyYW4sIElzbGFtaWMgUmVwdWJsaWMgb2YiID4KICAgICAgICAgICAgSXJhbiwgSXNsYW1pYyBSZXB1YmxpYyBvZgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJJcmFxIiA+CiAgICAgICAgICAgIElyYXEKICAgICAgICAg
IDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iSXJlbGFuZCIgPgogICAgICAgICAgICBJcmVsYW5kCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IklzcmFlbCIgPgogICAgICAgICAgICBJc3JhZWwKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iSXRhbHkiID4KICAgICAgICAgICAgSXRhbHkKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iSmFtYWljYSIgPgogICAgICAgICAgICBKYW1haWNhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkphcGFuIiA+CiAgICAgICAgICAgIEphcGFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkpvcmRhbiIgPgogICAgICAgICAgICBKb3JkYW4KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iS2F6YWtoc3RhbiIgPgogICAgICAgICAgICBLYXpha2hzdGFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IktlbnlhIiA+CiAgICAgICAgICAgIEtlbnlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IktpcmliYXRpIiA+CiAgICAgICAgICAgIEtpcmliYXRpCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IktvcmVhLCBEZW1vY3JhdGljIFBlb3BsZSYjMDM5O3MgUmVwdWJsaWMgb2YiID4KICAgICAgICAgICAgS29yZWEsIERlbW9jcmF0aWMgUGVvcGxlJiMwMzk7cyBSZXB1YmxpYyBvZgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJLb3JlYSwgUmVwdWJsaWMgb2YiID4KICAgICAgICAgICAgS29yZWEsIFJlcHVibGljIG9mCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikt1d2FpdCIgPgogICAgICAgICAgICBLdXdhaXQKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iS3lyZ3l6c3RhbiIgPgogICAgICAgICAgICBLeXJneXpzdGFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkxhbyBQZW9wbGUmIzAzOTtzIERlbW9jcmF0aWMgUmVwdWJsaWMiID4KICAgICAgICAgICAgTGFvIFBlb3BsZSYjMDM5O3MgRGVtb2NyYXRpYyBSZXB1YmxpYwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJMYXR2aWEiID4KICAgICAgICAgICAgTGF0dmlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkxlYmFub24iID4KICAgICAgICAgICAgTGViYW5vbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJMZXNvdGhvIiA+CiAgICAgICAgICAgIExlc290aG8KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTGliZXJpYSIgPgogICAgICAgICAgICBMaWJlcmlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkxpYnlhbiBBcmFiIEphbWFoaXJpeWEiID4KICAgICAgICAgICAgTGlieWFuIEFyYWIgSmFtYWhpcml5YQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJMaWVjaHRlbnN0ZWluIiA+CiAgICAgICAgICAgIExpZWNodGVuc3RlaW4KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTGl0aHVhbmlhIiA+CiAgICAgICAgICAgIExpdGh1YW5pYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJMdXhlbWJvdXJnIiA+CiAgICAgICAgICAgIEx1eGVtYm91cmcKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWFjYW8iID4KICAgICAgICAgICAgTWFjYW8KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWFjZWRvbmlhLCB0aGUgRm9ybWVyIFl1Z29zbGF2IFJlcHVibGljIG9mIiA+CiAgICAgICAgICAgIE1hY2Vkb25pYSwgdGhlIEZvcm1lciBZdWdvc2xhdiBSZXB1YmxpYyBvZgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJNYWRhZ2FzY2FyIiA+CiAgICAgICAgICAgIE1hZGFnYXNjYXIKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWFsYXdpIiA+CiAgICAgICAgICAgIE1hbGF3aQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJNYWxheXNpYSIgPgogICAgICAgICAgICBNYWxheXNpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJNYWxkaXZlcyIgPgogICAgICAgICAgICBNYWxkaXZlcwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJNYWxpIiA+CiAgICAgICAgICAgIE1hbGkKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWFsdGEiID4KICAgICAgICAgICAgTWFsdGEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWFyc2hhbGwgSXNsYW5kcyIgPgogICAgICAgICAgICBNYXJzaGFsbCBJc2xhbmRzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1hcnRpbmlxdWUiID4KICAgICAgICAgICAgTWFydGluaXF1ZQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJNYXVyaXRhbmlhIiA+CiAgICAgICAgICAgIE1hdXJpdGFuaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWF1cml0aXVzIiA+CiAgICAgICAgICAgIE1hdXJpdGl1cwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJNYXlvdHRlIiA+CiAgICAgICAgICAgIE1heW90dGUKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWV4aWNvIiA+CiAgICAgICAgICAgIE1leGljbwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJNaWNyb25lc2lhLCBGZWRlcmF0ZWQgU3RhdGVzIG9mIiA+CiAgICAgICAgICAgIE1pY3JvbmVzaWEsIEZlZGVyYXRlZCBTdGF0ZXMgb2YKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTW9sZG92YSwgUmVwdWJsaWMgb2YiID4KICAgICAgICAgICAgTW9sZG92YSwgUmVwdWJsaWMgb2YKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTW9uYWNvIiA+CiAgICAgICAgICAgIE1vbmFjbwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJNb25nb2xpYSIgPgogICAgICAgICAgICBNb25nb2xpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJNb250c2VycmF0IiA+CiAgICAgICAgICAgIE1vbnRzZXJyYXQKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTW9yb2NjbyIgPgogICAgICAgICAgICBNb3JvY2NvCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1vemFtYmlxdWUiID4KICAgICAgICAgICAgTW96YW1iaXF1ZQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJNeWFubWFyIiA+CiAgICAgICAgICAgIE15YW5tYXIKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTmFtaWJpYSIgPgogICAgICAgICAgICBOYW1pYmlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik5hdXJ1IiA+CiAgICAgICAgICAgIE5hdXJ1CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik5lcGFsIiA+CiAgICAgICAgICAgIE5lcGFsCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik5ldGhlcmxhbmRzIiA+CiAgICAgICAgICAgIE5ldGhlcmxhbmRzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik5ldGhlcmxhbmRzIEFudGlsbGVzIiA+CiAgICAgICAgICAgIE5ldGhlcmxhbmRzIEFudGlsbGVzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik5ldyBDYWxlZG9uaWEiID4KICAgICAgICAgICAgTmV3IENhbGVkb25pYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJOZXcgWmVhbGFuZCIgPgogICAgICAgICAgICBOZXcgWmVhbGFuZAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJOaWNhcmFndWEiID4KICAgICAgICAgICAgTmljYXJhZ3VhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik5pZ2VyIiA+CiAgICAgICAgICAgIE5pZ2VyCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik5pZ2VyaWEiID4KICAgICAgICAgICAgTmlnZXJpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJOaXVlIiA+CiAgICAgICAgICAgIE5pdWUKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTm9yZm9sayBJc2xhbmQiID4KICAgICAgICAgICAgTm9yZm9sayBJc2xhbmQKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTm9ydGhlcm4gTWFyaWFuYSBJc2xhbmRzIiA+CiAgICAgICAgICAgIE5vcnRoZXJuIE1hcmlhbmEgSXNsYW5kcwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJOb3J3YXkiID4KICAgICAgICAgICAgTm9yd2F5CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik9tYW4iID4KICAgICAgICAgICAgT21hbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJQYWtpc3RhbiIgPgogICAgICAgICAgICBQYWtpc3RhbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJQYWxhdSIgPgogICAgICAgICAgICBQYWxhdQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJQYWxlc3RpbmlhbiBUZXJyaXRvcnksIE9jY3VwaWVkIiA+CiAgICAgICAgICAgIFBhbGVzdGluaWFuIFRlcnJpdG9yeSwgT2NjdXBpZWQKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iUGFuYW1hIiA+CiAgICAgICAgICAgIFBhbmFtYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJQYXB1YSBOZXcgR3VpbmVhIiA+CiAgICAgICAgICAgIFBhcHVhIE5ldyBHdWluZWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iUGFyYWd1YXkiID4KICAgICAgICAgICAgUGFyYWd1YXkKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iUGVydSIgPgogICAgICAgICAgICBQZXJ1CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlBoaWxpcHBpbmVzIiA+CiAgICAgICAgICAgIFBoaWxpcHBpbmVzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlBpdGNhaXJuIiA+CiAgICAgICAgICAgIFBpdGNhaXJuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlBvbGFuZCIgPgogICAgICAgICAgICBQb2xhbmQKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iUG9ydHVnYWwiID4KICAgICAgICAgICAgUG9ydHVnYWwKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iUHVlcnRvIFJpY28iID4KICAgICAgICAgICAgUHVlcnRvIFJpY28KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iUWF0YXIiID4KICAgICAgICAgICAgUWF0YXIKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iUmV1bmlvbiIgPgogICAgICAgICAgICBSZXVuaW9uCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlJvbWFuaWEiID4KICAgICAgICAgICAgUm9
tYW5pYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJSdXNzaWFuIEZlZGVyYXRpb24iID4KICAgICAgICAgICAgUnVzc2lhbiBGZWRlcmF0aW9uCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlJ3YW5kYSIgPgogICAgICAgICAgICBSd2FuZGEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU2FpbnQgSGVsZW5hIiA+CiAgICAgICAgICAgIFNhaW50IEhlbGVuYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTYWludCBLaXR0cyBhbmQgTmV2aXMiID4KICAgICAgICAgICAgU2FpbnQgS2l0dHMgYW5kIE5ldmlzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNhaW50IEx1Y2lhIiA+CiAgICAgICAgICAgIFNhaW50IEx1Y2lhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNhaW50IFBpZXJyZSBhbmQgTWlxdWVsb24iID4KICAgICAgICAgICAgU2FpbnQgUGllcnJlIGFuZCBNaXF1ZWxvbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTYWludCBWaW5jZW50IGFuZCB0aGUgR3JlbmFkaW5lcyIgPgogICAgICAgICAgICBTYWludCBWaW5jZW50IGFuZCB0aGUgR3JlbmFkaW5lcwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTYW1vYSIgPgogICAgICAgICAgICBTYW1vYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTYW4gTWFyaW5vIiA+CiAgICAgICAgICAgIFNhbiBNYXJpbm8KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU2FvIFRvbWUgYW5kIFByaW5jaXBlIiA+CiAgICAgICAgICAgIFNhbyBUb21lIGFuZCBQcmluY2lwZQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTYXVkaSBBcmFiaWEiID4KICAgICAgICAgICAgU2F1ZGkgQXJhYmlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNlbmVnYWwiID4KICAgICAgICAgICAgU2VuZWdhbAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTZXJiaWEgYW5kIE1vbnRlbmVncm8iID4KICAgICAgICAgICAgU2VyYmlhIGFuZCBNb250ZW5lZ3JvCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNleWNoZWxsZXMiID4KICAgICAgICAgICAgU2V5Y2hlbGxlcwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTaWVycmEgTGVvbmUiID4KICAgICAgICAgICAgU2llcnJhIExlb25lCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNpbmdhcG9yZSIgPgogICAgICAgICAgICBTaW5nYXBvcmUKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU2xvdmFraWEiID4KICAgICAgICAgICAgU2xvdmFraWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU2xvdmVuaWEiID4KICAgICAgICAgICAgU2xvdmVuaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU29sb21vbiBJc2xhbmRzIiA+CiAgICAgICAgICAgIFNvbG9tb24gSXNsYW5kcwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTb21hbGlhIiA+CiAgICAgICAgICAgIFNvbWFsaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU291dGggQWZyaWNhIiA+CiAgICAgICAgICAgIFNvdXRoIEFmcmljYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTb3V0aCBHZW9yZ2lhIGFuZCB0aGUgU291dGggU2FuZHdpY2ggSXNsYW5kcyIgPgogICAgICAgICAgICBTb3V0aCBHZW9yZ2lhIGFuZCB0aGUgU291dGggU2FuZHdpY2ggSXNsYW5kcwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTcGFpbiIgPgogICAgICAgICAgICBTcGFpbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTcmkgTGFua2EiID4KICAgICAgICAgICAgU3JpIExhbmthCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlN1ZGFuIiA+CiAgICAgICAgICAgIFN1ZGFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlN1cmluYW1lIiA+CiAgICAgICAgICAgIFN1cmluYW1lCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlN2YWxiYXJkIGFuZCBKYW4gTWF5ZW4iID4KICAgICAgICAgICAgU3ZhbGJhcmQgYW5kIEphbiBNYXllbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTd2F6aWxhbmQiID4KICAgICAgICAgICAgU3dhemlsYW5kCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlN3ZWRlbiIgPgogICAgICAgICAgICBTd2VkZW4KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU3dpdHplcmxhbmQiID4KICAgICAgICAgICAgU3dpdHplcmxhbmQKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU3lyaWFuIEFyYWIgUmVwdWJsaWMiID4KICAgICAgICAgICAgU3lyaWFuIEFyYWIgUmVwdWJsaWMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVGFpd2FuLCBQcm92aW5jZSBvZiBDaGluYSIgPgogICAgICAgICAgICBUYWl3YW4sIFByb3ZpbmNlIG9mIENoaW5hCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlRhamlraXN0YW4iID4KICAgICAgICAgICAgVGFqaWtpc3RhbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJUYW56YW5pYSwgVW5pdGVkIFJlcHVibGljIG9mIiA+CiAgICAgICAgICAgIFRhbnphbmlhLCBVbml0ZWQgUmVwdWJsaWMgb2YKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVGhhaWxhbmQiID4KICAgICAgICAgICAgVGhhaWxhbmQKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVGltb3ItTGVzdGUiID4KICAgICAgICAgICAgVGltb3ItTGVzdGUKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVG9nbyIgPgogICAgICAgICAgICBUb2dvCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlRva2VsYXUiID4KICAgICAgICAgICAgVG9rZWxhdQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJUb25nYSIgPgogICAgICAgICAgICBUb25nYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJUcmluaWRhZCBhbmQgVG9iYWdvIiA+CiAgICAgICAgICAgIFRyaW5pZGFkIGFuZCBUb2JhZ28KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVHVuaXNpYSIgPgogICAgICAgICAgICBUdW5pc2lhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlR1cmtleSIgPgogICAgICAgICAgICBUdXJrZXkKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVHVya21lbmlzdGFuIiA+CiAgICAgICAgICAgIFR1cmttZW5pc3RhbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJUdXJrcyBhbmQgQ2FpY29zIElzbGFuZHMiID4KICAgICAgICAgICAgVHVya3MgYW5kIENhaWNvcyBJc2xhbmRzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlR1dmFsdSIgPgogICAgICAgICAgICBUdXZhbHUKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVWdhbmRhIiA+CiAgICAgICAgICAgIFVnYW5kYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJVa3JhaW5lIiA+CiAgICAgICAgICAgIFVrcmFpbmUKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVW5pdGVkIEFyYWIgRW1pcmF0ZXMiID4KICAgICAgICAgICAgVW5pdGVkIEFyYWIgRW1pcmF0ZXMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVW5pdGVkIEtpbmdkb20iID4KICAgICAgICAgICAgVW5pdGVkIEtpbmdkb20KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVW5pdGVkIFN0YXRlcyIgPgogICAgICAgICAgICBVbml0ZWQgU3RhdGVzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlVuaXRlZCBTdGF0ZXMgTWlub3IgT3V0bHlpbmcgSXNsYW5kcyIgPgogICAgICAgICAgICBVbml0ZWQgU3RhdGVzIE1pbm9yIE91dGx5aW5nIElzbGFuZHMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVXJ1Z3VheSIgPgogICAgICAgICAgICBVcnVndWF5CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlV6YmVraXN0YW4iID4KICAgICAgICAgICAgVXpiZWtpc3RhbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJWYW51YXR1IiA+CiAgICAgICAgICAgIFZhbnVhdHUKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVmVuZXp1ZWxhIiA+CiAgICAgICAgICAgIFZlbmV6dWVsYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJWaWV0IE5hbSIgPgogICAgICAgICAgICBWaWV0IE5hbQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJWaXJnaW4gSXNsYW5kcywgQnJpdGlzaCIgPgogICAgICAgICAgICBWaXJnaW4gSXNsYW5kcywgQnJpdGlzaAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJWaXJnaW4gSXNsYW5kcywgVS5zLiIgPgogICAgICAgICAgICBWaXJnaW4gSXNsYW5kcywgVS5zLgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJXYWxsaXMgYW5kIEZ1dHVuYSIgPgogICAgICAgICAgICBXYWxsaXMgYW5kIEZ1dHVuYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJXZXN0ZXJuIFNhaGFyYSIgPgogICAgICAgICAgICBXZXN0ZXJuIFNhaGFyYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJZZW1lbiIgPgogICAgICAgICAgICBZZW1lbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJaYW1iaWEiID4KICAgICAgICAgICAgWmFtYmlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlppbWJhYndlIiA+CiAgICAgICAgICAgIFppbWJhYndlCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJvb2xlYW4iID4KICAgICAgICAgICAgQm9vbGVhbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTSW5nYXBvcmUiID4KICAgICAgICAgICAgU0luZ2Fwb3JlCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9InNpbmdhcG9yZSIgPgogICAgICAgICAgICBzaW5nYXBvcmUKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVVMiID4KICAgICAgICAgICAgVVMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iIiA+CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9ImluZGlhIiA+CiAgICAgICAgICAgIGluZGlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik13ZXhpY28iID4KICAgICAgICAgICAgTXdleGljbwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJVSyIgPgogICAgICAgICAgICBVSwogICAgICAgICAgPC9vcHRpb24+Ci
AgICAgICAgICA8b3B0aW9uIHZhbHVlPSJVU0EiID4KICAgICAgICAgICAgVVNBCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Im5lcGFsIiA+CiAgICAgICAgICAgIG5lcGFsCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlVrIiA+CiAgICAgICAgICAgIFVrCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9InVuaXRlZCBraW5nZG9tIiA+CiAgICAgICAgICAgIHVuaXRlZCBraW5nZG9tCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9ImJhbmdsYWRlc2giID4KICAgICAgICAgICAgYmFuZ2xhZGVzaAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJtZXhpY28iID4KICAgICAgICAgICAgbWV4aWNvCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IklOZGlhIiA+CiAgICAgICAgICAgIElOZGlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ij9fPz8/PyIgPgogICAgICAgICAgICA/Xz8/Pz8KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iSG9uZyBLb25nIFNBUiIgPgogICAgICAgICAgICBIb25nIEtvbmcgU0FSCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNpbmdzcG9yZSIgPgogICAgICAgICAgICBTaW5nc3BvcmUKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQlVMR0FSSUEiID4KICAgICAgICAgICAgQlVMR0FSSUEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVS5zLiIgPgogICAgICAgICAgICBVLnMuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlVOSVRFRCBLSU5HRE9NIiA+CiAgICAgICAgICAgIFVOSVRFRCBLSU5HRE9NCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9InVzYSIgPgogICAgICAgICAgICB1c2EKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVGhlIE5ldGhlcmxhbmRzIiA+CiAgICAgICAgICAgIFRoZSBOZXRoZXJsYW5kcwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJJdGFsaWEiID4KICAgICAgICAgICAgSXRhbGlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJhbmsgb2YgdGhlIFdlc3QiID4KICAgICAgICAgICAgQmFuayBvZiB0aGUgV2VzdAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJVbml0ZWQga2luZ2RvbSIgPgogICAgICAgICAgICBVbml0ZWQga2luZ2RvbQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJLb3JlYSIgPgogICAgICAgICAgICBLb3JlYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTb3V0aCBLb3JlYSIgPgogICAgICAgICAgICBTb3V0aCBLb3JlYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJzZyIgPgogICAgICAgICAgICBzZwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJsdXhlbWJvdXJnIiA+CiAgICAgICAgICAgIGx1eGVtYm91cmcKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iSU5ESUEiID4KICAgICAgICAgICAgSU5ESUEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iS29zb3ZvIiA+CiAgICAgICAgICAgIEtvc292bwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJNYWd5YXJvcnN6Pz9nIiA+CiAgICAgICAgICAgIE1hZ3lhcm9yc3o/P2cKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0idHVuaXNpYSIgPgogICAgICAgICAgICB0dW5pc2lhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Iml0YWxpYSIgPgogICAgICAgICAgICBpdGFsaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVW5pdGVkIHN0YXRlcyIgPgogICAgICAgICAgICBVbml0ZWQgc3RhdGVzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikhvbmcga29uZyIgPgogICAgICAgICAgICBIb25nIGtvbmcKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVGFpd2FuIiA+CiAgICAgICAgICAgIFRhaXdhbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJiZWxnaXVtIiA+CiAgICAgICAgICAgIGJlbGdpdW0KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU29uZ2Fwb3JlIiA+CiAgICAgICAgICAgIFNvbmdhcG9yZQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJQZXLMvCIgPgogICAgICAgICAgICBQZXLMvAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJJdCIgPgogICAgICAgICAgICBJdAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJIayIgPgogICAgICAgICAgICBIawogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJVc2EiID4KICAgICAgICAgICAgVXNhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNpZ2Fwb3JlIiA+CiAgICAgICAgICAgIFNpZ2Fwb3JlCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlB3QyIgPgogICAgICAgICAgICBQd0MKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iUnVzc2lhIiA+CiAgICAgICAgICAgIFJ1c3NpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJGUkFOQ0UiID4KICAgICAgICAgICAgRlJBTkNFCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkhvbiBLb25nIiA+CiAgICAgICAgICAgIEhvbiBLb25nCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikl0YWxpZSIgPgogICAgICAgICAgICBJdGFsaWUKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWFjZWRvbmlhIiA+CiAgICAgICAgICAgIE1hY2Vkb25pYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJWaWV0bmFtIiA+CiAgICAgICAgICAgIFZpZXRuYW0KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU2luZ3BvcmUiID4KICAgICAgICAgICAgU2luZ3BvcmUKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0ic29tYWxpYSIgPgogICAgICAgICAgICBzb21hbGlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9InBha2lzdGFuIiA+CiAgICAgICAgICAgIHBha2lzdGFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkhLIiA+CiAgICAgICAgICAgIEhLCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9InN3aXR6ZXJsYW5kIiA+CiAgICAgICAgICAgIHN3aXR6ZXJsYW5kCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlRhbnphbmlhIiA+CiAgICAgICAgICAgIFRhbnphbmlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNZUFJVUyIgPgogICAgICAgICAgICBDWVBSVVMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iSEsgQ2hpbmEiID4KICAgICAgICAgICAgSEsgQ2hpbmEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iSXJhbiIgPgogICAgICAgICAgICBJcmFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNXSVRaRVJMQU5EIiA+CiAgICAgICAgICAgIFNXSVRaRVJMQU5ECiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlVBRSIgPgogICAgICAgICAgICBVQUUKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVHVuaXNpZSIgPgogICAgICAgICAgICBUdW5pc2llCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNlcmJpYSIgPgogICAgICAgICAgICBTZXJiaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRllSIE1hY2Vkb25pYSIgPgogICAgICAgICAgICBGWVIgTWFjZWRvbmlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkPMq3RlIGQ/26pJdm9pcmUiID4KICAgICAgICAgICAgQ8yrdGUgZD/bqkl2b2lyZQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJ1ayIgPgogICAgICAgICAgICB1awogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJVYWUiID4KICAgICAgICAgICAgVWFlCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9ImdoYW5hIiA+CiAgICAgICAgICAgIGdoYW5hCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9InNpbmdwb2FyZSIgPgogICAgICAgICAgICBzaW5ncG9hcmUKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iS2luZ2RvbSBvZiBCYWhyYWluIiA+CiAgICAgICAgICAgIEtpbmdkb20gb2YgQmFocmFpbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJBbGJhbmlhbiIgPgogICAgICAgICAgICBBbGJhbmlhbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJSZWlubyBVbmlkbyIgPgogICAgICAgICAgICBSZWlubyBVbmlkbwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJpdGFseSIgPgogICAgICAgICAgICBpdGFseQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJfX18/Xz9fP18/X19fP19fX18/P19fIF8/Pz9fP1/IhD8/P19fX18iID4KICAgICAgICAgICAgX19fP18/Xz9fP19fXz9fX19fPz9fXyBfPz8/Xz9fyIQ/Pz9fX19fCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkdCIiA+CiAgICAgICAgICAgIEdCCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkhPTkcga29uZyIgPgogICAgICAgICAgICBIT05HIGtvbmcKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU3Vpc3NlIiA+CiAgICAgICAgICAgIFN1aXNzZQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJVbml0cmQgU3RhdGVzIiA+CiAgICAgICAgICAgIFVuaXRyZCBTdGF0ZXMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iUGhpbGlwcGluZHMiID4KICAgICAgICAgICAgUGhpbGlwcGluZHMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0ic2luZ3Bhb3JlIiA+CiAgICAgICAgICAgIHNpbmdwYW9yZQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJqVVNBIiA+CiAgICAgICAgICAgIGpVU0EKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0idXMiID4KICAgICAgICAgICAgdXMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQnJpdGlzaCBWaXJnaW4gSXNsYW5kcyIgPgogICAgICAgICAgICBCcml0aXNoIFZpcmdpbiBJc2xhbmRzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9ImthemFraHN0YW4iID4KICAgICAgICAgICAga2F6YWtoc3RhbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJjYW5hZGEiID4KICAgICAgI
CAgICAgY2FuYWRhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNJTkdBUE9SRSIgPgogICAgICAgICAgICBTSU5HQVBPUkUKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWFyb2MiID4KICAgICAgICAgICAgTWFyb2MKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVW5pdGVkIFN0YXRlcyBvZiBBbWVyaWNhIiA+CiAgICAgICAgICAgIFVuaXRlZCBTdGF0ZXMgb2YgQW1lcmljYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJpcmVsYW5kIiA+CiAgICAgICAgICAgIGlyZWxhbmQKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0ibGltYXNzb2wiID4KICAgICAgICAgICAgbGltYXNzb2wKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU2luZ2Fwb3JlYSIgPgogICAgICAgICAgICBTaW5nYXBvcmVhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Im5pZ2VyaWEiID4KICAgICAgICAgICAgbmlnZXJpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJ2aWV0bmFtIiA+CiAgICAgICAgICAgIHZpZXRuYW0KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0ibWFsYXlzaWEiID4KICAgICAgICAgICAgbWFsYXlzaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iaW5kaUEiID4KICAgICAgICAgICAgaW5kaUEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iR3Vlcm5zZXkiID4KICAgICAgICAgICAgR3Vlcm5zZXkKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iWklNQkFCV0UiID4KICAgICAgICAgICAgWklNQkFCV0UKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0ibGxsIiA+CiAgICAgICAgICAgIGxsbAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJNb3JvY29vIiA+CiAgICAgICAgICAgIE1vcm9jb28KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU0ciID4KICAgICAgICAgICAgU0cKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iR3JlYXQgQnJpdGFpbiIgPgogICAgICAgICAgICBHcmVhdCBCcml0YWluCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJCSCIgPgogICAgICAgICAgICBCQkgKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iUm9tzKJuaWEiID4KICAgICAgICAgICAgUm9tzKJuaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iZGZmZiIgPgogICAgICAgICAgICBkZmZmCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9InR1cmtleSIgPgogICAgICAgICAgICB0dXJrZXkKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRW5nbGFuZCIgPgogICAgICAgICAgICBFbmdsYW5kCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkxlYXJuZXJibHkiID4KICAgICAgICAgICAgTGVhcm5lcmJseQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJGUiIgPgogICAgICAgICAgICBGUgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJQSyIgPgogICAgICAgICAgICBQSwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJBRiIgPgogICAgICAgICAgICBBRgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCRyIgPgogICAgICAgICAgICBCRwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDTiIgPgogICAgICAgICAgICBDTgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJNTSIgPgogICAgICAgICAgICBNTQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJNWSIgPgogICAgICAgICAgICBNWQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJJTiIgPgogICAgICAgICAgICBJTgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJBVSIgPgogICAgICAgICAgICBBVQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSI/zJA/Pz8/Pz/ekD8/Pz8/P8+RXz8/ID8/Pz8/Pz/IkT8/Xz8/PyIgPgogICAgICAgICAgICA/zJA/Pz8/Pz/ekD8/Pz8/P8+RXz8/ID8/Pz8/Pz/IkT8/Xz8/PwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgPC9zZWxlY3Q+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJfZm9ybV9lbGVtZW50IF9maWVsZDIgX2Z1bGxfd2lkdGggIiA+CiAgICAgIDxkaXYgY2xhc3M9Il9yb3ciPgogICAgICAgIDxsYWJlbCBjbGFzcz0iX2Zvcm0tbGFiZWwiPgogICAgICAgICAgUHJpdmFjeSBQb2xpY3kKICAgICAgICA8L2xhYmVsPgogICAgICA8L2Rpdj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZmllbGRbMl1bXSIgdmFsdWU9In58Ij4KICAgICAgPGRpdiBjbGFzcz0iX3JvdyBfY2hlY2tib3gtcmFkaW8iPgogICAgICAgIDxpbnB1dCBpZD0iZmllbGRfMkkgcmVhZCBhbmQgdW5kZXJzdG9vZCBDRlRFIFByaXZhY3kgUG9saWN5ICh3d3cuY2Z0ZS5lZHVjYXRpb24vcHJpdmFjeS1wb2xpY3kpIiB0eXBlPSJjaGVja2JveCIgbmFtZT0iZmllbGRbMl1bXSIgdmFsdWU9IkkgcmVhZCBhbmQgdW5kZXJzdG9vZCBDRlRFIFByaXZhY3kgUG9saWN5ICh3d3cuY2Z0ZS5lZHVjYXRpb24vcHJpdmFjeS1wb2xpY3kpIiAgID4KICAgICAgICA8c3Bhbj4KICAgICAgICAgIDxsYWJlbCBmb3I9ImZpZWxkXzJJIHJlYWQgYW5kIHVuZGVyc3Rvb2QgQ0ZURSBQcml2YWN5IFBvbGljeSAod3d3LmNmdGUuZWR1Y2F0aW9uL3ByaXZhY3ktcG9saWN5KSI+CiAgICAgICAgICAgIEkgcmVhZCBhbmQgdW5kZXJzdG9vZCBDRlRFIFByaXZhY3kgUG9saWN5ICh3d3cuY2Z0ZS5lZHVjYXRpb24vcHJpdmFjeS1wb2xpY3kpCiAgICAgICAgICA8L2xhYmVsPgogICAgICAgIDwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9Il9mb3JtX2VsZW1lbnQgX2ZpZWxkOSBfZnVsbF93aWR0aCAiID4KICAgICAgPGRpdiBjbGFzcz0iX3JvdyI+CiAgICAgICAgPGxhYmVsIGNsYXNzPSJfZm9ybS1sYWJlbCI+CiAgICAgICAgICBPcHRpb25zIGZvciBDb21tdW5pY2F0aW9uCiAgICAgICAgPC9sYWJlbD4KICAgICAgPC9kaXY+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZpZWxkWzldW10iIHZhbHVlPSJ+fCI+CiAgICAgIDxkaXYgY2xhc3M9Il9yb3cgX2NoZWNrYm94LXJhZGlvIj4KICAgICAgICA8aW5wdXQgaWQ9ImZpZWxkXzlJJiMwMzk7bSBoYXBweSB0byByZWNlaXZlIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgQ0ZURSBzZXJ2aWNlcyIgdHlwZT0iY2hlY2tib3giIG5hbWU9ImZpZWxkWzldW10iIHZhbHVlPSJJJiMwMzk7bSBoYXBweSB0byByZWNlaXZlIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgQ0ZURSBzZXJ2aWNlcyIgICA+CiAgICAgICAgPHNwYW4+CiAgICAgICAgICA8bGFiZWwgZm9yPSJmaWVsZF85SSYjMDM5O20gaGFwcHkgdG8gcmVjZWl2ZSBtb3JlIGluZm9ybWF0aW9uIGFib3V0IENGVEUgc2VydmljZXMiPgogICAgICAgICAgICBJJiMwMzk7bSBoYXBweSB0byByZWNlaXZlIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgQ0ZURSBzZXJ2aWNlcwogICAgICAgICAgPC9sYWJlbD4KICAgICAgICA8L3NwYW4+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJfZm9ybV9lbGVtZW50IF94ODg0NjQ5NzEgX2Z1bGxfd2lkdGggIiA+CiAgICAgIDxsYWJlbCBjbGFzcz0iX2Zvcm0tbGFiZWwiPgogICAgICAgIFBsZWFzZSB2ZXJpZnkgeW91ciByZXF1ZXN0KgogICAgICA8L2xhYmVsPgogICAgICA8ZGl2IGNsYXNzPSJnLXJlY2FwdGNoYSIgZGF0YS1zaXRla2V5PSI2TGN3SXc4VEFBQUFBQ1AxeXNNMDhFaENnemQ2cTVKQU9VUjFhMEdvIj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9Il9idXR0b24td3JhcHBlciBfZnVsbF93aWR0aCI+CiAgICAgIDxidXR0b24gaWQ9Il9mb3JtXzlfc3VibWl0IiBjbGFzcz0iX3N1Ym1pdCIgdHlwZT0ic3VibWl0Ij4KICAgICAgICBTdWJtaXQKICAgICAgPC9idXR0b24+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9Il9jbGVhci1lbGVtZW50Ij4KICAgIDwvZGl2PgogIDwvZGl2PgogIDxkaXYgY2xhc3M9Il9mb3JtLXRoYW5rLXlvdSIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgogIDwvZGl2Pgo8L2Zvcm0+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgp3aW5kb3cuY2ZpZWxkcyA9IHsiMSI6ImNvdW50cnkiLCIyIjoicHJpdmFjeV9wb2xpY3kiLCI5Ijoib3B0aW9uc19mb3JfY29tbXVuaWNhdGlvbiJ9Owp3aW5kb3cuX3Nob3dfdGhhbmtfeW91ID0gZnVuY3Rpb24oaWQsIG1lc3NhZ2UsIHRyYWNrY21wX3VybCkgewogIHZhciBmb3JtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ19mb3JtXycgKyBpZCArICdfJyksIHRoYW5rX3lvdSA9IGZvcm0ucXVlcnlTZWxlY3RvcignLl9mb3JtLXRoYW5rLXlvdScpOwogIGZvcm0ucXVlcnlTZWxlY3RvcignLl9mb3JtLWNvbnRlbnQnKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogIHRoYW5rX3lvdS5pbm5lckhUTUwgPSBtZXNzYWdlOwogIHRoYW5rX3lvdS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKICBpZiAodHlwZW9mKHRyYWNrY21wX3VybCkgIT0gJ3VuZGVmaW5lZCcgJiYgdHJhY2tjbXBfdXJsKSB7CiAgICAvLyBTaXRlIHRyYWNraW5nIFVSTCB0byB1c2UgYWZ0ZXIgaW5saW5lIGZvcm0gc3VibWlzc2lvbi4KICAgIF9sb2FkX3NjcmlwdCh0cmFja2NtcF91cmwpOwogIH0KICBpZiAodHlwZW9mIHdpbmRvdy5fZm9ybV9jYWxsYmFjayAhPT0gJ3VuZGVmaW5lZCcpIHdpbmRvdy5fZm9ybV9jYWxsYmFjayhpZCk7Cn07CndpbmRvdy5fc2hvd19lcnJvciA9IGZ1bmN0aW9uKGlkLCBtZXNzYWdlLCBodG1sKSB7CiAgdmFyIGZvcm0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnX2Zvcm1fJyArIGlkICsgJ18nKSwgZXJyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JyksIGJ1dHRvbiA9IGZvcm0ucXVlcnlTZWxlY3RvcignYnV0dG9uJyksIG9sZF9lcnJvciA9IGZvcm0ucXVlcnlTZWxlY3RvcignLl9mb3JtX2Vycm9yJyk7CiAgaWYgKG9sZF9lcnJvcikgb2xkX2Vycm9yLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQob2xkX2Vycm9yKTsKICBlcnIuaW5uZXJIVE1MID0gbWVzc2FnZTsKICBlcnIuY2xhc3NOYW1lID0gJ19lcnJvci1pbm5lciBfZm9ybV9lcnJvciBfbm9fYXJyb3cnOwogIHZhciB3cmFwcGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgd3JhcHBlci5jbGFzc05hbWUgPSAnX2Zvcm0taW5uZXInOwogIHdyYXBwZXIuYXBwZW5kQ2hpbGQoZXJyKTsKICBidXR0b24ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUod3JhcHBlciwgYnV0dG9uKTsKICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbaWRePSJfZm9ybSJdW2lkJD0iX3N1Ym1pdCJdJykuZGlzYWJsZWQgPSBmYWxzZTsKICBpZiAoaHRtbCkgewogICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgZGl2LmNsYXNzTmFtZSA9ICdfZXJyb3ItaHRtbCc7CiAgICBkaXYuaW5uZXJIVE1MID0gaHRtbDsKICAgIGVyci5hcHBlbmRDaGlsZChkaXYpOwogIH0KfTsKd2luZG93Ll9sb2FkX3NjcmlwdCA9IGZ1bmN0aW9uKHVybCwgY2FsbGJhY2spIHsKICAgIHZhciBoZWFkID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaGVhZCcpLCBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKSwgciA9IGZhbHNlOwogICAgc2NyaXB0LnR5cGUgPSAndGV4dC9qYXZh
c2NyaXB0JzsKICAgIHNjcmlwdC5jaGFyc2V0ID0gJ3V0Zi04JzsKICAgIHNjcmlwdC5zcmMgPSB1cmw7CiAgICBpZiAoY2FsbGJhY2spIHsKICAgICAgc2NyaXB0Lm9ubG9hZCA9IHNjcmlwdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHsKICAgICAgaWYgKCFyICYmICghdGhpcy5yZWFkeVN0YXRlIHx8IHRoaXMucmVhZHlTdGF0ZSA9PSAnY29tcGxldGUnKSkgewogICAgICAgIHIgPSB0cnVlOwogICAgICAgIGNhbGxiYWNrKCk7CiAgICAgICAgfQogICAgICB9OwogICAgfQogICAgaGVhZC5hcHBlbmRDaGlsZChzY3JpcHQpOwp9OwooZnVuY3Rpb24oKSB7CiAgaWYgKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2guc2VhcmNoKCJleGNsdWRlZm9ybSIpICE9PSAtMSkgcmV0dXJuIGZhbHNlOwogIHZhciBnZXRDb29raWUgPSBmdW5jdGlvbihuYW1lKSB7CiAgICB2YXIgbWF0Y2ggPSBkb2N1bWVudC5jb29raWUubWF0Y2gobmV3IFJlZ0V4cCgnKF58OyApJyArIG5hbWUgKyAnPShbXjtdKyknKSk7CiAgICByZXR1cm4gbWF0Y2ggPyBtYXRjaFsyXSA6IG51bGw7CiAgfQogIHZhciBzZXRDb29raWUgPSBmdW5jdGlvbihuYW1lLCB2YWx1ZSkgewogICAgdmFyIG5vdyA9IG5ldyBEYXRlKCk7CiAgICB2YXIgdGltZSA9IG5vdy5nZXRUaW1lKCk7CiAgICB2YXIgZXhwaXJlVGltZSA9IHRpbWUgKyAxMDAwICogNjAgKiA2MCAqIDI0ICogMzY1OwogICAgbm93LnNldFRpbWUoZXhwaXJlVGltZSk7CiAgICBkb2N1bWVudC5jb29raWUgPSBuYW1lICsgJz0nICsgdmFsdWUgKyAnOyBleHBpcmVzPScgKyBub3cgKyAnO3BhdGg9Lyc7CiAgfQogICAgICB2YXIgYWRkRXZlbnQgPSBmdW5jdGlvbihlbGVtZW50LCBldmVudCwgZnVuYykgewogICAgaWYgKGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcikgewogICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnQsIGZ1bmMpOwogICAgfSBlbHNlIHsKICAgICAgdmFyIG9sZEZ1bmMgPSBlbGVtZW50WydvbicgKyBldmVudF07CiAgICAgIGVsZW1lbnRbJ29uJyArIGV2ZW50XSA9IGZ1bmN0aW9uKCkgewogICAgICAgIG9sZEZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgICBmdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgIH07CiAgICB9CiAgfQogIHZhciBfcmVtb3ZlZCA9IGZhbHNlOwogIHZhciBmb3JtX3RvX3N1Ym1pdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdfZm9ybV85XycpOwogIHZhciBhbGxJbnB1dHMgPSBmb3JtX3RvX3N1Ym1pdC5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYScpLCB0b29sdGlwcyA9IFtdLCBzdWJtaXR0ZWQgPSBmYWxzZTsKCiAgdmFyIGdldFVybFBhcmFtID0gZnVuY3Rpb24obmFtZSkgewogICAgdmFyIHJlZ2V4U3RyID0gJ1tcPyZdJyArIG5hbWUgKyAnPShbXiYjXSopJzsKICAgIHZhciByZXN1bHRzID0gbmV3IFJlZ0V4cChyZWdleFN0ciwgJ2knKS5leGVjKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTsKICAgIHJldHVybiByZXN1bHRzICE9IHVuZGVmaW5lZCA/IGRlY29kZVVSSUNvbXBvbmVudChyZXN1bHRzWzFdKSA6IGZhbHNlOwogIH07CgogIGZvciAodmFyIGkgPSAwOyBpIDwgYWxsSW5wdXRzLmxlbmd0aDsgaSsrKSB7CiAgICB2YXIgcmVnZXhTdHIgPSAiZmllbGRcXFsoXFxkKylcXF0iOwogICAgdmFyIHJlc3VsdHMgPSBuZXcgUmVnRXhwKHJlZ2V4U3RyKS5leGVjKGFsbElucHV0c1tpXS5uYW1lKTsKICAgIGlmIChyZXN1bHRzICE9IHVuZGVmaW5lZCkgewogICAgICBhbGxJbnB1dHNbaV0uZGF0YXNldC5uYW1lID0gd2luZG93LmNmaWVsZHNbcmVzdWx0c1sxXV07CiAgICB9IGVsc2UgewogICAgICBhbGxJbnB1dHNbaV0uZGF0YXNldC5uYW1lID0gYWxsSW5wdXRzW2ldLm5hbWU7CiAgICB9CiAgICB2YXIgZmllbGRWYWwgPSBnZXRVcmxQYXJhbShhbGxJbnB1dHNbaV0uZGF0YXNldC5uYW1lKTsKCiAgICBpZiAoZmllbGRWYWwpIHsKICAgICAgaWYgKGFsbElucHV0c1tpXS50eXBlID09ICJyYWRpbyIgfHwgYWxsSW5wdXRzW2ldLnR5cGUgPT0gImNoZWNrYm94IikgewogICAgICAgIGlmIChhbGxJbnB1dHNbaV0udmFsdWUgPT0gZmllbGRWYWwpIHsKICAgICAgICAgIGFsbElucHV0c1tpXS5jaGVja2VkID0gdHJ1ZTsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgYWxsSW5wdXRzW2ldLnZhbHVlID0gZmllbGRWYWw7CiAgICAgIH0KICAgIH0KICB9CgogIHZhciByZW1vdmVfdG9vbHRpcHMgPSBmdW5jdGlvbigpIHsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdG9vbHRpcHMubGVuZ3RoOyBpKyspIHsKICAgICAgdG9vbHRpcHNbaV0udGlwLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodG9vbHRpcHNbaV0udGlwKTsKICAgIH0KICAgICAgdG9vbHRpcHMgPSBbXTsKICB9OwogIHZhciByZW1vdmVfdG9vbHRpcCA9IGZ1bmN0aW9uKGVsZW0pIHsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdG9vbHRpcHMubGVuZ3RoOyBpKyspIHsKICAgICAgaWYgKHRvb2x0aXBzW2ldLmVsZW0gPT09IGVsZW0pIHsKICAgICAgICB0b29sdGlwc1tpXS50aXAucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0b29sdGlwc1tpXS50aXApOwogICAgICAgIHRvb2x0aXBzLnNwbGljZShpLCAxKTsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgIH0KICB9OwogIHZhciBjcmVhdGVfdG9vbHRpcCA9IGZ1bmN0aW9uKGVsZW0sIHRleHQpIHsKICAgIHZhciB0b29sdGlwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JyksIGFycm93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JyksIGlubmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JyksIG5ld190b29sdGlwID0ge307CiAgICBpZiAoZWxlbS50eXBlICE9ICdyYWRpbycgJiYgZWxlbS50eXBlICE9ICdjaGVja2JveCcpIHsKICAgICAgdG9vbHRpcC5jbGFzc05hbWUgPSAnX2Vycm9yJzsKICAgICAgYXJyb3cuY2xhc3NOYW1lID0gJ19lcnJvci1hcnJvdyc7CiAgICAgIGlubmVyLmNsYXNzTmFtZSA9ICdfZXJyb3ItaW5uZXInOwogICAgICBpbm5lci5pbm5lckhUTUwgPSB0ZXh0OwogICAgICB0b29sdGlwLmFwcGVuZENoaWxkKGFycm93KTsKICAgICAgdG9vbHRpcC5hcHBlbmRDaGlsZChpbm5lcik7CiAgICAgIGVsZW0ucGFyZW50Tm9kZS5hcHBlbmRDaGlsZCh0b29sdGlwKTsKICAgIH0gZWxzZSB7CiAgICAgIHRvb2x0aXAuY2xhc3NOYW1lID0gJ19lcnJvci1pbm5lciBfbm9fYXJyb3cnOwogICAgICB0b29sdGlwLmlubmVySFRNTCA9IHRleHQ7CiAgICAgIGVsZW0ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodG9vbHRpcCwgZWxlbSk7CiAgICAgIG5ld190b29sdGlwLm5vX2Fycm93ID0gdHJ1ZTsKICAgIH0KICAgIG5ld190b29sdGlwLnRpcCA9IHRvb2x0aXA7CiAgICBuZXdfdG9vbHRpcC5lbGVtID0gZWxlbTsKICAgIHRvb2x0aXBzLnB1c2gobmV3X3Rvb2x0aXApOwogICAgcmV0dXJuIG5ld190b29sdGlwOwogIH07CiAgdmFyIHJlc2l6ZV90b29sdGlwID0gZnVuY3Rpb24odG9vbHRpcCkgewogICAgdmFyIHJlY3QgPSB0b29sdGlwLmVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICB2YXIgZG9jID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCBzY3JvbGxQb3NpdGlvbiA9IHJlY3QudG9wIC0gKCh3aW5kb3cucGFnZVlPZmZzZXQgfHwgZG9jLnNjcm9sbFRvcCkgIC0gKGRvYy5jbGllbnRUb3AgfHwgMCkpOwogICAgaWYgKHNjcm9sbFBvc2l0aW9uIDwgNDApIHsKICAgICAgdG9vbHRpcC50aXAuY2xhc3NOYW1lID0gdG9vbHRpcC50aXAuY2xhc3NOYW1lLnJlcGxhY2UoLyA/KF9hYm92ZXxfYmVsb3cpID8vZywgJycpICsgJyBfYmVsb3cnOwogICAgfSBlbHNlIHsKICAgICAgdG9vbHRpcC50aXAuY2xhc3NOYW1lID0gdG9vbHRpcC50aXAuY2xhc3NOYW1lLnJlcGxhY2UoLyA/KF9hYm92ZXxfYmVsb3cpID8vZywgJycpICsgJyBfYWJvdmUnOwogICAgfQogIH07CiAgdmFyIHJlc2l6ZV90b29sdGlwcyA9IGZ1bmN0aW9uKCkgewogICAgaWYgKF9yZW1vdmVkKSByZXR1cm47CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRvb2x0aXBzLmxlbmd0aDsgaSsrKSB7CiAgICAgIGlmICghdG9vbHRpcHNbaV0ubm9fYXJyb3cpIHJlc2l6ZV90b29sdGlwKHRvb2x0aXBzW2ldKTsKICAgIH0KICB9OwogIHZhciB2YWxpZGF0ZV9maWVsZCA9IGZ1bmN0aW9uKGVsZW0sIHJlbW92ZSkgewogICAgdmFyIHRvb2x0aXAgPSBudWxsLCB2YWx1ZSA9IGVsZW0udmFsdWUsIG5vX2Vycm9yID0gdHJ1ZTsKICAgIHJlbW92ZSA/IHJlbW92ZV90b29sdGlwKGVsZW0pIDogZmFsc2U7CiAgICBpZiAoZWxlbS50eXBlICE9ICdjaGVja2JveCcpIGVsZW0uY2xhc3NOYW1lID0gZWxlbS5jbGFzc05hbWUucmVwbGFjZSgvID9faGFzX2Vycm9yID8vZywgJycpOwogICAgaWYgKGVsZW0uZ2V0QXR0cmlidXRlKCdyZXF1aXJlZCcpICE9PSBudWxsKSB7CiAgICAgIGlmIChlbGVtLnR5cGUgPT0gJ3JhZGlvJyB8fCAoZWxlbS50eXBlID09ICdjaGVja2JveCcgJiYgL2FueS8udGVzdChlbGVtLmNsYXNzTmFtZSkpKSB7CiAgICAgICAgdmFyIGVsZW1zID0gZm9ybV90b19zdWJtaXQuZWxlbWVudHNbZWxlbS5uYW1lXTsKICAgICAgICBpZiAoIShlbGVtcyBpbnN0YW5jZW9mIE5vZGVMaXN0IHx8IGVsZW1zIGluc3RhbmNlb2YgSFRNTENvbGxlY3Rpb24pIHx8IGVsZW1zLmxlbmd0aCA8PSAxKSB7CiAgICAgICAgICBub19lcnJvciA9IGVsZW0uY2hlY2tlZDsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICBub19lcnJvciA9IGZhbHNlOwogICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBpZiAoZWxlbXNbaV0uY2hlY2tlZCkgbm9fZXJyb3IgPSB0cnVlOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoIW5vX2Vycm9yKSB7CiAgICAgICAgICB0b29sdGlwID0gY3JlYXRlX3Rvb2x0aXAoZWxlbSwgIlBsZWFzZSBzZWxlY3QgYW4gb3B0aW9uLiIpOwogICAgICAgIH0KICAgICAgfSBlbHNlIGlmIChlbGVtLnR5cGUgPT0nY2hlY2tib3gnKSB7CiAgICAgICAgdmFyIGVsZW1zID0gZm9ybV90b19zdWJtaXQuZWxlbWVudHNbZWxlbS5uYW1lXSwgZm91bmQgPSBmYWxzZSwgZXJyID0gW107CiAgICAgICAgbm9fZXJyb3IgPSB0cnVlOwogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgIGlmIChlbGVtc1tpXS5nZXRBdHRyaWJ1dGUoJ3JlcXVpcmVkJykgPT09IG51bGwpIGNvbnRpbnVlOwogICAgICAgICAgaWYgKCFmb3VuZCAmJiBlbGVtc1tpXSAhPT0gZWxlbSkgcmV0dXJuIHRydWU7CiAgICAgICAgICBmb3VuZCA9IHRydWU7CiAgICAgICAgICBlbGVtc1tpXS5jbGFzc05hbWUgPSBlbGVtc1tpXS5jbGFzc05hbWUucmVwbGFjZSgvID9faGFzX2Vycm9yID8vZywgJycpOwogICAgICAgICAgaWYgKCFlbGVtc1tpXS5jaGVja2VkKSB7CiAgICAgICAgICAgIG5vX2Vycm9yID0gZmFsc2U7CiAgICAgICAgICAgIGVsZW1zW2ldLmNsYXNzTmFtZSA9IGVsZW1zW2ldLmNsYXNzTmFtZSArICcgX2hhc19lcnJvcic7CiAgICAgICAgICAgIGVyci5wdXNoKCJDaGVja2luZyAlcyBpcyByZXF1aXJlZCIucmVwbGFjZSgiJXMiLCBlbGVtc1tpXS52YWx1ZSkpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoIW5vX2Vycm9yKSB7CiAgICAgICAgICB0b29sdGlwID0gY3JlYXRlX3Rvb2x0aXAoZWxlbSwgZXJyLmpvaW4oJzxici8+JykpOwogICAgICAgIH0KICAgICAgfSBlbHNlIGlmIChlbGVtLnRhZ05hbWUgPT0gJ1NFTEVDVCcpIHsKICAgICAgICB2YXIgc2VsZWN0ZWQgPSB0cnVlOwogICAgICAgIGlmIChlbGVtLm11bHRpcGxlKSB7CiAgICAgICAgICBzZWxlY3RlZCA9IGZhbHNlOwogICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtLm9wdGlvbnMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgaWYgKGVsZW0ub3B0aW9uc1tpXS5zZWxlY3RlZCkgewogICAgICAgICAgICAgIHNlbGVjdGVkID0gdHJ1ZTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW0ub3B0aW9ucy5
sZW5ndGg7IGkrKykgewogICAgICAgICAgICBpZiAoZWxlbS5vcHRpb25zW2ldLnNlbGVjdGVkICYmICFlbGVtLm9wdGlvbnNbaV0udmFsdWUpIHsKICAgICAgICAgICAgICBzZWxlY3RlZCA9IGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICghc2VsZWN0ZWQpIHsKICAgICAgICAgIGVsZW0uY2xhc3NOYW1lID0gZWxlbS5jbGFzc05hbWUgKyAnIF9oYXNfZXJyb3InOwogICAgICAgICAgbm9fZXJyb3IgPSBmYWxzZTsKICAgICAgICAgIHRvb2x0aXAgPSBjcmVhdGVfdG9vbHRpcChlbGVtLCAiUGxlYXNlIHNlbGVjdCBhbiBvcHRpb24uIik7CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09ICcnKSB7CiAgICAgICAgZWxlbS5jbGFzc05hbWUgPSBlbGVtLmNsYXNzTmFtZSArICcgX2hhc19lcnJvcic7CiAgICAgICAgbm9fZXJyb3IgPSBmYWxzZTsKICAgICAgICB0b29sdGlwID0gY3JlYXRlX3Rvb2x0aXAoZWxlbSwgIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIik7CiAgICAgIH0KICAgIH0KICAgIGlmIChub19lcnJvciAmJiBlbGVtLm5hbWUgPT0gJ2VtYWlsJykgewogICAgICBpZiAoIXZhbHVlLm1hdGNoKC9eW1wrX2EtejAtOS0nJj1dKyhcLltcK19hLXowLTktJ10rKSpAW2EtejAtOS1dKyhcLlthLXowLTktXSspKihcLlthLXpdezIsfSkkL2kpKSB7CiAgICAgICAgZWxlbS5jbGFzc05hbWUgPSBlbGVtLmNsYXNzTmFtZSArICcgX2hhc19lcnJvcic7CiAgICAgICAgbm9fZXJyb3IgPSBmYWxzZTsKICAgICAgICB0b29sdGlwID0gY3JlYXRlX3Rvb2x0aXAoZWxlbSwgIkVudGVyIGEgdmFsaWQgZW1haWwgYWRkcmVzcy4iKTsKICAgICAgfQogICAgfQogICAgaWYgKG5vX2Vycm9yICYmIC9kYXRlX2ZpZWxkLy50ZXN0KGVsZW0uY2xhc3NOYW1lKSkgewogICAgICBpZiAoIXZhbHVlLm1hdGNoKC9eXGRcZFxkXGQtXGRcZC1cZFxkJC8pKSB7CiAgICAgICAgZWxlbS5jbGFzc05hbWUgPSBlbGVtLmNsYXNzTmFtZSArICcgX2hhc19lcnJvcic7CiAgICAgICAgbm9fZXJyb3IgPSBmYWxzZTsKICAgICAgICB0b29sdGlwID0gY3JlYXRlX3Rvb2x0aXAoZWxlbSwgIkVudGVyIGEgdmFsaWQgZGF0ZS4iKTsKICAgICAgfQogICAgfQogICAgdG9vbHRpcCA/IHJlc2l6ZV90b29sdGlwKHRvb2x0aXApIDogZmFsc2U7CiAgICByZXR1cm4gbm9fZXJyb3I7CiAgfTsKICB2YXIgbmVlZHNfdmFsaWRhdGUgPSBmdW5jdGlvbihlbCkgewogICAgcmV0dXJuIGVsLm5hbWUgPT0gJ2VtYWlsJyB8fCBlbC5nZXRBdHRyaWJ1dGUoJ3JlcXVpcmVkJykgIT09IG51bGw7CiAgfTsKICB2YXIgdmFsaWRhdGVfZm9ybSA9IGZ1bmN0aW9uKGUpIHsKICAgIHZhciBlcnIgPSBmb3JtX3RvX3N1Ym1pdC5xdWVyeVNlbGVjdG9yKCcuX2Zvcm1fZXJyb3InKSwgbm9fZXJyb3IgPSB0cnVlOwogICAgaWYgKCFzdWJtaXR0ZWQpIHsKICAgICAgc3VibWl0dGVkID0gdHJ1ZTsKICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGFsbElucHV0cy5sZW5ndGg7IGkgPCBsZW47IGkrKykgewogICAgICAgIHZhciBpbnB1dCA9IGFsbElucHV0c1tpXTsKICAgICAgICBpZiAobmVlZHNfdmFsaWRhdGUoaW5wdXQpKSB7CiAgICAgICAgICBpZiAoaW5wdXQudHlwZSA9PSAndGV4dCcpIHsKICAgICAgICAgICAgYWRkRXZlbnQoaW5wdXQsICdibHVyJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUudHJpbSgpOwogICAgICAgICAgICAgIHZhbGlkYXRlX2ZpZWxkKHRoaXMsIHRydWUpOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgYWRkRXZlbnQoaW5wdXQsICdpbnB1dCcsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgIHZhbGlkYXRlX2ZpZWxkKHRoaXMsIHRydWUpOwogICAgICAgICAgICB9KTsKICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQudHlwZSA9PSAncmFkaW8nIHx8IGlucHV0LnR5cGUgPT0gJ2NoZWNrYm94JykgewogICAgICAgICAgICAoZnVuY3Rpb24oZWwpIHsKICAgICAgICAgICAgICB2YXIgcmFkaW9zID0gZm9ybV90b19zdWJtaXQuZWxlbWVudHNbZWwubmFtZV07CiAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByYWRpb3MubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIGFkZEV2ZW50KHJhZGlvc1tpXSwgJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgIHZhbGlkYXRlX2ZpZWxkKGVsLCB0cnVlKTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkoaW5wdXQpOwogICAgICAgICAgfSBlbHNlIGlmIChpbnB1dC50YWdOYW1lID09ICdTRUxFQ1QnKSB7CiAgICAgICAgICAgIGFkZEV2ZW50KGlucHV0LCAnY2hhbmdlJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgdmFsaWRhdGVfZmllbGQodGhpcywgdHJ1ZSk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfQogICAgcmVtb3ZlX3Rvb2x0aXBzKCk7CiAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gYWxsSW5wdXRzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7CiAgICAgIHZhciBlbGVtID0gYWxsSW5wdXRzW2ldOwogICAgICBpZiAobmVlZHNfdmFsaWRhdGUoZWxlbSkpIHsKICAgICAgICBpZiAoZWxlbS50YWdOYW1lLnRvTG93ZXJDYXNlKCkgIT09ICJzZWxlY3QiKSB7CiAgICAgICAgICBlbGVtLnZhbHVlID0gZWxlbS52YWx1ZS50cmltKCk7CiAgICAgICAgfQogICAgICAgIHZhbGlkYXRlX2ZpZWxkKGVsZW0pID8gdHJ1ZSA6IG5vX2Vycm9yID0gZmFsc2U7CiAgICAgIH0KICAgIH0KICAgIGlmICghbm9fZXJyb3IgJiYgZSkgewogICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICB9CiAgICByZXNpemVfdG9vbHRpcHMoKTsKICAgIHJldHVybiBub19lcnJvcjsKICB9OwogIGFkZEV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScsIHJlc2l6ZV90b29sdGlwcyk7CiAgYWRkRXZlbnQod2luZG93LCAnc2Nyb2xsJywgcmVzaXplX3Rvb2x0aXBzKTsKICB3aW5kb3dbJ3JlY2FwdGNoYV9jYWxsYmFjayddID0gZnVuY3Rpb24oKSB7CiAgLy8gR2V0IGFsbCByZWNhcHRjaGFzIGluIHRoZSBET00gKHRoZXJlIG1heSBiZSBtb3JlIHRoYW4gb25lIGZvcm0gb24gdGhlIHBhZ2UpLgogIHZhciByZWNhcHRjaGFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiZy1yZWNhcHRjaGEiKTsKICBmb3IgKHZhciBpIGluIHJlY2FwdGNoYXMpIHsKICAgIC8vIFNldCB0aGUgcmVjYXB0Y2hhIGVsZW1lbnQgSUQsIHNvIHRoZSByZWNhcHRjaGEgY2FuIGJlIGFwcGxpZWQgdG8gZWFjaCBlbGVtZW50LgogICAgdmFyIHJlY2FwdGNoYV9pZCA9ICJyZWNhcHRjaGFfIiArIGk7CiAgICByZWNhcHRjaGFzW2ldLmlkID0gcmVjYXB0Y2hhX2lkOwogICAgdmFyIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocmVjYXB0Y2hhX2lkKTsKICAgIGlmIChlbCAhPSBudWxsKSB7CiAgICAgIHZhciBzaXRla2V5ID0gZWwuZ2V0QXR0cmlidXRlKCJkYXRhLXNpdGVrZXkiKTsKICAgICAgdmFyIHN0b2tlbiA9IGVsLmdldEF0dHJpYnV0ZSgiZGF0YS1zdG9rZW4iKTsKICAgICAgZ3JlY2FwdGNoYS5yZW5kZXIocmVjYXB0Y2hhX2lkLCB7InNpdGVrZXkiOnNpdGVrZXksInN0b2tlbiI6c3Rva2VufSk7CiAgICB9CiAgfQp9OyAgX2xvYWRfc2NyaXB0KCIvL3d3dy5nb29nbGUuY29tL3JlY2FwdGNoYS9hcGkuanM/b25sb2FkPXJlY2FwdGNoYV9jYWxsYmFjayZyZW5kZXI9ZXhwbGljaXQiKTsKICB3aW5kb3cuX29sZF9zZXJpYWxpemUgPSBudWxsOwogIGlmICh0eXBlb2Ygc2VyaWFsaXplICE9PSAndW5kZWZpbmVkJykgd2luZG93Ll9vbGRfc2VyaWFsaXplID0gd2luZG93LnNlcmlhbGl6ZTsKICBfbG9hZF9zY3JpcHQoIi8vZDNyeGFpajU2dmplZ2UuY2xvdWRmcm9udC5uZXQvZm9ybS1zZXJpYWxpemUvMC4zL3NlcmlhbGl6ZS5taW4uanMiLCBmdW5jdGlvbigpIHsKICAgIHdpbmRvdy5fZm9ybV9zZXJpYWxpemUgPSB3aW5kb3cuc2VyaWFsaXplOwogICAgaWYgKHdpbmRvdy5fb2xkX3NlcmlhbGl6ZSkgd2luZG93LnNlcmlhbGl6ZSA9IHdpbmRvdy5fb2xkX3NlcmlhbGl6ZTsKICB9KTsKICB2YXIgZm9ybV9zdWJtaXQgPSBmdW5jdGlvbihlKSB7CiAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICBpZiAodmFsaWRhdGVfZm9ybSgpKSB7CiAgICAgIC8vIHVzZSB0aGlzIHRyaWNrIHRvIGdldCB0aGUgc3VibWl0IGJ1dHRvbiAmIGRpc2FibGUgaXQgdXNpbmcgcGxhaW4gamF2YXNjcmlwdAogICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbaWRePSJfZm9ybSJdW2lkJD0iX3N1Ym1pdCJdJykuZGlzYWJsZWQgPSB0cnVlOwogICAgICAgICAgICB2YXIgc2VyaWFsaXplZCA9IF9mb3JtX3NlcmlhbGl6ZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnX2Zvcm1fOV8nKSk7CiAgICAgIHZhciBlcnIgPSBmb3JtX3RvX3N1Ym1pdC5xdWVyeVNlbGVjdG9yKCcuX2Zvcm1fZXJyb3InKTsKICAgICAgZXJyID8gZXJyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZXJyKSA6IGZhbHNlOwogICAgICBfbG9hZF9zY3JpcHQoJ2h0dHA6Ly9jb21tdW5pY2F0aW9ucy5jZnRlLmVkdWNhdGlvbi9wcm9jLnBocD8nICsgc2VyaWFsaXplZCArICcmanNvbnA9dHJ1ZScpOwogICAgfQogICAgcmV0dXJuIGZhbHNlOwogIH07CiAgYWRkRXZlbnQoZm9ybV90b19zdWJtaXQsICdzdWJtaXQnLCBmb3JtX3N1Ym1pdCk7Cn0pKCk7Cgo8L3NjcmlwdD4=[/fusion_code][/fusion_builder_column][/fusion_builder_row][/fusion_builder_container]