{"id":1930,"date":"2026-04-15T18:20:41","date_gmt":"2026-04-15T18:20:41","guid":{"rendered":"https:\/\/as-nas.com\/?p=1930"},"modified":"2026-04-18T08:25:04","modified_gmt":"2026-04-18T08:25:04","slug":"3upgaming-poker-bot-review-2026-how-this-ai-poker-bot-actually-performs-in-real-conditions","status":"publish","type":"post","link":"https:\/\/as-nas.com\/3upgaming-poker-bot-review-2026-how-this-ai-poker-bot-actually-performs-in-real-conditions","title":{"rendered":"3UpGaming Poker Bot Review 2026: How This AI Poker Bot Actually Performs in Real Conditions"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\"><strong>Introduction to AI Poker Bots in 2026<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>The Rise of AI in Online Poker<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Online poker in 2026 doesn\u2019t look anything like it did just a few years ago. What used to be a game dominated by human intuition, gut feelings, and late-night bluffing wars has gradually evolved into a battlefield of algorithms, probability engines, and machine learning systems. AI poker bots like <strong>3UpGaming Poker Bot<\/strong> are no longer fringe tools used by a handful of tech-savvy players they\u2019ve become a serious part of the ecosystem, quietly reshaping how the game is played behind the scenes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">What\u2019s driving this shift? For starters, artificial intelligence has reached a point where it can consistently outperform average and sometimes even advanced human players. Backed by deep learning models and millions of simulated hands, modern poker bots don\u2019t just \u201cplay the odds.\u201d They adapt, learn, and refine strategies in ways that feel almost eerily human. In fact, some high-end bots now incorporate behavioral modeling, meaning they attempt to read opponents based on betting patterns, timing, and historical tendencies.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">There\u2019s also the simple matter of accessibility. Tools like 3UpGaming have lowered the barrier to entry, offering plug-and-play solutions that don\u2019t require users to be programmers or poker experts. This democratization of AI has made it easier than ever for casual players to experiment with automation, whether they\u2019re looking to grind micro-stakes or test strategies in mid-level games.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Still, the rise of AI in poker isn\u2019t without controversy. Many platforms strictly prohibit bot usage, and the ethical debate continues to simmer. But rules aside, one thing is undeniable: AI is here, and it\u2019s changing the game. The real question isn\u2019t whether bots exist\u2014it\u2019s how well they actually perform in real-world conditions. That\u2019s exactly what this review sets out to uncover.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Why Players Are Turning to Poker Bots<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Let\u2019s be honest online poker can be exhausting. Long sessions, tough opponents, emotional swings, and the constant pressure to make optimal decisions can wear down even the most disciplined players. That\u2019s where poker bots step in, offering something incredibly tempting: consistency. Tools like the <strong>3UpGaming Poker Bot<\/strong> promise to remove human error from the equation, replacing tilt-prone decision-making with calculated precision.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">One of the biggest reasons players are turning to bots is the pursuit of <strong>passive income<\/strong>. The idea of running a bot that plays multiple tables simultaneously, grinding out small but steady profits, is incredibly appealing. Instead of spending hours glued to a screen, users can theoretically let the software handle the heavy lifting. It\u2019s like having a tireless poker assistant who never gets distracted, never tilts, and never second-guesses itself.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Another factor is the increasing competitiveness of online poker. As more skilled players enter the scene and strategy content becomes widely available, the average skill level has risen dramatically. Casual players often find themselves outmatched, struggling to keep up with advanced concepts like GTO (Game Theory Optimal) play. Bots bridge that gap by executing near-optimal strategies without requiring years of study.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">There\u2019s also a psychological angle. Even experienced players aren\u2019t immune to emotional decision-making chasing losses, overvaluing hands, or folding under pressure. A bot doesn\u2019t have those weaknesses. It sticks to the script, making decisions based purely on data and probabilities.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Of course, not all bots are created equal. Some are clunky, predictable, and easily detected, while others like 3UpGaming claim to offer sophisticated AI that mimics human behavior. That distinction matters, especially when real money and account safety are on the line. So, does 3UpGaming actually live up to the hype, or is it just another overpromised tool in a crowded market? Let\u2019s dig deeper.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What Is 3UpGaming Poker Bot?<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/as-nas.com\/wp-content\/uploads\/2026\/04\/image-87-1024x576-1.webp\" alt=\"3UpGaming Poker Bot Review 2026\" class=\"wp-image-1942\" srcset=\"https:\/\/as-nas.com\/wp-content\/uploads\/2026\/04\/image-87-1024x576-1.webp 1024w, https:\/\/as-nas.com\/wp-content\/uploads\/2026\/04\/image-87-1024x576-1-300x169.webp 300w, https:\/\/as-nas.com\/wp-content\/uploads\/2026\/04\/image-87-1024x576-1-768x432.webp 768w, https:\/\/as-nas.com\/wp-content\/uploads\/2026\/04\/image-87-1024x576-1-390x220.webp?crop=1 390w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Core Features Overview<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">At its core, the <strong>3UpGaming Poker Bot<\/strong> positions itself as a next-generation AI-driven poker assistant designed to automate gameplay while maintaining a human-like approach. Unlike older bots that relied on static decision trees or rigid scripts, 3UpGaming claims to leverage adaptive algorithms that evolve based on in-game dynamics. That\u2019s a bold claim and one that deserves a closer look.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">One of the standout features is its <strong>real-time decision engine<\/strong>, which processes game data instantly and determines the optimal move based on factors like position, stack size, opponent tendencies, and pot odds. This isn\u2019t just about folding weak hands and raising strong ones; the bot aims to replicate nuanced strategies, including semi-bluffs, slow plays, and mixed-frequency actions that are typically associated with advanced human players.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Another key component is <strong>multi-table support<\/strong>. Users can run the bot across several tables simultaneously, dramatically increasing potential volume. For grinders, this is a huge advantage. Instead of playing two or three tables manually, the bot can handle significantly more, theoretically boosting hourly win rates. Of course, this also depends on how well the bot performs under pressure something we\u2019ll explore later.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">3UpGaming also emphasizes <strong>customization<\/strong>. Users can tweak aggression levels, risk tolerance, and specific play styles. Want a tight-aggressive approach? You can set that. Prefer a looser, more exploitative strategy? That\u2019s an option too. This flexibility allows users to align the bot\u2019s behavior with their own goals, whether that\u2019s minimizing risk or maximizing profit.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Security features are another major selling point. The developers claim to include <strong>anti-detection mechanisms<\/strong>, such as randomized timing, variable bet sizing, and human-like pauses. These are designed to make the bot less predictable and harder for poker platforms to identify.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">All of this sounds impressive on paper, but features alone don\u2019t tell the full story. The real test is how these capabilities translate into actual gameplay and whether they hold up when real money is on the line.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Supported Platforms and Games<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Compatibility is often where many poker bots fall short, but 3UpGaming appears to cast a relatively wide net. The bot supports several major online poker platforms, though the exact list can vary depending on updates and regional restrictions. Typically, it\u2019s designed to work with popular clients that have large player pools, which is crucial for maintaining consistent game availability and softer competition.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In terms of game types, 3UpGaming focuses primarily on <strong>Texas Hold\u2019em<\/strong>, which remains the most widely played poker variant online. Both <strong>cash games and tournaments<\/strong> are supported, giving users flexibility in how they deploy the bot. Cash games are often favored for steady grinding, while tournaments offer the potential for larger, albeit less predictable, payouts.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The bot also accommodates different stake levels, from micro-stakes to mid-stakes tables. This is particularly useful for beginners who want to test the waters without risking significant bankrolls. At the same time, more experienced users can scale up, though this comes with increased scrutiny from platforms and tougher competition.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Another notable aspect is its ability to adapt to different table formats, including <strong>6-max and full-ring games<\/strong>. Each format requires a distinct strategic approach, and the bot\u2019s ability to adjust accordingly is a key factor in its overall effectiveness.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">However, it\u2019s worth noting that no bot is universally compatible with every platform. Poker sites frequently update their software and security measures, which can impact functionality. Users need to stay informed and ensure they\u2019re using the latest version of the bot to maintain compatibility.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ultimately, while 3UpGaming offers a solid range of supported platforms and game types, the real question is how well it performs across these environments. Does it maintain consistency, or does its effectiveness vary depending on the setting? That\u2019s where real-world testing becomes essential.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>How 3UpGaming Poker Bot Works<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>AI Decision-Making and Algorithms<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">When people hear \u201cAI poker bot,\u201d they often imagine something mysterious or almost magical working behind the scenes. In reality, the <strong>3UpGaming Poker Bot<\/strong> is built on a combination of statistical modeling, game theory principles, and machine learning layers that attempt to simulate how strong poker players think just faster and without emotional interference. But here\u2019s the thing: not all AI is created equal, and understanding how this one operates helps separate marketing hype from actual capability.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">At its foundation, the bot relies heavily on <strong>Game Theory Optimal (GTO)<\/strong> strategies. That means it doesn\u2019t just play to exploit weak opponents\u2014it plays in a way that is theoretically balanced and difficult to counter. Imagine a player who never becomes predictable, who mixes bluffs and value bets at mathematically sound frequencies. That\u2019s the baseline behavior. On top of that, 3UpGaming layers in <strong>exploitative adjustments<\/strong>, meaning it can deviate from GTO when it detects patterns in opponents\u2019 behavior.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For example, if a player folds too often to aggression, the bot may increase its bluff frequency. If someone calls too much, it tightens up and leans into value betting. This dual-layer approach GTO for safety and exploitative play for profit\u2014is what gives the bot its edge in softer games.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Another important element is <strong>range-based thinking<\/strong>. Instead of evaluating hands in isolation, the bot considers entire ranges of possible hands both its own and its opponents\u2019. This allows it to make more nuanced decisions, especially in complex post-flop scenarios where many variables come into play.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Speed is also a major advantage. While a human might take several seconds to calculate pot odds, implied odds, and opponent tendencies, the bot does this almost instantly. That efficiency becomes especially valuable when multi-tabling, where cognitive load would overwhelm most players.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Still, it\u2019s worth questioning how \u201cadaptive\u201d the AI really is. While it does adjust within sessions, it\u2019s not truly learning in the same way a human does over months or years unless it\u2019s paired with external data inputs. So while the decision-making feels dynamic, it operates within predefined boundaries set by its developers.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Real-Time Game Adaptation<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">One of the most heavily advertised features of the <strong>3UpGaming Poker Bot<\/strong> is its ability to adapt in real time. This isn\u2019t just a buzzword it\u2019s a critical requirement for surviving in modern online poker, where static strategies quickly get exposed. But how well does this adaptation actually work when the cards are on the table?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In practice, the bot tracks several key variables during gameplay: opponent aggression levels, fold frequencies, bet sizing patterns, and timing tells. By analyzing these factors, it builds a rough profile of each player at the table. Think of it like a mental note-taking system that never forgets and updates continuously.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For instance, if an opponent consistently raises from late position but folds to re-raises, the bot will start applying pressure in those spots. If another player only bets big when they have strong hands, the bot becomes more cautious against large bets. These adjustments happen on the fly, without needing manual input from the user.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">There\u2019s also an element of <strong>timing randomization<\/strong>, which plays a subtle but important role. Human players don\u2019t act instantly every time they hesitate, think, and sometimes even misclick. The bot mimics this by introducing slight delays and variability in its actions. This doesn\u2019t improve decision quality, but it does make behavior appear more human, which ties into detection avoidance.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">However, adaptation has its limits. The bot performs best in environments where player tendencies are clear and consistent\u2014typically lower to mid-stakes games. Against highly skilled opponents who balance their ranges and mix strategies effectively, the bot\u2019s edge becomes thinner. It\u2019s not that it fails outright, but the advantage narrows significantly.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Another interesting observation is how the bot handles <strong>table dynamics<\/strong>. If a table becomes too aggressive or too tight, it adjusts its overall strategy accordingly. This macro-level adaptation helps maintain stability over long sessions, especially when multi-tabling across different environments.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So, does it truly \u201clearn\u201d like a human? Not quite. But within the scope of a single session or short-term play, its ability to adjust is solid and in many cases, more consistent than the average player.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Installation and Setup Experience<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>System Requirements<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Before diving into performance, it\u2019s worth looking at something far less glamorous but equally important: whether your system can actually run the <strong>3UpGaming Poker Bot<\/strong> smoothly. The good news is that it doesn\u2019t demand a high-end gaming rig, but it\u2019s also not as lightweight as some older, simpler bots.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">At a minimum, you\u2019re looking at a modern operating system typically <strong>Windows 10 or later<\/strong> along with at least <strong>8GB of RAM<\/strong>. While the bot might run on lower specs, performance can become inconsistent, especially when multi-tabling. And since one of the main advantages of using a bot is handling multiple tables at once, cutting corners on hardware can undermine the entire experience.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Processing power also matters more than you might expect. The AI engine runs continuous calculations in real time, so a <strong>multi-core CPU<\/strong> is strongly recommended. If you\u2019re running four, six, or more tables simultaneously, those computations add up quickly. Lag or delays in decision-making aren\u2019t just annoying they can directly impact profitability.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Storage requirements are relatively modest, but a <strong>solid-state drive (SSD)<\/strong> helps with faster loading times and smoother operation. Internet stability is another often-overlooked factor. A dropped connection mid-hand can cause misplays or even disconnect you from tables, which is something no bot can fully compensate for.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">There\u2019s also the question of virtualization or VPS (Virtual Private Server) usage. Some users prefer running bots on remote servers for added anonymity and uptime. 3UpGaming supports this setup, but it requires additional configuration and, in some cases, extra cost.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In short, while the system requirements aren\u2019t extreme, they\u2019re not trivial either. Treating this like a \u201cset it and forget it\u201d tool on an old laptop is likely to lead to frustration. A stable, moderately powerful setup makes a noticeable difference in both performance and reliability.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step-by-Step Setup Process<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Getting started with the <strong>3UpGaming Poker Bot<\/strong> is relatively straightforward, but that doesn\u2019t mean it\u2019s completely foolproof. The setup process walks a line between user-friendly and slightly technical, depending on your familiarity with poker software and third-party tools.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The first step usually involves downloading the software from the official source and verifying your license. This part is simple enough, but it\u2019s crucial to avoid unofficial versions, which can be outdated or even compromised. Once installed, the bot needs to be linked to your chosen poker client. This is where things can get a bit tricky.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Most bots, including 3UpGaming, rely on <strong>screen reading or API integration<\/strong> to interpret game data. That means you may need to configure display settings, table layouts, and resolution to ensure compatibility. It\u2019s not overly complicated, but it does require attention to detail. A misaligned table or incorrect setting can cause the bot to misread information, leading to poor decisions.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">After that, users typically configure their <strong>strategy profiles<\/strong>. This includes selecting aggression levels, bankroll management rules, and table limits. While there are default presets, spending time fine-tuning these settings can significantly impact results. Think of it like setting the personality of your bot it determines how it behaves in different situations.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Testing is an essential step that many users overlook. Running the bot in low-stakes games or demo environments allows you to identify issues without risking much money. It also gives you a feel for how the bot operates, which is valuable if you plan to intervene or adjust settings later.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Overall, the setup process is manageable but not entirely plug-and-play. There\u2019s a learning curve, especially for beginners. Once everything is configured correctly, though, the experience becomes much smoother and that\u2019s when the real evaluation begins.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>User Interface and Ease of Use<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Dashboard and Controls<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The first thing you notice after launching the <strong>3UpGaming Poker Bot<\/strong> isn\u2019t its intelligence it\u2019s its interface. And honestly, that matters more than most people expect. A powerful bot with a confusing dashboard is like a sports car with a broken steering wheel. Fortunately, 3UpGaming strikes a fairly reasonable balance between functionality and usability, though it\u2019s not without a few quirks.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The main dashboard is designed to give you a centralized view of everything happening in real time. You can see active tables, current hands, win\/loss metrics, and decision logs all in one place. For someone running multiple tables, this kind of visibility is essential. It allows you to monitor performance without constantly switching between windows, which can quickly become overwhelming.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Controls are generally intuitive. You can start or stop the bot, adjust table limits, and switch between strategy profiles with just a few clicks. There\u2019s also a live feed of the bot\u2019s decisions, which is surprisingly useful. Watching how it reacts in different scenarios gives you insight into its logic\u2014almost like peeking inside the mind of a disciplined poker player who never tilts.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">However, it\u2019s not perfectly beginner-friendly. Some of the terminology and settings assume a basic understanding of poker strategy. If you\u2019re new to concepts like aggression frequency or positional ranges, parts of the interface might feel a bit dense. It doesn\u2019t hold your hand, and in some ways, that\u2019s intentional. This tool is clearly built with semi-serious users in mind rather than complete novices.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Another interesting feature is the <strong>session analytics panel<\/strong>, which tracks performance over time. You can review hand histories, identify trends, and even spot leaks in how the bot is configured. It\u2019s not as advanced as dedicated poker tracking software, but it adds a layer of transparency that many competing bots lack.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In everyday use, the interface feels stable and responsive. Crashes are rare, and updates tend to improve usability incrementally. It\u2019s not flashy, but it gets the job done and when real money is involved, reliability beats aesthetics every time.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Customization Options<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">If there\u2019s one area where the <strong>3UpGaming Poker Bot<\/strong> genuinely stands out, it\u2019s customization. This isn\u2019t a one-size-fits-all tool; it\u2019s more like a configurable engine that you can tweak to match your risk tolerance, play style, and overall goals. That flexibility is a big part of its appeal but it also introduces complexity.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Users can adjust a wide range of parameters, including <strong>pre-flop ranges, post-flop aggression, bluff frequency, and bankroll management rules<\/strong>. Want the bot to play tight and conservative, folding marginal hands and avoiding risky bluffs? You can do that. Prefer a loose, high-variance style that pressures opponents and chases bigger pots? That\u2019s also on the table.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">There\u2019s also the ability to create multiple profiles and switch between them depending on the game environment. For example, you might use a more aggressive setup in softer games and a balanced GTO approach in tougher ones. This level of control allows for strategic flexibility that many simpler bots simply don\u2019t offer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">One particularly useful feature is <strong>bet sizing customization<\/strong>. Instead of fixed bet sizes, the bot can randomize within a defined range, making its behavior less predictable. This not only improves performance but also helps reduce the risk of detection, as repetitive patterns are a common red flag for poker platforms.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That said, more options don\u2019t always mean better outcomes. Without a solid understanding of poker strategy, it\u2019s easy to misconfigure the bot and unintentionally reduce its effectiveness. In some cases, users who stick with default or lightly adjusted settings actually perform better than those who try to micromanage every detail.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Think of customization here like tuning a musical instrument. In the right hands, it produces something impressive. In the wrong hands, it can sound completely off. The potential is there but it requires some knowledge and restraint to fully realize it.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Real-World Performance Testing<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/as-nas.com\/wp-content\/uploads\/2026\/04\/image-89-1024x576-1.webp\" alt=\"3UpGaming Poker Bot Review 2026\" class=\"wp-image-1943\" srcset=\"https:\/\/as-nas.com\/wp-content\/uploads\/2026\/04\/image-89-1024x576-1.webp 1024w, https:\/\/as-nas.com\/wp-content\/uploads\/2026\/04\/image-89-1024x576-1-300x169.webp 300w, https:\/\/as-nas.com\/wp-content\/uploads\/2026\/04\/image-89-1024x576-1-768x432.webp 768w, https:\/\/as-nas.com\/wp-content\/uploads\/2026\/04\/image-89-1024x576-1-390x220.webp?crop=1 390w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Cash Games Performance<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Now we get to the part that really matters: how the <strong>3UpGaming Poker Bot<\/strong> performs when real money is on the line. Features and design are one thing, but performance in live cash games is where claims either hold up or fall apart.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In lower-stakes cash games, the bot performs surprisingly well. These environments tend to include more casual players who make frequent mistakes overvaluing weak hands, calling too often, or playing too passively. The bot capitalizes on these tendencies effectively, using a mix of value betting and selective aggression to grind out consistent profits.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">During extended testing sessions, one noticeable strength was its <strong>discipline<\/strong>. It doesn\u2019t chase losses or deviate from its strategy after a bad beat. That alone gives it an edge over many human players. Over hundreds or even thousands of hands, this consistency translates into steady, if not spectacular, gains.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">However, the picture changes slightly as you move up in stakes. At mid-level tables, where players are more experienced and strategies are better balanced, the bot\u2019s edge becomes less pronounced. It still holds its own, but the win rate drops, and variance becomes more noticeable. In these games, small mistakes or predictable patterns can be exploited more easily.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Another factor is table selection. The bot doesn\u2019t inherently choose the best tables it plays where you put it. This means results can vary significantly depending on game quality. In softer games, it can feel almost effortless. In tougher environments, it becomes more of a break-even grinder.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Multi-tabling is where the bot really shines. While a human might struggle to maintain focus across several tables, the bot handles it seamlessly. This increases overall volume, which can compensate for lower win rates per table. It\u2019s a classic quantity-over-quality approach, and it works up to a point.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Tournament Results<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Tournaments are a completely different beast, and the <strong>3UpGaming Poker Bot<\/strong> approaches them with mixed results. Unlike cash games, where stacks are deep and decisions are relatively consistent, tournaments involve changing dynamics\u2014blinds increase, stack sizes shrink, and pressure intensifies as players get closer to payouts.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In early stages, the bot performs solidly. With deeper stacks and less pressure, it can apply standard strategies effectively, building chips without taking unnecessary risks. It plays tight but opportunistic, which is generally a sound approach.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The middle stages are where things get more interesting. As blinds rise and stack sizes vary, the bot adjusts its aggression levels, but not always perfectly. Human players often shift gears more creatively in these phases, exploiting specific opponents or table dynamics. The bot\u2019s adjustments feel more systematic, which can limit its upside.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Late-stage play\u2014especially near the bubble or final table is where the limitations become more apparent. These situations require a deep understanding of <strong>ICM (Independent Chip Model)<\/strong> and psychological pressure. While the bot incorporates some ICM logic, it doesn\u2019t always capture the nuance of human behavior in high-stakes moments.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That doesn\u2019t mean it fails outright. It can still cash in tournaments and occasionally make deep runs. But compared to its cash game performance, results are less consistent and more variance-driven.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you\u2019re expecting it to dominate tournaments, you might be disappointed. If you see it as a tool for occasional participation and supplementary income, it makes more sense. The reality is that tournament poker rewards adaptability and creativity areas where even advanced bots still have room to improve.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Profitability and ROI Analysis<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Short-Term Gains<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">When evaluating the <strong>3UpGaming Poker Bot<\/strong>, short-term profitability is usually where users first form their opinion and often where expectations get distorted. In the first few sessions, results can look unusually promising, especially at micro and low stakes. This isn\u2019t magic; it\u2019s mostly a reflection of player pool quality. Many low-stakes games still include a large percentage of recreational players who make fundamental mistakes, and a well-configured bot can exploit that efficiently.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In these early stages, the bot tends to generate a <strong>steady but modest win rate<\/strong>. Think of it less like a lottery ticket and more like a slow, mechanical grinder. Wins accumulate through consistent value betting, disciplined folding, and capitalizing on opponents who overplay weak hands. Because the bot never tilts, it avoids the common downward spirals that human players often experience after a bad beat.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">However, short-term results can be misleading. Variance plays a huge role in poker, and even a well-performing system can show swings that don\u2019t reflect its true strength. A few lucky sessions can make performance look inflated, while a few bad runs can make it seem underwhelming. This is especially true in tournaments, where payouts are heavily skewed toward top finishers.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Another factor is <strong>multi-tabling efficiency<\/strong>. In the short term, users often notice that running multiple tables significantly boosts hourly output. Even if the win rate per table is small, volume compensates for it. This creates the illusion of strong profitability early on, particularly when everything is running smoothly and tables are soft.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Still, short-term gains should be interpreted cautiously. The bot performs best when conditions are favorable and opponents are predictable. Once those conditions shift, the numbers tend to normalize. In other words, early profits are real but they\u2019re not always representative of long-term sustainability.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Long-Term Sustainability<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Long-term performance is where the <strong>3UpGaming Poker Bot<\/strong> is truly tested and where expectations need to be more grounded. Over extended periods, several structural factors begin to influence results: increasing opponent skill levels, changing table ecosystems, and stricter platform security measures.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">From a pure gameplay perspective, the bot maintains a <strong>solid but not elite edge<\/strong> in most low to mid-stakes cash games. Its GTO-based foundation ensures it doesn\u2019t deviate into fundamentally weak play, which helps stabilize results over time. However, poker is an evolving environment. As more players study strategy and use tracking tools, the average table becomes tougher, which naturally reduces win rates.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">One of the key long-term challenges is <strong>diminishing edge in competitive pools<\/strong>. In softer environments, the bot can consistently extract value. In tougher games, opponents begin to identify and exploit predictable patterns, even if those patterns are subtle. While 3UpGaming includes some adaptive features, it doesn\u2019t fully match the creativity of strong human regulars who actively adjust their strategies in real time.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bankroll growth over the long term tends to be <strong>slow and linear rather than explosive<\/strong>. This is important because many users enter the space expecting rapid scaling. In reality, poker whether played by humans or bots rarely delivers consistent high returns without significant variance and risk.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">There\u2019s also the operational side of sustainability. Poker platforms frequently update detection systems, and while the bot includes anti-pattern mechanisms, no system is completely future-proof. Users who maintain stable results over time typically combine careful usage patterns with conservative settings rather than pushing aggressive configurations.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In practical terms, long-term ROI is best described as <strong>moderate and dependent on conditions<\/strong>. It can be profitable, but it is not a guaranteed income system. Treating it as a disciplined grinding tool rather than a shortcut to high earnings leads to more realistic expectations and more stable outcomes.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Safety, Detection, and Risks<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Anti-Ban Mechanisms<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">One of the most sensitive aspects of using any poker bot, including the <strong>3UpGaming Poker Bot<\/strong>, is detection risk. Online poker platforms invest heavily in security systems designed to identify automated behavior, and this creates an ongoing cat-and-mouse dynamic between bot developers and site enforcement teams.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To address this, 3UpGaming incorporates a range of <strong>anti-detection techniques<\/strong>. These include randomized decision timing, variable bet sizing, and behavioral simulation designed to mimic human inconsistencies. For example, instead of acting instantly every time, the bot introduces slight delays that resemble human hesitation. Similarly, it avoids repetitive betting patterns that could be flagged as algorithmic behavior.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Another layer involves <strong>session variability<\/strong>, where the bot subtly changes its play style over time. This helps reduce predictability, which is one of the primary indicators security systems look for. Combined with multi-table dispersion, the goal is to blend into the general player pool rather than stand out as an outlier.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Some setups also recommend using <strong>VPS environments or isolated systems<\/strong> to reduce local footprint detection. While this doesn\u2019t directly prevent detection at the poker site level, it can help minimize external signals that might contribute to behavioral profiling.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Despite these precautions, it\u2019s important to understand a fundamental reality: no anti-bot system is perfect. Detection technology evolves continuously, and platforms regularly update their monitoring models. What works today may be less effective tomorrow, and long-term reliance on any bot carries inherent uncertainty.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Risks of Using Poker Bots<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Beyond detection, there are broader risks associated with using tools like the <strong>3UpGaming Poker Bot<\/strong>, and these risks extend beyond simple account bans. The most obvious is <strong>account suspension or permanent bans<\/strong> from poker platforms. If detected, users may lose access to their accounts, including any remaining balance, pending withdrawals, or loyalty rewards.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">There is also a financial risk tied to <strong>variance and misconfiguration<\/strong>. A poorly configured bot can lose money quickly, especially in tougher games or during volatile stretches. Unlike human players, who can adjust intuitively, a misconfigured bot will continue executing flawed strategies until manually corrected.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Another often overlooked risk is <strong>overreliance on automation<\/strong>. Users may become detached from the strategic side of poker, relying entirely on the bot without understanding why certain decisions are made. This can limit long-term skill development and make it difficult to adapt if the tool becomes unavailable.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Legal and ethical considerations also vary by platform and jurisdiction. Many poker sites explicitly prohibit bot usage in their terms of service, which means users are operating in a restricted or gray area. This doesn\u2019t necessarily involve legal consequences in most regions, but it does create a contractual risk with the platform itself.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Finally, there\u2019s the psychological risk of <strong>false confidence in automation<\/strong>. Early wins can create the impression of guaranteed income, which may lead to unrealistic scaling or increased financial exposure. When variance inevitably hits, the impact can feel abrupt and discouraging.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In short, while 3UpGaming includes protective mechanisms, it does not eliminate risk. Users operate in an environment where profitability, detection, and platform policies constantly interact, and none of these variables are fully under control.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Conclusion<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The <strong>3UpGaming Poker Bot (2026)<\/strong> presents itself as a capable AI-driven tool that can automate online poker with a surprising level of strategic depth. In real conditions, it performs strongest in <strong>low to mid-stakes cash games<\/strong>, where weaker opponents and predictable patterns allow its GTO-based engine and exploitative adjustments to generate steady, moderate returns. Its ability to multi-table efficiently, stay emotionally neutral, and execute consistent decision-making gives it a clear advantage over casual human players.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">However, its performance is not universally dominant. In <strong>higher-stakes games and advanced tournament stages<\/strong>, the bot\u2019s limitations become more visible. Situations requiring deep ICM awareness, creative pressure adjustments, and highly adaptive human reads expose the gap between algorithmic consistency and elite-level human intuition. As a result, profitability becomes more variance-dependent and less predictable at higher skill levels.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">From a usability standpoint, the bot is relatively well-designed, offering a clean interface and flexible customization options. But that flexibility also introduces complexity, meaning users need at least a basic understanding of poker strategy to avoid misconfiguration. On the technical side, it runs smoothly on standard systems and supports multi-tabling effectively, which is one of its main value drivers.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The biggest trade-off, however, lies in <strong>risk versus reward<\/strong>. While anti-detection mechanisms exist, no system can fully eliminate the possibility of platform detection or account penalties. Combined with natural variance and evolving poker ecosystems, long-term results are best described as <strong>stable but not guaranteed<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In practical terms, the 3UpGaming Poker Bot is not a shortcut to effortless profit, but rather a structured automation tool that can produce consistent results under the right conditions. Its effectiveness depends heavily on game selection, configuration quality, and risk tolerance. Users expecting guaranteed income are likely to be disappointed, while those treating it as a controlled, analytical grinding assistant will find it more aligned with reality.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>FAQs<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>1. Is 3UpGaming Poker Bot profitable in 2026?<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">It can be profitable in low to mid-stakes cash games under good conditions, but earnings are usually moderate and depend heavily on game softness, configuration, and variance.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>2. Can the bot be detected by poker platforms?<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Yes. While it includes anti-detection features like randomized timing and behavior simulation, no poker bot is completely undetectable in the long term.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>3. Does it work better in cash games or tournaments?<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">It performs more consistently in <strong>cash games<\/strong>. Tournament play is more volatile and requires deeper adaptive decision-making, where performance is less stable.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>4. Do I need poker experience to use it effectively?<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Basic poker knowledge is highly recommended. Without understanding concepts like position, ranges, and aggression, it\u2019s easy to misconfigure the bot and reduce performance.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>5. Is using a poker bot legal?<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">It depends on the platform. Most online poker sites prohibit bots in their terms of service, meaning usage can result in account suspension or bans.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction to AI Poker Bots in 2026 The Rise of AI in Online Poker Online poker in 2026 doesn\u2019t look anything like it did just a few years ago. What used to be a game dominated by human intuition, gut feelings, and late-night bluffing wars has gradually evolved into a battlefield of algorithms, probability engines, &hellip;<\/p>\n","protected":false},"author":1,"featured_media":1941,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"{\"document\":\"AAAMr\/bY3Bfs0sf6B6kNyg6SjRUGAvLxFKbGAoLjAYL7ApKMA5SlA9K8AqqlA8DxAZx2iMUDgHTamRIBA1QmuAIBAQgCQkgAvAEBAQgCQkgArgEBAQgCpAwC6AwASACOEAEBCAKCBAI2Av4EAEgAshABAQgCQgBIAJwMAQEIAkIASACUDAEBCAJCSAC8AQEBCAIeAmIASACUDgEBCAJCAEgAuA4BAQgCQgBIAKANAQEIAo4DAtIDAEgAigkBAQgClAMCHAL2AwBIAK4MEAEBCAJCSACqAQEBCAJCSACeAQEBCAKiCwLmCwBIAL4MAQEIAkIASACqDgEBCAKsDALwDABIALwNAQEIAkIASACWDAEBCAJCAEgAnAkBAQgCuAQC\/AQASAC8BgEBCAJCSACsAQEBCAJCAEgAjA0BAQgCQgBIAKoMAQEIAkIASACwCgEBCAJCAEgArggBAQgCQgBIAKAJAQEIAkIASACeCQEBCAEASAIFAEJItAEBAQgCQkgAtAEBAQgCkgoC1goASACmEAEBCAJCAEgAiBEBAQgChAYCyAYASACWCQEBCAK+BALCBQBIAI4KAQEIAkIASACOCQEBCAJCAEgAogoBAQgCQkgApAEBAQgCsAQC9AQASACCCwEBCAJCAEgAmgoBAQgCQgBIALIKAQEIAq4EAvIEAEgAugwBAQgCQgBIAJgLAQEIAkIASACGCgEBCAKcBALgBABIAKYGEAEBCAJCSAC0AQEBCAJCSACYAQEBCAJCAEgAjgoBAQgCsgECnAEC1AMASACQDQEBCAKKCgLOCgBIAKwLAQEIAkIASAC2CgEBCAJCAEgAqAgBAQgCQgBIAI4JAQEIAkJIAKYBAQEIAkIASACYCQEBCAJCAEgAvgoBAQgCQgBIALgMAQEIApAKAtQKAEgAjgwBAQgCQgBIAJQJAQEIAqQGAugGAEgAjggBAQgBAEjOqgSgswSMEJwBsBCeIZIOqCCICZwBrAykBKwEvAygEboNghq6BqRWpBC+E5QJnAGMCoYcgAucGbgMrhmkBjCSA4wUjg2cAaoLukuMDIoMjAgwLBDKiAUFAEJInooFAQEIAkJIAJ4BAQEIApQDAtgDAEgAhg0BAQgCQgBIAKIMAQEIAkIASACYDAEBCAJCAEgAvgwBAQgCQgBIALIKAQEIApgFAtwFAEgAvgcBAQgCQkgAnAEBAQgCpgkC6gkASAC+CgEBCAJCAEgAjAwBAQgCQgBIAJQKAQEIAkIASACwCgEBCAJCAEgAqgoBAQgCtgUC+gUASACMCBABAQgCQkgArgEBAQgCQkgAngEBAQgCjAcC0AcASAC8BwEBCAKiBALmBABIAJYLAQEIAkIASACiCgEBCAJCAEgArgsBAQgCqAIC7AIASACeCQEBCAKCCQLGCQBIALIJAQEIAkJIAJYBAQEIAkIASAC+CgEBCAJCAEgAvgcBAQgCQgBIAIILAQEIArIBAvYBAEgAjAsBAQgCQgBIAKAGAQEIAq4HAvIHAEjI\/AEsjJoCrje8B5oFvAq+MooIqASsBLoHnAGUC6AanAmcAbAJoCeKC5YJ\/rICtLwCAQEIAQBIAgUAQki2AQEBCAJCSACSAQEBCAKEBALIBABIAIoQAQEIAkIASACgDQEBCAJCAEgAggwBAQgCQgBIAKQLAQEIAp4HAuIHAEgAtgkBAQgCQkgAogEBAQgCrgIC8gIASACKCgEBCAJCAEgAog0BAQgCQgBIALoNAQEIAowGAoABAtIHAEgAvgkBAQgCQgBIAJYLAQEIAkIASACQChABAQgCQkgAqgEBAQgCQkgAmAEBAQgCQgBIAKIKAQEIAkIASAC+DQEBCAJCAEgAugoBAQgCQgBIAIAJAQEIAkIASACUCgEBCAJCSACkAQEBCAJCAEgAoAwBAQgCQgBIAKYKAQEIAkIASACeCgEBCAJCAEgAvAoBAQgCQgBIAKQJAQEIAkIASAC8BwEBCAEASAIFAEJIjgEBAQgCQgBIALARAQEIAkIASACiDgEBCAJCAEgAig0BAQgCQgBIAJALAQEIAkIASACoDgEBCABIABABAQgCQkgAOgEBCAJCSACMAgEBCAJCAEgAsAUBAQgCQkgAjgIBAQgCQgBIAIIFAQEIAkJIAJoCAQEIAkIASACuBQEBCAJCSACaAgEBCAJCAEgAqgUBAQgCQkgArgEBAQgCQgBI6tsF5IIB9D\/6kAXIXegVngGi8gSqDrpvqAm60QKwlgHa6AOS8weIELAqtAmgBYgKrB+8CcbpD+zJAZAJHvBmrJ8EsHKkCpTeAc6PBwIkpsoBgI8N\/swIpIwM6ugD6AbkjAPuMf4kxkCIM9SjBpT5BI6BA7o9nhGKL4g8oJQElA\/gyw7GIuA\/8CX2bfJrwiewqASOMrZtmoUBki+uSqYmxosIoIMBvsUVAQEIAQBIAgQCAQAOTgEC0rcVjqoJpo0MAQEIAQBIAgQCAQAOTgEC9MkWrIwVqr0B9IgRrASWlQeGsQjDAaobpsYCkowTzq4OkowDlKUD0rwCqqUDwPEBnHaIxQOk7gPy4gssARG2yQHkggH0P\/qQBchd6BWeAaLyBKoOum+wlgKyRLCWAdroAwEG+PcG7MkBkAke8GasnwSwcqQKlN4BwsQFgI8N\/swIpIwM6ugD6AbkjAPuMf4kxkCIM9SjBpT5BI6BA7o9nhGKL4g8oJQElA\/gyw7GIuA\/8CX2bfJrwiewqASOMrZtmoUBki+uSqYm\/oUHjA26qwnQ\/ASsBJaVB\/EPKACoACgAqAHECyECJwIoACEAKAQnACgFIQEnAAQABwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBACBAIQAKAEnAIcAKAInAQQAhAGBAIQAKAEnAIcAKAInAQQAKAEnAIcAKAInAQQAKAEnAIcAKAInAQQAKAAnAIcAKAInAQQAgQCEACgBJwCHACgCJwEEACgBJwCHACgCJwEEACgBJwCHACgCJwEEAIEAhAAoAScAhwAoAicBBACBAIQAgQCEACgBJwCBAAAAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBACBAIQAKAEnAIcAKAInAQQAKAEnAIcAKAInAQQAgQCEACgBJwCHACgCJwEEACgBJwCHACgCJwEEACgBJwCHACgCJwEEAIEAhAAoAScAhwAoAicBBAAoACcAhwAoAicBBAAoAScAhwAoAicBBAAoAScAhwAoAicBBAAoAScAhwAoAicBBAAoAScAhwAoAicBBAAoAScAhwAoAicBBAAoAScAhwAhACgAIQAnASEBJwCoAQQAKACHACgCJwEEACgAJwCHACgCJwEEAIEAhAAoAScAhwAoAicBBAAoAScAhwAoAicBBACBAIQAKAEnAIcAKAInAQQAgQCEACgBJwCHACgCJwEEACgBJwCHACgCJwEEACgBJwCHACgCJwEEACgAJwCHACgCJwEEAIQBKAEnAIcAKAInAQQAKAEnAIcAKAInAQQAKAEnAIcAKAInAQQAgQCEACgBJwCHACgCJwEEACgBJwCHACgCJwEEACgBJwCHACgCJwEEAIEAhAAoAScAgQAAAIcAKAInAQQAKAAnAIcAKAInAQQAKAAnAIcAKAInAQQAKAEnAIcAKAInAQQAgQCEAIEAhAAoAScAhwAoAicBBACBAIQAKAEnAIcAKAInAQQAKAEnAIcAKAInAQQAKAEnAIcAKAInAQQAKAEnAIcAKAInAQQAKAAnAIcAKAInAQQAKAEnAIcAKAInAQQAKAEnAIcAKAInAQQAKAEnAIcAKAInAQQAgQCEACgBJwCHACgCJwEEACgBJwCHACgCJwEEAIEAhAAoAScAhwAhACgAIQAnASEBJwAEAIEAhACBAIQAgQCEAIEAhACBAIQBgQCEAIEAhACBAIQAgQCEAIEAhACBAIQAgQCEAIEAhACBAIQAgQCEAIEAhACBAIQAgQCEAIEAhAGBAIQAqAEEACgAhwAoAicBBAAoACcAhwAoAicBBACBAIQAKAEnAIcAKAInAQQAKAEnAIcAKAInAQQAKAEnAIcAKAInAQQAKAEnAIcAKAInAQQAKAEnAIcAKAInAQQAgQCEACgBJwCHACgCJwEEACgAJwCHACgCJwEEAIEAhAAoAScAhwAoAicBBAAoAScAhwAoAicBBAAoAScAhwAoAicBBAAoAScAhwAoAicBBAAoAScAhwAoAicBBACBAIQAKAEnAIEAAACHACgCJwEEACgAJwCHACgCJwEEACgAJwCHACgCJwEEAIEAhAAoAScAhwAoAicBBACEASgBJwCHACgCJwEEACgBJwCHACgCJwEEACgBJwCHACgCJwEEAIEAhAAoAScAhwAoAicBBACBAIQAKAEnAIcAKAInAQQAKAAnAIcAKAInAQQAKAEnAIcAKAInAQQAKAEnAIcAKAInAQQAKAEnAIcAKAInAQQAgQCEACgBJwCHACgCJwEEACgBJwCHACgCJwEEAIQBKAEnAMQAwQDEAMEAxADBAMQAwQDEAcEAxADBAMQAwQDEAMEAxADBAMQAwQCHACEAKAAhACcBIQEnAKgBBAAoAIcAKAInAQQAKAAnAIcAKAInAQQAhAEoAScAhwAoAicBBAAoAScAhwAoAicBBAAoAScAhwAoAicBBAAoAScAhwAoAicBBACBAIQAKAEnAIcAKAInAQQAKAAnAIcAKAInAQQAgQCEACgBJwCHACgCJwEEACgBJwCHACgCJwEEACgBJwCHACgCJwEEAIEAhAIoAScAhwAoAicBBAAoAScAhwAoAicBBAAoAScAgQAAAIcAKAInAQQAKAAnAIcAKAInAQQAKAAnAIcAKAInAQQAKAEnAIcAKAInAQQAKAEnAIcAKAInAQQAKAEnAIcAKAInAQQAKAEnAIcAKAInAQQAKAEnAIcAKAInAQQAKAAnAIcAKAInAQQAKAEnAIcAKAInAQQAKAEnAIcAKAInAQQAKAEnAIcAKAInAQQAKAEnAIcAKAInAQQAKAEnAIcAKAInAQQAKAEnAIcAIQAoACEAJwEhAScAqAEEACgAhwAoAicBBAAoAScAhwAoAicBBAAoAScAhwAoAicBBAAoAScAhwAoAicBBAAoAScAhwAoAicBBAAoAScAhwAoAicAKAEnAIcAKAInAQQAKAAnAIcAKAInAQQAKAAnAIcAKAInAQQAKAEnAIcAKAInAQQAKAAnAIcAKAInAQQAKAEnAIcAKAInAQQAKAAnAIcAKAInAQQAKAEnAIcAKAInAQQAKAAnAIcAKAInAQQAKAEnAIcAKAInAQQAKAAnAIcAKAInAQQAKAEnAMQNwQDEAMEAxADBAMQAwQDECaECIQHEAsEAxBbBAMQFqADHACEAKAAhACcAIQInAKgBIQAnACgAqAAoBMQAxwAhACgAIQAnACECJwCoASEAJwAoAKgAKASoAKEAqADEAqic2AXvywVzdGF0ZXZlcnNpb25kb2N1bWVudHNsdWcgIDxwPldoYXTigJlzIGRyaXZpbmcgdGhpcyBzaGlmdD8gRm9yIHN0YXJ0ZXJzLCBhcnRpZmljaWFsIGludGVsbGlnZW5jZSBoYXMgcmVhY2hlZCBhIHBvaW50IHdoZXJlIGl0IGNhbiBjb25zaXN0ZW50bHkgb3V0cGVyZm9ybSBhdmVyYWdlIGFuZCBzb21ldGltZXMgZXZlbiBhZHZhbmNlZCBodW1hbiBwbGF5ZXJzLiBCYWNrZWQgYnkgZGVlcCBsZWFybmluZyBtb2RlbHMgYW5kIG1pbGxpb25zIG9mIHNpbXVsYXRlZCBoYW5kcywgbW9kZXJuIHBva2VyIGJvdHMgZG9u4oCZdCBqdXN0IOKAnHBsYXkgdGhlIG9kZHMu4oCdIFRoZXkgYWRhcHQsIGxlYXJuLCBhbmQgcmVmaW5lIHN0cmF0ZWdpZXMgaW4gd2F5cyB0aGF0IGZlZWwgYWxtb3N0IGVlcmlseSBodW1hbi4gSW4gZmFjdCwgc29tZSBoaWdoLWVuZCBib3RzIG5vdyBpbmNvcnBvcmF0ZSBiZWhhdmlvcmFsIG1vZGVsaW5nLCBtZWFuaW5nIHRoZXkgYXR0ZW1wdCB0byByZWFkIG9wcG9uZW50cyBiYXNlZCBvbiBiZXR0aW5nIHBhdHRlcm5zLCB0aW1pbmcsIGFuZCBoaXN0b3JpY2FsIHRlbmRlbmNpZXMuPC9wPgo8cD5PbmUgb2YgdGhlIG1vc3QgaGVhdmlseSBhZHZlcnRpc2VkIGZlYXR1cmVzIG9mIHRoZSA8c3Ryb25nPjNVcEdhbWluZyBQb2tlciBCb3Q8L3N0cm9uZz4gaXMgaXRzIGFiaWxpdHkgdG8gYWRhcHQgaW4gcmVhbCB0aW1lLiBUaGlzIGlzbuKAmXQganVzdCBhIGJ1enp3b3JkIGl04oCZcyBhIGNyaXRpY2FsIHJlcXVpcmVtZW50IGZvciBzdXJ2aXZpbmcgaW4gbW9kZXJuIG9ubGluZSBwb2tlciwgd2hlcmUgc3RhdGljIHN0cmF0ZWdpZXMgcXVpY2tseSBnZXQgZXhwb3NlZC4gQnV0IGhvdyB3ZWxsIGRvZXMgdGhpcyBhZGFwdGF0aW9uIGFjdHVhbGx5IHdvcmsgd2hlbiB0aGUgY2FyZHMgYXJlIG9uIHRoZSB0YWJsZT88L3A+CiAgICA8cD5JbiBsb3dlci1zdGFrZXMgY2FzaCBnYW1lcywgdGhlIGJvdCBwZXJmb3JtcyBzdXJwcmlzaW5nbHkgd2VsbC4gVGhlc2UgZW52aXJvbm1lbnRzIHRlbmQgdG8gaW5jbHVkZSBtb3JlIGNhc3VhbCBwbGF5ZXJzIHdobyBtYWtlIGZyZXF1ZW50IG1pc3Rha2VzIG92ZXJ2YWx1aW5nIHdlYWsgaGFuZHMsIGNhbGxpbmcgdG9vIG9mdGVuLCBvciBwbGF5aW5nIHRvbyBwYXNzaXZlbHkuIFRoZSBib3QgY2FwaXRhbGl6ZXMgb24gdGhlc2UgdGVuZGVuY2llcyBlZmZlY3RpdmVseSwgdXNpbmcgYSBtaXggb2YgdmFsdWUgYmV0dGluZyBhbmQgc2VsZWN0aXZlIGFnZ3Jlc3Npb24gdG8gZ3JpbmQgb3V0IGNvbnNpc3RlbnQgcHJvZml0cy48L3A+CjxwPklmIHlvdeKAmXJlIGV4cGVjdGluZyBpdCB0byBkb21pbmF0ZSB0b3VybmFtZW50cywgeW91IG1pZ2h0IGJlIGRpc2FwcG9pbnRlZC4gSWYgeW91IHNlZSBpdCBhcyBhIHRvb2wgZm9yIG9jY2FzaW9uYWwgcGFydGljaXBhdGlvbiBhbmQgc3VwcGxlbWVudGFyeSBpbmNvbWUsIGl0IG1ha2VzIG1vcmUgc2Vuc2UuIFRoZSByZWFsaXR5IGlzIHRoYXQgdG91cm5hbWVudCBwb2tlciByZXdhcmRzIGFkYXB0YWJpbGl0eSBhbmQgY3JlYXRpdml0eSBhcmVhcyB3aGVyZSBldmVuIGFkdmFuY2VkIGJvdHMgc3RpbGwgaGF2ZSByb29tIHRvIGltcHJvdmUuPC9wPgo8cD5XaGVuIGV2YWx1YXRpbmcgdGhlIDxzdHJvbmc+M1VwR2FtaW5nIFBva2VyIEJvdDwvc3Ryb25nPiwgc2hvcnQtdGVybSBwcm9maXRhYmlsaXR5IGlzIHVzdWFsbHkgd2hlcmUgdXNlcnMgZmlyc3QgZm9ybSB0aGVpciBvcGluaW9uIGFuZCBvZnRlbiB3aGVyZSBleHBlY3RhdGlvbnMgZ2V0IGRpc3RvcnRlZC4gSW4gdGhlIGZpcnN0IGZldyBzZXNzaW9ucywgcmVzdWx0cyBjYW4gbG9vayB1bnVzdWFsbHkgcHJvbWlzaW5nLCBlc3BlY2lhbGx5IGF0IG1pY3JvIGFuZCBsb3cgc3Rha2VzLiBUaGlzIGlzbuKAmXQgbWFnaWM7IGl04oCZcyBtb3N0bHkgYSByZWZsZWN0aW9uIG9mIHBsYXllciBwb29sIHF1YWxpdHkuIE1hbnkgbG93LXN0YWtlcyBnYW1lcyBzdGlsbCBpbmNsdWRlIGEgbGFyZ2UgcGVyY2VudGFnZSBvZiByZWNyZWF0aW9uYWwgcGxheWVycyB3aG8gbWFrZSBmdW5kYW1lbnRhbCBtaXN0YWtlcywgYW5kIGEgd2VsbC1jb25maWd1cmVkIGJvdCBjYW4gZXhwbG9pdCB0aGF0IGVmZmljaWVudGx5LjwvcD4KPHA+QmFua3JvbGwgZ3Jvd3RoIG92ZXIgdGhlIGxvbmcgdGVybSB0ZW5kcyB0byBiZSA8c3Ryb25nPnNsb3cgYW5kIGxpbmVhciByYXRoZXIgdGhhbiBleHBsb3NpdmU8L3N0cm9uZz4uIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgbWFueSB1c2VycyBlbnRlciB0aGUgc3BhY2UgZXhwZWN0aW5nIHJhcGlkIHNjYWxpbmcuIEluIHJlYWxpdHksIHBva2VyIHdoZXRoZXIgcGxheWVkIGJ5IGh1bWFucyBvciBib3RzIHJhcmVseSBkZWxpdmVycyBjb25zaXN0ZW50IGhpZ2ggcmV0dXJucyB3aXRob3V0IHNpZ25pZmljYW50IHZhcmlhbmNlIGFuZCByaXNrLjwvcD4Kc3RhdGV2ZXJzaW9uZG9jdW1lbnRkYXRlZG9jdW1lbnRzdGF0dXNkb2N1bWVudHRpdGxlZG9jdW1lbnRjb250ZW50ZG9jdW1lbnRleGNlcnB0ZG9jdW1lbnRhdXRob3Jkb2N1bWVudGZlYXR1cmVkX21lZGlhZG9jdW1lbnRjb21tZW50X3N0YXR1c2RvY3VtZW50cGluZ19zdGF0dXNkb2N1bWVudHN0aWNreWRvY3VtZW50dGVtcGxhdGVkb2N1bWVudGZvcm1hdGRvY3VtZW50bWV0YV9qZXRwYWNrX21lbWJlcnNoaXBzX2NvbnRhaW5zX3BhaWRfY29udGVudGZvb3Rub3Rlc19lbGVtZW50b3JfZWRpdF9tb2RlX2VsZW1lbnRvcl90ZW1wbGF0ZV90eXBlX2VsZW1lbnRvcl9kYXRhX2VsZW1lbnRvcl9wYWdlX3NldHRpbmdzZG9jdW1lbnRjYXRlZ29yaWVzZG9jdW1lbnR0YWdzZG9jdW1lbnRibG9ja3MzVXBHYW1pbmcgUG9rZXIgQm90IFJldmlldyAyMDI2OiBIb3cgVGhpcyBBSSBQb2tlciBCb3QgQWN0dWFsbHkgUGVyZm9ybXMgaW4gUmVhbCBDb25kaXRpb25zY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50PHN0cm9uZz5JbnRyb2R1Y3Rpb24gdG8gQUkgUG9rZXIgQm90cyBpbiAyMDI2PC9zdHJvbmc+bGV2ZWxpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudDxzdHJvbmc+VGhlIFJpc2Ugb2YgQUkgaW4gT25saW5lIFBva2VyPC9zdHJvbmc+bGV2ZWxpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudE9ubGluZSBwb2tlciBpbiAyMDI2IGRvZXNu4oCZdCBsb29rIGFueXRoaW5nIGxpa2UgaXQgZGlkIGp1c3QgYSBmZXcgeWVhcnMgYWdvLiBXaGF0IHVzZWQgdG8gYmUgYSBnYW1lIGRvbWluYXRlZCBieSBodW1hbiBpbnR1aXRpb24sIGd1dCBmZWVsaW5ncywgYW5kIGxhdGUtbmlnaHQgYmx1ZmZpbmcgd2FycyBoYXMgZ3JhZHVhbGx5IGV2b2x2ZWQgaW50byBhIGJhdHRsZWZpZWxkIG9mIGFsZ29yaXRobXMsIHByb2JhYmlsaXR5IGVuZ2luZXMsIGFuZCBtYWNoaW5lIGxlYXJuaW5nIHN5c3RlbXMuIEFJIHBva2VyIGJvdHMgbGlrZSA8c3Ryb25nPjNVcEdhbWluZyBQb2tlciBCb3Q8L3N0cm9uZz4gYXJlIG5vIGxvbmdlciBmcmluZ2UgdG9vbHMgdXNlZCBieSBhIGhhbmRmdWwgb2YgdGVjaC1zYXZ2eSBwbGF5ZXJzdGhleeKAmXZlIGJlY29tZSBhIHNlcmlvdXMgcGFydCBvZiB0aGUgZWNvc3lzdGVtLCBxdWlldGx5IHJlc2hhcGluZyBob3cgdGhlIGdhbWUgaXMgcGxheWVkIGJlaGluZCB0aGUgc2NlbmVzLmRyb3BDYXBwbGFjZWhvbGRlcmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50V2hhdOKAmXMgZHJpdmluZyB0aGlzIHNoaWZ0PyBGb3Igc3RhcnRlcnMsIGFydGlmaWNpYWwgaW50ZWxsaWdlbmNlIGhhcyByZWFjaGVkIGEgcG9pbnQgd2hlcmUgaXQgY2FuIGNvbnNpc3RlbnRseSBvdXRwZXJmb3JtIGF2ZXJhZ2XigJRhbmQgc29tZXRpbWVzIGV2ZW4gYWR2YW5jZWRodW1hbiBwbGF5ZXJzLiBCYWNrZWQgYnkgZGVlcCBsZWFybmluZyBtb2RlbHMgYW5kIG1pbGxpb25zIG9mIHNpbXVsYXRlZCBoYW5kcywgbW9kZXJuIHBva2VyIGJvdHMgZG9u4oCZdCBqdXN0IOKAnHBsYXkgdGhlIG9kZHMu4oCdIFRoZXkgYWRhcHQsIGxlYXJuLCBhbmQgcmVmaW5lIHN0cmF0ZWdpZXMgaW4gd2F5cyB0aGF0IGZlZWwgYWxtb3N0IGVlcmlseSBodW1hbi4gSW4gZmFjdCwgc29tZSBoaWdoLWVuZCBib3RzIG5vdyBpbmNvcnBvcmF0ZSBiZWhhdmlvcmFsIG1vZGVsaW5nLCBtZWFuaW5nIHRoZXkgYXR0ZW1wdCB0byByZWFkIG9wcG9uZW50cyBiYXNlZCBvbiBiZXR0aW5nIHBhdHRlcm5zLCB0aW1pbmcsIGFuZCBoaXN0b3JpY2FsIHRlbmRlbmNpZXMuZHJvcENhcHBsYWNlaG9sZGVyaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRUaGVyZeKAmXMgYWxzbyB0aGUgc2ltcGxlIG1hdHRlciBvZiBhY2Nlc3NpYmlsaXR5LiBUb29scyBsaWtlIDNVcEdhbWluZyBoYXZlIGxvd2VyZWQgdGhlIGJhcnJpZXIgdG8gZW50cnksIG9mZmVyaW5nIHBsdWctYW5kLXBsYXkgc29sdXRpb25zIHRoYXQgZG9u4oCZdCByZXF1aXJlIHVzZXJzIHRvIGJlIHByb2dyYW1tZXJzIG9yIHBva2VyIGV4cGVydHMuIFRoaXMgZGVtb2NyYXRpemF0aW9uIG9mIEFJIGhhcyBtYWRlIGl0IGVhc2llciB0aGFuIGV2ZXIgZm9yIGNhc3VhbCBwbGF5ZXJzIHRvIGV4cGVyaW1lbnQgd2l0aCBhdXRvbWF0aW9uLCB3aGV0aGVyIHRoZXnigJlyZSBsb29raW5nIHRvIGdyaW5kIG1pY3JvLXN0YWtlcyBvciB0ZXN0IHN0cmF0ZWdpZXMgaW4gbWlkLWxldmVsIGdhbWVzLmRyb3BDYXBwbGFjZWhvbGRlcmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50U3RpbGwsIHRoZSByaXNlIG9mIEFJIGluIHBva2VyIGlzbuKAmXQgd2l0aG91dCBjb250cm92ZXJzeS4gTWFueSBwbGF0Zm9ybXMgc3RyaWN0bHkgcHJvaGliaXQgYm90IHVzYWdlLCBhbmQgdGhlIGV0aGljYWwgZGViYXRlIGNvbnRpbnVlcyB0byBzaW1tZXIuIEJ1dCBydWxlcyBhc2lkZSwgb25lIHRoaW5nIGlzIHVuZGVuaWFibGU6IEFJIGlzIGhlcmUsIGFuZCBpdOKAmXMgY2hhbmdpbmcgdGhlIGdhbWUuIFRoZSByZWFsIHF1ZXN0aW9uIGlzbuKAmXQgd2hldGhlciBib3RzIGV4aXN04oCUaXTigJlzIGhvdyB3ZWxsIHRoZXkgYWN0dWFsbHkgcGVyZm9ybSBpbiByZWFsLXdvcmxkIGNvbmRpdGlvbnMuIFRoYXTigJlzIGV4YWN0bHkgd2hhdCB0aGlzIHJldmlldyBzZXRzIG91dCB0byB1bmNvdmVyLmRyb3BDYXBwbGFjZWhvbGRlcmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50PHN0cm9uZz5XaHkgUGxheWVycyBBcmUgVHVybmluZyB0byBQb2tlciBCb3RzPC9zdHJvbmc+bGV2ZWxpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudExldOKAmXMgYmUgaG9uZXN0b25saW5lIHBva2VyIGNhbiBiZSBleGhhdXN0aW5nLiBMb25nIHNlc3Npb25zLCB0b3VnaCBvcHBvbmVudHMsIGVtb3Rpb25hbCBzd2luZ3MsIGFuZCB0aGUgY29uc3RhbnQgcHJlc3N1cmUgdG8gbWFrZSBvcHRpbWFsIGRlY2lzaW9ucyBjYW4gd2VhciBkb3duIGV2ZW4gdGhlIG1vc3QgZGlzY2lwbGluZWQgcGxheWVycy4gVGhhdOKAmXMgd2hlcmUgcG9rZXIgYm90cyBzdGVwIGluLCBvZmZlcmluZyBzb21ldGhpbmcgaW5jcmVkaWJseSB0ZW1wdGluZzogY29uc2lzdGVuY3kuIFRvb2xzIGxpa2UgdGhlIDxzdHJvbmc+M1VwR2FtaW5nIFBva2VyIEJvdDwvc3Ryb25nPiBwcm9taXNlIHRvIHJlbW92ZSBodW1hbiBlcnJvciBmcm9tIHRoZSBlcXVhdGlvbiwgcmVwbGFjaW5nIHRpbHQtcHJvbmUgZGVjaXNpb24tbWFraW5nIHdpdGggY2FsY3VsYXRlZCBwcmVjaXNpb24uZHJvcENhcHBsYWNlaG9sZGVyaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRPbmUgb2YgdGhlIGJpZ2dlc3QgcmVhc29ucyBwbGF5ZXJzIGFyZSB0dXJuaW5nIHRvIGJvdHMgaXMgdGhlIHB1cnN1aXQgb2YgPHN0cm9uZz5wYXNzaXZlIGluY29tZTwvc3Ryb25nPi4gVGhlIGlkZWEgb2YgcnVubmluZyBhIGJvdCB0aGF0IHBsYXlzIG11bHRpcGxlIHRhYmxlcyBzaW11bHRhbmVvdXNseSwgZ3JpbmRpbmcgb3V0IHNtYWxsIGJ1dCBzdGVhZHkgcHJvZml0cywgaXMgaW5jcmVkaWJseSBhcHBlYWxpbmcuIEluc3RlYWQgb2Ygc3BlbmRpbmcgaG91cnMgZ2x1ZWQgdG8gYSBzY3JlZW4sIHVzZXJzIGNhbiB0aGVvcmV0aWNhbGx5IGxldCB0aGUgc29mdHdhcmUgaGFuZGxlIHRoZSBoZWF2eSBsaWZ0aW5nLiBJdOKAmXMgbGlrZSBoYXZpbmcgYSB0aXJlbGVzcyBwb2tlciBhc3Npc3RhbnQgd2hvIG5ldmVyIGdldHMgZGlzdHJhY3RlZCwgbmV2ZXIgdGlsdHMsIGFuZCBuZXZlciBzZWNvbmQtZ3Vlc3NlcyBpdHNlbGYuZHJvcENhcHBsYWNlaG9sZGVyaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRBbm90aGVyIGZhY3RvciBpcyB0aGUgaW5jcmVhc2luZyBjb21wZXRpdGl2ZW5lc3Mgb2Ygb25saW5lIHBva2VyLiBBcyBtb3JlIHNraWxsZWQgcGxheWVycyBlbnRlciB0aGUgc2NlbmUgYW5kIHN0cmF0ZWd5IGNvbnRlbnQgYmVjb21lcyB3aWRlbHkgYXZhaWxhYmxlLCB0aGUgYXZlcmFnZSBza2lsbCBsZXZlbCBoYXMgcmlzZW4gZHJhbWF0aWNhbGx5LiBDYXN1YWwgcGxheWVycyBvZnRlbiBmaW5kIHRoZW1zZWx2ZXMgb3V0bWF0Y2hlZCwgc3RydWdnbGluZyB0byBrZWVwIHVwIHdpdGggYWR2YW5jZWQgY29uY2VwdHMgbGlrZSBHVE8gKEdhbWUgVGhlb3J5IE9wdGltYWwpIHBsYXkuIEJvdHMgYnJpZGdlIHRoYXQgZ2FwIGJ5IGV4ZWN1dGluZyBuZWFyLW9wdGltYWwgc3RyYXRlZ2llcyB3aXRob3V0IHJlcXVpcmluZyB5ZWFycyBvZiBzdHVkeS5kcm9wQ2FwcGxhY2Vob2xkZXJpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudFRoZXJl4oCZcyBhbHNvIGEgcHN5Y2hvbG9naWNhbCBhbmdsZS4gRXZlbiBleHBlcmllbmNlZCBwbGF5ZXJzIGFyZW7igJl0IGltbXVuZSB0byBlbW90aW9uYWwgZGVjaXNpb24tbWFraW5nY2hhc2luZyBsb3NzZXMsIG92ZXJ2YWx1aW5nIGhhbmRzLCBvciBmb2xkaW5nIHVuZGVyIHByZXNzdXJlLiBBIGJvdCBkb2VzbuKAmXQgaGF2ZSB0aG9zZSB3ZWFrbmVzc2VzLiBJdCBzdGlja3MgdG8gdGhlIHNjcmlwdCwgbWFraW5nIGRlY2lzaW9ucyBiYXNlZCBwdXJlbHkgb24gZGF0YSBhbmQgcHJvYmFiaWxpdGllcy5kcm9wQ2FwcGxhY2Vob2xkZXJpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudE9mIGNvdXJzZSwgbm90IGFsbCBib3RzIGFyZSBjcmVhdGVkIGVxdWFsLiBTb21lIGFyZSBjbHVua3ksIHByZWRpY3RhYmxlLCBhbmQgZWFzaWx5IGRldGVjdGVkLCB3aGlsZSBvdGhlcnNsaWtlIDNVcEdhbWluZ2NsYWltIHRvIG9mZmVyIHNvcGhpc3RpY2F0ZWQgQUkgdGhhdCBtaW1pY3MgaHVtYW4gYmVoYXZpb3IuIFRoYXQgZGlzdGluY3Rpb24gbWF0dGVycywgZXNwZWNpYWxseSB3aGVuIHJlYWwgbW9uZXkgYW5kIGFjY291bnQgc2FmZXR5IGFyZSBvbiB0aGUgbGluZS4gU28sIGRvZXMgM1VwR2FtaW5nIGFjdHVhbGx5IGxpdmUgdXAgdG8gdGhlIGh5cGUsIG9yIGlzIGl0IGp1c3QgYW5vdGhlciBvdmVycHJvbWlzZWQgdG9vbCBpbiBhIGNyb3dkZWQgbWFya2V0PyBMZXTigJlzIGRpZyBkZWVwZXIuZHJvcENhcHBsYWNlaG9sZGVyaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnQ8c3Ryb25nPldoYXQgSXMgM1VwR2FtaW5nIFBva2VyIEJvdD88L3N0cm9uZz5sZXZlbGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50PHN0cm9uZz5Db3JlIEZlYXR1cmVzIE92ZXJ2aWV3PC9zdHJvbmc+bGV2ZWxpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudEF0IGl0cyBjb3JlLCB0aGUgPHN0cm9uZz4zVXBHYW1pbmcgUG9rZXIgQm90PC9zdHJvbmc+IHBvc2l0aW9ucyBpdHNlbGYgYXMgYSBuZXh0LWdlbmVyYXRpb24gQUktZHJpdmVuIHBva2VyIGFzc2lzdGFudCBkZXNpZ25lZCB0byBhdXRvbWF0ZSBnYW1lcGxheSB3aGlsZSBtYWludGFpbmluZyBhIGh1bWFuLWxpa2UgYXBwcm9hY2guIFVubGlrZSBvbGRlciBib3RzIHRoYXQgcmVsaWVkIG9uIHN0YXRpYyBkZWNpc2lvbiB0cmVlcyBvciByaWdpZCBzY3JpcHRzLCAzVXBHYW1pbmcgY2xhaW1zIHRvIGxldmVyYWdlIGFkYXB0aXZlIGFsZ29yaXRobXMgdGhhdCBldm9sdmUgYmFzZWQgb24gaW4tZ2FtZSBkeW5hbWljcy4gVGhhdOKAmXMgYSBib2xkIGNsYWltYW5kIG9uZSB0aGF0IGRlc2VydmVzIGEgY2xvc2VyIGxvb2suZHJvcENhcHBsYWNlaG9sZGVyaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRPbmUgb2YgdGhlIHN0YW5kb3V0IGZlYXR1cmVzIGlzIGl0cyA8c3Ryb25nPnJlYWwtdGltZSBkZWNpc2lvbiBlbmdpbmU8L3N0cm9uZz4sIHdoaWNoIHByb2Nlc3NlcyBnYW1lIGRhdGEgaW5zdGFudGx5IGFuZCBkZXRlcm1pbmVzIHRoZSBvcHRpbWFsIG1vdmUgYmFzZWQgb24gZmFjdG9ycyBsaWtlIHBvc2l0aW9uLCBzdGFjayBzaXplLCBvcHBvbmVudCB0ZW5kZW5jaWVzLCBhbmQgcG90IG9kZHMuIFRoaXMgaXNu4oCZdCBqdXN0IGFib3V0IGZvbGRpbmcgd2VhayBoYW5kcyBhbmQgcmFpc2luZyBzdHJvbmcgb25lczsgdGhlIGJvdCBhaW1zIHRvIHJlcGxpY2F0ZSBudWFuY2VkIHN0cmF0ZWdpZXMsIGluY2x1ZGluZyBzZW1pLWJsdWZmcywgc2xvdyBwbGF5cywgYW5kIG1peGVkLWZyZXF1ZW5jeSBhY3Rpb25zIHRoYXQgYXJlIHR5cGljYWxseSBhc3NvY2lhdGVkIHdpdGggYWR2YW5jZWQgaHVtYW4gcGxheWVycy5kcm9wQ2FwcGxhY2Vob2xkZXJpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudEFub3RoZXIga2V5IGNvbXBvbmVudCBpcyA8c3Ryb25nPm11bHRpLXRhYmxlIHN1cHBvcnQ8L3N0cm9uZz4uIFVzZXJzIGNhbiBydW4gdGhlIGJvdCBhY3Jvc3Mgc2V2ZXJhbCB0YWJsZXMgc2ltdWx0YW5lb3VzbHksIGRyYW1hdGljYWxseSBpbmNyZWFzaW5nIHBvdGVudGlhbCB2b2x1bWUuIEZvciBncmluZGVycywgdGhpcyBpcyBhIGh1Z2UgYWR2YW50YWdlLiBJbnN0ZWFkIG9mIHBsYXlpbmcgdHdvIG9yIHRocmVlIHRhYmxlcyBtYW51YWxseSwgdGhlIGJvdCBjYW4gaGFuZGxlIHNpZ25pZmljYW50bHkgbW9yZSwgdGhlb3JldGljYWxseSBib29zdGluZyBob3VybHkgd2luIHJhdGVzLiBPZiBjb3Vyc2UsIHRoaXMgYWxzbyBkZXBlbmRzIG9uIGhvdyB3ZWxsIHRoZSBib3QgcGVyZm9ybXMgdW5kZXIgcHJlc3N1cmVzb21ldGhpbmcgd2XigJlsbCBleHBsb3JlIGxhdGVyLmRyb3BDYXBwbGFjZWhvbGRlcmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50M1VwR2FtaW5nIGFsc28gZW1waGFzaXplcyA8c3Ryb25nPmN1c3RvbWl6YXRpb248L3N0cm9uZz4uIFVzZXJzIGNhbiB0d2VhayBhZ2dyZXNzaW9uIGxldmVscywgcmlzayB0b2xlcmFuY2UsIGFuZCBzcGVjaWZpYyBwbGF5IHN0eWxlcy4gV2FudCBhIHRpZ2h0LWFnZ3Jlc3NpdmUgYXBwcm9hY2g\/IFlvdSBjYW4gc2V0IHRoYXQuIFByZWZlciBhIGxvb3NlciwgbW9yZSBleHBsb2l0YXRpdmUgc3RyYXRlZ3k\/IFRoYXTigJlzIGFuIG9wdGlvbiB0b28uIFRoaXMgZmxleGliaWxpdHkgYWxsb3dzIHVzZXJzIHRvIGFsaWduIHRoZSBib3TigJlzIGJlaGF2aW9yIHdpdGggdGhlaXIgb3duIGdvYWxzLCB3aGV0aGVyIHRoYXTigJlzIG1pbmltaXppbmcgcmlzayBvciBtYXhpbWl6aW5nIHByb2ZpdC5kcm9wQ2FwcGxhY2Vob2xkZXJpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudFNlY3VyaXR5IGZlYXR1cmVzIGFyZSBhbm90aGVyIG1ham9yIHNlbGxpbmcgcG9pbnQuIFRoZSBkZXZlbG9wZXJzIGNsYWltIHRvIGluY2x1ZGUgPHN0cm9uZz5hbnRpLWRldGVjdGlvbiBtZWNoYW5pc21zPC9zdHJvbmc+LCBzdWNoIGFzIHJhbmRvbWl6ZWQgdGltaW5nLCB2YXJpYWJsZSBiZXQgc2l6aW5nLCBhbmQgaHVtYW4tbGlrZSBwYXVzZXMuIFRoZXNlIGFyZSBkZXNpZ25lZCB0byBtYWtlIHRoZSBib3QgbGVzcyBwcmVkaWN0YWJsZSBhbmQgaGFyZGVyIGZvciBwb2tlciBwbGF0Zm9ybXMgdG8gaWRlbnRpZnkuZHJvcENhcHBsYWNlaG9sZGVyaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRBbGwgb2YgdGhpcyBzb3VuZHMgaW1wcmVzc2l2ZSBvbiBwYXBlciwgYnV0IGZlYXR1cmVzIGFsb25lIGRvbuKAmXQgdGVsbCB0aGUgZnVsbCBzdG9yeS4gVGhlIHJlYWwgdGVzdCBpcyBob3cgdGhlc2UgY2FwYWJpbGl0aWVzIHRyYW5zbGF0ZSBpbnRvIGFjdHVhbCBnYW1lcGxheWFuZCB3aGV0aGVyIHRoZXkgaG9sZCB1cCB3aGVuIHJlYWwgbW9uZXkgaXMgb24gdGhlIGxpbmUuZHJvcENhcHBsYWNlaG9sZGVyaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnQ8c3Ryb25nPlN1cHBvcnRlZCBQbGF0Zm9ybXMgYW5kIEdhbWVzPC9zdHJvbmc+bGV2ZWxpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudENvbXBhdGliaWxpdHkgaXMgb2Z0ZW4gd2hlcmUgbWFueSBwb2tlciBib3RzIGZhbGwgc2hvcnQsIGJ1dCAzVXBHYW1pbmcgYXBwZWFycyB0byBjYXN0IGEgcmVsYXRpdmVseSB3aWRlIG5ldC4gVGhlIGJvdCBzdXBwb3J0cyBzZXZlcmFsIG1ham9yIG9ubGluZSBwb2tlciBwbGF0Zm9ybXMsIHRob3VnaCB0aGUgZXhhY3QgbGlzdCBjYW4gdmFyeSBkZXBlbmRpbmcgb24gdXBkYXRlcyBhbmQgcmVnaW9uYWwgcmVzdHJpY3Rpb25zLiBUeXBpY2FsbHksIGl04oCZcyBkZXNpZ25lZCB0byB3b3JrIHdpdGggcG9wdWxhciBjbGllbnRzIHRoYXQgaGF2ZSBsYXJnZSBwbGF5ZXIgcG9vbHMsIHdoaWNoIGlzIGNydWNpYWwgZm9yIG1haW50YWluaW5nIGNvbnNpc3RlbnQgZ2FtZSBhdmFpbGFiaWxpdHkgYW5kIHNvZnRlciBjb21wZXRpdGlvbi5kcm9wQ2FwcGxhY2Vob2xkZXJpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudEluIHRlcm1zIG9mIGdhbWUgdHlwZXMsIDNVcEdhbWluZyBmb2N1c2VzIHByaW1hcmlseSBvbiA8c3Ryb25nPlRleGFzIEhvbGTigJllbTwvc3Ryb25nPiwgd2hpY2ggcmVtYWlucyB0aGUgbW9zdCB3aWRlbHkgcGxheWVkIHBva2VyIHZhcmlhbnQgb25saW5lLiBCb3RoIDxzdHJvbmc+Y2FzaCBnYW1lcyBhbmQgdG91cm5hbWVudHM8L3N0cm9uZz4gYXJlIHN1cHBvcnRlZCwgZ2l2aW5nIHVzZXJzIGZsZXhpYmlsaXR5IGluIGhvdyB0aGV5IGRlcGxveSB0aGUgYm90LiBDYXNoIGdhbWVzIGFyZSBvZnRlbiBmYXZvcmVkIGZvciBzdGVhZHkgZ3JpbmRpbmcsIHdoaWxlIHRvdXJuYW1lbnRzIG9mZmVyIHRoZSBwb3RlbnRpYWwgZm9yIGxhcmdlciwgYWxiZWl0IGxlc3MgcHJlZGljdGFibGUsIHBheW91dHMuZHJvcENhcHBsYWNlaG9sZGVyaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRUaGUgYm90IGFsc28gYWNjb21tb2RhdGVzIGRpZmZlcmVudCBzdGFrZSBsZXZlbHMsIGZyb20gbWljcm8tc3Rha2VzIHRvIG1pZC1zdGFrZXMgdGFibGVzLiBUaGlzIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgZm9yIGJlZ2lubmVycyB3aG8gd2FudCB0byB0ZXN0IHRoZSB3YXRlcnMgd2l0aG91dCByaXNraW5nIHNpZ25pZmljYW50IGJhbmtyb2xscy4gQXQgdGhlIHNhbWUgdGltZSwgbW9yZSBleHBlcmllbmNlZCB1c2VycyBjYW4gc2NhbGUgdXAsIHRob3VnaCB0aGlzIGNvbWVzIHdpdGggaW5jcmVhc2VkIHNjcnV0aW55IGZyb20gcGxhdGZvcm1zIGFuZCB0b3VnaGVyIGNvbXBldGl0aW9uLmRyb3BDYXBwbGFjZWhvbGRlcmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50QW5vdGhlciBub3RhYmxlIGFzcGVjdCBpcyBpdHMgYWJpbGl0eSB0byBhZGFwdCB0byBkaWZmZXJlbnQgdGFibGUgZm9ybWF0cywgaW5jbHVkaW5nIDxzdHJvbmc+Ni1tYXggYW5kIGZ1bGwtcmluZyBnYW1lczwvc3Ryb25nPi4gRWFjaCBmb3JtYXQgcmVxdWlyZXMgYSBkaXN0aW5jdCBzdHJhdGVnaWMgYXBwcm9hY2gsIGFuZCB0aGUgYm904oCZcyBhYmlsaXR5IHRvIGFkanVzdCBhY2NvcmRpbmdseSBpcyBhIGtleSBmYWN0b3IgaW4gaXRzIG92ZXJhbGwgZWZmZWN0aXZlbmVzcy5kcm9wQ2FwcGxhY2Vob2xkZXJpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudEhvd2V2ZXIsIGl04oCZcyB3b3J0aCBub3RpbmcgdGhhdCBubyBib3QgaXMgdW5pdmVyc2FsbHkgY29tcGF0aWJsZSB3aXRoIGV2ZXJ5IHBsYXRmb3JtLiBQb2tlciBzaXRlcyBmcmVxdWVudGx5IHVwZGF0ZSB0aGVpciBzb2Z0d2FyZSBhbmQgc2VjdXJpdHkgbWVhc3VyZXMsIHdoaWNoIGNhbiBpbXBhY3QgZnVuY3Rpb25hbGl0eS4gVXNlcnMgbmVlZCB0byBzdGF5IGluZm9ybWVkIGFuZCBlbnN1cmUgdGhleeKAmXJlIHVzaW5nIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgYm90IHRvIG1haW50YWluIGNvbXBhdGliaWxpdHkuZHJvcENhcHBsYWNlaG9sZGVyaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRVbHRpbWF0ZWx5LCB3aGlsZSAzVXBHYW1pbmcgb2ZmZXJzIGEgc29saWQgcmFuZ2Ugb2Ygc3VwcG9ydGVkIHBsYXRmb3JtcyBhbmQgZ2FtZSB0eXBlcywgdGhlIHJlYWwgcXVlc3Rpb24gaXMgaG93IHdlbGwgaXQgcGVyZm9ybXMgYWNyb3NzIHRoZXNlIGVudmlyb25tZW50cy4gRG9lcyBpdCBtYWludGFpbiBjb25zaXN0ZW5jeSwgb3IgZG9lcyBpdHMgZWZmZWN0aXZlbmVzcyB2YXJ5IGRlcGVuZGluZyBvbiB0aGUgc2V0dGluZz8gVGhhdOKAmXMgd2hlcmUgcmVhbC13b3JsZCB0ZXN0aW5nIGJlY29tZXMgZXNzZW50aWFsLmRyb3BDYXBwbGFjZWhvbGRlcmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50ZHJvcENhcHBsYWNlaG9sZGVyaW5uZXJCbG9ja3M8c3Ryb25nPkhvdyAzVXBHYW1pbmcgUG9rZXIgQm90IFdvcmtzPC9zdHJvbmc+bGV2ZWxjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnQ8c3Ryb25nPkFJIERlY2lzaW9uLU1ha2luZyBhbmQgQWxnb3JpdGhtczwvc3Ryb25nPmxldmVsaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRXaGVuIHBlb3BsZSBoZWFyIOKAnEFJIHBva2VyIGJvdCzigJ0gdGhleSBvZnRlbiBpbWFnaW5lIHNvbWV0aGluZyBteXN0ZXJpb3VzIG9yIGFsbW9zdCBtYWdpY2FsIHdvcmtpbmcgYmVoaW5kIHRoZSBzY2VuZXMuIEluIHJlYWxpdHksIHRoZSA8c3Ryb25nPjNVcEdhbWluZyBQb2tlciBCb3Q8L3N0cm9uZz4gaXMgYnVpbHQgb24gYSBjb21iaW5hdGlvbiBvZiBzdGF0aXN0aWNhbCBtb2RlbGluZywgZ2FtZSB0aGVvcnkgcHJpbmNpcGxlcywgYW5kIG1hY2hpbmUgbGVhcm5pbmcgbGF5ZXJzIHRoYXQgYXR0ZW1wdCB0byBzaW11bGF0ZSBob3cgc3Ryb25nIHBva2VyIHBsYXllcnMgdGhpbmtqdXN0IGZhc3RlciBhbmQgd2l0aG91dCBlbW90aW9uYWwgaW50ZXJmZXJlbmNlLiBCdXQgaGVyZeKAmXMgdGhlIHRoaW5nOiBub3QgYWxsIEFJIGlzIGNyZWF0ZWQgZXF1YWwsIGFuZCB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIG9uZSBvcGVyYXRlcyBoZWxwcyBzZXBhcmF0ZSBtYXJrZXRpbmcgaHlwZSBmcm9tIGFjdHVhbCBjYXBhYmlsaXR5LmRyb3BDYXBwbGFjZWhvbGRlcmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50QXQgaXRzIGZvdW5kYXRpb24sIHRoZSBib3QgcmVsaWVzIGhlYXZpbHkgb24gPHN0cm9uZz5HYW1lIFRoZW9yeSBPcHRpbWFsIChHVE8pPC9zdHJvbmc+IHN0cmF0ZWdpZXMuIFRoYXQgbWVhbnMgaXQgZG9lc27igJl0IGp1c3QgcGxheSB0byBleHBsb2l0IHdlYWsgb3Bwb25lbnRz4oCUaXQgcGxheXMgaW4gYSB3YXkgdGhhdCBpcyB0aGVvcmV0aWNhbGx5IGJhbGFuY2VkIGFuZCBkaWZmaWN1bHQgdG8gY291bnRlci4gSW1hZ2luZSBhIHBsYXllciB3aG8gbmV2ZXIgYmVjb21lcyBwcmVkaWN0YWJsZSwgd2hvIG1peGVzIGJsdWZmcyBhbmQgdmFsdWUgYmV0cyBhdCBtYXRoZW1hdGljYWxseSBzb3VuZCBmcmVxdWVuY2llcy4gVGhhdOKAmXMgdGhlIGJhc2VsaW5lIGJlaGF2aW9yLiBPbiB0b3Agb2YgdGhhdCwgM1VwR2FtaW5nIGxheWVycyBpbiA8c3Ryb25nPmV4cGxvaXRhdGl2ZSBhZGp1c3RtZW50czwvc3Ryb25nPiwgbWVhbmluZyBpdCBjYW4gZGV2aWF0ZSBmcm9tIEdUTyB3aGVuIGl0IGRldGVjdHMgcGF0dGVybnMgaW4gb3Bwb25lbnRz4oCZIGJlaGF2aW9yLmRyb3BDYXBwbGFjZWhvbGRlcmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50Rm9yIGV4YW1wbGUsIGlmIGEgcGxheWVyIGZvbGRzIHRvbyBvZnRlbiB0byBhZ2dyZXNzaW9uLCB0aGUgYm90IG1heSBpbmNyZWFzZSBpdHMgYmx1ZmYgZnJlcXVlbmN5LiBJZiBzb21lb25lIGNhbGxzIHRvbyBtdWNoLCBpdCB0aWdodGVucyB1cCBhbmQgbGVhbnMgaW50byB2YWx1ZSBiZXR0aW5nLiBUaGlzIGR1YWwtbGF5ZXIgYXBwcm9hY2hHVE8gZm9yIHNhZmV0eSBhbmQgZXhwbG9pdGF0aXZlIHBsYXkgZm9yIHByb2ZpdOKAlGlzIHdoYXQgZ2l2ZXMgdGhlIGJvdCBpdHMgZWRnZSBpbiBzb2Z0ZXIgZ2FtZXMuZHJvcENhcHBsYWNlaG9sZGVyaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRBbm90aGVyIGltcG9ydGFudCBlbGVtZW50IGlzIDxzdHJvbmc+cmFuZ2UtYmFzZWQgdGhpbmtpbmc8L3N0cm9uZz4uIEluc3RlYWQgb2YgZXZhbHVhdGluZyBoYW5kcyBpbiBpc29sYXRpb24sIHRoZSBib3QgY29uc2lkZXJzIGVudGlyZSByYW5nZXMgb2YgcG9zc2libGUgaGFuZHNib3RoIGl0cyBvd24gYW5kIGl0cyBvcHBvbmVudHPigJkuIFRoaXMgYWxsb3dzIGl0IHRvIG1ha2UgbW9yZSBudWFuY2VkIGRlY2lzaW9ucywgZXNwZWNpYWxseSBpbiBjb21wbGV4IHBvc3QtZmxvcCBzY2VuYXJpb3Mgd2hlcmUgbWFueSB2YXJpYWJsZXMgY29tZSBpbnRvIHBsYXkuZHJvcENhcHBsYWNlaG9sZGVyaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRTcGVlZCBpcyBhbHNvIGEgbWFqb3IgYWR2YW50YWdlLiBXaGlsZSBhIGh1bWFuIG1pZ2h0IHRha2Ugc2V2ZXJhbCBzZWNvbmRzIHRvIGNhbGN1bGF0ZSBwb3Qgb2RkcywgaW1wbGllZCBvZGRzLCBhbmQgb3Bwb25lbnQgdGVuZGVuY2llcywgdGhlIGJvdCBkb2VzIHRoaXMgYWxtb3N0IGluc3RhbnRseS4gVGhhdCBlZmZpY2llbmN5IGJlY29tZXMgZXNwZWNpYWxseSB2YWx1YWJsZSB3aGVuIG11bHRpLXRhYmxpbmcsIHdoZXJlIGNvZ25pdGl2ZSBsb2FkIHdvdWxkIG92ZXJ3aGVsbSBtb3N0IHBsYXllcnMuZHJvcENhcHBsYWNlaG9sZGVyaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRTdGlsbCwgaXTigJlzIHdvcnRoIHF1ZXN0aW9uaW5nIGhvdyDigJxhZGFwdGl2ZeKAnSB0aGUgQUkgcmVhbGx5IGlzLiBXaGlsZSBpdCBkb2VzIGFkanVzdCB3aXRoaW4gc2Vzc2lvbnMsIGl04oCZcyBub3QgdHJ1bHkgbGVhcm5pbmcgaW4gdGhlIHNhbWUgd2F5IGEgaHVtYW4gZG9lcyBvdmVyIG1vbnRocyBvciB5ZWFycyB1bmxlc3MgaXTigJlzIHBhaXJlZCB3aXRoIGV4dGVybmFsIGRhdGEgaW5wdXRzLiBTbyB3aGlsZSB0aGUgZGVjaXNpb24tbWFraW5nIGZlZWxzIGR5bmFtaWMsIGl0IG9wZXJhdGVzIHdpdGhpbiBwcmVkZWZpbmVkIGJvdW5kYXJpZXMgc2V0IGJ5IGl0cyBkZXZlbG9wZXJzLmRyb3BDYXBwbGFjZWhvbGRlcmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50PHN0cm9uZz5SZWFsLVRpbWUgR2FtZSBBZGFwdGF0aW9uPC9zdHJvbmc+bGV2ZWxpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudE9uZSBvZiB0aGUgbW9zdCBoZWF2aWx5IGFkdmVydGlzZWQgZmVhdHVyZXMgb2YgdGhlIDxzdHJvbmc+M1VwR2FtaW5nIFBva2VyIEJvdDwvc3Ryb25nPiBpcyBpdHMgYWJpbGl0eSB0byBhZGFwdCBpbiByZWFsIHRpbWUuIFRoaXMgaXNu4oCZdCBqdXN0IGEgYnV6endvcmTigJRpdOKAmXMgYSBjcml0aWNhbCByZXF1aXJlbWVudCBmb3Igc3Vydml2aW5nIGluIG1vZGVybiBvbmxpbmUgcG9rZXIsIHdoZXJlIHN0YXRpYyBzdHJhdGVnaWVzIHF1aWNrbHkgZ2V0IGV4cG9zZWQuIEJ1dCBob3cgd2VsbCBkb2VzIHRoaXMgYWRhcHRhdGlvbiBhY3R1YWxseSB3b3JrIHdoZW4gdGhlIGNhcmRzIGFyZSBvbiB0aGUgdGFibGU\/ZHJvcENhcHBsYWNlaG9sZGVyaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRJbiBwcmFjdGljZSwgdGhlIGJvdCB0cmFja3Mgc2V2ZXJhbCBrZXkgdmFyaWFibGVzIGR1cmluZyBnYW1lcGxheTogb3Bwb25lbnQgYWdncmVzc2lvbiBsZXZlbHMsIGZvbGQgZnJlcXVlbmNpZXMsIGJldCBzaXppbmcgcGF0dGVybnMsIGFuZCB0aW1pbmcgdGVsbHMuIEJ5IGFuYWx5emluZyB0aGVzZSBmYWN0b3JzLCBpdCBidWlsZHMgYSByb3VnaCBwcm9maWxlIG9mIGVhY2ggcGxheWVyIGF0IHRoZSB0YWJsZS4gVGhpbmsgb2YgaXQgbGlrZSBhIG1lbnRhbCBub3RlLXRha2luZyBzeXN0ZW0gdGhhdCBuZXZlciBmb3JnZXRzIGFuZCB1cGRhdGVzIGNvbnRpbnVvdXNseS5kcm9wQ2FwcGxhY2Vob2xkZXJpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudEZvciBpbnN0YW5jZSwgaWYgYW4gb3Bwb25lbnQgY29uc2lzdGVudGx5IHJhaXNlcyBmcm9tIGxhdGUgcG9zaXRpb24gYnV0IGZvbGRzIHRvIHJlLXJhaXNlcywgdGhlIGJvdCB3aWxsIHN0YXJ0IGFwcGx5aW5nIHByZXNzdXJlIGluIHRob3NlIHNwb3RzLiBJZiBhbm90aGVyIHBsYXllciBvbmx5IGJldHMgYmlnIHdoZW4gdGhleSBoYXZlIHN0cm9uZyBoYW5kcywgdGhlIGJvdCBiZWNvbWVzIG1vcmUgY2F1dGlvdXMgYWdhaW5zdCBsYXJnZSBiZXRzLiBUaGVzZSBhZGp1c3RtZW50cyBoYXBwZW4gb24gdGhlIGZseSwgd2l0aG91dCBuZWVkaW5nIG1hbnVhbCBpbnB1dCBmcm9tIHRoZSB1c2VyLmRyb3BDYXBwbGFjZWhvbGRlcmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50VGhlcmXigJlzIGFsc28gYW4gZWxlbWVudCBvZiA8c3Ryb25nPnRpbWluZyByYW5kb21pemF0aW9uPC9zdHJvbmc+LCB3aGljaCBwbGF5cyBhIHN1YnRsZSBidXQgaW1wb3J0YW50IHJvbGUuIEh1bWFuIHBsYXllcnMgZG9u4oCZdCBhY3QgaW5zdGFudGx5IGV2ZXJ5IHRpbWV0aGV5IGhlc2l0YXRlLCB0aGluaywgYW5kIHNvbWV0aW1lcyBldmVuIG1pc2NsaWNrLiBUaGUgYm90IG1pbWljcyB0aGlzIGJ5IGludHJvZHVjaW5nIHNsaWdodCBkZWxheXMgYW5kIHZhcmlhYmlsaXR5IGluIGl0cyBhY3Rpb25zLiBUaGlzIGRvZXNu4oCZdCBpbXByb3ZlIGRlY2lzaW9uIHF1YWxpdHksIGJ1dCBpdCBkb2VzIG1ha2UgYmVoYXZpb3IgYXBwZWFyIG1vcmUgaHVtYW4sIHdoaWNoIHRpZXMgaW50byBkZXRlY3Rpb24gYXZvaWRhbmNlLmRyb3BDYXBwbGFjZWhvbGRlcmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50SG93ZXZlciwgYWRhcHRhdGlvbiBoYXMgaXRzIGxpbWl0cy4gVGhlIGJvdCBwZXJmb3JtcyBiZXN0IGluIGVudmlyb25tZW50cyB3aGVyZSBwbGF5ZXIgdGVuZGVuY2llcyBhcmUgY2xlYXIgYW5kIGNvbnNpc3RlbnTigJR0eXBpY2FsbHkgbG93ZXIgdG8gbWlkLXN0YWtlcyBnYW1lcy4gQWdhaW5zdCBoaWdobHkgc2tpbGxlZCBvcHBvbmVudHMgd2hvIGJhbGFuY2UgdGhlaXIgcmFuZ2VzIGFuZCBtaXggc3RyYXRlZ2llcyBlZmZlY3RpdmVseSwgdGhlIGJvdOKAmXMgZWRnZSBiZWNvbWVzIHRoaW5uZXIuIEl04oCZcyBub3QgdGhhdCBpdCBmYWlscyBvdXRyaWdodCwgYnV0IHRoZSBhZHZhbnRhZ2UgbmFycm93cyBzaWduaWZpY2FudGx5LmRyb3BDYXBwbGFjZWhvbGRlcmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50QW5vdGhlciBpbnRlcmVzdGluZyBvYnNlcnZhdGlvbiBpcyBob3cgdGhlIGJvdCBoYW5kbGVzIDxzdHJvbmc+dGFibGUgZHluYW1pY3M8L3N0cm9uZz4uIElmIGEgdGFibGUgYmVjb21lcyB0b28gYWdncmVzc2l2ZSBvciB0b28gdGlnaHQsIGl0IGFkanVzdHMgaXRzIG92ZXJhbGwgc3RyYXRlZ3kgYWNjb3JkaW5nbHkuIFRoaXMgbWFjcm8tbGV2ZWwgYWRhcHRhdGlvbiBoZWxwcyBtYWludGFpbiBzdGFiaWxpdHkgb3ZlciBsb25nIHNlc3Npb25zLCBlc3BlY2lhbGx5IHdoZW4gbXVsdGktdGFibGluZyBhY3Jvc3MgZGlmZmVyZW50IGVudmlyb25tZW50cy5kcm9wQ2FwcGxhY2Vob2xkZXJpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudFNvLCBkb2VzIGl0IHRydWx5IOKAnGxlYXJu4oCdIGxpa2UgYSBodW1hbj8gTm90IHF1aXRlLiBCdXQgd2l0aGluIHRoZSBzY29wZSBvZiBhIHNpbmdsZSBzZXNzaW9uIG9yIHNob3J0LXRlcm0gcGxheSwgaXRzIGFiaWxpdHkgdG8gYWRqdXN0IGlzIHNvbGlkYW5kIGluIG1hbnkgY2FzZXMsIG1vcmUgY29uc2lzdGVudCB0aGFuIHRoZSBhdmVyYWdlIHBsYXllci5kcm9wQ2FwcGxhY2Vob2xkZXJpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudDxzdHJvbmc+SW5zdGFsbGF0aW9uIGFuZCBTZXR1cCBFeHBlcmllbmNlPC9zdHJvbmc+bGV2ZWxpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudDxzdHJvbmc+U3lzdGVtIFJlcXVpcmVtZW50czwvc3Ryb25nPmxldmVsaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRCZWZvcmUgZGl2aW5nIGludG8gcGVyZm9ybWFuY2UsIGl04oCZcyB3b3J0aCBsb29raW5nIGF0IHNvbWV0aGluZyBmYXIgbGVzcyBnbGFtb3JvdXMgYnV0IGVxdWFsbHkgaW1wb3J0YW50OiB3aGV0aGVyIHlvdXIgc3lzdGVtIGNhbiBhY3R1YWxseSBydW4gdGhlIDxzdHJvbmc+M1VwR2FtaW5nIFBva2VyIEJvdDwvc3Ryb25nPiBzbW9vdGhseS4gVGhlIGdvb2QgbmV3cyBpcyB0aGF0IGl0IGRvZXNu4oCZdCBkZW1hbmQgYSBoaWdoLWVuZCBnYW1pbmcgcmlnLCBidXQgaXTigJlzIGFsc28gbm90IGFzIGxpZ2h0d2VpZ2h0IGFzIHNvbWUgb2xkZXIsIHNpbXBsZXIgYm90cy5kcm9wQ2FwcGxhY2Vob2xkZXJpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudEF0IGEgbWluaW11bSwgeW914oCZcmUgbG9va2luZyBhdCBhIG1vZGVybiBvcGVyYXRpbmcgc3lzdGVtdHlwaWNhbGx5IDxzdHJvbmc+V2luZG93cyAxMCBvciBsYXRlcjwvc3Ryb25nPmFsb25nIHdpdGggYXQgbGVhc3QgPHN0cm9uZz44R0Igb2YgUkFNPC9zdHJvbmc+LiBXaGlsZSB0aGUgYm90IG1pZ2h0IHJ1biBvbiBsb3dlciBzcGVjcywgcGVyZm9ybWFuY2UgY2FuIGJlY29tZSBpbmNvbnNpc3RlbnQsIGVzcGVjaWFsbHkgd2hlbiBtdWx0aS10YWJsaW5nLiBBbmQgc2luY2Ugb25lIG9mIHRoZSBtYWluIGFkdmFudGFnZXMgb2YgdXNpbmcgYSBib3QgaXMgaGFuZGxpbmcgbXVsdGlwbGUgdGFibGVzIGF0IG9uY2UsIGN1dHRpbmcgY29ybmVycyBvbiBoYXJkd2FyZSBjYW4gdW5kZXJtaW5lIHRoZSBlbnRpcmUgZXhwZXJpZW5jZS5kcm9wQ2FwcGxhY2Vob2xkZXJpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudFByb2Nlc3NpbmcgcG93ZXIgYWxzbyBtYXR0ZXJzIG1vcmUgdGhhbiB5b3UgbWlnaHQgZXhwZWN0LiBUaGUgQUkgZW5naW5lIHJ1bnMgY29udGludW91cyBjYWxjdWxhdGlvbnMgaW4gcmVhbCB0aW1lLCBzbyBhIDxzdHJvbmc+bXVsdGktY29yZSBDUFU8L3N0cm9uZz4gaXMgc3Ryb25nbHkgcmVjb21tZW5kZWQuIElmIHlvdeKAmXJlIHJ1bm5pbmcgZm91ciwgc2l4LCBvciBtb3JlIHRhYmxlcyBzaW11bHRhbmVvdXNseSwgdGhvc2UgY29tcHV0YXRpb25zIGFkZCB1cCBxdWlja2x5LiBMYWcgb3IgZGVsYXlzIGluIGRlY2lzaW9uLW1ha2luZyBhcmVu4oCZdCBqdXN0IGFubm95aW5ndGhleSBjYW4gZGlyZWN0bHkgaW1wYWN0IHByb2ZpdGFiaWxpdHkuZHJvcENhcHBsYWNlaG9sZGVyaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRTdG9yYWdlIHJlcXVpcmVtZW50cyBhcmUgcmVsYXRpdmVseSBtb2Rlc3QsIGJ1dCBhIDxzdHJvbmc+c29saWQtc3RhdGUgZHJpdmUgKFNTRCk8L3N0cm9uZz4gaGVscHMgd2l0aCBmYXN0ZXIgbG9hZGluZyB0aW1lcyBhbmQgc21vb3RoZXIgb3BlcmF0aW9uLiBJbnRlcm5ldCBzdGFiaWxpdHkgaXMgYW5vdGhlciBvZnRlbi1vdmVybG9va2VkIGZhY3Rvci4gQSBkcm9wcGVkIGNvbm5lY3Rpb24gbWlkLWhhbmQgY2FuIGNhdXNlIG1pc3BsYXlzIG9yIGV2ZW4gZGlzY29ubmVjdCB5b3UgZnJvbSB0YWJsZXMsIHdoaWNoIGlzIHNvbWV0aGluZyBubyBib3QgY2FuIGZ1bGx5IGNvbXBlbnNhdGUgZm9yLmRyb3BDYXBwbGFjZWhvbGRlcmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50VGhlcmXigJlzIGFsc28gdGhlIHF1ZXN0aW9uIG9mIHZpcnR1YWxpemF0aW9uIG9yIFZQUyAoVmlydHVhbCBQcml2YXRlIFNlcnZlcikgdXNhZ2UuIFNvbWUgdXNlcnMgcHJlZmVyIHJ1bm5pbmcgYm90cyBvbiByZW1vdGUgc2VydmVycyBmb3IgYWRkZWQgYW5vbnltaXR5IGFuZCB1cHRpbWUuIDNVcEdhbWluZyBzdXBwb3J0cyB0aGlzIHNldHVwLCBidXQgaXQgcmVxdWlyZXMgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIGFuZCwgaW4gc29tZSBjYXNlcywgZXh0cmEgY29zdC5kcm9wQ2FwcGxhY2Vob2xkZXJpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudEluIHNob3J0LCB3aGlsZSB0aGUgc3lzdGVtIHJlcXVpcmVtZW50cyBhcmVu4oCZdCBleHRyZW1lLCB0aGV54oCZcmUgbm90IHRyaXZpYWwgZWl0aGVyLiBUcmVhdGluZyB0aGlzIGxpa2UgYSDigJxzZXQgaXQgYW5kIGZvcmdldCBpdOKAnSB0b29sIG9uIGFuIG9sZCBsYXB0b3AgaXMgbGlrZWx5IHRvIGxlYWQgdG8gZnJ1c3RyYXRpb24uIEEgc3RhYmxlLCBtb2RlcmF0ZWx5IHBvd2VyZnVsIHNldHVwIG1ha2VzIGEgbm90aWNlYWJsZSBkaWZmZXJlbmNlIGluIGJvdGggcGVyZm9ybWFuY2UgYW5kIHJlbGlhYmlsaXR5LmRyb3BDYXBwbGFjZWhvbGRlcmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50PHN0cm9uZz5TdGVwLWJ5LVN0ZXAgU2V0dXAgUHJvY2Vzczwvc3Ryb25nPmxldmVsaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRHZXR0aW5nIHN0YXJ0ZWQgd2l0aCB0aGUgPHN0cm9uZz4zVXBHYW1pbmcgUG9rZXIgQm90PC9zdHJvbmc+IGlzIHJlbGF0aXZlbHkgc3RyYWlnaHRmb3J3YXJkLCBidXQgdGhhdCBkb2VzbuKAmXQgbWVhbiBpdOKAmXMgY29tcGxldGVseSBmb29scHJvb2YuIFRoZSBzZXR1cCBwcm9jZXNzIHdhbGtzIGEgbGluZSBiZXR3ZWVuIHVzZXItZnJpZW5kbHkgYW5kIHNsaWdodGx5IHRlY2huaWNhbCwgZGVwZW5kaW5nIG9uIHlvdXIgZmFtaWxpYXJpdHkgd2l0aCBwb2tlciBzb2Z0d2FyZSBhbmQgdGhpcmQtcGFydHkgdG9vbHMuZHJvcENhcHBsYWNlaG9sZGVyaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRUaGUgZmlyc3Qgc3RlcCB1c3VhbGx5IGludm9sdmVzIGRvd25sb2FkaW5nIHRoZSBzb2Z0d2FyZSBmcm9tIHRoZSBvZmZpY2lhbCBzb3VyY2UgYW5kIHZlcmlmeWluZyB5b3VyIGxpY2Vuc2UuIFRoaXMgcGFydCBpcyBzaW1wbGUgZW5vdWdoLCBidXQgaXTigJlzIGNydWNpYWwgdG8gYXZvaWQgdW5vZmZpY2lhbCB2ZXJzaW9ucywgd2hpY2ggY2FuIGJlIG91dGRhdGVkIG9yIGV2ZW4gY29tcHJvbWlzZWQuIE9uY2UgaW5zdGFsbGVkLCB0aGUgYm90IG5lZWRzIHRvIGJlIGxpbmtlZCB0byB5b3VyIGNob3NlbiBwb2tlciBjbGllbnQuIFRoaXMgaXMgd2hlcmUgdGhpbmdzIGNhbiBnZXQgYSBiaXQgdHJpY2t5LmRyb3BDYXBwbGFjZWhvbGRlcmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50TW9zdCBib3RzLCBpbmNsdWRpbmcgM1VwR2FtaW5nLCByZWx5IG9uIDxzdHJvbmc+c2NyZWVuIHJlYWRpbmcgb3IgQVBJIGludGVncmF0aW9uPC9zdHJvbmc+IHRvIGludGVycHJldCBnYW1lIGRhdGEuIFRoYXQgbWVhbnMgeW91IG1heSBuZWVkIHRvIGNvbmZpZ3VyZSBkaXNwbGF5IHNldHRpbmdzLCB0YWJsZSBsYXlvdXRzLCBhbmQgcmVzb2x1dGlvbiB0byBlbnN1cmUgY29tcGF0aWJpbGl0eS4gSXTigJlzIG5vdCBvdmVybHkgY29tcGxpY2F0ZWQsIGJ1dCBpdCBkb2VzIHJlcXVpcmUgYXR0ZW50aW9uIHRvIGRldGFpbC4gQSBtaXNhbGlnbmVkIHRhYmxlIG9yIGluY29ycmVjdCBzZXR0aW5nIGNhbiBjYXVzZSB0aGUgYm90IHRvIG1pc3JlYWQgaW5mb3JtYXRpb24sIGxlYWRpbmcgdG8gcG9vciBkZWNpc2lvbnMuZHJvcENhcHBsYWNlaG9sZGVyaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRBZnRlciB0aGF0LCB1c2VycyB0eXBpY2FsbHkgY29uZmlndXJlIHRoZWlyIDxzdHJvbmc+c3RyYXRlZ3kgcHJvZmlsZXM8L3N0cm9uZz4uIFRoaXMgaW5jbHVkZXMgc2VsZWN0aW5nIGFnZ3Jlc3Npb24gbGV2ZWxzLCBiYW5rcm9sbCBtYW5hZ2VtZW50IHJ1bGVzLCBhbmQgdGFibGUgbGltaXRzLiBXaGlsZSB0aGVyZSBhcmUgZGVmYXVsdCBwcmVzZXRzLCBzcGVuZGluZyB0aW1lIGZpbmUtdHVuaW5nIHRoZXNlIHNldHRpbmdzIGNhbiBzaWduaWZpY2FudGx5IGltcGFjdCByZXN1bHRzLiBUaGluayBvZiBpdCBsaWtlIHNldHRpbmcgdGhlIHBlcnNvbmFsaXR5IG9mIHlvdXIgYm90aXQgZGV0ZXJtaW5lcyBob3cgaXQgYmVoYXZlcyBpbiBkaWZmZXJlbnQgc2l0dWF0aW9ucy5kcm9wQ2FwcGxhY2Vob2xkZXJpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudFRlc3RpbmcgaXMgYW4gZXNzZW50aWFsIHN0ZXAgdGhhdCBtYW55IHVzZXJzIG92ZXJsb29rLiBSdW5uaW5nIHRoZSBib3QgaW4gbG93LXN0YWtlcyBnYW1lcyBvciBkZW1vIGVudmlyb25tZW50cyBhbGxvd3MgeW91IHRvIGlkZW50aWZ5IGlzc3VlcyB3aXRob3V0IHJpc2tpbmcgbXVjaCBtb25leS4gSXQgYWxzbyBnaXZlcyB5b3UgYSBmZWVsIGZvciBob3cgdGhlIGJvdCBvcGVyYXRlcywgd2hpY2ggaXMgdmFsdWFibGUgaWYgeW91IHBsYW4gdG8gaW50ZXJ2ZW5lIG9yIGFkanVzdCBzZXR0aW5ncyBsYXRlci5kcm9wQ2FwcGxhY2Vob2xkZXJpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudE92ZXJhbGwsIHRoZSBzZXR1cCBwcm9jZXNzIGlzIG1hbmFnZWFibGUgYnV0IG5vdCBlbnRpcmVseSBwbHVnLWFuZC1wbGF5LiBUaGVyZeKAmXMgYSBsZWFybmluZyBjdXJ2ZSwgZXNwZWNpYWxseSBmb3IgYmVnaW5uZXJzLiBPbmNlIGV2ZXJ5dGhpbmcgaXMgY29uZmlndXJlZCBjb3JyZWN0bHksIHRob3VnaCwgdGhlIGV4cGVyaWVuY2UgYmVjb21lcyBtdWNoIHNtb290aGVyYW5kIHRoYXTigJlzIHdoZW4gdGhlIHJlYWwgZXZhbHVhdGlvbiBiZWdpbnMuZHJvcENhcHBsYWNlaG9sZGVyaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRkcm9wQ2FwcGxhY2Vob2xkZXJpbm5lckJsb2NrczwhLS0gd3A6aGVhZGluZyAtLT4KPGgyIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIj48c3Ryb25nPkludHJvZHVjdGlvbiB0byBBSSBQb2tlciBCb3RzIGluIDIwMjY8L3N0cm9uZz48L2gyPgo8IS0tIC93cDpoZWFkaW5nIC0tPgoKPCEtLSB3cDpoZWFkaW5nIHsibGV2ZWwiOjN9IC0tPgo8aDMgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPjxzdHJvbmc+VGhlIFJpc2Ugb2YgQUkgaW4gT25saW5lIFBva2VyPC9zdHJvbmc+PC9oMz4KPCEtLSAvd3A6aGVhZGluZyAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPlRoZXJl4oCZcyBhbHNvIHRoZSBzaW1wbGUgbWF0dGVyIG9mIGFjY2Vzc2liaWxpdHkuIFRvb2xzIGxpa2UgM1VwR2FtaW5nIGhhdmUgbG93ZXJlZCB0aGUgYmFycmllciB0byBlbnRyeSwgb2ZmZXJpbmcgcGx1Zy1hbmQtcGxheSBzb2x1dGlvbnMgdGhhdCBkb27igJl0IHJlcXVpcmUgdXNlcnMgdG8gYmUgcHJvZ3JhbW1lcnMgb3IgcG9rZXIgZXhwZXJ0cy4gVGhpcyBkZW1vY3JhdGl6YXRpb24gb2YgQUkgaGFzIG1hZGUgaXQgZWFzaWVyIHRoYW4gZXZlciBmb3IgY2FzdWFsIHBsYXllcnMgdG8gZXhwZXJpbWVudCB3aXRoIGF1dG9tYXRpb24sIHdoZXRoZXIgdGhleeKAmXJlIGxvb2tpbmcgdG8gZ3JpbmQgbWljcm8tc3Rha2VzIG9yIHRlc3Qgc3RyYXRlZ2llcyBpbiBtaWQtbGV2ZWwgZ2FtZXMuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+U3RpbGwsIHRoZSByaXNlIG9mIEFJIGluIHBva2VyIGlzbuKAmXQgd2l0aG91dCBjb250cm92ZXJzeS4gTWFueSBwbGF0Zm9ybXMgc3RyaWN0bHkgcHJvaGliaXQgYm90IHVzYWdlLCBhbmQgdGhlIGV0aGljYWwgZGViYXRlIGNvbnRpbnVlcyB0byBzaW1tZXIuIEJ1dCBydWxlcyBhc2lkZSwgb25lIHRoaW5nIGlzIHVuZGVuaWFibGU6IEFJIGlzIGhlcmUsIGFuZCBpdOKAmXMgY2hhbmdpbmcgdGhlIGdhbWUuIFRoZSByZWFsIHF1ZXN0aW9uIGlzbuKAmXQgd2hldGhlciBib3RzIGV4aXN04oCUaXTigJlzIGhvdyB3ZWxsIHRoZXkgYWN0dWFsbHkgcGVyZm9ybSBpbiByZWFsLXdvcmxkIGNvbmRpdGlvbnMuIFRoYXTigJlzIGV4YWN0bHkgd2hhdCB0aGlzIHJldmlldyBzZXRzIG91dCB0byB1bmNvdmVyLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpoZWFkaW5nIHsibGV2ZWwiOjN9IC0tPgo8aDMgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPjxzdHJvbmc+V2h5IFBsYXllcnMgQXJlIFR1cm5pbmcgdG8gUG9rZXIgQm90czwvc3Ryb25nPjwvaDM+CjwhLS0gL3dwOmhlYWRpbmcgLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPk9uZSBvZiB0aGUgYmlnZ2VzdCByZWFzb25zIHBsYXllcnMgYXJlIHR1cm5pbmcgdG8gYm90cyBpcyB0aGUgcHVyc3VpdCBvZiA8c3Ryb25nPnBhc3NpdmUgaW5jb21lPC9zdHJvbmc+LiBUaGUgaWRlYSBvZiBydW5uaW5nIGEgYm90IHRoYXQgcGxheXMgbXVsdGlwbGUgdGFibGVzIHNpbXVsdGFuZW91c2x5LCBncmluZGluZyBvdXQgc21hbGwgYnV0IHN0ZWFkeSBwcm9maXRzLCBpcyBpbmNyZWRpYmx5IGFwcGVhbGluZy4gSW5zdGVhZCBvZiBzcGVuZGluZyBob3VycyBnbHVlZCB0byBhIHNjcmVlbiwgdXNlcnMgY2FuIHRoZW9yZXRpY2FsbHkgbGV0IHRoZSBzb2Z0d2FyZSBoYW5kbGUgdGhlIGhlYXZ5IGxpZnRpbmcuIEl04oCZcyBsaWtlIGhhdmluZyBhIHRpcmVsZXNzIHBva2VyIGFzc2lzdGFudCB3aG8gbmV2ZXIgZ2V0cyBkaXN0cmFjdGVkLCBuZXZlciB0aWx0cywgYW5kIG5ldmVyIHNlY29uZC1ndWVzc2VzIGl0c2VsZi48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5Bbm90aGVyIGZhY3RvciBpcyB0aGUgaW5jcmVhc2luZyBjb21wZXRpdGl2ZW5lc3Mgb2Ygb25saW5lIHBva2VyLiBBcyBtb3JlIHNraWxsZWQgcGxheWVycyBlbnRlciB0aGUgc2NlbmUgYW5kIHN0cmF0ZWd5IGNvbnRlbnQgYmVjb21lcyB3aWRlbHkgYXZhaWxhYmxlLCB0aGUgYXZlcmFnZSBza2lsbCBsZXZlbCBoYXMgcmlzZW4gZHJhbWF0aWNhbGx5LiBDYXN1YWwgcGxheWVycyBvZnRlbiBmaW5kIHRoZW1zZWx2ZXMgb3V0bWF0Y2hlZCwgc3RydWdnbGluZyB0byBrZWVwIHVwIHdpdGggYWR2YW5jZWQgY29uY2VwdHMgbGlrZSBHVE8gKEdhbWUgVGhlb3J5IE9wdGltYWwpIHBsYXkuIEJvdHMgYnJpZGdlIHRoYXQgZ2FwIGJ5IGV4ZWN1dGluZyBuZWFyLW9wdGltYWwgc3RyYXRlZ2llcyB3aXRob3V0IHJlcXVpcmluZyB5ZWFycyBvZiBzdHVkeS48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpoZWFkaW5nIC0tPgo8aDIgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPjxzdHJvbmc+V2hhdCBJcyAzVXBHYW1pbmcgUG9rZXIgQm90Pzwvc3Ryb25nPjwvaDI+CjwhLS0gL3dwOmhlYWRpbmcgLS0+Cgo8IS0tIHdwOmhlYWRpbmcgeyJsZXZlbCI6M30gLS0+CjxoMyBjbGFzcz0id3AtYmxvY2staGVhZGluZyI+PHN0cm9uZz5Db3JlIEZlYXR1cmVzIE92ZXJ2aWV3PC9zdHJvbmc+PC9oMz4KPCEtLSAvd3A6aGVhZGluZyAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+T25lIG9mIHRoZSBzdGFuZG91dCBmZWF0dXJlcyBpcyBpdHMgPHN0cm9uZz5yZWFsLXRpbWUgZGVjaXNpb24gZW5naW5lPC9zdHJvbmc+LCB3aGljaCBwcm9jZXNzZXMgZ2FtZSBkYXRhIGluc3RhbnRseSBhbmQgZGV0ZXJtaW5lcyB0aGUgb3B0aW1hbCBtb3ZlIGJhc2VkIG9uIGZhY3RvcnMgbGlrZSBwb3NpdGlvbiwgc3RhY2sgc2l6ZSwgb3Bwb25lbnQgdGVuZGVuY2llcywgYW5kIHBvdCBvZGRzLiBUaGlzIGlzbuKAmXQganVzdCBhYm91dCBmb2xkaW5nIHdlYWsgaGFuZHMgYW5kIHJhaXNpbmcgc3Ryb25nIG9uZXM7IHRoZSBib3QgYWltcyB0byByZXBsaWNhdGUgbnVhbmNlZCBzdHJhdGVnaWVzLCBpbmNsdWRpbmcgc2VtaS1ibHVmZnMsIHNsb3cgcGxheXMsIGFuZCBtaXhlZC1mcmVxdWVuY3kgYWN0aW9ucyB0aGF0IGFyZSB0eXBpY2FsbHkgYXNzb2NpYXRlZCB3aXRoIGFkdmFuY2VkIGh1bWFuIHBsYXllcnMuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPjNVcEdhbWluZyBhbHNvIGVtcGhhc2l6ZXMgPHN0cm9uZz5jdXN0b21pemF0aW9uPC9zdHJvbmc+LiBVc2VycyBjYW4gdHdlYWsgYWdncmVzc2lvbiBsZXZlbHMsIHJpc2sgdG9sZXJhbmNlLCBhbmQgc3BlY2lmaWMgcGxheSBzdHlsZXMuIFdhbnQgYSB0aWdodC1hZ2dyZXNzaXZlIGFwcHJvYWNoPyBZb3UgY2FuIHNldCB0aGF0LiBQcmVmZXIgYSBsb29zZXIsIG1vcmUgZXhwbG9pdGF0aXZlIHN0cmF0ZWd5PyBUaGF04oCZcyBhbiBvcHRpb24gdG9vLiBUaGlzIGZsZXhpYmlsaXR5IGFsbG93cyB1c2VycyB0byBhbGlnbiB0aGUgYm904oCZcyBiZWhhdmlvciB3aXRoIHRoZWlyIG93biBnb2Fscywgd2hldGhlciB0aGF04oCZcyBtaW5pbWl6aW5nIHJpc2sgb3IgbWF4aW1pemluZyBwcm9maXQuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+U2VjdXJpdHkgZmVhdHVyZXMgYXJlIGFub3RoZXIgbWFqb3Igc2VsbGluZyBwb2ludC4gVGhlIGRldmVsb3BlcnMgY2xhaW0gdG8gaW5jbHVkZSA8c3Ryb25nPmFudGktZGV0ZWN0aW9uIG1lY2hhbmlzbXM8L3N0cm9uZz4sIHN1Y2ggYXMgcmFuZG9taXplZCB0aW1pbmcsIHZhcmlhYmxlIGJldCBzaXppbmcsIGFuZCBodW1hbi1saWtlIHBhdXNlcy4gVGhlc2UgYXJlIGRlc2lnbmVkIHRvIG1ha2UgdGhlIGJvdCBsZXNzIHByZWRpY3RhYmxlIGFuZCBoYXJkZXIgZm9yIHBva2VyIHBsYXRmb3JtcyB0byBpZGVudGlmeS48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOmhlYWRpbmcgeyJsZXZlbCI6M30gLS0+CjxoMyBjbGFzcz0id3AtYmxvY2staGVhZGluZyI+PHN0cm9uZz5TdXBwb3J0ZWQgUGxhdGZvcm1zIGFuZCBHYW1lczwvc3Ryb25nPjwvaDM+CjwhLS0gL3dwOmhlYWRpbmcgLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+Q29tcGF0aWJpbGl0eSBpcyBvZnRlbiB3aGVyZSBtYW55IHBva2VyIGJvdHMgZmFsbCBzaG9ydCwgYnV0IDNVcEdhbWluZyBhcHBlYXJzIHRvIGNhc3QgYSByZWxhdGl2ZWx5IHdpZGUgbmV0LiBUaGUgYm90IHN1cHBvcnRzIHNldmVyYWwgbWFqb3Igb25saW5lIHBva2VyIHBsYXRmb3JtcywgdGhvdWdoIHRoZSBleGFjdCBsaXN0IGNhbiB2YXJ5IGRlcGVuZGluZyBvbiB1cGRhdGVzIGFuZCByZWdpb25hbCByZXN0cmljdGlvbnMuIFR5cGljYWxseSwgaXTigJlzIGRlc2lnbmVkIHRvIHdvcmsgd2l0aCBwb3B1bGFyIGNsaWVudHMgdGhhdCBoYXZlIGxhcmdlIHBsYXllciBwb29scywgd2hpY2ggaXMgY3J1Y2lhbCBmb3IgbWFpbnRhaW5pbmcgY29uc2lzdGVudCBnYW1lIGF2YWlsYWJpbGl0eSBhbmQgc29mdGVyIGNvbXBldGl0aW9uLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPkluIHRlcm1zIG9mIGdhbWUgdHlwZXMsIDNVcEdhbWluZyBmb2N1c2VzIHByaW1hcmlseSBvbiA8c3Ryb25nPlRleGFzIEhvbGTigJllbTwvc3Ryb25nPiwgd2hpY2ggcmVtYWlucyB0aGUgbW9zdCB3aWRlbHkgcGxheWVkIHBva2VyIHZhcmlhbnQgb25saW5lLiBCb3RoIDxzdHJvbmc+Y2FzaCBnYW1lcyBhbmQgdG91cm5hbWVudHM8L3N0cm9uZz4gYXJlIHN1cHBvcnRlZCwgZ2l2aW5nIHVzZXJzIGZsZXhpYmlsaXR5IGluIGhvdyB0aGV5IGRlcGxveSB0aGUgYm90LiBDYXNoIGdhbWVzIGFyZSBvZnRlbiBmYXZvcmVkIGZvciBzdGVhZHkgZ3JpbmRpbmcsIHdoaWxlIHRvdXJuYW1lbnRzIG9mZmVyIHRoZSBwb3RlbnRpYWwgZm9yIGxhcmdlciwgYWxiZWl0IGxlc3MgcHJlZGljdGFibGUsIHBheW91dHMuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+VGhlIGJvdCBhbHNvIGFjY29tbW9kYXRlcyBkaWZmZXJlbnQgc3Rha2UgbGV2ZWxzLCBmcm9tIG1pY3JvLXN0YWtlcyB0byBtaWQtc3Rha2VzIHRhYmxlcy4gVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIGZvciBiZWdpbm5lcnMgd2hvIHdhbnQgdG8gdGVzdCB0aGUgd2F0ZXJzIHdpdGhvdXQgcmlza2luZyBzaWduaWZpY2FudCBiYW5rcm9sbHMuIEF0IHRoZSBzYW1lIHRpbWUsIG1vcmUgZXhwZXJpZW5jZWQgdXNlcnMgY2FuIHNjYWxlIHVwLCB0aG91Z2ggdGhpcyBjb21lcyB3aXRoIGluY3JlYXNlZCBzY3J1dGlueSBmcm9tIHBsYXRmb3JtcyBhbmQgdG91Z2hlciBjb21wZXRpdGlvbi48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5Bbm90aGVyIG5vdGFibGUgYXNwZWN0IGlzIGl0cyBhYmlsaXR5IHRvIGFkYXB0IHRvIGRpZmZlcmVudCB0YWJsZSBmb3JtYXRzLCBpbmNsdWRpbmcgPHN0cm9uZz42LW1heCBhbmQgZnVsbC1yaW5nIGdhbWVzPC9zdHJvbmc+LiBFYWNoIGZvcm1hdCByZXF1aXJlcyBhIGRpc3RpbmN0IHN0cmF0ZWdpYyBhcHByb2FjaCwgYW5kIHRoZSBib3TigJlzIGFiaWxpdHkgdG8gYWRqdXN0IGFjY29yZGluZ2x5IGlzIGEga2V5IGZhY3RvciBpbiBpdHMgb3ZlcmFsbCBlZmZlY3RpdmVuZXNzLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPkhvd2V2ZXIsIGl04oCZcyB3b3J0aCBub3RpbmcgdGhhdCBubyBib3QgaXMgdW5pdmVyc2FsbHkgY29tcGF0aWJsZSB3aXRoIGV2ZXJ5IHBsYXRmb3JtLiBQb2tlciBzaXRlcyBmcmVxdWVudGx5IHVwZGF0ZSB0aGVpciBzb2Z0d2FyZSBhbmQgc2VjdXJpdHkgbWVhc3VyZXMsIHdoaWNoIGNhbiBpbXBhY3QgZnVuY3Rpb25hbGl0eS4gVXNlcnMgbmVlZCB0byBzdGF5IGluZm9ybWVkIGFuZCBlbnN1cmUgdGhleeKAmXJlIHVzaW5nIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgYm90IHRvIG1haW50YWluIGNvbXBhdGliaWxpdHkuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+VWx0aW1hdGVseSwgd2hpbGUgM1VwR2FtaW5nIG9mZmVycyBhIHNvbGlkIHJhbmdlIG9mIHN1cHBvcnRlZCBwbGF0Zm9ybXMgYW5kIGdhbWUgdHlwZXMsIHRoZSByZWFsIHF1ZXN0aW9uIGlzIGhvdyB3ZWxsIGl0IHBlcmZvcm1zIGFjcm9zcyB0aGVzZSBlbnZpcm9ubWVudHMuIERvZXMgaXQgbWFpbnRhaW4gY29uc2lzdGVuY3ksIG9yIGRvZXMgaXRzIGVmZmVjdGl2ZW5lc3MgdmFyeSBkZXBlbmRpbmcgb24gdGhlIHNldHRpbmc\/IFRoYXTigJlzIHdoZXJlIHJlYWwtd29ybGQgdGVzdGluZyBiZWNvbWVzIGVzc2VudGlhbC48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6aGVhZGluZyAtLT4KPGgyIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIj48c3Ryb25nPkhvdyAzVXBHYW1pbmcgUG9rZXIgQm90IFdvcmtzPC9zdHJvbmc+PC9oMj4KPCEtLSAvd3A6aGVhZGluZyAtLT4KCjwhLS0gd3A6aGVhZGluZyB7ImxldmVsIjozfSAtLT4KPGgzIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIj48c3Ryb25nPkFJIERlY2lzaW9uLU1ha2luZyBhbmQgQWxnb3JpdGhtczwvc3Ryb25nPjwvaDM+CjwhLS0gL3dwOmhlYWRpbmcgLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPkF0IGl0cyBmb3VuZGF0aW9uLCB0aGUgYm90IHJlbGllcyBoZWF2aWx5IG9uIDxzdHJvbmc+R2FtZSBUaGVvcnkgT3B0aW1hbCAoR1RPKTwvc3Ryb25nPiBzdHJhdGVnaWVzLiBUaGF0IG1lYW5zIGl0IGRvZXNu4oCZdCBqdXN0IHBsYXkgdG8gZXhwbG9pdCB3ZWFrIG9wcG9uZW50c+KAlGl0IHBsYXlzIGluIGEgd2F5IHRoYXQgaXMgdGhlb3JldGljYWxseSBiYWxhbmNlZCBhbmQgZGlmZmljdWx0IHRvIGNvdW50ZXIuIEltYWdpbmUgYSBwbGF5ZXIgd2hvIG5ldmVyIGJlY29tZXMgcHJlZGljdGFibGUsIHdobyBtaXhlcyBibHVmZnMgYW5kIHZhbHVlIGJldHMgYXQgbWF0aGVtYXRpY2FsbHkgc291bmQgZnJlcXVlbmNpZXMuIFRoYXTigJlzIHRoZSBiYXNlbGluZSBiZWhhdmlvci4gT24gdG9wIG9mIHRoYXQsIDNVcEdhbWluZyBsYXllcnMgaW4gPHN0cm9uZz5leHBsb2l0YXRpdmUgYWRqdXN0bWVudHM8L3N0cm9uZz4sIG1lYW5pbmcgaXQgY2FuIGRldmlhdGUgZnJvbSBHVE8gd2hlbiBpdCBkZXRlY3RzIHBhdHRlcm5zIGluIG9wcG9uZW50c+KAmSBiZWhhdmlvci48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPlNwZWVkIGlzIGFsc28gYSBtYWpvciBhZHZhbnRhZ2UuIFdoaWxlIGEgaHVtYW4gbWlnaHQgdGFrZSBzZXZlcmFsIHNlY29uZHMgdG8gY2FsY3VsYXRlIHBvdCBvZGRzLCBpbXBsaWVkIG9kZHMsIGFuZCBvcHBvbmVudCB0ZW5kZW5jaWVzLCB0aGUgYm90IGRvZXMgdGhpcyBhbG1vc3QgaW5zdGFudGx5LiBUaGF0IGVmZmljaWVuY3kgYmVjb21lcyBlc3BlY2lhbGx5IHZhbHVhYmxlIHdoZW4gbXVsdGktdGFibGluZywgd2hlcmUgY29nbml0aXZlIGxvYWQgd291bGQgb3ZlcndoZWxtIG1vc3QgcGxheWVycy48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5TdGlsbCwgaXTigJlzIHdvcnRoIHF1ZXN0aW9uaW5nIGhvdyDigJxhZGFwdGl2ZeKAnSB0aGUgQUkgcmVhbGx5IGlzLiBXaGlsZSBpdCBkb2VzIGFkanVzdCB3aXRoaW4gc2Vzc2lvbnMsIGl04oCZcyBub3QgdHJ1bHkgbGVhcm5pbmcgaW4gdGhlIHNhbWUgd2F5IGEgaHVtYW4gZG9lcyBvdmVyIG1vbnRocyBvciB5ZWFycyB1bmxlc3MgaXTigJlzIHBhaXJlZCB3aXRoIGV4dGVybmFsIGRhdGEgaW5wdXRzLiBTbyB3aGlsZSB0aGUgZGVjaXNpb24tbWFraW5nIGZlZWxzIGR5bmFtaWMsIGl0IG9wZXJhdGVzIHdpdGhpbiBwcmVkZWZpbmVkIGJvdW5kYXJpZXMgc2V0IGJ5IGl0cyBkZXZlbG9wZXJzLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpoZWFkaW5nIHsibGV2ZWwiOjN9IC0tPgo8aDMgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPjxzdHJvbmc+UmVhbC1UaW1lIEdhbWUgQWRhcHRhdGlvbjwvc3Ryb25nPjwvaDM+CjwhLS0gL3dwOmhlYWRpbmcgLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPkluIHByYWN0aWNlLCB0aGUgYm90IHRyYWNrcyBzZXZlcmFsIGtleSB2YXJpYWJsZXMgZHVyaW5nIGdhbWVwbGF5OiBvcHBvbmVudCBhZ2dyZXNzaW9uIGxldmVscywgZm9sZCBmcmVxdWVuY2llcywgYmV0IHNpemluZyBwYXR0ZXJucywgYW5kIHRpbWluZyB0ZWxscy4gQnkgYW5hbHl6aW5nIHRoZXNlIGZhY3RvcnMsIGl0IGJ1aWxkcyBhIHJvdWdoIHByb2ZpbGUgb2YgZWFjaCBwbGF5ZXIgYXQgdGhlIHRhYmxlLiBUaGluayBvZiBpdCBsaWtlIGEgbWVudGFsIG5vdGUtdGFraW5nIHN5c3RlbSB0aGF0IG5ldmVyIGZvcmdldHMgYW5kIHVwZGF0ZXMgY29udGludW91c2x5LjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPkZvciBpbnN0YW5jZSwgaWYgYW4gb3Bwb25lbnQgY29uc2lzdGVudGx5IHJhaXNlcyBmcm9tIGxhdGUgcG9zaXRpb24gYnV0IGZvbGRzIHRvIHJlLXJhaXNlcywgdGhlIGJvdCB3aWxsIHN0YXJ0IGFwcGx5aW5nIHByZXNzdXJlIGluIHRob3NlIHNwb3RzLiBJZiBhbm90aGVyIHBsYXllciBvbmx5IGJldHMgYmlnIHdoZW4gdGhleSBoYXZlIHN0cm9uZyBoYW5kcywgdGhlIGJvdCBiZWNvbWVzIG1vcmUgY2F1dGlvdXMgYWdhaW5zdCBsYXJnZSBiZXRzLiBUaGVzZSBhZGp1c3RtZW50cyBoYXBwZW4gb24gdGhlIGZseSwgd2l0aG91dCBuZWVkaW5nIG1hbnVhbCBpbnB1dCBmcm9tIHRoZSB1c2VyLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5Ib3dldmVyLCBhZGFwdGF0aW9uIGhhcyBpdHMgbGltaXRzLiBUaGUgYm90IHBlcmZvcm1zIGJlc3QgaW4gZW52aXJvbm1lbnRzIHdoZXJlIHBsYXllciB0ZW5kZW5jaWVzIGFyZSBjbGVhciBhbmQgY29uc2lzdGVudOKAlHR5cGljYWxseSBsb3dlciB0byBtaWQtc3Rha2VzIGdhbWVzLiBBZ2FpbnN0IGhpZ2hseSBza2lsbGVkIG9wcG9uZW50cyB3aG8gYmFsYW5jZSB0aGVpciByYW5nZXMgYW5kIG1peCBzdHJhdGVnaWVzIGVmZmVjdGl2ZWx5LCB0aGUgYm904oCZcyBlZGdlIGJlY29tZXMgdGhpbm5lci4gSXTigJlzIG5vdCB0aGF0IGl0IGZhaWxzIG91dHJpZ2h0LCBidXQgdGhlIGFkdmFudGFnZSBuYXJyb3dzIHNpZ25pZmljYW50bHkuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+QW5vdGhlciBpbnRlcmVzdGluZyBvYnNlcnZhdGlvbiBpcyBob3cgdGhlIGJvdCBoYW5kbGVzIDxzdHJvbmc+dGFibGUgZHluYW1pY3M8L3N0cm9uZz4uIElmIGEgdGFibGUgYmVjb21lcyB0b28gYWdncmVzc2l2ZSBvciB0b28gdGlnaHQsIGl0IGFkanVzdHMgaXRzIG92ZXJhbGwgc3RyYXRlZ3kgYWNjb3JkaW5nbHkuIFRoaXMgbWFjcm8tbGV2ZWwgYWRhcHRhdGlvbiBoZWxwcyBtYWludGFpbiBzdGFiaWxpdHkgb3ZlciBsb25nIHNlc3Npb25zLCBlc3BlY2lhbGx5IHdoZW4gbXVsdGktdGFibGluZyBhY3Jvc3MgZGlmZmVyZW50IGVudmlyb25tZW50cy48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOmhlYWRpbmcgLS0+CjxoMiBjbGFzcz0id3AtYmxvY2staGVhZGluZyI+PHN0cm9uZz5JbnN0YWxsYXRpb24gYW5kIFNldHVwIEV4cGVyaWVuY2U8L3N0cm9uZz48L2gyPgo8IS0tIC93cDpoZWFkaW5nIC0tPgoKPCEtLSB3cDpoZWFkaW5nIHsibGV2ZWwiOjN9IC0tPgo8aDMgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPjxzdHJvbmc+U3lzdGVtIFJlcXVpcmVtZW50czwvc3Ryb25nPjwvaDM+CjwhLS0gL3dwOmhlYWRpbmcgLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+QmVmb3JlIGRpdmluZyBpbnRvIHBlcmZvcm1hbmNlLCBpdOKAmXMgd29ydGggbG9va2luZyBhdCBzb21ldGhpbmcgZmFyIGxlc3MgZ2xhbW9yb3VzIGJ1dCBlcXVhbGx5IGltcG9ydGFudDogd2hldGhlciB5b3VyIHN5c3RlbSBjYW4gYWN0dWFsbHkgcnVuIHRoZSA8c3Ryb25nPjNVcEdhbWluZyBQb2tlciBCb3Q8L3N0cm9uZz4gc21vb3RobHkuIFRoZSBnb29kIG5ld3MgaXMgdGhhdCBpdCBkb2VzbuKAmXQgZGVtYW5kIGEgaGlnaC1lbmQgZ2FtaW5nIHJpZywgYnV0IGl04oCZcyBhbHNvIG5vdCBhcyBsaWdodHdlaWdodCBhcyBzb21lIG9sZGVyLCBzaW1wbGVyIGJvdHMuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5TdG9yYWdlIHJlcXVpcmVtZW50cyBhcmUgcmVsYXRpdmVseSBtb2Rlc3QsIGJ1dCBhIDxzdHJvbmc+c29saWQtc3RhdGUgZHJpdmUgKFNTRCk8L3N0cm9uZz4gaGVscHMgd2l0aCBmYXN0ZXIgbG9hZGluZyB0aW1lcyBhbmQgc21vb3RoZXIgb3BlcmF0aW9uLiBJbnRlcm5ldCBzdGFiaWxpdHkgaXMgYW5vdGhlciBvZnRlbi1vdmVybG9va2VkIGZhY3Rvci4gQSBkcm9wcGVkIGNvbm5lY3Rpb24gbWlkLWhhbmQgY2FuIGNhdXNlIG1pc3BsYXlzIG9yIGV2ZW4gZGlzY29ubmVjdCB5b3UgZnJvbSB0YWJsZXMsIHdoaWNoIGlzIHNvbWV0aGluZyBubyBib3QgY2FuIGZ1bGx5IGNvbXBlbnNhdGUgZm9yLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPlRoZXJl4oCZcyBhbHNvIHRoZSBxdWVzdGlvbiBvZiB2aXJ0dWFsaXphdGlvbiBvciBWUFMgKFZpcnR1YWwgUHJpdmF0ZSBTZXJ2ZXIpIHVzYWdlLiBTb21lIHVzZXJzIHByZWZlciBydW5uaW5nIGJvdHMgb24gcmVtb3RlIHNlcnZlcnMgZm9yIGFkZGVkIGFub255bWl0eSBhbmQgdXB0aW1lLiAzVXBHYW1pbmcgc3VwcG9ydHMgdGhpcyBzZXR1cCwgYnV0IGl0IHJlcXVpcmVzIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBhbmQsIGluIHNvbWUgY2FzZXMsIGV4dHJhIGNvc3QuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+SW4gc2hvcnQsIHdoaWxlIHRoZSBzeXN0ZW0gcmVxdWlyZW1lbnRzIGFyZW7igJl0IGV4dHJlbWUsIHRoZXnigJlyZSBub3QgdHJpdmlhbCBlaXRoZXIuIFRyZWF0aW5nIHRoaXMgbGlrZSBhIOKAnHNldCBpdCBhbmQgZm9yZ2V0IGl04oCdIHRvb2wgb24gYW4gb2xkIGxhcHRvcCBpcyBsaWtlbHkgdG8gbGVhZCB0byBmcnVzdHJhdGlvbi4gQSBzdGFibGUsIG1vZGVyYXRlbHkgcG93ZXJmdWwgc2V0dXAgbWFrZXMgYSBub3RpY2VhYmxlIGRpZmZlcmVuY2UgaW4gYm90aCBwZXJmb3JtYW5jZSBhbmQgcmVsaWFiaWxpdHkuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOmhlYWRpbmcgeyJsZXZlbCI6M30gLS0+CjxoMyBjbGFzcz0id3AtYmxvY2staGVhZGluZyI+PHN0cm9uZz5TdGVwLWJ5LVN0ZXAgU2V0dXAgUHJvY2Vzczwvc3Ryb25nPjwvaDM+CjwhLS0gL3dwOmhlYWRpbmcgLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+R2V0dGluZyBzdGFydGVkIHdpdGggdGhlIDxzdHJvbmc+M1VwR2FtaW5nIFBva2VyIEJvdDwvc3Ryb25nPiBpcyByZWxhdGl2ZWx5IHN0cmFpZ2h0Zm9yd2FyZCwgYnV0IHRoYXQgZG9lc27igJl0IG1lYW4gaXTigJlzIGNvbXBsZXRlbHkgZm9vbHByb29mLiBUaGUgc2V0dXAgcHJvY2VzcyB3YWxrcyBhIGxpbmUgYmV0d2VlbiB1c2VyLWZyaWVuZGx5IGFuZCBzbGlnaHRseSB0ZWNobmljYWwsIGRlcGVuZGluZyBvbiB5b3VyIGZhbWlsaWFyaXR5IHdpdGggcG9rZXIgc29mdHdhcmUgYW5kIHRoaXJkLXBhcnR5IHRvb2xzLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPlRoZSBmaXJzdCBzdGVwIHVzdWFsbHkgaW52b2x2ZXMgZG93bmxvYWRpbmcgdGhlIHNvZnR3YXJlIGZyb20gdGhlIG9mZmljaWFsIHNvdXJjZSBhbmQgdmVyaWZ5aW5nIHlvdXIgbGljZW5zZS4gVGhpcyBwYXJ0IGlzIHNpbXBsZSBlbm91Z2gsIGJ1dCBpdOKAmXMgY3J1Y2lhbCB0byBhdm9pZCB1bm9mZmljaWFsIHZlcnNpb25zLCB3aGljaCBjYW4gYmUgb3V0ZGF0ZWQgb3IgZXZlbiBjb21wcm9taXNlZC4gT25jZSBpbnN0YWxsZWQsIHRoZSBib3QgbmVlZHMgdG8gYmUgbGlua2VkIHRvIHlvdXIgY2hvc2VuIHBva2VyIGNsaWVudC4gVGhpcyBpcyB3aGVyZSB0aGluZ3MgY2FuIGdldCBhIGJpdCB0cmlja3kuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+TW9zdCBib3RzLCBpbmNsdWRpbmcgM1VwR2FtaW5nLCByZWx5IG9uIDxzdHJvbmc+c2NyZWVuIHJlYWRpbmcgb3IgQVBJIGludGVncmF0aW9uPC9zdHJvbmc+IHRvIGludGVycHJldCBnYW1lIGRhdGEuIFRoYXQgbWVhbnMgeW91IG1heSBuZWVkIHRvIGNvbmZpZ3VyZSBkaXNwbGF5IHNldHRpbmdzLCB0YWJsZSBsYXlvdXRzLCBhbmQgcmVzb2x1dGlvbiB0byBlbnN1cmUgY29tcGF0aWJpbGl0eS4gSXTigJlzIG5vdCBvdmVybHkgY29tcGxpY2F0ZWQsIGJ1dCBpdCBkb2VzIHJlcXVpcmUgYXR0ZW50aW9uIHRvIGRldGFpbC4gQSBtaXNhbGlnbmVkIHRhYmxlIG9yIGluY29ycmVjdCBzZXR0aW5nIGNhbiBjYXVzZSB0aGUgYm90IHRvIG1pc3JlYWQgaW5mb3JtYXRpb24sIGxlYWRpbmcgdG8gcG9vciBkZWNpc2lvbnMuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPlRlc3RpbmcgaXMgYW4gZXNzZW50aWFsIHN0ZXAgdGhhdCBtYW55IHVzZXJzIG92ZXJsb29rLiBSdW5uaW5nIHRoZSBib3QgaW4gbG93LXN0YWtlcyBnYW1lcyBvciBkZW1vIGVudmlyb25tZW50cyBhbGxvd3MgeW91IHRvIGlkZW50aWZ5IGlzc3VlcyB3aXRob3V0IHJpc2tpbmcgbXVjaCBtb25leS4gSXQgYWxzbyBnaXZlcyB5b3UgYSBmZWVsIGZvciBob3cgdGhlIGJvdCBvcGVyYXRlcywgd2hpY2ggaXMgdmFsdWFibGUgaWYgeW91IHBsYW4gdG8gaW50ZXJ2ZW5lIG9yIGFkanVzdCBzZXR0aW5ncyBsYXRlci48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPjxzdHJvbmc+VXNlciBJbnRlcmZhY2UgYW5kIEVhc2Ugb2YgVXNlPC9zdHJvbmc+bGV2ZWxjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnQ8c3Ryb25nPkRhc2hib2FyZCBhbmQgQ29udHJvbHM8L3N0cm9uZz5sZXZlbGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50VGhlIGZpcnN0IHRoaW5nIHlvdSBub3RpY2UgYWZ0ZXIgbGF1bmNoaW5nIHRoZSA8c3Ryb25nPjNVcEdhbWluZyBQb2tlciBCb3Q8L3N0cm9uZz4gaXNu4oCZdCBpdHMgaW50ZWxsaWdlbmNlaXTigJlzIGl0cyBpbnRlcmZhY2UuIEFuZCBob25lc3RseSwgdGhhdCBtYXR0ZXJzIG1vcmUgdGhhbiBtb3N0IHBlb3BsZSBleHBlY3QuIEEgcG93ZXJmdWwgYm90IHdpdGggYSBjb25mdXNpbmcgZGFzaGJvYXJkIGlzIGxpa2UgYSBzcG9ydHMgY2FyIHdpdGggYSBicm9rZW4gc3RlZXJpbmcgd2hlZWwuIEZvcnR1bmF0ZWx5LCAzVXBHYW1pbmcgc3RyaWtlcyBhIGZhaXJseSByZWFzb25hYmxlIGJhbGFuY2UgYmV0d2VlbiBmdW5jdGlvbmFsaXR5IGFuZCB1c2FiaWxpdHksIHRob3VnaCBpdOKAmXMgbm90IHdpdGhvdXQgYSBmZXcgcXVpcmtzLmRyb3BDYXBwbGFjZWhvbGRlcmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50VGhlIG1haW4gZGFzaGJvYXJkIGlzIGRlc2lnbmVkIHRvIGdpdmUgeW91IGEgY2VudHJhbGl6ZWQgdmlldyBvZiBldmVyeXRoaW5nIGhhcHBlbmluZyBpbiByZWFsIHRpbWUuIFlvdSBjYW4gc2VlIGFjdGl2ZSB0YWJsZXMsIGN1cnJlbnQgaGFuZHMsIHdpbi9sb3NzIG1ldHJpY3MsIGFuZCBkZWNpc2lvbiBsb2dzIGFsbCBpbiBvbmUgcGxhY2UuIEZvciBzb21lb25lIHJ1bm5pbmcgbXVsdGlwbGUgdGFibGVzLCB0aGlzIGtpbmQgb2YgdmlzaWJpbGl0eSBpcyBlc3NlbnRpYWwuIEl0IGFsbG93cyB5b3UgdG8gbW9uaXRvciBwZXJmb3JtYW5jZSB3aXRob3V0IGNvbnN0YW50bHkgc3dpdGNoaW5nIGJldHdlZW4gd2luZG93cywgd2hpY2ggY2FuIHF1aWNrbHkgYmVjb21lIG92ZXJ3aGVsbWluZy5kcm9wQ2FwcGxhY2Vob2xkZXJpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudENvbnRyb2xzIGFyZSBnZW5lcmFsbHkgaW50dWl0aXZlLiBZb3UgY2FuIHN0YXJ0IG9yIHN0b3AgdGhlIGJvdCwgYWRqdXN0IHRhYmxlIGxpbWl0cywgYW5kIHN3aXRjaCBiZXR3ZWVuIHN0cmF0ZWd5IHByb2ZpbGVzIHdpdGgganVzdCBhIGZldyBjbGlja3MuIFRoZXJl4oCZcyBhbHNvIGEgbGl2ZSBmZWVkIG9mIHRoZSBib3TigJlzIGRlY2lzaW9ucywgd2hpY2ggaXMgc3VycHJpc2luZ2x5IHVzZWZ1bC4gV2F0Y2hpbmcgaG93IGl0IHJlYWN0cyBpbiBkaWZmZXJlbnQgc2NlbmFyaW9zIGdpdmVzIHlvdSBpbnNpZ2h0IGludG8gaXRzIGxvZ2lj4oCUYWxtb3N0IGxpa2UgcGVla2luZyBpbnNpZGUgdGhlIG1pbmQgb2YgYSBkaXNjaXBsaW5lZCBwb2tlciBwbGF5ZXIgd2hvIG5ldmVyIHRpbHRzLmRyb3BDYXBwbGFjZWhvbGRlcmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50SG93ZXZlciwgaXTigJlzIG5vdCBwZXJmZWN0bHkgYmVnaW5uZXItZnJpZW5kbHkuIFNvbWUgb2YgdGhlIHRlcm1pbm9sb2d5IGFuZCBzZXR0aW5ncyBhc3N1bWUgYSBiYXNpYyB1bmRlcnN0YW5kaW5nIG9mIHBva2VyIHN0cmF0ZWd5LiBJZiB5b3XigJlyZSBuZXcgdG8gY29uY2VwdHMgbGlrZSBhZ2dyZXNzaW9uIGZyZXF1ZW5jeSBvciBwb3NpdGlvbmFsIHJhbmdlcywgcGFydHMgb2YgdGhlIGludGVyZmFjZSBtaWdodCBmZWVsIGEgYml0IGRlbnNlLiBJdCBkb2VzbuKAmXQgaG9sZCB5b3VyIGhhbmQsIGFuZCBpbiBzb21lIHdheXMsIHRoYXTigJlzIGludGVudGlvbmFsLiBUaGlzIHRvb2wgaXMgY2xlYXJseSBidWlsdCB3aXRoIHNlbWktc2VyaW91cyB1c2VycyBpbiBtaW5kIHJhdGhlciB0aGFuIGNvbXBsZXRlIG5vdmljZXMuZHJvcENhcHBsYWNlaG9sZGVyaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRBbm90aGVyIGludGVyZXN0aW5nIGZlYXR1cmUgaXMgdGhlIDxzdHJvbmc+c2Vzc2lvbiBhbmFseXRpY3MgcGFuZWw8L3N0cm9uZz4sIHdoaWNoIHRyYWNrcyBwZXJmb3JtYW5jZSBvdmVyIHRpbWUuIFlvdSBjYW4gcmV2aWV3IGhhbmQgaGlzdG9yaWVzLCBpZGVudGlmeSB0cmVuZHMsIGFuZCBldmVuIHNwb3QgbGVha3MgaW4gaG93IHRoZSBib3QgaXMgY29uZmlndXJlZC4gSXTigJlzIG5vdCBhcyBhZHZhbmNlZCBhcyBkZWRpY2F0ZWQgcG9rZXIgdHJhY2tpbmcgc29mdHdhcmUsIGJ1dCBpdCBhZGRzIGEgbGF5ZXIgb2YgdHJhbnNwYXJlbmN5IHRoYXQgbWFueSBjb21wZXRpbmcgYm90cyBsYWNrLmRyb3BDYXBwbGFjZWhvbGRlcmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50SW4gZXZlcnlkYXkgdXNlLCB0aGUgaW50ZXJmYWNlIGZlZWxzIHN0YWJsZSBhbmQgcmVzcG9uc2l2ZS4gQ3Jhc2hlcyBhcmUgcmFyZSwgYW5kIHVwZGF0ZXMgdGVuZCB0byBpbXByb3ZlIHVzYWJpbGl0eSBpbmNyZW1lbnRhbGx5LiBJdOKAmXMgbm90IGZsYXNoeSwgYnV0IGl0IGdldHMgdGhlIGpvYiBkb25lYW5kIHdoZW4gcmVhbCBtb25leSBpcyBpbnZvbHZlZCwgcmVsaWFiaWxpdHkgYmVhdHMgYWVzdGhldGljcyBldmVyeSB0aW1lLmRyb3BDYXBwbGFjZWhvbGRlcmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50PHN0cm9uZz5DdXN0b21pemF0aW9uIE9wdGlvbnM8L3N0cm9uZz5sZXZlbGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50SWYgdGhlcmXigJlzIG9uZSBhcmVhIHdoZXJlIHRoZSA8c3Ryb25nPjNVcEdhbWluZyBQb2tlciBCb3Q8L3N0cm9uZz4gZ2VudWluZWx5IHN0YW5kcyBvdXQsIGl04oCZcyBjdXN0b21pemF0aW9uLiBUaGlzIGlzbuKAmXQgYSBvbmUtc2l6ZS1maXRzLWFsbCB0b29sOyBpdOKAmXMgbW9yZSBsaWtlIGEgY29uZmlndXJhYmxlIGVuZ2luZSB0aGF0IHlvdSBjYW4gdHdlYWsgdG8gbWF0Y2ggeW91ciByaXNrIHRvbGVyYW5jZSwgcGxheSBzdHlsZSwgYW5kIG92ZXJhbGwgZ29hbHMuIFRoYXQgZmxleGliaWxpdHkgaXMgYSBiaWcgcGFydCBvZiBpdHMgYXBwZWFsYnV0IGl0IGFsc28gaW50cm9kdWNlcyBjb21wbGV4aXR5LmRyb3BDYXBwbGFjZWhvbGRlcmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50VXNlcnMgY2FuIGFkanVzdCBhIHdpZGUgcmFuZ2Ugb2YgcGFyYW1ldGVycywgaW5jbHVkaW5nIDxzdHJvbmc+cHJlLWZsb3AgcmFuZ2VzLCBwb3N0LWZsb3AgYWdncmVzc2lvbiwgYmx1ZmYgZnJlcXVlbmN5LCBhbmQgYmFua3JvbGwgbWFuYWdlbWVudCBydWxlczwvc3Ryb25nPi4gV2FudCB0aGUgYm90IHRvIHBsYXkgdGlnaHQgYW5kIGNvbnNlcnZhdGl2ZSwgZm9sZGluZyBtYXJnaW5hbCBoYW5kcyBhbmQgYXZvaWRpbmcgcmlza3kgYmx1ZmZzPyBZb3UgY2FuIGRvIHRoYXQuIFByZWZlciBhIGxvb3NlLCBoaWdoLXZhcmlhbmNlIHN0eWxlIHRoYXQgcHJlc3N1cmVzIG9wcG9uZW50cyBhbmQgY2hhc2VzIGJpZ2dlciBwb3RzPyBUaGF04oCZcyBhbHNvIG9uIHRoZSB0YWJsZS5kcm9wQ2FwcGxhY2Vob2xkZXJpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudFRoZXJl4oCZcyBhbHNvIHRoZSBhYmlsaXR5IHRvIGNyZWF0ZSBtdWx0aXBsZSBwcm9maWxlcyBhbmQgc3dpdGNoIGJldHdlZW4gdGhlbSBkZXBlbmRpbmcgb24gdGhlIGdhbWUgZW52aXJvbm1lbnQuIEZvciBleGFtcGxlLCB5b3UgbWlnaHQgdXNlIGEgbW9yZSBhZ2dyZXNzaXZlIHNldHVwIGluIHNvZnRlciBnYW1lcyBhbmQgYSBiYWxhbmNlZCBHVE8gYXBwcm9hY2ggaW4gdG91Z2hlciBvbmVzLiBUaGlzIGxldmVsIG9mIGNvbnRyb2wgYWxsb3dzIGZvciBzdHJhdGVnaWMgZmxleGliaWxpdHkgdGhhdCBtYW55IHNpbXBsZXIgYm90cyBzaW1wbHkgZG9u4oCZdCBvZmZlci5kcm9wQ2FwcGxhY2Vob2xkZXJpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudE9uZSBwYXJ0aWN1bGFybHkgdXNlZnVsIGZlYXR1cmUgaXMgPHN0cm9uZz5iZXQgc2l6aW5nIGN1c3RvbWl6YXRpb248L3N0cm9uZz4uIEluc3RlYWQgb2YgZml4ZWQgYmV0IHNpemVzLCB0aGUgYm90IGNhbiByYW5kb21pemUgd2l0aGluIGEgZGVmaW5lZCByYW5nZSwgbWFraW5nIGl0cyBiZWhhdmlvciBsZXNzIHByZWRpY3RhYmxlLiBUaGlzIG5vdCBvbmx5IGltcHJvdmVzIHBlcmZvcm1hbmNlIGJ1dCBhbHNvIGhlbHBzIHJlZHVjZSB0aGUgcmlzayBvZiBkZXRlY3Rpb24sIGFzIHJlcGV0aXRpdmUgcGF0dGVybnMgYXJlIGEgY29tbW9uIHJlZCBmbGFnIGZvciBwb2tlciBwbGF0Zm9ybXMuZHJvcENhcHBsYWNlaG9sZGVyaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRUaGF0IHNhaWQsIG1vcmUgb3B0aW9ucyBkb27igJl0IGFsd2F5cyBtZWFuIGJldHRlciBvdXRjb21lcy4gV2l0aG91dCBhIHNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgcG9rZXIgc3RyYXRlZ3ksIGl04oCZcyBlYXN5IHRvIG1pc2NvbmZpZ3VyZSB0aGUgYm90IGFuZCB1bmludGVudGlvbmFsbHkgcmVkdWNlIGl0cyBlZmZlY3RpdmVuZXNzLiBJbiBzb21lIGNhc2VzLCB1c2VycyB3aG8gc3RpY2sgd2l0aCBkZWZhdWx0IG9yIGxpZ2h0bHkgYWRqdXN0ZWQgc2V0dGluZ3MgYWN0dWFsbHkgcGVyZm9ybSBiZXR0ZXIgdGhhbiB0aG9zZSB3aG8gdHJ5IHRvIG1pY3JvbWFuYWdlIGV2ZXJ5IGRldGFpbC5kcm9wQ2FwcGxhY2Vob2xkZXJpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudFRoaW5rIG9mIGN1c3RvbWl6YXRpb24gaGVyZSBsaWtlIHR1bmluZyBhIG11c2ljYWwgaW5zdHJ1bWVudC4gSW4gdGhlIHJpZ2h0IGhhbmRzLCBpdCBwcm9kdWNlcyBzb21ldGhpbmcgaW1wcmVzc2l2ZS4gSW4gdGhlIHdyb25nIGhhbmRzLCBpdCBjYW4gc291bmQgY29tcGxldGVseSBvZmYuIFRoZSBwb3RlbnRpYWwgaXMgdGhlcmVidXQgaXQgcmVxdWlyZXMgc29tZSBrbm93bGVkZ2UgYW5kIHJlc3RyYWludCB0byBmdWxseSByZWFsaXplIGl0LmRyb3BDYXBwbGFjZWhvbGRlcmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50PHN0cm9uZz5SZWFsLVdvcmxkIFBlcmZvcm1hbmNlIFRlc3Rpbmc8L3N0cm9uZz5sZXZlbGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50PHN0cm9uZz5DYXNoIEdhbWVzIFBlcmZvcm1hbmNlPC9zdHJvbmc+bGV2ZWxpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudE5vdyB3ZSBnZXQgdG8gdGhlIHBhcnQgdGhhdCByZWFsbHkgbWF0dGVyczogaG93IHRoZSA8c3Ryb25nPjNVcEdhbWluZyBQb2tlciBCb3Q8L3N0cm9uZz4gcGVyZm9ybXMgd2hlbiByZWFsIG1vbmV5IGlzIG9uIHRoZSBsaW5lLiBGZWF0dXJlcyBhbmQgZGVzaWduIGFyZSBvbmUgdGhpbmcsIGJ1dCBwZXJmb3JtYW5jZSBpbiBsaXZlIGNhc2ggZ2FtZXMgaXMgd2hlcmUgY2xhaW1zIGVpdGhlciBob2xkIHVwb3IgZmFsbCBhcGFydC5kcm9wQ2FwcGxhY2Vob2xkZXJpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudEluIGxvd2VyLXN0YWtlcyBjYXNoIGdhbWVzLCB0aGUgYm90IHBlcmZvcm1zIHN1cnByaXNpbmdseSB3ZWxsLiBUaGVzZSBlbnZpcm9ubWVudHMgdGVuZCB0byBpbmNsdWRlIG1vcmUgY2FzdWFsIHBsYXllcnMgd2hvIG1ha2UgZnJlcXVlbnQgbWlzdGFrZXPigJRvdmVydmFsdWluZyB3ZWFrIGhhbmRzLCBjYWxsaW5nIHRvbyBvZnRlbiwgb3IgcGxheWluZyB0b28gcGFzc2l2ZWx5LiBUaGUgYm90IGNhcGl0YWxpemVzIG9uIHRoZXNlIHRlbmRlbmNpZXMgZWZmZWN0aXZlbHksIHVzaW5nIGEgbWl4IG9mIHZhbHVlIGJldHRpbmcgYW5kIHNlbGVjdGl2ZSBhZ2dyZXNzaW9uIHRvIGdyaW5kIG91dCBjb25zaXN0ZW50IHByb2ZpdHMuZHJvcENhcHBsYWNlaG9sZGVyaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnREdXJpbmcgZXh0ZW5kZWQgdGVzdGluZyBzZXNzaW9ucywgb25lIG5vdGljZWFibGUgc3RyZW5ndGggd2FzIGl0cyA8c3Ryb25nPmRpc2NpcGxpbmU8L3N0cm9uZz4uIEl0IGRvZXNu4oCZdCBjaGFzZSBsb3NzZXMgb3IgZGV2aWF0ZSBmcm9tIGl0cyBzdHJhdGVneSBhZnRlciBhIGJhZCBiZWF0LiBUaGF0IGFsb25lIGdpdmVzIGl0IGFuIGVkZ2Ugb3ZlciBtYW55IGh1bWFuIHBsYXllcnMuIE92ZXIgaHVuZHJlZHMgb3IgZXZlbiB0aG91c2FuZHMgb2YgaGFuZHMsIHRoaXMgY29uc2lzdGVuY3kgdHJhbnNsYXRlcyBpbnRvIHN0ZWFkeSwgaWYgbm90IHNwZWN0YWN1bGFyLCBnYWlucy5kcm9wQ2FwcGxhY2Vob2xkZXJpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudEhvd2V2ZXIsIHRoZSBwaWN0dXJlIGNoYW5nZXMgc2xpZ2h0bHkgYXMgeW91IG1vdmUgdXAgaW4gc3Rha2VzLiBBdCBtaWQtbGV2ZWwgdGFibGVzLCB3aGVyZSBwbGF5ZXJzIGFyZSBtb3JlIGV4cGVyaWVuY2VkIGFuZCBzdHJhdGVnaWVzIGFyZSBiZXR0ZXIgYmFsYW5jZWQsIHRoZSBib3TigJlzIGVkZ2UgYmVjb21lcyBsZXNzIHByb25vdW5jZWQuIEl0IHN0aWxsIGhvbGRzIGl0cyBvd24sIGJ1dCB0aGUgd2luIHJhdGUgZHJvcHMsIGFuZCB2YXJpYW5jZSBiZWNvbWVzIG1vcmUgbm90aWNlYWJsZS4gSW4gdGhlc2UgZ2FtZXMsIHNtYWxsIG1pc3Rha2VzIG9yIHByZWRpY3RhYmxlIHBhdHRlcm5zIGNhbiBiZSBleHBsb2l0ZWQgbW9yZSBlYXNpbHkuZHJvcENhcHBsYWNlaG9sZGVyaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRBbm90aGVyIGZhY3RvciBpcyB0YWJsZSBzZWxlY3Rpb24uIFRoZSBib3QgZG9lc27igJl0IGluaGVyZW50bHkgY2hvb3NlIHRoZSBiZXN0IHRhYmxlc2l0IHBsYXlzIHdoZXJlIHlvdSBwdXQgaXQuIFRoaXMgbWVhbnMgcmVzdWx0cyBjYW4gdmFyeSBzaWduaWZpY2FudGx5IGRlcGVuZGluZyBvbiBnYW1lIHF1YWxpdHkuIEluIHNvZnRlciBnYW1lcywgaXQgY2FuIGZlZWwgYWxtb3N0IGVmZm9ydGxlc3MuIEluIHRvdWdoZXIgZW52aXJvbm1lbnRzLCBpdCBiZWNvbWVzIG1vcmUgb2YgYSBicmVhay1ldmVuIGdyaW5kZXIuZHJvcENhcHBsYWNlaG9sZGVyaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRNdWx0aS10YWJsaW5nIGlzIHdoZXJlIHRoZSBib3QgcmVhbGx5IHNoaW5lcy4gV2hpbGUgYSBodW1hbiBtaWdodCBzdHJ1Z2dsZSB0byBtYWludGFpbiBmb2N1cyBhY3Jvc3Mgc2V2ZXJhbCB0YWJsZXMsIHRoZSBib3QgaGFuZGxlcyBpdCBzZWFtbGVzc2x5LiBUaGlzIGluY3JlYXNlcyBvdmVyYWxsIHZvbHVtZSwgd2hpY2ggY2FuIGNvbXBlbnNhdGUgZm9yIGxvd2VyIHdpbiByYXRlcyBwZXIgdGFibGUuIEl04oCZcyBhIGNsYXNzaWMgcXVhbnRpdHktb3Zlci1xdWFsaXR5IGFwcHJvYWNoLCBhbmQgaXQgd29ya3N1cCB0byBhIHBvaW50LmRyb3BDYXBwbGFjZWhvbGRlcmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50PHN0cm9uZz5Ub3VybmFtZW50IFJlc3VsdHM8L3N0cm9uZz5sZXZlbGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50VG91cm5hbWVudHMgYXJlIGEgY29tcGxldGVseSBkaWZmZXJlbnQgYmVhc3QsIGFuZCB0aGUgPHN0cm9uZz4zVXBHYW1pbmcgUG9rZXIgQm90PC9zdHJvbmc+IGFwcHJvYWNoZXMgdGhlbSB3aXRoIG1peGVkIHJlc3VsdHMuIFVubGlrZSBjYXNoIGdhbWVzLCB3aGVyZSBzdGFja3MgYXJlIGRlZXAgYW5kIGRlY2lzaW9ucyBhcmUgcmVsYXRpdmVseSBjb25zaXN0ZW50LCB0b3VybmFtZW50cyBpbnZvbHZlIGNoYW5naW5nIGR5bmFtaWNz4oCUYmxpbmRzIGluY3JlYXNlLCBzdGFjayBzaXplcyBzaHJpbmssIGFuZCBwcmVzc3VyZSBpbnRlbnNpZmllcyBhcyBwbGF5ZXJzIGdldCBjbG9zZXIgdG8gcGF5b3V0cy5kcm9wQ2FwcGxhY2Vob2xkZXJpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudEluIGVhcmx5IHN0YWdlcywgdGhlIGJvdCBwZXJmb3JtcyBzb2xpZGx5LiBXaXRoIGRlZXBlciBzdGFja3MgYW5kIGxlc3MgcHJlc3N1cmUsIGl0IGNhbiBhcHBseSBzdGFuZGFyZCBzdHJhdGVnaWVzIGVmZmVjdGl2ZWx5LCBidWlsZGluZyBjaGlwcyB3aXRob3V0IHRha2luZyB1bm5lY2Vzc2FyeSByaXNrcy4gSXQgcGxheXMgdGlnaHQgYnV0IG9wcG9ydHVuaXN0aWMsIHdoaWNoIGlzIGdlbmVyYWxseSBhIHNvdW5kIGFwcHJvYWNoLmRyb3BDYXBwbGFjZWhvbGRlcmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50VGhlIG1pZGRsZSBzdGFnZXMgYXJlIHdoZXJlIHRoaW5ncyBnZXQgbW9yZSBpbnRlcmVzdGluZy4gQXMgYmxpbmRzIHJpc2UgYW5kIHN0YWNrIHNpemVzIHZhcnksIHRoZSBib3QgYWRqdXN0cyBpdHMgYWdncmVzc2lvbiBsZXZlbHMsIGJ1dCBub3QgYWx3YXlzIHBlcmZlY3RseS4gSHVtYW4gcGxheWVycyBvZnRlbiBzaGlmdCBnZWFycyBtb3JlIGNyZWF0aXZlbHkgaW4gdGhlc2UgcGhhc2VzLCBleHBsb2l0aW5nIHNwZWNpZmljIG9wcG9uZW50cyBvciB0YWJsZSBkeW5hbWljcy4gVGhlIGJvdOKAmXMgYWRqdXN0bWVudHMgZmVlbCBtb3JlIHN5c3RlbWF0aWMsIHdoaWNoIGNhbiBsaW1pdCBpdHMgdXBzaWRlLmRyb3BDYXBwbGFjZWhvbGRlcmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50TGF0ZS1zdGFnZSBwbGF54oCUZXNwZWNpYWxseSBuZWFyIHRoZSBidWJibGUgb3IgZmluYWwgdGFibGVpcyB3aGVyZSB0aGUgbGltaXRhdGlvbnMgYmVjb21lIG1vcmUgYXBwYXJlbnQuIFRoZXNlIHNpdHVhdGlvbnMgcmVxdWlyZSBhIGRlZXAgdW5kZXJzdGFuZGluZyBvZiA8c3Ryb25nPklDTSAoSW5kZXBlbmRlbnQgQ2hpcCBNb2RlbCk8L3N0cm9uZz4gYW5kIHBzeWNob2xvZ2ljYWwgcHJlc3N1cmUuIFdoaWxlIHRoZSBib3QgaW5jb3Jwb3JhdGVzIHNvbWUgSUNNIGxvZ2ljLCBpdCBkb2VzbuKAmXQgYWx3YXlzIGNhcHR1cmUgdGhlIG51YW5jZSBvZiBodW1hbiBiZWhhdmlvciBpbiBoaWdoLXN0YWtlcyBtb21lbnRzLmRyb3BDYXBwbGFjZWhvbGRlcmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50VGhhdCBkb2VzbuKAmXQgbWVhbiBpdCBmYWlscyBvdXRyaWdodC4gSXQgY2FuIHN0aWxsIGNhc2ggaW4gdG91cm5hbWVudHMgYW5kIG9jY2FzaW9uYWxseSBtYWtlIGRlZXAgcnVucy4gQnV0IGNvbXBhcmVkIHRvIGl0cyBjYXNoIGdhbWUgcGVyZm9ybWFuY2UsIHJlc3VsdHMgYXJlIGxlc3MgY29uc2lzdGVudCBhbmQgbW9yZSB2YXJpYW5jZS1kcml2ZW4uZHJvcENhcHBsYWNlaG9sZGVyaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRJZiB5b3XigJlyZSBleHBlY3RpbmcgaXQgdG8gZG9taW5hdGUgdG91cm5hbWVudHMsIHlvdSBtaWdodCBiZSBkaXNhcHBvaW50ZWQuIElmIHlvdSBzZWUgaXQgYXMgYSB0b29sIGZvciBvY2Nhc2lvbmFsIHBhcnRpY2lwYXRpb24gYW5kIHN1cHBsZW1lbnRhcnkgaW5jb21lLCBpdCBtYWtlcyBtb3JlIHNlbnNlLiBUaGUgcmVhbGl0eSBpcyB0aGF0IHRvdXJuYW1lbnQgcG9rZXIgcmV3YXJkcyBhZGFwdGFiaWxpdHkgYW5kIGNyZWF0aXZpdHnigJRhcmVhcyB3aGVyZSBldmVuIGFkdmFuY2VkIGJvdHMgc3RpbGwgaGF2ZSByb29tIHRvIGltcHJvdmUuZHJvcENhcHBsYWNlaG9sZGVyaW5uZXJCbG9ja3M8IS0tIHdwOmhlYWRpbmcgLS0+CjxoMiBjbGFzcz0id3AtYmxvY2staGVhZGluZyI+PHN0cm9uZz5Vc2VyIEludGVyZmFjZSBhbmQgRWFzZSBvZiBVc2U8L3N0cm9uZz48L2gyPgo8IS0tIC93cDpoZWFkaW5nIC0tPgoKPCEtLSB3cDpoZWFkaW5nIHsibGV2ZWwiOjN9IC0tPgo8aDMgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPjxzdHJvbmc+RGFzaGJvYXJkIGFuZCBDb250cm9sczwvc3Ryb25nPjwvaDM+CjwhLS0gL3dwOmhlYWRpbmcgLS0+Cgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+VGhlIG1haW4gZGFzaGJvYXJkIGlzIGRlc2lnbmVkIHRvIGdpdmUgeW91IGEgY2VudHJhbGl6ZWQgdmlldyBvZiBldmVyeXRoaW5nIGhhcHBlbmluZyBpbiByZWFsIHRpbWUuIFlvdSBjYW4gc2VlIGFjdGl2ZSB0YWJsZXMsIGN1cnJlbnQgaGFuZHMsIHdpbi9sb3NzIG1ldHJpY3MsIGFuZCBkZWNpc2lvbiBsb2dzIGFsbCBpbiBvbmUgcGxhY2UuIEZvciBzb21lb25lIHJ1bm5pbmcgbXVsdGlwbGUgdGFibGVzLCB0aGlzIGtpbmQgb2YgdmlzaWJpbGl0eSBpcyBlc3NlbnRpYWwuIEl0IGFsbG93cyB5b3UgdG8gbW9uaXRvciBwZXJmb3JtYW5jZSB3aXRob3V0IGNvbnN0YW50bHkgc3dpdGNoaW5nIGJldHdlZW4gd2luZG93cywgd2hpY2ggY2FuIHF1aWNrbHkgYmVjb21lIG92ZXJ3aGVsbWluZy48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5Db250cm9scyBhcmUgZ2VuZXJhbGx5IGludHVpdGl2ZS4gWW91IGNhbiBzdGFydCBvciBzdG9wIHRoZSBib3QsIGFkanVzdCB0YWJsZSBsaW1pdHMsIGFuZCBzd2l0Y2ggYmV0d2VlbiBzdHJhdGVneSBwcm9maWxlcyB3aXRoIGp1c3QgYSBmZXcgY2xpY2tzLiBUaGVyZeKAmXMgYWxzbyBhIGxpdmUgZmVlZCBvZiB0aGUgYm904oCZcyBkZWNpc2lvbnMsIHdoaWNoIGlzIHN1cnByaXNpbmdseSB1c2VmdWwuIFdhdGNoaW5nIGhvdyBpdCByZWFjdHMgaW4gZGlmZmVyZW50IHNjZW5hcmlvcyBnaXZlcyB5b3UgaW5zaWdodCBpbnRvIGl0cyBsb2dpY+KAlGFsbW9zdCBsaWtlIHBlZWtpbmcgaW5zaWRlIHRoZSBtaW5kIG9mIGEgZGlzY2lwbGluZWQgcG9rZXIgcGxheWVyIHdobyBuZXZlciB0aWx0cy48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5Ib3dldmVyLCBpdOKAmXMgbm90IHBlcmZlY3RseSBiZWdpbm5lci1mcmllbmRseS4gU29tZSBvZiB0aGUgdGVybWlub2xvZ3kgYW5kIHNldHRpbmdzIGFzc3VtZSBhIGJhc2ljIHVuZGVyc3RhbmRpbmcgb2YgcG9rZXIgc3RyYXRlZ3kuIElmIHlvdeKAmXJlIG5ldyB0byBjb25jZXB0cyBsaWtlIGFnZ3Jlc3Npb24gZnJlcXVlbmN5IG9yIHBvc2l0aW9uYWwgcmFuZ2VzLCBwYXJ0cyBvZiB0aGUgaW50ZXJmYWNlIG1pZ2h0IGZlZWwgYSBiaXQgZGVuc2UuIEl0IGRvZXNu4oCZdCBob2xkIHlvdXIgaGFuZCwgYW5kIGluIHNvbWUgd2F5cywgdGhhdOKAmXMgaW50ZW50aW9uYWwuIFRoaXMgdG9vbCBpcyBjbGVhcmx5IGJ1aWx0IHdpdGggc2VtaS1zZXJpb3VzIHVzZXJzIGluIG1pbmQgcmF0aGVyIHRoYW4gY29tcGxldGUgbm92aWNlcy48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5Bbm90aGVyIGludGVyZXN0aW5nIGZlYXR1cmUgaXMgdGhlIDxzdHJvbmc+c2Vzc2lvbiBhbmFseXRpY3MgcGFuZWw8L3N0cm9uZz4sIHdoaWNoIHRyYWNrcyBwZXJmb3JtYW5jZSBvdmVyIHRpbWUuIFlvdSBjYW4gcmV2aWV3IGhhbmQgaGlzdG9yaWVzLCBpZGVudGlmeSB0cmVuZHMsIGFuZCBldmVuIHNwb3QgbGVha3MgaW4gaG93IHRoZSBib3QgaXMgY29uZmlndXJlZC4gSXTigJlzIG5vdCBhcyBhZHZhbmNlZCBhcyBkZWRpY2F0ZWQgcG9rZXIgdHJhY2tpbmcgc29mdHdhcmUsIGJ1dCBpdCBhZGRzIGEgbGF5ZXIgb2YgdHJhbnNwYXJlbmN5IHRoYXQgbWFueSBjb21wZXRpbmcgYm90cyBsYWNrLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6aGVhZGluZyB7ImxldmVsIjozfSAtLT4KPGgzIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIj48c3Ryb25nPkN1c3RvbWl6YXRpb24gT3B0aW9uczwvc3Ryb25nPjwvaDM+CjwhLS0gL3dwOmhlYWRpbmcgLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPlVzZXJzIGNhbiBhZGp1c3QgYSB3aWRlIHJhbmdlIG9mIHBhcmFtZXRlcnMsIGluY2x1ZGluZyA8c3Ryb25nPnByZS1mbG9wIHJhbmdlcywgcG9zdC1mbG9wIGFnZ3Jlc3Npb24sIGJsdWZmIGZyZXF1ZW5jeSwgYW5kIGJhbmtyb2xsIG1hbmFnZW1lbnQgcnVsZXM8L3N0cm9uZz4uIFdhbnQgdGhlIGJvdCB0byBwbGF5IHRpZ2h0IGFuZCBjb25zZXJ2YXRpdmUsIGZvbGRpbmcgbWFyZ2luYWwgaGFuZHMgYW5kIGF2b2lkaW5nIHJpc2t5IGJsdWZmcz8gWW91IGNhbiBkbyB0aGF0LiBQcmVmZXIgYSBsb29zZSwgaGlnaC12YXJpYW5jZSBzdHlsZSB0aGF0IHByZXNzdXJlcyBvcHBvbmVudHMgYW5kIGNoYXNlcyBiaWdnZXIgcG90cz8gVGhhdOKAmXMgYWxzbyBvbiB0aGUgdGFibGUuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+VGhlcmXigJlzIGFsc28gdGhlIGFiaWxpdHkgdG8gY3JlYXRlIG11bHRpcGxlIHByb2ZpbGVzIGFuZCBzd2l0Y2ggYmV0d2VlbiB0aGVtIGRlcGVuZGluZyBvbiB0aGUgZ2FtZSBlbnZpcm9ubWVudC4gRm9yIGV4YW1wbGUsIHlvdSBtaWdodCB1c2UgYSBtb3JlIGFnZ3Jlc3NpdmUgc2V0dXAgaW4gc29mdGVyIGdhbWVzIGFuZCBhIGJhbGFuY2VkIEdUTyBhcHByb2FjaCBpbiB0b3VnaGVyIG9uZXMuIFRoaXMgbGV2ZWwgb2YgY29udHJvbCBhbGxvd3MgZm9yIHN0cmF0ZWdpYyBmbGV4aWJpbGl0eSB0aGF0IG1hbnkgc2ltcGxlciBib3RzIHNpbXBseSBkb27igJl0IG9mZmVyLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPk9uZSBwYXJ0aWN1bGFybHkgdXNlZnVsIGZlYXR1cmUgaXMgPHN0cm9uZz5iZXQgc2l6aW5nIGN1c3RvbWl6YXRpb248L3N0cm9uZz4uIEluc3RlYWQgb2YgZml4ZWQgYmV0IHNpemVzLCB0aGUgYm90IGNhbiByYW5kb21pemUgd2l0aGluIGEgZGVmaW5lZCByYW5nZSwgbWFraW5nIGl0cyBiZWhhdmlvciBsZXNzIHByZWRpY3RhYmxlLiBUaGlzIG5vdCBvbmx5IGltcHJvdmVzIHBlcmZvcm1hbmNlIGJ1dCBhbHNvIGhlbHBzIHJlZHVjZSB0aGUgcmlzayBvZiBkZXRlY3Rpb24sIGFzIHJlcGV0aXRpdmUgcGF0dGVybnMgYXJlIGEgY29tbW9uIHJlZCBmbGFnIGZvciBwb2tlciBwbGF0Zm9ybXMuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+VGhhdCBzYWlkLCBtb3JlIG9wdGlvbnMgZG9u4oCZdCBhbHdheXMgbWVhbiBiZXR0ZXIgb3V0Y29tZXMuIFdpdGhvdXQgYSBzb2xpZCB1bmRlcnN0YW5kaW5nIG9mIHBva2VyIHN0cmF0ZWd5LCBpdOKAmXMgZWFzeSB0byBtaXNjb25maWd1cmUgdGhlIGJvdCBhbmQgdW5pbnRlbnRpb25hbGx5IHJlZHVjZSBpdHMgZWZmZWN0aXZlbmVzcy4gSW4gc29tZSBjYXNlcywgdXNlcnMgd2hvIHN0aWNrIHdpdGggZGVmYXVsdCBvciBsaWdodGx5IGFkanVzdGVkIHNldHRpbmdzIGFjdHVhbGx5IHBlcmZvcm0gYmV0dGVyIHRoYW4gdGhvc2Ugd2hvIHRyeSB0byBtaWNyb21hbmFnZSBldmVyeSBkZXRhaWwuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpoZWFkaW5nIC0tPgo8aDIgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPjxzdHJvbmc+UmVhbC1Xb3JsZCBQZXJmb3JtYW5jZSBUZXN0aW5nPC9zdHJvbmc+PC9oMj4KPCEtLSAvd3A6aGVhZGluZyAtLT4KCjwhLS0gd3A6aGVhZGluZyB7ImxldmVsIjozfSAtLT4KPGgzIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIj48c3Ryb25nPkNhc2ggR2FtZXMgUGVyZm9ybWFuY2U8L3N0cm9uZz48L2gzPgo8IS0tIC93cDpoZWFkaW5nIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+RHVyaW5nIGV4dGVuZGVkIHRlc3Rpbmcgc2Vzc2lvbnMsIG9uZSBub3RpY2VhYmxlIHN0cmVuZ3RoIHdhcyBpdHMgPHN0cm9uZz5kaXNjaXBsaW5lPC9zdHJvbmc+LiBJdCBkb2VzbuKAmXQgY2hhc2UgbG9zc2VzIG9yIGRldmlhdGUgZnJvbSBpdHMgc3RyYXRlZ3kgYWZ0ZXIgYSBiYWQgYmVhdC4gVGhhdCBhbG9uZSBnaXZlcyBpdCBhbiBlZGdlIG92ZXIgbWFueSBodW1hbiBwbGF5ZXJzLiBPdmVyIGh1bmRyZWRzIG9yIGV2ZW4gdGhvdXNhbmRzIG9mIGhhbmRzLCB0aGlzIGNvbnNpc3RlbmN5IHRyYW5zbGF0ZXMgaW50byBzdGVhZHksIGlmIG5vdCBzcGVjdGFjdWxhciwgZ2FpbnMuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+SG93ZXZlciwgdGhlIHBpY3R1cmUgY2hhbmdlcyBzbGlnaHRseSBhcyB5b3UgbW92ZSB1cCBpbiBzdGFrZXMuIEF0IG1pZC1sZXZlbCB0YWJsZXMsIHdoZXJlIHBsYXllcnMgYXJlIG1vcmUgZXhwZXJpZW5jZWQgYW5kIHN0cmF0ZWdpZXMgYXJlIGJldHRlciBiYWxhbmNlZCwgdGhlIGJvdOKAmXMgZWRnZSBiZWNvbWVzIGxlc3MgcHJvbm91bmNlZC4gSXQgc3RpbGwgaG9sZHMgaXRzIG93biwgYnV0IHRoZSB3aW4gcmF0ZSBkcm9wcywgYW5kIHZhcmlhbmNlIGJlY29tZXMgbW9yZSBub3RpY2VhYmxlLiBJbiB0aGVzZSBnYW1lcywgc21hbGwgbWlzdGFrZXMgb3IgcHJlZGljdGFibGUgcGF0dGVybnMgY2FuIGJlIGV4cGxvaXRlZCBtb3JlIGVhc2lseS48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpoZWFkaW5nIHsibGV2ZWwiOjN9IC0tPgo8aDMgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPjxzdHJvbmc+VG91cm5hbWVudCBSZXN1bHRzPC9zdHJvbmc+PC9oMz4KPCEtLSAvd3A6aGVhZGluZyAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5Ub3VybmFtZW50cyBhcmUgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBiZWFzdCwgYW5kIHRoZSA8c3Ryb25nPjNVcEdhbWluZyBQb2tlciBCb3Q8L3N0cm9uZz4gYXBwcm9hY2hlcyB0aGVtIHdpdGggbWl4ZWQgcmVzdWx0cy4gVW5saWtlIGNhc2ggZ2FtZXMsIHdoZXJlIHN0YWNrcyBhcmUgZGVlcCBhbmQgZGVjaXNpb25zIGFyZSByZWxhdGl2ZWx5IGNvbnNpc3RlbnQsIHRvdXJuYW1lbnRzIGludm9sdmUgY2hhbmdpbmcgZHluYW1pY3PigJRibGluZHMgaW5jcmVhc2UsIHN0YWNrIHNpemVzIHNocmluaywgYW5kIHByZXNzdXJlIGludGVuc2lmaWVzIGFzIHBsYXllcnMgZ2V0IGNsb3NlciB0byBwYXlvdXRzLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPkluIGVhcmx5IHN0YWdlcywgdGhlIGJvdCBwZXJmb3JtcyBzb2xpZGx5LiBXaXRoIGRlZXBlciBzdGFja3MgYW5kIGxlc3MgcHJlc3N1cmUsIGl0IGNhbiBhcHBseSBzdGFuZGFyZCBzdHJhdGVnaWVzIGVmZmVjdGl2ZWx5LCBidWlsZGluZyBjaGlwcyB3aXRob3V0IHRha2luZyB1bm5lY2Vzc2FyeSByaXNrcy4gSXQgcGxheXMgdGlnaHQgYnV0IG9wcG9ydHVuaXN0aWMsIHdoaWNoIGlzIGdlbmVyYWxseSBhIHNvdW5kIGFwcHJvYWNoLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPlRoZSBtaWRkbGUgc3RhZ2VzIGFyZSB3aGVyZSB0aGluZ3MgZ2V0IG1vcmUgaW50ZXJlc3RpbmcuIEFzIGJsaW5kcyByaXNlIGFuZCBzdGFjayBzaXplcyB2YXJ5LCB0aGUgYm90IGFkanVzdHMgaXRzIGFnZ3Jlc3Npb24gbGV2ZWxzLCBidXQgbm90IGFsd2F5cyBwZXJmZWN0bHkuIEh1bWFuIHBsYXllcnMgb2Z0ZW4gc2hpZnQgZ2VhcnMgbW9yZSBjcmVhdGl2ZWx5IGluIHRoZXNlIHBoYXNlcywgZXhwbG9pdGluZyBzcGVjaWZpYyBvcHBvbmVudHMgb3IgdGFibGUgZHluYW1pY3MuIFRoZSBib3TigJlzIGFkanVzdG1lbnRzIGZlZWwgbW9yZSBzeXN0ZW1hdGljLCB3aGljaCBjYW4gbGltaXQgaXRzIHVwc2lkZS48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+VGhhdCBkb2VzbuKAmXQgbWVhbiBpdCBmYWlscyBvdXRyaWdodC4gSXQgY2FuIHN0aWxsIGNhc2ggaW4gdG91cm5hbWVudHMgYW5kIG9jY2FzaW9uYWxseSBtYWtlIGRlZXAgcnVucy4gQnV0IGNvbXBhcmVkIHRvIGl0cyBjYXNoIGdhbWUgcGVyZm9ybWFuY2UsIHJlc3VsdHMgYXJlIGxlc3MgY29uc2lzdGVudCBhbmQgbW9yZSB2YXJpYW5jZS1kcml2ZW4uPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50ZHJvcENhcHBsYWNlaG9sZGVyaW5uZXJCbG9ja3M8c3Ryb25nPlByb2ZpdGFiaWxpdHkgYW5kIFJPSSBBbmFseXNpczwvc3Ryb25nPmxldmVsY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50PHN0cm9uZz5TaG9ydC1UZXJtIEdhaW5zPC9zdHJvbmc+bGV2ZWxpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudFdoZW4gZXZhbHVhdGluZyB0aGUgPHN0cm9uZz4zVXBHYW1pbmcgUG9rZXIgQm90PC9zdHJvbmc+LCBzaG9ydC10ZXJtIHByb2ZpdGFiaWxpdHkgaXMgdXN1YWxseSB3aGVyZSB1c2VycyBmaXJzdCBmb3JtIHRoZWlyIG9waW5pb27igJRhbmQgb2Z0ZW4gd2hlcmUgZXhwZWN0YXRpb25zIGdldCBkaXN0b3J0ZWQuIEluIHRoZSBmaXJzdCBmZXcgc2Vzc2lvbnMsIHJlc3VsdHMgY2FuIGxvb2sgdW51c3VhbGx5IHByb21pc2luZywgZXNwZWNpYWxseSBhdCBtaWNybyBhbmQgbG93IHN0YWtlcy4gVGhpcyBpc27igJl0IG1hZ2ljOyBpdOKAmXMgbW9zdGx5IGEgcmVmbGVjdGlvbiBvZiBwbGF5ZXIgcG9vbCBxdWFsaXR5LiBNYW55IGxvdy1zdGFrZXMgZ2FtZXMgc3RpbGwgaW5jbHVkZSBhIGxhcmdlIHBlcmNlbnRhZ2Ugb2YgcmVjcmVhdGlvbmFsIHBsYXllcnMgd2hvIG1ha2UgZnVuZGFtZW50YWwgbWlzdGFrZXMsIGFuZCBhIHdlbGwtY29uZmlndXJlZCBib3QgY2FuIGV4cGxvaXQgdGhhdCBlZmZpY2llbnRseS5kcm9wQ2FwcGxhY2Vob2xkZXJpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudEluIHRoZXNlIGVhcmx5IHN0YWdlcywgdGhlIGJvdCB0ZW5kcyB0byBnZW5lcmF0ZSBhIDxzdHJvbmc+c3RlYWR5IGJ1dCBtb2Rlc3Qgd2luIHJhdGU8L3N0cm9uZz4uIFRoaW5rIG9mIGl0IGxlc3MgbGlrZSBhIGxvdHRlcnkgdGlja2V0IGFuZCBtb3JlIGxpa2UgYSBzbG93LCBtZWNoYW5pY2FsIGdyaW5kZXIuIFdpbnMgYWNjdW11bGF0ZSB0aHJvdWdoIGNvbnNpc3RlbnQgdmFsdWUgYmV0dGluZywgZGlzY2lwbGluZWQgZm9sZGluZywgYW5kIGNhcGl0YWxpemluZyBvbiBvcHBvbmVudHMgd2hvIG92ZXJwbGF5IHdlYWsgaGFuZHMuIEJlY2F1c2UgdGhlIGJvdCBuZXZlciB0aWx0cywgaXQgYXZvaWRzIHRoZSBjb21tb24gZG93bndhcmQgc3BpcmFscyB0aGF0IGh1bWFuIHBsYXllcnMgb2Z0ZW4gZXhwZXJpZW5jZSBhZnRlciBhIGJhZCBiZWF0LmRyb3BDYXBwbGFjZWhvbGRlcmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50SG93ZXZlciwgc2hvcnQtdGVybSByZXN1bHRzIGNhbiBiZSBtaXNsZWFkaW5nLiBWYXJpYW5jZSBwbGF5cyBhIGh1Z2Ugcm9sZSBpbiBwb2tlciwgYW5kIGV2ZW4gYSB3ZWxsLXBlcmZvcm1pbmcgc3lzdGVtIGNhbiBzaG93IHN3aW5ncyB0aGF0IGRvbuKAmXQgcmVmbGVjdCBpdHMgdHJ1ZSBzdHJlbmd0aC4gQSBmZXcgbHVja3kgc2Vzc2lvbnMgY2FuIG1ha2UgcGVyZm9ybWFuY2UgbG9vayBpbmZsYXRlZCwgd2hpbGUgYSBmZXcgYmFkIHJ1bnMgY2FuIG1ha2UgaXQgc2VlbSB1bmRlcndoZWxtaW5nLiBUaGlzIGlzIGVzcGVjaWFsbHkgdHJ1ZSBpbiB0b3VybmFtZW50cywgd2hlcmUgcGF5b3V0cyBhcmUgaGVhdmlseSBza2V3ZWQgdG93YXJkIHRvcCBmaW5pc2hlcnMuZHJvcENhcHBsYWNlaG9sZGVyaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRBbm90aGVyIGZhY3RvciBpcyA8c3Ryb25nPm11bHRpLXRhYmxpbmcgZWZmaWNpZW5jeTwvc3Ryb25nPi4gSW4gdGhlIHNob3J0IHRlcm0sIHVzZXJzIG9mdGVuIG5vdGljZSB0aGF0IHJ1bm5pbmcgbXVsdGlwbGUgdGFibGVzIHNpZ25pZmljYW50bHkgYm9vc3RzIGhvdXJseSBvdXRwdXQuIEV2ZW4gaWYgdGhlIHdpbiByYXRlIHBlciB0YWJsZSBpcyBzbWFsbCwgdm9sdW1lIGNvbXBlbnNhdGVzIGZvciBpdC4gVGhpcyBjcmVhdGVzIHRoZSBpbGx1c2lvbiBvZiBzdHJvbmcgcHJvZml0YWJpbGl0eSBlYXJseSBvbiwgcGFydGljdWxhcmx5IHdoZW4gZXZlcnl0aGluZyBpcyBydW5uaW5nIHNtb290aGx5IGFuZCB0YWJsZXMgYXJlIHNvZnQuZHJvcENhcHBsYWNlaG9sZGVyaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRTdGlsbCwgc2hvcnQtdGVybSBnYWlucyBzaG91bGQgYmUgaW50ZXJwcmV0ZWQgY2F1dGlvdXNseS4gVGhlIGJvdCBwZXJmb3JtcyBiZXN0IHdoZW4gY29uZGl0aW9ucyBhcmUgZmF2b3JhYmxlIGFuZCBvcHBvbmVudHMgYXJlIHByZWRpY3RhYmxlLiBPbmNlIHRob3NlIGNvbmRpdGlvbnMgc2hpZnQsIHRoZSBudW1iZXJzIHRlbmQgdG8gbm9ybWFsaXplLiBJbiBvdGhlciB3b3JkcywgZWFybHkgcHJvZml0cyBhcmUgcmVhbGJ1dCB0aGV54oCZcmUgbm90IGFsd2F5cyByZXByZXNlbnRhdGl2ZSBvZiBsb25nLXRlcm0gc3VzdGFpbmFiaWxpdHkuZHJvcENhcHBsYWNlaG9sZGVyaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnQ8c3Ryb25nPkxvbmctVGVybSBTdXN0YWluYWJpbGl0eTwvc3Ryb25nPmxldmVsaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRMb25nLXRlcm0gcGVyZm9ybWFuY2UgaXMgd2hlcmUgdGhlIDxzdHJvbmc+M1VwR2FtaW5nIFBva2VyIEJvdDwvc3Ryb25nPiBpcyB0cnVseSB0ZXN0ZWRhbmQgd2hlcmUgZXhwZWN0YXRpb25zIG5lZWQgdG8gYmUgbW9yZSBncm91bmRlZC4gT3ZlciBleHRlbmRlZCBwZXJpb2RzLCBzZXZlcmFsIHN0cnVjdHVyYWwgZmFjdG9ycyBiZWdpbiB0byBpbmZsdWVuY2UgcmVzdWx0czogaW5jcmVhc2luZyBvcHBvbmVudCBza2lsbCBsZXZlbHMsIGNoYW5naW5nIHRhYmxlIGVjb3N5c3RlbXMsIGFuZCBzdHJpY3RlciBwbGF0Zm9ybSBzZWN1cml0eSBtZWFzdXJlcy5kcm9wQ2FwcGxhY2Vob2xkZXJpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudEZyb20gYSBwdXJlIGdhbWVwbGF5IHBlcnNwZWN0aXZlLCB0aGUgYm90IG1haW50YWlucyBhIDxzdHJvbmc+c29saWQgYnV0IG5vdCBlbGl0ZSBlZGdlPC9zdHJvbmc+IGluIG1vc3QgbG93IHRvIG1pZC1zdGFrZXMgY2FzaCBnYW1lcy4gSXRzIEdUTy1iYXNlZCBmb3VuZGF0aW9uIGVuc3VyZXMgaXQgZG9lc27igJl0IGRldmlhdGUgaW50byBmdW5kYW1lbnRhbGx5IHdlYWsgcGxheSwgd2hpY2ggaGVscHMgc3RhYmlsaXplIHJlc3VsdHMgb3ZlciB0aW1lLiBIb3dldmVyLCBwb2tlciBpcyBhbiBldm9sdmluZyBlbnZpcm9ubWVudC4gQXMgbW9yZSBwbGF5ZXJzIHN0dWR5IHN0cmF0ZWd5IGFuZCB1c2UgdHJhY2tpbmcgdG9vbHMsIHRoZSBhdmVyYWdlIHRhYmxlIGJlY29tZXMgdG91Z2hlciwgd2hpY2ggbmF0dXJhbGx5IHJlZHVjZXMgd2luIHJhdGVzLmRyb3BDYXBwbGFjZWhvbGRlcmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50T25lIG9mIHRoZSBrZXkgbG9uZy10ZXJtIGNoYWxsZW5nZXMgaXMgPHN0cm9uZz5kaW1pbmlzaGluZyBlZGdlIGluIGNvbXBldGl0aXZlIHBvb2xzPC9zdHJvbmc+LiBJbiBzb2Z0ZXIgZW52aXJvbm1lbnRzLCB0aGUgYm90IGNhbiBjb25zaXN0ZW50bHkgZXh0cmFjdCB2YWx1ZS4gSW4gdG91Z2hlciBnYW1lcywgb3Bwb25lbnRzIGJlZ2luIHRvIGlkZW50aWZ5IGFuZCBleHBsb2l0IHByZWRpY3RhYmxlIHBhdHRlcm5zLCBldmVuIGlmIHRob3NlIHBhdHRlcm5zIGFyZSBzdWJ0bGUuIFdoaWxlIDNVcEdhbWluZyBpbmNsdWRlcyBzb21lIGFkYXB0aXZlIGZlYXR1cmVzLCBpdCBkb2VzbuKAmXQgZnVsbHkgbWF0Y2ggdGhlIGNyZWF0aXZpdHkgb2Ygc3Ryb25nIGh1bWFuIHJlZ3VsYXJzIHdobyBhY3RpdmVseSBhZGp1c3QgdGhlaXIgc3RyYXRlZ2llcyBpbiByZWFsIHRpbWUuZHJvcENhcHBsYWNlaG9sZGVyaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRCYW5rcm9sbCBncm93dGggb3ZlciB0aGUgbG9uZyB0ZXJtIHRlbmRzIHRvIGJlIDxzdHJvbmc+c2xvdyBhbmQgbGluZWFyIHJhdGhlciB0aGFuIGV4cGxvc2l2ZTwvc3Ryb25nPi4gVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSBtYW55IHVzZXJzIGVudGVyIHRoZSBzcGFjZSBleHBlY3RpbmcgcmFwaWQgc2NhbGluZy4gSW4gcmVhbGl0eSwgcG9rZXJ3aGV0aGVyIHBsYXllZCBieSBodW1hbnMgb3IgYm90c+KAlHJhcmVseSBkZWxpdmVycyBjb25zaXN0ZW50IGhpZ2ggcmV0dXJucyB3aXRob3V0IHNpZ25pZmljYW50IHZhcmlhbmNlIGFuZCByaXNrLmRyb3BDYXBwbGFjZWhvbGRlcmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50VGhlcmXigJlzIGFsc28gdGhlIG9wZXJhdGlvbmFsIHNpZGUgb2Ygc3VzdGFpbmFiaWxpdHkuIFBva2VyIHBsYXRmb3JtcyBmcmVxdWVudGx5IHVwZGF0ZSBkZXRlY3Rpb24gc3lzdGVtcywgYW5kIHdoaWxlIHRoZSBib3QgaW5jbHVkZXMgYW50aS1wYXR0ZXJuIG1lY2hhbmlzbXMsIG5vIHN5c3RlbSBpcyBjb21wbGV0ZWx5IGZ1dHVyZS1wcm9vZi4gVXNlcnMgd2hvIG1haW50YWluIHN0YWJsZSByZXN1bHRzIG92ZXIgdGltZSB0eXBpY2FsbHkgY29tYmluZSBjYXJlZnVsIHVzYWdlIHBhdHRlcm5zIHdpdGggY29uc2VydmF0aXZlIHNldHRpbmdzIHJhdGhlciB0aGFuIHB1c2hpbmcgYWdncmVzc2l2ZSBjb25maWd1cmF0aW9ucy5kcm9wQ2FwcGxhY2Vob2xkZXJpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudEluIHByYWN0aWNhbCB0ZXJtcywgbG9uZy10ZXJtIFJPSSBpcyBiZXN0IGRlc2NyaWJlZCBhcyA8c3Ryb25nPm1vZGVyYXRlIGFuZCBkZXBlbmRlbnQgb24gY29uZGl0aW9uczwvc3Ryb25nPi4gSXQgY2FuIGJlIHByb2ZpdGFibGUsIGJ1dCBpdCBpcyBub3QgYSBndWFyYW50ZWVkIGluY29tZSBzeXN0ZW0uIFRyZWF0aW5nIGl0IGFzIGEgZGlzY2lwbGluZWQgZ3JpbmRpbmcgdG9vbCByYXRoZXIgdGhhbiBhIHNob3J0Y3V0IHRvIGhpZ2ggZWFybmluZ3MgbGVhZHMgdG8gbW9yZSByZWFsaXN0aWMgZXhwZWN0YXRpb25zIGFuZCBtb3JlIHN0YWJsZSBvdXRjb21lcy5kcm9wQ2FwcGxhY2Vob2xkZXJpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudDxzdHJvbmc+U2FmZXR5LCBEZXRlY3Rpb24sIGFuZCBSaXNrczwvc3Ryb25nPmxldmVsaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnQ8c3Ryb25nPkFudGktQmFuIE1lY2hhbmlzbXM8L3N0cm9uZz5sZXZlbGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50T25lIG9mIHRoZSBtb3N0IHNlbnNpdGl2ZSBhc3BlY3RzIG9mIHVzaW5nIGFueSBwb2tlciBib3QsIGluY2x1ZGluZyB0aGUgPHN0cm9uZz4zVXBHYW1pbmcgUG9rZXIgQm90PC9zdHJvbmc+LCBpcyBkZXRlY3Rpb24gcmlzay4gT25saW5lIHBva2VyIHBsYXRmb3JtcyBpbnZlc3QgaGVhdmlseSBpbiBzZWN1cml0eSBzeXN0ZW1zIGRlc2lnbmVkIHRvIGlkZW50aWZ5IGF1dG9tYXRlZCBiZWhhdmlvciwgYW5kIHRoaXMgY3JlYXRlcyBhbiBvbmdvaW5nIGNhdC1hbmQtbW91c2UgZHluYW1pYyBiZXR3ZWVuIGJvdCBkZXZlbG9wZXJzIGFuZCBzaXRlIGVuZm9yY2VtZW50IHRlYW1zLmRyb3BDYXBwbGFjZWhvbGRlcmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50VG8gYWRkcmVzcyB0aGlzLCAzVXBHYW1pbmcgaW5jb3Jwb3JhdGVzIGEgcmFuZ2Ugb2YgPHN0cm9uZz5hbnRpLWRldGVjdGlvbiB0ZWNobmlxdWVzPC9zdHJvbmc+LiBUaGVzZSBpbmNsdWRlIHJhbmRvbWl6ZWQgZGVjaXNpb24gdGltaW5nLCB2YXJpYWJsZSBiZXQgc2l6aW5nLCBhbmQgYmVoYXZpb3JhbCBzaW11bGF0aW9uIGRlc2lnbmVkIHRvIG1pbWljIGh1bWFuIGluY29uc2lzdGVuY2llcy4gRm9yIGV4YW1wbGUsIGluc3RlYWQgb2YgYWN0aW5nIGluc3RhbnRseSBldmVyeSB0aW1lLCB0aGUgYm90IGludHJvZHVjZXMgc2xpZ2h0IGRlbGF5cyB0aGF0IHJlc2VtYmxlIGh1bWFuIGhlc2l0YXRpb24uIFNpbWlsYXJseSwgaXQgYXZvaWRzIHJlcGV0aXRpdmUgYmV0dGluZyBwYXR0ZXJucyB0aGF0IGNvdWxkIGJlIGZsYWdnZWQgYXMgYWxnb3JpdGhtaWMgYmVoYXZpb3IuZHJvcENhcHBsYWNlaG9sZGVyaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRBbm90aGVyIGxheWVyIGludm9sdmVzIDxzdHJvbmc+c2Vzc2lvbiB2YXJpYWJpbGl0eTwvc3Ryb25nPiwgd2hlcmUgdGhlIGJvdCBzdWJ0bHkgY2hhbmdlcyBpdHMgcGxheSBzdHlsZSBvdmVyIHRpbWUuIFRoaXMgaGVscHMgcmVkdWNlIHByZWRpY3RhYmlsaXR5LCB3aGljaCBpcyBvbmUgb2YgdGhlIHByaW1hcnkgaW5kaWNhdG9ycyBzZWN1cml0eSBzeXN0ZW1zIGxvb2sgZm9yLiBDb21iaW5lZCB3aXRoIG11bHRpLXRhYmxlIGRpc3BlcnNpb24sIHRoZSBnb2FsIGlzIHRvIGJsZW5kIGludG8gdGhlIGdlbmVyYWwgcGxheWVyIHBvb2wgcmF0aGVyIHRoYW4gc3RhbmQgb3V0IGFzIGFuIG91dGxpZXIuZHJvcENhcHBsYWNlaG9sZGVyaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRTb21lIHNldHVwcyBhbHNvIHJlY29tbWVuZCB1c2luZyA8c3Ryb25nPlZQUyBlbnZpcm9ubWVudHMgb3IgaXNvbGF0ZWQgc3lzdGVtczwvc3Ryb25nPiB0byByZWR1Y2UgbG9jYWwgZm9vdHByaW50IGRldGVjdGlvbi4gV2hpbGUgdGhpcyBkb2VzbuKAmXQgZGlyZWN0bHkgcHJldmVudCBkZXRlY3Rpb24gYXQgdGhlIHBva2VyIHNpdGUgbGV2ZWwsIGl0IGNhbiBoZWxwIG1pbmltaXplIGV4dGVybmFsIHNpZ25hbHMgdGhhdCBtaWdodCBjb250cmlidXRlIHRvIGJlaGF2aW9yYWwgcHJvZmlsaW5nLmRyb3BDYXBwbGFjZWhvbGRlcmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50RGVzcGl0ZSB0aGVzZSBwcmVjYXV0aW9ucywgaXTigJlzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIGEgZnVuZGFtZW50YWwgcmVhbGl0eTogbm8gYW50aS1ib3Qgc3lzdGVtIGlzIHBlcmZlY3QuIERldGVjdGlvbiB0ZWNobm9sb2d5IGV2b2x2ZXMgY29udGludW91c2x5LCBhbmQgcGxhdGZvcm1zIHJlZ3VsYXJseSB1cGRhdGUgdGhlaXIgbW9uaXRvcmluZyBtb2RlbHMuIFdoYXQgd29ya3MgdG9kYXkgbWF5IGJlIGxlc3MgZWZmZWN0aXZlIHRvbW9ycm93LCBhbmQgbG9uZy10ZXJtIHJlbGlhbmNlIG9uIGFueSBib3QgY2FycmllcyBpbmhlcmVudCB1bmNlcnRhaW50eS5kcm9wQ2FwcGxhY2Vob2xkZXJpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudDxzdHJvbmc+Umlza3Mgb2YgVXNpbmcgUG9rZXIgQm90czwvc3Ryb25nPmxldmVsaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRCZXlvbmQgZGV0ZWN0aW9uLCB0aGVyZSBhcmUgYnJvYWRlciByaXNrcyBhc3NvY2lhdGVkIHdpdGggdXNpbmcgdG9vbHMgbGlrZSB0aGUgPHN0cm9uZz4zVXBHYW1pbmcgUG9rZXIgQm90PC9zdHJvbmc+LCBhbmQgdGhlc2Ugcmlza3MgZXh0ZW5kIGJleW9uZCBzaW1wbGUgYWNjb3VudCBiYW5zLiBUaGUgbW9zdCBvYnZpb3VzIGlzIDxzdHJvbmc+YWNjb3VudCBzdXNwZW5zaW9uIG9yIHBlcm1hbmVudCBiYW5zPC9zdHJvbmc+IGZyb20gcG9rZXIgcGxhdGZvcm1zLiBJZiBkZXRlY3RlZCwgdXNlcnMgbWF5IGxvc2UgYWNjZXNzIHRvIHRoZWlyIGFjY291bnRzLCBpbmNsdWRpbmcgYW55IHJlbWFpbmluZyBiYWxhbmNlLCBwZW5kaW5nIHdpdGhkcmF3YWxzLCBvciBsb3lhbHR5IHJld2FyZHMuZHJvcENhcHBsYWNlaG9sZGVyaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRUaGVyZSBpcyBhbHNvIGEgZmluYW5jaWFsIHJpc2sgdGllZCB0byA8c3Ryb25nPnZhcmlhbmNlIGFuZCBtaXNjb25maWd1cmF0aW9uPC9zdHJvbmc+LiBBIHBvb3JseSBjb25maWd1cmVkIGJvdCBjYW4gbG9zZSBtb25leSBxdWlja2x5LCBlc3BlY2lhbGx5IGluIHRvdWdoZXIgZ2FtZXMgb3IgZHVyaW5nIHZvbGF0aWxlIHN0cmV0Y2hlcy4gVW5saWtlIGh1bWFuIHBsYXllcnMsIHdobyBjYW4gYWRqdXN0IGludHVpdGl2ZWx5LCBhIG1pc2NvbmZpZ3VyZWQgYm90IHdpbGwgY29udGludWUgZXhlY3V0aW5nIGZsYXdlZCBzdHJhdGVnaWVzIHVudGlsIG1hbnVhbGx5IGNvcnJlY3RlZC5kcm9wQ2FwcGxhY2Vob2xkZXJpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudEFub3RoZXIgb2Z0ZW4gb3Zlcmxvb2tlZCByaXNrIGlzIDxzdHJvbmc+b3ZlcnJlbGlhbmNlIG9uIGF1dG9tYXRpb248L3N0cm9uZz4uIFVzZXJzIG1heSBiZWNvbWUgZGV0YWNoZWQgZnJvbSB0aGUgc3RyYXRlZ2ljIHNpZGUgb2YgcG9rZXIsIHJlbHlpbmcgZW50aXJlbHkgb24gdGhlIGJvdCB3aXRob3V0IHVuZGVyc3RhbmRpbmcgd2h5IGNlcnRhaW4gZGVjaXNpb25zIGFyZSBtYWRlLiBUaGlzIGNhbiBsaW1pdCBsb25nLXRlcm0gc2tpbGwgZGV2ZWxvcG1lbnQgYW5kIG1ha2UgaXQgZGlmZmljdWx0IHRvIGFkYXB0IGlmIHRoZSB0b29sIGJlY29tZXMgdW5hdmFpbGFibGUuZHJvcENhcHBsYWNlaG9sZGVyaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRMZWdhbCBhbmQgZXRoaWNhbCBjb25zaWRlcmF0aW9ucyBhbHNvIHZhcnkgYnkgcGxhdGZvcm0gYW5kIGp1cmlzZGljdGlvbi4gTWFueSBwb2tlciBzaXRlcyBleHBsaWNpdGx5IHByb2hpYml0IGJvdCB1c2FnZSBpbiB0aGVpciB0ZXJtcyBvZiBzZXJ2aWNlLCB3aGljaCBtZWFucyB1c2VycyBhcmUgb3BlcmF0aW5nIGluIGEgcmVzdHJpY3RlZCBvciBncmF5IGFyZWEuIFRoaXMgZG9lc27igJl0IG5lY2Vzc2FyaWx5IGludm9sdmUgbGVnYWwgY29uc2VxdWVuY2VzIGluIG1vc3QgcmVnaW9ucywgYnV0IGl0IGRvZXMgY3JlYXRlIGEgY29udHJhY3R1YWwgcmlzayB3aXRoIHRoZSBwbGF0Zm9ybSBpdHNlbGYuZHJvcENhcHBsYWNlaG9sZGVyaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRGaW5hbGx5LCB0aGVyZeKAmXMgdGhlIHBzeWNob2xvZ2ljYWwgcmlzayBvZiA8c3Ryb25nPmZhbHNlIGNvbmZpZGVuY2UgaW4gYXV0b21hdGlvbjwvc3Ryb25nPi4gRWFybHkgd2lucyBjYW4gY3JlYXRlIHRoZSBpbXByZXNzaW9uIG9mIGd1YXJhbnRlZWQgaW5jb21lLCB3aGljaCBtYXkgbGVhZCB0byB1bnJlYWxpc3RpYyBzY2FsaW5nIG9yIGluY3JlYXNlZCBmaW5hbmNpYWwgZXhwb3N1cmUuIFdoZW4gdmFyaWFuY2UgaW5ldml0YWJseSBoaXRzLCB0aGUgaW1wYWN0IGNhbiBmZWVsIGFicnVwdCBhbmQgZGlzY291cmFnaW5nLmRyb3BDYXBwbGFjZWhvbGRlcmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50SW4gc2hvcnQsIHdoaWxlIDNVcEdhbWluZyBpbmNsdWRlcyBwcm90ZWN0aXZlIG1lY2hhbmlzbXMsIGl0IGRvZXMgbm90IGVsaW1pbmF0ZSByaXNrLiBVc2VycyBvcGVyYXRlIGluIGFuIGVudmlyb25tZW50IHdoZXJlIHByb2ZpdGFiaWxpdHksIGRldGVjdGlvbiwgYW5kIHBsYXRmb3JtIHBvbGljaWVzIGNvbnN0YW50bHkgaW50ZXJhY3QsIGFuZCBub25lIG9mIHRoZXNlIHZhcmlhYmxlcyBhcmUgZnVsbHkgdW5kZXIgY29udHJvbC5kcm9wQ2FwcGxhY2Vob2xkZXJpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudGRyb3BDYXBwbGFjZWhvbGRlcmlubmVyQmxvY2tzPHN0cm9uZz5Db25jbHVzaW9uPC9zdHJvbmc+bGV2ZWxjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRUaGUgPHN0cm9uZz4zVXBHYW1pbmcgUG9rZXIgQm90ICgyMDI2KTwvc3Ryb25nPiBwcmVzZW50cyBpdHNlbGYgYXMgYSBjYXBhYmxlIEFJLWRyaXZlbiB0b29sIHRoYXQgY2FuIGF1dG9tYXRlIG9ubGluZSBwb2tlciB3aXRoIGEgc3VycHJpc2luZyBsZXZlbCBvZiBzdHJhdGVnaWMgZGVwdGguIEluIHJlYWwgY29uZGl0aW9ucywgaXQgcGVyZm9ybXMgc3Ryb25nZXN0IGluIDxzdHJvbmc+bG93IHRvIG1pZC1zdGFrZXMgY2FzaCBnYW1lczwvc3Ryb25nPiwgd2hlcmUgd2Vha2VyIG9wcG9uZW50cyBhbmQgcHJlZGljdGFibGUgcGF0dGVybnMgYWxsb3cgaXRzIEdUTy1iYXNlZCBlbmdpbmUgYW5kIGV4cGxvaXRhdGl2ZSBhZGp1c3RtZW50cyB0byBnZW5lcmF0ZSBzdGVhZHksIG1vZGVyYXRlIHJldHVybnMuIEl0cyBhYmlsaXR5IHRvIG11bHRpLXRhYmxlIGVmZmljaWVudGx5LCBzdGF5IGVtb3Rpb25hbGx5IG5ldXRyYWwsIGFuZCBleGVjdXRlIGNvbnNpc3RlbnQgZGVjaXNpb24tbWFraW5nIGdpdmVzIGl0IGEgY2xlYXIgYWR2YW50YWdlIG92ZXIgY2FzdWFsIGh1bWFuIHBsYXllcnMuZHJvcENhcHBsYWNlaG9sZGVyaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRIb3dldmVyLCBpdHMgcGVyZm9ybWFuY2UgaXMgbm90IHVuaXZlcnNhbGx5IGRvbWluYW50LiBJbiA8c3Ryb25nPmhpZ2hlci1zdGFrZXMgZ2FtZXMgYW5kIGFkdmFuY2VkIHRvdXJuYW1lbnQgc3RhZ2VzPC9zdHJvbmc+LCB0aGUgYm904oCZcyBsaW1pdGF0aW9ucyBiZWNvbWUgbW9yZSB2aXNpYmxlLiBTaXR1YXRpb25zIHJlcXVpcmluZyBkZWVwIElDTSBhd2FyZW5lc3MsIGNyZWF0aXZlIHByZXNzdXJlIGFkanVzdG1lbnRzLCBhbmQgaGlnaGx5IGFkYXB0aXZlIGh1bWFuIHJlYWRzIGV4cG9zZSB0aGUgZ2FwIGJldHdlZW4gYWxnb3JpdGhtaWMgY29uc2lzdGVuY3kgYW5kIGVsaXRlLWxldmVsIGh1bWFuIGludHVpdGlvbi4gQXMgYSByZXN1bHQsIHByb2ZpdGFiaWxpdHkgYmVjb21lcyBtb3JlIHZhcmlhbmNlLWRlcGVuZGVudCBhbmQgbGVzcyBwcmVkaWN0YWJsZSBhdCBoaWdoZXIgc2tpbGwgbGV2ZWxzLmRyb3BDYXBwbGFjZWhvbGRlcmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50RnJvbSBhIHVzYWJpbGl0eSBzdGFuZHBvaW50LCB0aGUgYm90IGlzIHJlbGF0aXZlbHkgd2VsbC1kZXNpZ25lZCwgb2ZmZXJpbmcgYSBjbGVhbiBpbnRlcmZhY2UgYW5kIGZsZXhpYmxlIGN1c3RvbWl6YXRpb24gb3B0aW9ucy4gQnV0IHRoYXQgZmxleGliaWxpdHkgYWxzbyBpbnRyb2R1Y2VzIGNvbXBsZXhpdHksIG1lYW5pbmcgdXNlcnMgbmVlZCBhdCBsZWFzdCBhIGJhc2ljIHVuZGVyc3RhbmRpbmcgb2YgcG9rZXIgc3RyYXRlZ3kgdG8gYXZvaWQgbWlzY29uZmlndXJhdGlvbi4gT24gdGhlIHRlY2huaWNhbCBzaWRlLCBpdCBydW5zIHNtb290aGx5IG9uIHN0YW5kYXJkIHN5c3RlbXMgYW5kIHN1cHBvcnRzIG11bHRpLXRhYmxpbmcgZWZmZWN0aXZlbHksIHdoaWNoIGlzIG9uZSBvZiBpdHMgbWFpbiB2YWx1ZSBkcml2ZXJzLmRyb3BDYXBwbGFjZWhvbGRlcmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50VGhlIGJpZ2dlc3QgdHJhZGUtb2ZmLCBob3dldmVyLCBsaWVzIGluIDxzdHJvbmc+cmlzayB2ZXJzdXMgcmV3YXJkPC9zdHJvbmc+LiBXaGlsZSBhbnRpLWRldGVjdGlvbiBtZWNoYW5pc21zIGV4aXN0LCBubyBzeXN0ZW0gY2FuIGZ1bGx5IGVsaW1pbmF0ZSB0aGUgcG9zc2liaWxpdHkgb2YgcGxhdGZvcm0gZGV0ZWN0aW9uIG9yIGFjY291bnQgcGVuYWx0aWVzLiBDb21iaW5lZCB3aXRoIG5hdHVyYWwgdmFyaWFuY2UgYW5kIGV2b2x2aW5nIHBva2VyIGVjb3N5c3RlbXMsIGxvbmctdGVybSByZXN1bHRzIGFyZSBiZXN0IGRlc2NyaWJlZCBhcyA8c3Ryb25nPnN0YWJsZSBidXQgbm90IGd1YXJhbnRlZWQ8L3N0cm9uZz4uZHJvcENhcHBsYWNlaG9sZGVyaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRJbiBwcmFjdGljYWwgdGVybXMsIHRoZSAzVXBHYW1pbmcgUG9rZXIgQm90IGlzIG5vdCBhIHNob3J0Y3V0IHRvIGVmZm9ydGxlc3MgcHJvZml0LCBidXQgcmF0aGVyIGEgc3RydWN0dXJlZCBhdXRvbWF0aW9uIHRvb2wgdGhhdCBjYW4gcHJvZHVjZSBjb25zaXN0ZW50IHJlc3VsdHMgdW5kZXIgdGhlIHJpZ2h0IGNvbmRpdGlvbnMuIEl0cyBlZmZlY3RpdmVuZXNzIGRlcGVuZHMgaGVhdmlseSBvbiBnYW1lIHNlbGVjdGlvbiwgY29uZmlndXJhdGlvbiBxdWFsaXR5LCBhbmQgcmlzayB0b2xlcmFuY2UuIFVzZXJzIGV4cGVjdGluZyBndWFyYW50ZWVkIGluY29tZSBhcmUgbGlrZWx5IHRvIGJlIGRpc2FwcG9pbnRlZCwgd2hpbGUgdGhvc2UgdHJlYXRpbmcgaXQgYXMgYSBjb250cm9sbGVkLCBhbmFseXRpY2FsIGdyaW5kaW5nIGFzc2lzdGFudCB3aWxsIGZpbmQgaXQgbW9yZSBhbGlnbmVkIHdpdGggcmVhbGl0eS5kcm9wQ2FwcGxhY2Vob2xkZXJpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzb3BhY2l0eXRhZ05hbWVpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudDxzdHJvbmc+RkFRczwvc3Ryb25nPmxldmVsaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnQ8c3Ryb25nPjEuIElzIDNVcEdhbWluZyBQb2tlciBCb3QgcHJvZml0YWJsZSBpbiAyMDI2Pzwvc3Ryb25nPmxldmVsaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRJdCBjYW4gYmUgcHJvZml0YWJsZSBpbiBsb3cgdG8gbWlkLXN0YWtlcyBjYXNoIGdhbWVzIHVuZGVyIGdvb2QgY29uZGl0aW9ucywgYnV0IGVhcm5pbmdzIGFyZSB1c3VhbGx5IG1vZGVyYXRlIGFuZCBkZXBlbmQgaGVhdmlseSBvbiBnYW1lIHNvZnRuZXNzLCBjb25maWd1cmF0aW9uLCBhbmQgdmFyaWFuY2UuZHJvcENhcHBsYWNlaG9sZGVyaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnQ8c3Ryb25nPjIuIENhbiB0aGUgYm90IGJlIGRldGVjdGVkIGJ5IHBva2VyIHBsYXRmb3Jtcz88L3N0cm9uZz5sZXZlbGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50WWVzLiBXaGlsZSBpdCBpbmNsdWRlcyBhbnRpLWRldGVjdGlvbiBmZWF0dXJlcyBsaWtlIHJhbmRvbWl6ZWQgdGltaW5nIGFuZCBiZWhhdmlvciBzaW11bGF0aW9uLCBubyBwb2tlciBib3QgaXMgY29tcGxldGVseSB1bmRldGVjdGFibGUgaW4gdGhlIGxvbmcgdGVybS5kcm9wQ2FwcGxhY2Vob2xkZXJpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudDxzdHJvbmc+My4gRG9lcyBpdCB3b3JrIGJldHRlciBpbiBjYXNoIGdhbWVzIG9yIHRvdXJuYW1lbnRzPzwvc3Ryb25nPmxldmVsaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRJdCBwZXJmb3JtcyBtb3JlIGNvbnNpc3RlbnRseSBpbiA8c3Ryb25nPmNhc2ggZ2FtZXM8L3N0cm9uZz4uIFRvdXJuYW1lbnQgcGxheSBpcyBtb3JlIHZvbGF0aWxlIGFuZCByZXF1aXJlcyBkZWVwZXIgYWRhcHRpdmUgZGVjaXNpb24tbWFraW5nLCB3aGVyZSBwZXJmb3JtYW5jZSBpcyBsZXNzIHN0YWJsZS5kcm9wQ2FwcGxhY2Vob2xkZXJpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudDxzdHJvbmc+NC4gRG8gSSBuZWVkIHBva2VyIGV4cGVyaWVuY2UgdG8gdXNlIGl0IGVmZmVjdGl2ZWx5Pzwvc3Ryb25nPmxldmVsaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRCYXNpYyBwb2tlciBrbm93bGVkZ2UgaXMgaGlnaGx5IHJlY29tbWVuZGVkLiBXaXRob3V0IHVuZGVyc3RhbmRpbmcgY29uY2VwdHMgbGlrZSBwb3NpdGlvbiwgcmFuZ2VzLCBhbmQgYWdncmVzc2lvbiwgaXTigJlzIGVhc3kgdG8gbWlzY29uZmlndXJlIHRoZSBib3QgYW5kIHJlZHVjZSBwZXJmb3JtYW5jZS5kcm9wQ2FwcGxhY2Vob2xkZXJpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudDxzdHJvbmc+NS4gSXMgdXNpbmcgYSBwb2tlciBib3QgbGVnYWw\/PC9zdHJvbmc+bGV2ZWxpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudEl0IGRlcGVuZHMgb24gdGhlIHBsYXRmb3JtLiBNb3N0IG9ubGluZSBwb2tlciBzaXRlcyBwcm9oaWJpdCBib3RzIGluIHRoZWlyIHRlcm1zIG9mIHNlcnZpY2UsIG1lYW5pbmcgdXNhZ2UgY2FuIHJlc3VsdCBpbiBhY2NvdW50IHN1c3BlbnNpb24gb3IgYmFucy5kcm9wQ2FwcGxhY2Vob2xkZXJpbm5lckJsb2NrcyAgICAgICA8cD5BdCBhIG1pbmltdW0sIHlvdeKAmXJlIGxvb2tpbmcgYXQgYSBtb2Rlcm4gb3BlcmF0aW5nIHN5c3RlbSB0eXBpY2FsbHkgPHN0cm9uZz5XaW5kb3dzIDEwIG9yIGxhdGVyPC9zdHJvbmc+IGFsb25nIHdpdGggYXQgbGVhc3QgPHN0cm9uZz44R0Igb2YgUkFNPC9zdHJvbmc+LiBXaGlsZSB0aGUgYm90IG1pZ2h0IHJ1biBvbiBsb3dlciBzcGVjcywgcGVyZm9ybWFuY2UgY2FuIGJlY29tZSBpbmNvbnNpc3RlbnQsIGVzcGVjaWFsbHkgd2hlbiBtdWx0aS10YWJsaW5nLiBBbmQgc2luY2Ugb25lIG9mIHRoZSBtYWluIGFkdmFudGFnZXMgb2YgdXNpbmcgYSBib3QgaXMgaGFuZGxpbmcgbXVsdGlwbGUgdGFibGVzIGF0IG9uY2UsIGN1dHRpbmcgY29ybmVycyBvbiBoYXJkd2FyZSBjYW4gdW5kZXJtaW5lIHRoZSBlbnRpcmUgZXhwZXJpZW5jZS48L3A+CjxwPlByb2Nlc3NpbmcgcG93ZXIgYWxzbyBtYXR0ZXJzIG1vcmUgdGhhbiB5b3UgbWlnaHQgZXhwZWN0LiBUaGUgQUkgZW5naW5lIHJ1bnMgY29udGludW91cyBjYWxjdWxhdGlvbnMgaW4gcmVhbCB0aW1lLCBzbyBhIDxzdHJvbmc+bXVsdGktY29yZSBDUFU8L3N0cm9uZz4gaXMgc3Ryb25nbHkgcmVjb21tZW5kZWQuIElmIHlvdeKAmXJlIHJ1bm5pbmcgZm91ciwgc2l4LCBvciBtb3JlIHRhYmxlcyBzaW11bHRhbmVvdXNseSwgdGhvc2UgY29tcHV0YXRpb25zIGFkZCB1cCBxdWlja2x5LiBMYWcgb3IgZGVsYXlzIGluIGRlY2lzaW9uLW1ha2luZyBhcmVu4oCZdCBqdXN0IGFubm95aW5nIHRoZXkgY2FuIGRpcmVjdGx5IGltcGFjdCBwcm9maXRhYmlsaXR5LjwvcD4KPHA+T3ZlcmFsbCwgdGhlIHNldHVwIHByb2Nlc3MgaXMgbWFuYWdlYWJsZSBidXQgbm90IGVudGlyZWx5IHBsdWctYW5kLXBsYXkuIFRoZXJl4oCZcyBhIGxlYXJuaW5nIGN1cnZlLCBlc3BlY2lhbGx5IGZvciBiZWdpbm5lcnMuIE9uY2UgZXZlcnl0aGluZyBpcyBjb25maWd1cmVkIGNvcnJlY3RseSwgdGhvdWdoLCB0aGUgZXhwZXJpZW5jZSBiZWNvbWVzIG11Y2ggc21vb3RoZXIgYW5kIHRoYXTigJlzIHdoZW4gdGhlIHJlYWwgZXZhbHVhdGlvbiBiZWdpbnMuPC9wPgo8cD5UaGUgZmlyc3QgdGhpbmcgeW91IG5vdGljZSBhZnRlciBsYXVuY2hpbmcgdGhlIDxzdHJvbmc+M1VwR2FtaW5nIFBva2VyIEJvdDwvc3Ryb25nPiBpc27igJl0IGl0cyBpbnRlbGxpZ2VuY2UgaXTigJlzIGl0cyBpbnRlcmZhY2UuIEFuZCBob25lc3RseSwgdGhhdCBtYXR0ZXJzIG1vcmUgdGhhbiBtb3N0IHBlb3BsZSBleHBlY3QuIEEgcG93ZXJmdWwgYm90IHdpdGggYSBjb25mdXNpbmcgZGFzaGJvYXJkIGlzIGxpa2UgYSBzcG9ydHMgY2FyIHdpdGggYSBicm9rZW4gc3RlZXJpbmcgd2hlZWwuIEZvcnR1bmF0ZWx5LCAzVXBHYW1pbmcgc3RyaWtlcyBhIGZhaXJseSByZWFzb25hYmxlIGJhbGFuY2UgYmV0d2VlbiBmdW5jdGlvbmFsaXR5IGFuZCB1c2FiaWxpdHksIHRob3VnaCBpdOKAmXMgbm90IHdpdGhvdXQgYSBmZXcgcXVpcmtzLjwvcD4KPHA+SW4gZXZlcnlkYXkgdXNlLCB0aGUgaW50ZXJmYWNlIGZlZWxzIHN0YWJsZSBhbmQgcmVzcG9uc2l2ZS4gQ3Jhc2hlcyBhcmUgcmFyZSwgYW5kIHVwZGF0ZXMgdGVuZCB0byBpbXByb3ZlIHVzYWJpbGl0eSBpbmNyZW1lbnRhbGx5LiBJdOKAmXMgbm90IGZsYXNoeSwgYnV0IGl0IGdldHMgdGhlIGpvYiBkb25lIGFuZCB3aGVuIHJlYWwgbW9uZXkgaXMgaW52b2x2ZWQsIHJlbGlhYmlsaXR5IGJlYXRzIGFlc3RoZXRpY3MgZXZlcnkgdGltZS48L3A+CjxwPk11bHRpLXRhYmxpbmcgaXMgd2hlcmUgdGhlIGJvdCByZWFsbHkgc2hpbmVzLiBXaGlsZSBhIGh1bWFuIG1pZ2h0IHN0cnVnZ2xlIHRvIG1haW50YWluIGZvY3VzIGFjcm9zcyBzZXZlcmFsIHRhYmxlcywgdGhlIGJvdCBoYW5kbGVzIGl0IHNlYW1sZXNzbHkuIFRoaXMgaW5jcmVhc2VzIG92ZXJhbGwgdm9sdW1lLCB3aGljaCBjYW4gY29tcGVuc2F0ZSBmb3IgbG93ZXIgd2luIHJhdGVzIHBlciB0YWJsZS4gSXTigJlzIGEgY2xhc3NpYyBxdWFudGl0eS1vdmVyLXF1YWxpdHkgYXBwcm9hY2gsIGFuZCBpdCB3b3JrcyB1cCB0byBhIHBvaW50LjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpoZWFkaW5nIC0tPgo8aDIgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPjxzdHJvbmc+UHJvZml0YWJpbGl0eSBhbmQgUk9JIEFuYWx5c2lzPC9zdHJvbmc+PC9oMj4KPCEtLSAvd3A6aGVhZGluZyAtLT4KCjwhLS0gd3A6aGVhZGluZyB7ImxldmVsIjozfSAtLT4KPGgzIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIj48c3Ryb25nPlNob3J0LVRlcm0gR2FpbnM8L3N0cm9uZz48L2gzPgo8IS0tIC93cDpoZWFkaW5nIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5JbiB0aGVzZSBlYXJseSBzdGFnZXMsIHRoZSBib3QgdGVuZHMgdG8gZ2VuZXJhdGUgYSA8c3Ryb25nPnN0ZWFkeSBidXQgbW9kZXN0IHdpbiByYXRlPC9zdHJvbmc+LiBUaGluayBvZiBpdCBsZXNzIGxpa2UgYSBsb3R0ZXJ5IHRpY2tldCBhbmQgbW9yZSBsaWtlIGEgc2xvdywgbWVjaGFuaWNhbCBncmluZGVyLiBXaW5zIGFjY3VtdWxhdGUgdGhyb3VnaCBjb25zaXN0ZW50IHZhbHVlIGJldHRpbmcsIGRpc2NpcGxpbmVkIGZvbGRpbmcsIGFuZCBjYXBpdGFsaXppbmcgb24gb3Bwb25lbnRzIHdobyBvdmVycGxheSB3ZWFrIGhhbmRzLiBCZWNhdXNlIHRoZSBib3QgbmV2ZXIgdGlsdHMsIGl0IGF2b2lkcyB0aGUgY29tbW9uIGRvd253YXJkIHNwaXJhbHMgdGhhdCBodW1hbiBwbGF5ZXJzIG9mdGVuIGV4cGVyaWVuY2UgYWZ0ZXIgYSBiYWQgYmVhdC48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5Ib3dldmVyLCBzaG9ydC10ZXJtIHJlc3VsdHMgY2FuIGJlIG1pc2xlYWRpbmcuIFZhcmlhbmNlIHBsYXlzIGEgaHVnZSByb2xlIGluIHBva2VyLCBhbmQgZXZlbiBhIHdlbGwtcGVyZm9ybWluZyBzeXN0ZW0gY2FuIHNob3cgc3dpbmdzIHRoYXQgZG9u4oCZdCByZWZsZWN0IGl0cyB0cnVlIHN0cmVuZ3RoLiBBIGZldyBsdWNreSBzZXNzaW9ucyBjYW4gbWFrZSBwZXJmb3JtYW5jZSBsb29rIGluZmxhdGVkLCB3aGlsZSBhIGZldyBiYWQgcnVucyBjYW4gbWFrZSBpdCBzZWVtIHVuZGVyd2hlbG1pbmcuIFRoaXMgaXMgZXNwZWNpYWxseSB0cnVlIGluIHRvdXJuYW1lbnRzLCB3aGVyZSBwYXlvdXRzIGFyZSBoZWF2aWx5IHNrZXdlZCB0b3dhcmQgdG9wIGZpbmlzaGVycy48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5Bbm90aGVyIGZhY3RvciBpcyA8c3Ryb25nPm11bHRpLXRhYmxpbmcgZWZmaWNpZW5jeTwvc3Ryb25nPi4gSW4gdGhlIHNob3J0IHRlcm0sIHVzZXJzIG9mdGVuIG5vdGljZSB0aGF0IHJ1bm5pbmcgbXVsdGlwbGUgdGFibGVzIHNpZ25pZmljYW50bHkgYm9vc3RzIGhvdXJseSBvdXRwdXQuIEV2ZW4gaWYgdGhlIHdpbiByYXRlIHBlciB0YWJsZSBpcyBzbWFsbCwgdm9sdW1lIGNvbXBlbnNhdGVzIGZvciBpdC4gVGhpcyBjcmVhdGVzIHRoZSBpbGx1c2lvbiBvZiBzdHJvbmcgcHJvZml0YWJpbGl0eSBlYXJseSBvbiwgcGFydGljdWxhcmx5IHdoZW4gZXZlcnl0aGluZyBpcyBydW5uaW5nIHNtb290aGx5IGFuZCB0YWJsZXMgYXJlIHNvZnQuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpoZWFkaW5nIHsibGV2ZWwiOjN9IC0tPgo8aDMgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPjxzdHJvbmc+TG9uZy1UZXJtIFN1c3RhaW5hYmlsaXR5PC9zdHJvbmc+PC9oMz4KPCEtLSAvd3A6aGVhZGluZyAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+RnJvbSBhIHB1cmUgZ2FtZXBsYXkgcGVyc3BlY3RpdmUsIHRoZSBib3QgbWFpbnRhaW5zIGEgPHN0cm9uZz5zb2xpZCBidXQgbm90IGVsaXRlIGVkZ2U8L3N0cm9uZz4gaW4gbW9zdCBsb3cgdG8gbWlkLXN0YWtlcyBjYXNoIGdhbWVzLiBJdHMgR1RPLWJhc2VkIGZvdW5kYXRpb24gZW5zdXJlcyBpdCBkb2VzbuKAmXQgZGV2aWF0ZSBpbnRvIGZ1bmRhbWVudGFsbHkgd2VhayBwbGF5LCB3aGljaCBoZWxwcyBzdGFiaWxpemUgcmVzdWx0cyBvdmVyIHRpbWUuIEhvd2V2ZXIsIHBva2VyIGlzIGFuIGV2b2x2aW5nIGVudmlyb25tZW50LiBBcyBtb3JlIHBsYXllcnMgc3R1ZHkgc3RyYXRlZ3kgYW5kIHVzZSB0cmFja2luZyB0b29scywgdGhlIGF2ZXJhZ2UgdGFibGUgYmVjb21lcyB0b3VnaGVyLCB3aGljaCBuYXR1cmFsbHkgcmVkdWNlcyB3aW4gcmF0ZXMuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+T25lIG9mIHRoZSBrZXkgbG9uZy10ZXJtIGNoYWxsZW5nZXMgaXMgPHN0cm9uZz5kaW1pbmlzaGluZyBlZGdlIGluIGNvbXBldGl0aXZlIHBvb2xzPC9zdHJvbmc+LiBJbiBzb2Z0ZXIgZW52aXJvbm1lbnRzLCB0aGUgYm90IGNhbiBjb25zaXN0ZW50bHkgZXh0cmFjdCB2YWx1ZS4gSW4gdG91Z2hlciBnYW1lcywgb3Bwb25lbnRzIGJlZ2luIHRvIGlkZW50aWZ5IGFuZCBleHBsb2l0IHByZWRpY3RhYmxlIHBhdHRlcm5zLCBldmVuIGlmIHRob3NlIHBhdHRlcm5zIGFyZSBzdWJ0bGUuIFdoaWxlIDNVcEdhbWluZyBpbmNsdWRlcyBzb21lIGFkYXB0aXZlIGZlYXR1cmVzLCBpdCBkb2VzbuKAmXQgZnVsbHkgbWF0Y2ggdGhlIGNyZWF0aXZpdHkgb2Ygc3Ryb25nIGh1bWFuIHJlZ3VsYXJzIHdobyBhY3RpdmVseSBhZGp1c3QgdGhlaXIgc3RyYXRlZ2llcyBpbiByZWFsIHRpbWUuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPlRoZXJl4oCZcyBhbHNvIHRoZSBvcGVyYXRpb25hbCBzaWRlIG9mIHN1c3RhaW5hYmlsaXR5LiBQb2tlciBwbGF0Zm9ybXMgZnJlcXVlbnRseSB1cGRhdGUgZGV0ZWN0aW9uIHN5c3RlbXMsIGFuZCB3aGlsZSB0aGUgYm90IGluY2x1ZGVzIGFudGktcGF0dGVybiBtZWNoYW5pc21zLCBubyBzeXN0ZW0gaXMgY29tcGxldGVseSBmdXR1cmUtcHJvb2YuIFVzZXJzIHdobyBtYWludGFpbiBzdGFibGUgcmVzdWx0cyBvdmVyIHRpbWUgdHlwaWNhbGx5IGNvbWJpbmUgY2FyZWZ1bCB1c2FnZSBwYXR0ZXJucyB3aXRoIGNvbnNlcnZhdGl2ZSBzZXR0aW5ncyByYXRoZXIgdGhhbiBwdXNoaW5nIGFnZ3Jlc3NpdmUgY29uZmlndXJhdGlvbnMuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+SW4gcHJhY3RpY2FsIHRlcm1zLCBsb25nLXRlcm0gUk9JIGlzIGJlc3QgZGVzY3JpYmVkIGFzIDxzdHJvbmc+bW9kZXJhdGUgYW5kIGRlcGVuZGVudCBvbiBjb25kaXRpb25zPC9zdHJvbmc+LiBJdCBjYW4gYmUgcHJvZml0YWJsZSwgYnV0IGl0IGlzIG5vdCBhIGd1YXJhbnRlZWQgaW5jb21lIHN5c3RlbS4gVHJlYXRpbmcgaXQgYXMgYSBkaXNjaXBsaW5lZCBncmluZGluZyB0b29sIHJhdGhlciB0aGFuIGEgc2hvcnRjdXQgdG8gaGlnaCBlYXJuaW5ncyBsZWFkcyB0byBtb3JlIHJlYWxpc3RpYyBleHBlY3RhdGlvbnMgYW5kIG1vcmUgc3RhYmxlIG91dGNvbWVzLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpoZWFkaW5nIC0tPgo8aDIgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPjxzdHJvbmc+U2FmZXR5LCBEZXRlY3Rpb24sIGFuZCBSaXNrczwvc3Ryb25nPjwvaDI+CjwhLS0gL3dwOmhlYWRpbmcgLS0+Cgo8IS0tIHdwOmhlYWRpbmcgeyJsZXZlbCI6M30gLS0+CjxoMyBjbGFzcz0id3AtYmxvY2staGVhZGluZyI+PHN0cm9uZz5BbnRpLUJhbiBNZWNoYW5pc21zPC9zdHJvbmc+PC9oMz4KPCEtLSAvd3A6aGVhZGluZyAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5PbmUgb2YgdGhlIG1vc3Qgc2Vuc2l0aXZlIGFzcGVjdHMgb2YgdXNpbmcgYW55IHBva2VyIGJvdCwgaW5jbHVkaW5nIHRoZSA8c3Ryb25nPjNVcEdhbWluZyBQb2tlciBCb3Q8L3N0cm9uZz4sIGlzIGRldGVjdGlvbiByaXNrLiBPbmxpbmUgcG9rZXIgcGxhdGZvcm1zIGludmVzdCBoZWF2aWx5IGluIHNlY3VyaXR5IHN5c3RlbXMgZGVzaWduZWQgdG8gaWRlbnRpZnkgYXV0b21hdGVkIGJlaGF2aW9yLCBhbmQgdGhpcyBjcmVhdGVzIGFuIG9uZ29pbmcgY2F0LWFuZC1tb3VzZSBkeW5hbWljIGJldHdlZW4gYm90IGRldmVsb3BlcnMgYW5kIHNpdGUgZW5mb3JjZW1lbnQgdGVhbXMuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+VG8gYWRkcmVzcyB0aGlzLCAzVXBHYW1pbmcgaW5jb3Jwb3JhdGVzIGEgcmFuZ2Ugb2YgPHN0cm9uZz5hbnRpLWRldGVjdGlvbiB0ZWNobmlxdWVzPC9zdHJvbmc+LiBUaGVzZSBpbmNsdWRlIHJhbmRvbWl6ZWQgZGVjaXNpb24gdGltaW5nLCB2YXJpYWJsZSBiZXQgc2l6aW5nLCBhbmQgYmVoYXZpb3JhbCBzaW11bGF0aW9uIGRlc2lnbmVkIHRvIG1pbWljIGh1bWFuIGluY29uc2lzdGVuY2llcy4gRm9yIGV4YW1wbGUsIGluc3RlYWQgb2YgYWN0aW5nIGluc3RhbnRseSBldmVyeSB0aW1lLCB0aGUgYm90IGludHJvZHVjZXMgc2xpZ2h0IGRlbGF5cyB0aGF0IHJlc2VtYmxlIGh1bWFuIGhlc2l0YXRpb24uIFNpbWlsYXJseSwgaXQgYXZvaWRzIHJlcGV0aXRpdmUgYmV0dGluZyBwYXR0ZXJucyB0aGF0IGNvdWxkIGJlIGZsYWdnZWQgYXMgYWxnb3JpdGhtaWMgYmVoYXZpb3IuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+QW5vdGhlciBsYXllciBpbnZvbHZlcyA8c3Ryb25nPnNlc3Npb24gdmFyaWFiaWxpdHk8L3N0cm9uZz4sIHdoZXJlIHRoZSBib3Qgc3VidGx5IGNoYW5nZXMgaXRzIHBsYXkgc3R5bGUgb3ZlciB0aW1lLiBUaGlzIGhlbHBzIHJlZHVjZSBwcmVkaWN0YWJpbGl0eSwgd2hpY2ggaXMgb25lIG9mIHRoZSBwcmltYXJ5IGluZGljYXRvcnMgc2VjdXJpdHkgc3lzdGVtcyBsb29rIGZvci4gQ29tYmluZWQgd2l0aCBtdWx0aS10YWJsZSBkaXNwZXJzaW9uLCB0aGUgZ29hbCBpcyB0byBibGVuZCBpbnRvIHRoZSBnZW5lcmFsIHBsYXllciBwb29sIHJhdGhlciB0aGFuIHN0YW5kIG91dCBhcyBhbiBvdXRsaWVyLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPlNvbWUgc2V0dXBzIGFsc28gcmVjb21tZW5kIHVzaW5nIDxzdHJvbmc+VlBTIGVudmlyb25tZW50cyBvciBpc29sYXRlZCBzeXN0ZW1zPC9zdHJvbmc+IHRvIHJlZHVjZSBsb2NhbCBmb290cHJpbnQgZGV0ZWN0aW9uLiBXaGlsZSB0aGlzIGRvZXNu4oCZdCBkaXJlY3RseSBwcmV2ZW50IGRldGVjdGlvbiBhdCB0aGUgcG9rZXIgc2l0ZSBsZXZlbCwgaXQgY2FuIGhlbHAgbWluaW1pemUgZXh0ZXJuYWwgc2lnbmFscyB0aGF0IG1pZ2h0IGNvbnRyaWJ1dGUgdG8gYmVoYXZpb3JhbCBwcm9maWxpbmcuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+RGVzcGl0ZSB0aGVzZSBwcmVjYXV0aW9ucywgaXTigJlzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIGEgZnVuZGFtZW50YWwgcmVhbGl0eTogbm8gYW50aS1ib3Qgc3lzdGVtIGlzIHBlcmZlY3QuIERldGVjdGlvbiB0ZWNobm9sb2d5IGV2b2x2ZXMgY29udGludW91c2x5LCBhbmQgcGxhdGZvcm1zIHJlZ3VsYXJseSB1cGRhdGUgdGhlaXIgbW9uaXRvcmluZyBtb2RlbHMuIFdoYXQgd29ya3MgdG9kYXkgbWF5IGJlIGxlc3MgZWZmZWN0aXZlIHRvbW9ycm93LCBhbmQgbG9uZy10ZXJtIHJlbGlhbmNlIG9uIGFueSBib3QgY2FycmllcyBpbmhlcmVudCB1bmNlcnRhaW50eS48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6aGVhZGluZyB7ImxldmVsIjozfSAtLT4KPGgzIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIj48c3Ryb25nPlJpc2tzIG9mIFVzaW5nIFBva2VyIEJvdHM8L3N0cm9uZz48L2gzPgo8IS0tIC93cDpoZWFkaW5nIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPkJleW9uZCBkZXRlY3Rpb24sIHRoZXJlIGFyZSBicm9hZGVyIHJpc2tzIGFzc29jaWF0ZWQgd2l0aCB1c2luZyB0b29scyBsaWtlIHRoZSA8c3Ryb25nPjNVcEdhbWluZyBQb2tlciBCb3Q8L3N0cm9uZz4sIGFuZCB0aGVzZSByaXNrcyBleHRlbmQgYmV5b25kIHNpbXBsZSBhY2NvdW50IGJhbnMuIFRoZSBtb3N0IG9idmlvdXMgaXMgPHN0cm9uZz5hY2NvdW50IHN1c3BlbnNpb24gb3IgcGVybWFuZW50IGJhbnM8L3N0cm9uZz4gZnJvbSBwb2tlciBwbGF0Zm9ybXMuIElmIGRldGVjdGVkLCB1c2VycyBtYXkgbG9zZSBhY2Nlc3MgdG8gdGhlaXIgYWNjb3VudHMsIGluY2x1ZGluZyBhbnkgcmVtYWluaW5nIGJhbGFuY2UsIHBlbmRpbmcgd2l0aGRyYXdhbHMsIG9yIGxveWFsdHkgcmV3YXJkcy48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5UaGVyZSBpcyBhbHNvIGEgZmluYW5jaWFsIHJpc2sgdGllZCB0byA8c3Ryb25nPnZhcmlhbmNlIGFuZCBtaXNjb25maWd1cmF0aW9uPC9zdHJvbmc+LiBBIHBvb3JseSBjb25maWd1cmVkIGJvdCBjYW4gbG9zZSBtb25leSBxdWlja2x5LCBlc3BlY2lhbGx5IGluIHRvdWdoZXIgZ2FtZXMgb3IgZHVyaW5nIHZvbGF0aWxlIHN0cmV0Y2hlcy4gVW5saWtlIGh1bWFuIHBsYXllcnMsIHdobyBjYW4gYWRqdXN0IGludHVpdGl2ZWx5LCBhIG1pc2NvbmZpZ3VyZWQgYm90IHdpbGwgY29udGludWUgZXhlY3V0aW5nIGZsYXdlZCBzdHJhdGVnaWVzIHVudGlsIG1hbnVhbGx5IGNvcnJlY3RlZC48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5Bbm90aGVyIG9mdGVuIG92ZXJsb29rZWQgcmlzayBpcyA8c3Ryb25nPm92ZXJyZWxpYW5jZSBvbiBhdXRvbWF0aW9uPC9zdHJvbmc+LiBVc2VycyBtYXkgYmVjb21lIGRldGFjaGVkIGZyb20gdGhlIHN0cmF0ZWdpYyBzaWRlIG9mIHBva2VyLCByZWx5aW5nIGVudGlyZWx5IG9uIHRoZSBib3Qgd2l0aG91dCB1bmRlcnN0YW5kaW5nIHdoeSBjZXJ0YWluIGRlY2lzaW9ucyBhcmUgbWFkZS4gVGhpcyBjYW4gbGltaXQgbG9uZy10ZXJtIHNraWxsIGRldmVsb3BtZW50IGFuZCBtYWtlIGl0IGRpZmZpY3VsdCB0byBhZGFwdCBpZiB0aGUgdG9vbCBiZWNvbWVzIHVuYXZhaWxhYmxlLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPkxlZ2FsIGFuZCBldGhpY2FsIGNvbnNpZGVyYXRpb25zIGFsc28gdmFyeSBieSBwbGF0Zm9ybSBhbmQganVyaXNkaWN0aW9uLiBNYW55IHBva2VyIHNpdGVzIGV4cGxpY2l0bHkgcHJvaGliaXQgYm90IHVzYWdlIGluIHRoZWlyIHRlcm1zIG9mIHNlcnZpY2UsIHdoaWNoIG1lYW5zIHVzZXJzIGFyZSBvcGVyYXRpbmcgaW4gYSByZXN0cmljdGVkIG9yIGdyYXkgYXJlYS4gVGhpcyBkb2VzbuKAmXQgbmVjZXNzYXJpbHkgaW52b2x2ZSBsZWdhbCBjb25zZXF1ZW5jZXMgaW4gbW9zdCByZWdpb25zLCBidXQgaXQgZG9lcyBjcmVhdGUgYSBjb250cmFjdHVhbCByaXNrIHdpdGggdGhlIHBsYXRmb3JtIGl0c2VsZi48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5GaW5hbGx5LCB0aGVyZeKAmXMgdGhlIHBzeWNob2xvZ2ljYWwgcmlzayBvZiA8c3Ryb25nPmZhbHNlIGNvbmZpZGVuY2UgaW4gYXV0b21hdGlvbjwvc3Ryb25nPi4gRWFybHkgd2lucyBjYW4gY3JlYXRlIHRoZSBpbXByZXNzaW9uIG9mIGd1YXJhbnRlZWQgaW5jb21lLCB3aGljaCBtYXkgbGVhZCB0byB1bnJlYWxpc3RpYyBzY2FsaW5nIG9yIGluY3JlYXNlZCBmaW5hbmNpYWwgZXhwb3N1cmUuIFdoZW4gdmFyaWFuY2UgaW5ldml0YWJseSBoaXRzLCB0aGUgaW1wYWN0IGNhbiBmZWVsIGFicnVwdCBhbmQgZGlzY291cmFnaW5nLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPkluIHNob3J0LCB3aGlsZSAzVXBHYW1pbmcgaW5jbHVkZXMgcHJvdGVjdGl2ZSBtZWNoYW5pc21zLCBpdCBkb2VzIG5vdCBlbGltaW5hdGUgcmlzay4gVXNlcnMgb3BlcmF0ZSBpbiBhbiBlbnZpcm9ubWVudCB3aGVyZSBwcm9maXRhYmlsaXR5LCBkZXRlY3Rpb24sIGFuZCBwbGF0Zm9ybSBwb2xpY2llcyBjb25zdGFudGx5IGludGVyYWN0LCBhbmQgbm9uZSBvZiB0aGVzZSB2YXJpYWJsZXMgYXJlIGZ1bGx5IHVuZGVyIGNvbnRyb2wuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOmhlYWRpbmcgLS0+CjxoMiBjbGFzcz0id3AtYmxvY2staGVhZGluZyI+PHN0cm9uZz5Db25jbHVzaW9uPC9zdHJvbmc+PC9oMj4KPCEtLSAvd3A6aGVhZGluZyAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5UaGUgPHN0cm9uZz4zVXBHYW1pbmcgUG9rZXIgQm90ICgyMDI2KTwvc3Ryb25nPiBwcmVzZW50cyBpdHNlbGYgYXMgYSBjYXBhYmxlIEFJLWRyaXZlbiB0b29sIHRoYXQgY2FuIGF1dG9tYXRlIG9ubGluZSBwb2tlciB3aXRoIGEgc3VycHJpc2luZyBsZXZlbCBvZiBzdHJhdGVnaWMgZGVwdGguIEluIHJlYWwgY29uZGl0aW9ucywgaXQgcGVyZm9ybXMgc3Ryb25nZXN0IGluIDxzdHJvbmc+bG93IHRvIG1pZC1zdGFrZXMgY2FzaCBnYW1lczwvc3Ryb25nPiwgd2hlcmUgd2Vha2VyIG9wcG9uZW50cyBhbmQgcHJlZGljdGFibGUgcGF0dGVybnMgYWxsb3cgaXRzIEdUTy1iYXNlZCBlbmdpbmUgYW5kIGV4cGxvaXRhdGl2ZSBhZGp1c3RtZW50cyB0byBnZW5lcmF0ZSBzdGVhZHksIG1vZGVyYXRlIHJldHVybnMuIEl0cyBhYmlsaXR5IHRvIG11bHRpLXRhYmxlIGVmZmljaWVudGx5LCBzdGF5IGVtb3Rpb25hbGx5IG5ldXRyYWwsIGFuZCBleGVjdXRlIGNvbnNpc3RlbnQgZGVjaXNpb24tbWFraW5nIGdpdmVzIGl0IGEgY2xlYXIgYWR2YW50YWdlIG92ZXIgY2FzdWFsIGh1bWFuIHBsYXllcnMuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+SG93ZXZlciwgaXRzIHBlcmZvcm1hbmNlIGlzIG5vdCB1bml2ZXJzYWxseSBkb21pbmFudC4gSW4gPHN0cm9uZz5oaWdoZXItc3Rha2VzIGdhbWVzIGFuZCBhZHZhbmNlZCB0b3VybmFtZW50IHN0YWdlczwvc3Ryb25nPiwgdGhlIGJvdOKAmXMgbGltaXRhdGlvbnMgYmVjb21lIG1vcmUgdmlzaWJsZS4gU2l0dWF0aW9ucyByZXF1aXJpbmcgZGVlcCBJQ00gYXdhcmVuZXNzLCBjcmVhdGl2ZSBwcmVzc3VyZSBhZGp1c3RtZW50cywgYW5kIGhpZ2hseSBhZGFwdGl2ZSBodW1hbiByZWFkcyBleHBvc2UgdGhlIGdhcCBiZXR3ZWVuIGFsZ29yaXRobWljIGNvbnNpc3RlbmN5IGFuZCBlbGl0ZS1sZXZlbCBodW1hbiBpbnR1aXRpb24uIEFzIGEgcmVzdWx0LCBwcm9maXRhYmlsaXR5IGJlY29tZXMgbW9yZSB2YXJpYW5jZS1kZXBlbmRlbnQgYW5kIGxlc3MgcHJlZGljdGFibGUgYXQgaGlnaGVyIHNraWxsIGxldmVscy48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5Gcm9tIGEgdXNhYmlsaXR5IHN0YW5kcG9pbnQsIHRoZSBib3QgaXMgcmVsYXRpdmVseSB3ZWxsLWRlc2lnbmVkLCBvZmZlcmluZyBhIGNsZWFuIGludGVyZmFjZSBhbmQgZmxleGlibGUgY3VzdG9taXphdGlvbiBvcHRpb25zLiBCdXQgdGhhdCBmbGV4aWJpbGl0eSBhbHNvIGludHJvZHVjZXMgY29tcGxleGl0eSwgbWVhbmluZyB1c2VycyBuZWVkIGF0IGxlYXN0IGEgYmFzaWMgdW5kZXJzdGFuZGluZyBvZiBwb2tlciBzdHJhdGVneSB0byBhdm9pZCBtaXNjb25maWd1cmF0aW9uLiBPbiB0aGUgdGVjaG5pY2FsIHNpZGUsIGl0IHJ1bnMgc21vb3RobHkgb24gc3RhbmRhcmQgc3lzdGVtcyBhbmQgc3VwcG9ydHMgbXVsdGktdGFibGluZyBlZmZlY3RpdmVseSwgd2hpY2ggaXMgb25lIG9mIGl0cyBtYWluIHZhbHVlIGRyaXZlcnMuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+VGhlIGJpZ2dlc3QgdHJhZGUtb2ZmLCBob3dldmVyLCBsaWVzIGluIDxzdHJvbmc+cmlzayB2ZXJzdXMgcmV3YXJkPC9zdHJvbmc+LiBXaGlsZSBhbnRpLWRldGVjdGlvbiBtZWNoYW5pc21zIGV4aXN0LCBubyBzeXN0ZW0gY2FuIGZ1bGx5IGVsaW1pbmF0ZSB0aGUgcG9zc2liaWxpdHkgb2YgcGxhdGZvcm0gZGV0ZWN0aW9uIG9yIGFjY291bnQgcGVuYWx0aWVzLiBDb21iaW5lZCB3aXRoIG5hdHVyYWwgdmFyaWFuY2UgYW5kIGV2b2x2aW5nIHBva2VyIGVjb3N5c3RlbXMsIGxvbmctdGVybSByZXN1bHRzIGFyZSBiZXN0IGRlc2NyaWJlZCBhcyA8c3Ryb25nPnN0YWJsZSBidXQgbm90IGd1YXJhbnRlZWQ8L3N0cm9uZz4uPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+SW4gcHJhY3RpY2FsIHRlcm1zLCB0aGUgM1VwR2FtaW5nIFBva2VyIEJvdCBpcyBub3QgYSBzaG9ydGN1dCB0byBlZmZvcnRsZXNzIHByb2ZpdCwgYnV0IHJhdGhlciBhIHN0cnVjdHVyZWQgYXV0b21hdGlvbiB0b29sIHRoYXQgY2FuIHByb2R1Y2UgY29uc2lzdGVudCByZXN1bHRzIHVuZGVyIHRoZSByaWdodCBjb25kaXRpb25zLiBJdHMgZWZmZWN0aXZlbmVzcyBkZXBlbmRzIGhlYXZpbHkgb24gZ2FtZSBzZWxlY3Rpb24sIGNvbmZpZ3VyYXRpb24gcXVhbGl0eSwgYW5kIHJpc2sgdG9sZXJhbmNlLiBVc2VycyBleHBlY3RpbmcgZ3VhcmFudGVlZCBpbmNvbWUgYXJlIGxpa2VseSB0byBiZSBkaXNhcHBvaW50ZWQsIHdoaWxlIHRob3NlIHRyZWF0aW5nIGl0IGFzIGEgY29udHJvbGxlZCwgYW5hbHl0aWNhbCBncmluZGluZyBhc3Npc3RhbnQgd2lsbCBmaW5kIGl0IG1vcmUgYWxpZ25lZCB3aXRoIHJlYWxpdHkuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnNlcGFyYXRvciAtLT4KPGhyIGNsYXNzPSJ3cC1ibG9jay1zZXBhcmF0b3IgaGFzLWFscGhhLWNoYW5uZWwtb3BhY2l0eSIvPgo8IS0tIC93cDpzZXBhcmF0b3IgLS0+Cgo8IS0tIHdwOmhlYWRpbmcgLS0+CjxoMiBjbGFzcz0id3AtYmxvY2staGVhZGluZyI+PHN0cm9uZz5GQVFzPC9zdHJvbmc+PC9oMj4KPCEtLSAvd3A6aGVhZGluZyAtLT4KCjwhLS0gd3A6aGVhZGluZyB7ImxldmVsIjozfSAtLT4KPGgzIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIj48c3Ryb25nPjEuIElzIDNVcEdhbWluZyBQb2tlciBCb3QgcHJvZml0YWJsZSBpbiAyMDI2Pzwvc3Ryb25nPjwvaDM+CjwhLS0gL3dwOmhlYWRpbmcgLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+SXQgY2FuIGJlIHByb2ZpdGFibGUgaW4gbG93IHRvIG1pZC1zdGFrZXMgY2FzaCBnYW1lcyB1bmRlciBnb29kIGNvbmRpdGlvbnMsIGJ1dCBlYXJuaW5ncyBhcmUgdXN1YWxseSBtb2RlcmF0ZSBhbmQgZGVwZW5kIGhlYXZpbHkgb24gZ2FtZSBzb2Z0bmVzcywgY29uZmlndXJhdGlvbiwgYW5kIHZhcmlhbmNlLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpoZWFkaW5nIHsibGV2ZWwiOjN9IC0tPgo8aDMgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPjxzdHJvbmc+Mi4gQ2FuIHRoZSBib3QgYmUgZGV0ZWN0ZWQgYnkgcG9rZXIgcGxhdGZvcm1zPzwvc3Ryb25nPjwvaDM+CjwhLS0gL3dwOmhlYWRpbmcgLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+WWVzLiBXaGlsZSBpdCBpbmNsdWRlcyBhbnRpLWRldGVjdGlvbiBmZWF0dXJlcyBsaWtlIHJhbmRvbWl6ZWQgdGltaW5nIGFuZCBiZWhhdmlvciBzaW11bGF0aW9uLCBubyBwb2tlciBib3QgaXMgY29tcGxldGVseSB1bmRldGVjdGFibGUgaW4gdGhlIGxvbmcgdGVybS48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6aGVhZGluZyB7ImxldmVsIjozfSAtLT4KPGgzIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIj48c3Ryb25nPjMuIERvZXMgaXQgd29yayBiZXR0ZXIgaW4gY2FzaCBnYW1lcyBvciB0b3VybmFtZW50cz88L3N0cm9uZz48L2gzPgo8IS0tIC93cDpoZWFkaW5nIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPkl0IHBlcmZvcm1zIG1vcmUgY29uc2lzdGVudGx5IGluIDxzdHJvbmc+Y2FzaCBnYW1lczwvc3Ryb25nPi4gVG91cm5hbWVudCBwbGF5IGlzIG1vcmUgdm9sYXRpbGUgYW5kIHJlcXVpcmVzIGRlZXBlciBhZGFwdGl2ZSBkZWNpc2lvbi1tYWtpbmcsIHdoZXJlIHBlcmZvcm1hbmNlIGlzIGxlc3Mgc3RhYmxlLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpoZWFkaW5nIHsibGV2ZWwiOjN9IC0tPgo8aDMgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPjxzdHJvbmc+NC4gRG8gSSBuZWVkIHBva2VyIGV4cGVyaWVuY2UgdG8gdXNlIGl0IGVmZmVjdGl2ZWx5Pzwvc3Ryb25nPjwvaDM+CjwhLS0gL3dwOmhlYWRpbmcgLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+QmFzaWMgcG9rZXIga25vd2xlZGdlIGlzIGhpZ2hseSByZWNvbW1lbmRlZC4gV2l0aG91dCB1bmRlcnN0YW5kaW5nIGNvbmNlcHRzIGxpa2UgcG9zaXRpb24sIHJhbmdlcywgYW5kIGFnZ3Jlc3Npb24sIGl04oCZcyBlYXN5IHRvIG1pc2NvbmZpZ3VyZSB0aGUgYm90IGFuZCByZWR1Y2UgcGVyZm9ybWFuY2UuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOmhlYWRpbmcgeyJsZXZlbCI6M30gLS0+CjxoMyBjbGFzcz0id3AtYmxvY2staGVhZGluZyI+PHN0cm9uZz41LiBJcyB1c2luZyBhIHBva2VyIGJvdCBsZWdhbD88L3N0cm9uZz48L2gzPgo8IS0tIC93cDpoZWFkaW5nIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPkl0IGRlcGVuZHMgb24gdGhlIHBsYXRmb3JtLiBNb3N0IG9ubGluZSBwb2tlciBzaXRlcyBwcm9oaWJpdCBib3RzIGluIHRoZWlyIHRlcm1zIG9mIHNlcnZpY2UsIG1lYW5pbmcgdXNhZ2UgY2FuIHJlc3VsdCBpbiBhY2NvdW50IHN1c3BlbnNpb24gb3IgYmFucy48L3A+CiAgICAgPHA+T25saW5lIHBva2VyIGluIDIwMjYgZG9lc27igJl0IGxvb2sgYW55dGhpbmcgbGlrZSBpdCBkaWQganVzdCBhIGZldyB5ZWFycyBhZ28uIFdoYXQgdXNlZCB0byBiZSBhIGdhbWUgZG9taW5hdGVkIGJ5IGh1bWFuIGludHVpdGlvbiwgZ3V0IGZlZWxpbmdzLCBhbmQgbGF0ZS1uaWdodCBibHVmZmluZyB3YXJzIGhhcyBncmFkdWFsbHkgZXZvbHZlZCBpbnRvIGEgYmF0dGxlZmllbGQgb2YgYWxnb3JpdGhtcywgcHJvYmFiaWxpdHkgZW5naW5lcywgYW5kIG1hY2hpbmUgbGVhcm5pbmcgc3lzdGVtcy4gQUkgcG9rZXIgYm90cyBsaWtlIDxzdHJvbmc+M1VwR2FtaW5nIFBva2VyIEJvdDwvc3Ryb25nPiBhcmUgbm8gbG9uZ2VyIGZyaW5nZSB0b29scyB1c2VkIGJ5IGEgaGFuZGZ1bCBvZiB0ZWNoLXNhdnZ5IHBsYXllcnMgdGhleeKAmXZlIGJlY29tZSBhIHNlcmlvdXMgcGFydCBvZiB0aGUgZWNvc3lzdGVtLCBxdWlldGx5IHJlc2hhcGluZyBob3cgdGhlIGdhbWUgaXMgcGxheWVkIGJlaGluZCB0aGUgc2NlbmVzLjwvcD4KPHA+VGhlcmXigJlzIGFsc28gYSBwc3ljaG9sb2dpY2FsIGFuZ2xlLiBFdmVuIGV4cGVyaWVuY2VkIHBsYXllcnMgYXJlbuKAmXQgaW1tdW5lIHRvIGVtb3Rpb25hbCBkZWNpc2lvbi1tYWtpbmcgY2hhc2luZyBsb3NzZXMsIG92ZXJ2YWx1aW5nIGhhbmRzLCBvciBmb2xkaW5nIHVuZGVyIHByZXNzdXJlLiBBIGJvdCBkb2VzbuKAmXQgaGF2ZSB0aG9zZSB3ZWFrbmVzc2VzLiBJdCBzdGlja3MgdG8gdGhlIHNjcmlwdCwgbWFraW5nIGRlY2lzaW9ucyBiYXNlZCBwdXJlbHkgb24gZGF0YSBhbmQgcHJvYmFiaWxpdGllcy48L3A+CjxwPk9mIGNvdXJzZSwgbm90IGFsbCBib3RzIGFyZSBjcmVhdGVkIGVxdWFsLiBTb21lIGFyZSBjbHVua3ksIHByZWRpY3RhYmxlLCBhbmQgZWFzaWx5IGRldGVjdGVkLCB3aGlsZSBvdGhlcnMgbGlrZSAzVXBHYW1pbmcgY2xhaW0gdG8gb2ZmZXIgc29waGlzdGljYXRlZCBBSSB0aGF0IG1pbWljcyBodW1hbiBiZWhhdmlvci4gVGhhdCBkaXN0aW5jdGlvbiBtYXR0ZXJzLCBlc3BlY2lhbGx5IHdoZW4gcmVhbCBtb25leSBhbmQgYWNjb3VudCBzYWZldHkgYXJlIG9uIHRoZSBsaW5lLiBTbywgZG9lcyAzVXBHYW1pbmcgYWN0dWFsbHkgbGl2ZSB1cCB0byB0aGUgaHlwZSwgb3IgaXMgaXQganVzdCBhbm90aGVyIG92ZXJwcm9taXNlZCB0b29sIGluIGEgY3Jvd2RlZCBtYXJrZXQ\/IExldOKAmXMgZGlnIGRlZXBlci48L3A+CjxwPkZvciBleGFtcGxlLCBpZiBhIHBsYXllciBmb2xkcyB0b28gb2Z0ZW4gdG8gYWdncmVzc2lvbiwgdGhlIGJvdCBtYXkgaW5jcmVhc2UgaXRzIGJsdWZmIGZyZXF1ZW5jeS4gSWYgc29tZW9uZSBjYWxscyB0b28gbXVjaCwgaXQgdGlnaHRlbnMgdXAgYW5kIGxlYW5zIGludG8gdmFsdWUgYmV0dGluZy4gVGhpcyBkdWFsLWxheWVyIGFwcHJvYWNoIEdUTyBmb3Igc2FmZXR5IGFuZCBleHBsb2l0YXRpdmUgcGxheSBmb3IgcHJvZml04oCUaXMgd2hhdCBnaXZlcyB0aGUgYm90IGl0cyBlZGdlIGluIHNvZnRlciBnYW1lcy48L3A+CnN0YXRlc2F2ZWRBdHN0YXRlc2F2ZWRCeSAgPHA+QWxsIG9mIHRoaXMgc291bmRzIGltcHJlc3NpdmUgb24gcGFwZXIsIGJ1dCBmZWF0dXJlcyBhbG9uZSBkb27igJl0IHRlbGwgdGhlIGZ1bGwgc3RvcnkuIFRoZSByZWFsIHRlc3QgaXMgaG93IHRoZXNlIGNhcGFiaWxpdGllcyB0cmFuc2xhdGUgaW50byBhY3R1YWwgZ2FtZXBsYXkgYW5kIHdoZXRoZXIgdGhleSBob2xkIHVwIHdoZW4gcmVhbCBtb25leSBpcyBvbiB0aGUgbGluZS48L3A+CiAgICAgICAgPHA+QWZ0ZXIgdGhhdCwgdXNlcnMgdHlwaWNhbGx5IGNvbmZpZ3VyZSB0aGVpciA8c3Ryb25nPnN0cmF0ZWd5IHByb2ZpbGVzPC9zdHJvbmc+LiBUaGlzIGluY2x1ZGVzIHNlbGVjdGluZyBhZ2dyZXNzaW9uIGxldmVscywgYmFua3JvbGwgbWFuYWdlbWVudCBydWxlcywgYW5kIHRhYmxlIGxpbWl0cy4gV2hpbGUgdGhlcmUgYXJlIGRlZmF1bHQgcHJlc2V0cywgc3BlbmRpbmcgdGltZSBmaW5lLXR1bmluZyB0aGVzZSBzZXR0aW5ncyBjYW4gc2lnbmlmaWNhbnRseSBpbXBhY3QgcmVzdWx0cy4gVGhpbmsgb2YgaXQgbGlrZSBzZXR0aW5nIHRoZSBwZXJzb25hbGl0eSBvZiB5b3VyIGJvdCBpdCBkZXRlcm1pbmVzIGhvdyBpdCBiZWhhdmVzIGluIGRpZmZlcmVudCBzaXR1YXRpb25zLjwvcD4KPHA+SWYgdGhlcmXigJlzIG9uZSBhcmVhIHdoZXJlIHRoZSA8c3Ryb25nPjNVcEdhbWluZyBQb2tlciBCb3Q8L3N0cm9uZz4gZ2VudWluZWx5IHN0YW5kcyBvdXQsIGl04oCZcyBjdXN0b21pemF0aW9uLiBUaGlzIGlzbuKAmXQgYSBvbmUtc2l6ZS1maXRzLWFsbCB0b29sOyBpdOKAmXMgbW9yZSBsaWtlIGEgY29uZmlndXJhYmxlIGVuZ2luZSB0aGF0IHlvdSBjYW4gdHdlYWsgdG8gbWF0Y2ggeW91ciByaXNrIHRvbGVyYW5jZSwgcGxheSBzdHlsZSwgYW5kIG92ZXJhbGwgZ29hbHMuIFRoYXQgZmxleGliaWxpdHkgaXMgYSBiaWcgcGFydCBvZiBpdHMgYXBwZWFsIGJ1dCBpdCBhbHNvIGludHJvZHVjZXMgY29tcGxleGl0eS48L3A+CjxwPlRoaW5rIG9mIGN1c3RvbWl6YXRpb24gaGVyZSBsaWtlIHR1bmluZyBhIG11c2ljYWwgaW5zdHJ1bWVudC4gSW4gdGhlIHJpZ2h0IGhhbmRzLCBpdCBwcm9kdWNlcyBzb21ldGhpbmcgaW1wcmVzc2l2ZS4gSW4gdGhlIHdyb25nIGhhbmRzLCBpdCBjYW4gc291bmQgY29tcGxldGVseSBvZmYuIFRoZSBwb3RlbnRpYWwgaXMgdGhlcmUgYnV0IGl0IHJlcXVpcmVzIHNvbWUga25vd2xlZGdlIGFuZCByZXN0cmFpbnQgdG8gZnVsbHkgcmVhbGl6ZSBpdC48L3A+CjxwPk5vdyB3ZSBnZXQgdG8gdGhlIHBhcnQgdGhhdCByZWFsbHkgbWF0dGVyczogaG93IHRoZSA8c3Ryb25nPjNVcEdhbWluZyBQb2tlciBCb3Q8L3N0cm9uZz4gcGVyZm9ybXMgd2hlbiByZWFsIG1vbmV5IGlzIG9uIHRoZSBsaW5lLiBGZWF0dXJlcyBhbmQgZGVzaWduIGFyZSBvbmUgdGhpbmcsIGJ1dCBwZXJmb3JtYW5jZSBpbiBsaXZlIGNhc2ggZ2FtZXMgaXMgd2hlcmUgY2xhaW1zIGVpdGhlciBob2xkIHVwIG9yIGZhbGwgYXBhcnQuPC9wPgo8cD5Bbm90aGVyIGZhY3RvciBpcyB0YWJsZSBzZWxlY3Rpb24uIFRoZSBib3QgZG9lc27igJl0IGluaGVyZW50bHkgY2hvb3NlIHRoZSBiZXN0IHRhYmxlcyBpdCBwbGF5cyB3aGVyZSB5b3UgcHV0IGl0LiBUaGlzIG1lYW5zIHJlc3VsdHMgY2FuIHZhcnkgc2lnbmlmaWNhbnRseSBkZXBlbmRpbmcgb24gZ2FtZSBxdWFsaXR5LiBJbiBzb2Z0ZXIgZ2FtZXMsIGl0IGNhbiBmZWVsIGFsbW9zdCBlZmZvcnRsZXNzLiBJbiB0b3VnaGVyIGVudmlyb25tZW50cywgaXQgYmVjb21lcyBtb3JlIG9mIGEgYnJlYWstZXZlbiBncmluZGVyLjwvcD4KPHA+TGF0ZS1zdGFnZSBwbGF54oCUZXNwZWNpYWxseSBuZWFyIHRoZSBidWJibGUgb3IgZmluYWwgdGFibGUgaXMgd2hlcmUgdGhlIGxpbWl0YXRpb25zIGJlY29tZSBtb3JlIGFwcGFyZW50LiBUaGVzZSBzaXR1YXRpb25zIHJlcXVpcmUgYSBkZWVwIHVuZGVyc3RhbmRpbmcgb2YgPHN0cm9uZz5JQ00gKEluZGVwZW5kZW50IENoaXAgTW9kZWwpPC9zdHJvbmc+IGFuZCBwc3ljaG9sb2dpY2FsIHByZXNzdXJlLiBXaGlsZSB0aGUgYm90IGluY29ycG9yYXRlcyBzb21lIElDTSBsb2dpYywgaXQgZG9lc27igJl0IGFsd2F5cyBjYXB0dXJlIHRoZSBudWFuY2Ugb2YgaHVtYW4gYmVoYXZpb3IgaW4gaGlnaC1zdGFrZXMgbW9tZW50cy48L3A+CjxwPlN0aWxsLCBzaG9ydC10ZXJtIGdhaW5zIHNob3VsZCBiZSBpbnRlcnByZXRlZCBjYXV0aW91c2x5LiBUaGUgYm90IHBlcmZvcm1zIGJlc3Qgd2hlbiBjb25kaXRpb25zIGFyZSBmYXZvcmFibGUgYW5kIG9wcG9uZW50cyBhcmUgcHJlZGljdGFibGUuIE9uY2UgdGhvc2UgY29uZGl0aW9ucyBzaGlmdCwgdGhlIG51bWJlcnMgdGVuZCB0byBub3JtYWxpemUuIEluIG90aGVyIHdvcmRzLCBlYXJseSBwcm9maXRzIGFyZSByZWFsIGJ1dCB0aGV54oCZcmUgbm90IGFsd2F5cyByZXByZXNlbnRhdGl2ZSBvZiBsb25nLXRlcm0gc3VzdGFpbmFiaWxpdHkuPC9wPgo8cD5Mb25nLXRlcm0gcGVyZm9ybWFuY2UgaXMgd2hlcmUgdGhlIDxzdHJvbmc+M1VwR2FtaW5nIFBva2VyIEJvdDwvc3Ryb25nPiBpcyB0cnVseSB0ZXN0ZWQgYW5kIHdoZXJlIGV4cGVjdGF0aW9ucyBuZWVkIHRvIGJlIG1vcmUgZ3JvdW5kZWQuIE92ZXIgZXh0ZW5kZWQgcGVyaW9kcywgc2V2ZXJhbCBzdHJ1Y3R1cmFsIGZhY3RvcnMgYmVnaW4gdG8gaW5mbHVlbmNlIHJlc3VsdHM6IGluY3JlYXNpbmcgb3Bwb25lbnQgc2tpbGwgbGV2ZWxzLCBjaGFuZ2luZyB0YWJsZSBlY29zeXN0ZW1zLCBhbmQgc3RyaWN0ZXIgcGxhdGZvcm0gc2VjdXJpdHkgbWVhc3VyZXMuPC9wPgogICAgICAgPHA+TGV04oCZcyBiZSBob25lc3Qgb25saW5lIHBva2VyIGNhbiBiZSBleGhhdXN0aW5nLiBMb25nIHNlc3Npb25zLCB0b3VnaCBvcHBvbmVudHMsIGVtb3Rpb25hbCBzd2luZ3MsIGFuZCB0aGUgY29uc3RhbnQgcHJlc3N1cmUgdG8gbWFrZSBvcHRpbWFsIGRlY2lzaW9ucyBjYW4gd2VhciBkb3duIGV2ZW4gdGhlIG1vc3QgZGlzY2lwbGluZWQgcGxheWVycy4gVGhhdOKAmXMgd2hlcmUgcG9rZXIgYm90cyBzdGVwIGluLCBvZmZlcmluZyBzb21ldGhpbmcgaW5jcmVkaWJseSB0ZW1wdGluZzogY29uc2lzdGVuY3kuIFRvb2xzIGxpa2UgdGhlIDxzdHJvbmc+M1VwR2FtaW5nIFBva2VyIEJvdDwvc3Ryb25nPiBwcm9taXNlIHRvIHJlbW92ZSBodW1hbiBlcnJvciBmcm9tIHRoZSBlcXVhdGlvbiwgcmVwbGFjaW5nIHRpbHQtcHJvbmUgZGVjaXNpb24tbWFraW5nIHdpdGggY2FsY3VsYXRlZCBwcmVjaXNpb24uPC9wPgo8cD5Bbm90aGVyIGtleSBjb21wb25lbnQgaXMgPHN0cm9uZz5tdWx0aS10YWJsZSBzdXBwb3J0PC9zdHJvbmc+LiBVc2VycyBjYW4gcnVuIHRoZSBib3QgYWNyb3NzIHNldmVyYWwgdGFibGVzIHNpbXVsdGFuZW91c2x5LCBkcmFtYXRpY2FsbHkgaW5jcmVhc2luZyBwb3RlbnRpYWwgdm9sdW1lLiBGb3IgZ3JpbmRlcnMsIHRoaXMgaXMgYSBodWdlIGFkdmFudGFnZS4gSW5zdGVhZCBvZiBwbGF5aW5nIHR3byBvciB0aHJlZSB0YWJsZXMgbWFudWFsbHksIHRoZSBib3QgY2FuIGhhbmRsZSBzaWduaWZpY2FudGx5IG1vcmUsIHRoZW9yZXRpY2FsbHkgYm9vc3RpbmcgaG91cmx5IHdpbiByYXRlcy4gT2YgY291cnNlLCB0aGlzIGFsc28gZGVwZW5kcyBvbiBob3cgd2VsbCB0aGUgYm90IHBlcmZvcm1zIHVuZGVyIHByZXNzdXJlIHNvbWV0aGluZyB3ZeKAmWxsIGV4cGxvcmUgbGF0ZXIuPC9wPgo8cD5XaGVuIHBlb3BsZSBoZWFyIOKAnEFJIHBva2VyIGJvdCzigJ0gdGhleSBvZnRlbiBpbWFnaW5lIHNvbWV0aGluZyBteXN0ZXJpb3VzIG9yIGFsbW9zdCBtYWdpY2FsIHdvcmtpbmcgYmVoaW5kIHRoZSBzY2VuZXMuIEluIHJlYWxpdHksIHRoZSA8c3Ryb25nPjNVcEdhbWluZyBQb2tlciBCb3Q8L3N0cm9uZz4gaXMgYnVpbHQgb24gYSBjb21iaW5hdGlvbiBvZiBzdGF0aXN0aWNhbCBtb2RlbGluZywgZ2FtZSB0aGVvcnkgcHJpbmNpcGxlcywgYW5kIG1hY2hpbmUgbGVhcm5pbmcgbGF5ZXJzIHRoYXQgYXR0ZW1wdCB0byBzaW11bGF0ZSBob3cgc3Ryb25nIHBva2VyIHBsYXllcnMgdGhpbmsganVzdCBmYXN0ZXIgYW5kIHdpdGhvdXQgZW1vdGlvbmFsIGludGVyZmVyZW5jZS4gQnV0IGhlcmXigJlzIHRoZSB0aGluZzogbm90IGFsbCBBSSBpcyBjcmVhdGVkIGVxdWFsLCBhbmQgdW5kZXJzdGFuZGluZyBob3cgdGhpcyBvbmUgb3BlcmF0ZXMgaGVscHMgc2VwYXJhdGUgbWFya2V0aW5nIGh5cGUgZnJvbSBhY3R1YWwgY2FwYWJpbGl0eS48L3A+CjxwPkFub3RoZXIgaW1wb3J0YW50IGVsZW1lbnQgaXMgPHN0cm9uZz5yYW5nZS1iYXNlZCB0aGlua2luZzwvc3Ryb25nPi4gSW5zdGVhZCBvZiBldmFsdWF0aW5nIGhhbmRzIGluIGlzb2xhdGlvbiwgdGhlIGJvdCBjb25zaWRlcnMgZW50aXJlIHJhbmdlcyBvZiBwb3NzaWJsZSBoYW5kcyBib3RoIGl0cyBvd24gYW5kIGl0cyBvcHBvbmVudHPigJkuIFRoaXMgYWxsb3dzIGl0IHRvIG1ha2UgbW9yZSBudWFuY2VkIGRlY2lzaW9ucywgZXNwZWNpYWxseSBpbiBjb21wbGV4IHBvc3QtZmxvcCBzY2VuYXJpb3Mgd2hlcmUgbWFueSB2YXJpYWJsZXMgY29tZSBpbnRvIHBsYXkuPC9wPgo8cD5UaGVyZeKAmXMgYWxzbyBhbiBlbGVtZW50IG9mIDxzdHJvbmc+dGltaW5nIHJhbmRvbWl6YXRpb248L3N0cm9uZz4sIHdoaWNoIHBsYXlzIGEgc3VidGxlIGJ1dCBpbXBvcnRhbnQgcm9sZS4gSHVtYW4gcGxheWVycyBkb27igJl0IGFjdCBpbnN0YW50bHkgZXZlcnkgdGltZSB0aGV5IGhlc2l0YXRlLCB0aGluaywgYW5kIHNvbWV0aW1lcyBldmVuIG1pc2NsaWNrLiBUaGUgYm90IG1pbWljcyB0aGlzIGJ5IGludHJvZHVjaW5nIHNsaWdodCBkZWxheXMgYW5kIHZhcmlhYmlsaXR5IGluIGl0cyBhY3Rpb25zLiBUaGlzIGRvZXNu4oCZdCBpbXByb3ZlIGRlY2lzaW9uIHF1YWxpdHksIGJ1dCBpdCBkb2VzIG1ha2UgYmVoYXZpb3IgYXBwZWFyIG1vcmUgaHVtYW4sIHdoaWNoIHRpZXMgaW50byBkZXRlY3Rpb24gYXZvaWRhbmNlLjwvcD4KPHA+U28sIGRvZXMgaXQgdHJ1bHkg4oCcbGVhcm7igJ0gbGlrZSBhIGh1bWFuPyBOb3QgcXVpdGUuIEJ1dCB3aXRoaW4gdGhlIHNjb3BlIG9mIGEgc2luZ2xlIHNlc3Npb24gb3Igc2hvcnQtdGVybSBwbGF5LCBpdHMgYWJpbGl0eSB0byBhZGp1c3QgaXMgc29saWQgYW5kIGluIG1hbnkgY2FzZXMsIG1vcmUgY29uc2lzdGVudCB0aGFuIHRoZSBhdmVyYWdlIHBsYXllci48L3A+CmNsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudGRyb3BDYXBwbGFjZWhvbGRlcmlubmVyQmxvY2tzYWx0Y2FwdGlvbmFtcExpZ2h0Ym94aWRsaW5rdXJsc2l6ZVNsdWdsaW5rRGVzdGluYXRpb24gY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50ZHJvcENhcHBsYWNlaG9sZGVyaW5uZXJCbG9ja3NhbHRjYXB0aW9uYW1wTGlnaHRib3hpZGxpbmt1cmxzaXplU2x1Z2xpbmtEZXN0aW5hdGlvbjwhLS0gd3A6aW1hZ2UgeyJpZCI6MTk0Miwic2l6ZVNsdWciOiJmdWxsIiwibGlua0Rlc3RpbmF0aW9uIjoibm9uZSJ9IC0tPgo8ZmlndXJlIGNsYXNzPSJ3cC1ibG9jay1pbWFnZSBzaXplLWZ1bGwiPjxpbWcgc3JjPSJodHRwczovL2FzLW5hcy5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDQvaW1hZ2UtODctMTAyNHg1NzYtMS53ZWJwIiBhbHQ9IjNVcEdhbWluZyBQb2tlciBCb3QgUmV2aWV3IDIwMjYiIGNsYXNzPSJ3cC1pbWFnZS0xOTQyIi8+PC9maWd1cmU+CjwhLS0gL3dwOmltYWdlIC0tPgoKPHA+QXQgaXRzIGNvcmUsIHRoZSA8c3Ryb25nPjNVcEdhbWluZyBQb2tlciBCb3Q8L3N0cm9uZz4gcG9zaXRpb25zIGl0c2VsZiBhcyBhIG5leHQtZ2VuZXJhdGlvbiBBSS1kcml2ZW4gcG9rZXIgYXNzaXN0YW50IGRlc2lnbmVkIHRvIGF1dG9tYXRlIGdhbWVwbGF5IHdoaWxlIG1haW50YWluaW5nIGEgaHVtYW4tbGlrZSBhcHByb2FjaC4gVW5saWtlIG9sZGVyIGJvdHMgdGhhdCByZWxpZWQgb24gc3RhdGljIGRlY2lzaW9uIHRyZWVzIG9yIHJpZ2lkIHNjcmlwdHMsIDNVcEdhbWluZyBjbGFpbXMgdG8gbGV2ZXJhZ2UgYWRhcHRpdmUgYWxnb3JpdGhtcyB0aGF0IGV2b2x2ZSBiYXNlZCBvbiBpbi1nYW1lIGR5bmFtaWNzLiBUaGF04oCZcyBhIGJvbGQgY2xhaW0gYW5kIG9uZSB0aGF0IGRlc2VydmVzIGEgY2xvc2VyIGxvb2suPC9wPgo8IS0tIHdwOmltYWdlIHsiaWQiOjE5NDMsInNpemVTbHVnIjoiZnVsbCIsImxpbmtEZXN0aW5hdGlvbiI6Im5vbmUifSAtLT4KPGZpZ3VyZSBjbGFzcz0id3AtYmxvY2staW1hZ2Ugc2l6ZS1mdWxsIj48aW1nIHNyYz0iaHR0cHM6Ly9hcy1uYXMuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA0L2ltYWdlLTg5LTEwMjR4NTc2LTEud2VicCIgYWx0PSIzVXBHYW1pbmcgUG9rZXIgQm90IFJldmlldyAyMDI2IiBjbGFzcz0id3AtaW1hZ2UtMTk0MyIvPjwvZmlndXJlPgo8IS0tIC93cDppbWFnZSAtLT4KCgUHCARBAJgIoAVBAqoFugSECL4EBQcIBAgGCAUIBwgHCAYIDggOCAsIBkgBBggEKgkUGA8YCAoIBAgGmwEIBwQKBzYFCwgHBAoHLwULCAcECgeSBqsBB0sACAcECgeBAgEbsgUHSwAIBwQKB4UGB0sACAcECgeBBgdLAAgHBAoHNgULCAcECgcPsQYHSwAIBwQKB5MHB0sACAcECgenBgdLAAgHBAoHpwG0AgdLAAgHBAoHqgEOlAQHSwAIBwQKBy0FCwgHBAoHJwULCAcECgexBSQHSwAIBwQKB4wHB0sACAcECgeWBh4HSwAIBwQKB4IGB0sACAcECgelBAdLAAgHBAoHnAI4B0sACAcECgcuBQsIBwQKB50GB0sACAcECgeMBgdLAAgHBAoHjwUHSwAIBwQKB44EB0sACAcECgenBAdLAAgHBAoHpgQHSwAIBwQKRwBLAC4FCAcECgcyBQsIBwQKB4kFgAMHSwAIBwQKB5sIB0sACAcECgeCA58BB0sACAcECgefAp4CB0sACAcECgeeBAdLAAgHBAoHiAUHSwAIBwQKByoFCwgHBAoHmAIBvwIHSwAIBwQKB4QFB0sACAcECgeQBQdLAAgHBAoHlwK8AwdLAAgHBAoHowUHSwAIBwQKB7oEB0sACAcECgeOAjsHSwAIBwQKBzIFCwgHBAoHJAULCAcECge+BAdLAAgHBAoHOS62BAdLAAgHBAoHhQUnB0sACAcECgeSBQdLAAgHBAoHiwQHSwAIBwQKB54EB0sACAcECgcrBQsIBwQKB6MEB0sACAcECgeWBQdLAAgHBAoHkwYHSwAIBwQKB4gFNQdLAAgHBAoHoQQHSwAIBwQKB5IDKwdLAAgHBApHAEsAoQQurxCUEC6SApYCsAiBDZIrvwkugw6uDLcMGIYKLr0lhQYYVgAvBQgHBAoHJwULCAcECgeqAa8EB0sACAcECgeIBgdLAAgHBAoHgwYHSwAIBwQKB5YGB0sACAcECgeQBQdLAAgHBAoHrAKJAQdLAAgHBAoHJgULCAcECgezBCIHSwAIBwQKB70FB0sACAcECgeBBQdLAAgHBAoHjwUHSwAIBwQKB4wFB0sACAcECge7AoEBB0sACAcECgcvBQsIBwQKBycFCwgHBAoHpgMOB0sACAcECgeRAgGQAwdLAAgHBAoHiAUHSwAIBwQKB64FB0sACAcECgeUAZEDB0sACAcECgehBA4HSwAIBwQKByMFCwgHBAoHlgUHSwAIBwQKB7YDB0sACAcECgeYBQdLAAgHBAoHOaMEB0sACAcECgeHAwdLAAgHBAoHtwMBOgdLALwDtxutAp8ZlAKWAi6QDS6wE6sECAcECkcASwAvBQgHBAoHIQULCAcECgeCAgG5BQdLAAgHBAoHpwYHSwAIBwQKB7gFB0sACAcECgepBQdLAAgHBAoHrwOCAQdLAAgHBAoHKQULCAcECgeXAaQDB0sACAcECgeoBgdLAAgHBAoHtAYHSwAIBwQKB4YDIAGOAQdLAAgHBAoHogUHSwAIBwQKB78EB0sACAcECgctBQsIBwQKByQFCwgHBAoHiAUHSwAIBwQKB7YGB0sACAcECgeUBQdLAAgHBAoHlwQHSwAIBwQKB4EFB0sACAcECgcqBQsIBwQKB4cGB0sACAcECgeKBQdLAAgHBAoHhgUHSwAIBwQKB5UFB0sACAcECgepBAdLAAgHBAoHtQMHSwAIBwQKRwBLABsFCAcECgevCAdLAAgHBAoHiAcHSwAIBwQKB5wGB0sACAcECgefBQdLAAgHBAoHiwcHSwAIBwQKRwALCAcECgcVBQsIBwQKBz4FCwgHBAoHrwIHSwAIBwQKBz8FCwgHBAoHmAIHSwAIBwQKB4UBBQsIBwQKB64CB0sACAcECgeFAQULCAcECgesAgdLAAgHBAoHLwULCAcECgeUAgdLAEEFpwa1BYYEoga+A7gEpASYFbACtg+BnQFBA4YIpASWBqoEBQcFB0EAnQNBBoYGngWFBL0DrgSlBboEhAVBBYkHvQaSCIYFnAaSAwgHBApHAEsAAwcLAgQDCA8BCAcECkcASwADBwsCBAMID58EngafBAwBDwAFAQIAnwkBAQCjBEIBAQBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQAAAkEAAAJfQVUHQaABB0FQhgiYCIkHpASWBp4GvQadA5IIqgSGBaAFnAaSA6kBpwa1BYYGhgQIQUoHQUqiBr4DngWFBL0DqgWuBLgEpQW6BEFJB0GYAYQIugSEBb4EQQO+BJgIQSMCEQB9AXcTMjAyNi0wNC0xNVQxODoyMDo0MXdaM3VwZ2FtaW5nLXBva2VyLWJvdC1yZXZpZXctMjAyNi1ob3ctdGhpcy1haS1wb2tlci1ib3QtYWN0dWFsbHktcGVyZm9ybXMtaW4tcmVhbC1jb25kaXRpb25ze0J52fn9O6AAe0HnuWO14AAAygwAfQN3BG9wZW53BG9wZW55dwB3CHN0YW5kYXJkeXcAdwB3AHcAfnckZDA1ODBkNDUtNTkyNC00YmUwLWI5Y2QtYjliNDJkZTllNWVheHcMY29yZS9oZWFkaW5nfQJ3JDhjN2U2NDg1LTU4ZjEtNGU0Mi04OTZiLWMwM2FjZTVkM2QzY3h3DGNvcmUvaGVhZGluZ30DdyRhMDg4M2MwOS1jNWQzLTRmNDEtOGFhYS01ODJlMGQ4NzJhYWR4dw5jb3JlL3BhcmFncmFwaHl3MFR5cGUgLyB0byBjaG9vc2UgYSBibG9jayBvciAvLyB0byB1c2UgQ29udGVudCBBSXckNDFjNWJhZmUtZWEzMC00MjJiLTgxMGQtMjgzOTZhZDE1ZWY5eHcOY29yZS9wYXJhZ3JhcGh5dzBUeXBlIC8gdG8gY2hvb3NlIGEgYmxvY2sgb3IgLy8gdG8gdXNlIENvbnRlbnQgQUl3JDZjODk1N2MxLTRlOTItNGNjOS1hMjcwLTBkMzY5Y2MzZGUyOHh3DmNvcmUvcGFyYWdyYXBoeXcwVHlwZSAvIHRvIGNob29zZSBhIGJsb2NrIG9yIC8vIHRvIHVzZSBDb250ZW50IEFJdyQzNDhjMTUyYi0wYTM2LTRkNTUtYjkyYi1lZTcxYWFlMWI0YWZ4dw5jb3JlL3BhcmFncmFwaHl3MFR5cGUgLyB0byBjaG9vc2UgYSBibG9jayBvciAvLyB0byB1c2UgQ29udGVudCBBSXckM2I5ZTE0ZWEtMTFjZC00NzA1LTk4ZmYtYTIzZWQyYTBlYjQyeHcMY29yZS9oZWFkaW5nfQN3JGVmMzUyY2RjLTZkYjUtNDFkYy04NzliLTUyNzIzMmU5NmFkMnh3DmNvcmUvcGFyYWdyYXBoeXcwVHlwZSAvIHRvIGNob29zZSBhIGJsb2NrIG9yIC8vIHRvIHVzZSBDb250ZW50IEFJdyQzNTJjZmI5OS02MWUzLTRlZWItYTNjNS1jZDk3ZDAyNTliMTJ4dw5jb3JlL3BhcmFncmFwaHl3MFR5cGUgLyB0byBjaG9vc2UgYSBibG9jayBvciAvLyB0byB1c2UgQ29udGVudCBBSXckYTAwMmQzZjItNzgxMC00MWJhLTg0YjUtYzE3ODkyOGVkODVieHcOY29yZS9wYXJhZ3JhcGh5dzBUeXBlIC8gdG8gY2hvb3NlIGEgYmxvY2sgb3IgLy8gdG8gdXNlIENvbnRlbnQgQUl3JGJlMWY1ZGNjLTg5YTAtNDA2MS1hMDczLTFkYmU4NjhkM2RiYnh3DmNvcmUvcGFyYWdyYXBoeXcwVHlwZSAvIHRvIGNob29zZSBhIGJsb2NrIG9yIC8vIHRvIHVzZSBDb250ZW50IEFJdyQzMmVhZWE0YS05ZGRkLTRkYWYtODM2Ny0xNjk2NWNhOWNkNmN4dw5jb3JlL3BhcmFncmFwaHl3MFR5cGUgLyB0byBjaG9vc2UgYSBibG9jayBvciAvLyB0byB1c2UgQ29udGVudCBBSXckMjk4MzdiOGQtM2Q3NC00Njc0LWFiMWItM2UzZjY4ZGY2NDUyeHcMY29yZS9oZWFkaW5nfQJ3JGJkYmE2MzQ5LWIzNzYtNDY5Mi1iM2VkLTI0MmJkMDZkZDg2MHh3DGNvcmUvaGVhZGluZ30DdyQzMzUyM2M2ZC04YTIwLTQ0M2YtYTI2Zi02N2I1YjEyM2JmZWF4dw5jb3JlL3BhcmFncmFwaHl3MFR5cGUgLyB0byBjaG9vc2UgYSBibG9jayBvciAvLyB0byB1c2UgQ29udGVudCBBSXckYzdjY2UwYmEtNDU3Mi00NDU1LWFlN2QtMjg4ZDY5MWI5ZDMzeHcOY29yZS9wYXJhZ3JhcGh5dzBUeXBlIC8gdG8gY2hvb3NlIGEgYmxvY2sgb3IgLy8gdG8gdXNlIENvbnRlbnQgQUl3JDg4NzFhODZhLWY3YjctNDUyZi05MmY5LTU3ZmJkNGE2YjQ5N3h3DmNvcmUvcGFyYWdyYXBoeXcwVHlwZSAvIHRvIGNob29zZSBhIGJsb2NrIG9yIC8vIHRvIHVzZSBDb250ZW50IEFJdyQzMzVjOTRjMS0yMDIyLTQzY2QtYWE5ZS01OTU5MzE2YzI2MDN4dw5jb3JlL3BhcmFncmFwaHl3MFR5cGUgLyB0byBjaG9vc2UgYSBibG9jayBvciAvLyB0byB1c2UgQ29udGVudCBBSXckMmMyY2IwNmMtMmU5Mi00M2UxLWEzNjYtYTJmY2IwODIxZjRmeHcOY29yZS9wYXJhZ3JhcGh5dzBUeXBlIC8gdG8gY2hvb3NlIGEgYmxvY2sgb3IgLy8gdG8gdXNlIENvbnRlbnQgQUl3JDY3MjNhY2U5LTJiNDgtNDkxZS04YjM0LWVjZmU2ZDViOGExOXh3DmNvcmUvcGFyYWdyYXBoeXcwVHlwZSAvIHRvIGNob29zZSBhIGJsb2NrIG9yIC8vIHRvIHVzZSBDb250ZW50IEFJdyQ4ZDExODhjYi0xYTQ4LTQ1NzEtOGNlNy1kMzllNWE5NjNmNzd4dwxjb3JlL2hlYWRpbmd9A3ckNjVkZTY2NjAtZWJjZi00YjViLWI3NTgtZDE0ODhlYmNkZmZkeHcOY29yZS9wYXJhZ3JhcGh5dzBUeXBlIC8gdG8gY2hvb3NlIGEgYmxvY2sgb3IgLy8gdG8gdXNlIENvbnRlbnQgQUl3JGUxMTg2MTg1LWExNmQtNDExZS1hZThiLTcxN2YyMzljM2JlNnh3DmNvcmUvcGFyYWdyYXBoeXcwVHlwZSAvIHRvIGNob29zZSBhIGJsb2NrIG9yIC8vIHRvIHVzZSBDb250ZW50IEFJdyRiODIwZjUxYy1lYWVmLTQ0YjYtYjA1My02MWIxNGYyZWUwZjJ4dw5jb3JlL3BhcmFncmFwaHl3MFR5cGUgLyB0byBjaG9vc2UgYSBibG9jayBvciAvLyB0byB1c2UgQ29udGVudCBBSXckNTNiNzMxYjMtYjUzNy00OWE4LTg1YWYtODRlNjQwMDM1MDRieHcOY29yZS9wYXJhZ3JhcGh5dzBUeXBlIC8gdG8gY2hvb3NlIGEgYmxvY2sgb3IgLy8gdG8gdXNlIENvbnRlbnQgQUl3JDhmNzMwOTIwLWFlMjYtNDhlMy04ZmZiLWM0ZWVmZjBjNWQwY3h3DmNvcmUvcGFyYWdyYXBoeXcwVHlwZSAvIHRvIGNob29zZSBhIGJsb2NrIG9yIC8vIHRvIHVzZSBDb250ZW50IEFJdyRhNDNjYWE0NC1mZDk5LTQ2ZWQtODAzMC02NzNjODFlOTkwNzN4dw5jb3JlL3BhcmFncmFwaHl3MFR5cGUgLyB0byBjaG9vc2UgYSBibG9jayBvciAvLyB0byB1c2UgQ29udGVudCBBSXh3JGY4Mzk4NDMwLWRkNzQtNGMwMy04ZjE2LWFlMDRiZTU0MDM5M3cMY29yZS9oZWFkaW5nfQJ3JDQ2MDA5YWU4LTcwOGEtNDE5Zi04OWRhLTA0ZmUwMjY0ZDFkNnh3DGNvcmUvaGVhZGluZ30DdyRjZjBlNGU3NS01MTgyLTRmYWUtYTBmNC1lY2NjMWM1ZmFhMDV4dw5jb3JlL3BhcmFncmFwaHl3MFR5cGUgLyB0byBjaG9vc2UgYSBibG9jayBvciAvLyB0byB1c2UgQ29udGVudCBBSXckMWM0NjQ2ZDgtZDQwNy00MGJlLTk4NGMtMjk4YThiYzhkYTA4eHcOY29yZS9wYXJhZ3JhcGh5dzBUeXBlIC8gdG8gY2hvb3NlIGEgYmxvY2sgb3IgLy8gdG8gdXNlIENvbnRlbnQgQUl3JGZmNDhkOWU1LTczNTEtNDJjMi1hNDBlLWNkYTJiMjcwYThmOHh3DmNvcmUvcGFyYWdyYXBoeXcwVHlwZSAvIHRvIGNob29zZSBhIGJsb2NrIG9yIC8vIHRvIHVzZSBDb250ZW50IEFJdyQzYjM5MDFmNi1lMDM4LTQyMmItOWFkMS0zNjdkYzA5YmQwNzZ4dw5jb3JlL3BhcmFncmFwaHl3MFR5cGUgLyB0byBjaG9vc2UgYSBibG9jayBvciAvLyB0byB1c2UgQ29udGVudCBBSXckMzIzZWEyYTItNzQzZC00ZjNlLWEzMmQtOWQxMzQ4ZDc1NTRmeHcOY29yZS9wYXJhZ3JhcGh5dzBUeXBlIC8gdG8gY2hvb3NlIGEgYmxvY2sgb3IgLy8gdG8gdXNlIENvbnRlbnQgQUl3JDlmOTU2NzdlLTZiNTEtNDFiYi04NTZlLTIxODM4ZmQ0ZDU2Y3h3DmNvcmUvcGFyYWdyYXBoeXcwVHlwZSAvIHRvIGNob29zZSBhIGJsb2NrIG9yIC8vIHRvIHVzZSBDb250ZW50IEFJdyRjNThlNTFlZi05MGRhLTQ4NTMtYTE2MC0yZmVmMzY3MWM5NjF4dwxjb3JlL2hlYWRpbmd9A3ckMzg4ZDVlZTYtY2NjOS00MWUwLTkyNjUtOTgyYTM2ZTdhOGYyeHcOY29yZS9wYXJhZ3JhcGh5dzBUeXBlIC8gdG8gY2hvb3NlIGEgYmxvY2sgb3IgLy8gdG8gdXNlIENvbnRlbnQgQUl3JDE1NmVhMTdiLTkxMGItNDU1NS05YTQ5LWM5ZTU4MmUxMDdhNXh3DmNvcmUvcGFyYWdyYXBoeXcwVHlwZSAvIHRvIGNob29zZSBhIGJsb2NrIG9yIC8vIHRvIHVzZSBDb250ZW50IEFJdyRhYTFjNzNhNS00NGVlLTQ2MjgtYjQ3Mi04YzdkN2Y1YzhlMzN4dw5jb3JlL3BhcmFncmFwaHl3MFR5cGUgLyB0byBjaG9vc2UgYSBibG9jayBvciAvLyB0byB1c2UgQ29udGVudCBBSXckODQ1MTEwYzQtYWZhMC00ZGI3LWIwYTgtOWFmMjdjN2MyOTg1eHcOY29yZS9wYXJhZ3JhcGh5dzBUeXBlIC8gdG8gY2hvb3NlIGEgYmxvY2sgb3IgLy8gdG8gdXNlIENvbnRlbnQgQUl3JGM0MGNjNDViLTVlNDQtNDNiMC05Y2E3LTdhNjRmYTdkODYwZHh3DmNvcmUvcGFyYWdyYXBoeXcwVHlwZSAvIHRvIGNob29zZSBhIGJsb2NrIG9yIC8vIHRvIHVzZSBDb250ZW50IEFJdyRiYTkxOWExYi03NWM2LTQ5Y2ItOGI1MS0wNDliM2IzZDA4YjV4dw5jb3JlL3BhcmFncmFwaHl3MFR5cGUgLyB0byBjaG9vc2UgYSBibG9jayBvciAvLyB0byB1c2UgQ29udGVudCBBSXckMGMzNjZhNjAtNjViNS00NDAwLTgwMmItZDI5YjIxOTA1NTU1eHcOY29yZS9wYXJhZ3JhcGh5dzBUeXBlIC8gdG8gY2hvb3NlIGEgYmxvY2sgb3IgLy8gdG8gdXNlIENvbnRlbnQgQUl3JDYxMWNkYWE1LTlkOGUtNGQwZS1hMzMzLWM1NTgyNTU2MDg2Ynh3DGNvcmUvaGVhZGluZ30CdyQ0Y2YzZTU3YS1mZWQ1LTRmOWMtYjliNy05MzNhY2VmNTA0NTl4dwxjb3JlL2hlYWRpbmd9A3ckMTQ2YzU2ZjItZGYxOC00YWJkLTlhMWItMWZjNWVjZmZkNjlleHcOY29yZS9wYXJhZ3JhcGh5dzBUeXBlIC8gdG8gY2hvb3NlIGEgYmxvY2sgb3IgLy8gdG8gdXNlIENvbnRlbnQgQUl3JDM3ODBlMzNkLWRkMjctNDcwMy04MDk4LTM0Zjk4YTk2ZDlmZHh3DmNvcmUvcGFyYWdyYXBoeXcwVHlwZSAvIHRvIGNob29zZSBhIGJsb2NrIG9yIC8vIHRvIHVzZSBDb250ZW50IEFJdyQzNDM4M2EzNS03MzcyLTRkODYtYjVlZi1kOTUwY2NkYjZhZjl4dw5jb3JlL3BhcmFncmFwaHl3MFR5cGUgLyB0byBjaG9vc2UgYSBibG9jayBvciAvLyB0byB1c2UgQ29udGVudCBBSXckOTc4NTZkODktMWIzOC00NGJlLWE5MjUtZmViMjMxNzQyYTE0eHcOY29yZS9wYXJhZ3JhcGh5dzBUeXBlIC8gdG8gY2hvb3NlIGEgYmxvY2sgb3IgLy8gdG8gdXNlIENvbnRlbnQgQUl3JDIyMGI0ZDU4LTdkZTMtNDlhYS1iNDJkLWYyZTRiZWQ0M2VmN3h3DmNvcmUvcGFyYWdyYXBoeXcwVHlwZSAvIHRvIGNob29zZSBhIGJsb2NrIG9yIC8vIHRvIHVzZSBDb250ZW50IEFJdyQ0YmYyOGI1NC1jNWExLTRlNmEtYTcxMC1lZDIxNzk5YzE5NTl4dw5jb3JlL3BhcmFncmFwaHl3MFR5cGUgLyB0byBjaG9vc2UgYSBibG9jayBvciAvLyB0byB1c2UgQ29udGVudCBBSXckNDhmMmVhNWItZmM2ZS00YjUzLWIxYmQtN2RmMDFmZTA4ODcyeHcMY29yZS9oZWFkaW5nfQN3JGQ0ZmU5YTg2LWM4ZjMtNDcxYS1iNzZlLTBhMzgyZTkyODNiNXh3DmNvcmUvcGFyYWdyYXBoeXcwVHlwZSAvIHRvIGNob29zZSBhIGJsb2NrIG9yIC8vIHRvIHVzZSBDb250ZW50IEFJdyQ1YjE1MzczNy1hZmQ5LTRmOTUtYmIwMC0zMjZmNDdlNGE3NTl4dw5jb3JlL3BhcmFncmFwaHl3MFR5cGUgLyB0byBjaG9vc2UgYSBibG9jayBvciAvLyB0byB1c2UgQ29udGVudCBBSXckY2ZmMDhiN2EtNmNmMy00MGExLWIyYzgtNTYxODUxNDE1N2U5eHcOY29yZS9wYXJhZ3JhcGh5dzBUeXBlIC8gdG8gY2hvb3NlIGEgYmxvY2sgb3IgLy8gdG8gdXNlIENvbnRlbnQgQUl3JGM4YTQwYzlmLWIxODUtNDM0Yy05ODQzLTBiYWRmMDIxNzA1M3h3DmNvcmUvcGFyYWdyYXBoeXcwVHlwZSAvIHRvIGNob29zZSBhIGJsb2NrIG9yIC8vIHRvIHVzZSBDb250ZW50IEFJdyQxOWNiNGNhZi0yNWM4LTQxNDgtYmNhNy0yN2Q4NzUwNzQ0YmF4dw5jb3JlL3BhcmFncmFwaHl3MFR5cGUgLyB0byBjaG9vc2UgYSBibG9jayBvciAvLyB0byB1c2UgQ29udGVudCBBSXckMzUxYWQ3OTYtMjIzZC00OWE1LWIzNmUtNGQ0YzJhMWExNTdjeHcOY29yZS9wYXJhZ3JhcGh5dzBUeXBlIC8gdG8gY2hvb3NlIGEgYmxvY2sgb3IgLy8gdG8gdXNlIENvbnRlbnQgQUl4dyQyZThmNjMxOC0wNTI4LTQzZTItOGM4YS1iZjk0NDM4NmQ3YzR3DGNvcmUvaGVhZGluZ30CdyQwOGE2YTUwOC04Y2I2LTRjYjQtYmE0NS02ODRiNGMzYTE4M2Z4dwxjb3JlL2hlYWRpbmd9A3ckNTJkZjFlZWEtZTRhYy00ODAyLWE1MjYtYTMyMDlkZWNkMDI3eHcOY29yZS9wYXJhZ3JhcGh5dzBUeXBlIC8gdG8gY2hvb3NlIGEgYmxvY2sgb3IgLy8gdG8gdXNlIENvbnRlbnQgQUl3JDE4Mzk4MzZjLTA5MTYtNDFmMy1hNDYwLTdjYWMyM2M3ZTI4ZXh3DmNvcmUvcGFyYWdyYXBoeXcwVHlwZSAvIHRvIGNob29zZSBhIGJsb2NrIG9yIC8vIHRvIHVzZSBDb250ZW50IEFJdyQ1ODFlY2E3OS1jNzdhLTQwZjctOTQxNy1mMGJmOWVlMmY2Yzh4dw5jb3JlL3BhcmFncmFwaHl3MFR5cGUgLyB0byBjaG9vc2UgYSBibG9jayBvciAvLyB0byB1c2UgQ29udGVudCBBSXckMmEzYjM3MWMtZGMwOS00OGZkLWFiZTYtMzQ1MThlNGU0YzZkeHcOY29yZS9wYXJhZ3JhcGh5dzBUeXBlIC8gdG8gY2hvb3NlIGEgYmxvY2sgb3IgLy8gdG8gdXNlIENvbnRlbnQgQUl3JGIzNmIxODkyLTEzMjgtNDQ2YS1iNTY5LWJmZDgwYmZjNTY4Znh3DmNvcmUvcGFyYWdyYXBoeXcwVHlwZSAvIHRvIGNob29zZSBhIGJsb2NrIG9yIC8vIHRvIHVzZSBDb250ZW50IEFJdyRhZmM4MzFhMC00MDU1LTRhYjYtYmFhYS1lNmE0Y2YwZDBkZTR4dw5jb3JlL3BhcmFncmFwaHl3MFR5cGUgLyB0byBjaG9vc2UgYSBibG9jayBvciAvLyB0byB1c2UgQ29udGVudCBBSXckMWIwMTBjMWQtZDIxNi00Yzc4LTgwNGEtMWVlNGNiOTM0ZmNjeHcMY29yZS9oZWFkaW5nfQN3JDE0NTFiNmQ2LTRhNDUtNDY0ZC1hMzk0LTVkY2UzNGY0Y2I1Mnh3DmNvcmUvcGFyYWdyYXBoeXcwVHlwZSAvIHRvIGNob29zZSBhIGJsb2NrIG9yIC8vIHRvIHVzZSBDb250ZW50IEFJdyQzZjA2NjMyNS02NWJiLTQwYWQtOGRmMS1hYzYwNGEyMDNkNDJ4dw5jb3JlL3BhcmFncmFwaHl3MFR5cGUgLyB0byBjaG9vc2UgYSBibG9jayBvciAvLyB0byB1c2UgQ29udGVudCBBSXckMmU1ZTc2MGItZTExNC00YWQ5LWExNmEtOTFkMDIxN2YzMmJleHcOY29yZS9wYXJhZ3JhcGh5dzBUeXBlIC8gdG8gY2hvb3NlIGEgYmxvY2sgb3IgLy8gdG8gdXNlIENvbnRlbnQgQUl3JDU1NWI5MmQ2LTYzNzMtNDJiZS1iYmFhLWM2NGE0MjQ4YzE0Znh3DmNvcmUvcGFyYWdyYXBoeXcwVHlwZSAvIHRvIGNob29zZSBhIGJsb2NrIG9yIC8vIHRvIHVzZSBDb250ZW50IEFJdyRmYzNlNjU2YS1iMGVkLTQxYTgtYmY3ZC04YzE1YjUzYTIyMGJ4dw5jb3JlL3BhcmFncmFwaHl3MFR5cGUgLyB0byBjaG9vc2UgYSBibG9jayBvciAvLyB0byB1c2UgQ29udGVudCBBSXckODcyZWMyYzctYmNkMy00NmJhLTgxNDYtMDgxYjZlNjFhMDBmeHcOY29yZS9wYXJhZ3JhcGh5dzBUeXBlIC8gdG8gY2hvb3NlIGEgYmxvY2sgb3IgLy8gdG8gdXNlIENvbnRlbnQgQUl3JDk3MGZjYjYwLTYxMWYtNGE4Yy04ZmZmLTQyOWU5MjcyMjJlN3h3DGNvcmUvaGVhZGluZ30CdyRkNzBlOTY3Ni05Mzg5LTQzZGEtYjdmNC1iOTZiYWJlYTA0NTJ4dwxjb3JlL2hlYWRpbmd9A3ckYjMwOGVhZjItNTQ5MS00YzM3LTkyNmItZmRmNTgyZDM1MDZjeHcOY29yZS9wYXJhZ3JhcGh5dzBUeXBlIC8gdG8gY2hvb3NlIGEgYmxvY2sgb3IgLy8gdG8gdXNlIENvbnRlbnQgQUl3JDQ5MTYzMzM3LTI3ZjgtNDFmNi04MjUxLTUwZTliODZlYzc3Ynh3DmNvcmUvcGFyYWdyYXBoeXcwVHlwZSAvIHRvIGNob29zZSBhIGJsb2NrIG9yIC8vIHRvIHVzZSBDb250ZW50IEFJdyQ5NjJiNzJlZS05OTU1LTRhODYtYjBjMS1iYzljNzViNmZjMDF4dw5jb3JlL3BhcmFncmFwaHl3MFR5cGUgLyB0byBjaG9vc2UgYSBibG9jayBvciAvLyB0byB1c2UgQ29udGVudCBBSXckYjczNzhhM2EtMmQ4Ni00MTczLWI1ODMtM2Q1Y2MyODVkZjQ4eHcOY29yZS9wYXJhZ3JhcGh5dzBUeXBlIC8gdG8gY2hvb3NlIGEgYmxvY2sgb3IgLy8gdG8gdXNlIENvbnRlbnQgQUl3JDI2ZmM2YjEzLWIxZTAtNDE5Ny04MDdkLTY4Y2MxZjIwODc4NHh3DmNvcmUvcGFyYWdyYXBoeXcwVHlwZSAvIHRvIGNob29zZSBhIGJsb2NrIG9yIC8vIHRvIHVzZSBDb250ZW50IEFJdyRkOTllOWM4MC1lNDhkLTRkYTctYjY5Yi03OWI5NzVlMTkxZmR4dw5jb3JlL3BhcmFncmFwaHl3MFR5cGUgLyB0byBjaG9vc2UgYSBibG9jayBvciAvLyB0byB1c2UgQ29udGVudCBBSXckNDU1ZjlmM2EtYzZlYy00ZDVkLWEwNTYtYWVmZTk0YTM0YzhmeHcMY29yZS9oZWFkaW5nfQN3JGNiYzcwYTY4LWNjNzAtNGU1Yy05MjU3LTYzYThhNDI5MjhhN3h3DmNvcmUvcGFyYWdyYXBoeXcwVHlwZSAvIHRvIGNob29zZSBhIGJsb2NrIG9yIC8vIHRvIHVzZSBDb250ZW50IEFJdyRhZDZjN2QwMi0zYTViLTQzNGYtOGE5My0xY2UxZjIwNTFiZDN4dw5jb3JlL3BhcmFncmFwaHl3MFR5cGUgLyB0byBjaG9vc2UgYSBibG9jayBvciAvLyB0byB1c2UgQ29udGVudCBBSXckMTY1NThkYzctMjZjMC00M2E1LWIzZTgtNjQ1NTgyZDNjOTlleHcOY29yZS9wYXJhZ3JhcGh5dzBUeXBlIC8gdG8gY2hvb3NlIGEgYmxvY2sgb3IgLy8gdG8gdXNlIENvbnRlbnQgQUl3JDVmODIzYTJhLWI4YmItNDM3Zi04MzE5LTM5NDgwMTU5NzViZXh3DmNvcmUvcGFyYWdyYXBoeXcwVHlwZSAvIHRvIGNob29zZSBhIGJsb2NrIG9yIC8vIHRvIHVzZSBDb250ZW50IEFJdyRlODVkZDU5Mi1lMjdhLTRkNWItOGNjYy02MGMyMzlkNTJiMzl4dw5jb3JlL3BhcmFncmFwaHl3MFR5cGUgLyB0byBjaG9vc2UgYSBibG9jayBvciAvLyB0byB1c2UgQ29udGVudCBBSXckNThiY2M3ZDMtZmQ1ZC00MTZkLTgyZWUtODVmMDdjM2MwNmEweHcOY29yZS9wYXJhZ3JhcGh5dzBUeXBlIC8gdG8gY2hvb3NlIGEgYmxvY2sgb3IgLy8gdG8gdXNlIENvbnRlbnQgQUl4dyQ2YWE5YzgyOS01N2I0LTQ4OWEtYTNhZC1hYzg3NjQ3MTVkZDd3DGNvcmUvaGVhZGluZ30CdyQ3YzYxNjM0OC0yZjZiLTQ5NzEtYjMzNy04YThkM2JiYzc4Njl4dwxjb3JlL2hlYWRpbmd9A3ckMGRlNWUyN2EtN2M0Yi00OWVjLTk3ZGQtZGQyNmYyNzRlNGNheHcOY29yZS9wYXJhZ3JhcGh5dzBUeXBlIC8gdG8gY2hvb3NlIGEgYmxvY2sgb3IgLy8gdG8gdXNlIENvbnRlbnQgQUl3JDlmNDM5OTc1LWFlNTYtNDdiMi05YzJlLThjZDEzZWQ4YzExNnh3DmNvcmUvcGFyYWdyYXBoeXcwVHlwZSAvIHRvIGNob29zZSBhIGJsb2NrIG9yIC8vIHRvIHVzZSBDb250ZW50IEFJdyQzMDM2ZThkMC03NjhkLTQ0OTEtYjMwYi05YWY2ZjkwM2QwYzB4dw5jb3JlL3BhcmFncmFwaHl3MFR5cGUgLyB0byBjaG9vc2UgYSBibG9jayBvciAvLyB0byB1c2UgQ29udGVudCBBSXckMzY2ZTllZDUtYjMzZi00ZDI5LWJkNzktNzZmNWY0ZDIwYmFieHcOY29yZS9wYXJhZ3JhcGh5dzBUeXBlIC8gdG8gY2hvb3NlIGEgYmxvY2sgb3IgLy8gdG8gdXNlIENvbnRlbnQgQUl3JDhmMzY5NDI5LWU2NGEtNGQwZC05Njg0LTM5MDU5NTA2MTE5MXh3DmNvcmUvcGFyYWdyYXBoeXcwVHlwZSAvIHRvIGNob29zZSBhIGJsb2NrIG9yIC8vIHRvIHVzZSBDb250ZW50IEFJdyQyMzk2NjZhMS02MTg5LTRhZTctYjc3MC1jOWM2ZDViMTE4ZWV4dwxjb3JlL2hlYWRpbmd9A3ckY2NkYzkzMTktZDQzYi00NmIxLWJlOTctZDIyZDE1YTI5M2NieHcOY29yZS9wYXJhZ3JhcGh5dzBUeXBlIC8gdG8gY2hvb3NlIGEgYmxvY2sgb3IgLy8gdG8gdXNlIENvbnRlbnQgQUl3JGY0ZjQzOTY2LTY1YTEtNGUwMy1hNTcwLWI4ZWNhMTgyZGY5ZHh3DmNvcmUvcGFyYWdyYXBoeXcwVHlwZSAvIHRvIGNob29zZSBhIGJsb2NrIG9yIC8vIHRvIHVzZSBDb250ZW50IEFJdyRiMjJhMDg1MC1lYTIxLTQ3ZWItYTljMS01MGJmZjQ1YzY2NzN4dw5jb3JlL3BhcmFncmFwaHl3MFR5cGUgLyB0byBjaG9vc2UgYSBibG9jayBvciAvLyB0byB1c2UgQ29udGVudCBBSXckMTU4ODM5YmYtNTE2Yi00YTU1LTkzMmMtNmViNjVjNGZiNWRkeHcOY29yZS9wYXJhZ3JhcGh5dzBUeXBlIC8gdG8gY2hvb3NlIGEgYmxvY2sgb3IgLy8gdG8gdXNlIENvbnRlbnQgQUl3JDkxYmQ0NzMwLTc5MWEtNDQ1OS04NjZiLTUwNDU0MTUwMjU2M3h3DmNvcmUvcGFyYWdyYXBoeXcwVHlwZSAvIHRvIGNob29zZSBhIGJsb2NrIG9yIC8vIHRvIHVzZSBDb250ZW50IEFJdyQ1NzI4ZGQ0NS0xZTA2LTQ4NzktOGRkNi1hNGMzZDJlZjczZDF4dw5jb3JlL3BhcmFncmFwaHl3MFR5cGUgLyB0byBjaG9vc2UgYSBibG9jayBvciAvLyB0byB1c2UgQ29udGVudCBBSXckM2NhM2RkZjMtZWRiMy00MDg0LTg1NjgtOTkyNDE3MzZjMzFjeHcMY29yZS9oZWFkaW5nfQJ3JDRkOGE2MzZmLWVkNjQtNDY4NC1iNmZiLWQ3NGMwZTM1NGFkY3h3DGNvcmUvaGVhZGluZ30DdyQyMjFmMWU3Zi04NmYwLTRmODYtYjEyZS00OWQ2MTc3ZDczMTB4dw5jb3JlL3BhcmFncmFwaHl3MFR5cGUgLyB0byBjaG9vc2UgYSBibG9jayBvciAvLyB0byB1c2UgQ29udGVudCBBSXckYzI4M2FjYTMtNzIzZi00ZTA3LTg2YTctZGFjZGJiOGQzNDFleHcOY29yZS9wYXJhZ3JhcGh5dzBUeXBlIC8gdG8gY2hvb3NlIGEgYmxvY2sgb3IgLy8gdG8gdXNlIENvbnRlbnQgQUl3JDU3NzhjMWQxLTFiMjUtNGFkOS1iMWQxLWVlZmE4MDI0Y2QxM3h3DmNvcmUvcGFyYWdyYXBoeXcwVHlwZSAvIHRvIGNob29zZSBhIGJsb2NrIG9yIC8vIHRvIHVzZSBDb250ZW50IEFJdyRjNWNhODJjYS1mY2UzLTRhN2MtODkwZi1hMGFiMmM0ODE5Y2J4dw5jb3JlL3BhcmFncmFwaHl3MFR5cGUgLyB0byBjaG9vc2UgYSBibG9jayBvciAvLyB0byB1c2UgQ29udGVudCBBSXckZWY0ZWE1MjItM2E2Ny00NzUyLWE2ZTUtZTg4MzY3OGQxZjgxeHcOY29yZS9wYXJhZ3JhcGh5dzBUeXBlIC8gdG8gY2hvb3NlIGEgYmxvY2sgb3IgLy8gdG8gdXNlIENvbnRlbnQgQUl3JDRiMjZhZWMzLTk3MTItNGVlZi04NzExLTMxODFmMTMyNDU2OHh3DGNvcmUvaGVhZGluZ30DdyRkOWEwZWFmMC1lNjI4LTRjMTQtOWI0Yy1mMzE4NGU1MzQ4MmJ4dw5jb3JlL3BhcmFncmFwaHl3MFR5cGUgLyB0byBjaG9vc2UgYSBibG9jayBvciAvLyB0byB1c2UgQ29udGVudCBBSXckYTU1OWM3OTgtNjE1MS00MGY3LWEyZDAtN2RhMzAxYmU0NzAzeHcOY29yZS9wYXJhZ3JhcGh5dzBUeXBlIC8gdG8gY2hvb3NlIGEgYmxvY2sgb3IgLy8gdG8gdXNlIENvbnRlbnQgQUl3JGRhYjI3ODU3LWRkMDctNDRjZC05ZDc2LWQwZTViYzkwOGUyY3h3DmNvcmUvcGFyYWdyYXBoeXcwVHlwZSAvIHRvIGNob29zZSBhIGJsb2NrIG9yIC8vIHRvIHVzZSBDb250ZW50IEFJdyRkMTVjZDdjOS01ZmNhLTQ3YTItOWQzMS1jMDNiMTkwNmRmNDl4dw5jb3JlL3BhcmFncmFwaHl3MFR5cGUgLyB0byBjaG9vc2UgYSBibG9jayBvciAvLyB0byB1c2UgQ29udGVudCBBSXckZTdjZWZmZWEtOTM5Ni00ZTg1LTg3MTAtNzQ0M2RhNDc1MjE4eHcOY29yZS9wYXJhZ3JhcGh5dzBUeXBlIC8gdG8gY2hvb3NlIGEgYmxvY2sgb3IgLy8gdG8gdXNlIENvbnRlbnQgQUl3JGVjZDJkZTVlLWMxNjEtNGI3OC1iZjUyLWI1NDYyNDExZDgwZHh3DmNvcmUvcGFyYWdyYXBoeXcwVHlwZSAvIHRvIGNob29zZSBhIGJsb2NrIG9yIC8vIHRvIHVzZSBDb250ZW50IEFJeHckY2ZhNWUxNzctNTcwNi00ZDU0LWJiMGYtNWUwYjM2ZDIyNjkydwxjb3JlL2hlYWRpbmd9AnckZDAxMzcxNjQtNjZhMC00OGRlLWEzZjgtODg5NWIzOTdiMTdmeHcOY29yZS9wYXJhZ3JhcGh5dzBUeXBlIC8gdG8gY2hvb3NlIGEgYmxvY2sgb3IgLy8gdG8gdXNlIENvbnRlbnQgQUl3JDliZDQxNmJiLWEwZjYtNGMxNy05OWEzLTdjOTZiN2FhN2Y1Nnh3DmNvcmUvcGFyYWdyYXBoeXcwVHlwZSAvIHRvIGNob29zZSBhIGJsb2NrIG9yIC8vIHRvIHVzZSBDb250ZW50IEFJdyRhZmJiNDg0Yi1iODI2LTRlMmQtOTQ5OC1jMmI0OTg2ZDc3NmV4dw5jb3JlL3BhcmFncmFwaHl3MFR5cGUgLyB0byBjaG9vc2UgYSBibG9jayBvciAvLyB0byB1c2UgQ29udGVudCBBSXckYTA4ZGQzOGMtOTMyNC00NDhiLTkxZTMtZGYwOTE0N2NiZmFmeHcOY29yZS9wYXJhZ3JhcGh5dzBUeXBlIC8gdG8gY2hvb3NlIGEgYmxvY2sgb3IgLy8gdG8gdXNlIENvbnRlbnQgQUl3JDVkZjA2M2IwLWYyMjctNDYwNC05YjY5LTE5ZmZjMWY2NWM3Znh3DmNvcmUvcGFyYWdyYXBoeXcwVHlwZSAvIHRvIGNob29zZSBhIGJsb2NrIG9yIC8vIHRvIHVzZSBDb250ZW50IEFJdyQwYjhlOWNlNS0wYzk1LTQ2MmQtODYxMS01Njk0ZWVhNjE3MzR4dw5jb3JlL3NlcGFyYXRvcncNYWxwaGEtY2hhbm5lbHcCaHJ3JDcyNWZjNmExLWMwZGItNDYyOS05MDU1LTNhMzYzMWNkOGNiN3h3DGNvcmUvaGVhZGluZ30CdyQyZTZjM2FkNS02NjkxLTQ0MzctOGQwZC0zZTE5NGJmMTQ3OTN4dwxjb3JlL2hlYWRpbmd9A3ckNWFmZWUxYzMtNjA2My00ZDMyLWIzNTgtN2E2MzllMzg5OTI1eHcOY29yZS9wYXJhZ3JhcGh5dzBUeXBlIC8gdG8gY2hvb3NlIGEgYmxvY2sgb3IgLy8gdG8gdXNlIENvbnRlbnQgQUl3JDczNWZiNGY1LWRkNTgtNDVlMy04ZmM4LTkyODIzZmMxMGU1YXh3DGNvcmUvaGVhZGluZ30DdyQ0MzU5ZDlmMy1lZTI0LTQxMTMtYTlhZi02N2ViMzYxYTZhMDV4dw5jb3JlL3BhcmFncmFwaHl3MFR5cGUgLyB0byBjaG9vc2UgYSBibG9jayBvciAvLyB0byB1c2UgQ29udGVudCBBSXckYWE4YTlmNzUtMzg1Zi00YjFiLTlkNzgtYzJkOTMwYmJkOGJkeHcMY29yZS9oZWFkaW5nfQN3JDQ1ODQxZjZjLTI5ZGEtNDJlZi04NjNmLWRlM2Y3ODdiZDEzZnh3DmNvcmUvcGFyYWdyYXBoeXcwVHlwZSAvIHRvIGNob29zZSBhIGJsb2NrIG9yIC8vIHRvIHVzZSBDb250ZW50IEFJdyQ5OGYzYTAxZS03YTIwLTRmNTEtYTRjMS1jZTBiODA4OGY1MWR4dwxjb3JlL2hlYWRpbmd9A3ckMmU2ZWMxMmQtNGMxYS00MTdhLWIzMWEtYjRjYWY0N2FiODU0eHcOY29yZS9wYXJhZ3JhcGh5dzBUeXBlIC8gdG8gY2hvb3NlIGEgYmxvY2sgb3IgLy8gdG8gdXNlIENvbnRlbnQgQUl3JDY1YWM1NGZmLTVlZDYtNGI4ZC04Yjc0LWU4NWNmZTNmMDc0NHh3DGNvcmUvaGVhZGluZ30DdyRmMmU2NWQyNy1jOWQwLTQ4MTItOWY0Yy04NzViN2M0MzE2NjF4dw5jb3JlL3BhcmFncmFwaHl3MFR5cGUgLyB0byBjaG9vc2UgYSBibG9jayBvciAvLyB0byB1c2UgQ29udGVudCBBSX2VHnh3JDZjNmYzYzZmLTY3ZTQtNDE4ZS05Nzc0LTg5OWJmMWUzMDhjZncKY29yZS9pbWFnZXl3HzNVcEdhbWluZyBQb2tlciBCb3QgUmV2aWV3IDIwMjZ9lh53Jmh0dHBzOi8vYXMtbmFzLmNvbS8\/YXR0YWNobWVudF9pZD0xOTQyd0ZodHRwczovL2FzLW5hcy5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDQvaW1hZ2UtODctMTAyNHg1NzYtMS53ZWJwdwRmdWxsdwRub25leHckZjBlOWFkNGQtMTEzZi00NjZiLTkzNjctY2M3M2U4NDdhNWU0dwpjb3JlL2ltYWdleXcfM1VwR2FtaW5nIFBva2VyIEJvdCBSZXZpZXcgMjAyNn2XHncmaHR0cHM6Ly9hcy1uYXMuY29tLz9hdHRhY2htZW50X2lkPTE5NDN3Rmh0dHBzOi8vYXMtbmFzLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNC9pbWFnZS04OS0xMDI0eDU3Ni0xLndlYnB3BGZ1bGx3BG5vbmV1AX2QAnUBfQN3B3B1Ymxpc2gBrOmj\/QNlAAIEAAwB6QQA9QEAGwDgCQCtCwCnAgAOAJcCB9sDAJgHAPwGAPsQAAEAAgG7AwCvBwCHAgDpBwCFCADCCAA+B+wDAC4AhAUA6BIAugQALwABAAIBogKFBC6XBK8IyAOUCKMCLpUDqAKdA7AEvAPBBtwB0hWRBP8EqQIuxQKDB98CrgabA7cG0QEYaIYFpgMu9AL9EoUDhQOFAi4H5wEA+Q8AswMA4wwARAfSAgCoAQD1BwD7AwC6CADzBQC5AqED9w39Aa0B3QLfDIQCqgL8AS7pAtAGrQIutwLwCeQCqwK5AgEAAQACAeQBAJQOANMBAKEKACAAhAYHqx4AAQACAZMugwTYCrkCsAHDAvYHvQKwWgTfAb0ChhSXBM4SAAEAAQIDAAoAAQABAgMACQA=\",\"updateId\":849253891}","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[3],"tags":[144],"class_list":["post-1930","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-strategy","tag-poker-bot"],"jetpack_featured_media_url":"https:\/\/as-nas.com\/wp-content\/uploads\/2026\/04\/image-86.webp","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/ph0H2c-v8","amp_enabled":true,"_links":{"self":[{"href":"https:\/\/as-nas.com\/index.php?rest_route=\/wp\/v2\/posts\/1930","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/as-nas.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/as-nas.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/as-nas.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/as-nas.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1930"}],"version-history":[{"count":7,"href":"https:\/\/as-nas.com\/index.php?rest_route=\/wp\/v2\/posts\/1930\/revisions"}],"predecessor-version":[{"id":1954,"href":"https:\/\/as-nas.com\/index.php?rest_route=\/wp\/v2\/posts\/1930\/revisions\/1954"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/as-nas.com\/index.php?rest_route=\/wp\/v2\/media\/1941"}],"wp:attachment":[{"href":"https:\/\/as-nas.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1930"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/as-nas.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1930"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/as-nas.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1930"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}