Jan Sofat Luxury Villa + Guest House

Willemstad East · Curaçao

Home For Sale

US$ 975,000 ANƒ 1.755.000-¹¹ EU€ 827 053¹¹

Property Details

  • Ref# 512507
  • Neighborhood Willemstad East
  • Country Curaçao
  • Category Single Family Homes
  • View Ocean View
  • Beds 7
  • Baths 6
  • L.Space 491 m²
  • Land 1,310 m²
  • Class Residential

Property Remarks

Within the tranquil gated community of Jan Sofat lies this masterfully built villa. Captivating from outside the gate, the unique villa will inspire you from the moment you enter and continue to take your breath away. Consisting of a large main villa impeccably designed to take advantage of the water view, a large separate guest house in the back and the vast natural area beyond. Its large pool and landscaped garden blend harmoniously with the architecture as every square meter has been intentionally designed to create a truly incomparable experience. Upon entering through the main gate, you have the option to park in your spacious two-car garage or on the ample brick driveway. From the brick driveway, you have access to the villa through the grand double-door entrance leading to the open design atrium-style central area. A partition separates the area, along the side to the right an office room and a partial bathroom and to the left the kitchen and first patio accessed by large glass sliding doors. Looking up within the central area you can directly see the second-floor open landing, creating a sense of connection throughout the villa which is fitted and ready for a grand chandelier. Sharing the central area of the villa to its further side is the living room which connects directly with large sliding glass doors to the second patio which overlooks the pool. From the garage, you have direct access to the laundry room/pantry with a second large American style fridge/freezer and plentiful storage space. Through the next door, you will arrive at the junction connecting to both the kitchen and previously mentioned central area. Focusing now on the kitchen, its impeccable design allows for an open and stately look. A long central kitchen island with a raised counter on one side with a huge oven and 6-piece stove above it mesh perfectly together. Its broad faucet counter on the far end accompanied with the windows providing natural lighting and a lengthy stretch of high-quality cabinets with two glass doors centrally placed to show off your collection of spirits and wines. There is even a refined-looking microwave built into the cabinet fixture. On the opposite side of which is another glass sliding door providing yet more natural light and access to the communal areas of the villa and pool. A set of stairs in the central area leads you to the living quarters of the villa. Present here are three bedrooms, one of which is the master bedroom and of course the landing area allowing you to see downstairs. The master bedroom is spacious, airconditioned and contains wooden shutter windows allowing for a gentle breeze and a terrace overlooking the pool and the water/natural landscape behind the villa. A looping corridor encircling the room provides ease of access to the grand en-suite bathroom with a hot tub, separate shower, his and hers sinks and finally a large walk-in closet. The two other bedrooms (one of which is now an additional office) both contain air conditioners built-in closets and en-suite bathrooms. The large exterior of the villa on the top level consists of a wide tiled area encompassing the patio areas and pool, the stunning pool itself also contains two built-in lounge style seats on a shallow portion of the pool and a waterfall function at the far end. Around this area you have colorful tropical plants and several palm trees. This entire area connects harmoniously with the open design of the villa and of course the inspirational natural view behind and the Spanish Water Bay. Behind a gate to the far side you will come to a long walkway which connects the main gate of the villa all the way to the apartment down a short staircase. The walkway is very secure with additional gates, embraced by a stretch of grand palm trees. This intentional design was implicated for total privacy to both the occupants of the villa and guest house. After coming down the stairs to the lower level of the lot you will immediately notice how spacious both the apartment is and the land around it, carpeted with luscious green artificial grass. The apartment holds two large airconditioned bedrooms, one shared bathroom and a fully independent studio with kitchenette, en-suite bathroom and air conditioning. Within the spacious central area is a lengthy kitchen island, spacious enough for all to eat and come together on and a kitchenette with a fridge oven/stove and microwave. Behind these is a small lounge area. Glass sliding doors to either side allow for an exquisite open feeling and easy access to the outside patio area. Additional amenities shared by both the villa and apartment are 24 solar panels, covered terraces, beam ceilings, both 110- and 220-volt electrical sockets and superior high grade building materials on par to that of a five-star resort such as Bali wood found throughout the villa. Furthermore, there are smoke detectors and an alarm system throughout the property. Present in the gated Jan Sofat community there is also a marina so you may access the waters which the villa has an excellent view of and 24hour manned security at the gate. Contact us today and schedule a viewing!! JAN SOFAT Jan Sofat is an upscale gated community, quietly located next to the Spanish Water. The resort features 24/7 manned security gate, security rounds and alarm response. In this residential area are many luxurious houses located on the hills, all of them benefit from the cool breeze and some of them have a spectacular view overlooking the Tafelberg and the Spanish Water. All residents have access to the communal marina and a play ground for children. Most amenities such as beaches, shops and restaurants are only minutes away and the center of Willemstad is a 15 minute drive.

Features and Amenities

  • Condition
    • Well Maintained
  • Appliances
    • Dishwasher
    • Stove
    • Fridge + Water/Ice Dispenser
  • Furnished
    • Unfurnished
  • Parking - Type
    • Garage
  • Storage
    • Good Storage
  • Security
    • Security Guard
    • Security Gate
  • Air Conditioning
    • Air Conditioning
  • Boat Access
    • Boat Access
  • Yard / Landscaping
    • Large Fenced Yard
  • Patio - Deck - Porch
    • Deck
    • Balcony
    • Terrace - Wrap Around
  • Near By
    • Park - Green Area
    • Public Transportation
    • Recreational Activities
    • Restaurants
  • Swimming Pool
    • Above Ground
  • Rooms
    • Kitchen
    • Living Room
    • Laundry Room
    • Basement
    • Bedroom
    • Master Bedroom
    • Bathroom
    • Storage
    • Hallway
  • Distinctive Features
    • Hot Tub / Jacuzzi
    • Walk-In Closet
    • Guest House
  • Location Features
    • Public Transportation
    • Water Access
    • Quiet Area
  • Floors
    • Tiles
  • Kitchen
    • Central cooking island
  • Bathroom
    • Jacuzzi Bathtub
    • Separate Shower

Directions

Click on the ‘directions’ button below for the directions to jan sofat luxury villa + guest house
[  Directions ]

Map Location

