<?xml version="1.0" encoding="UTF-8"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:news="http://www.pugpig.com/news" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Defense News]]></title><link>https://www.defensenews.com</link><atom:link href="https://www.defensenews.com/arc/outboundfeeds/rss/category/air/" rel="self" type="application/rss+xml"/><description><![CDATA[Defense News News Feed]]></description><lastBuildDate>Sat, 23 May 2026 16:02:30 +0000</lastBuildDate><language>en</language><ttl>1</ttl><sy:updatePeriod>hourly</sy:updatePeriod><sy:updateFrequency>1</sy:updateFrequency><item><title><![CDATA[Italy settles on Airbus tanker purchase in swing toward European equipment]]></title><news:push>0</news:push><link>https://www.defensenews.com/global/europe/2026/05/20/italy-settles-on-airbus-tanker-purchase-in-swing-toward-european-equipment/</link><category> / Europe</category><guid isPermaLink="true">https://www.defensenews.com/global/europe/2026/05/20/italy-settles-on-airbus-tanker-purchase-in-swing-toward-european-equipment/</guid><dc:creator><![CDATA[Tom Kington]]></dc:creator><description><![CDATA[The deal marks a shift from Boeing to Airbus for the Italian Air Force, which flies four Boeing 767-based tanker aircraft which entered service from 2011.]]></description><pubDate>Wed, 20 May 2026 07:37:38 +0000</pubDate><content:encoded><![CDATA[<p>ROME — Italy is to buy six Airbus A330 MRTT multi-role tanker transport aircraft in a €1.4 billion ($1.6 billion) deal after 15 years of flying Boeing tankers.</p><p>The purchase, which was announced by the European Union’s TED public procurement platform, envisages ten years of logistic support and indicates the A330 was the only aircraft in the bidding.</p><p>The deal marks a shift from Boeing to Airbus for the Italian Air Force, which flies four Boeing 767-based tanker aircraft which entered service from 2011.</p><p>In 2021 Italy announced plans to upgrade its B-767 tankers and purchase two more, but the following year Rome changed its plans, deciding instead to buy six new KC-46 aircraft.</p><p>In 2024, however, Italy started to consider Airbus after suspending plans to acquire the KC-46 tankers.</p><p>At the time, Italy stated the €1.1 billion KC-46 purchase had been halted “due to changed and unforeseen needs.”</p><p>At the time, <a href="https://www.defensenews.com/global/europe/2024/07/12/italian-air-force-eyes-airbus-tankers-after-dropping-boeing-planes/" target="_blank" rel="" title="https://www.defensenews.com/global/europe/2024/07/12/italian-air-force-eyes-airbus-tankers-after-dropping-boeing-planes/">Defense News reported</a> the halting of the order was linked to cost and the promised delivery time of the new aircraft.</p><p>The Airbus order comes at a time when European militaries are seeking greater commonality and are warier of purchases of U.S. products as President Trump regularly disparages the traditional U.S.-Europe trans-Atlantic alliance.</p><p>France, Spain and the U..K are customers of the A330 MRTT while a host of other European nations fly the aircraft through NATO pooling.</p>]]></content:encoded><media:thumbnail url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/5ZJBYKMBPFHSHMJC3UNUNG5SJY.jpg" type="image/jpeg"/><enclosure url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/5ZJBYKMBPFHSHMJC3UNUNG5SJY.jpg" type="image/jpeg"/><media:content url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/5ZJBYKMBPFHSHMJC3UNUNG5SJY.jpg" type="image/jpeg" height="3000" width="5197"><media:description type="plain"><![CDATA[NATO's A330 Airbus Multi Role Tanker Transport (MRTT) team performs during the 45th International Sanicole Airshow organized by Aeroclub Sanicole in Hechtel, Belgium, near the Dutch border, on Sept. 14, 2025. (Dursun Aydemir/Anadolu via Getty Images)]]></media:description><media:credit role="author" scheme="urn:ebu">Anadolu</media:credit></media:content></item><item><title><![CDATA[War in pieces: Air Force wants special ops plane that can be built on the fly]]></title><news:push>0</news:push><link>https://www.defensenews.com/news/your-military/2026/05/19/war-in-pieces-air-force-wants-special-ops-plane-that-can-be-built-on-the-fly/</link><category>Air Warfare</category><guid isPermaLink="true">https://www.defensenews.com/news/your-military/2026/05/19/war-in-pieces-air-force-wants-special-ops-plane-that-can-be-built-on-the-fly/</guid><dc:creator><![CDATA[Michael Scanlon]]></dc:creator><description><![CDATA[The Skyraider II, a militarized version of the AT-802 crop duster, is built to give isolated special ops teams eyes overhead and firepower on call. ]]></description><pubDate>Tue, 19 May 2026 19:37:45 +0000</pubDate><content:encoded><![CDATA[<p>Air Force Special Operations Command is testing whether it can take its new Skyraider II apart, pack it inside a cargo jet and put it back together in the field, <a href="https://taskandpurpose.com/tech-tactics/air-force-skyraider-2026/" target="_blank" rel="">officials said this week at Special Operations Forces Week</a>.</p><p>The single-engine, prop-driven OA-1K, a militarized version of the Air Tractor AT-802 crop duster, is built to give isolated special operations teams eyes overhead and firepower on call from rough dirt strips with little support.</p><p>“It is essentially a Swiss Army Knife of airborne capability,” Lt. Col. Robert Wilson, AFSOC’s armed overwatch requirements branch chief, <a href="https://taskandpurpose.com/tech-tactics/air-force-skyraider-2026/" target="_blank" rel="">told reporters</a>.</p><p>“Rapid disassembly and reassembly means, in a matter of hours, the aircraft can be loaded into mobility aircraft like a C-5 or C-17 for worldwide deployment,” Wilson said in <a href="https://www.dvidshub.net/news/565557/afsoc-unveils-oa-1k-skyraider-ii-rapid-deployment-capability-sof-week" target="_blank" rel="">an AFSOC release</a>. “With the OA-1K, ‘any place, any time, anywhere’ is not just a motto, but an actual capability.”</p><p>Lt. Gen. Mike Conley, AFSOC commander, added in the release that the OA-1K “offers a unique and modular solution for a wide range of operations, including armed overwatch, at a fraction of a cost of other platforms.”</p><p>The cost case rests on platform consolidation. <a href="https://www.gao.gov/assets/gao-24-106283.pdf" target="_blank" rel="">A 2023 Government Accountability Office report</a> noted SOCOM refers to the mix of close air support, strike and intelligence, surveillance and reconnaissance aircraft flown over a single special operations mission as “the stack.” <a href="https://www.dvidshub.net/news/565557/afsoc-unveils-oa-1k-skyraider-ii-rapid-deployment-capability-sof-week" target="_blank" rel="">AFSOC has pitched</a> the modular Skyraider II as a cheaper airframe that can do the work of many.</p><p>The Air Force now flies 18 Skyraider IIs and expects “a handful more” by October, Wilson said. </p><p>The aircraft, named for the Vietnam-era A-1 Skyraider, currently operates out of Will Rogers Air National Guard Base, Oklahoma, and will eventually operate from Cannon Air Force Base, New Mexico, and Davis-Monthan Air Force Base, Arizona.</p><p>The program of record is 75 aircraft, but the Pentagon has cut the funded total to 53. The same GAO report found that SOCOM had not justified the 75-aircraft fleet and urged a slowdown. </p><p>The cuts align with a broader Pentagon shift toward a potential high-end fight with China, where a slow, low-flying turboprop with no ejection seat is a hard sell.</p><p>“The 75 quantity figure is the program record,” Wilson said. “I would say, as the capability sponsor, less than 75 is not desirable. We would like to see it at the program record of 75, but ... just being pragmatic, obviously, with resource constraints that could potentially limit the program less than that.”</p>]]></content:encoded><media:thumbnail url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/O6NYVT6KBFCGTK7YTIY7XBUMQA.jpg" type="image/jpeg"/><enclosure url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/O6NYVT6KBFCGTK7YTIY7XBUMQA.jpg" type="image/jpeg"/><media:content url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/O6NYVT6KBFCGTK7YTIY7XBUMQA.jpg" type="image/jpeg" height="1918" width="3000"><media:description type="plain"><![CDATA[An OA-1K Skyraider II prepares for take-off at Eglin Air Force Base, Florida, June 25, 2025. (Samuel King Jr./U.S. Air Force)]]></media:description><media:credit role="author" scheme="urn:ebu">Samuel King Jr.</media:credit></media:content></item><item><title><![CDATA[Israel to extend F-35I range amid war with Iran]]></title><news:push>0</news:push><link>https://www.defensenews.com/global/mideast-africa/2026/05/14/israel-to-extend-f-35i-range-amid-war-with-iran/</link><category> / Mideast Africa</category><guid isPermaLink="true">https://www.defensenews.com/global/mideast-africa/2026/05/14/israel-to-extend-f-35i-range-amid-war-with-iran/</guid><dc:creator><![CDATA[Tzally Greenberg]]></dc:creator><description><![CDATA[Elbit Systems was awarded the development contract, valued at approximately $34 million (100 million NIS).]]></description><pubDate>Thu, 14 May 2026 13:46:32 +0000</pubDate><content:encoded><![CDATA[<p>JERUSALEM — Israel will develop a system for extending the range of its F-35I ‘Adir’ fighter jets, Israel’s defense ministry announced May 14.</p><p>Officials didn’t specify a target range for the upgraded aircraft. The F-35A — the model on which the Israeli version is based — currently has a range of 1,200 miles, as stated on the manufacturer’s website.</p><p>But the ministry mentioned that the development and implementation will involve adapting external fuel tanks based on an existing Cyclone design of the F-16I “Sufa,” Israel’s variant of the F-16, which has a reported range of approximately 1,300 miles.</p><p>Elbit Systems was awarded the development contract, valued at approximately $34 million (100 million NIS).</p><p>The announcement comes amid a fragile ceasefire between the United States and Iran, and roughly a month after the Israeli military operation “Lion’s Roar,” in which the Israeli Air Force struck targets deep inside Iran. During that operation, an F-35I scored the first air-to-air kill ever credited to an F-35 in combat, shooting down an Iranian Yak-130 — a Russian-built jet trainer used in a light-attack role.</p><p>Israel currently operates 50 F-35I aircraft across two squadrons. It is beginning to take delivery of 25 additional jets ordered in 2023, and earlier this month announced the opening of negotiations to purchase 25 more — a move that would bring the total fleet to 100 aircraft and expand Israel’s F-35I force to four squadrons.</p><p>The F-35I “Adir” is a fifth-generation multi-mission stealth fighter aircraft, manufactured by Lockheed Martin and used by the Israeli Air Force as a model specifically tailored to its requirements.</p><p>The aircraft combines stealth technologies, advanced data fusion, the ability to carry internal weapons, and includes Israeli-made electronic warfare, communications, and computing systems, which are embedded in the American infrastructure.</p>]]></content:encoded><media:thumbnail url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/ILHFCJI7WRCMPOFQVE5OW2OY4U.jpg" type="image/jpeg"/><enclosure url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/ILHFCJI7WRCMPOFQVE5OW2OY4U.jpg" type="image/jpeg"/><media:content url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/ILHFCJI7WRCMPOFQVE5OW2OY4U.jpg" type="image/jpeg" height="3108" width="4672"><media:description type="plain"><![CDATA[An Israeli F-35I Adir takes off during the Red Flag drills at Nellis Air Force Base, Nev., on March, 23, 2023. (William R. Lewis/U.S. Air Force)]]></media:description></media:content></item><item><title><![CDATA[Air Force MQ-9 fleet drops to 135 aircraft after Iran combat losses]]></title><news:push>0</news:push><link>https://www.defensenews.com/news/pentagon-congress/2026/05/13/air-force-mq-9-fleet-drops-to-135-aircraft-after-iran-combat-losses/</link><category>Air Warfare</category><guid isPermaLink="true">https://www.defensenews.com/news/pentagon-congress/2026/05/13/air-force-mq-9-fleet-drops-to-135-aircraft-after-iran-combat-losses/</guid><dc:creator><![CDATA[Michael Scanlon]]></dc:creator><description><![CDATA[The Air Force is seeking to backfill the inventory of MQ-9 Reapers and field a cheaper, more expendable replacement.]]></description><pubDate>Wed, 13 May 2026 18:15:25 +0000</pubDate><content:encoded><![CDATA[<p>The U.S. Air Force’s MQ-9 Reaper fleet has fallen to roughly 135 aircraft as combat attrition from Operation Epic Fury cuts into the service’s most heavily used remotely piloted asset, the deputy chief of staff for plans and programs told senators Tuesday.</p><p>Lt. Gen. David Tabor told the Senate Armed Services Subcommittee on Airland that the fleet is “still able to fulfill our contract of 56 combat lines worldwide” despite the losses, and the service is seeking to backfill the inventory and field a cheaper, more expendable replacement. The 56 combat lines represent the intelligence, surveillance and reconnaissance orbits the Air Force maintains around the clock for combatant commanders worldwide.</p><p>Sen. Kevin Cramer, R-N.D., opened questioning at the Senate hearing by citing the long-standing 189-aircraft floor, leaving the current fleet roughly 54 aircraft short. He asked what the Air Force plans to do as the platform takes losses in the Middle East while remaining in heavy demand across other combatant commands. </p><p><a href="https://www.militarytimes.com/news/your-military/2026/05/13/ai-tool-has-saved-a-lot-of-aircraft-in-epic-fury-afsoc-chief-says/">AI tool has ‘saved a lot of aircraft’ in Epic Fury, AFSOC chief says</a></p><p>Tabor did not address the 189 figure directly but noted that attrition has “really demonstrated the value of the MQ-9.”</p><p>“We are concerned about how they’ve attrited, and we’re looking at options to buy back as many of the MQ-9As as we possibly can right now,” Tabor said. The Air Force is working with the Department of Defense to fund the buyback this fiscal year, he said. </p><p>The longer-term work, Tabor said, falls to A5/7, the Air Force’s strategy, integration and requirements directorate. He turned the question over to Maj. Gen. Christopher Niemi, military deputy for Air Force Futures and the White House’s nominee to serve as the service’s first chief modernization officer.</p><p>Niemi confirmed that he signed off on a requirements document for the next-generation platform on May 11, framing the successor as a deliberate departure from the Reaper platform, designed from the outset for the kind of contested airspace that resulted in the Epic Fury losses.</p><p>“We believe what is possible is to take advantage of modern manufacturing technologies so that we could buy something that is more flexible, lends itself more to open architecture, is more easily [produced] in mass numbers,” Niemi said. ”And then ultimately you could use [it] in a more attritable way.”</p><p>The cost driver, Niemi said, is the Reaper’s sensor suite. A current MQ-9 with a full sensor package can run “up to $50 million a copy,” he said. A modular successor would allow the Air Force to strip out high-end packages for operation in high-threat environments, driving the price down to a point where losing one, or many, is operationally and financially feasible.</p><p>Lt. Gen. Luke Cropsey, military deputy for Air Force acquisition, said the service’s intelligence, surveillance and reconnaissance and special operations acquisition team issued a request for information about a month ago. More than 50 companies responded.</p><p>“There is a burgeoning interest across the broader defense industrial base on what comes next,” Cropsey said.</p><p>The April 14 solicitation, titled “<a href="https://sam.gov/workspace/contract/opp/d3ee4eb8c6d246788033b10dcccc72fa/view" target="_blank" rel="">Attritable ISR Aircraft</a>,” seeks “low-cost, fast-to-field, fast-to-deploy, airborne ISR mass to increase mission flexibility and mission surging,” according to a copy of the document.</p><p>The service is looking for a threshold range of 200 km (objective: 1,500 km) from launch and recovery to the collection area, and a threshold loiter time of four hours (objective: 20). </p><p>Industry “production must be able to scale within months,” the RFI states.</p><p>Those specs suggest a smaller, simpler aircraft than the MQ-9, one that trades the Reaper’s exquisite sensor suite and long combat radius for cost, speed of fielding and what Niemi called “affordable mass” in his opening statement.</p><p>The math has shifted to match the threat. </p><p>The MQ-9 has been the Air Force’s workhorse drone for surveillance and strike missions in U.S. Central Command for nearly two decades, but the aircraft was built for the uncontested skies of the post-9/11 counterterrorism era. </p><p>Its losses during Operation Epic Fury have exposed the vulnerability Air Force planners have long understood but never been compelled to fix. The service shelved an earlier MQ-9 replacement effort, MQ-X, in 2012, and <a href="https://www.defensenews.com/air/2020/06/04/the-air-force-is-looking-for-a-next-gen-replacement-to-the-mq-9-reaper-drone/" target="_blank" rel="">a 2020 request for information</a> produced market research but no acquisition program.</p><p>The May 11 requirements document and the April 14 RFI together represent the furthest the Air Force has gone toward replacing the Reaper in more than five years. </p><p>The search for an MQ-9 successor is intended to follow the Collaborative Combat Aircraft acquisition model, Niemi said, which surveyed industry broadly, narrowed the field down to two companies that are now delivering flying prototypes for testing, and treated open architecture and autonomous operation as design requirements from the outset.</p><p>Cropsey said the industry’s response has been strong.</p><p>“We have enough interest to really get some, I think, interesting proposals back,” he said.</p>]]></content:encoded><media:thumbnail url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/3Y3C57HF3ZHQ5EHCR72NG2JXYY.jpg" type="image/jpeg"/><enclosure url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/3Y3C57HF3ZHQ5EHCR72NG2JXYY.jpg" type="image/jpeg"/><media:content url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/3Y3C57HF3ZHQ5EHCR72NG2JXYY.jpg" type="image/jpeg" height="3569" width="5346"><media:description type="plain"><![CDATA[An MQ-9 Reaper flies a training mission over the Nevada Test and Training Range on July 15, 2019. (Airman 1st Class William Rio Rosado/U.S. Air Force)]]></media:description><media:credit role="author" scheme="urn:ebu">Airman 1st Class William Rosado</media:credit></media:content></item><item><title><![CDATA[Austrian jets intercept US military planes two days in a row]]></title><news:push>0</news:push><link>https://www.defensenews.com/global/europe/2026/05/13/austrian-jets-intercept-unauthorized-us-military-planes-two-days-in-a-row/</link><category> / Europe</category><guid isPermaLink="true">https://www.defensenews.com/global/europe/2026/05/13/austrian-jets-intercept-unauthorized-us-military-planes-two-days-in-a-row/</guid><dc:creator><![CDATA[Linus Höller]]></dc:creator><description><![CDATA[The May 10 intercept reportedly took place over the Totes Gebirge mountain range in Upper Austria, over 60 kilometers from the German border.]]></description><pubDate>Wed, 13 May 2026 09:05:29 +0000</pubDate><content:encoded><![CDATA[<p>VIENNA — Austrian Eurofighter Typhoon fighter jets scrambled two days in a row to intercept U.S. military aircraft, the government said. </p><p>The interceptions took place on May 10 and 11 and were related to modified PC-12 turboprop aircraft that the U.S. military uses primarily for signals intelligence and scouting operations. The U.S. designation for the aircraft is U-28. </p><p>Contrary to initial reporting in German-language media, no aircraft seems to have illegally violated Austrian airspace. The U.S. Air Force had filed for an overflight permit for two aircraft on May 10, but didn’t use it. When later that day two different USAF aircraft approached Austrian airspace unannounced, jets were scrambled to meet them - but they turned back before crossing the border, Austrian military spokesperson Michael Bauer said in a <a href="https://x.com/Bundesheerbauer/status/2054484997906542777?s=20" target="_blank" rel="">statement</a> on X on Wednesday. </p><p>The U.S. refiled the overflight permit for the following day and used it then. The Austrian air force sent fighter jets to confirm that the aircraft overflying the airspace matched what had been approved. “Some things you have to see for yourself,” Bauer <a href="https://x.com/Bundesheerbauer/status/2053800365770908035?s=20" target="_blank" rel="">said</a> in a reply on X</p><p>Austrian jets were scrambled in a “priority A intercept” on May 11, Bauer said on Tuesday, marking the highest urgency in the Austrian air force’s nomenclature. </p><p>Later reporting by the major Austrian daily Der Standard cited the Austrian government as saying that, as of Wednesday, the verdict was still out on whether the planes that overflew Austrian airspace were the ones for which a permit had been issued. No further details were provided on what was taking so long for the verification. </p><p>Austria is not a member of the NATO alliance and has <a href="https://www.defensenews.com/global/europe/2024/03/15/sweden-and-finland-have-dropped-neutrality-austria-still-fetes-it/" target="_blank" rel="">perpetual neutrality</a> enshrined in its constitution. Transits by foreign militaries - whether by land or by air - require prior approval and are generally granted only if they are unrelated to a war. Austria was the fifth European country to close its airspace to U.S. activity related to the war in Iran, with the country’s vice chancellor, Andreas Babler, saying that Austrians want “nothing to do with Trump’s politics of chaos and his war.”</p><p>The May 11 intercept reportedly took place over the Totes Gebirge mountain range in Upper Austria, over 60 kilometers from the German border. The American planes were met by Eurofighter Typhoons. </p><p>Swiss news portal “20 Minuten” first <a href="https://www.20min.ch/story/zwei-vorfaelle-us-luftwaffe-dringt-ohne-genehmigung-in-oesterreichs-luftraum-ein-103561188" target="_blank" rel="">reported</a> on the incursion and it was later confirmed by other German-language media, although initial reporting stated that unpermitted airspace violations had taken place - a claim that was refuted by the Austrian military on Wednesday</p><p>“This flight took place after an administrative error in the overflight clearance paperwork was corrected,” an official from U.S. European Command told Defense News in an email. “The United States continues to work closely with Austrian authorities on any questions regarding overflights and fully complies with Austrian laws and procedures.”</p><p>Publicly available reporting of unauthorized U.S. overflights is rare, and permissions are generally granted in peacetime. Austria’s location and geography - a thin sliver of land between major NATO allies Germany and Italy, and dividing northern from southern Europe - makes it a prime transit route. Neighboring Switzerland has similar neutrality policies. </p><p>The most remarkable precedent is a case in October 2002, when the U.S. attempted to smuggle two F-117A Nighthawk stealth attack aircraft through Austrian airspace by filing a flight plan only for the accompanying KC-10A tanker aircraft. Austrian Draken fighter jets identified the undeclared aircraft and Vienna later lodged a formal diplomatic complaint. </p><p>The recent incidents, too, will be addressed through diplomatic channels, Bauer said.</p><p><i>Editor’s note: This story was updated with new information from the U.S. military and the Austrian government refuting initial reporting that the airspace incursions were unauthorized.</i></p>]]></content:encoded><media:thumbnail url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/JOSX7VM3WVBE5K63PXZAIC4624.jpg" type="image/jpeg"/><enclosure url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/JOSX7VM3WVBE5K63PXZAIC4624.jpg" type="image/jpeg"/><media:content url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/JOSX7VM3WVBE5K63PXZAIC4624.jpg" type="image/jpeg" height="3827" width="5740"><media:description type="plain"><![CDATA[A U.S. Air Force U-28A Draco assigned to Air Force Special Operations Command approaches a forward arming and refueling point in California during the Emerald Warrior 25.2 exercise on July 28, 2025. (U.S. Air Force/Senior Airman Thomas Hansford)]]></media:description><media:credit role="author" scheme="urn:ebu">Senior Airman Thomas Hansford</media:credit></media:content></item><item><title><![CDATA[Marines to phase out F/A-18 maintenance jobs as Hornet era ends]]></title><news:push>0</news:push><link>https://www.defensenews.com/news/your-marine-corps/2026/05/08/marines-to-phase-out-fa-18-maintenance-jobs-as-hornet-era-ends/</link><category>Air Warfare</category><guid isPermaLink="true">https://www.defensenews.com/news/your-marine-corps/2026/05/08/marines-to-phase-out-fa-18-maintenance-jobs-as-hornet-era-ends/</guid><dc:creator><![CDATA[Daniel Terrill]]></dc:creator><description><![CDATA[Enlisted Marines with Hornet specialties will be offered retraining, reassignment or career dead ends.]]></description><pubDate>Fri, 08 May 2026 15:28:50 +0000</pubDate><content:encoded><![CDATA[<p>The U.S. Marine Corps plans to phase out enlisted jobs tied to the F/A-18 Hornet as it transitions to an <a href="https://www.militarytimes.com/news/pentagon-congress/2026/04/28/pentagons-fy27-budget-seeks-85-f-35s-but-most-ride-on-reconciliation/" target="_blank" rel="">all-F-35 tactical aircraft fleet</a>.</p><p>According to Tuesday’s <a href="https://www.marines.mil/News/Messages/Messages-Display/Article/4476763/fa-18-hornet-military-occupational-specialties-personnel-transition/" target="_blank" rel="">Marine Administrative Message</a>, or MARADMIN, the Corps will deactivate all remaining Hornet squadrons by 2030 and eliminate the maintenance specialties associated with the aging fighter jet.</p><p>Marines currently serving in one of the six affected specialties — including mechanic, avionics and technician roles — will have the opportunity to retrain for F-35 jobs, move into another specialty or leave the service once their enlistment contracts end.</p><p>While the Corps said Marines are “highly encouraged” to laterally move from F/A-18 to F-35 specialties, those who do not transition voluntarily may be reassigned based “solely on the needs of the Marine Corps,” regardless of how much time remains on their contracts.</p><p>The transition will occur regionally, with Hornet operations ending at different installations over the next several years. Once those transitions are complete, the F/A-18 maintenance occupations will effectively cease to exist.</p><p>The Corps plans to end Hornet operations at the following locations:</p><ul><li>Marine Corps Air Station Beaufort, South Carolina, by Aug. 1, 2028</li><li>Marine Corps Air Station Miramar, California, by Aug. 1, 2029</li><li>Naval Air Station Joint Reserve Base Fort Worth, Texas, by Aug. 1, 2030</li></ul><p>The Marines have already replaced Hornet squadrons with F-35 units at several bases in the United States and overseas. In 2018, the service <a href="https://www.militarytimes.com/news/your-marine-corps/2023/10/02/marine-corps-deactivates-its-squadron-for-training-fa-18-pilots/" target="_blank" rel="">deactivated</a> its squadron for training F/A-18 pilots. </p><p>The Marine Corps adopted the F/A-18 Hornet in 1983 and has since flown it extensively in conflicts including Libya, Iraq, Bosnia and Afghanistan, according to a Naval Air Systems Command <a href="https://www.navair.navy.mil/product/FA-18-D-Hornet" target="_blank" rel="">fact sheet</a>.</p><p>NAVAIR described the aircraft as “the workhorse of Marine Corps tactical aviation,” noting that the Hornet proved capable of shooting down enemy fighters and striking ground targets during the same mission.</p><p>The command also highlighted the aircraft’s survivability, citing incidents in which Hornets damaged by surface-to-air missiles were repaired and returned to flight operations within days.</p><p>Although experts still consider the Hornet a capable platform, the F-35 was designed for modern warfare with advanced stealth and electronic warfare capabilities. According to the <a href="https://media.defense.gov/2026/Feb/10/2003873872/-1/-1/0/260210-USMC-2026-AVIATION-PLAN.PDF" target="_blank" rel="">2026 Marine Aviation Plan</a>, the Marines plan to expand its F-35 fleet to 420 aircraft.</p>]]></content:encoded><media:thumbnail url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/RCMKZ57S5NADTGQYHRPKD2MGQ4.jpg" type="image/jpeg"/><enclosure url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/RCMKZ57S5NADTGQYHRPKD2MGQ4.jpg" type="image/jpeg"/><media:content url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/RCMKZ57S5NADTGQYHRPKD2MGQ4.jpg" type="image/jpeg" height="4304" width="6456"><media:description type="plain"><![CDATA[A U.S. Marine cleans the tail of an F/A-18D Hornet at Marine Corps Air Station Miramar, California, on April 13, 2026. (Cpl. Michael Gavin/U.S. Marine Corps)]]></media:description><media:credit role="author" scheme="urn:ebu">Cpl. Michael Gavin</media:credit></media:content></item><item><title><![CDATA[The US Marine Corps is looking for a few good robots to build airfields]]></title><news:push>0</news:push><link>https://www.defensenews.com/news/your-military/2026/05/08/the-us-marine-corps-is-looking-for-a-few-good-robots-to-build-airfields/</link><category> / MilTech</category><guid isPermaLink="true">https://www.defensenews.com/news/your-military/2026/05/08/the-us-marine-corps-is-looking-for-a-few-good-robots-to-build-airfields/</guid><dc:creator><![CDATA[Michael Peck]]></dc:creator><description><![CDATA[For Marines who have toiled over assembling airfields in austere environments, relief may be on the way. ]]></description><pubDate>Fri, 08 May 2026 14:13:43 +0000</pubDate><content:encoded><![CDATA[<p>For Marines who have toiled over assembling airfields in austere environments, relief may be on the way. </p><p>The Marine Corps wants to develop robots that can do the grunt work of laying down the matting used to quickly construct <a href="https://www.navair.navy.mil/product/expeditionary-airfields-0" target="_blank" rel=""><u>Expeditionary Airfields</u></a>, or EAF, in amphibious beachheads and other remote locations.	</p><p>“Currently, assembling EAF matting is a manual process carried out by Marines — a task that is physically demanding, labor-intensive and exposes personnel to potential hazards,” explained the Small Business Innovation Research proposal, which has a deadline of June 3. </p><p>The project, titled “Automated Expeditionary Airfield Assembly,” calls for robots capable of operating on “uneven or unstable surfaces.” They must also “manipulate and position heavy EAF mat sections with precision” while enduring “harsh environmental and operational conditions,” according to the proposal. </p><p>The Marine Corps envisions robots with sufficient autonomy to “navigate and control without human assistance, which includes obstacle avoidance, path planning and grasping,” according to the SBIR. </p><p>Contractor solutions will be expected to explore “various robotic configurations — such as mobile manipulators and assistive technologies — for their effectiveness in EAF mat handling, alignment and interconnection across diverse and austere terrains,” the proposal states. </p><p>Phase I of the project involves demonstrating “the technical feasibility of a robotic system capable of automating or augmenting the assembly of EAF prefabricated surfaced aluminum (PSA) Flat Top-Nested (Top-N) Trackway mats.” </p><p>Robots will be evaluated on metrics such as “payload capacity, reach, manipulation precision, power consumption and operational endurance,” according to the proposal. </p><p>Phase II calls for a functional prototype capable of automated or semi-automated operations. </p><p>“The robot shall be able to handle the PSA mats in some manner to aid in the assemble of the airfield, be a closed system and able be able to operate in a realistic environment,” the SBIR specified. “The system will be judged on feasibility, time to assemble, ease of use and overall size and mass.” </p><p>Phase III requires a deployable system for field testing. The SBIR emphasizes that the robot “will undergo hardening against electrical, environmental and cyber threats.” </p><p>“The resulting system must demonstrate sustained operation in deployed environments, achieving significant reductions in manning requirements, operational costs and/or deployment time,” the proposal states. </p><p>The Marine Corps has been working to ease the difficulty of expeditionary airfield construction, including adopting commercial <a href="https://www.navair.navy.mil/news/New-Marine-Corps-expeditionary-matting-passes-test/Mon-01242022-1038" target="_blank" rel=""><u>lightweight matting</u></a>. </p><p>Meanwhile, robotics companies are developing robots optimized for <a href="https://www.wsls.com/news/local/2026/05/07/virginia-tech-showcases-vr-robots-and-drones-to-improve-construction-safety/" target="_blank" rel=""><u>construction work</u></a>, including <a href="https://bostondynamics.com/industry/construction/" target="_blank" rel=""><u>four-legged</u></a> and even <a href="https://www.mckinsey.com/industries/engineering-construction-and-building-materials/our-insights/humanoid-robots-in-the-construction-industry-a-future-vision" target="_blank" rel=""><u>two-legged humanoid robots</u></a>. </p><p>For airport operations, Japan Airlines is testing humanoid robots for baggage handling.</p>]]></content:encoded><media:thumbnail url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/KOI43DUSWJFXJCQ6NGOF4POFU4.jpg" type="image/jpeg"/><enclosure url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/KOI43DUSWJFXJCQ6NGOF4POFU4.jpg" type="image/jpeg"/><media:content url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/KOI43DUSWJFXJCQ6NGOF4POFU4.jpg" type="image/jpeg" height="5464" width="8192"><media:description type="plain"><![CDATA[U.S. Marines and airmen flatten dirt during an airfield damage and repair demonstration, March 26, 2025. (Lance Cpl. Fabian Ortiz/U.S. Marine Corps)]]></media:description><media:credit role="author" scheme="urn:ebu">Lance Cpl. Fabian Ortiz</media:credit></media:content></item><item><title><![CDATA[B-52 engine replacement clears critical design review, first modifications to begin this year]]></title><news:push>0</news:push><link>https://www.defensenews.com/news/your-military/2026/05/06/b-52-engine-replacement-clears-critical-design-review-first-modifications-to-begin-this-year/</link><category>Air Warfare</category><guid isPermaLink="true">https://www.defensenews.com/news/your-military/2026/05/06/b-52-engine-replacement-clears-critical-design-review-first-modifications-to-begin-this-year/</guid><dc:creator><![CDATA[Michael Scanlon]]></dc:creator><description><![CDATA[The Air Force’s program to replace the B-52H Stratofortress’s 1960s-era engines cleared its critical design review, the service announced May 4.]]></description><pubDate>Wed, 06 May 2026 17:57:05 +0000</pubDate><content:encoded><![CDATA[<p>The Air Force’s program to replace the B-52H Stratofortress’s 1960s-era engines <a href="https://www.aflcmc.af.mil/NEWS/Article/4476320/b-52-engine-replacement-program-holds-critical-design-review-paves-way-for-b-52/" target="_blank" rel="">cleared its critical design review</a>, the service announced May 4, setting the stage for Boeing to begin modifying the first two aircraft into the B-52J configuration later this year.</p><p>The Commercial Engine Replacement Program will swap the bomber’s eight Pratt &amp; Whitney TF33 turbofans for Rolls-Royce F130 engines on each of the 76 B-52Hs in the active fleet. </p><p>As the original TF33s from the early 1960s continue to wear down and spare parts become increasingly scarce, <a href="https://www.esd.whs.mil/Portals/54/Documents/FOID/Reading%20Room/Selected_Acquisition_Reports/FY_2022_SARS/B-52%20CERP%20SAR%20DEC%202022.pdf" target="_blank" rel="">the Air Force says</a> the engines will be “unsustainable” beyond 2030. The new engines offer better fuel efficiency, longer range, lower sustainment costs and additional electrical power for modern weapons and sensors.</p><p>The Air Force launched CERP in 2018 and selected the F130 in 2021 after a three-way competition that also included GE Aviation and Pratt &amp; Whitney. </p><p>The F130, built in Indianapolis, is <a href="https://www.rolls-royce.com/media/press-releases/2019/16-09-2019-rr-f130-engine-for-b-52-completes-early-testing-in-indianapolis.aspx" target="_blank" rel="">derived from Rolls-Royce’s BR725</a>, the engine that powers the Gulfstream G650 business jet and has accumulated more than <a href="https://www.rolls-royce.com/media/press-releases/2020/25-02-2020-rr-br725-engine-tops-one-million-flying-hours-intelligentengine.aspx" target="_blank" rel="">one million flying hours</a> since entering service in 2012. </p><p>The upgrade underpins <a href="https://www.defensenews.com/air/2026/01/06/us-air-force-awards-boeing-2b-contract-to-begin-b-52-engine-upgrades/" target="_blank" rel="">the Air Force’s plan</a> to shrink its bomber force to two types, the B-52J and the B-21 Raider, with the B-1B Lancer and B-2 Spirit retiring as B-21 deliveries ramp up.</p><p>The B-52, a key part of the U.S. nuclear triad’s air leg, is expected to <a href="https://www.airandspaceforces.com/article/bombers-in-2050/" target="_blank" rel="">fly into the 2050s</a>, which would push some individual airframes toward 100 years of service.</p><p>“This CERP critical design review is the culmination of an enormous amount of engineering and integration work from Boeing, Rolls Royce, and the Air Force that will enable the B-52J to remain in the fight for future generations,” Lt. Col. Tim Cleaver, the program manager within the Air Force Life Cycle Management Center’s Bombers Directorate, <a href="https://www.aflcmc.af.mil/" target="_blank" rel="">said in the release</a>. “It’s that point that you go from having a concept turned into a design, to then turning that design into something physical.”</p><p>Boeing, the integration prime contractor, will perform the modification work at its San Antonio facility, the release said.</p><p>“CDR is a milestone that showcases the kinds of complex systems engineering, propulsion integration, structural analysis and electrical architecture challenges our teams get to dive into every day,” Jamie Burgess, vice president and general manager of Boeing Mobility, Surveillance &amp; Bombers, said in a statement. The work, he said, “puts us one step closer to modifying the first two B-52H aircraft into the B-52J configuration in San Antonio later this year.”</p><p>The milestone arrives years behind the original schedule.</p><p>The CDR was originally scheduled to occur three years earlier, Air Force Life Cycle Management Center <a href="https://www.twz.com/air/first-b-52-to-arrive-for-re-engining-at-boeing-plant-later-this-year" target="_blank" rel="">confirmed to The War Zone</a>. Integration work on the first aircraft is now set to begin in fiscal 2027, with modification of the second aircraft starting in fiscal 2028. Ground and flight testing follow in fiscal 2029. The Air Force is targeting fiscal 2033 for initial operational capability, three years later than originally planned. </p><p>The Pentagon awarded Boeing <a href="https://www.defensenews.com/air/2026/01/06/us-air-force-awards-boeing-2b-contract-to-begin-b-52-engine-upgrades/" target="_blank" rel="">a contract worth more than $2 billion</a> in December 2025 to finish integration work and to modify and test the first two aircraft. The total program is now <a href="https://www.airandspaceforces.com/first-b-52j-engine-upgrade-successful-design-review/" target="_blank" rel="">expected to cost</a> roughly $15 billion, and the <a href="https://www.dodig.mil/reports.html/" target="_blank" rel="">Defense Department inspector general</a> estimates that a dozen B-52 modernization programs combined will run $48.6 billion.</p><p>A <a href="https://www.dote.osd.mil/Portals/97/pub/reports/FY2023/af/2023b-52j-cerp.pdf?ver=ZTWHb5dG6cK2KOHYsAnOVA%3d%3d" target="_blank" rel="">2023 Director of Operational Test and Evaluation report</a> warned that the program’s buying strategy carries significant risk. </p><p>Two of the 76 B-52s will serve as test aircraft. The Air Force plans to award low-rate production contracts for 51 of the remaining 74 before operational testing finishes in fiscal 2032. That concurrency could make problems discovered late in testing considerably more expensive to fix.</p><p>The engine swap is only part of the B-52’s enduring story. The BUFF also gets new generators, modernized subsystems and a new radar under a separate program already in testing at Edwards Air Force Base, California. </p><p>Fleet readiness has slipped in recent years: the B-52’s mission capable rate fell from 59% in 2021 to 54% in fiscal 2024, <a href="https://www.defensenews.com/air/2025/03/06/air-force-aircraft-readiness-plunges-to-new-low-alarming-chief/" target="_blank" rel="">according to Air Force data analyzed by Defense News</a>. The engine swap and broader B-52J upgrades are expected to reverse that trend.</p>]]></content:encoded><media:thumbnail url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/7CUKOUFG3NBBDAJOIVWH4YAHG4.jpg" type="image/jpeg"/><enclosure url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/7CUKOUFG3NBBDAJOIVWH4YAHG4.jpg" type="image/jpeg"/><media:content url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/7CUKOUFG3NBBDAJOIVWH4YAHG4.jpg" type="image/jpeg" height="2368" width="4928"><media:description type="plain"><![CDATA[U.S. and Italian aircraft consisting of F-35 Lightning IIs, F-16 Fighting Falcons and a B-52 Stratofortress, fly in formation over the Adriatic Sea, June 4, 2019. (Staff Sgt. Joshua R. M. Dewberry/Air Force)]]></media:description><media:credit role="author" scheme="urn:ebu">Joshua Dewberry</media:credit></media:content></item><item><title><![CDATA[NATO nations size up an interceptor-drone bazaar where low price is everything]]></title><news:push>0</news:push><link>https://www.defensenews.com/global/europe/2026/05/05/nato-nations-size-up-an-interceptor-drone-bazaar-where-low-price-is-everything/</link><category> / Europe</category><guid isPermaLink="true">https://www.defensenews.com/global/europe/2026/05/05/nato-nations-size-up-an-interceptor-drone-bazaar-where-low-price-is-everything/</guid><dc:creator><![CDATA[Katie Livingstone]]></dc:creator><description><![CDATA[A price point advantage is no longer measured in millions of dollars below the competition, but in mere thousands.]]></description><pubDate>Tue, 05 May 2026 15:56:16 +0000</pubDate><content:encoded><![CDATA[<p>KYIV, Ukraine — Lithuania, a NATO state bordering Russia and Belarus, bought 48 Merops interceptors from American manufacturer Perennial Autonomy on April 22, becoming the latest NATO country to buy into the $15,000 per-shot counter-drone system.</p><p>The pilot purchase, made without competitive bidding, follows earlier Merops deployments and training with Polish and Romanian forces along NATO’s eastern flank.</p><p>The system is an example of a new crop of drone countermeasures marketed under an ultra-low-cost mantra that promises to even out a longstanding imbalance in air defense: Intercepting aerial threats like drones is exponentially more expensive than launching them.</p><p>It’s a brave new world for arms vendors, especially in the West, nursed on lavish defense budgets over decades. A price point advantage is no longer measured in millions of dollars below the competition, but in mere thousands.</p><p>Merops is “capable of intercepting Shahed, Gerbera, and other similar targets,” Lithuanian Defense Minister Robertas Kaunas said, according to national broadcaster<a href="https://www.lrt.lt/en/news-in-english/19/2906360/lithuanian-govt-greenlights-pilot-buy-of-us-interceptor-drones?srsltid=AfmBOooTGOu-sOxDxmLy7hehb5ZanCyMSpyiMQZiS5gTXxCRgiMQgACD" target="_blank" rel=""> LRT</a> – a claim the manufacturer, Perennial Autonomy, confirmed to Military Times, saying Merops has already successfully engaged both target types in combat.</p><p>The American-made system saw its first official combat confirmation last month, when Army Secretary Dan Driscoll told Congress that Merops had been used to down Iranian Shaheds aimed at U.S. troops in the Middle East.</p><p>The Army bought 13,000 Merops interceptors in eight days after Iran began launching drones at U.S. positions in late February, Driscoll said in April 16 testimony.</p><p>The Pentagon turned to Merops after burning through hundreds of Patriot missiles defending against Iranian Shaheds – each Patriot costing more than $3 million, drawing down stockpiles Ukraine has long depended on for its own air defense.</p><p>“They protected U.S. troops,” Driscoll told lawmakers, defending the $15,000 unit cost as a fraction of what a Shahed costs to produce. “We will make that trade all day long.”</p><p>Merops is built by Perennial Autonomy, the secretive defense startup former Google chief executive Eric Schmidt launched in 2023 as White Stork, according to<a href="https://www.forbes.com/sites/sarahemerson/2024/01/23/eric-schmidts-secret-white-stork-project-aims-to-build-ai-combat-drones/" target="_blank" rel=""> Forbes</a>.</p><p>The company rebranded to Project Eagle in February 2024, and again to Perennial Autonomy, and pulled in former Pentagon innovation chief Will Roper alongside engineers from Apple, SpaceX and Google.</p><p>Merops’s closest peers are Ukrainian drones – which are cheaper, have been in combat longer, and are already winning NATO buyers of their own.</p><p>Schmidt set out to build attack drones, but was soon convinced by his Ukrainian hosts that defensive interceptor drones – built to take out incoming drones mid-air, minimizing ground damage – were the best investment. Ukrainian forces first<a href="https://www.defensenews.com/unmanned/2026/04/20/us-army-turns-to-ukraine-tested-drones-to-counter-iranian-uav-threat/" target="_blank" rel=""> deployed Merops as a Shahed interceptor</a> in June 2024, and Poland and Romania have since fielded it along NATO’s eastern flank.</p><p>Ukrainian air defense, which averaged roughly 90% interception rates of incoming Russian drones and 80% of cruise missiles in March, has taken the spotlight worldwide as Iranian Shaheds and other unmanned air and ground vessels have caused hundreds of American casualties and billions in damage to US military assets since the war in the Middle East kicked off over two months ago. </p><img src="https://archetype-military-times-prod.web.arc-cdn.net/resizer/v2/TDl8vpNJd7ErxTGhBFRDbh1MHYQ=/cloudfront-us-east-1.images.arcpublishing.com/archetype/362XVXUUWFCHDGSSU7MW3COL7E.jpg" alt="A Bullet interceptor drone from General Cherry is on display at Xponential Europe in Düsseldorf, Germany, on March 24, 2026. (Henning Kaiser/picture alliance via Getty Images)" height="5162" width="7742"/><p>Typical Ukrainian-built interceptors run $1,000 to $3,000 a unit and have downed thousands of Russian Shaheds since 2024, with kills logged through<a href="https://www.militarytimes.com/unmanned/2026/02/09/ukraine-seeks-god-mode-with-new-control-app-for-drone-war/" target="_blank" rel=""> Ukraine’s Mission Control battlefield system</a>.</p><p>Merops has logged more than 1,000 Shahed-type intercepts in Ukraine since combat testing began in mid-2024,<a href="https://militarnyi.com/en/news/mysterious-merops-intercepted-more-than-a-thousand-shahed-like-drones-over-ukraine/" target="_blank" rel=""> Militarnyi</a> reported. The Pentagon has yet to disclose a Middle East engagement count or per-target success rate.</p><p>No interceptor system holds a clear edge, said Stanislav Gryshyn, co-founder of Ukrainian interceptor maker General Cherry. </p><p>Their drones ranked first among Ukrainian producers in enemy kills in March, with units logging 11,473 confirmed hits – 5,800 more than the previous month – the highest absolute growth in effectiveness of any tracked system in the period, according to <a href="https://militarnyi.com/en/news/general-cherry-drones-interceptions-march/" target="_blank" rel="">Militarnyi</a>.</p><p>The company’s jet-powered Bullet interceptor recorded 3,296 visually confirmed kills in February alone, verified through Ukraine’s Delta battle-management system, Gryshyn told Military Times.</p><p>“Anyone claiming one product is better in all respects is either lying or misunderstanding the market,” Gryshyn said.</p><p>Four Ukrainian-built interceptors dominate the Shahed-killing fleet: SkyFall’s P1-SUN, Wild Hornets’ Sting, the Ukrainian-British Octopus, and General Cherry’s Bullet.</p><p>The Army has deployed roughly 20 Merops complexes to one Middle East site staffed by more than 100 soldiers, about 10 complexes to a second site, and 1,000 armed and unarmed interceptors across the two locations, according to<a href="https://www.businessinsider.com/us-army-surged-largest-counter-drone-training-mission-middle-east-2026-4" target="_blank" rel=""> Business Insider</a>. The Surveyor interceptor is flown with an Xbox controller, the publication reported.</p><p>Perennial Autonomy also makes the Bumblebee V2, a multirotor FPV interceptor already deployed in Ukraine, on a separate $5.2 million Pentagon contract, according to<a href="https://www.calibredefence.co.uk/bumblebee-drone-to-bolster-us-counter-uas-capabilities/" target="_blank" rel=""> Calibre Defence</a>.</p><p>Bullet works differently. The jet-powered interceptor tops 300 kilometers per hour, climbs to 6,000 meters, and runs on a four-person crew – driver, operator, navigator, communications – Gryshyn told Military Times.</p><p>“The guidance system predicts the target and reacts at high speed,” Gryshyn said. “The operator confirms via FPV goggles, and the system completes the intercept.”</p><p>Production is the bottleneck. Ukraine has scaled interceptor manufacturing through three parallel channels, with output in the first four months of 2026 already surpassing all of 2025,<a href="https://euromaidanpress.com/2026/04/28/ukraine-doubled-all-of-2025s-interceptor-drones-in-just-four-months-minister-says/" target="_blank" rel=""> Defense Minister Mykhailo Fedorov said</a> April 27.</p><p>“Our task is to ensure a stable supply of interceptors to the military and to protect Ukrainians from Shahed attacks,” Fedorov said.</p><figure><video height="720" width="1280" poster="https://d3k85ws6durfp9.cloudfront.net/05-05-2026/t_849a88fb7b754007a02c8250c40c6ad1_name_Gen_Cherry_Short_Thumb.jpg"><source src="https://d1aodq6o8zrvmc.cloudfront.net/wp-archetype/20260505/69fa0829b0fea020b6f19a5e/t_9f457edc80564db19513d1726d5a9c0c_name_Gen_Cherry_Shahed_Horiz/file_1280x720-2000-v3_1.mp4" type="video/mp4"/></video><figcaption>A video published by drone maker General Cherry claims to show an interceptor drone bringing down multiple Russian Shahed drones.</figcaption></figure><p><a href="https://www.gencherry.com/" target="_blank" rel="">General Cherry</a> can currently scale to 100,000 drones a month and is still expanding its manufacturing capabilities, Gryshyn told Military Times.</p><p>The company signed production deals in March and April with New Hampshire-based Wilcox Industries and Croatia’s Orqa, seeding distributed NATO production lines.</p><p>The Pentagon has committed more than $600 million to counter-drone procurement since the Iran war opened, including $350 million for CENTCOM in the first 30 days,<a href="https://defensescoop.com/2026/04/10/drone-defense-middle-east-centcom-jiatf-401/" target="_blank" rel=""> DefenseScoop</a> reported.</p><p>Drone spending will run “conservatively, $54 billion” in fiscal 2027 – “closer to $74 billion” once counter-drone programs are added, Defense Secretary Pete Hegseth told the House Armed Services Committee on Wednesday in his first congressional appearance since the Iran war began.</p><p>Competition for those dollars is fierce – and Ukrainian manufacturers are already strong players.</p><p>SkyFall’s Shrike 10 Fiber, submitted through U.K. partner Skycutter, took first place in the opening round of the Pentagon’s $1.1 billion<a href="https://www.militarytimes.com/news/pentagon-congress/2026/02/20/how-commercial-drones-make-the-pentagons-blue-uas-select-list/" target="_blank" rel=""> Drone Dominance program</a> – a four-round competition of strike drones between 25 companies at Fort Benning, Georgia, aiming to field more than 300,000 low-cost drones for U.S. forces – with two of the top six finishers Ukrainian-designed.</p><p>No equivalent open competition exists for interceptor drones like Bullet. Merops side-stepped the traditionally slow procurement process by getting fast-tracked through the Army’s G-TEAD program, which aims to provide troops with “combat‑credible capabilities at the speed of war,” <a href="https://www.army.mil/article/291379/" target="_blank" rel="">the U.S. Army</a> said last month.</p><p>Now, Merops has been flagged as a transition candidate for a program of record under Project Manager Close Combat Systems, the step from prototype to sustained acquisition.</p><p>Even at scale, the Pentagon’s floor is Ukraine’s ceiling.</p><p>Merops could drop to $10,000 a piece at scale, Driscoll said. Ukrainian-built interceptors are already well below that price point.</p><p>The directive from Kyiv, Fedorov said in an April Telegram post, is to defeat Russia by “degrading its economic capacity” – and price asymmetry is the lever. Russia launched a record 6,663 drones at Ukraine in April, averaging 222 a night, according to the air force.</p><p>A defense engineered for that volume cannot run on $15,000 systems, a lesson Ukraine has learned and is now beginning to sell abroad.</p><p>“When you need to shoot down 60 Shaheds at once, you need $2,000 systems, not $15,000 complexes,” Gryshyn told Military Times.</p><p>Ukraine asked the Pentagon last August to help scale interceptor manufacturing. Washington declined.</p><p>Kyiv is opening the market on its own.</p><p>Zelenskyy unveiled an arms-export framework April 27, citing up to 50% surplus capacity in parts of the defense industry and naming the Middle East and Persian Gulf, Europe and the Caucasus as target markets. Ukrainian forces get first claim on production; surplus goes abroad.</p><p>“The export of Ukrainian weapons will become a reality,” Zelenskyy said last week.</p>]]></content:encoded><media:thumbnail url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/2PXPJAWWIJHTZD3G4TYZHPUQY4.jpg" type="image/jpeg"/><enclosure url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/2PXPJAWWIJHTZD3G4TYZHPUQY4.jpg" type="image/jpeg"/><media:content url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/2PXPJAWWIJHTZD3G4TYZHPUQY4.jpg" type="image/jpeg" height="2857" width="4000"><media:description type="plain"><![CDATA[A Polish Army soldier prepares an AS3 Surveyor interceptor drone, part of the U.S. counter-drone system known as 'MEROPS,' during a live-fire demonstration at the Deba training grounds in Subcarpathian Voivodeship, Poland, on Nov. 18, 2025. (Artur Widak/NurPhoto via Getty Images)]]></media:description><media:credit role="author" scheme="urn:ebu">NurPhoto</media:credit></media:content></item><item><title><![CDATA[Air Force clears T-7A Red Hawk for low-rate production]]></title><news:push>0</news:push><link>https://www.defensenews.com/news/your-air-force/2026/05/04/air-force-clears-t-7a-red-hawk-for-low-rate-production/</link><category> / MilTech</category><guid isPermaLink="true">https://www.defensenews.com/news/your-air-force/2026/05/04/air-force-clears-t-7a-red-hawk-for-low-rate-production/</guid><dc:creator><![CDATA[Michael Scanlon]]></dc:creator><description><![CDATA[The decision authorizes a $219 million contract for the first 14 aircraft.]]></description><pubDate>Mon, 04 May 2026 23:42:42 +0000</pubDate><content:encoded><![CDATA[<p>The U.S. Air Force approved low-rate initial production of Boeing’s <a href="https://www.militarytimes.com/air/2021/12/17/the-t-7-takes-shape-inside-the-factory-where-the-air-forces-next-trainer-is-being-built/?contentFeatureId=f0fmoahPVC2AbfL-2-1-8&amp;contentQuery=%7B%22includeSections%22%3A%22%2Fhome%22%2C%22excludeSections%22%3A%22%22%2C%22feedSize%22%3A10%2C%22feedOffset%22%3A935%7D" target="_blank" rel="noreferrer" title="https://www.militarytimes.com/air/2021/12/17/the-t-7-takes-shape-inside-the-factory-where-the-air-forces-next-trainer-is-being-built/?contentFeatureId=f0fmoahPVC2AbfL-2-1-8&amp;contentQuery=%7B%22includeSections%22%3A%22%2Fhome%22%2C%22excludeSections%22%3A%22%22%2C%22feedSize%22%3A10%2C%22feedOffset%22%3A935%7D">T-7A Red Hawk</a> advanced trainer, setting the stage for the long-awaited replacement of the service’s 60-year-old <a href="https://www.militarytimes.com/video/2018/11/16/in-the-wake-of-another-crash-whats-going-on-with-the-t-38c/" target="_blank" rel="noreferrer" title="https://www.militarytimes.com/video/2018/11/16/in-the-wake-of-another-crash-whats-going-on-with-the-t-38c/">T-38 Talon</a>.</p><p>The April 23 decision authorizes a $219 million contract for the first 14 aircraft, along with spares, support equipment and training, the Air Force announced Monday. The service is targeting initial operational capability in 2027.</p><p>The approval means the aircraft cleared Milestone C, a point in the defense acquisition process that marks the transition from development to manufacturing.</p><p>“Reaching Milestone C is a testament to the dedicated government and industry teams who have worked diligently to overcome complex technical hurdles,” William Bailey, who’s performing the duties of the assistant secretary of the Air Force for acquisition, technology and logistics, said in a statement. “The T-7A is a pivotal program for the future of our combat air forces.”</p><p>For Air Education and Training Command, the urgency is generational.</p><p>“Our mission is to train the next generation of combat aviators, and the T-7A Red Hawk is the tool we need to do it,” said Brig. Gen. Matthew Leard, AETC director of plans, programs, requirements and international affairs. “Replacing our 60-plus-year-old T-38s is a top priority. The T-7A’s advanced systems will give our students a far more realistic training environment, ensuring they are prepared for the cockpits of the future.”</p><p>For Boeing, the production green light comes after years of schedule delays and a fixed-price development contract plagued by ejection seat deficiencies, flight control software issues and supply chain problems. <a href="https://www.flightglobal.com/fixed-wing/troubled-t-7a-takes-step-forward-with-successful-sled-ejection-test/162874.article" target="_blank" rel="">Flight Global reported</a> last year that Boeing’s losses on the program had surpassed $1.8 billion.</p><p>“Boeing is honored to work with our U.S. Air Force partner in achieving this historic milestone in the T-7A Red Hawk’s journey,” Andy Adams, vice president and program manager for Boeing T-7 programs, said in a statement. “Getting this pathfinding digitally designed, built and tested advanced trainer into the hands of Air Force instructors and students remains our focus, and Milestone C positions us to start low-rate initial production this year.”</p><p>Despite the production approval, the Air Force is proceeding cautiously. Each of the first three low-rate production lots will be green-lighted separately, allowing officials to apply lessons from ongoing testing before committing to subsequent batches.</p><p>The full program calls for 351 T-7A aircraft and 46 ground-based training simulators across five AETC bases. Boeing secured the original $9.2 billion contract in September 2018 in partnership with Sweden’s Saab, which builds the aircraft’s aft fuselage. </p><p>The aircraft, named in honor of the red-tailed fighters flown by the <a href="https://www.militarytimes.com/video/2017/02/22/the-many-missions-and-accolades-of-the-tuskegee-airmen/" target="_blank" rel="noreferrer" title="https://www.militarytimes.com/video/2017/02/22/the-many-missions-and-accolades-of-the-tuskegee-airmen/">Tuskegee Airmen</a> in World War II, first arrived at Joint Base San Antonio-Randolph on Dec. 5, 2025. It is being integrated into the 99th Flying Training Squadron, which traces its lineage directly to the original Tuskegee unit.</p>]]></content:encoded><media:thumbnail url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/UEUYWVXNBZHSHMB5CHWMUH5PBE.jpg" type="image/jpeg"/><enclosure url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/UEUYWVXNBZHSHMB5CHWMUH5PBE.jpg" type="image/jpeg"/><media:content url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/UEUYWVXNBZHSHMB5CHWMUH5PBE.jpg" type="image/jpeg" height="4751" width="9414"><media:description type="plain"><![CDATA[The inaugural flight of the U.S. Air Force's first T-7A Red Hawk in 2023. (Boeing)]]></media:description><media:credit role="author" scheme="urn:ebu">Eric Shindelbower</media:credit></media:content></item><item><title><![CDATA[Israel to buy more F-35 and F-15 warplanes]]></title><news:push>0</news:push><link>https://www.defensenews.com/global/mideast-africa/2026/05/04/israel-to-buy-more-f-35-and-f-15-warplanes/</link><category> / Mideast Africa</category><guid isPermaLink="true">https://www.defensenews.com/global/mideast-africa/2026/05/04/israel-to-buy-more-f-35-and-f-15-warplanes/</guid><dc:creator><![CDATA[Tzally Greenberg]]></dc:creator><description><![CDATA[The aircraft purchases are part of a decade-long modernization plan to the tune of $118 billion, the government said.]]></description><pubDate>Mon, 04 May 2026 12:44:12 +0000</pubDate><content:encoded><![CDATA[<p>JERUSALEM — The Israeli government’s ministerial committee for acquisitions has approved the parallel purchase of two new squadrons: a fourth squadron of F-35I fighters manufactured by Lockheed Martin, and a second squadron of F-15IA fighters manufactured by Boeing, according to a statement from the Israeli Defense Ministry and a military spokesman.</p><p>The statement vaguely noted that “the scope of the transactions is estimated at tens of billions of shekels and includes the absorption of the squadrons into the Air Force, comprehensive support, spare parts and logistics.”</p><p>The purchase is meant as “the first step in Israel’s force-building plan for the coming decade, with a total designated budget of 350 billion shekels ($118 billion),” the government said.</p><p>The announcement did not specify the number of aircraft to be purchased.</p><p>Israel already ordered a third squadron of F-35I in July 2023, consisting of 25 new aircraft bought for $3 billion in American aid money and expected to be delivered starting in 2028. It also ordered 25 F-15IA aircraft as part of an $8.6 billion American aid package last December. The procurement agreement at the time included an option to expand the purchase to 25 additional aircraft in the future.</p><p>The Israeli Defense Ministry notes that the Israeli Air Force will be required to make a “technological leap, including the development of autonomous flight capabilities, next-generation defense systems, and the establishment of Israeli military superiority, defensive and offensive, and in space” as part of Israel’s air force building plan.</p><p>Following the approval by the ministerial committee, the director-general of the Defense Ministry instructed the Israeli procurement delegation in the United States to proceed with the signing of the deals with the American government and military officials.</p><p>The F-35I is a stealth aircraft capable of penetrating deep into enemy territory and operating against advanced anti-aircraft systems. The uniqueness of the Israeli model lies in the integration of Israeli-made electronic warfare, communication and control systems into the aircraft’s closed software. Receiving the fourth squadron will increase Israel’s F-35I aircraft to approximately 100 — double what it currently possesses.</p><p>The F-15IA is Boeing’s Israeli variant of the F-15EX, designed for heavy engagement and long-range missions. It boasts an immense payload capacity of up to 29,500 pounds, a digital fly-by-wire system, and advanced radar. Upon receiving the second squadron, Israel will also double the number of these aircraft to 50.</p><p>The two new squadrons are being sought amid tensions with Teheran and due to “operational lessons from Operation Lion Roar,” the Israeli announcement said, “in order to ensure the superiority of the Israeli Air Force in the coming decades.”</p>]]></content:encoded><media:thumbnail url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/AVJE7KZHKJDNHILQLAT6CSBHLY.jpg" type="image/jpeg"/><enclosure url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/AVJE7KZHKJDNHILQLAT6CSBHLY.jpg" type="image/jpeg"/><media:content url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/AVJE7KZHKJDNHILQLAT6CSBHLY.jpg" type="image/jpeg" height="3132" width="4707"><media:description type="plain"><![CDATA[An Israeli F-35I Adir taxis out for a drill during Red Flag at Nellis Air Force Base, Nev., on March, 15 2023. (William R. Lewis/U.S. Air Force)]]></media:description></media:content></item><item><title><![CDATA[Pacific Marines will be first to test-drive new pilot-optional helicopter]]></title><news:push>0</news:push><link>https://www.defensenews.com/industry/techwatch/2026/04/30/pacific-marines-will-be-first-to-test-drive-new-pilot-optional-helicopter/</link><category> / MilTech</category><guid isPermaLink="true">https://www.defensenews.com/industry/techwatch/2026/04/30/pacific-marines-will-be-first-to-test-drive-new-pilot-optional-helicopter/</guid><dc:creator><![CDATA[Hope Hodge Seck]]></dc:creator><description><![CDATA[The service is “aggressively pursuing” an operational demo in 2027 for the Aerial Logistics Connector.]]></description><pubDate>Thu, 30 Apr 2026 20:30:08 +0000</pubDate><content:encoded><![CDATA[<p>The biggest of the aircraft planned for the Marines’ arsenal of <a href="https://www.navair.navy.mil/product/Unmanned-Logistics-Systems-Air" target="_blank" rel="noreferrer" title="https://www.navair.navy.mil/product/Unmanned-Logistics-Systems-Air">unmanned flying logistics</a> trucks is expected to be put through its paces at one of the Corps’ littoral regiments in the Pacific next year, officials said Tuesday.</p><p>The service is “aggressively pursuing” an operational demo in 2027 for the <a href="https://airbusus.com/2025/05/20/airbus-completes-second-aerial-logistics-connector-demo/" target="_blank" rel="noreferrer" title="https://airbusus.com/2025/05/20/airbus-completes-second-aerial-logistics-connector-demo/">Aerial Logistics Connector</a>, or ALC, said Lt. Col. Ben Link, head of vertical takeoff and landing concepts for the Marines’ Cunningham Group, an aviation-focused innovation unit.</p><p>“We will fight with prototypes and rapidly learn and refine our requirements,” Link told an audience at the Modern Day Marine exposition in Washington, D.C. “ALC’s mission is clear and critical — to provide autonomous airborne logistics to sustain the stand-in force. ALC is a key component to all-domain logistics, which enables [the Department of Defense], ensuring our distributed units remain supplied, lethal and combat-ready.”</p><p>Last June, Airbus and the Alexandria, Va.-based Parry Labs announced a partnership to develop a <a href="https://www.l3harris.com/newsroom/editorial/2026/04/autonomous-logistics-marine-corps-next-combat-advantage" target="_blank" rel="">drone version of the UH-72 Lakota helicopter for the ALC program</a>. This month, the team, working alongside L3Harris Technologies and Shield AI, announced the aircraft’s fourth autonomous flight test, also saying they demonstrated the relevant technologies aboard an <a href="https://www.airbus.com/en/products-services/helicopters/civil-helicopters/h145" target="_blank" rel="noreferrer" title="https://www.airbus.com/en/products-services/helicopters/civil-helicopters/h145">Airbus H-145 Multi-Role Light-Twin helicopter</a>, “executing autonomous flight while avoiding obstacles and safely landing in conditions that mirror real-world environments.”</p><p>Near Earth Autonomy is also working on ALC, <a href="https://www.auvsi.org/news/near-earth-autonomy-achieves-first-autonomous-flight-of-leonardo-aw139-helicopter-for-u-s-marine-corps-aerial-logistics-connector-program/" target="_blank" rel="">conducting an autonomous test flight last year</a> on a Leonardo AW139 helicopter.</p><p>ALC is not to be confused with Medium Aerial Resupply Vehicle — Expeditionary Logistics (MARV-EL), a similarly sized autonomous logistics chopper. This month, Near Earth and Lockheed Martin received separate prototyping contracts or MARV-EL. </p><p>In fact, the Marine Corps is likely still tinkering with its concepts for the aircraft.</p><p>“They’re very complimentary, very similar requirements, but we’re taking a deep look at where we are today and where that system needs to go,” Link said. “As it stands today, MARV-EL is designed to be an organic logistics air vehicle owned and operated by the ground force. ALC is general support to the [Marine Air-Ground Task Force], owned and operated by the aviation side.”</p><p>Nonetheless, the plan to push ALC out to one of the Marine Littoral Regiments in the Pacific for tinkering shows a growing interest in using these units for testing, experimentation and concept development. In 2025, leaders of the Okinawa-based 12th MLR hailed the utility of the <a href="https://www.marinecorpstimes.com/news/your-marine-corps/2025/10/31/marine-corps-greenlights-boat-based-recon-companies-narco-subs/" target="_blank" rel="">autonomous low-profile vessel (ALPV)</a>, a logistics platform based on a narco-sub that was sent to them for testing. In planning guidance released last October, Marine Corps Commandant Gen. Eric Smith announced that the semi-submersibles would be transitioning to a program of record for the Corps based on their trial period in the Pacific.</p><p><a href="https://www.marinecorpstimes.com/news/your-marine-corps/2025/10/31/marine-corps-greenlights-boat-based-recon-companies-narco-subs/">Marine Corps greenlights boat-based recon companies, narco-subs</a></p><p>Link said the Corps wanted both of the prime vendors for ALC to provide a flying prototype for the demo.</p><p>“Very likely, they will not be completely autonomous aircraft, as we envision to achieve by the end of the middle tier of acquisition,” he said, adding the service was now two years into a five-year acquisition program. “What we’re looking to pull is two aircraft at a minimum, one from each vendor, that’s optionally piloted, so we can run a full mission autonomy experiment with our MLR OCONUS and really put it in [the Marines’] hands … so we really are looking to learn a lot from their perspective on what they need, as one of the use cases for ALC.”</p><p>As the Marines illustrated in a Venn diagram chart at the conference, the service is developing ALC, its large autonomous logistics platform, alongside four other autonomous aircraft projects: MUX-TACAIR, a collaborative combat aircraft designed to fly alongside manned fighters; Future Attack Strike (FASt), an attack platform that may be optionally piloted and will also be optimized for manned-unmanned teaming; MUX-MALE, the Corps’ MQ-9 Reaper program for intelligence, surveillance and reconnaissance; and Organic ISR, a future Group 3 UAS that will “provide persistent overhead coverage for Marines on the ground, in addition to executing whatever missions that the [aviation combat element] requires to remain relevant in the future,” Link said.</p><p>If that’s confusing now, it’s likely to become only more so in coming years.</p><p>“Fast forward a few years, and you look at emerging capabilities, and the lines start to blur,” said Maj. Michael Zbonack, a planner with Future Concepts UAS. " … The end result that we’re driving for is a high-low mix of a family of systems delivering a wide range of capabilities to support the MAGTF."</p>]]></content:encoded><media:thumbnail url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/CS7PYW4NDJE3BPNT3NN6QTB4SM.jpg" type="image/jpeg"/><enclosure url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/CS7PYW4NDJE3BPNT3NN6QTB4SM.jpg" type="image/jpeg"/><media:content url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/CS7PYW4NDJE3BPNT3NN6QTB4SM.jpg" type="image/jpeg" height="1353" width="1920"><media:description type="plain"><![CDATA[A rendering of Airbus' UH-72 Unmanned Logistics Connector, a version of its Lakota helicopter, which could support Marine Corps resupply missions to distributed forces. (Airbus)]]></media:description></media:content></item><item><title><![CDATA[From prototypes to production: US Air Force seeks nearly $1B for initial CCA procurement]]></title><news:push>0</news:push><link>https://www.defensenews.com/news/your-military/2026/04/30/from-prototypes-to-production-us-air-force-seeks-nearly-1b-for-initial-cca-procurement/</link><category>Pentagon</category><guid isPermaLink="true">https://www.defensenews.com/news/your-military/2026/04/30/from-prototypes-to-production-us-air-force-seeks-nearly-1b-for-initial-cca-procurement/</guid><dc:creator><![CDATA[Michael Scanlon]]></dc:creator><description><![CDATA[In a first, the Air Force is asking Congress to fund the purchase of Collaborative Combat Aircraft, marking the beginning of the “loyal wingman" era.]]></description><pubDate>Thu, 30 Apr 2026 17:19:41 +0000</pubDate><content:encoded><![CDATA[<p>For the first time, the U.S. Air Force is asking Congress to fund the purchase of Collaborative Combat Aircraft, marking the beginning of the “loyal wingman” era.</p><p>The service’s <a href="https://www.saffm.hq.af.mil/FM-Resources/Budget/Air-Force-Presidents-Budget-FY27/" target="_blank" rel="">fiscal 2027 budget request</a> includes $996.5 million in procurement funding to begin production of Increment 1 Collaborative Combat Aircraft, plus $150 million in advance procurement for FY28.</p><p>Combined with roughly $1.37 billion in continued research and development, up from $827 million in FY26, the total program request reaches roughly $2.37 billion, according to <a href="https://comptroller.war.gov/Portals/45/Documents/defbudget/FY2027/FY2027_p1.pdf" target="_blank" rel="">Pentagon comptroller documents</a> released April 3.</p><p>The CCA procurement line stands out as the single largest new addition to the <a href="https://www.saffm.hq.af.mil/FM-Resources/Budget/Air-Force-Presidents-Budget-FY27/" target="_blank" rel="">Air Force’s $30.64 billion aircraft procurement account</a>, the clearest sign yet that the program is moving from the test range into the operational fleet.</p><p>Unlike traditional remotely piloted drones such as the MQ-9 Reaper, Collaborative Combat Aircraft are jet-powered, semi-autonomous systems designed to operate alongside crewed fighters such as the F-35, F-22 and future F-47. The pilot in the manned jet serves as mission commander, while the CCAs, the “loyal wingmen,” use onboard autonomy for navigation, maneuvering, sensor fusion and weapons employment.</p><p>Increment 1 CCA will focus primarily on air-to-air and strike missions, with electronic warfare and ISR variants planned for later increments. The Air Force has previously signaled interest in <a href="https://www.congress.gov/crs-product/IF12740" target="_blank" rel="">acquiring 100–150 aircraft in Increment 1</a> as part of a longer-term goal of hundreds to low thousands across multiple increments.</p><p>The CCA program was developed to address a core operational problem. Crewed fighters alone cannot generate sufficient combat mass against a peer adversary like China. CCAs are designed to be affordable enough to lose, capable enough to fight and numerous enough to matter, accepting risks that would otherwise fall to crewed fighters.</p><p>The Air Force’s notional plan calls for each manned fighter to command <a href="https://crsreports.congress.gov/product/pdf/IF/IF12740" target="_blank" rel="">two CCAs</a>, though testing and simulation suggest one pilot can effectively manage <a href="https://www.airandspaceforces.com/cca-developments-ratio-autonomy/" target="_blank" rel="">three to five</a>, potentially more.</p><p>The FY27 request backs that vision with real procurement dollars for the first time. It commits the service, industry and Congress to treating CCA as a permanent part of the future fleet rather than an experiment. </p><p>That shift, however, forces several key decisions the Air Force has not yet made: where the aircraft will be based; who will maintain them; how pilots and maintainers will be trained; and how they will integrate into existing fighter squadrons.</p><p>Despite those challenges, the increased R&amp;D funding signals that Increment 1 is only the beginning. <a href="https://breakingdefense.com/2025/12/cca-round-2-air-force-picks-9-vendors-for-next-batch-of-drone-wingmen/" target="_blank" rel="">Nine vendors are already under contract</a> for Increment 2 prototypes, and service officials have indicated <a href="https://www.airandspaceforces.com/air-force-revisiting-production-goals-cca-increment-2/" target="_blank" rel="">wargaming favors larger numbers of lower-cost CCAs</a> for a Pacific fight.</p><p>A final production decision for Increment 1 is expected this summer. General Atomics’s YFQ-42A and Anduril’s YFQ-44A are the lead competitors, with Northrop Grumman’s YFQ-48A in testing for later phases. Budget documents do not specify exact CCA quantities for the FY27 lot, but <a href="https://defensescoop.com/2026/04/06/air-force-wants-to-procure-first-cca-drones-in-2027/" target="_blank" rel="">analysts estimate roughly 30 airframes,</a> depending on final unit costs. </p><p>Col. Timothy Helfrich, the program’s portfolio acquisition executive, <a href="https://www.airandspaceforces.com/air-force-beating-goal-cost-cca-drones/" target="_blank" rel="">said during a Defense One panel on March 25</a> the program is currently tracking below the original $30 million per-unit target.</p><p>While beating cost targets is a welcome development, production transitions are seldom without hiccups. Autonomy software, supply chain maturity and integration with manned platforms remain works in progress. Whether to aggressively scale Increment 1 or accelerate Increment 2 could prove a challenging balancing act, and how CCAs will be fielded across active-duty, Guard and Reserve units remains unclear. </p><p>Those operational questions will ultimately be shaped in large part by Congress, where approval itself remains another hurdle. </p><p>While the CCA procurement request sits squarely in the base budget, offering a cleaner path than items pushed through <a href="https://www.airforcetimes.com/news/pentagon-congress/2026/04/28/pentagons-fy27-budget-seeks-85-f-35s-but-most-ride-on-reconciliation/" target="_blank" rel="">reconciliation</a>, lawmakers have already <a href="https://www.congress.gov/crs-product/IF12740" target="_blank" rel="">requested detailed briefings</a> on mission sets, human-machine interfaces, production scaling and integration plans. Any push for minimum quantity language or additional oversight is likely to appear in the FY27 markup.</p><p>While the program waits on Congress, an outside vote of confidence has already arrived. On April 23, the Netherlands became the first ally to commit funding for two Increment 1 CCAs. <a href="https://www.af.mil/News/Article-Display/Article/4467936/usaf-netherlands-formalize-partnership-on-collaborative-combat-aircraft-develop/" target="_blank" rel="">Under the partnership</a>, the aircraft will remain U.S. property and operate with the Air Force’s Experimental Operations Unit at Nellis AFB, with Dutch personnel embedded to help develop concepts of operations.</p><p>“The future fight will be fought with allies and partners,” Air Force Secretary Troy Meink <a href="https://www.af.mil/News/Article-Display/Article/4467936/usaf-netherlands-formalize-partnership-on-collaborative-combat-aircraft-develop/" target="_blank" rel="">said in an April 23 statement</a>. “By aligning our approaches early, we ensure interoperability and shared advantage in the era of human-machine teaming.”</p>]]></content:encoded><media:thumbnail url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/AK2RI42XJBCDVPB43XZQHWHDIM.jpg" type="image/jpeg"/><enclosure url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/AK2RI42XJBCDVPB43XZQHWHDIM.jpg" type="image/jpeg"/><media:content url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/AK2RI42XJBCDVPB43XZQHWHDIM.jpg" type="image/jpeg" height="4385" width="4203"><media:description type="plain"><![CDATA[A YFQ-44A production representative test vehicle sits in a testing chamber in Costa Mesa, California. (Air Force)]]></media:description><media:credit role="author" scheme="urn:ebu">Master Sgt. Gustavo Castillo</media:credit></media:content></item><item><title><![CDATA[Investigation: Russian shadow airlines use Algeria as base for secretive missions]]></title><news:push>0</news:push><link>https://www.defensenews.com/global/europe/2026/04/30/investigation-russian-shadow-airlines-use-algeria-as-base-for-secretive-missions/</link><category> / Europe</category><guid isPermaLink="true">https://www.defensenews.com/global/europe/2026/04/30/investigation-russian-shadow-airlines-use-algeria-as-base-for-secretive-missions/</guid><dc:creator><![CDATA[Linus Höller]]></dc:creator><description><![CDATA[Algeria has become a key customer for Russian arms at a time when Moscow has seen a slump in its military-export business after the invasion of Ukraine.]]></description><pubDate>Thu, 30 Apr 2026 10:08:25 +0000</pubDate><content:encoded><![CDATA[<p>BERLIN/VIENNA — A fleet of Russian military-affiliated cargo aircraft has made over a hundred flights to Algeria over the past year, likely delivering modern fighter jets and equipment to bolster an increasingly important Russian ally at Europe’s southern flank, and using the country as a hub to project Russia’s power deeper into Africa. </p><p>A Defense News investigation found at least 167 cargo flights linking Russia to Algeria between March 2025 and April 2026, making the North African country one of the key hubs in Moscow’s global freight network. </p><p>Many of the flights connected airfields associated with United Aircraft Corporation, Russia’s state-owned maker of military jets, to Algerian air bases. Several of the cargo flights also roughly coincided with the sighting of new Russian-made warplanes <a href="https://www.defensenews.com/global/europe/2026/02/10/russian-stealth-jets-have-arrived-in-north-africa-as-filmed-by-algerian-potato-farmer/" target="_blank" rel="">roaring over the Algerian countryside</a>.</p><p>The uptick in air traffic comes amid ongoing deliveries of several types of Russian-made warplanes to Algeria. The country is currently receiving Su-57 fifth-generation stealth fighter jets and Su-35 fighters from Russia. It also operates a fleet of about 60 Su-30 multirole fighters and around 40 MiG-29 air-superiority fighters.</p><p>At least some of the Russia-Algeria flights are likely linked to the flow of new-generation weaponry. “I think this is a pretty reasonable explanation for these flights,” said Margaux Garcia, a senior analyst with Washington-based C4ADS who tracks Russia’s covert activities.</p><p>Algeria has become a key customer for Russian arms at a time when Moscow has seen a slump in its billion-dollar military export business following the invasion of Ukraine.</p><p>
<iframe width="100%" style="aspect-ratio: 16/9;" src="data:text/html;base64,PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CjxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAiPgo8dGl0bGU+UnVzc2lhJ3MgU2hhZG93IEFpcmxpbmVzOiBGbGlnaHQgQ2lyY3VpdHMgVGhyb3VnaCBBbGdlcmlhPC90aXRsZT4KPHN0eWxlPgovKiByZXF1aXJlZCBzdHlsZXMgKi8NCg0KLmxlYWZsZXQtcGFuZSwNCi5sZWFmbGV0LXRpbGUsDQoubGVhZmxldC1tYXJrZXItaWNvbiwNCi5sZWFmbGV0LW1hcmtlci1zaGFkb3csDQoubGVhZmxldC10aWxlLWNvbnRhaW5lciwNCi5sZWFmbGV0LXBhbmUgPiBzdmcsDQoubGVhZmxldC1wYW5lID4gY2FudmFzLA0KLmxlYWZsZXQtem9vbS1ib3gsDQoubGVhZmxldC1pbWFnZS1sYXllciwNCi5sZWFmbGV0LWxheWVyIHsNCglwb3NpdGlvbjogYWJzb2x1dGU7DQoJbGVmdDogMDsNCgl0b3A6IDA7DQoJfQ0KLmxlYWZsZXQtY29udGFpbmVyIHsNCglvdmVyZmxvdzogaGlkZGVuOw0KCX0NCi5sZWFmbGV0LXRpbGUsDQoubGVhZmxldC1tYXJrZXItaWNvbiwNCi5sZWFmbGV0LW1hcmtlci1zaGFkb3cgew0KCS13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7DQoJICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsNCgkgICAgICAgIHVzZXItc2VsZWN0OiBub25lOw0KCSAgLXdlYmtpdC11c2VyLWRyYWc6IG5vbmU7DQoJfQ0KLyogUHJldmVudHMgSUUxMSBmcm9tIGhpZ2hsaWdodGluZyB0aWxlcyBpbiBibHVlICovDQoubGVhZmxldC10aWxlOjpzZWxlY3Rpb24gew0KCWJhY2tncm91bmQ6IHRyYW5zcGFyZW50Ow0KfQ0KLyogU2FmYXJpIHJlbmRlcnMgbm9uLXJldGluYSB0aWxlIG9uIHJldGluYSBiZXR0ZXIgd2l0aCB0aGlzLCBidXQgQ2hyb21lIGlzIHdvcnNlICovDQoubGVhZmxldC1zYWZhcmkgLmxlYWZsZXQtdGlsZSB7DQoJaW1hZ2UtcmVuZGVyaW5nOiAtd2Via2l0LW9wdGltaXplLWNvbnRyYXN0Ow0KCX0NCi8qIGhhY2sgdGhhdCBwcmV2ZW50cyBodyBsYXllcnMgInN0cmV0Y2hpbmciIHdoZW4gbG9hZGluZyBuZXcgdGlsZXMgKi8NCi5sZWFmbGV0LXNhZmFyaSAubGVhZmxldC10aWxlLWNvbnRhaW5lciB7DQoJd2lkdGg6IDE2MDBweDsNCgloZWlnaHQ6IDE2MDBweDsNCgktd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IDAgMDsNCgl9DQoubGVhZmxldC1tYXJrZXItaWNvbiwNCi5sZWFmbGV0LW1hcmtlci1zaGFkb3cgew0KCWRpc3BsYXk6IGJsb2NrOw0KCX0NCi8qIC5sZWFmbGV0LWNvbnRhaW5lciBzdmc6IHJlc2V0IHN2ZyBtYXgtd2lkdGggZGVjbGVyYXRpb24gc2hpcHBlZCBpbiBKb29tbGEhIChqb29tbGEub3JnKSAzLnggKi8NCi8qIC5sZWFmbGV0LWNvbnRhaW5lciBpbWc6IG1hcCBpcyBicm9rZW4gaW4gRkYgaWYgeW91IGhhdmUgbWF4LXdpZHRoOiAxMDAlIG9uIHRpbGVzICovDQoubGVhZmxldC1jb250YWluZXIgLmxlYWZsZXQtb3ZlcmxheS1wYW5lIHN2ZyB7DQoJbWF4LXdpZHRoOiBub25lICFpbXBvcnRhbnQ7DQoJbWF4LWhlaWdodDogbm9uZSAhaW1wb3J0YW50Ow0KCX0NCi5sZWFmbGV0LWNvbnRhaW5lciAubGVhZmxldC1tYXJrZXItcGFuZSBpbWcsDQoubGVhZmxldC1jb250YWluZXIgLmxlYWZsZXQtc2hhZG93LXBhbmUgaW1nLA0KLmxlYWZsZXQtY29udGFpbmVyIC5sZWFmbGV0LXRpbGUtcGFuZSBpbWcsDQoubGVhZmxldC1jb250YWluZXIgaW1nLmxlYWZsZXQtaW1hZ2UtbGF5ZXIsDQoubGVhZmxldC1jb250YWluZXIgLmxlYWZsZXQtdGlsZSB7DQoJbWF4LXdpZHRoOiBub25lICFpbXBvcnRhbnQ7DQoJbWF4LWhlaWdodDogbm9uZSAhaW1wb3J0YW50Ow0KCXdpZHRoOiBhdXRvOw0KCXBhZGRpbmc6IDA7DQoJfQ0KDQoubGVhZmxldC1jb250YWluZXIgaW1nLmxlYWZsZXQtdGlsZSB7DQoJLyogU2VlOiBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD02MDAxMjAgKi8NCgltaXgtYmxlbmQtbW9kZTogcGx1cy1saWdodGVyOw0KfQ0KDQoubGVhZmxldC1jb250YWluZXIubGVhZmxldC10b3VjaC16b29tIHsNCgktbXMtdG91Y2gtYWN0aW9uOiBwYW4teCBwYW4teTsNCgl0b3VjaC1hY3Rpb246IHBhbi14IHBhbi15Ow0KCX0NCi5sZWFmbGV0LWNvbnRhaW5lci5sZWFmbGV0LXRvdWNoLWRyYWcgew0KCS1tcy10b3VjaC1hY3Rpb246IHBpbmNoLXpvb207DQoJLyogRmFsbGJhY2sgZm9yIEZGIHdoaWNoIGRvZXNuJ3Qgc3VwcG9ydCBwaW5jaC16b29tICovDQoJdG91Y2gtYWN0aW9uOiBub25lOw0KCXRvdWNoLWFjdGlvbjogcGluY2gtem9vbTsNCn0NCi5sZWFmbGV0LWNvbnRhaW5lci5sZWFmbGV0LXRvdWNoLWRyYWcubGVhZmxldC10b3VjaC16b29tIHsNCgktbXMtdG91Y2gtYWN0aW9uOiBub25lOw0KCXRvdWNoLWFjdGlvbjogbm9uZTsNCn0NCi5sZWFmbGV0LWNvbnRhaW5lciB7DQoJLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDsNCn0NCi5sZWFmbGV0LWNvbnRhaW5lciBhIHsNCgktd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHJnYmEoNTEsIDE4MSwgMjI5LCAwLjQpOw0KfQ0KLmxlYWZsZXQtdGlsZSB7DQoJZmlsdGVyOiBpbmhlcml0Ow0KCXZpc2liaWxpdHk6IGhpZGRlbjsNCgl9DQoubGVhZmxldC10aWxlLWxvYWRlZCB7DQoJdmlzaWJpbGl0eTogaW5oZXJpdDsNCgl9DQoubGVhZmxldC16b29tLWJveCB7DQoJd2lkdGg6IDA7DQoJaGVpZ2h0OiAwOw0KCS1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDsNCgkgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7DQoJei1pbmRleDogODAwOw0KCX0NCi8qIHdvcmthcm91bmQgZm9yIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTg4ODMxOSAqLw0KLmxlYWZsZXQtb3ZlcmxheS1wYW5lIHN2ZyB7DQoJLW1vei11c2VyLXNlbGVjdDogbm9uZTsNCgl9DQoNCi5sZWFmbGV0LXBhbmUgICAgICAgICB7IHotaW5kZXg6IDQwMDsgfQ0KDQoubGVhZmxldC10aWxlLXBhbmUgICAgeyB6LWluZGV4OiAyMDA7IH0NCi5sZWFmbGV0LW92ZXJsYXktcGFuZSB7IHotaW5kZXg6IDQwMDsgfQ0KLmxlYWZsZXQtc2hhZG93LXBhbmUgIHsgei1pbmRleDogNTAwOyB9DQoubGVhZmxldC1tYXJrZXItcGFuZSAgeyB6LWluZGV4OiA2MDA7IH0NCi5sZWFmbGV0LXRvb2x0aXAtcGFuZSAgIHsgei1pbmRleDogNjUwOyB9DQoubGVhZmxldC1wb3B1cC1wYW5lICAgeyB6LWluZGV4OiA3MDA7IH0NCg0KLmxlYWZsZXQtbWFwLXBhbmUgY2FudmFzIHsgei1pbmRleDogMTAwOyB9DQoubGVhZmxldC1tYXAtcGFuZSBzdmcgICAgeyB6LWluZGV4OiAyMDA7IH0NCg0KLmxlYWZsZXQtdm1sLXNoYXBlIHsNCgl3aWR0aDogMXB4Ow0KCWhlaWdodDogMXB4Ow0KCX0NCi5sdm1sIHsNCgliZWhhdmlvcjogdXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsUENGRVQwTlVXVkJGSUdoMGJXdytQR2gwYld3Z2JHRnVaejBpWlc0aVBqeG9aV0ZrUGp4dFpYUmhJR05vWVhKelpYUTlJblYwWmkwNElpOCtQRzFsZEdFZ2JtRnRaVDBpZG1sbGQzQnZjblFpSUdOdmJuUmxiblE5SW5kcFpIUm9QV1JsZG1salpTMTNhV1IwYUN3Z2FXNXBkR2xoYkMxelkyRnNaVDB4TGpBaUx6NDhiV1YwWVNCdVlXMWxQU0prWlhOamNtbHdkR2x2YmlJZ1kyOXVkR1Z1ZEQwaVZHaGxJRU5FVGlCbWIzSWdaWFpsY25sMGFHbHVaeUJ2YmlCdWNHMGlMejQ4YkdsdWF5QnlaV3c5SW1samIyNGlJSFI1Y0dVOUltbHRZV2RsTDJwd1pXY2lJR2h5WldZOUlpOW1ZWFpwWTI5dUxtcHdaeUl2UGp4c2FXNXJJSEpsYkQwaWMzUjViR1Z6YUdWbGRDSWdhSEpsWmowaWFIUjBjSE02THk5aGNIQXVkVzV3YTJjdVkyOXRMMTloYzNObGRITXZjM1I1YkdWekxVUTJXRkEzV1VWRExtTnpjeUl2UGp4c2FXNXJJSEpsYkQwaWMzUjViR1Z6YUdWbGRDSWdhSEpsWmowaWFIUjBjSE02THk5aGNIQXVkVzV3YTJjdVkyOXRMMTloYzNObGRITXZZMjlrWlMxc2FXZG9kQzFDTWt4SVZWTktVaTVqYzNNaUx6NDhjMk55YVhCMElIUjVjR1U5SW1sdGNHOXlkRzFoY0NJK2V5SnBiWEJ2Y25SeklqcDdJbkJ5WldGamRDSTZJbWgwZEhCek9pOHZkVzV3YTJjdVkyOXRMM0J5WldGamRFQXhNQzR5TlM0MEwyUnBjM1F2Y0hKbFlXTjBMbTF2WkhWc1pTNXFjeUlzSW5CeVpXRmpkQzlvYjI5cmN5STZJbWgwZEhCek9pOHZkVzV3YTJjdVkyOXRMM0J5WldGamRFQXhNQzR5TlM0MEwyaHZiMnR6TDJScGMzUXZhRzl2YTNNdWJXOWtkV3hsTG1weklpd2ljSEpsWVdOMEwycHplQzF5ZFc1MGFXMWxJam9pYUhSMGNITTZMeTkxYm5Cclp5NWpiMjB2Y0hKbFlXTjBRREV3TGpJMUxqUXZhbk40TFhKMWJuUnBiV1V2WkdsemRDOXFjM2hTZFc1MGFXMWxMbTF2WkhWc1pTNXFjeUo5ZlR3dmMyTnlhWEIwUGp4elkzSnBjSFFnZEhsd1pUMGliVzlrZFd4bElpQnpjbU05SW1oMGRIQnpPaTh2WVhCd0xuVnVjR3RuTG1OdmJTOWZZWE56WlhSekwzTmpjbWx3ZEhNdE5VeFhSelpNVVUwdWFuTWlJR1JsWm1WeVBqd3ZjMk55YVhCMFBqeDBhWFJzWlQ1VlRsQkxSend2ZEdsMGJHVStQSE5qY21sd2RDQmhjM2x1WXlCemNtTTlJbWgwZEhCek9pOHZkM2QzTG1kdmIyZHNaWFJoWjIxaGJtRm5aWEl1WTI5dEwyZDBZV2N2YW5NL2FXUTlWVUV0TVRRd016VXlNVGc0TFRFaVBqd3ZjMk55YVhCMFBqeHpZM0pwY0hRK2QybHVaRzkzTG1SaGRHRk1ZWGxsY2lBOUlIZHBibVJ2ZHk1a1lYUmhUR0Y1WlhJZ2ZId2dXMTA3Q21aMWJtTjBhVzl1SUdkMFlXY29LWHRrWVhSaFRHRjVaWEl1Y0hWemFDaGhjbWQxYldWdWRITXBPMzBLWjNSaFp5Z25hbk1uTENCdVpYY2dSR0YwWlNncEtUc0taM1JoWnlnblkyOXVabWxuSnl3Z0oxVkJMVEUwTURNMU1qRTRPQzB4SnlrN1BDOXpZM0pwY0hRK1BDOW9aV0ZrUGp4aWIyUjVQanhvWldGa1pYSWdZMnhoYzNNOUltSnZjbVJsY2kxaUlHSnZjbVJsY2kxemJHRjBaUzB6TURBZ1ltY3RjMnhoZEdVdE1UQXdJSFJsZUhRdGMyeGhkR1V0T1RVd0lqNDhaR2wySUdOc1lYTnpQU0p3TFRRZ2JYZ3RZWFYwYnlCbWJHVjRJR3AxYzNScFpua3RZbVYwZDJWbGJpQnBkR1Z0Y3kxalpXNTBaWElnYkdjNmJXRjRMWGN0YzJOeVpXVnVMWGhzSWo0OGFERWdZMnhoYzNNOUluUmxlSFF0TW5oc0lHWnZiblF0WW05c1pDQnBibXhwYm1VdFlteHZZMnNpUGp4aElHaHlaV1k5SW1oMGRIQnpPaTh2ZFc1d2EyY3VZMjl0SWo1VlRsQkxSend2WVQ0OEwyZ3hQanh6Y0dGdUlHTnNZWE56UFNKcGJteHBibVV0WW14dlkyc2dhQzFtZFd4c0lqNDhZU0JvY21WbVBTSm9kSFJ3Y3pvdkwyZHBkR2gxWWk1amIyMHZkVzV3YTJjaVBqeHpkbWNnWVhKcFlTMW9hV1JrWlc0OUluUnlkV1VpSUdacGJHdzlJbU4xY25KbGJuUkRiMnh2Y2lJZ2RtbGxkMEp2ZUQwaU1DQXdJREkwSURJMElpQmpiR0Z6Y3owaWR5MDJJR2d0TmlJK1BIQmhkR2dnWm1sc2JDMXlkV3hsUFNKbGRtVnViMlJrSWlCa1BTSk5NVEl1TURBMklESmhPUzQ0TkRjZ09TNDRORGNnTUNBd0lEQXROaTQwT0RRZ01pNDBOQ0F4TUM0ek1pQXhNQzR6TWlBd0lEQWdNQzB6TGpNNU15QTJMakUzSURFd0xqUTRJREV3TGpRNElEQWdNQ0F3SURFdU16RTNJRFl1T1RVMUlERXdMakEwTlNBeE1DNHdORFVnTUNBd0lEQWdOUzQwSURRdU5ERTRZeTQxTURRdU1EazFMalk0TXkwdU1qSXpMalk0TXkwdU5EazBJREF0TGpJME5TMHVNREV0TVM0d05USXRMakF4TkMweExqa3dPQzB5TGpjNExqWXlMVE11TXpZMkxURXVNakV0TXk0ek5qWXRNUzR5TVdFeUxqY3hNU0F5TGpjeE1TQXdJREFnTUMweExqRXhMVEV1TldNdExqa3dOeTB1TmpNM0xqQTNMUzQyTWpFdU1EY3RMall5TVM0ek1UY3VNRFEwTGpZeUxqRTJNeTQ0T0RVdU16UTJMakkyTmk0eE9ETXVORGczTGpReU5pNDJORGN1TnpFdU1UTTFMakkxTXk0ek1UZ3VORGMyTGpVek9DNDJOVFZoTWk0d056a2dNaTR3TnprZ01DQXdJREFnTWk0ek55NHhPVFpqTGpBME5TMHVOVEl1TWpjdE1TNHdNRFl1TmpNMUxURXVNemN0TWk0eU1Ua3RMakkxT1MwMExqVTFOQzB4TGpFek9DMDBMalUxTkMwMUxqQTNZVFF1TURJeUlEUXVNREl5SURBZ01DQXhJREV1TURNeExUSXVOelVnTXk0M055QXpMamMzSURBZ01DQXhJQzR3T1RZdE1pNDNNVE56TGpnek9TMHVNamMxSURJdU56UTVJREV1TURWaE9TNHlOaUE1TGpJMklEQWdNQ0F4SURVdU1EQTBJREJqTVM0NU1EWXRNUzR6TWpVZ01pNDNOQzB4TGpBMUlESXVOelF0TVM0d05TNHpOeTQ0TlRndU5EQTJJREV1T0RJNExqRXdNU0F5TGpjeE0yRTBMakF4TnlBMExqQXhOeUF3SURBZ01TQXhMakF5T1NBeUxqYzFZekFnTXk0NU16a3RNaTR6TXprZ05DNDRNRFV0TkM0MU5qUWdOUzR3TlRoaE1pNDBOekVnTWk0ME56RWdNQ0F3SURFZ0xqWTNPU0F4TGpnNU4yTXdJREV1TXpjeUxTNHdNVElnTWk0ME56Y3RMakF4TWlBeUxqZ3hOQ0F3SUM0eU56SXVNVGd1TlRreUxqWTROeTQwT1RKaE1UQXVNRFVnTVRBdU1EVWdNQ0F3SURBZ05TNHpPRGd0TkM0ME1qRWdNVEF1TkRjeklERXdMalEzTXlBd0lEQWdNQ0F4TGpNeE15MDJMamswT0NBeE1DNHpNaUF4TUM0ek1pQXdJREFnTUMwekxqTTVMVFl1TVRZMVFUa3VPRFEzSURrdU9EUTNJREFnTUNBd0lERXlMakF3TnlBeVdpSWdZMnhwY0MxeWRXeGxQU0psZG1WdWIyUmtJajQ4TDNCaGRHZytQQzl6ZG1jK1BDOWhQand2YzNCaGJqNDhMMlJwZGo0OEwyaGxZV1JsY2o0OGJXRnBiaUJqYkdGemN6MGljSGd0TkNCd1lpMHlOQ0J0ZUMxaGRYUnZJR3huT20xaGVDMTNMWE5qY21WbGJpMTRiQ0JzWnpwd1lpMDBOQ0krUEdobFlXUmxjaUJqYkdGemN6MGljSFF0TmlCd1lpMDBJR3huT25CMExURTJJajQ4WkdsMklHTnNZWE56UFNKdFlpMDJJR1pzWlhnZ2FuVnpkR2xtZVMxaVpYUjNaV1Z1SUdsMFpXMXpMV05sYm5SbGNpSStQR2d4SUdOc1lYTnpQU0owWlhoMExXSnNZV05ySUhSbGVIUXRNM2hzSUd4bFlXUnBibWN0ZEdsbmFIUWdabTl1ZEMxelpXMXBZbTlzWkNJK2JHVmhabXhsZER3dmFERStQR1JwZGlCamJHRnpjejBpZEdWNGRDMXlhV2RvZENCM0xUUTRJajQ4YzNCaGJqNVdaWEp6YVc5dU9pQThMM053WVc0K1BITndZVzRnWkdGMFlTMW9lV1J5WVhSbFBTSjdKbkYxYjNRN2EyVjVKbkYxYjNRN09pWnhkVzkwTzFabGNuTnBiMjVUWld4bFkzUnZjaVp4ZFc5ME95d21jWFZ2ZER0d2NtOXdjeVp4ZFc5ME96cDdKbkYxYjNRN1lYWmhhV3hoWW14bFZHRm5jeVp4ZFc5ME96cDdKbkYxYjNRN1ltVjBZU1p4ZFc5ME96b21jWFZ2ZERzeExqZ3VNQzFpWlhSaExqTW1jWFZ2ZERzc0puRjFiM1E3YkdGMFpYTjBKbkYxYjNRN09pWnhkVzkwT3pFdU9TNDBKbkYxYjNRN0xDWnhkVzkwTzJGc2NHaGhKbkYxYjNRN09pWnhkVzkwT3pJdU1DNHdMV0ZzY0doaExqRW1jWFZ2ZER0OUxDWnhkVzkwTzJGMllXbHNZV0pzWlZabGNuTnBiMjV6Sm5GMWIzUTdPbHNtY1hWdmREc3lMakF1TUMxaGJIQm9ZUzR4Sm5GMWIzUTdMQ1p4ZFc5ME96SXVNQzR3TFdGc2NHaGhKbkYxYjNRN0xDWnhkVzkwT3pFdU9TNDBKbkYxYjNRN0xDWnhkVzkwT3pFdU9TNHpKbkYxYjNRN0xDWnhkVzkwT3pFdU9TNHlKbkYxYjNRN0xDWnhkVzkwT3pFdU9TNHhKbkYxYjNRN0xDWnhkVzkwT3pFdU9TNHdKbkYxYjNRN0xDWnhkVzkwT3pFdU9DNHdKbkYxYjNRN0xDWnhkVzkwT3pFdU9DNHdMV0psZEdFdU15WnhkVzkwT3l3bWNYVnZkRHN4TGpndU1DMWlaWFJoTGpJbWNYVnZkRHNzSm5GMWIzUTdNUzQ0TGpBdFltVjBZUzR4Sm5GMWIzUTdMQ1p4ZFc5ME96RXVPQzR3TFdKbGRHRXVNQ1p4ZFc5ME95d21jWFZ2ZERzeExqZ3VNQzFoYkhCb1lTNHdKbkYxYjNRN0xDWnhkVzkwT3pFdU55NHhKbkYxYjNRN0xDWnhkVzkwT3pFdU55NHdKbkYxYjNRN0xDWnhkVzkwT3pFdU5pNHdKbkYxYjNRN0xDWnhkVzkwT3pFdU5TNHhKbkYxYjNRN0xDWnhkVzkwT3pFdU5TNHdKbkYxYjNRN0xDWnhkVzkwT3pFdU5DNHdKbkYxYjNRN0xDWnhkVzkwT3pFdU15NDBKbkYxYjNRN0xDWnhkVzkwT3pFdU15NHpKbkYxYjNRN0xDWnhkVzkwT3pFdU15NHlKbkYxYjNRN0xDWnhkVzkwT3pFdU15NHhKbkYxYjNRN0xDWnhkVzkwT3pFdU15NHdKbkYxYjNRN0xDWnhkVzkwT3pFdU1pNHdKbkYxYjNRN0xDWnhkVzkwT3pFdU1TNHdKbkYxYjNRN0xDWnhkVzkwT3pFdU1DNHpKbkYxYjNRN0xDWnhkVzkwT3pFdU1DNHlKbkYxYjNRN0xDWnhkVzkwT3pFdU1DNHhKbkYxYjNRN0xDWnhkVzkwT3pFdU1DNHdKbkYxYjNRN0xDWnhkVzkwT3pFdU1DNHdMWEpqTGpNbWNYVnZkRHNzSm5GMWIzUTdNUzR3TGpBdGNtTXVNaVp4ZFc5ME95d21jWFZ2ZERzeExqQXVNQzF5WXk0eEpuRjFiM1E3TENaeGRXOTBPekV1TUM0d0xXSmxkR0V1TWlaeGRXOTBPeXdtY1hWdmREc3hMakF1TUMxaVpYUmhMakVtY1hWdmREc3NKbkYxYjNRN01DNDNMamNtY1hWdmREc3NKbkYxYjNRN01DNDNMalVtY1hWdmREc3NKbkYxYjNRN01DNDNMalFtY1hWdmREc3NKbkYxYjNRN01DNDNMak1tY1hWdmREc3NKbkYxYjNRN01DNDNMakltY1hWdmREc3NKbkYxYjNRN01DNDNMakVtY1hWdmREc3NKbkYxYjNRN01DNDNMakFtY1hWdmREc3NKbkYxYjNRN01DNDJMalFtY1hWdmREc3NKbkYxYjNRN01DNDJMak1tY1hWdmREc3NKbkYxYjNRN01DNDJMakltY1hWdmREc3NKbkYxYjNRN01DNDJMakVtY1hWdmREc3NKbkYxYjNRN01DNDJMakFtY1hWdmREc3NKbkYxYjNRN01DNDFMakVtY1hWdmREdGRMQ1p4ZFc5ME8yTjFjbkpsYm5SV1pYSnphVzl1Sm5GMWIzUTdPaVp4ZFc5ME96RXVPUzQwSm5GMWIzUTdMQ1p4ZFc5ME8zQmhkR2h1WVcxbFJtOXliV0YwSm5GMWIzUTdPaVp4ZFc5ME95OXNaV0ZtYkdWMFFDVnpMMlpwYkdWekwyUnBjM1FtY1hWdmREc3NKbkYxYjNRN1kyeGhjM01tY1hWdmREczZKbkYxYjNRN2R5MHlPQ0J3TFRFZ1ltOXlaR1Z5SUdKdmNtUmxjaTF6YkdGMFpTMHpNREFnWW1jdGMyeGhkR1V0TVRBd0lIUmxlSFF0YzIwbWNYVnZkRHQ5ZlNJK1BITmxiR1ZqZENCdVlXMWxQU0oyWlhKemFXOXVJaUJqYkdGemN6MGlkeTB5T0NCd0xURWdZbTl5WkdWeUlHSnZjbVJsY2kxemJHRjBaUzB6TURBZ1ltY3RjMnhoZEdVdE1UQXdJSFJsZUhRdGMyMGlQanh2Y0hSbmNtOTFjQ0JzWVdKbGJEMGlWR0ZuY3lJK1BHOXdkR2x2YmlCMllXeDFaVDBpTWk0d0xqQXRZV3h3YUdFdU1TSStZV3h3YUdFZ0tESXVNQzR3TFdGc2NHaGhMakVwUEM5dmNIUnBiMjQrUEc5d2RHbHZiaUIyWVd4MVpUMGlNUzQ0TGpBdFltVjBZUzR6SWo1aVpYUmhJQ2d4TGpndU1DMWlaWFJoTGpNcFBDOXZjSFJwYjI0K1BHOXdkR2x2YmlCelpXeGxZM1JsWkNCMllXeDFaVDBpTVM0NUxqUWlQbXhoZEdWemRDQW9NUzQ1TGpRcFBDOXZjSFJwYjI0K1BDOXZjSFJuY205MWNENDhiM0IwWjNKdmRYQWdiR0ZpWld3OUlsWmxjbk5wYjI1eklqNDhiM0IwYVc5dUlIWmhiSFZsUFNJeUxqQXVNQzFoYkhCb1lTNHhJajR5TGpBdU1DMWhiSEJvWVM0eFBDOXZjSFJwYjI0K1BHOXdkR2x2YmlCMllXeDFaVDBpTWk0d0xqQXRZV3h3YUdFaVBqSXVNQzR3TFdGc2NHaGhQQzl2Y0hScGIyNCtQRzl3ZEdsdmJpQnpaV3hsWTNSbFpDQjJZV3gxWlQwaU1TNDVMalFpUGpFdU9TNDBQQzl2Y0hScGIyNCtQRzl3ZEdsdmJpQjJZV3gxWlQwaU1TNDVMak1pUGpFdU9TNHpQQzl2Y0hScGIyNCtQRzl3ZEdsdmJpQjJZV3gxWlQwaU1TNDVMaklpUGpFdU9TNHlQQzl2Y0hScGIyNCtQRzl3ZEdsdmJpQjJZV3gxWlQwaU1TNDVMakVpUGpFdU9TNHhQQzl2Y0hScGIyNCtQRzl3ZEdsdmJpQjJZV3gxWlQwaU1TNDVMakFpUGpFdU9TNHdQQzl2Y0hScGIyNCtQRzl3ZEdsdmJpQjJZV3gxWlQwaU1TNDRMakFpUGpFdU9DNHdQQzl2Y0hScGIyNCtQRzl3ZEdsdmJpQjJZV3gxWlQwaU1TNDRMakF0WW1WMFlTNHpJajR4TGpndU1DMWlaWFJoTGpNOEwyOXdkR2x2Ymo0OGIzQjBhVzl1SUhaaGJIVmxQU0l4TGpndU1DMWlaWFJoTGpJaVBqRXVPQzR3TFdKbGRHRXVNand2YjNCMGFXOXVQanh2Y0hScGIyNGdkbUZzZFdVOUlqRXVPQzR3TFdKbGRHRXVNU0krTVM0NExqQXRZbVYwWVM0eFBDOXZjSFJwYjI0K1BHOXdkR2x2YmlCMllXeDFaVDBpTVM0NExqQXRZbVYwWVM0d0lqNHhMamd1TUMxaVpYUmhMakE4TDI5d2RHbHZiajQ4YjNCMGFXOXVJSFpoYkhWbFBTSXhMamd1TUMxaGJIQm9ZUzR3SWo0eExqZ3VNQzFoYkhCb1lTNHdQQzl2Y0hScGIyNCtQRzl3ZEdsdmJpQjJZV3gxWlQwaU1TNDNMakVpUGpFdU55NHhQQzl2Y0hScGIyNCtQRzl3ZEdsdmJpQjJZV3gxWlQwaU1TNDNMakFpUGpFdU55NHdQQzl2Y0hScGIyNCtQRzl3ZEdsdmJpQjJZV3gxWlQwaU1TNDJMakFpUGpFdU5pNHdQQzl2Y0hScGIyNCtQRzl3ZEdsdmJpQjJZV3gxWlQwaU1TNDFMakVpUGpFdU5TNHhQQzl2Y0hScGIyNCtQRzl3ZEdsdmJpQjJZV3gxWlQwaU1TNDFMakFpUGpFdU5TNHdQQzl2Y0hScGIyNCtQRzl3ZEdsdmJpQjJZV3gxWlQwaU1TNDBMakFpUGpFdU5DNHdQQzl2Y0hScGIyNCtQRzl3ZEdsdmJpQjJZV3gxWlQwaU1TNHpMalFpUGpFdU15NDBQQzl2Y0hScGIyNCtQRzl3ZEdsdmJpQjJZV3gxWlQwaU1TNHpMak1pUGpFdU15NHpQQzl2Y0hScGIyNCtQRzl3ZEdsdmJpQjJZV3gxWlQwaU1TNHpMaklpUGpFdU15NHlQQzl2Y0hScGIyNCtQRzl3ZEdsdmJpQjJZV3gxWlQwaU1TNHpMakVpUGpFdU15NHhQQzl2Y0hScGIyNCtQRzl3ZEdsdmJpQjJZV3gxWlQwaU1TNHpMakFpUGpFdU15NHdQQzl2Y0hScGIyNCtQRzl3ZEdsdmJpQjJZV3gxWlQwaU1TNHlMakFpUGpFdU1pNHdQQzl2Y0hScGIyNCtQRzl3ZEdsdmJpQjJZV3gxWlQwaU1TNHhMakFpUGpFdU1TNHdQQzl2Y0hScGIyNCtQRzl3ZEdsdmJpQjJZV3gxWlQwaU1TNHdMak1pUGpFdU1DNHpQQzl2Y0hScGIyNCtQRzl3ZEdsdmJpQjJZV3gxWlQwaU1TNHdMaklpUGpFdU1DNHlQQzl2Y0hScGIyNCtQRzl3ZEdsdmJpQjJZV3gxWlQwaU1TNHdMakVpUGpFdU1DNHhQQzl2Y0hScGIyNCtQRzl3ZEdsdmJpQjJZV3gxWlQwaU1TNHdMakFpUGpFdU1DNHdQQzl2Y0hScGIyNCtQRzl3ZEdsdmJpQjJZV3gxWlQwaU1TNHdMakF0Y21NdU15SStNUzR3TGpBdGNtTXVNend2YjNCMGFXOXVQanh2Y0hScGIyNGdkbUZzZFdVOUlqRXVNQzR3TFhKakxqSWlQakV1TUM0d0xYSmpMakk4TDI5d2RHbHZiajQ4YjNCMGFXOXVJSFpoYkhWbFBTSXhMakF1TUMxeVl5NHhJajR4TGpBdU1DMXlZeTR4UEM5dmNIUnBiMjQrUEc5d2RHbHZiaUIyWVd4MVpUMGlNUzR3TGpBdFltVjBZUzR5SWo0eExqQXVNQzFpWlhSaExqSThMMjl3ZEdsdmJqNDhiM0IwYVc5dUlIWmhiSFZsUFNJeExqQXVNQzFpWlhSaExqRWlQakV1TUM0d0xXSmxkR0V1TVR3dmIzQjBhVzl1UGp4dmNIUnBiMjRnZG1Gc2RXVTlJakF1Tnk0M0lqNHdMamN1Tnp3dmIzQjBhVzl1UGp4dmNIUnBiMjRnZG1Gc2RXVTlJakF1Tnk0MUlqNHdMamN1TlR3dmIzQjBhVzl1UGp4dmNIUnBiMjRnZG1Gc2RXVTlJakF1Tnk0MElqNHdMamN1TkR3dmIzQjBhVzl1UGp4dmNIUnBiMjRnZG1Gc2RXVTlJakF1Tnk0eklqNHdMamN1TXp3dmIzQjBhVzl1UGp4dmNIUnBiMjRnZG1Gc2RXVTlJakF1Tnk0eUlqNHdMamN1TWp3dmIzQjBhVzl1UGp4dmNIUnBiMjRnZG1Gc2RXVTlJakF1Tnk0eElqNHdMamN1TVR3dmIzQjBhVzl1UGp4dmNIUnBiMjRnZG1Gc2RXVTlJakF1Tnk0d0lqNHdMamN1TUR3dmIzQjBhVzl1UGp4dmNIUnBiMjRnZG1Gc2RXVTlJakF1Tmk0MElqNHdMall1TkR3dmIzQjBhVzl1UGp4dmNIUnBiMjRnZG1Gc2RXVTlJakF1Tmk0eklqNHdMall1TXp3dmIzQjBhVzl1UGp4dmNIUnBiMjRnZG1Gc2RXVTlJakF1Tmk0eUlqNHdMall1TWp3dmIzQjBhVzl1UGp4dmNIUnBiMjRnZG1Gc2RXVTlJakF1Tmk0eElqNHdMall1TVR3dmIzQjBhVzl1UGp4dmNIUnBiMjRnZG1Gc2RXVTlJakF1Tmk0d0lqNHdMall1TUR3dmIzQjBhVzl1UGp4dmNIUnBiMjRnZG1Gc2RXVTlJakF1TlM0eElqNHdMalV1TVR3dmIzQjBhVzl1UGp3dmIzQjBaM0p2ZFhBK1BDOXpaV3hsWTNRK1BDOXpjR0Z1UGp3dlpHbDJQand2WkdsMlBqeGthWFlnWTJ4aGMzTTlJbTEwTFRJaVBqeHdJR05zWVhOelBTSnRZaTB6SUd4bFlXUnBibWN0ZEdsbmFIUWlQanh6Y0dGdVBrcGhkbUZUWTNKcGNIUWdiR2xpY21GeWVTQm1iM0lnYlc5aWFXeGxMV1p5YVdWdVpHeDVJR2x1ZEdWeVlXTjBhWFpsSUcxaGNITThMM053WVc0K1BDOXdQanhrYVhZZ1kyeGhjM005SW14bk9taHBaR1JsYmlJK1BIQWdZMnhoYzNNOUltMTBMVEVnZEdWNGRDMXpiU0JzWldGa2FXNW5MVFFpUGp4aElHaHlaV1k5SW1oMGRIQnpPaTh2YkdWaFpteGxkR3B6TG1OdmJTOGlJSFJwZEd4bFBTSldhWE5wZENCMGFHVWdiR1ZoWm14bGRDQjNaV0p6YVhSbElpQmpiR0Z6Y3owaWFXNXNhVzVsTFdac1pYZ2dhWFJsYlhNdFkyVnVkR1Z5SUdodmRtVnlPblJsZUhRdGMyeGhkR1V0T1RVd0lHaHZkbVZ5T25WdVpHVnliR2x1WlNJK1BITjJaeUJoY21saExXaHBaR1JsYmowaWRISjFaU0lnWm1sc2JEMGlibTl1WlNJZ2RtbGxkMEp2ZUQwaU1DQXdJREkwSURJMElpQmpiR0Z6Y3owaWR5MDJJR2d0TmlJK1BIQmhkR2dnYzNSeWIydGxQU0pqZFhKeVpXNTBRMjlzYjNJaUlITjBjbTlyWlMxc2FXNWxZMkZ3UFNKeWIzVnVaQ0lnYzNSeWIydGxMV3hwYm1WcWIybHVQU0p5YjNWdVpDSWdjM1J5YjJ0bExYZHBaSFJvUFNJeUlpQmtQU0pOTVRNdU1qRXpJRGt1TnpnM1lUTXVNemt4SURNdU16a3hJREFnTUNBd0xUUXVOemsxSURCc0xUTXVOREkxSURNdU5ESTJZVE11TXprZ015NHpPU0F3SURBZ01DQTBMamM1TlNBMExqYzVOR3d1TXpJeExTNHpNRFJ0TFM0ek1qRXROQzQwT1dFekxqTTVJRE11TXprZ01DQXdJREFnTkM0M09UVWdNR3d6TGpReU5DMHpMalF5Tm1FekxqTTVJRE11TXprZ01DQXdJREF0TkM0M09UUXROQzQzT1RWc0xURXVNREk0TGprMk1TSStQQzl3WVhSb1Bqd3ZjM1puUGp4emNHRnVJR05zWVhOelBTSnRiQzB4SWo1c1pXRm1iR1YwYW5NdVkyOXRQQzl6Y0dGdVBqd3ZZVDQ4TDNBK1BIQWdZMnhoYzNNOUltMTBMVEVnZEdWNGRDMXpiU0JzWldGa2FXNW5MVFFpUGp4aElHaHlaV1k5SW1oMGRIQnpPaTh2WjJsMGFIVmlMbU52YlM5TVpXRm1iR1YwTDB4bFlXWnNaWFFpSUhScGRHeGxQU0pXYVdWM0lIUm9aU0JzWldGbWJHVjBJSEpsY0c5emFYUnZjbmtnYjI0Z1IybDBTSFZpSWlCamJHRnpjejBpYVc1c2FXNWxMV1pzWlhnZ2FYUmxiWE10WTJWdWRHVnlJR2h2ZG1WeU9uUmxlSFF0YzJ4aGRHVXRPVFV3SUdodmRtVnlPblZ1WkdWeWJHbHVaU0krUEhOMlp5QmhjbWxoTFdocFpHUmxiajBpZEhKMVpTSWdabWxzYkQwaVkzVnljbVZ1ZEVOdmJHOXlJaUIyYVdWM1FtOTRQU0l3SURBZ01qUWdNalFpSUdOc1lYTnpQU0ozTFRZZ2FDMDJJajQ4Y0dGMGFDQm1hV3hzTFhKMWJHVTlJbVYyWlc1dlpHUWlJR1E5SWsweE1pNHdNRFlnTW1FNUxqZzBOeUE1TGpnME55QXdJREFnTUMwMkxqUTROQ0F5TGpRMElERXdMak15SURFd0xqTXlJREFnTUNBd0xUTXVNemt6SURZdU1UY2dNVEF1TkRnZ01UQXVORGdnTUNBd0lEQWdNUzR6TVRjZ05pNDVOVFVnTVRBdU1EUTFJREV3TGpBME5TQXdJREFnTUNBMUxqUWdOQzQwTVRoakxqVXdOQzR3T1RVdU5qZ3pMUzR5TWpNdU5qZ3pMUzQwT1RRZ01DMHVNalExTFM0d01TMHhMakExTWkwdU1ERTBMVEV1T1RBNExUSXVOemd1TmpJdE15NHpOall0TVM0eU1TMHpMak0yTmkweExqSXhZVEl1TnpFeElESXVOekV4SURBZ01DQXdMVEV1TVRFdE1TNDFZeTB1T1RBM0xTNDJNemN1TURjdExqWXlNUzR3TnkwdU5qSXhMak14Tnk0d05EUXVOakl1TVRZekxqZzROUzR6TkRZdU1qWTJMakU0TXk0ME9EY3VOREkyTGpZME55NDNNUzR4TXpVdU1qVXpMak14T0M0ME56WXVOVE00TGpZMU5XRXlMakEzT1NBeUxqQTNPU0F3SURBZ01DQXlMak0zTGpFNU5tTXVNRFExTFM0MU1pNHlOeTB4TGpBd05pNDJNelV0TVM0ek55MHlMakl4T1MwdU1qVTVMVFF1TlRVMExURXVNVE00TFRRdU5UVTBMVFV1TURkaE5DNHdNaklnTkM0d01qSWdNQ0F3SURFZ01TNHdNekV0TWk0M05TQXpMamMzSURNdU56Y2dNQ0F3SURFZ0xqQTVOaTB5TGpjeE0zTXVPRE01TFM0eU56VWdNaTQzTkRrZ01TNHdOV0U1TGpJMklEa3VNallnTUNBd0lERWdOUzR3TURRZ01HTXhMamt3TmkweExqTXlOU0F5TGpjMExURXVNRFVnTWk0M05DMHhMakExTGpNM0xqZzFPQzQwTURZZ01TNDRNamd1TVRBeElESXVOekV6WVRRdU1ERTNJRFF1TURFM0lEQWdNQ0F4SURFdU1ESTVJREl1TnpWak1DQXpMamt6T1MweUxqTXpPU0EwTGpnd05TMDBMalUyTkNBMUxqQTFPR0V5TGpRM01TQXlMalEzTVNBd0lEQWdNU0F1TmpjNUlERXVPRGszWXpBZ01TNHpOekl0TGpBeE1pQXlMalEzTnkwdU1ERXlJREl1T0RFMElEQWdMakkzTWk0eE9DNDFPVEl1TmpnM0xqUTVNbUV4TUM0d05TQXhNQzR3TlNBd0lEQWdNQ0ExTGpNNE9DMDBMalF5TVNBeE1DNDBOek1nTVRBdU5EY3pJREFnTUNBd0lERXVNekV6TFRZdU9UUTRJREV3TGpNeUlERXdMak15SURBZ01DQXdMVE11TXprdE5pNHhOalZCT1M0NE5EY2dPUzQ0TkRjZ01DQXdJREFnTVRJdU1EQTNJREphSWlCamJHbHdMWEoxYkdVOUltVjJaVzV2WkdRaVBqd3ZjR0YwYUQ0OEwzTjJaejQ4YzNCaGJpQmpiR0Z6Y3owaWJXd3RNU0krVEdWaFpteGxkQzlNWldGbWJHVjBQQzl6Y0dGdVBqd3ZZVDQ4TDNBK1BDOWthWFkrUEM5a2FYWStQQzlvWldGa1pYSStQRzVoZGlCamJHRnpjejBpY0hrdE1pSStQSE53WVc0K1BHRWdhSEpsWmowaWFIUjBjSE02THk5aGNIQXVkVzV3YTJjdVkyOXRMMnhsWVdac1pYUkFNUzQ1TGpRaUlHTnNZWE56UFNKMFpYaDBMV0pzZFdVdE5qQXdJR2h2ZG1WeU9uVnVaR1Z5YkdsdVpTSStiR1ZoWm14bGREd3ZZVDQ4TDNOd1lXNCtQSE53WVc0K0lDOGdQQzl6Y0dGdVBqeHpjR0Z1UG1ScGMzUThMM053WVc0K1BDOXVZWFkrUEdobFlXUmxjaUJqYkdGemN6MGljSGt0TXlCd2VDMDBJR0p2Y21SbGNpQmliM0prWlhJdGMyeGhkR1V0TXpBd0lHSm5MWE5zWVhSbExURXdNQ0IwWlhoMExYTnRJSE5sYkdWamRDMXViMjVsSWo0OGMzQmhiajR4SUdadmJHUmxjaXdnUEM5emNHRnVQanh6Y0dGdVBqY2dabWxzWlhNOEwzTndZVzQrUEM5b1pXRmtaWEkrUEcxaGFXNCtQSFJoWW14bElHTnNZWE56UFNKaWIzSmtaWEl0ZUNCaWIzSmtaWEl0WWlCaWIzSmtaWEl0YzJ4aGRHVXRNekF3SUhjdFpuVnNiQ0J0WVhndGR5MW1kV3hzSUdKbkxYZG9hWFJsSWo0OGRHaGxZV1FnWTJ4aGMzTTlJbWhwWkdSbGJpSStQSFJ5UGp4MGFENDhMM1JvUGp4MGFENUdhV3hsYm1GdFpUd3ZkR2crUEhSb1BrTnZiblJsYm5RZ1ZIbHdaVHd2ZEdnK1BIUm9QbE5wZW1VOEwzUm9Qand2ZEhJK1BDOTBhR1ZoWkQ0OGRHSnZaSGsrUEhSeUlHTnNZWE56UFNKb2IzWmxjanBpWnkxemJHRjBaUzAxTUNJK1BIUmtJR05zWVhOelBTSndiQzAwSUdKdmNtUmxjaTFpSUdKdmNtUmxjaTF6YkdGMFpTMHlNREFnZEdWNGRDMXpiU0IzTFRFeUlqNDhjM0JoYmlCamJHRnpjejBpZEdWNGRDMXpiR0YwWlMwMk1EQWlQanh6ZG1jZ1lYSnBZUzFvYVdSa1pXNDlJblJ5ZFdVaUlHWnBiR3c5SW01dmJtVWlJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lnWTJ4aGMzTTlJbmN0TmlCb0xUWWlQanh3WVhSb0lITjBjbTlyWlQwaVkzVnljbVZ1ZEVOdmJHOXlJaUJ6ZEhKdmEyVXRiR2x1WldOaGNEMGljbTkxYm1RaUlITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpSUhOMGNtOXJaUzEzYVdSMGFEMGlNaUlnWkQwaVRURXpMalVnT0VnMGJUQXRNbll4TTJFeElERWdNQ0F3SURBZ01TQXhhREUwWVRFZ01TQXdJREFnTUNBeExURldPV0V4SURFZ01DQXdJREF0TVMweGFDMDFMakF6TW1FeElERWdNQ0F3SURFdExqYzJPQzB1TXpac0xURXVPUzB5TGpJNFlURWdNU0F3SURBZ01DMHVOelk0TFM0ek5rZzFZVEVnTVNBd0lEQWdNQzB4SURGYUlqNDhMM0JoZEdnK1BDOXpkbWMrUEM5emNHRnVQand2ZEdRK1BIUmtJR052YkhOd1lXNDlJak1pSUdOc1lYTnpQU0p3Y2kweUlHSnZjbVJsY2kxaUlHSnZjbVJsY2kxemJHRjBaUzB5TURBZ2RHVjRkQzF6YlNJK1BHRWdhSEpsWmowaWFIUjBjSE02THk5aGNIQXVkVzV3YTJjdVkyOXRMMnhsWVdac1pYUkFNUzQ1TGpRaUlHTnNZWE56UFNKd2VTMHpJSGN0Wm5Wc2JDQnBibXhwYm1VdFlteHZZMnNnZEdWNGRDMWliSFZsTFRZd01DQm9iM1psY2pwMWJtUmxjbXhwYm1VaVBpNHVMend2WVQ0OEwzUmtQand2ZEhJK1BIUnlJR05zWVhOelBTSm9iM1psY2pwaVp5MXpiR0YwWlMwMU1DSStQSFJrSUdOc1lYTnpQU0p3YkMwMElHSnZjbVJsY2kxaUlHSnZjbVJsY2kxemJHRjBaUzB5TURBZ2RHVjRkQzF6YlNCM0xURXlJajQ4YzNCaGJpQmpiR0Z6Y3owaWRHVjRkQzF6YkdGMFpTMDJNREFpUGp4emRtY2dZWEpwWVMxb2FXUmtaVzQ5SW5SeWRXVWlJR1pwYkd3OUltNXZibVVpSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJZ1kyeGhjM005SW5jdE5pQm9MVFlpUGp4d1lYUm9JSE4wY205clpUMGlZM1Z5Y21WdWRFTnZiRzl5SWlCemRISnZhMlV0YkdsdVpXTmhjRDBpY205MWJtUWlJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUlITjBjbTlyWlMxM2FXUjBhRDBpTWlJZ1pEMGlUVEV6TGpVZ09FZzBiVEF0TW5ZeE0yRXhJREVnTUNBd0lEQWdNU0F4YURFMFlURWdNU0F3SURBZ01DQXhMVEZXT1dFeElERWdNQ0F3SURBdE1TMHhhQzAxTGpBek1tRXhJREVnTUNBd0lERXRMamMyT0MwdU16WnNMVEV1T1MweUxqSTRZVEVnTVNBd0lEQWdNQzB1TnpZNExTNHpOa2cxWVRFZ01TQXdJREFnTUMweElERmFJajQ4TDNCaGRHZytQQzl6ZG1jK1BDOXpjR0Z1UGp3dmRHUStQSFJrSUdOc1lYTnpQU0p3Y2kweUlHSnZjbVJsY2kxaUlHSnZjbVJsY2kxemJHRjBaUzB5TURBZ2RHVjRkQzF6YlNCdFlYZ3RkeTAyTUNCemJUcHRZWGd0ZHkxNGJDSStQR1JwZGlCamJHRnpjejBpYjNabGNtWnNiM2N0YUdsa1pHVnVJSGRvYVhSbGMzQmhZMlV0Ym05M2NtRndJSFJsZUhRdFpXeHNhWEJ6YVhNaVBqeGhJR2h5WldZOUltaDBkSEJ6T2k4dllYQndMblZ1Y0d0bkxtTnZiUzlzWldGbWJHVjBRREV1T1M0MEwyWnBiR1Z6TDJScGMzUXZhVzFoWjJWeklpQmpiR0Z6Y3owaWNIa3RNeUIzTFdaMWJHd2dhVzVzYVc1bExXSnNiMk5ySUhSbGVIUXRZbXgxWlMwMk1EQWdhRzkyWlhJNmRXNWtaWEpzYVc1bElqNXBiV0ZuWlhNdlBDOWhQand2WkdsMlBqd3ZkR1ErUEhSa0lHTnNZWE56UFNKd2NpMHlJR0p2Y21SbGNpMWlJR0p2Y21SbGNpMXpiR0YwWlMweU1EQWdkR1Y0ZEMxemJTQm9hV1JrWlc0Z2MyMDZkR0ZpYkdVdFkyVnNiQ0krNG9DVFBDOTBaRDQ4ZEdRZ1kyeGhjM005SW5CeUxUUWdZbTl5WkdWeUxXSWdZbTl5WkdWeUxYTnNZWFJsTFRJd01DQjBaWGgwTFhOdElIUmxlSFF0Y21sbmFIUWlQall1TlNCclFqd3ZkR1ErUEM5MGNqNDhkSElnWTJ4aGMzTTlJbWh2ZG1WeU9tSm5MWE5zWVhSbExUVXdJajQ4ZEdRZ1kyeGhjM005SW5Cc0xUUWdZbTl5WkdWeUxXSWdZbTl5WkdWeUxYTnNZWFJsTFRJd01DQjBaWGgwTFhOdElIY3RNVElpUGp4emNHRnVJR05zWVhOelBTSjBaWGgwTFhOc1lYUmxMVFl3TUNJK1BITjJaeUJoY21saExXaHBaR1JsYmowaWRISjFaU0lnWm1sc2JEMGlibTl1WlNJZ2RtbGxkMEp2ZUQwaU1DQXdJREkwSURJMElpQmpiR0Z6Y3owaWR5MDJJR2d0TmlJK1BIQmhkR2dnYzNSeWIydGxQU0pqZFhKeVpXNTBRMjlzYjNJaUlITjBjbTlyWlMxc2FXNWxZMkZ3UFNKeWIzVnVaQ0lnYzNSeWIydGxMV3hwYm1WcWIybHVQU0p5YjNWdVpDSWdjM1J5YjJ0bExYZHBaSFJvUFNJeUlpQmtQU0pOTVRBZ00zWTBZVEVnTVNBd0lEQWdNUzB4SURGSU5XMDFJRFF0TWlBeUlESWdNbTAwTFRRZ01pQXlMVElnTW0wMUxURXlkakUyWVRFZ01TQXdJREFnTVMweElERklObUV4SURFZ01DQXdJREV0TVMweFZqY3VPVEUwWVRFZ01TQXdJREFnTVNBdU1qa3pMUzQzTURkc015NDVNVFF0TXk0NU1UUkJNU0F4SURBZ01DQXhJRGt1T1RFMElETklNVGhoTVNBeElEQWdNQ0F4SURFZ01Wb2lQand2Y0dGMGFENDhMM04yWno0OEwzTndZVzQrUEM5MFpENDhkR1FnWTJ4aGMzTTlJbkJ5TFRJZ1ltOXlaR1Z5TFdJZ1ltOXlaR1Z5TFhOc1lYUmxMVEl3TUNCMFpYaDBMWE50SUcxaGVDMTNMVFl3SUhOdE9tMWhlQzEzTFhoc0lqNDhaR2wySUdOc1lYTnpQU0p2ZG1WeVpteHZkeTFvYVdSa1pXNGdkMmhwZEdWemNHRmpaUzF1YjNkeVlYQWdkR1Y0ZEMxbGJHeHBjSE5wY3lJK1BHRWdhSEpsWmowaWFIUjBjSE02THk5aGNIQXVkVzV3YTJjdVkyOXRMMnhsWVdac1pYUkFNUzQ1TGpRdlptbHNaWE12WkdsemRDOXNaV0ZtYkdWMExYTnlZeTVsYzIwdWFuTWlJR05zWVhOelBTSndlUzB6SUhjdFpuVnNiQ0JwYm14cGJtVXRZbXh2WTJzZ2RHVjRkQzFpYkhWbExUWXdNQ0JvYjNabGNqcDFibVJsY214cGJtVWlQbXhsWVdac1pYUXRjM0pqTG1WemJTNXFjend2WVQ0OEwyUnBkajQ4TDNSa1BqeDBaQ0JqYkdGemN6MGljSEl0TWlCaWIzSmtaWEl0WWlCaWIzSmtaWEl0YzJ4aGRHVXRNakF3SUhSbGVIUXRjMjBnYUdsa1pHVnVJSE50T25SaFlteGxMV05sYkd3aVBuUmxlSFF2YW1GMllYTmpjbWx3ZER3dmRHUStQSFJrSUdOc1lYTnpQU0p3Y2kwMElHSnZjbVJsY2kxaUlHSnZjbVJsY2kxemJHRjBaUzB5TURBZ2RHVjRkQzF6YlNCMFpYaDBMWEpwWjJoMElqNDBNalVnYTBJOEwzUmtQand2ZEhJK1BIUnlJR05zWVhOelBTSm9iM1psY2pwaVp5MXpiR0YwWlMwMU1DSStQSFJrSUdOc1lYTnpQU0p3YkMwMElHSnZjbVJsY2kxaUlHSnZjbVJsY2kxemJHRjBaUzB5TURBZ2RHVjRkQzF6YlNCM0xURXlJajQ4YzNCaGJpQmpiR0Z6Y3owaWRHVjRkQzF6YkdGMFpTMDJNREFpUGp4emRtY2dZWEpwWVMxb2FXUmtaVzQ5SW5SeWRXVWlJR1pwYkd3OUltNXZibVVpSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJZ1kyeGhjM005SW5jdE5pQm9MVFlpUGp4d1lYUm9JSE4wY205clpUMGlZM1Z5Y21WdWRFTnZiRzl5SWlCemRISnZhMlV0YkdsdVpXTmhjRDBpY205MWJtUWlJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUlITjBjbTlyWlMxM2FXUjBhRDBpTWlJZ1pEMGlUVEV3SUROMk5HRXhJREVnTUNBd0lERXRNU0F4U0RWdE5TQTBMVElnTWlBeUlESnROQzAwSURJZ01pMHlJREp0TlMweE1uWXhObUV4SURFZ01DQXdJREV0TVNBeFNEWmhNU0F4SURBZ01DQXhMVEV0TVZZM0xqa3hOR0V4SURFZ01DQXdJREVnTGpJNU15MHVOekEzYkRNdU9URTBMVE11T1RFMFFURWdNU0F3SURBZ01TQTVMamt4TkNBelNERTRZVEVnTVNBd0lEQWdNU0F4SURGYUlqNDhMM0JoZEdnK1BDOXpkbWMrUEM5emNHRnVQand2ZEdRK1BIUmtJR05zWVhOelBTSndjaTB5SUdKdmNtUmxjaTFpSUdKdmNtUmxjaTF6YkdGMFpTMHlNREFnZEdWNGRDMXpiU0J0WVhndGR5MDJNQ0J6YlRwdFlYZ3RkeTE0YkNJK1BHUnBkaUJqYkdGemN6MGliM1psY21ac2IzY3RhR2xrWkdWdUlIZG9hWFJsYzNCaFkyVXRibTkzY21Gd0lIUmxlSFF0Wld4c2FYQnphWE1pUGp4aElHaHlaV1k5SW1oMGRIQnpPaTh2WVhCd0xuVnVjR3RuTG1OdmJTOXNaV0ZtYkdWMFFERXVPUzQwTDJacGJHVnpMMlJwYzNRdmJHVmhabXhsZEMxemNtTXVaWE50TG1wekxtMWhjQ0lnWTJ4aGMzTTlJbkI1TFRNZ2R5MW1kV3hzSUdsdWJHbHVaUzFpYkc5amF5QjBaWGgwTFdKc2RXVXROakF3SUdodmRtVnlPblZ1WkdWeWJHbHVaU0krYkdWaFpteGxkQzF6Y21NdVpYTnRMbXB6TG0xaGNEd3ZZVDQ4TDJScGRqNDhMM1JrUGp4MFpDQmpiR0Z6Y3owaWNISXRNaUJpYjNKa1pYSXRZaUJpYjNKa1pYSXRjMnhoZEdVdE1qQXdJSFJsZUhRdGMyMGdhR2xrWkdWdUlITnRPblJoWW14bExXTmxiR3dpUG1Gd2NHeHBZMkYwYVc5dUwycHpiMjQ4TDNSa1BqeDBaQ0JqYkdGemN6MGljSEl0TkNCaWIzSmtaWEl0WWlCaWIzSmtaWEl0YzJ4aGRHVXRNakF3SUhSbGVIUXRjMjBnZEdWNGRDMXlhV2RvZENJK09EWTJJR3RDUEM5MFpENDhMM1J5UGp4MGNpQmpiR0Z6Y3owaWFHOTJaWEk2WW1jdGMyeGhkR1V0TlRBaVBqeDBaQ0JqYkdGemN6MGljR3d0TkNCaWIzSmtaWEl0WWlCaWIzSmtaWEl0YzJ4aGRHVXRNakF3SUhSbGVIUXRjMjBnZHkweE1pSStQSE53WVc0Z1kyeGhjM005SW5SbGVIUXRjMnhoZEdVdE5qQXdJajQ4YzNabklHRnlhV0V0YUdsa1pHVnVQU0owY25WbElpQm1hV3hzUFNKdWIyNWxJaUIyYVdWM1FtOTRQU0l3SURBZ01qUWdNalFpSUdOc1lYTnpQU0ozTFRZZ2FDMDJJajQ4Y0dGMGFDQnpkSEp2YTJVOUltTjFjbkpsYm5SRGIyeHZjaUlnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lpQnpkSEp2YTJVdGJHbHVaV3B2YVc0OUluSnZkVzVrSWlCemRISnZhMlV0ZDJsa2RHZzlJaklpSUdROUlrMHhNQ0F6ZGpSaE1TQXhJREFnTUNBeExURWdNVWcxYlRVZ05DMHlJRElnTWlBeWJUUXROQ0F5SURJdE1pQXliVFV0TVRKMk1UWmhNU0F4SURBZ01DQXhMVEVnTVVnMllURWdNU0F3SURBZ01TMHhMVEZXTnk0NU1UUmhNU0F4SURBZ01DQXhJQzR5T1RNdExqY3dOMnd6TGpreE5DMHpMamt4TkVFeElERWdNQ0F3SURFZ09TNDVNVFFnTTBneE9HRXhJREVnTUNBd0lERWdNU0F4V2lJK1BDOXdZWFJvUGp3dmMzWm5Qand2YzNCaGJqNDhMM1JrUGp4MFpDQmpiR0Z6Y3owaWNISXRNaUJpYjNKa1pYSXRZaUJpYjNKa1pYSXRjMnhoZEdVdE1qQXdJSFJsZUhRdGMyMGdiV0Y0TFhjdE5qQWdjMjA2YldGNExYY3RlR3dpUGp4a2FYWWdZMnhoYzNNOUltOTJaWEptYkc5M0xXaHBaR1JsYmlCM2FHbDBaWE53WVdObExXNXZkM0poY0NCMFpYaDBMV1ZzYkdsd2MybHpJajQ4WVNCb2NtVm1QU0pvZEhSd2N6b3ZMMkZ3Y0M1MWJuQnJaeTVqYjIwdmJHVmhabXhsZEVBeExqa3VOQzltYVd4bGN5OWthWE4wTDJ4bFlXWnNaWFF0YzNKakxtcHpJaUJqYkdGemN6MGljSGt0TXlCM0xXWjFiR3dnYVc1c2FXNWxMV0pzYjJOcklIUmxlSFF0WW14MVpTMDJNREFnYUc5MlpYSTZkVzVrWlhKc2FXNWxJajVzWldGbWJHVjBMWE55WXk1cWN6d3ZZVDQ4TDJScGRqNDhMM1JrUGp4MFpDQmpiR0Z6Y3owaWNISXRNaUJpYjNKa1pYSXRZaUJpYjNKa1pYSXRjMnhoZEdVdE1qQXdJSFJsZUhRdGMyMGdhR2xrWkdWdUlITnRPblJoWW14bExXTmxiR3dpUG5SbGVIUXZhbUYyWVhOamNtbHdkRHd2ZEdRK1BIUmtJR05zWVhOelBTSndjaTAwSUdKdmNtUmxjaTFpSUdKdmNtUmxjaTF6YkdGMFpTMHlNREFnZEdWNGRDMXpiU0IwWlhoMExYSnBaMmgwSWo0ME5UQWdhMEk4TDNSa1Bqd3ZkSEkrUEhSeUlHTnNZWE56UFNKb2IzWmxjanBpWnkxemJHRjBaUzAxTUNJK1BIUmtJR05zWVhOelBTSndiQzAwSUdKdmNtUmxjaTFpSUdKdmNtUmxjaTF6YkdGMFpTMHlNREFnZEdWNGRDMXpiU0IzTFRFeUlqNDhjM0JoYmlCamJHRnpjejBpZEdWNGRDMXpiR0YwWlMwMk1EQWlQanh6ZG1jZ1lYSnBZUzFvYVdSa1pXNDlJblJ5ZFdVaUlHWnBiR3c5SW01dmJtVWlJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lnWTJ4aGMzTTlJbmN0TmlCb0xUWWlQanh3WVhSb0lITjBjbTlyWlQwaVkzVnljbVZ1ZEVOdmJHOXlJaUJ6ZEhKdmEyVXRiR2x1WldOaGNEMGljbTkxYm1RaUlITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpSUhOMGNtOXJaUzEzYVdSMGFEMGlNaUlnWkQwaVRURXdJRE4yTkdFeElERWdNQ0F3SURFdE1TQXhTRFZ0TlNBMExUSWdNaUF5SURKdE5DMDBJRElnTWkweUlESnROUzB4TW5ZeE5tRXhJREVnTUNBd0lERXRNU0F4U0RaaE1TQXhJREFnTUNBeExURXRNVlkzTGpreE5HRXhJREVnTUNBd0lERWdMakk1TXkwdU56QTNiRE11T1RFMExUTXVPVEUwUVRFZ01TQXdJREFnTVNBNUxqa3hOQ0F6U0RFNFlURWdNU0F3SURBZ01TQXhJREZhSWo0OEwzQmhkR2crUEM5emRtYytQQzl6Y0dGdVBqd3ZkR1ErUEhSa0lHTnNZWE56UFNKd2NpMHlJR0p2Y21SbGNpMWlJR0p2Y21SbGNpMXpiR0YwWlMweU1EQWdkR1Y0ZEMxemJTQnRZWGd0ZHkwMk1DQnpiVHB0WVhndGR5MTRiQ0krUEdScGRpQmpiR0Z6Y3owaWIzWmxjbVpzYjNjdGFHbGtaR1Z1SUhkb2FYUmxjM0JoWTJVdGJtOTNjbUZ3SUhSbGVIUXRaV3hzYVhCemFYTWlQanhoSUdoeVpXWTlJbWgwZEhCek9pOHZZWEJ3TG5WdWNHdG5MbU52YlM5c1pXRm1iR1YwUURFdU9TNDBMMlpwYkdWekwyUnBjM1F2YkdWaFpteGxkQzF6Y21NdWFuTXViV0Z3SWlCamJHRnpjejBpY0hrdE15QjNMV1oxYkd3Z2FXNXNhVzVsTFdKc2IyTnJJSFJsZUhRdFlteDFaUzAyTURBZ2FHOTJaWEk2ZFc1a1pYSnNhVzVsSWo1c1pXRm1iR1YwTFhOeVl5NXFjeTV0WVhBOEwyRStQQzlrYVhZK1BDOTBaRDQ4ZEdRZ1kyeGhjM005SW5CeUxUSWdZbTl5WkdWeUxXSWdZbTl5WkdWeUxYTnNZWFJsTFRJd01DQjBaWGgwTFhOdElHaHBaR1JsYmlCemJUcDBZV0pzWlMxalpXeHNJajVoY0hCc2FXTmhkR2x2Ymk5cWMyOXVQQzkwWkQ0OGRHUWdZMnhoYzNNOUluQnlMVFFnWW05eVpHVnlMV0lnWW05eVpHVnlMWE5zWVhSbExUSXdNQ0IwWlhoMExYTnRJSFJsZUhRdGNtbG5hSFFpUGpnMk5pQnJRand2ZEdRK1BDOTBjajQ4ZEhJZ1kyeGhjM005SW1odmRtVnlPbUpuTFhOc1lYUmxMVFV3SWo0OGRHUWdZMnhoYzNNOUluQnNMVFFnWW05eVpHVnlMV0lnWW05eVpHVnlMWE5zWVhSbExUSXdNQ0IwWlhoMExYTnRJSGN0TVRJaVBqeHpjR0Z1SUdOc1lYTnpQU0owWlhoMExYTnNZWFJsTFRZd01DSStQSE4yWnlCaGNtbGhMV2hwWkdSbGJqMGlkSEoxWlNJZ1ptbHNiRDBpYm05dVpTSWdkbWxsZDBKdmVEMGlNQ0F3SURJMElESTBJaUJqYkdGemN6MGlkeTAySUdndE5pSStQSEJoZEdnZ2MzUnliMnRsUFNKamRYSnlaVzUwUTI5c2IzSWlJSE4wY205clpTMXNhVzVsWTJGd1BTSnliM1Z1WkNJZ2MzUnliMnRsTFd4cGJtVnFiMmx1UFNKeWIzVnVaQ0lnYzNSeWIydGxMWGRwWkhSb1BTSXlJaUJrUFNKTk1UQWdNM1kwWVRFZ01TQXdJREFnTVMweElERklOVzAxSURRdE1pQXlJRElnTW0wMExUUWdNaUF5TFRJZ01tMDFMVEV5ZGpFMllURWdNU0F3SURBZ01TMHhJREZJTm1FeElERWdNQ0F3SURFdE1TMHhWamN1T1RFMFlURWdNU0F3SURBZ01TQXVNamt6TFM0M01EZHNNeTQ1TVRRdE15NDVNVFJCTVNBeElEQWdNQ0F4SURrdU9URTBJRE5JTVRoaE1TQXhJREFnTUNBeElERWdNVm9pUGp3dmNHRjBhRDQ4TDNOMlp6NDhMM053WVc0K1BDOTBaRDQ4ZEdRZ1kyeGhjM005SW5CeUxUSWdZbTl5WkdWeUxXSWdZbTl5WkdWeUxYTnNZWFJsTFRJd01DQjBaWGgwTFhOdElHMWhlQzEzTFRZd0lITnRPbTFoZUMxM0xYaHNJajQ4WkdsMklHTnNZWE56UFNKdmRtVnlabXh2ZHkxb2FXUmtaVzRnZDJocGRHVnpjR0ZqWlMxdWIzZHlZWEFnZEdWNGRDMWxiR3hwY0hOcGN5SStQR0VnYUhKbFpqMGlhSFIwY0hNNkx5OWhjSEF1ZFc1d2EyY3VZMjl0TDJ4bFlXWnNaWFJBTVM0NUxqUXZabWxzWlhNdlpHbHpkQzlzWldGbWJHVjBMbU56Y3lJZ1kyeGhjM005SW5CNUxUTWdkeTFtZFd4c0lHbHViR2x1WlMxaWJHOWpheUIwWlhoMExXSnNkV1V0TmpBd0lHaHZkbVZ5T25WdVpHVnliR2x1WlNJK2JHVmhabXhsZEM1amMzTThMMkUrUEM5a2FYWStQQzkwWkQ0OGRHUWdZMnhoYzNNOUluQnlMVElnWW05eVpHVnlMV0lnWW05eVpHVnlMWE5zWVhSbExUSXdNQ0IwWlhoMExYTnRJR2hwWkdSbGJpQnpiVHAwWVdKc1pTMWpaV3hzSWo1MFpYaDBMMk56Y3p3dmRHUStQSFJrSUdOc1lYTnpQU0p3Y2kwMElHSnZjbVJsY2kxaUlHSnZjbVJsY2kxemJHRjBaUzB5TURBZ2RHVjRkQzF6YlNCMFpYaDBMWEpwWjJoMElqNHhOQzQ0SUd0Q1BDOTBaRDQ4TDNSeVBqeDBjaUJqYkdGemN6MGlhRzkyWlhJNlltY3RjMnhoZEdVdE5UQWlQangwWkNCamJHRnpjejBpY0d3dE5DQmliM0prWlhJdFlpQmliM0prWlhJdGMyeGhkR1V0TWpBd0lIUmxlSFF0YzIwZ2R5MHhNaUkrUEhOd1lXNGdZMnhoYzNNOUluUmxlSFF0YzJ4aGRHVXROakF3SWo0OGMzWm5JR0Z5YVdFdGFHbGtaR1Z1UFNKMGNuVmxJaUJtYVd4c1BTSnViMjVsSWlCMmFXVjNRbTk0UFNJd0lEQWdNalFnTWpRaUlHTnNZWE56UFNKM0xUWWdhQzAySWo0OGNHRjBhQ0J6ZEhKdmEyVTlJbU4xY25KbGJuUkRiMnh2Y2lJZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJaUJ6ZEhKdmEyVXRiR2x1WldwdmFXNDlJbkp2ZFc1a0lpQnpkSEp2YTJVdGQybGtkR2c5SWpJaUlHUTlJazB4TUNBemRqUmhNU0F4SURBZ01DQXhMVEVnTVVnMWJUVWdOQzB5SURJZ01pQXliVFF0TkNBeUlESXRNaUF5YlRVdE1USjJNVFpoTVNBeElEQWdNQ0F4TFRFZ01VZzJZVEVnTVNBd0lEQWdNUzB4TFRGV055NDVNVFJoTVNBeElEQWdNQ0F4SUM0eU9UTXRMamN3TjJ3ekxqa3hOQzB6TGpreE5FRXhJREVnTUNBd0lERWdPUzQ1TVRRZ00wZ3hPR0V4SURFZ01DQXdJREVnTVNBeFdpSStQQzl3WVhSb1Bqd3ZjM1puUGp3dmMzQmhiajQ4TDNSa1BqeDBaQ0JqYkdGemN6MGljSEl0TWlCaWIzSmtaWEl0WWlCaWIzSmtaWEl0YzJ4aGRHVXRNakF3SUhSbGVIUXRjMjBnYldGNExYY3ROakFnYzIwNmJXRjRMWGN0ZUd3aVBqeGthWFlnWTJ4aGMzTTlJbTkyWlhKbWJHOTNMV2hwWkdSbGJpQjNhR2wwWlhOd1lXTmxMVzV2ZDNKaGNDQjBaWGgwTFdWc2JHbHdjMmx6SWo0OFlTQm9jbVZtUFNKb2RIUndjem92TDJGd2NDNTFibkJyWnk1amIyMHZiR1ZoWm14bGRFQXhMamt1TkM5bWFXeGxjeTlrYVhOMEwyeGxZV1pzWlhRdWFuTWlJR05zWVhOelBTSndlUzB6SUhjdFpuVnNiQ0JwYm14cGJtVXRZbXh2WTJzZ2RHVjRkQzFpYkhWbExUWXdNQ0JvYjNabGNqcDFibVJsY214cGJtVWlQbXhsWVdac1pYUXVhbk04TDJFK1BDOWthWFkrUEM5MFpENDhkR1FnWTJ4aGMzTTlJbkJ5TFRJZ1ltOXlaR1Z5TFdJZ1ltOXlaR1Z5TFhOc1lYUmxMVEl3TUNCMFpYaDBMWE50SUdocFpHUmxiaUJ6YlRwMFlXSnNaUzFqWld4c0lqNTBaWGgwTDJwaGRtRnpZM0pwY0hROEwzUmtQangwWkNCamJHRnpjejBpY0hJdE5DQmliM0prWlhJdFlpQmliM0prWlhJdGMyeGhkR1V0TWpBd0lIUmxlSFF0YzIwZ2RHVjRkQzF5YVdkb2RDSStNVFE0SUd0Q1BDOTBaRDQ4TDNSeVBqeDBjaUJqYkdGemN6MGlhRzkyWlhJNlltY3RjMnhoZEdVdE5UQWlQangwWkNCamJHRnpjejBpY0d3dE5DQmliM0prWlhJdFlpQmliM0prWlhJdGMyeGhkR1V0TWpBd0lIUmxlSFF0YzIwZ2R5MHhNaUkrUEhOd1lXNGdZMnhoYzNNOUluUmxlSFF0YzJ4aGRHVXROakF3SWo0OGMzWm5JR0Z5YVdFdGFHbGtaR1Z1UFNKMGNuVmxJaUJtYVd4c1BTSnViMjVsSWlCMmFXVjNRbTk0UFNJd0lEQWdNalFnTWpRaUlHTnNZWE56UFNKM0xUWWdhQzAySWo0OGNHRjBhQ0J6ZEhKdmEyVTlJbU4xY25KbGJuUkRiMnh2Y2lJZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJaUJ6ZEhKdmEyVXRiR2x1WldwdmFXNDlJbkp2ZFc1a0lpQnpkSEp2YTJVdGQybGtkR2c5SWpJaUlHUTlJazB4TUNBemRqUmhNU0F4SURBZ01DQXhMVEVnTVVnMWJUVWdOQzB5SURJZ01pQXliVFF0TkNBeUlESXRNaUF5YlRVdE1USjJNVFpoTVNBeElEQWdNQ0F4TFRFZ01VZzJZVEVnTVNBd0lEQWdNUzB4TFRGV055NDVNVFJoTVNBeElEQWdNQ0F4SUM0eU9UTXRMamN3TjJ3ekxqa3hOQzB6TGpreE5FRXhJREVnTUNBd0lERWdPUzQ1TVRRZ00wZ3hPR0V4SURFZ01DQXdJREVnTVNBeFdpSStQQzl3WVhSb1Bqd3ZjM1puUGp3dmMzQmhiajQ4TDNSa1BqeDBaQ0JqYkdGemN6MGljSEl0TWlCaWIzSmtaWEl0WWlCaWIzSmtaWEl0YzJ4aGRHVXRNakF3SUhSbGVIUXRjMjBnYldGNExYY3ROakFnYzIwNmJXRjRMWGN0ZUd3aVBqeGthWFlnWTJ4aGMzTTlJbTkyWlhKbWJHOTNMV2hwWkdSbGJpQjNhR2wwWlhOd1lXTmxMVzV2ZDNKaGNDQjBaWGgwTFdWc2JHbHdjMmx6SWo0OFlTQm9jbVZtUFNKb2RIUndjem92TDJGd2NDNTFibkJyWnk1amIyMHZiR1ZoWm14bGRFQXhMamt1TkM5bWFXeGxjeTlrYVhOMEwyeGxZV1pzWlhRdWFuTXViV0Z3SWlCamJHRnpjejBpY0hrdE15QjNMV1oxYkd3Z2FXNXNhVzVsTFdKc2IyTnJJSFJsZUhRdFlteDFaUzAyTURBZ2FHOTJaWEk2ZFc1a1pYSnNhVzVsSWo1c1pXRm1iR1YwTG1wekxtMWhjRHd2WVQ0OEwyUnBkajQ4TDNSa1BqeDBaQ0JqYkdGemN6MGljSEl0TWlCaWIzSmtaWEl0WWlCaWIzSmtaWEl0YzJ4aGRHVXRNakF3SUhSbGVIUXRjMjBnYUdsa1pHVnVJSE50T25SaFlteGxMV05sYkd3aVBtRndjR3hwWTJGMGFXOXVMMnB6YjI0OEwzUmtQangwWkNCamJHRnpjejBpY0hJdE5DQmliM0prWlhJdFlpQmliM0prWlhJdGMyeGhkR1V0TWpBd0lIUmxlSFF0YzIwZ2RHVjRkQzF5YVdkb2RDSStNakkySUd0Q1BDOTBaRDQ4TDNSeVBqd3ZkR0p2WkhrK1BDOTBZV0pzWlQ0OEwyMWhhVzQrUEM5dFlXbHVQand2WW05a2VUNDhMMmgwYld3KyIpOw0KCWRpc3BsYXk6IGlubGluZS1ibG9jazsNCglwb3NpdGlvbjogYWJzb2x1dGU7DQoJfQ0KDQoNCi8qIGNvbnRyb2wgcG9zaXRpb25pbmcgKi8NCg0KLmxlYWZsZXQtY29udHJvbCB7DQoJcG9zaXRpb246IHJlbGF0aXZlOw0KCXotaW5kZXg6IDgwMDsNCglwb2ludGVyLWV2ZW50czogdmlzaWJsZVBhaW50ZWQ7IC8qIElFIDktMTAgZG9lc24ndCBoYXZlIGF1dG8gKi8NCglwb2ludGVyLWV2ZW50czogYXV0bzsNCgl9DQoubGVhZmxldC10b3AsDQoubGVhZmxldC1ib3R0b20gew0KCXBvc2l0aW9uOiBhYnNvbHV0ZTsNCgl6LWluZGV4OiAxMDAwOw0KCXBvaW50ZXItZXZlbnRzOiBub25lOw0KCX0NCi5sZWFmbGV0LXRvcCB7DQoJdG9wOiAwOw0KCX0NCi5sZWFmbGV0LXJpZ2h0IHsNCglyaWdodDogMDsNCgl9DQoubGVhZmxldC1ib3R0b20gew0KCWJvdHRvbTogMDsNCgl9DQoubGVhZmxldC1sZWZ0IHsNCglsZWZ0OiAwOw0KCX0NCi5sZWFmbGV0LWNvbnRyb2wgew0KCWZsb2F0OiBsZWZ0Ow0KCWNsZWFyOiBib3RoOw0KCX0NCi5sZWFmbGV0LXJpZ2h0IC5sZWFmbGV0LWNvbnRyb2wgew0KCWZsb2F0OiByaWdodDsNCgl9DQoubGVhZmxldC10b3AgLmxlYWZsZXQtY29udHJvbCB7DQoJbWFyZ2luLXRvcDogMTBweDsNCgl9DQoubGVhZmxldC1ib3R0b20gLmxlYWZsZXQtY29udHJvbCB7DQoJbWFyZ2luLWJvdHRvbTogMTBweDsNCgl9DQoubGVhZmxldC1sZWZ0IC5sZWFmbGV0LWNvbnRyb2wgew0KCW1hcmdpbi1sZWZ0OiAxMHB4Ow0KCX0NCi5sZWFmbGV0LXJpZ2h0IC5sZWFmbGV0LWNvbnRyb2wgew0KCW1hcmdpbi1yaWdodDogMTBweDsNCgl9DQoNCg0KLyogem9vbSBhbmQgZmFkZSBhbmltYXRpb25zICovDQoNCi5sZWFmbGV0LWZhZGUtYW5pbSAubGVhZmxldC1wb3B1cCB7DQoJb3BhY2l0eTogMDsNCgktd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgMC4ycyBsaW5lYXI7DQoJICAgLW1vei10cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgbGluZWFyOw0KCSAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGxpbmVhcjsNCgl9DQoubGVhZmxldC1mYWRlLWFuaW0gLmxlYWZsZXQtbWFwLXBhbmUgLmxlYWZsZXQtcG9wdXAgew0KCW9wYWNpdHk6IDE7DQoJfQ0KLmxlYWZsZXQtem9vbS1hbmltYXRlZCB7DQoJLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiAwIDA7DQoJICAgIC1tcy10cmFuc2Zvcm0tb3JpZ2luOiAwIDA7DQoJICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiAwIDA7DQoJfQ0Kc3ZnLmxlYWZsZXQtem9vbS1hbmltYXRlZCB7DQoJd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTsNCn0NCg0KLmxlYWZsZXQtem9vbS1hbmltIC5sZWFmbGV0LXpvb20tYW5pbWF0ZWQgew0KCS13ZWJraXQtdHJhbnNpdGlvbjogLXdlYmtpdC10cmFuc2Zvcm0gMC4yNXMgY3ViaWMtYmV6aWVyKDAsMCwwLjI1LDEpOw0KCSAgIC1tb3otdHJhbnNpdGlvbjogICAgLW1vei10cmFuc2Zvcm0gMC4yNXMgY3ViaWMtYmV6aWVyKDAsMCwwLjI1LDEpOw0KCSAgICAgICAgdHJhbnNpdGlvbjogICAgICAgICB0cmFuc2Zvcm0gMC4yNXMgY3ViaWMtYmV6aWVyKDAsMCwwLjI1LDEpOw0KCX0NCi5sZWFmbGV0LXpvb20tYW5pbSAubGVhZmxldC10aWxlLA0KLmxlYWZsZXQtcGFuLWFuaW0gLmxlYWZsZXQtdGlsZSB7DQoJLXdlYmtpdC10cmFuc2l0aW9uOiBub25lOw0KCSAgIC1tb3otdHJhbnNpdGlvbjogbm9uZTsNCgkgICAgICAgIHRyYW5zaXRpb246IG5vbmU7DQoJfQ0KDQoubGVhZmxldC16b29tLWFuaW0gLmxlYWZsZXQtem9vbS1oaWRlIHsNCgl2aXNpYmlsaXR5OiBoaWRkZW47DQoJfQ0KDQoNCi8qIGN1cnNvcnMgKi8NCg0KLmxlYWZsZXQtaW50ZXJhY3RpdmUgew0KCWN1cnNvcjogcG9pbnRlcjsNCgl9DQoubGVhZmxldC1ncmFiIHsNCgljdXJzb3I6IC13ZWJraXQtZ3JhYjsNCgljdXJzb3I6ICAgIC1tb3otZ3JhYjsNCgljdXJzb3I6ICAgICAgICAgZ3JhYjsNCgl9DQoubGVhZmxldC1jcm9zc2hhaXIsDQoubGVhZmxldC1jcm9zc2hhaXIgLmxlYWZsZXQtaW50ZXJhY3RpdmUgew0KCWN1cnNvcjogY3Jvc3NoYWlyOw0KCX0NCi5sZWFmbGV0LXBvcHVwLXBhbmUsDQoubGVhZmxldC1jb250cm9sIHsNCgljdXJzb3I6IGF1dG87DQoJfQ0KLmxlYWZsZXQtZHJhZ2dpbmcgLmxlYWZsZXQtZ3JhYiwNCi5sZWFmbGV0LWRyYWdnaW5nIC5sZWFmbGV0LWdyYWIgLmxlYWZsZXQtaW50ZXJhY3RpdmUsDQoubGVhZmxldC1kcmFnZ2luZyAubGVhZmxldC1tYXJrZXItZHJhZ2dhYmxlIHsNCgljdXJzb3I6IG1vdmU7DQoJY3Vyc29yOiAtd2Via2l0LWdyYWJiaW5nOw0KCWN1cnNvcjogICAgLW1vei1ncmFiYmluZzsNCgljdXJzb3I6ICAgICAgICAgZ3JhYmJpbmc7DQoJfQ0KDQovKiBtYXJrZXIgJiBvdmVybGF5cyBpbnRlcmFjdGl2aXR5ICovDQoubGVhZmxldC1tYXJrZXItaWNvbiwNCi5sZWFmbGV0LW1hcmtlci1zaGFkb3csDQoubGVhZmxldC1pbWFnZS1sYXllciwNCi5sZWFmbGV0LXBhbmUgPiBzdmcgcGF0aCwNCi5sZWFmbGV0LXRpbGUtY29udGFpbmVyIHsNCglwb2ludGVyLWV2ZW50czogbm9uZTsNCgl9DQoNCi5sZWFmbGV0LW1hcmtlci1pY29uLmxlYWZsZXQtaW50ZXJhY3RpdmUsDQoubGVhZmxldC1pbWFnZS1sYXllci5sZWFmbGV0LWludGVyYWN0aXZlLA0KLmxlYWZsZXQtcGFuZSA+IHN2ZyBwYXRoLmxlYWZsZXQtaW50ZXJhY3RpdmUsDQpzdmcubGVhZmxldC1pbWFnZS1sYXllci5sZWFmbGV0LWludGVyYWN0aXZlIHBhdGggew0KCXBvaW50ZXItZXZlbnRzOiB2aXNpYmxlUGFpbnRlZDsgLyogSUUgOS0xMCBkb2Vzbid0IGhhdmUgYXV0byAqLw0KCXBvaW50ZXItZXZlbnRzOiBhdXRvOw0KCX0NCg0KLyogdmlzdWFsIHR3ZWFrcyAqLw0KDQoubGVhZmxldC1jb250YWluZXIgew0KCWJhY2tncm91bmQ6ICNkZGQ7DQoJb3V0bGluZS1vZmZzZXQ6IDFweDsNCgl9DQoubGVhZmxldC1jb250YWluZXIgYSB7DQoJY29sb3I6ICMwMDc4QTg7DQoJfQ0KLmxlYWZsZXQtem9vbS1ib3ggew0KCWJvcmRlcjogMnB4IGRvdHRlZCAjMzhmOw0KCWJhY2tncm91bmQ6IHJnYmEoMjU1LDI1NSwyNTUsMC41KTsNCgl9DQoNCg0KLyogZ2VuZXJhbCB0eXBvZ3JhcGh5ICovDQoubGVhZmxldC1jb250YWluZXIgew0KCWZvbnQtZmFtaWx5OiAiSGVsdmV0aWNhIE5ldWUiLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOw0KCWZvbnQtc2l6ZTogMTJweDsNCglmb250LXNpemU6IDAuNzVyZW07DQoJbGluZS1oZWlnaHQ6IDEuNTsNCgl9DQoNCg0KLyogZ2VuZXJhbCB0b29sYmFyIHN0eWxlcyAqLw0KDQoubGVhZmxldC1iYXIgew0KCWJveC1zaGFkb3c6IDAgMXB4IDVweCByZ2JhKDAsMCwwLDAuNjUpOw0KCWJvcmRlci1yYWRpdXM6IDRweDsNCgl9DQoubGVhZmxldC1iYXIgYSB7DQoJYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsNCglib3JkZXItYm90dG9tOiAxcHggc29saWQgI2NjYzsNCgl3aWR0aDogMjZweDsNCgloZWlnaHQ6IDI2cHg7DQoJbGluZS1oZWlnaHQ6IDI2cHg7DQoJZGlzcGxheTogYmxvY2s7DQoJdGV4dC1hbGlnbjogY2VudGVyOw0KCXRleHQtZGVjb3JhdGlvbjogbm9uZTsNCgljb2xvcjogYmxhY2s7DQoJfQ0KLmxlYWZsZXQtYmFyIGEsDQoubGVhZmxldC1jb250cm9sLWxheWVycy10b2dnbGUgew0KCWJhY2tncm91bmQtcG9zaXRpb246IDUwJSA1MCU7DQoJYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsNCglkaXNwbGF5OiBibG9jazsNCgl9DQoubGVhZmxldC1iYXIgYTpob3ZlciwNCi5sZWFmbGV0LWJhciBhOmZvY3VzIHsNCgliYWNrZ3JvdW5kLWNvbG9yOiAjZjRmNGY0Ow0KCX0NCi5sZWFmbGV0LWJhciBhOmZpcnN0LWNoaWxkIHsNCglib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA0cHg7DQoJYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweDsNCgl9DQoubGVhZmxldC1iYXIgYTpsYXN0LWNoaWxkIHsNCglib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA0cHg7DQoJYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDRweDsNCglib3JkZXItYm90dG9tOiBub25lOw0KCX0NCi5sZWFmbGV0LWJhciBhLmxlYWZsZXQtZGlzYWJsZWQgew0KCWN1cnNvcjogZGVmYXVsdDsNCgliYWNrZ3JvdW5kLWNvbG9yOiAjZjRmNGY0Ow0KCWNvbG9yOiAjYmJiOw0KCX0NCg0KLmxlYWZsZXQtdG91Y2ggLmxlYWZsZXQtYmFyIGEgew0KCXdpZHRoOiAzMHB4Ow0KCWhlaWdodDogMzBweDsNCglsaW5lLWhlaWdodDogMzBweDsNCgl9DQoubGVhZmxldC10b3VjaCAubGVhZmxldC1iYXIgYTpmaXJzdC1jaGlsZCB7DQoJYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMnB4Ow0KCWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAycHg7DQoJfQ0KLmxlYWZsZXQtdG91Y2ggLmxlYWZsZXQtYmFyIGE6bGFzdC1jaGlsZCB7DQoJYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMnB4Ow0KCWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAycHg7DQoJfQ0KDQovKiB6b29tIGNvbnRyb2wgKi8NCg0KLmxlYWZsZXQtY29udHJvbC16b29tLWluLA0KLmxlYWZsZXQtY29udHJvbC16b29tLW91dCB7DQoJZm9udDogYm9sZCAxOHB4ICdMdWNpZGEgQ29uc29sZScsIE1vbmFjbywgbW9ub3NwYWNlOw0KCXRleHQtaW5kZW50OiAxcHg7DQoJfQ0KDQoubGVhZmxldC10b3VjaCAubGVhZmxldC1jb250cm9sLXpvb20taW4sIC5sZWFmbGV0LXRvdWNoIC5sZWFmbGV0LWNvbnRyb2wtem9vbS1vdXQgIHsNCglmb250LXNpemU6IDIycHg7DQoJfQ0KDQoNCi8qIGxheWVycyBjb250cm9sICovDQoNCi5sZWFmbGV0LWNvbnRyb2wtbGF5ZXJzIHsNCglib3gtc2hhZG93OiAwIDFweCA1cHggcmdiYSgwLDAsMCwwLjQpOw0KCWJhY2tncm91bmQ6ICNmZmY7DQoJYm9yZGVyLXJhZGl1czogNXB4Ow0KCX0NCi5sZWFmbGV0LWNvbnRyb2wtbGF5ZXJzLXRvZ2dsZSB7DQoJYmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJvQUFBQWFDQVFBQUFBRFE0UkZBQUFDZjBsRVFWUjRBWTFVTTNna0FSVGVQZHZkb1R4WEtjK3FUbDNhVTVVNmIyS2JrejNHdHEzWnc2emlMR05QenJZeDc5NDZUcjYvZWUvWGVDUTREM3lrUHRMNXRIbm80bjBkL2gzK3hmdVdIR0xYODFjbjdyMGlUTnpqcjdMcmx4Q3FQdGtiVFFFSGVxT3JUeTRZeXQzVkNpL0lPQjB2N3JWQzdxNDVRM0dyNUs2anQrM0dsNW5Db0RENE10TytqOTZXdThhdG1oR3FjTkdIT2J1ZjhPTS94M0FNeDM4KzRaMnNQcXpDeFJGSzJhRjJlNUpvbDU2WFRMeWdnQU1UTDU2WE9Nb1MxVzRwT3lqVWNHR1FkWnhVNnFSaDdCOVpwK1BmcE9GbHF0MHp5RFpja1BpMXR0bUlwMDNqWDhneUo4YS9QRzJ5dXRwUy9Wb2w3cGVaSWJaY0tCQUVFaGVFSUFnRmJEa3o1SDZacmttMmhWV0dpWEtpRjRZY3cwUldLZHRDMTZRN3FlM1g0aU9NeHJ1b256ZWdKeldhWEZyVTl1dE9Tc0xVbXJjMFlqZVdZakNXNFBETUFERWxwSlNTUTB2UXZBMVRtNi9KbEtucUZzMUVHeVppRkNxblJaVEVKSkppS1JZelZZekpjazJSbTZQNGlIK2NtU1kwWXppbVlhOGwwRXRUT0RGV2hjTUlNVnFkc0kydWlUdkttVGlzSURISjNvZDVHSUxWaEJDYXJDZlZSbW80dVRqa2hyaHpraUJWN1NzYXFTK1R6cnpNMXFwR0dVRnQyOHBJeVNRSFI2aDdGNktTd0dXbTk3YXkrWitacU1jRWpFV2ViRTd3eENTUXdwa2hKcW9aQTVpdkNkWkRqSmVwdUo5SVFqR0dVbXVYSmRCRlV5Z3hWcVZzeEZzTE1iRGU4WmJEWVZDR0t4cytXMDgwbWF4MWhGQ2FyQ2ZWK0MxS0FUd2NudkU5Z1JSdU1QMnByZGJXR293bTFLQjF5K3p3TU1FTmtNNzU1Y0oyeVBEdHFoVEk2RUQxTS84MnlJRHRDLzRqNEJpamplT2JmbHBPOUk5TXdYVENzU1g4aldBRmVIcjA1V29MVEo1RzhJUVZTLzd2d1I2b2hpcllNN2Y2SHpZcG9nZlMzUjJPQUFBQUFFbEZUa1N1UW1DQyIpOw0KCXdpZHRoOiAzNnB4Ow0KCWhlaWdodDogMzZweDsNCgl9DQoubGVhZmxldC1yZXRpbmEgLmxlYWZsZXQtY29udHJvbC1sYXllcnMtdG9nZ2xlIHsNCgliYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRFFBQUFBMENBUUFBQUJ2Y2ROZ0FBQUVza2xFUVZSNEFXTDRUeWRJaHBaSzFrcFdPbGcwdzNaWFA2RDJzb0J0RzQyamVJNlptUVRIekF4aVRiU0pzWUxqTzlIaFArV09tY3VoY2lWbm1IVlFjSm5wN0RGdlNjb3dab3JhZC8rVi9mVnpNZE1UMmc5Q3Y5Z3VYR3YvN3BZT3JYaDJVK1JSUjNkU2Q5SlJ4NmJJRmMvZWtxSEkyOUpDNnBKNVpFaDF5V2toa2JjRmVTanhneDNMMm0xY2IxQzdiY2V5eEErQ05qVC9JZmZmKy9rRGsydS93LzMzL0llQ01PU2FXWjRnbG9zcVQzRE5uTlpRN0NzNTgvM0NlNUhMNzhpWkgvdktWSWFZbHF6ZmRMdThWaTdkbnZVYkV6YTVJZHQzNnRxdVpGbGRsNk41Wi9QT0xvZjBYTEs2MW1aQ21KU1dqVkY5dEVqVWx1dTc0SVVYdmd0dHVWSUhFN1l4U2thWWhKWmFtN3lpTTlQdjgySllmbDlucHR4WmF4TUpFNFlTUHR5K3ZGMCtZMnVwOWQzd3dpamZqWmJhYnFtLzNiWjllY0tIc2lHbVJmbG5uMU1XNHBqSGY5b0x1ZnluMnozeTFENm44ZzhUWmh4eXppcExOUG5BVXBzT2l1V2ltZzUycHNyVFpZbk9XWU5EVE11V0JXYTB0SmI0cmdxMVV2bXV0cGFZRWJabHdVM0NMSm0vYXlZakhXNS9oN3hXTG45SGgxdmVwRGt5ZjdkRTdNdFQ1TFI0ZTd5WXBIcmtoT1VwRWZzc0JMcTJwUGhBcW9TV0tVa2s3RURxa21LNlJyQ0V6cURqaE5EV05FK1hTTXZrSlJEV2xaVG1DVzBsMFBIUUdSWlk1dDFMODNrVDBZM2wyU0l0azVKQVdIbDJkQ09CbStmUHUzZm81LzN2NjFSTUNPOUp4MkVFWVloYjBybU5RTVgvdm03Z3FPRUpMY1hUR3czQ0F1Uk5leWFQV3dqUjhQUnFLUTFQREEvZHB2K29uOVNob3g1MldGbngwS1k4b25IYXlySnptODdpNWg5eEd3L3Rma2V2MGpHc1FpenFlelVLamsxMmhCTUtKNGtiQ3FHUFZOWHVkeXlyU2hvdkd3NUNneHNSSUN4RjZhUm1TamxCbkhSemc3R3g4ZktxRXViSTJyYWhRWWRSMVlnRElSUU83SnZReUQ1MmhvSVF4MG14YTBPRHRXMklvem4xbGUyaUlSZHp3V2V3ZWR5Wnpld2lkdWVPR3Fsc24xTXZjblFwdVZ3TEdHMy9JUjFoSUt4Q2plbElEWjhsZHFXejI1aldBc25sZEVuSzBaeHJvMTlUR1ZiMmZmSVpFc0lPODlFSUVEdktNUHJ6bUJPUWNLUStycm95ZTZOZ1JSeHFSNFU4RUFrejBDTDZ1U0dPbTZLUUNkV2p2alJpU1AxQlBhbENSUzVpUVlpRUl2eHVCTUpFV2d6U29IQURjVk11TjdJdXFxVGV5VVBxMjJxRmltRnR4RHlCQkpFd055dDZUTTg4YmxGSGFvLzZ0V1dodXVPTTRTQUs0RUk0UW1GSEErU0V5V2xwNEVRb0oxM2NZR3pNdTd5c3pFSUJPbTJyVm1IVU5xd0FJUWFiSVNOTVJzdG1kaE5XY0ZMc1NtKzB0akpIMU1kUnhPNU54MFdETWhDdGdENk9LZ1plbGpKcUpLYzlwbzhqdXNrUjlYTjBZMWxaM21XakxSOUpDTzFqUkRNZDBmcFlDMlZudmpCU0VGZzd3QkVOYzBSOUhGbGIweHZGMStUQkVwRjY4ZCtESFI2SU9XVnYyQkVDdHhvNDZoT0ZVQmQvQVBVNTdXSW9Fd0poSWkyQ2RweVpYMG05M0JaaWNrdE1qMUFTOWRDbHRlVUZBVU5VSUV5Z1JaQ3RpazV6U3hJOU11YlRCSDFHT2lIc2lMSjNPQ29TWmtJTGE5UHhpTjBFYnZoc0FvOHRkQWY5U2VlcGQzNmxHV0htdE5BTlR2NUpkMHo0UVl5ZW8vVUVKcXhLUnBnNUxaeDZidExQc09hRW1kTXl4WWRsYzhMTWFKbmlrRGxoY2xxbVBpUW5URXBMVUlaRXdrUmFnallrRWliUUVyd2hrVEFLQ0xRRWJVZ2t6SlFXYy8wUHN0SEhjZkVkUStVQUFBQUFTVVZPUks1Q1lJST0iKTsNCgliYWNrZ3JvdW5kLXNpemU6IDI2cHggMjZweDsNCgl9DQoubGVhZmxldC10b3VjaCAubGVhZmxldC1jb250cm9sLWxheWVycy10b2dnbGUgew0KCXdpZHRoOiA0NHB4Ow0KCWhlaWdodDogNDRweDsNCgl9DQoubGVhZmxldC1jb250cm9sLWxheWVycyAubGVhZmxldC1jb250cm9sLWxheWVycy1saXN0LA0KLmxlYWZsZXQtY29udHJvbC1sYXllcnMtZXhwYW5kZWQgLmxlYWZsZXQtY29udHJvbC1sYXllcnMtdG9nZ2xlIHsNCglkaXNwbGF5OiBub25lOw0KCX0NCi5sZWFmbGV0LWNvbnRyb2wtbGF5ZXJzLWV4cGFuZGVkIC5sZWFmbGV0LWNvbnRyb2wtbGF5ZXJzLWxpc3Qgew0KCWRpc3BsYXk6IGJsb2NrOw0KCXBvc2l0aW9uOiByZWxhdGl2ZTsNCgl9DQoubGVhZmxldC1jb250cm9sLWxheWVycy1leHBhbmRlZCB7DQoJcGFkZGluZzogNnB4IDEwcHggNnB4IDZweDsNCgljb2xvcjogIzMzMzsNCgliYWNrZ3JvdW5kOiAjZmZmOw0KCX0NCi5sZWFmbGV0LWNvbnRyb2wtbGF5ZXJzLXNjcm9sbGJhciB7DQoJb3ZlcmZsb3cteTogc2Nyb2xsOw0KCW92ZXJmbG93LXg6IGhpZGRlbjsNCglwYWRkaW5nLXJpZ2h0OiA1cHg7DQoJfQ0KLmxlYWZsZXQtY29udHJvbC1sYXllcnMtc2VsZWN0b3Igew0KCW1hcmdpbi10b3A6IDJweDsNCglwb3NpdGlvbjogcmVsYXRpdmU7DQoJdG9wOiAxcHg7DQoJfQ0KLmxlYWZsZXQtY29udHJvbC1sYXllcnMgbGFiZWwgew0KCWRpc3BsYXk6IGJsb2NrOw0KCWZvbnQtc2l6ZTogMTNweDsNCglmb250LXNpemU6IDEuMDgzMzNlbTsNCgl9DQoubGVhZmxldC1jb250cm9sLWxheWVycy1zZXBhcmF0b3Igew0KCWhlaWdodDogMDsNCglib3JkZXItdG9wOiAxcHggc29saWQgI2RkZDsNCgltYXJnaW46IDVweCAtMTBweCA1cHggLTZweDsNCgl9DQoNCi8qIERlZmF1bHQgaWNvbiBVUkxzICovDQoubGVhZmxldC1kZWZhdWx0LWljb24tcGF0aCB7IC8qIHVzZWQgb25seSBpbiBwYXRoLWd1ZXNzaW5nIGhldXJpc3RpYywgc2VlIEwuSWNvbi5EZWZhdWx0ICovDQoJYmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJrQUFBQXBDQVlBQUFEQWs0TE9BQUFGZ1VsRVFWUjRBYTFYQTVCaldSVE4yb1cxN2QzWWFadHIyOTYySFV6YkROcGpzelcyNG1SdDI4cDQ3djd6cS9iWFp0cnAvbFduWHIzMzdqM25QQ2U4NU5jeXBnU0ZkdWdDcFc1WW9EQU1SYUlNcVJpNmFLcTVFM1lxRFFPM3FBd2pWV3JEOE5jcS9SQnB5a2Q4b1pVYi9rYUp1dG93OHIxYVA5SUkwV21MS0xJc0p5djF3L2txdzlDaDJNWWRCKysxMk9ueGVlL1FNd3ZmNC9Eay9MZnAvaTRueFRYdE9vUTRwVzVBajd3cGljaTFBOWVyZEFOMk9INjR4OE9TUDlqM0Z0M2I3YVdrVGcvRm05MXNpVHJhMGY5b241c1FyOUlOZWpINkNVVVVwYXZqRk5xMUIrT2FkaHhtbmZhOFJmRW1OOFZOQXNRaFBxRjU1eEhrTXp6M2pTbUNoV1U2ZjcvWFpLTkgrOStoQkxPSFlvenVLUVB4eU1QVUtrclgvSzB1V25mRmFKR1MxUVBSdFpzT1B0cjNOc1cwdXloNk5OQ09rVTNZeitiWGJUM0k4RzN4RTVFWExYdENYYmJxd0NPOXpQUVlQUlRaNXZJRFhEN1UrdzdyRkRFb1VVZjdpYkhJUjR5NmJMVlBYcno4SlZaRXFsMTN0cnh3dWUvdURpdmQzZmtXUmJTNi9JQTJiSUQ0dWswVXBGMU44cUxsYkJsWHM0RWU3SExUZlYxajU0QVB2T0RuU2ZPV0JxdEtWdmpnTEt6RjVZZEVrNWV3UmtHbEswaTMzRW9mZmZjN0hUNTZqRDcvNlUrcUgzQ3g3U0JMTm50SDVZSVB2T0RueWZJWFpZUlZEUHFnSHRMczVBQkhEM1l6THVlc3BiN3Q3OUZZMzREak13clZyY1R1d2xUNTVZTVB2T0JuUnJKNFZYVGRObll1ZzV1Y0hMQmpFcHQzMDcwMUEzVHMrSEVhNzN1NmRUM0ZOV3dmbFk4NmVNSFBrK1l1K2k2cHpVcFJyVzdTTkRnNUpIUjRLYXBtTTVXdjJFOFRmY2IxSG9xcUhNSFUrdVdERDd6ZzU0bXo1LzJCU25pemk5VDFEZzRRUVhMVG9HTkNrYjZ0YjFOVStRQWxHcjErK2VBRHJ6aG4vdThRMllaaFFWbFo1K0NBT3RxZmJobWFVQ1MxZXpORlZtMmltRGJQbVBuZzV3bXorZ3doK29IRGNlMGVVdFE2T0dESXlSMHVVaFVzb08zdmZEbW1nT2V6SDBtWk41OXg3TUJpKytXREwxZy9lRWlVM2F2bGlkTzY3MWJrTGZ3Ync1WFYyUDhQem8weWR5NHQyLzBldTMzeFlTT01PRDhoVGY0Q3JCdEdNU29YZlBMY2hYK0owcnVTZVB3M0xaZUswanVQSmJZenJoa0gwaW83QjNrMTY0aGlHdmF3aE9LTUxrclFMeVZwWmc4ckhGVzdFMnVIT0w4ODhJQlBsTloxRlB6c3RTSk02OTRmV3I2UndwdmNKSzYwKzBIQ0lMVEJ6WkxGTmR0QXpKYW9oemU2MFQ4cUJ6eWg1WnVPZzVlN3V3UXBwb2ZFbWYyKytEWXZteVNxR0J1S2FpY0YxYmxRamh1SGR2Q0lNdnA4d2hUVGZaekk3UmxkcHd0U3pMK0YxK3drZFoyVEJPVzJnSUY4OFBCVHpEL2dwZVJFQU1FYnhuSmNhSkhOSHJwemppMGdRQ1M2aGRrRWVZdDlERi8ycVBjRUM4Uk0yOEh3bXIzc2ROeWh0MDBieUF1dDJrM2d1ZldOdGd0T0VPRkdVd2NYV05EYmROYnBnQkd4RXZLa09Rc3hpdkp4MzNpb3cwVnc1UzZTVlRycFZxMTF5c0EyUnA3Z1RmUGZrdGM2emh0WEJCQythZFJMc2hmNnNHMlJmSFBaNUVBYzRzVlo4M3lDTjAwRmsvNGtnZ3U0MFpUdklFbTVnMjRxdFU0S2pCcngvQlRUSDhpZlZBU0FHN2dLcm5XeEpEY1U3eDhYNkVjY3pobTNvNllpY3ZzTFhXZmgzQ2gxVzBrOHgwblhGKzBmRnhndDRwaHo4UXZ5cGl3Q0NGS01xWENucVhFeGpxMTBiZUgrVVVBNytuRzZtZEcvUHUwZjNMZ0ZjR3JsMnMwa05OanBtb0o5bzRCMjlDTU84ZE1UNFE1b3g4dWl0RjZmcXNySk9yOHFud05iUnp2NmhTbkc1d1ArNjRDN2g5bHAzMGhLTnRLZFdqdGRrYnVQQTE5bko3VHozelIvaWJnQVJiaGI0QWxoYXZjQmVibVRIY0ZsMmZ2WUVuVzBveDl4TXhLQlM4YnRKK0tpRWJxOXpBNFJ0aFFYRGhQYTBUOVRFZTY5Z1d1cHdjNnVCVXBocXVYZ2YrL0ZySWp3ZUhRUzQvcGR1TWU1RVJVTUhVZDl4djhaUjk4Q3hrUzRGMm4zRVVyVVoxMEVZTnc3QldtOXgxR2lQc3NpM0dnaUdSREtXUllaZlhsT04rZGZOYk0rR2dJd1lkd0FBQUFBU1VWT1JLNUNZSUk9Iik7DQoJfQ0KDQoNCi8qIGF0dHJpYnV0aW9uIGFuZCBzY2FsZSBjb250cm9scyAqLw0KDQoubGVhZmxldC1jb250YWluZXIgLmxlYWZsZXQtY29udHJvbC1hdHRyaWJ1dGlvbiB7DQoJYmFja2dyb3VuZDogI2ZmZjsNCgliYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7DQoJbWFyZ2luOiAwOw0KCX0NCi5sZWFmbGV0LWNvbnRyb2wtYXR0cmlidXRpb24sDQoubGVhZmxldC1jb250cm9sLXNjYWxlLWxpbmUgew0KCXBhZGRpbmc6IDAgNXB4Ow0KCWNvbG9yOiAjMzMzOw0KCWxpbmUtaGVpZ2h0OiAxLjQ7DQoJfQ0KLmxlYWZsZXQtY29udHJvbC1hdHRyaWJ1dGlvbiBhIHsNCgl0ZXh0LWRlY29yYXRpb246IG5vbmU7DQoJfQ0KLmxlYWZsZXQtY29udHJvbC1hdHRyaWJ1dGlvbiBhOmhvdmVyLA0KLmxlYWZsZXQtY29udHJvbC1hdHRyaWJ1dGlvbiBhOmZvY3VzIHsNCgl0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsNCgl9DQoubGVhZmxldC1hdHRyaWJ1dGlvbi1mbGFnIHsNCglkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsNCgl2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmUgIWltcG9ydGFudDsNCgl3aWR0aDogMWVtOw0KCWhlaWdodDogMC42NjY5ZW07DQoJfQ0KLmxlYWZsZXQtbGVmdCAubGVhZmxldC1jb250cm9sLXNjYWxlIHsNCgltYXJnaW4tbGVmdDogNXB4Ow0KCX0NCi5sZWFmbGV0LWJvdHRvbSAubGVhZmxldC1jb250cm9sLXNjYWxlIHsNCgltYXJnaW4tYm90dG9tOiA1cHg7DQoJfQ0KLmxlYWZsZXQtY29udHJvbC1zY2FsZS1saW5lIHsNCglib3JkZXI6IDJweCBzb2xpZCAjNzc3Ow0KCWJvcmRlci10b3A6IG5vbmU7DQoJbGluZS1oZWlnaHQ6IDEuMTsNCglwYWRkaW5nOiAycHggNXB4IDFweDsNCgl3aGl0ZS1zcGFjZTogbm93cmFwOw0KCS1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDsNCgkgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7DQoJYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpOw0KCXRleHQtc2hhZG93OiAxcHggMXB4ICNmZmY7DQoJfQ0KLmxlYWZsZXQtY29udHJvbC1zY2FsZS1saW5lOm5vdCg6Zmlyc3QtY2hpbGQpIHsNCglib3JkZXItdG9wOiAycHggc29saWQgIzc3NzsNCglib3JkZXItYm90dG9tOiBub25lOw0KCW1hcmdpbi10b3A6IC0ycHg7DQoJfQ0KLmxlYWZsZXQtY29udHJvbC1zY2FsZS1saW5lOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCkgew0KCWJvcmRlci1ib3R0b206IDJweCBzb2xpZCAjNzc3Ow0KCX0NCg0KLmxlYWZsZXQtdG91Y2ggLmxlYWZsZXQtY29udHJvbC1hdHRyaWJ1dGlvbiwNCi5sZWFmbGV0LXRvdWNoIC5sZWFmbGV0LWNvbnRyb2wtbGF5ZXJzLA0KLmxlYWZsZXQtdG91Y2ggLmxlYWZsZXQtYmFyIHsNCglib3gtc2hhZG93OiBub25lOw0KCX0NCi5sZWFmbGV0LXRvdWNoIC5sZWFmbGV0LWNvbnRyb2wtbGF5ZXJzLA0KLmxlYWZsZXQtdG91Y2ggLmxlYWZsZXQtYmFyIHsNCglib3JkZXI6IDJweCBzb2xpZCByZ2JhKDAsMCwwLDAuMik7DQoJYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDsNCgl9DQoNCg0KLyogcG9wdXAgKi8NCg0KLmxlYWZsZXQtcG9wdXAgew0KCXBvc2l0aW9uOiBhYnNvbHV0ZTsNCgl0ZXh0LWFsaWduOiBjZW50ZXI7DQoJbWFyZ2luLWJvdHRvbTogMjBweDsNCgl9DQoubGVhZmxldC1wb3B1cC1jb250ZW50LXdyYXBwZXIgew0KCXBhZGRpbmc6IDFweDsNCgl0ZXh0LWFsaWduOiBsZWZ0Ow0KCWJvcmRlci1yYWRpdXM6IDEycHg7DQoJfQ0KLmxlYWZsZXQtcG9wdXAtY29udGVudCB7DQoJbWFyZ2luOiAxM3B4IDI0cHggMTNweCAyMHB4Ow0KCWxpbmUtaGVpZ2h0OiAxLjM7DQoJZm9udC1zaXplOiAxM3B4Ow0KCWZvbnQtc2l6ZTogMS4wODMzM2VtOw0KCW1pbi1oZWlnaHQ6IDFweDsNCgl9DQoubGVhZmxldC1wb3B1cC1jb250ZW50IHAgew0KCW1hcmdpbjogMTdweCAwOw0KCW1hcmdpbjogMS4zZW0gMDsNCgl9DQoubGVhZmxldC1wb3B1cC10aXAtY29udGFpbmVyIHsNCgl3aWR0aDogNDBweDsNCgloZWlnaHQ6IDIwcHg7DQoJcG9zaXRpb246IGFic29sdXRlOw0KCWxlZnQ6IDUwJTsNCgltYXJnaW4tdG9wOiAtMXB4Ow0KCW1hcmdpbi1sZWZ0OiAtMjBweDsNCglvdmVyZmxvdzogaGlkZGVuOw0KCXBvaW50ZXItZXZlbnRzOiBub25lOw0KCX0NCi5sZWFmbGV0LXBvcHVwLXRpcCB7DQoJd2lkdGg6IDE3cHg7DQoJaGVpZ2h0OiAxN3B4Ow0KCXBhZGRpbmc6IDFweDsNCg0KCW1hcmdpbjogLTEwcHggYXV0byAwOw0KCXBvaW50ZXItZXZlbnRzOiBhdXRvOw0KDQoJLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7DQoJICAgLW1vei10cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7DQoJICAgIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7DQoJICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7DQoJfQ0KLmxlYWZsZXQtcG9wdXAtY29udGVudC13cmFwcGVyLA0KLmxlYWZsZXQtcG9wdXAtdGlwIHsNCgliYWNrZ3JvdW5kOiB3aGl0ZTsNCgljb2xvcjogIzMzMzsNCglib3gtc2hhZG93OiAwIDNweCAxNHB4IHJnYmEoMCwwLDAsMC40KTsNCgl9DQoubGVhZmxldC1jb250YWluZXIgYS5sZWFmbGV0LXBvcHVwLWNsb3NlLWJ1dHRvbiB7DQoJcG9zaXRpb246IGFic29sdXRlOw0KCXRvcDogMDsNCglyaWdodDogMDsNCglib3JkZXI6IG5vbmU7DQoJdGV4dC1hbGlnbjogY2VudGVyOw0KCXdpZHRoOiAyNHB4Ow0KCWhlaWdodDogMjRweDsNCglmb250OiAxNnB4LzI0cHggVGFob21hLCBWZXJkYW5hLCBzYW5zLXNlcmlmOw0KCWNvbG9yOiAjNzU3NTc1Ow0KCXRleHQtZGVjb3JhdGlvbjogbm9uZTsNCgliYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsNCgl9DQoubGVhZmxldC1jb250YWluZXIgYS5sZWFmbGV0LXBvcHVwLWNsb3NlLWJ1dHRvbjpob3ZlciwNCi5sZWFmbGV0LWNvbnRhaW5lciBhLmxlYWZsZXQtcG9wdXAtY2xvc2UtYnV0dG9uOmZvY3VzIHsNCgljb2xvcjogIzU4NTg1ODsNCgl9DQoubGVhZmxldC1wb3B1cC1zY3JvbGxlZCB7DQoJb3ZlcmZsb3c6IGF1dG87DQoJfQ0KDQoubGVhZmxldC1vbGRpZSAubGVhZmxldC1wb3B1cC1jb250ZW50LXdyYXBwZXIgew0KCS1tcy16b29tOiAxOw0KCX0NCi5sZWFmbGV0LW9sZGllIC5sZWFmbGV0LXBvcHVwLXRpcCB7DQoJd2lkdGg6IDI0cHg7DQoJbWFyZ2luOiAwIGF1dG87DQoNCgktbXMtZmlsdGVyOiAicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0Lk1hdHJpeChNMTE9MC43MDcxMDY3OCwgTTEyPTAuNzA3MTA2NzgsIE0yMT0tMC43MDcxMDY3OCwgTTIyPTAuNzA3MTA2NzgpIjsNCglmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5NYXRyaXgoTTExPTAuNzA3MTA2NzgsIE0xMj0wLjcwNzEwNjc4LCBNMjE9LTAuNzA3MTA2NzgsIE0yMj0wLjcwNzEwNjc4KTsNCgl9DQoNCi5sZWFmbGV0LW9sZGllIC5sZWFmbGV0LWNvbnRyb2wtem9vbSwNCi5sZWFmbGV0LW9sZGllIC5sZWFmbGV0LWNvbnRyb2wtbGF5ZXJzLA0KLmxlYWZsZXQtb2xkaWUgLmxlYWZsZXQtcG9wdXAtY29udGVudC13cmFwcGVyLA0KLmxlYWZsZXQtb2xkaWUgLmxlYWZsZXQtcG9wdXAtdGlwIHsNCglib3JkZXI6IDFweCBzb2xpZCAjOTk5Ow0KCX0NCg0KDQovKiBkaXYgaWNvbiAqLw0KDQoubGVhZmxldC1kaXYtaWNvbiB7DQoJYmFja2dyb3VuZDogI2ZmZjsNCglib3JkZXI6IDFweCBzb2xpZCAjNjY2Ow0KCX0NCg0KDQovKiBUb29sdGlwICovDQovKiBCYXNlIHN0eWxlcyBmb3IgdGhlIGVsZW1lbnQgdGhhdCBoYXMgYSB0b29sdGlwICovDQoubGVhZmxldC10b29sdGlwIHsNCglwb3NpdGlvbjogYWJzb2x1dGU7DQoJcGFkZGluZzogNnB4Ow0KCWJhY2tncm91bmQtY29sb3I6ICNmZmY7DQoJYm9yZGVyOiAxcHggc29saWQgI2ZmZjsNCglib3JkZXItcmFkaXVzOiAzcHg7DQoJY29sb3I6ICMyMjI7DQoJd2hpdGUtc3BhY2U6IG5vd3JhcDsNCgktd2Via2l0LXVzZXItc2VsZWN0OiBub25lOw0KCS1tb3otdXNlci1zZWxlY3Q6IG5vbmU7DQoJLW1zLXVzZXItc2VsZWN0OiBub25lOw0KCXVzZXItc2VsZWN0OiBub25lOw0KCXBvaW50ZXItZXZlbnRzOiBub25lOw0KCWJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2JhKDAsMCwwLDAuNCk7DQoJfQ0KLmxlYWZsZXQtdG9vbHRpcC5sZWFmbGV0LWludGVyYWN0aXZlIHsNCgljdXJzb3I6IHBvaW50ZXI7DQoJcG9pbnRlci1ldmVudHM6IGF1dG87DQoJfQ0KLmxlYWZsZXQtdG9vbHRpcC10b3A6YmVmb3JlLA0KLmxlYWZsZXQtdG9vbHRpcC1ib3R0b206YmVmb3JlLA0KLmxlYWZsZXQtdG9vbHRpcC1sZWZ0OmJlZm9yZSwNCi5sZWFmbGV0LXRvb2x0aXAtcmlnaHQ6YmVmb3JlIHsNCglwb3NpdGlvbjogYWJzb2x1dGU7DQoJcG9pbnRlci1ldmVudHM6IG5vbmU7DQoJYm9yZGVyOiA2cHggc29saWQgdHJhbnNwYXJlbnQ7DQoJYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7DQoJY29udGVudDogIiI7DQoJfQ0KDQovKiBEaXJlY3Rpb25zICovDQoNCi5sZWFmbGV0LXRvb2x0aXAtYm90dG9tIHsNCgltYXJnaW4tdG9wOiA2cHg7DQp9DQoubGVhZmxldC10b29sdGlwLXRvcCB7DQoJbWFyZ2luLXRvcDogLTZweDsNCn0NCi5sZWFmbGV0LXRvb2x0aXAtYm90dG9tOmJlZm9yZSwNCi5sZWFmbGV0LXRvb2x0aXAtdG9wOmJlZm9yZSB7DQoJbGVmdDogNTAlOw0KCW1hcmdpbi1sZWZ0OiAtNnB4Ow0KCX0NCi5sZWFmbGV0LXRvb2x0aXAtdG9wOmJlZm9yZSB7DQoJYm90dG9tOiAwOw0KCW1hcmdpbi1ib3R0b206IC0xMnB4Ow0KCWJvcmRlci10b3AtY29sb3I6ICNmZmY7DQoJfQ0KLmxlYWZsZXQtdG9vbHRpcC1ib3R0b206YmVmb3JlIHsNCgl0b3A6IDA7DQoJbWFyZ2luLXRvcDogLTEycHg7DQoJbWFyZ2luLWxlZnQ6IC02cHg7DQoJYm9yZGVyLWJvdHRvbS1jb2xvcjogI2ZmZjsNCgl9DQoubGVhZmxldC10b29sdGlwLWxlZnQgew0KCW1hcmdpbi1sZWZ0OiAtNnB4Ow0KfQ0KLmxlYWZsZXQtdG9vbHRpcC1yaWdodCB7DQoJbWFyZ2luLWxlZnQ6IDZweDsNCn0NCi5sZWFmbGV0LXRvb2x0aXAtbGVmdDpiZWZvcmUsDQoubGVhZmxldC10b29sdGlwLXJpZ2h0OmJlZm9yZSB7DQoJdG9wOiA1MCU7DQoJbWFyZ2luLXRvcDogLTZweDsNCgl9DQoubGVhZmxldC10b29sdGlwLWxlZnQ6YmVmb3JlIHsNCglyaWdodDogMDsNCgltYXJnaW4tcmlnaHQ6IC0xMnB4Ow0KCWJvcmRlci1sZWZ0LWNvbG9yOiAjZmZmOw0KCX0NCi5sZWFmbGV0LXRvb2x0aXAtcmlnaHQ6YmVmb3JlIHsNCglsZWZ0OiAwOw0KCW1hcmdpbi1sZWZ0OiAtMTJweDsNCglib3JkZXItcmlnaHQtY29sb3I6ICNmZmY7DQoJfQ0KDQovKiBQcmludGluZyAqLw0KDQpAbWVkaWEgcHJpbnQgew0KCS8qIFByZXZlbnQgcHJpbnRlcnMgZnJvbSByZW1vdmluZyBiYWNrZ3JvdW5kLWltYWdlcyBvZiBjb250cm9scy4gKi8NCgkubGVhZmxldC1jb250cm9sIHsNCgkJLXdlYmtpdC1wcmludC1jb2xvci1hZGp1c3Q6IGV4YWN0Ow0KCQlwcmludC1jb2xvci1hZGp1c3Q6IGV4YWN0Ow0KCQl9DQoJfQ0KCjwvc3R5bGU+CjxzdHlsZT4KOnJvb3QgewogIC0tYmc6IzBlMGUwZTsgLS1zdXJmYWNlOiMxNjE2MTY7IC0tYm9yZGVyOiMyYTJhMmE7CiAgLS10ZXh0OiNkNGQyY2U7IC0tdGV4dC1tdXRlZDojN2E3ODc2OwogIC0tZ2VsaXg6IzRmYjNjMDsgLS1hdmlhY29uOiNmMGI0Mjk7IC0tdm9sZ2FkbmVwcjojZTA1ZjVmOyAtLW11bHRpOiNiMDc4ZDQ7CiAgLS1hbGdlcmlhOiNmN2M5NDg7Cn0KKiwqOjpiZWZvcmUsKjo6YWZ0ZXJ7Ym94LXNpemluZzpib3JkZXItYm94O21hcmdpbjowO3BhZGRpbmc6MDt9Cmh0bWwsYm9keXtoZWlnaHQ6MTAwJTtiYWNrZ3JvdW5kOnZhcigtLWJnKTtmb250LWZhbWlseTonSGVsdmV0aWNhIE5ldWUnLEFyaWFsLHNhbnMtc2VyaWY7Y29sb3I6dmFyKC0tdGV4dCk7b3ZlcmZsb3c6aGlkZGVuO30KI21hcHtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDowO30KI2hlYWRlcnsKICBwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MTZweDtsZWZ0OjUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKTt6LWluZGV4OjkwMDsKICBiYWNrZ3JvdW5kOnJnYmEoMTQsMTQsMTQsMC44OCk7YmFja2Ryb3AtZmlsdGVyOmJsdXIoMTBweCk7CiAgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JvcmRlci1yYWRpdXM6OHB4OwogIHBhZGRpbmc6MTJweCAyMHB4O3RleHQtYWxpZ246Y2VudGVyO21heC13aWR0aDo2MDBweDt3aWR0aDo5MiU7Cn0KI2hlYWRlciBoMXtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo3MDA7bGV0dGVyLXNwYWNpbmc6LjAyZW07Y29sb3I6I2ZmZjtsaW5lLWhlaWdodDoxLjM7fQojaGVhZGVyIHB7Zm9udC1zaXplOjExcHg7Y29sb3I6dmFyKC0tdGV4dC1tdXRlZCk7bWFyZ2luLXRvcDozcHg7bGV0dGVyLXNwYWNpbmc6LjAyZW07fQojcGFuZWx7CiAgcG9zaXRpb246YWJzb2x1dGU7dG9wOjEyMHB4O2xlZnQ6MTZweDt6LWluZGV4OjkwMDsKICBiYWNrZ3JvdW5kOnJnYmEoMTQsMTQsMTQsMC44OCk7YmFja2Ryb3AtZmlsdGVyOmJsdXIoMTBweCk7CiAgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JvcmRlci1yYWRpdXM6OHB4OwogIHBhZGRpbmc6MTRweDttaW4td2lkdGg6MjEwcHg7bWF4LXdpZHRoOjIyNHB4Owp9CiNwYW5lbCBoM3tmb250LXNpemU6MTBweDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7bGV0dGVyLXNwYWNpbmc6LjFlbTtjb2xvcjp2YXIoLS10ZXh0LW11dGVkKTttYXJnaW4tYm90dG9tOjEwcHg7fQouYWlybGluZS1yb3d7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6OHB4O21hcmdpbi1ib3R0b206OHB4O2N1cnNvcjpwb2ludGVyO30KLmFpcmxpbmUtcm93IGxhYmVse2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZToxMnB4O2ZsZXg6MTt9Ci5zd2F0Y2h7d2lkdGg6MjhweDtoZWlnaHQ6M3B4O2JvcmRlci1yYWRpdXM6MnB4O2ZsZXgtc2hyaW5rOjA7fQouYWlybGluZS1yb3cgaW5wdXR7Y3Vyc29yOnBvaW50ZXI7YWNjZW50LWNvbG9yOnZhcigtLXRleHQpO30KLmRpdmlkZXJ7Ym9yZGVyOm5vbmU7Ym9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tYm9yZGVyKTttYXJnaW46MTBweCAwO30KLmZpbHRlci1yb3d7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6OHB4O21hcmdpbi1ib3R0b206N3B4O2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZToxMnB4O30KLmZpbHRlci1yb3cgaW5wdXR7Y3Vyc29yOnBvaW50ZXI7fQouZmlsdGVyLXJvdyBsYWJlbHtjdXJzb3I6cG9pbnRlcjtmbGV4OjE7fQoucGlsbC1ncm91cHtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjVweDttYXJnaW4tdG9wOjRweDt9Ci5waWxsewogIGZvbnQtc2l6ZToxMXB4O3BhZGRpbmc6M3B4IDlweDtib3JkZXItcmFkaXVzOjIwcHg7Y3Vyc29yOnBvaW50ZXI7CiAgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7CiAgY29sb3I6dmFyKC0tdGV4dC1tdXRlZCk7dHJhbnNpdGlvbjphbGwgLjE1czsKfQoucGlsbDpob3Zlcntib3JkZXItY29sb3I6IzU1NTtjb2xvcjp2YXIoLS10ZXh0KTt9Ci5waWxsLmFjdGl2ZXtiYWNrZ3JvdW5kOnZhcigtLXRleHQpO2NvbG9yOiMwZTBlMGU7Ym9yZGVyLWNvbG9yOnZhcigtLXRleHQpO2ZvbnQtd2VpZ2h0OjYwMDt9Ci5zeW0tY29uZmlybWVke2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjIycHg7aGVpZ2h0OjJweDtiYWNrZ3JvdW5kOiNmZmY7dmVydGljYWwtYWxpZ246bWlkZGxlO21hcmdpbi1yaWdodDo0cHg7fQouc3ltLWFtYmlndW91c3tkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDoyMnB4O2hlaWdodDowO2JvcmRlci10b3A6MnB4IGRhc2hlZCAjODg4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTttYXJnaW4tcmlnaHQ6NHB4O30KLnN5bS1ub3Rle2ZvbnQtc2l6ZToxMHB4O2NvbG9yOnZhcigtLXRleHQtbXV0ZWQpO21hcmdpbi10b3A6NnB4O2xpbmUtaGVpZ2h0OjEuNDt9CiNzdGF0c3sKICBwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206MTZweDtsZWZ0OjE2cHg7ei1pbmRleDo5MDA7CiAgYmFja2dyb3VuZDpyZ2JhKDE0LDE0LDE0LDAuODgpO2JhY2tkcm9wLWZpbHRlcjpibHVyKDEwcHgpOwogIGJvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTtib3JkZXItcmFkaXVzOjhweDsKICBwYWRkaW5nOjEwcHggMTRweDtmb250LXNpemU6MTFweDtjb2xvcjp2YXIoLS10ZXh0LW11dGVkKTsKfQojc3RhdHMgc3Bhbntjb2xvcjp2YXIoLS10ZXh0KTtmb250LXdlaWdodDo2MDA7fQojZm9jdXMtYmFubmVyewogIHBvc2l0aW9uOmFic29sdXRlO2JvdHRvbToxNnB4O2xlZnQ6NTAlO3RyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpO3otaW5kZXg6MTAwMDsKICBiYWNrZ3JvdW5kOnJnYmEoMjQ3LDIwMSw3MiwwLjE1KTtiYWNrZHJvcC1maWx0ZXI6Ymx1cigxMHB4KTsKICBib3JkZXI6MXB4IHNvbGlkIHJnYmEoMjQ3LDIwMSw3MiwwLjQpO2JvcmRlci1yYWRpdXM6OHB4OwogIHBhZGRpbmc6OXB4IDE2cHg7Zm9udC1zaXplOjEyLjVweDtjb2xvcjojZjdjOTQ4OwogIGRpc3BsYXk6bm9uZTthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEycHg7d2hpdGUtc3BhY2U6bm93cmFwOwp9CiNmb2N1cy1iYW5uZXIgYnV0dG9uewogIGJhY2tncm91bmQ6bm9uZTtib3JkZXI6bm9uZTtjb2xvcjojZjdjOTQ4O2ZvbnQtc2l6ZToxNnB4O2N1cnNvcjpwb2ludGVyOwogIHBhZGRpbmc6MCAycHg7bGluZS1oZWlnaHQ6MTtvcGFjaXR5Oi44O3RyYW5zaXRpb246b3BhY2l0eSAuMTVzOwp9CiNmb2N1cy1iYW5uZXIgYnV0dG9uOmhvdmVye29wYWNpdHk6MTt9CiN0b29sdGlwewogIHBvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtiYWNrZ3JvdW5kOnJnYmEoMTQsMTQsMTQsMC45NSk7CiAgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JvcmRlci1yYWRpdXM6NnB4OwogIHBhZGRpbmc6MTBweCAxMnB4O2ZvbnQtc2l6ZToxMS41cHg7bGluZS1oZWlnaHQ6MS42OwogIHBvaW50ZXItZXZlbnRzOm5vbmU7bWF4LXdpZHRoOjI2MHB4O2Rpc3BsYXk6bm9uZTsKICBib3gtc2hhZG93OjAgNHB4IDIwcHggcmdiYSgwLDAsMCwuNSk7Cn0KI3Rvb2x0aXAgLnR0LXJvdXRle2ZvbnQtd2VpZ2h0OjcwMDtmb250LXNpemU6MTNweDtjb2xvcjojZmZmO21hcmdpbi1ib3R0b206NHB4O30KI3Rvb2x0aXAgLnR0LWFpcmxpbmV7Zm9udC1zaXplOjExcHg7bWFyZ2luLWJvdHRvbToycHg7fQojdG9vbHRpcCAudHQtbWV0YXtjb2xvcjp2YXIoLS10ZXh0LW11dGVkKTtmb250LXNpemU6MTAuNXB4O30KLmxlYWZsZXQtY29udGFpbmVye2JhY2tncm91bmQ6IzBlMGUwZTt9Ci5sZWFmbGV0LWNvbnRyb2wtem9vbXtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcikhaW1wb3J0YW50O2JhY2tncm91bmQ6dmFyKC0tc3VyZmFjZSkhaW1wb3J0YW50O30KLmxlYWZsZXQtY29udHJvbC16b29tIGF7Y29sb3I6dmFyKC0tdGV4dCkhaW1wb3J0YW50O2JhY2tncm91bmQ6dmFyKC0tc3VyZmFjZSkhaW1wb3J0YW50O30KLmxlYWZsZXQtY29udHJvbC1hdHRyaWJ1dGlvbntiYWNrZ3JvdW5kOnJnYmEoMTQsMTQsMTQsLjcpIWltcG9ydGFudDtjb2xvcjp2YXIoLS10ZXh0LW11dGVkKSFpbXBvcnRhbnQ7Zm9udC1zaXplOjlweCFpbXBvcnRhbnQ7fQoubGVhZmxldC1jb250cm9sLWF0dHJpYnV0aW9uIGF7Y29sb3I6dmFyKC0tdGV4dC1tdXRlZCkhaW1wb3J0YW50O30KPC9zdHlsZT4KPC9oZWFkPgo8Ym9keT4KPGRpdiBpZD0ibWFwIj48L2Rpdj4KPGRpdiBpZD0iaGVhZGVyIj4KICA8aDE+UlVTU0lBJ1MgU0hBRE9XIEFJUkxJTkVTOiBGTElHSFQgQ0lSQ1VJVFMgVEhST1VHSCBBTEdFUklBPC9oMT4KICA8cD5HZWxpeCBBaXJsaW5lcywgQXZpYWNvbiBaaXRvdHJhbnMgJmFtcDsgVm9sZ2EtRG5lcHIgQWlybGluZXMgJm1pZGRvdDsgTWFyIDIwMjUg4oCTIEFwciAyMDI2ICZtaWRkb3Q7IExpbmVzIGluZGljYXRlIGNvbm5lY3Rpb25zIGJldHdlZW4gY2l0aWVzLCBub3QgYWN0dWFsIGZsaWdodCBwYXRoczwvcD4KPC9kaXY+CjxkaXYgaWQ9InBhbmVsIj4KICA8aDM+QWlybGluZXM8L2gzPgogIDxkaXYgY2xhc3M9ImFpcmxpbmUtcm93Ij4KICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9ImNiLWdlbGl4IiBjaGVja2VkPgogICAgPGRpdiBjbGFzcz0ic3dhdGNoIiBzdHlsZT0iYmFja2dyb3VuZDp2YXIoLS1nZWxpeCkiPjwvZGl2PgogICAgPGxhYmVsIGZvcj0iY2ItZ2VsaXgiPkdlbGl4IEFpcmxpbmVzPC9sYWJlbD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJhaXJsaW5lLXJvdyI+CiAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJjYi1hdmlhY29uIiBjaGVja2VkPgogICAgPGRpdiBjbGFzcz0ic3dhdGNoIiBzdHlsZT0iYmFja2dyb3VuZDp2YXIoLS1hdmlhY29uKSI+PC9kaXY+CiAgICA8bGFiZWwgZm9yPSJjYi1hdmlhY29uIj5BdmlhY29uIFppdG90cmFuczwvbGFiZWw+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iYWlybGluZS1yb3ciPgogICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iY2ItdmQiIGNoZWNrZWQ+CiAgICA8ZGl2IGNsYXNzPSJzd2F0Y2giIHN0eWxlPSJiYWNrZ3JvdW5kOnZhcigtLXZvbGdhZG5lcHIpIj48L2Rpdj4KICAgIDxsYWJlbCBmb3I9ImNiLXZkIj5Wb2xnYS1EbmVwciBBaXJsaW5lczwvbGFiZWw+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iYWlybGluZS1yb3ciIHN0eWxlPSJjdXJzb3I6ZGVmYXVsdCI+CiAgICA8ZGl2IHN0eWxlPSJ3aWR0aDoxOHB4Ij48L2Rpdj4KICAgIDxkaXYgY2xhc3M9InN3YXRjaCIgc3R5bGU9ImJhY2tncm91bmQ6I2IwNzhkNCI+PC9kaXY+CiAgICA8bGFiZWwgc3R5bGU9ImN1cnNvcjpkZWZhdWx0O2NvbG9yOnZhcigtLXRleHQtbXV0ZWQpIj5NdWx0aXBsZSBhaXJsaW5lczwvbGFiZWw+CiAgPC9kaXY+CiAgPGhyIGNsYXNzPSJkaXZpZGVyIj4KICA8aDM+RmlsdGVyczwvaDM+CiAgPGRpdiBjbGFzcz0iZmlsdGVyLXJvdyI+CiAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJjYi1hbGdlcmlhLW9ubHkiPgogICAgPGxhYmVsIGZvcj0iY2ItYWxnZXJpYS1vbmx5Ij5BbGdlcmlhIHJvdXRlcyBvbmx5PC9sYWJlbD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJmaWx0ZXItcm93Ij4KICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9ImNiLWhpZGUtYW1iIj4KICAgIDxsYWJlbCBmb3I9ImNiLWhpZGUtYW1iIj5IaWRlIHVuY2VydGFpbiByb3V0ZXM8L2xhYmVsPgogIDwvZGl2PgogIDxociBjbGFzcz0iZGl2aWRlciI+CiAgPGgzPk1pbi4gZmxpZ2h0czwvaDM+CiAgPGRpdiBjbGFzcz0icGlsbC1ncm91cCI+CiAgICA8YnV0dG9uIGNsYXNzPSJwaWxsIGFjdGl2ZSIgZGF0YS1taW49IjEiPjErPC9idXR0b24+CiAgICA8YnV0dG9uIGNsYXNzPSJwaWxsIiBkYXRhLW1pbj0iMiI+Mis8L2J1dHRvbj4KICAgIDxidXR0b24gY2xhc3M9InBpbGwiIGRhdGEtbWluPSIzIj4zKzwvYnV0dG9uPgogICAgPGJ1dHRvbiBjbGFzcz0icGlsbCIgZGF0YS1taW49IjUiPjUrPC9idXR0b24+CiAgICA8YnV0dG9uIGNsYXNzPSJwaWxsIiBkYXRhLW1pbj0iMTAiPjEwKzwvYnV0dG9uPgogIDwvZGl2PgogIDxociBjbGFzcz0iZGl2aWRlciI+CiAgPGgzPktleTwvaDM+CiAgPGRpdiBzdHlsZT0iZm9udC1zaXplOjExcHg7bWFyZ2luLWJvdHRvbTo1cHgiPjxzcGFuIGNsYXNzPSJzeW0tY29uZmlybWVkIj48L3NwYW4+IENvbmZpcm1lZDwvZGl2PgogIDxkaXYgc3R5bGU9ImZvbnQtc2l6ZToxMXB4O21hcmdpbi1ib3R0b206NXB4Ij48c3BhbiBjbGFzcz0ic3ltLWFtYmlndW91cyI+PC9zcGFuPiBVbmNlcnRhaW4gLyBpbmZlcnJlZDwvZGl2PgogIDxkaXYgc3R5bGU9ImZvbnQtc2l6ZToxMXB4O21hcmdpbi1ib3R0b206NXB4Ij4KICAgIDxzdmcgd2lkdGg9IjEwIiBoZWlnaHQ9IjEwIiB2aWV3Qm94PSIwIDAgMTAgMTAiPjxjaXJjbGUgY3g9IjUiIGN5PSI1IiByPSI1IiBmaWxsPSIjZjdjOTQ4Ii8+PC9zdmc+CiAgICAmbmJzcDtBbGdlcmlhbiBsb2NhdGlvbgogIDwvZGl2PgogIDxwIGNsYXNzPSJzeW0tbm90ZSI+SG92ZXIgcm91dGVzIHRvIGlzb2xhdGUuIENsaWNrIGEgY2l0eSB0byBmb2N1cy48L3A+CjwvZGl2Pgo8ZGl2IGlkPSJzdGF0cyI+CiAgPHNwYW4gaWQ9InN0YXQtcm91dGVzIj7igJQ8L3NwYW4+IHJvdXRlcyAmbWlkZG90OyBBbGdlcmlhLXJlbGF0ZWQgZmxpZ2h0cyB0cmFja2VkICZtaWRkb3Q7IE1hciAyMDI14oCTQXByIDIwMjYKPC9kaXY+CjxkaXYgaWQ9ImZvY3VzLWJhbm5lciI+CiAgPHNwYW4gaWQ9ImZvY3VzLWxhYmVsIj48L3NwYW4+CiAgPGJ1dHRvbiBpZD0iZm9jdXMtY2xlYXIiIHRpdGxlPSJDbGVhciBmb2N1cyI+JiN4MjcxNTs8L2J1dHRvbj4KPC9kaXY+CjxkaXYgaWQ9InRvb2x0aXAiPjwvZGl2PgoKPHNjcmlwdD4KLyogQHByZXNlcnZlCiAqIExlYWZsZXQgMS45LjQsIGEgSlMgbGlicmFyeSBmb3IgaW50ZXJhY3RpdmUgbWFwcy4gaHR0cHM6Ly9sZWFmbGV0anMuY29tCiAqIChjKSAyMDEwLTIwMjMgVmxhZGltaXIgQWdhZm9ua2luLCAoYykgMjAxMC0yMDExIENsb3VkTWFkZQogKi8KIWZ1bmN0aW9uKHQsZSl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZT9lKGV4cG9ydHMpOiJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsiZXhwb3J0cyJdLGUpOmUoKHQ9InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWxUaGlzP2dsb2JhbFRoaXM6dHx8c2VsZikubGVhZmxldD17fSl9KHRoaXMsZnVuY3Rpb24odCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGwodCl7Zm9yKHZhciBlLGksbj0xLG89YXJndW1lbnRzLmxlbmd0aDtuPG87bisrKWZvcihlIGluIGk9YXJndW1lbnRzW25dKXRbZV09aVtlXTtyZXR1cm4gdH12YXIgUj1PYmplY3QuY3JlYXRlfHxmdW5jdGlvbih0KXtyZXR1cm4gTi5wcm90b3R5cGU9dCxuZXcgTn07ZnVuY3Rpb24gTigpe31mdW5jdGlvbiBhKHQsZSl7dmFyIGksbj1BcnJheS5wcm90b3R5cGUuc2xpY2U7cmV0dXJuIHQuYmluZD90LmJpbmQuYXBwbHkodCxuLmNhbGwoYXJndW1lbnRzLDEpKTooaT1uLmNhbGwoYXJndW1lbnRzLDIpLGZ1bmN0aW9uKCl7cmV0dXJuIHQuYXBwbHkoZSxpLmxlbmd0aD9pLmNvbmNhdChuLmNhbGwoYXJndW1lbnRzKSk6YXJndW1lbnRzKX0pfXZhciBEPTA7ZnVuY3Rpb24gaCh0KXtyZXR1cm4iX2xlYWZsZXRfaWQiaW4gdHx8KHQuX2xlYWZsZXRfaWQ9KytEKSx0Ll9sZWFmbGV0X2lkfWZ1bmN0aW9uIGoodCxlLGkpe3ZhciBuLG8scz1mdW5jdGlvbigpe249ITEsbyYmKHIuYXBwbHkoaSxvKSxvPSExKX0scj1mdW5jdGlvbigpe24/bz1hcmd1bWVudHM6KHQuYXBwbHkoaSxhcmd1bWVudHMpLHNldFRpbWVvdXQocyxlKSxuPSEwKX07cmV0dXJuIHJ9ZnVuY3Rpb24gSCh0LGUsaSl7dmFyIG49ZVsxXSxlPWVbMF0sbz1uLWU7cmV0dXJuIHQ9PT1uJiZpP3Q6KCh0LWUpJW8rbyklbytlfWZ1bmN0aW9uIHUoKXtyZXR1cm4hMX1mdW5jdGlvbiBpKHQsZSl7cmV0dXJuITE9PT1lP3Q6KGU9TWF0aC5wb3coMTAsdm9pZCAwPT09ZT82OmUpLE1hdGgucm91bmQodCplKS9lKX1mdW5jdGlvbiBXKHQpe3JldHVybiB0LnRyaW0/dC50cmltKCk6dC5yZXBsYWNlKC9eXHMrfFxzKyQvZywiIil9ZnVuY3Rpb24gRih0KXtyZXR1cm4gVyh0KS5zcGxpdCgvXHMrLyl9ZnVuY3Rpb24gYyh0LGUpe2Zvcih2YXIgaSBpbiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCwib3B0aW9ucyIpfHwodC5vcHRpb25zPXQub3B0aW9ucz9SKHQub3B0aW9ucyk6e30pLGUpdC5vcHRpb25zW2ldPWVbaV07cmV0dXJuIHQub3B0aW9uc31mdW5jdGlvbiBVKHQsZSxpKXt2YXIgbixvPVtdO2ZvcihuIGluIHQpby5wdXNoKGVuY29kZVVSSUNvbXBvbmVudChpP24udG9VcHBlckNhc2UoKTpuKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KHRbbl0pKTtyZXR1cm4oZSYmLTEhPT1lLmluZGV4T2YoIj8iKT8iJiI6Ij8iKStvLmpvaW4oIiYiKX12YXIgVj0vXHsgKihbXHdfIC1dKykgKlx9L2c7ZnVuY3Rpb24gcSh0LGkpe3JldHVybiB0LnJlcGxhY2UoVixmdW5jdGlvbih0LGUpe2U9aVtlXTtpZih2b2lkIDA9PT1lKXRocm93IG5ldyBFcnJvcigiTm8gdmFsdWUgcHJvdmlkZWQgZm9yIHZhcmlhYmxlICIrdCk7cmV0dXJuIGU9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZShpKTplfSl9dmFyIGQ9QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgQXJyYXldIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX07ZnVuY3Rpb24gRyh0LGUpe2Zvcih2YXIgaT0wO2k8dC5sZW5ndGg7aSsrKWlmKHRbaV09PT1lKXJldHVybiBpO3JldHVybi0xfXZhciBLPSJkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhBUUFCQUFEL0FDd0FBQUFBQVFBQkFBQUNBRHM9IjtmdW5jdGlvbiBZKHQpe3JldHVybiB3aW5kb3dbIndlYmtpdCIrdF18fHdpbmRvd1sibW96Iit0XXx8d2luZG93WyJtcyIrdF19dmFyIFg9MDtmdW5jdGlvbiBKKHQpe3ZhciBlPStuZXcgRGF0ZSxpPU1hdGgubWF4KDAsMTYtKGUtWCkpO3JldHVybiBYPWUraSx3aW5kb3cuc2V0VGltZW91dCh0LGkpfXZhciAkPXdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWV8fFkoIlJlcXVlc3RBbmltYXRpb25GcmFtZSIpfHxKLFE9d2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lfHxZKCJDYW5jZWxBbmltYXRpb25GcmFtZSIpfHxZKCJDYW5jZWxSZXF1ZXN0QW5pbWF0aW9uRnJhbWUiKXx8ZnVuY3Rpb24odCl7d2luZG93LmNsZWFyVGltZW91dCh0KX07ZnVuY3Rpb24geCh0LGUsaSl7aWYoIWl8fCQhPT1KKXJldHVybiAkLmNhbGwod2luZG93LGEodCxlKSk7dC5jYWxsKGUpfWZ1bmN0aW9uIHIodCl7dCYmUS5jYWxsKHdpbmRvdyx0KX12YXIgdHQ9e19fcHJvdG9fXzpudWxsLGV4dGVuZDpsLGNyZWF0ZTpSLGJpbmQ6YSxnZXQgbGFzdElkKCl7cmV0dXJuIER9LHN0YW1wOmgsdGhyb3R0bGU6aix3cmFwTnVtOkgsZmFsc2VGbjp1LGZvcm1hdE51bTppLHRyaW06VyxzcGxpdFdvcmRzOkYsc2V0T3B0aW9uczpjLGdldFBhcmFtU3RyaW5nOlUsdGVtcGxhdGU6cSxpc0FycmF5OmQsaW5kZXhPZjpHLGVtcHR5SW1hZ2VVcmw6SyxyZXF1ZXN0Rm46JCxjYW5jZWxGbjpRLHJlcXVlc3RBbmltRnJhbWU6eCxjYW5jZWxBbmltRnJhbWU6cn07ZnVuY3Rpb24gZXQoKXt9ZXQuZXh0ZW5kPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtjKHRoaXMpLHRoaXMuaW5pdGlhbGl6ZSYmdGhpcy5pbml0aWFsaXplLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLmNhbGxJbml0SG9va3MoKX12YXIgaSxuPWUuX19zdXBlcl9fPXRoaXMucHJvdG90eXBlLG89UihuKTtmb3IoaSBpbihvLmNvbnN0cnVjdG9yPWUpLnByb3RvdHlwZT1vLHRoaXMpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMsaSkmJiJwcm90b3R5cGUiIT09aSYmIl9fc3VwZXJfXyIhPT1pJiYoZVtpXT10aGlzW2ldKTtpZih0LnN0YXRpY3MmJmwoZSx0LnN0YXRpY3MpLHQuaW5jbHVkZXMpe3ZhciBzPXQuaW5jbHVkZXM7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBMJiZMJiZMLk1peGluKXtzPWQocyk/czpbc107Zm9yKHZhciByPTA7cjxzLmxlbmd0aDtyKyspc1tyXT09PUwuTWl4aW4uRXZlbnRzJiZjb25zb2xlLndhcm4oIkRlcHJlY2F0ZWQgaW5jbHVkZSBvZiBMLk1peGluLkV2ZW50czogdGhpcyBwcm9wZXJ0eSB3aWxsIGJlIHJlbW92ZWQgaW4gZnV0dXJlIHJlbGVhc2VzLCBwbGVhc2UgaW5oZXJpdCBmcm9tIEwuRXZlbnRlZCBpbnN0ZWFkLiIsKG5ldyBFcnJvcikuc3RhY2spfWwuYXBwbHkobnVsbCxbb10uY29uY2F0KHQuaW5jbHVkZXMpKX1yZXR1cm4gbChvLHQpLGRlbGV0ZSBvLnN0YXRpY3MsZGVsZXRlIG8uaW5jbHVkZXMsby5vcHRpb25zJiYoby5vcHRpb25zPW4ub3B0aW9ucz9SKG4ub3B0aW9ucyk6e30sbChvLm9wdGlvbnMsdC5vcHRpb25zKSksby5faW5pdEhvb2tzPVtdLG8uY2FsbEluaXRIb29rcz1mdW5jdGlvbigpe2lmKCF0aGlzLl9pbml0SG9va3NDYWxsZWQpe24uY2FsbEluaXRIb29rcyYmbi5jYWxsSW5pdEhvb2tzLmNhbGwodGhpcyksdGhpcy5faW5pdEhvb2tzQ2FsbGVkPSEwO2Zvcih2YXIgdD0wLGU9by5faW5pdEhvb2tzLmxlbmd0aDt0PGU7dCsrKW8uX2luaXRIb29rc1t0XS5jYWxsKHRoaXMpfX0sZX0sZXQuaW5jbHVkZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLnByb3RvdHlwZS5vcHRpb25zO3JldHVybiBsKHRoaXMucHJvdG90eXBlLHQpLHQub3B0aW9ucyYmKHRoaXMucHJvdG90eXBlLm9wdGlvbnM9ZSx0aGlzLm1lcmdlT3B0aW9ucyh0Lm9wdGlvbnMpKSx0aGlzfSxldC5tZXJnZU9wdGlvbnM9ZnVuY3Rpb24odCl7cmV0dXJuIGwodGhpcy5wcm90b3R5cGUub3B0aW9ucyx0KSx0aGlzfSxldC5hZGRJbml0SG9vaz1mdW5jdGlvbih0KXt2YXIgZT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSksaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmZ1bmN0aW9uKCl7dGhpc1t0XS5hcHBseSh0aGlzLGUpfTtyZXR1cm4gdGhpcy5wcm90b3R5cGUuX2luaXRIb29rcz10aGlzLnByb3RvdHlwZS5faW5pdEhvb2tzfHxbXSx0aGlzLnByb3RvdHlwZS5faW5pdEhvb2tzLnB1c2goaSksdGhpc307dmFyIGU9e29uOmZ1bmN0aW9uKHQsZSxpKXtpZigib2JqZWN0Ij09dHlwZW9mIHQpZm9yKHZhciBuIGluIHQpdGhpcy5fb24obix0W25dLGUpO2Vsc2UgZm9yKHZhciBvPTAscz0odD1GKHQpKS5sZW5ndGg7bzxzO28rKyl0aGlzLl9vbih0W29dLGUsaSk7cmV0dXJuIHRoaXN9LG9mZjpmdW5jdGlvbih0LGUsaSl7aWYoYXJndW1lbnRzLmxlbmd0aClpZigib2JqZWN0Ij09dHlwZW9mIHQpZm9yKHZhciBuIGluIHQpdGhpcy5fb2ZmKG4sdFtuXSxlKTtlbHNle3Q9Rih0KTtmb3IodmFyIG89MT09PWFyZ3VtZW50cy5sZW5ndGgscz0wLHI9dC5sZW5ndGg7czxyO3MrKylvP3RoaXMuX29mZih0W3NdKTp0aGlzLl9vZmYodFtzXSxlLGkpfWVsc2UgZGVsZXRlIHRoaXMuX2V2ZW50cztyZXR1cm4gdGhpc30sX29uOmZ1bmN0aW9uKHQsZSxpLG4peyJmdW5jdGlvbiIhPXR5cGVvZiBlP2NvbnNvbGUud2Fybigid3JvbmcgbGlzdGVuZXIgdHlwZTogIit0eXBlb2YgZSk6ITE9PT10aGlzLl9saXN0ZW5zKHQsZSxpKSYmKGU9e2ZuOmUsY3R4Omk9aT09PXRoaXM/dm9pZCAwOml9LG4mJihlLm9uY2U9ITApLHRoaXMuX2V2ZW50cz10aGlzLl9ldmVudHN8fHt9LHRoaXMuX2V2ZW50c1t0XT10aGlzLl9ldmVudHNbdF18fFtdLHRoaXMuX2V2ZW50c1t0XS5wdXNoKGUpKX0sX29mZjpmdW5jdGlvbih0LGUsaSl7dmFyIG4sbyxzO2lmKHRoaXMuX2V2ZW50cyYmKG49dGhpcy5fZXZlbnRzW3RdKSlpZigxPT09YXJndW1lbnRzLmxlbmd0aCl7aWYodGhpcy5fZmlyaW5nQ291bnQpZm9yKG89MCxzPW4ubGVuZ3RoO288cztvKyspbltvXS5mbj11O2RlbGV0ZSB0aGlzLl9ldmVudHNbdF19ZWxzZSJmdW5jdGlvbiIhPXR5cGVvZiBlP2NvbnNvbGUud2Fybigid3JvbmcgbGlzdGVuZXIgdHlwZTogIit0eXBlb2YgZSk6ITEhPT0oZT10aGlzLl9saXN0ZW5zKHQsZSxpKSkmJihpPW5bZV0sdGhpcy5fZmlyaW5nQ291bnQmJihpLmZuPXUsdGhpcy5fZXZlbnRzW3RdPW49bi5zbGljZSgpKSxuLnNwbGljZShlLDEpKX0sZmlyZTpmdW5jdGlvbih0LGUsaSl7aWYodGhpcy5saXN0ZW5zKHQsaSkpe3ZhciBuPWwoe30sZSx7dHlwZTp0LHRhcmdldDp0aGlzLHNvdXJjZVRhcmdldDplJiZlLnNvdXJjZVRhcmdldHx8dGhpc30pO2lmKHRoaXMuX2V2ZW50cyl7dmFyIG89dGhpcy5fZXZlbnRzW3RdO2lmKG8pe3RoaXMuX2ZpcmluZ0NvdW50PXRoaXMuX2ZpcmluZ0NvdW50KzF8fDE7Zm9yKHZhciBzPTAscj1vLmxlbmd0aDtzPHI7cysrKXt2YXIgYT1vW3NdLGg9YS5mbjthLm9uY2UmJnRoaXMub2ZmKHQsaCxhLmN0eCksaC5jYWxsKGEuY3R4fHx0aGlzLG4pfXRoaXMuX2ZpcmluZ0NvdW50LS19fWkmJnRoaXMuX3Byb3BhZ2F0ZUV2ZW50KG4pfXJldHVybiB0aGlzfSxsaXN0ZW5zOmZ1bmN0aW9uKHQsZSxpLG4peyJzdHJpbmciIT10eXBlb2YgdCYmY29uc29sZS53YXJuKCcic3RyaW5nIiB0eXBlIGFyZ3VtZW50IGV4cGVjdGVkJyk7dmFyIG89ZSxzPSgiZnVuY3Rpb24iIT10eXBlb2YgZSYmKG49ISFlLGk9bz12b2lkIDApLHRoaXMuX2V2ZW50cyYmdGhpcy5fZXZlbnRzW3RdKTtpZihzJiZzLmxlbmd0aCYmITEhPT10aGlzLl9saXN0ZW5zKHQsbyxpKSlyZXR1cm4hMDtpZihuKWZvcih2YXIgciBpbiB0aGlzLl9ldmVudFBhcmVudHMpaWYodGhpcy5fZXZlbnRQYXJlbnRzW3JdLmxpc3RlbnModCxlLGksbikpcmV0dXJuITA7cmV0dXJuITF9LF9saXN0ZW5zOmZ1bmN0aW9uKHQsZSxpKXtpZih0aGlzLl9ldmVudHMpe3ZhciBuPXRoaXMuX2V2ZW50c1t0XXx8W107aWYoIWUpcmV0dXJuISFuLmxlbmd0aDtpPT09dGhpcyYmKGk9dm9pZCAwKTtmb3IodmFyIG89MCxzPW4ubGVuZ3RoO288cztvKyspaWYobltvXS5mbj09PWUmJm5bb10uY3R4PT09aSlyZXR1cm4gb31yZXR1cm4hMX0sb25jZTpmdW5jdGlvbih0LGUsaSl7aWYoIm9iamVjdCI9PXR5cGVvZiB0KWZvcih2YXIgbiBpbiB0KXRoaXMuX29uKG4sdFtuXSxlLCEwKTtlbHNlIGZvcih2YXIgbz0wLHM9KHQ9Rih0KSkubGVuZ3RoO288cztvKyspdGhpcy5fb24odFtvXSxlLGksITApO3JldHVybiB0aGlzfSxhZGRFdmVudFBhcmVudDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZXZlbnRQYXJlbnRzPXRoaXMuX2V2ZW50UGFyZW50c3x8e30sdGhpcy5fZXZlbnRQYXJlbnRzW2godCldPXQsdGhpc30scmVtb3ZlRXZlbnRQYXJlbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2V2ZW50UGFyZW50cyYmZGVsZXRlIHRoaXMuX2V2ZW50UGFyZW50c1toKHQpXSx0aGlzfSxfcHJvcGFnYXRlRXZlbnQ6ZnVuY3Rpb24odCl7Zm9yKHZhciBlIGluIHRoaXMuX2V2ZW50UGFyZW50cyl0aGlzLl9ldmVudFBhcmVudHNbZV0uZmlyZSh0LnR5cGUsbCh7bGF5ZXI6dC50YXJnZXQscHJvcGFnYXRlZEZyb206dC50YXJnZXR9LHQpLCEwKX19LGl0PShlLmFkZEV2ZW50TGlzdGVuZXI9ZS5vbixlLnJlbW92ZUV2ZW50TGlzdGVuZXI9ZS5jbGVhckFsbEV2ZW50TGlzdGVuZXJzPWUub2ZmLGUuYWRkT25lVGltZUV2ZW50TGlzdGVuZXI9ZS5vbmNlLGUuZmlyZUV2ZW50PWUuZmlyZSxlLmhhc0V2ZW50TGlzdGVuZXJzPWUubGlzdGVucyxldC5leHRlbmQoZSkpO2Z1bmN0aW9uIHAodCxlLGkpe3RoaXMueD1pP01hdGgucm91bmQodCk6dCx0aGlzLnk9aT9NYXRoLnJvdW5kKGUpOmV9dmFyIG50PU1hdGgudHJ1bmN8fGZ1bmN0aW9uKHQpe3JldHVybiAwPHQ/TWF0aC5mbG9vcih0KTpNYXRoLmNlaWwodCl9O2Z1bmN0aW9uIG0odCxlLGkpe3JldHVybiB0IGluc3RhbmNlb2YgcD90OmQodCk/bmV3IHAodFswXSx0WzFdKTpudWxsPT10P3Q6Im9iamVjdCI9PXR5cGVvZiB0JiYieCJpbiB0JiYieSJpbiB0P25ldyBwKHQueCx0LnkpOm5ldyBwKHQsZSxpKX1mdW5jdGlvbiBmKHQsZSl7aWYodClmb3IodmFyIGk9ZT9bdCxlXTp0LG49MCxvPWkubGVuZ3RoO248bztuKyspdGhpcy5leHRlbmQoaVtuXSl9ZnVuY3Rpb24gXyh0LGUpe3JldHVybiF0fHx0IGluc3RhbmNlb2YgZj90Om5ldyBmKHQsZSl9ZnVuY3Rpb24gcyh0LGUpe2lmKHQpZm9yKHZhciBpPWU/W3QsZV06dCxuPTAsbz1pLmxlbmd0aDtuPG87bisrKXRoaXMuZXh0ZW5kKGlbbl0pfWZ1bmN0aW9uIGcodCxlKXtyZXR1cm4gdCBpbnN0YW5jZW9mIHM/dDpuZXcgcyh0LGUpfWZ1bmN0aW9uIHYodCxlLGkpe2lmKGlzTmFOKHQpfHxpc05hTihlKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgTGF0TG5nIG9iamVjdDogKCIrdCsiLCAiK2UrIikiKTt0aGlzLmxhdD0rdCx0aGlzLmxuZz0rZSx2b2lkIDAhPT1pJiYodGhpcy5hbHQ9K2kpfWZ1bmN0aW9uIHcodCxlLGkpe3JldHVybiB0IGluc3RhbmNlb2Ygdj90OmQodCkmJiJvYmplY3QiIT10eXBlb2YgdFswXT8zPT09dC5sZW5ndGg/bmV3IHYodFswXSx0WzFdLHRbMl0pOjI9PT10Lmxlbmd0aD9uZXcgdih0WzBdLHRbMV0pOm51bGw6bnVsbD09dD90OiJvYmplY3QiPT10eXBlb2YgdCYmImxhdCJpbiB0P25ldyB2KHQubGF0LCJsbmciaW4gdD90LmxuZzp0Lmxvbix0LmFsdCk6dm9pZCAwPT09ZT9udWxsOm5ldyB2KHQsZSxpKX1wLnByb3RvdHlwZT17Y2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHAodGhpcy54LHRoaXMueSl9LGFkZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbG9uZSgpLl9hZGQobSh0KSl9LF9hZGQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueCs9dC54LHRoaXMueSs9dC55LHRoaXN9LHN1YnRyYWN0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuX3N1YnRyYWN0KG0odCkpfSxfc3VidHJhY3Q6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueC09dC54LHRoaXMueS09dC55LHRoaXN9LGRpdmlkZUJ5OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuX2RpdmlkZUJ5KHQpfSxfZGl2aWRlQnk6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueC89dCx0aGlzLnkvPXQsdGhpc30sbXVsdGlwbHlCeTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbG9uZSgpLl9tdWx0aXBseUJ5KHQpfSxfbXVsdGlwbHlCeTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy54Kj10LHRoaXMueSo9dCx0aGlzfSxzY2FsZUJ5OmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgcCh0aGlzLngqdC54LHRoaXMueSp0LnkpfSx1bnNjYWxlQnk6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBwKHRoaXMueC90LngsdGhpcy55L3QueSl9LHJvdW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5fcm91bmQoKX0sX3JvdW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMueD1NYXRoLnJvdW5kKHRoaXMueCksdGhpcy55PU1hdGgucm91bmQodGhpcy55KSx0aGlzfSxmbG9vcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuX2Zsb29yKCl9LF9mbG9vcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLng9TWF0aC5mbG9vcih0aGlzLngpLHRoaXMueT1NYXRoLmZsb29yKHRoaXMueSksdGhpc30sY2VpbDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuX2NlaWwoKX0sX2NlaWw6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy54PU1hdGguY2VpbCh0aGlzLngpLHRoaXMueT1NYXRoLmNlaWwodGhpcy55KSx0aGlzfSx0cnVuYzpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuX3RydW5jKCl9LF90cnVuYzpmdW5jdGlvbigpe3JldHVybiB0aGlzLng9bnQodGhpcy54KSx0aGlzLnk9bnQodGhpcy55KSx0aGlzfSxkaXN0YW5jZVRvOmZ1bmN0aW9uKHQpe3ZhciBlPSh0PW0odCkpLngtdGhpcy54LHQ9dC55LXRoaXMueTtyZXR1cm4gTWF0aC5zcXJ0KGUqZSt0KnQpfSxlcXVhbHM6ZnVuY3Rpb24odCl7cmV0dXJuKHQ9bSh0KSkueD09PXRoaXMueCYmdC55PT09dGhpcy55fSxjb250YWluczpmdW5jdGlvbih0KXtyZXR1cm4gdD1tKHQpLE1hdGguYWJzKHQueCk8PU1hdGguYWJzKHRoaXMueCkmJk1hdGguYWJzKHQueSk8PU1hdGguYWJzKHRoaXMueSl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIlBvaW50KCIraSh0aGlzLngpKyIsICIraSh0aGlzLnkpKyIpIn19LGYucHJvdG90eXBlPXtleHRlbmQ6ZnVuY3Rpb24odCl7dmFyIGUsaTtpZih0KXtpZih0IGluc3RhbmNlb2YgcHx8Im51bWJlciI9PXR5cGVvZiB0WzBdfHwieCJpbiB0KWU9aT1tKHQpO2Vsc2UgaWYoZT0odD1fKHQpKS5taW4saT10Lm1heCwhZXx8IWkpcmV0dXJuIHRoaXM7dGhpcy5taW58fHRoaXMubWF4Pyh0aGlzLm1pbi54PU1hdGgubWluKGUueCx0aGlzLm1pbi54KSx0aGlzLm1heC54PU1hdGgubWF4KGkueCx0aGlzLm1heC54KSx0aGlzLm1pbi55PU1hdGgubWluKGUueSx0aGlzLm1pbi55KSx0aGlzLm1heC55PU1hdGgubWF4KGkueSx0aGlzLm1heC55KSk6KHRoaXMubWluPWUuY2xvbmUoKSx0aGlzLm1heD1pLmNsb25lKCkpfXJldHVybiB0aGlzfSxnZXRDZW50ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG0oKHRoaXMubWluLngrdGhpcy5tYXgueCkvMiwodGhpcy5taW4ueSt0aGlzLm1heC55KS8yLHQpfSxnZXRCb3R0b21MZWZ0OmZ1bmN0aW9uKCl7cmV0dXJuIG0odGhpcy5taW4ueCx0aGlzLm1heC55KX0sZ2V0VG9wUmlnaHQ6ZnVuY3Rpb24oKXtyZXR1cm4gbSh0aGlzLm1heC54LHRoaXMubWluLnkpfSxnZXRUb3BMZWZ0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWlufSxnZXRCb3R0b21SaWdodDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1heH0sZ2V0U2l6ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1heC5zdWJ0cmFjdCh0aGlzLm1pbil9LGNvbnRhaW5zOmZ1bmN0aW9uKHQpe3ZhciBlLGk7cmV0dXJuKHQ9KCJudW1iZXIiPT10eXBlb2YgdFswXXx8dCBpbnN0YW5jZW9mIHA/bTpfKSh0KSlpbnN0YW5jZW9mIGY/KGU9dC5taW4saT10Lm1heCk6ZT1pPXQsZS54Pj10aGlzLm1pbi54JiZpLng8PXRoaXMubWF4LngmJmUueT49dGhpcy5taW4ueSYmaS55PD10aGlzLm1heC55fSxpbnRlcnNlY3RzOmZ1bmN0aW9uKHQpe3Q9Xyh0KTt2YXIgZT10aGlzLm1pbixpPXRoaXMubWF4LG49dC5taW4sdD10Lm1heCxvPXQueD49ZS54JiZuLng8PWkueCx0PXQueT49ZS55JiZuLnk8PWkueTtyZXR1cm4gbyYmdH0sb3ZlcmxhcHM6ZnVuY3Rpb24odCl7dD1fKHQpO3ZhciBlPXRoaXMubWluLGk9dGhpcy5tYXgsbj10Lm1pbix0PXQubWF4LG89dC54PmUueCYmbi54PGkueCx0PXQueT5lLnkmJm4ueTxpLnk7cmV0dXJuIG8mJnR9LGlzVmFsaWQ6ZnVuY3Rpb24oKXtyZXR1cm4hKCF0aGlzLm1pbnx8IXRoaXMubWF4KX0scGFkOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMubWluLGk9dGhpcy5tYXgsbj1NYXRoLmFicyhlLngtaS54KSp0LHQ9TWF0aC5hYnMoZS55LWkueSkqdDtyZXR1cm4gXyhtKGUueC1uLGUueS10KSxtKGkueCtuLGkueSt0KSl9LGVxdWFsczpmdW5jdGlvbih0KXtyZXR1cm4hIXQmJih0PV8odCksdGhpcy5taW4uZXF1YWxzKHQuZ2V0VG9wTGVmdCgpKSYmdGhpcy5tYXguZXF1YWxzKHQuZ2V0Qm90dG9tUmlnaHQoKSkpfX0scy5wcm90b3R5cGU9e2V4dGVuZDpmdW5jdGlvbih0KXt2YXIgZSxpLG49dGhpcy5fc291dGhXZXN0LG89dGhpcy5fbm9ydGhFYXN0O2lmKHQgaW5zdGFuY2VvZiB2KWk9ZT10O2Vsc2V7aWYoISh0IGluc3RhbmNlb2YgcykpcmV0dXJuIHQ/dGhpcy5leHRlbmQodyh0KXx8Zyh0KSk6dGhpcztpZihlPXQuX3NvdXRoV2VzdCxpPXQuX25vcnRoRWFzdCwhZXx8IWkpcmV0dXJuIHRoaXN9cmV0dXJuIG58fG8/KG4ubGF0PU1hdGgubWluKGUubGF0LG4ubGF0KSxuLmxuZz1NYXRoLm1pbihlLmxuZyxuLmxuZyksby5sYXQ9TWF0aC5tYXgoaS5sYXQsby5sYXQpLG8ubG5nPU1hdGgubWF4KGkubG5nLG8ubG5nKSk6KHRoaXMuX3NvdXRoV2VzdD1uZXcgdihlLmxhdCxlLmxuZyksdGhpcy5fbm9ydGhFYXN0PW5ldyB2KGkubGF0LGkubG5nKSksdGhpc30scGFkOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3NvdXRoV2VzdCxpPXRoaXMuX25vcnRoRWFzdCxuPU1hdGguYWJzKGUubGF0LWkubGF0KSp0LHQ9TWF0aC5hYnMoZS5sbmctaS5sbmcpKnQ7cmV0dXJuIG5ldyBzKG5ldyB2KGUubGF0LW4sZS5sbmctdCksbmV3IHYoaS5sYXQrbixpLmxuZyt0KSl9LGdldENlbnRlcjpmdW5jdGlvbigpe3JldHVybiBuZXcgdigodGhpcy5fc291dGhXZXN0LmxhdCt0aGlzLl9ub3J0aEVhc3QubGF0KS8yLCh0aGlzLl9zb3V0aFdlc3QubG5nK3RoaXMuX25vcnRoRWFzdC5sbmcpLzIpfSxnZXRTb3V0aFdlc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc291dGhXZXN0fSxnZXROb3J0aEVhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbm9ydGhFYXN0fSxnZXROb3J0aFdlc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHYodGhpcy5nZXROb3J0aCgpLHRoaXMuZ2V0V2VzdCgpKX0sZ2V0U291dGhFYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyB2KHRoaXMuZ2V0U291dGgoKSx0aGlzLmdldEVhc3QoKSl9LGdldFdlc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc291dGhXZXN0LmxuZ30sZ2V0U291dGg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc291dGhXZXN0LmxhdH0sZ2V0RWFzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9ub3J0aEVhc3QubG5nfSxnZXROb3J0aDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9ub3J0aEVhc3QubGF0fSxjb250YWluczpmdW5jdGlvbih0KXt0PSgibnVtYmVyIj09dHlwZW9mIHRbMF18fHQgaW5zdGFuY2VvZiB2fHwibGF0ImluIHQ/dzpnKSh0KTt2YXIgZSxpLG49dGhpcy5fc291dGhXZXN0LG89dGhpcy5fbm9ydGhFYXN0O3JldHVybiB0IGluc3RhbmNlb2Ygcz8oZT10LmdldFNvdXRoV2VzdCgpLGk9dC5nZXROb3J0aEVhc3QoKSk6ZT1pPXQsZS5sYXQ+PW4ubGF0JiZpLmxhdDw9by5sYXQmJmUubG5nPj1uLmxuZyYmaS5sbmc8PW8ubG5nfSxpbnRlcnNlY3RzOmZ1bmN0aW9uKHQpe3Q9Zyh0KTt2YXIgZT10aGlzLl9zb3V0aFdlc3QsaT10aGlzLl9ub3J0aEVhc3Qsbj10LmdldFNvdXRoV2VzdCgpLHQ9dC5nZXROb3J0aEVhc3QoKSxvPXQubGF0Pj1lLmxhdCYmbi5sYXQ8PWkubGF0LHQ9dC5sbmc+PWUubG5nJiZuLmxuZzw9aS5sbmc7cmV0dXJuIG8mJnR9LG92ZXJsYXBzOmZ1bmN0aW9uKHQpe3Q9Zyh0KTt2YXIgZT10aGlzLl9zb3V0aFdlc3QsaT10aGlzLl9ub3J0aEVhc3Qsbj10LmdldFNvdXRoV2VzdCgpLHQ9dC5nZXROb3J0aEVhc3QoKSxvPXQubGF0PmUubGF0JiZuLmxhdDxpLmxhdCx0PXQubG5nPmUubG5nJiZuLmxuZzxpLmxuZztyZXR1cm4gbyYmdH0sdG9CQm94U3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuW3RoaXMuZ2V0V2VzdCgpLHRoaXMuZ2V0U291dGgoKSx0aGlzLmdldEVhc3QoKSx0aGlzLmdldE5vcnRoKCldLmpvaW4oIiwiKX0sZXF1YWxzOmZ1bmN0aW9uKHQsZSl7cmV0dXJuISF0JiYodD1nKHQpLHRoaXMuX3NvdXRoV2VzdC5lcXVhbHModC5nZXRTb3V0aFdlc3QoKSxlKSYmdGhpcy5fbm9ydGhFYXN0LmVxdWFscyh0LmdldE5vcnRoRWFzdCgpLGUpKX0saXNWYWxpZDpmdW5jdGlvbigpe3JldHVybiEoIXRoaXMuX3NvdXRoV2VzdHx8IXRoaXMuX25vcnRoRWFzdCl9fTt2YXIgb3Q9e2xhdExuZ1RvUG9pbnQ6ZnVuY3Rpb24odCxlKXt0PXRoaXMucHJvamVjdGlvbi5wcm9qZWN0KHQpLGU9dGhpcy5zY2FsZShlKTtyZXR1cm4gdGhpcy50cmFuc2Zvcm1hdGlvbi5fdHJhbnNmb3JtKHQsZSl9LHBvaW50VG9MYXRMbmc6ZnVuY3Rpb24odCxlKXtlPXRoaXMuc2NhbGUoZSksdD10aGlzLnRyYW5zZm9ybWF0aW9uLnVudHJhbnNmb3JtKHQsZSk7cmV0dXJuIHRoaXMucHJvamVjdGlvbi51bnByb2plY3QodCl9LHByb2plY3Q6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucHJvamVjdGlvbi5wcm9qZWN0KHQpfSx1bnByb2plY3Q6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucHJvamVjdGlvbi51bnByb2plY3QodCl9LHNjYWxlOmZ1bmN0aW9uKHQpe3JldHVybiAyNTYqTWF0aC5wb3coMix0KX0sem9vbTpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5sb2codC8yNTYpL01hdGguTE4yfSxnZXRQcm9qZWN0ZWRCb3VuZHM6ZnVuY3Rpb24odCl7dmFyIGU7cmV0dXJuIHRoaXMuaW5maW5pdGU/bnVsbDooZT10aGlzLnByb2plY3Rpb24uYm91bmRzLHQ9dGhpcy5zY2FsZSh0KSxuZXcgZih0aGlzLnRyYW5zZm9ybWF0aW9uLnRyYW5zZm9ybShlLm1pbix0KSx0aGlzLnRyYW5zZm9ybWF0aW9uLnRyYW5zZm9ybShlLm1heCx0KSkpfSxpbmZpbml0ZTohKHYucHJvdG90eXBlPXtlcXVhbHM6ZnVuY3Rpb24odCxlKXtyZXR1cm4hIXQmJih0PXcodCksTWF0aC5tYXgoTWF0aC5hYnModGhpcy5sYXQtdC5sYXQpLE1hdGguYWJzKHRoaXMubG5nLXQubG5nKSk8PSh2b2lkIDA9PT1lPzFlLTk6ZSkpfSx0b1N0cmluZzpmdW5jdGlvbih0KXtyZXR1cm4iTGF0TG5nKCIraSh0aGlzLmxhdCx0KSsiLCAiK2kodGhpcy5sbmcsdCkrIikifSxkaXN0YW5jZVRvOmZ1bmN0aW9uKHQpe3JldHVybiBzdC5kaXN0YW5jZSh0aGlzLHcodCkpfSx3cmFwOmZ1bmN0aW9uKCl7cmV0dXJuIHN0LndyYXBMYXRMbmcodGhpcyl9LHRvQm91bmRzOmZ1bmN0aW9uKHQpe3ZhciB0PTE4MCp0LzQwMDc1MDE3LGU9dC9NYXRoLmNvcyhNYXRoLlBJLzE4MCp0aGlzLmxhdCk7cmV0dXJuIGcoW3RoaXMubGF0LXQsdGhpcy5sbmctZV0sW3RoaXMubGF0K3QsdGhpcy5sbmcrZV0pfSxjbG9uZTpmdW5jdGlvbigpe3JldHVybiBuZXcgdih0aGlzLmxhdCx0aGlzLmxuZyx0aGlzLmFsdCl9fSksd3JhcExhdExuZzpmdW5jdGlvbih0KXt2YXIgZT10aGlzLndyYXBMbmc/SCh0LmxuZyx0aGlzLndyYXBMbmcsITApOnQubG5nO3JldHVybiBuZXcgdih0aGlzLndyYXBMYXQ/SCh0LmxhdCx0aGlzLndyYXBMYXQsITApOnQubGF0LGUsdC5hbHQpfSx3cmFwTGF0TG5nQm91bmRzOmZ1bmN0aW9uKHQpe3ZhciBlPXQuZ2V0Q2VudGVyKCksaT10aGlzLndyYXBMYXRMbmcoZSksbj1lLmxhdC1pLmxhdCxlPWUubG5nLWkubG5nO3JldHVybiAwPT1uJiYwPT1lP3Q6KGk9dC5nZXRTb3V0aFdlc3QoKSx0PXQuZ2V0Tm9ydGhFYXN0KCksbmV3IHMobmV3IHYoaS5sYXQtbixpLmxuZy1lKSxuZXcgdih0LmxhdC1uLHQubG5nLWUpKSl9fSxzdD1sKHt9LG90LHt3cmFwTG5nOlstMTgwLDE4MF0sUjo2MzcxZTMsZGlzdGFuY2U6ZnVuY3Rpb24odCxlKXt2YXIgaT1NYXRoLlBJLzE4MCxuPXQubGF0Kmksbz1lLmxhdCppLHM9TWF0aC5zaW4oKGUubGF0LXQubGF0KSppLzIpLGU9TWF0aC5zaW4oKGUubG5nLXQubG5nKSppLzIpLHQ9cypzK01hdGguY29zKG4pKk1hdGguY29zKG8pKmUqZSxpPTIqTWF0aC5hdGFuMihNYXRoLnNxcnQodCksTWF0aC5zcXJ0KDEtdCkpO3JldHVybiB0aGlzLlIqaX19KSxydD02Mzc4MTM3LHJ0PXtSOnJ0LE1BWF9MQVRJVFVERTo4NS4wNTExMjg3Nzk4LHByb2plY3Q6ZnVuY3Rpb24odCl7dmFyIGU9TWF0aC5QSS8xODAsaT10aGlzLk1BWF9MQVRJVFVERSxpPU1hdGgubWF4KE1hdGgubWluKGksdC5sYXQpLC1pKSxpPU1hdGguc2luKGkqZSk7cmV0dXJuIG5ldyBwKHRoaXMuUip0LmxuZyplLHRoaXMuUipNYXRoLmxvZygoMStpKS8oMS1pKSkvMil9LHVucHJvamVjdDpmdW5jdGlvbih0KXt2YXIgZT0xODAvTWF0aC5QSTtyZXR1cm4gbmV3IHYoKDIqTWF0aC5hdGFuKE1hdGguZXhwKHQueS90aGlzLlIpKS1NYXRoLlBJLzIpKmUsdC54KmUvdGhpcy5SKX0sYm91bmRzOm5ldyBmKFstKHJ0PXJ0Kk1hdGguUEkpLC1ydF0sW3J0LHJ0XSl9O2Z1bmN0aW9uIGF0KHQsZSxpLG4pe2QodCk/KHRoaXMuX2E9dFswXSx0aGlzLl9iPXRbMV0sdGhpcy5fYz10WzJdLHRoaXMuX2Q9dFszXSk6KHRoaXMuX2E9dCx0aGlzLl9iPWUsdGhpcy5fYz1pLHRoaXMuX2Q9bil9ZnVuY3Rpb24gaHQodCxlLGksbil7cmV0dXJuIG5ldyBhdCh0LGUsaSxuKX1hdC5wcm90b3R5cGU9e3RyYW5zZm9ybTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl90cmFuc2Zvcm0odC5jbG9uZSgpLGUpfSxfdHJhbnNmb3JtOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQueD0oZT1lfHwxKSoodGhpcy5fYSp0LngrdGhpcy5fYiksdC55PWUqKHRoaXMuX2MqdC55K3RoaXMuX2QpLHR9LHVudHJhbnNmb3JtOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyBwKCh0LngvKGU9ZXx8MSktdGhpcy5fYikvdGhpcy5fYSwodC55L2UtdGhpcy5fZCkvdGhpcy5fYyl9fTt2YXIgbHQ9bCh7fSxzdCx7Y29kZToiRVBTRzozODU3Iixwcm9qZWN0aW9uOnJ0LHRyYW5zZm9ybWF0aW9uOmh0KGx0PS41LyhNYXRoLlBJKnJ0LlIpLC41LC1sdCwuNSl9KSx1dD1sKHt9LGx0LHtjb2RlOiJFUFNHOjkwMDkxMyJ9KTtmdW5jdGlvbiBjdCh0KXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsdCl9ZnVuY3Rpb24gZHQodCxlKXtmb3IodmFyIGksbixvLHMscj0iIixhPTAsaD10Lmxlbmd0aDthPGg7YSsrKXtmb3IoaT0wLG49KG89dFthXSkubGVuZ3RoO2k8bjtpKyspcis9KGk/IkwiOiJNIikrKHM9b1tpXSkueCsiICIrcy55O3IrPWU/Yi5zdmc/InoiOiJ4IjoiIn1yZXR1cm4gcnx8Ik0wIDAifXZhciBfdD1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUscHQ9IkFjdGl2ZVhPYmplY3QiaW4gd2luZG93LG10PXB0JiYhZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcixuPSJtc0xhdW5jaFVyaSJpbiBuYXZpZ2F0b3ImJiEoImRvY3VtZW50TW9kZSJpbiBkb2N1bWVudCksZnQ9eSgid2Via2l0IiksZ3Q9eSgiYW5kcm9pZCIpLHZ0PXkoImFuZHJvaWQgMiIpfHx5KCJhbmRyb2lkIDMiKSx5dD1wYXJzZUludCgvV2ViS2l0XC8oWzAtOV0rKXwkLy5leGVjKG5hdmlnYXRvci51c2VyQWdlbnQpWzFdLDEwKSx5dD1ndCYmeSgiR29vZ2xlIikmJnl0PDUzNyYmISgiQXVkaW9Ob2RlImluIHdpbmRvdykseHQ9ISF3aW5kb3cub3BlcmEsd3Q9IW4mJnkoImNocm9tZSIpLGJ0PXkoImdlY2tvIikmJiFmdCYmIXh0JiYhcHQsUHQ9IXd0JiZ5KCJzYWZhcmkiKSxMdD15KCJwaGFudG9tIiksbz0iT1RyYW5zaXRpb24iaW4gX3QsVHQ9MD09PW5hdmlnYXRvci5wbGF0Zm9ybS5pbmRleE9mKCJXaW4iKSxNdD1wdCYmInRyYW5zaXRpb24iaW4gX3QsenQ9IldlYktpdENTU01hdHJpeCJpbiB3aW5kb3cmJiJtMTEiaW4gbmV3IHdpbmRvdy5XZWJLaXRDU1NNYXRyaXgmJiF2dCxfdD0iTW96UGVyc3BlY3RpdmUiaW4gX3QsQ3Q9IXdpbmRvdy5MX0RJU0FCTEVfM0QmJihNdHx8enR8fF90KSYmIW8mJiFMdCxadD0idW5kZWZpbmVkIiE9dHlwZW9mIG9yaWVudGF0aW9ufHx5KCJtb2JpbGUiKSxTdD1adCYmZnQsRXQ9WnQmJnp0LGt0PSF3aW5kb3cuUG9pbnRlckV2ZW50JiZ3aW5kb3cuTVNQb2ludGVyRXZlbnQsT3Q9ISghd2luZG93LlBvaW50ZXJFdmVudCYmIWt0KSxBdD0ib250b3VjaHN0YXJ0ImluIHdpbmRvd3x8ISF3aW5kb3cuVG91Y2hFdmVudCxCdD0hd2luZG93LkxfTk9fVE9VQ0gmJihBdHx8T3QpLEl0PVp0JiZ4dCxSdD1adCYmYnQsTnQ9MTwod2luZG93LmRldmljZVBpeGVsUmF0aW98fHdpbmRvdy5zY3JlZW4uZGV2aWNlWERQSS93aW5kb3cuc2NyZWVuLmxvZ2ljYWxYRFBJKSxEdD1mdW5jdGlvbigpe3ZhciB0PSExO3RyeXt2YXIgZT1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sInBhc3NpdmUiLHtnZXQ6ZnVuY3Rpb24oKXt0PSEwfX0pO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJ0ZXN0UGFzc2l2ZUV2ZW50U3VwcG9ydCIsdSxlKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigidGVzdFBhc3NpdmVFdmVudFN1cHBvcnQiLHUsZSl9Y2F0Y2godCl7fXJldHVybiB0fSgpLGp0PSEhZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIikuZ2V0Q29udGV4dCxIdD0hKCFkb2N1bWVudC5jcmVhdGVFbGVtZW50TlN8fCFjdCgic3ZnIikuY3JlYXRlU1ZHUmVjdCksV3Q9ISFIdCYmKChXdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSkuaW5uZXJIVE1MPSI8c3ZnLz4iLCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI9PT0oV3QuZmlyc3RDaGlsZCYmV3QuZmlyc3RDaGlsZC5uYW1lc3BhY2VVUkkpKTtmdW5jdGlvbiB5KHQpe3JldHVybiAwPD1uYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkuaW5kZXhPZih0KX12YXIgYj17aWU6cHQsaWVsdDk6bXQsZWRnZTpuLHdlYmtpdDpmdCxhbmRyb2lkOmd0LGFuZHJvaWQyMzp2dCxhbmRyb2lkU3RvY2s6eXQsb3BlcmE6eHQsY2hyb21lOnd0LGdlY2tvOmJ0LHNhZmFyaTpQdCxwaGFudG9tOkx0LG9wZXJhMTI6byx3aW46VHQsaWUzZDpNdCx3ZWJraXQzZDp6dCxnZWNrbzNkOl90LGFueTNkOkN0LG1vYmlsZTpadCxtb2JpbGVXZWJraXQ6U3QsbW9iaWxlV2Via2l0M2Q6RXQsbXNQb2ludGVyOmt0LHBvaW50ZXI6T3QsdG91Y2g6QnQsdG91Y2hOYXRpdmU6QXQsbW9iaWxlT3BlcmE6SXQsbW9iaWxlR2Vja286UnQscmV0aW5hOk50LHBhc3NpdmVFdmVudHM6RHQsY2FudmFzOmp0LHN2ZzpIdCx2bWw6IUh0JiZmdW5jdGlvbigpe3RyeXt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxlPSh0LmlubmVySFRNTD0nPHY6c2hhcGUgYWRqPSIxIi8+Jyx0LmZpcnN0Q2hpbGQpO3JldHVybiBlLnN0eWxlLmJlaGF2aW9yPSJ1cmwoI2RlZmF1bHQjVk1MKSIsZSYmIm9iamVjdCI9PXR5cGVvZiBlLmFkan1jYXRjaCh0KXtyZXR1cm4hMX19KCksaW5saW5lU3ZnOld0LG1hYzowPT09bmF2aWdhdG9yLnBsYXRmb3JtLmluZGV4T2YoIk1hYyIpLGxpbnV4OjA9PT1uYXZpZ2F0b3IucGxhdGZvcm0uaW5kZXhPZigiTGludXgiKX0sRnQ9Yi5tc1BvaW50ZXI/Ik1TUG9pbnRlckRvd24iOiJwb2ludGVyZG93biIsVXQ9Yi5tc1BvaW50ZXI/Ik1TUG9pbnRlck1vdmUiOiJwb2ludGVybW92ZSIsVnQ9Yi5tc1BvaW50ZXI/Ik1TUG9pbnRlclVwIjoicG9pbnRlcnVwIixxdD1iLm1zUG9pbnRlcj8iTVNQb2ludGVyQ2FuY2VsIjoicG9pbnRlcmNhbmNlbCIsR3Q9e3RvdWNoc3RhcnQ6RnQsdG91Y2htb3ZlOlV0LHRvdWNoZW5kOlZ0LHRvdWNoY2FuY2VsOnF0fSxLdD17dG91Y2hzdGFydDpmdW5jdGlvbih0LGUpe2UuTVNQT0lOVEVSX1RZUEVfVE9VQ0gmJmUucG9pbnRlclR5cGU9PT1lLk1TUE9JTlRFUl9UWVBFX1RPVUNIJiZPKGUpO2VlKHQsZSl9LHRvdWNobW92ZTplZSx0b3VjaGVuZDplZSx0b3VjaGNhbmNlbDplZX0sWXQ9e30sWHQ9ITE7ZnVuY3Rpb24gSnQodCxlLGkpe3JldHVybiJ0b3VjaHN0YXJ0IiE9PWV8fFh0fHwoZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihGdCwkdCwhMCksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihVdCxRdCwhMCksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihWdCx0ZSwhMCksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihxdCx0ZSwhMCksWHQ9ITApLEt0W2VdPyhpPUt0W2VdLmJpbmQodGhpcyxpKSx0LmFkZEV2ZW50TGlzdGVuZXIoR3RbZV0saSwhMSksaSk6KGNvbnNvbGUud2Fybigid3JvbmcgZXZlbnQgc3BlY2lmaWVkOiIsZSksdSl9ZnVuY3Rpb24gJHQodCl7WXRbdC5wb2ludGVySWRdPXR9ZnVuY3Rpb24gUXQodCl7WXRbdC5wb2ludGVySWRdJiYoWXRbdC5wb2ludGVySWRdPXQpfWZ1bmN0aW9uIHRlKHQpe2RlbGV0ZSBZdFt0LnBvaW50ZXJJZF19ZnVuY3Rpb24gZWUodCxlKXtpZihlLnBvaW50ZXJUeXBlIT09KGUuTVNQT0lOVEVSX1RZUEVfTU9VU0V8fCJtb3VzZSIpKXtmb3IodmFyIGkgaW4gZS50b3VjaGVzPVtdLFl0KWUudG91Y2hlcy5wdXNoKFl0W2ldKTtlLmNoYW5nZWRUb3VjaGVzPVtlXSx0KGUpfX12YXIgaWU9MjAwO2Z1bmN0aW9uIG5lKHQsaSl7dC5hZGRFdmVudExpc3RlbmVyKCJkYmxjbGljayIsaSk7dmFyIG4sbz0wO2Z1bmN0aW9uIGUodCl7dmFyIGU7MSE9PXQuZGV0YWlsP249dC5kZXRhaWw6Im1vdXNlIj09PXQucG9pbnRlclR5cGV8fHQuc291cmNlQ2FwYWJpbGl0aWVzJiYhdC5zb3VyY2VDYXBhYmlsaXRpZXMuZmlyZXNUb3VjaEV2ZW50c3x8KChlPU5lKHQpKS5zb21lKGZ1bmN0aW9uKHQpe3JldHVybiB0IGluc3RhbmNlb2YgSFRNTExhYmVsRWxlbWVudCYmdC5hdHRyaWJ1dGVzLmZvcn0pJiYhZS5zb21lKGZ1bmN0aW9uKHQpe3JldHVybiB0IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudHx8dCBpbnN0YW5jZW9mIEhUTUxTZWxlY3RFbGVtZW50fSl8fCgoZT1EYXRlLm5vdygpKS1vPD1pZT8yPT09KytuJiZpKGZ1bmN0aW9uKHQpe3ZhciBlLGksbj17fTtmb3IoaSBpbiB0KWU9dFtpXSxuW2ldPWUmJmUuYmluZD9lLmJpbmQodCk6ZTtyZXR1cm4odD1uKS50eXBlPSJkYmxjbGljayIsbi5kZXRhaWw9MixuLmlzVHJ1c3RlZD0hMSxuLl9zaW11bGF0ZWQ9ITAsbn0odCkpOm49MSxvPWUpKX1yZXR1cm4gdC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZSkse2RibGNsaWNrOmksc2ltRGJsY2xpY2s6ZX19dmFyIG9lLHNlLHJlLGFlLGhlLGxlLHVlPXdlKFsidHJhbnNmb3JtIiwid2Via2l0VHJhbnNmb3JtIiwiT1RyYW5zZm9ybSIsIk1velRyYW5zZm9ybSIsIm1zVHJhbnNmb3JtIl0pLGNlPXdlKFsid2Via2l0VHJhbnNpdGlvbiIsInRyYW5zaXRpb24iLCJPVHJhbnNpdGlvbiIsIk1velRyYW5zaXRpb24iLCJtc1RyYW5zaXRpb24iXSksZGU9IndlYmtpdFRyYW5zaXRpb24iPT09Y2V8fCJPVHJhbnNpdGlvbiI9PT1jZT9jZSsiRW5kIjoidHJhbnNpdGlvbmVuZCI7ZnVuY3Rpb24gX2UodCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKHQpOnR9ZnVuY3Rpb24gcGUodCxlKXt2YXIgaT10LnN0eWxlW2VdfHx0LmN1cnJlbnRTdHlsZSYmdC5jdXJyZW50U3R5bGVbZV07cmV0dXJuImF1dG8iPT09KGk9aSYmImF1dG8iIT09aXx8IWRvY3VtZW50LmRlZmF1bHRWaWV3P2k6KHQ9ZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSh0LG51bGwpKT90W2VdOm51bGwpP251bGw6aX1mdW5jdGlvbiBQKHQsZSxpKXt0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodCk7cmV0dXJuIHQuY2xhc3NOYW1lPWV8fCIiLGkmJmkuYXBwZW5kQ2hpbGQodCksdH1mdW5jdGlvbiBUKHQpe3ZhciBlPXQucGFyZW50Tm9kZTtlJiZlLnJlbW92ZUNoaWxkKHQpfWZ1bmN0aW9uIG1lKHQpe2Zvcig7dC5maXJzdENoaWxkOyl0LnJlbW92ZUNoaWxkKHQuZmlyc3RDaGlsZCl9ZnVuY3Rpb24gZmUodCl7dmFyIGU9dC5wYXJlbnROb2RlO2UmJmUubGFzdENoaWxkIT09dCYmZS5hcHBlbmRDaGlsZCh0KX1mdW5jdGlvbiBnZSh0KXt2YXIgZT10LnBhcmVudE5vZGU7ZSYmZS5maXJzdENoaWxkIT09dCYmZS5pbnNlcnRCZWZvcmUodCxlLmZpcnN0Q2hpbGQpfWZ1bmN0aW9uIHZlKHQsZSl7cmV0dXJuIHZvaWQgMCE9PXQuY2xhc3NMaXN0P3QuY2xhc3NMaXN0LmNvbnRhaW5zKGUpOjA8KHQ9eGUodCkpLmxlbmd0aCYmbmV3IFJlZ0V4cCgiKF58XFxzKSIrZSsiKFxcc3wkKSIpLnRlc3QodCl9ZnVuY3Rpb24gTSh0LGUpe3ZhciBpO2lmKHZvaWQgMCE9PXQuY2xhc3NMaXN0KWZvcih2YXIgbj1GKGUpLG89MCxzPW4ubGVuZ3RoO288cztvKyspdC5jbGFzc0xpc3QuYWRkKG5bb10pO2Vsc2UgdmUodCxlKXx8eWUodCwoKGk9eGUodCkpP2krIiAiOiIiKStlKX1mdW5jdGlvbiB6KHQsZSl7dm9pZCAwIT09dC5jbGFzc0xpc3Q/dC5jbGFzc0xpc3QucmVtb3ZlKGUpOnllKHQsVygoIiAiK3hlKHQpKyIgIikucmVwbGFjZSgiICIrZSsiICIsIiAiKSkpfWZ1bmN0aW9uIHllKHQsZSl7dm9pZCAwPT09dC5jbGFzc05hbWUuYmFzZVZhbD90LmNsYXNzTmFtZT1lOnQuY2xhc3NOYW1lLmJhc2VWYWw9ZX1mdW5jdGlvbiB4ZSh0KXtyZXR1cm4gdm9pZCAwPT09KHQ9dC5jb3JyZXNwb25kaW5nRWxlbWVudD90LmNvcnJlc3BvbmRpbmdFbGVtZW50OnQpLmNsYXNzTmFtZS5iYXNlVmFsP3QuY2xhc3NOYW1lOnQuY2xhc3NOYW1lLmJhc2VWYWx9ZnVuY3Rpb24gQyh0LGUpe2lmKCJvcGFjaXR5ImluIHQuc3R5bGUpdC5zdHlsZS5vcGFjaXR5PWU7ZWxzZSBpZigiZmlsdGVyImluIHQuc3R5bGUpe3ZhciBpPSExLG49IkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhIjt0cnl7aT10LmZpbHRlcnMuaXRlbShuKX1jYXRjaCh0KXtpZigxPT09ZSlyZXR1cm59ZT1NYXRoLnJvdW5kKDEwMCplKSxpPyhpLkVuYWJsZWQ9MTAwIT09ZSxpLk9wYWNpdHk9ZSk6dC5zdHlsZS5maWx0ZXIrPSIgcHJvZ2lkOiIrbisiKG9wYWNpdHk9IitlKyIpIn19ZnVuY3Rpb24gd2UodCl7Zm9yKHZhciBlPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZSxpPTA7aTx0Lmxlbmd0aDtpKyspaWYodFtpXWluIGUpcmV0dXJuIHRbaV07cmV0dXJuITF9ZnVuY3Rpb24gYmUodCxlLGkpe2U9ZXx8bmV3IHAoMCwwKTt0LnN0eWxlW3VlXT0oYi5pZTNkPyJ0cmFuc2xhdGUoIitlLngrInB4LCIrZS55KyJweCkiOiJ0cmFuc2xhdGUzZCgiK2UueCsicHgsIitlLnkrInB4LDApIikrKGk/IiBzY2FsZSgiK2krIikiOiIiKX1mdW5jdGlvbiBaKHQsZSl7dC5fbGVhZmxldF9wb3M9ZSxiLmFueTNkP2JlKHQsZSk6KHQuc3R5bGUubGVmdD1lLngrInB4Iix0LnN0eWxlLnRvcD1lLnkrInB4Iil9ZnVuY3Rpb24gUGUodCl7cmV0dXJuIHQuX2xlYWZsZXRfcG9zfHxuZXcgcCgwLDApfWZ1bmN0aW9uIExlKCl7Uyh3aW5kb3csImRyYWdzdGFydCIsTyl9ZnVuY3Rpb24gVGUoKXtrKHdpbmRvdywiZHJhZ3N0YXJ0IixPKX1mdW5jdGlvbiBNZSh0KXtmb3IoOy0xPT09dC50YWJJbmRleDspdD10LnBhcmVudE5vZGU7dC5zdHlsZSYmKHplKCksbGU9KGhlPXQpLnN0eWxlLm91dGxpbmVTdHlsZSx0LnN0eWxlLm91dGxpbmVTdHlsZT0ibm9uZSIsUyh3aW5kb3csImtleWRvd24iLHplKSl9ZnVuY3Rpb24gemUoKXtoZSYmKGhlLnN0eWxlLm91dGxpbmVTdHlsZT1sZSxsZT1oZT12b2lkIDAsayh3aW5kb3csImtleWRvd24iLHplKSl9ZnVuY3Rpb24gQ2UodCl7Zm9yKDshKCh0PXQucGFyZW50Tm9kZSkub2Zmc2V0V2lkdGgmJnQub2Zmc2V0SGVpZ2h0fHx0PT09ZG9jdW1lbnQuYm9keSk7KTtyZXR1cm4gdH1mdW5jdGlvbiBaZSh0KXt2YXIgZT10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybnt4OmUud2lkdGgvdC5vZmZzZXRXaWR0aHx8MSx5OmUuaGVpZ2h0L3Qub2Zmc2V0SGVpZ2h0fHwxLGJvdW5kaW5nQ2xpZW50UmVjdDplfX1hZT0ib25zZWxlY3RzdGFydCJpbiBkb2N1bWVudD8ocmU9ZnVuY3Rpb24oKXtTKHdpbmRvdywic2VsZWN0c3RhcnQiLE8pfSxmdW5jdGlvbigpe2sod2luZG93LCJzZWxlY3RzdGFydCIsTyl9KTooc2U9d2UoWyJ1c2VyU2VsZWN0IiwiV2Via2l0VXNlclNlbGVjdCIsIk9Vc2VyU2VsZWN0IiwiTW96VXNlclNlbGVjdCIsIm1zVXNlclNlbGVjdCJdKSxyZT1mdW5jdGlvbigpe3ZhciB0O3NlJiYodD1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUsb2U9dFtzZV0sdFtzZV09Im5vbmUiKX0sZnVuY3Rpb24oKXtzZSYmKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZVtzZV09b2Usb2U9dm9pZCAwKX0pO3B0PXtfX3Byb3RvX186bnVsbCxUUkFOU0ZPUk06dWUsVFJBTlNJVElPTjpjZSxUUkFOU0lUSU9OX0VORDpkZSxnZXQ6X2UsZ2V0U3R5bGU6cGUsY3JlYXRlOlAscmVtb3ZlOlQsZW1wdHk6bWUsdG9Gcm9udDpmZSx0b0JhY2s6Z2UsaGFzQ2xhc3M6dmUsYWRkQ2xhc3M6TSxyZW1vdmVDbGFzczp6LHNldENsYXNzOnllLGdldENsYXNzOnhlLHNldE9wYWNpdHk6Qyx0ZXN0UHJvcDp3ZSxzZXRUcmFuc2Zvcm06YmUsc2V0UG9zaXRpb246WixnZXRQb3NpdGlvbjpQZSxnZXQgZGlzYWJsZVRleHRTZWxlY3Rpb24oKXtyZXR1cm4gcmV9LGdldCBlbmFibGVUZXh0U2VsZWN0aW9uKCl7cmV0dXJuIGFlfSxkaXNhYmxlSW1hZ2VEcmFnOkxlLGVuYWJsZUltYWdlRHJhZzpUZSxwcmV2ZW50T3V0bGluZTpNZSxyZXN0b3JlT3V0bGluZTp6ZSxnZXRTaXplZFBhcmVudE5vZGU6Q2UsZ2V0U2NhbGU6WmV9O2Z1bmN0aW9uIFModCxlLGksbil7aWYoZSYmIm9iamVjdCI9PXR5cGVvZiBlKWZvcih2YXIgbyBpbiBlKWtlKHQsbyxlW29dLGkpO2Vsc2UgZm9yKHZhciBzPTAscj0oZT1GKGUpKS5sZW5ndGg7czxyO3MrKylrZSh0LGVbc10saSxuKTtyZXR1cm4gdGhpc312YXIgRT0iX2xlYWZsZXRfZXZlbnRzIjtmdW5jdGlvbiBrKHQsZSxpLG4pe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKVNlKHQpLGRlbGV0ZSB0W0VdO2Vsc2UgaWYoZSYmIm9iamVjdCI9PXR5cGVvZiBlKWZvcih2YXIgbyBpbiBlKU9lKHQsbyxlW29dLGkpO2Vsc2UgaWYoZT1GKGUpLDI9PT1hcmd1bWVudHMubGVuZ3RoKVNlKHQsZnVuY3Rpb24odCl7cmV0dXJuLTEhPT1HKGUsdCl9KTtlbHNlIGZvcih2YXIgcz0wLHI9ZS5sZW5ndGg7czxyO3MrKylPZSh0LGVbc10saSxuKTtyZXR1cm4gdGhpc31mdW5jdGlvbiBTZSh0LGUpe2Zvcih2YXIgaSBpbiB0W0VdKXt2YXIgbj1pLnNwbGl0KC9cZC8pWzBdO2UmJiFlKG4pfHxPZSh0LG4sbnVsbCxudWxsLGkpfX12YXIgRWU9e21vdXNlZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2ZToibW91c2VvdXQiLHdoZWVsOiEoIm9ud2hlZWwiaW4gd2luZG93KSYmIm1vdXNld2hlZWwifTtmdW5jdGlvbiBrZShlLHQsaSxuKXt2YXIgbyxzLHI9dCtoKGkpKyhuPyJfIitoKG4pOiIiKTtlW0VdJiZlW0VdW3JdfHwocz1vPWZ1bmN0aW9uKHQpe3JldHVybiBpLmNhbGwobnx8ZSx0fHx3aW5kb3cuZXZlbnQpfSwhYi50b3VjaE5hdGl2ZSYmYi5wb2ludGVyJiYwPT09dC5pbmRleE9mKCJ0b3VjaCIpP289SnQoZSx0LG8pOmIudG91Y2gmJiJkYmxjbGljayI9PT10P289bmUoZSxvKToiYWRkRXZlbnRMaXN0ZW5lciJpbiBlPyJ0b3VjaHN0YXJ0Ij09PXR8fCJ0b3VjaG1vdmUiPT09dHx8IndoZWVsIj09PXR8fCJtb3VzZXdoZWVsIj09PXQ/ZS5hZGRFdmVudExpc3RlbmVyKEVlW3RdfHx0LG8sISFiLnBhc3NpdmVFdmVudHMmJntwYXNzaXZlOiExfSk6Im1vdXNlZW50ZXIiPT09dHx8Im1vdXNlbGVhdmUiPT09dD9lLmFkZEV2ZW50TGlzdGVuZXIoRWVbdF0sbz1mdW5jdGlvbih0KXt0PXR8fHdpbmRvdy5ldmVudCxXZShlLHQpJiZzKHQpfSwhMSk6ZS5hZGRFdmVudExpc3RlbmVyKHQscywhMSk6ZS5hdHRhY2hFdmVudCgib24iK3QsbyksZVtFXT1lW0VdfHx7fSxlW0VdW3JdPW8pfWZ1bmN0aW9uIE9lKHQsZSxpLG4sbyl7bz1vfHxlK2goaSkrKG4/Il8iK2gobik6IiIpO3ZhciBzLHIsaT10W0VdJiZ0W0VdW29dO2kmJighYi50b3VjaE5hdGl2ZSYmYi5wb2ludGVyJiYwPT09ZS5pbmRleE9mKCJ0b3VjaCIpPyhuPXQscj1pLEd0W3M9ZV0/bi5yZW1vdmVFdmVudExpc3RlbmVyKEd0W3NdLHIsITEpOmNvbnNvbGUud2Fybigid3JvbmcgZXZlbnQgc3BlY2lmaWVkOiIscykpOmIudG91Y2gmJiJkYmxjbGljayI9PT1lPyhuPWksKHI9dCkucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZGJsY2xpY2siLG4uZGJsY2xpY2spLHIucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2xpY2siLG4uc2ltRGJsY2xpY2spKToicmVtb3ZlRXZlbnRMaXN0ZW5lciJpbiB0P3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihFZVtlXXx8ZSxpLCExKTp0LmRldGFjaEV2ZW50KCJvbiIrZSxpKSx0W0VdW29dPW51bGwpfWZ1bmN0aW9uIEFlKHQpe3JldHVybiB0LnN0b3BQcm9wYWdhdGlvbj90LnN0b3BQcm9wYWdhdGlvbigpOnQub3JpZ2luYWxFdmVudD90Lm9yaWdpbmFsRXZlbnQuX3N0b3BwZWQ9ITA6dC5jYW5jZWxCdWJibGU9ITAsdGhpc31mdW5jdGlvbiBCZSh0KXtyZXR1cm4ga2UodCwid2hlZWwiLEFlKSx0aGlzfWZ1bmN0aW9uIEllKHQpe3JldHVybiBTKHQsIm1vdXNlZG93biB0b3VjaHN0YXJ0IGRibGNsaWNrIGNvbnRleHRtZW51IixBZSksdC5fbGVhZmxldF9kaXNhYmxlX2NsaWNrPSEwLHRoaXN9ZnVuY3Rpb24gTyh0KXtyZXR1cm4gdC5wcmV2ZW50RGVmYXVsdD90LnByZXZlbnREZWZhdWx0KCk6dC5yZXR1cm5WYWx1ZT0hMSx0aGlzfWZ1bmN0aW9uIFJlKHQpe3JldHVybiBPKHQpLEFlKHQpLHRoaXN9ZnVuY3Rpb24gTmUodCl7aWYodC5jb21wb3NlZFBhdGgpcmV0dXJuIHQuY29tcG9zZWRQYXRoKCk7Zm9yKHZhciBlPVtdLGk9dC50YXJnZXQ7aTspZS5wdXNoKGkpLGk9aS5wYXJlbnROb2RlO3JldHVybiBlfWZ1bmN0aW9uIERlKHQsZSl7dmFyIGksbjtyZXR1cm4gZT8obj0oaT1aZShlKSkuYm91bmRpbmdDbGllbnRSZWN0LG5ldyBwKCh0LmNsaWVudFgtbi5sZWZ0KS9pLngtZS5jbGllbnRMZWZ0LCh0LmNsaWVudFktbi50b3ApL2kueS1lLmNsaWVudFRvcCkpOm5ldyBwKHQuY2xpZW50WCx0LmNsaWVudFkpfXZhciBqZT1iLmxpbnV4JiZiLmNocm9tZT93aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbzpiLm1hYz8zKndpbmRvdy5kZXZpY2VQaXhlbFJhdGlvOjA8d2luZG93LmRldmljZVBpeGVsUmF0aW8/Mip3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbzoxO2Z1bmN0aW9uIEhlKHQpe3JldHVybiBiLmVkZ2U/dC53aGVlbERlbHRhWS8yOnQuZGVsdGFZJiYwPT09dC5kZWx0YU1vZGU/LXQuZGVsdGFZL2plOnQuZGVsdGFZJiYxPT09dC5kZWx0YU1vZGU/MjAqLXQuZGVsdGFZOnQuZGVsdGFZJiYyPT09dC5kZWx0YU1vZGU/NjAqLXQuZGVsdGFZOnQuZGVsdGFYfHx0LmRlbHRhWj8wOnQud2hlZWxEZWx0YT8odC53aGVlbERlbHRhWXx8dC53aGVlbERlbHRhKS8yOnQuZGV0YWlsJiZNYXRoLmFicyh0LmRldGFpbCk8MzI3NjU/MjAqLXQuZGV0YWlsOnQuZGV0YWlsP3QuZGV0YWlsLy0zMjc2NSo2MDowfWZ1bmN0aW9uIFdlKHQsZSl7dmFyIGk9ZS5yZWxhdGVkVGFyZ2V0O2lmKCFpKXJldHVybiEwO3RyeXtmb3IoO2kmJmkhPT10OylpPWkucGFyZW50Tm9kZX1jYXRjaCh0KXtyZXR1cm4hMX1yZXR1cm4gaSE9PXR9dmFyIG10PXtfX3Byb3RvX186bnVsbCxvbjpTLG9mZjprLHN0b3BQcm9wYWdhdGlvbjpBZSxkaXNhYmxlU2Nyb2xsUHJvcGFnYXRpb246QmUsZGlzYWJsZUNsaWNrUHJvcGFnYXRpb246SWUscHJldmVudERlZmF1bHQ6TyxzdG9wOlJlLGdldFByb3BhZ2F0aW9uUGF0aDpOZSxnZXRNb3VzZVBvc2l0aW9uOkRlLGdldFdoZWVsRGVsdGE6SGUsaXNFeHRlcm5hbFRhcmdldDpXZSxhZGRMaXN0ZW5lcjpTLHJlbW92ZUxpc3RlbmVyOmt9LEZlPWl0LmV4dGVuZCh7cnVuOmZ1bmN0aW9uKHQsZSxpLG4pe3RoaXMuc3RvcCgpLHRoaXMuX2VsPXQsdGhpcy5faW5Qcm9ncmVzcz0hMCx0aGlzLl9kdXJhdGlvbj1pfHwuMjUsdGhpcy5fZWFzZU91dFBvd2VyPTEvTWF0aC5tYXgobnx8LjUsLjIpLHRoaXMuX3N0YXJ0UG9zPVBlKHQpLHRoaXMuX29mZnNldD1lLnN1YnRyYWN0KHRoaXMuX3N0YXJ0UG9zKSx0aGlzLl9zdGFydFRpbWU9K25ldyBEYXRlLHRoaXMuZmlyZSgic3RhcnQiKSx0aGlzLl9hbmltYXRlKCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLl9pblByb2dyZXNzJiYodGhpcy5fc3RlcCghMCksdGhpcy5fY29tcGxldGUoKSl9LF9hbmltYXRlOmZ1bmN0aW9uKCl7dGhpcy5fYW5pbUlkPXgodGhpcy5fYW5pbWF0ZSx0aGlzKSx0aGlzLl9zdGVwKCl9LF9zdGVwOmZ1bmN0aW9uKHQpe3ZhciBlPStuZXcgRGF0ZS10aGlzLl9zdGFydFRpbWUsaT0xZTMqdGhpcy5fZHVyYXRpb247ZTxpP3RoaXMuX3J1bkZyYW1lKHRoaXMuX2Vhc2VPdXQoZS9pKSx0KToodGhpcy5fcnVuRnJhbWUoMSksdGhpcy5fY29tcGxldGUoKSl9LF9ydW5GcmFtZTpmdW5jdGlvbih0LGUpe3Q9dGhpcy5fc3RhcnRQb3MuYWRkKHRoaXMuX29mZnNldC5tdWx0aXBseUJ5KHQpKTtlJiZ0Ll9yb3VuZCgpLFoodGhpcy5fZWwsdCksdGhpcy5maXJlKCJzdGVwIil9LF9jb21wbGV0ZTpmdW5jdGlvbigpe3IodGhpcy5fYW5pbUlkKSx0aGlzLl9pblByb2dyZXNzPSExLHRoaXMuZmlyZSgiZW5kIil9LF9lYXNlT3V0OmZ1bmN0aW9uKHQpe3JldHVybiAxLU1hdGgucG93KDEtdCx0aGlzLl9lYXNlT3V0UG93ZXIpfX0pLEE9aXQuZXh0ZW5kKHtvcHRpb25zOntjcnM6bHQsY2VudGVyOnZvaWQgMCx6b29tOnZvaWQgMCxtaW5ab29tOnZvaWQgMCxtYXhab29tOnZvaWQgMCxsYXllcnM6W10sbWF4Qm91bmRzOnZvaWQgMCxyZW5kZXJlcjp2b2lkIDAsem9vbUFuaW1hdGlvbjohMCx6b29tQW5pbWF0aW9uVGhyZXNob2xkOjQsZmFkZUFuaW1hdGlvbjohMCxtYXJrZXJab29tQW5pbWF0aW9uOiEwLHRyYW5zZm9ybTNETGltaXQ6ODM4ODYwOCx6b29tU25hcDoxLHpvb21EZWx0YToxLHRyYWNrUmVzaXplOiEwfSxpbml0aWFsaXplOmZ1bmN0aW9uKHQsZSl7ZT1jKHRoaXMsZSksdGhpcy5faGFuZGxlcnM9W10sdGhpcy5fbGF5ZXJzPXt9LHRoaXMuX3pvb21Cb3VuZExheWVycz17fSx0aGlzLl9zaXplQ2hhbmdlZD0hMCx0aGlzLl9pbml0Q29udGFpbmVyKHQpLHRoaXMuX2luaXRMYXlvdXQoKSx0aGlzLl9vblJlc2l6ZT1hKHRoaXMuX29uUmVzaXplLHRoaXMpLHRoaXMuX2luaXRFdmVudHMoKSxlLm1heEJvdW5kcyYmdGhpcy5zZXRNYXhCb3VuZHMoZS5tYXhCb3VuZHMpLHZvaWQgMCE9PWUuem9vbSYmKHRoaXMuX3pvb209dGhpcy5fbGltaXRab29tKGUuem9vbSkpLGUuY2VudGVyJiZ2b2lkIDAhPT1lLnpvb20mJnRoaXMuc2V0Vmlldyh3KGUuY2VudGVyKSxlLnpvb20se3Jlc2V0OiEwfSksdGhpcy5jYWxsSW5pdEhvb2tzKCksdGhpcy5fem9vbUFuaW1hdGVkPWNlJiZiLmFueTNkJiYhYi5tb2JpbGVPcGVyYSYmdGhpcy5vcHRpb25zLnpvb21BbmltYXRpb24sdGhpcy5fem9vbUFuaW1hdGVkJiYodGhpcy5fY3JlYXRlQW5pbVByb3h5KCksUyh0aGlzLl9wcm94eSxkZSx0aGlzLl9jYXRjaFRyYW5zaXRpb25FbmQsdGhpcykpLHRoaXMuX2FkZExheWVycyh0aGlzLm9wdGlvbnMubGF5ZXJzKX0sc2V0VmlldzpmdW5jdGlvbih0LGUsaSl7aWYoKGU9dm9pZCAwPT09ZT90aGlzLl96b29tOnRoaXMuX2xpbWl0Wm9vbShlKSx0PXRoaXMuX2xpbWl0Q2VudGVyKHcodCksZSx0aGlzLm9wdGlvbnMubWF4Qm91bmRzKSxpPWl8fHt9LHRoaXMuX3N0b3AoKSx0aGlzLl9sb2FkZWQmJiFpLnJlc2V0JiYhMCE9PWkpJiYodm9pZCAwIT09aS5hbmltYXRlJiYoaS56b29tPWwoe2FuaW1hdGU6aS5hbmltYXRlfSxpLnpvb20pLGkucGFuPWwoe2FuaW1hdGU6aS5hbmltYXRlLGR1cmF0aW9uOmkuZHVyYXRpb259LGkucGFuKSksdGhpcy5fem9vbSE9PWU/dGhpcy5fdHJ5QW5pbWF0ZWRab29tJiZ0aGlzLl90cnlBbmltYXRlZFpvb20odCxlLGkuem9vbSk6dGhpcy5fdHJ5QW5pbWF0ZWRQYW4odCxpLnBhbikpKXJldHVybiBjbGVhclRpbWVvdXQodGhpcy5fc2l6ZVRpbWVyKSx0aGlzO3JldHVybiB0aGlzLl9yZXNldFZpZXcodCxlLGkucGFuJiZpLnBhbi5ub01vdmVTdGFydCksdGhpc30sc2V0Wm9vbTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9sb2FkZWQ/dGhpcy5zZXRWaWV3KHRoaXMuZ2V0Q2VudGVyKCksdCx7em9vbTplfSk6KHRoaXMuX3pvb209dCx0aGlzKX0sem9vbUluOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9dHx8KGIuYW55M2Q/dGhpcy5vcHRpb25zLnpvb21EZWx0YToxKSx0aGlzLnNldFpvb20odGhpcy5fem9vbSt0LGUpfSx6b29tT3V0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9dHx8KGIuYW55M2Q/dGhpcy5vcHRpb25zLnpvb21EZWx0YToxKSx0aGlzLnNldFpvb20odGhpcy5fem9vbS10LGUpfSxzZXRab29tQXJvdW5kOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbj10aGlzLmdldFpvb21TY2FsZShlKSxvPXRoaXMuZ2V0U2l6ZSgpLmRpdmlkZUJ5KDIpLHQ9KHQgaW5zdGFuY2VvZiBwP3Q6dGhpcy5sYXRMbmdUb0NvbnRhaW5lclBvaW50KHQpKS5zdWJ0cmFjdChvKS5tdWx0aXBseUJ5KDEtMS9uKSxuPXRoaXMuY29udGFpbmVyUG9pbnRUb0xhdExuZyhvLmFkZCh0KSk7cmV0dXJuIHRoaXMuc2V0VmlldyhuLGUse3pvb206aX0pfSxfZ2V0Qm91bmRzQ2VudGVyWm9vbTpmdW5jdGlvbih0LGUpe2U9ZXx8e30sdD10LmdldEJvdW5kcz90LmdldEJvdW5kcygpOmcodCk7dmFyIGk9bShlLnBhZGRpbmdUb3BMZWZ0fHxlLnBhZGRpbmd8fFswLDBdKSxuPW0oZS5wYWRkaW5nQm90dG9tUmlnaHR8fGUucGFkZGluZ3x8WzAsMF0pLG89dGhpcy5nZXRCb3VuZHNab29tKHQsITEsaS5hZGQobikpO3JldHVybihvPSJudW1iZXIiPT10eXBlb2YgZS5tYXhab29tP01hdGgubWluKGUubWF4Wm9vbSxvKTpvKT09PTEvMD97Y2VudGVyOnQuZ2V0Q2VudGVyKCksem9vbTpvfTooZT1uLnN1YnRyYWN0KGkpLmRpdmlkZUJ5KDIpLG49dGhpcy5wcm9qZWN0KHQuZ2V0U291dGhXZXN0KCksbyksaT10aGlzLnByb2plY3QodC5nZXROb3J0aEVhc3QoKSxvKSx7Y2VudGVyOnRoaXMudW5wcm9qZWN0KG4uYWRkKGkpLmRpdmlkZUJ5KDIpLmFkZChlKSxvKSx6b29tOm99KX0sZml0Qm91bmRzOmZ1bmN0aW9uKHQsZSl7aWYoKHQ9Zyh0KSkuaXNWYWxpZCgpKXJldHVybiB0PXRoaXMuX2dldEJvdW5kc0NlbnRlclpvb20odCxlKSx0aGlzLnNldFZpZXcodC5jZW50ZXIsdC56b29tLGUpO3Rocm93IG5ldyBFcnJvcigiQm91bmRzIGFyZSBub3QgdmFsaWQuIil9LGZpdFdvcmxkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmZpdEJvdW5kcyhbWy05MCwtMTgwXSxbOTAsMTgwXV0sdCl9LHBhblRvOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuc2V0Vmlldyh0LHRoaXMuX3pvb20se3BhbjplfSl9LHBhbkJ5OmZ1bmN0aW9uKHQsZSl7dmFyIGk7cmV0dXJuIGU9ZXx8e30sKHQ9bSh0KS5yb3VuZCgpKS54fHx0Lnk/KCEwPT09ZS5hbmltYXRlfHx0aGlzLmdldFNpemUoKS5jb250YWlucyh0KT8odGhpcy5fcGFuQW5pbXx8KHRoaXMuX3BhbkFuaW09bmV3IEZlLHRoaXMuX3BhbkFuaW0ub24oe3N0ZXA6dGhpcy5fb25QYW5UcmFuc2l0aW9uU3RlcCxlbmQ6dGhpcy5fb25QYW5UcmFuc2l0aW9uRW5kfSx0aGlzKSksZS5ub01vdmVTdGFydHx8dGhpcy5maXJlKCJtb3Zlc3RhcnQiKSwhMSE9PWUuYW5pbWF0ZT8oTSh0aGlzLl9tYXBQYW5lLCJsZWFmbGV0LXBhbi1hbmltIiksaT10aGlzLl9nZXRNYXBQYW5lUG9zKCkuc3VidHJhY3QodCkucm91bmQoKSx0aGlzLl9wYW5BbmltLnJ1bih0aGlzLl9tYXBQYW5lLGksZS5kdXJhdGlvbnx8LjI1LGUuZWFzZUxpbmVhcml0eSkpOih0aGlzLl9yYXdQYW5CeSh0KSx0aGlzLmZpcmUoIm1vdmUiKS5maXJlKCJtb3ZlZW5kIikpKTp0aGlzLl9yZXNldFZpZXcodGhpcy51bnByb2plY3QodGhpcy5wcm9qZWN0KHRoaXMuZ2V0Q2VudGVyKCkpLmFkZCh0KSksdGhpcy5nZXRab29tKCkpLHRoaXMpOnRoaXMuZmlyZSgibW92ZWVuZCIpfSxmbHlUbzpmdW5jdGlvbihuLG8sdCl7aWYoITE9PT0odD10fHx7fSkuYW5pbWF0ZXx8IWIuYW55M2QpcmV0dXJuIHRoaXMuc2V0VmlldyhuLG8sdCk7dGhpcy5fc3RvcCgpO3ZhciBzPXRoaXMucHJvamVjdCh0aGlzLmdldENlbnRlcigpKSxyPXRoaXMucHJvamVjdChuKSxlPXRoaXMuZ2V0U2l6ZSgpLGE9dGhpcy5fem9vbSxoPShuPXcobiksbz12b2lkIDA9PT1vP2E6byxNYXRoLm1heChlLngsZS55KSksaT1oKnRoaXMuZ2V0Wm9vbVNjYWxlKGEsbyksbD1yLmRpc3RhbmNlVG8ocyl8fDEsdT0xLjQyLGM9dSp1O2Z1bmN0aW9uIGQodCl7dD0oaSppLWgqaCsodD8tMToxKSpjKmMqbCpsKS8oMioodD9pOmgpKmMqbCksdD1NYXRoLnNxcnQodCp0KzEpLXQ7cmV0dXJuIHQ8MWUtOT8tMTg6TWF0aC5sb2codCl9ZnVuY3Rpb24gXyh0KXtyZXR1cm4oTWF0aC5leHAodCktTWF0aC5leHAoLXQpKS8yfWZ1bmN0aW9uIHAodCl7cmV0dXJuKE1hdGguZXhwKHQpK01hdGguZXhwKC10KSkvMn12YXIgbT1kKDApO2Z1bmN0aW9uIGYodCl7cmV0dXJuIGgqKHAobSkqKF8odD1tK3UqdCkvcCh0KSktXyhtKSkvY312YXIgZz1EYXRlLm5vdygpLHY9KGQoMSktbSkvdSx5PXQuZHVyYXRpb24/MWUzKnQuZHVyYXRpb246MWUzKnYqLjg7cmV0dXJuIHRoaXMuX21vdmVTdGFydCghMCx0Lm5vTW92ZVN0YXJ0KSxmdW5jdGlvbiB0KCl7dmFyIGU9KERhdGUubm93KCktZykveSxpPSgxLU1hdGgucG93KDEtZSwxLjUpKSp2O2U8PTE/KHRoaXMuX2ZseVRvRnJhbWU9eCh0LHRoaXMpLHRoaXMuX21vdmUodGhpcy51bnByb2plY3Qocy5hZGQoci5zdWJ0cmFjdChzKS5tdWx0aXBseUJ5KGYoaSkvbCkpLGEpLHRoaXMuZ2V0U2NhbGVab29tKGgvKGU9aSxoKihwKG0pL3AobSt1KmUpKSksYSkse2ZseVRvOiEwfSkpOnRoaXMuX21vdmUobixvKS5fbW92ZUVuZCghMCl9LmNhbGwodGhpcyksdGhpc30sZmx5VG9Cb3VuZHM6ZnVuY3Rpb24odCxlKXt0PXRoaXMuX2dldEJvdW5kc0NlbnRlclpvb20odCxlKTtyZXR1cm4gdGhpcy5mbHlUbyh0LmNlbnRlcix0Lnpvb20sZSl9LHNldE1heEJvdW5kczpmdW5jdGlvbih0KXtyZXR1cm4gdD1nKHQpLHRoaXMubGlzdGVucygibW92ZWVuZCIsdGhpcy5fcGFuSW5zaWRlTWF4Qm91bmRzKSYmdGhpcy5vZmYoIm1vdmVlbmQiLHRoaXMuX3Bhbkluc2lkZU1heEJvdW5kcyksdC5pc1ZhbGlkKCk/KHRoaXMub3B0aW9ucy5tYXhCb3VuZHM9dCx0aGlzLl9sb2FkZWQmJnRoaXMuX3Bhbkluc2lkZU1heEJvdW5kcygpLHRoaXMub24oIm1vdmVlbmQiLHRoaXMuX3Bhbkluc2lkZU1heEJvdW5kcykpOih0aGlzLm9wdGlvbnMubWF4Qm91bmRzPW51bGwsdGhpcyl9LHNldE1pblpvb206ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5vcHRpb25zLm1pblpvb207cmV0dXJuIHRoaXMub3B0aW9ucy5taW5ab29tPXQsdGhpcy5fbG9hZGVkJiZlIT09dCYmKHRoaXMuZmlyZSgiem9vbWxldmVsc2NoYW5nZSIpLHRoaXMuZ2V0Wm9vbSgpPHRoaXMub3B0aW9ucy5taW5ab29tKT90aGlzLnNldFpvb20odCk6dGhpc30sc2V0TWF4Wm9vbTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLm9wdGlvbnMubWF4Wm9vbTtyZXR1cm4gdGhpcy5vcHRpb25zLm1heFpvb209dCx0aGlzLl9sb2FkZWQmJmUhPT10JiYodGhpcy5maXJlKCJ6b29tbGV2ZWxzY2hhbmdlIiksdGhpcy5nZXRab29tKCk+dGhpcy5vcHRpb25zLm1heFpvb20pP3RoaXMuc2V0Wm9vbSh0KTp0aGlzfSxwYW5JbnNpZGVCb3VuZHM6ZnVuY3Rpb24odCxlKXt0aGlzLl9lbmZvcmNpbmdCb3VuZHM9ITA7dmFyIGk9dGhpcy5nZXRDZW50ZXIoKSx0PXRoaXMuX2xpbWl0Q2VudGVyKGksdGhpcy5fem9vbSxnKHQpKTtyZXR1cm4gaS5lcXVhbHModCl8fHRoaXMucGFuVG8odCxlKSx0aGlzLl9lbmZvcmNpbmdCb3VuZHM9ITEsdGhpc30scGFuSW5zaWRlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9bSgoZT1lfHx7fSkucGFkZGluZ1RvcExlZnR8fGUucGFkZGluZ3x8WzAsMF0pLG49bShlLnBhZGRpbmdCb3R0b21SaWdodHx8ZS5wYWRkaW5nfHxbMCwwXSksbz10aGlzLnByb2plY3QodGhpcy5nZXRDZW50ZXIoKSksdD10aGlzLnByb2plY3QodCkscz10aGlzLmdldFBpeGVsQm91bmRzKCksaT1fKFtzLm1pbi5hZGQoaSkscy5tYXguc3VidHJhY3QobildKSxzPWkuZ2V0U2l6ZSgpO3JldHVybiBpLmNvbnRhaW5zKHQpfHwodGhpcy5fZW5mb3JjaW5nQm91bmRzPSEwLG49dC5zdWJ0cmFjdChpLmdldENlbnRlcigpKSxpPWkuZXh0ZW5kKHQpLmdldFNpemUoKS5zdWJ0cmFjdChzKSxvLngrPW4ueDwwPy1pLng6aS54LG8ueSs9bi55PDA/LWkueTppLnksdGhpcy5wYW5Ubyh0aGlzLnVucHJvamVjdChvKSxlKSx0aGlzLl9lbmZvcmNpbmdCb3VuZHM9ITEpLHRoaXN9LGludmFsaWRhdGVTaXplOmZ1bmN0aW9uKHQpe2lmKCF0aGlzLl9sb2FkZWQpcmV0dXJuIHRoaXM7dD1sKHthbmltYXRlOiExLHBhbjohMH0sITA9PT10P3thbmltYXRlOiEwfTp0KTt2YXIgZT10aGlzLmdldFNpemUoKSxpPSh0aGlzLl9zaXplQ2hhbmdlZD0hMCx0aGlzLl9sYXN0Q2VudGVyPW51bGwsdGhpcy5nZXRTaXplKCkpLG49ZS5kaXZpZGVCeSgyKS5yb3VuZCgpLG89aS5kaXZpZGVCeSgyKS5yb3VuZCgpLG49bi5zdWJ0cmFjdChvKTtyZXR1cm4gbi54fHxuLnk/KHQuYW5pbWF0ZSYmdC5wYW4/dGhpcy5wYW5CeShuKToodC5wYW4mJnRoaXMuX3Jhd1BhbkJ5KG4pLHRoaXMuZmlyZSgibW92ZSIpLHQuZGVib3VuY2VNb3ZlZW5kPyhjbGVhclRpbWVvdXQodGhpcy5fc2l6ZVRpbWVyKSx0aGlzLl9zaXplVGltZXI9c2V0VGltZW91dChhKHRoaXMuZmlyZSx0aGlzLCJtb3ZlZW5kIiksMjAwKSk6dGhpcy5maXJlKCJtb3ZlZW5kIikpLHRoaXMuZmlyZSgicmVzaXplIix7b2xkU2l6ZTplLG5ld1NpemU6aX0pKTp0aGlzfSxzdG9wOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2V0Wm9vbSh0aGlzLl9saW1pdFpvb20odGhpcy5fem9vbSkpLHRoaXMub3B0aW9ucy56b29tU25hcHx8dGhpcy5maXJlKCJ2aWV3cmVzZXQiKSx0aGlzLl9zdG9wKCl9LGxvY2F0ZTpmdW5jdGlvbih0KXt2YXIgZSxpO3JldHVybiB0PXRoaXMuX2xvY2F0ZU9wdGlvbnM9bCh7dGltZW91dDoxZTQsd2F0Y2g6ITF9LHQpLCJnZW9sb2NhdGlvbiJpbiBuYXZpZ2F0b3I/KGU9YSh0aGlzLl9oYW5kbGVHZW9sb2NhdGlvblJlc3BvbnNlLHRoaXMpLGk9YSh0aGlzLl9oYW5kbGVHZW9sb2NhdGlvbkVycm9yLHRoaXMpLHQud2F0Y2g/dGhpcy5fbG9jYXRpb25XYXRjaElkPW5hdmlnYXRvci5nZW9sb2NhdGlvbi53YXRjaFBvc2l0aW9uKGUsaSx0KTpuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGUsaSx0KSk6dGhpcy5faGFuZGxlR2VvbG9jYXRpb25FcnJvcih7Y29kZTowLG1lc3NhZ2U6Ikdlb2xvY2F0aW9uIG5vdCBzdXBwb3J0ZWQuIn0pLHRoaXN9LHN0b3BMb2NhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gbmF2aWdhdG9yLmdlb2xvY2F0aW9uJiZuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uY2xlYXJXYXRjaCYmbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmNsZWFyV2F0Y2godGhpcy5fbG9jYXRpb25XYXRjaElkKSx0aGlzLl9sb2NhdGVPcHRpb25zJiYodGhpcy5fbG9jYXRlT3B0aW9ucy5zZXRWaWV3PSExKSx0aGlzfSxfaGFuZGxlR2VvbG9jYXRpb25FcnJvcjpmdW5jdGlvbih0KXt2YXIgZTt0aGlzLl9jb250YWluZXIuX2xlYWZsZXRfaWQmJihlPXQuY29kZSx0PXQubWVzc2FnZXx8KDE9PT1lPyJwZXJtaXNzaW9uIGRlbmllZCI6Mj09PWU/InBvc2l0aW9uIHVuYXZhaWxhYmxlIjoidGltZW91dCIpLHRoaXMuX2xvY2F0ZU9wdGlvbnMuc2V0VmlldyYmIXRoaXMuX2xvYWRlZCYmdGhpcy5maXRXb3JsZCgpLHRoaXMuZmlyZSgibG9jYXRpb25lcnJvciIse2NvZGU6ZSxtZXNzYWdlOiJHZW9sb2NhdGlvbiBlcnJvcjogIit0KyIuIn0pKX0sX2hhbmRsZUdlb2xvY2F0aW9uUmVzcG9uc2U6ZnVuY3Rpb24odCl7aWYodGhpcy5fY29udGFpbmVyLl9sZWFmbGV0X2lkKXt2YXIgZSxpLG49bmV3IHYodC5jb29yZHMubGF0aXR1ZGUsdC5jb29yZHMubG9uZ2l0dWRlKSxvPW4udG9Cb3VuZHMoMip0LmNvb3Jkcy5hY2N1cmFjeSkscz10aGlzLl9sb2NhdGVPcHRpb25zLHI9KHMuc2V0VmlldyYmKGU9dGhpcy5nZXRCb3VuZHNab29tKG8pLHRoaXMuc2V0VmlldyhuLHMubWF4Wm9vbT9NYXRoLm1pbihlLHMubWF4Wm9vbSk6ZSkpLHtsYXRsbmc6bixib3VuZHM6byx0aW1lc3RhbXA6dC50aW1lc3RhbXB9KTtmb3IoaSBpbiB0LmNvb3JkcykibnVtYmVyIj09dHlwZW9mIHQuY29vcmRzW2ldJiYocltpXT10LmNvb3Jkc1tpXSk7dGhpcy5maXJlKCJsb2NhdGlvbmZvdW5kIixyKX19LGFkZEhhbmRsZXI6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZSYmKGU9dGhpc1t0XT1uZXcgZSh0aGlzKSx0aGlzLl9oYW5kbGVycy5wdXNoKGUpLHRoaXMub3B0aW9uc1t0XSYmZS5lbmFibGUoKSksdGhpc30scmVtb3ZlOmZ1bmN0aW9uKCl7aWYodGhpcy5faW5pdEV2ZW50cyghMCksdGhpcy5vcHRpb25zLm1heEJvdW5kcyYmdGhpcy5vZmYoIm1vdmVlbmQiLHRoaXMuX3Bhbkluc2lkZU1heEJvdW5kcyksdGhpcy5fY29udGFpbmVySWQhPT10aGlzLl9jb250YWluZXIuX2xlYWZsZXRfaWQpdGhyb3cgbmV3IEVycm9yKCJNYXAgY29udGFpbmVyIGlzIGJlaW5nIHJldXNlZCBieSBhbm90aGVyIGluc3RhbmNlIik7dHJ5e2RlbGV0ZSB0aGlzLl9jb250YWluZXIuX2xlYWZsZXRfaWQsZGVsZXRlIHRoaXMuX2NvbnRhaW5lcklkfWNhdGNoKHQpe3RoaXMuX2NvbnRhaW5lci5fbGVhZmxldF9pZD12b2lkIDAsdGhpcy5fY29udGFpbmVySWQ9dm9pZCAwfWZvcih2YXIgdCBpbiB2b2lkIDAhPT10aGlzLl9sb2NhdGlvbldhdGNoSWQmJnRoaXMuc3RvcExvY2F0ZSgpLHRoaXMuX3N0b3AoKSxUKHRoaXMuX21hcFBhbmUpLHRoaXMuX2NsZWFyQ29udHJvbFBvcyYmdGhpcy5fY2xlYXJDb250cm9sUG9zKCksdGhpcy5fcmVzaXplUmVxdWVzdCYmKHIodGhpcy5fcmVzaXplUmVxdWVzdCksdGhpcy5fcmVzaXplUmVxdWVzdD1udWxsKSx0aGlzLl9jbGVhckhhbmRsZXJzKCksdGhpcy5fbG9hZGVkJiZ0aGlzLmZpcmUoInVubG9hZCIpLHRoaXMuX2xheWVycyl0aGlzLl9sYXllcnNbdF0ucmVtb3ZlKCk7Zm9yKHQgaW4gdGhpcy5fcGFuZXMpVCh0aGlzLl9wYW5lc1t0XSk7cmV0dXJuIHRoaXMuX2xheWVycz1bXSx0aGlzLl9wYW5lcz1bXSxkZWxldGUgdGhpcy5fbWFwUGFuZSxkZWxldGUgdGhpcy5fcmVuZGVyZXIsdGhpc30sY3JlYXRlUGFuZTpmdW5jdGlvbih0LGUpe2U9UCgiZGl2IiwibGVhZmxldC1wYW5lIisodD8iIGxlYWZsZXQtIit0LnJlcGxhY2UoIlBhbmUiLCIiKSsiLXBhbmUiOiIiKSxlfHx0aGlzLl9tYXBQYW5lKTtyZXR1cm4gdCYmKHRoaXMuX3BhbmVzW3RdPWUpLGV9LGdldENlbnRlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jaGVja0lmTG9hZGVkKCksdGhpcy5fbGFzdENlbnRlciYmIXRoaXMuX21vdmVkKCk/dGhpcy5fbGFzdENlbnRlci5jbG9uZSgpOnRoaXMubGF5ZXJQb2ludFRvTGF0TG5nKHRoaXMuX2dldENlbnRlckxheWVyUG9pbnQoKSl9LGdldFpvb206ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fem9vbX0sZ2V0Qm91bmRzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5nZXRQaXhlbEJvdW5kcygpO3JldHVybiBuZXcgcyh0aGlzLnVucHJvamVjdCh0LmdldEJvdHRvbUxlZnQoKSksdGhpcy51bnByb2plY3QodC5nZXRUb3BSaWdodCgpKSl9LGdldE1pblpvb206ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwPT09dGhpcy5vcHRpb25zLm1pblpvb20/dGhpcy5fbGF5ZXJzTWluWm9vbXx8MDp0aGlzLm9wdGlvbnMubWluWm9vbX0sZ2V0TWF4Wm9vbTpmdW5jdGlvbigpe3JldHVybiB2b2lkIDA9PT10aGlzLm9wdGlvbnMubWF4Wm9vbT92b2lkIDA9PT10aGlzLl9sYXllcnNNYXhab29tPzEvMDp0aGlzLl9sYXllcnNNYXhab29tOnRoaXMub3B0aW9ucy5tYXhab29tfSxnZXRCb3VuZHNab29tOmZ1bmN0aW9uKHQsZSxpKXt0PWcodCksaT1tKGl8fFswLDBdKTt2YXIgbj10aGlzLmdldFpvb20oKXx8MCxvPXRoaXMuZ2V0TWluWm9vbSgpLHM9dGhpcy5nZXRNYXhab29tKCkscj10LmdldE5vcnRoV2VzdCgpLHQ9dC5nZXRTb3V0aEVhc3QoKSxpPXRoaXMuZ2V0U2l6ZSgpLnN1YnRyYWN0KGkpLHQ9Xyh0aGlzLnByb2plY3QodCxuKSx0aGlzLnByb2plY3QocixuKSkuZ2V0U2l6ZSgpLHI9Yi5hbnkzZD90aGlzLm9wdGlvbnMuem9vbVNuYXA6MSxhPWkueC90LngsaT1pLnkvdC55LHQ9ZT9NYXRoLm1heChhLGkpOk1hdGgubWluKGEsaSksbj10aGlzLmdldFNjYWxlWm9vbSh0LG4pO3JldHVybiByJiYobj1NYXRoLnJvdW5kKG4vKHIvMTAwKSkqKHIvMTAwKSxuPWU/TWF0aC5jZWlsKG4vcikqcjpNYXRoLmZsb29yKG4vcikqciksTWF0aC5tYXgobyxNYXRoLm1pbihzLG4pKX0sZ2V0U2l6ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zaXplJiYhdGhpcy5fc2l6ZUNoYW5nZWR8fCh0aGlzLl9zaXplPW5ldyBwKHRoaXMuX2NvbnRhaW5lci5jbGllbnRXaWR0aHx8MCx0aGlzLl9jb250YWluZXIuY2xpZW50SGVpZ2h0fHwwKSx0aGlzLl9zaXplQ2hhbmdlZD0hMSksdGhpcy5fc2l6ZS5jbG9uZSgpfSxnZXRQaXhlbEJvdW5kczpmdW5jdGlvbih0LGUpe3Q9dGhpcy5fZ2V0VG9wTGVmdFBvaW50KHQsZSk7cmV0dXJuIG5ldyBmKHQsdC5hZGQodGhpcy5nZXRTaXplKCkpKX0sZ2V0UGl4ZWxPcmlnaW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2hlY2tJZkxvYWRlZCgpLHRoaXMuX3BpeGVsT3JpZ2lufSxnZXRQaXhlbFdvcmxkQm91bmRzOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm9wdGlvbnMuY3JzLmdldFByb2plY3RlZEJvdW5kcyh2b2lkIDA9PT10P3RoaXMuZ2V0Wm9vbSgpOnQpfSxnZXRQYW5lOmZ1bmN0aW9uKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdD90aGlzLl9wYW5lc1t0XTp0fSxnZXRQYW5lczpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wYW5lc30sZ2V0Q29udGFpbmVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvbnRhaW5lcn0sZ2V0Wm9vbVNjYWxlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5vcHRpb25zLmNycztyZXR1cm4gZT12b2lkIDA9PT1lP3RoaXMuX3pvb206ZSxpLnNjYWxlKHQpL2kuc2NhbGUoZSl9LGdldFNjYWxlWm9vbTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMub3B0aW9ucy5jcnMsdD0oZT12b2lkIDA9PT1lP3RoaXMuX3pvb206ZSxpLnpvb20odCppLnNjYWxlKGUpKSk7cmV0dXJuIGlzTmFOKHQpPzEvMDp0fSxwcm9qZWN0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGU9dm9pZCAwPT09ZT90aGlzLl96b29tOmUsdGhpcy5vcHRpb25zLmNycy5sYXRMbmdUb1BvaW50KHcodCksZSl9LHVucHJvamVjdDpmdW5jdGlvbih0LGUpe3JldHVybiBlPXZvaWQgMD09PWU/dGhpcy5fem9vbTplLHRoaXMub3B0aW9ucy5jcnMucG9pbnRUb0xhdExuZyhtKHQpLGUpfSxsYXllclBvaW50VG9MYXRMbmc6ZnVuY3Rpb24odCl7dD1tKHQpLmFkZCh0aGlzLmdldFBpeGVsT3JpZ2luKCkpO3JldHVybiB0aGlzLnVucHJvamVjdCh0KX0sbGF0TG5nVG9MYXllclBvaW50OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnByb2plY3Qodyh0KSkuX3JvdW5kKCkuX3N1YnRyYWN0KHRoaXMuZ2V0UGl4ZWxPcmlnaW4oKSl9LHdyYXBMYXRMbmc6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMub3B0aW9ucy5jcnMud3JhcExhdExuZyh3KHQpKX0sd3JhcExhdExuZ0JvdW5kczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5vcHRpb25zLmNycy53cmFwTGF0TG5nQm91bmRzKGcodCkpfSxkaXN0YW5jZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLm9wdGlvbnMuY3JzLmRpc3RhbmNlKHcodCksdyhlKSl9LGNvbnRhaW5lclBvaW50VG9MYXllclBvaW50OmZ1bmN0aW9uKHQpe3JldHVybiBtKHQpLnN1YnRyYWN0KHRoaXMuX2dldE1hcFBhbmVQb3MoKSl9LGxheWVyUG9pbnRUb0NvbnRhaW5lclBvaW50OmZ1bmN0aW9uKHQpe3JldHVybiBtKHQpLmFkZCh0aGlzLl9nZXRNYXBQYW5lUG9zKCkpfSxjb250YWluZXJQb2ludFRvTGF0TG5nOmZ1bmN0aW9uKHQpe3Q9dGhpcy5jb250YWluZXJQb2ludFRvTGF5ZXJQb2ludChtKHQpKTtyZXR1cm4gdGhpcy5sYXllclBvaW50VG9MYXRMbmcodCl9LGxhdExuZ1RvQ29udGFpbmVyUG9pbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubGF5ZXJQb2ludFRvQ29udGFpbmVyUG9pbnQodGhpcy5sYXRMbmdUb0xheWVyUG9pbnQodyh0KSkpfSxtb3VzZUV2ZW50VG9Db250YWluZXJQb2ludDpmdW5jdGlvbih0KXtyZXR1cm4gRGUodCx0aGlzLl9jb250YWluZXIpfSxtb3VzZUV2ZW50VG9MYXllclBvaW50OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNvbnRhaW5lclBvaW50VG9MYXllclBvaW50KHRoaXMubW91c2VFdmVudFRvQ29udGFpbmVyUG9pbnQodCkpfSxtb3VzZUV2ZW50VG9MYXRMbmc6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubGF5ZXJQb2ludFRvTGF0TG5nKHRoaXMubW91c2VFdmVudFRvTGF5ZXJQb2ludCh0KSl9LF9pbml0Q29udGFpbmVyOmZ1bmN0aW9uKHQpe3Q9dGhpcy5fY29udGFpbmVyPV9lKHQpO2lmKCF0KXRocm93IG5ldyBFcnJvcigiTWFwIGNvbnRhaW5lciBub3QgZm91bmQuIik7aWYodC5fbGVhZmxldF9pZCl0aHJvdyBuZXcgRXJyb3IoIk1hcCBjb250YWluZXIgaXMgYWxyZWFkeSBpbml0aWFsaXplZC4iKTtTKHQsInNjcm9sbCIsdGhpcy5fb25TY3JvbGwsdGhpcyksdGhpcy5fY29udGFpbmVySWQ9aCh0KX0sX2luaXRMYXlvdXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9jb250YWluZXIsZT0odGhpcy5fZmFkZUFuaW1hdGVkPXRoaXMub3B0aW9ucy5mYWRlQW5pbWF0aW9uJiZiLmFueTNkLE0odCwibGVhZmxldC1jb250YWluZXIiKyhiLnRvdWNoPyIgbGVhZmxldC10b3VjaCI6IiIpKyhiLnJldGluYT8iIGxlYWZsZXQtcmV0aW5hIjoiIikrKGIuaWVsdDk/IiBsZWFmbGV0LW9sZGllIjoiIikrKGIuc2FmYXJpPyIgbGVhZmxldC1zYWZhcmkiOiIiKSsodGhpcy5fZmFkZUFuaW1hdGVkPyIgbGVhZmxldC1mYWRlLWFuaW0iOiIiKSkscGUodCwicG9zaXRpb24iKSk7ImFic29sdXRlIiE9PWUmJiJyZWxhdGl2ZSIhPT1lJiYiZml4ZWQiIT09ZSYmInN0aWNreSIhPT1lJiYodC5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiKSx0aGlzLl9pbml0UGFuZXMoKSx0aGlzLl9pbml0Q29udHJvbFBvcyYmdGhpcy5faW5pdENvbnRyb2xQb3MoKX0sX2luaXRQYW5lczpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3BhbmVzPXt9O3RoaXMuX3BhbmVSZW5kZXJlcnM9e30sdGhpcy5fbWFwUGFuZT10aGlzLmNyZWF0ZVBhbmUoIm1hcFBhbmUiLHRoaXMuX2NvbnRhaW5lciksWih0aGlzLl9tYXBQYW5lLG5ldyBwKDAsMCkpLHRoaXMuY3JlYXRlUGFuZSgidGlsZVBhbmUiKSx0aGlzLmNyZWF0ZVBhbmUoIm92ZXJsYXlQYW5lIiksdGhpcy5jcmVhdGVQYW5lKCJzaGFkb3dQYW5lIiksdGhpcy5jcmVhdGVQYW5lKCJtYXJrZXJQYW5lIiksdGhpcy5jcmVhdGVQYW5lKCJ0b29sdGlwUGFuZSIpLHRoaXMuY3JlYXRlUGFuZSgicG9wdXBQYW5lIiksdGhpcy5vcHRpb25zLm1hcmtlclpvb21BbmltYXRpb258fChNKHQubWFya2VyUGFuZSwibGVhZmxldC16b29tLWhpZGUiKSxNKHQuc2hhZG93UGFuZSwibGVhZmxldC16b29tLWhpZGUiKSl9LF9yZXNldFZpZXc6ZnVuY3Rpb24odCxlLGkpe1oodGhpcy5fbWFwUGFuZSxuZXcgcCgwLDApKTt2YXIgbj0hdGhpcy5fbG9hZGVkLG89KHRoaXMuX2xvYWRlZD0hMCxlPXRoaXMuX2xpbWl0Wm9vbShlKSx0aGlzLmZpcmUoInZpZXdwcmVyZXNldCIpLHRoaXMuX3pvb20hPT1lKTt0aGlzLl9tb3ZlU3RhcnQobyxpKS5fbW92ZSh0LGUpLl9tb3ZlRW5kKG8pLHRoaXMuZmlyZSgidmlld3Jlc2V0IiksbiYmdGhpcy5maXJlKCJsb2FkIil9LF9tb3ZlU3RhcnQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCYmdGhpcy5maXJlKCJ6b29tc3RhcnQiKSxlfHx0aGlzLmZpcmUoIm1vdmVzdGFydCIpLHRoaXN9LF9tb3ZlOmZ1bmN0aW9uKHQsZSxpLG4pe3ZvaWQgMD09PWUmJihlPXRoaXMuX3pvb20pO3ZhciBvPXRoaXMuX3pvb20hPT1lO3JldHVybiB0aGlzLl96b29tPWUsdGhpcy5fbGFzdENlbnRlcj10LHRoaXMuX3BpeGVsT3JpZ2luPXRoaXMuX2dldE5ld1BpeGVsT3JpZ2luKHQpLG4/aSYmaS5waW5jaCYmdGhpcy5maXJlKCJ6b29tIixpKTooKG98fGkmJmkucGluY2gpJiZ0aGlzLmZpcmUoInpvb20iLGkpLHRoaXMuZmlyZSgibW92ZSIsaSkpLHRoaXN9LF9tb3ZlRW5kOmZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0aGlzLmZpcmUoInpvb21lbmQiKSx0aGlzLmZpcmUoIm1vdmVlbmQiKX0sX3N0b3A6ZnVuY3Rpb24oKXtyZXR1cm4gcih0aGlzLl9mbHlUb0ZyYW1lKSx0aGlzLl9wYW5BbmltJiZ0aGlzLl9wYW5BbmltLnN0b3AoKSx0aGlzfSxfcmF3UGFuQnk6ZnVuY3Rpb24odCl7Wih0aGlzLl9tYXBQYW5lLHRoaXMuX2dldE1hcFBhbmVQb3MoKS5zdWJ0cmFjdCh0KSl9LF9nZXRab29tU3BhbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldE1heFpvb20oKS10aGlzLmdldE1pblpvb20oKX0sX3Bhbkluc2lkZU1heEJvdW5kczpmdW5jdGlvbigpe3RoaXMuX2VuZm9yY2luZ0JvdW5kc3x8dGhpcy5wYW5JbnNpZGVCb3VuZHModGhpcy5vcHRpb25zLm1heEJvdW5kcyl9LF9jaGVja0lmTG9hZGVkOmZ1bmN0aW9uKCl7aWYoIXRoaXMuX2xvYWRlZCl0aHJvdyBuZXcgRXJyb3IoIlNldCBtYXAgY2VudGVyIGFuZCB6b29tIGZpcnN0LiIpfSxfaW5pdEV2ZW50czpmdW5jdGlvbih0KXt0aGlzLl90YXJnZXRzPXt9O3ZhciBlPXQ/azpTO2UoKHRoaXMuX3RhcmdldHNbaCh0aGlzLl9jb250YWluZXIpXT10aGlzKS5fY29udGFpbmVyLCJjbGljayBkYmxjbGljayBtb3VzZWRvd24gbW91c2V1cCBtb3VzZW92ZXIgbW91c2VvdXQgbW91c2Vtb3ZlIGNvbnRleHRtZW51IGtleXByZXNzIGtleWRvd24ga2V5dXAiLHRoaXMuX2hhbmRsZURPTUV2ZW50LHRoaXMpLHRoaXMub3B0aW9ucy50cmFja1Jlc2l6ZSYmZSh3aW5kb3csInJlc2l6ZSIsdGhpcy5fb25SZXNpemUsdGhpcyksYi5hbnkzZCYmdGhpcy5vcHRpb25zLnRyYW5zZm9ybTNETGltaXQmJih0P3RoaXMub2ZmOnRoaXMub24pLmNhbGwodGhpcywibW92ZWVuZCIsdGhpcy5fb25Nb3ZlRW5kKX0sX29uUmVzaXplOmZ1bmN0aW9uKCl7cih0aGlzLl9yZXNpemVSZXF1ZXN0KSx0aGlzLl9yZXNpemVSZXF1ZXN0PXgoZnVuY3Rpb24oKXt0aGlzLmludmFsaWRhdGVTaXplKHtkZWJvdW5jZU1vdmVlbmQ6ITB9KX0sdGhpcyl9LF9vblNjcm9sbDpmdW5jdGlvbigpe3RoaXMuX2NvbnRhaW5lci5zY3JvbGxUb3A9MCx0aGlzLl9jb250YWluZXIuc2Nyb2xsTGVmdD0wfSxfb25Nb3ZlRW5kOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fZ2V0TWFwUGFuZVBvcygpO01hdGgubWF4KE1hdGguYWJzKHQueCksTWF0aC5hYnModC55KSk+PXRoaXMub3B0aW9ucy50cmFuc2Zvcm0zRExpbWl0JiZ0aGlzLl9yZXNldFZpZXcodGhpcy5nZXRDZW50ZXIoKSx0aGlzLmdldFpvb20oKSl9LF9maW5kRXZlbnRUYXJnZXRzOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpLG49W10sbz0ibW91c2VvdXQiPT09ZXx8Im1vdXNlb3ZlciI9PT1lLHM9dC50YXJnZXR8fHQuc3JjRWxlbWVudCxyPSExO3M7KXtpZigoaT10aGlzLl90YXJnZXRzW2gocyldKSYmKCJjbGljayI9PT1lfHwicHJlY2xpY2siPT09ZSkmJnRoaXMuX2RyYWdnYWJsZU1vdmVkKGkpKXtyPSEwO2JyZWFrfWlmKGkmJmkubGlzdGVucyhlLCEwKSl7aWYobyYmIVdlKHMsdCkpYnJlYWs7aWYobi5wdXNoKGkpLG8pYnJlYWt9aWYocz09PXRoaXMuX2NvbnRhaW5lcilicmVhaztzPXMucGFyZW50Tm9kZX1yZXR1cm4gbj1uLmxlbmd0aHx8cnx8b3x8IXRoaXMubGlzdGVucyhlLCEwKT9uOlt0aGlzXX0sX2lzQ2xpY2tEaXNhYmxlZDpmdW5jdGlvbih0KXtmb3IoO3QmJnQhPT10aGlzLl9jb250YWluZXI7KXtpZih0Ll9sZWFmbGV0X2Rpc2FibGVfY2xpY2spcmV0dXJuITA7dD10LnBhcmVudE5vZGV9fSxfaGFuZGxlRE9NRXZlbnQ6ZnVuY3Rpb24odCl7dmFyIGUsaT10LnRhcmdldHx8dC5zcmNFbGVtZW50OyF0aGlzLl9sb2FkZWR8fGkuX2xlYWZsZXRfZGlzYWJsZV9ldmVudHN8fCJjbGljayI9PT10LnR5cGUmJnRoaXMuX2lzQ2xpY2tEaXNhYmxlZChpKXx8KCJtb3VzZWRvd24iPT09KGU9dC50eXBlKSYmTWUoaSksdGhpcy5fZmlyZURPTUV2ZW50KHQsZSkpfSxfbW91c2VFdmVudHM6WyJjbGljayIsImRibGNsaWNrIiwibW91c2VvdmVyIiwibW91c2VvdXQiLCJjb250ZXh0bWVudSJdLF9maXJlRE9NRXZlbnQ6ZnVuY3Rpb24odCxlLGkpeyJjbGljayI9PT10LnR5cGUmJigoYT1sKHt9LHQpKS50eXBlPSJwcmVjbGljayIsdGhpcy5fZmlyZURPTUV2ZW50KGEsYS50eXBlLGkpKTt2YXIgbj10aGlzLl9maW5kRXZlbnRUYXJnZXRzKHQsZSk7aWYoaSl7Zm9yKHZhciBvPVtdLHM9MDtzPGkubGVuZ3RoO3MrKylpW3NdLmxpc3RlbnMoZSwhMCkmJm8ucHVzaChpW3NdKTtuPW8uY29uY2F0KG4pfWlmKG4ubGVuZ3RoKXsiY29udGV4dG1lbnUiPT09ZSYmTyh0KTt2YXIgcixhPW5bMF0saD17b3JpZ2luYWxFdmVudDp0fTtmb3IoImtleXByZXNzIiE9PXQudHlwZSYmImtleWRvd24iIT09dC50eXBlJiYia2V5dXAiIT09dC50eXBlJiYocj1hLmdldExhdExuZyYmKCFhLl9yYWRpdXN8fGEuX3JhZGl1czw9MTApLGguY29udGFpbmVyUG9pbnQ9cj90aGlzLmxhdExuZ1RvQ29udGFpbmVyUG9pbnQoYS5nZXRMYXRMbmcoKSk6dGhpcy5tb3VzZUV2ZW50VG9Db250YWluZXJQb2ludCh0KSxoLmxheWVyUG9pbnQ9dGhpcy5jb250YWluZXJQb2ludFRvTGF5ZXJQb2ludChoLmNvbnRhaW5lclBvaW50KSxoLmxhdGxuZz1yP2EuZ2V0TGF0TG5nKCk6dGhpcy5sYXllclBvaW50VG9MYXRMbmcoaC5sYXllclBvaW50KSkscz0wO3M8bi5sZW5ndGg7cysrKWlmKG5bc10uZmlyZShlLGgsITApLGgub3JpZ2luYWxFdmVudC5fc3RvcHBlZHx8ITE9PT1uW3NdLm9wdGlvbnMuYnViYmxpbmdNb3VzZUV2ZW50cyYmLTEhPT1HKHRoaXMuX21vdXNlRXZlbnRzLGUpKXJldHVybn19LF9kcmFnZ2FibGVNb3ZlZDpmdW5jdGlvbih0KXtyZXR1cm4odD10LmRyYWdnaW5nJiZ0LmRyYWdnaW5nLmVuYWJsZWQoKT90OnRoaXMpLmRyYWdnaW5nJiZ0LmRyYWdnaW5nLm1vdmVkKCl8fHRoaXMuYm94Wm9vbSYmdGhpcy5ib3hab29tLm1vdmVkKCl9LF9jbGVhckhhbmRsZXJzOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PTAsZT10aGlzLl9oYW5kbGVycy5sZW5ndGg7dDxlO3QrKyl0aGlzLl9oYW5kbGVyc1t0XS5kaXNhYmxlKCl9LHdoZW5SZWFkeTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9sb2FkZWQ/dC5jYWxsKGV8fHRoaXMse3RhcmdldDp0aGlzfSk6dGhpcy5vbigibG9hZCIsdCxlKSx0aGlzfSxfZ2V0TWFwUGFuZVBvczpmdW5jdGlvbigpe3JldHVybiBQZSh0aGlzLl9tYXBQYW5lKXx8bmV3IHAoMCwwKX0sX21vdmVkOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fZ2V0TWFwUGFuZVBvcygpO3JldHVybiB0JiYhdC5lcXVhbHMoWzAsMF0pfSxfZ2V0VG9wTGVmdFBvaW50OmZ1bmN0aW9uKHQsZSl7cmV0dXJuKHQmJnZvaWQgMCE9PWU/dGhpcy5fZ2V0TmV3UGl4ZWxPcmlnaW4odCxlKTp0aGlzLmdldFBpeGVsT3JpZ2luKCkpLnN1YnRyYWN0KHRoaXMuX2dldE1hcFBhbmVQb3MoKSl9LF9nZXROZXdQaXhlbE9yaWdpbjpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuZ2V0U2l6ZSgpLl9kaXZpZGVCeSgyKTtyZXR1cm4gdGhpcy5wcm9qZWN0KHQsZSkuX3N1YnRyYWN0KGkpLl9hZGQodGhpcy5fZ2V0TWFwUGFuZVBvcygpKS5fcm91bmQoKX0sX2xhdExuZ1RvTmV3TGF5ZXJQb2ludDpmdW5jdGlvbih0LGUsaSl7aT10aGlzLl9nZXROZXdQaXhlbE9yaWdpbihpLGUpO3JldHVybiB0aGlzLnByb2plY3QodCxlKS5fc3VidHJhY3QoaSl9LF9sYXRMbmdCb3VuZHNUb05ld0xheWVyQm91bmRzOmZ1bmN0aW9uKHQsZSxpKXtpPXRoaXMuX2dldE5ld1BpeGVsT3JpZ2luKGksZSk7cmV0dXJuIF8oW3RoaXMucHJvamVjdCh0LmdldFNvdXRoV2VzdCgpLGUpLl9zdWJ0cmFjdChpKSx0aGlzLnByb2plY3QodC5nZXROb3J0aFdlc3QoKSxlKS5fc3VidHJhY3QoaSksdGhpcy5wcm9qZWN0KHQuZ2V0U291dGhFYXN0KCksZSkuX3N1YnRyYWN0KGkpLHRoaXMucHJvamVjdCh0LmdldE5vcnRoRWFzdCgpLGUpLl9zdWJ0cmFjdChpKV0pfSxfZ2V0Q2VudGVyTGF5ZXJQb2ludDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRhaW5lclBvaW50VG9MYXllclBvaW50KHRoaXMuZ2V0U2l6ZSgpLl9kaXZpZGVCeSgyKSl9LF9nZXRDZW50ZXJPZmZzZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubGF0TG5nVG9MYXllclBvaW50KHQpLnN1YnRyYWN0KHRoaXMuX2dldENlbnRlckxheWVyUG9pbnQoKSl9LF9saW1pdENlbnRlcjpmdW5jdGlvbih0LGUsaSl7dmFyIG4sbztyZXR1cm4haXx8KG49dGhpcy5wcm9qZWN0KHQsZSksbz10aGlzLmdldFNpemUoKS5kaXZpZGVCeSgyKSxvPW5ldyBmKG4uc3VidHJhY3Qobyksbi5hZGQobykpLG89dGhpcy5fZ2V0Qm91bmRzT2Zmc2V0KG8saSxlKSxNYXRoLmFicyhvLngpPD0xJiZNYXRoLmFicyhvLnkpPD0xKT90OnRoaXMudW5wcm9qZWN0KG4uYWRkKG8pLGUpfSxfbGltaXRPZmZzZXQ6ZnVuY3Rpb24odCxlKXt2YXIgaTtyZXR1cm4gZT8oaT1uZXcgZigoaT10aGlzLmdldFBpeGVsQm91bmRzKCkpLm1pbi5hZGQodCksaS5tYXguYWRkKHQpKSx0LmFkZCh0aGlzLl9nZXRCb3VuZHNPZmZzZXQoaSxlKSkpOnR9LF9nZXRCb3VuZHNPZmZzZXQ6ZnVuY3Rpb24odCxlLGkpe2U9Xyh0aGlzLnByb2plY3QoZS5nZXROb3J0aEVhc3QoKSxpKSx0aGlzLnByb2plY3QoZS5nZXRTb3V0aFdlc3QoKSxpKSksaT1lLm1pbi5zdWJ0cmFjdCh0Lm1pbiksZT1lLm1heC5zdWJ0cmFjdCh0Lm1heCk7cmV0dXJuIG5ldyBwKHRoaXMuX3JlYm91bmQoaS54LC1lLngpLHRoaXMuX3JlYm91bmQoaS55LC1lLnkpKX0sX3JlYm91bmQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gMDx0K2U/TWF0aC5yb3VuZCh0LWUpLzI6TWF0aC5tYXgoMCxNYXRoLmNlaWwodCkpLU1hdGgubWF4KDAsTWF0aC5mbG9vcihlKSl9LF9saW1pdFpvb206ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nZXRNaW5ab29tKCksaT10aGlzLmdldE1heFpvb20oKSxuPWIuYW55M2Q/dGhpcy5vcHRpb25zLnpvb21TbmFwOjE7cmV0dXJuIG4mJih0PU1hdGgucm91bmQodC9uKSpuKSxNYXRoLm1heChlLE1hdGgubWluKGksdCkpfSxfb25QYW5UcmFuc2l0aW9uU3RlcDpmdW5jdGlvbigpe3RoaXMuZmlyZSgibW92ZSIpfSxfb25QYW5UcmFuc2l0aW9uRW5kOmZ1bmN0aW9uKCl7eih0aGlzLl9tYXBQYW5lLCJsZWFmbGV0LXBhbi1hbmltIiksdGhpcy5maXJlKCJtb3ZlZW5kIil9LF90cnlBbmltYXRlZFBhbjpmdW5jdGlvbih0LGUpe3Q9dGhpcy5fZ2V0Q2VudGVyT2Zmc2V0KHQpLl90cnVuYygpO3JldHVybiEoITAhPT0oZSYmZS5hbmltYXRlKSYmIXRoaXMuZ2V0U2l6ZSgpLmNvbnRhaW5zKHQpKSYmKHRoaXMucGFuQnkodCxlKSwhMCl9LF9jcmVhdGVBbmltUHJveHk6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9wcm94eT1QKCJkaXYiLCJsZWFmbGV0LXByb3h5IGxlYWZsZXQtem9vbS1hbmltYXRlZCIpO3RoaXMuX3BhbmVzLm1hcFBhbmUuYXBwZW5kQ2hpbGQodCksdGhpcy5vbigiem9vbWFuaW0iLGZ1bmN0aW9uKHQpe3ZhciBlPXVlLGk9dGhpcy5fcHJveHkuc3R5bGVbZV07YmUodGhpcy5fcHJveHksdGhpcy5wcm9qZWN0KHQuY2VudGVyLHQuem9vbSksdGhpcy5nZXRab29tU2NhbGUodC56b29tLDEpKSxpPT09dGhpcy5fcHJveHkuc3R5bGVbZV0mJnRoaXMuX2FuaW1hdGluZ1pvb20mJnRoaXMuX29uWm9vbVRyYW5zaXRpb25FbmQoKX0sdGhpcyksdGhpcy5vbigibG9hZCBtb3ZlZW5kIix0aGlzLl9hbmltTW92ZUVuZCx0aGlzKSx0aGlzLl9vbigidW5sb2FkIix0aGlzLl9kZXN0cm95QW5pbVByb3h5LHRoaXMpfSxfZGVzdHJveUFuaW1Qcm94eTpmdW5jdGlvbigpe1QodGhpcy5fcHJveHkpLHRoaXMub2ZmKCJsb2FkIG1vdmVlbmQiLHRoaXMuX2FuaW1Nb3ZlRW5kLHRoaXMpLGRlbGV0ZSB0aGlzLl9wcm94eX0sX2FuaW1Nb3ZlRW5kOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5nZXRDZW50ZXIoKSxlPXRoaXMuZ2V0Wm9vbSgpO2JlKHRoaXMuX3Byb3h5LHRoaXMucHJvamVjdCh0LGUpLHRoaXMuZ2V0Wm9vbVNjYWxlKGUsMSkpfSxfY2F0Y2hUcmFuc2l0aW9uRW5kOmZ1bmN0aW9uKHQpe3RoaXMuX2FuaW1hdGluZ1pvb20mJjA8PXQucHJvcGVydHlOYW1lLmluZGV4T2YoInRyYW5zZm9ybSIpJiZ0aGlzLl9vblpvb21UcmFuc2l0aW9uRW5kKCl9LF9ub3RoaW5nVG9BbmltYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuX2NvbnRhaW5lci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJsZWFmbGV0LXpvb20tYW5pbWF0ZWQiKS5sZW5ndGh9LF90cnlBbmltYXRlZFpvb206ZnVuY3Rpb24odCxlLGkpe2lmKCF0aGlzLl9hbmltYXRpbmdab29tKXtpZihpPWl8fHt9LCF0aGlzLl96b29tQW5pbWF0ZWR8fCExPT09aS5hbmltYXRlfHx0aGlzLl9ub3RoaW5nVG9BbmltYXRlKCl8fE1hdGguYWJzKGUtdGhpcy5fem9vbSk+dGhpcy5vcHRpb25zLnpvb21BbmltYXRpb25UaHJlc2hvbGQpcmV0dXJuITE7dmFyIG49dGhpcy5nZXRab29tU2NhbGUoZSksbj10aGlzLl9nZXRDZW50ZXJPZmZzZXQodCkuX2RpdmlkZUJ5KDEtMS9uKTtpZighMCE9PWkuYW5pbWF0ZSYmIXRoaXMuZ2V0U2l6ZSgpLmNvbnRhaW5zKG4pKXJldHVybiExO3goZnVuY3Rpb24oKXt0aGlzLl9tb3ZlU3RhcnQoITAsaS5ub01vdmVTdGFydHx8ITEpLl9hbmltYXRlWm9vbSh0LGUsITApfSx0aGlzKX1yZXR1cm4hMH0sX2FuaW1hdGVab29tOmZ1bmN0aW9uKHQsZSxpLG4pe3RoaXMuX21hcFBhbmUmJihpJiYodGhpcy5fYW5pbWF0aW5nWm9vbT0hMCx0aGlzLl9hbmltYXRlVG9DZW50ZXI9dCx0aGlzLl9hbmltYXRlVG9ab29tPWUsTSh0aGlzLl9tYXBQYW5lLCJsZWFmbGV0LXpvb20tYW5pbSIpKSx0aGlzLmZpcmUoInpvb21hbmltIix7Y2VudGVyOnQsem9vbTplLG5vVXBkYXRlOm59KSx0aGlzLl90ZW1wRmlyZVpvb21FdmVudHx8KHRoaXMuX3RlbXBGaXJlWm9vbUV2ZW50PXRoaXMuX3pvb20hPT10aGlzLl9hbmltYXRlVG9ab29tKSx0aGlzLl9tb3ZlKHRoaXMuX2FuaW1hdGVUb0NlbnRlcix0aGlzLl9hbmltYXRlVG9ab29tLHZvaWQgMCwhMCksc2V0VGltZW91dChhKHRoaXMuX29uWm9vbVRyYW5zaXRpb25FbmQsdGhpcyksMjUwKSl9LF9vblpvb21UcmFuc2l0aW9uRW5kOmZ1bmN0aW9uKCl7dGhpcy5fYW5pbWF0aW5nWm9vbSYmKHRoaXMuX21hcFBhbmUmJnoodGhpcy5fbWFwUGFuZSwibGVhZmxldC16b29tLWFuaW0iKSx0aGlzLl9hbmltYXRpbmdab29tPSExLHRoaXMuX21vdmUodGhpcy5fYW5pbWF0ZVRvQ2VudGVyLHRoaXMuX2FuaW1hdGVUb1pvb20sdm9pZCAwLCEwKSx0aGlzLl90ZW1wRmlyZVpvb21FdmVudCYmdGhpcy5maXJlKCJ6b29tIiksZGVsZXRlIHRoaXMuX3RlbXBGaXJlWm9vbUV2ZW50LHRoaXMuZmlyZSgibW92ZSIpLHRoaXMuX21vdmVFbmQoITApKX19KTtmdW5jdGlvbiBVZSh0KXtyZXR1cm4gbmV3IEIodCl9dmFyIEI9ZXQuZXh0ZW5kKHtvcHRpb25zOntwb3NpdGlvbjoidG9wcmlnaHQifSxpbml0aWFsaXplOmZ1bmN0aW9uKHQpe2ModGhpcyx0KX0sZ2V0UG9zaXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcHRpb25zLnBvc2l0aW9ufSxzZXRQb3NpdGlvbjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9tYXA7cmV0dXJuIGUmJmUucmVtb3ZlQ29udHJvbCh0aGlzKSx0aGlzLm9wdGlvbnMucG9zaXRpb249dCxlJiZlLmFkZENvbnRyb2wodGhpcyksdGhpc30sZ2V0Q29udGFpbmVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvbnRhaW5lcn0sYWRkVG86ZnVuY3Rpb24odCl7dGhpcy5yZW1vdmUoKSx0aGlzLl9tYXA9dDt2YXIgZT10aGlzLl9jb250YWluZXI9dGhpcy5vbkFkZCh0KSxpPXRoaXMuZ2V0UG9zaXRpb24oKSx0PXQuX2NvbnRyb2xDb3JuZXJzW2ldO3JldHVybiBNKGUsImxlYWZsZXQtY29udHJvbCIpLC0xIT09aS5pbmRleE9mKCJib3R0b20iKT90Lmluc2VydEJlZm9yZShlLHQuZmlyc3RDaGlsZCk6dC5hcHBlbmRDaGlsZChlKSx0aGlzLl9tYXAub24oInVubG9hZCIsdGhpcy5yZW1vdmUsdGhpcyksdGhpc30scmVtb3ZlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21hcCYmKFQodGhpcy5fY29udGFpbmVyKSx0aGlzLm9uUmVtb3ZlJiZ0aGlzLm9uUmVtb3ZlKHRoaXMuX21hcCksdGhpcy5fbWFwLm9mZigidW5sb2FkIix0aGlzLnJlbW92ZSx0aGlzKSx0aGlzLl9tYXA9bnVsbCksdGhpc30sX3JlZm9jdXNPbk1hcDpmdW5jdGlvbih0KXt0aGlzLl9tYXAmJnQmJjA8dC5zY3JlZW5YJiYwPHQuc2NyZWVuWSYmdGhpcy5fbWFwLmdldENvbnRhaW5lcigpLmZvY3VzKCl9fSksVmU9KEEuaW5jbHVkZSh7YWRkQ29udHJvbDpmdW5jdGlvbih0KXtyZXR1cm4gdC5hZGRUbyh0aGlzKSx0aGlzfSxyZW1vdmVDb250cm9sOmZ1bmN0aW9uKHQpe3JldHVybiB0LnJlbW92ZSgpLHRoaXN9LF9pbml0Q29udHJvbFBvczpmdW5jdGlvbigpe3ZhciBpPXRoaXMuX2NvbnRyb2xDb3JuZXJzPXt9LG49ImxlYWZsZXQtIixvPXRoaXMuX2NvbnRyb2xDb250YWluZXI9UCgiZGl2IixuKyJjb250cm9sLWNvbnRhaW5lciIsdGhpcy5fY29udGFpbmVyKTtmdW5jdGlvbiB0KHQsZSl7aVt0K2VdPVAoImRpdiIsbit0KyIgIituK2Usbyl9dCgidG9wIiwibGVmdCIpLHQoInRvcCIsInJpZ2h0IiksdCgiYm90dG9tIiwibGVmdCIpLHQoImJvdHRvbSIsInJpZ2h0Iil9LF9jbGVhckNvbnRyb2xQb3M6ZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gdGhpcy5fY29udHJvbENvcm5lcnMpVCh0aGlzLl9jb250cm9sQ29ybmVyc1t0XSk7VCh0aGlzLl9jb250cm9sQ29udGFpbmVyKSxkZWxldGUgdGhpcy5fY29udHJvbENvcm5lcnMsZGVsZXRlIHRoaXMuX2NvbnRyb2xDb250YWluZXJ9fSksQi5leHRlbmQoe29wdGlvbnM6e2NvbGxhcHNlZDohMCxwb3NpdGlvbjoidG9wcmlnaHQiLGF1dG9aSW5kZXg6ITAsaGlkZVNpbmdsZUJhc2U6ITEsc29ydExheWVyczohMSxzb3J0RnVuY3Rpb246ZnVuY3Rpb24odCxlLGksbil7cmV0dXJuIGk8bj8tMTpuPGk/MTowfX0saW5pdGlhbGl6ZTpmdW5jdGlvbih0LGUsaSl7Zm9yKHZhciBuIGluIGModGhpcyxpKSx0aGlzLl9sYXllckNvbnRyb2xJbnB1dHM9W10sdGhpcy5fbGF5ZXJzPVtdLHRoaXMuX2xhc3RaSW5kZXg9MCx0aGlzLl9oYW5kbGluZ0NsaWNrPSExLHRoaXMuX3ByZXZlbnRDbGljaz0hMSx0KXRoaXMuX2FkZExheWVyKHRbbl0sbik7Zm9yKG4gaW4gZSl0aGlzLl9hZGRMYXllcihlW25dLG4sITApfSxvbkFkZDpmdW5jdGlvbih0KXt0aGlzLl9pbml0TGF5b3V0KCksdGhpcy5fdXBkYXRlKCksKHRoaXMuX21hcD10KS5vbigiem9vbWVuZCIsdGhpcy5fY2hlY2tEaXNhYmxlZExheWVycyx0aGlzKTtmb3IodmFyIGU9MDtlPHRoaXMuX2xheWVycy5sZW5ndGg7ZSsrKXRoaXMuX2xheWVyc1tlXS5sYXllci5vbigiYWRkIHJlbW92ZSIsdGhpcy5fb25MYXllckNoYW5nZSx0aGlzKTtyZXR1cm4gdGhpcy5fY29udGFpbmVyfSxhZGRUbzpmdW5jdGlvbih0KXtyZXR1cm4gQi5wcm90b3R5cGUuYWRkVG8uY2FsbCh0aGlzLHQpLHRoaXMuX2V4cGFuZElmTm90Q29sbGFwc2VkKCl9LG9uUmVtb3ZlOmZ1bmN0aW9uKCl7dGhpcy5fbWFwLm9mZigiem9vbWVuZCIsdGhpcy5fY2hlY2tEaXNhYmxlZExheWVycyx0aGlzKTtmb3IodmFyIHQ9MDt0PHRoaXMuX2xheWVycy5sZW5ndGg7dCsrKXRoaXMuX2xheWVyc1t0XS5sYXllci5vZmYoImFkZCByZW1vdmUiLHRoaXMuX29uTGF5ZXJDaGFuZ2UsdGhpcyl9LGFkZEJhc2VMYXllcjpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9hZGRMYXllcih0LGUpLHRoaXMuX21hcD90aGlzLl91cGRhdGUoKTp0aGlzfSxhZGRPdmVybGF5OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX2FkZExheWVyKHQsZSwhMCksdGhpcy5fbWFwP3RoaXMuX3VwZGF0ZSgpOnRoaXN9LHJlbW92ZUxheWVyOmZ1bmN0aW9uKHQpe3Qub2ZmKCJhZGQgcmVtb3ZlIix0aGlzLl9vbkxheWVyQ2hhbmdlLHRoaXMpO3Q9dGhpcy5fZ2V0TGF5ZXIoaCh0KSk7cmV0dXJuIHQmJnRoaXMuX2xheWVycy5zcGxpY2UodGhpcy5fbGF5ZXJzLmluZGV4T2YodCksMSksdGhpcy5fbWFwP3RoaXMuX3VwZGF0ZSgpOnRoaXN9LGV4cGFuZDpmdW5jdGlvbigpe00odGhpcy5fY29udGFpbmVyLCJsZWFmbGV0LWNvbnRyb2wtbGF5ZXJzLWV4cGFuZGVkIiksdGhpcy5fc2VjdGlvbi5zdHlsZS5oZWlnaHQ9bnVsbDt2YXIgdD10aGlzLl9tYXAuZ2V0U2l6ZSgpLnktKHRoaXMuX2NvbnRhaW5lci5vZmZzZXRUb3ArNTApO3JldHVybiB0PHRoaXMuX3NlY3Rpb24uY2xpZW50SGVpZ2h0PyhNKHRoaXMuX3NlY3Rpb24sImxlYWZsZXQtY29udHJvbC1sYXllcnMtc2Nyb2xsYmFyIiksdGhpcy5fc2VjdGlvbi5zdHlsZS5oZWlnaHQ9dCsicHgiKTp6KHRoaXMuX3NlY3Rpb24sImxlYWZsZXQtY29udHJvbC1sYXllcnMtc2Nyb2xsYmFyIiksdGhpcy5fY2hlY2tEaXNhYmxlZExheWVycygpLHRoaXN9LGNvbGxhcHNlOmZ1bmN0aW9uKCl7cmV0dXJuIHoodGhpcy5fY29udGFpbmVyLCJsZWFmbGV0LWNvbnRyb2wtbGF5ZXJzLWV4cGFuZGVkIiksdGhpc30sX2luaXRMYXlvdXQ6ZnVuY3Rpb24oKXt2YXIgdD0ibGVhZmxldC1jb250cm9sLWxheWVycyIsZT10aGlzLl9jb250YWluZXI9UCgiZGl2Iix0KSxpPXRoaXMub3B0aW9ucy5jb2xsYXBzZWQsbj0oZS5zZXRBdHRyaWJ1dGUoImFyaWEtaGFzcG9wdXAiLCEwKSxJZShlKSxCZShlKSx0aGlzLl9zZWN0aW9uPVAoInNlY3Rpb24iLHQrIi1saXN0IikpLG89KGkmJih0aGlzLl9tYXAub24oImNsaWNrIix0aGlzLmNvbGxhcHNlLHRoaXMpLFMoZSx7bW91c2VlbnRlcjp0aGlzLl9leHBhbmRTYWZlbHksbW91c2VsZWF2ZTp0aGlzLmNvbGxhcHNlfSx0aGlzKSksdGhpcy5fbGF5ZXJzTGluaz1QKCJhIix0KyItdG9nZ2xlIixlKSk7by5ocmVmPSIjIixvLnRpdGxlPSJMYXllcnMiLG8uc2V0QXR0cmlidXRlKCJyb2xlIiwiYnV0dG9uIiksUyhvLHtrZXlkb3duOmZ1bmN0aW9uKHQpezEzPT09dC5rZXlDb2RlJiZ0aGlzLl9leHBhbmRTYWZlbHkoKX0sY2xpY2s6ZnVuY3Rpb24odCl7Tyh0KSx0aGlzLl9leHBhbmRTYWZlbHkoKX19LHRoaXMpLGl8fHRoaXMuZXhwYW5kKCksdGhpcy5fYmFzZUxheWVyc0xpc3Q9UCgiZGl2Iix0KyItYmFzZSIsbiksdGhpcy5fc2VwYXJhdG9yPVAoImRpdiIsdCsiLXNlcGFyYXRvciIsbiksdGhpcy5fb3ZlcmxheXNMaXN0PVAoImRpdiIsdCsiLW92ZXJsYXlzIixuKSxlLmFwcGVuZENoaWxkKG4pfSxfZ2V0TGF5ZXI6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTA7ZTx0aGlzLl9sYXllcnMubGVuZ3RoO2UrKylpZih0aGlzLl9sYXllcnNbZV0mJmgodGhpcy5fbGF5ZXJzW2VdLmxheWVyKT09PXQpcmV0dXJuIHRoaXMuX2xheWVyc1tlXX0sX2FkZExheWVyOmZ1bmN0aW9uKHQsZSxpKXt0aGlzLl9tYXAmJnQub24oImFkZCByZW1vdmUiLHRoaXMuX29uTGF5ZXJDaGFuZ2UsdGhpcyksdGhpcy5fbGF5ZXJzLnB1c2goe2xheWVyOnQsbmFtZTplLG92ZXJsYXk6aX0pLHRoaXMub3B0aW9ucy5zb3J0TGF5ZXJzJiZ0aGlzLl9sYXllcnMuc29ydChhKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMub3B0aW9ucy5zb3J0RnVuY3Rpb24odC5sYXllcixlLmxheWVyLHQubmFtZSxlLm5hbWUpfSx0aGlzKSksdGhpcy5vcHRpb25zLmF1dG9aSW5kZXgmJnQuc2V0WkluZGV4JiYodGhpcy5fbGFzdFpJbmRleCsrLHQuc2V0WkluZGV4KHRoaXMuX2xhc3RaSW5kZXgpKSx0aGlzLl9leHBhbmRJZk5vdENvbGxhcHNlZCgpfSxfdXBkYXRlOmZ1bmN0aW9uKCl7aWYodGhpcy5fY29udGFpbmVyKXttZSh0aGlzLl9iYXNlTGF5ZXJzTGlzdCksbWUodGhpcy5fb3ZlcmxheXNMaXN0KSx0aGlzLl9sYXllckNvbnRyb2xJbnB1dHM9W107Zm9yKHZhciB0LGUsaSxuPTAsbz0wO288dGhpcy5fbGF5ZXJzLmxlbmd0aDtvKyspaT10aGlzLl9sYXllcnNbb10sdGhpcy5fYWRkSXRlbShpKSxlPWV8fGkub3ZlcmxheSx0PXR8fCFpLm92ZXJsYXksbis9aS5vdmVybGF5PzA6MTt0aGlzLm9wdGlvbnMuaGlkZVNpbmdsZUJhc2UmJih0aGlzLl9iYXNlTGF5ZXJzTGlzdC5zdHlsZS5kaXNwbGF5PSh0PXQmJjE8bik/IiI6Im5vbmUiKSx0aGlzLl9zZXBhcmF0b3Iuc3R5bGUuZGlzcGxheT1lJiZ0PyIiOiJub25lIn1yZXR1cm4gdGhpc30sX29uTGF5ZXJDaGFuZ2U6ZnVuY3Rpb24odCl7dGhpcy5faGFuZGxpbmdDbGlja3x8dGhpcy5fdXBkYXRlKCk7dmFyIGU9dGhpcy5fZ2V0TGF5ZXIoaCh0LnRhcmdldCkpLHQ9ZS5vdmVybGF5PyJhZGQiPT09dC50eXBlPyJvdmVybGF5YWRkIjoib3ZlcmxheXJlbW92ZSI6ImFkZCI9PT10LnR5cGU/ImJhc2VsYXllcmNoYW5nZSI6bnVsbDt0JiZ0aGlzLl9tYXAuZmlyZSh0LGUpfSxfY3JlYXRlUmFkaW9FbGVtZW50OmZ1bmN0aW9uKHQsZSl7dD0nPGlucHV0IHR5cGU9InJhZGlvIiBjbGFzcz0ibGVhZmxldC1jb250cm9sLWxheWVycy1zZWxlY3RvciIgbmFtZT0iJyt0KyciJysoZT8nIGNoZWNrZWQ9ImNoZWNrZWQiJzoiIikrIi8+IixlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBlLmlubmVySFRNTD10LGUuZmlyc3RDaGlsZH0sX2FkZEl0ZW06ZnVuY3Rpb24odCl7dmFyIGUsaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsYWJlbCIpLG49dGhpcy5fbWFwLmhhc0xheWVyKHQubGF5ZXIpLG49KHQub3ZlcmxheT8oKGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSkudHlwZT0iY2hlY2tib3giLGUuY2xhc3NOYW1lPSJsZWFmbGV0LWNvbnRyb2wtbGF5ZXJzLXNlbGVjdG9yIixlLmRlZmF1bHRDaGVja2VkPW4pOmU9dGhpcy5fY3JlYXRlUmFkaW9FbGVtZW50KCJsZWFmbGV0LWJhc2UtbGF5ZXJzXyIraCh0aGlzKSxuKSx0aGlzLl9sYXllckNvbnRyb2xJbnB1dHMucHVzaChlKSxlLmxheWVySWQ9aCh0LmxheWVyKSxTKGUsImNsaWNrIix0aGlzLl9vbklucHV0Q2xpY2ssdGhpcyksZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpKSxvPShuLmlubmVySFRNTD0iICIrdC5uYW1lLGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKSk7cmV0dXJuIGkuYXBwZW5kQ2hpbGQobyksby5hcHBlbmRDaGlsZChlKSxvLmFwcGVuZENoaWxkKG4pLCh0Lm92ZXJsYXk/dGhpcy5fb3ZlcmxheXNMaXN0OnRoaXMuX2Jhc2VMYXllcnNMaXN0KS5hcHBlbmRDaGlsZChpKSx0aGlzLl9jaGVja0Rpc2FibGVkTGF5ZXJzKCksaX0sX29uSW5wdXRDbGljazpmdW5jdGlvbigpe2lmKCF0aGlzLl9wcmV2ZW50Q2xpY2spe3ZhciB0LGUsaT10aGlzLl9sYXllckNvbnRyb2xJbnB1dHMsbj1bXSxvPVtdO3RoaXMuX2hhbmRsaW5nQ2xpY2s9ITA7Zm9yKHZhciBzPWkubGVuZ3RoLTE7MDw9cztzLS0pdD1pW3NdLGU9dGhpcy5fZ2V0TGF5ZXIodC5sYXllcklkKS5sYXllcix0LmNoZWNrZWQ/bi5wdXNoKGUpOnQuY2hlY2tlZHx8by5wdXNoKGUpO2ZvcihzPTA7czxvLmxlbmd0aDtzKyspdGhpcy5fbWFwLmhhc0xheWVyKG9bc10pJiZ0aGlzLl9tYXAucmVtb3ZlTGF5ZXIob1tzXSk7Zm9yKHM9MDtzPG4ubGVuZ3RoO3MrKyl0aGlzLl9tYXAuaGFzTGF5ZXIobltzXSl8fHRoaXMuX21hcC5hZGRMYXllcihuW3NdKTt0aGlzLl9oYW5kbGluZ0NsaWNrPSExLHRoaXMuX3JlZm9jdXNPbk1hcCgpfX0sX2NoZWNrRGlzYWJsZWRMYXllcnM6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZSxpPXRoaXMuX2xheWVyQ29udHJvbElucHV0cyxuPXRoaXMuX21hcC5nZXRab29tKCksbz1pLmxlbmd0aC0xOzA8PW87by0tKXQ9aVtvXSxlPXRoaXMuX2dldExheWVyKHQubGF5ZXJJZCkubGF5ZXIsdC5kaXNhYmxlZD12b2lkIDAhPT1lLm9wdGlvbnMubWluWm9vbSYmbjxlLm9wdGlvbnMubWluWm9vbXx8dm9pZCAwIT09ZS5vcHRpb25zLm1heFpvb20mJm4+ZS5vcHRpb25zLm1heFpvb219LF9leHBhbmRJZk5vdENvbGxhcHNlZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tYXAmJiF0aGlzLm9wdGlvbnMuY29sbGFwc2VkJiZ0aGlzLmV4cGFuZCgpLHRoaXN9LF9leHBhbmRTYWZlbHk6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9zZWN0aW9uLGU9KHRoaXMuX3ByZXZlbnRDbGljaz0hMCxTKHQsImNsaWNrIixPKSx0aGlzLmV4cGFuZCgpLHRoaXMpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtrKHQsImNsaWNrIixPKSxlLl9wcmV2ZW50Q2xpY2s9ITF9KX19KSkscWU9Qi5leHRlbmQoe29wdGlvbnM6e3Bvc2l0aW9uOiJ0b3BsZWZ0Iix6b29tSW5UZXh0Oic8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+Kzwvc3Bhbj4nLHpvb21JblRpdGxlOiJab29tIGluIix6b29tT3V0VGV4dDonPHNwYW4gYXJpYS1oaWRkZW49InRydWUiPiYjeDIyMTI7PC9zcGFuPicsem9vbU91dFRpdGxlOiJab29tIG91dCJ9LG9uQWRkOmZ1bmN0aW9uKHQpe3ZhciBlPSJsZWFmbGV0LWNvbnRyb2wtem9vbSIsaT1QKCJkaXYiLGUrIiBsZWFmbGV0LWJhciIpLG49dGhpcy5vcHRpb25zO3JldHVybiB0aGlzLl96b29tSW5CdXR0b249dGhpcy5fY3JlYXRlQnV0dG9uKG4uem9vbUluVGV4dCxuLnpvb21JblRpdGxlLGUrIi1pbiIsaSx0aGlzLl96b29tSW4pLHRoaXMuX3pvb21PdXRCdXR0b249dGhpcy5fY3JlYXRlQnV0dG9uKG4uem9vbU91dFRleHQsbi56b29tT3V0VGl0bGUsZSsiLW91dCIsaSx0aGlzLl96b29tT3V0KSx0aGlzLl91cGRhdGVEaXNhYmxlZCgpLHQub24oInpvb21lbmQgem9vbWxldmVsc2NoYW5nZSIsdGhpcy5fdXBkYXRlRGlzYWJsZWQsdGhpcyksaX0sb25SZW1vdmU6ZnVuY3Rpb24odCl7dC5vZmYoInpvb21lbmQgem9vbWxldmVsc2NoYW5nZSIsdGhpcy5fdXBkYXRlRGlzYWJsZWQsdGhpcyl9LGRpc2FibGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGlzYWJsZWQ9ITAsdGhpcy5fdXBkYXRlRGlzYWJsZWQoKSx0aGlzfSxlbmFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGlzYWJsZWQ9ITEsdGhpcy5fdXBkYXRlRGlzYWJsZWQoKSx0aGlzfSxfem9vbUluOmZ1bmN0aW9uKHQpeyF0aGlzLl9kaXNhYmxlZCYmdGhpcy5fbWFwLl96b29tPHRoaXMuX21hcC5nZXRNYXhab29tKCkmJnRoaXMuX21hcC56b29tSW4odGhpcy5fbWFwLm9wdGlvbnMuem9vbURlbHRhKih0LnNoaWZ0S2V5PzM6MSkpfSxfem9vbU91dDpmdW5jdGlvbih0KXshdGhpcy5fZGlzYWJsZWQmJnRoaXMuX21hcC5fem9vbT50aGlzLl9tYXAuZ2V0TWluWm9vbSgpJiZ0aGlzLl9tYXAuem9vbU91dCh0aGlzLl9tYXAub3B0aW9ucy56b29tRGVsdGEqKHQuc2hpZnRLZXk/MzoxKSl9LF9jcmVhdGVCdXR0b246ZnVuY3Rpb24odCxlLGksbixvKXtpPVAoImEiLGksbik7cmV0dXJuIGkuaW5uZXJIVE1MPXQsaS5ocmVmPSIjIixpLnRpdGxlPWUsaS5zZXRBdHRyaWJ1dGUoInJvbGUiLCJidXR0b24iKSxpLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsZSksSWUoaSksUyhpLCJjbGljayIsUmUpLFMoaSwiY2xpY2siLG8sdGhpcyksUyhpLCJjbGljayIsdGhpcy5fcmVmb2N1c09uTWFwLHRoaXMpLGl9LF91cGRhdGVEaXNhYmxlZDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX21hcCxlPSJsZWFmbGV0LWRpc2FibGVkIjt6KHRoaXMuX3pvb21JbkJ1dHRvbixlKSx6KHRoaXMuX3pvb21PdXRCdXR0b24sZSksdGhpcy5fem9vbUluQnV0dG9uLnNldEF0dHJpYnV0ZSgiYXJpYS1kaXNhYmxlZCIsImZhbHNlIiksdGhpcy5fem9vbU91dEJ1dHRvbi5zZXRBdHRyaWJ1dGUoImFyaWEtZGlzYWJsZWQiLCJmYWxzZSIpLCF0aGlzLl9kaXNhYmxlZCYmdC5fem9vbSE9PXQuZ2V0TWluWm9vbSgpfHwoTSh0aGlzLl96b29tT3V0QnV0dG9uLGUpLHRoaXMuX3pvb21PdXRCdXR0b24uc2V0QXR0cmlidXRlKCJhcmlhLWRpc2FibGVkIiwidHJ1ZSIpKSwhdGhpcy5fZGlzYWJsZWQmJnQuX3pvb20hPT10LmdldE1heFpvb20oKXx8KE0odGhpcy5fem9vbUluQnV0dG9uLGUpLHRoaXMuX3pvb21JbkJ1dHRvbi5zZXRBdHRyaWJ1dGUoImFyaWEtZGlzYWJsZWQiLCJ0cnVlIikpfX0pLEdlPShBLm1lcmdlT3B0aW9ucyh7em9vbUNvbnRyb2w6ITB9KSxBLmFkZEluaXRIb29rKGZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLnpvb21Db250cm9sJiYodGhpcy56b29tQ29udHJvbD1uZXcgcWUsdGhpcy5hZGRDb250cm9sKHRoaXMuem9vbUNvbnRyb2wpKX0pLEIuZXh0ZW5kKHtvcHRpb25zOntwb3NpdGlvbjoiYm90dG9tbGVmdCIsbWF4V2lkdGg6MTAwLG1ldHJpYzohMCxpbXBlcmlhbDohMH0sb25BZGQ6ZnVuY3Rpb24odCl7dmFyIGU9ImxlYWZsZXQtY29udHJvbC1zY2FsZSIsaT1QKCJkaXYiLGUpLG49dGhpcy5vcHRpb25zO3JldHVybiB0aGlzLl9hZGRTY2FsZXMobixlKyItbGluZSIsaSksdC5vbihuLnVwZGF0ZVdoZW5JZGxlPyJtb3ZlZW5kIjoibW92ZSIsdGhpcy5fdXBkYXRlLHRoaXMpLHQud2hlblJlYWR5KHRoaXMuX3VwZGF0ZSx0aGlzKSxpfSxvblJlbW92ZTpmdW5jdGlvbih0KXt0Lm9mZih0aGlzLm9wdGlvbnMudXBkYXRlV2hlbklkbGU/Im1vdmVlbmQiOiJtb3ZlIix0aGlzLl91cGRhdGUsdGhpcyl9LF9hZGRTY2FsZXM6ZnVuY3Rpb24odCxlLGkpe3QubWV0cmljJiYodGhpcy5fbVNjYWxlPVAoImRpdiIsZSxpKSksdC5pbXBlcmlhbCYmKHRoaXMuX2lTY2FsZT1QKCJkaXYiLGUsaSkpfSxfdXBkYXRlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fbWFwLGU9dC5nZXRTaXplKCkueS8yLHQ9dC5kaXN0YW5jZSh0LmNvbnRhaW5lclBvaW50VG9MYXRMbmcoWzAsZV0pLHQuY29udGFpbmVyUG9pbnRUb0xhdExuZyhbdGhpcy5vcHRpb25zLm1heFdpZHRoLGVdKSk7dGhpcy5fdXBkYXRlU2NhbGVzKHQpfSxfdXBkYXRlU2NhbGVzOmZ1bmN0aW9uKHQpe3RoaXMub3B0aW9ucy5tZXRyaWMmJnQmJnRoaXMuX3VwZGF0ZU1ldHJpYyh0KSx0aGlzLm9wdGlvbnMuaW1wZXJpYWwmJnQmJnRoaXMuX3VwZGF0ZUltcGVyaWFsKHQpfSxfdXBkYXRlTWV0cmljOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2dldFJvdW5kTnVtKHQpO3RoaXMuX3VwZGF0ZVNjYWxlKHRoaXMuX21TY2FsZSxlPDFlMz9lKyIgbSI6ZS8xZTMrIiBrbSIsZS90KX0sX3VwZGF0ZUltcGVyaWFsOmZ1bmN0aW9uKHQpe3ZhciBlLGksdD0zLjI4MDgzOTkqdDs1MjgwPHQ/KGk9dGhpcy5fZ2V0Um91bmROdW0oZT10LzUyODApLHRoaXMuX3VwZGF0ZVNjYWxlKHRoaXMuX2lTY2FsZSxpKyIgbWkiLGkvZSkpOihpPXRoaXMuX2dldFJvdW5kTnVtKHQpLHRoaXMuX3VwZGF0ZVNjYWxlKHRoaXMuX2lTY2FsZSxpKyIgZnQiLGkvdCkpfSxfdXBkYXRlU2NhbGU6ZnVuY3Rpb24odCxlLGkpe3Quc3R5bGUud2lkdGg9TWF0aC5yb3VuZCh0aGlzLm9wdGlvbnMubWF4V2lkdGgqaSkrInB4Iix0LmlubmVySFRNTD1lfSxfZ2V0Um91bmROdW06ZnVuY3Rpb24odCl7dmFyIGU9TWF0aC5wb3coMTAsKE1hdGguZmxvb3IodCkrIiIpLmxlbmd0aC0xKSx0PXQvZTtyZXR1cm4gZSoodD0xMDw9dD8xMDo1PD10PzU6Mzw9dD8zOjI8PXQ/MjoxKX19KSksS2U9Qi5leHRlbmQoe29wdGlvbnM6e3Bvc2l0aW9uOiJib3R0b21yaWdodCIscHJlZml4Oic8YSBocmVmPSJodHRwczovL2xlYWZsZXRqcy5jb20iIHRpdGxlPSJBIEphdmFTY3JpcHQgbGlicmFyeSBmb3IgaW50ZXJhY3RpdmUgbWFwcyI+JysoYi5pbmxpbmVTdmc/JzxzdmcgYXJpYS1oaWRkZW49InRydWUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEyIiBoZWlnaHQ9IjgiIHZpZXdCb3g9IjAgMCAxMiA4IiBjbGFzcz0ibGVhZmxldC1hdHRyaWJ1dGlvbi1mbGFnIj48cGF0aCBmaWxsPSIjNEM3QkUxIiBkPSJNMCAwaDEydjRIMHoiLz48cGF0aCBmaWxsPSIjRkZENTAwIiBkPSJNMCA0aDEydjNIMHoiLz48cGF0aCBmaWxsPSIjRTBCQzAwIiBkPSJNMCA3aDEydjFIMHoiLz48L3N2Zz4gJzoiIikrIkxlYWZsZXQ8L2E+In0saW5pdGlhbGl6ZTpmdW5jdGlvbih0KXtjKHRoaXMsdCksdGhpcy5fYXR0cmlidXRpb25zPXt9fSxvbkFkZDpmdW5jdGlvbih0KXtmb3IodmFyIGUgaW4odC5hdHRyaWJ1dGlvbkNvbnRyb2w9dGhpcykuX2NvbnRhaW5lcj1QKCJkaXYiLCJsZWFmbGV0LWNvbnRyb2wtYXR0cmlidXRpb24iKSxJZSh0aGlzLl9jb250YWluZXIpLHQuX2xheWVycyl0Ll9sYXllcnNbZV0uZ2V0QXR0cmlidXRpb24mJnRoaXMuYWRkQXR0cmlidXRpb24odC5fbGF5ZXJzW2VdLmdldEF0dHJpYnV0aW9uKCkpO3JldHVybiB0aGlzLl91cGRhdGUoKSx0Lm9uKCJsYXllcmFkZCIsdGhpcy5fYWRkQXR0cmlidXRpb24sdGhpcyksdGhpcy5fY29udGFpbmVyfSxvblJlbW92ZTpmdW5jdGlvbih0KXt0Lm9mZigibGF5ZXJhZGQiLHRoaXMuX2FkZEF0dHJpYnV0aW9uLHRoaXMpfSxfYWRkQXR0cmlidXRpb246ZnVuY3Rpb24odCl7dC5sYXllci5nZXRBdHRyaWJ1dGlvbiYmKHRoaXMuYWRkQXR0cmlidXRpb24odC5sYXllci5nZXRBdHRyaWJ1dGlvbigpKSx0LmxheWVyLm9uY2UoInJlbW92ZSIsZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0aW9uKHQubGF5ZXIuZ2V0QXR0cmlidXRpb24oKSl9LHRoaXMpKX0sc2V0UHJlZml4OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm9wdGlvbnMucHJlZml4PXQsdGhpcy5fdXBkYXRlKCksdGhpc30sYWRkQXR0cmlidXRpb246ZnVuY3Rpb24odCl7cmV0dXJuIHQmJih0aGlzLl9hdHRyaWJ1dGlvbnNbdF18fCh0aGlzLl9hdHRyaWJ1dGlvbnNbdF09MCksdGhpcy5fYXR0cmlidXRpb25zW3RdKyssdGhpcy5fdXBkYXRlKCkpLHRoaXN9LHJlbW92ZUF0dHJpYnV0aW9uOmZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0aGlzLl9hdHRyaWJ1dGlvbnNbdF0mJih0aGlzLl9hdHRyaWJ1dGlvbnNbdF0tLSx0aGlzLl91cGRhdGUoKSksdGhpc30sX3VwZGF0ZTpmdW5jdGlvbigpe2lmKHRoaXMuX21hcCl7dmFyIHQsZT1bXTtmb3IodCBpbiB0aGlzLl9hdHRyaWJ1dGlvbnMpdGhpcy5fYXR0cmlidXRpb25zW3RdJiZlLnB1c2godCk7dmFyIGk9W107dGhpcy5vcHRpb25zLnByZWZpeCYmaS5wdXNoKHRoaXMub3B0aW9ucy5wcmVmaXgpLGUubGVuZ3RoJiZpLnB1c2goZS5qb2luKCIsICIpKSx0aGlzLl9jb250YWluZXIuaW5uZXJIVE1MPWkuam9pbignIDxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIj58PC9zcGFuPiAnKX19fSksbj0oQS5tZXJnZU9wdGlvbnMoe2F0dHJpYnV0aW9uQ29udHJvbDohMH0pLEEuYWRkSW5pdEhvb2soZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMuYXR0cmlidXRpb25Db250cm9sJiYobmV3IEtlKS5hZGRUbyh0aGlzKX0pLEIuTGF5ZXJzPVZlLEIuWm9vbT1xZSxCLlNjYWxlPUdlLEIuQXR0cmlidXRpb249S2UsVWUubGF5ZXJzPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gbmV3IFZlKHQsZSxpKX0sVWUuem9vbT1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IHFlKHQpfSxVZS5zY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IEdlKHQpfSxVZS5hdHRyaWJ1dGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IEtlKHQpfSxldC5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24odCl7dGhpcy5fbWFwPXR9LGVuYWJsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9lbmFibGVkfHwodGhpcy5fZW5hYmxlZD0hMCx0aGlzLmFkZEhvb2tzKCkpLHRoaXN9LGRpc2FibGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZW5hYmxlZCYmKHRoaXMuX2VuYWJsZWQ9ITEsdGhpcy5yZW1vdmVIb29rcygpKSx0aGlzfSxlbmFibGVkOmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLl9lbmFibGVkfX0pKSxmdD0obi5hZGRUbz1mdW5jdGlvbih0LGUpe3JldHVybiB0LmFkZEhhbmRsZXIoZSx0aGlzKSx0aGlzfSx7RXZlbnRzOmV9KSxZZT1iLnRvdWNoPyJ0b3VjaHN0YXJ0IG1vdXNlZG93biI6Im1vdXNlZG93biIsWGU9aXQuZXh0ZW5kKHtvcHRpb25zOntjbGlja1RvbGVyYW5jZTozfSxpbml0aWFsaXplOmZ1bmN0aW9uKHQsZSxpLG4pe2ModGhpcyxuKSx0aGlzLl9lbGVtZW50PXQsdGhpcy5fZHJhZ1N0YXJ0VGFyZ2V0PWV8fHQsdGhpcy5fcHJldmVudE91dGxpbmU9aX0sZW5hYmxlOmZ1bmN0aW9uKCl7dGhpcy5fZW5hYmxlZHx8KFModGhpcy5fZHJhZ1N0YXJ0VGFyZ2V0LFllLHRoaXMuX29uRG93bix0aGlzKSx0aGlzLl9lbmFibGVkPSEwKX0sZGlzYWJsZTpmdW5jdGlvbigpe3RoaXMuX2VuYWJsZWQmJihYZS5fZHJhZ2dpbmc9PT10aGlzJiZ0aGlzLmZpbmlzaERyYWcoITApLGsodGhpcy5fZHJhZ1N0YXJ0VGFyZ2V0LFllLHRoaXMuX29uRG93bix0aGlzKSx0aGlzLl9lbmFibGVkPSExLHRoaXMuX21vdmVkPSExKX0sX29uRG93bjpmdW5jdGlvbih0KXt2YXIgZSxpO3RoaXMuX2VuYWJsZWQmJih0aGlzLl9tb3ZlZD0hMSx2ZSh0aGlzLl9lbGVtZW50LCJsZWFmbGV0LXpvb20tYW5pbSIpfHwodC50b3VjaGVzJiYxIT09dC50b3VjaGVzLmxlbmd0aD9YZS5fZHJhZ2dpbmc9PT10aGlzJiZ0aGlzLmZpbmlzaERyYWcoKTpYZS5fZHJhZ2dpbmd8fHQuc2hpZnRLZXl8fDEhPT10LndoaWNoJiYxIT09dC5idXR0b24mJiF0LnRvdWNoZXN8fCgoWGUuX2RyYWdnaW5nPXRoaXMpLl9wcmV2ZW50T3V0bGluZSYmTWUodGhpcy5fZWxlbWVudCksTGUoKSxyZSgpLHRoaXMuX21vdmluZ3x8KHRoaXMuZmlyZSgiZG93biIpLGk9dC50b3VjaGVzP3QudG91Y2hlc1swXTp0LGU9Q2UodGhpcy5fZWxlbWVudCksdGhpcy5fc3RhcnRQb2ludD1uZXcgcChpLmNsaWVudFgsaS5jbGllbnRZKSx0aGlzLl9zdGFydFBvcz1QZSh0aGlzLl9lbGVtZW50KSx0aGlzLl9wYXJlbnRTY2FsZT1aZShlKSxpPSJtb3VzZWRvd24iPT09dC50eXBlLFMoZG9jdW1lbnQsaT8ibW91c2Vtb3ZlIjoidG91Y2htb3ZlIix0aGlzLl9vbk1vdmUsdGhpcyksUyhkb2N1bWVudCxpPyJtb3VzZXVwIjoidG91Y2hlbmQgdG91Y2hjYW5jZWwiLHRoaXMuX29uVXAsdGhpcykpKSkpfSxfb25Nb3ZlOmZ1bmN0aW9uKHQpe3ZhciBlO3RoaXMuX2VuYWJsZWQmJih0LnRvdWNoZXMmJjE8dC50b3VjaGVzLmxlbmd0aD90aGlzLl9tb3ZlZD0hMDohKGU9bmV3IHAoKGU9dC50b3VjaGVzJiYxPT09dC50b3VjaGVzLmxlbmd0aD90LnRvdWNoZXNbMF06dCkuY2xpZW50WCxlLmNsaWVudFkpLl9zdWJ0cmFjdCh0aGlzLl9zdGFydFBvaW50KSkueCYmIWUueXx8TWF0aC5hYnMoZS54KStNYXRoLmFicyhlLnkpPHRoaXMub3B0aW9ucy5jbGlja1RvbGVyYW5jZXx8KGUueC89dGhpcy5fcGFyZW50U2NhbGUueCxlLnkvPXRoaXMuX3BhcmVudFNjYWxlLnksTyh0KSx0aGlzLl9tb3ZlZHx8KHRoaXMuZmlyZSgiZHJhZ3N0YXJ0IiksdGhpcy5fbW92ZWQ9ITAsTShkb2N1bWVudC5ib2R5LCJsZWFmbGV0LWRyYWdnaW5nIiksdGhpcy5fbGFzdFRhcmdldD10LnRhcmdldHx8dC5zcmNFbGVtZW50LHdpbmRvdy5TVkdFbGVtZW50SW5zdGFuY2UmJnRoaXMuX2xhc3RUYXJnZXQgaW5zdGFuY2VvZiB3aW5kb3cuU1ZHRWxlbWVudEluc3RhbmNlJiYodGhpcy5fbGFzdFRhcmdldD10aGlzLl9sYXN0VGFyZ2V0LmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50KSxNKHRoaXMuX2xhc3RUYXJnZXQsImxlYWZsZXQtZHJhZy10YXJnZXQiKSksdGhpcy5fbmV3UG9zPXRoaXMuX3N0YXJ0UG9zLmFkZChlKSx0aGlzLl9tb3Zpbmc9ITAsdGhpcy5fbGFzdEV2ZW50PXQsdGhpcy5fdXBkYXRlUG9zaXRpb24oKSkpfSxfdXBkYXRlUG9zaXRpb246ZnVuY3Rpb24oKXt2YXIgdD17b3JpZ2luYWxFdmVudDp0aGlzLl9sYXN0RXZlbnR9O3RoaXMuZmlyZSgicHJlZHJhZyIsdCksWih0aGlzLl9lbGVtZW50LHRoaXMuX25ld1BvcyksdGhpcy5maXJlKCJkcmFnIix0KX0sX29uVXA6ZnVuY3Rpb24oKXt0aGlzLl9lbmFibGVkJiZ0aGlzLmZpbmlzaERyYWcoKX0sZmluaXNoRHJhZzpmdW5jdGlvbih0KXt6KGRvY3VtZW50LmJvZHksImxlYWZsZXQtZHJhZ2dpbmciKSx0aGlzLl9sYXN0VGFyZ2V0JiYoeih0aGlzLl9sYXN0VGFyZ2V0LCJsZWFmbGV0LWRyYWctdGFyZ2V0IiksdGhpcy5fbGFzdFRhcmdldD1udWxsKSxrKGRvY3VtZW50LCJtb3VzZW1vdmUgdG91Y2htb3ZlIix0aGlzLl9vbk1vdmUsdGhpcyksayhkb2N1bWVudCwibW91c2V1cCB0b3VjaGVuZCB0b3VjaGNhbmNlbCIsdGhpcy5fb25VcCx0aGlzKSxUZSgpLGFlKCk7dmFyIGU9dGhpcy5fbW92ZWQmJnRoaXMuX21vdmluZzt0aGlzLl9tb3Zpbmc9ITEsWGUuX2RyYWdnaW5nPSExLGUmJnRoaXMuZmlyZSgiZHJhZ2VuZCIse25vSW5lcnRpYTp0LGRpc3RhbmNlOnRoaXMuX25ld1Bvcy5kaXN0YW5jZVRvKHRoaXMuX3N0YXJ0UG9zKX0pfX0pO2Z1bmN0aW9uIEplKHQsZSxpKXtmb3IodmFyIG4sbyxzLHIsYSxoLGwsdT1bMSw0LDIsOF0sYz0wLGQ9dC5sZW5ndGg7YzxkO2MrKyl0W2NdLl9jb2RlPXNpKHRbY10sZSk7Zm9yKHM9MDtzPDQ7cysrKXtmb3IoaD11W3NdLG49W10sYz0wLG89KGQ9dC5sZW5ndGgpLTE7YzxkO289YysrKXI9dFtjXSxhPXRbb10sci5fY29kZSZoP2EuX2NvZGUmaHx8KChsPW9pKGEscixoLGUsaSkpLl9jb2RlPXNpKGwsZSksbi5wdXNoKGwpKTooYS5fY29kZSZoJiYoKGw9b2koYSxyLGgsZSxpKSkuX2NvZGU9c2kobCxlKSxuLnB1c2gobCkpLG4ucHVzaChyKSk7dD1ufXJldHVybiB0fWZ1bmN0aW9uICRlKHQsZSl7dmFyIGksbixvLHMscixhLGg7aWYoIXR8fDA9PT10Lmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoImxhdGxuZ3Mgbm90IHBhc3NlZCIpO0kodCl8fChjb25zb2xlLndhcm4oImxhdGxuZ3MgYXJlIG5vdCBmbGF0ISBPbmx5IHRoZSBmaXJzdCByaW5nIHdpbGwgYmUgdXNlZCIpLHQ9dFswXSk7Zm9yKHZhciBsPXcoWzAsMF0pLHU9Zyh0KSxjPSh1LmdldE5vcnRoV2VzdCgpLmRpc3RhbmNlVG8odS5nZXRTb3V0aFdlc3QoKSkqdS5nZXROb3J0aEVhc3QoKS5kaXN0YW5jZVRvKHUuZ2V0Tm9ydGhXZXN0KCkpPDE3MDAmJihsPVFlKHQpKSx0Lmxlbmd0aCksZD1bXSxfPTA7XzxjO18rKyl7dmFyIHA9dyh0W19dKTtkLnB1c2goZS5wcm9qZWN0KHcoW3AubGF0LWwubGF0LHAubG5nLWwubG5nXSkpKX1mb3IoXz1yPWE9aD0wLGk9Yy0xO188YztpPV8rKyluPWRbX10sbz1kW2ldLHM9bi55Km8ueC1vLnkqbi54LGErPShuLngrby54KSpzLGgrPShuLnkrby55KSpzLHIrPTMqczt1PTA9PT1yP2RbMF06W2EvcixoL3JdLHU9ZS51bnByb2plY3QobSh1KSk7cmV0dXJuIHcoW3UubGF0K2wubGF0LHUubG5nK2wubG5nXSl9ZnVuY3Rpb24gUWUodCl7Zm9yKHZhciBlPTAsaT0wLG49MCxvPTA7bzx0Lmxlbmd0aDtvKyspe3ZhciBzPXcodFtvXSk7ZSs9cy5sYXQsaSs9cy5sbmcsbisrfXJldHVybiB3KFtlL24saS9uXSl9dmFyIHRpLGd0PXtfX3Byb3RvX186bnVsbCxjbGlwUG9seWdvbjpKZSxwb2x5Z29uQ2VudGVyOiRlLGNlbnRyb2lkOlFlfTtmdW5jdGlvbiBlaSh0LGUpe2lmKGUmJnQubGVuZ3RoKXt2YXIgaT10PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpPVt0WzBdXSxuPTEsbz0wLHM9dC5sZW5ndGg7bjxzO24rKykoZnVuY3Rpb24odCxlKXt2YXIgaT1lLngtdC54LGU9ZS55LXQueTtyZXR1cm4gaSppK2UqZX0pKHRbbl0sdFtvXSk+ZSYmKGkucHVzaCh0W25dKSxvPW4pO288cy0xJiZpLnB1c2godFtzLTFdKTtyZXR1cm4gaX0odCxlPWUqZSksbj1pLmxlbmd0aCxvPW5ldyh0eXBlb2YgVWludDhBcnJheSE9dm9pZCAwKyIiP1VpbnQ4QXJyYXk6QXJyYXkpKG4pO29bMF09b1tuLTFdPTEsZnVuY3Rpb24gdChlLGksbixvLHMpe3ZhciByLGEsaCxsPTA7Zm9yKGE9bysxO2E8PXMtMTthKyspaD1yaShlW2FdLGVbb10sZVtzXSwhMCksbDxoJiYocj1hLGw9aCk7bjxsJiYoaVtyXT0xLHQoZSxpLG4sbyxyKSx0KGUsaSxuLHIscykpfShpLG8sZSwwLG4tMSk7dmFyIHMscj1bXTtmb3Iocz0wO3M8bjtzKyspb1tzXSYmci5wdXNoKGlbc10pO3JldHVybiByfXJldHVybiB0LnNsaWNlKCl9ZnVuY3Rpb24gaWkodCxlLGkpe3JldHVybiBNYXRoLnNxcnQocmkodCxlLGksITApKX1mdW5jdGlvbiBuaSh0LGUsaSxuLG8pe3ZhciBzLHIsYSxoPW4/dGk6c2kodCxpKSxsPXNpKGUsaSk7Zm9yKHRpPWw7Oyl7aWYoIShofGwpKXJldHVyblt0LGVdO2lmKGgmbClyZXR1cm4hMTthPXNpKHI9b2kodCxlLHM9aHx8bCxpLG8pLGkpLHM9PT1oPyh0PXIsaD1hKTooZT1yLGw9YSl9fWZ1bmN0aW9uIG9pKHQsZSxpLG4sbyl7dmFyIHMscixhPWUueC10LngsZT1lLnktdC55LGg9bi5taW4sbj1uLm1heDtyZXR1cm4gOCZpPyhzPXQueCthKihuLnktdC55KS9lLHI9bi55KTo0Jmk/KHM9dC54K2EqKGgueS10LnkpL2Uscj1oLnkpOjImaT8ocz1uLngscj10LnkrZSoobi54LXQueCkvYSk6MSZpJiYocz1oLngscj10LnkrZSooaC54LXQueCkvYSksbmV3IHAocyxyLG8pfWZ1bmN0aW9uIHNpKHQsZSl7dmFyIGk9MDtyZXR1cm4gdC54PGUubWluLng/aXw9MTp0Lng+ZS5tYXgueCYmKGl8PTIpLHQueTxlLm1pbi55P2l8PTQ6dC55PmUubWF4LnkmJihpfD04KSxpfWZ1bmN0aW9uIHJpKHQsZSxpLG4pe3ZhciBvPWUueCxlPWUueSxzPWkueC1vLHI9aS55LWUsYT1zKnMrcipyO3JldHVybiAwPGEmJigxPChhPSgodC54LW8pKnMrKHQueS1lKSpyKS9hKT8obz1pLngsZT1pLnkpOjA8YSYmKG8rPXMqYSxlKz1yKmEpKSxzPXQueC1vLHI9dC55LWUsbj9zKnMrcipyOm5ldyBwKG8sZSl9ZnVuY3Rpb24gSSh0KXtyZXR1cm4hZCh0WzBdKXx8Im9iamVjdCIhPXR5cGVvZiB0WzBdWzBdJiZ2b2lkIDAhPT10WzBdWzBdfWZ1bmN0aW9uIGFpKHQpe3JldHVybiBjb25zb2xlLndhcm4oIkRlcHJlY2F0ZWQgdXNlIG9mIF9mbGF0LCBwbGVhc2UgdXNlIEwuTGluZVV0aWwuaXNGbGF0IGluc3RlYWQuIiksSSh0KX1mdW5jdGlvbiBoaSh0LGUpe3ZhciBpLG4sbyxzLHIsYTtpZighdHx8MD09PXQubGVuZ3RoKXRocm93IG5ldyBFcnJvcigibGF0bG5ncyBub3QgcGFzc2VkIik7SSh0KXx8KGNvbnNvbGUud2FybigibGF0bG5ncyBhcmUgbm90IGZsYXQhIE9ubHkgdGhlIGZpcnN0IHJpbmcgd2lsbCBiZSB1c2VkIiksdD10WzBdKTtmb3IodmFyIGg9dyhbMCwwXSksbD1nKHQpLHU9KGwuZ2V0Tm9ydGhXZXN0KCkuZGlzdGFuY2VUbyhsLmdldFNvdXRoV2VzdCgpKSpsLmdldE5vcnRoRWFzdCgpLmRpc3RhbmNlVG8obC5nZXROb3J0aFdlc3QoKSk8MTcwMCYmKGg9UWUodCkpLHQubGVuZ3RoKSxjPVtdLGQ9MDtkPHU7ZCsrKXt2YXIgXz13KHRbZF0pO2MucHVzaChlLnByb2plY3QodyhbXy5sYXQtaC5sYXQsXy5sbmctaC5sbmddKSkpfWZvcihpPWQ9MDtkPHUtMTtkKyspaSs9Y1tkXS5kaXN0YW5jZVRvKGNbZCsxXSkvMjtpZigwPT09aSlhPWNbMF07ZWxzZSBmb3Iobj1kPTA7ZDx1LTE7ZCsrKWlmKG89Y1tkXSxzPWNbZCsxXSxpPChuKz1yPW8uZGlzdGFuY2VUbyhzKSkpe2E9W3MueC0ocj0obi1pKS9yKSoocy54LW8ueCkscy55LXIqKHMueS1vLnkpXTticmVha31sPWUudW5wcm9qZWN0KG0oYSkpO3JldHVybiB3KFtsLmxhdCtoLmxhdCxsLmxuZytoLmxuZ10pfXZhciB2dD17X19wcm90b19fOm51bGwsc2ltcGxpZnk6ZWkscG9pbnRUb1NlZ21lbnREaXN0YW5jZTppaSxjbG9zZXN0UG9pbnRPblNlZ21lbnQ6ZnVuY3Rpb24odCxlLGkpe3JldHVybiByaSh0LGUsaSl9LGNsaXBTZWdtZW50Om5pLF9nZXRFZGdlSW50ZXJzZWN0aW9uOm9pLF9nZXRCaXRDb2RlOnNpLF9zcUNsb3Nlc3RQb2ludE9uU2VnbWVudDpyaSxpc0ZsYXQ6SSxfZmxhdDphaSxwb2x5bGluZUNlbnRlcjpoaX0seXQ9e3Byb2plY3Q6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBwKHQubG5nLHQubGF0KX0sdW5wcm9qZWN0OmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgdih0LnksdC54KX0sYm91bmRzOm5ldyBmKFstMTgwLC05MF0sWzE4MCw5MF0pfSx4dD17Ujo2Mzc4MTM3LFJfTUlOT1I6NjM1Njc1Mi4zMTQyNDUxNzksYm91bmRzOm5ldyBmKFstMjAwMzc1MDguMzQyNzksLTE1NDk2NTcwLjczOTcyXSxbMjAwMzc1MDguMzQyNzksMTg3NjQ2NTYuMjMxMzhdKSxwcm9qZWN0OmZ1bmN0aW9uKHQpe3ZhciBlPU1hdGguUEkvMTgwLGk9dGhpcy5SLG49dC5sYXQqZSxvPXRoaXMuUl9NSU5PUi9pLG89TWF0aC5zcXJ0KDEtbypvKSxzPW8qTWF0aC5zaW4obikscz1NYXRoLnRhbihNYXRoLlBJLzQtbi8yKS9NYXRoLnBvdygoMS1zKS8oMStzKSxvLzIpLG49LWkqTWF0aC5sb2coTWF0aC5tYXgocywxZS0xMCkpO3JldHVybiBuZXcgcCh0LmxuZyplKmksbil9LHVucHJvamVjdDpmdW5jdGlvbih0KXtmb3IodmFyIGUsaT0xODAvTWF0aC5QSSxuPXRoaXMuUixvPXRoaXMuUl9NSU5PUi9uLHM9TWF0aC5zcXJ0KDEtbypvKSxyPU1hdGguZXhwKC10LnkvbiksYT1NYXRoLlBJLzItMipNYXRoLmF0YW4ociksaD0wLGw9LjE7aDwxNSYmMWUtNzxNYXRoLmFicyhsKTtoKyspZT1zKk1hdGguc2luKGEpLGU9TWF0aC5wb3coKDEtZSkvKDErZSkscy8yKSxhKz1sPU1hdGguUEkvMi0yKk1hdGguYXRhbihyKmUpLWE7cmV0dXJuIG5ldyB2KGEqaSx0LngqaS9uKX19LHd0PXtfX3Byb3RvX186bnVsbCxMb25MYXQ6eXQsTWVyY2F0b3I6eHQsU3BoZXJpY2FsTWVyY2F0b3I6cnR9LFB0PWwoe30sc3Qse2NvZGU6IkVQU0c6MzM5NSIscHJvamVjdGlvbjp4dCx0cmFuc2Zvcm1hdGlvbjpodChidD0uNS8oTWF0aC5QSSp4dC5SKSwuNSwtYnQsLjUpfSksbGk9bCh7fSxzdCx7Y29kZToiRVBTRzo0MzI2Iixwcm9qZWN0aW9uOnl0LHRyYW5zZm9ybWF0aW9uOmh0KDEvMTgwLDEsLTEvMTgwLC41KX0pLEx0PWwoe30sb3Qse3Byb2plY3Rpb246eXQsdHJhbnNmb3JtYXRpb246aHQoMSwwLC0xLDApLHNjYWxlOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnBvdygyLHQpfSx6b29tOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLmxvZyh0KS9NYXRoLkxOMn0sZGlzdGFuY2U6ZnVuY3Rpb24odCxlKXt2YXIgaT1lLmxuZy10LmxuZyxlPWUubGF0LXQubGF0O3JldHVybiBNYXRoLnNxcnQoaSppK2UqZSl9LGluZmluaXRlOiEwfSksbz0ob3QuRWFydGg9c3Qsb3QuRVBTRzMzOTU9UHQsb3QuRVBTRzM4NTc9bHQsb3QuRVBTRzkwMDkxMz11dCxvdC5FUFNHNDMyNj1saSxvdC5TaW1wbGU9THQsaXQuZXh0ZW5kKHtvcHRpb25zOntwYW5lOiJvdmVybGF5UGFuZSIsYXR0cmlidXRpb246bnVsbCxidWJibGluZ01vdXNlRXZlbnRzOiEwfSxhZGRUbzpmdW5jdGlvbih0KXtyZXR1cm4gdC5hZGRMYXllcih0aGlzKSx0aGlzfSxyZW1vdmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZW1vdmVGcm9tKHRoaXMuX21hcHx8dGhpcy5fbWFwVG9BZGQpfSxyZW1vdmVGcm9tOmZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0LnJlbW92ZUxheWVyKHRoaXMpLHRoaXN9LGdldFBhbmU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX21hcC5nZXRQYW5lKHQ/dGhpcy5vcHRpb25zW3RdfHx0OnRoaXMub3B0aW9ucy5wYW5lKX0sYWRkSW50ZXJhY3RpdmVUYXJnZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX21hcC5fdGFyZ2V0c1toKHQpXT10aGlzfSxyZW1vdmVJbnRlcmFjdGl2ZVRhcmdldDpmdW5jdGlvbih0KXtyZXR1cm4gZGVsZXRlIHRoaXMuX21hcC5fdGFyZ2V0c1toKHQpXSx0aGlzfSxnZXRBdHRyaWJ1dGlvbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9wdGlvbnMuYXR0cmlidXRpb259LF9sYXllckFkZDpmdW5jdGlvbih0KXt2YXIgZSxpPXQudGFyZ2V0O2kuaGFzTGF5ZXIodGhpcykmJih0aGlzLl9tYXA9aSx0aGlzLl96b29tQW5pbWF0ZWQ9aS5fem9vbUFuaW1hdGVkLHRoaXMuZ2V0RXZlbnRzJiYoZT10aGlzLmdldEV2ZW50cygpLGkub24oZSx0aGlzKSx0aGlzLm9uY2UoInJlbW92ZSIsZnVuY3Rpb24oKXtpLm9mZihlLHRoaXMpfSx0aGlzKSksdGhpcy5vbkFkZChpKSx0aGlzLmZpcmUoImFkZCIpLGkuZmlyZSgibGF5ZXJhZGQiLHtsYXllcjp0aGlzfSkpfX0pKSx1aT0oQS5pbmNsdWRlKHthZGRMYXllcjpmdW5jdGlvbih0KXt2YXIgZTtpZih0Ll9sYXllckFkZClyZXR1cm4gZT1oKHQpLHRoaXMuX2xheWVyc1tlXXx8KCh0aGlzLl9sYXllcnNbZV09dCkuX21hcFRvQWRkPXRoaXMsdC5iZWZvcmVBZGQmJnQuYmVmb3JlQWRkKHRoaXMpLHRoaXMud2hlblJlYWR5KHQuX2xheWVyQWRkLHQpKSx0aGlzO3Rocm93IG5ldyBFcnJvcigiVGhlIHByb3ZpZGVkIG9iamVjdCBpcyBub3QgYSBMYXllci4iKX0scmVtb3ZlTGF5ZXI6ZnVuY3Rpb24odCl7dmFyIGU9aCh0KTtyZXR1cm4gdGhpcy5fbGF5ZXJzW2VdJiYodGhpcy5fbG9hZGVkJiZ0Lm9uUmVtb3ZlKHRoaXMpLGRlbGV0ZSB0aGlzLl9sYXllcnNbZV0sdGhpcy5fbG9hZGVkJiYodGhpcy5maXJlKCJsYXllcnJlbW92ZSIse2xheWVyOnR9KSx0LmZpcmUoInJlbW92ZSIpKSx0Ll9tYXA9dC5fbWFwVG9BZGQ9bnVsbCksdGhpc30saGFzTGF5ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIGgodClpbiB0aGlzLl9sYXllcnN9LGVhY2hMYXllcjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgaSBpbiB0aGlzLl9sYXllcnMpdC5jYWxsKGUsdGhpcy5fbGF5ZXJzW2ldKTtyZXR1cm4gdGhpc30sX2FkZExheWVyczpmdW5jdGlvbih0KXtmb3IodmFyIGU9MCxpPSh0PXQ/ZCh0KT90Olt0XTpbXSkubGVuZ3RoO2U8aTtlKyspdGhpcy5hZGRMYXllcih0W2VdKX0sX2FkZFpvb21MaW1pdDpmdW5jdGlvbih0KXtpc05hTih0Lm9wdGlvbnMubWF4Wm9vbSkmJmlzTmFOKHQub3B0aW9ucy5taW5ab29tKXx8KHRoaXMuX3pvb21Cb3VuZExheWVyc1toKHQpXT10LHRoaXMuX3VwZGF0ZVpvb21MZXZlbHMoKSl9LF9yZW1vdmVab29tTGltaXQ6ZnVuY3Rpb24odCl7dD1oKHQpO3RoaXMuX3pvb21Cb3VuZExheWVyc1t0XSYmKGRlbGV0ZSB0aGlzLl96b29tQm91bmRMYXllcnNbdF0sdGhpcy5fdXBkYXRlWm9vbUxldmVscygpKX0sX3VwZGF0ZVpvb21MZXZlbHM6ZnVuY3Rpb24oKXt2YXIgdCxlPTEvMCxpPS0xLzAsbj10aGlzLl9nZXRab29tU3BhbigpO2Zvcih0IGluIHRoaXMuX3pvb21Cb3VuZExheWVycyl2YXIgbz10aGlzLl96b29tQm91bmRMYXllcnNbdF0ub3B0aW9ucyxlPXZvaWQgMD09PW8ubWluWm9vbT9lOk1hdGgubWluKGUsby5taW5ab29tKSxpPXZvaWQgMD09PW8ubWF4Wm9vbT9pOk1hdGgubWF4KGksby5tYXhab29tKTt0aGlzLl9sYXllcnNNYXhab29tPWk9PT0tMS8wP3ZvaWQgMDppLHRoaXMuX2xheWVyc01pblpvb209ZT09PTEvMD92b2lkIDA6ZSxuIT09dGhpcy5fZ2V0Wm9vbVNwYW4oKSYmdGhpcy5maXJlKCJ6b29tbGV2ZWxzY2hhbmdlIiksdm9pZCAwPT09dGhpcy5vcHRpb25zLm1heFpvb20mJnRoaXMuX2xheWVyc01heFpvb20mJnRoaXMuZ2V0Wm9vbSgpPnRoaXMuX2xheWVyc01heFpvb20mJnRoaXMuc2V0Wm9vbSh0aGlzLl9sYXllcnNNYXhab29tKSx2b2lkIDA9PT10aGlzLm9wdGlvbnMubWluWm9vbSYmdGhpcy5fbGF5ZXJzTWluWm9vbSYmdGhpcy5nZXRab29tKCk8dGhpcy5fbGF5ZXJzTWluWm9vbSYmdGhpcy5zZXRab29tKHRoaXMuX2xheWVyc01pblpvb20pfX0pLG8uZXh0ZW5kKHtpbml0aWFsaXplOmZ1bmN0aW9uKHQsZSl7dmFyIGksbjtpZihjKHRoaXMsZSksdGhpcy5fbGF5ZXJzPXt9LHQpZm9yKGk9MCxuPXQubGVuZ3RoO2k8bjtpKyspdGhpcy5hZGRMYXllcih0W2ldKX0sYWRkTGF5ZXI6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nZXRMYXllcklkKHQpO3JldHVybiB0aGlzLl9sYXllcnNbZV09dCx0aGlzLl9tYXAmJnRoaXMuX21hcC5hZGRMYXllcih0KSx0aGlzfSxyZW1vdmVMYXllcjpmdW5jdGlvbih0KXt0PXQgaW4gdGhpcy5fbGF5ZXJzP3Q6dGhpcy5nZXRMYXllcklkKHQpO3JldHVybiB0aGlzLl9tYXAmJnRoaXMuX2xheWVyc1t0XSYmdGhpcy5fbWFwLnJlbW92ZUxheWVyKHRoaXMuX2xheWVyc1t0XSksZGVsZXRlIHRoaXMuX2xheWVyc1t0XSx0aGlzfSxoYXNMYXllcjpmdW5jdGlvbih0KXtyZXR1cm4oIm51bWJlciI9PXR5cGVvZiB0P3Q6dGhpcy5nZXRMYXllcklkKHQpKWluIHRoaXMuX2xheWVyc30sY2xlYXJMYXllcnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoTGF5ZXIodGhpcy5yZW1vdmVMYXllcix0aGlzKX0saW52b2tlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSk7Zm9yKGUgaW4gdGhpcy5fbGF5ZXJzKShpPXRoaXMuX2xheWVyc1tlXSlbdF0mJmlbdF0uYXBwbHkoaSxuKTtyZXR1cm4gdGhpc30sb25BZGQ6ZnVuY3Rpb24odCl7dGhpcy5lYWNoTGF5ZXIodC5hZGRMYXllcix0KX0sb25SZW1vdmU6ZnVuY3Rpb24odCl7dGhpcy5lYWNoTGF5ZXIodC5yZW1vdmVMYXllcix0KX0sZWFjaExheWVyOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpIGluIHRoaXMuX2xheWVycyl0LmNhbGwoZSx0aGlzLl9sYXllcnNbaV0pO3JldHVybiB0aGlzfSxnZXRMYXllcjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fbGF5ZXJzW3RdfSxnZXRMYXllcnM6ZnVuY3Rpb24oKXt2YXIgdD1bXTtyZXR1cm4gdGhpcy5lYWNoTGF5ZXIodC5wdXNoLHQpLHR9LHNldFpJbmRleDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pbnZva2UoInNldFpJbmRleCIsdCl9LGdldExheWVySWQ6aH0pKSxjaT11aS5leHRlbmQoe2FkZExheWVyOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmhhc0xheWVyKHQpP3RoaXM6KHQuYWRkRXZlbnRQYXJlbnQodGhpcyksdWkucHJvdG90eXBlLmFkZExheWVyLmNhbGwodGhpcyx0KSx0aGlzLmZpcmUoImxheWVyYWRkIix7bGF5ZXI6dH0pKX0scmVtb3ZlTGF5ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaGFzTGF5ZXIodCk/KCh0PXQgaW4gdGhpcy5fbGF5ZXJzP3RoaXMuX2xheWVyc1t0XTp0KS5yZW1vdmVFdmVudFBhcmVudCh0aGlzKSx1aS5wcm90b3R5cGUucmVtb3ZlTGF5ZXIuY2FsbCh0aGlzLHQpLHRoaXMuZmlyZSgibGF5ZXJyZW1vdmUiLHtsYXllcjp0fSkpOnRoaXN9LHNldFN0eWxlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmludm9rZSgic2V0U3R5bGUiLHQpfSxicmluZ1RvRnJvbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbnZva2UoImJyaW5nVG9Gcm9udCIpfSxicmluZ1RvQmFjazpmdW5jdGlvbigpe3JldHVybiB0aGlzLmludm9rZSgiYnJpbmdUb0JhY2siKX0sZ2V0Qm91bmRzOmZ1bmN0aW9uKCl7dmFyIHQsZT1uZXcgcztmb3IodCBpbiB0aGlzLl9sYXllcnMpe3ZhciBpPXRoaXMuX2xheWVyc1t0XTtlLmV4dGVuZChpLmdldEJvdW5kcz9pLmdldEJvdW5kcygpOmkuZ2V0TGF0TG5nKCkpfXJldHVybiBlfX0pLGRpPWV0LmV4dGVuZCh7b3B0aW9uczp7cG9wdXBBbmNob3I6WzAsMF0sdG9vbHRpcEFuY2hvcjpbMCwwXSxjcm9zc09yaWdpbjohMX0saW5pdGlhbGl6ZTpmdW5jdGlvbih0KXtjKHRoaXMsdCl9LGNyZWF0ZUljb246ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2NyZWF0ZUljb24oImljb24iLHQpfSxjcmVhdGVTaGFkb3c6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2NyZWF0ZUljb24oInNoYWRvdyIsdCl9LF9jcmVhdGVJY29uOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5fZ2V0SWNvblVybCh0KTtpZihpKXJldHVybiBpPXRoaXMuX2NyZWF0ZUltZyhpLGUmJiJJTUciPT09ZS50YWdOYW1lP2U6bnVsbCksdGhpcy5fc2V0SWNvblN0eWxlcyhpLHQpLCF0aGlzLm9wdGlvbnMuY3Jvc3NPcmlnaW4mJiIiIT09dGhpcy5vcHRpb25zLmNyb3NzT3JpZ2lufHwoaS5jcm9zc09yaWdpbj0hMD09PXRoaXMub3B0aW9ucy5jcm9zc09yaWdpbj8iIjp0aGlzLm9wdGlvbnMuY3Jvc3NPcmlnaW4pLGk7aWYoImljb24iPT09dCl0aHJvdyBuZXcgRXJyb3IoImljb25Vcmwgbm90IHNldCBpbiBJY29uIG9wdGlvbnMgKHNlZSB0aGUgZG9jcykuIik7cmV0dXJuIG51bGx9LF9zZXRJY29uU3R5bGVzOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5vcHRpb25zLG49aVtlKyJTaXplIl0sbj1tKG49Im51bWJlciI9PXR5cGVvZiBuP1tuLG5dOm4pLG89bSgic2hhZG93Ij09PWUmJmkuc2hhZG93QW5jaG9yfHxpLmljb25BbmNob3J8fG4mJm4uZGl2aWRlQnkoMiwhMCkpO3QuY2xhc3NOYW1lPSJsZWFmbGV0LW1hcmtlci0iK2UrIiAiKyhpLmNsYXNzTmFtZXx8IiIpLG8mJih0LnN0eWxlLm1hcmdpbkxlZnQ9LW8ueCsicHgiLHQuc3R5bGUubWFyZ2luVG9wPS1vLnkrInB4IiksbiYmKHQuc3R5bGUud2lkdGg9bi54KyJweCIsdC5zdHlsZS5oZWlnaHQ9bi55KyJweCIpfSxfY3JlYXRlSW1nOmZ1bmN0aW9uKHQsZSl7cmV0dXJuKGU9ZXx8ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIikpLnNyYz10LGV9LF9nZXRJY29uVXJsOmZ1bmN0aW9uKHQpe3JldHVybiBiLnJldGluYSYmdGhpcy5vcHRpb25zW3QrIlJldGluYVVybCJdfHx0aGlzLm9wdGlvbnNbdCsiVXJsIl19fSk7dmFyIF9pPWRpLmV4dGVuZCh7b3B0aW9uczp7aWNvblVybDoibWFya2VyLWljb24ucG5nIixpY29uUmV0aW5hVXJsOiJtYXJrZXItaWNvbi0yeC5wbmciLHNoYWRvd1VybDoibWFya2VyLXNoYWRvdy5wbmciLGljb25TaXplOlsyNSw0MV0saWNvbkFuY2hvcjpbMTIsNDFdLHBvcHVwQW5jaG9yOlsxLC0zNF0sdG9vbHRpcEFuY2hvcjpbMTYsLTI4XSxzaGFkb3dTaXplOls0MSw0MV19LF9nZXRJY29uVXJsOmZ1bmN0aW9uKHQpe3JldHVybiJzdHJpbmciIT10eXBlb2YgX2kuaW1hZ2VQYXRoJiYoX2kuaW1hZ2VQYXRoPXRoaXMuX2RldGVjdEljb25QYXRoKCkpLCh0aGlzLm9wdGlvbnMuaW1hZ2VQYXRofHxfaS5pbWFnZVBhdGgpK2RpLnByb3RvdHlwZS5fZ2V0SWNvblVybC5jYWxsKHRoaXMsdCl9LF9zdHJpcFVybDpmdW5jdGlvbih0KXtmdW5jdGlvbiBlKHQsZSxpKXtyZXR1cm4oZT1lLmV4ZWModCkpJiZlW2ldfXJldHVybih0PWUodCwvXnVybFwoKFsnIl0pPyguKylcMVwpJC8sMikpJiZlKHQsL14oLiopbWFya2VyLWljb25cLnBuZyQvLDEpfSxfZGV0ZWN0SWNvblBhdGg6ZnVuY3Rpb24oKXt2YXIgdD1QKCJkaXYiLCJsZWFmbGV0LWRlZmF1bHQtaWNvbi1wYXRoIixkb2N1bWVudC5ib2R5KSxlPXBlKHQsImJhY2tncm91bmQtaW1hZ2UiKXx8cGUodCwiYmFja2dyb3VuZEltYWdlIik7cmV0dXJuIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodCksKGU9dGhpcy5fc3RyaXBVcmwoZSkpP2U6KHQ9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignbGlua1tocmVmJD0ibGVhZmxldC5jc3MiXScpKT90LmhyZWYuc3Vic3RyaW5nKDAsdC5ocmVmLmxlbmd0aC0ibGVhZmxldC5jc3MiLmxlbmd0aC0xKToiIn19KSxwaT1uLmV4dGVuZCh7aW5pdGlhbGl6ZTpmdW5jdGlvbih0KXt0aGlzLl9tYXJrZXI9dH0sYWRkSG9va3M6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9tYXJrZXIuX2ljb247dGhpcy5fZHJhZ2dhYmxlfHwodGhpcy5fZHJhZ2dhYmxlPW5ldyBYZSh0LHQsITApKSx0aGlzLl9kcmFnZ2FibGUub24oe2RyYWdzdGFydDp0aGlzLl9vbkRyYWdTdGFydCxwcmVkcmFnOnRoaXMuX29uUHJlRHJhZyxkcmFnOnRoaXMuX29uRHJhZyxkcmFnZW5kOnRoaXMuX29uRHJhZ0VuZH0sdGhpcykuZW5hYmxlKCksTSh0LCJsZWFmbGV0LW1hcmtlci1kcmFnZ2FibGUiKX0scmVtb3ZlSG9va3M6ZnVuY3Rpb24oKXt0aGlzLl9kcmFnZ2FibGUub2ZmKHtkcmFnc3RhcnQ6dGhpcy5fb25EcmFnU3RhcnQscHJlZHJhZzp0aGlzLl9vblByZURyYWcsZHJhZzp0aGlzLl9vbkRyYWcsZHJhZ2VuZDp0aGlzLl9vbkRyYWdFbmR9LHRoaXMpLmRpc2FibGUoKSx0aGlzLl9tYXJrZXIuX2ljb24mJnoodGhpcy5fbWFya2VyLl9pY29uLCJsZWFmbGV0LW1hcmtlci1kcmFnZ2FibGUiKX0sbW92ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZHJhZ2dhYmxlJiZ0aGlzLl9kcmFnZ2FibGUuX21vdmVkfSxfYWRqdXN0UGFuOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX21hcmtlcixpPWUuX21hcCxuPXRoaXMuX21hcmtlci5vcHRpb25zLmF1dG9QYW5TcGVlZCxvPXRoaXMuX21hcmtlci5vcHRpb25zLmF1dG9QYW5QYWRkaW5nLHM9UGUoZS5faWNvbikscj1pLmdldFBpeGVsQm91bmRzKCksYT1pLmdldFBpeGVsT3JpZ2luKCksYT1fKHIubWluLl9zdWJ0cmFjdChhKS5hZGQobyksci5tYXguX3N1YnRyYWN0KGEpLnN1YnRyYWN0KG8pKTthLmNvbnRhaW5zKHMpfHwobz1tKChNYXRoLm1heChhLm1heC54LHMueCktYS5tYXgueCkvKHIubWF4LngtYS5tYXgueCktKE1hdGgubWluKGEubWluLngscy54KS1hLm1pbi54KS8oci5taW4ueC1hLm1pbi54KSwoTWF0aC5tYXgoYS5tYXgueSxzLnkpLWEubWF4LnkpLyhyLm1heC55LWEubWF4LnkpLShNYXRoLm1pbihhLm1pbi55LHMueSktYS5taW4ueSkvKHIubWluLnktYS5taW4ueSkpLm11bHRpcGx5QnkobiksaS5wYW5CeShvLHthbmltYXRlOiExfSksdGhpcy5fZHJhZ2dhYmxlLl9uZXdQb3MuX2FkZChvKSx0aGlzLl9kcmFnZ2FibGUuX3N0YXJ0UG9zLl9hZGQobyksWihlLl9pY29uLHRoaXMuX2RyYWdnYWJsZS5fbmV3UG9zKSx0aGlzLl9vbkRyYWcodCksdGhpcy5fcGFuUmVxdWVzdD14KHRoaXMuX2FkanVzdFBhbi5iaW5kKHRoaXMsdCkpKX0sX29uRHJhZ1N0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fb2xkTGF0TG5nPXRoaXMuX21hcmtlci5nZXRMYXRMbmcoKSx0aGlzLl9tYXJrZXIuY2xvc2VQb3B1cCYmdGhpcy5fbWFya2VyLmNsb3NlUG9wdXAoKSx0aGlzLl9tYXJrZXIuZmlyZSgibW92ZXN0YXJ0IikuZmlyZSgiZHJhZ3N0YXJ0Iil9LF9vblByZURyYWc6ZnVuY3Rpb24odCl7dGhpcy5fbWFya2VyLm9wdGlvbnMuYXV0b1BhbiYmKHIodGhpcy5fcGFuUmVxdWVzdCksdGhpcy5fcGFuUmVxdWVzdD14KHRoaXMuX2FkanVzdFBhbi5iaW5kKHRoaXMsdCkpKX0sX29uRHJhZzpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9tYXJrZXIsaT1lLl9zaGFkb3csbj1QZShlLl9pY29uKSxvPWUuX21hcC5sYXllclBvaW50VG9MYXRMbmcobik7aSYmWihpLG4pLGUuX2xhdGxuZz1vLHQubGF0bG5nPW8sdC5vbGRMYXRMbmc9dGhpcy5fb2xkTGF0TG5nLGUuZmlyZSgibW92ZSIsdCkuZmlyZSgiZHJhZyIsdCl9LF9vbkRyYWdFbmQ6ZnVuY3Rpb24odCl7cih0aGlzLl9wYW5SZXF1ZXN0KSxkZWxldGUgdGhpcy5fb2xkTGF0TG5nLHRoaXMuX21hcmtlci5maXJlKCJtb3ZlZW5kIikuZmlyZSgiZHJhZ2VuZCIsdCl9fSksbWk9by5leHRlbmQoe29wdGlvbnM6e2ljb246bmV3IF9pLGludGVyYWN0aXZlOiEwLGtleWJvYXJkOiEwLHRpdGxlOiIiLGFsdDoiTWFya2VyIix6SW5kZXhPZmZzZXQ6MCxvcGFjaXR5OjEscmlzZU9uSG92ZXI6ITEscmlzZU9mZnNldDoyNTAscGFuZToibWFya2VyUGFuZSIsc2hhZG93UGFuZToic2hhZG93UGFuZSIsYnViYmxpbmdNb3VzZUV2ZW50czohMSxhdXRvUGFuT25Gb2N1czohMCxkcmFnZ2FibGU6ITEsYXV0b1BhbjohMSxhdXRvUGFuUGFkZGluZzpbNTAsNTBdLGF1dG9QYW5TcGVlZDoxMH0saW5pdGlhbGl6ZTpmdW5jdGlvbih0LGUpe2ModGhpcyxlKSx0aGlzLl9sYXRsbmc9dyh0KX0sb25BZGQ6ZnVuY3Rpb24odCl7dGhpcy5fem9vbUFuaW1hdGVkPXRoaXMuX3pvb21BbmltYXRlZCYmdC5vcHRpb25zLm1hcmtlclpvb21BbmltYXRpb24sdGhpcy5fem9vbUFuaW1hdGVkJiZ0Lm9uKCJ6b29tYW5pbSIsdGhpcy5fYW5pbWF0ZVpvb20sdGhpcyksdGhpcy5faW5pdEljb24oKSx0aGlzLnVwZGF0ZSgpfSxvblJlbW92ZTpmdW5jdGlvbih0KXt0aGlzLmRyYWdnaW5nJiZ0aGlzLmRyYWdnaW5nLmVuYWJsZWQoKSYmKHRoaXMub3B0aW9ucy5kcmFnZ2FibGU9ITAsdGhpcy5kcmFnZ2luZy5yZW1vdmVIb29rcygpKSxkZWxldGUgdGhpcy5kcmFnZ2luZyx0aGlzLl96b29tQW5pbWF0ZWQmJnQub2ZmKCJ6b29tYW5pbSIsdGhpcy5fYW5pbWF0ZVpvb20sdGhpcyksdGhpcy5fcmVtb3ZlSWNvbigpLHRoaXMuX3JlbW92ZVNoYWRvdygpfSxnZXRFdmVudHM6ZnVuY3Rpb24oKXtyZXR1cm57em9vbTp0aGlzLnVwZGF0ZSx2aWV3cmVzZXQ6dGhpcy51cGRhdGV9fSxnZXRMYXRMbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbGF0bG5nfSxzZXRMYXRMbmc6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbGF0bG5nO3JldHVybiB0aGlzLl9sYXRsbmc9dyh0KSx0aGlzLnVwZGF0ZSgpLHRoaXMuZmlyZSgibW92ZSIse29sZExhdExuZzplLGxhdGxuZzp0aGlzLl9sYXRsbmd9KX0sc2V0WkluZGV4T2Zmc2V0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm9wdGlvbnMuekluZGV4T2Zmc2V0PXQsdGhpcy51cGRhdGUoKX0sZ2V0SWNvbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9wdGlvbnMuaWNvbn0sc2V0SWNvbjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5vcHRpb25zLmljb249dCx0aGlzLl9tYXAmJih0aGlzLl9pbml0SWNvbigpLHRoaXMudXBkYXRlKCkpLHRoaXMuX3BvcHVwJiZ0aGlzLmJpbmRQb3B1cCh0aGlzLl9wb3B1cCx0aGlzLl9wb3B1cC5vcHRpb25zKSx0aGlzfSxnZXRFbGVtZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ljb259LHVwZGF0ZTpmdW5jdGlvbigpe3ZhciB0O3JldHVybiB0aGlzLl9pY29uJiZ0aGlzLl9tYXAmJih0PXRoaXMuX21hcC5sYXRMbmdUb0xheWVyUG9pbnQodGhpcy5fbGF0bG5nKS5yb3VuZCgpLHRoaXMuX3NldFBvcyh0KSksdGhpc30sX2luaXRJY29uOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpb25zLGU9ImxlYWZsZXQtem9vbS0iKyh0aGlzLl96b29tQW5pbWF0ZWQ/ImFuaW1hdGVkIjoiaGlkZSIpLGk9dC5pY29uLmNyZWF0ZUljb24odGhpcy5faWNvbiksbj0hMSxpPShpIT09dGhpcy5faWNvbiYmKHRoaXMuX2ljb24mJnRoaXMuX3JlbW92ZUljb24oKSxuPSEwLHQudGl0bGUmJihpLnRpdGxlPXQudGl0bGUpLCJJTUciPT09aS50YWdOYW1lJiYoaS5hbHQ9dC5hbHR8fCIiKSksTShpLGUpLHQua2V5Ym9hcmQmJihpLnRhYkluZGV4PSIwIixpLnNldEF0dHJpYnV0ZSgicm9sZSIsImJ1dHRvbiIpKSx0aGlzLl9pY29uPWksdC5yaXNlT25Ib3ZlciYmdGhpcy5vbih7bW91c2VvdmVyOnRoaXMuX2JyaW5nVG9Gcm9udCxtb3VzZW91dDp0aGlzLl9yZXNldFpJbmRleH0pLHRoaXMub3B0aW9ucy5hdXRvUGFuT25Gb2N1cyYmUyhpLCJmb2N1cyIsdGhpcy5fcGFuT25Gb2N1cyx0aGlzKSx0Lmljb24uY3JlYXRlU2hhZG93KHRoaXMuX3NoYWRvdykpLG89ITE7aSE9PXRoaXMuX3NoYWRvdyYmKHRoaXMuX3JlbW92ZVNoYWRvdygpLG89ITApLGkmJihNKGksZSksaS5hbHQ9IiIpLHRoaXMuX3NoYWRvdz1pLHQub3BhY2l0eTwxJiZ0aGlzLl91cGRhdGVPcGFjaXR5KCksbiYmdGhpcy5nZXRQYW5lKCkuYXBwZW5kQ2hpbGQodGhpcy5faWNvbiksdGhpcy5faW5pdEludGVyYWN0aW9uKCksaSYmbyYmdGhpcy5nZXRQYW5lKHQuc2hhZG93UGFuZSkuYXBwZW5kQ2hpbGQodGhpcy5fc2hhZG93KX0sX3JlbW92ZUljb246ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMucmlzZU9uSG92ZXImJnRoaXMub2ZmKHttb3VzZW92ZXI6dGhpcy5fYnJpbmdUb0Zyb250LG1vdXNlb3V0OnRoaXMuX3Jlc2V0WkluZGV4fSksdGhpcy5vcHRpb25zLmF1dG9QYW5PbkZvY3VzJiZrKHRoaXMuX2ljb24sImZvY3VzIix0aGlzLl9wYW5PbkZvY3VzLHRoaXMpLFQodGhpcy5faWNvbiksdGhpcy5yZW1vdmVJbnRlcmFjdGl2ZVRhcmdldCh0aGlzLl9pY29uKSx0aGlzLl9pY29uPW51bGx9LF9yZW1vdmVTaGFkb3c6ZnVuY3Rpb24oKXt0aGlzLl9zaGFkb3cmJlQodGhpcy5fc2hhZG93KSx0aGlzLl9zaGFkb3c9bnVsbH0sX3NldFBvczpmdW5jdGlvbih0KXt0aGlzLl9pY29uJiZaKHRoaXMuX2ljb24sdCksdGhpcy5fc2hhZG93JiZaKHRoaXMuX3NoYWRvdyx0KSx0aGlzLl96SW5kZXg9dC55K3RoaXMub3B0aW9ucy56SW5kZXhPZmZzZXQsdGhpcy5fcmVzZXRaSW5kZXgoKX0sX3VwZGF0ZVpJbmRleDpmdW5jdGlvbih0KXt0aGlzLl9pY29uJiYodGhpcy5faWNvbi5zdHlsZS56SW5kZXg9dGhpcy5fekluZGV4K3QpfSxfYW5pbWF0ZVpvb206ZnVuY3Rpb24odCl7dD10aGlzLl9tYXAuX2xhdExuZ1RvTmV3TGF5ZXJQb2ludCh0aGlzLl9sYXRsbmcsdC56b29tLHQuY2VudGVyKS5yb3VuZCgpO3RoaXMuX3NldFBvcyh0KX0sX2luaXRJbnRlcmFjdGlvbjpmdW5jdGlvbigpe3ZhciB0O3RoaXMub3B0aW9ucy5pbnRlcmFjdGl2ZSYmKE0odGhpcy5faWNvbiwibGVhZmxldC1pbnRlcmFjdGl2ZSIpLHRoaXMuYWRkSW50ZXJhY3RpdmVUYXJnZXQodGhpcy5faWNvbikscGkmJih0PXRoaXMub3B0aW9ucy5kcmFnZ2FibGUsdGhpcy5kcmFnZ2luZyYmKHQ9dGhpcy5kcmFnZ2luZy5lbmFibGVkKCksdGhpcy5kcmFnZ2luZy5kaXNhYmxlKCkpLHRoaXMuZHJhZ2dpbmc9bmV3IHBpKHRoaXMpLHQmJnRoaXMuZHJhZ2dpbmcuZW5hYmxlKCkpKX0sc2V0T3BhY2l0eTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5vcHRpb25zLm9wYWNpdHk9dCx0aGlzLl9tYXAmJnRoaXMuX3VwZGF0ZU9wYWNpdHkoKSx0aGlzfSxfdXBkYXRlT3BhY2l0eTpmdW5jdGlvbigpe3ZhciB0PXRoaXMub3B0aW9ucy5vcGFjaXR5O3RoaXMuX2ljb24mJkModGhpcy5faWNvbix0KSx0aGlzLl9zaGFkb3cmJkModGhpcy5fc2hhZG93LHQpfSxfYnJpbmdUb0Zyb250OmZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlWkluZGV4KHRoaXMub3B0aW9ucy5yaXNlT2Zmc2V0KX0sX3Jlc2V0WkluZGV4OmZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlWkluZGV4KDApfSxfcGFuT25Gb2N1czpmdW5jdGlvbigpe3ZhciB0LGUsaT10aGlzLl9tYXA7aSYmKHQ9KGU9dGhpcy5vcHRpb25zLmljb24ub3B0aW9ucykuaWNvblNpemU/bShlLmljb25TaXplKTptKDAsMCksZT1lLmljb25BbmNob3I/bShlLmljb25BbmNob3IpOm0oMCwwKSxpLnBhbkluc2lkZSh0aGlzLl9sYXRsbmcse3BhZGRpbmdUb3BMZWZ0OmUscGFkZGluZ0JvdHRvbVJpZ2h0OnQuc3VidHJhY3QoZSl9KSl9LF9nZXRQb3B1cEFuY2hvcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9wdGlvbnMuaWNvbi5vcHRpb25zLnBvcHVwQW5jaG9yfSxfZ2V0VG9vbHRpcEFuY2hvcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9wdGlvbnMuaWNvbi5vcHRpb25zLnRvb2x0aXBBbmNob3J9fSk7dmFyIGZpPW8uZXh0ZW5kKHtvcHRpb25zOntzdHJva2U6ITAsY29sb3I6IiMzMzg4ZmYiLHdlaWdodDozLG9wYWNpdHk6MSxsaW5lQ2FwOiJyb3VuZCIsbGluZUpvaW46InJvdW5kIixkYXNoQXJyYXk6bnVsbCxkYXNoT2Zmc2V0Om51bGwsZmlsbDohMSxmaWxsQ29sb3I6bnVsbCxmaWxsT3BhY2l0eTouMixmaWxsUnVsZToiZXZlbm9kZCIsaW50ZXJhY3RpdmU6ITAsYnViYmxpbmdNb3VzZUV2ZW50czohMH0sYmVmb3JlQWRkOmZ1bmN0aW9uKHQpe3RoaXMuX3JlbmRlcmVyPXQuZ2V0UmVuZGVyZXIodGhpcyl9LG9uQWRkOmZ1bmN0aW9uKCl7dGhpcy5fcmVuZGVyZXIuX2luaXRQYXRoKHRoaXMpLHRoaXMuX3Jlc2V0KCksdGhpcy5fcmVuZGVyZXIuX2FkZFBhdGgodGhpcyl9LG9uUmVtb3ZlOmZ1bmN0aW9uKCl7dGhpcy5fcmVuZGVyZXIuX3JlbW92ZVBhdGgodGhpcyl9LHJlZHJhdzpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tYXAmJnRoaXMuX3JlbmRlcmVyLl91cGRhdGVQYXRoKHRoaXMpLHRoaXN9LHNldFN0eWxlOmZ1bmN0aW9uKHQpe3JldHVybiBjKHRoaXMsdCksdGhpcy5fcmVuZGVyZXImJih0aGlzLl9yZW5kZXJlci5fdXBkYXRlU3R5bGUodGhpcyksdGhpcy5vcHRpb25zLnN0cm9rZSYmdCYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsIndlaWdodCIpJiZ0aGlzLl91cGRhdGVCb3VuZHMoKSksdGhpc30sYnJpbmdUb0Zyb250OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlbmRlcmVyJiZ0aGlzLl9yZW5kZXJlci5fYnJpbmdUb0Zyb250KHRoaXMpLHRoaXN9LGJyaW5nVG9CYWNrOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlbmRlcmVyJiZ0aGlzLl9yZW5kZXJlci5fYnJpbmdUb0JhY2sodGhpcyksdGhpc30sZ2V0RWxlbWVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wYXRofSxfcmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLl9wcm9qZWN0KCksdGhpcy5fdXBkYXRlKCl9LF9jbGlja1RvbGVyYW5jZTpmdW5jdGlvbigpe3JldHVybih0aGlzLm9wdGlvbnMuc3Ryb2tlP3RoaXMub3B0aW9ucy53ZWlnaHQvMjowKSsodGhpcy5fcmVuZGVyZXIub3B0aW9ucy50b2xlcmFuY2V8fDApfX0pLGdpPWZpLmV4dGVuZCh7b3B0aW9uczp7ZmlsbDohMCxyYWRpdXM6MTB9LGluaXRpYWxpemU6ZnVuY3Rpb24odCxlKXtjKHRoaXMsZSksdGhpcy5fbGF0bG5nPXcodCksdGhpcy5fcmFkaXVzPXRoaXMub3B0aW9ucy5yYWRpdXN9LHNldExhdExuZzpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9sYXRsbmc7cmV0dXJuIHRoaXMuX2xhdGxuZz13KHQpLHRoaXMucmVkcmF3KCksdGhpcy5maXJlKCJtb3ZlIix7b2xkTGF0TG5nOmUsbGF0bG5nOnRoaXMuX2xhdGxuZ30pfSxnZXRMYXRMbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbGF0bG5nfSxzZXRSYWRpdXM6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMub3B0aW9ucy5yYWRpdXM9dGhpcy5fcmFkaXVzPXQsdGhpcy5yZWRyYXcoKX0sZ2V0UmFkaXVzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JhZGl1c30sc2V0U3R5bGU6ZnVuY3Rpb24odCl7dmFyIGU9dCYmdC5yYWRpdXN8fHRoaXMuX3JhZGl1cztyZXR1cm4gZmkucHJvdG90eXBlLnNldFN0eWxlLmNhbGwodGhpcyx0KSx0aGlzLnNldFJhZGl1cyhlKSx0aGlzfSxfcHJvamVjdDpmdW5jdGlvbigpe3RoaXMuX3BvaW50PXRoaXMuX21hcC5sYXRMbmdUb0xheWVyUG9pbnQodGhpcy5fbGF0bG5nKSx0aGlzLl91cGRhdGVCb3VuZHMoKX0sX3VwZGF0ZUJvdW5kczpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3JhZGl1cyxlPXRoaXMuX3JhZGl1c1l8fHQsaT10aGlzLl9jbGlja1RvbGVyYW5jZSgpLHQ9W3QraSxlK2ldO3RoaXMuX3B4Qm91bmRzPW5ldyBmKHRoaXMuX3BvaW50LnN1YnRyYWN0KHQpLHRoaXMuX3BvaW50LmFkZCh0KSl9LF91cGRhdGU6ZnVuY3Rpb24oKXt0aGlzLl9tYXAmJnRoaXMuX3VwZGF0ZVBhdGgoKX0sX3VwZGF0ZVBhdGg6ZnVuY3Rpb24oKXt0aGlzLl9yZW5kZXJlci5fdXBkYXRlQ2lyY2xlKHRoaXMpfSxfZW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmFkaXVzJiYhdGhpcy5fcmVuZGVyZXIuX2JvdW5kcy5pbnRlcnNlY3RzKHRoaXMuX3B4Qm91bmRzKX0sX2NvbnRhaW5zUG9pbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQuZGlzdGFuY2VUbyh0aGlzLl9wb2ludCk8PXRoaXMuX3JhZGl1cyt0aGlzLl9jbGlja1RvbGVyYW5jZSgpfX0pO3ZhciB2aT1naS5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24odCxlLGkpe2lmKGModGhpcyxlPSJudW1iZXIiPT10eXBlb2YgZT9sKHt9LGkse3JhZGl1czplfSk6ZSksdGhpcy5fbGF0bG5nPXcodCksaXNOYU4odGhpcy5vcHRpb25zLnJhZGl1cykpdGhyb3cgbmV3IEVycm9yKCJDaXJjbGUgcmFkaXVzIGNhbm5vdCBiZSBOYU4iKTt0aGlzLl9tUmFkaXVzPXRoaXMub3B0aW9ucy5yYWRpdXN9LHNldFJhZGl1czpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fbVJhZGl1cz10LHRoaXMucmVkcmF3KCl9LGdldFJhZGl1czpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tUmFkaXVzfSxnZXRCb3VuZHM6ZnVuY3Rpb24oKXt2YXIgdD1bdGhpcy5fcmFkaXVzLHRoaXMuX3JhZGl1c1l8fHRoaXMuX3JhZGl1c107cmV0dXJuIG5ldyBzKHRoaXMuX21hcC5sYXllclBvaW50VG9MYXRMbmcodGhpcy5fcG9pbnQuc3VidHJhY3QodCkpLHRoaXMuX21hcC5sYXllclBvaW50VG9MYXRMbmcodGhpcy5fcG9pbnQuYWRkKHQpKSl9LHNldFN0eWxlOmZpLnByb3RvdHlwZS5zZXRTdHlsZSxfcHJvamVjdDpmdW5jdGlvbigpe3ZhciB0LGUsaSxuLG8scz10aGlzLl9sYXRsbmcubG5nLHI9dGhpcy5fbGF0bG5nLmxhdCxhPXRoaXMuX21hcCxoPWEub3B0aW9ucy5jcnM7aC5kaXN0YW5jZT09PXN0LmRpc3RhbmNlPyhuPU1hdGguUEkvMTgwLG89dGhpcy5fbVJhZGl1cy9zdC5SL24sdD1hLnByb2plY3QoW3IrbyxzXSksZT1hLnByb2plY3QoW3ItbyxzXSksZT10LmFkZChlKS5kaXZpZGVCeSgyKSxpPWEudW5wcm9qZWN0KGUpLmxhdCxuPU1hdGguYWNvcygoTWF0aC5jb3MobypuKS1NYXRoLnNpbihyKm4pKk1hdGguc2luKGkqbikpLyhNYXRoLmNvcyhyKm4pKk1hdGguY29zKGkqbikpKS9uLCFpc05hTihuKSYmMCE9PW58fChuPW8vTWF0aC5jb3MoTWF0aC5QSS8xODAqcikpLHRoaXMuX3BvaW50PWUuc3VidHJhY3QoYS5nZXRQaXhlbE9yaWdpbigpKSx0aGlzLl9yYWRpdXM9aXNOYU4obik/MDplLngtYS5wcm9qZWN0KFtpLHMtbl0pLngsdGhpcy5fcmFkaXVzWT1lLnktdC55KToobz1oLnVucHJvamVjdChoLnByb2plY3QodGhpcy5fbGF0bG5nKS5zdWJ0cmFjdChbdGhpcy5fbVJhZGl1cywwXSkpLHRoaXMuX3BvaW50PWEubGF0TG5nVG9MYXllclBvaW50KHRoaXMuX2xhdGxuZyksdGhpcy5fcmFkaXVzPXRoaXMuX3BvaW50LngtYS5sYXRMbmdUb0xheWVyUG9pbnQobykueCksdGhpcy5fdXBkYXRlQm91bmRzKCl9fSk7dmFyIHlpPWZpLmV4dGVuZCh7b3B0aW9uczp7c21vb3RoRmFjdG9yOjEsbm9DbGlwOiExfSxpbml0aWFsaXplOmZ1bmN0aW9uKHQsZSl7Yyh0aGlzLGUpLHRoaXMuX3NldExhdExuZ3ModCl9LGdldExhdExuZ3M6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbGF0bG5nc30sc2V0TGF0TG5nczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fc2V0TGF0TG5ncyh0KSx0aGlzLnJlZHJhdygpfSxpc0VtcHR5OmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuX2xhdGxuZ3MubGVuZ3RofSxjbG9zZXN0TGF5ZXJQb2ludDpmdW5jdGlvbih0KXtmb3IodmFyIGU9MS8wLGk9bnVsbCxuPXJpLG89MCxzPXRoaXMuX3BhcnRzLmxlbmd0aDtvPHM7bysrKWZvcih2YXIgcj10aGlzLl9wYXJ0c1tvXSxhPTEsaD1yLmxlbmd0aDthPGg7YSsrKXt2YXIgbCx1LGM9bih0LGw9clthLTFdLHU9clthXSwhMCk7YzxlJiYoZT1jLGk9bih0LGwsdSkpfXJldHVybiBpJiYoaS5kaXN0YW5jZT1NYXRoLnNxcnQoZSkpLGl9LGdldENlbnRlcjpmdW5jdGlvbigpe2lmKHRoaXMuX21hcClyZXR1cm4gaGkodGhpcy5fZGVmYXVsdFNoYXBlKCksdGhpcy5fbWFwLm9wdGlvbnMuY3JzKTt0aHJvdyBuZXcgRXJyb3IoIk11c3QgYWRkIGxheWVyIHRvIG1hcCBiZWZvcmUgdXNpbmcgZ2V0Q2VudGVyKCkiKX0sZ2V0Qm91bmRzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2JvdW5kc30sYWRkTGF0TG5nOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGU9ZXx8dGhpcy5fZGVmYXVsdFNoYXBlKCksdD13KHQpLGUucHVzaCh0KSx0aGlzLl9ib3VuZHMuZXh0ZW5kKHQpLHRoaXMucmVkcmF3KCl9LF9zZXRMYXRMbmdzOmZ1bmN0aW9uKHQpe3RoaXMuX2JvdW5kcz1uZXcgcyx0aGlzLl9sYXRsbmdzPXRoaXMuX2NvbnZlcnRMYXRMbmdzKHQpfSxfZGVmYXVsdFNoYXBlOmZ1bmN0aW9uKCl7cmV0dXJuIEkodGhpcy5fbGF0bG5ncyk/dGhpcy5fbGF0bG5nczp0aGlzLl9sYXRsbmdzWzBdfSxfY29udmVydExhdExuZ3M6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPVtdLGk9SSh0KSxuPTAsbz10Lmxlbmd0aDtuPG87bisrKWk/KGVbbl09dyh0W25dKSx0aGlzLl9ib3VuZHMuZXh0ZW5kKGVbbl0pKTplW25dPXRoaXMuX2NvbnZlcnRMYXRMbmdzKHRbbl0pO3JldHVybiBlfSxfcHJvamVjdDpmdW5jdGlvbigpe3ZhciB0PW5ldyBmO3RoaXMuX3JpbmdzPVtdLHRoaXMuX3Byb2plY3RMYXRsbmdzKHRoaXMuX2xhdGxuZ3MsdGhpcy5fcmluZ3MsdCksdGhpcy5fYm91bmRzLmlzVmFsaWQoKSYmdC5pc1ZhbGlkKCkmJih0aGlzLl9yYXdQeEJvdW5kcz10LHRoaXMuX3VwZGF0ZUJvdW5kcygpKX0sX3VwZGF0ZUJvdW5kczpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2NsaWNrVG9sZXJhbmNlKCksdD1uZXcgcCh0LHQpO3RoaXMuX3Jhd1B4Qm91bmRzJiYodGhpcy5fcHhCb3VuZHM9bmV3IGYoW3RoaXMuX3Jhd1B4Qm91bmRzLm1pbi5zdWJ0cmFjdCh0KSx0aGlzLl9yYXdQeEJvdW5kcy5tYXguYWRkKHQpXSkpfSxfcHJvamVjdExhdGxuZ3M6ZnVuY3Rpb24odCxlLGkpe3ZhciBuLG8scz10WzBdaW5zdGFuY2VvZiB2LHI9dC5sZW5ndGg7aWYocyl7Zm9yKG89W10sbj0wO248cjtuKyspb1tuXT10aGlzLl9tYXAubGF0TG5nVG9MYXllclBvaW50KHRbbl0pLGkuZXh0ZW5kKG9bbl0pO2UucHVzaChvKX1lbHNlIGZvcihuPTA7bjxyO24rKyl0aGlzLl9wcm9qZWN0TGF0bG5ncyh0W25dLGUsaSl9LF9jbGlwUG9pbnRzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fcmVuZGVyZXIuX2JvdW5kcztpZih0aGlzLl9wYXJ0cz1bXSx0aGlzLl9weEJvdW5kcyYmdGhpcy5fcHhCb3VuZHMuaW50ZXJzZWN0cyh0KSlpZih0aGlzLm9wdGlvbnMubm9DbGlwKXRoaXMuX3BhcnRzPXRoaXMuX3JpbmdzO2Vsc2UgZm9yKHZhciBlLGksbixvLHM9dGhpcy5fcGFydHMscj0wLGE9MCxoPXRoaXMuX3JpbmdzLmxlbmd0aDtyPGg7cisrKWZvcihlPTAsaT0obz10aGlzLl9yaW5nc1tyXSkubGVuZ3RoO2U8aS0xO2UrKykobj1uaShvW2VdLG9bZSsxXSx0LGUsITApKSYmKHNbYV09c1thXXx8W10sc1thXS5wdXNoKG5bMF0pLG5bMV09PT1vW2UrMV0mJmUhPT1pLTJ8fChzW2FdLnB1c2goblsxXSksYSsrKSl9LF9zaW1wbGlmeVBvaW50czpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLl9wYXJ0cyxlPXRoaXMub3B0aW9ucy5zbW9vdGhGYWN0b3IsaT0wLG49dC5sZW5ndGg7aTxuO2krKyl0W2ldPWVpKHRbaV0sZSl9LF91cGRhdGU6ZnVuY3Rpb24oKXt0aGlzLl9tYXAmJih0aGlzLl9jbGlwUG9pbnRzKCksdGhpcy5fc2ltcGxpZnlQb2ludHMoKSx0aGlzLl91cGRhdGVQYXRoKCkpfSxfdXBkYXRlUGF0aDpmdW5jdGlvbigpe3RoaXMuX3JlbmRlcmVyLl91cGRhdGVQb2x5KHRoaXMpfSxfY29udGFpbnNQb2ludDpmdW5jdGlvbih0LGUpe3ZhciBpLG4sbyxzLHIsYSxoPXRoaXMuX2NsaWNrVG9sZXJhbmNlKCk7aWYodGhpcy5fcHhCb3VuZHMmJnRoaXMuX3B4Qm91bmRzLmNvbnRhaW5zKHQpKWZvcihpPTAscz10aGlzLl9wYXJ0cy5sZW5ndGg7aTxzO2krKylmb3Iobj0wLG89KHI9KGE9dGhpcy5fcGFydHNbaV0pLmxlbmd0aCktMTtuPHI7bz1uKyspaWYoKGV8fDAhPT1uKSYmaWkodCxhW29dLGFbbl0pPD1oKXJldHVybiEwO3JldHVybiExfX0pO3lpLl9mbGF0PWFpO3ZhciB4aT15aS5leHRlbmQoe29wdGlvbnM6e2ZpbGw6ITB9LGlzRW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5fbGF0bG5ncy5sZW5ndGh8fCF0aGlzLl9sYXRsbmdzWzBdLmxlbmd0aH0sZ2V0Q2VudGVyOmZ1bmN0aW9uKCl7aWYodGhpcy5fbWFwKXJldHVybiAkZSh0aGlzLl9kZWZhdWx0U2hhcGUoKSx0aGlzLl9tYXAub3B0aW9ucy5jcnMpO3Rocm93IG5ldyBFcnJvcigiTXVzdCBhZGQgbGF5ZXIgdG8gbWFwIGJlZm9yZSB1c2luZyBnZXRDZW50ZXIoKSIpfSxfY29udmVydExhdExuZ3M6ZnVuY3Rpb24odCl7dmFyIHQ9eWkucHJvdG90eXBlLl9jb252ZXJ0TGF0TG5ncy5jYWxsKHRoaXMsdCksZT10Lmxlbmd0aDtyZXR1cm4gMjw9ZSYmdFswXWluc3RhbmNlb2YgdiYmdFswXS5lcXVhbHModFtlLTFdKSYmdC5wb3AoKSx0fSxfc2V0TGF0TG5nczpmdW5jdGlvbih0KXt5aS5wcm90b3R5cGUuX3NldExhdExuZ3MuY2FsbCh0aGlzLHQpLEkodGhpcy5fbGF0bG5ncykmJih0aGlzLl9sYXRsbmdzPVt0aGlzLl9sYXRsbmdzXSl9LF9kZWZhdWx0U2hhcGU6ZnVuY3Rpb24oKXtyZXR1cm4oSSh0aGlzLl9sYXRsbmdzWzBdKT90aGlzLl9sYXRsbmdzOnRoaXMuX2xhdGxuZ3NbMF0pWzBdfSxfY2xpcFBvaW50czpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3JlbmRlcmVyLl9ib3VuZHMsZT10aGlzLm9wdGlvbnMud2VpZ2h0LGU9bmV3IHAoZSxlKSx0PW5ldyBmKHQubWluLnN1YnRyYWN0KGUpLHQubWF4LmFkZChlKSk7aWYodGhpcy5fcGFydHM9W10sdGhpcy5fcHhCb3VuZHMmJnRoaXMuX3B4Qm91bmRzLmludGVyc2VjdHModCkpaWYodGhpcy5vcHRpb25zLm5vQ2xpcCl0aGlzLl9wYXJ0cz10aGlzLl9yaW5ncztlbHNlIGZvcih2YXIgaSxuPTAsbz10aGlzLl9yaW5ncy5sZW5ndGg7bjxvO24rKykoaT1KZSh0aGlzLl9yaW5nc1tuXSx0LCEwKSkubGVuZ3RoJiZ0aGlzLl9wYXJ0cy5wdXNoKGkpfSxfdXBkYXRlUGF0aDpmdW5jdGlvbigpe3RoaXMuX3JlbmRlcmVyLl91cGRhdGVQb2x5KHRoaXMsITApfSxfY29udGFpbnNQb2ludDpmdW5jdGlvbih0KXt2YXIgZSxpLG4sbyxzLHIsYSxoLGw9ITE7aWYoIXRoaXMuX3B4Qm91bmRzfHwhdGhpcy5fcHhCb3VuZHMuY29udGFpbnModCkpcmV0dXJuITE7Zm9yKG89MCxhPXRoaXMuX3BhcnRzLmxlbmd0aDtvPGE7bysrKWZvcihzPTAscj0oaD0oZT10aGlzLl9wYXJ0c1tvXSkubGVuZ3RoKS0xO3M8aDtyPXMrKylpPWVbc10sbj1lW3JdLGkueT50LnkhPW4ueT50LnkmJnQueDwobi54LWkueCkqKHQueS1pLnkpLyhuLnktaS55KStpLngmJihsPSFsKTtyZXR1cm4gbHx8eWkucHJvdG90eXBlLl9jb250YWluc1BvaW50LmNhbGwodGhpcyx0LCEwKX19KTt2YXIgd2k9Y2kuZXh0ZW5kKHtpbml0aWFsaXplOmZ1bmN0aW9uKHQsZSl7Yyh0aGlzLGUpLHRoaXMuX2xheWVycz17fSx0JiZ0aGlzLmFkZERhdGEodCl9LGFkZERhdGE6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLG89ZCh0KT90OnQuZmVhdHVyZXM7aWYobyl7Zm9yKGU9MCxpPW8ubGVuZ3RoO2U8aTtlKyspKChuPW9bZV0pLmdlb21ldHJpZXN8fG4uZ2VvbWV0cnl8fG4uZmVhdHVyZXN8fG4uY29vcmRpbmF0ZXMpJiZ0aGlzLmFkZERhdGEobik7cmV0dXJuIHRoaXN9dmFyIHMscj10aGlzLm9wdGlvbnM7cmV0dXJuKCFyLmZpbHRlcnx8ci5maWx0ZXIodCkpJiYocz1iaSh0LHIpKT8ocy5mZWF0dXJlPVppKHQpLHMuZGVmYXVsdE9wdGlvbnM9cy5vcHRpb25zLHRoaXMucmVzZXRTdHlsZShzKSxyLm9uRWFjaEZlYXR1cmUmJnIub25FYWNoRmVhdHVyZSh0LHMpLHRoaXMuYWRkTGF5ZXIocykpOnRoaXN9LHJlc2V0U3R5bGU6ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PXQ/dGhpcy5lYWNoTGF5ZXIodGhpcy5yZXNldFN0eWxlLHRoaXMpOih0Lm9wdGlvbnM9bCh7fSx0LmRlZmF1bHRPcHRpb25zKSx0aGlzLl9zZXRMYXllclN0eWxlKHQsdGhpcy5vcHRpb25zLnN0eWxlKSx0aGlzKX0sc2V0U3R5bGU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaExheWVyKGZ1bmN0aW9uKHQpe3RoaXMuX3NldExheWVyU3R5bGUodCxlKX0sdGhpcyl9LF9zZXRMYXllclN0eWxlOmZ1bmN0aW9uKHQsZSl7dC5zZXRTdHlsZSYmKCJmdW5jdGlvbiI9PXR5cGVvZiBlJiYoZT1lKHQuZmVhdHVyZSkpLHQuc2V0U3R5bGUoZSkpfX0pO2Z1bmN0aW9uIGJpKHQsZSl7dmFyIGksbixvLHMscj0iRmVhdHVyZSI9PT10LnR5cGU/dC5nZW9tZXRyeTp0LGE9cj9yLmNvb3JkaW5hdGVzOm51bGwsaD1bXSxsPWUmJmUucG9pbnRUb0xheWVyLHU9ZSYmZS5jb29yZHNUb0xhdExuZ3x8TGk7aWYoIWEmJiFyKXJldHVybiBudWxsO3N3aXRjaChyLnR5cGUpe2Nhc2UiUG9pbnQiOnJldHVybiBQaShsLHQsaT11KGEpLGUpO2Nhc2UiTXVsdGlQb2ludCI6Zm9yKG89MCxzPWEubGVuZ3RoO288cztvKyspaT11KGFbb10pLGgucHVzaChQaShsLHQsaSxlKSk7cmV0dXJuIG5ldyBjaShoKTtjYXNlIkxpbmVTdHJpbmciOmNhc2UiTXVsdGlMaW5lU3RyaW5nIjpyZXR1cm4gbj1UaShhLCJMaW5lU3RyaW5nIj09PXIudHlwZT8wOjEsdSksbmV3IHlpKG4sZSk7Y2FzZSJQb2x5Z29uIjpjYXNlIk11bHRpUG9seWdvbiI6cmV0dXJuIG49VGkoYSwiUG9seWdvbiI9PT1yLnR5cGU/MToyLHUpLG5ldyB4aShuLGUpO2Nhc2UiR2VvbWV0cnlDb2xsZWN0aW9uIjpmb3Iobz0wLHM9ci5nZW9tZXRyaWVzLmxlbmd0aDtvPHM7bysrKXt2YXIgYz1iaSh7Z2VvbWV0cnk6ci5nZW9tZXRyaWVzW29dLHR5cGU6IkZlYXR1cmUiLHByb3BlcnRpZXM6dC5wcm9wZXJ0aWVzfSxlKTtjJiZoLnB1c2goYyl9cmV0dXJuIG5ldyBjaShoKTtjYXNlIkZlYXR1cmVDb2xsZWN0aW9uIjpmb3Iobz0wLHM9ci5mZWF0dXJlcy5sZW5ndGg7bzxzO28rKyl7dmFyIGQ9Ymkoci5mZWF0dXJlc1tvXSxlKTtkJiZoLnB1c2goZCl9cmV0dXJuIG5ldyBjaShoKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiSW52YWxpZCBHZW9KU09OIG9iamVjdC4iKX19ZnVuY3Rpb24gUGkodCxlLGksbil7cmV0dXJuIHQ/dChlLGkpOm5ldyBtaShpLG4mJm4ubWFya2Vyc0luaGVyaXRPcHRpb25zJiZuKX1mdW5jdGlvbiBMaSh0KXtyZXR1cm4gbmV3IHYodFsxXSx0WzBdLHRbMl0pfWZ1bmN0aW9uIFRpKHQsZSxpKXtmb3IodmFyIG4sbz1bXSxzPTAscj10Lmxlbmd0aDtzPHI7cysrKW49ZT9UaSh0W3NdLGUtMSxpKTooaXx8TGkpKHRbc10pLG8ucHVzaChuKTtyZXR1cm4gb31mdW5jdGlvbiBNaSh0LGUpe3JldHVybiB2b2lkIDAhPT0odD13KHQpKS5hbHQ/W2kodC5sbmcsZSksaSh0LmxhdCxlKSxpKHQuYWx0LGUpXTpbaSh0LmxuZyxlKSxpKHQubGF0LGUpXX1mdW5jdGlvbiB6aSh0LGUsaSxuKXtmb3IodmFyIG89W10scz0wLHI9dC5sZW5ndGg7czxyO3MrKylvLnB1c2goZT96aSh0W3NdLEkodFtzXSk/MDplLTEsaSxuKTpNaSh0W3NdLG4pKTtyZXR1cm4hZSYmaSYmMDxvLmxlbmd0aCYmby5wdXNoKG9bMF0uc2xpY2UoKSksb31mdW5jdGlvbiBDaSh0LGUpe3JldHVybiB0LmZlYXR1cmU/bCh7fSx0LmZlYXR1cmUse2dlb21ldHJ5OmV9KTpaaShlKX1mdW5jdGlvbiBaaSh0KXtyZXR1cm4iRmVhdHVyZSI9PT10LnR5cGV8fCJGZWF0dXJlQ29sbGVjdGlvbiI9PT10LnR5cGU/dDp7dHlwZToiRmVhdHVyZSIscHJvcGVydGllczp7fSxnZW9tZXRyeTp0fX1UdD17dG9HZW9KU09OOmZ1bmN0aW9uKHQpe3JldHVybiBDaSh0aGlzLHt0eXBlOiJQb2ludCIsY29vcmRpbmF0ZXM6TWkodGhpcy5nZXRMYXRMbmcoKSx0KX0pfX07ZnVuY3Rpb24gU2kodCxlKXtyZXR1cm4gbmV3IHdpKHQsZSl9bWkuaW5jbHVkZShUdCksdmkuaW5jbHVkZShUdCksZ2kuaW5jbHVkZShUdCkseWkuaW5jbHVkZSh7dG9HZW9KU09OOmZ1bmN0aW9uKHQpe3ZhciBlPSFJKHRoaXMuX2xhdGxuZ3MpO3JldHVybiBDaSh0aGlzLHt0eXBlOihlPyJNdWx0aSI6IiIpKyJMaW5lU3RyaW5nIixjb29yZGluYXRlczp6aSh0aGlzLl9sYXRsbmdzLGU/MTowLCExLHQpfSl9fSkseGkuaW5jbHVkZSh7dG9HZW9KU09OOmZ1bmN0aW9uKHQpe3ZhciBlPSFJKHRoaXMuX2xhdGxuZ3MpLGk9ZSYmIUkodGhpcy5fbGF0bG5nc1swXSksdD16aSh0aGlzLl9sYXRsbmdzLGk/MjplPzE6MCwhMCx0KTtyZXR1cm4gQ2kodGhpcyx7dHlwZTooaT8iTXVsdGkiOiIiKSsiUG9seWdvbiIsY29vcmRpbmF0ZXM6dD1lP3Q6W3RdfSl9fSksdWkuaW5jbHVkZSh7dG9NdWx0aVBvaW50OmZ1bmN0aW9uKGUpe3ZhciBpPVtdO3JldHVybiB0aGlzLmVhY2hMYXllcihmdW5jdGlvbih0KXtpLnB1c2godC50b0dlb0pTT04oZSkuZ2VvbWV0cnkuY29vcmRpbmF0ZXMpfSksQ2kodGhpcyx7dHlwZToiTXVsdGlQb2ludCIsY29vcmRpbmF0ZXM6aX0pfSx0b0dlb0pTT046ZnVuY3Rpb24oZSl7dmFyIGksbix0PXRoaXMuZmVhdHVyZSYmdGhpcy5mZWF0dXJlLmdlb21ldHJ5JiZ0aGlzLmZlYXR1cmUuZ2VvbWV0cnkudHlwZTtyZXR1cm4iTXVsdGlQb2ludCI9PT10P3RoaXMudG9NdWx0aVBvaW50KGUpOihpPSJHZW9tZXRyeUNvbGxlY3Rpb24iPT09dCxuPVtdLHRoaXMuZWFjaExheWVyKGZ1bmN0aW9uKHQpe3QudG9HZW9KU09OJiYodD10LnRvR2VvSlNPTihlKSxpP24ucHVzaCh0Lmdlb21ldHJ5KToiRmVhdHVyZUNvbGxlY3Rpb24iPT09KHQ9WmkodCkpLnR5cGU/bi5wdXNoLmFwcGx5KG4sdC5mZWF0dXJlcyk6bi5wdXNoKHQpKX0pLGk/Q2kodGhpcyx7Z2VvbWV0cmllczpuLHR5cGU6Ikdlb21ldHJ5Q29sbGVjdGlvbiJ9KTp7dHlwZToiRmVhdHVyZUNvbGxlY3Rpb24iLGZlYXR1cmVzOm59KX19KTt2YXIgTXQ9U2ksRWk9by5leHRlbmQoe29wdGlvbnM6e29wYWNpdHk6MSxhbHQ6IiIsaW50ZXJhY3RpdmU6ITEsY3Jvc3NPcmlnaW46ITEsZXJyb3JPdmVybGF5VXJsOiIiLHpJbmRleDoxLGNsYXNzTmFtZToiIn0saW5pdGlhbGl6ZTpmdW5jdGlvbih0LGUsaSl7dGhpcy5fdXJsPXQsdGhpcy5fYm91bmRzPWcoZSksYyh0aGlzLGkpfSxvbkFkZDpmdW5jdGlvbigpe3RoaXMuX2ltYWdlfHwodGhpcy5faW5pdEltYWdlKCksdGhpcy5vcHRpb25zLm9wYWNpdHk8MSYmdGhpcy5fdXBkYXRlT3BhY2l0eSgpKSx0aGlzLm9wdGlvbnMuaW50ZXJhY3RpdmUmJihNKHRoaXMuX2ltYWdlLCJsZWFmbGV0LWludGVyYWN0aXZlIiksdGhpcy5hZGRJbnRlcmFjdGl2ZVRhcmdldCh0aGlzLl9pbWFnZSkpLHRoaXMuZ2V0UGFuZSgpLmFwcGVuZENoaWxkKHRoaXMuX2ltYWdlKSx0aGlzLl9yZXNldCgpfSxvblJlbW92ZTpmdW5jdGlvbigpe1QodGhpcy5faW1hZ2UpLHRoaXMub3B0aW9ucy5pbnRlcmFjdGl2ZSYmdGhpcy5yZW1vdmVJbnRlcmFjdGl2ZVRhcmdldCh0aGlzLl9pbWFnZSl9LHNldE9wYWNpdHk6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMub3B0aW9ucy5vcGFjaXR5PXQsdGhpcy5faW1hZ2UmJnRoaXMuX3VwZGF0ZU9wYWNpdHkoKSx0aGlzfSxzZXRTdHlsZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5vcGFjaXR5JiZ0aGlzLnNldE9wYWNpdHkodC5vcGFjaXR5KSx0aGlzfSxicmluZ1RvRnJvbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWFwJiZmZSh0aGlzLl9pbWFnZSksdGhpc30sYnJpbmdUb0JhY2s6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWFwJiZnZSh0aGlzLl9pbWFnZSksdGhpc30sc2V0VXJsOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl91cmw9dCx0aGlzLl9pbWFnZSYmKHRoaXMuX2ltYWdlLnNyYz10KSx0aGlzfSxzZXRCb3VuZHM6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2JvdW5kcz1nKHQpLHRoaXMuX21hcCYmdGhpcy5fcmVzZXQoKSx0aGlzfSxnZXRFdmVudHM6ZnVuY3Rpb24oKXt2YXIgdD17em9vbTp0aGlzLl9yZXNldCx2aWV3cmVzZXQ6dGhpcy5fcmVzZXR9O3JldHVybiB0aGlzLl96b29tQW5pbWF0ZWQmJih0Lnpvb21hbmltPXRoaXMuX2FuaW1hdGVab29tKSx0fSxzZXRaSW5kZXg6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMub3B0aW9ucy56SW5kZXg9dCx0aGlzLl91cGRhdGVaSW5kZXgoKSx0aGlzfSxnZXRCb3VuZHM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYm91bmRzfSxnZXRFbGVtZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ltYWdlfSxfaW5pdEltYWdlOmZ1bmN0aW9uKCl7dmFyIHQ9IklNRyI9PT10aGlzLl91cmwudGFnTmFtZSxlPXRoaXMuX2ltYWdlPXQ/dGhpcy5fdXJsOlAoImltZyIpO00oZSwibGVhZmxldC1pbWFnZS1sYXllciIpLHRoaXMuX3pvb21BbmltYXRlZCYmTShlLCJsZWFmbGV0LXpvb20tYW5pbWF0ZWQiKSx0aGlzLm9wdGlvbnMuY2xhc3NOYW1lJiZNKGUsdGhpcy5vcHRpb25zLmNsYXNzTmFtZSksZS5vbnNlbGVjdHN0YXJ0PXUsZS5vbm1vdXNlbW92ZT11LGUub25sb2FkPWEodGhpcy5maXJlLHRoaXMsImxvYWQiKSxlLm9uZXJyb3I9YSh0aGlzLl9vdmVybGF5T25FcnJvcix0aGlzLCJlcnJvciIpLCF0aGlzLm9wdGlvbnMuY3Jvc3NPcmlnaW4mJiIiIT09dGhpcy5vcHRpb25zLmNyb3NzT3JpZ2lufHwoZS5jcm9zc09yaWdpbj0hMD09PXRoaXMub3B0aW9ucy5jcm9zc09yaWdpbj8iIjp0aGlzLm9wdGlvbnMuY3Jvc3NPcmlnaW4pLHRoaXMub3B0aW9ucy56SW5kZXgmJnRoaXMuX3VwZGF0ZVpJbmRleCgpLHQ/dGhpcy5fdXJsPWUuc3JjOihlLnNyYz10aGlzLl91cmwsZS5hbHQ9dGhpcy5vcHRpb25zLmFsdCl9LF9hbmltYXRlWm9vbTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9tYXAuZ2V0Wm9vbVNjYWxlKHQuem9vbSksdD10aGlzLl9tYXAuX2xhdExuZ0JvdW5kc1RvTmV3TGF5ZXJCb3VuZHModGhpcy5fYm91bmRzLHQuem9vbSx0LmNlbnRlcikubWluO2JlKHRoaXMuX2ltYWdlLHQsZSl9LF9yZXNldDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2ltYWdlLGU9bmV3IGYodGhpcy5fbWFwLmxhdExuZ1RvTGF5ZXJQb2ludCh0aGlzLl9ib3VuZHMuZ2V0Tm9ydGhXZXN0KCkpLHRoaXMuX21hcC5sYXRMbmdUb0xheWVyUG9pbnQodGhpcy5fYm91bmRzLmdldFNvdXRoRWFzdCgpKSksaT1lLmdldFNpemUoKTtaKHQsZS5taW4pLHQuc3R5bGUud2lkdGg9aS54KyJweCIsdC5zdHlsZS5oZWlnaHQ9aS55KyJweCJ9LF91cGRhdGVPcGFjaXR5OmZ1bmN0aW9uKCl7Qyh0aGlzLl9pbWFnZSx0aGlzLm9wdGlvbnMub3BhY2l0eSl9LF91cGRhdGVaSW5kZXg6ZnVuY3Rpb24oKXt0aGlzLl9pbWFnZSYmdm9pZCAwIT09dGhpcy5vcHRpb25zLnpJbmRleCYmbnVsbCE9PXRoaXMub3B0aW9ucy56SW5kZXgmJih0aGlzLl9pbWFnZS5zdHlsZS56SW5kZXg9dGhpcy5vcHRpb25zLnpJbmRleCl9LF9vdmVybGF5T25FcnJvcjpmdW5jdGlvbigpe3RoaXMuZmlyZSgiZXJyb3IiKTt2YXIgdD10aGlzLm9wdGlvbnMuZXJyb3JPdmVybGF5VXJsO3QmJnRoaXMuX3VybCE9PXQmJih0aGlzLl91cmw9dCx0aGlzLl9pbWFnZS5zcmM9dCl9LGdldENlbnRlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9ib3VuZHMuZ2V0Q2VudGVyKCl9fSksa2k9RWkuZXh0ZW5kKHtvcHRpb25zOnthdXRvcGxheTohMCxsb29wOiEwLGtlZXBBc3BlY3RSYXRpbzohMCxtdXRlZDohMSxwbGF5c0lubGluZTohMH0sX2luaXRJbWFnZTpmdW5jdGlvbigpe3ZhciB0PSJWSURFTyI9PT10aGlzLl91cmwudGFnTmFtZSxlPXRoaXMuX2ltYWdlPXQ/dGhpcy5fdXJsOlAoInZpZGVvIik7aWYoTShlLCJsZWFmbGV0LWltYWdlLWxheWVyIiksdGhpcy5fem9vbUFuaW1hdGVkJiZNKGUsImxlYWZsZXQtem9vbS1hbmltYXRlZCIpLHRoaXMub3B0aW9ucy5jbGFzc05hbWUmJk0oZSx0aGlzLm9wdGlvbnMuY2xhc3NOYW1lKSxlLm9uc2VsZWN0c3RhcnQ9dSxlLm9ubW91c2Vtb3ZlPXUsZS5vbmxvYWRlZGRhdGE9YSh0aGlzLmZpcmUsdGhpcywibG9hZCIpLHQpe2Zvcih2YXIgaT1lLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzb3VyY2UiKSxuPVtdLG89MDtvPGkubGVuZ3RoO28rKyluLnB1c2goaVtvXS5zcmMpO3RoaXMuX3VybD0wPGkubGVuZ3RoP246W2Uuc3JjXX1lbHNle2QodGhpcy5fdXJsKXx8KHRoaXMuX3VybD1bdGhpcy5fdXJsXSksIXRoaXMub3B0aW9ucy5rZWVwQXNwZWN0UmF0aW8mJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLnN0eWxlLCJvYmplY3RGaXQiKSYmKGUuc3R5bGUub2JqZWN0Rml0PSJmaWxsIiksZS5hdXRvcGxheT0hIXRoaXMub3B0aW9ucy5hdXRvcGxheSxlLmxvb3A9ISF0aGlzLm9wdGlvbnMubG9vcCxlLm11dGVkPSEhdGhpcy5vcHRpb25zLm11dGVkLGUucGxheXNJbmxpbmU9ISF0aGlzLm9wdGlvbnMucGxheXNJbmxpbmU7Zm9yKHZhciBzPTA7czx0aGlzLl91cmwubGVuZ3RoO3MrKyl7dmFyIHI9UCgic291cmNlIik7ci5zcmM9dGhpcy5fdXJsW3NdLGUuYXBwZW5kQ2hpbGQocil9fX19KTt2YXIgT2k9RWkuZXh0ZW5kKHtfaW5pdEltYWdlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5faW1hZ2U9dGhpcy5fdXJsO00odCwibGVhZmxldC1pbWFnZS1sYXllciIpLHRoaXMuX3pvb21BbmltYXRlZCYmTSh0LCJsZWFmbGV0LXpvb20tYW5pbWF0ZWQiKSx0aGlzLm9wdGlvbnMuY2xhc3NOYW1lJiZNKHQsdGhpcy5vcHRpb25zLmNsYXNzTmFtZSksdC5vbnNlbGVjdHN0YXJ0PXUsdC5vbm1vdXNlbW92ZT11fX0pO3ZhciBBaT1vLmV4dGVuZCh7b3B0aW9uczp7aW50ZXJhY3RpdmU6ITEsb2Zmc2V0OlswLDBdLGNsYXNzTmFtZToiIixwYW5lOnZvaWQgMCxjb250ZW50OiIifSxpbml0aWFsaXplOmZ1bmN0aW9uKHQsZSl7dCYmKHQgaW5zdGFuY2VvZiB2fHxkKHQpKT8odGhpcy5fbGF0bG5nPXcodCksYyh0aGlzLGUpKTooYyh0aGlzLHQpLHRoaXMuX3NvdXJjZT1lKSx0aGlzLm9wdGlvbnMuY29udGVudCYmKHRoaXMuX2NvbnRlbnQ9dGhpcy5vcHRpb25zLmNvbnRlbnQpfSxvcGVuT246ZnVuY3Rpb24odCl7cmV0dXJuKHQ9YXJndW1lbnRzLmxlbmd0aD90OnRoaXMuX3NvdXJjZS5fbWFwKS5oYXNMYXllcih0aGlzKXx8dC5hZGRMYXllcih0aGlzKSx0aGlzfSxjbG9zZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tYXAmJnRoaXMuX21hcC5yZW1vdmVMYXllcih0aGlzKSx0aGlzfSx0b2dnbGU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX21hcD90aGlzLmNsb3NlKCk6KGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5fc291cmNlPXQ6dD10aGlzLl9zb3VyY2UsdGhpcy5fcHJlcGFyZU9wZW4oKSx0aGlzLm9wZW5Pbih0Ll9tYXApKSx0aGlzfSxvbkFkZDpmdW5jdGlvbih0KXt0aGlzLl96b29tQW5pbWF0ZWQ9dC5fem9vbUFuaW1hdGVkLHRoaXMuX2NvbnRhaW5lcnx8dGhpcy5faW5pdExheW91dCgpLHQuX2ZhZGVBbmltYXRlZCYmQyh0aGlzLl9jb250YWluZXIsMCksY2xlYXJUaW1lb3V0KHRoaXMuX3JlbW92ZVRpbWVvdXQpLHRoaXMuZ2V0UGFuZSgpLmFwcGVuZENoaWxkKHRoaXMuX2NvbnRhaW5lciksdGhpcy51cGRhdGUoKSx0Ll9mYWRlQW5pbWF0ZWQmJkModGhpcy5fY29udGFpbmVyLDEpLHRoaXMuYnJpbmdUb0Zyb250KCksdGhpcy5vcHRpb25zLmludGVyYWN0aXZlJiYoTSh0aGlzLl9jb250YWluZXIsImxlYWZsZXQtaW50ZXJhY3RpdmUiKSx0aGlzLmFkZEludGVyYWN0aXZlVGFyZ2V0KHRoaXMuX2NvbnRhaW5lcikpfSxvblJlbW92ZTpmdW5jdGlvbih0KXt0Ll9mYWRlQW5pbWF0ZWQ/KEModGhpcy5fY29udGFpbmVyLDApLHRoaXMuX3JlbW92ZVRpbWVvdXQ9c2V0VGltZW91dChhKFQsdm9pZCAwLHRoaXMuX2NvbnRhaW5lciksMjAwKSk6VCh0aGlzLl9jb250YWluZXIpLHRoaXMub3B0aW9ucy5pbnRlcmFjdGl2ZSYmKHoodGhpcy5fY29udGFpbmVyLCJsZWFmbGV0LWludGVyYWN0aXZlIiksdGhpcy5yZW1vdmVJbnRlcmFjdGl2ZVRhcmdldCh0aGlzLl9jb250YWluZXIpKX0sZ2V0TGF0TG5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2xhdGxuZ30sc2V0TGF0TG5nOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9sYXRsbmc9dyh0KSx0aGlzLl9tYXAmJih0aGlzLl91cGRhdGVQb3NpdGlvbigpLHRoaXMuX2FkanVzdFBhbigpKSx0aGlzfSxnZXRDb250ZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvbnRlbnR9LHNldENvbnRlbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2NvbnRlbnQ9dCx0aGlzLnVwZGF0ZSgpLHRoaXN9LGdldEVsZW1lbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29udGFpbmVyfSx1cGRhdGU6ZnVuY3Rpb24oKXt0aGlzLl9tYXAmJih0aGlzLl9jb250YWluZXIuc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIix0aGlzLl91cGRhdGVDb250ZW50KCksdGhpcy5fdXBkYXRlTGF5b3V0KCksdGhpcy5fdXBkYXRlUG9zaXRpb24oKSx0aGlzLl9jb250YWluZXIuc3R5bGUudmlzaWJpbGl0eT0iIix0aGlzLl9hZGp1c3RQYW4oKSl9LGdldEV2ZW50czpmdW5jdGlvbigpe3ZhciB0PXt6b29tOnRoaXMuX3VwZGF0ZVBvc2l0aW9uLHZpZXdyZXNldDp0aGlzLl91cGRhdGVQb3NpdGlvbn07cmV0dXJuIHRoaXMuX3pvb21BbmltYXRlZCYmKHQuem9vbWFuaW09dGhpcy5fYW5pbWF0ZVpvb20pLHR9LGlzT3BlbjpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5fbWFwJiZ0aGlzLl9tYXAuaGFzTGF5ZXIodGhpcyl9LGJyaW5nVG9Gcm9udDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tYXAmJmZlKHRoaXMuX2NvbnRhaW5lciksdGhpc30sYnJpbmdUb0JhY2s6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWFwJiZnZSh0aGlzLl9jb250YWluZXIpLHRoaXN9LF9wcmVwYXJlT3BlbjpmdW5jdGlvbih0KXtpZighKGk9dGhpcy5fc291cmNlKS5fbWFwKXJldHVybiExO2lmKGkgaW5zdGFuY2VvZiBjaSl7dmFyIGUsaT1udWxsLG49dGhpcy5fc291cmNlLl9sYXllcnM7Zm9yKGUgaW4gbilpZihuW2VdLl9tYXApe2k9bltlXTticmVha31pZighaSlyZXR1cm4hMTt0aGlzLl9zb3VyY2U9aX1pZighdClpZihpLmdldENlbnRlcil0PWkuZ2V0Q2VudGVyKCk7ZWxzZSBpZihpLmdldExhdExuZyl0PWkuZ2V0TGF0TG5nKCk7ZWxzZXtpZighaS5nZXRCb3VuZHMpdGhyb3cgbmV3IEVycm9yKCJVbmFibGUgdG8gZ2V0IHNvdXJjZSBsYXllciBMYXRMbmcuIik7dD1pLmdldEJvdW5kcygpLmdldENlbnRlcigpfXJldHVybiB0aGlzLnNldExhdExuZyh0KSx0aGlzLl9tYXAmJnRoaXMudXBkYXRlKCksITB9LF91cGRhdGVDb250ZW50OmZ1bmN0aW9uKCl7aWYodGhpcy5fY29udGVudCl7dmFyIHQ9dGhpcy5fY29udGVudE5vZGUsZT0iZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5fY29udGVudD90aGlzLl9jb250ZW50KHRoaXMuX3NvdXJjZXx8dGhpcyk6dGhpcy5fY29udGVudDtpZigic3RyaW5nIj09dHlwZW9mIGUpdC5pbm5lckhUTUw9ZTtlbHNle2Zvcig7dC5oYXNDaGlsZE5vZGVzKCk7KXQucmVtb3ZlQ2hpbGQodC5maXJzdENoaWxkKTt0LmFwcGVuZENoaWxkKGUpfXRoaXMuZmlyZSgiY29udGVudHVwZGF0ZSIpfX0sX3VwZGF0ZVBvc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIHQsZSxpO3RoaXMuX21hcCYmKGU9dGhpcy5fbWFwLmxhdExuZ1RvTGF5ZXJQb2ludCh0aGlzLl9sYXRsbmcpLHQ9bSh0aGlzLm9wdGlvbnMub2Zmc2V0KSxpPXRoaXMuX2dldEFuY2hvcigpLHRoaXMuX3pvb21BbmltYXRlZD9aKHRoaXMuX2NvbnRhaW5lcixlLmFkZChpKSk6dD10LmFkZChlKS5hZGQoaSksZT10aGlzLl9jb250YWluZXJCb3R0b209LXQueSxpPXRoaXMuX2NvbnRhaW5lckxlZnQ9LU1hdGgucm91bmQodGhpcy5fY29udGFpbmVyV2lkdGgvMikrdC54LHRoaXMuX2NvbnRhaW5lci5zdHlsZS5ib3R0b209ZSsicHgiLHRoaXMuX2NvbnRhaW5lci5zdHlsZS5sZWZ0PWkrInB4Iil9LF9nZXRBbmNob3I6ZnVuY3Rpb24oKXtyZXR1cm5bMCwwXX19KSxCaT0oQS5pbmNsdWRlKHtfaW5pdE92ZXJsYXk6ZnVuY3Rpb24odCxlLGksbil7dmFyIG89ZTtyZXR1cm4gbyBpbnN0YW5jZW9mIHR8fChvPW5ldyB0KG4pLnNldENvbnRlbnQoZSkpLGkmJm8uc2V0TGF0TG5nKGkpLG99fSksby5pbmNsdWRlKHtfaW5pdE92ZXJsYXk6ZnVuY3Rpb24odCxlLGksbil7dmFyIG89aTtyZXR1cm4gbyBpbnN0YW5jZW9mIHQ/KGMobyxuKSxvLl9zb3VyY2U9dGhpcyk6KG89ZSYmIW4/ZTpuZXcgdChuLHRoaXMpKS5zZXRDb250ZW50KGkpLG99fSksQWkuZXh0ZW5kKHtvcHRpb25zOntwYW5lOiJwb3B1cFBhbmUiLG9mZnNldDpbMCw3XSxtYXhXaWR0aDozMDAsbWluV2lkdGg6NTAsbWF4SGVpZ2h0Om51bGwsYXV0b1BhbjohMCxhdXRvUGFuUGFkZGluZ1RvcExlZnQ6bnVsbCxhdXRvUGFuUGFkZGluZ0JvdHRvbVJpZ2h0Om51bGwsYXV0b1BhblBhZGRpbmc6WzUsNV0sa2VlcEluVmlldzohMSxjbG9zZUJ1dHRvbjohMCxhdXRvQ2xvc2U6ITAsY2xvc2VPbkVzY2FwZUtleTohMCxjbGFzc05hbWU6IiJ9LG9wZW5PbjpmdW5jdGlvbih0KXtyZXR1cm4hKHQ9YXJndW1lbnRzLmxlbmd0aD90OnRoaXMuX3NvdXJjZS5fbWFwKS5oYXNMYXllcih0aGlzKSYmdC5fcG9wdXAmJnQuX3BvcHVwLm9wdGlvbnMuYXV0b0Nsb3NlJiZ0LnJlbW92ZUxheWVyKHQuX3BvcHVwKSx0Ll9wb3B1cD10aGlzLEFpLnByb3RvdHlwZS5vcGVuT24uY2FsbCh0aGlzLHQpfSxvbkFkZDpmdW5jdGlvbih0KXtBaS5wcm90b3R5cGUub25BZGQuY2FsbCh0aGlzLHQpLHQuZmlyZSgicG9wdXBvcGVuIix7cG9wdXA6dGhpc30pLHRoaXMuX3NvdXJjZSYmKHRoaXMuX3NvdXJjZS5maXJlKCJwb3B1cG9wZW4iLHtwb3B1cDp0aGlzfSwhMCksdGhpcy5fc291cmNlIGluc3RhbmNlb2YgZml8fHRoaXMuX3NvdXJjZS5vbigicHJlY2xpY2siLEFlKSl9LG9uUmVtb3ZlOmZ1bmN0aW9uKHQpe0FpLnByb3RvdHlwZS5vblJlbW92ZS5jYWxsKHRoaXMsdCksdC5maXJlKCJwb3B1cGNsb3NlIix7cG9wdXA6dGhpc30pLHRoaXMuX3NvdXJjZSYmKHRoaXMuX3NvdXJjZS5maXJlKCJwb3B1cGNsb3NlIix7cG9wdXA6dGhpc30sITApLHRoaXMuX3NvdXJjZSBpbnN0YW5jZW9mIGZpfHx0aGlzLl9zb3VyY2Uub2ZmKCJwcmVjbGljayIsQWUpKX0sZ2V0RXZlbnRzOmZ1bmN0aW9uKCl7dmFyIHQ9QWkucHJvdG90eXBlLmdldEV2ZW50cy5jYWxsKHRoaXMpO3JldHVybih2b2lkIDAhPT10aGlzLm9wdGlvbnMuY2xvc2VPbkNsaWNrP3RoaXMub3B0aW9ucy5jbG9zZU9uQ2xpY2s6dGhpcy5fbWFwLm9wdGlvbnMuY2xvc2VQb3B1cE9uQ2xpY2spJiYodC5wcmVjbGljaz10aGlzLmNsb3NlKSx0aGlzLm9wdGlvbnMua2VlcEluVmlldyYmKHQubW92ZWVuZD10aGlzLl9hZGp1c3RQYW4pLHR9LF9pbml0TGF5b3V0OmZ1bmN0aW9uKCl7dmFyIHQ9ImxlYWZsZXQtcG9wdXAiLGU9dGhpcy5fY29udGFpbmVyPVAoImRpdiIsdCsiICIrKHRoaXMub3B0aW9ucy5jbGFzc05hbWV8fCIiKSsiIGxlYWZsZXQtem9vbS1hbmltYXRlZCIpLGk9dGhpcy5fd3JhcHBlcj1QKCJkaXYiLHQrIi1jb250ZW50LXdyYXBwZXIiLGUpO3RoaXMuX2NvbnRlbnROb2RlPVAoImRpdiIsdCsiLWNvbnRlbnQiLGkpLEllKGUpLEJlKHRoaXMuX2NvbnRlbnROb2RlKSxTKGUsImNvbnRleHRtZW51IixBZSksdGhpcy5fdGlwQ29udGFpbmVyPVAoImRpdiIsdCsiLXRpcC1jb250YWluZXIiLGUpLHRoaXMuX3RpcD1QKCJkaXYiLHQrIi10aXAiLHRoaXMuX3RpcENvbnRhaW5lciksdGhpcy5vcHRpb25zLmNsb3NlQnV0dG9uJiYoKGk9dGhpcy5fY2xvc2VCdXR0b249UCgiYSIsdCsiLWNsb3NlLWJ1dHRvbiIsZSkpLnNldEF0dHJpYnV0ZSgicm9sZSIsImJ1dHRvbiIpLGkuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIiwiQ2xvc2UgcG9wdXAiKSxpLmhyZWY9IiNjbG9zZSIsaS5pbm5lckhUTUw9JzxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIj4mIzIxNTs8L3NwYW4+JyxTKGksImNsaWNrIixmdW5jdGlvbih0KXtPKHQpLHRoaXMuY2xvc2UoKX0sdGhpcykpfSxfdXBkYXRlTGF5b3V0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fY29udGVudE5vZGUsZT10LnN0eWxlLGk9KGUud2lkdGg9IiIsZS53aGl0ZVNwYWNlPSJub3dyYXAiLHQub2Zmc2V0V2lkdGgpLGk9TWF0aC5taW4oaSx0aGlzLm9wdGlvbnMubWF4V2lkdGgpLGk9KGk9TWF0aC5tYXgoaSx0aGlzLm9wdGlvbnMubWluV2lkdGgpLGUud2lkdGg9aSsxKyJweCIsZS53aGl0ZVNwYWNlPSIiLGUuaGVpZ2h0PSIiLHQub2Zmc2V0SGVpZ2h0KSxuPXRoaXMub3B0aW9ucy5tYXhIZWlnaHQsbz0ibGVhZmxldC1wb3B1cC1zY3JvbGxlZCI7KG4mJm48aT8oZS5oZWlnaHQ9bisicHgiLE0pOnopKHQsbyksdGhpcy5fY29udGFpbmVyV2lkdGg9dGhpcy5fY29udGFpbmVyLm9mZnNldFdpZHRofSxfYW5pbWF0ZVpvb206ZnVuY3Rpb24odCl7dmFyIHQ9dGhpcy5fbWFwLl9sYXRMbmdUb05ld0xheWVyUG9pbnQodGhpcy5fbGF0bG5nLHQuem9vbSx0LmNlbnRlciksZT10aGlzLl9nZXRBbmNob3IoKTtaKHRoaXMuX2NvbnRhaW5lcix0LmFkZChlKSl9LF9hZGp1c3RQYW46ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixvLHMscixhO3RoaXMub3B0aW9ucy5hdXRvUGFuJiYodGhpcy5fbWFwLl9wYW5BbmltJiZ0aGlzLl9tYXAuX3BhbkFuaW0uc3RvcCgpLHRoaXMuX2F1dG9wYW5uaW5nP3RoaXMuX2F1dG9wYW5uaW5nPSExOih0PXRoaXMuX21hcCxlPXBhcnNlSW50KHBlKHRoaXMuX2NvbnRhaW5lciwibWFyZ2luQm90dG9tIiksMTApfHwwLGU9dGhpcy5fY29udGFpbmVyLm9mZnNldEhlaWdodCtlLGE9dGhpcy5fY29udGFpbmVyV2lkdGgsKGk9bmV3IHAodGhpcy5fY29udGFpbmVyTGVmdCwtZS10aGlzLl9jb250YWluZXJCb3R0b20pKS5fYWRkKFBlKHRoaXMuX2NvbnRhaW5lcikpLGk9dC5sYXllclBvaW50VG9Db250YWluZXJQb2ludChpKSxvPW0odGhpcy5vcHRpb25zLmF1dG9QYW5QYWRkaW5nKSxuPW0odGhpcy5vcHRpb25zLmF1dG9QYW5QYWRkaW5nVG9wTGVmdHx8byksbz1tKHRoaXMub3B0aW9ucy5hdXRvUGFuUGFkZGluZ0JvdHRvbVJpZ2h0fHxvKSxzPXQuZ2V0U2l6ZSgpLHI9MCxpLngrYStvLng+cy54JiYocj1pLngrYS1zLngrby54KSxpLngtci1uLng8KGE9MCkmJihyPWkueC1uLngpLGkueStlK28ueT5zLnkmJihhPWkueStlLXMueStvLnkpLGkueS1hLW4ueTwwJiYoYT1pLnktbi55KSwocnx8YSkmJih0aGlzLm9wdGlvbnMua2VlcEluVmlldyYmKHRoaXMuX2F1dG9wYW5uaW5nPSEwKSx0LmZpcmUoImF1dG9wYW5zdGFydCIpLnBhbkJ5KFtyLGFdKSkpKX0sX2dldEFuY2hvcjpmdW5jdGlvbigpe3JldHVybiBtKHRoaXMuX3NvdXJjZSYmdGhpcy5fc291cmNlLl9nZXRQb3B1cEFuY2hvcj90aGlzLl9zb3VyY2UuX2dldFBvcHVwQW5jaG9yKCk6WzAsMF0pfX0pKSxJaT0oQS5tZXJnZU9wdGlvbnMoe2Nsb3NlUG9wdXBPbkNsaWNrOiEwfSksQS5pbmNsdWRlKHtvcGVuUG9wdXA6ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0aGlzLl9pbml0T3ZlcmxheShCaSx0LGUsaSkub3Blbk9uKHRoaXMpLHRoaXN9LGNsb3NlUG9wdXA6ZnVuY3Rpb24odCl7cmV0dXJuKHQ9YXJndW1lbnRzLmxlbmd0aD90OnRoaXMuX3BvcHVwKSYmdC5jbG9zZSgpLHRoaXN9fSksby5pbmNsdWRlKHtiaW5kUG9wdXA6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fcG9wdXA9dGhpcy5faW5pdE92ZXJsYXkoQmksdGhpcy5fcG9wdXAsdCxlKSx0aGlzLl9wb3B1cEhhbmRsZXJzQWRkZWR8fCh0aGlzLm9uKHtjbGljazp0aGlzLl9vcGVuUG9wdXAsa2V5cHJlc3M6dGhpcy5fb25LZXlQcmVzcyxyZW1vdmU6dGhpcy5jbG9zZVBvcHVwLG1vdmU6dGhpcy5fbW92ZVBvcHVwfSksdGhpcy5fcG9wdXBIYW5kbGVyc0FkZGVkPSEwKSx0aGlzfSx1bmJpbmRQb3B1cDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wb3B1cCYmKHRoaXMub2ZmKHtjbGljazp0aGlzLl9vcGVuUG9wdXAsa2V5cHJlc3M6dGhpcy5fb25LZXlQcmVzcyxyZW1vdmU6dGhpcy5jbG9zZVBvcHVwLG1vdmU6dGhpcy5fbW92ZVBvcHVwfSksdGhpcy5fcG9wdXBIYW5kbGVyc0FkZGVkPSExLHRoaXMuX3BvcHVwPW51bGwpLHRoaXN9LG9wZW5Qb3B1cDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcG9wdXAmJih0aGlzIGluc3RhbmNlb2YgY2l8fCh0aGlzLl9wb3B1cC5fc291cmNlPXRoaXMpLHRoaXMuX3BvcHVwLl9wcmVwYXJlT3Blbih0fHx0aGlzLl9sYXRsbmcpJiZ0aGlzLl9wb3B1cC5vcGVuT24odGhpcy5fbWFwKSksdGhpc30sY2xvc2VQb3B1cDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wb3B1cCYmdGhpcy5fcG9wdXAuY2xvc2UoKSx0aGlzfSx0b2dnbGVQb3B1cDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wb3B1cCYmdGhpcy5fcG9wdXAudG9nZ2xlKHRoaXMpLHRoaXN9LGlzUG9wdXBPcGVuOmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLl9wb3B1cCYmdGhpcy5fcG9wdXAuaXNPcGVuKCl9LHNldFBvcHVwQ29udGVudDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcG9wdXAmJnRoaXMuX3BvcHVwLnNldENvbnRlbnQodCksdGhpc30sZ2V0UG9wdXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcG9wdXB9LF9vcGVuUG9wdXA6ZnVuY3Rpb24odCl7dmFyIGU7dGhpcy5fcG9wdXAmJnRoaXMuX21hcCYmKFJlKHQpLGU9dC5sYXllcnx8dC50YXJnZXQsdGhpcy5fcG9wdXAuX3NvdXJjZSE9PWV8fGUgaW5zdGFuY2VvZiBmaT8odGhpcy5fcG9wdXAuX3NvdXJjZT1lLHRoaXMub3BlblBvcHVwKHQubGF0bG5nKSk6dGhpcy5fbWFwLmhhc0xheWVyKHRoaXMuX3BvcHVwKT90aGlzLmNsb3NlUG9wdXAoKTp0aGlzLm9wZW5Qb3B1cCh0LmxhdGxuZykpfSxfbW92ZVBvcHVwOmZ1bmN0aW9uKHQpe3RoaXMuX3BvcHVwLnNldExhdExuZyh0LmxhdGxuZyl9LF9vbktleVByZXNzOmZ1bmN0aW9uKHQpezEzPT09dC5vcmlnaW5hbEV2ZW50LmtleUNvZGUmJnRoaXMuX29wZW5Qb3B1cCh0KX19KSxBaS5leHRlbmQoe29wdGlvbnM6e3BhbmU6InRvb2x0aXBQYW5lIixvZmZzZXQ6WzAsMF0sZGlyZWN0aW9uOiJhdXRvIixwZXJtYW5lbnQ6ITEsc3RpY2t5OiExLG9wYWNpdHk6Ljl9LG9uQWRkOmZ1bmN0aW9uKHQpe0FpLnByb3RvdHlwZS5vbkFkZC5jYWxsKHRoaXMsdCksdGhpcy5zZXRPcGFjaXR5KHRoaXMub3B0aW9ucy5vcGFjaXR5KSx0LmZpcmUoInRvb2x0aXBvcGVuIix7dG9vbHRpcDp0aGlzfSksdGhpcy5fc291cmNlJiYodGhpcy5hZGRFdmVudFBhcmVudCh0aGlzLl9zb3VyY2UpLHRoaXMuX3NvdXJjZS5maXJlKCJ0b29sdGlwb3BlbiIse3Rvb2x0aXA6dGhpc30sITApKX0sb25SZW1vdmU6ZnVuY3Rpb24odCl7QWkucHJvdG90eXBlLm9uUmVtb3ZlLmNhbGwodGhpcyx0KSx0LmZpcmUoInRvb2x0aXBjbG9zZSIse3Rvb2x0aXA6dGhpc30pLHRoaXMuX3NvdXJjZSYmKHRoaXMucmVtb3ZlRXZlbnRQYXJlbnQodGhpcy5fc291cmNlKSx0aGlzLl9zb3VyY2UuZmlyZSgidG9vbHRpcGNsb3NlIix7dG9vbHRpcDp0aGlzfSwhMCkpfSxnZXRFdmVudHM6ZnVuY3Rpb24oKXt2YXIgdD1BaS5wcm90b3R5cGUuZ2V0RXZlbnRzLmNhbGwodGhpcyk7cmV0dXJuIHRoaXMub3B0aW9ucy5wZXJtYW5lbnR8fCh0LnByZWNsaWNrPXRoaXMuY2xvc2UpLHR9LF9pbml0TGF5b3V0OmZ1bmN0aW9uKCl7dmFyIHQ9ImxlYWZsZXQtdG9vbHRpcCAiKyh0aGlzLm9wdGlvbnMuY2xhc3NOYW1lfHwiIikrIiBsZWFmbGV0LXpvb20tIisodGhpcy5fem9vbUFuaW1hdGVkPyJhbmltYXRlZCI6ImhpZGUiKTt0aGlzLl9jb250ZW50Tm9kZT10aGlzLl9jb250YWluZXI9UCgiZGl2Iix0KSx0aGlzLl9jb250YWluZXIuc2V0QXR0cmlidXRlKCJyb2xlIiwidG9vbHRpcCIpLHRoaXMuX2NvbnRhaW5lci5zZXRBdHRyaWJ1dGUoImlkIiwibGVhZmxldC10b29sdGlwLSIraCh0aGlzKSl9LF91cGRhdGVMYXlvdXQ6ZnVuY3Rpb24oKXt9LF9hZGp1c3RQYW46ZnVuY3Rpb24oKXt9LF9zZXRQb3NpdGlvbjpmdW5jdGlvbih0KXt2YXIgZSxpPXRoaXMuX21hcCxuPXRoaXMuX2NvbnRhaW5lcixvPWkubGF0TG5nVG9Db250YWluZXJQb2ludChpLmdldENlbnRlcigpKSxpPWkubGF5ZXJQb2ludFRvQ29udGFpbmVyUG9pbnQodCkscz10aGlzLm9wdGlvbnMuZGlyZWN0aW9uLHI9bi5vZmZzZXRXaWR0aCxhPW4ub2Zmc2V0SGVpZ2h0LGg9bSh0aGlzLm9wdGlvbnMub2Zmc2V0KSxsPXRoaXMuX2dldEFuY2hvcigpLGk9InRvcCI9PT1zPyhlPXIvMixhKToiYm90dG9tIj09PXM/KGU9ci8yLDApOihlPSJjZW50ZXIiPT09cz9yLzI6InJpZ2h0Ij09PXM/MDoibGVmdCI9PT1zP3I6aS54PG8ueD8ocz0icmlnaHQiLDApOihzPSJsZWZ0IixyKzIqKGgueCtsLngpKSxhLzIpO3Q9dC5zdWJ0cmFjdChtKGUsaSwhMCkpLmFkZChoKS5hZGQobCkseihuLCJsZWFmbGV0LXRvb2x0aXAtcmlnaHQiKSx6KG4sImxlYWZsZXQtdG9vbHRpcC1sZWZ0IikseihuLCJsZWFmbGV0LXRvb2x0aXAtdG9wIikseihuLCJsZWFmbGV0LXRvb2x0aXAtYm90dG9tIiksTShuLCJsZWFmbGV0LXRvb2x0aXAtIitzKSxaKG4sdCl9LF91cGRhdGVQb3NpdGlvbjpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX21hcC5sYXRMbmdUb0xheWVyUG9pbnQodGhpcy5fbGF0bG5nKTt0aGlzLl9zZXRQb3NpdGlvbih0KX0sc2V0T3BhY2l0eTpmdW5jdGlvbih0KXt0aGlzLm9wdGlvbnMub3BhY2l0eT10LHRoaXMuX2NvbnRhaW5lciYmQyh0aGlzLl9jb250YWluZXIsdCl9LF9hbmltYXRlWm9vbTpmdW5jdGlvbih0KXt0PXRoaXMuX21hcC5fbGF0TG5nVG9OZXdMYXllclBvaW50KHRoaXMuX2xhdGxuZyx0Lnpvb20sdC5jZW50ZXIpO3RoaXMuX3NldFBvc2l0aW9uKHQpfSxfZ2V0QW5jaG9yOmZ1bmN0aW9uKCl7cmV0dXJuIG0odGhpcy5fc291cmNlJiZ0aGlzLl9zb3VyY2UuX2dldFRvb2x0aXBBbmNob3ImJiF0aGlzLm9wdGlvbnMuc3RpY2t5P3RoaXMuX3NvdXJjZS5fZ2V0VG9vbHRpcEFuY2hvcigpOlswLDBdKX19KSksUmk9KEEuaW5jbHVkZSh7b3BlblRvb2x0aXA6ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0aGlzLl9pbml0T3ZlcmxheShJaSx0LGUsaSkub3Blbk9uKHRoaXMpLHRoaXN9LGNsb3NlVG9vbHRpcDpmdW5jdGlvbih0KXtyZXR1cm4gdC5jbG9zZSgpLHRoaXN9fSksby5pbmNsdWRlKHtiaW5kVG9vbHRpcDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl90b29sdGlwJiZ0aGlzLmlzVG9vbHRpcE9wZW4oKSYmdGhpcy51bmJpbmRUb29sdGlwKCksdGhpcy5fdG9vbHRpcD10aGlzLl9pbml0T3ZlcmxheShJaSx0aGlzLl90b29sdGlwLHQsZSksdGhpcy5faW5pdFRvb2x0aXBJbnRlcmFjdGlvbnMoKSx0aGlzLl90b29sdGlwLm9wdGlvbnMucGVybWFuZW50JiZ0aGlzLl9tYXAmJnRoaXMuX21hcC5oYXNMYXllcih0aGlzKSYmdGhpcy5vcGVuVG9vbHRpcCgpLHRoaXN9LHVuYmluZFRvb2x0aXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdG9vbHRpcCYmKHRoaXMuX2luaXRUb29sdGlwSW50ZXJhY3Rpb25zKCEwKSx0aGlzLmNsb3NlVG9vbHRpcCgpLHRoaXMuX3Rvb2x0aXA9bnVsbCksdGhpc30sX2luaXRUb29sdGlwSW50ZXJhY3Rpb25zOmZ1bmN0aW9uKHQpe3ZhciBlLGk7IXQmJnRoaXMuX3Rvb2x0aXBIYW5kbGVyc0FkZGVkfHwoZT10PyJvZmYiOiJvbiIsaT17cmVtb3ZlOnRoaXMuY2xvc2VUb29sdGlwLG1vdmU6dGhpcy5fbW92ZVRvb2x0aXB9LHRoaXMuX3Rvb2x0aXAub3B0aW9ucy5wZXJtYW5lbnQ/aS5hZGQ9dGhpcy5fb3BlblRvb2x0aXA6KGkubW91c2VvdmVyPXRoaXMuX29wZW5Ub29sdGlwLGkubW91c2VvdXQ9dGhpcy5jbG9zZVRvb2x0aXAsaS5jbGljaz10aGlzLl9vcGVuVG9vbHRpcCx0aGlzLl9tYXA/dGhpcy5fYWRkRm9jdXNMaXN0ZW5lcnMoKTppLmFkZD10aGlzLl9hZGRGb2N1c0xpc3RlbmVycyksdGhpcy5fdG9vbHRpcC5vcHRpb25zLnN0aWNreSYmKGkubW91c2Vtb3ZlPXRoaXMuX21vdmVUb29sdGlwKSx0aGlzW2VdKGkpLHRoaXMuX3Rvb2x0aXBIYW5kbGVyc0FkZGVkPSF0KX0sb3BlblRvb2x0aXA6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3Rvb2x0aXAmJih0aGlzIGluc3RhbmNlb2YgY2l8fCh0aGlzLl90b29sdGlwLl9zb3VyY2U9dGhpcyksdGhpcy5fdG9vbHRpcC5fcHJlcGFyZU9wZW4odCkmJih0aGlzLl90b29sdGlwLm9wZW5Pbih0aGlzLl9tYXApLHRoaXMuZ2V0RWxlbWVudD90aGlzLl9zZXRBcmlhRGVzY3JpYmVkQnlPbkxheWVyKHRoaXMpOnRoaXMuZWFjaExheWVyJiZ0aGlzLmVhY2hMYXllcih0aGlzLl9zZXRBcmlhRGVzY3JpYmVkQnlPbkxheWVyLHRoaXMpKSksdGhpc30sY2xvc2VUb29sdGlwOmZ1bmN0aW9uKCl7aWYodGhpcy5fdG9vbHRpcClyZXR1cm4gdGhpcy5fdG9vbHRpcC5jbG9zZSgpfSx0b2dnbGVUb29sdGlwOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Rvb2x0aXAmJnRoaXMuX3Rvb2x0aXAudG9nZ2xlKHRoaXMpLHRoaXN9LGlzVG9vbHRpcE9wZW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdG9vbHRpcC5pc09wZW4oKX0sc2V0VG9vbHRpcENvbnRlbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3Rvb2x0aXAmJnRoaXMuX3Rvb2x0aXAuc2V0Q29udGVudCh0KSx0aGlzfSxnZXRUb29sdGlwOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Rvb2x0aXB9LF9hZGRGb2N1c0xpc3RlbmVyczpmdW5jdGlvbigpe3RoaXMuZ2V0RWxlbWVudD90aGlzLl9hZGRGb2N1c0xpc3RlbmVyc09uTGF5ZXIodGhpcyk6dGhpcy5lYWNoTGF5ZXImJnRoaXMuZWFjaExheWVyKHRoaXMuX2FkZEZvY3VzTGlzdGVuZXJzT25MYXllcix0aGlzKX0sX2FkZEZvY3VzTGlzdGVuZXJzT25MYXllcjpmdW5jdGlvbih0KXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdC5nZXRFbGVtZW50JiZ0LmdldEVsZW1lbnQoKTtlJiYoUyhlLCJmb2N1cyIsZnVuY3Rpb24oKXt0aGlzLl90b29sdGlwLl9zb3VyY2U9dCx0aGlzLm9wZW5Ub29sdGlwKCl9LHRoaXMpLFMoZSwiYmx1ciIsdGhpcy5jbG9zZVRvb2x0aXAsdGhpcykpfSxfc2V0QXJpYURlc2NyaWJlZEJ5T25MYXllcjpmdW5jdGlvbih0KXt0PSJmdW5jdGlvbiI9PXR5cGVvZiB0LmdldEVsZW1lbnQmJnQuZ2V0RWxlbWVudCgpO3QmJnQuc2V0QXR0cmlidXRlKCJhcmlhLWRlc2NyaWJlZGJ5Iix0aGlzLl90b29sdGlwLl9jb250YWluZXIuaWQpfSxfb3BlblRvb2x0aXA6ZnVuY3Rpb24odCl7dmFyIGU7dGhpcy5fdG9vbHRpcCYmdGhpcy5fbWFwJiYodGhpcy5fbWFwLmRyYWdnaW5nJiZ0aGlzLl9tYXAuZHJhZ2dpbmcubW92aW5nKCkmJiF0aGlzLl9vcGVuT25jZUZsYWc/KHRoaXMuX29wZW5PbmNlRmxhZz0hMCwoZT10aGlzKS5fbWFwLm9uY2UoIm1vdmVlbmQiLGZ1bmN0aW9uKCl7ZS5fb3Blbk9uY2VGbGFnPSExLGUuX29wZW5Ub29sdGlwKHQpfSkpOih0aGlzLl90b29sdGlwLl9zb3VyY2U9dC5sYXllcnx8dC50YXJnZXQsdGhpcy5vcGVuVG9vbHRpcCh0aGlzLl90b29sdGlwLm9wdGlvbnMuc3RpY2t5P3QubGF0bG5nOnZvaWQgMCkpKX0sX21vdmVUb29sdGlwOmZ1bmN0aW9uKHQpe3ZhciBlPXQubGF0bG5nO3RoaXMuX3Rvb2x0aXAub3B0aW9ucy5zdGlja3kmJnQub3JpZ2luYWxFdmVudCYmKHQ9dGhpcy5fbWFwLm1vdXNlRXZlbnRUb0NvbnRhaW5lclBvaW50KHQub3JpZ2luYWxFdmVudCksdD10aGlzLl9tYXAuY29udGFpbmVyUG9pbnRUb0xheWVyUG9pbnQodCksZT10aGlzLl9tYXAubGF5ZXJQb2ludFRvTGF0TG5nKHQpKSx0aGlzLl90b29sdGlwLnNldExhdExuZyhlKX19KSxkaS5leHRlbmQoe29wdGlvbnM6e2ljb25TaXplOlsxMiwxMl0saHRtbDohMSxiZ1BvczpudWxsLGNsYXNzTmFtZToibGVhZmxldC1kaXYtaWNvbiJ9LGNyZWF0ZUljb246ZnVuY3Rpb24odCl7dmFyIHQ9dCYmIkRJViI9PT10LnRhZ05hbWU/dDpkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxlPXRoaXMub3B0aW9ucztyZXR1cm4gZS5odG1sIGluc3RhbmNlb2YgRWxlbWVudD8obWUodCksdC5hcHBlbmRDaGlsZChlLmh0bWwpKTp0LmlubmVySFRNTD0hMSE9PWUuaHRtbD9lLmh0bWw6IiIsZS5iZ1BvcyYmKGU9bShlLmJnUG9zKSx0LnN0eWxlLmJhY2tncm91bmRQb3NpdGlvbj0tZS54KyJweCAiKy1lLnkrInB4IiksdGhpcy5fc2V0SWNvblN0eWxlcyh0LCJpY29uIiksdH0sY3JlYXRlU2hhZG93OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9fSkpO2RpLkRlZmF1bHQ9X2k7dmFyIE5pPW8uZXh0ZW5kKHtvcHRpb25zOnt0aWxlU2l6ZToyNTYsb3BhY2l0eToxLHVwZGF0ZVdoZW5JZGxlOmIubW9iaWxlLHVwZGF0ZVdoZW5ab29taW5nOiEwLHVwZGF0ZUludGVydmFsOjIwMCx6SW5kZXg6MSxib3VuZHM6bnVsbCxtaW5ab29tOjAsbWF4Wm9vbTp2b2lkIDAsbWF4TmF0aXZlWm9vbTp2b2lkIDAsbWluTmF0aXZlWm9vbTp2b2lkIDAsbm9XcmFwOiExLHBhbmU6InRpbGVQYW5lIixjbGFzc05hbWU6IiIsa2VlcEJ1ZmZlcjoyfSxpbml0aWFsaXplOmZ1bmN0aW9uKHQpe2ModGhpcyx0KX0sb25BZGQ6ZnVuY3Rpb24oKXt0aGlzLl9pbml0Q29udGFpbmVyKCksdGhpcy5fbGV2ZWxzPXt9LHRoaXMuX3RpbGVzPXt9LHRoaXMuX3Jlc2V0VmlldygpfSxiZWZvcmVBZGQ6ZnVuY3Rpb24odCl7dC5fYWRkWm9vbUxpbWl0KHRoaXMpfSxvblJlbW92ZTpmdW5jdGlvbih0KXt0aGlzLl9yZW1vdmVBbGxUaWxlcygpLFQodGhpcy5fY29udGFpbmVyKSx0Ll9yZW1vdmVab29tTGltaXQodGhpcyksdGhpcy5fY29udGFpbmVyPW51bGwsdGhpcy5fdGlsZVpvb209dm9pZCAwfSxicmluZ1RvRnJvbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWFwJiYoZmUodGhpcy5fY29udGFpbmVyKSx0aGlzLl9zZXRBdXRvWkluZGV4KE1hdGgubWF4KSksdGhpc30sYnJpbmdUb0JhY2s6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWFwJiYoZ2UodGhpcy5fY29udGFpbmVyKSx0aGlzLl9zZXRBdXRvWkluZGV4KE1hdGgubWluKSksdGhpc30sZ2V0Q29udGFpbmVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvbnRhaW5lcn0sc2V0T3BhY2l0eTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5vcHRpb25zLm9wYWNpdHk9dCx0aGlzLl91cGRhdGVPcGFjaXR5KCksdGhpc30sc2V0WkluZGV4OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm9wdGlvbnMuekluZGV4PXQsdGhpcy5fdXBkYXRlWkluZGV4KCksdGhpc30saXNMb2FkaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2xvYWRpbmd9LHJlZHJhdzpmdW5jdGlvbigpe3ZhciB0O3JldHVybiB0aGlzLl9tYXAmJih0aGlzLl9yZW1vdmVBbGxUaWxlcygpLCh0PXRoaXMuX2NsYW1wWm9vbSh0aGlzLl9tYXAuZ2V0Wm9vbSgpKSkhPT10aGlzLl90aWxlWm9vbSYmKHRoaXMuX3RpbGVab29tPXQsdGhpcy5fdXBkYXRlTGV2ZWxzKCkpLHRoaXMuX3VwZGF0ZSgpKSx0aGlzfSxnZXRFdmVudHM6ZnVuY3Rpb24oKXt2YXIgdD17dmlld3ByZXJlc2V0OnRoaXMuX2ludmFsaWRhdGVBbGwsdmlld3Jlc2V0OnRoaXMuX3Jlc2V0Vmlldyx6b29tOnRoaXMuX3Jlc2V0Vmlldyxtb3ZlZW5kOnRoaXMuX29uTW92ZUVuZH07cmV0dXJuIHRoaXMub3B0aW9ucy51cGRhdGVXaGVuSWRsZXx8KHRoaXMuX29uTW92ZXx8KHRoaXMuX29uTW92ZT1qKHRoaXMuX29uTW92ZUVuZCx0aGlzLm9wdGlvbnMudXBkYXRlSW50ZXJ2YWwsdGhpcykpLHQubW92ZT10aGlzLl9vbk1vdmUpLHRoaXMuX3pvb21BbmltYXRlZCYmKHQuem9vbWFuaW09dGhpcy5fYW5pbWF0ZVpvb20pLHR9LGNyZWF0ZVRpbGU6ZnVuY3Rpb24oKXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iil9LGdldFRpbGVTaXplOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpb25zLnRpbGVTaXplO3JldHVybiB0IGluc3RhbmNlb2YgcD90Om5ldyBwKHQsdCl9LF91cGRhdGVaSW5kZXg6ZnVuY3Rpb24oKXt0aGlzLl9jb250YWluZXImJnZvaWQgMCE9PXRoaXMub3B0aW9ucy56SW5kZXgmJm51bGwhPT10aGlzLm9wdGlvbnMuekluZGV4JiYodGhpcy5fY29udGFpbmVyLnN0eWxlLnpJbmRleD10aGlzLm9wdGlvbnMuekluZGV4KX0sX3NldEF1dG9aSW5kZXg6ZnVuY3Rpb24odCl7Zm9yKHZhciBlLGk9dGhpcy5nZXRQYW5lKCkuY2hpbGRyZW4sbj0tdCgtMS8wLDEvMCksbz0wLHM9aS5sZW5ndGg7bzxzO28rKyllPWlbb10uc3R5bGUuekluZGV4LGlbb10hPT10aGlzLl9jb250YWluZXImJmUmJihuPXQobiwrZSkpO2lzRmluaXRlKG4pJiYodGhpcy5vcHRpb25zLnpJbmRleD1uK3QoLTEsMSksdGhpcy5fdXBkYXRlWkluZGV4KCkpfSxfdXBkYXRlT3BhY2l0eTpmdW5jdGlvbigpe2lmKHRoaXMuX21hcCYmIWIuaWVsdDkpe0ModGhpcy5fY29udGFpbmVyLHRoaXMub3B0aW9ucy5vcGFjaXR5KTt2YXIgdCxlPStuZXcgRGF0ZSxpPSExLG49ITE7Zm9yKHQgaW4gdGhpcy5fdGlsZXMpe3ZhciBvLHM9dGhpcy5fdGlsZXNbdF07cy5jdXJyZW50JiZzLmxvYWRlZCYmKG89TWF0aC5taW4oMSwoZS1zLmxvYWRlZCkvMjAwKSxDKHMuZWwsbyksbzwxP2k9ITA6KHMuYWN0aXZlP249ITA6dGhpcy5fb25PcGFxdWVUaWxlKHMpLHMuYWN0aXZlPSEwKSl9biYmIXRoaXMuX25vUHJ1bmUmJnRoaXMuX3BydW5lVGlsZXMoKSxpJiYocih0aGlzLl9mYWRlRnJhbWUpLHRoaXMuX2ZhZGVGcmFtZT14KHRoaXMuX3VwZGF0ZU9wYWNpdHksdGhpcykpfX0sX29uT3BhcXVlVGlsZTp1LF9pbml0Q29udGFpbmVyOmZ1bmN0aW9uKCl7dGhpcy5fY29udGFpbmVyfHwodGhpcy5fY29udGFpbmVyPVAoImRpdiIsImxlYWZsZXQtbGF5ZXIgIisodGhpcy5vcHRpb25zLmNsYXNzTmFtZXx8IiIpKSx0aGlzLl91cGRhdGVaSW5kZXgoKSx0aGlzLm9wdGlvbnMub3BhY2l0eTwxJiZ0aGlzLl91cGRhdGVPcGFjaXR5KCksdGhpcy5nZXRQYW5lKCkuYXBwZW5kQ2hpbGQodGhpcy5fY29udGFpbmVyKSl9LF91cGRhdGVMZXZlbHM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl90aWxlWm9vbSxlPXRoaXMub3B0aW9ucy5tYXhab29tO2lmKHZvaWQgMCE9PXQpe2Zvcih2YXIgaSBpbiB0aGlzLl9sZXZlbHMpaT1OdW1iZXIoaSksdGhpcy5fbGV2ZWxzW2ldLmVsLmNoaWxkcmVuLmxlbmd0aHx8aT09PXQ/KHRoaXMuX2xldmVsc1tpXS5lbC5zdHlsZS56SW5kZXg9ZS1NYXRoLmFicyh0LWkpLHRoaXMuX29uVXBkYXRlTGV2ZWwoaSkpOihUKHRoaXMuX2xldmVsc1tpXS5lbCksdGhpcy5fcmVtb3ZlVGlsZXNBdFpvb20oaSksdGhpcy5fb25SZW1vdmVMZXZlbChpKSxkZWxldGUgdGhpcy5fbGV2ZWxzW2ldKTt2YXIgbj10aGlzLl9sZXZlbHNbdF0sbz10aGlzLl9tYXA7cmV0dXJuIG58fCgobj10aGlzLl9sZXZlbHNbdF09e30pLmVsPVAoImRpdiIsImxlYWZsZXQtdGlsZS1jb250YWluZXIgbGVhZmxldC16b29tLWFuaW1hdGVkIix0aGlzLl9jb250YWluZXIpLG4uZWwuc3R5bGUuekluZGV4PWUsbi5vcmlnaW49by5wcm9qZWN0KG8udW5wcm9qZWN0KG8uZ2V0UGl4ZWxPcmlnaW4oKSksdCkucm91bmQoKSxuLnpvb209dCx0aGlzLl9zZXRab29tVHJhbnNmb3JtKG4sby5nZXRDZW50ZXIoKSxvLmdldFpvb20oKSksdShuLmVsLm9mZnNldFdpZHRoKSx0aGlzLl9vbkNyZWF0ZUxldmVsKG4pKSx0aGlzLl9sZXZlbD1ufX0sX29uVXBkYXRlTGV2ZWw6dSxfb25SZW1vdmVMZXZlbDp1LF9vbkNyZWF0ZUxldmVsOnUsX3BydW5lVGlsZXM6ZnVuY3Rpb24oKXtpZih0aGlzLl9tYXApe3ZhciB0LGUsaSxuPXRoaXMuX21hcC5nZXRab29tKCk7aWYobj50aGlzLm9wdGlvbnMubWF4Wm9vbXx8bjx0aGlzLm9wdGlvbnMubWluWm9vbSl0aGlzLl9yZW1vdmVBbGxUaWxlcygpO2Vsc2V7Zm9yKHQgaW4gdGhpcy5fdGlsZXMpKGk9dGhpcy5fdGlsZXNbdF0pLnJldGFpbj1pLmN1cnJlbnQ7Zm9yKHQgaW4gdGhpcy5fdGlsZXMpKGk9dGhpcy5fdGlsZXNbdF0pLmN1cnJlbnQmJiFpLmFjdGl2ZSYmKGU9aS5jb29yZHMsdGhpcy5fcmV0YWluUGFyZW50KGUueCxlLnksZS56LGUuei01KXx8dGhpcy5fcmV0YWluQ2hpbGRyZW4oZS54LGUueSxlLnosZS56KzIpKTtmb3IodCBpbiB0aGlzLl90aWxlcyl0aGlzLl90aWxlc1t0XS5yZXRhaW58fHRoaXMuX3JlbW92ZVRpbGUodCl9fX0sX3JlbW92ZVRpbGVzQXRab29tOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSBpbiB0aGlzLl90aWxlcyl0aGlzLl90aWxlc1tlXS5jb29yZHMuej09PXQmJnRoaXMuX3JlbW92ZVRpbGUoZSl9LF9yZW1vdmVBbGxUaWxlczpmdW5jdGlvbigpe2Zvcih2YXIgdCBpbiB0aGlzLl90aWxlcyl0aGlzLl9yZW1vdmVUaWxlKHQpfSxfaW52YWxpZGF0ZUFsbDpmdW5jdGlvbigpe2Zvcih2YXIgdCBpbiB0aGlzLl9sZXZlbHMpVCh0aGlzLl9sZXZlbHNbdF0uZWwpLHRoaXMuX29uUmVtb3ZlTGV2ZWwoTnVtYmVyKHQpKSxkZWxldGUgdGhpcy5fbGV2ZWxzW3RdO3RoaXMuX3JlbW92ZUFsbFRpbGVzKCksdGhpcy5fdGlsZVpvb209dm9pZCAwfSxfcmV0YWluUGFyZW50OmZ1bmN0aW9uKHQsZSxpLG4pe3ZhciB0PU1hdGguZmxvb3IodC8yKSxlPU1hdGguZmxvb3IoZS8yKSxpPWktMSxvPW5ldyBwKCt0LCtlKSxvPShvLno9aSx0aGlzLl90aWxlQ29vcmRzVG9LZXkobykpLG89dGhpcy5fdGlsZXNbb107cmV0dXJuIG8mJm8uYWN0aXZlP28ucmV0YWluPSEwOihvJiZvLmxvYWRlZCYmKG8ucmV0YWluPSEwKSxuPGkmJnRoaXMuX3JldGFpblBhcmVudCh0LGUsaSxuKSl9LF9yZXRhaW5DaGlsZHJlbjpmdW5jdGlvbih0LGUsaSxuKXtmb3IodmFyIG89Mip0O288Mip0KzI7bysrKWZvcih2YXIgcz0yKmU7czwyKmUrMjtzKyspe3ZhciByPW5ldyBwKG8scykscj0oci56PWkrMSx0aGlzLl90aWxlQ29vcmRzVG9LZXkocikpLHI9dGhpcy5fdGlsZXNbcl07ciYmci5hY3RpdmU/ci5yZXRhaW49ITA6KHImJnIubG9hZGVkJiYoci5yZXRhaW49ITApLGkrMTxuJiZ0aGlzLl9yZXRhaW5DaGlsZHJlbihvLHMsaSsxLG4pKX19LF9yZXNldFZpZXc6ZnVuY3Rpb24odCl7dD10JiYodC5waW5jaHx8dC5mbHlUbyk7dGhpcy5fc2V0Vmlldyh0aGlzLl9tYXAuZ2V0Q2VudGVyKCksdGhpcy5fbWFwLmdldFpvb20oKSx0LHQpfSxfYW5pbWF0ZVpvb206ZnVuY3Rpb24odCl7dGhpcy5fc2V0Vmlldyh0LmNlbnRlcix0Lnpvb20sITAsdC5ub1VwZGF0ZSl9LF9jbGFtcFpvb206ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5vcHRpb25zO3JldHVybiB2b2lkIDAhPT1lLm1pbk5hdGl2ZVpvb20mJnQ8ZS5taW5OYXRpdmVab29tP2UubWluTmF0aXZlWm9vbTp2b2lkIDAhPT1lLm1heE5hdGl2ZVpvb20mJmUubWF4TmF0aXZlWm9vbTx0P2UubWF4TmF0aXZlWm9vbTp0fSxfc2V0VmlldzpmdW5jdGlvbih0LGUsaSxuKXt2YXIgbz1NYXRoLnJvdW5kKGUpLG89dm9pZCAwIT09dGhpcy5vcHRpb25zLm1heFpvb20mJm8+dGhpcy5vcHRpb25zLm1heFpvb218fHZvaWQgMCE9PXRoaXMub3B0aW9ucy5taW5ab29tJiZvPHRoaXMub3B0aW9ucy5taW5ab29tP3ZvaWQgMDp0aGlzLl9jbGFtcFpvb20obykscz10aGlzLm9wdGlvbnMudXBkYXRlV2hlblpvb21pbmcmJm8hPT10aGlzLl90aWxlWm9vbTtuJiYhc3x8KHRoaXMuX3RpbGVab29tPW8sdGhpcy5fYWJvcnRMb2FkaW5nJiZ0aGlzLl9hYm9ydExvYWRpbmcoKSx0aGlzLl91cGRhdGVMZXZlbHMoKSx0aGlzLl9yZXNldEdyaWQoKSx2b2lkIDAhPT1vJiZ0aGlzLl91cGRhdGUodCksaXx8dGhpcy5fcHJ1bmVUaWxlcygpLHRoaXMuX25vUHJ1bmU9ISFpKSx0aGlzLl9zZXRab29tVHJhbnNmb3Jtcyh0LGUpfSxfc2V0Wm9vbVRyYW5zZm9ybXM6ZnVuY3Rpb24odCxlKXtmb3IodmFyIGkgaW4gdGhpcy5fbGV2ZWxzKXRoaXMuX3NldFpvb21UcmFuc2Zvcm0odGhpcy5fbGV2ZWxzW2ldLHQsZSl9LF9zZXRab29tVHJhbnNmb3JtOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbj10aGlzLl9tYXAuZ2V0Wm9vbVNjYWxlKGksdC56b29tKSxlPXQub3JpZ2luLm11bHRpcGx5Qnkobikuc3VidHJhY3QodGhpcy5fbWFwLl9nZXROZXdQaXhlbE9yaWdpbihlLGkpKS5yb3VuZCgpO2IuYW55M2Q/YmUodC5lbCxlLG4pOloodC5lbCxlKX0sX3Jlc2V0R3JpZDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX21hcCxlPXQub3B0aW9ucy5jcnMsaT10aGlzLl90aWxlU2l6ZT10aGlzLmdldFRpbGVTaXplKCksbj10aGlzLl90aWxlWm9vbSxvPXRoaXMuX21hcC5nZXRQaXhlbFdvcmxkQm91bmRzKHRoaXMuX3RpbGVab29tKTtvJiYodGhpcy5fZ2xvYmFsVGlsZVJhbmdlPXRoaXMuX3B4Qm91bmRzVG9UaWxlUmFuZ2UobykpLHRoaXMuX3dyYXBYPWUud3JhcExuZyYmIXRoaXMub3B0aW9ucy5ub1dyYXAmJltNYXRoLmZsb29yKHQucHJvamVjdChbMCxlLndyYXBMbmdbMF1dLG4pLngvaS54KSxNYXRoLmNlaWwodC5wcm9qZWN0KFswLGUud3JhcExuZ1sxXV0sbikueC9pLnkpXSx0aGlzLl93cmFwWT1lLndyYXBMYXQmJiF0aGlzLm9wdGlvbnMubm9XcmFwJiZbTWF0aC5mbG9vcih0LnByb2plY3QoW2Uud3JhcExhdFswXSwwXSxuKS55L2kueCksTWF0aC5jZWlsKHQucHJvamVjdChbZS53cmFwTGF0WzFdLDBdLG4pLnkvaS55KV19LF9vbk1vdmVFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9tYXAmJiF0aGlzLl9tYXAuX2FuaW1hdGluZ1pvb20mJnRoaXMuX3VwZGF0ZSgpfSxfZ2V0VGlsZWRQaXhlbEJvdW5kczpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9tYXAsaT1lLl9hbmltYXRpbmdab29tP01hdGgubWF4KGUuX2FuaW1hdGVUb1pvb20sZS5nZXRab29tKCkpOmUuZ2V0Wm9vbSgpLGk9ZS5nZXRab29tU2NhbGUoaSx0aGlzLl90aWxlWm9vbSksdD1lLnByb2plY3QodCx0aGlzLl90aWxlWm9vbSkuZmxvb3IoKSxlPWUuZ2V0U2l6ZSgpLmRpdmlkZUJ5KDIqaSk7cmV0dXJuIG5ldyBmKHQuc3VidHJhY3QoZSksdC5hZGQoZSkpfSxfdXBkYXRlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX21hcDtpZihlKXt2YXIgaT10aGlzLl9jbGFtcFpvb20oZS5nZXRab29tKCkpO2lmKHZvaWQgMD09PXQmJih0PWUuZ2V0Q2VudGVyKCkpLHZvaWQgMCE9PXRoaXMuX3RpbGVab29tKXt2YXIgbixlPXRoaXMuX2dldFRpbGVkUGl4ZWxCb3VuZHModCksbz10aGlzLl9weEJvdW5kc1RvVGlsZVJhbmdlKGUpLHM9by5nZXRDZW50ZXIoKSxyPVtdLGU9dGhpcy5vcHRpb25zLmtlZXBCdWZmZXIsYT1uZXcgZihvLmdldEJvdHRvbUxlZnQoKS5zdWJ0cmFjdChbZSwtZV0pLG8uZ2V0VG9wUmlnaHQoKS5hZGQoW2UsLWVdKSk7aWYoIShpc0Zpbml0ZShvLm1pbi54KSYmaXNGaW5pdGUoby5taW4ueSkmJmlzRmluaXRlKG8ubWF4LngpJiZpc0Zpbml0ZShvLm1heC55KSkpdGhyb3cgbmV3IEVycm9yKCJBdHRlbXB0ZWQgdG8gbG9hZCBhbiBpbmZpbml0ZSBudW1iZXIgb2YgdGlsZXMiKTtmb3IobiBpbiB0aGlzLl90aWxlcyl7dmFyIGg9dGhpcy5fdGlsZXNbbl0uY29vcmRzO2guej09PXRoaXMuX3RpbGVab29tJiZhLmNvbnRhaW5zKG5ldyBwKGgueCxoLnkpKXx8KHRoaXMuX3RpbGVzW25dLmN1cnJlbnQ9ITEpfWlmKDE8TWF0aC5hYnMoaS10aGlzLl90aWxlWm9vbSkpdGhpcy5fc2V0Vmlldyh0LGkpO2Vsc2V7Zm9yKHZhciBsPW8ubWluLnk7bDw9by5tYXgueTtsKyspZm9yKHZhciB1PW8ubWluLng7dTw9by5tYXgueDt1Kyspe3ZhciBjLGQ9bmV3IHAodSxsKTtkLno9dGhpcy5fdGlsZVpvb20sdGhpcy5faXNWYWxpZFRpbGUoZCkmJigoYz10aGlzLl90aWxlc1t0aGlzLl90aWxlQ29vcmRzVG9LZXkoZCldKT9jLmN1cnJlbnQ9ITA6ci5wdXNoKGQpKX1pZihyLnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5kaXN0YW5jZVRvKHMpLWUuZGlzdGFuY2VUbyhzKX0pLDAhPT1yLmxlbmd0aCl7dGhpcy5fbG9hZGluZ3x8KHRoaXMuX2xvYWRpbmc9ITAsdGhpcy5maXJlKCJsb2FkaW5nIikpO2Zvcih2YXIgXz1kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksdT0wO3U8ci5sZW5ndGg7dSsrKXRoaXMuX2FkZFRpbGUoclt1XSxfKTt0aGlzLl9sZXZlbC5lbC5hcHBlbmRDaGlsZChfKX19fX19LF9pc1ZhbGlkVGlsZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9tYXAub3B0aW9ucy5jcnM7aWYoIWUuaW5maW5pdGUpe3ZhciBpPXRoaXMuX2dsb2JhbFRpbGVSYW5nZTtpZighZS53cmFwTG5nJiYodC54PGkubWluLnh8fHQueD5pLm1heC54KXx8IWUud3JhcExhdCYmKHQueTxpLm1pbi55fHx0Lnk+aS5tYXgueSkpcmV0dXJuITF9cmV0dXJuIXRoaXMub3B0aW9ucy5ib3VuZHN8fChlPXRoaXMuX3RpbGVDb29yZHNUb0JvdW5kcyh0KSxnKHRoaXMub3B0aW9ucy5ib3VuZHMpLm92ZXJsYXBzKGUpKX0sX2tleVRvQm91bmRzOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl90aWxlQ29vcmRzVG9Cb3VuZHModGhpcy5fa2V5VG9UaWxlQ29vcmRzKHQpKX0sX3RpbGVDb29yZHNUb053U2U6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbWFwLGk9dGhpcy5nZXRUaWxlU2l6ZSgpLG49dC5zY2FsZUJ5KGkpLGk9bi5hZGQoaSk7cmV0dXJuW2UudW5wcm9qZWN0KG4sdC56KSxlLnVucHJvamVjdChpLHQueildfSxfdGlsZUNvb3Jkc1RvQm91bmRzOmZ1bmN0aW9uKHQpe3Q9dGhpcy5fdGlsZUNvb3Jkc1RvTndTZSh0KSx0PW5ldyBzKHRbMF0sdFsxXSk7cmV0dXJuIHQ9dGhpcy5vcHRpb25zLm5vV3JhcD90OnRoaXMuX21hcC53cmFwTGF0TG5nQm91bmRzKHQpfSxfdGlsZUNvb3Jkc1RvS2V5OmZ1bmN0aW9uKHQpe3JldHVybiB0LngrIjoiK3QueSsiOiIrdC56fSxfa2V5VG9UaWxlQ29vcmRzOmZ1bmN0aW9uKHQpe3ZhciB0PXQuc3BsaXQoIjoiKSxlPW5ldyBwKCt0WzBdLCt0WzFdKTtyZXR1cm4gZS56PSt0WzJdLGV9LF9yZW1vdmVUaWxlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3RpbGVzW3RdO2UmJihUKGUuZWwpLGRlbGV0ZSB0aGlzLl90aWxlc1t0XSx0aGlzLmZpcmUoInRpbGV1bmxvYWQiLHt0aWxlOmUuZWwsY29vcmRzOnRoaXMuX2tleVRvVGlsZUNvb3Jkcyh0KX0pKX0sX2luaXRUaWxlOmZ1bmN0aW9uKHQpe00odCwibGVhZmxldC10aWxlIik7dmFyIGU9dGhpcy5nZXRUaWxlU2l6ZSgpO3Quc3R5bGUud2lkdGg9ZS54KyJweCIsdC5zdHlsZS5oZWlnaHQ9ZS55KyJweCIsdC5vbnNlbGVjdHN0YXJ0PXUsdC5vbm1vdXNlbW92ZT11LGIuaWVsdDkmJnRoaXMub3B0aW9ucy5vcGFjaXR5PDEmJkModCx0aGlzLm9wdGlvbnMub3BhY2l0eSl9LF9hZGRUaWxlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5fZ2V0VGlsZVBvcyh0KSxuPXRoaXMuX3RpbGVDb29yZHNUb0tleSh0KSxvPXRoaXMuY3JlYXRlVGlsZSh0aGlzLl93cmFwQ29vcmRzKHQpLGEodGhpcy5fdGlsZVJlYWR5LHRoaXMsdCkpO3RoaXMuX2luaXRUaWxlKG8pLHRoaXMuY3JlYXRlVGlsZS5sZW5ndGg8MiYmeChhKHRoaXMuX3RpbGVSZWFkeSx0aGlzLHQsbnVsbCxvKSksWihvLGkpLHRoaXMuX3RpbGVzW25dPXtlbDpvLGNvb3Jkczp0LGN1cnJlbnQ6ITB9LGUuYXBwZW5kQ2hpbGQobyksdGhpcy5maXJlKCJ0aWxlbG9hZHN0YXJ0Iix7dGlsZTpvLGNvb3Jkczp0fSl9LF90aWxlUmVhZHk6ZnVuY3Rpb24odCxlLGkpe2UmJnRoaXMuZmlyZSgidGlsZWVycm9yIix7ZXJyb3I6ZSx0aWxlOmksY29vcmRzOnR9KTt2YXIgbj10aGlzLl90aWxlQ29vcmRzVG9LZXkodCk7KGk9dGhpcy5fdGlsZXNbbl0pJiYoaS5sb2FkZWQ9K25ldyBEYXRlLHRoaXMuX21hcC5fZmFkZUFuaW1hdGVkPyhDKGkuZWwsMCkscih0aGlzLl9mYWRlRnJhbWUpLHRoaXMuX2ZhZGVGcmFtZT14KHRoaXMuX3VwZGF0ZU9wYWNpdHksdGhpcykpOihpLmFjdGl2ZT0hMCx0aGlzLl9wcnVuZVRpbGVzKCkpLGV8fChNKGkuZWwsImxlYWZsZXQtdGlsZS1sb2FkZWQiKSx0aGlzLmZpcmUoInRpbGVsb2FkIix7dGlsZTppLmVsLGNvb3Jkczp0fSkpLHRoaXMuX25vVGlsZXNUb0xvYWQoKSYmKHRoaXMuX2xvYWRpbmc9ITEsdGhpcy5maXJlKCJsb2FkIiksYi5pZWx0OXx8IXRoaXMuX21hcC5fZmFkZUFuaW1hdGVkP3godGhpcy5fcHJ1bmVUaWxlcyx0aGlzKTpzZXRUaW1lb3V0KGEodGhpcy5fcHJ1bmVUaWxlcyx0aGlzKSwyNTApKSl9LF9nZXRUaWxlUG9zOmZ1bmN0aW9uKHQpe3JldHVybiB0LnNjYWxlQnkodGhpcy5nZXRUaWxlU2l6ZSgpKS5zdWJ0cmFjdCh0aGlzLl9sZXZlbC5vcmlnaW4pfSxfd3JhcENvb3JkczpmdW5jdGlvbih0KXt2YXIgZT1uZXcgcCh0aGlzLl93cmFwWD9IKHQueCx0aGlzLl93cmFwWCk6dC54LHRoaXMuX3dyYXBZP0godC55LHRoaXMuX3dyYXBZKTp0LnkpO3JldHVybiBlLno9dC56LGV9LF9weEJvdW5kc1RvVGlsZVJhbmdlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZ2V0VGlsZVNpemUoKTtyZXR1cm4gbmV3IGYodC5taW4udW5zY2FsZUJ5KGUpLmZsb29yKCksdC5tYXgudW5zY2FsZUJ5KGUpLmNlaWwoKS5zdWJ0cmFjdChbMSwxXSkpfSxfbm9UaWxlc1RvTG9hZDpmdW5jdGlvbigpe2Zvcih2YXIgdCBpbiB0aGlzLl90aWxlcylpZighdGhpcy5fdGlsZXNbdF0ubG9hZGVkKXJldHVybiExO3JldHVybiEwfX0pO3ZhciBEaT1OaS5leHRlbmQoe29wdGlvbnM6e21pblpvb206MCxtYXhab29tOjE4LHN1YmRvbWFpbnM6ImFiYyIsZXJyb3JUaWxlVXJsOiIiLHpvb21PZmZzZXQ6MCx0bXM6ITEsem9vbVJldmVyc2U6ITEsZGV0ZWN0UmV0aW5hOiExLGNyb3NzT3JpZ2luOiExLHJlZmVycmVyUG9saWN5OiExfSxpbml0aWFsaXplOmZ1bmN0aW9uKHQsZSl7dGhpcy5fdXJsPXQsKGU9Yyh0aGlzLGUpKS5kZXRlY3RSZXRpbmEmJmIucmV0aW5hJiYwPGUubWF4Wm9vbT8oZS50aWxlU2l6ZT1NYXRoLmZsb29yKGUudGlsZVNpemUvMiksZS56b29tUmV2ZXJzZT8oZS56b29tT2Zmc2V0LS0sZS5taW5ab29tPU1hdGgubWluKGUubWF4Wm9vbSxlLm1pblpvb20rMSkpOihlLnpvb21PZmZzZXQrKyxlLm1heFpvb209TWF0aC5tYXgoZS5taW5ab29tLGUubWF4Wm9vbS0xKSksZS5taW5ab29tPU1hdGgubWF4KDAsZS5taW5ab29tKSk6ZS56b29tUmV2ZXJzZT9lLm1pblpvb209TWF0aC5taW4oZS5tYXhab29tLGUubWluWm9vbSk6ZS5tYXhab29tPU1hdGgubWF4KGUubWluWm9vbSxlLm1heFpvb20pLCJzdHJpbmciPT10eXBlb2YgZS5zdWJkb21haW5zJiYoZS5zdWJkb21haW5zPWUuc3ViZG9tYWlucy5zcGxpdCgiIikpLHRoaXMub24oInRpbGV1bmxvYWQiLHRoaXMuX29uVGlsZVJlbW92ZSl9LHNldFVybDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl91cmw9PT10JiZ2b2lkIDA9PT1lJiYoZT0hMCksdGhpcy5fdXJsPXQsZXx8dGhpcy5yZWRyYXcoKSx0aGlzfSxjcmVhdGVUaWxlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7cmV0dXJuIFMoaSwibG9hZCIsYSh0aGlzLl90aWxlT25Mb2FkLHRoaXMsZSxpKSksUyhpLCJlcnJvciIsYSh0aGlzLl90aWxlT25FcnJvcix0aGlzLGUsaSkpLCF0aGlzLm9wdGlvbnMuY3Jvc3NPcmlnaW4mJiIiIT09dGhpcy5vcHRpb25zLmNyb3NzT3JpZ2lufHwoaS5jcm9zc09yaWdpbj0hMD09PXRoaXMub3B0aW9ucy5jcm9zc09yaWdpbj8iIjp0aGlzLm9wdGlvbnMuY3Jvc3NPcmlnaW4pLCJzdHJpbmciPT10eXBlb2YgdGhpcy5vcHRpb25zLnJlZmVycmVyUG9saWN5JiYoaS5yZWZlcnJlclBvbGljeT10aGlzLm9wdGlvbnMucmVmZXJyZXJQb2xpY3kpLGkuYWx0PSIiLGkuc3JjPXRoaXMuZ2V0VGlsZVVybCh0KSxpfSxnZXRUaWxlVXJsOmZ1bmN0aW9uKHQpe3ZhciBlPXtyOmIucmV0aW5hPyJAMngiOiIiLHM6dGhpcy5fZ2V0U3ViZG9tYWluKHQpLHg6dC54LHk6dC55LHo6dGhpcy5fZ2V0Wm9vbUZvclVybCgpfTtyZXR1cm4gdGhpcy5fbWFwJiYhdGhpcy5fbWFwLm9wdGlvbnMuY3JzLmluZmluaXRlJiYodD10aGlzLl9nbG9iYWxUaWxlUmFuZ2UubWF4LnktdC55LHRoaXMub3B0aW9ucy50bXMmJihlLnk9dCksZVsiLXkiXT10KSxxKHRoaXMuX3VybCxsKGUsdGhpcy5vcHRpb25zKSl9LF90aWxlT25Mb2FkOmZ1bmN0aW9uKHQsZSl7Yi5pZWx0OT9zZXRUaW1lb3V0KGEodCx0aGlzLG51bGwsZSksMCk6dChudWxsLGUpfSxfdGlsZU9uRXJyb3I6ZnVuY3Rpb24odCxlLGkpe3ZhciBuPXRoaXMub3B0aW9ucy5lcnJvclRpbGVVcmw7biYmZS5nZXRBdHRyaWJ1dGUoInNyYyIpIT09biYmKGUuc3JjPW4pLHQoaSxlKX0sX29uVGlsZVJlbW92ZTpmdW5jdGlvbih0KXt0LnRpbGUub25sb2FkPW51bGx9LF9nZXRab29tRm9yVXJsOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fdGlsZVpvb20sZT10aGlzLm9wdGlvbnMubWF4Wm9vbTtyZXR1cm4odD10aGlzLm9wdGlvbnMuem9vbVJldmVyc2U/ZS10OnQpK3RoaXMub3B0aW9ucy56b29tT2Zmc2V0fSxfZ2V0U3ViZG9tYWluOmZ1bmN0aW9uKHQpe3Q9TWF0aC5hYnModC54K3QueSkldGhpcy5vcHRpb25zLnN1YmRvbWFpbnMubGVuZ3RoO3JldHVybiB0aGlzLm9wdGlvbnMuc3ViZG9tYWluc1t0XX0sX2Fib3J0TG9hZGluZzpmdW5jdGlvbigpe3ZhciB0LGUsaTtmb3IodCBpbiB0aGlzLl90aWxlcyl0aGlzLl90aWxlc1t0XS5jb29yZHMueiE9PXRoaXMuX3RpbGVab29tJiYoKGk9dGhpcy5fdGlsZXNbdF0uZWwpLm9ubG9hZD11LGkub25lcnJvcj11LGkuY29tcGxldGV8fChpLnNyYz1LLGU9dGhpcy5fdGlsZXNbdF0uY29vcmRzLFQoaSksZGVsZXRlIHRoaXMuX3RpbGVzW3RdLHRoaXMuZmlyZSgidGlsZWFib3J0Iix7dGlsZTppLGNvb3JkczplfSkpKX0sX3JlbW92ZVRpbGU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fdGlsZXNbdF07aWYoZSlyZXR1cm4gZS5lbC5zZXRBdHRyaWJ1dGUoInNyYyIsSyksTmkucHJvdG90eXBlLl9yZW1vdmVUaWxlLmNhbGwodGhpcyx0KX0sX3RpbGVSZWFkeTpmdW5jdGlvbih0LGUsaSl7aWYodGhpcy5fbWFwJiYoIWl8fGkuZ2V0QXR0cmlidXRlKCJzcmMiKSE9PUspKXJldHVybiBOaS5wcm90b3R5cGUuX3RpbGVSZWFkeS5jYWxsKHRoaXMsdCxlLGkpfX0pO2Z1bmN0aW9uIGppKHQsZSl7cmV0dXJuIG5ldyBEaSh0LGUpfXZhciBIaT1EaS5leHRlbmQoe2RlZmF1bHRXbXNQYXJhbXM6e3NlcnZpY2U6IldNUyIscmVxdWVzdDoiR2V0TWFwIixsYXllcnM6IiIsc3R5bGVzOiIiLGZvcm1hdDoiaW1hZ2UvanBlZyIsdHJhbnNwYXJlbnQ6ITEsdmVyc2lvbjoiMS4xLjEifSxvcHRpb25zOntjcnM6bnVsbCx1cHBlcmNhc2U6ITF9LGluaXRpYWxpemU6ZnVuY3Rpb24odCxlKXt0aGlzLl91cmw9dDt2YXIgaSxuPWwoe30sdGhpcy5kZWZhdWx0V21zUGFyYW1zKTtmb3IoaSBpbiBlKWkgaW4gdGhpcy5vcHRpb25zfHwobltpXT1lW2ldKTt2YXIgdD0oZT1jKHRoaXMsZSkpLmRldGVjdFJldGluYSYmYi5yZXRpbmE/MjoxLG89dGhpcy5nZXRUaWxlU2l6ZSgpO24ud2lkdGg9by54KnQsbi5oZWlnaHQ9by55KnQsdGhpcy53bXNQYXJhbXM9bn0sb25BZGQ6ZnVuY3Rpb24odCl7dGhpcy5fY3JzPXRoaXMub3B0aW9ucy5jcnN8fHQub3B0aW9ucy5jcnMsdGhpcy5fd21zVmVyc2lvbj1wYXJzZUZsb2F0KHRoaXMud21zUGFyYW1zLnZlcnNpb24pO3ZhciBlPTEuMzw9dGhpcy5fd21zVmVyc2lvbj8iY3JzIjoic3JzIjt0aGlzLndtc1BhcmFtc1tlXT10aGlzLl9jcnMuY29kZSxEaS5wcm90b3R5cGUub25BZGQuY2FsbCh0aGlzLHQpfSxnZXRUaWxlVXJsOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3RpbGVDb29yZHNUb053U2UodCksaT10aGlzLl9jcnMsaT1fKGkucHJvamVjdChlWzBdKSxpLnByb2plY3QoZVsxXSkpLGU9aS5taW4saT1pLm1heCxlPSgxLjM8PXRoaXMuX3dtc1ZlcnNpb24mJnRoaXMuX2Nycz09PWxpP1tlLnksZS54LGkueSxpLnhdOltlLngsZS55LGkueCxpLnldKS5qb2luKCIsIiksaT1EaS5wcm90b3R5cGUuZ2V0VGlsZVVybC5jYWxsKHRoaXMsdCk7cmV0dXJuIGkrVSh0aGlzLndtc1BhcmFtcyxpLHRoaXMub3B0aW9ucy51cHBlcmNhc2UpKyh0aGlzLm9wdGlvbnMudXBwZXJjYXNlPyImQkJPWD0iOiImYmJveD0iKStlfSxzZXRQYXJhbXM6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbCh0aGlzLndtc1BhcmFtcyx0KSxlfHx0aGlzLnJlZHJhdygpLHRoaXN9fSk7RGkuV01TPUhpLGppLndtcz1mdW5jdGlvbih0LGUpe3JldHVybiBuZXcgSGkodCxlKX07dmFyIFdpPW8uZXh0ZW5kKHtvcHRpb25zOntwYWRkaW5nOi4xfSxpbml0aWFsaXplOmZ1bmN0aW9uKHQpe2ModGhpcyx0KSxoKHRoaXMpLHRoaXMuX2xheWVycz10aGlzLl9sYXllcnN8fHt9fSxvbkFkZDpmdW5jdGlvbigpe3RoaXMuX2NvbnRhaW5lcnx8KHRoaXMuX2luaXRDb250YWluZXIoKSxNKHRoaXMuX2NvbnRhaW5lciwibGVhZmxldC16b29tLWFuaW1hdGVkIikpLHRoaXMuZ2V0UGFuZSgpLmFwcGVuZENoaWxkKHRoaXMuX2NvbnRhaW5lciksdGhpcy5fdXBkYXRlKCksdGhpcy5vbigidXBkYXRlIix0aGlzLl91cGRhdGVQYXRocyx0aGlzKX0sb25SZW1vdmU6ZnVuY3Rpb24oKXt0aGlzLm9mZigidXBkYXRlIix0aGlzLl91cGRhdGVQYXRocyx0aGlzKSx0aGlzLl9kZXN0cm95Q29udGFpbmVyKCl9LGdldEV2ZW50czpmdW5jdGlvbigpe3ZhciB0PXt2aWV3cmVzZXQ6dGhpcy5fcmVzZXQsem9vbTp0aGlzLl9vblpvb20sbW92ZWVuZDp0aGlzLl91cGRhdGUsem9vbWVuZDp0aGlzLl9vblpvb21FbmR9O3JldHVybiB0aGlzLl96b29tQW5pbWF0ZWQmJih0Lnpvb21hbmltPXRoaXMuX29uQW5pbVpvb20pLHR9LF9vbkFuaW1ab29tOmZ1bmN0aW9uKHQpe3RoaXMuX3VwZGF0ZVRyYW5zZm9ybSh0LmNlbnRlcix0Lnpvb20pfSxfb25ab29tOmZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlVHJhbnNmb3JtKHRoaXMuX21hcC5nZXRDZW50ZXIoKSx0aGlzLl9tYXAuZ2V0Wm9vbSgpKX0sX3VwZGF0ZVRyYW5zZm9ybTpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuX21hcC5nZXRab29tU2NhbGUoZSx0aGlzLl96b29tKSxuPXRoaXMuX21hcC5nZXRTaXplKCkubXVsdGlwbHlCeSguNSt0aGlzLm9wdGlvbnMucGFkZGluZyksbz10aGlzLl9tYXAucHJvamVjdCh0aGlzLl9jZW50ZXIsZSksbj1uLm11bHRpcGx5QnkoLWkpLmFkZChvKS5zdWJ0cmFjdCh0aGlzLl9tYXAuX2dldE5ld1BpeGVsT3JpZ2luKHQsZSkpO2IuYW55M2Q/YmUodGhpcy5fY29udGFpbmVyLG4saSk6Wih0aGlzLl9jb250YWluZXIsbil9LF9yZXNldDpmdW5jdGlvbigpe2Zvcih2YXIgdCBpbiB0aGlzLl91cGRhdGUoKSx0aGlzLl91cGRhdGVUcmFuc2Zvcm0odGhpcy5fY2VudGVyLHRoaXMuX3pvb20pLHRoaXMuX2xheWVycyl0aGlzLl9sYXllcnNbdF0uX3Jlc2V0KCl9LF9vblpvb21FbmQ6ZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gdGhpcy5fbGF5ZXJzKXRoaXMuX2xheWVyc1t0XS5fcHJvamVjdCgpfSxfdXBkYXRlUGF0aHM6ZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gdGhpcy5fbGF5ZXJzKXRoaXMuX2xheWVyc1t0XS5fdXBkYXRlKCl9LF91cGRhdGU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wdGlvbnMucGFkZGluZyxlPXRoaXMuX21hcC5nZXRTaXplKCksaT10aGlzLl9tYXAuY29udGFpbmVyUG9pbnRUb0xheWVyUG9pbnQoZS5tdWx0aXBseUJ5KC10KSkucm91bmQoKTt0aGlzLl9ib3VuZHM9bmV3IGYoaSxpLmFkZChlLm11bHRpcGx5QnkoMSsyKnQpKS5yb3VuZCgpKSx0aGlzLl9jZW50ZXI9dGhpcy5fbWFwLmdldENlbnRlcigpLHRoaXMuX3pvb209dGhpcy5fbWFwLmdldFpvb20oKX19KSxGaT1XaS5leHRlbmQoe29wdGlvbnM6e3RvbGVyYW5jZTowfSxnZXRFdmVudHM6ZnVuY3Rpb24oKXt2YXIgdD1XaS5wcm90b3R5cGUuZ2V0RXZlbnRzLmNhbGwodGhpcyk7cmV0dXJuIHQudmlld3ByZXJlc2V0PXRoaXMuX29uVmlld1ByZVJlc2V0LHR9LF9vblZpZXdQcmVSZXNldDpmdW5jdGlvbigpe3RoaXMuX3Bvc3Rwb25lVXBkYXRlUGF0aHM9ITB9LG9uQWRkOmZ1bmN0aW9uKCl7V2kucHJvdG90eXBlLm9uQWRkLmNhbGwodGhpcyksdGhpcy5fZHJhdygpfSxfaW5pdENvbnRhaW5lcjpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2NvbnRhaW5lcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTtTKHQsIm1vdXNlbW92ZSIsdGhpcy5fb25Nb3VzZU1vdmUsdGhpcyksUyh0LCJjbGljayBkYmxjbGljayBtb3VzZWRvd24gbW91c2V1cCBjb250ZXh0bWVudSIsdGhpcy5fb25DbGljayx0aGlzKSxTKHQsIm1vdXNlb3V0Iix0aGlzLl9oYW5kbGVNb3VzZU91dCx0aGlzKSx0Ll9sZWFmbGV0X2Rpc2FibGVfZXZlbnRzPSEwLHRoaXMuX2N0eD10LmdldENvbnRleHQoIjJkIil9LF9kZXN0cm95Q29udGFpbmVyOmZ1bmN0aW9uKCl7cih0aGlzLl9yZWRyYXdSZXF1ZXN0KSxkZWxldGUgdGhpcy5fY3R4LFQodGhpcy5fY29udGFpbmVyKSxrKHRoaXMuX2NvbnRhaW5lciksZGVsZXRlIHRoaXMuX2NvbnRhaW5lcn0sX3VwZGF0ZVBhdGhzOmZ1bmN0aW9uKCl7aWYoIXRoaXMuX3Bvc3Rwb25lVXBkYXRlUGF0aHMpe2Zvcih2YXIgdCBpbiB0aGlzLl9yZWRyYXdCb3VuZHM9bnVsbCx0aGlzLl9sYXllcnMpdGhpcy5fbGF5ZXJzW3RdLl91cGRhdGUoKTt0aGlzLl9yZWRyYXcoKX19LF91cGRhdGU6ZnVuY3Rpb24oKXt2YXIgdCxlLGksbjt0aGlzLl9tYXAuX2FuaW1hdGluZ1pvb20mJnRoaXMuX2JvdW5kc3x8KFdpLnByb3RvdHlwZS5fdXBkYXRlLmNhbGwodGhpcyksdD10aGlzLl9ib3VuZHMsZT10aGlzLl9jb250YWluZXIsaT10LmdldFNpemUoKSxuPWIucmV0aW5hPzI6MSxaKGUsdC5taW4pLGUud2lkdGg9bippLngsZS5oZWlnaHQ9bippLnksZS5zdHlsZS53aWR0aD1pLngrInB4IixlLnN0eWxlLmhlaWdodD1pLnkrInB4IixiLnJldGluYSYmdGhpcy5fY3R4LnNjYWxlKDIsMiksdGhpcy5fY3R4LnRyYW5zbGF0ZSgtdC5taW4ueCwtdC5taW4ueSksdGhpcy5maXJlKCJ1cGRhdGUiKSl9LF9yZXNldDpmdW5jdGlvbigpe1dpLnByb3RvdHlwZS5fcmVzZXQuY2FsbCh0aGlzKSx0aGlzLl9wb3N0cG9uZVVwZGF0ZVBhdGhzJiYodGhpcy5fcG9zdHBvbmVVcGRhdGVQYXRocz0hMSx0aGlzLl91cGRhdGVQYXRocygpKX0sX2luaXRQYXRoOmZ1bmN0aW9uKHQpe3RoaXMuX3VwZGF0ZURhc2hBcnJheSh0KTt0PSh0aGlzLl9sYXllcnNbaCh0KV09dCkuX29yZGVyPXtsYXllcjp0LHByZXY6dGhpcy5fZHJhd0xhc3QsbmV4dDpudWxsfTt0aGlzLl9kcmF3TGFzdCYmKHRoaXMuX2RyYXdMYXN0Lm5leHQ9dCksdGhpcy5fZHJhd0xhc3Q9dCx0aGlzLl9kcmF3Rmlyc3Q9dGhpcy5fZHJhd0ZpcnN0fHx0aGlzLl9kcmF3TGFzdH0sX2FkZFBhdGg6ZnVuY3Rpb24odCl7dGhpcy5fcmVxdWVzdFJlZHJhdyh0KX0sX3JlbW92ZVBhdGg6ZnVuY3Rpb24odCl7dmFyIGU9dC5fb3JkZXIsaT1lLm5leHQsZT1lLnByZXY7aT9pLnByZXY9ZTp0aGlzLl9kcmF3TGFzdD1lLGU/ZS5uZXh0PWk6dGhpcy5fZHJhd0ZpcnN0PWksZGVsZXRlIHQuX29yZGVyLGRlbGV0ZSB0aGlzLl9sYXllcnNbaCh0KV0sdGhpcy5fcmVxdWVzdFJlZHJhdyh0KX0sX3VwZGF0ZVBhdGg6ZnVuY3Rpb24odCl7dGhpcy5fZXh0ZW5kUmVkcmF3Qm91bmRzKHQpLHQuX3Byb2plY3QoKSx0Ll91cGRhdGUoKSx0aGlzLl9yZXF1ZXN0UmVkcmF3KHQpfSxfdXBkYXRlU3R5bGU6ZnVuY3Rpb24odCl7dGhpcy5fdXBkYXRlRGFzaEFycmF5KHQpLHRoaXMuX3JlcXVlc3RSZWRyYXcodCl9LF91cGRhdGVEYXNoQXJyYXk6ZnVuY3Rpb24odCl7aWYoInN0cmluZyI9PXR5cGVvZiB0Lm9wdGlvbnMuZGFzaEFycmF5KXtmb3IodmFyIGUsaT10Lm9wdGlvbnMuZGFzaEFycmF5LnNwbGl0KC9bLCBdKy8pLG49W10sbz0wO288aS5sZW5ndGg7bysrKXtpZihlPU51bWJlcihpW29dKSxpc05hTihlKSlyZXR1cm47bi5wdXNoKGUpfXQub3B0aW9ucy5fZGFzaEFycmF5PW59ZWxzZSB0Lm9wdGlvbnMuX2Rhc2hBcnJheT10Lm9wdGlvbnMuZGFzaEFycmF5fSxfcmVxdWVzdFJlZHJhdzpmdW5jdGlvbih0KXt0aGlzLl9tYXAmJih0aGlzLl9leHRlbmRSZWRyYXdCb3VuZHModCksdGhpcy5fcmVkcmF3UmVxdWVzdD10aGlzLl9yZWRyYXdSZXF1ZXN0fHx4KHRoaXMuX3JlZHJhdyx0aGlzKSl9LF9leHRlbmRSZWRyYXdCb3VuZHM6ZnVuY3Rpb24odCl7dmFyIGU7dC5fcHhCb3VuZHMmJihlPSh0Lm9wdGlvbnMud2VpZ2h0fHwwKSsxLHRoaXMuX3JlZHJhd0JvdW5kcz10aGlzLl9yZWRyYXdCb3VuZHN8fG5ldyBmLHRoaXMuX3JlZHJhd0JvdW5kcy5leHRlbmQodC5fcHhCb3VuZHMubWluLnN1YnRyYWN0KFtlLGVdKSksdGhpcy5fcmVkcmF3Qm91bmRzLmV4dGVuZCh0Ll9weEJvdW5kcy5tYXguYWRkKFtlLGVdKSkpfSxfcmVkcmF3OmZ1bmN0aW9uKCl7dGhpcy5fcmVkcmF3UmVxdWVzdD1udWxsLHRoaXMuX3JlZHJhd0JvdW5kcyYmKHRoaXMuX3JlZHJhd0JvdW5kcy5taW4uX2Zsb29yKCksdGhpcy5fcmVkcmF3Qm91bmRzLm1heC5fY2VpbCgpKSx0aGlzLl9jbGVhcigpLHRoaXMuX2RyYXcoKSx0aGlzLl9yZWRyYXdCb3VuZHM9bnVsbH0sX2NsZWFyOmZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLl9yZWRyYXdCb3VuZHM7ZT8odD1lLmdldFNpemUoKSx0aGlzLl9jdHguY2xlYXJSZWN0KGUubWluLngsZS5taW4ueSx0LngsdC55KSk6KHRoaXMuX2N0eC5zYXZlKCksdGhpcy5fY3R4LnNldFRyYW5zZm9ybSgxLDAsMCwxLDAsMCksdGhpcy5fY3R4LmNsZWFyUmVjdCgwLDAsdGhpcy5fY29udGFpbmVyLndpZHRoLHRoaXMuX2NvbnRhaW5lci5oZWlnaHQpLHRoaXMuX2N0eC5yZXN0b3JlKCkpfSxfZHJhdzpmdW5jdGlvbigpe3ZhciB0LGUsaT10aGlzLl9yZWRyYXdCb3VuZHM7dGhpcy5fY3R4LnNhdmUoKSxpJiYoZT1pLmdldFNpemUoKSx0aGlzLl9jdHguYmVnaW5QYXRoKCksdGhpcy5fY3R4LnJlY3QoaS5taW4ueCxpLm1pbi55LGUueCxlLnkpLHRoaXMuX2N0eC5jbGlwKCkpLHRoaXMuX2RyYXdpbmc9ITA7Zm9yKHZhciBuPXRoaXMuX2RyYXdGaXJzdDtuO249bi5uZXh0KXQ9bi5sYXllciwoIWl8fHQuX3B4Qm91bmRzJiZ0Ll9weEJvdW5kcy5pbnRlcnNlY3RzKGkpKSYmdC5fdXBkYXRlUGF0aCgpO3RoaXMuX2RyYXdpbmc9ITEsdGhpcy5fY3R4LnJlc3RvcmUoKX0sX3VwZGF0ZVBvbHk6ZnVuY3Rpb24odCxlKXtpZih0aGlzLl9kcmF3aW5nKXt2YXIgaSxuLG8scyxyPXQuX3BhcnRzLGE9ci5sZW5ndGgsaD10aGlzLl9jdHg7aWYoYSl7Zm9yKGguYmVnaW5QYXRoKCksaT0wO2k8YTtpKyspe2ZvcihuPTAsbz1yW2ldLmxlbmd0aDtuPG87bisrKXM9cltpXVtuXSxoW24/ImxpbmVUbyI6Im1vdmVUbyJdKHMueCxzLnkpO2UmJmguY2xvc2VQYXRoKCl9dGhpcy5fZmlsbFN0cm9rZShoLHQpfX19LF91cGRhdGVDaXJjbGU6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLG87dGhpcy5fZHJhd2luZyYmIXQuX2VtcHR5KCkmJihlPXQuX3BvaW50LGk9dGhpcy5fY3R4LG49TWF0aC5tYXgoTWF0aC5yb3VuZCh0Ll9yYWRpdXMpLDEpLDEhPShvPShNYXRoLm1heChNYXRoLnJvdW5kKHQuX3JhZGl1c1kpLDEpfHxuKS9uKSYmKGkuc2F2ZSgpLGkuc2NhbGUoMSxvKSksaS5iZWdpblBhdGgoKSxpLmFyYyhlLngsZS55L28sbiwwLDIqTWF0aC5QSSwhMSksMSE9byYmaS5yZXN0b3JlKCksdGhpcy5fZmlsbFN0cm9rZShpLHQpKX0sX2ZpbGxTdHJva2U6ZnVuY3Rpb24odCxlKXt2YXIgaT1lLm9wdGlvbnM7aS5maWxsJiYodC5nbG9iYWxBbHBoYT1pLmZpbGxPcGFjaXR5LHQuZmlsbFN0eWxlPWkuZmlsbENvbG9yfHxpLmNvbG9yLHQuZmlsbChpLmZpbGxSdWxlfHwiZXZlbm9kZCIpKSxpLnN0cm9rZSYmMCE9PWkud2VpZ2h0JiYodC5zZXRMaW5lRGFzaCYmdC5zZXRMaW5lRGFzaChlLm9wdGlvbnMmJmUub3B0aW9ucy5fZGFzaEFycmF5fHxbXSksdC5nbG9iYWxBbHBoYT1pLm9wYWNpdHksdC5saW5lV2lkdGg9aS53ZWlnaHQsdC5zdHJva2VTdHlsZT1pLmNvbG9yLHQubGluZUNhcD1pLmxpbmVDYXAsdC5saW5lSm9pbj1pLmxpbmVKb2luLHQuc3Ryb2tlKCkpfSxfb25DbGljazpmdW5jdGlvbih0KXtmb3IodmFyIGUsaSxuPXRoaXMuX21hcC5tb3VzZUV2ZW50VG9MYXllclBvaW50KHQpLG89dGhpcy5fZHJhd0ZpcnN0O287bz1vLm5leHQpKGU9by5sYXllcikub3B0aW9ucy5pbnRlcmFjdGl2ZSYmZS5fY29udGFpbnNQb2ludChuKSYmKCgiY2xpY2siPT09dC50eXBlfHwicHJlY2xpY2siPT09dC50eXBlKSYmdGhpcy5fbWFwLl9kcmFnZ2FibGVNb3ZlZChlKXx8KGk9ZSkpO3RoaXMuX2ZpcmVFdmVudCghIWkmJltpXSx0KX0sX29uTW91c2VNb3ZlOmZ1bmN0aW9uKHQpe3ZhciBlOyF0aGlzLl9tYXB8fHRoaXMuX21hcC5kcmFnZ2luZy5tb3ZpbmcoKXx8dGhpcy5fbWFwLl9hbmltYXRpbmdab29tfHwoZT10aGlzLl9tYXAubW91c2VFdmVudFRvTGF5ZXJQb2ludCh0KSx0aGlzLl9oYW5kbGVNb3VzZUhvdmVyKHQsZSkpfSxfaGFuZGxlTW91c2VPdXQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5faG92ZXJlZExheWVyO2UmJih6KHRoaXMuX2NvbnRhaW5lciwibGVhZmxldC1pbnRlcmFjdGl2ZSIpLHRoaXMuX2ZpcmVFdmVudChbZV0sdCwibW91c2VvdXQiKSx0aGlzLl9ob3ZlcmVkTGF5ZXI9bnVsbCx0aGlzLl9tb3VzZUhvdmVyVGhyb3R0bGVkPSExKX0sX2hhbmRsZU1vdXNlSG92ZXI6ZnVuY3Rpb24odCxlKXtpZighdGhpcy5fbW91c2VIb3ZlclRocm90dGxlZCl7Zm9yKHZhciBpLG4sbz10aGlzLl9kcmF3Rmlyc3Q7bztvPW8ubmV4dCkoaT1vLmxheWVyKS5vcHRpb25zLmludGVyYWN0aXZlJiZpLl9jb250YWluc1BvaW50KGUpJiYobj1pKTtuIT09dGhpcy5faG92ZXJlZExheWVyJiYodGhpcy5faGFuZGxlTW91c2VPdXQodCksbiYmKE0odGhpcy5fY29udGFpbmVyLCJsZWFmbGV0LWludGVyYWN0aXZlIiksdGhpcy5fZmlyZUV2ZW50KFtuXSx0LCJtb3VzZW92ZXIiKSx0aGlzLl9ob3ZlcmVkTGF5ZXI9bikpLHRoaXMuX2ZpcmVFdmVudCghIXRoaXMuX2hvdmVyZWRMYXllciYmW3RoaXMuX2hvdmVyZWRMYXllcl0sdCksdGhpcy5fbW91c2VIb3ZlclRocm90dGxlZD0hMCxzZXRUaW1lb3V0KGEoZnVuY3Rpb24oKXt0aGlzLl9tb3VzZUhvdmVyVGhyb3R0bGVkPSExfSx0aGlzKSwzMil9fSxfZmlyZUV2ZW50OmZ1bmN0aW9uKHQsZSxpKXt0aGlzLl9tYXAuX2ZpcmVET01FdmVudChlLGl8fGUudHlwZSx0KX0sX2JyaW5nVG9Gcm9udDpmdW5jdGlvbih0KXt2YXIgZSxpLG49dC5fb3JkZXI7biYmKGU9bi5uZXh0LGk9bi5wcmV2LGUmJigoZS5wcmV2PWkpP2kubmV4dD1lOmUmJih0aGlzLl9kcmF3Rmlyc3Q9ZSksbi5wcmV2PXRoaXMuX2RyYXdMYXN0LCh0aGlzLl9kcmF3TGFzdC5uZXh0PW4pLm5leHQ9bnVsbCx0aGlzLl9kcmF3TGFzdD1uLHRoaXMuX3JlcXVlc3RSZWRyYXcodCkpKX0sX2JyaW5nVG9CYWNrOmZ1bmN0aW9uKHQpe3ZhciBlLGksbj10Ll9vcmRlcjtuJiYoZT1uLm5leHQsKGk9bi5wcmV2KSYmKChpLm5leHQ9ZSk/ZS5wcmV2PWk6aSYmKHRoaXMuX2RyYXdMYXN0PWkpLG4ucHJldj1udWxsLG4ubmV4dD10aGlzLl9kcmF3Rmlyc3QsdGhpcy5fZHJhd0ZpcnN0LnByZXY9bix0aGlzLl9kcmF3Rmlyc3Q9bix0aGlzLl9yZXF1ZXN0UmVkcmF3KHQpKSl9fSk7ZnVuY3Rpb24gVWkodCl7cmV0dXJuIGIuY2FudmFzP25ldyBGaSh0KTpudWxsfXZhciBWaT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gZG9jdW1lbnQubmFtZXNwYWNlcy5hZGQoImx2bWwiLCJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOnZtbCIpLGZ1bmN0aW9uKHQpe3JldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCI8bHZtbDoiK3QrJyBjbGFzcz0ibHZtbCI+Jyl9fWNhdGNoKHQpe31yZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIjwiK3QrJyB4bWxucz0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LmNvbTp2bWwiIGNsYXNzPSJsdm1sIj4nKX19KCksenQ9e19pbml0Q29udGFpbmVyOmZ1bmN0aW9uKCl7dGhpcy5fY29udGFpbmVyPVAoImRpdiIsImxlYWZsZXQtdm1sLWNvbnRhaW5lciIpfSxfdXBkYXRlOmZ1bmN0aW9uKCl7dGhpcy5fbWFwLl9hbmltYXRpbmdab29tfHwoV2kucHJvdG90eXBlLl91cGRhdGUuY2FsbCh0aGlzKSx0aGlzLmZpcmUoInVwZGF0ZSIpKX0sX2luaXRQYXRoOmZ1bmN0aW9uKHQpe3ZhciBlPXQuX2NvbnRhaW5lcj1WaSgic2hhcGUiKTtNKGUsImxlYWZsZXQtdm1sLXNoYXBlICIrKHRoaXMub3B0aW9ucy5jbGFzc05hbWV8fCIiKSksZS5jb29yZHNpemU9IjEgMSIsdC5fcGF0aD1WaSgicGF0aCIpLGUuYXBwZW5kQ2hpbGQodC5fcGF0aCksdGhpcy5fdXBkYXRlU3R5bGUodCksdGhpcy5fbGF5ZXJzW2godCldPXR9LF9hZGRQYXRoOmZ1bmN0aW9uKHQpe3ZhciBlPXQuX2NvbnRhaW5lcjt0aGlzLl9jb250YWluZXIuYXBwZW5kQ2hpbGQoZSksdC5vcHRpb25zLmludGVyYWN0aXZlJiZ0LmFkZEludGVyYWN0aXZlVGFyZ2V0KGUpfSxfcmVtb3ZlUGF0aDpmdW5jdGlvbih0KXt2YXIgZT10Ll9jb250YWluZXI7VChlKSx0LnJlbW92ZUludGVyYWN0aXZlVGFyZ2V0KGUpLGRlbGV0ZSB0aGlzLl9sYXllcnNbaCh0KV19LF91cGRhdGVTdHlsZTpmdW5jdGlvbih0KXt2YXIgZT10Ll9zdHJva2UsaT10Ll9maWxsLG49dC5vcHRpb25zLG89dC5fY29udGFpbmVyO28uc3Ryb2tlZD0hIW4uc3Ryb2tlLG8uZmlsbGVkPSEhbi5maWxsLG4uc3Ryb2tlPyhlPWV8fCh0Ll9zdHJva2U9VmkoInN0cm9rZSIpKSxvLmFwcGVuZENoaWxkKGUpLGUud2VpZ2h0PW4ud2VpZ2h0KyJweCIsZS5jb2xvcj1uLmNvbG9yLGUub3BhY2l0eT1uLm9wYWNpdHksbi5kYXNoQXJyYXk/ZS5kYXNoU3R5bGU9ZChuLmRhc2hBcnJheSk/bi5kYXNoQXJyYXkuam9pbigiICIpOm4uZGFzaEFycmF5LnJlcGxhY2UoLyggKiwgKikvZywiICIpOmUuZGFzaFN0eWxlPSIiLGUuZW5kY2FwPW4ubGluZUNhcC5yZXBsYWNlKCJidXR0IiwiZmxhdCIpLGUuam9pbnN0eWxlPW4ubGluZUpvaW4pOmUmJihvLnJlbW92ZUNoaWxkKGUpLHQuX3N0cm9rZT1udWxsKSxuLmZpbGw/KGk9aXx8KHQuX2ZpbGw9VmkoImZpbGwiKSksby5hcHBlbmRDaGlsZChpKSxpLmNvbG9yPW4uZmlsbENvbG9yfHxuLmNvbG9yLGkub3BhY2l0eT1uLmZpbGxPcGFjaXR5KTppJiYoby5yZW1vdmVDaGlsZChpKSx0Ll9maWxsPW51bGwpfSxfdXBkYXRlQ2lyY2xlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuX3BvaW50LnJvdW5kKCksaT1NYXRoLnJvdW5kKHQuX3JhZGl1cyksbj1NYXRoLnJvdW5kKHQuX3JhZGl1c1l8fGkpO3RoaXMuX3NldFBhdGgodCx0Ll9lbXB0eSgpPyJNMCAwIjoiQUwgIitlLngrIiwiK2UueSsiICIraSsiLCIrbisiIDAsMjM1OTI2MDAiKX0sX3NldFBhdGg6ZnVuY3Rpb24odCxlKXt0Ll9wYXRoLnY9ZX0sX2JyaW5nVG9Gcm9udDpmdW5jdGlvbih0KXtmZSh0Ll9jb250YWluZXIpfSxfYnJpbmdUb0JhY2s6ZnVuY3Rpb24odCl7Z2UodC5fY29udGFpbmVyKX19LHFpPWIudm1sP1ZpOmN0LEdpPVdpLmV4dGVuZCh7X2luaXRDb250YWluZXI6ZnVuY3Rpb24oKXt0aGlzLl9jb250YWluZXI9cWkoInN2ZyIpLHRoaXMuX2NvbnRhaW5lci5zZXRBdHRyaWJ1dGUoInBvaW50ZXItZXZlbnRzIiwibm9uZSIpLHRoaXMuX3Jvb3RHcm91cD1xaSgiZyIpLHRoaXMuX2NvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLl9yb290R3JvdXApfSxfZGVzdHJveUNvbnRhaW5lcjpmdW5jdGlvbigpe1QodGhpcy5fY29udGFpbmVyKSxrKHRoaXMuX2NvbnRhaW5lciksZGVsZXRlIHRoaXMuX2NvbnRhaW5lcixkZWxldGUgdGhpcy5fcm9vdEdyb3VwLGRlbGV0ZSB0aGlzLl9zdmdTaXplfSxfdXBkYXRlOmZ1bmN0aW9uKCl7dmFyIHQsZSxpO3RoaXMuX21hcC5fYW5pbWF0aW5nWm9vbSYmdGhpcy5fYm91bmRzfHwoV2kucHJvdG90eXBlLl91cGRhdGUuY2FsbCh0aGlzKSxlPSh0PXRoaXMuX2JvdW5kcykuZ2V0U2l6ZSgpLGk9dGhpcy5fY29udGFpbmVyLHRoaXMuX3N2Z1NpemUmJnRoaXMuX3N2Z1NpemUuZXF1YWxzKGUpfHwodGhpcy5fc3ZnU2l6ZT1lLGkuc2V0QXR0cmlidXRlKCJ3aWR0aCIsZS54KSxpLnNldEF0dHJpYnV0ZSgiaGVpZ2h0IixlLnkpKSxaKGksdC5taW4pLGkuc2V0QXR0cmlidXRlKCJ2aWV3Qm94IixbdC5taW4ueCx0Lm1pbi55LGUueCxlLnldLmpvaW4oIiAiKSksdGhpcy5maXJlKCJ1cGRhdGUiKSl9LF9pbml0UGF0aDpmdW5jdGlvbih0KXt2YXIgZT10Ll9wYXRoPXFpKCJwYXRoIik7dC5vcHRpb25zLmNsYXNzTmFtZSYmTShlLHQub3B0aW9ucy5jbGFzc05hbWUpLHQub3B0aW9ucy5pbnRlcmFjdGl2ZSYmTShlLCJsZWFmbGV0LWludGVyYWN0aXZlIiksdGhpcy5fdXBkYXRlU3R5bGUodCksdGhpcy5fbGF5ZXJzW2godCldPXR9LF9hZGRQYXRoOmZ1bmN0aW9uKHQpe3RoaXMuX3Jvb3RHcm91cHx8dGhpcy5faW5pdENvbnRhaW5lcigpLHRoaXMuX3Jvb3RHcm91cC5hcHBlbmRDaGlsZCh0Ll9wYXRoKSx0LmFkZEludGVyYWN0aXZlVGFyZ2V0KHQuX3BhdGgpfSxfcmVtb3ZlUGF0aDpmdW5jdGlvbih0KXtUKHQuX3BhdGgpLHQucmVtb3ZlSW50ZXJhY3RpdmVUYXJnZXQodC5fcGF0aCksZGVsZXRlIHRoaXMuX2xheWVyc1toKHQpXX0sX3VwZGF0ZVBhdGg6ZnVuY3Rpb24odCl7dC5fcHJvamVjdCgpLHQuX3VwZGF0ZSgpfSxfdXBkYXRlU3R5bGU6ZnVuY3Rpb24odCl7dmFyIGU9dC5fcGF0aCx0PXQub3B0aW9ucztlJiYodC5zdHJva2U/KGUuc2V0QXR0cmlidXRlKCJzdHJva2UiLHQuY29sb3IpLGUuc2V0QXR0cmlidXRlKCJzdHJva2Utb3BhY2l0eSIsdC5vcGFjaXR5KSxlLnNldEF0dHJpYnV0ZSgic3Ryb2tlLXdpZHRoIix0LndlaWdodCksZS5zZXRBdHRyaWJ1dGUoInN0cm9rZS1saW5lY2FwIix0LmxpbmVDYXApLGUuc2V0QXR0cmlidXRlKCJzdHJva2UtbGluZWpvaW4iLHQubGluZUpvaW4pLHQuZGFzaEFycmF5P2Uuc2V0QXR0cmlidXRlKCJzdHJva2UtZGFzaGFycmF5Iix0LmRhc2hBcnJheSk6ZS5yZW1vdmVBdHRyaWJ1dGUoInN0cm9rZS1kYXNoYXJyYXkiKSx0LmRhc2hPZmZzZXQ/ZS5zZXRBdHRyaWJ1dGUoInN0cm9rZS1kYXNob2Zmc2V0Iix0LmRhc2hPZmZzZXQpOmUucmVtb3ZlQXR0cmlidXRlKCJzdHJva2UtZGFzaG9mZnNldCIpKTplLnNldEF0dHJpYnV0ZSgic3Ryb2tlIiwibm9uZSIpLHQuZmlsbD8oZS5zZXRBdHRyaWJ1dGUoImZpbGwiLHQuZmlsbENvbG9yfHx0LmNvbG9yKSxlLnNldEF0dHJpYnV0ZSgiZmlsbC1vcGFjaXR5Iix0LmZpbGxPcGFjaXR5KSxlLnNldEF0dHJpYnV0ZSgiZmlsbC1ydWxlIix0LmZpbGxSdWxlfHwiZXZlbm9kZCIpKTplLnNldEF0dHJpYnV0ZSgiZmlsbCIsIm5vbmUiKSl9LF91cGRhdGVQb2x5OmZ1bmN0aW9uKHQsZSl7dGhpcy5fc2V0UGF0aCh0LGR0KHQuX3BhcnRzLGUpKX0sX3VwZGF0ZUNpcmNsZTpmdW5jdGlvbih0KXt2YXIgZT10Ll9wb2ludCxpPU1hdGgubWF4KE1hdGgucm91bmQodC5fcmFkaXVzKSwxKSxuPSJhIitpKyIsIisoTWF0aC5tYXgoTWF0aC5yb3VuZCh0Ll9yYWRpdXNZKSwxKXx8aSkrIiAwIDEsMCAiLGU9dC5fZW1wdHkoKT8iTTAgMCI6Ik0iKyhlLngtaSkrIiwiK2UueStuKzIqaSsiLDAgIituKzIqLWkrIiwwICI7dGhpcy5fc2V0UGF0aCh0LGUpfSxfc2V0UGF0aDpmdW5jdGlvbih0LGUpe3QuX3BhdGguc2V0QXR0cmlidXRlKCJkIixlKX0sX2JyaW5nVG9Gcm9udDpmdW5jdGlvbih0KXtmZSh0Ll9wYXRoKX0sX2JyaW5nVG9CYWNrOmZ1bmN0aW9uKHQpe2dlKHQuX3BhdGgpfX0pO2Z1bmN0aW9uIEtpKHQpe3JldHVybiBiLnN2Z3x8Yi52bWw/bmV3IEdpKHQpOm51bGx9Yi52bWwmJkdpLmluY2x1ZGUoenQpLEEuaW5jbHVkZSh7Z2V0UmVuZGVyZXI6ZnVuY3Rpb24odCl7dD0odD10Lm9wdGlvbnMucmVuZGVyZXJ8fHRoaXMuX2dldFBhbmVSZW5kZXJlcih0Lm9wdGlvbnMucGFuZSl8fHRoaXMub3B0aW9ucy5yZW5kZXJlcnx8dGhpcy5fcmVuZGVyZXIpfHwodGhpcy5fcmVuZGVyZXI9dGhpcy5fY3JlYXRlUmVuZGVyZXIoKSk7cmV0dXJuIHRoaXMuaGFzTGF5ZXIodCl8fHRoaXMuYWRkTGF5ZXIodCksdH0sX2dldFBhbmVSZW5kZXJlcjpmdW5jdGlvbih0KXt2YXIgZTtyZXR1cm4ib3ZlcmxheVBhbmUiIT09dCYmdm9pZCAwIT09dCYmKHZvaWQgMD09PShlPXRoaXMuX3BhbmVSZW5kZXJlcnNbdF0pJiYoZT10aGlzLl9jcmVhdGVSZW5kZXJlcih7cGFuZTp0fSksdGhpcy5fcGFuZVJlbmRlcmVyc1t0XT1lKSxlKX0sX2NyZWF0ZVJlbmRlcmVyOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm9wdGlvbnMucHJlZmVyQ2FudmFzJiZVaSh0KXx8S2kodCl9fSk7dmFyIFlpPXhpLmV4dGVuZCh7aW5pdGlhbGl6ZTpmdW5jdGlvbih0LGUpe3hpLnByb3RvdHlwZS5pbml0aWFsaXplLmNhbGwodGhpcyx0aGlzLl9ib3VuZHNUb0xhdExuZ3ModCksZSl9LHNldEJvdW5kczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zZXRMYXRMbmdzKHRoaXMuX2JvdW5kc1RvTGF0TG5ncyh0KSl9LF9ib3VuZHNUb0xhdExuZ3M6ZnVuY3Rpb24odCl7cmV0dXJuWyh0PWcodCkpLmdldFNvdXRoV2VzdCgpLHQuZ2V0Tm9ydGhXZXN0KCksdC5nZXROb3J0aEVhc3QoKSx0LmdldFNvdXRoRWFzdCgpXX19KTtHaS5jcmVhdGU9cWksR2kucG9pbnRzVG9QYXRoPWR0LHdpLmdlb21ldHJ5VG9MYXllcj1iaSx3aS5jb29yZHNUb0xhdExuZz1MaSx3aS5jb29yZHNUb0xhdExuZ3M9VGksd2kubGF0TG5nVG9Db29yZHM9TWksd2kubGF0TG5nc1RvQ29vcmRzPXppLHdpLmdldEZlYXR1cmU9Q2ksd2kuYXNGZWF0dXJlPVppLEEubWVyZ2VPcHRpb25zKHtib3hab29tOiEwfSk7dmFyIF90PW4uZXh0ZW5kKHtpbml0aWFsaXplOmZ1bmN0aW9uKHQpe3RoaXMuX21hcD10LHRoaXMuX2NvbnRhaW5lcj10Ll9jb250YWluZXIsdGhpcy5fcGFuZT10Ll9wYW5lcy5vdmVybGF5UGFuZSx0aGlzLl9yZXNldFN0YXRlVGltZW91dD0wLHQub24oInVubG9hZCIsdGhpcy5fZGVzdHJveSx0aGlzKX0sYWRkSG9va3M6ZnVuY3Rpb24oKXtTKHRoaXMuX2NvbnRhaW5lciwibW91c2Vkb3duIix0aGlzLl9vbk1vdXNlRG93bix0aGlzKX0scmVtb3ZlSG9va3M6ZnVuY3Rpb24oKXtrKHRoaXMuX2NvbnRhaW5lciwibW91c2Vkb3duIix0aGlzLl9vbk1vdXNlRG93bix0aGlzKX0sbW92ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbW92ZWR9LF9kZXN0cm95OmZ1bmN0aW9uKCl7VCh0aGlzLl9wYW5lKSxkZWxldGUgdGhpcy5fcGFuZX0sX3Jlc2V0U3RhdGU6ZnVuY3Rpb24oKXt0aGlzLl9yZXNldFN0YXRlVGltZW91dD0wLHRoaXMuX21vdmVkPSExfSxfY2xlYXJEZWZlcnJlZFJlc2V0U3RhdGU6ZnVuY3Rpb24oKXswIT09dGhpcy5fcmVzZXRTdGF0ZVRpbWVvdXQmJihjbGVhclRpbWVvdXQodGhpcy5fcmVzZXRTdGF0ZVRpbWVvdXQpLHRoaXMuX3Jlc2V0U3RhdGVUaW1lb3V0PTApfSxfb25Nb3VzZURvd246ZnVuY3Rpb24odCl7aWYoIXQuc2hpZnRLZXl8fDEhPT10LndoaWNoJiYxIT09dC5idXR0b24pcmV0dXJuITE7dGhpcy5fY2xlYXJEZWZlcnJlZFJlc2V0U3RhdGUoKSx0aGlzLl9yZXNldFN0YXRlKCkscmUoKSxMZSgpLHRoaXMuX3N0YXJ0UG9pbnQ9dGhpcy5fbWFwLm1vdXNlRXZlbnRUb0NvbnRhaW5lclBvaW50KHQpLFMoZG9jdW1lbnQse2NvbnRleHRtZW51OlJlLG1vdXNlbW92ZTp0aGlzLl9vbk1vdXNlTW92ZSxtb3VzZXVwOnRoaXMuX29uTW91c2VVcCxrZXlkb3duOnRoaXMuX29uS2V5RG93bn0sdGhpcyl9LF9vbk1vdXNlTW92ZTpmdW5jdGlvbih0KXt0aGlzLl9tb3ZlZHx8KHRoaXMuX21vdmVkPSEwLHRoaXMuX2JveD1QKCJkaXYiLCJsZWFmbGV0LXpvb20tYm94Iix0aGlzLl9jb250YWluZXIpLE0odGhpcy5fY29udGFpbmVyLCJsZWFmbGV0LWNyb3NzaGFpciIpLHRoaXMuX21hcC5maXJlKCJib3h6b29tc3RhcnQiKSksdGhpcy5fcG9pbnQ9dGhpcy5fbWFwLm1vdXNlRXZlbnRUb0NvbnRhaW5lclBvaW50KHQpO3ZhciB0PW5ldyBmKHRoaXMuX3BvaW50LHRoaXMuX3N0YXJ0UG9pbnQpLGU9dC5nZXRTaXplKCk7Wih0aGlzLl9ib3gsdC5taW4pLHRoaXMuX2JveC5zdHlsZS53aWR0aD1lLngrInB4Iix0aGlzLl9ib3guc3R5bGUuaGVpZ2h0PWUueSsicHgifSxfZmluaXNoOmZ1bmN0aW9uKCl7dGhpcy5fbW92ZWQmJihUKHRoaXMuX2JveCkseih0aGlzLl9jb250YWluZXIsImxlYWZsZXQtY3Jvc3NoYWlyIikpLGFlKCksVGUoKSxrKGRvY3VtZW50LHtjb250ZXh0bWVudTpSZSxtb3VzZW1vdmU6dGhpcy5fb25Nb3VzZU1vdmUsbW91c2V1cDp0aGlzLl9vbk1vdXNlVXAsa2V5ZG93bjp0aGlzLl9vbktleURvd259LHRoaXMpfSxfb25Nb3VzZVVwOmZ1bmN0aW9uKHQpezEhPT10LndoaWNoJiYxIT09dC5idXR0b258fCh0aGlzLl9maW5pc2goKSx0aGlzLl9tb3ZlZCYmKHRoaXMuX2NsZWFyRGVmZXJyZWRSZXNldFN0YXRlKCksdGhpcy5fcmVzZXRTdGF0ZVRpbWVvdXQ9c2V0VGltZW91dChhKHRoaXMuX3Jlc2V0U3RhdGUsdGhpcyksMCksdD1uZXcgcyh0aGlzLl9tYXAuY29udGFpbmVyUG9pbnRUb0xhdExuZyh0aGlzLl9zdGFydFBvaW50KSx0aGlzLl9tYXAuY29udGFpbmVyUG9pbnRUb0xhdExuZyh0aGlzLl9wb2ludCkpLHRoaXMuX21hcC5maXRCb3VuZHModCkuZmlyZSgiYm94em9vbWVuZCIse2JveFpvb21Cb3VuZHM6dH0pKSl9LF9vbktleURvd246ZnVuY3Rpb24odCl7Mjc9PT10LmtleUNvZGUmJih0aGlzLl9maW5pc2goKSx0aGlzLl9jbGVhckRlZmVycmVkUmVzZXRTdGF0ZSgpLHRoaXMuX3Jlc2V0U3RhdGUoKSl9fSksQ3Q9KEEuYWRkSW5pdEhvb2soImFkZEhhbmRsZXIiLCJib3hab29tIixfdCksQS5tZXJnZU9wdGlvbnMoe2RvdWJsZUNsaWNrWm9vbTohMH0pLG4uZXh0ZW5kKHthZGRIb29rczpmdW5jdGlvbigpe3RoaXMuX21hcC5vbigiZGJsY2xpY2siLHRoaXMuX29uRG91YmxlQ2xpY2ssdGhpcyl9LHJlbW92ZUhvb2tzOmZ1bmN0aW9uKCl7dGhpcy5fbWFwLm9mZigiZGJsY2xpY2siLHRoaXMuX29uRG91YmxlQ2xpY2ssdGhpcyl9LF9vbkRvdWJsZUNsaWNrOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX21hcCxpPWUuZ2V0Wm9vbSgpLG49ZS5vcHRpb25zLnpvb21EZWx0YSxpPXQub3JpZ2luYWxFdmVudC5zaGlmdEtleT9pLW46aStuOyJjZW50ZXIiPT09ZS5vcHRpb25zLmRvdWJsZUNsaWNrWm9vbT9lLnNldFpvb20oaSk6ZS5zZXRab29tQXJvdW5kKHQuY29udGFpbmVyUG9pbnQsaSl9fSkpLFp0PShBLmFkZEluaXRIb29rKCJhZGRIYW5kbGVyIiwiZG91YmxlQ2xpY2tab29tIixDdCksQS5tZXJnZU9wdGlvbnMoe2RyYWdnaW5nOiEwLGluZXJ0aWE6ITAsaW5lcnRpYURlY2VsZXJhdGlvbjozNDAwLGluZXJ0aWFNYXhTcGVlZDoxLzAsZWFzZUxpbmVhcml0eTouMix3b3JsZENvcHlKdW1wOiExLG1heEJvdW5kc1Zpc2Nvc2l0eTowfSksbi5leHRlbmQoe2FkZEhvb2tzOmZ1bmN0aW9uKCl7dmFyIHQ7dGhpcy5fZHJhZ2dhYmxlfHwodD10aGlzLl9tYXAsdGhpcy5fZHJhZ2dhYmxlPW5ldyBYZSh0Ll9tYXBQYW5lLHQuX2NvbnRhaW5lciksdGhpcy5fZHJhZ2dhYmxlLm9uKHtkcmFnc3RhcnQ6dGhpcy5fb25EcmFnU3RhcnQsZHJhZzp0aGlzLl9vbkRyYWcsZHJhZ2VuZDp0aGlzLl9vbkRyYWdFbmR9LHRoaXMpLHRoaXMuX2RyYWdnYWJsZS5vbigicHJlZHJhZyIsdGhpcy5fb25QcmVEcmFnTGltaXQsdGhpcyksdC5vcHRpb25zLndvcmxkQ29weUp1bXAmJih0aGlzLl9kcmFnZ2FibGUub24oInByZWRyYWciLHRoaXMuX29uUHJlRHJhZ1dyYXAsdGhpcyksdC5vbigiem9vbWVuZCIsdGhpcy5fb25ab29tRW5kLHRoaXMpLHQud2hlblJlYWR5KHRoaXMuX29uWm9vbUVuZCx0aGlzKSkpLE0odGhpcy5fbWFwLl9jb250YWluZXIsImxlYWZsZXQtZ3JhYiBsZWFmbGV0LXRvdWNoLWRyYWciKSx0aGlzLl9kcmFnZ2FibGUuZW5hYmxlKCksdGhpcy5fcG9zaXRpb25zPVtdLHRoaXMuX3RpbWVzPVtdfSxyZW1vdmVIb29rczpmdW5jdGlvbigpe3oodGhpcy5fbWFwLl9jb250YWluZXIsImxlYWZsZXQtZ3JhYiIpLHoodGhpcy5fbWFwLl9jb250YWluZXIsImxlYWZsZXQtdG91Y2gtZHJhZyIpLHRoaXMuX2RyYWdnYWJsZS5kaXNhYmxlKCl9LG1vdmVkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RyYWdnYWJsZSYmdGhpcy5fZHJhZ2dhYmxlLl9tb3ZlZH0sbW92aW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RyYWdnYWJsZSYmdGhpcy5fZHJhZ2dhYmxlLl9tb3Zpbmd9LF9vbkRyYWdTdGFydDpmdW5jdGlvbigpe3ZhciB0LGU9dGhpcy5fbWFwO2UuX3N0b3AoKSx0aGlzLl9tYXAub3B0aW9ucy5tYXhCb3VuZHMmJnRoaXMuX21hcC5vcHRpb25zLm1heEJvdW5kc1Zpc2Nvc2l0eT8odD1nKHRoaXMuX21hcC5vcHRpb25zLm1heEJvdW5kcyksdGhpcy5fb2Zmc2V0TGltaXQ9Xyh0aGlzLl9tYXAubGF0TG5nVG9Db250YWluZXJQb2ludCh0LmdldE5vcnRoV2VzdCgpKS5tdWx0aXBseUJ5KC0xKSx0aGlzLl9tYXAubGF0TG5nVG9Db250YWluZXJQb2ludCh0LmdldFNvdXRoRWFzdCgpKS5tdWx0aXBseUJ5KC0xKS5hZGQodGhpcy5fbWFwLmdldFNpemUoKSkpLHRoaXMuX3Zpc2Nvc2l0eT1NYXRoLm1pbigxLE1hdGgubWF4KDAsdGhpcy5fbWFwLm9wdGlvbnMubWF4Qm91bmRzVmlzY29zaXR5KSkpOnRoaXMuX29mZnNldExpbWl0PW51bGwsZS5maXJlKCJtb3Zlc3RhcnQiKS5maXJlKCJkcmFnc3RhcnQiKSxlLm9wdGlvbnMuaW5lcnRpYSYmKHRoaXMuX3Bvc2l0aW9ucz1bXSx0aGlzLl90aW1lcz1bXSl9LF9vbkRyYWc6ZnVuY3Rpb24odCl7dmFyIGUsaTt0aGlzLl9tYXAub3B0aW9ucy5pbmVydGlhJiYoZT10aGlzLl9sYXN0VGltZT0rbmV3IERhdGUsaT10aGlzLl9sYXN0UG9zPXRoaXMuX2RyYWdnYWJsZS5fYWJzUG9zfHx0aGlzLl9kcmFnZ2FibGUuX25ld1Bvcyx0aGlzLl9wb3NpdGlvbnMucHVzaChpKSx0aGlzLl90aW1lcy5wdXNoKGUpLHRoaXMuX3BydW5lUG9zaXRpb25zKGUpKSx0aGlzLl9tYXAuZmlyZSgibW92ZSIsdCkuZmlyZSgiZHJhZyIsdCl9LF9wcnVuZVBvc2l0aW9uczpmdW5jdGlvbih0KXtmb3IoOzE8dGhpcy5fcG9zaXRpb25zLmxlbmd0aCYmNTA8dC10aGlzLl90aW1lc1swXTspdGhpcy5fcG9zaXRpb25zLnNoaWZ0KCksdGhpcy5fdGltZXMuc2hpZnQoKX0sX29uWm9vbUVuZDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX21hcC5nZXRTaXplKCkuZGl2aWRlQnkoMiksZT10aGlzLl9tYXAubGF0TG5nVG9MYXllclBvaW50KFswLDBdKTt0aGlzLl9pbml0aWFsV29ybGRPZmZzZXQ9ZS5zdWJ0cmFjdCh0KS54LHRoaXMuX3dvcmxkV2lkdGg9dGhpcy5fbWFwLmdldFBpeGVsV29ybGRCb3VuZHMoKS5nZXRTaXplKCkueH0sX3Zpc2NvdXNMaW1pdDpmdW5jdGlvbih0LGUpe3JldHVybiB0LSh0LWUpKnRoaXMuX3Zpc2Nvc2l0eX0sX29uUHJlRHJhZ0xpbWl0OmZ1bmN0aW9uKCl7dmFyIHQsZTt0aGlzLl92aXNjb3NpdHkmJnRoaXMuX29mZnNldExpbWl0JiYodD10aGlzLl9kcmFnZ2FibGUuX25ld1Bvcy5zdWJ0cmFjdCh0aGlzLl9kcmFnZ2FibGUuX3N0YXJ0UG9zKSxlPXRoaXMuX29mZnNldExpbWl0LHQueDxlLm1pbi54JiYodC54PXRoaXMuX3Zpc2NvdXNMaW1pdCh0LngsZS5taW4ueCkpLHQueTxlLm1pbi55JiYodC55PXRoaXMuX3Zpc2NvdXNMaW1pdCh0LnksZS5taW4ueSkpLHQueD5lLm1heC54JiYodC54PXRoaXMuX3Zpc2NvdXNMaW1pdCh0LngsZS5tYXgueCkpLHQueT5lLm1heC55JiYodC55PXRoaXMuX3Zpc2NvdXNMaW1pdCh0LnksZS5tYXgueSkpLHRoaXMuX2RyYWdnYWJsZS5fbmV3UG9zPXRoaXMuX2RyYWdnYWJsZS5fc3RhcnRQb3MuYWRkKHQpKX0sX29uUHJlRHJhZ1dyYXA6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl93b3JsZFdpZHRoLGU9TWF0aC5yb3VuZCh0LzIpLGk9dGhpcy5faW5pdGlhbFdvcmxkT2Zmc2V0LG49dGhpcy5fZHJhZ2dhYmxlLl9uZXdQb3MueCxvPShuLWUraSkldCtlLWksbj0obitlK2kpJXQtZS1pLHQ9TWF0aC5hYnMobytpKTxNYXRoLmFicyhuK2kpP286bjt0aGlzLl9kcmFnZ2FibGUuX2Fic1Bvcz10aGlzLl9kcmFnZ2FibGUuX25ld1Bvcy5jbG9uZSgpLHRoaXMuX2RyYWdnYWJsZS5fbmV3UG9zLng9dH0sX29uRHJhZ0VuZDpmdW5jdGlvbih0KXt2YXIgZSxpLG4sbyxzPXRoaXMuX21hcCxyPXMub3B0aW9ucyxhPSFyLmluZXJ0aWF8fHQubm9JbmVydGlhfHx0aGlzLl90aW1lcy5sZW5ndGg8MjtzLmZpcmUoImRyYWdlbmQiLHQpLCFhJiYodGhpcy5fcHJ1bmVQb3NpdGlvbnMoK25ldyBEYXRlKSx0PXRoaXMuX2xhc3RQb3Muc3VidHJhY3QodGhpcy5fcG9zaXRpb25zWzBdKSxhPSh0aGlzLl9sYXN0VGltZS10aGlzLl90aW1lc1swXSkvMWUzLGU9ci5lYXNlTGluZWFyaXR5LGE9KHQ9dC5tdWx0aXBseUJ5KGUvYSkpLmRpc3RhbmNlVG8oWzAsMF0pLGk9TWF0aC5taW4oci5pbmVydGlhTWF4U3BlZWQsYSksdD10Lm11bHRpcGx5QnkoaS9hKSxuPWkvKHIuaW5lcnRpYURlY2VsZXJhdGlvbiplKSwobz10Lm11bHRpcGx5QnkoLW4vMikucm91bmQoKSkueHx8by55KT8obz1zLl9saW1pdE9mZnNldChvLHMub3B0aW9ucy5tYXhCb3VuZHMpLHgoZnVuY3Rpb24oKXtzLnBhbkJ5KG8se2R1cmF0aW9uOm4sZWFzZUxpbmVhcml0eTplLG5vTW92ZVN0YXJ0OiEwLGFuaW1hdGU6ITB9KX0pKTpzLmZpcmUoIm1vdmVlbmQiKX19KSksU3Q9KEEuYWRkSW5pdEhvb2soImFkZEhhbmRsZXIiLCJkcmFnZ2luZyIsWnQpLEEubWVyZ2VPcHRpb25zKHtrZXlib2FyZDohMCxrZXlib2FyZFBhbkRlbHRhOjgwfSksbi5leHRlbmQoe2tleUNvZGVzOntsZWZ0OlszN10scmlnaHQ6WzM5XSxkb3duOls0MF0sdXA6WzM4XSx6b29tSW46WzE4NywxMDcsNjEsMTcxXSx6b29tT3V0OlsxODksMTA5LDU0LDE3M119LGluaXRpYWxpemU6ZnVuY3Rpb24odCl7dGhpcy5fbWFwPXQsdGhpcy5fc2V0UGFuRGVsdGEodC5vcHRpb25zLmtleWJvYXJkUGFuRGVsdGEpLHRoaXMuX3NldFpvb21EZWx0YSh0Lm9wdGlvbnMuem9vbURlbHRhKX0sYWRkSG9va3M6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9tYXAuX2NvbnRhaW5lcjt0LnRhYkluZGV4PD0wJiYodC50YWJJbmRleD0iMCIpLFModCx7Zm9jdXM6dGhpcy5fb25Gb2N1cyxibHVyOnRoaXMuX29uQmx1cixtb3VzZWRvd246dGhpcy5fb25Nb3VzZURvd259LHRoaXMpLHRoaXMuX21hcC5vbih7Zm9jdXM6dGhpcy5fYWRkSG9va3MsYmx1cjp0aGlzLl9yZW1vdmVIb29rc30sdGhpcyl9LHJlbW92ZUhvb2tzOmZ1bmN0aW9uKCl7dGhpcy5fcmVtb3ZlSG9va3MoKSxrKHRoaXMuX21hcC5fY29udGFpbmVyLHtmb2N1czp0aGlzLl9vbkZvY3VzLGJsdXI6dGhpcy5fb25CbHVyLG1vdXNlZG93bjp0aGlzLl9vbk1vdXNlRG93bn0sdGhpcyksdGhpcy5fbWFwLm9mZih7Zm9jdXM6dGhpcy5fYWRkSG9va3MsYmx1cjp0aGlzLl9yZW1vdmVIb29rc30sdGhpcyl9LF9vbk1vdXNlRG93bjpmdW5jdGlvbigpe3ZhciB0LGUsaTt0aGlzLl9mb2N1c2VkfHwoaT1kb2N1bWVudC5ib2R5LHQ9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGU9aS5zY3JvbGxUb3B8fHQuc2Nyb2xsVG9wLGk9aS5zY3JvbGxMZWZ0fHx0LnNjcm9sbExlZnQsdGhpcy5fbWFwLl9jb250YWluZXIuZm9jdXMoKSx3aW5kb3cuc2Nyb2xsVG8oaSxlKSl9LF9vbkZvY3VzOmZ1bmN0aW9uKCl7dGhpcy5fZm9jdXNlZD0hMCx0aGlzLl9tYXAuZmlyZSgiZm9jdXMiKX0sX29uQmx1cjpmdW5jdGlvbigpe3RoaXMuX2ZvY3VzZWQ9ITEsdGhpcy5fbWFwLmZpcmUoImJsdXIiKX0sX3NldFBhbkRlbHRhOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLl9wYW5LZXlzPXt9LGk9dGhpcy5rZXlDb2RlcyxuPTAsbz1pLmxlZnQubGVuZ3RoO248bztuKyspZVtpLmxlZnRbbl1dPVstMSp0LDBdO2ZvcihuPTAsbz1pLnJpZ2h0Lmxlbmd0aDtuPG87bisrKWVbaS5yaWdodFtuXV09W3QsMF07Zm9yKG49MCxvPWkuZG93bi5sZW5ndGg7bjxvO24rKyllW2kuZG93bltuXV09WzAsdF07Zm9yKG49MCxvPWkudXAubGVuZ3RoO248bztuKyspZVtpLnVwW25dXT1bMCwtMSp0XX0sX3NldFpvb21EZWx0YTpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy5fem9vbUtleXM9e30saT10aGlzLmtleUNvZGVzLG49MCxvPWkuem9vbUluLmxlbmd0aDtuPG87bisrKWVbaS56b29tSW5bbl1dPXQ7Zm9yKG49MCxvPWkuem9vbU91dC5sZW5ndGg7bjxvO24rKyllW2kuem9vbU91dFtuXV09LXR9LF9hZGRIb29rczpmdW5jdGlvbigpe1MoZG9jdW1lbnQsImtleWRvd24iLHRoaXMuX29uS2V5RG93bix0aGlzKX0sX3JlbW92ZUhvb2tzOmZ1bmN0aW9uKCl7ayhkb2N1bWVudCwia2V5ZG93biIsdGhpcy5fb25LZXlEb3duLHRoaXMpfSxfb25LZXlEb3duOmZ1bmN0aW9uKHQpe2lmKCEodC5hbHRLZXl8fHQuY3RybEtleXx8dC5tZXRhS2V5KSl7dmFyIGUsaSxuPXQua2V5Q29kZSxvPXRoaXMuX21hcDtpZihuIGluIHRoaXMuX3BhbktleXMpby5fcGFuQW5pbSYmby5fcGFuQW5pbS5faW5Qcm9ncmVzc3x8KGk9dGhpcy5fcGFuS2V5c1tuXSx0LnNoaWZ0S2V5JiYoaT1tKGkpLm11bHRpcGx5QnkoMykpLG8ub3B0aW9ucy5tYXhCb3VuZHMmJihpPW8uX2xpbWl0T2Zmc2V0KG0oaSksby5vcHRpb25zLm1heEJvdW5kcykpLG8ub3B0aW9ucy53b3JsZENvcHlKdW1wPyhlPW8ud3JhcExhdExuZyhvLnVucHJvamVjdChvLnByb2plY3Qoby5nZXRDZW50ZXIoKSkuYWRkKGkpKSksby5wYW5UbyhlKSk6by5wYW5CeShpKSk7ZWxzZSBpZihuIGluIHRoaXMuX3pvb21LZXlzKW8uc2V0Wm9vbShvLmdldFpvb20oKSsodC5zaGlmdEtleT8zOjEpKnRoaXMuX3pvb21LZXlzW25dKTtlbHNle2lmKDI3IT09bnx8IW8uX3BvcHVwfHwhby5fcG9wdXAub3B0aW9ucy5jbG9zZU9uRXNjYXBlS2V5KXJldHVybjtvLmNsb3NlUG9wdXAoKX1SZSh0KX19fSkpLEV0PShBLmFkZEluaXRIb29rKCJhZGRIYW5kbGVyIiwia2V5Ym9hcmQiLFN0KSxBLm1lcmdlT3B0aW9ucyh7c2Nyb2xsV2hlZWxab29tOiEwLHdoZWVsRGVib3VuY2VUaW1lOjQwLHdoZWVsUHhQZXJab29tTGV2ZWw6NjB9KSxuLmV4dGVuZCh7YWRkSG9va3M6ZnVuY3Rpb24oKXtTKHRoaXMuX21hcC5fY29udGFpbmVyLCJ3aGVlbCIsdGhpcy5fb25XaGVlbFNjcm9sbCx0aGlzKSx0aGlzLl9kZWx0YT0wfSxyZW1vdmVIb29rczpmdW5jdGlvbigpe2sodGhpcy5fbWFwLl9jb250YWluZXIsIndoZWVsIix0aGlzLl9vbldoZWVsU2Nyb2xsLHRoaXMpfSxfb25XaGVlbFNjcm9sbDpmdW5jdGlvbih0KXt2YXIgZT1IZSh0KSxpPXRoaXMuX21hcC5vcHRpb25zLndoZWVsRGVib3VuY2VUaW1lLGU9KHRoaXMuX2RlbHRhKz1lLHRoaXMuX2xhc3RNb3VzZVBvcz10aGlzLl9tYXAubW91c2VFdmVudFRvQ29udGFpbmVyUG9pbnQodCksdGhpcy5fc3RhcnRUaW1lfHwodGhpcy5fc3RhcnRUaW1lPStuZXcgRGF0ZSksTWF0aC5tYXgoaS0oK25ldyBEYXRlLXRoaXMuX3N0YXJ0VGltZSksMCkpO2NsZWFyVGltZW91dCh0aGlzLl90aW1lciksdGhpcy5fdGltZXI9c2V0VGltZW91dChhKHRoaXMuX3BlcmZvcm1ab29tLHRoaXMpLGUpLFJlKHQpfSxfcGVyZm9ybVpvb206ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9tYXAsZT10LmdldFpvb20oKSxpPXRoaXMuX21hcC5vcHRpb25zLnpvb21TbmFwfHwwLG49KHQuX3N0b3AoKSx0aGlzLl9kZWx0YS8oNCp0aGlzLl9tYXAub3B0aW9ucy53aGVlbFB4UGVyWm9vbUxldmVsKSksbj00Kk1hdGgubG9nKDIvKDErTWF0aC5leHAoLU1hdGguYWJzKG4pKSkpL01hdGguTE4yLGk9aT9NYXRoLmNlaWwobi9pKSppOm4sbj10Ll9saW1pdFpvb20oZSsoMDx0aGlzLl9kZWx0YT9pOi1pKSktZTt0aGlzLl9kZWx0YT0wLHRoaXMuX3N0YXJ0VGltZT1udWxsLG4mJigiY2VudGVyIj09PXQub3B0aW9ucy5zY3JvbGxXaGVlbFpvb20/dC5zZXRab29tKGUrbik6dC5zZXRab29tQXJvdW5kKHRoaXMuX2xhc3RNb3VzZVBvcyxlK24pKX19KSksa3Q9KEEuYWRkSW5pdEhvb2soImFkZEhhbmRsZXIiLCJzY3JvbGxXaGVlbFpvb20iLEV0KSxBLm1lcmdlT3B0aW9ucyh7dGFwSG9sZDpiLnRvdWNoTmF0aXZlJiZiLnNhZmFyaSYmYi5tb2JpbGUsdGFwVG9sZXJhbmNlOjE1fSksbi5leHRlbmQoe2FkZEhvb2tzOmZ1bmN0aW9uKCl7Uyh0aGlzLl9tYXAuX2NvbnRhaW5lciwidG91Y2hzdGFydCIsdGhpcy5fb25Eb3duLHRoaXMpfSxyZW1vdmVIb29rczpmdW5jdGlvbigpe2sodGhpcy5fbWFwLl9jb250YWluZXIsInRvdWNoc3RhcnQiLHRoaXMuX29uRG93bix0aGlzKX0sX29uRG93bjpmdW5jdGlvbih0KXt2YXIgZTtjbGVhclRpbWVvdXQodGhpcy5faG9sZFRpbWVvdXQpLDE9PT10LnRvdWNoZXMubGVuZ3RoJiYoZT10LnRvdWNoZXNbMF0sdGhpcy5fc3RhcnRQb3M9dGhpcy5fbmV3UG9zPW5ldyBwKGUuY2xpZW50WCxlLmNsaWVudFkpLHRoaXMuX2hvbGRUaW1lb3V0PXNldFRpbWVvdXQoYShmdW5jdGlvbigpe3RoaXMuX2NhbmNlbCgpLHRoaXMuX2lzVGFwVmFsaWQoKSYmKFMoZG9jdW1lbnQsInRvdWNoZW5kIixPKSxTKGRvY3VtZW50LCJ0b3VjaGVuZCB0b3VjaGNhbmNlbCIsdGhpcy5fY2FuY2VsQ2xpY2tQcmV2ZW50KSx0aGlzLl9zaW11bGF0ZUV2ZW50KCJjb250ZXh0bWVudSIsZSkpfSx0aGlzKSw2MDApLFMoZG9jdW1lbnQsInRvdWNoZW5kIHRvdWNoY2FuY2VsIGNvbnRleHRtZW51Iix0aGlzLl9jYW5jZWwsdGhpcyksUyhkb2N1bWVudCwidG91Y2htb3ZlIix0aGlzLl9vbk1vdmUsdGhpcykpfSxfY2FuY2VsQ2xpY2tQcmV2ZW50OmZ1bmN0aW9uIHQoKXtrKGRvY3VtZW50LCJ0b3VjaGVuZCIsTyksayhkb2N1bWVudCwidG91Y2hlbmQgdG91Y2hjYW5jZWwiLHQpfSxfY2FuY2VsOmZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KHRoaXMuX2hvbGRUaW1lb3V0KSxrKGRvY3VtZW50LCJ0b3VjaGVuZCB0b3VjaGNhbmNlbCBjb250ZXh0bWVudSIsdGhpcy5fY2FuY2VsLHRoaXMpLGsoZG9jdW1lbnQsInRvdWNobW92ZSIsdGhpcy5fb25Nb3ZlLHRoaXMpfSxfb25Nb3ZlOmZ1bmN0aW9uKHQpe3Q9dC50b3VjaGVzWzBdO3RoaXMuX25ld1Bvcz1uZXcgcCh0LmNsaWVudFgsdC5jbGllbnRZKX0sX2lzVGFwVmFsaWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbmV3UG9zLmRpc3RhbmNlVG8odGhpcy5fc3RhcnRQb3MpPD10aGlzLl9tYXAub3B0aW9ucy50YXBUb2xlcmFuY2V9LF9zaW11bGF0ZUV2ZW50OmZ1bmN0aW9uKHQsZSl7dD1uZXcgTW91c2VFdmVudCh0LHtidWJibGVzOiEwLGNhbmNlbGFibGU6ITAsdmlldzp3aW5kb3csc2NyZWVuWDplLnNjcmVlblgsc2NyZWVuWTplLnNjcmVlblksY2xpZW50WDplLmNsaWVudFgsY2xpZW50WTplLmNsaWVudFl9KTt0Ll9zaW11bGF0ZWQ9ITAsZS50YXJnZXQuZGlzcGF0Y2hFdmVudCh0KX19KSksT3Q9KEEuYWRkSW5pdEhvb2soImFkZEhhbmRsZXIiLCJ0YXBIb2xkIixrdCksQS5tZXJnZU9wdGlvbnMoe3RvdWNoWm9vbTpiLnRvdWNoLGJvdW5jZUF0Wm9vbUxpbWl0czohMH0pLG4uZXh0ZW5kKHthZGRIb29rczpmdW5jdGlvbigpe00odGhpcy5fbWFwLl9jb250YWluZXIsImxlYWZsZXQtdG91Y2gtem9vbSIpLFModGhpcy5fbWFwLl9jb250YWluZXIsInRvdWNoc3RhcnQiLHRoaXMuX29uVG91Y2hTdGFydCx0aGlzKX0scmVtb3ZlSG9va3M6ZnVuY3Rpb24oKXt6KHRoaXMuX21hcC5fY29udGFpbmVyLCJsZWFmbGV0LXRvdWNoLXpvb20iKSxrKHRoaXMuX21hcC5fY29udGFpbmVyLCJ0b3VjaHN0YXJ0Iix0aGlzLl9vblRvdWNoU3RhcnQsdGhpcyl9LF9vblRvdWNoU3RhcnQ6ZnVuY3Rpb24odCl7dmFyIGUsaSxuPXRoaXMuX21hcDshdC50b3VjaGVzfHwyIT09dC50b3VjaGVzLmxlbmd0aHx8bi5fYW5pbWF0aW5nWm9vbXx8dGhpcy5fem9vbWluZ3x8KGU9bi5tb3VzZUV2ZW50VG9Db250YWluZXJQb2ludCh0LnRvdWNoZXNbMF0pLGk9bi5tb3VzZUV2ZW50VG9Db250YWluZXJQb2ludCh0LnRvdWNoZXNbMV0pLHRoaXMuX2NlbnRlclBvaW50PW4uZ2V0U2l6ZSgpLl9kaXZpZGVCeSgyKSx0aGlzLl9zdGFydExhdExuZz1uLmNvbnRhaW5lclBvaW50VG9MYXRMbmcodGhpcy5fY2VudGVyUG9pbnQpLCJjZW50ZXIiIT09bi5vcHRpb25zLnRvdWNoWm9vbSYmKHRoaXMuX3BpbmNoU3RhcnRMYXRMbmc9bi5jb250YWluZXJQb2ludFRvTGF0TG5nKGUuYWRkKGkpLl9kaXZpZGVCeSgyKSkpLHRoaXMuX3N0YXJ0RGlzdD1lLmRpc3RhbmNlVG8oaSksdGhpcy5fc3RhcnRab29tPW4uZ2V0Wm9vbSgpLHRoaXMuX21vdmVkPSExLHRoaXMuX3pvb21pbmc9ITAsbi5fc3RvcCgpLFMoZG9jdW1lbnQsInRvdWNobW92ZSIsdGhpcy5fb25Ub3VjaE1vdmUsdGhpcyksUyhkb2N1bWVudCwidG91Y2hlbmQgdG91Y2hjYW5jZWwiLHRoaXMuX29uVG91Y2hFbmQsdGhpcyksTyh0KSl9LF9vblRvdWNoTW92ZTpmdW5jdGlvbih0KXtpZih0LnRvdWNoZXMmJjI9PT10LnRvdWNoZXMubGVuZ3RoJiZ0aGlzLl96b29taW5nKXt2YXIgZT10aGlzLl9tYXAsaT1lLm1vdXNlRXZlbnRUb0NvbnRhaW5lclBvaW50KHQudG91Y2hlc1swXSksbj1lLm1vdXNlRXZlbnRUb0NvbnRhaW5lclBvaW50KHQudG91Y2hlc1sxXSksbz1pLmRpc3RhbmNlVG8obikvdGhpcy5fc3RhcnREaXN0O2lmKHRoaXMuX3pvb209ZS5nZXRTY2FsZVpvb20obyx0aGlzLl9zdGFydFpvb20pLCFlLm9wdGlvbnMuYm91bmNlQXRab29tTGltaXRzJiYodGhpcy5fem9vbTxlLmdldE1pblpvb20oKSYmbzwxfHx0aGlzLl96b29tPmUuZ2V0TWF4Wm9vbSgpJiYxPG8pJiYodGhpcy5fem9vbT1lLl9saW1pdFpvb20odGhpcy5fem9vbSkpLCJjZW50ZXIiPT09ZS5vcHRpb25zLnRvdWNoWm9vbSl7aWYodGhpcy5fY2VudGVyPXRoaXMuX3N0YXJ0TGF0TG5nLDE9PW8pcmV0dXJufWVsc2V7aT1pLl9hZGQobikuX2RpdmlkZUJ5KDIpLl9zdWJ0cmFjdCh0aGlzLl9jZW50ZXJQb2ludCk7aWYoMT09byYmMD09PWkueCYmMD09PWkueSlyZXR1cm47dGhpcy5fY2VudGVyPWUudW5wcm9qZWN0KGUucHJvamVjdCh0aGlzLl9waW5jaFN0YXJ0TGF0TG5nLHRoaXMuX3pvb20pLnN1YnRyYWN0KGkpLHRoaXMuX3pvb20pfXRoaXMuX21vdmVkfHwoZS5fbW92ZVN0YXJ0KCEwLCExKSx0aGlzLl9tb3ZlZD0hMCkscih0aGlzLl9hbmltUmVxdWVzdCk7bj1hKGUuX21vdmUsZSx0aGlzLl9jZW50ZXIsdGhpcy5fem9vbSx7cGluY2g6ITAscm91bmQ6ITF9LHZvaWQgMCk7dGhpcy5fYW5pbVJlcXVlc3Q9eChuLHRoaXMsITApLE8odCl9fSxfb25Ub3VjaEVuZDpmdW5jdGlvbigpe3RoaXMuX21vdmVkJiZ0aGlzLl96b29taW5nPyh0aGlzLl96b29taW5nPSExLHIodGhpcy5fYW5pbVJlcXVlc3QpLGsoZG9jdW1lbnQsInRvdWNobW92ZSIsdGhpcy5fb25Ub3VjaE1vdmUsdGhpcyksayhkb2N1bWVudCwidG91Y2hlbmQgdG91Y2hjYW5jZWwiLHRoaXMuX29uVG91Y2hFbmQsdGhpcyksdGhpcy5fbWFwLm9wdGlvbnMuem9vbUFuaW1hdGlvbj90aGlzLl9tYXAuX2FuaW1hdGVab29tKHRoaXMuX2NlbnRlcix0aGlzLl9tYXAuX2xpbWl0Wm9vbSh0aGlzLl96b29tKSwhMCx0aGlzLl9tYXAub3B0aW9ucy56b29tU25hcCk6dGhpcy5fbWFwLl9yZXNldFZpZXcodGhpcy5fY2VudGVyLHRoaXMuX21hcC5fbGltaXRab29tKHRoaXMuX3pvb20pKSk6dGhpcy5fem9vbWluZz0hMX19KSksWGk9KEEuYWRkSW5pdEhvb2soImFkZEhhbmRsZXIiLCJ0b3VjaFpvb20iLE90KSxBLkJveFpvb209X3QsQS5Eb3VibGVDbGlja1pvb209Q3QsQS5EcmFnPVp0LEEuS2V5Ym9hcmQ9U3QsQS5TY3JvbGxXaGVlbFpvb209RXQsQS5UYXBIb2xkPWt0LEEuVG91Y2hab29tPU90LHQuQm91bmRzPWYsdC5Ccm93c2VyPWIsdC5DUlM9b3QsdC5DYW52YXM9RmksdC5DaXJjbGU9dmksdC5DaXJjbGVNYXJrZXI9Z2ksdC5DbGFzcz1ldCx0LkNvbnRyb2w9Qix0LkRpdkljb249UmksdC5EaXZPdmVybGF5PUFpLHQuRG9tRXZlbnQ9bXQsdC5Eb21VdGlsPXB0LHQuRHJhZ2dhYmxlPVhlLHQuRXZlbnRlZD1pdCx0LkZlYXR1cmVHcm91cD1jaSx0Lkdlb0pTT049d2ksdC5HcmlkTGF5ZXI9TmksdC5IYW5kbGVyPW4sdC5JY29uPWRpLHQuSW1hZ2VPdmVybGF5PUVpLHQuTGF0TG5nPXYsdC5MYXRMbmdCb3VuZHM9cyx0LkxheWVyPW8sdC5MYXllckdyb3VwPXVpLHQuTGluZVV0aWw9dnQsdC5NYXA9QSx0Lk1hcmtlcj1taSx0Lk1peGluPWZ0LHQuUGF0aD1maSx0LlBvaW50PXAsdC5Qb2x5VXRpbD1ndCx0LlBvbHlnb249eGksdC5Qb2x5bGluZT15aSx0LlBvcHVwPUJpLHQuUG9zQW5pbWF0aW9uPUZlLHQuUHJvamVjdGlvbj13dCx0LlJlY3RhbmdsZT1ZaSx0LlJlbmRlcmVyPVdpLHQuU1ZHPUdpLHQuU1ZHT3ZlcmxheT1PaSx0LlRpbGVMYXllcj1EaSx0LlRvb2x0aXA9SWksdC5UcmFuc2Zvcm1hdGlvbj1hdCx0LlV0aWw9dHQsdC5WaWRlb092ZXJsYXk9a2ksdC5iaW5kPWEsdC5ib3VuZHM9Xyx0LmNhbnZhcz1VaSx0LmNpcmNsZT1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIG5ldyB2aSh0LGUsaSl9LHQuY2lyY2xlTWFya2VyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyBnaSh0LGUpfSx0LmNvbnRyb2w9VWUsdC5kaXZJY29uPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgUmkodCl9LHQuZXh0ZW5kPWwsdC5mZWF0dXJlR3JvdXA9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGNpKHQsZSl9LHQuZ2VvSlNPTj1TaSx0Lmdlb0pzb249TXQsdC5ncmlkTGF5ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBOaSh0KX0sdC5pY29uPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgZGkodCl9LHQuaW1hZ2VPdmVybGF5PWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gbmV3IEVpKHQsZSxpKX0sdC5sYXRMbmc9dyx0LmxhdExuZ0JvdW5kcz1nLHQubGF5ZXJHcm91cD1mdW5jdGlvbih0LGUpe3JldHVybiBuZXcgdWkodCxlKX0sdC5tYXA9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IEEodCxlKX0sdC5tYXJrZXI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IG1pKHQsZSl9LHQucG9pbnQ9bSx0LnBvbHlnb249ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IHhpKHQsZSl9LHQucG9seWxpbmU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IHlpKHQsZSl9LHQucG9wdXA9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IEJpKHQsZSl9LHQucmVjdGFuZ2xlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyBZaSh0LGUpfSx0LnNldE9wdGlvbnM9Yyx0LnN0YW1wPWgsdC5zdmc9S2ksdC5zdmdPdmVybGF5PWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gbmV3IE9pKHQsZSxpKX0sdC50aWxlTGF5ZXI9amksdC50b29sdGlwPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyBJaSh0LGUpfSx0LnRyYW5zZm9ybWF0aW9uPWh0LHQudmVyc2lvbj0iMS45LjQiLHQudmlkZW9PdmVybGF5PWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gbmV3IGtpKHQsZSxpKX0sd2luZG93LkwpO3Qubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiB3aW5kb3cuTD1YaSx0aGlzfSx3aW5kb3cuTD10fSk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWxlYWZsZXQuanMubWFwCjwvc2NyaXB0Pgo8c2NyaXB0Pgpjb25zdCBST1VURVMgPSBbeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiLCAiR2VsaXggQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJTb2NoaSIsICJ0b19jaXR5IjogIkFsZ2llcnMiLCAiY291bnQiOiA1LCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiB0cnVlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBNYXIgMTAiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9LCB7ImRhdGUiOiAiMjAyNSBNYXIgMTIiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjgzNCJ9LCB7ImRhdGUiOiAiMjAyNSBNYXkgMTMiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9LCB7ImRhdGUiOiAiMjAyNiBKYW4gMzAiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03ODc2NSJ9LCB7ImRhdGUiOiAiMjAyNiBBcHIgMTYiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0MiJ9XSwgImZyb21fbGF0IjogNDMuNiwgImZyb21fbG9uIjogMzkuNzMsICJ0b19sYXQiOiAzNi43NCwgInRvX2xvbiI6IDMuMDZ9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyIsICJHZWxpeCBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIkFsZ2llcnMiLCAidG9fY2l0eSI6ICJNb3Njb3ciLCAiY291bnQiOiA4LCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiB0cnVlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBNYXIgMTAiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjgzNCJ9LCB7ImRhdGUiOiAiMjAyNSBNYXIgMTciLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9LCB7ImRhdGUiOiAiMjAyNSBKdWwgMjYiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9LCB7ImRhdGUiOiAiMjAyNSBBdWcgMyIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzczIn0sIHsiZGF0ZSI6ICIyMDI1IFNlcCA3IiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNjAifSwgeyJkYXRlIjogIjIwMjUgU2VwIDEzIiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNzMifSwgeyJkYXRlIjogIjIwMjUgU2VwIDE0IiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNjAifSwgeyJkYXRlIjogIjIwMjUgT2N0IDIxIiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4MzQifV0sICJmcm9tX2xhdCI6IDM2Ljc0LCAiZnJvbV9sb24iOiAzLjA2LCAidG9fbGF0IjogNTUuNzUsICJ0b19sb24iOiAzNy42Mn0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIiwgIkdlbGl4IEFpcmxpbmVzIl0sICJmcm9tX2NpdHkiOiAiQWxnaWVycyIsICJ0b19jaXR5IjogIk5vdWFrY2hvdHQiLCAiY291bnQiOiAyLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiB0cnVlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBNYXIgMTEiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9LCB7ImRhdGUiOiAiMjAyNiBKYW4gMzEiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03ODc2NSJ9XSwgImZyb21fbGF0IjogMzYuNzQsICJmcm9tX2xvbiI6IDMuMDYsICJ0b19sYXQiOiAxOC4wOCwgInRvX2xvbiI6IC0xNS45N30sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIiwgIkdlbGl4IEFpcmxpbmVzIl0sICJmcm9tX2NpdHkiOiAiTm91YWtjaG90dCIsICJ0b19jaXR5IjogIkNhcmFjYXMiLCAiY291bnQiOiAzLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgTWFyIDEyIiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNzMifSwgeyJkYXRlIjogIjIwMjUgT2N0IDI2IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzg3NjUifSwgeyJkYXRlIjogIjIwMjYgQXByIDE5IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDIifV0sICJmcm9tX2xhdCI6IDE4LjA4LCAiZnJvbV9sb24iOiAtMTUuOTcsICJ0b19sYXQiOiAxMC40OSwgInRvX2xvbiI6IC02Ni44OH0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIiwgIkdlbGl4IEFpcmxpbmVzIl0sICJmcm9tX2NpdHkiOiAiTW9zY293IiwgInRvX2NpdHkiOiAiU29jaGkiLCAiY291bnQiOiAzLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgTWFyIDEyIiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4MzQifSwgeyJkYXRlIjogIjIwMjUgTWF5IDEyIiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNzMifSwgeyJkYXRlIjogIjIwMjYgQXByIDE2IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDIifV0sICJmcm9tX2xhdCI6IDU1Ljc1LCAiZnJvbV9sb24iOiAzNy42MiwgInRvX2xhdCI6IDQzLjYsICJ0b19sb24iOiAzOS43M30sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiQnVzaGVociIsICJ0b19jaXR5IjogIk5vdm9zaWJpcnNrIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IE1hciAxMiIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODQ2In1dLCAiZnJvbV9sYXQiOiAyOC45NywgImZyb21fbG9uIjogNTAuODMsICJ0b19sYXQiOiA1NS4wMSwgInRvX2xvbiI6IDgyLjkzfSwgeyJhaXJsaW5lcyI6IFsiR2VsaXggQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJNZXhpY28gQ2l0eSIsICJ0b19jaXR5IjogIkNhcmFjYXMiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgTWFyIDEzIiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNzMifV0sICJmcm9tX2xhdCI6IDE5LjQzLCAiZnJvbV9sb24iOiAtOTkuMTMsICJ0b19sYXQiOiAxMC40OSwgInRvX2xvbiI6IC02Ni44OH0sIHsiYWlybGluZXMiOiBbIkdlbGl4IEFpcmxpbmVzIl0sICJmcm9tX2NpdHkiOiAiQ2FyYWNhcyIsICJ0b19jaXR5IjogIk1leGljbyBDaXR5IiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IE1hciAxMyIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzczIn1dLCAiZnJvbV9sYXQiOiAxMC40OSwgImZyb21fbG9uIjogLTY2Ljg4LCAidG9fbGF0IjogMTkuNDMsICJ0b19sb24iOiAtOTkuMTN9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIkFsZ2llcnMiLCAidG9fY2l0eSI6ICJVbHlhbm92c2siLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiB0cnVlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBNYXIgMTQiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjgzNCJ9XSwgImZyb21fbGF0IjogMzYuNzQsICJmcm9tX2xvbiI6IDMuMDYsICJ0b19sYXQiOiA1NC4zMiwgInRvX2xvbiI6IDQ4LjM3fSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJOb3Zvc2liaXJzayIsICJ0b19jaXR5IjogIktvbXNvbW9sc2stb24tQW11ciIsICJjb3VudCI6IDIsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBNYXIgMTQiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0NiJ9LCB7ImRhdGUiOiAiMjAyNSBNYXIgMzEiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03ODc2NSJ9XSwgImZyb21fbGF0IjogNTUuMDEsICJmcm9tX2xvbiI6IDgyLjkzLCAidG9fbGF0IjogNTAuNTUsICJ0b19sb24iOiAxMzcuMDF9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIlVsYW4tVWRlIiwgInRvX2NpdHkiOiAiU29jaGkiLCAiY291bnQiOiAyLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgTWFyIDE1IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDYifSwgeyJkYXRlIjogIjIwMjUgQXByIDIiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03ODc2NSJ9XSwgImZyb21fbGF0IjogNTEuODMsICJmcm9tX2xvbiI6IDEwNy42MSwgInRvX2xhdCI6IDQzLjYsICJ0b19sb24iOiAzOS43M30sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiS29tc29tb2xzay1vbi1BbXVyIiwgInRvX2NpdHkiOiAiVWxhbi1VZGUiLCAiY291bnQiOiA1LCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgTWFyIDE1IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDYifSwgeyJkYXRlIjogIjIwMjUgQXByIDEiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03ODc2NSJ9LCB7ImRhdGUiOiAiMjAyNSBBcHIgMjkiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0NiJ9LCB7ImRhdGUiOiAiMjAyNSBNYXkgMTUiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0MiJ9LCB7ImRhdGUiOiAiMjAyNiBKYW4gMzAiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjgzNCJ9XSwgImZyb21fbGF0IjogNTAuNTUsICJmcm9tX2xvbiI6IDEzNy4wMSwgInRvX2xhdCI6IDUxLjgzLCAidG9fbG9uIjogMTA3LjYxfSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiLCAiR2VsaXggQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJOb3Vha2Nob3R0IiwgInRvX2NpdHkiOiAiQWxnaWVycyIsICJjb3VudCI6IDMsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IHRydWUsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IE1hciAxNiIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzczIn0sIHsiZGF0ZSI6ICIyMDI1IE9jdCAzMCIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc4NzY1In0sIHsiZGF0ZSI6ICIyMDI2IEFwciAyMiIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODQyIn1dLCAiZnJvbV9sYXQiOiAxOC4wOCwgImZyb21fbG9uIjogLTE1Ljk3LCAidG9fbGF0IjogMzYuNzQsICJ0b19sb24iOiAzLjA2fSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiLCAiR2VsaXggQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJDYXJhY2FzIiwgInRvX2NpdHkiOiAiTm91YWtjaG90dCIsICJjb3VudCI6IDQsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBNYXIgMTYiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9LCB7ImRhdGUiOiAiMjAyNSBBdWcgMTciLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03ODc2NSJ9LCB7ImRhdGUiOiAiMjAyNSBPY3QgMzAiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03ODc2NSJ9LCB7ImRhdGUiOiAiMjAyNiBBcHIgMjIiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0MiJ9XSwgImZyb21fbGF0IjogMTAuNDksICJmcm9tX2xvbiI6IC02Ni44OCwgInRvX2xhdCI6IDE4LjA4LCAidG9fbG9uIjogLTE1Ljk3fSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJTb2NoaSIsICJ0b19jaXR5IjogIk91bSBFbCBCb3VhZ2hpIEFpciBCYXNlIiwgImNvdW50IjogMiwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogdHJ1ZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgTWFyIDE2IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDYifSwgeyJkYXRlIjogIjIwMjUgQXByIDMiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03ODc2NSJ9XSwgImZyb21fbGF0IjogNDMuNiwgImZyb21fbG9uIjogMzkuNzMsICJ0b19sYXQiOiAzNS44NywgInRvX2xvbiI6IDcuMTF9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIk91bSBFbCBCb3VhZ2hpIEFpciBCYXNlIiwgInRvX2NpdHkiOiAiTW9zY293IiwgImNvdW50IjogMiwgImFtYmlndW91cyI6IHRydWUsICJ0b3VjaGVzX2FsZ2VyaWEiOiB0cnVlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBNYXIgMTciLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0NiJ9LCB7ImRhdGUiOiAiMjAyNSBBcHIgNCIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc4NzY1In1dLCAiZnJvbV9sYXQiOiAzNS44NywgImZyb21fbG9uIjogNy4xMSwgInRvX2xhdCI6IDU1Ljc1LCAidG9fbG9uIjogMzcuNjJ9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIkFzdHJha2hhbiIsICJ0b19jaXR5IjogIkh5ZGVyYWJhZCIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBNYXIgMjEiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0NiJ9XSwgImZyb21fbGF0IjogNDYuMzUsICJmcm9tX2xvbiI6IDQ4LjAzLCAidG9fbGF0IjogMTcuMzksICJ0b19sb24iOiA3OC40OX0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiTW9zY293IiwgInRvX2NpdHkiOiAiQXN0cmFraGFuIiwgImNvdW50IjogMiwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IE1hciAyMSIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODQ2In0sIHsiZGF0ZSI6ICIyMDI2IEphbiAzMSIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc4NzY1In1dLCAiZnJvbV9sYXQiOiA1NS43NSwgImZyb21fbG9uIjogMzcuNjIsICJ0b19sYXQiOiA0Ni4zNSwgInRvX2xvbiI6IDQ4LjAzfSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiLCAiR2VsaXggQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJNb3Njb3ciLCAidG9fY2l0eSI6ICJNdW1iYWkiLCAiY291bnQiOiA0LCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgQXByIDciLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03ODc2NSJ9LCB7ImRhdGUiOiAiMjAyNSBBdWcgMjgiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM2MCJ9LCB7ImRhdGUiOiAiMjAyNSBTZXAgOCIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn0sIHsiZGF0ZSI6ICIyMDI1IFNlcCAxNSIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn1dLCAiZnJvbV9sYXQiOiA1NS43NSwgImZyb21fbG9uIjogMzcuNjIsICJ0b19sYXQiOiAxOS4wOSwgInRvX2xvbiI6IDcyLjg3fSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJVbHlhbm92c2siLCAidG9fY2l0eSI6ICJOb3Zvc2liaXJzayIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBBcHIgMTQiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjgzNCJ9XSwgImZyb21fbGF0IjogNTQuMzIsICJmcm9tX2xvbiI6IDQ4LjM3LCAidG9fbGF0IjogNTUuMDEsICJ0b19sb24iOiA4Mi45M30sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiVGFyYXoiLCAidG9fY2l0eSI6ICJVcnVtcWkiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgQXByIDI4IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY1MDIifV0sICJmcm9tX2xhdCI6IDQyLjksICJmcm9tX2xvbiI6IDcxLjM3LCAidG9fbGF0IjogNDMuODMsICJ0b19sb24iOiA4Ny42Mn0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiTml6aG5ldmFydG92c2siLCAidG9fY2l0eSI6ICJLb21zb21vbHNrLW9uLUFtdXIiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgQXByIDI4IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDYifV0sICJmcm9tX2xhdCI6IDYwLjkzLCAiZnJvbV9sb24iOiA3Ni41NywgInRvX2xhdCI6IDUwLjU1LCAidG9fbG9uIjogMTM3LjAxfSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJVbGFuLVVkZSIsICJ0b19jaXR5IjogIk1pbmVyYWxueWUgVm9keSIsICJjb3VudCI6IDMsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBBcHIgMzAiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0NiJ9LCB7ImRhdGUiOiAiMjAyNSBNYXkgMTYiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0MiJ9LCB7ImRhdGUiOiAiMjAyNiBKYW4gMzEiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjgzNCJ9XSwgImZyb21fbGF0IjogNTEuODMsICJmcm9tX2xvbiI6IDEwNy42MSwgInRvX2xhdCI6IDQ0LjIyLCAidG9fbG9uIjogNDMuMDh9LCB7ImFpcmxpbmVzIjogWyJWb2xnYS1EbmVwciBBaXJsaW5lcyIsICJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIk1pbmVyYWxueWUgVm9keSIsICJ0b19jaXR5IjogIk91bSBFbCBCb3VhZ2hpIEFpciBCYXNlIiwgImNvdW50IjogNCwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogdHJ1ZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgTWF5IDIiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0NiJ9LCB7ImRhdGUiOiAiMjAyNSBNYXkgMTciLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0MiJ9LCB7ImRhdGUiOiAiMjAyNSBBcHIgMjciLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjUwMiJ9LCB7ImRhdGUiOiAiMjAyNiBBcHIgMTIiLCAiYWlybGluZSI6ICJWb2xnYS1EbmVwciBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIkFuLTEyNCIsICJhaXJjcmFmdF9yZWciOiAiUkEtODIwNzkifV0sICJmcm9tX2xhdCI6IDQ0LjIyLCAiZnJvbV9sb24iOiA0My4wOCwgInRvX2xhdCI6IDM1Ljg3LCAidG9fbG9uIjogNy4xMX0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiT3VtIEVsIEJvdWFnaGkgQWlyIEJhc2UiLCAidG9fY2l0eSI6ICJGdWphaXJhaCIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IHRydWUsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IE1heSAzIiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDYifV0sICJmcm9tX2xhdCI6IDM1Ljg3LCAiZnJvbV9sb24iOiA3LjExLCAidG9fbGF0IjogMjUuMTEsICJ0b19sb24iOiA1Ni4zNH0sIHsiYWlybGluZXMiOiBbIkdlbGl4IEFpcmxpbmVzIl0sICJmcm9tX2NpdHkiOiAiVWx5YW5vdnNrIiwgInRvX2NpdHkiOiAiTW9zY293IiwgImNvdW50IjogMiwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IE1heSAxMSIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzczIn0sIHsiZGF0ZSI6ICIyMDI2IEphbiAyNyIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzczIn1dLCAiZnJvbV9sYXQiOiA1NC4zMiwgImZyb21fbG9uIjogNDguMzcsICJ0b19sYXQiOiA1NS43NSwgInRvX2xvbiI6IDM3LjYyfSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJUaWFuamluIiwgInRvX2NpdHkiOiAiQmxhZ292ZXNjaGNoZW5zayIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBNYXkgMTMiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0MiJ9XSwgImZyb21fbGF0IjogMzkuMzQsICJmcm9tX2xvbiI6IDExNy4zNiwgInRvX2xhdCI6IDUwLjI3LCAidG9fbG9uIjogMTI3LjU0fSwgeyJhaXJsaW5lcyI6IFsiR2VsaXggQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJBbGdpZXJzIiwgInRvX2NpdHkiOiAiTGFyaW5vIEFpciBCYXNlIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogdHJ1ZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgTWF5IDE0IiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNzMifV0sICJmcm9tX2xhdCI6IDM2Ljc0LCAiZnJvbV9sb24iOiAzLjA2LCAidG9fbGF0IjogNDguMjcsICJ0b19sb24iOiA0MS40fSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJCbGFnb3Zlc2hjaGVuc2siLCAidG9fY2l0eSI6ICJLb21zb21vbHNrLW9uLUFtdXIiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgTWF5IDE0IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDIifV0sICJmcm9tX2xhdCI6IDUwLjI3LCAiZnJvbV9sb24iOiAxMjcuNTQsICJ0b19sYXQiOiA1MC41NSwgInRvX2xvbiI6IDEzNy4wMX0sIHsiYWlybGluZXMiOiBbIkdlbGl4IEFpcmxpbmVzIl0sICJmcm9tX2NpdHkiOiAiTGFyaW5vIEFpciBCYXNlIiwgInRvX2NpdHkiOiAiTXVtYmFpIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IHRydWUsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgTWF5IDE1IiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNzMifV0sICJmcm9tX2xhdCI6IDQ4LjI3LCAiZnJvbV9sb24iOiA0MS40LCAidG9fbGF0IjogMTkuMDksICJ0b19sb24iOiA3Mi44N30sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiT3VtIEVsIEJvdWFnaGkgQWlyIEJhc2UiLCAidG9fY2l0eSI6ICJJc3RhbmJ1bCIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiB0cnVlLCAidG91Y2hlc19hbGdlcmlhIjogdHJ1ZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgTWF5IDE3IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDIifV0sICJmcm9tX2xhdCI6IDM1Ljg3LCAiZnJvbV9sb24iOiA3LjExLCAidG9fbGF0IjogNDEuMDEsICJ0b19sb24iOiAyOC45N30sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiUG9ydCBTdWRhbiIsICJ0b19jaXR5IjogIktpZ2FsaSIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBNYXkgMTgiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0MiJ9XSwgImZyb21fbGF0IjogMTkuNTcsICJmcm9tX2xvbiI6IDM3LjIyLCAidG9fbGF0IjogLTEuOTQsICJ0b19sb24iOiAzMC4wNn0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiSXN0YW5idWwiLCAidG9fY2l0eSI6ICJQb3J0IFN1ZGFuIiwgImNvdW50IjogMiwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IE1heSAxOCIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODQyIn0sIHsiZGF0ZSI6ICIyMDI2IEphbiA5IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDYifV0sICJmcm9tX2xhdCI6IDQxLjAxLCAiZnJvbV9sb24iOiAyOC45NywgInRvX2xhdCI6IDE5LjU3LCAidG9fbG9uIjogMzcuMjJ9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyIsICJHZWxpeCBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIk1vc2NvdyIsICJ0b19jaXR5IjogIk1vc2NvdyIsICJjb3VudCI6IDYsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBKdWwgMjEiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9LCB7ImRhdGUiOiAiMjAyNSBTZXAgMTIiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0NiJ9LCB7ImRhdGUiOiAiMjAyNSBOb3YgMjciLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjUwMiJ9LCB7ImRhdGUiOiAiMjAyNSBEZWMgMTEiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjUwMiJ9LCB7ImRhdGUiOiAiMjAyNiBBcHIgMTQiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0MiJ9LCB7ImRhdGUiOiAiMjAyNiBBcHIgMjQiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0MiJ9XSwgImZyb21fbGF0IjogNTUuNzUsICJmcm9tX2xvbiI6IDM3LjYyLCAidG9fbGF0IjogNTUuNzUsICJ0b19sb24iOiAzNy42Mn0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIiwgIkdlbGl4IEFpcmxpbmVzIl0sICJmcm9tX2NpdHkiOiAiTWluZXJhbG55ZSBWb2R5IiwgInRvX2NpdHkiOiAiQWxnaWVycyIsICJjb3VudCI6IDE4LCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiB0cnVlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBKdWwgMjIiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9LCB7ImRhdGUiOiAiMjAyNSBKdWwgMjgiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9LCB7ImRhdGUiOiAiMjAyNSBBdWcgMiIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzczIn0sIHsiZGF0ZSI6ICIyMDI1IEF1ZyAzMCIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzczIn0sIHsiZGF0ZSI6ICIyMDI1IFNlcCA0IiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNzMifSwgeyJkYXRlIjogIjIwMjUgU2VwIDYiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM2MCJ9LCB7ImRhdGUiOiAiMjAyNSBTZXAgMTIiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM2MCJ9LCB7ImRhdGUiOiAiMjAyNSBTZXAgMTIiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9LCB7ImRhdGUiOiAiMjAyNSBOb3YgMTQiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM2MCJ9LCB7ImRhdGUiOiAiMjAyNSBOb3YgMTkiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM2MCJ9LCB7ImRhdGUiOiAiMjAyNSBOb3YgMjMiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM2MCJ9LCB7ImRhdGUiOiAiMjAyNSBOb3YgMzAiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjgzNCJ9LCB7ImRhdGUiOiAiMjAyNSBEZWMgMSIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn0sIHsiZGF0ZSI6ICIyMDI1IERlYyA3IiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNjAifSwgeyJkYXRlIjogIjIwMjUgRGVjIDI5IiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNzMifSwgeyJkYXRlIjogIjIwMjYgSmFuIDIiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9LCB7ImRhdGUiOiAiMjAyNSBTZXAgMSIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn0sIHsiZGF0ZSI6ICIyMDI1IERlYyAyNSIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn1dLCAiZnJvbV9sYXQiOiA0NC4yMiwgImZyb21fbG9uIjogNDMuMDgsICJ0b19sYXQiOiAzNi43NCwgInRvX2xvbiI6IDMuMDZ9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyIsICJHZWxpeCBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIkFsZ2llcnMiLCAidG9fY2l0eSI6ICJDb25ha3J5IiwgImNvdW50IjogNSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogdHJ1ZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgSnVsIDIzIiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNzMifSwgeyJkYXRlIjogIjIwMjUgSnVsIDI5IiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNzMifSwgeyJkYXRlIjogIjIwMjUgQXVnIDIiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9LCB7ImRhdGUiOiAiMjAyNSBBdWcgOSIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc4NzY1In0sIHsiZGF0ZSI6ICIyMDI1IFNlcCAxMyIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn1dLCAiZnJvbV9sYXQiOiAzNi43NCwgImZyb21fbG9uIjogMy4wNiwgInRvX2xhdCI6IDkuNTQsICJ0b19sb24iOiAtMTMuNjh9LCB7ImFpcmxpbmVzIjogWyJHZWxpeCBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIkNvbmFrcnkiLCAidG9fY2l0eSI6ICJBbGdpZXJzIiwgImNvdW50IjogNCwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogdHJ1ZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgSnVsIDI1IiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNzMifSwgeyJkYXRlIjogIjIwMjUgSnVsIDI5IiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNzMifSwgeyJkYXRlIjogIjIwMjUgQXVnIDIiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9LCB7ImRhdGUiOiAiMjAyNSBTZXAgMTQiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM2MCJ9XSwgImZyb21fbGF0IjogOS41NCwgImZyb21fbG9uIjogLTEzLjY4LCAidG9fbGF0IjogMzYuNzQsICJ0b19sb24iOiAzLjA2fSwgeyJhaXJsaW5lcyI6IFsiVm9sZ2EtRG5lcHIgQWlybGluZXMiLCAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiR2VsaXggQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJBbGdpZXJzIiwgInRvX2NpdHkiOiAiTWluZXJhbG55ZSBWb2R5IiwgImNvdW50IjogMTEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IHRydWUsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IEp1bCAzMCIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzczIn0sIHsiZGF0ZSI6ICIyMDI1IEF1ZyAzMCIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzczIn0sIHsiZGF0ZSI6ICIyMDI1IFNlcCAyIiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNjAifSwgeyJkYXRlIjogIjIwMjUgU2VwIDYiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9LCB7ImRhdGUiOiAiMjAyNSBOb3YgMTUiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM2MCJ9LCB7ImRhdGUiOiAiMjAyNSBOb3YgMjAiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM2MCJ9LCB7ImRhdGUiOiAiMjAyNSBEZWMgOCIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn0sIHsiZGF0ZSI6ICIyMDI1IERlYyAzMCIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzczIn0sIHsiZGF0ZSI6ICIyMDI2IE1hciAxIiwgImFpcmxpbmUiOiAiVm9sZ2EtRG5lcHIgQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJBbi0xMjQiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTgyMDQ3In0sIHsiZGF0ZSI6ICIyMDI1IFNlcCAyMCIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2NTAyIn0sIHsiZGF0ZSI6ICIyMDI1IERlYyAyNiIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn1dLCAiZnJvbV9sYXQiOiAzNi43NCwgImZyb21fbG9uIjogMy4wNiwgInRvX2xhdCI6IDQ0LjIyLCAidG9fbG9uIjogNDMuMDh9LCB7ImFpcmxpbmVzIjogWyJHZWxpeCBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIlVydW1xaSIsICJ0b19jaXR5IjogIk11bHRhbiIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBKdWwgMzAiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9XSwgImZyb21fbGF0IjogNDMuODMsICJmcm9tX2xvbiI6IDg3LjYyLCAidG9fbGF0IjogMzAuMiwgInRvX2xvbiI6IDcxLjQzfSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJNb3Njb3ciLCAidG9fY2l0eSI6ICJCYWt1IiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IEF1ZyA3IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzg3NjUifV0sICJmcm9tX2xhdCI6IDU1Ljc1LCAiZnJvbV9sb24iOiAzNy42MiwgInRvX2xhdCI6IDQwLjQxLCAidG9fbG9uIjogNDkuODd9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIkJha3UiLCAidG9fY2l0eSI6ICJBbGdpZXJzIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogdHJ1ZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgQXVnIDgiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03ODc2NSJ9XSwgImZyb21fbGF0IjogNDAuNDEsICJmcm9tX2xvbiI6IDQ5Ljg3LCAidG9fbGF0IjogMzYuNzQsICJ0b19sb24iOiAzLjA2fSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJDb25ha3J5IiwgInRvX2NpdHkiOiAiQnJhc2lsaWEiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgQXVnIDEwIiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzg3NjUifV0sICJmcm9tX2xhdCI6IDkuNTQsICJmcm9tX2xvbiI6IC0xMy42OCwgInRvX2xhdCI6IC0xNS44LCAidG9fbG9uIjogLTQ3LjkzfSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJCcmFzaWxpYSIsICJ0b19jaXR5IjogIlNhbnRhIENydXoiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgQXVnIDEzIiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzg3NjUifV0sICJmcm9tX2xhdCI6IC0xNS44LCAiZnJvbV9sb24iOiAtNDcuOTMsICJ0b19sYXQiOiAtMTcuOCwgInRvX2xvbiI6IC02My4xOH0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiTm92b3NpYmlyc2siLCAidG9fY2l0eSI6ICJTb2NoaSIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBBdWcgMTQiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0NiJ9XSwgImZyb21fbGF0IjogNTUuMDEsICJmcm9tX2xvbiI6IDgyLjkzLCAidG9fbGF0IjogNDMuNiwgInRvX2xvbiI6IDM5LjczfSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJCb2dvdGEiLCAidG9fY2l0eSI6ICJDYXJhY2FzIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IEF1ZyAxNCIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc4NzY1In1dLCAiZnJvbV9sYXQiOiA0LjcxLCAiZnJvbV9sb24iOiAtNzQuMDcsICJ0b19sYXQiOiAxMC40OSwgInRvX2xvbiI6IC02Ni44OH0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiU2FudGEgQ3J1eiIsICJ0b19jaXR5IjogIkJvZ28iLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgQXVnIDE0IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzg3NjUifV0sICJmcm9tX2xhdCI6IC0xNy44LCAiZnJvbV9sb24iOiAtNjMuMTgsICJ0b19sYXQiOiA0LjcxLCAidG9fbG9uIjogLTc0LjA3fSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJUb2x1Y2EiLCAidG9fY2l0eSI6ICJIYXZhbmEiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgQXVnIDE1IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzg3NjUifV0sICJmcm9tX2xhdCI6IDE5LjI4LCAiZnJvbV9sb24iOiAtOTkuNjUsICJ0b19sYXQiOiAyMy4xMywgInRvX2xvbiI6IC04Mi4zOH0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiQ2FyYWNhcyIsICJ0b19jaXR5IjogIlRvbHVjYSIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBBdWcgMTUiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03ODc2NSJ9XSwgImZyb21fbGF0IjogMTAuNDksICJmcm9tX2xvbiI6IC02Ni44OCwgInRvX2xhdCI6IDE5LjI4LCAidG9fbG9uIjogLTk5LjY1fSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJIYXZhbmEiLCAidG9fY2l0eSI6ICJDYXJhY2FzIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IEF1ZyAxNyIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc4NzY1In1dLCAiZnJvbV9sYXQiOiAyMy4xMywgImZyb21fbG9uIjogLTgyLjM4LCAidG9fbGF0IjogMTAuNDksICJ0b19sb24iOiAtNjYuODh9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIk5vdWFrY2hvdHQiLCAidG9fY2l0eSI6ICJBbm5hYmEgQWlyIEJhc2UiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiB0cnVlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBBdWcgMTkiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03ODc2NSJ9XSwgImZyb21fbGF0IjogMTguMDgsICJmcm9tX2xvbiI6IC0xNS45NywgInRvX2xhdCI6IDM2LjgzLCAidG9fbG9uIjogNy44MX0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiQW5uYWJhIEFpciBCYXNlIiwgInRvX2NpdHkiOiAiTW9zY293IiwgImNvdW50IjogMiwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogdHJ1ZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgQXVnIDIwIiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzg3NjUifSwgeyJkYXRlIjogIjIwMjYgRmViIDUiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjgzNCJ9XSwgImZyb21fbGF0IjogMzYuODMsICJmcm9tX2xvbiI6IDcuODEsICJ0b19sYXQiOiA1NS43NSwgInRvX2xvbiI6IDM3LjYyfSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJKYWlwdXIiLCAidG9fY2l0eSI6ICJEaGFrYSIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBBdWcgMjEiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03ODc2NSJ9XSwgImZyb21fbGF0IjogMjYuOTEsICJmcm9tX2xvbiI6IDc1Ljc5LCAidG9fbGF0IjogMjMuNzIsICJ0b19sb24iOiA5MC40MX0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiU29jaGkiLCAidG9fY2l0eSI6ICJEYWxhbWFuIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IEF1ZyAyMiIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODQ2In1dLCAiZnJvbV9sYXQiOiA0My42LCAiZnJvbV9sb24iOiAzOS43MywgInRvX2xhdCI6IDM2LjcxLCAidG9fbG9uIjogMjguNzl9LCB7ImFpcmxpbmVzIjogWyJHZWxpeCBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIlVseWFub3ZzayIsICJ0b19jaXR5IjogIklya3V0c2siLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgQXVnIDI2IiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNzMifV0sICJmcm9tX2xhdCI6IDU0LjMyLCAiZnJvbV9sb24iOiA0OC4zNywgInRvX2xhdCI6IDUyLjI4LCAidG9fbG9uIjogMTA0LjI4fSwgeyJhaXJsaW5lcyI6IFsiR2VsaXggQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJJcmt1dHNrIiwgInRvX2NpdHkiOiAiRHp5bW9naSBBaXIgQmFzZSIsICJjb3VudCI6IDMsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBBdWcgMjciLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9LCB7ImRhdGUiOiAiMjAyNSBTZXAgMSIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzczIn0sIHsiZGF0ZSI6ICIyMDI1IFNlcCA4IiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNzMifV0sICJmcm9tX2xhdCI6IDUyLjI4LCAiZnJvbV9sb24iOiAxMDQuMjgsICJ0b19sYXQiOiA1MC41NSwgInRvX2xvbiI6IDEzNy4wMX0sIHsiYWlybGluZXMiOiBbIkdlbGl4IEFpcmxpbmVzIl0sICJmcm9tX2NpdHkiOiAiRHp5b21naSBBaXIgQmFzZSIsICJ0b19jaXR5IjogIklya3V0c2siLCAiY291bnQiOiAzLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgQXVnIDI4IiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNzMifSwgeyJkYXRlIjogIjIwMjUgU2VwIDMiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9LCB7ImRhdGUiOiAiMjAyNSBTZXAgMTAiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9XSwgImZyb21fbGF0IjogNTAuNTUsICJmcm9tX2xvbiI6IDEzNy4wMSwgInRvX2xhdCI6IDUyLjI4LCAidG9fbG9uIjogMTA0LjI4fSwgeyJhaXJsaW5lcyI6IFsiR2VsaXggQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJNdW1iYWkiLCAidG9fY2l0eSI6ICJOb3Zvc2liaXJzayIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBBdWcgMjkiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM2MCJ9XSwgImZyb21fbGF0IjogMTkuMDksICJmcm9tX2xvbiI6IDcyLjg3LCAidG9fbGF0IjogNTUuMDEsICJ0b19sb24iOiA4Mi45M30sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIiwgIkdlbGl4IEFpcmxpbmVzIl0sICJmcm9tX2NpdHkiOiAiSXJrdXRzayIsICJ0b19jaXR5IjogIk1pbmVyYWxueWUgVm9keSIsICJjb3VudCI6IDQsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBBdWcgMjkiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9LCB7ImRhdGUiOiAiMjAyNSBTZXAgMyIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzczIn0sIHsiZGF0ZSI6ICIyMDI1IFNlcCAxMCIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzczIn0sIHsiZGF0ZSI6ICIyMDI1IEFwciAyNiIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2NTAyIn1dLCAiZnJvbV9sYXQiOiA1Mi4yOCwgImZyb21fbG9uIjogMTA0LjI4LCAidG9fbGF0IjogNDQuMjIsICJ0b19sb24iOiA0My4wOH0sIHsiYWlybGluZXMiOiBbIkdlbGl4IEFpcmxpbmVzIl0sICJmcm9tX2NpdHkiOiAiWWVsdHNvdmthIEFpciBCYXNlLCBOb3Zvc2liaXJzayIsICJ0b19jaXR5IjogIk5vdm9zaWJpcnNrIiwgImNvdW50IjogMTAsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBBdWcgMzAiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM2MCJ9LCB7ImRhdGUiOiAiMjAyNSBTZXAgNSIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn0sIHsiZGF0ZSI6ICIyMDI1IE5vdiAxMyIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn0sIHsiZGF0ZSI6ICIyMDI1IE5vdiAxNyIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn0sIHsiZGF0ZSI6ICIyMDI1IE5vdiAyMSIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn0sIHsiZGF0ZSI6ICIyMDI1IE5vdiAyOSIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn0sIHsiZGF0ZSI6ICIyMDI1IERlYyA0IiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNjAifSwgeyJkYXRlIjogIjIwMjUgRGVjIDkiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM2MCJ9LCB7ImRhdGUiOiAiMjAyNSBEZWMgMjciLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9LCB7ImRhdGUiOiAiMjAyNSBEZWMgMzEiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9XSwgImZyb21fbGF0IjogNTQuOTMsICJmcm9tX2xvbiI6IDgyLjk3LCAidG9fbGF0IjogNTUuMDEsICJ0b19sb24iOiA4Mi45M30sIHsiYWlybGluZXMiOiBbIkdlbGl4IEFpcmxpbmVzIl0sICJmcm9tX2NpdHkiOiAiTm92b3NpYmlyc2siLCAidG9fY2l0eSI6ICJZZWx0c292a2EgQWlyIEJhc2UsIE5vdm9zaWJpcnNrIiwgImNvdW50IjogMywgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IEF1ZyAzMCIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn0sIHsiZGF0ZSI6ICIyMDI1IE5vdiAxMyIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn0sIHsiZGF0ZSI6ICIyMDI1IERlYyAyNyIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzczIn1dLCAiZnJvbV9sYXQiOiA1NS4wMSwgImZyb21fbG9uIjogODIuOTMsICJ0b19sYXQiOiA1NC45MywgInRvX2xvbiI6IDgyLjk3fSwgeyJhaXJsaW5lcyI6IFsiR2VsaXggQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJNaW5lcmFsbnllIFZvZHkiLCAidG9fY2l0eSI6ICJJcmt1dHNrIiwgImNvdW50IjogMiwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IFNlcCAxIiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNzMifSwgeyJkYXRlIjogIjIwMjUgU2VwIDciLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9XSwgImZyb21fbGF0IjogNDQuMjIsICJmcm9tX2xvbiI6IDQzLjA4LCAidG9fbGF0IjogNTIuMjgsICJ0b19sb24iOiAxMDQuMjh9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIk5pYW1leSIsICJ0b19jaXR5IjogIk91YWdkb3Vnb3UiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgU2VwIDIiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0NiJ9XSwgImZyb21fbGF0IjogMTMuNTEsICJmcm9tX2xvbiI6IDIuMTIsICJ0b19sYXQiOiAxMi4zNywgInRvX2xvbiI6IC0xLjUyfSwgeyJhaXJsaW5lcyI6IFsiR2VsaXggQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJNaW5lcmFsbnllIFZvZHkiLCAidG9fY2l0eSI6ICJZZWx0c292a2EgQWlyIEJhc2UsIE5vdm9zaWJpcnNrIiwgImNvdW50IjogNSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IFNlcCAzIiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNjAifSwgeyJkYXRlIjogIjIwMjUgTm92IDE3IiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNjAifSwgeyJkYXRlIjogIjIwMjUgTm92IDIxIiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNjAifSwgeyJkYXRlIjogIjIwMjUgRGVjIDgiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM2MCJ9LCB7ImRhdGUiOiAiMjAyNSBEZWMgMzEiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9XSwgImZyb21fbGF0IjogNDQuMjIsICJmcm9tX2xvbiI6IDQzLjA4LCAidG9fbGF0IjogNTQuOTMsICJ0b19sb24iOiA4Mi45N30sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiT3VhZ2RvdWdvdSIsICJ0b19jaXR5IjogIkthbm8iLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgU2VwIDQiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0NiJ9XSwgImZyb21fbGF0IjogMTIuMzcsICJmcm9tX2xvbiI6IC0xLjUyLCAidG9fbGF0IjogMTIuMCwgInRvX2xvbiI6IDguNTJ9LCB7ImFpcmxpbmVzIjogWyJWb2xnYS1EbmVwciBBaXJsaW5lcyIsICJBdmlhY29uIFppdG90cmFucyIsICJHZWxpeCBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIk5vdm9zaWJpcnNrIiwgInRvX2NpdHkiOiAiTWluZXJhbG55ZSBWb2R5IiwgImNvdW50IjogMTIsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBTZXAgNSIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn0sIHsiZGF0ZSI6ICIyMDI1IE5vdiAxMyIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn0sIHsiZGF0ZSI6ICIyMDI1IE5vdiAxOCIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn0sIHsiZGF0ZSI6ICIyMDI1IE5vdiAyMiIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn0sIHsiZGF0ZSI6ICIyMDI1IE5vdiAyOSIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODM0In0sIHsiZGF0ZSI6ICIyMDI1IE5vdiAzMCIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn0sIHsiZGF0ZSI6ICIyMDI1IERlYyA2IiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNjAifSwgeyJkYXRlIjogIjIwMjUgRGVjIDI4IiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNzMifSwgeyJkYXRlIjogIjIwMjYgSmFuIDEiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9LCB7ImRhdGUiOiAiMjAyNiBGZWIgMjYiLCAiYWlybGluZSI6ICJWb2xnYS1EbmVwciBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIkFuLTEyNCIsICJhaXJjcmFmdF9yZWciOiAiUkEtODIwNDcifSwgeyJkYXRlIjogIjIwMjUgQXVnIDMwIiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNjAifSwgeyJkYXRlIjogIjIwMjUgRGVjIDI0IiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNjAifV0sICJmcm9tX2xhdCI6IDU1LjAxLCAiZnJvbV9sb24iOiA4Mi45MywgInRvX2xhdCI6IDQ0LjIyLCAidG9fbG9uIjogNDMuMDh9LCB7ImFpcmxpbmVzIjogWyJHZWxpeCBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIk11bWJhaSIsICJ0b19jaXR5IjogIk1pbmVyYWxueWUgVm9keSIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBTZXAgOSIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn1dLCAiZnJvbV9sYXQiOiAxOS4wOSwgImZyb21fbG9uIjogNzIuODcsICJ0b19sYXQiOiA0NC4yMiwgInRvX2xvbiI6IDQzLjA4fSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJNb3Njb3ciLCAidG9fY2l0eSI6ICJNaW5lcmFsbnllIFZvZHkiLCAiY291bnQiOiA1LCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgU2VwIDkiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0MiJ9LCB7ImRhdGUiOiAiMjAyNSBTZXAgMTMiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0NiJ9LCB7ImRhdGUiOiAiMjAyNSBOb3YgMzAiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjUwMiJ9LCB7ImRhdGUiOiAiMjAyNSBTZXAgMTciLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjUwMiJ9LCB7ImRhdGUiOiAiMjAyNSBOb3YgMjciLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjUwMiJ9XSwgImZyb21fbGF0IjogNTUuNzUsICJmcm9tX2xvbiI6IDM3LjYyLCAidG9fbGF0IjogNDQuMjIsICJ0b19sb24iOiA0My4wOH0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiTWluZXJhbG55ZSBWb2R5IiwgInRvX2NpdHkiOiAiQWluIE91c2VyYSIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IHRydWUsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IFNlcCAxMCIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODQyIn1dLCAiZnJvbV9sYXQiOiA0NC4yMiwgImZyb21fbG9uIjogNDMuMDgsICJ0b19sYXQiOiAzNS40NSwgInRvX2xvbiI6IDIuODd9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIkFpbiBPdXNzZXJhIiwgInRvX2NpdHkiOiAiUml5YWRoIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IHRydWUsICJ0b3VjaGVzX2FsZ2VyaWEiOiB0cnVlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBTZXAgMTIiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0MiJ9XSwgImZyb21fbGF0IjogMzUuNDUsICJmcm9tX2xvbiI6IDIuODcsICJ0b19sYXQiOiAyNC42OSwgInRvX2xvbiI6IDQ2LjcyfSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJSaXlhZGgiLCAidG9fY2l0eSI6ICJUcmFiem9uIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IFNlcCAxMyIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODQyIn1dLCAiZnJvbV9sYXQiOiAyNC42OSwgImZyb21fbG9uIjogNDYuNzIsICJ0b19sYXQiOiA0MS4wLCAidG9fbG9uIjogMzkuNzN9LCB7ImFpcmxpbmVzIjogWyJHZWxpeCBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIk1vc2NvdyIsICJ0b19jaXR5IjogIkdvYSIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBTZXAgMTYiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9XSwgImZyb21fbGF0IjogNTUuNzUsICJmcm9tX2xvbiI6IDM3LjYyLCAidG9fbGF0IjogMTUuMzgsICJ0b19sb24iOiA3My44OH0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiU2hhcmphaCIsICJ0b19jaXR5IjogIkR1YmFpIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IFNlcCAxOSIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODQ2In1dLCAiZnJvbV9sYXQiOiAyNS4zNCwgImZyb21fbG9uIjogNTUuMzksICJ0b19sYXQiOiAyNS4yLCAidG9fbG9uIjogNTUuMjd9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIkJpc2hrZWsiLCAidG9fY2l0eSI6ICJNYXJ5IiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IFNlcCAyMyIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2NTAyIn1dLCAiZnJvbV9sYXQiOiA0Mi44NywgImZyb21fbG9uIjogNzQuNTksICJ0b19sYXQiOiAzNy42LCAidG9fbG9uIjogNjEuODN9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIkR1YmFpIiwgInRvX2NpdHkiOiAiQWRkaXMgQWJhYmEiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgT2N0IDE4IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4MzQifV0sICJmcm9tX2xhdCI6IDI1LjIsICJmcm9tX2xvbiI6IDU1LjI3LCAidG9fbGF0IjogOS4wMSwgInRvX2xvbiI6IDM4Ljc2fSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJKYWlwdXIiLCAidG9fY2l0eSI6ICJNb3Njb3ciLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgT2N0IDE4IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDYifV0sICJmcm9tX2xhdCI6IDI2LjkxLCAiZnJvbV9sb24iOiA3NS43OSwgInRvX2xhdCI6IDU1Ljc1LCAidG9fbG9uIjogMzcuNjJ9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIkFidWphIiwgInRvX2NpdHkiOiAiQWNjcmEiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgT2N0IDE5IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4MzQifV0sICJmcm9tX2xhdCI6IDkuMDcsICJmcm9tX2xvbiI6IDcuNDksICJ0b19sYXQiOiA1LjU1LCAidG9fbG9uIjogLTAuMn0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiS2luc2hhc2EiLCAidG9fY2l0eSI6ICJBYnVqYSIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBPY3QgMTkiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjgzNCJ9XSwgImZyb21fbGF0IjogLTQuMzIsICJmcm9tX2xvbiI6IDE1LjMyLCAidG9fbGF0IjogOS4wNywgInRvX2xvbiI6IDcuNDl9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIk5haXJvYmkiLCAidG9fY2l0eSI6ICJLaW5zaGFzYSIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBPY3QgMTkiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjgzNCJ9XSwgImZyb21fbGF0IjogLTEuMjgsICJmcm9tX2xvbiI6IDM2LjgyLCAidG9fbGF0IjogLTQuMzIsICJ0b19sb24iOiAxNS4zMn0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiT3VhZ2RvdWdvdSIsICJ0b19jaXR5IjogIkFsZ2llcmEiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiB0cnVlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBPY3QgMjAiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjgzNCJ9XSwgImZyb21fbGF0IjogMTIuMzcsICJmcm9tX2xvbiI6IC0xLjUyLCAidG9fbGF0IjogMzYuNzQsICJ0b19sb24iOiAzLjA2fSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJBY2NyYSIsICJ0b19jaXR5IjogIk91YWdkb3Vnb3UiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgT2N0IDIwIiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4MzQifV0sICJmcm9tX2xhdCI6IDUuNTUsICJmcm9tX2xvbiI6IC0wLjIsICJ0b19sYXQiOiAxMi4zNywgInRvX2xvbiI6IC0xLjUyfSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJNb3Njb3ciLCAidG9fY2l0eSI6ICJGdWphaXJhaCIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBPY3QgMjEiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0NiJ9XSwgImZyb21fbGF0IjogNTUuNzUsICJmcm9tX2xvbiI6IDM3LjYyLCAidG9fbGF0IjogMjUuMTEsICJ0b19sb24iOiA1Ni4zNH0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiVXJ1bXFpIiwgInRvX2NpdHkiOiAiTmFiZXJlemhueWUgQ2hlbG55IiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IHRydWUsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgT2N0IDIyIiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzg3NjUifV0sICJmcm9tX2xhdCI6IDQzLjgzLCAiZnJvbV9sb24iOiA4Ny42MiwgInRvX2xhdCI6IDU1LjcyLCAidG9fbG9uIjogNTIuMzh9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIlllcmV2YW4iLCAidG9fY2l0eSI6ICJBbGdpZXJzIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogdHJ1ZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgT2N0IDI0IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzg3NjUifV0sICJmcm9tX2xhdCI6IDQwLjE4LCAiZnJvbV9sb24iOiA0NC41MSwgInRvX2xhdCI6IDM2Ljc0LCAidG9fbG9uIjogMy4wNn0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiTW9zY293IiwgInRvX2NpdHkiOiAiWWVyZXZhbiIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBPY3QgMjQiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03ODc2NSJ9XSwgImZyb21fbGF0IjogNTUuNzUsICJmcm9tX2xvbiI6IDM3LjYyLCAidG9fbGF0IjogNDAuMTgsICJ0b19sb24iOiA0NC41MX0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiRGFrYXIiLCAidG9fY2l0eSI6ICJOb3Vha2Nob3R0IiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IE9jdCAyNSIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc4NzY1In1dLCAiZnJvbV9sYXQiOiAxNC43MiwgImZyb21fbG9uIjogLTE3LjQ3LCAidG9fbGF0IjogMTguMDgsICJ0b19sb24iOiAtMTUuOTd9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIlJhYmF0IiwgInRvX2NpdHkiOiAiRGFrYXIiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgT2N0IDI1IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzg3NjUifV0sICJmcm9tX2xhdCI6IDM0LjAyLCAiZnJvbV9sb24iOiAtNi44MywgInRvX2xhdCI6IDE0LjcyLCAidG9fbG9uIjogLTE3LjQ3fSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJBbGdpZXJzIiwgInRvX2NpdHkiOiAiUmFiYXQiLCAiY291bnQiOiAyLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiB0cnVlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBPY3QgMjUiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03ODc2NSJ9LCB7ImRhdGUiOiAiMjAyNiBBcHIgMTgiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0MiJ9XSwgImZyb21fbGF0IjogMzYuNzQsICJmcm9tX2xvbiI6IDMuMDYsICJ0b19sYXQiOiAzNC4wMiwgInRvX2xvbiI6IC02LjgzfSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJGdWphaXJhaCIsICJ0b19jaXR5IjogIkVudGViYmUiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgT2N0IDI4IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDYifV0sICJmcm9tX2xhdCI6IDI1LjExLCAiZnJvbV9sb24iOiA1Ni4zNCwgInRvX2xhdCI6IDAuMDUsICJ0b19sb24iOiAzMi40NH0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiQ2FyYWNhcyIsICJ0b19jaXR5IjogIkhhdmFuYSIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBPY3QgMjgiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03ODc2NSJ9XSwgImZyb21fbGF0IjogMTAuNDksICJmcm9tX2xvbiI6IC02Ni44OCwgInRvX2xhdCI6IDIzLjEzLCAidG9fbG9uIjogLTgyLjM4fSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJNYW5hZ3VhIiwgInRvX2NpdHkiOiAiQ2FyYWNhcyIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBPY3QgMjkiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03ODc2NSJ9XSwgImZyb21fbGF0IjogMTIuMTMsICJmcm9tX2xvbiI6IC04Ni4yOCwgInRvX2xhdCI6IDEwLjQ5LCAidG9fbG9uIjogLTY2Ljg4fSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJIYXZhbmEiLCAidG9fY2l0eSI6ICJNYW5hZ3VhIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IE9jdCAyOSIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc4NzY1In1dLCAiZnJvbV9sYXQiOiAyMy4xMywgImZyb21fbG9uIjogLTgyLjM4LCAidG9fbGF0IjogMTIuMTMsICJ0b19sb24iOiAtODYuMjh9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIkVudGViYmUiLCAidG9fY2l0eSI6ICJPdWFnZG91Z291IiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IE9jdCAzMCIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODQ2In1dLCAiZnJvbV9sYXQiOiAwLjA1LCAiZnJvbV9sb24iOiAzMi40NCwgInRvX2xhdCI6IDEyLjM3LCAidG9fbG9uIjogLTEuNTJ9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIk91YWdkb3Vnb3UiLCAidG9fY2l0eSI6ICJBbGdpZXJzIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogdHJ1ZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgT2N0IDMxIiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDYifV0sICJmcm9tX2xhdCI6IDEyLjM3LCAiZnJvbV9sb24iOiAtMS41MiwgInRvX2xhdCI6IDM2Ljc0LCAidG9fbG9uIjogMy4wNn0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiQWxnaWVycyIsICJ0b19jaXR5IjogIlNvY2hpIiwgImNvdW50IjogMiwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogdHJ1ZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgT2N0IDMxIiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzg3NjUifSwgeyJkYXRlIjogIjIwMjYgQXByIDIzIiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDIifV0sICJmcm9tX2xhdCI6IDM2Ljc0LCAiZnJvbV9sb24iOiAzLjA2LCAidG9fbGF0IjogNDMuNiwgInRvX2xvbiI6IDM5LjczfSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJZZWthdGVyaW5idXJnIiwgInRvX2NpdHkiOiAiVmxhZGl2b3N0b2siLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgTm92IDEiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0NiJ9XSwgImZyb21fbGF0IjogNTYuODQsICJmcm9tX2xvbiI6IDYwLjYsICJ0b19sYXQiOiA0My4xMiwgInRvX2xvbiI6IDEzMS44OX0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiQWxnaWVycyIsICJ0b19jaXR5IjogIllla2F0ZXJpbmJ1cmciLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiB0cnVlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBOb3YgMSIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODQ2In1dLCAiZnJvbV9sYXQiOiAzNi43NCwgImZyb21fbG9uIjogMy4wNiwgInRvX2xhdCI6IDU2Ljg0LCAidG9fbG9uIjogNjAuNn0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiU29jaGkiLCAidG9fY2l0eSI6ICJNb3Njb3ciLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgTm92IDEiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03ODc2NSJ9XSwgImZyb21fbGF0IjogNDMuNiwgImZyb21fbG9uIjogMzkuNzMsICJ0b19sYXQiOiA1NS43NSwgInRvX2xvbiI6IDM3LjYyfSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJWbGFkaXZvc3RvayIsICJ0b19jaXR5IjogIk5vdm9zaWJpcnNrIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IE5vdiA1IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDYifV0sICJmcm9tX2xhdCI6IDQzLjEyLCAiZnJvbV9sb24iOiAxMzEuODksICJ0b19sYXQiOiA1NS4wMSwgInRvX2xvbiI6IDgyLjkzfSwgeyJhaXJsaW5lcyI6IFsiR2VsaXggQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJNb3Njb3ciLCAidG9fY2l0eSI6ICJJcmt1dHNrIE5vcnRod2VzdCBBaXJwb3J0IiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IE5vdiA4IiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNjAifV0sICJmcm9tX2xhdCI6IDU1Ljc1LCAiZnJvbV9sb24iOiAzNy42MiwgInRvX2xhdCI6IDUyLjM1LCAidG9fbG9uIjogMTA0LjJ9LCB7ImFpcmxpbmVzIjogWyJHZWxpeCBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIklya3V0c2sgTm9ydGh3ZXN0IEFpcnBvcnQiLCAidG9fY2l0eSI6ICJOb3Zvc2liaXJzayIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBOb3YgOSIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn1dLCAiZnJvbV9sYXQiOiA1Mi4zNSwgImZyb21fbG9uIjogMTA0LjIsICJ0b19sYXQiOiA1NS4wMSwgInRvX2xvbiI6IDgyLjkzfSwgeyJhaXJsaW5lcyI6IFsiR2VsaXggQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJOb3Zvc2liaXJzayIsICJ0b19jaXR5IjogIkR1YmFpIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IE5vdiAxMSIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn1dLCAiZnJvbV9sYXQiOiA1NS4wMSwgImZyb21fbG9uIjogODIuOTMsICJ0b19sYXQiOiAyNS4yLCAidG9fbG9uIjogNTUuMjd9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyIsICJHZWxpeCBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIkR1YmFpIiwgInRvX2NpdHkiOiAiTm92b3NpYmlyc2siLCAiY291bnQiOiAzLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgTm92IDEyIiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNjAifSwgeyJkYXRlIjogIjIwMjUgTm92IDI1IiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNjAifSwgeyJkYXRlIjogIjIwMjUgTm92IDI1IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4MzQifV0sICJmcm9tX2xhdCI6IDI1LjIsICJmcm9tX2xvbiI6IDU1LjI3LCAidG9fbGF0IjogNTUuMDEsICJ0b19sb24iOiA4Mi45M30sIHsiYWlybGluZXMiOiBbIlZvbGdhLURuZXByIEFpcmxpbmVzIiwgIkdlbGl4IEFpcmxpbmVzIl0sICJmcm9tX2NpdHkiOiAiQWxnaWVycyIsICJ0b19jaXR5IjogIkR1YmFpIiwgImNvdW50IjogMiwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogdHJ1ZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgTm92IDI0IiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNjAifSwgeyJkYXRlIjogIjIwMjYgSmFuIDE1IiwgImFpcmxpbmUiOiAiVm9sZ2EtRG5lcHIgQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJBbi0xMjQiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTgyMDQ0In1dLCAiZnJvbV9sYXQiOiAzNi43NCwgImZyb21fbG9uIjogMy4wNiwgInRvX2xhdCI6IDI1LjIsICJ0b19sb24iOiA1NS4yN30sIHsiYWlybGluZXMiOiBbIkdlbGl4IEFpcmxpbmVzIl0sICJmcm9tX2NpdHkiOiAiTm92b3NpYmlyc2siLCAidG9fY2l0eSI6ICJJcmt1dHNrIE5vcnRod2VzdCBBaXJwb3J0IiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IE5vdiAyNiIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn1dLCAiZnJvbV9sYXQiOiA1NS4wMSwgImZyb21fbG9uIjogODIuOTMsICJ0b19sYXQiOiA1Mi4zNSwgInRvX2xvbiI6IDEwNC4yfSwgeyJhaXJsaW5lcyI6IFsiR2VsaXggQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJJcmt1dHNrIE5vcnRod2VzdCBBaXJwb3J0IiwgInRvX2NpdHkiOiAiTW9zY293IiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IE5vdiAyOCIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn1dLCAiZnJvbV9sYXQiOiA1Mi4zNSwgImZyb21fbG9uIjogMTA0LjIsICJ0b19sYXQiOiA1NS43NSwgInRvX2xvbiI6IDM3LjYyfSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJTb2NoaSIsICJ0b19jaXR5IjogIkNvbnN0YW50aW5lIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogdHJ1ZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgTm92IDI4IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY1MDIifV0sICJmcm9tX2xhdCI6IDQzLjYsICJmcm9tX2xvbiI6IDM5LjczLCAidG9fbGF0IjogMzYuMzcsICJ0b19sb24iOiA2LjYxfSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJBY2hpbnNrIiwgInRvX2NpdHkiOiAiTm92b3NpYmlyc2siLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgTm92IDI4IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4MzQifV0sICJmcm9tX2xhdCI6IDU2LjI3LCAiZnJvbV9sb24iOiA5MC41LCAidG9fbGF0IjogNTUuMDEsICJ0b19sb24iOiA4Mi45M30sIHsiYWlybGluZXMiOiBbIkdlbGl4IEFpcmxpbmVzIl0sICJmcm9tX2NpdHkiOiAiTW9zY293IiwgInRvX2NpdHkiOiAiWWVsdHNvdmthIEFpciBCYXNlLCBOb3Zvc2liaXJzayIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBOb3YgMjkiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM2MCJ9XSwgImZyb21fbGF0IjogNTUuNzUsICJmcm9tX2xvbiI6IDM3LjYyLCAidG9fbGF0IjogNTQuOTMsICJ0b19sb24iOiA4Mi45N30sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiQ29uc3RhbnRpbmUiLCAidG9fY2l0eSI6ICJNb3Njb3ciLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiB0cnVlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBOb3YgMjkiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjUwMiJ9XSwgImZyb21fbGF0IjogMzYuMzcsICJmcm9tX2xvbiI6IDYuNjEsICJ0b19sYXQiOiA1NS43NSwgInRvX2xvbiI6IDM3LjYyfSwgeyJhaXJsaW5lcyI6IFsiR2VsaXggQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJTb2NoaSIsICJ0b19jaXR5IjogIlllbHRzb3ZrYSBBaXIgQmFzZSwgTm92b3NpYmlyc2siLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgRGVjIDQiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM2MCJ9XSwgImZyb21fbGF0IjogNDMuNiwgImZyb21fbG9uIjogMzkuNzMsICJ0b19sYXQiOiA1NC45MywgInRvX2xvbiI6IDgyLjk3fSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJUdW5pcyIsICJ0b19jaXR5IjogIkR1YmFpIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IERlYyA0IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY1MDIifV0sICJmcm9tX2xhdCI6IDM2LjgxLCAiZnJvbV9sb24iOiAxMC4xOCwgInRvX2xhdCI6IDI1LjIsICJ0b19sb24iOiA1NS4yN30sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiRHViYWkiLCAidG9fY2l0eSI6ICJBa3RhdSIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBEZWMgNSIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2NTAyIn1dLCAiZnJvbV9sYXQiOiAyNS4yLCAiZnJvbV9sb24iOiA1NS4yNywgInRvX2xhdCI6IDQzLjY1LCAidG9fbG9uIjogNTEuMTd9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIkFrdGF1IiwgInRvX2NpdHkiOiAiTW9zY293IiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IERlYyA1IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY1MDIifV0sICJmcm9tX2xhdCI6IDQzLjY1LCAiZnJvbV9sb24iOiA1MS4xNywgInRvX2xhdCI6IDU1Ljc1LCAidG9fbG9uIjogMzcuNjJ9LCB7ImFpcmxpbmVzIjogWyJHZWxpeCBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIkFsZ2llcnMiLCAidG9fY2l0eSI6ICJVZmEiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiB0cnVlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBEZWMgMTMiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM2MCJ9XSwgImZyb21fbGF0IjogMzYuNzQsICJmcm9tX2xvbiI6IDMuMDYsICJ0b19sYXQiOiA1NC43NCwgInRvX2xvbiI6IDU1Ljk3fSwgeyJhaXJsaW5lcyI6IFsiR2VsaXggQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJVZmEiLCAidG9fY2l0eSI6ICJHb2EiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgRGVjIDE0IiwgImFpcmxpbmUiOiAiR2VsaXggQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzYzNjAifV0sICJmcm9tX2xhdCI6IDU0Ljc0LCAiZnJvbV9sb24iOiA1NS45NywgInRvX2xhdCI6IDE1LjM4LCAidG9fbG9uIjogNzMuODh9LCB7ImFpcmxpbmVzIjogWyJHZWxpeCBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIkJpc2hrZWsiLCAidG9fY2l0eSI6ICJOb3Zvc2liaXJzayIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBEZWMgMjIiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM2MCJ9XSwgImZyb21fbGF0IjogNDIuODcsICJmcm9tX2xvbiI6IDc0LjU5LCAidG9fbGF0IjogNTUuMDEsICJ0b19sb24iOiA4Mi45M30sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiQ2hpdGEiLCAidG9fY2l0eSI6ICJLb21zb21vbHNrLW9uLUFtdXIiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgRGVjIDI3IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDYifV0sICJmcm9tX2xhdCI6IDUyLjAzLCAiZnJvbV9sb24iOiAxMTMuNSwgInRvX2xhdCI6IDUwLjU1LCAidG9fbG9uIjogMTM3LjAxfSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJLb21zb21vbHNrLW9uLUFtdXIiLCAidG9fY2l0eSI6ICJDaGl0YSIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBEZWMgMjciLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0NiJ9XSwgImZyb21fbGF0IjogNTAuNTUsICJmcm9tX2xvbiI6IDEzNy4wMSwgInRvX2xhdCI6IDUyLjAzLCAidG9fbG9uIjogMTEzLjV9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIkNoaXRhIiwgInRvX2NpdHkiOiAiTWluZXJhbG55ZSBWb2R5IiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IERlYyAyOCIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODQ2In1dLCAiZnJvbV9sYXQiOiA1Mi4wMywgImZyb21fbG9uIjogMTEzLjUsICJ0b19sYXQiOiA0NC4yMiwgInRvX2xvbiI6IDQzLjA4fSwgeyJhaXJsaW5lcyI6IFsiR2VsaXggQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJBbGdpZXJzIiwgInRvX2NpdHkiOiAiTGFnaG91YXQiLCAiY291bnQiOiAyLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiB0cnVlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBEZWMgMjkiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9LCB7ImRhdGUiOiAiMjAyNiBKYW4gMiIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzczIn1dLCAiZnJvbV9sYXQiOiAzNi43NCwgImZyb21fbG9uIjogMy4wNiwgInRvX2xhdCI6IDMzLjc2LCAidG9fbG9uIjogMi45M30sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiTWluZXJhbG55ZSBWb2R5IiwgInRvX2NpdHkiOiAiQWluIE91c3NlcmEiLCAiY291bnQiOiAzLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiB0cnVlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBEZWMgMjkiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0NiJ9LCB7ImRhdGUiOiAiMjAyNiBKYW4gMSIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODQ2In0sIHsiZGF0ZSI6ICIyMDI2IEZlYiAxIiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4MzQifV0sICJmcm9tX2xhdCI6IDQ0LjIyLCAiZnJvbV9sb24iOiA0My4wOCwgInRvX2xhdCI6IDM1LjQ1LCAidG9fbG9uIjogMi44N30sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiVGVocmFuIiwgInRvX2NpdHkiOiAiVWZhIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IERlYyAzMSIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODQ2In1dLCAiZnJvbV9sYXQiOiAzNS42OCwgImZyb21fbG9uIjogNTEuNDIsICJ0b19sYXQiOiA1NC43NCwgInRvX2xvbiI6IDU1Ljk3fSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJVZmEiLCAidG9fY2l0eSI6ICJNaW5lcmFsbnllIFZvZHkiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjYgSmFuIDEiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0NiJ9XSwgImZyb21fbGF0IjogNTQuNzQsICJmcm9tX2xvbiI6IDU1Ljk3LCAidG9fbGF0IjogNDQuMjIsICJ0b19sb24iOiA0My4wOH0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiQWluIE91c3NlcmEiLCAidG9fY2l0eSI6ICJJc3RhbmJ1bCIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IHRydWUsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI2IEphbiAyIiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDYifV0sICJmcm9tX2xhdCI6IDM1LjQ1LCAiZnJvbV9sb24iOiAyLjg3LCAidG9fbGF0IjogNDEuMDEsICJ0b19sb24iOiAyOC45N30sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiUG9ydCBTdWRhbiIsICJ0b19jaXR5IjogIklzdGFuYnVsIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI2IEphbiA5IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDYifV0sICJmcm9tX2xhdCI6IDE5LjU3LCAiZnJvbV9sb24iOiAzNy4yMiwgInRvX2xhdCI6IDQxLjAxLCAidG9fbG9uIjogMjguOTd9LCB7ImFpcmxpbmVzIjogWyJWb2xnYS1EbmVwciBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIkthemFuIiwgInRvX2NpdHkiOiAiWmhlbmd6aG91IiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI2IEphbiA5IiwgImFpcmxpbmUiOiAiVm9sZ2EtRG5lcHIgQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJBbi0xMjQiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTgyMDQ0In1dLCAiZnJvbV9sYXQiOiA1NS44LCAiZnJvbV9sb24iOiA0OS4xMSwgInRvX2xhdCI6IDM0Ljc1LCAidG9fbG9uIjogMTEzLjYyfSwgeyJhaXJsaW5lcyI6IFsiVm9sZ2EtRG5lcHIgQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJaaGVuZ3pob3UiLCAidG9fY2l0eSI6ICJVbGFuLVVkZSIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNiBKYW4gMTAiLCAiYWlybGluZSI6ICJWb2xnYS1EbmVwciBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIkFuLTEyNCIsICJhaXJjcmFmdF9yZWciOiAiUkEtODIwNDQifV0sICJmcm9tX2xhdCI6IDM0Ljc1LCAiZnJvbV9sb24iOiAxMTMuNjIsICJ0b19sYXQiOiA1MS44MywgInRvX2xvbiI6IDEwNy42MX0sIHsiYWlybGluZXMiOiBbIlZvbGdhLURuZXByIEFpcmxpbmVzIl0sICJmcm9tX2NpdHkiOiAiVWxhbi1VZGUiLCAidG9fY2l0eSI6ICJOb3Zvc2liaXJzayIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNiBKYW4gMTEiLCAiYWlybGluZSI6ICJWb2xnYS1EbmVwciBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIkFuLTEyNCIsICJhaXJjcmFmdF9yZWciOiAiUkEtODIwNDQifV0sICJmcm9tX2xhdCI6IDUxLjgzLCAiZnJvbV9sb24iOiAxMDcuNjEsICJ0b19sYXQiOiA1NS4wMSwgInRvX2xvbiI6IDgyLjkzfSwgeyJhaXJsaW5lcyI6IFsiVm9sZ2EtRG5lcHIgQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJOb3Zvc2liaXJzayIsICJ0b19jaXR5IjogIlR1cmttZW5iYXNoaSIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNiBKYW4gMTEiLCAiYWlybGluZSI6ICJWb2xnYS1EbmVwciBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIkFuLTEyNCIsICJhaXJjcmFmdF9yZWciOiAiUkEtODIwNDQifV0sICJmcm9tX2xhdCI6IDU1LjAxLCAiZnJvbV9sb24iOiA4Mi45MywgInRvX2xhdCI6IDQwLjA3LCAidG9fbG9uIjogNTMuMDF9LCB7ImFpcmxpbmVzIjogWyJWb2xnYS1EbmVwciBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIlR1cmttZW5iYXNoaSIsICJ0b19jaXR5IjogIkRhbW1hbSIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNiBKYW4gMTIiLCAiYWlybGluZSI6ICJWb2xnYS1EbmVwciBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIkFuLTEyNCIsICJhaXJjcmFmdF9yZWciOiAiUkEtODIwNDQifV0sICJmcm9tX2xhdCI6IDQwLjA3LCAiZnJvbV9sb24iOiA1My4wMSwgInRvX2xhdCI6IDI2LjQzLCAidG9fbG9uIjogNTAuMX0sIHsiYWlybGluZXMiOiBbIlZvbGdhLURuZXByIEFpcmxpbmVzIl0sICJmcm9tX2NpdHkiOiAiRGFtbWFtIiwgInRvX2NpdHkiOiAiUml5YWRoIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI2IEphbiAxMiIsICJhaXJsaW5lIjogIlZvbGdhLURuZXByIEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiQW4tMTI0IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS04MjA0NCJ9XSwgImZyb21fbGF0IjogMjYuNDMsICJmcm9tX2xvbiI6IDUwLjEsICJ0b19sYXQiOiAyNC42OSwgInRvX2xvbiI6IDQ2LjcyfSwgeyJhaXJsaW5lcyI6IFsiVm9sZ2EtRG5lcHIgQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJSaXlhZGgiLCAidG9fY2l0eSI6ICJDYWlybyIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNiBKYW4gMTMiLCAiYWlybGluZSI6ICJWb2xnYS1EbmVwciBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIkFuLTEyNCIsICJhaXJjcmFmdF9yZWciOiAiUkEtODIwNDQifV0sICJmcm9tX2xhdCI6IDI0LjY5LCAiZnJvbV9sb24iOiA0Ni43MiwgInRvX2xhdCI6IDMwLjA2LCAidG9fbG9uIjogMzEuMjV9LCB7ImFpcmxpbmVzIjogWyJWb2xnYS1EbmVwciBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIkNhaXJvIiwgInRvX2NpdHkiOiAiQmVjaGFyIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogdHJ1ZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjYgSmFuIDEzIiwgImFpcmxpbmUiOiAiVm9sZ2EtRG5lcHIgQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJBbi0xMjQiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTgyMDQ0In1dLCAiZnJvbV9sYXQiOiAzMC4wNiwgImZyb21fbG9uIjogMzEuMjUsICJ0b19sYXQiOiAzMS42NywgInRvX2xvbiI6IC0yLjI1fSwgeyJhaXJsaW5lcyI6IFsiVm9sZ2EtRG5lcHIgQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJCZWNoYXIiLCAidG9fY2l0eSI6ICJBbGdpZXJzIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IHRydWUsICJ0b3VjaGVzX2FsZ2VyaWEiOiB0cnVlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNiBKYW4gMTQiLCAiYWlybGluZSI6ICJWb2xnYS1EbmVwciBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIkFuLTEyNCIsICJhaXJjcmFmdF9yZWciOiAiUkEtODIwNDQifV0sICJmcm9tX2xhdCI6IDMxLjY3LCAiZnJvbV9sb24iOiAtMi4yNSwgInRvX2xhdCI6IDM2Ljc0LCAidG9fbG9uIjogMy4wNn0sIHsiYWlybGluZXMiOiBbIlZvbGdhLURuZXByIEFpcmxpbmVzIl0sICJmcm9tX2NpdHkiOiAiRHViYWkiLCAidG9fY2l0eSI6ICJNb3Njb3ciLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjYgSmFuIDE2IiwgImFpcmxpbmUiOiAiVm9sZ2EtRG5lcHIgQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJBbi0xMjQiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTgyMDQ0In1dLCAiZnJvbV9sYXQiOiAyNS4yLCAiZnJvbV9sb24iOiA1NS4yNywgInRvX2xhdCI6IDU1Ljc1LCAidG9fbG9uIjogMzcuNjJ9LCB7ImFpcmxpbmVzIjogWyJWb2xnYS1EbmVwciBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIk1vc2NvdyIsICJ0b19jaXR5IjogIlVseWFub3ZzayIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNiBKYW4gMTciLCAiYWlybGluZSI6ICJWb2xnYS1EbmVwciBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIkFuLTEyNCIsICJhaXJjcmFmdF9yZWciOiAiUkEtODIwNDQifV0sICJmcm9tX2xhdCI6IDU1Ljc1LCAiZnJvbV9sb24iOiAzNy42MiwgInRvX2xhdCI6IDU0LjMyLCAidG9fbG9uIjogNDguMzd9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIk1vc2NvdyIsICJ0b19jaXR5IjogIlN0LiBQZXRlcnNidXJnIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI2IEphbiAyOCIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc4NzY1In1dLCAiZnJvbV9sYXQiOiA1NS43NSwgImZyb21fbG9uIjogMzcuNjIsICJ0b19sYXQiOiA1OS45NSwgInRvX2xvbiI6IDMwLjMyfSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJUaWFuamluIiwgInRvX2NpdHkiOiAiS2hhYmFyb3ZzayIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNiBKYW4gMjkiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjgzNCJ9XSwgImZyb21fbGF0IjogMzkuMzQsICJmcm9tX2xvbiI6IDExNy4zNiwgInRvX2xhdCI6IDQ4LjQ4LCAidG9fbG9uIjogMTM1LjA4fSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJLaGFiYXJvdnNrIiwgInRvX2NpdHkiOiAiS29tc29tb2xzay1vbi1BbXVyIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI2IEphbiAzMCIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODM0In1dLCAiZnJvbV9sYXQiOiA0OC40OCwgImZyb21fbG9uIjogMTM1LjA4LCAidG9fbGF0IjogNTAuNTUsICJ0b19sb24iOiAxMzcuMDF9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIlN0LiBQZXRlcnNidXJnIiwgInRvX2NpdHkiOiAiU29jaGkiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjYgSmFuIDMwIiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzg3NjUifV0sICJmcm9tX2xhdCI6IDU5Ljk1LCAiZnJvbV9sb24iOiAzMC4zMiwgInRvX2xhdCI6IDQzLjYsICJ0b19sb24iOiAzOS43M30sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiQWluIE91c3NlcmEiLCAidG9fY2l0eSI6ICJBbm5hYmEgQWlyIEJhc2UiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiB0cnVlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNiBGZWIgMSIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODM0In1dLCAiZnJvbV9sYXQiOiAzNS40NSwgImZyb21fbG9uIjogMi44NywgInRvX2xhdCI6IDM2LjgzLCAidG9fbG9uIjogNy44MX0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiTm91YWtjaG90dCIsICJ0b19jaXR5IjogIlNhbWFuYSIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNiBGZWIgMSIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc4NzY1In1dLCAiZnJvbV9sYXQiOiAxOC4wOCwgImZyb21fbG9uIjogLTE1Ljk3LCAidG9fbGF0IjogMTkuMjEsICJ0b19sb24iOiAtNjkuMzN9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIlNhbWFuYSIsICJ0b19jaXR5IjogIlNhbiBBbnRvbmlvIGRlIGxvcyBCYVx1MDBmMW9zIEFpciBCYXNlIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI2IEZlYiAxIiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzg3NjUifV0sICJmcm9tX2xhdCI6IDE5LjIxLCAiZnJvbV9sb24iOiAtNjkuMzMsICJ0b19sYXQiOiAyMi44NywgInRvX2xvbiI6IC04Mi41fSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJIYXZhbmEiLCAidG9fY2l0eSI6ICJTYW1hbmEiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjYgRmViIDMiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03ODc2NSJ9XSwgImZyb21fbGF0IjogMjMuMTMsICJmcm9tX2xvbiI6IC04Mi4zOCwgInRvX2xhdCI6IDE5LjIxLCAidG9fbG9uIjogLTY5LjMzfSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJTYW1hbmEiLCAidG9fY2l0eSI6ICJDYXNhYmxhbmNhIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI2IEZlYiA0IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzg3NjUifV0sICJmcm9tX2xhdCI6IDE5LjIxLCAiZnJvbV9sb24iOiAtNjkuMzMsICJ0b19sYXQiOiAzMy41NywgInRvX2xvbiI6IC03LjU5fSwgeyJhaXJsaW5lcyI6IFsiVm9sZ2EtRG5lcHIgQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJVbHlhbm92c2siLCAidG9fY2l0eSI6ICJVbHlhbm92c2siLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjYgRmViIDUiLCAiYWlybGluZSI6ICJWb2xnYS1EbmVwciBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIkFuLTEyNCIsICJhaXJjcmFmdF9yZWciOiAiUkEtODIwNzQifV0sICJmcm9tX2xhdCI6IDU0LjMyLCAiZnJvbV9sb24iOiA0OC4zNywgInRvX2xhdCI6IDU0LjMyLCAidG9fbG9uIjogNDguMzd9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIkNhc2FibGFuY2EiLCAidG9fY2l0eSI6ICJNdXJtYW5zayIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNiBGZWIgNiIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc4NzY1In1dLCAiZnJvbV9sYXQiOiAzMy41NywgImZyb21fbG9uIjogLTcuNTksICJ0b19sYXQiOiA2OC45NywgInRvX2xvbiI6IDMzLjA3fSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJNdXJtYW5zayIsICJ0b19jaXR5IjogIlN0LiBQZXRlcnNidXJnIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI2IEZlYiA2IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzg3NjUifV0sICJmcm9tX2xhdCI6IDY4Ljk3LCAiZnJvbV9sb24iOiAzMy4wNywgInRvX2xhdCI6IDU5Ljk1LCAidG9fbG9uIjogMzAuMzJ9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIlN0LiBQZXRlcnNidXJnIiwgInRvX2NpdHkiOiAiTW9zY293IiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI2IEZlYiA3IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzg3NjUifV0sICJmcm9tX2xhdCI6IDU5Ljk1LCAiZnJvbV9sb24iOiAzMC4zMiwgInRvX2xhdCI6IDU1Ljc1LCAidG9fbG9uIjogMzcuNjJ9LCB7ImFpcmxpbmVzIjogWyJWb2xnYS1EbmVwciBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIkZ1amFpcmFoIiwgInRvX2NpdHkiOiAiQWxnaWVycyIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IHRydWUsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI2IEZlYiA4IiwgImFpcmxpbmUiOiAiVm9sZ2EtRG5lcHIgQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJBbi0xMjQiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTgyMDgxIn1dLCAiZnJvbV9sYXQiOiAyNS4xMSwgImZyb21fbG9uIjogNTYuMzQsICJ0b19sYXQiOiAzNi43NCwgInRvX2xvbiI6IDMuMDZ9LCB7ImFpcmxpbmVzIjogWyJWb2xnYS1EbmVwciBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIkFsZ2llcnMiLCAidG9fY2l0eSI6ICJCZWNoYXIiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiB0cnVlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNiBGZWIgMTAiLCAiYWlybGluZSI6ICJWb2xnYS1EbmVwciBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIkFuLTEyNCIsICJhaXJjcmFmdF9yZWciOiAiUkEtODIwODEifV0sICJmcm9tX2xhdCI6IDM2Ljc0LCAiZnJvbV9sb24iOiAzLjA2LCAidG9fbGF0IjogMzEuNjcsICJ0b19sb24iOiAtMi4yNX0sIHsiYWlybGluZXMiOiBbIlZvbGdhLURuZXByIEFpcmxpbmVzIl0sICJmcm9tX2NpdHkiOiAiQmVjaGFyIiwgInRvX2NpdHkiOiAiQ2Fpcm8iLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiB0cnVlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNiBGZWIgMTAiLCAiYWlybGluZSI6ICJWb2xnYS1EbmVwciBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIkFuLTEyNCIsICJhaXJjcmFmdF9yZWciOiAiUkEtODIwODEifV0sICJmcm9tX2xhdCI6IDMxLjY3LCAiZnJvbV9sb24iOiAtMi4yNSwgInRvX2xhdCI6IDMwLjA2LCAidG9fbG9uIjogMzEuMjV9LCB7ImFpcmxpbmVzIjogWyJWb2xnYS1EbmVwciBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIkNhaXJvIiwgInRvX2NpdHkiOiAiUml5YWRoIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI2IEZlYiAxMCIsICJhaXJsaW5lIjogIlZvbGdhLURuZXByIEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiQW4tMTI0IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS04MjA4MSJ9XSwgImZyb21fbGF0IjogMzAuMDYsICJmcm9tX2xvbiI6IDMxLjI1LCAidG9fbGF0IjogMjQuNjksICJ0b19sb24iOiA0Ni43Mn0sIHsiYWlybGluZXMiOiBbIlZvbGdhLURuZXByIEFpcmxpbmVzIl0sICJmcm9tX2NpdHkiOiAiUml5YWRoIiwgInRvX2NpdHkiOiAiRHViYWkiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjYgRmViIDExIiwgImFpcmxpbmUiOiAiVm9sZ2EtRG5lcHIgQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJBbi0xMjQiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTgyMDgxIn1dLCAiZnJvbV9sYXQiOiAyNC42OSwgImZyb21fbG9uIjogNDYuNzIsICJ0b19sYXQiOiAyNS4yLCAidG9fbG9uIjogNTUuMjd9LCB7ImFpcmxpbmVzIjogWyJWb2xnYS1EbmVwciBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIkJhcmFudmljeSIsICJ0b19jaXR5IjogIk1pbmVyYWxueWUgVm9keSIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiB0cnVlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI2IEZlYiAxNyIsICJhaXJsaW5lIjogIlZvbGdhLURuZXByIEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiQW4tMTI0IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS04MjA0NyJ9XSwgImZyb21fbGF0IjogNTMuMTMsICJmcm9tX2xvbiI6IDI2LjAyLCAidG9fbGF0IjogNDQuMjIsICJ0b19sb24iOiA0My4wOH0sIHsiYWlybGluZXMiOiBbIlZvbGdhLURuZXByIEFpcmxpbmVzIl0sICJmcm9tX2NpdHkiOiAiTWluZXJhbG55ZSBWb2R5IiwgInRvX2NpdHkiOiAiT3JhbiIsICJjb3VudCI6IDIsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IHRydWUsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI2IEZlYiAxOCIsICJhaXJsaW5lIjogIlZvbGdhLURuZXByIEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiQW4tMTI0IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS04MjA0NyJ9LCB7ImRhdGUiOiAiMjAyNiBNYXIgMTMiLCAiYWlybGluZSI6ICJWb2xnYS1EbmVwciBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIkFuLTEyNCIsICJhaXJjcmFmdF9yZWciOiAiUkEtODIwNDcifV0sICJmcm9tX2xhdCI6IDQ0LjIyLCAiZnJvbV9sb24iOiA0My4wOCwgInRvX2xhdCI6IDM1LjY5LCAidG9fbG9uIjogLTAuNjN9LCB7ImFpcmxpbmVzIjogWyJWb2xnYS1EbmVwciBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIk1pbmVyYWxueWUgVm9keSIsICJ0b19jaXR5IjogIk91bSBlbCBCb3VhZ2hpIEFpciBCYXNlIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogdHJ1ZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjYgRmViIDI3IiwgImFpcmxpbmUiOiAiVm9sZ2EtRG5lcHIgQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJBbi0xMjQiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTgyMDQ3In1dLCAiZnJvbV9sYXQiOiA0NC4yMiwgImZyb21fbG9uIjogNDMuMDgsICJ0b19sYXQiOiAzNS44NywgInRvX2xvbiI6IDcuMTF9LCB7ImFpcmxpbmVzIjogWyJWb2xnYS1EbmVwciBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIk91bSBlbCBCb3VhZ2hpIEFpciBCYXNlIiwgInRvX2NpdHkiOiAiQWxnaWVycyIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IHRydWUsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI2IEZlYiAyNyIsICJhaXJsaW5lIjogIlZvbGdhLURuZXByIEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiQW4tMTI0IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS04MjA0NyJ9XSwgImZyb21fbGF0IjogMzUuODcsICJmcm9tX2xvbiI6IDcuMTEsICJ0b19sYXQiOiAzNi43NCwgInRvX2xvbiI6IDMuMDZ9LCB7ImFpcmxpbmVzIjogWyJWb2xnYS1EbmVwciBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIk1pbmVyYWxueWUgVm9keSIsICJ0b19jaXR5IjogIklya3V0c2sgTm9ydGh3ZXN0IEFpcnBvcnQiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjYgTWFyIDIiLCAiYWlybGluZSI6ICJWb2xnYS1EbmVwciBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIkFuLTEyNCIsICJhaXJjcmFmdF9yZWciOiAiUkEtODIwNDcifV0sICJmcm9tX2xhdCI6IDQ0LjIyLCAiZnJvbV9sb24iOiA0My4wOCwgInRvX2xhdCI6IDUyLjM1LCAidG9fbG9uIjogMTA0LjJ9LCB7ImFpcmxpbmVzIjogWyJWb2xnYS1EbmVwciBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIklya3V0c2sgTm9ydGh3ZXN0IEFpcnBvcnQiLCAidG9fY2l0eSI6ICJBYmFrYW4iLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjYgTWFyIDExIiwgImFpcmxpbmUiOiAiVm9sZ2EtRG5lcHIgQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJBbi0xMjQiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTgyMDQ3In1dLCAiZnJvbV9sYXQiOiA1Mi4zNSwgImZyb21fbG9uIjogMTA0LjIsICJ0b19sYXQiOiA1My43MiwgInRvX2xvbiI6IDkxLjQxfSwgeyJhaXJsaW5lcyI6IFsiVm9sZ2EtRG5lcHIgQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJBYmFrYW4iLCAidG9fY2l0eSI6ICJZYW5vdm8gQWlyIEJhc2UiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjYgTWFyIDExIiwgImFpcmxpbmUiOiAiVm9sZ2EtRG5lcHIgQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJBbi0xMjQiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTgyMDQ3In1dLCAiZnJvbV9sYXQiOiA1My43MiwgImZyb21fbG9uIjogOTEuNDEsICJ0b19sYXQiOiA1Mi4xMywgInRvX2xvbiI6IDI0LjU2fSwgeyJhaXJsaW5lcyI6IFsiVm9sZ2EtRG5lcHIgQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJZYW5vdm8gQWlyIEJhc2UiLCAidG9fY2l0eSI6ICJNaW5lcmFsbnllIFZvZHkiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjYgTWFyIDEyIiwgImFpcmxpbmUiOiAiVm9sZ2EtRG5lcHIgQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJBbi0xMjQiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTgyMDQ3In1dLCAiZnJvbV9sYXQiOiA1Mi4xMywgImZyb21fbG9uIjogMjQuNTYsICJ0b19sYXQiOiA0NC4yMiwgInRvX2xvbiI6IDQzLjA4fSwgeyJhaXJsaW5lcyI6IFsiVm9sZ2EtRG5lcHIgQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJVbHlhbm92c2siLCAidG9fY2l0eSI6ICJEZWxoaSIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNiBNYXIgMTMiLCAiYWlybGluZSI6ICJWb2xnYS1EbmVwciBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIkFuLTEyNCIsICJhaXJjcmFmdF9yZWciOiAiUkEtODIwNzQifV0sICJmcm9tX2xhdCI6IDU0LjMyLCAiZnJvbV9sb24iOiA0OC4zNywgInRvX2xhdCI6IDI4LjYxLCAidG9fbG9uIjogNzcuMjF9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIk1vc2NvdyIsICJ0b19jaXR5IjogIlllbHRzb3ZrYSBBaXIgQmFzZSIsICJjb3VudCI6IDIsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNiBNYXIgMjUiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0MiJ9LCB7ImRhdGUiOiAiMjAyNiBBcHIgNyIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODQyIn1dLCAiZnJvbV9sYXQiOiA1NS43NSwgImZyb21fbG9uIjogMzcuNjIsICJ0b19sYXQiOiA1NC45MywgInRvX2xvbiI6IDgyLjk3fSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJZZWx0c292a2EgQWlyIEJhc2UiLCAidG9fY2l0eSI6ICJNaW5lcmFsbnllIFZvZHkiLCAiY291bnQiOiA0LCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjYgTWFyIDI2IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDIifSwgeyJkYXRlIjogIjIwMjYgTWFyIDMxIiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDIifSwgeyJkYXRlIjogIjIwMjYgQXByIDMiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0MiJ9LCB7ImRhdGUiOiAiMjAyNiBBcHIgNyIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODQyIn1dLCAiZnJvbV9sYXQiOiA1NC45MywgImZyb21fbG9uIjogODIuOTcsICJ0b19sYXQiOiA0NC4yMiwgInRvX2xvbiI6IDQzLjA4fSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJNaW5lcmFsbnllIFZvZHkiLCAidG9fY2l0eSI6ICJBaW4gT3Vzc2VyYSBBaXIgYmFzZSIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IHRydWUsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI2IE1hciAyNyIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODQyIn1dLCAiZnJvbV9sYXQiOiA0NC4yMiwgImZyb21fbG9uIjogNDMuMDgsICJ0b19sYXQiOiAzNS40NSwgInRvX2xvbiI6IDIuODd9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIkFpbiBPdXNzZXJhIEFpciBCYXNlIiwgInRvX2NpdHkiOiAiQW5uYWJhIEFpciBCYXNlIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogdHJ1ZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjYgTWFyIDI3IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDIifV0sICJmcm9tX2xhdCI6IDM1LjQ1LCAiZnJvbV9sb24iOiAyLjg3LCAidG9fbGF0IjogMzYuODMsICJ0b19sb24iOiA3LjgxfSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJWb2xnb2dyYWQiLCAidG9fY2l0eSI6ICJZZWx0c292a2EgQWlyIEJhc2UiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjYgTWFyIDMwIiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDIifV0sICJmcm9tX2xhdCI6IDQ4LjcxLCAiZnJvbV9sb24iOiA0NC41MSwgInRvX2xhdCI6IDU0LjkzLCAidG9fbG9uIjogODIuOTd9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIk1pbmVyYWxueWUgVm9keSIsICJ0b19jaXR5IjogIkxhZ2hvdWF0IEFpciBCYXNlIiwgImNvdW50IjogMywgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogdHJ1ZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjYgQXByIDQiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0MiJ9LCB7ImRhdGUiOiAiMjAyNiBBcHIgOSIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODQyIn0sIHsiZGF0ZSI6ICIyMDI2IEFwciAxIiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDIifV0sICJmcm9tX2xhdCI6IDQ0LjIyLCAiZnJvbV9sb24iOiA0My4wOCwgInRvX2xhdCI6IDMzLjc2LCAidG9fbG9uIjogMi45M30sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiTGFnaG91YXQgQWlyIEJhc2UiLCAidG9fY2l0eSI6ICJBbm5hYmEgQWlyIEJhc2UiLCAiY291bnQiOiAyLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiB0cnVlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNiBBcHIgNCIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODQyIn0sIHsiZGF0ZSI6ICIyMDI2IEFwciA5IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDIifV0sICJmcm9tX2xhdCI6IDMzLjc2LCAiZnJvbV9sb24iOiAyLjkzLCAidG9fbGF0IjogMzYuODMsICJ0b19sb24iOiA3LjgxfSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJEdWJhaSIsICJ0b19jaXR5IjogIkRhc29ndXoiLCAiY291bnQiOiAyLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjYgQXByIDYiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0MiJ9LCB7ImRhdGUiOiAiMjAyNiBBcHIgMTMiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0MiJ9XSwgImZyb21fbGF0IjogMjUuMiwgImZyb21fbG9uIjogNTUuMjcsICJ0b19sYXQiOiA0MS44NCwgInRvX2xvbiI6IDU5Ljk3fSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJEYXNvZ3V6IiwgInRvX2NpdHkiOiAiTW9zY293IiwgImNvdW50IjogMiwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI2IEFwciA2IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDIifSwgeyJkYXRlIjogIjIwMjYgQXByIDE0IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDIifV0sICJmcm9tX2xhdCI6IDQxLjg0LCAiZnJvbV9sb24iOiA1OS45NywgInRvX2xhdCI6IDU1Ljc1LCAidG9fbG9uIjogMzcuNjJ9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIkFubmFiYSBBaXIgQmFzZSIsICJ0b19jaXR5IjogIkR1YmFpIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogdHJ1ZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjYgQXByIDEyIiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDIifV0sICJmcm9tX2xhdCI6IDM2LjgzLCAiZnJvbV9sb24iOiA3LjgxLCAidG9fbGF0IjogMjUuMiwgInRvX2xvbiI6IDU1LjI3fSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJSYWJhdCIsICJ0b19jaXR5IjogIk5vdWFrY2hvdHQiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjYgQXByIDE4IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDIifV0sICJmcm9tX2xhdCI6IDM0LjAyLCAiZnJvbV9sb24iOiAtNi44MywgInRvX2xhdCI6IDE4LjA4LCAidG9fbG9uIjogLTE1Ljk3fSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJDYXJhY2FzIiwgInRvX2NpdHkiOiAiU2FuIEFudG9uaW8gZGUgbG9zIEJhXHUwMGYxb3MgQWlyIEJhc2UiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjYgQXByIDE5IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDIifV0sICJmcm9tX2xhdCI6IDEwLjQ5LCAiZnJvbV9sb24iOiAtNjYuODgsICJ0b19sYXQiOiAyMi44NywgInRvX2xvbiI6IC04Mi41fSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJIYXZhbmEiLCAidG9fY2l0eSI6ICJUb2x1Y2EiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjYgQXByIDIwIiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4NDIifV0sICJmcm9tX2xhdCI6IDIzLjEzLCAiZnJvbV9sb24iOiAtODIuMzgsICJ0b19sYXQiOiAxOS4yOCwgInRvX2xvbiI6IC05OS42NX0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiVG9sdWNhIiwgInRvX2NpdHkiOiAiQ2FyYWNhcyIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNiBBcHIgMjAiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0MiJ9XSwgImZyb21fbGF0IjogMTkuMjgsICJmcm9tX2xvbiI6IC05OS42NSwgInRvX2xhdCI6IDEwLjQ5LCAidG9fbG9uIjogLTY2Ljg4fSwgeyJhaXJsaW5lcyI6IFsiVm9sZ2EtRG5lcHIgQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJIYWlrb3UiLCAidG9fY2l0eSI6ICJJcmt1dHNrIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IGZhbHNlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI2IEFwciAxMCIsICJhaXJsaW5lIjogIlZvbGdhLURuZXByIEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiQW4tMTI0IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS04MjA3OSJ9XSwgImZyb21fbGF0IjogMjAuMDQsICJmcm9tX2xvbiI6IDExMC4zNCwgInRvX2xhdCI6IDUyLjI4LCAidG9fbG9uIjogMTA0LjI4fSwgeyJhaXJsaW5lcyI6IFsiVm9sZ2EtRG5lcHIgQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJJcmt1dHNrIiwgInRvX2NpdHkiOiAiSXJrdXRzayBOb3J0aHdlc3QgQWlycG9ydCIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNiBBcHIgMTAiLCAiYWlybGluZSI6ICJWb2xnYS1EbmVwciBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIkFuLTEyNCIsICJhaXJjcmFmdF9yZWciOiAiUkEtODIwNzkifV0sICJmcm9tX2xhdCI6IDUyLjI4LCAiZnJvbV9sb24iOiAxMDQuMjgsICJ0b19sYXQiOiA1Mi4zNSwgInRvX2xvbiI6IDEwNC4yfSwgeyJhaXJsaW5lcyI6IFsiVm9sZ2EtRG5lcHIgQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJJcmt1dHNrIE5vcnRod2VzdCBBaXJwb3J0IiwgInRvX2NpdHkiOiAiS3Jhc25veWFyc2siLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiBmYWxzZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjYgQXByIDExIiwgImFpcmxpbmUiOiAiVm9sZ2EtRG5lcHIgQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJBbi0xMjQiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTgyMDc5In1dLCAiZnJvbV9sYXQiOiA1Mi4zNSwgImZyb21fbG9uIjogMTA0LjIsICJ0b19sYXQiOiA1Ni4wMSwgInRvX2xvbiI6IDkyLjg2fSwgeyJhaXJsaW5lcyI6IFsiVm9sZ2EtRG5lcHIgQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJLcmFzbm95YXJzayIsICJ0b19jaXR5IjogIk1pbmVyYWxueWUgVm9keSIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IGZhbHNlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNiBBcHIgMTEiLCAiYWlybGluZSI6ICJWb2xnYS1EbmVwciBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIkFuLTEyNCIsICJhaXJjcmFmdF9yZWciOiAiUkEtODIwNzkifV0sICJmcm9tX2xhdCI6IDU2LjAxLCAiZnJvbV9sb24iOiA5Mi44NiwgInRvX2xhdCI6IDQ0LjIyLCAidG9fbG9uIjogNDMuMDh9LCB7ImFpcmxpbmVzIjogWyJWb2xnYS1EbmVwciBBaXJsaW5lcyIsICJBdmlhY29uIFppdG90cmFucyIsICJHZWxpeCBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIk91bSBFbCBCb3VhZ2hpIEFpciBCYXNlIiwgInRvX2NpdHkiOiAiQWxnaWVycyIsICJjb3VudCI6IDMsICJhbWJpZ3VvdXMiOiBmYWxzZSwgInRvdWNoZXNfYWxnZXJpYSI6IHRydWUsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI2IEFwciAxMiIsICJhaXJsaW5lIjogIlZvbGdhLURuZXByIEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiQW4tMTI0IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS04MjA3OSJ9LCB7ImRhdGUiOiAiMjAyNSBNYXIgMTMiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjgzNCJ9LCB7ImRhdGUiOiAiMjAyNSBNYXkgMTMiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9XSwgImZyb21fbGF0IjogMzUuODcsICJmcm9tX2xvbiI6IDcuMTEsICJ0b19sYXQiOiAzNi43NCwgInRvX2xvbiI6IDMuMDZ9LCB7ImFpcmxpbmVzIjogWyJWb2xnYS1EbmVwciBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIk5pYW1leSIsICJ0b19jaXR5IjogIkFsZ2llcnMiLCAiY291bnQiOiA1LCAiYW1iaWd1b3VzIjogZmFsc2UsICJ0b3VjaGVzX2FsZ2VyaWEiOiB0cnVlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNiBBcHIgMjMiLCAiYWlybGluZSI6ICJWb2xnYS1EbmVwciBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIkFuLTEyNCIsICJhaXJjcmFmdF9yZWciOiAiUkEtODIwNzkifSwgeyJkYXRlIjogIjIwMjYgQXByIDIxIiwgImFpcmxpbmUiOiAiVm9sZ2EtRG5lcHIgQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJBbi0xMjQiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTgyMDc5In0sIHsiZGF0ZSI6ICIyMDI2IEFwciAyNCIsICJhaXJsaW5lIjogIlZvbGdhLURuZXByIEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiQW4tMTI0IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS04MjA3OSJ9LCB7ImRhdGUiOiAiMjAyNiBBcHIgMjYiLCAiYWlybGluZSI6ICJWb2xnYS1EbmVwciBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIkFuLTEyNCIsICJhaXJjcmFmdF9yZWciOiAiUkEtODIwNzkifSwgeyJkYXRlIjogIjIwMjYgQXByIDI3IiwgImFpcmxpbmUiOiAiVm9sZ2EtRG5lcHIgQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJBbi0xMjQiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTgyMDc5In1dLCAiZnJvbV9sYXQiOiAxMy41MSwgImZyb21fbG9uIjogMi4xMiwgInRvX2xhdCI6IDM2Ljc0LCAidG9fbG9uIjogMy4wNn0sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIiwgIkdlbGl4IEFpcmxpbmVzIl0sICJmcm9tX2NpdHkiOiAiQWxnaWVycyIsICJ0b19jaXR5IjogIk91bSBFbCBCb3VhZ2hpIEFpciBCYXNlIiwgImNvdW50IjogMiwgImFtYmlndW91cyI6IHRydWUsICJ0b3VjaGVzX2FsZ2VyaWEiOiB0cnVlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBNYXIgMTMiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjgzNCJ9LCB7ImRhdGUiOiAiMjAyNSBNYXkgMTMiLCAiYWlybGluZSI6ICJHZWxpeCBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03NjM3MyJ9XSwgImZyb21fbGF0IjogMzYuNzQsICJmcm9tX2xvbiI6IDMuMDYsICJ0b19sYXQiOiAzNS44NywgInRvX2xvbiI6IDcuMTF9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIkRhbGFtYW4iLCAidG9fY2l0eSI6ICJPdW0gRWwgQm91YWdoaSBBaXIgQmFzZSIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiB0cnVlLCAidG91Y2hlc19hbGdlcmlhIjogdHJ1ZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgU2VwIDEiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0NiJ9XSwgImZyb21fbGF0IjogMzYuNzEsICJmcm9tX2xvbiI6IDI4Ljc5LCAidG9fbGF0IjogMzUuODcsICJ0b19sb24iOiA3LjExfSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJBaW4gT3Vzc2VyYSIsICJ0b19jaXR5IjogIlNoYXJqYWgiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogdHJ1ZSwgInRvdWNoZXNfYWxnZXJpYSI6IHRydWUsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IFNlcCAxNyIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODQ2In1dLCAiZnJvbV9sYXQiOiAzNS40NSwgImZyb21fbG9uIjogMi44NywgInRvX2xhdCI6IDI1LjM0LCAidG9fbG9uIjogNTUuMzl9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIk1pbmVyYWxueWUgVm9keSIsICJ0b19jaXR5IjogIkNvbnN0YW50aW5lIiwgImNvdW50IjogMiwgImFtYmlndW91cyI6IHRydWUsICJ0b3VjaGVzX2FsZ2VyaWEiOiB0cnVlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNSBEZWMgMSIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2NTAyIn0sIHsiZGF0ZSI6ICIyMDI1IERlYyAxMyIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2NTAyIn1dLCAiZnJvbV9sYXQiOiA0NC4yMiwgImZyb21fbG9uIjogNDMuMDgsICJ0b19sYXQiOiAzNi4zNywgInRvX2xvbiI6IDYuNjF9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIkNvbnN0YW50aW5lIiwgInRvX2NpdHkiOiAiWWVrYXRlcmluYnVyZyIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiB0cnVlLCAidG91Y2hlc19hbGdlcmlhIjogdHJ1ZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjUgRGVjIDIyIiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY1MDIifV0sICJmcm9tX2xhdCI6IDM2LjM3LCAiZnJvbV9sb24iOiA2LjYxLCAidG9fbGF0IjogNTYuODQsICJ0b19sb24iOiA2MC42fSwgeyJhaXJsaW5lcyI6IFsiR2VsaXggQWlybGluZXMiXSwgImZyb21fY2l0eSI6ICJBbGdpZXJzIiwgInRvX2NpdHkiOiAiQWluIE91c3NlcmEiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogdHJ1ZSwgInRvdWNoZXNfYWxnZXJpYSI6IHRydWUsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IERlYyAyNSIsICJhaXJsaW5lIjogIkdlbGl4IEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2MzYwIn1dLCAiZnJvbV9sYXQiOiAzNi43NCwgImZyb21fbG9uIjogMy4wNiwgInRvX2xhdCI6IDM1LjQ1LCAidG9fbG9uIjogMi44N30sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiQWluIE91c3NlcmEiLCAidG9fY2l0eSI6ICJNaW5lcmFsbnllIFZvZHkiLCAiY291bnQiOiAxLCAiYW1iaWd1b3VzIjogdHJ1ZSwgInRvdWNoZXNfYWxnZXJpYSI6IHRydWUsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IERlYyAzMCIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODQ2In1dLCAiZnJvbV9sYXQiOiAzNS40NSwgImZyb21fbG9uIjogMi44NywgInRvX2xhdCI6IDQ0LjIyLCAidG9fbG9uIjogNDMuMDh9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIk1pbmVyYWxueWUgVm9keSIsICJ0b19jaXR5IjogIlRlaHJhbiIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiB0cnVlLCAidG91Y2hlc19hbGdlcmlhIjogZmFsc2UsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI1IERlYyAzMSIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODQ2In1dLCAiZnJvbV9sYXQiOiA0NC4yMiwgImZyb21fbG9uIjogNDMuMDgsICJ0b19sYXQiOiAzNS42OCwgInRvX2xvbiI6IDUxLjQyfSwgeyJhaXJsaW5lcyI6IFsiQXZpYWNvbiBaaXRvdHJhbnMiXSwgImZyb21fY2l0eSI6ICJNaW5lcmFsbnllIFZvZHkiLCAidG9fY2l0eSI6ICJMYWdob3VhdCIsICJjb3VudCI6IDEsICJhbWJpZ3VvdXMiOiB0cnVlLCAidG91Y2hlc19hbGdlcmlhIjogdHJ1ZSwgImZsaWdodHMiOiBbeyJkYXRlIjogIjIwMjYgSmFuIDE2IiwgImFpcmxpbmUiOiAiQXZpYWNvbiBaaXRvdHJhbnMiLCAiYWlyY3JhZnRfdHlwZSI6ICJJbC03NiIsICJhaXJjcmFmdF9yZWciOiAiUkEtNzY4MzQifV0sICJmcm9tX2xhdCI6IDQ0LjIyLCAiZnJvbV9sb24iOiA0My4wOCwgInRvX2xhdCI6IDMzLjc2LCAidG9fbG9uIjogMi45M30sIHsiYWlybGluZXMiOiBbIkF2aWFjb24gWml0b3RyYW5zIl0sICJmcm9tX2NpdHkiOiAiQW5uYWJhIEFpciBCYXNlIiwgInRvX2NpdHkiOiAiTWluZXJhbG55ZSBWb2R5IiwgImNvdW50IjogMiwgImFtYmlndW91cyI6IHRydWUsICJ0b3VjaGVzX2FsZ2VyaWEiOiB0cnVlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNiBNYXIgMjgiLCAiYWlybGluZSI6ICJBdmlhY29uIFppdG90cmFucyIsICJhaXJjcmFmdF90eXBlIjogIklsLTc2IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS03Njg0MiJ9LCB7ImRhdGUiOiAiMjAyNiBBcHIgMiIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODQyIn1dLCAiZnJvbV9sYXQiOiAzNi44MywgImZyb21fbG9uIjogNy44MSwgInRvX2xhdCI6IDQ0LjIyLCAidG9fbG9uIjogNDMuMDh9LCB7ImFpcmxpbmVzIjogWyJBdmlhY29uIFppdG90cmFucyJdLCAiZnJvbV9jaXR5IjogIkFubmFiYSBBaXIgQmFzZSIsICJ0b19jaXR5IjogIkZ1amFpcmFoIiwgImNvdW50IjogMSwgImFtYmlndW91cyI6IHRydWUsICJ0b3VjaGVzX2FsZ2VyaWEiOiB0cnVlLCAiZmxpZ2h0cyI6IFt7ImRhdGUiOiAiMjAyNiBBcHIgNSIsICJhaXJsaW5lIjogIkF2aWFjb24gWml0b3RyYW5zIiwgImFpcmNyYWZ0X3R5cGUiOiAiSWwtNzYiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTc2ODQyIn1dLCAiZnJvbV9sYXQiOiAzNi44MywgImZyb21fbG9uIjogNy44MSwgInRvX2xhdCI6IDI1LjExLCAidG9fbG9uIjogNTYuMzR9LCB7ImFpcmxpbmVzIjogWyJWb2xnYS1EbmVwciBBaXJsaW5lcyJdLCAiZnJvbV9jaXR5IjogIkFsZ2llcnMiLCAidG9fY2l0eSI6ICJOaWFtZXkiLCAiY291bnQiOiA1LCAiYW1iaWd1b3VzIjogdHJ1ZSwgInRvdWNoZXNfYWxnZXJpYSI6IHRydWUsICJmbGlnaHRzIjogW3siZGF0ZSI6ICIyMDI2IEFwciAyMSIsICJhaXJsaW5lIjogIlZvbGdhLURuZXByIEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiQW4tMTI0IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS04MjA3OSJ9LCB7ImRhdGUiOiAiMjAyNiBBcHIgMjMiLCAiYWlybGluZSI6ICJWb2xnYS1EbmVwciBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIkFuLTEyNCIsICJhaXJjcmFmdF9yZWciOiAiUkEtODIwNzkifSwgeyJkYXRlIjogIjIwMjYgQXByIDI0IiwgImFpcmxpbmUiOiAiVm9sZ2EtRG5lcHIgQWlybGluZXMiLCAiYWlyY3JhZnRfdHlwZSI6ICJBbi0xMjQiLCAiYWlyY3JhZnRfcmVnIjogIlJBLTgyMDc5In0sIHsiZGF0ZSI6ICIyMDI2IEFwciAyNiIsICJhaXJsaW5lIjogIlZvbGdhLURuZXByIEFpcmxpbmVzIiwgImFpcmNyYWZ0X3R5cGUiOiAiQW4tMTI0IiwgImFpcmNyYWZ0X3JlZyI6ICJSQS04MjA3OSJ9LCB7ImRhdGUiOiAiMjAyNiBBcHIgMjciLCAiYWlybGluZSI6ICJWb2xnYS1EbmVwciBBaXJsaW5lcyIsICJhaXJjcmFmdF90eXBlIjogIkFuLTEyNCIsICJhaXJjcmFmdF9yZWciOiAiUkEtODIwNzkifV0sICJmcm9tX2xhdCI6IDM2Ljc0LCAiZnJvbV9sb24iOiAzLjA2LCAidG9fbGF0IjogMTMuNTEsICJ0b19sb24iOiAyLjEyfV07CmNvbnN0IE5PREVTICA9IFt7ImNpdHkiOiAiU29jaGkiLCAiY291bnQiOiAyMCwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDQzLjYsICJsb24iOiAzOS43M30sIHsiY2l0eSI6ICJBbGdpZXJzIiwgImNvdW50IjogOTEsICJpbl9hbGdlcmlhIjogdHJ1ZSwgImxhdCI6IDM2Ljc0LCAibG9uIjogMy4wNn0sIHsiY2l0eSI6ICJNb3Njb3ciLCAiY291bnQiOiA1OSwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDU1Ljc1LCAibG9uIjogMzcuNjJ9LCB7ImNpdHkiOiAiTm91YWtjaG90dCIsICJjb3VudCI6IDE2LCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogMTguMDgsICJsb24iOiAtMTUuOTd9LCB7ImNpdHkiOiAiQ2FyYWNhcyIsICJjb3VudCI6IDE2LCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogMTAuNDksICJsb24iOiAtNjYuODh9LCB7ImNpdHkiOiAiQnVzaGVociIsICJjb3VudCI6IDEsICJpbl9hbGdlcmlhIjogZmFsc2UsICJsYXQiOiAyOC45NywgImxvbiI6IDUwLjgzfSwgeyJjaXR5IjogIk5vdm9zaWJpcnNrIiwgImNvdW50IjogNDIsICJpbl9hbGdlcmlhIjogZmFsc2UsICJsYXQiOiA1NS4wMSwgImxvbiI6IDgyLjkzfSwgeyJjaXR5IjogIk1leGljbyBDaXR5IiwgImNvdW50IjogMiwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDE5LjQzLCAibG9uIjogLTk5LjEzfSwgeyJjaXR5IjogIlVseWFub3ZzayIsICJjb3VudCI6IDksICJpbl9hbGdlcmlhIjogZmFsc2UsICJsYXQiOiA1NC4zMiwgImxvbiI6IDQ4LjM3fSwgeyJjaXR5IjogIktvbXNvbW9sc2stb24tQW11ciIsICJjb3VudCI6IDEyLCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogNTAuNTUsICJsb24iOiAxMzcuMDF9LCB7ImNpdHkiOiAiVWxhbi1VZGUiLCAiY291bnQiOiAxMiwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDUxLjgzLCAibG9uIjogMTA3LjYxfSwgeyJjaXR5IjogIk91bSBFbCBCb3VhZ2hpIEFpciBCYXNlIiwgImNvdW50IjogMTYsICJpbl9hbGdlcmlhIjogdHJ1ZSwgImxhdCI6IDM1Ljg3LCAibG9uIjogNy4xMX0sIHsiY2l0eSI6ICJBc3RyYWtoYW4iLCAiY291bnQiOiAzLCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogNDYuMzUsICJsb24iOiA0OC4wM30sIHsiY2l0eSI6ICJIeWRlcmFiYWQiLCAiY291bnQiOiAxLCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogMTcuMzksICJsb24iOiA3OC40OX0sIHsiY2l0eSI6ICJNdW1iYWkiLCAiY291bnQiOiA3LCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogMTkuMDksICJsb24iOiA3Mi44N30sIHsiY2l0eSI6ICJUYXJheiIsICJjb3VudCI6IDEsICJpbl9hbGdlcmlhIjogZmFsc2UsICJsYXQiOiA0Mi45LCAibG9uIjogNzEuMzd9LCB7ImNpdHkiOiAiVXJ1bXFpIiwgImNvdW50IjogMywgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDQzLjgzLCAibG9uIjogODcuNjJ9LCB7ImNpdHkiOiAiTml6aG5ldmFydG92c2siLCAiY291bnQiOiAxLCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogNjAuOTMsICJsb24iOiA3Ni41N30sIHsiY2l0eSI6ICJNaW5lcmFsbnllIFZvZHkiLCAiY291bnQiOiA5MywgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDQ0LjIyLCAibG9uIjogNDMuMDh9LCB7ImNpdHkiOiAiRnVqYWlyYWgiLCAiY291bnQiOiA1LCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogMjUuMTEsICJsb24iOiA1Ni4zNH0sIHsiY2l0eSI6ICJUaWFuamluIiwgImNvdW50IjogMiwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDM5LjM0LCAibG9uIjogMTE3LjM2fSwgeyJjaXR5IjogIkJsYWdvdmVzY2hjaGVuc2siLCAiY291bnQiOiAxLCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogNTAuMjcsICJsb24iOiAxMjcuNTR9LCB7ImNpdHkiOiAiTGFyaW5vIEFpciBCYXNlIiwgImNvdW50IjogMiwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDQ4LjI3LCAibG9uIjogNDEuNH0sIHsiY2l0eSI6ICJCbGFnb3Zlc2hjaGVuc2siLCAiY291bnQiOiAxLCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogNTAuMjcsICJsb24iOiAxMjcuNTR9LCB7ImNpdHkiOiAiSXN0YW5idWwiLCAiY291bnQiOiA1LCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogNDEuMDEsICJsb24iOiAyOC45N30sIHsiY2l0eSI6ICJQb3J0IFN1ZGFuIiwgImNvdW50IjogNCwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDE5LjU3LCAibG9uIjogMzcuMjJ9LCB7ImNpdHkiOiAiS2lnYWxpIiwgImNvdW50IjogMSwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IC0xLjk0LCAibG9uIjogMzAuMDZ9LCB7ImNpdHkiOiAiQ29uYWtyeSIsICJjb3VudCI6IDEwLCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogOS41NCwgImxvbiI6IC0xMy42OH0sIHsiY2l0eSI6ICJNdWx0YW4iLCAiY291bnQiOiAxLCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogMzAuMiwgImxvbiI6IDcxLjQzfSwgeyJjaXR5IjogIkJha3UiLCAiY291bnQiOiAyLCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogNDAuNDEsICJsb24iOiA0OS44N30sIHsiY2l0eSI6ICJCcmFzaWxpYSIsICJjb3VudCI6IDIsICJpbl9hbGdlcmlhIjogZmFsc2UsICJsYXQiOiAtMTUuOCwgImxvbiI6IC00Ny45M30sIHsiY2l0eSI6ICJTYW50YSBDcnV6IiwgImNvdW50IjogMiwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IC0xNy44LCAibG9uIjogLTYzLjE4fSwgeyJjaXR5IjogIkJvZ290YSIsICJjb3VudCI6IDEsICJpbl9hbGdlcmlhIjogZmFsc2UsICJsYXQiOiA0LjcxLCAibG9uIjogLTc0LjA3fSwgeyJjaXR5IjogIkJvZ28iLCAiY291bnQiOiAxLCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogNC43MSwgImxvbiI6IC03NC4wN30sIHsiY2l0eSI6ICJUb2x1Y2EiLCAiY291bnQiOiA0LCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogMTkuMjgsICJsb24iOiAtOTkuNjV9LCB7ImNpdHkiOiAiSGF2YW5hIiwgImNvdW50IjogNiwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDIzLjEzLCAibG9uIjogLTgyLjM4fSwgeyJjaXR5IjogIkFubmFiYSBBaXIgQmFzZSIsICJjb3VudCI6IDExLCAiaW5fYWxnZXJpYSI6IHRydWUsICJsYXQiOiAzNi44MywgImxvbiI6IDcuODF9LCB7ImNpdHkiOiAiSmFpcHVyIiwgImNvdW50IjogMiwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDI2LjkxLCAibG9uIjogNzUuNzl9LCB7ImNpdHkiOiAiRGhha2EiLCAiY291bnQiOiAxLCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogMjMuNzIsICJsb24iOiA5MC40MX0sIHsiY2l0eSI6ICJEYWxhbWFuIiwgImNvdW50IjogMiwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDM2LjcxLCAibG9uIjogMjguNzl9LCB7ImNpdHkiOiAiSXJrdXRzayIsICJjb3VudCI6IDE1LCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogNTIuMjgsICJsb24iOiAxMDQuMjh9LCB7ImNpdHkiOiAiRHp5bW9naSBBaXIgQmFzZSIsICJjb3VudCI6IDMsICJpbl9hbGdlcmlhIjogZmFsc2UsICJsYXQiOiA1MC41NSwgImxvbiI6IDEzNy4wMX0sIHsiY2l0eSI6ICJEenlvbWdpIEFpciBCYXNlIiwgImNvdW50IjogMywgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDUwLjU1LCAibG9uIjogMTM3LjAxfSwgeyJjaXR5IjogIlllbHRzb3ZrYSBBaXIgQmFzZSwgTm92b3NpYmlyc2siLCAiY291bnQiOiAyMCwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDU0LjkzLCAibG9uIjogODIuOTd9LCB7ImNpdHkiOiAiTmlhbWV5IiwgImNvdW50IjogMTEsICJpbl9hbGdlcmlhIjogZmFsc2UsICJsYXQiOiAxMy41MSwgImxvbiI6IDIuMTJ9LCB7ImNpdHkiOiAiT3VhZ2RvdWdvdSIsICJjb3VudCI6IDYsICJpbl9hbGdlcmlhIjogZmFsc2UsICJsYXQiOiAxMi4zNywgImxvbiI6IC0xLjUyfSwgeyJjaXR5IjogIkthbm8iLCAiY291bnQiOiAxLCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogMTIuMCwgImxvbiI6IDguNTJ9LCB7ImNpdHkiOiAiQWluIE91c2VyYSIsICJjb3VudCI6IDEsICJpbl9hbGdlcmlhIjogdHJ1ZSwgImxhdCI6IDM1LjQ1LCAibG9uIjogMi44N30sIHsiY2l0eSI6ICJBaW4gT3Vzc2VyYSIsICJjb3VudCI6IDksICJpbl9hbGdlcmlhIjogdHJ1ZSwgImxhdCI6IDM1LjQ1LCAibG9uIjogMi44N30sIHsiY2l0eSI6ICJSaXlhZGgiLCAiY291bnQiOiA2LCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogMjQuNjksICJsb24iOiA0Ni43Mn0sIHsiY2l0eSI6ICJUcmFiem9uIiwgImNvdW50IjogMSwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDQxLjAsICJsb24iOiAzOS43M30sIHsiY2l0eSI6ICJHb2EiLCAiY291bnQiOiAyLCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogMTUuMzgsICJsb24iOiA3My44OH0sIHsiY2l0eSI6ICJTaGFyamFoIiwgImNvdW50IjogMiwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDI1LjM0LCAibG9uIjogNTUuMzl9LCB7ImNpdHkiOiAiRHViYWkiLCAiY291bnQiOiAxNSwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDI1LjIsICJsb24iOiA1NS4yN30sIHsiY2l0eSI6ICJCaXNoa2VrIiwgImNvdW50IjogMiwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDQyLjg3LCAibG9uIjogNzQuNTl9LCB7ImNpdHkiOiAiTWFyeSIsICJjb3VudCI6IDEsICJpbl9hbGdlcmlhIjogZmFsc2UsICJsYXQiOiAzNy42LCAibG9uIjogNjEuODN9LCB7ImNpdHkiOiAiQWRkaXMgQWJhYmEiLCAiY291bnQiOiAxLCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogOS4wMSwgImxvbiI6IDM4Ljc2fSwgeyJjaXR5IjogIkFidWphIiwgImNvdW50IjogMiwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDkuMDcsICJsb24iOiA3LjQ5fSwgeyJjaXR5IjogIkFjY3JhIiwgImNvdW50IjogMiwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDUuNTUsICJsb24iOiAtMC4yfSwgeyJjaXR5IjogIktpbnNoYXNhIiwgImNvdW50IjogMiwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IC00LjMyLCAibG9uIjogMTUuMzJ9LCB7ImNpdHkiOiAiTmFpcm9iaSIsICJjb3VudCI6IDEsICJpbl9hbGdlcmlhIjogZmFsc2UsICJsYXQiOiAtMS4yOCwgImxvbiI6IDM2LjgyfSwgeyJjaXR5IjogIkFsZ2llcmEiLCAiY291bnQiOiAxLCAiaW5fYWxnZXJpYSI6IHRydWUsICJsYXQiOiAzNi43NCwgImxvbiI6IDMuMDZ9LCB7ImNpdHkiOiAiTmFiZXJlemhueWUgQ2hlbG55IiwgImNvdW50IjogMSwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDU1LjcyLCAibG9uIjogNTIuMzh9LCB7ImNpdHkiOiAiWWVyZXZhbiIsICJjb3VudCI6IDIsICJpbl9hbGdlcmlhIjogZmFsc2UsICJsYXQiOiA0MC4xOCwgImxvbiI6IDQ0LjUxfSwgeyJjaXR5IjogIkRha2FyIiwgImNvdW50IjogMiwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDE0LjcyLCAibG9uIjogLTE3LjQ3fSwgeyJjaXR5IjogIlJhYmF0IiwgImNvdW50IjogNCwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDM0LjAyLCAibG9uIjogLTYuODN9LCB7ImNpdHkiOiAiRW50ZWJiZSIsICJjb3VudCI6IDIsICJpbl9hbGdlcmlhIjogZmFsc2UsICJsYXQiOiAwLjA1LCAibG9uIjogMzIuNDR9LCB7ImNpdHkiOiAiTWFuYWd1YSIsICJjb3VudCI6IDIsICJpbl9hbGdlcmlhIjogZmFsc2UsICJsYXQiOiAxMi4xMywgImxvbiI6IC04Ni4yOH0sIHsiY2l0eSI6ICJZZWthdGVyaW5idXJnIiwgImNvdW50IjogMywgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDU2Ljg0LCAibG9uIjogNjAuNn0sIHsiY2l0eSI6ICJWbGFkaXZvc3RvayIsICJjb3VudCI6IDIsICJpbl9hbGdlcmlhIjogZmFsc2UsICJsYXQiOiA0My4xMiwgImxvbiI6IDEzMS44OX0sIHsiY2l0eSI6ICJJcmt1dHNrIE5vcnRod2VzdCBBaXJwb3J0IiwgImNvdW50IjogOCwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDUyLjM1LCAibG9uIjogMTA0LjJ9LCB7ImNpdHkiOiAiQ29uc3RhbnRpbmUiLCAiY291bnQiOiA1LCAiaW5fYWxnZXJpYSI6IHRydWUsICJsYXQiOiAzNi4zNywgImxvbiI6IDYuNjF9LCB7ImNpdHkiOiAiQWNoaW5zayIsICJjb3VudCI6IDEsICJpbl9hbGdlcmlhIjogZmFsc2UsICJsYXQiOiA1Ni4yNywgImxvbiI6IDkwLjV9LCB7ImNpdHkiOiAiVHVuaXMiLCAiY291bnQiOiAxLCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogMzYuODEsICJsb24iOiAxMC4xOH0sIHsiY2l0eSI6ICJBa3RhdSIsICJjb3VudCI6IDIsICJpbl9hbGdlcmlhIjogZmFsc2UsICJsYXQiOiA0My42NSwgImxvbiI6IDUxLjE3fSwgeyJjaXR5IjogIlVmYSIsICJjb3VudCI6IDQsICJpbl9hbGdlcmlhIjogZmFsc2UsICJsYXQiOiA1NC43NCwgImxvbiI6IDU1Ljk3fSwgeyJjaXR5IjogIkNoaXRhIiwgImNvdW50IjogMywgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDUyLjAzLCAibG9uIjogMTEzLjV9LCB7ImNpdHkiOiAiTGFnaG91YXQiLCAiY291bnQiOiAzLCAiaW5fYWxnZXJpYSI6IHRydWUsICJsYXQiOiAzMy43NiwgImxvbiI6IDIuOTN9LCB7ImNpdHkiOiAiVGVocmFuIiwgImNvdW50IjogMiwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDM1LjY4LCAibG9uIjogNTEuNDJ9LCB7ImNpdHkiOiAiS2F6YW4iLCAiY291bnQiOiAxLCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogNTUuOCwgImxvbiI6IDQ5LjExfSwgeyJjaXR5IjogIlpoZW5nemhvdSIsICJjb3VudCI6IDIsICJpbl9hbGdlcmlhIjogZmFsc2UsICJsYXQiOiAzNC43NSwgImxvbiI6IDExMy42Mn0sIHsiY2l0eSI6ICJUdXJrbWVuYmFzaGkiLCAiY291bnQiOiAyLCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogNDAuMDcsICJsb24iOiA1My4wMX0sIHsiY2l0eSI6ICJEYW1tYW0iLCAiY291bnQiOiAyLCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogMjYuNDMsICJsb24iOiA1MC4xfSwgeyJjaXR5IjogIkNhaXJvIiwgImNvdW50IjogNCwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDMwLjA2LCAibG9uIjogMzEuMjV9LCB7ImNpdHkiOiAiQmVjaGFyIiwgImNvdW50IjogNCwgImluX2FsZ2VyaWEiOiB0cnVlLCAibGF0IjogMzEuNjcsICJsb24iOiAtMi4yNX0sIHsiY2l0eSI6ICJTdC4gUGV0ZXJzYnVyZyIsICJjb3VudCI6IDQsICJpbl9hbGdlcmlhIjogZmFsc2UsICJsYXQiOiA1OS45NSwgImxvbiI6IDMwLjMyfSwgeyJjaXR5IjogIktoYWJhcm92c2siLCAiY291bnQiOiAyLCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogNDguNDgsICJsb24iOiAxMzUuMDh9LCB7ImNpdHkiOiAiU2FtYW5hIiwgImNvdW50IjogNCwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDE5LjIxLCAibG9uIjogLTY5LjMzfSwgeyJjaXR5IjogIlNhbiBBbnRvbmlvIGRlIGxvcyBCYVx1MDBmMW9zIEFpciBCYXNlIiwgImNvdW50IjogMiwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDIyLjg3LCAibG9uIjogLTgyLjV9LCB7ImNpdHkiOiAiQ2FzYWJsYW5jYSIsICJjb3VudCI6IDIsICJpbl9hbGdlcmlhIjogZmFsc2UsICJsYXQiOiAzMy41NywgImxvbiI6IC03LjU5fSwgeyJjaXR5IjogIk11cm1hbnNrIiwgImNvdW50IjogMiwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDY4Ljk3LCAibG9uIjogMzMuMDd9LCB7ImNpdHkiOiAiQmFyYW52aWN5IiwgImNvdW50IjogMSwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDUzLjEzLCAibG9uIjogMjYuMDJ9LCB7ImNpdHkiOiAiT3JhbiIsICJjb3VudCI6IDIsICJpbl9hbGdlcmlhIjogdHJ1ZSwgImxhdCI6IDM1LjY5LCAibG9uIjogLTAuNjN9LCB7ImNpdHkiOiAiT3VtIGVsIEJvdWFnaGkgQWlyIEJhc2UiLCAiY291bnQiOiAyLCAiaW5fYWxnZXJpYSI6IHRydWUsICJsYXQiOiAzNS44NywgImxvbiI6IDcuMTF9LCB7ImNpdHkiOiAiQWJha2FuIiwgImNvdW50IjogMiwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDUzLjcyLCAibG9uIjogOTEuNDF9LCB7ImNpdHkiOiAiWWFub3ZvIEFpciBCYXNlIiwgImNvdW50IjogMiwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDUyLjEzLCAibG9uIjogMjQuNTZ9LCB7ImNpdHkiOiAiRGVsaGkiLCAiY291bnQiOiAxLCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogMjguNjEsICJsb24iOiA3Ny4yMX0sIHsiY2l0eSI6ICJZZWx0c292a2EgQWlyIEJhc2UiLCAiY291bnQiOiA3LCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogNTQuOTMsICJsb24iOiA4Mi45N30sIHsiY2l0eSI6ICJBaW4gT3Vzc2VyYSBBaXIgYmFzZSIsICJjb3VudCI6IDEsICJpbl9hbGdlcmlhIjogdHJ1ZSwgImxhdCI6IDM1LjQ1LCAibG9uIjogMi44N30sIHsiY2l0eSI6ICJBaW4gT3Vzc2VyYSBBaXIgQmFzZSIsICJjb3VudCI6IDEsICJpbl9hbGdlcmlhIjogdHJ1ZSwgImxhdCI6IDM1LjQ1LCAibG9uIjogMi44N30sIHsiY2l0eSI6ICJWb2xnb2dyYWQiLCAiY291bnQiOiAxLCAiaW5fYWxnZXJpYSI6IGZhbHNlLCAibGF0IjogNDguNzEsICJsb24iOiA0NC41MX0sIHsiY2l0eSI6ICJMYWdob3VhdCBBaXIgQmFzZSIsICJjb3VudCI6IDUsICJpbl9hbGdlcmlhIjogdHJ1ZSwgImxhdCI6IDMzLjc2LCAibG9uIjogMi45M30sIHsiY2l0eSI6ICJEYXNvZ3V6IiwgImNvdW50IjogNCwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDQxLjg0LCAibG9uIjogNTkuOTd9LCB7ImNpdHkiOiAiSGFpa291IiwgImNvdW50IjogMSwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDIwLjA0LCAibG9uIjogMTEwLjM0fSwgeyJjaXR5IjogIktyYXNub3lhcnNrIiwgImNvdW50IjogMiwgImluX2FsZ2VyaWEiOiBmYWxzZSwgImxhdCI6IDU2LjAxLCAibG9uIjogOTIuODZ9XTsKCmNvbnN0IENPTE9SUyA9IHsKICAnR2VsaXggQWlybGluZXMnOiAgICAgICcjNGZiM2MwJywKICAnQXZpYWNvbiBaaXRvdHJhbnMnOiAgICcjZjBiNDI5JywKICAnVm9sZ2EtRG5lcHIgQWlybGluZXMnOicjZTA1ZjVmJywKICAnbXVsdGlwbGUnOiAgICAgICAgICAgICcjYjA3OGQ0JywKfTsKZnVuY3Rpb24gZ2V0Q29sb3IoYWlybGluZXMpIHsKICByZXR1cm4gYWlybGluZXMubGVuZ3RoID09PSAxID8gKENPTE9SU1thaXJsaW5lc1swXV0gfHwgJyNhYWEnKSA6IENPTE9SU1snbXVsdGlwbGUnXTsKfQoKY29uc3QgbWFwID0gTC5tYXAoJ21hcCcsIHsgY2VudGVyOlszMCwyMF0sIHpvb206Mywgem9vbUNvbnRyb2w6dHJ1ZSB9KTsKTC50aWxlTGF5ZXIoJ2h0dHBzOi8ve3N9LmJhc2VtYXBzLmNhcnRvY2RuLmNvbS9kYXJrX2FsbC97en0ve3h9L3t5fXtyfS5wbmcnLCB7CiAgYXR0cmlidXRpb246JyZjb3B5OyA8YSBocmVmPSJodHRwczovL3d3dy5vcGVuc3RyZWV0bWFwLm9yZy9jb3B5cmlnaHQiPk9wZW5TdHJlZXRNYXA8L2E+ICZjb3B5OyA8YSBocmVmPSJodHRwczovL2NhcnRvLmNvbS9hdHRyaWJ1dGlvbnMiPkNBUlRPPC9hPicsCiAgc3ViZG9tYWluczonYWJjZCcsIG1heFpvb206MTkKfSkuYWRkVG8obWFwKTsKCmZ1bmN0aW9uIGFyY1BvaW50cyhsYXQxLGxvbjEsbGF0Mixsb24yLG49NjAsY3Vydj0wLjI1KSB7CiAgbGV0IGxvMT1sb24xLGxvMj1sb24yOwogIGlmIChNYXRoLmFicyhsbzItbG8xKT4xODApIHsgaWYobG8yPmxvMSkgbG8xKz0zNjA7IGVsc2UgbG8yKz0zNjA7IH0KICBjb25zdCBtTGF0PShsYXQxK2xhdDIpLzIsIG1Mb249KGxvMStsbzIpLzI7CiAgY29uc3QgZGxhdD1sYXQyLWxhdDEsZGxvbj1sbzItbG8xLGxlbj1NYXRoLnNxcnQoZGxhdCpkbGF0K2Rsb24qZGxvbil8fDE7CiAgY29uc3QgY0xhdD1tTGF0KygtZGxvbi9sZW4qY3VydipsZW4pLCBjTG9uPW1Mb24rKGRsYXQvbGVuKmN1cnYqbGVuKTsKICBjb25zdCBwdHM9W107CiAgZm9yKGxldCBpPTA7aTw9bjtpKyspewogICAgY29uc3QgdD1pL247CiAgICBsZXQgbGF0PSgxLXQpKigxLXQpKmxhdDErMiooMS10KSp0KmNMYXQrdCp0KmxhdDI7CiAgICBsZXQgbG9uPSgxLXQpKigxLXQpKmxvMSsyKigxLXQpKnQqY0xvbit0KnQqbG8yOwogICAgd2hpbGUobG9uPjE4MClsb24tPTM2MDsgd2hpbGUobG9uPC0xODApbG9uKz0zNjA7CiAgICBwdHMucHVzaChbbGF0LGxvbl0pOwogIH0KICByZXR1cm4gcHRzOwp9CgpsZXQgbWluRmxpZ2h0cz0xLCBmb2N1c0NpdHk9bnVsbCwgcm91dGVMYXllcnM9W10sIG5vZGVMYXllcnM9W107CmNvbnN0IHRvb2x0aXA9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2x0aXAnKTsKCmZ1bmN0aW9uIGJ1aWxkVGlwKHIpIHsKICBjb25zdCBjb2xvcj1nZXRDb2xvcihyLmFpcmxpbmVzKTsKICBjb25zdCBjb25mPXIuYW1iaWd1b3VzCiAgICA/JzxzcGFuIHN0eWxlPSJjb2xvcjojODg4Ij4mIzk2NTE7IFVuY2VydGFpbiAvIGluZmVycmVkPC9zcGFuPicKICAgIDonPHNwYW4gc3R5bGU9ImNvbG9yOiM2ZGFhNDUiPiYjMTAwMDM7IENvbmZpcm1lZDwvc3Bhbj4nOwogIGNvbnN0IGFsZ1RhZz1yLnRvdWNoZXNfYWxnZXJpYT8nICZuYnNwOzxzcGFuIHN0eWxlPSJjb2xvcjojZjdjOTQ4Ij4mIzk3MzM7IEFsZ2VyaWE8L3NwYW4+JzonJzsKICBjb25zdCB0eXBlcz1bLi4ubmV3IFNldChyLmZsaWdodHMubWFwKGY9PmYuYWlyY3JhZnRfdHlwZSkpXS5qb2luKCcsICcpOwogIGxldCBoPWA8ZGl2IGNsYXNzPSJ0dC1yb3V0ZSI+JHtyLmZyb21fY2l0eX0gJnJhcnI7ICR7ci50b19jaXR5fTwvZGl2PmA7CiAgaCs9YDxkaXYgY2xhc3M9InR0LWFpcmxpbmUiIHN0eWxlPSJjb2xvcjoke2NvbG9yfSI+JHtyLmFpcmxpbmVzLmpvaW4oJywgJyl9PC9kaXY+YDsKICBoKz1gPGRpdiBjbGFzcz0idHQtbWV0YSI+JHt0eXBlc30gJm1pZGRvdDsgJHtyLmNvdW50fSBmbGlnaHQke3IuY291bnQ+MT8ncyc6Jyd9PC9kaXY+YDsKICBoKz1gPGRpdiBjbGFzcz0idHQtbWV0YSI+JHtjb25mfSR7YWxnVGFnfTwvZGl2PmA7CiAgcmV0dXJuIGg7Cn0KCmZ1bmN0aW9uIHJlbmRlckFsbCgpIHsKICByb3V0ZUxheWVycy5mb3JFYWNoKG89Pm8ubGF5ZXIucmVtb3ZlKCkpOyByb3V0ZUxheWVycz1bXTsKICBub2RlTGF5ZXJzLmZvckVhY2gobz0+by5sYXllci5yZW1vdmUoKSk7ICBub2RlTGF5ZXJzPVtdOwoKICBjb25zdCBzaG93R2VsaXg9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NiLWdlbGl4JykuY2hlY2tlZDsKICBjb25zdCBzaG93QXY9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NiLWF2aWFjb24nKS5jaGVja2VkOwogIGNvbnN0IHNob3dWRD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2ItdmQnKS5jaGVja2VkOwogIGNvbnN0IGFsZ09ubHk9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NiLWFsZ2VyaWEtb25seScpLmNoZWNrZWQ7CiAgY29uc3QgaGlkZUFtYj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2ItaGlkZS1hbWInKS5jaGVja2VkOwogIGNvbnN0IGFmPW5ldyBTZXQoKTsKICBpZihzaG93R2VsaXgpIGFmLmFkZCgnR2VsaXggQWlybGluZXMnKTsKICBpZihzaG93QXYpICAgIGFmLmFkZCgnQXZpYWNvbiBaaXRvdHJhbnMnKTsKICBpZihzaG93VkQpICAgIGFmLmFkZCgnVm9sZ2EtRG5lcHIgQWlybGluZXMnKTsKCiAgY29uc3QgZm9jdXNDaXRpZXM9bmV3IFNldCgpOwogIGlmKGZvY3VzQ2l0eSkgewogICAgUk9VVEVTLmZvckVhY2gocj0+ewogICAgICBpZihyLmZyb21fY2l0eT09PWZvY3VzQ2l0eXx8ci50b19jaXR5PT09Zm9jdXNDaXR5KXsKICAgICAgICBmb2N1c0NpdGllcy5hZGQoci5mcm9tX2NpdHkpOyBmb2N1c0NpdGllcy5hZGQoci50b19jaXR5KTsKICAgICAgfQogICAgfSk7CiAgfQoKICBsZXQgc2hvd249MDsKICBST1VURVMuZm9yRWFjaChyPT57CiAgICBpZighci5haXJsaW5lcy5zb21lKGE9PmFmLmhhcyhhKSkpIHJldHVybjsKICAgIGlmKGFsZ09ubHkmJiFyLnRvdWNoZXNfYWxnZXJpYSkgcmV0dXJuOwogICAgaWYoaGlkZUFtYiYmci5hbWJpZ3VvdXMpIHJldHVybjsKICAgIGlmKHIuY291bnQ8bWluRmxpZ2h0cykgcmV0dXJuOwogICAgaWYoZm9jdXNDaXR5JiZyLmZyb21fY2l0eSE9PWZvY3VzQ2l0eSYmci50b19jaXR5IT09Zm9jdXNDaXR5KSByZXR1cm47CgogICAgY29uc3QgY29sb3I9Z2V0Q29sb3Ioci5haXJsaW5lcyk7CiAgICBjb25zdCB3ZWlnaHQ9TWF0aC5taW4oMStyLmNvdW50KjAuNiw1KTsKICAgIGNvbnN0IG9wYWNpdHk9ci50b3VjaGVzX2FsZ2VyaWE/MC44NTowLjIyOwogICAgY29uc3QgcHRzPWFyY1BvaW50cyhyLmZyb21fbGF0LHIuZnJvbV9sb24sci50b19sYXQsci50b19sb24pOwogICAgY29uc3QgbGluZT1MLnBvbHlsaW5lKHB0cyx7Y29sb3Isd2VpZ2h0LG9wYWNpdHksZGFzaEFycmF5OnIuYW1iaWd1b3VzPyc2IDQnOm51bGwsc21vb3RoRmFjdG9yOjF9KTsKCiAgICBsaW5lLm9uKCdtb3VzZW92ZXInLGZ1bmN0aW9uKCl7CiAgICAgIHJvdXRlTGF5ZXJzLmZvckVhY2gobz0+eyBpZihvLmxheWVyIT09bGluZSkgby5sYXllci5zZXRTdHlsZSh7b3BhY2l0eTowLjA0fSk7IH0pOwogICAgICBsaW5lLnNldFN0eWxlKHtvcGFjaXR5OjEsd2VpZ2h0OndlaWdodCsxLjV9KTsKICAgICAgdG9vbHRpcC5zdHlsZS5kaXNwbGF5PSdibG9jayc7CiAgICAgIHRvb2x0aXAuaW5uZXJIVE1MPWJ1aWxkVGlwKHIpOwogICAgfSk7CiAgICBsaW5lLm9uKCdtb3VzZW1vdmUnLGZ1bmN0aW9uKGUpewogICAgICB0b29sdGlwLnN0eWxlLmxlZnQ9KGUub3JpZ2luYWxFdmVudC5jbGllbnRYKzE1KSsncHgnOwogICAgICB0b29sdGlwLnN0eWxlLnRvcD0oZS5vcmlnaW5hbEV2ZW50LmNsaWVudFktMTApKydweCc7CiAgICB9KTsKICAgIGxpbmUub24oJ21vdXNlb3V0JyxmdW5jdGlvbigpewogICAgICByb3V0ZUxheWVycy5mb3JFYWNoKG89Pm8ubGF5ZXIuc2V0U3R5bGUoe29wYWNpdHk6by5kZWZhdWx0T3BhY2l0eSx3ZWlnaHQ6by53ZWlnaHR9KSk7CiAgICAgIHRvb2x0aXAuc3R5bGUuZGlzcGxheT0nbm9uZSc7CiAgICB9KTsKCiAgICBsaW5lLmFkZFRvKG1hcCk7CiAgICByb3V0ZUxheWVycy5wdXNoKHtsYXllcjpsaW5lLGRlZmF1bHRPcGFjaXR5Om9wYWNpdHksd2VpZ2h0LHJ9KTsKICAgIHNob3duKys7CiAgfSk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0YXQtcm91dGVzJykudGV4dENvbnRlbnQ9c2hvd247CgogIE5PREVTLmZvckVhY2gobj0+ewogICAgY29uc3QgaXNBbGc9bi5pbl9hbGdlcmlhOwogICAgY29uc3QgaW5Gb2N1cz0hZm9jdXNDaXR5fHxmb2N1c0NpdGllcy5oYXMobi5jaXR5KTsKICAgIGNvbnN0IGZhZGVPcD1pbkZvY3VzPyhpc0FsZz8wLjk1OjAuODApOjAuMTI7CiAgICBjb25zdCBjaXJjbGU9TC5jaXJjbGVNYXJrZXIoW24ubGF0LG4ubG9uXSx7CiAgICAgIHJhZGl1czppc0FsZz9NYXRoLm1heCg0LE1hdGgubWluKDExLDMrbi5jb3VudCowLjQpKTpNYXRoLm1heCgyLE1hdGgubWluKDYsMS41K24uY291bnQqMC4yKSksCiAgICAgIGNvbG9yOmlzQWxnPycjZjdjOTQ4JzonIzg4ODg4OCcsCiAgICAgIGZpbGxDb2xvcjppc0FsZz8nI2Y3Yzk0OCc6JyM4ODg4ODgnLAogICAgICBmaWxsT3BhY2l0eTpmYWRlT3Asd2VpZ2h0OmlzQWxnPzEuNTowLjUsb3BhY2l0eTpmYWRlT3AKICAgIH0pOwogICAgY2lyY2xlLmJpbmRUb29sdGlwKGlzQWxnP2A8YiBzdHlsZT0iY29sb3I6I2Y3Yzk0OCI+JHtuLmNpdHl9PC9iPmA6YDxiPiR7bi5jaXR5fTwvYj5gLHtkaXJlY3Rpb246J3RvcCcscGVybWFuZW50OmZhbHNlfSk7CiAgICBjaXJjbGUub24oJ2NsaWNrJyxmdW5jdGlvbigpewogICAgICBmb2N1c0NpdHk9Zm9jdXNDaXR5PT09bi5jaXR5P251bGw6bi5jaXR5OwogICAgICB1cGRhdGVGb2N1c0Jhbm5lcigpOwogICAgICByZW5kZXJBbGwoKTsKICAgIH0pOwogICAgY2lyY2xlLmFkZFRvKG1hcCk7CiAgICBub2RlTGF5ZXJzLnB1c2goe2xheWVyOmNpcmNsZSxjaXR5Om4uY2l0eX0pOwogIH0pOwp9CgpmdW5jdGlvbiB1cGRhdGVGb2N1c0Jhbm5lcigpewogIGNvbnN0IGI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZvY3VzLWJhbm5lcicpOwogIGlmKGZvY3VzQ2l0eSl7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZm9jdXMtbGFiZWwnKS50ZXh0Q29udGVudD0nU2hvd2luZyByb3V0ZXMgdGhyb3VnaDogJytmb2N1c0NpdHk7CiAgICBiLnN0eWxlLmRpc3BsYXk9J2ZsZXgnOwogIH1lbHNle2Iuc3R5bGUuZGlzcGxheT0nbm9uZSc7fQp9Cgpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZm9jdXMtY2xlYXInKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsKCk9Pntmb2N1c0NpdHk9bnVsbDt1cGRhdGVGb2N1c0Jhbm5lcigpO3JlbmRlckFsbCgpO30pOwpkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcucGlsbCcpLmZvckVhY2goYnRuPT57CiAgYnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbigpewogICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnBpbGwnKS5mb3JFYWNoKGI9PmIuY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJykpOwogICAgdGhpcy5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTsKICAgIG1pbkZsaWdodHM9cGFyc2VJbnQodGhpcy5kYXRhc2V0Lm1pbik7CiAgICByZW5kZXJBbGwoKTsKICB9KTsKfSk7ClsnY2ItZ2VsaXgnLCdjYi1hdmlhY29uJywnY2ItdmQnLCdjYi1hbGdlcmlhLW9ubHknLCdjYi1oaWRlLWFtYiddLmZvckVhY2goaWQ9PnsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJyxyZW5kZXJBbGwpOwp9KTsKCnJlbmRlckFsbCgpOwo8L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+"></iframe>
</p><p>Algiers bought 73% of its weapons from Russia between 2018 and 2022, and though the share of Russian-origin weapons has declined in recent years, Russia remains Algeria’s top supplier of arms, according to data from the Stockholm International Peace Research Institute. The country has recently placed several large orders for new aircraft, including the ones manufactured at the very sites the cargo aircraft tracked for this investigation frequently visited. </p><p>Since the start of Russia’s invasion of Ukraine and the imposition of harsh Western sanctions as a result, government-affiliated airlines have grown in importance for the Kremlin. In its “Shadow Airlines” investigation, Defense News has tracked about a dozen operators and manually retraced thousands of flight routes, providing a first-of-its-kind comprehensive picture of this unreported underworld. This article is the first in a multi-part series that uncovers this peculiar network of front companies, airlines and Soviet-era freight planes that move Russian weapons and influence around the world.</p><p>Defense News tracked Russian cargo flights to the Oum El Bouaghi Air Base, Ain Oussera Air Base, Annaba Air Base, Laghouat Air Base and Béchar in Algeria, among other destinations. </p><p>Some flights may also have touched down in other parts of Algeria, but many of the aircraft appeared to be involved in tracking-evasion techniques such as turning off their ADS-B transponders or misdeclaring airports in their itineraries. Particularly flights heading south out of Algiers, the capital and a key hub for the shadow airlines, frequently dropped off ADS-B tracking radars even though other nearby aircraft remained within coverage.</p><p>According to an air cargo industry insider, who wished to remain unnamed to speak freely, this is a known evasion technique deliberately employed by pilots. It also matches other clandestine flights that Defense News has tracked.</p><p>Aircraft were frequently observed visiting key Russian fighter jet production sites shortly before heading to Algeria. For instance, Algeria-bound aircraft visited Komsomolsk-on-Amur, the sole production site for both the Su-57 and Su-35, at least a dozen times during the period investigated. There were also at least eight flights through Irkutsk Northwest airport, which is central to the Su-30 production line. At least 28 flights relating to Algeria went through Yeltsovka Airport near Novosibirsk, which is the only facility producing and maintaining the Su-34 frontline bomber. Algeria is known to operate or have ordered all of these aircraft and is the first foreign buyer for several of them. </p><p>Within Russia, the airport of Mineralnye Vody – a civilian installation with a runway nearly 4,000 meters long – plays a key role in the logistics supply chain on these Algeria flights. About two-thirds of all flights landed here from other Russian destinations before heading onward to Algeria. The airport, located in the North Caucasus, Russia’s far southwestern edge, is a convenient staging location as it minimizes the flight distance between the motherland and destinations in Africa and the Middle East.</p><h3>The workhorse</h3><p>The Ilyushin Il-76, the workhorse of these shadow airline operators, typically has a range of around 5,000 kilometers when reasonably loaded. That limits Russia’s power projection abilities without access to intermediary airports for refueling, which are hard to come by given Russia’s current status as a pariah in much of the world. </p><p>Data collected by Defense News suggests that Algeria may not only be a destination but also a transit spot for Russian military equipment or support flowing elsewhere into Africa. Between July and September, two Il-76 planes operated by Gelix Airlines, RA-76373 and RA-76360, made eight return flights between Russia and Conakry, Guinea, by way of Algiers. </p><img src="https://archetype-military-times-prod.web.arc-cdn.net/resizer/v2/f9EV6K5MHRcJltw9YVfJP3zC95E=/cloudfront-us-east-1.images.arcpublishing.com/archetype/SZF7V3OCWZAPLD3YRAHRWQJNDU.png" alt="An Antonov 124 and an Ilyushin 76 of Russia's "shadow airlines" fleet are pictured parking at Algiers Airport in Algeria on April 18, 2026. (Planet Labs/provided by James Martin Center for Nonproliferation Studies. Annotations: Linus Höller/staff)" height="2250" width="3958"/><p>Guinea, a frequent onward destination from Algeria for the shadow airline fleet, has long been a key Russian-aligned country in West Africa, and ties have deepened further since a military junta took over in a coup in 2021. Russia is deeply involved in the country’s mining sector, especially for bauxite, and the country also serves as a key gateway for Russian weapons deliveries into the Sahel region.</p><p>In January 2025, <a href="https://www.lemonde.fr/en/international/article/2025/01/24/russia-delivers-armored-vehicles-to-mali-and-restructures-military-presence_6737390_4.html" target="_blank" rel="">Le Monde</a> documented that two sanctioned Russian cargo ships unloaded over 2,000 tons of military cargo, including light tanks and armored vehicles, at Conakry, from where the convoy then drove north to Mali.</p><p>Additionally, Algeria appears to serve as a gateway for Russia into the turbulent country of Niger, where Russian paramilitary forces have been active and the Kremlin has a deep web of interests, not least the country’s vast uranium deposits. An investigation by Italian newspaper Il Foglio from December 2025 showed an airlift operation was <a href="https://www.ilfoglio.it/esteri/2025/12/23/news/inside-russias-air-route-for-transporting-uranium-from-niger-via-libya-and-syria--118963" target="_blank" rel="">underway</a> to move many tons of uranium purchased by state-owned Rosatom from Niger to Russia.</p><p>In recent days, a super-heavy Antonov An-124 “Ruslan” aircraft operated by Volga-Dnepr Airlines started flying regular shuttles between Algiers and sub-Saharan Africa, with tracking data suggesting the destination was likely Niamey, the capital of Niger, although the transponder signal is spotty. Satellite imagery reviewed by Defense News shows a large aircraft with dimensions that match those of the An-124 parked at Niamey airport on at least two of the dates in question. </p><p>The An-124 is capable of carrying well over 100,000 kg in payload and is the world’s largest operational heavy-lift aircraft. </p><p>The aircraft in question, RA-82079, has flown the circuit between Algeria and Niger at least eight times since April 21, and remains in the area at the time of writing. It previously came to Algeria from the Irkutsk Northwest Airport, the assembly site for the Su-30 aircraft, by way of Mineralnye Vody and first landing in Africa at the Oum El Bouaghi air base, where one of Algeria’s Su-30 squadrons is based. From there, it leaped over to Algiers, where it sat for nine days before beginning the shuttle flights to Niger.</p><img src="https://archetype-military-times-prod.web.arc-cdn.net/resizer/v2/1m9y5hGHWnHU8EzPvCEAWZAfAJE=/cloudfront-us-east-1.images.arcpublishing.com/archetype/DUJV7IHRANCFZGVMYVZK42P2AI.png" alt="An Russian An-124 cargo aircraft sits at Niamey airport in Niger on April 26, 2026. (Planet Labs/provided by James Martin Center for Nonproliferation Studies. Annotations: Linus Höller/staff)" height="2250" width="2620"/><p>Three other An-124 aircraft operated by Volga-Dnepr have visited Algeria in the past year, including on unusual routes flying to military bases deep in the Algerian Sahara desert by way of Saudi Arabia and Egypt. </p><p>Algeria has also served as a stopover for intercontinental flight itineraries.</p><p>In March 2025, one of the same aircraft that flew to Guinea – RA-76373 – had stopped in Algeria and its southwesterly neighbor, Mauritania, on an unusual mission to and from Latin America, where it visited Venezuela and Mexico. Similarly, a plane with the tail number RA-78765 used Algiers and Conakry as stops on the way to a multi-hop tour of Latin America that took it through Brazil, Bolivia, Colombia, Venezuela, Mexico and Cuba, before returning to Russia by way of Venezuela, Mauritania and Annaba Air Base in northeastern Algeria. </p><p>On the route back to Russia, the United Arab Emirates – particularly Dubai, Sharjah and Fujairah – have emerged as common stops, appearing 25 times across multiple operators and aircraft types in the data. On several occasions, aircraft flew directly from Algerian military air bases to Emirati airports before returning to Russia or continuing onward to Central Asia, another key region for Russian sanctions evasion.</p><p>The United Arab Emirates itself has been identified in Western government reports and financial investigations as a key sanctions-evasion hub for Russian entities since 2022, offering financial infrastructure, a transshipment hub to obscure supply chains, and airspace access that Russia lacks elsewhere.</p><h3>‘Air Wagner’</h3><p>The flight patterns also point to a second type of activity entrusted to the shadow airlines: serving as the logistics arm for Russia’s paramilitary forces abroad, such as the former Wagner Group and current Africa Corps, the group’s successor. </p><p>Algiers appears to be a convenient staging ground for West African operations, and one that may be under less scrutiny than some other staging grounds previously used by Russia for supplying its mercenaries on the continent. Planes tracked for this investigation made frequent flights to the Algerian capital with only short stays there, and sometimes, aircraft operating on separate circuits converged in Algiers.</p><p>One of these airlines is Aviacon Zitotrans, which has been sanctioned by the United States, Canada and Ukraine. The U.S. Treasury Department, in an explanation accompanying the sanctions listing in 2023, said that “Aviacon Zitotrans has shipped military equipment such as rockets, warheads, and helicopter parts all over the world,” including to “Venezuela, Africa, and other locations.”</p><p>Candace Rondeaux, director of public intelligence firm Future Frontlines and the author of an authoritative book on the Wagner Group’s history, said she estimates at least half of the flights by airlines like Gelix and Aviacon Zitotrans are flown on behalf of the Kremlin’s State Property Management Office. That bureau lies outside the structures of the Ministry of Defense and is instead directly subordinate to the president of the Russian Federation, Vladimir Putin.</p><p>The Russian government operates two of its own, technically civilian, airlines: the 223rd and 224th Flight Units, which are also frequently used for special-mission air lifts. </p><p>According to the 224th Flight Unit’s English-language website, the Office of the President of the Russian Federation is the airline’s main customer. It also lists Rossiya Special Flight Unit, which is responsible primarily for VIP transport, Russia’s state-owned arms dealer Rosoboronexport, and the warplane maker MiG as “other major customers.”</p><img src="https://archetype-military-times-prod.web.arc-cdn.net/resizer/v2/5q3POa7NhWTVxAQngDXh9M2xNMg=/cloudfront-us-east-1.images.arcpublishing.com/archetype/YMWXKFI7AVB2FCMULGSC2H5PHU.PNG" alt="A Russian Il-76 aircraft flying for Gelix Airlines is pictured at Laghouat Air Base, Algeria, on Dec. 29, 2025. (Planet Labs/provided by James Martin Center for Nonproliferation Studies. Annotations: Linus Höller/staff)" height="2250" width="2621"/><p>While Russia’s air force and the 224th Flight Unit operate heavy Antonov and Ilyushin cargo aircraft in their own fleets, the use of charter airlines gives the Kremlin more capacity and easier access to civilian aviation procedures than flying government- or military-owned planes abroad, not to mention a layer of obfuscation and plausible deniability. </p><p>Analytics firm Dallas Analytics recently <a href="https://dallas-analytics.com/russias-shadow-airlift/" target="_blank" rel="">published</a> an investigation that included internal Russian government documents and Ministry of Defense air waybills, finding that Russia’s military aviation maintenance backbone is “collapsing due to sanctions and absent spare parts,” with repair facilities effectively insolvent and growing numbers of military aircraft grounded. </p><p>“By placing a portion of its fleet on the civil registry and painting them in standard commercial liveries, the Ministry of Defense exploits civil aviation protocols. This allows them to bypass diplomatic red tape and fly into crucial transit nodes like the UAE, Turkey, or various African states under the guise of civilian charter flights,” Dallas Analytics wrote in their report. </p><p>The report made public a series of original primary documents that prove the military nature of at least some of the flights, including ones predating the full-scale war in Ukraine. Among them are air waybills that confirm that Aviacon Zitotrans transported Russian military helicopters to Laos in November 2020 under explicit orders from the Russian Ministry of Defense, and a separate set of waybills shows the same airline executing shipments of defense electronics to China on behalf of two of Russia’s leading jet engine manufacturers. Dallas Analytics also published documents regarding the shipment of complete missile systems to India via Aviacon Zitotrans in late 2022. </p><p>These various airlines have traditionally served a key logistical function, particularly far from Russia’s shores, and were an integral part of the Wagner Group’s African operations, flying in personnel, weapons and gear, and flying out gold on behalf of the Corp’s former boss, Yevgeniy Prigozhin, said Rondeaux. </p><p>While the Wagner Group had its wings clipped after Prigozhin’s ill-fated coup attempt in the summer of 2023, the logistics networks and even many of the mercenary operations in sub-Saharan Africa have remained, if sometimes under new management. </p><p>“The media, even intelligence services, have bought this idea that the Wagner brand was dead, and therefore there’s no connectivity,” said Rondeaux. </p><p>“Nothing has changed about Russia’s need to circumvent sanctions. In fact, it’s become only more urgent to do so,” she added.</p><p>Garcia, the senior C4ADS analyst, said that in places like Mali, approximately 80% of the Africa Corps’ personnel had previously served with the Wagner Group. </p><p>Air carriers like those operating in Algeria are key to maintaining these semi-covert missions and serve as wet leasing companies, said Rondeaux. They “provide crews, they provide a flight plan ... essentially they manage the logistical arm of what we called Air Wagner.” </p><h3>Rapid growth</h3><p>Gelix Airlines has emerged as a key player in recent years, with many flights that raise questions about their purpose on unconventional routes to conflict zones. A combination of hopping around West African locations known to base Russian mercenaries and regular flights back to the Russian mainland should raise eyebrows, said Garcia. </p><img src="https://archetype-military-times-prod.web.arc-cdn.net/resizer/v2/784NXm5L8ZlkWapD72LWO1g4sHg=/cloudfront-us-east-1.images.arcpublishing.com/archetype/ABC47JOQNFBBNBU4BTQW6UPYXM.jpg" alt="Antonov An-124 cargo planes of the Russian Volga-Dnepr Group are parked at Leipzig/Halle Airport, Germany, on Feb. 19, 2026. The planes are no longer allowed to take off as EU airspace is closed to Russian aircraft. (Jan Woitas/picture alliance via Getty Images)" height="3718" width="5577"/><p>In an email interview with Defense News, Gelix CEO Vadim Baldin disputed the notion that there was no commercial demand on the routes flown by Gelix. </p><p>“Guinea, Somalia, Myanmar, Yeltsovka airports, and Irkutsk Northwest Airport − all of these are takeoff and landing points for our aircraft,” Baldin said, adding he was “not able to say anything specific” about the nature of the cargo, other than it was “not military.”</p><p>Baldin said Gelix flights “transport cars, machinery, and containers. In short, everything that can be legally loaded onto an Il-76.”</p><p>Asked about his company’s flights to United Aircraft Corporation-affiliated airports, he said that “we adhere to purely businesslike relationships with all participants in the air transportation market.”</p><p>Speaking to Russian business newspaper <a href="https://www.kommersant.ru/doc/8574459" target="_blank" rel="">Kommersant</a> on April 10, Baldin reported that 2025’s revenue surged more than twofold compared to the previous year. He attributed it to “flights to Latin American countries (Mexico, Venezuela) and a number of West African countries (Mauritania, Guinea),” the paper wrote. Flight hours tripled in 2025, and the upswing meant that Gelix is “seen and entrusted with complex tasks in difficult climatic conditions, which opens up access to new tenders,” Baldin said. </p><p>“The guys who come to us to find a job imagine that they will work in white shirts,” Baldin was quoted by a company social media account in the Russian VK social network in March. “But we have slightly different conditions.”</p><p>Speaking to Defense News, Baldin confirmed that “Algeria is indeed an important hub for international logistics,” but emphasized that “it is only one of 36 countries to which our airline flies.”</p><p>He said it was “absolutely correct” that Algeria plays a key role due to its location, which makes it a key refueling point and cargo logistics point to extend the Russian Ilyushins’ reach. </p><p>The company is used to executing a range of special missions. In August of last year, the firm became the third in Russia to be licensed to transport nuclear materials and radioactive substances aboard planes, <a href="http://pech.gosnadzor.ru/news/67/17881/" target="_blank" rel="">according</a> to the Russian government agency Rostekhnadzor.</p><p>“There is a certain demand for the delivery of equipment that contains radioactive elements to polar stations,” the CEO was quoted as saying at the time. </p><p>The company has existed since the 1990s, but for decades was only a helicopter operator focused on regional tourism and local air lifts. Then, in 2021, the company received three heavy-lift Ilyushin Il-76D aircraft from the state-owned diamond mining company Alrosa. The aircraft are fully owned by Gelix, Baldin confirmed. </p><p>The new aircraft were reportedly based in Ulyanovsk, the Russian “aviation capital,” rather than Gelix’s longstanding headquarters in Perm. And despite being built in the years immediately after the fall of the Soviet Union, the aircraft were retrofitted with the required gear specifically with an eye toward flying abroad, as Russian business journal Kommersant <a href="https://www.kommersant.ru/doc/4858689" target="_blank" rel="">reported</a>. In the same article, a Russian air freight director was cited as saying that the free market was currently “not the most favorable” for air cargo. </p><p>Operators flying the Ilyushin Il-76 are of particular interest to analysts, said analyst Garcia, as the aircraft type is renowned for having been used to transport weapons or troops. “We find them quite interesting when they’re taken on by private sector companies that are operating in areas that we know armed group activity occurs in,” she said. Gelix Airlines’ shift from decades of helicopter operations to long-haul Il-76 flights to unstable parts of the world stands out as a red flag, she said. </p><p>“Indeed, the life of Gelix Airlines has taken a dramatic turn since my arrival as director,” Baldin told Defense News in an email. </p><h3>Friends in high places</h3><p>Aviacon Zitotrans, the charter operator of the majority of the Russian flights to Algeria in the past year, has also been known to fly military equipment elsewhere on Russia’s behalf. Ahead of the U.S. intervention in Venezuela, an Aviacon Zitotrans-owned aircraft traveled to Venezuela, a story that was <a href="https://www.defensenews.com/global/the-americas/2025/10/28/heavy-russian-cargo-plane-lands-in-caracas-amid-us-venezuela-tensions/" target="_blank" rel="">first reported</a> by Defense News. Russian lawmakers later <a href="https://www.defensenews.com/global/the-americas/2026/02/02/russian-cargo-plane-arrives-in-cuba-echoing-frantic-caracas-buildup/" target="_blank" rel="">revealed</a> that air defense systems were aboard the aircraft. </p><p>Like the Wagner group, many of the shadow airlines appear to have grown out of legitimate businesses that have found a lucrative gig in serving the Kremlin’s more sensitive missions. Prigozhin famously started his career as a restaurateur who catered Putin’s events before he branched out into military logistics, private security for major state-affiliated enterprises, and from there, into the world of private military contractors. </p><p>And like the web of actors surrounding the private military contractor world in Russia, which is comprised of opportunists, military veterans, and security forces protecting the oil and gas industry, the shadow airlines world, too, bears the hallmarks of a tangled web. </p><p>On several occasions, for example, aircraft linked to the sanctioned Aviacon Zitotrans were spotted operating under Gelix callsigns, including while flying out of a military airbase in Ethiopia and St. Petersburg. </p><p>Asked about the discrepancy, Gelix’s CEO, Vadim Baldin, told Defense News that it was an artifact of the aircraft leasing model. Databases used by journalists, he said, don’t necessarily update fast enough to reflect who is operating aircraft that are merely leased to temporarily expand a fleet rather than owned by an airline. </p><p>The leaders of both companies appear well-established in the relevant political circles, and both have ties to the Russian Federation’s government. Baldin, who has led Gelix since 2020, represented the Russian Federation on the boards of two state-owned military-industrial companies – Special Design Bureau Salyut, a defense electronics manufacturer, and Design Bureau Gorizont, an avionics and special-purpose electronics maker – between 2014 and 2017, according to Russian bibliographical database viperson.ru. Both are subordinate to Minpromtorg, the Russian Ministry of Industry and Trade.</p><p>He has also posted on Telegram about awards for completing training with the ruling party’s United Russia Party Higher Party School and funding a monument for soldiers killed during the so-called “Special Military Operation,” the Russian government’s state-approved euphemism for the war in Ukraine. </p><p>Baldin, born in 1974, has previously served as the deputy chairman of the Expert Council of the Commission of the Russian Union of Industrialists and Entrepreneurs on the Military-Industrial Complex and aerospace-related advisory bodies. Combined with his educational and practical background in civil aviation, this placed him at the critical nexus between the military and civil worlds at which Russia’s shadow airlines operate. </p><p>Of Gelix’s flights tracked for this investigation, more than three-quarters stopped at Russian military aviation plants before heading to Algeria, more than any other operator. </p><p>The owner of Aviacon Zitotrans, Valery Savelyev, meanwhile, has served as a regional deputy for Putin’s “United Russia” ruling party. </p><p>Unlike Aviacon Zitotrans, Gelix Airlines, the operator that flew repeatedly via Algeria to West Africa, is not sanctioned by any country. </p><p>The Russian and Algerian governments, as well as Aviacon Zitotrans, did not immediately respond to a request for comment in time for publication. Volga-Dnepr Airlines acknowledged receipt of Defense News’ questions but did not provide answers by press time.</p>]]></content:encoded><media:thumbnail url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/EXPRS42VIFDKDPSKHXRXIFBJQQ.png" type="image/png"/><enclosure url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/EXPRS42VIFDKDPSKHXRXIFBJQQ.png" type="image/png"/><media:content url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/EXPRS42VIFDKDPSKHXRXIFBJQQ.png" type="image/png" height="1817" width="2423"><media:description type="plain"><![CDATA[The map shows flight paths of aircraft in Russia's shadow airline fleet converging in Algeria. (Linus Höller/staff;  Made with Leaflet; Map data (c) Open Street Map Contributors)]]></media:description></media:content></item><item><title><![CDATA[Golden Dome has ‘pathways to pivot’ if delays arise, general says]]></title><news:push>0</news:push><link>https://www.defensenews.com/news/your-military/2026/04/28/golden-dome-has-pathways-to-pivot-if-delays-arise-general-says/</link><category>Air Warfare</category><guid isPermaLink="true">https://www.defensenews.com/news/your-military/2026/04/28/golden-dome-has-pathways-to-pivot-if-delays-arise-general-says/</guid><dc:creator><![CDATA[Hope Hodge Seck]]></dc:creator><description><![CDATA[Gen. Michael Guetlein, the appointed czar for America's “Golden Dome” initiative, told lawmakers that plans to build the shield were proceeding apace.]]></description><pubDate>Tue, 28 Apr 2026 13:06:58 +0000</pubDate><content:encoded><![CDATA[<p>The Space Force general overseeing the White House’s ambitious $185 billion national missile shield initiative redoubled on promises to deliver an operational capability by mid-2028, even if it means changing plans and incorporating different technologies to do so.</p><p>Gen. Michael Guetlein, the appointed czar for the United States’ “Golden Dome” initiative, appeared before the Senate Armed Services Committee Monday, telling lawmakers that plans to build the shield were proceeding apace, despite concerns in Congress about its funding and a dearth of regular updates.</p><p>In January, Rep. Jeff Crank, R-Colo., the co-chair of the House Golden Dome Caucus, <a href="https://www.militarytimes.com/news/pentagon-congress/2026/01/23/white-house-golden-dome-delays-frustrating-to-key-lawmaker/" target="_blank" rel="">told Military Times</a> that he had found the wait for delivery of an actionable framework from the White House “frustrating” and worried missing the 2028 deadline would endanger the entire effort.</p><p>Guetlein said he had met with representatives from more than 400 potential contractors over the past six to eight months and believed the project was poised to deliver on time.</p><p>“We have built the foundation of Golden Dome upon a scalable, modular architecture, using affordable elements and taking advantage of competition innovation from industry to deliver those elements,” he said. “And we have scaled it so that it is multi-layered and integrated. If any component of the architecture cannot deliver on time, we have pathways to pivot away from that and embrace a different technology.”</p><p>While Guetlein did not elaborate on what such a pivot would look like, he said partnerships with industry were progressing quickly as the project advanced. Last week, he said, leaders had stood up an “ecosystem hub” that he described as a “one-stop shop” for doing business with Golden Dome.</p><p>“It’s a single point of entry. It includes two-way communications to have transparent dialog back and forth. It has strategic matchmaking,” he said. “I can connect them to anybody in the federal government that may be in need of their services or their capabilities. It has a security and resilience element to it.”</p><p>He added that the Pentagon had hired data analysis companies to stress-test supply chain resilience and anticipate threats so they can be thwarted before they arise.</p><p>“We are embracing industry like we’ve never embraced industry in the past,” Guetlein said.</p><p>Sen. Angus King, I-Maine, expressed doubt about the feasibility of delivering a comprehensive missile defense shield, even at the eye-watering cost of $185 billion. He noted that, according to the testimony of Army Gen. Francisco Lozano, portfolio acquisition executive for Fires, point defense of the U.S. territory of Guam alone cost $3.5 billion. </p><p>Guetlein said Guam’s Enhanced Integrated Air and Missile Defense System, which includes Patriot missile batteries, Terminal High Altitude Area Defense (THAAD) and Aegis weapons systems, and is expected to be fully operational by next year, is not an apt comparison to the networked defense that Golden Dome will represent.</p><p>“If you look at the way we fight the away game, every one of our weapon systems has to be self-contained, so that it can operate in a bare-bones environment, that it can operate independently, disconnected from the larger enterprise,” he said. “That is not the way we need to defend the United States.”</p><p>King asked the Golden Dome czar to get more specific about what the system would actually be.</p><p>“We are integrating and networking an array of effectors and an array of sensors using next-gen technology to get a greater magazine depth at a lower cost per intercept,” Guetlein said.</p><p>For one specific program, the Next-Generation Interceptor made by Lockheed Martin and under the purview of the Missile Defense Agency, work continues, said Air Force Gen. Health Collins, MDA’s director. The Pentagon initially asked MDA to start fielding interceptors by 2028, though Collins noted the program faced a “replan” 18 months ago due to concerns with the solid rocket motor.</p><p>By the end of 2026, he said, “We are on track for the all the ground full system critical design review to close the design phase of the next-gen interceptor program and completely move into the manufacturing and test phase of that as we drive towards the first first flight test in 2029.”</p><p>No major design issues remained, Collins said, although a few components including the solid rocket motor still needed to be debugged.</p><p>“We are working to buy down those risks and move forward as quickly as possible to make sure we pull the date as far to the left as possible,” he said.</p>]]></content:encoded><media:thumbnail url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/7AWZMQ7ZCZGYXP2T3TP47YWJRY.jpg" type="image/jpeg"/><enclosure url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/7AWZMQ7ZCZGYXP2T3TP47YWJRY.jpg" type="image/jpeg"/><media:content url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/7AWZMQ7ZCZGYXP2T3TP47YWJRY.jpg" type="image/jpeg" height="3610" width="4513"><media:description type="plain"><![CDATA[Gen. Michael Guetlein testifies during a House of Armed Services Committee hearing for fiscal year 2025 budget request. (Staff Sgt. Stuart Bright/Air Force)]]></media:description><media:credit role="author" scheme="urn:ebu">Tech. Sgt. Stuart Bright</media:credit></media:content></item><item><title><![CDATA[US Air Force looks to launch cheap missiles from cargo aircraft]]></title><news:push>0</news:push><link>https://www.defensenews.com/industry/techwatch/2026/04/27/us-air-force-looks-to-launch-cheap-missiles-from-cargo-aircraft/</link><category> / MilTech</category><guid isPermaLink="true">https://www.defensenews.com/industry/techwatch/2026/04/27/us-air-force-looks-to-launch-cheap-missiles-from-cargo-aircraft/</guid><dc:creator><![CDATA[Michael Peck]]></dc:creator><description><![CDATA[The U.S. Air Force wants inexpensive, long-range missiles that can be launched in mass volleys by cargo aircraft. ]]></description><pubDate>Mon, 27 Apr 2026 18:34:55 +0000</pubDate><content:encoded><![CDATA[<p>The U.S. Air Force wants inexpensive, long-range missiles that can be launched in mass volleys by cargo aircraft. </p><p>According to a recent <a href="https://sam.gov/workspace/contract/opp/0631b05628684ffc8f3375305beed9eb/view" target="_blank" rel="noreferrer" title="https://sam.gov/workspace/contract/opp/0631b05628684ffc8f3375305beed9eb/view">Request for Information</a>, Beyond Adversary’s Reach, Family of Affordable Mass Missiles, or FAMM-BAR, would be a common air-to-surface missile carried in pallets aboard cargo aircraft. The service envisions producing 1,000 to 2,000 missiles per year for five years. </p><p>The goal is to “streamline the battlespace by developing a single, common, air-to surface munition that is affordable, adaptable, and possesses significant standoff range,” the Air Force’s RFI reads.</p><p>The initial goal is an anti-ship missile with a range of at least 1,000 nautical missiles, a speed of at least 533 miles per hour and mid-course navigation. The RFI describes the target set as “slow moving maritime.” </p><p>However, FAMM-BAR seems to be exploring the possibility of a joint missile that can be launched from multiple types of platforms. The RFI mentions “long-range employment on fighter and additional aircraft” using lugged munitions, or weapons attached to an aircraft’s wings or inside a bomb bay. </p><p>It also asks contractors whether their design is suitable for “surface to surface by Army and Navy systems.” </p><p>Respondents to the RFI are asked to detail how they will “manage the aerodynamic and physical constraints for a weapon that must be both internally/externally lug mounted by fighters/bombers and deployed from a cargo pallet or for maritime operations on USN ships.” Other considerations include resistance to GPS jamming. </p><p>However, “this is not a request to change your current design to satisfy other services and strictly for information gathering nor is it a demand signal from the other services,” the RFI noted. </p><p>FAMM-BAR is a longer-range addition to the Air Force’s palletized <a href="https://aviationweek.com/defense/missile-defense-weapons/debrief-low-cost-missile-craze-targets-block-v-tomahawk-role" target="_blank" rel=""><u>FAMM-P</u></a> and lugged FAMM-L programs, which will have ranges of 250 to 500 nautical miles. The Air Force recently tested FAMM-L for compatibility with the <a href="https://www.eglin.af.mil/News/Article-Display/Article/4458059/test-team-rapidly-expands-f-16-readiness/" target="_blank" rel=""><u>F-16</u></a>. </p><p>The Air Force’s <a href="https://www.saffm.hq.af.mil/LinkClick.aspx?fileticket=tCHJmd9t66c%3d&amp;portalid=84/" target="_blank" rel="noreferrer" title="https://www.saffm.hq.af.mil/LinkClick.aspx?fileticket=tCHJmd9t66c%3d&amp;portalid=84/">fiscal 2027 budget</a> asks for $300 million in mandatory and $55 million in discretionary funds to purchase 1,000 FAMM missiles. </p><p>“Future increments will be defined based upon user demand and are likely to include a Beyond Line-of-Sight (BLOS), Extended Range (ER), Long-Range Kill Chain (LRKC) communications, different payloads, sub-systems or employment options, etc.,” the budget request noted. </p><p><a href="https://www.militarytimes.com/news/your-military/2026/03/27/us-uses-hundreds-of-tomahawk-missiles-on-iran-alarming-some-at-pentagon/">US uses hundreds of Tomahawk missiles on Iran, alarming some at Pentagon</a></p><p>The RFI comes as the U.S. has been expending missiles in the Iran War at a <a href="https://www.militarytimes.com/news/your-military/2026/03/27/us-uses-hundreds-of-tomahawk-missiles-on-iran-alarming-some-at-pentagon/" target="_blank" rel="noreferrer" title="https://www.militarytimes.com/news/your-military/2026/03/27/us-uses-hundreds-of-tomahawk-missiles-on-iran-alarming-some-at-pentagon/">prodigious</a> — and ultimately unsustainable — rate. </p><p><a href="https://www.militarytimes.com/news/your-military/2026/03/27/us-uses-hundreds-of-tomahawk-missiles-on-iran-alarming-some-at-pentagon/" target="_blank" rel="noreferrer" title="https://www.militarytimes.com/news/your-military/2026/03/27/us-uses-hundreds-of-tomahawk-missiles-on-iran-alarming-some-at-pentagon/">Experts worry</a> that the Middle East conflict is depleting American missile stockpiles so rapidly that the U.S. will lack sufficient munitions to defend Taiwan from Chinese invasion. </p>]]></content:encoded><media:thumbnail url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/E7ZLGMXF75DAVIDLG4XPX6CFSI.jpg" type="image/jpeg"/><enclosure url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/E7ZLGMXF75DAVIDLG4XPX6CFSI.jpg" type="image/jpeg"/><media:content url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/E7ZLGMXF75DAVIDLG4XPX6CFSI.jpg" type="image/jpeg" height="2244" width="3366"><media:description type="plain"><![CDATA[USS Delbert D. Black fires a Tomahawk Land Attack Missile in support of Operation Epic Fury, Feb. 28, 2026. (U.S. Navy)]]></media:description><media:credit role="author" scheme="urn:ebu">U.S. Navy Photo</media:credit></media:content></item><item><title><![CDATA[NATO eyes Swedish-Canadian jet for AWACS role in shift away from Boeing]]></title><news:push>0</news:push><link>https://www.defensenews.com/global/europe/2026/04/24/nato-eyes-swedish-canadian-jet-for-awacs-role-in-shift-away-from-boeing/</link><category> / Europe</category><guid isPermaLink="true">https://www.defensenews.com/global/europe/2026/04/24/nato-eyes-swedish-canadian-jet-for-awacs-role-in-shift-away-from-boeing/</guid><dc:creator><![CDATA[Linus Höller]]></dc:creator><description><![CDATA[The political momentum behind the GlobalEye had been building for a while.]]></description><pubDate>Fri, 24 Apr 2026 10:26:42 +0000</pubDate><content:encoded><![CDATA[<p>VIENNA — NATO’s Support and Procurement Agency has selected Sweden’s Saab and Canada’s Bombardier to replace the alliance’s aging fleet of Boeing E-3A Sentry airborne warning and control system aircraft with the GlobalEye platform, <a href="https://www.lalettre.fr/fr/politique_executif/2026/04/23/nato-snubs-boeing-and-picks-saab-for-new-awacs-surveillance-planes,110710423-art" target="_blank" rel="">according</a> to French defense publication La Lettre and confirmed independently by the German press agency DPA. </p><p>The decision, if formally announced, marks the first time since 1982 that a non-Boeing aircraft will serve as NATO’s common airborne surveillance backbone, and caps a procurement saga defined by American industrial dysfunction and growing European appetite for strategic autonomy.</p><p>The outcome was far from inevitable. As recently as November 2023, NATO had awarded the replacement contract to Boeing’s E-7A Wedgetail − without a competitive tender − on the grounds that it was the only available system meeting operational requirements in time. Saab CEO Micael Johansson publicly complained that the process had been “rushed” and that the alliance had already made up its mind before the GlobalEye offer even landed on NATO desks.</p><p>Washington’s own disengagement unraveled those plans. The U.S. Air Force dropped the E-7 from its fiscal 2026 spending plan in June 2025, citing delays, cost overruns, and survivability doubts in contested environments, and opting instead for space-based surveillance and additional E-2D Hawkeye aircraft. By November 2025, the Netherlands and the remaining European partners <a href="https://www.defensenews.com/global/europe/2025/11/13/european-nato-countries-scrap-plan-to-buy-boeing-e-7-wedgetail-awacs/" target="_blank" rel="">announced</a> they were scrapping the six-aircraft Wedgetail buy, with Dutch State Secretary for Defense Gijs Tuinman explicitly noting that the U.S. withdrawal underscored “the importance of investing as much as possible in European industry.”</p><p>The GlobalEye, built around Saab’s Erieye Extended Range active electronically scanned array radar mounted on a Bombardier Global 6000 or 6500 airframe, offers detection ranges exceeding 550 kilometers across air, sea, and land domains. NATO’s NSPA is reported to be eyeing between 10 and 12 aircraft at roughly €550 million ($643 million) per unit, a total acquisition value likely exceeding €5 billion ($5.84 billion) before sustainment, training, and infrastructure costs. Saab has claimed the platform can meet NATO’s 2031 operational target, or earlier.</p><p>The political momentum behind the GlobalEye had been building for a while. France signed a contract for two aircraft with options for two more in December 2025, and Johansson reported strong interest from Poland and Germany during Saab’s first-quarter 2026 earnings call. Canada is also weighing up to six GlobalEyes.</p><p>Still, the deal is not yet signed. Saab’s head of media relations, Mattias Rådström, told AeroTime that no contract had been formally concluded and that the award remained NATO’s to announce. Whether that changes the outcome at this stage seems unlikely. </p><p><i>Rudy Ruitenberg in Paris contributed to this report.</i></p>]]></content:encoded><media:thumbnail url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/3HG5PI6O2NGR3E4HKEA4OXBV7U.jpg" type="image/jpeg"/><enclosure url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/3HG5PI6O2NGR3E4HKEA4OXBV7U.jpg" type="image/jpeg"/><media:content url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/3HG5PI6O2NGR3E4HKEA4OXBV7U.jpg" type="image/jpeg" height="2666" width="4000"><media:description type="plain"><![CDATA[A Saab GlobalEye plane operated by the United Arab Emirates Air Force is on display at the Paris Air Show on June 16, 2025. (Matthieu Rondel/Bloomberg via Getty Images)]]></media:description><media:credit role="author" scheme="urn:ebu">Bloomberg</media:credit></media:content></item><item><title><![CDATA[Boeing lands Chinook without a pilot at the controls]]></title><news:push>0</news:push><link>https://www.defensenews.com/news/your-military/2026/04/20/boeing-lands-chinook-without-a-pilot-at-the-controls/</link><category> / MilTech</category><guid isPermaLink="true">https://www.defensenews.com/news/your-military/2026/04/20/boeing-lands-chinook-without-a-pilot-at-the-controls/</guid><dc:creator><![CDATA[Eve Sampson]]></dc:creator><description><![CDATA[Boeing used its A2X software to autonomously guide an Army CH-47 Chinook through its final approach and landing.]]></description><pubDate>Mon, 20 Apr 2026 17:50:43 +0000</pubDate><content:encoded><![CDATA[<p>A U.S. Army CH-47 Chinook has been successfully landed without a pilot at the controls, Boeing announced, in the latest sign of the service’s push toward autonomous aircraft. </p><p>The demonstration is part of a wider Army move to expand autonomy within its fleet, which included the recent <a href="https://www.militarytimes.com/news/your-military/2026/03/24/army-receives-first-pilot-optional-black-hawk-for-testing/" target="_blank" rel="">delivery</a> of a Black Hawk designed to fly with a reduced crew, or in some cases without a pilot onboard. </p><p>During the test, the Chinook used Boeing’s Approach-to-X, or A2X, software to autonomously guide the aircraft through its final approach and landing, according to a company <a href="https://www.boeing.com/features/2026/04/ch-47f-chinook-completes-first-supervised-autonomy-landing" target="_blank" rel="">statement</a> released last week.</p><p>The Army often uses the Chinook to transport heavy loads, and it can move troops, equipment and supplies. Though the aircraft entered service in the 1960s, it remains a core part of the Army’s fleet and was <a href="https://www.militarytimes.com/news/pentagon-congress/2026/02/25/army-helicopter-pilot-wounded-during-maduro-raid-receives-medal-of-honor-during-state-of-the-union/" target="_blank" rel="">used</a> in the <a href="https://www.militarytimes.com/news/your-military/2026/01/06/this-was-surgical-the-tactics-behind-the-maduro-mission/" target="_blank" rel="">raid</a> that captured Venezuelan President Nicolás Maduro. </p><p>With the A2X software, a pilot would first set critical parameters, including the landing zone, final altitude, approach angle and start speed. The software then steers the aircraft to the pre-determined point. Pilots are able to make adjustments as the aircraft flies, Boeing added, to react to changes in the environment. </p><p>The company has used A2X to complete over 150 approaches where the final altitude ranged from a 100-foot hover to the ground. The average final position error, Boeing said, was less than five feet.</p><p>The new capability is designed to reduce the pilot’s workload during key phases of flight — such as the approach and landing — and allow crews to focus on other parts of a mission. </p><p>“We built the interface and control laws around how pilots would naturally fly an approach,” said Deanna DiBernardi, the human factors engineering lead for Boeing’s H-47 program, adding “our goal is to reduce pilot workload so crews can maintain more eyes-out awareness in a tactical situation.”</p><p>Next, Boeing will hone the software before releasing it to the Army, the company said. The statement did not include a projected timeline. </p><p>Boeing’s new test follows the Army’s receipt of a pilot-optional Black Hawk, designated H-60Mx, that is equipped with “fly-by-wire” controls and autonomy systems that — like the Chinook software — allows for pilot input. </p><p>The Chinook and Black Hawk endeavors are moving alongside the Army’s work on its future long range assault aircraft, the MV-75 <a href="https://www.militarytimes.com/news/your-military/2026/04/15/new-army-assault-aircraft-named-cheyenne-ii/" target="_blank" rel="">“Cheyenne II,”</a> which is a tilt-rotor aircraft designed to fly faster and farther for use in the Pacific theater. </p>]]></content:encoded><media:thumbnail url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/Z36RDG3OIZFOROUTXJ2ASL7KOI.jpg" type="image/jpeg"/><enclosure url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/Z36RDG3OIZFOROUTXJ2ASL7KOI.jpg" type="image/jpeg"/><media:content url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/Z36RDG3OIZFOROUTXJ2ASL7KOI.jpg" type="image/jpeg" height="1200" width="1800"><media:description type="plain"><![CDATA[Riggers attach a sling load to a CH-47 Chinook helicopter during an airlift operation. (Sgt. 1st Class Brien Vorhees/U.S. Army)]]></media:description><media:credit role="author" scheme="urn:ebu">Sgt. 1st Class Brien Vorhees</media:credit></media:content></item><item><title><![CDATA[Combat search and rescue’s uncertain future: As A-10s phase out, US Air Force faces questions of what comes next]]></title><news:push>0</news:push><link>https://www.defensenews.com/news/your-military/2026/04/16/combat-search-and-rescues-uncertain-future-as-a-10s-phase-out-us-air-force-faces-questions-of-what-comes-next/</link><category>Air Warfare</category><guid isPermaLink="true">https://www.defensenews.com/news/your-military/2026/04/16/combat-search-and-rescues-uncertain-future-as-a-10s-phase-out-us-air-force-faces-questions-of-what-comes-next/</guid><dc:creator><![CDATA[Michael Scanlon]]></dc:creator><description><![CDATA[The U.S. Air Force is moving forward with plans to retire the A-10, which for decades has proven ideally suited for combat search-and-rescue operations.]]></description><pubDate>Thu, 16 Apr 2026 20:21:19 +0000</pubDate><content:encoded><![CDATA[<p>The callsign “Sandy,” used by U.S. Air Force aircraft and pilots conducting combat search-and-rescue operations, traces to late 1965. </p><p>Capt. J.W. “Doc” George, a U.S. Air Force A-1 Skyraider pilot, arrived at Udorn Royal Thai Air Force Base, Thailand, as part of a CSAR replacement rotation from Bien Hoa, South Vietnam. When asked what callsign his flight would use, he suggested the one he used at Bien Hoa: “Sandy.” </p><p>The name stuck, was passed to his replacement and soon became the standard callsign for all A-1 Skyraiders flying CSAR missions protecting downed aircrews.</p><p>The Sandy role was later transferred to the faster LTV A-7D Corsair II in 1972 as the last Skyraiders were withdrawn from Southeast Asia. However, the A-7 struggled in the role due to its higher maneuvering speeds, which made it less effective for low-and-slow visual searches and close helicopter escort than the A-1.</p><p>In the late 1970s, the Corsair passed the CSAR baton to the A-10 Thunderbolt II Warthog, which offered excellent loiter time, survivability and firepower suited to the mission. The A-10 airframe and its pilots still carry the “Sandy” callsign today.</p><p>As the Air Force accelerates plans to retire the A-10 Thunderbolt II by fiscal year 2029, the service faces a growing set of unanswered questions about what replaces it in combat search and rescue, one of the military’s most specialized mission sets. </p><p>More than an analysis of replacement aircraft and their capabilities, the transition raises concerns about the pilots in the cockpit, who for nearly five decades have received specialized training in the combat search-and -rescue mission and built trust within the CSAR community. With congressional oversight and legislation underscoring concerns about CSAR operational readiness, and on the heels of a CSAR mission over Iran that brought two F-15E airmen home, the stakes of those unanswered questions have taken on a new sense of urgency.</p><h2>Highly skilled Sandy pilots</h2><p>In the past several decades, A-10s have assumed the Sandy role in CSAR operations in the Gulf War, Iraq, Afghanistan, Kosovo and most recently in the <a href="https://www.militarytimes.com/news/your-military/2026/04/08/the-rescue-mission-that-brought-2-f-15e-strike-eagle-crew-members-home/" target="_blank" rel="noreferrer" title="https://www.militarytimes.com/news/your-military/2026/04/08/the-rescue-mission-that-brought-2-f-15e-strike-eagle-crew-members-home/">April 3, 2026, operation</a> that recovered two American F-15E Strike Eagle airmen from Iranian territory. One supporting A-10 sustained heavy battle damage during the mission; its pilot continued flying long enough to eject safely over Kuwait.</p><p>During an April 6, 2026, press conference detailing that mission, Gen. Dan Caine, chairman of the Joint Chiefs of Staff, described the role of a Sandy: “A Sandy has one mission: to get to the survivor, bring the rescue force forward, and put themselves between that survivor on the ground and the enemy,” Caine said. “They are committed to this. This is what they live for. And this is what they’ve trained for, for many, many years.”</p><p><a href="https://www.militarytimes.com/news/your-military/2026/04/08/the-rescue-mission-that-brought-2-f-15e-strike-eagle-crew-members-home/">The rescue mission that brought 2 F-15E Strike Eagle crew members home</a></p><p>Only the most experienced A-10 pilots are selected for Sandy qualification, which requires specialized training in CSAR tactics and procedures as part of a full CSAR task force, including HC-130 tankers and HH-60 helicopters.</p><p>This advanced training takes place primarily at Davis-Monthan Air Force Base, Arizona, home of the 357th Fighter Squadron, the Air Force’s formal A-10 training unit. Here, Sandy pilots participate in integrated exercises, local ranges and large-scale events like Angel Thunder, the Air Force’s largest and most comprehensive CSAR exercise. Additional operational integration takes place at Moody Air Force Base, Georgia.</p><p>In a typical four-ship A-10 Sandy CSAR formation, each aircraft has a specific role, <a href="https://apps.dtic.mil/sti/tr/pdf/ADA463724.pdf" target="_blank" rel="">according to USAF documents</a>. Sandy 1 is the lead pilot, serving as the rescue mission commander and on-scene commander, responsible for overall command, survivor authentication and threat suppression. Sandy 2 provides cover and backup leadership. Sandy 3 and Sandy 4 focus on the escort mission, protecting the HH-60 rescue helicopters throughout.</p><p>For nearly five decades, the A-10 has proven ideally suited for the Sandy role. </p><img src="https://archetype-military-times-prod.web.arc-cdn.net/resizer/v2/fKEi7329AfrIWuZyXU1yxFiOwL8=/cloudfront-us-east-1.images.arcpublishing.com/archetype/C3QJ5FRNUJBBHHAYA54BDW77IE.jpg" alt="A U.S. Air Force A-10 Thunderbolt II aircraft flies over the U.S. Central Command area of responsibility during Operation Epic Fury, March 9, 2026. (U.S. Air Force)" height="3663" width="5495"/><p>Still, the Air Force is moving forward with plans to <a href="https://www.airforcetimes.com/air/2023/03/09/us-air-force-wants-to-retire-all-a-10s-by-2029/?contentFeatureId=f0fmoahPVC2AbfL-2-1-8&amp;contentQuery=%7B%22includeSections%22%3A%22%2Fhome%22%2C%22excludeSections%22%3A%22%22%2C%22feedSize%22%3A10%2C%22feedOffset%22%3A395%7D" target="_blank" rel="noreferrer" title="https://www.airforcetimes.com/air/2023/03/09/us-air-force-wants-to-retire-all-a-10s-by-2029/?contentFeatureId=f0fmoahPVC2AbfL-2-1-8&amp;contentQuery=%7B%22includeSections%22%3A%22%2Fhome%22%2C%22excludeSections%22%3A%22%22%2C%22feedSize%22%3A10%2C%22feedOffset%22%3A395%7D">retire the A-10</a> by fiscal 2029. What replaces it in the Sandy role, and whether any other platform can replicate what the Warthog and A-10 Sandy-qualified pilots bring to the CSAR mission, are questions the service has not yet answered.</p><h2>CSAR in a world without Warthogs</h2><p>The Air Force has confirmed there is currently no formal or informal transition underway for the Sandy 1 rescue mission commander role — the on-scene command function of every CSAR operation — to any other specific airframe. </p><p>“Discussions are still ongoing regarding the use of multi-role platforms serving in the A-10’s Sandy 01 RMC role,” an Air Combat Command spokesperson said. The same applies to the Sandy 2, 3 and 4 escort roles, the spokesperson said.</p><p>The service’s stated transition strategy centers less on the aircraft and more on the expertise of A-10 pilots themselves, suggesting the F-35A as the likely destination platform for Sandy-qualified A-10 pilots. </p><p>“The Air Force is leveraging the extensive experience of its A-10 pilots to ensure a successful transition to other aircraft,” the 355th Wing Public Affairs office said. “A-10 pilots bring a wealth of expertise in close air support and combat search and rescue experience, which is invaluable as the A-10 continues to divest and they transition to 5th generation assets like the F-35.”</p><p>The service also acknowledged that standards for validating successor-platform performance in the CSAR mission are a work in progress. </p><p>The Pentagon “is carefully reexamining future Close Air Support and Combat Search and Rescue requirements,” the 355th Wing Public Affairs office said, “including how the Air Force will validate the effectiveness of its multi-role fighter fleet in performing all aspects of the CAS mission.”</p><p>No specialized Sandy qualification program for any successor platform, such as the one that existed for the A-10 for many years, has been confirmed to exist or be under development.</p><img src="https://archetype-military-times-prod.web.arc-cdn.net/resizer/v2/s0g0YmSWSHWsWmdp3Rq59dEgWis=/cloudfront-us-east-1.images.arcpublishing.com/archetype/OAGRZGBG4FGZ7GUQA4SQZ3DB2Y.jpg" alt="An A-10 Thunderbolt II student pilot performs pre-flight inspections on the flight line at Davis-Monthan Air Force Base, Arizona, 2022. (Staff Sgt. Alex Miller/Air Force)" height="3532" width="5309"/><p>Lt. Col. Joel Bier, a retired U.S. Air Force Weapons School instructor pilot and Sandy 1 instructor with more than 2,500 hours in the A-10, said the service’s transition strategy underestimates the complexity of the Sandy mission. </p><p>“No other pilots train to Close Air Support, Forward Air Control (Airborne), and Combat Search and Rescue with the ferocity of the A-10 community,” Bier said.</p><p>The challenge, Bier said, is not simply whether the F-35A, F-15E or F-16 airframes are capable of performing the Sandy mission, but whether the pilot is properly trained for it. </p><p>“A jack of all trades is master of none. Each of the fighter communities trains to a half-dozen or more equally complex missions, but CSAR is fundamentally different. It is friendly-centric and combines elements of air superiority and contingency planning at lower speeds and longer durations that fighter platforms do not routinely train to.”</p><h2>A-10 versus F-35</h2><p>In 2016, the Air Force conducted testing to evaluate potential Sandy replacements at the 422nd Test and Evaluation Squadron at Nellis Air Force Base, Nevada. Lt. Col. Joshua Wood, the squadron’s commander at the time and an F-35 pilot, was on record expressing skepticism about direct platform comparisons.</p><p>“When you try to have a comparative analysis of a single-mission platform like the A-10 against a platform like the F-35, which is fundamentally designed from the ground up to do something completely different,” Wood told <a href="https://medium.com/war-is-boring/f-35-test-pilot-dislikes-a-10-test-3ff832fb806b" target="_blank" rel="">Combat Aircraft magazine, as reported by War is Boring in 2016</a>, “you run the risk of drawing unrealistic conclusions.”</p><p>Still, Wood described what happened when a former A-10 Sandy 1 instructor who had recently cross-trained into the F-35 stepped into a lackluster CSAR exercise. </p><p>“No kidding, he shows up and within five minutes on station he’s quarterbacked the whole thing,” Wood told <a href="https://medium.com/war-is-boring/a-10s-and-f-35s-working-together-to-save-downed-pilots-9efc7f7dc576" target="_blank" rel="">the magazine</a>. “They’ve rescued the survivor and everyone goes home.” </p><p>Wood attributed the result not to the F-35’s capabilities, but to the pilot’s CSAR background and Sandy training. “I would say 75% is the pilot,” he said.</p><p>Bier said the test results underscored the importance of Sandy training more than the F-35’s suitability for the mission.</p><p>“Would the F-35 pilots have stepped in if an F-16 or F-15E CSAR test had been going smoothly? Would they have intervened at all if they weren’t both recent A-10 Weapons School graduates and Sandy 1 instructors who had only transferred to the F-35 six to nine months earlier? And in the decade since, has anyone in the F-35 community created a single new Sandy qualified for the mission? The answer to all three is no,” Bier said. </p><p>“Those F-35 pilots, who I personally know and respect, never even flew another CSAR in the F-35 outside that test environment — a fact that speaks volumes about how the Air Force has prioritized the Sandy transition plan," he added.</p><img src="https://archetype-military-times-prod.web.arc-cdn.net/resizer/v2/1yBiJ35sO-TdT0Unmb9341GsPe0=/cloudfront-us-east-1.images.arcpublishing.com/archetype/ORSNY4PUS5FZZL4EHLC6PJYDEY.jpg" alt="The U.S. Air Force's stated transition strategy suggests the F-35A as the likely destination platform for Sandy-qualified A-10 pilots. (Airman 1st Class Michael Sanders/Air Force)" height="1996" width="3000"/><p>A separate <a href="https://s3.documentcloud.org/documents/24036641/f-35a-and-a-10c-comparison-test.pdf" target="_blank" rel="">2022 Pentagon test report</a> comparing the F-35A and A-10C, obtained through Freedom of Information Act litigation, found that F-35A pilots reported a significantly higher workload than A-10C pilots in the forward air control mission, a role closely aligned with the on-scene command demands of Sandy. The report also noted that pilots from both aircraft found that the A-10C and F-35A performed more effectively together in contested CSAR than either platform did alone, pointing more toward a combined model than a direct replacement.</p><p>The test report was completed in February 2022, nearly three years after testing concluded in 2019. The report was finally made public more than six years after the tests took place — years after Congress had already begun approving the A-10 retirement the test was meant to inform.</p><h2>CSAR community trusts the Warthog</h2><p>The flight characteristics that define the Sandy mission present their own challenges for potential successor airframes. </p><p>“It’s fast enough to stay ahead of the rescue force, but slow enough to scour the ground for threats to it, and rugged enough to take hits from that threat when necessary,” Bier said of the Warthog.</p><p>The A-10’s unique capabilities extend to the rescue helicopter crews the Sandy pilots are tasked with protecting. </p><p>“A-10 Sandys serve HH-60W Jolly Green crews as their Rescue Escort — ensuring they arrive safely and with all the pertinent information at the downed aircrew,” Bier said. “Fighters will struggle to expose the small arms and AAA threats from medium altitude, while shifting to rotary wing fires sacrifices speed, armor and communications relay. These shortfalls increase risk to both the Jollys and the isolated personnel.”</p><p>The relationship between the A-10 and the accompanying CSAR aircraft is not incidental, Bier said, but rather by design. </p><p>“Calling the HH-60W or HC-130J flawed in the Sandy role is like saying the A-10 is deficient in the Jolly or Crown missions. It’s not intended as disrespect, nor is it a design flaw — it’s an intentional symbiosis. That’s precisely why Sandy, Jolly and Crown are synonymous with the CSAR mission.”</p><p>Lt. Col. Ryan Rutter, commander of the 357th Fighter Squadron at Davis-Monthan, described the relationship between the A-10 community and the rescue force in a <a href="https://www.dvidshub.net/news/562369/others-may-live-unwavering-commitment-air-force-combat-search-and-rescue" target="_blank" rel="">recent 355th Wing release</a>. </p><p>“The trust between the A-10 and the rest of the rescue community is absolute,” Rutter said. “They know we will do whatever it takes to protect them while they work to bring our teammates home.”</p><p>On April 3, 2026, the same day A-10s in the Sandy role helped recover Dude 44 Alpha from Iran, the <a href="https://www.dvidshub.net/image/9606132/final-10-graduation" target="_blank" rel="">357th Fighter Squadron graduated its last class</a> of A-10 pilots. </p><img src="https://archetype-military-times-prod.web.arc-cdn.net/resizer/v2/H7z_wrV98_N444WDzRiOkaCnSro=/cloudfront-us-east-1.images.arcpublishing.com/archetype/XSFFY5AP75GT7IX522RWXGRVSI.jpg" alt="The U.S. Air Force described these airmen as the "the final class of A-10C Thunderbolt II student pilots from the 357th Training Squadron." (Airman 1st Class Samantha Melecio/Air Force)" height="1996" width="3000"/><p>In official photo captions, the Air Force called the ceremony “the end of an era for A-10 training.” Air Combat Command confirmed the 357th is on track to inactivate in fiscal 2026, although specific timelines were not available.</p><p>Whether the closure of the 357th marks the end of the Sandy qualification pipeline entirely, or whether the Air Force plans to establish a similar program for successor platforms, remains unclear. Neither the 355th Wing nor Air Combat Command Public Affairs responded specifically to questions about the future of Sandy qualification training by the time of publication.</p><h2>Congressional oversight</h2><p>The fiscal 2026 <a href="https://armedservices.house.gov/uploadedfiles/fy26_ndaa_joint_explanatory_statement.pdf" target="_blank" rel="">National Defense Authorization Act</a>, signed into law in December 2025, was the latest in a series of congressional measures aimed at slowing the A-10’s retirement. The measure required the Air Force to deliver a detailed briefing to the House and Senate Armed Services Committees no later than March 31, 2026, on the status of A-10 aircraft inventory and the service’s transitional plan for divesting all A-10s prior to fiscal 2029.</p><p>That deadline has passed. The Secretary of the Air Force Public Affairs office could not confirm whether the briefing had been delivered. Rep. Austin Scott, R-Ga., a member of the House Armed Services Committee who has pushed to stave off the A-10 retirement, did not immediately respond to questions about whether the committee had received the briefing.</p><p>It is unclear whether the A-10’s recent effectiveness in Operation Epic Fury factors into the Air Force’s transition briefing or divestment plans.</p><p>The NDAA also mandated that the Air Force maintain a minimum inventory of 103 A-10s through Sept. 30, 2026, <a href="https://austinscott.house.gov/2025/7/rep-austin-scott-on-hasc-passage-of-fy26-ndaa" target="_blank" rel="">an amendment authored by Scott</a>, reflecting congressional concerns about the service’s transition planning and potential gaps in mission readiness.</p><p>In a statement provided to Defense News, Scott cited the A-10’s recent performance in Iran. </p><p>“For 50 years, the A-10 Warthog has reliably supported critical military missions. I was proud to lead an amendment in the FY26 NDAA blocking the premature retirement of A-10s currently in service today. Because the fleet is alive, the A-10 is proving why it’s critical to our forces, providing air power for freedom and leading the rescue efforts for our airmen that were recently secured from hostile forces in Iran,” Scott said. “I will continue to work diligently to ensure that our military is properly equipped with the best weapons systems available.”</p><img src="https://archetype-military-times-prod.web.arc-cdn.net/resizer/v2/fF6d3O2NCBHqe3p_kOFHJDKFUMM=/cloudfront-us-east-1.images.arcpublishing.com/archetype/JOZJ722D3FE2POGS6GXN2NRQM4.jpg" alt="Rep. Austin Scott, R-Ga., has attempted to delay the retirement of the A-10, citing concerns about the transition and mission readiness. (Samuel Corum/Getty Images)" height="3600" width="5397"/><p>Scott pressed the issue at an <a href="https://www.youtube.com/watch?v=OkqbLqlIxQY" target="_blank" rel="">April 15 HASC Subcommittee on Readiness hearing</a>, when he asked Gen. John Lamontagne, Vice Chief of Staff of the Air Force, what the service was doing to prepare for CSAR operations when the A-10 retires. </p><p>Lamontagne responded: “It’ll be a mix of platforms, just like it’s been a mix of platforms in the past with HH-60s and overhead folks doing that coordination role that the A-10s have done very well over the years.”</p><p>Scott noted that the HH-60 is a helicopter, the rescue platform, not the Sandy escort. Lamontagne clarified he had understood the question to be about CSAR broadly, rather than the fixed-wing Sandy escort role specifically.</p><p>Despite these unanswered questions, Lt. Col. Bier offered a potential path forward.</p><p>“If the Air Force proceeds with final A-10 divestment in fiscal year 2027, significant CAS and CSAR capabilities risk being lost due to the compressed timeline,” Bier said. “Extending the remaining A-10 squadrons until a viable replacement is identified offers a logical bridge.” </p><p>Bier noted that, barring congressional intervention, an indefinite extension is unlikely given the service’s well-documented intention to move on from the A-10.</p><p>Absent extending the A-10 platform, one of the multi-role fighters already slated to replace A-10 units would likely inherit the Sandy mission. But platform selection alone is not enough, he said.</p><p>“The key is selecting an aircraft to deliberately carve out dedicated squadrons with a Designed Operational Capability statement for the Sandy/CSAR mission,” Bier said. “This must include a dedicated training mandate — modeled on the A-10’s current Ready Aircrew Program tasking — and unique Air Force Specialty Codes to prevent diluting that training in the larger multi-role platform community. These actions protect the Sandy community from mission creep and preserve its unwavering commitment to the CSAR covenant: that others may live.”</p><p>Bier warned that the Air Force cannot afford to ignore the hard-won lessons of the past.</p><p>“As the old military saying goes, lessons are written in blood,” Bier said. “Sacrificing over 50 years of hard-won institutional knowledge dooms our future warriors to relearn them the hard way.”</p>]]></content:encoded><media:thumbnail url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/XIOM4EON7ZB5FJUKWRHQQLUHQE.jpg" type="image/jpeg"/><enclosure url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/XIOM4EON7ZB5FJUKWRHQQLUHQE.jpg" type="image/jpeg"/><media:content url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/XIOM4EON7ZB5FJUKWRHQQLUHQE.jpg" type="image/jpeg" height="1996" width="3000"><media:description type="plain"><![CDATA[The A-10 Thunderbolt II Warthog has performed combat search-and-rescue operations for nearly 50 years. As the U.S. Air Force retires the aircraft, what's next for CSAR remains unclear. (Tech. Sgt. Albert Valladares/Air Force)]]></media:description><media:credit role="author" scheme="urn:ebu">Tech. Sgt. Albert Valladares</media:credit></media:content></item><item><title><![CDATA[Money starts flowing for new GCAP fighter, as Britain sorts out finances]]></title><news:push>0</news:push><link>https://www.defensenews.com/global/europe/2026/04/02/money-starts-flowing-for-new-gcap-fighter-as-britain-sorts-out-finances/</link><category> / Europe</category><guid isPermaLink="true">https://www.defensenews.com/global/europe/2026/04/02/money-starts-flowing-for-new-gcap-fighter-as-britain-sorts-out-finances/</guid><dc:creator><![CDATA[Tom Kington]]></dc:creator><description><![CDATA[A source on the program told Defense News the new contract is a “bridge” allowing work to continue until the end of June.]]></description><pubDate>Thu, 02 Apr 2026 14:56:15 +0000</pubDate><content:encoded><![CDATA[<p>ROME — Italy, Japan and the U.K. have signed a stopgap contract to keep work going on their joint GCAP fighter program for three months, giving the U.K. time to free up more funding.</p><p>The joint program office created by the three nations announced the signing of a £686 million ($906 million) development contract on Thursday with Edgewing, the joint venture set up to develop the sixth-generation jet by local champions BAE Systems, Leonardo, and Japan Aircraft Industrial Enhancement Co. Ltd. (JAIEC).</p><p>“The £686 million contract invests in key design and engineering activities and enables the trilateral partnership to build momentum and accelerate pace of delivery,” the tri-government GCAP agency said.</p><p>Edgewing’s first contract follows growing concern over delays in funding caused by ongoing uncertainty over the U.K.’s Defense Investment Plan, which was due to contain GCAP cash.</p><p><a href="https://www.defensenews.com/global/europe/2026/03/23/poland-eyes-benefits-of-joining-gcap-sixth-generation-fighter-project/">Poland eyes benefits of joining GCAP sixth-generation fighter project</a></p><p>The plan was due to be completed last year, but has yet to be published amid a public spending crunch and a reported £28 billion funding gap in the U.K. defense budget.</p><p>That has left programs like GCAP under a cloud since the first contract with Edgewing was due to be signed off last year. Japanese officials have said they are worried GCAP delivery will be pushed beyond the scheduled date in 2035.</p><p>A source on the program told Defense News the new contract is a “bridge” allowing work to continue until the end of June, when it is hoped the U.K. spending plan will be complete and a second, larger contract can be signed.</p><p>“Today’s contract is tri-national, with the U.K. contributing, and designed to keep the program on schedule,” said the source.</p><p><a href="https://www.defensenews.com/global/asia-pacific/2026/03/11/japan-shrugs-off-gcap-delays-fast-tracks-export-rules-for-future-warplane/">Japan shrugs off GCAP delays, fast-tracks export rules for future warplane</a></p><p>Ahead of the completion of the Defense Investment Plan, the U.K. last month handed Leonardo a £1 billion contract to build 23 AW149 helicopters at the firm’s Yeovil plant in the U.K. to ward off closure of the plant.</p><p>Referring to the Edgewing deal, a spokesman for the joint venture said, “With the signing of this international contract, Edgewing is now fully empowered to drive the program forward as its industrial lead. Our priority is to ensure that engineering work continues to meet planned milestones and the business continues to ramp-up according to our projections.”</p><p>To date Italy, the U.K. and Japan have created separate funding for the program. The new contract is the first time they have signed a single contract with Edgewing.</p><p>“This is the first time in history that responsibility for the technical design and development of a combat aircraft program has been fully vested in a new international prime contractor, and we are making every effort to live up to this responsibility.” said the Edgewing spokesman.</p><p>Masami Oka, GCAP Agency Chief Executive said, “This contract is an important moment for GCAP, as activities previously conducted under three nations’ contracts will now be carried out as part of a fully-fledged international program.”</p>]]></content:encoded><media:thumbnail url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/QKJ7IECUCZBRNFDUEP376MO7VA.JPG" type="image/jpeg"/><enclosure url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/QKJ7IECUCZBRNFDUEP376MO7VA.JPG" type="image/jpeg"/><media:content url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/QKJ7IECUCZBRNFDUEP376MO7VA.JPG" type="image/jpeg" height="3801" width="5822"><media:description type="plain"><![CDATA[A design model for the Global Combat Air Programme (GCAP) fighter jet is displayed at the Defence and Security Equipment International (DSEI) arms fair in London on Sept. 9, 2025. (Reuters/Toby Melville)]]></media:description><media:credit role="author" scheme="urn:ebu">Toby Melville</media:credit></media:content></item><item><title><![CDATA[Is the US running out of Tomahawk missiles? Here’s what the experts say]]></title><news:push>0</news:push><link>https://www.defensenews.com/news/your-military/2026/04/01/is-the-us-running-out-of-tomahawk-missiles-heres-what-the-experts-say/</link><category>Air Warfare</category><guid isPermaLink="true">https://www.defensenews.com/news/your-military/2026/04/01/is-the-us-running-out-of-tomahawk-missiles-heres-what-the-experts-say/</guid><dc:creator><![CDATA[Ellen Ioanes]]></dc:creator><description><![CDATA[The United States has purportedly launched at least 850 Tomahawk long-range cruise missiles just over one month into Operation Epic Fury.]]></description><pubDate>Wed, 01 Apr 2026 19:46:25 +0000</pubDate><content:encoded><![CDATA[<p>Last week, the <a href="https://www.washingtonpost.com/national-security/2026/03/27/iran-war-tomahawk-missiles/" rel="">Washington Post</a> reported that the United States has launched at least 850 Tomahawk long-range cruise missiles just over one month into Operation Epic Fury, the joint U.S.-Israeli war on Iran. That number far exceeds the missile’s use in previous conflicts, according to an assessment from the <a href="https://www.csis.org/analysis/850-tomahawks-launched-operation-epic-fury-most-fired-single-campaign" target="_self" rel="" title="https://www.csis.org/analysis/850-tomahawks-launched-operation-epic-fury-most-fired-single-campaign">Center for Strategic International Studies</a> by Mark Cancian and Chris Park. </p><p>Though the Department of Defense does not divulge the precise number of Tomahawks in the U.S. arsenal, the CSIS analysis estimates the U.S. still has around 3,000. It is a highly advanced weapon; in addition to its impressive 1,000-mile range and precision, it can also be controlled via satellite and can find a target while in flight. </p><p>As Cancian told Military Times, the concern from some in the Pentagon about burning through the Tomahawk stockpile is less about what will happen in Operation Epic Fury, and more about U.S. security commitments in other parts of the world — namely as a counter to China. </p><p><i>The below interview has been edited for length and clarity.</i></p><h4><b>Military Times: Let’s talk first about what the Tomahawk does — how it’s launched, the mechanics of its use in this conflict and why it’s so important.</b></h4><p><b>Mark Cancian: </b>Tomahawk is a ship-launched ground attack missile. It’s very long range and very accurate. It’s been around for a long time, but it’s been upgraded continuously over time, and now the <a href="https://www.defensenews.com/naval/2020/12/14/the-us-navy-has-an-upgraded-tomahawk-heres-5-things-you-should-know/" rel="">Block V</a> is the current version. Its long range and accuracy have always been its great strength. Plus, the fact that it can be launched from sea means that you can move ships around and launch it. You don’t have to have aircraft coming from the United States, and you don’t have to have a base in the region. </p><p>They’re very flexible, and the fact that they’re long range means that if the opposition has some defensive capabilities, [U.S. forces] can stay out of those defensive capabilities. That’s why it was used in the early stages of Epic Fury, until the United States and Israel had beaten down what was left of the Iranian air defense system. </p><p>Once we established air superiority, the number of Tomahawks fired declined. It didn’t go to zero, but it came down because they’re so expensive and scarce that if we can use shorter range munition, then we’ll use that because those are much cheaper. To give you a little sense about that, a Tomahawk costs something like $3.5 million apiece and has a range of 1,000 miles, depending on the version.</p><p>A JDAM, which is a guidance kit put on a dumb bomb, has a range of maybe 20 miles, but cost $80,000 and has the same explosive effect and the same accuracy. So if you can use a JDAM, much better, but that means you have to get close.</p><h4><b>MT: What does this do for weapons capabilities in other theaters, especially those with U.S. involvement?</b></h4><p><b>Cancian:</b> This is the key concern with the inventories because we have enough of everything, including Tomahawks and Patriots and THAADs to fight the current conflict, that is, Epic Fury. The problem is the effect on other theaters like Ukraine and the Western Pacific, a conflict against China. And strategists are very worried that depletion of inventories will weaken our ability to deter or to fight a conflict there. </p><h4><b>MT: What role does the Tomahawk play in deterrence? </b></h4><p>Cancian:<b> </b>With China particularly focused on Taiwan it’s very helpful because China has a tremendous number of missiles. We want to stand back as far as we can, but still be able to shoot in against any Chinese invasion force or any Chinese force that has established itself on Taiwan. </p><p>I should note that there’s what’s called <a href="https://www.janes.com/osint-insights/defence-news/weapons/iran-conflict-2026-us-forces-employ-suspected-new-variant-of-tomahawk-cruise-missile" rel="">a maritime strike Tomahawk</a>, which is the relatively new version that could hit ships. The original version could only hit ground targets, but this other version can hit ships and [in the event of a] Chinese invasion of Taiwan, that would be very helpful.</p><h4><b>MT: What is the level of damage that this munition can do? And where have we seen that in Operation Epic Fury?</b></h4><p><b>Cancian: </b>It does a lot of damage — it has a 1,000-pound warhead. The drones that we’ve used and that the Iranians have used, they have warheads that are between 50 and 100 pounds. So it’s somewhere between 10 to 20 times the effect of a drone. Whatever it hits, it’s going to cause a lot more destruction. </p><h4><b>MT: How long will it take for the U.S. to recuperate its stockpile, and what does that entail?</b></h4><p><b>Cancian: </b>The Department of Defense has been talking with [defense contractors] for several years to get production rates up. It began in the Biden administration. It’s continued in the Trump administration. Hegseth has been going on this <a href="https://www.war.gov/News/News-Stories/Article/Article/4408685/hegseth-brings-dows-arsenal-of-freedom-tour-to-fighterland-usa/" rel="">Arsenal of Freedom tour</a>, plant to plant, to talk to workers and management about <a href="https://www.reuters.com/business/aerospace-defense/raytheon-secures-deal-build-thousands-missiles-us-including-tomahawks-2026-02-04/" rel="">speeding up production</a>. Bottom line, I think currently, to replace the 850 to 1,000 that we’ve expended, you’re talking two or three years.</p><h4><b>MT: If we’re firing fewer Tomahawks how does that shift the strategy?</b></h4><p><b>Cancian: </b>It doesn’t shift the strategy. But what it does mean is that we don’t have to use these very expensive and scarce missiles as much, but can use the much less expensive short range munitions. That means we can keep the fighting going much longer, in fact, essentially indefinitely. And although we put a big dent in the inventories, you know, we’re not going to go down to zero Patriot and Tomahawks.</p><h4><b>MT: There’s also been a very significant use of the Patriot system in the Gulf. Do you have concerns there about our ability to protect U.S. installations, or to assist our allies with those kinds of defenses?</b></h4><p><b>Cancian: </b>Right now, we have enough Patriots to defend in the Gulf against the Iranian ballistic missile attacks, and that’s what the Patriots do. They’re not used against drones. We estimated there were about 4,000 [Patriot missiles] at the beginning of the war. We’ve maybe used 1,000 now, so we’ve used a quarter, which is, on the one hand a lot. On the other hand, that means you still have three-quarters left. </p><p>But again, you have this strategic problem, and you have the same problem about rebuilding the inventories. We’re producing [about] 600 Patriots a year. About half of those go to the United States, and half go to allies, and that’s going to continue. I wouldn’t be surprised if there were some discussions about maybe reallocating some of that production to other countries, shifting people around in the queue so that maybe the Gulf states would get up to the front, and maybe some others would be moved back. </p>]]></content:encoded><media:thumbnail url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/E7ZLGMXF75DAVIDLG4XPX6CFSI.jpg" type="image/jpeg"/><enclosure url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/E7ZLGMXF75DAVIDLG4XPX6CFSI.jpg" type="image/jpeg"/><media:content url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/E7ZLGMXF75DAVIDLG4XPX6CFSI.jpg" type="image/jpeg" height="2244" width="3366"><media:description type="plain"><![CDATA[USS Delbert D. Black fires a Tomahawk Land Attack Missile in support of Operation Epic Fury, Feb. 28, 2026. (U.S. Navy)]]></media:description><media:credit role="author" scheme="urn:ebu">U.S. Navy Photo</media:credit></media:content></item><item><title><![CDATA[The Strait of Hormuz offers a lesson in air denial]]></title><news:push>0</news:push><link>https://www.defensenews.com/opinion/2026/04/01/the-strait-of-hormuz-offers-a-lesson-in-air-denial/</link><category>Opinion</category><guid isPermaLink="true">https://www.defensenews.com/opinion/2026/04/01/the-strait-of-hormuz-offers-a-lesson-in-air-denial/</guid><dc:creator><![CDATA[Maximilian K. Bremer and Kelly A. Grieco]]></dc:creator><description><![CDATA["By that measure, the United States does not have air superiority where it counts," write analysts Max Bremer and Kelly Grieco.]]></description><pubDate>Wed, 01 Apr 2026 09:32:41 +0000</pubDate><content:encoded><![CDATA[<p>“Iran’s power is the Hormuz Strait.” Those were Iranian foreign minister Abbas Aragchi’s words on state television last week. He wasn’t wrong. Four weeks into this conflict, the United States has struck more than 10,000 Iranian targets, destroyed roughly 80% of Iran’s air defense capabilities, and eliminated its navy as a fighting force. Yet the strait remains effectively closed — and Iran’s drones and missiles are keeping it that way.</p><p>Tehran’s goal is to impose persistent economic and political costs until Washington concludes that continuing the war is not worth it. To achieve that, Iran is exploiting a gap in U.S. Air Force doctrine — the distinction between air superiority and air denial, and between the blue skies and the air littoral. So far, it is working.</p><p>Air superiority — the control that permits operations at a “given time and place without prohibitive interference from air and missile threats” — is what the United States has achieved over southern and western Iran and is now working to extend eastward. That control allows large-scale strikes and freedom of maneuver at medium and high altitudes. As Gen. Dan Caine, chairman of the Joint Chiefs of Staff, <a href="https://www.war.gov/News/Transcripts/Transcript/Article/4448743/secretary-of-war-pete-hegseth-and-chairman-of-the-joint-chiefs-air-force-gen-da/" target="_self" rel="" title="https://www.war.gov/News/Transcripts/Transcript/Article/4448743/secretary-of-war-pete-hegseth-and-chairman-of-the-joint-chiefs-air-force-gen-da/">noted on Tuesday</a>, “Given the increase in air superiority, we’ve successfully started to conduct the first overland B-52 missions.”</p><p>By that measure, the campaign has been a success. But the strait is still closed.</p><p><a href="https://www.militarytimes.com/news/pentagon-congress/2026/03/31/hegseth-reveals-secret-trip-to-middle-east-amid-escalating-iran-war/">Hegseth reveals secret trip to Middle East amid escalating Iran war</a></p><p>Air superiority is meant to assure freedom of action not just in the air, but across all domains for the entire joint force. </p><p>Air Force Doctrine Publication 3-0 is explicit on this point: air superiority “prevents enemy air and missile threats from effectively interfering with operations of friendly air, land, maritime, space, cyberspace, and special operations forces.” That includes the Navy’s ability to escort commercial vessels through the Strait of Hormuz.</p><p>By that measure, the United States does not have air superiority where it counts.</p><p>Iran’s drone and missile campaign has already forced American forces back. In 2003, the bulk of U.S. combat and support aircraft operated from forward positions in Kuwait, Qatar and Saudi Arabia while carriers patrolled the Persian Gulf. Today, carriers increasingly operate from the Red and Arabian Seas while land-based airpower has shifted toward bases farther from the strait, leaving U.S. forces positioned for the high-altitude fight over Iran, not the persistent-close-in coverage the strait requires to keep shipping lanes open under continuous drone and missile threat.</p><p>Iran’s strategy of air denial is why.</p><p>Air denial is a strategy of contesting control of the air without achieving air superiority outright. It leverages the advantages of large numbers of low-cost and mobile systems employed in a distributed way to keep the air domain too dangerous, too costly and too uncertain for joint forces to operate. Critically, the barriers to achieving air denial are considerably lower than those required to gain and sustain air superiority, yet it can impose disproportionate costs.</p><img src="https://archetype-military-times-prod.web.arc-cdn.net/resizer/v2/FazqLyDl6K7J4JhBicGz6SNqg0Y=/cloudfront-us-east-1.images.arcpublishing.com/archetype/PK4X3N24BVD3ZETUR2VW676J64.JPG" alt="An Air Force B-52 Stratofortress takes off in support of Operation Epic Fury during the Iran war at an undisclosed location, March 22, 2026. (U.S. Air Force/Handout via Reuters)" height="5001" width="7502"/><p>In the Strait of Hormuz, Iran is putting this strategy into practice. Tehran is exploiting the air littoral above the strait, employing drones and missiles capable of reaching oil tankers and naval vessels in minutes. Iran has struck more than 20 commercial vessels in and around the strait since the war began, killing at least seven sailors. This action has effectively halted traffic through the strait, except for a handful of ships that Iran has let pass — in many cases, for a hefty fee. The U.S. Navy has reportedly declined requests from the shipping industry for military escorts, citing the ongoing threat.</p><p>Iran’s strategy appears to be working. Gas prices have risen a dollar a gallon in a month, U.S. stock markets have entered correction territory, and the White House is under growing pressure to wind down the conflict. Iran planned for exactly this.</p><p>Tehran built this playbook, funded it, and watched it succeed. The lessons come straight from the Red Sea, where Houthi proxies used cheap, distributed drones and missiles to impose costs that more than 800 U.S. airstrikes between 2024 and 2025 could not eliminate. Now, Iran is running the same playbook over the Strait of Hormuz.</p><p>The United States has no ready answer. Achieving and maintaining air superiority in the air littoral above the strait demands the very layered defense capabilities in which the Pentagon has systematically underinvested: large numbers of low-cost, attritable systems to continuously attack launch locations and dispersed manufacturing; mobile air defenses rapidly and persistently deployable near threatened waterways; low cost persistent airborne platforms capable of detecting and destroying waves of drones; and interceptors capable of sustaining high engagement rates without exhausting inventories.</p><p>These are precisely the capabilities decades of procurement choices never built at scale, in favor of the small number of exquisite platforms that have performed so well in the blue skies above Tehran. The gap is not an accident. It is the result of choices. The Strait of Hormuz is one of their consequences.</p><p>Addressing this gap requires building low-cost, attritable systems at scale to contest and control the air littoral — not in small numbers as an afterthought, after the high-end aircraft are bought and paid for, but as a core mission — which inevitably means scaling back legacy platforms. The window to absorb that lesson is open now, while the cost is measured in closed shipping lanes and rising gas prices.</p><p><i>Maximilian K. Bremer is a nonresident fellow with the Reimagining US Grand Strategy Program at the Stimson Center and head of Mission Engineering and Strategy for Atropos Group.</i></p><p><i>Kelly A. Grieco is a senior fellow with the Reimagining US Grand Strategy Program at the Stimson Center and adjunct professor in the Center for Security Studies at Georgetown University.</i></p>]]></content:encoded><media:thumbnail url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/BHLT7BI2LVEIZBSYCEW2HNU3U4.JPG" type="image/jpeg"/><enclosure url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/BHLT7BI2LVEIZBSYCEW2HNU3U4.JPG" type="image/jpeg"/><media:content url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/BHLT7BI2LVEIZBSYCEW2HNU3U4.JPG" type="image/jpeg" height="1056" width="1578"><media:description type="plain"><![CDATA[Cargo ships in the Gulf, near the Strait of Hormuz, as seen from northern Ras al-Khaimah, near the border with Oman’s Musandam governance, amid the U.S.-Israeli conflict with Iran, in United Arab Emirates, March 11, 2026. (Reuters/Stringer//File Photo)]]></media:description><media:credit role="author" scheme="urn:ebu">Stringer</media:credit></media:content></item><item><title><![CDATA[Italy turns away Middle East-bound US military aircraft from Sicily stopover]]></title><news:push>0</news:push><link>https://www.defensenews.com/global/europe/2026/03/31/italy-turns-away-middle-east-bound-us-military-aircraft-from-sicily-stopover/</link><category> / Europe</category><guid isPermaLink="true">https://www.defensenews.com/global/europe/2026/03/31/italy-turns-away-middle-east-bound-us-military-aircraft-from-sicily-stopover/</guid><dc:creator><![CDATA[Tom Kington]]></dc:creator><description><![CDATA[Use of the Sigonella air base for the U.S.-Israeli war against Iran falls outside of the scope of agreements, requiring parliamentary approval in Rome.]]></description><pubDate>Tue, 31 Mar 2026 14:47:13 +0000</pubDate><content:encoded><![CDATA[<p>ROME — U.S. military aircraft heading from the United States to the Middle East have been refused permission to stop off at an air base in Italy, an Italian government source has told Defense News.</p><p>The request to land at Sigonella air base in Sicily was issued to Italian authorities after the aircraft had already taken off from the U.S., Italian daily Corriere della Sera reported on Tuesday.</p><p>Italy has a longstanding deal with the U.S. to allow it to use Sigonella for regular military flights, while permission for use of the base by flights not covered by the agreement must be granted by the Italian parliament.</p><p>In a speech to parliament this month, Italian Prime Minister Giorgia Meloni said, “The bases used by the U.S. in Italy derive from agreements signed in 1954 and which have been updated since then by various governments. According to those agreements there are technical authorizations when it comes to logistics and non-kinetic operations that do not involve, put simply, bombing.”</p><p>She added that for any other kind of use of bases, “it depends on parliament.”</p><p>Since permission to land was requested by the U.S. after the jets took off from the United States, there was no time for such authorization to be obtained, the source said.</p><p>A statement issued by Meloni’s office on Tuesday said, “Every request is examined attentively, case by case, as has always happened in the past. There are no crises or frictions with international partners. Relations with the U.S., specifically, are solid and characterized by full and loyal cooperation.”</p><p>The refusal does however come in the wake of growing unease over the Iran war in the Italian government led by Meloni, who has previously positioned herself as a faithful ally to American President Donald Trump in Europe.</p><p>Meloni is playing a balancing act since she is keen not to alienate the majority of Italian voters who oppose the Iran war.</p><p>“We are not at war and we do not want to enter the war,” Meloni told Italy’s parliament earlier this month. She has also called the U.S. attack on Iran “outside the perimeter of international law.”</p><p>Spain has previously denied use of its bases to U.S. jets heading to Iran, incurring the anger of President Trump, who threatened to cut trade with Spain.</p><p>On Monday, Spain went further, closing its airspace to U.S. aircraft involved in the Iran war.</p><p>“Neither the bases are authorized, nor, of course, is the use of Spanish airspace authorized for any actions related to the war in Iran,” Spanish Defense Minister Margarita Robles said, adding the war was ”profoundly illegal and profoundly unjust."</p>]]></content:encoded><media:thumbnail url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/XVA3GBL2XZB37BFCINXMMLLBHY.jpg" type="image/jpeg"/><enclosure url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/XVA3GBL2XZB37BFCINXMMLLBHY.jpg" type="image/jpeg"/><media:content url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/XVA3GBL2XZB37BFCINXMMLLBHY.jpg" type="image/jpeg" height="1600" width="2400"><media:description type="plain"><![CDATA[A P-8A Poseidon assigned to Patrol Squadron (VP) 46 takes off from the runway at Naval Air Station (NAS) Sigonella, Italy, Jan. 17, 2024. (MC2 Jacquelin Frost/US Navy)]]></media:description><media:credit role="author" scheme="urn:ebu">Petty Officer 2nd Class Jacqueli</media:credit></media:content></item><item><title><![CDATA[Turkey, UK sign training and support deal for multibillion-dollar Eurofighter order]]></title><news:push>0</news:push><link>https://www.defensenews.com/global/europe/2026/03/25/turkey-uk-sign-training-and-support-deal-for-multibillion-dollar-eurofighter-order/</link><category> / Europe</category><guid isPermaLink="true">https://www.defensenews.com/global/europe/2026/03/25/turkey-uk-sign-training-and-support-deal-for-multibillion-dollar-eurofighter-order/</guid><dc:creator><![CDATA[Cem Devrim Yaylali]]></dc:creator><description><![CDATA[The Turkish air force eventually wants to perform its own depot-level maintenance of the airframes, engines and other on-board equipment in Turkey.]]></description><pubDate>Wed, 25 Mar 2026 18:34:53 +0000</pubDate><content:encoded><![CDATA[<p>IZMIR, Turkey — Turkey and the United Kingdom have signed a training and support agreement accompanying Ankara’s multibillion-dollar <a href="https://www.defensenews.com/global/europe/2025/10/27/turkey-signs-107-billion-deal-with-uk-for-20-eurofighter-jets/" target="_self" rel="" title="https://www.defensenews.com/global/europe/2025/10/27/turkey-signs-107-billion-deal-with-uk-for-20-eurofighter-jets/">order of 20 Eurofighter Typhoon warplanes</a> in October 2025.</p><p>The agreement was signed between Turkish Defense Minister Yaşar Güler and U.K. Defence Secretary John Healey in London on March 25, during the Turkish minister’s official visit to the United Kingdom.</p><p>Per the agreement, BAE Systems will deliver spares and support equipment, high-fidelity training simulators, electronic warfare capabilities and technical support services for an initial three-year period from the aircraft’s entry into service.</p><p>The exact value of the new contract was not disclosed. However, when the initial contract for the procurement of Eurofighter aircraft was announced in October 2025, the U.K. government stated that the total value of the deal would be worth up to £8 billion, or $10.7 billion.</p><p>According to BAE Systems, Turkey will pay £5.4 billion ($7.2 billion) for the purchase of 20 Typhoon aircraft and an associated weapons and integration package. That arithmetic would peg the value of today’s support and training contract at a maximum of £2.6 billion, or $3.5 billion.</p><p>Under separate agreements with the U.K. government, the Royal Air Force will train 10 Turkish instructor pilots and nearly 100 maintenance technicians, ensuring the Turkish Air Force can independently deliver training and support to future pilots and ground crew.</p><p>The Turkish air force wants to perform its own depot-level maintenance of the airframes, engines and other on-board equipment in Turkey when the planes start entering into service.</p><p>According to a press release issued by the U.K. government, the work also secures production of aircraft components and spares in support of Turkey’s maintenance of the aircraft, with the involvement of U.K. industry partners including BAE Systems, Leonardo UK, MBDA, Rolls-Royce and Martin Baker.</p>]]></content:encoded><media:thumbnail url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/4VY65BOB7FBORCCCXIQ6AADM6E.jpg" type="image/jpeg"/><enclosure url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/4VY65BOB7FBORCCCXIQ6AADM6E.jpg" type="image/jpeg"/><media:content url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/4VY65BOB7FBORCCCXIQ6AADM6E.jpg" type="image/jpeg" height="3543" width="5315"><media:description type="plain"><![CDATA[A visitor learns fighter jet technology in a Eurofighter cockpit simulator at BAE Systems during the Farnborough International Airshow on July 24, 2024, at Farnborough, England. (Richard Baker / In Pictures via Getty Images)]]></media:description><media:credit role="author" scheme="urn:ebu">Richard Baker</media:credit></media:content></item><item><title><![CDATA[Poland eyes benefits of joining GCAP sixth-generation fighter project]]></title><news:push>0</news:push><link>https://www.defensenews.com/global/europe/2026/03/23/poland-eyes-benefits-of-joining-gcap-sixth-generation-fighter-project/</link><category> / Europe</category><guid isPermaLink="true">https://www.defensenews.com/global/europe/2026/03/23/poland-eyes-benefits-of-joining-gcap-sixth-generation-fighter-project/</guid><dc:creator><![CDATA[Jaroslaw Adamowski]]></dc:creator><description><![CDATA[Polish officials said they have discussed the project with Italian and Japanese stakeholders, but it's unclear if there have been formal government talks.]]></description><pubDate>Mon, 23 Mar 2026 15:21:29 +0000</pubDate><content:encoded><![CDATA[<p>WARSAW, Poland — Polish Deputy State Assets Minister Konrad Gołota has announced that Poland is considering to join the Global Combat Air Programme (GCAP), aiming to involve its defense sector in the project to develop a sixth-generation fighter jet.</p><p>Gołota told public broadcaster TVP Info the government considers engaging Poland’s state-dominated defense industry in the tri-nation initiative, which is spearheaded by Italy, Japan and the United Kingdom, to boost the sector’s capacities and innovativeness. </p><p>“Today, we need to make up for some delays in this area, because, over the past decades, we have not produced aircraft in Poland, so our aviation industry requires development,” the official said. </p><p>The deputy minister also stated that Polish officials have already discussed the project with Italian and Japanese stakeholders, but he did not disclose the status of talks at the government level.</p><p>“Over the past few months, I have spoken to representatives of the defense industries of both Italy and Japan,” Gołota said. “They are showing an understanding of our proposal, and willingness to have further talks.”</p><p>The discussions come amid a <a href="https://www.defensenews.com/global/asia-pacific/2026/03/11/japan-shrugs-off-gcap-delays-fast-tracks-export-rules-for-future-warplane/" rel="">delay in the signing of a deal</a> between the three countries, represented by the GCAP International Government Organisation (GIGO), and the Edgewing joint venture which represents national players Leonardo, BAE Systems, and Japan Aircraft Industrial Enhancement Co. Ltd., a company owned by Mitsubishi Heavy Industries and the Society of Japanese Aerospace Companies. </p><p>The latest development comes as Warsaw is analyzing whether to purchase an <a href="https://www.defensenews.com/global/europe/2025/08/14/poland-awards-38-billion-f-16-modernization-deal-to-us/" rel="">additional two squadrons</a> of fighters for the nation’s Air Force. The available options include buying 32 more Lockheed Martin F-35s on top of the 32 jets Warsaw ordered in 2020, or alternatively selecting one of the two air superiority aircraft: the Eurofighter Typhoon or Boeing’s F-15EX fighter, as indicated by Polish military officials.</p>]]></content:encoded><media:thumbnail url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/AOIR26UCBZHF5CWGEWFCVHV2IM.jpg" type="image/jpeg"/><enclosure url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/AOIR26UCBZHF5CWGEWFCVHV2IM.jpg" type="image/jpeg"/><media:content url="https://cloudfront-us-east-1.images.arcpublishing.com/archetype/AOIR26UCBZHF5CWGEWFCVHV2IM.jpg" type="image/jpeg" height="3245" width="5000"><media:description type="plain"><![CDATA[Delegates look at the GCAP 6th-generation fighter jet concept design at the Farnborough International Airshow 2024 near London.  (Justin Tallis/AFP via Getty Images)]]></media:description><media:credit role="author" scheme="urn:ebu">JUSTIN TALLIS</media:credit></media:content></item></channel></rss>