Open
(¹) Listed Amount was converted based on recent interbank exchange rates. We do not guarantee the accuracy of these amounts.
'd.1.en.1144431'
YXJyYXkgKAogICdhbXAnID0+IGZhbHNlLAogICdsaWQnID0+ICcxMTQ0NDMxJywKICAndXFpZCcgPT4gTlVMTCwKICAncGFnZScgPT4gJ2RldGFpbCcsCiAgJ2NvbnRyb2xsZXInID0+ICdkZXRhaWwnLAogICdmdW5jdGlvbicgPT4gJ2luZGV4JywKICAncGFyYW1zJyA9PiAKICBhcnJheSAoCiAgKSwKICAndXJpJyA9PiAnL2VuL2QvMTE0NDQzMScsCiAgJ3VyaV9iYXNlJyA9PiAnL2VuL2QvJywKICAndXJpX3BhdGgnID0+ICcvMTE0NDQzMScsCiAgJ3VyaV9xdWVyeScgPT4gTlVMTCwKICAndXJpX2Nhbm9uaWNhbCcgPT4gTlVMTCwKICAndXJpX29yaWdpbmFsJyA9PiAnL2VuL2QvMTE0NDQzMScsCiAgJ3VyaV9yZXF1ZXN0JyA9PiAnL2VuL2QvMTE0NDQzMScsCiAgJ2lzVXJpSUQnID0+IHRydWUsCiAgJ2lzQ2Fub25pY2FsJyA9PiBmYWxzZSwKICAnaXNQT1NUJyA9PiBmYWxzZSwKICAnaXNYSFInID0+IDAsCiAgJ2lzSlNPTicgPT4gMCwKICAnbGFuZycgPT4gJ2VuJywKICAnY3RybCcgPT4gJ2QnLAogICdiYXNlJyA9PiAnL2VuL2QnLAogICdwYXRoJyA9PiAnJywKICAnc2VhcmNoX3R5cGUnID0+IE5VTEwsCiAgJ3F1ZXJ5X3NlZ21lbnQnID0+ICcnLAogICdzZWdtZW50cycgPT4gCiAgYXJyYXkgKAogICksCiAgJ3NlZ21lbnRDb2xzJyA9PiBOVUxMLAogICdvcHRzJyA9PiBOVUxMLAogICdzb3J0U3RyJyA9PiAnJywKICAnZGVmU29ydFN0cicgPT4gJy9oZ2EnLAogICdkYXRhJyA9PiAKICBhcnJheSAoCiAgICAnY291bnRyeScgPT4gJ0NWJywKICApLAogICdhcmdzJyA9PiAKICBhcnJheSAoCiAgKSwKICAnaHJlZl9nb2JhY2snID0+IE5VTEwsCiAgJ3NlbGZfcmVmZXJlZCcgPT4gTlVMTCwKICAncmVmZXJlZF9yZXEnID0+IE5VTEwsCiAgJ3NvcnRBcnInID0+IAogIGFycmF5ICgKICAgICdieScgPT4gJ3ByaWNlJywKICAgICdjdXJyJyA9PiAnJywKICAgICdkaXInID0+ICdkZXNjJywKICAgICdvcHRzJyA9PiAnaGdhJywKICAgICdwYWdlT2Zmc2V0JyA9PiAwLAogICAgJ3BhZ2Vfbm8nID0+IDEsCiAgICAncGVyX3BhZ2UnID0+IDEyLAogICAgJ3Jvd3MnID0+ICdhJywKICAgICdzb3J0JyA9PiAnaGlsbycsCiAgICAnc29ydFN0cicgPT4gJy9oZ2EnLAogICAgJ3N0eWxlJyA9PiAnZ3JpZCcsCiAgKSwKICAndXJpX3NvcnQnID0+ICcvZW4vZC8nLAogICdodHRwX3Jlc3BvbnNlX3N0YXR1cycgPT4gMjAwLAogICdtZXRhQXJyJyA9PiAKICBhcnJheSAoCiAgICAndGV4dCcgPT4gCiAgICBhcnJheSAoCiAgICAgICdjb3VudHJ5JyA9PiAnQ3VyYcOnYW8nLAogICAgICAnc2l0ZV9uYW1lJyA9PiAnQ0VOVFVSWSAyMSBOdW1iZXIgT25lJywKICAgICAgJ3JlYWxfZXN0YXRlJyA9PiAnUmVhbCBFc3RhdGUnLAogICAgKSwKICApLAogICdpc0Zvcm0nID0+IGZhbHNlLAogICdsQXJyJyA9PiAKICBhcnJheSAoCiAgICAnbGlkJyA9PiAnMTE0NDQzMScsCiAgICAncmVmbm8nID0+ICcwMDAwNTEyNTA3JywKICAgICdjb3VudHJ5JyA9PiAnQ1YnLAogICAgJ3BjbGFzcycgPT4gJ1JFUycsCiAgICAnZXhjbCcgPT4gJzEnLAogICAgJ3JlY2lwJyA9PiAnMCcsCiAgICAnZnRyZCcgPT4gJzEnLAogICAgJ2JyYW5kMScgPT4gJ0NFTicsCiAgICAnb2ZpZDEnID0+ICcxMDAwMzk5JywKICAgICdhZ2lkMScgPT4gJzEwMDIxMDQnLAogICAgJ2JyYW5kMicgPT4gTlVMTCwKICAgICdvZmlkMicgPT4gTlVMTCwKICAgICdhZ2lkMicgPT4gTlVMTCwKICAgICdsYXN0dXBkYXRlJyA9PiAnMjAyMC0wMi0xMiAxNzozMDo0MycsCiAgICAnc3RhbXAnID0+ICcyMDE5LTA4LTIwIDE4OjQ1OjUyJywKICAgICdhY2NvdW50cycgPT4gCiAgICBhcnJheSAoCiAgICAgICdvZmlkMScgPT4gCiAgICAgIGFycmF5ICgKICAgICAgICAnZnRpZCcgPT4gJzEwMDAzOTknLAogICAgICAgICdmdHlwZScgPT4gJ08nLAogICAgICAgICdsYW5ncycgPT4gJ0VOLEVTLERFLE5MJywKICAgICAgICAnbmFtZScgPT4gJ0NFTlRVUlkgMjEgIzEgUmVhbCBFc3RhdGUnLAogICAgICAgICd3d3cnID0+ICdjZW50dXJ5MjFudW1iZXJvbmUuY29tJywKICAgICAgICAnbG9nbycgPT4gJy9tYXguY2RuL2ltYWdlcy9sb2dvcy8xMDAwMzk5LzE1MHg1MC8wLmpwZycsCiAgICAgICAgJ2FkZHJlc3MnID0+IAogICAgICAgIGFycmF5ICgKICAgICAgICAgIDAgPT4gJzY5IENhcyBDb3Jhd2VnJywKICAgICAgICAgIDEgPT4gJ1dpbGxlbXN0YWQgV2VzdCwgQmFuZGEgQm91JywKICAgICAgICAgIDIgPT4gJ0N1cmHDp2FvJywKICAgICAgICApLAogICAgICAgICdwaG9uZXMnID0+IAogICAgICAgIGFycmF5ICgKICAgICAgICAgICdvZmZpY2UnID0+IAogICAgICAgICAgYXJyYXkgKAogICAgICAgICAgICAnY29kZScgPT4gJzY2MycsCiAgICAgICAgICAgICdsYWJlbCcgPT4gJ09mZmljZScsCiAgICAgICAgICAgICdhYmJydicgPT4gTlVMTCwKICAgICAgICAgICAgJ2Njb2RlJyA9PiAnKzAxMScsCiAgICAgICAgICAgICd2YWx1ZScgPT4gJzo1OTkgOTo3MzctMDIwMTonLAogICAgICAgICAgICAndGVsJyA9PiAnNTk5OTczNzAyMDEnLAogICAgICAgICAgICAnc2hvdycgPT4gJyg1OTkgOSkgNzM3LTAyMDEnLAogICAgICAgICAgKSwKICAgICAgICApLAogICAgICApLAogICAgICAnYWdpZDEnID0+IAogICAgICBhcnJheSAoCiAgICAgICAgJ2Z0aWQnID0+ICcxMDAyMTA0JywKICAgICAgICAnZnR5cGUnID0+ICdBJywKICAgICAgICAnb2ZpZCcgPT4gJzEwMDAzOTknLAogICAgICAgICd0aXRsZScgPT4gCiAgICAgICAgYXJyYXkgKAogICAgICAgICAgJ2xhYmVsJyA9PiAnU2FsZXMgQWdlbnQvQ29uc3VsdGFudCcsCiAgICAgICAgKSwKICAgICAgICAnZm5hbWUnID0+ICdKb3ljZScsCiAgICAgICAgJ2xuYW1lJyA9PiAnQW1tZXJsYWFuJywKICAgICAgICAnZnVsbG5hbWUnID0+ICdKb3ljZSBBbW1lcmxhYW4nLAogICAgICAgICdlbWFpbCcgPT4gJ2pveWNlQGMyMWN1cmFjYW8uY29tJywKICAgICAgICAnd3d3JyA9PiAnY2VudHVyeTIxbnVtYmVyb25lLmNvbScsCiAgICAgICAgJ3Bob3RvJyA9PiAnL2ltYWdlcy9hZ2VudHMvMTAwMjEwNC9mLzAuanBnJywKICAgICAgICAncGhvbmVzJyA9PiAKICAgICAgICBhcnJheSAoCiAgICAgICAgICAnb2ZmaWNlJyA9PiAKICAgICAgICAgIGFycmF5ICgKICAgICAgICAgICAgJ2NvZGUnID0+ICc2NjMnLAogICAgICAgICAgICAnbGFiZWwnID0+ICdPZmZpY2UnLAogICAgICAgICAgICAnYWJicnYnID0+IE5VTEwsCiAgICAgICAgICAgICdjY29kZScgPT4gJyswMTEnLAogICAgICAgICAgICAndmFsdWUnID0+ICc6NTk5IDk6NzM3LTAyMDE6JywKICAgICAgICAgICAgJ3RlbCcgPT4gJzU5OTk3MzcwMjAxJywKICAgICAgICAgICAgJ3Nob3cnID0+ICcoNTk5IDkpIDczNy0wMjAxJywKICAgICAgICAgICksCiAgICAgICAgKSwKICAgICAgKSwKICAgICksCiAgICAndmlkZW9zJyA9PiAKICAgIGFycmF5ICgKICAgICAgJ3lvdXR1YmUnID0+IE5VTEwsCiAgICAgICd2dHVybCcgPT4gTlVMTCwKICAgICksCiAgICAnZGV0YWlscycgPT4gCiAgICBhcnJheSAoCiAgICAgICdSRUZOT19MQUJFTCcgPT4gJ1JlZiMnLAogICAgICAnUkVGTk9fVkFMVUUnID0+ICc1MTI1MDcnLAogICAgICAnRElEX0xBQkVMJyA9PiAnTmVpZ2hib3Job29kJywKICAgICAgJ0RJRF9WQUxVRScgPT4gJ1dpbGxlbXN0YWQgRWFzdCcsCiAgICAgICdDT1VOVFJZX0xBQkVMJyA9PiAnQ291bnRyeScsCiAgICAgICdDT1VOVFJZX1ZBTFVFJyA9PiAnQ3VyYcOnYW8nLAogICAgICAnUFRZUEVfTEFCRUwnID0+ICdDYXRlZ29yeScsCiAgICAgICdQVFlQRV9WQUxVRScgPT4gJ1NpbmdsZSBGYW1pbHkgSG9tZXMnLAogICAgICAnUFZJRVdfTEFCRUwnID0+ICdWaWV3JywKICAgICAgJ1BWSUVXX1ZBTFVFJyA9PiAnT2NlYW4gVmlldycsCiAgICAgICdCRURTX0xBQkVMJyA9PiAnQmVkcycsCiAgICAgICdCRURTX1ZBTFVFJyA9PiA3LAogICAgICAnQkFUSFNfTEFCRUwnID0+ICdCYXRocycsCiAgICAgICdCQVRIU19WQUxVRScgPT4gNiwKICAgICAgJ0xTUEFDRV9MQUJFTCcgPT4gJ0wuU3BhY2UnLAogICAgICAnTFNQQUNFX1ZBTFVFJyA9PiAnNDkxIG3CsicsCiAgICAgICdMQVJFQV9MQUJFTCcgPT4gJ0xhbmQnLAogICAgICAnTEFSRUFfVkFMVUUnID0+ICcxLDMxMCBtwrInLAogICAgICAnUENMQVNTX0xBQkVMJyA9PiAnQ2xhc3MnLAogICAgICAnUENMQVNTX1ZBTFVFJyA9PiAnUmVzaWRlbnRpYWwnLAogICAgICAnSFRNTCcgPT4gJzxsaT48Yj5SZWYjPC9iPiA1MTI1MDc8L2xpPgo8bGk+PGI+TmVpZ2hib3Job29kPC9iPiBXaWxsZW1zdGFkIEVhc3Q8L2xpPgo8bGk+PGI+Q291bnRyeTwvYj4gQ3VyYcOnYW88L2xpPgo8bGk+PGI+Q2F0ZWdvcnk8L2I+IFNpbmdsZSBGYW1pbHkgSG9tZXM8L2xpPgo8bGk+PGI+VmlldzwvYj4gT2NlYW4gVmlldzwvbGk+CjxsaT48Yj5CZWRzPC9iPiA3PC9saT4KPGxpPjxiPkJhdGhzPC9iPiA2PC9saT4KPGxpPjxiPkwuU3BhY2U8L2I+IDQ5MSBtwrI8L2xpPgo8bGk+PGI+TGFuZDwvYj4gMSwzMTAgbcKyPC9saT4KPGxpPjxiPkNsYXNzPC9iPiBSZXNpZGVudGlhbDwvbGk+JywKICAgICksCiAgICAnZmVhdHVyZXMnID0+ICcKPGxpPjxiPkNvbmRpdGlvbjwvYj48c3Bhbj48dWw+PGxpPldlbGwgTWFpbnRhaW5lZDwvbGk+PC91bD48L3NwYW4+PC9saT4KPGxpPjxiPkFwcGxpYW5jZXM8L2I+PHNwYW4+PHVsPjxsaT5EaXNod2FzaGVyPC9saT48bGk+U3RvdmU8L2xpPjxsaT5GcmlkZ2UgKyBXYXRlci9JY2UgRGlzcGVuc2VyPC9saT48L3VsPjwvc3Bhbj48L2xpPgo8bGk+PGI+RnVybmlzaGVkPC9iPjxzcGFuPjx1bD48bGk+VW5mdXJuaXNoZWQ8L2xpPjwvdWw+PC9zcGFuPjwvbGk+CjxsaT48Yj5QYXJraW5nIC0gVHlwZTwvYj48c3Bhbj48dWw+PGxpPkdhcmFnZTwvbGk+PC91bD48L3NwYW4+PC9saT4KPGxpPjxiPlN0b3JhZ2U8L2I+PHNwYW4+PHVsPjxsaT5Hb29kIFN0b3JhZ2U8L2xpPjwvdWw+PC9zcGFuPjwvbGk+CjxsaT48Yj5TZWN1cml0eTwvYj48c3Bhbj48dWw+PGxpPlNlY3VyaXR5IEd1YXJkPC9saT48bGk+U2VjdXJpdHkgR2F0ZTwvbGk+PC91bD48L3NwYW4+PC9saT4KPGxpPjxiPkFpciBDb25kaXRpb25pbmc8L2I+PHNwYW4+PHVsPjxsaT5BaXIgQ29uZGl0aW9uaW5nPC9saT48L3VsPjwvc3Bhbj48L2xpPgo8bGk+PGI+Qm9hdCBBY2Nlc3M8L2I+PHNwYW4+PHVsPjxsaT5Cb2F0IEFjY2VzczwvbGk+PC91bD48L3NwYW4+PC9saT4KPGxpPjxiPllhcmQgLyBMYW5kc2NhcGluZzwvYj48c3Bhbj48dWw+PGxpPkxhcmdlIEZlbmNlZCBZYXJkPC9saT48L3VsPjwvc3Bhbj48L2xpPgo8bGk+PGI+UGF0aW8gLSBEZWNrIC0gUG9yY2g8L2I+PHNwYW4+PHVsPjxsaT5EZWNrPC9saT48bGk+QmFsY29ueTwvbGk+PGxpPlRlcnJhY2UgLSBXcmFwIEFyb3VuZDwvbGk+PC91bD48L3NwYW4+PC9saT4KPGxpPjxiPk5lYXIgQnk8L2I+PHNwYW4+PHVsPjxsaT5QYXJrIC0gR3JlZW4gQXJlYTwvbGk+PGxpPlB1YmxpYyBUcmFuc3BvcnRhdGlvbjwvbGk+PGxpPlJlY3JlYXRpb25hbCBBY3Rpdml0aWVzPC9saT48bGk+UmVzdGF1cmFudHM8L2xpPjwvdWw+PC9zcGFuPjwvbGk+CjxsaT48Yj5Td2ltbWluZyBQb29sPC9iPjxzcGFuPjx1bD48bGk+QWJvdmUgR3JvdW5kPC9saT48L3VsPjwvc3Bhbj48L2xpPgo8bGk+PGI+Um9vbXM8L2I+PHNwYW4+PHVsPjxsaT5LaXRjaGVuPC9saT48bGk+TGl2aW5nIFJvb208L2xpPjxsaT5MYXVuZHJ5IFJvb208L2xpPjxsaT5CYXNlbWVudDwvbGk+PGxpPkJlZHJvb208L2xpPjxsaT5NYXN0ZXIgQmVkcm9vbTwvbGk+PGxpPkJhdGhyb29tPC9saT48bGk+U3RvcmFnZTwvbGk+PGxpPkhhbGx3YXk8L2xpPjwvdWw+PC9zcGFuPjwvbGk+CjxsaT48Yj5EaXN0aW5jdGl2ZSBGZWF0dXJlczwvYj48c3Bhbj48dWw+PGxpPkhvdCBUdWIgLyBKYWN1enppPC9saT48bGk+V2Fsay1JbiBDbG9zZXQ8L2xpPjxsaT5HdWVzdCBIb3VzZTwvbGk+PC91bD48L3NwYW4+PC9saT4KPGxpPjxiPkxvY2F0aW9uIEZlYXR1cmVzPC9iPjxzcGFuPjx1bD48bGk+UHVibGljIFRyYW5zcG9ydGF0aW9uPC9saT48bGk+V2F0ZXIgQWNjZXNzPC9saT48bGk+UXVpZXQgQXJlYTwvbGk+PC91bD48L3NwYW4+PC9saT4KPGxpPjxiPkZsb29yczwvYj48c3Bhbj48dWw+PGxpPlRpbGVzPC9saT48L3VsPjwvc3Bhbj48L2xpPgo8bGk+PGI+S2l0Y2hlbjwvYj48c3Bhbj48dWw+PGxpPkNlbnRyYWwgY29va2luZyBpc2xhbmQ8L2xpPjwvdWw+PC9zcGFuPjwvbGk+CjxsaT48Yj5CYXRocm9vbTwvYj48c3Bhbj48dWw+PGxpPkphY3V6emkgQmF0aHR1YjwvbGk+PGxpPlNlcGFyYXRlIFNob3dlcjwvbGk+PC91bD48L3NwYW4+PC9saT4nLAogICAgJ3JlbWFya3MnID0+ICdXaXRoaW4gdGhlIHRyYW5xdWlsIGdhdGVkIGNvbW11bml0eSBvZiBKYW4gU29mYXQgbGllcyB0aGlzIG1hc3RlcmZ1bGx5IGJ1aWx0IHZpbGxhLiBDYXB0aXZhdGluZyBmcm9tIG91dHNpZGUgdGhlIGdhdGUsIHRoZSB1bmlxdWUgdmlsbGEgd2lsbCBpbnNwaXJlIHlvdSBmcm9tIHRoZSBtb21lbnQgeW91IGVudGVyIGFuZCBjb250aW51ZSB0byB0YWtlIHlvdXIgYnJlYXRoIGF3YXkuIENvbnNpc3Rpbmcgb2YgYSBsYXJnZSBtYWluIHZpbGxhIGltcGVjY2FibHkgZGVzaWduZWQgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIHdhdGVyIHZpZXcsIGEgbGFyZ2Ugc2VwYXJhdGUgZ3Vlc3QgaG91c2UgaW4gdGhlIGJhY2sgYW5kIHRoZSB2YXN0IG5hdHVyYWwgYXJlYSBiZXlvbmQuIEl0cyBsYXJnZSBwb29sIGFuZCBsYW5kc2NhcGVkIGdhcmRlbiBibGVuZCBoYXJtb25pb3VzbHkgd2l0aCB0aGUgYXJjaGl0ZWN0dXJlIGFzIGV2ZXJ5IHNxdWFyZSBtZXRlciBoYXMgYmVlbiBpbnRlbnRpb25hbGx5IGRlc2lnbmVkIHRvIGNyZWF0ZSBhIHRydWx5IGluY29tcGFyYWJsZSBleHBlcmllbmNlLgoKVXBvbiBlbnRlcmluZyB0aHJvdWdoIHRoZSBtYWluIGdhdGUsIHlvdSBoYXZlIHRoZSBvcHRpb24gdG8gcGFyayBpbiB5b3VyIHNwYWNpb3VzIHR3by1jYXIgZ2FyYWdlIG9yIG9uIHRoZSBhbXBsZSBicmljayBkcml2ZXdheS4gRnJvbSB0aGUgYnJpY2sgZHJpdmV3YXksIHlvdSBoYXZlIGFjY2VzcyB0byB0aGUgdmlsbGEgdGhyb3VnaCB0aGUgZ3JhbmQgZG91YmxlLWRvb3IgZW50cmFuY2UgbGVhZGluZyB0byB0aGUgb3BlbiBkZXNpZ24gYXRyaXVtLXN0eWxlIGNlbnRyYWwgYXJlYS4gQSBwYXJ0aXRpb24gc2VwYXJhdGVzIHRoZSBhcmVhLCBhbG9uZyB0aGUgc2lkZSB0byB0aGUgcmlnaHQgYW4gb2ZmaWNlIHJvb20gYW5kIGEgcGFydGlhbCBiYXRocm9vbSBhbmQgdG8gdGhlIGxlZnQgdGhlIGtpdGNoZW4gYW5kIGZpcnN0IHBhdGlvIGFjY2Vzc2VkIGJ5IGxhcmdlIGdsYXNzIHNsaWRpbmcgZG9vcnMuIExvb2tpbmcgdXAgd2l0aGluIHRoZSBjZW50cmFsIGFyZWEgeW91IGNhbiBkaXJlY3RseSBzZWUgdGhlIHNlY29uZC1mbG9vciBvcGVuIGxhbmRpbmcsIGNyZWF0aW5nIGEgc2Vuc2Ugb2YgY29ubmVjdGlvbiB0aHJvdWdob3V0IHRoZSB2aWxsYSB3aGljaCBpcyBmaXR0ZWQgYW5kIHJlYWR5IGZvciBhIGdyYW5kIGNoYW5kZWxpZXIuIFNoYXJpbmcgdGhlIGNlbnRyYWwgYXJlYSBvZiB0aGUgdmlsbGEgdG8gaXRzIGZ1cnRoZXIgc2lkZSBpcyB0aGUgbGl2aW5nIHJvb20gd2hpY2ggY29ubmVjdHMgZGlyZWN0bHkgd2l0aCBsYXJnZSBzbGlkaW5nIGdsYXNzIGRvb3JzIHRvIHRoZSBzZWNvbmQgcGF0aW8gd2hpY2ggb3Zlcmxvb2tzIHRoZSBwb29sLiAKCkZyb20gdGhlIGdhcmFnZSwgeW91IGhhdmUgZGlyZWN0IGFjY2VzcyB0byB0aGUgbGF1bmRyeSByb29tL3BhbnRyeSB3aXRoIGEgc2Vjb25kIGxhcmdlIEFtZXJpY2FuIHN0eWxlIGZyaWRnZS9mcmVlemVyIGFuZCBwbGVudGlmdWwgc3RvcmFnZSBzcGFjZS4gVGhyb3VnaCB0aGUgbmV4dCBkb29yLCB5b3Ugd2lsbCBhcnJpdmUgYXQgdGhlIGp1bmN0aW9uIGNvbm5lY3RpbmcgdG8gYm90aCB0aGUga2l0Y2hlbiBhbmQgcHJldmlvdXNseSBtZW50aW9uZWQgY2VudHJhbCBhcmVhLiBGb2N1c2luZyBub3cgb24gdGhlIGtpdGNoZW4sIGl0cyBpbXBlY2NhYmxlIGRlc2lnbiBhbGxvd3MgZm9yIGFuIG9wZW4gYW5kIHN0YXRlbHkgbG9vay4gQSBsb25nIGNlbnRyYWwga2l0Y2hlbiBpc2xhbmQgd2l0aCBhIHJhaXNlZCBjb3VudGVyIG9uIG9uZSBzaWRlIHdpdGggYSBodWdlIG92ZW4gYW5kIDYtcGllY2Ugc3RvdmUgYWJvdmUgaXQgbWVzaCBwZXJmZWN0bHkgdG9nZXRoZXIuIEl0cyBicm9hZCBmYXVjZXQgY291bnRlciBvbiB0aGUgZmFyIGVuZCBhY2NvbXBhbmllZCB3aXRoIHRoZSB3aW5kb3dzIHByb3ZpZGluZyBuYXR1cmFsIGxpZ2h0aW5nIGFuZCBhIGxlbmd0aHkgc3RyZXRjaCBvZiBoaWdoLXF1YWxpdHkgY2FiaW5ldHMgd2l0aCB0d28gZ2xhc3MgZG9vcnMgY2VudHJhbGx5IHBsYWNlZCB0byBzaG93IG9mZiB5b3VyIGNvbGxlY3Rpb24gb2Ygc3Bpcml0cyBhbmQgd2luZXMuIFRoZXJlIGlzIGV2ZW4gYSByZWZpbmVkLWxvb2tpbmcgbWljcm93YXZlIGJ1aWx0IGludG8gdGhlIGNhYmluZXQgZml4dHVyZS4gT24gdGhlIG9wcG9zaXRlIHNpZGUgb2Ygd2hpY2ggaXMgYW5vdGhlciBnbGFzcyBzbGlkaW5nIGRvb3IgcHJvdmlkaW5nIHlldCBtb3JlIG5hdHVyYWwgbGlnaHQgYW5kIGFjY2VzcyB0byB0aGUgY29tbXVuYWwgYXJlYXMgb2YgdGhlIHZpbGxhIGFuZCBwb29sLgoKQSBzZXQgb2Ygc3RhaXJzIGluIHRoZSBjZW50cmFsIGFyZWEgbGVhZHMgeW91IHRvIHRoZSBsaXZpbmcgcXVhcnRlcnMgb2YgdGhlIHZpbGxhLiBQcmVzZW50IGhlcmUgYXJlIHRocmVlIGJlZHJvb21zLCBvbmUgb2Ygd2hpY2ggaXMgdGhlIG1hc3RlciBiZWRyb29tIGFuZCBvZiBjb3Vyc2UgdGhlIGxhbmRpbmcgYXJlYSBhbGxvd2luZyB5b3UgdG8gc2VlIGRvd25zdGFpcnMuIFRoZSBtYXN0ZXIgYmVkcm9vbSBpcyBzcGFjaW91cywgYWlyY29uZGl0aW9uZWQgYW5kIGNvbnRhaW5zIHdvb2RlbiBzaHV0dGVyIHdpbmRvd3MgYWxsb3dpbmcgZm9yIGEgZ2VudGxlIGJyZWV6ZSBhbmQgYSB0ZXJyYWNlIG92ZXJsb29raW5nIHRoZSBwb29sIGFuZCB0aGUgd2F0ZXIvbmF0dXJhbCBsYW5kc2NhcGUgYmVoaW5kIHRoZSB2aWxsYS4gQSBsb29waW5nIGNvcnJpZG9yIGVuY2lyY2xpbmcgdGhlIHJvb20gcHJvdmlkZXMgZWFzZSBvZiBhY2Nlc3MgdG8gdGhlIGdyYW5kIGVuLXN1aXRlIGJhdGhyb29tIHdpdGggYSBob3QgdHViLCBzZXBhcmF0ZSBzaG93ZXIsIGhpcyBhbmQgaGVycyBzaW5rcyBhbmQgZmluYWxseSBhIGxhcmdlIHdhbGstaW4gY2xvc2V0LiBUaGUgdHdvIG90aGVyIGJlZHJvb21zIChvbmUgb2Ygd2hpY2ggaXMgbm93IGFuIGFkZGl0aW9uYWwgb2ZmaWNlKSBib3RoIGNvbnRhaW4gYWlyIGNvbmRpdGlvbmVycyBidWlsdC1pbiBjbG9zZXRzIGFuZCBlbi1zdWl0ZSBiYXRocm9vbXMuCgpUaGUgbGFyZ2UgZXh0ZXJpb3Igb2YgdGhlIHZpbGxhIG9uIHRoZSB0b3AgbGV2ZWwgY29uc2lzdHMgb2YgYSB3aWRlIHRpbGVkIGFyZWEgZW5jb21wYXNzaW5nIHRoZSBwYXRpbyBhcmVhcyBhbmQgcG9vbCwgdGhlIHN0dW5uaW5nIHBvb2wgaXRzZWxmIGFsc28gY29udGFpbnMgdHdvIGJ1aWx0LWluIGxvdW5nZSBzdHlsZSBzZWF0cyBvbiBhIHNoYWxsb3cgcG9ydGlvbiBvZiB0aGUgcG9vbCBhbmQgYSB3YXRlcmZhbGwgZnVuY3Rpb24gYXQgdGhlIGZhciBlbmQuIEFyb3VuZCB0aGlzIGFyZWEgeW91IGhhdmUgY29sb3JmdWwgdHJvcGljYWwgcGxhbnRzIGFuZCBzZXZlcmFsIHBhbG0gdHJlZXMuIFRoaXMgZW50aXJlIGFyZWEgY29ubmVjdHMgaGFybW9uaW91c2x5IHdpdGggdGhlIG9wZW4gZGVzaWduIG9mIHRoZSB2aWxsYSBhbmQgb2YgY291cnNlIHRoZSBpbnNwaXJhdGlvbmFsIG5hdHVyYWwgdmlldyBiZWhpbmQgYW5kIHRoZSBTcGFuaXNoIFdhdGVyIEJheS4KCkJlaGluZCBhIGdhdGUgdG8gdGhlIGZhciBzaWRlIHlvdSB3aWxsIGNvbWUgdG8gYSBsb25nIHdhbGt3YXkgd2hpY2ggY29ubmVjdHMgdGhlIG1haW4gZ2F0ZSBvZiB0aGUgdmlsbGEgYWxsIHRoZSB3YXkgdG8gdGhlIGFwYXJ0bWVudCBkb3duIGEgc2hvcnQgc3RhaXJjYXNlLiBUaGUgd2Fsa3dheSBpcyB2ZXJ5IHNlY3VyZSB3aXRoIGFkZGl0aW9uYWwgZ2F0ZXMsIGVtYnJhY2VkIGJ5IGEgc3RyZXRjaCBvZiBncmFuZCBwYWxtIHRyZWVzLiBUaGlzIGludGVudGlvbmFsIGRlc2lnbiB3YXMgaW1wbGljYXRlZCBmb3IgdG90YWwgcHJpdmFjeSB0byBib3RoIHRoZSBvY2N1cGFudHMgb2YgdGhlIHZpbGxhIGFuZCBndWVzdCBob3VzZS4gQWZ0ZXIgY29taW5nIGRvd24gdGhlIHN0YWlycyB0byB0aGUgbG93ZXIgbGV2ZWwgb2YgdGhlIGxvdCB5b3Ugd2lsbCBpbW1lZGlhdGVseSBub3RpY2UgaG93IHNwYWNpb3VzIGJvdGggdGhlIGFwYXJ0bWVudCBpcyBhbmQgdGhlIGxhbmQgYXJvdW5kIGl0LCBjYXJwZXRlZCB3aXRoIGx1c2Npb3VzIGdyZWVuIGFydGlmaWNpYWwgZ3Jhc3MuIFRoZSBhcGFydG1lbnQgaG9sZHMgdHdvIGxhcmdlIGFpcmNvbmRpdGlvbmVkIGJlZHJvb21zLCBvbmUgc2hhcmVkIGJhdGhyb29tIGFuZCBhIGZ1bGx5IGluZGVwZW5kZW50IHN0dWRpbyB3aXRoIGtpdGNoZW5ldHRlLCBlbi1zdWl0ZSBiYXRocm9vbSBhbmQgYWlyIGNvbmRpdGlvbmluZy4gV2l0aGluIHRoZSBzcGFjaW91cyBjZW50cmFsIGFyZWEgaXMgYSBsZW5ndGh5IGtpdGNoZW4gaXNsYW5kLCBzcGFjaW91cyBlbm91Z2ggZm9yIGFsbCB0byBlYXQgYW5kIGNvbWUgdG9nZXRoZXIgb24gYW5kIGEga2l0Y2hlbmV0dGUgd2l0aCBhIGZyaWRnZSBvdmVuL3N0b3ZlIGFuZCBtaWNyb3dhdmUuIEJlaGluZCB0aGVzZSBpcyBhIHNtYWxsIGxvdW5nZSBhcmVhLiBHbGFzcyBzbGlkaW5nIGRvb3JzIHRvIGVpdGhlciBzaWRlIGFsbG93IGZvciBhbiBleHF1aXNpdGUgb3BlbiBmZWVsaW5nIGFuZCBlYXN5IGFjY2VzcyB0byB0aGUgb3V0c2lkZSBwYXRpbyBhcmVhLgoKQWRkaXRpb25hbCBhbWVuaXRpZXMgc2hhcmVkIGJ5IGJvdGggdGhlIHZpbGxhIGFuZCBhcGFydG1lbnQgYXJlIDI0IHNvbGFyIHBhbmVscywgY292ZXJlZCB0ZXJyYWNlcywgYmVhbSBjZWlsaW5ncywgYm90aCAxMTAtIGFuZCAyMjAtdm9sdCBlbGVjdHJpY2FsIHNvY2tldHMgYW5kIHN1cGVyaW9yIGhpZ2ggZ3JhZGUgYnVpbGRpbmcgbWF0ZXJpYWxzIG9uIHBhciB0byB0aGF0IG9mIGEgZml2ZS1zdGFyIHJlc29ydCBzdWNoIGFzIEJhbGkgd29vZCBmb3VuZCB0aHJvdWdob3V0IHRoZSB2aWxsYS4gRnVydGhlcm1vcmUsIHRoZXJlIGFyZSBzbW9rZSBkZXRlY3RvcnMgYW5kIGFuIGFsYXJtIHN5c3RlbSB0aHJvdWdob3V0IHRoZSBwcm9wZXJ0eS4gUHJlc2VudCBpbiB0aGUgZ2F0ZWQgSmFuIFNvZmF0IGNvbW11bml0eSB0aGVyZSBpcyBhbHNvIGEgbWFyaW5hIHNvIHlvdSBtYXkgYWNjZXNzIHRoZSB3YXRlcnMgd2hpY2ggdGhlIHZpbGxhIGhhcyBhbiBleGNlbGxlbnQgdmlldyBvZiBhbmQgMjRob3VyIG1hbm5lZCBzZWN1cml0eSBhdCB0aGUgZ2F0ZS4KCkNvbnRhY3QgdXMgdG9kYXkgYW5kIHNjaGVkdWxlIGEgdmlld2luZyEhCgo8dT5KQU4gU09GQVQ8L3U+CkphbiBTb2ZhdCBpcyBhbiB1cHNjYWxlIGdhdGVkIGNvbW11bml0eSwgcXVpZXRseSBsb2NhdGVkIG5leHQgdG8gdGhlIFNwYW5pc2ggV2F0ZXIuIFRoZSByZXNvcnQgZmVhdHVyZXMgMjQvNyBtYW5uZWQgc2VjdXJpdHkgZ2F0ZSwgc2VjdXJpdHkgcm91bmRzIGFuZCBhbGFybSByZXNwb25zZS4gSW4gdGhpcyByZXNpZGVudGlhbCBhcmVhIGFyZSBtYW55IGx1eHVyaW91cyBob3VzZXMgbG9jYXRlZCBvbiB0aGUgaGlsbHMsIGFsbCBvZiB0aGVtIGJlbmVmaXQgZnJvbSB0aGUgY29vbCBicmVlemUgYW5kIHNvbWUgb2YgdGhlbSBoYXZlIGEgc3BlY3RhY3VsYXIgdmlldyBvdmVybG9va2luZyB0aGUgVGFmZWxiZXJnIGFuZCB0aGUgU3BhbmlzaCBXYXRlci4gQWxsIHJlc2lkZW50cyBoYXZlIGFjY2VzcyB0byB0aGUgY29tbXVuYWwgbWFyaW5hIGFuZCBhIHBsYXkgZ3JvdW5kIGZvciBjaGlsZHJlbi4gTW9zdCBhbWVuaXRpZXMgc3VjaCBhcyBiZWFjaGVzLCBzaG9wcyBhbmQgcmVzdGF1cmFudHMgYXJlIG9ubHkgbWludXRlcyBhd2F5IGFuZCB0aGUgY2VudGVyIG9mIFdpbGxlbXN0YWQgaXMgYSAxNSBtaW51dGUgZHJpdmUuJywKICAgICdyZW50YWxpbmZvJyA9PiAnJywKICAgICdkaXJlY3Rpb25zJyA9PiAnQ2xpY2sgb24gdGhlIOKAmGRpcmVjdGlvbnPigJkgYnV0dG9uIGJlbG93IGZvciB0aGUgZGlyZWN0aW9ucyB0byBqYW4gc29mYXQgbHV4dXJ5IHZpbGxhICsgZ3Vlc3QgaG91c2UgPGJyPlsgPGEgaHJlZj0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9tYXBzL2Rpci9DdXJhJUMzJUE3YW8lMkJJbnRlcm5hdGlvbmFsJTJCQWlycG9ydCUyQyUyQkN1cmElQzMlQTdhby8xMi4wODg5NzY4NTM1NDE4OTQwLC02OC44NTM1NTgwMDM5MDI0NDAwL0AxMi4xNDA3MDEzLC02OC45NjU4MzgzLDEzeiIgdGFyZ2V0PSJfYmxhbmsiPjxpIGNsYXNzPSJmYSBmYS1nbG9iZSIgYXJpYS1oaWRkZW49InRydWUiPjwvaT4mbmJzcDtEaXJlY3Rpb25zPC9hPiBdJywKICAgICdkaXNjbG9zdXJlcycgPT4gJ3sibGluZXMiOnsicHJpY2UiOnsicG9zdGZpeCI6ZmFsc2UsImV4dHJhIjoiRmVlcyBwYWlkIGJ5IFxcIlNlbGxlclxcIiJ9LCJzZWN0aW9uIjpbXX0sImRhdGEiOnsiaW5mbyI6IjExNDQ0MzEtRU4tc2FsZSIsImZlZXNfcGFpZF9ieSI6MiwicmVudGFsX2V4cGVuc2VzIjp7ImN1cnIiOm51bGwsImFtb3VudCI6IjAuMDAiLCJwZXIiOiIifSwicmVudGFsX3Rlcm1zIjoiMSIsInJlbnRhbF9kZXBvc2l0Ijp7ImN1cnIiOm51bGwsImFtb3VudCI6bnVsbCwicGVyIjoiIn0sImJ1aWxkaW5nX3VuaXRzIjoiIiwibGVnYWxfcHJvY2VlZGluZ3MiOiIwIiwicmVudGFsX3ByaWNlIjp7ImN1cnIiOiJVU0QiLCJhbW91bnQiOiI5NzUwMDAuMDAiLCJwZXIiOm51bGx9LCJyZW50YWxfY29tbWlzc2lvbiI6eyJjdXJyIjpudWxsLCJhbW91bnQiOiIiLCJwZXIiOiIifSwiY29uZG9fZmVlcyI6eyJjdXJyIjoiIiwiYW1vdW50IjoiIiwicGVyIjoiIn19fScsCiAgICAnbWV0YScgPT4gCiAgICBhcnJheSAoCiAgICAgICdsaWQnID0+IAogICAgICBhcnJheSAoCiAgICAgICAgJ2xhYmVsJyA9PiAnTUxTJywKICAgICAgICAndmFsdWUnID0+ICcxMTQ0NDMxJywKICAgICAgICAnc2hvdycgPT4gJ01MUyAxMTQ0NDMxJywKICAgICAgKSwKICAgICAgJ3JlZm5vJyA9PiAKICAgICAgYXJyYXkgKAogICAgICAgICdsYWJlbCcgPT4gJ1JlZiMnLAogICAgICAgICd2YWx1ZScgPT4gJzUxMjUwNycsCiAgICAgICAgJ3Nob3cnID0+ICdSZWYjIDUxMjUwNycsCiAgICAgICksCiAgICAgICdjb3VudHJ5JyA9PiAKICAgICAgYXJyYXkgKAogICAgICAgICdjb2RlJyA9PiAnQ1YnLAogICAgICAgICdsYWJlbCcgPT4gJ0NvdW50cnknLAogICAgICAgICd2YWx1ZScgPT4gJ0N1cmHDp2FvJywKICAgICAgKSwKICAgICAgJ3BjbGFzcycgPT4gCiAgICAgIGFycmF5ICgKICAgICAgICAnY29kZScgPT4gJ1JFUycsCiAgICAgICAgJ2xhYmVsJyA9PiAnUHJvcGVydHkgQ2xhc3MnLAogICAgICAgICdsYWJlbDInID0+ICdDbGFzcycsCiAgICAgICAgJ3ZhbHVlJyA9PiAnUmVzaWRlbnRpYWwnLAogICAgICApLAogICAgICAnZXhjbCcgPT4gCiAgICAgIGFycmF5ICgKICAgICAgICAnbGFiZWwnID0+ICdFeGNsdXNpdmUnLAogICAgICAgICd2YWx1ZScgPT4gJzEnLAogICAgICApLAogICAgICAnZnRyZCcgPT4gCiAgICAgIGFycmF5ICgKICAgICAgICAnbGFiZWwnID0+ICdGZWF0dXJlZCcsCiAgICAgICAgJ3ZhbHVlJyA9PiAnMScsCiAgICAgICksCiAgICAgICdwaHRjbnQnID0+IAogICAgICBhcnJheSAoCiAgICAgICAgJ3ZhbHVlJyA9PiAnMzAnLAogICAgICApLAogICAgICAnc3RhdHVzJyA9PiAKICAgICAgYXJyYXkgKAogICAgICAgICdjb2RlJyA9PiAnQScsCiAgICAgICAgJ2xhYmVsJyA9PiAnTGlzdGluZyBTdGF0dXMnLAogICAgICAgICdsYWJlbDInID0+ICdTdGF0dXMnLAogICAgICAgICd2YWx1ZScgPT4gJ0FjdGl2ZScsCiAgICAgICAgJ3ZhbHVlMicgPT4gJycsCiAgICAgICksCiAgICAgICdzZXRvcHQnID0+IAogICAgICBhcnJheSAoCiAgICAgICAgJ3ZhbHVlMicgPT4gJycsCiAgICAgICksCiAgICAgICdjYXRlZ29yeScgPT4gCiAgICAgIGFycmF5ICgKICAgICAgICAnY29kZScgPT4gJzQ0OCcsCiAgICAgICAgJ2xhYmVsJyA9PiAnUHJvcGVydHkgQ2F0ZWdvcnknLAogICAgICAgICdsYWJlbDInID0+ICdDYXRlZ29yeScsCiAgICAgICAgJ3ZhbHVlJyA9PiAnU2luZ2xlIEZhbWlseSBIb21lcycsCiAgICAgICAgJ3ZhbHVlMicgPT4gJ0hvbWUnLAogICAgICApLAogICAgICAndHJhbnMnID0+IAogICAgICBhcnJheSAoCiAgICAgICAgJ2NvZGUnID0+ICdNUycsCiAgICAgICAgJ2xhYmVsJyA9PiAnVHJhbnNhY3Rpb24gVHlwZScsCiAgICAgICAgJ2xhYmVsMicgPT4gJ1RyYW5zYWN0aW9uJywKICAgICAgICAndmFsdWUnID0+ICdGb3IgU2FsZScsCiAgICAgICAgJ3ZhbHVlMicgPT4gJ1NhbGUnLAogICAgICApLAogICAgICAncHJpY2UnID0+IAogICAgICBhcnJheSAoCiAgICAgICAgJ2NvZGUnID0+ICc5NzUwMDAuMDAnLAogICAgICAgICdsYWJlbCcgPT4gJ0Fza2luZyBQcmljZScsCiAgICAgICAgJ2xhYmVsMicgPT4gJ1ByaWNlJywKICAgICAgICAndmFsdWUnID0+ICdVUyQgOTc1LDAwMCcsCiAgICAgICksCiAgICAgICd6b25lJyA9PiAKICAgICAgYXJyYXkgKAogICAgICAgICdjb2RlJyA9PiAnMTAwMDcnLAogICAgICAgICdsYWJlbCcgPT4gJ0FyZWEnLAogICAgICAgICd2YWx1ZScgPT4gJ1dpbGxlbXN0YWQgRWFzdCcsCiAgICAgICksCiAgICAgICdkaWQnID0+IAogICAgICBhcnJheSAoCiAgICAgICAgJ2NvZGUnID0+ICcxMDAwNycsCiAgICAgICAgJ2xhYmVsJyA9PiAnTmVpZ2hib3Job29kJywKICAgICAgICAndmFsdWUnID0+ICdXaWxsZW1zdGFkIEVhc3QnLAogICAgICApLAogICAgICAnZ2xhdCcgPT4gCiAgICAgIGFycmF5ICgKICAgICAgICAndmFsdWUnID0+ICcxMi4wODg5NzY4NTM1NDE4OTQwJywKICAgICAgKSwKICAgICAgJ2dsbmcnID0+IAogICAgICBhcnJheSAoCiAgICAgICAgJ3ZhbHVlJyA9PiAnLTY4Ljg1MzU1ODAwMzkwMjQ0MDAnLAogICAgICApLAogICAgICAncm9vbXMnID0+IAogICAgICBhcnJheSAoCiAgICAgICAgJ3ZhbHVlJyA9PiAnJywKICAgICAgKSwKICAgICAgJ2JlZHMnID0+IAogICAgICBhcnJheSAoCiAgICAgICAgJ2NvZGUnID0+ICc3JywKICAgICAgICAnbGFiZWwnID0+ICdCZWRyb29tcycsCiAgICAgICAgJ2xhYmVsMicgPT4gJ0JlZHMnLAogICAgICAgICd2YWx1ZScgPT4gNywKICAgICAgKSwKICAgICAgJ2JhdGhzJyA9PiAKICAgICAgYXJyYXkgKAogICAgICAgICdjb2RlJyA9PiAnNi4wJywKICAgICAgICAnbGFiZWwnID0+ICdCYXRocm9vbXMnLAogICAgICAgICdsYWJlbDInID0+ICdCYXRocycsCiAgICAgICAgJ3ZhbHVlJyA9PiA2LAogICAgICApLAogICAgICAnbHNwYWNlJyA9PiAKICAgICAgYXJyYXkgKAogICAgICAgICdjb2RlJyA9PiAnNDkxLjAwMDAwMDAwMDAwMCcsCiAgICAgICAgJ2xhYmVsJyA9PiAnTGl2aW5nIFNwYWNlJywKICAgICAgICAnbGFiZWwyJyA9PiAnTC5TcGFjZScsCiAgICAgICAgJ3ZhbHVlJyA9PiAnNDkxIG3CsicsCiAgICAgICksCiAgICAgICdsYXJlYScgPT4gCiAgICAgIGFycmF5ICgKICAgICAgICAnY29kZScgPT4gJzEzMTAuMDAwMDAwMDAwMDAwJywKICAgICAgICAnbGFiZWwnID0+ICdMYW5kIEFyZWEnLAogICAgICAgICdsYWJlbDInID0+ICdMYW5kJywKICAgICAgICAndmFsdWUnID0+ICcxLDMxMCBtwrInLAogICAgICApLAogICAgICAncHZpZXcnID0+IAogICAgICBhcnJheSAoCiAgICAgICAgJ2NvZGUnID0+ICc0MzMnLAogICAgICAgICdsYWJlbCcgPT4gJ1Byb3BlcnR5IFZpZXcnLAogICAgICAgICdsYWJlbDInID0+ICdWaWV3JywKICAgICAgICAndmFsdWUnID0+ICdPY2VhbiBWaWV3JywKICAgICAgICAndmFsdWUyJyA9PiAnT2NlYW4nLAogICAgICApLAogICAgICAnY2l0eScgPT4gCiAgICAgIGFycmF5ICgKICAgICAgICAnbGFiZWwnID0+ICdOZWlnaGJvcmhvb2QnLAogICAgICAgICd2YWx1ZScgPT4gJycsCiAgICAgICksCiAgICAgICdzdGF0ZScgPT4gCiAgICAgIGFycmF5ICgKICAgICAgICAnY29kZScgPT4gJ1dpbGxlbXN0YWQnLAogICAgICAgICdsYWJlbCcgPT4gJ0FyZWEnLAogICAgICAgICd2YWx1ZScgPT4gJ1dpbGxlbXN0YWQnLAogICAgICApLAogICAgICAndGl0bGUnID0+IAogICAgICBhcnJheSAoCiAgICAgICAgJ3ZhbHVlJyA9PiAnSmFuIFNvZmF0IEx1eHVyeSBWaWxsYSArIEd1ZXN0IEhvdXNlJywKICAgICAgKSwKICAgICAgJ2Rpc3RyaWN0JyA9PiAKICAgICAgYXJyYXkgKAogICAgICAgICd2YWx1ZScgPT4gJzEwMDA3JywKICAgICAgKSwKICAgICAgJ2N1cnInID0+IAogICAgICBhcnJheSAoCiAgICAgICAgJ3ZhbHVlJyA9PiAnVVNEJywKICAgICAgKSwKICAgICAgJ3ZpZGVvLXRvdXInID0+IAogICAgICBhcnJheSAoCiAgICAgICAgJ2xhYmVsJyA9PiAnVmlydHVhbCBUb3VyJywKICAgICAgICAnbGFiZWwyJyA9PiAnVmlkZW8nLAogICAgICAgICd2YWx1ZScgPT4gMSwKICAgICAgKSwKICAgICAgJ3Bvb2wnID0+IAogICAgICBhcnJheSAoCiAgICAgICAgJ2xhYmVsJyA9PiAnU3dpbW1pbmcgUG9vbCcsCiAgICAgICAgJ2xhYmVsMicgPT4gJ1Bvb2wnLAogICAgICAgICd2YWx1ZScgPT4gMSwKICAgICAgKSwKICAgICAgJ19pZCcgPT4gJzExNDQ0MzEnLAogICAgICAnc2VjdGlvbicgPT4gCiAgICAgIGFycmF5ICgKICAgICAgICAndmFsdWUnID0+ICdtbHMnLAogICAgICApLAogICAgICAnbG9jYWxpdHknID0+IAogICAgICBhcnJheSAoCiAgICAgICAgJ3ZhbHVlJyA9PiBOVUxMLAogICAgICApLAogICAgICAncmVnaW9uJyA9PiAKICAgICAgYXJyYXkgKAogICAgICAgICd2YWx1ZScgPT4gJ1dpbGxlbXN0YWQgRWFzdCcsCiAgICAgICksCiAgICApLAogICAgJ2lzX3NvbGQnID0+IGZhbHNlLAogICAgJ3NvbGRfbGFiZWwnID0+ICcnLAogICAgJ2hlYWRlcnMnID0+IAogICAgYXJyYXkgKAogICAgICAnZ2FsbGVyeScgPT4gJ1Bob3RvIEdhbGxlcnknLAogICAgICAnbWFwbG9jJyA9PiAnTWFwIExvY2F0aW9uJywKICAgICAgJ21hcHNhdCcgPT4gJ1NhdGVsaXRlIFZpZXcnLAogICAgICAndmlkZW9zJyA9PiAnVmlkZW8nLAogICAgICAndnRvdXJzJyA9PiAnVmlydHVhbCBUb3VyJywKICAgICAgJ2RpcmVjdGlvbnMnID0+ICdEaXJlY3Rpb25zJywKICAgICAgJ2RldGFpbHMnID0+ICdQcm9wZXJ0eSBEZXRhaWxzJywKICAgICAgJ2ZlYXR1cmVzJyA9PiAnRmVhdHVyZXMgYW5kIEFtZW5pdGllcycsCiAgICAgICdkaWFnbm9zdGljcycgPT4gJ0VuZXJneSBQZXJmb3JtYW5jZScsCiAgICAgICdyZW1hcmtzJyA9PiAnUHJvcGVydHkgUmVtYXJrcycsCiAgICAgICdkaXNjbG9zdXJlcycgPT4gJ0Rpc2Nsb3N1cmVzJywKICAgICAgJ3NpbWlsYXInID0+ICdTaW1pbGFyIFByb3BlcnRpZXMnLAogICAgICAnZmVhdHVyZWQnID0+ICdGZWF0dXJlZCBQcm9wZXJ0aWVzJywKICAgICAgJ2FnZW50JyA9PiAnQWdlbnQgRGV0YWlscycsCiAgICAgICdyZW50YWxpbmZvJyA9PiAnUmVudGFsIEluZm9ybWF0aW9uJywKICAgICksCiAgICAnaGVhZGluZycgPT4gJ0phbiBTb2ZhdCBMdXh1cnkgVmlsbGEgKyBHdWVzdCBIb3VzZScsCiAgICAnc3ViaGVhZGluZycgPT4gJ1dpbGxlbXN0YWQgRWFzdCDCtyBDdXJhw6dhbycsCiAgICAnaWRzaGVhZGluZycgPT4gJ01MUyMgMTE0NDQzMScsCiAgICAnYnV0dG9ucycgPT4gCiAgICBhcnJheSAoCiAgICAgICdnZW5lcmFsJyA9PiAKICAgICAgYXJyYXkgKAogICAgICAgICdsYWJlbCcgPT4gJ0NvbnRhY3QgVXMnLAogICAgICAgICdocmVmJyA9PiAnL2VuL2MvY29udGFjdC11cy8xMTQ0NDMxJywKICAgICAgKSwKICAgICAgJ2lucXVpcnknID0+IAogICAgICBhcnJheSAoCiAgICAgICAgJ2xhYmVsJyA9PiAnSW5xdWlyeScsCiAgICAgICAgJ2hyZWYnID0+ICcvZW4vYy9pbnF1aXJ5LzExNDQ0MzEnLAogICAgICApLAogICAgICAnc2VuZHRvJyA9PiAKICAgICAgYXJyYXkgKAogICAgICAgICdsYWJlbCcgPT4gJ1NlbmQgdG8nLAogICAgICAgICdocmVmJyA9PiAnL2VuL2Mvc2VuZC8xMTQ0NDMxJywKICAgICAgKSwKICAgICAgJ2FsZXJ0JyA9PiAKICAgICAgYXJyYXkgKAogICAgICAgICdsYWJlbCcgPT4gJ0FsZXJ0JywKICAgICAgICAnaHJlZicgPT4gJy9lbi9jL2FsZXJ0LzExNDQ0MzEnLAogICAgICApLAogICAgICAnb3B0aW4nID0+IAogICAgICBhcnJheSAoCiAgICAgICAgJ2xhYmVsJyA9PiAnTmV3c2xldHRlciBTaWduLXVwJywKICAgICAgICAnaHJlZicgPT4gJy9lbi9jL25ld3NsZXR0ZXIvMTE0NDQzMScsCiAgICAgICksCiAgICAgICdmYXZzJyA9PiAKICAgICAgYXJyYXkgKAogICAgICAgICdsYWJlbCcgPT4gJ0Zhdm9yaXRlJywKICAgICAgICAnaHJlZicgPT4gJy9lbi9jL2Zhdm9yaXRlcy8xMTQ0NDMxJywKICAgICAgKSwKICAgICAgJ3NoYXJlJyA9PiAKICAgICAgYXJyYXkgKAogICAgICAgICdsYWJlbCcgPT4gJ1NoYXJlJywKICAgICAgICAnaHJlZicgPT4gTlVMTCwKICAgICAgKSwKICAgICAgJ3BkZicgPT4gCiAgICAgIGFycmF5ICgKICAgICAgICAnbGFiZWwnID0+ICdQREYnLAogICAgICAgICdocmVmJyA9PiAnL2VuL2EvZG93bmxvYWQvMTE0NDQzMS5wZGY/djE1ODE1Mjg2NDMnLAogICAgICApLAogICAgICAnc2F2ZWZhdicgPT4gCiAgICAgIGFycmF5ICgKICAgICAgICAnbGFiZWxfb2ZmJyA9PiAnU2F2ZScsCiAgICAgICAgJ2xhYmVsX29uJyA9PiAnU2F2ZWQhJywKICAgICAgKSwKICAgICAgJ2dvYmFjaycgPT4gCiAgICAgIGFycmF5ICgKICAgICAgICAnbGFiZWwnID0+ICdHbyBCYWNrJywKICAgICAgICAnaHJlZicgPT4gJy9lbi9kL2phbi1zb2ZhdC1sdXh1cnktdmlsbGEtZ3Vlc3QtaG91c2UtaG9tZS1mb3Itc2FsZS1jdXJhY2FvLTExNDQ0MzEnLAogICAgICApLAogICAgICAncHJpbnQnID0+IAogICAgICBhcnJheSAoCiAgICAgICAgJ2xhYmVsJyA9PiAnUHJpbnQnLAogICAgICAgICdocmVmJyA9PiBOVUxMLAogICAgICApLAogICAgKSwKICAgICdwYWdlbGluaycgPT4gCiAgICBhcnJheSAoCiAgICAgICdsYWJlbCcgPT4gJ0dvIEJhY2snLAogICAgICAnaHJlZicgPT4gJy9lbi9kL2phbi1zb2ZhdC1sdXh1cnktdmlsbGEtZ3Vlc3QtaG91c2UtaG9tZS1mb3Itc2FsZS1jdXJhY2FvLTExNDQ0MzEnLAogICAgKSwKICAgICdhZ2VudHMnID0+IAogICAgYXJyYXkgKAogICAgICAxID0+IAogICAgICBhcnJheSAoCiAgICAgICAgJ2NvdXJ0ZXN5T2YnID0+IGZhbHNlLAogICAgICAgICdjb21wYW55JyA9PiAKICAgICAgICBhcnJheSAoCiAgICAgICAgICAnYnJhbmQnID0+ICdDRU5UVVJZIDIxJywKICAgICAgICAgICdsZWdhbCcgPT4gJzxzcGFuPiMxPC9zcGFuPiA8c3Bhbj5SZWFsIEVzdGF0ZTwvc3Bhbj4nLAogICAgICAgICAgJ2xvZ28nID0+ICcvYXNzZXRzL2ltYWdlcy90cGwvY2VudHVyeS0yMS1sb2dvLnN2ZycsCiAgICAgICAgICAnbG9nb19hbHQnID0+ICdDRU5UVVJZIDIxICMxIFJlYWwgRXN0YXRlLCBDdXJhJmNjZWRpbDthbycsCiAgICAgICAgKSwKICAgICAgICAndGl0bGUnID0+ICdTYWxlcyBBZ2VudC9Db25zdWx0YW50JywKICAgICAgICAnZnVsbG5hbWUnID0+ICdKb3ljZSBBbW1lcmxhYW4nLAogICAgICAgICdwaG90bycgPT4gJy9pbWFnZXMvYWdlbnRzLzEwMDIxMDQvZi8wLmpwZycsCiAgICAgICAgJ3Bob3RvX2FsdCcgPT4gJ0pveWNlIEFtbWVybGFhbiAtIFNhbGVzIEFnZW50L0NvbnN1bHRhbnQsIENFTlRVUlkgMjEgIzEgUmVhbCBFc3RhdGUnLAogICAgICAgICdwaG9uZXMnID0+IAogICAgICAgIGFycmF5ICgKICAgICAgICAgICdvZmZpY2UnID0+IAogICAgICAgICAgYXJyYXkgKAogICAgICAgICAgICAnaWNvbicgPT4gJ2ZhLXZvbHVtZS1jb250cm9sLXBob25lJywKICAgICAgICAgICAgJ2xhYmVsJyA9PiAnT2ZmaWNlJywKICAgICAgICAgICAgJ3RpdGxlJyA9PiAnT2ZmaWNlJywKICAgICAgICAgICAgJ3RlbCcgPT4gJzU5OTk3MzcwMjAxJywKICAgICAgICAgICAgJ3Nob3cnID0+ICcoNTk5IDkpIDczNy0wMjAxJywKICAgICAgICAgICksCiAgICAgICAgKSwKICAgICAgICAnZW1haWwnID0+IAogICAgICAgIGFycmF5ICgKICAgICAgICAgICdpY29uJyA9PiAnZmEtZW52ZWxvcGUnLAogICAgICAgICAgJ2xhYmVsJyA9PiAnRW1haWwnLAogICAgICAgICAgJ3RpdGxlJyA9PiAnZW1haWwgSm95Y2UgQW1tZXJsYWFuJywKICAgICAgICAgICdzaG93JyA9PiAnam95Y2VAYzIxY3VyYWNhby5jb20nLAogICAgICAgICAgJ2xpbmsnID0+ICcjJywKICAgICAgICApLAogICAgICAgICd2b2lwJyA9PiBOVUxMLAogICAgICAgICdzb2NpYWwnID0+IE5VTEwsCiAgICAgICksCiAgICApLAogICAgJ3ByaWNlcycgPT4gCiAgICBhcnJheSAoCiAgICAgICdhc2tpbmcnID0+ICdVUyQgOTc1LDAwMCcsCiAgICAgICdvdGhlcnMnID0+IAogICAgICBhcnJheSAoCiAgICAgICAgJ0FORycgPT4gJ0FOxpIgMS43NTUuMDAwLTxzdXA+wrk8L3N1cD7CuScsCiAgICAgICAgJ0VVUicgPT4gJ0VV4oKsIDgyNyAwNTM8c3VwPsK5PC9zdXA+wrknLAogICAgICApLAogICAgICAnY2xhc3MnID0+ICcnLAogICAgICAncG9zdGZpeCcgPT4gJycsCiAgICAgICdleHRyYScgPT4gZmFsc2UsCiAgICApLAogICAgJ2l0ZW1wcm9wJyA9PiAKICAgIGFycmF5ICgKICAgICAgJ2FkZHJlc3MnID0+IAogICAgICBhcnJheSAoCiAgICAgICAgJ3N0cmVldEFkZHJlc3MnID0+ICdKYW4gU29mYXQgTHV4dXJ5IFZpbGxhICsgR3Vlc3QgSG91c2UnLAogICAgICAgICdhZGRyZXNzTG9jYWxpdHknID0+ICcnLAogICAgICAgICdhZGRyZXNzUmVnaW9uJyA9PiAnV2lsbGVtc3RhZCBFYXN0JywKICAgICAgICAnYWRkcmVzc0NvdW50cnknID0+ICdDdXJhw6dhbycsCiAgICAgICksCiAgICAgICdvZmZlcicgPT4gCiAgICAgIGFycmF5ICgKICAgICAgICAncHJpY2UnID0+ICc5NzUwMDAuMDAnLAogICAgICAgICdwcmljZUN1cnJlbmN5JyA9PiAnVVNEJywKICAgICAgICAncHJpY2VWYWxpZFVudGlsJyA9PiAnMjAyMC0xMS0wOFQwNzo1NjoxMCswMDAwJywKICAgICAgICAndXJsJyA9PiAnaHR0cHM6Ly9jZW50dXJ5MjFudW1iZXJvbmUuY29tL2VuL2MvaW5xdWlyeS8xMTQ0NDMxJywKICAgICAgICAndmFsaWRGcm9tJyA9PiAnMjAxOS0wOC0yMFQxMjowMCcsCiAgICAgICAgJ2F2YWlsYWJpbGl0eScgPT4gJ2h0dHA6Ly9zY2hlbWEub3JnL0luU3RvY2snLAogICAgICApLAogICAgICAncHJvZHVjdCcgPT4gCiAgICAgIGFycmF5ICgKICAgICAgICAnc2t1JyA9PiAnUkVTMTE0NDQzMScsCiAgICAgICAgJ3Byb2R1Y3RJRCcgPT4gJzExNDQ0MzEnLAogICAgICAgICduYW1lJyA9PiAnSmFuIFNvZmF0IEx1eHVyeSBWaWxsYSArIEd1ZXN0IEhvdXNlJywKICAgICAgICAnZGVzY3JpcHRpb24nID0+ICdXaXRoaW4gdGhlIHRyYW5xdWlsIGdhdGVkIGNvbW11bml0eSBvZiBqYW4gc29mYXQgbGllcyB0aGlzIG1hc3RlcmZ1bGx5IGJ1aWx0IHZpbGxhLiBDYXB0aXZhdGluZyBmcm9tIG91dHNpZGUgdGhlIGdhdGUsIHRoZSB1bmlxdWUgdmlsbGEgd2lsbCBpbnNwaXJlIHlvdSBmcm9tIHRoZSBtb21lbnQgeW91IGVudGVyIGFuZCBjb250aW51ZSB0byB0YWtlIHlvdXIgYnJlYXRoIGF3YXkuIENvbnNpc3Rpbmcgb2YgYSBsYXJnZSBtYWluIHZpbGxhIGltcGVjY2FibHkgZGVzaWduZWQgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIHdhdGVyIHZpZXcsIGEgbGFyZ2Ugc2VwYXJhdGUgZ3Vlc3QgaG91c2UgaW4gdGhlIGJhY2sgYW5kIHRoZSB2YXN0IG5hdHVyYWwgYXJlYSBiZXlvbmQuIEl0cyBsYXJnZSBwb29sIGFuZCBsYW5kc2NhcGVkIGdhcmRlbiBibGVuZCBoYXJtb25pb3VzbHkgd2l0aCB0aGUgYXJjaGl0ZWN0dXJlIGFzIGV2ZXJ5IHNxdWFyZSBtZXRlciBoYXMgYmVlbiBpbnRlbnRpb25hbGx5IGRlc2lnbmVkIHRvIGNyZWF0ZSBhIHRydWx5IGluY29tcGFyYWJsZSBleHBlcmllbmNlLiBVcG9uIGVudGVyaW5nIHRocm91Z2ggdGhlIG1haW4gZ2F0ZSwgeW91IGhhdmUgdGhlIG9wdGlvbiB0byBwYXJrIGluIHlvdXIgc3BhY2lvdXMgdHdvLWNhciBnYXJhZ2Ugb3Igb24gdGhlIGFtcGxlIGJyaWNrIGRyaXZld2F5LiBGcm9tIHRoZSBicmljayBkcml2ZXdheSwgeW91IGhhdmUgYWNjZXNzIHRvIHRoZSB2aWxsYSB0aHJvdWdoIHRoZSBncmFuZCBkb3VibGUtZG9vciBlbnRyYW5jZSBsZWFkaW5nIHRvIHRoZSBvcGVuIGRlc2lnbiBhdHJpdW0tc3R5bGUgY2VudHJhbCBhcmVhLiBBIHBhcnRpdGlvbiBzZXBhcmF0ZXMgdGhlIGFyZWEsIGFsb25nIHRoZSBzaWRlIHRvIHRoZSByaWdodCBhbiBvZmZpY2Ugcm9vbSBhbmQgYSBwYXJ0aWFsIGJhdGhyb29tIGFuZCB0byB0aGUgbGVmdCB0aGUga2l0Y2hlbiBhbmQgZmlyc3QgcGF0aW8gYWNjZXNzZWQgYnkgbGFyZ2UgZ2xhc3Mgc2xpZGluZyBkb29ycy4gTG9va2luZyB1cCB3aXRoaW4gdGhlIGNlbnRyYWwgYXJlYSB5b3UgY2FuIGRpcmVjdGx5IHNlZSB0aGUgc2Vjb25kLWZsb29yIG9wZW4gbGFuZGluZywgY3JlYXRpbmcgYSBzZW5zZSBvZiBjb25uZWN0aW9uIHRocm91Z2hvdXQgdGhlIHZpbGxhIHdoaWNoIGlzIGZpdHRlZCBhbmQgcmVhZHkgZm9yIGEgZ3JhbmQgY2hhbmRlbGllci4gU2hhcmluZyB0aGUgY2VudHJhbCBhcmVhIG9mIHRoZSB2aWxsYSB0byBpdHMgZnVydGhlciBzaWRlIGlzIHRoZSBsaXZpbmcgcm9vbSB3aGljaCBjb25uZWN0cyBkaXJlY3RseSB3aXRoIGxhcmdlIHNsaWRpbmcgZ2xhc3MgZG9vcnMgdG8gdGhlIHNlY29uZCBwYXRpbyB3aGljaCBvdmVybG9va3MgdGhlIHBvb2wuIEZyb20gdGhlIGdhcmFnZSwgeW91IGhhdmUgZGlyZWN0IGFjY2VzcyB0byB0aGUgbGF1bmRyeSByb29tL3BhbnRyeSB3aXRoIGEgc2Vjb25kIGxhcmdlIGFtZXJpY2FuIHN0eWxlIGZyaWRnZS9mcmVlemVyIGFuZCBwbGVudGlmdWwgc3RvcmFnZSBzcGFjZS4gVGhyb3VnaCB0aGUgbmV4dCBkb29yLCB5b3Ugd2lsbCBhcnJpdmUgYXQgdGhlIGp1bmN0aW9uIGNvbm5lY3RpbmcgdG8gYm90aCB0aGUga2l0Y2hlbiBhbmQgcHJldmlvdXNseSBtZW50aW9uZWQgY2VudHJhbCBhcmVhLiBGb2N1c2luZyBub3cgb24gdGhlIGtpdGNoZW4sIGl0cyBpbXBlY2NhYmxlIGRlc2lnbiBhbGxvd3MgZm9yIGFuIG9wZW4gYW5kIHN0YXRlbHkgbG9vay4gQSBsb25nIGNlbnRyYWwga2l0Y2hlbiBpc2xhbmQgd2l0aCBhIHJhaXNlZCBjb3VudGVyIG9uIG9uZSBzaWRlIHdpdGggYSBodWdlIG92ZW4gYW5kIDYtcGllY2Ugc3RvdmUgYWJvdmUgaXQgbWVzaCBwZXJmZWN0bHkgdG9nZXRoZXIuIEl0cyBicm9hZCBmYXVjZXQgY291bnRlciBvbiB0aGUgZmFyIGVuZCBhY2NvbXBhbmllZCB3aXRoIHRoZSB3aW5kb3dzIHByb3ZpZGluZyBuYXR1cmFsIGxpZ2h0aW5nIGFuZCBhIGxlbmd0aHkgc3RyZXRjaCBvZiBoaWdoLXF1YWxpdHkgY2FiaW5ldHMgd2l0aCB0d28gZ2xhc3MgZG9vcnMgY2VudHJhbGx5IHBsYWNlZCB0byBzaG93IG9mZiB5b3VyIGNvbGxlY3Rpb24gb2Ygc3Bpcml0cyBhbmQgd2luZXMuIFRoZXJlIGlzIGV2ZW4gYSByZWZpbmVkLWxvb2tpbmcgbWljcm93YXZlIGJ1aWx0IGludG8gdGhlIGNhYmluZXQgZml4dHVyZS4gT24gdGhlIG9wcG9zaXRlIHNpZGUgb2Ygd2hpY2ggaXMgYW5vdGhlciBnbGFzcyBzbGlkaW5nIGRvb3IgcHJvdmlkaW5nIHlldCBtb3JlIG5hdHVyYWwgbGlnaHQgYW5kIGFjY2VzcyB0byB0aGUgY29tbXVuYWwgYXJlYXMgb2YgdGhlIHZpbGxhIGFuZCBwb29sLiBBIHNldCBvZiBzdGFpcnMgaW4gdGhlIGNlbnRyYWwgYXJlYSBsZWFkcyB5b3UgdG8gdGhlIGxpdmluZyBxdWFydGVycyBvZiB0aGUgdmlsbGEuIFByZXNlbnQgaGVyZSBhcmUgdGhyZWUgYmVkcm9vbXMsIG9uZSBvZiB3aGljaCBpcyB0aGUgbWFzdGVyIGJlZHJvb20gYW5kIG9mIGNvdXJzZSB0aGUgbGFuZGluZyBhcmVhIGFsbG93aW5nIHlvdSB0byBzZWUgZG93bnN0YWlycy4gVGhlIG1hc3RlciBiZWRyb29tIGlzIHNwYWNpb3VzLCBhaXJjb25kaXRpb25lZCBhbmQgY29udGFpbnMgd29vZGVuIHNodXR0ZXIgd2luZG93cyBhbGxvd2luZyBmb3IgYSBnZW50bGUgYnJlZXplIGFuZCBhIHRlcnJhY2Ugb3Zlcmxvb2tpbmcgdGhlIHBvb2wgYW5kIHRoZSB3YXRlci9uYXR1cmFsIGxhbmRzY2FwZSBiZWhpbmQgdGhlIHZpbGxhLiBBIGxvb3BpbmcgY29ycmlkb3IgZW5jaXJjbGluZyB0aGUgcm9vbSBwcm92aWRlcyBlYXNlIG9mIGFjY2VzcyB0byB0aGUgZ3JhbmQgZW4tc3VpdGUgYmF0aHJvb20gd2l0aCBhIGhvdCB0dWIsIHNlcGFyYXRlIHNob3dlciwgaGlzIGFuZCBoZXJzIHNpbmtzIGFuZCBmaW5hbGx5IGEgbGFyZ2Ugd2Fsay1pbiBjbG9zZXQuIFRoZSB0d28gb3RoZXIgYmVkcm9vbXMgKG9uZSBvZiB3aGljaCBpcyBub3cgYW4gYWRkaXRpb25hbCBvZmZpY2UpIGJvdGggY29udGFpbiBhaXIgY29uZGl0aW9uZXJzIGJ1aWx0LWluIGNsb3NldHMgYW5kIGVuLXN1aXRlIGJhdGhyb29tcy4gVGhlIGxhcmdlIGV4dGVyaW9yIG9mIHRoZSB2aWxsYSBvbiB0aGUgdG9wIGxldmVsIGNvbnNpc3RzIG9mIGEgd2lkZSB0aWxlZCBhcmVhIGVuY29tcGFzc2luZyB0aGUgcGF0aW8gYXJlYXMgYW5kIHBvb2wsIHRoZSBzdHVubmluZyBwb29sIGl0c2VsZiBhbHNvIGNvbnRhaW5zIHR3byBidWlsdC1pbiBsb3VuZ2Ugc3R5bGUgc2VhdHMgb24gYSBzaGFsbG93IHBvcnRpb24gb2YgdGhlIHBvb2wgYW5kIGEgd2F0ZXJmYWxsIGZ1bmN0aW9uIGF0IHRoZSBmYXIgZW5kLiBBcm91bmQgdGhpcyBhcmVhIHlvdSBoYXZlIGNvbG9yZnVsIHRyb3BpY2FsIHBsYW50cyBhbmQgc2V2ZXJhbCBwYWxtIHRyZWVzLiBUaGlzIGVudGlyZSBhcmVhIGNvbm5lY3RzIGhhcm1vbmlvdXNseSB3aXRoIHRoZSBvcGVuIGRlc2lnbiBvZiB0aGUgdmlsbGEgYW5kIG9mIGNvdXJzZSB0aGUgaW5zcGlyYXRpb25hbCBuYXR1cmFsIHZpZXcgYmVoaW5kIGFuZCB0aGUgc3BhbmlzaCB3YXRlciBiYXkuIEJlaGluZCBhIGdhdGUgdG8gdGhlIGZhciBzaWRlIHlvdSB3aWxsIGNvbWUgdG8gYSBsb25nIHdhbGt3YXkgd2hpY2ggY29ubmVjdHMgdGhlIG1haW4gZ2F0ZSBvZiB0aGUgdmlsbGEgYWxsIHRoZSB3YXkgdG8gdGhlIGFwYXJ0bWVudCBkb3duIGEgc2hvcnQgc3RhaXJjYXNlLiBUaGUgd2Fsa3dheSBpcyB2ZXJ5IHNlY3VyZSB3aXRoIGFkZGl0aW9uYWwgZ2F0ZXMsIGVtYnJhY2VkIGJ5IGEgc3RyZXRjaCBvZiBncmFuZCBwYWxtIHRyZWVzLiBUaGlzIGludGVudGlvbmFsIGRlc2lnbiB3YXMgaW1wbGljYXRlZCBmb3IgdG90YWwgcHJpdmFjeSB0byBib3RoIHRoZSBvY2N1cGFudHMgb2YgdGhlIHZpbGxhIGFuZCBndWVzdCBob3VzZS4gQWZ0ZXIgY29taW5nIGRvd24gdGhlIHN0YWlycyB0byB0aGUgbG93ZXIgbGV2ZWwgb2YgdGhlIGxvdCB5b3Ugd2lsbCBpbW1lZGlhdGVseSBub3RpY2UgaG93IHNwYWNpb3VzIGJvdGggdGhlIGFwYXJ0bWVudCBpcyBhbmQgdGhlIGxhbmQgYXJvdW5kIGl0LCBjYXJwZXRlZCB3aXRoIGx1c2Npb3VzIGdyZWVuIGFydGlmaWNpYWwgZ3Jhc3MuIFRoZSBhcGFydG1lbnQgaG9sZHMgdHdvIGxhcmdlIGFpcmNvbmRpdGlvbmVkIGJlZHJvb21zLCBvbmUgc2hhcmVkIGJhdGhyb29tIGFuZCBhIGZ1bGx5IGluZGVwZW5kZW50IHN0dWRpbyB3aXRoIGtpdGNoZW5ldHRlLCBlbi1zdWl0ZSBiYXRocm9vbSBhbmQgYWlyIGNvbmRpdGlvbmluZy4gV2l0aGluIHRoZSBzcGFjaW91cyBjZW50cmFsIGFyZWEgaXMgYSBsZW5ndGh5IGtpdGNoZW4gaXNsYW5kLCBzcGFjaW91cyBlbm91Z2ggZm9yIGFsbCB0byBlYXQgYW5kIGNvbWUgdG9nZXRoZXIgb24gYW5kIGEga2l0Y2hlbmV0dGUgd2l0aCBhIGZyaWRnZSBvdmVuL3N0b3ZlIGFuZCBtaWNyb3dhdmUuIEJlaGluZCB0aGVzZSBpcyBhIHNtYWxsIGxvdW5nZSBhcmVhLiBHbGFzcyBzbGlkaW5nIGRvb3JzIHRvIGVpdGhlciBzaWRlIGFsbG93IGZvciBhbiBleHF1aXNpdGUgb3BlbiBmZWVsaW5nIGFuZCBlYXN5IGFjY2VzcyB0byB0aGUgb3V0c2lkZSBwYXRpbyBhcmVhLiBBZGRpdGlvbmFsIGFtZW5pdGllcyBzaGFyZWQgYnkgYm90aCB0aGUgdmlsbGEgYW5kIGFwYXJ0bWVudCBhcmUgMjQgc29sYXIgcGFuZWxzLCBjb3ZlcmVkIHRlcnJhY2VzLCBiZWFtIGNlaWxpbmdzLCBib3RoIDExMC0gYW5kIDIyMC12b2x0IGVsZWN0cmljYWwgc29ja2V0cyBhbmQgc3VwZXJpb3IgaGlnaCBncmFkZSBidWlsZGluZyBtYXRlcmlhbHMgb24gcGFyIHRvIHRoYXQgb2YgYSBmaXZlLXN0YXIgcmVzb3J0IHN1Y2ggYXMgYmFsaSB3b29kIGZvdW5kIHRocm91Z2hvdXQgdGhlIHZpbGxhLiBGdXJ0aGVybW9yZSwgdGhlcmUgYXJlIHNtb2tlIGRldGVjdG9ycyBhbmQgYW4gYWxhcm0gc3lzdGVtIHRocm91Z2hvdXQgdGhlIHByb3BlcnR5LiBQcmVzZW50IGluIHRoZSBnYXRlZCBqYW4gc29mYXQgY29tbXVuaXR5IHRoZXJlIGlzIGFsc28gYSBtYXJpbmEgc28geW91IG1heSBhY2Nlc3MgdGhlIHdhdGVycyB3aGljaCB0aGUgdmlsbGEgaGFzIGFuIGV4Y2VsbGVudCB2aWV3IG9mIGFuZCAyNGhvdXIgbWFubmVkIHNlY3VyaXR5IGF0IHRoZSBnYXRlLiBDb250YWN0IHVzIHRvZGF5IGFuZCBzY2hlZHVsZSBhIHZpZXdpbmchIEphbiBzb2ZhdCBqYW4gc29mYXQgaXMgYW4gdXBzY2FsZSBnYXRlZCBjb21tdW5pdHksIHF1aWV0bHkgbG9jYXRlZCBuZXh0IHRvIHRoZSBzcGFuaXNoIHdhdGVyLiBUaGUgcmVzb3J0IGZlYXR1cmVzIDI0LzcgbWFubmVkIHNlY3VyaXR5IGdhdGUsIHNlY3VyaXR5IHJvdW5kcyBhbmQgYWxhcm0gcmVzcG9uc2UuIEluIHRoaXMgcmVzaWRlbnRpYWwgYXJlYSBhcmUgbWFueSBsdXh1cmlvdXMgaG91c2VzIGxvY2F0ZWQgb24gdGhlIGhpbGxzLCBhbGwgb2YgdGhlbSBiZW5lZml0IGZyb20gdGhlIGNvb2wgYnJlZXplIGFuZCBzb21lIG9mIHRoZW0gaGF2ZSBhIHNwZWN0YWN1bGFyIHZpZXcgb3Zlcmxvb2tpbmcgdGhlIHRhZmVsYmVyZyBhbmQgdGhlIHNwYW5pc2ggd2F0ZXIuIEFsbCByZXNpZGVudHMgaGF2ZSBhY2Nlc3MgdG8gdGhlIGNvbW11bmFsIG1hcmluYSBhbmQgYSBwbGF5IGdyb3VuZCBmb3IgY2hpbGRyZW4uIE1vc3QgYW1lbml0aWVzIHN1Y2ggYXMgYmVhY2hlcywgc2hvcHMgYW5kIHJlc3RhdXJhbnRzIGFyZSBvbmx5IG1pbnV0ZXMgYXdheSBhbmQgdGhlIGNlbnRlciBvZiB3aWxsZW1zdGFkIGlzIGEgMTUgbWludXRlIGRyaXZlLicsCiAgICAgICAgJ3VybCcgPT4gJ2h0dHBzOi8vY2VudHVyeTIxbnVtYmVyb25lLmNvbS9lbi9kLzExNDQ0MzEnLAogICAgICAgICdpbWFnZScgPT4gJ2h0dHBzOi8vY2VudHVyeTIxbnVtYmVyb25lLmNvbS9tbHMuY2RuL2ltYWdlcy9saXN0aW5ncy8xMTQ0NDMxL3hsZy8wLmpwZycsCiAgICAgICAgJ29mZmVycycgPT4gCiAgICAgICAgYXJyYXkgKAogICAgICAgICAgJ3ByaWNlJyA9PiAnOTc1MDAwLjAwJywKICAgICAgICAgICdwcmljZUN1cnJlbmN5JyA9PiAnVVNEJywKICAgICAgICAgICdwcmljZVZhbGlkVW50aWwnID0+ICcyMDIwLTExLTA4VDA3OjU2OjEwKzAwMDAnLAogICAgICAgICAgJ3VybCcgPT4gJ2h0dHBzOi8vY2VudHVyeTIxbnVtYmVyb25lLmNvbS9lbi9jL2lucXVpcnkvMTE0NDQzMScsCiAgICAgICAgICAndmFsaWRGcm9tJyA9PiAnMjAxOS0wOC0yMFQxMjowMCcsCiAgICAgICAgICAnYXZhaWxhYmlsaXR5JyA9PiAnaHR0cDovL3NjaGVtYS5vcmcvSW5TdG9jaycsCiAgICAgICAgKSwKICAgICAgICAnYnJhbmQnID0+IAogICAgICAgIGFycmF5ICgKICAgICAgICAgICduYW1lJyA9PiAnQ0VOVFVSWSAyMScsCiAgICAgICAgKSwKICAgICAgICAnc2VsbGVyJyA9PiAKICAgICAgICBhcnJheSAoCiAgICAgICAgICAnbGVnYWxOYW1lJyA9PiAnQ0VOVFVSWSAyMSAjMSBSZWFsIEVzdGF0ZScsCiAgICAgICAgICAnbG9nbycgPT4gJ2h0dHBzOi8vY2VudHVyeTIxbnVtYmVyb25lLmNvbS9tbHMuY2RuL2ltYWdlcy9sb2dvcy8xMDAwMzk5LzE1MHg1MC5qcGcnLAogICAgICAgICAgJ2VtcGxveWVlJyA9PiAnSm95Y2UgQW1tZXJsYWFuJywKICAgICAgICAgICd0ZWxlcGhvbmUnID0+ICcoNTk5IDkpIDczNy0wMjAxJywKICAgICAgICAgICd1cmwnID0+ICdodHRwOi8vY2VudHVyeTIxbnVtYmVyb25lLmNvbScsCiAgICAgICAgKSwKICAgICAgICAnYWRkaXRpb25hbFByb3BlcnR5JyA9PiAKICAgICAgICBhcnJheSAoCiAgICAgICAgICAwID0+IAogICAgICAgICAgYXJyYXkgKAogICAgICAgICAgICAnbmFtZScgPT4gJ0NvdW50cnknLAogICAgICAgICAgICAndmFsdWUnID0+ICdDdXJhw6dhbycsCiAgICAgICAgICApLAogICAgICAgICAgMSA9PiAKICAgICAgICAgIGFycmF5ICgKICAgICAgICAgICAgJ25hbWUnID0+ICdQcm9wZXJ0eSBDbGFzcycsCiAgICAgICAgICAgICd2YWx1ZScgPT4gJ1Jlc2lkZW50aWFsJywKICAgICAgICAgICksCiAgICAgICAgICAyID0+IAogICAgICAgICAgYXJyYXkgKAogICAgICAgICAgICAnbmFtZScgPT4gJ1Byb3BlcnR5IENhdGVnb3J5JywKICAgICAgICAgICAgJ3ZhbHVlJyA9PiAnU2luZ2xlIEZhbWlseSBIb21lcycsCiAgICAgICAgICApLAogICAgICAgICAgMyA9PiAKICAgICAgICAgIGFycmF5ICgKICAgICAgICAgICAgJ25hbWUnID0+ICdUcmFuc2FjdGlvbiBUeXBlJywKICAgICAgICAgICAgJ3ZhbHVlJyA9PiAnRm9yIFNhbGUnLAogICAgICAgICAgKSwKICAgICAgICAgIDQgPT4gCiAgICAgICAgICBhcnJheSAoCiAgICAgICAgICAgICduYW1lJyA9PiAnUHJvcGVydHkgVmlldycsCiAgICAgICAgICAgICd2YWx1ZScgPT4gJ09jZWFuIFZpZXcnLAogICAgICAgICAgKSwKICAgICAgICAgIDUgPT4gCiAgICAgICAgICBhcnJheSAoCiAgICAgICAgICAgICduYW1lJyA9PiAnQmVkcm9vbXMnLAogICAgICAgICAgICAndmFsdWUnID0+IDcsCiAgICAgICAgICApLAogICAgICAgICAgNiA9PiAKICAgICAgICAgIGFycmF5ICgKICAgICAgICAgICAgJ25hbWUnID0+ICdCYXRocm9vbXMnLAogICAgICAgICAgICAndmFsdWUnID0+IDYsCiAgICAgICAgICApLAogICAgICAgICAgNyA9PiAKICAgICAgICAgIGFycmF5ICgKICAgICAgICAgICAgJ25hbWUnID0+ICdMaXZpbmcgU3BhY2UnLAogICAgICAgICAgICAndmFsdWUnID0+ICc0OTEgbcKyJywKICAgICAgICAgICksCiAgICAgICAgICA4ID0+IAogICAgICAgICAgYXJyYXkgKAogICAgICAgICAgICAnbmFtZScgPT4gJ0xhbmQgQXJlYScsCiAgICAgICAgICAgICd2YWx1ZScgPT4gJzEsMzEwIG3CsicsCiAgICAgICAgICApLAogICAgICAgICksCiAgICAgICksCiAgICAgICdldmVudCcgPT4gCiAgICAgIGFycmF5ICgKICAgICAgICAnbmFtZScgPT4gJ0ZvciBTYWxlOiBTaW5nbGUgRmFtaWx5IEhvbWVzIC0gLCBDdXJhJmNjZWRpbDthbycsCiAgICAgICAgJ2xvY2F0aW9uJyA9PiAKICAgICAgICBhcnJheSAoCiAgICAgICAgICAnbmFtZScgPT4gJ1NpbmdsZSBGYW1pbHkgSG9tZXMnLAogICAgICAgICAgJ2FkZHJlc3MnID0+IAogICAgICAgICAgYXJyYXkgKAogICAgICAgICAgICAnc3RyZWV0QWRkcmVzcycgPT4gJ0phbiBTb2ZhdCBMdXh1cnkgVmlsbGEgKyBHdWVzdCBIb3VzZScsCiAgICAgICAgICAgICdhZGRyZXNzTG9jYWxpdHknID0+ICcnLAogICAgICAgICAgICAnYWRkcmVzc1JlZ2lvbicgPT4gJ1dpbGxlbXN0YWQgRWFzdCcsCiAgICAgICAgICAgICdhZGRyZXNzQ291bnRyeScgPT4gJ0N1cmHDp2FvJywKICAgICAgICAgICksCiAgICAgICAgKSwKICAgICAgICAnb2ZmZXJzJyA9PiAKICAgICAgICBhcnJheSAoCiAgICAgICAgICAncHJpY2UnID0+ICc5NzUwMDAuMDAnLAogICAgICAgICAgJ3ByaWNlQ3VycmVuY3knID0+ICdVU0QnLAogICAgICAgICAgJ3ByaWNlVmFsaWRVbnRpbCcgPT4gJzIwMjAtMTEtMDhUMDc6NTY6MTArMDAwMCcsCiAgICAgICAgICAndXJsJyA9PiAnaHR0cHM6Ly9jZW50dXJ5MjFudW1iZXJvbmUuY29tL2VuL2MvaW5xdWlyeS8xMTQ0NDMxJywKICAgICAgICAgICd2YWxpZEZyb20nID0+ICcyMDE5LTA4LTIwVDEyOjAwJywKICAgICAgICAgICdhdmFpbGFiaWxpdHknID0+ICdodHRwOi8vc2NoZW1hLm9yZy9JblN0b2NrJywKICAgICAgICApLAogICAgICAgICdpbWFnZScgPT4gJ2h0dHBzOi8vY2VudHVyeTIxbnVtYmVyb25lLmNvbS9tbHMuY2RuL2ltYWdlcy9saXN0aW5ncy8xMTQ0NDMxL3hsZy8wLmpwZycsCiAgICAgICAgJ2Rlc2NyaXB0aW9uJyA9PiAnV2l0aGluIHRoZSB0cmFucXVpbCBnYXRlZCBjb21tdW5pdHkgb2YgamFuIHNvZmF0IGxpZXMgdGhpcyBtYXN0ZXJmdWxseSBidWlsdCB2aWxsYS4gQ2FwdGl2YXRpbmcgZnJvbSBvdXRzaWRlIHRoZSBnYXRlLCB0aGUgdW5pcXVlIHZpbGxhIHdpbGwgaW5zcGlyZSB5b3UgZnJvbSB0aGUgbW9tZW50IHlvdSBlbnRlciBhbmQgY29udGludWUgdG8gdGFrZSB5b3VyIGJyZWF0aCBhd2F5LiBDb25zaXN0aW5nIG9mIGEgbGFyZ2UgbWFpbiB2aWxsYSBpbXBlY2NhYmx5IGRlc2lnbmVkIHRvIHRha2UgYWR2YW50YWdlIG9mIHRoZSB3YXRlciB2aWV3LCBhIGxhcmdlIHNlcGFyYXRlIGd1ZXN0IGhvdXNlIGluIHRoZSBiYWNrIGFuZCB0aGUgdmFzdCBuYXR1cmFsIGFyZWEgYmV5b25kLiBJdHMgbGFyZ2UgcG9vbCBhbmQgbGFuZHNjYXBlZCBnYXJkZW4gYmxlbmQgaGFybW9uaW91c2x5IHdpdGggdGhlIGFyY2hpdGVjdHVyZSBhcyBldmVyeSBzcXVhcmUgbWV0ZXIgaGFzIGJlZW4gaW50ZW50aW9uYWxseSBkZXNpZ25lZCB0byBjcmVhdGUgYSB0cnVseSBpbmNvbXBhcmFibGUgZXhwZXJpZW5jZS4gVXBvbiBlbnRlcmluZyB0aHJvdWdoIHRoZSBtYWluIGdhdGUsIHlvdSBoYXZlIHRoZSBvcHRpb24gdG8gcGFyayBpbiB5b3VyIHNwYWNpb3VzIHR3by1jYXIgZ2FyYWdlIG9yIG9uIHRoZSBhbXBsZSBicmljayBkcml2ZXdheS4gRnJvbSB0aGUgYnJpY2sgZHJpdmV3YXksIHlvdSBoYXZlIGFjY2VzcyB0byB0aGUgdmlsbGEgdGhyb3VnaCB0aGUgZ3JhbmQgZG91YmxlLWRvb3IgZW50cmFuY2UgbGVhZGluZyB0byB0aGUgb3BlbiBkZXNpZ24gYXRyaXVtLXN0eWxlIGNlbnRyYWwgYXJlYS4gQSBwYXJ0aXRpb24gc2VwYXJhdGVzIHRoZSBhcmVhLCBhbG9uZyB0aGUgc2lkZSB0byB0aGUgcmlnaHQgYW4gb2ZmaWNlIHJvb20gYW5kIGEgcGFydGlhbCBiYXRocm9vbSBhbmQgdG8gdGhlIGxlZnQgdGhlIGtpdGNoZW4gYW5kIGZpcnN0IHBhdGlvIGFjY2Vzc2VkIGJ5IGxhcmdlIGdsYXNzIHNsaWRpbmcgZG9vcnMuIExvb2tpbmcgdXAgd2l0aGluIHRoZSBjZW50cmFsIGFyZWEgeW91IGNhbiBkaXJlY3RseSBzZWUgdGhlIHNlY29uZC1mbG9vciBvcGVuIGxhbmRpbmcsIGNyZWF0aW5nIGEgc2Vuc2Ugb2YgY29ubmVjdGlvbiB0aHJvdWdob3V0IHRoZSB2aWxsYSB3aGljaCBpcyBmaXR0ZWQgYW5kIHJlYWR5IGZvciBhIGdyYW5kIGNoYW5kZWxpZXIuIFNoYXJpbmcgdGhlIGNlbnRyYWwgYXJlYSBvZiB0aGUgdmlsbGEgdG8gaXRzIGZ1cnRoZXIgc2lkZSBpcyB0aGUgbGl2aW5nIHJvb20gd2hpY2ggY29ubmVjdHMgZGlyZWN0bHkgd2l0aCBsYXJnZSBzbGlkaW5nIGdsYXNzIGRvb3JzIHRvIHRoZSBzZWNvbmQgcGF0aW8gd2hpY2ggb3Zlcmxvb2tzIHRoZSBwb29sLiBGcm9tIHRoZSBnYXJhZ2UsIHlvdSBoYXZlIGRpcmVjdCBhY2Nlc3MgdG8gdGhlIGxhdW5kcnkgcm9vbS9wYW50cnkgd2l0aCBhIHNlY29uZCBsYXJnZSBhbWVyaWNhbiBzdHlsZSBmcmlkZ2UvZnJlZXplciBhbmQgcGxlbnRpZnVsIHN0b3JhZ2Ugc3BhY2UuIFRocm91Z2ggdGhlIG5leHQgZG9vciwgeW91IHdpbGwgYXJyaXZlIGF0IHRoZSBqdW5jdGlvbiBjb25uZWN0aW5nIHRvIGJvdGggdGhlIGtpdGNoZW4gYW5kIHByZXZpb3VzbHkgbWVudGlvbmVkIGNlbnRyYWwgYXJlYS4gRm9jdXNpbmcgbm93IG9uIHRoZSBraXRjaGVuLCBpdHMgaW1wZWNjYWJsZSBkZXNpZ24gYWxsb3dzIGZvciBhbiBvcGVuIGFuZCBzdGF0ZWx5IGxvb2suIEEgbG9uZyBjZW50cmFsIGtpdGNoZW4gaXNsYW5kIHdpdGggYSByYWlzZWQgY291bnRlciBvbiBvbmUgc2lkZSB3aXRoIGEgaHVnZSBvdmVuIGFuZCA2LXBpZWNlIHN0b3ZlIGFib3ZlIGl0IG1lc2ggcGVyZmVjdGx5IHRvZ2V0aGVyLiBJdHMgYnJvYWQgZmF1Y2V0IGNvdW50ZXIgb24gdGhlIGZhciBlbmQgYWNjb21wYW5pZWQgd2l0aCB0aGUgd2luZG93cyBwcm92aWRpbmcgbmF0dXJhbCBsaWdodGluZyBhbmQgYSBsZW5ndGh5IHN0cmV0Y2ggb2YgaGlnaC1xdWFsaXR5IGNhYmluZXRzIHdpdGggdHdvIGdsYXNzIGRvb3JzIGNlbnRyYWxseSBwbGFjZWQgdG8gc2hvdyBvZmYgeW91ciBjb2xsZWN0aW9uIG9mIHNwaXJpdHMgYW5kIHdpbmVzLiBUaGVyZSBpcyBldmVuIGEgcmVmaW5lZC1sb29raW5nIG1pY3Jvd2F2ZSBidWlsdCBpbnRvIHRoZSBjYWJpbmV0IGZpeHR1cmUuIE9uIHRoZSBvcHBvc2l0ZSBzaWRlIG9mIHdoaWNoIGlzIGFub3RoZXIgZ2xhc3Mgc2xpZGluZyBkb29yIHByb3ZpZGluZyB5ZXQgbW9yZSBuYXR1cmFsIGxpZ2h0IGFuZCBhY2Nlc3MgdG8gdGhlIGNvbW11bmFsIGFyZWFzIG9mIHRoZSB2aWxsYSBhbmQgcG9vbC4gQSBzZXQgb2Ygc3RhaXJzIGluIHRoZSBjZW50cmFsIGFyZWEgbGVhZHMgeW91IHRvIHRoZSBsaXZpbmcgcXVhcnRlcnMgb2YgdGhlIHZpbGxhLiBQcmVzZW50IGhlcmUgYXJlIHRocmVlIGJlZHJvb21zLCBvbmUgb2Ygd2hpY2ggaXMgdGhlIG1hc3RlciBiZWRyb29tIGFuZCBvZiBjb3Vyc2UgdGhlIGxhbmRpbmcgYXJlYSBhbGxvd2luZyB5b3UgdG8gc2VlIGRvd25zdGFpcnMuIFRoZSBtYXN0ZXIgYmVkcm9vbSBpcyBzcGFjaW91cywgYWlyY29uZGl0aW9uZWQgYW5kIGNvbnRhaW5zIHdvb2RlbiBzaHV0dGVyIHdpbmRvd3MgYWxsb3dpbmcgZm9yIGEgZ2VudGxlIGJyZWV6ZSBhbmQgYSB0ZXJyYWNlIG92ZXJsb29raW5nIHRoZSBwb29sIGFuZCB0aGUgd2F0ZXIvbmF0dXJhbCBsYW5kc2NhcGUgYmVoaW5kIHRoZSB2aWxsYS4gQSBsb29waW5nIGNvcnJpZG9yIGVuY2lyY2xpbmcgdGhlIHJvb20gcHJvdmlkZXMgZWFzZSBvZiBhY2Nlc3MgdG8gdGhlIGdyYW5kIGVuLXN1aXRlIGJhdGhyb29tIHdpdGggYSBob3QgdHViLCBzZXBhcmF0ZSBzaG93ZXIsIGhpcyBhbmQgaGVycyBzaW5rcyBhbmQgZmluYWxseSBhIGxhcmdlIHdhbGstaW4gY2xvc2V0LiBUaGUgdHdvIG90aGVyIGJlZHJvb21zIChvbmUgb2Ygd2hpY2ggaXMgbm93IGFuIGFkZGl0aW9uYWwgb2ZmaWNlKSBib3RoIGNvbnRhaW4gYWlyIGNvbmRpdGlvbmVycyBidWlsdC1pbiBjbG9zZXRzIGFuZCBlbi1zdWl0ZSBiYXRocm9vbXMuIFRoZSBsYXJnZSBleHRlcmlvciBvZiB0aGUgdmlsbGEgb24gdGhlIHRvcCBsZXZlbCBjb25zaXN0cyBvZiBhIHdpZGUgdGlsZWQgYXJlYSBlbmNvbXBhc3NpbmcgdGhlIHBhdGlvIGFyZWFzIGFuZCBwb29sLCB0aGUgc3R1bm5pbmcgcG9vbCBpdHNlbGYgYWxzbyBjb250YWlucyB0d28gYnVpbHQtaW4gbG91bmdlIHN0eWxlIHNlYXRzIG9uIGEgc2hhbGxvdyBwb3J0aW9uIG9mIHRoZSBwb29sIGFuZCBhIHdhdGVyZmFsbCBmdW5jdGlvbiBhdCB0aGUgZmFyIGVuZC4gQXJvdW5kIHRoaXMgYXJlYSB5b3UgaGF2ZSBjb2xvcmZ1bCB0cm9waWNhbCBwbGFudHMgYW5kIHNldmVyYWwgcGFsbSB0cmVlcy4gVGhpcyBlbnRpcmUgYXJlYSBjb25uZWN0cyBoYXJtb25pb3VzbHkgd2l0aCB0aGUgb3BlbiBkZXNpZ24gb2YgdGhlIHZpbGxhIGFuZCBvZiBjb3Vyc2UgdGhlIGluc3BpcmF0aW9uYWwgbmF0dXJhbCB2aWV3IGJlaGluZCBhbmQgdGhlIHNwYW5pc2ggd2F0ZXIgYmF5LiBCZWhpbmQgYSBnYXRlIHRvIHRoZSBmYXIgc2lkZSB5b3Ugd2lsbCBjb21lIHRvIGEgbG9uZyB3YWxrd2F5IHdoaWNoIGNvbm5lY3RzIHRoZSBtYWluIGdhdGUgb2YgdGhlIHZpbGxhIGFsbCB0aGUgd2F5IHRvIHRoZSBhcGFydG1lbnQgZG93biBhIHNob3J0IHN0YWlyY2FzZS4gVGhlIHdhbGt3YXkgaXMgdmVyeSBzZWN1cmUgd2l0aCBhZGRpdGlvbmFsIGdhdGVzLCBlbWJyYWNlZCBieSBhIHN0cmV0Y2ggb2YgZ3JhbmQgcGFsbSB0cmVlcy4gVGhpcyBpbnRlbnRpb25hbCBkZXNpZ24gd2FzIGltcGxpY2F0ZWQgZm9yIHRvdGFsIHByaXZhY3kgdG8gYm90aCB0aGUgb2NjdXBhbnRzIG9mIHRoZSB2aWxsYSBhbmQgZ3Vlc3QgaG91c2UuIEFmdGVyIGNvbWluZyBkb3duIHRoZSBzdGFpcnMgdG8gdGhlIGxvd2VyIGxldmVsIG9mIHRoZSBsb3QgeW91IHdpbGwgaW1tZWRpYXRlbHkgbm90aWNlIGhvdyBzcGFjaW91cyBib3RoIHRoZSBhcGFydG1lbnQgaXMgYW5kIHRoZSBsYW5kIGFyb3VuZCBpdCwgY2FycGV0ZWQgd2l0aCBsdXNjaW91cyBncmVlbiBhcnRpZmljaWFsIGdyYXNzLiBUaGUgYXBhcnRtZW50IGhvbGRzIHR3byBsYXJnZSBhaXJjb25kaXRpb25lZCBiZWRyb29tcywgb25lIHNoYXJlZCBiYXRocm9vbSBhbmQgYSBmdWxseSBpbmRlcGVuZGVudCBzdHVkaW8gd2l0aCBraXRjaGVuZXR0ZSwgZW4tc3VpdGUgYmF0aHJvb20gYW5kIGFpciBjb25kaXRpb25pbmcuIFdpdGhpbiB0aGUgc3BhY2lvdXMgY2VudHJhbCBhcmVhIGlzIGEgbGVuZ3RoeSBraXRjaGVuIGlzbGFuZCwgc3BhY2lvdXMgZW5vdWdoIGZvciBhbGwgdG8gZWF0IGFuZCBjb21lIHRvZ2V0aGVyIG9uIGFuZCBhIGtpdGNoZW5ldHRlIHdpdGggYSBmcmlkZ2Ugb3Zlbi9zdG92ZSBhbmQgbWljcm93YXZlLiBCZWhpbmQgdGhlc2UgaXMgYSBzbWFsbCBsb3VuZ2UgYXJlYS4gR2xhc3Mgc2xpZGluZyBkb29ycyB0byBlaXRoZXIgc2lkZSBhbGxvdyBmb3IgYW4gZXhxdWlzaXRlIG9wZW4gZmVlbGluZyBhbmQgZWFzeSBhY2Nlc3MgdG8gdGhlIG91dHNpZGUgcGF0aW8gYXJlYS4gQWRkaXRpb25hbCBhbWVuaXRpZXMgc2hhcmVkIGJ5IGJvdGggdGhlIHZpbGxhIGFuZCBhcGFydG1lbnQgYXJlIDI0IHNvbGFyIHBhbmVscywgY292ZXJlZCB0ZXJyYWNlcywgYmVhbSBjZWlsaW5ncywgYm90aCAxMTAtIGFuZCAyMjAtdm9sdCBlbGVjdHJpY2FsIHNvY2tldHMgYW5kIHN1cGVyaW9yIGhpZ2ggZ3JhZGUgYnVpbGRpbmcgbWF0ZXJpYWxzIG9uIHBhciB0byB0aGF0IG9mIGEgZml2ZS1zdGFyIHJlc29ydCBzdWNoIGFzIGJhbGkgd29vZCBmb3VuZCB0aHJvdWdob3V0IHRoZSB2aWxsYS4gRnVydGhlcm1vcmUsIHRoZXJlIGFyZSBzbW9rZSBkZXRlY3RvcnMgYW5kIGFuIGFsYXJtIHN5c3RlbSB0aHJvdWdob3V0IHRoZSBwcm9wZXJ0eS4gUHJlc2VudCBpbiB0aGUgZ2F0ZWQgamFuIHNvZmF0IGNvbW11bml0eSB0aGVyZSBpcyBhbHNvIGEgbWFyaW5hIHNvIHlvdSBtYXkgYWNjZXNzIHRoZSB3YXRlcnMgd2hpY2ggdGhlIHZpbGxhIGhhcyBhbiBleGNlbGxlbnQgdmlldyBvZiBhbmQgMjRob3VyIG1hbm5lZCBzZWN1cml0eSBhdCB0aGUgZ2F0ZS4gQ29udGFjdCB1cyB0b2RheSBhbmQgc2NoZWR1bGUgYSB2aWV3aW5nISBKYW4gc29mYXQgamFuIHNvZmF0IGlzIGFuIHVwc2NhbGUgZ2F0ZWQgY29tbXVuaXR5LCBxdWlldGx5IGxvY2F0ZWQgbmV4dCB0byB0aGUgc3BhbmlzaCB3YXRlci4gVGhlIHJlc29ydCBmZWF0dXJlcyAyNC83IG1hbm5lZCBzZWN1cml0eSBnYXRlLCBzZWN1cml0eSByb3VuZHMgYW5kIGFsYXJtIHJlc3BvbnNlLiBJbiB0aGlzIHJlc2lkZW50aWFsIGFyZWEgYXJlIG1hbnkgbHV4dXJpb3VzIGhvdXNlcyBsb2NhdGVkIG9uIHRoZSBoaWxscywgYWxsIG9mIHRoZW0gYmVuZWZpdCBmcm9tIHRoZSBjb29sIGJyZWV6ZSBhbmQgc29tZSBvZiB0aGVtIGhhdmUgYSBzcGVjdGFjdWxhciB2aWV3IG92ZXJsb29raW5nIHRoZSB0YWZlbGJlcmcgYW5kIHRoZSBzcGFuaXNoIHdhdGVyLiBBbGwgcmVzaWRlbnRzIGhhdmUgYWNjZXNzIHRvIHRoZSBjb21tdW5hbCBtYXJpbmEgYW5kIGEgcGxheSBncm91bmQgZm9yIGNoaWxkcmVuLiBNb3N0IGFtZW5pdGllcyBzdWNoIGFzIGJlYWNoZXMsIHNob3BzIGFuZCByZXN0YXVyYW50cyBhcmUgb25seSBtaW51dGVzIGF3YXkgYW5kIHRoZSBjZW50ZXIgb2Ygd2lsbGVtc3RhZCBpcyBhIDE1IG1pbnV0ZSBkcml2ZS4nLAogICAgICAgICdzdGFydERhdGUnID0+ICcyMDE5LTA4LTIwVDEyOjAwJywKICAgICAgICAnZW5kRGF0ZScgPT4gJzIwMjAtMTEtMDhUMDc6NTY6MTArMDAwMCcsCiAgICAgICAgJ3VybCcgPT4gJ2h0dHBzOi8vY2VudHVyeTIxbnVtYmVyb25lLmNvbS9lbi9kL2phbi1zb2ZhdC1sdXh1cnktdmlsbGEtZ3Vlc3QtaG91c2UtaG9tZS1mb3Itc2FsZS1jdXJhY2FvLTExNDQ0MzEnLAogICAgICAgICdwZXJmb3JtZXInID0+IAogICAgICAgIGFycmF5ICgKICAgICAgICAgICduYW1lJyA9PiAnQ0VOVFVSWSAyMSAjMSBSZWFsIEVzdGF0ZScsCiAgICAgICAgKSwKICAgICAgKSwKICAgICksCiAgICAnbWFwJyA9PiAKICAgIGFycmF5ICgKICAgICAgJ2xhdCcgPT4gJzEyLjA4ODk3Njg1MzU0MTg5NDAnLAogICAgICAnbG5nJyA9PiAnLTY4Ljg1MzU1ODAwMzkwMjQ0MDAnLAogICAgICAnY29vcmRzJyA9PiAnMTIuMDg4OTc2ODUzNTQxODk0MCwtNjguODUzNTU4MDAzOTAyNDQwMCcsCiAgICAgICdkaXJlY3Rpb25zJyA9PiAnaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9tYXBzL2Rpci9DdXJhJUMzJUE3YW8lMkJJbnRlcm5hdGlvbmFsJTJCQWlycG9ydCUyQyUyQkN1cmElQzMlQTdhby8xMi4wODg5NzY4NTM1NDE4OTQwLC02OC44NTM1NTgwMDM5MDI0NDAwL0AxMi4xNDA3MDEzLC02OC45NjU4MzgzLDEzeicsCiAgICApLAogICAgJ21lZGlhJyA9PiAKICAgIGFycmF5ICgKICAgICAgJ2dhbGxlcnknID0+IAogICAgICBhcnJheSAoCiAgICAgICAgJ2xhYmVscycgPT4gCiAgICAgICAgYXJyYXkgKAogICAgICAgICAgJ3ByZXYnID0+ICdQcmV2aW91cycsCiAgICAgICAgICAnbmV4dCcgPT4gJ05leHQnLAogICAgICAgICAgJ25vX3Bob3RvcycgPT4gJ1NvcnJ5LiBObyBQaG90b3MgQXZhbGFpYmxlLicsCiAgICAgICAgKSwKICAgICAgICAncGhvdG9zJyA9PiAKICAgICAgICBhcnJheSAoCiAgICAgICAgICAwID0+IAogICAgICAgICAgYXJyYXkgKAogICAgICAgICAgICAnY2FwdGlvbicgPT4gJyoqKiBjb21pbmcgc29vbiAqKionLAogICAgICAgICAgICAndGl0bGVfc2FmZScgPT4gJ0phbiBTb2ZhdCBMdXh1cnkgVmlsbGEgKyBHdWVzdCBIb3VzZScsCiAgICAgICAgICAgICdzcmMnID0+ICcvbWxzLmNkbi9pbWFnZXMvbGlzdGluZ3MvMTE0NDQzMS9mLzAuanBnJywKICAgICAgICAgICksCiAgICAgICAgICAxID0+IAogICAgICAgICAgYXJyYXkgKAogICAgICAgICAgICAnY2FwdGlvbicgPT4gJyoqKiBjb21pbmcgc29vbiAqKionLAogICAgICAgICAgICAndGl0bGVfc2FmZScgPT4gJ0phbiBTb2ZhdCBMdXh1cnkgVmlsbGEgKyBHdWVzdCBIb3VzZSgyKScsCiAgICAgICAgICAgICdzcmMnID0+ICcvbWxzLmNkbi9pbWFnZXMvbGlzdGluZ3MvMTE0NDQzMS9mLzEuanBnJywKICAgICAgICAgICksCiAgICAgICAgICAyID0+IAogICAgICAgICAgYXJyYXkgKAogICAgICAgICAgICAnY2FwdGlvbicgPT4gJyoqKiBjb21pbmcgc29vbiAqKionLAogICAgICAgICAgICAndGl0bGVfc2FmZScgPT4gJ0phbiBTb2ZhdCBMdXh1cnkgVmlsbGEgKyBHdWVzdCBIb3VzZSgzKScsCiAgICAgICAgICAgICdzcmMnID0+ICcvbWxzLmNkbi9pbWFnZXMvbGlzdGluZ3MvMTE0NDQzMS9mLzIuanBnJywKICAgICAgICAgICksCiAgICAgICAgICAzID0+IAogICAgICAgICAgYXJyYXkgKAogICAgICAgICAgICAnY2FwdGlvbicgPT4gJyoqKiBjb21pbmcgc29vbiAqKionLAogICAgICAgICAgICAndGl0bGVfc2FmZScgPT4gJ0phbiBTb2ZhdCBMdXh1cnkgVmlsbGEgKyBHdWVzdCBIb3VzZSg0KScsCiAgICAgICAgICAgICdzcmMnID0+ICcvbWxzLmNkbi9pbWFnZXMvbGlzdGluZ3MvMTE0NDQzMS9mLzMuanBnJywKICAgICAgICAgICksCiAgICAgICAgICA0ID0+IAogICAgICAgICAgYXJyYXkgKAogICAgICAgICAgICAnY2FwdGlvbicgPT4gJyoqKiBjb21pbmcgc29vbiAqKionLAogICAgICAgICAgICAndGl0bGVfc2FmZScgPT4gJ0phbiBTb2ZhdCBMdXh1cnkgVmlsbGEgKyBHdWVzdCBIb3VzZSg1KScsCiAgICAgICAgICAgICdzcmMnID0+ICcvbWxzLmNkbi9pbWFnZXMvbGlzdGluZ3MvMTE0NDQzMS9mLzQuanBnJywKICAgICAgICAgICksCiAgICAgICAgICA1ID0+IAogICAgICAgICAgYXJyYXkgKAogICAgICAgICAgICAnY2FwdGlvbicgPT4gJyoqKiBjb21pbmcgc29vbiAqKionLAogICAgICAgICAgICAndGl0bGVfc2FmZScgPT4gJ0phbiBTb2ZhdCBMdXh1cnkgVmlsbGEgKyBHdWVzdCBIb3VzZSg2KScsCiAgICAgICAgICAgICdzcmMnID0+ICcvbWxzLmNkbi9pbWFnZXMvbGlzdGluZ3MvMTE0NDQzMS9mLzUuanBnJywKICAgICAgICAgICksCiAgICAgICAgICA2ID0+IAogICAgICAgICAgYXJyYXkgKAogICAgICAgICAgICAnY2FwdGlvbicgPT4gJyoqKiBjb21pbmcgc29vbiAqKionLAogICAgICAgICAgICAndGl0bGVfc2FmZScgPT4gJ0phbiBTb2ZhdCBMdXh1cnkgVmlsbGEgKyBHdWVzdCBIb3VzZSg3KScsCiAgICAgICAgICAgICdzcmMnID0+ICcvbWxzLmNkbi9pbWFnZXMvbGlzdGluZ3MvMTE0NDQzMS9mLzYuanBnJywKICAgICAgICAgICksCiAgICAgICAgICA3ID0+IAogICAgICAgICAgYXJyYXkgKAogICAgICAgICAgICAnY2FwdGlvbicgPT4gJyoqKiBjb21pbmcgc29vbiAqKionLAogICAgICAgICAgICAndGl0bGVfc2FmZScgPT4gJ0phbiBTb2ZhdCBMdXh1cnkgVmlsbGEgKyBHdWVzdCBIb3VzZSg4KScsCiAgICAgICAgICAgICdzcmMnID0+ICcvbWxzLmNkbi9pbWFnZXMvbGlzdGluZ3MvMTE0NDQzMS9mLzcuanBnJywKICAgICAgICAgICksCiAgICAgICAgICA4ID0+IAogICAgICAgICAgYXJyYXkgKAogICAgICAgICAgICAnY2FwdGlvbicgPT4gJyoqKiBjb21pbmcgc29vbiAqKionLAogICAgICAgICAgICAndGl0bGVfc2FmZScgPT4gJ0phbiBTb2ZhdCBMdXh1cnkgVmlsbGEgKyBHdWVzdCBIb3VzZSg5KScsCiAgICAgICAgICAgICdzcmMnID0+ICcvbWxzLmNkbi9pbWFnZXMvbGlzdGluZ3MvMTE0NDQzMS9mLzguanBnJywKICAgICAgICAgICksCiAgICAgICAgICA5ID0+IAogICAgICAgICAgYXJyYXkgKAogICAgICAgICAgICAnY2FwdGlvbicgPT4gJyoqKiBjb21pbmcgc29vbiAqKionLAogICAgICAgICAgICAndGl0bGVfc2FmZScgPT4gJ0phbiBTb2ZhdCBMdXh1cnkgVmlsbGEgKyBHdWVzdCBIb3VzZSgxMCknLAogICAgICAgICAgICAnc3JjJyA9PiAnL21scy5jZG4vaW1hZ2VzL2xpc3RpbmdzLzExNDQ0MzEvZi85LmpwZycsCiAgICAgICAgICApLAogICAgICAgICAgMTAgPT4gCiAgICAgICAgICBhcnJheSAoCiAgICAgICAgICAgICdjYXB0aW9uJyA9PiAnKioqIGNvbWluZyBzb29uICoqKicsCiAgICAgICAgICAgICd0aXRsZV9zYWZlJyA9PiAnSmFuIFNvZmF0IEx1eHVyeSBWaWxsYSArIEd1ZXN0IEhvdXNlKDExKScsCiAgICAgICAgICAgICdzcmMnID0+ICcvbWxzLmNkbi9pbWFnZXMvbGlzdGluZ3MvMTE0NDQzMS9mLzEwLmpwZycsCiAgICAgICAgICApLAogICAgICAgICAgMTEgPT4gCiAgICAgICAgICBhcnJheSAoCiAgICAgICAgICAgICdjYXB0aW9uJyA9PiAnKioqIGNvbWluZyBzb29uICoqKicsCiAgICAgICAgICAgICd0aXRsZV9zYWZlJyA9PiAnSmFuIFNvZmF0IEx1eHVyeSBWaWxsYSArIEd1ZXN0IEhvdXNlKDEyKScsCiAgICAgICAgICAgICdzcmMnID0+ICcvbWxzLmNkbi9pbWFnZXMvbGlzdGluZ3MvMTE0NDQzMS9mLzExLmpwZycsCiAgICAgICAgICApLAogICAgICAgICAgMTIgPT4gCiAgICAgICAgICBhcnJheSAoCiAgICAgICAgICAgICdjYXB0aW9uJyA9PiAnKioqIGNvbWluZyBzb29uICoqKicsCiAgICAgICAgICAgICd0aXRsZV9zYWZlJyA9PiAnSmFuIFNvZmF0IEx1eHVyeSBWaWxsYSArIEd1ZXN0IEhvdXNlKDEzKScsCiAgICAgICAgICAgICdzcmMnID0+ICcvbWxzLmNkbi9pbWFnZXMvbGlzdGluZ3MvMTE0NDQzMS9mLzEyLmpwZycsCiAgICAgICAgICApLAogICAgICAgICAgMTMgPT4gCiAgICAgICAgICBhcnJheSAoCiAgICAgICAgICAgICdjYXB0aW9uJyA9PiAnKioqIGNvbWluZyBzb29uICoqKicsCiAgICAgICAgICAgICd0aXRsZV9zYWZlJyA9PiAnSmFuIFNvZmF0IEx1eHVyeSBWaWxsYSArIEd1ZXN0IEhvdXNlKDE0KScsCiAgICAgICAgICAgICdzcmMnID0+ICcvbWxzLmNkbi9pbWFnZXMvbGlzdGluZ3MvMTE0NDQzMS9mLzEzLmpwZycsCiAgICAgICAgICApLAogICAgICAgICAgMTQgPT4gCiAgICAgICAgICBhcnJheSAoCiAgICAgICAgICAgICdjYXB0aW9uJyA9PiAnKioqIGNvbWluZyBzb29uICoqKicsCiAgICAgICAgICAgICd0aXRsZV9zYWZlJyA9PiAnSmFuIFNvZmF0IEx1eHVyeSBWaWxsYSArIEd1ZXN0IEhvdXNlKDE1KScsCiAgICAgICAgICAgICdzcmMnID0+ICcvbWxzLmNkbi9pbWFnZXMvbGlzdGluZ3MvMTE0NDQzMS9mLzE0LmpwZycsCiAgICAgICAgICApLAogICAgICAgICAgMTUgPT4gCiAgICAgICAgICBhcnJheSAoCiAgICAgICAgICAgICdjYXB0aW9uJyA9PiAnKioqIGNvbWluZyBzb29uICoqKicsCiAgICAgICAgICAgICd0aXRsZV9zYWZlJyA9PiAnSmFuIFNvZmF0IEx1eHVyeSBWaWxsYSArIEd1ZXN0IEhvdXNlKDE2KScsCiAgICAgICAgICAgICdzcmMnID0+ICcvbWxzLmNkbi9pbWFnZXMvbGlzdGluZ3MvMTE0NDQzMS9mLzE1LmpwZycsCiAgICAgICAgICApLAogICAgICAgICAgMTYgPT4gCiAgICAgICAgICBhcnJheSAoCiAgICAgICAgICAgICdjYXB0aW9uJyA9PiAnKioqIGNvbWluZyBzb29uICoqKicsCiAgICAgICAgICAgICd0aXRsZV9zYWZlJyA9PiAnSmFuIFNvZmF0IEx1eHVyeSBWaWxsYSArIEd1ZXN0IEhvdXNlKDE3KScsCiAgICAgICAgICAgICdzcmMnID0+ICcvbWxzLmNkbi9pbWFnZXMvbGlzdGluZ3MvMTE0NDQzMS9mLzE2LmpwZycsCiAgICAgICAgICApLAogICAgICAgICAgMTcgPT4gCiAgICAgICAgICBhcnJheSAoCiAgICAgICAgICAgICdjYXB0aW9uJyA9PiAnKioqIGNvbWluZyBzb29uICoqKicsCiAgICAgICAgICAgICd0aXRsZV9zYWZlJyA9PiAnSmFuIFNvZmF0IEx1eHVyeSBWaWxsYSArIEd1ZXN0IEhvdXNlKDE4KScsCiAgICAgICAgICAgICdzcmMnID0+ICcvbWxzLmNkbi9pbWFnZXMvbGlzdGluZ3MvMTE0NDQzMS9mLzE3LmpwZycsCiAgICAgICAgICApLAogICAgICAgICAgMTggPT4gCiAgICAgICAgICBhcnJheSAoCiAgICAgICAgICAgICdjYXB0aW9uJyA9PiAnKioqIGNvbWluZyBzb29uICoqKicsCiAgICAgICAgICAgICd0aXRsZV9zYWZlJyA9PiAnSmFuIFNvZmF0IEx1eHVyeSBWaWxsYSArIEd1ZXN0IEhvdXNlKDE5KScsCiAgICAgICAgICAgICdzcmMnID0+ICcvbWxzLmNkbi9pbWFnZXMvbGlzdGluZ3MvMTE0NDQzMS9mLzE4LmpwZycsCiAgICAgICAgICApLAogICAgICAgICAgMTkgPT4gCiAgICAgICAgICBhcnJheSAoCiAgICAgICAgICAgICdjYXB0aW9uJyA9PiAnKioqIGNvbWluZyBzb29uICoqKicsCiAgICAgICAgICAgICd0aXRsZV9zYWZlJyA9PiAnSmFuIFNvZmF0IEx1eHVyeSBWaWxsYSArIEd1ZXN0IEhvdXNlKDIwKScsCiAgICAgICAgICAgICdzcmMnID0+ICcvbWxzLmNkbi9pbWFnZXMvbGlzdGluZ3MvMTE0NDQzMS9mLzE5LmpwZycsCiAgICAgICAgICApLAogICAgICAgICAgMjAgPT4gCiAgICAgICAgICBhcnJheSAoCiAgICAgICAgICAgICdjYXB0aW9uJyA9PiAnKioqIGNvbWluZyBzb29uICoqKicsCiAgICAgICAgICAgICd0aXRsZV9zYWZlJyA9PiAnSmFuIFNvZmF0IEx1eHVyeSBWaWxsYSArIEd1ZXN0IEhvdXNlKDIxKScsCiAgICAgICAgICAgICdzcmMnID0+ICcvbWxzLmNkbi9pbWFnZXMvbGlzdGluZ3MvMTE0NDQzMS9mLzIwLmpwZycsCiAgICAgICAgICApLAogICAgICAgICAgMjEgPT4gCiAgICAgICAgICBhcnJheSAoCiAgICAgICAgICAgICdjYXB0aW9uJyA9PiAnKioqIGNvbWluZyBzb29uICoqKicsCiAgICAgICAgICAgICd0aXRsZV9zYWZlJyA9PiAnSmFuIFNvZmF0IEx1eHVyeSBWaWxsYSArIEd1ZXN0IEhvdXNlKDIyKScsCiAgICAgICAgICAgICdzcmMnID0+ICcvbWxzLmNkbi9pbWFnZXMvbGlzdGluZ3MvMTE0NDQzMS9mLzIxLmpwZycsCiAgICAgICAgICApLAogICAgICAgICAgMjIgPT4gCiAgICAgICAgICBhcnJheSAoCiAgICAgICAgICAgICdjYXB0aW9uJyA9PiAnKioqIGNvbWluZyBzb29uICoqKicsCiAgICAgICAgICAgICd0aXRsZV9zYWZlJyA9PiAnSmFuIFNvZmF0IEx1eHVyeSBWaWxsYSArIEd1ZXN0IEhvdXNlKDIzKScsCiAgICAgICAgICAgICdzcmMnID0+ICcvbWxzLmNkbi9pbWFnZXMvbGlzdGluZ3MvMTE0NDQzMS9mLzIyLmpwZycsCiAgICAgICAgICApLAogICAgICAgICAgMjMgPT4gCiAgICAgICAgICBhcnJheSAoCiAgICAgICAgICAgICdjYXB0aW9uJyA9PiAnKioqIGNvbWluZyBzb29uICoqKicsCiAgICAgICAgICAgICd0aXRsZV9zYWZlJyA9PiAnSmFuIFNvZmF0IEx1eHVyeSBWaWxsYSArIEd1ZXN0IEhvdXNlKDI0KScsCiAgICAgICAgICAgICdzcmMnID0+ICcvbWxzLmNkbi9pbWFnZXMvbGlzdGluZ3MvMTE0NDQzMS9mLzIzLmpwZycsCiAgICAgICAgICApLAogICAgICAgICAgMjQgPT4gCiAgICAgICAgICBhcnJheSAoCiAgICAgICAgICAgICdjYXB0aW9uJyA9PiAnKioqIGNvbWluZyBzb29uICoqKicsCiAgICAgICAgICAgICd0aXRsZV9zYWZlJyA9PiAnSmFuIFNvZmF0IEx1eHVyeSBWaWxsYSArIEd1ZXN0IEhvdXNlKDI1KScsCiAgICAgICAgICAgICdzcmMnID0+ICcvbWxzLmNkbi9pbWFnZXMvbGlzdGluZ3MvMTE0NDQzMS9mLzI0LmpwZycsCiAgICAgICAgICApLAogICAgICAgICAgMjUgPT4gCiAgICAgICAgICBhcnJheSAoCiAgICAgICAgICAgICdjYXB0aW9uJyA9PiAnKioqIGNvbWluZyBzb29uICoqKicsCiAgICAgICAgICAgICd0aXRsZV9zYWZlJyA9PiAnSmFuIFNvZmF0IEx1eHVyeSBWaWxsYSArIEd1ZXN0IEhvdXNlKDI2KScsCiAgICAgICAgICAgICdzcmMnID0+ICcvbWxzLmNkbi9pbWFnZXMvbGlzdGluZ3MvMTE0NDQzMS9mLzI1LmpwZycsCiAgICAgICAgICApLAogICAgICAgICAgMjYgPT4gCiAgICAgICAgICBhcnJheSAoCiAgICAgICAgICAgICdjYXB0aW9uJyA9PiAnKioqIGNvbWluZyBzb29uICoqKicsCiAgICAgICAgICAgICd0aXRsZV9zYWZlJyA9PiAnSmFuIFNvZmF0IEx1eHVyeSBWaWxsYSArIEd1ZXN0IEhvdXNlKDI3KScsCiAgICAgICAgICAgICdzcmMnID0+ICcvbWxzLmNkbi9pbWFnZXMvbGlzdGluZ3MvMTE0NDQzMS9mLzI2LmpwZycsCiAgICAgICAgICApLAogICAgICAgICAgMjcgPT4gCiAgICAgICAgICBhcnJheSAoCiAgICAgICAgICAgICdjYXB0aW9uJyA9PiAnKioqIGNvbWluZyBzb29uICoqKicsCiAgICAgICAgICAgICd0aXRsZV9zYWZlJyA9PiAnSmFuIFNvZmF0IEx1eHVyeSBWaWxsYSArIEd1ZXN0IEhvdXNlKDI4KScsCiAgICAgICAgICAgICdzcmMnID0+ICcvbWxzLmNkbi9pbWFnZXMvbGlzdGluZ3MvMTE0NDQzMS9mLzI3LmpwZycsCiAgICAgICAgICApLAogICAgICAgICAgMjggPT4gCiAgICAgICAgICBhcnJheSAoCiAgICAgICAgICAgICdjYXB0aW9uJyA9PiAnKioqIGNvbWluZyBzb29uICoqKicsCiAgICAgICAgICAgICd0aXRsZV9zYWZlJyA9PiAnSmFuIFNvZmF0IEx1eHVyeSBWaWxsYSArIEd1ZXN0IEhvdXNlKDI5KScsCiAgICAgICAgICAgICdzcmMnID0+ICcvbWxzLmNkbi9pbWFnZXMvbGlzdGluZ3MvMTE0NDQzMS9mLzI4LmpwZycsCiAgICAgICAgICApLAogICAgICAgICAgMjkgPT4gCiAgICAgICAgICBhcnJheSAoCiAgICAgICAgICAgICdjYXB0aW9uJyA9PiAnKioqIGNvbWluZyBzb29uICoqKicsCiAgICAgICAgICAgICd0aXRsZV9zYWZlJyA9PiAnSmFuIFNvZmF0IEx1eHVyeSBWaWxsYSArIEd1ZXN0IEhvdXNlKDMwKScsCiAgICAgICAgICAgICdzcmMnID0+ICcvbWxzLmNkbi9pbWFnZXMvbGlzdGluZ3MvMTE0NDQzMS9mLzI5LmpwZycsCiAgICAgICAgICApLAogICAgICAgICksCiAgICAgICksCiAgICAgICdtYXBsb2MnID0+ICdodHRwczovL3d3dy5nb29nbGUuY29tL21hcHMvZW1iZWQ/cGI9ITFtMTghMW0xMiExbTMhMWQxNTA2My42OTY0MDY4OCEyZC02OC44NTM1NTgwMDM5MDI0NCEzZDEyLjA4ODk3Njg1MzU0MTg5ITJtMyExZjAhMmYwITNmMCEzbTIhMWkxMDI0ITJpNzY4ITRmMTMuMSEzbTMhMW0yITFzMHgwJTNBMHgwITJ6TVRMQ3NEVW5NakF1TXlKT0lEWTR3ckExTVNjeE1pNDRJbGMhNWUwITNtMiExc2VuITJzY2EhNHYxNTk2ODczMzcwODU3ITVtMiExc2VuITJzY2EnLAogICAgICAndmlkZW9zJyA9PiBmYWxzZSwKICAgICAgJ3Z0b3VycycgPT4gZmFsc2UsCiAgICApLAogICksCiAgJ2VUYWcnID0+ICdkLjEuZW4uMTE0NDQzMScsCiAgJ21heEFnZScgPT4gMTQ0MDAsCiAgJ21heERlZkhvdXJzJyA9PiA0LAogICdlVGFnQXJyJyA9PiAKICBhcnJheSAoCiAgICAnaWNpZCcgPT4gJ3VzJywKICAgICd0aHJlYXQnID0+IDEsCiAgICAncm9ib3QnID0+IDAsCiAgICAnbGFuZycgPT4gJ2VuJywKICAgICdhY2N0SWQnID0+ICcxMDAwMzk5JywKICAgICdsaWQnID0+ICcxMTQ0NDMxJywKICAgICdsYXN0dXBkYXRlJyA9PiAxNTgxNTI4NjQzLAogICAgJ3N0cmluZycgPT4gJ2QuMS5lbi4xMTQ0NDMxJywKICAgICdtYXhBZ2UnID0+IDE0NDAwLAogICAgJ21heERlZkhvdXJzJyA9PiA0LAogICksCiAgJ01ldGFJbmZvJyA9PiAKICBhcnJheSAoCiAgICAnc2l0ZV9uYW1lJyA9PiAnQ0VOVFVSWSAyMSBOdW1iZXIgT25lJywKICAgICd0aXRsZScgPT4gJ0phbiBTb2ZhdCBMdXh1cnkgVmlsbGEgKyBHdWVzdCBIb3VzZSAtIEhvbWUgRm9yIFNhbGUgIEN1cmHDp2FvIHwgQ2VudHVyeSAyMSBDdXJhw6dhbyBSZWFsIEVzdGF0ZScsCiAgICAnZGVzY3JpcHRpb24nID0+ICdXaXRoaW4gdGhlIHRyYW5xdWlsIGdhdGVkIGNvbW11bml0eSBvZiBqYW4gc29mYXQgbGllcyB0aGlzIG1hc3RlcmZ1bGx5IGJ1aWx0IHZpbGxhLiBDYXB0aXZhdGluZyBmcm9tIG91dHNpZGUgdGhlIGdhdGUsIHRoZSB1bmlxdWUgdmlsbGEgd2lsbCBpbnNwaXJlIHlvdSBmcm8uLi4nLAogICAgJ2Nhbm9uaWNhbCcgPT4gJ2h0dHBzOi8vY2VudHVyeTIxbnVtYmVyb25lLmNvbS9lbi9kLzExNDQ0MzEnLAogICAgJ2FtcGh0bWwnID0+ICcvYW1wL2VuL2QvMTE0NDQzMScsCiAgICAnbG9jYWxlJyA9PiAnZW4tVVMnLAogICksCiAgJ3VyaV9hbHRlcm5hdGVzJyA9PiAKICBhcnJheSAoCiAgICAnZW4nID0+IAogICAgYXJyYXkgKAogICAgICAnbGFuZycgPT4gJ2VuJywKICAgICAgJ2xhYmVsJyA9PiAnRW5nbGlzaCcsCiAgICAgICdmbGFnJyA9PiAnZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFMQ0FJQUFBRDVnSnB1QUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDBVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFIelNVUkJWSGphWWt4T1A4SUFCLy8rTWZ6N3c4RHdpNEhoUDVDY0piL24vN2V2YjE2L0FQTC9nUkZRRGlBQXczSnVBZ0FJQkVEUS9pc3dFRVJqR3pCUUxFcnU5N2xsMGcwKzNIdnFNbjFTcHFscUdzWk1zWnNJZTBTSUNBNWd0NWEvQUdJRWFyQ1B0RmgrNk4vZmZ3eEE5T3ZQLzcvL1FZd2ZmLzZmWmFobWVQZUI0ZE5IaGkrZkdiNTlZNHp5dkhIbUNFQUFBVzNZRHpRWWFKSjkzYSt2WDc5YVZmNTgvLzY5ZnZFUGxwSWZuejU5K3ZEaHc3dDM3OTY4ZWZQM2IvU1hMNTlPbmp3SUVFQXNEUCtZZ1k1M2IyYjg5KysvYXd2TG45OE1EaTJjVnhsKy92bDZtaXR1Q3RCZ2hpOWYvdi80OGUvWEw4NmtyajlYendFRUVFTnk4ZzZndTIycmZuNzgrTkdzNU9mcjE2K1pDNTgrZnZ5WXdYOHJ4T3hYcjE2OWZQbnkrZlBuMS8vOTNiSmxCVUFBc1FBRFpNRUJ4ajkvR0J4YjJQLzkrUy9SOHUzdnp4dXlhWDhaSHYzajgvWUdtczN3OHljUUFSbWkyZUUzN3Q0QUNDREdSNC91U2tyS0FTMzVCM1RULy8vL3dBRE9nTE9CSWFYSXlqQmx3eEtBQUdLUlhqQ0IwU09FYWV1Ky95OWZNbno0QUhReENQMzQ4Ui9vK2wrLy9zTVpRQk5MRXZpZjNBY0lJTVpidHk3THk2dDlabVhsK2ZYai8zOEdvSEgvVWNHZlA3OS8vQkJpWUhqeTkrOC9vVWtOQUFIRXd0MVYvdkkvS0JZL1FTSVNGcU0vR0JnK016QjhBNlBmWUM1RUZpREFBQnFnVzc3Nk1QMHJBQUFBQUVsRlRrU3VRbUNDJywKICAgICAgJ2hyZWYnID0+ICcvZW4vZC9qYW4tc29mYXQtbHV4dXJ5LXZpbGxhLWd1ZXN0LWhvdXNlLWhvbWUtZm9yLXNhbGUtY3VyYWNhby0xMTQ0NDMxJywKICAgICksCiAgICAnbmwnID0+IAogICAgYXJyYXkgKAogICAgICAnbGFuZycgPT4gJ25sJywKICAgICAgJ2xhYmVsJyA9PiAnTmVkZXJsYW5kcycsCiAgICAgICdmbGFnJyA9PiAnZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFMQ0FJQUFBRDVnSnB1QUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDBVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFGWFNVUkJWSGphWXZ6UGdBRC9VTmxZRVVBQWt1VGdDQUFJQmdKZ2dxNVZvQXMxcU0wdmR6bU16MzYydmV6am9reFBHaW1rRVE1V29BUUVLdUs3MXp3Q0NLeUI0Yy8vSjgrQlNobisvdnYvK3cvRDM5OUFFb3grLy84RkpILzkvd1VVK2NVb0t3MjBBU0NBV0JoRURmL0x5RE93ODRCVS8va0R0Z0dJL29BUm1BSFJESlFTRndWcUFBZ2d4bzhmUC9MeThvS2M5UDgvQXhqaUFveU1qQThlUEFBSUlKWi8vLzVCVklNME1PQldEcFJsWlB6ejV3OUFBTEg4Z3l2Q2J6N1FCckNKQUFIRXlLRFlYMTVyLytqMTE5OS8vdjM1KysvWG43Ky8vLzc3RFNUL3dNbC9mNERrMzc4SzRqeDdPMmNBQkJBTHc3TlA3Ny8rZXYzeEIwZ09wT0hmcjk5QWRYOS9nVFZBU0tDR1AvLys4WEN5TWpDOEF3Z2dGb1pmSUhXU3dwd1FrNENXL0FZanNLbEE4dStmZi8vLy92MzM5OTgvWVBnQm5RUVFRSXpBYUdOZytBVkdmNUFZZjVCRS9vQ2pHRUl5QVFRWUFHdktaNEM2K3hYUkFBQUFBRWxGVGtTdVFtQ0MnLAogICAgICAnaHJlZicgPT4gJy9ubC9kL2phbi1zb2ZhdC1sdXh1cnktdmlsbGEtZ3Vlc3QtaG91c2UtdGUta29vcC1jdXJhY2FvLTExNDQ0MzEnLAogICAgKSwKICAgICdlcycgPT4gCiAgICBhcnJheSAoCiAgICAgICdsYW5nJyA9PiAnZXMnLAogICAgICAnbGFiZWwnID0+ICdFc3Bhw7FvbCcsCiAgICAgICdmbGFnJyA9PiAnZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFMQ0FJQUFBRDVnSnB1QUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDBVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFGblNVUkJWSGphWXZ6UGdBRC9VTmxZRVVBQW11VFlBQUFRaEFFWXFGL3pGYmU1MFJaMWNNbVM5VExpMHBKTFJqWm9oQU1UR0ZVTjlIZG5IZ0VFMXNEdy8vK1RwMENsSU5XL2YwTklLUG9GSkgvOS8vVUx5R2FVbFFYYUFCQkFMQXgvR2Y0ekF0MzFGNGkrZmZqMy9jTi9YckZmek94Ly92Ly8vZi8vTHpBQ00vNzlabUQ4L2U4VEEwQUFNWUhkRFZUOTU4dlhQMzhuTURCMHMzeDk0L1RqNXkrWWFoaGlBS0xmUUtVQUFjUUVkdEpmb0RITUYyTCt2UHpEbUZYTGVsZjU1MXRHRk9PaGV2NEEvUWdRUUV4Z0h3QWQ4SWRGVC9XejZqK0dobHBtWFNPVy8yei8vLzhFcS9zSjE4RHcvemRRQTBBQU1RRXh4SmpqZHk5eDIvNzZFZkx6NE1YZFAvaSt3c3lHa2tBM0F3Mzk4NGNCSUlBWWZ6SXdNS2VsL2J0M2p3RWFMTkF3Z1pJUXhwL2ZESC8rTXFxb3ZMMTRFU0NBV0lDZVp2cjloMEZTRWhTZ3dCZ0F5Z0ZERU1UK3d3QWhnUWdjNGtBRVZBd1FRSXhmVVNNU1R4eERBRUNBQVFBSldrZTh2NHUxdEFBQUFBQkpSVTVFcmtKZ2dnPT0nLAogICAgICAnaHJlZicgPT4gJy9lcy9kL2phbi1zb2ZhdC1sdXh1cnktdmlsbGEtZ3Vlc3QtaG91c2UtY2FzYS1lbi12ZW50YS1jdXJhemFvLTExNDQ0MzEnLAogICAgKSwKICAgICdkZScgPT4gCiAgICBhcnJheSAoCiAgICAgICdsYW5nJyA9PiAnZGUnLAogICAgICAnbGFiZWwnID0+ICdEZXV0c2NoJywKICAgICAgJ2ZsYWcnID0+ICdkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQUxDQUlBQUFENWdKcHVBQUFBQkdkQlRVRUFBSy9JTndXSzZRQUFBQmwwUlZoMFUyOW1kSGRoY21VQVFXUnZZbVVnU1cxaFoyVlNaV0ZrZVhISlpUd0FBQUd6U1VSQlZIamFZdlR4Y1diNCs1M2gzejhHWnBaZmYvNzkrdjNuLzcvZkRBei9HSEFBZ0FCaStmMzdlM0Z4T1pEMUR3eisvdjN6OXkrRS9BTUZ2My8vK1F1bWZ2OWV0MjQxUUFDeE1ERXhBVldmT0hrSkpBRVcvZ1VFUDBFUURuNzgrQUhFL2dGT1FKVUFBY1FpeThBZzhPK2ZMRmoxbjErL1FEcCsvZ1Fpb0s3ZlAzNzgrdmtEcU9IMzl4OUEvUkovZ0U1bEFBaEFZaHpjQUFDQ1FCRGtnUlhSalAwMzRSMElhRFRaVEZabjBESXRvdDM3Uzk0S0xPSU5lckVjSTdhS0hBSEU4di8zci85Ly96SUExZjM2L1IrbzR0ZXZmMUFOWU5WQTlQMDdSRDlJSlFNRFFBQ3hBREhEM3o4SWc0R01IeitBcXFIYWdLcC8vZndMVkEwVS8vdjdMd01EUUFDeC9MWmlZRkQ3LzUvNTMvKy8vLzc5QnFLL0VNWi9VUEFDU1lhL3YvOER5WDlBMG9UeHgyRUdnQUJpK2EvSDhGL20zMzlCb0NvUStnOGtnUmFDUXZnUEpKaUJZbUF1dzM5aHhuK3VEQUFCeE1Md2krRS8wUHVzUmt3TXZ4aEJHb0RrSDRiL3YvK0QyRUR5ei8vL1FCMS9RTGI4K3NQMGxRRWdnRmgrdkdYWU0yL1NQNkEyWm9hZjMwRXgvSitQZ2VrSHd6OWdRREF6L1AwRllyQXlNZno3d2NEQXpQRHRGd05BZ0FFQWQzU0l5Uml0WDFnQUFBQUFTVVZPUks1Q1lJST0nLAogICAgICAnaHJlZicgPT4gJy9kZS9kL2phbi1zb2ZhdC1sdXh1cnktdmlsbGEtZ3Vlc3QtaG91c2UtenUtdmVya2F1ZmVuLWN1cmFjYW8tMTE0NDQzMScsCiAgICApLAogICksCik=