tide-design-system 2.3.1 → 2.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/IconAccountBalance-B9rJ09ax.js +16 -0
- package/dist/IconAccountBalance-t66sPb0V.cjs +2 -0
- package/dist/IconAcute-9dHrmblT.js +16 -0
- package/dist/IconAcute-kA8NXjsF.cjs +2 -0
- package/dist/IconAdd-BsJiPHYa.js +16 -0
- package/dist/IconAdd-Bwkom_hG.cjs +2 -0
- package/dist/IconAiDescription-CFPMCDKK.cjs +2 -0
- package/dist/IconAiDescription-fQ_B1UGe.js +20 -0
- package/dist/IconAlignSpaceEven-B2UIi1ao.js +16 -0
- package/dist/IconAlignSpaceEven-DKSbfzb-.cjs +2 -0
- package/dist/IconApplePay-BBSCGFjG.cjs +2 -0
- package/dist/IconApplePay-DS6fQdV_.js +16 -0
- package/dist/IconArrowBack-CUHuJHxp.cjs +2 -0
- package/dist/IconArrowBack-CZSCZ-Jf.js +16 -0
- package/dist/IconArrowCycle-D3f38VT-.js +16 -0
- package/dist/IconArrowCycle-R7Q8EDQJ.cjs +2 -0
- package/dist/IconArrowForward-09bz9o1h.cjs +2 -0
- package/dist/IconArrowForward-CICM-aJ1.js +16 -0
- package/dist/IconArrowRight-CwweSeyO.js +16 -0
- package/dist/IconArrowRight-Np65RzRK.cjs +2 -0
- package/dist/IconArrowUp-7TI0p224.js +16 -0
- package/dist/IconArrowUp-DrhwTcVn.cjs +2 -0
- package/dist/IconAssignment-DGD2WaCW.cjs +2 -0
- package/dist/IconAssignment-DQQnmJc_.js +16 -0
- package/dist/IconAttachMoney-DFObJ1fx.cjs +2 -0
- package/dist/IconAttachMoney-sLj77NOR.js +16 -0
- package/dist/IconAtvAtv-DubJwTjK.cjs +2 -0
- package/dist/IconAtvAtv-bfqGL_Iq.js +20 -0
- package/dist/IconAtvDuneBuggy-CbiyQRZg.js +20 -0
- package/dist/IconAtvDuneBuggy-CjN1kUXQ.cjs +2 -0
- package/dist/IconAtvGoKart-BxqcGKzS.js +20 -0
- package/dist/IconAtvGoKart-C6lX6Uq4.cjs +2 -0
- package/dist/IconAtvGolfCart-6Xwju3k6.js +20 -0
- package/dist/IconAtvGolfCart-DWAt3bvk.cjs +2 -0
- package/dist/IconAtvSandRail-DGwmb5aU.cjs +2 -0
- package/dist/IconAtvSandRail-dKmA3KoG.js +20 -0
- package/dist/IconAtvSideBySide-CVSUrX7w.js +20 -0
- package/dist/IconAtvSideBySide-OvuV0qFX.cjs +2 -0
- package/dist/IconAtvTrailer-BB6C_WKk.js +20 -0
- package/dist/IconAtvTrailer-D_aI1qUx.cjs +2 -0
- package/dist/IconAutoRenew-Bl-Obhh6.js +16 -0
- package/dist/IconAutoRenew-CRnGvhzj.cjs +2 -0
- package/dist/IconAwardStar-Dx2metNr.cjs +2 -0
- package/dist/IconAwardStar-KYYsH2ss.js +16 -0
- package/dist/IconBed-BVLiRAhU.js +16 -0
- package/dist/IconBed-o4YHr8QY.cjs +2 -0
- package/dist/IconBoatmartPwc-B3seLCYC.js +20 -0
- package/dist/IconBoatmartPwc-BKltWtRW.cjs +2 -0
- package/dist/IconBoatmartTrailer-BosS4Ix8.js +20 -0
- package/dist/IconBoatmartTrailer-D3firMg5.cjs +2 -0
- package/dist/IconBolt-BTeYzS6k.cjs +2 -0
- package/dist/IconBolt-D-BSIXex.js +16 -0
- package/dist/IconBookmark-CitAJpUy.cjs +2 -0
- package/dist/IconBookmark-D3Pu86n4.js +16 -0
- package/dist/IconBunkhouse-B1covD1i.cjs +2 -0
- package/dist/IconBunkhouse-B4PaVH2y.js +16 -0
- package/dist/IconCalendarMonth-CortoSy-.js +16 -0
- package/dist/IconCalendarMonth-DfHe6Olt.cjs +2 -0
- package/dist/IconCall-6gUYtYnc.cjs +2 -0
- package/dist/IconCall-DRysHKSn.js +16 -0
- package/dist/IconCallQuality-BMVs2M2s.js +16 -0
- package/dist/IconCallQuality-DseNWKcQ.cjs +2 -0
- package/dist/IconCarRental-CaH55o-0.cjs +2 -0
- package/dist/IconCarRental-qvIsiGfR.js +16 -0
- package/dist/IconCheck-CliQNN_D.js +16 -0
- package/dist/IconCheck-DrU3Xqj-.cjs +2 -0
- package/dist/IconChevronLeft-CD73NwTB.cjs +2 -0
- package/dist/IconChevronLeft-hQC1St0W.js +16 -0
- package/dist/IconChevronRight-CNHvWIJQ.cjs +2 -0
- package/dist/IconChevronRight-DVYcrzWE.js +16 -0
- package/dist/IconClear-COYKsp8t.js +16 -0
- package/dist/IconClear-Ddi_gQQW.cjs +2 -0
- package/dist/IconClose-ClKjVrRR.cjs +2 -0
- package/dist/IconClose-HSRbXCDE.js +16 -0
- package/dist/IconContract-BMNU7dRH.cjs +2 -0
- package/dist/IconContract-BaV1mGEr.js +16 -0
- package/dist/IconCrash-BzlfUp1G.cjs +2 -0
- package/dist/IconCrash-ClWQK2fw.js +16 -0
- package/dist/IconDashboardCustomize-BAGay10U.cjs +2 -0
- package/dist/IconDashboardCustomize-BJEcZ-jN.js +16 -0
- package/dist/IconDelete-CUu2bGqQ.cjs +2 -0
- package/dist/IconDelete-DJwergoy.js +16 -0
- package/dist/IconDiamond-BeD6bdL2.cjs +2 -0
- package/dist/IconDiamond-D34wtBhd.js +16 -0
- package/dist/IconDirectionsBoat-B0wTnd3o.cjs +2 -0
- package/dist/IconDirectionsBoat-ByiHuypy.js +16 -0
- package/dist/IconDomain-CXsBLm5C.js +16 -0
- package/dist/IconDomain-Dxw5ILrL.cjs +2 -0
- package/dist/IconDraft-DR6EZSwa.cjs +2 -0
- package/dist/IconDraft-qSYk5cPm.js +16 -0
- package/dist/IconEdit-CFeDlBN2.js +16 -0
- package/dist/IconEdit-DiFJHvLw.cjs +2 -0
- package/dist/IconEngine-BLi3BThi.js +20 -0
- package/dist/IconEngine-NRbH-EHX.cjs +2 -0
- package/dist/IconEngineering-DKDW6b3b.js +16 -0
- package/dist/IconEngineering-Gu6xRPyo.cjs +2 -0
- package/dist/IconError-B8vfdBPh.cjs +2 -0
- package/dist/IconError-BsmS7Ido.js +16 -0
- package/dist/IconExpandContent-CUz-acoJ.js +16 -0
- package/dist/IconExpandContent-CZBUTFa4.cjs +2 -0
- package/dist/IconExpandLess-BeBqjATL.cjs +2 -0
- package/dist/IconExpandLess-kI04ZTDg.js +16 -0
- package/dist/IconExpandMore-BpIrNsXP.js +16 -0
- package/dist/IconExpandMore-EyD544-R.cjs +2 -0
- package/dist/IconFacebook-BZJRlI_M.cjs +2 -0
- package/dist/IconFacebook-DiMWgcSK.js +16 -0
- package/dist/IconFavorite-CDLEUDWu.js +16 -0
- package/dist/IconFavorite-DK4VZH9M.cjs +2 -0
- package/dist/IconFavoriteFilled--f1zeXKy.js +16 -0
- package/dist/IconFavoriteFilled-DEpn1cmU.cjs +2 -0
- package/dist/IconFlag-BztsqLLH.cjs +2 -0
- package/dist/IconFlag-CmppikB3.js +16 -0
- package/dist/IconFormatBold-D5ouQYvY.cjs +2 -0
- package/dist/IconFormatBold-rtvyBotR.js +16 -0
- package/dist/IconFormatItalic-BlcS8gnO.js +16 -0
- package/dist/IconFormatItalic-nERjH9_F.cjs +2 -0
- package/dist/IconFormatListBulleted-BbJCNSJG.js +16 -0
- package/dist/IconFormatListBulleted-DiO46Jg8.cjs +2 -0
- package/dist/IconForum-CFa_3MsA.js +16 -0
- package/dist/IconForum-Dw6egtlq.cjs +2 -0
- package/dist/IconGas-D8bshXuI.cjs +2 -0
- package/dist/IconGas-rD46ubiw.js +16 -0
- package/dist/IconGavel-CBdvVo3E.cjs +2 -0
- package/dist/IconGavel-l3k6jtN3.js +16 -0
- package/dist/IconGears-CaXA9HK2.js +16 -0
- package/dist/IconGears-DGMqs4S7.cjs +2 -0
- package/dist/IconGlobeLocationPin-DaxXQ30W.cjs +2 -0
- package/dist/IconGlobeLocationPin-cTdYm_5A.js +16 -0
- package/dist/IconGoogle-6R7roJzd.js +31 -0
- package/dist/IconGoogle-Yw_mSfTf.cjs +2 -0
- package/dist/IconGooglePay-RCvnstwi.cjs +2 -0
- package/dist/IconGooglePay-XLqJKvZe.js +16 -0
- package/dist/IconGrid-BoplWzPb.js +16 -0
- package/dist/IconGrid-Dt-ErvEF.cjs +2 -0
- package/dist/IconHandshake-CsYF9kmp.js +16 -0
- package/dist/IconHandshake-Cy-2UfCE.cjs +2 -0
- package/dist/IconHandyman-CQL-qu8p.js +16 -0
- package/dist/IconHandyman-Qk8vvw-k.cjs +2 -0
- package/dist/IconHeight-8L9ZpDnf.cjs +2 -0
- package/dist/IconHeight-CTAQLi2I.js +16 -0
- package/dist/IconHelp-BEzzbWr3.js +16 -0
- package/dist/IconHelp-yLLGan-o.cjs +2 -0
- package/dist/IconInfo-BACpUpXu.js +16 -0
- package/dist/IconInfo-MifqZPeF.cjs +2 -0
- package/dist/IconInformation-Bd6DwbOW.cjs +2 -0
- package/dist/IconInformation-CGYah4Eo.js +16 -0
- package/dist/IconInsertText-C5HjwAuL.js +16 -0
- package/dist/IconInsertText-DAU6Gz1h.cjs +2 -0
- package/dist/IconInstagram-DEPxn51x.js +16 -0
- package/dist/IconInstagram-V0Phqs8e.cjs +2 -0
- package/dist/IconIosShare-jNePPJBV.js +16 -0
- package/dist/IconIosShare-yDTudxOJ.cjs +2 -0
- package/dist/IconLayout-CgFL9FBD.js +16 -0
- package/dist/IconLayout-NaNwp1Mc.cjs +2 -0
- package/dist/IconLevellingJack-BrmBMIeS.cjs +2 -0
- package/dist/IconLevellingJack-rO4KepKs.js +20 -0
- package/dist/IconLinkedIn-B92dDFNi.cjs +2 -0
- package/dist/IconLinkedIn-GWoK01li.js +16 -0
- package/dist/IconLocalShipping-B3U2CrvK.cjs +2 -0
- package/dist/IconLocalShipping-Bayc9OL_.js +16 -0
- package/dist/IconLock-CzvHZ2QM.cjs +2 -0
- package/dist/IconLock-WfiVOWPI.js +16 -0
- package/dist/IconMail-4cFO6TUe.cjs +2 -0
- package/dist/IconMail-ejl1H7D9.js +16 -0
- package/dist/IconMenu-BV6py3Ml.cjs +2 -0
- package/dist/IconMenu-FlE3z6fX.js +16 -0
- package/dist/IconMoneyBag-CYq7aYjH.js +16 -0
- package/dist/IconMoneyBag-lMeRlCeA.cjs +2 -0
- package/dist/IconMoreHoriz-B0mCtW1_.js +16 -0
- package/dist/IconMoreHoriz-Fdrg4GhV.cjs +2 -0
- package/dist/IconNotifications-Bm_gSQGu.js +16 -0
- package/dist/IconNotifications-D6f_hP65.cjs +2 -0
- package/dist/IconOdometer-COcVC_eb.js +16 -0
- package/dist/IconOdometer-DFmoGuh1.cjs +2 -0
- package/dist/IconOpenInNew-Bh7f_m7Y.cjs +2 -0
- package/dist/IconOpenInNew-DFieFQIk.js +16 -0
- package/dist/IconPalette-ClefcQMe.cjs +2 -0
- package/dist/IconPalette-DoDIzZJO.js +16 -0
- package/dist/IconPaypal-CX6Z2rvX.js +16 -0
- package/dist/IconPaypal-R8-anQkg.cjs +2 -0
- package/dist/IconPerson-CK0AXlS_.js +16 -0
- package/dist/IconPerson-bq9WQXQP.cjs +2 -0
- package/dist/IconPersonSearch-Da5EdDrS.js +16 -0
- package/dist/IconPersonSearch-WGKPEFXj.cjs +2 -0
- package/dist/IconPhotoCamera-DZHI-Yb7.js +16 -0
- package/dist/IconPhotoCamera-DaJf6axF.cjs +2 -0
- package/dist/IconPinterest-B3UM6t9-.js +16 -0
- package/dist/IconPinterest-wqKY3pYh.cjs +2 -0
- package/dist/IconPlayArrow-BMvUb0Cs.cjs +2 -0
- package/dist/IconPlayArrow-CR7bXHC8.js +16 -0
- package/dist/IconPolicy-C6VqDhPq.cjs +2 -0
- package/dist/IconPolicy-CzN-v54O.js +16 -0
- package/dist/IconPower-C5MJihEZ.js +16 -0
- package/dist/IconPower-DNCBzhHN.cjs +2 -0
- package/dist/IconPowerOff-BziDMScz.js +16 -0
- package/dist/IconPowerOff-CFUkoB2U.cjs +2 -0
- package/dist/IconPriorityHigh-BXRK5f8v.cjs +2 -0
- package/dist/IconPriorityHigh-Bv-j3DaQ.js +16 -0
- package/dist/IconRemove-Bo4RUocr.js +16 -0
- package/dist/IconRemove-BoE63ZOl.cjs +2 -0
- package/dist/IconRequestQuote-BUNyScQ-.js +16 -0
- package/dist/IconRequestQuote-hNE0axaE.cjs +2 -0
- package/dist/IconResetWrench-BGo5LXI6.cjs +2 -0
- package/dist/IconResetWrench-DCcBmojh.js +16 -0
- package/dist/IconRoad-BGTu-WPJ.js +16 -0
- package/dist/IconRoad-CYQVphPa.cjs +2 -0
- package/dist/IconRoundedCorner-BsshtlDu.cjs +2 -0
- package/dist/IconRoundedCorner-DycjfuJj.js +16 -0
- package/dist/IconRuler-D6F7haVw.cjs +2 -0
- package/dist/IconRuler-Da8zNDvf.js +16 -0
- package/dist/IconRvClassA-CeynEY7N.cjs +2 -0
- package/dist/IconRvClassA-D2-lug19.js +20 -0
- package/dist/IconRvClassB-BGB0MmOD.cjs +2 -0
- package/dist/IconRvClassB-Coe3FpBI.js +20 -0
- package/dist/IconRvClassC-C8rS5sAC.cjs +2 -0
- package/dist/IconRvClassC-DWnLqMGg.js +20 -0
- package/dist/IconRvFifthWheel-C47iv80S.cjs +2 -0
- package/dist/IconRvFifthWheel-CB_mQ-tO.js +20 -0
- package/dist/IconRvFishHouse-B9CKlbHK.cjs +2 -0
- package/dist/IconRvFishHouse-Cs2fm3r1.js +20 -0
- package/dist/IconRvParkModel-D4S_iYTG.js +20 -0
- package/dist/IconRvParkModel-DZoz1TA3.cjs +2 -0
- package/dist/IconRvPopUpCamper-CW47dgll.js +20 -0
- package/dist/IconRvPopUpCamper-D7wbELIQ.cjs +2 -0
- package/dist/IconRvTravelTrailer-CC48bci7.js +20 -0
- package/dist/IconRvTravelTrailer-DGqI6COV.cjs +2 -0
- package/dist/IconRvTruckCamper-DFFQWh2o.cjs +2 -0
- package/dist/IconRvTruckCamper-EoEVfaJM.js +20 -0
- package/dist/IconSailing-BLsCQf5E.cjs +2 -0
- package/dist/IconSailing-CPcgnYwx.js +16 -0
- package/dist/IconSchool-3Dy70s11.js +16 -0
- package/dist/IconSchool-Ctkcm5E6.cjs +2 -0
- package/dist/IconSearch-C8WeOYws.js +16 -0
- package/dist/IconSearch-CqnvhCzt.cjs +2 -0
- package/dist/IconSeating-CIOne28A.cjs +2 -0
- package/dist/IconSeating-D7B47LU4.js +16 -0
- package/dist/IconSell-B95iGdOh.js +16 -0
- package/dist/IconSell-CJ88esDh.cjs +2 -0
- package/dist/IconSensors-CVBxtcwC.cjs +2 -0
- package/dist/IconSensors-Ckv6BEOK.js +16 -0
- package/dist/IconSettings-BWQS2Rd_.cjs +2 -0
- package/dist/IconSettings-CLrLZmQs.js +16 -0
- package/dist/IconShare-CH2w2udo.js +16 -0
- package/dist/IconShare-DgZxuRV0.cjs +2 -0
- package/dist/IconShieldCheck-BBHcsJhF.js +16 -0
- package/dist/IconShieldCheck-x6T3V-vS.cjs +2 -0
- package/dist/IconShoppingCart-BWH_PXom.cjs +2 -0
- package/dist/IconShoppingCart-_CKPKJ12.js +16 -0
- package/dist/IconSleeps-CTzXW2RS.js +16 -0
- package/dist/IconSleeps-CaPJzPZ7.cjs +2 -0
- package/dist/IconSms-C_jULP6X.js +16 -0
- package/dist/IconSms-NlCMrmBH.cjs +2 -0
- package/dist/IconSnowflake-CzkejYR_.cjs +2 -0
- package/dist/IconSnowflake-DYpTwl2q.js +16 -0
- package/dist/IconStar-BGEn0snz.cjs +2 -0
- package/dist/IconStar-CR0UA_S9.js +16 -0
- package/dist/IconStarFilled-CfYeQJic.cjs +2 -0
- package/dist/IconStarFilled-DEnQm6s8.js +16 -0
- package/dist/IconStarHalf-Bx8Qyb3h.cjs +2 -0
- package/dist/IconStarHalf-DZqwFVlC.js +16 -0
- package/dist/IconSummarize-BwU7xViX.js +16 -0
- package/dist/IconSummarize-lRdtNX68.cjs +2 -0
- package/dist/IconSwapHoriz-B-UnlgNS.cjs +2 -0
- package/dist/IconSwapHoriz-B7Nu99ui.js +16 -0
- package/dist/IconSwapVert-BBxeKMXP.cjs +2 -0
- package/dist/IconSwapVert-D83OnTLJ.js +16 -0
- package/dist/IconThreeDRotation-BPRR_9n0.cjs +2 -0
- package/dist/IconThreeDRotation-WuabFIaS.js +29 -0
- package/dist/IconThumbUp-Dw-Hvil4.cjs +2 -0
- package/dist/IconThumbUp-DwPs1Aog.js +16 -0
- package/dist/IconTrendingDown-CKqQl7o7.js +16 -0
- package/dist/IconTrendingDown-CUIEiRQk.cjs +2 -0
- package/dist/IconTrophy-DRcIPW-F.js +16 -0
- package/dist/IconTrophy-DwaYZ69z.cjs +2 -0
- package/dist/IconTune-CXVj1kqb.js +16 -0
- package/dist/IconTune-CdPQRgZE.cjs +2 -0
- package/dist/IconTwitter-B5AwI_-2.js +16 -0
- package/dist/IconTwitter-wxyn-htG.cjs +2 -0
- package/dist/IconUmbrella-BWmv4GFi.js +16 -0
- package/dist/IconUmbrella-CdgPNDdg.cjs +2 -0
- package/dist/IconVerified-BMRocsAd.js +20 -0
- package/dist/IconVerified-DKmEJ9ke.cjs +2 -0
- package/dist/IconVideocam-B8oUr7zP.cjs +2 -0
- package/dist/IconVideocam-D5eUdBxR.js +16 -0
- package/dist/IconViewInAr-CvR2gh_r.js +16 -0
- package/dist/IconViewInAr-DhbEKdon.cjs +2 -0
- package/dist/IconVisibility-BlzyaCVD.js +16 -0
- package/dist/IconVisibility-DaA3mBn4.cjs +2 -0
- package/dist/IconVolumeOff-42vl0HdH.cjs +2 -0
- package/dist/IconVolumeOff-DB757krU.js +16 -0
- package/dist/IconVolumeOn-B6HqcoA8.cjs +2 -0
- package/dist/IconVolumeOn-CYf77UaC.js +16 -0
- package/dist/IconWarehouse-DIRQdX8P.js +16 -0
- package/dist/IconWarehouse-DOw3YseH.cjs +2 -0
- package/dist/IconWarning-3AuFwkkg.cjs +2 -0
- package/dist/IconWarning-n_GTsWOM.js +16 -0
- package/dist/IconWater-DFV09TyV.js +16 -0
- package/dist/IconWater-dVEqMZb4.cjs +2 -0
- package/dist/IconWeight-Cq12caT_.js +16 -0
- package/dist/IconWeight-DfXiP6ob.cjs +2 -0
- package/dist/IconWidth-D1f8wank.cjs +2 -0
- package/dist/IconWidth-DtPjsKm8.js +16 -0
- package/dist/IconWorkspacePremium-DQIbVzlX.cjs +2 -0
- package/dist/IconWorkspacePremium-_Olggt_G.js +16 -0
- package/dist/IconWrench-C2MHGxho.js +16 -0
- package/dist/IconWrench-CZskpiB7.cjs +2 -0
- package/dist/IconYoutube-C8cHj1uF.js +16 -0
- package/dist/IconYoutube-ChEAKSkt.cjs +2 -0
- package/dist/css/reset.css +4 -0
- package/dist/css/utilities-base.css +7 -3
- package/dist/css/utilities-responsive.css +33 -13
- package/dist/css/utilities.css +14 -0
- package/dist/style.css +1 -1
- package/dist/tide-design-system.cjs +2 -2
- package/dist/tide-design-system.esm.d.ts +447 -1151
- package/dist/tide-design-system.esm.js +2579 -1838
- package/dist/utilities/forms.ts +22 -0
- package/dist/utilities/validation-deprecated.ts +252 -0
- package/dist/utilities/validation.ts +45 -123
- package/index.ts +20 -43
- package/package.json +3 -3
- package/src/assets/css/reset.css +4 -0
- package/src/assets/css/utilities-base.css +7 -3
- package/src/assets/css/utilities-responsive.css +33 -13
- package/src/assets/css/utilities.css +14 -0
- package/src/components/TideAlert.vue +11 -2
- package/src/components/TideCard.vue +1 -1
- package/src/components/TideCarousel.vue +131 -156
- package/src/components/TideForm.vue +24 -0
- package/src/components/TideImage.vue +1 -1
- package/src/components/TideInputCheckbox.vue +140 -63
- package/src/components/TideInputCheckboxDeprecated.vue +117 -0
- package/src/components/TideInputRadio.vue +23 -39
- package/src/components/TideInputRadioDeprecated.vue +118 -0
- package/src/components/TideInputSelect.vue +80 -47
- package/src/components/TideInputSelectDeprecated.vue +245 -0
- package/src/components/TideInputSupportingText.vue +35 -0
- package/src/components/TideInputText.vue +101 -84
- package/src/components/TideInputTextDeprecated.vue +324 -0
- package/src/components/TideInputTextarea.vue +71 -57
- package/src/components/TideInputTextareaDeprecated.vue +198 -0
- package/src/components/TideSwitch.vue +1 -1
- package/src/composables/useTideForm.ts +25 -0
- package/src/docs/assets/native-input-validation.png +0 -0
- package/src/docs/forms.md +484 -0
- package/src/docs/upgrading.md +44 -1
- package/src/stories/FoundationsBorder.stories.ts +25 -13
- package/src/stories/TideCarousel.stories.ts +9 -28
- package/src/types/{Field.ts → FieldDeprecated.ts} +39 -2
- package/src/types/Form.ts +0 -57
- package/src/types/FormDeprecated.ts +91 -0
- package/src/types/Styles.ts +5 -0
- package/src/types/TextInput.ts +12 -0
- package/src/types/Validation.ts +11 -4
- package/src/types/ValidationDeprecated.ts +41 -0
- package/src/utilities/forms.ts +22 -0
- package/src/utilities/validation-deprecated.ts +252 -0
- package/src/utilities/validation.ts +45 -123
- package/dist/IconAccountBalance-Ck1QODok.js +0 -16
- package/dist/IconAccountBalance-DUpdmQFe.cjs +0 -2
- package/dist/IconAcute-Dy5x_yJL.js +0 -16
- package/dist/IconAcute-bU4QJ8V7.cjs +0 -2
- package/dist/IconAdd-CoVrVzyk.js +0 -16
- package/dist/IconAdd-DcDrqXYF.cjs +0 -2
- package/dist/IconAiDescription-6Pv0Y_Yt.js +0 -20
- package/dist/IconAiDescription-CEkom1qc.cjs +0 -2
- package/dist/IconAlignSpaceEven-BF_GmIrK.js +0 -16
- package/dist/IconAlignSpaceEven-cqO2Dlov.cjs +0 -2
- package/dist/IconApplePay-C56V1wAj.cjs +0 -2
- package/dist/IconApplePay-oQ4zV5vN.js +0 -16
- package/dist/IconArrowBack-BP2TEpuq.js +0 -16
- package/dist/IconArrowBack-FzFtQ6Wh.cjs +0 -2
- package/dist/IconArrowCycle-CqKlSl5d.cjs +0 -2
- package/dist/IconArrowCycle-TQa-fbVD.js +0 -16
- package/dist/IconArrowForward-CkA2-WZe.cjs +0 -2
- package/dist/IconArrowForward-VWVINc35.js +0 -16
- package/dist/IconArrowRight-BJYT2e-d.js +0 -16
- package/dist/IconArrowRight-BxQWtz80.cjs +0 -2
- package/dist/IconArrowUp-BM37-Uxb.cjs +0 -2
- package/dist/IconArrowUp-JSl5zOyP.js +0 -16
- package/dist/IconAssignment-B13NJfNm.cjs +0 -2
- package/dist/IconAssignment-CSn4vDyt.js +0 -16
- package/dist/IconAttachMoney-CIYp4I2h.js +0 -16
- package/dist/IconAttachMoney-CUjPtX-U.cjs +0 -2
- package/dist/IconAtvAtv-DDtMKkiz.cjs +0 -2
- package/dist/IconAtvAtv-GFhgoQXA.js +0 -20
- package/dist/IconAtvDuneBuggy-CmVFELlj.cjs +0 -2
- package/dist/IconAtvDuneBuggy-Eou8hc_1.js +0 -20
- package/dist/IconAtvGoKart-Cj3k54oS.js +0 -20
- package/dist/IconAtvGoKart-D200V7pq.cjs +0 -2
- package/dist/IconAtvGolfCart-BGqnqb3G.cjs +0 -2
- package/dist/IconAtvGolfCart-CCQwt0_I.js +0 -20
- package/dist/IconAtvSandRail-C5P5lWt6.cjs +0 -2
- package/dist/IconAtvSandRail-HpaJVocj.js +0 -20
- package/dist/IconAtvSideBySide-BxqtCex8.js +0 -20
- package/dist/IconAtvSideBySide-dbhLoB1-.cjs +0 -2
- package/dist/IconAtvTrailer-CTlZZ8Wn.js +0 -20
- package/dist/IconAtvTrailer-tohF8f6D.cjs +0 -2
- package/dist/IconAutoRenew-C77Hq4T0.cjs +0 -2
- package/dist/IconAutoRenew-Dp5h0lzF.js +0 -16
- package/dist/IconAwardStar-CNBpPsCx.cjs +0 -2
- package/dist/IconAwardStar-CdAw4NY5.js +0 -16
- package/dist/IconBed-B1u5P61X.js +0 -16
- package/dist/IconBed-Du8uU-Fq.cjs +0 -2
- package/dist/IconBoatmartPwc-CcE6IBYS.cjs +0 -2
- package/dist/IconBoatmartPwc-D6wQ7mNA.js +0 -20
- package/dist/IconBoatmartTrailer-CfIANY7t.cjs +0 -2
- package/dist/IconBoatmartTrailer-hKiD_NXI.js +0 -20
- package/dist/IconBolt-CskRJDT1.js +0 -16
- package/dist/IconBolt-D3QlzyVv.cjs +0 -2
- package/dist/IconBookmark-Dc_xQALq.cjs +0 -2
- package/dist/IconBookmark-DsEGlmme.js +0 -16
- package/dist/IconBunkhouse-BLo-n_Mb.js +0 -16
- package/dist/IconBunkhouse-BUPqUZFs.cjs +0 -2
- package/dist/IconCalendarMonth-Cfs-ZKLJ.js +0 -16
- package/dist/IconCalendarMonth-ztc4w4Tw.cjs +0 -2
- package/dist/IconCall-BCjepEju.js +0 -16
- package/dist/IconCall-BKYdkS16.cjs +0 -2
- package/dist/IconCallQuality-BRfc8Y1K.cjs +0 -2
- package/dist/IconCallQuality-c7UaokVa.js +0 -16
- package/dist/IconCarRental-CkVWcpTh.cjs +0 -2
- package/dist/IconCarRental-D-qYjRe5.js +0 -16
- package/dist/IconCheck-D0w_fKOH.cjs +0 -2
- package/dist/IconCheck-DVE4Knnl.js +0 -16
- package/dist/IconChevronLeft-DStWQfoj.js +0 -16
- package/dist/IconChevronLeft-DhX3pOQ3.cjs +0 -2
- package/dist/IconChevronRight-3vFVvnNb.js +0 -16
- package/dist/IconChevronRight-BCv__YUh.cjs +0 -2
- package/dist/IconClear-D5yRmb93.cjs +0 -2
- package/dist/IconClear-F6afoxzY.js +0 -16
- package/dist/IconClose-Y-mY3AiS.cjs +0 -2
- package/dist/IconClose-eMGGtfEC.js +0 -16
- package/dist/IconContract-D6nGc_5y.cjs +0 -2
- package/dist/IconContract-f9bj5j-_.js +0 -16
- package/dist/IconCrash-B2l3Ie38.js +0 -16
- package/dist/IconCrash-BhwhKaB1.cjs +0 -2
- package/dist/IconDashboardCustomize-CyQTFASs.js +0 -16
- package/dist/IconDashboardCustomize-N7cHDhjT.cjs +0 -2
- package/dist/IconDelete-Couv2iBA.js +0 -16
- package/dist/IconDelete-LlUqnq04.cjs +0 -2
- package/dist/IconDiamond-sol6SUrB.js +0 -16
- package/dist/IconDiamond-t4Tf48_s.cjs +0 -2
- package/dist/IconDirectionsBoat-IZhI7oCN.cjs +0 -2
- package/dist/IconDirectionsBoat-S07T_dm_.js +0 -16
- package/dist/IconDomain-DSyC0Set.cjs +0 -2
- package/dist/IconDomain-ECxC_qj-.js +0 -16
- package/dist/IconDraft-BFxB85ro.js +0 -16
- package/dist/IconDraft-DL8E6d1f.cjs +0 -2
- package/dist/IconEdit-BoLO_nL5.js +0 -16
- package/dist/IconEdit-HzbIdd3z.cjs +0 -2
- package/dist/IconEngine-BBaqQJ6N.js +0 -20
- package/dist/IconEngine-DCKjsg0s.cjs +0 -2
- package/dist/IconEngineering-C60OP34_.js +0 -16
- package/dist/IconEngineering-WPQWx43h.cjs +0 -2
- package/dist/IconError-CAjFP9Jy.cjs +0 -2
- package/dist/IconError-Dd2H7cOG.js +0 -16
- package/dist/IconExpandContent-C1xzfkui.js +0 -16
- package/dist/IconExpandContent-UDkqNF-G.cjs +0 -2
- package/dist/IconExpandLess-Bf6Nypx3.js +0 -16
- package/dist/IconExpandLess-HiL8c2v-.cjs +0 -2
- package/dist/IconExpandMore-BffI3rnY.js +0 -16
- package/dist/IconExpandMore-tOo2Ynbv.cjs +0 -2
- package/dist/IconFacebook-7dq6Uz6i.cjs +0 -2
- package/dist/IconFacebook-Cki8sZRt.js +0 -16
- package/dist/IconFavorite-C6ZJCuY6.cjs +0 -2
- package/dist/IconFavorite-CyRSAVdw.js +0 -16
- package/dist/IconFavoriteFilled-DJIL-WYR.cjs +0 -2
- package/dist/IconFavoriteFilled-DeNJvMmm.js +0 -16
- package/dist/IconFlag-a6YLysex.cjs +0 -2
- package/dist/IconFlag-aeogw6hc.js +0 -16
- package/dist/IconFormatBold-CtYxihT6.js +0 -16
- package/dist/IconFormatBold-Yo5bdAwc.cjs +0 -2
- package/dist/IconFormatItalic-DSJCzNMj.cjs +0 -2
- package/dist/IconFormatItalic-EUVbp7Qb.js +0 -16
- package/dist/IconFormatListBulleted-CT9Ocq27.cjs +0 -2
- package/dist/IconFormatListBulleted-D-VQIabf.js +0 -16
- package/dist/IconForum-BrjEMf33.js +0 -16
- package/dist/IconForum-DQrwT4Pb.cjs +0 -2
- package/dist/IconGas-D_rJSqnT.js +0 -16
- package/dist/IconGas-DaKcTfiu.cjs +0 -2
- package/dist/IconGavel-D9XWUMJt.js +0 -16
- package/dist/IconGavel-ZdfEJ5bP.cjs +0 -2
- package/dist/IconGears-BlhP9t4o.cjs +0 -2
- package/dist/IconGears-Cavx6RDS.js +0 -16
- package/dist/IconGlobeLocationPin-CdwVS7ad.js +0 -16
- package/dist/IconGlobeLocationPin-Dz_hajhl.cjs +0 -2
- package/dist/IconGoogle-CW-JtHsA.js +0 -31
- package/dist/IconGoogle-DaDS3i9U.cjs +0 -2
- package/dist/IconGooglePay-ByaG5WLE.cjs +0 -2
- package/dist/IconGooglePay-lhVEuNTf.js +0 -16
- package/dist/IconGrid-4jZ_E7sN.cjs +0 -2
- package/dist/IconGrid-B-Z-t5S5.js +0 -16
- package/dist/IconHandshake-CCtEDb5s.js +0 -16
- package/dist/IconHandshake-Dm6HyjPZ.cjs +0 -2
- package/dist/IconHandyman-CeFGeaUD.js +0 -16
- package/dist/IconHandyman-DWBuUdrY.cjs +0 -2
- package/dist/IconHeight-CU7292SF.js +0 -16
- package/dist/IconHeight-DdZD0XDB.cjs +0 -2
- package/dist/IconHelp-CpHZAsX2.js +0 -16
- package/dist/IconHelp-Ks-iBsna.cjs +0 -2
- package/dist/IconInfo-Du8txE_y.js +0 -16
- package/dist/IconInfo-xZBbCBpg.cjs +0 -2
- package/dist/IconInformation-DnC1dUkM.cjs +0 -2
- package/dist/IconInformation-fpX8-lfe.js +0 -16
- package/dist/IconInsertText-B50Ml556.js +0 -16
- package/dist/IconInsertText-DRLSQCif.cjs +0 -2
- package/dist/IconInstagram-BAydhrdp.cjs +0 -2
- package/dist/IconInstagram-x9ut2Rvt.js +0 -16
- package/dist/IconIosShare-BAZa5TGR.js +0 -16
- package/dist/IconIosShare-ln3UX-op.cjs +0 -2
- package/dist/IconLayout-B7PSx75m.cjs +0 -2
- package/dist/IconLayout-Ctl5Nh6E.js +0 -16
- package/dist/IconLevellingJack-Cv_L_Xt-.cjs +0 -2
- package/dist/IconLevellingJack-OIJRh7On.js +0 -20
- package/dist/IconLinkedIn-DpuBRGWk.js +0 -16
- package/dist/IconLinkedIn-yIN3rQkH.cjs +0 -2
- package/dist/IconLocalShipping-CECgkii_.cjs +0 -2
- package/dist/IconLocalShipping-DFGIrDiT.js +0 -16
- package/dist/IconLock-CgnOY2yE.cjs +0 -2
- package/dist/IconLock-Kkxyx6xF.js +0 -16
- package/dist/IconMail-C52wU0bj.cjs +0 -2
- package/dist/IconMail-C_KZ99bY.js +0 -16
- package/dist/IconMenu-Bgr0cuPj.cjs +0 -2
- package/dist/IconMenu-DdVdEPQY.js +0 -16
- package/dist/IconMoneyBag-Bpwqj4h_.js +0 -16
- package/dist/IconMoneyBag-DIgjDYQp.cjs +0 -2
- package/dist/IconMoreHoriz-CMqeM-vy.js +0 -16
- package/dist/IconMoreHoriz-CopFNsjL.cjs +0 -2
- package/dist/IconNotifications-C-5jqVsp.js +0 -16
- package/dist/IconNotifications-CowlXF8e.cjs +0 -2
- package/dist/IconOdometer-8X8BZK7G.cjs +0 -2
- package/dist/IconOdometer-DOvJTqMC.js +0 -16
- package/dist/IconOpenInNew-BECM_cge.js +0 -16
- package/dist/IconOpenInNew-NIE7_GBf.cjs +0 -2
- package/dist/IconPalette-BnkMmdjx.cjs +0 -2
- package/dist/IconPalette-cNHa_Dl9.js +0 -16
- package/dist/IconPaypal-0MB9NiPi.js +0 -16
- package/dist/IconPaypal-Cm4sbOWR.cjs +0 -2
- package/dist/IconPerson-BlD3wl56.cjs +0 -2
- package/dist/IconPerson-C9FdsFRF.js +0 -16
- package/dist/IconPersonSearch-BAwODsOw.js +0 -16
- package/dist/IconPersonSearch-CvzxD13q.cjs +0 -2
- package/dist/IconPhotoCamera-Dhq3zkZ1.js +0 -16
- package/dist/IconPhotoCamera-LE83ELYg.cjs +0 -2
- package/dist/IconPinterest-B2ilympx.js +0 -16
- package/dist/IconPinterest-LMg3EmCf.cjs +0 -2
- package/dist/IconPlayArrow-DWY4o6mi.js +0 -16
- package/dist/IconPlayArrow-DaK8Rma5.cjs +0 -2
- package/dist/IconPolicy-CPfGoBvS.cjs +0 -2
- package/dist/IconPolicy-CTm0qx9m.js +0 -16
- package/dist/IconPower-BNYJxFS-.cjs +0 -2
- package/dist/IconPower-El-f1YpW.js +0 -16
- package/dist/IconPowerOff-BeF6a0I_.js +0 -16
- package/dist/IconPowerOff-BzVbrhfQ.cjs +0 -2
- package/dist/IconPriorityHigh-BOUPMj-c.js +0 -16
- package/dist/IconPriorityHigh-De-QwFs9.cjs +0 -2
- package/dist/IconRemove-DJ8Ats3O.js +0 -16
- package/dist/IconRemove-FRKIQpXX.cjs +0 -2
- package/dist/IconRequestQuote-63Pc7nFl.cjs +0 -2
- package/dist/IconRequestQuote-Dx73kEAB.js +0 -16
- package/dist/IconResetWrench-Cszjots_.cjs +0 -2
- package/dist/IconResetWrench-afPLSCCR.js +0 -16
- package/dist/IconRoad-CXNsqXt3.cjs +0 -2
- package/dist/IconRoad-D8LbDPzU.js +0 -16
- package/dist/IconRoundedCorner-CBFrVTjO.js +0 -16
- package/dist/IconRoundedCorner-s0eqhrw-.cjs +0 -2
- package/dist/IconRuler-BbrDrxik.js +0 -16
- package/dist/IconRuler-CS4llN2v.cjs +0 -2
- package/dist/IconRvClassA-IHRP4eXR.cjs +0 -2
- package/dist/IconRvClassA-pAChL2Qm.js +0 -20
- package/dist/IconRvClassB-BWEVHWYh.cjs +0 -2
- package/dist/IconRvClassB-BWaLlkdV.js +0 -20
- package/dist/IconRvClassC-CeDhPBYp.js +0 -20
- package/dist/IconRvClassC-CiUYMt7R.cjs +0 -2
- package/dist/IconRvFifthWheel-D98H64pq.js +0 -20
- package/dist/IconRvFifthWheel-tllq5hmh.cjs +0 -2
- package/dist/IconRvFishHouse-B9v3_c4m.js +0 -20
- package/dist/IconRvFishHouse-C5B0w81b.cjs +0 -2
- package/dist/IconRvParkModel-DJjJJFrS.js +0 -20
- package/dist/IconRvParkModel-DU9WYpvA.cjs +0 -2
- package/dist/IconRvPopUpCamper-C_L-wpFq.cjs +0 -2
- package/dist/IconRvPopUpCamper-DC5JLH5u.js +0 -20
- package/dist/IconRvTravelTrailer-CUzyIoJH.js +0 -20
- package/dist/IconRvTravelTrailer-DfoQmo80.cjs +0 -2
- package/dist/IconRvTruckCamper-CHLJEty2.js +0 -20
- package/dist/IconRvTruckCamper-CI5jKToo.cjs +0 -2
- package/dist/IconSailing-CP278bNv.cjs +0 -2
- package/dist/IconSailing-Ct5A7oe-.js +0 -16
- package/dist/IconSchool-DCJoiRB2.cjs +0 -2
- package/dist/IconSchool-DkD-by-f.js +0 -16
- package/dist/IconSearch-C3_cVelm.js +0 -16
- package/dist/IconSearch-CG3sTqyY.cjs +0 -2
- package/dist/IconSeating-B2-FR2aI.js +0 -16
- package/dist/IconSeating-DPz7Itl5.cjs +0 -2
- package/dist/IconSell-B01QAmJJ.js +0 -16
- package/dist/IconSell-tiqkK8HB.cjs +0 -2
- package/dist/IconSensors-B2yoU18I.cjs +0 -2
- package/dist/IconSensors-C9ikFDSl.js +0 -16
- package/dist/IconSettings-6iUt_j-N.cjs +0 -2
- package/dist/IconSettings-C7CzSyB_.js +0 -16
- package/dist/IconShare-CC3TgzM9.js +0 -16
- package/dist/IconShare-z3eso-fS.cjs +0 -2
- package/dist/IconShieldCheck-BKdiIhJ-.js +0 -16
- package/dist/IconShieldCheck-Dn0h4Aut.cjs +0 -2
- package/dist/IconShoppingCart-CQZWosiy.js +0 -16
- package/dist/IconShoppingCart-Dn7aCgYi.cjs +0 -2
- package/dist/IconSleeps-DDIWvIh8.js +0 -16
- package/dist/IconSleeps-DMXZj5P6.cjs +0 -2
- package/dist/IconSms-Bb3mhfHH.cjs +0 -2
- package/dist/IconSms-C22lp6yM.js +0 -16
- package/dist/IconSnowflake-DEJHKYBl.cjs +0 -2
- package/dist/IconSnowflake-aBZ4o4X2.js +0 -16
- package/dist/IconStar-2gDebu9X.js +0 -16
- package/dist/IconStar-COuoApVn.cjs +0 -2
- package/dist/IconStarFilled-BvH24VJ3.cjs +0 -2
- package/dist/IconStarFilled-CI8JFRKm.js +0 -16
- package/dist/IconStarHalf-9Mtxrxy2.js +0 -16
- package/dist/IconStarHalf-Cf3yNdfW.cjs +0 -2
- package/dist/IconSummarize-DdMTFwCZ.cjs +0 -2
- package/dist/IconSummarize-DjgKmXYf.js +0 -16
- package/dist/IconSwapHoriz-BI3V7cXl.js +0 -16
- package/dist/IconSwapHoriz-CHbH-rb1.cjs +0 -2
- package/dist/IconSwapVert-Bxn4iSnZ.js +0 -16
- package/dist/IconSwapVert-DT_2E9ir.cjs +0 -2
- package/dist/IconThreeDRotation-C5sf5vQe.js +0 -29
- package/dist/IconThreeDRotation-tzEyR04j.cjs +0 -2
- package/dist/IconThumbUp-Bewoaeaz.js +0 -16
- package/dist/IconThumbUp-Cv6VtGa7.cjs +0 -2
- package/dist/IconTrendingDown-ClqzR4Gm.js +0 -16
- package/dist/IconTrendingDown-YxmY8_d7.cjs +0 -2
- package/dist/IconTrophy-BvyInFpa.js +0 -16
- package/dist/IconTrophy-D68upC1Z.cjs +0 -2
- package/dist/IconTune-BeT6cJNb.cjs +0 -2
- package/dist/IconTune-DM9oNvly.js +0 -16
- package/dist/IconTwitter-CDK1k6Um.cjs +0 -2
- package/dist/IconTwitter-Di3mFm4J.js +0 -16
- package/dist/IconUmbrella-DdgZRF8v.cjs +0 -2
- package/dist/IconUmbrella-KarDrV_0.js +0 -16
- package/dist/IconVerified-BSLc-Tng.js +0 -20
- package/dist/IconVerified-CE6bl5Tr.cjs +0 -2
- package/dist/IconVideocam-Bk2i6zSL.js +0 -16
- package/dist/IconVideocam-DFAhIy60.cjs +0 -2
- package/dist/IconViewInAr-CyH3TuS9.js +0 -16
- package/dist/IconViewInAr-cJRKU-n8.cjs +0 -2
- package/dist/IconVisibility-C7r-OBqZ.js +0 -16
- package/dist/IconVisibility-CoZqOmFs.cjs +0 -2
- package/dist/IconVolumeOff-B1VwsF7D.cjs +0 -2
- package/dist/IconVolumeOff-DrXwzNlx.js +0 -16
- package/dist/IconVolumeOn-ByK04AMO.cjs +0 -2
- package/dist/IconVolumeOn-DMqPq3mL.js +0 -16
- package/dist/IconWarehouse-B-WGdkxc.cjs +0 -2
- package/dist/IconWarehouse-BLILe5TP.js +0 -16
- package/dist/IconWarning-BGb_hd4L.js +0 -16
- package/dist/IconWarning-BmJVooFC.cjs +0 -2
- package/dist/IconWater-BFIBeGBM.js +0 -16
- package/dist/IconWater-BcVoUC58.cjs +0 -2
- package/dist/IconWeight-BzjjPVJo.cjs +0 -2
- package/dist/IconWeight-IXMjxgaM.js +0 -16
- package/dist/IconWidth-CWT_XoXm.js +0 -16
- package/dist/IconWidth-DK12b7aq.cjs +0 -2
- package/dist/IconWorkspacePremium-B_CTpaCF.js +0 -16
- package/dist/IconWorkspacePremium-Dwj3FxW1.cjs +0 -2
- package/dist/IconWrench-CHHIpkKv.cjs +0 -2
- package/dist/IconWrench-CgaRK8xS.js +0 -16
- package/dist/IconYoutube-BBBj6jXd.js +0 -16
- package/dist/IconYoutube-DIFl6ykK.cjs +0 -2
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),Ce={HORIZONTAL:"horizontal",VERTICAL:"vertical"},t={withBreakpoint:(o,n)=>o.map(r=>`${n}-${r}`),ALIGN:{X:{CENTER:"tide-text-center",JUSTIFY:"tide-text-justify",LEFT:"tide-text-left",RIGHT:"tide-text-right"},Y:{INITIAL:"tide-align-initial",MIDDLE:"tide-align-middle"}},AXIS1:{AROUND:"tide-axis1-around",BETWEEN:"tide-axis1-between",CENTER:"tide-axis1-center",END:"tide-axis1-end",START:"tide-axis1-start"},AXIS2:{AROUND:"tide-axis2-around",CENTER:"tide-axis2-center",END:"tide-axis2-end",START:"tide-axis2-start",STRETCH:"tide-axis2-stretch"},BG:{GLOBAL:{PRIMARY:{ERROR:"tide-bg-primary-error",INFO:"tide-bg-primary-info",SUCCESS:"tide-bg-primary-success",WARNING:"tide-bg-primary-warning"},SURFACE:{ERROR:"tide-bg-surface-error",INFO:"tide-bg-surface-info",SUCCESS:"tide-bg-surface-success",WARNING:"tide-bg-surface-warning",BLUE:"tide-bg-surface-blue",GREEN:"tide-bg-surface-green",LIME:"tide-bg-surface-lime",ORANGE:"tide-bg-surface-orange",PURPLE:"tide-bg-surface-purple",RED:"tide-bg-surface-red",SALMON:"tide-bg-surface-salmon",TEAL:"tide-bg-surface-teal",YELLOW:"tide-bg-surface-yellow"}},INITIAL:"tide-bg-initial",BLUR:"tide-bg-blur",PRIMARY:"tide-bg-primary",SECONDARY:"tide-bg-secondary",SURFACE:{ACCENT:"tide-bg-surface-accent",BRAND:"tide-bg-surface-brand",DEFAULT:"tide-bg-surface",FLOATING:"tide-bg-surface-floating",GRADIENT:"tide-bg-surface-gradient",VARIANT:"tide-bg-surface-variant"},TRANSPARENT:{ONE_HUNDRED:"tide-transparent-100",TWO_HUNDRED:"tide-transparent-200",THREE_HUNDRED:"tide-transparent-300",FOUR_HUNDRED:"tide-transparent-400"}},BORDER:{COLOR:{GLOBAL:{ERROR:"tide-border-error",INFO:"tide-border-info",SUCCESS:"tide-border-success",WARNING:"tide-border-warning",BLUE:"tide-border-blue",GREEN:"tide-border-green",LIME:"tide-border-lime",ORANGE:"tide-border-orange",PURPLE:"tide-border-purple",RED:"tide-border-red",SALMON:"tide-border-salmon",TEAL:"tide-border-teal",YELLOW:"tide-border-yellow"},INITIAL:"tide-border-color-initial",DEFAULT:"tide-border",FLOATING:"tide-border-floating",HIGH:"tide-border-high",LOW:"tide-border-low",PRIMARY:"tide-border-primary"},RADIUS:{ZERO:"tide-radius-0",QUARTER:"tide-radius-1/4",HALF:"tide-radius-1/2",ONE:"tide-radius-1",FULL:"tide-radius-full"},STYLE:{DASHED:"tide-border-dashed",SOLID:"tide-border-solid"},BOTTOM:{ZERO:"tide-border-bottom-0",ONE:"tide-border-bottom-1",TWO:"tide-border-bottom-2"},FULL:{ZERO:"tide-border-0",ONE:"tide-border-1",TWO:"tide-border-2"},LEFT:{ZERO:"tide-border-left-0",ONE:"tide-border-left-1",TWO:"tide-border-left-2"},RIGHT:{ZERO:"tide-border-right-0",ONE:"tide-border-right-1",TWO:"tide-border-right-2"},TOP:{ZERO:"tide-border-top-0",ONE:"tide-border-top-1",TWO:"tide-border-top-2"}},BOX_SIZING:{BORDER_BOX:"tide-box-border",CONTENT_BOX:"tide-box-content"},BREAK_INSIDE:{AVOID_COLUMN:"tide-break-inside-avoid-column"},BREAK_WORD:{OFF:"tide-break-initial",ON:"tide-break-word"},COLUMNS:{INITIAL:"tide-columns-initial",ONE:"tide-columns-1",TWO:"tide-columns-2",THREE:"tide-columns-3",FOUR:"tide-columns-4"},CURSOR:{NOT_ALLOWED:"tide-cursor-not-allowed",POINTER:"tide-cursor-pointer",TEXT:"tide-cursor-text"},DISPLAY:{BLOCK:"tide-display-block",CONTENTS:"tide-display-contents",FLEX:"tide-display-flex",GRID:"tide-display-grid",INITIAL:"tide-display-initial",INLINE:"tide-display-inline",INLINE_BLOCK:"tide-display-inline-block",INLINE_FLEX:"tide-display-inline-flex",NONE:"tide-display-none"},ELLIPSIS:"tide-ellipsis",FLEX:{BASIS:{AUTO:"tide-flex-basis-auto",ZERO:"tide-flex-basis-0"},DIRECTION:{COLUMN:"tide-flex-column",COLUMN_REVERSE:"tide-flex-column-reverse",ROW:"tide-flex-row",ROW_REVERSE:"tide-flex-row-reverse"},GROW:{OFF:"tide-grow-none",ON:"tide-grow"},SHRINK:{OFF:"tide-shrink-none",ON:"tide-shrink"},WRAP:"tide-flex-wrap"},FONT:{COLOR:{GLOBAL:{ERROR:"tide-font-error",INFO:"tide-font-info",SUCCESS:"tide-font-success",WARNING:"tide-font-warning",BLUE:"tide-font-blue",GREEN:"tide-font-green",LIME:"tide-font-lime",ORANGE:"tide-font-orange",PURPLE:"tide-font-purple",RED:"tide-font-red",SALMON:"tide-font-salmon",TEAL:"tide-font-teal",YELLOW:"tide-font-yellow",PRIMARY:{BLUE:"tide-font-primary-blue",GREEN:"tide-font-primary-green",LIME:"tide-font-primary-lime",ORANGE:"tide-font-primary-orange",PURPLE:"tide-font-primary-purple",RED:"tide-font-primary-red",SALMON:"tide-font-primary-salmon",TEAL:"tide-font-primary-teal",YELLOW:"tide-font-primary-yellow"}},PRIMARY:"tide-font-on-primary",SECONDARY:"tide-font-on-secondary",SURFACE:{BRAND:"tide-font-on-surface-brand",DEFAULT:"tide-font-on-surface",INVERSE:"tide-font-on-surface-inverse",VARIANT:"tide-font-on-surface-variant",VARIANT_INVERSE:"tide-font-on-surface-variant-inverse"}},ROLE:{DISPLAY_1:"tide-typography-display-1",HEADLINE_1:"tide-typography-headline-1",HEADLINE_2:"tide-typography-headline-2",HEADLINE_3:"tide-typography-headline-3",TITLE_1:"tide-typography-title-1",TITLE_2:"tide-typography-title-2",BODY_1:"tide-typography-body-1",BODY_2:"tide-typography-body-2",LABEL_1:"tide-typography-label-1",LABEL_1_SEMIBOLD:"tide-typography-label-1-semibold",LABEL_2:"tide-typography-label-2",LABEL_2_SEMIBOLD:"tide-typography-label-2-semibold",LABEL_3:"tide-typography-label-3",LINK_1:"tide-typography-link-1",LINK_2:"tide-typography-link-2",LINK_3:"tide-typography-link-3",BUTTON_1:"tide-typography-button-1",BUTTON_2:"tide-typography-button-2"},SIZE:{TWELVE:"tide-font-12",FOURTEEN:"tide-font-14",SIXTEEN:"tide-font-16",TWENTY:"tide-font-20",TWENTY_FOUR:"tide-font-24",THIRTY_TWO:"tide-font-32"},WEIGHT:{FOUR_HUNDRED:"tide-font-400",FIVE_HUNDRED:"tide-font-500",SIX_HUNDRED:"tide-font-600",SEVEN_HUNDRED:"tide-font-700"}},GAP:{ZERO:"tide-gap-0",QUARTER:"tide-gap-1/4",HALF:"tide-gap-1/2",ONE:"tide-gap-1",TWO:"tide-gap-2",FOUR:"tide-gap-4"},GRID:{FLUID:"tide-fluid",ITEM:"tide-grid-item",LAYOUT:"tide-grid-layout",XL:"tide-grid-xl"},HEIGHT:{AUTO:"tide-height-auto",ZERO:"tide-height-0",FULL:"tide-height-full",MAX_FULL:"tide-max-height-full",MIN_ZERO:"tide-min-height-0"},ISOLATION:{ISOLATE:"tide-isolate"},LIST_BULLETS:{OFF:"tide-list-none"},MARGIN:{BOTTOM:{AUTO:"tide-margin-bottom-auto",ZERO:"tide-margin-bottom-0",QUARTER:"tide-margin-bottom-1/4",HALF:"tide-margin-bottom-1/2",ONE:"tide-margin-bottom-1",TWO:"tide-margin-bottom-2",FOUR:"tide-margin-bottom-4"},FULL:{ZERO:"tide-margin-0",QUARTER:"tide-margin-1/4",HALF:"tide-margin-1/2",ONE:"tide-margin-1",TWO:"tide-margin-2",FOUR:"tide-margin-4"},LEFT:{AUTO:"tide-margin-left-auto",ZERO:"tide-margin-left-0",QUARTER:"tide-margin-left-1/4",HALF:"tide-margin-left-1/2",ONE:"tide-margin-left-1",TWO:"tide-margin-left-2",FOUR:"tide-margin-left-4"},RIGHT:{AUTO:"tide-margin-right-auto",ZERO:"tide-margin-right-0",QUARTER:"tide-margin-right-1/4",HALF:"tide-margin-right-1/2",ONE:"tide-margin-right-1",TWO:"tide-margin-right-2",FOUR:"tide-margin-right-4"},TOP:{AUTO:"tide-margin-top-auto",ZERO:"tide-margin-top-0",QUARTER:"tide-margin-top-1/4",HALF:"tide-margin-top-1/2",ONE:"tide-margin-top-1",TWO:"tide-margin-top-2",FOUR:"tide-margin-top-4"},X:{AUTO:"tide-margin-x-auto",ZERO:"tide-margin-x-0",QUARTER:"tide-margin-x-1/4",HALF:"tide-margin-x-1/2",ONE:"tide-margin-x-1",TWO:"tide-margin-x-2",FOUR:"tide-margin-x-4"},Y:{ZERO:"tide-margin-y-0",QUARTER:"tide-margin-y-1/4",HALF:"tide-margin-y-1/2",ONE:"tide-margin-y-1",TWO:"tide-margin-y-2",FOUR:"tide-margin-y-4"}},OBJECT:{CENTER:"tide-object-center",CONTAIN:"tide-object-contain",COVER:"tide-object-cover",SCALE_DOWN:"tide-object-scale-down"},OPACITY:{OFF:"tide-opacity-none",ON:"tide-opacity"},OVERFLOW:{X:{AUTO:"tide-x-auto",HIDDEN:"tide-x-hidden",SCROLL:"tide-x-scroll"},XY:{AUTO:"tide-xy-auto",HIDDEN:"tide-xy-hidden"},Y:{AUTO:"tide-y-auto",HIDDEN:"tide-y-hidden"}},PADDING:{BOTTOM:{ZERO:"tide-padding-bottom-0",QUARTER:"tide-padding-bottom-1/4",HALF:"tide-padding-bottom-1/2",ONE:"tide-padding-bottom-1",TWO:"tide-padding-bottom-2",FOUR:"tide-padding-bottom-4"},FULL:{ZERO:"tide-padding-0",QUARTER:"tide-padding-1/4",HALF:"tide-padding-1/2",ONE:"tide-padding-1",TWO:"tide-padding-2",FOUR:"tide-padding-4"},LEFT:{ZERO:"tide-padding-left-0",QUARTER:"tide-padding-left-1/4",HALF:"tide-padding-left-1/2",ONE:"tide-padding-left-1",TWO:"tide-padding-left-2",FOUR:"tide-padding-left-4"},RIGHT:{ZERO:"tide-padding-right-0",QUARTER:"tide-padding-right-1/4",HALF:"tide-padding-right-1/2",ONE:"tide-padding-right-1",TWO:"tide-padding-right-2",FOUR:"tide-padding-right-4"},TOP:{ZERO:"tide-padding-top-0",QUARTER:"tide-padding-top-1/4",HALF:"tide-padding-top-1/2",ONE:"tide-padding-top-1",TWO:"tide-padding-top-2",FOUR:"tide-padding-top-4"},X:{ZERO:"tide-padding-x-0",QUARTER:"tide-padding-x-1/4",HALF:"tide-padding-x-1/2",ONE:"tide-padding-x-1",TWO:"tide-padding-x-2",FOUR:"tide-padding-x-4"},Y:{ZERO:"tide-padding-y-0",QUARTER:"tide-padding-y-1/4",HALF:"tide-padding-y-1/2",ONE:"tide-padding-y-1",TWO:"tide-padding-y-2",FOUR:"tide-padding-y-4"}},POINTER_EVENTS:{OFF:"tide-pointer-events-none",ON:"tide-pointer-events"},POSITION:{ABSOLUTE:"tide-position-absolute",FIXED:"tide-position-fixed",RELATIVE:"tide-position-relative",STATIC:"tide-position-static",STICKY:"tide-position-sticky"},POSITIONING:{BOTTOM:"tide-bottom-0",LEFT:"tide-left-0",RIGHT:"tide-right-0",TOP:"tide-top-0"},RATIO:{ONE_TO_ONE:"tide-ratio-1/1",SIXTEEN_TO_NINE:"tide-ratio-16/9",THREE_TO_TWO:"tide-ratio-3/2"},SCROLLBAR:{OFF:"tide-scrollbar-none"},SHADOW:{INITIAL:"tide-shadow-initial",BOTTOM:"tide-shadow-bottom",TOP:"tide-shadow-top",TEXT:"tide-shadow-text"},SNAP:{ON:"tide-scroll-snap"},SNAP_ALIGN:{START:"tide-scroll-snap-start"},STRIKETHROUGH:{OFF:"tide-strikethrough-none",ON:"tide-strikethrough"},TEXT_TRANSFORM:{LOWER:"tide-text-transform-lower",NONE:"tide-text-transform-none",UPPER:"tide-text-transform-upper"},UNDERLINE:{HOVER:{ON:"tide-underline-hover",OFF:"tide-underline-hover-none"},REST:{ON:"tide-underline",OFF:"tide-underline-none"}},VISIBILITY:{OFF:"tide-visible-none",ON:"tide-visible"},WHITESPACE_WRAP:{OFF:"tide-whitespace-nowrap"},WIDTH:{AUTO:"tide-width-auto",ZERO:"tide-width-0",FULL:"tide-width-full",MAX_FULL:"tide-max-width-full",MIN_ZERO:"tide-min-width-0"},Z_INDEX:{INITIAL:"tide-z-index-initial",ONE:"tide-z-index-1"}},Rt={class:e.normalizeClass(["tide-divider"])},pt=e.defineComponent({__name:"TideDivider",props:{orientation:{default:Ce.HORIZONTAL}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createElementBlock("div",Rt,[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).BORDER.COLOR.LOW,n.orientation===e.unref(Ce).HORIZONTAL?[e.unref(t).MARGIN.Y.HALF,e.unref(t).BORDER.BOTTOM.ONE,e.unref(t).WIDTH.FULL]:[e.unref(t).MARGIN.X.HALF,e.unref(t).BORDER.RIGHT.ONE,e.unref(t).HEIGHT.FULL]])},null,2)]))}}),S=(o,n)=>{const r=o.__vccOpts||o;for(const[s,i]of n)r[s]=i;return r},Ee=S(pt,[["__scopeId","data-v-c2dc7d09"]]),Ge=(o,n,r)=>{const s=o[n];return s?typeof s=="function"?s():Promise.resolve(s):new Promise((i,c)=>{(typeof queueMicrotask=="function"?queueMicrotask:setTimeout)(c.bind(null,new Error("Unknown variable dynamic import: "+n+(n.split("/").length!==r?". Note that variables only represent file names one level deep.":""))))})},je={AERO:"aero",ATV:"atv",BOATMART:"boatmart",CYCLE:"cycle",EQUIPMENT:"equipment",PWC:"pwc",RV:"rv",SNOW:"snow",TRUCK:"truck"},y={LARGE:"large",SMALL:"small"},te={LARGE:"large",SMALL:"small"},Re=o=>{let n=o&&typeof o=="number"?new Intl.NumberFormat().format(o):String(o||""),r=n;return o&&typeof o=="string"&&(r=r.replace(/\D/g,""),Number(r)?n=new Intl.NumberFormat().format(Number(r)):n="0"),n},At=o=>o&&typeof o=="string"?o.replace(/([a-z]{1})([A-Z]{1})/g,"$1 $2").replace(/[\s_-]/g," ").toLowerCase().split(" ").map(n=>n.slice(0,1).toUpperCase()+n.slice(1)).join(""):o,It=o=>{let n=String(o&&typeof o=="number"?o:o||""),r=n;switch(r=r.replace(/\D/g,""),r.length){case 7:n=`${r.slice(0,3)}-${r.slice(3)}`;break;case 10:n=`${r.slice(0,3)}-${r.slice(3,6)}-${r.slice(6)}`;break;case 11:n=`${r.slice(0,1)}-${r.slice(1,4)}-${r.slice(4,7)}-${r.slice(7)}`;break;default:n=r;break}return n},Tt=o=>`$${o?Re(o):String(o||"0")}`,F=e.defineComponent({__name:"TideIcon",props:{icon:{},size:{default:y.SMALL}},setup(o){const n=o,r=e.ref();return e.watch(()=>n.icon,async()=>{const s=n.icon,i=At(s),[c]=s.split("-"),l=je[c==null?void 0:c.toUpperCase()],a=e.defineAsyncComponent(()=>l?Ge(Object.assign({"../assets/svg/icons/realm/atv/IconAtvAtv.svg":()=>Promise.resolve().then(()=>require("./IconAtvAtv-DDtMKkiz.cjs")),"../assets/svg/icons/realm/atv/IconAtvDuneBuggy.svg":()=>Promise.resolve().then(()=>require("./IconAtvDuneBuggy-CmVFELlj.cjs")),"../assets/svg/icons/realm/atv/IconAtvGoKart.svg":()=>Promise.resolve().then(()=>require("./IconAtvGoKart-D200V7pq.cjs")),"../assets/svg/icons/realm/atv/IconAtvGolfCart.svg":()=>Promise.resolve().then(()=>require("./IconAtvGolfCart-BGqnqb3G.cjs")),"../assets/svg/icons/realm/atv/IconAtvSandRail.svg":()=>Promise.resolve().then(()=>require("./IconAtvSandRail-C5P5lWt6.cjs")),"../assets/svg/icons/realm/atv/IconAtvSideBySide.svg":()=>Promise.resolve().then(()=>require("./IconAtvSideBySide-dbhLoB1-.cjs")),"../assets/svg/icons/realm/atv/IconAtvTrailer.svg":()=>Promise.resolve().then(()=>require("./IconAtvTrailer-tohF8f6D.cjs")),"../assets/svg/icons/realm/boatmart/IconBoatmartPwc.svg":()=>Promise.resolve().then(()=>require("./IconBoatmartPwc-CcE6IBYS.cjs")),"../assets/svg/icons/realm/boatmart/IconBoatmartTrailer.svg":()=>Promise.resolve().then(()=>require("./IconBoatmartTrailer-CfIANY7t.cjs")),"../assets/svg/icons/realm/rv/IconRvClassA.svg":()=>Promise.resolve().then(()=>require("./IconRvClassA-IHRP4eXR.cjs")),"../assets/svg/icons/realm/rv/IconRvClassB.svg":()=>Promise.resolve().then(()=>require("./IconRvClassB-BWEVHWYh.cjs")),"../assets/svg/icons/realm/rv/IconRvClassC.svg":()=>Promise.resolve().then(()=>require("./IconRvClassC-CiUYMt7R.cjs")),"../assets/svg/icons/realm/rv/IconRvFifthWheel.svg":()=>Promise.resolve().then(()=>require("./IconRvFifthWheel-tllq5hmh.cjs")),"../assets/svg/icons/realm/rv/IconRvFishHouse.svg":()=>Promise.resolve().then(()=>require("./IconRvFishHouse-C5B0w81b.cjs")),"../assets/svg/icons/realm/rv/IconRvParkModel.svg":()=>Promise.resolve().then(()=>require("./IconRvParkModel-DU9WYpvA.cjs")),"../assets/svg/icons/realm/rv/IconRvPopUpCamper.svg":()=>Promise.resolve().then(()=>require("./IconRvPopUpCamper-C_L-wpFq.cjs")),"../assets/svg/icons/realm/rv/IconRvTravelTrailer.svg":()=>Promise.resolve().then(()=>require("./IconRvTravelTrailer-DfoQmo80.cjs")),"../assets/svg/icons/realm/rv/IconRvTruckCamper.svg":()=>Promise.resolve().then(()=>require("./IconRvTruckCamper-CI5jKToo.cjs"))}),`../assets/svg/icons/realm/${l}/Icon${i}.svg`,7):Ge(Object.assign({"../assets/svg/icons/IconAccountBalance.svg":()=>Promise.resolve().then(()=>require("./IconAccountBalance-DUpdmQFe.cjs")),"../assets/svg/icons/IconAcute.svg":()=>Promise.resolve().then(()=>require("./IconAcute-bU4QJ8V7.cjs")),"../assets/svg/icons/IconAdd.svg":()=>Promise.resolve().then(()=>require("./IconAdd-DcDrqXYF.cjs")),"../assets/svg/icons/IconAiDescription.svg":()=>Promise.resolve().then(()=>require("./IconAiDescription-CEkom1qc.cjs")),"../assets/svg/icons/IconAlignSpaceEven.svg":()=>Promise.resolve().then(()=>require("./IconAlignSpaceEven-cqO2Dlov.cjs")),"../assets/svg/icons/IconApplePay.svg":()=>Promise.resolve().then(()=>require("./IconApplePay-C56V1wAj.cjs")),"../assets/svg/icons/IconArrowBack.svg":()=>Promise.resolve().then(()=>require("./IconArrowBack-FzFtQ6Wh.cjs")),"../assets/svg/icons/IconArrowCycle.svg":()=>Promise.resolve().then(()=>require("./IconArrowCycle-CqKlSl5d.cjs")),"../assets/svg/icons/IconArrowForward.svg":()=>Promise.resolve().then(()=>require("./IconArrowForward-CkA2-WZe.cjs")),"../assets/svg/icons/IconArrowRight.svg":()=>Promise.resolve().then(()=>require("./IconArrowRight-BxQWtz80.cjs")),"../assets/svg/icons/IconArrowUp.svg":()=>Promise.resolve().then(()=>require("./IconArrowUp-BM37-Uxb.cjs")),"../assets/svg/icons/IconAssignment.svg":()=>Promise.resolve().then(()=>require("./IconAssignment-B13NJfNm.cjs")),"../assets/svg/icons/IconAttachMoney.svg":()=>Promise.resolve().then(()=>require("./IconAttachMoney-CUjPtX-U.cjs")),"../assets/svg/icons/IconAutoRenew.svg":()=>Promise.resolve().then(()=>require("./IconAutoRenew-C77Hq4T0.cjs")),"../assets/svg/icons/IconAwardStar.svg":()=>Promise.resolve().then(()=>require("./IconAwardStar-CNBpPsCx.cjs")),"../assets/svg/icons/IconBed.svg":()=>Promise.resolve().then(()=>require("./IconBed-Du8uU-Fq.cjs")),"../assets/svg/icons/IconBolt.svg":()=>Promise.resolve().then(()=>require("./IconBolt-D3QlzyVv.cjs")),"../assets/svg/icons/IconBookmark.svg":()=>Promise.resolve().then(()=>require("./IconBookmark-Dc_xQALq.cjs")),"../assets/svg/icons/IconBunkhouse.svg":()=>Promise.resolve().then(()=>require("./IconBunkhouse-BUPqUZFs.cjs")),"../assets/svg/icons/IconCalendarMonth.svg":()=>Promise.resolve().then(()=>require("./IconCalendarMonth-ztc4w4Tw.cjs")),"../assets/svg/icons/IconCall.svg":()=>Promise.resolve().then(()=>require("./IconCall-BKYdkS16.cjs")),"../assets/svg/icons/IconCallQuality.svg":()=>Promise.resolve().then(()=>require("./IconCallQuality-BRfc8Y1K.cjs")),"../assets/svg/icons/IconCarRental.svg":()=>Promise.resolve().then(()=>require("./IconCarRental-CkVWcpTh.cjs")),"../assets/svg/icons/IconCheck.svg":()=>Promise.resolve().then(()=>require("./IconCheck-D0w_fKOH.cjs")),"../assets/svg/icons/IconChevronLeft.svg":()=>Promise.resolve().then(()=>require("./IconChevronLeft-DhX3pOQ3.cjs")),"../assets/svg/icons/IconChevronRight.svg":()=>Promise.resolve().then(()=>require("./IconChevronRight-BCv__YUh.cjs")),"../assets/svg/icons/IconClear.svg":()=>Promise.resolve().then(()=>require("./IconClear-D5yRmb93.cjs")),"../assets/svg/icons/IconClose.svg":()=>Promise.resolve().then(()=>require("./IconClose-Y-mY3AiS.cjs")),"../assets/svg/icons/IconContract.svg":()=>Promise.resolve().then(()=>require("./IconContract-D6nGc_5y.cjs")),"../assets/svg/icons/IconCrash.svg":()=>Promise.resolve().then(()=>require("./IconCrash-BhwhKaB1.cjs")),"../assets/svg/icons/IconDashboardCustomize.svg":()=>Promise.resolve().then(()=>require("./IconDashboardCustomize-N7cHDhjT.cjs")),"../assets/svg/icons/IconDelete.svg":()=>Promise.resolve().then(()=>require("./IconDelete-LlUqnq04.cjs")),"../assets/svg/icons/IconDiamond.svg":()=>Promise.resolve().then(()=>require("./IconDiamond-t4Tf48_s.cjs")),"../assets/svg/icons/IconDirectionsBoat.svg":()=>Promise.resolve().then(()=>require("./IconDirectionsBoat-IZhI7oCN.cjs")),"../assets/svg/icons/IconDomain.svg":()=>Promise.resolve().then(()=>require("./IconDomain-DSyC0Set.cjs")),"../assets/svg/icons/IconDraft.svg":()=>Promise.resolve().then(()=>require("./IconDraft-DL8E6d1f.cjs")),"../assets/svg/icons/IconEdit.svg":()=>Promise.resolve().then(()=>require("./IconEdit-HzbIdd3z.cjs")),"../assets/svg/icons/IconEngine.svg":()=>Promise.resolve().then(()=>require("./IconEngine-DCKjsg0s.cjs")),"../assets/svg/icons/IconEngineering.svg":()=>Promise.resolve().then(()=>require("./IconEngineering-WPQWx43h.cjs")),"../assets/svg/icons/IconError.svg":()=>Promise.resolve().then(()=>require("./IconError-CAjFP9Jy.cjs")),"../assets/svg/icons/IconExpandContent.svg":()=>Promise.resolve().then(()=>require("./IconExpandContent-UDkqNF-G.cjs")),"../assets/svg/icons/IconExpandLess.svg":()=>Promise.resolve().then(()=>require("./IconExpandLess-HiL8c2v-.cjs")),"../assets/svg/icons/IconExpandMore.svg":()=>Promise.resolve().then(()=>require("./IconExpandMore-tOo2Ynbv.cjs")),"../assets/svg/icons/IconFacebook.svg":()=>Promise.resolve().then(()=>require("./IconFacebook-7dq6Uz6i.cjs")),"../assets/svg/icons/IconFavorite.svg":()=>Promise.resolve().then(()=>require("./IconFavorite-C6ZJCuY6.cjs")),"../assets/svg/icons/IconFavoriteFilled.svg":()=>Promise.resolve().then(()=>require("./IconFavoriteFilled-DJIL-WYR.cjs")),"../assets/svg/icons/IconFlag.svg":()=>Promise.resolve().then(()=>require("./IconFlag-a6YLysex.cjs")),"../assets/svg/icons/IconFormatBold.svg":()=>Promise.resolve().then(()=>require("./IconFormatBold-Yo5bdAwc.cjs")),"../assets/svg/icons/IconFormatItalic.svg":()=>Promise.resolve().then(()=>require("./IconFormatItalic-DSJCzNMj.cjs")),"../assets/svg/icons/IconFormatListBulleted.svg":()=>Promise.resolve().then(()=>require("./IconFormatListBulleted-CT9Ocq27.cjs")),"../assets/svg/icons/IconForum.svg":()=>Promise.resolve().then(()=>require("./IconForum-DQrwT4Pb.cjs")),"../assets/svg/icons/IconGas.svg":()=>Promise.resolve().then(()=>require("./IconGas-DaKcTfiu.cjs")),"../assets/svg/icons/IconGavel.svg":()=>Promise.resolve().then(()=>require("./IconGavel-ZdfEJ5bP.cjs")),"../assets/svg/icons/IconGears.svg":()=>Promise.resolve().then(()=>require("./IconGears-BlhP9t4o.cjs")),"../assets/svg/icons/IconGlobeLocationPin.svg":()=>Promise.resolve().then(()=>require("./IconGlobeLocationPin-Dz_hajhl.cjs")),"../assets/svg/icons/IconGoogle.svg":()=>Promise.resolve().then(()=>require("./IconGoogle-DaDS3i9U.cjs")),"../assets/svg/icons/IconGooglePay.svg":()=>Promise.resolve().then(()=>require("./IconGooglePay-ByaG5WLE.cjs")),"../assets/svg/icons/IconGrid.svg":()=>Promise.resolve().then(()=>require("./IconGrid-4jZ_E7sN.cjs")),"../assets/svg/icons/IconHandshake.svg":()=>Promise.resolve().then(()=>require("./IconHandshake-Dm6HyjPZ.cjs")),"../assets/svg/icons/IconHandyman.svg":()=>Promise.resolve().then(()=>require("./IconHandyman-DWBuUdrY.cjs")),"../assets/svg/icons/IconHeight.svg":()=>Promise.resolve().then(()=>require("./IconHeight-DdZD0XDB.cjs")),"../assets/svg/icons/IconHelp.svg":()=>Promise.resolve().then(()=>require("./IconHelp-Ks-iBsna.cjs")),"../assets/svg/icons/IconInfo.svg":()=>Promise.resolve().then(()=>require("./IconInfo-xZBbCBpg.cjs")),"../assets/svg/icons/IconInformation.svg":()=>Promise.resolve().then(()=>require("./IconInformation-DnC1dUkM.cjs")),"../assets/svg/icons/IconInsertText.svg":()=>Promise.resolve().then(()=>require("./IconInsertText-DRLSQCif.cjs")),"../assets/svg/icons/IconInstagram.svg":()=>Promise.resolve().then(()=>require("./IconInstagram-BAydhrdp.cjs")),"../assets/svg/icons/IconIosShare.svg":()=>Promise.resolve().then(()=>require("./IconIosShare-ln3UX-op.cjs")),"../assets/svg/icons/IconLayout.svg":()=>Promise.resolve().then(()=>require("./IconLayout-B7PSx75m.cjs")),"../assets/svg/icons/IconLevellingJack.svg":()=>Promise.resolve().then(()=>require("./IconLevellingJack-Cv_L_Xt-.cjs")),"../assets/svg/icons/IconLinkedIn.svg":()=>Promise.resolve().then(()=>require("./IconLinkedIn-yIN3rQkH.cjs")),"../assets/svg/icons/IconLocalShipping.svg":()=>Promise.resolve().then(()=>require("./IconLocalShipping-CECgkii_.cjs")),"../assets/svg/icons/IconLock.svg":()=>Promise.resolve().then(()=>require("./IconLock-CgnOY2yE.cjs")),"../assets/svg/icons/IconMail.svg":()=>Promise.resolve().then(()=>require("./IconMail-C52wU0bj.cjs")),"../assets/svg/icons/IconMenu.svg":()=>Promise.resolve().then(()=>require("./IconMenu-Bgr0cuPj.cjs")),"../assets/svg/icons/IconMoneyBag.svg":()=>Promise.resolve().then(()=>require("./IconMoneyBag-DIgjDYQp.cjs")),"../assets/svg/icons/IconMoreHoriz.svg":()=>Promise.resolve().then(()=>require("./IconMoreHoriz-CopFNsjL.cjs")),"../assets/svg/icons/IconNotifications.svg":()=>Promise.resolve().then(()=>require("./IconNotifications-CowlXF8e.cjs")),"../assets/svg/icons/IconOdometer.svg":()=>Promise.resolve().then(()=>require("./IconOdometer-8X8BZK7G.cjs")),"../assets/svg/icons/IconOpenInNew.svg":()=>Promise.resolve().then(()=>require("./IconOpenInNew-NIE7_GBf.cjs")),"../assets/svg/icons/IconPalette.svg":()=>Promise.resolve().then(()=>require("./IconPalette-BnkMmdjx.cjs")),"../assets/svg/icons/IconPaypal.svg":()=>Promise.resolve().then(()=>require("./IconPaypal-Cm4sbOWR.cjs")),"../assets/svg/icons/IconPerson.svg":()=>Promise.resolve().then(()=>require("./IconPerson-BlD3wl56.cjs")),"../assets/svg/icons/IconPersonSearch.svg":()=>Promise.resolve().then(()=>require("./IconPersonSearch-CvzxD13q.cjs")),"../assets/svg/icons/IconPhotoCamera.svg":()=>Promise.resolve().then(()=>require("./IconPhotoCamera-LE83ELYg.cjs")),"../assets/svg/icons/IconPinterest.svg":()=>Promise.resolve().then(()=>require("./IconPinterest-LMg3EmCf.cjs")),"../assets/svg/icons/IconPlayArrow.svg":()=>Promise.resolve().then(()=>require("./IconPlayArrow-DaK8Rma5.cjs")),"../assets/svg/icons/IconPolicy.svg":()=>Promise.resolve().then(()=>require("./IconPolicy-CPfGoBvS.cjs")),"../assets/svg/icons/IconPower.svg":()=>Promise.resolve().then(()=>require("./IconPower-BNYJxFS-.cjs")),"../assets/svg/icons/IconPowerOff.svg":()=>Promise.resolve().then(()=>require("./IconPowerOff-BzVbrhfQ.cjs")),"../assets/svg/icons/IconPriorityHigh.svg":()=>Promise.resolve().then(()=>require("./IconPriorityHigh-De-QwFs9.cjs")),"../assets/svg/icons/IconRemove.svg":()=>Promise.resolve().then(()=>require("./IconRemove-FRKIQpXX.cjs")),"../assets/svg/icons/IconRequestQuote.svg":()=>Promise.resolve().then(()=>require("./IconRequestQuote-63Pc7nFl.cjs")),"../assets/svg/icons/IconResetWrench.svg":()=>Promise.resolve().then(()=>require("./IconResetWrench-Cszjots_.cjs")),"../assets/svg/icons/IconRoad.svg":()=>Promise.resolve().then(()=>require("./IconRoad-CXNsqXt3.cjs")),"../assets/svg/icons/IconRoundedCorner.svg":()=>Promise.resolve().then(()=>require("./IconRoundedCorner-s0eqhrw-.cjs")),"../assets/svg/icons/IconRuler.svg":()=>Promise.resolve().then(()=>require("./IconRuler-CS4llN2v.cjs")),"../assets/svg/icons/IconSailing.svg":()=>Promise.resolve().then(()=>require("./IconSailing-CP278bNv.cjs")),"../assets/svg/icons/IconSchool.svg":()=>Promise.resolve().then(()=>require("./IconSchool-DCJoiRB2.cjs")),"../assets/svg/icons/IconSearch.svg":()=>Promise.resolve().then(()=>require("./IconSearch-CG3sTqyY.cjs")),"../assets/svg/icons/IconSeating.svg":()=>Promise.resolve().then(()=>require("./IconSeating-DPz7Itl5.cjs")),"../assets/svg/icons/IconSell.svg":()=>Promise.resolve().then(()=>require("./IconSell-tiqkK8HB.cjs")),"../assets/svg/icons/IconSensors.svg":()=>Promise.resolve().then(()=>require("./IconSensors-B2yoU18I.cjs")),"../assets/svg/icons/IconSettings.svg":()=>Promise.resolve().then(()=>require("./IconSettings-6iUt_j-N.cjs")),"../assets/svg/icons/IconShare.svg":()=>Promise.resolve().then(()=>require("./IconShare-z3eso-fS.cjs")),"../assets/svg/icons/IconShieldCheck.svg":()=>Promise.resolve().then(()=>require("./IconShieldCheck-Dn0h4Aut.cjs")),"../assets/svg/icons/IconShoppingCart.svg":()=>Promise.resolve().then(()=>require("./IconShoppingCart-Dn7aCgYi.cjs")),"../assets/svg/icons/IconSleeps.svg":()=>Promise.resolve().then(()=>require("./IconSleeps-DMXZj5P6.cjs")),"../assets/svg/icons/IconSms.svg":()=>Promise.resolve().then(()=>require("./IconSms-Bb3mhfHH.cjs")),"../assets/svg/icons/IconSnowflake.svg":()=>Promise.resolve().then(()=>require("./IconSnowflake-DEJHKYBl.cjs")),"../assets/svg/icons/IconStar.svg":()=>Promise.resolve().then(()=>require("./IconStar-COuoApVn.cjs")),"../assets/svg/icons/IconStarFilled.svg":()=>Promise.resolve().then(()=>require("./IconStarFilled-BvH24VJ3.cjs")),"../assets/svg/icons/IconStarHalf.svg":()=>Promise.resolve().then(()=>require("./IconStarHalf-Cf3yNdfW.cjs")),"../assets/svg/icons/IconSummarize.svg":()=>Promise.resolve().then(()=>require("./IconSummarize-DdMTFwCZ.cjs")),"../assets/svg/icons/IconSwapHoriz.svg":()=>Promise.resolve().then(()=>require("./IconSwapHoriz-CHbH-rb1.cjs")),"../assets/svg/icons/IconSwapVert.svg":()=>Promise.resolve().then(()=>require("./IconSwapVert-DT_2E9ir.cjs")),"../assets/svg/icons/IconThreeDRotation.svg":()=>Promise.resolve().then(()=>require("./IconThreeDRotation-tzEyR04j.cjs")),"../assets/svg/icons/IconThumbUp.svg":()=>Promise.resolve().then(()=>require("./IconThumbUp-Cv6VtGa7.cjs")),"../assets/svg/icons/IconTrendingDown.svg":()=>Promise.resolve().then(()=>require("./IconTrendingDown-YxmY8_d7.cjs")),"../assets/svg/icons/IconTrophy.svg":()=>Promise.resolve().then(()=>require("./IconTrophy-D68upC1Z.cjs")),"../assets/svg/icons/IconTune.svg":()=>Promise.resolve().then(()=>require("./IconTune-BeT6cJNb.cjs")),"../assets/svg/icons/IconTwitter.svg":()=>Promise.resolve().then(()=>require("./IconTwitter-CDK1k6Um.cjs")),"../assets/svg/icons/IconUmbrella.svg":()=>Promise.resolve().then(()=>require("./IconUmbrella-DdgZRF8v.cjs")),"../assets/svg/icons/IconVerified.svg":()=>Promise.resolve().then(()=>require("./IconVerified-CE6bl5Tr.cjs")),"../assets/svg/icons/IconVideocam.svg":()=>Promise.resolve().then(()=>require("./IconVideocam-DFAhIy60.cjs")),"../assets/svg/icons/IconViewInAr.svg":()=>Promise.resolve().then(()=>require("./IconViewInAr-cJRKU-n8.cjs")),"../assets/svg/icons/IconVisibility.svg":()=>Promise.resolve().then(()=>require("./IconVisibility-CoZqOmFs.cjs")),"../assets/svg/icons/IconVolumeOff.svg":()=>Promise.resolve().then(()=>require("./IconVolumeOff-B1VwsF7D.cjs")),"../assets/svg/icons/IconVolumeOn.svg":()=>Promise.resolve().then(()=>require("./IconVolumeOn-ByK04AMO.cjs")),"../assets/svg/icons/IconWarehouse.svg":()=>Promise.resolve().then(()=>require("./IconWarehouse-B-WGdkxc.cjs")),"../assets/svg/icons/IconWarning.svg":()=>Promise.resolve().then(()=>require("./IconWarning-BmJVooFC.cjs")),"../assets/svg/icons/IconWater.svg":()=>Promise.resolve().then(()=>require("./IconWater-BcVoUC58.cjs")),"../assets/svg/icons/IconWeight.svg":()=>Promise.resolve().then(()=>require("./IconWeight-BzjjPVJo.cjs")),"../assets/svg/icons/IconWidth.svg":()=>Promise.resolve().then(()=>require("./IconWidth-DK12b7aq.cjs")),"../assets/svg/icons/IconWorkspacePremium.svg":()=>Promise.resolve().then(()=>require("./IconWorkspacePremium-Dwj3FxW1.cjs")),"../assets/svg/icons/IconWrench.svg":()=>Promise.resolve().then(()=>require("./IconWrench-CHHIpkKv.cjs")),"../assets/svg/icons/IconYoutube.svg":()=>Promise.resolve().then(()=>require("./IconYoutube-DIFl6ykK.cjs"))}),`../assets/svg/icons/Icon${i}.svg`,5));r.value=e.markRaw(a)},{immediate:!0}),(s,i)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-icon",n.size])},[r.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(r.value),{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.BLOCK]),"data-icon":s.icon,fill:"currentColor"},null,8,["class","data-icon"])):e.createCommentVNode("",!0)],2))}}),h={ACCOUNT_BALANCE:"account-balance",ACUTE:"acute",ADD:"add",AI_DESCRIPTION:"ai-description",ALIGN_SPACE_EVEN:"align-space-even",APPLE_PAY:"apple-pay",ARROW_BACK:"arrow-back",ARROW_CYCLE:"arrow-cycle",ARROW_FORWARD:"arrow-forward",ARROW_RIGHT:"arrow-right",ASSIGNMENT:"assignment",ATTACH_MONEY:"attach-money",AUTO_RENEW:"auto-renew",AWARD_STAR:"award-star",BED:"bed",BOLT:"bolt",BOOKMARK:"bookmark",BUNKHOUSE:"bunkhouse",CALENDAR_MONTH:"calendar-month",CALL:"call",CALL_QUALITY:"call-quality",CAR_RENTAL:"car-rental",CHECK:"check",CHEVRON_LEFT:"chevron-left",CHEVRON_RIGHT:"chevron-right",CLEAR:"clear",CLOSE:"close",CONTRACT:"contract",CRASH:"crash",DASHBOARD_CUSTOMIZE:"dashboard-customize",DELETE:"delete",DIAMOND:"diamond",DIRECTIONS_BOAT:"directions-boat",DOMAIN:"domain",DRAFT:"draft",EDIT:"edit",ENGINE:"engine",ENGINEERING:"engineering",ERROR:"error",EXPAND_CONTENT:"expand-content",EXPAND_LESS:"expand-less",EXPAND_MORE:"expand-more",FACEBOOK:"facebook",FAVORITE:"favorite",FAVORITE_FILLED:"favorite-filled",FLAG:"flag",FORMAT_BOLD:"format-bold",FORMAT_ITALIC:"format-italic",FORMAT_LIST_BULLETED:"format-list-bulleted",FORUM:"forum",GAS:"gas",GAVEL:"gavel",GEARS:"gears",GLOBE_LOCATION_PIN:"globe-location-pin",GOOGLE:"google",GOOGLE_PAY:"google-pay",GRID:"grid",HANDSHAKE:"handshake",HANDYMAN:"handyman",HEIGHT:"height",HELP:"help",INFO:"info",INFORMATION:"information",INSERT_TEXT:"insert-text",INSTAGRAM:"instagram",IOS_SHARE:"ios-share",LAYOUT:"layout",LEVELLING_JACK:"levelling-jack",LINKED_IN:"linked in",LOCAL_SHIPPING:"local-shipping",LOCK:"lock",MAIL:"mail",MENU:"menu",MONEY_BAG:"money-bag",MORE_HORIZ:"more-horiz",NOTIFICATIONS:"notifications",ODOMETER:"odometer",OPEN_IN_NEW:"open-in-new",PALETTE:"palette",PAYPAL:"paypal",PERSON:"person",PERSON_SEARCH:"person-search",PHOTO_CAMERA:"photo-camera",PINTEREST:"pinterest",PLAY_ARROW:"play-arrow",POLICY:"policy",POWER:"power",POWER_OFF:"power-off",PRIORITY_HIGH:"priority-high",REMOVE:"remove",REQUEST_QUOTE:"request-quote",RESET_WRENCH:"reset-wrench",ROAD:"road",ROUNDED_CORNER:"rounded-corner",RULER:"ruler",SAILING:"sailing",SCHOOL:"school",SEARCH:"search",SEATING:"seating",SELL:"sell",SENSORS:"sensors",SETTINGS:"settings",SHARE:"share",SHIELD_CHECK:"shield-check",SHOPPING_CART:"shopping-cart",SLEEPS:"sleeps",SMS:"sms",SNOWFLAKE:"snowflake",STAR:"star",SUMMARIZE:"summarize",SWAP_HORIZ:"swap-horiz",SWAP_VERT:"swap-vert",THREE_D_ROTATION:"three-d-rotation",THUMB_UP:"thumb-up",TRENDING_DOWN:"trending-down",TROPHY:"trophy",TUNE:"tune",TWITTER:"twitter",UMBRELLA:"umbrella",VERIFIED:"verified",VIDEOCAM:"videocam",VIEW_IN_AR:"view-in-ar",VISIBILITY:"visibility",VOLUME_OFF:"volume-off",VOLUME_ON:"volume-on",WAREHOUSE:"warehouse",WARNING:"warning",WATER:"water",WEIGHT:"weight",WIDTH:"width",WORKSPACE_PREMIUM:"workspace-premium",WRENCH:"wrench",YOUTUBE:"youtube"},gt={ATV:{ATV:"atv-atv",DUNE_BUGGY:"atv-dune-buggy",GOLF_CART:"atv-golf-cart",GO_KART:"atv-go-kart",SAND_RAIL:"atv-sand-rail",SIDE_BY_SIDE:"atv-side-by-side",TRAILER:"atv-trailer"},BOATMART:{PWC:"boatmart-pwc",TRAILER:"boatmart-trailer"},RV:{CLASS_A:"rv-class-a",CLASS_B:"rv-class-b",CLASS_C:"rv-class-c",FIFTH_WHEEL:"rv-fifth-wheel",FISH_HOUSE:"rv-fish-house",PARK_MODEL:"rv-park-model",POP_UP_CAMPER:"rv-pop-up-camper",TRAVEL_TRAILER:"rv-travel-trailer",TRUCK_CAMPER:"rv-truck-camper"}},Nt={class:"tide-accordion-item"},ht=e.defineComponent({__name:"TideAccordionItem",props:{hasBottomDivider:{type:Boolean,default:!1},hasTopDivider:{type:Boolean,default:!1},isExpanded:{type:Boolean,default:!1},isOptional:{type:Boolean,default:!1},label:{default:""}},emits:["toggle"],setup(o,{emit:n}){const r=o,s=()=>{n("toggle")};return(i,c)=>(e.openBlock(),e.createElementBlock("div",Nt,[r.hasTopDivider?(e.openBlock(),e.createBlock(Ee,{key:0})):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["tide-accordion-head",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.BETWEEN,e.unref(t).PADDING.Y.HALF,e.unref(t).CURSOR.POINTER]),onClick:s},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).FONT.ROLE.LABEL_1_SEMIBOLD])},[e.createElementVNode("span",null,e.toDisplayString(r.label),1),r.isOptional?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SURFACE.VARIANT])}," (optional) ",2)):e.createCommentVNode("",!0)],2),e.createVNode(F,{icon:i.isExpanded?e.unref(h).EXPAND_LESS:e.unref(h).EXPAND_MORE,size:e.unref(y).LARGE},null,8,["icon","size"])],2),e.createElementVNode("div",{class:e.normalizeClass(["tide-accordion-body",r.isExpanded?"expanded":"collapsed",e.unref(t).DISPLAY.GRID])},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).OVERFLOW.Y.HIDDEN,e.unref(t).MARGIN.Y.ONE,e.unref(t).FONT.ROLE.BODY_1,e.unref(t).FONT.COLOR.SURFACE.DEFAULT])},[e.renderSlot(i.$slots,"default",{},void 0,!0)],2)],2),r.hasBottomDivider?(e.openBlock(),e.createBlock(Ee,{key:1})):e.createCommentVNode("",!0)]))}}),Ct=S(ht,[["__scopeId","data-v-d5fdff3b"]]),D={BUTTON:"button",LINK:"a"},q={BUTTON:"button",DIV:"div",LINK:"a"},_={PRIMARY:"primary",SECONDARY:"secondary",TERTIARY:"tertiary",QUATERNARY:"quaternary",FLOATING:"floating"},V={BLANK:"_blank",SELF:void 0},k=e.defineComponent({__name:"TideButtonIcon",props:{disabled:{type:Boolean,default:!1},element:{default:D.BUTTON},href:{default:void 0},icon:{default:void 0},isNewTab:{type:Boolean,default:!1},priority:{default:_.PRIMARY}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.element===e.unref(D).LINK?"a":"button"),{"aria-label":n.icon,class:e.normalizeClass([n.element===e.unref(D).LINK?"tide-link-as-button-icon":"tide-button-icon",n.priority&&`tide-button-${n.priority}`,[e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).PADDING.FULL.HALF],n.element===e.unref(D).LINK?[e.unref(t).UNDERLINE.REST.OFF]:""]),disabled:n.element===e.unref(D).BUTTON&&n.disabled,href:n.element===e.unref(D).LINK&&n.href?n.href:void 0,target:n.element===e.unref(D).LINK&&n.isNewTab?e.unref(V).BLANK:e.unref(V).SELF},{default:e.withCtx(()=>[n.icon?(e.openBlock(),e.createBlock(F,{key:0,icon:n.icon,size:e.unref(y).LARGE},null,8,["icon","size"])):e.createCommentVNode("",!0)]),_:1},8,["aria-label","class","disabled","href","target"]))}}),x={ERROR:"error",INFO:"info",SUCCESS:"success",WARNING:"warning"},St=e.defineComponent({__name:"TideAlert",props:{heading:{default:void 0},isDismissible:{type:Boolean,default:!0},isToast:{type:Boolean,default:!1},type:{default:x.INFO}},emits:["close"],setup(o,{emit:n}){const r=o;return(s,i)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([r.type,"tide-alert",e.unref(t).DISPLAY.GRID,e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).PADDING.FULL.ONE,!r.isToast&&r.type===e.unref(x).ERROR?[e.unref(t).BG.GLOBAL.SURFACE.ERROR,e.unref(t).BORDER.COLOR.GLOBAL.ERROR]:"",!r.isToast&&r.type===e.unref(x).INFO?[e.unref(t).BG.GLOBAL.SURFACE.INFO,e.unref(t).BORDER.COLOR.GLOBAL.INFO]:"",!r.isToast&&r.type===e.unref(x).SUCCESS?[e.unref(t).BG.GLOBAL.SURFACE.SUCCESS,e.unref(t).BORDER.COLOR.GLOBAL.SUCCESS]:"",!r.isToast&&r.type===e.unref(x).WARNING?[e.unref(t).BG.GLOBAL.SURFACE.WARNING,e.unref(t).BORDER.COLOR.GLOBAL.WARNING]:"",r.isToast?[e.unref(t).BG.SECONDARY,e.unref(t).FONT.COLOR.SECONDARY,e.unref(t).SHADOW.BOTTOM]:e.unref(t).BORDER.LEFT.TWO])},[r.isToast?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["tide-alert-icon",e.unref(t).PADDING.FULL.QUARTER,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).FONT.COLOR.SURFACE.INVERSE,r.type===e.unref(x).ERROR&&e.unref(t).BG.GLOBAL.PRIMARY.ERROR,r.type===e.unref(x).INFO&&e.unref(t).BG.GLOBAL.PRIMARY.INFO,r.type===e.unref(x).SUCCESS&&e.unref(t).BG.GLOBAL.PRIMARY.SUCCESS,r.type===e.unref(x).WARNING&&e.unref(t).BG.GLOBAL.PRIMARY.WARNING])},[e.createVNode(F,{icon:e.unref(h).INFORMATION,size:e.unref(y).SMALL},null,8,["icon","size"])],2)),e.createElementVNode("div",{class:e.normalizeClass(["tide-alert-heading",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).FONT.ROLE.LABEL_1_SEMIBOLD])},e.toDisplayString(r.heading),3),s.isDismissible?(e.openBlock(),e.createBlock(k,{key:1,class:e.normalizeClass(["tide-alert-close",e.unref(t).AXIS2.CENTER,e.unref(t).FONT.COLOR.SURFACE.DEFAULT]),icon:e.unref(h).CLOSE,priority:e.unref(_).QUATERNARY,onClick:i[0]||(i[0]=c=>n("close")),"aria-label":"Close alert"},null,8,["class","icon","priority"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["tide-alert-body",e.unref(t).FONT.ROLE.LABEL_1,!r.isToast&&e.unref(t).FONT.COLOR.SURFACE.VARIANT])},[e.renderSlot(s.$slots,"default",{},void 0,!0)],2)],2))}}),Ft=S(St,[["__scopeId","data-v-c07d631a"]]),G={BLACK:"black",BLUE:"blue",GREEN:"green",LIME:"lime",ORANGE:"orange",PURPLE:"purple",RED:"red",SALMON:"salmon",TEAL:"teal",YELLOW:"yellow"},Se={[G.BLACK]:{borderColor:t.BORDER.COLOR.HIGH,iconColor:t.FONT.COLOR.SURFACE.DEFAULT},[G.BLUE]:{borderColor:t.BORDER.COLOR.GLOBAL.BLUE,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.BLUE},[G.GREEN]:{borderColor:t.BORDER.COLOR.GLOBAL.GREEN,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.GREEN},[G.LIME]:{borderColor:t.BORDER.COLOR.GLOBAL.LIME,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.LIME},[G.ORANGE]:{borderColor:t.BORDER.COLOR.GLOBAL.ORANGE,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.ORANGE},[G.PURPLE]:{borderColor:t.BORDER.COLOR.GLOBAL.PURPLE,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.PURPLE},[G.RED]:{borderColor:t.BORDER.COLOR.GLOBAL.RED,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.RED},[G.SALMON]:{borderColor:t.BORDER.COLOR.GLOBAL.SALMON,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.SALMON},[G.TEAL]:{borderColor:t.BORDER.COLOR.GLOBAL.TEAL,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.TEAL},[G.YELLOW]:{borderColor:t.BORDER.COLOR.GLOBAL.YELLOW,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.YELLOW}},Je={YEARS_10:"10",YEARS_15:"15",YEARS_5:"5"},Dt=e.defineComponent({__name:"TideBadge",props:{color:{default:void 0},iconLeading:{default:void 0},isFloating:{type:Boolean,default:!1},label:{}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-badge",n.isFloating||n.color?[e.unref(t).BG.SURFACE.FLOATING,e.unref(t).SHADOW.BOTTOM]:[e.unref(t).BG.SURFACE.VARIANT],e.unref(t).DISPLAY.INLINE_FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).BORDER.RADIUS.QUARTER,e.unref(t).PADDING.Y.QUARTER,e.unref(t).PADDING.X.HALF,n.color&&[e.unref(t).BORDER.LEFT.TWO,e.unref(Se)[n.color].borderColor],e.unref(t).ELLIPSIS,e.unref(t).FONT.ROLE.LABEL_2,e.unref(t).WHITESPACE_WRAP.OFF])},[n.iconLeading?(e.openBlock(),e.createBlock(F,{key:0,class:e.normalizeClass([e.unref(t).FLEX.SHRINK.OFF,n.color&&e.unref(Se)[n.color].iconColor]),icon:n.iconLeading},null,8,["class","icon"])):e.createCommentVNode("",!0),e.createElementVNode("span",{class:e.normalizeClass([e.unref(t).ELLIPSIS])},e.toDisplayString(n.label),3)],2))}}),Bt=e.defineComponent({__name:"TideBadgeTrustedPartner",props:{years:{default:Je.YEARS_5}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-badge-trusted-partner",e.unref(t).FONT.COLOR.SURFACE.BRAND,e.unref(t).DISPLAY.INLINE_FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).ELLIPSIS,e.unref(t).FONT.ROLE.LABEL_2,e.unref(t).WHITESPACE_WRAP.OFF])},[e.createVNode(F,{class:e.normalizeClass([e.unref(t).FLEX.SHRINK.OFF]),icon:e.unref(h).AWARD_STAR},null,8,["class","icon"]),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).ELLIPSIS])},[e.createElementVNode("span",null,e.toDisplayString(n.years)+" year trusted partner",1)],2)],2))}}),yt=e.defineComponent({__name:"TideBadgeVerifiedVehicle",setup(o){return(n,r)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-badge-verified-vehicle",e.unref(t).BG.SECONDARY,e.unref(t).FONT.ROLE.LABEL_2,e.unref(t).FONT.COLOR.SECONDARY,e.unref(t).DISPLAY.INLINE_FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).BORDER.RADIUS.QUARTER,e.unref(t).PADDING.Y.QUARTER,e.unref(t).PADDING.X.HALF,e.unref(t).ELLIPSIS,e.unref(t).WHITESPACE_WRAP.OFF])},[e.createVNode(F,{class:e.normalizeClass([e.unref(t).FLEX.SHRINK.OFF]),icon:e.unref(h).VERIFIED},null,8,["class","icon"]),e.createElementVNode("span",{class:e.normalizeClass([e.unref(t).ELLIPSIS])},"Verified vehicle",2)],2))}}),Pt=S(yt,[["__scopeId","data-v-c6d1b806"]]),bt=["data-track","href"],_t=["data-track"],Ut={key:0},kt=e.defineComponent({__name:"TideBreadCrumbs",props:{breadCrumbs:{default:void 0}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createElementBlock("ul",{class:e.normalizeClass(["tide-bread-crumbs",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).LIST_BULLETS.OFF])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.breadCrumbs,(i,c)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:i.label},[e.createElementVNode("li",{class:e.normalizeClass([e.unref(t).FONT.ROLE.BODY_2])},[i.url?(e.openBlock(),e.createElementBlock("a",{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.LINK_2,e.unref(t).FONT.COLOR.SURFACE.DEFAULT]),"data-track":i.dataTrack||void 0,href:i.url},e.toDisplayString(i.label),11,bt)):(e.openBlock(),e.createElementBlock("span",{key:1,class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_2,e.unref(t).FONT.COLOR.SURFACE.VARIANT]),"data-track":i.dataTrack||void 0},e.toDisplayString(i.label),11,_t))],2),n.breadCrumbs&&c<n.breadCrumbs.length-1?(e.openBlock(),e.createElementBlock("li",Ut,[e.createVNode(F,{icon:e.unref(h).ARROW_RIGHT,size:e.unref(y).SMALL},null,8,["icon","size"])])):e.createCommentVNode("",!0)],64))),128))],2))}}),wt=e.defineComponent({__name:"TideButton",props:{disabled:{type:Boolean,default:!1},element:{default:D.BUTTON},href:{default:void 0},iconLeading:{default:void 0},iconTrailing:{default:void 0},isNewTab:{type:Boolean,default:!1},label:{default:void 0},priority:{default:_.PRIMARY},size:{default:te.LARGE}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.element===e.unref(D).LINK?e.unref(D).LINK:e.unref(D).BUTTON),{class:e.normalizeClass(["tide-button",n.priority&&`tide-button-${n.priority}`,n.element===e.unref(D).LINK?[e.unref(t).DISPLAY.INLINE_FLEX]:[e.unref(t).DISPLAY.FLEX],n.element===e.unref(D).LINK?e.unref(t).UNDERLINE.REST.OFF:"",r.size===e.unref(te).SMALL&&[e.unref(t).FONT.ROLE.BUTTON_2,e.unref(t).PADDING.X.ONE,e.unref(t).PADDING.Y.HALF],r.size===e.unref(te).LARGE&&[e.unref(t).FONT.ROLE.BUTTON_1,e.unref(t).PADDING.X.TWO,e.unref(t).PADDING.Y.ONE],e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).FONT.ROLE.LABEL_1_SEMIBOLD]),disabled:n.element===e.unref(D).BUTTON&&n.disabled,href:n.element===e.unref(D).LINK&&n.href?n.href:void 0,target:n.element===e.unref(D).LINK&&n.isNewTab?e.unref(V).BLANK:e.unref(V).SELF},{default:e.withCtx(()=>[n.iconLeading?(e.openBlock(),e.createBlock(F,{key:0,icon:n.iconLeading,size:r.size===e.unref(te).LARGE?e.unref(y).LARGE:e.unref(y).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString(n.label)+" ",1),n.iconTrailing?(e.openBlock(),e.createBlock(F,{key:1,icon:n.iconTrailing,size:r.size===e.unref(te).LARGE?e.unref(y).LARGE:e.unref(y).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0)]),_:1},8,["class","disabled","href","target"]))}}),Gt=e.defineComponent({__name:"TideButtonPagination",props:{disabled:{type:Boolean,default:!1},element:{default:q.BUTTON},href:{default:void 0},label:{default:void 0}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.element===e.unref(q).LINK?"a":n.element===e.unref(q).BUTTON?"button":"div"),{class:e.normalizeClass([n.element===e.unref(q).LINK?"tide-link-as-button-icon":"tide-button-icon",[e.unref(t).DISPLAY.INLINE_BLOCK,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).PADDING.FULL.HALF],n.element===e.unref(q).LINK?[e.unref(t).UNDERLINE.REST.OFF]:"",n.element===e.unref(q).DIV?[e.unref(t).CURSOR.POINTER]:"",[e.unref(t).FONT.ROLE.HEADLINE_3]]),disabled:n.element===e.unref(q).BUTTON&&n.disabled,href:n.element===e.unref(q).LINK&&n.href?n.href:void 0},{default:e.withCtx(()=>[e.createElementVNode("span",{class:e.normalizeClass(["label",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER])},e.toDisplayString(n.label),3)]),_:1},8,["class","disabled","href"]))}}),et=S(Gt,[["__scopeId","data-v-0e4f62c0"]]),Vt=["data-track","onClick"],Ht=e.defineComponent({__name:"TideButtonSegmented",props:{activeTab:{default:0},tabs:{}},emits:["change"],setup(o,{emit:n}){const r=o,s=i=>{n("change",i)};return(i,c)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-button-segmented",e.unref(t).BG.SURFACE.VARIANT,e.unref(t).DISPLAY.FLEX,e.unref(t).GAP.QUARTER,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).PADDING.FULL.QUARTER,e.unref(t).OVERFLOW.XY.HIDDEN,e.unref(t).WIDTH.FULL])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.tabs,(l,a)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["tide-button-segmented-tab",a===i.activeTab?[e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).FONT.COLOR.SURFACE.DEFAULT,e.unref(t).SHADOW.BOTTOM]:["inactive",e.unref(t).FONT.COLOR.SURFACE.VARIANT],e.unref(t).FLEX.GROW.ON,e.unref(t).BORDER.FULL.TWO,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).PADDING.Y.QUARTER,e.unref(t).WIDTH.FULL,e.unref(t).FONT.ROLE.BUTTON_1,e.unref(t).WHITESPACE_WRAP.OFF]),"data-track":l.dataTrack||void 0,key:l.label,onClick:u=>s(a)},[e.createElementVNode("span",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_2_SEMIBOLD])},e.toDisplayString(l.label),3),l.count&&l.count>0?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_2_SEMIBOLD])}," ("+e.toDisplayString(l.count)+") ",3)):e.createCommentVNode("",!0)],10,Vt))),128))],2))}}),Mt=S(Ht,[["__scopeId","data-v-4e385d0b"]]),ce={ACTIONABLE:"action",INFORMATIONAL:"informational",SELECTABLE:"select"},xt=e.defineComponent({__name:"TideCard",props:{description:{default:void 0},heading:{},icon:{default:void 0},selected:{type:Boolean,default:void 0},type:{default:ce.INFORMATIONAL},href:{default:void 0}},setup(o){return(n,r)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.href?"a":n.type===e.unref(ce).INFORMATIONAL?"div":"button"),{class:e.normalizeClass(["tide-card",e.unref(t).BORDER.COLOR.LOW,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).DISPLAY.FLEX,e.unref(t).GAP.HALF,e.unref(t).PADDING.FULL.ONE,e.unref(t).WIDTH.FULL,e.unref(t).ALIGN.X.LEFT,e.unref(t).FLEX.DIRECTION.COLUMN,n.type!==e.unref(ce).INFORMATIONAL&&"hoverable",n.type===e.unref(ce).SELECTABLE&&n.selected&&"selected"]),href:n.href},{default:e.withCtx(()=>[n.icon?(e.openBlock(),e.createBlock(F,{key:0,class:e.normalizeClass([e.unref(t).FLEX.GROW.OFF,e.unref(t).FLEX.SHRINK.OFF]),icon:n.icon,size:e.unref(y).SMALL},null,8,["class","icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).AXIS2.START,e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.HALF])},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_1_SEMIBOLD,e.unref(t).FONT.COLOR.SURFACE.DEFAULT])},e.toDisplayString(n.heading),3),n.description?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_2,e.unref(t).FONT.COLOR.SURFACE.VARIANT])},e.toDisplayString(n.description),3)):e.createCommentVNode("",!0)],2)]),_:1},8,["class","href"]))}}),Yt=S(xt,[["__scopeId","data-v-98f24c4f"]]),Wt=e.defineComponent({__name:"TideCarousel",props:{bleed:{default:void 0},isFloating:{type:Boolean,default:!1},isHeadline1:{type:Boolean,default:!1},isHideawayButtons:{type:Boolean,default:!0},isTouchscreen:{type:Boolean,default:void 0},subtitle:{default:void 0},title:{default:void 0}},emits:["slideChange","slidesAddedToView"],setup(o,{emit:n}){const r=o,s=e.ref(null),i=e.ref(null),c=e.ref(null),l=e.ref(),a=e.ref(),u=e.ref(0),d=e.ref(),f=e.ref(),E=e.ref(),O=e.ref(),m=e.ref(),I=e.ref(),R=()=>{r.bleed!=null&&s.value!==null&&(O.value&&I.value?(s.value.style.margin=`-${r.bleed}px -${r.bleed}px -${r.bleed}px 0`,s.value.style.padding=`${r.bleed}px ${r.bleed}px ${r.bleed}px 0`):(s.value.style.margin=`-${r.bleed}px 0 -${r.bleed}px -${r.bleed}px`,s.value.style.padding=`${r.bleed}px 0 ${r.bleed}px ${r.bleed}px`))},L=()=>{const C=s.value;if(!C)return;const b=Array.from(C.children).map(X=>X.offsetLeft);if(b.length===0)return;const P=C.scrollLeft,w=b.reduce((X,ee)=>Math.abs(ee-P)<Math.abs(X-P)?ee:X);u.value=b.indexOf(w),R()},p=()=>{s.value!==null&&(l.value=Math.round(s.value.scrollLeft+s.value.clientWidth),a.value=s.value.scrollWidth,d.value=s.value.clientWidth,f.value=a.value>d.value,E.value=u.value===0,O.value=l.value===a.value,m.value=s.value.scrollWidth-s.value.clientWidth,I.value=f.value&&!r.isTouchscreen,L())},A=()=>{p()},T=C=>{s.value!==null&&s.value.scrollTo({behavior:"smooth",left:s.value.children[C].offsetLeft})},g=()=>{s.value!==null&&(l.value>a.value?s.value.scrollTo({behavior:"smooth",left:a.value}):O.value||T(u.value+1))},v=()=>{E.value||T(u.value-1)},B=()=>{var b;const C={root:s==null?void 0:s.value,rootMargin:"0px",threshold:.5};i.value=new IntersectionObserver(P=>{let w=[];P.forEach(X=>{var we;const ee=Array.from(((we=s.value)==null?void 0:we.children)??[]).indexOf(X.target);X.isIntersecting&&w.push(ee)}),w.length>0&&n("slidesAddedToView",w)},C),Array.from(((b=s.value)==null?void 0:b.children)??[]).forEach(P=>{i.value&&i.value.observe(P)})},N=()=>{const C=()=>{B()};c.value=new MutationObserver(C),s.value&&c.value.observe(s.value,{childList:!0})};return e.onMounted(()=>{window&&window.addEventListener("resize",p),p(),B(),N()}),e.onUnmounted(()=>{var C,b;window.removeEventListener("resize",p),(C=i.value)==null||C.disconnect(),(b=c.value)==null||b.disconnect()}),e.onUpdated(()=>{p()}),e.watch(u,()=>{n("slideChange",u.value)}),(C,b)=>(e.openBlock(),e.createElementBlock("section",{class:e.normalizeClass(["tide-carousel",e.unref(t).POSITION.RELATIVE,e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.ONE,e.unref(t).WIDTH.MAX_FULL]),ref:"carouselRef"},[!r.isFloating&&(I.value||r.title)?(e.openBlock(),e.createElementBlock("section",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,r.title?e.unref(t).AXIS1.BETWEEN:e.unref(t).AXIS1.END,e.unref(t).AXIS2.CENTER,e.unref(t).WIDTH.FULL])},[r.title||r.subtitle?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.ONE])},[r.title?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([C.isHeadline1?e.unref(t).FONT.ROLE.HEADLINE_1:e.unref(t).FONT.ROLE.HEADLINE_2])},e.toDisplayString(r.title),3)):e.createCommentVNode("",!0),r.subtitle?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_2,e.unref(t).FONT.COLOR.SURFACE.VARIANT])},e.toDisplayString(r.subtitle),3)):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0),I.value?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.ONE])},[e.createVNode(k,{disabled:u.value===0,icon:e.unref(h).CHEVRON_LEFT,priority:e.unref(_).TERTIARY,onClick:v},null,8,["disabled","icon","priority"]),e.createVNode(k,{disabled:O.value,icon:e.unref(h).CHEVRON_RIGHT,priority:e.unref(_).TERTIARY,onClick:g},null,8,["disabled","icon","priority"])],2)):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0),e.renderSlot(C.$slots,"misc",{},void 0,!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).POSITION.RELATIVE])},[e.createElementVNode("ul",{class:e.normalizeClass(["tide-carousel-container",r.bleed&&"bleed",e.unref(t).DISPLAY.FLEX,e.unref(t).GAP.ONE,e.unref(t).LIST_BULLETS.OFF,e.unref(t).OVERFLOW.X.SCROLL,e.unref(t).SCROLLBAR.OFF,e.unref(t).SNAP.ON]),ref_key:"containerRef",ref:s,onScroll:A},[e.renderSlot(C.$slots,"default",{},void 0,!0)],34)],2),C.isFloating&&I.value?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(["tide-carousel-button-overlay",e.unref(t).POSITION.ABSOLUTE,e.unref(t).POSITIONING.TOP,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.BETWEEN,e.unref(t).AXIS2.CENTER,e.unref(t).WIDTH.FULL,e.unref(t).HEIGHT.FULL,e.unref(t).POINTER_EVENTS.OFF,r.isHideawayButtons?"hideaway":""])},[e.createVNode(k,{class:e.normalizeClass([e.unref(t).MARGIN.LEFT.ONE,e.unref(t).POINTER_EVENTS.ON]),disabled:u.value===0,icon:e.unref(h).CHEVRON_LEFT,priority:e.unref(_).QUATERNARY,onClick:v},null,8,["class","disabled","icon","priority"]),e.createVNode(k,{class:e.normalizeClass([e.unref(t).MARGIN.RIGHT.ONE,e.unref(t).POINTER_EVENTS.ON]),disabled:O.value,icon:e.unref(h).CHEVRON_RIGHT,priority:e.unref(_).QUATERNARY,onClick:g},null,8,["class","disabled","icon","priority"])],2)):e.createCommentVNode("",!0)],2))}}),zt=S(Wt,[["__scopeId","data-v-f6e14c22"]]),Xt=e.defineComponent({__name:"TideChipAction",props:{element:{default:D.LINK},href:{default:void 0},isNewTab:{type:Boolean,default:!1},label:{}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(r.element),{class:e.normalizeClass(["tide-chip-action",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).PADDING.X.ONE,e.unref(t).PADDING.Y.HALF,e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).FONT.ROLE.LINK_2,e.unref(t).FONT.COLOR.SURFACE.DEFAULT,e.unref(t).UNDERLINE.REST.OFF]),href:n.href,target:n.isNewTab?e.unref(V).BLANK:e.unref(V).SELF},{default:e.withCtx(()=>[e.createVNode(F,{icon:e.unref(h).SEARCH},null,8,["icon"]),e.createElementVNode("span",null,e.toDisplayString(n.label),1)]),_:1},8,["class","href","target"]))}}),qt=S(Xt,[["__scopeId","data-v-2f57438d"]]),$t=e.defineComponent({__name:"TideChipFilter",props:{isActive:{type:Boolean},label:{}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["tide-chip-filter",n.isActive?[e.unref(t).BG.SECONDARY,e.unref(t).FONT.COLOR.SECONDARY]:[e.unref(t).BG.SURFACE.VARIANT,e.unref(t).FONT.COLOR.SURFACE.DEFAULT],e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).PADDING.X.ONE,e.unref(t).PADDING.Y.HALF,e.unref(t).FONT.ROLE.LABEL_2,n.isActive?"active":""])},[e.renderSlot(r.$slots,"default",{},void 0,!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF])},[e.createElementVNode("span",{class:e.normalizeClass([n.isActive?"":"icon-spacing",e.unref(t).FONT.ROLE.LABEL_1,e.unref(t).WHITESPACE_WRAP.OFF])},e.toDisplayString(n.label),3)],2)],2))}}),Kt=S($t,[["__scopeId","data-v-6ddce1c2"]]),Qt=e.defineComponent({__name:"TideChipInput",props:{label:{}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["tide-chip-input",e.unref(t).BG.SURFACE.VARIANT,e.unref(t).FONT.COLOR.SURFACE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).PADDING.X.ONE,e.unref(t).PADDING.Y.HALF,e.unref(t).FONT.ROLE.LABEL_2])},[e.createElementVNode("span",null,e.toDisplayString(n.label),1),e.createVNode(F,{icon:e.unref(h).CLOSE},null,8,["icon"])],2))}}),Zt=S(Qt,[["__scopeId","data-v-42611a29"]]),jt={class:"tide-columns"},Jt={class:"tide-columns-column"},en={class:"tide-columns-column"},tn={class:"tide-columns-column"},nn={class:"tide-columns-column"},on=e.defineComponent({__name:"TideColumns",props:{heading:{default:""}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createElementBlock("section",jt,[e.createElementVNode("h2",{class:e.normalizeClass([e.unref(t).MARGIN.BOTTOM.HALF])},e.toDisplayString(n.heading),3),e.createElementVNode("ul",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.WRAP,e.unref(t).GAP.TWO,e.unref(t).LIST_BULLETS.OFF])},[e.createElementVNode("li",Jt,[e.renderSlot(r.$slots,"section1",{},void 0,!0)]),e.createElementVNode("li",en,[e.renderSlot(r.$slots,"section2",{},void 0,!0)]),e.createElementVNode("li",tn,[e.renderSlot(r.$slots,"section3",{},void 0,!0)]),e.createElementVNode("li",nn,[e.renderSlot(r.$slots,"section4",{},void 0,!0)])],2)]))}}),rn=S(on,[["__scopeId","data-v-c92a6639"]]),Q={CONTAIN:"contain",COVER:"cover",SCALE_DOWN:"scale-down"},sn=["media","srcset"],ln=["alt","fetchpriority","loading","src"],Ne="https://cdn-static.tilabs.io/marketplace/common/image-coming-soon.svg",an=e.defineComponent({__name:"TideImage",props:{alt:{default:""},height:{default:void 0},isLazy:{type:Boolean,default:!0},objectFit:{default:Q.COVER},sources:{default:()=>[]},src:{default:void 0},width:{default:void 0}},setup(o){const n=o,r=e.ref(),s=e.ref(),i=e.computed(()=>{switch(n.objectFit){case Q.CONTAIN:return t.OBJECT.CONTAIN;case Q.COVER:return t.OBJECT.COVER;case Q.SCALE_DOWN:return t.OBJECT.SCALE_DOWN;default:return Q.COVER}}),c=()=>{var u,d;const l=(u=s.value)==null?void 0:u.currentSrc,a=(d=r.value)==null?void 0:d.querySelector(`source[srcset="${l}"]`);l&&a?a.srcset=Ne:s.value&&(s.value.src=Ne)};return(l,a)=>(e.openBlock(),e.createElementBlock("picture",{class:e.normalizeClass(["tide-image",e.unref(t).DISPLAY.BLOCK]),ref_key:"picture",ref:r,style:e.normalizeStyle(l.width||l.height?{width:l.width||void 0,height:l.height||void 0}:void 0)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.sources,u=>(e.openBlock(),e.createElementBlock("source",{key:u.srcset,media:`(min-width:${u.media}px)`,srcset:u.srcset},null,8,sn))),128)),e.createElementVNode("img",{alt:l.alt,class:e.normalizeClass(["tide-image-img",e.unref(t).WIDTH.FULL,e.unref(t).HEIGHT.FULL,e.unref(t).OBJECT.CENTER,i.value]),fetchpriority:l.isLazy?void 0:"high",loading:n.isLazy?"lazy":"eager",ref_key:"img",ref:s,src:l.src??Ne,onError:c},null,42,ln)],6))}}),tt=S(an,[["__scopeId","data-v-beafed0f"]]),cn=e.defineComponent({__name:"TideImageBackground",props:{alt:{default:""},isLazy:{type:Boolean,default:!0},sources:{default:()=>[]},src:{default:void 0}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-image-background",e.unref(t).POSITION.RELATIVE,e.unref(t).OVERFLOW.XY.HIDDEN,e.unref(t).ISOLATION.ISOLATE])},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).POSITION.ABSOLUTE,e.unref(t).HEIGHT.FULL,e.unref(t).WIDTH.FULL,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER])},[e.createVNode(tt,{alt:n.alt,class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).HEIGHT.FULL]),"is-lazy":n.isLazy,"object-fit":e.unref(Q).COVER,sources:n.sources,src:n.src},null,8,["alt","class","is-lazy","object-fit","sources","src"])],2),e.renderSlot(r.$slots,"default",{},void 0,!0)],2))}}),un=S(cn,[["__scopeId","data-v-0d40d1c6"]]),dn={key:0,class:e.normalizeClass(["tide-indicator-label"])},fn=e.defineComponent({__name:"TideIndicator",props:{label:{default:void 0}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-indicator",n.label?"":"dot",e.unref(t).DISPLAY.INLINE_BLOCK,e.unref(t).ALIGN.X.CENTER,e.unref(t).BG.GLOBAL.PRIMARY.ERROR,e.unref(t).BORDER.RADIUS.FULL,n.label&&n.label.toString().length>1?[e.unref(t).PADDING.X.HALF]:[],n.label?[e.unref(t).POSITION.RELATIVE,e.unref(t).FONT.ROLE.LABEL_3,e.unref(t).FONT.COLOR.SURFACE.INVERSE]:[e.unref(t).BORDER.FULL.ONE]])},[n.label?(e.openBlock(),e.createElementBlock("div",dn,e.toDisplayString(n.label),1)):e.createCommentVNode("",!0)],2))}}),En=S(fn,[["__scopeId","data-v-d402ac82"]]),mn=["checked","disabled","name","id"],vn=["for"],On=e.defineComponent({__name:"TideInputCheckbox",props:{checked:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},indeterminate:{type:Boolean,default:!1},inputId:{default:void 0},label:{default:void 0},name:{default:void 0},number:{default:void 0}},setup(o){const n=o,r=e.computed(()=>n.checked||n.indeterminate);return(s,i)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-checkbox",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).FONT.ROLE.BODY_1,s.disabled?["disabled",e.unref(t).POINTER_EVENTS.OFF]:e.unref(t).CURSOR.POINTER])},[e.createElementVNode("input",{checked:r.value,class:e.normalizeClass([e.unref(t).DISPLAY.NONE]),disabled:n.disabled,name:n.name,ref:"input",onClick:i[0]||(i[0]=e.withModifiers(()=>{},["prevent"])),id:n.inputId,type:"checkbox"},null,10,mn),e.createElementVNode("div",{class:e.normalizeClass(["tide-input-checkbox-custom",e.unref(t).POSITION.RELATIVE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).FLEX.SHRINK.OFF,e.unref(t).BORDER.FULL.ONE,r.value?[e.unref(t).BORDER.COLOR.HIGH,e.unref(t).BG.SECONDARY]:[e.unref(t).BORDER.COLOR.DEFAULT,e.unref(t).BG.SURFACE.DEFAULT],e.unref(t).BORDER.RADIUS.QUARTER,r.value&&"checked",s.disabled?e.unref(t).CURSOR.NOT_ALLOWED:e.unref(t).CURSOR.POINTER])},[r.value?(e.openBlock(),e.createBlock(F,{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SECONDARY]),icon:n.indeterminate?e.unref(h).REMOVE:e.unref(h).CHECK,size:e.unref(y).SMALL},null,8,["class","icon","size"])):e.createCommentVNode("",!0)],2),s.label?(e.openBlock(),e.createElementBlock("label",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.BETWEEN,e.unref(t).FLEX.GROW.ON,e.unref(t).FONT.ROLE.BODY_1,s.disabled?e.unref(t).CURSOR.NOT_ALLOWED:e.unref(t).CURSOR.POINTER]),for:n.inputId,onClick:i[1]||(i[1]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("span",null,e.toDisplayString(s.label),1),n.number?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SURFACE.VARIANT])}," ("+e.toDisplayString(e.unref(Re)(n.number))+") ",3)):e.createCommentVNode("",!0)],10,vn)):e.createCommentVNode("",!0)],2))}}),Ln=S(On,[["__scopeId","data-v-f79a83b7"]]),Rn=["checked","id"],pn=["for"],An=e.defineComponent({__name:"TideInputRadio",props:{checked:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},inputId:{default:void 0},label:{default:void 0},name:{},number:{default:void 0}},setup(o){const n=o,r=e.ref(n.checked);return e.watch(()=>n.checked,(s,i)=>{(s!==i||s!==r.value)&&(r.value=s)}),(s,i)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-radio",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).POINTER_EVENTS.OFF,n.disabled&&"disabled"])},[e.createElementVNode("input",{checked:r.value,class:e.normalizeClass([e.unref(t).DISPLAY.NONE]),id:n.inputId,name:"",type:"radio",value:""},null,10,Rn),e.createElementVNode("div",{class:e.normalizeClass(["tide-input-radio-custom",e.unref(t).POSITION.RELATIVE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.FULL.ONE,r.value?e.unref(t).BORDER.COLOR.HIGH:e.unref(t).BORDER.COLOR.DEFAULT,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).CURSOR.POINTER,e.unref(t).POINTER_EVENTS.ON,r.value&&"checked"])},[e.createElementVNode("div",{class:e.normalizeClass(["tide-input-radio-check",e.unref(t).BORDER.RADIUS.FULL,n.checked&&e.unref(t).BG.SECONDARY])},null,2)],2),e.createElementVNode("label",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.GROW.ON,e.unref(t).AXIS1.BETWEEN,e.unref(t).FONT.ROLE.BODY_1,e.unref(t).CURSOR.POINTER,e.unref(t).POINTER_EVENTS.ON]),for:n.inputId},[e.createElementVNode("span",null,e.toDisplayString(s.label),1),n.number?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SURFACE.VARIANT])}," ("+e.toDisplayString(e.unref(Re)(n.number))+") ",3)):e.createCommentVNode("",!0)],10,pn)],2))}}),In=S(An,[["__scopeId","data-v-a4ef0a81"]]),De="Please enter a valid value.",Tn={message:"",valid:!0},le=o=>n=>{let r=Tn;return n.trim().match(o)||(r={message:De,valid:!1}),r},Be=(o,n)=>typeof o=="string"&&o.length>0?o:typeof n=="string"&&n.length>0?n:De,ye=(o,n)=>o!==!1||n!==!1,gn=({maxlength:o,minlength:n,required:r,value:s})=>{const i=s.length===0&&!r,c=o&&s.length>o;return!(!i&&n&&s.length<n)&&!c},nt=({error:o,errorFromProps:n,maxlength:r,minlength:s,required:i=!1,validators:c,value:l})=>{if(o.value=n||!1,!o.value&&c){const a=hn((l==null?void 0:l.value)||"",c);a.valid||(o.value=a.message)}if(!o.value&&(r||s)){const a=Nn({maxlength:r,minlength:s,required:i,value:(l==null?void 0:l.value)||""});a.valid||(o.value=a.message)}},Nn=({maxlength:o,minlength:n,required:r=!1,value:s})=>{const i={message:"",valid:!0};return i.valid=gn({maxlength:o,minlength:n,required:r,value:s}),i.valid||(i.message=De,o&&n?i.message=`Please enter a value between ${n} and ${o} characters in length.`:o?i.message=`Please enter a value no more than ${o} characters in length.`:n&&(i.message=`Please enter a value no less than ${n} characters in length.`)),i};function hn(o,n){for(const r of n){const s=r(o);if(!s.valid)return s}return{message:"",valid:!0}}const Cn=["for"],Sn=["disabled","name","required","id"],Fn=["label"],Dn=["value"],Bn=["selected","value"],yn=["selected","value"],Pn=e.defineComponent({__name:"TideInputSelect",props:{inputId:{default:void 0},supportingText:{default:void 0},optgroups:{},options:{},disabled:{type:Boolean,default:!1},error:{type:[String,Boolean],default:!1},label:{default:void 0},name:{},required:{type:Boolean,default:!1},value:{default:void 0}},setup(o,{expose:n}){const r=o,s=e.ref(r.error),i=e.ref(!1),c=e.ref(null),l=e.ref(r.required),a=e.ref(r.value),u=e.computed(()=>Be(r.error,s.value)),d=e.computed(()=>r.required?`${r.label} *`:r.label),f=e.computed(()=>r.required&&!a.value||ye(s.value,r.error)),E=e.computed(()=>i.value||!O.value),O=e.computed(()=>a.value===void 0),m=()=>{var p;const L=new MouseEvent("mousedown");(p=c==null?void 0:c.value)==null||p.dispatchEvent(L)},I=()=>{i.value=!0},R=()=>{i.value=!1};return e.watch(()=>r.value,(L,p)=>{(L!==p||L!==a.value)&&(a.value=L)}),n({error:s,value:a}),(L,p)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-select",e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.QUARTER,L.disabled&&"disabled",f.value&&"error"])},[e.createElementVNode("div",{class:e.normalizeClass(["tide-input-border",e.unref(t).POSITION.RELATIVE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).BG.SURFACE.DEFAULT,r.disabled?e.unref(t).CURSOR.NOT_ALLOWED:"",e.unref(t).OVERFLOW.XY.HIDDEN]),onClick:m},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).WIDTH.FULL])},[L.label?(e.openBlock(),e.createElementBlock("label",{key:0,class:e.normalizeClass([E.value?["minilabel",e.unref(t).FONT.ROLE.LABEL_3]:e.unref(t).FONT.ROLE.LABEL_1,e.unref(t).POSITION.ABSOLUTE,e.unref(t).POSITIONING.LEFT,e.unref(t).MARGIN.TOP.HALF,e.unref(t).MARGIN.LEFT.ONE,!f.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,e.unref(t).POINTER_EVENTS.OFF]),for:r.inputId},e.toDisplayString(d.value),11,Cn)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("select",{class:e.normalizeClass([e.unref(t).PADDING.BOTTOM.HALF,e.unref(t).PADDING.X.ONE,e.unref(t).WIDTH.FULL,L.disabled&&e.unref(t).CURSOR.NOT_ALLOWED,e.unref(t).FONT.ROLE.BODY_1]),disabled:L.disabled,name:L.name,ref_key:"input",ref:c,required:l.value,onFocus:I,onFocusout:R,id:r.inputId,"onUpdate:modelValue":p[0]||(p[0]=A=>a.value=A)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.optgroups,A=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[A.options?(e.openBlock(),e.createElementBlock("optgroup",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:A.label,label:A.label},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(A.options,T=>(e.openBlock(),e.createElementBlock("option",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:T.value,value:T.value},e.toDisplayString(T.label),11,Dn))),128))],10,Fn)):(e.openBlock(),e.createElementBlock("option",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:A.value,selected:a.value===A.value?!0:void 0,value:A.value},e.toDisplayString(A.label),11,Bn))],64))),256)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(L.options,A=>(e.openBlock(),e.createElementBlock("option",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:A.value,selected:a.value===A.value?!0:void 0,value:A.value},e.toDisplayString(A.label),11,yn))),128))],42,Sn),[[e.vModelSelect,a.value]])],2),e.createVNode(F,{class:e.normalizeClass([e.unref(t).POSITION.ABSOLUTE,e.unref(t).POSITIONING.RIGHT,e.unref(t).MARGIN.RIGHT.ONE,e.unref(t).POINTER_EVENTS.OFF]),icon:e.unref(h).EXPAND_MORE,size:e.unref(y).SMALL},null,8,["class","icon","size"])],2),r.supportingText||f.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER])},[f.value?(e.openBlock(),e.createBlock(F,{key:0,class:e.normalizeClass([]),icon:e.unref(h).ERROR,size:e.unref(y).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_3])},e.toDisplayString(f.value?u.value:r.supportingText),3)],2)):e.createCommentVNode("",!0)],2))}}),bn=S(Pn,[["__scopeId","data-v-2da267e1"]]),ne={DATE:"date",DATETIME_LOCAL:"datetime-local",EMAIL:"email",MONTH:"month",NUMBER:"number",PASSWORD:"password",SEARCH:"search",TEL:"tel",TEXT:"text",TIME:"time",URL:"url",WEEK:"week"},_n=["for"],Un=["autocomplete","disabled","maxlength","minlength","name","required","type","id"],kn=e.defineComponent({__name:"TideInputText",props:{autocomplete:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},error:{type:[String,Boolean],default:!1},hasClear:{type:Boolean,default:!1},iconLeading:{default:void 0},inputId:{default:void 0},label:{default:void 0},maxlength:{default:void 0},minlength:{default:void 0},name:{},prefix:{default:void 0},required:{type:Boolean,default:!1},suffix:{default:void 0},supportingText:{default:void 0},transformValue:{type:Function,default:void 0},type:{default:ne.TEXT},validators:{default:void 0},value:{default:void 0}},setup(o,{expose:n}){const r=o,s=e.ref(r.error),i=e.ref(!1),c=e.ref(null),l=e.ref(!1),a=e.ref(r.value),u=e.computed(()=>Be(r.error,s.value)),d=e.computed(()=>r.required&&r.label?`${r.label} *`:r.label),f=e.computed(()=>r.hasClear&&a.value),E=e.computed(()=>r.required&&a.value!==void 0&&!a.value||ye(s.value,r.error)),O=e.computed(()=>i.value||!m.value),m=e.computed(()=>a.value===""||a.value===void 0),I=e.computed(()=>r.type===ne.PASSWORD&&l.value===!0?ne.TEXT:r.type),R=()=>{var v;a.value="",(v=c.value)==null||v.focus()},L=()=>{i.value=!0},p=()=>{i.value=!1,a.value||(a.value=""),T()},A=()=>{var v,B;if(r.transformValue){const N=((B=(v=a.value)==null?void 0:v.match(/\d/g))==null?void 0:B.join(""))||void 0;a.value=N?r.transformValue(N):""}},T=()=>{nt({error:s,errorFromProps:r.error,maxlength:r.maxlength,minlength:r.minlength,required:r.required,validators:r.validators,value:a})},g=v=>{a.value=v};return e.watch(()=>r.value,(v,B)=>{(v!==B||v!==a.value)&&(a.value=v)}),n({error:s,required:r.required,updateValue:g,value:a}),(v,B)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-text",e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.QUARTER,v.disabled&&"disabled",E.value&&"error"])},[e.createElementVNode("label",{class:e.normalizeClass(["tide-input-text-field",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).POSITION.RELATIVE,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).BG.SURFACE.DEFAULT,f.value?[e.unref(t).PADDING.RIGHT.HALF,e.unref(t).PADDING.LEFT.ONE]:[e.unref(t).PADDING.X.ONE],e.unref(t).PADDING.Y.HALF,v.disabled?e.unref(t).CURSOR.NOT_ALLOWED:e.unref(t).CURSOR.TEXT]),for:v.inputId},[v.iconLeading?(e.openBlock(),e.createBlock(F,{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SURFACE.VARIANT]),icon:v.iconLeading,size:e.unref(y).SMALL},null,8,["class","icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).WIDTH.FULL])},[v.prefix?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["tide-input-text-prefix",e.unref(t).FONT.ROLE.BODY_1,!E.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,O.value?"":"offset"])},e.toDisplayString(v.prefix),3)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).WIDTH.FULL])},[v.label?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["tide-input-text-label",O.value?["minilabel",e.unref(t).FONT.ROLE.LABEL_3]:e.unref(t).FONT.ROLE.LABEL_1,!E.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,e.unref(t).CURSOR.TEXT,e.unref(t).POINTER_EVENTS.OFF])},e.toDisplayString(d.value),3)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("input",{autocomplete:v.autocomplete?"on":"off",class:e.normalizeClass([e.unref(t).WIDTH.FULL,v.disabled&&e.unref(t).CURSOR.NOT_ALLOWED,e.unref(t).FONT.ROLE.BODY_1]),disabled:v.disabled,maxlength:v.maxlength,minlength:v.minlength,name:v.name,ref_key:"input",ref:c,required:v.required,type:I.value,onChange:T,onFocus:L,onFocusout:p,onInput:A,id:v.inputId,"onUpdate:modelValue":B[0]||(B[0]=N=>a.value=N)},null,42,Un),[[e.vModelDynamic,a.value]])],2),v.suffix?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(["tide-input-text-suffix",e.unref(t).FONT.ROLE.BODY_1,!E.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,O.value?"":"offset"])},e.toDisplayString(v.suffix),3)):e.createCommentVNode("",!0)],2),f.value&&v.type!==e.unref(ne).PASSWORD?(e.openBlock(),e.createElementBlock("button",{key:1,onClick:R},[e.createVNode(F,{class:e.normalizeClass([e.unref(t).MARGIN.FULL.HALF]),icon:e.unref(h).CLOSE,size:e.unref(y).SMALL},null,8,["class","icon","size"])])):e.createCommentVNode("",!0),v.type===e.unref(ne).PASSWORD?(e.openBlock(),e.createElementBlock("button",{key:2,onClick:B[1]||(B[1]=N=>l.value=!l.value)},[e.createVNode(F,{class:e.normalizeClass([e.unref(t).MARGIN.FULL.HALF]),icon:e.unref(h).VISIBILITY,size:e.unref(y).SMALL},null,8,["class","icon","size"])])):e.createCommentVNode("",!0)],10,_n),v.supportingText||E.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER])},[E.value?(e.openBlock(),e.createBlock(F,{key:0,class:e.normalizeClass([]),icon:e.unref(h).ERROR,size:e.unref(y).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_3])},e.toDisplayString(E.value?u.value:v.supportingText),3)],2)):e.createCommentVNode("",!0)],2))}}),wn=S(kn,[["__scopeId","data-v-2850502f"]]),Gn=["for"],Vn=["maxlength","minlength","name","required","rows","id"],Hn=e.defineComponent({__name:"TideInputTextarea",props:{error:{type:[String,Boolean],default:!1},inputId:{default:void 0},label:{default:void 0},maxlength:{default:void 0},minlength:{default:void 0},name:{default:void 0},required:{type:Boolean,default:!1},rows:{default:8},supportingText:{default:void 0},value:{default:void 0}},setup(o,{expose:n}){const r=o,s=e.ref(r.error),i=e.ref(!1),c=e.ref(null),l=e.ref(r.value),a=e.computed(()=>Be(r.error,s.value)),u=e.computed(()=>r.required?`${r.label} *`:r.label),d=e.computed(()=>r.required&&l.value!==void 0&&!l.value||ye(s.value,r.error)),f=e.computed(()=>i.value||!E.value),E=e.computed(()=>l.value===""||l.value===void 0),O=()=>{i.value=!0},m=()=>{i.value=!1,l.value||(l.value="")},I=()=>nt({error:s,errorFromProps:r.error,maxlength:r.maxlength,minlength:r.minlength,required:r.required,value:l});return e.watch(()=>r.value,(R,L)=>{(R!==L||R!==l.value)&&(l.value=R)}),n({error:s,required:r.required,value:l}),(R,L)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-textarea",e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.QUARTER,d.value&&"error"])},[e.createElementVNode("label",{class:e.normalizeClass(["tide-input-textarea-field",e.unref(t).GAP.HALF,e.unref(t).POSITION.RELATIVE,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).PADDING.LEFT.ONE,e.unref(t).PADDING.TOP.HALF,e.unref(t).OVERFLOW.XY.HIDDEN,e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).CURSOR.TEXT]),for:R.inputId},[R.label?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["tide-input-textarea-label",f.value?["minilabel",e.unref(t).FONT.ROLE.LABEL_3]:e.unref(t).FONT.ROLE.LABEL_1,!d.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,e.unref(t).POINTER_EVENTS.OFF])},e.toDisplayString(u.value),3)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("textarea",{class:e.normalizeClass([e.unref(t).DISPLAY.BLOCK,e.unref(t).WIDTH.FULL,e.unref(t).FONT.ROLE.BODY_1]),maxlength:R.maxlength,minlength:R.minlength,name:R.name,ref_key:"input",ref:c,required:R.required,rows:R.rows,onChange:I,onFocus:O,onFocusout:m,id:R.inputId,"onUpdate:modelValue":L[0]||(L[0]=p=>l.value=p)},null,42,Vn),[[e.vModelText,l.value]])],10,Gn),R.supportingText||d.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER])},[d.value?(e.openBlock(),e.createBlock(F,{key:0,icon:e.unref(h).ERROR,size:e.unref(y).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_3])},e.toDisplayString(d.value?a.value:R.supportingText),3)],2)):e.createCommentVNode("",!0)],2))}}),Mn=S(Hn,[["__scopeId","data-v-405d88aa"]]),xn=e.defineComponent({__name:"TideLink",props:{element:{default:D.LINK},href:{default:void 0},iconLeading:{default:void 0},iconTrailing:{default:void 0},isNewTab:{type:Boolean,default:!1},label:{default:void 0},subtle:{type:Boolean,default:!1}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.element===e.unref(D).LINK?e.unref(D).LINK:e.unref(D).BUTTON),{class:e.normalizeClass(["tide-link",e.unref(t).DISPLAY.INLINE,e.unref(t).ALIGN.X.LEFT,r.subtle?[e.unref(t).UNDERLINE.REST.OFF,e.unref(t).UNDERLINE.HOVER.ON]:[e.unref(t).UNDERLINE.REST.ON,e.unref(t).UNDERLINE.HOVER.OFF]]),href:n.href,target:n.isNewTab?e.unref(V).BLANK:e.unref(V).SELF},{default:e.withCtx(()=>[n.iconLeading?(e.openBlock(),e.createBlock(F,{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.INLINE_BLOCK,e.unref(t).ALIGN.Y.MIDDLE,e.unref(t).MARGIN.RIGHT.QUARTER]),icon:n.iconLeading},null,8,["class","icon"])):e.createCommentVNode("",!0),e.createElementVNode("span",{class:e.normalizeClass([e.unref(t).ALIGN.Y.MIDDLE])},e.toDisplayString(n.label),3),n.iconTrailing?(e.openBlock(),e.createBlock(F,{key:1,class:e.normalizeClass([e.unref(t).DISPLAY.INLINE_BLOCK,e.unref(t).ALIGN.Y.MIDDLE,e.unref(t).MARGIN.LEFT.QUARTER]),icon:n.iconTrailing},null,8,["class","icon"])):e.createCommentVNode("",!0)]),_:1},8,["class","href","target"]))}}),ot={SM:"sm",MD:"md",LG:"lg",XL:"xl"},Yn={SM:768,MD:992,LG:1232,XL:1920},rt=async o=>{const n=document.body;if(o){if(!n.dataset.scrollLockY){const r=window.scrollY;n.dataset.scrollLockY=r.toString(),n.style.setProperty("--saved-scroll-y",`${r}px`),n.style.setProperty("inset","0"),n.style.setProperty("margin-top","calc(0px - var(--saved-scroll-y, 0px))"),n.style.setProperty("overflow-y","scroll"),n.style.setProperty("position","fixed")}}else if(await e.nextTick(),!document.querySelector("dialog[open]")){const r=parseInt(n.dataset.scrollLockY||"0");n.style.removeProperty("inset"),n.style.removeProperty("marginTop"),n.style.removeProperty("overflowY"),n.style.removeProperty("position"),n.style.removeProperty("--saved-scroll-y"),window.scrollTo({behavior:"auto",top:r}),delete n.dataset.scrollLockY}},me="tide-top-layer",st=()=>{let o=document.getElementById(me);o||(o=document.createElement("div"),o.id=me,o.setAttribute("data-css-scope",""),document.body.appendChild(o)),o.style.isolation="isolate"},Wn=["onClick","onKeydown"],zn=["textContent"],Xn=e.defineComponent({__name:"TideModal",props:{isBackButton:{type:Boolean,default:!1},isDismissible:{type:Boolean,default:!0},isOpen:{type:Boolean},title:{default:void 0},width:{default:void 0}},emits:["close","back"],setup(o,{emit:n}){const r=o,s=e.ref(),i=e.ref(),c=()=>{var f;(f=i.value)==null||f.showModal()},l=()=>{var f;(f=i.value)==null||f.close()},a=()=>{e.nextTick(()=>{s.value&&(s.value.scrollTop=0)})},u=()=>{r.isDismissible&&n("close")},d=f=>{f.preventDefault(),r.isDismissible&&n("close")};return e.watch(()=>r.isOpen,f=>{i.value&&(f?(c(),a()):l(),rt(f))}),e.onMounted(()=>{r.isOpen&&c()}),(f,E)=>(e.openBlock(),e.createElementBlock("dialog",{class:e.normalizeClass(["tide-modal",e.unref(t).BG.INITIAL,e.unref(t).HEIGHT.FULL,e.unref(t).WIDTH.FULL,e.unref(t).OVERFLOW.XY.HIDDEN]),ref_key:"modalDialog",ref:i,style:e.normalizeStyle({"--modal-width":r.width}),onClick:e.withModifiers(u,["self"]),onClose:E[2]||(E[2]=e.withModifiers(()=>{},["prevent"])),onKeydown:e.withKeys(d,["escape"])},[e.createElementVNode("div",{class:e.normalizeClass(["tide-modal-body",e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).BORDER.RADIUS.ONE,e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).OVERFLOW.XY.HIDDEN,e.unref(t).POSITION.ABSOLUTE,e.unref(t).POSITIONING.BOTTOM,e.unref(t).SHADOW.TOP,e.unref(t).WIDTH.FULL,e.unref(t).WIDTH.MAX_FULL,e.unref(t).withBreakpoint([e.unref(t).SHADOW.BOTTOM],e.unref(ot).SM)])},[e.createElementVNode("header",{class:e.normalizeClass(["tide-modal-header",e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.BOTTOM.ONE,e.unref(t).BORDER.COLOR.LOW,e.unref(t).DISPLAY.FLEX,e.unref(t).GAP.HALF,e.unref(t).ISOLATION.ISOLATE,e.unref(t).PADDING.Y.ONE,e.unref(t).POSITION.RELATIVE,e.unref(t).Z_INDEX.ONE])},[f.isBackButton?(e.openBlock(),e.createBlock(k,{key:0,icon:e.unref(h).CHEVRON_LEFT,priority:e.unref(_).QUATERNARY,onClick:E[0]||(E[0]=O=>n("back")),title:"Back"},null,8,["icon","priority"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).FONT.ROLE.HEADLINE_2]),textContent:e.toDisplayString(f.title)},null,10,zn),f.isDismissible?(e.openBlock(),e.createBlock(k,{key:1,class:e.normalizeClass([e.unref(t).FLEX.GROW.OFF,e.unref(t).FLEX.SHRINK.OFF,e.unref(t).MARGIN.LEFT.AUTO]),icon:e.unref(h).CLOSE,priority:e.unref(_).QUATERNARY,onClick:E[1]||(E[1]=O=>n("close"))},null,8,["class","icon","priority"])):e.createCommentVNode("",!0)],2),e.createElementVNode("div",{class:e.normalizeClass(["tide-modal-content",e.unref(t).DISPLAY.GRID,e.unref(t).ISOLATION.ISOLATE,e.unref(t).OVERFLOW.X.HIDDEN,e.unref(t).OVERFLOW.Y.AUTO,e.unref(t).PADDING.Y.TWO,e.unref(t).WIDTH.FULL]),ref_key:"modalContent",ref:s},[e.renderSlot(f.$slots,"default",{},void 0,!0)],2),f.$slots.footer?(e.openBlock(),e.createElementBlock("footer",{key:0,class:e.normalizeClass(["tide-modal-footer",e.unref(t).AXIS1.END,e.unref(t).DISPLAY.FLEX,e.unref(t).GAP.TWO,e.unref(t).ISOLATION.ISOLATE,e.unref(t).PADDING.Y.ONE,e.unref(t).SHADOW.TOP])},[e.renderSlot(f.$slots,"footer",{},void 0,!0)],2)):e.createCommentVNode("",!0)],2)],46,Wn))}}),qn=S(Xn,[["__scopeId","data-v-d61edad9"]]),$n=e.defineComponent({__name:"TidePagination",props:{pageCurrent:{default:1},pageTotal:{default:1}},emits:["change"],setup(o,{emit:n}){const r=o,s=e.ref(r.pageCurrent),i=e.computed(()=>new Array(r.pageTotal).fill("").map((l,a)=>a+1)),c=l=>{s.value=l,n("change",event,l)};return(l,a)=>(e.openBlock(),e.createElementBlock("section",{class:e.normalizeClass(["tide-pagination",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).WIDTH.FULL])},[e.createVNode(k,{disabled:s.value===1,icon:e.unref(h).CHEVRON_LEFT,priority:e.unref(_).QUATERNARY,onClick:a[0]||(a[0]=u=>c(s.value-1))},null,8,["disabled","icon","priority"]),e.createElementVNode("ul",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).LIST_BULLETS.OFF])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,u=>(e.openBlock(),e.createElementBlock("li",{key:u},[e.createVNode(et,{disabled:s.value===u,label:u,priority:e.unref(_).QUATERNARY,onClick:d=>c(u)},null,8,["disabled","label","priority","onClick"])]))),128))],2),e.createVNode(k,{disabled:s.value===i.value[i.value.length-1],icon:e.unref(h).CHEVRON_RIGHT,priority:e.unref(_).QUATERNARY,onClick:a[1]||(a[1]=u=>c(s.value+1))},null,8,["disabled","icon","priority"])],2))}}),Kn=["top","right","bottom","left"],Ve=["start","end"],He=Kn.reduce((o,n)=>o.concat(n,n+"-"+Ve[0],n+"-"+Ve[1]),[]),ve=Math.min,Z=Math.max,Oe=Math.round,fe=Math.floor,Y=o=>({x:o,y:o}),Qn={left:"right",right:"left",bottom:"top",top:"bottom"},Zn={start:"end",end:"start"};function Me(o,n,r){return Z(o,ve(n,r))}function pe(o,n){return typeof o=="function"?o(n):o}function ie(o){return o.split("-")[0]}function $(o){return o.split("-")[1]}function it(o){return o==="x"?"y":"x"}function lt(o){return o==="y"?"height":"width"}function Ae(o){return["top","bottom"].includes(ie(o))?"y":"x"}function at(o){return it(Ae(o))}function jn(o,n,r){r===void 0&&(r=!1);const s=$(o),i=at(o),c=lt(i);let l=i==="x"?s===(r?"end":"start")?"right":"left":s==="start"?"bottom":"top";return n.reference[c]>n.floating[c]&&(l=xe(l)),[l,xe(l)]}function Jn(o){return o.replace(/start|end/g,n=>Zn[n])}function xe(o){return o.replace(/left|right|bottom|top/g,n=>Qn[n])}function eo(o){return{top:0,right:0,bottom:0,left:0,...o}}function to(o){return typeof o!="number"?eo(o):{top:o,right:o,bottom:o,left:o}}function Le(o){const{x:n,y:r,width:s,height:i}=o;return{width:s,height:i,top:r,left:n,right:n+s,bottom:r+i,x:n,y:r}}function Ye(o,n,r){let{reference:s,floating:i}=o;const c=Ae(n),l=at(n),a=lt(l),u=ie(n),d=c==="y",f=s.x+s.width/2-i.width/2,E=s.y+s.height/2-i.height/2,O=s[a]/2-i[a]/2;let m;switch(u){case"top":m={x:f,y:s.y-i.height};break;case"bottom":m={x:f,y:s.y+s.height};break;case"right":m={x:s.x+s.width,y:E};break;case"left":m={x:s.x-i.width,y:E};break;default:m={x:s.x,y:s.y}}switch($(n)){case"start":m[l]-=O*(r&&d?-1:1);break;case"end":m[l]+=O*(r&&d?-1:1);break}return m}const no=async(o,n,r)=>{const{placement:s="bottom",strategy:i="absolute",middleware:c=[],platform:l}=r,a=c.filter(Boolean),u=await(l.isRTL==null?void 0:l.isRTL(n));let d=await l.getElementRects({reference:o,floating:n,strategy:i}),{x:f,y:E}=Ye(d,s,u),O=s,m={},I=0;for(let R=0;R<a.length;R++){const{name:L,fn:p}=a[R],{x:A,y:T,data:g,reset:v}=await p({x:f,y:E,initialPlacement:s,placement:O,strategy:i,middlewareData:m,rects:d,platform:l,elements:{reference:o,floating:n}});f=A??f,E=T??E,m={...m,[L]:{...m[L],...g}},v&&I<=50&&(I++,typeof v=="object"&&(v.placement&&(O=v.placement),v.rects&&(d=v.rects===!0?await l.getElementRects({reference:o,floating:n,strategy:i}):v.rects),{x:f,y:E}=Ye(d,O,u)),R=-1)}return{x:f,y:E,placement:O,strategy:i,middlewareData:m}};async function ct(o,n){var r;n===void 0&&(n={});const{x:s,y:i,platform:c,rects:l,elements:a,strategy:u}=o,{boundary:d="clippingAncestors",rootBoundary:f="viewport",elementContext:E="floating",altBoundary:O=!1,padding:m=0}=pe(n,o),I=to(m),L=a[O?E==="floating"?"reference":"floating":E],p=Le(await c.getClippingRect({element:(r=await(c.isElement==null?void 0:c.isElement(L)))==null||r?L:L.contextElement||await(c.getDocumentElement==null?void 0:c.getDocumentElement(a.floating)),boundary:d,rootBoundary:f,strategy:u})),A=E==="floating"?{x:s,y:i,width:l.floating.width,height:l.floating.height}:l.reference,T=await(c.getOffsetParent==null?void 0:c.getOffsetParent(a.floating)),g=await(c.isElement==null?void 0:c.isElement(T))?await(c.getScale==null?void 0:c.getScale(T))||{x:1,y:1}:{x:1,y:1},v=Le(c.convertOffsetParentRelativeRectToViewportRelativeRect?await c.convertOffsetParentRelativeRectToViewportRelativeRect({elements:a,rect:A,offsetParent:T,strategy:u}):A);return{top:(p.top-v.top+I.top)/g.y,bottom:(v.bottom-p.bottom+I.bottom)/g.y,left:(p.left-v.left+I.left)/g.x,right:(v.right-p.right+I.right)/g.x}}function oo(o,n,r){return(o?[...r.filter(i=>$(i)===o),...r.filter(i=>$(i)!==o)]:r.filter(i=>ie(i)===i)).filter(i=>o?$(i)===o||(n?Jn(i)!==i:!1):!0)}const ro=function(o){return o===void 0&&(o={}),{name:"autoPlacement",options:o,async fn(n){var r,s,i;const{rects:c,middlewareData:l,placement:a,platform:u,elements:d}=n,{crossAxis:f=!1,alignment:E,allowedPlacements:O=He,autoAlignment:m=!0,...I}=pe(o,n),R=E!==void 0||O===He?oo(E||null,m,O):O,L=await ct(n,I),p=((r=l.autoPlacement)==null?void 0:r.index)||0,A=R[p];if(A==null)return{};const T=jn(A,c,await(u.isRTL==null?void 0:u.isRTL(d.floating)));if(a!==A)return{reset:{placement:R[0]}};const g=[L[ie(A)],L[T[0]],L[T[1]]],v=[...((s=l.autoPlacement)==null?void 0:s.overflows)||[],{placement:A,overflows:g}],B=R[p+1];if(B)return{data:{index:p+1,overflows:v},reset:{placement:B}};const N=v.map(P=>{const w=$(P.placement);return[P.placement,w&&f?P.overflows.slice(0,2).reduce((X,ee)=>X+ee,0):P.overflows[0],P.overflows]}).sort((P,w)=>P[1]-w[1]),b=((i=N.filter(P=>P[2].slice(0,$(P[0])?2:3).every(w=>w<=0))[0])==null?void 0:i[0])||N[0][0];return b!==a?{data:{index:p+1,overflows:v},reset:{placement:b}}:{}}}};async function so(o,n){const{placement:r,platform:s,elements:i}=o,c=await(s.isRTL==null?void 0:s.isRTL(i.floating)),l=ie(r),a=$(r),u=Ae(r)==="y",d=["left","top"].includes(l)?-1:1,f=c&&u?-1:1,E=pe(n,o);let{mainAxis:O,crossAxis:m,alignmentAxis:I}=typeof E=="number"?{mainAxis:E,crossAxis:0,alignmentAxis:null}:{mainAxis:E.mainAxis||0,crossAxis:E.crossAxis||0,alignmentAxis:E.alignmentAxis};return a&&typeof I=="number"&&(m=a==="end"?I*-1:I),u?{x:m*f,y:O*d}:{x:O*d,y:m*f}}const io=function(o){return o===void 0&&(o=0),{name:"offset",options:o,async fn(n){var r,s;const{x:i,y:c,placement:l,middlewareData:a}=n,u=await so(n,o);return l===((r=a.offset)==null?void 0:r.placement)&&(s=a.arrow)!=null&&s.alignmentOffset?{}:{x:i+u.x,y:c+u.y,data:{...u,placement:l}}}}},lo=function(o){return o===void 0&&(o={}),{name:"shift",options:o,async fn(n){const{x:r,y:s,placement:i}=n,{mainAxis:c=!0,crossAxis:l=!1,limiter:a={fn:L=>{let{x:p,y:A}=L;return{x:p,y:A}}},...u}=pe(o,n),d={x:r,y:s},f=await ct(n,u),E=Ae(ie(i)),O=it(E);let m=d[O],I=d[E];if(c){const L=O==="y"?"top":"left",p=O==="y"?"bottom":"right",A=m+f[L],T=m-f[p];m=Me(A,m,T)}if(l){const L=E==="y"?"top":"left",p=E==="y"?"bottom":"right",A=I+f[L],T=I-f[p];I=Me(A,I,T)}const R=a.fn({...n,[O]:m,[E]:I});return{...R,data:{x:R.x-r,y:R.y-s,enabled:{[O]:c,[E]:l}}}}}};function Ie(){return typeof window<"u"}function J(o){return Pe(o)?(o.nodeName||"").toLowerCase():"#document"}function U(o){var n;return(o==null||(n=o.ownerDocument)==null?void 0:n.defaultView)||window}function z(o){var n;return(n=(Pe(o)?o.ownerDocument:o.document)||window.document)==null?void 0:n.documentElement}function Pe(o){return Ie()?o instanceof Node||o instanceof U(o).Node:!1}function H(o){return Ie()?o instanceof Element||o instanceof U(o).Element:!1}function W(o){return Ie()?o instanceof HTMLElement||o instanceof U(o).HTMLElement:!1}function We(o){return!Ie()||typeof ShadowRoot>"u"?!1:o instanceof ShadowRoot||o instanceof U(o).ShadowRoot}function de(o){const{overflow:n,overflowX:r,overflowY:s,display:i}=M(o);return/auto|scroll|overlay|hidden|clip/.test(n+s+r)&&!["inline","contents"].includes(i)}function ao(o){return["table","td","th"].includes(J(o))}function Te(o){return[":popover-open",":modal"].some(n=>{try{return o.matches(n)}catch{return!1}})}function be(o){const n=_e(),r=H(o)?M(o):o;return["transform","translate","scale","rotate","perspective"].some(s=>r[s]?r[s]!=="none":!1)||(r.containerType?r.containerType!=="normal":!1)||!n&&(r.backdropFilter?r.backdropFilter!=="none":!1)||!n&&(r.filter?r.filter!=="none":!1)||["transform","translate","scale","rotate","perspective","filter"].some(s=>(r.willChange||"").includes(s))||["paint","layout","strict","content"].some(s=>(r.contain||"").includes(s))}function co(o){let n=K(o);for(;W(n)&&!se(n);){if(be(n))return n;if(Te(n))return null;n=K(n)}return null}function _e(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}function se(o){return["html","body","#document"].includes(J(o))}function M(o){return U(o).getComputedStyle(o)}function ge(o){return H(o)?{scrollLeft:o.scrollLeft,scrollTop:o.scrollTop}:{scrollLeft:o.scrollX,scrollTop:o.scrollY}}function K(o){if(J(o)==="html")return o;const n=o.assignedSlot||o.parentNode||We(o)&&o.host||z(o);return We(n)?n.host:n}function ut(o){const n=K(o);return se(n)?o.ownerDocument?o.ownerDocument.body:o.body:W(n)&&de(n)?n:ut(n)}function ue(o,n,r){var s;n===void 0&&(n=[]),r===void 0&&(r=!0);const i=ut(o),c=i===((s=o.ownerDocument)==null?void 0:s.body),l=U(i);if(c){const a=Fe(l);return n.concat(l,l.visualViewport||[],de(i)?i:[],a&&r?ue(a):[])}return n.concat(i,ue(i,[],r))}function Fe(o){return o.parent&&Object.getPrototypeOf(o.parent)?o.frameElement:null}function dt(o){const n=M(o);let r=parseFloat(n.width)||0,s=parseFloat(n.height)||0;const i=W(o),c=i?o.offsetWidth:r,l=i?o.offsetHeight:s,a=Oe(r)!==c||Oe(s)!==l;return a&&(r=c,s=l),{width:r,height:s,$:a}}function Ue(o){return H(o)?o:o.contextElement}function re(o){const n=Ue(o);if(!W(n))return Y(1);const r=n.getBoundingClientRect(),{width:s,height:i,$:c}=dt(n);let l=(c?Oe(r.width):r.width)/s,a=(c?Oe(r.height):r.height)/i;return(!l||!Number.isFinite(l))&&(l=1),(!a||!Number.isFinite(a))&&(a=1),{x:l,y:a}}const uo=Y(0);function ft(o){const n=U(o);return!_e()||!n.visualViewport?uo:{x:n.visualViewport.offsetLeft,y:n.visualViewport.offsetTop}}function fo(o,n,r){return n===void 0&&(n=!1),!r||n&&r!==U(o)?!1:n}function j(o,n,r,s){n===void 0&&(n=!1),r===void 0&&(r=!1);const i=o.getBoundingClientRect(),c=Ue(o);let l=Y(1);n&&(s?H(s)&&(l=re(s)):l=re(o));const a=fo(c,r,s)?ft(c):Y(0);let u=(i.left+a.x)/l.x,d=(i.top+a.y)/l.y,f=i.width/l.x,E=i.height/l.y;if(c){const O=U(c),m=s&&H(s)?U(s):s;let I=O,R=Fe(I);for(;R&&s&&m!==I;){const L=re(R),p=R.getBoundingClientRect(),A=M(R),T=p.left+(R.clientLeft+parseFloat(A.paddingLeft))*L.x,g=p.top+(R.clientTop+parseFloat(A.paddingTop))*L.y;u*=L.x,d*=L.y,f*=L.x,E*=L.y,u+=T,d+=g,I=U(R),R=Fe(I)}}return Le({width:f,height:E,x:u,y:d})}function ke(o,n){const r=ge(o).scrollLeft;return n?n.left+r:j(z(o)).left+r}function Et(o,n,r){r===void 0&&(r=!1);const s=o.getBoundingClientRect(),i=s.left+n.scrollLeft-(r?0:ke(o,s)),c=s.top+n.scrollTop;return{x:i,y:c}}function Eo(o){let{elements:n,rect:r,offsetParent:s,strategy:i}=o;const c=i==="fixed",l=z(s),a=n?Te(n.floating):!1;if(s===l||a&&c)return r;let u={scrollLeft:0,scrollTop:0},d=Y(1);const f=Y(0),E=W(s);if((E||!E&&!c)&&((J(s)!=="body"||de(l))&&(u=ge(s)),W(s))){const m=j(s);d=re(s),f.x=m.x+s.clientLeft,f.y=m.y+s.clientTop}const O=l&&!E&&!c?Et(l,u,!0):Y(0);return{width:r.width*d.x,height:r.height*d.y,x:r.x*d.x-u.scrollLeft*d.x+f.x+O.x,y:r.y*d.y-u.scrollTop*d.y+f.y+O.y}}function mo(o){return Array.from(o.getClientRects())}function vo(o){const n=z(o),r=ge(o),s=o.ownerDocument.body,i=Z(n.scrollWidth,n.clientWidth,s.scrollWidth,s.clientWidth),c=Z(n.scrollHeight,n.clientHeight,s.scrollHeight,s.clientHeight);let l=-r.scrollLeft+ke(o);const a=-r.scrollTop;return M(s).direction==="rtl"&&(l+=Z(n.clientWidth,s.clientWidth)-i),{width:i,height:c,x:l,y:a}}function Oo(o,n){const r=U(o),s=z(o),i=r.visualViewport;let c=s.clientWidth,l=s.clientHeight,a=0,u=0;if(i){c=i.width,l=i.height;const d=_e();(!d||d&&n==="fixed")&&(a=i.offsetLeft,u=i.offsetTop)}return{width:c,height:l,x:a,y:u}}function Lo(o,n){const r=j(o,!0,n==="fixed"),s=r.top+o.clientTop,i=r.left+o.clientLeft,c=W(o)?re(o):Y(1),l=o.clientWidth*c.x,a=o.clientHeight*c.y,u=i*c.x,d=s*c.y;return{width:l,height:a,x:u,y:d}}function ze(o,n,r){let s;if(n==="viewport")s=Oo(o,r);else if(n==="document")s=vo(z(o));else if(H(n))s=Lo(n,r);else{const i=ft(o);s={x:n.x-i.x,y:n.y-i.y,width:n.width,height:n.height}}return Le(s)}function mt(o,n){const r=K(o);return r===n||!H(r)||se(r)?!1:M(r).position==="fixed"||mt(r,n)}function Ro(o,n){const r=n.get(o);if(r)return r;let s=ue(o,[],!1).filter(a=>H(a)&&J(a)!=="body"),i=null;const c=M(o).position==="fixed";let l=c?K(o):o;for(;H(l)&&!se(l);){const a=M(l),u=be(l);!u&&a.position==="fixed"&&(i=null),(c?!u&&!i:!u&&a.position==="static"&&!!i&&["absolute","fixed"].includes(i.position)||de(l)&&!u&&mt(o,l))?s=s.filter(f=>f!==l):i=a,l=K(l)}return n.set(o,s),s}function po(o){let{element:n,boundary:r,rootBoundary:s,strategy:i}=o;const l=[...r==="clippingAncestors"?Te(n)?[]:Ro(n,this._c):[].concat(r),s],a=l[0],u=l.reduce((d,f)=>{const E=ze(n,f,i);return d.top=Z(E.top,d.top),d.right=ve(E.right,d.right),d.bottom=ve(E.bottom,d.bottom),d.left=Z(E.left,d.left),d},ze(n,a,i));return{width:u.right-u.left,height:u.bottom-u.top,x:u.left,y:u.top}}function Ao(o){const{width:n,height:r}=dt(o);return{width:n,height:r}}function Io(o,n,r){const s=W(n),i=z(n),c=r==="fixed",l=j(o,!0,c,n);let a={scrollLeft:0,scrollTop:0};const u=Y(0);if(s||!s&&!c)if((J(n)!=="body"||de(i))&&(a=ge(n)),s){const O=j(n,!0,c,n);u.x=O.x+n.clientLeft,u.y=O.y+n.clientTop}else i&&(u.x=ke(i));const d=i&&!s&&!c?Et(i,a):Y(0),f=l.left+a.scrollLeft-u.x-d.x,E=l.top+a.scrollTop-u.y-d.y;return{x:f,y:E,width:l.width,height:l.height}}function he(o){return M(o).position==="static"}function Xe(o,n){if(!W(o)||M(o).position==="fixed")return null;if(n)return n(o);let r=o.offsetParent;return z(o)===r&&(r=r.ownerDocument.body),r}function vt(o,n){const r=U(o);if(Te(o))return r;if(!W(o)){let i=K(o);for(;i&&!se(i);){if(H(i)&&!he(i))return i;i=K(i)}return r}let s=Xe(o,n);for(;s&&ao(s)&&he(s);)s=Xe(s,n);return s&&se(s)&&he(s)&&!be(s)?r:s||co(o)||r}const To=async function(o){const n=this.getOffsetParent||vt,r=this.getDimensions,s=await r(o.floating);return{reference:Io(o.reference,await n(o.floating),o.strategy),floating:{x:0,y:0,width:s.width,height:s.height}}};function go(o){return M(o).direction==="rtl"}const No={convertOffsetParentRelativeRectToViewportRelativeRect:Eo,getDocumentElement:z,getClippingRect:po,getOffsetParent:vt,getElementRects:To,getClientRects:mo,getDimensions:Ao,getScale:re,isElement:H,isRTL:go};function Ot(o,n){return o.x===n.x&&o.y===n.y&&o.width===n.width&&o.height===n.height}function ho(o,n){let r=null,s;const i=z(o);function c(){var a;clearTimeout(s),(a=r)==null||a.disconnect(),r=null}function l(a,u){a===void 0&&(a=!1),u===void 0&&(u=1),c();const d=o.getBoundingClientRect(),{left:f,top:E,width:O,height:m}=d;if(a||n(),!O||!m)return;const I=fe(E),R=fe(i.clientWidth-(f+O)),L=fe(i.clientHeight-(E+m)),p=fe(f),T={rootMargin:-I+"px "+-R+"px "+-L+"px "+-p+"px",threshold:Z(0,ve(1,u))||1};let g=!0;function v(B){const N=B[0].intersectionRatio;if(N!==u){if(!g)return l();N?l(!1,N):s=setTimeout(()=>{l(!1,1e-7)},1e3)}N===1&&!Ot(d,o.getBoundingClientRect())&&l(),g=!1}try{r=new IntersectionObserver(v,{...T,root:i.ownerDocument})}catch{r=new IntersectionObserver(v,T)}r.observe(o)}return l(!0),c}function Co(o,n,r,s){s===void 0&&(s={});const{ancestorScroll:i=!0,ancestorResize:c=!0,elementResize:l=typeof ResizeObserver=="function",layoutShift:a=typeof IntersectionObserver=="function",animationFrame:u=!1}=s,d=Ue(o),f=i||c?[...d?ue(d):[],...ue(n)]:[];f.forEach(p=>{i&&p.addEventListener("scroll",r,{passive:!0}),c&&p.addEventListener("resize",r)});const E=d&&a?ho(d,r):null;let O=-1,m=null;l&&(m=new ResizeObserver(p=>{let[A]=p;A&&A.target===d&&m&&(m.unobserve(n),cancelAnimationFrame(O),O=requestAnimationFrame(()=>{var T;(T=m)==null||T.observe(n)})),r()}),d&&!u&&m.observe(d),m.observe(n));let I,R=u?j(o):null;u&&L();function L(){const p=j(o);R&&!Ot(R,p)&&r(),R=p,I=requestAnimationFrame(L)}return r(),()=>{var p;f.forEach(A=>{i&&A.removeEventListener("scroll",r),c&&A.removeEventListener("resize",r)}),E==null||E(),(p=m)==null||p.disconnect(),m=null,u&&cancelAnimationFrame(I)}}const qe=io,$e=ro,Ke=lo,So=(o,n,r)=>{const s=new Map,i={platform:No,...r},c={...i.platform,_c:s};return no(o,n,{...i,platform:c})};function Fo(o){return o!=null&&typeof o=="object"&&"$el"in o}function Qe(o){if(Fo(o)){const n=o.$el;return Pe(n)&&J(n)==="#comment"?null:n}return o}function ae(o){return typeof o=="function"?o():e.unref(o)}function Lt(o){return typeof window>"u"?1:(o.ownerDocument.defaultView||window).devicePixelRatio||1}function Ze(o,n){const r=Lt(o);return Math.round(n*r)/r}function Do(o,n,r){r===void 0&&(r={});const s=r.whileElementsMounted,i=e.computed(()=>{var N;return(N=ae(r.open))!=null?N:!0}),c=e.computed(()=>ae(r.middleware)),l=e.computed(()=>{var N;return(N=ae(r.placement))!=null?N:"bottom"}),a=e.computed(()=>{var N;return(N=ae(r.strategy))!=null?N:"absolute"}),u=e.computed(()=>{var N;return(N=ae(r.transform))!=null?N:!0}),d=e.computed(()=>Qe(o.value)),f=e.computed(()=>Qe(n.value)),E=e.ref(0),O=e.ref(0),m=e.ref(a.value),I=e.ref(l.value),R=e.shallowRef({}),L=e.ref(!1),p=e.computed(()=>{const N={position:m.value,left:"0",top:"0"};if(!f.value)return N;const C=Ze(f.value,E.value),b=Ze(f.value,O.value);return u.value?{...N,transform:"translate("+C+"px, "+b+"px)",...Lt(f.value)>=1.5&&{willChange:"transform"}}:{position:m.value,left:C+"px",top:b+"px"}});let A;function T(){if(d.value==null||f.value==null)return;const N=i.value;So(d.value,f.value,{middleware:c.value,placement:l.value,strategy:a.value}).then(C=>{E.value=C.x,O.value=C.y,m.value=C.strategy,I.value=C.placement,R.value=C.middlewareData,L.value=N!==!1})}function g(){typeof A=="function"&&(A(),A=void 0)}function v(){if(g(),s===void 0){T();return}if(d.value!=null&&f.value!=null){A=s(d.value,f.value,T);return}}function B(){i.value||(L.value=!1)}return e.watch([c,l,a,i],T,{flush:"sync"}),e.watch([d,f],v,{flush:"sync"}),e.watch(i,B,{flush:"sync"}),e.getCurrentScope()&&e.onScopeDispose(g),{x:e.shallowReadonly(E),y:e.shallowReadonly(O),strategy:e.shallowReadonly(m),placement:e.shallowReadonly(I),middlewareData:e.shallowReadonly(R),isPositioned:e.shallowReadonly(L),floatingStyles:p,update:T}}const Bo=(o,n)=>!(Array.isArray(n)?n:[n]).some(s=>s.contains(o.target)),yo=e.defineComponent({__name:"TidePopover",props:{anchorId:{},offset:{default:16}},setup(o){const n=o,r=e.ref(null),s=e.ref(null),i=e.ref(null),c=e.ref(!1),l=e.ref(!1),a=e.ref([$e(),qe({mainAxis:n.offset}),Ke({padding:16})]),u=e.computed(()=>c.value||l.value),{floatingStyles:d}=Do(r,s,{middleware:a,strategy:"fixed",whileElementsMounted:Co}),f=g=>{!r.value||!s.value||Bo(g,[r.value,s.value])&&(l.value=!1,g.preventDefault(),g.stopImmediatePropagation())},E=()=>{c.value=!0},O=()=>{c.value=!1},m=g=>{g.preventDefault(),l.value?(l.value=!1,c.value=!1):l.value=!0},I=()=>{if(!r.value)return null;r.value.addEventListener("mouseover",E),r.value.addEventListener("mouseleave",O),r.value.addEventListener("click",m)},R=()=>{if(!r.value)return null;r.value.removeEventListener("mouseover",E),r.value.removeEventListener("mouseleave",O),r.value.removeEventListener("click",m)},L=g=>{g.key==="Escape"&&(l.value=!1)},p=()=>{i.value&&(i.value.addEventListener("click",f,!0),i.value.addEventListener("keydown",L))},A=()=>{i.value&&(i.value.removeEventListener("click",f,!0),i.value.removeEventListener("keydown",L))},T=()=>{r.value=document.getElementById(n.anchorId)};return e.watch(()=>l.value,g=>{g?p():A()}),e.watch(()=>n.anchorId,()=>{R(),T(),I()}),e.watchEffect(()=>{a.value=[$e(),qe({mainAxis:n.offset}),Ke({padding:16})]}),e.onBeforeMount(()=>{st()}),e.onMounted(()=>{T(),i.value=document.documentElement,I()}),e.onUnmounted(()=>{R()}),(g,v)=>(e.openBlock(),e.createBlock(e.Teleport,{to:`#${e.unref(me)}`},[e.createVNode(e.Transition,null,{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("div",{class:e.normalizeClass(["tide-popover",e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).BORDER.COLOR.LOW,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).FONT.ROLE.BODY_2,e.unref(t).PADDING.FULL.ONE,e.unref(t).SHADOW.BOTTOM]),ref_key:"floating",ref:s,style:e.normalizeStyle({...e.unref(d)})},[e.renderSlot(g.$slots,"default",{},void 0,!0)],6),[[e.vShow,u.value]])]),_:3})],8,["to"]))}}),Po=S(yo,[["__scopeId","data-v-508322dc"]]),bo={class:"tide-seo-links"},_o=["href","target"],Uo=e.defineComponent({__name:"TideSeoLinks",props:{heading:{default:""},links:{}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createElementBlock("section",bo,[e.createElementVNode("h2",{class:e.normalizeClass([e.unref(t).MARGIN.BOTTOM.HALF])},e.toDisplayString(n.heading),3),e.createElementVNode("ul",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.WRAP,e.unref(t).GAP.TWO,e.unref(t).LIST_BULLETS.OFF])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.links,i=>(e.openBlock(),e.createElementBlock("li",{class:e.normalizeClass(["tide-seo-link",e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.QUARTER,e.unref(t).FONT.ROLE.BODY_2]),key:i.label},[e.createElementVNode("a",{class:e.normalizeClass([e.unref(t).UNDERLINE.REST.OFF]),href:i.url,target:i.isNewTab?e.unref(V).BLANK:e.unref(V).SELF},e.toDisplayString(i.label),11,_o)],2))),128))],2)]))}}),ko=S(Uo,[["__scopeId","data-v-e655eb08"]]),wo=["onClick","onKeydown"],Go=e.defineComponent({__name:"TideSheet",props:{isOpen:{type:Boolean},isBackButton:{type:Boolean}},emits:["back","close"],setup(o,{emit:n}){const r=o,s=e.ref(null),i=()=>{var u;(u=s.value)==null||u.showModal()},c=()=>{var u;(u=s.value)==null||u.close()},l=()=>{n("close")},a=u=>{u.preventDefault(),n("close")};return e.watch(()=>r.isOpen,u=>{s.value&&(u?i():c(),rt(u))}),e.onBeforeMount(()=>{st()}),e.onMounted(()=>{r.isOpen&&i()}),(u,d)=>(e.openBlock(),e.createBlock(e.Teleport,{to:`#${e.unref(me)}`},[e.createElementVNode("dialog",{class:e.normalizeClass(["tide-sheet",e.unref(t).BG.INITIAL,e.unref(t).HEIGHT.FULL,e.unref(t).WIDTH.FULL,e.unref(t).OVERFLOW.XY.HIDDEN]),ref_key:"dialogElement",ref:s,onClick:e.withModifiers(l,["self"]),onClose:d[2]||(d[2]=e.withModifiers(()=>{},["prevent"])),onKeydown:e.withKeys(a,["escape"])},[e.createElementVNode("div",{class:e.normalizeClass(["tide-sheet-body",e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).HEIGHT.FULL,e.unref(t).OVERFLOW.XY.HIDDEN,e.unref(t).WIDTH.FULL])},[e.createElementVNode("header",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).ISOLATION.ISOLATE,e.unref(t).PADDING.TOP.ONE,e.unref(t).PADDING.X.ONE,e.unref(t).POSITION.RELATIVE,e.unref(t).Z_INDEX.ONE])},[u.isBackButton?(e.openBlock(),e.createBlock(k,{key:0,class:e.normalizeClass([e.unref(t).FLEX.GROW.OFF,e.unref(t).FLEX.SHRINK.OFF]),icon:e.unref(h).CHEVRON_LEFT,priority:e.unref(_).QUATERNARY,onClick:d[0]||(d[0]=f=>n("back"))},null,8,["class","icon","priority"])):e.createCommentVNode("",!0),e.createVNode(k,{class:e.normalizeClass([e.unref(t).FLEX.GROW.OFF,e.unref(t).FLEX.SHRINK.OFF,e.unref(t).MARGIN.LEFT.AUTO]),icon:e.unref(h).CLOSE,priority:e.unref(_).QUATERNARY,onClick:d[1]||(d[1]=f=>n("close"))},null,8,["class","icon","priority"])],2),e.createVNode(Ee),e.createElementVNode("div",{class:e.normalizeClass(["tide-sheet-content",e.unref(t).DISPLAY.GRID,e.unref(t).OVERFLOW.Y.AUTO,e.unref(t).OVERFLOW.X.HIDDEN,e.unref(t).WIDTH.FULL,e.unref(t).PADDING.BOTTOM.ONE,e.unref(t).ISOLATION.ISOLATE])},[e.renderSlot(u.$slots,"default",{},void 0,!0)],2)],2)],42,wo)],8,["to"]))}}),Vo=S(Go,[["__scopeId","data-v-fb4090d4"]]),Ho=["disabled"],Mo=e.defineComponent({__name:"TideSwitch",props:{disabled:{type:Boolean,default:!1},isActive:{type:Boolean,default:!1}},emits:["change"],setup(o,{emit:n}){const r=o,s=()=>{r.disabled||n("change")};return(i,c)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["tide-switch",r.isActive?"active":"",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.FULL,r.isActive?"":e.unref(t).BORDER.COLOR.DEFAULT,e.unref(t).OVERFLOW.XY.HIDDEN,r.isActive?e.unref(t).BG.SECONDARY:e.unref(t).BG.SURFACE.DEFAULT]),disabled:r.disabled,onClick:s,"aria-label":"Switch"},[e.createElementVNode("div",{class:e.normalizeClass(["tide-switch-indicator",e.unref(t).POSITION.RELATIVE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.RADIUS.FULL,r.isActive?e.unref(t).BG.SURFACE.DEFAULT:e.unref(t).BG.SECONDARY])},[e.createVNode(F,{icon:e.unref(h).CHECK,size:e.unref(y).LARGE},null,8,["icon","size"])],2)],10,Ho))}}),xo=S(Mo,[["__scopeId","data-v-9bdb658a"]]),Yo={NUMBER:Re,PHONE:It,PRICE:Tt},oe={alpha:/^[a-zA-Z]+$/g,alphaNumberOrEmpty:/^$|^[a-z0-9]+$/i,alphaSpace:/^[a-zA-Z ]+$/g,email:/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,numberFormatted:/^$|(?=.)^\$?(([1-9][0-9]{0,2}(,[0-9]{3})*)|0)?(\.[0-9]{1,2})?$/,phone:/^(?:\d{3}-\d{3}-\d{4}|\d{1}-\d{3}-\d{3}-\d{4})?$/,price:/(?=.)^\$?(([1-9][0-9]{0,2}(,[0-9]{3})*)|0)?(\.[0-9]{1,2})?$/},Wo={ALPHA_NUMBER_EMPTY:le(oe.alphaNumberOrEmpty),ALPHA_SPACE:le(oe.alphaSpace),EMAIL:le(oe.email),NUMBER:le(oe.numberFormatted),PHONE:le(oe.phone)};exports.ALERT=x;exports.BADGE_COLOR=G;exports.BADGE_COLOR_DETAILS=Se;exports.BADGE_TRUSTED=Je;exports.BREAKPOINT=ot;exports.CSS=t;exports.ELEMENT=D;exports.ELEMENT_TEXT_AS_ICON=q;exports.FORMAT=Yo;exports.FORMAT_REGEX=oe;exports.ICON=h;exports.ICON_REALM=gt;exports.MEDIA=Yn;exports.OBJECT_FIT=Q;exports.ORIENTATION=Ce;exports.PRIORITY=_;exports.REALM=je;exports.SIZE=y;exports.SIZE_BUTTON=te;exports.TARGET=V;exports.TEXT_INPUT_TYPE=ne;exports.TYPE_CARD=ce;exports.TideAccordionItem=Ct;exports.TideAlert=Ft;exports.TideBadge=Dt;exports.TideBadgeTrustedPartner=Bt;exports.TideBadgeVerifiedVehicle=Pt;exports.TideBreadCrumbs=kt;exports.TideButton=wt;exports.TideButtonIcon=k;exports.TideButtonPagination=et;exports.TideButtonSegmented=Mt;exports.TideCard=Yt;exports.TideCarousel=zt;exports.TideChipAction=qt;exports.TideChipFilter=Kt;exports.TideChipInput=Zt;exports.TideColumns=rn;exports.TideDivider=Ee;exports.TideIcon=F;exports.TideImage=tt;exports.TideImageBackground=un;exports.TideIndicator=En;exports.TideInputCheckbox=Ln;exports.TideInputRadio=In;exports.TideInputSelect=bn;exports.TideInputText=wn;exports.TideInputTextarea=Mn;exports.TideLink=xn;exports.TideModal=qn;exports.TidePagination=$n;exports.TidePopover=Po;exports.TideSeoLinks=ko;exports.TideSheet=Vo;exports.TideSwitch=xo;exports.VALIDATOR=Wo;
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlkZS1kZXNpZ24tc3lzdGVtLmNqcyIsInNvdXJjZXMiOlsiLi4vc3JjL3R5cGVzL09yaWVudGF0aW9uLnRzIiwiLi4vc3JjL3R5cGVzL1N0eWxlcy50cyIsIi4uL3NyYy90eXBlcy9SZWFsbS50cyIsIi4uL3NyYy90eXBlcy9TaXplLnRzIiwiLi4vc3JjL3V0aWxpdGllcy9mb3JtYXQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSWNvbi52dWUiLCIuLi9zcmMvdHlwZXMvSWNvbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVBY2NvcmRpb25JdGVtLnZ1ZSIsIi4uL3NyYy90eXBlcy9FbGVtZW50LnRzIiwiLi4vc3JjL3R5cGVzL1ByaW9yaXR5LnRzIiwiLi4vc3JjL3R5cGVzL1RhcmdldC50cyIsIi4uL3NyYy90eXBlcy9BbGVydC50cyIsIi4uL3NyYy90eXBlcy9CYWRnZS50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCdXR0b25TZWdtZW50ZWQudnVlIiwiLi4vc3JjL3R5cGVzL0NhcmQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQ2Fyb3VzZWwudnVlIiwiLi4vc3JjL3R5cGVzL0ltYWdlLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUltYWdlLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dENoZWNrYm94LnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFJhZGlvLnZ1ZSIsIi4uL3NyYy91dGlsaXRpZXMvdmFsaWRhdGlvbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFNlbGVjdC52dWUiLCIuLi9zcmMvdHlwZXMvVGV4dElucHV0LnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0VGV4dC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRUZXh0YXJlYS52dWUiLCIuLi9zcmMvdHlwZXMvQnJlYWtwb2ludC50cyIsIi4uL3NyYy91dGlsaXRpZXMvdmlld3BvcnQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlTW9kYWwudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZVBhZ2luYXRpb24udnVlIiwiLi4vbm9kZV9tb2R1bGVzL0BmbG9hdGluZy11aS91dGlscy9kaXN0L2Zsb2F0aW5nLXVpLnV0aWxzLm1qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvY29yZS9kaXN0L2Zsb2F0aW5nLXVpLmNvcmUubWpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbG9hdGluZy11aS91dGlscy9kaXN0L2Zsb2F0aW5nLXVpLnV0aWxzLmRvbS5tanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL2RvbS9kaXN0L2Zsb2F0aW5nLXVpLmRvbS5tanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL3Z1ZS9kaXN0L2Zsb2F0aW5nLXVpLnZ1ZS5tanMiLCIuLi9zcmMvdXRpbGl0aWVzL2V2ZW50LnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZVBvcG92ZXIudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZVNoZWV0LnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVTd2l0Y2gudnVlIiwiLi4vc3JjL3R5cGVzL0Zvcm1hdHRlZC50cyIsIi4uL3NyYy90eXBlcy9WYWxpZGF0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBPUklFTlRBVElPTiA9IHtcbiAgSE9SSVpPTlRBTDogJ2hvcml6b250YWwnLFxuICBWRVJUSUNBTDogJ3ZlcnRpY2FsJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIE9yaWVudGF0aW9uID0gKHR5cGVvZiBPUklFTlRBVElPTilba2V5b2YgdHlwZW9mIE9SSUVOVEFUSU9OXTtcbiIsIi8qIGVzbGludC1kaXNhYmxlIHZ1ZS9zb3J0LWtleXMgKi9cblxuaW1wb3J0IHR5cGUgeyBCcmVha3BvaW50IH0gZnJvbSAnQC90eXBlcy9CcmVha3BvaW50JztcblxuZXhwb3J0IGNvbnN0IENTUyA9IHtcbiAgd2l0aEJyZWFrcG9pbnQ6ICh1dGlsaXRpZXM6IHN0cmluZ1tdLCBicmVha3BvaW50OiBCcmVha3BvaW50KTogc3RyaW5nW10gPT4ge1xuICAgIHJldHVybiB1dGlsaXRpZXMubWFwKCh1dGlsaXR5KSA9PiBgJHticmVha3BvaW50fS0ke3V0aWxpdHl9YCk7XG4gIH0sXG4gIEFMSUdOOiB7XG4gICAgWDoge1xuICAgICAgQ0VOVEVSOiAndGlkZS10ZXh0LWNlbnRlcicsXG4gICAgICBKVVNUSUZZOiAndGlkZS10ZXh0LWp1c3RpZnknLFxuICAgICAgTEVGVDogJ3RpZGUtdGV4dC1sZWZ0JyxcbiAgICAgIFJJR0hUOiAndGlkZS10ZXh0LXJpZ2h0JyxcbiAgICB9LFxuICAgIFk6IHtcbiAgICAgIElOSVRJQUw6ICd0aWRlLWFsaWduLWluaXRpYWwnLFxuICAgICAgTUlERExFOiAndGlkZS1hbGlnbi1taWRkbGUnLFxuICAgIH0sXG4gIH0sXG4gIEFYSVMxOiB7XG4gICAgQVJPVU5EOiAndGlkZS1heGlzMS1hcm91bmQnLFxuICAgIEJFVFdFRU46ICd0aWRlLWF4aXMxLWJldHdlZW4nLFxuICAgIENFTlRFUjogJ3RpZGUtYXhpczEtY2VudGVyJyxcbiAgICBFTkQ6ICd0aWRlLWF4aXMxLWVuZCcsXG4gICAgU1RBUlQ6ICd0aWRlLWF4aXMxLXN0YXJ0JyxcbiAgfSxcbiAgQVhJUzI6IHtcbiAgICBBUk9VTkQ6ICd0aWRlLWF4aXMyLWFyb3VuZCcsXG4gICAgQ0VOVEVSOiAndGlkZS1heGlzMi1jZW50ZXInLFxuICAgIEVORDogJ3RpZGUtYXhpczItZW5kJyxcbiAgICBTVEFSVDogJ3RpZGUtYXhpczItc3RhcnQnLFxuICAgIFNUUkVUQ0g6ICd0aWRlLWF4aXMyLXN0cmV0Y2gnLFxuICB9LFxuICBCRzoge1xuICAgIEdMT0JBTDoge1xuICAgICAgUFJJTUFSWToge1xuICAgICAgICBFUlJPUjogJ3RpZGUtYmctcHJpbWFyeS1lcnJvcicsXG4gICAgICAgIElORk86ICd0aWRlLWJnLXByaW1hcnktaW5mbycsXG4gICAgICAgIFNVQ0NFU1M6ICd0aWRlLWJnLXByaW1hcnktc3VjY2VzcycsXG4gICAgICAgIFdBUk5JTkc6ICd0aWRlLWJnLXByaW1hcnktd2FybmluZycsXG4gICAgICB9LFxuICAgICAgU1VSRkFDRToge1xuICAgICAgICBFUlJPUjogJ3RpZGUtYmctc3VyZmFjZS1lcnJvcicsXG4gICAgICAgIElORk86ICd0aWRlLWJnLXN1cmZhY2UtaW5mbycsXG4gICAgICAgIFNVQ0NFU1M6ICd0aWRlLWJnLXN1cmZhY2Utc3VjY2VzcycsXG4gICAgICAgIFdBUk5JTkc6ICd0aWRlLWJnLXN1cmZhY2Utd2FybmluZycsXG5cbiAgICAgICAgQkxVRTogJ3RpZGUtYmctc3VyZmFjZS1ibHVlJyxcbiAgICAgICAgR1JFRU46ICd0aWRlLWJnLXN1cmZhY2UtZ3JlZW4nLFxuICAgICAgICBMSU1FOiAndGlkZS1iZy1zdXJmYWNlLWxpbWUnLFxuICAgICAgICBPUkFOR0U6ICd0aWRlLWJnLXN1cmZhY2Utb3JhbmdlJyxcbiAgICAgICAgUFVSUExFOiAndGlkZS1iZy1zdXJmYWNlLXB1cnBsZScsXG4gICAgICAgIFJFRDogJ3RpZGUtYmctc3VyZmFjZS1yZWQnLFxuICAgICAgICBTQUxNT046ICd0aWRlLWJnLXN1cmZhY2Utc2FsbW9uJyxcbiAgICAgICAgVEVBTDogJ3RpZGUtYmctc3VyZmFjZS10ZWFsJyxcbiAgICAgICAgWUVMTE9XOiAndGlkZS1iZy1zdXJmYWNlLXllbGxvdycsXG4gICAgICB9LFxuICAgIH0sXG4gICAgSU5JVElBTDogJ3RpZGUtYmctaW5pdGlhbCcsXG4gICAgQkxVUjogJ3RpZGUtYmctYmx1cicsXG4gICAgUFJJTUFSWTogJ3RpZGUtYmctcHJpbWFyeScsXG4gICAgU0VDT05EQVJZOiAndGlkZS1iZy1zZWNvbmRhcnknLFxuICAgIFNVUkZBQ0U6IHtcbiAgICAgIEFDQ0VOVDogJ3RpZGUtYmctc3VyZmFjZS1hY2NlbnQnLFxuICAgICAgQlJBTkQ6ICd0aWRlLWJnLXN1cmZhY2UtYnJhbmQnLFxuICAgICAgREVGQVVMVDogJ3RpZGUtYmctc3VyZmFjZScsXG4gICAgICBGTE9BVElORzogJ3RpZGUtYmctc3VyZmFjZS1mbG9hdGluZycsXG4gICAgICBHUkFESUVOVDogJ3RpZGUtYmctc3VyZmFjZS1ncmFkaWVudCcsXG4gICAgICBWQVJJQU5UOiAndGlkZS1iZy1zdXJmYWNlLXZhcmlhbnQnLFxuICAgIH0sXG4gICAgVFJBTlNQQVJFTlQ6IHtcbiAgICAgIE9ORV9IVU5EUkVEOiAndGlkZS10cmFuc3BhcmVudC0xMDAnLFxuICAgICAgVFdPX0hVTkRSRUQ6ICd0aWRlLXRyYW5zcGFyZW50LTIwMCcsXG4gICAgICBUSFJFRV9IVU5EUkVEOiAndGlkZS10cmFuc3BhcmVudC0zMDAnLFxuICAgICAgRk9VUl9IVU5EUkVEOiAndGlkZS10cmFuc3BhcmVudC00MDAnLFxuICAgIH0sXG4gIH0sXG4gIEJPUkRFUjoge1xuICAgIENPTE9SOiB7XG4gICAgICBHTE9CQUw6IHtcbiAgICAgICAgRVJST1I6ICd0aWRlLWJvcmRlci1lcnJvcicsXG4gICAgICAgIElORk86ICd0aWRlLWJvcmRlci1pbmZvJyxcbiAgICAgICAgU1VDQ0VTUzogJ3RpZGUtYm9yZGVyLXN1Y2Nlc3MnLFxuICAgICAgICBXQVJOSU5HOiAndGlkZS1ib3JkZXItd2FybmluZycsXG5cbiAgICAgICAgQkxVRTogJ3RpZGUtYm9yZGVyLWJsdWUnLFxuICAgICAgICBHUkVFTjogJ3RpZGUtYm9yZGVyLWdyZWVuJyxcbiAgICAgICAgTElNRTogJ3RpZGUtYm9yZGVyLWxpbWUnLFxuICAgICAgICBPUkFOR0U6ICd0aWRlLWJvcmRlci1vcmFuZ2UnLFxuICAgICAgICBQVVJQTEU6ICd0aWRlLWJvcmRlci1wdXJwbGUnLFxuICAgICAgICBSRUQ6ICd0aWRlLWJvcmRlci1yZWQnLFxuICAgICAgICBTQUxNT046ICd0aWRlLWJvcmRlci1zYWxtb24nLFxuICAgICAgICBURUFMOiAndGlkZS1ib3JkZXItdGVhbCcsXG4gICAgICAgIFlFTExPVzogJ3RpZGUtYm9yZGVyLXllbGxvdycsXG4gICAgICB9LFxuICAgICAgSU5JVElBTDogJ3RpZGUtYm9yZGVyLWNvbG9yLWluaXRpYWwnLFxuICAgICAgREVGQVVMVDogJ3RpZGUtYm9yZGVyJyxcbiAgICAgIEZMT0FUSU5HOiAndGlkZS1ib3JkZXItZmxvYXRpbmcnLFxuICAgICAgSElHSDogJ3RpZGUtYm9yZGVyLWhpZ2gnLFxuICAgICAgTE9XOiAndGlkZS1ib3JkZXItbG93JyxcbiAgICAgIFBSSU1BUlk6ICd0aWRlLWJvcmRlci1wcmltYXJ5JyxcbiAgICB9LFxuICAgIFJBRElVUzoge1xuICAgICAgWkVSTzogJ3RpZGUtcmFkaXVzLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcmFkaXVzLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1yYWRpdXMtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcmFkaXVzLTEnLFxuICAgICAgRlVMTDogJ3RpZGUtcmFkaXVzLWZ1bGwnLFxuICAgIH0sXG4gICAgU1RZTEU6IHtcbiAgICAgIERBU0hFRDogJ3RpZGUtYm9yZGVyLWRhc2hlZCcsXG4gICAgICBTT0xJRDogJ3RpZGUtYm9yZGVyLXNvbGlkJyxcbiAgICB9LFxuICAgIEJPVFRPTToge1xuICAgICAgWkVSTzogJ3RpZGUtYm9yZGVyLWJvdHRvbS0wJyxcbiAgICAgIE9ORTogJ3RpZGUtYm9yZGVyLWJvdHRvbS0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLWJvdHRvbS0yJyxcbiAgICB9LFxuICAgIEZVTEw6IHtcbiAgICAgIFpFUk86ICd0aWRlLWJvcmRlci0wJyxcbiAgICAgIE9ORTogJ3RpZGUtYm9yZGVyLTEnLFxuICAgICAgVFdPOiAndGlkZS1ib3JkZXItMicsXG4gICAgfSxcbiAgICBMRUZUOiB7XG4gICAgICBaRVJPOiAndGlkZS1ib3JkZXItbGVmdC0wJyxcbiAgICAgIE9ORTogJ3RpZGUtYm9yZGVyLWxlZnQtMScsXG4gICAgICBUV086ICd0aWRlLWJvcmRlci1sZWZ0LTInLFxuICAgIH0sXG4gICAgUklHSFQ6IHtcbiAgICAgIFpFUk86ICd0aWRlLWJvcmRlci1yaWdodC0wJyxcbiAgICAgIE9ORTogJ3RpZGUtYm9yZGVyLXJpZ2h0LTEnLFxuICAgICAgVFdPOiAndGlkZS1ib3JkZXItcmlnaHQtMicsXG4gICAgfSxcbiAgICBUT1A6IHtcbiAgICAgIFpFUk86ICd0aWRlLWJvcmRlci10b3AtMCcsXG4gICAgICBPTkU6ICd0aWRlLWJvcmRlci10b3AtMScsXG4gICAgICBUV086ICd0aWRlLWJvcmRlci10b3AtMicsXG4gICAgfSxcbiAgfSxcbiAgQk9YX1NJWklORzoge1xuICAgIEJPUkRFUl9CT1g6ICd0aWRlLWJveC1ib3JkZXInLFxuICAgIENPTlRFTlRfQk9YOiAndGlkZS1ib3gtY29udGVudCcsXG4gIH0sXG4gIEJSRUFLX0lOU0lERToge1xuICAgIEFWT0lEX0NPTFVNTjogJ3RpZGUtYnJlYWstaW5zaWRlLWF2b2lkLWNvbHVtbicsXG4gIH0sXG4gIEJSRUFLX1dPUkQ6IHtcbiAgICBPRkY6ICd0aWRlLWJyZWFrLWluaXRpYWwnLFxuICAgIE9OOiAndGlkZS1icmVhay13b3JkJyxcbiAgfSxcbiAgQ09MVU1OUzoge1xuICAgIElOSVRJQUw6ICd0aWRlLWNvbHVtbnMtaW5pdGlhbCcsXG4gICAgT05FOiAndGlkZS1jb2x1bW5zLTEnLFxuICAgIFRXTzogJ3RpZGUtY29sdW1ucy0yJyxcbiAgICBUSFJFRTogJ3RpZGUtY29sdW1ucy0zJyxcbiAgICBGT1VSOiAndGlkZS1jb2x1bW5zLTQnLFxuICB9LFxuICBDVVJTT1I6IHtcbiAgICBOT1RfQUxMT1dFRDogJ3RpZGUtY3Vyc29yLW5vdC1hbGxvd2VkJyxcbiAgICBQT0lOVEVSOiAndGlkZS1jdXJzb3ItcG9pbnRlcicsXG4gICAgVEVYVDogJ3RpZGUtY3Vyc29yLXRleHQnLFxuICB9LFxuICBESVNQTEFZOiB7XG4gICAgQkxPQ0s6ICd0aWRlLWRpc3BsYXktYmxvY2snLFxuICAgIENPTlRFTlRTOiAndGlkZS1kaXNwbGF5LWNvbnRlbnRzJyxcbiAgICBGTEVYOiAndGlkZS1kaXNwbGF5LWZsZXgnLFxuICAgIEdSSUQ6ICd0aWRlLWRpc3BsYXktZ3JpZCcsXG4gICAgSU5JVElBTDogJ3RpZGUtZGlzcGxheS1pbml0aWFsJyxcbiAgICBJTkxJTkU6ICd0aWRlLWRpc3BsYXktaW5saW5lJyxcbiAgICBJTkxJTkVfQkxPQ0s6ICd0aWRlLWRpc3BsYXktaW5saW5lLWJsb2NrJyxcbiAgICBJTkxJTkVfRkxFWDogJ3RpZGUtZGlzcGxheS1pbmxpbmUtZmxleCcsXG4gICAgTk9ORTogJ3RpZGUtZGlzcGxheS1ub25lJyxcbiAgfSxcbiAgRUxMSVBTSVM6ICd0aWRlLWVsbGlwc2lzJyxcbiAgRkxFWDoge1xuICAgIEJBU0lTOiB7XG4gICAgICBBVVRPOiAndGlkZS1mbGV4LWJhc2lzLWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtZmxleC1iYXNpcy0wJyxcbiAgICB9LFxuICAgIERJUkVDVElPTjoge1xuICAgICAgQ09MVU1OOiAndGlkZS1mbGV4LWNvbHVtbicsXG4gICAgICBDT0xVTU5fUkVWRVJTRTogJ3RpZGUtZmxleC1jb2x1bW4tcmV2ZXJzZScsXG4gICAgICBST1c6ICd0aWRlLWZsZXgtcm93JyxcbiAgICAgIFJPV19SRVZFUlNFOiAndGlkZS1mbGV4LXJvdy1yZXZlcnNlJyxcbiAgICB9LFxuICAgIEdST1c6IHtcbiAgICAgIE9GRjogJ3RpZGUtZ3Jvdy1ub25lJyxcbiAgICAgIE9OOiAndGlkZS1ncm93JyxcbiAgICB9LFxuICAgIFNIUklOSzoge1xuICAgICAgT0ZGOiAndGlkZS1zaHJpbmstbm9uZScsXG4gICAgICBPTjogJ3RpZGUtc2hyaW5rJyxcbiAgICB9LFxuICAgIFdSQVA6ICd0aWRlLWZsZXgtd3JhcCcsXG4gIH0sXG4gIEZPTlQ6IHtcbiAgICBDT0xPUjoge1xuICAgICAgR0xPQkFMOiB7XG4gICAgICAgIEVSUk9SOiAndGlkZS1mb250LWVycm9yJyxcbiAgICAgICAgSU5GTzogJ3RpZGUtZm9udC1pbmZvJyxcbiAgICAgICAgU1VDQ0VTUzogJ3RpZGUtZm9udC1zdWNjZXNzJyxcbiAgICAgICAgV0FSTklORzogJ3RpZGUtZm9udC13YXJuaW5nJyxcblxuICAgICAgICBCTFVFOiAndGlkZS1mb250LWJsdWUnLFxuICAgICAgICBHUkVFTjogJ3RpZGUtZm9udC1ncmVlbicsXG4gICAgICAgIExJTUU6ICd0aWRlLWZvbnQtbGltZScsXG4gICAgICAgIE9SQU5HRTogJ3RpZGUtZm9udC1vcmFuZ2UnLFxuICAgICAgICBQVVJQTEU6ICd0aWRlLWZvbnQtcHVycGxlJyxcbiAgICAgICAgUkVEOiAndGlkZS1mb250LXJlZCcsXG4gICAgICAgIFNBTE1PTjogJ3RpZGUtZm9udC1zYWxtb24nLFxuICAgICAgICBURUFMOiAndGlkZS1mb250LXRlYWwnLFxuICAgICAgICBZRUxMT1c6ICd0aWRlLWZvbnQteWVsbG93JyxcblxuICAgICAgICBQUklNQVJZOiB7XG4gICAgICAgICAgQkxVRTogJ3RpZGUtZm9udC1wcmltYXJ5LWJsdWUnLFxuICAgICAgICAgIEdSRUVOOiAndGlkZS1mb250LXByaW1hcnktZ3JlZW4nLFxuICAgICAgICAgIExJTUU6ICd0aWRlLWZvbnQtcHJpbWFyeS1saW1lJyxcbiAgICAgICAgICBPUkFOR0U6ICd0aWRlLWZvbnQtcHJpbWFyeS1vcmFuZ2UnLFxuICAgICAgICAgIFBVUlBMRTogJ3RpZGUtZm9udC1wcmltYXJ5LXB1cnBsZScsXG4gICAgICAgICAgUkVEOiAndGlkZS1mb250LXByaW1hcnktcmVkJyxcbiAgICAgICAgICBTQUxNT046ICd0aWRlLWZvbnQtcHJpbWFyeS1zYWxtb24nLFxuICAgICAgICAgIFRFQUw6ICd0aWRlLWZvbnQtcHJpbWFyeS10ZWFsJyxcbiAgICAgICAgICBZRUxMT1c6ICd0aWRlLWZvbnQtcHJpbWFyeS15ZWxsb3cnLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIFBSSU1BUlk6ICd0aWRlLWZvbnQtb24tcHJpbWFyeScsXG4gICAgICBTRUNPTkRBUlk6ICd0aWRlLWZvbnQtb24tc2Vjb25kYXJ5JyxcbiAgICAgIFNVUkZBQ0U6IHtcbiAgICAgICAgQlJBTkQ6ICd0aWRlLWZvbnQtb24tc3VyZmFjZS1icmFuZCcsXG4gICAgICAgIERFRkFVTFQ6ICd0aWRlLWZvbnQtb24tc3VyZmFjZScsXG4gICAgICAgIElOVkVSU0U6ICd0aWRlLWZvbnQtb24tc3VyZmFjZS1pbnZlcnNlJyxcbiAgICAgICAgVkFSSUFOVDogJ3RpZGUtZm9udC1vbi1zdXJmYWNlLXZhcmlhbnQnLFxuICAgICAgICBWQVJJQU5UX0lOVkVSU0U6ICd0aWRlLWZvbnQtb24tc3VyZmFjZS12YXJpYW50LWludmVyc2UnLFxuICAgICAgfSxcbiAgICB9LFxuICAgIFJPTEU6IHtcbiAgICAgIERJU1BMQVlfMTogJ3RpZGUtdHlwb2dyYXBoeS1kaXNwbGF5LTEnLFxuICAgICAgSEVBRExJTkVfMTogJ3RpZGUtdHlwb2dyYXBoeS1oZWFkbGluZS0xJyxcbiAgICAgIEhFQURMSU5FXzI6ICd0aWRlLXR5cG9ncmFwaHktaGVhZGxpbmUtMicsXG4gICAgICBIRUFETElORV8zOiAndGlkZS10eXBvZ3JhcGh5LWhlYWRsaW5lLTMnLFxuICAgICAgVElUTEVfMTogJ3RpZGUtdHlwb2dyYXBoeS10aXRsZS0xJyxcbiAgICAgIFRJVExFXzI6ICd0aWRlLXR5cG9ncmFwaHktdGl0bGUtMicsXG4gICAgICBCT0RZXzE6ICd0aWRlLXR5cG9ncmFwaHktYm9keS0xJyxcbiAgICAgIEJPRFlfMjogJ3RpZGUtdHlwb2dyYXBoeS1ib2R5LTInLFxuICAgICAgTEFCRUxfMTogJ3RpZGUtdHlwb2dyYXBoeS1sYWJlbC0xJyxcbiAgICAgIExBQkVMXzFfU0VNSUJPTEQ6ICd0aWRlLXR5cG9ncmFwaHktbGFiZWwtMS1zZW1pYm9sZCcsXG4gICAgICBMQUJFTF8yOiAndGlkZS10eXBvZ3JhcGh5LWxhYmVsLTInLFxuICAgICAgTEFCRUxfMl9TRU1JQk9MRDogJ3RpZGUtdHlwb2dyYXBoeS1sYWJlbC0yLXNlbWlib2xkJyxcbiAgICAgIExBQkVMXzM6ICd0aWRlLXR5cG9ncmFwaHktbGFiZWwtMycsXG4gICAgICBMSU5LXzE6ICd0aWRlLXR5cG9ncmFwaHktbGluay0xJyxcbiAgICAgIExJTktfMjogJ3RpZGUtdHlwb2dyYXBoeS1saW5rLTInLFxuICAgICAgTElOS18zOiAndGlkZS10eXBvZ3JhcGh5LWxpbmstMycsXG4gICAgICBCVVRUT05fMTogJ3RpZGUtdHlwb2dyYXBoeS1idXR0b24tMScsXG4gICAgICBCVVRUT05fMjogJ3RpZGUtdHlwb2dyYXBoeS1idXR0b24tMicsXG4gICAgfSxcbiAgICBTSVpFOiB7XG4gICAgICBUV0VMVkU6ICd0aWRlLWZvbnQtMTInLFxuICAgICAgRk9VUlRFRU46ICd0aWRlLWZvbnQtMTQnLFxuICAgICAgU0lYVEVFTjogJ3RpZGUtZm9udC0xNicsXG4gICAgICBUV0VOVFk6ICd0aWRlLWZvbnQtMjAnLFxuICAgICAgVFdFTlRZX0ZPVVI6ICd0aWRlLWZvbnQtMjQnLFxuICAgICAgVEhJUlRZX1RXTzogJ3RpZGUtZm9udC0zMicsXG4gICAgfSxcbiAgICBXRUlHSFQ6IHtcbiAgICAgIEZPVVJfSFVORFJFRDogJ3RpZGUtZm9udC00MDAnLFxuICAgICAgRklWRV9IVU5EUkVEOiAndGlkZS1mb250LTUwMCcsXG4gICAgICBTSVhfSFVORFJFRDogJ3RpZGUtZm9udC02MDAnLFxuICAgICAgU0VWRU5fSFVORFJFRDogJ3RpZGUtZm9udC03MDAnLFxuICAgIH0sXG4gIH0sXG4gIEdBUDoge1xuICAgIFpFUk86ICd0aWRlLWdhcC0wJyxcbiAgICBRVUFSVEVSOiAndGlkZS1nYXAtMS80JyxcbiAgICBIQUxGOiAndGlkZS1nYXAtMS8yJyxcbiAgICBPTkU6ICd0aWRlLWdhcC0xJyxcbiAgICBUV086ICd0aWRlLWdhcC0yJyxcbiAgICBGT1VSOiAndGlkZS1nYXAtNCcsXG4gIH0sXG4gIEdSSUQ6IHtcbiAgICBGTFVJRDogJ3RpZGUtZmx1aWQnLFxuICAgIElURU06ICd0aWRlLWdyaWQtaXRlbScsXG4gICAgTEFZT1VUOiAndGlkZS1ncmlkLWxheW91dCcsXG4gICAgWEw6ICd0aWRlLWdyaWQteGwnLFxuICB9LFxuICBIRUlHSFQ6IHtcbiAgICBBVVRPOiAndGlkZS1oZWlnaHQtYXV0bycsXG4gICAgWkVSTzogJ3RpZGUtaGVpZ2h0LTAnLFxuICAgIEZVTEw6ICd0aWRlLWhlaWdodC1mdWxsJyxcbiAgICBNQVhfRlVMTDogJ3RpZGUtbWF4LWhlaWdodC1mdWxsJyxcbiAgICBNSU5fWkVSTzogJ3RpZGUtbWluLWhlaWdodC0wJyxcbiAgfSxcbiAgSVNPTEFUSU9OOiB7XG4gICAgSVNPTEFURTogJ3RpZGUtaXNvbGF0ZScsXG4gIH0sXG4gIExJU1RfQlVMTEVUUzoge1xuICAgIE9GRjogJ3RpZGUtbGlzdC1ub25lJyxcbiAgfSxcbiAgTUFSR0lOOiB7XG4gICAgQk9UVE9NOiB7XG4gICAgICBBVVRPOiAndGlkZS1tYXJnaW4tYm90dG9tLWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLWJvdHRvbS0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi1ib3R0b20tMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi1ib3R0b20tMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLWJvdHRvbS0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLWJvdHRvbS0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi1ib3R0b20tNCcsXG4gICAgfSxcbiAgICBGVUxMOiB7XG4gICAgICBaRVJPOiAndGlkZS1tYXJnaW4tMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4tMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4tMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi00JyxcbiAgICB9LFxuICAgIExFRlQ6IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi1sZWZ0LWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLWxlZnQtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4tbGVmdC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLWxlZnQtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLWxlZnQtMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi1sZWZ0LTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLWxlZnQtNCcsXG4gICAgfSxcbiAgICBSSUdIVDoge1xuICAgICAgQVVUTzogJ3RpZGUtbWFyZ2luLXJpZ2h0LWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLXJpZ2h0LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLXJpZ2h0LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4tcmlnaHQtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLXJpZ2h0LTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4tcmlnaHQtMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4tcmlnaHQtNCcsXG4gICAgfSxcbiAgICBUT1A6IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi10b3AtYXV0bycsXG4gICAgICBaRVJPOiAndGlkZS1tYXJnaW4tdG9wLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLXRvcC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLXRvcC0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4tdG9wLTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4tdG9wLTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLXRvcC00JyxcbiAgICB9LFxuICAgIFg6IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi14LWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLXgtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4teC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLXgtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLXgtMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi14LTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLXgtNCcsXG4gICAgfSxcbiAgICBZOiB7XG4gICAgICBaRVJPOiAndGlkZS1tYXJnaW4teS0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi15LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4teS0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4teS0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLXktMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4teS00JyxcbiAgICB9LFxuICB9LFxuICBPQkpFQ1Q6IHtcbiAgICBDRU5URVI6ICd0aWRlLW9iamVjdC1jZW50ZXInLFxuICAgIENPTlRBSU46ICd0aWRlLW9iamVjdC1jb250YWluJyxcbiAgICBDT1ZFUjogJ3RpZGUtb2JqZWN0LWNvdmVyJyxcbiAgICBTQ0FMRV9ET1dOOiAndGlkZS1vYmplY3Qtc2NhbGUtZG93bicsXG4gIH0sXG4gIE9QQUNJVFk6IHtcbiAgICBPRkY6ICd0aWRlLW9wYWNpdHktbm9uZScsXG4gICAgT046ICd0aWRlLW9wYWNpdHknLFxuICB9LFxuICBPVkVSRkxPVzoge1xuICAgIFg6IHtcbiAgICAgIEFVVE86ICd0aWRlLXgtYXV0bycsXG4gICAgICBISURERU46ICd0aWRlLXgtaGlkZGVuJyxcbiAgICAgIFNDUk9MTDogJ3RpZGUteC1zY3JvbGwnLFxuICAgIH0sXG4gICAgWFk6IHtcbiAgICAgIEFVVE86ICd0aWRlLXh5LWF1dG8nLFxuICAgICAgSElEREVOOiAndGlkZS14eS1oaWRkZW4nLFxuICAgIH0sXG4gICAgWToge1xuICAgICAgQVVUTzogJ3RpZGUteS1hdXRvJyxcbiAgICAgIEhJRERFTjogJ3RpZGUteS1oaWRkZW4nLFxuICAgIH0sXG4gIH0sXG4gIFBBRERJTkc6IHtcbiAgICBCT1RUT006IHtcbiAgICAgIFpFUk86ICd0aWRlLXBhZGRpbmctYm90dG9tLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy1ib3R0b20tMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctYm90dG9tLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmctYm90dG9tLTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLWJvdHRvbS0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctYm90dG9tLTQnLFxuICAgIH0sXG4gICAgRlVMTDoge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmctMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctNCcsXG4gICAgfSxcbiAgICBMRUZUOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLWxlZnQtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLWxlZnQtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctbGVmdC0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLWxlZnQtMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmctbGVmdC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctbGVmdC00JyxcbiAgICB9LFxuICAgIFJJR0hUOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLXJpZ2h0LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy1yaWdodC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy1yaWdodC0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLXJpZ2h0LTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLXJpZ2h0LTInLFxuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy1yaWdodC00JyxcbiAgICB9LFxuICAgIFRPUDoge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy10b3AtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLXRvcC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy10b3AtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy10b3AtMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmctdG9wLTInLFxuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy10b3AtNCcsXG4gICAgfSxcbiAgICBYOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLXgtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLXgtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmcteC0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLXgtMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmcteC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmcteC00JyxcbiAgICB9LFxuICAgIFk6IHtcbiAgICAgIFpFUk86ICd0aWRlLXBhZGRpbmcteS0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmcteS0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy15LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmcteS0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy15LTInLFxuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy15LTQnLFxuICAgIH0sXG4gIH0sXG4gIFBPSU5URVJfRVZFTlRTOiB7XG4gICAgT0ZGOiAndGlkZS1wb2ludGVyLWV2ZW50cy1ub25lJyxcbiAgICBPTjogJ3RpZGUtcG9pbnRlci1ldmVudHMnLFxuICB9LFxuICBQT1NJVElPTjoge1xuICAgIEFCU09MVVRFOiAndGlkZS1wb3NpdGlvbi1hYnNvbHV0ZScsXG4gICAgRklYRUQ6ICd0aWRlLXBvc2l0aW9uLWZpeGVkJyxcbiAgICBSRUxBVElWRTogJ3RpZGUtcG9zaXRpb24tcmVsYXRpdmUnLFxuICAgIFNUQVRJQzogJ3RpZGUtcG9zaXRpb24tc3RhdGljJyxcbiAgICBTVElDS1k6ICd0aWRlLXBvc2l0aW9uLXN0aWNreScsXG4gIH0sXG4gIFBPU0lUSU9OSU5HOiB7XG4gICAgQk9UVE9NOiAndGlkZS1ib3R0b20tMCcsXG4gICAgTEVGVDogJ3RpZGUtbGVmdC0wJyxcbiAgICBSSUdIVDogJ3RpZGUtcmlnaHQtMCcsXG4gICAgVE9QOiAndGlkZS10b3AtMCcsXG4gIH0sXG4gIFJBVElPOiB7XG4gICAgT05FX1RPX09ORTogJ3RpZGUtcmF0aW8tMS8xJyxcbiAgICBTSVhURUVOX1RPX05JTkU6ICd0aWRlLXJhdGlvLTE2LzknLFxuICAgIFRIUkVFX1RPX1RXTzogJ3RpZGUtcmF0aW8tMy8yJyxcbiAgfSxcbiAgU0NST0xMQkFSOiB7XG4gICAgT0ZGOiAndGlkZS1zY3JvbGxiYXItbm9uZScsXG4gIH0sXG4gIFNIQURPVzoge1xuICAgIElOSVRJQUw6ICd0aWRlLXNoYWRvdy1pbml0aWFsJyxcbiAgICBCT1RUT006ICd0aWRlLXNoYWRvdy1ib3R0b20nLFxuICAgIFRPUDogJ3RpZGUtc2hhZG93LXRvcCcsXG4gICAgVEVYVDogJ3RpZGUtc2hhZG93LXRleHQnLFxuICB9LFxuICBTTkFQOiB7XG4gICAgT046ICd0aWRlLXNjcm9sbC1zbmFwJyxcbiAgfSxcbiAgU05BUF9BTElHTjoge1xuICAgIFNUQVJUOiAndGlkZS1zY3JvbGwtc25hcC1zdGFydCcsXG4gIH0sXG4gIFNUUklLRVRIUk9VR0g6IHtcbiAgICBPRkY6ICd0aWRlLXN0cmlrZXRocm91Z2gtbm9uZScsXG4gICAgT046ICd0aWRlLXN0cmlrZXRocm91Z2gnLFxuICB9LFxuICBURVhUX1RSQU5TRk9STToge1xuICAgIExPV0VSOiAndGlkZS10ZXh0LXRyYW5zZm9ybS1sb3dlcicsXG4gICAgTk9ORTogJ3RpZGUtdGV4dC10cmFuc2Zvcm0tbm9uZScsXG4gICAgVVBQRVI6ICd0aWRlLXRleHQtdHJhbnNmb3JtLXVwcGVyJyxcbiAgfSxcbiAgVU5ERVJMSU5FOiB7XG4gICAgSE9WRVI6IHtcbiAgICAgIE9OOiAndGlkZS11bmRlcmxpbmUtaG92ZXInLFxuICAgICAgT0ZGOiAndGlkZS11bmRlcmxpbmUtaG92ZXItbm9uZScsXG4gICAgfSxcbiAgICBSRVNUOiB7XG4gICAgICBPTjogJ3RpZGUtdW5kZXJsaW5lJyxcbiAgICAgIE9GRjogJ3RpZGUtdW5kZXJsaW5lLW5vbmUnLFxuICAgIH0sXG4gIH0sXG4gIFZJU0lCSUxJVFk6IHtcbiAgICBPRkY6ICd0aWRlLXZpc2libGUtbm9uZScsXG4gICAgT046ICd0aWRlLXZpc2libGUnLFxuICB9LFxuICBXSElURVNQQUNFX1dSQVA6IHtcbiAgICBPRkY6ICd0aWRlLXdoaXRlc3BhY2Utbm93cmFwJyxcbiAgfSxcbiAgV0lEVEg6IHtcbiAgICBBVVRPOiAndGlkZS13aWR0aC1hdXRvJyxcbiAgICBaRVJPOiAndGlkZS13aWR0aC0wJyxcbiAgICBGVUxMOiAndGlkZS13aWR0aC1mdWxsJyxcbiAgICBNQVhfRlVMTDogJ3RpZGUtbWF4LXdpZHRoLWZ1bGwnLFxuICAgIE1JTl9aRVJPOiAndGlkZS1taW4td2lkdGgtMCcsXG4gIH0sXG4gIFpfSU5ERVg6IHtcbiAgICBJTklUSUFMOiAndGlkZS16LWluZGV4LWluaXRpYWwnLFxuICAgIE9ORTogJ3RpZGUtei1pbmRleC0xJyxcbiAgfSxcbn0gYXMgY29uc3Q7XG4iLCJleHBvcnQgY29uc3QgUkVBTE0gPSB7XG4gIEFFUk86ICdhZXJvJyxcbiAgQVRWOiAnYXR2JyxcbiAgQk9BVE1BUlQ6ICdib2F0bWFydCcsXG4gIENZQ0xFOiAnY3ljbGUnLFxuICBFUVVJUE1FTlQ6ICdlcXVpcG1lbnQnLFxuICBQV0M6ICdwd2MnLFxuICBSVjogJ3J2JyxcbiAgU05PVzogJ3Nub3cnLFxuICBUUlVDSzogJ3RydWNrJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFJlYWxtS2V5ID0ga2V5b2YgdHlwZW9mIFJFQUxNO1xuZXhwb3J0IHR5cGUgUmVhbG0gPSAodHlwZW9mIFJFQUxNKVtSZWFsbUtleV07XG4iLCJleHBvcnQgY29uc3QgU0laRSA9IHtcbiAgTEFSR0U6ICdsYXJnZScsXG4gIFNNQUxMOiAnc21hbGwnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgU2l6ZSA9ICh0eXBlb2YgU0laRSlba2V5b2YgdHlwZW9mIFNJWkVdO1xuXG5leHBvcnQgY29uc3QgU0laRV9CVVRUT04gPSB7XG4gIExBUkdFOiAnbGFyZ2UnLFxuICBTTUFMTDogJ3NtYWxsJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFNpemVCdXR0b24gPSAodHlwZW9mIFNJWkUpW2tleW9mIHR5cGVvZiBTSVpFXTtcbiIsImNvbnN0IGNhcGl0YWxpemVGaXJzdCA9IChzdHJpbmc6IHN0cmluZykgPT4ge1xuICByZXR1cm4gc3RyaW5nLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc3RyaW5nLnNsaWNlKDEpO1xufTtcblxuY29uc3QgZm9ybWF0Q2FtZWxDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoL15bXFxzXy1dLywgJycpXG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnICcpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5zcGxpdCgnICcpXG4gICAgICAgIC5tYXAoKHdvcmQsIGluZGV4KSA9PiAoaW5kZXggPT09IDAgPyB3b3JkIDogd29yZC5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKSkpXG4gICAgICAgIC5qb2luKCcnKVxuICAgIDogaW5wdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRLZWJhYkNhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnXG4gICAgPyBpbnB1dFxuICAgICAgICAucmVwbGFjZSgvKFthLXpdezF9KShbQS1aXXsxfSkvZywgJyQxICQyJylcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnJlcGxhY2UoL1tcXHNfLV0vZywgJy0nKVxuICAgIDogaW5wdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRMYWJlbCA9ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IGxhYmVsTWFwOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgIGZhbHNlOiAnTm8nLFxuICAgIHRydWU6ICdZZXMnLFxuICB9O1xuICByZXR1cm4gT2JqZWN0Lmhhc093bihsYWJlbE1hcCwgdmFsdWUpID8gbGFiZWxNYXBbdmFsdWVdIDogdmFsdWU7XG59O1xuXG5jb25zdCBmb3JtYXROdW1iZXIgPSAoaW5wdXQ6IG51bWJlciB8IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGxldCBvdXRwdXQgPSBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdudW1iZXInID8gbmV3IEludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0KGlucHV0KSA6IFN0cmluZyhpbnB1dCB8fCAnJyk7XG4gIGxldCBkaWdpdHMgPSBvdXRwdXQ7XG5cbiAgaWYgKGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHtcbiAgICBkaWdpdHMgPSBkaWdpdHMucmVwbGFjZSgvXFxEL2csICcnKTtcbiAgICBpZiAoTnVtYmVyKGRpZ2l0cykpIHtcbiAgICAgIG91dHB1dCA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCgpLmZvcm1hdChOdW1iZXIoZGlnaXRzKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dHB1dCA9ICcwJztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gb3V0cHV0O1xufTtcblxuY29uc3QgZm9ybWF0UGFzY2FsQ2FzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZydcbiAgICA/IGlucHV0XG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnICcpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5zcGxpdCgnICcpXG4gICAgICAgIC5tYXAoKHdvcmQpID0+IHdvcmQuc2xpY2UoMCwgMSkudG9VcHBlckNhc2UoKSArIHdvcmQuc2xpY2UoMSkpXG4gICAgICAgIC5qb2luKCcnKVxuICAgIDogaW5wdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRQaG9uZSA9IChpbnB1dDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgbGV0IG91dHB1dCA9IGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ251bWJlcicgPyBTdHJpbmcoaW5wdXQpIDogU3RyaW5nKGlucHV0IHx8ICcnKTtcbiAgbGV0IGRpZ2l0cyA9IG91dHB1dDtcbiAgZGlnaXRzID0gZGlnaXRzLnJlcGxhY2UoL1xcRC9nLCAnJyk7XG5cbiAgc3dpdGNoIChkaWdpdHMubGVuZ3RoKSB7XG4gICAgY2FzZSA3OlxuICAgICAgb3V0cHV0ID0gYCR7ZGlnaXRzLnNsaWNlKDAsIDMpfS0ke2RpZ2l0cy5zbGljZSgzKX1gO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxMDpcbiAgICAgIG91dHB1dCA9IGAke2RpZ2l0cy5zbGljZSgwLCAzKX0tJHtkaWdpdHMuc2xpY2UoMywgNil9LSR7ZGlnaXRzLnNsaWNlKDYpfWA7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDExOlxuICAgICAgb3V0cHV0ID0gYCR7ZGlnaXRzLnNsaWNlKDAsIDEpfS0ke2RpZ2l0cy5zbGljZSgxLCA0KX0tJHtkaWdpdHMuc2xpY2UoNCwgNyl9LSR7ZGlnaXRzLnNsaWNlKDcpfWA7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgb3V0cHV0ID0gZGlnaXRzO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICByZXR1cm4gb3V0cHV0O1xufTtcblxuY29uc3QgZm9ybWF0UHJpY2UgPSAoaW5wdXQ6IG51bWJlciB8IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IG91dHB1dCA9IGlucHV0ID8gZm9ybWF0TnVtYmVyKGlucHV0KSA6IFN0cmluZyhpbnB1dCB8fCAnMCcpO1xuICByZXR1cm4gYCQke291dHB1dH1gO1xufTtcblxuY29uc3QgZm9ybWF0UXVvdGVzID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoJ1wiJykgJiYgdmFsdWUuZW5kc1dpdGgoJ1wiJykpIHtcbiAgICByZXR1cm4gdmFsdWUuc2xpY2UoMSwgLTEpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufTtcblxuY29uc3QgZm9ybWF0U2VudGVuY2VDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBsZXQgc2VudGVuY2VDYXNlID0gaW5wdXQ7XG5cbiAgaWYgKGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25zdCBsb3dlckNhc2UgPSBpbnB1dFxuICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgLnJlcGxhY2UoL1tcXHNfLV0vZywgJyAnKTtcblxuICAgIHNlbnRlbmNlQ2FzZSA9IGxvd2VyQ2FzZS5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgbG93ZXJDYXNlLnNsaWNlKDEpO1xuICB9XG5cbiAgcmV0dXJuIHNlbnRlbmNlQ2FzZTtcbn07XG5cbmNvbnN0IGZvcm1hdFNuYWtlQ2FzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZydcbiAgICA/IGlucHV0XG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnXycpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdFRpdGxlQ2FzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZydcbiAgICA/IGlucHV0XG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnICcpXG4gICAgICAgIC5zcGxpdCgnICcpXG4gICAgICAgIC5tYXAoKHdvcmQpID0+IHdvcmQuc2xpY2UoMCwgMSkudG9VcHBlckNhc2UoKSArIHdvcmQuc2xpY2UoMSkpXG4gICAgICAgIC5qb2luKCcgJylcbiAgICA6IGlucHV0O1xufTtcblxuY29uc3QgZm9ybWF0VXJsRnJvbVJvb3QgPSAodXJsOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgdXJsRm9ybWF0dGVkID0gdXJsLnNwbGl0KCcuY29tLycpO1xuXG4gIHJldHVybiB1cmxGb3JtYXR0ZWQubGVuZ3RoID4gMSA/IGAvJHt1cmxGb3JtYXR0ZWRbMV19YCA6IHVybDtcbn07XG5cbmNvbnN0IGZvcm1hdFdlaWdodCA9IChpbnB1dDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3Qgb3V0cHV0ID0gaW5wdXQgPyBmb3JtYXROdW1iZXIoaW5wdXQpIDogU3RyaW5nKGlucHV0IHx8ICcwJyk7XG4gIHJldHVybiBgJHtvdXRwdXR9IGxic2A7XG59O1xuXG5jb25zdCBnZXRBcnRpY2xlID0gKG5vdW46IHN0cmluZywgaXNQbHVyYWwgPSBmYWxzZSwgaXNEZWZpbml0ZSA9IGZhbHNlKSA9PiB7XG4gIGNvbnN0IHZvd2VscyA9IFsnYScsICdlJywgJ2knLCAnbycsICd1J107XG4gIGNvbnN0IGlzVm93ZWxMZWFkaW5nID0gdm93ZWxzLmluY2x1ZGVzKG5vdW4uY2hhckF0KDApKTtcblxuICByZXR1cm4gaXNEZWZpbml0ZSA/ICd0aGUnIDogaXNQbHVyYWwgPyAnc29tZScgOiBpc1Zvd2VsTGVhZGluZyA/ICdhbicgOiAnYSc7XG59O1xuXG5jb25zdCBwcmljZVRvTnVtYmVyID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgaWYgKE51bWJlci5pc05hTihOdW1iZXIodmFsdWUpKSkge1xuICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgnJCcsICcnKTtcbiAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoLywvZywgJycpO1xuICB9XG4gIHJldHVybiBwYXJzZUludCh2YWx1ZSwgMTApO1xufTtcblxuY29uc3QgdW5mb3JtYXRQcmljZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3Qgb3V0cHV0ID0gaW5wdXQucmVwbGFjZSgvXFwkL2csICcnKS5yZXBsYWNlKC8sL2csICcnKTtcbiAgcmV0dXJuIGAke291dHB1dH1gO1xufTtcblxuZXhwb3J0IHtcbiAgY2FwaXRhbGl6ZUZpcnN0LFxuICBmb3JtYXRDYW1lbENhc2UsXG4gIGZvcm1hdEtlYmFiQ2FzZSxcbiAgZm9ybWF0TGFiZWwsXG4gIGZvcm1hdE51bWJlcixcbiAgZm9ybWF0UGFzY2FsQ2FzZSxcbiAgZm9ybWF0UGhvbmUsXG4gIGZvcm1hdFByaWNlLFxuICBmb3JtYXRRdW90ZXMsXG4gIGZvcm1hdFNlbnRlbmNlQ2FzZSxcbiAgZm9ybWF0U25ha2VDYXNlLFxuICBmb3JtYXRUaXRsZUNhc2UsXG4gIGZvcm1hdFVybEZyb21Sb290LFxuICBmb3JtYXRXZWlnaHQsXG4gIGdldEFydGljbGUsXG4gIHByaWNlVG9OdW1iZXIsXG4gIHVuZm9ybWF0UHJpY2UsXG59O1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgZGVmaW5lQXN5bmNDb21wb25lbnQsIG1hcmtSYXcsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB7IFJFQUxNIH0gZnJvbSAnQC90eXBlcy9SZWFsbSc7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IGZvcm1hdFBhc2NhbENhc2UgfSBmcm9tICdAL3V0aWxpdGllcy9mb3JtYXQnO1xuXG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB0eXBlIHsgU2l6ZSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB0eXBlIHsgQ29tcG9uZW50IH0gZnJvbSAndnVlJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGljb246IEljb247XG4gICAgc2l6ZT86IFNpemU7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBzaXplOiBTSVpFLlNNQUxMLFxuICB9KTtcblxuICBjb25zdCBpbm5lclNWRyA9IHJlZjxDb21wb25lbnQ+KCk7XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMuaWNvbixcbiAgICBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBpZDogc3RyaW5nID0gcHJvcHMuaWNvbjtcbiAgICAgIGNvbnN0IG5hbWUgPSBmb3JtYXRQYXNjYWxDYXNlKGlkKTtcbiAgICAgIGNvbnN0IFtwcmVmaXhdID0gaWQuc3BsaXQoJy0nKTtcbiAgICAgIGNvbnN0IHJlYWxtRm9sZGVyID0gUkVBTE1bcHJlZml4Py50b1VwcGVyQ2FzZSgpIGFzIGtleW9mIHR5cGVvZiBSRUFMTV07XG4gICAgICBjb25zdCBjb21wb25lbnQgPSBkZWZpbmVBc3luY0NvbXBvbmVudCgoKSA9PiB7XG4gICAgICAgIGlmIChyZWFsbUZvbGRlcikge1xuICAgICAgICAgIHJldHVybiBpbXBvcnQoYC4uL2Fzc2V0cy9zdmcvaWNvbnMvcmVhbG0vJHtyZWFsbUZvbGRlcn0vSWNvbiR7bmFtZX0uc3ZnP2NvbXBvbmVudGApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGltcG9ydChgLi4vYXNzZXRzL3N2Zy9pY29ucy9JY29uJHtuYW1lfS5zdmc/Y29tcG9uZW50YCk7XG4gICAgICB9KTtcblxuICAgICAgaW5uZXJTVkcudmFsdWUgPSBtYXJrUmF3KGNvbXBvbmVudCk7XG4gICAgfSxcbiAgICB7IGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1pY29uJywgcHJvcHMuc2l6ZV1cIj5cbiAgICA8Q29tcG9uZW50XG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuQkxPQ0tdXCJcbiAgICAgIDpkYXRhLWljb249XCJpY29uXCJcbiAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgOmlzPVwiaW5uZXJTVkdcIlxuICAgICAgdi1pZj1cImlubmVyU1ZHXCJcbiAgICAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZT5cbiAgLnRpZGUtaWNvbiB7XG4gICAgd2lkdGg6IDEuNXJlbTtcbiAgICBoZWlnaHQ6IDEuNXJlbTtcbiAgfVxuXG4gIC50aWRlLWljb24uc21hbGwge1xuICAgIHdpZHRoOiAxLjI1cmVtO1xuICAgIGhlaWdodDogMS4yNXJlbTtcbiAgfVxuXG4gIC50aWRlLWljb24gc3ZnIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gIH1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgdHlwZSB7IFJlYWxtS2V5IH0gZnJvbSAnQC90eXBlcy9SZWFsbSc7XG5cbmV4cG9ydCBjb25zdCBJQ09OID0ge1xuICBBQ0NPVU5UX0JBTEFOQ0U6ICdhY2NvdW50LWJhbGFuY2UnLFxuICBBQ1VURTogJ2FjdXRlJyxcbiAgQUREOiAnYWRkJyxcbiAgQUlfREVTQ1JJUFRJT046ICdhaS1kZXNjcmlwdGlvbicsXG4gIEFMSUdOX1NQQUNFX0VWRU46ICdhbGlnbi1zcGFjZS1ldmVuJyxcbiAgQVBQTEVfUEFZOiAnYXBwbGUtcGF5JyxcbiAgQVJST1dfQkFDSzogJ2Fycm93LWJhY2snLFxuICBBUlJPV19DWUNMRTogJ2Fycm93LWN5Y2xlJyxcbiAgQVJST1dfRk9SV0FSRDogJ2Fycm93LWZvcndhcmQnLFxuICBBUlJPV19SSUdIVDogJ2Fycm93LXJpZ2h0JyxcbiAgQVNTSUdOTUVOVDogJ2Fzc2lnbm1lbnQnLFxuICBBVFRBQ0hfTU9ORVk6ICdhdHRhY2gtbW9uZXknLFxuICBBVVRPX1JFTkVXOiAnYXV0by1yZW5ldycsXG4gIEFXQVJEX1NUQVI6ICdhd2FyZC1zdGFyJyxcbiAgQkVEOiAnYmVkJyxcbiAgQk9MVDogJ2JvbHQnLFxuICBCT09LTUFSSzogJ2Jvb2ttYXJrJyxcbiAgQlVOS0hPVVNFOiAnYnVua2hvdXNlJyxcbiAgQ0FMRU5EQVJfTU9OVEg6ICdjYWxlbmRhci1tb250aCcsXG4gIENBTEw6ICdjYWxsJyxcbiAgQ0FMTF9RVUFMSVRZOiAnY2FsbC1xdWFsaXR5JyxcbiAgQ0FSX1JFTlRBTDogJ2Nhci1yZW50YWwnLFxuICBDSEVDSzogJ2NoZWNrJyxcbiAgQ0hFVlJPTl9MRUZUOiAnY2hldnJvbi1sZWZ0JyxcbiAgQ0hFVlJPTl9SSUdIVDogJ2NoZXZyb24tcmlnaHQnLFxuICBDTEVBUjogJ2NsZWFyJyxcbiAgQ0xPU0U6ICdjbG9zZScsXG4gIENPTlRSQUNUOiAnY29udHJhY3QnLFxuICBDUkFTSDogJ2NyYXNoJyxcbiAgREFTSEJPQVJEX0NVU1RPTUlaRTogJ2Rhc2hib2FyZC1jdXN0b21pemUnLFxuICBERUxFVEU6ICdkZWxldGUnLFxuICBESUFNT05EOiAnZGlhbW9uZCcsXG4gIERJUkVDVElPTlNfQk9BVDogJ2RpcmVjdGlvbnMtYm9hdCcsXG4gIERPTUFJTjogJ2RvbWFpbicsXG4gIERSQUZUOiAnZHJhZnQnLFxuICBFRElUOiAnZWRpdCcsXG4gIEVOR0lORTogJ2VuZ2luZScsXG4gIEVOR0lORUVSSU5HOiAnZW5naW5lZXJpbmcnLFxuICBFUlJPUjogJ2Vycm9yJyxcbiAgRVhQQU5EX0NPTlRFTlQ6ICdleHBhbmQtY29udGVudCcsXG4gIEVYUEFORF9MRVNTOiAnZXhwYW5kLWxlc3MnLFxuICBFWFBBTkRfTU9SRTogJ2V4cGFuZC1tb3JlJyxcbiAgRkFDRUJPT0s6ICdmYWNlYm9vaycsXG4gIEZBVk9SSVRFOiAnZmF2b3JpdGUnLFxuICBGQVZPUklURV9GSUxMRUQ6ICdmYXZvcml0ZS1maWxsZWQnLFxuICBGTEFHOiAnZmxhZycsXG4gIEZPUk1BVF9CT0xEOiAnZm9ybWF0LWJvbGQnLFxuICBGT1JNQVRfSVRBTElDOiAnZm9ybWF0LWl0YWxpYycsXG4gIEZPUk1BVF9MSVNUX0JVTExFVEVEOiAnZm9ybWF0LWxpc3QtYnVsbGV0ZWQnLFxuICBGT1JVTTogJ2ZvcnVtJyxcbiAgR0FTOiAnZ2FzJyxcbiAgR0FWRUw6ICdnYXZlbCcsXG4gIEdFQVJTOiAnZ2VhcnMnLFxuICBHTE9CRV9MT0NBVElPTl9QSU46ICdnbG9iZS1sb2NhdGlvbi1waW4nLFxuICBHT09HTEU6ICdnb29nbGUnLFxuICBHT09HTEVfUEFZOiAnZ29vZ2xlLXBheScsXG4gIEdSSUQ6ICdncmlkJyxcbiAgSEFORFNIQUtFOiAnaGFuZHNoYWtlJyxcbiAgSEFORFlNQU46ICdoYW5keW1hbicsXG4gIEhFSUdIVDogJ2hlaWdodCcsXG4gIEhFTFA6ICdoZWxwJyxcbiAgSU5GTzogJ2luZm8nLFxuICBJTkZPUk1BVElPTjogJ2luZm9ybWF0aW9uJyxcbiAgSU5TRVJUX1RFWFQ6ICdpbnNlcnQtdGV4dCcsXG4gIElOU1RBR1JBTTogJ2luc3RhZ3JhbScsXG4gIElPU19TSEFSRTogJ2lvcy1zaGFyZScsXG4gIExBWU9VVDogJ2xheW91dCcsXG4gIExFVkVMTElOR19KQUNLOiAnbGV2ZWxsaW5nLWphY2snLFxuICBMSU5LRURfSU46ICdsaW5rZWQgaW4nLFxuICBMT0NBTF9TSElQUElORzogJ2xvY2FsLXNoaXBwaW5nJyxcbiAgTE9DSzogJ2xvY2snLFxuICBNQUlMOiAnbWFpbCcsXG4gIE1FTlU6ICdtZW51JyxcbiAgTU9ORVlfQkFHOiAnbW9uZXktYmFnJyxcbiAgTU9SRV9IT1JJWjogJ21vcmUtaG9yaXonLFxuICBOT1RJRklDQVRJT05TOiAnbm90aWZpY2F0aW9ucycsXG4gIE9ET01FVEVSOiAnb2RvbWV0ZXInLFxuICBPUEVOX0lOX05FVzogJ29wZW4taW4tbmV3JyxcbiAgUEFMRVRURTogJ3BhbGV0dGUnLFxuICBQQVlQQUw6ICdwYXlwYWwnLFxuICBQRVJTT046ICdwZXJzb24nLFxuICBQRVJTT05fU0VBUkNIOiAncGVyc29uLXNlYXJjaCcsXG4gIFBIT1RPX0NBTUVSQTogJ3Bob3RvLWNhbWVyYScsXG4gIFBJTlRFUkVTVDogJ3BpbnRlcmVzdCcsXG4gIFBMQVlfQVJST1c6ICdwbGF5LWFycm93JyxcbiAgUE9MSUNZOiAncG9saWN5JyxcbiAgUE9XRVI6ICdwb3dlcicsXG4gIFBPV0VSX09GRjogJ3Bvd2VyLW9mZicsXG4gIFBSSU9SSVRZX0hJR0g6ICdwcmlvcml0eS1oaWdoJyxcbiAgUkVNT1ZFOiAncmVtb3ZlJyxcbiAgUkVRVUVTVF9RVU9URTogJ3JlcXVlc3QtcXVvdGUnLFxuICBSRVNFVF9XUkVOQ0g6ICdyZXNldC13cmVuY2gnLFxuICBST0FEOiAncm9hZCcsXG4gIFJPVU5ERURfQ09STkVSOiAncm91bmRlZC1jb3JuZXInLFxuICBSVUxFUjogJ3J1bGVyJyxcbiAgU0FJTElORzogJ3NhaWxpbmcnLFxuICBTQ0hPT0w6ICdzY2hvb2wnLFxuICBTRUFSQ0g6ICdzZWFyY2gnLFxuICBTRUFUSU5HOiAnc2VhdGluZycsXG4gIFNFTEw6ICdzZWxsJyxcbiAgU0VOU09SUzogJ3NlbnNvcnMnLFxuICBTRVRUSU5HUzogJ3NldHRpbmdzJyxcbiAgU0hBUkU6ICdzaGFyZScsXG4gIFNISUVMRF9DSEVDSzogJ3NoaWVsZC1jaGVjaycsXG4gIFNIT1BQSU5HX0NBUlQ6ICdzaG9wcGluZy1jYXJ0JyxcbiAgU0xFRVBTOiAnc2xlZXBzJyxcbiAgU01TOiAnc21zJyxcbiAgU05PV0ZMQUtFOiAnc25vd2ZsYWtlJyxcbiAgU1RBUjogJ3N0YXInLFxuICBTVU1NQVJJWkU6ICdzdW1tYXJpemUnLFxuICBTV0FQX0hPUklaOiAnc3dhcC1ob3JpeicsXG4gIFNXQVBfVkVSVDogJ3N3YXAtdmVydCcsXG4gIFRIUkVFX0RfUk9UQVRJT046ICd0aHJlZS1kLXJvdGF0aW9uJyxcbiAgVEhVTUJfVVA6ICd0aHVtYi11cCcsXG4gIFRSRU5ESU5HX0RPV046ICd0cmVuZGluZy1kb3duJyxcbiAgVFJPUEhZOiAndHJvcGh5JyxcbiAgVFVORTogJ3R1bmUnLFxuICBUV0lUVEVSOiAndHdpdHRlcicsXG4gIFVNQlJFTExBOiAndW1icmVsbGEnLFxuICBWRVJJRklFRDogJ3ZlcmlmaWVkJyxcbiAgVklERU9DQU06ICd2aWRlb2NhbScsXG4gIFZJRVdfSU5fQVI6ICd2aWV3LWluLWFyJyxcbiAgVklTSUJJTElUWTogJ3Zpc2liaWxpdHknLFxuICBWT0xVTUVfT0ZGOiAndm9sdW1lLW9mZicsXG4gIFZPTFVNRV9PTjogJ3ZvbHVtZS1vbicsXG4gIFdBUkVIT1VTRTogJ3dhcmVob3VzZScsXG4gIFdBUk5JTkc6ICd3YXJuaW5nJyxcbiAgV0FURVI6ICd3YXRlcicsXG4gIFdFSUdIVDogJ3dlaWdodCcsXG4gIFdJRFRIOiAnd2lkdGgnLFxuICBXT1JLU1BBQ0VfUFJFTUlVTTogJ3dvcmtzcGFjZS1wcmVtaXVtJyxcbiAgV1JFTkNIOiAnd3JlbmNoJyxcbiAgWU9VVFVCRTogJ3lvdXR1YmUnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IElDT05fUkVBTE0gPSB7XG4gIEFUVjoge1xuICAgIEFUVjogJ2F0di1hdHYnLFxuICAgIERVTkVfQlVHR1k6ICdhdHYtZHVuZS1idWdneScsXG4gICAgR09MRl9DQVJUOiAnYXR2LWdvbGYtY2FydCcsXG4gICAgR09fS0FSVDogJ2F0di1nby1rYXJ0JyxcbiAgICBTQU5EX1JBSUw6ICdhdHYtc2FuZC1yYWlsJyxcbiAgICBTSURFX0JZX1NJREU6ICdhdHYtc2lkZS1ieS1zaWRlJyxcbiAgICBUUkFJTEVSOiAnYXR2LXRyYWlsZXInLFxuICB9LFxuICBCT0FUTUFSVDoge1xuICAgIFBXQzogJ2JvYXRtYXJ0LXB3YycsXG4gICAgVFJBSUxFUjogJ2JvYXRtYXJ0LXRyYWlsZXInLFxuICB9LFxuICBSVjoge1xuICAgIENMQVNTX0E6ICdydi1jbGFzcy1hJyxcbiAgICBDTEFTU19COiAncnYtY2xhc3MtYicsXG4gICAgQ0xBU1NfQzogJ3J2LWNsYXNzLWMnLFxuICAgIEZJRlRIX1dIRUVMOiAncnYtZmlmdGgtd2hlZWwnLFxuICAgIEZJU0hfSE9VU0U6ICdydi1maXNoLWhvdXNlJyxcbiAgICBQQVJLX01PREVMOiAncnYtcGFyay1tb2RlbCcsXG4gICAgUE9QX1VQX0NBTVBFUjogJ3J2LXBvcC11cC1jYW1wZXInLFxuICAgIFRSQVZFTF9UUkFJTEVSOiAncnYtdHJhdmVsLXRyYWlsZXInLFxuICAgIFRSVUNLX0NBTVBFUjogJ3J2LXRydWNrLWNhbXBlcicsXG4gIH0sXG59IGFzIGNvbnN0O1xuXG50eXBlIFJlYWxtS2V5c1dpdGhJY29ucyA9IEV4dHJhY3Q8UmVhbG1LZXksIGtleW9mIHR5cGVvZiBJQ09OX1JFQUxNPjtcbnR5cGUgUmVhbG1JY29uID0ge1xuICBbUmVhbG1LZXkgaW4gUmVhbG1LZXlzV2l0aEljb25zXTogKHR5cGVvZiBJQ09OX1JFQUxNKVtSZWFsbUtleV1ba2V5b2YgKHR5cGVvZiBJQ09OX1JFQUxNKVtSZWFsbUtleV1dO1xufVtSZWFsbUtleXNXaXRoSWNvbnNdO1xuXG5leHBvcnQgdHlwZSBHbG9iYWxJY29uID0gKHR5cGVvZiBJQ09OKVtrZXlvZiB0eXBlb2YgSUNPTl07XG5leHBvcnQgdHlwZSBJY29uID0gR2xvYmFsSWNvbiB8IFJlYWxtSWNvbjtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCBUaWRlRGl2aWRlciBmcm9tICdAL2NvbXBvbmVudHMvVGlkZURpdmlkZXIudnVlJztcbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHMoWyd0b2dnbGUnXSk7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBoYXNCb3R0b21EaXZpZGVyPzogYm9vbGVhbjtcbiAgICBoYXNUb3BEaXZpZGVyPzogYm9vbGVhbjtcbiAgICBpc0V4cGFuZGVkPzogYm9vbGVhbjtcbiAgICBpc09wdGlvbmFsPzogYm9vbGVhbjtcbiAgICBsYWJlbDogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgaGFzQm90dG9tRGl2aWRlcjogZmFsc2UsXG4gICAgaGFzVG9wRGl2aWRlcjogZmFsc2UsXG4gICAgaXNFeHBhbmRlZDogZmFsc2UsXG4gICAgaXNPcHRpb25hbDogZmFsc2UsXG4gICAgbGFiZWw6ICcnLFxuICB9KTtcblxuICBjb25zdCBoYW5kbGVUb2dnbGVDbGljayA9ICgpID0+IHtcbiAgICBlbWl0KCd0b2dnbGUnKTtcbiAgfTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJ0aWRlLWFjY29yZGlvbi1pdGVtXCI+XG4gICAgPFRpZGVEaXZpZGVyIHYtaWY9XCJwcm9wcy5oYXNUb3BEaXZpZGVyXCIgLz5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIlsndGlkZS1hY2NvcmRpb24taGVhZCcsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMS5CRVRXRUVOLCBDU1MuUEFERElORy5ZLkhBTEYsIENTUy5DVVJTT1IuUE9JTlRFUl1cIlxuICAgICAgQGNsaWNrPVwiaGFuZGxlVG9nZ2xlQ2xpY2tcIlxuICAgID5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuSEFMRiwgQ1NTLkZPTlQuUk9MRS5MQUJFTF8xX1NFTUlCT0xEXVwiPlxuICAgICAgICA8c3Bhbj57eyBwcm9wcy5sYWJlbCB9fTwvc3Bhbj5cblxuICAgICAgICA8c3BhblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgICB2LWlmPVwicHJvcHMuaXNPcHRpb25hbFwiXG4gICAgICAgID5cbiAgICAgICAgICAob3B0aW9uYWwpXG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmljb249XCJpc0V4cGFuZGVkID8gSUNPTi5FWFBBTkRfTEVTUyA6IElDT04uRVhQQU5EX01PUkVcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuTEFSR0VcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWFjY29yZGlvbi1ib2R5JywgcHJvcHMuaXNFeHBhbmRlZCA/ICdleHBhbmRlZCcgOiAnY29sbGFwc2VkJywgQ1NTLkRJU1BMQVkuR1JJRF1cIj5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5PVkVSRkxPVy5ZLkhJRERFTiwgQ1NTLk1BUkdJTi5ZLk9ORSwgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVF1cIj5cbiAgICAgICAgPHNsb3QgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPFRpZGVEaXZpZGVyIHYtaWY9XCJwcm9wcy5oYXNCb3R0b21EaXZpZGVyXCIgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1hY2NvcmRpb24tYm9keSB7XG4gICAgdHJhbnNpdGlvbjogZ3JpZC10ZW1wbGF0ZS1yb3dzIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAudGlkZS1hY2NvcmRpb24tYm9keS5leHBhbmRlZCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiAxZnI7XG4gIH1cblxuICAudGlkZS1hY2NvcmRpb24tYm9keS5jb2xsYXBzZWQge1xuICAgIGdyaWQtdGVtcGxhdGUtcm93czogMGZyO1xuICB9XG48L3N0eWxlPlxuIiwiZXhwb3J0IGNvbnN0IEVMRU1FTlQgPSB7XG4gIEJVVFRPTjogJ2J1dHRvbicsXG4gIExJTks6ICdhJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBFTEVNRU5UX1RFWFRfQVNfSUNPTiA9IHtcbiAgQlVUVE9OOiAnYnV0dG9uJyxcbiAgRElWOiAnZGl2JyxcbiAgTElOSzogJ2EnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgRWxlbWVudCA9ICh0eXBlb2YgRUxFTUVOVClba2V5b2YgdHlwZW9mIEVMRU1FTlRdO1xuZXhwb3J0IHR5cGUgRWxlbWVudFRleHRBc0ljb24gPSAodHlwZW9mIEVMRU1FTlRfVEVYVF9BU19JQ09OKVtrZXlvZiB0eXBlb2YgRUxFTUVOVF9URVhUX0FTX0lDT05dO1xuIiwiLyogZXNsaW50LWRpc2FibGUgdnVlL3NvcnQta2V5cyAqL1xuXG5leHBvcnQgY29uc3QgUFJJT1JJVFkgPSB7XG4gIFBSSU1BUlk6ICdwcmltYXJ5JyxcbiAgU0VDT05EQVJZOiAnc2Vjb25kYXJ5JyxcbiAgVEVSVElBUlk6ICd0ZXJ0aWFyeScsXG4gIFFVQVRFUk5BUlk6ICdxdWF0ZXJuYXJ5JyxcbiAgRkxPQVRJTkc6ICdmbG9hdGluZycsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBQcmlvcml0eSA9ICh0eXBlb2YgUFJJT1JJVFkpW2tleW9mIHR5cGVvZiBQUklPUklUWV07XG4iLCJleHBvcnQgY29uc3QgVEFSR0VUID0ge1xuICBCTEFOSzogJ19ibGFuaycsXG4gIFNFTEY6IHVuZGVmaW5lZCxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFRhcmdldCA9ICh0eXBlb2YgVEFSR0VUKVtrZXlvZiB0eXBlb2YgVEFSR0VUXTtcbiIsImV4cG9ydCBjb25zdCBBTEVSVCA9IHtcbiAgRVJST1I6ICdlcnJvcicsXG4gIElORk86ICdpbmZvJyxcbiAgU1VDQ0VTUzogJ3N1Y2Nlc3MnLFxuICBXQVJOSU5HOiAnd2FybmluZycsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBBbGVydCA9ICh0eXBlb2YgQUxFUlQpW2tleW9mIHR5cGVvZiBBTEVSVF07XG4iLCJpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbmV4cG9ydCBjb25zdCBCQURHRV9DT0xPUiA9IHtcbiAgQkxBQ0s6ICdibGFjaycsXG4gIEJMVUU6ICdibHVlJyxcbiAgR1JFRU46ICdncmVlbicsXG4gIExJTUU6ICdsaW1lJyxcbiAgT1JBTkdFOiAnb3JhbmdlJyxcbiAgUFVSUExFOiAncHVycGxlJyxcbiAgUkVEOiAncmVkJyxcbiAgU0FMTU9OOiAnc2FsbW9uJyxcbiAgVEVBTDogJ3RlYWwnLFxuICBZRUxMT1c6ICd5ZWxsb3cnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IEJBREdFX0NPTE9SX0RFVEFJTFM6IFJlY29yZDxcbiAgQmFkZ2VDb2xvcixcbiAge1xuICAgIGJvcmRlckNvbG9yOiBzdHJpbmc7XG4gICAgaWNvbkNvbG9yOiBzdHJpbmc7XG4gIH1cbj4gPSB7XG4gIFtCQURHRV9DT0xPUi5CTEFDS106IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5ISUdILFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxULFxuICB9LFxuICBbQkFER0VfQ09MT1IuQkxVRV06IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuQkxVRSxcbiAgICBpY29uQ29sb3I6IENTUy5GT05ULkNPTE9SLkdMT0JBTC5QUklNQVJZLkJMVUUsXG4gIH0sXG4gIFtCQURHRV9DT0xPUi5HUkVFTl06IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuR1JFRU4sXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5HUkVFTixcbiAgfSxcbiAgW0JBREdFX0NPTE9SLkxJTUVdOiB7XG4gICAgYm9yZGVyQ29sb3I6IENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLkxJTUUsXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5MSU1FLFxuICB9LFxuICBbQkFER0VfQ09MT1IuT1JBTkdFXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5PUkFOR0UsXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5PUkFOR0UsXG4gIH0sXG4gIFtCQURHRV9DT0xPUi5QVVJQTEVdOiB7XG4gICAgYm9yZGVyQ29sb3I6IENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLlBVUlBMRSxcbiAgICBpY29uQ29sb3I6IENTUy5GT05ULkNPTE9SLkdMT0JBTC5QUklNQVJZLlBVUlBMRSxcbiAgfSxcbiAgW0JBREdFX0NPTE9SLlJFRF06IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuUkVELFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLlBSSU1BUlkuUkVELFxuICB9LFxuICBbQkFER0VfQ09MT1IuU0FMTU9OXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5TQUxNT04sXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5TQUxNT04sXG4gIH0sXG4gIFtCQURHRV9DT0xPUi5URUFMXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5URUFMLFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLlBSSU1BUlkuVEVBTCxcbiAgfSxcbiAgW0JBREdFX0NPTE9SLllFTExPV106IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuWUVMTE9XLFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLlBSSU1BUlkuWUVMTE9XLFxuICB9LFxufTtcblxuZXhwb3J0IGNvbnN0IEJBREdFX1RSVVNURUQgPSB7XG4gIFlFQVJTXzEwOiAnMTAnLFxuICBZRUFSU18xNTogJzE1JyxcbiAgWUVBUlNfNTogJzUnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgQmFkZ2VDb2xvciA9ICh0eXBlb2YgQkFER0VfQ09MT1IpW2tleW9mIHR5cGVvZiBCQURHRV9DT0xPUl07XG5leHBvcnQgdHlwZSBCYWRnZVRydXN0ZWRZZWFycyA9ICh0eXBlb2YgQkFER0VfVFJVU1RFRClba2V5b2YgdHlwZW9mIEJBREdFX1RSVVNURURdO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgVGFiIH0gZnJvbSAnQC90eXBlcy9UYWInO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgYWN0aXZlVGFiOiBudW1iZXI7XG4gICAgdGFiczogVGFiW107XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBhY3RpdmVUYWI6IDAsXG4gIH0pO1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0cyhbJ2NoYW5nZSddKTtcblxuICBjb25zdCBoYW5kbGVDbGljayA9IChpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgZW1pdCgnY2hhbmdlJywgaW5kZXgpO1xuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWJ1dHRvbi1zZWdtZW50ZWQnLFxuICAgICAgQ1NTLkJHLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgQ1NTLlBBRERJTkcuRlVMTC5RVUFSVEVSLFxuICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgIF1cIlxuICA+XG4gICAgPGJ1dHRvblxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1idXR0b24tc2VnbWVudGVkLXRhYicsXG4gICAgICAgIGluZGV4ID09PSBhY3RpdmVUYWJcbiAgICAgICAgICA/IFtDU1MuQkcuU1VSRkFDRS5ERUZBVUxULCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFQsIENTUy5TSEFET1cuQk9UVE9NXVxuICAgICAgICAgIDogWydpbmFjdGl2ZScsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF0sXG4gICAgICAgIENTUy5GTEVYLkdST1cuT04sXG4gICAgICAgIENTUy5CT1JERVIuRlVMTC5UV08sXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICAgIENTUy5QQURESU5HLlkuUVVBUlRFUixcbiAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgIENTUy5GT05ULlJPTEUuQlVUVE9OXzEsXG4gICAgICAgIENTUy5XSElURVNQQUNFX1dSQVAuT0ZGLFxuICAgICAgXVwiXG4gICAgICA6ZGF0YS10cmFjaz1cInRhYi5kYXRhVHJhY2sgfHwgdW5kZWZpbmVkXCJcbiAgICAgIDprZXk9XCJ0YWIubGFiZWxcIlxuICAgICAgQGNsaWNrPVwiaGFuZGxlQ2xpY2soaW5kZXgpXCJcbiAgICAgIHYtZm9yPVwiKHRhYiwgaW5kZXgpIGluIHByb3BzLnRhYnNcIlxuICAgID5cbiAgICAgIDxzcGFuIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzJfU0VNSUJPTERdXCI+XG4gICAgICAgIHt7IHRhYi5sYWJlbCB9fVxuICAgICAgPC9zcGFuPlxuXG4gICAgICA8c3BhblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8yX1NFTUlCT0xEXVwiXG4gICAgICAgIHYtaWY9XCJ0YWIuY291bnQgJiYgdGFiLmNvdW50ID4gMFwiXG4gICAgICA+XG4gICAgICAgICh7eyB0YWIuY291bnQgfX0pXG4gICAgICA8L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtYnV0dG9uLXNlZ21lbnRlZCB7XG4gICAgbWF4LXdpZHRoOiAyMy4zcmVtO1xuICB9XG5cbiAgLnRpZGUtYnV0dG9uLXNlZ21lbnRlZC10YWIge1xuICAgIGZsZXg6IDE7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLmluYWN0aXZlOm5vdCg6aG92ZXIpIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS12YXJpYW50KTtcbiAgfVxuXG4gIC5pbmFjdGl2ZTpob3ZlciB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10aWRlLWJvcmRlcik7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS1kZWZhdWx0KTtcbiAgfVxuPC9zdHlsZT5cbiIsImV4cG9ydCBjb25zdCBUWVBFX0NBUkQgPSB7XG4gIEFDVElPTkFCTEU6ICdhY3Rpb24nLFxuICBJTkZPUk1BVElPTkFMOiAnaW5mb3JtYXRpb25hbCcsXG4gIFNFTEVDVEFCTEU6ICdzZWxlY3QnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgQ2FyZFR5cGUgPSAodHlwZW9mIFRZUEVfQ0FSRClba2V5b2YgdHlwZW9mIFRZUEVfQ0FSRF07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBvbk1vdW50ZWQsIG9uVW5tb3VudGVkLCBvblVwZGF0ZWQsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlQnV0dG9uSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUJ1dHRvbkljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFBSSU9SSVRZIH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IFJlZiB9IGZyb20gJ3Z1ZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBibGVlZD86IG51bWJlcjtcbiAgICBpc0Zsb2F0aW5nPzogYm9vbGVhbjtcbiAgICBpc0hlYWRsaW5lMT86IGJvb2xlYW47XG4gICAgaXNIaWRlYXdheUJ1dHRvbnM/OiBib29sZWFuO1xuICAgIGlzVG91Y2hzY3JlZW4/OiBib29sZWFuO1xuICAgIHN1YnRpdGxlPzogc3RyaW5nO1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgYmxlZWQ6IHVuZGVmaW5lZCxcbiAgICBpc0Zsb2F0aW5nOiBmYWxzZSxcbiAgICBpc0hlYWRsaW5lMTogZmFsc2UsXG4gICAgaXNIaWRlYXdheUJ1dHRvbnM6IHRydWUsXG4gICAgaXNUb3VjaHNjcmVlbjogdW5kZWZpbmVkLFxuICAgIHN1YnRpdGxlOiB1bmRlZmluZWQsXG4gICAgdGl0bGU6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgdHlwZSBFbWl0cyA9IHtcbiAgICAoZXZlbnQ6ICdzbGlkZUNoYW5nZScsIHNsaWRlSW5kZXg6IG51bWJlcik6IHZvaWQ7XG4gICAgKGV2ZW50OiAnc2xpZGVzQWRkZWRUb1ZpZXcnLCBzbGlkZXNJblZpZXc6IG51bWJlcltdKTogdm9pZDtcbiAgfTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8RW1pdHM+KCk7XG5cbiAgY29uc3QgY29udGFpbmVyUmVmOiBSZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPiA9IHJlZihudWxsKTtcbiAgY29uc3Qgc2xpZGVPYnNlcnZlciA9IHJlZjxJbnRlcnNlY3Rpb25PYnNlcnZlciB8IG51bGw+KG51bGwpO1xuICBjb25zdCBzbG90T2JzZXJ2ZXIgPSByZWY8TXV0YXRpb25PYnNlcnZlciB8IG51bGw+KG51bGwpO1xuICBjb25zdCBjb250ZW50UmlnaHRFZGdlID0gcmVmKCk7XG4gIGNvbnN0IGNvbnRlbnRXaWR0aCA9IHJlZigpO1xuICBjb25zdCBjdXJyZW50U2xpZGUgPSByZWYoMCk7XG4gIGNvbnN0IGZyYW1lV2lkdGggPSByZWYoKTtcbiAgY29uc3QgaGFzT3ZlcmZsb3cgPSByZWYoKTtcbiAgY29uc3QgaXNGaXJzdFNsaWRlID0gcmVmKCk7XG4gIGNvbnN0IGlzTGFzdFNsaWRlID0gcmVmKCk7XG4gIGNvbnN0IGxhc3RQb3NpdGlvbiA9IHJlZigpO1xuICBjb25zdCBzaG93QnV0dG9ucyA9IHJlZigpO1xuXG4gIGNvbnN0IHVwZGF0ZUNvbnRhaW5lckJsZWVkID0gKCkgPT4ge1xuICAgIGlmIChwcm9wcy5ibGVlZCA9PSB1bmRlZmluZWQpIHJldHVybjtcbiAgICBpZiAoY29udGFpbmVyUmVmLnZhbHVlID09PSBudWxsKSByZXR1cm47XG5cbiAgICBpZiAoaXNMYXN0U2xpZGUudmFsdWUgJiYgc2hvd0J1dHRvbnMudmFsdWUpIHtcbiAgICAgIC8vIFByZXZlbnQgZ3JhZGllbnQgZnJvbSBibGVlZGluZyBvZmYgbGVmdCBlZGdlIGluIGxhc3QgcG9zaXRpb24uXG4gICAgICBjb250YWluZXJSZWYudmFsdWUuc3R5bGUubWFyZ2luID0gYC0ke3Byb3BzLmJsZWVkfXB4IC0ke3Byb3BzLmJsZWVkfXB4IC0ke3Byb3BzLmJsZWVkfXB4IDBgO1xuICAgICAgY29udGFpbmVyUmVmLnZhbHVlLnN0eWxlLnBhZGRpbmcgPSBgJHtwcm9wcy5ibGVlZH1weCAke3Byb3BzLmJsZWVkfXB4ICR7cHJvcHMuYmxlZWR9cHggMGA7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFByZXZlbnQgZ3JhZGllbnQgZnJvbSBibGVlZGluZyBvZmYgcmlnaHQgZWRnZSBpbiBmaXJzdCBwb3NpdGlvbi5cbiAgICAgIGNvbnRhaW5lclJlZi52YWx1ZS5zdHlsZS5tYXJnaW4gPSBgLSR7cHJvcHMuYmxlZWR9cHggMCAtJHtwcm9wcy5ibGVlZH1weCAtJHtwcm9wcy5ibGVlZH1weGA7XG4gICAgICBjb250YWluZXJSZWYudmFsdWUuc3R5bGUucGFkZGluZyA9IGAke3Byb3BzLmJsZWVkfXB4IDAgJHtwcm9wcy5ibGVlZH1weCAke3Byb3BzLmJsZWVkfXB4YDtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIE1lYXN1cmUgdGhlIGN1cnJlbnQgc2xpZGUgYmFzZWQgb24gdGhlIHNjcm9sbFxuICAgKiBwb3NpdGlvbiBvZiB0aGUgZnJhbWUuIFRoZSBjdXJyZW50IHNsaWRlIGlzXG4gICAqIHRoZSBzbGlkZSB0aGF0IGlzIGNsb3Nlc3QgdG8gdGhlIGxlZnQgZWRnZSBvZlxuICAgKiB0aGUgZnJhbWUuXG4gICAqL1xuICBjb25zdCBtZWFzdXJlQ3VycmVudFNsaWRlID0gKCkgPT4ge1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IGNvbnRhaW5lclJlZi52YWx1ZTtcbiAgICBpZiAoIWNvbnRhaW5lcikgcmV0dXJuO1xuXG4gICAgLy8gQ2FzdCBvbmNlLCBzbyBUUyBrbm93cyB0aGVzZSBhcmUgSFRNTEVsZW1lbnRzXG4gICAgY29uc3Qgc2xpZGVPZmZzZXRzID0gQXJyYXkuZnJvbShjb250YWluZXIuY2hpbGRyZW4gYXMgSFRNTENvbGxlY3Rpb25PZjxIVE1MRWxlbWVudD4pLm1hcChcbiAgICAgIChzbGlkZSkgPT4gc2xpZGUub2Zmc2V0TGVmdFxuICAgICk7XG5cbiAgICBpZiAoc2xpZGVPZmZzZXRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgY29uc3Qgc2Nyb2xsTGVmdCA9IGNvbnRhaW5lci5zY3JvbGxMZWZ0O1xuXG4gICAgY29uc3QgY2xvc2VzdFNsaWRlT2Zmc2V0ID0gc2xpZGVPZmZzZXRzLnJlZHVjZSgocHJldiwgY3VycikgPT5cbiAgICAgIE1hdGguYWJzKGN1cnIgLSBzY3JvbGxMZWZ0KSA8IE1hdGguYWJzKHByZXYgLSBzY3JvbGxMZWZ0KSA/IGN1cnIgOiBwcmV2XG4gICAgKTtcblxuICAgIGN1cnJlbnRTbGlkZS52YWx1ZSA9IHNsaWRlT2Zmc2V0cy5pbmRleE9mKGNsb3Nlc3RTbGlkZU9mZnNldCk7XG5cbiAgICB1cGRhdGVDb250YWluZXJCbGVlZCgpO1xuICB9O1xuXG4gIGNvbnN0IG1lYXN1cmVEb20gPSAoKSA9PiB7XG4gICAgaWYgKGNvbnRhaW5lclJlZi52YWx1ZSA9PT0gbnVsbCkgcmV0dXJuO1xuICAgIGNvbnRlbnRSaWdodEVkZ2UudmFsdWUgPSBNYXRoLnJvdW5kKGNvbnRhaW5lclJlZi52YWx1ZS5zY3JvbGxMZWZ0ICsgY29udGFpbmVyUmVmLnZhbHVlLmNsaWVudFdpZHRoKTtcbiAgICBjb250ZW50V2lkdGgudmFsdWUgPSBjb250YWluZXJSZWYudmFsdWUuc2Nyb2xsV2lkdGg7XG4gICAgZnJhbWVXaWR0aC52YWx1ZSA9IGNvbnRhaW5lclJlZi52YWx1ZS5jbGllbnRXaWR0aDtcbiAgICBoYXNPdmVyZmxvdy52YWx1ZSA9IGNvbnRlbnRXaWR0aC52YWx1ZSA+IGZyYW1lV2lkdGgudmFsdWU7XG4gICAgaXNGaXJzdFNsaWRlLnZhbHVlID0gY3VycmVudFNsaWRlLnZhbHVlID09PSAwO1xuICAgIGlzTGFzdFNsaWRlLnZhbHVlID0gY29udGVudFJpZ2h0RWRnZS52YWx1ZSA9PT0gY29udGVudFdpZHRoLnZhbHVlO1xuICAgIGxhc3RQb3NpdGlvbi52YWx1ZSA9IGNvbnRhaW5lclJlZi52YWx1ZS5zY3JvbGxXaWR0aCAtIGNvbnRhaW5lclJlZi52YWx1ZS5jbGllbnRXaWR0aDtcbiAgICBzaG93QnV0dG9ucy52YWx1ZSA9IGhhc092ZXJmbG93LnZhbHVlICYmICFwcm9wcy5pc1RvdWNoc2NyZWVuO1xuXG4gICAgbWVhc3VyZUN1cnJlbnRTbGlkZSgpO1xuICB9O1xuXG4gIC8vIFRPRE86IGRlYm91bmNlIHRoaXNcbiAgY29uc3QgaGFuZGxlU2Nyb2xsID0gKCkgPT4ge1xuICAgIG1lYXN1cmVEb20oKTtcbiAgfTtcblxuICBjb25zdCBzY3JvbGxUb1NsaWRlID0gKHNsaWRlSW5kZXg6IG51bWJlcikgPT4ge1xuICAgIGlmIChjb250YWluZXJSZWYudmFsdWUgPT09IG51bGwpIHJldHVybjtcbiAgICBjb250YWluZXJSZWYudmFsdWUuc2Nyb2xsVG8oe1xuICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxuICAgICAgbGVmdDogKGNvbnRhaW5lclJlZi52YWx1ZS5jaGlsZHJlbltzbGlkZUluZGV4XSBhcyBIVE1MRWxlbWVudCkub2Zmc2V0TGVmdCxcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBzaG93TmV4dFNsaWRlID0gKCkgPT4ge1xuICAgIGlmIChjb250YWluZXJSZWYudmFsdWUgPT09IG51bGwpIHJldHVybjtcbiAgICBpZiAoY29udGVudFJpZ2h0RWRnZS52YWx1ZSA+IGNvbnRlbnRXaWR0aC52YWx1ZSkge1xuICAgICAgY29udGFpbmVyUmVmLnZhbHVlLnNjcm9sbFRvKHtcbiAgICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxuICAgICAgICBsZWZ0OiBjb250ZW50V2lkdGgudmFsdWUsXG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKCFpc0xhc3RTbGlkZS52YWx1ZSkge1xuICAgICAgc2Nyb2xsVG9TbGlkZShjdXJyZW50U2xpZGUudmFsdWUgKyAxKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3Qgc2hvd1ByZXZpb3VzU2xpZGUgPSAoKSA9PiB7XG4gICAgaWYgKCFpc0ZpcnN0U2xpZGUudmFsdWUpIHtcbiAgICAgIHNjcm9sbFRvU2xpZGUoY3VycmVudFNsaWRlLnZhbHVlIC0gMSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IG9ic2VydmVTbGlkZXMgPSAoKSA9PiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIHJvb3Q6IGNvbnRhaW5lclJlZj8udmFsdWUsXG4gICAgICByb290TWFyZ2luOiAnMHB4JyxcbiAgICAgIHRocmVzaG9sZDogMC41LFxuICAgIH07XG5cbiAgICBzbGlkZU9ic2VydmVyLnZhbHVlID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKChlbnRyaWVzKSA9PiB7XG4gICAgICBsZXQgc2xpZGVzOiBudW1iZXJbXSA9IFtdO1xuXG4gICAgICBlbnRyaWVzLmZvckVhY2goKGVudHJ5KSA9PiB7XG4gICAgICAgIGNvbnN0IHNsaWRlSW5kZXggPSBBcnJheS5mcm9tKGNvbnRhaW5lclJlZi52YWx1ZT8uY2hpbGRyZW4gPz8gW10pLmluZGV4T2YoZW50cnkudGFyZ2V0KTtcbiAgICAgICAgaWYgKGVudHJ5LmlzSW50ZXJzZWN0aW5nKSB7XG4gICAgICAgICAgc2xpZGVzLnB1c2goc2xpZGVJbmRleCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAoc2xpZGVzLmxlbmd0aCA+IDApIGVtaXQoJ3NsaWRlc0FkZGVkVG9WaWV3Jywgc2xpZGVzKTtcbiAgICB9LCBvcHRpb25zKTtcbiAgICBBcnJheS5mcm9tKGNvbnRhaW5lclJlZi52YWx1ZT8uY2hpbGRyZW4gPz8gW10pLmZvckVhY2goKGNoaWxkKSA9PiB7XG4gICAgICBpZiAoc2xpZGVPYnNlcnZlci52YWx1ZSkgc2xpZGVPYnNlcnZlci52YWx1ZS5vYnNlcnZlKGNoaWxkKTtcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBvYnNlcnZlU2xvdCA9ICgpID0+IHtcbiAgICBjb25zdCBvYnNlcnZlckNhbGxiYWNrID0gKCkgPT4ge1xuICAgICAgb2JzZXJ2ZVNsaWRlcygpO1xuICAgIH07XG4gICAgc2xvdE9ic2VydmVyLnZhbHVlID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIob2JzZXJ2ZXJDYWxsYmFjayk7XG4gICAgaWYgKGNvbnRhaW5lclJlZi52YWx1ZSkgc2xvdE9ic2VydmVyLnZhbHVlLm9ic2VydmUoY29udGFpbmVyUmVmLnZhbHVlLCB7IGNoaWxkTGlzdDogdHJ1ZSB9KTtcbiAgfTtcblxuICBvbk1vdW50ZWQoKCkgPT4ge1xuICAgIGlmICh3aW5kb3cpIHtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBtZWFzdXJlRG9tKTtcbiAgICB9XG5cbiAgICBtZWFzdXJlRG9tKCk7XG4gICAgb2JzZXJ2ZVNsaWRlcygpO1xuICAgIG9ic2VydmVTbG90KCk7XG4gIH0pO1xuXG4gIG9uVW5tb3VudGVkKCgpID0+IHtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgbWVhc3VyZURvbSk7XG4gICAgc2xpZGVPYnNlcnZlci52YWx1ZT8uZGlzY29ubmVjdCgpO1xuICAgIHNsb3RPYnNlcnZlci52YWx1ZT8uZGlzY29ubmVjdCgpO1xuICB9KTtcblxuICBvblVwZGF0ZWQoKCkgPT4ge1xuICAgIG1lYXN1cmVEb20oKTtcbiAgfSk7XG5cbiAgd2F0Y2goY3VycmVudFNsaWRlLCAoKSA9PiB7XG4gICAgZW1pdCgnc2xpZGVDaGFuZ2UnLCBjdXJyZW50U2xpZGUudmFsdWUpO1xuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxzZWN0aW9uXG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtY2Fyb3VzZWwnLFxuICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICBDU1MuR0FQLk9ORSxcbiAgICAgIENTUy5XSURUSC5NQVhfRlVMTCxcbiAgICBdXCJcbiAgICByZWY9XCJjYXJvdXNlbFJlZlwiXG4gID5cbiAgICA8c2VjdGlvblxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIHByb3BzLnRpdGxlID8gQ1NTLkFYSVMxLkJFVFdFRU4gOiBDU1MuQVhJUzEuRU5ELCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuV0lEVEguRlVMTF1cIlxuICAgICAgdi1pZj1cIiFwcm9wcy5pc0Zsb2F0aW5nICYmIChzaG93QnV0dG9ucyB8fCBwcm9wcy50aXRsZSlcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuT05FXVwiXG4gICAgICAgIHYtaWY9XCJwcm9wcy50aXRsZSB8fCBwcm9wcy5zdWJ0aXRsZVwiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbaXNIZWFkbGluZTEgPyBDU1MuRk9OVC5ST0xFLkhFQURMSU5FXzEgOiBDU1MuRk9OVC5ST0xFLkhFQURMSU5FXzJdXCJcbiAgICAgICAgICB2LWlmPVwicHJvcHMudGl0bGVcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcHJvcHMudGl0bGUgfX1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzIsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICAgIHYtaWY9XCJwcm9wcy5zdWJ0aXRsZVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBwcm9wcy5zdWJ0aXRsZSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLk9ORV1cIlxuICAgICAgICB2LWlmPVwic2hvd0J1dHRvbnNcIlxuICAgICAgPlxuICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJjdXJyZW50U2xpZGUgPT09IDBcIlxuICAgICAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX0xFRlRcIlxuICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlRFUlRJQVJZXCJcbiAgICAgICAgICBAY2xpY2s9XCJzaG93UHJldmlvdXNTbGlkZVwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgICAgOmRpc2FibGVkPVwiaXNMYXN0U2xpZGVcIlxuICAgICAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX1JJR0hUXCJcbiAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5URVJUSUFSWVwiXG4gICAgICAgICAgQGNsaWNrPVwic2hvd05leHRTbGlkZVwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L3NlY3Rpb24+XG5cbiAgICA8c2xvdCBuYW1lPVwibWlzY1wiIC8+XG5cbiAgICA8ZGl2IDpjbGFzcz1cIltDU1MuUE9TSVRJT04uUkVMQVRJVkVdXCI+XG4gICAgICA8dWxcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLWNhcm91c2VsLWNvbnRhaW5lcicsXG4gICAgICAgICAgcHJvcHMuYmxlZWQgJiYgJ2JsZWVkJyxcbiAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgIENTUy5HQVAuT05FLFxuICAgICAgICAgIENTUy5MSVNUX0JVTExFVFMuT0ZGLFxuICAgICAgICAgIENTUy5PVkVSRkxPVy5YLlNDUk9MTCxcbiAgICAgICAgICBDU1MuU0NST0xMQkFSLk9GRixcbiAgICAgICAgICBDU1MuU05BUC5PTixcbiAgICAgICAgXVwiXG4gICAgICAgIHJlZj1cImNvbnRhaW5lclJlZlwiXG4gICAgICAgIEBzY3JvbGw9XCJoYW5kbGVTY3JvbGxcIlxuICAgICAgPlxuICAgICAgICA8c2xvdCAvPlxuICAgICAgPC91bD5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtY2Fyb3VzZWwtYnV0dG9uLW92ZXJsYXknLFxuICAgICAgICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gICAgICAgIENTUy5QT1NJVElPTklORy5UT1AsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMS5CRVRXRUVOLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgQ1NTLkhFSUdIVC5GVUxMLFxuICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICBwcm9wcy5pc0hpZGVhd2F5QnV0dG9ucyA/ICdoaWRlYXdheScgOiAnJyxcbiAgICAgIF1cIlxuICAgICAgdi1pZj1cImlzRmxvYXRpbmcgJiYgc2hvd0J1dHRvbnNcIlxuICAgID5cbiAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5MRUZULk9ORSwgQ1NTLlBPSU5URVJfRVZFTlRTLk9OXVwiXG4gICAgICAgIDpkaXNhYmxlZD1cImN1cnJlbnRTbGlkZSA9PT0gMFwiXG4gICAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX0xFRlRcIlxuICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgQGNsaWNrPVwic2hvd1ByZXZpb3VzU2xpZGVcIlxuICAgICAgLz5cblxuICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgIDpjbGFzcz1cIltDU1MuTUFSR0lOLlJJR0hULk9ORSwgQ1NTLlBPSU5URVJfRVZFTlRTLk9OXVwiXG4gICAgICAgIDpkaXNhYmxlZD1cImlzTGFzdFNsaWRlXCJcbiAgICAgICAgOmljb249XCJJQ09OLkNIRVZST05fUklHSFRcIlxuICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgQGNsaWNrPVwic2hvd05leHRTbGlkZVwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuICA8L3NlY3Rpb24+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1jYXJvdXNlbC1jb250YWluZXIuYmxlZWQge1xuICAgIHRyYW5zaXRpb246IG1hcmdpbiB2YXIoLS10aWRlLWFuaW1hdGUpLCBwYWRkaW5nIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAudGlkZS1jYXJvdXNlbC1idXR0b24tb3ZlcmxheS5oaWRlYXdheSB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuXG4gIC50aWRlLWNhcm91c2VsOmhvdmVyIC50aWRlLWNhcm91c2VsLWJ1dHRvbi1vdmVybGF5LmhpZGVhd2F5IHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG48L3N0eWxlPlxuIiwiZXhwb3J0IGNvbnN0IE9CSkVDVF9GSVQgPSB7XG4gIENPTlRBSU46ICdjb250YWluJyxcbiAgQ09WRVI6ICdjb3ZlcicsXG4gIFNDQUxFX0RPV046ICdzY2FsZS1kb3duJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIE9iamVjdEZpdCA9ICh0eXBlb2YgT0JKRUNUX0ZJVClba2V5b2YgdHlwZW9mIE9CSkVDVF9GSVRdO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIHJlZiB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHsgT0JKRUNUX0ZJVCB9IGZyb20gJ0AvdHlwZXMvSW1hZ2UnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBPYmplY3RGaXQgfSBmcm9tICdAL3R5cGVzL0ltYWdlJztcbiAgaW1wb3J0IHR5cGUgeyBTb3VyY2UgfSBmcm9tICdAL3R5cGVzL1NvdXJjZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBhbHQ6IHN0cmluZztcbiAgICBoZWlnaHQ/OiBzdHJpbmc7XG4gICAgaXNMYXp5PzogYm9vbGVhbjtcbiAgICBvYmplY3RGaXQ/OiBPYmplY3RGaXQ7XG4gICAgc291cmNlcz86IFNvdXJjZVtdO1xuICAgIHNyYz86IHN0cmluZztcbiAgICB3aWR0aD86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGFsdDogJycsXG4gICAgaGVpZ2h0OiB1bmRlZmluZWQsXG4gICAgaXNMYXp5OiB0cnVlLFxuICAgIG9iamVjdEZpdDogT0JKRUNUX0ZJVC5DT1ZFUixcbiAgICBzb3VyY2VzOiAoKSA9PiBbXSxcbiAgICBzcmM6IHVuZGVmaW5lZCxcbiAgICB3aWR0aDogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBwaWN0dXJlID0gcmVmKCk7XG4gIGNvbnN0IGltZyA9IHJlZigpO1xuXG4gIGNvbnN0IGltYWdlRGVmYXVsdCA9ICdodHRwczovL2Nkbi1zdGF0aWMudGlsYWJzLmlvL21hcmtldHBsYWNlL2NvbW1vbi9pbWFnZS1jb21pbmctc29vbi5zdmcnO1xuXG4gIGNvbnN0IG9iamVjdEZpdENsYXNzTmFtZSA9IGNvbXB1dGVkPHN0cmluZz4oKCkgPT4ge1xuICAgIHN3aXRjaCAocHJvcHMub2JqZWN0Rml0KSB7XG4gICAgICBjYXNlIE9CSkVDVF9GSVQuQ09OVEFJTjpcbiAgICAgICAgcmV0dXJuIENTUy5PQkpFQ1QuQ09OVEFJTjtcbiAgICAgIGNhc2UgT0JKRUNUX0ZJVC5DT1ZFUjpcbiAgICAgICAgcmV0dXJuIENTUy5PQkpFQ1QuQ09WRVI7XG4gICAgICBjYXNlIE9CSkVDVF9GSVQuU0NBTEVfRE9XTjpcbiAgICAgICAgcmV0dXJuIENTUy5PQkpFQ1QuU0NBTEVfRE9XTjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBPQkpFQ1RfRklULkNPVkVSO1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3Qgc2V0SW1hZ2VGcm9tRGVmYXVsdCA9ICgpID0+IHtcbiAgICBjb25zdCBjdXJyZW50U3JjID0gaW1nLnZhbHVlPy5jdXJyZW50U3JjO1xuICAgIGNvbnN0IHBpY3R1cmVTb3VyY2UgPSBwaWN0dXJlLnZhbHVlPy5xdWVyeVNlbGVjdG9yKGBzb3VyY2Vbc3Jjc2V0PVwiJHtjdXJyZW50U3JjfVwiXWApO1xuXG4gICAgaWYgKGN1cnJlbnRTcmMgJiYgcGljdHVyZVNvdXJjZSkge1xuICAgICAgcGljdHVyZVNvdXJjZS5zcmNzZXQgPSBpbWFnZURlZmF1bHQ7XG4gICAgfSBlbHNlIGlmIChpbWcudmFsdWUpIHtcbiAgICAgIGltZy52YWx1ZS5zcmMgPSBpbWFnZURlZmF1bHQ7XG4gICAgfVxuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPHBpY3R1cmVcbiAgICA6Y2xhc3M9XCJbJ3RpZGUtaW1hZ2UnLCBDU1MuRElTUExBWS5CTE9DS11cIlxuICAgIHJlZj1cInBpY3R1cmVcIlxuICAgIDpzdHlsZT1cIlxuICAgICAgd2lkdGggfHwgaGVpZ2h0XG4gICAgICAgID8ge1xuICAgICAgICAgICAgd2lkdGg6IHdpZHRoIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGhlaWdodDogaGVpZ2h0IHx8IHVuZGVmaW5lZCxcbiAgICAgICAgICB9XG4gICAgICAgIDogdW5kZWZpbmVkXG4gICAgXCJcbiAgPlxuICAgIDxzb3VyY2VcbiAgICAgIDprZXk9XCJzb3VyY2Uuc3Jjc2V0XCJcbiAgICAgIDptZWRpYT1cImAobWluLXdpZHRoOiR7c291cmNlLm1lZGlhfXB4KWBcIlxuICAgICAgOnNyY3NldD1cInNvdXJjZS5zcmNzZXRcIlxuICAgICAgdi1mb3I9XCJzb3VyY2UgaW4gcHJvcHMuc291cmNlc1wiXG4gICAgLz5cblxuICAgIDxpbWdcbiAgICAgIDphbHQ9XCJhbHRcIlxuICAgICAgOmNsYXNzPVwiWyd0aWRlLWltYWdlLWltZycsIENTUy5XSURUSC5GVUxMLCBDU1MuSEVJR0hULkZVTEwsIENTUy5PQkpFQ1QuQ0VOVEVSLCBvYmplY3RGaXRDbGFzc05hbWVdXCJcbiAgICAgIDpmZXRjaHByaW9yaXR5PVwiaXNMYXp5ID8gdW5kZWZpbmVkIDogJ2hpZ2gnXCJcbiAgICAgIDpsb2FkaW5nPVwicHJvcHMuaXNMYXp5ID8gJ2xhenknIDogJ2VhZ2VyJ1wiXG4gICAgICByZWY9XCJpbWdcIlxuICAgICAgOnNyYz1cInNyYyA/PyBpbWFnZURlZmF1bHRcIlxuICAgICAgQGVycm9yPVwic2V0SW1hZ2VGcm9tRGVmYXVsdFwiXG4gICAgLz5cbiAgPC9waWN0dXJlPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW1hZ2UtaW1nIHtcbiAgICBib3JkZXItcmFkaXVzOiBpbmhlcml0O1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IGZvcm1hdE51bWJlciB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBjaGVja2VkPzogYm9vbGVhbjtcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgaW5kZXRlcm1pbmF0ZT86IGJvb2xlYW47XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBudW1iZXI/OiBudW1iZXI7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBjaGVja2VkOiBmYWxzZSxcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgaW5kZXRlcm1pbmF0ZTogZmFsc2UsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbmFtZTogdW5kZWZpbmVkLFxuICAgIG51bWJlcjogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBpc0NoZWNrZWQgPSBjb21wdXRlZCgoKSA9PiBwcm9wcy5jaGVja2VkIHx8IHByb3BzLmluZGV0ZXJtaW5hdGUpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWlucHV0LWNoZWNrYm94JyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICBkaXNhYmxlZCA/IFsnZGlzYWJsZWQnLCBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGXSA6IENTUy5DVVJTT1IuUE9JTlRFUixcbiAgICBdXCJcbiAgPlxuICAgIDxpbnB1dFxuICAgICAgOmNoZWNrZWQ9XCJpc0NoZWNrZWRcIlxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLk5PTkVdXCJcbiAgICAgIDpkaXNhYmxlZD1cInByb3BzLmRpc2FibGVkXCJcbiAgICAgIDpuYW1lPVwicHJvcHMubmFtZVwiXG4gICAgICByZWY9XCJpbnB1dFwiXG4gICAgICBAY2xpY2sucHJldmVudFxuICAgICAgOmlkPVwicHJvcHMuaW5wdXRJZFwiXG4gICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgIC8+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LWNoZWNrYm94LWN1c3RvbScsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMxLkNFTlRFUixcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkZMRVguU0hSSU5LLk9GRixcbiAgICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgICAgaXNDaGVja2VkID8gW0NTUy5CT1JERVIuQ09MT1IuSElHSCwgQ1NTLkJHLlNFQ09OREFSWV0gOiBbQ1NTLkJPUkRFUi5DT0xPUi5ERUZBVUxULCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXSxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuUVVBUlRFUixcbiAgICAgICAgaXNDaGVja2VkICYmICdjaGVja2VkJyxcbiAgICAgICAgZGlzYWJsZWQgPyBDU1MuQ1VSU09SLk5PVF9BTExPV0VEIDogQ1NTLkNVUlNPUi5QT0lOVEVSLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5DT0xPUi5TRUNPTkRBUlldXCJcbiAgICAgICAgOmljb249XCJwcm9wcy5pbmRldGVybWluYXRlID8gSUNPTi5SRU1PVkUgOiBJQ09OLkNIRUNLXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgdi1pZj1cImlzQ2hlY2tlZFwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGxhYmVsXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMS5CRVRXRUVOLFxuICAgICAgICBDU1MuRkxFWC5HUk9XLk9OLFxuICAgICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMSxcbiAgICAgICAgZGlzYWJsZWQgPyBDU1MuQ1VSU09SLk5PVF9BTExPV0VEIDogQ1NTLkNVUlNPUi5QT0lOVEVSLFxuICAgICAgXVwiXG4gICAgICA6Zm9yPVwicHJvcHMuaW5wdXRJZFwiXG4gICAgICBAY2xpY2sucHJldmVudFxuICAgICAgdi1pZj1cImxhYmVsXCJcbiAgICA+XG4gICAgICA8c3Bhbj57eyBsYWJlbCB9fTwvc3Bhbj5cbiAgICAgIDxzcGFuXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgdi1pZj1cInByb3BzLm51bWJlclwiXG4gICAgICA+XG4gICAgICAgICh7eyBmb3JtYXROdW1iZXIocHJvcHMubnVtYmVyKSB9fSlcbiAgICAgIDwvc3Bhbj5cbiAgICA8L2xhYmVsPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWlucHV0LWNoZWNrYm94LmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiB2YXIoLS10aWRlLWRpc2FibGVkKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LWNoZWNrYm94LWN1c3RvbSB7XG4gICAgd2lkdGg6IDI0cHg7XG4gICAgaGVpZ2h0OiAyNHB4O1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBmb3JtYXROdW1iZXIgfSBmcm9tICdAL3V0aWxpdGllcy9mb3JtYXQnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgY2hlY2tlZD86IGJvb2xlYW47XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgbnVtYmVyPzogbnVtYmVyO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgY2hlY2tlZDogZmFsc2UsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG51bWJlcjogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBjaGVja2VkID0gcmVmKHByb3BzLmNoZWNrZWQpO1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLmNoZWNrZWQsXG4gICAgKG5ld1ZhbHVlLCBvbGRWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlICE9PSBvbGRWYWx1ZSB8fCBuZXdWYWx1ZSAhPT0gY2hlY2tlZC52YWx1ZSkge1xuICAgICAgICBjaGVja2VkLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB9XG4gICAgfVxuICApO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWlucHV0LXJhZGlvJyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgIHByb3BzLmRpc2FibGVkICYmICdkaXNhYmxlZCcsXG4gICAgXVwiXG4gID5cbiAgICA8aW5wdXRcbiAgICAgIDpjaGVja2VkPVwiY2hlY2tlZFwiXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuTk9ORV1cIlxuICAgICAgOmlkPVwicHJvcHMuaW5wdXRJZFwiXG4gICAgICBuYW1lPVwiXCJcbiAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICB2YWx1ZT1cIlwiXG4gICAgLz5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtcmFkaW8tY3VzdG9tJyxcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgICBjaGVja2VkID8gQ1NTLkJPUkRFUi5DT0xPUi5ISUdIIDogQ1NTLkJPUkRFUi5DT0xPUi5ERUZBVUxULFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBDU1MuQ1VSU09SLlBPSU5URVIsXG4gICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PTixcbiAgICAgICAgY2hlY2tlZCAmJiAnY2hlY2tlZCcsXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1pbnB1dC1yYWRpby1jaGVjaycsIENTUy5CT1JERVIuUkFESVVTLkZVTEwsIHByb3BzLmNoZWNrZWQgJiYgQ1NTLkJHLlNFQ09OREFSWV1cIiAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGxhYmVsXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5GTEVYLkdST1cuT04sXG4gICAgICAgIENTUy5BWElTMS5CRVRXRUVOLFxuICAgICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMSxcbiAgICAgICAgQ1NTLkNVUlNPUi5QT0lOVEVSLFxuICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT04sXG4gICAgICBdXCJcbiAgICAgIDpmb3I9XCJwcm9wcy5pbnB1dElkXCJcbiAgICA+XG4gICAgICA8c3Bhbj57eyBsYWJlbCB9fTwvc3Bhbj5cbiAgICAgIDxzcGFuXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgdi1pZj1cInByb3BzLm51bWJlclwiXG4gICAgICA+XG4gICAgICAgICh7eyBmb3JtYXROdW1iZXIocHJvcHMubnVtYmVyKSB9fSlcbiAgICAgIDwvc3Bhbj5cbiAgICA8L2xhYmVsPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWlucHV0LXJhZGlvLmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiB2YXIoLS10aWRlLWRpc2FibGVkKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXJhZGlvLWN1c3RvbSB7XG4gICAgd2lkdGg6IDI0cHg7XG4gICAgaGVpZ2h0OiAyNHB4O1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtcmFkaW8tY2hlY2sge1xuICAgIHdpZHRoOiAxNnB4O1xuICAgIGhlaWdodDogMTZweDtcbiAgfVxuPC9zdHlsZT5cbiIsImltcG9ydCB7IHByaWNlVG9OdW1iZXIgfSBmcm9tICdAL3V0aWxpdGllcy9mb3JtYXQnO1xuXG5pbXBvcnQgdHlwZSB7IFN0cmluZ0lucHV0IH0gZnJvbSAnQC90eXBlcy9Gb3JtJztcbmltcG9ydCB0eXBlIHsgU2VsZWN0T3B0aW9uIH0gZnJvbSAnQC90eXBlcy9TZWxlY3QnO1xuaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uRXJyb3IsIFZhbGlkYXRpb25MZW5ndGgsIFZhbGlkYXRpb25SZXN1bHQsIFZhbGlkYXRvciB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbic7XG5pbXBvcnQgdHlwZSB7IFJlZiB9IGZyb20gJ3Z1ZSc7XG5cbnR5cGUgUmFuZ2VEYXRhID0ge1xuICBtaW46IG51bWJlciB8IG51bGw7XG4gIG1heDogbnVtYmVyIHwgbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBlcnJvck1lc3NhZ2VEZWZhdWx0ID0gJ1BsZWFzZSBlbnRlciBhIHZhbGlkIHZhbHVlLic7XG5cbmV4cG9ydCBjb25zdCBub0Vycm9yID0ge1xuICBtZXNzYWdlOiAnJyxcbiAgdmFsaWQ6IHRydWUsXG59IGFzIFJlYWRvbmx5PFZhbGlkYXRpb25SZXN1bHQ+O1xuXG5leHBvcnQgY29uc3QgY2hlY2tGb3JtYXQgPSAoZm9ybWF0OiBSZWdFeHApID0+IHtcbiAgcmV0dXJuICh2YWx1ZTogc3RyaW5nKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gICAgbGV0IHJlc3VsdCA9IG5vRXJyb3I7XG5cbiAgICBpZiAoIXZhbHVlLnRyaW0oKS5tYXRjaChmb3JtYXQpKSB7XG4gICAgICByZXN1bHQgPSB7XG4gICAgICAgIG1lc3NhZ2U6IGVycm9yTWVzc2FnZURlZmF1bHQsXG4gICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRFcnJvck1lc3NhZ2UgPSAoZXJyb3JGcm9tUHJvcHM6IFZhbGlkYXRpb25FcnJvciwgZXJyb3JGcm9tUmVmOiBWYWxpZGF0aW9uRXJyb3IpID0+IHtcbiAgLy8gZXJyb3IgaW4gcHJvcHMgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHZhbGlkYXRpb24gZXJyb3JcbiAgaWYgKHR5cGVvZiBlcnJvckZyb21Qcm9wcyA9PT0gJ3N0cmluZycgJiYgZXJyb3JGcm9tUHJvcHMubGVuZ3RoID4gMCkgcmV0dXJuIGVycm9yRnJvbVByb3BzO1xuXG4gIHJldHVybiB0eXBlb2YgZXJyb3JGcm9tUmVmID09PSAnc3RyaW5nJyAmJiBlcnJvckZyb21SZWYubGVuZ3RoID4gMCA/IGVycm9yRnJvbVJlZiA6IGVycm9yTWVzc2FnZURlZmF1bHQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RmllbGRIYXNFcnJvciA9IChlcnJvckZyb21Qcm9wczogVmFsaWRhdGlvbkVycm9yLCBlcnJvckZyb21SZWY6IFZhbGlkYXRpb25FcnJvcikgPT5cbiAgZXJyb3JGcm9tUHJvcHMgIT09IGZhbHNlIHx8IGVycm9yRnJvbVJlZiAhPT0gZmFsc2U7XG5cbmV4cG9ydCBjb25zdCBnZXRGaWVsZExlbmd0aElzVmFsaWQgPSAoeyBtYXhsZW5ndGgsIG1pbmxlbmd0aCwgcmVxdWlyZWQsIHZhbHVlIH06IFZhbGlkYXRpb25MZW5ndGgpID0+IHtcbiAgY29uc3QgaXNFbXB0eUFuZFVucmVxdWlyZWQgPSB2YWx1ZS5sZW5ndGggPT09IDAgJiYgIXJlcXVpcmVkO1xuICBjb25zdCBpc1Rvb0xvbmcgPSBtYXhsZW5ndGggJiYgdmFsdWUubGVuZ3RoID4gbWF4bGVuZ3RoO1xuICBjb25zdCBpc1Rvb1Nob3J0ID0gIWlzRW1wdHlBbmRVbnJlcXVpcmVkICYmIG1pbmxlbmd0aCAmJiB2YWx1ZS5sZW5ndGggPCBtaW5sZW5ndGg7XG5cbiAgcmV0dXJuICFpc1Rvb1Nob3J0ICYmICFpc1Rvb0xvbmc7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TWF4UmFuZ2VJc1ZhbGlkID0gKHsgbWluIH06IFBpY2s8UmFuZ2VEYXRhLCAnbWluJz4sIHR5cGU/OiAncHJpY2UnKSA9PiB7XG4gIHJldHVybiAodmFsdWU6IHN0cmluZyk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICAgIGxldCBuZXdNYXg6IG51bWJlciB8IG51bGwgPSB0eXBlID09PSAncHJpY2UnID8gcHJpY2VUb051bWJlcih2YWx1ZSkgOiBOdW1iZXIodmFsdWUpO1xuICAgIG5ld01heCA9ICFpc05hTihuZXdNYXgpID8gbmV3TWF4IDogbnVsbDtcbiAgICBpZiAobWluICYmIG5ld01heCkge1xuICAgICAgaWYgKG5ld01heCA+PSBtaW4pIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbWVzc2FnZTogYE11c3QgYmUgZ3JlYXRlciB0aGFuIG1pbmAsXG4gICAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbm9FcnJvcjtcbiAgICB9XG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TWluUmFuZ2VJc1ZhbGlkID0gKHsgbWF4IH06IFBpY2s8UmFuZ2VEYXRhLCAnbWF4Jz4sIHR5cGU/OiAncHJpY2UnKSA9PiB7XG4gIHJldHVybiAodmFsdWU6IHN0cmluZyk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICAgIGxldCBuZXdNaW46IG51bWJlciB8IG51bGwgPSB0eXBlID09PSAncHJpY2UnID8gcHJpY2VUb051bWJlcih2YWx1ZSkgOiBOdW1iZXIodmFsdWUpO1xuICAgIG5ld01pbiA9ICFpc05hTihuZXdNaW4pID8gbmV3TWluIDogbnVsbDtcbiAgICBpZiAobWF4ICYmIG5ld01pbikge1xuICAgICAgaWYgKG5ld01pbiA8PSBtYXgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbWVzc2FnZTogYE11c3QgYmUgbGVzcyB0aGFuIG1heGAsXG4gICAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbm9FcnJvcjtcbiAgICB9XG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U2VsZWN0T3B0aW9uc0Zyb21TdHJpbmdzID0gKHN0cmluZ3M6IHN0cmluZ1tdKSA9PlxuICBzdHJpbmdzLm1hcChcbiAgICAob3B0aW9uKSA9PlxuICAgICAgKHtcbiAgICAgICAgbGFiZWw6IG9wdGlvbixcbiAgICAgICAgdmFsdWU6IG9wdGlvbixcbiAgICAgIH0gYXMgU2VsZWN0T3B0aW9uKVxuICApO1xuXG5leHBvcnQgY29uc3QgaGFuZGxlRmllbGRWYWxpZGF0aW9uID0gKHtcbiAgZXJyb3IsXG4gIGVycm9yRnJvbVByb3BzLFxuICBtYXhsZW5ndGgsXG4gIG1pbmxlbmd0aCxcbiAgcmVxdWlyZWQgPSBmYWxzZSxcbiAgdmFsaWRhdG9ycyxcbiAgdmFsdWUsXG59OiB7XG4gIGVycm9yOiBSZWY8VmFsaWRhdGlvbkVycm9yPjtcbiAgZXJyb3JGcm9tUHJvcHM6IFZhbGlkYXRpb25FcnJvcjtcbiAgbWF4bGVuZ3RoPzogbnVtYmVyO1xuICBtaW5sZW5ndGg/OiBudW1iZXI7XG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgdmFsaWRhdG9ycz86IFZhbGlkYXRvcltdO1xuICB2YWx1ZT86IFJlZjxzdHJpbmcgfCB1bmRlZmluZWQ+O1xufSkgPT4ge1xuICAvLyBlcnJvciBpbiBwcm9wcyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdmFsaWRhdGlvbiBlcnJvclxuXG4gIGVycm9yLnZhbHVlID0gZXJyb3JGcm9tUHJvcHMgPyBlcnJvckZyb21Qcm9wcyA6IGZhbHNlO1xuXG4gIGlmICghZXJyb3IudmFsdWUgJiYgdmFsaWRhdG9ycykge1xuICAgIGNvbnN0IHZhbGlkYXRpb24gPSB2YWxpZGF0ZVByb3BlcnR5KHZhbHVlPy52YWx1ZSB8fCAnJywgdmFsaWRhdG9ycyk7XG5cbiAgICBpZiAoIXZhbGlkYXRpb24udmFsaWQpIHtcbiAgICAgIGVycm9yLnZhbHVlID0gdmFsaWRhdGlvbi5tZXNzYWdlO1xuICAgIH1cbiAgfVxuXG4gIGlmICghZXJyb3IudmFsdWUgJiYgKG1heGxlbmd0aCB8fCBtaW5sZW5ndGgpKSB7XG4gICAgY29uc3QgbGVuZ3RoVmFsaWRhdGlvbiA9IHZhbGlkYXRlTGVuZ3RoKHtcbiAgICAgIG1heGxlbmd0aCxcbiAgICAgIG1pbmxlbmd0aCxcbiAgICAgIHJlcXVpcmVkLFxuICAgICAgdmFsdWU6IHZhbHVlPy52YWx1ZSB8fCAnJyxcbiAgICB9KTtcblxuICAgIGlmICghbGVuZ3RoVmFsaWRhdGlvbi52YWxpZCkge1xuICAgICAgZXJyb3IudmFsdWUgPSBsZW5ndGhWYWxpZGF0aW9uLm1lc3NhZ2U7XG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVGaWVsZHNGcm9tUmVmcyhmaWVsZHM6IHsgW2tleTogc3RyaW5nXTogUmVmPFN0cmluZ0lucHV0IHwgbnVsbD4gfSkge1xuICBsZXQgdmFsaWQgPSB0cnVlO1xuXG4gIGZvciAoY29uc3Qga2V5IGluIGZpZWxkcykge1xuICAgIGlmIChmaWVsZHNba2V5XS52YWx1ZT8ucmVxdWlyZWQpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gZmllbGRzW2tleV0udmFsdWU/LnZhbHVlO1xuICAgICAgdmFsaWQgPSB2YWxpZCAmJiAhIXZhbHVlICYmIHZhbHVlLnRyaW0oKSAhPT0gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgZXJyb3IgPSBmaWVsZHNba2V5XS52YWx1ZT8uZXJyb3I7XG4gICAgdmFsaWQgPSB2YWxpZCAmJiAhZXJyb3I7XG4gIH1cblxuICByZXR1cm4gdmFsaWQ7XG59XG5cbmV4cG9ydCBjb25zdCB2YWxpZGF0ZUxlbmd0aCA9ICh7XG4gIG1heGxlbmd0aCxcbiAgbWlubGVuZ3RoLFxuICByZXF1aXJlZCA9IGZhbHNlLFxuICB2YWx1ZSxcbn06IFZhbGlkYXRpb25MZW5ndGgpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgY29uc3QgcmVzcG9uc2UgPSB7XG4gICAgbWVzc2FnZTogJycsXG4gICAgdmFsaWQ6IHRydWUsXG4gIH07XG5cbiAgcmVzcG9uc2UudmFsaWQgPSBnZXRGaWVsZExlbmd0aElzVmFsaWQoe1xuICAgIG1heGxlbmd0aCxcbiAgICBtaW5sZW5ndGgsXG4gICAgcmVxdWlyZWQsXG4gICAgdmFsdWUsXG4gIH0pO1xuXG4gIGlmIChyZXNwb25zZS52YWxpZCkgcmV0dXJuIHJlc3BvbnNlO1xuXG4gIHJlc3BvbnNlLm1lc3NhZ2UgPSBlcnJvck1lc3NhZ2VEZWZhdWx0O1xuXG4gIGlmIChtYXhsZW5ndGggJiYgbWlubGVuZ3RoKSB7XG4gICAgcmVzcG9uc2UubWVzc2FnZSA9IGBQbGVhc2UgZW50ZXIgYSB2YWx1ZSBiZXR3ZWVuICR7bWlubGVuZ3RofSBhbmQgJHttYXhsZW5ndGh9IGNoYXJhY3RlcnMgaW4gbGVuZ3RoLmA7XG4gIH0gZWxzZSBpZiAobWF4bGVuZ3RoKSB7XG4gICAgcmVzcG9uc2UubWVzc2FnZSA9IGBQbGVhc2UgZW50ZXIgYSB2YWx1ZSBubyBtb3JlIHRoYW4gJHttYXhsZW5ndGh9IGNoYXJhY3RlcnMgaW4gbGVuZ3RoLmA7XG4gIH0gZWxzZSBpZiAobWlubGVuZ3RoKSB7XG4gICAgcmVzcG9uc2UubWVzc2FnZSA9IGBQbGVhc2UgZW50ZXIgYSB2YWx1ZSBubyBsZXNzIHRoYW4gJHttaW5sZW5ndGh9IGNoYXJhY3RlcnMgaW4gbGVuZ3RoLmA7XG4gIH1cblxuICByZXR1cm4gcmVzcG9uc2U7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVQcm9wZXJ0eSh2YWx1ZTogc3RyaW5nLCB2YWxpZGF0b3JzOiAoKHZhbHVlOiBzdHJpbmcpID0+IFZhbGlkYXRpb25SZXN1bHQpW10pOiBWYWxpZGF0aW9uUmVzdWx0IHtcbiAgZm9yIChjb25zdCB2YWxpZGF0b3Igb2YgdmFsaWRhdG9ycykge1xuICAgIGNvbnN0IHZhbGlkYXRpb24gPSB2YWxpZGF0b3IodmFsdWUpO1xuICAgIGlmICghdmFsaWRhdGlvbi52YWxpZCkge1xuICAgICAgcmV0dXJuIHZhbGlkYXRpb247XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBtZXNzYWdlOiAnJyxcbiAgICB2YWxpZDogdHJ1ZSxcbiAgfTtcbn1cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBnZXRFcnJvck1lc3NhZ2UsIGdldEZpZWxkSGFzRXJyb3IgfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uJztcblxuICBpbXBvcnQgdHlwZSB7IFNlbGVjdEZpZWxkIH0gZnJvbSAnQC90eXBlcy9GaWVsZCc7XG4gIGltcG9ydCB0eXBlIHsgU2VsZWN0T3B0aW9uLCBTZWxlY3RPcHRpb25Hcm91cCB9IGZyb20gJ0AvdHlwZXMvU2VsZWN0JztcblxuICBpbnRlcmZhY2UgUHJvcHMgZXh0ZW5kcyBTZWxlY3RGaWVsZCB7XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBzdXBwb3J0aW5nVGV4dD86IHN0cmluZztcbiAgfVxuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGVycm9yOiBmYWxzZSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgc3VwcG9ydGluZ1RleHQ6IHVuZGVmaW5lZCxcbiAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBlcnJvciA9IHJlZihwcm9wcy5lcnJvcik7XG4gIGNvbnN0IGhhc0ZvY3VzID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgaW5wdXQgPSByZWY8SFRNTFNlbGVjdEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgcmVxdWlyZWQgPSByZWYocHJvcHMucmVxdWlyZWQpO1xuICBjb25zdCB2YWx1ZSA9IHJlZjxzdHJpbmcgfCB1bmRlZmluZWQ+KHByb3BzLnZhbHVlKTtcblxuICBjb25zdCBlcnJvck1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiBnZXRFcnJvck1lc3NhZ2UocHJvcHMuZXJyb3IsIGVycm9yLnZhbHVlKSk7XG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3QgaGFzRXJyb3IgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgJiYgIXZhbHVlLnZhbHVlKSB8fCBnZXRGaWVsZEhhc0Vycm9yKGVycm9yLnZhbHVlLCBwcm9wcy5lcnJvcikpO1xuICBjb25zdCBoYXNNaW5pbGFiZWwgPSBjb21wdXRlZCgoKSA9PiBoYXNGb2N1cy52YWx1ZSB8fCAhaXNFbXB0eS52YWx1ZSk7XG4gIGNvbnN0IGlzRW1wdHkgPSBjb21wdXRlZCgoKSA9PiB2YWx1ZS52YWx1ZSA9PT0gdW5kZWZpbmVkKTtcblxuICBjb25zdCBleHBhbmRPcHRpb25zID0gKCkgPT4ge1xuICAgIGNvbnN0IGV2ZW50ID0gbmV3IE1vdXNlRXZlbnQoJ21vdXNlZG93bicpO1xuICAgIGlucHV0Py52YWx1ZT8uZGlzcGF0Y2hFdmVudChldmVudCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXMgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzT3V0ID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gZmFsc2U7XG4gIH07XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMudmFsdWUsXG4gICAgKG5ld1ZhbHVlLCBvbGRWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlICE9PSBvbGRWYWx1ZSB8fCBuZXdWYWx1ZSAhPT0gdmFsdWUudmFsdWUpIHtcbiAgICAgICAgdmFsdWUudmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICk7XG5cbiAgZGVmaW5lRXhwb3NlKHsgZXJyb3IsIHZhbHVlIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWlucHV0LXNlbGVjdCcsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIGRpc2FibGVkICYmICdkaXNhYmxlZCcsXG4gICAgICBoYXNFcnJvciAmJiAnZXJyb3InLFxuICAgIF1cIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC1ib3JkZXInLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgcHJvcHMuZGlzYWJsZWQgPyBDU1MuQ1VSU09SLk5PVF9BTExPV0VEIDogJycsXG4gICAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICBdXCJcbiAgICAgIEBjbGljaz1cImV4cGFuZE9wdGlvbnNcIlxuICAgID5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5XSURUSC5GVUxMXVwiPlxuICAgICAgICA8bGFiZWxcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICBoYXNNaW5pbGFiZWwgPyBbJ21pbmlsYWJlbCcsIENTUy5GT05ULlJPTEUuTEFCRUxfM10gOiBDU1MuRk9OVC5ST0xFLkxBQkVMXzEsXG4gICAgICAgICAgICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gICAgICAgICAgICBDU1MuUE9TSVRJT05JTkcuTEVGVCxcbiAgICAgICAgICAgIENTUy5NQVJHSU4uVE9QLkhBTEYsXG4gICAgICAgICAgICBDU1MuTUFSR0lOLkxFRlQuT05FLFxuICAgICAgICAgICAgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgOmZvcj1cInByb3BzLmlucHV0SWRcIlxuICAgICAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgIDxzZWxlY3RcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICBDU1MuUEFERElORy5CT1RUT00uSEFMRixcbiAgICAgICAgICAgIENTUy5QQURESU5HLlguT05FLFxuICAgICAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgICAgICBkaXNhYmxlZCAmJiBDU1MuQ1VSU09SLk5PVF9BTExPV0VELFxuICAgICAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgOmRpc2FibGVkPVwiZGlzYWJsZWRcIlxuICAgICAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICAgICAgcmVmPVwiaW5wdXRcIlxuICAgICAgICAgIDpyZXF1aXJlZD1cInJlcXVpcmVkXCJcbiAgICAgICAgICBAZm9jdXM9XCJoYW5kbGVGb2N1c1wiXG4gICAgICAgICAgQGZvY3Vzb3V0PVwiaGFuZGxlRm9jdXNPdXRcIlxuICAgICAgICAgIDppZD1cInByb3BzLmlucHV0SWRcIlxuICAgICAgICAgIHYtbW9kZWw9XCJ2YWx1ZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8dGVtcGxhdGUgdi1mb3I9XCJvcHRncm91cCBpbiBwcm9wcy5vcHRncm91cHNcIj5cbiAgICAgICAgICAgIDxvcHRncm91cFxuICAgICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgICAgOmtleT1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb25Hcm91cCkubGFiZWxcIlxuICAgICAgICAgICAgICA6bGFiZWw9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uR3JvdXApLmxhYmVsXCJcbiAgICAgICAgICAgICAgdi1pZj1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb25Hcm91cCkub3B0aW9uc1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgICAgICA6a2V5PVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgICAgICA6dmFsdWU9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgICAgIHYtZm9yPVwib3B0aW9uIGluIChvcHRncm91cCBhcyBTZWxlY3RPcHRpb25Hcm91cCkub3B0aW9uc1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBvcHRpb24ubGFiZWwgfX1cbiAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICA8L29wdGdyb3VwPlxuXG4gICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgICAgICAgICA6a2V5PVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbikudmFsdWVcIlxuICAgICAgICAgICAgICA6c2VsZWN0ZWQ9XCJ2YWx1ZSA9PT0gKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbikudmFsdWUgPyB0cnVlIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgICAgOnZhbHVlPVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbikudmFsdWVcIlxuICAgICAgICAgICAgICB2LWVsc2VcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbikubGFiZWwgfX1cbiAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgIDprZXk9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgOnNlbGVjdGVkPVwidmFsdWUgPT09IG9wdGlvbi52YWx1ZSA/IHRydWUgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgOnZhbHVlPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgIHYtZm9yPVwib3B0aW9uIGluIG9wdGlvbnNcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxuICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICA8L3NlbGVjdD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5QT1NJVElPTi5BQlNPTFVURSwgQ1NTLlBPU0lUSU9OSU5HLlJJR0hULCBDU1MuTUFSR0lOLlJJR0hULk9ORSwgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRl1cIlxuICAgICAgICA6aWNvbj1cIklDT04uRVhQQU5EX01PUkVcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVJdXCJcbiAgICAgIHYtaWY9XCJwcm9wcy5zdXBwb3J0aW5nVGV4dCB8fCBoYXNFcnJvclwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltdXCJcbiAgICAgICAgOmljb249XCJJQ09OLkVSUk9SXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgdi1pZj1cImhhc0Vycm9yXCJcbiAgICAgIC8+XG5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfM11cIj5cbiAgICAgICAge3sgaGFzRXJyb3IgPyBlcnJvck1lc3NhZ2UgOiBwcm9wcy5zdXBwb3J0aW5nVGV4dCB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgc2VsZWN0IHtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICB9XG5cbiAgbGFiZWwge1xuICAgIGhlaWdodDogMS4xODc1cmVtO1xuICAgIHRyYW5zaXRpb246IGZvbnQtc2l6ZSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIGxhYmVsOm5vdCgubWluaWxhYmVsKSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgY2FsYyg5IC8gMTYgKiAxcmVtKSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IHZhcigtLXRpZGUtZGlzYWJsZWQpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtZXJyb3Itc3VyZmFjZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3I6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0OmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0yKTtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtYm9yZGVyLWhpZ2gpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMSk7XG4gICAgb3V0bGluZTogdmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSBzb2xpZCB2YXIoLS10aWRlLWJvcmRlcik7XG4gICAgb3V0bGluZS1vZmZzZXQ6IGNhbGModmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSAqIC0xKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5lcnJvciB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItcHJpbWFyeSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3Igb3B0aW9uIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1vbi1zdXJmYWNlKTtcbiAgfVxuXG4gIHNlbGVjdCB7XG4gICAgcGFkZGluZy10b3A6IDI3cHg7XG4gIH1cbjwvc3R5bGU+XG4iLCJleHBvcnQgY29uc3QgVEVYVF9JTlBVVF9UWVBFID0ge1xuICBEQVRFOiAnZGF0ZScsXG4gIERBVEVUSU1FX0xPQ0FMOiAnZGF0ZXRpbWUtbG9jYWwnLFxuICBFTUFJTDogJ2VtYWlsJyxcbiAgTU9OVEg6ICdtb250aCcsXG4gIE5VTUJFUjogJ251bWJlcicsXG4gIFBBU1NXT1JEOiAncGFzc3dvcmQnLFxuICBTRUFSQ0g6ICdzZWFyY2gnLFxuICBURUw6ICd0ZWwnLFxuICBURVhUOiAndGV4dCcsXG4gIFRJTUU6ICd0aW1lJyxcbiAgVVJMOiAndXJsJyxcbiAgV0VFSzogJ3dlZWsnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgVGV4dElucHV0VHlwZSA9ICh0eXBlb2YgVEVYVF9JTlBVVF9UWVBFKVtrZXlvZiB0eXBlb2YgVEVYVF9JTlBVVF9UWVBFXTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBURVhUX0lOUFVUX1RZUEUgfSBmcm9tICdAL3R5cGVzL1RleHRJbnB1dCc7XG4gIGltcG9ydCB7IGdldEVycm9yTWVzc2FnZSwgZ2V0RmllbGRIYXNFcnJvciwgaGFuZGxlRmllbGRWYWxpZGF0aW9uIH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbic7XG5cbiAgaW1wb3J0IHR5cGUgeyBGb3JtVmFsdWVUcmFuc2Zvcm1lciB9IGZyb20gJ0AvdHlwZXMvRm9ybSc7XG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB0eXBlIHsgVGV4dElucHV0VHlwZSB9IGZyb20gJ0AvdHlwZXMvVGV4dElucHV0JztcbiAgaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uRXJyb3IsIFZhbGlkYXRvciB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBhdXRvY29tcGxldGU/OiBib29sZWFuO1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBlcnJvcj86IFZhbGlkYXRpb25FcnJvcjtcbiAgICBoYXNDbGVhcj86IGJvb2xlYW47XG4gICAgaWNvbkxlYWRpbmc/OiBJY29uO1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBtYXhsZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgbWlubGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBwcmVmaXg/OiBzdHJpbmc7XG4gICAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICAgIHN1ZmZpeD86IHN0cmluZztcbiAgICBzdXBwb3J0aW5nVGV4dD86IHN0cmluZztcbiAgICB0cmFuc2Zvcm1WYWx1ZT86IEZvcm1WYWx1ZVRyYW5zZm9ybWVyO1xuICAgIHR5cGU/OiBUZXh0SW5wdXRUeXBlO1xuICAgIHZhbGlkYXRvcnM/OiBWYWxpZGF0b3JbXTtcbiAgICB2YWx1ZT86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGF1dG9jb21wbGV0ZTogZmFsc2UsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGVycm9yOiBmYWxzZSxcbiAgICBoYXNDbGVhcjogZmFsc2UsXG4gICAgaWNvbkxlYWRpbmc6IHVuZGVmaW5lZCxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBtYXhsZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBtaW5sZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBwcmVmaXg6IHVuZGVmaW5lZCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgc3VmZml4OiB1bmRlZmluZWQsXG4gICAgc3VwcG9ydGluZ1RleHQ6IHVuZGVmaW5lZCxcbiAgICB0cmFuc2Zvcm1WYWx1ZTogdW5kZWZpbmVkLFxuICAgIHR5cGU6IFRFWFRfSU5QVVRfVFlQRS5URVhULFxuICAgIHZhbGlkYXRvcnM6IHVuZGVmaW5lZCxcbiAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBlcnJvciA9IHJlZihwcm9wcy5lcnJvcik7XG4gIGNvbnN0IGhhc0ZvY3VzID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgaW5wdXQgPSByZWY8SFRNTElucHV0RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBzaG93UGFzc3dvcmQgPSByZWYoZmFsc2UpO1xuICBjb25zdCB2YWx1ZSA9IHJlZihwcm9wcy52YWx1ZSk7XG5cbiAgY29uc3QgZXJyb3JNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4gZ2V0RXJyb3JNZXNzYWdlKHByb3BzLmVycm9yLCBlcnJvci52YWx1ZSkpO1xuICBjb25zdCBmb3JtYXR0ZWRMYWJlbCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCAmJiBwcm9wcy5sYWJlbCA/IGAke3Byb3BzLmxhYmVsfSAqYCA6IHByb3BzLmxhYmVsKSk7XG4gIGNvbnN0IGhhc0NsZWFyID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMuaGFzQ2xlYXIgJiYgdmFsdWUudmFsdWUpO1xuICBjb25zdCBoYXNFcnJvciA9IGNvbXB1dGVkKFxuICAgICgpID0+IChwcm9wcy5yZXF1aXJlZCAmJiB2YWx1ZS52YWx1ZSAhPT0gdW5kZWZpbmVkICYmICF2YWx1ZS52YWx1ZSkgfHwgZ2V0RmllbGRIYXNFcnJvcihlcnJvci52YWx1ZSwgcHJvcHMuZXJyb3IpXG4gICk7XG4gIGNvbnN0IGhhc01pbmlsYWJlbCA9IGNvbXB1dGVkKCgpID0+IGhhc0ZvY3VzLnZhbHVlIHx8ICFpc0VtcHR5LnZhbHVlKTtcbiAgY29uc3QgaXNFbXB0eSA9IGNvbXB1dGVkKCgpID0+IHZhbHVlLnZhbHVlID09PSAnJyB8fCB2YWx1ZS52YWx1ZSA9PT0gdW5kZWZpbmVkKTtcbiAgY29uc3QgaW5wdXRUeXBlID0gY29tcHV0ZWQoKCkgPT5cbiAgICBwcm9wcy50eXBlID09PSBURVhUX0lOUFVUX1RZUEUuUEFTU1dPUkQgJiYgc2hvd1Bhc3N3b3JkLnZhbHVlID09PSB0cnVlID8gVEVYVF9JTlBVVF9UWVBFLlRFWFQgOiBwcm9wcy50eXBlXG4gICk7XG5cbiAgY29uc3QgaGFuZGxlQ2xlYXIgPSAoKSA9PiB7XG4gICAgdmFsdWUudmFsdWUgPSAnJztcbiAgICBpbnB1dC52YWx1ZT8uZm9jdXMoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1cyA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXNPdXQgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSBmYWxzZTtcblxuICAgIGlmICghdmFsdWUudmFsdWUpIHtcbiAgICAgIHZhbHVlLnZhbHVlID0gJyc7XG4gICAgfVxuXG4gICAgaGFuZGxlVmFsaWRhdGlvbigpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUlucHV0ID0gKCkgPT4ge1xuICAgIGlmIChwcm9wcy50cmFuc2Zvcm1WYWx1ZSkge1xuICAgICAgY29uc3QgZGlnaXRzID0gdmFsdWUudmFsdWU/Lm1hdGNoKC9cXGQvZyk/LmpvaW4oJycpIHx8IHVuZGVmaW5lZDtcblxuICAgICAgdmFsdWUudmFsdWUgPSBkaWdpdHMgPyBwcm9wcy50cmFuc2Zvcm1WYWx1ZShkaWdpdHMpIDogJyc7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVZhbGlkYXRpb24gPSAoKSA9PiB7XG4gICAgaGFuZGxlRmllbGRWYWxpZGF0aW9uKHtcbiAgICAgIGVycm9yLFxuICAgICAgZXJyb3JGcm9tUHJvcHM6IHByb3BzLmVycm9yLFxuICAgICAgbWF4bGVuZ3RoOiBwcm9wcy5tYXhsZW5ndGgsXG4gICAgICBtaW5sZW5ndGg6IHByb3BzLm1pbmxlbmd0aCxcbiAgICAgIHJlcXVpcmVkOiBwcm9wcy5yZXF1aXJlZCxcbiAgICAgIHZhbGlkYXRvcnM6IHByb3BzLnZhbGlkYXRvcnMsXG4gICAgICB2YWx1ZSxcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCB1cGRhdGVWYWx1ZSA9IChuZXdWYWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgdmFsdWUudmFsdWUgPSBuZXdWYWx1ZTtcbiAgfTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy52YWx1ZSxcbiAgICAobmV3VmFsdWUsIG9sZFZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUgIT09IG9sZFZhbHVlIHx8IG5ld1ZhbHVlICE9PSB2YWx1ZS52YWx1ZSkge1xuICAgICAgICB2YWx1ZS52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgKTtcblxuICBkZWZpbmVFeHBvc2Uoe1xuICAgIGVycm9yLFxuICAgIHJlcXVpcmVkOiBwcm9wcy5yZXF1aXJlZCxcbiAgICB1cGRhdGVWYWx1ZSxcbiAgICB2YWx1ZSxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtaW5wdXQtdGV4dCcsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIGRpc2FibGVkICYmICdkaXNhYmxlZCcsXG4gICAgICBoYXNFcnJvciAmJiAnZXJyb3InLFxuICAgIF1cIlxuICA+XG4gICAgPGxhYmVsXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LXRleHQtZmllbGQnLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgaGFzQ2xlYXIgPyBbQ1NTLlBBRERJTkcuUklHSFQuSEFMRiwgQ1NTLlBBRERJTkcuTEVGVC5PTkVdIDogW0NTUy5QQURESU5HLlguT05FXSxcbiAgICAgICAgQ1NTLlBBRERJTkcuWS5IQUxGLFxuICAgICAgICBkaXNhYmxlZCA/IENTUy5DVVJTT1IuTk9UX0FMTE9XRUQgOiBDU1MuQ1VSU09SLlRFWFQsXG4gICAgICBdXCJcbiAgICAgIDpmb3I9XCJpbnB1dElkXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICA6aWNvbj1cImljb25MZWFkaW5nXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgdi1pZj1cImljb25MZWFkaW5nXCJcbiAgICAgIC8+XG5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUiwgQ1NTLldJRFRILkZVTExdXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAndGlkZS1pbnB1dC10ZXh0LXByZWZpeCcsXG4gICAgICAgICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMSxcbiAgICAgICAgICAgICFoYXNFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICBoYXNNaW5pbGFiZWwgPyAnJyA6ICdvZmZzZXQnLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIHYtaWY9XCJwcmVmaXhcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcHJlZml4IH19XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5XSURUSC5GVUxMXVwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dC1sYWJlbCcsXG4gICAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/IFsnbWluaWxhYmVsJywgQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXSA6IENTUy5GT05ULlJPTEUuTEFCRUxfMSxcbiAgICAgICAgICAgICAgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgICAgQ1NTLkNVUlNPUi5URVhULFxuICAgICAgICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICAgICAgXVwiXG4gICAgICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IGZvcm1hdHRlZExhYmVsIH19XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIDphdXRvY29tcGxldGU9XCJhdXRvY29tcGxldGUgPyAnb24nIDogJ29mZidcIlxuICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBkaXNhYmxlZCAmJiBDU1MuQ1VSU09SLk5PVF9BTExPV0VELCBDU1MuRk9OVC5ST0xFLkJPRFlfMV1cIlxuICAgICAgICAgICAgOmRpc2FibGVkPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgOm1heGxlbmd0aD1cIm1heGxlbmd0aFwiXG4gICAgICAgICAgICA6bWlubGVuZ3RoPVwibWlubGVuZ3RoXCJcbiAgICAgICAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICAgICAgICByZWY9XCJpbnB1dFwiXG4gICAgICAgICAgICA6cmVxdWlyZWQ9XCJyZXF1aXJlZFwiXG4gICAgICAgICAgICA6dHlwZT1cImlucHV0VHlwZVwiXG4gICAgICAgICAgICBAY2hhbmdlPVwiaGFuZGxlVmFsaWRhdGlvblwiXG4gICAgICAgICAgICBAZm9jdXM9XCJoYW5kbGVGb2N1c1wiXG4gICAgICAgICAgICBAZm9jdXNvdXQ9XCJoYW5kbGVGb2N1c091dFwiXG4gICAgICAgICAgICBAaW5wdXQ9XCJoYW5kbGVJbnB1dFwiXG4gICAgICAgICAgICA6aWQ9XCJpbnB1dElkXCJcbiAgICAgICAgICAgIHYtbW9kZWw9XCJ2YWx1ZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLWlucHV0LXRleHQtc3VmZml4JyxcbiAgICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICAgICAgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/ICcnIDogJ29mZnNldCcsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgdi1pZj1cInN1ZmZpeFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBzdWZmaXggfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGJ1dHRvblxuICAgICAgICBAY2xpY2s9XCJoYW5kbGVDbGVhclwiXG4gICAgICAgIHYtaWY9XCJoYXNDbGVhciAmJiB0eXBlICE9PSBURVhUX0lOUFVUX1RZUEUuUEFTU1dPUkRcIlxuICAgICAgPlxuICAgICAgICA8VGlkZUljb25cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5GVUxMLkhBTEZdXCJcbiAgICAgICAgICA6aWNvbj1cIklDT04uQ0xPU0VcIlxuICAgICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIC8+XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPGJ1dHRvblxuICAgICAgICBAY2xpY2s9XCJzaG93UGFzc3dvcmQgPSAhc2hvd1Bhc3N3b3JkXCJcbiAgICAgICAgdi1pZj1cInR5cGUgPT09IFRFWFRfSU5QVVRfVFlQRS5QQVNTV09SRFwiXG4gICAgICA+XG4gICAgICAgIDxUaWRlSWNvblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuTUFSR0lOLkZVTEwuSEFMRl1cIlxuICAgICAgICAgIDppY29uPVwiSUNPTi5WSVNJQklMSVRZXCJcbiAgICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICAvPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9sYWJlbD5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVJdXCJcbiAgICAgIHYtaWY9XCJzdXBwb3J0aW5nVGV4dCB8fCBoYXNFcnJvclwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltdXCJcbiAgICAgICAgOmljb249XCJJQ09OLkVSUk9SXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgdi1pZj1cImhhc0Vycm9yXCJcbiAgICAgIC8+XG5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfM11cIj5cbiAgICAgICAge3sgaGFzRXJyb3IgPyBlcnJvck1lc3NhZ2UgOiBzdXBwb3J0aW5nVGV4dCB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW5wdXQtdGV4dC1sYWJlbCB7XG4gICAgaGVpZ2h0OiAxLjE4NzVyZW07XG4gICAgdHJhbnNpdGlvbjogZm9udC1zaXplIHZhcigtLXRpZGUtYW5pbWF0ZSksIHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC1sYWJlbDpub3QoLm1pbmlsYWJlbCksXG4gIC50aWRlLWlucHV0LXRleHQtcHJlZml4Om5vdCgub2Zmc2V0KSxcbiAgLnRpZGUtaW5wdXQtdGV4dC1zdWZmaXg6bm90KC5vZmZzZXQpIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCBjYWxjKDkgLyAxNiAqIDFyZW0pKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQtcHJlZml4LFxuICAudGlkZS1pbnB1dC10ZXh0LXN1ZmZpeCB7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiB2YXIoLS10aWRlLWRpc2FibGVkKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZXJyb3Ige1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXByaW1hcnkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5lcnJvciAudGlkZS1pbnB1dC10ZXh0LWZpZWxkIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZXJyb3I6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHQtZmllbGQge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQ6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHQtZmllbGQge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0yKTtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtYm9yZGVyLWhpZ2gpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dCBpbnB1dCB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQtZmllbGQge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0xKTtcbiAgICBvdXRsaW5lOiB2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpIHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBvdXRsaW5lLW9mZnNldDogY2FsYyh2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpICogLTEpO1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtZm9yZWdyb3VuZCk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZ2V0RXJyb3JNZXNzYWdlLCBnZXRGaWVsZEhhc0Vycm9yLCBoYW5kbGVGaWVsZFZhbGlkYXRpb24gfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uJztcblxuICBpbXBvcnQgdHlwZSB7IFZhbGlkYXRpb25FcnJvciB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBlcnJvcj86IFZhbGlkYXRpb25FcnJvcjtcbiAgICBpbnB1dElkPzogc3RyaW5nO1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIG1heGxlbmd0aD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBtaW5sZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICByZXF1aXJlZD86IGJvb2xlYW47XG4gICAgcm93cz86IG51bWJlcjtcbiAgICBzdXBwb3J0aW5nVGV4dD86IHN0cmluZztcbiAgICB2YWx1ZT86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGVycm9yOiBmYWxzZSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBtYXhsZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBtaW5sZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBuYW1lOiB1bmRlZmluZWQsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHJvd3M6IDgsXG4gICAgc3VwcG9ydGluZ1RleHQ6IHVuZGVmaW5lZCxcbiAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBlcnJvciA9IHJlZihwcm9wcy5lcnJvcik7XG4gIGNvbnN0IGhhc0ZvY3VzID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgaW5wdXQgPSByZWY8SFRNTElucHV0RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCB2YWx1ZSA9IHJlZihwcm9wcy52YWx1ZSk7XG5cbiAgY29uc3QgZXJyb3JNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4gZ2V0RXJyb3JNZXNzYWdlKHByb3BzLmVycm9yLCBlcnJvci52YWx1ZSkpO1xuICBjb25zdCBmb3JtYXR0ZWRMYWJlbCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCA/IGAke3Byb3BzLmxhYmVsfSAqYCA6IHByb3BzLmxhYmVsKSk7XG4gIGNvbnN0IGhhc0Vycm9yID0gY29tcHV0ZWQoXG4gICAgKCkgPT4gKHByb3BzLnJlcXVpcmVkICYmIHZhbHVlLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgIXZhbHVlLnZhbHVlKSB8fCBnZXRGaWVsZEhhc0Vycm9yKGVycm9yLnZhbHVlLCBwcm9wcy5lcnJvcilcbiAgKTtcbiAgY29uc3QgaGFzTWluaWxhYmVsID0gY29tcHV0ZWQoKCkgPT4gaGFzRm9jdXMudmFsdWUgfHwgIWlzRW1wdHkudmFsdWUpO1xuICBjb25zdCBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4gdmFsdWUudmFsdWUgPT09ICcnIHx8IHZhbHVlLnZhbHVlID09PSB1bmRlZmluZWQpO1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c091dCA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgaWYgKCF2YWx1ZS52YWx1ZSkge1xuICAgICAgdmFsdWUudmFsdWUgPSAnJztcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlVmFsaWRhdGlvbiA9ICgpID0+IHtcbiAgICByZXR1cm4gaGFuZGxlRmllbGRWYWxpZGF0aW9uKHtcbiAgICAgIGVycm9yLFxuICAgICAgZXJyb3JGcm9tUHJvcHM6IHByb3BzLmVycm9yLFxuICAgICAgbWF4bGVuZ3RoOiBwcm9wcy5tYXhsZW5ndGgsXG4gICAgICBtaW5sZW5ndGg6IHByb3BzLm1pbmxlbmd0aCxcbiAgICAgIHJlcXVpcmVkOiBwcm9wcy5yZXF1aXJlZCxcbiAgICAgIHZhbHVlLFxuICAgIH0pO1xuICB9O1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLnZhbHVlLFxuICAgIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUgfHwgbmV3VmFsdWUgIT09IHZhbHVlLnZhbHVlKSB7XG4gICAgICAgIHZhbHVlLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB9XG4gICAgfVxuICApO1xuXG4gIGRlZmluZUV4cG9zZSh7XG4gICAgZXJyb3IsXG4gICAgcmVxdWlyZWQ6IHByb3BzLnJlcXVpcmVkLFxuICAgIHZhbHVlLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbJ3RpZGUtaW5wdXQtdGV4dGFyZWEnLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuR0FQLlFVQVJURVIsIGhhc0Vycm9yICYmICdlcnJvciddXCJcbiAgPlxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCcsXG4gICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgICBDU1MuUEFERElORy5MRUZULk9ORSxcbiAgICAgICAgQ1NTLlBBRERJTkcuVE9QLkhBTEYsXG4gICAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgIENTUy5DVVJTT1IuVEVYVCxcbiAgICAgIF1cIlxuICAgICAgOmZvcj1cImlucHV0SWRcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLWlucHV0LXRleHRhcmVhLWxhYmVsJyxcbiAgICAgICAgICBoYXNNaW5pbGFiZWwgPyBbJ21pbmlsYWJlbCcsIENTUy5GT05ULlJPTEUuTEFCRUxfM10gOiBDU1MuRk9OVC5ST0xFLkxBQkVMXzEsXG4gICAgICAgICAgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICBdXCJcbiAgICAgICAgdi1pZj1cImxhYmVsXCJcbiAgICAgID5cbiAgICAgICAge3sgZm9ybWF0dGVkTGFiZWwgfX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8dGV4dGFyZWFcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkJMT0NLLCBDU1MuV0lEVEguRlVMTCwgQ1NTLkZPTlQuUk9MRS5CT0RZXzFdXCJcbiAgICAgICAgOm1heGxlbmd0aD1cIm1heGxlbmd0aFwiXG4gICAgICAgIDptaW5sZW5ndGg9XCJtaW5sZW5ndGhcIlxuICAgICAgICA6bmFtZT1cIm5hbWVcIlxuICAgICAgICByZWY9XCJpbnB1dFwiXG4gICAgICAgIDpyZXF1aXJlZD1cInJlcXVpcmVkXCJcbiAgICAgICAgOnJvd3M9XCJyb3dzXCJcbiAgICAgICAgQGNoYW5nZT1cImhhbmRsZVZhbGlkYXRpb25cIlxuICAgICAgICBAZm9jdXM9XCJoYW5kbGVGb2N1c1wiXG4gICAgICAgIEBmb2N1c291dD1cImhhbmRsZUZvY3VzT3V0XCJcbiAgICAgICAgOmlkPVwiaW5wdXRJZFwiXG4gICAgICAgIHYtbW9kZWw9XCJ2YWx1ZVwiXG4gICAgICAvPlxuICAgIDwvbGFiZWw+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSXVwiXG4gICAgICB2LWlmPVwic3VwcG9ydGluZ1RleHQgfHwgaGFzRXJyb3JcIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6aWNvbj1cIklDT04uRVJST1JcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwiaGFzRXJyb3JcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXVwiPlxuICAgICAgICB7eyBoYXNFcnJvciA/IGVycm9yTWVzc2FnZSA6IHN1cHBvcnRpbmdUZXh0IH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICB0ZXh0YXJlYSB7XG4gICAgcmVzaXplOiB2ZXJ0aWNhbDtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLWxhYmVsIHtcbiAgICBoZWlnaHQ6IDEuMTg3NXJlbTtcbiAgICB0cmFuc2l0aW9uOiBmb250LXNpemUgdmFyKC0tdGlkZS1hbmltYXRlKSwgdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS5lcnJvciB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItcHJpbWFyeSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS5lcnJvciAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtZXJyb3Itc3VyZmFjZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS5lcnJvcjpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTIpO1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS1ib3JkZXItaGlnaCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYSB0ZXh0YXJlYSB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMSk7XG4gICAgb3V0bGluZTogdmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSBzb2xpZCB2YXIoLS10aWRlLWJvcmRlcik7XG4gICAgb3V0bGluZS1vZmZzZXQ6IGNhbGModmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSAqIC0xKTtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLWZvcmVncm91bmQpO1xuICB9XG48L3N0eWxlPlxuIiwiLyogZXNsaW50LWRpc2FibGUgdnVlL3NvcnQta2V5cyAqL1xuXG5leHBvcnQgY29uc3QgQlJFQUtQT0lOVCA9IHtcbiAgU006ICdzbScsXG4gIE1EOiAnbWQnLFxuICBMRzogJ2xnJyxcbiAgWEw6ICd4bCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgTUVESUEgPSB7XG4gIFNNOiA3NjgsXG4gIE1EOiA5OTIsXG4gIExHOiAxMjMyLFxuICBYTDogMTkyMCxcbn07XG5cbmV4cG9ydCB0eXBlIEJyZWFrcG9pbnQgPSAodHlwZW9mIEJSRUFLUE9JTlQpW2tleW9mIHR5cGVvZiBCUkVBS1BPSU5UXTtcbmV4cG9ydCB0eXBlIE1lZGlhID0gKHR5cGVvZiBNRURJQSlba2V5b2YgdHlwZW9mIE1FRElBXTtcbiIsImltcG9ydCB7IG5leHRUaWNrIH0gZnJvbSAndnVlJztcblxuLyoqXG4gKiBEaXJlY3RseSBtb2RpZmllcyB0aGUgYDxib2R5PmAgZWxlbWVudCB0byBhcHBseSBvciByZW1vdmUgc2Nyb2xsIGxvY2suXG4gKiBXaGVuIGBmYWxzZWAgaXMgcHJvdmlkZWQsIGl0IG9ubHkgdW5sb2NrcyBzY3JvbGwgaWYgdGhlcmUgYXJlIG5vIG9wZW5cbiAqIEhUTUwgZGlhbG9nIGVsZW1lbnRzLlxuICovXG5leHBvcnQgY29uc3Qgc2V0U2Nyb2xsTG9jayA9IGFzeW5jIChpc0xvY2tlZDogYm9vbGVhbikgPT4ge1xuICAvLyBDYW5ub3QgYmUgYXBwbGllZCB0byBib2R5IHRhZyBpbiBtYXJrZXRwbGFjZSByZXBvIGR1ZSB0byBkYXRhLWNzcy1zY29wZVxuICAvLyBjb25zdCBCT0RZX0xPQ0tfQ0xBU1MgPSAnYm9keS1zY3JvbGwtbG9jayc7XG5cbiAgY29uc3QgYm9keSA9IGRvY3VtZW50LmJvZHk7XG5cbiAgaWYgKGlzTG9ja2VkKSB7XG4gICAgaWYgKCFib2R5LmRhdGFzZXQuc2Nyb2xsTG9ja1kpIHtcbiAgICAgIGNvbnN0IHNjcm9sbFkgPSB3aW5kb3cuc2Nyb2xsWTtcblxuICAgICAgYm9keS5kYXRhc2V0LnNjcm9sbExvY2tZID0gc2Nyb2xsWS50b1N0cmluZygpO1xuICAgICAgYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zYXZlZC1zY3JvbGwteScsIGAke3Njcm9sbFl9cHhgKTtcbiAgICAgIGJvZHkuc3R5bGUuc2V0UHJvcGVydHkoJ2luc2V0JywgJzAnKTtcbiAgICAgIGJvZHkuc3R5bGUuc2V0UHJvcGVydHkoJ21hcmdpbi10b3AnLCBgY2FsYygwcHggLSB2YXIoLS1zYXZlZC1zY3JvbGwteSwgMHB4KSlgKTtcbiAgICAgIGJvZHkuc3R5bGUuc2V0UHJvcGVydHkoJ292ZXJmbG93LXknLCAnc2Nyb2xsJyk7XG4gICAgICBib2R5LnN0eWxlLnNldFByb3BlcnR5KCdwb3NpdGlvbicsICdmaXhlZCcpO1xuXG4gICAgICAvLyBDYW5ub3QgYmUgYXBwbGllZCB0byBib2R5IHRhZyBpbiBtYXJrZXRwbGFjZSByZXBvIGR1ZSB0byBkYXRhLWNzcy1zY29wZVxuICAgICAgLy8gYm9keS5jbGFzc0xpc3QuYWRkKEJPRFlfTE9DS19DTEFTUyk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGF3YWl0IG5leHRUaWNrKCk7XG4gICAgaWYgKCFkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdkaWFsb2dbb3Blbl0nKSkge1xuICAgICAgY29uc3Qgc2F2ZWRTY3JvbGxZID0gcGFyc2VJbnQoYm9keS5kYXRhc2V0LnNjcm9sbExvY2tZIHx8ICcwJyk7XG5cbiAgICAgIC8vIENhbm5vdCBiZSBhcHBsaWVkIHRvIGJvZHkgdGFnIGluIG1hcmtldHBsYWNlIHJlcG8gZHVlIHRvIGRhdGEtY3NzLXNjb3BlXG4gICAgICAvLyBib2R5LmNsYXNzTGlzdC5yZW1vdmUoQk9EWV9MT0NLX0NMQVNTKTtcblxuICAgICAgYm9keS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnaW5zZXQnKTtcbiAgICAgIGJvZHkuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ21hcmdpblRvcCcpO1xuICAgICAgYm9keS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnb3ZlcmZsb3dZJyk7XG4gICAgICBib2R5LnN0eWxlLnJlbW92ZVByb3BlcnR5KCdwb3NpdGlvbicpO1xuICAgICAgYm9keS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnLS1zYXZlZC1zY3JvbGwteScpO1xuXG4gICAgICB3aW5kb3cuc2Nyb2xsVG8oe1xuICAgICAgICBiZWhhdmlvcjogJ2F1dG8nLFxuICAgICAgICB0b3A6IHNhdmVkU2Nyb2xsWSxcbiAgICAgIH0pO1xuXG4gICAgICBkZWxldGUgYm9keS5kYXRhc2V0LnNjcm9sbExvY2tZO1xuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IFRPUF9MQVlFUl9JRCA9ICd0aWRlLXRvcC1sYXllcic7XG5cbmV4cG9ydCBjb25zdCBpbml0RmF1eFRvcExheWVyID0gKCkgPT4ge1xuICBsZXQgdG9wTGF5ZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChUT1BfTEFZRVJfSUQpO1xuICBpZiAoIXRvcExheWVyKSB7XG4gICAgdG9wTGF5ZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICB0b3BMYXllci5pZCA9IFRPUF9MQVlFUl9JRDtcbiAgICB0b3BMYXllci5zZXRBdHRyaWJ1dGUoJ2RhdGEtY3NzLXNjb3BlJywgJycpO1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodG9wTGF5ZXIpO1xuICB9XG4gIHRvcExheWVyLnN0eWxlLmlzb2xhdGlvbiA9ICdpc29sYXRlJztcbn07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBuZXh0VGljaywgb25Nb3VudGVkLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUJ1dHRvbkljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSc7XG4gIGltcG9ydCB7IEJSRUFLUE9JTlQgfSBmcm9tICdAL3R5cGVzL0JyZWFrcG9pbnQnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBzZXRTY3JvbGxMb2NrIH0gZnJvbSAnQC91dGlsaXRpZXMvdmlld3BvcnQnO1xuXG4gIGltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSAndnVlJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGlzQmFja0J1dHRvbj86IGJvb2xlYW47XG4gICAgaXNEaXNtaXNzaWJsZT86IGJvb2xlYW47XG4gICAgaXNPcGVuOiBib29sZWFuO1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIHdpZHRoPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgaXNCYWNrQnV0dG9uOiBmYWxzZSxcbiAgICBpc0Rpc21pc3NpYmxlOiB0cnVlLFxuICAgIHRpdGxlOiB1bmRlZmluZWQsXG4gICAgd2lkdGg6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgdHlwZSBFbWl0cyA9IHtcbiAgICAoZTogJ2Nsb3NlJyk6IHZvaWQ7XG4gICAgKGU6ICdiYWNrJyk6IHZvaWQ7XG4gIH07XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPEVtaXRzPigpO1xuXG4gIGNvbnN0IG1vZGFsQ29udGVudDogUmVmPEhUTUxEaXZFbGVtZW50IHwgdW5kZWZpbmVkPiA9IHJlZigpO1xuICBjb25zdCBtb2RhbERpYWxvZzogUmVmPEhUTUxEaWFsb2dFbGVtZW50IHwgdW5kZWZpbmVkPiA9IHJlZigpO1xuXG4gIGNvbnN0IHRyaWdnZXJOYXRpdmVEaWFsb2dPcGVuID0gKCkgPT4ge1xuICAgIG1vZGFsRGlhbG9nLnZhbHVlPy5zaG93TW9kYWwoKTtcbiAgfTtcblxuICBjb25zdCB0cmlnZ2VyTmF0aXZlRGlhbG9nQ2xvc2UgPSAoKSA9PiB7XG4gICAgbW9kYWxEaWFsb2cudmFsdWU/LmNsb3NlKCk7XG4gIH07XG5cbiAgY29uc3Qgc2Nyb2xsQ29udGVudFRvVG9wID0gKCkgPT4ge1xuICAgIG5leHRUaWNrKCgpID0+IHtcbiAgICAgIGlmICghbW9kYWxDb250ZW50LnZhbHVlKSByZXR1cm47XG4gICAgICBtb2RhbENvbnRlbnQudmFsdWUuc2Nyb2xsVG9wID0gMDtcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVCYWNrZHJvcENsaWNrID0gKCkgPT4ge1xuICAgIGlmIChwcm9wcy5pc0Rpc21pc3NpYmxlKSBlbWl0KCdjbG9zZScpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUVzY2FwZUtleWRvd24gPSAoZTogRXZlbnQpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKHByb3BzLmlzRGlzbWlzc2libGUpIGVtaXQoJ2Nsb3NlJyk7XG4gIH07XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMuaXNPcGVuLFxuICAgIChuZXdWYWx1ZSkgPT4ge1xuICAgICAgaWYgKCFtb2RhbERpYWxvZy52YWx1ZSkgcmV0dXJuO1xuICAgICAgaWYgKG5ld1ZhbHVlKSB7XG4gICAgICAgIHRyaWdnZXJOYXRpdmVEaWFsb2dPcGVuKCk7XG4gICAgICAgIHNjcm9sbENvbnRlbnRUb1RvcCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ0Nsb3NlKCk7XG4gICAgICB9XG4gICAgICBzZXRTY3JvbGxMb2NrKG5ld1ZhbHVlKTtcbiAgICB9XG4gICk7XG5cbiAgb25Nb3VudGVkKCgpID0+IHtcbiAgICBpZiAocHJvcHMuaXNPcGVuKSB7XG4gICAgICB0cmlnZ2VyTmF0aXZlRGlhbG9nT3BlbigpO1xuICAgIH1cbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGlhbG9nXG4gICAgOmNsYXNzPVwiWyd0aWRlLW1vZGFsJywgQ1NTLkJHLklOSVRJQUwsIENTUy5IRUlHSFQuRlVMTCwgQ1NTLldJRFRILkZVTEwsIENTUy5PVkVSRkxPVy5YWS5ISURERU5dXCJcbiAgICByZWY9XCJtb2RhbERpYWxvZ1wiXG4gICAgOnN0eWxlPVwieyAnLS1tb2RhbC13aWR0aCc6IHByb3BzLndpZHRoIH1cIlxuICAgIEBjbGljay5zZWxmPVwiaGFuZGxlQmFja2Ryb3BDbGlja1wiXG4gICAgQGNsb3NlLnByZXZlbnRcbiAgICBAa2V5ZG93bi5lc2NhcGU9XCJoYW5kbGVFc2NhcGVLZXlkb3duXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtbW9kYWwtYm9keScsXG4gICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLk9ORSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgICAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICAgICAgICBDU1MuUE9TSVRJT05JTkcuQk9UVE9NLFxuICAgICAgICBDU1MuU0hBRE9XLlRPUCxcbiAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgIENTUy5XSURUSC5NQVhfRlVMTCxcbiAgICAgICAgQ1NTLndpdGhCcmVha3BvaW50KFtDU1MuU0hBRE9XLkJPVFRPTV0sIEJSRUFLUE9JTlQuU00pLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPGhlYWRlclxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtbW9kYWwtaGVhZGVyJyxcbiAgICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICAgIENTUy5CT1JERVIuQk9UVE9NLk9ORSxcbiAgICAgICAgICBDU1MuQk9SREVSLkNPTE9SLkxPVyxcbiAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgICBDU1MuSVNPTEFUSU9OLklTT0xBVEUsXG4gICAgICAgICAgQ1NTLlBBRERJTkcuWS5PTkUsXG4gICAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICAgIENTUy5aX0lOREVYLk9ORSxcbiAgICAgICAgXVwiXG4gICAgICA+XG4gICAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX0xFRlRcIlxuICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICAgIEBjbGljaz1cImVtaXQoJ2JhY2snKVwiXG4gICAgICAgICAgdGl0bGU9XCJCYWNrXCJcbiAgICAgICAgICB2LWlmPVwiaXNCYWNrQnV0dG9uXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuSEVBRExJTkVfMl1cIlxuICAgICAgICAgIHYtdGV4dD1cInRpdGxlXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZMRVguR1JPVy5PRkYsIENTUy5GTEVYLlNIUklOSy5PRkYsIENTUy5NQVJHSU4uTEVGVC5BVVRPXVwiXG4gICAgICAgICAgOmljb249XCJJQ09OLkNMT1NFXCJcbiAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgICBAY2xpY2s9XCJlbWl0KCdjbG9zZScpXCJcbiAgICAgICAgICB2LWlmPVwiaXNEaXNtaXNzaWJsZVwiXG4gICAgICAgIC8+XG4gICAgICA8L2hlYWRlcj5cblxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtbW9kYWwtY29udGVudCcsXG4gICAgICAgICAgQ1NTLkRJU1BMQVkuR1JJRCxcbiAgICAgICAgICBDU1MuSVNPTEFUSU9OLklTT0xBVEUsXG4gICAgICAgICAgQ1NTLk9WRVJGTE9XLlguSElEREVOLFxuICAgICAgICAgIENTUy5PVkVSRkxPVy5ZLkFVVE8sXG4gICAgICAgICAgQ1NTLlBBRERJTkcuWS5UV08sXG4gICAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgIF1cIlxuICAgICAgICByZWY9XCJtb2RhbENvbnRlbnRcIlxuICAgICAgPlxuICAgICAgICA8c2xvdCAvPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxmb290ZXJcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLW1vZGFsLWZvb3RlcicsXG4gICAgICAgICAgQ1NTLkFYSVMxLkVORCxcbiAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgIENTUy5HQVAuVFdPLFxuICAgICAgICAgIENTUy5JU09MQVRJT04uSVNPTEFURSxcbiAgICAgICAgICBDU1MuUEFERElORy5ZLk9ORSxcbiAgICAgICAgICBDU1MuU0hBRE9XLlRPUCxcbiAgICAgICAgXVwiXG4gICAgICAgIHYtaWY9XCIkc2xvdHMuZm9vdGVyXCJcbiAgICAgID5cbiAgICAgICAgPHNsb3QgbmFtZT1cImZvb3RlclwiIC8+XG4gICAgICA8L2Zvb3Rlcj5cbiAgICA8L2Rpdj5cbiAgPC9kaWFsb2c+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1tb2RhbCB7XG4gICAgLS1tb2RhbC1wYWRkaW5nLXg6IDIwcHg7XG4gICAgbWF4LXdpZHRoOiB1bnNldDtcbiAgICBtYXgtaGVpZ2h0OiB1bnNldDtcbiAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpZGUtYW5pbWF0ZSkgYWxsb3ctZGlzY3JldGU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICB9XG4gIC50aWRlLW1vZGFsW29wZW5dIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwJSk7XG4gIH1cbiAgLnRpZGUtbW9kYWw6OmJhY2tkcm9wIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGlkZS1hbmltYXRlKSBhbGxvdy1kaXNjcmV0ZTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMHB4KTtcbiAgfVxuICAudGlkZS1tb2RhbFtvcGVuXTo6YmFja2Ryb3Age1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtdHJhbnNwYXJlbnQtNDAwKTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IHZhcigtLXRpZGUtYmctYmx1cik7XG4gIH1cbiAgQHN0YXJ0aW5nLXN0eWxlIHtcbiAgICAudGlkZS1tb2RhbFtvcGVuXSB7XG4gICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICAgIH1cbiAgICAudGlkZS1tb2RhbFtvcGVuXTo6YmFja2Ryb3Age1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBiYWNrZHJvcC1maWx0ZXI6IHZhcigtLXRpZGUtYmctYmx1cik7XG4gICAgfVxuICB9XG4gIC50aWRlLW1vZGFsLWJvZHkge1xuICAgIHdpZHRoOiB2YXIoLS1tb2RhbC13aWR0aCwgNTc2cHgpO1xuICAgIG1heC1oZWlnaHQ6IGNhbGMoMTAwJSAtIHZhcigtLXRpZGUtc3BhY2luZy0yKSk7XG4gIH1cblxuICAudGlkZS1tb2RhbC1oZWFkZXIsXG4gIC50aWRlLW1vZGFsLWZvb3RlciB7XG4gICAgcGFkZGluZy1pbmxpbmU6IHZhcigtLW1vZGFsLXBhZGRpbmcteCk7XG4gIH1cbiAgLnRpZGUtbW9kYWwtY29udGVudCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiB2YXIoLS1tb2RhbC1wYWRkaW5nLXgpIDFmciB2YXIoLS1tb2RhbC1wYWRkaW5nLXgpO1xuICB9XG4gIDp3aGVyZSgudGlkZS1tb2RhbC1jb250ZW50KTpkZWVwKD4gOndoZXJlKCopKSB7XG4gICAgZ3JpZC1jb2x1bW46IDI7XG4gIH1cblxuICBAbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgICAudGlkZS1tb2RhbC1ib2R5IHtcbiAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7XG4gICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcbiAgICB9XG4gIH1cbiAgQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gICAgLnRpZGUtbW9kYWwge1xuICAgICAgLS1tb2RhbC1wYWRkaW5nLXg6IHZhcigtLXRpZGUtc3BhY2luZy0yKTtcbiAgICB9XG4gICAgLnRpZGUtbW9kYWwtYm9keSB7XG4gICAgICBtYXgtaGVpZ2h0OiA4NSU7XG4gICAgICBib3R0b206IGluaXRpYWw7XG4gICAgfVxuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIHJlZiB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVCdXR0b25JY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQnV0dG9uSWNvbi52dWUnO1xuICBpbXBvcnQgVGlkZUJ1dHRvblBhZ2luYXRpb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25QYWdpbmF0aW9uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBQUklPUklUWSB9IGZyb20gJ0AvdHlwZXMvUHJpb3JpdHknO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBwYWdlQ3VycmVudD86IG51bWJlcjtcbiAgICBwYWdlVG90YWw/OiBudW1iZXI7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBwYWdlQ3VycmVudDogMSxcbiAgICBwYWdlVG90YWw6IDEsXG4gIH0pO1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0cyhbJ2NoYW5nZSddKTtcblxuICBjb25zdCBwYWdlQ3VycmVudCA9IHJlZihwcm9wcy5wYWdlQ3VycmVudCk7XG5cbiAgY29uc3QgcGFnaW5hdGlvbkJ1dHRvbnMgPSBjb21wdXRlZCgoKSA9PiBuZXcgQXJyYXkocHJvcHMucGFnZVRvdGFsKS5maWxsKCcnKS5tYXAoKGVtcHR5LCBpbmRleCkgPT4gaW5kZXggKyAxKSk7XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoaW5kZXg6IG51bWJlcikgPT4ge1xuICAgIHBhZ2VDdXJyZW50LnZhbHVlID0gaW5kZXg7XG5cbiAgICBlbWl0KCdjaGFuZ2UnLCBldmVudCwgaW5kZXgpO1xuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPHNlY3Rpb25cbiAgICA6Y2xhc3M9XCJbJ3RpZGUtcGFnaW5hdGlvbicsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMS5DRU5URVIsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUiwgQ1NTLldJRFRILkZVTExdXCJcbiAgPlxuICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgOmRpc2FibGVkPVwicGFnZUN1cnJlbnQgPT09IDFcIlxuICAgICAgOmljb249XCJJQ09OLkNIRVZST05fTEVGVFwiXG4gICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgIEBjbGljaz1cImhhbmRsZUNsaWNrKHBhZ2VDdXJyZW50IC0gMSlcIlxuICAgIC8+XG5cbiAgICA8dWwgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUiwgQ1NTLkxJU1RfQlVMTEVUUy5PRkZdXCI+XG4gICAgICA8bGlcbiAgICAgICAgOmtleT1cInBhZ2luYXRpb25CdXR0b25cIlxuICAgICAgICB2LWZvcj1cInBhZ2luYXRpb25CdXR0b24gaW4gcGFnaW5hdGlvbkJ1dHRvbnNcIlxuICAgICAgPlxuICAgICAgICA8VGlkZUJ1dHRvblBhZ2luYXRpb25cbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJwYWdlQ3VycmVudCA9PT0gcGFnaW5hdGlvbkJ1dHRvblwiXG4gICAgICAgICAgOmxhYmVsPVwicGFnaW5hdGlvbkJ1dHRvblwiXG4gICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgICAgQGNsaWNrPVwiaGFuZGxlQ2xpY2socGFnaW5hdGlvbkJ1dHRvbilcIlxuICAgICAgICAvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuXG4gICAgPFRpZGVCdXR0b25JY29uXG4gICAgICA6ZGlzYWJsZWQ9XCJwYWdlQ3VycmVudCA9PT0gcGFnaW5hdGlvbkJ1dHRvbnNbcGFnaW5hdGlvbkJ1dHRvbnMubGVuZ3RoIC0gMV1cIlxuICAgICAgOmljb249XCJJQ09OLkNIRVZST05fUklHSFRcIlxuICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICBAY2xpY2s9XCJoYW5kbGVDbGljayhwYWdlQ3VycmVudCArIDEpXCJcbiAgICAvPlxuICA8L3NlY3Rpb24+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPjwvc3R5bGU+XG4iLCIvKipcbiAqIEN1c3RvbSBwb3NpdGlvbmluZyByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy92aXJ0dWFsLWVsZW1lbnRzXG4gKi9cblxuY29uc3Qgc2lkZXMgPSBbJ3RvcCcsICdyaWdodCcsICdib3R0b20nLCAnbGVmdCddO1xuY29uc3QgYWxpZ25tZW50cyA9IFsnc3RhcnQnLCAnZW5kJ107XG5jb25zdCBwbGFjZW1lbnRzID0gLyojX19QVVJFX18qL3NpZGVzLnJlZHVjZSgoYWNjLCBzaWRlKSA9PiBhY2MuY29uY2F0KHNpZGUsIHNpZGUgKyBcIi1cIiArIGFsaWdubWVudHNbMF0sIHNpZGUgKyBcIi1cIiArIGFsaWdubWVudHNbMV0pLCBbXSk7XG5jb25zdCBtaW4gPSBNYXRoLm1pbjtcbmNvbnN0IG1heCA9IE1hdGgubWF4O1xuY29uc3Qgcm91bmQgPSBNYXRoLnJvdW5kO1xuY29uc3QgZmxvb3IgPSBNYXRoLmZsb29yO1xuY29uc3QgY3JlYXRlQ29vcmRzID0gdiA9PiAoe1xuICB4OiB2LFxuICB5OiB2XG59KTtcbmNvbnN0IG9wcG9zaXRlU2lkZU1hcCA9IHtcbiAgbGVmdDogJ3JpZ2h0JyxcbiAgcmlnaHQ6ICdsZWZ0JyxcbiAgYm90dG9tOiAndG9wJyxcbiAgdG9wOiAnYm90dG9tJ1xufTtcbmNvbnN0IG9wcG9zaXRlQWxpZ25tZW50TWFwID0ge1xuICBzdGFydDogJ2VuZCcsXG4gIGVuZDogJ3N0YXJ0J1xufTtcbmZ1bmN0aW9uIGNsYW1wKHN0YXJ0LCB2YWx1ZSwgZW5kKSB7XG4gIHJldHVybiBtYXgoc3RhcnQsIG1pbih2YWx1ZSwgZW5kKSk7XG59XG5mdW5jdGlvbiBldmFsdWF0ZSh2YWx1ZSwgcGFyYW0pIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/IHZhbHVlKHBhcmFtKSA6IHZhbHVlO1xufVxuZnVuY3Rpb24gZ2V0U2lkZShwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5zcGxpdCgnLScpWzBdO1xufVxuZnVuY3Rpb24gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnNwbGl0KCctJylbMV07XG59XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZUF4aXMoYXhpcykge1xuICByZXR1cm4gYXhpcyA9PT0gJ3gnID8gJ3knIDogJ3gnO1xufVxuZnVuY3Rpb24gZ2V0QXhpc0xlbmd0aChheGlzKSB7XG4gIHJldHVybiBheGlzID09PSAneScgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG59XG5mdW5jdGlvbiBnZXRTaWRlQXhpcyhwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIFsndG9wJywgJ2JvdHRvbSddLmluY2x1ZGVzKGdldFNpZGUocGxhY2VtZW50KSkgPyAneScgOiAneCc7XG59XG5mdW5jdGlvbiBnZXRBbGlnbm1lbnRBeGlzKHBsYWNlbWVudCkge1xuICByZXR1cm4gZ2V0T3Bwb3NpdGVBeGlzKGdldFNpZGVBeGlzKHBsYWNlbWVudCkpO1xufVxuZnVuY3Rpb24gZ2V0QWxpZ25tZW50U2lkZXMocGxhY2VtZW50LCByZWN0cywgcnRsKSB7XG4gIGlmIChydGwgPT09IHZvaWQgMCkge1xuICAgIHJ0bCA9IGZhbHNlO1xuICB9XG4gIGNvbnN0IGFsaWdubWVudCA9IGdldEFsaWdubWVudChwbGFjZW1lbnQpO1xuICBjb25zdCBhbGlnbm1lbnRBeGlzID0gZ2V0QWxpZ25tZW50QXhpcyhwbGFjZW1lbnQpO1xuICBjb25zdCBsZW5ndGggPSBnZXRBeGlzTGVuZ3RoKGFsaWdubWVudEF4aXMpO1xuICBsZXQgbWFpbkFsaWdubWVudFNpZGUgPSBhbGlnbm1lbnRBeGlzID09PSAneCcgPyBhbGlnbm1lbnQgPT09IChydGwgPyAnZW5kJyA6ICdzdGFydCcpID8gJ3JpZ2h0JyA6ICdsZWZ0JyA6IGFsaWdubWVudCA9PT0gJ3N0YXJ0JyA/ICdib3R0b20nIDogJ3RvcCc7XG4gIGlmIChyZWN0cy5yZWZlcmVuY2VbbGVuZ3RoXSA+IHJlY3RzLmZsb2F0aW5nW2xlbmd0aF0pIHtcbiAgICBtYWluQWxpZ25tZW50U2lkZSA9IGdldE9wcG9zaXRlUGxhY2VtZW50KG1haW5BbGlnbm1lbnRTaWRlKTtcbiAgfVxuICByZXR1cm4gW21haW5BbGlnbm1lbnRTaWRlLCBnZXRPcHBvc2l0ZVBsYWNlbWVudChtYWluQWxpZ25tZW50U2lkZSldO1xufVxuZnVuY3Rpb24gZ2V0RXhwYW5kZWRQbGFjZW1lbnRzKHBsYWNlbWVudCkge1xuICBjb25zdCBvcHBvc2l0ZVBsYWNlbWVudCA9IGdldE9wcG9zaXRlUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gIHJldHVybiBbZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQocGxhY2VtZW50KSwgb3Bwb3NpdGVQbGFjZW1lbnQsIGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KG9wcG9zaXRlUGxhY2VtZW50KV07XG59XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5yZXBsYWNlKC9zdGFydHxlbmQvZywgYWxpZ25tZW50ID0+IG9wcG9zaXRlQWxpZ25tZW50TWFwW2FsaWdubWVudF0pO1xufVxuZnVuY3Rpb24gZ2V0U2lkZUxpc3Qoc2lkZSwgaXNTdGFydCwgcnRsKSB7XG4gIGNvbnN0IGxyID0gWydsZWZ0JywgJ3JpZ2h0J107XG4gIGNvbnN0IHJsID0gWydyaWdodCcsICdsZWZ0J107XG4gIGNvbnN0IHRiID0gWyd0b3AnLCAnYm90dG9tJ107XG4gIGNvbnN0IGJ0ID0gWydib3R0b20nLCAndG9wJ107XG4gIHN3aXRjaCAoc2lkZSkge1xuICAgIGNhc2UgJ3RvcCc6XG4gICAgY2FzZSAnYm90dG9tJzpcbiAgICAgIGlmIChydGwpIHJldHVybiBpc1N0YXJ0ID8gcmwgOiBscjtcbiAgICAgIHJldHVybiBpc1N0YXJ0ID8gbHIgOiBybDtcbiAgICBjYXNlICdsZWZ0JzpcbiAgICBjYXNlICdyaWdodCc6XG4gICAgICByZXR1cm4gaXNTdGFydCA/IHRiIDogYnQ7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBbXTtcbiAgfVxufVxuZnVuY3Rpb24gZ2V0T3Bwb3NpdGVBeGlzUGxhY2VtZW50cyhwbGFjZW1lbnQsIGZsaXBBbGlnbm1lbnQsIGRpcmVjdGlvbiwgcnRsKSB7XG4gIGNvbnN0IGFsaWdubWVudCA9IGdldEFsaWdubWVudChwbGFjZW1lbnQpO1xuICBsZXQgbGlzdCA9IGdldFNpZGVMaXN0KGdldFNpZGUocGxhY2VtZW50KSwgZGlyZWN0aW9uID09PSAnc3RhcnQnLCBydGwpO1xuICBpZiAoYWxpZ25tZW50KSB7XG4gICAgbGlzdCA9IGxpc3QubWFwKHNpZGUgPT4gc2lkZSArIFwiLVwiICsgYWxpZ25tZW50KTtcbiAgICBpZiAoZmxpcEFsaWdubWVudCkge1xuICAgICAgbGlzdCA9IGxpc3QuY29uY2F0KGxpc3QubWFwKGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBsaXN0O1xufVxuZnVuY3Rpb24gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQucmVwbGFjZSgvbGVmdHxyaWdodHxib3R0b218dG9wL2csIHNpZGUgPT4gb3Bwb3NpdGVTaWRlTWFwW3NpZGVdKTtcbn1cbmZ1bmN0aW9uIGV4cGFuZFBhZGRpbmdPYmplY3QocGFkZGluZykge1xuICByZXR1cm4ge1xuICAgIHRvcDogMCxcbiAgICByaWdodDogMCxcbiAgICBib3R0b206IDAsXG4gICAgbGVmdDogMCxcbiAgICAuLi5wYWRkaW5nXG4gIH07XG59XG5mdW5jdGlvbiBnZXRQYWRkaW5nT2JqZWN0KHBhZGRpbmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBwYWRkaW5nICE9PSAnbnVtYmVyJyA/IGV4cGFuZFBhZGRpbmdPYmplY3QocGFkZGluZykgOiB7XG4gICAgdG9wOiBwYWRkaW5nLFxuICAgIHJpZ2h0OiBwYWRkaW5nLFxuICAgIGJvdHRvbTogcGFkZGluZyxcbiAgICBsZWZ0OiBwYWRkaW5nXG4gIH07XG59XG5mdW5jdGlvbiByZWN0VG9DbGllbnRSZWN0KHJlY3QpIHtcbiAgY29uc3Qge1xuICAgIHgsXG4gICAgeSxcbiAgICB3aWR0aCxcbiAgICBoZWlnaHRcbiAgfSA9IHJlY3Q7XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHRvcDogeSxcbiAgICBsZWZ0OiB4LFxuICAgIHJpZ2h0OiB4ICsgd2lkdGgsXG4gICAgYm90dG9tOiB5ICsgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG5leHBvcnQgeyBhbGlnbm1lbnRzLCBjbGFtcCwgY3JlYXRlQ29vcmRzLCBldmFsdWF0ZSwgZXhwYW5kUGFkZGluZ09iamVjdCwgZmxvb3IsIGdldEFsaWdubWVudCwgZ2V0QWxpZ25tZW50QXhpcywgZ2V0QWxpZ25tZW50U2lkZXMsIGdldEF4aXNMZW5ndGgsIGdldEV4cGFuZGVkUGxhY2VtZW50cywgZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQsIGdldE9wcG9zaXRlQXhpcywgZ2V0T3Bwb3NpdGVBeGlzUGxhY2VtZW50cywgZ2V0T3Bwb3NpdGVQbGFjZW1lbnQsIGdldFBhZGRpbmdPYmplY3QsIGdldFNpZGUsIGdldFNpZGVBeGlzLCBtYXgsIG1pbiwgcGxhY2VtZW50cywgcmVjdFRvQ2xpZW50UmVjdCwgcm91bmQsIHNpZGVzIH07XG4iLCJpbXBvcnQgeyBnZXRTaWRlQXhpcywgZ2V0QWxpZ25tZW50QXhpcywgZ2V0QXhpc0xlbmd0aCwgZ2V0U2lkZSwgZ2V0QWxpZ25tZW50LCBldmFsdWF0ZSwgZ2V0UGFkZGluZ09iamVjdCwgcmVjdFRvQ2xpZW50UmVjdCwgbWluLCBjbGFtcCwgcGxhY2VtZW50cywgZ2V0QWxpZ25tZW50U2lkZXMsIGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50LCBnZXRPcHBvc2l0ZVBsYWNlbWVudCwgZ2V0RXhwYW5kZWRQbGFjZW1lbnRzLCBnZXRPcHBvc2l0ZUF4aXNQbGFjZW1lbnRzLCBzaWRlcywgbWF4LCBnZXRPcHBvc2l0ZUF4aXMgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMnO1xuZXhwb3J0IHsgcmVjdFRvQ2xpZW50UmVjdCB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscyc7XG5cbmZ1bmN0aW9uIGNvbXB1dGVDb29yZHNGcm9tUGxhY2VtZW50KF9yZWYsIHBsYWNlbWVudCwgcnRsKSB7XG4gIGxldCB7XG4gICAgcmVmZXJlbmNlLFxuICAgIGZsb2F0aW5nXG4gIH0gPSBfcmVmO1xuICBjb25zdCBzaWRlQXhpcyA9IGdldFNpZGVBeGlzKHBsYWNlbWVudCk7XG4gIGNvbnN0IGFsaWdubWVudEF4aXMgPSBnZXRBbGlnbm1lbnRBeGlzKHBsYWNlbWVudCk7XG4gIGNvbnN0IGFsaWduTGVuZ3RoID0gZ2V0QXhpc0xlbmd0aChhbGlnbm1lbnRBeGlzKTtcbiAgY29uc3Qgc2lkZSA9IGdldFNpZGUocGxhY2VtZW50KTtcbiAgY29uc3QgaXNWZXJ0aWNhbCA9IHNpZGVBeGlzID09PSAneSc7XG4gIGNvbnN0IGNvbW1vblggPSByZWZlcmVuY2UueCArIHJlZmVyZW5jZS53aWR0aCAvIDIgLSBmbG9hdGluZy53aWR0aCAvIDI7XG4gIGNvbnN0IGNvbW1vblkgPSByZWZlcmVuY2UueSArIHJlZmVyZW5jZS5oZWlnaHQgLyAyIC0gZmxvYXRpbmcuaGVpZ2h0IC8gMjtcbiAgY29uc3QgY29tbW9uQWxpZ24gPSByZWZlcmVuY2VbYWxpZ25MZW5ndGhdIC8gMiAtIGZsb2F0aW5nW2FsaWduTGVuZ3RoXSAvIDI7XG4gIGxldCBjb29yZHM7XG4gIHN3aXRjaCAoc2lkZSkge1xuICAgIGNhc2UgJ3RvcCc6XG4gICAgICBjb29yZHMgPSB7XG4gICAgICAgIHg6IGNvbW1vblgsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55IC0gZmxvYXRpbmcuaGVpZ2h0XG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnYm90dG9tJzpcbiAgICAgIGNvb3JkcyA9IHtcbiAgICAgICAgeDogY29tbW9uWCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnkgKyByZWZlcmVuY2UuaGVpZ2h0XG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAncmlnaHQnOlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCArIHJlZmVyZW5jZS53aWR0aCxcbiAgICAgICAgeTogY29tbW9uWVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCAtIGZsb2F0aW5nLndpZHRoLFxuICAgICAgICB5OiBjb21tb25ZXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGNvb3JkcyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLngsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55XG4gICAgICB9O1xuICB9XG4gIHN3aXRjaCAoZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkpIHtcbiAgICBjYXNlICdzdGFydCc6XG4gICAgICBjb29yZHNbYWxpZ25tZW50QXhpc10gLT0gY29tbW9uQWxpZ24gKiAocnRsICYmIGlzVmVydGljYWwgPyAtMSA6IDEpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZW5kJzpcbiAgICAgIGNvb3Jkc1thbGlnbm1lbnRBeGlzXSArPSBjb21tb25BbGlnbiAqIChydGwgJiYgaXNWZXJ0aWNhbCA/IC0xIDogMSk7XG4gICAgICBicmVhaztcbiAgfVxuICByZXR1cm4gY29vcmRzO1xufVxuXG4vKipcbiAqIENvbXB1dGVzIHRoZSBgeGAgYW5kIGB5YCBjb29yZGluYXRlcyB0aGF0IHdpbGwgcGxhY2UgdGhlIGZsb2F0aW5nIGVsZW1lbnRcbiAqIG5leHQgdG8gYSBnaXZlbiByZWZlcmVuY2UgZWxlbWVudC5cbiAqXG4gKiBUaGlzIGV4cG9ydCBkb2VzIG5vdCBoYXZlIGFueSBgcGxhdGZvcm1gIGludGVyZmFjZSBsb2dpYy4gWW91IHdpbGwgbmVlZCB0b1xuICogd3JpdGUgb25lIGZvciB0aGUgcGxhdGZvcm0geW91IGFyZSB1c2luZyBGbG9hdGluZyBVSSB3aXRoLlxuICovXG5jb25zdCBjb21wdXRlUG9zaXRpb24gPSBhc3luYyAocmVmZXJlbmNlLCBmbG9hdGluZywgY29uZmlnKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBwbGFjZW1lbnQgPSAnYm90dG9tJyxcbiAgICBzdHJhdGVneSA9ICdhYnNvbHV0ZScsXG4gICAgbWlkZGxld2FyZSA9IFtdLFxuICAgIHBsYXRmb3JtXG4gIH0gPSBjb25maWc7XG4gIGNvbnN0IHZhbGlkTWlkZGxld2FyZSA9IG1pZGRsZXdhcmUuZmlsdGVyKEJvb2xlYW4pO1xuICBjb25zdCBydGwgPSBhd2FpdCAocGxhdGZvcm0uaXNSVEwgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzUlRMKGZsb2F0aW5nKSk7XG4gIGxldCByZWN0cyA9IGF3YWl0IHBsYXRmb3JtLmdldEVsZW1lbnRSZWN0cyh7XG4gICAgcmVmZXJlbmNlLFxuICAgIGZsb2F0aW5nLFxuICAgIHN0cmF0ZWd5XG4gIH0pO1xuICBsZXQge1xuICAgIHgsXG4gICAgeVxuICB9ID0gY29tcHV0ZUNvb3Jkc0Zyb21QbGFjZW1lbnQocmVjdHMsIHBsYWNlbWVudCwgcnRsKTtcbiAgbGV0IHN0YXRlZnVsUGxhY2VtZW50ID0gcGxhY2VtZW50O1xuICBsZXQgbWlkZGxld2FyZURhdGEgPSB7fTtcbiAgbGV0IHJlc2V0Q291bnQgPSAwO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbGlkTWlkZGxld2FyZS5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHtcbiAgICAgIG5hbWUsXG4gICAgICBmblxuICAgIH0gPSB2YWxpZE1pZGRsZXdhcmVbaV07XG4gICAgY29uc3Qge1xuICAgICAgeDogbmV4dFgsXG4gICAgICB5OiBuZXh0WSxcbiAgICAgIGRhdGEsXG4gICAgICByZXNldFxuICAgIH0gPSBhd2FpdCBmbih7XG4gICAgICB4LFxuICAgICAgeSxcbiAgICAgIGluaXRpYWxQbGFjZW1lbnQ6IHBsYWNlbWVudCxcbiAgICAgIHBsYWNlbWVudDogc3RhdGVmdWxQbGFjZW1lbnQsXG4gICAgICBzdHJhdGVneSxcbiAgICAgIG1pZGRsZXdhcmVEYXRhLFxuICAgICAgcmVjdHMsXG4gICAgICBwbGF0Zm9ybSxcbiAgICAgIGVsZW1lbnRzOiB7XG4gICAgICAgIHJlZmVyZW5jZSxcbiAgICAgICAgZmxvYXRpbmdcbiAgICAgIH1cbiAgICB9KTtcbiAgICB4ID0gbmV4dFggIT0gbnVsbCA/IG5leHRYIDogeDtcbiAgICB5ID0gbmV4dFkgIT0gbnVsbCA/IG5leHRZIDogeTtcbiAgICBtaWRkbGV3YXJlRGF0YSA9IHtcbiAgICAgIC4uLm1pZGRsZXdhcmVEYXRhLFxuICAgICAgW25hbWVdOiB7XG4gICAgICAgIC4uLm1pZGRsZXdhcmVEYXRhW25hbWVdLFxuICAgICAgICAuLi5kYXRhXG4gICAgICB9XG4gICAgfTtcbiAgICBpZiAocmVzZXQgJiYgcmVzZXRDb3VudCA8PSA1MCkge1xuICAgICAgcmVzZXRDb3VudCsrO1xuICAgICAgaWYgKHR5cGVvZiByZXNldCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgaWYgKHJlc2V0LnBsYWNlbWVudCkge1xuICAgICAgICAgIHN0YXRlZnVsUGxhY2VtZW50ID0gcmVzZXQucGxhY2VtZW50O1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXNldC5yZWN0cykge1xuICAgICAgICAgIHJlY3RzID0gcmVzZXQucmVjdHMgPT09IHRydWUgPyBhd2FpdCBwbGF0Zm9ybS5nZXRFbGVtZW50UmVjdHMoe1xuICAgICAgICAgICAgcmVmZXJlbmNlLFxuICAgICAgICAgICAgZmxvYXRpbmcsXG4gICAgICAgICAgICBzdHJhdGVneVxuICAgICAgICAgIH0pIDogcmVzZXQucmVjdHM7XG4gICAgICAgIH1cbiAgICAgICAgKHtcbiAgICAgICAgICB4LFxuICAgICAgICAgIHlcbiAgICAgICAgfSA9IGNvbXB1dGVDb29yZHNGcm9tUGxhY2VtZW50KHJlY3RzLCBzdGF0ZWZ1bFBsYWNlbWVudCwgcnRsKSk7XG4gICAgICB9XG4gICAgICBpID0gLTE7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5LFxuICAgIHBsYWNlbWVudDogc3RhdGVmdWxQbGFjZW1lbnQsXG4gICAgc3RyYXRlZ3ksXG4gICAgbWlkZGxld2FyZURhdGFcbiAgfTtcbn07XG5cbi8qKlxuICogUmVzb2x2ZXMgd2l0aCBhbiBvYmplY3Qgb2Ygb3ZlcmZsb3cgc2lkZSBvZmZzZXRzIHRoYXQgZGV0ZXJtaW5lIGhvdyBtdWNoIHRoZVxuICogZWxlbWVudCBpcyBvdmVyZmxvd2luZyBhIGdpdmVuIGNsaXBwaW5nIGJvdW5kYXJ5IG9uIGVhY2ggc2lkZS5cbiAqIC0gcG9zaXRpdmUgPSBvdmVyZmxvd2luZyB0aGUgYm91bmRhcnkgYnkgdGhhdCBudW1iZXIgb2YgcGl4ZWxzXG4gKiAtIG5lZ2F0aXZlID0gaG93IG1hbnkgcGl4ZWxzIGxlZnQgYmVmb3JlIGl0IHdpbGwgb3ZlcmZsb3dcbiAqIC0gMCA9IGxpZXMgZmx1c2ggd2l0aCB0aGUgYm91bmRhcnlcbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9kZXRlY3RPdmVyZmxvd1xuICovXG5hc3luYyBmdW5jdGlvbiBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgb3B0aW9ucykge1xuICB2YXIgX2F3YWl0JHBsYXRmb3JtJGlzRWxlO1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICB4LFxuICAgIHksXG4gICAgcGxhdGZvcm0sXG4gICAgcmVjdHMsXG4gICAgZWxlbWVudHMsXG4gICAgc3RyYXRlZ3lcbiAgfSA9IHN0YXRlO1xuICBjb25zdCB7XG4gICAgYm91bmRhcnkgPSAnY2xpcHBpbmdBbmNlc3RvcnMnLFxuICAgIHJvb3RCb3VuZGFyeSA9ICd2aWV3cG9ydCcsXG4gICAgZWxlbWVudENvbnRleHQgPSAnZmxvYXRpbmcnLFxuICAgIGFsdEJvdW5kYXJ5ID0gZmFsc2UsXG4gICAgcGFkZGluZyA9IDBcbiAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgY29uc3QgcGFkZGluZ09iamVjdCA9IGdldFBhZGRpbmdPYmplY3QocGFkZGluZyk7XG4gIGNvbnN0IGFsdENvbnRleHQgPSBlbGVtZW50Q29udGV4dCA9PT0gJ2Zsb2F0aW5nJyA/ICdyZWZlcmVuY2UnIDogJ2Zsb2F0aW5nJztcbiAgY29uc3QgZWxlbWVudCA9IGVsZW1lbnRzW2FsdEJvdW5kYXJ5ID8gYWx0Q29udGV4dCA6IGVsZW1lbnRDb250ZXh0XTtcbiAgY29uc3QgY2xpcHBpbmdDbGllbnRSZWN0ID0gcmVjdFRvQ2xpZW50UmVjdChhd2FpdCBwbGF0Zm9ybS5nZXRDbGlwcGluZ1JlY3Qoe1xuICAgIGVsZW1lbnQ6ICgoX2F3YWl0JHBsYXRmb3JtJGlzRWxlID0gYXdhaXQgKHBsYXRmb3JtLmlzRWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNFbGVtZW50KGVsZW1lbnQpKSkgIT0gbnVsbCA/IF9hd2FpdCRwbGF0Zm9ybSRpc0VsZSA6IHRydWUpID8gZWxlbWVudCA6IGVsZW1lbnQuY29udGV4dEVsZW1lbnQgfHwgKGF3YWl0IChwbGF0Zm9ybS5nZXREb2N1bWVudEVsZW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmdldERvY3VtZW50RWxlbWVudChlbGVtZW50cy5mbG9hdGluZykpKSxcbiAgICBib3VuZGFyeSxcbiAgICByb290Qm91bmRhcnksXG4gICAgc3RyYXRlZ3lcbiAgfSkpO1xuICBjb25zdCByZWN0ID0gZWxlbWVudENvbnRleHQgPT09ICdmbG9hdGluZycgPyB7XG4gICAgeCxcbiAgICB5LFxuICAgIHdpZHRoOiByZWN0cy5mbG9hdGluZy53aWR0aCxcbiAgICBoZWlnaHQ6IHJlY3RzLmZsb2F0aW5nLmhlaWdodFxuICB9IDogcmVjdHMucmVmZXJlbmNlO1xuICBjb25zdCBvZmZzZXRQYXJlbnQgPSBhd2FpdCAocGxhdGZvcm0uZ2V0T2Zmc2V0UGFyZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5nZXRPZmZzZXRQYXJlbnQoZWxlbWVudHMuZmxvYXRpbmcpKTtcbiAgY29uc3Qgb2Zmc2V0U2NhbGUgPSAoYXdhaXQgKHBsYXRmb3JtLmlzRWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNFbGVtZW50KG9mZnNldFBhcmVudCkpKSA/IChhd2FpdCAocGxhdGZvcm0uZ2V0U2NhbGUgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmdldFNjYWxlKG9mZnNldFBhcmVudCkpKSB8fCB7XG4gICAgeDogMSxcbiAgICB5OiAxXG4gIH0gOiB7XG4gICAgeDogMSxcbiAgICB5OiAxXG4gIH07XG4gIGNvbnN0IGVsZW1lbnRDbGllbnRSZWN0ID0gcmVjdFRvQ2xpZW50UmVjdChwbGF0Zm9ybS5jb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdCA/IGF3YWl0IHBsYXRmb3JtLmNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0KHtcbiAgICBlbGVtZW50cyxcbiAgICByZWN0LFxuICAgIG9mZnNldFBhcmVudCxcbiAgICBzdHJhdGVneVxuICB9KSA6IHJlY3QpO1xuICByZXR1cm4ge1xuICAgIHRvcDogKGNsaXBwaW5nQ2xpZW50UmVjdC50b3AgLSBlbGVtZW50Q2xpZW50UmVjdC50b3AgKyBwYWRkaW5nT2JqZWN0LnRvcCkgLyBvZmZzZXRTY2FsZS55LFxuICAgIGJvdHRvbTogKGVsZW1lbnRDbGllbnRSZWN0LmJvdHRvbSAtIGNsaXBwaW5nQ2xpZW50UmVjdC5ib3R0b20gKyBwYWRkaW5nT2JqZWN0LmJvdHRvbSkgLyBvZmZzZXRTY2FsZS55LFxuICAgIGxlZnQ6IChjbGlwcGluZ0NsaWVudFJlY3QubGVmdCAtIGVsZW1lbnRDbGllbnRSZWN0LmxlZnQgKyBwYWRkaW5nT2JqZWN0LmxlZnQpIC8gb2Zmc2V0U2NhbGUueCxcbiAgICByaWdodDogKGVsZW1lbnRDbGllbnRSZWN0LnJpZ2h0IC0gY2xpcHBpbmdDbGllbnRSZWN0LnJpZ2h0ICsgcGFkZGluZ09iamVjdC5yaWdodCkgLyBvZmZzZXRTY2FsZS54XG4gIH07XG59XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBwb3NpdGlvbiBhbiBpbm5lciBlbGVtZW50IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IHNvIHRoYXQgaXRcbiAqIGFwcGVhcnMgY2VudGVyZWQgdG8gdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2Fycm93XG4gKi9cbmNvbnN0IGFycm93ID0gb3B0aW9ucyA9PiAoe1xuICBuYW1lOiAnYXJyb3cnLFxuICBvcHRpb25zLFxuICBhc3luYyBmbihzdGF0ZSkge1xuICAgIGNvbnN0IHtcbiAgICAgIHgsXG4gICAgICB5LFxuICAgICAgcGxhY2VtZW50LFxuICAgICAgcmVjdHMsXG4gICAgICBwbGF0Zm9ybSxcbiAgICAgIGVsZW1lbnRzLFxuICAgICAgbWlkZGxld2FyZURhdGFcbiAgICB9ID0gc3RhdGU7XG4gICAgLy8gU2luY2UgYGVsZW1lbnRgIGlzIHJlcXVpcmVkLCB3ZSBkb24ndCBQYXJ0aWFsPD4gdGhlIHR5cGUuXG4gICAgY29uc3Qge1xuICAgICAgZWxlbWVudCxcbiAgICAgIHBhZGRpbmcgPSAwXG4gICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKSB8fCB7fTtcbiAgICBpZiAoZWxlbWVudCA9PSBudWxsKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGNvbnN0IHBhZGRpbmdPYmplY3QgPSBnZXRQYWRkaW5nT2JqZWN0KHBhZGRpbmcpO1xuICAgIGNvbnN0IGNvb3JkcyA9IHtcbiAgICAgIHgsXG4gICAgICB5XG4gICAgfTtcbiAgICBjb25zdCBheGlzID0gZ2V0QWxpZ25tZW50QXhpcyhwbGFjZW1lbnQpO1xuICAgIGNvbnN0IGxlbmd0aCA9IGdldEF4aXNMZW5ndGgoYXhpcyk7XG4gICAgY29uc3QgYXJyb3dEaW1lbnNpb25zID0gYXdhaXQgcGxhdGZvcm0uZ2V0RGltZW5zaW9ucyhlbGVtZW50KTtcbiAgICBjb25zdCBpc1lBeGlzID0gYXhpcyA9PT0gJ3knO1xuICAgIGNvbnN0IG1pblByb3AgPSBpc1lBeGlzID8gJ3RvcCcgOiAnbGVmdCc7XG4gICAgY29uc3QgbWF4UHJvcCA9IGlzWUF4aXMgPyAnYm90dG9tJyA6ICdyaWdodCc7XG4gICAgY29uc3QgY2xpZW50UHJvcCA9IGlzWUF4aXMgPyAnY2xpZW50SGVpZ2h0JyA6ICdjbGllbnRXaWR0aCc7XG4gICAgY29uc3QgZW5kRGlmZiA9IHJlY3RzLnJlZmVyZW5jZVtsZW5ndGhdICsgcmVjdHMucmVmZXJlbmNlW2F4aXNdIC0gY29vcmRzW2F4aXNdIC0gcmVjdHMuZmxvYXRpbmdbbGVuZ3RoXTtcbiAgICBjb25zdCBzdGFydERpZmYgPSBjb29yZHNbYXhpc10gLSByZWN0cy5yZWZlcmVuY2VbYXhpc107XG4gICAgY29uc3QgYXJyb3dPZmZzZXRQYXJlbnQgPSBhd2FpdCAocGxhdGZvcm0uZ2V0T2Zmc2V0UGFyZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5nZXRPZmZzZXRQYXJlbnQoZWxlbWVudCkpO1xuICAgIGxldCBjbGllbnRTaXplID0gYXJyb3dPZmZzZXRQYXJlbnQgPyBhcnJvd09mZnNldFBhcmVudFtjbGllbnRQcm9wXSA6IDA7XG5cbiAgICAvLyBET00gcGxhdGZvcm0gY2FuIHJldHVybiBgd2luZG93YCBhcyB0aGUgYG9mZnNldFBhcmVudGAuXG4gICAgaWYgKCFjbGllbnRTaXplIHx8ICEoYXdhaXQgKHBsYXRmb3JtLmlzRWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNFbGVtZW50KGFycm93T2Zmc2V0UGFyZW50KSkpKSB7XG4gICAgICBjbGllbnRTaXplID0gZWxlbWVudHMuZmxvYXRpbmdbY2xpZW50UHJvcF0gfHwgcmVjdHMuZmxvYXRpbmdbbGVuZ3RoXTtcbiAgICB9XG4gICAgY29uc3QgY2VudGVyVG9SZWZlcmVuY2UgPSBlbmREaWZmIC8gMiAtIHN0YXJ0RGlmZiAvIDI7XG5cbiAgICAvLyBJZiB0aGUgcGFkZGluZyBpcyBsYXJnZSBlbm91Z2ggdGhhdCBpdCBjYXVzZXMgdGhlIGFycm93IHRvIG5vIGxvbmdlciBiZVxuICAgIC8vIGNlbnRlcmVkLCBtb2RpZnkgdGhlIHBhZGRpbmcgc28gdGhhdCBpdCBpcyBjZW50ZXJlZC5cbiAgICBjb25zdCBsYXJnZXN0UG9zc2libGVQYWRkaW5nID0gY2xpZW50U2l6ZSAvIDIgLSBhcnJvd0RpbWVuc2lvbnNbbGVuZ3RoXSAvIDIgLSAxO1xuICAgIGNvbnN0IG1pblBhZGRpbmcgPSBtaW4ocGFkZGluZ09iamVjdFttaW5Qcm9wXSwgbGFyZ2VzdFBvc3NpYmxlUGFkZGluZyk7XG4gICAgY29uc3QgbWF4UGFkZGluZyA9IG1pbihwYWRkaW5nT2JqZWN0W21heFByb3BdLCBsYXJnZXN0UG9zc2libGVQYWRkaW5nKTtcblxuICAgIC8vIE1ha2Ugc3VyZSB0aGUgYXJyb3cgZG9lc24ndCBvdmVyZmxvdyB0aGUgZmxvYXRpbmcgZWxlbWVudCBpZiB0aGUgY2VudGVyXG4gICAgLy8gcG9pbnQgaXMgb3V0c2lkZSB0aGUgZmxvYXRpbmcgZWxlbWVudCdzIGJvdW5kcy5cbiAgICBjb25zdCBtaW4kMSA9IG1pblBhZGRpbmc7XG4gICAgY29uc3QgbWF4ID0gY2xpZW50U2l6ZSAtIGFycm93RGltZW5zaW9uc1tsZW5ndGhdIC0gbWF4UGFkZGluZztcbiAgICBjb25zdCBjZW50ZXIgPSBjbGllbnRTaXplIC8gMiAtIGFycm93RGltZW5zaW9uc1tsZW5ndGhdIC8gMiArIGNlbnRlclRvUmVmZXJlbmNlO1xuICAgIGNvbnN0IG9mZnNldCA9IGNsYW1wKG1pbiQxLCBjZW50ZXIsIG1heCk7XG5cbiAgICAvLyBJZiB0aGUgcmVmZXJlbmNlIGlzIHNtYWxsIGVub3VnaCB0aGF0IHRoZSBhcnJvdydzIHBhZGRpbmcgY2F1c2VzIGl0IHRvXG4gICAgLy8gdG8gcG9pbnQgdG8gbm90aGluZyBmb3IgYW4gYWxpZ25lZCBwbGFjZW1lbnQsIGFkanVzdCB0aGUgb2Zmc2V0IG9mIHRoZVxuICAgIC8vIGZsb2F0aW5nIGVsZW1lbnQgaXRzZWxmLiBUbyBlbnN1cmUgYHNoaWZ0KClgIGNvbnRpbnVlcyB0byB0YWtlIGFjdGlvbixcbiAgICAvLyBhIHNpbmdsZSByZXNldCBpcyBwZXJmb3JtZWQgd2hlbiB0aGlzIGlzIHRydWUuXG4gICAgY29uc3Qgc2hvdWxkQWRkT2Zmc2V0ID0gIW1pZGRsZXdhcmVEYXRhLmFycm93ICYmIGdldEFsaWdubWVudChwbGFjZW1lbnQpICE9IG51bGwgJiYgY2VudGVyICE9PSBvZmZzZXQgJiYgcmVjdHMucmVmZXJlbmNlW2xlbmd0aF0gLyAyIC0gKGNlbnRlciA8IG1pbiQxID8gbWluUGFkZGluZyA6IG1heFBhZGRpbmcpIC0gYXJyb3dEaW1lbnNpb25zW2xlbmd0aF0gLyAyIDwgMDtcbiAgICBjb25zdCBhbGlnbm1lbnRPZmZzZXQgPSBzaG91bGRBZGRPZmZzZXQgPyBjZW50ZXIgPCBtaW4kMSA/IGNlbnRlciAtIG1pbiQxIDogY2VudGVyIC0gbWF4IDogMDtcbiAgICByZXR1cm4ge1xuICAgICAgW2F4aXNdOiBjb29yZHNbYXhpc10gKyBhbGlnbm1lbnRPZmZzZXQsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIFtheGlzXTogb2Zmc2V0LFxuICAgICAgICBjZW50ZXJPZmZzZXQ6IGNlbnRlciAtIG9mZnNldCAtIGFsaWdubWVudE9mZnNldCxcbiAgICAgICAgLi4uKHNob3VsZEFkZE9mZnNldCAmJiB7XG4gICAgICAgICAgYWxpZ25tZW50T2Zmc2V0XG4gICAgICAgIH0pXG4gICAgICB9LFxuICAgICAgcmVzZXQ6IHNob3VsZEFkZE9mZnNldFxuICAgIH07XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiBnZXRQbGFjZW1lbnRMaXN0KGFsaWdubWVudCwgYXV0b0FsaWdubWVudCwgYWxsb3dlZFBsYWNlbWVudHMpIHtcbiAgY29uc3QgYWxsb3dlZFBsYWNlbWVudHNTb3J0ZWRCeUFsaWdubWVudCA9IGFsaWdubWVudCA/IFsuLi5hbGxvd2VkUGxhY2VtZW50cy5maWx0ZXIocGxhY2VtZW50ID0+IGdldEFsaWdubWVudChwbGFjZW1lbnQpID09PSBhbGlnbm1lbnQpLCAuLi5hbGxvd2VkUGxhY2VtZW50cy5maWx0ZXIocGxhY2VtZW50ID0+IGdldEFsaWdubWVudChwbGFjZW1lbnQpICE9PSBhbGlnbm1lbnQpXSA6IGFsbG93ZWRQbGFjZW1lbnRzLmZpbHRlcihwbGFjZW1lbnQgPT4gZ2V0U2lkZShwbGFjZW1lbnQpID09PSBwbGFjZW1lbnQpO1xuICByZXR1cm4gYWxsb3dlZFBsYWNlbWVudHNTb3J0ZWRCeUFsaWdubWVudC5maWx0ZXIocGxhY2VtZW50ID0+IHtcbiAgICBpZiAoYWxpZ25tZW50KSB7XG4gICAgICByZXR1cm4gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkgPT09IGFsaWdubWVudCB8fCAoYXV0b0FsaWdubWVudCA/IGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KHBsYWNlbWVudCkgIT09IHBsYWNlbWVudCA6IGZhbHNlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pO1xufVxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgY2hvb3NpbmcgdGhlIHBsYWNlbWVudFxuICogdGhhdCBoYXMgdGhlIG1vc3Qgc3BhY2UgYXZhaWxhYmxlIGF1dG9tYXRpY2FsbHksIHdpdGhvdXQgbmVlZGluZyB0byBzcGVjaWZ5IGFcbiAqIHByZWZlcnJlZCBwbGFjZW1lbnQuIEFsdGVybmF0aXZlIHRvIGBmbGlwYC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hdXRvUGxhY2VtZW50XG4gKi9cbmNvbnN0IGF1dG9QbGFjZW1lbnQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2F1dG9QbGFjZW1lbnQnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkYXV0b1AsIF9taWRkbGV3YXJlRGF0YSRhdXRvUDIsIF9wbGFjZW1lbnRzVGhhdEZpdE9uRTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIG1pZGRsZXdhcmVEYXRhLFxuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIHBsYXRmb3JtLFxuICAgICAgICBlbGVtZW50c1xuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBjcm9zc0F4aXMgPSBmYWxzZSxcbiAgICAgICAgYWxpZ25tZW50LFxuICAgICAgICBhbGxvd2VkUGxhY2VtZW50cyA9IHBsYWNlbWVudHMsXG4gICAgICAgIGF1dG9BbGlnbm1lbnQgPSB0cnVlLFxuICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBwbGFjZW1lbnRzJDEgPSBhbGlnbm1lbnQgIT09IHVuZGVmaW5lZCB8fCBhbGxvd2VkUGxhY2VtZW50cyA9PT0gcGxhY2VtZW50cyA/IGdldFBsYWNlbWVudExpc3QoYWxpZ25tZW50IHx8IG51bGwsIGF1dG9BbGlnbm1lbnQsIGFsbG93ZWRQbGFjZW1lbnRzKSA6IGFsbG93ZWRQbGFjZW1lbnRzO1xuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgZGV0ZWN0T3ZlcmZsb3dPcHRpb25zKTtcbiAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9ICgoX21pZGRsZXdhcmVEYXRhJGF1dG9QID0gbWlkZGxld2FyZURhdGEuYXV0b1BsYWNlbWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRhdXRvUC5pbmRleCkgfHwgMDtcbiAgICAgIGNvbnN0IGN1cnJlbnRQbGFjZW1lbnQgPSBwbGFjZW1lbnRzJDFbY3VycmVudEluZGV4XTtcbiAgICAgIGlmIChjdXJyZW50UGxhY2VtZW50ID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgICAgY29uc3QgYWxpZ25tZW50U2lkZXMgPSBnZXRBbGlnbm1lbnRTaWRlcyhjdXJyZW50UGxhY2VtZW50LCByZWN0cywgYXdhaXQgKHBsYXRmb3JtLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc1JUTChlbGVtZW50cy5mbG9hdGluZykpKTtcblxuICAgICAgLy8gTWFrZSBgY29tcHV0ZUNvb3Jkc2Agc3RhcnQgZnJvbSB0aGUgcmlnaHQgcGxhY2UuXG4gICAgICBpZiAocGxhY2VtZW50ICE9PSBjdXJyZW50UGxhY2VtZW50KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHBsYWNlbWVudDogcGxhY2VtZW50cyQxWzBdXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgY29uc3QgY3VycmVudE92ZXJmbG93cyA9IFtvdmVyZmxvd1tnZXRTaWRlKGN1cnJlbnRQbGFjZW1lbnQpXSwgb3ZlcmZsb3dbYWxpZ25tZW50U2lkZXNbMF1dLCBvdmVyZmxvd1thbGlnbm1lbnRTaWRlc1sxXV1dO1xuICAgICAgY29uc3QgYWxsT3ZlcmZsb3dzID0gWy4uLigoKF9taWRkbGV3YXJlRGF0YSRhdXRvUDIgPSBtaWRkbGV3YXJlRGF0YS5hdXRvUGxhY2VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGF1dG9QMi5vdmVyZmxvd3MpIHx8IFtdKSwge1xuICAgICAgICBwbGFjZW1lbnQ6IGN1cnJlbnRQbGFjZW1lbnQsXG4gICAgICAgIG92ZXJmbG93czogY3VycmVudE92ZXJmbG93c1xuICAgICAgfV07XG4gICAgICBjb25zdCBuZXh0UGxhY2VtZW50ID0gcGxhY2VtZW50cyQxW2N1cnJlbnRJbmRleCArIDFdO1xuXG4gICAgICAvLyBUaGVyZSBhcmUgbW9yZSBwbGFjZW1lbnRzIHRvIGNoZWNrLlxuICAgICAgaWYgKG5leHRQbGFjZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBpbmRleDogY3VycmVudEluZGV4ICsgMSxcbiAgICAgICAgICAgIG92ZXJmbG93czogYWxsT3ZlcmZsb3dzXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgcGxhY2VtZW50OiBuZXh0UGxhY2VtZW50XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgY29uc3QgcGxhY2VtZW50c1NvcnRlZEJ5TW9zdFNwYWNlID0gYWxsT3ZlcmZsb3dzLm1hcChkID0+IHtcbiAgICAgICAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KGQucGxhY2VtZW50KTtcbiAgICAgICAgcmV0dXJuIFtkLnBsYWNlbWVudCwgYWxpZ25tZW50ICYmIGNyb3NzQXhpcyA/XG4gICAgICAgIC8vIENoZWNrIGFsb25nIHRoZSBtYWluQXhpcyBhbmQgbWFpbiBjcm9zc0F4aXMgc2lkZS5cbiAgICAgICAgZC5vdmVyZmxvd3Muc2xpY2UoMCwgMikucmVkdWNlKChhY2MsIHYpID0+IGFjYyArIHYsIDApIDpcbiAgICAgICAgLy8gQ2hlY2sgb25seSB0aGUgbWFpbkF4aXMuXG4gICAgICAgIGQub3ZlcmZsb3dzWzBdLCBkLm92ZXJmbG93c107XG4gICAgICB9KS5zb3J0KChhLCBiKSA9PiBhWzFdIC0gYlsxXSk7XG4gICAgICBjb25zdCBwbGFjZW1lbnRzVGhhdEZpdE9uRWFjaFNpZGUgPSBwbGFjZW1lbnRzU29ydGVkQnlNb3N0U3BhY2UuZmlsdGVyKGQgPT4gZFsyXS5zbGljZSgwLFxuICAgICAgLy8gQWxpZ25lZCBwbGFjZW1lbnRzIHNob3VsZCBub3QgY2hlY2sgdGhlaXIgb3Bwb3NpdGUgY3Jvc3NBeGlzXG4gICAgICAvLyBzaWRlLlxuICAgICAgZ2V0QWxpZ25tZW50KGRbMF0pID8gMiA6IDMpLmV2ZXJ5KHYgPT4gdiA8PSAwKSk7XG4gICAgICBjb25zdCByZXNldFBsYWNlbWVudCA9ICgoX3BsYWNlbWVudHNUaGF0Rml0T25FID0gcGxhY2VtZW50c1RoYXRGaXRPbkVhY2hTaWRlWzBdKSA9PSBudWxsID8gdm9pZCAwIDogX3BsYWNlbWVudHNUaGF0Rml0T25FWzBdKSB8fCBwbGFjZW1lbnRzU29ydGVkQnlNb3N0U3BhY2VbMF1bMF07XG4gICAgICBpZiAocmVzZXRQbGFjZW1lbnQgIT09IHBsYWNlbWVudCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGluZGV4OiBjdXJyZW50SW5kZXggKyAxLFxuICAgICAgICAgICAgb3ZlcmZsb3dzOiBhbGxPdmVyZmxvd3NcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICBwbGFjZW1lbnQ6IHJlc2V0UGxhY2VtZW50XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IGZsaXBwaW5nIHRoZSBgcGxhY2VtZW50YFxuICogaW4gb3JkZXIgdG8ga2VlcCBpdCBpbiB2aWV3IHdoZW4gdGhlIHByZWZlcnJlZCBwbGFjZW1lbnQocykgd2lsbCBvdmVyZmxvdyB0aGVcbiAqIGNsaXBwaW5nIGJvdW5kYXJ5LiBBbHRlcm5hdGl2ZSB0byBgYXV0b1BsYWNlbWVudGAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvZmxpcFxuICovXG5jb25zdCBmbGlwID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdmbGlwJyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICB2YXIgX21pZGRsZXdhcmVEYXRhJGFycm93LCBfbWlkZGxld2FyZURhdGEkZmxpcDtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICBtaWRkbGV3YXJlRGF0YSxcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIGluaXRpYWxQbGFjZW1lbnQsXG4gICAgICAgIHBsYXRmb3JtLFxuICAgICAgICBlbGVtZW50c1xuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBtYWluQXhpczogY2hlY2tNYWluQXhpcyA9IHRydWUsXG4gICAgICAgIGNyb3NzQXhpczogY2hlY2tDcm9zc0F4aXMgPSB0cnVlLFxuICAgICAgICBmYWxsYmFja1BsYWNlbWVudHM6IHNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyxcbiAgICAgICAgZmFsbGJhY2tTdHJhdGVneSA9ICdiZXN0Rml0JyxcbiAgICAgICAgZmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbiA9ICdub25lJyxcbiAgICAgICAgZmxpcEFsaWdubWVudCA9IHRydWUsXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcblxuICAgICAgLy8gSWYgYSByZXNldCBieSB0aGUgYXJyb3cgd2FzIGNhdXNlZCBkdWUgdG8gYW4gYWxpZ25tZW50IG9mZnNldCBiZWluZ1xuICAgICAgLy8gYWRkZWQsIHdlIHNob3VsZCBza2lwIGFueSBsb2dpYyBub3cgc2luY2UgYGZsaXAoKWAgaGFzIGFscmVhZHkgZG9uZSBpdHNcbiAgICAgIC8vIHdvcmsuXG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmxvYXRpbmctdWkvZmxvYXRpbmctdWkvaXNzdWVzLzI1NDkjaXNzdWVjb21tZW50LTE3MTk2MDE2NDNcbiAgICAgIGlmICgoX21pZGRsZXdhcmVEYXRhJGFycm93ID0gbWlkZGxld2FyZURhdGEuYXJyb3cpICE9IG51bGwgJiYgX21pZGRsZXdhcmVEYXRhJGFycm93LmFsaWdubWVudE9mZnNldCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgICBjb25zdCBzaWRlID0gZ2V0U2lkZShwbGFjZW1lbnQpO1xuICAgICAgY29uc3QgaW5pdGlhbFNpZGVBeGlzID0gZ2V0U2lkZUF4aXMoaW5pdGlhbFBsYWNlbWVudCk7XG4gICAgICBjb25zdCBpc0Jhc2VQbGFjZW1lbnQgPSBnZXRTaWRlKGluaXRpYWxQbGFjZW1lbnQpID09PSBpbml0aWFsUGxhY2VtZW50O1xuICAgICAgY29uc3QgcnRsID0gYXdhaXQgKHBsYXRmb3JtLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc1JUTChlbGVtZW50cy5mbG9hdGluZykpO1xuICAgICAgY29uc3QgZmFsbGJhY2tQbGFjZW1lbnRzID0gc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzIHx8IChpc0Jhc2VQbGFjZW1lbnQgfHwgIWZsaXBBbGlnbm1lbnQgPyBbZ2V0T3Bwb3NpdGVQbGFjZW1lbnQoaW5pdGlhbFBsYWNlbWVudCldIDogZ2V0RXhwYW5kZWRQbGFjZW1lbnRzKGluaXRpYWxQbGFjZW1lbnQpKTtcbiAgICAgIGNvbnN0IGhhc0ZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24gPSBmYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uICE9PSAnbm9uZSc7XG4gICAgICBpZiAoIXNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyAmJiBoYXNGYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uKSB7XG4gICAgICAgIGZhbGxiYWNrUGxhY2VtZW50cy5wdXNoKC4uLmdldE9wcG9zaXRlQXhpc1BsYWNlbWVudHMoaW5pdGlhbFBsYWNlbWVudCwgZmxpcEFsaWdubWVudCwgZmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbiwgcnRsKSk7XG4gICAgICB9XG4gICAgICBjb25zdCBwbGFjZW1lbnRzID0gW2luaXRpYWxQbGFjZW1lbnQsIC4uLmZhbGxiYWNrUGxhY2VtZW50c107XG4gICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCBkZXRlY3RPdmVyZmxvd09wdGlvbnMpO1xuICAgICAgY29uc3Qgb3ZlcmZsb3dzID0gW107XG4gICAgICBsZXQgb3ZlcmZsb3dzRGF0YSA9ICgoX21pZGRsZXdhcmVEYXRhJGZsaXAgPSBtaWRkbGV3YXJlRGF0YS5mbGlwKSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGZsaXAub3ZlcmZsb3dzKSB8fCBbXTtcbiAgICAgIGlmIChjaGVja01haW5BeGlzKSB7XG4gICAgICAgIG92ZXJmbG93cy5wdXNoKG92ZXJmbG93W3NpZGVdKTtcbiAgICAgIH1cbiAgICAgIGlmIChjaGVja0Nyb3NzQXhpcykge1xuICAgICAgICBjb25zdCBzaWRlcyA9IGdldEFsaWdubWVudFNpZGVzKHBsYWNlbWVudCwgcmVjdHMsIHJ0bCk7XG4gICAgICAgIG92ZXJmbG93cy5wdXNoKG92ZXJmbG93W3NpZGVzWzBdXSwgb3ZlcmZsb3dbc2lkZXNbMV1dKTtcbiAgICAgIH1cbiAgICAgIG92ZXJmbG93c0RhdGEgPSBbLi4ub3ZlcmZsb3dzRGF0YSwge1xuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIG92ZXJmbG93c1xuICAgICAgfV07XG5cbiAgICAgIC8vIE9uZSBvciBtb3JlIHNpZGVzIGlzIG92ZXJmbG93aW5nLlxuICAgICAgaWYgKCFvdmVyZmxvd3MuZXZlcnkoc2lkZSA9PiBzaWRlIDw9IDApKSB7XG4gICAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkZmxpcDIsIF9vdmVyZmxvd3NEYXRhJGZpbHRlcjtcbiAgICAgICAgY29uc3QgbmV4dEluZGV4ID0gKCgoX21pZGRsZXdhcmVEYXRhJGZsaXAyID0gbWlkZGxld2FyZURhdGEuZmxpcCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRmbGlwMi5pbmRleCkgfHwgMCkgKyAxO1xuICAgICAgICBjb25zdCBuZXh0UGxhY2VtZW50ID0gcGxhY2VtZW50c1tuZXh0SW5kZXhdO1xuICAgICAgICBpZiAobmV4dFBsYWNlbWVudCkge1xuICAgICAgICAgIC8vIFRyeSBuZXh0IHBsYWNlbWVudCBhbmQgcmUtcnVuIHRoZSBsaWZlY3ljbGUuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgaW5kZXg6IG5leHRJbmRleCxcbiAgICAgICAgICAgICAgb3ZlcmZsb3dzOiBvdmVyZmxvd3NEYXRhXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgICAgcGxhY2VtZW50OiBuZXh0UGxhY2VtZW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZpcnN0LCBmaW5kIHRoZSBjYW5kaWRhdGVzIHRoYXQgZml0IG9uIHRoZSBtYWluQXhpcyBzaWRlIG9mIG92ZXJmbG93LFxuICAgICAgICAvLyB0aGVuIGZpbmQgdGhlIHBsYWNlbWVudCB0aGF0IGZpdHMgdGhlIGJlc3Qgb24gdGhlIG1haW4gY3Jvc3NBeGlzIHNpZGUuXG4gICAgICAgIGxldCByZXNldFBsYWNlbWVudCA9IChfb3ZlcmZsb3dzRGF0YSRmaWx0ZXIgPSBvdmVyZmxvd3NEYXRhLmZpbHRlcihkID0+IGQub3ZlcmZsb3dzWzBdIDw9IDApLnNvcnQoKGEsIGIpID0+IGEub3ZlcmZsb3dzWzFdIC0gYi5vdmVyZmxvd3NbMV0pWzBdKSA9PSBudWxsID8gdm9pZCAwIDogX292ZXJmbG93c0RhdGEkZmlsdGVyLnBsYWNlbWVudDtcblxuICAgICAgICAvLyBPdGhlcndpc2UgZmFsbGJhY2suXG4gICAgICAgIGlmICghcmVzZXRQbGFjZW1lbnQpIHtcbiAgICAgICAgICBzd2l0Y2ggKGZhbGxiYWNrU3RyYXRlZ3kpIHtcbiAgICAgICAgICAgIGNhc2UgJ2Jlc3RGaXQnOlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdmFyIF9vdmVyZmxvd3NEYXRhJGZpbHRlcjI7XG4gICAgICAgICAgICAgICAgY29uc3QgcGxhY2VtZW50ID0gKF9vdmVyZmxvd3NEYXRhJGZpbHRlcjIgPSBvdmVyZmxvd3NEYXRhLmZpbHRlcihkID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChoYXNGYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTaWRlQXhpcyA9IGdldFNpZGVBeGlzKGQucGxhY2VtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRTaWRlQXhpcyA9PT0gaW5pdGlhbFNpZGVBeGlzIHx8XG4gICAgICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBhIGJpYXMgdG8gdGhlIGB5YCBzaWRlIGF4aXMgZHVlIHRvIGhvcml6b250YWxcbiAgICAgICAgICAgICAgICAgICAgLy8gcmVhZGluZyBkaXJlY3Rpb25zIGZhdm9yaW5nIGdyZWF0ZXIgd2lkdGguXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTaWRlQXhpcyA9PT0gJ3knO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfSkubWFwKGQgPT4gW2QucGxhY2VtZW50LCBkLm92ZXJmbG93cy5maWx0ZXIob3ZlcmZsb3cgPT4gb3ZlcmZsb3cgPiAwKS5yZWR1Y2UoKGFjYywgb3ZlcmZsb3cpID0+IGFjYyArIG92ZXJmbG93LCAwKV0pLnNvcnQoKGEsIGIpID0+IGFbMV0gLSBiWzFdKVswXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9vdmVyZmxvd3NEYXRhJGZpbHRlcjJbMF07XG4gICAgICAgICAgICAgICAgaWYgKHBsYWNlbWVudCkge1xuICAgICAgICAgICAgICAgICAgcmVzZXRQbGFjZW1lbnQgPSBwbGFjZW1lbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdpbml0aWFsUGxhY2VtZW50JzpcbiAgICAgICAgICAgICAgcmVzZXRQbGFjZW1lbnQgPSBpbml0aWFsUGxhY2VtZW50O1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBsYWNlbWVudCAhPT0gcmVzZXRQbGFjZW1lbnQpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgICAgcGxhY2VtZW50OiByZXNldFBsYWNlbWVudFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH07XG59O1xuXG5mdW5jdGlvbiBnZXRTaWRlT2Zmc2V0cyhvdmVyZmxvdywgcmVjdCkge1xuICByZXR1cm4ge1xuICAgIHRvcDogb3ZlcmZsb3cudG9wIC0gcmVjdC5oZWlnaHQsXG4gICAgcmlnaHQ6IG92ZXJmbG93LnJpZ2h0IC0gcmVjdC53aWR0aCxcbiAgICBib3R0b206IG92ZXJmbG93LmJvdHRvbSAtIHJlY3QuaGVpZ2h0LFxuICAgIGxlZnQ6IG92ZXJmbG93LmxlZnQgLSByZWN0LndpZHRoXG4gIH07XG59XG5mdW5jdGlvbiBpc0FueVNpZGVGdWxseUNsaXBwZWQob3ZlcmZsb3cpIHtcbiAgcmV0dXJuIHNpZGVzLnNvbWUoc2lkZSA9PiBvdmVyZmxvd1tzaWRlXSA+PSAwKTtcbn1cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBoaWRlIHRoZSBmbG9hdGluZyBlbGVtZW50IGluIGFwcGxpY2FibGUgc2l0dWF0aW9ucywgc3VjaCBhc1xuICogd2hlbiBpdCBpcyBub3QgaW4gdGhlIHNhbWUgY2xpcHBpbmcgY29udGV4dCBhcyB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvaGlkZVxuICovXG5jb25zdCBoaWRlID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdoaWRlJyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHJlY3RzXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHN0cmF0ZWd5ID0gJ3JlZmVyZW5jZUhpZGRlbicsXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIHN3aXRjaCAoc3RyYXRlZ3kpIHtcbiAgICAgICAgY2FzZSAncmVmZXJlbmNlSGlkZGVuJzpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICAgICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9ucyxcbiAgICAgICAgICAgICAgZWxlbWVudENvbnRleHQ6ICdyZWZlcmVuY2UnXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldHMgPSBnZXRTaWRlT2Zmc2V0cyhvdmVyZmxvdywgcmVjdHMucmVmZXJlbmNlKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VIaWRkZW5PZmZzZXRzOiBvZmZzZXRzLFxuICAgICAgICAgICAgICAgIHJlZmVyZW5jZUhpZGRlbjogaXNBbnlTaWRlRnVsbHlDbGlwcGVkKG9mZnNldHMpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICBjYXNlICdlc2NhcGVkJzpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICAgICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9ucyxcbiAgICAgICAgICAgICAgYWx0Qm91bmRhcnk6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3Qgb2Zmc2V0cyA9IGdldFNpZGVPZmZzZXRzKG92ZXJmbG93LCByZWN0cy5mbG9hdGluZyk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgZXNjYXBlZE9mZnNldHM6IG9mZnNldHMsXG4gICAgICAgICAgICAgICAgZXNjYXBlZDogaXNBbnlTaWRlRnVsbHlDbGlwcGVkKG9mZnNldHMpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xufTtcblxuZnVuY3Rpb24gZ2V0Qm91bmRpbmdSZWN0KHJlY3RzKSB7XG4gIGNvbnN0IG1pblggPSBtaW4oLi4ucmVjdHMubWFwKHJlY3QgPT4gcmVjdC5sZWZ0KSk7XG4gIGNvbnN0IG1pblkgPSBtaW4oLi4ucmVjdHMubWFwKHJlY3QgPT4gcmVjdC50b3ApKTtcbiAgY29uc3QgbWF4WCA9IG1heCguLi5yZWN0cy5tYXAocmVjdCA9PiByZWN0LnJpZ2h0KSk7XG4gIGNvbnN0IG1heFkgPSBtYXgoLi4ucmVjdHMubWFwKHJlY3QgPT4gcmVjdC5ib3R0b20pKTtcbiAgcmV0dXJuIHtcbiAgICB4OiBtaW5YLFxuICAgIHk6IG1pblksXG4gICAgd2lkdGg6IG1heFggLSBtaW5YLFxuICAgIGhlaWdodDogbWF4WSAtIG1pbllcbiAgfTtcbn1cbmZ1bmN0aW9uIGdldFJlY3RzQnlMaW5lKHJlY3RzKSB7XG4gIGNvbnN0IHNvcnRlZFJlY3RzID0gcmVjdHMuc2xpY2UoKS5zb3J0KChhLCBiKSA9PiBhLnkgLSBiLnkpO1xuICBjb25zdCBncm91cHMgPSBbXTtcbiAgbGV0IHByZXZSZWN0ID0gbnVsbDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzb3J0ZWRSZWN0cy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHJlY3QgPSBzb3J0ZWRSZWN0c1tpXTtcbiAgICBpZiAoIXByZXZSZWN0IHx8IHJlY3QueSAtIHByZXZSZWN0LnkgPiBwcmV2UmVjdC5oZWlnaHQgLyAyKSB7XG4gICAgICBncm91cHMucHVzaChbcmVjdF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBncm91cHNbZ3JvdXBzLmxlbmd0aCAtIDFdLnB1c2gocmVjdCk7XG4gICAgfVxuICAgIHByZXZSZWN0ID0gcmVjdDtcbiAgfVxuICByZXR1cm4gZ3JvdXBzLm1hcChyZWN0ID0+IHJlY3RUb0NsaWVudFJlY3QoZ2V0Qm91bmRpbmdSZWN0KHJlY3QpKSk7XG59XG4vKipcbiAqIFByb3ZpZGVzIGltcHJvdmVkIHBvc2l0aW9uaW5nIGZvciBpbmxpbmUgcmVmZXJlbmNlIGVsZW1lbnRzIHRoYXQgY2FuIHNwYW5cbiAqIG92ZXIgbXVsdGlwbGUgbGluZXMsIHN1Y2ggYXMgaHlwZXJsaW5rcyBvciByYW5nZSBzZWxlY3Rpb25zLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2lubGluZVxuICovXG5jb25zdCBpbmxpbmUgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2lubGluZScsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIGVsZW1lbnRzLFxuICAgICAgICByZWN0cyxcbiAgICAgICAgcGxhdGZvcm0sXG4gICAgICAgIHN0cmF0ZWd5XG4gICAgICB9ID0gc3RhdGU7XG4gICAgICAvLyBBIE1vdXNlRXZlbnQncyBjbGllbnR7WCxZfSBjb29yZHMgY2FuIGJlIHVwIHRvIDIgcGl4ZWxzIG9mZiBhXG4gICAgICAvLyBDbGllbnRSZWN0J3MgYm91bmRzLCBkZXNwaXRlIHRoZSBldmVudCBsaXN0ZW5lciBiZWluZyB0cmlnZ2VyZWQuIEFcbiAgICAgIC8vIHBhZGRpbmcgb2YgMiBzZWVtcyB0byBoYW5kbGUgdGhpcyBpc3N1ZS5cbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGFkZGluZyA9IDIsXG4gICAgICAgIHgsXG4gICAgICAgIHlcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBuYXRpdmVDbGllbnRSZWN0cyA9IEFycmF5LmZyb20oKGF3YWl0IChwbGF0Zm9ybS5nZXRDbGllbnRSZWN0cyA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uZ2V0Q2xpZW50UmVjdHMoZWxlbWVudHMucmVmZXJlbmNlKSkpIHx8IFtdKTtcbiAgICAgIGNvbnN0IGNsaWVudFJlY3RzID0gZ2V0UmVjdHNCeUxpbmUobmF0aXZlQ2xpZW50UmVjdHMpO1xuICAgICAgY29uc3QgZmFsbGJhY2sgPSByZWN0VG9DbGllbnRSZWN0KGdldEJvdW5kaW5nUmVjdChuYXRpdmVDbGllbnRSZWN0cykpO1xuICAgICAgY29uc3QgcGFkZGluZ09iamVjdCA9IGdldFBhZGRpbmdPYmplY3QocGFkZGluZyk7XG4gICAgICBmdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoKSB7XG4gICAgICAgIC8vIFRoZXJlIGFyZSB0d28gcmVjdHMgYW5kIHRoZXkgYXJlIGRpc2pvaW5lZC5cbiAgICAgICAgaWYgKGNsaWVudFJlY3RzLmxlbmd0aCA9PT0gMiAmJiBjbGllbnRSZWN0c1swXS5sZWZ0ID4gY2xpZW50UmVjdHNbMV0ucmlnaHQgJiYgeCAhPSBudWxsICYmIHkgIT0gbnVsbCkge1xuICAgICAgICAgIC8vIEZpbmQgdGhlIGZpcnN0IHJlY3QgaW4gd2hpY2ggdGhlIHBvaW50IGlzIGZ1bGx5IGluc2lkZS5cbiAgICAgICAgICByZXR1cm4gY2xpZW50UmVjdHMuZmluZChyZWN0ID0+IHggPiByZWN0LmxlZnQgLSBwYWRkaW5nT2JqZWN0LmxlZnQgJiYgeCA8IHJlY3QucmlnaHQgKyBwYWRkaW5nT2JqZWN0LnJpZ2h0ICYmIHkgPiByZWN0LnRvcCAtIHBhZGRpbmdPYmplY3QudG9wICYmIHkgPCByZWN0LmJvdHRvbSArIHBhZGRpbmdPYmplY3QuYm90dG9tKSB8fCBmYWxsYmFjaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZXJlIGFyZSAyIG9yIG1vcmUgY29ubmVjdGVkIHJlY3RzLlxuICAgICAgICBpZiAoY2xpZW50UmVjdHMubGVuZ3RoID49IDIpIHtcbiAgICAgICAgICBpZiAoZ2V0U2lkZUF4aXMocGxhY2VtZW50KSA9PT0gJ3knKSB7XG4gICAgICAgICAgICBjb25zdCBmaXJzdFJlY3QgPSBjbGllbnRSZWN0c1swXTtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RSZWN0ID0gY2xpZW50UmVjdHNbY2xpZW50UmVjdHMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICBjb25zdCBpc1RvcCA9IGdldFNpZGUocGxhY2VtZW50KSA9PT0gJ3RvcCc7XG4gICAgICAgICAgICBjb25zdCB0b3AgPSBmaXJzdFJlY3QudG9wO1xuICAgICAgICAgICAgY29uc3QgYm90dG9tID0gbGFzdFJlY3QuYm90dG9tO1xuICAgICAgICAgICAgY29uc3QgbGVmdCA9IGlzVG9wID8gZmlyc3RSZWN0LmxlZnQgOiBsYXN0UmVjdC5sZWZ0O1xuICAgICAgICAgICAgY29uc3QgcmlnaHQgPSBpc1RvcCA/IGZpcnN0UmVjdC5yaWdodCA6IGxhc3RSZWN0LnJpZ2h0O1xuICAgICAgICAgICAgY29uc3Qgd2lkdGggPSByaWdodCAtIGxlZnQ7XG4gICAgICAgICAgICBjb25zdCBoZWlnaHQgPSBib3R0b20gLSB0b3A7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICB0b3AsXG4gICAgICAgICAgICAgIGJvdHRvbSxcbiAgICAgICAgICAgICAgbGVmdCxcbiAgICAgICAgICAgICAgcmlnaHQsXG4gICAgICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICAgIHg6IGxlZnQsXG4gICAgICAgICAgICAgIHk6IHRvcFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgaXNMZWZ0U2lkZSA9IGdldFNpZGUocGxhY2VtZW50KSA9PT0gJ2xlZnQnO1xuICAgICAgICAgIGNvbnN0IG1heFJpZ2h0ID0gbWF4KC4uLmNsaWVudFJlY3RzLm1hcChyZWN0ID0+IHJlY3QucmlnaHQpKTtcbiAgICAgICAgICBjb25zdCBtaW5MZWZ0ID0gbWluKC4uLmNsaWVudFJlY3RzLm1hcChyZWN0ID0+IHJlY3QubGVmdCkpO1xuICAgICAgICAgIGNvbnN0IG1lYXN1cmVSZWN0cyA9IGNsaWVudFJlY3RzLmZpbHRlcihyZWN0ID0+IGlzTGVmdFNpZGUgPyByZWN0LmxlZnQgPT09IG1pbkxlZnQgOiByZWN0LnJpZ2h0ID09PSBtYXhSaWdodCk7XG4gICAgICAgICAgY29uc3QgdG9wID0gbWVhc3VyZVJlY3RzWzBdLnRvcDtcbiAgICAgICAgICBjb25zdCBib3R0b20gPSBtZWFzdXJlUmVjdHNbbWVhc3VyZVJlY3RzLmxlbmd0aCAtIDFdLmJvdHRvbTtcbiAgICAgICAgICBjb25zdCBsZWZ0ID0gbWluTGVmdDtcbiAgICAgICAgICBjb25zdCByaWdodCA9IG1heFJpZ2h0O1xuICAgICAgICAgIGNvbnN0IHdpZHRoID0gcmlnaHQgLSBsZWZ0O1xuICAgICAgICAgIGNvbnN0IGhlaWdodCA9IGJvdHRvbSAtIHRvcDtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdG9wLFxuICAgICAgICAgICAgYm90dG9tLFxuICAgICAgICAgICAgbGVmdCxcbiAgICAgICAgICAgIHJpZ2h0LFxuICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICB4OiBsZWZ0LFxuICAgICAgICAgICAgeTogdG9wXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsbGJhY2s7XG4gICAgICB9XG4gICAgICBjb25zdCByZXNldFJlY3RzID0gYXdhaXQgcGxhdGZvcm0uZ2V0RWxlbWVudFJlY3RzKHtcbiAgICAgICAgcmVmZXJlbmNlOiB7XG4gICAgICAgICAgZ2V0Qm91bmRpbmdDbGllbnRSZWN0XG4gICAgICAgIH0sXG4gICAgICAgIGZsb2F0aW5nOiBlbGVtZW50cy5mbG9hdGluZyxcbiAgICAgICAgc3RyYXRlZ3lcbiAgICAgIH0pO1xuICAgICAgaWYgKHJlY3RzLnJlZmVyZW5jZS54ICE9PSByZXNldFJlY3RzLnJlZmVyZW5jZS54IHx8IHJlY3RzLnJlZmVyZW5jZS55ICE9PSByZXNldFJlY3RzLnJlZmVyZW5jZS55IHx8IHJlY3RzLnJlZmVyZW5jZS53aWR0aCAhPT0gcmVzZXRSZWN0cy5yZWZlcmVuY2Uud2lkdGggfHwgcmVjdHMucmVmZXJlbmNlLmhlaWdodCAhPT0gcmVzZXRSZWN0cy5yZWZlcmVuY2UuaGVpZ2h0KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHJlY3RzOiByZXNldFJlY3RzXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfTtcbn07XG5cbi8vIEZvciB0eXBlIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5LCB0aGUgYE9mZnNldE9wdGlvbnNgIHR5cGUgd2FzIGFsc29cbi8vIERlcml2YWJsZS5cblxuYXN5bmMgZnVuY3Rpb24gY29udmVydFZhbHVlVG9Db29yZHMoc3RhdGUsIG9wdGlvbnMpIHtcbiAgY29uc3Qge1xuICAgIHBsYWNlbWVudCxcbiAgICBwbGF0Zm9ybSxcbiAgICBlbGVtZW50c1xuICB9ID0gc3RhdGU7XG4gIGNvbnN0IHJ0bCA9IGF3YWl0IChwbGF0Zm9ybS5pc1JUTCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNSVEwoZWxlbWVudHMuZmxvYXRpbmcpKTtcbiAgY29uc3Qgc2lkZSA9IGdldFNpZGUocGxhY2VtZW50KTtcbiAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCk7XG4gIGNvbnN0IGlzVmVydGljYWwgPSBnZXRTaWRlQXhpcyhwbGFjZW1lbnQpID09PSAneSc7XG4gIGNvbnN0IG1haW5BeGlzTXVsdGkgPSBbJ2xlZnQnLCAndG9wJ10uaW5jbHVkZXMoc2lkZSkgPyAtMSA6IDE7XG4gIGNvbnN0IGNyb3NzQXhpc011bHRpID0gcnRsICYmIGlzVmVydGljYWwgPyAtMSA6IDE7XG4gIGNvbnN0IHJhd1ZhbHVlID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3RcbiAgbGV0IHtcbiAgICBtYWluQXhpcyxcbiAgICBjcm9zc0F4aXMsXG4gICAgYWxpZ25tZW50QXhpc1xuICB9ID0gdHlwZW9mIHJhd1ZhbHVlID09PSAnbnVtYmVyJyA/IHtcbiAgICBtYWluQXhpczogcmF3VmFsdWUsXG4gICAgY3Jvc3NBeGlzOiAwLFxuICAgIGFsaWdubWVudEF4aXM6IG51bGxcbiAgfSA6IHtcbiAgICBtYWluQXhpczogcmF3VmFsdWUubWFpbkF4aXMgfHwgMCxcbiAgICBjcm9zc0F4aXM6IHJhd1ZhbHVlLmNyb3NzQXhpcyB8fCAwLFxuICAgIGFsaWdubWVudEF4aXM6IHJhd1ZhbHVlLmFsaWdubWVudEF4aXNcbiAgfTtcbiAgaWYgKGFsaWdubWVudCAmJiB0eXBlb2YgYWxpZ25tZW50QXhpcyA9PT0gJ251bWJlcicpIHtcbiAgICBjcm9zc0F4aXMgPSBhbGlnbm1lbnQgPT09ICdlbmQnID8gYWxpZ25tZW50QXhpcyAqIC0xIDogYWxpZ25tZW50QXhpcztcbiAgfVxuICByZXR1cm4gaXNWZXJ0aWNhbCA/IHtcbiAgICB4OiBjcm9zc0F4aXMgKiBjcm9zc0F4aXNNdWx0aSxcbiAgICB5OiBtYWluQXhpcyAqIG1haW5BeGlzTXVsdGlcbiAgfSA6IHtcbiAgICB4OiBtYWluQXhpcyAqIG1haW5BeGlzTXVsdGksXG4gICAgeTogY3Jvc3NBeGlzICogY3Jvc3NBeGlzTXVsdGlcbiAgfTtcbn1cblxuLyoqXG4gKiBNb2RpZmllcyB0aGUgcGxhY2VtZW50IGJ5IHRyYW5zbGF0aW5nIHRoZSBmbG9hdGluZyBlbGVtZW50IGFsb25nIHRoZVxuICogc3BlY2lmaWVkIGF4ZXMuXG4gKiBBIG51bWJlciAoc2hvcnRoYW5kIGZvciBgbWFpbkF4aXNgIG9yIGRpc3RhbmNlKSwgb3IgYW4gYXhlcyBjb25maWd1cmF0aW9uXG4gKiBvYmplY3QgbWF5IGJlIHBhc3NlZC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9vZmZzZXRcbiAqL1xuY29uc3Qgb2Zmc2V0ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSAwO1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ29mZnNldCcsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgdmFyIF9taWRkbGV3YXJlRGF0YSRvZmZzZSwgX21pZGRsZXdhcmVEYXRhJGFycm93O1xuICAgICAgY29uc3Qge1xuICAgICAgICB4LFxuICAgICAgICB5LFxuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIG1pZGRsZXdhcmVEYXRhXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCBkaWZmQ29vcmRzID0gYXdhaXQgY29udmVydFZhbHVlVG9Db29yZHMoc3RhdGUsIG9wdGlvbnMpO1xuXG4gICAgICAvLyBJZiB0aGUgcGxhY2VtZW50IGlzIHRoZSBzYW1lIGFuZCB0aGUgYXJyb3cgY2F1c2VkIGFuIGFsaWdubWVudCBvZmZzZXRcbiAgICAgIC8vIHRoZW4gd2UgZG9uJ3QgbmVlZCB0byBjaGFuZ2UgdGhlIHBvc2l0aW9uaW5nIGNvb3JkaW5hdGVzLlxuICAgICAgaWYgKHBsYWNlbWVudCA9PT0gKChfbWlkZGxld2FyZURhdGEkb2Zmc2UgPSBtaWRkbGV3YXJlRGF0YS5vZmZzZXQpID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkb2Zmc2UucGxhY2VtZW50KSAmJiAoX21pZGRsZXdhcmVEYXRhJGFycm93ID0gbWlkZGxld2FyZURhdGEuYXJyb3cpICE9IG51bGwgJiYgX21pZGRsZXdhcmVEYXRhJGFycm93LmFsaWdubWVudE9mZnNldCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICB4OiB4ICsgZGlmZkNvb3Jkcy54LFxuICAgICAgICB5OiB5ICsgZGlmZkNvb3Jkcy55LFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgLi4uZGlmZkNvb3JkcyxcbiAgICAgICAgICBwbGFjZW1lbnRcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBzaGlmdGluZyBpdCBpbiBvcmRlciB0b1xuICoga2VlcCBpdCBpbiB2aWV3IHdoZW4gaXQgd2lsbCBvdmVyZmxvdyB0aGUgY2xpcHBpbmcgYm91bmRhcnkuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvc2hpZnRcbiAqL1xuY29uc3Qgc2hpZnQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ3NoaWZ0JyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHgsXG4gICAgICAgIHksXG4gICAgICAgIHBsYWNlbWVudFxuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBtYWluQXhpczogY2hlY2tNYWluQXhpcyA9IHRydWUsXG4gICAgICAgIGNyb3NzQXhpczogY2hlY2tDcm9zc0F4aXMgPSBmYWxzZSxcbiAgICAgICAgbGltaXRlciA9IHtcbiAgICAgICAgICBmbjogX3JlZiA9PiB7XG4gICAgICAgICAgICBsZXQge1xuICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICB5XG4gICAgICAgICAgICB9ID0gX3JlZjtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgIHlcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBjb29yZHMgPSB7XG4gICAgICAgIHgsXG4gICAgICAgIHlcbiAgICAgIH07XG4gICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCBkZXRlY3RPdmVyZmxvd09wdGlvbnMpO1xuICAgICAgY29uc3QgY3Jvc3NBeGlzID0gZ2V0U2lkZUF4aXMoZ2V0U2lkZShwbGFjZW1lbnQpKTtcbiAgICAgIGNvbnN0IG1haW5BeGlzID0gZ2V0T3Bwb3NpdGVBeGlzKGNyb3NzQXhpcyk7XG4gICAgICBsZXQgbWFpbkF4aXNDb29yZCA9IGNvb3Jkc1ttYWluQXhpc107XG4gICAgICBsZXQgY3Jvc3NBeGlzQ29vcmQgPSBjb29yZHNbY3Jvc3NBeGlzXTtcbiAgICAgIGlmIChjaGVja01haW5BeGlzKSB7XG4gICAgICAgIGNvbnN0IG1pblNpZGUgPSBtYWluQXhpcyA9PT0gJ3knID8gJ3RvcCcgOiAnbGVmdCc7XG4gICAgICAgIGNvbnN0IG1heFNpZGUgPSBtYWluQXhpcyA9PT0gJ3knID8gJ2JvdHRvbScgOiAncmlnaHQnO1xuICAgICAgICBjb25zdCBtaW4gPSBtYWluQXhpc0Nvb3JkICsgb3ZlcmZsb3dbbWluU2lkZV07XG4gICAgICAgIGNvbnN0IG1heCA9IG1haW5BeGlzQ29vcmQgLSBvdmVyZmxvd1ttYXhTaWRlXTtcbiAgICAgICAgbWFpbkF4aXNDb29yZCA9IGNsYW1wKG1pbiwgbWFpbkF4aXNDb29yZCwgbWF4KTtcbiAgICAgIH1cbiAgICAgIGlmIChjaGVja0Nyb3NzQXhpcykge1xuICAgICAgICBjb25zdCBtaW5TaWRlID0gY3Jvc3NBeGlzID09PSAneScgPyAndG9wJyA6ICdsZWZ0JztcbiAgICAgICAgY29uc3QgbWF4U2lkZSA9IGNyb3NzQXhpcyA9PT0gJ3knID8gJ2JvdHRvbScgOiAncmlnaHQnO1xuICAgICAgICBjb25zdCBtaW4gPSBjcm9zc0F4aXNDb29yZCArIG92ZXJmbG93W21pblNpZGVdO1xuICAgICAgICBjb25zdCBtYXggPSBjcm9zc0F4aXNDb29yZCAtIG92ZXJmbG93W21heFNpZGVdO1xuICAgICAgICBjcm9zc0F4aXNDb29yZCA9IGNsYW1wKG1pbiwgY3Jvc3NBeGlzQ29vcmQsIG1heCk7XG4gICAgICB9XG4gICAgICBjb25zdCBsaW1pdGVkQ29vcmRzID0gbGltaXRlci5mbih7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBbbWFpbkF4aXNdOiBtYWluQXhpc0Nvb3JkLFxuICAgICAgICBbY3Jvc3NBeGlzXTogY3Jvc3NBeGlzQ29vcmRcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ubGltaXRlZENvb3JkcyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIHg6IGxpbWl0ZWRDb29yZHMueCAtIHgsXG4gICAgICAgICAgeTogbGltaXRlZENvb3Jkcy55IC0geSxcbiAgICAgICAgICBlbmFibGVkOiB7XG4gICAgICAgICAgICBbbWFpbkF4aXNdOiBjaGVja01haW5BeGlzLFxuICAgICAgICAgICAgW2Nyb3NzQXhpc106IGNoZWNrQ3Jvc3NBeGlzXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfTtcbn07XG4vKipcbiAqIEJ1aWx0LWluIGBsaW1pdGVyYCB0aGF0IHdpbGwgc3RvcCBgc2hpZnQoKWAgYXQgYSBjZXJ0YWluIHBvaW50LlxuICovXG5jb25zdCBsaW1pdFNoaWZ0ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG9wdGlvbnMsXG4gICAgZm4oc3RhdGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgeCxcbiAgICAgICAgeSxcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICByZWN0cyxcbiAgICAgICAgbWlkZGxld2FyZURhdGFcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgb2Zmc2V0ID0gMCxcbiAgICAgICAgbWFpbkF4aXM6IGNoZWNrTWFpbkF4aXMgPSB0cnVlLFxuICAgICAgICBjcm9zc0F4aXM6IGNoZWNrQ3Jvc3NBeGlzID0gdHJ1ZVxuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IGNvb3JkcyA9IHtcbiAgICAgICAgeCxcbiAgICAgICAgeVxuICAgICAgfTtcbiAgICAgIGNvbnN0IGNyb3NzQXhpcyA9IGdldFNpZGVBeGlzKHBsYWNlbWVudCk7XG4gICAgICBjb25zdCBtYWluQXhpcyA9IGdldE9wcG9zaXRlQXhpcyhjcm9zc0F4aXMpO1xuICAgICAgbGV0IG1haW5BeGlzQ29vcmQgPSBjb29yZHNbbWFpbkF4aXNdO1xuICAgICAgbGV0IGNyb3NzQXhpc0Nvb3JkID0gY29vcmRzW2Nyb3NzQXhpc107XG4gICAgICBjb25zdCByYXdPZmZzZXQgPSBldmFsdWF0ZShvZmZzZXQsIHN0YXRlKTtcbiAgICAgIGNvbnN0IGNvbXB1dGVkT2Zmc2V0ID0gdHlwZW9mIHJhd09mZnNldCA9PT0gJ251bWJlcicgPyB7XG4gICAgICAgIG1haW5BeGlzOiByYXdPZmZzZXQsXG4gICAgICAgIGNyb3NzQXhpczogMFxuICAgICAgfSA6IHtcbiAgICAgICAgbWFpbkF4aXM6IDAsXG4gICAgICAgIGNyb3NzQXhpczogMCxcbiAgICAgICAgLi4ucmF3T2Zmc2V0XG4gICAgICB9O1xuICAgICAgaWYgKGNoZWNrTWFpbkF4aXMpIHtcbiAgICAgICAgY29uc3QgbGVuID0gbWFpbkF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcbiAgICAgICAgY29uc3QgbGltaXRNaW4gPSByZWN0cy5yZWZlcmVuY2VbbWFpbkF4aXNdIC0gcmVjdHMuZmxvYXRpbmdbbGVuXSArIGNvbXB1dGVkT2Zmc2V0Lm1haW5BeGlzO1xuICAgICAgICBjb25zdCBsaW1pdE1heCA9IHJlY3RzLnJlZmVyZW5jZVttYWluQXhpc10gKyByZWN0cy5yZWZlcmVuY2VbbGVuXSAtIGNvbXB1dGVkT2Zmc2V0Lm1haW5BeGlzO1xuICAgICAgICBpZiAobWFpbkF4aXNDb29yZCA8IGxpbWl0TWluKSB7XG4gICAgICAgICAgbWFpbkF4aXNDb29yZCA9IGxpbWl0TWluO1xuICAgICAgICB9IGVsc2UgaWYgKG1haW5BeGlzQ29vcmQgPiBsaW1pdE1heCkge1xuICAgICAgICAgIG1haW5BeGlzQ29vcmQgPSBsaW1pdE1heDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGNoZWNrQ3Jvc3NBeGlzKSB7XG4gICAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkb2Zmc2UsIF9taWRkbGV3YXJlRGF0YSRvZmZzZTI7XG4gICAgICAgIGNvbnN0IGxlbiA9IG1haW5BeGlzID09PSAneScgPyAnd2lkdGgnIDogJ2hlaWdodCc7XG4gICAgICAgIGNvbnN0IGlzT3JpZ2luU2lkZSA9IFsndG9wJywgJ2xlZnQnXS5pbmNsdWRlcyhnZXRTaWRlKHBsYWNlbWVudCkpO1xuICAgICAgICBjb25zdCBsaW1pdE1pbiA9IHJlY3RzLnJlZmVyZW5jZVtjcm9zc0F4aXNdIC0gcmVjdHMuZmxvYXRpbmdbbGVuXSArIChpc09yaWdpblNpZGUgPyAoKF9taWRkbGV3YXJlRGF0YSRvZmZzZSA9IG1pZGRsZXdhcmVEYXRhLm9mZnNldCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRvZmZzZVtjcm9zc0F4aXNdKSB8fCAwIDogMCkgKyAoaXNPcmlnaW5TaWRlID8gMCA6IGNvbXB1dGVkT2Zmc2V0LmNyb3NzQXhpcyk7XG4gICAgICAgIGNvbnN0IGxpbWl0TWF4ID0gcmVjdHMucmVmZXJlbmNlW2Nyb3NzQXhpc10gKyByZWN0cy5yZWZlcmVuY2VbbGVuXSArIChpc09yaWdpblNpZGUgPyAwIDogKChfbWlkZGxld2FyZURhdGEkb2Zmc2UyID0gbWlkZGxld2FyZURhdGEub2Zmc2V0KSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJG9mZnNlMltjcm9zc0F4aXNdKSB8fCAwKSAtIChpc09yaWdpblNpZGUgPyBjb21wdXRlZE9mZnNldC5jcm9zc0F4aXMgOiAwKTtcbiAgICAgICAgaWYgKGNyb3NzQXhpc0Nvb3JkIDwgbGltaXRNaW4pIHtcbiAgICAgICAgICBjcm9zc0F4aXNDb29yZCA9IGxpbWl0TWluO1xuICAgICAgICB9IGVsc2UgaWYgKGNyb3NzQXhpc0Nvb3JkID4gbGltaXRNYXgpIHtcbiAgICAgICAgICBjcm9zc0F4aXNDb29yZCA9IGxpbWl0TWF4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBbbWFpbkF4aXNdOiBtYWluQXhpc0Nvb3JkLFxuICAgICAgICBbY3Jvc3NBeGlzXTogY3Jvc3NBeGlzQ29vcmRcbiAgICAgIH07XG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRoYXQgYWxsb3dzIHlvdSB0byBjaGFuZ2UgdGhlIHNpemUgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQg4oCUXG4gKiBmb3IgaW5zdGFuY2UsIHByZXZlbnQgaXQgZnJvbSBvdmVyZmxvd2luZyB0aGUgY2xpcHBpbmcgYm91bmRhcnkgb3IgbWF0Y2ggdGhlXG4gKiB3aWR0aCBvZiB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvc2l6ZVxuICovXG5jb25zdCBzaXplID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdzaXplJyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICB2YXIgX3N0YXRlJG1pZGRsZXdhcmVEYXRhLCBfc3RhdGUkbWlkZGxld2FyZURhdGEyO1xuICAgICAgY29uc3Qge1xuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIHJlY3RzLFxuICAgICAgICBwbGF0Zm9ybSxcbiAgICAgICAgZWxlbWVudHNcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgYXBwbHkgPSAoKSA9PiB7fSxcbiAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgZGV0ZWN0T3ZlcmZsb3dPcHRpb25zKTtcbiAgICAgIGNvbnN0IHNpZGUgPSBnZXRTaWRlKHBsYWNlbWVudCk7XG4gICAgICBjb25zdCBhbGlnbm1lbnQgPSBnZXRBbGlnbm1lbnQocGxhY2VtZW50KTtcbiAgICAgIGNvbnN0IGlzWUF4aXMgPSBnZXRTaWRlQXhpcyhwbGFjZW1lbnQpID09PSAneSc7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHdpZHRoLFxuICAgICAgICBoZWlnaHRcbiAgICAgIH0gPSByZWN0cy5mbG9hdGluZztcbiAgICAgIGxldCBoZWlnaHRTaWRlO1xuICAgICAgbGV0IHdpZHRoU2lkZTtcbiAgICAgIGlmIChzaWRlID09PSAndG9wJyB8fCBzaWRlID09PSAnYm90dG9tJykge1xuICAgICAgICBoZWlnaHRTaWRlID0gc2lkZTtcbiAgICAgICAgd2lkdGhTaWRlID0gYWxpZ25tZW50ID09PSAoKGF3YWl0IChwbGF0Zm9ybS5pc1JUTCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNSVEwoZWxlbWVudHMuZmxvYXRpbmcpKSkgPyAnc3RhcnQnIDogJ2VuZCcpID8gJ2xlZnQnIDogJ3JpZ2h0JztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdpZHRoU2lkZSA9IHNpZGU7XG4gICAgICAgIGhlaWdodFNpZGUgPSBhbGlnbm1lbnQgPT09ICdlbmQnID8gJ3RvcCcgOiAnYm90dG9tJztcbiAgICAgIH1cbiAgICAgIGNvbnN0IG1heGltdW1DbGlwcGluZ0hlaWdodCA9IGhlaWdodCAtIG92ZXJmbG93LnRvcCAtIG92ZXJmbG93LmJvdHRvbTtcbiAgICAgIGNvbnN0IG1heGltdW1DbGlwcGluZ1dpZHRoID0gd2lkdGggLSBvdmVyZmxvdy5sZWZ0IC0gb3ZlcmZsb3cucmlnaHQ7XG4gICAgICBjb25zdCBvdmVyZmxvd0F2YWlsYWJsZUhlaWdodCA9IG1pbihoZWlnaHQgLSBvdmVyZmxvd1toZWlnaHRTaWRlXSwgbWF4aW11bUNsaXBwaW5nSGVpZ2h0KTtcbiAgICAgIGNvbnN0IG92ZXJmbG93QXZhaWxhYmxlV2lkdGggPSBtaW4od2lkdGggLSBvdmVyZmxvd1t3aWR0aFNpZGVdLCBtYXhpbXVtQ2xpcHBpbmdXaWR0aCk7XG4gICAgICBjb25zdCBub1NoaWZ0ID0gIXN0YXRlLm1pZGRsZXdhcmVEYXRhLnNoaWZ0O1xuICAgICAgbGV0IGF2YWlsYWJsZUhlaWdodCA9IG92ZXJmbG93QXZhaWxhYmxlSGVpZ2h0O1xuICAgICAgbGV0IGF2YWlsYWJsZVdpZHRoID0gb3ZlcmZsb3dBdmFpbGFibGVXaWR0aDtcbiAgICAgIGlmICgoX3N0YXRlJG1pZGRsZXdhcmVEYXRhID0gc3RhdGUubWlkZGxld2FyZURhdGEuc2hpZnQpICE9IG51bGwgJiYgX3N0YXRlJG1pZGRsZXdhcmVEYXRhLmVuYWJsZWQueCkge1xuICAgICAgICBhdmFpbGFibGVXaWR0aCA9IG1heGltdW1DbGlwcGluZ1dpZHRoO1xuICAgICAgfVxuICAgICAgaWYgKChfc3RhdGUkbWlkZGxld2FyZURhdGEyID0gc3RhdGUubWlkZGxld2FyZURhdGEuc2hpZnQpICE9IG51bGwgJiYgX3N0YXRlJG1pZGRsZXdhcmVEYXRhMi5lbmFibGVkLnkpIHtcbiAgICAgICAgYXZhaWxhYmxlSGVpZ2h0ID0gbWF4aW11bUNsaXBwaW5nSGVpZ2h0O1xuICAgICAgfVxuICAgICAgaWYgKG5vU2hpZnQgJiYgIWFsaWdubWVudCkge1xuICAgICAgICBjb25zdCB4TWluID0gbWF4KG92ZXJmbG93LmxlZnQsIDApO1xuICAgICAgICBjb25zdCB4TWF4ID0gbWF4KG92ZXJmbG93LnJpZ2h0LCAwKTtcbiAgICAgICAgY29uc3QgeU1pbiA9IG1heChvdmVyZmxvdy50b3AsIDApO1xuICAgICAgICBjb25zdCB5TWF4ID0gbWF4KG92ZXJmbG93LmJvdHRvbSwgMCk7XG4gICAgICAgIGlmIChpc1lBeGlzKSB7XG4gICAgICAgICAgYXZhaWxhYmxlV2lkdGggPSB3aWR0aCAtIDIgKiAoeE1pbiAhPT0gMCB8fCB4TWF4ICE9PSAwID8geE1pbiArIHhNYXggOiBtYXgob3ZlcmZsb3cubGVmdCwgb3ZlcmZsb3cucmlnaHQpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhdmFpbGFibGVIZWlnaHQgPSBoZWlnaHQgLSAyICogKHlNaW4gIT09IDAgfHwgeU1heCAhPT0gMCA/IHlNaW4gKyB5TWF4IDogbWF4KG92ZXJmbG93LnRvcCwgb3ZlcmZsb3cuYm90dG9tKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGF3YWl0IGFwcGx5KHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGF2YWlsYWJsZVdpZHRoLFxuICAgICAgICBhdmFpbGFibGVIZWlnaHRcbiAgICAgIH0pO1xuICAgICAgY29uc3QgbmV4dERpbWVuc2lvbnMgPSBhd2FpdCBwbGF0Zm9ybS5nZXREaW1lbnNpb25zKGVsZW1lbnRzLmZsb2F0aW5nKTtcbiAgICAgIGlmICh3aWR0aCAhPT0gbmV4dERpbWVuc2lvbnMud2lkdGggfHwgaGVpZ2h0ICE9PSBuZXh0RGltZW5zaW9ucy5oZWlnaHQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgcmVjdHM6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IHsgYXJyb3csIGF1dG9QbGFjZW1lbnQsIGNvbXB1dGVQb3NpdGlvbiwgZGV0ZWN0T3ZlcmZsb3csIGZsaXAsIGhpZGUsIGlubGluZSwgbGltaXRTaGlmdCwgb2Zmc2V0LCBzaGlmdCwgc2l6ZSB9O1xuIiwiZnVuY3Rpb24gaGFzV2luZG93KCkge1xuICByZXR1cm4gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCc7XG59XG5mdW5jdGlvbiBnZXROb2RlTmFtZShub2RlKSB7XG4gIGlmIChpc05vZGUobm9kZSkpIHtcbiAgICByZXR1cm4gKG5vZGUubm9kZU5hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCk7XG4gIH1cbiAgLy8gTW9ja2VkIG5vZGVzIGluIHRlc3RpbmcgZW52aXJvbm1lbnRzIG1heSBub3QgYmUgaW5zdGFuY2VzIG9mIE5vZGUuIEJ5XG4gIC8vIHJldHVybmluZyBgI2RvY3VtZW50YCBhbiBpbmZpbml0ZSBsb29wIHdvbid0IG9jY3VyLlxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmxvYXRpbmctdWkvZmxvYXRpbmctdWkvaXNzdWVzLzIzMTdcbiAgcmV0dXJuICcjZG9jdW1lbnQnO1xufVxuZnVuY3Rpb24gZ2V0V2luZG93KG5vZGUpIHtcbiAgdmFyIF9ub2RlJG93bmVyRG9jdW1lbnQ7XG4gIHJldHVybiAobm9kZSA9PSBudWxsIHx8IChfbm9kZSRvd25lckRvY3VtZW50ID0gbm9kZS5vd25lckRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX25vZGUkb3duZXJEb2N1bWVudC5kZWZhdWx0VmlldykgfHwgd2luZG93O1xufVxuZnVuY3Rpb24gZ2V0RG9jdW1lbnRFbGVtZW50KG5vZGUpIHtcbiAgdmFyIF9yZWY7XG4gIHJldHVybiAoX3JlZiA9IChpc05vZGUobm9kZSkgPyBub2RlLm93bmVyRG9jdW1lbnQgOiBub2RlLmRvY3VtZW50KSB8fCB3aW5kb3cuZG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfcmVmLmRvY3VtZW50RWxlbWVudDtcbn1cbmZ1bmN0aW9uIGlzTm9kZSh2YWx1ZSkge1xuICBpZiAoIWhhc1dpbmRvdygpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIE5vZGUgfHwgdmFsdWUgaW5zdGFuY2VvZiBnZXRXaW5kb3codmFsdWUpLk5vZGU7XG59XG5mdW5jdGlvbiBpc0VsZW1lbnQodmFsdWUpIHtcbiAgaWYgKCFoYXNXaW5kb3coKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBFbGVtZW50IHx8IHZhbHVlIGluc3RhbmNlb2YgZ2V0V2luZG93KHZhbHVlKS5FbGVtZW50O1xufVxuZnVuY3Rpb24gaXNIVE1MRWxlbWVudCh2YWx1ZSkge1xuICBpZiAoIWhhc1dpbmRvdygpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50IHx8IHZhbHVlIGluc3RhbmNlb2YgZ2V0V2luZG93KHZhbHVlKS5IVE1MRWxlbWVudDtcbn1cbmZ1bmN0aW9uIGlzU2hhZG93Um9vdCh2YWx1ZSkge1xuICBpZiAoIWhhc1dpbmRvdygpIHx8IHR5cGVvZiBTaGFkb3dSb290ID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBTaGFkb3dSb290IHx8IHZhbHVlIGluc3RhbmNlb2YgZ2V0V2luZG93KHZhbHVlKS5TaGFkb3dSb290O1xufVxuZnVuY3Rpb24gaXNPdmVyZmxvd0VsZW1lbnQoZWxlbWVudCkge1xuICBjb25zdCB7XG4gICAgb3ZlcmZsb3csXG4gICAgb3ZlcmZsb3dYLFxuICAgIG92ZXJmbG93WSxcbiAgICBkaXNwbGF5XG4gIH0gPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xuICByZXR1cm4gL2F1dG98c2Nyb2xsfG92ZXJsYXl8aGlkZGVufGNsaXAvLnRlc3Qob3ZlcmZsb3cgKyBvdmVyZmxvd1kgKyBvdmVyZmxvd1gpICYmICFbJ2lubGluZScsICdjb250ZW50cyddLmluY2x1ZGVzKGRpc3BsYXkpO1xufVxuZnVuY3Rpb24gaXNUYWJsZUVsZW1lbnQoZWxlbWVudCkge1xuICByZXR1cm4gWyd0YWJsZScsICd0ZCcsICd0aCddLmluY2x1ZGVzKGdldE5vZGVOYW1lKGVsZW1lbnQpKTtcbn1cbmZ1bmN0aW9uIGlzVG9wTGF5ZXIoZWxlbWVudCkge1xuICByZXR1cm4gWyc6cG9wb3Zlci1vcGVuJywgJzptb2RhbCddLnNvbWUoc2VsZWN0b3IgPT4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gZWxlbWVudC5tYXRjaGVzKHNlbGVjdG9yKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9KTtcbn1cbmZ1bmN0aW9uIGlzQ29udGFpbmluZ0Jsb2NrKGVsZW1lbnRPckNzcykge1xuICBjb25zdCB3ZWJraXQgPSBpc1dlYktpdCgpO1xuICBjb25zdCBjc3MgPSBpc0VsZW1lbnQoZWxlbWVudE9yQ3NzKSA/IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudE9yQ3NzKSA6IGVsZW1lbnRPckNzcztcblxuICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvQ29udGFpbmluZ19ibG9jayNpZGVudGlmeWluZ190aGVfY29udGFpbmluZ19ibG9ja1xuICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXRyYW5zZm9ybXMtMi8jaW5kaXZpZHVhbC10cmFuc2Zvcm1zXG4gIHJldHVybiBbJ3RyYW5zZm9ybScsICd0cmFuc2xhdGUnLCAnc2NhbGUnLCAncm90YXRlJywgJ3BlcnNwZWN0aXZlJ10uc29tZSh2YWx1ZSA9PiBjc3NbdmFsdWVdID8gY3NzW3ZhbHVlXSAhPT0gJ25vbmUnIDogZmFsc2UpIHx8IChjc3MuY29udGFpbmVyVHlwZSA/IGNzcy5jb250YWluZXJUeXBlICE9PSAnbm9ybWFsJyA6IGZhbHNlKSB8fCAhd2Via2l0ICYmIChjc3MuYmFja2Ryb3BGaWx0ZXIgPyBjc3MuYmFja2Ryb3BGaWx0ZXIgIT09ICdub25lJyA6IGZhbHNlKSB8fCAhd2Via2l0ICYmIChjc3MuZmlsdGVyID8gY3NzLmZpbHRlciAhPT0gJ25vbmUnIDogZmFsc2UpIHx8IFsndHJhbnNmb3JtJywgJ3RyYW5zbGF0ZScsICdzY2FsZScsICdyb3RhdGUnLCAncGVyc3BlY3RpdmUnLCAnZmlsdGVyJ10uc29tZSh2YWx1ZSA9PiAoY3NzLndpbGxDaGFuZ2UgfHwgJycpLmluY2x1ZGVzKHZhbHVlKSkgfHwgWydwYWludCcsICdsYXlvdXQnLCAnc3RyaWN0JywgJ2NvbnRlbnQnXS5zb21lKHZhbHVlID0+IChjc3MuY29udGFpbiB8fCAnJykuaW5jbHVkZXModmFsdWUpKTtcbn1cbmZ1bmN0aW9uIGdldENvbnRhaW5pbmdCbG9jayhlbGVtZW50KSB7XG4gIGxldCBjdXJyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUoZWxlbWVudCk7XG4gIHdoaWxlIChpc0hUTUxFbGVtZW50KGN1cnJlbnROb2RlKSAmJiAhaXNMYXN0VHJhdmVyc2FibGVOb2RlKGN1cnJlbnROb2RlKSkge1xuICAgIGlmIChpc0NvbnRhaW5pbmdCbG9jayhjdXJyZW50Tm9kZSkpIHtcbiAgICAgIHJldHVybiBjdXJyZW50Tm9kZTtcbiAgICB9IGVsc2UgaWYgKGlzVG9wTGF5ZXIoY3VycmVudE5vZGUpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY3VycmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGN1cnJlbnROb2RlKTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cbmZ1bmN0aW9uIGlzV2ViS2l0KCkge1xuICBpZiAodHlwZW9mIENTUyA9PT0gJ3VuZGVmaW5lZCcgfHwgIUNTUy5zdXBwb3J0cykgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gQ1NTLnN1cHBvcnRzKCctd2Via2l0LWJhY2tkcm9wLWZpbHRlcicsICdub25lJyk7XG59XG5mdW5jdGlvbiBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUobm9kZSkge1xuICByZXR1cm4gWydodG1sJywgJ2JvZHknLCAnI2RvY3VtZW50J10uaW5jbHVkZXMoZ2V0Tm9kZU5hbWUobm9kZSkpO1xufVxuZnVuY3Rpb24gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KSB7XG4gIHJldHVybiBnZXRXaW5kb3coZWxlbWVudCkuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbn1cbmZ1bmN0aW9uIGdldE5vZGVTY3JvbGwoZWxlbWVudCkge1xuICBpZiAoaXNFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNjcm9sbExlZnQ6IGVsZW1lbnQuc2Nyb2xsTGVmdCxcbiAgICAgIHNjcm9sbFRvcDogZWxlbWVudC5zY3JvbGxUb3BcbiAgICB9O1xuICB9XG4gIHJldHVybiB7XG4gICAgc2Nyb2xsTGVmdDogZWxlbWVudC5zY3JvbGxYLFxuICAgIHNjcm9sbFRvcDogZWxlbWVudC5zY3JvbGxZXG4gIH07XG59XG5mdW5jdGlvbiBnZXRQYXJlbnROb2RlKG5vZGUpIHtcbiAgaWYgKGdldE5vZGVOYW1lKG5vZGUpID09PSAnaHRtbCcpIHtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuICBjb25zdCByZXN1bHQgPVxuICAvLyBTdGVwIGludG8gdGhlIHNoYWRvdyBET00gb2YgdGhlIHBhcmVudCBvZiBhIHNsb3R0ZWQgbm9kZS5cbiAgbm9kZS5hc3NpZ25lZFNsb3QgfHxcbiAgLy8gRE9NIEVsZW1lbnQgZGV0ZWN0ZWQuXG4gIG5vZGUucGFyZW50Tm9kZSB8fFxuICAvLyBTaGFkb3dSb290IGRldGVjdGVkLlxuICBpc1NoYWRvd1Jvb3Qobm9kZSkgJiYgbm9kZS5ob3N0IHx8XG4gIC8vIEZhbGxiYWNrLlxuICBnZXREb2N1bWVudEVsZW1lbnQobm9kZSk7XG4gIHJldHVybiBpc1NoYWRvd1Jvb3QocmVzdWx0KSA/IHJlc3VsdC5ob3N0IDogcmVzdWx0O1xufVxuZnVuY3Rpb24gZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3Iobm9kZSkge1xuICBjb25zdCBwYXJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShub2RlKTtcbiAgaWYgKGlzTGFzdFRyYXZlcnNhYmxlTm9kZShwYXJlbnROb2RlKSkge1xuICAgIHJldHVybiBub2RlLm93bmVyRG9jdW1lbnQgPyBub2RlLm93bmVyRG9jdW1lbnQuYm9keSA6IG5vZGUuYm9keTtcbiAgfVxuICBpZiAoaXNIVE1MRWxlbWVudChwYXJlbnROb2RlKSAmJiBpc092ZXJmbG93RWxlbWVudChwYXJlbnROb2RlKSkge1xuICAgIHJldHVybiBwYXJlbnROb2RlO1xuICB9XG4gIHJldHVybiBnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3RvcihwYXJlbnROb2RlKTtcbn1cbmZ1bmN0aW9uIGdldE92ZXJmbG93QW5jZXN0b3JzKG5vZGUsIGxpc3QsIHRyYXZlcnNlSWZyYW1lcykge1xuICB2YXIgX25vZGUkb3duZXJEb2N1bWVudDI7XG4gIGlmIChsaXN0ID09PSB2b2lkIDApIHtcbiAgICBsaXN0ID0gW107XG4gIH1cbiAgaWYgKHRyYXZlcnNlSWZyYW1lcyA9PT0gdm9pZCAwKSB7XG4gICAgdHJhdmVyc2VJZnJhbWVzID0gdHJ1ZTtcbiAgfVxuICBjb25zdCBzY3JvbGxhYmxlQW5jZXN0b3IgPSBnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3Rvcihub2RlKTtcbiAgY29uc3QgaXNCb2R5ID0gc2Nyb2xsYWJsZUFuY2VzdG9yID09PSAoKF9ub2RlJG93bmVyRG9jdW1lbnQyID0gbm9kZS5vd25lckRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX25vZGUkb3duZXJEb2N1bWVudDIuYm9keSk7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhzY3JvbGxhYmxlQW5jZXN0b3IpO1xuICBpZiAoaXNCb2R5KSB7XG4gICAgY29uc3QgZnJhbWVFbGVtZW50ID0gZ2V0RnJhbWVFbGVtZW50KHdpbik7XG4gICAgcmV0dXJuIGxpc3QuY29uY2F0KHdpbiwgd2luLnZpc3VhbFZpZXdwb3J0IHx8IFtdLCBpc092ZXJmbG93RWxlbWVudChzY3JvbGxhYmxlQW5jZXN0b3IpID8gc2Nyb2xsYWJsZUFuY2VzdG9yIDogW10sIGZyYW1lRWxlbWVudCAmJiB0cmF2ZXJzZUlmcmFtZXMgPyBnZXRPdmVyZmxvd0FuY2VzdG9ycyhmcmFtZUVsZW1lbnQpIDogW10pO1xuICB9XG4gIHJldHVybiBsaXN0LmNvbmNhdChzY3JvbGxhYmxlQW5jZXN0b3IsIGdldE92ZXJmbG93QW5jZXN0b3JzKHNjcm9sbGFibGVBbmNlc3RvciwgW10sIHRyYXZlcnNlSWZyYW1lcykpO1xufVxuZnVuY3Rpb24gZ2V0RnJhbWVFbGVtZW50KHdpbikge1xuICByZXR1cm4gd2luLnBhcmVudCAmJiBPYmplY3QuZ2V0UHJvdG90eXBlT2Yod2luLnBhcmVudCkgPyB3aW4uZnJhbWVFbGVtZW50IDogbnVsbDtcbn1cblxuZXhwb3J0IHsgZ2V0Q29tcHV0ZWRTdHlsZSwgZ2V0Q29udGFpbmluZ0Jsb2NrLCBnZXREb2N1bWVudEVsZW1lbnQsIGdldEZyYW1lRWxlbWVudCwgZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3IsIGdldE5vZGVOYW1lLCBnZXROb2RlU2Nyb2xsLCBnZXRPdmVyZmxvd0FuY2VzdG9ycywgZ2V0UGFyZW50Tm9kZSwgZ2V0V2luZG93LCBpc0NvbnRhaW5pbmdCbG9jaywgaXNFbGVtZW50LCBpc0hUTUxFbGVtZW50LCBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUsIGlzTm9kZSwgaXNPdmVyZmxvd0VsZW1lbnQsIGlzU2hhZG93Um9vdCwgaXNUYWJsZUVsZW1lbnQsIGlzVG9wTGF5ZXIsIGlzV2ViS2l0IH07XG4iLCJpbXBvcnQgeyByZWN0VG9DbGllbnRSZWN0LCBkZXRlY3RPdmVyZmxvdyBhcyBkZXRlY3RPdmVyZmxvdyQxLCBvZmZzZXQgYXMgb2Zmc2V0JDEsIGF1dG9QbGFjZW1lbnQgYXMgYXV0b1BsYWNlbWVudCQxLCBzaGlmdCBhcyBzaGlmdCQxLCBmbGlwIGFzIGZsaXAkMSwgc2l6ZSBhcyBzaXplJDEsIGhpZGUgYXMgaGlkZSQxLCBhcnJvdyBhcyBhcnJvdyQxLCBpbmxpbmUgYXMgaW5saW5lJDEsIGxpbWl0U2hpZnQgYXMgbGltaXRTaGlmdCQxLCBjb21wdXRlUG9zaXRpb24gYXMgY29tcHV0ZVBvc2l0aW9uJDEgfSBmcm9tICdAZmxvYXRpbmctdWkvY29yZSc7XG5pbXBvcnQgeyByb3VuZCwgY3JlYXRlQ29vcmRzLCBtYXgsIG1pbiwgZmxvb3IgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMnO1xuaW1wb3J0IHsgZ2V0Q29tcHV0ZWRTdHlsZSwgaXNIVE1MRWxlbWVudCwgaXNFbGVtZW50LCBnZXRXaW5kb3csIGlzV2ViS2l0LCBnZXRGcmFtZUVsZW1lbnQsIGdldE5vZGVTY3JvbGwsIGdldERvY3VtZW50RWxlbWVudCwgaXNUb3BMYXllciwgZ2V0Tm9kZU5hbWUsIGlzT3ZlcmZsb3dFbGVtZW50LCBnZXRPdmVyZmxvd0FuY2VzdG9ycywgZ2V0UGFyZW50Tm9kZSwgaXNMYXN0VHJhdmVyc2FibGVOb2RlLCBpc0NvbnRhaW5pbmdCbG9jaywgaXNUYWJsZUVsZW1lbnQsIGdldENvbnRhaW5pbmdCbG9jayB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscy9kb20nO1xuZXhwb3J0IHsgZ2V0T3ZlcmZsb3dBbmNlc3RvcnMgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMvZG9tJztcblxuZnVuY3Rpb24gZ2V0Q3NzRGltZW5zaW9ucyhlbGVtZW50KSB7XG4gIGNvbnN0IGNzcyA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG4gIC8vIEluIHRlc3RpbmcgZW52aXJvbm1lbnRzLCB0aGUgYHdpZHRoYCBhbmQgYGhlaWdodGAgcHJvcGVydGllcyBhcmUgZW1wdHlcbiAgLy8gc3RyaW5ncyBmb3IgU1ZHIGVsZW1lbnRzLCByZXR1cm5pbmcgTmFOLiBGYWxsYmFjayB0byBgMGAgaW4gdGhpcyBjYXNlLlxuICBsZXQgd2lkdGggPSBwYXJzZUZsb2F0KGNzcy53aWR0aCkgfHwgMDtcbiAgbGV0IGhlaWdodCA9IHBhcnNlRmxvYXQoY3NzLmhlaWdodCkgfHwgMDtcbiAgY29uc3QgaGFzT2Zmc2V0ID0gaXNIVE1MRWxlbWVudChlbGVtZW50KTtcbiAgY29uc3Qgb2Zmc2V0V2lkdGggPSBoYXNPZmZzZXQgPyBlbGVtZW50Lm9mZnNldFdpZHRoIDogd2lkdGg7XG4gIGNvbnN0IG9mZnNldEhlaWdodCA9IGhhc09mZnNldCA/IGVsZW1lbnQub2Zmc2V0SGVpZ2h0IDogaGVpZ2h0O1xuICBjb25zdCBzaG91bGRGYWxsYmFjayA9IHJvdW5kKHdpZHRoKSAhPT0gb2Zmc2V0V2lkdGggfHwgcm91bmQoaGVpZ2h0KSAhPT0gb2Zmc2V0SGVpZ2h0O1xuICBpZiAoc2hvdWxkRmFsbGJhY2spIHtcbiAgICB3aWR0aCA9IG9mZnNldFdpZHRoO1xuICAgIGhlaWdodCA9IG9mZnNldEhlaWdodDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICAkOiBzaG91bGRGYWxsYmFja1xuICB9O1xufVxuXG5mdW5jdGlvbiB1bndyYXBFbGVtZW50KGVsZW1lbnQpIHtcbiAgcmV0dXJuICFpc0VsZW1lbnQoZWxlbWVudCkgPyBlbGVtZW50LmNvbnRleHRFbGVtZW50IDogZWxlbWVudDtcbn1cblxuZnVuY3Rpb24gZ2V0U2NhbGUoZWxlbWVudCkge1xuICBjb25zdCBkb21FbGVtZW50ID0gdW53cmFwRWxlbWVudChlbGVtZW50KTtcbiAgaWYgKCFpc0hUTUxFbGVtZW50KGRvbUVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUNvb3JkcygxKTtcbiAgfVxuICBjb25zdCByZWN0ID0gZG9tRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3Qge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICAkXG4gIH0gPSBnZXRDc3NEaW1lbnNpb25zKGRvbUVsZW1lbnQpO1xuICBsZXQgeCA9ICgkID8gcm91bmQocmVjdC53aWR0aCkgOiByZWN0LndpZHRoKSAvIHdpZHRoO1xuICBsZXQgeSA9ICgkID8gcm91bmQocmVjdC5oZWlnaHQpIDogcmVjdC5oZWlnaHQpIC8gaGVpZ2h0O1xuXG4gIC8vIDAsIE5hTiwgb3IgSW5maW5pdHkgc2hvdWxkIGFsd2F5cyBmYWxsYmFjayB0byAxLlxuXG4gIGlmICgheCB8fCAhTnVtYmVyLmlzRmluaXRlKHgpKSB7XG4gICAgeCA9IDE7XG4gIH1cbiAgaWYgKCF5IHx8ICFOdW1iZXIuaXNGaW5pdGUoeSkpIHtcbiAgICB5ID0gMTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG5jb25zdCBub09mZnNldHMgPSAvKiNfX1BVUkVfXyovY3JlYXRlQ29vcmRzKDApO1xuZnVuY3Rpb24gZ2V0VmlzdWFsT2Zmc2V0cyhlbGVtZW50KSB7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgaWYgKCFpc1dlYktpdCgpIHx8ICF3aW4udmlzdWFsVmlld3BvcnQpIHtcbiAgICByZXR1cm4gbm9PZmZzZXRzO1xuICB9XG4gIHJldHVybiB7XG4gICAgeDogd2luLnZpc3VhbFZpZXdwb3J0Lm9mZnNldExlZnQsXG4gICAgeTogd2luLnZpc3VhbFZpZXdwb3J0Lm9mZnNldFRvcFxuICB9O1xufVxuZnVuY3Rpb24gc2hvdWxkQWRkVmlzdWFsT2Zmc2V0cyhlbGVtZW50LCBpc0ZpeGVkLCBmbG9hdGluZ09mZnNldFBhcmVudCkge1xuICBpZiAoaXNGaXhlZCA9PT0gdm9pZCAwKSB7XG4gICAgaXNGaXhlZCA9IGZhbHNlO1xuICB9XG4gIGlmICghZmxvYXRpbmdPZmZzZXRQYXJlbnQgfHwgaXNGaXhlZCAmJiBmbG9hdGluZ09mZnNldFBhcmVudCAhPT0gZ2V0V2luZG93KGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBpc0ZpeGVkO1xufVxuXG5mdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgaW5jbHVkZVNjYWxlLCBpc0ZpeGVkU3RyYXRlZ3ksIG9mZnNldFBhcmVudCkge1xuICBpZiAoaW5jbHVkZVNjYWxlID09PSB2b2lkIDApIHtcbiAgICBpbmNsdWRlU2NhbGUgPSBmYWxzZTtcbiAgfVxuICBpZiAoaXNGaXhlZFN0cmF0ZWd5ID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkU3RyYXRlZ3kgPSBmYWxzZTtcbiAgfVxuICBjb25zdCBjbGllbnRSZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgZG9tRWxlbWVudCA9IHVud3JhcEVsZW1lbnQoZWxlbWVudCk7XG4gIGxldCBzY2FsZSA9IGNyZWF0ZUNvb3JkcygxKTtcbiAgaWYgKGluY2x1ZGVTY2FsZSkge1xuICAgIGlmIChvZmZzZXRQYXJlbnQpIHtcbiAgICAgIGlmIChpc0VsZW1lbnQob2Zmc2V0UGFyZW50KSkge1xuICAgICAgICBzY2FsZSA9IGdldFNjYWxlKG9mZnNldFBhcmVudCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHNjYWxlID0gZ2V0U2NhbGUoZWxlbWVudCk7XG4gICAgfVxuICB9XG4gIGNvbnN0IHZpc3VhbE9mZnNldHMgPSBzaG91bGRBZGRWaXN1YWxPZmZzZXRzKGRvbUVsZW1lbnQsIGlzRml4ZWRTdHJhdGVneSwgb2Zmc2V0UGFyZW50KSA/IGdldFZpc3VhbE9mZnNldHMoZG9tRWxlbWVudCkgOiBjcmVhdGVDb29yZHMoMCk7XG4gIGxldCB4ID0gKGNsaWVudFJlY3QubGVmdCArIHZpc3VhbE9mZnNldHMueCkgLyBzY2FsZS54O1xuICBsZXQgeSA9IChjbGllbnRSZWN0LnRvcCArIHZpc3VhbE9mZnNldHMueSkgLyBzY2FsZS55O1xuICBsZXQgd2lkdGggPSBjbGllbnRSZWN0LndpZHRoIC8gc2NhbGUueDtcbiAgbGV0IGhlaWdodCA9IGNsaWVudFJlY3QuaGVpZ2h0IC8gc2NhbGUueTtcbiAgaWYgKGRvbUVsZW1lbnQpIHtcbiAgICBjb25zdCB3aW4gPSBnZXRXaW5kb3coZG9tRWxlbWVudCk7XG4gICAgY29uc3Qgb2Zmc2V0V2luID0gb2Zmc2V0UGFyZW50ICYmIGlzRWxlbWVudChvZmZzZXRQYXJlbnQpID8gZ2V0V2luZG93KG9mZnNldFBhcmVudCkgOiBvZmZzZXRQYXJlbnQ7XG4gICAgbGV0IGN1cnJlbnRXaW4gPSB3aW47XG4gICAgbGV0IGN1cnJlbnRJRnJhbWUgPSBnZXRGcmFtZUVsZW1lbnQoY3VycmVudFdpbik7XG4gICAgd2hpbGUgKGN1cnJlbnRJRnJhbWUgJiYgb2Zmc2V0UGFyZW50ICYmIG9mZnNldFdpbiAhPT0gY3VycmVudFdpbikge1xuICAgICAgY29uc3QgaWZyYW1lU2NhbGUgPSBnZXRTY2FsZShjdXJyZW50SUZyYW1lKTtcbiAgICAgIGNvbnN0IGlmcmFtZVJlY3QgPSBjdXJyZW50SUZyYW1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3QgY3NzID0gZ2V0Q29tcHV0ZWRTdHlsZShjdXJyZW50SUZyYW1lKTtcbiAgICAgIGNvbnN0IGxlZnQgPSBpZnJhbWVSZWN0LmxlZnQgKyAoY3VycmVudElGcmFtZS5jbGllbnRMZWZ0ICsgcGFyc2VGbG9hdChjc3MucGFkZGluZ0xlZnQpKSAqIGlmcmFtZVNjYWxlLng7XG4gICAgICBjb25zdCB0b3AgPSBpZnJhbWVSZWN0LnRvcCArIChjdXJyZW50SUZyYW1lLmNsaWVudFRvcCArIHBhcnNlRmxvYXQoY3NzLnBhZGRpbmdUb3ApKSAqIGlmcmFtZVNjYWxlLnk7XG4gICAgICB4ICo9IGlmcmFtZVNjYWxlLng7XG4gICAgICB5ICo9IGlmcmFtZVNjYWxlLnk7XG4gICAgICB3aWR0aCAqPSBpZnJhbWVTY2FsZS54O1xuICAgICAgaGVpZ2h0ICo9IGlmcmFtZVNjYWxlLnk7XG4gICAgICB4ICs9IGxlZnQ7XG4gICAgICB5ICs9IHRvcDtcbiAgICAgIGN1cnJlbnRXaW4gPSBnZXRXaW5kb3coY3VycmVudElGcmFtZSk7XG4gICAgICBjdXJyZW50SUZyYW1lID0gZ2V0RnJhbWVFbGVtZW50KGN1cnJlbnRXaW4pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVjdFRvQ2xpZW50UmVjdCh7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9KTtcbn1cblxuLy8gSWYgPGh0bWw+IGhhcyBhIENTUyB3aWR0aCBncmVhdGVyIHRoYW4gdGhlIHZpZXdwb3J0LCB0aGVuIHRoaXMgd2lsbCBiZVxuLy8gaW5jb3JyZWN0IGZvciBSVEwuXG5mdW5jdGlvbiBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQsIHJlY3QpIHtcbiAgY29uc3QgbGVmdFNjcm9sbCA9IGdldE5vZGVTY3JvbGwoZWxlbWVudCkuc2Nyb2xsTGVmdDtcbiAgaWYgKCFyZWN0KSB7XG4gICAgcmV0dXJuIGdldEJvdW5kaW5nQ2xpZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkpLmxlZnQgKyBsZWZ0U2Nyb2xsO1xuICB9XG4gIHJldHVybiByZWN0LmxlZnQgKyBsZWZ0U2Nyb2xsO1xufVxuXG5mdW5jdGlvbiBnZXRIVE1MT2Zmc2V0KGRvY3VtZW50RWxlbWVudCwgc2Nyb2xsLCBpZ25vcmVTY3JvbGxiYXJYKSB7XG4gIGlmIChpZ25vcmVTY3JvbGxiYXJYID09PSB2b2lkIDApIHtcbiAgICBpZ25vcmVTY3JvbGxiYXJYID0gZmFsc2U7XG4gIH1cbiAgY29uc3QgaHRtbFJlY3QgPSBkb2N1bWVudEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGNvbnN0IHggPSBodG1sUmVjdC5sZWZ0ICsgc2Nyb2xsLnNjcm9sbExlZnQgLSAoaWdub3JlU2Nyb2xsYmFyWCA/IDAgOlxuICAvLyBSVEwgPGJvZHk+IHNjcm9sbGJhci5cbiAgZ2V0V2luZG93U2Nyb2xsQmFyWChkb2N1bWVudEVsZW1lbnQsIGh0bWxSZWN0KSk7XG4gIGNvbnN0IHkgPSBodG1sUmVjdC50b3AgKyBzY3JvbGwuc2Nyb2xsVG9wO1xuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdChfcmVmKSB7XG4gIGxldCB7XG4gICAgZWxlbWVudHMsXG4gICAgcmVjdCxcbiAgICBvZmZzZXRQYXJlbnQsXG4gICAgc3RyYXRlZ3lcbiAgfSA9IF9yZWY7XG4gIGNvbnN0IGlzRml4ZWQgPSBzdHJhdGVneSA9PT0gJ2ZpeGVkJztcbiAgY29uc3QgZG9jdW1lbnRFbGVtZW50ID0gZ2V0RG9jdW1lbnRFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIGNvbnN0IHRvcExheWVyID0gZWxlbWVudHMgPyBpc1RvcExheWVyKGVsZW1lbnRzLmZsb2F0aW5nKSA6IGZhbHNlO1xuICBpZiAob2Zmc2V0UGFyZW50ID09PSBkb2N1bWVudEVsZW1lbnQgfHwgdG9wTGF5ZXIgJiYgaXNGaXhlZCkge1xuICAgIHJldHVybiByZWN0O1xuICB9XG4gIGxldCBzY3JvbGwgPSB7XG4gICAgc2Nyb2xsTGVmdDogMCxcbiAgICBzY3JvbGxUb3A6IDBcbiAgfTtcbiAgbGV0IHNjYWxlID0gY3JlYXRlQ29vcmRzKDEpO1xuICBjb25zdCBvZmZzZXRzID0gY3JlYXRlQ29vcmRzKDApO1xuICBjb25zdCBpc09mZnNldFBhcmVudEFuRWxlbWVudCA9IGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgaWYgKGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50IHx8ICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCkge1xuICAgIGlmIChnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpICE9PSAnYm9keScgfHwgaXNPdmVyZmxvd0VsZW1lbnQoZG9jdW1lbnRFbGVtZW50KSkge1xuICAgICAgc2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChvZmZzZXRQYXJlbnQpO1xuICAgIH1cbiAgICBpZiAoaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpKSB7XG4gICAgICBjb25zdCBvZmZzZXRSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KG9mZnNldFBhcmVudCk7XG4gICAgICBzY2FsZSA9IGdldFNjYWxlKG9mZnNldFBhcmVudCk7XG4gICAgICBvZmZzZXRzLnggPSBvZmZzZXRSZWN0LnggKyBvZmZzZXRQYXJlbnQuY2xpZW50TGVmdDtcbiAgICAgIG9mZnNldHMueSA9IG9mZnNldFJlY3QueSArIG9mZnNldFBhcmVudC5jbGllbnRUb3A7XG4gICAgfVxuICB9XG4gIGNvbnN0IGh0bWxPZmZzZXQgPSBkb2N1bWVudEVsZW1lbnQgJiYgIWlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ICYmICFpc0ZpeGVkID8gZ2V0SFRNTE9mZnNldChkb2N1bWVudEVsZW1lbnQsIHNjcm9sbCwgdHJ1ZSkgOiBjcmVhdGVDb29yZHMoMCk7XG4gIHJldHVybiB7XG4gICAgd2lkdGg6IHJlY3Qud2lkdGggKiBzY2FsZS54LFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHQgKiBzY2FsZS55LFxuICAgIHg6IHJlY3QueCAqIHNjYWxlLnggLSBzY3JvbGwuc2Nyb2xsTGVmdCAqIHNjYWxlLnggKyBvZmZzZXRzLnggKyBodG1sT2Zmc2V0LngsXG4gICAgeTogcmVjdC55ICogc2NhbGUueSAtIHNjcm9sbC5zY3JvbGxUb3AgKiBzY2FsZS55ICsgb2Zmc2V0cy55ICsgaHRtbE9mZnNldC55XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldENsaWVudFJlY3RzKGVsZW1lbnQpIHtcbiAgcmV0dXJuIEFycmF5LmZyb20oZWxlbWVudC5nZXRDbGllbnRSZWN0cygpKTtcbn1cblxuLy8gR2V0cyB0aGUgZW50aXJlIHNpemUgb2YgdGhlIHNjcm9sbGFibGUgZG9jdW1lbnQgYXJlYSwgZXZlbiBleHRlbmRpbmcgb3V0c2lkZVxuLy8gb2YgdGhlIGA8aHRtbD5gIGFuZCBgPGJvZHk+YCByZWN0IGJvdW5kcyBpZiBob3Jpem9udGFsbHkgc2Nyb2xsYWJsZS5cbmZ1bmN0aW9uIGdldERvY3VtZW50UmVjdChlbGVtZW50KSB7XG4gIGNvbnN0IGh0bWwgPSBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCk7XG4gIGNvbnN0IHNjcm9sbCA9IGdldE5vZGVTY3JvbGwoZWxlbWVudCk7XG4gIGNvbnN0IGJvZHkgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQuYm9keTtcbiAgY29uc3Qgd2lkdGggPSBtYXgoaHRtbC5zY3JvbGxXaWR0aCwgaHRtbC5jbGllbnRXaWR0aCwgYm9keS5zY3JvbGxXaWR0aCwgYm9keS5jbGllbnRXaWR0aCk7XG4gIGNvbnN0IGhlaWdodCA9IG1heChodG1sLnNjcm9sbEhlaWdodCwgaHRtbC5jbGllbnRIZWlnaHQsIGJvZHkuc2Nyb2xsSGVpZ2h0LCBib2R5LmNsaWVudEhlaWdodCk7XG4gIGxldCB4ID0gLXNjcm9sbC5zY3JvbGxMZWZ0ICsgZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50KTtcbiAgY29uc3QgeSA9IC1zY3JvbGwuc2Nyb2xsVG9wO1xuICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShib2R5KS5kaXJlY3Rpb24gPT09ICdydGwnKSB7XG4gICAgeCArPSBtYXgoaHRtbC5jbGllbnRXaWR0aCwgYm9keS5jbGllbnRXaWR0aCkgLSB3aWR0aDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB4LFxuICAgIHlcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0Vmlld3BvcnRSZWN0KGVsZW1lbnQsIHN0cmF0ZWd5KSB7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgY29uc3QgaHRtbCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgY29uc3QgdmlzdWFsVmlld3BvcnQgPSB3aW4udmlzdWFsVmlld3BvcnQ7XG4gIGxldCB3aWR0aCA9IGh0bWwuY2xpZW50V2lkdGg7XG4gIGxldCBoZWlnaHQgPSBodG1sLmNsaWVudEhlaWdodDtcbiAgbGV0IHggPSAwO1xuICBsZXQgeSA9IDA7XG4gIGlmICh2aXN1YWxWaWV3cG9ydCkge1xuICAgIHdpZHRoID0gdmlzdWFsVmlld3BvcnQud2lkdGg7XG4gICAgaGVpZ2h0ID0gdmlzdWFsVmlld3BvcnQuaGVpZ2h0O1xuICAgIGNvbnN0IHZpc3VhbFZpZXdwb3J0QmFzZWQgPSBpc1dlYktpdCgpO1xuICAgIGlmICghdmlzdWFsVmlld3BvcnRCYXNlZCB8fCB2aXN1YWxWaWV3cG9ydEJhc2VkICYmIHN0cmF0ZWd5ID09PSAnZml4ZWQnKSB7XG4gICAgICB4ID0gdmlzdWFsVmlld3BvcnQub2Zmc2V0TGVmdDtcbiAgICAgIHkgPSB2aXN1YWxWaWV3cG9ydC5vZmZzZXRUb3A7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG4vLyBSZXR1cm5zIHRoZSBpbm5lciBjbGllbnQgcmVjdCwgc3VidHJhY3Rpbmcgc2Nyb2xsYmFycyBpZiBwcmVzZW50LlxuZnVuY3Rpb24gZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpIHtcbiAgY29uc3QgY2xpZW50UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCB0cnVlLCBzdHJhdGVneSA9PT0gJ2ZpeGVkJyk7XG4gIGNvbnN0IHRvcCA9IGNsaWVudFJlY3QudG9wICsgZWxlbWVudC5jbGllbnRUb3A7XG4gIGNvbnN0IGxlZnQgPSBjbGllbnRSZWN0LmxlZnQgKyBlbGVtZW50LmNsaWVudExlZnQ7XG4gIGNvbnN0IHNjYWxlID0gaXNIVE1MRWxlbWVudChlbGVtZW50KSA/IGdldFNjYWxlKGVsZW1lbnQpIDogY3JlYXRlQ29vcmRzKDEpO1xuICBjb25zdCB3aWR0aCA9IGVsZW1lbnQuY2xpZW50V2lkdGggKiBzY2FsZS54O1xuICBjb25zdCBoZWlnaHQgPSBlbGVtZW50LmNsaWVudEhlaWdodCAqIHNjYWxlLnk7XG4gIGNvbnN0IHggPSBsZWZ0ICogc2NhbGUueDtcbiAgY29uc3QgeSA9IHRvcCAqIHNjYWxlLnk7XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuZnVuY3Rpb24gZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yKGVsZW1lbnQsIGNsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KSB7XG4gIGxldCByZWN0O1xuICBpZiAoY2xpcHBpbmdBbmNlc3RvciA9PT0gJ3ZpZXdwb3J0Jykge1xuICAgIHJlY3QgPSBnZXRWaWV3cG9ydFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpO1xuICB9IGVsc2UgaWYgKGNsaXBwaW5nQW5jZXN0b3IgPT09ICdkb2N1bWVudCcpIHtcbiAgICByZWN0ID0gZ2V0RG9jdW1lbnRSZWN0KGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSk7XG4gIH0gZWxzZSBpZiAoaXNFbGVtZW50KGNsaXBwaW5nQW5jZXN0b3IpKSB7XG4gICAgcmVjdCA9IGdldElubmVyQm91bmRpbmdDbGllbnRSZWN0KGNsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB2aXN1YWxPZmZzZXRzID0gZ2V0VmlzdWFsT2Zmc2V0cyhlbGVtZW50KTtcbiAgICByZWN0ID0ge1xuICAgICAgeDogY2xpcHBpbmdBbmNlc3Rvci54IC0gdmlzdWFsT2Zmc2V0cy54LFxuICAgICAgeTogY2xpcHBpbmdBbmNlc3Rvci55IC0gdmlzdWFsT2Zmc2V0cy55LFxuICAgICAgd2lkdGg6IGNsaXBwaW5nQW5jZXN0b3Iud2lkdGgsXG4gICAgICBoZWlnaHQ6IGNsaXBwaW5nQW5jZXN0b3IuaGVpZ2h0XG4gICAgfTtcbiAgfVxuICByZXR1cm4gcmVjdFRvQ2xpZW50UmVjdChyZWN0KTtcbn1cbmZ1bmN0aW9uIGhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvcihlbGVtZW50LCBzdG9wTm9kZSkge1xuICBjb25zdCBwYXJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcbiAgaWYgKHBhcmVudE5vZGUgPT09IHN0b3BOb2RlIHx8ICFpc0VsZW1lbnQocGFyZW50Tm9kZSkgfHwgaXNMYXN0VHJhdmVyc2FibGVOb2RlKHBhcmVudE5vZGUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBnZXRDb21wdXRlZFN0eWxlKHBhcmVudE5vZGUpLnBvc2l0aW9uID09PSAnZml4ZWQnIHx8IGhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvcihwYXJlbnROb2RlLCBzdG9wTm9kZSk7XG59XG5cbi8vIEEgXCJjbGlwcGluZyBhbmNlc3RvclwiIGlzIGFuIGBvdmVyZmxvd2AgZWxlbWVudCB3aXRoIHRoZSBjaGFyYWN0ZXJpc3RpYyBvZlxuLy8gY2xpcHBpbmcgKG9yIGhpZGluZykgY2hpbGQgZWxlbWVudHMuIFRoaXMgcmV0dXJucyBhbGwgY2xpcHBpbmcgYW5jZXN0b3JzXG4vLyBvZiB0aGUgZ2l2ZW4gZWxlbWVudCB1cCB0aGUgdHJlZS5cbmZ1bmN0aW9uIGdldENsaXBwaW5nRWxlbWVudEFuY2VzdG9ycyhlbGVtZW50LCBjYWNoZSkge1xuICBjb25zdCBjYWNoZWRSZXN1bHQgPSBjYWNoZS5nZXQoZWxlbWVudCk7XG4gIGlmIChjYWNoZWRSZXN1bHQpIHtcbiAgICByZXR1cm4gY2FjaGVkUmVzdWx0O1xuICB9XG4gIGxldCByZXN1bHQgPSBnZXRPdmVyZmxvd0FuY2VzdG9ycyhlbGVtZW50LCBbXSwgZmFsc2UpLmZpbHRlcihlbCA9PiBpc0VsZW1lbnQoZWwpICYmIGdldE5vZGVOYW1lKGVsKSAhPT0gJ2JvZHknKTtcbiAgbGV0IGN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlID0gbnVsbDtcbiAgY29uc3QgZWxlbWVudElzRml4ZWQgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uID09PSAnZml4ZWQnO1xuICBsZXQgY3VycmVudE5vZGUgPSBlbGVtZW50SXNGaXhlZCA/IGdldFBhcmVudE5vZGUoZWxlbWVudCkgOiBlbGVtZW50O1xuXG4gIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9Db250YWluaW5nX2Jsb2NrI2lkZW50aWZ5aW5nX3RoZV9jb250YWluaW5nX2Jsb2NrXG4gIHdoaWxlIChpc0VsZW1lbnQoY3VycmVudE5vZGUpICYmICFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUoY3VycmVudE5vZGUpKSB7XG4gICAgY29uc3QgY29tcHV0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoY3VycmVudE5vZGUpO1xuICAgIGNvbnN0IGN1cnJlbnROb2RlSXNDb250YWluaW5nID0gaXNDb250YWluaW5nQmxvY2soY3VycmVudE5vZGUpO1xuICAgIGlmICghY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgY29tcHV0ZWRTdHlsZS5wb3NpdGlvbiA9PT0gJ2ZpeGVkJykge1xuICAgICAgY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUgPSBudWxsO1xuICAgIH1cbiAgICBjb25zdCBzaG91bGREcm9wQ3VycmVudE5vZGUgPSBlbGVtZW50SXNGaXhlZCA/ICFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiAhY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUgOiAhY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgY29tcHV0ZWRTdHlsZS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycgJiYgISFjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSAmJiBbJ2Fic29sdXRlJywgJ2ZpeGVkJ10uaW5jbHVkZXMoY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUucG9zaXRpb24pIHx8IGlzT3ZlcmZsb3dFbGVtZW50KGN1cnJlbnROb2RlKSAmJiAhY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgaGFzRml4ZWRQb3NpdGlvbkFuY2VzdG9yKGVsZW1lbnQsIGN1cnJlbnROb2RlKTtcbiAgICBpZiAoc2hvdWxkRHJvcEN1cnJlbnROb2RlKSB7XG4gICAgICAvLyBEcm9wIG5vbi1jb250YWluaW5nIGJsb2Nrcy5cbiAgICAgIHJlc3VsdCA9IHJlc3VsdC5maWx0ZXIoYW5jZXN0b3IgPT4gYW5jZXN0b3IgIT09IGN1cnJlbnROb2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUmVjb3JkIGxhc3QgY29udGFpbmluZyBibG9jayBmb3IgbmV4dCBpdGVyYXRpb24uXG4gICAgICBjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA9IGNvbXB1dGVkU3R5bGU7XG4gICAgfVxuICAgIGN1cnJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShjdXJyZW50Tm9kZSk7XG4gIH1cbiAgY2FjaGUuc2V0KGVsZW1lbnQsIHJlc3VsdCk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8vIEdldHMgdGhlIG1heGltdW0gYXJlYSB0aGF0IHRoZSBlbGVtZW50IGlzIHZpc2libGUgaW4gZHVlIHRvIGFueSBudW1iZXIgb2Zcbi8vIGNsaXBwaW5nIGFuY2VzdG9ycy5cbmZ1bmN0aW9uIGdldENsaXBwaW5nUmVjdChfcmVmKSB7XG4gIGxldCB7XG4gICAgZWxlbWVudCxcbiAgICBib3VuZGFyeSxcbiAgICByb290Qm91bmRhcnksXG4gICAgc3RyYXRlZ3lcbiAgfSA9IF9yZWY7XG4gIGNvbnN0IGVsZW1lbnRDbGlwcGluZ0FuY2VzdG9ycyA9IGJvdW5kYXJ5ID09PSAnY2xpcHBpbmdBbmNlc3RvcnMnID8gaXNUb3BMYXllcihlbGVtZW50KSA/IFtdIDogZ2V0Q2xpcHBpbmdFbGVtZW50QW5jZXN0b3JzKGVsZW1lbnQsIHRoaXMuX2MpIDogW10uY29uY2F0KGJvdW5kYXJ5KTtcbiAgY29uc3QgY2xpcHBpbmdBbmNlc3RvcnMgPSBbLi4uZWxlbWVudENsaXBwaW5nQW5jZXN0b3JzLCByb290Qm91bmRhcnldO1xuICBjb25zdCBmaXJzdENsaXBwaW5nQW5jZXN0b3IgPSBjbGlwcGluZ0FuY2VzdG9yc1swXTtcbiAgY29uc3QgY2xpcHBpbmdSZWN0ID0gY2xpcHBpbmdBbmNlc3RvcnMucmVkdWNlKChhY2NSZWN0LCBjbGlwcGluZ0FuY2VzdG9yKSA9PiB7XG4gICAgY29uc3QgcmVjdCA9IGdldENsaWVudFJlY3RGcm9tQ2xpcHBpbmdBbmNlc3RvcihlbGVtZW50LCBjbGlwcGluZ0FuY2VzdG9yLCBzdHJhdGVneSk7XG4gICAgYWNjUmVjdC50b3AgPSBtYXgocmVjdC50b3AsIGFjY1JlY3QudG9wKTtcbiAgICBhY2NSZWN0LnJpZ2h0ID0gbWluKHJlY3QucmlnaHQsIGFjY1JlY3QucmlnaHQpO1xuICAgIGFjY1JlY3QuYm90dG9tID0gbWluKHJlY3QuYm90dG9tLCBhY2NSZWN0LmJvdHRvbSk7XG4gICAgYWNjUmVjdC5sZWZ0ID0gbWF4KHJlY3QubGVmdCwgYWNjUmVjdC5sZWZ0KTtcbiAgICByZXR1cm4gYWNjUmVjdDtcbiAgfSwgZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yKGVsZW1lbnQsIGZpcnN0Q2xpcHBpbmdBbmNlc3Rvciwgc3RyYXRlZ3kpKTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogY2xpcHBpbmdSZWN0LnJpZ2h0IC0gY2xpcHBpbmdSZWN0LmxlZnQsXG4gICAgaGVpZ2h0OiBjbGlwcGluZ1JlY3QuYm90dG9tIC0gY2xpcHBpbmdSZWN0LnRvcCxcbiAgICB4OiBjbGlwcGluZ1JlY3QubGVmdCxcbiAgICB5OiBjbGlwcGluZ1JlY3QudG9wXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldERpbWVuc2lvbnMoZWxlbWVudCkge1xuICBjb25zdCB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0XG4gIH0gPSBnZXRDc3NEaW1lbnNpb25zKGVsZW1lbnQpO1xuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRSZWN0UmVsYXRpdmVUb09mZnNldFBhcmVudChlbGVtZW50LCBvZmZzZXRQYXJlbnQsIHN0cmF0ZWd5KSB7XG4gIGNvbnN0IGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ID0gaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICBjb25zdCBkb2N1bWVudEVsZW1lbnQgPSBnZXREb2N1bWVudEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgY29uc3QgaXNGaXhlZCA9IHN0cmF0ZWd5ID09PSAnZml4ZWQnO1xuICBjb25zdCByZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIHRydWUsIGlzRml4ZWQsIG9mZnNldFBhcmVudCk7XG4gIGxldCBzY3JvbGwgPSB7XG4gICAgc2Nyb2xsTGVmdDogMCxcbiAgICBzY3JvbGxUb3A6IDBcbiAgfTtcbiAgY29uc3Qgb2Zmc2V0cyA9IGNyZWF0ZUNvb3JkcygwKTtcbiAgaWYgKGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50IHx8ICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCkge1xuICAgIGlmIChnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpICE9PSAnYm9keScgfHwgaXNPdmVyZmxvd0VsZW1lbnQoZG9jdW1lbnRFbGVtZW50KSkge1xuICAgICAgc2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChvZmZzZXRQYXJlbnQpO1xuICAgIH1cbiAgICBpZiAoaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQpIHtcbiAgICAgIGNvbnN0IG9mZnNldFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3Qob2Zmc2V0UGFyZW50LCB0cnVlLCBpc0ZpeGVkLCBvZmZzZXRQYXJlbnQpO1xuICAgICAgb2Zmc2V0cy54ID0gb2Zmc2V0UmVjdC54ICsgb2Zmc2V0UGFyZW50LmNsaWVudExlZnQ7XG4gICAgICBvZmZzZXRzLnkgPSBvZmZzZXRSZWN0LnkgKyBvZmZzZXRQYXJlbnQuY2xpZW50VG9wO1xuICAgIH0gZWxzZSBpZiAoZG9jdW1lbnRFbGVtZW50KSB7XG4gICAgICAvLyBJZiB0aGUgPGJvZHk+IHNjcm9sbGJhciBhcHBlYXJzIG9uIHRoZSBsZWZ0IChlLmcuIFJUTCBzeXN0ZW1zKS4gVXNlXG4gICAgICAvLyBGaXJlZm94IHdpdGggbGF5b3V0LnNjcm9sbGJhci5zaWRlID0gMyBpbiBhYm91dDpjb25maWcgdG8gdGVzdCB0aGlzLlxuICAgICAgb2Zmc2V0cy54ID0gZ2V0V2luZG93U2Nyb2xsQmFyWChkb2N1bWVudEVsZW1lbnQpO1xuICAgIH1cbiAgfVxuICBjb25zdCBodG1sT2Zmc2V0ID0gZG9jdW1lbnRFbGVtZW50ICYmICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCA/IGdldEhUTUxPZmZzZXQoZG9jdW1lbnRFbGVtZW50LCBzY3JvbGwpIDogY3JlYXRlQ29vcmRzKDApO1xuICBjb25zdCB4ID0gcmVjdC5sZWZ0ICsgc2Nyb2xsLnNjcm9sbExlZnQgLSBvZmZzZXRzLnggLSBodG1sT2Zmc2V0Lng7XG4gIGNvbnN0IHkgPSByZWN0LnRvcCArIHNjcm9sbC5zY3JvbGxUb3AgLSBvZmZzZXRzLnkgLSBodG1sT2Zmc2V0Lnk7XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5LFxuICAgIHdpZHRoOiByZWN0LndpZHRoLFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHRcbiAgfTtcbn1cblxuZnVuY3Rpb24gaXNTdGF0aWNQb3NpdGlvbmVkKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkucG9zaXRpb24gPT09ICdzdGF0aWMnO1xufVxuXG5mdW5jdGlvbiBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQsIHBvbHlmaWxsKSB7XG4gIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSB8fCBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uID09PSAnZml4ZWQnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKHBvbHlmaWxsKSB7XG4gICAgcmV0dXJuIHBvbHlmaWxsKGVsZW1lbnQpO1xuICB9XG4gIGxldCByYXdPZmZzZXRQYXJlbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDtcblxuICAvLyBGaXJlZm94IHJldHVybnMgdGhlIDxodG1sPiBlbGVtZW50IGFzIHRoZSBvZmZzZXRQYXJlbnQgaWYgaXQncyBub24tc3RhdGljLFxuICAvLyB3aGlsZSBDaHJvbWUgYW5kIFNhZmFyaSByZXR1cm4gdGhlIDxib2R5PiBlbGVtZW50LiBUaGUgPGJvZHk+IGVsZW1lbnQgbXVzdFxuICAvLyBiZSB1c2VkIHRvIHBlcmZvcm0gdGhlIGNvcnJlY3QgY2FsY3VsYXRpb25zIGV2ZW4gaWYgdGhlIDxodG1sPiBlbGVtZW50IGlzXG4gIC8vIG5vbi1zdGF0aWMuXG4gIGlmIChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkgPT09IHJhd09mZnNldFBhcmVudCkge1xuICAgIHJhd09mZnNldFBhcmVudCA9IHJhd09mZnNldFBhcmVudC5vd25lckRvY3VtZW50LmJvZHk7XG4gIH1cbiAgcmV0dXJuIHJhd09mZnNldFBhcmVudDtcbn1cblxuLy8gR2V0cyB0aGUgY2xvc2VzdCBhbmNlc3RvciBwb3NpdGlvbmVkIGVsZW1lbnQuIEhhbmRsZXMgc29tZSBlZGdlIGNhc2VzLFxuLy8gc3VjaCBhcyB0YWJsZSBhbmNlc3RvcnMgYW5kIGNyb3NzIGJyb3dzZXIgYnVncy5cbmZ1bmN0aW9uIGdldE9mZnNldFBhcmVudChlbGVtZW50LCBwb2x5ZmlsbCkge1xuICBjb25zdCB3aW4gPSBnZXRXaW5kb3coZWxlbWVudCk7XG4gIGlmIChpc1RvcExheWVyKGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIHdpbjtcbiAgfVxuICBpZiAoIWlzSFRNTEVsZW1lbnQoZWxlbWVudCkpIHtcbiAgICBsZXQgc3ZnT2Zmc2V0UGFyZW50ID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcbiAgICB3aGlsZSAoc3ZnT2Zmc2V0UGFyZW50ICYmICFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUoc3ZnT2Zmc2V0UGFyZW50KSkge1xuICAgICAgaWYgKGlzRWxlbWVudChzdmdPZmZzZXRQYXJlbnQpICYmICFpc1N0YXRpY1Bvc2l0aW9uZWQoc3ZnT2Zmc2V0UGFyZW50KSkge1xuICAgICAgICByZXR1cm4gc3ZnT2Zmc2V0UGFyZW50O1xuICAgICAgfVxuICAgICAgc3ZnT2Zmc2V0UGFyZW50ID0gZ2V0UGFyZW50Tm9kZShzdmdPZmZzZXRQYXJlbnQpO1xuICAgIH1cbiAgICByZXR1cm4gd2luO1xuICB9XG4gIGxldCBvZmZzZXRQYXJlbnQgPSBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQsIHBvbHlmaWxsKTtcbiAgd2hpbGUgKG9mZnNldFBhcmVudCAmJiBpc1RhYmxlRWxlbWVudChvZmZzZXRQYXJlbnQpICYmIGlzU3RhdGljUG9zaXRpb25lZChvZmZzZXRQYXJlbnQpKSB7XG4gICAgb2Zmc2V0UGFyZW50ID0gZ2V0VHJ1ZU9mZnNldFBhcmVudChvZmZzZXRQYXJlbnQsIHBvbHlmaWxsKTtcbiAgfVxuICBpZiAob2Zmc2V0UGFyZW50ICYmIGlzTGFzdFRyYXZlcnNhYmxlTm9kZShvZmZzZXRQYXJlbnQpICYmIGlzU3RhdGljUG9zaXRpb25lZChvZmZzZXRQYXJlbnQpICYmICFpc0NvbnRhaW5pbmdCbG9jayhvZmZzZXRQYXJlbnQpKSB7XG4gICAgcmV0dXJuIHdpbjtcbiAgfVxuICByZXR1cm4gb2Zmc2V0UGFyZW50IHx8IGdldENvbnRhaW5pbmdCbG9jayhlbGVtZW50KSB8fCB3aW47XG59XG5cbmNvbnN0IGdldEVsZW1lbnRSZWN0cyA9IGFzeW5jIGZ1bmN0aW9uIChkYXRhKSB7XG4gIGNvbnN0IGdldE9mZnNldFBhcmVudEZuID0gdGhpcy5nZXRPZmZzZXRQYXJlbnQgfHwgZ2V0T2Zmc2V0UGFyZW50O1xuICBjb25zdCBnZXREaW1lbnNpb25zRm4gPSB0aGlzLmdldERpbWVuc2lvbnM7XG4gIGNvbnN0IGZsb2F0aW5nRGltZW5zaW9ucyA9IGF3YWl0IGdldERpbWVuc2lvbnNGbihkYXRhLmZsb2F0aW5nKTtcbiAgcmV0dXJuIHtcbiAgICByZWZlcmVuY2U6IGdldFJlY3RSZWxhdGl2ZVRvT2Zmc2V0UGFyZW50KGRhdGEucmVmZXJlbmNlLCBhd2FpdCBnZXRPZmZzZXRQYXJlbnRGbihkYXRhLmZsb2F0aW5nKSwgZGF0YS5zdHJhdGVneSksXG4gICAgZmxvYXRpbmc6IHtcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwLFxuICAgICAgd2lkdGg6IGZsb2F0aW5nRGltZW5zaW9ucy53aWR0aCxcbiAgICAgIGhlaWdodDogZmxvYXRpbmdEaW1lbnNpb25zLmhlaWdodFxuICAgIH1cbiAgfTtcbn07XG5cbmZ1bmN0aW9uIGlzUlRMKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkuZGlyZWN0aW9uID09PSAncnRsJztcbn1cblxuY29uc3QgcGxhdGZvcm0gPSB7XG4gIGNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0LFxuICBnZXREb2N1bWVudEVsZW1lbnQsXG4gIGdldENsaXBwaW5nUmVjdCxcbiAgZ2V0T2Zmc2V0UGFyZW50LFxuICBnZXRFbGVtZW50UmVjdHMsXG4gIGdldENsaWVudFJlY3RzLFxuICBnZXREaW1lbnNpb25zLFxuICBnZXRTY2FsZSxcbiAgaXNFbGVtZW50LFxuICBpc1JUTFxufTtcblxuZnVuY3Rpb24gcmVjdHNBcmVFcXVhbChhLCBiKSB7XG4gIHJldHVybiBhLnggPT09IGIueCAmJiBhLnkgPT09IGIueSAmJiBhLndpZHRoID09PSBiLndpZHRoICYmIGEuaGVpZ2h0ID09PSBiLmhlaWdodDtcbn1cblxuLy8gaHR0cHM6Ly9zYW10aG9yLmF1LzIwMjEvb2JzZXJ2aW5nLWRvbS9cbmZ1bmN0aW9uIG9ic2VydmVNb3ZlKGVsZW1lbnQsIG9uTW92ZSkge1xuICBsZXQgaW8gPSBudWxsO1xuICBsZXQgdGltZW91dElkO1xuICBjb25zdCByb290ID0gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpO1xuICBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgIHZhciBfaW87XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgKF9pbyA9IGlvKSA9PSBudWxsIHx8IF9pby5kaXNjb25uZWN0KCk7XG4gICAgaW8gPSBudWxsO1xuICB9XG4gIGZ1bmN0aW9uIHJlZnJlc2goc2tpcCwgdGhyZXNob2xkKSB7XG4gICAgaWYgKHNraXAgPT09IHZvaWQgMCkge1xuICAgICAgc2tpcCA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAodGhyZXNob2xkID09PSB2b2lkIDApIHtcbiAgICAgIHRocmVzaG9sZCA9IDE7XG4gICAgfVxuICAgIGNsZWFudXAoKTtcbiAgICBjb25zdCBlbGVtZW50UmVjdEZvclJvb3RNYXJnaW4gPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHtcbiAgICAgIGxlZnQsXG4gICAgICB0b3AsXG4gICAgICB3aWR0aCxcbiAgICAgIGhlaWdodFxuICAgIH0gPSBlbGVtZW50UmVjdEZvclJvb3RNYXJnaW47XG4gICAgaWYgKCFza2lwKSB7XG4gICAgICBvbk1vdmUoKTtcbiAgICB9XG4gICAgaWYgKCF3aWR0aCB8fCAhaGVpZ2h0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGluc2V0VG9wID0gZmxvb3IodG9wKTtcbiAgICBjb25zdCBpbnNldFJpZ2h0ID0gZmxvb3Iocm9vdC5jbGllbnRXaWR0aCAtIChsZWZ0ICsgd2lkdGgpKTtcbiAgICBjb25zdCBpbnNldEJvdHRvbSA9IGZsb29yKHJvb3QuY2xpZW50SGVpZ2h0IC0gKHRvcCArIGhlaWdodCkpO1xuICAgIGNvbnN0IGluc2V0TGVmdCA9IGZsb29yKGxlZnQpO1xuICAgIGNvbnN0IHJvb3RNYXJnaW4gPSAtaW5zZXRUb3AgKyBcInB4IFwiICsgLWluc2V0UmlnaHQgKyBcInB4IFwiICsgLWluc2V0Qm90dG9tICsgXCJweCBcIiArIC1pbnNldExlZnQgKyBcInB4XCI7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIHJvb3RNYXJnaW4sXG4gICAgICB0aHJlc2hvbGQ6IG1heCgwLCBtaW4oMSwgdGhyZXNob2xkKSkgfHwgMVxuICAgIH07XG4gICAgbGV0IGlzRmlyc3RVcGRhdGUgPSB0cnVlO1xuICAgIGZ1bmN0aW9uIGhhbmRsZU9ic2VydmUoZW50cmllcykge1xuICAgICAgY29uc3QgcmF0aW8gPSBlbnRyaWVzWzBdLmludGVyc2VjdGlvblJhdGlvO1xuICAgICAgaWYgKHJhdGlvICE9PSB0aHJlc2hvbGQpIHtcbiAgICAgICAgaWYgKCFpc0ZpcnN0VXBkYXRlKSB7XG4gICAgICAgICAgcmV0dXJuIHJlZnJlc2goKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXJhdGlvKSB7XG4gICAgICAgICAgLy8gSWYgdGhlIHJlZmVyZW5jZSBpcyBjbGlwcGVkLCB0aGUgcmF0aW8gaXMgMC4gVGhyb3R0bGUgdGhlIHJlZnJlc2hcbiAgICAgICAgICAvLyB0byBwcmV2ZW50IGFuIGluZmluaXRlIGxvb3Agb2YgdXBkYXRlcy5cbiAgICAgICAgICB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHJlZnJlc2goZmFsc2UsIDFlLTcpO1xuICAgICAgICAgIH0sIDEwMDApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlZnJlc2goZmFsc2UsIHJhdGlvKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHJhdGlvID09PSAxICYmICFyZWN0c0FyZUVxdWFsKGVsZW1lbnRSZWN0Rm9yUm9vdE1hcmdpbiwgZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSkpIHtcbiAgICAgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IGV2ZW4gdGhvdWdoIHRoZSByYXRpbyBpcyByZXBvcnRlZCBhcyAxLCB0aGVcbiAgICAgICAgLy8gZWxlbWVudCBpcyBub3QgYWN0dWFsbHkgZnVsbHkgd2l0aGluIHRoZSBJbnRlcnNlY3Rpb25PYnNlcnZlcidzIHJvb3RcbiAgICAgICAgLy8gYXJlYSBhbnltb3JlLiBUaGlzIGNhbiBoYXBwZW4gdW5kZXIgcGVyZm9ybWFuY2UgY29uc3RyYWludHMuIFRoaXMgbWF5XG4gICAgICAgIC8vIGJlIGEgYnVnIGluIHRoZSBicm93c2VyJ3MgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgaW1wbGVtZW50YXRpb24uIFRvXG4gICAgICAgIC8vIHdvcmsgYXJvdW5kIHRoaXMsIHdlIGNvbXBhcmUgdGhlIGVsZW1lbnQncyBib3VuZGluZyByZWN0IG5vdyB3aXRoXG4gICAgICAgIC8vIHdoYXQgaXQgd2FzIGF0IHRoZSB0aW1lIHdlIGNyZWF0ZWQgdGhlIEludGVyc2VjdGlvbk9ic2VydmVyLiBJZiB0aGV5XG4gICAgICAgIC8vIGFyZSBub3QgZXF1YWwgdGhlbiB0aGUgZWxlbWVudCBtb3ZlZCwgc28gd2UgcmVmcmVzaC5cbiAgICAgICAgcmVmcmVzaCgpO1xuICAgICAgfVxuICAgICAgaXNGaXJzdFVwZGF0ZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8vIE9sZGVyIGJyb3dzZXJzIGRvbid0IHN1cHBvcnQgYSBgZG9jdW1lbnRgIGFzIHRoZSByb290IGFuZCB3aWxsIHRocm93IGFuXG4gICAgLy8gZXJyb3IuXG4gICAgdHJ5IHtcbiAgICAgIGlvID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGhhbmRsZU9ic2VydmUsIHtcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgLy8gSGFuZGxlIDxpZnJhbWU+c1xuICAgICAgICByb290OiByb290Lm93bmVyRG9jdW1lbnRcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlvID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGhhbmRsZU9ic2VydmUsIG9wdGlvbnMpO1xuICAgIH1cbiAgICBpby5vYnNlcnZlKGVsZW1lbnQpO1xuICB9XG4gIHJlZnJlc2godHJ1ZSk7XG4gIHJldHVybiBjbGVhbnVwO1xufVxuXG4vKipcbiAqIEF1dG9tYXRpY2FsbHkgdXBkYXRlcyB0aGUgcG9zaXRpb24gb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgd2hlbiBuZWNlc3NhcnkuXG4gKiBTaG91bGQgb25seSBiZSBjYWxsZWQgd2hlbiB0aGUgZmxvYXRpbmcgZWxlbWVudCBpcyBtb3VudGVkIG9uIHRoZSBET00gb3JcbiAqIHZpc2libGUgb24gdGhlIHNjcmVlbi5cbiAqIEByZXR1cm5zIGNsZWFudXAgZnVuY3Rpb24gdGhhdCBzaG91bGQgYmUgaW52b2tlZCB3aGVuIHRoZSBmbG9hdGluZyBlbGVtZW50IGlzXG4gKiByZW1vdmVkIGZyb20gdGhlIERPTSBvciBoaWRkZW4gZnJvbSB0aGUgc2NyZWVuLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2F1dG9VcGRhdGVcbiAqL1xuZnVuY3Rpb24gYXV0b1VwZGF0ZShyZWZlcmVuY2UsIGZsb2F0aW5nLCB1cGRhdGUsIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICBjb25zdCB7XG4gICAgYW5jZXN0b3JTY3JvbGwgPSB0cnVlLFxuICAgIGFuY2VzdG9yUmVzaXplID0gdHJ1ZSxcbiAgICBlbGVtZW50UmVzaXplID0gdHlwZW9mIFJlc2l6ZU9ic2VydmVyID09PSAnZnVuY3Rpb24nLFxuICAgIGxheW91dFNoaWZ0ID0gdHlwZW9mIEludGVyc2VjdGlvbk9ic2VydmVyID09PSAnZnVuY3Rpb24nLFxuICAgIGFuaW1hdGlvbkZyYW1lID0gZmFsc2VcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHJlZmVyZW5jZUVsID0gdW53cmFwRWxlbWVudChyZWZlcmVuY2UpO1xuICBjb25zdCBhbmNlc3RvcnMgPSBhbmNlc3RvclNjcm9sbCB8fCBhbmNlc3RvclJlc2l6ZSA/IFsuLi4ocmVmZXJlbmNlRWwgPyBnZXRPdmVyZmxvd0FuY2VzdG9ycyhyZWZlcmVuY2VFbCkgOiBbXSksIC4uLmdldE92ZXJmbG93QW5jZXN0b3JzKGZsb2F0aW5nKV0gOiBbXTtcbiAgYW5jZXN0b3JzLmZvckVhY2goYW5jZXN0b3IgPT4ge1xuICAgIGFuY2VzdG9yU2Nyb2xsICYmIGFuY2VzdG9yLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHVwZGF0ZSwge1xuICAgICAgcGFzc2l2ZTogdHJ1ZVxuICAgIH0pO1xuICAgIGFuY2VzdG9yUmVzaXplICYmIGFuY2VzdG9yLmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHVwZGF0ZSk7XG4gIH0pO1xuICBjb25zdCBjbGVhbnVwSW8gPSByZWZlcmVuY2VFbCAmJiBsYXlvdXRTaGlmdCA/IG9ic2VydmVNb3ZlKHJlZmVyZW5jZUVsLCB1cGRhdGUpIDogbnVsbDtcbiAgbGV0IHJlb2JzZXJ2ZUZyYW1lID0gLTE7XG4gIGxldCByZXNpemVPYnNlcnZlciA9IG51bGw7XG4gIGlmIChlbGVtZW50UmVzaXplKSB7XG4gICAgcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoX3JlZiA9PiB7XG4gICAgICBsZXQgW2ZpcnN0RW50cnldID0gX3JlZjtcbiAgICAgIGlmIChmaXJzdEVudHJ5ICYmIGZpcnN0RW50cnkudGFyZ2V0ID09PSByZWZlcmVuY2VFbCAmJiByZXNpemVPYnNlcnZlcikge1xuICAgICAgICAvLyBQcmV2ZW50IHVwZGF0ZSBsb29wcyB3aGVuIHVzaW5nIHRoZSBgc2l6ZWAgbWlkZGxld2FyZS5cbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2Zsb2F0aW5nLXVpL2Zsb2F0aW5nLXVpL2lzc3Vlcy8xNzQwXG4gICAgICAgIHJlc2l6ZU9ic2VydmVyLnVub2JzZXJ2ZShmbG9hdGluZyk7XG4gICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHJlb2JzZXJ2ZUZyYW1lKTtcbiAgICAgICAgcmVvYnNlcnZlRnJhbWUgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgIHZhciBfcmVzaXplT2JzZXJ2ZXI7XG4gICAgICAgICAgKF9yZXNpemVPYnNlcnZlciA9IHJlc2l6ZU9ic2VydmVyKSA9PSBudWxsIHx8IF9yZXNpemVPYnNlcnZlci5vYnNlcnZlKGZsb2F0aW5nKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB1cGRhdGUoKTtcbiAgICB9KTtcbiAgICBpZiAocmVmZXJlbmNlRWwgJiYgIWFuaW1hdGlvbkZyYW1lKSB7XG4gICAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKHJlZmVyZW5jZUVsKTtcbiAgICB9XG4gICAgcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShmbG9hdGluZyk7XG4gIH1cbiAgbGV0IGZyYW1lSWQ7XG4gIGxldCBwcmV2UmVmUmVjdCA9IGFuaW1hdGlvbkZyYW1lID8gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KHJlZmVyZW5jZSkgOiBudWxsO1xuICBpZiAoYW5pbWF0aW9uRnJhbWUpIHtcbiAgICBmcmFtZUxvb3AoKTtcbiAgfVxuICBmdW5jdGlvbiBmcmFtZUxvb3AoKSB7XG4gICAgY29uc3QgbmV4dFJlZlJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QocmVmZXJlbmNlKTtcbiAgICBpZiAocHJldlJlZlJlY3QgJiYgIXJlY3RzQXJlRXF1YWwocHJldlJlZlJlY3QsIG5leHRSZWZSZWN0KSkge1xuICAgICAgdXBkYXRlKCk7XG4gICAgfVxuICAgIHByZXZSZWZSZWN0ID0gbmV4dFJlZlJlY3Q7XG4gICAgZnJhbWVJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShmcmFtZUxvb3ApO1xuICB9XG4gIHVwZGF0ZSgpO1xuICByZXR1cm4gKCkgPT4ge1xuICAgIHZhciBfcmVzaXplT2JzZXJ2ZXIyO1xuICAgIGFuY2VzdG9ycy5mb3JFYWNoKGFuY2VzdG9yID0+IHtcbiAgICAgIGFuY2VzdG9yU2Nyb2xsICYmIGFuY2VzdG9yLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHVwZGF0ZSk7XG4gICAgICBhbmNlc3RvclJlc2l6ZSAmJiBhbmNlc3Rvci5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB1cGRhdGUpO1xuICAgIH0pO1xuICAgIGNsZWFudXBJbyA9PSBudWxsIHx8IGNsZWFudXBJbygpO1xuICAgIChfcmVzaXplT2JzZXJ2ZXIyID0gcmVzaXplT2JzZXJ2ZXIpID09IG51bGwgfHwgX3Jlc2l6ZU9ic2VydmVyMi5kaXNjb25uZWN0KCk7XG4gICAgcmVzaXplT2JzZXJ2ZXIgPSBudWxsO1xuICAgIGlmIChhbmltYXRpb25GcmFtZSkge1xuICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUoZnJhbWVJZCk7XG4gICAgfVxuICB9O1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHdpdGggYW4gb2JqZWN0IG9mIG92ZXJmbG93IHNpZGUgb2Zmc2V0cyB0aGF0IGRldGVybWluZSBob3cgbXVjaCB0aGVcbiAqIGVsZW1lbnQgaXMgb3ZlcmZsb3dpbmcgYSBnaXZlbiBjbGlwcGluZyBib3VuZGFyeSBvbiBlYWNoIHNpZGUuXG4gKiAtIHBvc2l0aXZlID0gb3ZlcmZsb3dpbmcgdGhlIGJvdW5kYXJ5IGJ5IHRoYXQgbnVtYmVyIG9mIHBpeGVsc1xuICogLSBuZWdhdGl2ZSA9IGhvdyBtYW55IHBpeGVscyBsZWZ0IGJlZm9yZSBpdCB3aWxsIG92ZXJmbG93XG4gKiAtIDAgPSBsaWVzIGZsdXNoIHdpdGggdGhlIGJvdW5kYXJ5XG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvZGV0ZWN0T3ZlcmZsb3dcbiAqL1xuY29uc3QgZGV0ZWN0T3ZlcmZsb3cgPSBkZXRlY3RPdmVyZmxvdyQxO1xuXG4vKipcbiAqIE1vZGlmaWVzIHRoZSBwbGFjZW1lbnQgYnkgdHJhbnNsYXRpbmcgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYWxvbmcgdGhlXG4gKiBzcGVjaWZpZWQgYXhlcy5cbiAqIEEgbnVtYmVyIChzaG9ydGhhbmQgZm9yIGBtYWluQXhpc2Agb3IgZGlzdGFuY2UpLCBvciBhbiBheGVzIGNvbmZpZ3VyYXRpb25cbiAqIG9iamVjdCBtYXkgYmUgcGFzc2VkLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL29mZnNldFxuICovXG5jb25zdCBvZmZzZXQgPSBvZmZzZXQkMTtcblxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgY2hvb3NpbmcgdGhlIHBsYWNlbWVudFxuICogdGhhdCBoYXMgdGhlIG1vc3Qgc3BhY2UgYXZhaWxhYmxlIGF1dG9tYXRpY2FsbHksIHdpdGhvdXQgbmVlZGluZyB0byBzcGVjaWZ5IGFcbiAqIHByZWZlcnJlZCBwbGFjZW1lbnQuIEFsdGVybmF0aXZlIHRvIGBmbGlwYC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hdXRvUGxhY2VtZW50XG4gKi9cbmNvbnN0IGF1dG9QbGFjZW1lbnQgPSBhdXRvUGxhY2VtZW50JDE7XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IHNoaWZ0aW5nIGl0IGluIG9yZGVyIHRvXG4gKiBrZWVwIGl0IGluIHZpZXcgd2hlbiBpdCB3aWxsIG92ZXJmbG93IHRoZSBjbGlwcGluZyBib3VuZGFyeS5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9zaGlmdFxuICovXG5jb25zdCBzaGlmdCA9IHNoaWZ0JDE7XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IGZsaXBwaW5nIHRoZSBgcGxhY2VtZW50YFxuICogaW4gb3JkZXIgdG8ga2VlcCBpdCBpbiB2aWV3IHdoZW4gdGhlIHByZWZlcnJlZCBwbGFjZW1lbnQocykgd2lsbCBvdmVyZmxvdyB0aGVcbiAqIGNsaXBwaW5nIGJvdW5kYXJ5LiBBbHRlcm5hdGl2ZSB0byBgYXV0b1BsYWNlbWVudGAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvZmxpcFxuICovXG5jb25zdCBmbGlwID0gZmxpcCQxO1xuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdGhhdCBhbGxvd3MgeW91IHRvIGNoYW5nZSB0aGUgc2l6ZSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCDigJRcbiAqIGZvciBpbnN0YW5jZSwgcHJldmVudCBpdCBmcm9tIG92ZXJmbG93aW5nIHRoZSBjbGlwcGluZyBib3VuZGFyeSBvciBtYXRjaCB0aGVcbiAqIHdpZHRoIG9mIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9zaXplXG4gKi9cbmNvbnN0IHNpemUgPSBzaXplJDE7XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBoaWRlIHRoZSBmbG9hdGluZyBlbGVtZW50IGluIGFwcGxpY2FibGUgc2l0dWF0aW9ucywgc3VjaCBhc1xuICogd2hlbiBpdCBpcyBub3QgaW4gdGhlIHNhbWUgY2xpcHBpbmcgY29udGV4dCBhcyB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvaGlkZVxuICovXG5jb25zdCBoaWRlID0gaGlkZSQxO1xuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdG8gcG9zaXRpb24gYW4gaW5uZXIgZWxlbWVudCBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBzbyB0aGF0IGl0XG4gKiBhcHBlYXJzIGNlbnRlcmVkIHRvIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hcnJvd1xuICovXG5jb25zdCBhcnJvdyA9IGFycm93JDE7XG5cbi8qKlxuICogUHJvdmlkZXMgaW1wcm92ZWQgcG9zaXRpb25pbmcgZm9yIGlubGluZSByZWZlcmVuY2UgZWxlbWVudHMgdGhhdCBjYW4gc3BhblxuICogb3ZlciBtdWx0aXBsZSBsaW5lcywgc3VjaCBhcyBoeXBlcmxpbmtzIG9yIHJhbmdlIHNlbGVjdGlvbnMuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvaW5saW5lXG4gKi9cbmNvbnN0IGlubGluZSA9IGlubGluZSQxO1xuXG4vKipcbiAqIEJ1aWx0LWluIGBsaW1pdGVyYCB0aGF0IHdpbGwgc3RvcCBgc2hpZnQoKWAgYXQgYSBjZXJ0YWluIHBvaW50LlxuICovXG5jb25zdCBsaW1pdFNoaWZ0ID0gbGltaXRTaGlmdCQxO1xuXG4vKipcbiAqIENvbXB1dGVzIHRoZSBgeGAgYW5kIGB5YCBjb29yZGluYXRlcyB0aGF0IHdpbGwgcGxhY2UgdGhlIGZsb2F0aW5nIGVsZW1lbnRcbiAqIG5leHQgdG8gYSBnaXZlbiByZWZlcmVuY2UgZWxlbWVudC5cbiAqL1xuY29uc3QgY29tcHV0ZVBvc2l0aW9uID0gKHJlZmVyZW5jZSwgZmxvYXRpbmcsIG9wdGlvbnMpID0+IHtcbiAgLy8gVGhpcyBjYWNoZXMgdGhlIGV4cGVuc2l2ZSBgZ2V0Q2xpcHBpbmdFbGVtZW50QW5jZXN0b3JzYCBmdW5jdGlvbiBzbyB0aGF0XG4gIC8vIG11bHRpcGxlIGxpZmVjeWNsZSByZXNldHMgcmUtdXNlIHRoZSBzYW1lIHJlc3VsdC4gSXQgb25seSBsaXZlcyBmb3IgYVxuICAvLyBzaW5nbGUgY2FsbC4gSWYgb3RoZXIgZnVuY3Rpb25zIGJlY29tZSBleHBlbnNpdmUsIHdlIGNhbiBhZGQgdGhlbSBhcyB3ZWxsLlxuICBjb25zdCBjYWNoZSA9IG5ldyBNYXAoKTtcbiAgY29uc3QgbWVyZ2VkT3B0aW9ucyA9IHtcbiAgICBwbGF0Zm9ybSxcbiAgICAuLi5vcHRpb25zXG4gIH07XG4gIGNvbnN0IHBsYXRmb3JtV2l0aENhY2hlID0ge1xuICAgIC4uLm1lcmdlZE9wdGlvbnMucGxhdGZvcm0sXG4gICAgX2M6IGNhY2hlXG4gIH07XG4gIHJldHVybiBjb21wdXRlUG9zaXRpb24kMShyZWZlcmVuY2UsIGZsb2F0aW5nLCB7XG4gICAgLi4ubWVyZ2VkT3B0aW9ucyxcbiAgICBwbGF0Zm9ybTogcGxhdGZvcm1XaXRoQ2FjaGVcbiAgfSk7XG59O1xuXG5leHBvcnQgeyBhcnJvdywgYXV0b1BsYWNlbWVudCwgYXV0b1VwZGF0ZSwgY29tcHV0ZVBvc2l0aW9uLCBkZXRlY3RPdmVyZmxvdywgZmxpcCwgaGlkZSwgaW5saW5lLCBsaW1pdFNoaWZ0LCBvZmZzZXQsIHBsYXRmb3JtLCBzaGlmdCwgc2l6ZSB9O1xuIiwiaW1wb3J0IHsgYXJyb3cgYXMgYXJyb3ckMSwgY29tcHV0ZVBvc2l0aW9uIH0gZnJvbSAnQGZsb2F0aW5nLXVpL2RvbSc7XG5leHBvcnQgeyBhdXRvUGxhY2VtZW50LCBhdXRvVXBkYXRlLCBjb21wdXRlUG9zaXRpb24sIGRldGVjdE92ZXJmbG93LCBmbGlwLCBnZXRPdmVyZmxvd0FuY2VzdG9ycywgaGlkZSwgaW5saW5lLCBsaW1pdFNoaWZ0LCBvZmZzZXQsIHBsYXRmb3JtLCBzaGlmdCwgc2l6ZSB9IGZyb20gJ0BmbG9hdGluZy11aS9kb20nO1xuaW1wb3J0IHsgaXNOb2RlLCBnZXROb2RlTmFtZSB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscy9kb20nO1xuaW1wb3J0IHsgdW5yZWYsIGNvbXB1dGVkLCByZWYsIHNoYWxsb3dSZWYsIHdhdGNoLCBnZXRDdXJyZW50U2NvcGUsIG9uU2NvcGVEaXNwb3NlLCBzaGFsbG93UmVhZG9ubHkgfSBmcm9tICd2dWUtZGVtaSc7XG5cbmZ1bmN0aW9uIGlzQ29tcG9uZW50UHVibGljSW5zdGFuY2UodGFyZ2V0KSB7XG4gIHJldHVybiB0YXJnZXQgIT0gbnVsbCAmJiB0eXBlb2YgdGFyZ2V0ID09PSAnb2JqZWN0JyAmJiAnJGVsJyBpbiB0YXJnZXQ7XG59XG5mdW5jdGlvbiB1bndyYXBFbGVtZW50KHRhcmdldCkge1xuICBpZiAoaXNDb21wb25lbnRQdWJsaWNJbnN0YW5jZSh0YXJnZXQpKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IHRhcmdldC4kZWw7XG4gICAgcmV0dXJuIGlzTm9kZShlbGVtZW50KSAmJiBnZXROb2RlTmFtZShlbGVtZW50KSA9PT0gJyNjb21tZW50JyA/IG51bGwgOiBlbGVtZW50O1xuICB9XG4gIHJldHVybiB0YXJnZXQ7XG59XG5cbmZ1bmN0aW9uIHRvVmFsdWUoc291cmNlKSB7XG4gIHJldHVybiB0eXBlb2Ygc291cmNlID09PSAnZnVuY3Rpb24nID8gc291cmNlKCkgOiB1bnJlZihzb3VyY2UpO1xufVxuXG4vKipcbiAqIFBvc2l0aW9ucyBhbiBpbm5lciBlbGVtZW50IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IHN1Y2ggdGhhdCBpdCBpcyBjZW50ZXJlZCB0byB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAcGFyYW0gb3B0aW9ucyBUaGUgYXJyb3cgb3B0aW9ucy5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hcnJvd1xuICovXG5mdW5jdGlvbiBhcnJvdyhvcHRpb25zKSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2Fycm93JyxcbiAgICBvcHRpb25zLFxuICAgIGZuKGFyZ3MpIHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSB1bndyYXBFbGVtZW50KHRvVmFsdWUob3B0aW9ucy5lbGVtZW50KSk7XG4gICAgICBpZiAoZWxlbWVudCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcnJvdyQxKHtcbiAgICAgICAgZWxlbWVudCxcbiAgICAgICAgcGFkZGluZzogb3B0aW9ucy5wYWRkaW5nXG4gICAgICB9KS5mbihhcmdzKTtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldERQUihlbGVtZW50KSB7XG4gIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiAxO1xuICB9XG4gIGNvbnN0IHdpbiA9IGVsZW1lbnQub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldyB8fCB3aW5kb3c7XG4gIHJldHVybiB3aW4uZGV2aWNlUGl4ZWxSYXRpbyB8fCAxO1xufVxuXG5mdW5jdGlvbiByb3VuZEJ5RFBSKGVsZW1lbnQsIHZhbHVlKSB7XG4gIGNvbnN0IGRwciA9IGdldERQUihlbGVtZW50KTtcbiAgcmV0dXJuIE1hdGgucm91bmQodmFsdWUgKiBkcHIpIC8gZHByO1xufVxuXG4vKipcbiAqIENvbXB1dGVzIHRoZSBgeGAgYW5kIGB5YCBjb29yZGluYXRlcyB0aGF0IHdpbGwgcGxhY2UgdGhlIGZsb2F0aW5nIGVsZW1lbnQgbmV4dCB0byBhIHJlZmVyZW5jZSBlbGVtZW50IHdoZW4gaXQgaXMgZ2l2ZW4gYSBjZXJ0YWluIENTUyBwb3NpdGlvbmluZyBzdHJhdGVneS5cbiAqIEBwYXJhbSByZWZlcmVuY2UgVGhlIHJlZmVyZW5jZSB0ZW1wbGF0ZSByZWYuXG4gKiBAcGFyYW0gZmxvYXRpbmcgVGhlIGZsb2F0aW5nIHRlbXBsYXRlIHJlZi5cbiAqIEBwYXJhbSBvcHRpb25zIFRoZSBmbG9hdGluZyBvcHRpb25zLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3Z1ZVxuICovXG5mdW5jdGlvbiB1c2VGbG9hdGluZyhyZWZlcmVuY2UsIGZsb2F0aW5nLCBvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgY29uc3Qgd2hpbGVFbGVtZW50c01vdW50ZWRPcHRpb24gPSBvcHRpb25zLndoaWxlRWxlbWVudHNNb3VudGVkO1xuICBjb25zdCBvcGVuT3B0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHZhciBfdG9WYWx1ZTtcbiAgICByZXR1cm4gKF90b1ZhbHVlID0gdG9WYWx1ZShvcHRpb25zLm9wZW4pKSAhPSBudWxsID8gX3RvVmFsdWUgOiB0cnVlO1xuICB9KTtcbiAgY29uc3QgbWlkZGxld2FyZU9wdGlvbiA9IGNvbXB1dGVkKCgpID0+IHRvVmFsdWUob3B0aW9ucy5taWRkbGV3YXJlKSk7XG4gIGNvbnN0IHBsYWNlbWVudE9wdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICB2YXIgX3RvVmFsdWUyO1xuICAgIHJldHVybiAoX3RvVmFsdWUyID0gdG9WYWx1ZShvcHRpb25zLnBsYWNlbWVudCkpICE9IG51bGwgPyBfdG9WYWx1ZTIgOiAnYm90dG9tJztcbiAgfSk7XG4gIGNvbnN0IHN0cmF0ZWd5T3B0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHZhciBfdG9WYWx1ZTM7XG4gICAgcmV0dXJuIChfdG9WYWx1ZTMgPSB0b1ZhbHVlKG9wdGlvbnMuc3RyYXRlZ3kpKSAhPSBudWxsID8gX3RvVmFsdWUzIDogJ2Fic29sdXRlJztcbiAgfSk7XG4gIGNvbnN0IHRyYW5zZm9ybU9wdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICB2YXIgX3RvVmFsdWU0O1xuICAgIHJldHVybiAoX3RvVmFsdWU0ID0gdG9WYWx1ZShvcHRpb25zLnRyYW5zZm9ybSkpICE9IG51bGwgPyBfdG9WYWx1ZTQgOiB0cnVlO1xuICB9KTtcbiAgY29uc3QgcmVmZXJlbmNlRWxlbWVudCA9IGNvbXB1dGVkKCgpID0+IHVud3JhcEVsZW1lbnQocmVmZXJlbmNlLnZhbHVlKSk7XG4gIGNvbnN0IGZsb2F0aW5nRWxlbWVudCA9IGNvbXB1dGVkKCgpID0+IHVud3JhcEVsZW1lbnQoZmxvYXRpbmcudmFsdWUpKTtcbiAgY29uc3QgeCA9IHJlZigwKTtcbiAgY29uc3QgeSA9IHJlZigwKTtcbiAgY29uc3Qgc3RyYXRlZ3kgPSByZWYoc3RyYXRlZ3lPcHRpb24udmFsdWUpO1xuICBjb25zdCBwbGFjZW1lbnQgPSByZWYocGxhY2VtZW50T3B0aW9uLnZhbHVlKTtcbiAgY29uc3QgbWlkZGxld2FyZURhdGEgPSBzaGFsbG93UmVmKHt9KTtcbiAgY29uc3QgaXNQb3NpdGlvbmVkID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgZmxvYXRpbmdTdHlsZXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgaW5pdGlhbFN0eWxlcyA9IHtcbiAgICAgIHBvc2l0aW9uOiBzdHJhdGVneS52YWx1ZSxcbiAgICAgIGxlZnQ6ICcwJyxcbiAgICAgIHRvcDogJzAnXG4gICAgfTtcbiAgICBpZiAoIWZsb2F0aW5nRWxlbWVudC52YWx1ZSkge1xuICAgICAgcmV0dXJuIGluaXRpYWxTdHlsZXM7XG4gICAgfVxuICAgIGNvbnN0IHhWYWwgPSByb3VuZEJ5RFBSKGZsb2F0aW5nRWxlbWVudC52YWx1ZSwgeC52YWx1ZSk7XG4gICAgY29uc3QgeVZhbCA9IHJvdW5kQnlEUFIoZmxvYXRpbmdFbGVtZW50LnZhbHVlLCB5LnZhbHVlKTtcbiAgICBpZiAodHJhbnNmb3JtT3B0aW9uLnZhbHVlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5pbml0aWFsU3R5bGVzLFxuICAgICAgICB0cmFuc2Zvcm06IFwidHJhbnNsYXRlKFwiICsgeFZhbCArIFwicHgsIFwiICsgeVZhbCArIFwicHgpXCIsXG4gICAgICAgIC4uLihnZXREUFIoZmxvYXRpbmdFbGVtZW50LnZhbHVlKSA+PSAxLjUgJiYge1xuICAgICAgICAgIHdpbGxDaGFuZ2U6ICd0cmFuc2Zvcm0nXG4gICAgICAgIH0pXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgcG9zaXRpb246IHN0cmF0ZWd5LnZhbHVlLFxuICAgICAgbGVmdDogeFZhbCArIFwicHhcIixcbiAgICAgIHRvcDogeVZhbCArIFwicHhcIlxuICAgIH07XG4gIH0pO1xuICBsZXQgd2hpbGVFbGVtZW50c01vdW50ZWRDbGVhbnVwO1xuICBmdW5jdGlvbiB1cGRhdGUoKSB7XG4gICAgaWYgKHJlZmVyZW5jZUVsZW1lbnQudmFsdWUgPT0gbnVsbCB8fCBmbG9hdGluZ0VsZW1lbnQudmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBvcGVuID0gb3Blbk9wdGlvbi52YWx1ZTtcbiAgICBjb21wdXRlUG9zaXRpb24ocmVmZXJlbmNlRWxlbWVudC52YWx1ZSwgZmxvYXRpbmdFbGVtZW50LnZhbHVlLCB7XG4gICAgICBtaWRkbGV3YXJlOiBtaWRkbGV3YXJlT3B0aW9uLnZhbHVlLFxuICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnRPcHRpb24udmFsdWUsXG4gICAgICBzdHJhdGVneTogc3RyYXRlZ3lPcHRpb24udmFsdWVcbiAgICB9KS50aGVuKHBvc2l0aW9uID0+IHtcbiAgICAgIHgudmFsdWUgPSBwb3NpdGlvbi54O1xuICAgICAgeS52YWx1ZSA9IHBvc2l0aW9uLnk7XG4gICAgICBzdHJhdGVneS52YWx1ZSA9IHBvc2l0aW9uLnN0cmF0ZWd5O1xuICAgICAgcGxhY2VtZW50LnZhbHVlID0gcG9zaXRpb24ucGxhY2VtZW50O1xuICAgICAgbWlkZGxld2FyZURhdGEudmFsdWUgPSBwb3NpdGlvbi5taWRkbGV3YXJlRGF0YTtcbiAgICAgIC8qKlxuICAgICAgICogVGhlIGZsb2F0aW5nIGVsZW1lbnQncyBwb3NpdGlvbiBtYXkgYmUgcmVjb21wdXRlZCB3aGlsZSBpdCdzIGNsb3NlZFxuICAgICAgICogYnV0IHN0aWxsIG1vdW50ZWQgKHN1Y2ggYXMgd2hlbiB0cmFuc2l0aW9uaW5nIG91dCkuIFRvIGVuc3VyZVxuICAgICAgICogYGlzUG9zaXRpb25lZGAgd2lsbCBiZSBgZmFsc2VgIGluaXRpYWxseSBvbiB0aGUgbmV4dCBvcGVuLCBhdm9pZFxuICAgICAgICogc2V0dGluZyBpdCB0byBgdHJ1ZWAgd2hlbiBgb3BlbiA9PT0gZmFsc2VgIChtdXN0IGJlIHNwZWNpZmllZCkuXG4gICAgICAgKi9cbiAgICAgIGlzUG9zaXRpb25lZC52YWx1ZSA9IG9wZW4gIT09IGZhbHNlO1xuICAgIH0pO1xuICB9XG4gIGZ1bmN0aW9uIGNsZWFudXAoKSB7XG4gICAgaWYgKHR5cGVvZiB3aGlsZUVsZW1lbnRzTW91bnRlZENsZWFudXAgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHdoaWxlRWxlbWVudHNNb3VudGVkQ2xlYW51cCgpO1xuICAgICAgd2hpbGVFbGVtZW50c01vdW50ZWRDbGVhbnVwID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBhdHRhY2goKSB7XG4gICAgY2xlYW51cCgpO1xuICAgIGlmICh3aGlsZUVsZW1lbnRzTW91bnRlZE9wdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB1cGRhdGUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHJlZmVyZW5jZUVsZW1lbnQudmFsdWUgIT0gbnVsbCAmJiBmbG9hdGluZ0VsZW1lbnQudmFsdWUgIT0gbnVsbCkge1xuICAgICAgd2hpbGVFbGVtZW50c01vdW50ZWRDbGVhbnVwID0gd2hpbGVFbGVtZW50c01vdW50ZWRPcHRpb24ocmVmZXJlbmNlRWxlbWVudC52YWx1ZSwgZmxvYXRpbmdFbGVtZW50LnZhbHVlLCB1cGRhdGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiByZXNldCgpIHtcbiAgICBpZiAoIW9wZW5PcHRpb24udmFsdWUpIHtcbiAgICAgIGlzUG9zaXRpb25lZC52YWx1ZSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuICB3YXRjaChbbWlkZGxld2FyZU9wdGlvbiwgcGxhY2VtZW50T3B0aW9uLCBzdHJhdGVneU9wdGlvbiwgb3Blbk9wdGlvbl0sIHVwZGF0ZSwge1xuICAgIGZsdXNoOiAnc3luYydcbiAgfSk7XG4gIHdhdGNoKFtyZWZlcmVuY2VFbGVtZW50LCBmbG9hdGluZ0VsZW1lbnRdLCBhdHRhY2gsIHtcbiAgICBmbHVzaDogJ3N5bmMnXG4gIH0pO1xuICB3YXRjaChvcGVuT3B0aW9uLCByZXNldCwge1xuICAgIGZsdXNoOiAnc3luYydcbiAgfSk7XG4gIGlmIChnZXRDdXJyZW50U2NvcGUoKSkge1xuICAgIG9uU2NvcGVEaXNwb3NlKGNsZWFudXApO1xuICB9XG4gIHJldHVybiB7XG4gICAgeDogc2hhbGxvd1JlYWRvbmx5KHgpLFxuICAgIHk6IHNoYWxsb3dSZWFkb25seSh5KSxcbiAgICBzdHJhdGVneTogc2hhbGxvd1JlYWRvbmx5KHN0cmF0ZWd5KSxcbiAgICBwbGFjZW1lbnQ6IHNoYWxsb3dSZWFkb25seShwbGFjZW1lbnQpLFxuICAgIG1pZGRsZXdhcmVEYXRhOiBzaGFsbG93UmVhZG9ubHkobWlkZGxld2FyZURhdGEpLFxuICAgIGlzUG9zaXRpb25lZDogc2hhbGxvd1JlYWRvbmx5KGlzUG9zaXRpb25lZCksXG4gICAgZmxvYXRpbmdTdHlsZXMsXG4gICAgdXBkYXRlXG4gIH07XG59XG5cbmV4cG9ydCB7IGFycm93LCB1c2VGbG9hdGluZyB9O1xuIiwiZXhwb3J0IGNvbnN0IGlzQ2xpY2tPdXRzaWRlID0gKGV2ZW50OiBNb3VzZUV2ZW50LCBlbGVtZW50czogSFRNTEVsZW1lbnQgfCBIVE1MRWxlbWVudFtdKTogYm9vbGVhbiA9PiB7XG4gIGNvbnN0IHRhcmdldHMgPSBBcnJheS5pc0FycmF5KGVsZW1lbnRzKSA/IGVsZW1lbnRzIDogW2VsZW1lbnRzXTtcbiAgcmV0dXJuICF0YXJnZXRzLnNvbWUoKGVsKSA9PiBlbC5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSkpO1xufTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGF1dG9QbGFjZW1lbnQsIGF1dG9VcGRhdGUsIG9mZnNldCBhcyBvZmZzZXRNaWRkbGV3YXJlLCBzaGlmdCwgdXNlRmxvYXRpbmcgfSBmcm9tICdAZmxvYXRpbmctdWkvdnVlJztcbiAgaW1wb3J0IHsgY29tcHV0ZWQsIG9uQmVmb3JlTW91bnQsIG9uTW91bnRlZCwgb25Vbm1vdW50ZWQsIHJlZiwgd2F0Y2gsIHdhdGNoRWZmZWN0IH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IGlzQ2xpY2tPdXRzaWRlIH0gZnJvbSAnQC91dGlsaXRpZXMvZXZlbnQnO1xuICBpbXBvcnQgeyBUT1BfTEFZRVJfSUQsIGluaXRGYXV4VG9wTGF5ZXIgfSBmcm9tICdAL3V0aWxpdGllcy92aWV3cG9ydCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgYW5jaG9ySWQ6IHN0cmluZztcbiAgICBvZmZzZXQ/OiBudW1iZXI7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBvZmZzZXQ6IDE2LFxuICB9KTtcblxuICBjb25zdCBhbmNob3I6IFJlZjxIVE1MRWxlbWVudCB8IG51bGw+ID0gcmVmKG51bGwpO1xuICBjb25zdCBmbG9hdGluZzogUmVmPEhUTUxFbGVtZW50IHwgbnVsbD4gPSByZWYobnVsbCk7XG4gIGNvbnN0IHJvb3Q6IFJlZjxIVE1MRWxlbWVudCB8IG51bGw+ID0gcmVmKG51bGwpO1xuICBjb25zdCBpc0hvdmVyZWQgPSByZWYoZmFsc2UpO1xuICBjb25zdCBpc1RvZ2dsZWRPcGVuID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgbWlkZGxld2FyZSA9IHJlZihbYXV0b1BsYWNlbWVudCgpLCBvZmZzZXRNaWRkbGV3YXJlKHsgbWFpbkF4aXM6IHByb3BzLm9mZnNldCB9KSwgc2hpZnQoeyBwYWRkaW5nOiAxNiB9KV0pO1xuXG4gIGNvbnN0IGlzU2hvd1BvcG92ZXIgPSBjb21wdXRlZCgoKSA9PiBpc0hvdmVyZWQudmFsdWUgfHwgaXNUb2dnbGVkT3Blbi52YWx1ZSk7XG5cbiAgY29uc3QgeyBmbG9hdGluZ1N0eWxlcyB9ID0gdXNlRmxvYXRpbmcoYW5jaG9yLCBmbG9hdGluZywge1xuICAgIG1pZGRsZXdhcmUsXG4gICAgc3RyYXRlZ3k6ICdmaXhlZCcsXG4gICAgd2hpbGVFbGVtZW50c01vdW50ZWQ6IGF1dG9VcGRhdGUsXG4gIH0pO1xuXG4gIGNvbnN0IGhhbmRsZVBlcm1hbmVudE9wZW5Cb2R5Q2xpY2sgPSAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgIGlmICghYW5jaG9yLnZhbHVlIHx8ICFmbG9hdGluZy52YWx1ZSkgcmV0dXJuO1xuICAgIGlmIChpc0NsaWNrT3V0c2lkZShlLCBbYW5jaG9yLnZhbHVlLCBmbG9hdGluZy52YWx1ZV0pKSB7XG4gICAgICBpc1RvZ2dsZWRPcGVuLnZhbHVlID0gZmFsc2U7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVBbmNob3JFbGVtZW50TW91c2VPdmVyID0gKCkgPT4ge1xuICAgIGlzSG92ZXJlZC52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQW5jaG9yRWxlbWVudE1vdXNlTGVhdmUgPSAoKSA9PiB7XG4gICAgaXNIb3ZlcmVkLnZhbHVlID0gZmFsc2U7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQW5jaG9yRWxlbWVudENsaWNrID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKGlzVG9nZ2xlZE9wZW4udmFsdWUpIHtcbiAgICAgIGlzVG9nZ2xlZE9wZW4udmFsdWUgPSBmYWxzZTtcbiAgICAgIGlzSG92ZXJlZC52YWx1ZSA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpc1RvZ2dsZWRPcGVuLnZhbHVlID0gdHJ1ZTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgYWRkTGlzdGVuZXJzVG9BbmNob3JFbGVtZW50ID0gKCkgPT4ge1xuICAgIGlmICghYW5jaG9yLnZhbHVlKSByZXR1cm4gbnVsbDtcbiAgICBhbmNob3IudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VvdmVyJywgaGFuZGxlQW5jaG9yRWxlbWVudE1vdXNlT3Zlcik7XG4gICAgYW5jaG9yLnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCBoYW5kbGVBbmNob3JFbGVtZW50TW91c2VMZWF2ZSk7XG4gICAgYW5jaG9yLnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQW5jaG9yRWxlbWVudENsaWNrKTtcbiAgfTtcblxuICBjb25zdCByZW1vdmVMaXN0ZW5lcnNGcm9tQW5jaG9yRWxlbWVudCA9ICgpID0+IHtcbiAgICBpZiAoIWFuY2hvci52YWx1ZSkgcmV0dXJuIG51bGw7XG4gICAgYW5jaG9yLnZhbHVlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlb3ZlcicsIGhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZU92ZXIpO1xuICAgIGFuY2hvci52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgaGFuZGxlQW5jaG9yRWxlbWVudE1vdXNlTGVhdmUpO1xuICAgIGFuY2hvci52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUFuY2hvckVsZW1lbnRDbGljayk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlUGVybWFuZW50T3BlbkJvZHlLZXlkb3duID0gKGU6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICBpZiAoZS5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICBpc1RvZ2dsZWRPcGVuLnZhbHVlID0gZmFsc2U7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGFkZE9wZW5MaXN0ZW5lcnNUb1Jvb3QgPSAoKSA9PiB7XG4gICAgaWYgKCFyb290LnZhbHVlKSByZXR1cm47XG4gICAgcm9vdC52YWx1ZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZVBlcm1hbmVudE9wZW5Cb2R5Q2xpY2ssIHRydWUpO1xuICAgIHJvb3QudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGhhbmRsZVBlcm1hbmVudE9wZW5Cb2R5S2V5ZG93bik7XG4gIH07XG5cbiAgY29uc3QgcmVtb3ZlT3Blbkxpc3RlbmVyc0Zyb21Sb290ID0gKCkgPT4ge1xuICAgIGlmICghcm9vdC52YWx1ZSkgcmV0dXJuO1xuICAgIHJvb3QudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUNsaWNrLCB0cnVlKTtcbiAgICByb290LnZhbHVlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUtleWRvd24pO1xuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZUFuY2hvckVsZW1lbnQgPSAoKSA9PiB7XG4gICAgYW5jaG9yLnZhbHVlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocHJvcHMuYW5jaG9ySWQpO1xuICB9O1xuXG4gIHdhdGNoKFxuICAgICgpID0+IGlzVG9nZ2xlZE9wZW4udmFsdWUsXG4gICAgKG5ld1ZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUpIHtcbiAgICAgICAgYWRkT3Blbkxpc3RlbmVyc1RvUm9vdCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVtb3ZlT3Blbkxpc3RlbmVyc0Zyb21Sb290KCk7XG4gICAgICB9XG4gICAgfVxuICApO1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLmFuY2hvcklkLFxuICAgICgpID0+IHtcbiAgICAgIHJlbW92ZUxpc3RlbmVyc0Zyb21BbmNob3JFbGVtZW50KCk7XG4gICAgICB1cGRhdGVBbmNob3JFbGVtZW50KCk7XG4gICAgICBhZGRMaXN0ZW5lcnNUb0FuY2hvckVsZW1lbnQoKTtcbiAgICB9XG4gICk7XG5cbiAgd2F0Y2hFZmZlY3QoKCkgPT4ge1xuICAgIG1pZGRsZXdhcmUudmFsdWUgPSBbYXV0b1BsYWNlbWVudCgpLCBvZmZzZXRNaWRkbGV3YXJlKHsgbWFpbkF4aXM6IHByb3BzLm9mZnNldCB9KSwgc2hpZnQoeyBwYWRkaW5nOiAxNiB9KV07XG4gIH0pO1xuXG4gIG9uQmVmb3JlTW91bnQoKCkgPT4ge1xuICAgIGluaXRGYXV4VG9wTGF5ZXIoKTtcbiAgfSk7XG5cbiAgb25Nb3VudGVkKCgpID0+IHtcbiAgICB1cGRhdGVBbmNob3JFbGVtZW50KCk7XG4gICAgcm9vdC52YWx1ZSA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICBhZGRMaXN0ZW5lcnNUb0FuY2hvckVsZW1lbnQoKTtcbiAgfSk7XG5cbiAgb25Vbm1vdW50ZWQoKCkgPT4ge1xuICAgIHJlbW92ZUxpc3RlbmVyc0Zyb21BbmNob3JFbGVtZW50KCk7XG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPFRlbGVwb3J0IDp0bz1cImAjJHtUT1BfTEFZRVJfSUR9YFwiPlxuICAgIDxUcmFuc2l0aW9uPlxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtcG9wb3ZlcicsXG4gICAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgICBDU1MuQk9SREVSLkNPTE9SLkxPVyxcbiAgICAgICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzIsXG4gICAgICAgICAgQ1NTLlBBRERJTkcuRlVMTC5PTkUsXG4gICAgICAgICAgQ1NTLlNIQURPVy5CT1RUT00sXG4gICAgICAgIF1cIlxuICAgICAgICByZWY9XCJmbG9hdGluZ1wiXG4gICAgICAgIDpzdHlsZT1cInsgLi4uZmxvYXRpbmdTdHlsZXMgfVwiXG4gICAgICAgIHYtc2hvdz1cImlzU2hvd1BvcG92ZXJcIlxuICAgICAgPlxuICAgICAgICA8c2xvdCAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9UcmFuc2l0aW9uPlxuICA8L1RlbGVwb3J0PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtcG9wb3ZlciB7XG4gICAgbWF4LXdpZHRoOiAyNTZweDtcbiAgfVxuICAudi1lbnRlci1mcm9tLFxuICAudi1sZWF2ZS10byB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuICAudi1lbnRlci1hY3RpdmUsXG4gIC52LWxlYXZlLWFjdGl2ZSB7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG4gIC52LWVudGVyLXRvLFxuICAudi1sZWF2ZS1mcm9tIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgb25CZWZvcmVNb3VudCwgb25Nb3VudGVkLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUJ1dHRvbkljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBQUklPUklUWSB9IGZyb20gJ0AvdHlwZXMvUHJpb3JpdHknO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRPUF9MQVlFUl9JRCwgaW5pdEZhdXhUb3BMYXllciwgc2V0U2Nyb2xsTG9jayB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZpZXdwb3J0JztcblxuICBpbXBvcnQgVGlkZURpdmlkZXIgZnJvbSAnLi9UaWRlRGl2aWRlci52dWUnO1xuXG4gIGltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSAndnVlJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGlzT3BlbjogYm9vbGVhbjtcbiAgICBpc0JhY2tCdXR0b24/OiBib29sZWFuO1xuICB9O1xuICBjb25zdCBwcm9wcyA9IGRlZmluZVByb3BzPFByb3BzPigpO1xuXG4gIHR5cGUgRW1pdHMgPSB7XG4gICAgKGU6ICdiYWNrJyk6IHZvaWQ7XG4gICAgKGU6ICdjbG9zZScpOiB2b2lkO1xuICB9O1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czxFbWl0cz4oKTtcblxuICBjb25zdCBkaWFsb2dFbGVtZW50OiBSZWY8SFRNTERpYWxvZ0VsZW1lbnQgfCBudWxsPiA9IHJlZihudWxsKTtcblxuICBjb25zdCB0cmlnZ2VyTmF0aXZlRGlhbG9nT3BlbiA9ICgpID0+IHtcbiAgICBkaWFsb2dFbGVtZW50LnZhbHVlPy5zaG93TW9kYWwoKTtcbiAgfTtcblxuICBjb25zdCB0cmlnZ2VyTmF0aXZlRGlhbG9nQ2xvc2UgPSAoKSA9PiB7XG4gICAgZGlhbG9nRWxlbWVudC52YWx1ZT8uY2xvc2UoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVCYWNrZHJvcENsaWNrID0gKCkgPT4ge1xuICAgIGVtaXQoJ2Nsb3NlJyk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRXNjYXBlS2V5ZG93biA9IChlOiBFdmVudCkgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBlbWl0KCdjbG9zZScpO1xuICB9O1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLmlzT3BlbixcbiAgICAobmV3VmFsdWUpID0+IHtcbiAgICAgIGlmICghZGlhbG9nRWxlbWVudC52YWx1ZSkgcmV0dXJuO1xuICAgICAgaWYgKG5ld1ZhbHVlKSB7XG4gICAgICAgIHRyaWdnZXJOYXRpdmVEaWFsb2dPcGVuKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0cmlnZ2VyTmF0aXZlRGlhbG9nQ2xvc2UoKTtcbiAgICAgIH1cbiAgICAgIHNldFNjcm9sbExvY2sobmV3VmFsdWUpO1xuICAgIH1cbiAgKTtcblxuICBvbkJlZm9yZU1vdW50KCgpID0+IHtcbiAgICBpbml0RmF1eFRvcExheWVyKCk7XG4gIH0pO1xuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgaWYgKHByb3BzLmlzT3Blbikge1xuICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ09wZW4oKTtcbiAgICB9XG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPFRlbGVwb3J0IDp0bz1cImAjJHtUT1BfTEFZRVJfSUR9YFwiPlxuICAgIDxkaWFsb2dcbiAgICAgIDpjbGFzcz1cIlsndGlkZS1zaGVldCcsIENTUy5CRy5JTklUSUFMLCBDU1MuSEVJR0hULkZVTEwsIENTUy5XSURUSC5GVUxMLCBDU1MuT1ZFUkZMT1cuWFkuSElEREVOXVwiXG4gICAgICByZWY9XCJkaWFsb2dFbGVtZW50XCJcbiAgICAgIEBjbGljay5zZWxmPVwiaGFuZGxlQmFja2Ryb3BDbGlja1wiXG4gICAgICBAY2xvc2UucHJldmVudFxuICAgICAgQGtleWRvd24uZXNjYXBlPVwiaGFuZGxlRXNjYXBlS2V5ZG93blwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtc2hlZXQtYm9keScsXG4gICAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICAgICAgQ1NTLkhFSUdIVC5GVUxMLFxuICAgICAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgIF1cIlxuICAgICAgPlxuICAgICAgICA8aGVhZGVyXG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICAgIENTUy5JU09MQVRJT04uSVNPTEFURSxcbiAgICAgICAgICAgIENTUy5QQURESU5HLlRPUC5PTkUsXG4gICAgICAgICAgICBDU1MuUEFERElORy5YLk9ORSxcbiAgICAgICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgICAgIENTUy5aX0lOREVYLk9ORSxcbiAgICAgICAgICBdXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5GTEVYLkdST1cuT0ZGLCBDU1MuRkxFWC5TSFJJTksuT0ZGXVwiXG4gICAgICAgICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9MRUZUXCJcbiAgICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICAgICAgQGNsaWNrPVwiZW1pdCgnYmFjaycpXCJcbiAgICAgICAgICAgIHYtaWY9XCJpc0JhY2tCdXR0b25cIlxuICAgICAgICAgIC8+XG5cbiAgICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5HUk9XLk9GRiwgQ1NTLkZMRVguU0hSSU5LLk9GRiwgQ1NTLk1BUkdJTi5MRUZULkFVVE9dXCJcbiAgICAgICAgICAgIDppY29uPVwiSUNPTi5DTE9TRVwiXG4gICAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgICAgIEBjbGljaz1cImVtaXQoJ2Nsb3NlJylcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgIDxUaWRlRGl2aWRlciAvPlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAndGlkZS1zaGVldC1jb250ZW50JyxcbiAgICAgICAgICAgIENTUy5ESVNQTEFZLkdSSUQsXG4gICAgICAgICAgICBDU1MuT1ZFUkZMT1cuWS5BVVRPLFxuICAgICAgICAgICAgQ1NTLk9WRVJGTE9XLlguSElEREVOLFxuICAgICAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgICAgICBDU1MuUEFERElORy5CT1RUT00uT05FLFxuICAgICAgICAgICAgQ1NTLklTT0xBVElPTi5JU09MQVRFLFxuICAgICAgICAgIF1cIlxuICAgICAgICA+XG4gICAgICAgICAgPHNsb3QgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2RpYWxvZz5cbiAgPC9UZWxlcG9ydD5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLXNoZWV0IHtcbiAgICAtLXNoZWV0LXBhZGRpbmcteDogdmFyKC0tdGlkZS1zcGFjaW5nLTEpO1xuICAgIG1heC13aWR0aDogdW5zZXQ7XG4gICAgbWF4LWhlaWdodDogdW5zZXQ7XG4gICAganVzdGlmeS1pdGVtczogcmlnaHQ7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGlkZS1hbmltYXRlKSBhbGxvdy1kaXNjcmV0ZTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gIH1cblxuICAudGlkZS1zaGVldFtvcGVuXSB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpO1xuICB9XG5cbiAgLnRpZGUtc2hlZXQ6OmJhY2tkcm9wIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGlkZS1hbmltYXRlKSBhbGxvdy1kaXNjcmV0ZTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMHB4KTtcbiAgfVxuXG4gIC50aWRlLXNoZWV0W29wZW5dOjpiYWNrZHJvcCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS10cmFuc3BhcmVudC00MDApO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogdmFyKC0tdGlkZS1iZy1ibHVyKTtcbiAgfVxuXG4gIC50aWRlLXNoZWV0LWJvZHkge1xuICAgIG1heC13aWR0aDogbWluKGNhbGMoMTAwdncgLSB2YXIoLS10aWRlLXNwYWNpbmctMikpLCAzMTFweCk7XG4gIH1cblxuICAudGlkZS1zaGVldC1jb250ZW50IHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHZhcigtLXNoZWV0LXBhZGRpbmcteCkgMWZyIHZhcigtLXNoZWV0LXBhZGRpbmcteCk7XG4gIH1cblxuICA6d2hlcmUoLnRpZGUtc2hlZXQtY29udGVudCk6ZGVlcCg+IDp3aGVyZSgqKSkge1xuICAgIGdyaWQtY29sdW1uOiAyO1xuICB9XG5cbiAgQHN0YXJ0aW5nLXN0eWxlIHtcbiAgICAudGlkZS1zaGVldFtvcGVuXSB7XG4gICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xuICAgIH1cblxuICAgIC50aWRlLXNoZWV0W29wZW5dOjpiYWNrZHJvcCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGJhY2tkcm9wLWZpbHRlcjogdmFyKC0tdGlkZS1iZy1ibHVyKTtcbiAgICB9XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGlzQWN0aXZlPzogYm9vbGVhbjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBpc0FjdGl2ZTogZmFsc2UsXG4gIH0pO1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0cyhbJ2NoYW5nZSddKTtcblxuICBjb25zdCBoYW5kbGVDbGljayA9ICgpID0+IHtcbiAgICBpZiAoIXByb3BzLmRpc2FibGVkKSB7XG4gICAgICBlbWl0KCdjaGFuZ2UnKTtcbiAgICB9XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8YnV0dG9uXG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtc3dpdGNoJyxcbiAgICAgIHByb3BzLmlzQWN0aXZlID8gJ2FjdGl2ZScgOiAnJyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICBwcm9wcy5pc0FjdGl2ZSA/ICcnIDogQ1NTLkJPUkRFUi5DT0xPUi5ERUZBVUxULFxuICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgIHByb3BzLmlzQWN0aXZlID8gQ1NTLkJHLlNFQ09OREFSWSA6IENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgXVwiXG4gICAgOmRpc2FibGVkPVwicHJvcHMuZGlzYWJsZWRcIlxuICAgIEBjbGljaz1cImhhbmRsZUNsaWNrXCJcbiAgICBhcmlhLWxhYmVsPVwiU3dpdGNoXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtc3dpdGNoLWluZGljYXRvcicsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMxLkNFTlRFUixcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgICAgcHJvcHMuaXNBY3RpdmUgPyBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUIDogQ1NTLkJHLlNFQ09OREFSWSxcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6aWNvbj1cIklDT04uQ0hFQ0tcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuTEFSR0VcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgPC9idXR0b24+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1zd2l0Y2gge1xuICAgIHdpZHRoOiA2NHB4O1xuICAgIGhlaWdodDogMzJweDtcbiAgICB0cmFuc2l0aW9uOiB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGJhY2tncm91bmQtY29sb3I7XG4gIH1cblxuICAudGlkZS1zd2l0Y2g6ZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IDAuMzI7XG4gIH1cblxuICAudGlkZS1zd2l0Y2guYWN0aXZlIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtc2Vjb25kYXJ5KTtcbiAgfVxuXG4gIC50aWRlLXN3aXRjaC5hY3RpdmUgLnRpZGUtc3dpdGNoLWluZGljYXRvciB7XG4gICAgbGVmdDogMzZweDtcbiAgfVxuXG4gIC50aWRlLXN3aXRjaC1pbmRpY2F0b3Ige1xuICAgIGxlZnQ6IDRweDtcbiAgICB0cmFuc2l0aW9uOiB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGxlZnQsIGJvcmRlci1jb2xvciwgYmFja2dyb3VuZC1jb2xvcjtcbiAgfVxuPC9zdHlsZT5cbiIsImltcG9ydCB7IGZvcm1hdE51bWJlciwgZm9ybWF0UGhvbmUsIGZvcm1hdFByaWNlIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcblxuZXhwb3J0IHR5cGUgRm9ybWF0dGVkID0ge1xuICBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bWJlcjtcbn07XG5cbmV4cG9ydCBjb25zdCBGT1JNQVQgPSB7XG4gIE5VTUJFUjogZm9ybWF0TnVtYmVyLFxuICBQSE9ORTogZm9ybWF0UGhvbmUsXG4gIFBSSUNFOiBmb3JtYXRQcmljZSxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBGT1JNQVRfUkVHRVggPSB7XG4gIGFscGhhOiAvXlthLXpBLVpdKyQvZyxcbiAgYWxwaGFOdW1iZXJPckVtcHR5OiAvXiR8XlthLXowLTldKyQvaSxcbiAgYWxwaGFTcGFjZTogL15bYS16QS1aIF0rJC9nLFxuICBlbWFpbDpcbiAgICAvXigoW148PigpW1xcXVxcXFwuLDs6XFxzQFwiXSsoXFwuW148PigpW1xcXVxcXFwuLDs6XFxzQFwiXSspKil8KFwiLitcIikpQCgoXFxbWzAtOV17MSwzfVxcLlswLTldezEsM31cXC5bMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcXSl8KChbYS16QS1aXFwtMC05XStcXC4pK1thLXpBLVpdezIsfSkpJC8sXG4gIG51bWJlckZvcm1hdHRlZDogL14kfCg/PS4pXlxcJD8oKFsxLTldWzAtOV17MCwyfSgsWzAtOV17M30pKil8MCk/KFxcLlswLTldezEsMn0pPyQvLFxuICBwaG9uZTogL14oPzpcXGR7M30tXFxkezN9LVxcZHs0fXxcXGR7MX0tXFxkezN9LVxcZHszfS1cXGR7NH0pPyQvLFxuICBwcmljZTogLyg/PS4pXlxcJD8oKFsxLTldWzAtOV17MCwyfSgsWzAtOV17M30pKil8MCk/KFxcLlswLTldezEsMn0pPyQvLFxufTtcbiIsImltcG9ydCB7IEZPUk1BVF9SRUdFWCB9IGZyb20gJ0AvdHlwZXMvRm9ybWF0dGVkJztcbmltcG9ydCB7IGNoZWNrRm9ybWF0IH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbic7XG5cbmV4cG9ydCBjb25zdCBWQUxJREFUT1IgPSB7XG4gIEFMUEhBX05VTUJFUl9FTVBUWTogY2hlY2tGb3JtYXQoRk9STUFUX1JFR0VYLmFscGhhTnVtYmVyT3JFbXB0eSksXG4gIEFMUEhBX1NQQUNFOiBjaGVja0Zvcm1hdChGT1JNQVRfUkVHRVguYWxwaGFTcGFjZSksXG4gIEVNQUlMOiBjaGVja0Zvcm1hdChGT1JNQVRfUkVHRVguZW1haWwpLFxuICBOVU1CRVI6IGNoZWNrRm9ybWF0KEZPUk1BVF9SRUdFWC5udW1iZXJGb3JtYXR0ZWQpLFxuICBQSE9ORTogY2hlY2tGb3JtYXQoRk9STUFUX1JFR0VYLnBob25lKSxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25FcnJvciA9IHN0cmluZyB8IGJvb2xlYW47XG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uUmVzdWx0ID0ge1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHZhbGlkOiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgVmFsaWRhdGlvbkxlbmd0aCA9IHtcbiAgbWF4bGVuZ3RoPzogbnVtYmVyO1xuICBtaW5sZW5ndGg/OiBudW1iZXI7XG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgdmFsdWU6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFZhbGlkYXRvciA9ICh2YWx1ZTogc3RyaW5nKSA9PiBWYWxpZGF0aW9uUmVzdWx0O1xuIl0sIm5hbWVzIjpbIk9SSUVOVEFUSU9OIiwiQ1NTIiwidXRpbGl0aWVzIiwiYnJlYWtwb2ludCIsInV0aWxpdHkiLCJSRUFMTSIsIlNJWkUiLCJTSVpFX0JVVFRPTiIsImZvcm1hdE51bWJlciIsImlucHV0Iiwib3V0cHV0IiwiZGlnaXRzIiwiZm9ybWF0UGFzY2FsQ2FzZSIsIndvcmQiLCJmb3JtYXRQaG9uZSIsImZvcm1hdFByaWNlIiwiaW5uZXJTVkciLCJyZWYiLCJ3YXRjaCIsInByb3BzIiwiaWQiLCJuYW1lIiwicHJlZml4IiwicmVhbG1Gb2xkZXIiLCJjb21wb25lbnQiLCJkZWZpbmVBc3luY0NvbXBvbmVudCIsIl9fdmFyaWFibGVEeW5hbWljSW1wb3J0UnVudGltZUhlbHBlciIsIm1hcmtSYXciLCJJQ09OIiwiSUNPTl9SRUFMTSIsImhhbmRsZVRvZ2dsZUNsaWNrIiwiZW1pdCIsIkVMRU1FTlQiLCJFTEVNRU5UX1RFWFRfQVNfSUNPTiIsIlBSSU9SSVRZIiwiVEFSR0VUIiwiQUxFUlQiLCJCQURHRV9DT0xPUiIsIkJBREdFX0NPTE9SX0RFVEFJTFMiLCJCQURHRV9UUlVTVEVEIiwiaGFuZGxlQ2xpY2siLCJpbmRleCIsIlRZUEVfQ0FSRCIsImNvbnRhaW5lclJlZiIsInNsaWRlT2JzZXJ2ZXIiLCJzbG90T2JzZXJ2ZXIiLCJjb250ZW50UmlnaHRFZGdlIiwiY29udGVudFdpZHRoIiwiY3VycmVudFNsaWRlIiwiZnJhbWVXaWR0aCIsImhhc092ZXJmbG93IiwiaXNGaXJzdFNsaWRlIiwiaXNMYXN0U2xpZGUiLCJsYXN0UG9zaXRpb24iLCJzaG93QnV0dG9ucyIsInVwZGF0ZUNvbnRhaW5lckJsZWVkIiwibWVhc3VyZUN1cnJlbnRTbGlkZSIsImNvbnRhaW5lciIsInNsaWRlT2Zmc2V0cyIsInNsaWRlIiwic2Nyb2xsTGVmdCIsImNsb3Nlc3RTbGlkZU9mZnNldCIsInByZXYiLCJjdXJyIiwibWVhc3VyZURvbSIsImhhbmRsZVNjcm9sbCIsInNjcm9sbFRvU2xpZGUiLCJzbGlkZUluZGV4Iiwic2hvd05leHRTbGlkZSIsInNob3dQcmV2aW91c1NsaWRlIiwib2JzZXJ2ZVNsaWRlcyIsIm9wdGlvbnMiLCJlbnRyaWVzIiwic2xpZGVzIiwiZW50cnkiLCJfYSIsImNoaWxkIiwib2JzZXJ2ZVNsb3QiLCJvYnNlcnZlckNhbGxiYWNrIiwib25Nb3VudGVkIiwib25Vbm1vdW50ZWQiLCJfYiIsIm9uVXBkYXRlZCIsIk9CSkVDVF9GSVQiLCJpbWFnZURlZmF1bHQiLCJwaWN0dXJlIiwiaW1nIiwib2JqZWN0Rml0Q2xhc3NOYW1lIiwiY29tcHV0ZWQiLCJzZXRJbWFnZUZyb21EZWZhdWx0IiwiY3VycmVudFNyYyIsInBpY3R1cmVTb3VyY2UiLCJpc0NoZWNrZWQiLCJjaGVja2VkIiwibmV3VmFsdWUiLCJvbGRWYWx1ZSIsImVycm9yTWVzc2FnZURlZmF1bHQiLCJub0Vycm9yIiwiY2hlY2tGb3JtYXQiLCJmb3JtYXQiLCJ2YWx1ZSIsInJlc3VsdCIsImdldEVycm9yTWVzc2FnZSIsImVycm9yRnJvbVByb3BzIiwiZXJyb3JGcm9tUmVmIiwiZ2V0RmllbGRIYXNFcnJvciIsImdldEZpZWxkTGVuZ3RoSXNWYWxpZCIsIm1heGxlbmd0aCIsIm1pbmxlbmd0aCIsInJlcXVpcmVkIiwiaXNFbXB0eUFuZFVucmVxdWlyZWQiLCJpc1Rvb0xvbmciLCJoYW5kbGVGaWVsZFZhbGlkYXRpb24iLCJlcnJvciIsInZhbGlkYXRvcnMiLCJ2YWxpZGF0aW9uIiwidmFsaWRhdGVQcm9wZXJ0eSIsImxlbmd0aFZhbGlkYXRpb24iLCJ2YWxpZGF0ZUxlbmd0aCIsInJlc3BvbnNlIiwidmFsaWRhdG9yIiwiaGFzRm9jdXMiLCJlcnJvck1lc3NhZ2UiLCJmb3JtYXR0ZWRMYWJlbCIsImhhc0Vycm9yIiwiaGFzTWluaWxhYmVsIiwiaXNFbXB0eSIsImV4cGFuZE9wdGlvbnMiLCJldmVudCIsImhhbmRsZUZvY3VzIiwiaGFuZGxlRm9jdXNPdXQiLCJfX2V4cG9zZSIsIlRFWFRfSU5QVVRfVFlQRSIsInNob3dQYXNzd29yZCIsImhhc0NsZWFyIiwiaW5wdXRUeXBlIiwiaGFuZGxlQ2xlYXIiLCJoYW5kbGVWYWxpZGF0aW9uIiwiaGFuZGxlSW5wdXQiLCJ1cGRhdGVWYWx1ZSIsIkJSRUFLUE9JTlQiLCJNRURJQSIsInNldFNjcm9sbExvY2siLCJpc0xvY2tlZCIsImJvZHkiLCJzY3JvbGxZIiwibmV4dFRpY2siLCJzYXZlZFNjcm9sbFkiLCJUT1BfTEFZRVJfSUQiLCJpbml0RmF1eFRvcExheWVyIiwidG9wTGF5ZXIiLCJtb2RhbENvbnRlbnQiLCJtb2RhbERpYWxvZyIsInRyaWdnZXJOYXRpdmVEaWFsb2dPcGVuIiwidHJpZ2dlck5hdGl2ZURpYWxvZ0Nsb3NlIiwic2Nyb2xsQ29udGVudFRvVG9wIiwiaGFuZGxlQmFja2Ryb3BDbGljayIsImhhbmRsZUVzY2FwZUtleWRvd24iLCJlIiwicGFnZUN1cnJlbnQiLCJwYWdpbmF0aW9uQnV0dG9ucyIsImVtcHR5Iiwic2lkZXMiLCJhbGlnbm1lbnRzIiwicGxhY2VtZW50cyIsImFjYyIsInNpZGUiLCJtaW4iLCJtYXgiLCJyb3VuZCIsImZsb29yIiwiY3JlYXRlQ29vcmRzIiwidiIsIm9wcG9zaXRlU2lkZU1hcCIsIm9wcG9zaXRlQWxpZ25tZW50TWFwIiwiY2xhbXAiLCJzdGFydCIsImVuZCIsImV2YWx1YXRlIiwicGFyYW0iLCJnZXRTaWRlIiwicGxhY2VtZW50IiwiZ2V0QWxpZ25tZW50IiwiZ2V0T3Bwb3NpdGVBeGlzIiwiYXhpcyIsImdldEF4aXNMZW5ndGgiLCJnZXRTaWRlQXhpcyIsImdldEFsaWdubWVudEF4aXMiLCJnZXRBbGlnbm1lbnRTaWRlcyIsInJlY3RzIiwicnRsIiwiYWxpZ25tZW50IiwiYWxpZ25tZW50QXhpcyIsImxlbmd0aCIsIm1haW5BbGlnbm1lbnRTaWRlIiwiZ2V0T3Bwb3NpdGVQbGFjZW1lbnQiLCJnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudCIsImV4cGFuZFBhZGRpbmdPYmplY3QiLCJwYWRkaW5nIiwiZ2V0UGFkZGluZ09iamVjdCIsInJlY3RUb0NsaWVudFJlY3QiLCJyZWN0IiwieCIsInkiLCJ3aWR0aCIsImhlaWdodCIsImNvbXB1dGVDb29yZHNGcm9tUGxhY2VtZW50IiwiX3JlZiIsInJlZmVyZW5jZSIsImZsb2F0aW5nIiwic2lkZUF4aXMiLCJhbGlnbkxlbmd0aCIsImlzVmVydGljYWwiLCJjb21tb25YIiwiY29tbW9uWSIsImNvbW1vbkFsaWduIiwiY29vcmRzIiwiY29tcHV0ZVBvc2l0aW9uIiwiY29uZmlnIiwic3RyYXRlZ3kiLCJtaWRkbGV3YXJlIiwicGxhdGZvcm0iLCJ2YWxpZE1pZGRsZXdhcmUiLCJzdGF0ZWZ1bFBsYWNlbWVudCIsIm1pZGRsZXdhcmVEYXRhIiwicmVzZXRDb3VudCIsImkiLCJmbiIsIm5leHRYIiwibmV4dFkiLCJkYXRhIiwicmVzZXQiLCJkZXRlY3RPdmVyZmxvdyIsInN0YXRlIiwiX2F3YWl0JHBsYXRmb3JtJGlzRWxlIiwiZWxlbWVudHMiLCJib3VuZGFyeSIsInJvb3RCb3VuZGFyeSIsImVsZW1lbnRDb250ZXh0IiwiYWx0Qm91bmRhcnkiLCJwYWRkaW5nT2JqZWN0IiwiZWxlbWVudCIsImNsaXBwaW5nQ2xpZW50UmVjdCIsIm9mZnNldFBhcmVudCIsIm9mZnNldFNjYWxlIiwiZWxlbWVudENsaWVudFJlY3QiLCJnZXRQbGFjZW1lbnRMaXN0IiwiYXV0b0FsaWdubWVudCIsImFsbG93ZWRQbGFjZW1lbnRzIiwiYXV0b1BsYWNlbWVudCIsIl9taWRkbGV3YXJlRGF0YSRhdXRvUCIsIl9taWRkbGV3YXJlRGF0YSRhdXRvUDIiLCJfcGxhY2VtZW50c1RoYXRGaXRPbkUiLCJjcm9zc0F4aXMiLCJkZXRlY3RPdmVyZmxvd09wdGlvbnMiLCJwbGFjZW1lbnRzJDEiLCJvdmVyZmxvdyIsImN1cnJlbnRJbmRleCIsImN1cnJlbnRQbGFjZW1lbnQiLCJhbGlnbm1lbnRTaWRlcyIsImN1cnJlbnRPdmVyZmxvd3MiLCJhbGxPdmVyZmxvd3MiLCJuZXh0UGxhY2VtZW50IiwicGxhY2VtZW50c1NvcnRlZEJ5TW9zdFNwYWNlIiwiZCIsImEiLCJiIiwicmVzZXRQbGFjZW1lbnQiLCJjb252ZXJ0VmFsdWVUb0Nvb3JkcyIsIm1haW5BeGlzTXVsdGkiLCJjcm9zc0F4aXNNdWx0aSIsInJhd1ZhbHVlIiwibWFpbkF4aXMiLCJvZmZzZXQiLCJfbWlkZGxld2FyZURhdGEkb2Zmc2UiLCJfbWlkZGxld2FyZURhdGEkYXJyb3ciLCJkaWZmQ29vcmRzIiwic2hpZnQiLCJjaGVja01haW5BeGlzIiwiY2hlY2tDcm9zc0F4aXMiLCJsaW1pdGVyIiwibWFpbkF4aXNDb29yZCIsImNyb3NzQXhpc0Nvb3JkIiwibWluU2lkZSIsIm1heFNpZGUiLCJsaW1pdGVkQ29vcmRzIiwiaGFzV2luZG93IiwiZ2V0Tm9kZU5hbWUiLCJub2RlIiwiaXNOb2RlIiwiZ2V0V2luZG93IiwiX25vZGUkb3duZXJEb2N1bWVudCIsImdldERvY3VtZW50RWxlbWVudCIsImlzRWxlbWVudCIsImlzSFRNTEVsZW1lbnQiLCJpc1NoYWRvd1Jvb3QiLCJpc092ZXJmbG93RWxlbWVudCIsIm92ZXJmbG93WCIsIm92ZXJmbG93WSIsImRpc3BsYXkiLCJnZXRDb21wdXRlZFN0eWxlIiwiaXNUYWJsZUVsZW1lbnQiLCJpc1RvcExheWVyIiwic2VsZWN0b3IiLCJpc0NvbnRhaW5pbmdCbG9jayIsImVsZW1lbnRPckNzcyIsIndlYmtpdCIsImlzV2ViS2l0IiwiY3NzIiwiZ2V0Q29udGFpbmluZ0Jsb2NrIiwiY3VycmVudE5vZGUiLCJnZXRQYXJlbnROb2RlIiwiaXNMYXN0VHJhdmVyc2FibGVOb2RlIiwiZ2V0Tm9kZVNjcm9sbCIsImdldE5lYXJlc3RPdmVyZmxvd0FuY2VzdG9yIiwicGFyZW50Tm9kZSIsImdldE92ZXJmbG93QW5jZXN0b3JzIiwibGlzdCIsInRyYXZlcnNlSWZyYW1lcyIsIl9ub2RlJG93bmVyRG9jdW1lbnQyIiwic2Nyb2xsYWJsZUFuY2VzdG9yIiwiaXNCb2R5Iiwid2luIiwiZnJhbWVFbGVtZW50IiwiZ2V0RnJhbWVFbGVtZW50IiwiZ2V0Q3NzRGltZW5zaW9ucyIsImhhc09mZnNldCIsIm9mZnNldFdpZHRoIiwib2Zmc2V0SGVpZ2h0Iiwic2hvdWxkRmFsbGJhY2siLCJ1bndyYXBFbGVtZW50IiwiZ2V0U2NhbGUiLCJkb21FbGVtZW50IiwiJCIsIm5vT2Zmc2V0cyIsImdldFZpc3VhbE9mZnNldHMiLCJzaG91bGRBZGRWaXN1YWxPZmZzZXRzIiwiaXNGaXhlZCIsImZsb2F0aW5nT2Zmc2V0UGFyZW50IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiaW5jbHVkZVNjYWxlIiwiaXNGaXhlZFN0cmF0ZWd5IiwiY2xpZW50UmVjdCIsInNjYWxlIiwidmlzdWFsT2Zmc2V0cyIsIm9mZnNldFdpbiIsImN1cnJlbnRXaW4iLCJjdXJyZW50SUZyYW1lIiwiaWZyYW1lU2NhbGUiLCJpZnJhbWVSZWN0IiwibGVmdCIsInRvcCIsImdldFdpbmRvd1Njcm9sbEJhclgiLCJsZWZ0U2Nyb2xsIiwiZ2V0SFRNTE9mZnNldCIsImRvY3VtZW50RWxlbWVudCIsInNjcm9sbCIsImlnbm9yZVNjcm9sbGJhclgiLCJodG1sUmVjdCIsImNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0Iiwib2Zmc2V0cyIsImlzT2Zmc2V0UGFyZW50QW5FbGVtZW50Iiwib2Zmc2V0UmVjdCIsImh0bWxPZmZzZXQiLCJnZXRDbGllbnRSZWN0cyIsImdldERvY3VtZW50UmVjdCIsImh0bWwiLCJnZXRWaWV3cG9ydFJlY3QiLCJ2aXN1YWxWaWV3cG9ydCIsInZpc3VhbFZpZXdwb3J0QmFzZWQiLCJnZXRJbm5lckJvdW5kaW5nQ2xpZW50UmVjdCIsImdldENsaWVudFJlY3RGcm9tQ2xpcHBpbmdBbmNlc3RvciIsImNsaXBwaW5nQW5jZXN0b3IiLCJoYXNGaXhlZFBvc2l0aW9uQW5jZXN0b3IiLCJzdG9wTm9kZSIsImdldENsaXBwaW5nRWxlbWVudEFuY2VzdG9ycyIsImNhY2hlIiwiY2FjaGVkUmVzdWx0IiwiZWwiLCJjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSIsImVsZW1lbnRJc0ZpeGVkIiwiY29tcHV0ZWRTdHlsZSIsImN1cnJlbnROb2RlSXNDb250YWluaW5nIiwiYW5jZXN0b3IiLCJnZXRDbGlwcGluZ1JlY3QiLCJjbGlwcGluZ0FuY2VzdG9ycyIsImZpcnN0Q2xpcHBpbmdBbmNlc3RvciIsImNsaXBwaW5nUmVjdCIsImFjY1JlY3QiLCJnZXREaW1lbnNpb25zIiwiZ2V0UmVjdFJlbGF0aXZlVG9PZmZzZXRQYXJlbnQiLCJpc1N0YXRpY1Bvc2l0aW9uZWQiLCJnZXRUcnVlT2Zmc2V0UGFyZW50IiwicG9seWZpbGwiLCJyYXdPZmZzZXRQYXJlbnQiLCJnZXRPZmZzZXRQYXJlbnQiLCJzdmdPZmZzZXRQYXJlbnQiLCJnZXRFbGVtZW50UmVjdHMiLCJnZXRPZmZzZXRQYXJlbnRGbiIsImdldERpbWVuc2lvbnNGbiIsImZsb2F0aW5nRGltZW5zaW9ucyIsImlzUlRMIiwicmVjdHNBcmVFcXVhbCIsIm9ic2VydmVNb3ZlIiwib25Nb3ZlIiwiaW8iLCJ0aW1lb3V0SWQiLCJyb290IiwiY2xlYW51cCIsIl9pbyIsInJlZnJlc2giLCJza2lwIiwidGhyZXNob2xkIiwiZWxlbWVudFJlY3RGb3JSb290TWFyZ2luIiwiaW5zZXRUb3AiLCJpbnNldFJpZ2h0IiwiaW5zZXRCb3R0b20iLCJpbnNldExlZnQiLCJpc0ZpcnN0VXBkYXRlIiwiaGFuZGxlT2JzZXJ2ZSIsInJhdGlvIiwiYXV0b1VwZGF0ZSIsInVwZGF0ZSIsImFuY2VzdG9yU2Nyb2xsIiwiYW5jZXN0b3JSZXNpemUiLCJlbGVtZW50UmVzaXplIiwibGF5b3V0U2hpZnQiLCJhbmltYXRpb25GcmFtZSIsInJlZmVyZW5jZUVsIiwiYW5jZXN0b3JzIiwiY2xlYW51cElvIiwicmVvYnNlcnZlRnJhbWUiLCJyZXNpemVPYnNlcnZlciIsImZpcnN0RW50cnkiLCJfcmVzaXplT2JzZXJ2ZXIiLCJmcmFtZUlkIiwicHJldlJlZlJlY3QiLCJmcmFtZUxvb3AiLCJuZXh0UmVmUmVjdCIsIl9yZXNpemVPYnNlcnZlcjIiLCJvZmZzZXQkMSIsImF1dG9QbGFjZW1lbnQkMSIsInNoaWZ0JDEiLCJtZXJnZWRPcHRpb25zIiwicGxhdGZvcm1XaXRoQ2FjaGUiLCJjb21wdXRlUG9zaXRpb24kMSIsImlzQ29tcG9uZW50UHVibGljSW5zdGFuY2UiLCJ0YXJnZXQiLCJ0b1ZhbHVlIiwic291cmNlIiwidW5yZWYiLCJnZXREUFIiLCJyb3VuZEJ5RFBSIiwiZHByIiwidXNlRmxvYXRpbmciLCJ3aGlsZUVsZW1lbnRzTW91bnRlZE9wdGlvbiIsIm9wZW5PcHRpb24iLCJfdG9WYWx1ZSIsIm1pZGRsZXdhcmVPcHRpb24iLCJwbGFjZW1lbnRPcHRpb24iLCJfdG9WYWx1ZTIiLCJzdHJhdGVneU9wdGlvbiIsIl90b1ZhbHVlMyIsInRyYW5zZm9ybU9wdGlvbiIsIl90b1ZhbHVlNCIsInJlZmVyZW5jZUVsZW1lbnQiLCJmbG9hdGluZ0VsZW1lbnQiLCJzaGFsbG93UmVmIiwiaXNQb3NpdGlvbmVkIiwiZmxvYXRpbmdTdHlsZXMiLCJpbml0aWFsU3R5bGVzIiwieFZhbCIsInlWYWwiLCJ3aGlsZUVsZW1lbnRzTW91bnRlZENsZWFudXAiLCJvcGVuIiwicG9zaXRpb24iLCJhdHRhY2giLCJnZXRDdXJyZW50U2NvcGUiLCJvblNjb3BlRGlzcG9zZSIsInNoYWxsb3dSZWFkb25seSIsImlzQ2xpY2tPdXRzaWRlIiwiYW5jaG9yIiwiaXNIb3ZlcmVkIiwiaXNUb2dnbGVkT3BlbiIsIm9mZnNldE1pZGRsZXdhcmUiLCJpc1Nob3dQb3BvdmVyIiwiaGFuZGxlUGVybWFuZW50T3BlbkJvZHlDbGljayIsImhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZU92ZXIiLCJoYW5kbGVBbmNob3JFbGVtZW50TW91c2VMZWF2ZSIsImhhbmRsZUFuY2hvckVsZW1lbnRDbGljayIsImFkZExpc3RlbmVyc1RvQW5jaG9yRWxlbWVudCIsInJlbW92ZUxpc3RlbmVyc0Zyb21BbmNob3JFbGVtZW50IiwiaGFuZGxlUGVybWFuZW50T3BlbkJvZHlLZXlkb3duIiwiYWRkT3Blbkxpc3RlbmVyc1RvUm9vdCIsInJlbW92ZU9wZW5MaXN0ZW5lcnNGcm9tUm9vdCIsInVwZGF0ZUFuY2hvckVsZW1lbnQiLCJ3YXRjaEVmZmVjdCIsIm9uQmVmb3JlTW91bnQiLCJkaWFsb2dFbGVtZW50IiwiRk9STUFUIiwiRk9STUFUX1JFR0VYIiwiVkFMSURBVE9SIl0sIm1hcHBpbmdzIjoidUdBQWFBLEdBQWMsQ0FDekIsV0FBWSxhQUNaLFNBQVUsVUFDWixFQ0NhQyxFQUFNLENBQ2pCLGVBQWdCLENBQUNDLEVBQXFCQyxJQUM3QkQsRUFBVSxJQUFLRSxHQUFZLEdBQUdELENBQVUsSUFBSUMsQ0FBTyxFQUFFLEVBRTlELE1BQU8sQ0FDTCxFQUFHLENBQ0QsT0FBUSxtQkFDUixRQUFTLG9CQUNULEtBQU0saUJBQ04sTUFBTyxpQkFBQSxFQUVULEVBQUcsQ0FDRCxRQUFTLHFCQUNULE9BQVEsbUJBQUEsQ0FDVixFQUVGLE1BQU8sQ0FDTCxPQUFRLG9CQUNSLFFBQVMscUJBQ1QsT0FBUSxvQkFDUixJQUFLLGlCQUNMLE1BQU8sa0JBQUEsRUFFVCxNQUFPLENBQ0wsT0FBUSxvQkFDUixPQUFRLG9CQUNSLElBQUssaUJBQ0wsTUFBTyxtQkFDUCxRQUFTLG9CQUFBLEVBRVgsR0FBSSxDQUNGLE9BQVEsQ0FDTixRQUFTLENBQ1AsTUFBTyx3QkFDUCxLQUFNLHVCQUNOLFFBQVMsMEJBQ1QsUUFBUyx5QkFBQSxFQUVYLFFBQVMsQ0FDUCxNQUFPLHdCQUNQLEtBQU0sdUJBQ04sUUFBUywwQkFDVCxRQUFTLDBCQUVULEtBQU0sdUJBQ04sTUFBTyx3QkFDUCxLQUFNLHVCQUNOLE9BQVEseUJBQ1IsT0FBUSx5QkFDUixJQUFLLHNCQUNMLE9BQVEseUJBQ1IsS0FBTSx1QkFDTixPQUFRLHdCQUFBLENBQ1YsRUFFRixRQUFTLGtCQUNULEtBQU0sZUFDTixRQUFTLGtCQUNULFVBQVcsb0JBQ1gsUUFBUyxDQUNQLE9BQVEseUJBQ1IsTUFBTyx3QkFDUCxRQUFTLGtCQUNULFNBQVUsMkJBQ1YsU0FBVSwyQkFDVixRQUFTLHlCQUFBLEVBRVgsWUFBYSxDQUNYLFlBQWEsdUJBQ2IsWUFBYSx1QkFDYixjQUFlLHVCQUNmLGFBQWMsc0JBQUEsQ0FDaEIsRUFFRixPQUFRLENBQ04sTUFBTyxDQUNMLE9BQVEsQ0FDTixNQUFPLG9CQUNQLEtBQU0sbUJBQ04sUUFBUyxzQkFDVCxRQUFTLHNCQUVULEtBQU0sbUJBQ04sTUFBTyxvQkFDUCxLQUFNLG1CQUNOLE9BQVEscUJBQ1IsT0FBUSxxQkFDUixJQUFLLGtCQUNMLE9BQVEscUJBQ1IsS0FBTSxtQkFDTixPQUFRLG9CQUFBLEVBRVYsUUFBUyw0QkFDVCxRQUFTLGNBQ1QsU0FBVSx1QkFDVixLQUFNLG1CQUNOLElBQUssa0JBQ0wsUUFBUyxxQkFBQSxFQUVYLE9BQVEsQ0FDTixLQUFNLGdCQUNOLFFBQVMsa0JBQ1QsS0FBTSxrQkFDTixJQUFLLGdCQUNMLEtBQU0sa0JBQUEsRUFFUixNQUFPLENBQ0wsT0FBUSxxQkFDUixNQUFPLG1CQUFBLEVBRVQsT0FBUSxDQUNOLEtBQU0sdUJBQ04sSUFBSyx1QkFDTCxJQUFLLHNCQUFBLEVBRVAsS0FBTSxDQUNKLEtBQU0sZ0JBQ04sSUFBSyxnQkFDTCxJQUFLLGVBQUEsRUFFUCxLQUFNLENBQ0osS0FBTSxxQkFDTixJQUFLLHFCQUNMLElBQUssb0JBQUEsRUFFUCxNQUFPLENBQ0wsS0FBTSxzQkFDTixJQUFLLHNCQUNMLElBQUsscUJBQUEsRUFFUCxJQUFLLENBQ0gsS0FBTSxvQkFDTixJQUFLLG9CQUNMLElBQUssbUJBQUEsQ0FDUCxFQUVGLFdBQVksQ0FDVixXQUFZLGtCQUNaLFlBQWEsa0JBQUEsRUFFZixhQUFjLENBQ1osYUFBYyxnQ0FBQSxFQUVoQixXQUFZLENBQ1YsSUFBSyxxQkFDTCxHQUFJLGlCQUFBLEVBRU4sUUFBUyxDQUNQLFFBQVMsdUJBQ1QsSUFBSyxpQkFDTCxJQUFLLGlCQUNMLE1BQU8saUJBQ1AsS0FBTSxnQkFBQSxFQUVSLE9BQVEsQ0FDTixZQUFhLDBCQUNiLFFBQVMsc0JBQ1QsS0FBTSxrQkFBQSxFQUVSLFFBQVMsQ0FDUCxNQUFPLHFCQUNQLFNBQVUsd0JBQ1YsS0FBTSxvQkFDTixLQUFNLG9CQUNOLFFBQVMsdUJBQ1QsT0FBUSxzQkFDUixhQUFjLDRCQUNkLFlBQWEsMkJBQ2IsS0FBTSxtQkFBQSxFQUVSLFNBQVUsZ0JBQ1YsS0FBTSxDQUNKLE1BQU8sQ0FDTCxLQUFNLHVCQUNOLEtBQU0sbUJBQUEsRUFFUixVQUFXLENBQ1QsT0FBUSxtQkFDUixlQUFnQiwyQkFDaEIsSUFBSyxnQkFDTCxZQUFhLHVCQUFBLEVBRWYsS0FBTSxDQUNKLElBQUssaUJBQ0wsR0FBSSxXQUFBLEVBRU4sT0FBUSxDQUNOLElBQUssbUJBQ0wsR0FBSSxhQUFBLEVBRU4sS0FBTSxnQkFBQSxFQUVSLEtBQU0sQ0FDSixNQUFPLENBQ0wsT0FBUSxDQUNOLE1BQU8sa0JBQ1AsS0FBTSxpQkFDTixRQUFTLG9CQUNULFFBQVMsb0JBRVQsS0FBTSxpQkFDTixNQUFPLGtCQUNQLEtBQU0saUJBQ04sT0FBUSxtQkFDUixPQUFRLG1CQUNSLElBQUssZ0JBQ0wsT0FBUSxtQkFDUixLQUFNLGlCQUNOLE9BQVEsbUJBRVIsUUFBUyxDQUNQLEtBQU0seUJBQ04sTUFBTywwQkFDUCxLQUFNLHlCQUNOLE9BQVEsMkJBQ1IsT0FBUSwyQkFDUixJQUFLLHdCQUNMLE9BQVEsMkJBQ1IsS0FBTSx5QkFDTixPQUFRLDBCQUFBLENBQ1YsRUFFRixRQUFTLHVCQUNULFVBQVcseUJBQ1gsUUFBUyxDQUNQLE1BQU8sNkJBQ1AsUUFBUyx1QkFDVCxRQUFTLCtCQUNULFFBQVMsK0JBQ1QsZ0JBQWlCLHNDQUFBLENBQ25CLEVBRUYsS0FBTSxDQUNKLFVBQVcsNEJBQ1gsV0FBWSw2QkFDWixXQUFZLDZCQUNaLFdBQVksNkJBQ1osUUFBUywwQkFDVCxRQUFTLDBCQUNULE9BQVEseUJBQ1IsT0FBUSx5QkFDUixRQUFTLDBCQUNULGlCQUFrQixtQ0FDbEIsUUFBUywwQkFDVCxpQkFBa0IsbUNBQ2xCLFFBQVMsMEJBQ1QsT0FBUSx5QkFDUixPQUFRLHlCQUNSLE9BQVEseUJBQ1IsU0FBVSwyQkFDVixTQUFVLDBCQUFBLEVBRVosS0FBTSxDQUNKLE9BQVEsZUFDUixTQUFVLGVBQ1YsUUFBUyxlQUNULE9BQVEsZUFDUixZQUFhLGVBQ2IsV0FBWSxjQUFBLEVBRWQsT0FBUSxDQUNOLGFBQWMsZ0JBQ2QsYUFBYyxnQkFDZCxZQUFhLGdCQUNiLGNBQWUsZUFBQSxDQUNqQixFQUVGLElBQUssQ0FDSCxLQUFNLGFBQ04sUUFBUyxlQUNULEtBQU0sZUFDTixJQUFLLGFBQ0wsSUFBSyxhQUNMLEtBQU0sWUFBQSxFQUVSLEtBQU0sQ0FDSixNQUFPLGFBQ1AsS0FBTSxpQkFDTixPQUFRLG1CQUNSLEdBQUksY0FBQSxFQUVOLE9BQVEsQ0FDTixLQUFNLG1CQUNOLEtBQU0sZ0JBQ04sS0FBTSxtQkFDTixTQUFVLHVCQUNWLFNBQVUsbUJBQUEsRUFFWixVQUFXLENBQ1QsUUFBUyxjQUFBLEVBRVgsYUFBYyxDQUNaLElBQUssZ0JBQUEsRUFFUCxPQUFRLENBQ04sT0FBUSxDQUNOLEtBQU0sMEJBQ04sS0FBTSx1QkFDTixRQUFTLHlCQUNULEtBQU0seUJBQ04sSUFBSyx1QkFDTCxJQUFLLHVCQUNMLEtBQU0sc0JBQUEsRUFFUixLQUFNLENBQ0osS0FBTSxnQkFDTixRQUFTLGtCQUNULEtBQU0sa0JBQ04sSUFBSyxnQkFDTCxJQUFLLGdCQUNMLEtBQU0sZUFBQSxFQUVSLEtBQU0sQ0FDSixLQUFNLHdCQUNOLEtBQU0scUJBQ04sUUFBUyx1QkFDVCxLQUFNLHVCQUNOLElBQUsscUJBQ0wsSUFBSyxxQkFDTCxLQUFNLG9CQUFBLEVBRVIsTUFBTyxDQUNMLEtBQU0seUJBQ04sS0FBTSxzQkFDTixRQUFTLHdCQUNULEtBQU0sd0JBQ04sSUFBSyxzQkFDTCxJQUFLLHNCQUNMLEtBQU0scUJBQUEsRUFFUixJQUFLLENBQ0gsS0FBTSx1QkFDTixLQUFNLG9CQUNOLFFBQVMsc0JBQ1QsS0FBTSxzQkFDTixJQUFLLG9CQUNMLElBQUssb0JBQ0wsS0FBTSxtQkFBQSxFQUVSLEVBQUcsQ0FDRCxLQUFNLHFCQUNOLEtBQU0sa0JBQ04sUUFBUyxvQkFDVCxLQUFNLG9CQUNOLElBQUssa0JBQ0wsSUFBSyxrQkFDTCxLQUFNLGlCQUFBLEVBRVIsRUFBRyxDQUNELEtBQU0sa0JBQ04sUUFBUyxvQkFDVCxLQUFNLG9CQUNOLElBQUssa0JBQ0wsSUFBSyxrQkFDTCxLQUFNLGlCQUFBLENBQ1IsRUFFRixPQUFRLENBQ04sT0FBUSxxQkFDUixRQUFTLHNCQUNULE1BQU8sb0JBQ1AsV0FBWSx3QkFBQSxFQUVkLFFBQVMsQ0FDUCxJQUFLLG9CQUNMLEdBQUksY0FBQSxFQUVOLFNBQVUsQ0FDUixFQUFHLENBQ0QsS0FBTSxjQUNOLE9BQVEsZ0JBQ1IsT0FBUSxlQUFBLEVBRVYsR0FBSSxDQUNGLEtBQU0sZUFDTixPQUFRLGdCQUFBLEVBRVYsRUFBRyxDQUNELEtBQU0sY0FDTixPQUFRLGVBQUEsQ0FDVixFQUVGLFFBQVMsQ0FDUCxPQUFRLENBQ04sS0FBTSx3QkFDTixRQUFTLDBCQUNULEtBQU0sMEJBQ04sSUFBSyx3QkFDTCxJQUFLLHdCQUNMLEtBQU0sdUJBQUEsRUFFUixLQUFNLENBQ0osS0FBTSxpQkFDTixRQUFTLG1CQUNULEtBQU0sbUJBQ04sSUFBSyxpQkFDTCxJQUFLLGlCQUNMLEtBQU0sZ0JBQUEsRUFFUixLQUFNLENBQ0osS0FBTSxzQkFDTixRQUFTLHdCQUNULEtBQU0sd0JBQ04sSUFBSyxzQkFDTCxJQUFLLHNCQUNMLEtBQU0scUJBQUEsRUFFUixNQUFPLENBQ0wsS0FBTSx1QkFDTixRQUFTLHlCQUNULEtBQU0seUJBQ04sSUFBSyx1QkFDTCxJQUFLLHVCQUNMLEtBQU0sc0JBQUEsRUFFUixJQUFLLENBQ0gsS0FBTSxxQkFDTixRQUFTLHVCQUNULEtBQU0sdUJBQ04sSUFBSyxxQkFDTCxJQUFLLHFCQUNMLEtBQU0sb0JBQUEsRUFFUixFQUFHLENBQ0QsS0FBTSxtQkFDTixRQUFTLHFCQUNULEtBQU0scUJBQ04sSUFBSyxtQkFDTCxJQUFLLG1CQUNMLEtBQU0sa0JBQUEsRUFFUixFQUFHLENBQ0QsS0FBTSxtQkFDTixRQUFTLHFCQUNULEtBQU0scUJBQ04sSUFBSyxtQkFDTCxJQUFLLG1CQUNMLEtBQU0sa0JBQUEsQ0FDUixFQUVGLGVBQWdCLENBQ2QsSUFBSywyQkFDTCxHQUFJLHFCQUFBLEVBRU4sU0FBVSxDQUNSLFNBQVUseUJBQ1YsTUFBTyxzQkFDUCxTQUFVLHlCQUNWLE9BQVEsdUJBQ1IsT0FBUSxzQkFBQSxFQUVWLFlBQWEsQ0FDWCxPQUFRLGdCQUNSLEtBQU0sY0FDTixNQUFPLGVBQ1AsSUFBSyxZQUFBLEVBRVAsTUFBTyxDQUNMLFdBQVksaUJBQ1osZ0JBQWlCLGtCQUNqQixhQUFjLGdCQUFBLEVBRWhCLFVBQVcsQ0FDVCxJQUFLLHFCQUFBLEVBRVAsT0FBUSxDQUNOLFFBQVMsc0JBQ1QsT0FBUSxxQkFDUixJQUFLLGtCQUNMLEtBQU0sa0JBQUEsRUFFUixLQUFNLENBQ0osR0FBSSxrQkFBQSxFQUVOLFdBQVksQ0FDVixNQUFPLHdCQUFBLEVBRVQsY0FBZSxDQUNiLElBQUssMEJBQ0wsR0FBSSxvQkFBQSxFQUVOLGVBQWdCLENBQ2QsTUFBTyw0QkFDUCxLQUFNLDJCQUNOLE1BQU8sMkJBQUEsRUFFVCxVQUFXLENBQ1QsTUFBTyxDQUNMLEdBQUksdUJBQ0osSUFBSywyQkFBQSxFQUVQLEtBQU0sQ0FDSixHQUFJLGlCQUNKLElBQUsscUJBQUEsQ0FDUCxFQUVGLFdBQVksQ0FDVixJQUFLLG9CQUNMLEdBQUksY0FBQSxFQUVOLGdCQUFpQixDQUNmLElBQUssd0JBQUEsRUFFUCxNQUFPLENBQ0wsS0FBTSxrQkFDTixLQUFNLGVBQ04sS0FBTSxrQkFDTixTQUFVLHNCQUNWLFNBQVUsa0JBQUEsRUFFWixRQUFTLENBQ1AsUUFBUyx1QkFDVCxJQUFLLGdCQUFBLENBRVQsMjZCQ3RnQmFDLEdBQVEsQ0FDbkIsS0FBTSxPQUNOLElBQUssTUFDTCxTQUFVLFdBQ1YsTUFBTyxRQUNQLFVBQVcsWUFDWCxJQUFLLE1BQ0wsR0FBSSxLQUNKLEtBQU0sT0FDTixNQUFPLE9BQ1QsRUNWYUMsRUFBTyxDQUNsQixNQUFPLFFBQ1AsTUFBTyxPQUNULEVBSWFDLEdBQWMsQ0FDekIsTUFBTyxRQUNQLE1BQU8sT0FDVCxFQ3dCTUMsR0FBZ0JDLEdBQW1DLENBQ3ZELElBQUlDLEVBQVNELEdBQVMsT0FBT0EsR0FBVSxTQUFXLElBQUksS0FBSyxhQUFBLEVBQWUsT0FBT0EsQ0FBSyxFQUFJLE9BQU9BLEdBQVMsRUFBRSxFQUN4R0UsRUFBU0QsRUFFYixPQUFJRCxHQUFTLE9BQU9BLEdBQVUsV0FDNUJFLEVBQVNBLEVBQU8sUUFBUSxNQUFPLEVBQUUsRUFDN0IsT0FBT0EsQ0FBTSxFQUNmRCxFQUFTLElBQUksS0FBSyxhQUFBLEVBQWUsT0FBTyxPQUFPQyxDQUFNLENBQUMsRUFFdERELEVBQVMsS0FJTkEsQ0FDVCxFQUVNRSxHQUFvQkgsR0FDakJBLEdBQVMsT0FBT0EsR0FBVSxTQUM3QkEsRUFDRyxRQUFRLHdCQUF5QixPQUFPLEVBQ3hDLFFBQVEsVUFBVyxHQUFHLEVBQ3RCLFlBQUEsRUFDQSxNQUFNLEdBQUcsRUFDVCxJQUFLSSxHQUFTQSxFQUFLLE1BQU0sRUFBRyxDQUFDLEVBQUUsWUFBQSxFQUFnQkEsRUFBSyxNQUFNLENBQUMsQ0FBQyxFQUM1RCxLQUFLLEVBQUUsRUFDVkosRUFHQUssR0FBZUwsR0FBbUMsQ0FDdEQsSUFBSUMsRUFBOEMsT0FBckNELEdBQVMsT0FBT0EsR0FBVSxTQUFrQkEsRUFBZ0JBLEdBQVMsRUFBcEIsRUFDMURFLEVBQVNELEVBR2IsT0FGQUMsRUFBU0EsRUFBTyxRQUFRLE1BQU8sRUFBRSxFQUV6QkEsRUFBTyxPQUFBLENBQ2IsSUFBSyxHQUNIRCxFQUFTLEdBQUdDLEVBQU8sTUFBTSxFQUFHLENBQUMsQ0FBQyxJQUFJQSxFQUFPLE1BQU0sQ0FBQyxDQUFDLEdBQ2pELE1BQ0YsSUFBSyxJQUNIRCxFQUFTLEdBQUdDLEVBQU8sTUFBTSxFQUFHLENBQUMsQ0FBQyxJQUFJQSxFQUFPLE1BQU0sRUFBRyxDQUFDLENBQUMsSUFBSUEsRUFBTyxNQUFNLENBQUMsQ0FBQyxHQUN2RSxNQUNGLElBQUssSUFDSEQsRUFBUyxHQUFHQyxFQUFPLE1BQU0sRUFBRyxDQUFDLENBQUMsSUFBSUEsRUFBTyxNQUFNLEVBQUcsQ0FBQyxDQUFDLElBQUlBLEVBQU8sTUFBTSxFQUFHLENBQUMsQ0FBQyxJQUFJQSxFQUFPLE1BQU0sQ0FBQyxDQUFDLEdBQzdGLE1BQ0YsUUFDRUQsRUFBU0MsRUFDVCxLQUFBLENBR0osT0FBT0QsQ0FDVCxFQUVNSyxHQUFlTixHQUVaLElBRFFBLEVBQVFELEdBQWFDLENBQUssRUFBSSxPQUFPQSxHQUFTLEdBQUcsQ0FDL0Msb0dDbEVYTyxFQUFXQyxFQUFBQSxJQUFBLEVBRWpCQyxPQUFBQSxFQUFBQSxNQUNFLElBQU1DLEVBQU0sS0FDWixTQUFZLENBQ1YsTUFBTUMsRUFBYUQsRUFBTSxLQUNuQkUsRUFBT1QsR0FBaUJRLENBQUUsRUFDMUIsQ0FBQ0UsQ0FBTSxFQUFJRixFQUFHLE1BQU0sR0FBRyxFQUN2QkcsRUFBY2xCLEdBQU1pQixHQUFBLFlBQUFBLEVBQVEsYUFBbUMsRUFDL0RFLEVBQVlDLEVBQUFBLHFCQUFxQixJQUNqQ0YsRUFDS0csZ3lFQUdGQSw4cmRBQUEsMkJBQUFMLENBQUEsT0FBQSxDQUFBLENBQ1IsRUFFREwsRUFBUyxNQUFRVyxFQUFBQSxRQUFRSCxDQUFTLENBQ3BDLEVBQ0EsQ0FBRSxVQUFXLEVBQUEsQ0FBSyxnVkN0Q1RJLEVBQU8sQ0FDbEIsZ0JBQWlCLGtCQUNqQixNQUFPLFFBQ1AsSUFBSyxNQUNMLGVBQWdCLGlCQUNoQixpQkFBa0IsbUJBQ2xCLFVBQVcsWUFDWCxXQUFZLGFBQ1osWUFBYSxjQUNiLGNBQWUsZ0JBQ2YsWUFBYSxjQUNiLFdBQVksYUFDWixhQUFjLGVBQ2QsV0FBWSxhQUNaLFdBQVksYUFDWixJQUFLLE1BQ0wsS0FBTSxPQUNOLFNBQVUsV0FDVixVQUFXLFlBQ1gsZUFBZ0IsaUJBQ2hCLEtBQU0sT0FDTixhQUFjLGVBQ2QsV0FBWSxhQUNaLE1BQU8sUUFDUCxhQUFjLGVBQ2QsY0FBZSxnQkFDZixNQUFPLFFBQ1AsTUFBTyxRQUNQLFNBQVUsV0FDVixNQUFPLFFBQ1Asb0JBQXFCLHNCQUNyQixPQUFRLFNBQ1IsUUFBUyxVQUNULGdCQUFpQixrQkFDakIsT0FBUSxTQUNSLE1BQU8sUUFDUCxLQUFNLE9BQ04sT0FBUSxTQUNSLFlBQWEsY0FDYixNQUFPLFFBQ1AsZUFBZ0IsaUJBQ2hCLFlBQWEsY0FDYixZQUFhLGNBQ2IsU0FBVSxXQUNWLFNBQVUsV0FDVixnQkFBaUIsa0JBQ2pCLEtBQU0sT0FDTixZQUFhLGNBQ2IsY0FBZSxnQkFDZixxQkFBc0IsdUJBQ3RCLE1BQU8sUUFDUCxJQUFLLE1BQ0wsTUFBTyxRQUNQLE1BQU8sUUFDUCxtQkFBb0IscUJBQ3BCLE9BQVEsU0FDUixXQUFZLGFBQ1osS0FBTSxPQUNOLFVBQVcsWUFDWCxTQUFVLFdBQ1YsT0FBUSxTQUNSLEtBQU0sT0FDTixLQUFNLE9BQ04sWUFBYSxjQUNiLFlBQWEsY0FDYixVQUFXLFlBQ1gsVUFBVyxZQUNYLE9BQVEsU0FDUixlQUFnQixpQkFDaEIsVUFBVyxZQUNYLGVBQWdCLGlCQUNoQixLQUFNLE9BQ04sS0FBTSxPQUNOLEtBQU0sT0FDTixVQUFXLFlBQ1gsV0FBWSxhQUNaLGNBQWUsZ0JBQ2YsU0FBVSxXQUNWLFlBQWEsY0FDYixRQUFTLFVBQ1QsT0FBUSxTQUNSLE9BQVEsU0FDUixjQUFlLGdCQUNmLGFBQWMsZUFDZCxVQUFXLFlBQ1gsV0FBWSxhQUNaLE9BQVEsU0FDUixNQUFPLFFBQ1AsVUFBVyxZQUNYLGNBQWUsZ0JBQ2YsT0FBUSxTQUNSLGNBQWUsZ0JBQ2YsYUFBYyxlQUNkLEtBQU0sT0FDTixlQUFnQixpQkFDaEIsTUFBTyxRQUNQLFFBQVMsVUFDVCxPQUFRLFNBQ1IsT0FBUSxTQUNSLFFBQVMsVUFDVCxLQUFNLE9BQ04sUUFBUyxVQUNULFNBQVUsV0FDVixNQUFPLFFBQ1AsYUFBYyxlQUNkLGNBQWUsZ0JBQ2YsT0FBUSxTQUNSLElBQUssTUFDTCxVQUFXLFlBQ1gsS0FBTSxPQUNOLFVBQVcsWUFDWCxXQUFZLGFBQ1osVUFBVyxZQUNYLGlCQUFrQixtQkFDbEIsU0FBVSxXQUNWLGNBQWUsZ0JBQ2YsT0FBUSxTQUNSLEtBQU0sT0FDTixRQUFTLFVBQ1QsU0FBVSxXQUNWLFNBQVUsV0FDVixTQUFVLFdBQ1YsV0FBWSxhQUNaLFdBQVksYUFDWixXQUFZLGFBQ1osVUFBVyxZQUNYLFVBQVcsWUFDWCxRQUFTLFVBQ1QsTUFBTyxRQUNQLE9BQVEsU0FDUixNQUFPLFFBQ1Asa0JBQW1CLG9CQUNuQixPQUFRLFNBQ1IsUUFBUyxTQUNYLEVBRWFDLEdBQWEsQ0FDeEIsSUFBSyxDQUNILElBQUssVUFDTCxXQUFZLGlCQUNaLFVBQVcsZ0JBQ1gsUUFBUyxjQUNULFVBQVcsZ0JBQ1gsYUFBYyxtQkFDZCxRQUFTLGFBQUEsRUFFWCxTQUFVLENBQ1IsSUFBSyxlQUNMLFFBQVMsa0JBQUEsRUFFWCxHQUFJLENBQ0YsUUFBUyxhQUNULFFBQVMsYUFDVCxRQUFTLGFBQ1QsWUFBYSxpQkFDYixXQUFZLGdCQUNaLFdBQVksZ0JBQ1osY0FBZSxtQkFDZixlQUFnQixvQkFDaEIsYUFBYyxpQkFBQSxDQUVsQix5VEMxSVFDLEVBQW9CLElBQU0sQ0FDOUJDLEVBQUssUUFBUSxDQUNmLGkyQ0MzQldDLEVBQVUsQ0FDckIsT0FBUSxTQUNSLEtBQU0sR0FDUixFQUVhQyxFQUF1QixDQUNsQyxPQUFRLFNBQ1IsSUFBSyxNQUNMLEtBQU0sR0FDUixFQ1BhQyxFQUFXLENBQ3RCLFFBQVMsVUFDVCxVQUFXLFlBQ1gsU0FBVSxXQUNWLFdBQVksYUFDWixTQUFVLFVBQ1osRUNSYUMsRUFBUyxDQUNwQixNQUFPLFNBQ1AsS0FBTSxNQUNSLCtsQ0NIYUMsRUFBUSxDQUNuQixNQUFPLFFBQ1AsS0FBTSxPQUNOLFFBQVMsVUFDVCxRQUFTLFNBQ1gscTFFQ0hhQyxFQUFjLENBQ3pCLE1BQU8sUUFDUCxLQUFNLE9BQ04sTUFBTyxRQUNQLEtBQU0sT0FDTixPQUFRLFNBQ1IsT0FBUSxTQUNSLElBQUssTUFDTCxPQUFRLFNBQ1IsS0FBTSxPQUNOLE9BQVEsUUFDVixFQUVhQyxHQU1ULENBQ0YsQ0FBQ0QsRUFBWSxLQUFLLEVBQUcsQ0FDbkIsWUFBYXBDLEVBQUksT0FBTyxNQUFNLEtBQzlCLFVBQVdBLEVBQUksS0FBSyxNQUFNLFFBQVEsT0FBQSxFQUVwQyxDQUFDb0MsRUFBWSxJQUFJLEVBQUcsQ0FDbEIsWUFBYXBDLEVBQUksT0FBTyxNQUFNLE9BQU8sS0FDckMsVUFBV0EsRUFBSSxLQUFLLE1BQU0sT0FBTyxRQUFRLElBQUEsRUFFM0MsQ0FBQ29DLEVBQVksS0FBSyxFQUFHLENBQ25CLFlBQWFwQyxFQUFJLE9BQU8sTUFBTSxPQUFPLE1BQ3JDLFVBQVdBLEVBQUksS0FBSyxNQUFNLE9BQU8sUUFBUSxLQUFBLEVBRTNDLENBQUNvQyxFQUFZLElBQUksRUFBRyxDQUNsQixZQUFhcEMsRUFBSSxPQUFPLE1BQU0sT0FBTyxLQUNyQyxVQUFXQSxFQUFJLEtBQUssTUFBTSxPQUFPLFFBQVEsSUFBQSxFQUUzQyxDQUFDb0MsRUFBWSxNQUFNLEVBQUcsQ0FDcEIsWUFBYXBDLEVBQUksT0FBTyxNQUFNLE9BQU8sT0FDckMsVUFBV0EsRUFBSSxLQUFLLE1BQU0sT0FBTyxRQUFRLE1BQUEsRUFFM0MsQ0FBQ29DLEVBQVksTUFBTSxFQUFHLENBQ3BCLFlBQWFwQyxFQUFJLE9BQU8sTUFBTSxPQUFPLE9BQ3JDLFVBQVdBLEVBQUksS0FBSyxNQUFNLE9BQU8sUUFBUSxNQUFBLEVBRTNDLENBQUNvQyxFQUFZLEdBQUcsRUFBRyxDQUNqQixZQUFhcEMsRUFBSSxPQUFPLE1BQU0sT0FBTyxJQUNyQyxVQUFXQSxFQUFJLEtBQUssTUFBTSxPQUFPLFFBQVEsR0FBQSxFQUUzQyxDQUFDb0MsRUFBWSxNQUFNLEVBQUcsQ0FDcEIsWUFBYXBDLEVBQUksT0FBTyxNQUFNLE9BQU8sT0FDckMsVUFBV0EsRUFBSSxLQUFLLE1BQU0sT0FBTyxRQUFRLE1BQUEsRUFFM0MsQ0FBQ29DLEVBQVksSUFBSSxFQUFHLENBQ2xCLFlBQWFwQyxFQUFJLE9BQU8sTUFBTSxPQUFPLEtBQ3JDLFVBQVdBLEVBQUksS0FBSyxNQUFNLE9BQU8sUUFBUSxJQUFBLEVBRTNDLENBQUNvQyxFQUFZLE1BQU0sRUFBRyxDQUNwQixZQUFhcEMsRUFBSSxPQUFPLE1BQU0sT0FBTyxPQUNyQyxVQUFXQSxFQUFJLEtBQUssTUFBTSxPQUFPLFFBQVEsTUFBQSxDQUU3QyxFQUVhc0MsR0FBZ0IsQ0FDM0IsU0FBVSxLQUNWLFNBQVUsS0FDVixRQUFTLEdBQ1gsaWtOQ3BEUUMsRUFBZUMsR0FBa0IsQ0FDckNWLEVBQUssU0FBVVUsQ0FBSyxDQUN0Qiw4d0NDbEJXQyxHQUFZLENBQ3ZCLFdBQVksU0FDWixjQUFlLGdCQUNmLFdBQVksUUFDZCxtNkRDaUNRQyxFQUEyQzFCLEVBQUFBLElBQUksSUFBSSxFQUNuRDJCLEVBQWdCM0IsRUFBQUEsSUFBaUMsSUFBSSxFQUNyRDRCLEVBQWU1QixFQUFBQSxJQUE2QixJQUFJLEVBQ2hENkIsRUFBbUI3QixFQUFBQSxJQUFBLEVBQ25COEIsRUFBZTlCLEVBQUFBLElBQUEsRUFDZitCLEVBQWUvQixFQUFBQSxJQUFJLENBQUMsRUFDcEJnQyxFQUFhaEMsRUFBQUEsSUFBQSxFQUNiaUMsRUFBY2pDLEVBQUFBLElBQUEsRUFDZGtDLEVBQWVsQyxFQUFBQSxJQUFBLEVBQ2ZtQyxFQUFjbkMsRUFBQUEsSUFBQSxFQUNkb0MsRUFBZXBDLEVBQUFBLElBQUEsRUFDZnFDLEVBQWNyQyxFQUFBQSxJQUFBLEVBRWRzQyxFQUF1QixJQUFNLENBQzdCcEMsRUFBTSxPQUFTLE1BQ2Z3QixFQUFhLFFBQVUsT0FFdkJTLEVBQVksT0FBU0UsRUFBWSxPQUVuQ1gsRUFBYSxNQUFNLE1BQU0sT0FBUyxJQUFJeEIsRUFBTSxLQUFLLE9BQU9BLEVBQU0sS0FBSyxPQUFPQSxFQUFNLEtBQUssT0FDckZ3QixFQUFhLE1BQU0sTUFBTSxRQUFVLEdBQUd4QixFQUFNLEtBQUssTUFBTUEsRUFBTSxLQUFLLE1BQU1BLEVBQU0sS0FBSyxTQUduRndCLEVBQWEsTUFBTSxNQUFNLE9BQVMsSUFBSXhCLEVBQU0sS0FBSyxTQUFTQSxFQUFNLEtBQUssT0FBT0EsRUFBTSxLQUFLLEtBQ3ZGd0IsRUFBYSxNQUFNLE1BQU0sUUFBVSxHQUFHeEIsRUFBTSxLQUFLLFFBQVFBLEVBQU0sS0FBSyxNQUFNQSxFQUFNLEtBQUssTUFFekYsRUFRTXFDLEVBQXNCLElBQU0sQ0FDaEMsTUFBTUMsRUFBWWQsRUFBYSxNQUMvQixHQUFJLENBQUNjLEVBQVcsT0FHaEIsTUFBTUMsRUFBZSxNQUFNLEtBQUtELEVBQVUsUUFBeUMsRUFBRSxJQUNsRkUsR0FBVUEsRUFBTSxVQUFBLEVBR25CLEdBQUlELEVBQWEsU0FBVyxFQUFHLE9BRS9CLE1BQU1FLEVBQWFILEVBQVUsV0FFdkJJLEVBQXFCSCxFQUFhLE9BQU8sQ0FBQ0ksRUFBTUMsS0FDcEQsS0FBSyxJQUFJQSxHQUFPSCxDQUFVLEVBQUksS0FBSyxJQUFJRSxFQUFPRixDQUFVLEVBQUlHLEdBQU9ELENBQUEsRUFHckVkLEVBQWEsTUFBUVUsRUFBYSxRQUFRRyxDQUFrQixFQUU1RE4sRUFBQSxDQUNGLEVBRU1TLEVBQWEsSUFBTSxDQUNuQnJCLEVBQWEsUUFBVSxPQUMzQkcsRUFBaUIsTUFBUSxLQUFLLE1BQU1ILEVBQWEsTUFBTSxXQUFhQSxFQUFhLE1BQU0sV0FBVyxFQUNsR0ksRUFBYSxNQUFRSixFQUFhLE1BQU0sWUFDeENNLEVBQVcsTUFBUU4sRUFBYSxNQUFNLFlBQ3RDTyxFQUFZLE1BQVFILEVBQWEsTUFBUUUsRUFBVyxNQUNwREUsRUFBYSxNQUFRSCxFQUFhLFFBQVUsRUFDNUNJLEVBQVksTUFBUU4sRUFBaUIsUUFBVUMsRUFBYSxNQUM1RE0sRUFBYSxNQUFRVixFQUFhLE1BQU0sWUFBY0EsRUFBYSxNQUFNLFlBQ3pFVyxFQUFZLE1BQVFKLEVBQVksT0FBUyxDQUFDL0IsRUFBTSxjQUVoRHFDLEVBQUEsRUFDRixFQUdNUyxFQUFlLElBQU0sQ0FDekJELEVBQUEsQ0FDRixFQUVNRSxFQUFpQkMsR0FBdUIsQ0FDeEN4QixFQUFhLFFBQVUsTUFDM0JBLEVBQWEsTUFBTSxTQUFTLENBQzFCLFNBQVUsU0FDVixLQUFPQSxFQUFhLE1BQU0sU0FBU3dCLENBQVUsRUFBa0IsVUFBQSxDQUNoRSxDQUNILEVBRU1DLEVBQWdCLElBQU0sQ0FDdEJ6QixFQUFhLFFBQVUsT0FDdkJHLEVBQWlCLE1BQVFDLEVBQWEsTUFDeENKLEVBQWEsTUFBTSxTQUFTLENBQzFCLFNBQVUsU0FDVixLQUFNSSxFQUFhLEtBQUEsQ0FDcEIsRUFDU0ssRUFBWSxPQUN0QmMsRUFBY2xCLEVBQWEsTUFBUSxDQUFDLEVBRXhDLEVBRU1xQixFQUFvQixJQUFNLENBQ3pCbEIsRUFBYSxPQUNoQmUsRUFBY2xCLEVBQWEsTUFBUSxDQUFDLENBRXhDLEVBRU1zQixFQUFnQixJQUFNLE9BQzFCLE1BQU1DLEVBQVUsQ0FDZCxLQUFNNUIsR0FBQSxZQUFBQSxFQUFjLE1BQ3BCLFdBQVksTUFDWixVQUFXLEVBQUEsRUFHYkMsRUFBYyxNQUFRLElBQUkscUJBQXNCNEIsR0FBWSxDQUMxRCxJQUFJQyxFQUFtQixDQUFBLEVBRXZCRCxFQUFRLFFBQVNFLEdBQVUsUUFDekIsTUFBTVAsR0FBYSxNQUFNLE9BQUtRLEdBQUFoQyxFQUFhLFFBQWIsWUFBQWdDLEdBQW9CLFdBQVksRUFBRSxFQUFFLFFBQVFELEVBQU0sTUFBTSxFQUNsRkEsRUFBTSxnQkFDUkQsRUFBTyxLQUFLTixFQUFVLENBRTFCLENBQUMsRUFFR00sRUFBTyxPQUFTLEdBQUcxQyxFQUFLLG9CQUFxQjBDLENBQU0sQ0FDekQsRUFBR0YsQ0FBTyxFQUNWLE1BQU0sT0FBS0ksRUFBQWhDLEVBQWEsUUFBYixZQUFBZ0MsRUFBb0IsV0FBWSxFQUFFLEVBQUUsUUFBU0MsR0FBVSxDQUM1RGhDLEVBQWMsT0FBT0EsRUFBYyxNQUFNLFFBQVFnQyxDQUFLLENBQzVELENBQUMsQ0FDSCxFQUVNQyxFQUFjLElBQU0sQ0FDeEIsTUFBTUMsRUFBbUIsSUFBTSxDQUM3QlIsRUFBQSxDQUNGLEVBQ0F6QixFQUFhLE1BQVEsSUFBSSxpQkFBaUJpQyxDQUFnQixFQUN0RG5DLEVBQWEsT0FBT0UsRUFBYSxNQUFNLFFBQVFGLEVBQWEsTUFBTyxDQUFFLFVBQVcsR0FBTSxDQUM1RixFQUVBb0MsT0FBQUEsRUFBQUEsVUFBVSxJQUFNLENBQ1YsUUFDRixPQUFPLGlCQUFpQixTQUFVZixDQUFVLEVBRzlDQSxFQUFBLEVBQ0FNLEVBQUEsRUFDQU8sRUFBQSxDQUNGLENBQUMsRUFFREcsRUFBQUEsWUFBWSxJQUFNLFNBQ2hCLE9BQU8sb0JBQW9CLFNBQVVoQixDQUFVLEdBQy9DVyxFQUFBL0IsRUFBYyxRQUFkLE1BQUErQixFQUFxQixjQUNyQk0sRUFBQXBDLEVBQWEsUUFBYixNQUFBb0MsRUFBb0IsWUFDdEIsQ0FBQyxFQUVEQyxFQUFBQSxVQUFVLElBQU0sQ0FDZGxCLEVBQUEsQ0FDRixDQUFDLEVBRUQ5QyxFQUFBQSxNQUFNOEIsRUFBYyxJQUFNLENBQ3hCakIsRUFBSyxjQUFlaUIsRUFBYSxLQUFLLENBQ3hDLENBQUMsdzBNQ2hNVW1DLEVBQWEsQ0FDeEIsUUFBUyxVQUNULE1BQU8sUUFDUCxXQUFZLFlBQ2QsbUVDNEJRQyxHQUFlLHVUQUhmQyxFQUFVcEUsRUFBQUEsSUFBQSxFQUNWcUUsRUFBTXJFLEVBQUFBLElBQUEsRUFJTnNFLEVBQXFCQyxFQUFBQSxTQUFpQixJQUFNLENBQ2hELE9BQVFyRSxFQUFNLFVBQUEsQ0FDWixLQUFLZ0UsRUFBVyxRQUNkLE9BQU9sRixFQUFJLE9BQU8sUUFDcEIsS0FBS2tGLEVBQVcsTUFDZCxPQUFPbEYsRUFBSSxPQUFPLE1BQ3BCLEtBQUtrRixFQUFXLFdBQ2QsT0FBT2xGLEVBQUksT0FBTyxXQUNwQixRQUNFLE9BQU9rRixFQUFXLEtBQUEsQ0FFeEIsQ0FBQyxFQUVLTSxFQUFzQixJQUFNLFNBQ2hDLE1BQU1DLEdBQWFmLEVBQUFXLEVBQUksUUFBSixZQUFBWCxFQUFXLFdBQ3hCZ0IsR0FBZ0JWLEVBQUFJLEVBQVEsUUFBUixZQUFBSixFQUFlLGNBQWMsa0JBQWtCUyxDQUFVLE1BRTNFQSxHQUFjQyxFQUNoQkEsRUFBYyxPQUFTUCxHQUNkRSxFQUFJLFFBQ2JBLEVBQUksTUFBTSxJQUFNRixHQUVwQiw0dUZDM0JNUSxFQUFZSixFQUFBQSxTQUFTLElBQU1yRSxFQUFNLFNBQVdBLEVBQU0sYUFBYSxrcEVDTi9EMEUsRUFBVTVFLEVBQUFBLElBQUlFLEVBQU0sT0FBTyxFQUVqQ0QsT0FBQUEsRUFBQUEsTUFDRSxJQUFNQyxFQUFNLFFBQ1osQ0FBQzJFLEVBQVVDLElBQWEsRUFDbEJELElBQWFDLEdBQVlELElBQWFELEVBQVEsU0FDaERBLEVBQVEsTUFBUUMsRUFFcEIsQ0FBQSwyOUNDbkJTRSxHQUFzQiw4QkFFdEJDLEdBQVUsQ0FDckIsUUFBUyxHQUNULE1BQU8sRUFDVCxFQUVhQyxHQUFlQyxHQUNsQkMsR0FBb0MsQ0FDMUMsSUFBSUMsRUFBU0osR0FFYixPQUFLRyxFQUFNLEtBQUEsRUFBTyxNQUFNRCxDQUFNLElBQzVCRSxFQUFTLENBQ1AsUUFBU0wsR0FDVCxNQUFPLEVBQUEsR0FJSkssQ0FDVCxFQUdXQyxHQUFrQixDQUFDQyxFQUFpQ0MsSUFFM0QsT0FBT0QsR0FBbUIsVUFBWUEsRUFBZSxPQUFTLEVBQVVBLEVBRXJFLE9BQU9DLEdBQWlCLFVBQVlBLEVBQWEsT0FBUyxFQUFJQSxFQUFlUixHQUd6RVMsR0FBbUIsQ0FBQ0YsRUFBaUNDLElBQ2hFRCxJQUFtQixJQUFTQyxJQUFpQixHQUVsQ0UsR0FBd0IsQ0FBQyxDQUFFLFVBQUFDLEVBQVcsVUFBQUMsRUFBVyxTQUFBQyxFQUFVLE1BQUFULEtBQThCLENBQ3BHLE1BQU1VLEVBQXVCVixFQUFNLFNBQVcsR0FBSyxDQUFDUyxFQUM5Q0UsRUFBWUosR0FBYVAsRUFBTSxPQUFTTyxFQUc5QyxNQUFPLEVBRlksQ0FBQ0csR0FBd0JGLEdBQWFSLEVBQU0sT0FBU1EsSUFFbEQsQ0FBQ0csQ0FDekIsRUF1RGFDLEdBQXdCLENBQUMsQ0FDcEMsTUFBQUMsRUFDQSxlQUFBVixFQUNBLFVBQUFJLEVBQ0EsVUFBQUMsRUFDQSxTQUFBQyxFQUFXLEdBQ1gsV0FBQUssRUFDQSxNQUFBZCxDQUNGLElBUU0sQ0FLSixHQUZBYSxFQUFNLE1BQVFWLEdBQWtDLEdBRTVDLENBQUNVLEVBQU0sT0FBU0MsRUFBWSxDQUM5QixNQUFNQyxFQUFhQyxJQUFpQmhCLEdBQUEsWUFBQUEsRUFBTyxRQUFTLEdBQUljLENBQVUsRUFFN0RDLEVBQVcsUUFDZEYsRUFBTSxNQUFRRSxFQUFXLFFBRTdCLENBRUEsR0FBSSxDQUFDRixFQUFNLFFBQVVOLEdBQWFDLEdBQVksQ0FDNUMsTUFBTVMsRUFBbUJDLEdBQWUsQ0FDdEMsVUFBQVgsRUFDQSxVQUFBQyxFQUNBLFNBQUFDLEVBQ0EsT0FBT1QsR0FBQSxZQUFBQSxFQUFPLFFBQVMsRUFBQSxDQUN4QixFQUVJaUIsRUFBaUIsUUFDcEJKLEVBQU0sTUFBUUksRUFBaUIsUUFFbkMsQ0FDRixFQWtCYUMsR0FBaUIsQ0FBQyxDQUM3QixVQUFBWCxFQUNBLFVBQUFDLEVBQ0EsU0FBQUMsRUFBVyxHQUNYLE1BQUFULENBQ0YsSUFBMEMsQ0FDeEMsTUFBTW1CLEVBQVcsQ0FDZixRQUFTLEdBQ1QsTUFBTyxFQUFBLEVBVVQsT0FQQUEsRUFBUyxNQUFRYixHQUFzQixDQUNyQyxVQUFBQyxFQUNBLFVBQUFDLEVBQ0EsU0FBQUMsRUFDQSxNQUFBVCxDQUFBLENBQ0QsRUFFR21CLEVBQVMsUUFFYkEsRUFBUyxRQUFVdkIsR0FFZlcsR0FBYUMsRUFDZlcsRUFBUyxRQUFVLGdDQUFnQ1gsQ0FBUyxRQUFRRCxDQUFTLHlCQUNwRUEsRUFDVFksRUFBUyxRQUFVLHFDQUFxQ1osQ0FBUyx5QkFDeERDLElBQ1RXLEVBQVMsUUFBVSxxQ0FBcUNYLENBQVMsMkJBRzVEVyxDQUNULEVBRU8sU0FBU0gsR0FBaUJoQixFQUFlYyxFQUF1RSxDQUNySCxVQUFXTSxLQUFhTixFQUFZLENBQ2xDLE1BQU1DLEVBQWFLLEVBQVVwQixDQUFLLEVBQ2xDLEdBQUksQ0FBQ2UsRUFBVyxNQUNkLE9BQU9BLENBRVgsQ0FFQSxNQUFPLENBQ0wsUUFBUyxHQUNULE1BQU8sRUFBQSxDQUVYLDhjQ3RMUUYsRUFBUWhHLEVBQUFBLElBQUlFLEVBQU0sS0FBSyxFQUN2QnNHLEVBQVd4RyxFQUFBQSxJQUFJLEVBQUssRUFDcEJSLEVBQVFRLEVBQUFBLElBQThCLElBQUksRUFDMUM0RixFQUFXNUYsRUFBQUEsSUFBSUUsRUFBTSxRQUFRLEVBQzdCaUYsRUFBUW5GLEVBQUFBLElBQXdCRSxFQUFNLEtBQUssRUFFM0N1RyxFQUFlbEMsRUFBQUEsU0FBUyxJQUFNYyxHQUFnQm5GLEVBQU0sTUFBTzhGLEVBQU0sS0FBSyxDQUFDLEVBQ3ZFVSxFQUFpQm5DLEVBQUFBLFNBQVMsSUFBT3JFLEVBQU0sU0FBVyxHQUFHQSxFQUFNLEtBQUssS0FBT0EsRUFBTSxLQUFNLEVBQ25GeUcsRUFBV3BDLEVBQUFBLFNBQVMsSUFBT3JFLEVBQU0sVUFBWSxDQUFDaUYsRUFBTSxPQUFVSyxHQUFpQlEsRUFBTSxNQUFPOUYsRUFBTSxLQUFLLENBQUMsRUFDeEcwRyxFQUFlckMsRUFBQUEsU0FBUyxJQUFNaUMsRUFBUyxPQUFTLENBQUNLLEVBQVEsS0FBSyxFQUM5REEsRUFBVXRDLEVBQUFBLFNBQVMsSUFBTVksRUFBTSxRQUFVLE1BQVMsRUFFbEQyQixFQUFnQixJQUFNLE9BQzFCLE1BQU1DLEVBQVEsSUFBSSxXQUFXLFdBQVcsR0FDeENyRCxFQUFBbEUsR0FBQSxZQUFBQSxFQUFPLFFBQVAsTUFBQWtFLEVBQWMsY0FBY3FELEVBQzlCLEVBRU1DLEVBQWMsSUFBTSxDQUN4QlIsRUFBUyxNQUFRLEVBQ25CLEVBRU1TLEVBQWlCLElBQU0sQ0FDM0JULEVBQVMsTUFBUSxFQUNuQixFQUVBdkcsT0FBQUEsRUFBQUEsTUFDRSxJQUFNQyxFQUFNLE1BQ1osQ0FBQzJFLEVBQVVDLElBQWEsRUFDbEJELElBQWFDLEdBQVlELElBQWFNLEVBQU0sU0FDOUNBLEVBQU0sTUFBUU4sRUFFbEIsQ0FBQSxFQUdGcUMsRUFBYSxDQUFFLE1BQUFsQixFQUFPLE1BQUFiLEVBQU8sdzRHQzdEbEJnQyxHQUFrQixDQUM3QixLQUFNLE9BQ04sZUFBZ0IsaUJBQ2hCLE1BQU8sUUFDUCxNQUFPLFFBQ1AsT0FBUSxTQUNSLFNBQVUsV0FDVixPQUFRLFNBQ1IsSUFBSyxNQUNMLEtBQU0sT0FDTixLQUFNLE9BQ04sSUFBSyxNQUNMLEtBQU0sTUFDUixpc0JDMkNRbkIsRUFBUWhHLEVBQUFBLElBQUlFLEVBQU0sS0FBSyxFQUN2QnNHLEVBQVd4RyxFQUFBQSxJQUFJLEVBQUssRUFDcEJSLEVBQVFRLEVBQUFBLElBQTZCLElBQUksRUFDekNvSCxFQUFlcEgsRUFBQUEsSUFBSSxFQUFLLEVBQ3hCbUYsRUFBUW5GLEVBQUFBLElBQUlFLEVBQU0sS0FBSyxFQUV2QnVHLEVBQWVsQyxFQUFBQSxTQUFTLElBQU1jLEdBQWdCbkYsRUFBTSxNQUFPOEYsRUFBTSxLQUFLLENBQUMsRUFDdkVVLEVBQWlCbkMsRUFBQUEsU0FBUyxJQUFPckUsRUFBTSxVQUFZQSxFQUFNLE1BQVEsR0FBR0EsRUFBTSxLQUFLLEtBQU9BLEVBQU0sS0FBTSxFQUNsR21ILEVBQVc5QyxFQUFBQSxTQUFTLElBQU1yRSxFQUFNLFVBQVlpRixFQUFNLEtBQUssRUFDdkR3QixFQUFXcEMsRUFBQUEsU0FDZixJQUFPckUsRUFBTSxVQUFZaUYsRUFBTSxRQUFVLFFBQWEsQ0FBQ0EsRUFBTSxPQUFVSyxHQUFpQlEsRUFBTSxNQUFPOUYsRUFBTSxLQUFLLENBQUEsRUFFNUcwRyxFQUFlckMsRUFBQUEsU0FBUyxJQUFNaUMsRUFBUyxPQUFTLENBQUNLLEVBQVEsS0FBSyxFQUM5REEsRUFBVXRDLEVBQUFBLFNBQVMsSUFBTVksRUFBTSxRQUFVLElBQU1BLEVBQU0sUUFBVSxNQUFTLEVBQ3hFbUMsRUFBWS9DLEVBQUFBLFNBQVMsSUFDekJyRSxFQUFNLE9BQVNpSCxHQUFnQixVQUFZQyxFQUFhLFFBQVUsR0FBT0QsR0FBZ0IsS0FBT2pILEVBQU0sSUFBQSxFQUdsR3FILEVBQWMsSUFBTSxPQUN4QnBDLEVBQU0sTUFBUSxJQUNkekIsRUFBQWxFLEVBQU0sUUFBTixNQUFBa0UsRUFBYSxPQUNmLEVBRU1zRCxFQUFjLElBQU0sQ0FDeEJSLEVBQVMsTUFBUSxFQUNuQixFQUVNUyxFQUFpQixJQUFNLENBQzNCVCxFQUFTLE1BQVEsR0FFWnJCLEVBQU0sUUFDVEEsRUFBTSxNQUFRLElBR2hCcUMsRUFBQSxDQUNGLEVBRU1DLEVBQWMsSUFBTSxTQUN4QixHQUFJdkgsRUFBTSxlQUFnQixDQUN4QixNQUFNUixJQUFTc0UsR0FBQU4sRUFBQXlCLEVBQU0sUUFBTixZQUFBekIsRUFBYSxNQUFNLFNBQW5CLFlBQUFNLEVBQTJCLEtBQUssTUFBTyxPQUV0RG1CLEVBQU0sTUFBUXpGLEVBQVNRLEVBQU0sZUFBZVIsQ0FBTSxFQUFJLEVBQ3hELENBQ0YsRUFFTThILEVBQW1CLElBQU0sQ0FDN0J6QixHQUFzQixDQUNwQixNQUFBQyxFQUNBLGVBQWdCOUYsRUFBTSxNQUN0QixVQUFXQSxFQUFNLFVBQ2pCLFVBQVdBLEVBQU0sVUFDakIsU0FBVUEsRUFBTSxTQUNoQixXQUFZQSxFQUFNLFdBQ2xCLE1BQUFpRixDQUFBLENBQ0QsQ0FDSCxFQUVNdUMsRUFBZTdDLEdBQXFCLENBQ3hDTSxFQUFNLE1BQVFOLENBQ2hCLEVBRUE1RSxPQUFBQSxFQUFBQSxNQUNFLElBQU1DLEVBQU0sTUFDWixDQUFDMkUsRUFBVUMsSUFBYSxFQUNsQkQsSUFBYUMsR0FBWUQsSUFBYU0sRUFBTSxTQUM5Q0EsRUFBTSxNQUFRTixFQUVsQixDQUFBLEVBR0ZxQyxFQUFhLENBQ1gsTUFBQWxCLEVBQ0EsU0FBVTlGLEVBQU0sU0FDaEIsWUFBQXdILEVBQ0EsTUFBQXZDLENBQUEsQ0FDRCw2aElDOUZLYSxFQUFRaEcsRUFBQUEsSUFBSUUsRUFBTSxLQUFLLEVBQ3ZCc0csRUFBV3hHLEVBQUFBLElBQUksRUFBSyxFQUNwQlIsRUFBUVEsRUFBQUEsSUFBNkIsSUFBSSxFQUN6Q21GLEVBQVFuRixFQUFBQSxJQUFJRSxFQUFNLEtBQUssRUFFdkJ1RyxFQUFlbEMsRUFBQUEsU0FBUyxJQUFNYyxHQUFnQm5GLEVBQU0sTUFBTzhGLEVBQU0sS0FBSyxDQUFDLEVBQ3ZFVSxFQUFpQm5DLEVBQUFBLFNBQVMsSUFBT3JFLEVBQU0sU0FBVyxHQUFHQSxFQUFNLEtBQUssS0FBT0EsRUFBTSxLQUFNLEVBQ25GeUcsRUFBV3BDLEVBQUFBLFNBQ2YsSUFBT3JFLEVBQU0sVUFBWWlGLEVBQU0sUUFBVSxRQUFhLENBQUNBLEVBQU0sT0FBVUssR0FBaUJRLEVBQU0sTUFBTzlGLEVBQU0sS0FBSyxDQUFBLEVBRTVHMEcsRUFBZXJDLEVBQUFBLFNBQVMsSUFBTWlDLEVBQVMsT0FBUyxDQUFDSyxFQUFRLEtBQUssRUFDOURBLEVBQVV0QyxFQUFBQSxTQUFTLElBQU1ZLEVBQU0sUUFBVSxJQUFNQSxFQUFNLFFBQVUsTUFBUyxFQUV4RTZCLEVBQWMsSUFBTSxDQUN4QlIsRUFBUyxNQUFRLEVBQ25CLEVBRU1TLEVBQWlCLElBQU0sQ0FDM0JULEVBQVMsTUFBUSxHQUVackIsRUFBTSxRQUNUQSxFQUFNLE1BQVEsR0FFbEIsRUFFTXFDLEVBQW1CLElBQ2hCekIsR0FBc0IsQ0FDM0IsTUFBQUMsRUFDQSxlQUFnQjlGLEVBQU0sTUFDdEIsVUFBV0EsRUFBTSxVQUNqQixVQUFXQSxFQUFNLFVBQ2pCLFNBQVVBLEVBQU0sU0FDaEIsTUFBQWlGLENBQUEsQ0FDRCxFQUdIbEYsT0FBQUEsRUFBQUEsTUFDRSxJQUFNQyxFQUFNLE1BQ1osQ0FBQzJFLEVBQVVDLElBQWEsRUFDbEJELElBQWFDLEdBQVlELElBQWFNLEVBQU0sU0FDOUNBLEVBQU0sTUFBUU4sRUFFbEIsQ0FBQSxFQUdGcUMsRUFBYSxDQUNYLE1BQUFsQixFQUNBLFNBQVU5RixFQUFNLFNBQ2hCLE1BQUFpRixDQUFBLENBQ0QsNGpHQ3BGVXdDLEdBQWEsQ0FDeEIsR0FBSSxLQUNKLEdBQUksS0FDSixHQUFJLEtBQ0osR0FBSSxJQUNOLEVBRWFDLEdBQVEsQ0FDbkIsR0FBSSxJQUNKLEdBQUksSUFDSixHQUFJLEtBQ0osR0FBSSxJQUNOLEVDUGFDLEdBQWdCLE1BQU9DLEdBQXNCLENBSXhELE1BQU1DLEVBQU8sU0FBUyxLQUV0QixHQUFJRCxHQUNGLEdBQUksQ0FBQ0MsRUFBSyxRQUFRLFlBQWEsQ0FDN0IsTUFBTUMsRUFBVSxPQUFPLFFBRXZCRCxFQUFLLFFBQVEsWUFBY0MsRUFBUSxTQUFBLEVBQ25DRCxFQUFLLE1BQU0sWUFBWSxtQkFBb0IsR0FBR0MsQ0FBTyxJQUFJLEVBQ3pERCxFQUFLLE1BQU0sWUFBWSxRQUFTLEdBQUcsRUFDbkNBLEVBQUssTUFBTSxZQUFZLGFBQWMsd0NBQXdDLEVBQzdFQSxFQUFLLE1BQU0sWUFBWSxhQUFjLFFBQVEsRUFDN0NBLEVBQUssTUFBTSxZQUFZLFdBQVksT0FBTyxDQUk1QyxVQUVBLE1BQU1FLFdBQUEsRUFDRixDQUFDLFNBQVMsY0FBYyxjQUFjLEVBQUcsQ0FDM0MsTUFBTUMsRUFBZSxTQUFTSCxFQUFLLFFBQVEsYUFBZSxHQUFHLEVBSzdEQSxFQUFLLE1BQU0sZUFBZSxPQUFPLEVBQ2pDQSxFQUFLLE1BQU0sZUFBZSxXQUFXLEVBQ3JDQSxFQUFLLE1BQU0sZUFBZSxXQUFXLEVBQ3JDQSxFQUFLLE1BQU0sZUFBZSxVQUFVLEVBQ3BDQSxFQUFLLE1BQU0sZUFBZSxrQkFBa0IsRUFFNUMsT0FBTyxTQUFTLENBQ2QsU0FBVSxPQUNWLElBQUtHLENBQUEsQ0FDTixFQUVELE9BQU9ILEVBQUssUUFBUSxXQUN0QixDQUVKLEVBRWFJLEdBQWUsaUJBRWZDLEdBQW1CLElBQU0sQ0FDcEMsSUFBSUMsRUFBVyxTQUFTLGVBQWVGLEVBQVksRUFDOUNFLElBQ0hBLEVBQVcsU0FBUyxjQUFjLEtBQUssRUFDdkNBLEVBQVMsR0FBS0YsR0FDZEUsRUFBUyxhQUFhLGlCQUFrQixFQUFFLEVBQzFDLFNBQVMsS0FBSyxZQUFZQSxDQUFRLEdBRXBDQSxFQUFTLE1BQU0sVUFBWSxTQUM3Qix1U0M1QlFDLEVBQWdEdEksRUFBQUEsSUFBQSxFQUNoRHVJLEVBQWtEdkksRUFBQUEsSUFBQSxFQUVsRHdJLEVBQTBCLElBQU0sUUFDcEM5RSxFQUFBNkUsRUFBWSxRQUFaLE1BQUE3RSxFQUFtQixXQUNyQixFQUVNK0UsRUFBMkIsSUFBTSxRQUNyQy9FLEVBQUE2RSxFQUFZLFFBQVosTUFBQTdFLEVBQW1CLE9BQ3JCLEVBRU1nRixFQUFxQixJQUFNLENBQy9CVCxFQUFBQSxTQUFTLElBQU0sQ0FDUkssRUFBYSxRQUNsQkEsRUFBYSxNQUFNLFVBQVksRUFDakMsQ0FBQyxDQUNILEVBRU1LLEVBQXNCLElBQU0sQ0FDNUJ6SSxFQUFNLGVBQWVZLEVBQUssT0FBTyxDQUN2QyxFQUVNOEgsRUFBdUJDLEdBQWEsQ0FDeENBLEVBQUUsZUFBQSxFQUNFM0ksRUFBTSxlQUFlWSxFQUFLLE9BQU8sQ0FDdkMsRUFFQWIsT0FBQUEsRUFBQUEsTUFDRSxJQUFNQyxFQUFNLE9BQ1gyRSxHQUFhLENBQ1AwRCxFQUFZLFFBQ2IxRCxHQUNGMkQsRUFBQSxFQUNBRSxFQUFBLEdBRUFELEVBQUEsRUFFRlosR0FBY2hELENBQVEsRUFDeEIsQ0FBQSxFQUdGZixFQUFBQSxVQUFVLElBQU0sQ0FDVjVELEVBQU0sUUFDUnNJLEVBQUEsQ0FFSixDQUFDLDJsRkMxREtNLEVBQWM5SSxFQUFBQSxJQUFJRSxFQUFNLFdBQVcsRUFFbkM2SSxFQUFvQnhFLEVBQUFBLFNBQVMsSUFBTSxJQUFJLE1BQU1yRSxFQUFNLFNBQVMsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLENBQUM4SSxFQUFPeEgsSUFBVUEsRUFBUSxDQUFDLENBQUMsRUFFdkdELEVBQWVDLEdBQWtCLENBQ3JDc0gsRUFBWSxNQUFRdEgsRUFFcEJWLEVBQUssU0FBVSxNQUFPVSxDQUFLLENBQzdCLHloQ0N4Qkl5SCxHQUFRLENBQUMsTUFBTyxRQUFTLFNBQVUsTUFBTSxFQUN6Q0MsR0FBYSxDQUFDLFFBQVMsS0FBSyxFQUM1QkMsR0FBMEJGLEdBQU0sT0FBTyxDQUFDRyxFQUFLQyxJQUFTRCxFQUFJLE9BQU9DLEVBQU1BLEVBQU8sSUFBTUgsR0FBVyxDQUFDLEVBQUdHLEVBQU8sSUFBTUgsR0FBVyxDQUFDLENBQUMsRUFBRyxFQUFFLEVBQ2xJSSxHQUFNLEtBQUssSUFDWEMsRUFBTSxLQUFLLElBQ1hDLEdBQVEsS0FBSyxNQUNiQyxHQUFRLEtBQUssTUFDYkMsRUFBZUMsSUFBTSxDQUN6QixFQUFHQSxFQUNILEVBQUdBLENBQ0wsR0FDTUMsR0FBa0IsQ0FDdEIsS0FBTSxRQUNOLE1BQU8sT0FDUCxPQUFRLE1BQ1IsSUFBSyxRQUNQLEVBQ01DLEdBQXVCLENBQzNCLE1BQU8sTUFDUCxJQUFLLE9BQ1AsRUFDQSxTQUFTQyxHQUFNQyxFQUFPNUUsRUFBTzZFLEVBQUssQ0FDaEMsT0FBT1QsRUFBSVEsRUFBT1QsR0FBSW5FLEVBQU82RSxDQUFHLENBQUMsQ0FDbkMsQ0FDQSxTQUFTQyxHQUFTOUUsRUFBTytFLEVBQU8sQ0FDOUIsT0FBTyxPQUFPL0UsR0FBVSxXQUFhQSxFQUFNK0UsQ0FBSyxFQUFJL0UsQ0FDdEQsQ0FDQSxTQUFTZ0YsR0FBUUMsRUFBVyxDQUMxQixPQUFPQSxFQUFVLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FDL0IsQ0FDQSxTQUFTQyxFQUFhRCxFQUFXLENBQy9CLE9BQU9BLEVBQVUsTUFBTSxHQUFHLEVBQUUsQ0FBQyxDQUMvQixDQUNBLFNBQVNFLEdBQWdCQyxFQUFNLENBQzdCLE9BQU9BLElBQVMsSUFBTSxJQUFNLEdBQzlCLENBQ0EsU0FBU0MsR0FBY0QsRUFBTSxDQUMzQixPQUFPQSxJQUFTLElBQU0sU0FBVyxPQUNuQyxDQUNBLFNBQVNFLEdBQVlMLEVBQVcsQ0FDOUIsTUFBTyxDQUFDLE1BQU8sUUFBUSxFQUFFLFNBQVNELEdBQVFDLENBQVMsQ0FBQyxFQUFJLElBQU0sR0FDaEUsQ0FDQSxTQUFTTSxHQUFpQk4sRUFBVyxDQUNuQyxPQUFPRSxHQUFnQkcsR0FBWUwsQ0FBUyxDQUFDLENBQy9DLENBQ0EsU0FBU08sR0FBa0JQLEVBQVdRLEVBQU9DLEVBQUssQ0FDNUNBLElBQVEsU0FDVkEsRUFBTSxJQUVSLE1BQU1DLEVBQVlULEVBQWFELENBQVMsRUFDbENXLEVBQWdCTCxHQUFpQk4sQ0FBUyxFQUMxQ1ksRUFBU1IsR0FBY08sQ0FBYSxFQUMxQyxJQUFJRSxFQUFvQkYsSUFBa0IsSUFBTUQsS0FBZUQsRUFBTSxNQUFRLFNBQVcsUUFBVSxPQUFTQyxJQUFjLFFBQVUsU0FBVyxNQUM5SSxPQUFJRixFQUFNLFVBQVVJLENBQU0sRUFBSUosRUFBTSxTQUFTSSxDQUFNLElBQ2pEQyxFQUFvQkMsR0FBcUJELENBQWlCLEdBRXJELENBQUNBLEVBQW1CQyxHQUFxQkQsQ0FBaUIsQ0FBQyxDQUNwRSxDQUtBLFNBQVNFLEdBQThCZixFQUFXLENBQ2hELE9BQU9BLEVBQVUsUUFBUSxhQUFjVSxHQUFhakIsR0FBcUJpQixDQUFTLENBQUMsQ0FDckYsQ0E2QkEsU0FBU0ksR0FBcUJkLEVBQVcsQ0FDdkMsT0FBT0EsRUFBVSxRQUFRLHlCQUEwQmYsR0FBUU8sR0FBZ0JQLENBQUksQ0FBQyxDQUNsRixDQUNBLFNBQVMrQixHQUFvQkMsRUFBUyxDQUNwQyxNQUFPLENBQ0wsSUFBSyxFQUNMLE1BQU8sRUFDUCxPQUFRLEVBQ1IsS0FBTSxFQUNOLEdBQUdBLENBQ1AsQ0FDQSxDQUNBLFNBQVNDLEdBQWlCRCxFQUFTLENBQ2pDLE9BQU8sT0FBT0EsR0FBWSxTQUFXRCxHQUFvQkMsQ0FBTyxFQUFJLENBQ2xFLElBQUtBLEVBQ0wsTUFBT0EsRUFDUCxPQUFRQSxFQUNSLEtBQU1BLENBQ1YsQ0FDQSxDQUNBLFNBQVNFLEdBQWlCQyxFQUFNLENBQzlCLEtBQU0sQ0FDSixFQUFBQyxFQUNBLEVBQUFDLEVBQ0EsTUFBQUMsRUFDQSxPQUFBQyxDQUNKLEVBQU1KLEVBQ0osTUFBTyxDQUNMLE1BQUFHLEVBQ0EsT0FBQUMsRUFDQSxJQUFLRixFQUNMLEtBQU1ELEVBQ04sTUFBT0EsRUFBSUUsRUFDWCxPQUFRRCxFQUFJRSxFQUNaLEVBQUFILEVBQ0EsRUFBQUMsQ0FDSixDQUNBLENDcElBLFNBQVNHLEdBQTJCQyxFQUFNMUIsRUFBV1MsRUFBSyxDQUN4RCxHQUFJLENBQ0YsVUFBQWtCLEVBQ0EsU0FBQUMsQ0FDSixFQUFNRixFQUNKLE1BQU1HLEVBQVd4QixHQUFZTCxDQUFTLEVBQ2hDVyxFQUFnQkwsR0FBaUJOLENBQVMsRUFDMUM4QixFQUFjMUIsR0FBY08sQ0FBYSxFQUN6QzFCLEVBQU9jLEdBQVFDLENBQVMsRUFDeEIrQixFQUFhRixJQUFhLElBQzFCRyxFQUFVTCxFQUFVLEVBQUlBLEVBQVUsTUFBUSxFQUFJQyxFQUFTLE1BQVEsRUFDL0RLLEVBQVVOLEVBQVUsRUFBSUEsRUFBVSxPQUFTLEVBQUlDLEVBQVMsT0FBUyxFQUNqRU0sRUFBY1AsRUFBVUcsQ0FBVyxFQUFJLEVBQUlGLEVBQVNFLENBQVcsRUFBSSxFQUN6RSxJQUFJSyxFQUNKLE9BQVFsRCxFQUFJLENBQ1YsSUFBSyxNQUNIa0QsRUFBUyxDQUNQLEVBQUdILEVBQ0gsRUFBR0wsRUFBVSxFQUFJQyxFQUFTLE1BQ2xDLEVBQ00sTUFDRixJQUFLLFNBQ0hPLEVBQVMsQ0FDUCxFQUFHSCxFQUNILEVBQUdMLEVBQVUsRUFBSUEsRUFBVSxNQUNuQyxFQUNNLE1BQ0YsSUFBSyxRQUNIUSxFQUFTLENBQ1AsRUFBR1IsRUFBVSxFQUFJQSxFQUFVLE1BQzNCLEVBQUdNLENBQ1gsRUFDTSxNQUNGLElBQUssT0FDSEUsRUFBUyxDQUNQLEVBQUdSLEVBQVUsRUFBSUMsRUFBUyxNQUMxQixFQUFHSyxDQUNYLEVBQ00sTUFDRixRQUNFRSxFQUFTLENBQ1AsRUFBR1IsRUFBVSxFQUNiLEVBQUdBLEVBQVUsQ0FDckIsQ0FDQSxDQUNFLE9BQVExQixFQUFhRCxDQUFTLEVBQUMsQ0FDN0IsSUFBSyxRQUNIbUMsRUFBT3hCLENBQWEsR0FBS3VCLEdBQWV6QixHQUFPc0IsRUFBYSxHQUFLLEdBQ2pFLE1BQ0YsSUFBSyxNQUNISSxFQUFPeEIsQ0FBYSxHQUFLdUIsR0FBZXpCLEdBQU9zQixFQUFhLEdBQUssR0FDakUsS0FDTixDQUNFLE9BQU9JLENBQ1QsQ0FTQSxNQUFNQyxHQUFrQixNQUFPVCxFQUFXQyxFQUFVUyxJQUFXLENBQzdELEtBQU0sQ0FDSixVQUFBckMsRUFBWSxTQUNaLFNBQUFzQyxFQUFXLFdBQ1gsV0FBQUMsRUFBYSxDQUFBLEVBQ2IsU0FBQUMsQ0FDSixFQUFNSCxFQUNFSSxFQUFrQkYsRUFBVyxPQUFPLE9BQU8sRUFDM0M5QixFQUFNLE1BQU8rQixFQUFTLE9BQVMsS0FBTyxPQUFTQSxFQUFTLE1BQU1aLENBQVEsR0FDNUUsSUFBSXBCLEVBQVEsTUFBTWdDLEVBQVMsZ0JBQWdCLENBQ3pDLFVBQUFiLEVBQ0EsU0FBQUMsRUFDQSxTQUFBVSxDQUNKLENBQUcsRUFDRyxDQUNGLEVBQUFqQixFQUNBLEVBQUFDLENBQ0osRUFBTUcsR0FBMkJqQixFQUFPUixFQUFXUyxDQUFHLEVBQ2hEaUMsRUFBb0IxQyxFQUNwQjJDLEVBQWlCLENBQUEsRUFDakJDLEVBQWEsRUFDakIsUUFBU0MsRUFBSSxFQUFHQSxFQUFJSixFQUFnQixPQUFRSSxJQUFLLENBQy9DLEtBQU0sQ0FDSixLQUFBN00sRUFDQSxHQUFBOE0sQ0FDTixFQUFRTCxFQUFnQkksQ0FBQyxFQUNmLENBQ0osRUFBR0UsRUFDSCxFQUFHQyxFQUNILEtBQUFDLEVBQ0EsTUFBQUMsQ0FDTixFQUFRLE1BQU1KLEVBQUcsQ0FDWCxFQUFBekIsRUFDQSxFQUFBQyxFQUNBLGlCQUFrQnRCLEVBQ2xCLFVBQVcwQyxFQUNYLFNBQUFKLEVBQ0EsZUFBQUssRUFDQSxNQUFBbkMsRUFDQSxTQUFBZ0MsRUFDQSxTQUFVLENBQ1IsVUFBQWIsRUFDQSxTQUFBQyxDQUNSLENBQ0EsQ0FBSyxFQUNEUCxFQUFJMEIsR0FBd0IxQixFQUM1QkMsRUFBSTBCLEdBQXdCMUIsRUFDNUJxQixFQUFpQixDQUNmLEdBQUdBLEVBQ0gsQ0FBQzNNLENBQUksRUFBRyxDQUNOLEdBQUcyTSxFQUFlM00sQ0FBSSxFQUN0QixHQUFHaU4sQ0FDWCxDQUNBLEVBQ1FDLEdBQVNOLEdBQWMsS0FDekJBLElBQ0ksT0FBT00sR0FBVSxXQUNmQSxFQUFNLFlBQ1JSLEVBQW9CUSxFQUFNLFdBRXhCQSxFQUFNLFFBQ1IxQyxFQUFRMEMsRUFBTSxRQUFVLEdBQU8sTUFBTVYsRUFBUyxnQkFBZ0IsQ0FDNUQsVUFBQWIsRUFDQSxTQUFBQyxFQUNBLFNBQUFVLENBQ1osQ0FBVyxFQUFJWSxFQUFNLE9BRVosQ0FDQyxFQUFBN0IsRUFDQSxFQUFBQyxDQUNWLEVBQVlHLEdBQTJCakIsRUFBT2tDLEVBQW1CakMsQ0FBRyxHQUU5RG9DLEVBQUksR0FFUixDQUNBLE1BQU8sQ0FDTCxFQUFBeEIsRUFDQSxFQUFBQyxFQUNBLFVBQVdvQixFQUNYLFNBQUFKLEVBQ0EsZUFBQUssQ0FDSixDQUNBLEVBVUEsZUFBZVEsR0FBZUMsRUFBT2xLLEVBQVMsQ0FDNUMsSUFBSW1LLEVBQ0FuSyxJQUFZLFNBQ2RBLEVBQVUsQ0FBQSxHQUVaLEtBQU0sQ0FDSixFQUFBbUksRUFDQSxFQUFBQyxFQUNBLFNBQUFrQixFQUNBLE1BQUFoQyxFQUNBLFNBQUE4QyxFQUNBLFNBQUFoQixDQUNKLEVBQU1jLEVBQ0UsQ0FDSixTQUFBRyxFQUFXLG9CQUNYLGFBQUFDLEVBQWUsV0FDZixlQUFBQyxFQUFpQixXQUNqQixZQUFBQyxFQUFjLEdBQ2QsUUFBQXpDLEVBQVUsQ0FDZCxFQUFNcEIsR0FBUzNHLEVBQVNrSyxDQUFLLEVBQ3JCTyxFQUFnQnpDLEdBQWlCRCxDQUFPLEVBRXhDMkMsRUFBVU4sRUFBU0ksRUFETkQsSUFBbUIsV0FBYSxZQUFjLFdBQ2JBLENBQWMsRUFDNURJLEVBQXFCMUMsR0FBaUIsTUFBTXFCLEVBQVMsZ0JBQWdCLENBQ3pFLFNBQVdhLEVBQXdCLE1BQU9iLEVBQVMsV0FBYSxLQUFPLE9BQVNBLEVBQVMsVUFBVW9CLENBQU8sS0FBTyxNQUFPUCxFQUFnQ08sRUFBVUEsRUFBUSxnQkFBbUIsTUFBT3BCLEVBQVMsb0JBQXNCLEtBQU8sT0FBU0EsRUFBUyxtQkFBbUJjLEVBQVMsUUFBUSxHQUNoUyxTQUFBQyxFQUNBLGFBQUFDLEVBQ0EsU0FBQWxCLENBQ0osQ0FBRyxDQUFDLEVBQ0lsQixFQUFPcUMsSUFBbUIsV0FBYSxDQUMzQyxFQUFBcEMsRUFDQSxFQUFBQyxFQUNBLE1BQU9kLEVBQU0sU0FBUyxNQUN0QixPQUFRQSxFQUFNLFNBQVMsTUFDM0IsRUFBTUEsRUFBTSxVQUNKc0QsRUFBZSxNQUFPdEIsRUFBUyxpQkFBbUIsS0FBTyxPQUFTQSxFQUFTLGdCQUFnQmMsRUFBUyxRQUFRLEdBQzVHUyxFQUFlLE1BQU92QixFQUFTLFdBQWEsS0FBTyxPQUFTQSxFQUFTLFVBQVVzQixDQUFZLEdBQU8sTUFBT3RCLEVBQVMsVUFBWSxLQUFPLE9BQVNBLEVBQVMsU0FBU3NCLENBQVksSUFBTyxDQUN2TCxFQUFHLEVBQ0gsRUFBRyxDQUNQLEVBQU0sQ0FDRixFQUFHLEVBQ0gsRUFBRyxDQUNQLEVBQ1FFLEVBQW9CN0MsR0FBaUJxQixFQUFTLHNEQUF3RCxNQUFNQSxFQUFTLHNEQUFzRCxDQUMvSyxTQUFBYyxFQUNBLEtBQUFsQyxFQUNBLGFBQUEwQyxFQUNBLFNBQUF4QixDQUNKLENBQUcsRUFBSWxCLENBQUksRUFDVCxNQUFPLENBQ0wsS0FBTXlDLEVBQW1CLElBQU1HLEVBQWtCLElBQU1MLEVBQWMsS0FBT0ksRUFBWSxFQUN4RixRQUFTQyxFQUFrQixPQUFTSCxFQUFtQixPQUFTRixFQUFjLFFBQVVJLEVBQVksRUFDcEcsTUFBT0YsRUFBbUIsS0FBT0csRUFBa0IsS0FBT0wsRUFBYyxNQUFRSSxFQUFZLEVBQzVGLE9BQVFDLEVBQWtCLE1BQVFILEVBQW1CLE1BQVFGLEVBQWMsT0FBU0ksRUFBWSxDQUNwRyxDQUNBLENBb0ZBLFNBQVNFLEdBQWlCdkQsRUFBV3dELEVBQWVDLEVBQW1CLENBRXJFLE9BRDJDekQsRUFBWSxDQUFDLEdBQUd5RCxFQUFrQixPQUFPbkUsR0FBYUMsRUFBYUQsQ0FBUyxJQUFNVSxDQUFTLEVBQUcsR0FBR3lELEVBQWtCLE9BQU9uRSxHQUFhQyxFQUFhRCxDQUFTLElBQU1VLENBQVMsQ0FBQyxFQUFJeUQsRUFBa0IsT0FBT25FLEdBQWFELEdBQVFDLENBQVMsSUFBTUEsQ0FBUyxHQUN4UCxPQUFPQSxHQUMzQ1UsRUFDS1QsRUFBYUQsQ0FBUyxJQUFNVSxJQUFjd0QsRUFBZ0JuRCxHQUE4QmYsQ0FBUyxJQUFNQSxFQUFZLElBRXJILEVBQ1IsQ0FDSCxDQU9BLE1BQU1vRSxHQUFnQixTQUFVbEwsRUFBUyxDQUN2QyxPQUFJQSxJQUFZLFNBQ2RBLEVBQVUsQ0FBQSxHQUVMLENBQ0wsS0FBTSxnQkFDTixRQUFBQSxFQUNBLE1BQU0sR0FBR2tLLEVBQU8sQ0FDZCxJQUFJaUIsRUFBdUJDLEVBQXdCQyxFQUNuRCxLQUFNLENBQ0osTUFBQS9ELEVBQ0EsZUFBQW1DLEVBQ0EsVUFBQTNDLEVBQ0EsU0FBQXdDLEVBQ0EsU0FBQWMsQ0FDUixFQUFVRixFQUNFLENBQ0osVUFBQW9CLEVBQVksR0FDWixVQUFBOUQsRUFDQSxrQkFBQXlELEVBQW9CcEYsR0FDcEIsY0FBQW1GLEVBQWdCLEdBQ2hCLEdBQUdPLENBQ1gsRUFBVTVFLEdBQVMzRyxFQUFTa0ssQ0FBSyxFQUNyQnNCLEVBQWVoRSxJQUFjLFFBQWF5RCxJQUFzQnBGLEdBQWFrRixHQUFpQnZELEdBQWEsS0FBTXdELEVBQWVDLENBQWlCLEVBQUlBLEVBQ3JKUSxFQUFXLE1BQU14QixHQUFlQyxFQUFPcUIsQ0FBcUIsRUFDNURHLElBQWlCUCxFQUF3QjFCLEVBQWUsZ0JBQWtCLEtBQU8sT0FBUzBCLEVBQXNCLFFBQVUsRUFDMUhRLEVBQW1CSCxFQUFhRSxDQUFZLEVBQ2xELEdBQUlDLEdBQW9CLEtBQ3RCLE1BQU8sQ0FBQSxFQUVULE1BQU1DLEVBQWlCdkUsR0FBa0JzRSxFQUFrQnJFLEVBQU8sTUFBT2dDLEVBQVMsT0FBUyxLQUFPLE9BQVNBLEVBQVMsTUFBTWMsRUFBUyxRQUFRLEVBQUUsRUFHN0ksR0FBSXRELElBQWM2RSxFQUNoQixNQUFPLENBQ0wsTUFBTyxDQUNMLFVBQVdILEVBQWEsQ0FBQyxDQUNyQyxDQUNBLEVBRU0sTUFBTUssRUFBbUIsQ0FBQ0osRUFBUzVFLEdBQVE4RSxDQUFnQixDQUFDLEVBQUdGLEVBQVNHLEVBQWUsQ0FBQyxDQUFDLEVBQUdILEVBQVNHLEVBQWUsQ0FBQyxDQUFDLENBQUMsRUFDakhFLEVBQWUsQ0FBQyxLQUFNVixFQUF5QjNCLEVBQWUsZ0JBQWtCLEtBQU8sT0FBUzJCLEVBQXVCLFlBQWMsQ0FBQSxFQUFLLENBQzlJLFVBQVdPLEVBQ1gsVUFBV0UsQ0FDbkIsQ0FBTyxFQUNLRSxFQUFnQlAsRUFBYUUsRUFBZSxDQUFDLEVBR25ELEdBQUlLLEVBQ0YsTUFBTyxDQUNMLEtBQU0sQ0FDSixNQUFPTCxFQUFlLEVBQ3RCLFVBQVdJLENBQ3ZCLEVBQ1UsTUFBTyxDQUNMLFVBQVdDLENBQ3ZCLENBQ0EsRUFFTSxNQUFNQyxFQUE4QkYsRUFBYSxJQUFJRyxHQUFLLENBQ3hELE1BQU16RSxFQUFZVCxFQUFha0YsRUFBRSxTQUFTLEVBQzFDLE1BQU8sQ0FBQ0EsRUFBRSxVQUFXekUsR0FBYThELEVBRWxDVyxFQUFFLFVBQVUsTUFBTSxFQUFHLENBQUMsRUFBRSxPQUFPLENBQUNuRyxFQUFLTyxLQUFNUCxFQUFNTyxHQUFHLENBQUMsRUFFckQ0RixFQUFFLFVBQVUsQ0FBQyxFQUFHQSxFQUFFLFNBQVMsQ0FDN0IsQ0FBQyxFQUFFLEtBQUssQ0FBQ0MsRUFBR0MsSUFBTUQsRUFBRSxDQUFDLEVBQUlDLEVBQUUsQ0FBQyxDQUFDLEVBS3ZCQyxJQUFtQmYsRUFKV1csRUFBNEIsT0FBT0MsR0FBS0EsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUd2RmxGLEVBQWFrRixFQUFFLENBQUMsQ0FBQyxFQUFJLEVBQUksQ0FBQyxFQUFFLE1BQU01RixHQUFLQSxHQUFLLENBQUMsQ0FBQyxFQUMrQixDQUFDLElBQU0sS0FBTyxPQUFTZ0YsRUFBc0IsQ0FBQyxJQUFNVyxFQUE0QixDQUFDLEVBQUUsQ0FBQyxFQUNqSyxPQUFJSSxJQUFtQnRGLEVBQ2QsQ0FDTCxLQUFNLENBQ0osTUFBTzRFLEVBQWUsRUFDdEIsVUFBV0ksQ0FDdkIsRUFDVSxNQUFPLENBQ0wsVUFBV00sQ0FDdkIsQ0FDQSxFQUVhLENBQUEsQ0FDVCxDQUNKLENBQ0EsRUEyVUEsZUFBZUMsR0FBcUJuQyxFQUFPbEssRUFBUyxDQUNsRCxLQUFNLENBQ0osVUFBQThHLEVBQ0EsU0FBQXdDLEVBQ0EsU0FBQWMsQ0FDSixFQUFNRixFQUNFM0MsRUFBTSxNQUFPK0IsRUFBUyxPQUFTLEtBQU8sT0FBU0EsRUFBUyxNQUFNYyxFQUFTLFFBQVEsR0FDL0VyRSxFQUFPYyxHQUFRQyxDQUFTLEVBQ3hCVSxFQUFZVCxFQUFhRCxDQUFTLEVBQ2xDK0IsRUFBYTFCLEdBQVlMLENBQVMsSUFBTSxJQUN4Q3dGLEVBQWdCLENBQUMsT0FBUSxLQUFLLEVBQUUsU0FBU3ZHLENBQUksRUFBSSxHQUFLLEVBQ3REd0csRUFBaUJoRixHQUFPc0IsRUFBYSxHQUFLLEVBQzFDMkQsRUFBVzdGLEdBQVMzRyxFQUFTa0ssQ0FBSyxFQUd4QyxHQUFJLENBQ0YsU0FBQXVDLEVBQ0EsVUFBQW5CLEVBQ0EsY0FBQTdELENBQ0osRUFBTSxPQUFPK0UsR0FBYSxTQUFXLENBQ2pDLFNBQVVBLEVBQ1YsVUFBVyxFQUNYLGNBQWUsSUFDbkIsRUFBTSxDQUNGLFNBQVVBLEVBQVMsVUFBWSxFQUMvQixVQUFXQSxFQUFTLFdBQWEsRUFDakMsY0FBZUEsRUFBUyxhQUM1QixFQUNFLE9BQUloRixHQUFhLE9BQU9DLEdBQWtCLFdBQ3hDNkQsRUFBWTlELElBQWMsTUFBUUMsRUFBZ0IsR0FBS0EsR0FFbERvQixFQUFhLENBQ2xCLEVBQUd5QyxFQUFZaUIsRUFDZixFQUFHRSxFQUFXSCxDQUNsQixFQUFNLENBQ0YsRUFBR0csRUFBV0gsRUFDZCxFQUFHaEIsRUFBWWlCLENBQ25CLENBQ0EsQ0FTQSxNQUFNRyxHQUFTLFNBQVUxTSxFQUFTLENBQ2hDLE9BQUlBLElBQVksU0FDZEEsRUFBVSxHQUVMLENBQ0wsS0FBTSxTQUNOLFFBQUFBLEVBQ0EsTUFBTSxHQUFHa0ssRUFBTyxDQUNkLElBQUl5QyxFQUF1QkMsRUFDM0IsS0FBTSxDQUNKLEVBQUF6RSxFQUNBLEVBQUFDLEVBQ0EsVUFBQXRCLEVBQ0EsZUFBQTJDLENBQ1IsRUFBVVMsRUFDRTJDLEVBQWEsTUFBTVIsR0FBcUJuQyxFQUFPbEssQ0FBTyxFQUk1RCxPQUFJOEcsTUFBZ0I2RixFQUF3QmxELEVBQWUsU0FBVyxLQUFPLE9BQVNrRCxFQUFzQixhQUFlQyxFQUF3Qm5ELEVBQWUsUUFBVSxNQUFRbUQsRUFBc0IsZ0JBQ2pNLENBQUEsRUFFRixDQUNMLEVBQUd6RSxFQUFJMEUsRUFBVyxFQUNsQixFQUFHekUsRUFBSXlFLEVBQVcsRUFDbEIsS0FBTSxDQUNKLEdBQUdBLEVBQ0gsVUFBQS9GLENBQ1YsQ0FDQSxDQUNJLENBQ0osQ0FDQSxFQU9NZ0csR0FBUSxTQUFVOU0sRUFBUyxDQUMvQixPQUFJQSxJQUFZLFNBQ2RBLEVBQVUsQ0FBQSxHQUVMLENBQ0wsS0FBTSxRQUNOLFFBQUFBLEVBQ0EsTUFBTSxHQUFHa0ssRUFBTyxDQUNkLEtBQU0sQ0FDSixFQUFBL0IsRUFDQSxFQUFBQyxFQUNBLFVBQUF0QixDQUNSLEVBQVVvRCxFQUNFLENBQ0osU0FBVTZDLEVBQWdCLEdBQzFCLFVBQVdDLEVBQWlCLEdBQzVCLFFBQUFDLEVBQVUsQ0FDUixHQUFJekUsR0FBUSxDQUNWLEdBQUksQ0FDRixFQUFBTCxFQUNBLEVBQUFDLENBQ2QsRUFBZ0JJLEVBQ0osTUFBTyxDQUNMLEVBQUFMLEVBQ0EsRUFBQUMsQ0FDZCxDQUNVLENBQ1YsRUFDUSxHQUFHbUQsQ0FDWCxFQUFVNUUsR0FBUzNHLEVBQVNrSyxDQUFLLEVBQ3JCakIsRUFBUyxDQUNiLEVBQUFkLEVBQ0EsRUFBQUMsQ0FDUixFQUNZcUQsRUFBVyxNQUFNeEIsR0FBZUMsRUFBT3FCLENBQXFCLEVBQzVERCxFQUFZbkUsR0FBWU4sR0FBUUMsQ0FBUyxDQUFDLEVBQzFDMkYsRUFBV3pGLEdBQWdCc0UsQ0FBUyxFQUMxQyxJQUFJNEIsRUFBZ0JqRSxFQUFPd0QsQ0FBUSxFQUMvQlUsRUFBaUJsRSxFQUFPcUMsQ0FBUyxFQUNyQyxHQUFJeUIsRUFBZSxDQUNqQixNQUFNSyxFQUFVWCxJQUFhLElBQU0sTUFBUSxPQUNyQ1ksRUFBVVosSUFBYSxJQUFNLFNBQVcsUUFDeEN6RyxFQUFNa0gsRUFBZ0J6QixFQUFTMkIsQ0FBTyxFQUN0Q25ILEVBQU1pSCxFQUFnQnpCLEVBQVM0QixDQUFPLEVBQzVDSCxFQUFnQjFHLEdBQU1SLEVBQUtrSCxFQUFlakgsQ0FBRyxDQUMvQyxDQUNBLEdBQUkrRyxFQUFnQixDQUNsQixNQUFNSSxFQUFVOUIsSUFBYyxJQUFNLE1BQVEsT0FDdEMrQixFQUFVL0IsSUFBYyxJQUFNLFNBQVcsUUFDekN0RixFQUFNbUgsRUFBaUIxQixFQUFTMkIsQ0FBTyxFQUN2Q25ILEVBQU1rSCxFQUFpQjFCLEVBQVM0QixDQUFPLEVBQzdDRixFQUFpQjNHLEdBQU1SLEVBQUttSCxFQUFnQmxILENBQUcsQ0FDakQsQ0FDQSxNQUFNcUgsRUFBZ0JMLEVBQVEsR0FBRyxDQUMvQixHQUFHL0MsRUFDSCxDQUFDdUMsQ0FBUSxFQUFHUyxFQUNaLENBQUM1QixDQUFTLEVBQUc2QixDQUNyQixDQUFPLEVBQ0QsTUFBTyxDQUNMLEdBQUdHLEVBQ0gsS0FBTSxDQUNKLEVBQUdBLEVBQWMsRUFBSW5GLEVBQ3JCLEVBQUdtRixFQUFjLEVBQUlsRixFQUNyQixRQUFTLENBQ1AsQ0FBQ3FFLENBQVEsRUFBR00sRUFDWixDQUFDekIsQ0FBUyxFQUFHMEIsQ0FDekIsQ0FDQSxDQUNBLENBQ0ksQ0FDSixDQUNBLEVDdDNCQSxTQUFTTyxJQUFZLENBQ25CLE9BQU8sT0FBTyxPQUFXLEdBQzNCLENBQ0EsU0FBU0MsRUFBWUMsRUFBTSxDQUN6QixPQUFJQyxHQUFPRCxDQUFJLEdBQ0xBLEVBQUssVUFBWSxJQUFJLFlBQVcsRUFLbkMsV0FDVCxDQUNBLFNBQVNFLEVBQVVGLEVBQU0sQ0FDdkIsSUFBSUcsRUFDSixPQUFRSCxHQUFRLE9BQVNHLEVBQXNCSCxFQUFLLGdCQUFrQixLQUFPLE9BQVNHLEVBQW9CLGNBQWdCLE1BQzVILENBQ0EsU0FBU0MsRUFBbUJKLEVBQU0sQ0FDaEMsSUFBSWpGLEVBQ0osT0FBUUEsR0FBUWtGLEdBQU9ELENBQUksRUFBSUEsRUFBSyxjQUFnQkEsRUFBSyxXQUFhLE9BQU8sV0FBYSxLQUFPLE9BQVNqRixFQUFLLGVBQ2pILENBQ0EsU0FBU2tGLEdBQU83TCxFQUFPLENBQ3JCLE9BQUswTCxHQUFTLEVBR1AxTCxhQUFpQixNQUFRQSxhQUFpQjhMLEVBQVU5TCxDQUFLLEVBQUUsS0FGekQsRUFHWCxDQUNBLFNBQVNpTSxFQUFVak0sRUFBTyxDQUN4QixPQUFLMEwsR0FBUyxFQUdQMUwsYUFBaUIsU0FBV0EsYUFBaUI4TCxFQUFVOUwsQ0FBSyxFQUFFLFFBRjVELEVBR1gsQ0FDQSxTQUFTa00sRUFBY2xNLEVBQU8sQ0FDNUIsT0FBSzBMLEdBQVMsRUFHUDFMLGFBQWlCLGFBQWVBLGFBQWlCOEwsRUFBVTlMLENBQUssRUFBRSxZQUZoRSxFQUdYLENBQ0EsU0FBU21NLEdBQWFuTSxFQUFPLENBQzNCLE1BQUksQ0FBQzBMLEdBQVMsR0FBTSxPQUFPLFdBQWUsSUFDakMsR0FFRjFMLGFBQWlCLFlBQWNBLGFBQWlCOEwsRUFBVTlMLENBQUssRUFBRSxVQUMxRSxDQUNBLFNBQVNvTSxHQUFrQnZELEVBQVMsQ0FDbEMsS0FBTSxDQUNKLFNBQUFlLEVBQ0EsVUFBQXlDLEVBQ0EsVUFBQUMsRUFDQSxRQUFBQyxDQUNKLEVBQU1DLEVBQWlCM0QsQ0FBTyxFQUM1QixNQUFPLGtDQUFrQyxLQUFLZSxFQUFXMEMsRUFBWUQsQ0FBUyxHQUFLLENBQUMsQ0FBQyxTQUFVLFVBQVUsRUFBRSxTQUFTRSxDQUFPLENBQzdILENBQ0EsU0FBU0UsR0FBZTVELEVBQVMsQ0FDL0IsTUFBTyxDQUFDLFFBQVMsS0FBTSxJQUFJLEVBQUUsU0FBUzhDLEVBQVk5QyxDQUFPLENBQUMsQ0FDNUQsQ0FDQSxTQUFTNkQsR0FBVzdELEVBQVMsQ0FDM0IsTUFBTyxDQUFDLGdCQUFpQixRQUFRLEVBQUUsS0FBSzhELEdBQVksQ0FDbEQsR0FBSSxDQUNGLE9BQU85RCxFQUFRLFFBQVE4RCxDQUFRLENBQ2pDLE1BQVksQ0FDVixNQUFPLEVBQ1QsQ0FDRixDQUFDLENBQ0gsQ0FDQSxTQUFTQyxHQUFrQkMsRUFBYyxDQUN2QyxNQUFNQyxFQUFTQyxHQUFRLEVBQ2pCQyxFQUFNZixFQUFVWSxDQUFZLEVBQUlMLEVBQWlCSyxDQUFZLEVBQUlBLEVBSXZFLE1BQU8sQ0FBQyxZQUFhLFlBQWEsUUFBUyxTQUFVLGFBQWEsRUFBRSxLQUFLN00sR0FBU2dOLEVBQUloTixDQUFLLEVBQUlnTixFQUFJaE4sQ0FBSyxJQUFNLE9BQVMsRUFBSyxJQUFNZ04sRUFBSSxjQUFnQkEsRUFBSSxnQkFBa0IsU0FBVyxLQUFVLENBQUNGLElBQVdFLEVBQUksZUFBaUJBLEVBQUksaUJBQW1CLE9BQVMsS0FBVSxDQUFDRixJQUFXRSxFQUFJLE9BQVNBLEVBQUksU0FBVyxPQUFTLEtBQVUsQ0FBQyxZQUFhLFlBQWEsUUFBUyxTQUFVLGNBQWUsUUFBUSxFQUFFLEtBQUtoTixJQUFVZ04sRUFBSSxZQUFjLElBQUksU0FBU2hOLENBQUssQ0FBQyxHQUFLLENBQUMsUUFBUyxTQUFVLFNBQVUsU0FBUyxFQUFFLEtBQUtBLElBQVVnTixFQUFJLFNBQVcsSUFBSSxTQUFTaE4sQ0FBSyxDQUFDLENBQ25pQixDQUNBLFNBQVNpTixHQUFtQnBFLEVBQVMsQ0FDbkMsSUFBSXFFLEVBQWNDLEVBQWN0RSxDQUFPLEVBQ3ZDLEtBQU9xRCxFQUFjZ0IsQ0FBVyxHQUFLLENBQUNFLEdBQXNCRixDQUFXLEdBQUcsQ0FDeEUsR0FBSU4sR0FBa0JNLENBQVcsRUFDL0IsT0FBT0EsRUFDRixHQUFJUixHQUFXUSxDQUFXLEVBQy9CLE9BQU8sS0FFVEEsRUFBY0MsRUFBY0QsQ0FBVyxDQUN6QyxDQUNBLE9BQU8sSUFDVCxDQUNBLFNBQVNILElBQVcsQ0FDbEIsT0FBSSxPQUFPLElBQVEsS0FBZSxDQUFDLElBQUksU0FBaUIsR0FDakQsSUFBSSxTQUFTLDBCQUEyQixNQUFNLENBQ3ZELENBQ0EsU0FBU0ssR0FBc0J4QixFQUFNLENBQ25DLE1BQU8sQ0FBQyxPQUFRLE9BQVEsV0FBVyxFQUFFLFNBQVNELEVBQVlDLENBQUksQ0FBQyxDQUNqRSxDQUNBLFNBQVNZLEVBQWlCM0QsRUFBUyxDQUNqQyxPQUFPaUQsRUFBVWpELENBQU8sRUFBRSxpQkFBaUJBLENBQU8sQ0FDcEQsQ0FDQSxTQUFTd0UsR0FBY3hFLEVBQVMsQ0FDOUIsT0FBSW9ELEVBQVVwRCxDQUFPLEVBQ1osQ0FDTCxXQUFZQSxFQUFRLFdBQ3BCLFVBQVdBLEVBQVEsU0FDekIsRUFFUyxDQUNMLFdBQVlBLEVBQVEsUUFDcEIsVUFBV0EsRUFBUSxPQUN2QixDQUNBLENBQ0EsU0FBU3NFLEVBQWN2QixFQUFNLENBQzNCLEdBQUlELEVBQVlDLENBQUksSUFBTSxPQUN4QixPQUFPQSxFQUVULE1BQU0zTCxFQUVOMkwsRUFBSyxjQUVMQSxFQUFLLFlBRUxPLEdBQWFQLENBQUksR0FBS0EsRUFBSyxNQUUzQkksRUFBbUJKLENBQUksRUFDdkIsT0FBT08sR0FBYWxNLENBQU0sRUFBSUEsRUFBTyxLQUFPQSxDQUM5QyxDQUNBLFNBQVNxTixHQUEyQjFCLEVBQU0sQ0FDeEMsTUFBTTJCLEVBQWFKLEVBQWN2QixDQUFJLEVBQ3JDLE9BQUl3QixHQUFzQkcsQ0FBVSxFQUMzQjNCLEVBQUssY0FBZ0JBLEVBQUssY0FBYyxLQUFPQSxFQUFLLEtBRXpETSxFQUFjcUIsQ0FBVSxHQUFLbkIsR0FBa0JtQixDQUFVLEVBQ3BEQSxFQUVGRCxHQUEyQkMsQ0FBVSxDQUM5QyxDQUNBLFNBQVNDLEdBQXFCNUIsRUFBTTZCLEVBQU1DLEVBQWlCLENBQ3pELElBQUlDLEVBQ0FGLElBQVMsU0FDWEEsRUFBTyxDQUFBLEdBRUxDLElBQW9CLFNBQ3RCQSxFQUFrQixJQUVwQixNQUFNRSxFQUFxQk4sR0FBMkIxQixDQUFJLEVBQ3BEaUMsRUFBU0QsTUFBeUJELEVBQXVCL0IsRUFBSyxnQkFBa0IsS0FBTyxPQUFTK0IsRUFBcUIsTUFDckhHLEVBQU1oQyxFQUFVOEIsQ0FBa0IsRUFDeEMsR0FBSUMsRUFBUSxDQUNWLE1BQU1FLEVBQWVDLEdBQWdCRixDQUFHLEVBQ3hDLE9BQU9MLEVBQUssT0FBT0ssRUFBS0EsRUFBSSxnQkFBa0IsQ0FBQSxFQUFJMUIsR0FBa0J3QixDQUFrQixFQUFJQSxFQUFxQixDQUFBLEVBQUlHLEdBQWdCTCxFQUFrQkYsR0FBcUJPLENBQVksRUFBSSxFQUFFLENBQzlMLENBQ0EsT0FBT04sRUFBSyxPQUFPRyxFQUFvQkosR0FBcUJJLEVBQW9CLENBQUEsRUFBSUYsQ0FBZSxDQUFDLENBQ3RHLENBQ0EsU0FBU00sR0FBZ0JGLEVBQUssQ0FDNUIsT0FBT0EsRUFBSSxRQUFVLE9BQU8sZUFBZUEsRUFBSSxNQUFNLEVBQUlBLEVBQUksYUFBZSxJQUM5RSxDQ2xKQSxTQUFTRyxHQUFpQnBGLEVBQVMsQ0FDakMsTUFBTW1FLEVBQU1SLEVBQWlCM0QsQ0FBTyxFQUdwQyxJQUFJckMsRUFBUSxXQUFXd0csRUFBSSxLQUFLLEdBQUssRUFDakN2RyxFQUFTLFdBQVd1RyxFQUFJLE1BQU0sR0FBSyxFQUN2QyxNQUFNa0IsRUFBWWhDLEVBQWNyRCxDQUFPLEVBQ2pDc0YsRUFBY0QsRUFBWXJGLEVBQVEsWUFBY3JDLEVBQ2hENEgsRUFBZUYsRUFBWXJGLEVBQVEsYUFBZXBDLEVBQ2xENEgsRUFBaUJoSyxHQUFNbUMsQ0FBSyxJQUFNMkgsR0FBZTlKLEdBQU1vQyxDQUFNLElBQU0ySCxFQUN6RSxPQUFJQyxJQUNGN0gsRUFBUTJILEVBQ1IxSCxFQUFTMkgsR0FFSixDQUNMLE1BQUE1SCxFQUNBLE9BQUFDLEVBQ0EsRUFBRzRILENBQ1AsQ0FDQSxDQUVBLFNBQVNDLEdBQWN6RixFQUFTLENBQzlCLE9BQVFvRCxFQUFVcEQsQ0FBTyxFQUE2QkEsRUFBekJBLEVBQVEsY0FDdkMsQ0FFQSxTQUFTMEYsR0FBUzFGLEVBQVMsQ0FDekIsTUFBTTJGLEVBQWFGLEdBQWN6RixDQUFPLEVBQ3hDLEdBQUksQ0FBQ3FELEVBQWNzQyxDQUFVLEVBQzNCLE9BQU9qSyxFQUFhLENBQUMsRUFFdkIsTUFBTThCLEVBQU9tSSxFQUFXLHNCQUFxQixFQUN2QyxDQUNKLE1BQUFoSSxFQUNBLE9BQUFDLEVBQ0EsRUFBQWdJLENBQ0osRUFBTVIsR0FBaUJPLENBQVUsRUFDL0IsSUFBSWxJLEdBQUttSSxFQUFJcEssR0FBTWdDLEVBQUssS0FBSyxFQUFJQSxFQUFLLE9BQVNHLEVBQzNDRCxHQUFLa0ksRUFBSXBLLEdBQU1nQyxFQUFLLE1BQU0sRUFBSUEsRUFBSyxRQUFVSSxFQUlqRCxPQUFJLENBQUNILEdBQUssQ0FBQyxPQUFPLFNBQVNBLENBQUMsS0FDMUJBLEVBQUksSUFFRixDQUFDQyxHQUFLLENBQUMsT0FBTyxTQUFTQSxDQUFDLEtBQzFCQSxFQUFJLEdBRUMsQ0FDTCxFQUFBRCxFQUNBLEVBQUFDLENBQ0osQ0FDQSxDQUVBLE1BQU1tSSxHQUF5Qm5LLEVBQWEsQ0FBQyxFQUM3QyxTQUFTb0ssR0FBaUI5RixFQUFTLENBQ2pDLE1BQU1pRixFQUFNaEMsRUFBVWpELENBQU8sRUFDN0IsTUFBSSxDQUFDa0UsR0FBUSxHQUFNLENBQUNlLEVBQUksZUFDZlksR0FFRixDQUNMLEVBQUdaLEVBQUksZUFBZSxXQUN0QixFQUFHQSxFQUFJLGVBQWUsU0FDMUIsQ0FDQSxDQUNBLFNBQVNjLEdBQXVCL0YsRUFBU2dHLEVBQVNDLEVBQXNCLENBSXRFLE9BSElELElBQVksU0FDZEEsRUFBVSxJQUVSLENBQUNDLEdBQXdCRCxHQUFXQyxJQUF5QmhELEVBQVVqRCxDQUFPLEVBQ3pFLEdBRUZnRyxDQUNULENBRUEsU0FBU0UsRUFBc0JsRyxFQUFTbUcsRUFBY0MsRUFBaUJsRyxFQUFjLENBQy9FaUcsSUFBaUIsU0FDbkJBLEVBQWUsSUFFYkMsSUFBb0IsU0FDdEJBLEVBQWtCLElBRXBCLE1BQU1DLEVBQWFyRyxFQUFRLHNCQUFxQixFQUMxQzJGLEVBQWFGLEdBQWN6RixDQUFPLEVBQ3hDLElBQUlzRyxFQUFRNUssRUFBYSxDQUFDLEVBQ3RCeUssSUFDRWpHLEVBQ0VrRCxFQUFVbEQsQ0FBWSxJQUN4Qm9HLEVBQVFaLEdBQVN4RixDQUFZLEdBRy9Cb0csRUFBUVosR0FBUzFGLENBQU8sR0FHNUIsTUFBTXVHLEVBQWdCUixHQUF1QkosRUFBWVMsRUFBaUJsRyxDQUFZLEVBQUk0RixHQUFpQkgsQ0FBVSxFQUFJakssRUFBYSxDQUFDLEVBQ3ZJLElBQUkrQixHQUFLNEksRUFBVyxLQUFPRSxFQUFjLEdBQUtELEVBQU0sRUFDaEQ1SSxHQUFLMkksRUFBVyxJQUFNRSxFQUFjLEdBQUtELEVBQU0sRUFDL0MzSSxFQUFRMEksRUFBVyxNQUFRQyxFQUFNLEVBQ2pDMUksRUFBU3lJLEVBQVcsT0FBU0MsRUFBTSxFQUN2QyxHQUFJWCxFQUFZLENBQ2QsTUFBTVYsRUFBTWhDLEVBQVUwQyxDQUFVLEVBQzFCYSxFQUFZdEcsR0FBZ0JrRCxFQUFVbEQsQ0FBWSxFQUFJK0MsRUFBVS9DLENBQVksRUFBSUEsRUFDdEYsSUFBSXVHLEVBQWF4QixFQUNieUIsRUFBZ0J2QixHQUFnQnNCLENBQVUsRUFDOUMsS0FBT0MsR0FBaUJ4RyxHQUFnQnNHLElBQWNDLEdBQVksQ0FDaEUsTUFBTUUsRUFBY2pCLEdBQVNnQixDQUFhLEVBQ3BDRSxFQUFhRixFQUFjLHNCQUFxQixFQUNoRHZDLEVBQU1SLEVBQWlCK0MsQ0FBYSxFQUNwQ0csRUFBT0QsRUFBVyxNQUFRRixFQUFjLFdBQWEsV0FBV3ZDLEVBQUksV0FBVyxHQUFLd0MsRUFBWSxFQUNoR0csRUFBTUYsRUFBVyxLQUFPRixFQUFjLFVBQVksV0FBV3ZDLEVBQUksVUFBVSxHQUFLd0MsRUFBWSxFQUNsR2xKLEdBQUtrSixFQUFZLEVBQ2pCakosR0FBS2lKLEVBQVksRUFDakJoSixHQUFTZ0osRUFBWSxFQUNyQi9JLEdBQVUrSSxFQUFZLEVBQ3RCbEosR0FBS29KLEVBQ0xuSixHQUFLb0osRUFDTEwsRUFBYXhELEVBQVV5RCxDQUFhLEVBQ3BDQSxFQUFnQnZCLEdBQWdCc0IsQ0FBVSxDQUM1QyxDQUNGLENBQ0EsT0FBT2xKLEdBQWlCLENBQ3RCLE1BQUFJLEVBQ0EsT0FBQUMsRUFDQSxFQUFBSCxFQUNBLEVBQUFDLENBQ0osQ0FBRyxDQUNILENBSUEsU0FBU3FKLEdBQW9CL0csRUFBU3hDLEVBQU0sQ0FDMUMsTUFBTXdKLEVBQWF4QyxHQUFjeEUsQ0FBTyxFQUFFLFdBQzFDLE9BQUt4QyxFQUdFQSxFQUFLLEtBQU93SixFQUZWZCxFQUFzQi9DLEVBQW1CbkQsQ0FBTyxDQUFDLEVBQUUsS0FBT2dILENBR3JFLENBRUEsU0FBU0MsR0FBY0MsRUFBaUJDLEVBQVFDLEVBQWtCLENBQzVEQSxJQUFxQixTQUN2QkEsRUFBbUIsSUFFckIsTUFBTUMsRUFBV0gsRUFBZ0Isc0JBQXFCLEVBQ2hEekosRUFBSTRKLEVBQVMsS0FBT0YsRUFBTyxZQUFjQyxFQUFtQixFQUVsRUwsR0FBb0JHLEVBQWlCRyxDQUFRLEdBQ3ZDM0osRUFBSTJKLEVBQVMsSUFBTUYsRUFBTyxVQUNoQyxNQUFPLENBQ0wsRUFBQTFKLEVBQ0EsRUFBQUMsQ0FDSixDQUNBLENBRUEsU0FBUzRKLEdBQXNEeEosRUFBTSxDQUNuRSxHQUFJLENBQ0YsU0FBQTRCLEVBQ0EsS0FBQWxDLEVBQ0EsYUFBQTBDLEVBQ0EsU0FBQXhCLENBQ0osRUFBTVosRUFDSixNQUFNa0ksRUFBVXRILElBQWEsUUFDdkJ3SSxFQUFrQi9ELEVBQW1CakQsQ0FBWSxFQUNqRDdGLEVBQVdxRixFQUFXbUUsR0FBV25FLEVBQVMsUUFBUSxFQUFJLEdBQzVELEdBQUlRLElBQWlCZ0gsR0FBbUI3TSxHQUFZMkwsRUFDbEQsT0FBT3hJLEVBRVQsSUFBSTJKLEVBQVMsQ0FDWCxXQUFZLEVBQ1osVUFBVyxDQUNmLEVBQ01iLEVBQVE1SyxFQUFhLENBQUMsRUFDMUIsTUFBTTZMLEVBQVU3TCxFQUFhLENBQUMsRUFDeEI4TCxFQUEwQm5FLEVBQWNuRCxDQUFZLEVBQzFELElBQUlzSCxHQUEyQixDQUFDQSxHQUEyQixDQUFDeEIsTUFDdERsRCxFQUFZNUMsQ0FBWSxJQUFNLFFBQVVxRCxHQUFrQjJELENBQWUsS0FDM0VDLEVBQVMzQyxHQUFjdEUsQ0FBWSxHQUVqQ21ELEVBQWNuRCxDQUFZLEdBQUcsQ0FDL0IsTUFBTXVILEVBQWF2QixFQUFzQmhHLENBQVksRUFDckRvRyxFQUFRWixHQUFTeEYsQ0FBWSxFQUM3QnFILEVBQVEsRUFBSUUsRUFBVyxFQUFJdkgsRUFBYSxXQUN4Q3FILEVBQVEsRUFBSUUsRUFBVyxFQUFJdkgsRUFBYSxTQUMxQyxDQUVGLE1BQU13SCxFQUFhUixHQUFtQixDQUFDTSxHQUEyQixDQUFDeEIsRUFBVWlCLEdBQWNDLEVBQWlCQyxFQUFRLEVBQUksRUFBSXpMLEVBQWEsQ0FBQyxFQUMxSSxNQUFPLENBQ0wsTUFBTzhCLEVBQUssTUFBUThJLEVBQU0sRUFDMUIsT0FBUTlJLEVBQUssT0FBUzhJLEVBQU0sRUFDNUIsRUFBRzlJLEVBQUssRUFBSThJLEVBQU0sRUFBSWEsRUFBTyxXQUFhYixFQUFNLEVBQUlpQixFQUFRLEVBQUlHLEVBQVcsRUFDM0UsRUFBR2xLLEVBQUssRUFBSThJLEVBQU0sRUFBSWEsRUFBTyxVQUFZYixFQUFNLEVBQUlpQixFQUFRLEVBQUlHLEVBQVcsQ0FDOUUsQ0FDQSxDQUVBLFNBQVNDLEdBQWUzSCxFQUFTLENBQy9CLE9BQU8sTUFBTSxLQUFLQSxFQUFRLGVBQWMsQ0FBRSxDQUM1QyxDQUlBLFNBQVM0SCxHQUFnQjVILEVBQVMsQ0FDaEMsTUFBTTZILEVBQU8xRSxFQUFtQm5ELENBQU8sRUFDakNtSCxFQUFTM0MsR0FBY3hFLENBQU8sRUFDOUJqRyxFQUFPaUcsRUFBUSxjQUFjLEtBQzdCckMsRUFBUXBDLEVBQUlzTSxFQUFLLFlBQWFBLEVBQUssWUFBYTlOLEVBQUssWUFBYUEsRUFBSyxXQUFXLEVBQ2xGNkQsRUFBU3JDLEVBQUlzTSxFQUFLLGFBQWNBLEVBQUssYUFBYzlOLEVBQUssYUFBY0EsRUFBSyxZQUFZLEVBQzdGLElBQUkwRCxFQUFJLENBQUMwSixFQUFPLFdBQWFKLEdBQW9CL0csQ0FBTyxFQUN4RCxNQUFNdEMsRUFBSSxDQUFDeUosRUFBTyxVQUNsQixPQUFJeEQsRUFBaUI1SixDQUFJLEVBQUUsWUFBYyxRQUN2QzBELEdBQUtsQyxFQUFJc00sRUFBSyxZQUFhOU4sRUFBSyxXQUFXLEVBQUk0RCxHQUUxQyxDQUNMLE1BQUFBLEVBQ0EsT0FBQUMsRUFDQSxFQUFBSCxFQUNBLEVBQUFDLENBQ0osQ0FDQSxDQUVBLFNBQVNvSyxHQUFnQjlILEVBQVN0QixFQUFVLENBQzFDLE1BQU11RyxFQUFNaEMsRUFBVWpELENBQU8sRUFDdkI2SCxFQUFPMUUsRUFBbUJuRCxDQUFPLEVBQ2pDK0gsRUFBaUI5QyxFQUFJLGVBQzNCLElBQUl0SCxFQUFRa0ssRUFBSyxZQUNiakssRUFBU2lLLEVBQUssYUFDZHBLLEVBQUksRUFDSkMsRUFBSSxFQUNSLEdBQUlxSyxFQUFnQixDQUNsQnBLLEVBQVFvSyxFQUFlLE1BQ3ZCbkssRUFBU21LLEVBQWUsT0FDeEIsTUFBTUMsRUFBc0I5RCxHQUFRLEdBQ2hDLENBQUM4RCxHQUF1QkEsR0FBdUJ0SixJQUFhLFdBQzlEakIsRUFBSXNLLEVBQWUsV0FDbkJySyxFQUFJcUssRUFBZSxVQUV2QixDQUNBLE1BQU8sQ0FDTCxNQUFBcEssRUFDQSxPQUFBQyxFQUNBLEVBQUFILEVBQ0EsRUFBQUMsQ0FDSixDQUNBLENBR0EsU0FBU3VLLEdBQTJCakksRUFBU3RCLEVBQVUsQ0FDckQsTUFBTTJILEVBQWFILEVBQXNCbEcsRUFBUyxHQUFNdEIsSUFBYSxPQUFPLEVBQ3RFb0ksRUFBTVQsRUFBVyxJQUFNckcsRUFBUSxVQUMvQjZHLEVBQU9SLEVBQVcsS0FBT3JHLEVBQVEsV0FDakNzRyxFQUFRakQsRUFBY3JELENBQU8sRUFBSTBGLEdBQVMxRixDQUFPLEVBQUl0RSxFQUFhLENBQUMsRUFDbkVpQyxFQUFRcUMsRUFBUSxZQUFjc0csRUFBTSxFQUNwQzFJLEVBQVNvQyxFQUFRLGFBQWVzRyxFQUFNLEVBQ3RDN0ksRUFBSW9KLEVBQU9QLEVBQU0sRUFDakI1SSxFQUFJb0osRUFBTVIsRUFBTSxFQUN0QixNQUFPLENBQ0wsTUFBQTNJLEVBQ0EsT0FBQUMsRUFDQSxFQUFBSCxFQUNBLEVBQUFDLENBQ0osQ0FDQSxDQUNBLFNBQVN3SyxHQUFrQ2xJLEVBQVNtSSxFQUFrQnpKLEVBQVUsQ0FDOUUsSUFBSWxCLEVBQ0osR0FBSTJLLElBQXFCLFdBQ3ZCM0ssRUFBT3NLLEdBQWdCOUgsRUFBU3RCLENBQVEsVUFDL0J5SixJQUFxQixXQUM5QjNLLEVBQU9vSyxHQUFnQnpFLEVBQW1CbkQsQ0FBTyxDQUFDLFVBQ3pDb0QsRUFBVStFLENBQWdCLEVBQ25DM0ssRUFBT3lLLEdBQTJCRSxFQUFrQnpKLENBQVEsTUFDdkQsQ0FDTCxNQUFNNkgsRUFBZ0JULEdBQWlCOUYsQ0FBTyxFQUM5Q3hDLEVBQU8sQ0FDTCxFQUFHMkssRUFBaUIsRUFBSTVCLEVBQWMsRUFDdEMsRUFBRzRCLEVBQWlCLEVBQUk1QixFQUFjLEVBQ3RDLE1BQU80QixFQUFpQixNQUN4QixPQUFRQSxFQUFpQixNQUMvQixDQUNFLENBQ0EsT0FBTzVLLEdBQWlCQyxDQUFJLENBQzlCLENBQ0EsU0FBUzRLLEdBQXlCcEksRUFBU3FJLEVBQVUsQ0FDbkQsTUFBTTNELEVBQWFKLEVBQWN0RSxDQUFPLEVBQ3hDLE9BQUkwRSxJQUFlMkQsR0FBWSxDQUFDakYsRUFBVXNCLENBQVUsR0FBS0gsR0FBc0JHLENBQVUsRUFDaEYsR0FFRmYsRUFBaUJlLENBQVUsRUFBRSxXQUFhLFNBQVcwRCxHQUF5QjFELEVBQVkyRCxDQUFRLENBQzNHLENBS0EsU0FBU0MsR0FBNEJ0SSxFQUFTdUksRUFBTyxDQUNuRCxNQUFNQyxFQUFlRCxFQUFNLElBQUl2SSxDQUFPLEVBQ3RDLEdBQUl3SSxFQUNGLE9BQU9BLEVBRVQsSUFBSXBSLEVBQVN1TixHQUFxQjNFLEVBQVMsQ0FBQSxFQUFJLEVBQUssRUFBRSxPQUFPeUksR0FBTXJGLEVBQVVxRixDQUFFLEdBQUszRixFQUFZMkYsQ0FBRSxJQUFNLE1BQU0sRUFDMUdDLEVBQXNDLEtBQzFDLE1BQU1DLEVBQWlCaEYsRUFBaUIzRCxDQUFPLEVBQUUsV0FBYSxRQUM5RCxJQUFJcUUsRUFBY3NFLEVBQWlCckUsRUFBY3RFLENBQU8sRUFBSUEsRUFHNUQsS0FBT29ELEVBQVVpQixDQUFXLEdBQUssQ0FBQ0UsR0FBc0JGLENBQVcsR0FBRyxDQUNwRSxNQUFNdUUsRUFBZ0JqRixFQUFpQlUsQ0FBVyxFQUM1Q3dFLEVBQTBCOUUsR0FBa0JNLENBQVcsRUFDekQsQ0FBQ3dFLEdBQTJCRCxFQUFjLFdBQWEsVUFDekRGLEVBQXNDLE9BRVZDLEVBQWlCLENBQUNFLEdBQTJCLENBQUNILEVBQXNDLENBQUNHLEdBQTJCRCxFQUFjLFdBQWEsVUFBWSxDQUFDLENBQUNGLEdBQXVDLENBQUMsV0FBWSxPQUFPLEVBQUUsU0FBU0EsRUFBb0MsUUFBUSxHQUFLbkYsR0FBa0JjLENBQVcsR0FBSyxDQUFDd0UsR0FBMkJULEdBQXlCcEksRUFBU3FFLENBQVcsR0FHdlpqTixFQUFTQSxFQUFPLE9BQU8wUixHQUFZQSxJQUFhekUsQ0FBVyxFQUczRHFFLEVBQXNDRSxFQUV4Q3ZFLEVBQWNDLEVBQWNELENBQVcsQ0FDekMsQ0FDQSxPQUFBa0UsRUFBTSxJQUFJdkksRUFBUzVJLENBQU0sRUFDbEJBLENBQ1QsQ0FJQSxTQUFTMlIsR0FBZ0JqTCxFQUFNLENBQzdCLEdBQUksQ0FDRixRQUFBa0MsRUFDQSxTQUFBTCxFQUNBLGFBQUFDLEVBQ0EsU0FBQWxCLENBQ0osRUFBTVosRUFFSixNQUFNa0wsRUFBb0IsQ0FBQyxHQURNckosSUFBYSxvQkFBc0JrRSxHQUFXN0QsQ0FBTyxFQUFJLENBQUEsRUFBS3NJLEdBQTRCdEksRUFBUyxLQUFLLEVBQUUsRUFBSSxDQUFBLEVBQUcsT0FBT0wsQ0FBUSxFQUN6R0MsQ0FBWSxFQUM5RHFKLEVBQXdCRCxFQUFrQixDQUFDLEVBQzNDRSxFQUFlRixFQUFrQixPQUFPLENBQUNHLEVBQVNoQixJQUFxQixDQUMzRSxNQUFNM0ssRUFBTzBLLEdBQWtDbEksRUFBU21JLEVBQWtCekosQ0FBUSxFQUNsRixPQUFBeUssRUFBUSxJQUFNNU4sRUFBSWlDLEVBQUssSUFBSzJMLEVBQVEsR0FBRyxFQUN2Q0EsRUFBUSxNQUFRN04sR0FBSWtDLEVBQUssTUFBTzJMLEVBQVEsS0FBSyxFQUM3Q0EsRUFBUSxPQUFTN04sR0FBSWtDLEVBQUssT0FBUTJMLEVBQVEsTUFBTSxFQUNoREEsRUFBUSxLQUFPNU4sRUFBSWlDLEVBQUssS0FBTTJMLEVBQVEsSUFBSSxFQUNuQ0EsQ0FDVCxFQUFHakIsR0FBa0NsSSxFQUFTaUosRUFBdUJ2SyxDQUFRLENBQUMsRUFDOUUsTUFBTyxDQUNMLE1BQU93SyxFQUFhLE1BQVFBLEVBQWEsS0FDekMsT0FBUUEsRUFBYSxPQUFTQSxFQUFhLElBQzNDLEVBQUdBLEVBQWEsS0FDaEIsRUFBR0EsRUFBYSxHQUNwQixDQUNBLENBRUEsU0FBU0UsR0FBY3BKLEVBQVMsQ0FDOUIsS0FBTSxDQUNKLE1BQUFyQyxFQUNBLE9BQUFDLENBQ0osRUFBTXdILEdBQWlCcEYsQ0FBTyxFQUM1QixNQUFPLENBQ0wsTUFBQXJDLEVBQ0EsT0FBQUMsQ0FDSixDQUNBLENBRUEsU0FBU3lMLEdBQThCckosRUFBU0UsRUFBY3hCLEVBQVUsQ0FDdEUsTUFBTThJLEVBQTBCbkUsRUFBY25ELENBQVksRUFDcERnSCxFQUFrQi9ELEVBQW1CakQsQ0FBWSxFQUNqRDhGLEVBQVV0SCxJQUFhLFFBQ3ZCbEIsRUFBTzBJLEVBQXNCbEcsRUFBUyxHQUFNZ0csRUFBUzlGLENBQVksRUFDdkUsSUFBSWlILEVBQVMsQ0FDWCxXQUFZLEVBQ1osVUFBVyxDQUNmLEVBQ0UsTUFBTUksRUFBVTdMLEVBQWEsQ0FBQyxFQUM5QixHQUFJOEwsR0FBMkIsQ0FBQ0EsR0FBMkIsQ0FBQ3hCLEVBSTFELElBSElsRCxFQUFZNUMsQ0FBWSxJQUFNLFFBQVVxRCxHQUFrQjJELENBQWUsS0FDM0VDLEVBQVMzQyxHQUFjdEUsQ0FBWSxHQUVqQ3NILEVBQXlCLENBQzNCLE1BQU1DLEVBQWF2QixFQUFzQmhHLEVBQWMsR0FBTThGLEVBQVM5RixDQUFZLEVBQ2xGcUgsRUFBUSxFQUFJRSxFQUFXLEVBQUl2SCxFQUFhLFdBQ3hDcUgsRUFBUSxFQUFJRSxFQUFXLEVBQUl2SCxFQUFhLFNBQzFDLE1BQVdnSCxJQUdUSyxFQUFRLEVBQUlSLEdBQW9CRyxDQUFlLEdBR25ELE1BQU1RLEVBQWFSLEdBQW1CLENBQUNNLEdBQTJCLENBQUN4QixFQUFVaUIsR0FBY0MsRUFBaUJDLENBQU0sRUFBSXpMLEVBQWEsQ0FBQyxFQUM5SCtCLEVBQUlELEVBQUssS0FBTzJKLEVBQU8sV0FBYUksRUFBUSxFQUFJRyxFQUFXLEVBQzNEaEssRUFBSUYsRUFBSyxJQUFNMkosRUFBTyxVQUFZSSxFQUFRLEVBQUlHLEVBQVcsRUFDL0QsTUFBTyxDQUNMLEVBQUFqSyxFQUNBLEVBQUFDLEVBQ0EsTUFBT0YsRUFBSyxNQUNaLE9BQVFBLEVBQUssTUFDakIsQ0FDQSxDQUVBLFNBQVM4TCxHQUFtQnRKLEVBQVMsQ0FDbkMsT0FBTzJELEVBQWlCM0QsQ0FBTyxFQUFFLFdBQWEsUUFDaEQsQ0FFQSxTQUFTdUosR0FBb0J2SixFQUFTd0osRUFBVSxDQUM5QyxHQUFJLENBQUNuRyxFQUFjckQsQ0FBTyxHQUFLMkQsRUFBaUIzRCxDQUFPLEVBQUUsV0FBYSxRQUNwRSxPQUFPLEtBRVQsR0FBSXdKLEVBQ0YsT0FBT0EsRUFBU3hKLENBQU8sRUFFekIsSUFBSXlKLEVBQWtCekosRUFBUSxhQU05QixPQUFJbUQsRUFBbUJuRCxDQUFPLElBQU15SixJQUNsQ0EsRUFBa0JBLEVBQWdCLGNBQWMsTUFFM0NBLENBQ1QsQ0FJQSxTQUFTQyxHQUFnQjFKLEVBQVN3SixFQUFVLENBQzFDLE1BQU12RSxFQUFNaEMsRUFBVWpELENBQU8sRUFDN0IsR0FBSTZELEdBQVc3RCxDQUFPLEVBQ3BCLE9BQU9pRixFQUVULEdBQUksQ0FBQzVCLEVBQWNyRCxDQUFPLEVBQUcsQ0FDM0IsSUFBSTJKLEVBQWtCckYsRUFBY3RFLENBQU8sRUFDM0MsS0FBTzJKLEdBQW1CLENBQUNwRixHQUFzQm9GLENBQWUsR0FBRyxDQUNqRSxHQUFJdkcsRUFBVXVHLENBQWUsR0FBSyxDQUFDTCxHQUFtQkssQ0FBZSxFQUNuRSxPQUFPQSxFQUVUQSxFQUFrQnJGLEVBQWNxRixDQUFlLENBQ2pELENBQ0EsT0FBTzFFLENBQ1QsQ0FDQSxJQUFJL0UsRUFBZXFKLEdBQW9CdkosRUFBU3dKLENBQVEsRUFDeEQsS0FBT3RKLEdBQWdCMEQsR0FBZTFELENBQVksR0FBS29KLEdBQW1CcEosQ0FBWSxHQUNwRkEsRUFBZXFKLEdBQW9CckosRUFBY3NKLENBQVEsRUFFM0QsT0FBSXRKLEdBQWdCcUUsR0FBc0JyRSxDQUFZLEdBQUtvSixHQUFtQnBKLENBQVksR0FBSyxDQUFDNkQsR0FBa0I3RCxDQUFZLEVBQ3JIK0UsRUFFRi9FLEdBQWdCa0UsR0FBbUJwRSxDQUFPLEdBQUtpRixDQUN4RCxDQUVBLE1BQU0yRSxHQUFrQixlQUFnQnZLLEVBQU0sQ0FDNUMsTUFBTXdLLEVBQW9CLEtBQUssaUJBQW1CSCxHQUM1Q0ksRUFBa0IsS0FBSyxjQUN2QkMsRUFBcUIsTUFBTUQsRUFBZ0J6SyxFQUFLLFFBQVEsRUFDOUQsTUFBTyxDQUNMLFVBQVdnSyxHQUE4QmhLLEVBQUssVUFBVyxNQUFNd0ssRUFBa0J4SyxFQUFLLFFBQVEsRUFBR0EsRUFBSyxRQUFRLEVBQzlHLFNBQVUsQ0FDUixFQUFHLEVBQ0gsRUFBRyxFQUNILE1BQU8wSyxFQUFtQixNQUMxQixPQUFRQSxFQUFtQixNQUNqQyxDQUNBLENBQ0EsRUFFQSxTQUFTQyxHQUFNaEssRUFBUyxDQUN0QixPQUFPMkQsRUFBaUIzRCxDQUFPLEVBQUUsWUFBYyxLQUNqRCxDQUVBLE1BQU1wQixHQUFXLENBQ2Ysc0RBQUEwSSxHQUNBLG1CQUFBbkUsRUFDQSxnQkFBQTRGLEdBQ0EsZ0JBQUFXLEdBQ0EsZ0JBQUFFLEdBQ0EsZUFBQWpDLEdBQ0EsY0FBQXlCLEdBQ0EsU0FBQTFELEdBQ0EsVUFBQXRDLEVBQ0EsTUFBQTRHLEVBQ0YsRUFFQSxTQUFTQyxHQUFjekksRUFBR0MsRUFBRyxDQUMzQixPQUFPRCxFQUFFLElBQU1DLEVBQUUsR0FBS0QsRUFBRSxJQUFNQyxFQUFFLEdBQUtELEVBQUUsUUFBVUMsRUFBRSxPQUFTRCxFQUFFLFNBQVdDLEVBQUUsTUFDN0UsQ0FHQSxTQUFTeUksR0FBWWxLLEVBQVNtSyxFQUFRLENBQ3BDLElBQUlDLEVBQUssS0FDTEMsRUFDSixNQUFNQyxFQUFPbkgsRUFBbUJuRCxDQUFPLEVBQ3ZDLFNBQVN1SyxHQUFVLENBQ2pCLElBQUlDLEVBQ0osYUFBYUgsQ0FBUyxHQUNyQkcsRUFBTUosSUFBTyxNQUFRSSxFQUFJLFdBQVUsRUFDcENKLEVBQUssSUFDUCxDQUNBLFNBQVNLLEVBQVFDLEVBQU1DLEVBQVcsQ0FDNUJELElBQVMsU0FDWEEsRUFBTyxJQUVMQyxJQUFjLFNBQ2hCQSxFQUFZLEdBRWRKLEVBQU8sRUFDUCxNQUFNSyxFQUEyQjVLLEVBQVEsc0JBQXFCLEVBQ3hELENBQ0osS0FBQTZHLEVBQ0EsSUFBQUMsRUFDQSxNQUFBbkosRUFDQSxPQUFBQyxDQUNOLEVBQVFnTixFQUlKLEdBSEtGLEdBQ0hQLEVBQU0sRUFFSixDQUFDeE0sR0FBUyxDQUFDQyxFQUNiLE9BRUYsTUFBTWlOLEVBQVdwUCxHQUFNcUwsQ0FBRyxFQUNwQmdFLEVBQWFyUCxHQUFNNk8sRUFBSyxhQUFlekQsRUFBT2xKLEVBQU0sRUFDcERvTixFQUFjdFAsR0FBTTZPLEVBQUssY0FBZ0J4RCxFQUFNbEosRUFBTyxFQUN0RG9OLEVBQVl2UCxHQUFNb0wsQ0FBSSxFQUV0QnZSLEVBQVUsQ0FDZCxXQUZpQixDQUFDdVYsRUFBVyxNQUFRLENBQUNDLEVBQWEsTUFBUSxDQUFDQyxFQUFjLE1BQVEsQ0FBQ0MsRUFBWSxLQUcvRixVQUFXelAsRUFBSSxFQUFHRCxHQUFJLEVBQUdxUCxDQUFTLENBQUMsR0FBSyxDQUM5QyxFQUNJLElBQUlNLEVBQWdCLEdBQ3BCLFNBQVNDLEVBQWMzVixFQUFTLENBQzlCLE1BQU00VixFQUFRNVYsRUFBUSxDQUFDLEVBQUUsa0JBQ3pCLEdBQUk0VixJQUFVUixFQUFXLENBQ3ZCLEdBQUksQ0FBQ00sRUFDSCxPQUFPUixFQUFPLEVBRVhVLEVBT0hWLEVBQVEsR0FBT1UsQ0FBSyxFQUpwQmQsRUFBWSxXQUFXLElBQU0sQ0FDM0JJLEVBQVEsR0FBTyxJQUFJLENBQ3JCLEVBQUcsR0FBSSxDQUlYLENBQ0lVLElBQVUsR0FBSyxDQUFDbEIsR0FBY1csRUFBMEI1SyxFQUFRLHNCQUFxQixDQUFFLEdBUXpGeUssRUFBTyxFQUVUUSxFQUFnQixFQUNsQixDQUlBLEdBQUksQ0FDRmIsRUFBSyxJQUFJLHFCQUFxQmMsRUFBZSxDQUMzQyxHQUFHNVYsRUFFSCxLQUFNZ1YsRUFBSyxhQUNuQixDQUFPLENBQ0gsTUFBWSxDQUNWRixFQUFLLElBQUkscUJBQXFCYyxFQUFlNVYsQ0FBTyxDQUN0RCxDQUNBOFUsRUFBRyxRQUFRcEssQ0FBTyxDQUNwQixDQUNBLE9BQUF5SyxFQUFRLEVBQUksRUFDTEYsQ0FDVCxDQVVBLFNBQVNhLEdBQVdyTixFQUFXQyxFQUFVcU4sRUFBUS9WLEVBQVMsQ0FDcERBLElBQVksU0FDZEEsRUFBVSxDQUFBLEdBRVosS0FBTSxDQUNKLGVBQUFnVyxFQUFpQixHQUNqQixlQUFBQyxFQUFpQixHQUNqQixjQUFBQyxFQUFnQixPQUFPLGdCQUFtQixXQUMxQyxZQUFBQyxFQUFjLE9BQU8sc0JBQXlCLFdBQzlDLGVBQUFDLEVBQWlCLEVBQ3JCLEVBQU1wVyxFQUNFcVcsRUFBY2xHLEdBQWMxSCxDQUFTLEVBQ3JDNk4sRUFBWU4sR0FBa0JDLEVBQWlCLENBQUMsR0FBSUksRUFBY2hILEdBQXFCZ0gsQ0FBVyxFQUFJLENBQUEsRUFBSyxHQUFHaEgsR0FBcUIzRyxDQUFRLENBQUMsRUFBSSxDQUFBLEVBQ3RKNE4sRUFBVSxRQUFROUMsR0FBWSxDQUM1QndDLEdBQWtCeEMsRUFBUyxpQkFBaUIsU0FBVXVDLEVBQVEsQ0FDNUQsUUFBUyxFQUNmLENBQUssRUFDREUsR0FBa0J6QyxFQUFTLGlCQUFpQixTQUFVdUMsQ0FBTSxDQUM5RCxDQUFDLEVBQ0QsTUFBTVEsRUFBWUYsR0FBZUYsRUFBY3ZCLEdBQVl5QixFQUFhTixDQUFNLEVBQUksS0FDbEYsSUFBSVMsRUFBaUIsR0FDakJDLEVBQWlCLEtBQ2pCUCxJQUNGTyxFQUFpQixJQUFJLGVBQWVqTyxHQUFRLENBQzFDLEdBQUksQ0FBQ2tPLENBQVUsRUFBSWxPLEVBQ2ZrTyxHQUFjQSxFQUFXLFNBQVdMLEdBQWVJLElBR3JEQSxFQUFlLFVBQVUvTixDQUFRLEVBQ2pDLHFCQUFxQjhOLENBQWMsRUFDbkNBLEVBQWlCLHNCQUFzQixJQUFNLENBQzNDLElBQUlHLEdBQ0hBLEVBQWtCRixJQUFtQixNQUFRRSxFQUFnQixRQUFRak8sQ0FBUSxDQUNoRixDQUFDLEdBRUhxTixFQUFNLENBQ1IsQ0FBQyxFQUNHTSxHQUFlLENBQUNELEdBQ2xCSyxFQUFlLFFBQVFKLENBQVcsRUFFcENJLEVBQWUsUUFBUS9OLENBQVEsR0FFakMsSUFBSWtPLEVBQ0FDLEVBQWNULEVBQWlCeEYsRUFBc0JuSSxDQUFTLEVBQUksS0FDbEUyTixHQUNGVSxFQUFTLEVBRVgsU0FBU0EsR0FBWSxDQUNuQixNQUFNQyxFQUFjbkcsRUFBc0JuSSxDQUFTLEVBQy9Db08sR0FBZSxDQUFDbEMsR0FBY2tDLEVBQWFFLENBQVcsR0FDeERoQixFQUFNLEVBRVJjLEVBQWNFLEVBQ2RILEVBQVUsc0JBQXNCRSxDQUFTLENBQzNDLENBQ0EsT0FBQWYsRUFBTSxFQUNDLElBQU0sQ0FDWCxJQUFJaUIsRUFDSlYsRUFBVSxRQUFROUMsR0FBWSxDQUM1QndDLEdBQWtCeEMsRUFBUyxvQkFBb0IsU0FBVXVDLENBQU0sRUFDL0RFLEdBQWtCekMsRUFBUyxvQkFBb0IsU0FBVXVDLENBQU0sQ0FDakUsQ0FBQyxFQUNEUSxHQUFhLE1BQVFBLEVBQVMsR0FDN0JTLEVBQW1CUCxJQUFtQixNQUFRTyxFQUFpQixXQUFVLEVBQzFFUCxFQUFpQixLQUNiTCxHQUNGLHFCQUFxQlEsQ0FBTyxDQUVoQyxDQUNGLENBbUJBLE1BQU1sSyxHQUFTdUssR0FRVC9MLEdBQWdCZ00sR0FPaEJwSyxHQUFRcUssR0FnRFJqTyxHQUFrQixDQUFDVCxFQUFXQyxFQUFVMUksSUFBWSxDQUl4RCxNQUFNaVQsRUFBUSxJQUFJLElBQ1ptRSxFQUFnQixDQUNwQixTQUFBOU4sR0FDQSxHQUFHdEosQ0FDUCxFQUNRcVgsRUFBb0IsQ0FDeEIsR0FBR0QsRUFBYyxTQUNqQixHQUFJbkUsQ0FDUixFQUNFLE9BQU9xRSxHQUFrQjdPLEVBQVdDLEVBQVUsQ0FDNUMsR0FBRzBPLEVBQ0gsU0FBVUMsQ0FDZCxDQUFHLENBQ0gsRUN4dUJBLFNBQVNFLEdBQTBCQyxFQUFRLENBQ3pDLE9BQU9BLEdBQVUsTUFBUSxPQUFPQSxHQUFXLFVBQVksUUFBU0EsQ0FDbEUsQ0FDQSxTQUFTckgsR0FBY3FILEVBQVEsQ0FDN0IsR0FBSUQsR0FBMEJDLENBQU0sRUFBRyxDQUNyQyxNQUFNOU0sRUFBVThNLEVBQU8sSUFDdkIsT0FBTzlKLEdBQU9oRCxDQUFPLEdBQUs4QyxFQUFZOUMsQ0FBTyxJQUFNLFdBQWEsS0FBT0EsQ0FDekUsQ0FDQSxPQUFPOE0sQ0FDVCxDQUVBLFNBQVNDLEdBQVFDLEVBQVEsQ0FDdkIsT0FBTyxPQUFPQSxHQUFXLFdBQWFBLEVBQU0sRUFBS0MsRUFBQUEsTUFBTUQsQ0FBTSxDQUMvRCxDQXdCQSxTQUFTRSxHQUFPbE4sRUFBUyxDQUN2QixPQUFJLE9BQU8sT0FBVyxJQUNiLEdBRUdBLEVBQVEsY0FBYyxhQUFlLFFBQ3RDLGtCQUFvQixDQUNqQyxDQUVBLFNBQVNtTixHQUFXbk4sRUFBUzdJLEVBQU8sQ0FDbEMsTUFBTWlXLEVBQU1GLEdBQU9sTixDQUFPLEVBQzFCLE9BQU8sS0FBSyxNQUFNN0ksRUFBUWlXLENBQUcsRUFBSUEsQ0FDbkMsQ0FTQSxTQUFTQyxHQUFZdFAsRUFBV0MsRUFBVTFJLEVBQVMsQ0FDN0NBLElBQVksU0FDZEEsRUFBVSxDQUFBLEdBRVosTUFBTWdZLEVBQTZCaFksRUFBUSxxQkFDckNpWSxFQUFhaFgsRUFBQUEsU0FBUyxJQUFNLENBQ2hDLElBQUlpWCxFQUNKLE9BQVFBLEVBQVdULEdBQVF6WCxFQUFRLElBQUksSUFBTSxLQUFPa1ksRUFBVyxFQUNqRSxDQUFDLEVBQ0tDLEVBQW1CbFgsRUFBQUEsU0FBUyxJQUFNd1csR0FBUXpYLEVBQVEsVUFBVSxDQUFDLEVBQzdEb1ksRUFBa0JuWCxFQUFBQSxTQUFTLElBQU0sQ0FDckMsSUFBSW9YLEVBQ0osT0FBUUEsRUFBWVosR0FBUXpYLEVBQVEsU0FBUyxJQUFNLEtBQU9xWSxFQUFZLFFBQ3hFLENBQUMsRUFDS0MsRUFBaUJyWCxFQUFBQSxTQUFTLElBQU0sQ0FDcEMsSUFBSXNYLEVBQ0osT0FBUUEsRUFBWWQsR0FBUXpYLEVBQVEsUUFBUSxJQUFNLEtBQU91WSxFQUFZLFVBQ3ZFLENBQUMsRUFDS0MsRUFBa0J2WCxFQUFBQSxTQUFTLElBQU0sQ0FDckMsSUFBSXdYLEVBQ0osT0FBUUEsRUFBWWhCLEdBQVF6WCxFQUFRLFNBQVMsSUFBTSxLQUFPeVksRUFBWSxFQUN4RSxDQUFDLEVBQ0tDLEVBQW1CelgsRUFBQUEsU0FBUyxJQUFNa1AsR0FBYzFILEVBQVUsS0FBSyxDQUFDLEVBQ2hFa1EsRUFBa0IxWCxFQUFBQSxTQUFTLElBQU1rUCxHQUFjekgsRUFBUyxLQUFLLENBQUMsRUFDOURQLEVBQUl6TCxFQUFBQSxJQUFJLENBQUMsRUFDVDBMLEVBQUkxTCxFQUFBQSxJQUFJLENBQUMsRUFDVDBNLEVBQVcxTSxFQUFBQSxJQUFJNGIsRUFBZSxLQUFLLEVBQ25DeFIsRUFBWXBLLEVBQUFBLElBQUkwYixFQUFnQixLQUFLLEVBQ3JDM08sRUFBaUJtUCxFQUFBQSxXQUFXLEVBQUUsRUFDOUJDLEVBQWVuYyxFQUFBQSxJQUFJLEVBQUssRUFDeEJvYyxFQUFpQjdYLEVBQUFBLFNBQVMsSUFBTSxDQUNwQyxNQUFNOFgsRUFBZ0IsQ0FDcEIsU0FBVTNQLEVBQVMsTUFDbkIsS0FBTSxJQUNOLElBQUssR0FDWCxFQUNJLEdBQUksQ0FBQ3VQLEVBQWdCLE1BQ25CLE9BQU9JLEVBRVQsTUFBTUMsRUFBT25CLEdBQVdjLEVBQWdCLE1BQU94USxFQUFFLEtBQUssRUFDaEQ4USxFQUFPcEIsR0FBV2MsRUFBZ0IsTUFBT3ZRLEVBQUUsS0FBSyxFQUN0RCxPQUFJb1EsRUFBZ0IsTUFDWCxDQUNMLEdBQUdPLEVBQ0gsVUFBVyxhQUFlQyxFQUFPLE9BQVNDLEVBQU8sTUFDakQsR0FBSXJCLEdBQU9lLEVBQWdCLEtBQUssR0FBSyxLQUFPLENBQzFDLFdBQVksV0FDdEIsQ0FDQSxFQUVXLENBQ0wsU0FBVXZQLEVBQVMsTUFDbkIsS0FBTTRQLEVBQU8sS0FDYixJQUFLQyxFQUFPLElBQ2xCLENBQ0UsQ0FBQyxFQUNELElBQUlDLEVBQ0osU0FBU25ELEdBQVMsQ0FDaEIsR0FBSTJDLEVBQWlCLE9BQVMsTUFBUUMsRUFBZ0IsT0FBUyxLQUM3RCxPQUVGLE1BQU1RLEVBQU9sQixFQUFXLE1BQ3hCL08sR0FBZ0J3UCxFQUFpQixNQUFPQyxFQUFnQixNQUFPLENBQzdELFdBQVlSLEVBQWlCLE1BQzdCLFVBQVdDLEVBQWdCLE1BQzNCLFNBQVVFLEVBQWUsS0FDL0IsQ0FBSyxFQUFFLEtBQUtjLEdBQVksQ0FDbEJqUixFQUFFLE1BQVFpUixFQUFTLEVBQ25CaFIsRUFBRSxNQUFRZ1IsRUFBUyxFQUNuQmhRLEVBQVMsTUFBUWdRLEVBQVMsU0FDMUJ0UyxFQUFVLE1BQVFzUyxFQUFTLFVBQzNCM1AsRUFBZSxNQUFRMlAsRUFBUyxlQU9oQ1AsRUFBYSxNQUFRTSxJQUFTLEVBQ2hDLENBQUMsQ0FDSCxDQUNBLFNBQVNsRSxHQUFVLENBQ2IsT0FBT2lFLEdBQWdDLGFBQ3pDQSxFQUEyQixFQUMzQkEsRUFBOEIsT0FFbEMsQ0FDQSxTQUFTRyxHQUFTLENBRWhCLEdBREFwRSxFQUFPLEVBQ0grQyxJQUErQixPQUFXLENBQzVDakMsRUFBTSxFQUNOLE1BQ0YsQ0FDQSxHQUFJMkMsRUFBaUIsT0FBUyxNQUFRQyxFQUFnQixPQUFTLEtBQU0sQ0FDbkVPLEVBQThCbEIsRUFBMkJVLEVBQWlCLE1BQU9DLEVBQWdCLE1BQU81QyxDQUFNLEVBQzlHLE1BQ0YsQ0FDRixDQUNBLFNBQVMvTCxHQUFRLENBQ1ZpTyxFQUFXLFFBQ2RZLEVBQWEsTUFBUSxHQUV6QixDQUNBbGMsT0FBQUEsRUFBQUEsTUFBTSxDQUFDd2IsRUFBa0JDLEVBQWlCRSxFQUFnQkwsQ0FBVSxFQUFHbEMsRUFBUSxDQUM3RSxNQUFPLE1BQ1gsQ0FBRyxFQUNEcFosRUFBQUEsTUFBTSxDQUFDK2IsRUFBa0JDLENBQWUsRUFBR1UsRUFBUSxDQUNqRCxNQUFPLE1BQ1gsQ0FBRyxFQUNEMWMsRUFBQUEsTUFBTXNiLEVBQVlqTyxFQUFPLENBQ3ZCLE1BQU8sTUFDWCxDQUFHLEVBQ0dzUCxFQUFBQSxnQkFBZSxHQUNqQkMsRUFBQUEsZUFBZXRFLENBQU8sRUFFakIsQ0FDTCxFQUFHdUUsRUFBQUEsZ0JBQWdCclIsQ0FBQyxFQUNwQixFQUFHcVIsRUFBQUEsZ0JBQWdCcFIsQ0FBQyxFQUNwQixTQUFVb1IsRUFBQUEsZ0JBQWdCcFEsQ0FBUSxFQUNsQyxVQUFXb1EsRUFBQUEsZ0JBQWdCMVMsQ0FBUyxFQUNwQyxlQUFnQjBTLEVBQUFBLGdCQUFnQi9QLENBQWMsRUFDOUMsYUFBYytQLEVBQUFBLGdCQUFnQlgsQ0FBWSxFQUMxQyxlQUFBQyxFQUNBLE9BQUEvQyxDQUNKLENBQ0EsQ0MzTE8sTUFBTTBELEdBQWlCLENBQUNoVyxFQUFtQjJHLElBRXpDLEVBRFMsTUFBTSxRQUFRQSxDQUFRLEVBQUlBLEVBQVcsQ0FBQ0EsQ0FBUSxHQUM5QyxLQUFNK0ksR0FBT0EsRUFBRyxTQUFTMVAsRUFBTSxNQUFjLENBQUMsd0dDaUJ4RGlXLEVBQWtDaGQsRUFBQUEsSUFBSSxJQUFJLEVBQzFDZ00sRUFBb0NoTSxFQUFBQSxJQUFJLElBQUksRUFDNUNzWSxFQUFnQ3RZLEVBQUFBLElBQUksSUFBSSxFQUN4Q2lkLEVBQVlqZCxFQUFBQSxJQUFJLEVBQUssRUFDckJrZCxFQUFnQmxkLEVBQUFBLElBQUksRUFBSyxFQUN6QjJNLEVBQWEzTSxFQUFBQSxJQUFJLENBQUN3TyxLQUFpQjJPLEdBQWlCLENBQUUsU0FBVWpkLEVBQU0sTUFBQSxDQUFRLEVBQUdrUSxHQUFNLENBQUUsUUFBUyxFQUFBLENBQUksQ0FBQyxDQUFDLEVBRXhHZ04sRUFBZ0I3WSxFQUFBQSxTQUFTLElBQU0wWSxFQUFVLE9BQVNDLEVBQWMsS0FBSyxFQUVyRSxDQUFFLGVBQUFkLENBQUEsRUFBbUJmLEdBQVkyQixFQUFRaFIsRUFBVSxDQUN2RCxXQUFBVyxFQUNBLFNBQVUsUUFDVixxQkFBc0J5TSxFQUFBLENBQ3ZCLEVBRUtpRSxFQUFnQ3hVLEdBQWtCLENBQ2xELENBQUNtVSxFQUFPLE9BQVMsQ0FBQ2hSLEVBQVMsT0FDM0IrUSxHQUFlbFUsRUFBRyxDQUFDbVUsRUFBTyxNQUFPaFIsRUFBUyxLQUFLLENBQUMsSUFDbERrUixFQUFjLE1BQVEsR0FDdEJyVSxFQUFFLGVBQUEsRUFDRkEsRUFBRSx5QkFBQSxFQUVOLEVBRU15VSxFQUErQixJQUFNLENBQ3pDTCxFQUFVLE1BQVEsRUFDcEIsRUFFTU0sRUFBZ0MsSUFBTSxDQUMxQ04sRUFBVSxNQUFRLEVBQ3BCLEVBRU1PLEVBQTRCM1UsR0FBa0IsQ0FDbERBLEVBQUUsZUFBQSxFQUNFcVUsRUFBYyxPQUNoQkEsRUFBYyxNQUFRLEdBQ3RCRCxFQUFVLE1BQVEsSUFFbEJDLEVBQWMsTUFBUSxFQUUxQixFQUVNTyxFQUE4QixJQUFNLENBQ3hDLEdBQUksQ0FBQ1QsRUFBTyxNQUFPLE9BQU8sS0FDMUJBLEVBQU8sTUFBTSxpQkFBaUIsWUFBYU0sQ0FBNEIsRUFDdkVOLEVBQU8sTUFBTSxpQkFBaUIsYUFBY08sQ0FBNkIsRUFDekVQLEVBQU8sTUFBTSxpQkFBaUIsUUFBU1EsQ0FBd0IsQ0FDakUsRUFFTUUsRUFBbUMsSUFBTSxDQUM3QyxHQUFJLENBQUNWLEVBQU8sTUFBTyxPQUFPLEtBQzFCQSxFQUFPLE1BQU0sb0JBQW9CLFlBQWFNLENBQTRCLEVBQzFFTixFQUFPLE1BQU0sb0JBQW9CLGFBQWNPLENBQTZCLEVBQzVFUCxFQUFPLE1BQU0sb0JBQW9CLFFBQVNRLENBQXdCLENBQ3BFLEVBRU1HLEVBQWtDOVUsR0FBcUIsQ0FDdkRBLEVBQUUsTUFBUSxXQUNacVUsRUFBYyxNQUFRLEdBRTFCLEVBRU1VLEVBQXlCLElBQU0sQ0FDOUJ0RixFQUFLLFFBQ1ZBLEVBQUssTUFBTSxpQkFBaUIsUUFBUytFLEVBQThCLEVBQUksRUFDdkUvRSxFQUFLLE1BQU0saUJBQWlCLFVBQVdxRixDQUE4QixFQUN2RSxFQUVNRSxFQUE4QixJQUFNLENBQ25DdkYsRUFBSyxRQUNWQSxFQUFLLE1BQU0sb0JBQW9CLFFBQVMrRSxFQUE4QixFQUFJLEVBQzFFL0UsRUFBSyxNQUFNLG9CQUFvQixVQUFXcUYsQ0FBOEIsRUFDMUUsRUFFTUcsRUFBc0IsSUFBTSxDQUNoQ2QsRUFBTyxNQUFRLFNBQVMsZUFBZTljLEVBQU0sUUFBUSxDQUN2RCxFQUVBRCxPQUFBQSxFQUFBQSxNQUNFLElBQU1pZCxFQUFjLE1BQ25CclksR0FBYSxDQUNSQSxFQUNGK1ksRUFBQSxFQUVBQyxFQUFBLENBRUosQ0FBQSxFQUdGNWQsRUFBQUEsTUFDRSxJQUFNQyxFQUFNLFNBQ1osSUFBTSxDQUNKd2QsRUFBQSxFQUNBSSxFQUFBLEVBQ0FMLEVBQUEsQ0FDRixDQUFBLEVBR0ZNLEVBQUFBLFlBQVksSUFBTSxDQUNoQnBSLEVBQVcsTUFBUSxDQUFDNkIsR0FBQSxFQUFpQjJPLEdBQWlCLENBQUUsU0FBVWpkLEVBQU0sTUFBQSxDQUFRLEVBQUdrUSxHQUFNLENBQUUsUUFBUyxFQUFBLENBQUksQ0FBQyxDQUMzRyxDQUFDLEVBRUQ0TixFQUFBQSxjQUFjLElBQU0sQ0FDbEI1VixHQUFBLENBQ0YsQ0FBQyxFQUVEdEUsRUFBQUEsVUFBVSxJQUFNLENBQ2RnYSxFQUFBLEVBQ0F4RixFQUFLLE1BQVEsU0FBUyxnQkFDdEJtRixFQUFBLENBQ0YsQ0FBQyxFQUVEMVosRUFBQUEsWUFBWSxJQUFNLENBQ2hCMlosRUFBQSxDQUNGLENBQUMsb3dEQzNHS08sRUFBK0NqZSxFQUFBQSxJQUFJLElBQUksRUFFdkR3SSxFQUEwQixJQUFNLFFBQ3BDOUUsRUFBQXVhLEVBQWMsUUFBZCxNQUFBdmEsRUFBcUIsV0FDdkIsRUFFTStFLEVBQTJCLElBQU0sUUFDckMvRSxFQUFBdWEsRUFBYyxRQUFkLE1BQUF2YSxFQUFxQixPQUN2QixFQUVNaUYsRUFBc0IsSUFBTSxDQUNoQzdILEVBQUssT0FBTyxDQUNkLEVBRU04SCxFQUF1QkMsR0FBYSxDQUN4Q0EsRUFBRSxlQUFBLEVBQ0YvSCxFQUFLLE9BQU8sQ0FDZCxFQUVBYixPQUFBQSxFQUFBQSxNQUNFLElBQU1DLEVBQU0sT0FDWDJFLEdBQWEsQ0FDUG9aLEVBQWMsUUFDZnBaLEVBQ0YyRCxFQUFBLEVBRUFDLEVBQUEsRUFFRlosR0FBY2hELENBQVEsRUFDeEIsQ0FBQSxFQUdGbVosRUFBQUEsY0FBYyxJQUFNLENBQ2xCNVYsR0FBQSxDQUNGLENBQUMsRUFFRHRFLEVBQUFBLFVBQVUsSUFBTSxDQUNWNUQsRUFBTSxRQUNSc0ksRUFBQSxDQUVKLENBQUMsZzZEQ2hES2pILEVBQWMsSUFBTSxDQUNuQnJCLEVBQU0sVUFDVFksRUFBSyxRQUFRLENBRWpCLDYwQkNoQldvZCxHQUFTLENBQ3BCLE9BQVEzZSxHQUNSLE1BQU9NLEdBQ1AsTUFBT0MsRUFDVCxFQUVhcWUsR0FBZSxDQUMxQixNQUFPLGVBQ1AsbUJBQW9CLGtCQUNwQixXQUFZLGdCQUNaLE1BQ0Usd0pBQ0YsZ0JBQWlCLGlFQUNqQixNQUFPLG1EQUNQLE1BQU8sNkRBQ1QsRUNsQmFDLEdBQVksQ0FDdkIsbUJBQW9CblosR0FBWWtaLEdBQWEsa0JBQWtCLEVBQy9ELFlBQWFsWixHQUFZa1osR0FBYSxVQUFVLEVBQ2hELE1BQU9sWixHQUFZa1osR0FBYSxLQUFLLEVBQ3JDLE9BQVFsWixHQUFZa1osR0FBYSxlQUFlLEVBQ2hELE1BQU9sWixHQUFZa1osR0FBYSxLQUFLLENBQ3ZDIiwieF9nb29nbGVfaWdub3JlTGlzdCI6WzI5LDMwLDMxLDMyLDMzXX0=
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),Be={HORIZONTAL:"horizontal",VERTICAL:"vertical"},t={withBreakpoint:(n,o)=>n.map(r=>`${o}-${r}`),ALIGN:{X:{CENTER:"tide-text-center",JUSTIFY:"tide-text-justify",LEFT:"tide-text-left",RIGHT:"tide-text-right"},Y:{INITIAL:"tide-align-initial",MIDDLE:"tide-align-middle"}},AXIS1:{AROUND:"tide-axis1-around",BETWEEN:"tide-axis1-between",CENTER:"tide-axis1-center",END:"tide-axis1-end",START:"tide-axis1-start"},AXIS2:{AROUND:"tide-axis2-around",CENTER:"tide-axis2-center",END:"tide-axis2-end",START:"tide-axis2-start",STRETCH:"tide-axis2-stretch"},BG:{GLOBAL:{PRIMARY:{ERROR:"tide-bg-primary-error",INFO:"tide-bg-primary-info",SUCCESS:"tide-bg-primary-success",WARNING:"tide-bg-primary-warning"},SURFACE:{ERROR:"tide-bg-surface-error",INFO:"tide-bg-surface-info",SUCCESS:"tide-bg-surface-success",WARNING:"tide-bg-surface-warning",BLUE:"tide-bg-surface-blue",GREEN:"tide-bg-surface-green",LIME:"tide-bg-surface-lime",ORANGE:"tide-bg-surface-orange",PURPLE:"tide-bg-surface-purple",RED:"tide-bg-surface-red",SALMON:"tide-bg-surface-salmon",TEAL:"tide-bg-surface-teal",YELLOW:"tide-bg-surface-yellow"}},INITIAL:"tide-bg-initial",BLUR:"tide-bg-blur",PRIMARY:"tide-bg-primary",SECONDARY:"tide-bg-secondary",SURFACE:{ACCENT:"tide-bg-surface-accent",BRAND:"tide-bg-surface-brand",DEFAULT:"tide-bg-surface",FLOATING:"tide-bg-surface-floating",GRADIENT:"tide-bg-surface-gradient",VARIANT:"tide-bg-surface-variant"},TRANSPARENT:{ONE_HUNDRED:"tide-transparent-100",TWO_HUNDRED:"tide-transparent-200",THREE_HUNDRED:"tide-transparent-300",FOUR_HUNDRED:"tide-transparent-400"}},BORDER:{COLOR:{GLOBAL:{ERROR:"tide-border-error",INFO:"tide-border-info",SUCCESS:"tide-border-success",WARNING:"tide-border-warning",BLUE:"tide-border-blue",GREEN:"tide-border-green",LIME:"tide-border-lime",ORANGE:"tide-border-orange",PURPLE:"tide-border-purple",RED:"tide-border-red",SALMON:"tide-border-salmon",TEAL:"tide-border-teal",YELLOW:"tide-border-yellow"},INITIAL:"tide-border-color-initial",DEFAULT:"tide-border",FLOATING:"tide-border-floating",HIGH:"tide-border-high",LOW:"tide-border-low",PRIMARY:"tide-border-primary"},RADIUS:{ZERO:"tide-radius-0",QUARTER:"tide-radius-1/4",HALF:"tide-radius-1/2",ONE:"tide-radius-1",FULL:"tide-radius-full"},STYLE:{DASHED:"tide-border-dashed",SOLID:"tide-border-solid"},BOTTOM:{ZERO:"tide-border-bottom-0",ONE:"tide-border-bottom-1",TWO:"tide-border-bottom-2"},FULL:{ZERO:"tide-border-0",ONE:"tide-border-1",TWO:"tide-border-2"},LEFT:{ZERO:"tide-border-left-0",ONE:"tide-border-left-1",TWO:"tide-border-left-2"},RIGHT:{ZERO:"tide-border-right-0",ONE:"tide-border-right-1",TWO:"tide-border-right-2"},TOP:{ZERO:"tide-border-top-0",ONE:"tide-border-top-1",TWO:"tide-border-top-2"}},BOX_SIZING:{BORDER_BOX:"tide-box-border",CONTENT_BOX:"tide-box-content"},BREAK_INSIDE:{AVOID_COLUMN:"tide-break-inside-avoid-column"},BREAK_WORD:{OFF:"tide-break-initial",ON:"tide-break-word"},COLUMNS:{INITIAL:"tide-columns-initial",ONE:"tide-columns-1",TWO:"tide-columns-2",THREE:"tide-columns-3",FOUR:"tide-columns-4"},CURSOR:{NOT_ALLOWED:"tide-cursor-not-allowed",POINTER:"tide-cursor-pointer",TEXT:"tide-cursor-text"},DISPLAY:{BLOCK:"tide-display-block",CONTENTS:"tide-display-contents",FLEX:"tide-display-flex",GRID:"tide-display-grid",INITIAL:"tide-display-initial",INLINE:"tide-display-inline",INLINE_BLOCK:"tide-display-inline-block",INLINE_FLEX:"tide-display-inline-flex",NONE:"tide-display-none"},ELLIPSIS:"tide-ellipsis",FLEX:{BASIS:{AUTO:"tide-flex-basis-auto",ZERO:"tide-flex-basis-0"},DIRECTION:{COLUMN:"tide-flex-column",COLUMN_REVERSE:"tide-flex-column-reverse",ROW:"tide-flex-row",ROW_REVERSE:"tide-flex-row-reverse"},GROW:{OFF:"tide-grow-none",ON:"tide-grow"},SHRINK:{OFF:"tide-shrink-none",ON:"tide-shrink"},WRAP:"tide-flex-wrap"},FONT:{COLOR:{GLOBAL:{ERROR:"tide-font-error",INFO:"tide-font-info",SUCCESS:"tide-font-success",WARNING:"tide-font-warning",BLUE:"tide-font-blue",GREEN:"tide-font-green",LIME:"tide-font-lime",ORANGE:"tide-font-orange",PURPLE:"tide-font-purple",RED:"tide-font-red",SALMON:"tide-font-salmon",TEAL:"tide-font-teal",YELLOW:"tide-font-yellow",PRIMARY:{BLUE:"tide-font-primary-blue",GREEN:"tide-font-primary-green",LIME:"tide-font-primary-lime",ORANGE:"tide-font-primary-orange",PURPLE:"tide-font-primary-purple",RED:"tide-font-primary-red",SALMON:"tide-font-primary-salmon",TEAL:"tide-font-primary-teal",YELLOW:"tide-font-primary-yellow"}},PRIMARY:"tide-font-on-primary",SECONDARY:"tide-font-on-secondary",SURFACE:{BRAND:"tide-font-on-surface-brand",DEFAULT:"tide-font-on-surface",INVERSE:"tide-font-on-surface-inverse",VARIANT:"tide-font-on-surface-variant",VARIANT_INVERSE:"tide-font-on-surface-variant-inverse"}},ROLE:{DISPLAY_1:"tide-typography-display-1",HEADLINE_1:"tide-typography-headline-1",HEADLINE_2:"tide-typography-headline-2",HEADLINE_3:"tide-typography-headline-3",TITLE_1:"tide-typography-title-1",TITLE_2:"tide-typography-title-2",BODY_1:"tide-typography-body-1",BODY_2:"tide-typography-body-2",LABEL_1:"tide-typography-label-1",LABEL_1_SEMIBOLD:"tide-typography-label-1-semibold",LABEL_2:"tide-typography-label-2",LABEL_2_SEMIBOLD:"tide-typography-label-2-semibold",LABEL_3:"tide-typography-label-3",LINK_1:"tide-typography-link-1",LINK_2:"tide-typography-link-2",LINK_3:"tide-typography-link-3",BUTTON_1:"tide-typography-button-1",BUTTON_2:"tide-typography-button-2"},SIZE:{TWELVE:"tide-font-12",FOURTEEN:"tide-font-14",SIXTEEN:"tide-font-16",TWENTY:"tide-font-20",TWENTY_FOUR:"tide-font-24",THIRTY_TWO:"tide-font-32"},WEIGHT:{FOUR_HUNDRED:"tide-font-400",FIVE_HUNDRED:"tide-font-500",SIX_HUNDRED:"tide-font-600",SEVEN_HUNDRED:"tide-font-700"}},GAP:{ZERO:"tide-gap-0",QUARTER:"tide-gap-1/4",HALF:"tide-gap-1/2",ONE:"tide-gap-1",TWO:"tide-gap-2",FOUR:"tide-gap-4"},GRID:{FLUID:"tide-fluid",ITEM:"tide-grid-item",LAYOUT:"tide-grid-layout",XL:"tide-grid-xl"},HEIGHT:{AUTO:"tide-height-auto",ZERO:"tide-height-0",FULL:"tide-height-full",MAX_FULL:"tide-max-height-full",MIN_ZERO:"tide-min-height-0"},ISOLATION:{ISOLATE:"tide-isolate"},LIST_BULLETS:{OFF:"tide-list-none"},MARGIN:{BOTTOM:{AUTO:"tide-margin-bottom-auto",ZERO:"tide-margin-bottom-0",QUARTER:"tide-margin-bottom-1/4",HALF:"tide-margin-bottom-1/2",ONE:"tide-margin-bottom-1",TWO:"tide-margin-bottom-2",FOUR:"tide-margin-bottom-4"},FULL:{ZERO:"tide-margin-0",QUARTER:"tide-margin-1/4",HALF:"tide-margin-1/2",ONE:"tide-margin-1",TWO:"tide-margin-2",FOUR:"tide-margin-4"},LEFT:{AUTO:"tide-margin-left-auto",ZERO:"tide-margin-left-0",QUARTER:"tide-margin-left-1/4",HALF:"tide-margin-left-1/2",ONE:"tide-margin-left-1",TWO:"tide-margin-left-2",FOUR:"tide-margin-left-4"},RIGHT:{AUTO:"tide-margin-right-auto",ZERO:"tide-margin-right-0",QUARTER:"tide-margin-right-1/4",HALF:"tide-margin-right-1/2",ONE:"tide-margin-right-1",TWO:"tide-margin-right-2",FOUR:"tide-margin-right-4"},TOP:{AUTO:"tide-margin-top-auto",ZERO:"tide-margin-top-0",QUARTER:"tide-margin-top-1/4",HALF:"tide-margin-top-1/2",ONE:"tide-margin-top-1",TWO:"tide-margin-top-2",FOUR:"tide-margin-top-4"},X:{AUTO:"tide-margin-x-auto",ZERO:"tide-margin-x-0",QUARTER:"tide-margin-x-1/4",HALF:"tide-margin-x-1/2",ONE:"tide-margin-x-1",TWO:"tide-margin-x-2",FOUR:"tide-margin-x-4"},Y:{ZERO:"tide-margin-y-0",QUARTER:"tide-margin-y-1/4",HALF:"tide-margin-y-1/2",ONE:"tide-margin-y-1",TWO:"tide-margin-y-2",FOUR:"tide-margin-y-4"}},OBJECT:{CENTER:"tide-object-center",CONTAIN:"tide-object-contain",COVER:"tide-object-cover",SCALE_DOWN:"tide-object-scale-down"},OPACITY:{DISABLED:"tide-opacity-disabled",OFF:"tide-opacity-none",ON:"tide-opacity"},OVERFLOW:{X:{AUTO:"tide-x-auto",HIDDEN:"tide-x-hidden",SCROLL:"tide-x-scroll"},XY:{AUTO:"tide-xy-auto",HIDDEN:"tide-xy-hidden"},Y:{AUTO:"tide-y-auto",HIDDEN:"tide-y-hidden"}},PADDING:{BOTTOM:{ZERO:"tide-padding-bottom-0",QUARTER:"tide-padding-bottom-1/4",HALF:"tide-padding-bottom-1/2",ONE:"tide-padding-bottom-1",TWO:"tide-padding-bottom-2",FOUR:"tide-padding-bottom-4"},FULL:{ZERO:"tide-padding-0",QUARTER:"tide-padding-1/4",HALF:"tide-padding-1/2",ONE:"tide-padding-1",TWO:"tide-padding-2",FOUR:"tide-padding-4"},LEFT:{ZERO:"tide-padding-left-0",QUARTER:"tide-padding-left-1/4",HALF:"tide-padding-left-1/2",ONE:"tide-padding-left-1",TWO:"tide-padding-left-2",FOUR:"tide-padding-left-4"},RIGHT:{ZERO:"tide-padding-right-0",QUARTER:"tide-padding-right-1/4",HALF:"tide-padding-right-1/2",ONE:"tide-padding-right-1",TWO:"tide-padding-right-2",FOUR:"tide-padding-right-4"},TOP:{ZERO:"tide-padding-top-0",QUARTER:"tide-padding-top-1/4",HALF:"tide-padding-top-1/2",ONE:"tide-padding-top-1",TWO:"tide-padding-top-2",FOUR:"tide-padding-top-4"},X:{ZERO:"tide-padding-x-0",QUARTER:"tide-padding-x-1/4",HALF:"tide-padding-x-1/2",ONE:"tide-padding-x-1",TWO:"tide-padding-x-2",FOUR:"tide-padding-x-4"},Y:{ZERO:"tide-padding-y-0",QUARTER:"tide-padding-y-1/4",HALF:"tide-padding-y-1/2",ONE:"tide-padding-y-1",TWO:"tide-padding-y-2",FOUR:"tide-padding-y-4"}},POINTER_EVENTS:{OFF:"tide-pointer-events-none",ON:"tide-pointer-events"},POSITION:{ABSOLUTE:"tide-position-absolute",FIXED:"tide-position-fixed",RELATIVE:"tide-position-relative",STATIC:"tide-position-static",STICKY:"tide-position-sticky"},POSITIONING:{BOTTOM:"tide-bottom-0",LEFT:"tide-left-0",RIGHT:"tide-right-0",TOP:"tide-top-0"},RATIO:{ONE_TO_ONE:"tide-ratio-1/1",SIXTEEN_TO_NINE:"tide-ratio-16/9",THREE_TO_TWO:"tide-ratio-3/2"},SCROLLBAR:{OFF:"tide-scrollbar-none"},SHADOW:{INITIAL:"tide-shadow-initial",BOTTOM:"tide-shadow-bottom",TOP:"tide-shadow-top",TEXT:"tide-shadow-text"},SNAP:{ON:"tide-scroll-snap"},SNAP_ALIGN:{START:"tide-scroll-snap-start"},STRIKETHROUGH:{OFF:"tide-strikethrough-none",ON:"tide-strikethrough"},TEXT_TRANSFORM:{LOWER:"tide-text-transform-lower",NONE:"tide-text-transform-none",UPPER:"tide-text-transform-upper"},UNDERLINE:{HOVER:{ON:"tide-underline-hover",OFF:"tide-underline-hover-none"},REST:{ON:"tide-underline",OFF:"tide-underline-none"}},USER_SELECT:{INITIAL:"tide-user-select-initial",NONE:"tide-user-select-none"},VISIBILITY:{OFF:"tide-visible-none",ON:"tide-visible"},WHITESPACE_WRAP:{OFF:"tide-whitespace-nowrap"},WIDTH:{AUTO:"tide-width-auto",ZERO:"tide-width-0",FULL:"tide-width-full",MAX_FULL:"tide-max-width-full",MIN_ZERO:"tide-min-width-0"},Z_INDEX:{INITIAL:"tide-z-index-initial",ONE:"tide-z-index-1"}},Ct={class:e.normalizeClass(["tide-divider"])},ht=e.defineComponent({__name:"TideDivider",props:{orientation:{default:Be.HORIZONTAL}},setup(n){const o=n;return(r,i)=>(e.openBlock(),e.createElementBlock("div",Ct,[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).BORDER.COLOR.LOW,o.orientation===e.unref(Be).HORIZONTAL?[e.unref(t).MARGIN.Y.HALF,e.unref(t).BORDER.BOTTOM.ONE,e.unref(t).WIDTH.FULL]:[e.unref(t).MARGIN.X.HALF,e.unref(t).BORDER.RIGHT.ONE,e.unref(t).HEIGHT.FULL]])},null,2)]))}}),F=(n,o)=>{const r=n.__vccOpts||n;for(const[i,s]of o)r[i]=s;return r},Oe=F(ht,[["__scopeId","data-v-c2dc7d09"]]),Me=(n,o,r)=>{const i=n[o];return i?typeof i=="function"?i():Promise.resolve(i):new Promise((s,a)=>{(typeof queueMicrotask=="function"?queueMicrotask:setTimeout)(a.bind(null,new Error("Unknown variable dynamic import: "+o+(o.split("/").length!==r?". Note that variables only represent file names one level deep.":""))))})},tt={AERO:"aero",ATV:"atv",BOATMART:"boatmart",CYCLE:"cycle",EQUIPMENT:"equipment",PWC:"pwc",RV:"rv",SNOW:"snow",TRUCK:"truck"},B={LARGE:"large",SMALL:"small"},oe={LARGE:"large",SMALL:"small"},z=n=>{let o=n&&typeof n=="number"?new Intl.NumberFormat().format(n):String(n||""),r=o;return n&&typeof n=="string"&&(r=r.replace(/\D/g,""),Number(r)?o=new Intl.NumberFormat().format(Number(r)):o="0"),o},St=n=>n&&typeof n=="string"?n.replace(/([a-z]{1})([A-Z]{1})/g,"$1 $2").replace(/[\s_-]/g," ").toLowerCase().split(" ").map(o=>o.slice(0,1).toUpperCase()+o.slice(1)).join(""):n,Ft=n=>{let o=String(n&&typeof n=="number"?n:n||""),r=o;switch(r=r.replace(/\D/g,""),r.length){case 7:o=`${r.slice(0,3)}-${r.slice(3)}`;break;case 10:o=`${r.slice(0,3)}-${r.slice(3,6)}-${r.slice(6)}`;break;case 11:o=`${r.slice(0,1)}-${r.slice(1,4)}-${r.slice(4,7)}-${r.slice(7)}`;break;default:o=r;break}return o},Dt=n=>`$${n?z(n):String(n||"0")}`,S=e.defineComponent({__name:"TideIcon",props:{icon:{},size:{default:B.SMALL}},setup(n){const o=n,r=e.ref();return e.watch(()=>o.icon,async()=>{const i=o.icon,s=St(i),[a]=i.split("-"),l=tt[a==null?void 0:a.toUpperCase()],u=e.defineAsyncComponent(()=>l?Me(Object.assign({"../assets/svg/icons/realm/atv/IconAtvAtv.svg":()=>Promise.resolve().then(()=>require("./IconAtvAtv-DubJwTjK.cjs")),"../assets/svg/icons/realm/atv/IconAtvDuneBuggy.svg":()=>Promise.resolve().then(()=>require("./IconAtvDuneBuggy-CjN1kUXQ.cjs")),"../assets/svg/icons/realm/atv/IconAtvGoKart.svg":()=>Promise.resolve().then(()=>require("./IconAtvGoKart-C6lX6Uq4.cjs")),"../assets/svg/icons/realm/atv/IconAtvGolfCart.svg":()=>Promise.resolve().then(()=>require("./IconAtvGolfCart-DWAt3bvk.cjs")),"../assets/svg/icons/realm/atv/IconAtvSandRail.svg":()=>Promise.resolve().then(()=>require("./IconAtvSandRail-DGwmb5aU.cjs")),"../assets/svg/icons/realm/atv/IconAtvSideBySide.svg":()=>Promise.resolve().then(()=>require("./IconAtvSideBySide-OvuV0qFX.cjs")),"../assets/svg/icons/realm/atv/IconAtvTrailer.svg":()=>Promise.resolve().then(()=>require("./IconAtvTrailer-D_aI1qUx.cjs")),"../assets/svg/icons/realm/boatmart/IconBoatmartPwc.svg":()=>Promise.resolve().then(()=>require("./IconBoatmartPwc-BKltWtRW.cjs")),"../assets/svg/icons/realm/boatmart/IconBoatmartTrailer.svg":()=>Promise.resolve().then(()=>require("./IconBoatmartTrailer-D3firMg5.cjs")),"../assets/svg/icons/realm/rv/IconRvClassA.svg":()=>Promise.resolve().then(()=>require("./IconRvClassA-CeynEY7N.cjs")),"../assets/svg/icons/realm/rv/IconRvClassB.svg":()=>Promise.resolve().then(()=>require("./IconRvClassB-BGB0MmOD.cjs")),"../assets/svg/icons/realm/rv/IconRvClassC.svg":()=>Promise.resolve().then(()=>require("./IconRvClassC-C8rS5sAC.cjs")),"../assets/svg/icons/realm/rv/IconRvFifthWheel.svg":()=>Promise.resolve().then(()=>require("./IconRvFifthWheel-C47iv80S.cjs")),"../assets/svg/icons/realm/rv/IconRvFishHouse.svg":()=>Promise.resolve().then(()=>require("./IconRvFishHouse-B9CKlbHK.cjs")),"../assets/svg/icons/realm/rv/IconRvParkModel.svg":()=>Promise.resolve().then(()=>require("./IconRvParkModel-DZoz1TA3.cjs")),"../assets/svg/icons/realm/rv/IconRvPopUpCamper.svg":()=>Promise.resolve().then(()=>require("./IconRvPopUpCamper-D7wbELIQ.cjs")),"../assets/svg/icons/realm/rv/IconRvTravelTrailer.svg":()=>Promise.resolve().then(()=>require("./IconRvTravelTrailer-DGqI6COV.cjs")),"../assets/svg/icons/realm/rv/IconRvTruckCamper.svg":()=>Promise.resolve().then(()=>require("./IconRvTruckCamper-DFFQWh2o.cjs"))}),`../assets/svg/icons/realm/${l}/Icon${s}.svg`,7):Me(Object.assign({"../assets/svg/icons/IconAccountBalance.svg":()=>Promise.resolve().then(()=>require("./IconAccountBalance-t66sPb0V.cjs")),"../assets/svg/icons/IconAcute.svg":()=>Promise.resolve().then(()=>require("./IconAcute-kA8NXjsF.cjs")),"../assets/svg/icons/IconAdd.svg":()=>Promise.resolve().then(()=>require("./IconAdd-Bwkom_hG.cjs")),"../assets/svg/icons/IconAiDescription.svg":()=>Promise.resolve().then(()=>require("./IconAiDescription-CFPMCDKK.cjs")),"../assets/svg/icons/IconAlignSpaceEven.svg":()=>Promise.resolve().then(()=>require("./IconAlignSpaceEven-DKSbfzb-.cjs")),"../assets/svg/icons/IconApplePay.svg":()=>Promise.resolve().then(()=>require("./IconApplePay-BBSCGFjG.cjs")),"../assets/svg/icons/IconArrowBack.svg":()=>Promise.resolve().then(()=>require("./IconArrowBack-CUHuJHxp.cjs")),"../assets/svg/icons/IconArrowCycle.svg":()=>Promise.resolve().then(()=>require("./IconArrowCycle-R7Q8EDQJ.cjs")),"../assets/svg/icons/IconArrowForward.svg":()=>Promise.resolve().then(()=>require("./IconArrowForward-09bz9o1h.cjs")),"../assets/svg/icons/IconArrowRight.svg":()=>Promise.resolve().then(()=>require("./IconArrowRight-Np65RzRK.cjs")),"../assets/svg/icons/IconArrowUp.svg":()=>Promise.resolve().then(()=>require("./IconArrowUp-DrhwTcVn.cjs")),"../assets/svg/icons/IconAssignment.svg":()=>Promise.resolve().then(()=>require("./IconAssignment-DGD2WaCW.cjs")),"../assets/svg/icons/IconAttachMoney.svg":()=>Promise.resolve().then(()=>require("./IconAttachMoney-DFObJ1fx.cjs")),"../assets/svg/icons/IconAutoRenew.svg":()=>Promise.resolve().then(()=>require("./IconAutoRenew-CRnGvhzj.cjs")),"../assets/svg/icons/IconAwardStar.svg":()=>Promise.resolve().then(()=>require("./IconAwardStar-Dx2metNr.cjs")),"../assets/svg/icons/IconBed.svg":()=>Promise.resolve().then(()=>require("./IconBed-o4YHr8QY.cjs")),"../assets/svg/icons/IconBolt.svg":()=>Promise.resolve().then(()=>require("./IconBolt-BTeYzS6k.cjs")),"../assets/svg/icons/IconBookmark.svg":()=>Promise.resolve().then(()=>require("./IconBookmark-CitAJpUy.cjs")),"../assets/svg/icons/IconBunkhouse.svg":()=>Promise.resolve().then(()=>require("./IconBunkhouse-B1covD1i.cjs")),"../assets/svg/icons/IconCalendarMonth.svg":()=>Promise.resolve().then(()=>require("./IconCalendarMonth-DfHe6Olt.cjs")),"../assets/svg/icons/IconCall.svg":()=>Promise.resolve().then(()=>require("./IconCall-6gUYtYnc.cjs")),"../assets/svg/icons/IconCallQuality.svg":()=>Promise.resolve().then(()=>require("./IconCallQuality-DseNWKcQ.cjs")),"../assets/svg/icons/IconCarRental.svg":()=>Promise.resolve().then(()=>require("./IconCarRental-CaH55o-0.cjs")),"../assets/svg/icons/IconCheck.svg":()=>Promise.resolve().then(()=>require("./IconCheck-DrU3Xqj-.cjs")),"../assets/svg/icons/IconChevronLeft.svg":()=>Promise.resolve().then(()=>require("./IconChevronLeft-CD73NwTB.cjs")),"../assets/svg/icons/IconChevronRight.svg":()=>Promise.resolve().then(()=>require("./IconChevronRight-CNHvWIJQ.cjs")),"../assets/svg/icons/IconClear.svg":()=>Promise.resolve().then(()=>require("./IconClear-Ddi_gQQW.cjs")),"../assets/svg/icons/IconClose.svg":()=>Promise.resolve().then(()=>require("./IconClose-ClKjVrRR.cjs")),"../assets/svg/icons/IconContract.svg":()=>Promise.resolve().then(()=>require("./IconContract-BMNU7dRH.cjs")),"../assets/svg/icons/IconCrash.svg":()=>Promise.resolve().then(()=>require("./IconCrash-BzlfUp1G.cjs")),"../assets/svg/icons/IconDashboardCustomize.svg":()=>Promise.resolve().then(()=>require("./IconDashboardCustomize-BAGay10U.cjs")),"../assets/svg/icons/IconDelete.svg":()=>Promise.resolve().then(()=>require("./IconDelete-CUu2bGqQ.cjs")),"../assets/svg/icons/IconDiamond.svg":()=>Promise.resolve().then(()=>require("./IconDiamond-BeD6bdL2.cjs")),"../assets/svg/icons/IconDirectionsBoat.svg":()=>Promise.resolve().then(()=>require("./IconDirectionsBoat-B0wTnd3o.cjs")),"../assets/svg/icons/IconDomain.svg":()=>Promise.resolve().then(()=>require("./IconDomain-Dxw5ILrL.cjs")),"../assets/svg/icons/IconDraft.svg":()=>Promise.resolve().then(()=>require("./IconDraft-DR6EZSwa.cjs")),"../assets/svg/icons/IconEdit.svg":()=>Promise.resolve().then(()=>require("./IconEdit-DiFJHvLw.cjs")),"../assets/svg/icons/IconEngine.svg":()=>Promise.resolve().then(()=>require("./IconEngine-NRbH-EHX.cjs")),"../assets/svg/icons/IconEngineering.svg":()=>Promise.resolve().then(()=>require("./IconEngineering-Gu6xRPyo.cjs")),"../assets/svg/icons/IconError.svg":()=>Promise.resolve().then(()=>require("./IconError-B8vfdBPh.cjs")),"../assets/svg/icons/IconExpandContent.svg":()=>Promise.resolve().then(()=>require("./IconExpandContent-CZBUTFa4.cjs")),"../assets/svg/icons/IconExpandLess.svg":()=>Promise.resolve().then(()=>require("./IconExpandLess-BeBqjATL.cjs")),"../assets/svg/icons/IconExpandMore.svg":()=>Promise.resolve().then(()=>require("./IconExpandMore-EyD544-R.cjs")),"../assets/svg/icons/IconFacebook.svg":()=>Promise.resolve().then(()=>require("./IconFacebook-BZJRlI_M.cjs")),"../assets/svg/icons/IconFavorite.svg":()=>Promise.resolve().then(()=>require("./IconFavorite-DK4VZH9M.cjs")),"../assets/svg/icons/IconFavoriteFilled.svg":()=>Promise.resolve().then(()=>require("./IconFavoriteFilled-DEpn1cmU.cjs")),"../assets/svg/icons/IconFlag.svg":()=>Promise.resolve().then(()=>require("./IconFlag-BztsqLLH.cjs")),"../assets/svg/icons/IconFormatBold.svg":()=>Promise.resolve().then(()=>require("./IconFormatBold-D5ouQYvY.cjs")),"../assets/svg/icons/IconFormatItalic.svg":()=>Promise.resolve().then(()=>require("./IconFormatItalic-nERjH9_F.cjs")),"../assets/svg/icons/IconFormatListBulleted.svg":()=>Promise.resolve().then(()=>require("./IconFormatListBulleted-DiO46Jg8.cjs")),"../assets/svg/icons/IconForum.svg":()=>Promise.resolve().then(()=>require("./IconForum-Dw6egtlq.cjs")),"../assets/svg/icons/IconGas.svg":()=>Promise.resolve().then(()=>require("./IconGas-D8bshXuI.cjs")),"../assets/svg/icons/IconGavel.svg":()=>Promise.resolve().then(()=>require("./IconGavel-CBdvVo3E.cjs")),"../assets/svg/icons/IconGears.svg":()=>Promise.resolve().then(()=>require("./IconGears-DGMqs4S7.cjs")),"../assets/svg/icons/IconGlobeLocationPin.svg":()=>Promise.resolve().then(()=>require("./IconGlobeLocationPin-DaxXQ30W.cjs")),"../assets/svg/icons/IconGoogle.svg":()=>Promise.resolve().then(()=>require("./IconGoogle-Yw_mSfTf.cjs")),"../assets/svg/icons/IconGooglePay.svg":()=>Promise.resolve().then(()=>require("./IconGooglePay-RCvnstwi.cjs")),"../assets/svg/icons/IconGrid.svg":()=>Promise.resolve().then(()=>require("./IconGrid-Dt-ErvEF.cjs")),"../assets/svg/icons/IconHandshake.svg":()=>Promise.resolve().then(()=>require("./IconHandshake-Cy-2UfCE.cjs")),"../assets/svg/icons/IconHandyman.svg":()=>Promise.resolve().then(()=>require("./IconHandyman-Qk8vvw-k.cjs")),"../assets/svg/icons/IconHeight.svg":()=>Promise.resolve().then(()=>require("./IconHeight-8L9ZpDnf.cjs")),"../assets/svg/icons/IconHelp.svg":()=>Promise.resolve().then(()=>require("./IconHelp-yLLGan-o.cjs")),"../assets/svg/icons/IconInfo.svg":()=>Promise.resolve().then(()=>require("./IconInfo-MifqZPeF.cjs")),"../assets/svg/icons/IconInformation.svg":()=>Promise.resolve().then(()=>require("./IconInformation-Bd6DwbOW.cjs")),"../assets/svg/icons/IconInsertText.svg":()=>Promise.resolve().then(()=>require("./IconInsertText-DAU6Gz1h.cjs")),"../assets/svg/icons/IconInstagram.svg":()=>Promise.resolve().then(()=>require("./IconInstagram-V0Phqs8e.cjs")),"../assets/svg/icons/IconIosShare.svg":()=>Promise.resolve().then(()=>require("./IconIosShare-yDTudxOJ.cjs")),"../assets/svg/icons/IconLayout.svg":()=>Promise.resolve().then(()=>require("./IconLayout-NaNwp1Mc.cjs")),"../assets/svg/icons/IconLevellingJack.svg":()=>Promise.resolve().then(()=>require("./IconLevellingJack-BrmBMIeS.cjs")),"../assets/svg/icons/IconLinkedIn.svg":()=>Promise.resolve().then(()=>require("./IconLinkedIn-B92dDFNi.cjs")),"../assets/svg/icons/IconLocalShipping.svg":()=>Promise.resolve().then(()=>require("./IconLocalShipping-B3U2CrvK.cjs")),"../assets/svg/icons/IconLock.svg":()=>Promise.resolve().then(()=>require("./IconLock-CzvHZ2QM.cjs")),"../assets/svg/icons/IconMail.svg":()=>Promise.resolve().then(()=>require("./IconMail-4cFO6TUe.cjs")),"../assets/svg/icons/IconMenu.svg":()=>Promise.resolve().then(()=>require("./IconMenu-BV6py3Ml.cjs")),"../assets/svg/icons/IconMoneyBag.svg":()=>Promise.resolve().then(()=>require("./IconMoneyBag-lMeRlCeA.cjs")),"../assets/svg/icons/IconMoreHoriz.svg":()=>Promise.resolve().then(()=>require("./IconMoreHoriz-Fdrg4GhV.cjs")),"../assets/svg/icons/IconNotifications.svg":()=>Promise.resolve().then(()=>require("./IconNotifications-D6f_hP65.cjs")),"../assets/svg/icons/IconOdometer.svg":()=>Promise.resolve().then(()=>require("./IconOdometer-DFmoGuh1.cjs")),"../assets/svg/icons/IconOpenInNew.svg":()=>Promise.resolve().then(()=>require("./IconOpenInNew-Bh7f_m7Y.cjs")),"../assets/svg/icons/IconPalette.svg":()=>Promise.resolve().then(()=>require("./IconPalette-ClefcQMe.cjs")),"../assets/svg/icons/IconPaypal.svg":()=>Promise.resolve().then(()=>require("./IconPaypal-R8-anQkg.cjs")),"../assets/svg/icons/IconPerson.svg":()=>Promise.resolve().then(()=>require("./IconPerson-bq9WQXQP.cjs")),"../assets/svg/icons/IconPersonSearch.svg":()=>Promise.resolve().then(()=>require("./IconPersonSearch-WGKPEFXj.cjs")),"../assets/svg/icons/IconPhotoCamera.svg":()=>Promise.resolve().then(()=>require("./IconPhotoCamera-DaJf6axF.cjs")),"../assets/svg/icons/IconPinterest.svg":()=>Promise.resolve().then(()=>require("./IconPinterest-wqKY3pYh.cjs")),"../assets/svg/icons/IconPlayArrow.svg":()=>Promise.resolve().then(()=>require("./IconPlayArrow-BMvUb0Cs.cjs")),"../assets/svg/icons/IconPolicy.svg":()=>Promise.resolve().then(()=>require("./IconPolicy-C6VqDhPq.cjs")),"../assets/svg/icons/IconPower.svg":()=>Promise.resolve().then(()=>require("./IconPower-DNCBzhHN.cjs")),"../assets/svg/icons/IconPowerOff.svg":()=>Promise.resolve().then(()=>require("./IconPowerOff-CFUkoB2U.cjs")),"../assets/svg/icons/IconPriorityHigh.svg":()=>Promise.resolve().then(()=>require("./IconPriorityHigh-BXRK5f8v.cjs")),"../assets/svg/icons/IconRemove.svg":()=>Promise.resolve().then(()=>require("./IconRemove-BoE63ZOl.cjs")),"../assets/svg/icons/IconRequestQuote.svg":()=>Promise.resolve().then(()=>require("./IconRequestQuote-hNE0axaE.cjs")),"../assets/svg/icons/IconResetWrench.svg":()=>Promise.resolve().then(()=>require("./IconResetWrench-BGo5LXI6.cjs")),"../assets/svg/icons/IconRoad.svg":()=>Promise.resolve().then(()=>require("./IconRoad-CYQVphPa.cjs")),"../assets/svg/icons/IconRoundedCorner.svg":()=>Promise.resolve().then(()=>require("./IconRoundedCorner-BsshtlDu.cjs")),"../assets/svg/icons/IconRuler.svg":()=>Promise.resolve().then(()=>require("./IconRuler-D6F7haVw.cjs")),"../assets/svg/icons/IconSailing.svg":()=>Promise.resolve().then(()=>require("./IconSailing-BLsCQf5E.cjs")),"../assets/svg/icons/IconSchool.svg":()=>Promise.resolve().then(()=>require("./IconSchool-Ctkcm5E6.cjs")),"../assets/svg/icons/IconSearch.svg":()=>Promise.resolve().then(()=>require("./IconSearch-CqnvhCzt.cjs")),"../assets/svg/icons/IconSeating.svg":()=>Promise.resolve().then(()=>require("./IconSeating-CIOne28A.cjs")),"../assets/svg/icons/IconSell.svg":()=>Promise.resolve().then(()=>require("./IconSell-CJ88esDh.cjs")),"../assets/svg/icons/IconSensors.svg":()=>Promise.resolve().then(()=>require("./IconSensors-CVBxtcwC.cjs")),"../assets/svg/icons/IconSettings.svg":()=>Promise.resolve().then(()=>require("./IconSettings-BWQS2Rd_.cjs")),"../assets/svg/icons/IconShare.svg":()=>Promise.resolve().then(()=>require("./IconShare-DgZxuRV0.cjs")),"../assets/svg/icons/IconShieldCheck.svg":()=>Promise.resolve().then(()=>require("./IconShieldCheck-x6T3V-vS.cjs")),"../assets/svg/icons/IconShoppingCart.svg":()=>Promise.resolve().then(()=>require("./IconShoppingCart-BWH_PXom.cjs")),"../assets/svg/icons/IconSleeps.svg":()=>Promise.resolve().then(()=>require("./IconSleeps-CaPJzPZ7.cjs")),"../assets/svg/icons/IconSms.svg":()=>Promise.resolve().then(()=>require("./IconSms-NlCMrmBH.cjs")),"../assets/svg/icons/IconSnowflake.svg":()=>Promise.resolve().then(()=>require("./IconSnowflake-CzkejYR_.cjs")),"../assets/svg/icons/IconStar.svg":()=>Promise.resolve().then(()=>require("./IconStar-BGEn0snz.cjs")),"../assets/svg/icons/IconStarFilled.svg":()=>Promise.resolve().then(()=>require("./IconStarFilled-CfYeQJic.cjs")),"../assets/svg/icons/IconStarHalf.svg":()=>Promise.resolve().then(()=>require("./IconStarHalf-Bx8Qyb3h.cjs")),"../assets/svg/icons/IconSummarize.svg":()=>Promise.resolve().then(()=>require("./IconSummarize-lRdtNX68.cjs")),"../assets/svg/icons/IconSwapHoriz.svg":()=>Promise.resolve().then(()=>require("./IconSwapHoriz-B-UnlgNS.cjs")),"../assets/svg/icons/IconSwapVert.svg":()=>Promise.resolve().then(()=>require("./IconSwapVert-BBxeKMXP.cjs")),"../assets/svg/icons/IconThreeDRotation.svg":()=>Promise.resolve().then(()=>require("./IconThreeDRotation-BPRR_9n0.cjs")),"../assets/svg/icons/IconThumbUp.svg":()=>Promise.resolve().then(()=>require("./IconThumbUp-Dw-Hvil4.cjs")),"../assets/svg/icons/IconTrendingDown.svg":()=>Promise.resolve().then(()=>require("./IconTrendingDown-CUIEiRQk.cjs")),"../assets/svg/icons/IconTrophy.svg":()=>Promise.resolve().then(()=>require("./IconTrophy-DwaYZ69z.cjs")),"../assets/svg/icons/IconTune.svg":()=>Promise.resolve().then(()=>require("./IconTune-CdPQRgZE.cjs")),"../assets/svg/icons/IconTwitter.svg":()=>Promise.resolve().then(()=>require("./IconTwitter-wxyn-htG.cjs")),"../assets/svg/icons/IconUmbrella.svg":()=>Promise.resolve().then(()=>require("./IconUmbrella-CdgPNDdg.cjs")),"../assets/svg/icons/IconVerified.svg":()=>Promise.resolve().then(()=>require("./IconVerified-DKmEJ9ke.cjs")),"../assets/svg/icons/IconVideocam.svg":()=>Promise.resolve().then(()=>require("./IconVideocam-B8oUr7zP.cjs")),"../assets/svg/icons/IconViewInAr.svg":()=>Promise.resolve().then(()=>require("./IconViewInAr-DhbEKdon.cjs")),"../assets/svg/icons/IconVisibility.svg":()=>Promise.resolve().then(()=>require("./IconVisibility-DaA3mBn4.cjs")),"../assets/svg/icons/IconVolumeOff.svg":()=>Promise.resolve().then(()=>require("./IconVolumeOff-42vl0HdH.cjs")),"../assets/svg/icons/IconVolumeOn.svg":()=>Promise.resolve().then(()=>require("./IconVolumeOn-B6HqcoA8.cjs")),"../assets/svg/icons/IconWarehouse.svg":()=>Promise.resolve().then(()=>require("./IconWarehouse-DOw3YseH.cjs")),"../assets/svg/icons/IconWarning.svg":()=>Promise.resolve().then(()=>require("./IconWarning-3AuFwkkg.cjs")),"../assets/svg/icons/IconWater.svg":()=>Promise.resolve().then(()=>require("./IconWater-dVEqMZb4.cjs")),"../assets/svg/icons/IconWeight.svg":()=>Promise.resolve().then(()=>require("./IconWeight-DfXiP6ob.cjs")),"../assets/svg/icons/IconWidth.svg":()=>Promise.resolve().then(()=>require("./IconWidth-D1f8wank.cjs")),"../assets/svg/icons/IconWorkspacePremium.svg":()=>Promise.resolve().then(()=>require("./IconWorkspacePremium-DQIbVzlX.cjs")),"../assets/svg/icons/IconWrench.svg":()=>Promise.resolve().then(()=>require("./IconWrench-CZskpiB7.cjs")),"../assets/svg/icons/IconYoutube.svg":()=>Promise.resolve().then(()=>require("./IconYoutube-ChEAKSkt.cjs"))}),`../assets/svg/icons/Icon${s}.svg`,5));r.value=e.markRaw(u)},{immediate:!0}),(i,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-icon",o.size])},[r.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(r.value),{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.BLOCK]),"data-icon":n.icon,fill:"currentColor"},null,8,["class","data-icon"])):e.createCommentVNode("",!0)],2))}}),h={ACCOUNT_BALANCE:"account-balance",ACUTE:"acute",ADD:"add",AI_DESCRIPTION:"ai-description",ALIGN_SPACE_EVEN:"align-space-even",APPLE_PAY:"apple-pay",ARROW_BACK:"arrow-back",ARROW_CYCLE:"arrow-cycle",ARROW_FORWARD:"arrow-forward",ARROW_RIGHT:"arrow-right",ASSIGNMENT:"assignment",ATTACH_MONEY:"attach-money",AUTO_RENEW:"auto-renew",AWARD_STAR:"award-star",BED:"bed",BOLT:"bolt",BOOKMARK:"bookmark",BUNKHOUSE:"bunkhouse",CALENDAR_MONTH:"calendar-month",CALL:"call",CALL_QUALITY:"call-quality",CAR_RENTAL:"car-rental",CHECK:"check",CHEVRON_LEFT:"chevron-left",CHEVRON_RIGHT:"chevron-right",CLEAR:"clear",CLOSE:"close",CONTRACT:"contract",CRASH:"crash",DASHBOARD_CUSTOMIZE:"dashboard-customize",DELETE:"delete",DIAMOND:"diamond",DIRECTIONS_BOAT:"directions-boat",DOMAIN:"domain",DRAFT:"draft",EDIT:"edit",ENGINE:"engine",ENGINEERING:"engineering",ERROR:"error",EXPAND_CONTENT:"expand-content",EXPAND_LESS:"expand-less",EXPAND_MORE:"expand-more",FACEBOOK:"facebook",FAVORITE:"favorite",FAVORITE_FILLED:"favorite-filled",FLAG:"flag",FORMAT_BOLD:"format-bold",FORMAT_ITALIC:"format-italic",FORMAT_LIST_BULLETED:"format-list-bulleted",FORUM:"forum",GAS:"gas",GAVEL:"gavel",GEARS:"gears",GLOBE_LOCATION_PIN:"globe-location-pin",GOOGLE:"google",GOOGLE_PAY:"google-pay",GRID:"grid",HANDSHAKE:"handshake",HANDYMAN:"handyman",HEIGHT:"height",HELP:"help",INFO:"info",INFORMATION:"information",INSERT_TEXT:"insert-text",INSTAGRAM:"instagram",IOS_SHARE:"ios-share",LAYOUT:"layout",LEVELLING_JACK:"levelling-jack",LINKED_IN:"linked in",LOCAL_SHIPPING:"local-shipping",LOCK:"lock",MAIL:"mail",MENU:"menu",MONEY_BAG:"money-bag",MORE_HORIZ:"more-horiz",NOTIFICATIONS:"notifications",ODOMETER:"odometer",OPEN_IN_NEW:"open-in-new",PALETTE:"palette",PAYPAL:"paypal",PERSON:"person",PERSON_SEARCH:"person-search",PHOTO_CAMERA:"photo-camera",PINTEREST:"pinterest",PLAY_ARROW:"play-arrow",POLICY:"policy",POWER:"power",POWER_OFF:"power-off",PRIORITY_HIGH:"priority-high",REMOVE:"remove",REQUEST_QUOTE:"request-quote",RESET_WRENCH:"reset-wrench",ROAD:"road",ROUNDED_CORNER:"rounded-corner",RULER:"ruler",SAILING:"sailing",SCHOOL:"school",SEARCH:"search",SEATING:"seating",SELL:"sell",SENSORS:"sensors",SETTINGS:"settings",SHARE:"share",SHIELD_CHECK:"shield-check",SHOPPING_CART:"shopping-cart",SLEEPS:"sleeps",SMS:"sms",SNOWFLAKE:"snowflake",STAR:"star",SUMMARIZE:"summarize",SWAP_HORIZ:"swap-horiz",SWAP_VERT:"swap-vert",THREE_D_ROTATION:"three-d-rotation",THUMB_UP:"thumb-up",TRENDING_DOWN:"trending-down",TROPHY:"trophy",TUNE:"tune",TWITTER:"twitter",UMBRELLA:"umbrella",VERIFIED:"verified",VIDEOCAM:"videocam",VIEW_IN_AR:"view-in-ar",VISIBILITY:"visibility",VOLUME_OFF:"volume-off",VOLUME_ON:"volume-on",WAREHOUSE:"warehouse",WARNING:"warning",WATER:"water",WEIGHT:"weight",WIDTH:"width",WORKSPACE_PREMIUM:"workspace-premium",WRENCH:"wrench",YOUTUBE:"youtube"},Bt={ATV:{ATV:"atv-atv",DUNE_BUGGY:"atv-dune-buggy",GOLF_CART:"atv-golf-cart",GO_KART:"atv-go-kart",SAND_RAIL:"atv-sand-rail",SIDE_BY_SIDE:"atv-side-by-side",TRAILER:"atv-trailer"},BOATMART:{PWC:"boatmart-pwc",TRAILER:"boatmart-trailer"},RV:{CLASS_A:"rv-class-a",CLASS_B:"rv-class-b",CLASS_C:"rv-class-c",FIFTH_WHEEL:"rv-fifth-wheel",FISH_HOUSE:"rv-fish-house",PARK_MODEL:"rv-park-model",POP_UP_CAMPER:"rv-pop-up-camper",TRAVEL_TRAILER:"rv-travel-trailer",TRUCK_CAMPER:"rv-truck-camper"}},yt={class:"tide-accordion-item"},Pt=e.defineComponent({__name:"TideAccordionItem",props:{hasBottomDivider:{type:Boolean,default:!1},hasTopDivider:{type:Boolean,default:!1},isExpanded:{type:Boolean,default:!1},isOptional:{type:Boolean,default:!1},label:{default:""}},emits:["toggle"],setup(n,{emit:o}){const r=o,i=n,s=()=>{r("toggle")};return(a,l)=>(e.openBlock(),e.createElementBlock("div",yt,[i.hasTopDivider?(e.openBlock(),e.createBlock(Oe,{key:0})):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["tide-accordion-head",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.BETWEEN,e.unref(t).PADDING.Y.HALF,e.unref(t).CURSOR.POINTER]),onClick:s},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).FONT.ROLE.LABEL_1_SEMIBOLD])},[e.createElementVNode("span",null,e.toDisplayString(i.label),1),i.isOptional?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SURFACE.VARIANT])}," (optional) ",2)):e.createCommentVNode("",!0)],2),e.createVNode(S,{icon:n.isExpanded?e.unref(h).EXPAND_LESS:e.unref(h).EXPAND_MORE,size:e.unref(B).LARGE},null,8,["icon","size"])],2),e.createElementVNode("div",{class:e.normalizeClass(["tide-accordion-body",i.isExpanded?"expanded":"collapsed",e.unref(t).DISPLAY.GRID])},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).OVERFLOW.Y.HIDDEN,e.unref(t).MARGIN.Y.ONE,e.unref(t).FONT.ROLE.BODY_1,e.unref(t).FONT.COLOR.SURFACE.DEFAULT])},[e.renderSlot(a.$slots,"default",{},void 0,!0)],2)],2),i.hasBottomDivider?(e.openBlock(),e.createBlock(Oe,{key:1})):e.createCommentVNode("",!0)]))}}),bt=F(Pt,[["__scopeId","data-v-d5fdff3b"]]),y={BUTTON:"button",LINK:"a"},$={BUTTON:"button",DIV:"div",LINK:"a"},U={PRIMARY:"primary",SECONDARY:"secondary",TERTIARY:"tertiary",QUATERNARY:"quaternary",FLOATING:"floating"},M={BLANK:"_blank",SELF:void 0},w=e.defineComponent({__name:"TideButtonIcon",props:{disabled:{type:Boolean,default:!1},element:{default:y.BUTTON},href:{default:void 0},icon:{default:void 0},isNewTab:{type:Boolean,default:!1},priority:{default:U.PRIMARY}},setup(n){const o=n;return(r,i)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(o.element===e.unref(y).LINK?"a":"button"),{"aria-label":o.icon,class:e.normalizeClass([o.element===e.unref(y).LINK?"tide-link-as-button-icon":"tide-button-icon",o.priority&&`tide-button-${o.priority}`,[e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).PADDING.FULL.HALF],o.element===e.unref(y).LINK?[e.unref(t).UNDERLINE.REST.OFF]:""]),disabled:o.element===e.unref(y).BUTTON&&o.disabled,href:o.element===e.unref(y).LINK&&o.href?o.href:void 0,target:o.element===e.unref(y).LINK&&o.isNewTab?e.unref(M).BLANK:e.unref(M).SELF},{default:e.withCtx(()=>[o.icon?(e.openBlock(),e.createBlock(S,{key:0,icon:o.icon,size:e.unref(B).LARGE},null,8,["icon","size"])):e.createCommentVNode("",!0)]),_:1},8,["aria-label","class","disabled","href","target"]))}}),_={ERROR:"error",INFO:"info",SUCCESS:"success",WARNING:"warning"},Ut=e.defineComponent({__name:"TideAlert",props:{heading:{default:void 0},isDismissible:{type:Boolean,default:!0},isToast:{type:Boolean,default:!1},type:{default:_.INFO}},emits:["close"],setup(n,{emit:o}){const r=n,i=o,s=e.computed(()=>r.type===_.ERROR?h.PRIORITY_HIGH:r.type===_.SUCCESS?h.CHECK:r.type===_.WARNING?h.WARNING:h.INFORMATION);return(a,l)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([r.type,"tide-alert",e.unref(t).DISPLAY.GRID,e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).PADDING.FULL.ONE,!r.isToast&&r.type===e.unref(_).ERROR?[e.unref(t).BG.GLOBAL.SURFACE.ERROR,e.unref(t).BORDER.COLOR.GLOBAL.ERROR]:"",!r.isToast&&r.type===e.unref(_).INFO?[e.unref(t).BG.GLOBAL.SURFACE.INFO,e.unref(t).BORDER.COLOR.GLOBAL.INFO]:"",!r.isToast&&r.type===e.unref(_).SUCCESS?[e.unref(t).BG.GLOBAL.SURFACE.SUCCESS,e.unref(t).BORDER.COLOR.GLOBAL.SUCCESS]:"",!r.isToast&&r.type===e.unref(_).WARNING?[e.unref(t).BG.GLOBAL.SURFACE.WARNING,e.unref(t).BORDER.COLOR.GLOBAL.WARNING]:"",r.isToast?[e.unref(t).BG.SECONDARY,e.unref(t).FONT.COLOR.SECONDARY,e.unref(t).SHADOW.BOTTOM]:e.unref(t).BORDER.LEFT.TWO])},[r.isToast?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["tide-alert-icon",e.unref(t).PADDING.FULL.QUARTER,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).FONT.COLOR.SURFACE.INVERSE,r.type===e.unref(_).ERROR&&e.unref(t).BG.GLOBAL.PRIMARY.ERROR,r.type===e.unref(_).INFO&&e.unref(t).BG.GLOBAL.PRIMARY.INFO,r.type===e.unref(_).SUCCESS&&e.unref(t).BG.GLOBAL.PRIMARY.SUCCESS,r.type===e.unref(_).WARNING&&e.unref(t).BG.GLOBAL.PRIMARY.WARNING])},[e.createVNode(S,{icon:s.value,size:e.unref(B).SMALL},null,8,["icon","size"])],2)),e.createElementVNode("div",{class:e.normalizeClass(["tide-alert-heading",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).FONT.ROLE.LABEL_1_SEMIBOLD])},e.toDisplayString(r.heading),3),n.isDismissible?(e.openBlock(),e.createBlock(w,{key:1,class:e.normalizeClass(["tide-alert-close",e.unref(t).AXIS2.CENTER,e.unref(t).FONT.COLOR.SURFACE.DEFAULT]),icon:e.unref(h).CLOSE,priority:e.unref(U).QUATERNARY,onClick:l[0]||(l[0]=u=>i("close")),"aria-label":"Close alert"},null,8,["class","icon","priority"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["tide-alert-body",e.unref(t).FONT.ROLE.BODY_2,!r.isToast&&e.unref(t).FONT.COLOR.SURFACE.DEFAULT])},[e.renderSlot(a.$slots,"default",{},void 0,!0)],2)],2))}}),kt=F(Ut,[["__scopeId","data-v-264af7dc"]]),x={BLACK:"black",BLUE:"blue",GREEN:"green",LIME:"lime",ORANGE:"orange",PURPLE:"purple",RED:"red",SALMON:"salmon",TEAL:"teal",YELLOW:"yellow"},ye={[x.BLACK]:{borderColor:t.BORDER.COLOR.HIGH,iconColor:t.FONT.COLOR.SURFACE.DEFAULT},[x.BLUE]:{borderColor:t.BORDER.COLOR.GLOBAL.BLUE,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.BLUE},[x.GREEN]:{borderColor:t.BORDER.COLOR.GLOBAL.GREEN,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.GREEN},[x.LIME]:{borderColor:t.BORDER.COLOR.GLOBAL.LIME,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.LIME},[x.ORANGE]:{borderColor:t.BORDER.COLOR.GLOBAL.ORANGE,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.ORANGE},[x.PURPLE]:{borderColor:t.BORDER.COLOR.GLOBAL.PURPLE,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.PURPLE},[x.RED]:{borderColor:t.BORDER.COLOR.GLOBAL.RED,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.RED},[x.SALMON]:{borderColor:t.BORDER.COLOR.GLOBAL.SALMON,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.SALMON},[x.TEAL]:{borderColor:t.BORDER.COLOR.GLOBAL.TEAL,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.TEAL},[x.YELLOW]:{borderColor:t.BORDER.COLOR.GLOBAL.YELLOW,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.YELLOW}},nt={YEARS_10:"10",YEARS_15:"15",YEARS_5:"5"},_t=e.defineComponent({__name:"TideBadge",props:{color:{default:void 0},iconLeading:{default:void 0},isFloating:{type:Boolean,default:!1},label:{}},setup(n){const o=n;return(r,i)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-badge",o.isFloating||o.color?[e.unref(t).BG.SURFACE.FLOATING,e.unref(t).SHADOW.BOTTOM]:[e.unref(t).BG.SURFACE.VARIANT],e.unref(t).DISPLAY.INLINE_FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).BORDER.RADIUS.QUARTER,e.unref(t).PADDING.Y.QUARTER,e.unref(t).PADDING.X.HALF,o.color&&[e.unref(t).BORDER.LEFT.TWO,e.unref(ye)[o.color].borderColor],e.unref(t).ELLIPSIS,e.unref(t).FONT.ROLE.LABEL_2,e.unref(t).WHITESPACE_WRAP.OFF])},[o.iconLeading?(e.openBlock(),e.createBlock(S,{key:0,class:e.normalizeClass([e.unref(t).FLEX.SHRINK.OFF,o.color&&e.unref(ye)[o.color].iconColor]),icon:o.iconLeading},null,8,["class","icon"])):e.createCommentVNode("",!0),e.createElementVNode("span",{class:e.normalizeClass([e.unref(t).ELLIPSIS])},e.toDisplayString(o.label),3)],2))}}),Vt=e.defineComponent({__name:"TideBadgeTrustedPartner",props:{years:{default:nt.YEARS_5}},setup(n){const o=n;return(r,i)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-badge-trusted-partner",e.unref(t).FONT.COLOR.SURFACE.BRAND,e.unref(t).DISPLAY.INLINE_FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).ELLIPSIS,e.unref(t).FONT.ROLE.LABEL_2,e.unref(t).WHITESPACE_WRAP.OFF])},[e.createVNode(S,{class:e.normalizeClass([e.unref(t).FLEX.SHRINK.OFF]),icon:e.unref(h).AWARD_STAR},null,8,["class","icon"]),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).ELLIPSIS])},[e.createElementVNode("span",null,e.toDisplayString(o.years)+" year trusted partner",1)],2)],2))}}),wt=e.defineComponent({__name:"TideBadgeVerifiedVehicle",setup(n){return(o,r)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-badge-verified-vehicle",e.unref(t).BG.SECONDARY,e.unref(t).FONT.ROLE.LABEL_2,e.unref(t).FONT.COLOR.SECONDARY,e.unref(t).DISPLAY.INLINE_FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).BORDER.RADIUS.QUARTER,e.unref(t).PADDING.Y.QUARTER,e.unref(t).PADDING.X.HALF,e.unref(t).ELLIPSIS,e.unref(t).WHITESPACE_WRAP.OFF])},[e.createVNode(S,{class:e.normalizeClass([e.unref(t).FLEX.SHRINK.OFF]),icon:e.unref(h).VERIFIED},null,8,["class","icon"]),e.createElementVNode("span",{class:e.normalizeClass([e.unref(t).ELLIPSIS])},"Verified vehicle",2)],2))}}),Gt=F(wt,[["__scopeId","data-v-c6d1b806"]]),xt=["data-track","href"],Mt=["data-track"],Ht={key:0},Yt=e.defineComponent({__name:"TideBreadCrumbs",props:{breadCrumbs:{default:void 0}},setup(n){const o=n;return(r,i)=>(e.openBlock(),e.createElementBlock("ul",{class:e.normalizeClass(["tide-bread-crumbs",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).LIST_BULLETS.OFF])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.breadCrumbs,(s,a)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:s.label},[e.createElementVNode("li",{class:e.normalizeClass([e.unref(t).FONT.ROLE.BODY_2])},[s.url?(e.openBlock(),e.createElementBlock("a",{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.LINK_2,e.unref(t).FONT.COLOR.SURFACE.DEFAULT]),"data-track":s.dataTrack||void 0,href:s.url},e.toDisplayString(s.label),11,xt)):(e.openBlock(),e.createElementBlock("span",{key:1,class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_2,e.unref(t).FONT.COLOR.SURFACE.VARIANT]),"data-track":s.dataTrack||void 0},e.toDisplayString(s.label),11,Mt))],2),o.breadCrumbs&&a<o.breadCrumbs.length-1?(e.openBlock(),e.createElementBlock("li",Ht,[e.createVNode(S,{icon:e.unref(h).ARROW_RIGHT,size:e.unref(B).SMALL},null,8,["icon","size"])])):e.createCommentVNode("",!0)],64))),128))],2))}}),zt=e.defineComponent({__name:"TideButton",props:{disabled:{type:Boolean,default:!1},element:{default:y.BUTTON},href:{default:void 0},iconLeading:{default:void 0},iconTrailing:{default:void 0},isNewTab:{type:Boolean,default:!1},label:{default:void 0},priority:{default:U.PRIMARY},size:{default:oe.LARGE}},setup(n){const o=n;return(r,i)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(o.element===e.unref(y).LINK?e.unref(y).LINK:e.unref(y).BUTTON),{class:e.normalizeClass(["tide-button",o.priority&&`tide-button-${o.priority}`,o.element===e.unref(y).LINK?[e.unref(t).DISPLAY.INLINE_FLEX]:[e.unref(t).DISPLAY.FLEX],o.element===e.unref(y).LINK?e.unref(t).UNDERLINE.REST.OFF:"",n.size===e.unref(oe).SMALL&&[e.unref(t).FONT.ROLE.BUTTON_2,e.unref(t).PADDING.X.ONE,e.unref(t).PADDING.Y.HALF],n.size===e.unref(oe).LARGE&&[e.unref(t).FONT.ROLE.BUTTON_1,e.unref(t).PADDING.X.TWO,e.unref(t).PADDING.Y.ONE],e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).FONT.ROLE.LABEL_1_SEMIBOLD]),disabled:o.element===e.unref(y).BUTTON&&o.disabled,href:o.element===e.unref(y).LINK&&o.href?o.href:void 0,target:o.element===e.unref(y).LINK&&o.isNewTab?e.unref(M).BLANK:e.unref(M).SELF},{default:e.withCtx(()=>[o.iconLeading?(e.openBlock(),e.createBlock(S,{key:0,icon:o.iconLeading,size:n.size===e.unref(oe).LARGE?e.unref(B).LARGE:e.unref(B).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString(o.label)+" ",1),o.iconTrailing?(e.openBlock(),e.createBlock(S,{key:1,icon:o.iconTrailing,size:n.size===e.unref(oe).LARGE?e.unref(B).LARGE:e.unref(B).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0)]),_:1},8,["class","disabled","href","target"]))}}),Xt=e.defineComponent({__name:"TideButtonPagination",props:{disabled:{type:Boolean,default:!1},element:{default:$.BUTTON},href:{default:void 0},label:{default:void 0}},setup(n){const o=n;return(r,i)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(o.element===e.unref($).LINK?"a":o.element===e.unref($).BUTTON?"button":"div"),{class:e.normalizeClass([o.element===e.unref($).LINK?"tide-link-as-button-icon":"tide-button-icon",[e.unref(t).DISPLAY.INLINE_BLOCK,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).PADDING.FULL.HALF],o.element===e.unref($).LINK?[e.unref(t).UNDERLINE.REST.OFF]:"",o.element===e.unref($).DIV?[e.unref(t).CURSOR.POINTER]:"",[e.unref(t).FONT.ROLE.HEADLINE_3]]),disabled:o.element===e.unref($).BUTTON&&o.disabled,href:o.element===e.unref($).LINK&&o.href?o.href:void 0},{default:e.withCtx(()=>[e.createElementVNode("span",{class:e.normalizeClass(["label",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER])},e.toDisplayString(o.label),3)]),_:1},8,["class","disabled","href"]))}}),rt=F(Xt,[["__scopeId","data-v-0e4f62c0"]]),Wt=["data-track","onClick"],qt=e.defineComponent({__name:"TideButtonSegmented",props:{activeTab:{default:0},tabs:{}},emits:["change"],setup(n,{emit:o}){const r=n,i=o,s=a=>{i("change",a)};return(a,l)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-button-segmented",e.unref(t).BG.SURFACE.VARIANT,e.unref(t).DISPLAY.FLEX,e.unref(t).GAP.QUARTER,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).PADDING.FULL.QUARTER,e.unref(t).OVERFLOW.XY.HIDDEN,e.unref(t).WIDTH.FULL])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.tabs,(u,d)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["tide-button-segmented-tab",d===n.activeTab?[e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).FONT.COLOR.SURFACE.DEFAULT,e.unref(t).SHADOW.BOTTOM]:["inactive",e.unref(t).FONT.COLOR.SURFACE.VARIANT],e.unref(t).FLEX.GROW.ON,e.unref(t).BORDER.FULL.TWO,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).PADDING.Y.QUARTER,e.unref(t).WIDTH.FULL,e.unref(t).FONT.ROLE.BUTTON_1,e.unref(t).WHITESPACE_WRAP.OFF]),"data-track":u.dataTrack||void 0,key:u.label,onClick:c=>s(d)},[e.createElementVNode("span",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_2_SEMIBOLD])},e.toDisplayString(u.label),3),u.count&&u.count>0?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_2_SEMIBOLD])}," ("+e.toDisplayString(u.count)+") ",3)):e.createCommentVNode("",!0)],10,Wt))),128))],2))}}),$t=F(qt,[["__scopeId","data-v-4e385d0b"]]),fe={ACTIONABLE:"action",INFORMATIONAL:"informational",SELECTABLE:"select"},Kt=e.defineComponent({__name:"TideCard",props:{description:{default:void 0},heading:{},icon:{default:void 0},selected:{type:Boolean,default:void 0},type:{default:fe.INFORMATIONAL},href:{default:void 0}},setup(n){return(o,r)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.href?"a":n.type===e.unref(fe).INFORMATIONAL?"div":"button"),{class:e.normalizeClass(["tide-card",e.unref(t).BORDER.COLOR.LOW,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).DISPLAY.FLEX,e.unref(t).GAP.HALF,e.unref(t).PADDING.FULL.ONE,e.unref(t).WIDTH.FULL,e.unref(t).ALIGN.X.LEFT,e.unref(t).FLEX.DIRECTION.COLUMN,n.type!==e.unref(fe).INFORMATIONAL&&"hoverable",n.type===e.unref(fe).SELECTABLE&&n.selected&&"selected"]),href:n.href},{default:e.withCtx(()=>[n.icon?(e.openBlock(),e.createBlock(S,{key:0,class:e.normalizeClass([e.unref(t).FLEX.GROW.OFF,e.unref(t).FLEX.SHRINK.OFF]),icon:n.icon,size:e.unref(B).SMALL},null,8,["class","icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).AXIS2.START,e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.HALF])},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_1_SEMIBOLD,e.unref(t).FONT.COLOR.SURFACE.DEFAULT])},e.toDisplayString(n.heading),3),n.description?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_2,e.unref(t).FONT.COLOR.SURFACE.VARIANT])},e.toDisplayString(n.description),3)):e.createCommentVNode("",!0)],2)]),_:1},8,["class","href"]))}}),Qt=F(Kt,[["__scopeId","data-v-07bbeec7"]]),Zt=e.defineComponent({__name:"TideCarousel",props:{bleed:{default:void 0},isFloating:{type:Boolean,default:!1},isHeadline1:{type:Boolean,default:!1},isHideawayButtons:{type:Boolean,default:!0},isScrollByPage:{type:Boolean,default:!0},isTouchscreen:{type:Boolean,default:void 0},subtitle:{default:void 0},title:{default:void 0}},emits:["slidesAddedToView"],setup(n,{emit:o}){const r=n,i=o,s=e.ref(null),a=e.ref(!0),l=e.ref(!1),u=e.ref(!0),d=e.ref(null),c=e.ref([]),E=e.ref(null),f=e.ref([]),m=()=>{N()},v=()=>{const O={root:s==null?void 0:s.value,rootMargin:"0px 1px 0px 0px",threshold:1};d.value=new IntersectionObserver(T=>{let C=[];T.forEach(k=>{const G=f.value.indexOf(k.target);k.isIntersecting?(C.push(G),c.value.push(G)):c.value=c.value.filter(D=>D!==G),c.value.sort((D,b)=>D-b)}),a.value=c.value.includes(0),l.value=c.value.includes(f.value.length-1),C.length>0&&i("slidesAddedToView",C)},O),f.value.forEach(T=>{d.value&&d.value.observe(T)})},p=()=>{const O=()=>{s.value!==null&&(f.value=Array.from(s.value.children),v())};E.value=new MutationObserver(O),s.value&&E.value.observe(s.value,{childList:!0})},A=O=>{s.value!==null&&s.value.scrollTo({behavior:"smooth",left:O})},R=()=>{if(c.value.length===0)return;const O=c.value[c.value.length-1]+1;A(f.value[O].offsetLeft)},I=()=>{var T;if(c.value.length===0)return;const O=c.value[0]-c.value.length;A(((T=f.value[O])==null?void 0:T.offsetLeft)||0)},L=()=>{if(c.value.length===0)return;const O=c.value.length>1?c.value[1]:c.value[0]+1;A(f.value[O].offsetLeft)},g=()=>{if(c.value.length===0)return;const O=c.value[0]-1;A(f.value[O].offsetLeft)},N=()=>{s.value!==null&&r.bleed!=null&&(l.value&&u.value?(s.value.style.margin=`-${r.bleed}px -${r.bleed}px -${r.bleed}px 0`,s.value.style.padding=`${r.bleed}px ${r.bleed}px ${r.bleed}px 0`):(s.value.style.margin=`-${r.bleed}px 0 -${r.bleed}px -${r.bleed}px`,s.value.style.padding=`${r.bleed}px 0 ${r.bleed}px ${r.bleed}px`))};return e.onMounted(()=>{s.value!==null&&(f.value=Array.from(s.value.children),v(),p(),N())}),e.onUnmounted(()=>{var O,T;(O=d.value)==null||O.disconnect(),(T=E.value)==null||T.disconnect()}),(O,T)=>(e.openBlock(),e.createElementBlock("section",{class:e.normalizeClass(["tide-carousel",e.unref(t).POSITION.RELATIVE,e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.ONE,e.unref(t).WIDTH.MAX_FULL]),ref:"carouselRef"},[!r.isFloating&&u.value||r.title?(e.openBlock(),e.createElementBlock("section",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,r.title?e.unref(t).AXIS1.BETWEEN:e.unref(t).AXIS1.END,e.unref(t).AXIS2.CENTER,e.unref(t).WIDTH.FULL])},[r.title?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.WRAP,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.ONE])},[r.title?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).WHITESPACE_WRAP.OFF,n.isHeadline1?e.unref(t).FONT.ROLE.HEADLINE_1:e.unref(t).FONT.ROLE.HEADLINE_2])},e.toDisplayString(r.title),3)):e.createCommentVNode("",!0),r.subtitle?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass([e.unref(t).WHITESPACE_WRAP.OFF,e.unref(t).FONT.ROLE.LABEL_2,e.unref(t).FONT.COLOR.SURFACE.VARIANT])},e.toDisplayString(r.subtitle),3)):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0),!r.isFloating&&u.value?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.ONE])},[e.createVNode(w,{disabled:a.value,icon:e.unref(h).CHEVRON_LEFT,priority:e.unref(U).TERTIARY,onClick:T[0]||(T[0]=C=>n.isScrollByPage?I():g())},null,8,["disabled","icon","priority"]),e.createVNode(w,{disabled:l.value,icon:e.unref(h).CHEVRON_RIGHT,priority:e.unref(U).TERTIARY,onClick:T[1]||(T[1]=C=>n.isScrollByPage?R():L())},null,8,["disabled","icon","priority"])],2)):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0),e.renderSlot(O.$slots,"misc",{},void 0,!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).POSITION.RELATIVE])},[e.createElementVNode("ul",{class:e.normalizeClass(["tide-carousel-container",r.bleed&&"bleed",e.unref(t).DISPLAY.FLEX,e.unref(t).GAP.ONE,e.unref(t).LIST_BULLETS.OFF,e.unref(t).OVERFLOW.X.SCROLL,e.unref(t).SCROLLBAR.OFF,e.unref(t).SNAP.ON]),ref_key:"containerRef",ref:s,onScroll:m},[e.renderSlot(O.$slots,"default",{},void 0,!0)],34),n.isFloating&&u.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["tide-carousel-button-overlay",e.unref(t).POSITION.ABSOLUTE,e.unref(t).POSITIONING.TOP,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.BETWEEN,e.unref(t).AXIS2.CENTER,e.unref(t).WIDTH.FULL,e.unref(t).HEIGHT.FULL,e.unref(t).POINTER_EVENTS.OFF,r.isHideawayButtons?"hideaway":""])},[e.createVNode(w,{class:e.normalizeClass([e.unref(t).MARGIN.LEFT.ONE,e.unref(t).POINTER_EVENTS.ON]),disabled:a.value,icon:e.unref(h).CHEVRON_LEFT,priority:e.unref(U).QUATERNARY,onClick:T[2]||(T[2]=C=>n.isScrollByPage?I():g())},null,8,["class","disabled","icon","priority"]),e.createVNode(w,{class:e.normalizeClass([e.unref(t).MARGIN.RIGHT.ONE,e.unref(t).POINTER_EVENTS.ON]),disabled:l.value,icon:e.unref(h).CHEVRON_RIGHT,priority:e.unref(U).QUATERNARY,onClick:T[3]||(T[3]=C=>n.isScrollByPage?R():L())},null,8,["class","disabled","icon","priority"])],2)):e.createCommentVNode("",!0)],2)],2))}}),jt=F(Zt,[["__scopeId","data-v-a5b516f9"]]),Jt=e.defineComponent({__name:"TideChipAction",props:{element:{default:y.LINK},href:{default:void 0},isNewTab:{type:Boolean,default:!1},label:{}},setup(n){const o=n;return(r,i)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.element),{class:e.normalizeClass(["tide-chip-action",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).PADDING.X.ONE,e.unref(t).PADDING.Y.HALF,e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).FONT.ROLE.LINK_2,e.unref(t).FONT.COLOR.SURFACE.DEFAULT,e.unref(t).UNDERLINE.REST.OFF]),href:o.href,target:o.isNewTab?e.unref(M).BLANK:e.unref(M).SELF},{default:e.withCtx(()=>[e.createVNode(S,{icon:e.unref(h).SEARCH},null,8,["icon"]),e.createElementVNode("span",null,e.toDisplayString(o.label),1)]),_:1},8,["class","href","target"]))}}),en=F(Jt,[["__scopeId","data-v-2f57438d"]]),tn=e.defineComponent({__name:"TideChipFilter",props:{isActive:{type:Boolean},label:{}},setup(n){const o=n;return(r,i)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["tide-chip-filter",o.isActive?[e.unref(t).BG.SECONDARY,e.unref(t).FONT.COLOR.SECONDARY]:[e.unref(t).BG.SURFACE.VARIANT,e.unref(t).FONT.COLOR.SURFACE.DEFAULT],e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).PADDING.X.ONE,e.unref(t).PADDING.Y.HALF,e.unref(t).FONT.ROLE.LABEL_2,o.isActive?"active":""])},[e.renderSlot(r.$slots,"default",{},void 0,!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF])},[e.createElementVNode("span",{class:e.normalizeClass([o.isActive?"":"icon-spacing",e.unref(t).FONT.ROLE.LABEL_1,e.unref(t).WHITESPACE_WRAP.OFF])},e.toDisplayString(o.label),3)],2)],2))}}),nn=F(tn,[["__scopeId","data-v-6ddce1c2"]]),rn=e.defineComponent({__name:"TideChipInput",props:{label:{}},setup(n){const o=n;return(r,i)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["tide-chip-input",e.unref(t).BG.SURFACE.VARIANT,e.unref(t).FONT.COLOR.SURFACE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).PADDING.X.ONE,e.unref(t).PADDING.Y.HALF,e.unref(t).FONT.ROLE.LABEL_2])},[e.createElementVNode("span",null,e.toDisplayString(o.label),1),e.createVNode(S,{icon:e.unref(h).CLOSE},null,8,["icon"])],2))}}),on=F(rn,[["__scopeId","data-v-42611a29"]]),sn={class:"tide-columns"},ln={class:"tide-columns-column"},an={class:"tide-columns-column"},un={class:"tide-columns-column"},cn={class:"tide-columns-column"},dn=e.defineComponent({__name:"TideColumns",props:{heading:{default:""}},setup(n){const o=n;return(r,i)=>(e.openBlock(),e.createElementBlock("section",sn,[e.createElementVNode("h2",{class:e.normalizeClass([e.unref(t).MARGIN.BOTTOM.HALF])},e.toDisplayString(o.heading),3),e.createElementVNode("ul",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.WRAP,e.unref(t).GAP.TWO,e.unref(t).LIST_BULLETS.OFF])},[e.createElementVNode("li",ln,[e.renderSlot(r.$slots,"section1",{},void 0,!0)]),e.createElementVNode("li",an,[e.renderSlot(r.$slots,"section2",{},void 0,!0)]),e.createElementVNode("li",un,[e.renderSlot(r.$slots,"section3",{},void 0,!0)]),e.createElementVNode("li",cn,[e.renderSlot(r.$slots,"section4",{},void 0,!0)])],2)]))}}),fn=F(dn,[["__scopeId","data-v-c92a6639"]]),ee={CONTAIN:"contain",COVER:"cover",SCALE_DOWN:"scale-down"},En=["media","srcset"],mn=["alt","fetchpriority","loading","src"],Fe="https://cdn-static.tilabs.io/marketplace/common/image-coming-soon.svg",vn=e.defineComponent({__name:"TideImage",props:{alt:{default:""},height:{default:void 0},isLazy:{type:Boolean,default:!0},objectFit:{default:ee.COVER},sources:{default:()=>[]},src:{default:void 0},width:{default:void 0}},setup(n){const o=n,r=e.ref(),i=e.ref(),s=e.computed(()=>{switch(o.objectFit){case ee.CONTAIN:return t.OBJECT.CONTAIN;case ee.COVER:return t.OBJECT.COVER;case ee.SCALE_DOWN:return t.OBJECT.SCALE_DOWN;default:return ee.COVER}}),a=()=>{var d,c;const l=(d=i.value)==null?void 0:d.currentSrc,u=(c=r.value)==null?void 0:c.querySelector(`source[srcset="${l}"]`);l&&u?u.srcset=Fe:i.value&&(i.value.src=Fe)};return(l,u)=>(e.openBlock(),e.createElementBlock("picture",{class:e.normalizeClass(["tide-image",e.unref(t).DISPLAY.BLOCK]),ref_key:"picture",ref:r,style:e.normalizeStyle(n.width||n.height?{width:n.width||void 0,height:n.height||void 0}:void 0)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.sources,d=>(e.openBlock(),e.createElementBlock("source",{key:d.srcset,media:`(min-width:${d.media}px)`,srcset:d.srcset},null,8,En))),128)),e.createElementVNode("img",{alt:n.alt,class:e.normalizeClass(["tide-image-img",e.unref(t).WIDTH.FULL,e.unref(t).HEIGHT.FULL,e.unref(t).OBJECT.CENTER,s.value]),fetchpriority:n.isLazy?void 0:"high",loading:o.isLazy?"lazy":"eager",ref_key:"img",ref:i,src:n.src??Fe,onError:a},null,42,mn)],6))}}),ot=F(vn,[["__scopeId","data-v-4ce98c1f"]]),On=e.defineComponent({__name:"TideImageBackground",props:{alt:{default:""},isLazy:{type:Boolean,default:!0},sources:{default:()=>[]},src:{default:void 0}},setup(n){const o=n;return(r,i)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-image-background",e.unref(t).POSITION.RELATIVE,e.unref(t).OVERFLOW.XY.HIDDEN,e.unref(t).ISOLATION.ISOLATE])},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).POSITION.ABSOLUTE,e.unref(t).HEIGHT.FULL,e.unref(t).WIDTH.FULL,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER])},[e.createVNode(ot,{alt:o.alt,class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).HEIGHT.FULL]),"is-lazy":o.isLazy,"object-fit":e.unref(ee).COVER,sources:o.sources,src:o.src},null,8,["alt","class","is-lazy","object-fit","sources","src"])],2),e.renderSlot(r.$slots,"default",{},void 0,!0)],2))}}),Ln=F(On,[["__scopeId","data-v-0d40d1c6"]]),Rn={key:0,class:e.normalizeClass(["tide-indicator-label"])},An=e.defineComponent({__name:"TideIndicator",props:{label:{default:void 0}},setup(n){const o=n;return(r,i)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-indicator",o.label?"":"dot",e.unref(t).DISPLAY.INLINE_BLOCK,e.unref(t).ALIGN.X.CENTER,e.unref(t).BG.GLOBAL.PRIMARY.ERROR,e.unref(t).BORDER.RADIUS.FULL,o.label&&o.label.toString().length>1?[e.unref(t).PADDING.X.HALF]:[],o.label?[e.unref(t).POSITION.RELATIVE,e.unref(t).FONT.ROLE.LABEL_3,e.unref(t).FONT.COLOR.SURFACE.INVERSE]:[e.unref(t).BORDER.FULL.ONE]])},[o.label?(e.openBlock(),e.createElementBlock("div",Rn,e.toDisplayString(o.label),1)):e.createCommentVNode("",!0)],2))}}),In=F(An,[["__scopeId","data-v-d402ac82"]]),Te=e.defineComponent({__name:"TideInputSupportingText",props:{isError:{type:Boolean},message:{}},setup(n){return(o,r)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).FONT.ROLE.LABEL_3,n.isError?[e.unref(t).FONT.COLOR.GLOBAL.ERROR]:[e.unref(t).FONT.COLOR.SURFACE.DEFAULT]])},[n.isError?(e.openBlock(),e.createBlock(S,{key:0,class:e.normalizeClass([e.unref(t).FLEX.SHRINK.OFF]),icon:e.unref(h).ERROR,size:e.unref(B).SMALL},null,8,["class","icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",null,e.toDisplayString(n.message),1)],2))}}),st=Symbol("tide-form"),Tn=()=>{const n=e.ref(!1);return e.provide(st,{forceShowErrors:n}),{revealValidationErrors:()=>{n.value=!0}}},pe=()=>e.inject(st),it="Please enter a valid value",K={NO_ERROR:{message:"",valid:!0},REQUIRED:{message:"Please fill out this field",valid:!1}},ce=(n,o)=>r=>{let i=K.NO_ERROR;return r.trim().match(n)||(i={message:o??it,valid:!1}),i},pn=({maxlength:n,minlength:o,required:r,value:i})=>{const s=i.length===0&&!r,a=n&&i.length>n;return!(!s&&o&&i.length<o)&&!a},be=({errorFromProps:n,maxlength:o,minlength:r,required:i,validators:s,value:a})=>{if(n!=="")return{message:n,valid:!1};if(s){const l=gn(a.value,s);if(!l.valid)return l}if(i&&a.value.trim()==="")return K.REQUIRED;if(o||r){const l=Nn({maxlength:o,minlength:r,required:i,value:a.value});if(!l.valid)return l}return K.NO_ERROR},Nn=({maxlength:n,minlength:o,required:r,value:i})=>{const s={message:"",valid:!0};return s.valid=pn({maxlength:n,minlength:o,required:r,value:i}),s.valid||(s.message=it,n&&o?s.message=`Enter a value between ${z(o)} and ${z(n)} characters`:n?s.message=`Use ${z(n)} characters or fewer`:o&&(s.message=`Enter at least ${z(o)} characters`)),s};function gn(n,o){for(const r of o){const i=r(n);if(!i.valid)return i}return{message:"",valid:!0}}const Cn=["for"],hn=["checked","disabled","name","id"],Sn=e.defineComponent({__name:"TideInputCheckbox",props:e.mergeModels({disabled:{type:Boolean,default:!1},error:{default:""},indeterminate:{type:Boolean,default:!1},inputId:{default:void 0},label:{default:void 0},name:{default:void 0},number:{default:void 0},required:{type:Boolean,default:!1}},{modelValue:{type:Boolean,required:!0},modelModifiers:{}}),emits:e.mergeModels(["valid"],["update:modelValue"]),setup(n,{emit:o}){const r=n,i=o,s=e.useModel(n,"modelValue"),a=pe(),l=e.ref(!1),u=e.ref(K.NO_ERROR),d=e.computed(()=>r.required?`${r.label} *`:r.label),c=e.computed(()=>s.value||r.indeterminate),E=e.computed(()=>f.value?!0:l.value?!u.value.valid:!1),f=e.computed(()=>r.error!==""),m=e.computed(()=>E.value&&u.value.message),v=()=>r.error!==""?{message:r.error,valid:!1}:!r.required||c.value?K.NO_ERROR:K.REQUIRED;return e.watchEffect(()=>{u.value=v()}),e.watch(s,()=>{s.value&&(l.value=!0)},{immediate:!0}),e.watch(()=>a==null?void 0:a.forceShowErrors.value,p=>{p&&(l.value=!0)},{immediate:!0}),e.watch(u,()=>{i("valid",u.value.valid)},{deep:!0,immediate:!0}),(p,A)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-checkbox",e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.QUARTER])},[e.createElementVNode("label",{class:e.normalizeClass([e.unref(t).AXIS2.CENTER,e.unref(t).DISPLAY.FLEX,e.unref(t).FONT.ROLE.BODY_1,e.unref(t).GAP.HALF,e.unref(t).USER_SELECT.NONE,E.value?e.unref(t).FONT.COLOR.GLOBAL.ERROR:e.unref(t).FONT.COLOR.SURFACE.DEFAULT,n.disabled?[e.unref(t).OPACITY.DISABLED,e.unref(t).CURSOR.NOT_ALLOWED]:[e.unref(t).CURSOR.POINTER]]),for:n.inputId},[e.withDirectives(e.createElementVNode("input",{checked:c.value,class:e.normalizeClass(["tide-screen-reader-only"]),disabled:n.disabled,name:n.name,ref:"input",id:n.inputId,type:"checkbox","onUpdate:modelValue":A[0]||(A[0]=R=>s.value=R)},null,8,hn),[[e.vModelCheckbox,s.value]]),e.createElementVNode("div",{class:e.normalizeClass(["tide-input-checkbox-custom",e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.QUARTER,e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.SHRINK.OFF,e.unref(t).POSITION.RELATIVE,c.value?[E.value?e.unref(t).BG.GLOBAL.PRIMARY.ERROR:[e.unref(t).BG.SECONDARY,e.unref(t).BORDER.COLOR.HIGH]]:[E.value?[e.unref(t).BORDER.COLOR.GLOBAL.ERROR,e.unref(t).BG.GLOBAL.SURFACE.ERROR]:[e.unref(t).BORDER.COLOR.DEFAULT,e.unref(t).BG.SURFACE.DEFAULT]]])},[c.value?(e.openBlock(),e.createBlock(S,{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SECONDARY]),icon:n.indeterminate?e.unref(h).REMOVE:e.unref(h).CHECK,size:e.unref(B).SMALL},null,8,["class","icon","size"])):e.createCommentVNode("",!0)],2),n.label?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).AXIS1.BETWEEN,e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.GROW.ON,e.unref(t).FONT.ROLE.BODY_1])},[e.createElementVNode("span",null,e.toDisplayString(d.value),1),n.number?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SURFACE.VARIANT])}," ("+e.toDisplayString(e.unref(z)(n.number))+") ",3)):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0)],10,Cn),m.value?(e.openBlock(),e.createBlock(Te,{key:0,message:m.value,"is-error":""},null,8,["message"])):e.createCommentVNode("",!0)],2))}}),Fn=F(Sn,[["__scopeId","data-v-381d09d9"]]),Dn=["checked","disabled","name","id"],Bn=["for"],yn={},Pn=e.defineComponent({...yn,__name:"TideInputCheckboxDeprecated",props:{checked:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},indeterminate:{type:Boolean,default:!1},inputId:{default:void 0},label:{default:void 0},name:{default:void 0},number:{default:void 0}},setup(n){const o=n,r=e.computed(()=>o.checked||o.indeterminate);return(i,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-checkbox",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).FONT.ROLE.BODY_1,n.disabled?["disabled",e.unref(t).POINTER_EVENTS.OFF]:e.unref(t).CURSOR.POINTER])},[e.createElementVNode("input",{checked:r.value,class:e.normalizeClass([e.unref(t).DISPLAY.NONE]),disabled:o.disabled,name:o.name,ref:"input",onClick:s[0]||(s[0]=e.withModifiers(()=>{},["prevent"])),id:o.inputId,type:"checkbox"},null,10,Dn),e.createElementVNode("div",{class:e.normalizeClass(["tide-input-checkbox-custom",e.unref(t).POSITION.RELATIVE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).FLEX.SHRINK.OFF,e.unref(t).BORDER.FULL.ONE,r.value?[e.unref(t).BORDER.COLOR.HIGH,e.unref(t).BG.SECONDARY]:[e.unref(t).BORDER.COLOR.DEFAULT,e.unref(t).BG.SURFACE.DEFAULT],e.unref(t).BORDER.RADIUS.QUARTER,r.value&&"checked",n.disabled?e.unref(t).CURSOR.NOT_ALLOWED:e.unref(t).CURSOR.POINTER])},[r.value?(e.openBlock(),e.createBlock(S,{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SECONDARY]),icon:o.indeterminate?e.unref(h).REMOVE:e.unref(h).CHECK,size:e.unref(B).SMALL},null,8,["class","icon","size"])):e.createCommentVNode("",!0)],2),n.label?(e.openBlock(),e.createElementBlock("label",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.BETWEEN,e.unref(t).FLEX.GROW.ON,e.unref(t).FONT.ROLE.BODY_1,n.disabled?e.unref(t).CURSOR.NOT_ALLOWED:e.unref(t).CURSOR.POINTER]),for:o.inputId,onClick:s[1]||(s[1]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("span",null,e.toDisplayString(n.label),1),o.number?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SURFACE.VARIANT])}," ("+e.toDisplayString(e.unref(z)(o.number))+") ",3)):e.createCommentVNode("",!0)],10,Bn)):e.createCommentVNode("",!0)],2))}}),bn=F(Pn,[["__scopeId","data-v-f2c2a903"]]),Un=["for"],kn=["disabled","name","value","id"],_n=e.defineComponent({__name:"TideInputRadio",props:e.mergeModels({disabled:{type:Boolean,default:!1},inputId:{default:void 0},label:{default:void 0},name:{},number:{default:void 0},value:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const o=n,r=e.useModel(n,"modelValue"),i=e.computed(()=>r.value===o.value);return(s,a)=>(e.openBlock(),e.createElementBlock("label",{class:e.normalizeClass(["tide-input-radio",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).USER_SELECT.NONE,o.disabled?[e.unref(t).OPACITY.DISABLED,e.unref(t).CURSOR.NOT_ALLOWED]:[e.unref(t).CURSOR.POINTER]]),for:o.inputId},[e.withDirectives(e.createElementVNode("input",{class:e.normalizeClass(["tide-screen-reader-only"]),disabled:n.disabled,name:n.name,value:n.value,id:o.inputId,type:"radio","onUpdate:modelValue":a[0]||(a[0]=l=>r.value=l)},null,8,kn),[[e.vModelRadio,r.value]]),e.createElementVNode("div",{class:e.normalizeClass(["tide-input-radio-custom",e.unref(t).POSITION.RELATIVE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.FULL.ONE,i.value?[e.unref(t).BORDER.COLOR.HIGH]:[e.unref(t).BORDER.COLOR.DEFAULT],e.unref(t).BORDER.RADIUS.FULL,e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).CURSOR.POINTER,e.unref(t).POINTER_EVENTS.ON])},[e.createElementVNode("div",{class:e.normalizeClass(["tide-input-radio-check",e.unref(t).BORDER.RADIUS.FULL,i.value&&e.unref(t).BG.SECONDARY])},null,2)],2),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.GROW.ON,e.unref(t).AXIS1.BETWEEN,e.unref(t).FONT.ROLE.BODY_1])},[e.createElementVNode("span",null,e.toDisplayString(n.label),1),o.number?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SURFACE.VARIANT])}," ("+e.toDisplayString(e.unref(z)(o.number))+") ",3)):e.createCommentVNode("",!0)],2)],10,Un))}}),Vn=F(_n,[["__scopeId","data-v-33fad71e"]]),wn=["checked","id"],Gn=["for"],xn={},Mn=e.defineComponent({...xn,__name:"TideInputRadioDeprecated",props:{checked:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},inputId:{default:void 0},label:{default:void 0},name:{},number:{default:void 0}},setup(n){const o=n,r=e.ref(o.checked);return e.watch(()=>o.checked,(i,s)=>{(i!==s||i!==r.value)&&(r.value=i)}),(i,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-radio",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).POINTER_EVENTS.OFF,o.disabled&&"disabled"])},[e.createElementVNode("input",{checked:r.value,class:e.normalizeClass([e.unref(t).DISPLAY.NONE]),id:o.inputId,name:"",type:"radio",value:""},null,10,wn),e.createElementVNode("div",{class:e.normalizeClass(["tide-input-radio-custom",e.unref(t).POSITION.RELATIVE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.FULL.ONE,r.value?e.unref(t).BORDER.COLOR.HIGH:e.unref(t).BORDER.COLOR.DEFAULT,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).CURSOR.POINTER,e.unref(t).POINTER_EVENTS.ON,r.value&&"checked"])},[e.createElementVNode("div",{class:e.normalizeClass(["tide-input-radio-check",e.unref(t).BORDER.RADIUS.FULL,o.checked&&e.unref(t).BG.SECONDARY])},null,2)],2),e.createElementVNode("label",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.GROW.ON,e.unref(t).AXIS1.BETWEEN,e.unref(t).FONT.ROLE.BODY_1,e.unref(t).CURSOR.POINTER,e.unref(t).POINTER_EVENTS.ON]),for:o.inputId},[e.createElementVNode("span",null,e.toDisplayString(n.label),1),o.number?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SURFACE.VARIANT])}," ("+e.toDisplayString(e.unref(z)(o.number))+") ",3)):e.createCommentVNode("",!0)],10,Gn)],2))}}),Hn=F(Mn,[["__scopeId","data-v-644264c2"]]),Yn={NUMBER:z,PHONE:Ft,PRICE:Dt},se={alpha:/^[a-zA-Z]+$/g,alphaNumberOrEmpty:/^$|^[a-z0-9]+$/i,alphaSpace:/^[a-zA-Z ]+$/g,email:/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,numberFormatted:/^$|(?=.)^\$?(([1-9][0-9]{0,2}(,[0-9]{3})*)|0)?(\.[0-9]{1,2})?$/,phone:/^(?:\d{3}-\d{3}-\d{4}|\d{1}-\d{3}-\d{3}-\d{4})?$/,price:/(?=.)^\$?(([1-9][0-9]{0,2}(,[0-9]{3})*)|0)?(\.[0-9]{1,2})?$/},zn={ALPHA_NUMBER_EMPTY:ce(se.alphaNumberOrEmpty),ALPHA_SPACE:ce(se.alphaSpace),EMAIL:ce(se.email,"Enter a valid email address (e.g. name@example.com)"),NUMBER:ce(se.numberFormatted,"Enter a valid number"),PHONE:ce(se.phone,"Enter a valid phone number")},Q={EAGER:"eager",LAZY:"lazy"},Xn=["for"],Wn=["disabled","name","required","id"],qn=["label"],$n=["value"],Kn=["selected","value"],Qn=["selected","value"],Zn=e.defineComponent({__name:"TideInputSelect",props:e.mergeModels({disabled:{type:Boolean,default:!1},error:{default:""},errorDisplay:{default:Q.LAZY},label:{default:void 0},name:{default:void 0},optgroups:{default:void 0},options:{default:void 0},required:{type:Boolean,default:!1},supportingText:{default:void 0}},{modelValue:{required:!0},modelModifiers:{}}),emits:e.mergeModels(["valid"],["update:modelValue"]),setup(n,{emit:o}){const r=n,i=o,s=e.useModel(n,"modelValue"),a=pe(),l=e.ref(K.NO_ERROR),u=e.ref(!1),d=e.useId(),c=e.ref(!1),E=e.ref(null),f=e.computed(()=>r.required?`${r.label} *`:r.label),m=e.computed(()=>v.value?!0:c.value?!l.value.valid:!1),v=e.computed(()=>r.error!==""),p=e.computed(()=>u.value||!A.value),A=e.computed(()=>s.value===""),R=e.computed(()=>m.value&&l.value.message||r.supportingText),I=()=>{var O;const N=new MouseEvent("mousedown");(O=E==null?void 0:E.value)==null||O.dispatchEvent(N)},L=()=>{u.value=!0,r.errorDisplay===Q.EAGER&&(c.value=!0)},g=()=>{u.value=!1,r.errorDisplay===Q.LAZY&&(c.value=!0)};return e.watchEffect(()=>{l.value=be({errorFromProps:r.error,required:r.required,value:s})}),e.watch(()=>a==null?void 0:a.forceShowErrors.value,N=>{N&&(c.value=!0)},{immediate:!0}),e.watch(l,()=>{i("valid",l.value.valid)},{deep:!0,immediate:!0}),(N,O)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-select",e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.QUARTER,n.disabled&&"disabled",m.value&&"error"])},[e.createElementVNode("div",{class:e.normalizeClass(["tide-input-border",e.unref(t).POSITION.RELATIVE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).BG.SURFACE.DEFAULT,r.disabled?e.unref(t).CURSOR.NOT_ALLOWED:"",e.unref(t).OVERFLOW.XY.HIDDEN]),onClick:I},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).WIDTH.FULL])},[n.label?(e.openBlock(),e.createElementBlock("label",{key:0,class:e.normalizeClass([p.value?["minilabel",e.unref(t).FONT.ROLE.LABEL_3]:e.unref(t).FONT.ROLE.LABEL_1,e.unref(t).POSITION.ABSOLUTE,e.unref(t).POSITIONING.LEFT,e.unref(t).MARGIN.TOP.HALF,e.unref(t).MARGIN.LEFT.ONE,!m.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,e.unref(t).POINTER_EVENTS.OFF]),for:e.unref(d)},e.toDisplayString(f.value),11,Xn)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("select",{class:e.normalizeClass([e.unref(t).PADDING.BOTTOM.HALF,e.unref(t).PADDING.X.ONE,e.unref(t).WIDTH.FULL,n.disabled&&e.unref(t).CURSOR.NOT_ALLOWED,e.unref(t).FONT.ROLE.BODY_1]),disabled:n.disabled,name:n.name,ref_key:"selectElement",ref:E,required:n.required,onFocus:L,onFocusout:g,id:e.unref(d),"onUpdate:modelValue":O[0]||(O[0]=T=>s.value=T)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.optgroups,T=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[T.options?(e.openBlock(),e.createElementBlock("optgroup",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:T.label,label:T.label},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(T.options,C=>(e.openBlock(),e.createElementBlock("option",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:C.value,value:C.value},e.toDisplayString(C.label),11,$n))),128))],10,qn)):(e.openBlock(),e.createElementBlock("option",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:T.value,selected:s.value===T.value?!0:void 0,value:T.value},e.toDisplayString(T.label),11,Kn))],64))),256)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.options,T=>(e.openBlock(),e.createElementBlock("option",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:T.value,selected:s.value===T.value?!0:void 0,value:T.value},e.toDisplayString(T.label),11,Qn))),128))],42,Wn),[[e.vModelSelect,s.value]])],2),e.createVNode(S,{class:e.normalizeClass([e.unref(t).POSITION.ABSOLUTE,e.unref(t).POSITIONING.RIGHT,e.unref(t).MARGIN.RIGHT.ONE,e.unref(t).POINTER_EVENTS.OFF]),icon:e.unref(h).EXPAND_MORE,size:e.unref(B).SMALL},null,8,["class","icon","size"])],2),R.value?(e.openBlock(),e.createBlock(Te,{key:0,"is-error":m.value,message:R.value},null,8,["is-error","message"])):e.createCommentVNode("",!0)],2))}}),jn=F(Zn,[["__scopeId","data-v-8465bfdd"]]),lt="Please enter a valid value.",Ue=(n,o)=>typeof n=="string"&&n.length>0?n:typeof o=="string"&&o.length>0?o:lt,ke=(n,o)=>n!==!1||o!==!1,Jn=({maxlength:n,minlength:o,required:r,value:i})=>{const s=i.length===0&&!r,a=n&&i.length>n;return!(!s&&o&&i.length<o)&&!a},at=({error:n,errorFromProps:o,maxlength:r,minlength:i,required:s=!1,validators:a,value:l})=>{if(n.value=o||!1,!n.value&&a){const u=tr((l==null?void 0:l.value)||"",a);u.valid||(n.value=u.message)}if(!n.value&&(r||i)){const u=er({maxlength:r,minlength:i,required:s,value:(l==null?void 0:l.value)||""});u.valid||(n.value=u.message)}},er=({maxlength:n,minlength:o,required:r=!1,value:i})=>{const s={message:"",valid:!0};return s.valid=Jn({maxlength:n,minlength:o,required:r,value:i}),s.valid||(s.message=lt,n&&o?s.message=`Please enter a value between ${o} and ${n} characters in length.`:n?s.message=`Please enter a value no more than ${n} characters in length.`:o&&(s.message=`Please enter a value no less than ${o} characters in length.`)),s};function tr(n,o){for(const r of o){const i=r(n);if(!i.valid)return i}return{message:"",valid:!0}}const nr=["for"],rr=["disabled","name","required","id"],or=["label"],sr=["value"],ir=["selected","value"],lr=["selected","value"],ar={},ur=e.defineComponent({...ar,__name:"TideInputSelectDeprecated",props:{inputId:{default:void 0},supportingText:{default:void 0},optgroups:{},options:{},disabled:{type:Boolean,default:!1},error:{type:[String,Boolean],default:!1},label:{default:void 0},name:{},required:{type:Boolean,default:!1},value:{default:void 0}},setup(n,{expose:o}){const r=n,i=e.ref(r.error),s=e.ref(!1),a=e.ref(null),l=e.ref(r.required),u=e.ref(r.value),d=e.computed(()=>Ue(r.error,i.value)),c=e.computed(()=>r.required?`${r.label} *`:r.label),E=e.computed(()=>r.required&&!u.value||ke(i.value,r.error)),f=e.computed(()=>s.value||!m.value),m=e.computed(()=>u.value===void 0),v=()=>{var I;const R=new MouseEvent("mousedown");(I=a==null?void 0:a.value)==null||I.dispatchEvent(R)},p=()=>{s.value=!0},A=()=>{s.value=!1};return e.watch(()=>r.value,(R,I)=>{(R!==I||R!==u.value)&&(u.value=R)}),o({error:i,value:u}),(R,I)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-select",e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.QUARTER,n.disabled&&"disabled",E.value&&"error"])},[e.createElementVNode("div",{class:e.normalizeClass(["tide-input-border",e.unref(t).POSITION.RELATIVE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).BG.SURFACE.DEFAULT,r.disabled?e.unref(t).CURSOR.NOT_ALLOWED:"",e.unref(t).OVERFLOW.XY.HIDDEN]),onClick:v},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).WIDTH.FULL])},[n.label?(e.openBlock(),e.createElementBlock("label",{key:0,class:e.normalizeClass([f.value?["minilabel",e.unref(t).FONT.ROLE.LABEL_3]:e.unref(t).FONT.ROLE.LABEL_1,e.unref(t).POSITION.ABSOLUTE,e.unref(t).POSITIONING.LEFT,e.unref(t).MARGIN.TOP.HALF,e.unref(t).MARGIN.LEFT.ONE,!E.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,e.unref(t).POINTER_EVENTS.OFF]),for:r.inputId},e.toDisplayString(c.value),11,nr)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("select",{class:e.normalizeClass([e.unref(t).PADDING.BOTTOM.HALF,e.unref(t).PADDING.X.ONE,e.unref(t).WIDTH.FULL,n.disabled&&e.unref(t).CURSOR.NOT_ALLOWED,e.unref(t).FONT.ROLE.BODY_1]),disabled:n.disabled,name:n.name,ref_key:"input",ref:a,required:l.value,onFocus:p,onFocusout:A,id:r.inputId,"onUpdate:modelValue":I[0]||(I[0]=L=>u.value=L)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.optgroups,L=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[L.options?(e.openBlock(),e.createElementBlock("optgroup",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:L.label,label:L.label},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(L.options,g=>(e.openBlock(),e.createElementBlock("option",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:g.value,value:g.value},e.toDisplayString(g.label),11,sr))),128))],10,or)):(e.openBlock(),e.createElementBlock("option",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:L.value,selected:u.value===L.value?!0:void 0,value:L.value},e.toDisplayString(L.label),11,ir))],64))),256)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.options,L=>(e.openBlock(),e.createElementBlock("option",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:L.value,selected:u.value===L.value?!0:void 0,value:L.value},e.toDisplayString(L.label),11,lr))),128))],42,rr),[[e.vModelSelect,u.value]])],2),e.createVNode(S,{class:e.normalizeClass([e.unref(t).POSITION.ABSOLUTE,e.unref(t).POSITIONING.RIGHT,e.unref(t).MARGIN.RIGHT.ONE,e.unref(t).POINTER_EVENTS.OFF]),icon:e.unref(h).EXPAND_MORE,size:e.unref(B).SMALL},null,8,["class","icon","size"])],2),r.supportingText||E.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER])},[E.value?(e.openBlock(),e.createBlock(S,{key:0,class:e.normalizeClass([]),icon:e.unref(h).ERROR,size:e.unref(B).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_3])},e.toDisplayString(E.value?d.value:r.supportingText),3)],2)):e.createCommentVNode("",!0)],2))}}),cr=F(ur,[["__scopeId","data-v-ee7ffd3a"]]),P={DATE:"date",DATETIME_LOCAL:"datetime-local",EMAIL:"email",MONTH:"month",NUMBER:"number",PASSWORD:"password",SEARCH:"search",TEL:"tel",TEXT:"text",TIME:"time",URL:"url",WEEK:"week"},ie={DECIMAL:"decimal",EMAIL:"email",NUMERIC:"numeric",SEARCH:"search",TEL:"tel",TEXT:"text",URL:"url"},dr=(n,o)=>{if(o)return o;switch(n){case P.TEL:return ie.TEL;case P.SEARCH:return ie.SEARCH;case P.NUMBER:return ie.NUMERIC;case P.EMAIL:return ie.EMAIL;case P.URL:return ie.URL}},fr=["for"],Er=["autocomplete","disabled","inputmode","maxlength","minlength","name","required","type","id"],mr=e.defineComponent({__name:"TideInputText",props:e.mergeModels({autocomplete:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},error:{default:""},errorDisplay:{default:Q.LAZY},hasClear:{type:Boolean,default:!1},iconLeading:{default:void 0},inputId:{default:void 0},inputmode:{default:void 0},label:{default:void 0},maxlength:{default:void 0},minlength:{default:void 0},name:{default:void 0},prefix:{default:void 0},required:{type:Boolean,default:!1},suffix:{default:void 0},supportingText:{default:void 0},transformValue:{type:Function,default:void 0},type:{default:P.TEXT},validators:{default:void 0}},{modelValue:{required:!0},modelModifiers:{}}),emits:e.mergeModels(["valid"],["update:modelValue"]),setup(n,{emit:o}){const r=n,i=o,s=e.useModel(n,"modelValue"),a=pe(),l=e.ref(K.NO_ERROR),u=e.ref(!1),d=e.ref(null),c=e.ref(!1),E=e.ref(!1),f=e.computed(()=>r.required&&r.label?`${r.label} *`:r.label),m=e.computed(()=>v.value?!0:c.value?!l.value.valid:!1),v=e.computed(()=>r.error!==""),p=e.computed(()=>u.value||!I.value),A=e.computed(()=>dr(r.type,r.inputmode)),R=e.computed(()=>r.type===P.PASSWORD&&E.value===!0?P.TEXT:r.type),I=e.computed(()=>s.value===""),L=e.computed(()=>r.hasClear&&s.value&&r.type!==P.PASSWORD),g=e.computed(()=>r.type===P.PASSWORD),N=e.computed(()=>m.value&&l.value.message||r.supportingText),O=()=>{var D;s.value="",(D=d.value)==null||D.focus()},T=()=>{u.value=!0,r.errorDisplay===Q.EAGER&&(c.value=!0)},C=()=>{u.value=!1,r.errorDisplay===Q.LAZY&&(c.value=!0)},k=()=>{var D;(D=d.value)==null||D.focus()},G=D=>{u.value&&D.target!==d.value&&D.preventDefault()};return e.watchEffect(()=>{l.value=be({errorFromProps:r.error,maxlength:r.maxlength,minlength:r.minlength,required:r.required,validators:r.validators,value:s})}),e.watch([s,()=>r.transformValue],()=>{var b,J;if(!r.transformValue)return;const D=((J=(b=s.value)==null?void 0:b.match(/\d/g))==null?void 0:J.join(""))||void 0;s.value=D?r.transformValue(D):""},{immediate:!0}),e.watch(()=>a==null?void 0:a.forceShowErrors.value,D=>{D&&(c.value=!0)},{immediate:!0}),e.watch(l,()=>{i("valid",l.value.valid)},{deep:!0,immediate:!0}),(D,b)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-text",e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.QUARTER,n.disabled&&"disabled",m.value&&"error"])},[e.createElementVNode("label",{class:e.normalizeClass(["tide-input-text-field",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).POSITION.RELATIVE,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).PADDING.Y.HALF,L.value?[e.unref(t).PADDING.RIGHT.HALF,e.unref(t).PADDING.LEFT.ONE]:[e.unref(t).PADDING.X.ONE],n.disabled?e.unref(t).CURSOR.NOT_ALLOWED:e.unref(t).CURSOR.TEXT]),for:n.inputId,onClick:k,onMousedown:G},[n.iconLeading?(e.openBlock(),e.createBlock(S,{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SURFACE.VARIANT]),icon:n.iconLeading,size:e.unref(B).SMALL},null,8,["class","icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).WIDTH.FULL])},[n.prefix?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["tide-input-text-prefix",e.unref(t).FONT.ROLE.BODY_1,!m.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,p.value?"":"offset"])},e.toDisplayString(n.prefix),3)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).WIDTH.FULL])},[n.label?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["tide-input-text-label",p.value?["minilabel",e.unref(t).FONT.ROLE.LABEL_3]:e.unref(t).FONT.ROLE.LABEL_1,!m.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,e.unref(t).CURSOR.TEXT,e.unref(t).POINTER_EVENTS.OFF])},e.toDisplayString(f.value),3)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("input",{autocomplete:n.autocomplete?"on":"off",class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).FONT.ROLE.BODY_1,n.disabled&&e.unref(t).CURSOR.NOT_ALLOWED]),disabled:n.disabled,inputmode:A.value,maxlength:n.maxlength,minlength:n.minlength,name:n.name,ref_key:"inputElement",ref:d,required:n.required,type:R.value,onFocus:T,onFocusout:C,id:n.inputId,"onUpdate:modelValue":b[0]||(b[0]=J=>s.value=J)},null,42,Er),[[e.vModelDynamic,s.value]])],2),n.suffix?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(["tide-input-text-suffix",e.unref(t).FONT.ROLE.BODY_1,!m.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,p.value?"":"offset"])},e.toDisplayString(n.suffix),3)):e.createCommentVNode("",!0)],2),L.value?(e.openBlock(),e.createElementBlock("button",{key:1,onClick:O},[e.createVNode(S,{class:e.normalizeClass([e.unref(t).MARGIN.FULL.HALF]),icon:e.unref(h).CLOSE,size:e.unref(B).SMALL},null,8,["class","icon","size"])])):e.createCommentVNode("",!0),g.value?(e.openBlock(),e.createElementBlock("button",{key:2,onClick:b[1]||(b[1]=J=>E.value=!E.value)},[e.createVNode(S,{class:e.normalizeClass([e.unref(t).MARGIN.FULL.HALF]),icon:e.unref(h).VISIBILITY,size:e.unref(B).SMALL},null,8,["class","icon","size"])])):e.createCommentVNode("",!0)],42,fr),N.value?(e.openBlock(),e.createBlock(Te,{key:0,"is-error":m.value,message:N.value},null,8,["is-error","message"])):e.createCommentVNode("",!0)],2))}}),vr=F(mr,[["__scopeId","data-v-37b90fef"]]),Or=["for"],Lr=["autocomplete","disabled","maxlength","minlength","name","required","type","id"],Rr={},Ar=e.defineComponent({...Rr,__name:"TideInputTextDeprecated",props:{autocomplete:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},error:{type:[String,Boolean],default:!1},hasClear:{type:Boolean,default:!1},iconLeading:{default:void 0},inputId:{default:void 0},label:{default:void 0},maxlength:{default:void 0},minlength:{default:void 0},name:{},prefix:{default:void 0},required:{type:Boolean,default:!1},suffix:{default:void 0},supportingText:{default:void 0},transformValue:{type:Function,default:void 0},type:{default:P.TEXT},validators:{default:void 0},value:{default:void 0}},setup(n,{expose:o}){const r=n,i=e.ref(r.error),s=e.ref(!1),a=e.ref(null),l=e.ref(!1),u=e.ref(r.value),d=e.computed(()=>Ue(r.error,i.value)),c=e.computed(()=>r.required&&r.label?`${r.label} *`:r.label),E=e.computed(()=>r.hasClear&&u.value),f=e.computed(()=>r.required&&u.value!==void 0&&!u.value||ke(i.value,r.error)),m=e.computed(()=>s.value||!v.value),v=e.computed(()=>u.value===""||u.value===void 0),p=e.computed(()=>r.type===P.PASSWORD&&l.value===!0?P.TEXT:r.type),A=()=>{var O;u.value="",(O=a.value)==null||O.focus()},R=()=>{s.value=!0},I=()=>{s.value=!1,u.value||(u.value=""),g()},L=()=>{var O,T;if(r.transformValue){const C=((T=(O=u.value)==null?void 0:O.match(/\d/g))==null?void 0:T.join(""))||void 0;u.value=C?r.transformValue(C):""}},g=()=>{at({error:i,errorFromProps:r.error,maxlength:r.maxlength,minlength:r.minlength,required:r.required,validators:r.validators,value:u})},N=O=>{u.value=O};return e.watch(()=>r.value,(O,T)=>{(O!==T||O!==u.value)&&(u.value=O)}),o({error:i,required:r.required,updateValue:N,value:u}),(O,T)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-text",e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.QUARTER,n.disabled&&"disabled",f.value&&"error"])},[e.createElementVNode("label",{class:e.normalizeClass(["tide-input-text-field",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).POSITION.RELATIVE,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).BG.SURFACE.DEFAULT,E.value?[e.unref(t).PADDING.RIGHT.HALF,e.unref(t).PADDING.LEFT.ONE]:[e.unref(t).PADDING.X.ONE],e.unref(t).PADDING.Y.HALF,n.disabled?e.unref(t).CURSOR.NOT_ALLOWED:e.unref(t).CURSOR.TEXT]),for:n.inputId},[n.iconLeading?(e.openBlock(),e.createBlock(S,{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SURFACE.VARIANT]),icon:n.iconLeading,size:e.unref(B).SMALL},null,8,["class","icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).WIDTH.FULL])},[n.prefix?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["tide-input-text-prefix",e.unref(t).FONT.ROLE.BODY_1,!f.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,m.value?"":"offset"])},e.toDisplayString(n.prefix),3)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).WIDTH.FULL])},[n.label?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["tide-input-text-label",m.value?["minilabel",e.unref(t).FONT.ROLE.LABEL_3]:e.unref(t).FONT.ROLE.LABEL_1,!f.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,e.unref(t).CURSOR.TEXT,e.unref(t).POINTER_EVENTS.OFF])},e.toDisplayString(c.value),3)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("input",{autocomplete:n.autocomplete?"on":"off",class:e.normalizeClass([e.unref(t).WIDTH.FULL,n.disabled&&e.unref(t).CURSOR.NOT_ALLOWED,e.unref(t).FONT.ROLE.BODY_1]),disabled:n.disabled,maxlength:n.maxlength,minlength:n.minlength,name:n.name,ref_key:"input",ref:a,required:n.required,type:p.value,onChange:g,onFocus:R,onFocusout:I,onInput:L,id:n.inputId,"onUpdate:modelValue":T[0]||(T[0]=C=>u.value=C)},null,42,Lr),[[e.vModelDynamic,u.value]])],2),n.suffix?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(["tide-input-text-suffix",e.unref(t).FONT.ROLE.BODY_1,!f.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,m.value?"":"offset"])},e.toDisplayString(n.suffix),3)):e.createCommentVNode("",!0)],2),E.value&&n.type!==e.unref(P).PASSWORD?(e.openBlock(),e.createElementBlock("button",{key:1,onClick:A},[e.createVNode(S,{class:e.normalizeClass([e.unref(t).MARGIN.FULL.HALF]),icon:e.unref(h).CLOSE,size:e.unref(B).SMALL},null,8,["class","icon","size"])])):e.createCommentVNode("",!0),n.type===e.unref(P).PASSWORD?(e.openBlock(),e.createElementBlock("button",{key:2,onClick:T[1]||(T[1]=C=>l.value=!l.value)},[e.createVNode(S,{class:e.normalizeClass([e.unref(t).MARGIN.FULL.HALF]),icon:e.unref(h).VISIBILITY,size:e.unref(B).SMALL},null,8,["class","icon","size"])])):e.createCommentVNode("",!0)],10,Or),n.supportingText||f.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER])},[f.value?(e.openBlock(),e.createBlock(S,{key:0,class:e.normalizeClass([]),icon:e.unref(h).ERROR,size:e.unref(B).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_3])},e.toDisplayString(f.value?d.value:n.supportingText),3)],2)):e.createCommentVNode("",!0)],2))}}),Ir=F(Ar,[["__scopeId","data-v-06b25fb2"]]),Tr=["for"],pr=["maxlength","minlength","name","required","rows","id"],Nr=e.defineComponent({__name:"TideInputTextarea",props:e.mergeModels({error:{default:""},errorDisplay:{default:Q.LAZY},inputId:{default:void 0},label:{default:void 0},maxlength:{default:void 0},minlength:{default:void 0},name:{default:void 0},required:{type:Boolean,default:!1},rows:{default:8},supportingText:{default:void 0},validators:{default:void 0}},{modelValue:{required:!0},modelModifiers:{}}),emits:e.mergeModels(["valid"],["update:modelValue"]),setup(n,{emit:o}){const r=n,i=o,s=e.useModel(n,"modelValue"),a=pe(),l=e.ref(K.NO_ERROR),u=e.ref(!1),d=e.ref(!1),c=e.ref(null),E=e.computed(()=>r.required?`${r.label} *`:r.label),f=e.computed(()=>m.value?!0:d.value?!l.value.valid:!1),m=e.computed(()=>r.error!==""),v=e.computed(()=>u.value||!p.value),p=e.computed(()=>s.value===""),A=e.computed(()=>f.value&&l.value.message||r.supportingText),R=()=>{u.value=!0,r.errorDisplay===Q.EAGER&&(d.value=!0)},I=()=>{u.value=!1,r.errorDisplay===Q.LAZY&&(d.value=!0)},L=()=>{var N;(N=c.value)==null||N.focus()},g=N=>{u.value&&N.target!==c.value&&N.preventDefault()};return e.watchEffect(()=>{l.value=be({errorFromProps:r.error,maxlength:r.maxlength,minlength:r.minlength,required:r.required,validators:r.validators,value:s})}),e.watch(()=>a==null?void 0:a.forceShowErrors.value,N=>{N&&(d.value=!0)},{immediate:!0}),e.watch(l,()=>{i("valid",l.value.valid)},{deep:!0,immediate:!0}),(N,O)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-textarea",e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.QUARTER,f.value&&"error"])},[e.createElementVNode("label",{class:e.normalizeClass(["tide-input-textarea-field",e.unref(t).GAP.HALF,e.unref(t).POSITION.RELATIVE,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).PADDING.LEFT.ONE,e.unref(t).PADDING.TOP.HALF,e.unref(t).OVERFLOW.XY.HIDDEN,e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).CURSOR.TEXT]),for:n.inputId,onClick:L,onMousedown:g},[n.label?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["tide-input-textarea-label",v.value?["minilabel",e.unref(t).FONT.ROLE.LABEL_3]:e.unref(t).FONT.ROLE.LABEL_1,!f.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,e.unref(t).POINTER_EVENTS.OFF])},e.toDisplayString(E.value),3)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("textarea",{class:e.normalizeClass([e.unref(t).DISPLAY.BLOCK,e.unref(t).WIDTH.FULL,e.unref(t).FONT.ROLE.BODY_1]),maxlength:n.maxlength,minlength:n.minlength,name:n.name,ref_key:"textareaElement",ref:c,required:n.required,rows:n.rows,onFocus:R,onFocusout:I,id:n.inputId,"onUpdate:modelValue":O[0]||(O[0]=T=>s.value=T)},null,42,pr),[[e.vModelText,s.value]])],42,Tr),A.value?(e.openBlock(),e.createBlock(Te,{key:0,"is-error":f.value,message:A.value},null,8,["is-error","message"])):e.createCommentVNode("",!0)],2))}}),gr=F(Nr,[["__scopeId","data-v-a95001bb"]]),Cr=["for"],hr=["maxlength","minlength","name","required","rows","id"],Sr={},Fr=e.defineComponent({...Sr,__name:"TideInputTextareaDeprecated",props:{error:{type:[String,Boolean],default:!1},inputId:{default:void 0},label:{default:void 0},maxlength:{default:void 0},minlength:{default:void 0},name:{default:void 0},required:{type:Boolean,default:!1},rows:{default:8},supportingText:{default:void 0},value:{default:void 0}},setup(n,{expose:o}){const r=n,i=e.ref(r.error),s=e.ref(!1),a=e.ref(null),l=e.ref(r.value),u=e.computed(()=>Ue(r.error,i.value)),d=e.computed(()=>r.required?`${r.label} *`:r.label),c=e.computed(()=>r.required&&l.value!==void 0&&!l.value||ke(i.value,r.error)),E=e.computed(()=>s.value||!f.value),f=e.computed(()=>l.value===""||l.value===void 0),m=()=>{s.value=!0},v=()=>{s.value=!1,l.value||(l.value="")},p=()=>at({error:i,errorFromProps:r.error,maxlength:r.maxlength,minlength:r.minlength,required:r.required,value:l});return e.watch(()=>r.value,(A,R)=>{(A!==R||A!==l.value)&&(l.value=A)}),o({error:i,required:r.required,value:l}),(A,R)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-textarea",e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.QUARTER,c.value&&"error"])},[e.createElementVNode("label",{class:e.normalizeClass(["tide-input-textarea-field",e.unref(t).GAP.HALF,e.unref(t).POSITION.RELATIVE,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).PADDING.LEFT.ONE,e.unref(t).PADDING.TOP.HALF,e.unref(t).OVERFLOW.XY.HIDDEN,e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).CURSOR.TEXT]),for:n.inputId},[n.label?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["tide-input-textarea-label",E.value?["minilabel",e.unref(t).FONT.ROLE.LABEL_3]:e.unref(t).FONT.ROLE.LABEL_1,!c.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,e.unref(t).POINTER_EVENTS.OFF])},e.toDisplayString(d.value),3)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("textarea",{class:e.normalizeClass([e.unref(t).DISPLAY.BLOCK,e.unref(t).WIDTH.FULL,e.unref(t).FONT.ROLE.BODY_1]),maxlength:n.maxlength,minlength:n.minlength,name:n.name,ref_key:"input",ref:a,required:n.required,rows:n.rows,onChange:p,onFocus:m,onFocusout:v,id:n.inputId,"onUpdate:modelValue":R[0]||(R[0]=I=>l.value=I)},null,42,hr),[[e.vModelText,l.value]])],10,Cr),n.supportingText||c.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER])},[c.value?(e.openBlock(),e.createBlock(S,{key:0,icon:e.unref(h).ERROR,size:e.unref(B).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_3])},e.toDisplayString(c.value?u.value:n.supportingText),3)],2)):e.createCommentVNode("",!0)],2))}}),Dr=F(Fr,[["__scopeId","data-v-e3e8dc19"]]),Br=e.defineComponent({__name:"TideLink",props:{element:{default:y.LINK},href:{default:void 0},iconLeading:{default:void 0},iconTrailing:{default:void 0},isNewTab:{type:Boolean,default:!1},label:{default:void 0},subtle:{type:Boolean,default:!1}},setup(n){const o=n;return(r,i)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(o.element===e.unref(y).LINK?e.unref(y).LINK:e.unref(y).BUTTON),{class:e.normalizeClass(["tide-link",e.unref(t).DISPLAY.INLINE,e.unref(t).ALIGN.X.LEFT,n.subtle?[e.unref(t).UNDERLINE.REST.OFF,e.unref(t).UNDERLINE.HOVER.ON]:[e.unref(t).UNDERLINE.REST.ON,e.unref(t).UNDERLINE.HOVER.OFF]]),href:o.href,target:o.isNewTab?e.unref(M).BLANK:e.unref(M).SELF},{default:e.withCtx(()=>[o.iconLeading?(e.openBlock(),e.createBlock(S,{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.INLINE_BLOCK,e.unref(t).ALIGN.Y.MIDDLE,e.unref(t).MARGIN.RIGHT.QUARTER]),icon:o.iconLeading},null,8,["class","icon"])):e.createCommentVNode("",!0),e.createElementVNode("span",{class:e.normalizeClass([e.unref(t).ALIGN.Y.MIDDLE])},e.toDisplayString(o.label),3),o.iconTrailing?(e.openBlock(),e.createBlock(S,{key:1,class:e.normalizeClass([e.unref(t).DISPLAY.INLINE_BLOCK,e.unref(t).ALIGN.Y.MIDDLE,e.unref(t).MARGIN.LEFT.QUARTER]),icon:o.iconTrailing},null,8,["class","icon"])):e.createCommentVNode("",!0)]),_:1},8,["class","href","target"]))}}),ut={SM:"sm",MD:"md",LG:"lg",XL:"xl"},yr={SM:768,MD:992,LG:1232,XL:1920},ct=async n=>{const o=document.body;if(n){if(!o.dataset.scrollLockY){const r=window.scrollY;o.dataset.scrollLockY=r.toString(),o.style.setProperty("--saved-scroll-y",`${r}px`),o.style.setProperty("inset","0"),o.style.setProperty("margin-top","calc(0px - var(--saved-scroll-y, 0px))"),o.style.setProperty("overflow-y","scroll"),o.style.setProperty("position","fixed")}}else if(await e.nextTick(),!document.querySelector("dialog[open]")){const r=parseInt(o.dataset.scrollLockY||"0");o.style.removeProperty("inset"),o.style.removeProperty("marginTop"),o.style.removeProperty("overflowY"),o.style.removeProperty("position"),o.style.removeProperty("--saved-scroll-y"),window.scrollTo({behavior:"auto",top:r}),delete o.dataset.scrollLockY}},Le="tide-top-layer",dt=()=>{let n=document.getElementById(Le);n||(n=document.createElement("div"),n.id=Le,n.setAttribute("data-css-scope",""),document.body.appendChild(n)),n.style.isolation="isolate"},Pr=["textContent"],br=e.defineComponent({__name:"TideModal",props:{isBackButton:{type:Boolean,default:!1},isDismissible:{type:Boolean,default:!0},isOpen:{type:Boolean},title:{default:void 0},width:{default:void 0}},emits:["close","back"],setup(n,{emit:o}){const r=n,i=o,s=e.ref(),a=e.ref(),l=()=>{var f;(f=a.value)==null||f.showModal()},u=()=>{var f;(f=a.value)==null||f.close()},d=()=>{e.nextTick(()=>{s.value&&(s.value.scrollTop=0)})},c=()=>{r.isDismissible&&i("close")},E=f=>{f.preventDefault(),r.isDismissible&&i("close")};return e.watch(()=>r.isOpen,f=>{a.value&&(f?(l(),d()):u(),ct(f))}),e.onMounted(()=>{r.isOpen&&l()}),(f,m)=>(e.openBlock(),e.createElementBlock("dialog",{class:e.normalizeClass(["tide-modal",e.unref(t).BG.INITIAL,e.unref(t).HEIGHT.FULL,e.unref(t).WIDTH.FULL,e.unref(t).OVERFLOW.XY.HIDDEN]),ref_key:"modalDialog",ref:a,style:e.normalizeStyle({"--modal-width":r.width}),onClick:e.withModifiers(c,["self"]),onClose:m[2]||(m[2]=e.withModifiers(()=>{},["prevent"])),onKeydown:e.withKeys(E,["escape"])},[e.createElementVNode("div",{class:e.normalizeClass(["tide-modal-body",e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).BORDER.RADIUS.ONE,e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).OVERFLOW.XY.HIDDEN,e.unref(t).POSITION.ABSOLUTE,e.unref(t).POSITIONING.BOTTOM,e.unref(t).SHADOW.TOP,e.unref(t).WIDTH.FULL,e.unref(t).WIDTH.MAX_FULL,e.unref(t).withBreakpoint([e.unref(t).SHADOW.BOTTOM],e.unref(ut).SM)])},[e.createElementVNode("header",{class:e.normalizeClass(["tide-modal-header",e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.BOTTOM.ONE,e.unref(t).BORDER.COLOR.LOW,e.unref(t).DISPLAY.FLEX,e.unref(t).GAP.HALF,e.unref(t).ISOLATION.ISOLATE,e.unref(t).PADDING.Y.ONE,e.unref(t).POSITION.RELATIVE,e.unref(t).Z_INDEX.ONE])},[n.isBackButton?(e.openBlock(),e.createBlock(w,{key:0,icon:e.unref(h).CHEVRON_LEFT,priority:e.unref(U).QUATERNARY,onClick:m[0]||(m[0]=v=>i("back")),title:"Back"},null,8,["icon","priority"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).FONT.ROLE.HEADLINE_2]),textContent:e.toDisplayString(n.title)},null,10,Pr),n.isDismissible?(e.openBlock(),e.createBlock(w,{key:1,class:e.normalizeClass([e.unref(t).FLEX.GROW.OFF,e.unref(t).FLEX.SHRINK.OFF,e.unref(t).MARGIN.LEFT.AUTO]),icon:e.unref(h).CLOSE,priority:e.unref(U).QUATERNARY,onClick:m[1]||(m[1]=v=>i("close"))},null,8,["class","icon","priority"])):e.createCommentVNode("",!0)],2),e.createElementVNode("div",{class:e.normalizeClass(["tide-modal-content",e.unref(t).DISPLAY.GRID,e.unref(t).ISOLATION.ISOLATE,e.unref(t).OVERFLOW.X.HIDDEN,e.unref(t).OVERFLOW.Y.AUTO,e.unref(t).PADDING.Y.TWO,e.unref(t).WIDTH.FULL]),ref_key:"modalContent",ref:s},[e.renderSlot(f.$slots,"default",{},void 0,!0)],2),f.$slots.footer?(e.openBlock(),e.createElementBlock("footer",{key:0,class:e.normalizeClass(["tide-modal-footer",e.unref(t).AXIS1.END,e.unref(t).DISPLAY.FLEX,e.unref(t).GAP.TWO,e.unref(t).ISOLATION.ISOLATE,e.unref(t).PADDING.Y.ONE,e.unref(t).SHADOW.TOP])},[e.renderSlot(f.$slots,"footer",{},void 0,!0)],2)):e.createCommentVNode("",!0)],2)],38))}}),Ur=F(br,[["__scopeId","data-v-d61edad9"]]),kr=e.defineComponent({__name:"TidePagination",props:{pageCurrent:{default:1},pageTotal:{default:1}},emits:["change"],setup(n,{emit:o}){const r=n,i=o,s=e.ref(r.pageCurrent),a=e.computed(()=>new Array(r.pageTotal).fill("").map((u,d)=>d+1)),l=u=>{s.value=u,i("change",event,u)};return(u,d)=>(e.openBlock(),e.createElementBlock("section",{class:e.normalizeClass(["tide-pagination",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).WIDTH.FULL])},[e.createVNode(w,{disabled:s.value===1,icon:e.unref(h).CHEVRON_LEFT,priority:e.unref(U).QUATERNARY,onClick:d[0]||(d[0]=c=>l(s.value-1))},null,8,["disabled","icon","priority"]),e.createElementVNode("ul",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).LIST_BULLETS.OFF])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,c=>(e.openBlock(),e.createElementBlock("li",{key:c},[e.createVNode(rt,{disabled:s.value===c,label:c,priority:e.unref(U).QUATERNARY,onClick:E=>l(c)},null,8,["disabled","label","priority","onClick"])]))),128))],2),e.createVNode(w,{disabled:s.value===a.value[a.value.length-1],icon:e.unref(h).CHEVRON_RIGHT,priority:e.unref(U).QUATERNARY,onClick:d[1]||(d[1]=c=>l(s.value+1))},null,8,["disabled","icon","priority"])],2))}}),_r=["top","right","bottom","left"],He=["start","end"],Ye=_r.reduce((n,o)=>n.concat(o,o+"-"+He[0],o+"-"+He[1]),[]),Re=Math.min,te=Math.max,Ae=Math.round,ve=Math.floor,X=n=>({x:n,y:n}),Vr={left:"right",right:"left",bottom:"top",top:"bottom"},wr={start:"end",end:"start"};function ze(n,o,r){return te(n,Re(o,r))}function Ne(n,o){return typeof n=="function"?n(o):n}function ue(n){return n.split("-")[0]}function Z(n){return n.split("-")[1]}function ft(n){return n==="x"?"y":"x"}function Et(n){return n==="y"?"height":"width"}function ge(n){return["top","bottom"].includes(ue(n))?"y":"x"}function mt(n){return ft(ge(n))}function Gr(n,o,r){r===void 0&&(r=!1);const i=Z(n),s=mt(n),a=Et(s);let l=s==="x"?i===(r?"end":"start")?"right":"left":i==="start"?"bottom":"top";return o.reference[a]>o.floating[a]&&(l=Xe(l)),[l,Xe(l)]}function xr(n){return n.replace(/start|end/g,o=>wr[o])}function Xe(n){return n.replace(/left|right|bottom|top/g,o=>Vr[o])}function Mr(n){return{top:0,right:0,bottom:0,left:0,...n}}function Hr(n){return typeof n!="number"?Mr(n):{top:n,right:n,bottom:n,left:n}}function Ie(n){const{x:o,y:r,width:i,height:s}=n;return{width:i,height:s,top:r,left:o,right:o+i,bottom:r+s,x:o,y:r}}function We(n,o,r){let{reference:i,floating:s}=n;const a=ge(o),l=mt(o),u=Et(l),d=ue(o),c=a==="y",E=i.x+i.width/2-s.width/2,f=i.y+i.height/2-s.height/2,m=i[u]/2-s[u]/2;let v;switch(d){case"top":v={x:E,y:i.y-s.height};break;case"bottom":v={x:E,y:i.y+i.height};break;case"right":v={x:i.x+i.width,y:f};break;case"left":v={x:i.x-s.width,y:f};break;default:v={x:i.x,y:i.y}}switch(Z(o)){case"start":v[l]-=m*(r&&c?-1:1);break;case"end":v[l]+=m*(r&&c?-1:1);break}return v}const Yr=async(n,o,r)=>{const{placement:i="bottom",strategy:s="absolute",middleware:a=[],platform:l}=r,u=a.filter(Boolean),d=await(l.isRTL==null?void 0:l.isRTL(o));let c=await l.getElementRects({reference:n,floating:o,strategy:s}),{x:E,y:f}=We(c,i,d),m=i,v={},p=0;for(let A=0;A<u.length;A++){const{name:R,fn:I}=u[A],{x:L,y:g,data:N,reset:O}=await I({x:E,y:f,initialPlacement:i,placement:m,strategy:s,middlewareData:v,rects:c,platform:l,elements:{reference:n,floating:o}});E=L??E,f=g??f,v={...v,[R]:{...v[R],...N}},O&&p<=50&&(p++,typeof O=="object"&&(O.placement&&(m=O.placement),O.rects&&(c=O.rects===!0?await l.getElementRects({reference:n,floating:o,strategy:s}):O.rects),{x:E,y:f}=We(c,m,d)),A=-1)}return{x:E,y:f,placement:m,strategy:s,middlewareData:v}};async function vt(n,o){var r;o===void 0&&(o={});const{x:i,y:s,platform:a,rects:l,elements:u,strategy:d}=n,{boundary:c="clippingAncestors",rootBoundary:E="viewport",elementContext:f="floating",altBoundary:m=!1,padding:v=0}=Ne(o,n),p=Hr(v),R=u[m?f==="floating"?"reference":"floating":f],I=Ie(await a.getClippingRect({element:(r=await(a.isElement==null?void 0:a.isElement(R)))==null||r?R:R.contextElement||await(a.getDocumentElement==null?void 0:a.getDocumentElement(u.floating)),boundary:c,rootBoundary:E,strategy:d})),L=f==="floating"?{x:i,y:s,width:l.floating.width,height:l.floating.height}:l.reference,g=await(a.getOffsetParent==null?void 0:a.getOffsetParent(u.floating)),N=await(a.isElement==null?void 0:a.isElement(g))?await(a.getScale==null?void 0:a.getScale(g))||{x:1,y:1}:{x:1,y:1},O=Ie(a.convertOffsetParentRelativeRectToViewportRelativeRect?await a.convertOffsetParentRelativeRectToViewportRelativeRect({elements:u,rect:L,offsetParent:g,strategy:d}):L);return{top:(I.top-O.top+p.top)/N.y,bottom:(O.bottom-I.bottom+p.bottom)/N.y,left:(I.left-O.left+p.left)/N.x,right:(O.right-I.right+p.right)/N.x}}function zr(n,o,r){return(n?[...r.filter(s=>Z(s)===n),...r.filter(s=>Z(s)!==n)]:r.filter(s=>ue(s)===s)).filter(s=>n?Z(s)===n||(o?xr(s)!==s:!1):!0)}const Xr=function(n){return n===void 0&&(n={}),{name:"autoPlacement",options:n,async fn(o){var r,i,s;const{rects:a,middlewareData:l,placement:u,platform:d,elements:c}=o,{crossAxis:E=!1,alignment:f,allowedPlacements:m=Ye,autoAlignment:v=!0,...p}=Ne(n,o),A=f!==void 0||m===Ye?zr(f||null,v,m):m,R=await vt(o,p),I=((r=l.autoPlacement)==null?void 0:r.index)||0,L=A[I];if(L==null)return{};const g=Gr(L,a,await(d.isRTL==null?void 0:d.isRTL(c.floating)));if(u!==L)return{reset:{placement:A[0]}};const N=[R[ue(L)],R[g[0]],R[g[1]]],O=[...((i=l.autoPlacement)==null?void 0:i.overflows)||[],{placement:L,overflows:N}],T=A[I+1];if(T)return{data:{index:I+1,overflows:O},reset:{placement:T}};const C=O.map(D=>{const b=Z(D.placement);return[D.placement,b&&E?D.overflows.slice(0,2).reduce((J,gt)=>J+gt,0):D.overflows[0],D.overflows]}).sort((D,b)=>D[1]-b[1]),G=((s=C.filter(D=>D[2].slice(0,Z(D[0])?2:3).every(b=>b<=0))[0])==null?void 0:s[0])||C[0][0];return G!==u?{data:{index:I+1,overflows:O},reset:{placement:G}}:{}}}};async function Wr(n,o){const{placement:r,platform:i,elements:s}=n,a=await(i.isRTL==null?void 0:i.isRTL(s.floating)),l=ue(r),u=Z(r),d=ge(r)==="y",c=["left","top"].includes(l)?-1:1,E=a&&d?-1:1,f=Ne(o,n);let{mainAxis:m,crossAxis:v,alignmentAxis:p}=typeof f=="number"?{mainAxis:f,crossAxis:0,alignmentAxis:null}:{mainAxis:f.mainAxis||0,crossAxis:f.crossAxis||0,alignmentAxis:f.alignmentAxis};return u&&typeof p=="number"&&(v=u==="end"?p*-1:p),d?{x:v*E,y:m*c}:{x:m*c,y:v*E}}const qr=function(n){return n===void 0&&(n=0),{name:"offset",options:n,async fn(o){var r,i;const{x:s,y:a,placement:l,middlewareData:u}=o,d=await Wr(o,n);return l===((r=u.offset)==null?void 0:r.placement)&&(i=u.arrow)!=null&&i.alignmentOffset?{}:{x:s+d.x,y:a+d.y,data:{...d,placement:l}}}}},$r=function(n){return n===void 0&&(n={}),{name:"shift",options:n,async fn(o){const{x:r,y:i,placement:s}=o,{mainAxis:a=!0,crossAxis:l=!1,limiter:u={fn:R=>{let{x:I,y:L}=R;return{x:I,y:L}}},...d}=Ne(n,o),c={x:r,y:i},E=await vt(o,d),f=ge(ue(s)),m=ft(f);let v=c[m],p=c[f];if(a){const R=m==="y"?"top":"left",I=m==="y"?"bottom":"right",L=v+E[R],g=v-E[I];v=ze(L,v,g)}if(l){const R=f==="y"?"top":"left",I=f==="y"?"bottom":"right",L=p+E[R],g=p-E[I];p=ze(L,p,g)}const A=u.fn({...o,[m]:v,[f]:p});return{...A,data:{x:A.x-r,y:A.y-i,enabled:{[m]:a,[f]:l}}}}}};function Ce(){return typeof window<"u"}function re(n){return _e(n)?(n.nodeName||"").toLowerCase():"#document"}function V(n){var o;return(n==null||(o=n.ownerDocument)==null?void 0:o.defaultView)||window}function q(n){var o;return(o=(_e(n)?n.ownerDocument:n.document)||window.document)==null?void 0:o.documentElement}function _e(n){return Ce()?n instanceof Node||n instanceof V(n).Node:!1}function H(n){return Ce()?n instanceof Element||n instanceof V(n).Element:!1}function W(n){return Ce()?n instanceof HTMLElement||n instanceof V(n).HTMLElement:!1}function qe(n){return!Ce()||typeof ShadowRoot>"u"?!1:n instanceof ShadowRoot||n instanceof V(n).ShadowRoot}function me(n){const{overflow:o,overflowX:r,overflowY:i,display:s}=Y(n);return/auto|scroll|overlay|hidden|clip/.test(o+i+r)&&!["inline","contents"].includes(s)}function Kr(n){return["table","td","th"].includes(re(n))}function he(n){return[":popover-open",":modal"].some(o=>{try{return n.matches(o)}catch{return!1}})}function Ve(n){const o=we(),r=H(n)?Y(n):n;return["transform","translate","scale","rotate","perspective"].some(i=>r[i]?r[i]!=="none":!1)||(r.containerType?r.containerType!=="normal":!1)||!o&&(r.backdropFilter?r.backdropFilter!=="none":!1)||!o&&(r.filter?r.filter!=="none":!1)||["transform","translate","scale","rotate","perspective","filter"].some(i=>(r.willChange||"").includes(i))||["paint","layout","strict","content"].some(i=>(r.contain||"").includes(i))}function Qr(n){let o=j(n);for(;W(o)&&!ae(o);){if(Ve(o))return o;if(he(o))return null;o=j(o)}return null}function we(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}function ae(n){return["html","body","#document"].includes(re(n))}function Y(n){return V(n).getComputedStyle(n)}function Se(n){return H(n)?{scrollLeft:n.scrollLeft,scrollTop:n.scrollTop}:{scrollLeft:n.scrollX,scrollTop:n.scrollY}}function j(n){if(re(n)==="html")return n;const o=n.assignedSlot||n.parentNode||qe(n)&&n.host||q(n);return qe(o)?o.host:o}function Ot(n){const o=j(n);return ae(o)?n.ownerDocument?n.ownerDocument.body:n.body:W(o)&&me(o)?o:Ot(o)}function Ee(n,o,r){var i;o===void 0&&(o=[]),r===void 0&&(r=!0);const s=Ot(n),a=s===((i=n.ownerDocument)==null?void 0:i.body),l=V(s);if(a){const u=Pe(l);return o.concat(l,l.visualViewport||[],me(s)?s:[],u&&r?Ee(u):[])}return o.concat(s,Ee(s,[],r))}function Pe(n){return n.parent&&Object.getPrototypeOf(n.parent)?n.frameElement:null}function Lt(n){const o=Y(n);let r=parseFloat(o.width)||0,i=parseFloat(o.height)||0;const s=W(n),a=s?n.offsetWidth:r,l=s?n.offsetHeight:i,u=Ae(r)!==a||Ae(i)!==l;return u&&(r=a,i=l),{width:r,height:i,$:u}}function Ge(n){return H(n)?n:n.contextElement}function le(n){const o=Ge(n);if(!W(o))return X(1);const r=o.getBoundingClientRect(),{width:i,height:s,$:a}=Lt(o);let l=(a?Ae(r.width):r.width)/i,u=(a?Ae(r.height):r.height)/s;return(!l||!Number.isFinite(l))&&(l=1),(!u||!Number.isFinite(u))&&(u=1),{x:l,y:u}}const Zr=X(0);function Rt(n){const o=V(n);return!we()||!o.visualViewport?Zr:{x:o.visualViewport.offsetLeft,y:o.visualViewport.offsetTop}}function jr(n,o,r){return o===void 0&&(o=!1),!r||o&&r!==V(n)?!1:o}function ne(n,o,r,i){o===void 0&&(o=!1),r===void 0&&(r=!1);const s=n.getBoundingClientRect(),a=Ge(n);let l=X(1);o&&(i?H(i)&&(l=le(i)):l=le(n));const u=jr(a,r,i)?Rt(a):X(0);let d=(s.left+u.x)/l.x,c=(s.top+u.y)/l.y,E=s.width/l.x,f=s.height/l.y;if(a){const m=V(a),v=i&&H(i)?V(i):i;let p=m,A=Pe(p);for(;A&&i&&v!==p;){const R=le(A),I=A.getBoundingClientRect(),L=Y(A),g=I.left+(A.clientLeft+parseFloat(L.paddingLeft))*R.x,N=I.top+(A.clientTop+parseFloat(L.paddingTop))*R.y;d*=R.x,c*=R.y,E*=R.x,f*=R.y,d+=g,c+=N,p=V(A),A=Pe(p)}}return Ie({width:E,height:f,x:d,y:c})}function xe(n,o){const r=Se(n).scrollLeft;return o?o.left+r:ne(q(n)).left+r}function At(n,o,r){r===void 0&&(r=!1);const i=n.getBoundingClientRect(),s=i.left+o.scrollLeft-(r?0:xe(n,i)),a=i.top+o.scrollTop;return{x:s,y:a}}function Jr(n){let{elements:o,rect:r,offsetParent:i,strategy:s}=n;const a=s==="fixed",l=q(i),u=o?he(o.floating):!1;if(i===l||u&&a)return r;let d={scrollLeft:0,scrollTop:0},c=X(1);const E=X(0),f=W(i);if((f||!f&&!a)&&((re(i)!=="body"||me(l))&&(d=Se(i)),W(i))){const v=ne(i);c=le(i),E.x=v.x+i.clientLeft,E.y=v.y+i.clientTop}const m=l&&!f&&!a?At(l,d,!0):X(0);return{width:r.width*c.x,height:r.height*c.y,x:r.x*c.x-d.scrollLeft*c.x+E.x+m.x,y:r.y*c.y-d.scrollTop*c.y+E.y+m.y}}function eo(n){return Array.from(n.getClientRects())}function to(n){const o=q(n),r=Se(n),i=n.ownerDocument.body,s=te(o.scrollWidth,o.clientWidth,i.scrollWidth,i.clientWidth),a=te(o.scrollHeight,o.clientHeight,i.scrollHeight,i.clientHeight);let l=-r.scrollLeft+xe(n);const u=-r.scrollTop;return Y(i).direction==="rtl"&&(l+=te(o.clientWidth,i.clientWidth)-s),{width:s,height:a,x:l,y:u}}function no(n,o){const r=V(n),i=q(n),s=r.visualViewport;let a=i.clientWidth,l=i.clientHeight,u=0,d=0;if(s){a=s.width,l=s.height;const c=we();(!c||c&&o==="fixed")&&(u=s.offsetLeft,d=s.offsetTop)}return{width:a,height:l,x:u,y:d}}function ro(n,o){const r=ne(n,!0,o==="fixed"),i=r.top+n.clientTop,s=r.left+n.clientLeft,a=W(n)?le(n):X(1),l=n.clientWidth*a.x,u=n.clientHeight*a.y,d=s*a.x,c=i*a.y;return{width:l,height:u,x:d,y:c}}function $e(n,o,r){let i;if(o==="viewport")i=no(n,r);else if(o==="document")i=to(q(n));else if(H(o))i=ro(o,r);else{const s=Rt(n);i={x:o.x-s.x,y:o.y-s.y,width:o.width,height:o.height}}return Ie(i)}function It(n,o){const r=j(n);return r===o||!H(r)||ae(r)?!1:Y(r).position==="fixed"||It(r,o)}function oo(n,o){const r=o.get(n);if(r)return r;let i=Ee(n,[],!1).filter(u=>H(u)&&re(u)!=="body"),s=null;const a=Y(n).position==="fixed";let l=a?j(n):n;for(;H(l)&&!ae(l);){const u=Y(l),d=Ve(l);!d&&u.position==="fixed"&&(s=null),(a?!d&&!s:!d&&u.position==="static"&&!!s&&["absolute","fixed"].includes(s.position)||me(l)&&!d&&It(n,l))?i=i.filter(E=>E!==l):s=u,l=j(l)}return o.set(n,i),i}function so(n){let{element:o,boundary:r,rootBoundary:i,strategy:s}=n;const l=[...r==="clippingAncestors"?he(o)?[]:oo(o,this._c):[].concat(r),i],u=l[0],d=l.reduce((c,E)=>{const f=$e(o,E,s);return c.top=te(f.top,c.top),c.right=Re(f.right,c.right),c.bottom=Re(f.bottom,c.bottom),c.left=te(f.left,c.left),c},$e(o,u,s));return{width:d.right-d.left,height:d.bottom-d.top,x:d.left,y:d.top}}function io(n){const{width:o,height:r}=Lt(n);return{width:o,height:r}}function lo(n,o,r){const i=W(o),s=q(o),a=r==="fixed",l=ne(n,!0,a,o);let u={scrollLeft:0,scrollTop:0};const d=X(0);if(i||!i&&!a)if((re(o)!=="body"||me(s))&&(u=Se(o)),i){const m=ne(o,!0,a,o);d.x=m.x+o.clientLeft,d.y=m.y+o.clientTop}else s&&(d.x=xe(s));const c=s&&!i&&!a?At(s,u):X(0),E=l.left+u.scrollLeft-d.x-c.x,f=l.top+u.scrollTop-d.y-c.y;return{x:E,y:f,width:l.width,height:l.height}}function De(n){return Y(n).position==="static"}function Ke(n,o){if(!W(n)||Y(n).position==="fixed")return null;if(o)return o(n);let r=n.offsetParent;return q(n)===r&&(r=r.ownerDocument.body),r}function Tt(n,o){const r=V(n);if(he(n))return r;if(!W(n)){let s=j(n);for(;s&&!ae(s);){if(H(s)&&!De(s))return s;s=j(s)}return r}let i=Ke(n,o);for(;i&&Kr(i)&&De(i);)i=Ke(i,o);return i&&ae(i)&&De(i)&&!Ve(i)?r:i||Qr(n)||r}const ao=async function(n){const o=this.getOffsetParent||Tt,r=this.getDimensions,i=await r(n.floating);return{reference:lo(n.reference,await o(n.floating),n.strategy),floating:{x:0,y:0,width:i.width,height:i.height}}};function uo(n){return Y(n).direction==="rtl"}const co={convertOffsetParentRelativeRectToViewportRelativeRect:Jr,getDocumentElement:q,getClippingRect:so,getOffsetParent:Tt,getElementRects:ao,getClientRects:eo,getDimensions:io,getScale:le,isElement:H,isRTL:uo};function pt(n,o){return n.x===o.x&&n.y===o.y&&n.width===o.width&&n.height===o.height}function fo(n,o){let r=null,i;const s=q(n);function a(){var u;clearTimeout(i),(u=r)==null||u.disconnect(),r=null}function l(u,d){u===void 0&&(u=!1),d===void 0&&(d=1),a();const c=n.getBoundingClientRect(),{left:E,top:f,width:m,height:v}=c;if(u||o(),!m||!v)return;const p=ve(f),A=ve(s.clientWidth-(E+m)),R=ve(s.clientHeight-(f+v)),I=ve(E),g={rootMargin:-p+"px "+-A+"px "+-R+"px "+-I+"px",threshold:te(0,Re(1,d))||1};let N=!0;function O(T){const C=T[0].intersectionRatio;if(C!==d){if(!N)return l();C?l(!1,C):i=setTimeout(()=>{l(!1,1e-7)},1e3)}C===1&&!pt(c,n.getBoundingClientRect())&&l(),N=!1}try{r=new IntersectionObserver(O,{...g,root:s.ownerDocument})}catch{r=new IntersectionObserver(O,g)}r.observe(n)}return l(!0),a}function Eo(n,o,r,i){i===void 0&&(i={});const{ancestorScroll:s=!0,ancestorResize:a=!0,elementResize:l=typeof ResizeObserver=="function",layoutShift:u=typeof IntersectionObserver=="function",animationFrame:d=!1}=i,c=Ge(n),E=s||a?[...c?Ee(c):[],...Ee(o)]:[];E.forEach(I=>{s&&I.addEventListener("scroll",r,{passive:!0}),a&&I.addEventListener("resize",r)});const f=c&&u?fo(c,r):null;let m=-1,v=null;l&&(v=new ResizeObserver(I=>{let[L]=I;L&&L.target===c&&v&&(v.unobserve(o),cancelAnimationFrame(m),m=requestAnimationFrame(()=>{var g;(g=v)==null||g.observe(o)})),r()}),c&&!d&&v.observe(c),v.observe(o));let p,A=d?ne(n):null;d&&R();function R(){const I=ne(n);A&&!pt(A,I)&&r(),A=I,p=requestAnimationFrame(R)}return r(),()=>{var I;E.forEach(L=>{s&&L.removeEventListener("scroll",r),a&&L.removeEventListener("resize",r)}),f==null||f(),(I=v)==null||I.disconnect(),v=null,d&&cancelAnimationFrame(p)}}const Qe=qr,Ze=Xr,je=$r,mo=(n,o,r)=>{const i=new Map,s={platform:co,...r},a={...s.platform,_c:i};return Yr(n,o,{...s,platform:a})};function vo(n){return n!=null&&typeof n=="object"&&"$el"in n}function Je(n){if(vo(n)){const o=n.$el;return _e(o)&&re(o)==="#comment"?null:o}return n}function de(n){return typeof n=="function"?n():e.unref(n)}function Nt(n){return typeof window>"u"?1:(n.ownerDocument.defaultView||window).devicePixelRatio||1}function et(n,o){const r=Nt(n);return Math.round(o*r)/r}function Oo(n,o,r){r===void 0&&(r={});const i=r.whileElementsMounted,s=e.computed(()=>{var C;return(C=de(r.open))!=null?C:!0}),a=e.computed(()=>de(r.middleware)),l=e.computed(()=>{var C;return(C=de(r.placement))!=null?C:"bottom"}),u=e.computed(()=>{var C;return(C=de(r.strategy))!=null?C:"absolute"}),d=e.computed(()=>{var C;return(C=de(r.transform))!=null?C:!0}),c=e.computed(()=>Je(n.value)),E=e.computed(()=>Je(o.value)),f=e.ref(0),m=e.ref(0),v=e.ref(u.value),p=e.ref(l.value),A=e.shallowRef({}),R=e.ref(!1),I=e.computed(()=>{const C={position:v.value,left:"0",top:"0"};if(!E.value)return C;const k=et(E.value,f.value),G=et(E.value,m.value);return d.value?{...C,transform:"translate("+k+"px, "+G+"px)",...Nt(E.value)>=1.5&&{willChange:"transform"}}:{position:v.value,left:k+"px",top:G+"px"}});let L;function g(){if(c.value==null||E.value==null)return;const C=s.value;mo(c.value,E.value,{middleware:a.value,placement:l.value,strategy:u.value}).then(k=>{f.value=k.x,m.value=k.y,v.value=k.strategy,p.value=k.placement,A.value=k.middlewareData,R.value=C!==!1})}function N(){typeof L=="function"&&(L(),L=void 0)}function O(){if(N(),i===void 0){g();return}if(c.value!=null&&E.value!=null){L=i(c.value,E.value,g);return}}function T(){s.value||(R.value=!1)}return e.watch([a,l,u,s],g,{flush:"sync"}),e.watch([c,E],O,{flush:"sync"}),e.watch(s,T,{flush:"sync"}),e.getCurrentScope()&&e.onScopeDispose(N),{x:e.shallowReadonly(f),y:e.shallowReadonly(m),strategy:e.shallowReadonly(v),placement:e.shallowReadonly(p),middlewareData:e.shallowReadonly(A),isPositioned:e.shallowReadonly(R),floatingStyles:I,update:g}}const Lo=(n,o)=>!(Array.isArray(o)?o:[o]).some(i=>i.contains(n.target)),Ro=e.defineComponent({__name:"TidePopover",props:{anchorId:{},offset:{default:16}},setup(n){const o=n,r=e.ref(null),i=e.ref(null),s=e.ref(null),a=e.ref(!1),l=e.ref(!1),u=e.ref([Ze(),Qe({mainAxis:o.offset}),je({padding:16})]),d=e.computed(()=>a.value||l.value),{floatingStyles:c}=Oo(r,i,{middleware:u,strategy:"fixed",whileElementsMounted:Eo}),E=N=>{!r.value||!i.value||Lo(N,[r.value,i.value])&&(l.value=!1,N.preventDefault(),N.stopImmediatePropagation())},f=()=>{a.value=!0},m=()=>{a.value=!1},v=N=>{N.preventDefault(),l.value?(l.value=!1,a.value=!1):l.value=!0},p=()=>{if(!r.value)return null;r.value.addEventListener("mouseover",f),r.value.addEventListener("mouseleave",m),r.value.addEventListener("click",v)},A=()=>{if(!r.value)return null;r.value.removeEventListener("mouseover",f),r.value.removeEventListener("mouseleave",m),r.value.removeEventListener("click",v)},R=N=>{N.key==="Escape"&&(l.value=!1)},I=()=>{s.value&&(s.value.addEventListener("click",E,!0),s.value.addEventListener("keydown",R))},L=()=>{s.value&&(s.value.removeEventListener("click",E,!0),s.value.removeEventListener("keydown",R))},g=()=>{r.value=document.getElementById(o.anchorId)};return e.watch(()=>l.value,N=>{N?I():L()}),e.watch(()=>o.anchorId,()=>{A(),g(),p()}),e.watchEffect(()=>{u.value=[Ze(),Qe({mainAxis:o.offset}),je({padding:16})]}),e.onBeforeMount(()=>{dt()}),e.onMounted(()=>{g(),s.value=document.documentElement,p()}),e.onUnmounted(()=>{A()}),(N,O)=>(e.openBlock(),e.createBlock(e.Teleport,{to:`#${e.unref(Le)}`},[e.createVNode(e.Transition,null,{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("div",{class:e.normalizeClass(["tide-popover",e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).BORDER.COLOR.LOW,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).FONT.ROLE.BODY_2,e.unref(t).PADDING.FULL.ONE,e.unref(t).SHADOW.BOTTOM]),ref_key:"floating",ref:i,style:e.normalizeStyle({...e.unref(c)})},[e.renderSlot(N.$slots,"default",{},void 0,!0)],6),[[e.vShow,d.value]])]),_:3})],8,["to"]))}}),Ao=F(Ro,[["__scopeId","data-v-508322dc"]]),Io={class:"tide-seo-links"},To=["href","target"],po=e.defineComponent({__name:"TideSeoLinks",props:{heading:{default:""},links:{}},setup(n){const o=n;return(r,i)=>(e.openBlock(),e.createElementBlock("section",Io,[e.createElementVNode("h2",{class:e.normalizeClass([e.unref(t).MARGIN.BOTTOM.HALF])},e.toDisplayString(o.heading),3),e.createElementVNode("ul",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.WRAP,e.unref(t).GAP.TWO,e.unref(t).LIST_BULLETS.OFF])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.links,s=>(e.openBlock(),e.createElementBlock("li",{class:e.normalizeClass(["tide-seo-link",e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.QUARTER,e.unref(t).FONT.ROLE.BODY_2]),key:s.label},[e.createElementVNode("a",{class:e.normalizeClass([e.unref(t).UNDERLINE.REST.OFF]),href:s.url,target:s.isNewTab?e.unref(M).BLANK:e.unref(M).SELF},e.toDisplayString(s.label),11,To)],2))),128))],2)]))}}),No=F(po,[["__scopeId","data-v-e655eb08"]]),go=e.defineComponent({__name:"TideSheet",props:{isOpen:{type:Boolean},isBackButton:{type:Boolean}},emits:["back","close"],setup(n,{emit:o}){const r=n,i=o,s=e.ref(null),a=()=>{var c;(c=s.value)==null||c.showModal()},l=()=>{var c;(c=s.value)==null||c.close()},u=()=>{i("close")},d=c=>{c.preventDefault(),i("close")};return e.watch(()=>r.isOpen,c=>{s.value&&(c?a():l(),ct(c))}),e.onBeforeMount(()=>{dt()}),e.onMounted(()=>{r.isOpen&&a()}),(c,E)=>(e.openBlock(),e.createBlock(e.Teleport,{to:`#${e.unref(Le)}`},[e.createElementVNode("dialog",{class:e.normalizeClass(["tide-sheet",e.unref(t).BG.INITIAL,e.unref(t).HEIGHT.FULL,e.unref(t).WIDTH.FULL,e.unref(t).OVERFLOW.XY.HIDDEN]),ref_key:"dialogElement",ref:s,onClick:e.withModifiers(u,["self"]),onClose:E[2]||(E[2]=e.withModifiers(()=>{},["prevent"])),onKeydown:e.withKeys(d,["escape"])},[e.createElementVNode("div",{class:e.normalizeClass(["tide-sheet-body",e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).HEIGHT.FULL,e.unref(t).OVERFLOW.XY.HIDDEN,e.unref(t).WIDTH.FULL])},[e.createElementVNode("header",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).ISOLATION.ISOLATE,e.unref(t).PADDING.TOP.ONE,e.unref(t).PADDING.X.ONE,e.unref(t).POSITION.RELATIVE,e.unref(t).Z_INDEX.ONE])},[n.isBackButton?(e.openBlock(),e.createBlock(w,{key:0,class:e.normalizeClass([e.unref(t).FLEX.GROW.OFF,e.unref(t).FLEX.SHRINK.OFF]),icon:e.unref(h).CHEVRON_LEFT,priority:e.unref(U).QUATERNARY,onClick:E[0]||(E[0]=f=>i("back"))},null,8,["class","icon","priority"])):e.createCommentVNode("",!0),e.createVNode(w,{class:e.normalizeClass([e.unref(t).FLEX.GROW.OFF,e.unref(t).FLEX.SHRINK.OFF,e.unref(t).MARGIN.LEFT.AUTO]),icon:e.unref(h).CLOSE,priority:e.unref(U).QUATERNARY,onClick:E[1]||(E[1]=f=>i("close"))},null,8,["class","icon","priority"])],2),e.createVNode(Oe),e.createElementVNode("div",{class:e.normalizeClass(["tide-sheet-content",e.unref(t).DISPLAY.GRID,e.unref(t).OVERFLOW.Y.AUTO,e.unref(t).OVERFLOW.X.HIDDEN,e.unref(t).WIDTH.FULL,e.unref(t).PADDING.BOTTOM.ONE,e.unref(t).ISOLATION.ISOLATE])},[e.renderSlot(c.$slots,"default",{},void 0,!0)],2)],2)],34)],8,["to"]))}}),Co=F(go,[["__scopeId","data-v-fb4090d4"]]),ho=["disabled"],So=e.defineComponent({__name:"TideSwitch",props:{disabled:{type:Boolean,default:!1},isActive:{type:Boolean,default:!1}},emits:["change"],setup(n,{emit:o}){const r=n,i=o,s=()=>{r.disabled||i("change")};return(a,l)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["tide-switch",r.isActive?"active":"",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.FULL,r.isActive?"":e.unref(t).BORDER.COLOR.DEFAULT,e.unref(t).OVERFLOW.XY.HIDDEN,r.isActive?e.unref(t).BG.SECONDARY:e.unref(t).BG.SURFACE.DEFAULT]),disabled:r.disabled,onClick:s,"aria-label":"Switch"},[e.createElementVNode("div",{class:e.normalizeClass(["tide-switch-indicator",e.unref(t).POSITION.RELATIVE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.RADIUS.FULL,r.isActive?e.unref(t).BG.SURFACE.DEFAULT:e.unref(t).BG.SECONDARY])},[e.createVNode(S,{icon:e.unref(h).CHECK,size:e.unref(B).LARGE},null,8,["icon","size"])],2)],10,ho))}}),Fo=F(So,[["__scopeId","data-v-4cd3a737"]]);exports.ALERT=_;exports.BADGE_COLOR=x;exports.BADGE_COLOR_DETAILS=ye;exports.BADGE_TRUSTED=nt;exports.BREAKPOINT=ut;exports.CSS=t;exports.ELEMENT=y;exports.ELEMENT_TEXT_AS_ICON=$;exports.FORMAT=Yn;exports.FORMAT_REGEX=se;exports.ICON=h;exports.ICON_REALM=Bt;exports.INPUT_MODE=ie;exports.MEDIA=yr;exports.OBJECT_FIT=ee;exports.ORIENTATION=Be;exports.PRIORITY=U;exports.REALM=tt;exports.SIZE=B;exports.SIZE_BUTTON=oe;exports.TARGET=M;exports.TEXT_INPUT_TYPE=P;exports.TYPE_CARD=fe;exports.TideAccordionItem=bt;exports.TideAlert=kt;exports.TideBadge=_t;exports.TideBadgeTrustedPartner=Vt;exports.TideBadgeVerifiedVehicle=Gt;exports.TideBreadCrumbs=Yt;exports.TideButton=zt;exports.TideButtonIcon=w;exports.TideButtonPagination=rt;exports.TideButtonSegmented=$t;exports.TideCard=Qt;exports.TideCarousel=jt;exports.TideChipAction=en;exports.TideChipFilter=nn;exports.TideChipInput=on;exports.TideColumns=fn;exports.TideDivider=Oe;exports.TideIcon=S;exports.TideImage=ot;exports.TideImageBackground=Ln;exports.TideIndicator=In;exports.TideInputCheckbox=Fn;exports.TideInputCheckboxDeprecated=bn;exports.TideInputRadio=Vn;exports.TideInputRadioDeprecated=Hn;exports.TideInputSelect=jn;exports.TideInputSelectDeprecated=cr;exports.TideInputText=vr;exports.TideInputTextDeprecated=Ir;exports.TideInputTextarea=gr;exports.TideInputTextareaDeprecated=Dr;exports.TideLink=Br;exports.TideModal=Ur;exports.TidePagination=kr;exports.TidePopover=Ao;exports.TideSeoLinks=No;exports.TideSheet=Co;exports.TideSwitch=Fo;exports.VALIDATOR=zn;exports.useTideForm=Tn;
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlkZS1kZXNpZ24tc3lzdGVtLmNqcyIsInNvdXJjZXMiOlsiLi4vc3JjL3R5cGVzL09yaWVudGF0aW9uLnRzIiwiLi4vc3JjL3R5cGVzL1N0eWxlcy50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVEaXZpZGVyLnZ1ZSIsIi4uL3NyYy90eXBlcy9SZWFsbS50cyIsIi4uL3NyYy90eXBlcy9TaXplLnRzIiwiLi4vc3JjL3V0aWxpdGllcy9mb3JtYXQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSWNvbi52dWUiLCIuLi9zcmMvdHlwZXMvSWNvbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVBY2NvcmRpb25JdGVtLnZ1ZSIsIi4uL3NyYy90eXBlcy9FbGVtZW50LnRzIiwiLi4vc3JjL3R5cGVzL1ByaW9yaXR5LnRzIiwiLi4vc3JjL3R5cGVzL1RhcmdldC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSIsIi4uL3NyYy90eXBlcy9BbGVydC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVBbGVydC52dWUiLCIuLi9zcmMvdHlwZXMvQmFkZ2UudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQmFkZ2UudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUJhZGdlVHJ1c3RlZFBhcnRuZXIudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUJhZGdlVmVyaWZpZWRWZWhpY2xlLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCcmVhZENydW1icy52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQnV0dG9uLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCdXR0b25QYWdpbmF0aW9uLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCdXR0b25TZWdtZW50ZWQudnVlIiwiLi4vc3JjL3R5cGVzL0NhcmQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQ2FyZC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQ2Fyb3VzZWwudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUNoaXBBY3Rpb24udnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUNoaXBGaWx0ZXIudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUNoaXBJbnB1dC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQ29sdW1ucy52dWUiLCIuLi9zcmMvdHlwZXMvSW1hZ2UudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW1hZ2UudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUltYWdlQmFja2dyb3VuZC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5kaWNhdG9yLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFN1cHBvcnRpbmdUZXh0LnZ1ZSIsIi4uL3NyYy9jb21wb3NhYmxlcy91c2VUaWRlRm9ybS50cyIsIi4uL3NyYy91dGlsaXRpZXMvdmFsaWRhdGlvbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dENoZWNrYm94LnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dENoZWNrYm94RGVwcmVjYXRlZC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRSYWRpby52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRSYWRpb0RlcHJlY2F0ZWQudnVlIiwiLi4vc3JjL3R5cGVzL0Zvcm1hdHRlZC50cyIsIi4uL3NyYy90eXBlcy9WYWxpZGF0aW9uLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0U2VsZWN0LnZ1ZSIsIi4uL3NyYy91dGlsaXRpZXMvdmFsaWRhdGlvbi1kZXByZWNhdGVkLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0U2VsZWN0RGVwcmVjYXRlZC52dWUiLCIuLi9zcmMvdHlwZXMvVGV4dElucHV0LnRzIiwiLi4vc3JjL3V0aWxpdGllcy9mb3Jtcy50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFRleHQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0VGV4dERlcHJlY2F0ZWQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0VGV4dGFyZWEudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0VGV4dGFyZWFEZXByZWNhdGVkLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVMaW5rLnZ1ZSIsIi4uL3NyYy90eXBlcy9CcmVha3BvaW50LnRzIiwiLi4vc3JjL3V0aWxpdGllcy92aWV3cG9ydC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVNb2RhbC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlUGFnaW5hdGlvbi52dWUiLCIuLi9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL3V0aWxzL2Rpc3QvZmxvYXRpbmctdWkudXRpbHMubWpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbG9hdGluZy11aS9jb3JlL2Rpc3QvZmxvYXRpbmctdWkuY29yZS5tanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL3V0aWxzL2Rpc3QvZmxvYXRpbmctdWkudXRpbHMuZG9tLm1qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvZG9tL2Rpc3QvZmxvYXRpbmctdWkuZG9tLm1qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvdnVlL2Rpc3QvZmxvYXRpbmctdWkudnVlLm1qcyIsIi4uL3NyYy91dGlsaXRpZXMvZXZlbnQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlUG9wb3Zlci52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlU2VvTGlua3MudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZVNoZWV0LnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVTd2l0Y2gudnVlIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBPUklFTlRBVElPTiA9IHtcbiAgSE9SSVpPTlRBTDogJ2hvcml6b250YWwnLFxuICBWRVJUSUNBTDogJ3ZlcnRpY2FsJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIE9yaWVudGF0aW9uID0gKHR5cGVvZiBPUklFTlRBVElPTilba2V5b2YgdHlwZW9mIE9SSUVOVEFUSU9OXTtcbiIsIi8qIGVzbGludC1kaXNhYmxlIHZ1ZS9zb3J0LWtleXMgKi9cblxuaW1wb3J0IHR5cGUgeyBCcmVha3BvaW50IH0gZnJvbSAnQC90eXBlcy9CcmVha3BvaW50JztcblxuZXhwb3J0IGNvbnN0IENTUyA9IHtcbiAgd2l0aEJyZWFrcG9pbnQ6ICh1dGlsaXRpZXM6IHN0cmluZ1tdLCBicmVha3BvaW50OiBCcmVha3BvaW50KTogc3RyaW5nW10gPT4ge1xuICAgIHJldHVybiB1dGlsaXRpZXMubWFwKCh1dGlsaXR5KSA9PiBgJHticmVha3BvaW50fS0ke3V0aWxpdHl9YCk7XG4gIH0sXG4gIEFMSUdOOiB7XG4gICAgWDoge1xuICAgICAgQ0VOVEVSOiAndGlkZS10ZXh0LWNlbnRlcicsXG4gICAgICBKVVNUSUZZOiAndGlkZS10ZXh0LWp1c3RpZnknLFxuICAgICAgTEVGVDogJ3RpZGUtdGV4dC1sZWZ0JyxcbiAgICAgIFJJR0hUOiAndGlkZS10ZXh0LXJpZ2h0JyxcbiAgICB9LFxuICAgIFk6IHtcbiAgICAgIElOSVRJQUw6ICd0aWRlLWFsaWduLWluaXRpYWwnLFxuICAgICAgTUlERExFOiAndGlkZS1hbGlnbi1taWRkbGUnLFxuICAgIH0sXG4gIH0sXG4gIEFYSVMxOiB7XG4gICAgQVJPVU5EOiAndGlkZS1heGlzMS1hcm91bmQnLFxuICAgIEJFVFdFRU46ICd0aWRlLWF4aXMxLWJldHdlZW4nLFxuICAgIENFTlRFUjogJ3RpZGUtYXhpczEtY2VudGVyJyxcbiAgICBFTkQ6ICd0aWRlLWF4aXMxLWVuZCcsXG4gICAgU1RBUlQ6ICd0aWRlLWF4aXMxLXN0YXJ0JyxcbiAgfSxcbiAgQVhJUzI6IHtcbiAgICBBUk9VTkQ6ICd0aWRlLWF4aXMyLWFyb3VuZCcsXG4gICAgQ0VOVEVSOiAndGlkZS1heGlzMi1jZW50ZXInLFxuICAgIEVORDogJ3RpZGUtYXhpczItZW5kJyxcbiAgICBTVEFSVDogJ3RpZGUtYXhpczItc3RhcnQnLFxuICAgIFNUUkVUQ0g6ICd0aWRlLWF4aXMyLXN0cmV0Y2gnLFxuICB9LFxuICBCRzoge1xuICAgIEdMT0JBTDoge1xuICAgICAgUFJJTUFSWToge1xuICAgICAgICBFUlJPUjogJ3RpZGUtYmctcHJpbWFyeS1lcnJvcicsXG4gICAgICAgIElORk86ICd0aWRlLWJnLXByaW1hcnktaW5mbycsXG4gICAgICAgIFNVQ0NFU1M6ICd0aWRlLWJnLXByaW1hcnktc3VjY2VzcycsXG4gICAgICAgIFdBUk5JTkc6ICd0aWRlLWJnLXByaW1hcnktd2FybmluZycsXG4gICAgICB9LFxuICAgICAgU1VSRkFDRToge1xuICAgICAgICBFUlJPUjogJ3RpZGUtYmctc3VyZmFjZS1lcnJvcicsXG4gICAgICAgIElORk86ICd0aWRlLWJnLXN1cmZhY2UtaW5mbycsXG4gICAgICAgIFNVQ0NFU1M6ICd0aWRlLWJnLXN1cmZhY2Utc3VjY2VzcycsXG4gICAgICAgIFdBUk5JTkc6ICd0aWRlLWJnLXN1cmZhY2Utd2FybmluZycsXG5cbiAgICAgICAgQkxVRTogJ3RpZGUtYmctc3VyZmFjZS1ibHVlJyxcbiAgICAgICAgR1JFRU46ICd0aWRlLWJnLXN1cmZhY2UtZ3JlZW4nLFxuICAgICAgICBMSU1FOiAndGlkZS1iZy1zdXJmYWNlLWxpbWUnLFxuICAgICAgICBPUkFOR0U6ICd0aWRlLWJnLXN1cmZhY2Utb3JhbmdlJyxcbiAgICAgICAgUFVSUExFOiAndGlkZS1iZy1zdXJmYWNlLXB1cnBsZScsXG4gICAgICAgIFJFRDogJ3RpZGUtYmctc3VyZmFjZS1yZWQnLFxuICAgICAgICBTQUxNT046ICd0aWRlLWJnLXN1cmZhY2Utc2FsbW9uJyxcbiAgICAgICAgVEVBTDogJ3RpZGUtYmctc3VyZmFjZS10ZWFsJyxcbiAgICAgICAgWUVMTE9XOiAndGlkZS1iZy1zdXJmYWNlLXllbGxvdycsXG4gICAgICB9LFxuICAgIH0sXG4gICAgSU5JVElBTDogJ3RpZGUtYmctaW5pdGlhbCcsXG4gICAgQkxVUjogJ3RpZGUtYmctYmx1cicsXG4gICAgUFJJTUFSWTogJ3RpZGUtYmctcHJpbWFyeScsXG4gICAgU0VDT05EQVJZOiAndGlkZS1iZy1zZWNvbmRhcnknLFxuICAgIFNVUkZBQ0U6IHtcbiAgICAgIEFDQ0VOVDogJ3RpZGUtYmctc3VyZmFjZS1hY2NlbnQnLFxuICAgICAgQlJBTkQ6ICd0aWRlLWJnLXN1cmZhY2UtYnJhbmQnLFxuICAgICAgREVGQVVMVDogJ3RpZGUtYmctc3VyZmFjZScsXG4gICAgICBGTE9BVElORzogJ3RpZGUtYmctc3VyZmFjZS1mbG9hdGluZycsXG4gICAgICBHUkFESUVOVDogJ3RpZGUtYmctc3VyZmFjZS1ncmFkaWVudCcsXG4gICAgICBWQVJJQU5UOiAndGlkZS1iZy1zdXJmYWNlLXZhcmlhbnQnLFxuICAgIH0sXG4gICAgVFJBTlNQQVJFTlQ6IHtcbiAgICAgIE9ORV9IVU5EUkVEOiAndGlkZS10cmFuc3BhcmVudC0xMDAnLFxuICAgICAgVFdPX0hVTkRSRUQ6ICd0aWRlLXRyYW5zcGFyZW50LTIwMCcsXG4gICAgICBUSFJFRV9IVU5EUkVEOiAndGlkZS10cmFuc3BhcmVudC0zMDAnLFxuICAgICAgRk9VUl9IVU5EUkVEOiAndGlkZS10cmFuc3BhcmVudC00MDAnLFxuICAgIH0sXG4gIH0sXG4gIEJPUkRFUjoge1xuICAgIENPTE9SOiB7XG4gICAgICBHTE9CQUw6IHtcbiAgICAgICAgRVJST1I6ICd0aWRlLWJvcmRlci1lcnJvcicsXG4gICAgICAgIElORk86ICd0aWRlLWJvcmRlci1pbmZvJyxcbiAgICAgICAgU1VDQ0VTUzogJ3RpZGUtYm9yZGVyLXN1Y2Nlc3MnLFxuICAgICAgICBXQVJOSU5HOiAndGlkZS1ib3JkZXItd2FybmluZycsXG5cbiAgICAgICAgQkxVRTogJ3RpZGUtYm9yZGVyLWJsdWUnLFxuICAgICAgICBHUkVFTjogJ3RpZGUtYm9yZGVyLWdyZWVuJyxcbiAgICAgICAgTElNRTogJ3RpZGUtYm9yZGVyLWxpbWUnLFxuICAgICAgICBPUkFOR0U6ICd0aWRlLWJvcmRlci1vcmFuZ2UnLFxuICAgICAgICBQVVJQTEU6ICd0aWRlLWJvcmRlci1wdXJwbGUnLFxuICAgICAgICBSRUQ6ICd0aWRlLWJvcmRlci1yZWQnLFxuICAgICAgICBTQUxNT046ICd0aWRlLWJvcmRlci1zYWxtb24nLFxuICAgICAgICBURUFMOiAndGlkZS1ib3JkZXItdGVhbCcsXG4gICAgICAgIFlFTExPVzogJ3RpZGUtYm9yZGVyLXllbGxvdycsXG4gICAgICB9LFxuICAgICAgSU5JVElBTDogJ3RpZGUtYm9yZGVyLWNvbG9yLWluaXRpYWwnLFxuICAgICAgREVGQVVMVDogJ3RpZGUtYm9yZGVyJyxcbiAgICAgIEZMT0FUSU5HOiAndGlkZS1ib3JkZXItZmxvYXRpbmcnLFxuICAgICAgSElHSDogJ3RpZGUtYm9yZGVyLWhpZ2gnLFxuICAgICAgTE9XOiAndGlkZS1ib3JkZXItbG93JyxcbiAgICAgIFBSSU1BUlk6ICd0aWRlLWJvcmRlci1wcmltYXJ5JyxcbiAgICB9LFxuICAgIFJBRElVUzoge1xuICAgICAgWkVSTzogJ3RpZGUtcmFkaXVzLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcmFkaXVzLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1yYWRpdXMtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcmFkaXVzLTEnLFxuICAgICAgRlVMTDogJ3RpZGUtcmFkaXVzLWZ1bGwnLFxuICAgIH0sXG4gICAgU1RZTEU6IHtcbiAgICAgIERBU0hFRDogJ3RpZGUtYm9yZGVyLWRhc2hlZCcsXG4gICAgICBTT0xJRDogJ3RpZGUtYm9yZGVyLXNvbGlkJyxcbiAgICB9LFxuICAgIEJPVFRPTToge1xuICAgICAgWkVSTzogJ3RpZGUtYm9yZGVyLWJvdHRvbS0wJyxcbiAgICAgIE9ORTogJ3RpZGUtYm9yZGVyLWJvdHRvbS0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLWJvdHRvbS0yJyxcbiAgICB9LFxuICAgIEZVTEw6IHtcbiAgICAgIFpFUk86ICd0aWRlLWJvcmRlci0wJyxcbiAgICAgIE9ORTogJ3RpZGUtYm9yZGVyLTEnLFxuICAgICAgVFdPOiAndGlkZS1ib3JkZXItMicsXG4gICAgfSxcbiAgICBMRUZUOiB7XG4gICAgICBaRVJPOiAndGlkZS1ib3JkZXItbGVmdC0wJyxcbiAgICAgIE9ORTogJ3RpZGUtYm9yZGVyLWxlZnQtMScsXG4gICAgICBUV086ICd0aWRlLWJvcmRlci1sZWZ0LTInLFxuICAgIH0sXG4gICAgUklHSFQ6IHtcbiAgICAgIFpFUk86ICd0aWRlLWJvcmRlci1yaWdodC0wJyxcbiAgICAgIE9ORTogJ3RpZGUtYm9yZGVyLXJpZ2h0LTEnLFxuICAgICAgVFdPOiAndGlkZS1ib3JkZXItcmlnaHQtMicsXG4gICAgfSxcbiAgICBUT1A6IHtcbiAgICAgIFpFUk86ICd0aWRlLWJvcmRlci10b3AtMCcsXG4gICAgICBPTkU6ICd0aWRlLWJvcmRlci10b3AtMScsXG4gICAgICBUV086ICd0aWRlLWJvcmRlci10b3AtMicsXG4gICAgfSxcbiAgfSxcbiAgQk9YX1NJWklORzoge1xuICAgIEJPUkRFUl9CT1g6ICd0aWRlLWJveC1ib3JkZXInLFxuICAgIENPTlRFTlRfQk9YOiAndGlkZS1ib3gtY29udGVudCcsXG4gIH0sXG4gIEJSRUFLX0lOU0lERToge1xuICAgIEFWT0lEX0NPTFVNTjogJ3RpZGUtYnJlYWstaW5zaWRlLWF2b2lkLWNvbHVtbicsXG4gIH0sXG4gIEJSRUFLX1dPUkQ6IHtcbiAgICBPRkY6ICd0aWRlLWJyZWFrLWluaXRpYWwnLFxuICAgIE9OOiAndGlkZS1icmVhay13b3JkJyxcbiAgfSxcbiAgQ09MVU1OUzoge1xuICAgIElOSVRJQUw6ICd0aWRlLWNvbHVtbnMtaW5pdGlhbCcsXG4gICAgT05FOiAndGlkZS1jb2x1bW5zLTEnLFxuICAgIFRXTzogJ3RpZGUtY29sdW1ucy0yJyxcbiAgICBUSFJFRTogJ3RpZGUtY29sdW1ucy0zJyxcbiAgICBGT1VSOiAndGlkZS1jb2x1bW5zLTQnLFxuICB9LFxuICBDVVJTT1I6IHtcbiAgICBOT1RfQUxMT1dFRDogJ3RpZGUtY3Vyc29yLW5vdC1hbGxvd2VkJyxcbiAgICBQT0lOVEVSOiAndGlkZS1jdXJzb3ItcG9pbnRlcicsXG4gICAgVEVYVDogJ3RpZGUtY3Vyc29yLXRleHQnLFxuICB9LFxuICBESVNQTEFZOiB7XG4gICAgQkxPQ0s6ICd0aWRlLWRpc3BsYXktYmxvY2snLFxuICAgIENPTlRFTlRTOiAndGlkZS1kaXNwbGF5LWNvbnRlbnRzJyxcbiAgICBGTEVYOiAndGlkZS1kaXNwbGF5LWZsZXgnLFxuICAgIEdSSUQ6ICd0aWRlLWRpc3BsYXktZ3JpZCcsXG4gICAgSU5JVElBTDogJ3RpZGUtZGlzcGxheS1pbml0aWFsJyxcbiAgICBJTkxJTkU6ICd0aWRlLWRpc3BsYXktaW5saW5lJyxcbiAgICBJTkxJTkVfQkxPQ0s6ICd0aWRlLWRpc3BsYXktaW5saW5lLWJsb2NrJyxcbiAgICBJTkxJTkVfRkxFWDogJ3RpZGUtZGlzcGxheS1pbmxpbmUtZmxleCcsXG4gICAgTk9ORTogJ3RpZGUtZGlzcGxheS1ub25lJyxcbiAgfSxcbiAgRUxMSVBTSVM6ICd0aWRlLWVsbGlwc2lzJyxcbiAgRkxFWDoge1xuICAgIEJBU0lTOiB7XG4gICAgICBBVVRPOiAndGlkZS1mbGV4LWJhc2lzLWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtZmxleC1iYXNpcy0wJyxcbiAgICB9LFxuICAgIERJUkVDVElPTjoge1xuICAgICAgQ09MVU1OOiAndGlkZS1mbGV4LWNvbHVtbicsXG4gICAgICBDT0xVTU5fUkVWRVJTRTogJ3RpZGUtZmxleC1jb2x1bW4tcmV2ZXJzZScsXG4gICAgICBST1c6ICd0aWRlLWZsZXgtcm93JyxcbiAgICAgIFJPV19SRVZFUlNFOiAndGlkZS1mbGV4LXJvdy1yZXZlcnNlJyxcbiAgICB9LFxuICAgIEdST1c6IHtcbiAgICAgIE9GRjogJ3RpZGUtZ3Jvdy1ub25lJyxcbiAgICAgIE9OOiAndGlkZS1ncm93JyxcbiAgICB9LFxuICAgIFNIUklOSzoge1xuICAgICAgT0ZGOiAndGlkZS1zaHJpbmstbm9uZScsXG4gICAgICBPTjogJ3RpZGUtc2hyaW5rJyxcbiAgICB9LFxuICAgIFdSQVA6ICd0aWRlLWZsZXgtd3JhcCcsXG4gIH0sXG4gIEZPTlQ6IHtcbiAgICBDT0xPUjoge1xuICAgICAgR0xPQkFMOiB7XG4gICAgICAgIEVSUk9SOiAndGlkZS1mb250LWVycm9yJyxcbiAgICAgICAgSU5GTzogJ3RpZGUtZm9udC1pbmZvJyxcbiAgICAgICAgU1VDQ0VTUzogJ3RpZGUtZm9udC1zdWNjZXNzJyxcbiAgICAgICAgV0FSTklORzogJ3RpZGUtZm9udC13YXJuaW5nJyxcblxuICAgICAgICBCTFVFOiAndGlkZS1mb250LWJsdWUnLFxuICAgICAgICBHUkVFTjogJ3RpZGUtZm9udC1ncmVlbicsXG4gICAgICAgIExJTUU6ICd0aWRlLWZvbnQtbGltZScsXG4gICAgICAgIE9SQU5HRTogJ3RpZGUtZm9udC1vcmFuZ2UnLFxuICAgICAgICBQVVJQTEU6ICd0aWRlLWZvbnQtcHVycGxlJyxcbiAgICAgICAgUkVEOiAndGlkZS1mb250LXJlZCcsXG4gICAgICAgIFNBTE1PTjogJ3RpZGUtZm9udC1zYWxtb24nLFxuICAgICAgICBURUFMOiAndGlkZS1mb250LXRlYWwnLFxuICAgICAgICBZRUxMT1c6ICd0aWRlLWZvbnQteWVsbG93JyxcblxuICAgICAgICBQUklNQVJZOiB7XG4gICAgICAgICAgQkxVRTogJ3RpZGUtZm9udC1wcmltYXJ5LWJsdWUnLFxuICAgICAgICAgIEdSRUVOOiAndGlkZS1mb250LXByaW1hcnktZ3JlZW4nLFxuICAgICAgICAgIExJTUU6ICd0aWRlLWZvbnQtcHJpbWFyeS1saW1lJyxcbiAgICAgICAgICBPUkFOR0U6ICd0aWRlLWZvbnQtcHJpbWFyeS1vcmFuZ2UnLFxuICAgICAgICAgIFBVUlBMRTogJ3RpZGUtZm9udC1wcmltYXJ5LXB1cnBsZScsXG4gICAgICAgICAgUkVEOiAndGlkZS1mb250LXByaW1hcnktcmVkJyxcbiAgICAgICAgICBTQUxNT046ICd0aWRlLWZvbnQtcHJpbWFyeS1zYWxtb24nLFxuICAgICAgICAgIFRFQUw6ICd0aWRlLWZvbnQtcHJpbWFyeS10ZWFsJyxcbiAgICAgICAgICBZRUxMT1c6ICd0aWRlLWZvbnQtcHJpbWFyeS15ZWxsb3cnLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIFBSSU1BUlk6ICd0aWRlLWZvbnQtb24tcHJpbWFyeScsXG4gICAgICBTRUNPTkRBUlk6ICd0aWRlLWZvbnQtb24tc2Vjb25kYXJ5JyxcbiAgICAgIFNVUkZBQ0U6IHtcbiAgICAgICAgQlJBTkQ6ICd0aWRlLWZvbnQtb24tc3VyZmFjZS1icmFuZCcsXG4gICAgICAgIERFRkFVTFQ6ICd0aWRlLWZvbnQtb24tc3VyZmFjZScsXG4gICAgICAgIElOVkVSU0U6ICd0aWRlLWZvbnQtb24tc3VyZmFjZS1pbnZlcnNlJyxcbiAgICAgICAgVkFSSUFOVDogJ3RpZGUtZm9udC1vbi1zdXJmYWNlLXZhcmlhbnQnLFxuICAgICAgICBWQVJJQU5UX0lOVkVSU0U6ICd0aWRlLWZvbnQtb24tc3VyZmFjZS12YXJpYW50LWludmVyc2UnLFxuICAgICAgfSxcbiAgICB9LFxuICAgIFJPTEU6IHtcbiAgICAgIERJU1BMQVlfMTogJ3RpZGUtdHlwb2dyYXBoeS1kaXNwbGF5LTEnLFxuICAgICAgSEVBRExJTkVfMTogJ3RpZGUtdHlwb2dyYXBoeS1oZWFkbGluZS0xJyxcbiAgICAgIEhFQURMSU5FXzI6ICd0aWRlLXR5cG9ncmFwaHktaGVhZGxpbmUtMicsXG4gICAgICBIRUFETElORV8zOiAndGlkZS10eXBvZ3JhcGh5LWhlYWRsaW5lLTMnLFxuICAgICAgVElUTEVfMTogJ3RpZGUtdHlwb2dyYXBoeS10aXRsZS0xJyxcbiAgICAgIFRJVExFXzI6ICd0aWRlLXR5cG9ncmFwaHktdGl0bGUtMicsXG4gICAgICBCT0RZXzE6ICd0aWRlLXR5cG9ncmFwaHktYm9keS0xJyxcbiAgICAgIEJPRFlfMjogJ3RpZGUtdHlwb2dyYXBoeS1ib2R5LTInLFxuICAgICAgTEFCRUxfMTogJ3RpZGUtdHlwb2dyYXBoeS1sYWJlbC0xJyxcbiAgICAgIExBQkVMXzFfU0VNSUJPTEQ6ICd0aWRlLXR5cG9ncmFwaHktbGFiZWwtMS1zZW1pYm9sZCcsXG4gICAgICBMQUJFTF8yOiAndGlkZS10eXBvZ3JhcGh5LWxhYmVsLTInLFxuICAgICAgTEFCRUxfMl9TRU1JQk9MRDogJ3RpZGUtdHlwb2dyYXBoeS1sYWJlbC0yLXNlbWlib2xkJyxcbiAgICAgIExBQkVMXzM6ICd0aWRlLXR5cG9ncmFwaHktbGFiZWwtMycsXG4gICAgICBMSU5LXzE6ICd0aWRlLXR5cG9ncmFwaHktbGluay0xJyxcbiAgICAgIExJTktfMjogJ3RpZGUtdHlwb2dyYXBoeS1saW5rLTInLFxuICAgICAgTElOS18zOiAndGlkZS10eXBvZ3JhcGh5LWxpbmstMycsXG4gICAgICBCVVRUT05fMTogJ3RpZGUtdHlwb2dyYXBoeS1idXR0b24tMScsXG4gICAgICBCVVRUT05fMjogJ3RpZGUtdHlwb2dyYXBoeS1idXR0b24tMicsXG4gICAgfSxcbiAgICBTSVpFOiB7XG4gICAgICBUV0VMVkU6ICd0aWRlLWZvbnQtMTInLFxuICAgICAgRk9VUlRFRU46ICd0aWRlLWZvbnQtMTQnLFxuICAgICAgU0lYVEVFTjogJ3RpZGUtZm9udC0xNicsXG4gICAgICBUV0VOVFk6ICd0aWRlLWZvbnQtMjAnLFxuICAgICAgVFdFTlRZX0ZPVVI6ICd0aWRlLWZvbnQtMjQnLFxuICAgICAgVEhJUlRZX1RXTzogJ3RpZGUtZm9udC0zMicsXG4gICAgfSxcbiAgICBXRUlHSFQ6IHtcbiAgICAgIEZPVVJfSFVORFJFRDogJ3RpZGUtZm9udC00MDAnLFxuICAgICAgRklWRV9IVU5EUkVEOiAndGlkZS1mb250LTUwMCcsXG4gICAgICBTSVhfSFVORFJFRDogJ3RpZGUtZm9udC02MDAnLFxuICAgICAgU0VWRU5fSFVORFJFRDogJ3RpZGUtZm9udC03MDAnLFxuICAgIH0sXG4gIH0sXG4gIEdBUDoge1xuICAgIFpFUk86ICd0aWRlLWdhcC0wJyxcbiAgICBRVUFSVEVSOiAndGlkZS1nYXAtMS80JyxcbiAgICBIQUxGOiAndGlkZS1nYXAtMS8yJyxcbiAgICBPTkU6ICd0aWRlLWdhcC0xJyxcbiAgICBUV086ICd0aWRlLWdhcC0yJyxcbiAgICBGT1VSOiAndGlkZS1nYXAtNCcsXG4gIH0sXG4gIEdSSUQ6IHtcbiAgICBGTFVJRDogJ3RpZGUtZmx1aWQnLFxuICAgIElURU06ICd0aWRlLWdyaWQtaXRlbScsXG4gICAgTEFZT1VUOiAndGlkZS1ncmlkLWxheW91dCcsXG4gICAgWEw6ICd0aWRlLWdyaWQteGwnLFxuICB9LFxuICBIRUlHSFQ6IHtcbiAgICBBVVRPOiAndGlkZS1oZWlnaHQtYXV0bycsXG4gICAgWkVSTzogJ3RpZGUtaGVpZ2h0LTAnLFxuICAgIEZVTEw6ICd0aWRlLWhlaWdodC1mdWxsJyxcbiAgICBNQVhfRlVMTDogJ3RpZGUtbWF4LWhlaWdodC1mdWxsJyxcbiAgICBNSU5fWkVSTzogJ3RpZGUtbWluLWhlaWdodC0wJyxcbiAgfSxcbiAgSVNPTEFUSU9OOiB7XG4gICAgSVNPTEFURTogJ3RpZGUtaXNvbGF0ZScsXG4gIH0sXG4gIExJU1RfQlVMTEVUUzoge1xuICAgIE9GRjogJ3RpZGUtbGlzdC1ub25lJyxcbiAgfSxcbiAgTUFSR0lOOiB7XG4gICAgQk9UVE9NOiB7XG4gICAgICBBVVRPOiAndGlkZS1tYXJnaW4tYm90dG9tLWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLWJvdHRvbS0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi1ib3R0b20tMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi1ib3R0b20tMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLWJvdHRvbS0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLWJvdHRvbS0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi1ib3R0b20tNCcsXG4gICAgfSxcbiAgICBGVUxMOiB7XG4gICAgICBaRVJPOiAndGlkZS1tYXJnaW4tMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4tMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4tMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi00JyxcbiAgICB9LFxuICAgIExFRlQ6IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi1sZWZ0LWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLWxlZnQtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4tbGVmdC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLWxlZnQtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLWxlZnQtMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi1sZWZ0LTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLWxlZnQtNCcsXG4gICAgfSxcbiAgICBSSUdIVDoge1xuICAgICAgQVVUTzogJ3RpZGUtbWFyZ2luLXJpZ2h0LWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLXJpZ2h0LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLXJpZ2h0LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4tcmlnaHQtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLXJpZ2h0LTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4tcmlnaHQtMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4tcmlnaHQtNCcsXG4gICAgfSxcbiAgICBUT1A6IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi10b3AtYXV0bycsXG4gICAgICBaRVJPOiAndGlkZS1tYXJnaW4tdG9wLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLXRvcC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLXRvcC0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4tdG9wLTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4tdG9wLTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLXRvcC00JyxcbiAgICB9LFxuICAgIFg6IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi14LWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLXgtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4teC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLXgtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLXgtMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi14LTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLXgtNCcsXG4gICAgfSxcbiAgICBZOiB7XG4gICAgICBaRVJPOiAndGlkZS1tYXJnaW4teS0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi15LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4teS0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4teS0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLXktMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4teS00JyxcbiAgICB9LFxuICB9LFxuICBPQkpFQ1Q6IHtcbiAgICBDRU5URVI6ICd0aWRlLW9iamVjdC1jZW50ZXInLFxuICAgIENPTlRBSU46ICd0aWRlLW9iamVjdC1jb250YWluJyxcbiAgICBDT1ZFUjogJ3RpZGUtb2JqZWN0LWNvdmVyJyxcbiAgICBTQ0FMRV9ET1dOOiAndGlkZS1vYmplY3Qtc2NhbGUtZG93bicsXG4gIH0sXG4gIE9QQUNJVFk6IHtcbiAgICBESVNBQkxFRDogJ3RpZGUtb3BhY2l0eS1kaXNhYmxlZCcsXG4gICAgT0ZGOiAndGlkZS1vcGFjaXR5LW5vbmUnLFxuICAgIE9OOiAndGlkZS1vcGFjaXR5JyxcbiAgfSxcbiAgT1ZFUkZMT1c6IHtcbiAgICBYOiB7XG4gICAgICBBVVRPOiAndGlkZS14LWF1dG8nLFxuICAgICAgSElEREVOOiAndGlkZS14LWhpZGRlbicsXG4gICAgICBTQ1JPTEw6ICd0aWRlLXgtc2Nyb2xsJyxcbiAgICB9LFxuICAgIFhZOiB7XG4gICAgICBBVVRPOiAndGlkZS14eS1hdXRvJyxcbiAgICAgIEhJRERFTjogJ3RpZGUteHktaGlkZGVuJyxcbiAgICB9LFxuICAgIFk6IHtcbiAgICAgIEFVVE86ICd0aWRlLXktYXV0bycsXG4gICAgICBISURERU46ICd0aWRlLXktaGlkZGVuJyxcbiAgICB9LFxuICB9LFxuICBQQURESU5HOiB7XG4gICAgQk9UVE9NOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLWJvdHRvbS0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmctYm90dG9tLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLWJvdHRvbS0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLWJvdHRvbS0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy1ib3R0b20tMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLWJvdHRvbS00JyxcbiAgICB9LFxuICAgIEZVTEw6IHtcbiAgICAgIFpFUk86ICd0aWRlLXBhZGRpbmctMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmctMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmctMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLTQnLFxuICAgIH0sXG4gICAgTEVGVDoge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy1sZWZ0LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy1sZWZ0LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLWxlZnQtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy1sZWZ0LTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLWxlZnQtMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLWxlZnQtNCcsXG4gICAgfSxcbiAgICBSSUdIVDoge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy1yaWdodC0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmctcmlnaHQtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctcmlnaHQtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy1yaWdodC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy1yaWdodC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctcmlnaHQtNCcsXG4gICAgfSxcbiAgICBUT1A6IHtcbiAgICAgIFpFUk86ICd0aWRlLXBhZGRpbmctdG9wLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy10b3AtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctdG9wLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmctdG9wLTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLXRvcC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctdG9wLTQnLFxuICAgIH0sXG4gICAgWDoge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy14LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy14LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLXgtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy14LTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLXgtMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLXgtNCcsXG4gICAgfSxcbiAgICBZOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLXktMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLXktMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmcteS0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLXktMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmcteS0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmcteS00JyxcbiAgICB9LFxuICB9LFxuICBQT0lOVEVSX0VWRU5UUzoge1xuICAgIE9GRjogJ3RpZGUtcG9pbnRlci1ldmVudHMtbm9uZScsXG4gICAgT046ICd0aWRlLXBvaW50ZXItZXZlbnRzJyxcbiAgfSxcbiAgUE9TSVRJT046IHtcbiAgICBBQlNPTFVURTogJ3RpZGUtcG9zaXRpb24tYWJzb2x1dGUnLFxuICAgIEZJWEVEOiAndGlkZS1wb3NpdGlvbi1maXhlZCcsXG4gICAgUkVMQVRJVkU6ICd0aWRlLXBvc2l0aW9uLXJlbGF0aXZlJyxcbiAgICBTVEFUSUM6ICd0aWRlLXBvc2l0aW9uLXN0YXRpYycsXG4gICAgU1RJQ0tZOiAndGlkZS1wb3NpdGlvbi1zdGlja3knLFxuICB9LFxuICBQT1NJVElPTklORzoge1xuICAgIEJPVFRPTTogJ3RpZGUtYm90dG9tLTAnLFxuICAgIExFRlQ6ICd0aWRlLWxlZnQtMCcsXG4gICAgUklHSFQ6ICd0aWRlLXJpZ2h0LTAnLFxuICAgIFRPUDogJ3RpZGUtdG9wLTAnLFxuICB9LFxuICBSQVRJTzoge1xuICAgIE9ORV9UT19PTkU6ICd0aWRlLXJhdGlvLTEvMScsXG4gICAgU0lYVEVFTl9UT19OSU5FOiAndGlkZS1yYXRpby0xNi85JyxcbiAgICBUSFJFRV9UT19UV086ICd0aWRlLXJhdGlvLTMvMicsXG4gIH0sXG4gIFNDUk9MTEJBUjoge1xuICAgIE9GRjogJ3RpZGUtc2Nyb2xsYmFyLW5vbmUnLFxuICB9LFxuICBTSEFET1c6IHtcbiAgICBJTklUSUFMOiAndGlkZS1zaGFkb3ctaW5pdGlhbCcsXG4gICAgQk9UVE9NOiAndGlkZS1zaGFkb3ctYm90dG9tJyxcbiAgICBUT1A6ICd0aWRlLXNoYWRvdy10b3AnLFxuICAgIFRFWFQ6ICd0aWRlLXNoYWRvdy10ZXh0JyxcbiAgfSxcbiAgU05BUDoge1xuICAgIE9OOiAndGlkZS1zY3JvbGwtc25hcCcsXG4gIH0sXG4gIFNOQVBfQUxJR046IHtcbiAgICBTVEFSVDogJ3RpZGUtc2Nyb2xsLXNuYXAtc3RhcnQnLFxuICB9LFxuICBTVFJJS0VUSFJPVUdIOiB7XG4gICAgT0ZGOiAndGlkZS1zdHJpa2V0aHJvdWdoLW5vbmUnLFxuICAgIE9OOiAndGlkZS1zdHJpa2V0aHJvdWdoJyxcbiAgfSxcbiAgVEVYVF9UUkFOU0ZPUk06IHtcbiAgICBMT1dFUjogJ3RpZGUtdGV4dC10cmFuc2Zvcm0tbG93ZXInLFxuICAgIE5PTkU6ICd0aWRlLXRleHQtdHJhbnNmb3JtLW5vbmUnLFxuICAgIFVQUEVSOiAndGlkZS10ZXh0LXRyYW5zZm9ybS11cHBlcicsXG4gIH0sXG4gIFVOREVSTElORToge1xuICAgIEhPVkVSOiB7XG4gICAgICBPTjogJ3RpZGUtdW5kZXJsaW5lLWhvdmVyJyxcbiAgICAgIE9GRjogJ3RpZGUtdW5kZXJsaW5lLWhvdmVyLW5vbmUnLFxuICAgIH0sXG4gICAgUkVTVDoge1xuICAgICAgT046ICd0aWRlLXVuZGVybGluZScsXG4gICAgICBPRkY6ICd0aWRlLXVuZGVybGluZS1ub25lJyxcbiAgICB9LFxuICB9LFxuICBVU0VSX1NFTEVDVDoge1xuICAgIElOSVRJQUw6ICd0aWRlLXVzZXItc2VsZWN0LWluaXRpYWwnLFxuICAgIE5PTkU6ICd0aWRlLXVzZXItc2VsZWN0LW5vbmUnLFxuICB9LFxuICBWSVNJQklMSVRZOiB7XG4gICAgT0ZGOiAndGlkZS12aXNpYmxlLW5vbmUnLFxuICAgIE9OOiAndGlkZS12aXNpYmxlJyxcbiAgfSxcbiAgV0hJVEVTUEFDRV9XUkFQOiB7XG4gICAgT0ZGOiAndGlkZS13aGl0ZXNwYWNlLW5vd3JhcCcsXG4gIH0sXG4gIFdJRFRIOiB7XG4gICAgQVVUTzogJ3RpZGUtd2lkdGgtYXV0bycsXG4gICAgWkVSTzogJ3RpZGUtd2lkdGgtMCcsXG4gICAgRlVMTDogJ3RpZGUtd2lkdGgtZnVsbCcsXG4gICAgTUFYX0ZVTEw6ICd0aWRlLW1heC13aWR0aC1mdWxsJyxcbiAgICBNSU5fWkVSTzogJ3RpZGUtbWluLXdpZHRoLTAnLFxuICB9LFxuICBaX0lOREVYOiB7XG4gICAgSU5JVElBTDogJ3RpZGUtei1pbmRleC1pbml0aWFsJyxcbiAgICBPTkU6ICd0aWRlLXotaW5kZXgtMScsXG4gIH0sXG59IGFzIGNvbnN0O1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgT1JJRU5UQVRJT04gfSBmcm9tICdAL3R5cGVzL09yaWVudGF0aW9uJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgT3JpZW50YXRpb24gfSBmcm9tICdAL3R5cGVzL09yaWVudGF0aW9uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIG9yaWVudGF0aW9uPzogT3JpZW50YXRpb247XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBvcmllbnRhdGlvbjogT1JJRU5UQVRJT04uSE9SSVpPTlRBTCxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1kaXZpZGVyJ11cIj5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgIENTUy5CT1JERVIuQ09MT1IuTE9XLFxuICAgICAgICBwcm9wcy5vcmllbnRhdGlvbiA9PT0gT1JJRU5UQVRJT04uSE9SSVpPTlRBTFxuICAgICAgICAgID8gW0NTUy5NQVJHSU4uWS5IQUxGLCBDU1MuQk9SREVSLkJPVFRPTS5PTkUsIENTUy5XSURUSC5GVUxMXVxuICAgICAgICAgIDogW0NTUy5NQVJHSU4uWC5IQUxGLCBDU1MuQk9SREVSLlJJR0hULk9ORSwgQ1NTLkhFSUdIVC5GVUxMXSxcbiAgICAgIF1cIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtZGl2aWRlciB7XG4gICAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbiAgfVxuPC9zdHlsZT5cbiIsImV4cG9ydCBjb25zdCBSRUFMTSA9IHtcbiAgQUVSTzogJ2Flcm8nLFxuICBBVFY6ICdhdHYnLFxuICBCT0FUTUFSVDogJ2JvYXRtYXJ0JyxcbiAgQ1lDTEU6ICdjeWNsZScsXG4gIEVRVUlQTUVOVDogJ2VxdWlwbWVudCcsXG4gIFBXQzogJ3B3YycsXG4gIFJWOiAncnYnLFxuICBTTk9XOiAnc25vdycsXG4gIFRSVUNLOiAndHJ1Y2snLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgUmVhbG1LZXkgPSBrZXlvZiB0eXBlb2YgUkVBTE07XG5leHBvcnQgdHlwZSBSZWFsbSA9ICh0eXBlb2YgUkVBTE0pW1JlYWxtS2V5XTtcbiIsImV4cG9ydCBjb25zdCBTSVpFID0ge1xuICBMQVJHRTogJ2xhcmdlJyxcbiAgU01BTEw6ICdzbWFsbCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBTaXplID0gKHR5cGVvZiBTSVpFKVtrZXlvZiB0eXBlb2YgU0laRV07XG5cbmV4cG9ydCBjb25zdCBTSVpFX0JVVFRPTiA9IHtcbiAgTEFSR0U6ICdsYXJnZScsXG4gIFNNQUxMOiAnc21hbGwnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgU2l6ZUJ1dHRvbiA9ICh0eXBlb2YgU0laRSlba2V5b2YgdHlwZW9mIFNJWkVdO1xuIiwiY29uc3QgY2FwaXRhbGl6ZUZpcnN0ID0gKHN0cmluZzogc3RyaW5nKSA9PiB7XG4gIHJldHVybiBzdHJpbmcuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzdHJpbmcuc2xpY2UoMSk7XG59O1xuXG5jb25zdCBmb3JtYXRDYW1lbENhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnXG4gICAgPyBpbnB1dFxuICAgICAgICAucmVwbGFjZSgvXltcXHNfLV0vLCAnJylcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJylcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLm1hcCgod29yZCwgaW5kZXgpID0+IChpbmRleCA9PT0gMCA/IHdvcmQgOiB3b3JkLnNsaWNlKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyB3b3JkLnNsaWNlKDEpKSlcbiAgICAgICAgLmpvaW4oJycpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdEtlYmFiQ2FzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZydcbiAgICA/IGlucHV0XG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnLScpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdExhYmVsID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgbGFiZWxNYXA6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgZmFsc2U6ICdObycsXG4gICAgdHJ1ZTogJ1llcycsXG4gIH07XG4gIHJldHVybiBPYmplY3QuaGFzT3duKGxhYmVsTWFwLCB2YWx1ZSkgPyBsYWJlbE1hcFt2YWx1ZV0gOiB2YWx1ZTtcbn07XG5cbmNvbnN0IGZvcm1hdE51bWJlciA9IChpbnB1dDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgbGV0IG91dHB1dCA9IGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ251bWJlcicgPyBuZXcgSW50bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQoaW5wdXQpIDogU3RyaW5nKGlucHV0IHx8ICcnKTtcbiAgbGV0IGRpZ2l0cyA9IG91dHB1dDtcblxuICBpZiAoaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgIGRpZ2l0cyA9IGRpZ2l0cy5yZXBsYWNlKC9cXEQvZywgJycpO1xuICAgIGlmIChOdW1iZXIoZGlnaXRzKSkge1xuICAgICAgb3V0cHV0ID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0KE51bWJlcihkaWdpdHMpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0cHV0ID0gJzAnO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvdXRwdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRQYXNjYWxDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJylcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLm1hcCgod29yZCkgPT4gd29yZC5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKSlcbiAgICAgICAgLmpvaW4oJycpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdFBob25lID0gKGlucHV0OiBudW1iZXIgfCBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBsZXQgb3V0cHV0ID0gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnbnVtYmVyJyA/IFN0cmluZyhpbnB1dCkgOiBTdHJpbmcoaW5wdXQgfHwgJycpO1xuICBsZXQgZGlnaXRzID0gb3V0cHV0O1xuICBkaWdpdHMgPSBkaWdpdHMucmVwbGFjZSgvXFxEL2csICcnKTtcblxuICBzd2l0Y2ggKGRpZ2l0cy5sZW5ndGgpIHtcbiAgICBjYXNlIDc6XG4gICAgICBvdXRwdXQgPSBgJHtkaWdpdHMuc2xpY2UoMCwgMyl9LSR7ZGlnaXRzLnNsaWNlKDMpfWA7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDEwOlxuICAgICAgb3V0cHV0ID0gYCR7ZGlnaXRzLnNsaWNlKDAsIDMpfS0ke2RpZ2l0cy5zbGljZSgzLCA2KX0tJHtkaWdpdHMuc2xpY2UoNil9YDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTE6XG4gICAgICBvdXRwdXQgPSBgJHtkaWdpdHMuc2xpY2UoMCwgMSl9LSR7ZGlnaXRzLnNsaWNlKDEsIDQpfS0ke2RpZ2l0cy5zbGljZSg0LCA3KX0tJHtkaWdpdHMuc2xpY2UoNyl9YDtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBvdXRwdXQgPSBkaWdpdHM7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIHJldHVybiBvdXRwdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRQcmljZSA9IChpbnB1dDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3Qgb3V0cHV0ID0gaW5wdXQgPyBmb3JtYXROdW1iZXIoaW5wdXQpIDogU3RyaW5nKGlucHV0IHx8ICcwJyk7XG4gIHJldHVybiBgJCR7b3V0cHV0fWA7XG59O1xuXG5jb25zdCBmb3JtYXRRdW90ZXMgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICBpZiAodmFsdWUuc3RhcnRzV2l0aCgnXCInKSAmJiB2YWx1ZS5lbmRzV2l0aCgnXCInKSkge1xuICAgIHJldHVybiB2YWx1ZS5zbGljZSgxLCAtMSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59O1xuXG5jb25zdCBmb3JtYXRTZW50ZW5jZUNhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGxldCBzZW50ZW5jZUNhc2UgPSBpbnB1dDtcblxuICBpZiAoaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgIGNvbnN0IGxvd2VyQ2FzZSA9IGlucHV0XG4gICAgICAucmVwbGFjZSgvKFthLXpdezF9KShbQS1aXXsxfSkvZywgJyQxICQyJylcbiAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnICcpO1xuXG4gICAgc2VudGVuY2VDYXNlID0gbG93ZXJDYXNlLnNsaWNlKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyBsb3dlckNhc2Uuc2xpY2UoMSk7XG4gIH1cblxuICByZXR1cm4gc2VudGVuY2VDYXNlO1xufTtcblxuY29uc3QgZm9ybWF0U25ha2VDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICdfJylcbiAgICA6IGlucHV0O1xufTtcblxuY29uc3QgZm9ybWF0VGl0bGVDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJylcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLm1hcCgod29yZCkgPT4gd29yZC5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKSlcbiAgICAgICAgLmpvaW4oJyAnKVxuICAgIDogaW5wdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRVcmxGcm9tUm9vdCA9ICh1cmw6IHN0cmluZykgPT4ge1xuICBjb25zdCB1cmxGb3JtYXR0ZWQgPSB1cmwuc3BsaXQoJy5jb20vJyk7XG5cbiAgcmV0dXJuIHVybEZvcm1hdHRlZC5sZW5ndGggPiAxID8gYC8ke3VybEZvcm1hdHRlZFsxXX1gIDogdXJsO1xufTtcblxuY29uc3QgZm9ybWF0V2VpZ2h0ID0gKGlucHV0OiBudW1iZXIgfCBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBvdXRwdXQgPSBpbnB1dCA/IGZvcm1hdE51bWJlcihpbnB1dCkgOiBTdHJpbmcoaW5wdXQgfHwgJzAnKTtcbiAgcmV0dXJuIGAke291dHB1dH0gbGJzYDtcbn07XG5cbmNvbnN0IGdldEFydGljbGUgPSAobm91bjogc3RyaW5nLCBpc1BsdXJhbCA9IGZhbHNlLCBpc0RlZmluaXRlID0gZmFsc2UpID0+IHtcbiAgY29uc3Qgdm93ZWxzID0gWydhJywgJ2UnLCAnaScsICdvJywgJ3UnXTtcbiAgY29uc3QgaXNWb3dlbExlYWRpbmcgPSB2b3dlbHMuaW5jbHVkZXMobm91bi5jaGFyQXQoMCkpO1xuXG4gIHJldHVybiBpc0RlZmluaXRlID8gJ3RoZScgOiBpc1BsdXJhbCA/ICdzb21lJyA6IGlzVm93ZWxMZWFkaW5nID8gJ2FuJyA6ICdhJztcbn07XG5cbmNvbnN0IHByaWNlVG9OdW1iZXIgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICBpZiAoTnVtYmVyLmlzTmFOKE51bWJlcih2YWx1ZSkpKSB7XG4gICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKCckJywgJycpO1xuICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvLC9nLCAnJyk7XG4gIH1cbiAgcmV0dXJuIHBhcnNlSW50KHZhbHVlLCAxMCk7XG59O1xuXG5jb25zdCB1bmZvcm1hdFByaWNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBvdXRwdXQgPSBpbnB1dC5yZXBsYWNlKC9cXCQvZywgJycpLnJlcGxhY2UoLywvZywgJycpO1xuICByZXR1cm4gYCR7b3V0cHV0fWA7XG59O1xuXG5leHBvcnQge1xuICBjYXBpdGFsaXplRmlyc3QsXG4gIGZvcm1hdENhbWVsQ2FzZSxcbiAgZm9ybWF0S2ViYWJDYXNlLFxuICBmb3JtYXRMYWJlbCxcbiAgZm9ybWF0TnVtYmVyLFxuICBmb3JtYXRQYXNjYWxDYXNlLFxuICBmb3JtYXRQaG9uZSxcbiAgZm9ybWF0UHJpY2UsXG4gIGZvcm1hdFF1b3RlcyxcbiAgZm9ybWF0U2VudGVuY2VDYXNlLFxuICBmb3JtYXRTbmFrZUNhc2UsXG4gIGZvcm1hdFRpdGxlQ2FzZSxcbiAgZm9ybWF0VXJsRnJvbVJvb3QsXG4gIGZvcm1hdFdlaWdodCxcbiAgZ2V0QXJ0aWNsZSxcbiAgcHJpY2VUb051bWJlcixcbiAgdW5mb3JtYXRQcmljZSxcbn07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBkZWZpbmVBc3luY0NvbXBvbmVudCwgbWFya1JhdywgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHsgUkVBTE0gfSBmcm9tICdAL3R5cGVzL1JlYWxtJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZm9ybWF0UGFzY2FsQ2FzZSB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHR5cGUgeyBTaXplIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHR5cGUgeyBDb21wb25lbnQgfSBmcm9tICd2dWUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaWNvbjogSWNvbjtcbiAgICBzaXplPzogU2l6ZTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIHNpemU6IFNJWkUuU01BTEwsXG4gIH0pO1xuXG4gIGNvbnN0IGlubmVyU1ZHID0gcmVmPENvbXBvbmVudD4oKTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy5pY29uLFxuICAgIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGlkOiBzdHJpbmcgPSBwcm9wcy5pY29uO1xuICAgICAgY29uc3QgbmFtZSA9IGZvcm1hdFBhc2NhbENhc2UoaWQpO1xuICAgICAgY29uc3QgW3ByZWZpeF0gPSBpZC5zcGxpdCgnLScpO1xuICAgICAgY29uc3QgcmVhbG1Gb2xkZXIgPSBSRUFMTVtwcmVmaXg/LnRvVXBwZXJDYXNlKCkgYXMga2V5b2YgdHlwZW9mIFJFQUxNXTtcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGRlZmluZUFzeW5jQ29tcG9uZW50KCgpID0+IHtcbiAgICAgICAgaWYgKHJlYWxtRm9sZGVyKSB7XG4gICAgICAgICAgcmV0dXJuIGltcG9ydChgLi4vYXNzZXRzL3N2Zy9pY29ucy9yZWFsbS8ke3JlYWxtRm9sZGVyfS9JY29uJHtuYW1lfS5zdmc/Y29tcG9uZW50YCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaW1wb3J0KGAuLi9hc3NldHMvc3ZnL2ljb25zL0ljb24ke25hbWV9LnN2Zz9jb21wb25lbnRgKTtcbiAgICAgIH0pO1xuXG4gICAgICBpbm5lclNWRy52YWx1ZSA9IG1hcmtSYXcoY29tcG9uZW50KTtcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWljb24nLCBwcm9wcy5zaXplXVwiPlxuICAgIDxDb21wb25lbnRcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5CTE9DS11cIlxuICAgICAgOmRhdGEtaWNvbj1cImljb25cIlxuICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICA6aXM9XCJpbm5lclNWR1wiXG4gICAgICB2LWlmPVwiaW5uZXJTVkdcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlPlxuICAudGlkZS1pY29uIHtcbiAgICB3aWR0aDogMS41cmVtO1xuICAgIGhlaWdodDogMS41cmVtO1xuICB9XG5cbiAgLnRpZGUtaWNvbi5zbWFsbCB7XG4gICAgd2lkdGg6IDEuMjVyZW07XG4gICAgaGVpZ2h0OiAxLjI1cmVtO1xuICB9XG5cbiAgLnRpZGUtaWNvbiBzdmcge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgfVxuPC9zdHlsZT5cbiIsImltcG9ydCB0eXBlIHsgUmVhbG1LZXkgfSBmcm9tICdAL3R5cGVzL1JlYWxtJztcblxuZXhwb3J0IGNvbnN0IElDT04gPSB7XG4gIEFDQ09VTlRfQkFMQU5DRTogJ2FjY291bnQtYmFsYW5jZScsXG4gIEFDVVRFOiAnYWN1dGUnLFxuICBBREQ6ICdhZGQnLFxuICBBSV9ERVNDUklQVElPTjogJ2FpLWRlc2NyaXB0aW9uJyxcbiAgQUxJR05fU1BBQ0VfRVZFTjogJ2FsaWduLXNwYWNlLWV2ZW4nLFxuICBBUFBMRV9QQVk6ICdhcHBsZS1wYXknLFxuICBBUlJPV19CQUNLOiAnYXJyb3ctYmFjaycsXG4gIEFSUk9XX0NZQ0xFOiAnYXJyb3ctY3ljbGUnLFxuICBBUlJPV19GT1JXQVJEOiAnYXJyb3ctZm9yd2FyZCcsXG4gIEFSUk9XX1JJR0hUOiAnYXJyb3ctcmlnaHQnLFxuICBBU1NJR05NRU5UOiAnYXNzaWdubWVudCcsXG4gIEFUVEFDSF9NT05FWTogJ2F0dGFjaC1tb25leScsXG4gIEFVVE9fUkVORVc6ICdhdXRvLXJlbmV3JyxcbiAgQVdBUkRfU1RBUjogJ2F3YXJkLXN0YXInLFxuICBCRUQ6ICdiZWQnLFxuICBCT0xUOiAnYm9sdCcsXG4gIEJPT0tNQVJLOiAnYm9va21hcmsnLFxuICBCVU5LSE9VU0U6ICdidW5raG91c2UnLFxuICBDQUxFTkRBUl9NT05USDogJ2NhbGVuZGFyLW1vbnRoJyxcbiAgQ0FMTDogJ2NhbGwnLFxuICBDQUxMX1FVQUxJVFk6ICdjYWxsLXF1YWxpdHknLFxuICBDQVJfUkVOVEFMOiAnY2FyLXJlbnRhbCcsXG4gIENIRUNLOiAnY2hlY2snLFxuICBDSEVWUk9OX0xFRlQ6ICdjaGV2cm9uLWxlZnQnLFxuICBDSEVWUk9OX1JJR0hUOiAnY2hldnJvbi1yaWdodCcsXG4gIENMRUFSOiAnY2xlYXInLFxuICBDTE9TRTogJ2Nsb3NlJyxcbiAgQ09OVFJBQ1Q6ICdjb250cmFjdCcsXG4gIENSQVNIOiAnY3Jhc2gnLFxuICBEQVNIQk9BUkRfQ1VTVE9NSVpFOiAnZGFzaGJvYXJkLWN1c3RvbWl6ZScsXG4gIERFTEVURTogJ2RlbGV0ZScsXG4gIERJQU1PTkQ6ICdkaWFtb25kJyxcbiAgRElSRUNUSU9OU19CT0FUOiAnZGlyZWN0aW9ucy1ib2F0JyxcbiAgRE9NQUlOOiAnZG9tYWluJyxcbiAgRFJBRlQ6ICdkcmFmdCcsXG4gIEVESVQ6ICdlZGl0JyxcbiAgRU5HSU5FOiAnZW5naW5lJyxcbiAgRU5HSU5FRVJJTkc6ICdlbmdpbmVlcmluZycsXG4gIEVSUk9SOiAnZXJyb3InLFxuICBFWFBBTkRfQ09OVEVOVDogJ2V4cGFuZC1jb250ZW50JyxcbiAgRVhQQU5EX0xFU1M6ICdleHBhbmQtbGVzcycsXG4gIEVYUEFORF9NT1JFOiAnZXhwYW5kLW1vcmUnLFxuICBGQUNFQk9PSzogJ2ZhY2Vib29rJyxcbiAgRkFWT1JJVEU6ICdmYXZvcml0ZScsXG4gIEZBVk9SSVRFX0ZJTExFRDogJ2Zhdm9yaXRlLWZpbGxlZCcsXG4gIEZMQUc6ICdmbGFnJyxcbiAgRk9STUFUX0JPTEQ6ICdmb3JtYXQtYm9sZCcsXG4gIEZPUk1BVF9JVEFMSUM6ICdmb3JtYXQtaXRhbGljJyxcbiAgRk9STUFUX0xJU1RfQlVMTEVURUQ6ICdmb3JtYXQtbGlzdC1idWxsZXRlZCcsXG4gIEZPUlVNOiAnZm9ydW0nLFxuICBHQVM6ICdnYXMnLFxuICBHQVZFTDogJ2dhdmVsJyxcbiAgR0VBUlM6ICdnZWFycycsXG4gIEdMT0JFX0xPQ0FUSU9OX1BJTjogJ2dsb2JlLWxvY2F0aW9uLXBpbicsXG4gIEdPT0dMRTogJ2dvb2dsZScsXG4gIEdPT0dMRV9QQVk6ICdnb29nbGUtcGF5JyxcbiAgR1JJRDogJ2dyaWQnLFxuICBIQU5EU0hBS0U6ICdoYW5kc2hha2UnLFxuICBIQU5EWU1BTjogJ2hhbmR5bWFuJyxcbiAgSEVJR0hUOiAnaGVpZ2h0JyxcbiAgSEVMUDogJ2hlbHAnLFxuICBJTkZPOiAnaW5mbycsXG4gIElORk9STUFUSU9OOiAnaW5mb3JtYXRpb24nLFxuICBJTlNFUlRfVEVYVDogJ2luc2VydC10ZXh0JyxcbiAgSU5TVEFHUkFNOiAnaW5zdGFncmFtJyxcbiAgSU9TX1NIQVJFOiAnaW9zLXNoYXJlJyxcbiAgTEFZT1VUOiAnbGF5b3V0JyxcbiAgTEVWRUxMSU5HX0pBQ0s6ICdsZXZlbGxpbmctamFjaycsXG4gIExJTktFRF9JTjogJ2xpbmtlZCBpbicsXG4gIExPQ0FMX1NISVBQSU5HOiAnbG9jYWwtc2hpcHBpbmcnLFxuICBMT0NLOiAnbG9jaycsXG4gIE1BSUw6ICdtYWlsJyxcbiAgTUVOVTogJ21lbnUnLFxuICBNT05FWV9CQUc6ICdtb25leS1iYWcnLFxuICBNT1JFX0hPUklaOiAnbW9yZS1ob3JpeicsXG4gIE5PVElGSUNBVElPTlM6ICdub3RpZmljYXRpb25zJyxcbiAgT0RPTUVURVI6ICdvZG9tZXRlcicsXG4gIE9QRU5fSU5fTkVXOiAnb3Blbi1pbi1uZXcnLFxuICBQQUxFVFRFOiAncGFsZXR0ZScsXG4gIFBBWVBBTDogJ3BheXBhbCcsXG4gIFBFUlNPTjogJ3BlcnNvbicsXG4gIFBFUlNPTl9TRUFSQ0g6ICdwZXJzb24tc2VhcmNoJyxcbiAgUEhPVE9fQ0FNRVJBOiAncGhvdG8tY2FtZXJhJyxcbiAgUElOVEVSRVNUOiAncGludGVyZXN0JyxcbiAgUExBWV9BUlJPVzogJ3BsYXktYXJyb3cnLFxuICBQT0xJQ1k6ICdwb2xpY3knLFxuICBQT1dFUjogJ3Bvd2VyJyxcbiAgUE9XRVJfT0ZGOiAncG93ZXItb2ZmJyxcbiAgUFJJT1JJVFlfSElHSDogJ3ByaW9yaXR5LWhpZ2gnLFxuICBSRU1PVkU6ICdyZW1vdmUnLFxuICBSRVFVRVNUX1FVT1RFOiAncmVxdWVzdC1xdW90ZScsXG4gIFJFU0VUX1dSRU5DSDogJ3Jlc2V0LXdyZW5jaCcsXG4gIFJPQUQ6ICdyb2FkJyxcbiAgUk9VTkRFRF9DT1JORVI6ICdyb3VuZGVkLWNvcm5lcicsXG4gIFJVTEVSOiAncnVsZXInLFxuICBTQUlMSU5HOiAnc2FpbGluZycsXG4gIFNDSE9PTDogJ3NjaG9vbCcsXG4gIFNFQVJDSDogJ3NlYXJjaCcsXG4gIFNFQVRJTkc6ICdzZWF0aW5nJyxcbiAgU0VMTDogJ3NlbGwnLFxuICBTRU5TT1JTOiAnc2Vuc29ycycsXG4gIFNFVFRJTkdTOiAnc2V0dGluZ3MnLFxuICBTSEFSRTogJ3NoYXJlJyxcbiAgU0hJRUxEX0NIRUNLOiAnc2hpZWxkLWNoZWNrJyxcbiAgU0hPUFBJTkdfQ0FSVDogJ3Nob3BwaW5nLWNhcnQnLFxuICBTTEVFUFM6ICdzbGVlcHMnLFxuICBTTVM6ICdzbXMnLFxuICBTTk9XRkxBS0U6ICdzbm93Zmxha2UnLFxuICBTVEFSOiAnc3RhcicsXG4gIFNVTU1BUklaRTogJ3N1bW1hcml6ZScsXG4gIFNXQVBfSE9SSVo6ICdzd2FwLWhvcml6JyxcbiAgU1dBUF9WRVJUOiAnc3dhcC12ZXJ0JyxcbiAgVEhSRUVfRF9ST1RBVElPTjogJ3RocmVlLWQtcm90YXRpb24nLFxuICBUSFVNQl9VUDogJ3RodW1iLXVwJyxcbiAgVFJFTkRJTkdfRE9XTjogJ3RyZW5kaW5nLWRvd24nLFxuICBUUk9QSFk6ICd0cm9waHknLFxuICBUVU5FOiAndHVuZScsXG4gIFRXSVRURVI6ICd0d2l0dGVyJyxcbiAgVU1CUkVMTEE6ICd1bWJyZWxsYScsXG4gIFZFUklGSUVEOiAndmVyaWZpZWQnLFxuICBWSURFT0NBTTogJ3ZpZGVvY2FtJyxcbiAgVklFV19JTl9BUjogJ3ZpZXctaW4tYXInLFxuICBWSVNJQklMSVRZOiAndmlzaWJpbGl0eScsXG4gIFZPTFVNRV9PRkY6ICd2b2x1bWUtb2ZmJyxcbiAgVk9MVU1FX09OOiAndm9sdW1lLW9uJyxcbiAgV0FSRUhPVVNFOiAnd2FyZWhvdXNlJyxcbiAgV0FSTklORzogJ3dhcm5pbmcnLFxuICBXQVRFUjogJ3dhdGVyJyxcbiAgV0VJR0hUOiAnd2VpZ2h0JyxcbiAgV0lEVEg6ICd3aWR0aCcsXG4gIFdPUktTUEFDRV9QUkVNSVVNOiAnd29ya3NwYWNlLXByZW1pdW0nLFxuICBXUkVOQ0g6ICd3cmVuY2gnLFxuICBZT1VUVUJFOiAneW91dHViZScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgSUNPTl9SRUFMTSA9IHtcbiAgQVRWOiB7XG4gICAgQVRWOiAnYXR2LWF0dicsXG4gICAgRFVORV9CVUdHWTogJ2F0di1kdW5lLWJ1Z2d5JyxcbiAgICBHT0xGX0NBUlQ6ICdhdHYtZ29sZi1jYXJ0JyxcbiAgICBHT19LQVJUOiAnYXR2LWdvLWthcnQnLFxuICAgIFNBTkRfUkFJTDogJ2F0di1zYW5kLXJhaWwnLFxuICAgIFNJREVfQllfU0lERTogJ2F0di1zaWRlLWJ5LXNpZGUnLFxuICAgIFRSQUlMRVI6ICdhdHYtdHJhaWxlcicsXG4gIH0sXG4gIEJPQVRNQVJUOiB7XG4gICAgUFdDOiAnYm9hdG1hcnQtcHdjJyxcbiAgICBUUkFJTEVSOiAnYm9hdG1hcnQtdHJhaWxlcicsXG4gIH0sXG4gIFJWOiB7XG4gICAgQ0xBU1NfQTogJ3J2LWNsYXNzLWEnLFxuICAgIENMQVNTX0I6ICdydi1jbGFzcy1iJyxcbiAgICBDTEFTU19DOiAncnYtY2xhc3MtYycsXG4gICAgRklGVEhfV0hFRUw6ICdydi1maWZ0aC13aGVlbCcsXG4gICAgRklTSF9IT1VTRTogJ3J2LWZpc2gtaG91c2UnLFxuICAgIFBBUktfTU9ERUw6ICdydi1wYXJrLW1vZGVsJyxcbiAgICBQT1BfVVBfQ0FNUEVSOiAncnYtcG9wLXVwLWNhbXBlcicsXG4gICAgVFJBVkVMX1RSQUlMRVI6ICdydi10cmF2ZWwtdHJhaWxlcicsXG4gICAgVFJVQ0tfQ0FNUEVSOiAncnYtdHJ1Y2stY2FtcGVyJyxcbiAgfSxcbn0gYXMgY29uc3Q7XG5cbnR5cGUgUmVhbG1LZXlzV2l0aEljb25zID0gRXh0cmFjdDxSZWFsbUtleSwga2V5b2YgdHlwZW9mIElDT05fUkVBTE0+O1xudHlwZSBSZWFsbUljb24gPSB7XG4gIFtSZWFsbUtleSBpbiBSZWFsbUtleXNXaXRoSWNvbnNdOiAodHlwZW9mIElDT05fUkVBTE0pW1JlYWxtS2V5XVtrZXlvZiAodHlwZW9mIElDT05fUkVBTE0pW1JlYWxtS2V5XV07XG59W1JlYWxtS2V5c1dpdGhJY29uc107XG5cbmV4cG9ydCB0eXBlIEdsb2JhbEljb24gPSAodHlwZW9mIElDT04pW2tleW9mIHR5cGVvZiBJQ09OXTtcbmV4cG9ydCB0eXBlIEljb24gPSBHbG9iYWxJY29uIHwgUmVhbG1JY29uO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVEaXZpZGVyIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlRGl2aWRlci52dWUnO1xuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0cyhbJ3RvZ2dsZSddKTtcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGhhc0JvdHRvbURpdmlkZXI/OiBib29sZWFuO1xuICAgIGhhc1RvcERpdmlkZXI/OiBib29sZWFuO1xuICAgIGlzRXhwYW5kZWQ/OiBib29sZWFuO1xuICAgIGlzT3B0aW9uYWw/OiBib29sZWFuO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBoYXNCb3R0b21EaXZpZGVyOiBmYWxzZSxcbiAgICBoYXNUb3BEaXZpZGVyOiBmYWxzZSxcbiAgICBpc0V4cGFuZGVkOiBmYWxzZSxcbiAgICBpc09wdGlvbmFsOiBmYWxzZSxcbiAgICBsYWJlbDogJycsXG4gIH0pO1xuXG4gIGNvbnN0IGhhbmRsZVRvZ2dsZUNsaWNrID0gKCkgPT4ge1xuICAgIGVtaXQoJ3RvZ2dsZScpO1xuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cInRpZGUtYWNjb3JkaW9uLWl0ZW1cIj5cbiAgICA8VGlkZURpdmlkZXIgdi1pZj1cInByb3BzLmhhc1RvcERpdmlkZXJcIiAvPlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiWyd0aWRlLWFjY29yZGlvbi1oZWFkJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMxLkJFVFdFRU4sIENTUy5QQURESU5HLlkuSEFMRiwgQ1NTLkNVUlNPUi5QT0lOVEVSXVwiXG4gICAgICBAY2xpY2s9XCJoYW5kbGVUb2dnbGVDbGlja1wiXG4gICAgPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5IQUxGLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzFfU0VNSUJPTERdXCI+XG4gICAgICAgIDxzcGFuPnt7IHByb3BzLmxhYmVsIH19PC9zcGFuPlxuXG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICAgIHYtaWY9XCJwcm9wcy5pc09wdGlvbmFsXCJcbiAgICAgICAgPlxuICAgICAgICAgIChvcHRpb25hbClcbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6aWNvbj1cImlzRXhwYW5kZWQgPyBJQ09OLkVYUEFORF9MRVNTIDogSUNPTi5FWFBBTkRfTU9SRVwiXG4gICAgICAgIDpzaXplPVwiU0laRS5MQVJHRVwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtYWNjb3JkaW9uLWJvZHknLCBwcm9wcy5pc0V4cGFuZGVkID8gJ2V4cGFuZGVkJyA6ICdjb2xsYXBzZWQnLCBDU1MuRElTUExBWS5HUklEXVwiPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLk9WRVJGTE9XLlkuSElEREVOLCBDU1MuTUFSR0lOLlkuT05FLCBDU1MuRk9OVC5ST0xFLkJPRFlfMSwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxUXVwiPlxuICAgICAgICA8c2xvdCAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8VGlkZURpdmlkZXIgdi1pZj1cInByb3BzLmhhc0JvdHRvbURpdmlkZXJcIiAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWFjY29yZGlvbi1ib2R5IHtcbiAgICB0cmFuc2l0aW9uOiBncmlkLXRlbXBsYXRlLXJvd3MgdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWFjY29yZGlvbi1ib2R5LmV4cGFuZGVkIHtcbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6IDFmcjtcbiAgfVxuXG4gIC50aWRlLWFjY29yZGlvbi1ib2R5LmNvbGxhcHNlZCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiAwZnI7XG4gIH1cbjwvc3R5bGU+XG4iLCJleHBvcnQgY29uc3QgRUxFTUVOVCA9IHtcbiAgQlVUVE9OOiAnYnV0dG9uJyxcbiAgTElOSzogJ2EnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IEVMRU1FTlRfVEVYVF9BU19JQ09OID0ge1xuICBCVVRUT046ICdidXR0b24nLFxuICBESVY6ICdkaXYnLFxuICBMSU5LOiAnYScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBFbGVtZW50ID0gKHR5cGVvZiBFTEVNRU5UKVtrZXlvZiB0eXBlb2YgRUxFTUVOVF07XG5leHBvcnQgdHlwZSBFbGVtZW50VGV4dEFzSWNvbiA9ICh0eXBlb2YgRUxFTUVOVF9URVhUX0FTX0lDT04pW2tleW9mIHR5cGVvZiBFTEVNRU5UX1RFWFRfQVNfSUNPTl07XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSB2dWUvc29ydC1rZXlzICovXG5cbmV4cG9ydCBjb25zdCBQUklPUklUWSA9IHtcbiAgUFJJTUFSWTogJ3ByaW1hcnknLFxuICBTRUNPTkRBUlk6ICdzZWNvbmRhcnknLFxuICBURVJUSUFSWTogJ3RlcnRpYXJ5JyxcbiAgUVVBVEVSTkFSWTogJ3F1YXRlcm5hcnknLFxuICBGTE9BVElORzogJ2Zsb2F0aW5nJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFByaW9yaXR5ID0gKHR5cGVvZiBQUklPUklUWSlba2V5b2YgdHlwZW9mIFBSSU9SSVRZXTtcbiIsImV4cG9ydCBjb25zdCBUQVJHRVQgPSB7XG4gIEJMQU5LOiAnX2JsYW5rJyxcbiAgU0VMRjogdW5kZWZpbmVkLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgVGFyZ2V0ID0gKHR5cGVvZiBUQVJHRVQpW2tleW9mIHR5cGVvZiBUQVJHRVRdO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBFTEVNRU5UIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgVEFSR0VUIH0gZnJvbSAnQC90eXBlcy9UYXJnZXQnO1xuXG4gIGltcG9ydCB0eXBlIHsgRWxlbWVudCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB0eXBlIHsgUHJpb3JpdHkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBlbGVtZW50PzogRWxlbWVudDtcbiAgICBocmVmPzogc3RyaW5nO1xuICAgIGljb246IEljb247XG4gICAgaXNOZXdUYWI/OiBib29sZWFuO1xuICAgIHByaW9yaXR5PzogUHJpb3JpdHk7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZWxlbWVudDogRUxFTUVOVC5CVVRUT04sXG4gICAgaHJlZjogdW5kZWZpbmVkLFxuICAgIGljb246IHVuZGVmaW5lZCxcbiAgICBpc05ld1RhYjogZmFsc2UsXG4gICAgcHJpb3JpdHk6IFBSSU9SSVRZLlBSSU1BUlksXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudFxuICAgIDphcmlhLWxhYmVsPVwicHJvcHMuaWNvblwiXG4gICAgOmNsYXNzPVwiW1xuICAgICAgcHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LID8gJ3RpZGUtbGluay1hcy1idXR0b24taWNvbicgOiAndGlkZS1idXR0b24taWNvbicsXG4gICAgICBwcm9wcy5wcmlvcml0eSAmJiBgdGlkZS1idXR0b24tJHtwcm9wcy5wcmlvcml0eX1gLFxuICAgICAgW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMS5DRU5URVIsIENTUy5BWElTMi5DRU5URVIsIENTUy5CT1JERVIuUkFESVVTLkZVTEwsIENTUy5QQURESU5HLkZVTEwuSEFMRl0sXG4gICAgICBwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgPyBbQ1NTLlVOREVSTElORS5SRVNULk9GRl0gOiAnJyxcbiAgICBdXCJcbiAgICA6ZGlzYWJsZWQ9XCJwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkJVVFRPTiAmJiBwcm9wcy5kaXNhYmxlZFwiXG4gICAgOmhyZWY9XCJwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgJiYgcHJvcHMuaHJlZiA/IHByb3BzLmhyZWYgOiB1bmRlZmluZWRcIlxuICAgIDp0YXJnZXQ9XCJwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgJiYgcHJvcHMuaXNOZXdUYWIgPyBUQVJHRVQuQkxBTksgOiBUQVJHRVQuU0VMRlwiXG4gICAgOmlzPVwicHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LID8gJ2EnIDogJ2J1dHRvbidcIlxuICA+XG4gICAgPFRpZGVJY29uXG4gICAgICA6aWNvbj1cInByb3BzLmljb25cIlxuICAgICAgOnNpemU9XCJTSVpFLkxBUkdFXCJcbiAgICAgIHYtaWY9XCJwcm9wcy5pY29uXCJcbiAgICAvPlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG4iLCJleHBvcnQgY29uc3QgQUxFUlQgPSB7XG4gIEVSUk9SOiAnZXJyb3InLFxuICBJTkZPOiAnaW5mbycsXG4gIFNVQ0NFU1M6ICdzdWNjZXNzJyxcbiAgV0FSTklORzogJ3dhcm5pbmcnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgQWxlcnQgPSAodHlwZW9mIEFMRVJUKVtrZXlvZiB0eXBlb2YgQUxFUlRdO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlQnV0dG9uSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUJ1dHRvbkljb24udnVlJztcbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBBTEVSVCB9IGZyb20gJ0AvdHlwZXMvQWxlcnQnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IEFsZXJ0IH0gZnJvbSAnQC90eXBlcy9BbGVydCc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBoZWFkaW5nPzogc3RyaW5nO1xuICAgIGlzRGlzbWlzc2libGU/OiBib29sZWFuO1xuICAgIGlzVG9hc3Q/OiBib29sZWFuO1xuICAgIHR5cGU/OiBBbGVydDtcbiAgfTtcblxuICB0eXBlIEVtaXRzID0ge1xuICAgIChldmVudDogJ2Nsb3NlJyk6IHZvaWQ7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBoZWFkaW5nOiB1bmRlZmluZWQsXG4gICAgaXNEaXNtaXNzaWJsZTogdHJ1ZSxcbiAgICBpc1RvYXN0OiBmYWxzZSxcbiAgICB0eXBlOiBBTEVSVC5JTkZPLFxuICB9KTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8RW1pdHM+KCk7XG5cbiAgY29uc3QgaWNvblR5cGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHByb3BzLnR5cGUgPT09IEFMRVJULkVSUk9SKSByZXR1cm4gSUNPTi5QUklPUklUWV9ISUdIO1xuICAgIGlmIChwcm9wcy50eXBlID09PSBBTEVSVC5TVUNDRVNTKSByZXR1cm4gSUNPTi5DSEVDSztcbiAgICBpZiAocHJvcHMudHlwZSA9PT0gQUxFUlQuV0FSTklORykgcmV0dXJuIElDT04uV0FSTklORztcbiAgICByZXR1cm4gSUNPTi5JTkZPUk1BVElPTjtcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgcHJvcHMudHlwZSxcbiAgICAgICd0aWRlLWFsZXJ0JyxcbiAgICAgIENTUy5ESVNQTEFZLkdSSUQsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgIENTUy5QQURESU5HLkZVTEwuT05FLFxuICAgICAgIXByb3BzLmlzVG9hc3QgJiYgcHJvcHMudHlwZSA9PT0gQUxFUlQuRVJST1IgPyBbQ1NTLkJHLkdMT0JBTC5TVVJGQUNFLkVSUk9SLCBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5FUlJPUl0gOiAnJyxcbiAgICAgICFwcm9wcy5pc1RvYXN0ICYmIHByb3BzLnR5cGUgPT09IEFMRVJULklORk8gPyBbQ1NTLkJHLkdMT0JBTC5TVVJGQUNFLklORk8sIENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLklORk9dIDogJycsXG4gICAgICAhcHJvcHMuaXNUb2FzdCAmJiBwcm9wcy50eXBlID09PSBBTEVSVC5TVUNDRVNTXG4gICAgICAgID8gW0NTUy5CRy5HTE9CQUwuU1VSRkFDRS5TVUNDRVNTLCBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5TVUNDRVNTXVxuICAgICAgICA6ICcnLFxuICAgICAgIXByb3BzLmlzVG9hc3QgJiYgcHJvcHMudHlwZSA9PT0gQUxFUlQuV0FSTklOR1xuICAgICAgICA/IFtDU1MuQkcuR0xPQkFMLlNVUkZBQ0UuV0FSTklORywgQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuV0FSTklOR11cbiAgICAgICAgOiAnJyxcbiAgICAgIHByb3BzLmlzVG9hc3QgPyBbQ1NTLkJHLlNFQ09OREFSWSwgQ1NTLkZPTlQuQ09MT1IuU0VDT05EQVJZLCBDU1MuU0hBRE9XLkJPVFRPTV0gOiBDU1MuQk9SREVSLkxFRlQuVFdPLFxuICAgIF1cIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1hbGVydC1pY29uJyxcbiAgICAgICAgQ1NTLlBBRERJTkcuRlVMTC5RVUFSVEVSLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgICBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLklOVkVSU0UsXG4gICAgICAgIHByb3BzLnR5cGUgPT09IEFMRVJULkVSUk9SICYmIENTUy5CRy5HTE9CQUwuUFJJTUFSWS5FUlJPUixcbiAgICAgICAgcHJvcHMudHlwZSA9PT0gQUxFUlQuSU5GTyAmJiBDU1MuQkcuR0xPQkFMLlBSSU1BUlkuSU5GTyxcbiAgICAgICAgcHJvcHMudHlwZSA9PT0gQUxFUlQuU1VDQ0VTUyAmJiBDU1MuQkcuR0xPQkFMLlBSSU1BUlkuU1VDQ0VTUyxcbiAgICAgICAgcHJvcHMudHlwZSA9PT0gQUxFUlQuV0FSTklORyAmJiBDU1MuQkcuR0xPQkFMLlBSSU1BUlkuV0FSTklORyxcbiAgICAgIF1cIlxuICAgICAgdi1pZj1cIiFwcm9wcy5pc1RvYXN0XCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmljb249XCJpY29uVHlwZVwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtYWxlcnQtaGVhZGluZycsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5GT05ULlJPTEUuTEFCRUxfMV9TRU1JQk9MRF1cIj5cbiAgICAgIHt7IHByb3BzLmhlYWRpbmcgfX1cbiAgICA8L2Rpdj5cblxuICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgOmNsYXNzPVwiWyd0aWRlLWFsZXJ0LWNsb3NlJywgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICA6aWNvbj1cIklDT04uQ0xPU0VcIlxuICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICBAY2xpY2s9XCJlbWl0KCdjbG9zZScpXCJcbiAgICAgIGFyaWEtbGFiZWw9XCJDbG9zZSBhbGVydFwiXG4gICAgICB2LWlmPVwiaXNEaXNtaXNzaWJsZVwiXG4gICAgLz5cblxuICAgIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWFsZXJ0LWJvZHknLCBDU1MuRk9OVC5ST0xFLkJPRFlfMiwgIXByb3BzLmlzVG9hc3QgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxUXVwiPlxuICAgICAgPHNsb3QgLz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1hbGVydCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1hcmVhczpcbiAgICAgICdpY29uIGhlYWRpbmcgY2xvc2UnXG4gICAgICAnLiBib2R5IC4nO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byAxZnIgYXV0bztcbiAgICBncmlkLWNvbHVtbi1nYXA6IDAuNXJlbTtcbiAgICBtYXgtd2lkdGg6IDQwcmVtO1xuICB9XG5cbiAgLnRpZGUtYWxlcnQtaWNvbiB7XG4gICAgZ3JpZC1hcmVhOiBpY29uO1xuICB9XG5cbiAgLnRpZGUtYWxlcnQtaGVhZGluZyB7XG4gICAgZ3JpZC1hcmVhOiBoZWFkaW5nO1xuICB9XG5cbiAgLnRpZGUtYWxlcnQtY2xvc2Uge1xuICAgIGdyaWQtYXJlYTogY2xvc2U7XG4gIH1cblxuICAudGlkZS1hbGVydC1ib2R5IHtcbiAgICBncmlkLWFyZWE6IGJvZHk7XG4gIH1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbmV4cG9ydCBjb25zdCBCQURHRV9DT0xPUiA9IHtcbiAgQkxBQ0s6ICdibGFjaycsXG4gIEJMVUU6ICdibHVlJyxcbiAgR1JFRU46ICdncmVlbicsXG4gIExJTUU6ICdsaW1lJyxcbiAgT1JBTkdFOiAnb3JhbmdlJyxcbiAgUFVSUExFOiAncHVycGxlJyxcbiAgUkVEOiAncmVkJyxcbiAgU0FMTU9OOiAnc2FsbW9uJyxcbiAgVEVBTDogJ3RlYWwnLFxuICBZRUxMT1c6ICd5ZWxsb3cnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IEJBREdFX0NPTE9SX0RFVEFJTFM6IFJlY29yZDxcbiAgQmFkZ2VDb2xvcixcbiAge1xuICAgIGJvcmRlckNvbG9yOiBzdHJpbmc7XG4gICAgaWNvbkNvbG9yOiBzdHJpbmc7XG4gIH1cbj4gPSB7XG4gIFtCQURHRV9DT0xPUi5CTEFDS106IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5ISUdILFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxULFxuICB9LFxuICBbQkFER0VfQ09MT1IuQkxVRV06IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuQkxVRSxcbiAgICBpY29uQ29sb3I6IENTUy5GT05ULkNPTE9SLkdMT0JBTC5QUklNQVJZLkJMVUUsXG4gIH0sXG4gIFtCQURHRV9DT0xPUi5HUkVFTl06IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuR1JFRU4sXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5HUkVFTixcbiAgfSxcbiAgW0JBREdFX0NPTE9SLkxJTUVdOiB7XG4gICAgYm9yZGVyQ29sb3I6IENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLkxJTUUsXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5MSU1FLFxuICB9LFxuICBbQkFER0VfQ09MT1IuT1JBTkdFXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5PUkFOR0UsXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5PUkFOR0UsXG4gIH0sXG4gIFtCQURHRV9DT0xPUi5QVVJQTEVdOiB7XG4gICAgYm9yZGVyQ29sb3I6IENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLlBVUlBMRSxcbiAgICBpY29uQ29sb3I6IENTUy5GT05ULkNPTE9SLkdMT0JBTC5QUklNQVJZLlBVUlBMRSxcbiAgfSxcbiAgW0JBREdFX0NPTE9SLlJFRF06IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuUkVELFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLlBSSU1BUlkuUkVELFxuICB9LFxuICBbQkFER0VfQ09MT1IuU0FMTU9OXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5TQUxNT04sXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5TQUxNT04sXG4gIH0sXG4gIFtCQURHRV9DT0xPUi5URUFMXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5URUFMLFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLlBSSU1BUlkuVEVBTCxcbiAgfSxcbiAgW0JBREdFX0NPTE9SLllFTExPV106IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuWUVMTE9XLFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLlBSSU1BUlkuWUVMTE9XLFxuICB9LFxufTtcblxuZXhwb3J0IGNvbnN0IEJBREdFX1RSVVNURUQgPSB7XG4gIFlFQVJTXzEwOiAnMTAnLFxuICBZRUFSU18xNTogJzE1JyxcbiAgWUVBUlNfNTogJzUnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgQmFkZ2VDb2xvciA9ICh0eXBlb2YgQkFER0VfQ09MT1IpW2tleW9mIHR5cGVvZiBCQURHRV9DT0xPUl07XG5leHBvcnQgdHlwZSBCYWRnZVRydXN0ZWRZZWFycyA9ICh0eXBlb2YgQkFER0VfVFJVU1RFRClba2V5b2YgdHlwZW9mIEJBREdFX1RSVVNURURdO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBCQURHRV9DT0xPUl9ERVRBSUxTIH0gZnJvbSAnQC90eXBlcy9CYWRnZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IEJhZGdlQ29sb3IgfSBmcm9tICdAL3R5cGVzL0JhZGdlJztcbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGNvbG9yPzogQmFkZ2VDb2xvcjtcbiAgICBpY29uTGVhZGluZz86IEljb247XG4gICAgaXNGbG9hdGluZz86IGJvb2xlYW47XG4gICAgbGFiZWw6IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGNvbG9yOiB1bmRlZmluZWQsXG4gICAgaWNvbkxlYWRpbmc6IHVuZGVmaW5lZCxcbiAgICBpc0Zsb2F0aW5nOiBmYWxzZSxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtYmFkZ2UnLFxuICAgICAgcHJvcHMuaXNGbG9hdGluZyB8fCBwcm9wcy5jb2xvciA/IFtDU1MuQkcuU1VSRkFDRS5GTE9BVElORywgQ1NTLlNIQURPVy5CT1RUT01dIDogW0NTUy5CRy5TVVJGQUNFLlZBUklBTlRdLFxuICAgICAgQ1NTLkRJU1BMQVkuSU5MSU5FX0ZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuUVVBUlRFUixcbiAgICAgIENTUy5QQURESU5HLlkuUVVBUlRFUixcbiAgICAgIENTUy5QQURESU5HLlguSEFMRixcbiAgICAgIHByb3BzLmNvbG9yICYmIFtDU1MuQk9SREVSLkxFRlQuVFdPLCBCQURHRV9DT0xPUl9ERVRBSUxTW3Byb3BzLmNvbG9yXS5ib3JkZXJDb2xvcl0sXG4gICAgICBDU1MuRUxMSVBTSVMsXG4gICAgICBDU1MuRk9OVC5ST0xFLkxBQkVMXzIsXG4gICAgICBDU1MuV0hJVEVTUEFDRV9XUkFQLk9GRixcbiAgICBdXCJcbiAgPlxuICAgIDxUaWRlSWNvblxuICAgICAgOmNsYXNzPVwiW0NTUy5GTEVYLlNIUklOSy5PRkYsIHByb3BzLmNvbG9yICYmIEJBREdFX0NPTE9SX0RFVEFJTFNbcHJvcHMuY29sb3JdLmljb25Db2xvcl1cIlxuICAgICAgOmljb249XCJwcm9wcy5pY29uTGVhZGluZ1wiXG4gICAgICB2LWlmPVwicHJvcHMuaWNvbkxlYWRpbmdcIlxuICAgIC8+XG5cbiAgICA8c3BhbiA6Y2xhc3M9XCJbQ1NTLkVMTElQU0lTXVwiPnt7IHByb3BzLmxhYmVsIH19PC9zcGFuPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IEJBREdFX1RSVVNURUQgfSBmcm9tICdAL3R5cGVzL0JhZGdlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IEJhZGdlVHJ1c3RlZFllYXJzIH0gZnJvbSAnQC90eXBlcy9CYWRnZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICB5ZWFycz86IEJhZGdlVHJ1c3RlZFllYXJzO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgeWVhcnM6IEJBREdFX1RSVVNURUQuWUVBUlNfNSxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtYmFkZ2UtdHJ1c3RlZC1wYXJ0bmVyJyxcbiAgICAgIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuQlJBTkQsXG4gICAgICBDU1MuRElTUExBWS5JTkxJTkVfRkxFWCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBDU1MuRUxMSVBTSVMsXG4gICAgICBDU1MuRk9OVC5ST0xFLkxBQkVMXzIsXG4gICAgICBDU1MuV0hJVEVTUEFDRV9XUkFQLk9GRixcbiAgICBdXCJcbiAgPlxuICAgIDxUaWRlSWNvblxuICAgICAgOmNsYXNzPVwiW0NTUy5GTEVYLlNIUklOSy5PRkZdXCJcbiAgICAgIDppY29uPVwiSUNPTi5BV0FSRF9TVEFSXCJcbiAgICAvPlxuXG4gICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkVMTElQU0lTXVwiPlxuICAgICAgPHNwYW4+e3sgcHJvcHMueWVhcnMgfX0geWVhciB0cnVzdGVkIHBhcnRuZXI8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWJhZGdlLXZlcmlmaWVkLXZlaGljbGUnLFxuICAgICAgQ1NTLkJHLlNFQ09OREFSWSxcbiAgICAgIENTUy5GT05ULlJPTEUuTEFCRUxfMixcbiAgICAgIENTUy5GT05ULkNPTE9SLlNFQ09OREFSWSxcbiAgICAgIENTUy5ESVNQTEFZLklOTElORV9GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLlFVQVJURVIsXG4gICAgICBDU1MuUEFERElORy5ZLlFVQVJURVIsXG4gICAgICBDU1MuUEFERElORy5YLkhBTEYsXG4gICAgICBDU1MuRUxMSVBTSVMsXG4gICAgICBDU1MuV0hJVEVTUEFDRV9XUkFQLk9GRixcbiAgICBdXCJcbiAgPlxuICAgIDxUaWRlSWNvblxuICAgICAgOmNsYXNzPVwiW0NTUy5GTEVYLlNIUklOSy5PRkZdXCJcbiAgICAgIDppY29uPVwiSUNPTi5WRVJJRklFRFwiXG4gICAgLz5cblxuICAgIDxzcGFuIDpjbGFzcz1cIltDU1MuRUxMSVBTSVNdXCI+VmVyaWZpZWQgdmVoaWNsZTwvc3Bhbj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1pY29uIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1pbmZvLXByaW1hcnkpO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IEJyZWFkQ3J1bWIgfSBmcm9tICdAL3R5cGVzL0JyZWFkQ3J1bWInO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgYnJlYWRDcnVtYnM6IEJyZWFkQ3J1bWJbXTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGJyZWFkQ3J1bWJzOiB1bmRlZmluZWQsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPHVsIDpjbGFzcz1cIlsndGlkZS1icmVhZC1jcnVtYnMnLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVIsIENTUy5MSVNUX0JVTExFVFMuT0ZGXVwiPlxuICAgIDx0ZW1wbGF0ZVxuICAgICAgOmtleT1cImNydW1iLmxhYmVsXCJcbiAgICAgIHYtZm9yPVwiKGNydW1iLCBpbmRleCkgaW4gcHJvcHMuYnJlYWRDcnVtYnNcIlxuICAgID5cbiAgICAgIDxsaSA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5CT0RZXzJdXCI+XG4gICAgICAgIDxhXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTElOS18yLCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICA6ZGF0YS10cmFjaz1cImNydW1iLmRhdGFUcmFjayB8fCB1bmRlZmluZWRcIlxuICAgICAgICAgIDpocmVmPVwiY3J1bWIudXJsXCJcbiAgICAgICAgICB2LWlmPVwiY3J1bWIudXJsXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGNydW1iLmxhYmVsIH19XG4gICAgICAgIDwvYT5cblxuICAgICAgICA8c3BhblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzIsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICAgIDpkYXRhLXRyYWNrPVwiY3J1bWIuZGF0YVRyYWNrIHx8IHVuZGVmaW5lZFwiXG4gICAgICAgICAgdi1lbHNlXG4gICAgICAgID5cbiAgICAgICAgICB7eyBjcnVtYi5sYWJlbCB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2xpPlxuXG4gICAgICA8bGkgdi1pZj1cInByb3BzLmJyZWFkQ3J1bWJzICYmIGluZGV4IDwgcHJvcHMuYnJlYWRDcnVtYnMubGVuZ3RoIC0gMVwiPlxuICAgICAgICA8VGlkZUljb25cbiAgICAgICAgICA6aWNvbj1cIklDT04uQVJST1dfUklHSFRcIlxuICAgICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIC8+XG4gICAgICA8L2xpPlxuICAgIDwvdGVtcGxhdGU+XG4gIDwvdWw+XG48L3RlbXBsYXRlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBFTEVNRU5UIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgU0laRSwgU0laRV9CVVRUT04gfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRBUkdFVCB9IGZyb20gJ0AvdHlwZXMvVGFyZ2V0JztcblxuICBpbXBvcnQgdHlwZSB7IEVsZW1lbnQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgdHlwZSB7IFByaW9yaXR5IH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG4gIGltcG9ydCB0eXBlIHsgU2l6ZUJ1dHRvbiB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgZWxlbWVudD86IEVsZW1lbnQ7XG4gICAgaHJlZj86IHN0cmluZztcbiAgICBpY29uTGVhZGluZz86IEljb247XG4gICAgaWNvblRyYWlsaW5nPzogSWNvbjtcbiAgICBpc05ld1RhYj86IGJvb2xlYW47XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBwcmlvcml0eT86IFByaW9yaXR5O1xuICAgIHNpemU/OiBTaXplQnV0dG9uO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGVsZW1lbnQ6IEVMRU1FTlQuQlVUVE9OLFxuICAgIGhyZWY6IHVuZGVmaW5lZCxcbiAgICBpY29uTGVhZGluZzogdW5kZWZpbmVkLFxuICAgIGljb25UcmFpbGluZzogdW5kZWZpbmVkLFxuICAgIGlzTmV3VGFiOiBmYWxzZSxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIHByaW9yaXR5OiBQUklPUklUWS5QUklNQVJZLFxuICAgIHNpemU6IFNJWkVfQlVUVE9OLkxBUkdFLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxjb21wb25lbnRcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1idXR0b24nLFxuICAgICAgcHJvcHMucHJpb3JpdHkgJiYgYHRpZGUtYnV0dG9uLSR7cHJvcHMucHJpb3JpdHl9YCxcbiAgICAgIHByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyA/IFtDU1MuRElTUExBWS5JTkxJTkVfRkxFWF0gOiBbQ1NTLkRJU1BMQVkuRkxFWF0sXG4gICAgICBwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgPyBDU1MuVU5ERVJMSU5FLlJFU1QuT0ZGIDogJycsXG4gICAgICBzaXplID09PSBTSVpFX0JVVFRPTi5TTUFMTCAmJiBbQ1NTLkZPTlQuUk9MRS5CVVRUT05fMiwgQ1NTLlBBRERJTkcuWC5PTkUsIENTUy5QQURESU5HLlkuSEFMRl0sXG4gICAgICBzaXplID09PSBTSVpFX0JVVFRPTi5MQVJHRSAmJiBbQ1NTLkZPTlQuUk9MRS5CVVRUT05fMSwgQ1NTLlBBRERJTkcuWC5UV08sIENTUy5QQURESU5HLlkuT05FXSxcbiAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgIENTUy5GT05ULlJPTEUuTEFCRUxfMV9TRU1JQk9MRCxcbiAgICBdXCJcbiAgICA6ZGlzYWJsZWQ9XCJwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkJVVFRPTiAmJiBwcm9wcy5kaXNhYmxlZFwiXG4gICAgOmhyZWY9XCJwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgJiYgcHJvcHMuaHJlZiA/IHByb3BzLmhyZWYgOiB1bmRlZmluZWRcIlxuICAgIDp0YXJnZXQ9XCJwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgJiYgcHJvcHMuaXNOZXdUYWIgPyBUQVJHRVQuQkxBTksgOiBUQVJHRVQuU0VMRlwiXG4gICAgOmlzPVwicHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LID8gRUxFTUVOVC5MSU5LIDogRUxFTUVOVC5CVVRUT05cIlxuICA+XG4gICAgPFRpZGVJY29uXG4gICAgICA6aWNvbj1cInByb3BzLmljb25MZWFkaW5nXCJcbiAgICAgIDpzaXplPVwic2l6ZSA9PT0gU0laRV9CVVRUT04uTEFSR0UgPyBTSVpFLkxBUkdFIDogU0laRS5TTUFMTFwiXG4gICAgICB2LWlmPVwicHJvcHMuaWNvbkxlYWRpbmdcIlxuICAgIC8+XG5cbiAgICB7eyBwcm9wcy5sYWJlbCB9fVxuXG4gICAgPFRpZGVJY29uXG4gICAgICA6aWNvbj1cInByb3BzLmljb25UcmFpbGluZ1wiXG4gICAgICA6c2l6ZT1cInNpemUgPT09IFNJWkVfQlVUVE9OLkxBUkdFID8gU0laRS5MQVJHRSA6IFNJWkUuU01BTExcIlxuICAgICAgdi1pZj1cInByb3BzLmljb25UcmFpbGluZ1wiXG4gICAgLz5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgRUxFTUVOVF9URVhUX0FTX0lDT04gfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBFbGVtZW50VGV4dEFzSWNvbiB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgZWxlbWVudD86IEVsZW1lbnRUZXh0QXNJY29uO1xuICAgIGhyZWY/OiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZyB8IG51bWJlcjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlbGVtZW50OiBFTEVNRU5UX1RFWFRfQVNfSUNPTi5CVVRUT04sXG4gICAgaHJlZjogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudFxuICAgIDpjbGFzcz1cIltcbiAgICAgIHByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlRfVEVYVF9BU19JQ09OLkxJTksgPyAndGlkZS1saW5rLWFzLWJ1dHRvbi1pY29uJyA6ICd0aWRlLWJ1dHRvbi1pY29uJyxcbiAgICAgIFtDU1MuRElTUExBWS5JTkxJTkVfQkxPQ0ssIENTUy5CT1JERVIuUkFESVVTLkZVTEwsIENTUy5QQURESU5HLkZVTEwuSEFMRl0sXG4gICAgICBwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5UX1RFWFRfQVNfSUNPTi5MSU5LID8gW0NTUy5VTkRFUkxJTkUuUkVTVC5PRkZdIDogJycsXG4gICAgICBwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5UX1RFWFRfQVNfSUNPTi5ESVYgPyBbQ1NTLkNVUlNPUi5QT0lOVEVSXSA6ICcnLFxuICAgICAgW0NTUy5GT05ULlJPTEUuSEVBRExJTkVfM10sXG4gICAgXVwiXG4gICAgOmRpc2FibGVkPVwicHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVF9URVhUX0FTX0lDT04uQlVUVE9OICYmIHByb3BzLmRpc2FibGVkXCJcbiAgICA6aHJlZj1cInByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlRfVEVYVF9BU19JQ09OLkxJTksgJiYgcHJvcHMuaHJlZiA/IHByb3BzLmhyZWYgOiB1bmRlZmluZWRcIlxuICAgIDppcz1cIlxuICAgICAgcHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVF9URVhUX0FTX0lDT04uTElOS1xuICAgICAgICA/ICdhJ1xuICAgICAgICA6IHByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlRfVEVYVF9BU19JQ09OLkJVVFRPTlxuICAgICAgICA/ICdidXR0b24nXG4gICAgICAgIDogJ2RpdidcbiAgICBcIlxuICA+XG4gICAgPHNwYW4gOmNsYXNzPVwiWydsYWJlbCcsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMS5DRU5URVIsIENTUy5BWElTMi5DRU5URVJdXCI+XG4gICAgICB7eyBwcm9wcy5sYWJlbCB9fVxuICAgIDwvc3Bhbj5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1idXR0b24taWNvbixcbiAgLnRpZGUtbGluay1hcy1idXR0b24taWNvbiB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGlkZS13aGl0ZSk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGlkZS13aGl0ZSk7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtc2Vjb25kYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWJ1dHRvbi1pY29uOm5vdCg6ZGlzYWJsZWQpOmhvdmVyLFxuICAudGlkZS1saW5rLWFzLWJ1dHRvbi1pY29uOm5vdCg6ZGlzYWJsZWQpOmhvdmVyIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10aWRlLXN1cmZhY2UtdmFyaWFudCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGlkZS1zdXJmYWNlLXZhcmlhbnQpO1xuICB9XG5cbiAgLnRpZGUtYnV0dG9uLWljb246ZGlzYWJsZWQsXG4gIC50aWRlLWxpbmstYXMtYnV0dG9uLWljb246ZGlzYWJsZWQge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyLWhpZ2gpO1xuICB9XG5cbiAgLnRpZGUtYnV0dG9uLWljb24gLmxhYmVsLFxuICAudGlkZS1saW5rLWFzLWJ1dHRvbi1pY29uIC5sYWJlbCB7XG4gICAgd2lkdGg6IDEuNXJlbTtcbiAgICBoZWlnaHQ6IDEuNXJlbTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IFRhYiB9IGZyb20gJ0AvdHlwZXMvVGFiJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGFjdGl2ZVRhYjogbnVtYmVyO1xuICAgIHRhYnM6IFRhYltdO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgYWN0aXZlVGFiOiAwLFxuICB9KTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHMoWydjaGFuZ2UnXSk7XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoaW5kZXg6IG51bWJlcikgPT4ge1xuICAgIGVtaXQoJ2NoYW5nZScsIGluZGV4KTtcbiAgfTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1idXR0b24tc2VnbWVudGVkJyxcbiAgICAgIENTUy5CRy5TVVJGQUNFLlZBUklBTlQsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgIENTUy5QQURESU5HLkZVTEwuUVVBUlRFUixcbiAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICBdXCJcbiAgPlxuICAgIDxidXR0b25cbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtYnV0dG9uLXNlZ21lbnRlZC10YWInLFxuICAgICAgICBpbmRleCA9PT0gYWN0aXZlVGFiXG4gICAgICAgICAgPyBbQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxULCBDU1MuU0hBRE9XLkJPVFRPTV1cbiAgICAgICAgICA6IFsnaW5hY3RpdmUnLCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdLFxuICAgICAgICBDU1MuRkxFWC5HUk9XLk9OLFxuICAgICAgICBDU1MuQk9SREVSLkZVTEwuVFdPLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgICBDU1MuUEFERElORy5ZLlFVQVJURVIsXG4gICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICBDU1MuRk9OVC5ST0xFLkJVVFRPTl8xLFxuICAgICAgICBDU1MuV0hJVEVTUEFDRV9XUkFQLk9GRixcbiAgICAgIF1cIlxuICAgICAgOmRhdGEtdHJhY2s9XCJ0YWIuZGF0YVRyYWNrIHx8IHVuZGVmaW5lZFwiXG4gICAgICA6a2V5PVwidGFiLmxhYmVsXCJcbiAgICAgIEBjbGljaz1cImhhbmRsZUNsaWNrKGluZGV4KVwiXG4gICAgICB2LWZvcj1cIih0YWIsIGluZGV4KSBpbiBwcm9wcy50YWJzXCJcbiAgICA+XG4gICAgICA8c3BhbiA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8yX1NFTUlCT0xEXVwiPlxuICAgICAgICB7eyB0YWIubGFiZWwgfX1cbiAgICAgIDwvc3Bhbj5cblxuICAgICAgPHNwYW5cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfMl9TRU1JQk9MRF1cIlxuICAgICAgICB2LWlmPVwidGFiLmNvdW50ICYmIHRhYi5jb3VudCA+IDBcIlxuICAgICAgPlxuICAgICAgICAoe3sgdGFiLmNvdW50IH19KVxuICAgICAgPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWJ1dHRvbi1zZWdtZW50ZWQge1xuICAgIG1heC13aWR0aDogMjMuM3JlbTtcbiAgfVxuXG4gIC50aWRlLWJ1dHRvbi1zZWdtZW50ZWQtdGFiIHtcbiAgICBmbGV4OiAxO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC5pbmFjdGl2ZTpub3QoOmhvdmVyKSB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtdmFyaWFudCk7XG4gIH1cblxuICAuaW5hY3RpdmU6aG92ZXIge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtZGVmYXVsdCk7XG4gIH1cbjwvc3R5bGU+XG4iLCJleHBvcnQgY29uc3QgVFlQRV9DQVJEID0ge1xuICBBQ1RJT05BQkxFOiAnYWN0aW9uJyxcbiAgSU5GT1JNQVRJT05BTDogJ2luZm9ybWF0aW9uYWwnLFxuICBTRUxFQ1RBQkxFOiAnc2VsZWN0Jyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIENhcmRUeXBlID0gKHR5cGVvZiBUWVBFX0NBUkQpW2tleW9mIHR5cGVvZiBUWVBFX0NBUkRdO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBUWVBFX0NBUkQgfSBmcm9tICdAL3R5cGVzL0NhcmQnO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgQ2FyZFR5cGUgfSBmcm9tICdAL3R5cGVzL0NhcmQnO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgaGVhZGluZzogc3RyaW5nO1xuICAgIGljb24/OiBJY29uO1xuICAgIHNlbGVjdGVkPzogYm9vbGVhbjtcbiAgICB0eXBlPzogQ2FyZFR5cGU7XG4gICAgaHJlZj86IHN0cmluZztcbiAgfTtcblxuICB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkZXNjcmlwdGlvbjogdW5kZWZpbmVkLFxuICAgIGhyZWY6IHVuZGVmaW5lZCxcbiAgICBpY29uOiB1bmRlZmluZWQsXG4gICAgc2VsZWN0ZWQ6IHVuZGVmaW5lZCxcbiAgICB0eXBlOiBUWVBFX0NBUkQuSU5GT1JNQVRJT05BTCxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtY2FyZCcsXG4gICAgICBDU1MuQk9SREVSLkNPTE9SLkxPVyxcbiAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgIENTUy5QQURESU5HLkZVTEwuT05FLFxuICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICBDU1MuQUxJR04uWC5MRUZULFxuICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgIHR5cGUgIT09IFRZUEVfQ0FSRC5JTkZPUk1BVElPTkFMICYmICdob3ZlcmFibGUnLFxuICAgICAgdHlwZSA9PT0gVFlQRV9DQVJELlNFTEVDVEFCTEUgJiYgc2VsZWN0ZWQgJiYgJ3NlbGVjdGVkJyxcbiAgICBdXCJcbiAgICA6aHJlZj1cImhyZWZcIlxuICAgIDppcz1cImhyZWYgPyAnYScgOiB0eXBlID09PSBUWVBFX0NBUkQuSU5GT1JNQVRJT05BTCA/ICdkaXYnIDogJ2J1dHRvbidcIlxuICA+XG4gICAgPFRpZGVJY29uXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkZMRVguR1JPVy5PRkYsIENTUy5GTEVYLlNIUklOSy5PRkZdXCJcbiAgICAgIDppY29uPVwiaWNvblwiXG4gICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgdi1pZj1cImljb25cIlxuICAgIC8+XG5cbiAgICA8ZGl2IDpjbGFzcz1cIltDU1MuQVhJUzIuU1RBUlQsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5HQVAuSEFMRl1cIj5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfMV9TRU1JQk9MRCwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxUXVwiPlxuICAgICAgICB7eyBoZWFkaW5nIH19XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8yLCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgdi1pZj1cImRlc2NyaXB0aW9uXCJcbiAgICAgID5cbiAgICAgICAge3sgZGVzY3JpcHRpb24gfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWNhcmQuaG92ZXJhYmxlOm5vdCguc2VsZWN0ZWQpOmhvdmVyIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtYm9yZGVyLXJlc3QpO1xuICB9XG4gIC50aWRlLWNhcmQuc2VsZWN0ZWQge1xuICAgIG91dGxpbmU6IDJweCBzb2xpZCB2YXIoLS10aWRlLWJvcmRlci1oaWdoKTtcbiAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IG9uTW91bnRlZCwgb25Vbm1vdW50ZWQsIHJlZiB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVCdXR0b25JY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQnV0dG9uSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgYmxlZWQ/OiBudW1iZXI7XG4gICAgaXNGbG9hdGluZz86IGJvb2xlYW47XG4gICAgaXNIZWFkbGluZTE/OiBib29sZWFuO1xuICAgIGlzSGlkZWF3YXlCdXR0b25zPzogYm9vbGVhbjtcbiAgICBpc1Njcm9sbEJ5UGFnZT86IGJvb2xlYW47XG4gICAgaXNUb3VjaHNjcmVlbj86IGJvb2xlYW47XG4gICAgc3VidGl0bGU/OiBzdHJpbmc7XG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBibGVlZDogdW5kZWZpbmVkLFxuICAgIGlzRmxvYXRpbmc6IGZhbHNlLFxuICAgIGlzSGVhZGxpbmUxOiBmYWxzZSxcbiAgICBpc0hpZGVhd2F5QnV0dG9uczogdHJ1ZSxcbiAgICBpc1Njcm9sbEJ5UGFnZTogdHJ1ZSxcbiAgICBpc1RvdWNoc2NyZWVuOiB1bmRlZmluZWQsXG4gICAgc3VidGl0bGU6IHVuZGVmaW5lZCxcbiAgICB0aXRsZTogdW5kZWZpbmVkLFxuICB9KTtcblxuICB0eXBlIEVtaXRzID0ge1xuICAgIChldmVudDogJ3NsaWRlc0FkZGVkVG9WaWV3Jywgc2xpZGVzSW5WaWV3OiBudW1iZXJbXSk6IHZvaWQ7XG4gIH07XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPEVtaXRzPigpO1xuXG4gIGNvbnN0IGNvbnRhaW5lclJlZiA9IHJlZjxIVE1MRGl2RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBpc0ZpcnN0U2xpZGUgPSByZWY8Ym9vbGVhbj4odHJ1ZSk7XG4gIGNvbnN0IGlzTGFzdFNsaWRlID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3Qgc2hvd0J1dHRvbnMgPSByZWY8Ym9vbGVhbj4odHJ1ZSk7XG4gIGNvbnN0IHNsaWRlT2JzZXJ2ZXIgPSByZWY8SW50ZXJzZWN0aW9uT2JzZXJ2ZXIgfCBudWxsPihudWxsKTtcbiAgY29uc3Qgc2xpZGVzSW5WaWV3ID0gcmVmPG51bWJlcltdPihbXSk7XG4gIGNvbnN0IHNsb3RPYnNlcnZlciA9IHJlZjxNdXRhdGlvbk9ic2VydmVyIHwgbnVsbD4obnVsbCk7XG5cbiAgY29uc3Qgc2xpZGVzID0gcmVmPEhUTUxFbGVtZW50W10+KFtdKTtcblxuICAvLyBUT0RPOiBkZWJvdW5jZVxuICBjb25zdCBoYW5kbGVTY3JvbGwgPSAoKSA9PiB7XG4gICAgdXBkYXRlQ29udGFpbmVyQmxlZWQoKTtcbiAgfTtcblxuICBjb25zdCBvYnNlcnZlU2xpZGVzID0gKCkgPT4ge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICByb290OiBjb250YWluZXJSZWY/LnZhbHVlLFxuICAgICAgcm9vdE1hcmdpbjogJzBweCAxcHggMHB4IDBweCcsXG4gICAgICB0aHJlc2hvbGQ6IDEsXG4gICAgfTtcblxuICAgIHNsaWRlT2JzZXJ2ZXIudmFsdWUgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKGVudHJpZXMpID0+IHtcbiAgICAgIGxldCBzbGlkZXNBZGRlZFRvVmlldzogbnVtYmVyW10gPSBbXTtcblxuICAgICAgZW50cmllcy5mb3JFYWNoKChlbnRyeSkgPT4ge1xuICAgICAgICBjb25zdCBzbGlkZUluZGV4ID0gc2xpZGVzLnZhbHVlLmluZGV4T2YoZW50cnkudGFyZ2V0IGFzIEhUTUxFbGVtZW50KTtcblxuICAgICAgICBpZiAoZW50cnkuaXNJbnRlcnNlY3RpbmcpIHtcbiAgICAgICAgICBzbGlkZXNBZGRlZFRvVmlldy5wdXNoKHNsaWRlSW5kZXgpO1xuICAgICAgICAgIHNsaWRlc0luVmlldy52YWx1ZS5wdXNoKHNsaWRlSW5kZXgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNsaWRlc0luVmlldy52YWx1ZSA9IHNsaWRlc0luVmlldy52YWx1ZS5maWx0ZXIoKHNsaWRlKSA9PiBzbGlkZSAhPT0gc2xpZGVJbmRleCk7XG4gICAgICAgIH1cblxuICAgICAgICBzbGlkZXNJblZpZXcudmFsdWUuc29ydCgoYSwgYikgPT4gYSAtIGIpO1xuICAgICAgfSk7XG5cbiAgICAgIGlzRmlyc3RTbGlkZS52YWx1ZSA9IHNsaWRlc0luVmlldy52YWx1ZS5pbmNsdWRlcygwKTtcbiAgICAgIGlzTGFzdFNsaWRlLnZhbHVlID0gc2xpZGVzSW5WaWV3LnZhbHVlLmluY2x1ZGVzKHNsaWRlcy52YWx1ZS5sZW5ndGggLSAxKTtcblxuICAgICAgaWYgKHNsaWRlc0FkZGVkVG9WaWV3Lmxlbmd0aCA+IDApIGVtaXQoJ3NsaWRlc0FkZGVkVG9WaWV3Jywgc2xpZGVzQWRkZWRUb1ZpZXcpO1xuICAgIH0sIG9wdGlvbnMpO1xuXG4gICAgc2xpZGVzLnZhbHVlLmZvckVhY2goKGNoaWxkKSA9PiB7XG4gICAgICBpZiAoc2xpZGVPYnNlcnZlci52YWx1ZSkgc2xpZGVPYnNlcnZlci52YWx1ZS5vYnNlcnZlKGNoaWxkKTtcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBvYnNlcnZlU2xvdCA9ICgpID0+IHtcbiAgICBjb25zdCBvYnNlcnZlckNhbGxiYWNrID0gKCkgPT4ge1xuICAgICAgaWYgKGNvbnRhaW5lclJlZi52YWx1ZSA9PT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgICBzbGlkZXMudmFsdWUgPSBBcnJheS5mcm9tKGNvbnRhaW5lclJlZi52YWx1ZS5jaGlsZHJlbikgYXMgSFRNTEVsZW1lbnRbXTtcbiAgICAgIG9ic2VydmVTbGlkZXMoKTtcbiAgICB9O1xuXG4gICAgc2xvdE9ic2VydmVyLnZhbHVlID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIob2JzZXJ2ZXJDYWxsYmFjayk7XG5cbiAgICBpZiAoY29udGFpbmVyUmVmLnZhbHVlKSBzbG90T2JzZXJ2ZXIudmFsdWUub2JzZXJ2ZShjb250YWluZXJSZWYudmFsdWUsIHsgY2hpbGRMaXN0OiB0cnVlIH0pO1xuICB9O1xuXG4gIGNvbnN0IHNjcm9sbFRvT2Zmc2V0ID0gKHRhcmdldDogbnVtYmVyKSA9PiB7XG4gICAgaWYgKGNvbnRhaW5lclJlZi52YWx1ZSA9PT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgY29udGFpbmVyUmVmLnZhbHVlLnNjcm9sbFRvKHtcbiAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICAgIGxlZnQ6IHRhcmdldCxcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBzaG93TmV4dFBhZ2UgPSAoKSA9PiB7XG4gICAgaWYgKHNsaWRlc0luVmlldy52YWx1ZS5sZW5ndGggPT09IDApIHJldHVybjtcblxuICAgIGNvbnN0IG5leHRTbGlkZTogbnVtYmVyID0gc2xpZGVzSW5WaWV3LnZhbHVlW3NsaWRlc0luVmlldy52YWx1ZS5sZW5ndGggLSAxXSArIDE7XG5cbiAgICBzY3JvbGxUb09mZnNldChzbGlkZXMudmFsdWVbbmV4dFNsaWRlXS5vZmZzZXRMZWZ0KTtcbiAgfTtcblxuICBjb25zdCBzaG93UHJldmlvdXNQYWdlID0gKCkgPT4ge1xuICAgIGlmIChzbGlkZXNJblZpZXcudmFsdWUubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICBjb25zdCBwcmV2aW91c1NsaWRlOiBudW1iZXIgPSBzbGlkZXNJblZpZXcudmFsdWVbMF0gLSBzbGlkZXNJblZpZXcudmFsdWUubGVuZ3RoO1xuXG4gICAgc2Nyb2xsVG9PZmZzZXQoc2xpZGVzLnZhbHVlW3ByZXZpb3VzU2xpZGVdPy5vZmZzZXRMZWZ0IHx8IDApO1xuICB9O1xuXG4gIGNvbnN0IHNob3dOZXh0U2xpZGUgPSAoKSA9PiB7XG4gICAgaWYgKHNsaWRlc0luVmlldy52YWx1ZS5sZW5ndGggPT09IDApIHJldHVybjtcblxuICAgIGNvbnN0IG5leHRTbGlkZTogbnVtYmVyID0gc2xpZGVzSW5WaWV3LnZhbHVlLmxlbmd0aCA+IDEgPyBzbGlkZXNJblZpZXcudmFsdWVbMV0gOiBzbGlkZXNJblZpZXcudmFsdWVbMF0gKyAxO1xuXG4gICAgc2Nyb2xsVG9PZmZzZXQoc2xpZGVzLnZhbHVlW25leHRTbGlkZV0ub2Zmc2V0TGVmdCk7XG4gIH07XG5cbiAgY29uc3Qgc2hvd1ByZXZpb3VzU2xpZGUgPSAoKSA9PiB7XG4gICAgaWYgKHNsaWRlc0luVmlldy52YWx1ZS5sZW5ndGggPT09IDApIHJldHVybjtcblxuICAgIGNvbnN0IHByZXZpb3VzU2xpZGU6IG51bWJlciA9IHNsaWRlc0luVmlldy52YWx1ZVswXSAtIDE7XG5cbiAgICBzY3JvbGxUb09mZnNldChzbGlkZXMudmFsdWVbcHJldmlvdXNTbGlkZV0ub2Zmc2V0TGVmdCk7XG4gIH07XG5cbiAgY29uc3QgdXBkYXRlQ29udGFpbmVyQmxlZWQgPSAoKSA9PiB7XG4gICAgaWYgKGNvbnRhaW5lclJlZi52YWx1ZSA9PT0gbnVsbCkgcmV0dXJuO1xuICAgIGlmIChwcm9wcy5ibGVlZCA9PSB1bmRlZmluZWQpIHJldHVybjtcblxuICAgIGlmIChpc0xhc3RTbGlkZS52YWx1ZSAmJiBzaG93QnV0dG9ucy52YWx1ZSkge1xuICAgICAgLy8gUHJldmVudCBncmFkaWVudCBmcm9tIGJsZWVkaW5nIG9mZiBsZWZ0IGVkZ2UgaW4gbGFzdCBwb3NpdGlvbi5cbiAgICAgIGNvbnRhaW5lclJlZi52YWx1ZS5zdHlsZS5tYXJnaW4gPSBgLSR7cHJvcHMuYmxlZWR9cHggLSR7cHJvcHMuYmxlZWR9cHggLSR7cHJvcHMuYmxlZWR9cHggMGA7XG4gICAgICBjb250YWluZXJSZWYudmFsdWUuc3R5bGUucGFkZGluZyA9IGAke3Byb3BzLmJsZWVkfXB4ICR7cHJvcHMuYmxlZWR9cHggJHtwcm9wcy5ibGVlZH1weCAwYDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUHJldmVudCBncmFkaWVudCBmcm9tIGJsZWVkaW5nIG9mZiByaWdodCBlZGdlIGluIGZpcnN0IHBvc2l0aW9uLlxuICAgICAgY29udGFpbmVyUmVmLnZhbHVlLnN0eWxlLm1hcmdpbiA9IGAtJHtwcm9wcy5ibGVlZH1weCAwIC0ke3Byb3BzLmJsZWVkfXB4IC0ke3Byb3BzLmJsZWVkfXB4YDtcbiAgICAgIGNvbnRhaW5lclJlZi52YWx1ZS5zdHlsZS5wYWRkaW5nID0gYCR7cHJvcHMuYmxlZWR9cHggMCAke3Byb3BzLmJsZWVkfXB4ICR7cHJvcHMuYmxlZWR9cHhgO1xuICAgIH1cbiAgfTtcblxuICBvbk1vdW50ZWQoKCkgPT4ge1xuICAgIGlmIChjb250YWluZXJSZWYudmFsdWUgPT09IG51bGwpIHJldHVybjtcblxuICAgIHNsaWRlcy52YWx1ZSA9IEFycmF5LmZyb20oY29udGFpbmVyUmVmLnZhbHVlLmNoaWxkcmVuKSBhcyBIVE1MRWxlbWVudFtdO1xuXG4gICAgb2JzZXJ2ZVNsaWRlcygpO1xuICAgIG9ic2VydmVTbG90KCk7XG4gICAgdXBkYXRlQ29udGFpbmVyQmxlZWQoKTtcbiAgfSk7XG5cbiAgb25Vbm1vdW50ZWQoKCkgPT4ge1xuICAgIHNsaWRlT2JzZXJ2ZXIudmFsdWU/LmRpc2Nvbm5lY3QoKTtcbiAgICBzbG90T2JzZXJ2ZXIudmFsdWU/LmRpc2Nvbm5lY3QoKTtcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8c2VjdGlvblxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWNhcm91c2VsJyxcbiAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgQ1NTLkdBUC5PTkUsXG4gICAgICBDU1MuV0lEVEguTUFYX0ZVTEwsXG4gICAgXVwiXG4gICAgcmVmPVwiY2Fyb3VzZWxSZWZcIlxuICA+XG4gICAgPHNlY3Rpb25cbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBwcm9wcy50aXRsZSA/IENTUy5BWElTMS5CRVRXRUVOIDogQ1NTLkFYSVMxLkVORCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLldJRFRILkZVTExdXCJcbiAgICAgIHYtaWY9XCIoIXByb3BzLmlzRmxvYXRpbmcgJiYgc2hvd0J1dHRvbnMpIHx8IHByb3BzLnRpdGxlXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5XUkFQLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLk9ORV1cIlxuICAgICAgICB2LWlmPVwicHJvcHMudGl0bGVcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSElURVNQQUNFX1dSQVAuT0ZGLCBpc0hlYWRsaW5lMSA/IENTUy5GT05ULlJPTEUuSEVBRExJTkVfMSA6IENTUy5GT05ULlJPTEUuSEVBRExJTkVfMl1cIlxuICAgICAgICAgIHYtaWY9XCJwcm9wcy50aXRsZVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBwcm9wcy50aXRsZSB9fVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSElURVNQQUNFX1dSQVAuT0ZGLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzIsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICAgIHYtaWY9XCJwcm9wcy5zdWJ0aXRsZVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBwcm9wcy5zdWJ0aXRsZSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLk9ORV1cIlxuICAgICAgICB2LWlmPVwiIXByb3BzLmlzRmxvYXRpbmcgJiYgc2hvd0J1dHRvbnNcIlxuICAgICAgPlxuICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJpc0ZpcnN0U2xpZGVcIlxuICAgICAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX0xFRlRcIlxuICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlRFUlRJQVJZXCJcbiAgICAgICAgICBAY2xpY2s9XCJpc1Njcm9sbEJ5UGFnZSA/IHNob3dQcmV2aW91c1BhZ2UoKSA6IHNob3dQcmV2aW91c1NsaWRlKClcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICAgIDpkaXNhYmxlZD1cImlzTGFzdFNsaWRlXCJcbiAgICAgICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9SSUdIVFwiXG4gICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuVEVSVElBUllcIlxuICAgICAgICAgIEBjbGljaz1cImlzU2Nyb2xsQnlQYWdlID8gc2hvd05leHRQYWdlKCkgOiBzaG93TmV4dFNsaWRlKClcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9zZWN0aW9uPlxuXG4gICAgPHNsb3QgbmFtZT1cIm1pc2NcIiAvPlxuXG4gICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLlBPU0lUSU9OLlJFTEFUSVZFXVwiPlxuICAgICAgPHVsXG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1jYXJvdXNlbC1jb250YWluZXInLFxuICAgICAgICAgIHByb3BzLmJsZWVkICYmICdibGVlZCcsXG4gICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICBDU1MuR0FQLk9ORSxcbiAgICAgICAgICBDU1MuTElTVF9CVUxMRVRTLk9GRixcbiAgICAgICAgICBDU1MuT1ZFUkZMT1cuWC5TQ1JPTEwsXG4gICAgICAgICAgQ1NTLlNDUk9MTEJBUi5PRkYsXG4gICAgICAgICAgQ1NTLlNOQVAuT04sXG4gICAgICAgIF1cIlxuICAgICAgICByZWY9XCJjb250YWluZXJSZWZcIlxuICAgICAgICBAc2Nyb2xsPVwiaGFuZGxlU2Nyb2xsXCJcbiAgICAgID5cbiAgICAgICAgPHNsb3QgLz5cbiAgICAgIDwvdWw+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLWNhcm91c2VsLWJ1dHRvbi1vdmVybGF5JyxcbiAgICAgICAgICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLlRPUCxcbiAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgIENTUy5BWElTMS5CRVRXRUVOLFxuICAgICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgICAgQ1NTLkhFSUdIVC5GVUxMLFxuICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgICAgcHJvcHMuaXNIaWRlYXdheUJ1dHRvbnMgPyAnaGlkZWF3YXknIDogJycsXG4gICAgICAgIF1cIlxuICAgICAgICB2LWlmPVwiaXNGbG9hdGluZyAmJiBzaG93QnV0dG9uc1wiXG4gICAgICA+XG4gICAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuTUFSR0lOLkxFRlQuT05FLCBDU1MuUE9JTlRFUl9FVkVOVFMuT05dXCJcbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJpc0ZpcnN0U2xpZGVcIlxuICAgICAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX0xFRlRcIlxuICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICAgIEBjbGljaz1cImlzU2Nyb2xsQnlQYWdlID8gc2hvd1ByZXZpb3VzUGFnZSgpIDogc2hvd1ByZXZpb3VzU2xpZGUoKVwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5NQVJHSU4uUklHSFQuT05FLCBDU1MuUE9JTlRFUl9FVkVOVFMuT05dXCJcbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJpc0xhc3RTbGlkZVwiXG4gICAgICAgICAgOmljb249XCJJQ09OLkNIRVZST05fUklHSFRcIlxuICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICAgIEBjbGljaz1cImlzU2Nyb2xsQnlQYWdlID8gc2hvd05leHRQYWdlKCkgOiBzaG93TmV4dFNsaWRlKClcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvc2VjdGlvbj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWNhcm91c2VsLWNvbnRhaW5lci5ibGVlZCB7XG4gICAgdHJhbnNpdGlvbjogbWFyZ2luIHZhcigtLXRpZGUtYW5pbWF0ZSksIHBhZGRpbmcgdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWNhcm91c2VsLWJ1dHRvbi1vdmVybGF5LmhpZGVhd2F5IHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG5cbiAgLnRpZGUtY2Fyb3VzZWw6aG92ZXIgLnRpZGUtY2Fyb3VzZWwtYnV0dG9uLW92ZXJsYXkuaGlkZWF3YXkge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IEVMRU1FTlQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBUQVJHRVQgfSBmcm9tICdAL3R5cGVzL1RhcmdldCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBFbGVtZW50IH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGVsZW1lbnQ6IEVsZW1lbnQ7XG4gICAgaHJlZj86IHN0cmluZztcbiAgICBpc05ld1RhYj86IGJvb2xlYW47XG4gICAgbGFiZWw6IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGVsZW1lbnQ6IEVMRU1FTlQuTElOSyxcbiAgICBocmVmOiB1bmRlZmluZWQsXG4gICAgaXNOZXdUYWI6IGZhbHNlLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxjb21wb25lbnRcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1jaGlwLWFjdGlvbicsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgQ1NTLlBBRERJTkcuWC5PTkUsXG4gICAgICBDU1MuUEFERElORy5ZLkhBTEYsXG4gICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgQ1NTLkZPTlQuUk9MRS5MSU5LXzIsXG4gICAgICBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICBDU1MuVU5ERVJMSU5FLlJFU1QuT0ZGLFxuICAgIF1cIlxuICAgIDpocmVmPVwicHJvcHMuaHJlZlwiXG4gICAgOnRhcmdldD1cInByb3BzLmlzTmV3VGFiID8gVEFSR0VULkJMQU5LIDogVEFSR0VULlNFTEZcIlxuICAgIDppcz1cImVsZW1lbnRcIlxuICA+XG4gICAgPFRpZGVJY29uIDppY29uPVwiSUNPTi5TRUFSQ0hcIiAvPlxuXG4gICAgPHNwYW4+e3sgcHJvcHMubGFiZWwgfX08L3NwYW4+XG4gIDwvY29tcG9uZW50PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtY2hpcC1hY3Rpb246aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS12YXJpYW50KTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtYm9yZGVyLWhpZ2gpO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaXNBY3RpdmU6IGJvb2xlYW47XG4gICAgbGFiZWw6IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IGRlZmluZVByb3BzPFByb3BzPigpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGJ1dHRvblxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWNoaXAtZmlsdGVyJyxcbiAgICAgIHByb3BzLmlzQWN0aXZlXG4gICAgICAgID8gW0NTUy5CRy5TRUNPTkRBUlksIENTUy5GT05ULkNPTE9SLlNFQ09OREFSWV1cbiAgICAgICAgOiBbQ1NTLkJHLlNVUkZBQ0UuVkFSSUFOVCwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxUXSxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICBDU1MuUEFERElORy5YLk9ORSxcbiAgICAgIENTUy5QQURESU5HLlkuSEFMRixcbiAgICAgIENTUy5GT05ULlJPTEUuTEFCRUxfMixcbiAgICAgIHByb3BzLmlzQWN0aXZlID8gJ2FjdGl2ZScgOiAnJyxcbiAgICBdXCJcbiAgPlxuICAgIDxzbG90IC8+XG4gICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMxLkNFTlRFUiwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5IQUxGXVwiPlxuICAgICAgPHNwYW4gOmNsYXNzPVwiW3Byb3BzLmlzQWN0aXZlID8gJycgOiAnaWNvbi1zcGFjaW5nJywgQ1NTLkZPTlQuUk9MRS5MQUJFTF8xLCBDU1MuV0hJVEVTUEFDRV9XUkFQLk9GRl1cIj5cbiAgICAgICAge3sgcHJvcHMubGFiZWwgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9idXR0b24+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAvKiBCb3JkZXIgbXVzdCBhbHdheXMgZXhpc3QgdG8gcHJldmVudCByZXNpemUgb24gaG92ZXIgc3RhdGUsIGJ1dCBtYXRjaCBiYWNrZ3JvdW5kIGNvbG9yIG9uIHJlc3Qgc3RhdGUgdG8gYmxlbmQgaW4uICovXG4gIC50aWRlLWNoaXAtZmlsdGVyIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS12YXJpYW50KTtcbiAgfVxuXG4gIC50aWRlLWNoaXAtZmlsdGVyLmFjdGl2ZSB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10aWRlLXNlY29uZGFyeSk7XG4gIH1cblxuICAudGlkZS1jaGlwLWZpbHRlcjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLXZhcmlhbnQpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLW9uLXN1cmZhY2UpO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IGRlZmluZVByb3BzPFByb3BzPigpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGJ1dHRvblxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWNoaXAtaW5wdXQnLFxuICAgICAgQ1NTLkJHLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgQ1NTLlBBRERJTkcuWC5PTkUsXG4gICAgICBDU1MuUEFERElORy5ZLkhBTEYsXG4gICAgICBDU1MuRk9OVC5ST0xFLkxBQkVMXzIsXG4gICAgXVwiXG4gID5cbiAgICA8c3Bhbj57eyBwcm9wcy5sYWJlbCB9fTwvc3Bhbj5cblxuICAgIDxUaWRlSWNvbiA6aWNvbj1cIklDT04uQ0xPU0VcIiAvPlxuICA8L2J1dHRvbj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWNoaXAtaW5wdXQge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtY2hpcC1pbnB1dDpob3ZlciB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10aWRlLWJvcmRlci1oaWdoKTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGhlYWRpbmc/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBoZWFkaW5nOiAnJyxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8c2VjdGlvbiBjbGFzcz1cInRpZGUtY29sdW1uc1wiPlxuICAgIDxoMiA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5CT1RUT00uSEFMRl1cIj5cbiAgICAgIHt7IHByb3BzLmhlYWRpbmcgfX1cbiAgICA8L2gyPlxuXG4gICAgPHVsIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5XUkFQLCBDU1MuR0FQLlRXTywgQ1NTLkxJU1RfQlVMTEVUUy5PRkZdXCI+XG4gICAgICA8bGkgY2xhc3M9XCJ0aWRlLWNvbHVtbnMtY29sdW1uXCI+XG4gICAgICAgIDxzbG90IG5hbWU9XCJzZWN0aW9uMVwiIC8+XG4gICAgICA8L2xpPlxuXG4gICAgICA8bGkgY2xhc3M9XCJ0aWRlLWNvbHVtbnMtY29sdW1uXCI+XG4gICAgICAgIDxzbG90IG5hbWU9XCJzZWN0aW9uMlwiIC8+XG4gICAgICA8L2xpPlxuXG4gICAgICA8bGkgY2xhc3M9XCJ0aWRlLWNvbHVtbnMtY29sdW1uXCI+XG4gICAgICAgIDxzbG90IG5hbWU9XCJzZWN0aW9uM1wiIC8+XG4gICAgICA8L2xpPlxuXG4gICAgICA8bGkgY2xhc3M9XCJ0aWRlLWNvbHVtbnMtY29sdW1uXCI+XG4gICAgICAgIDxzbG90IG5hbWU9XCJzZWN0aW9uNFwiIC8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gIDwvc2VjdGlvbj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWNvbHVtbnMtY29sdW1uIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gIEBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAgIC50aWRlLWNvbHVtbnMtY29sdW1uIHtcbiAgICAgIHdpZHRoOiBjYWxjKCgxMDAlIC0gMnJlbSkgLyAyKTtcbiAgICB9XG4gIH1cblxuICBAbWVkaWEgKG1pbi13aWR0aDogMTIzMnB4KSB7XG4gICAgLnRpZGUtY29sdW1ucy1jb2x1bW4ge1xuICAgICAgd2lkdGg6IGNhbGMoKDEwMCUgLSA2cmVtKSAvIDQpO1xuICAgIH1cbiAgfVxuPC9zdHlsZT5cbiIsImV4cG9ydCBjb25zdCBPQkpFQ1RfRklUID0ge1xuICBDT05UQUlOOiAnY29udGFpbicsXG4gIENPVkVSOiAnY292ZXInLFxuICBTQ0FMRV9ET1dOOiAnc2NhbGUtZG93bicsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBPYmplY3RGaXQgPSAodHlwZW9mIE9CSkVDVF9GSVQpW2tleW9mIHR5cGVvZiBPQkpFQ1RfRklUXTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB7IE9CSkVDVF9GSVQgfSBmcm9tICdAL3R5cGVzL0ltYWdlJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgT2JqZWN0Rml0IH0gZnJvbSAnQC90eXBlcy9JbWFnZSc7XG4gIGltcG9ydCB0eXBlIHsgU291cmNlIH0gZnJvbSAnQC90eXBlcy9Tb3VyY2UnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgYWx0Pzogc3RyaW5nO1xuICAgIGhlaWdodD86IHN0cmluZztcbiAgICBpc0xhenk/OiBib29sZWFuO1xuICAgIG9iamVjdEZpdD86IE9iamVjdEZpdDtcbiAgICBzb3VyY2VzPzogU291cmNlW107XG4gICAgc3JjPzogc3RyaW5nO1xuICAgIHdpZHRoPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgYWx0OiAnJyxcbiAgICBoZWlnaHQ6IHVuZGVmaW5lZCxcbiAgICBpc0xhenk6IHRydWUsXG4gICAgb2JqZWN0Rml0OiBPQkpFQ1RfRklULkNPVkVSLFxuICAgIHNvdXJjZXM6ICgpID0+IFtdLFxuICAgIHNyYzogdW5kZWZpbmVkLFxuICAgIHdpZHRoOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IHBpY3R1cmUgPSByZWYoKTtcbiAgY29uc3QgaW1nID0gcmVmKCk7XG5cbiAgY29uc3QgaW1hZ2VEZWZhdWx0ID0gJ2h0dHBzOi8vY2RuLXN0YXRpYy50aWxhYnMuaW8vbWFya2V0cGxhY2UvY29tbW9uL2ltYWdlLWNvbWluZy1zb29uLnN2Zyc7XG5cbiAgY29uc3Qgb2JqZWN0Rml0Q2xhc3NOYW1lID0gY29tcHV0ZWQ8c3RyaW5nPigoKSA9PiB7XG4gICAgc3dpdGNoIChwcm9wcy5vYmplY3RGaXQpIHtcbiAgICAgIGNhc2UgT0JKRUNUX0ZJVC5DT05UQUlOOlxuICAgICAgICByZXR1cm4gQ1NTLk9CSkVDVC5DT05UQUlOO1xuICAgICAgY2FzZSBPQkpFQ1RfRklULkNPVkVSOlxuICAgICAgICByZXR1cm4gQ1NTLk9CSkVDVC5DT1ZFUjtcbiAgICAgIGNhc2UgT0JKRUNUX0ZJVC5TQ0FMRV9ET1dOOlxuICAgICAgICByZXR1cm4gQ1NTLk9CSkVDVC5TQ0FMRV9ET1dOO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIE9CSkVDVF9GSVQuQ09WRVI7XG4gICAgfVxuICB9KTtcblxuICBjb25zdCBzZXRJbWFnZUZyb21EZWZhdWx0ID0gKCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRTcmMgPSBpbWcudmFsdWU/LmN1cnJlbnRTcmM7XG4gICAgY29uc3QgcGljdHVyZVNvdXJjZSA9IHBpY3R1cmUudmFsdWU/LnF1ZXJ5U2VsZWN0b3IoYHNvdXJjZVtzcmNzZXQ9XCIke2N1cnJlbnRTcmN9XCJdYCk7XG5cbiAgICBpZiAoY3VycmVudFNyYyAmJiBwaWN0dXJlU291cmNlKSB7XG4gICAgICBwaWN0dXJlU291cmNlLnNyY3NldCA9IGltYWdlRGVmYXVsdDtcbiAgICB9IGVsc2UgaWYgKGltZy52YWx1ZSkge1xuICAgICAgaW1nLnZhbHVlLnNyYyA9IGltYWdlRGVmYXVsdDtcbiAgICB9XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8cGljdHVyZVxuICAgIDpjbGFzcz1cIlsndGlkZS1pbWFnZScsIENTUy5ESVNQTEFZLkJMT0NLXVwiXG4gICAgcmVmPVwicGljdHVyZVwiXG4gICAgOnN0eWxlPVwiXG4gICAgICB3aWR0aCB8fCBoZWlnaHRcbiAgICAgICAgPyB7XG4gICAgICAgICAgICB3aWR0aDogd2lkdGggfHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHQgfHwgdW5kZWZpbmVkLFxuICAgICAgICAgIH1cbiAgICAgICAgOiB1bmRlZmluZWRcbiAgICBcIlxuICA+XG4gICAgPHNvdXJjZVxuICAgICAgOmtleT1cInNvdXJjZS5zcmNzZXRcIlxuICAgICAgOm1lZGlhPVwiYChtaW4td2lkdGg6JHtzb3VyY2UubWVkaWF9cHgpYFwiXG4gICAgICA6c3Jjc2V0PVwic291cmNlLnNyY3NldFwiXG4gICAgICB2LWZvcj1cInNvdXJjZSBpbiBwcm9wcy5zb3VyY2VzXCJcbiAgICAvPlxuXG4gICAgPGltZ1xuICAgICAgOmFsdD1cImFsdFwiXG4gICAgICA6Y2xhc3M9XCJbJ3RpZGUtaW1hZ2UtaW1nJywgQ1NTLldJRFRILkZVTEwsIENTUy5IRUlHSFQuRlVMTCwgQ1NTLk9CSkVDVC5DRU5URVIsIG9iamVjdEZpdENsYXNzTmFtZV1cIlxuICAgICAgOmZldGNocHJpb3JpdHk9XCJpc0xhenkgPyB1bmRlZmluZWQgOiAnaGlnaCdcIlxuICAgICAgOmxvYWRpbmc9XCJwcm9wcy5pc0xhenkgPyAnbGF6eScgOiAnZWFnZXInXCJcbiAgICAgIHJlZj1cImltZ1wiXG4gICAgICA6c3JjPVwic3JjID8/IGltYWdlRGVmYXVsdFwiXG4gICAgICBAZXJyb3I9XCJzZXRJbWFnZUZyb21EZWZhdWx0XCJcbiAgICAvPlxuICA8L3BpY3R1cmU+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1pbWFnZS1pbWcge1xuICAgIGJvcmRlci1yYWRpdXM6IGluaGVyaXQ7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgVGlkZUltYWdlIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSW1hZ2UudnVlJztcbiAgaW1wb3J0IHsgT0JKRUNUX0ZJVCB9IGZyb20gJ0AvdHlwZXMvSW1hZ2UnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBTb3VyY2UgfSBmcm9tICdAL3R5cGVzL1NvdXJjZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBhbHQ6IHN0cmluZztcbiAgICBpc0xhenk6IGJvb2xlYW47XG4gICAgc291cmNlcz86IFNvdXJjZVtdO1xuICAgIHNyYz86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGFsdDogJycsXG4gICAgaXNMYXp5OiB0cnVlLFxuICAgIHNvdXJjZXM6ICgpID0+IFtdLFxuICAgIHNyYzogdW5kZWZpbmVkLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWltYWdlLWJhY2tncm91bmQnLCBDU1MuUE9TSVRJT04uUkVMQVRJVkUsIENTUy5PVkVSRkxPVy5YWS5ISURERU4sIENTUy5JU09MQVRJT04uSVNPTEFURV1cIj5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgIENTUy5QT1NJVElPTi5BQlNPTFVURSxcbiAgICAgICAgQ1NTLkhFSUdIVC5GVUxMLFxuICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMxLkNFTlRFUixcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxUaWRlSW1hZ2VcbiAgICAgICAgOmFsdD1cInByb3BzLmFsdFwiXG4gICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkhFSUdIVC5GVUxMXVwiXG4gICAgICAgIDppcy1sYXp5PVwicHJvcHMuaXNMYXp5XCJcbiAgICAgICAgOm9iamVjdC1maXQ9XCJPQkpFQ1RfRklULkNPVkVSXCJcbiAgICAgICAgOnNvdXJjZXM9XCJwcm9wcy5zb3VyY2VzXCJcbiAgICAgICAgOnNyYz1cInByb3BzLnNyY1wiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPHNsb3QgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICA6ZGVlcCgudGlkZS1pbWFnZSkge1xuICAgIHotaW5kZXg6IC0xO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgbGFiZWw/OiBzdHJpbmcgfCBudW1iZXI7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbmRpY2F0b3InLFxuICAgICAgcHJvcHMubGFiZWwgPyAnJyA6ICdkb3QnLFxuICAgICAgQ1NTLkRJU1BMQVkuSU5MSU5FX0JMT0NLLFxuICAgICAgQ1NTLkFMSUdOLlguQ0VOVEVSLFxuICAgICAgQ1NTLkJHLkdMT0JBTC5QUklNQVJZLkVSUk9SLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgIHByb3BzLmxhYmVsICYmIHByb3BzLmxhYmVsLnRvU3RyaW5nKCkubGVuZ3RoID4gMSA/IFtDU1MuUEFERElORy5YLkhBTEZdIDogW10sXG4gICAgICBwcm9wcy5sYWJlbFxuICAgICAgICA/IFtDU1MuUE9TSVRJT04uUkVMQVRJVkUsIENTUy5GT05ULlJPTEUuTEFCRUxfMywgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5JTlZFUlNFXVxuICAgICAgICA6IFtDU1MuQk9SREVSLkZVTEwuT05FXSxcbiAgICBdXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIlsndGlkZS1pbmRpY2F0b3ItbGFiZWwnXVwiXG4gICAgICB2LWlmPVwicHJvcHMubGFiZWxcIlxuICAgID5cbiAgICAgIHt7IHByb3BzLmxhYmVsIH19XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW5kaWNhdG9yOm5vdCguZG90KSB7XG4gICAgbWluLXdpZHRoOiAxcmVtO1xuICAgIG1pbi1oZWlnaHQ6IDFyZW07XG4gIH1cblxuICAudGlkZS1pbmRpY2F0b3IuZG90IHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtZ3JheS0xMDApO1xuICAgIHdpZHRoOiAxMHB4O1xuICAgIGhlaWdodDogMTBweDtcbiAgfVxuXG4gIC50aWRlLWluZGljYXRvci1sYWJlbCB7XG4gICAgLyogVXNlIGJvdHRvbS13ZWlnaHRpbmcgdG8gb2Zmc2V0IHRoZSBtYXRoZW1hdGljYWwgY2VudGVyIHRvIHRoZSBvcHRpY2FsIGNlbnRlci4gKi9cbiAgICBtYXJnaW4tdG9wOiAtMXB4O1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGlzRXJyb3I6IGJvb2xlYW47XG4gICAgbWVzc2FnZTogc3RyaW5nO1xuICB9O1xuICBkZWZpbmVQcm9wczxQcm9wcz4oKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIENTUy5GT05ULlJPTEUuTEFCRUxfMyxcbiAgICAgIGlzRXJyb3IgPyBbQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLkVSUk9SXSA6IFtDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFRdLFxuICAgIF1cIlxuICA+XG4gICAgPFRpZGVJY29uXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkZMRVguU0hSSU5LLk9GRl1cIlxuICAgICAgOmljb249XCJJQ09OLkVSUk9SXCJcbiAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICB2LWlmPVwiaXNFcnJvclwiXG4gICAgLz5cblxuICAgIDxkaXY+XG4gICAgICB7eyBtZXNzYWdlIH19XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cbiIsImltcG9ydCB7IGluamVjdCwgcHJvdmlkZSwgcmVmIH0gZnJvbSAndnVlJztcblxuaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuXG50eXBlIFRpZGVGb3JtQ29udGV4dCA9IHtcbiAgZm9yY2VTaG93RXJyb3JzOiBSZWY8Ym9vbGVhbj47XG59O1xuXG5jb25zdCBGT1JNX0tFWSA9IFN5bWJvbCgndGlkZS1mb3JtJyk7XG5cbmV4cG9ydCBjb25zdCB1c2VUaWRlRm9ybSA9ICgpID0+IHtcbiAgY29uc3QgZm9yY2VTaG93RXJyb3JzID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcblxuICBwcm92aWRlPFRpZGVGb3JtQ29udGV4dD4oRk9STV9LRVksIHsgZm9yY2VTaG93RXJyb3JzIH0pO1xuXG4gIGNvbnN0IHJldmVhbFZhbGlkYXRpb25FcnJvcnMgPSAoKSA9PiB7XG4gICAgZm9yY2VTaG93RXJyb3JzLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICByZXR1cm4geyByZXZlYWxWYWxpZGF0aW9uRXJyb3JzIH07XG59O1xuXG5leHBvcnQgY29uc3QgdXNlRm9ybUNvbnRleHQgPSAoKSA9PiB7XG4gIHJldHVybiBpbmplY3Q8VGlkZUZvcm1Db250ZXh0PihGT1JNX0tFWSk7XG59O1xuIiwiaW1wb3J0IHsgZm9ybWF0TnVtYmVyIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcblxuaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uTGVuZ3RoLCBWYWxpZGF0aW9uUmVzdWx0LCBWYWxpZGF0b3IgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuXG5leHBvcnQgY29uc3QgZXJyb3JNZXNzYWdlRGVmYXVsdCA9ICdQbGVhc2UgZW50ZXIgYSB2YWxpZCB2YWx1ZSc7XG5cbmV4cG9ydCBjb25zdCBWQUxJREFUSU9OX1JFU1VMVCA9IHtcbiAgTk9fRVJST1I6IHtcbiAgICBtZXNzYWdlOiAnJyxcbiAgICB2YWxpZDogdHJ1ZSxcbiAgfSxcbiAgUkVRVUlSRUQ6IHtcbiAgICBtZXNzYWdlOiAnUGxlYXNlIGZpbGwgb3V0IHRoaXMgZmllbGQnLFxuICAgIHZhbGlkOiBmYWxzZSxcbiAgfSxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBjaGVja0Zvcm1hdCA9IChmb3JtYXQ6IFJlZ0V4cCwgbWVzc2FnZT86IHN0cmluZykgPT4ge1xuICByZXR1cm4gKHZhbHVlOiBzdHJpbmcpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgICBsZXQgcmVzdWx0OiBWYWxpZGF0aW9uUmVzdWx0ID0gVkFMSURBVElPTl9SRVNVTFQuTk9fRVJST1I7XG5cbiAgICBpZiAoIXZhbHVlLnRyaW0oKS5tYXRjaChmb3JtYXQpKSB7XG4gICAgICByZXN1bHQgPSB7XG4gICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UgPz8gZXJyb3JNZXNzYWdlRGVmYXVsdCxcbiAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZpZWxkTGVuZ3RoSXNWYWxpZCA9ICh7IG1heGxlbmd0aCwgbWlubGVuZ3RoLCByZXF1aXJlZCwgdmFsdWUgfTogVmFsaWRhdGlvbkxlbmd0aCkgPT4ge1xuICBjb25zdCBpc0VtcHR5QW5kVW5yZXF1aXJlZCA9IHZhbHVlLmxlbmd0aCA9PT0gMCAmJiAhcmVxdWlyZWQ7XG4gIGNvbnN0IGlzVG9vTG9uZyA9IG1heGxlbmd0aCAmJiB2YWx1ZS5sZW5ndGggPiBtYXhsZW5ndGg7XG4gIGNvbnN0IGlzVG9vU2hvcnQgPSAhaXNFbXB0eUFuZFVucmVxdWlyZWQgJiYgbWlubGVuZ3RoICYmIHZhbHVlLmxlbmd0aCA8IG1pbmxlbmd0aDtcbiAgcmV0dXJuICFpc1Rvb1Nob3J0ICYmICFpc1Rvb0xvbmc7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RmllbGRWYWxpZGF0aW9uUmVzdWx0ID0gKHtcbiAgZXJyb3JGcm9tUHJvcHMsXG4gIG1heGxlbmd0aCxcbiAgbWlubGVuZ3RoLFxuICByZXF1aXJlZCxcbiAgdmFsaWRhdG9ycyxcbiAgdmFsdWUsXG59OiB7XG4gIGVycm9yRnJvbVByb3BzOiBzdHJpbmc7XG4gIG1heGxlbmd0aD86IG51bWJlcjtcbiAgbWlubGVuZ3RoPzogbnVtYmVyO1xuICByZXF1aXJlZDogYm9vbGVhbjtcbiAgdmFsaWRhdG9ycz86IFZhbGlkYXRvcltdO1xuICB2YWx1ZTogUmVmPHN0cmluZz47XG59KTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gIC8vIGVycm9yIGluIHByb3BzIHRha2VzIHByZWNlZGVuY2Ugb3ZlciB2YWxpZGF0aW9uIGVycm9yXG4gIGlmIChlcnJvckZyb21Qcm9wcyAhPT0gJycpXG4gICAgcmV0dXJuIHtcbiAgICAgIG1lc3NhZ2U6IGVycm9yRnJvbVByb3BzLFxuICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgIH07XG5cbiAgLy8gY3VzdG9tIHZhbGlkYXRvciBwcm9wIGVycm9ycyBmcm9tIGhhdmUgc2Vjb25kIGhpZ2hlc3QgcHJlY2VkZW5jZVxuICBpZiAodmFsaWRhdG9ycykge1xuICAgIGNvbnN0IHZhbGlkYXRpb24gPSB2YWxpZGF0ZVByb3BlcnR5KHZhbHVlLnZhbHVlLCB2YWxpZGF0b3JzKTtcblxuICAgIGlmICghdmFsaWRhdGlvbi52YWxpZCkge1xuICAgICAgcmV0dXJuIHZhbGlkYXRpb247XG4gICAgfVxuICB9XG5cbiAgLy8gYWxsIG90aGVyIHByb3AtYmFzZWQgZXJyb3JzIGNvbWUgbGFzdFxuICBpZiAocmVxdWlyZWQgJiYgdmFsdWUudmFsdWUudHJpbSgpID09PSAnJykge1xuICAgIHJldHVybiBWQUxJREFUSU9OX1JFU1VMVC5SRVFVSVJFRDtcbiAgfVxuXG4gIGlmIChtYXhsZW5ndGggfHwgbWlubGVuZ3RoKSB7XG4gICAgY29uc3QgbGVuZ3RoVmFsaWRhdGlvbiA9IHZhbGlkYXRlTGVuZ3RoKHtcbiAgICAgIG1heGxlbmd0aCxcbiAgICAgIG1pbmxlbmd0aCxcbiAgICAgIHJlcXVpcmVkLFxuICAgICAgdmFsdWU6IHZhbHVlLnZhbHVlLFxuICAgIH0pO1xuXG4gICAgaWYgKCFsZW5ndGhWYWxpZGF0aW9uLnZhbGlkKSB7XG4gICAgICByZXR1cm4gbGVuZ3RoVmFsaWRhdGlvbjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFZBTElEQVRJT05fUkVTVUxULk5PX0VSUk9SO1xufTtcblxuZXhwb3J0IGNvbnN0IHZhbGlkYXRlTGVuZ3RoID0gKHsgbWF4bGVuZ3RoLCBtaW5sZW5ndGgsIHJlcXVpcmVkLCB2YWx1ZSB9OiBWYWxpZGF0aW9uTGVuZ3RoKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gIGNvbnN0IHJlc3BvbnNlID0ge1xuICAgIG1lc3NhZ2U6ICcnLFxuICAgIHZhbGlkOiB0cnVlLFxuICB9O1xuXG4gIHJlc3BvbnNlLnZhbGlkID0gZ2V0RmllbGRMZW5ndGhJc1ZhbGlkKHtcbiAgICBtYXhsZW5ndGgsXG4gICAgbWlubGVuZ3RoLFxuICAgIHJlcXVpcmVkLFxuICAgIHZhbHVlLFxuICB9KTtcblxuICBpZiAocmVzcG9uc2UudmFsaWQpIHJldHVybiByZXNwb25zZTtcblxuICByZXNwb25zZS5tZXNzYWdlID0gZXJyb3JNZXNzYWdlRGVmYXVsdDtcblxuICBpZiAobWF4bGVuZ3RoICYmIG1pbmxlbmd0aCkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBgRW50ZXIgYSB2YWx1ZSBiZXR3ZWVuICR7Zm9ybWF0TnVtYmVyKG1pbmxlbmd0aCl9IGFuZCAke2Zvcm1hdE51bWJlcihtYXhsZW5ndGgpfSBjaGFyYWN0ZXJzYDtcbiAgfSBlbHNlIGlmIChtYXhsZW5ndGgpIHtcbiAgICByZXNwb25zZS5tZXNzYWdlID0gYFVzZSAke2Zvcm1hdE51bWJlcihtYXhsZW5ndGgpfSBjaGFyYWN0ZXJzIG9yIGZld2VyYDtcbiAgfSBlbHNlIGlmIChtaW5sZW5ndGgpIHtcbiAgICByZXNwb25zZS5tZXNzYWdlID0gYEVudGVyIGF0IGxlYXN0ICR7Zm9ybWF0TnVtYmVyKG1pbmxlbmd0aCl9IGNoYXJhY3RlcnNgO1xuICB9XG5cbiAgcmV0dXJuIHJlc3BvbnNlO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlUHJvcGVydHkodmFsdWU6IHN0cmluZywgdmFsaWRhdG9yczogKCh2YWx1ZTogc3RyaW5nKSA9PiBWYWxpZGF0aW9uUmVzdWx0KVtdKTogVmFsaWRhdGlvblJlc3VsdCB7XG4gIGZvciAoY29uc3QgdmFsaWRhdG9yIG9mIHZhbGlkYXRvcnMpIHtcbiAgICBjb25zdCB2YWxpZGF0aW9uID0gdmFsaWRhdG9yKHZhbHVlKTtcbiAgICBpZiAoIXZhbGlkYXRpb24udmFsaWQpIHtcbiAgICAgIHJldHVybiB2YWxpZGF0aW9uO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbWVzc2FnZTogJycsXG4gICAgdmFsaWQ6IHRydWUsXG4gIH07XG59XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmLCB3YXRjaCwgd2F0Y2hFZmZlY3QgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IFRpZGVJbnB1dFN1cHBvcnRpbmdUZXh0IGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSW5wdXRTdXBwb3J0aW5nVGV4dC52dWUnO1xuICBpbXBvcnQgeyB1c2VGb3JtQ29udGV4dCB9IGZyb20gJ0AvY29tcG9zYWJsZXMvdXNlVGlkZUZvcm0nO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZm9ybWF0TnVtYmVyIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcbiAgaW1wb3J0IHsgVkFMSURBVElPTl9SRVNVTFQgfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uJztcblxuICBpbXBvcnQgdHlwZSB7IFZhbGlkYXRpb25SZXN1bHQgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGVycm9yPzogc3RyaW5nO1xuICAgIGluZGV0ZXJtaW5hdGU/OiBib29sZWFuO1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIG51bWJlcj86IG51bWJlcjtcbiAgICByZXF1aXJlZD86IGJvb2xlYW47XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZXJyb3I6ICcnLFxuICAgIGluZGV0ZXJtaW5hdGU6IGZhbHNlLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICBudW1iZXI6IHVuZGVmaW5lZCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gIH0pO1xuXG4gIHR5cGUgRW1pdHMgPSB7XG4gICAgKGV2ZW50OiAndmFsaWQnLCB2YWxpZDogYm9vbGVhbik6IHZvaWQ7XG4gIH07XG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czxFbWl0cz4oKTtcblxuICBjb25zdCBtb2RlbFZhbHVlID0gZGVmaW5lTW9kZWw8Ym9vbGVhbj4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICBjb25zdCBmb3JtQ29udGV4dCA9IHVzZUZvcm1Db250ZXh0KCk7XG5cbiAgY29uc3QgaXNWYWxpZGF0aW5nID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgZXJyb3JSZWYgPSByZWY8VmFsaWRhdGlvblJlc3VsdD4oVkFMSURBVElPTl9SRVNVTFQuTk9fRVJST1IpO1xuXG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3QgaXNDaGVja2VkID0gY29tcHV0ZWQoKCkgPT4gbW9kZWxWYWx1ZS52YWx1ZSB8fCBwcm9wcy5pbmRldGVybWluYXRlKTtcbiAgY29uc3Qgc2hvd0Vycm9yID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmIChoYXNFcnJvckZyb21Qcm9wLnZhbHVlKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoIWlzVmFsaWRhdGluZy52YWx1ZSkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiAhZXJyb3JSZWYudmFsdWUudmFsaWQ7XG4gIH0pO1xuICBjb25zdCBoYXNFcnJvckZyb21Qcm9wID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMuZXJyb3IgIT09ICcnKTtcbiAgY29uc3Qgc3VwcG9ydGluZ1RleHRNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4gc2hvd0Vycm9yLnZhbHVlICYmIGVycm9yUmVmLnZhbHVlLm1lc3NhZ2UpO1xuXG4gIGNvbnN0IGdldENoZWNrYm94VmFsaWRhdGlvblJlc3VsdCA9ICgpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgICBpZiAocHJvcHMuZXJyb3IgIT09ICcnKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbWVzc2FnZTogcHJvcHMuZXJyb3IsXG4gICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgIH07XG4gICAgaWYgKCFwcm9wcy5yZXF1aXJlZCB8fCBpc0NoZWNrZWQudmFsdWUpIHJldHVybiBWQUxJREFUSU9OX1JFU1VMVC5OT19FUlJPUjtcbiAgICByZXR1cm4gVkFMSURBVElPTl9SRVNVTFQuUkVRVUlSRUQ7XG4gIH07XG5cbiAgd2F0Y2hFZmZlY3QoKCkgPT4ge1xuICAgIGVycm9yUmVmLnZhbHVlID0gZ2V0Q2hlY2tib3hWYWxpZGF0aW9uUmVzdWx0KCk7XG4gIH0pO1xuXG4gIHdhdGNoKFxuICAgIG1vZGVsVmFsdWUsXG4gICAgKCkgPT4ge1xuICAgICAgaWYgKG1vZGVsVmFsdWUudmFsdWUpIGlzVmFsaWRhdGluZy52YWx1ZSA9IHRydWU7XG4gICAgfSxcbiAgICB7IGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gZm9ybUNvbnRleHQ/LmZvcmNlU2hvd0Vycm9ycy52YWx1ZSxcbiAgICAobmV3VmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSkgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcblxuICB3YXRjaChcbiAgICBlcnJvclJlZixcbiAgICAoKSA9PiB7XG4gICAgICBlbWl0KCd2YWxpZCcsIGVycm9yUmVmLnZhbHVlLnZhbGlkKTtcbiAgICB9LFxuICAgIHsgZGVlcDogdHJ1ZSwgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWlucHV0LWNoZWNrYm94JywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLkdBUC5RVUFSVEVSXVwiPlxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMSxcbiAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICBDU1MuVVNFUl9TRUxFQ1QuTk9ORSxcbiAgICAgICAgc2hvd0Vycm9yID8gQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLkVSUk9SIDogQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBkaXNhYmxlZCA/IFtDU1MuT1BBQ0lUWS5ESVNBQkxFRCwgQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRF0gOiBbQ1NTLkNVUlNPUi5QT0lOVEVSXSxcbiAgICAgIF1cIlxuICAgICAgOmZvcj1cImlucHV0SWRcIlxuICAgID5cbiAgICAgIDxpbnB1dFxuICAgICAgICA6Y2hlY2tlZD1cImlzQ2hlY2tlZFwiXG4gICAgICAgIDpjbGFzcz1cIlsndGlkZS1zY3JlZW4tcmVhZGVyLW9ubHknXVwiXG4gICAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICAgICAgOm5hbWU9XCJuYW1lXCJcbiAgICAgICAgcmVmPVwiaW5wdXRcIlxuICAgICAgICA6aWQ9XCJpbnB1dElkXCJcbiAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgdi1tb2RlbD1cIm1vZGVsVmFsdWVcIlxuICAgICAgLz5cblxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtaW5wdXQtY2hlY2tib3gtY3VzdG9tJyxcbiAgICAgICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5RVUFSVEVSLFxuICAgICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgICAgQ1NTLkZMRVguU0hSSU5LLk9GRixcbiAgICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgICAgaXNDaGVja2VkXG4gICAgICAgICAgICA/IFtzaG93RXJyb3IgPyBDU1MuQkcuR0xPQkFMLlBSSU1BUlkuRVJST1IgOiBbQ1NTLkJHLlNFQ09OREFSWSwgQ1NTLkJPUkRFUi5DT0xPUi5ISUdIXV1cbiAgICAgICAgICAgIDogW1xuICAgICAgICAgICAgICAgIHNob3dFcnJvclxuICAgICAgICAgICAgICAgICAgPyBbQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuRVJST1IsIENTUy5CRy5HTE9CQUwuU1VSRkFDRS5FUlJPUl1cbiAgICAgICAgICAgICAgICAgIDogW0NTUy5CT1JERVIuQ09MT1IuREVGQVVMVCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgIF1cIlxuICAgICAgPlxuICAgICAgICA8VGlkZUljb25cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU0VDT05EQVJZXVwiXG4gICAgICAgICAgOmljb249XCJpbmRldGVybWluYXRlID8gSUNPTi5SRU1PVkUgOiBJQ09OLkNIRUNLXCJcbiAgICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICAgIHYtaWY9XCJpc0NoZWNrZWRcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5BWElTMS5CRVRXRUVOLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5HUk9XLk9OLCBDU1MuRk9OVC5ST0xFLkJPRFlfMV1cIlxuICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgPlxuICAgICAgICA8c3Bhbj57eyBmb3JtYXR0ZWRMYWJlbCB9fTwvc3Bhbj5cblxuICAgICAgICA8c3BhblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgICB2LWlmPVwibnVtYmVyXCJcbiAgICAgICAgPlxuICAgICAgICAgICh7eyBmb3JtYXROdW1iZXIobnVtYmVyKSB9fSlcbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9sYWJlbD5cblxuICAgIDxUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dFxuICAgICAgOm1lc3NhZ2U9XCJzdXBwb3J0aW5nVGV4dE1lc3NhZ2VcIlxuICAgICAgaXMtZXJyb3JcbiAgICAgIHYtaWY9XCJzdXBwb3J0aW5nVGV4dE1lc3NhZ2VcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW5wdXQtY2hlY2tib3gge1xuICAgIGFsaWduLXNlbGY6IHN0YXJ0O1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtY2hlY2tib3gtY3VzdG9tIHtcbiAgICB3aWR0aDogMjRweDtcbiAgICBoZWlnaHQ6IDI0cHg7XG4gIH1cblxuICBsYWJlbDpoYXMoaW5wdXQ6Zm9jdXMtdmlzaWJsZSkge1xuICAgIG91dGxpbmU6IGF1dG87XG4gICAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYFRpZGVJbnB1dENoZWNrYm94LnZ1ZWAgaW1wb3J0ZWQgZnJvbSAndGlkZS1kZXNpZ24tc3lzdGVtJyBucG0gcGFja2FnZSBpbnN0ZWFkLlxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IGZvcm1hdE51bWJlciB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBjaGVja2VkPzogYm9vbGVhbjtcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgaW5kZXRlcm1pbmF0ZT86IGJvb2xlYW47XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBudW1iZXI/OiBudW1iZXI7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBjaGVja2VkOiBmYWxzZSxcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgaW5kZXRlcm1pbmF0ZTogZmFsc2UsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbmFtZTogdW5kZWZpbmVkLFxuICAgIG51bWJlcjogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBpc0NoZWNrZWQgPSBjb21wdXRlZCgoKSA9PiBwcm9wcy5jaGVja2VkIHx8IHByb3BzLmluZGV0ZXJtaW5hdGUpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWlucHV0LWNoZWNrYm94JyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICBkaXNhYmxlZCA/IFsnZGlzYWJsZWQnLCBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGXSA6IENTUy5DVVJTT1IuUE9JTlRFUixcbiAgICBdXCJcbiAgPlxuICAgIDxpbnB1dFxuICAgICAgOmNoZWNrZWQ9XCJpc0NoZWNrZWRcIlxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLk5PTkVdXCJcbiAgICAgIDpkaXNhYmxlZD1cInByb3BzLmRpc2FibGVkXCJcbiAgICAgIDpuYW1lPVwicHJvcHMubmFtZVwiXG4gICAgICByZWY9XCJpbnB1dFwiXG4gICAgICBAY2xpY2sucHJldmVudFxuICAgICAgOmlkPVwicHJvcHMuaW5wdXRJZFwiXG4gICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgIC8+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LWNoZWNrYm94LWN1c3RvbScsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMxLkNFTlRFUixcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkZMRVguU0hSSU5LLk9GRixcbiAgICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgICAgaXNDaGVja2VkID8gW0NTUy5CT1JERVIuQ09MT1IuSElHSCwgQ1NTLkJHLlNFQ09OREFSWV0gOiBbQ1NTLkJPUkRFUi5DT0xPUi5ERUZBVUxULCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXSxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuUVVBUlRFUixcbiAgICAgICAgaXNDaGVja2VkICYmICdjaGVja2VkJyxcbiAgICAgICAgZGlzYWJsZWQgPyBDU1MuQ1VSU09SLk5PVF9BTExPV0VEIDogQ1NTLkNVUlNPUi5QT0lOVEVSLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5DT0xPUi5TRUNPTkRBUlldXCJcbiAgICAgICAgOmljb249XCJwcm9wcy5pbmRldGVybWluYXRlID8gSUNPTi5SRU1PVkUgOiBJQ09OLkNIRUNLXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgdi1pZj1cImlzQ2hlY2tlZFwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGxhYmVsXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMS5CRVRXRUVOLFxuICAgICAgICBDU1MuRkxFWC5HUk9XLk9OLFxuICAgICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMSxcbiAgICAgICAgZGlzYWJsZWQgPyBDU1MuQ1VSU09SLk5PVF9BTExPV0VEIDogQ1NTLkNVUlNPUi5QT0lOVEVSLFxuICAgICAgXVwiXG4gICAgICA6Zm9yPVwicHJvcHMuaW5wdXRJZFwiXG4gICAgICBAY2xpY2sucHJldmVudFxuICAgICAgdi1pZj1cImxhYmVsXCJcbiAgICA+XG4gICAgICA8c3Bhbj57eyBsYWJlbCB9fTwvc3Bhbj5cbiAgICAgIDxzcGFuXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgdi1pZj1cInByb3BzLm51bWJlclwiXG4gICAgICA+XG4gICAgICAgICh7eyBmb3JtYXROdW1iZXIocHJvcHMubnVtYmVyKSB9fSlcbiAgICAgIDwvc3Bhbj5cbiAgICA8L2xhYmVsPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWlucHV0LWNoZWNrYm94LmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiB2YXIoLS10aWRlLWRpc2FibGVkKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LWNoZWNrYm94LWN1c3RvbSB7XG4gICAgd2lkdGg6IDI0cHg7XG4gICAgaGVpZ2h0OiAyNHB4O1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZm9ybWF0TnVtYmVyIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBpbnB1dElkPzogc3RyaW5nO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIG51bWJlcj86IG51bWJlcjtcbiAgICB2YWx1ZTogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG51bWJlcjogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBtb2RlbFZhbHVlID0gZGVmaW5lTW9kZWw8c3RyaW5nPih7IHJlcXVpcmVkOiB0cnVlIH0pO1xuXG4gIGNvbnN0IGlzQ2hlY2tlZCA9IGNvbXB1dGVkKCgpID0+IG1vZGVsVmFsdWUudmFsdWUgPT09IHByb3BzLnZhbHVlKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxsYWJlbFxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWlucHV0LXJhZGlvJyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgQ1NTLlVTRVJfU0VMRUNULk5PTkUsXG4gICAgICBwcm9wcy5kaXNhYmxlZCA/IFtDU1MuT1BBQ0lUWS5ESVNBQkxFRCwgQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRF0gOiBbQ1NTLkNVUlNPUi5QT0lOVEVSXSxcbiAgICBdXCJcbiAgICA6Zm9yPVwicHJvcHMuaW5wdXRJZFwiXG4gID5cbiAgICA8aW5wdXRcbiAgICAgIDpjbGFzcz1cIlsndGlkZS1zY3JlZW4tcmVhZGVyLW9ubHknXVwiXG4gICAgICA6ZGlzYWJsZWQ9XCJkaXNhYmxlZFwiXG4gICAgICA6bmFtZT1cIm5hbWVcIlxuICAgICAgOnZhbHVlPVwidmFsdWVcIlxuICAgICAgOmlkPVwicHJvcHMuaW5wdXRJZFwiXG4gICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgdi1tb2RlbD1cIm1vZGVsVmFsdWVcIlxuICAgIC8+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LXJhZGlvLWN1c3RvbScsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMxLkNFTlRFUixcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgICAgaXNDaGVja2VkID8gW0NTUy5CT1JERVIuQ09MT1IuSElHSF0gOiBbQ1NTLkJPUkRFUi5DT0xPUi5ERUZBVUxUXSxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgQ1NTLkNVUlNPUi5QT0lOVEVSLFxuICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT04sXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1pbnB1dC1yYWRpby1jaGVjaycsIENTUy5CT1JERVIuUkFESVVTLkZVTEwsIGlzQ2hlY2tlZCAmJiBDU1MuQkcuU0VDT05EQVJZXVwiIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5HUk9XLk9OLCBDU1MuQVhJUzEuQkVUV0VFTiwgQ1NTLkZPTlQuUk9MRS5CT0RZXzFdXCI+XG4gICAgICA8c3Bhbj57eyBsYWJlbCB9fTwvc3Bhbj5cbiAgICAgIDxzcGFuXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgdi1pZj1cInByb3BzLm51bWJlclwiXG4gICAgICA+XG4gICAgICAgICh7eyBmb3JtYXROdW1iZXIocHJvcHMubnVtYmVyKSB9fSlcbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9sYWJlbD5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWlucHV0LXJhZGlvLWN1c3RvbSB7XG4gICAgd2lkdGg6IDI0cHg7XG4gICAgaGVpZ2h0OiAyNHB4O1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtcmFkaW8tY2hlY2sge1xuICAgIHdpZHRoOiAxNnB4O1xuICAgIGhlaWdodDogMTZweDtcbiAgfVxuXG4gIGxhYmVsOmhhcyhpbnB1dDpmb2N1cy12aXNpYmxlKSB7XG4gICAgb3V0bGluZTogYXV0bztcbiAgICBvdXRsaW5lLW9mZnNldDogMnB4O1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgVGlkZUlucHV0UmFkaW8udnVlYCBpbXBvcnRlZCBmcm9tICd0aWRlLWRlc2lnbi1zeXN0ZW0nIG5wbSBwYWNrYWdlIGluc3RlYWQuXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IGZvcm1hdE51bWJlciB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBjaGVja2VkPzogYm9vbGVhbjtcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBudW1iZXI/OiBudW1iZXI7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBjaGVja2VkOiBmYWxzZSxcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbnVtYmVyOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IGNoZWNrZWQgPSByZWYocHJvcHMuY2hlY2tlZCk7XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMuY2hlY2tlZCxcbiAgICAobmV3VmFsdWUsIG9sZFZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUgIT09IG9sZFZhbHVlIHx8IG5ld1ZhbHVlICE9PSBjaGVja2VkLnZhbHVlKSB7XG4gICAgICAgIGNoZWNrZWQudmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtaW5wdXQtcmFkaW8nLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgcHJvcHMuZGlzYWJsZWQgJiYgJ2Rpc2FibGVkJyxcbiAgICBdXCJcbiAgPlxuICAgIDxpbnB1dFxuICAgICAgOmNoZWNrZWQ9XCJjaGVja2VkXCJcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5OT05FXVwiXG4gICAgICA6aWQ9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgIG5hbWU9XCJcIlxuICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgIHZhbHVlPVwiXCJcbiAgICAvPlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC1yYWRpby1jdXN0b20nLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICAgIGNoZWNrZWQgPyBDU1MuQk9SREVSLkNPTE9SLkhJR0ggOiBDU1MuQk9SREVSLkNPTE9SLkRFRkFVTFQsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgIENTUy5DVVJTT1IuUE9JTlRFUixcbiAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9OLFxuICAgICAgICBjaGVja2VkICYmICdjaGVja2VkJyxcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWlucHV0LXJhZGlvLWNoZWNrJywgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCwgcHJvcHMuY2hlY2tlZCAmJiBDU1MuQkcuU0VDT05EQVJZXVwiIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8bGFiZWxcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkZMRVguR1JPVy5PTixcbiAgICAgICAgQ1NTLkFYSVMxLkJFVFdFRU4sXG4gICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICBDU1MuQ1VSU09SLlBPSU5URVIsXG4gICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PTixcbiAgICAgIF1cIlxuICAgICAgOmZvcj1cInByb3BzLmlucHV0SWRcIlxuICAgID5cbiAgICAgIDxzcGFuPnt7IGxhYmVsIH19PC9zcGFuPlxuICAgICAgPHNwYW5cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICB2LWlmPVwicHJvcHMubnVtYmVyXCJcbiAgICAgID5cbiAgICAgICAgKHt7IGZvcm1hdE51bWJlcihwcm9wcy5udW1iZXIpIH19KVxuICAgICAgPC9zcGFuPlxuICAgIDwvbGFiZWw+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW5wdXQtcmFkaW8uZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IHZhcigtLXRpZGUtZGlzYWJsZWQpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtcmFkaW8tY3VzdG9tIHtcbiAgICB3aWR0aDogMjRweDtcbiAgICBoZWlnaHQ6IDI0cHg7XG4gIH1cblxuICAudGlkZS1pbnB1dC1yYWRpby1jaGVjayB7XG4gICAgd2lkdGg6IDE2cHg7XG4gICAgaGVpZ2h0OiAxNnB4O1xuICB9XG48L3N0eWxlPlxuIiwiaW1wb3J0IHsgZm9ybWF0TnVtYmVyLCBmb3JtYXRQaG9uZSwgZm9ybWF0UHJpY2UgfSBmcm9tICdAL3V0aWxpdGllcy9mb3JtYXQnO1xuXG5leHBvcnQgdHlwZSBGb3JtYXR0ZWQgPSB7XG4gIFtrZXk6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVtYmVyO1xufTtcblxuZXhwb3J0IGNvbnN0IEZPUk1BVCA9IHtcbiAgTlVNQkVSOiBmb3JtYXROdW1iZXIsXG4gIFBIT05FOiBmb3JtYXRQaG9uZSxcbiAgUFJJQ0U6IGZvcm1hdFByaWNlLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IEZPUk1BVF9SRUdFWCA9IHtcbiAgYWxwaGE6IC9eW2EtekEtWl0rJC9nLFxuICBhbHBoYU51bWJlck9yRW1wdHk6IC9eJHxeW2EtejAtOV0rJC9pLFxuICBhbHBoYVNwYWNlOiAvXlthLXpBLVogXSskL2csXG4gIGVtYWlsOlxuICAgIC9eKChbXjw+KClbXFxdXFxcXC4sOzpcXHNAXCJdKyhcXC5bXjw+KClbXFxdXFxcXC4sOzpcXHNAXCJdKykqKXwoXCIuK1wiKSlAKChcXFtbMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcLlswLTldezEsM31cXC5bMC05XXsxLDN9XFxdKXwoKFthLXpBLVpcXC0wLTldK1xcLikrW2EtekEtWl17Mix9KSkkLyxcbiAgbnVtYmVyRm9ybWF0dGVkOiAvXiR8KD89LileXFwkPygoWzEtOV1bMC05XXswLDJ9KCxbMC05XXszfSkqKXwwKT8oXFwuWzAtOV17MSwyfSk/JC8sXG4gIHBob25lOiAvXig/OlxcZHszfS1cXGR7M30tXFxkezR9fFxcZHsxfS1cXGR7M30tXFxkezN9LVxcZHs0fSk/JC8sXG4gIHByaWNlOiAvKD89LileXFwkPygoWzEtOV1bMC05XXswLDJ9KCxbMC05XXszfSkqKXwwKT8oXFwuWzAtOV17MSwyfSk/JC8sXG59O1xuIiwiaW1wb3J0IHsgRk9STUFUX1JFR0VYIH0gZnJvbSAnQC90eXBlcy9Gb3JtYXR0ZWQnO1xuaW1wb3J0IHsgY2hlY2tGb3JtYXQgfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uJztcblxuZXhwb3J0IGNvbnN0IFZBTElEQVRPUiA9IHtcbiAgQUxQSEFfTlVNQkVSX0VNUFRZOiBjaGVja0Zvcm1hdChGT1JNQVRfUkVHRVguYWxwaGFOdW1iZXJPckVtcHR5KSxcbiAgQUxQSEFfU1BBQ0U6IGNoZWNrRm9ybWF0KEZPUk1BVF9SRUdFWC5hbHBoYVNwYWNlKSxcbiAgRU1BSUw6IGNoZWNrRm9ybWF0KEZPUk1BVF9SRUdFWC5lbWFpbCwgJ0VudGVyIGEgdmFsaWQgZW1haWwgYWRkcmVzcyAoZS5nLiBuYW1lQGV4YW1wbGUuY29tKScpLFxuICBOVU1CRVI6IGNoZWNrRm9ybWF0KEZPUk1BVF9SRUdFWC5udW1iZXJGb3JtYXR0ZWQsICdFbnRlciBhIHZhbGlkIG51bWJlcicpLFxuICBQSE9ORTogY2hlY2tGb3JtYXQoRk9STUFUX1JFR0VYLnBob25lLCAnRW50ZXIgYSB2YWxpZCBwaG9uZSBudW1iZXInKSxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25FcnJvciA9IHN0cmluZyB8IGJvb2xlYW47XG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uUmVzdWx0ID0ge1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHZhbGlkOiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgVmFsaWRhdGlvbkxlbmd0aCA9IHtcbiAgbWF4bGVuZ3RoPzogbnVtYmVyO1xuICBtaW5sZW5ndGg/OiBudW1iZXI7XG4gIHJlcXVpcmVkOiBib29sZWFuO1xuICB2YWx1ZTogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgVmFsaWRhdG9yID0gKHZhbHVlOiBzdHJpbmcpID0+IFZhbGlkYXRpb25SZXN1bHQ7XG5cbmV4cG9ydCBjb25zdCBFUlJPUl9ESVNQTEFZID0ge1xuICBFQUdFUjogJ2VhZ2VyJyxcbiAgTEFaWTogJ2xhenknLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgRXJyb3JEaXNwbGF5ID0gKHR5cGVvZiBFUlJPUl9ESVNQTEFZKVtrZXlvZiB0eXBlb2YgRVJST1JfRElTUExBWV07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmLCB1c2VJZCwgd2F0Y2gsIHdhdGNoRWZmZWN0IH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dCBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUlucHV0U3VwcG9ydGluZ1RleHQudnVlJztcbiAgaW1wb3J0IHsgdXNlRm9ybUNvbnRleHQgfSBmcm9tICdAL2NvbXBvc2FibGVzL3VzZVRpZGVGb3JtJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IEVSUk9SX0RJU1BMQVkgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuICBpbXBvcnQgeyBWQUxJREFUSU9OX1JFU1VMVCwgZ2V0RmllbGRWYWxpZGF0aW9uUmVzdWx0IH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbic7XG5cbiAgaW1wb3J0IHR5cGUgeyBTZWxlY3RPcHRpb24sIFNlbGVjdE9wdGlvbkdyb3VwIH0gZnJvbSAnQC90eXBlcy9TZWxlY3QnO1xuICBpbXBvcnQgdHlwZSB7IEVycm9yRGlzcGxheSwgVmFsaWRhdGlvblJlc3VsdCB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgZXJyb3I/OiBzdHJpbmc7XG4gICAgZXJyb3JEaXNwbGF5PzogRXJyb3JEaXNwbGF5O1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgb3B0Z3JvdXBzPzogKFNlbGVjdE9wdGlvbiB8IFNlbGVjdE9wdGlvbkdyb3VwKVtdIHwgcmVhZG9ubHkgKFNlbGVjdE9wdGlvbiB8IFNlbGVjdE9wdGlvbkdyb3VwKVtdO1xuICAgIG9wdGlvbnM/OiBTZWxlY3RPcHRpb25bXSB8IHJlYWRvbmx5IFNlbGVjdE9wdGlvbltdO1xuICAgIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgICBzdXBwb3J0aW5nVGV4dD86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlcnJvcjogJycsXG4gICAgZXJyb3JEaXNwbGF5OiBFUlJPUl9ESVNQTEFZLkxBWlksXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbmFtZTogdW5kZWZpbmVkLFxuICAgIG9wdGdyb3VwczogdW5kZWZpbmVkLFxuICAgIG9wdGlvbnM6IHVuZGVmaW5lZCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgc3VwcG9ydGluZ1RleHQ6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgdHlwZSBFbWl0cyA9IHtcbiAgICAoZXZlbnQ6ICd2YWxpZCcsIGlzVmFsaWQ6IGJvb2xlYW4pOiB2b2lkO1xuICB9O1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czxFbWl0cz4oKTtcblxuICBjb25zdCBtb2RlbFZhbHVlID0gZGVmaW5lTW9kZWw8c3RyaW5nPih7IHJlcXVpcmVkOiB0cnVlIH0pO1xuXG4gIGNvbnN0IGZvcm1Db250ZXh0ID0gdXNlRm9ybUNvbnRleHQoKTtcblxuICBjb25zdCBlcnJvclJlZiA9IHJlZjxWYWxpZGF0aW9uUmVzdWx0PihWQUxJREFUSU9OX1JFU1VMVC5OT19FUlJPUik7XG4gIGNvbnN0IGhhc0ZvY3VzID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgaW5wdXRJZCA9IHVzZUlkKCk7XG4gIGNvbnN0IGlzVmFsaWRhdGluZyA9IHJlZjxib29sZWFuPihmYWxzZSk7XG4gIGNvbnN0IHNlbGVjdEVsZW1lbnQgPSByZWY8SFRNTFNlbGVjdEVsZW1lbnQgfCBudWxsPihudWxsKTtcblxuICBjb25zdCBmb3JtYXR0ZWRMYWJlbCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCA/IGAke3Byb3BzLmxhYmVsfSAqYCA6IHByb3BzLmxhYmVsKSk7XG4gIGNvbnN0IHNob3dFcnJvciA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAoaGFzRXJyb3JGcm9tUHJvcC52YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgaWYgKCFpc1ZhbGlkYXRpbmcudmFsdWUpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gIWVycm9yUmVmLnZhbHVlLnZhbGlkO1xuICB9KTtcbiAgY29uc3QgaGFzRXJyb3JGcm9tUHJvcCA9IGNvbXB1dGVkKCgpID0+IHByb3BzLmVycm9yICE9PSAnJyk7XG4gIGNvbnN0IGhhc01pbmlsYWJlbCA9IGNvbXB1dGVkKCgpID0+IGhhc0ZvY3VzLnZhbHVlIHx8ICFpc0VtcHR5LnZhbHVlKTtcbiAgY29uc3QgaXNFbXB0eSA9IGNvbXB1dGVkKCgpID0+IG1vZGVsVmFsdWUudmFsdWUgPT09ICcnKTtcbiAgY29uc3Qgc3VwcG9ydGluZ1RleHRNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4gKHNob3dFcnJvci52YWx1ZSAmJiBlcnJvclJlZi52YWx1ZS5tZXNzYWdlKSB8fCBwcm9wcy5zdXBwb3J0aW5nVGV4dCk7XG5cbiAgY29uc3QgZXhwYW5kT3B0aW9ucyA9ICgpID0+IHtcbiAgICBjb25zdCBldmVudCA9IG5ldyBNb3VzZUV2ZW50KCdtb3VzZWRvd24nKTtcbiAgICBzZWxlY3RFbGVtZW50Py52YWx1ZT8uZGlzcGF0Y2hFdmVudChldmVudCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXMgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSB0cnVlO1xuICAgIGlmIChwcm9wcy5lcnJvckRpc3BsYXkgPT09IEVSUk9SX0RJU1BMQVkuRUFHRVIpIGlzVmFsaWRhdGluZy52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXNPdXQgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSBmYWxzZTtcbiAgICBpZiAocHJvcHMuZXJyb3JEaXNwbGF5ID09PSBFUlJPUl9ESVNQTEFZLkxBWlkpIGlzVmFsaWRhdGluZy52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgd2F0Y2hFZmZlY3QoKCkgPT4ge1xuICAgIGVycm9yUmVmLnZhbHVlID0gZ2V0RmllbGRWYWxpZGF0aW9uUmVzdWx0KHtcbiAgICAgIGVycm9yRnJvbVByb3BzOiBwcm9wcy5lcnJvcixcbiAgICAgIHJlcXVpcmVkOiBwcm9wcy5yZXF1aXJlZCxcbiAgICAgIHZhbHVlOiBtb2RlbFZhbHVlLFxuICAgIH0pO1xuICB9KTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBmb3JtQ29udGV4dD8uZm9yY2VTaG93RXJyb3JzLnZhbHVlLFxuICAgIChuZXdWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlKSBpc1ZhbGlkYXRpbmcudmFsdWUgPSB0cnVlO1xuICAgIH0sXG4gICAgeyBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuXG4gIHdhdGNoKFxuICAgIGVycm9yUmVmLFxuICAgICgpID0+IHtcbiAgICAgIGVtaXQoJ3ZhbGlkJywgZXJyb3JSZWYudmFsdWUudmFsaWQpO1xuICAgIH0sXG4gICAgeyBkZWVwOiB0cnVlLCBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWlucHV0LXNlbGVjdCcsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIGRpc2FibGVkICYmICdkaXNhYmxlZCcsXG4gICAgICBzaG93RXJyb3IgJiYgJ2Vycm9yJyxcbiAgICBdXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtYm9yZGVyJyxcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgIHByb3BzLmRpc2FibGVkID8gQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCA6ICcnLFxuICAgICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgXVwiXG4gICAgICBAY2xpY2s9XCJleHBhbmRPcHRpb25zXCJcbiAgICA+XG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuV0lEVEguRlVMTF1cIj5cbiAgICAgICAgPGxhYmVsXG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgaGFzTWluaWxhYmVsID8gWydtaW5pbGFiZWwnLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzNdIDogQ1NTLkZPTlQuUk9MRS5MQUJFTF8xLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLkxFRlQsXG4gICAgICAgICAgICBDU1MuTUFSR0lOLlRPUC5IQUxGLFxuICAgICAgICAgICAgQ1NTLk1BUkdJTi5MRUZULk9ORSxcbiAgICAgICAgICAgICFzaG93RXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgICBdXCJcbiAgICAgICAgICA6Zm9yPVwiaW5wdXRJZFwiXG4gICAgICAgICAgdi1pZj1cImxhYmVsXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGZvcm1hdHRlZExhYmVsIH19XG4gICAgICAgIDwvbGFiZWw+XG5cbiAgICAgICAgPHNlbGVjdFxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgIENTUy5QQURESU5HLkJPVFRPTS5IQUxGLFxuICAgICAgICAgICAgQ1NTLlBBRERJTkcuWC5PTkUsXG4gICAgICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgICAgIGRpc2FibGVkICYmIENTUy5DVVJTT1IuTk9UX0FMTE9XRUQsXG4gICAgICAgICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMSxcbiAgICAgICAgICBdXCJcbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJkaXNhYmxlZFwiXG4gICAgICAgICAgOm5hbWU9XCJuYW1lXCJcbiAgICAgICAgICByZWY9XCJzZWxlY3RFbGVtZW50XCJcbiAgICAgICAgICA6cmVxdWlyZWQ9XCJyZXF1aXJlZFwiXG4gICAgICAgICAgQGZvY3VzPVwiaGFuZGxlRm9jdXNcIlxuICAgICAgICAgIEBmb2N1c291dD1cImhhbmRsZUZvY3VzT3V0XCJcbiAgICAgICAgICA6aWQ9XCJpbnB1dElkXCJcbiAgICAgICAgICB2LW1vZGVsPVwibW9kZWxWYWx1ZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8dGVtcGxhdGUgdi1mb3I9XCJvcHRncm91cCBpbiBwcm9wcy5vcHRncm91cHNcIj5cbiAgICAgICAgICAgIDxvcHRncm91cFxuICAgICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgICAgOmtleT1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb25Hcm91cCkubGFiZWxcIlxuICAgICAgICAgICAgICA6bGFiZWw9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uR3JvdXApLmxhYmVsXCJcbiAgICAgICAgICAgICAgdi1pZj1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb25Hcm91cCkub3B0aW9uc1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgICAgICA6a2V5PVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgICAgICA6dmFsdWU9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgICAgIHYtZm9yPVwib3B0aW9uIGluIChvcHRncm91cCBhcyBTZWxlY3RPcHRpb25Hcm91cCkub3B0aW9uc1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBvcHRpb24ubGFiZWwgfX1cbiAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICA8L29wdGdyb3VwPlxuXG4gICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgICAgICAgICA6a2V5PVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbikudmFsdWVcIlxuICAgICAgICAgICAgICA6c2VsZWN0ZWQ9XCJtb2RlbFZhbHVlID09PSAob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uKS52YWx1ZSA/IHRydWUgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICA6dmFsdWU9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uKS52YWx1ZVwiXG4gICAgICAgICAgICAgIHYtZWxzZVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyAob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uKS5sYWJlbCB9fVxuICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgPC90ZW1wbGF0ZT5cblxuICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgICAgICAgOmtleT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICA6c2VsZWN0ZWQ9XCJtb2RlbFZhbHVlID09PSBvcHRpb24udmFsdWUgPyB0cnVlIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgIDp2YWx1ZT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICB2LWZvcj1cIm9wdGlvbiBpbiBvcHRpb25zXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBvcHRpb24ubGFiZWwgfX1cbiAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgPC9zZWxlY3Q+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltDU1MuUE9TSVRJT04uQUJTT0xVVEUsIENTUy5QT1NJVElPTklORy5SSUdIVCwgQ1NTLk1BUkdJTi5SSUdIVC5PTkUsIENTUy5QT0lOVEVSX0VWRU5UUy5PRkZdXCJcbiAgICAgICAgOmljb249XCJJQ09OLkVYUEFORF9NT1JFXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8VGlkZUlucHV0U3VwcG9ydGluZ1RleHRcbiAgICAgIDppcy1lcnJvcj1cInNob3dFcnJvclwiXG4gICAgICA6bWVzc2FnZT1cInN1cHBvcnRpbmdUZXh0TWVzc2FnZVwiXG4gICAgICB2LWlmPVwic3VwcG9ydGluZ1RleHRNZXNzYWdlXCJcbiAgICAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIHNlbGVjdCB7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgfVxuXG4gIGxhYmVsIHtcbiAgICBoZWlnaHQ6IDEuMTg3NXJlbTtcbiAgICB0cmFuc2l0aW9uOiBmb250LXNpemUgdmFyKC0tdGlkZS1hbmltYXRlKSwgdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICBsYWJlbDpub3QoLm1pbmlsYWJlbCkge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIGNhbGMoOSAvIDE2ICogMXJlbSkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiB2YXIoLS10aWRlLWRpc2FibGVkKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5lcnJvciAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXN1cmZhY2UpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdDpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMik7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTEpO1xuICAgIG91dGxpbmU6IHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgc29saWQgdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiBjYWxjKHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgKiAtMSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3Ige1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXByaW1hcnkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yIG9wdGlvbiB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtb24tc3VyZmFjZSk7XG4gIH1cblxuICBzZWxlY3Qge1xuICAgIHBhZGRpbmctdG9wOiAyN3B4O1xuICB9XG48L3N0eWxlPlxuIiwiaW1wb3J0IHsgcHJpY2VUb051bWJlciB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbmltcG9ydCB0eXBlIHsgU3RyaW5nSW5wdXQgfSBmcm9tICdAL3R5cGVzL0Zvcm1EZXByZWNhdGVkJztcbmltcG9ydCB0eXBlIHsgU2VsZWN0T3B0aW9uIH0gZnJvbSAnQC90eXBlcy9TZWxlY3QnO1xuaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uRXJyb3IsIFZhbGlkYXRpb25MZW5ndGgsIFZhbGlkYXRpb25SZXN1bHQsIFZhbGlkYXRvciB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbkRlcHJlY2F0ZWQnO1xuaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbnR5cGUgUmFuZ2VEYXRhID0ge1xuICBtaW46IG51bWJlciB8IG51bGw7XG4gIG1heDogbnVtYmVyIHwgbnVsbDtcbn07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGVycm9yTWVzc2FnZURlZmF1bHQgPSAnUGxlYXNlIGVudGVyIGEgdmFsaWQgdmFsdWUuJztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3Qgbm9FcnJvciA9IHtcbiAgbWVzc2FnZTogJycsXG4gIHZhbGlkOiB0cnVlLFxufSBhcyBSZWFkb25seTxWYWxpZGF0aW9uUmVzdWx0PjtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgY2hlY2tGb3JtYXQgPSAoZm9ybWF0OiBSZWdFeHApID0+IHtcbiAgcmV0dXJuICh2YWx1ZTogc3RyaW5nKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gICAgbGV0IHJlc3VsdCA9IG5vRXJyb3I7XG5cbiAgICBpZiAoIXZhbHVlLnRyaW0oKS5tYXRjaChmb3JtYXQpKSB7XG4gICAgICByZXN1bHQgPSB7XG4gICAgICAgIG1lc3NhZ2U6IGVycm9yTWVzc2FnZURlZmF1bHQsXG4gICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbn07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEVycm9yTWVzc2FnZSA9IChlcnJvckZyb21Qcm9wczogVmFsaWRhdGlvbkVycm9yLCBlcnJvckZyb21SZWY6IFZhbGlkYXRpb25FcnJvcikgPT4ge1xuICAvLyBlcnJvciBpbiBwcm9wcyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdmFsaWRhdGlvbiBlcnJvclxuICBpZiAodHlwZW9mIGVycm9yRnJvbVByb3BzID09PSAnc3RyaW5nJyAmJiBlcnJvckZyb21Qcm9wcy5sZW5ndGggPiAwKSByZXR1cm4gZXJyb3JGcm9tUHJvcHM7XG5cbiAgcmV0dXJuIHR5cGVvZiBlcnJvckZyb21SZWYgPT09ICdzdHJpbmcnICYmIGVycm9yRnJvbVJlZi5sZW5ndGggPiAwID8gZXJyb3JGcm9tUmVmIDogZXJyb3JNZXNzYWdlRGVmYXVsdDtcbn07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEZpZWxkSGFzRXJyb3IgPSAoZXJyb3JGcm9tUHJvcHM6IFZhbGlkYXRpb25FcnJvciwgZXJyb3JGcm9tUmVmOiBWYWxpZGF0aW9uRXJyb3IpID0+XG4gIGVycm9yRnJvbVByb3BzICE9PSBmYWxzZSB8fCBlcnJvckZyb21SZWYgIT09IGZhbHNlO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRGaWVsZExlbmd0aElzVmFsaWQgPSAoeyBtYXhsZW5ndGgsIG1pbmxlbmd0aCwgcmVxdWlyZWQsIHZhbHVlIH06IFZhbGlkYXRpb25MZW5ndGgpID0+IHtcbiAgY29uc3QgaXNFbXB0eUFuZFVucmVxdWlyZWQgPSB2YWx1ZS5sZW5ndGggPT09IDAgJiYgIXJlcXVpcmVkO1xuICBjb25zdCBpc1Rvb0xvbmcgPSBtYXhsZW5ndGggJiYgdmFsdWUubGVuZ3RoID4gbWF4bGVuZ3RoO1xuICBjb25zdCBpc1Rvb1Nob3J0ID0gIWlzRW1wdHlBbmRVbnJlcXVpcmVkICYmIG1pbmxlbmd0aCAmJiB2YWx1ZS5sZW5ndGggPCBtaW5sZW5ndGg7XG5cbiAgcmV0dXJuICFpc1Rvb1Nob3J0ICYmICFpc1Rvb0xvbmc7XG59O1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRNYXhSYW5nZUlzVmFsaWQgPSAoeyBtaW4gfTogUGljazxSYW5nZURhdGEsICdtaW4nPiwgdHlwZT86ICdwcmljZScpID0+IHtcbiAgcmV0dXJuICh2YWx1ZTogc3RyaW5nKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gICAgbGV0IG5ld01heDogbnVtYmVyIHwgbnVsbCA9IHR5cGUgPT09ICdwcmljZScgPyBwcmljZVRvTnVtYmVyKHZhbHVlKSA6IE51bWJlcih2YWx1ZSk7XG4gICAgbmV3TWF4ID0gIWlzTmFOKG5ld01heCkgPyBuZXdNYXggOiBudWxsO1xuICAgIGlmIChtaW4gJiYgbmV3TWF4KSB7XG4gICAgICBpZiAobmV3TWF4ID49IG1pbikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtZXNzYWdlOiBgTXVzdCBiZSBncmVhdGVyIHRoYW4gbWluYCxcbiAgICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBub0Vycm9yO1xuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldE1pblJhbmdlSXNWYWxpZCA9ICh7IG1heCB9OiBQaWNrPFJhbmdlRGF0YSwgJ21heCc+LCB0eXBlPzogJ3ByaWNlJykgPT4ge1xuICByZXR1cm4gKHZhbHVlOiBzdHJpbmcpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgICBsZXQgbmV3TWluOiBudW1iZXIgfCBudWxsID0gdHlwZSA9PT0gJ3ByaWNlJyA/IHByaWNlVG9OdW1iZXIodmFsdWUpIDogTnVtYmVyKHZhbHVlKTtcbiAgICBuZXdNaW4gPSAhaXNOYU4obmV3TWluKSA/IG5ld01pbiA6IG51bGw7XG4gICAgaWYgKG1heCAmJiBuZXdNaW4pIHtcbiAgICAgIGlmIChuZXdNaW4gPD0gbWF4KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1lc3NhZ2U6IGBNdXN0IGJlIGxlc3MgdGhhbiBtYXhgLFxuICAgICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5vRXJyb3I7XG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgZ2V0U2VsZWN0T3B0aW9uc0Zyb21TdHJpbmdzID0gKHN0cmluZ3M6IHN0cmluZ1tdKSA9PlxuICBzdHJpbmdzLm1hcChcbiAgICAob3B0aW9uKSA9PlxuICAgICAgKHtcbiAgICAgICAgbGFiZWw6IG9wdGlvbixcbiAgICAgICAgdmFsdWU6IG9wdGlvbixcbiAgICAgIH0gYXMgU2VsZWN0T3B0aW9uKVxuICApO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBoYW5kbGVGaWVsZFZhbGlkYXRpb24gPSAoe1xuICBlcnJvcixcbiAgZXJyb3JGcm9tUHJvcHMsXG4gIG1heGxlbmd0aCxcbiAgbWlubGVuZ3RoLFxuICByZXF1aXJlZCA9IGZhbHNlLFxuICB2YWxpZGF0b3JzLFxuICB2YWx1ZSxcbn06IHtcbiAgZXJyb3I6IFJlZjxWYWxpZGF0aW9uRXJyb3I+O1xuICBlcnJvckZyb21Qcm9wczogVmFsaWRhdGlvbkVycm9yO1xuICBtYXhsZW5ndGg/OiBudW1iZXI7XG4gIG1pbmxlbmd0aD86IG51bWJlcjtcbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICB2YWxpZGF0b3JzPzogVmFsaWRhdG9yW107XG4gIHZhbHVlPzogUmVmPHN0cmluZyB8IHVuZGVmaW5lZD47XG59KSA9PiB7XG4gIC8vIGVycm9yIGluIHByb3BzIHRha2VzIHByZWNlZGVuY2Ugb3ZlciB2YWxpZGF0aW9uIGVycm9yXG5cbiAgZXJyb3IudmFsdWUgPSBlcnJvckZyb21Qcm9wcyA/IGVycm9yRnJvbVByb3BzIDogZmFsc2U7XG5cbiAgaWYgKCFlcnJvci52YWx1ZSAmJiB2YWxpZGF0b3JzKSB7XG4gICAgY29uc3QgdmFsaWRhdGlvbiA9IHZhbGlkYXRlUHJvcGVydHkodmFsdWU/LnZhbHVlIHx8ICcnLCB2YWxpZGF0b3JzKTtcblxuICAgIGlmICghdmFsaWRhdGlvbi52YWxpZCkge1xuICAgICAgZXJyb3IudmFsdWUgPSB2YWxpZGF0aW9uLm1lc3NhZ2U7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFlcnJvci52YWx1ZSAmJiAobWF4bGVuZ3RoIHx8IG1pbmxlbmd0aCkpIHtcbiAgICBjb25zdCBsZW5ndGhWYWxpZGF0aW9uID0gdmFsaWRhdGVMZW5ndGgoe1xuICAgICAgbWF4bGVuZ3RoLFxuICAgICAgbWlubGVuZ3RoLFxuICAgICAgcmVxdWlyZWQsXG4gICAgICB2YWx1ZTogdmFsdWU/LnZhbHVlIHx8ICcnLFxuICAgIH0pO1xuXG4gICAgaWYgKCFsZW5ndGhWYWxpZGF0aW9uLnZhbGlkKSB7XG4gICAgICBlcnJvci52YWx1ZSA9IGxlbmd0aFZhbGlkYXRpb24ubWVzc2FnZTtcbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlRmllbGRzRnJvbVJlZnMoZmllbGRzOiB7IFtrZXk6IHN0cmluZ106IFJlZjxTdHJpbmdJbnB1dCB8IG51bGw+IH0pIHtcbiAgbGV0IHZhbGlkID0gdHJ1ZTtcblxuICBmb3IgKGNvbnN0IGtleSBpbiBmaWVsZHMpIHtcbiAgICBpZiAoZmllbGRzW2tleV0udmFsdWU/LnJlcXVpcmVkKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGZpZWxkc1trZXldLnZhbHVlPy52YWx1ZTtcbiAgICAgIHZhbGlkID0gdmFsaWQgJiYgISF2YWx1ZSAmJiB2YWx1ZS50cmltKCkgIT09ICcnO1xuICAgIH1cblxuICAgIGNvbnN0IGVycm9yID0gZmllbGRzW2tleV0udmFsdWU/LmVycm9yO1xuICAgIHZhbGlkID0gdmFsaWQgJiYgIWVycm9yO1xuICB9XG5cbiAgcmV0dXJuIHZhbGlkO1xufVxuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCB2YWxpZGF0ZUxlbmd0aCA9ICh7XG4gIG1heGxlbmd0aCxcbiAgbWlubGVuZ3RoLFxuICByZXF1aXJlZCA9IGZhbHNlLFxuICB2YWx1ZSxcbn06IFZhbGlkYXRpb25MZW5ndGgpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgY29uc3QgcmVzcG9uc2UgPSB7XG4gICAgbWVzc2FnZTogJycsXG4gICAgdmFsaWQ6IHRydWUsXG4gIH07XG5cbiAgcmVzcG9uc2UudmFsaWQgPSBnZXRGaWVsZExlbmd0aElzVmFsaWQoe1xuICAgIG1heGxlbmd0aCxcbiAgICBtaW5sZW5ndGgsXG4gICAgcmVxdWlyZWQsXG4gICAgdmFsdWUsXG4gIH0pO1xuXG4gIGlmIChyZXNwb25zZS52YWxpZCkgcmV0dXJuIHJlc3BvbnNlO1xuXG4gIHJlc3BvbnNlLm1lc3NhZ2UgPSBlcnJvck1lc3NhZ2VEZWZhdWx0O1xuXG4gIGlmIChtYXhsZW5ndGggJiYgbWlubGVuZ3RoKSB7XG4gICAgcmVzcG9uc2UubWVzc2FnZSA9IGBQbGVhc2UgZW50ZXIgYSB2YWx1ZSBiZXR3ZWVuICR7bWlubGVuZ3RofSBhbmQgJHttYXhsZW5ndGh9IGNoYXJhY3RlcnMgaW4gbGVuZ3RoLmA7XG4gIH0gZWxzZSBpZiAobWF4bGVuZ3RoKSB7XG4gICAgcmVzcG9uc2UubWVzc2FnZSA9IGBQbGVhc2UgZW50ZXIgYSB2YWx1ZSBubyBtb3JlIHRoYW4gJHttYXhsZW5ndGh9IGNoYXJhY3RlcnMgaW4gbGVuZ3RoLmA7XG4gIH0gZWxzZSBpZiAobWlubGVuZ3RoKSB7XG4gICAgcmVzcG9uc2UubWVzc2FnZSA9IGBQbGVhc2UgZW50ZXIgYSB2YWx1ZSBubyBsZXNzIHRoYW4gJHttaW5sZW5ndGh9IGNoYXJhY3RlcnMgaW4gbGVuZ3RoLmA7XG4gIH1cblxuICByZXR1cm4gcmVzcG9uc2U7XG59O1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVByb3BlcnR5KHZhbHVlOiBzdHJpbmcsIHZhbGlkYXRvcnM6ICgodmFsdWU6IHN0cmluZykgPT4gVmFsaWRhdGlvblJlc3VsdClbXSk6IFZhbGlkYXRpb25SZXN1bHQge1xuICBmb3IgKGNvbnN0IHZhbGlkYXRvciBvZiB2YWxpZGF0b3JzKSB7XG4gICAgY29uc3QgdmFsaWRhdGlvbiA9IHZhbGlkYXRvcih2YWx1ZSk7XG4gICAgaWYgKCF2YWxpZGF0aW9uLnZhbGlkKSB7XG4gICAgICByZXR1cm4gdmFsaWRhdGlvbjtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG1lc3NhZ2U6ICcnLFxuICAgIHZhbGlkOiB0cnVlLFxuICB9O1xufVxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgVGlkZUlucHV0U2VsZWN0LnZ1ZWAgaW1wb3J0ZWQgZnJvbSAndGlkZS1kZXNpZ24tc3lzdGVtJyBucG0gcGFja2FnZSBpbnN0ZWFkLlxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IGdldEVycm9yTWVzc2FnZSwgZ2V0RmllbGRIYXNFcnJvciB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24tZGVwcmVjYXRlZCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBTZWxlY3RGaWVsZCB9IGZyb20gJ0AvdHlwZXMvRmllbGREZXByZWNhdGVkJztcbiAgaW1wb3J0IHR5cGUgeyBTZWxlY3RPcHRpb24sIFNlbGVjdE9wdGlvbkdyb3VwIH0gZnJvbSAnQC90eXBlcy9TZWxlY3QnO1xuXG4gIGV4cG9ydCBpbnRlcmZhY2UgUHJvcHMgZXh0ZW5kcyBTZWxlY3RGaWVsZCB7XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBzdXBwb3J0aW5nVGV4dD86IHN0cmluZztcbiAgfVxuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGVycm9yOiBmYWxzZSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgc3VwcG9ydGluZ1RleHQ6IHVuZGVmaW5lZCxcbiAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBlcnJvciA9IHJlZihwcm9wcy5lcnJvcik7XG4gIGNvbnN0IGhhc0ZvY3VzID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgaW5wdXQgPSByZWY8SFRNTFNlbGVjdEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgcmVxdWlyZWQgPSByZWYocHJvcHMucmVxdWlyZWQpO1xuICBjb25zdCB2YWx1ZSA9IHJlZjxzdHJpbmcgfCB1bmRlZmluZWQ+KHByb3BzLnZhbHVlKTtcblxuICBjb25zdCBlcnJvck1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiBnZXRFcnJvck1lc3NhZ2UocHJvcHMuZXJyb3IsIGVycm9yLnZhbHVlKSk7XG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3QgaGFzRXJyb3IgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgJiYgIXZhbHVlLnZhbHVlKSB8fCBnZXRGaWVsZEhhc0Vycm9yKGVycm9yLnZhbHVlLCBwcm9wcy5lcnJvcikpO1xuICBjb25zdCBoYXNNaW5pbGFiZWwgPSBjb21wdXRlZCgoKSA9PiBoYXNGb2N1cy52YWx1ZSB8fCAhaXNFbXB0eS52YWx1ZSk7XG4gIGNvbnN0IGlzRW1wdHkgPSBjb21wdXRlZCgoKSA9PiB2YWx1ZS52YWx1ZSA9PT0gdW5kZWZpbmVkKTtcblxuICBjb25zdCBleHBhbmRPcHRpb25zID0gKCkgPT4ge1xuICAgIGNvbnN0IGV2ZW50ID0gbmV3IE1vdXNlRXZlbnQoJ21vdXNlZG93bicpO1xuICAgIGlucHV0Py52YWx1ZT8uZGlzcGF0Y2hFdmVudChldmVudCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXMgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzT3V0ID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gZmFsc2U7XG4gIH07XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMudmFsdWUsXG4gICAgKG5ld1ZhbHVlLCBvbGRWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlICE9PSBvbGRWYWx1ZSB8fCBuZXdWYWx1ZSAhPT0gdmFsdWUudmFsdWUpIHtcbiAgICAgICAgdmFsdWUudmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICk7XG5cbiAgZGVmaW5lRXhwb3NlKHsgZXJyb3IsIHZhbHVlIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWlucHV0LXNlbGVjdCcsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIGRpc2FibGVkICYmICdkaXNhYmxlZCcsXG4gICAgICBoYXNFcnJvciAmJiAnZXJyb3InLFxuICAgIF1cIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC1ib3JkZXInLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgcHJvcHMuZGlzYWJsZWQgPyBDU1MuQ1VSU09SLk5PVF9BTExPV0VEIDogJycsXG4gICAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICBdXCJcbiAgICAgIEBjbGljaz1cImV4cGFuZE9wdGlvbnNcIlxuICAgID5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5XSURUSC5GVUxMXVwiPlxuICAgICAgICA8bGFiZWxcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICBoYXNNaW5pbGFiZWwgPyBbJ21pbmlsYWJlbCcsIENTUy5GT05ULlJPTEUuTEFCRUxfM10gOiBDU1MuRk9OVC5ST0xFLkxBQkVMXzEsXG4gICAgICAgICAgICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gICAgICAgICAgICBDU1MuUE9TSVRJT05JTkcuTEVGVCxcbiAgICAgICAgICAgIENTUy5NQVJHSU4uVE9QLkhBTEYsXG4gICAgICAgICAgICBDU1MuTUFSR0lOLkxFRlQuT05FLFxuICAgICAgICAgICAgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgOmZvcj1cInByb3BzLmlucHV0SWRcIlxuICAgICAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgIDxzZWxlY3RcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICBDU1MuUEFERElORy5CT1RUT00uSEFMRixcbiAgICAgICAgICAgIENTUy5QQURESU5HLlguT05FLFxuICAgICAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgICAgICBkaXNhYmxlZCAmJiBDU1MuQ1VSU09SLk5PVF9BTExPV0VELFxuICAgICAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgOmRpc2FibGVkPVwiZGlzYWJsZWRcIlxuICAgICAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICAgICAgcmVmPVwiaW5wdXRcIlxuICAgICAgICAgIDpyZXF1aXJlZD1cInJlcXVpcmVkXCJcbiAgICAgICAgICBAZm9jdXM9XCJoYW5kbGVGb2N1c1wiXG4gICAgICAgICAgQGZvY3Vzb3V0PVwiaGFuZGxlRm9jdXNPdXRcIlxuICAgICAgICAgIDppZD1cInByb3BzLmlucHV0SWRcIlxuICAgICAgICAgIHYtbW9kZWw9XCJ2YWx1ZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8dGVtcGxhdGUgdi1mb3I9XCJvcHRncm91cCBpbiBwcm9wcy5vcHRncm91cHNcIj5cbiAgICAgICAgICAgIDxvcHRncm91cFxuICAgICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgICAgOmtleT1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb25Hcm91cCkubGFiZWxcIlxuICAgICAgICAgICAgICA6bGFiZWw9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uR3JvdXApLmxhYmVsXCJcbiAgICAgICAgICAgICAgdi1pZj1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb25Hcm91cCkub3B0aW9uc1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgICAgICA6a2V5PVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgICAgICA6dmFsdWU9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgICAgIHYtZm9yPVwib3B0aW9uIGluIChvcHRncm91cCBhcyBTZWxlY3RPcHRpb25Hcm91cCkub3B0aW9uc1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBvcHRpb24ubGFiZWwgfX1cbiAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICA8L29wdGdyb3VwPlxuXG4gICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgICAgICAgICA6a2V5PVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbikudmFsdWVcIlxuICAgICAgICAgICAgICA6c2VsZWN0ZWQ9XCJ2YWx1ZSA9PT0gKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbikudmFsdWUgPyB0cnVlIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgICAgOnZhbHVlPVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbikudmFsdWVcIlxuICAgICAgICAgICAgICB2LWVsc2VcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbikubGFiZWwgfX1cbiAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgIDprZXk9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgOnNlbGVjdGVkPVwidmFsdWUgPT09IG9wdGlvbi52YWx1ZSA/IHRydWUgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgOnZhbHVlPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgIHYtZm9yPVwib3B0aW9uIGluIG9wdGlvbnNcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxuICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICA8L3NlbGVjdD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5QT1NJVElPTi5BQlNPTFVURSwgQ1NTLlBPU0lUSU9OSU5HLlJJR0hULCBDU1MuTUFSR0lOLlJJR0hULk9ORSwgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRl1cIlxuICAgICAgICA6aWNvbj1cIklDT04uRVhQQU5EX01PUkVcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVJdXCJcbiAgICAgIHYtaWY9XCJwcm9wcy5zdXBwb3J0aW5nVGV4dCB8fCBoYXNFcnJvclwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltdXCJcbiAgICAgICAgOmljb249XCJJQ09OLkVSUk9SXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgdi1pZj1cImhhc0Vycm9yXCJcbiAgICAgIC8+XG5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfM11cIj5cbiAgICAgICAge3sgaGFzRXJyb3IgPyBlcnJvck1lc3NhZ2UgOiBwcm9wcy5zdXBwb3J0aW5nVGV4dCB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgc2VsZWN0IHtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICB9XG5cbiAgbGFiZWwge1xuICAgIGhlaWdodDogMS4xODc1cmVtO1xuICAgIHRyYW5zaXRpb246IGZvbnQtc2l6ZSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIGxhYmVsOm5vdCgubWluaWxhYmVsKSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgY2FsYyg5IC8gMTYgKiAxcmVtKSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IHZhcigtLXRpZGUtZGlzYWJsZWQpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtZXJyb3Itc3VyZmFjZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3I6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0OmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0yKTtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtYm9yZGVyLWhpZ2gpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMSk7XG4gICAgb3V0bGluZTogdmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSBzb2xpZCB2YXIoLS10aWRlLWJvcmRlcik7XG4gICAgb3V0bGluZS1vZmZzZXQ6IGNhbGModmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSAqIC0xKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5lcnJvciB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItcHJpbWFyeSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3Igb3B0aW9uIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1vbi1zdXJmYWNlKTtcbiAgfVxuXG4gIHNlbGVjdCB7XG4gICAgcGFkZGluZy10b3A6IDI3cHg7XG4gIH1cbjwvc3R5bGU+XG4iLCJleHBvcnQgY29uc3QgVEVYVF9JTlBVVF9UWVBFID0ge1xuICBEQVRFOiAnZGF0ZScsXG4gIERBVEVUSU1FX0xPQ0FMOiAnZGF0ZXRpbWUtbG9jYWwnLFxuICBFTUFJTDogJ2VtYWlsJyxcbiAgTU9OVEg6ICdtb250aCcsXG4gIE5VTUJFUjogJ251bWJlcicsXG4gIFBBU1NXT1JEOiAncGFzc3dvcmQnLFxuICBTRUFSQ0g6ICdzZWFyY2gnLFxuICBURUw6ICd0ZWwnLFxuICBURVhUOiAndGV4dCcsXG4gIFRJTUU6ICd0aW1lJyxcbiAgVVJMOiAndXJsJyxcbiAgV0VFSzogJ3dlZWsnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgVGV4dElucHV0VHlwZSA9ICh0eXBlb2YgVEVYVF9JTlBVVF9UWVBFKVtrZXlvZiB0eXBlb2YgVEVYVF9JTlBVVF9UWVBFXTtcblxuZXhwb3J0IGNvbnN0IElOUFVUX01PREUgPSB7XG4gIERFQ0lNQUw6ICdkZWNpbWFsJyxcbiAgRU1BSUw6ICdlbWFpbCcsXG4gIE5VTUVSSUM6ICdudW1lcmljJyxcbiAgU0VBUkNIOiAnc2VhcmNoJyxcbiAgVEVMOiAndGVsJyxcbiAgVEVYVDogJ3RleHQnLFxuICBVUkw6ICd1cmwnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgSW5wdXRNb2RlID0gKHR5cGVvZiBJTlBVVF9NT0RFKVtrZXlvZiB0eXBlb2YgSU5QVVRfTU9ERV07XG4iLCJpbXBvcnQgeyBJTlBVVF9NT0RFLCBURVhUX0lOUFVUX1RZUEUgfSBmcm9tICdAL3R5cGVzL1RleHRJbnB1dCc7XG5cbmltcG9ydCB0eXBlIHsgSW5wdXRNb2RlLCBUZXh0SW5wdXRUeXBlIH0gZnJvbSAnQC90eXBlcy9UZXh0SW5wdXQnO1xuXG5leHBvcnQgY29uc3QgZ2V0VGV4dElucHV0TW9kZSA9ICh0eXBlOiBUZXh0SW5wdXRUeXBlLCBpbnB1dG1vZGU/OiBJbnB1dE1vZGUpOiBJbnB1dE1vZGUgfCB1bmRlZmluZWQgPT4ge1xuICBpZiAoaW5wdXRtb2RlKSByZXR1cm4gaW5wdXRtb2RlO1xuXG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgVEVYVF9JTlBVVF9UWVBFLlRFTDpcbiAgICAgIHJldHVybiBJTlBVVF9NT0RFLlRFTDtcbiAgICBjYXNlIFRFWFRfSU5QVVRfVFlQRS5TRUFSQ0g6XG4gICAgICByZXR1cm4gSU5QVVRfTU9ERS5TRUFSQ0g7XG4gICAgY2FzZSBURVhUX0lOUFVUX1RZUEUuTlVNQkVSOlxuICAgICAgcmV0dXJuIElOUFVUX01PREUuTlVNRVJJQztcbiAgICBjYXNlIFRFWFRfSU5QVVRfVFlQRS5FTUFJTDpcbiAgICAgIHJldHVybiBJTlBVVF9NT0RFLkVNQUlMO1xuICAgIGNhc2UgVEVYVF9JTlBVVF9UWVBFLlVSTDpcbiAgICAgIHJldHVybiBJTlBVVF9NT0RFLlVSTDtcbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59O1xuIiwiPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIHJlZiwgd2F0Y2gsIHdhdGNoRWZmZWN0IH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dCBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUlucHV0U3VwcG9ydGluZ1RleHQudnVlJztcbiAgaW1wb3J0IHsgdXNlRm9ybUNvbnRleHQgfSBmcm9tICdAL2NvbXBvc2FibGVzL3VzZVRpZGVGb3JtJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRFWFRfSU5QVVRfVFlQRSB9IGZyb20gJ0AvdHlwZXMvVGV4dElucHV0JztcbiAgaW1wb3J0IHsgRVJST1JfRElTUExBWSB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbic7XG4gIGltcG9ydCB7IGdldFRleHRJbnB1dE1vZGUgfSBmcm9tICdAL3V0aWxpdGllcy9mb3Jtcyc7XG4gIGltcG9ydCB7IFZBTElEQVRJT05fUkVTVUxULCBnZXRGaWVsZFZhbGlkYXRpb25SZXN1bHQgfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uJztcblxuICBpbXBvcnQgdHlwZSB7IEZvcm1WYWx1ZVRyYW5zZm9ybWVyIH0gZnJvbSAnQC90eXBlcy9Gb3JtJztcbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHR5cGUgeyBJbnB1dE1vZGUsIFRleHRJbnB1dFR5cGUgfSBmcm9tICdAL3R5cGVzL1RleHRJbnB1dCc7XG4gIGltcG9ydCB0eXBlIHsgRXJyb3JEaXNwbGF5LCBWYWxpZGF0aW9uUmVzdWx0LCBWYWxpZGF0b3IgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgYXV0b2NvbXBsZXRlPzogYm9vbGVhbjtcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgZXJyb3I/OiBzdHJpbmc7XG4gICAgZXJyb3JEaXNwbGF5PzogRXJyb3JEaXNwbGF5O1xuICAgIGhhc0NsZWFyPzogYm9vbGVhbjtcbiAgICBpY29uTGVhZGluZz86IEljb247XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBpbnB1dG1vZGU/OiBJbnB1dE1vZGU7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgbWF4bGVuZ3RoPzogbnVtYmVyO1xuICAgIG1pbmxlbmd0aD86IG51bWJlcjtcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIHByZWZpeD86IHN0cmluZztcbiAgICByZXF1aXJlZD86IGJvb2xlYW47XG4gICAgc3VmZml4Pzogc3RyaW5nO1xuICAgIHN1cHBvcnRpbmdUZXh0Pzogc3RyaW5nO1xuICAgIHRyYW5zZm9ybVZhbHVlPzogRm9ybVZhbHVlVHJhbnNmb3JtZXI7XG4gICAgdHlwZT86IFRleHRJbnB1dFR5cGU7XG4gICAgdmFsaWRhdG9ycz86IFZhbGlkYXRvcltdO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgYXV0b2NvbXBsZXRlOiBmYWxzZSxcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZXJyb3I6ICcnLFxuICAgIGVycm9yRGlzcGxheTogRVJST1JfRElTUExBWS5MQVpZLFxuICAgIGhhc0NsZWFyOiBmYWxzZSxcbiAgICBpY29uTGVhZGluZzogdW5kZWZpbmVkLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBpbnB1dG1vZGU6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG1heGxlbmd0aDogdW5kZWZpbmVkLFxuICAgIG1pbmxlbmd0aDogdW5kZWZpbmVkLFxuICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICBwcmVmaXg6IHVuZGVmaW5lZCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgc3VmZml4OiB1bmRlZmluZWQsXG4gICAgc3VwcG9ydGluZ1RleHQ6IHVuZGVmaW5lZCxcbiAgICB0cmFuc2Zvcm1WYWx1ZTogdW5kZWZpbmVkLFxuICAgIHR5cGU6IFRFWFRfSU5QVVRfVFlQRS5URVhULFxuICAgIHZhbGlkYXRvcnM6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgdHlwZSBFbWl0cyA9IHtcbiAgICAoZXZlbnQ6ICd2YWxpZCcsIGlzVmFsaWQ6IGJvb2xlYW4pOiB2b2lkO1xuICB9O1xuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8RW1pdHM+KCk7XG5cbiAgY29uc3QgbW9kZWxWYWx1ZSA9IGRlZmluZU1vZGVsPHN0cmluZz4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICBjb25zdCBmb3JtQ29udGV4dCA9IHVzZUZvcm1Db250ZXh0KCk7XG5cbiAgY29uc3QgZXJyb3JSZWYgPSByZWY8VmFsaWRhdGlvblJlc3VsdD4oVkFMSURBVElPTl9SRVNVTFQuTk9fRVJST1IpO1xuICBjb25zdCBoYXNGb2N1cyA9IHJlZjxib29sZWFuPihmYWxzZSk7XG4gIGNvbnN0IGlucHV0RWxlbWVudCA9IHJlZjxIVE1MSW5wdXRFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IGlzVmFsaWRhdGluZyA9IHJlZjxib29sZWFuPihmYWxzZSk7XG4gIGNvbnN0IHNob3dQYXNzd29yZCA9IHJlZjxib29sZWFuPihmYWxzZSk7XG5cbiAgY29uc3QgZm9ybWF0dGVkTGFiZWwgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgJiYgcHJvcHMubGFiZWwgPyBgJHtwcm9wcy5sYWJlbH0gKmAgOiBwcm9wcy5sYWJlbCkpO1xuICBjb25zdCBzaG93RXJyb3IgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKGhhc0Vycm9yRnJvbVByb3AudmFsdWUpIHJldHVybiB0cnVlO1xuICAgIGlmICghaXNWYWxpZGF0aW5nLnZhbHVlKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuICFlcnJvclJlZi52YWx1ZS52YWxpZDtcbiAgfSk7XG4gIGNvbnN0IGhhc0Vycm9yRnJvbVByb3AgPSBjb21wdXRlZCgoKSA9PiBwcm9wcy5lcnJvciAhPT0gJycpO1xuICBjb25zdCBoYXNNaW5pbGFiZWwgPSBjb21wdXRlZCgoKSA9PiBoYXNGb2N1cy52YWx1ZSB8fCAhaXNFbXB0eS52YWx1ZSk7XG4gIGNvbnN0IGlucHV0TW9kZUF0dHJpYnV0ZSA9IGNvbXB1dGVkPElucHV0TW9kZSB8IHVuZGVmaW5lZD4oKCkgPT4gZ2V0VGV4dElucHV0TW9kZShwcm9wcy50eXBlLCBwcm9wcy5pbnB1dG1vZGUpKTtcbiAgY29uc3QgaW5wdXRUeXBlID0gY29tcHV0ZWQoKCkgPT5cbiAgICBwcm9wcy50eXBlID09PSBURVhUX0lOUFVUX1RZUEUuUEFTU1dPUkQgJiYgc2hvd1Bhc3N3b3JkLnZhbHVlID09PSB0cnVlID8gVEVYVF9JTlBVVF9UWVBFLlRFWFQgOiBwcm9wcy50eXBlXG4gICk7XG4gIGNvbnN0IGlzRW1wdHkgPSBjb21wdXRlZCgoKSA9PiBtb2RlbFZhbHVlLnZhbHVlID09PSAnJyk7XG4gIGNvbnN0IHNob3VsZFNob3dDbGVhckJ1dHRvbiA9IGNvbXB1dGVkKFxuICAgICgpID0+IHByb3BzLmhhc0NsZWFyICYmIG1vZGVsVmFsdWUudmFsdWUgJiYgcHJvcHMudHlwZSAhPT0gVEVYVF9JTlBVVF9UWVBFLlBBU1NXT1JEXG4gICk7XG4gIGNvbnN0IHNob3VsZFNob3dQYXNzd29yZEJ1dHRvbiA9IGNvbXB1dGVkKCgpID0+IHByb3BzLnR5cGUgPT09IFRFWFRfSU5QVVRfVFlQRS5QQVNTV09SRCk7XG4gIGNvbnN0IHN1cHBvcnRpbmdUZXh0TWVzc2FnZSA9IGNvbXB1dGVkKCgpID0+IChzaG93RXJyb3IudmFsdWUgJiYgZXJyb3JSZWYudmFsdWUubWVzc2FnZSkgfHwgcHJvcHMuc3VwcG9ydGluZ1RleHQpO1xuXG4gIGNvbnN0IGhhbmRsZUNsZWFyID0gKCkgPT4ge1xuICAgIG1vZGVsVmFsdWUudmFsdWUgPSAnJztcbiAgICBpbnB1dEVsZW1lbnQudmFsdWU/LmZvY3VzKCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXMgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSB0cnVlO1xuICAgIGlmIChwcm9wcy5lcnJvckRpc3BsYXkgPT09IEVSUk9SX0RJU1BMQVkuRUFHRVIpIGlzVmFsaWRhdGluZy52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXNPdXQgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSBmYWxzZTtcbiAgICBpZiAocHJvcHMuZXJyb3JEaXNwbGF5ID09PSBFUlJPUl9ESVNQTEFZLkxBWlkpIGlzVmFsaWRhdGluZy52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRmllbGRDbGljayA9ICgpID0+IHtcbiAgICBpbnB1dEVsZW1lbnQudmFsdWU/LmZvY3VzKCk7XG4gIH07XG5cbiAgY29uc3QgcHJldmVudElucHV0Rm9jdXNMb3NzT25Nb3VzZWRvd24gPSAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgIGlmICghaGFzRm9jdXMudmFsdWUpIHJldHVybjtcbiAgICBpZiAoZS50YXJnZXQgIT09IGlucHV0RWxlbWVudC52YWx1ZSkgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICB9O1xuXG4gIHdhdGNoRWZmZWN0KCgpID0+IHtcbiAgICBlcnJvclJlZi52YWx1ZSA9IGdldEZpZWxkVmFsaWRhdGlvblJlc3VsdCh7XG4gICAgICBlcnJvckZyb21Qcm9wczogcHJvcHMuZXJyb3IsXG4gICAgICBtYXhsZW5ndGg6IHByb3BzLm1heGxlbmd0aCxcbiAgICAgIG1pbmxlbmd0aDogcHJvcHMubWlubGVuZ3RoLFxuICAgICAgcmVxdWlyZWQ6IHByb3BzLnJlcXVpcmVkLFxuICAgICAgdmFsaWRhdG9yczogcHJvcHMudmFsaWRhdG9ycyxcbiAgICAgIHZhbHVlOiBtb2RlbFZhbHVlLFxuICAgIH0pO1xuICB9KTtcblxuICB3YXRjaChcbiAgICBbbW9kZWxWYWx1ZSwgKCkgPT4gcHJvcHMudHJhbnNmb3JtVmFsdWVdLFxuICAgICgpID0+IHtcbiAgICAgIGlmICghcHJvcHMudHJhbnNmb3JtVmFsdWUpIHJldHVybjtcblxuICAgICAgY29uc3QgZGlnaXRzID0gbW9kZWxWYWx1ZS52YWx1ZT8ubWF0Y2goL1xcZC9nKT8uam9pbignJykgfHwgdW5kZWZpbmVkO1xuICAgICAgbW9kZWxWYWx1ZS52YWx1ZSA9IGRpZ2l0cyA/IHByb3BzLnRyYW5zZm9ybVZhbHVlKGRpZ2l0cykgOiAnJztcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBmb3JtQ29udGV4dD8uZm9yY2VTaG93RXJyb3JzLnZhbHVlLFxuICAgIChuZXdWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlKSBpc1ZhbGlkYXRpbmcudmFsdWUgPSB0cnVlO1xuICAgIH0sXG4gICAgeyBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuXG4gIHdhdGNoKFxuICAgIGVycm9yUmVmLFxuICAgICgpID0+IHtcbiAgICAgIGVtaXQoJ3ZhbGlkJywgZXJyb3JSZWYudmFsdWUudmFsaWQpO1xuICAgIH0sXG4gICAgeyBkZWVwOiB0cnVlLCBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWlucHV0LXRleHQnLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBkaXNhYmxlZCAmJiAnZGlzYWJsZWQnLFxuICAgICAgc2hvd0Vycm9yICYmICdlcnJvcicsXG4gICAgXVwiXG4gID5cbiAgICA8bGFiZWxcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dC1maWVsZCcsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBDU1MuUEFERElORy5ZLkhBTEYsXG4gICAgICAgIHNob3VsZFNob3dDbGVhckJ1dHRvbiA/IFtDU1MuUEFERElORy5SSUdIVC5IQUxGLCBDU1MuUEFERElORy5MRUZULk9ORV0gOiBbQ1NTLlBBRERJTkcuWC5PTkVdLFxuICAgICAgICBkaXNhYmxlZCA/IENTUy5DVVJTT1IuTk9UX0FMTE9XRUQgOiBDU1MuQ1VSU09SLlRFWFQsXG4gICAgICBdXCJcbiAgICAgIDpmb3I9XCJpbnB1dElkXCJcbiAgICAgIEBjbGljaz1cImhhbmRsZUZpZWxkQ2xpY2tcIlxuICAgICAgQG1vdXNlZG93bj1cInByZXZlbnRJbnB1dEZvY3VzTG9zc09uTW91c2Vkb3duXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICA6aWNvbj1cImljb25MZWFkaW5nXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgdi1pZj1cImljb25MZWFkaW5nXCJcbiAgICAgIC8+XG5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUiwgQ1NTLldJRFRILkZVTExdXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAndGlkZS1pbnB1dC10ZXh0LXByZWZpeCcsXG4gICAgICAgICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMSxcbiAgICAgICAgICAgICFzaG93RXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgICAgaGFzTWluaWxhYmVsID8gJycgOiAnb2Zmc2V0JyxcbiAgICAgICAgICBdXCJcbiAgICAgICAgICB2LWlmPVwicHJlZml4XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHByZWZpeCB9fVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuV0lEVEguRlVMTF1cIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAgICd0aWRlLWlucHV0LXRleHQtbGFiZWwnLFxuICAgICAgICAgICAgICBoYXNNaW5pbGFiZWwgPyBbJ21pbmlsYWJlbCcsIENTUy5GT05ULlJPTEUuTEFCRUxfM10gOiBDU1MuRk9OVC5ST0xFLkxBQkVMXzEsXG4gICAgICAgICAgICAgICFzaG93RXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgICAgICBDU1MuQ1VSU09SLlRFWFQsXG4gICAgICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgICAgICBdXCJcbiAgICAgICAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgZm9ybWF0dGVkTGFiZWwgfX1cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgOmF1dG9jb21wbGV0ZT1cImF1dG9jb21wbGV0ZSA/ICdvbicgOiAnb2ZmJ1wiXG4gICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5GT05ULlJPTEUuQk9EWV8xLCBkaXNhYmxlZCAmJiBDU1MuQ1VSU09SLk5PVF9BTExPV0VEXVwiXG4gICAgICAgICAgICA6ZGlzYWJsZWQ9XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICA6aW5wdXRtb2RlPVwiaW5wdXRNb2RlQXR0cmlidXRlXCJcbiAgICAgICAgICAgIDptYXhsZW5ndGg9XCJtYXhsZW5ndGhcIlxuICAgICAgICAgICAgOm1pbmxlbmd0aD1cIm1pbmxlbmd0aFwiXG4gICAgICAgICAgICA6bmFtZT1cIm5hbWVcIlxuICAgICAgICAgICAgcmVmPVwiaW5wdXRFbGVtZW50XCJcbiAgICAgICAgICAgIDpyZXF1aXJlZD1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgIDp0eXBlPVwiaW5wdXRUeXBlXCJcbiAgICAgICAgICAgIEBmb2N1cz1cImhhbmRsZUZvY3VzXCJcbiAgICAgICAgICAgIEBmb2N1c291dD1cImhhbmRsZUZvY3VzT3V0XCJcbiAgICAgICAgICAgIDppZD1cImlucHV0SWRcIlxuICAgICAgICAgICAgdi1tb2RlbD1cIm1vZGVsVmFsdWVcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAndGlkZS1pbnB1dC10ZXh0LXN1ZmZpeCcsXG4gICAgICAgICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMSxcbiAgICAgICAgICAgICFzaG93RXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgICAgaGFzTWluaWxhYmVsID8gJycgOiAnb2Zmc2V0JyxcbiAgICAgICAgICBdXCJcbiAgICAgICAgICB2LWlmPVwic3VmZml4XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHN1ZmZpeCB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgIEBjbGljaz1cImhhbmRsZUNsZWFyXCJcbiAgICAgICAgdi1pZj1cInNob3VsZFNob3dDbGVhckJ1dHRvblwiXG4gICAgICA+XG4gICAgICAgIDxUaWRlSWNvblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuTUFSR0lOLkZVTEwuSEFMRl1cIlxuICAgICAgICAgIDppY29uPVwiSUNPTi5DTE9TRVwiXG4gICAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgLz5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgIEBjbGljaz1cInNob3dQYXNzd29yZCA9ICFzaG93UGFzc3dvcmRcIlxuICAgICAgICB2LWlmPVwic2hvdWxkU2hvd1Bhc3N3b3JkQnV0dG9uXCJcbiAgICAgID5cbiAgICAgICAgPFRpZGVJY29uXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5NQVJHSU4uRlVMTC5IQUxGXVwiXG4gICAgICAgICAgOmljb249XCJJQ09OLlZJU0lCSUxJVFlcIlxuICAgICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIC8+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2xhYmVsPlxuXG4gICAgPFRpZGVJbnB1dFN1cHBvcnRpbmdUZXh0XG4gICAgICA6aXMtZXJyb3I9XCJzaG93RXJyb3JcIlxuICAgICAgOm1lc3NhZ2U9XCJzdXBwb3J0aW5nVGV4dE1lc3NhZ2VcIlxuICAgICAgdi1pZj1cInN1cHBvcnRpbmdUZXh0TWVzc2FnZVwiXG4gICAgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1pbnB1dC10ZXh0LWxhYmVsIHtcbiAgICBoZWlnaHQ6IDEuMTg3NXJlbTtcbiAgICB0cmFuc2l0aW9uOiBmb250LXNpemUgdmFyKC0tdGlkZS1hbmltYXRlKSwgdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LWxhYmVsOm5vdCgubWluaWxhYmVsKSxcbiAgLnRpZGUtaW5wdXQtdGV4dC1wcmVmaXg6bm90KC5vZmZzZXQpLFxuICAudGlkZS1pbnB1dC10ZXh0LXN1ZmZpeDpub3QoLm9mZnNldCkge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIGNhbGMoOSAvIDE2ICogMXJlbSkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC1wcmVmaXgsXG4gIC50aWRlLWlucHV0LXRleHQtc3VmZml4IHtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IHZhcigtLXRpZGUtZGlzYWJsZWQpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5lcnJvciB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItcHJpbWFyeSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmVycm9yIC50aWRlLWlucHV0LXRleHQtZmllbGQge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXN1cmZhY2UpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5lcnJvcjpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtdGV4dC1maWVsZCB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dDpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtdGV4dC1maWVsZCB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTIpO1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS1ib3JkZXItaGlnaCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0IGlucHV0IHtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC1maWVsZCB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTEpO1xuICAgIG91dGxpbmU6IHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgc29saWQgdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiBjYWxjKHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgKiAtMSk7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS1mb3JlZ3JvdW5kKTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYFRpZGVJbnB1dFRleHQudnVlYCBpbXBvcnRlZCBmcm9tICd0aWRlLWRlc2lnbi1zeXN0ZW0nIG5wbSBwYWNrYWdlIGluc3RlYWQuXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgVEVYVF9JTlBVVF9UWVBFIH0gZnJvbSAnQC90eXBlcy9UZXh0SW5wdXQnO1xuICBpbXBvcnQgeyBnZXRFcnJvck1lc3NhZ2UsIGdldEZpZWxkSGFzRXJyb3IsIGhhbmRsZUZpZWxkVmFsaWRhdGlvbiB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24tZGVwcmVjYXRlZCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBGb3JtVmFsdWVUcmFuc2Zvcm1lciB9IGZyb20gJ0AvdHlwZXMvRm9ybURlcHJlY2F0ZWQnO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgdHlwZSB7IFRleHRJbnB1dFR5cGUgfSBmcm9tICdAL3R5cGVzL1RleHRJbnB1dCc7XG4gIGltcG9ydCB0eXBlIHsgVmFsaWRhdGlvbkVycm9yLCBWYWxpZGF0b3IgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb25EZXByZWNhdGVkJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGF1dG9jb21wbGV0ZT86IGJvb2xlYW47XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGVycm9yPzogVmFsaWRhdGlvbkVycm9yO1xuICAgIGhhc0NsZWFyPzogYm9vbGVhbjtcbiAgICBpY29uTGVhZGluZz86IEljb247XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIG1heGxlbmd0aD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBtaW5sZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHByZWZpeD86IHN0cmluZztcbiAgICByZXF1aXJlZD86IGJvb2xlYW47XG4gICAgc3VmZml4Pzogc3RyaW5nO1xuICAgIHN1cHBvcnRpbmdUZXh0Pzogc3RyaW5nO1xuICAgIHRyYW5zZm9ybVZhbHVlPzogRm9ybVZhbHVlVHJhbnNmb3JtZXI7XG4gICAgdHlwZT86IFRleHRJbnB1dFR5cGU7XG4gICAgdmFsaWRhdG9ycz86IFZhbGlkYXRvcltdO1xuICAgIHZhbHVlPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgYXV0b2NvbXBsZXRlOiBmYWxzZSxcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZXJyb3I6IGZhbHNlLFxuICAgIGhhc0NsZWFyOiBmYWxzZSxcbiAgICBpY29uTGVhZGluZzogdW5kZWZpbmVkLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG1heGxlbmd0aDogdW5kZWZpbmVkLFxuICAgIG1pbmxlbmd0aDogdW5kZWZpbmVkLFxuICAgIHByZWZpeDogdW5kZWZpbmVkLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBzdWZmaXg6IHVuZGVmaW5lZCxcbiAgICBzdXBwb3J0aW5nVGV4dDogdW5kZWZpbmVkLFxuICAgIHRyYW5zZm9ybVZhbHVlOiB1bmRlZmluZWQsXG4gICAgdHlwZTogVEVYVF9JTlBVVF9UWVBFLlRFWFQsXG4gICAgdmFsaWRhdG9yczogdW5kZWZpbmVkLFxuICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IGVycm9yID0gcmVmKHByb3BzLmVycm9yKTtcbiAgY29uc3QgaGFzRm9jdXMgPSByZWYoZmFsc2UpO1xuICBjb25zdCBpbnB1dCA9IHJlZjxIVE1MSW5wdXRFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHNob3dQYXNzd29yZCA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IHZhbHVlID0gcmVmKHByb3BzLnZhbHVlKTtcblxuICBjb25zdCBlcnJvck1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiBnZXRFcnJvck1lc3NhZ2UocHJvcHMuZXJyb3IsIGVycm9yLnZhbHVlKSk7XG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkICYmIHByb3BzLmxhYmVsID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3QgaGFzQ2xlYXIgPSBjb21wdXRlZCgoKSA9PiBwcm9wcy5oYXNDbGVhciAmJiB2YWx1ZS52YWx1ZSk7XG4gIGNvbnN0IGhhc0Vycm9yID0gY29tcHV0ZWQoXG4gICAgKCkgPT4gKHByb3BzLnJlcXVpcmVkICYmIHZhbHVlLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgIXZhbHVlLnZhbHVlKSB8fCBnZXRGaWVsZEhhc0Vycm9yKGVycm9yLnZhbHVlLCBwcm9wcy5lcnJvcilcbiAgKTtcbiAgY29uc3QgaGFzTWluaWxhYmVsID0gY29tcHV0ZWQoKCkgPT4gaGFzRm9jdXMudmFsdWUgfHwgIWlzRW1wdHkudmFsdWUpO1xuICBjb25zdCBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4gdmFsdWUudmFsdWUgPT09ICcnIHx8IHZhbHVlLnZhbHVlID09PSB1bmRlZmluZWQpO1xuICBjb25zdCBpbnB1dFR5cGUgPSBjb21wdXRlZCgoKSA9PlxuICAgIHByb3BzLnR5cGUgPT09IFRFWFRfSU5QVVRfVFlQRS5QQVNTV09SRCAmJiBzaG93UGFzc3dvcmQudmFsdWUgPT09IHRydWUgPyBURVhUX0lOUFVUX1RZUEUuVEVYVCA6IHByb3BzLnR5cGVcbiAgKTtcblxuICBjb25zdCBoYW5kbGVDbGVhciA9ICgpID0+IHtcbiAgICB2YWx1ZS52YWx1ZSA9ICcnO1xuICAgIGlucHV0LnZhbHVlPy5mb2N1cygpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c091dCA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgaWYgKCF2YWx1ZS52YWx1ZSkge1xuICAgICAgdmFsdWUudmFsdWUgPSAnJztcbiAgICB9XG5cbiAgICBoYW5kbGVWYWxpZGF0aW9uKCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlSW5wdXQgPSAoKSA9PiB7XG4gICAgaWYgKHByb3BzLnRyYW5zZm9ybVZhbHVlKSB7XG4gICAgICBjb25zdCBkaWdpdHMgPSB2YWx1ZS52YWx1ZT8ubWF0Y2goL1xcZC9nKT8uam9pbignJykgfHwgdW5kZWZpbmVkO1xuXG4gICAgICB2YWx1ZS52YWx1ZSA9IGRpZ2l0cyA/IHByb3BzLnRyYW5zZm9ybVZhbHVlKGRpZ2l0cykgOiAnJztcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlVmFsaWRhdGlvbiA9ICgpID0+IHtcbiAgICBoYW5kbGVGaWVsZFZhbGlkYXRpb24oe1xuICAgICAgZXJyb3IsXG4gICAgICBlcnJvckZyb21Qcm9wczogcHJvcHMuZXJyb3IsXG4gICAgICBtYXhsZW5ndGg6IHByb3BzLm1heGxlbmd0aCxcbiAgICAgIG1pbmxlbmd0aDogcHJvcHMubWlubGVuZ3RoLFxuICAgICAgcmVxdWlyZWQ6IHByb3BzLnJlcXVpcmVkLFxuICAgICAgdmFsaWRhdG9yczogcHJvcHMudmFsaWRhdG9ycyxcbiAgICAgIHZhbHVlLFxuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZVZhbHVlID0gKG5ld1ZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICB2YWx1ZS52YWx1ZSA9IG5ld1ZhbHVlO1xuICB9O1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLnZhbHVlLFxuICAgIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUgfHwgbmV3VmFsdWUgIT09IHZhbHVlLnZhbHVlKSB7XG4gICAgICAgIHZhbHVlLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB9XG4gICAgfVxuICApO1xuXG4gIGRlZmluZUV4cG9zZSh7XG4gICAgZXJyb3IsXG4gICAgcmVxdWlyZWQ6IHByb3BzLnJlcXVpcmVkLFxuICAgIHVwZGF0ZVZhbHVlLFxuICAgIHZhbHVlLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC10ZXh0JyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgZGlzYWJsZWQgJiYgJ2Rpc2FibGVkJyxcbiAgICAgIGhhc0Vycm9yICYmICdlcnJvcicsXG4gICAgXVwiXG4gID5cbiAgICA8bGFiZWxcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dC1maWVsZCcsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBoYXNDbGVhciA/IFtDU1MuUEFERElORy5SSUdIVC5IQUxGLCBDU1MuUEFERElORy5MRUZULk9ORV0gOiBbQ1NTLlBBRERJTkcuWC5PTkVdLFxuICAgICAgICBDU1MuUEFERElORy5ZLkhBTEYsXG4gICAgICAgIGRpc2FibGVkID8gQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCA6IENTUy5DVVJTT1IuVEVYVCxcbiAgICAgIF1cIlxuICAgICAgOmZvcj1cImlucHV0SWRcIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgIDppY29uPVwiaWNvbkxlYWRpbmdcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwiaWNvbkxlYWRpbmdcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuV0lEVEguRlVMTF1cIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLWlucHV0LXRleHQtcHJlZml4JyxcbiAgICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICAgICAgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/ICcnIDogJ29mZnNldCcsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgdi1pZj1cInByZWZpeFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBwcmVmaXggfX1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLldJRFRILkZVTExdXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgICAndGlkZS1pbnB1dC10ZXh0LWxhYmVsJyxcbiAgICAgICAgICAgICAgaGFzTWluaWxhYmVsID8gWydtaW5pbGFiZWwnLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzNdIDogQ1NTLkZPTlQuUk9MRS5MQUJFTF8xLFxuICAgICAgICAgICAgICAhaGFzRXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgICAgICBDU1MuQ1VSU09SLlRFWFQsXG4gICAgICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgICAgICBdXCJcbiAgICAgICAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgZm9ybWF0dGVkTGFiZWwgfX1cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgOmF1dG9jb21wbGV0ZT1cImF1dG9jb21wbGV0ZSA/ICdvbicgOiAnb2ZmJ1wiXG4gICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIGRpc2FibGVkICYmIENTUy5DVVJTT1IuTk9UX0FMTE9XRUQsIENTUy5GT05ULlJPTEUuQk9EWV8xXVwiXG4gICAgICAgICAgICA6ZGlzYWJsZWQ9XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICA6bWF4bGVuZ3RoPVwibWF4bGVuZ3RoXCJcbiAgICAgICAgICAgIDptaW5sZW5ndGg9XCJtaW5sZW5ndGhcIlxuICAgICAgICAgICAgOm5hbWU9XCJuYW1lXCJcbiAgICAgICAgICAgIHJlZj1cImlucHV0XCJcbiAgICAgICAgICAgIDpyZXF1aXJlZD1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgIDp0eXBlPVwiaW5wdXRUeXBlXCJcbiAgICAgICAgICAgIEBjaGFuZ2U9XCJoYW5kbGVWYWxpZGF0aW9uXCJcbiAgICAgICAgICAgIEBmb2N1cz1cImhhbmRsZUZvY3VzXCJcbiAgICAgICAgICAgIEBmb2N1c291dD1cImhhbmRsZUZvY3VzT3V0XCJcbiAgICAgICAgICAgIEBpbnB1dD1cImhhbmRsZUlucHV0XCJcbiAgICAgICAgICAgIDppZD1cImlucHV0SWRcIlxuICAgICAgICAgICAgdi1tb2RlbD1cInZhbHVlXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dC1zdWZmaXgnLFxuICAgICAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgICAgICAhaGFzRXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgICAgaGFzTWluaWxhYmVsID8gJycgOiAnb2Zmc2V0JyxcbiAgICAgICAgICBdXCJcbiAgICAgICAgICB2LWlmPVwic3VmZml4XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHN1ZmZpeCB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgIEBjbGljaz1cImhhbmRsZUNsZWFyXCJcbiAgICAgICAgdi1pZj1cImhhc0NsZWFyICYmIHR5cGUgIT09IFRFWFRfSU5QVVRfVFlQRS5QQVNTV09SRFwiXG4gICAgICA+XG4gICAgICAgIDxUaWRlSWNvblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuTUFSR0lOLkZVTEwuSEFMRl1cIlxuICAgICAgICAgIDppY29uPVwiSUNPTi5DTE9TRVwiXG4gICAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgLz5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgIEBjbGljaz1cInNob3dQYXNzd29yZCA9ICFzaG93UGFzc3dvcmRcIlxuICAgICAgICB2LWlmPVwidHlwZSA9PT0gVEVYVF9JTlBVVF9UWVBFLlBBU1NXT1JEXCJcbiAgICAgID5cbiAgICAgICAgPFRpZGVJY29uXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5NQVJHSU4uRlVMTC5IQUxGXVwiXG4gICAgICAgICAgOmljb249XCJJQ09OLlZJU0lCSUxJVFlcIlxuICAgICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIC8+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2xhYmVsPlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUl1cIlxuICAgICAgdi1pZj1cInN1cHBvcnRpbmdUZXh0IHx8IGhhc0Vycm9yXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW11cIlxuICAgICAgICA6aWNvbj1cIklDT04uRVJST1JcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwiaGFzRXJyb3JcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXVwiPlxuICAgICAgICB7eyBoYXNFcnJvciA/IGVycm9yTWVzc2FnZSA6IHN1cHBvcnRpbmdUZXh0IH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1pbnB1dC10ZXh0LWxhYmVsIHtcbiAgICBoZWlnaHQ6IDEuMTg3NXJlbTtcbiAgICB0cmFuc2l0aW9uOiBmb250LXNpemUgdmFyKC0tdGlkZS1hbmltYXRlKSwgdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LWxhYmVsOm5vdCgubWluaWxhYmVsKSxcbiAgLnRpZGUtaW5wdXQtdGV4dC1wcmVmaXg6bm90KC5vZmZzZXQpLFxuICAudGlkZS1pbnB1dC10ZXh0LXN1ZmZpeDpub3QoLm9mZnNldCkge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIGNhbGMoOSAvIDE2ICogMXJlbSkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC1wcmVmaXgsXG4gIC50aWRlLWlucHV0LXRleHQtc3VmZml4IHtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IHZhcigtLXRpZGUtZGlzYWJsZWQpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5lcnJvciB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItcHJpbWFyeSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmVycm9yIC50aWRlLWlucHV0LXRleHQtZmllbGQge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXN1cmZhY2UpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5lcnJvcjpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtdGV4dC1maWVsZCB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dDpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtdGV4dC1maWVsZCB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTIpO1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS1ib3JkZXItaGlnaCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0IGlucHV0IHtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC1maWVsZCB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTEpO1xuICAgIG91dGxpbmU6IHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgc29saWQgdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiBjYWxjKHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgKiAtMSk7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS1mb3JlZ3JvdW5kKTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYsIHdhdGNoLCB3YXRjaEVmZmVjdCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJbnB1dFN1cHBvcnRpbmdUZXh0IGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSW5wdXRTdXBwb3J0aW5nVGV4dC52dWUnO1xuICBpbXBvcnQgeyB1c2VGb3JtQ29udGV4dCB9IGZyb20gJ0AvY29tcG9zYWJsZXMvdXNlVGlkZUZvcm0nO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IEVSUk9SX0RJU1BMQVkgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuICBpbXBvcnQgeyBWQUxJREFUSU9OX1JFU1VMVCwgZ2V0RmllbGRWYWxpZGF0aW9uUmVzdWx0IH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbic7XG5cbiAgaW1wb3J0IHR5cGUgeyBFcnJvckRpc3BsYXksIFZhbGlkYXRpb25SZXN1bHQsIFZhbGlkYXRvciB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBlcnJvcj86IHN0cmluZztcbiAgICBlcnJvckRpc3BsYXk/OiBFcnJvckRpc3BsYXk7XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBsYWJlbD86IHN0cmluZztcbiAgICBtYXhsZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgbWlubGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICAgIHJvd3M/OiBudW1iZXI7XG4gICAgc3VwcG9ydGluZ1RleHQ/OiBzdHJpbmc7XG4gICAgdmFsaWRhdG9ycz86IFZhbGlkYXRvcltdO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZXJyb3I6ICcnLFxuICAgIGVycm9yRGlzcGxheTogRVJST1JfRElTUExBWS5MQVpZLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG1heGxlbmd0aDogdW5kZWZpbmVkLFxuICAgIG1pbmxlbmd0aDogdW5kZWZpbmVkLFxuICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgcm93czogOCxcbiAgICBzdXBwb3J0aW5nVGV4dDogdW5kZWZpbmVkLFxuICAgIHZhbGlkYXRvcnM6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgdHlwZSBFbWl0cyA9IHtcbiAgICAoZXZlbnQ6ICd2YWxpZCcsIGlzVmFsaWQ6IGJvb2xlYW4pOiB2b2lkO1xuICB9O1xuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8RW1pdHM+KCk7XG5cbiAgY29uc3QgbW9kZWxWYWx1ZSA9IGRlZmluZU1vZGVsPHN0cmluZz4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICBjb25zdCBmb3JtQ29udGV4dCA9IHVzZUZvcm1Db250ZXh0KCk7XG5cbiAgY29uc3QgZXJyb3JSZWYgPSByZWY8VmFsaWRhdGlvblJlc3VsdD4oVkFMSURBVElPTl9SRVNVTFQuTk9fRVJST1IpO1xuICBjb25zdCBoYXNGb2N1cyA9IHJlZjxib29sZWFuPihmYWxzZSk7XG4gIGNvbnN0IGlzVmFsaWRhdGluZyA9IHJlZjxib29sZWFuPihmYWxzZSk7XG4gIGNvbnN0IHRleHRhcmVhRWxlbWVudCA9IHJlZjxIVE1MVGV4dEFyZWFFbGVtZW50IHwgbnVsbD4obnVsbCk7XG5cbiAgY29uc3QgZm9ybWF0dGVkTGFiZWwgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgPyBgJHtwcm9wcy5sYWJlbH0gKmAgOiBwcm9wcy5sYWJlbCkpO1xuICBjb25zdCBzaG93RXJyb3IgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKGhhc0Vycm9yRnJvbVByb3AudmFsdWUpIHJldHVybiB0cnVlO1xuICAgIGlmICghaXNWYWxpZGF0aW5nLnZhbHVlKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuICFlcnJvclJlZi52YWx1ZS52YWxpZDtcbiAgfSk7XG4gIGNvbnN0IGhhc0Vycm9yRnJvbVByb3AgPSBjb21wdXRlZCgoKSA9PiBwcm9wcy5lcnJvciAhPT0gJycpO1xuICBjb25zdCBoYXNNaW5pbGFiZWwgPSBjb21wdXRlZCgoKSA9PiBoYXNGb2N1cy52YWx1ZSB8fCAhaXNFbXB0eS52YWx1ZSk7XG4gIGNvbnN0IGlzRW1wdHkgPSBjb21wdXRlZCgoKSA9PiBtb2RlbFZhbHVlLnZhbHVlID09PSAnJyk7XG4gIGNvbnN0IHN1cHBvcnRpbmdUZXh0TWVzc2FnZSA9IGNvbXB1dGVkKCgpID0+IChzaG93RXJyb3IudmFsdWUgJiYgZXJyb3JSZWYudmFsdWUubWVzc2FnZSkgfHwgcHJvcHMuc3VwcG9ydGluZ1RleHQpO1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gdHJ1ZTtcbiAgICBpZiAocHJvcHMuZXJyb3JEaXNwbGF5ID09PSBFUlJPUl9ESVNQTEFZLkVBR0VSKSBpc1ZhbGlkYXRpbmcudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzT3V0ID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gZmFsc2U7XG4gICAgaWYgKHByb3BzLmVycm9yRGlzcGxheSA9PT0gRVJST1JfRElTUExBWS5MQVpZKSBpc1ZhbGlkYXRpbmcudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZpZWxkQ2xpY2sgPSAoKSA9PiB7XG4gICAgdGV4dGFyZWFFbGVtZW50LnZhbHVlPy5mb2N1cygpO1xuICB9O1xuXG4gIGNvbnN0IHByZXZlbnRUZXh0YXJlYUZvY3VzTG9zc09uTW91c2Vkb3duID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICBpZiAoIWhhc0ZvY3VzLnZhbHVlKSByZXR1cm47XG4gICAgaWYgKGUudGFyZ2V0ICE9PSB0ZXh0YXJlYUVsZW1lbnQudmFsdWUpIGUucHJldmVudERlZmF1bHQoKTtcbiAgfTtcblxuICB3YXRjaEVmZmVjdCgoKSA9PiB7XG4gICAgZXJyb3JSZWYudmFsdWUgPSBnZXRGaWVsZFZhbGlkYXRpb25SZXN1bHQoe1xuICAgICAgZXJyb3JGcm9tUHJvcHM6IHByb3BzLmVycm9yLFxuICAgICAgbWF4bGVuZ3RoOiBwcm9wcy5tYXhsZW5ndGgsXG4gICAgICBtaW5sZW5ndGg6IHByb3BzLm1pbmxlbmd0aCxcbiAgICAgIHJlcXVpcmVkOiBwcm9wcy5yZXF1aXJlZCxcbiAgICAgIHZhbGlkYXRvcnM6IHByb3BzLnZhbGlkYXRvcnMsXG4gICAgICB2YWx1ZTogbW9kZWxWYWx1ZSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gZm9ybUNvbnRleHQ/LmZvcmNlU2hvd0Vycm9ycy52YWx1ZSxcbiAgICAobmV3VmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSkgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcblxuICB3YXRjaChcbiAgICBlcnJvclJlZixcbiAgICAoKSA9PiB7XG4gICAgICBlbWl0KCd2YWxpZCcsIGVycm9yUmVmLnZhbHVlLnZhbGlkKTtcbiAgICB9LFxuICAgIHsgZGVlcDogdHJ1ZSwgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbJ3RpZGUtaW5wdXQtdGV4dGFyZWEnLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuR0FQLlFVQVJURVIsIHNob3dFcnJvciAmJiAnZXJyb3InXVwiXG4gID5cbiAgICA8bGFiZWxcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQnLFxuICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgICAgQ1NTLlBBRERJTkcuTEVGVC5PTkUsXG4gICAgICAgIENTUy5QQURESU5HLlRPUC5IQUxGLFxuICAgICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBDU1MuQ1VSU09SLlRFWFQsXG4gICAgICBdXCJcbiAgICAgIDpmb3I9XCJpbnB1dElkXCJcbiAgICAgIEBjbGljaz1cImhhbmRsZUZpZWxkQ2xpY2tcIlxuICAgICAgQG1vdXNlZG93bj1cInByZXZlbnRUZXh0YXJlYUZvY3VzTG9zc09uTW91c2Vkb3duXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1pbnB1dC10ZXh0YXJlYS1sYWJlbCcsXG4gICAgICAgICAgaGFzTWluaWxhYmVsID8gWydtaW5pbGFiZWwnLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzNdIDogQ1NTLkZPTlQuUk9MRS5MQUJFTF8xLFxuICAgICAgICAgICFzaG93RXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgIF1cIlxuICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgPlxuICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDx0ZXh0YXJlYVxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuQkxPQ0ssIENTUy5XSURUSC5GVUxMLCBDU1MuRk9OVC5ST0xFLkJPRFlfMV1cIlxuICAgICAgICA6bWF4bGVuZ3RoPVwibWF4bGVuZ3RoXCJcbiAgICAgICAgOm1pbmxlbmd0aD1cIm1pbmxlbmd0aFwiXG4gICAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICAgIHJlZj1cInRleHRhcmVhRWxlbWVudFwiXG4gICAgICAgIDpyZXF1aXJlZD1cInJlcXVpcmVkXCJcbiAgICAgICAgOnJvd3M9XCJyb3dzXCJcbiAgICAgICAgQGZvY3VzPVwiaGFuZGxlRm9jdXNcIlxuICAgICAgICBAZm9jdXNvdXQ9XCJoYW5kbGVGb2N1c091dFwiXG4gICAgICAgIDppZD1cImlucHV0SWRcIlxuICAgICAgICB2LW1vZGVsPVwibW9kZWxWYWx1ZVwiXG4gICAgICAvPlxuICAgIDwvbGFiZWw+XG5cbiAgICA8VGlkZUlucHV0U3VwcG9ydGluZ1RleHRcbiAgICAgIDppcy1lcnJvcj1cInNob3dFcnJvclwiXG4gICAgICA6bWVzc2FnZT1cInN1cHBvcnRpbmdUZXh0TWVzc2FnZVwiXG4gICAgICB2LWlmPVwic3VwcG9ydGluZ1RleHRNZXNzYWdlXCJcbiAgICAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIHRleHRhcmVhIHtcbiAgICByZXNpemU6IHZlcnRpY2FsO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEtbGFiZWwge1xuICAgIGhlaWdodDogMS4xODc1cmVtO1xuICAgIHRyYW5zaXRpb246IGZvbnQtc2l6ZSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1lcnJvci1wcmltYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWE6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMik7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhIHRleHRhcmVhIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0xKTtcbiAgICBvdXRsaW5lOiB2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpIHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBvdXRsaW5lLW9mZnNldDogY2FsYyh2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpICogLTEpO1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtZm9yZWdyb3VuZCk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBUaWRlSW5wdXRUZXh0YXJlYS52dWVgIGltcG9ydGVkIGZyb20gJ3RpZGUtZGVzaWduLXN5c3RlbScgbnBtIHBhY2thZ2UgaW5zdGVhZC5cbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBnZXRFcnJvck1lc3NhZ2UsIGdldEZpZWxkSGFzRXJyb3IsIGhhbmRsZUZpZWxkVmFsaWRhdGlvbiB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24tZGVwcmVjYXRlZCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb25EZXByZWNhdGVkJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGVycm9yPzogVmFsaWRhdGlvbkVycm9yO1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgbWF4bGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIG1pbmxlbmd0aD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgICByb3dzPzogbnVtYmVyO1xuICAgIHN1cHBvcnRpbmdUZXh0Pzogc3RyaW5nO1xuICAgIHZhbHVlPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZXJyb3I6IGZhbHNlLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG1heGxlbmd0aDogdW5kZWZpbmVkLFxuICAgIG1pbmxlbmd0aDogdW5kZWZpbmVkLFxuICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgcm93czogOCxcbiAgICBzdXBwb3J0aW5nVGV4dDogdW5kZWZpbmVkLFxuICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IGVycm9yID0gcmVmKHByb3BzLmVycm9yKTtcbiAgY29uc3QgaGFzRm9jdXMgPSByZWYoZmFsc2UpO1xuICBjb25zdCBpbnB1dCA9IHJlZjxIVE1MSW5wdXRFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHZhbHVlID0gcmVmKHByb3BzLnZhbHVlKTtcblxuICBjb25zdCBlcnJvck1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiBnZXRFcnJvck1lc3NhZ2UocHJvcHMuZXJyb3IsIGVycm9yLnZhbHVlKSk7XG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3QgaGFzRXJyb3IgPSBjb21wdXRlZChcbiAgICAoKSA9PiAocHJvcHMucmVxdWlyZWQgJiYgdmFsdWUudmFsdWUgIT09IHVuZGVmaW5lZCAmJiAhdmFsdWUudmFsdWUpIHx8IGdldEZpZWxkSGFzRXJyb3IoZXJyb3IudmFsdWUsIHByb3BzLmVycm9yKVxuICApO1xuICBjb25zdCBoYXNNaW5pbGFiZWwgPSBjb21wdXRlZCgoKSA9PiBoYXNGb2N1cy52YWx1ZSB8fCAhaXNFbXB0eS52YWx1ZSk7XG4gIGNvbnN0IGlzRW1wdHkgPSBjb21wdXRlZCgoKSA9PiB2YWx1ZS52YWx1ZSA9PT0gJycgfHwgdmFsdWUudmFsdWUgPT09IHVuZGVmaW5lZCk7XG5cbiAgY29uc3QgaGFuZGxlRm9jdXMgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzT3V0ID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gZmFsc2U7XG5cbiAgICBpZiAoIXZhbHVlLnZhbHVlKSB7XG4gICAgICB2YWx1ZS52YWx1ZSA9ICcnO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVWYWxpZGF0aW9uID0gKCkgPT4ge1xuICAgIHJldHVybiBoYW5kbGVGaWVsZFZhbGlkYXRpb24oe1xuICAgICAgZXJyb3IsXG4gICAgICBlcnJvckZyb21Qcm9wczogcHJvcHMuZXJyb3IsXG4gICAgICBtYXhsZW5ndGg6IHByb3BzLm1heGxlbmd0aCxcbiAgICAgIG1pbmxlbmd0aDogcHJvcHMubWlubGVuZ3RoLFxuICAgICAgcmVxdWlyZWQ6IHByb3BzLnJlcXVpcmVkLFxuICAgICAgdmFsdWUsXG4gICAgfSk7XG4gIH07XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMudmFsdWUsXG4gICAgKG5ld1ZhbHVlLCBvbGRWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlICE9PSBvbGRWYWx1ZSB8fCBuZXdWYWx1ZSAhPT0gdmFsdWUudmFsdWUpIHtcbiAgICAgICAgdmFsdWUudmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICk7XG5cbiAgZGVmaW5lRXhwb3NlKHtcbiAgICBlcnJvcixcbiAgICByZXF1aXJlZDogcHJvcHMucmVxdWlyZWQsXG4gICAgdmFsdWUsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIlsndGlkZS1pbnB1dC10ZXh0YXJlYScsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5HQVAuUVVBUlRFUiwgaGFzRXJyb3IgJiYgJ2Vycm9yJ11cIlxuICA+XG4gICAgPGxhYmVsXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkJyxcbiAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgIENTUy5QQURESU5HLkxFRlQuT05FLFxuICAgICAgICBDU1MuUEFERElORy5UT1AuSEFMRixcbiAgICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgQ1NTLkNVUlNPUi5URVhULFxuICAgICAgXVwiXG4gICAgICA6Zm9yPVwiaW5wdXRJZFwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dGFyZWEtbGFiZWwnLFxuICAgICAgICAgIGhhc01pbmlsYWJlbCA/IFsnbWluaWxhYmVsJywgQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXSA6IENTUy5GT05ULlJPTEUuTEFCRUxfMSxcbiAgICAgICAgICAhaGFzRXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgIF1cIlxuICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgPlxuICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDx0ZXh0YXJlYVxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuQkxPQ0ssIENTUy5XSURUSC5GVUxMLCBDU1MuRk9OVC5ST0xFLkJPRFlfMV1cIlxuICAgICAgICA6bWF4bGVuZ3RoPVwibWF4bGVuZ3RoXCJcbiAgICAgICAgOm1pbmxlbmd0aD1cIm1pbmxlbmd0aFwiXG4gICAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICAgIHJlZj1cImlucHV0XCJcbiAgICAgICAgOnJlcXVpcmVkPVwicmVxdWlyZWRcIlxuICAgICAgICA6cm93cz1cInJvd3NcIlxuICAgICAgICBAY2hhbmdlPVwiaGFuZGxlVmFsaWRhdGlvblwiXG4gICAgICAgIEBmb2N1cz1cImhhbmRsZUZvY3VzXCJcbiAgICAgICAgQGZvY3Vzb3V0PVwiaGFuZGxlRm9jdXNPdXRcIlxuICAgICAgICA6aWQ9XCJpbnB1dElkXCJcbiAgICAgICAgdi1tb2RlbD1cInZhbHVlXCJcbiAgICAgIC8+XG4gICAgPC9sYWJlbD5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVJdXCJcbiAgICAgIHYtaWY9XCJzdXBwb3J0aW5nVGV4dCB8fCBoYXNFcnJvclwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDppY29uPVwiSUNPTi5FUlJPUlwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIHYtaWY9XCJoYXNFcnJvclwiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzNdXCI+XG4gICAgICAgIHt7IGhhc0Vycm9yID8gZXJyb3JNZXNzYWdlIDogc3VwcG9ydGluZ1RleHQgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIHRleHRhcmVhIHtcbiAgICByZXNpemU6IHZlcnRpY2FsO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEtbGFiZWwge1xuICAgIGhlaWdodDogMS4xODc1cmVtO1xuICAgIHRyYW5zaXRpb246IGZvbnQtc2l6ZSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1lcnJvci1wcmltYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWE6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMik7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhIHRleHRhcmVhIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0xKTtcbiAgICBvdXRsaW5lOiB2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpIHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBvdXRsaW5lLW9mZnNldDogY2FsYyh2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpICogLTEpO1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtZm9yZWdyb3VuZCk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IEVMRU1FTlQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRBUkdFVCB9IGZyb20gJ0AvdHlwZXMvVGFyZ2V0JztcblxuICBpbXBvcnQgdHlwZSB7IEVsZW1lbnQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgZWxlbWVudD86IEVsZW1lbnQ7XG4gICAgaHJlZj86IHN0cmluZztcbiAgICBpY29uTGVhZGluZz86IEljb247XG4gICAgaWNvblRyYWlsaW5nPzogSWNvbjtcbiAgICBpc05ld1RhYj86IGJvb2xlYW47XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBzdWJ0bGU/OiBib29sZWFuO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZWxlbWVudDogRUxFTUVOVC5MSU5LLFxuICAgIGhyZWY6IHVuZGVmaW5lZCxcbiAgICBpY29uTGVhZGluZzogdW5kZWZpbmVkLFxuICAgIGljb25UcmFpbGluZzogdW5kZWZpbmVkLFxuICAgIGlzTmV3VGFiOiBmYWxzZSxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIHN1YnRsZTogZmFsc2UsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudFxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWxpbmsnLFxuICAgICAgQ1NTLkRJU1BMQVkuSU5MSU5FLFxuICAgICAgQ1NTLkFMSUdOLlguTEVGVCxcbiAgICAgIHN1YnRsZSA/IFtDU1MuVU5ERVJMSU5FLlJFU1QuT0ZGLCBDU1MuVU5ERVJMSU5FLkhPVkVSLk9OXSA6IFtDU1MuVU5ERVJMSU5FLlJFU1QuT04sIENTUy5VTkRFUkxJTkUuSE9WRVIuT0ZGXSxcbiAgICBdXCJcbiAgICA6aHJlZj1cInByb3BzLmhyZWZcIlxuICAgIDp0YXJnZXQ9XCJwcm9wcy5pc05ld1RhYiA/IFRBUkdFVC5CTEFOSyA6IFRBUkdFVC5TRUxGXCJcbiAgICA6aXM9XCJwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgPyBFTEVNRU5ULkxJTksgOiBFTEVNRU5ULkJVVFRPTlwiXG4gID5cbiAgICA8VGlkZUljb25cbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5JTkxJTkVfQkxPQ0ssIENTUy5BTElHTi5ZLk1JRERMRSwgQ1NTLk1BUkdJTi5SSUdIVC5RVUFSVEVSXVwiXG4gICAgICA6aWNvbj1cInByb3BzLmljb25MZWFkaW5nXCJcbiAgICAgIHYtaWY9XCJwcm9wcy5pY29uTGVhZGluZ1wiXG4gICAgLz5cblxuICAgIDxzcGFuIDpjbGFzcz1cIltDU1MuQUxJR04uWS5NSURETEVdXCI+XG4gICAgICB7eyBwcm9wcy5sYWJlbCB9fVxuICAgIDwvc3Bhbj5cblxuICAgIDxUaWRlSWNvblxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLklOTElORV9CTE9DSywgQ1NTLkFMSUdOLlkuTUlERExFLCBDU1MuTUFSR0lOLkxFRlQuUVVBUlRFUl1cIlxuICAgICAgOmljb249XCJwcm9wcy5pY29uVHJhaWxpbmdcIlxuICAgICAgdi1pZj1cInByb3BzLmljb25UcmFpbGluZ1wiXG4gICAgLz5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuIiwiLyogZXNsaW50LWRpc2FibGUgdnVlL3NvcnQta2V5cyAqL1xuXG5leHBvcnQgY29uc3QgQlJFQUtQT0lOVCA9IHtcbiAgU006ICdzbScsXG4gIE1EOiAnbWQnLFxuICBMRzogJ2xnJyxcbiAgWEw6ICd4bCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgTUVESUEgPSB7XG4gIFNNOiA3NjgsXG4gIE1EOiA5OTIsXG4gIExHOiAxMjMyLFxuICBYTDogMTkyMCxcbn07XG5cbmV4cG9ydCB0eXBlIEJyZWFrcG9pbnQgPSAodHlwZW9mIEJSRUFLUE9JTlQpW2tleW9mIHR5cGVvZiBCUkVBS1BPSU5UXTtcbmV4cG9ydCB0eXBlIE1lZGlhID0gKHR5cGVvZiBNRURJQSlba2V5b2YgdHlwZW9mIE1FRElBXTtcbiIsImltcG9ydCB7IG5leHRUaWNrIH0gZnJvbSAndnVlJztcblxuLyoqXG4gKiBEaXJlY3RseSBtb2RpZmllcyB0aGUgYDxib2R5PmAgZWxlbWVudCB0byBhcHBseSBvciByZW1vdmUgc2Nyb2xsIGxvY2suXG4gKiBXaGVuIGBmYWxzZWAgaXMgcHJvdmlkZWQsIGl0IG9ubHkgdW5sb2NrcyBzY3JvbGwgaWYgdGhlcmUgYXJlIG5vIG9wZW5cbiAqIEhUTUwgZGlhbG9nIGVsZW1lbnRzLlxuICovXG5leHBvcnQgY29uc3Qgc2V0U2Nyb2xsTG9jayA9IGFzeW5jIChpc0xvY2tlZDogYm9vbGVhbikgPT4ge1xuICAvLyBDYW5ub3QgYmUgYXBwbGllZCB0byBib2R5IHRhZyBpbiBtYXJrZXRwbGFjZSByZXBvIGR1ZSB0byBkYXRhLWNzcy1zY29wZVxuICAvLyBjb25zdCBCT0RZX0xPQ0tfQ0xBU1MgPSAnYm9keS1zY3JvbGwtbG9jayc7XG5cbiAgY29uc3QgYm9keSA9IGRvY3VtZW50LmJvZHk7XG5cbiAgaWYgKGlzTG9ja2VkKSB7XG4gICAgaWYgKCFib2R5LmRhdGFzZXQuc2Nyb2xsTG9ja1kpIHtcbiAgICAgIGNvbnN0IHNjcm9sbFkgPSB3aW5kb3cuc2Nyb2xsWTtcblxuICAgICAgYm9keS5kYXRhc2V0LnNjcm9sbExvY2tZID0gc2Nyb2xsWS50b1N0cmluZygpO1xuICAgICAgYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zYXZlZC1zY3JvbGwteScsIGAke3Njcm9sbFl9cHhgKTtcbiAgICAgIGJvZHkuc3R5bGUuc2V0UHJvcGVydHkoJ2luc2V0JywgJzAnKTtcbiAgICAgIGJvZHkuc3R5bGUuc2V0UHJvcGVydHkoJ21hcmdpbi10b3AnLCBgY2FsYygwcHggLSB2YXIoLS1zYXZlZC1zY3JvbGwteSwgMHB4KSlgKTtcbiAgICAgIGJvZHkuc3R5bGUuc2V0UHJvcGVydHkoJ292ZXJmbG93LXknLCAnc2Nyb2xsJyk7XG4gICAgICBib2R5LnN0eWxlLnNldFByb3BlcnR5KCdwb3NpdGlvbicsICdmaXhlZCcpO1xuXG4gICAgICAvLyBDYW5ub3QgYmUgYXBwbGllZCB0byBib2R5IHRhZyBpbiBtYXJrZXRwbGFjZSByZXBvIGR1ZSB0byBkYXRhLWNzcy1zY29wZVxuICAgICAgLy8gYm9keS5jbGFzc0xpc3QuYWRkKEJPRFlfTE9DS19DTEFTUyk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGF3YWl0IG5leHRUaWNrKCk7XG4gICAgaWYgKCFkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdkaWFsb2dbb3Blbl0nKSkge1xuICAgICAgY29uc3Qgc2F2ZWRTY3JvbGxZID0gcGFyc2VJbnQoYm9keS5kYXRhc2V0LnNjcm9sbExvY2tZIHx8ICcwJyk7XG5cbiAgICAgIC8vIENhbm5vdCBiZSBhcHBsaWVkIHRvIGJvZHkgdGFnIGluIG1hcmtldHBsYWNlIHJlcG8gZHVlIHRvIGRhdGEtY3NzLXNjb3BlXG4gICAgICAvLyBib2R5LmNsYXNzTGlzdC5yZW1vdmUoQk9EWV9MT0NLX0NMQVNTKTtcblxuICAgICAgYm9keS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnaW5zZXQnKTtcbiAgICAgIGJvZHkuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ21hcmdpblRvcCcpO1xuICAgICAgYm9keS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnb3ZlcmZsb3dZJyk7XG4gICAgICBib2R5LnN0eWxlLnJlbW92ZVByb3BlcnR5KCdwb3NpdGlvbicpO1xuICAgICAgYm9keS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnLS1zYXZlZC1zY3JvbGwteScpO1xuXG4gICAgICB3aW5kb3cuc2Nyb2xsVG8oe1xuICAgICAgICBiZWhhdmlvcjogJ2F1dG8nLFxuICAgICAgICB0b3A6IHNhdmVkU2Nyb2xsWSxcbiAgICAgIH0pO1xuXG4gICAgICBkZWxldGUgYm9keS5kYXRhc2V0LnNjcm9sbExvY2tZO1xuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IFRPUF9MQVlFUl9JRCA9ICd0aWRlLXRvcC1sYXllcic7XG5cbmV4cG9ydCBjb25zdCBpbml0RmF1eFRvcExheWVyID0gKCkgPT4ge1xuICBsZXQgdG9wTGF5ZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChUT1BfTEFZRVJfSUQpO1xuICBpZiAoIXRvcExheWVyKSB7XG4gICAgdG9wTGF5ZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICB0b3BMYXllci5pZCA9IFRPUF9MQVlFUl9JRDtcbiAgICB0b3BMYXllci5zZXRBdHRyaWJ1dGUoJ2RhdGEtY3NzLXNjb3BlJywgJycpO1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodG9wTGF5ZXIpO1xuICB9XG4gIHRvcExheWVyLnN0eWxlLmlzb2xhdGlvbiA9ICdpc29sYXRlJztcbn07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBuZXh0VGljaywgb25Nb3VudGVkLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUJ1dHRvbkljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSc7XG4gIGltcG9ydCB7IEJSRUFLUE9JTlQgfSBmcm9tICdAL3R5cGVzL0JyZWFrcG9pbnQnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBzZXRTY3JvbGxMb2NrIH0gZnJvbSAnQC91dGlsaXRpZXMvdmlld3BvcnQnO1xuXG4gIGltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSAndnVlJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGlzQmFja0J1dHRvbj86IGJvb2xlYW47XG4gICAgaXNEaXNtaXNzaWJsZT86IGJvb2xlYW47XG4gICAgaXNPcGVuOiBib29sZWFuO1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIHdpZHRoPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgaXNCYWNrQnV0dG9uOiBmYWxzZSxcbiAgICBpc0Rpc21pc3NpYmxlOiB0cnVlLFxuICAgIHRpdGxlOiB1bmRlZmluZWQsXG4gICAgd2lkdGg6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgdHlwZSBFbWl0cyA9IHtcbiAgICAoZTogJ2Nsb3NlJyk6IHZvaWQ7XG4gICAgKGU6ICdiYWNrJyk6IHZvaWQ7XG4gIH07XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPEVtaXRzPigpO1xuXG4gIGNvbnN0IG1vZGFsQ29udGVudDogUmVmPEhUTUxEaXZFbGVtZW50IHwgdW5kZWZpbmVkPiA9IHJlZigpO1xuICBjb25zdCBtb2RhbERpYWxvZzogUmVmPEhUTUxEaWFsb2dFbGVtZW50IHwgdW5kZWZpbmVkPiA9IHJlZigpO1xuXG4gIGNvbnN0IHRyaWdnZXJOYXRpdmVEaWFsb2dPcGVuID0gKCkgPT4ge1xuICAgIG1vZGFsRGlhbG9nLnZhbHVlPy5zaG93TW9kYWwoKTtcbiAgfTtcblxuICBjb25zdCB0cmlnZ2VyTmF0aXZlRGlhbG9nQ2xvc2UgPSAoKSA9PiB7XG4gICAgbW9kYWxEaWFsb2cudmFsdWU/LmNsb3NlKCk7XG4gIH07XG5cbiAgY29uc3Qgc2Nyb2xsQ29udGVudFRvVG9wID0gKCkgPT4ge1xuICAgIG5leHRUaWNrKCgpID0+IHtcbiAgICAgIGlmICghbW9kYWxDb250ZW50LnZhbHVlKSByZXR1cm47XG4gICAgICBtb2RhbENvbnRlbnQudmFsdWUuc2Nyb2xsVG9wID0gMDtcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVCYWNrZHJvcENsaWNrID0gKCkgPT4ge1xuICAgIGlmIChwcm9wcy5pc0Rpc21pc3NpYmxlKSBlbWl0KCdjbG9zZScpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUVzY2FwZUtleWRvd24gPSAoZTogRXZlbnQpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKHByb3BzLmlzRGlzbWlzc2libGUpIGVtaXQoJ2Nsb3NlJyk7XG4gIH07XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMuaXNPcGVuLFxuICAgIChuZXdWYWx1ZSkgPT4ge1xuICAgICAgaWYgKCFtb2RhbERpYWxvZy52YWx1ZSkgcmV0dXJuO1xuICAgICAgaWYgKG5ld1ZhbHVlKSB7XG4gICAgICAgIHRyaWdnZXJOYXRpdmVEaWFsb2dPcGVuKCk7XG4gICAgICAgIHNjcm9sbENvbnRlbnRUb1RvcCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ0Nsb3NlKCk7XG4gICAgICB9XG4gICAgICBzZXRTY3JvbGxMb2NrKG5ld1ZhbHVlKTtcbiAgICB9XG4gICk7XG5cbiAgb25Nb3VudGVkKCgpID0+IHtcbiAgICBpZiAocHJvcHMuaXNPcGVuKSB7XG4gICAgICB0cmlnZ2VyTmF0aXZlRGlhbG9nT3BlbigpO1xuICAgIH1cbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGlhbG9nXG4gICAgOmNsYXNzPVwiWyd0aWRlLW1vZGFsJywgQ1NTLkJHLklOSVRJQUwsIENTUy5IRUlHSFQuRlVMTCwgQ1NTLldJRFRILkZVTEwsIENTUy5PVkVSRkxPVy5YWS5ISURERU5dXCJcbiAgICByZWY9XCJtb2RhbERpYWxvZ1wiXG4gICAgOnN0eWxlPVwieyAnLS1tb2RhbC13aWR0aCc6IHByb3BzLndpZHRoIH1cIlxuICAgIEBjbGljay5zZWxmPVwiaGFuZGxlQmFja2Ryb3BDbGlja1wiXG4gICAgQGNsb3NlLnByZXZlbnRcbiAgICBAa2V5ZG93bi5lc2NhcGU9XCJoYW5kbGVFc2NhcGVLZXlkb3duXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtbW9kYWwtYm9keScsXG4gICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLk9ORSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgICAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICAgICAgICBDU1MuUE9TSVRJT05JTkcuQk9UVE9NLFxuICAgICAgICBDU1MuU0hBRE9XLlRPUCxcbiAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgIENTUy5XSURUSC5NQVhfRlVMTCxcbiAgICAgICAgQ1NTLndpdGhCcmVha3BvaW50KFtDU1MuU0hBRE9XLkJPVFRPTV0sIEJSRUFLUE9JTlQuU00pLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPGhlYWRlclxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtbW9kYWwtaGVhZGVyJyxcbiAgICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICAgIENTUy5CT1JERVIuQk9UVE9NLk9ORSxcbiAgICAgICAgICBDU1MuQk9SREVSLkNPTE9SLkxPVyxcbiAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgICBDU1MuSVNPTEFUSU9OLklTT0xBVEUsXG4gICAgICAgICAgQ1NTLlBBRERJTkcuWS5PTkUsXG4gICAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICAgIENTUy5aX0lOREVYLk9ORSxcbiAgICAgICAgXVwiXG4gICAgICA+XG4gICAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX0xFRlRcIlxuICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICAgIEBjbGljaz1cImVtaXQoJ2JhY2snKVwiXG4gICAgICAgICAgdGl0bGU9XCJCYWNrXCJcbiAgICAgICAgICB2LWlmPVwiaXNCYWNrQnV0dG9uXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuSEVBRExJTkVfMl1cIlxuICAgICAgICAgIHYtdGV4dD1cInRpdGxlXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZMRVguR1JPVy5PRkYsIENTUy5GTEVYLlNIUklOSy5PRkYsIENTUy5NQVJHSU4uTEVGVC5BVVRPXVwiXG4gICAgICAgICAgOmljb249XCJJQ09OLkNMT1NFXCJcbiAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgICBAY2xpY2s9XCJlbWl0KCdjbG9zZScpXCJcbiAgICAgICAgICB2LWlmPVwiaXNEaXNtaXNzaWJsZVwiXG4gICAgICAgIC8+XG4gICAgICA8L2hlYWRlcj5cblxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtbW9kYWwtY29udGVudCcsXG4gICAgICAgICAgQ1NTLkRJU1BMQVkuR1JJRCxcbiAgICAgICAgICBDU1MuSVNPTEFUSU9OLklTT0xBVEUsXG4gICAgICAgICAgQ1NTLk9WRVJGTE9XLlguSElEREVOLFxuICAgICAgICAgIENTUy5PVkVSRkxPVy5ZLkFVVE8sXG4gICAgICAgICAgQ1NTLlBBRERJTkcuWS5UV08sXG4gICAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgIF1cIlxuICAgICAgICByZWY9XCJtb2RhbENvbnRlbnRcIlxuICAgICAgPlxuICAgICAgICA8c2xvdCAvPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxmb290ZXJcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLW1vZGFsLWZvb3RlcicsXG4gICAgICAgICAgQ1NTLkFYSVMxLkVORCxcbiAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgIENTUy5HQVAuVFdPLFxuICAgICAgICAgIENTUy5JU09MQVRJT04uSVNPTEFURSxcbiAgICAgICAgICBDU1MuUEFERElORy5ZLk9ORSxcbiAgICAgICAgICBDU1MuU0hBRE9XLlRPUCxcbiAgICAgICAgXVwiXG4gICAgICAgIHYtaWY9XCIkc2xvdHMuZm9vdGVyXCJcbiAgICAgID5cbiAgICAgICAgPHNsb3QgbmFtZT1cImZvb3RlclwiIC8+XG4gICAgICA8L2Zvb3Rlcj5cbiAgICA8L2Rpdj5cbiAgPC9kaWFsb2c+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1tb2RhbCB7XG4gICAgLS1tb2RhbC1wYWRkaW5nLXg6IDIwcHg7XG4gICAgbWF4LXdpZHRoOiB1bnNldDtcbiAgICBtYXgtaGVpZ2h0OiB1bnNldDtcbiAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpZGUtYW5pbWF0ZSkgYWxsb3ctZGlzY3JldGU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICB9XG4gIC50aWRlLW1vZGFsW29wZW5dIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwJSk7XG4gIH1cbiAgLnRpZGUtbW9kYWw6OmJhY2tkcm9wIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGlkZS1hbmltYXRlKSBhbGxvdy1kaXNjcmV0ZTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMHB4KTtcbiAgfVxuICAudGlkZS1tb2RhbFtvcGVuXTo6YmFja2Ryb3Age1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtdHJhbnNwYXJlbnQtNDAwKTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IHZhcigtLXRpZGUtYmctYmx1cik7XG4gIH1cbiAgQHN0YXJ0aW5nLXN0eWxlIHtcbiAgICAudGlkZS1tb2RhbFtvcGVuXSB7XG4gICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICAgIH1cbiAgICAudGlkZS1tb2RhbFtvcGVuXTo6YmFja2Ryb3Age1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBiYWNrZHJvcC1maWx0ZXI6IHZhcigtLXRpZGUtYmctYmx1cik7XG4gICAgfVxuICB9XG4gIC50aWRlLW1vZGFsLWJvZHkge1xuICAgIHdpZHRoOiB2YXIoLS1tb2RhbC13aWR0aCwgNTc2cHgpO1xuICAgIG1heC1oZWlnaHQ6IGNhbGMoMTAwJSAtIHZhcigtLXRpZGUtc3BhY2luZy0yKSk7XG4gIH1cblxuICAudGlkZS1tb2RhbC1oZWFkZXIsXG4gIC50aWRlLW1vZGFsLWZvb3RlciB7XG4gICAgcGFkZGluZy1pbmxpbmU6IHZhcigtLW1vZGFsLXBhZGRpbmcteCk7XG4gIH1cbiAgLnRpZGUtbW9kYWwtY29udGVudCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiB2YXIoLS1tb2RhbC1wYWRkaW5nLXgpIDFmciB2YXIoLS1tb2RhbC1wYWRkaW5nLXgpO1xuICB9XG4gIDp3aGVyZSgudGlkZS1tb2RhbC1jb250ZW50KTpkZWVwKD4gOndoZXJlKCopKSB7XG4gICAgZ3JpZC1jb2x1bW46IDI7XG4gIH1cblxuICBAbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgICAudGlkZS1tb2RhbC1ib2R5IHtcbiAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7XG4gICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcbiAgICB9XG4gIH1cbiAgQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gICAgLnRpZGUtbW9kYWwge1xuICAgICAgLS1tb2RhbC1wYWRkaW5nLXg6IHZhcigtLXRpZGUtc3BhY2luZy0yKTtcbiAgICB9XG4gICAgLnRpZGUtbW9kYWwtYm9keSB7XG4gICAgICBtYXgtaGVpZ2h0OiA4NSU7XG4gICAgICBib3R0b206IGluaXRpYWw7XG4gICAgfVxuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIHJlZiB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVCdXR0b25JY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQnV0dG9uSWNvbi52dWUnO1xuICBpbXBvcnQgVGlkZUJ1dHRvblBhZ2luYXRpb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25QYWdpbmF0aW9uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBQUklPUklUWSB9IGZyb20gJ0AvdHlwZXMvUHJpb3JpdHknO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBwYWdlQ3VycmVudD86IG51bWJlcjtcbiAgICBwYWdlVG90YWw/OiBudW1iZXI7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBwYWdlQ3VycmVudDogMSxcbiAgICBwYWdlVG90YWw6IDEsXG4gIH0pO1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0cyhbJ2NoYW5nZSddKTtcblxuICBjb25zdCBwYWdlQ3VycmVudCA9IHJlZihwcm9wcy5wYWdlQ3VycmVudCk7XG5cbiAgY29uc3QgcGFnaW5hdGlvbkJ1dHRvbnMgPSBjb21wdXRlZCgoKSA9PiBuZXcgQXJyYXkocHJvcHMucGFnZVRvdGFsKS5maWxsKCcnKS5tYXAoKGVtcHR5LCBpbmRleCkgPT4gaW5kZXggKyAxKSk7XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoaW5kZXg6IG51bWJlcikgPT4ge1xuICAgIHBhZ2VDdXJyZW50LnZhbHVlID0gaW5kZXg7XG5cbiAgICBlbWl0KCdjaGFuZ2UnLCBldmVudCwgaW5kZXgpO1xuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPHNlY3Rpb25cbiAgICA6Y2xhc3M9XCJbJ3RpZGUtcGFnaW5hdGlvbicsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMS5DRU5URVIsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUiwgQ1NTLldJRFRILkZVTExdXCJcbiAgPlxuICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgOmRpc2FibGVkPVwicGFnZUN1cnJlbnQgPT09IDFcIlxuICAgICAgOmljb249XCJJQ09OLkNIRVZST05fTEVGVFwiXG4gICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgIEBjbGljaz1cImhhbmRsZUNsaWNrKHBhZ2VDdXJyZW50IC0gMSlcIlxuICAgIC8+XG5cbiAgICA8dWwgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUiwgQ1NTLkxJU1RfQlVMTEVUUy5PRkZdXCI+XG4gICAgICA8bGlcbiAgICAgICAgOmtleT1cInBhZ2luYXRpb25CdXR0b25cIlxuICAgICAgICB2LWZvcj1cInBhZ2luYXRpb25CdXR0b24gaW4gcGFnaW5hdGlvbkJ1dHRvbnNcIlxuICAgICAgPlxuICAgICAgICA8VGlkZUJ1dHRvblBhZ2luYXRpb25cbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJwYWdlQ3VycmVudCA9PT0gcGFnaW5hdGlvbkJ1dHRvblwiXG4gICAgICAgICAgOmxhYmVsPVwicGFnaW5hdGlvbkJ1dHRvblwiXG4gICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgICAgQGNsaWNrPVwiaGFuZGxlQ2xpY2socGFnaW5hdGlvbkJ1dHRvbilcIlxuICAgICAgICAvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuXG4gICAgPFRpZGVCdXR0b25JY29uXG4gICAgICA6ZGlzYWJsZWQ9XCJwYWdlQ3VycmVudCA9PT0gcGFnaW5hdGlvbkJ1dHRvbnNbcGFnaW5hdGlvbkJ1dHRvbnMubGVuZ3RoIC0gMV1cIlxuICAgICAgOmljb249XCJJQ09OLkNIRVZST05fUklHSFRcIlxuICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICBAY2xpY2s9XCJoYW5kbGVDbGljayhwYWdlQ3VycmVudCArIDEpXCJcbiAgICAvPlxuICA8L3NlY3Rpb24+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPjwvc3R5bGU+XG4iLCIvKipcbiAqIEN1c3RvbSBwb3NpdGlvbmluZyByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy92aXJ0dWFsLWVsZW1lbnRzXG4gKi9cblxuY29uc3Qgc2lkZXMgPSBbJ3RvcCcsICdyaWdodCcsICdib3R0b20nLCAnbGVmdCddO1xuY29uc3QgYWxpZ25tZW50cyA9IFsnc3RhcnQnLCAnZW5kJ107XG5jb25zdCBwbGFjZW1lbnRzID0gLyojX19QVVJFX18qL3NpZGVzLnJlZHVjZSgoYWNjLCBzaWRlKSA9PiBhY2MuY29uY2F0KHNpZGUsIHNpZGUgKyBcIi1cIiArIGFsaWdubWVudHNbMF0sIHNpZGUgKyBcIi1cIiArIGFsaWdubWVudHNbMV0pLCBbXSk7XG5jb25zdCBtaW4gPSBNYXRoLm1pbjtcbmNvbnN0IG1heCA9IE1hdGgubWF4O1xuY29uc3Qgcm91bmQgPSBNYXRoLnJvdW5kO1xuY29uc3QgZmxvb3IgPSBNYXRoLmZsb29yO1xuY29uc3QgY3JlYXRlQ29vcmRzID0gdiA9PiAoe1xuICB4OiB2LFxuICB5OiB2XG59KTtcbmNvbnN0IG9wcG9zaXRlU2lkZU1hcCA9IHtcbiAgbGVmdDogJ3JpZ2h0JyxcbiAgcmlnaHQ6ICdsZWZ0JyxcbiAgYm90dG9tOiAndG9wJyxcbiAgdG9wOiAnYm90dG9tJ1xufTtcbmNvbnN0IG9wcG9zaXRlQWxpZ25tZW50TWFwID0ge1xuICBzdGFydDogJ2VuZCcsXG4gIGVuZDogJ3N0YXJ0J1xufTtcbmZ1bmN0aW9uIGNsYW1wKHN0YXJ0LCB2YWx1ZSwgZW5kKSB7XG4gIHJldHVybiBtYXgoc3RhcnQsIG1pbih2YWx1ZSwgZW5kKSk7XG59XG5mdW5jdGlvbiBldmFsdWF0ZSh2YWx1ZSwgcGFyYW0pIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/IHZhbHVlKHBhcmFtKSA6IHZhbHVlO1xufVxuZnVuY3Rpb24gZ2V0U2lkZShwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5zcGxpdCgnLScpWzBdO1xufVxuZnVuY3Rpb24gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnNwbGl0KCctJylbMV07XG59XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZUF4aXMoYXhpcykge1xuICByZXR1cm4gYXhpcyA9PT0gJ3gnID8gJ3knIDogJ3gnO1xufVxuZnVuY3Rpb24gZ2V0QXhpc0xlbmd0aChheGlzKSB7XG4gIHJldHVybiBheGlzID09PSAneScgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG59XG5mdW5jdGlvbiBnZXRTaWRlQXhpcyhwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIFsndG9wJywgJ2JvdHRvbSddLmluY2x1ZGVzKGdldFNpZGUocGxhY2VtZW50KSkgPyAneScgOiAneCc7XG59XG5mdW5jdGlvbiBnZXRBbGlnbm1lbnRBeGlzKHBsYWNlbWVudCkge1xuICByZXR1cm4gZ2V0T3Bwb3NpdGVBeGlzKGdldFNpZGVBeGlzKHBsYWNlbWVudCkpO1xufVxuZnVuY3Rpb24gZ2V0QWxpZ25tZW50U2lkZXMocGxhY2VtZW50LCByZWN0cywgcnRsKSB7XG4gIGlmIChydGwgPT09IHZvaWQgMCkge1xuICAgIHJ0bCA9IGZhbHNlO1xuICB9XG4gIGNvbnN0IGFsaWdubWVudCA9IGdldEFsaWdubWVudChwbGFjZW1lbnQpO1xuICBjb25zdCBhbGlnbm1lbnRBeGlzID0gZ2V0QWxpZ25tZW50QXhpcyhwbGFjZW1lbnQpO1xuICBjb25zdCBsZW5ndGggPSBnZXRBeGlzTGVuZ3RoKGFsaWdubWVudEF4aXMpO1xuICBsZXQgbWFpbkFsaWdubWVudFNpZGUgPSBhbGlnbm1lbnRBeGlzID09PSAneCcgPyBhbGlnbm1lbnQgPT09IChydGwgPyAnZW5kJyA6ICdzdGFydCcpID8gJ3JpZ2h0JyA6ICdsZWZ0JyA6IGFsaWdubWVudCA9PT0gJ3N0YXJ0JyA/ICdib3R0b20nIDogJ3RvcCc7XG4gIGlmIChyZWN0cy5yZWZlcmVuY2VbbGVuZ3RoXSA+IHJlY3RzLmZsb2F0aW5nW2xlbmd0aF0pIHtcbiAgICBtYWluQWxpZ25tZW50U2lkZSA9IGdldE9wcG9zaXRlUGxhY2VtZW50KG1haW5BbGlnbm1lbnRTaWRlKTtcbiAgfVxuICByZXR1cm4gW21haW5BbGlnbm1lbnRTaWRlLCBnZXRPcHBvc2l0ZVBsYWNlbWVudChtYWluQWxpZ25tZW50U2lkZSldO1xufVxuZnVuY3Rpb24gZ2V0RXhwYW5kZWRQbGFjZW1lbnRzKHBsYWNlbWVudCkge1xuICBjb25zdCBvcHBvc2l0ZVBsYWNlbWVudCA9IGdldE9wcG9zaXRlUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gIHJldHVybiBbZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQocGxhY2VtZW50KSwgb3Bwb3NpdGVQbGFjZW1lbnQsIGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KG9wcG9zaXRlUGxhY2VtZW50KV07XG59XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5yZXBsYWNlKC9zdGFydHxlbmQvZywgYWxpZ25tZW50ID0+IG9wcG9zaXRlQWxpZ25tZW50TWFwW2FsaWdubWVudF0pO1xufVxuZnVuY3Rpb24gZ2V0U2lkZUxpc3Qoc2lkZSwgaXNTdGFydCwgcnRsKSB7XG4gIGNvbnN0IGxyID0gWydsZWZ0JywgJ3JpZ2h0J107XG4gIGNvbnN0IHJsID0gWydyaWdodCcsICdsZWZ0J107XG4gIGNvbnN0IHRiID0gWyd0b3AnLCAnYm90dG9tJ107XG4gIGNvbnN0IGJ0ID0gWydib3R0b20nLCAndG9wJ107XG4gIHN3aXRjaCAoc2lkZSkge1xuICAgIGNhc2UgJ3RvcCc6XG4gICAgY2FzZSAnYm90dG9tJzpcbiAgICAgIGlmIChydGwpIHJldHVybiBpc1N0YXJ0ID8gcmwgOiBscjtcbiAgICAgIHJldHVybiBpc1N0YXJ0ID8gbHIgOiBybDtcbiAgICBjYXNlICdsZWZ0JzpcbiAgICBjYXNlICdyaWdodCc6XG4gICAgICByZXR1cm4gaXNTdGFydCA/IHRiIDogYnQ7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBbXTtcbiAgfVxufVxuZnVuY3Rpb24gZ2V0T3Bwb3NpdGVBeGlzUGxhY2VtZW50cyhwbGFjZW1lbnQsIGZsaXBBbGlnbm1lbnQsIGRpcmVjdGlvbiwgcnRsKSB7XG4gIGNvbnN0IGFsaWdubWVudCA9IGdldEFsaWdubWVudChwbGFjZW1lbnQpO1xuICBsZXQgbGlzdCA9IGdldFNpZGVMaXN0KGdldFNpZGUocGxhY2VtZW50KSwgZGlyZWN0aW9uID09PSAnc3RhcnQnLCBydGwpO1xuICBpZiAoYWxpZ25tZW50KSB7XG4gICAgbGlzdCA9IGxpc3QubWFwKHNpZGUgPT4gc2lkZSArIFwiLVwiICsgYWxpZ25tZW50KTtcbiAgICBpZiAoZmxpcEFsaWdubWVudCkge1xuICAgICAgbGlzdCA9IGxpc3QuY29uY2F0KGxpc3QubWFwKGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBsaXN0O1xufVxuZnVuY3Rpb24gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQucmVwbGFjZSgvbGVmdHxyaWdodHxib3R0b218dG9wL2csIHNpZGUgPT4gb3Bwb3NpdGVTaWRlTWFwW3NpZGVdKTtcbn1cbmZ1bmN0aW9uIGV4cGFuZFBhZGRpbmdPYmplY3QocGFkZGluZykge1xuICByZXR1cm4ge1xuICAgIHRvcDogMCxcbiAgICByaWdodDogMCxcbiAgICBib3R0b206IDAsXG4gICAgbGVmdDogMCxcbiAgICAuLi5wYWRkaW5nXG4gIH07XG59XG5mdW5jdGlvbiBnZXRQYWRkaW5nT2JqZWN0KHBhZGRpbmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBwYWRkaW5nICE9PSAnbnVtYmVyJyA/IGV4cGFuZFBhZGRpbmdPYmplY3QocGFkZGluZykgOiB7XG4gICAgdG9wOiBwYWRkaW5nLFxuICAgIHJpZ2h0OiBwYWRkaW5nLFxuICAgIGJvdHRvbTogcGFkZGluZyxcbiAgICBsZWZ0OiBwYWRkaW5nXG4gIH07XG59XG5mdW5jdGlvbiByZWN0VG9DbGllbnRSZWN0KHJlY3QpIHtcbiAgY29uc3Qge1xuICAgIHgsXG4gICAgeSxcbiAgICB3aWR0aCxcbiAgICBoZWlnaHRcbiAgfSA9IHJlY3Q7XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHRvcDogeSxcbiAgICBsZWZ0OiB4LFxuICAgIHJpZ2h0OiB4ICsgd2lkdGgsXG4gICAgYm90dG9tOiB5ICsgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG5leHBvcnQgeyBhbGlnbm1lbnRzLCBjbGFtcCwgY3JlYXRlQ29vcmRzLCBldmFsdWF0ZSwgZXhwYW5kUGFkZGluZ09iamVjdCwgZmxvb3IsIGdldEFsaWdubWVudCwgZ2V0QWxpZ25tZW50QXhpcywgZ2V0QWxpZ25tZW50U2lkZXMsIGdldEF4aXNMZW5ndGgsIGdldEV4cGFuZGVkUGxhY2VtZW50cywgZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQsIGdldE9wcG9zaXRlQXhpcywgZ2V0T3Bwb3NpdGVBeGlzUGxhY2VtZW50cywgZ2V0T3Bwb3NpdGVQbGFjZW1lbnQsIGdldFBhZGRpbmdPYmplY3QsIGdldFNpZGUsIGdldFNpZGVBeGlzLCBtYXgsIG1pbiwgcGxhY2VtZW50cywgcmVjdFRvQ2xpZW50UmVjdCwgcm91bmQsIHNpZGVzIH07XG4iLCJpbXBvcnQgeyBnZXRTaWRlQXhpcywgZ2V0QWxpZ25tZW50QXhpcywgZ2V0QXhpc0xlbmd0aCwgZ2V0U2lkZSwgZ2V0QWxpZ25tZW50LCBldmFsdWF0ZSwgZ2V0UGFkZGluZ09iamVjdCwgcmVjdFRvQ2xpZW50UmVjdCwgbWluLCBjbGFtcCwgcGxhY2VtZW50cywgZ2V0QWxpZ25tZW50U2lkZXMsIGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50LCBnZXRPcHBvc2l0ZVBsYWNlbWVudCwgZ2V0RXhwYW5kZWRQbGFjZW1lbnRzLCBnZXRPcHBvc2l0ZUF4aXNQbGFjZW1lbnRzLCBzaWRlcywgbWF4LCBnZXRPcHBvc2l0ZUF4aXMgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMnO1xuZXhwb3J0IHsgcmVjdFRvQ2xpZW50UmVjdCB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscyc7XG5cbmZ1bmN0aW9uIGNvbXB1dGVDb29yZHNGcm9tUGxhY2VtZW50KF9yZWYsIHBsYWNlbWVudCwgcnRsKSB7XG4gIGxldCB7XG4gICAgcmVmZXJlbmNlLFxuICAgIGZsb2F0aW5nXG4gIH0gPSBfcmVmO1xuICBjb25zdCBzaWRlQXhpcyA9IGdldFNpZGVBeGlzKHBsYWNlbWVudCk7XG4gIGNvbnN0IGFsaWdubWVudEF4aXMgPSBnZXRBbGlnbm1lbnRBeGlzKHBsYWNlbWVudCk7XG4gIGNvbnN0IGFsaWduTGVuZ3RoID0gZ2V0QXhpc0xlbmd0aChhbGlnbm1lbnRBeGlzKTtcbiAgY29uc3Qgc2lkZSA9IGdldFNpZGUocGxhY2VtZW50KTtcbiAgY29uc3QgaXNWZXJ0aWNhbCA9IHNpZGVBeGlzID09PSAneSc7XG4gIGNvbnN0IGNvbW1vblggPSByZWZlcmVuY2UueCArIHJlZmVyZW5jZS53aWR0aCAvIDIgLSBmbG9hdGluZy53aWR0aCAvIDI7XG4gIGNvbnN0IGNvbW1vblkgPSByZWZlcmVuY2UueSArIHJlZmVyZW5jZS5oZWlnaHQgLyAyIC0gZmxvYXRpbmcuaGVpZ2h0IC8gMjtcbiAgY29uc3QgY29tbW9uQWxpZ24gPSByZWZlcmVuY2VbYWxpZ25MZW5ndGhdIC8gMiAtIGZsb2F0aW5nW2FsaWduTGVuZ3RoXSAvIDI7XG4gIGxldCBjb29yZHM7XG4gIHN3aXRjaCAoc2lkZSkge1xuICAgIGNhc2UgJ3RvcCc6XG4gICAgICBjb29yZHMgPSB7XG4gICAgICAgIHg6IGNvbW1vblgsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55IC0gZmxvYXRpbmcuaGVpZ2h0XG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnYm90dG9tJzpcbiAgICAgIGNvb3JkcyA9IHtcbiAgICAgICAgeDogY29tbW9uWCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnkgKyByZWZlcmVuY2UuaGVpZ2h0XG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAncmlnaHQnOlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCArIHJlZmVyZW5jZS53aWR0aCxcbiAgICAgICAgeTogY29tbW9uWVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCAtIGZsb2F0aW5nLndpZHRoLFxuICAgICAgICB5OiBjb21tb25ZXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGNvb3JkcyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLngsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55XG4gICAgICB9O1xuICB9XG4gIHN3aXRjaCAoZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkpIHtcbiAgICBjYXNlICdzdGFydCc6XG4gICAgICBjb29yZHNbYWxpZ25tZW50QXhpc10gLT0gY29tbW9uQWxpZ24gKiAocnRsICYmIGlzVmVydGljYWwgPyAtMSA6IDEpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZW5kJzpcbiAgICAgIGNvb3Jkc1thbGlnbm1lbnRBeGlzXSArPSBjb21tb25BbGlnbiAqIChydGwgJiYgaXNWZXJ0aWNhbCA/IC0xIDogMSk7XG4gICAgICBicmVhaztcbiAgfVxuICByZXR1cm4gY29vcmRzO1xufVxuXG4vKipcbiAqIENvbXB1dGVzIHRoZSBgeGAgYW5kIGB5YCBjb29yZGluYXRlcyB0aGF0IHdpbGwgcGxhY2UgdGhlIGZsb2F0aW5nIGVsZW1lbnRcbiAqIG5leHQgdG8gYSBnaXZlbiByZWZlcmVuY2UgZWxlbWVudC5cbiAqXG4gKiBUaGlzIGV4cG9ydCBkb2VzIG5vdCBoYXZlIGFueSBgcGxhdGZvcm1gIGludGVyZmFjZSBsb2dpYy4gWW91IHdpbGwgbmVlZCB0b1xuICogd3JpdGUgb25lIGZvciB0aGUgcGxhdGZvcm0geW91IGFyZSB1c2luZyBGbG9hdGluZyBVSSB3aXRoLlxuICovXG5jb25zdCBjb21wdXRlUG9zaXRpb24gPSBhc3luYyAocmVmZXJlbmNlLCBmbG9hdGluZywgY29uZmlnKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBwbGFjZW1lbnQgPSAnYm90dG9tJyxcbiAgICBzdHJhdGVneSA9ICdhYnNvbHV0ZScsXG4gICAgbWlkZGxld2FyZSA9IFtdLFxuICAgIHBsYXRmb3JtXG4gIH0gPSBjb25maWc7XG4gIGNvbnN0IHZhbGlkTWlkZGxld2FyZSA9IG1pZGRsZXdhcmUuZmlsdGVyKEJvb2xlYW4pO1xuICBjb25zdCBydGwgPSBhd2FpdCAocGxhdGZvcm0uaXNSVEwgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzUlRMKGZsb2F0aW5nKSk7XG4gIGxldCByZWN0cyA9IGF3YWl0IHBsYXRmb3JtLmdldEVsZW1lbnRSZWN0cyh7XG4gICAgcmVmZXJlbmNlLFxuICAgIGZsb2F0aW5nLFxuICAgIHN0cmF0ZWd5XG4gIH0pO1xuICBsZXQge1xuICAgIHgsXG4gICAgeVxuICB9ID0gY29tcHV0ZUNvb3Jkc0Zyb21QbGFjZW1lbnQocmVjdHMsIHBsYWNlbWVudCwgcnRsKTtcbiAgbGV0IHN0YXRlZnVsUGxhY2VtZW50ID0gcGxhY2VtZW50O1xuICBsZXQgbWlkZGxld2FyZURhdGEgPSB7fTtcbiAgbGV0IHJlc2V0Q291bnQgPSAwO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbGlkTWlkZGxld2FyZS5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHtcbiAgICAgIG5hbWUsXG4gICAgICBmblxuICAgIH0gPSB2YWxpZE1pZGRsZXdhcmVbaV07XG4gICAgY29uc3Qge1xuICAgICAgeDogbmV4dFgsXG4gICAgICB5OiBuZXh0WSxcbiAgICAgIGRhdGEsXG4gICAgICByZXNldFxuICAgIH0gPSBhd2FpdCBmbih7XG4gICAgICB4LFxuICAgICAgeSxcbiAgICAgIGluaXRpYWxQbGFjZW1lbnQ6IHBsYWNlbWVudCxcbiAgICAgIHBsYWNlbWVudDogc3RhdGVmdWxQbGFjZW1lbnQsXG4gICAgICBzdHJhdGVneSxcbiAgICAgIG1pZGRsZXdhcmVEYXRhLFxuICAgICAgcmVjdHMsXG4gICAgICBwbGF0Zm9ybSxcbiAgICAgIGVsZW1lbnRzOiB7XG4gICAgICAgIHJlZmVyZW5jZSxcbiAgICAgICAgZmxvYXRpbmdcbiAgICAgIH1cbiAgICB9KTtcbiAgICB4ID0gbmV4dFggIT0gbnVsbCA/IG5leHRYIDogeDtcbiAgICB5ID0gbmV4dFkgIT0gbnVsbCA/IG5leHRZIDogeTtcbiAgICBtaWRkbGV3YXJlRGF0YSA9IHtcbiAgICAgIC4uLm1pZGRsZXdhcmVEYXRhLFxuICAgICAgW25hbWVdOiB7XG4gICAgICAgIC4uLm1pZGRsZXdhcmVEYXRhW25hbWVdLFxuICAgICAgICAuLi5kYXRhXG4gICAgICB9XG4gICAgfTtcbiAgICBpZiAocmVzZXQgJiYgcmVzZXRDb3VudCA8PSA1MCkge1xuICAgICAgcmVzZXRDb3VudCsrO1xuICAgICAgaWYgKHR5cGVvZiByZXNldCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgaWYgKHJlc2V0LnBsYWNlbWVudCkge1xuICAgICAgICAgIHN0YXRlZnVsUGxhY2VtZW50ID0gcmVzZXQucGxhY2VtZW50O1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXNldC5yZWN0cykge1xuICAgICAgICAgIHJlY3RzID0gcmVzZXQucmVjdHMgPT09IHRydWUgPyBhd2FpdCBwbGF0Zm9ybS5nZXRFbGVtZW50UmVjdHMoe1xuICAgICAgICAgICAgcmVmZXJlbmNlLFxuICAgICAgICAgICAgZmxvYXRpbmcsXG4gICAgICAgICAgICBzdHJhdGVneVxuICAgICAgICAgIH0pIDogcmVzZXQucmVjdHM7XG4gICAgICAgIH1cbiAgICAgICAgKHtcbiAgICAgICAgICB4LFxuICAgICAgICAgIHlcbiAgICAgICAgfSA9IGNvbXB1dGVDb29yZHNGcm9tUGxhY2VtZW50KHJlY3RzLCBzdGF0ZWZ1bFBsYWNlbWVudCwgcnRsKSk7XG4gICAgICB9XG4gICAgICBpID0gLTE7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5LFxuICAgIHBsYWNlbWVudDogc3RhdGVmdWxQbGFjZW1lbnQsXG4gICAgc3RyYXRlZ3ksXG4gICAgbWlkZGxld2FyZURhdGFcbiAgfTtcbn07XG5cbi8qKlxuICogUmVzb2x2ZXMgd2l0aCBhbiBvYmplY3Qgb2Ygb3ZlcmZsb3cgc2lkZSBvZmZzZXRzIHRoYXQgZGV0ZXJtaW5lIGhvdyBtdWNoIHRoZVxuICogZWxlbWVudCBpcyBvdmVyZmxvd2luZyBhIGdpdmVuIGNsaXBwaW5nIGJvdW5kYXJ5IG9uIGVhY2ggc2lkZS5cbiAqIC0gcG9zaXRpdmUgPSBvdmVyZmxvd2luZyB0aGUgYm91bmRhcnkgYnkgdGhhdCBudW1iZXIgb2YgcGl4ZWxzXG4gKiAtIG5lZ2F0aXZlID0gaG93IG1hbnkgcGl4ZWxzIGxlZnQgYmVmb3JlIGl0IHdpbGwgb3ZlcmZsb3dcbiAqIC0gMCA9IGxpZXMgZmx1c2ggd2l0aCB0aGUgYm91bmRhcnlcbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9kZXRlY3RPdmVyZmxvd1xuICovXG5hc3luYyBmdW5jdGlvbiBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgb3B0aW9ucykge1xuICB2YXIgX2F3YWl0JHBsYXRmb3JtJGlzRWxlO1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICB4LFxuICAgIHksXG4gICAgcGxhdGZvcm0sXG4gICAgcmVjdHMsXG4gICAgZWxlbWVudHMsXG4gICAgc3RyYXRlZ3lcbiAgfSA9IHN0YXRlO1xuICBjb25zdCB7XG4gICAgYm91bmRhcnkgPSAnY2xpcHBpbmdBbmNlc3RvcnMnLFxuICAgIHJvb3RCb3VuZGFyeSA9ICd2aWV3cG9ydCcsXG4gICAgZWxlbWVudENvbnRleHQgPSAnZmxvYXRpbmcnLFxuICAgIGFsdEJvdW5kYXJ5ID0gZmFsc2UsXG4gICAgcGFkZGluZyA9IDBcbiAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgY29uc3QgcGFkZGluZ09iamVjdCA9IGdldFBhZGRpbmdPYmplY3QocGFkZGluZyk7XG4gIGNvbnN0IGFsdENvbnRleHQgPSBlbGVtZW50Q29udGV4dCA9PT0gJ2Zsb2F0aW5nJyA/ICdyZWZlcmVuY2UnIDogJ2Zsb2F0aW5nJztcbiAgY29uc3QgZWxlbWVudCA9IGVsZW1lbnRzW2FsdEJvdW5kYXJ5ID8gYWx0Q29udGV4dCA6IGVsZW1lbnRDb250ZXh0XTtcbiAgY29uc3QgY2xpcHBpbmdDbGllbnRSZWN0ID0gcmVjdFRvQ2xpZW50UmVjdChhd2FpdCBwbGF0Zm9ybS5nZXRDbGlwcGluZ1JlY3Qoe1xuICAgIGVsZW1lbnQ6ICgoX2F3YWl0JHBsYXRmb3JtJGlzRWxlID0gYXdhaXQgKHBsYXRmb3JtLmlzRWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNFbGVtZW50KGVsZW1lbnQpKSkgIT0gbnVsbCA/IF9hd2FpdCRwbGF0Zm9ybSRpc0VsZSA6IHRydWUpID8gZWxlbWVudCA6IGVsZW1lbnQuY29udGV4dEVsZW1lbnQgfHwgKGF3YWl0IChwbGF0Zm9ybS5nZXREb2N1bWVudEVsZW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmdldERvY3VtZW50RWxlbWVudChlbGVtZW50cy5mbG9hdGluZykpKSxcbiAgICBib3VuZGFyeSxcbiAgICByb290Qm91bmRhcnksXG4gICAgc3RyYXRlZ3lcbiAgfSkpO1xuICBjb25zdCByZWN0ID0gZWxlbWVudENvbnRleHQgPT09ICdmbG9hdGluZycgPyB7XG4gICAgeCxcbiAgICB5LFxuICAgIHdpZHRoOiByZWN0cy5mbG9hdGluZy53aWR0aCxcbiAgICBoZWlnaHQ6IHJlY3RzLmZsb2F0aW5nLmhlaWdodFxuICB9IDogcmVjdHMucmVmZXJlbmNlO1xuICBjb25zdCBvZmZzZXRQYXJlbnQgPSBhd2FpdCAocGxhdGZvcm0uZ2V0T2Zmc2V0UGFyZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5nZXRPZmZzZXRQYXJlbnQoZWxlbWVudHMuZmxvYXRpbmcpKTtcbiAgY29uc3Qgb2Zmc2V0U2NhbGUgPSAoYXdhaXQgKHBsYXRmb3JtLmlzRWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNFbGVtZW50KG9mZnNldFBhcmVudCkpKSA/IChhd2FpdCAocGxhdGZvcm0uZ2V0U2NhbGUgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmdldFNjYWxlKG9mZnNldFBhcmVudCkpKSB8fCB7XG4gICAgeDogMSxcbiAgICB5OiAxXG4gIH0gOiB7XG4gICAgeDogMSxcbiAgICB5OiAxXG4gIH07XG4gIGNvbnN0IGVsZW1lbnRDbGllbnRSZWN0ID0gcmVjdFRvQ2xpZW50UmVjdChwbGF0Zm9ybS5jb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdCA/IGF3YWl0IHBsYXRmb3JtLmNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0KHtcbiAgICBlbGVtZW50cyxcbiAgICByZWN0LFxuICAgIG9mZnNldFBhcmVudCxcbiAgICBzdHJhdGVneVxuICB9KSA6IHJlY3QpO1xuICByZXR1cm4ge1xuICAgIHRvcDogKGNsaXBwaW5nQ2xpZW50UmVjdC50b3AgLSBlbGVtZW50Q2xpZW50UmVjdC50b3AgKyBwYWRkaW5nT2JqZWN0LnRvcCkgLyBvZmZzZXRTY2FsZS55LFxuICAgIGJvdHRvbTogKGVsZW1lbnRDbGllbnRSZWN0LmJvdHRvbSAtIGNsaXBwaW5nQ2xpZW50UmVjdC5ib3R0b20gKyBwYWRkaW5nT2JqZWN0LmJvdHRvbSkgLyBvZmZzZXRTY2FsZS55LFxuICAgIGxlZnQ6IChjbGlwcGluZ0NsaWVudFJlY3QubGVmdCAtIGVsZW1lbnRDbGllbnRSZWN0LmxlZnQgKyBwYWRkaW5nT2JqZWN0LmxlZnQpIC8gb2Zmc2V0U2NhbGUueCxcbiAgICByaWdodDogKGVsZW1lbnRDbGllbnRSZWN0LnJpZ2h0IC0gY2xpcHBpbmdDbGllbnRSZWN0LnJpZ2h0ICsgcGFkZGluZ09iamVjdC5yaWdodCkgLyBvZmZzZXRTY2FsZS54XG4gIH07XG59XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBwb3NpdGlvbiBhbiBpbm5lciBlbGVtZW50IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IHNvIHRoYXQgaXRcbiAqIGFwcGVhcnMgY2VudGVyZWQgdG8gdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2Fycm93XG4gKi9cbmNvbnN0IGFycm93ID0gb3B0aW9ucyA9PiAoe1xuICBuYW1lOiAnYXJyb3cnLFxuICBvcHRpb25zLFxuICBhc3luYyBmbihzdGF0ZSkge1xuICAgIGNvbnN0IHtcbiAgICAgIHgsXG4gICAgICB5LFxuICAgICAgcGxhY2VtZW50LFxuICAgICAgcmVjdHMsXG4gICAgICBwbGF0Zm9ybSxcbiAgICAgIGVsZW1lbnRzLFxuICAgICAgbWlkZGxld2FyZURhdGFcbiAgICB9ID0gc3RhdGU7XG4gICAgLy8gU2luY2UgYGVsZW1lbnRgIGlzIHJlcXVpcmVkLCB3ZSBkb24ndCBQYXJ0aWFsPD4gdGhlIHR5cGUuXG4gICAgY29uc3Qge1xuICAgICAgZWxlbWVudCxcbiAgICAgIHBhZGRpbmcgPSAwXG4gICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKSB8fCB7fTtcbiAgICBpZiAoZWxlbWVudCA9PSBudWxsKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGNvbnN0IHBhZGRpbmdPYmplY3QgPSBnZXRQYWRkaW5nT2JqZWN0KHBhZGRpbmcpO1xuICAgIGNvbnN0IGNvb3JkcyA9IHtcbiAgICAgIHgsXG4gICAgICB5XG4gICAgfTtcbiAgICBjb25zdCBheGlzID0gZ2V0QWxpZ25tZW50QXhpcyhwbGFjZW1lbnQpO1xuICAgIGNvbnN0IGxlbmd0aCA9IGdldEF4aXNMZW5ndGgoYXhpcyk7XG4gICAgY29uc3QgYXJyb3dEaW1lbnNpb25zID0gYXdhaXQgcGxhdGZvcm0uZ2V0RGltZW5zaW9ucyhlbGVtZW50KTtcbiAgICBjb25zdCBpc1lBeGlzID0gYXhpcyA9PT0gJ3knO1xuICAgIGNvbnN0IG1pblByb3AgPSBpc1lBeGlzID8gJ3RvcCcgOiAnbGVmdCc7XG4gICAgY29uc3QgbWF4UHJvcCA9IGlzWUF4aXMgPyAnYm90dG9tJyA6ICdyaWdodCc7XG4gICAgY29uc3QgY2xpZW50UHJvcCA9IGlzWUF4aXMgPyAnY2xpZW50SGVpZ2h0JyA6ICdjbGllbnRXaWR0aCc7XG4gICAgY29uc3QgZW5kRGlmZiA9IHJlY3RzLnJlZmVyZW5jZVtsZW5ndGhdICsgcmVjdHMucmVmZXJlbmNlW2F4aXNdIC0gY29vcmRzW2F4aXNdIC0gcmVjdHMuZmxvYXRpbmdbbGVuZ3RoXTtcbiAgICBjb25zdCBzdGFydERpZmYgPSBjb29yZHNbYXhpc10gLSByZWN0cy5yZWZlcmVuY2VbYXhpc107XG4gICAgY29uc3QgYXJyb3dPZmZzZXRQYXJlbnQgPSBhd2FpdCAocGxhdGZvcm0uZ2V0T2Zmc2V0UGFyZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5nZXRPZmZzZXRQYXJlbnQoZWxlbWVudCkpO1xuICAgIGxldCBjbGllbnRTaXplID0gYXJyb3dPZmZzZXRQYXJlbnQgPyBhcnJvd09mZnNldFBhcmVudFtjbGllbnRQcm9wXSA6IDA7XG5cbiAgICAvLyBET00gcGxhdGZvcm0gY2FuIHJldHVybiBgd2luZG93YCBhcyB0aGUgYG9mZnNldFBhcmVudGAuXG4gICAgaWYgKCFjbGllbnRTaXplIHx8ICEoYXdhaXQgKHBsYXRmb3JtLmlzRWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNFbGVtZW50KGFycm93T2Zmc2V0UGFyZW50KSkpKSB7XG4gICAgICBjbGllbnRTaXplID0gZWxlbWVudHMuZmxvYXRpbmdbY2xpZW50UHJvcF0gfHwgcmVjdHMuZmxvYXRpbmdbbGVuZ3RoXTtcbiAgICB9XG4gICAgY29uc3QgY2VudGVyVG9SZWZlcmVuY2UgPSBlbmREaWZmIC8gMiAtIHN0YXJ0RGlmZiAvIDI7XG5cbiAgICAvLyBJZiB0aGUgcGFkZGluZyBpcyBsYXJnZSBlbm91Z2ggdGhhdCBpdCBjYXVzZXMgdGhlIGFycm93IHRvIG5vIGxvbmdlciBiZVxuICAgIC8vIGNlbnRlcmVkLCBtb2RpZnkgdGhlIHBhZGRpbmcgc28gdGhhdCBpdCBpcyBjZW50ZXJlZC5cbiAgICBjb25zdCBsYXJnZXN0UG9zc2libGVQYWRkaW5nID0gY2xpZW50U2l6ZSAvIDIgLSBhcnJvd0RpbWVuc2lvbnNbbGVuZ3RoXSAvIDIgLSAxO1xuICAgIGNvbnN0IG1pblBhZGRpbmcgPSBtaW4ocGFkZGluZ09iamVjdFttaW5Qcm9wXSwgbGFyZ2VzdFBvc3NpYmxlUGFkZGluZyk7XG4gICAgY29uc3QgbWF4UGFkZGluZyA9IG1pbihwYWRkaW5nT2JqZWN0W21heFByb3BdLCBsYXJnZXN0UG9zc2libGVQYWRkaW5nKTtcblxuICAgIC8vIE1ha2Ugc3VyZSB0aGUgYXJyb3cgZG9lc24ndCBvdmVyZmxvdyB0aGUgZmxvYXRpbmcgZWxlbWVudCBpZiB0aGUgY2VudGVyXG4gICAgLy8gcG9pbnQgaXMgb3V0c2lkZSB0aGUgZmxvYXRpbmcgZWxlbWVudCdzIGJvdW5kcy5cbiAgICBjb25zdCBtaW4kMSA9IG1pblBhZGRpbmc7XG4gICAgY29uc3QgbWF4ID0gY2xpZW50U2l6ZSAtIGFycm93RGltZW5zaW9uc1tsZW5ndGhdIC0gbWF4UGFkZGluZztcbiAgICBjb25zdCBjZW50ZXIgPSBjbGllbnRTaXplIC8gMiAtIGFycm93RGltZW5zaW9uc1tsZW5ndGhdIC8gMiArIGNlbnRlclRvUmVmZXJlbmNlO1xuICAgIGNvbnN0IG9mZnNldCA9IGNsYW1wKG1pbiQxLCBjZW50ZXIsIG1heCk7XG5cbiAgICAvLyBJZiB0aGUgcmVmZXJlbmNlIGlzIHNtYWxsIGVub3VnaCB0aGF0IHRoZSBhcnJvdydzIHBhZGRpbmcgY2F1c2VzIGl0IHRvXG4gICAgLy8gdG8gcG9pbnQgdG8gbm90aGluZyBmb3IgYW4gYWxpZ25lZCBwbGFjZW1lbnQsIGFkanVzdCB0aGUgb2Zmc2V0IG9mIHRoZVxuICAgIC8vIGZsb2F0aW5nIGVsZW1lbnQgaXRzZWxmLiBUbyBlbnN1cmUgYHNoaWZ0KClgIGNvbnRpbnVlcyB0byB0YWtlIGFjdGlvbixcbiAgICAvLyBhIHNpbmdsZSByZXNldCBpcyBwZXJmb3JtZWQgd2hlbiB0aGlzIGlzIHRydWUuXG4gICAgY29uc3Qgc2hvdWxkQWRkT2Zmc2V0ID0gIW1pZGRsZXdhcmVEYXRhLmFycm93ICYmIGdldEFsaWdubWVudChwbGFjZW1lbnQpICE9IG51bGwgJiYgY2VudGVyICE9PSBvZmZzZXQgJiYgcmVjdHMucmVmZXJlbmNlW2xlbmd0aF0gLyAyIC0gKGNlbnRlciA8IG1pbiQxID8gbWluUGFkZGluZyA6IG1heFBhZGRpbmcpIC0gYXJyb3dEaW1lbnNpb25zW2xlbmd0aF0gLyAyIDwgMDtcbiAgICBjb25zdCBhbGlnbm1lbnRPZmZzZXQgPSBzaG91bGRBZGRPZmZzZXQgPyBjZW50ZXIgPCBtaW4kMSA/IGNlbnRlciAtIG1pbiQxIDogY2VudGVyIC0gbWF4IDogMDtcbiAgICByZXR1cm4ge1xuICAgICAgW2F4aXNdOiBjb29yZHNbYXhpc10gKyBhbGlnbm1lbnRPZmZzZXQsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIFtheGlzXTogb2Zmc2V0LFxuICAgICAgICBjZW50ZXJPZmZzZXQ6IGNlbnRlciAtIG9mZnNldCAtIGFsaWdubWVudE9mZnNldCxcbiAgICAgICAgLi4uKHNob3VsZEFkZE9mZnNldCAmJiB7XG4gICAgICAgICAgYWxpZ25tZW50T2Zmc2V0XG4gICAgICAgIH0pXG4gICAgICB9LFxuICAgICAgcmVzZXQ6IHNob3VsZEFkZE9mZnNldFxuICAgIH07XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiBnZXRQbGFjZW1lbnRMaXN0KGFsaWdubWVudCwgYXV0b0FsaWdubWVudCwgYWxsb3dlZFBsYWNlbWVudHMpIHtcbiAgY29uc3QgYWxsb3dlZFBsYWNlbWVudHNTb3J0ZWRCeUFsaWdubWVudCA9IGFsaWdubWVudCA/IFsuLi5hbGxvd2VkUGxhY2VtZW50cy5maWx0ZXIocGxhY2VtZW50ID0+IGdldEFsaWdubWVudChwbGFjZW1lbnQpID09PSBhbGlnbm1lbnQpLCAuLi5hbGxvd2VkUGxhY2VtZW50cy5maWx0ZXIocGxhY2VtZW50ID0+IGdldEFsaWdubWVudChwbGFjZW1lbnQpICE9PSBhbGlnbm1lbnQpXSA6IGFsbG93ZWRQbGFjZW1lbnRzLmZpbHRlcihwbGFjZW1lbnQgPT4gZ2V0U2lkZShwbGFjZW1lbnQpID09PSBwbGFjZW1lbnQpO1xuICByZXR1cm4gYWxsb3dlZFBsYWNlbWVudHNTb3J0ZWRCeUFsaWdubWVudC5maWx0ZXIocGxhY2VtZW50ID0+IHtcbiAgICBpZiAoYWxpZ25tZW50KSB7XG4gICAgICByZXR1cm4gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkgPT09IGFsaWdubWVudCB8fCAoYXV0b0FsaWdubWVudCA/IGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KHBsYWNlbWVudCkgIT09IHBsYWNlbWVudCA6IGZhbHNlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pO1xufVxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgY2hvb3NpbmcgdGhlIHBsYWNlbWVudFxuICogdGhhdCBoYXMgdGhlIG1vc3Qgc3BhY2UgYXZhaWxhYmxlIGF1dG9tYXRpY2FsbHksIHdpdGhvdXQgbmVlZGluZyB0byBzcGVjaWZ5IGFcbiAqIHByZWZlcnJlZCBwbGFjZW1lbnQuIEFsdGVybmF0aXZlIHRvIGBmbGlwYC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hdXRvUGxhY2VtZW50XG4gKi9cbmNvbnN0IGF1dG9QbGFjZW1lbnQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2F1dG9QbGFjZW1lbnQnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkYXV0b1AsIF9taWRkbGV3YXJlRGF0YSRhdXRvUDIsIF9wbGFjZW1lbnRzVGhhdEZpdE9uRTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIG1pZGRsZXdhcmVEYXRhLFxuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIHBsYXRmb3JtLFxuICAgICAgICBlbGVtZW50c1xuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBjcm9zc0F4aXMgPSBmYWxzZSxcbiAgICAgICAgYWxpZ25tZW50LFxuICAgICAgICBhbGxvd2VkUGxhY2VtZW50cyA9IHBsYWNlbWVudHMsXG4gICAgICAgIGF1dG9BbGlnbm1lbnQgPSB0cnVlLFxuICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBwbGFjZW1lbnRzJDEgPSBhbGlnbm1lbnQgIT09IHVuZGVmaW5lZCB8fCBhbGxvd2VkUGxhY2VtZW50cyA9PT0gcGxhY2VtZW50cyA/IGdldFBsYWNlbWVudExpc3QoYWxpZ25tZW50IHx8IG51bGwsIGF1dG9BbGlnbm1lbnQsIGFsbG93ZWRQbGFjZW1lbnRzKSA6IGFsbG93ZWRQbGFjZW1lbnRzO1xuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgZGV0ZWN0T3ZlcmZsb3dPcHRpb25zKTtcbiAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9ICgoX21pZGRsZXdhcmVEYXRhJGF1dG9QID0gbWlkZGxld2FyZURhdGEuYXV0b1BsYWNlbWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRhdXRvUC5pbmRleCkgfHwgMDtcbiAgICAgIGNvbnN0IGN1cnJlbnRQbGFjZW1lbnQgPSBwbGFjZW1lbnRzJDFbY3VycmVudEluZGV4XTtcbiAgICAgIGlmIChjdXJyZW50UGxhY2VtZW50ID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgICAgY29uc3QgYWxpZ25tZW50U2lkZXMgPSBnZXRBbGlnbm1lbnRTaWRlcyhjdXJyZW50UGxhY2VtZW50LCByZWN0cywgYXdhaXQgKHBsYXRmb3JtLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc1JUTChlbGVtZW50cy5mbG9hdGluZykpKTtcblxuICAgICAgLy8gTWFrZSBgY29tcHV0ZUNvb3Jkc2Agc3RhcnQgZnJvbSB0aGUgcmlnaHQgcGxhY2UuXG4gICAgICBpZiAocGxhY2VtZW50ICE9PSBjdXJyZW50UGxhY2VtZW50KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHBsYWNlbWVudDogcGxhY2VtZW50cyQxWzBdXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgY29uc3QgY3VycmVudE92ZXJmbG93cyA9IFtvdmVyZmxvd1tnZXRTaWRlKGN1cnJlbnRQbGFjZW1lbnQpXSwgb3ZlcmZsb3dbYWxpZ25tZW50U2lkZXNbMF1dLCBvdmVyZmxvd1thbGlnbm1lbnRTaWRlc1sxXV1dO1xuICAgICAgY29uc3QgYWxsT3ZlcmZsb3dzID0gWy4uLigoKF9taWRkbGV3YXJlRGF0YSRhdXRvUDIgPSBtaWRkbGV3YXJlRGF0YS5hdXRvUGxhY2VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGF1dG9QMi5vdmVyZmxvd3MpIHx8IFtdKSwge1xuICAgICAgICBwbGFjZW1lbnQ6IGN1cnJlbnRQbGFjZW1lbnQsXG4gICAgICAgIG92ZXJmbG93czogY3VycmVudE92ZXJmbG93c1xuICAgICAgfV07XG4gICAgICBjb25zdCBuZXh0UGxhY2VtZW50ID0gcGxhY2VtZW50cyQxW2N1cnJlbnRJbmRleCArIDFdO1xuXG4gICAgICAvLyBUaGVyZSBhcmUgbW9yZSBwbGFjZW1lbnRzIHRvIGNoZWNrLlxuICAgICAgaWYgKG5leHRQbGFjZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBpbmRleDogY3VycmVudEluZGV4ICsgMSxcbiAgICAgICAgICAgIG92ZXJmbG93czogYWxsT3ZlcmZsb3dzXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgcGxhY2VtZW50OiBuZXh0UGxhY2VtZW50XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgY29uc3QgcGxhY2VtZW50c1NvcnRlZEJ5TW9zdFNwYWNlID0gYWxsT3ZlcmZsb3dzLm1hcChkID0+IHtcbiAgICAgICAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KGQucGxhY2VtZW50KTtcbiAgICAgICAgcmV0dXJuIFtkLnBsYWNlbWVudCwgYWxpZ25tZW50ICYmIGNyb3NzQXhpcyA/XG4gICAgICAgIC8vIENoZWNrIGFsb25nIHRoZSBtYWluQXhpcyBhbmQgbWFpbiBjcm9zc0F4aXMgc2lkZS5cbiAgICAgICAgZC5vdmVyZmxvd3Muc2xpY2UoMCwgMikucmVkdWNlKChhY2MsIHYpID0+IGFjYyArIHYsIDApIDpcbiAgICAgICAgLy8gQ2hlY2sgb25seSB0aGUgbWFpbkF4aXMuXG4gICAgICAgIGQub3ZlcmZsb3dzWzBdLCBkLm92ZXJmbG93c107XG4gICAgICB9KS5zb3J0KChhLCBiKSA9PiBhWzFdIC0gYlsxXSk7XG4gICAgICBjb25zdCBwbGFjZW1lbnRzVGhhdEZpdE9uRWFjaFNpZGUgPSBwbGFjZW1lbnRzU29ydGVkQnlNb3N0U3BhY2UuZmlsdGVyKGQgPT4gZFsyXS5zbGljZSgwLFxuICAgICAgLy8gQWxpZ25lZCBwbGFjZW1lbnRzIHNob3VsZCBub3QgY2hlY2sgdGhlaXIgb3Bwb3NpdGUgY3Jvc3NBeGlzXG4gICAgICAvLyBzaWRlLlxuICAgICAgZ2V0QWxpZ25tZW50KGRbMF0pID8gMiA6IDMpLmV2ZXJ5KHYgPT4gdiA8PSAwKSk7XG4gICAgICBjb25zdCByZXNldFBsYWNlbWVudCA9ICgoX3BsYWNlbWVudHNUaGF0Rml0T25FID0gcGxhY2VtZW50c1RoYXRGaXRPbkVhY2hTaWRlWzBdKSA9PSBudWxsID8gdm9pZCAwIDogX3BsYWNlbWVudHNUaGF0Rml0T25FWzBdKSB8fCBwbGFjZW1lbnRzU29ydGVkQnlNb3N0U3BhY2VbMF1bMF07XG4gICAgICBpZiAocmVzZXRQbGFjZW1lbnQgIT09IHBsYWNlbWVudCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGluZGV4OiBjdXJyZW50SW5kZXggKyAxLFxuICAgICAgICAgICAgb3ZlcmZsb3dzOiBhbGxPdmVyZmxvd3NcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICBwbGFjZW1lbnQ6IHJlc2V0UGxhY2VtZW50XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IGZsaXBwaW5nIHRoZSBgcGxhY2VtZW50YFxuICogaW4gb3JkZXIgdG8ga2VlcCBpdCBpbiB2aWV3IHdoZW4gdGhlIHByZWZlcnJlZCBwbGFjZW1lbnQocykgd2lsbCBvdmVyZmxvdyB0aGVcbiAqIGNsaXBwaW5nIGJvdW5kYXJ5LiBBbHRlcm5hdGl2ZSB0byBgYXV0b1BsYWNlbWVudGAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvZmxpcFxuICovXG5jb25zdCBmbGlwID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdmbGlwJyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICB2YXIgX21pZGRsZXdhcmVEYXRhJGFycm93LCBfbWlkZGxld2FyZURhdGEkZmxpcDtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICBtaWRkbGV3YXJlRGF0YSxcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIGluaXRpYWxQbGFjZW1lbnQsXG4gICAgICAgIHBsYXRmb3JtLFxuICAgICAgICBlbGVtZW50c1xuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBtYWluQXhpczogY2hlY2tNYWluQXhpcyA9IHRydWUsXG4gICAgICAgIGNyb3NzQXhpczogY2hlY2tDcm9zc0F4aXMgPSB0cnVlLFxuICAgICAgICBmYWxsYmFja1BsYWNlbWVudHM6IHNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyxcbiAgICAgICAgZmFsbGJhY2tTdHJhdGVneSA9ICdiZXN0Rml0JyxcbiAgICAgICAgZmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbiA9ICdub25lJyxcbiAgICAgICAgZmxpcEFsaWdubWVudCA9IHRydWUsXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcblxuICAgICAgLy8gSWYgYSByZXNldCBieSB0aGUgYXJyb3cgd2FzIGNhdXNlZCBkdWUgdG8gYW4gYWxpZ25tZW50IG9mZnNldCBiZWluZ1xuICAgICAgLy8gYWRkZWQsIHdlIHNob3VsZCBza2lwIGFueSBsb2dpYyBub3cgc2luY2UgYGZsaXAoKWAgaGFzIGFscmVhZHkgZG9uZSBpdHNcbiAgICAgIC8vIHdvcmsuXG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmxvYXRpbmctdWkvZmxvYXRpbmctdWkvaXNzdWVzLzI1NDkjaXNzdWVjb21tZW50LTE3MTk2MDE2NDNcbiAgICAgIGlmICgoX21pZGRsZXdhcmVEYXRhJGFycm93ID0gbWlkZGxld2FyZURhdGEuYXJyb3cpICE9IG51bGwgJiYgX21pZGRsZXdhcmVEYXRhJGFycm93LmFsaWdubWVudE9mZnNldCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgICBjb25zdCBzaWRlID0gZ2V0U2lkZShwbGFjZW1lbnQpO1xuICAgICAgY29uc3QgaW5pdGlhbFNpZGVBeGlzID0gZ2V0U2lkZUF4aXMoaW5pdGlhbFBsYWNlbWVudCk7XG4gICAgICBjb25zdCBpc0Jhc2VQbGFjZW1lbnQgPSBnZXRTaWRlKGluaXRpYWxQbGFjZW1lbnQpID09PSBpbml0aWFsUGxhY2VtZW50O1xuICAgICAgY29uc3QgcnRsID0gYXdhaXQgKHBsYXRmb3JtLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc1JUTChlbGVtZW50cy5mbG9hdGluZykpO1xuICAgICAgY29uc3QgZmFsbGJhY2tQbGFjZW1lbnRzID0gc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzIHx8IChpc0Jhc2VQbGFjZW1lbnQgfHwgIWZsaXBBbGlnbm1lbnQgPyBbZ2V0T3Bwb3NpdGVQbGFjZW1lbnQoaW5pdGlhbFBsYWNlbWVudCldIDogZ2V0RXhwYW5kZWRQbGFjZW1lbnRzKGluaXRpYWxQbGFjZW1lbnQpKTtcbiAgICAgIGNvbnN0IGhhc0ZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24gPSBmYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uICE9PSAnbm9uZSc7XG4gICAgICBpZiAoIXNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyAmJiBoYXNGYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uKSB7XG4gICAgICAgIGZhbGxiYWNrUGxhY2VtZW50cy5wdXNoKC4uLmdldE9wcG9zaXRlQXhpc1BsYWNlbWVudHMoaW5pdGlhbFBsYWNlbWVudCwgZmxpcEFsaWdubWVudCwgZmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbiwgcnRsKSk7XG4gICAgICB9XG4gICAgICBjb25zdCBwbGFjZW1lbnRzID0gW2luaXRpYWxQbGFjZW1lbnQsIC4uLmZhbGxiYWNrUGxhY2VtZW50c107XG4gICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCBkZXRlY3RPdmVyZmxvd09wdGlvbnMpO1xuICAgICAgY29uc3Qgb3ZlcmZsb3dzID0gW107XG4gICAgICBsZXQgb3ZlcmZsb3dzRGF0YSA9ICgoX21pZGRsZXdhcmVEYXRhJGZsaXAgPSBtaWRkbGV3YXJlRGF0YS5mbGlwKSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGZsaXAub3ZlcmZsb3dzKSB8fCBbXTtcbiAgICAgIGlmIChjaGVja01haW5BeGlzKSB7XG4gICAgICAgIG92ZXJmbG93cy5wdXNoKG92ZXJmbG93W3NpZGVdKTtcbiAgICAgIH1cbiAgICAgIGlmIChjaGVja0Nyb3NzQXhpcykge1xuICAgICAgICBjb25zdCBzaWRlcyA9IGdldEFsaWdubWVudFNpZGVzKHBsYWNlbWVudCwgcmVjdHMsIHJ0bCk7XG4gICAgICAgIG92ZXJmbG93cy5wdXNoKG92ZXJmbG93W3NpZGVzWzBdXSwgb3ZlcmZsb3dbc2lkZXNbMV1dKTtcbiAgICAgIH1cbiAgICAgIG92ZXJmbG93c0RhdGEgPSBbLi4ub3ZlcmZsb3dzRGF0YSwge1xuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIG92ZXJmbG93c1xuICAgICAgfV07XG5cbiAgICAgIC8vIE9uZSBvciBtb3JlIHNpZGVzIGlzIG92ZXJmbG93aW5nLlxuICAgICAgaWYgKCFvdmVyZmxvd3MuZXZlcnkoc2lkZSA9PiBzaWRlIDw9IDApKSB7XG4gICAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkZmxpcDIsIF9vdmVyZmxvd3NEYXRhJGZpbHRlcjtcbiAgICAgICAgY29uc3QgbmV4dEluZGV4ID0gKCgoX21pZGRsZXdhcmVEYXRhJGZsaXAyID0gbWlkZGxld2FyZURhdGEuZmxpcCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRmbGlwMi5pbmRleCkgfHwgMCkgKyAxO1xuICAgICAgICBjb25zdCBuZXh0UGxhY2VtZW50ID0gcGxhY2VtZW50c1tuZXh0SW5kZXhdO1xuICAgICAgICBpZiAobmV4dFBsYWNlbWVudCkge1xuICAgICAgICAgIC8vIFRyeSBuZXh0IHBsYWNlbWVudCBhbmQgcmUtcnVuIHRoZSBsaWZlY3ljbGUuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgaW5kZXg6IG5leHRJbmRleCxcbiAgICAgICAgICAgICAgb3ZlcmZsb3dzOiBvdmVyZmxvd3NEYXRhXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgICAgcGxhY2VtZW50OiBuZXh0UGxhY2VtZW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZpcnN0LCBmaW5kIHRoZSBjYW5kaWRhdGVzIHRoYXQgZml0IG9uIHRoZSBtYWluQXhpcyBzaWRlIG9mIG92ZXJmbG93LFxuICAgICAgICAvLyB0aGVuIGZpbmQgdGhlIHBsYWNlbWVudCB0aGF0IGZpdHMgdGhlIGJlc3Qgb24gdGhlIG1haW4gY3Jvc3NBeGlzIHNpZGUuXG4gICAgICAgIGxldCByZXNldFBsYWNlbWVudCA9IChfb3ZlcmZsb3dzRGF0YSRmaWx0ZXIgPSBvdmVyZmxvd3NEYXRhLmZpbHRlcihkID0+IGQub3ZlcmZsb3dzWzBdIDw9IDApLnNvcnQoKGEsIGIpID0+IGEub3ZlcmZsb3dzWzFdIC0gYi5vdmVyZmxvd3NbMV0pWzBdKSA9PSBudWxsID8gdm9pZCAwIDogX292ZXJmbG93c0RhdGEkZmlsdGVyLnBsYWNlbWVudDtcblxuICAgICAgICAvLyBPdGhlcndpc2UgZmFsbGJhY2suXG4gICAgICAgIGlmICghcmVzZXRQbGFjZW1lbnQpIHtcbiAgICAgICAgICBzd2l0Y2ggKGZhbGxiYWNrU3RyYXRlZ3kpIHtcbiAgICAgICAgICAgIGNhc2UgJ2Jlc3RGaXQnOlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdmFyIF9vdmVyZmxvd3NEYXRhJGZpbHRlcjI7XG4gICAgICAgICAgICAgICAgY29uc3QgcGxhY2VtZW50ID0gKF9vdmVyZmxvd3NEYXRhJGZpbHRlcjIgPSBvdmVyZmxvd3NEYXRhLmZpbHRlcihkID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChoYXNGYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTaWRlQXhpcyA9IGdldFNpZGVBeGlzKGQucGxhY2VtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRTaWRlQXhpcyA9PT0gaW5pdGlhbFNpZGVBeGlzIHx8XG4gICAgICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBhIGJpYXMgdG8gdGhlIGB5YCBzaWRlIGF4aXMgZHVlIHRvIGhvcml6b250YWxcbiAgICAgICAgICAgICAgICAgICAgLy8gcmVhZGluZyBkaXJlY3Rpb25zIGZhdm9yaW5nIGdyZWF0ZXIgd2lkdGguXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTaWRlQXhpcyA9PT0gJ3knO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfSkubWFwKGQgPT4gW2QucGxhY2VtZW50LCBkLm92ZXJmbG93cy5maWx0ZXIob3ZlcmZsb3cgPT4gb3ZlcmZsb3cgPiAwKS5yZWR1Y2UoKGFjYywgb3ZlcmZsb3cpID0+IGFjYyArIG92ZXJmbG93LCAwKV0pLnNvcnQoKGEsIGIpID0+IGFbMV0gLSBiWzFdKVswXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9vdmVyZmxvd3NEYXRhJGZpbHRlcjJbMF07XG4gICAgICAgICAgICAgICAgaWYgKHBsYWNlbWVudCkge1xuICAgICAgICAgICAgICAgICAgcmVzZXRQbGFjZW1lbnQgPSBwbGFjZW1lbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdpbml0aWFsUGxhY2VtZW50JzpcbiAgICAgICAgICAgICAgcmVzZXRQbGFjZW1lbnQgPSBpbml0aWFsUGxhY2VtZW50O1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBsYWNlbWVudCAhPT0gcmVzZXRQbGFjZW1lbnQpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgICAgcGxhY2VtZW50OiByZXNldFBsYWNlbWVudFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH07XG59O1xuXG5mdW5jdGlvbiBnZXRTaWRlT2Zmc2V0cyhvdmVyZmxvdywgcmVjdCkge1xuICByZXR1cm4ge1xuICAgIHRvcDogb3ZlcmZsb3cudG9wIC0gcmVjdC5oZWlnaHQsXG4gICAgcmlnaHQ6IG92ZXJmbG93LnJpZ2h0IC0gcmVjdC53aWR0aCxcbiAgICBib3R0b206IG92ZXJmbG93LmJvdHRvbSAtIHJlY3QuaGVpZ2h0LFxuICAgIGxlZnQ6IG92ZXJmbG93LmxlZnQgLSByZWN0LndpZHRoXG4gIH07XG59XG5mdW5jdGlvbiBpc0FueVNpZGVGdWxseUNsaXBwZWQob3ZlcmZsb3cpIHtcbiAgcmV0dXJuIHNpZGVzLnNvbWUoc2lkZSA9PiBvdmVyZmxvd1tzaWRlXSA+PSAwKTtcbn1cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBoaWRlIHRoZSBmbG9hdGluZyBlbGVtZW50IGluIGFwcGxpY2FibGUgc2l0dWF0aW9ucywgc3VjaCBhc1xuICogd2hlbiBpdCBpcyBub3QgaW4gdGhlIHNhbWUgY2xpcHBpbmcgY29udGV4dCBhcyB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvaGlkZVxuICovXG5jb25zdCBoaWRlID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdoaWRlJyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHJlY3RzXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHN0cmF0ZWd5ID0gJ3JlZmVyZW5jZUhpZGRlbicsXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIHN3aXRjaCAoc3RyYXRlZ3kpIHtcbiAgICAgICAgY2FzZSAncmVmZXJlbmNlSGlkZGVuJzpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICAgICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9ucyxcbiAgICAgICAgICAgICAgZWxlbWVudENvbnRleHQ6ICdyZWZlcmVuY2UnXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldHMgPSBnZXRTaWRlT2Zmc2V0cyhvdmVyZmxvdywgcmVjdHMucmVmZXJlbmNlKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VIaWRkZW5PZmZzZXRzOiBvZmZzZXRzLFxuICAgICAgICAgICAgICAgIHJlZmVyZW5jZUhpZGRlbjogaXNBbnlTaWRlRnVsbHlDbGlwcGVkKG9mZnNldHMpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICBjYXNlICdlc2NhcGVkJzpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICAgICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9ucyxcbiAgICAgICAgICAgICAgYWx0Qm91bmRhcnk6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3Qgb2Zmc2V0cyA9IGdldFNpZGVPZmZzZXRzKG92ZXJmbG93LCByZWN0cy5mbG9hdGluZyk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgZXNjYXBlZE9mZnNldHM6IG9mZnNldHMsXG4gICAgICAgICAgICAgICAgZXNjYXBlZDogaXNBbnlTaWRlRnVsbHlDbGlwcGVkKG9mZnNldHMpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xufTtcblxuZnVuY3Rpb24gZ2V0Qm91bmRpbmdSZWN0KHJlY3RzKSB7XG4gIGNvbnN0IG1pblggPSBtaW4oLi4ucmVjdHMubWFwKHJlY3QgPT4gcmVjdC5sZWZ0KSk7XG4gIGNvbnN0IG1pblkgPSBtaW4oLi4ucmVjdHMubWFwKHJlY3QgPT4gcmVjdC50b3ApKTtcbiAgY29uc3QgbWF4WCA9IG1heCguLi5yZWN0cy5tYXAocmVjdCA9PiByZWN0LnJpZ2h0KSk7XG4gIGNvbnN0IG1heFkgPSBtYXgoLi4ucmVjdHMubWFwKHJlY3QgPT4gcmVjdC5ib3R0b20pKTtcbiAgcmV0dXJuIHtcbiAgICB4OiBtaW5YLFxuICAgIHk6IG1pblksXG4gICAgd2lkdGg6IG1heFggLSBtaW5YLFxuICAgIGhlaWdodDogbWF4WSAtIG1pbllcbiAgfTtcbn1cbmZ1bmN0aW9uIGdldFJlY3RzQnlMaW5lKHJlY3RzKSB7XG4gIGNvbnN0IHNvcnRlZFJlY3RzID0gcmVjdHMuc2xpY2UoKS5zb3J0KChhLCBiKSA9PiBhLnkgLSBiLnkpO1xuICBjb25zdCBncm91cHMgPSBbXTtcbiAgbGV0IHByZXZSZWN0ID0gbnVsbDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzb3J0ZWRSZWN0cy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHJlY3QgPSBzb3J0ZWRSZWN0c1tpXTtcbiAgICBpZiAoIXByZXZSZWN0IHx8IHJlY3QueSAtIHByZXZSZWN0LnkgPiBwcmV2UmVjdC5oZWlnaHQgLyAyKSB7XG4gICAgICBncm91cHMucHVzaChbcmVjdF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBncm91cHNbZ3JvdXBzLmxlbmd0aCAtIDFdLnB1c2gocmVjdCk7XG4gICAgfVxuICAgIHByZXZSZWN0ID0gcmVjdDtcbiAgfVxuICByZXR1cm4gZ3JvdXBzLm1hcChyZWN0ID0+IHJlY3RUb0NsaWVudFJlY3QoZ2V0Qm91bmRpbmdSZWN0KHJlY3QpKSk7XG59XG4vKipcbiAqIFByb3ZpZGVzIGltcHJvdmVkIHBvc2l0aW9uaW5nIGZvciBpbmxpbmUgcmVmZXJlbmNlIGVsZW1lbnRzIHRoYXQgY2FuIHNwYW5cbiAqIG92ZXIgbXVsdGlwbGUgbGluZXMsIHN1Y2ggYXMgaHlwZXJsaW5rcyBvciByYW5nZSBzZWxlY3Rpb25zLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2lubGluZVxuICovXG5jb25zdCBpbmxpbmUgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2lubGluZScsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIGVsZW1lbnRzLFxuICAgICAgICByZWN0cyxcbiAgICAgICAgcGxhdGZvcm0sXG4gICAgICAgIHN0cmF0ZWd5XG4gICAgICB9ID0gc3RhdGU7XG4gICAgICAvLyBBIE1vdXNlRXZlbnQncyBjbGllbnR7WCxZfSBjb29yZHMgY2FuIGJlIHVwIHRvIDIgcGl4ZWxzIG9mZiBhXG4gICAgICAvLyBDbGllbnRSZWN0J3MgYm91bmRzLCBkZXNwaXRlIHRoZSBldmVudCBsaXN0ZW5lciBiZWluZyB0cmlnZ2VyZWQuIEFcbiAgICAgIC8vIHBhZGRpbmcgb2YgMiBzZWVtcyB0byBoYW5kbGUgdGhpcyBpc3N1ZS5cbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGFkZGluZyA9IDIsXG4gICAgICAgIHgsXG4gICAgICAgIHlcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBuYXRpdmVDbGllbnRSZWN0cyA9IEFycmF5LmZyb20oKGF3YWl0IChwbGF0Zm9ybS5nZXRDbGllbnRSZWN0cyA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uZ2V0Q2xpZW50UmVjdHMoZWxlbWVudHMucmVmZXJlbmNlKSkpIHx8IFtdKTtcbiAgICAgIGNvbnN0IGNsaWVudFJlY3RzID0gZ2V0UmVjdHNCeUxpbmUobmF0aXZlQ2xpZW50UmVjdHMpO1xuICAgICAgY29uc3QgZmFsbGJhY2sgPSByZWN0VG9DbGllbnRSZWN0KGdldEJvdW5kaW5nUmVjdChuYXRpdmVDbGllbnRSZWN0cykpO1xuICAgICAgY29uc3QgcGFkZGluZ09iamVjdCA9IGdldFBhZGRpbmdPYmplY3QocGFkZGluZyk7XG4gICAgICBmdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoKSB7XG4gICAgICAgIC8vIFRoZXJlIGFyZSB0d28gcmVjdHMgYW5kIHRoZXkgYXJlIGRpc2pvaW5lZC5cbiAgICAgICAgaWYgKGNsaWVudFJlY3RzLmxlbmd0aCA9PT0gMiAmJiBjbGllbnRSZWN0c1swXS5sZWZ0ID4gY2xpZW50UmVjdHNbMV0ucmlnaHQgJiYgeCAhPSBudWxsICYmIHkgIT0gbnVsbCkge1xuICAgICAgICAgIC8vIEZpbmQgdGhlIGZpcnN0IHJlY3QgaW4gd2hpY2ggdGhlIHBvaW50IGlzIGZ1bGx5IGluc2lkZS5cbiAgICAgICAgICByZXR1cm4gY2xpZW50UmVjdHMuZmluZChyZWN0ID0+IHggPiByZWN0LmxlZnQgLSBwYWRkaW5nT2JqZWN0LmxlZnQgJiYgeCA8IHJlY3QucmlnaHQgKyBwYWRkaW5nT2JqZWN0LnJpZ2h0ICYmIHkgPiByZWN0LnRvcCAtIHBhZGRpbmdPYmplY3QudG9wICYmIHkgPCByZWN0LmJvdHRvbSArIHBhZGRpbmdPYmplY3QuYm90dG9tKSB8fCBmYWxsYmFjaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZXJlIGFyZSAyIG9yIG1vcmUgY29ubmVjdGVkIHJlY3RzLlxuICAgICAgICBpZiAoY2xpZW50UmVjdHMubGVuZ3RoID49IDIpIHtcbiAgICAgICAgICBpZiAoZ2V0U2lkZUF4aXMocGxhY2VtZW50KSA9PT0gJ3knKSB7XG4gICAgICAgICAgICBjb25zdCBmaXJzdFJlY3QgPSBjbGllbnRSZWN0c1swXTtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RSZWN0ID0gY2xpZW50UmVjdHNbY2xpZW50UmVjdHMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICBjb25zdCBpc1RvcCA9IGdldFNpZGUocGxhY2VtZW50KSA9PT0gJ3RvcCc7XG4gICAgICAgICAgICBjb25zdCB0b3AgPSBmaXJzdFJlY3QudG9wO1xuICAgICAgICAgICAgY29uc3QgYm90dG9tID0gbGFzdFJlY3QuYm90dG9tO1xuICAgICAgICAgICAgY29uc3QgbGVmdCA9IGlzVG9wID8gZmlyc3RSZWN0LmxlZnQgOiBsYXN0UmVjdC5sZWZ0O1xuICAgICAgICAgICAgY29uc3QgcmlnaHQgPSBpc1RvcCA/IGZpcnN0UmVjdC5yaWdodCA6IGxhc3RSZWN0LnJpZ2h0O1xuICAgICAgICAgICAgY29uc3Qgd2lkdGggPSByaWdodCAtIGxlZnQ7XG4gICAgICAgICAgICBjb25zdCBoZWlnaHQgPSBib3R0b20gLSB0b3A7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICB0b3AsXG4gICAgICAgICAgICAgIGJvdHRvbSxcbiAgICAgICAgICAgICAgbGVmdCxcbiAgICAgICAgICAgICAgcmlnaHQsXG4gICAgICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICAgIHg6IGxlZnQsXG4gICAgICAgICAgICAgIHk6IHRvcFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgaXNMZWZ0U2lkZSA9IGdldFNpZGUocGxhY2VtZW50KSA9PT0gJ2xlZnQnO1xuICAgICAgICAgIGNvbnN0IG1heFJpZ2h0ID0gbWF4KC4uLmNsaWVudFJlY3RzLm1hcChyZWN0ID0+IHJlY3QucmlnaHQpKTtcbiAgICAgICAgICBjb25zdCBtaW5MZWZ0ID0gbWluKC4uLmNsaWVudFJlY3RzLm1hcChyZWN0ID0+IHJlY3QubGVmdCkpO1xuICAgICAgICAgIGNvbnN0IG1lYXN1cmVSZWN0cyA9IGNsaWVudFJlY3RzLmZpbHRlcihyZWN0ID0+IGlzTGVmdFNpZGUgPyByZWN0LmxlZnQgPT09IG1pbkxlZnQgOiByZWN0LnJpZ2h0ID09PSBtYXhSaWdodCk7XG4gICAgICAgICAgY29uc3QgdG9wID0gbWVhc3VyZVJlY3RzWzBdLnRvcDtcbiAgICAgICAgICBjb25zdCBib3R0b20gPSBtZWFzdXJlUmVjdHNbbWVhc3VyZVJlY3RzLmxlbmd0aCAtIDFdLmJvdHRvbTtcbiAgICAgICAgICBjb25zdCBsZWZ0ID0gbWluTGVmdDtcbiAgICAgICAgICBjb25zdCByaWdodCA9IG1heFJpZ2h0O1xuICAgICAgICAgIGNvbnN0IHdpZHRoID0gcmlnaHQgLSBsZWZ0O1xuICAgICAgICAgIGNvbnN0IGhlaWdodCA9IGJvdHRvbSAtIHRvcDtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdG9wLFxuICAgICAgICAgICAgYm90dG9tLFxuICAgICAgICAgICAgbGVmdCxcbiAgICAgICAgICAgIHJpZ2h0LFxuICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICB4OiBsZWZ0LFxuICAgICAgICAgICAgeTogdG9wXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsbGJhY2s7XG4gICAgICB9XG4gICAgICBjb25zdCByZXNldFJlY3RzID0gYXdhaXQgcGxhdGZvcm0uZ2V0RWxlbWVudFJlY3RzKHtcbiAgICAgICAgcmVmZXJlbmNlOiB7XG4gICAgICAgICAgZ2V0Qm91bmRpbmdDbGllbnRSZWN0XG4gICAgICAgIH0sXG4gICAgICAgIGZsb2F0aW5nOiBlbGVtZW50cy5mbG9hdGluZyxcbiAgICAgICAgc3RyYXRlZ3lcbiAgICAgIH0pO1xuICAgICAgaWYgKHJlY3RzLnJlZmVyZW5jZS54ICE9PSByZXNldFJlY3RzLnJlZmVyZW5jZS54IHx8IHJlY3RzLnJlZmVyZW5jZS55ICE9PSByZXNldFJlY3RzLnJlZmVyZW5jZS55IHx8IHJlY3RzLnJlZmVyZW5jZS53aWR0aCAhPT0gcmVzZXRSZWN0cy5yZWZlcmVuY2Uud2lkdGggfHwgcmVjdHMucmVmZXJlbmNlLmhlaWdodCAhPT0gcmVzZXRSZWN0cy5yZWZlcmVuY2UuaGVpZ2h0KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHJlY3RzOiByZXNldFJlY3RzXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfTtcbn07XG5cbi8vIEZvciB0eXBlIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5LCB0aGUgYE9mZnNldE9wdGlvbnNgIHR5cGUgd2FzIGFsc29cbi8vIERlcml2YWJsZS5cblxuYXN5bmMgZnVuY3Rpb24gY29udmVydFZhbHVlVG9Db29yZHMoc3RhdGUsIG9wdGlvbnMpIHtcbiAgY29uc3Qge1xuICAgIHBsYWNlbWVudCxcbiAgICBwbGF0Zm9ybSxcbiAgICBlbGVtZW50c1xuICB9ID0gc3RhdGU7XG4gIGNvbnN0IHJ0bCA9IGF3YWl0IChwbGF0Zm9ybS5pc1JUTCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNSVEwoZWxlbWVudHMuZmxvYXRpbmcpKTtcbiAgY29uc3Qgc2lkZSA9IGdldFNpZGUocGxhY2VtZW50KTtcbiAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCk7XG4gIGNvbnN0IGlzVmVydGljYWwgPSBnZXRTaWRlQXhpcyhwbGFjZW1lbnQpID09PSAneSc7XG4gIGNvbnN0IG1haW5BeGlzTXVsdGkgPSBbJ2xlZnQnLCAndG9wJ10uaW5jbHVkZXMoc2lkZSkgPyAtMSA6IDE7XG4gIGNvbnN0IGNyb3NzQXhpc011bHRpID0gcnRsICYmIGlzVmVydGljYWwgPyAtMSA6IDE7XG4gIGNvbnN0IHJhd1ZhbHVlID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3RcbiAgbGV0IHtcbiAgICBtYWluQXhpcyxcbiAgICBjcm9zc0F4aXMsXG4gICAgYWxpZ25tZW50QXhpc1xuICB9ID0gdHlwZW9mIHJhd1ZhbHVlID09PSAnbnVtYmVyJyA/IHtcbiAgICBtYWluQXhpczogcmF3VmFsdWUsXG4gICAgY3Jvc3NBeGlzOiAwLFxuICAgIGFsaWdubWVudEF4aXM6IG51bGxcbiAgfSA6IHtcbiAgICBtYWluQXhpczogcmF3VmFsdWUubWFpbkF4aXMgfHwgMCxcbiAgICBjcm9zc0F4aXM6IHJhd1ZhbHVlLmNyb3NzQXhpcyB8fCAwLFxuICAgIGFsaWdubWVudEF4aXM6IHJhd1ZhbHVlLmFsaWdubWVudEF4aXNcbiAgfTtcbiAgaWYgKGFsaWdubWVudCAmJiB0eXBlb2YgYWxpZ25tZW50QXhpcyA9PT0gJ251bWJlcicpIHtcbiAgICBjcm9zc0F4aXMgPSBhbGlnbm1lbnQgPT09ICdlbmQnID8gYWxpZ25tZW50QXhpcyAqIC0xIDogYWxpZ25tZW50QXhpcztcbiAgfVxuICByZXR1cm4gaXNWZXJ0aWNhbCA/IHtcbiAgICB4OiBjcm9zc0F4aXMgKiBjcm9zc0F4aXNNdWx0aSxcbiAgICB5OiBtYWluQXhpcyAqIG1haW5BeGlzTXVsdGlcbiAgfSA6IHtcbiAgICB4OiBtYWluQXhpcyAqIG1haW5BeGlzTXVsdGksXG4gICAgeTogY3Jvc3NBeGlzICogY3Jvc3NBeGlzTXVsdGlcbiAgfTtcbn1cblxuLyoqXG4gKiBNb2RpZmllcyB0aGUgcGxhY2VtZW50IGJ5IHRyYW5zbGF0aW5nIHRoZSBmbG9hdGluZyBlbGVtZW50IGFsb25nIHRoZVxuICogc3BlY2lmaWVkIGF4ZXMuXG4gKiBBIG51bWJlciAoc2hvcnRoYW5kIGZvciBgbWFpbkF4aXNgIG9yIGRpc3RhbmNlKSwgb3IgYW4gYXhlcyBjb25maWd1cmF0aW9uXG4gKiBvYmplY3QgbWF5IGJlIHBhc3NlZC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9vZmZzZXRcbiAqL1xuY29uc3Qgb2Zmc2V0ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSAwO1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ29mZnNldCcsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgdmFyIF9taWRkbGV3YXJlRGF0YSRvZmZzZSwgX21pZGRsZXdhcmVEYXRhJGFycm93O1xuICAgICAgY29uc3Qge1xuICAgICAgICB4LFxuICAgICAgICB5LFxuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIG1pZGRsZXdhcmVEYXRhXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCBkaWZmQ29vcmRzID0gYXdhaXQgY29udmVydFZhbHVlVG9Db29yZHMoc3RhdGUsIG9wdGlvbnMpO1xuXG4gICAgICAvLyBJZiB0aGUgcGxhY2VtZW50IGlzIHRoZSBzYW1lIGFuZCB0aGUgYXJyb3cgY2F1c2VkIGFuIGFsaWdubWVudCBvZmZzZXRcbiAgICAgIC8vIHRoZW4gd2UgZG9uJ3QgbmVlZCB0byBjaGFuZ2UgdGhlIHBvc2l0aW9uaW5nIGNvb3JkaW5hdGVzLlxuICAgICAgaWYgKHBsYWNlbWVudCA9PT0gKChfbWlkZGxld2FyZURhdGEkb2Zmc2UgPSBtaWRkbGV3YXJlRGF0YS5vZmZzZXQpID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkb2Zmc2UucGxhY2VtZW50KSAmJiAoX21pZGRsZXdhcmVEYXRhJGFycm93ID0gbWlkZGxld2FyZURhdGEuYXJyb3cpICE9IG51bGwgJiYgX21pZGRsZXdhcmVEYXRhJGFycm93LmFsaWdubWVudE9mZnNldCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICB4OiB4ICsgZGlmZkNvb3Jkcy54LFxuICAgICAgICB5OiB5ICsgZGlmZkNvb3Jkcy55LFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgLi4uZGlmZkNvb3JkcyxcbiAgICAgICAgICBwbGFjZW1lbnRcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBzaGlmdGluZyBpdCBpbiBvcmRlciB0b1xuICoga2VlcCBpdCBpbiB2aWV3IHdoZW4gaXQgd2lsbCBvdmVyZmxvdyB0aGUgY2xpcHBpbmcgYm91bmRhcnkuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvc2hpZnRcbiAqL1xuY29uc3Qgc2hpZnQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ3NoaWZ0JyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHgsXG4gICAgICAgIHksXG4gICAgICAgIHBsYWNlbWVudFxuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBtYWluQXhpczogY2hlY2tNYWluQXhpcyA9IHRydWUsXG4gICAgICAgIGNyb3NzQXhpczogY2hlY2tDcm9zc0F4aXMgPSBmYWxzZSxcbiAgICAgICAgbGltaXRlciA9IHtcbiAgICAgICAgICBmbjogX3JlZiA9PiB7XG4gICAgICAgICAgICBsZXQge1xuICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICB5XG4gICAgICAgICAgICB9ID0gX3JlZjtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgIHlcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBjb29yZHMgPSB7XG4gICAgICAgIHgsXG4gICAgICAgIHlcbiAgICAgIH07XG4gICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCBkZXRlY3RPdmVyZmxvd09wdGlvbnMpO1xuICAgICAgY29uc3QgY3Jvc3NBeGlzID0gZ2V0U2lkZUF4aXMoZ2V0U2lkZShwbGFjZW1lbnQpKTtcbiAgICAgIGNvbnN0IG1haW5BeGlzID0gZ2V0T3Bwb3NpdGVBeGlzKGNyb3NzQXhpcyk7XG4gICAgICBsZXQgbWFpbkF4aXNDb29yZCA9IGNvb3Jkc1ttYWluQXhpc107XG4gICAgICBsZXQgY3Jvc3NBeGlzQ29vcmQgPSBjb29yZHNbY3Jvc3NBeGlzXTtcbiAgICAgIGlmIChjaGVja01haW5BeGlzKSB7XG4gICAgICAgIGNvbnN0IG1pblNpZGUgPSBtYWluQXhpcyA9PT0gJ3knID8gJ3RvcCcgOiAnbGVmdCc7XG4gICAgICAgIGNvbnN0IG1heFNpZGUgPSBtYWluQXhpcyA9PT0gJ3knID8gJ2JvdHRvbScgOiAncmlnaHQnO1xuICAgICAgICBjb25zdCBtaW4gPSBtYWluQXhpc0Nvb3JkICsgb3ZlcmZsb3dbbWluU2lkZV07XG4gICAgICAgIGNvbnN0IG1heCA9IG1haW5BeGlzQ29vcmQgLSBvdmVyZmxvd1ttYXhTaWRlXTtcbiAgICAgICAgbWFpbkF4aXNDb29yZCA9IGNsYW1wKG1pbiwgbWFpbkF4aXNDb29yZCwgbWF4KTtcbiAgICAgIH1cbiAgICAgIGlmIChjaGVja0Nyb3NzQXhpcykge1xuICAgICAgICBjb25zdCBtaW5TaWRlID0gY3Jvc3NBeGlzID09PSAneScgPyAndG9wJyA6ICdsZWZ0JztcbiAgICAgICAgY29uc3QgbWF4U2lkZSA9IGNyb3NzQXhpcyA9PT0gJ3knID8gJ2JvdHRvbScgOiAncmlnaHQnO1xuICAgICAgICBjb25zdCBtaW4gPSBjcm9zc0F4aXNDb29yZCArIG92ZXJmbG93W21pblNpZGVdO1xuICAgICAgICBjb25zdCBtYXggPSBjcm9zc0F4aXNDb29yZCAtIG92ZXJmbG93W21heFNpZGVdO1xuICAgICAgICBjcm9zc0F4aXNDb29yZCA9IGNsYW1wKG1pbiwgY3Jvc3NBeGlzQ29vcmQsIG1heCk7XG4gICAgICB9XG4gICAgICBjb25zdCBsaW1pdGVkQ29vcmRzID0gbGltaXRlci5mbih7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBbbWFpbkF4aXNdOiBtYWluQXhpc0Nvb3JkLFxuICAgICAgICBbY3Jvc3NBeGlzXTogY3Jvc3NBeGlzQ29vcmRcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ubGltaXRlZENvb3JkcyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIHg6IGxpbWl0ZWRDb29yZHMueCAtIHgsXG4gICAgICAgICAgeTogbGltaXRlZENvb3Jkcy55IC0geSxcbiAgICAgICAgICBlbmFibGVkOiB7XG4gICAgICAgICAgICBbbWFpbkF4aXNdOiBjaGVja01haW5BeGlzLFxuICAgICAgICAgICAgW2Nyb3NzQXhpc106IGNoZWNrQ3Jvc3NBeGlzXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfTtcbn07XG4vKipcbiAqIEJ1aWx0LWluIGBsaW1pdGVyYCB0aGF0IHdpbGwgc3RvcCBgc2hpZnQoKWAgYXQgYSBjZXJ0YWluIHBvaW50LlxuICovXG5jb25zdCBsaW1pdFNoaWZ0ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG9wdGlvbnMsXG4gICAgZm4oc3RhdGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgeCxcbiAgICAgICAgeSxcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICByZWN0cyxcbiAgICAgICAgbWlkZGxld2FyZURhdGFcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgb2Zmc2V0ID0gMCxcbiAgICAgICAgbWFpbkF4aXM6IGNoZWNrTWFpbkF4aXMgPSB0cnVlLFxuICAgICAgICBjcm9zc0F4aXM6IGNoZWNrQ3Jvc3NBeGlzID0gdHJ1ZVxuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IGNvb3JkcyA9IHtcbiAgICAgICAgeCxcbiAgICAgICAgeVxuICAgICAgfTtcbiAgICAgIGNvbnN0IGNyb3NzQXhpcyA9IGdldFNpZGVBeGlzKHBsYWNlbWVudCk7XG4gICAgICBjb25zdCBtYWluQXhpcyA9IGdldE9wcG9zaXRlQXhpcyhjcm9zc0F4aXMpO1xuICAgICAgbGV0IG1haW5BeGlzQ29vcmQgPSBjb29yZHNbbWFpbkF4aXNdO1xuICAgICAgbGV0IGNyb3NzQXhpc0Nvb3JkID0gY29vcmRzW2Nyb3NzQXhpc107XG4gICAgICBjb25zdCByYXdPZmZzZXQgPSBldmFsdWF0ZShvZmZzZXQsIHN0YXRlKTtcbiAgICAgIGNvbnN0IGNvbXB1dGVkT2Zmc2V0ID0gdHlwZW9mIHJhd09mZnNldCA9PT0gJ251bWJlcicgPyB7XG4gICAgICAgIG1haW5BeGlzOiByYXdPZmZzZXQsXG4gICAgICAgIGNyb3NzQXhpczogMFxuICAgICAgfSA6IHtcbiAgICAgICAgbWFpbkF4aXM6IDAsXG4gICAgICAgIGNyb3NzQXhpczogMCxcbiAgICAgICAgLi4ucmF3T2Zmc2V0XG4gICAgICB9O1xuICAgICAgaWYgKGNoZWNrTWFpbkF4aXMpIHtcbiAgICAgICAgY29uc3QgbGVuID0gbWFpbkF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcbiAgICAgICAgY29uc3QgbGltaXRNaW4gPSByZWN0cy5yZWZlcmVuY2VbbWFpbkF4aXNdIC0gcmVjdHMuZmxvYXRpbmdbbGVuXSArIGNvbXB1dGVkT2Zmc2V0Lm1haW5BeGlzO1xuICAgICAgICBjb25zdCBsaW1pdE1heCA9IHJlY3RzLnJlZmVyZW5jZVttYWluQXhpc10gKyByZWN0cy5yZWZlcmVuY2VbbGVuXSAtIGNvbXB1dGVkT2Zmc2V0Lm1haW5BeGlzO1xuICAgICAgICBpZiAobWFpbkF4aXNDb29yZCA8IGxpbWl0TWluKSB7XG4gICAgICAgICAgbWFpbkF4aXNDb29yZCA9IGxpbWl0TWluO1xuICAgICAgICB9IGVsc2UgaWYgKG1haW5BeGlzQ29vcmQgPiBsaW1pdE1heCkge1xuICAgICAgICAgIG1haW5BeGlzQ29vcmQgPSBsaW1pdE1heDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGNoZWNrQ3Jvc3NBeGlzKSB7XG4gICAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkb2Zmc2UsIF9taWRkbGV3YXJlRGF0YSRvZmZzZTI7XG4gICAgICAgIGNvbnN0IGxlbiA9IG1haW5BeGlzID09PSAneScgPyAnd2lkdGgnIDogJ2hlaWdodCc7XG4gICAgICAgIGNvbnN0IGlzT3JpZ2luU2lkZSA9IFsndG9wJywgJ2xlZnQnXS5pbmNsdWRlcyhnZXRTaWRlKHBsYWNlbWVudCkpO1xuICAgICAgICBjb25zdCBsaW1pdE1pbiA9IHJlY3RzLnJlZmVyZW5jZVtjcm9zc0F4aXNdIC0gcmVjdHMuZmxvYXRpbmdbbGVuXSArIChpc09yaWdpblNpZGUgPyAoKF9taWRkbGV3YXJlRGF0YSRvZmZzZSA9IG1pZGRsZXdhcmVEYXRhLm9mZnNldCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRvZmZzZVtjcm9zc0F4aXNdKSB8fCAwIDogMCkgKyAoaXNPcmlnaW5TaWRlID8gMCA6IGNvbXB1dGVkT2Zmc2V0LmNyb3NzQXhpcyk7XG4gICAgICAgIGNvbnN0IGxpbWl0TWF4ID0gcmVjdHMucmVmZXJlbmNlW2Nyb3NzQXhpc10gKyByZWN0cy5yZWZlcmVuY2VbbGVuXSArIChpc09yaWdpblNpZGUgPyAwIDogKChfbWlkZGxld2FyZURhdGEkb2Zmc2UyID0gbWlkZGxld2FyZURhdGEub2Zmc2V0KSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJG9mZnNlMltjcm9zc0F4aXNdKSB8fCAwKSAtIChpc09yaWdpblNpZGUgPyBjb21wdXRlZE9mZnNldC5jcm9zc0F4aXMgOiAwKTtcbiAgICAgICAgaWYgKGNyb3NzQXhpc0Nvb3JkIDwgbGltaXRNaW4pIHtcbiAgICAgICAgICBjcm9zc0F4aXNDb29yZCA9IGxpbWl0TWluO1xuICAgICAgICB9IGVsc2UgaWYgKGNyb3NzQXhpc0Nvb3JkID4gbGltaXRNYXgpIHtcbiAgICAgICAgICBjcm9zc0F4aXNDb29yZCA9IGxpbWl0TWF4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBbbWFpbkF4aXNdOiBtYWluQXhpc0Nvb3JkLFxuICAgICAgICBbY3Jvc3NBeGlzXTogY3Jvc3NBeGlzQ29vcmRcbiAgICAgIH07XG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRoYXQgYWxsb3dzIHlvdSB0byBjaGFuZ2UgdGhlIHNpemUgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQg4oCUXG4gKiBmb3IgaW5zdGFuY2UsIHByZXZlbnQgaXQgZnJvbSBvdmVyZmxvd2luZyB0aGUgY2xpcHBpbmcgYm91bmRhcnkgb3IgbWF0Y2ggdGhlXG4gKiB3aWR0aCBvZiB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvc2l6ZVxuICovXG5jb25zdCBzaXplID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdzaXplJyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICB2YXIgX3N0YXRlJG1pZGRsZXdhcmVEYXRhLCBfc3RhdGUkbWlkZGxld2FyZURhdGEyO1xuICAgICAgY29uc3Qge1xuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIHJlY3RzLFxuICAgICAgICBwbGF0Zm9ybSxcbiAgICAgICAgZWxlbWVudHNcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgYXBwbHkgPSAoKSA9PiB7fSxcbiAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgZGV0ZWN0T3ZlcmZsb3dPcHRpb25zKTtcbiAgICAgIGNvbnN0IHNpZGUgPSBnZXRTaWRlKHBsYWNlbWVudCk7XG4gICAgICBjb25zdCBhbGlnbm1lbnQgPSBnZXRBbGlnbm1lbnQocGxhY2VtZW50KTtcbiAgICAgIGNvbnN0IGlzWUF4aXMgPSBnZXRTaWRlQXhpcyhwbGFjZW1lbnQpID09PSAneSc7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHdpZHRoLFxuICAgICAgICBoZWlnaHRcbiAgICAgIH0gPSByZWN0cy5mbG9hdGluZztcbiAgICAgIGxldCBoZWlnaHRTaWRlO1xuICAgICAgbGV0IHdpZHRoU2lkZTtcbiAgICAgIGlmIChzaWRlID09PSAndG9wJyB8fCBzaWRlID09PSAnYm90dG9tJykge1xuICAgICAgICBoZWlnaHRTaWRlID0gc2lkZTtcbiAgICAgICAgd2lkdGhTaWRlID0gYWxpZ25tZW50ID09PSAoKGF3YWl0IChwbGF0Zm9ybS5pc1JUTCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNSVEwoZWxlbWVudHMuZmxvYXRpbmcpKSkgPyAnc3RhcnQnIDogJ2VuZCcpID8gJ2xlZnQnIDogJ3JpZ2h0JztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdpZHRoU2lkZSA9IHNpZGU7XG4gICAgICAgIGhlaWdodFNpZGUgPSBhbGlnbm1lbnQgPT09ICdlbmQnID8gJ3RvcCcgOiAnYm90dG9tJztcbiAgICAgIH1cbiAgICAgIGNvbnN0IG1heGltdW1DbGlwcGluZ0hlaWdodCA9IGhlaWdodCAtIG92ZXJmbG93LnRvcCAtIG92ZXJmbG93LmJvdHRvbTtcbiAgICAgIGNvbnN0IG1heGltdW1DbGlwcGluZ1dpZHRoID0gd2lkdGggLSBvdmVyZmxvdy5sZWZ0IC0gb3ZlcmZsb3cucmlnaHQ7XG4gICAgICBjb25zdCBvdmVyZmxvd0F2YWlsYWJsZUhlaWdodCA9IG1pbihoZWlnaHQgLSBvdmVyZmxvd1toZWlnaHRTaWRlXSwgbWF4aW11bUNsaXBwaW5nSGVpZ2h0KTtcbiAgICAgIGNvbnN0IG92ZXJmbG93QXZhaWxhYmxlV2lkdGggPSBtaW4od2lkdGggLSBvdmVyZmxvd1t3aWR0aFNpZGVdLCBtYXhpbXVtQ2xpcHBpbmdXaWR0aCk7XG4gICAgICBjb25zdCBub1NoaWZ0ID0gIXN0YXRlLm1pZGRsZXdhcmVEYXRhLnNoaWZ0O1xuICAgICAgbGV0IGF2YWlsYWJsZUhlaWdodCA9IG92ZXJmbG93QXZhaWxhYmxlSGVpZ2h0O1xuICAgICAgbGV0IGF2YWlsYWJsZVdpZHRoID0gb3ZlcmZsb3dBdmFpbGFibGVXaWR0aDtcbiAgICAgIGlmICgoX3N0YXRlJG1pZGRsZXdhcmVEYXRhID0gc3RhdGUubWlkZGxld2FyZURhdGEuc2hpZnQpICE9IG51bGwgJiYgX3N0YXRlJG1pZGRsZXdhcmVEYXRhLmVuYWJsZWQueCkge1xuICAgICAgICBhdmFpbGFibGVXaWR0aCA9IG1heGltdW1DbGlwcGluZ1dpZHRoO1xuICAgICAgfVxuICAgICAgaWYgKChfc3RhdGUkbWlkZGxld2FyZURhdGEyID0gc3RhdGUubWlkZGxld2FyZURhdGEuc2hpZnQpICE9IG51bGwgJiYgX3N0YXRlJG1pZGRsZXdhcmVEYXRhMi5lbmFibGVkLnkpIHtcbiAgICAgICAgYXZhaWxhYmxlSGVpZ2h0ID0gbWF4aW11bUNsaXBwaW5nSGVpZ2h0O1xuICAgICAgfVxuICAgICAgaWYgKG5vU2hpZnQgJiYgIWFsaWdubWVudCkge1xuICAgICAgICBjb25zdCB4TWluID0gbWF4KG92ZXJmbG93LmxlZnQsIDApO1xuICAgICAgICBjb25zdCB4TWF4ID0gbWF4KG92ZXJmbG93LnJpZ2h0LCAwKTtcbiAgICAgICAgY29uc3QgeU1pbiA9IG1heChvdmVyZmxvdy50b3AsIDApO1xuICAgICAgICBjb25zdCB5TWF4ID0gbWF4KG92ZXJmbG93LmJvdHRvbSwgMCk7XG4gICAgICAgIGlmIChpc1lBeGlzKSB7XG4gICAgICAgICAgYXZhaWxhYmxlV2lkdGggPSB3aWR0aCAtIDIgKiAoeE1pbiAhPT0gMCB8fCB4TWF4ICE9PSAwID8geE1pbiArIHhNYXggOiBtYXgob3ZlcmZsb3cubGVmdCwgb3ZlcmZsb3cucmlnaHQpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhdmFpbGFibGVIZWlnaHQgPSBoZWlnaHQgLSAyICogKHlNaW4gIT09IDAgfHwgeU1heCAhPT0gMCA/IHlNaW4gKyB5TWF4IDogbWF4KG92ZXJmbG93LnRvcCwgb3ZlcmZsb3cuYm90dG9tKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGF3YWl0IGFwcGx5KHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGF2YWlsYWJsZVdpZHRoLFxuICAgICAgICBhdmFpbGFibGVIZWlnaHRcbiAgICAgIH0pO1xuICAgICAgY29uc3QgbmV4dERpbWVuc2lvbnMgPSBhd2FpdCBwbGF0Zm9ybS5nZXREaW1lbnNpb25zKGVsZW1lbnRzLmZsb2F0aW5nKTtcbiAgICAgIGlmICh3aWR0aCAhPT0gbmV4dERpbWVuc2lvbnMud2lkdGggfHwgaGVpZ2h0ICE9PSBuZXh0RGltZW5zaW9ucy5oZWlnaHQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgcmVjdHM6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IHsgYXJyb3csIGF1dG9QbGFjZW1lbnQsIGNvbXB1dGVQb3NpdGlvbiwgZGV0ZWN0T3ZlcmZsb3csIGZsaXAsIGhpZGUsIGlubGluZSwgbGltaXRTaGlmdCwgb2Zmc2V0LCBzaGlmdCwgc2l6ZSB9O1xuIiwiZnVuY3Rpb24gaGFzV2luZG93KCkge1xuICByZXR1cm4gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCc7XG59XG5mdW5jdGlvbiBnZXROb2RlTmFtZShub2RlKSB7XG4gIGlmIChpc05vZGUobm9kZSkpIHtcbiAgICByZXR1cm4gKG5vZGUubm9kZU5hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCk7XG4gIH1cbiAgLy8gTW9ja2VkIG5vZGVzIGluIHRlc3RpbmcgZW52aXJvbm1lbnRzIG1heSBub3QgYmUgaW5zdGFuY2VzIG9mIE5vZGUuIEJ5XG4gIC8vIHJldHVybmluZyBgI2RvY3VtZW50YCBhbiBpbmZpbml0ZSBsb29wIHdvbid0IG9jY3VyLlxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmxvYXRpbmctdWkvZmxvYXRpbmctdWkvaXNzdWVzLzIzMTdcbiAgcmV0dXJuICcjZG9jdW1lbnQnO1xufVxuZnVuY3Rpb24gZ2V0V2luZG93KG5vZGUpIHtcbiAgdmFyIF9ub2RlJG93bmVyRG9jdW1lbnQ7XG4gIHJldHVybiAobm9kZSA9PSBudWxsIHx8IChfbm9kZSRvd25lckRvY3VtZW50ID0gbm9kZS5vd25lckRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX25vZGUkb3duZXJEb2N1bWVudC5kZWZhdWx0VmlldykgfHwgd2luZG93O1xufVxuZnVuY3Rpb24gZ2V0RG9jdW1lbnRFbGVtZW50KG5vZGUpIHtcbiAgdmFyIF9yZWY7XG4gIHJldHVybiAoX3JlZiA9IChpc05vZGUobm9kZSkgPyBub2RlLm93bmVyRG9jdW1lbnQgOiBub2RlLmRvY3VtZW50KSB8fCB3aW5kb3cuZG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfcmVmLmRvY3VtZW50RWxlbWVudDtcbn1cbmZ1bmN0aW9uIGlzTm9kZSh2YWx1ZSkge1xuICBpZiAoIWhhc1dpbmRvdygpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIE5vZGUgfHwgdmFsdWUgaW5zdGFuY2VvZiBnZXRXaW5kb3codmFsdWUpLk5vZGU7XG59XG5mdW5jdGlvbiBpc0VsZW1lbnQodmFsdWUpIHtcbiAgaWYgKCFoYXNXaW5kb3coKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBFbGVtZW50IHx8IHZhbHVlIGluc3RhbmNlb2YgZ2V0V2luZG93KHZhbHVlKS5FbGVtZW50O1xufVxuZnVuY3Rpb24gaXNIVE1MRWxlbWVudCh2YWx1ZSkge1xuICBpZiAoIWhhc1dpbmRvdygpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50IHx8IHZhbHVlIGluc3RhbmNlb2YgZ2V0V2luZG93KHZhbHVlKS5IVE1MRWxlbWVudDtcbn1cbmZ1bmN0aW9uIGlzU2hhZG93Um9vdCh2YWx1ZSkge1xuICBpZiAoIWhhc1dpbmRvdygpIHx8IHR5cGVvZiBTaGFkb3dSb290ID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBTaGFkb3dSb290IHx8IHZhbHVlIGluc3RhbmNlb2YgZ2V0V2luZG93KHZhbHVlKS5TaGFkb3dSb290O1xufVxuZnVuY3Rpb24gaXNPdmVyZmxvd0VsZW1lbnQoZWxlbWVudCkge1xuICBjb25zdCB7XG4gICAgb3ZlcmZsb3csXG4gICAgb3ZlcmZsb3dYLFxuICAgIG92ZXJmbG93WSxcbiAgICBkaXNwbGF5XG4gIH0gPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xuICByZXR1cm4gL2F1dG98c2Nyb2xsfG92ZXJsYXl8aGlkZGVufGNsaXAvLnRlc3Qob3ZlcmZsb3cgKyBvdmVyZmxvd1kgKyBvdmVyZmxvd1gpICYmICFbJ2lubGluZScsICdjb250ZW50cyddLmluY2x1ZGVzKGRpc3BsYXkpO1xufVxuZnVuY3Rpb24gaXNUYWJsZUVsZW1lbnQoZWxlbWVudCkge1xuICByZXR1cm4gWyd0YWJsZScsICd0ZCcsICd0aCddLmluY2x1ZGVzKGdldE5vZGVOYW1lKGVsZW1lbnQpKTtcbn1cbmZ1bmN0aW9uIGlzVG9wTGF5ZXIoZWxlbWVudCkge1xuICByZXR1cm4gWyc6cG9wb3Zlci1vcGVuJywgJzptb2RhbCddLnNvbWUoc2VsZWN0b3IgPT4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gZWxlbWVudC5tYXRjaGVzKHNlbGVjdG9yKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9KTtcbn1cbmZ1bmN0aW9uIGlzQ29udGFpbmluZ0Jsb2NrKGVsZW1lbnRPckNzcykge1xuICBjb25zdCB3ZWJraXQgPSBpc1dlYktpdCgpO1xuICBjb25zdCBjc3MgPSBpc0VsZW1lbnQoZWxlbWVudE9yQ3NzKSA/IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudE9yQ3NzKSA6IGVsZW1lbnRPckNzcztcblxuICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvQ29udGFpbmluZ19ibG9jayNpZGVudGlmeWluZ190aGVfY29udGFpbmluZ19ibG9ja1xuICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXRyYW5zZm9ybXMtMi8jaW5kaXZpZHVhbC10cmFuc2Zvcm1zXG4gIHJldHVybiBbJ3RyYW5zZm9ybScsICd0cmFuc2xhdGUnLCAnc2NhbGUnLCAncm90YXRlJywgJ3BlcnNwZWN0aXZlJ10uc29tZSh2YWx1ZSA9PiBjc3NbdmFsdWVdID8gY3NzW3ZhbHVlXSAhPT0gJ25vbmUnIDogZmFsc2UpIHx8IChjc3MuY29udGFpbmVyVHlwZSA/IGNzcy5jb250YWluZXJUeXBlICE9PSAnbm9ybWFsJyA6IGZhbHNlKSB8fCAhd2Via2l0ICYmIChjc3MuYmFja2Ryb3BGaWx0ZXIgPyBjc3MuYmFja2Ryb3BGaWx0ZXIgIT09ICdub25lJyA6IGZhbHNlKSB8fCAhd2Via2l0ICYmIChjc3MuZmlsdGVyID8gY3NzLmZpbHRlciAhPT0gJ25vbmUnIDogZmFsc2UpIHx8IFsndHJhbnNmb3JtJywgJ3RyYW5zbGF0ZScsICdzY2FsZScsICdyb3RhdGUnLCAncGVyc3BlY3RpdmUnLCAnZmlsdGVyJ10uc29tZSh2YWx1ZSA9PiAoY3NzLndpbGxDaGFuZ2UgfHwgJycpLmluY2x1ZGVzKHZhbHVlKSkgfHwgWydwYWludCcsICdsYXlvdXQnLCAnc3RyaWN0JywgJ2NvbnRlbnQnXS5zb21lKHZhbHVlID0+IChjc3MuY29udGFpbiB8fCAnJykuaW5jbHVkZXModmFsdWUpKTtcbn1cbmZ1bmN0aW9uIGdldENvbnRhaW5pbmdCbG9jayhlbGVtZW50KSB7XG4gIGxldCBjdXJyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUoZWxlbWVudCk7XG4gIHdoaWxlIChpc0hUTUxFbGVtZW50KGN1cnJlbnROb2RlKSAmJiAhaXNMYXN0VHJhdmVyc2FibGVOb2RlKGN1cnJlbnROb2RlKSkge1xuICAgIGlmIChpc0NvbnRhaW5pbmdCbG9jayhjdXJyZW50Tm9kZSkpIHtcbiAgICAgIHJldHVybiBjdXJyZW50Tm9kZTtcbiAgICB9IGVsc2UgaWYgKGlzVG9wTGF5ZXIoY3VycmVudE5vZGUpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY3VycmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGN1cnJlbnROb2RlKTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cbmZ1bmN0aW9uIGlzV2ViS2l0KCkge1xuICBpZiAodHlwZW9mIENTUyA9PT0gJ3VuZGVmaW5lZCcgfHwgIUNTUy5zdXBwb3J0cykgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gQ1NTLnN1cHBvcnRzKCctd2Via2l0LWJhY2tkcm9wLWZpbHRlcicsICdub25lJyk7XG59XG5mdW5jdGlvbiBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUobm9kZSkge1xuICByZXR1cm4gWydodG1sJywgJ2JvZHknLCAnI2RvY3VtZW50J10uaW5jbHVkZXMoZ2V0Tm9kZU5hbWUobm9kZSkpO1xufVxuZnVuY3Rpb24gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KSB7XG4gIHJldHVybiBnZXRXaW5kb3coZWxlbWVudCkuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbn1cbmZ1bmN0aW9uIGdldE5vZGVTY3JvbGwoZWxlbWVudCkge1xuICBpZiAoaXNFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNjcm9sbExlZnQ6IGVsZW1lbnQuc2Nyb2xsTGVmdCxcbiAgICAgIHNjcm9sbFRvcDogZWxlbWVudC5zY3JvbGxUb3BcbiAgICB9O1xuICB9XG4gIHJldHVybiB7XG4gICAgc2Nyb2xsTGVmdDogZWxlbWVudC5zY3JvbGxYLFxuICAgIHNjcm9sbFRvcDogZWxlbWVudC5zY3JvbGxZXG4gIH07XG59XG5mdW5jdGlvbiBnZXRQYXJlbnROb2RlKG5vZGUpIHtcbiAgaWYgKGdldE5vZGVOYW1lKG5vZGUpID09PSAnaHRtbCcpIHtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuICBjb25zdCByZXN1bHQgPVxuICAvLyBTdGVwIGludG8gdGhlIHNoYWRvdyBET00gb2YgdGhlIHBhcmVudCBvZiBhIHNsb3R0ZWQgbm9kZS5cbiAgbm9kZS5hc3NpZ25lZFNsb3QgfHxcbiAgLy8gRE9NIEVsZW1lbnQgZGV0ZWN0ZWQuXG4gIG5vZGUucGFyZW50Tm9kZSB8fFxuICAvLyBTaGFkb3dSb290IGRldGVjdGVkLlxuICBpc1NoYWRvd1Jvb3Qobm9kZSkgJiYgbm9kZS5ob3N0IHx8XG4gIC8vIEZhbGxiYWNrLlxuICBnZXREb2N1bWVudEVsZW1lbnQobm9kZSk7XG4gIHJldHVybiBpc1NoYWRvd1Jvb3QocmVzdWx0KSA/IHJlc3VsdC5ob3N0IDogcmVzdWx0O1xufVxuZnVuY3Rpb24gZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3Iobm9kZSkge1xuICBjb25zdCBwYXJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShub2RlKTtcbiAgaWYgKGlzTGFzdFRyYXZlcnNhYmxlTm9kZShwYXJlbnROb2RlKSkge1xuICAgIHJldHVybiBub2RlLm93bmVyRG9jdW1lbnQgPyBub2RlLm93bmVyRG9jdW1lbnQuYm9keSA6IG5vZGUuYm9keTtcbiAgfVxuICBpZiAoaXNIVE1MRWxlbWVudChwYXJlbnROb2RlKSAmJiBpc092ZXJmbG93RWxlbWVudChwYXJlbnROb2RlKSkge1xuICAgIHJldHVybiBwYXJlbnROb2RlO1xuICB9XG4gIHJldHVybiBnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3RvcihwYXJlbnROb2RlKTtcbn1cbmZ1bmN0aW9uIGdldE92ZXJmbG93QW5jZXN0b3JzKG5vZGUsIGxpc3QsIHRyYXZlcnNlSWZyYW1lcykge1xuICB2YXIgX25vZGUkb3duZXJEb2N1bWVudDI7XG4gIGlmIChsaXN0ID09PSB2b2lkIDApIHtcbiAgICBsaXN0ID0gW107XG4gIH1cbiAgaWYgKHRyYXZlcnNlSWZyYW1lcyA9PT0gdm9pZCAwKSB7XG4gICAgdHJhdmVyc2VJZnJhbWVzID0gdHJ1ZTtcbiAgfVxuICBjb25zdCBzY3JvbGxhYmxlQW5jZXN0b3IgPSBnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3Rvcihub2RlKTtcbiAgY29uc3QgaXNCb2R5ID0gc2Nyb2xsYWJsZUFuY2VzdG9yID09PSAoKF9ub2RlJG93bmVyRG9jdW1lbnQyID0gbm9kZS5vd25lckRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX25vZGUkb3duZXJEb2N1bWVudDIuYm9keSk7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhzY3JvbGxhYmxlQW5jZXN0b3IpO1xuICBpZiAoaXNCb2R5KSB7XG4gICAgY29uc3QgZnJhbWVFbGVtZW50ID0gZ2V0RnJhbWVFbGVtZW50KHdpbik7XG4gICAgcmV0dXJuIGxpc3QuY29uY2F0KHdpbiwgd2luLnZpc3VhbFZpZXdwb3J0IHx8IFtdLCBpc092ZXJmbG93RWxlbWVudChzY3JvbGxhYmxlQW5jZXN0b3IpID8gc2Nyb2xsYWJsZUFuY2VzdG9yIDogW10sIGZyYW1lRWxlbWVudCAmJiB0cmF2ZXJzZUlmcmFtZXMgPyBnZXRPdmVyZmxvd0FuY2VzdG9ycyhmcmFtZUVsZW1lbnQpIDogW10pO1xuICB9XG4gIHJldHVybiBsaXN0LmNvbmNhdChzY3JvbGxhYmxlQW5jZXN0b3IsIGdldE92ZXJmbG93QW5jZXN0b3JzKHNjcm9sbGFibGVBbmNlc3RvciwgW10sIHRyYXZlcnNlSWZyYW1lcykpO1xufVxuZnVuY3Rpb24gZ2V0RnJhbWVFbGVtZW50KHdpbikge1xuICByZXR1cm4gd2luLnBhcmVudCAmJiBPYmplY3QuZ2V0UHJvdG90eXBlT2Yod2luLnBhcmVudCkgPyB3aW4uZnJhbWVFbGVtZW50IDogbnVsbDtcbn1cblxuZXhwb3J0IHsgZ2V0Q29tcHV0ZWRTdHlsZSwgZ2V0Q29udGFpbmluZ0Jsb2NrLCBnZXREb2N1bWVudEVsZW1lbnQsIGdldEZyYW1lRWxlbWVudCwgZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3IsIGdldE5vZGVOYW1lLCBnZXROb2RlU2Nyb2xsLCBnZXRPdmVyZmxvd0FuY2VzdG9ycywgZ2V0UGFyZW50Tm9kZSwgZ2V0V2luZG93LCBpc0NvbnRhaW5pbmdCbG9jaywgaXNFbGVtZW50LCBpc0hUTUxFbGVtZW50LCBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUsIGlzTm9kZSwgaXNPdmVyZmxvd0VsZW1lbnQsIGlzU2hhZG93Um9vdCwgaXNUYWJsZUVsZW1lbnQsIGlzVG9wTGF5ZXIsIGlzV2ViS2l0IH07XG4iLCJpbXBvcnQgeyByZWN0VG9DbGllbnRSZWN0LCBkZXRlY3RPdmVyZmxvdyBhcyBkZXRlY3RPdmVyZmxvdyQxLCBvZmZzZXQgYXMgb2Zmc2V0JDEsIGF1dG9QbGFjZW1lbnQgYXMgYXV0b1BsYWNlbWVudCQxLCBzaGlmdCBhcyBzaGlmdCQxLCBmbGlwIGFzIGZsaXAkMSwgc2l6ZSBhcyBzaXplJDEsIGhpZGUgYXMgaGlkZSQxLCBhcnJvdyBhcyBhcnJvdyQxLCBpbmxpbmUgYXMgaW5saW5lJDEsIGxpbWl0U2hpZnQgYXMgbGltaXRTaGlmdCQxLCBjb21wdXRlUG9zaXRpb24gYXMgY29tcHV0ZVBvc2l0aW9uJDEgfSBmcm9tICdAZmxvYXRpbmctdWkvY29yZSc7XG5pbXBvcnQgeyByb3VuZCwgY3JlYXRlQ29vcmRzLCBtYXgsIG1pbiwgZmxvb3IgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMnO1xuaW1wb3J0IHsgZ2V0Q29tcHV0ZWRTdHlsZSwgaXNIVE1MRWxlbWVudCwgaXNFbGVtZW50LCBnZXRXaW5kb3csIGlzV2ViS2l0LCBnZXRGcmFtZUVsZW1lbnQsIGdldE5vZGVTY3JvbGwsIGdldERvY3VtZW50RWxlbWVudCwgaXNUb3BMYXllciwgZ2V0Tm9kZU5hbWUsIGlzT3ZlcmZsb3dFbGVtZW50LCBnZXRPdmVyZmxvd0FuY2VzdG9ycywgZ2V0UGFyZW50Tm9kZSwgaXNMYXN0VHJhdmVyc2FibGVOb2RlLCBpc0NvbnRhaW5pbmdCbG9jaywgaXNUYWJsZUVsZW1lbnQsIGdldENvbnRhaW5pbmdCbG9jayB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscy9kb20nO1xuZXhwb3J0IHsgZ2V0T3ZlcmZsb3dBbmNlc3RvcnMgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMvZG9tJztcblxuZnVuY3Rpb24gZ2V0Q3NzRGltZW5zaW9ucyhlbGVtZW50KSB7XG4gIGNvbnN0IGNzcyA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG4gIC8vIEluIHRlc3RpbmcgZW52aXJvbm1lbnRzLCB0aGUgYHdpZHRoYCBhbmQgYGhlaWdodGAgcHJvcGVydGllcyBhcmUgZW1wdHlcbiAgLy8gc3RyaW5ncyBmb3IgU1ZHIGVsZW1lbnRzLCByZXR1cm5pbmcgTmFOLiBGYWxsYmFjayB0byBgMGAgaW4gdGhpcyBjYXNlLlxuICBsZXQgd2lkdGggPSBwYXJzZUZsb2F0KGNzcy53aWR0aCkgfHwgMDtcbiAgbGV0IGhlaWdodCA9IHBhcnNlRmxvYXQoY3NzLmhlaWdodCkgfHwgMDtcbiAgY29uc3QgaGFzT2Zmc2V0ID0gaXNIVE1MRWxlbWVudChlbGVtZW50KTtcbiAgY29uc3Qgb2Zmc2V0V2lkdGggPSBoYXNPZmZzZXQgPyBlbGVtZW50Lm9mZnNldFdpZHRoIDogd2lkdGg7XG4gIGNvbnN0IG9mZnNldEhlaWdodCA9IGhhc09mZnNldCA/IGVsZW1lbnQub2Zmc2V0SGVpZ2h0IDogaGVpZ2h0O1xuICBjb25zdCBzaG91bGRGYWxsYmFjayA9IHJvdW5kKHdpZHRoKSAhPT0gb2Zmc2V0V2lkdGggfHwgcm91bmQoaGVpZ2h0KSAhPT0gb2Zmc2V0SGVpZ2h0O1xuICBpZiAoc2hvdWxkRmFsbGJhY2spIHtcbiAgICB3aWR0aCA9IG9mZnNldFdpZHRoO1xuICAgIGhlaWdodCA9IG9mZnNldEhlaWdodDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICAkOiBzaG91bGRGYWxsYmFja1xuICB9O1xufVxuXG5mdW5jdGlvbiB1bndyYXBFbGVtZW50KGVsZW1lbnQpIHtcbiAgcmV0dXJuICFpc0VsZW1lbnQoZWxlbWVudCkgPyBlbGVtZW50LmNvbnRleHRFbGVtZW50IDogZWxlbWVudDtcbn1cblxuZnVuY3Rpb24gZ2V0U2NhbGUoZWxlbWVudCkge1xuICBjb25zdCBkb21FbGVtZW50ID0gdW53cmFwRWxlbWVudChlbGVtZW50KTtcbiAgaWYgKCFpc0hUTUxFbGVtZW50KGRvbUVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUNvb3JkcygxKTtcbiAgfVxuICBjb25zdCByZWN0ID0gZG9tRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3Qge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICAkXG4gIH0gPSBnZXRDc3NEaW1lbnNpb25zKGRvbUVsZW1lbnQpO1xuICBsZXQgeCA9ICgkID8gcm91bmQocmVjdC53aWR0aCkgOiByZWN0LndpZHRoKSAvIHdpZHRoO1xuICBsZXQgeSA9ICgkID8gcm91bmQocmVjdC5oZWlnaHQpIDogcmVjdC5oZWlnaHQpIC8gaGVpZ2h0O1xuXG4gIC8vIDAsIE5hTiwgb3IgSW5maW5pdHkgc2hvdWxkIGFsd2F5cyBmYWxsYmFjayB0byAxLlxuXG4gIGlmICgheCB8fCAhTnVtYmVyLmlzRmluaXRlKHgpKSB7XG4gICAgeCA9IDE7XG4gIH1cbiAgaWYgKCF5IHx8ICFOdW1iZXIuaXNGaW5pdGUoeSkpIHtcbiAgICB5ID0gMTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG5jb25zdCBub09mZnNldHMgPSAvKiNfX1BVUkVfXyovY3JlYXRlQ29vcmRzKDApO1xuZnVuY3Rpb24gZ2V0VmlzdWFsT2Zmc2V0cyhlbGVtZW50KSB7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgaWYgKCFpc1dlYktpdCgpIHx8ICF3aW4udmlzdWFsVmlld3BvcnQpIHtcbiAgICByZXR1cm4gbm9PZmZzZXRzO1xuICB9XG4gIHJldHVybiB7XG4gICAgeDogd2luLnZpc3VhbFZpZXdwb3J0Lm9mZnNldExlZnQsXG4gICAgeTogd2luLnZpc3VhbFZpZXdwb3J0Lm9mZnNldFRvcFxuICB9O1xufVxuZnVuY3Rpb24gc2hvdWxkQWRkVmlzdWFsT2Zmc2V0cyhlbGVtZW50LCBpc0ZpeGVkLCBmbG9hdGluZ09mZnNldFBhcmVudCkge1xuICBpZiAoaXNGaXhlZCA9PT0gdm9pZCAwKSB7XG4gICAgaXNGaXhlZCA9IGZhbHNlO1xuICB9XG4gIGlmICghZmxvYXRpbmdPZmZzZXRQYXJlbnQgfHwgaXNGaXhlZCAmJiBmbG9hdGluZ09mZnNldFBhcmVudCAhPT0gZ2V0V2luZG93KGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBpc0ZpeGVkO1xufVxuXG5mdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgaW5jbHVkZVNjYWxlLCBpc0ZpeGVkU3RyYXRlZ3ksIG9mZnNldFBhcmVudCkge1xuICBpZiAoaW5jbHVkZVNjYWxlID09PSB2b2lkIDApIHtcbiAgICBpbmNsdWRlU2NhbGUgPSBmYWxzZTtcbiAgfVxuICBpZiAoaXNGaXhlZFN0cmF0ZWd5ID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkU3RyYXRlZ3kgPSBmYWxzZTtcbiAgfVxuICBjb25zdCBjbGllbnRSZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgZG9tRWxlbWVudCA9IHVud3JhcEVsZW1lbnQoZWxlbWVudCk7XG4gIGxldCBzY2FsZSA9IGNyZWF0ZUNvb3JkcygxKTtcbiAgaWYgKGluY2x1ZGVTY2FsZSkge1xuICAgIGlmIChvZmZzZXRQYXJlbnQpIHtcbiAgICAgIGlmIChpc0VsZW1lbnQob2Zmc2V0UGFyZW50KSkge1xuICAgICAgICBzY2FsZSA9IGdldFNjYWxlKG9mZnNldFBhcmVudCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHNjYWxlID0gZ2V0U2NhbGUoZWxlbWVudCk7XG4gICAgfVxuICB9XG4gIGNvbnN0IHZpc3VhbE9mZnNldHMgPSBzaG91bGRBZGRWaXN1YWxPZmZzZXRzKGRvbUVsZW1lbnQsIGlzRml4ZWRTdHJhdGVneSwgb2Zmc2V0UGFyZW50KSA/IGdldFZpc3VhbE9mZnNldHMoZG9tRWxlbWVudCkgOiBjcmVhdGVDb29yZHMoMCk7XG4gIGxldCB4ID0gKGNsaWVudFJlY3QubGVmdCArIHZpc3VhbE9mZnNldHMueCkgLyBzY2FsZS54O1xuICBsZXQgeSA9IChjbGllbnRSZWN0LnRvcCArIHZpc3VhbE9mZnNldHMueSkgLyBzY2FsZS55O1xuICBsZXQgd2lkdGggPSBjbGllbnRSZWN0LndpZHRoIC8gc2NhbGUueDtcbiAgbGV0IGhlaWdodCA9IGNsaWVudFJlY3QuaGVpZ2h0IC8gc2NhbGUueTtcbiAgaWYgKGRvbUVsZW1lbnQpIHtcbiAgICBjb25zdCB3aW4gPSBnZXRXaW5kb3coZG9tRWxlbWVudCk7XG4gICAgY29uc3Qgb2Zmc2V0V2luID0gb2Zmc2V0UGFyZW50ICYmIGlzRWxlbWVudChvZmZzZXRQYXJlbnQpID8gZ2V0V2luZG93KG9mZnNldFBhcmVudCkgOiBvZmZzZXRQYXJlbnQ7XG4gICAgbGV0IGN1cnJlbnRXaW4gPSB3aW47XG4gICAgbGV0IGN1cnJlbnRJRnJhbWUgPSBnZXRGcmFtZUVsZW1lbnQoY3VycmVudFdpbik7XG4gICAgd2hpbGUgKGN1cnJlbnRJRnJhbWUgJiYgb2Zmc2V0UGFyZW50ICYmIG9mZnNldFdpbiAhPT0gY3VycmVudFdpbikge1xuICAgICAgY29uc3QgaWZyYW1lU2NhbGUgPSBnZXRTY2FsZShjdXJyZW50SUZyYW1lKTtcbiAgICAgIGNvbnN0IGlmcmFtZVJlY3QgPSBjdXJyZW50SUZyYW1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3QgY3NzID0gZ2V0Q29tcHV0ZWRTdHlsZShjdXJyZW50SUZyYW1lKTtcbiAgICAgIGNvbnN0IGxlZnQgPSBpZnJhbWVSZWN0LmxlZnQgKyAoY3VycmVudElGcmFtZS5jbGllbnRMZWZ0ICsgcGFyc2VGbG9hdChjc3MucGFkZGluZ0xlZnQpKSAqIGlmcmFtZVNjYWxlLng7XG4gICAgICBjb25zdCB0b3AgPSBpZnJhbWVSZWN0LnRvcCArIChjdXJyZW50SUZyYW1lLmNsaWVudFRvcCArIHBhcnNlRmxvYXQoY3NzLnBhZGRpbmdUb3ApKSAqIGlmcmFtZVNjYWxlLnk7XG4gICAgICB4ICo9IGlmcmFtZVNjYWxlLng7XG4gICAgICB5ICo9IGlmcmFtZVNjYWxlLnk7XG4gICAgICB3aWR0aCAqPSBpZnJhbWVTY2FsZS54O1xuICAgICAgaGVpZ2h0ICo9IGlmcmFtZVNjYWxlLnk7XG4gICAgICB4ICs9IGxlZnQ7XG4gICAgICB5ICs9IHRvcDtcbiAgICAgIGN1cnJlbnRXaW4gPSBnZXRXaW5kb3coY3VycmVudElGcmFtZSk7XG4gICAgICBjdXJyZW50SUZyYW1lID0gZ2V0RnJhbWVFbGVtZW50KGN1cnJlbnRXaW4pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVjdFRvQ2xpZW50UmVjdCh7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9KTtcbn1cblxuLy8gSWYgPGh0bWw+IGhhcyBhIENTUyB3aWR0aCBncmVhdGVyIHRoYW4gdGhlIHZpZXdwb3J0LCB0aGVuIHRoaXMgd2lsbCBiZVxuLy8gaW5jb3JyZWN0IGZvciBSVEwuXG5mdW5jdGlvbiBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQsIHJlY3QpIHtcbiAgY29uc3QgbGVmdFNjcm9sbCA9IGdldE5vZGVTY3JvbGwoZWxlbWVudCkuc2Nyb2xsTGVmdDtcbiAgaWYgKCFyZWN0KSB7XG4gICAgcmV0dXJuIGdldEJvdW5kaW5nQ2xpZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkpLmxlZnQgKyBsZWZ0U2Nyb2xsO1xuICB9XG4gIHJldHVybiByZWN0LmxlZnQgKyBsZWZ0U2Nyb2xsO1xufVxuXG5mdW5jdGlvbiBnZXRIVE1MT2Zmc2V0KGRvY3VtZW50RWxlbWVudCwgc2Nyb2xsLCBpZ25vcmVTY3JvbGxiYXJYKSB7XG4gIGlmIChpZ25vcmVTY3JvbGxiYXJYID09PSB2b2lkIDApIHtcbiAgICBpZ25vcmVTY3JvbGxiYXJYID0gZmFsc2U7XG4gIH1cbiAgY29uc3QgaHRtbFJlY3QgPSBkb2N1bWVudEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGNvbnN0IHggPSBodG1sUmVjdC5sZWZ0ICsgc2Nyb2xsLnNjcm9sbExlZnQgLSAoaWdub3JlU2Nyb2xsYmFyWCA/IDAgOlxuICAvLyBSVEwgPGJvZHk+IHNjcm9sbGJhci5cbiAgZ2V0V2luZG93U2Nyb2xsQmFyWChkb2N1bWVudEVsZW1lbnQsIGh0bWxSZWN0KSk7XG4gIGNvbnN0IHkgPSBodG1sUmVjdC50b3AgKyBzY3JvbGwuc2Nyb2xsVG9wO1xuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdChfcmVmKSB7XG4gIGxldCB7XG4gICAgZWxlbWVudHMsXG4gICAgcmVjdCxcbiAgICBvZmZzZXRQYXJlbnQsXG4gICAgc3RyYXRlZ3lcbiAgfSA9IF9yZWY7XG4gIGNvbnN0IGlzRml4ZWQgPSBzdHJhdGVneSA9PT0gJ2ZpeGVkJztcbiAgY29uc3QgZG9jdW1lbnRFbGVtZW50ID0gZ2V0RG9jdW1lbnRFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIGNvbnN0IHRvcExheWVyID0gZWxlbWVudHMgPyBpc1RvcExheWVyKGVsZW1lbnRzLmZsb2F0aW5nKSA6IGZhbHNlO1xuICBpZiAob2Zmc2V0UGFyZW50ID09PSBkb2N1bWVudEVsZW1lbnQgfHwgdG9wTGF5ZXIgJiYgaXNGaXhlZCkge1xuICAgIHJldHVybiByZWN0O1xuICB9XG4gIGxldCBzY3JvbGwgPSB7XG4gICAgc2Nyb2xsTGVmdDogMCxcbiAgICBzY3JvbGxUb3A6IDBcbiAgfTtcbiAgbGV0IHNjYWxlID0gY3JlYXRlQ29vcmRzKDEpO1xuICBjb25zdCBvZmZzZXRzID0gY3JlYXRlQ29vcmRzKDApO1xuICBjb25zdCBpc09mZnNldFBhcmVudEFuRWxlbWVudCA9IGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgaWYgKGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50IHx8ICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCkge1xuICAgIGlmIChnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpICE9PSAnYm9keScgfHwgaXNPdmVyZmxvd0VsZW1lbnQoZG9jdW1lbnRFbGVtZW50KSkge1xuICAgICAgc2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChvZmZzZXRQYXJlbnQpO1xuICAgIH1cbiAgICBpZiAoaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpKSB7XG4gICAgICBjb25zdCBvZmZzZXRSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KG9mZnNldFBhcmVudCk7XG4gICAgICBzY2FsZSA9IGdldFNjYWxlKG9mZnNldFBhcmVudCk7XG4gICAgICBvZmZzZXRzLnggPSBvZmZzZXRSZWN0LnggKyBvZmZzZXRQYXJlbnQuY2xpZW50TGVmdDtcbiAgICAgIG9mZnNldHMueSA9IG9mZnNldFJlY3QueSArIG9mZnNldFBhcmVudC5jbGllbnRUb3A7XG4gICAgfVxuICB9XG4gIGNvbnN0IGh0bWxPZmZzZXQgPSBkb2N1bWVudEVsZW1lbnQgJiYgIWlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ICYmICFpc0ZpeGVkID8gZ2V0SFRNTE9mZnNldChkb2N1bWVudEVsZW1lbnQsIHNjcm9sbCwgdHJ1ZSkgOiBjcmVhdGVDb29yZHMoMCk7XG4gIHJldHVybiB7XG4gICAgd2lkdGg6IHJlY3Qud2lkdGggKiBzY2FsZS54LFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHQgKiBzY2FsZS55LFxuICAgIHg6IHJlY3QueCAqIHNjYWxlLnggLSBzY3JvbGwuc2Nyb2xsTGVmdCAqIHNjYWxlLnggKyBvZmZzZXRzLnggKyBodG1sT2Zmc2V0LngsXG4gICAgeTogcmVjdC55ICogc2NhbGUueSAtIHNjcm9sbC5zY3JvbGxUb3AgKiBzY2FsZS55ICsgb2Zmc2V0cy55ICsgaHRtbE9mZnNldC55XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldENsaWVudFJlY3RzKGVsZW1lbnQpIHtcbiAgcmV0dXJuIEFycmF5LmZyb20oZWxlbWVudC5nZXRDbGllbnRSZWN0cygpKTtcbn1cblxuLy8gR2V0cyB0aGUgZW50aXJlIHNpemUgb2YgdGhlIHNjcm9sbGFibGUgZG9jdW1lbnQgYXJlYSwgZXZlbiBleHRlbmRpbmcgb3V0c2lkZVxuLy8gb2YgdGhlIGA8aHRtbD5gIGFuZCBgPGJvZHk+YCByZWN0IGJvdW5kcyBpZiBob3Jpem9udGFsbHkgc2Nyb2xsYWJsZS5cbmZ1bmN0aW9uIGdldERvY3VtZW50UmVjdChlbGVtZW50KSB7XG4gIGNvbnN0IGh0bWwgPSBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCk7XG4gIGNvbnN0IHNjcm9sbCA9IGdldE5vZGVTY3JvbGwoZWxlbWVudCk7XG4gIGNvbnN0IGJvZHkgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQuYm9keTtcbiAgY29uc3Qgd2lkdGggPSBtYXgoaHRtbC5zY3JvbGxXaWR0aCwgaHRtbC5jbGllbnRXaWR0aCwgYm9keS5zY3JvbGxXaWR0aCwgYm9keS5jbGllbnRXaWR0aCk7XG4gIGNvbnN0IGhlaWdodCA9IG1heChodG1sLnNjcm9sbEhlaWdodCwgaHRtbC5jbGllbnRIZWlnaHQsIGJvZHkuc2Nyb2xsSGVpZ2h0LCBib2R5LmNsaWVudEhlaWdodCk7XG4gIGxldCB4ID0gLXNjcm9sbC5zY3JvbGxMZWZ0ICsgZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50KTtcbiAgY29uc3QgeSA9IC1zY3JvbGwuc2Nyb2xsVG9wO1xuICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShib2R5KS5kaXJlY3Rpb24gPT09ICdydGwnKSB7XG4gICAgeCArPSBtYXgoaHRtbC5jbGllbnRXaWR0aCwgYm9keS5jbGllbnRXaWR0aCkgLSB3aWR0aDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB4LFxuICAgIHlcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0Vmlld3BvcnRSZWN0KGVsZW1lbnQsIHN0cmF0ZWd5KSB7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgY29uc3QgaHRtbCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgY29uc3QgdmlzdWFsVmlld3BvcnQgPSB3aW4udmlzdWFsVmlld3BvcnQ7XG4gIGxldCB3aWR0aCA9IGh0bWwuY2xpZW50V2lkdGg7XG4gIGxldCBoZWlnaHQgPSBodG1sLmNsaWVudEhlaWdodDtcbiAgbGV0IHggPSAwO1xuICBsZXQgeSA9IDA7XG4gIGlmICh2aXN1YWxWaWV3cG9ydCkge1xuICAgIHdpZHRoID0gdmlzdWFsVmlld3BvcnQud2lkdGg7XG4gICAgaGVpZ2h0ID0gdmlzdWFsVmlld3BvcnQuaGVpZ2h0O1xuICAgIGNvbnN0IHZpc3VhbFZpZXdwb3J0QmFzZWQgPSBpc1dlYktpdCgpO1xuICAgIGlmICghdmlzdWFsVmlld3BvcnRCYXNlZCB8fCB2aXN1YWxWaWV3cG9ydEJhc2VkICYmIHN0cmF0ZWd5ID09PSAnZml4ZWQnKSB7XG4gICAgICB4ID0gdmlzdWFsVmlld3BvcnQub2Zmc2V0TGVmdDtcbiAgICAgIHkgPSB2aXN1YWxWaWV3cG9ydC5vZmZzZXRUb3A7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG4vLyBSZXR1cm5zIHRoZSBpbm5lciBjbGllbnQgcmVjdCwgc3VidHJhY3Rpbmcgc2Nyb2xsYmFycyBpZiBwcmVzZW50LlxuZnVuY3Rpb24gZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpIHtcbiAgY29uc3QgY2xpZW50UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCB0cnVlLCBzdHJhdGVneSA9PT0gJ2ZpeGVkJyk7XG4gIGNvbnN0IHRvcCA9IGNsaWVudFJlY3QudG9wICsgZWxlbWVudC5jbGllbnRUb3A7XG4gIGNvbnN0IGxlZnQgPSBjbGllbnRSZWN0LmxlZnQgKyBlbGVtZW50LmNsaWVudExlZnQ7XG4gIGNvbnN0IHNjYWxlID0gaXNIVE1MRWxlbWVudChlbGVtZW50KSA/IGdldFNjYWxlKGVsZW1lbnQpIDogY3JlYXRlQ29vcmRzKDEpO1xuICBjb25zdCB3aWR0aCA9IGVsZW1lbnQuY2xpZW50V2lkdGggKiBzY2FsZS54O1xuICBjb25zdCBoZWlnaHQgPSBlbGVtZW50LmNsaWVudEhlaWdodCAqIHNjYWxlLnk7XG4gIGNvbnN0IHggPSBsZWZ0ICogc2NhbGUueDtcbiAgY29uc3QgeSA9IHRvcCAqIHNjYWxlLnk7XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuZnVuY3Rpb24gZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yKGVsZW1lbnQsIGNsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KSB7XG4gIGxldCByZWN0O1xuICBpZiAoY2xpcHBpbmdBbmNlc3RvciA9PT0gJ3ZpZXdwb3J0Jykge1xuICAgIHJlY3QgPSBnZXRWaWV3cG9ydFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpO1xuICB9IGVsc2UgaWYgKGNsaXBwaW5nQW5jZXN0b3IgPT09ICdkb2N1bWVudCcpIHtcbiAgICByZWN0ID0gZ2V0RG9jdW1lbnRSZWN0KGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSk7XG4gIH0gZWxzZSBpZiAoaXNFbGVtZW50KGNsaXBwaW5nQW5jZXN0b3IpKSB7XG4gICAgcmVjdCA9IGdldElubmVyQm91bmRpbmdDbGllbnRSZWN0KGNsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB2aXN1YWxPZmZzZXRzID0gZ2V0VmlzdWFsT2Zmc2V0cyhlbGVtZW50KTtcbiAgICByZWN0ID0ge1xuICAgICAgeDogY2xpcHBpbmdBbmNlc3Rvci54IC0gdmlzdWFsT2Zmc2V0cy54LFxuICAgICAgeTogY2xpcHBpbmdBbmNlc3Rvci55IC0gdmlzdWFsT2Zmc2V0cy55LFxuICAgICAgd2lkdGg6IGNsaXBwaW5nQW5jZXN0b3Iud2lkdGgsXG4gICAgICBoZWlnaHQ6IGNsaXBwaW5nQW5jZXN0b3IuaGVpZ2h0XG4gICAgfTtcbiAgfVxuICByZXR1cm4gcmVjdFRvQ2xpZW50UmVjdChyZWN0KTtcbn1cbmZ1bmN0aW9uIGhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvcihlbGVtZW50LCBzdG9wTm9kZSkge1xuICBjb25zdCBwYXJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcbiAgaWYgKHBhcmVudE5vZGUgPT09IHN0b3BOb2RlIHx8ICFpc0VsZW1lbnQocGFyZW50Tm9kZSkgfHwgaXNMYXN0VHJhdmVyc2FibGVOb2RlKHBhcmVudE5vZGUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBnZXRDb21wdXRlZFN0eWxlKHBhcmVudE5vZGUpLnBvc2l0aW9uID09PSAnZml4ZWQnIHx8IGhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvcihwYXJlbnROb2RlLCBzdG9wTm9kZSk7XG59XG5cbi8vIEEgXCJjbGlwcGluZyBhbmNlc3RvclwiIGlzIGFuIGBvdmVyZmxvd2AgZWxlbWVudCB3aXRoIHRoZSBjaGFyYWN0ZXJpc3RpYyBvZlxuLy8gY2xpcHBpbmcgKG9yIGhpZGluZykgY2hpbGQgZWxlbWVudHMuIFRoaXMgcmV0dXJucyBhbGwgY2xpcHBpbmcgYW5jZXN0b3JzXG4vLyBvZiB0aGUgZ2l2ZW4gZWxlbWVudCB1cCB0aGUgdHJlZS5cbmZ1bmN0aW9uIGdldENsaXBwaW5nRWxlbWVudEFuY2VzdG9ycyhlbGVtZW50LCBjYWNoZSkge1xuICBjb25zdCBjYWNoZWRSZXN1bHQgPSBjYWNoZS5nZXQoZWxlbWVudCk7XG4gIGlmIChjYWNoZWRSZXN1bHQpIHtcbiAgICByZXR1cm4gY2FjaGVkUmVzdWx0O1xuICB9XG4gIGxldCByZXN1bHQgPSBnZXRPdmVyZmxvd0FuY2VzdG9ycyhlbGVtZW50LCBbXSwgZmFsc2UpLmZpbHRlcihlbCA9PiBpc0VsZW1lbnQoZWwpICYmIGdldE5vZGVOYW1lKGVsKSAhPT0gJ2JvZHknKTtcbiAgbGV0IGN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlID0gbnVsbDtcbiAgY29uc3QgZWxlbWVudElzRml4ZWQgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uID09PSAnZml4ZWQnO1xuICBsZXQgY3VycmVudE5vZGUgPSBlbGVtZW50SXNGaXhlZCA/IGdldFBhcmVudE5vZGUoZWxlbWVudCkgOiBlbGVtZW50O1xuXG4gIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9Db250YWluaW5nX2Jsb2NrI2lkZW50aWZ5aW5nX3RoZV9jb250YWluaW5nX2Jsb2NrXG4gIHdoaWxlIChpc0VsZW1lbnQoY3VycmVudE5vZGUpICYmICFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUoY3VycmVudE5vZGUpKSB7XG4gICAgY29uc3QgY29tcHV0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoY3VycmVudE5vZGUpO1xuICAgIGNvbnN0IGN1cnJlbnROb2RlSXNDb250YWluaW5nID0gaXNDb250YWluaW5nQmxvY2soY3VycmVudE5vZGUpO1xuICAgIGlmICghY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgY29tcHV0ZWRTdHlsZS5wb3NpdGlvbiA9PT0gJ2ZpeGVkJykge1xuICAgICAgY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUgPSBudWxsO1xuICAgIH1cbiAgICBjb25zdCBzaG91bGREcm9wQ3VycmVudE5vZGUgPSBlbGVtZW50SXNGaXhlZCA/ICFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiAhY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUgOiAhY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgY29tcHV0ZWRTdHlsZS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycgJiYgISFjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSAmJiBbJ2Fic29sdXRlJywgJ2ZpeGVkJ10uaW5jbHVkZXMoY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUucG9zaXRpb24pIHx8IGlzT3ZlcmZsb3dFbGVtZW50KGN1cnJlbnROb2RlKSAmJiAhY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgaGFzRml4ZWRQb3NpdGlvbkFuY2VzdG9yKGVsZW1lbnQsIGN1cnJlbnROb2RlKTtcbiAgICBpZiAoc2hvdWxkRHJvcEN1cnJlbnROb2RlKSB7XG4gICAgICAvLyBEcm9wIG5vbi1jb250YWluaW5nIGJsb2Nrcy5cbiAgICAgIHJlc3VsdCA9IHJlc3VsdC5maWx0ZXIoYW5jZXN0b3IgPT4gYW5jZXN0b3IgIT09IGN1cnJlbnROb2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUmVjb3JkIGxhc3QgY29udGFpbmluZyBibG9jayBmb3IgbmV4dCBpdGVyYXRpb24uXG4gICAgICBjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA9IGNvbXB1dGVkU3R5bGU7XG4gICAgfVxuICAgIGN1cnJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShjdXJyZW50Tm9kZSk7XG4gIH1cbiAgY2FjaGUuc2V0KGVsZW1lbnQsIHJlc3VsdCk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8vIEdldHMgdGhlIG1heGltdW0gYXJlYSB0aGF0IHRoZSBlbGVtZW50IGlzIHZpc2libGUgaW4gZHVlIHRvIGFueSBudW1iZXIgb2Zcbi8vIGNsaXBwaW5nIGFuY2VzdG9ycy5cbmZ1bmN0aW9uIGdldENsaXBwaW5nUmVjdChfcmVmKSB7XG4gIGxldCB7XG4gICAgZWxlbWVudCxcbiAgICBib3VuZGFyeSxcbiAgICByb290Qm91bmRhcnksXG4gICAgc3RyYXRlZ3lcbiAgfSA9IF9yZWY7XG4gIGNvbnN0IGVsZW1lbnRDbGlwcGluZ0FuY2VzdG9ycyA9IGJvdW5kYXJ5ID09PSAnY2xpcHBpbmdBbmNlc3RvcnMnID8gaXNUb3BMYXllcihlbGVtZW50KSA/IFtdIDogZ2V0Q2xpcHBpbmdFbGVtZW50QW5jZXN0b3JzKGVsZW1lbnQsIHRoaXMuX2MpIDogW10uY29uY2F0KGJvdW5kYXJ5KTtcbiAgY29uc3QgY2xpcHBpbmdBbmNlc3RvcnMgPSBbLi4uZWxlbWVudENsaXBwaW5nQW5jZXN0b3JzLCByb290Qm91bmRhcnldO1xuICBjb25zdCBmaXJzdENsaXBwaW5nQW5jZXN0b3IgPSBjbGlwcGluZ0FuY2VzdG9yc1swXTtcbiAgY29uc3QgY2xpcHBpbmdSZWN0ID0gY2xpcHBpbmdBbmNlc3RvcnMucmVkdWNlKChhY2NSZWN0LCBjbGlwcGluZ0FuY2VzdG9yKSA9PiB7XG4gICAgY29uc3QgcmVjdCA9IGdldENsaWVudFJlY3RGcm9tQ2xpcHBpbmdBbmNlc3RvcihlbGVtZW50LCBjbGlwcGluZ0FuY2VzdG9yLCBzdHJhdGVneSk7XG4gICAgYWNjUmVjdC50b3AgPSBtYXgocmVjdC50b3AsIGFjY1JlY3QudG9wKTtcbiAgICBhY2NSZWN0LnJpZ2h0ID0gbWluKHJlY3QucmlnaHQsIGFjY1JlY3QucmlnaHQpO1xuICAgIGFjY1JlY3QuYm90dG9tID0gbWluKHJlY3QuYm90dG9tLCBhY2NSZWN0LmJvdHRvbSk7XG4gICAgYWNjUmVjdC5sZWZ0ID0gbWF4KHJlY3QubGVmdCwgYWNjUmVjdC5sZWZ0KTtcbiAgICByZXR1cm4gYWNjUmVjdDtcbiAgfSwgZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yKGVsZW1lbnQsIGZpcnN0Q2xpcHBpbmdBbmNlc3Rvciwgc3RyYXRlZ3kpKTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogY2xpcHBpbmdSZWN0LnJpZ2h0IC0gY2xpcHBpbmdSZWN0LmxlZnQsXG4gICAgaGVpZ2h0OiBjbGlwcGluZ1JlY3QuYm90dG9tIC0gY2xpcHBpbmdSZWN0LnRvcCxcbiAgICB4OiBjbGlwcGluZ1JlY3QubGVmdCxcbiAgICB5OiBjbGlwcGluZ1JlY3QudG9wXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldERpbWVuc2lvbnMoZWxlbWVudCkge1xuICBjb25zdCB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0XG4gIH0gPSBnZXRDc3NEaW1lbnNpb25zKGVsZW1lbnQpO1xuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRSZWN0UmVsYXRpdmVUb09mZnNldFBhcmVudChlbGVtZW50LCBvZmZzZXRQYXJlbnQsIHN0cmF0ZWd5KSB7XG4gIGNvbnN0IGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ID0gaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICBjb25zdCBkb2N1bWVudEVsZW1lbnQgPSBnZXREb2N1bWVudEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgY29uc3QgaXNGaXhlZCA9IHN0cmF0ZWd5ID09PSAnZml4ZWQnO1xuICBjb25zdCByZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIHRydWUsIGlzRml4ZWQsIG9mZnNldFBhcmVudCk7XG4gIGxldCBzY3JvbGwgPSB7XG4gICAgc2Nyb2xsTGVmdDogMCxcbiAgICBzY3JvbGxUb3A6IDBcbiAgfTtcbiAgY29uc3Qgb2Zmc2V0cyA9IGNyZWF0ZUNvb3JkcygwKTtcbiAgaWYgKGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50IHx8ICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCkge1xuICAgIGlmIChnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpICE9PSAnYm9keScgfHwgaXNPdmVyZmxvd0VsZW1lbnQoZG9jdW1lbnRFbGVtZW50KSkge1xuICAgICAgc2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChvZmZzZXRQYXJlbnQpO1xuICAgIH1cbiAgICBpZiAoaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQpIHtcbiAgICAgIGNvbnN0IG9mZnNldFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3Qob2Zmc2V0UGFyZW50LCB0cnVlLCBpc0ZpeGVkLCBvZmZzZXRQYXJlbnQpO1xuICAgICAgb2Zmc2V0cy54ID0gb2Zmc2V0UmVjdC54ICsgb2Zmc2V0UGFyZW50LmNsaWVudExlZnQ7XG4gICAgICBvZmZzZXRzLnkgPSBvZmZzZXRSZWN0LnkgKyBvZmZzZXRQYXJlbnQuY2xpZW50VG9wO1xuICAgIH0gZWxzZSBpZiAoZG9jdW1lbnRFbGVtZW50KSB7XG4gICAgICAvLyBJZiB0aGUgPGJvZHk+IHNjcm9sbGJhciBhcHBlYXJzIG9uIHRoZSBsZWZ0IChlLmcuIFJUTCBzeXN0ZW1zKS4gVXNlXG4gICAgICAvLyBGaXJlZm94IHdpdGggbGF5b3V0LnNjcm9sbGJhci5zaWRlID0gMyBpbiBhYm91dDpjb25maWcgdG8gdGVzdCB0aGlzLlxuICAgICAgb2Zmc2V0cy54ID0gZ2V0V2luZG93U2Nyb2xsQmFyWChkb2N1bWVudEVsZW1lbnQpO1xuICAgIH1cbiAgfVxuICBjb25zdCBodG1sT2Zmc2V0ID0gZG9jdW1lbnRFbGVtZW50ICYmICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCA/IGdldEhUTUxPZmZzZXQoZG9jdW1lbnRFbGVtZW50LCBzY3JvbGwpIDogY3JlYXRlQ29vcmRzKDApO1xuICBjb25zdCB4ID0gcmVjdC5sZWZ0ICsgc2Nyb2xsLnNjcm9sbExlZnQgLSBvZmZzZXRzLnggLSBodG1sT2Zmc2V0Lng7XG4gIGNvbnN0IHkgPSByZWN0LnRvcCArIHNjcm9sbC5zY3JvbGxUb3AgLSBvZmZzZXRzLnkgLSBodG1sT2Zmc2V0Lnk7XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5LFxuICAgIHdpZHRoOiByZWN0LndpZHRoLFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHRcbiAgfTtcbn1cblxuZnVuY3Rpb24gaXNTdGF0aWNQb3NpdGlvbmVkKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkucG9zaXRpb24gPT09ICdzdGF0aWMnO1xufVxuXG5mdW5jdGlvbiBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQsIHBvbHlmaWxsKSB7XG4gIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSB8fCBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uID09PSAnZml4ZWQnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKHBvbHlmaWxsKSB7XG4gICAgcmV0dXJuIHBvbHlmaWxsKGVsZW1lbnQpO1xuICB9XG4gIGxldCByYXdPZmZzZXRQYXJlbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDtcblxuICAvLyBGaXJlZm94IHJldHVybnMgdGhlIDxodG1sPiBlbGVtZW50IGFzIHRoZSBvZmZzZXRQYXJlbnQgaWYgaXQncyBub24tc3RhdGljLFxuICAvLyB3aGlsZSBDaHJvbWUgYW5kIFNhZmFyaSByZXR1cm4gdGhlIDxib2R5PiBlbGVtZW50LiBUaGUgPGJvZHk+IGVsZW1lbnQgbXVzdFxuICAvLyBiZSB1c2VkIHRvIHBlcmZvcm0gdGhlIGNvcnJlY3QgY2FsY3VsYXRpb25zIGV2ZW4gaWYgdGhlIDxodG1sPiBlbGVtZW50IGlzXG4gIC8vIG5vbi1zdGF0aWMuXG4gIGlmIChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkgPT09IHJhd09mZnNldFBhcmVudCkge1xuICAgIHJhd09mZnNldFBhcmVudCA9IHJhd09mZnNldFBhcmVudC5vd25lckRvY3VtZW50LmJvZHk7XG4gIH1cbiAgcmV0dXJuIHJhd09mZnNldFBhcmVudDtcbn1cblxuLy8gR2V0cyB0aGUgY2xvc2VzdCBhbmNlc3RvciBwb3NpdGlvbmVkIGVsZW1lbnQuIEhhbmRsZXMgc29tZSBlZGdlIGNhc2VzLFxuLy8gc3VjaCBhcyB0YWJsZSBhbmNlc3RvcnMgYW5kIGNyb3NzIGJyb3dzZXIgYnVncy5cbmZ1bmN0aW9uIGdldE9mZnNldFBhcmVudChlbGVtZW50LCBwb2x5ZmlsbCkge1xuICBjb25zdCB3aW4gPSBnZXRXaW5kb3coZWxlbWVudCk7XG4gIGlmIChpc1RvcExheWVyKGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIHdpbjtcbiAgfVxuICBpZiAoIWlzSFRNTEVsZW1lbnQoZWxlbWVudCkpIHtcbiAgICBsZXQgc3ZnT2Zmc2V0UGFyZW50ID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcbiAgICB3aGlsZSAoc3ZnT2Zmc2V0UGFyZW50ICYmICFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUoc3ZnT2Zmc2V0UGFyZW50KSkge1xuICAgICAgaWYgKGlzRWxlbWVudChzdmdPZmZzZXRQYXJlbnQpICYmICFpc1N0YXRpY1Bvc2l0aW9uZWQoc3ZnT2Zmc2V0UGFyZW50KSkge1xuICAgICAgICByZXR1cm4gc3ZnT2Zmc2V0UGFyZW50O1xuICAgICAgfVxuICAgICAgc3ZnT2Zmc2V0UGFyZW50ID0gZ2V0UGFyZW50Tm9kZShzdmdPZmZzZXRQYXJlbnQpO1xuICAgIH1cbiAgICByZXR1cm4gd2luO1xuICB9XG4gIGxldCBvZmZzZXRQYXJlbnQgPSBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQsIHBvbHlmaWxsKTtcbiAgd2hpbGUgKG9mZnNldFBhcmVudCAmJiBpc1RhYmxlRWxlbWVudChvZmZzZXRQYXJlbnQpICYmIGlzU3RhdGljUG9zaXRpb25lZChvZmZzZXRQYXJlbnQpKSB7XG4gICAgb2Zmc2V0UGFyZW50ID0gZ2V0VHJ1ZU9mZnNldFBhcmVudChvZmZzZXRQYXJlbnQsIHBvbHlmaWxsKTtcbiAgfVxuICBpZiAob2Zmc2V0UGFyZW50ICYmIGlzTGFzdFRyYXZlcnNhYmxlTm9kZShvZmZzZXRQYXJlbnQpICYmIGlzU3RhdGljUG9zaXRpb25lZChvZmZzZXRQYXJlbnQpICYmICFpc0NvbnRhaW5pbmdCbG9jayhvZmZzZXRQYXJlbnQpKSB7XG4gICAgcmV0dXJuIHdpbjtcbiAgfVxuICByZXR1cm4gb2Zmc2V0UGFyZW50IHx8IGdldENvbnRhaW5pbmdCbG9jayhlbGVtZW50KSB8fCB3aW47XG59XG5cbmNvbnN0IGdldEVsZW1lbnRSZWN0cyA9IGFzeW5jIGZ1bmN0aW9uIChkYXRhKSB7XG4gIGNvbnN0IGdldE9mZnNldFBhcmVudEZuID0gdGhpcy5nZXRPZmZzZXRQYXJlbnQgfHwgZ2V0T2Zmc2V0UGFyZW50O1xuICBjb25zdCBnZXREaW1lbnNpb25zRm4gPSB0aGlzLmdldERpbWVuc2lvbnM7XG4gIGNvbnN0IGZsb2F0aW5nRGltZW5zaW9ucyA9IGF3YWl0IGdldERpbWVuc2lvbnNGbihkYXRhLmZsb2F0aW5nKTtcbiAgcmV0dXJuIHtcbiAgICByZWZlcmVuY2U6IGdldFJlY3RSZWxhdGl2ZVRvT2Zmc2V0UGFyZW50KGRhdGEucmVmZXJlbmNlLCBhd2FpdCBnZXRPZmZzZXRQYXJlbnRGbihkYXRhLmZsb2F0aW5nKSwgZGF0YS5zdHJhdGVneSksXG4gICAgZmxvYXRpbmc6IHtcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwLFxuICAgICAgd2lkdGg6IGZsb2F0aW5nRGltZW5zaW9ucy53aWR0aCxcbiAgICAgIGhlaWdodDogZmxvYXRpbmdEaW1lbnNpb25zLmhlaWdodFxuICAgIH1cbiAgfTtcbn07XG5cbmZ1bmN0aW9uIGlzUlRMKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkuZGlyZWN0aW9uID09PSAncnRsJztcbn1cblxuY29uc3QgcGxhdGZvcm0gPSB7XG4gIGNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0LFxuICBnZXREb2N1bWVudEVsZW1lbnQsXG4gIGdldENsaXBwaW5nUmVjdCxcbiAgZ2V0T2Zmc2V0UGFyZW50LFxuICBnZXRFbGVtZW50UmVjdHMsXG4gIGdldENsaWVudFJlY3RzLFxuICBnZXREaW1lbnNpb25zLFxuICBnZXRTY2FsZSxcbiAgaXNFbGVtZW50LFxuICBpc1JUTFxufTtcblxuZnVuY3Rpb24gcmVjdHNBcmVFcXVhbChhLCBiKSB7XG4gIHJldHVybiBhLnggPT09IGIueCAmJiBhLnkgPT09IGIueSAmJiBhLndpZHRoID09PSBiLndpZHRoICYmIGEuaGVpZ2h0ID09PSBiLmhlaWdodDtcbn1cblxuLy8gaHR0cHM6Ly9zYW10aG9yLmF1LzIwMjEvb2JzZXJ2aW5nLWRvbS9cbmZ1bmN0aW9uIG9ic2VydmVNb3ZlKGVsZW1lbnQsIG9uTW92ZSkge1xuICBsZXQgaW8gPSBudWxsO1xuICBsZXQgdGltZW91dElkO1xuICBjb25zdCByb290ID0gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpO1xuICBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgIHZhciBfaW87XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgKF9pbyA9IGlvKSA9PSBudWxsIHx8IF9pby5kaXNjb25uZWN0KCk7XG4gICAgaW8gPSBudWxsO1xuICB9XG4gIGZ1bmN0aW9uIHJlZnJlc2goc2tpcCwgdGhyZXNob2xkKSB7XG4gICAgaWYgKHNraXAgPT09IHZvaWQgMCkge1xuICAgICAgc2tpcCA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAodGhyZXNob2xkID09PSB2b2lkIDApIHtcbiAgICAgIHRocmVzaG9sZCA9IDE7XG4gICAgfVxuICAgIGNsZWFudXAoKTtcbiAgICBjb25zdCBlbGVtZW50UmVjdEZvclJvb3RNYXJnaW4gPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHtcbiAgICAgIGxlZnQsXG4gICAgICB0b3AsXG4gICAgICB3aWR0aCxcbiAgICAgIGhlaWdodFxuICAgIH0gPSBlbGVtZW50UmVjdEZvclJvb3RNYXJnaW47XG4gICAgaWYgKCFza2lwKSB7XG4gICAgICBvbk1vdmUoKTtcbiAgICB9XG4gICAgaWYgKCF3aWR0aCB8fCAhaGVpZ2h0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGluc2V0VG9wID0gZmxvb3IodG9wKTtcbiAgICBjb25zdCBpbnNldFJpZ2h0ID0gZmxvb3Iocm9vdC5jbGllbnRXaWR0aCAtIChsZWZ0ICsgd2lkdGgpKTtcbiAgICBjb25zdCBpbnNldEJvdHRvbSA9IGZsb29yKHJvb3QuY2xpZW50SGVpZ2h0IC0gKHRvcCArIGhlaWdodCkpO1xuICAgIGNvbnN0IGluc2V0TGVmdCA9IGZsb29yKGxlZnQpO1xuICAgIGNvbnN0IHJvb3RNYXJnaW4gPSAtaW5zZXRUb3AgKyBcInB4IFwiICsgLWluc2V0UmlnaHQgKyBcInB4IFwiICsgLWluc2V0Qm90dG9tICsgXCJweCBcIiArIC1pbnNldExlZnQgKyBcInB4XCI7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIHJvb3RNYXJnaW4sXG4gICAgICB0aHJlc2hvbGQ6IG1heCgwLCBtaW4oMSwgdGhyZXNob2xkKSkgfHwgMVxuICAgIH07XG4gICAgbGV0IGlzRmlyc3RVcGRhdGUgPSB0cnVlO1xuICAgIGZ1bmN0aW9uIGhhbmRsZU9ic2VydmUoZW50cmllcykge1xuICAgICAgY29uc3QgcmF0aW8gPSBlbnRyaWVzWzBdLmludGVyc2VjdGlvblJhdGlvO1xuICAgICAgaWYgKHJhdGlvICE9PSB0aHJlc2hvbGQpIHtcbiAgICAgICAgaWYgKCFpc0ZpcnN0VXBkYXRlKSB7XG4gICAgICAgICAgcmV0dXJuIHJlZnJlc2goKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXJhdGlvKSB7XG4gICAgICAgICAgLy8gSWYgdGhlIHJlZmVyZW5jZSBpcyBjbGlwcGVkLCB0aGUgcmF0aW8gaXMgMC4gVGhyb3R0bGUgdGhlIHJlZnJlc2hcbiAgICAgICAgICAvLyB0byBwcmV2ZW50IGFuIGluZmluaXRlIGxvb3Agb2YgdXBkYXRlcy5cbiAgICAgICAgICB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHJlZnJlc2goZmFsc2UsIDFlLTcpO1xuICAgICAgICAgIH0sIDEwMDApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlZnJlc2goZmFsc2UsIHJhdGlvKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHJhdGlvID09PSAxICYmICFyZWN0c0FyZUVxdWFsKGVsZW1lbnRSZWN0Rm9yUm9vdE1hcmdpbiwgZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSkpIHtcbiAgICAgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IGV2ZW4gdGhvdWdoIHRoZSByYXRpbyBpcyByZXBvcnRlZCBhcyAxLCB0aGVcbiAgICAgICAgLy8gZWxlbWVudCBpcyBub3QgYWN0dWFsbHkgZnVsbHkgd2l0aGluIHRoZSBJbnRlcnNlY3Rpb25PYnNlcnZlcidzIHJvb3RcbiAgICAgICAgLy8gYXJlYSBhbnltb3JlLiBUaGlzIGNhbiBoYXBwZW4gdW5kZXIgcGVyZm9ybWFuY2UgY29uc3RyYWludHMuIFRoaXMgbWF5XG4gICAgICAgIC8vIGJlIGEgYnVnIGluIHRoZSBicm93c2VyJ3MgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgaW1wbGVtZW50YXRpb24uIFRvXG4gICAgICAgIC8vIHdvcmsgYXJvdW5kIHRoaXMsIHdlIGNvbXBhcmUgdGhlIGVsZW1lbnQncyBib3VuZGluZyByZWN0IG5vdyB3aXRoXG4gICAgICAgIC8vIHdoYXQgaXQgd2FzIGF0IHRoZSB0aW1lIHdlIGNyZWF0ZWQgdGhlIEludGVyc2VjdGlvbk9ic2VydmVyLiBJZiB0aGV5XG4gICAgICAgIC8vIGFyZSBub3QgZXF1YWwgdGhlbiB0aGUgZWxlbWVudCBtb3ZlZCwgc28gd2UgcmVmcmVzaC5cbiAgICAgICAgcmVmcmVzaCgpO1xuICAgICAgfVxuICAgICAgaXNGaXJzdFVwZGF0ZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8vIE9sZGVyIGJyb3dzZXJzIGRvbid0IHN1cHBvcnQgYSBgZG9jdW1lbnRgIGFzIHRoZSByb290IGFuZCB3aWxsIHRocm93IGFuXG4gICAgLy8gZXJyb3IuXG4gICAgdHJ5IHtcbiAgICAgIGlvID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGhhbmRsZU9ic2VydmUsIHtcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgLy8gSGFuZGxlIDxpZnJhbWU+c1xuICAgICAgICByb290OiByb290Lm93bmVyRG9jdW1lbnRcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlvID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGhhbmRsZU9ic2VydmUsIG9wdGlvbnMpO1xuICAgIH1cbiAgICBpby5vYnNlcnZlKGVsZW1lbnQpO1xuICB9XG4gIHJlZnJlc2godHJ1ZSk7XG4gIHJldHVybiBjbGVhbnVwO1xufVxuXG4vKipcbiAqIEF1dG9tYXRpY2FsbHkgdXBkYXRlcyB0aGUgcG9zaXRpb24gb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgd2hlbiBuZWNlc3NhcnkuXG4gKiBTaG91bGQgb25seSBiZSBjYWxsZWQgd2hlbiB0aGUgZmxvYXRpbmcgZWxlbWVudCBpcyBtb3VudGVkIG9uIHRoZSBET00gb3JcbiAqIHZpc2libGUgb24gdGhlIHNjcmVlbi5cbiAqIEByZXR1cm5zIGNsZWFudXAgZnVuY3Rpb24gdGhhdCBzaG91bGQgYmUgaW52b2tlZCB3aGVuIHRoZSBmbG9hdGluZyBlbGVtZW50IGlzXG4gKiByZW1vdmVkIGZyb20gdGhlIERPTSBvciBoaWRkZW4gZnJvbSB0aGUgc2NyZWVuLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2F1dG9VcGRhdGVcbiAqL1xuZnVuY3Rpb24gYXV0b1VwZGF0ZShyZWZlcmVuY2UsIGZsb2F0aW5nLCB1cGRhdGUsIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICBjb25zdCB7XG4gICAgYW5jZXN0b3JTY3JvbGwgPSB0cnVlLFxuICAgIGFuY2VzdG9yUmVzaXplID0gdHJ1ZSxcbiAgICBlbGVtZW50UmVzaXplID0gdHlwZW9mIFJlc2l6ZU9ic2VydmVyID09PSAnZnVuY3Rpb24nLFxuICAgIGxheW91dFNoaWZ0ID0gdHlwZW9mIEludGVyc2VjdGlvbk9ic2VydmVyID09PSAnZnVuY3Rpb24nLFxuICAgIGFuaW1hdGlvbkZyYW1lID0gZmFsc2VcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHJlZmVyZW5jZUVsID0gdW53cmFwRWxlbWVudChyZWZlcmVuY2UpO1xuICBjb25zdCBhbmNlc3RvcnMgPSBhbmNlc3RvclNjcm9sbCB8fCBhbmNlc3RvclJlc2l6ZSA/IFsuLi4ocmVmZXJlbmNlRWwgPyBnZXRPdmVyZmxvd0FuY2VzdG9ycyhyZWZlcmVuY2VFbCkgOiBbXSksIC4uLmdldE92ZXJmbG93QW5jZXN0b3JzKGZsb2F0aW5nKV0gOiBbXTtcbiAgYW5jZXN0b3JzLmZvckVhY2goYW5jZXN0b3IgPT4ge1xuICAgIGFuY2VzdG9yU2Nyb2xsICYmIGFuY2VzdG9yLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHVwZGF0ZSwge1xuICAgICAgcGFzc2l2ZTogdHJ1ZVxuICAgIH0pO1xuICAgIGFuY2VzdG9yUmVzaXplICYmIGFuY2VzdG9yLmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHVwZGF0ZSk7XG4gIH0pO1xuICBjb25zdCBjbGVhbnVwSW8gPSByZWZlcmVuY2VFbCAmJiBsYXlvdXRTaGlmdCA/IG9ic2VydmVNb3ZlKHJlZmVyZW5jZUVsLCB1cGRhdGUpIDogbnVsbDtcbiAgbGV0IHJlb2JzZXJ2ZUZyYW1lID0gLTE7XG4gIGxldCByZXNpemVPYnNlcnZlciA9IG51bGw7XG4gIGlmIChlbGVtZW50UmVzaXplKSB7XG4gICAgcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoX3JlZiA9PiB7XG4gICAgICBsZXQgW2ZpcnN0RW50cnldID0gX3JlZjtcbiAgICAgIGlmIChmaXJzdEVudHJ5ICYmIGZpcnN0RW50cnkudGFyZ2V0ID09PSByZWZlcmVuY2VFbCAmJiByZXNpemVPYnNlcnZlcikge1xuICAgICAgICAvLyBQcmV2ZW50IHVwZGF0ZSBsb29wcyB3aGVuIHVzaW5nIHRoZSBgc2l6ZWAgbWlkZGxld2FyZS5cbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2Zsb2F0aW5nLXVpL2Zsb2F0aW5nLXVpL2lzc3Vlcy8xNzQwXG4gICAgICAgIHJlc2l6ZU9ic2VydmVyLnVub2JzZXJ2ZShmbG9hdGluZyk7XG4gICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHJlb2JzZXJ2ZUZyYW1lKTtcbiAgICAgICAgcmVvYnNlcnZlRnJhbWUgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgIHZhciBfcmVzaXplT2JzZXJ2ZXI7XG4gICAgICAgICAgKF9yZXNpemVPYnNlcnZlciA9IHJlc2l6ZU9ic2VydmVyKSA9PSBudWxsIHx8IF9yZXNpemVPYnNlcnZlci5vYnNlcnZlKGZsb2F0aW5nKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB1cGRhdGUoKTtcbiAgICB9KTtcbiAgICBpZiAocmVmZXJlbmNlRWwgJiYgIWFuaW1hdGlvbkZyYW1lKSB7XG4gICAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKHJlZmVyZW5jZUVsKTtcbiAgICB9XG4gICAgcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShmbG9hdGluZyk7XG4gIH1cbiAgbGV0IGZyYW1lSWQ7XG4gIGxldCBwcmV2UmVmUmVjdCA9IGFuaW1hdGlvbkZyYW1lID8gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KHJlZmVyZW5jZSkgOiBudWxsO1xuICBpZiAoYW5pbWF0aW9uRnJhbWUpIHtcbiAgICBmcmFtZUxvb3AoKTtcbiAgfVxuICBmdW5jdGlvbiBmcmFtZUxvb3AoKSB7XG4gICAgY29uc3QgbmV4dFJlZlJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QocmVmZXJlbmNlKTtcbiAgICBpZiAocHJldlJlZlJlY3QgJiYgIXJlY3RzQXJlRXF1YWwocHJldlJlZlJlY3QsIG5leHRSZWZSZWN0KSkge1xuICAgICAgdXBkYXRlKCk7XG4gICAgfVxuICAgIHByZXZSZWZSZWN0ID0gbmV4dFJlZlJlY3Q7XG4gICAgZnJhbWVJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShmcmFtZUxvb3ApO1xuICB9XG4gIHVwZGF0ZSgpO1xuICByZXR1cm4gKCkgPT4ge1xuICAgIHZhciBfcmVzaXplT2JzZXJ2ZXIyO1xuICAgIGFuY2VzdG9ycy5mb3JFYWNoKGFuY2VzdG9yID0+IHtcbiAgICAgIGFuY2VzdG9yU2Nyb2xsICYmIGFuY2VzdG9yLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHVwZGF0ZSk7XG4gICAgICBhbmNlc3RvclJlc2l6ZSAmJiBhbmNlc3Rvci5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB1cGRhdGUpO1xuICAgIH0pO1xuICAgIGNsZWFudXBJbyA9PSBudWxsIHx8IGNsZWFudXBJbygpO1xuICAgIChfcmVzaXplT2JzZXJ2ZXIyID0gcmVzaXplT2JzZXJ2ZXIpID09IG51bGwgfHwgX3Jlc2l6ZU9ic2VydmVyMi5kaXNjb25uZWN0KCk7XG4gICAgcmVzaXplT2JzZXJ2ZXIgPSBudWxsO1xuICAgIGlmIChhbmltYXRpb25GcmFtZSkge1xuICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUoZnJhbWVJZCk7XG4gICAgfVxuICB9O1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHdpdGggYW4gb2JqZWN0IG9mIG92ZXJmbG93IHNpZGUgb2Zmc2V0cyB0aGF0IGRldGVybWluZSBob3cgbXVjaCB0aGVcbiAqIGVsZW1lbnQgaXMgb3ZlcmZsb3dpbmcgYSBnaXZlbiBjbGlwcGluZyBib3VuZGFyeSBvbiBlYWNoIHNpZGUuXG4gKiAtIHBvc2l0aXZlID0gb3ZlcmZsb3dpbmcgdGhlIGJvdW5kYXJ5IGJ5IHRoYXQgbnVtYmVyIG9mIHBpeGVsc1xuICogLSBuZWdhdGl2ZSA9IGhvdyBtYW55IHBpeGVscyBsZWZ0IGJlZm9yZSBpdCB3aWxsIG92ZXJmbG93XG4gKiAtIDAgPSBsaWVzIGZsdXNoIHdpdGggdGhlIGJvdW5kYXJ5XG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvZGV0ZWN0T3ZlcmZsb3dcbiAqL1xuY29uc3QgZGV0ZWN0T3ZlcmZsb3cgPSBkZXRlY3RPdmVyZmxvdyQxO1xuXG4vKipcbiAqIE1vZGlmaWVzIHRoZSBwbGFjZW1lbnQgYnkgdHJhbnNsYXRpbmcgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYWxvbmcgdGhlXG4gKiBzcGVjaWZpZWQgYXhlcy5cbiAqIEEgbnVtYmVyIChzaG9ydGhhbmQgZm9yIGBtYWluQXhpc2Agb3IgZGlzdGFuY2UpLCBvciBhbiBheGVzIGNvbmZpZ3VyYXRpb25cbiAqIG9iamVjdCBtYXkgYmUgcGFzc2VkLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL29mZnNldFxuICovXG5jb25zdCBvZmZzZXQgPSBvZmZzZXQkMTtcblxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgY2hvb3NpbmcgdGhlIHBsYWNlbWVudFxuICogdGhhdCBoYXMgdGhlIG1vc3Qgc3BhY2UgYXZhaWxhYmxlIGF1dG9tYXRpY2FsbHksIHdpdGhvdXQgbmVlZGluZyB0byBzcGVjaWZ5IGFcbiAqIHByZWZlcnJlZCBwbGFjZW1lbnQuIEFsdGVybmF0aXZlIHRvIGBmbGlwYC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hdXRvUGxhY2VtZW50XG4gKi9cbmNvbnN0IGF1dG9QbGFjZW1lbnQgPSBhdXRvUGxhY2VtZW50JDE7XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IHNoaWZ0aW5nIGl0IGluIG9yZGVyIHRvXG4gKiBrZWVwIGl0IGluIHZpZXcgd2hlbiBpdCB3aWxsIG92ZXJmbG93IHRoZSBjbGlwcGluZyBib3VuZGFyeS5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9zaGlmdFxuICovXG5jb25zdCBzaGlmdCA9IHNoaWZ0JDE7XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IGZsaXBwaW5nIHRoZSBgcGxhY2VtZW50YFxuICogaW4gb3JkZXIgdG8ga2VlcCBpdCBpbiB2aWV3IHdoZW4gdGhlIHByZWZlcnJlZCBwbGFjZW1lbnQocykgd2lsbCBvdmVyZmxvdyB0aGVcbiAqIGNsaXBwaW5nIGJvdW5kYXJ5LiBBbHRlcm5hdGl2ZSB0byBgYXV0b1BsYWNlbWVudGAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvZmxpcFxuICovXG5jb25zdCBmbGlwID0gZmxpcCQxO1xuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdGhhdCBhbGxvd3MgeW91IHRvIGNoYW5nZSB0aGUgc2l6ZSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCDigJRcbiAqIGZvciBpbnN0YW5jZSwgcHJldmVudCBpdCBmcm9tIG92ZXJmbG93aW5nIHRoZSBjbGlwcGluZyBib3VuZGFyeSBvciBtYXRjaCB0aGVcbiAqIHdpZHRoIG9mIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9zaXplXG4gKi9cbmNvbnN0IHNpemUgPSBzaXplJDE7XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBoaWRlIHRoZSBmbG9hdGluZyBlbGVtZW50IGluIGFwcGxpY2FibGUgc2l0dWF0aW9ucywgc3VjaCBhc1xuICogd2hlbiBpdCBpcyBub3QgaW4gdGhlIHNhbWUgY2xpcHBpbmcgY29udGV4dCBhcyB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvaGlkZVxuICovXG5jb25zdCBoaWRlID0gaGlkZSQxO1xuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdG8gcG9zaXRpb24gYW4gaW5uZXIgZWxlbWVudCBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBzbyB0aGF0IGl0XG4gKiBhcHBlYXJzIGNlbnRlcmVkIHRvIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hcnJvd1xuICovXG5jb25zdCBhcnJvdyA9IGFycm93JDE7XG5cbi8qKlxuICogUHJvdmlkZXMgaW1wcm92ZWQgcG9zaXRpb25pbmcgZm9yIGlubGluZSByZWZlcmVuY2UgZWxlbWVudHMgdGhhdCBjYW4gc3BhblxuICogb3ZlciBtdWx0aXBsZSBsaW5lcywgc3VjaCBhcyBoeXBlcmxpbmtzIG9yIHJhbmdlIHNlbGVjdGlvbnMuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvaW5saW5lXG4gKi9cbmNvbnN0IGlubGluZSA9IGlubGluZSQxO1xuXG4vKipcbiAqIEJ1aWx0LWluIGBsaW1pdGVyYCB0aGF0IHdpbGwgc3RvcCBgc2hpZnQoKWAgYXQgYSBjZXJ0YWluIHBvaW50LlxuICovXG5jb25zdCBsaW1pdFNoaWZ0ID0gbGltaXRTaGlmdCQxO1xuXG4vKipcbiAqIENvbXB1dGVzIHRoZSBgeGAgYW5kIGB5YCBjb29yZGluYXRlcyB0aGF0IHdpbGwgcGxhY2UgdGhlIGZsb2F0aW5nIGVsZW1lbnRcbiAqIG5leHQgdG8gYSBnaXZlbiByZWZlcmVuY2UgZWxlbWVudC5cbiAqL1xuY29uc3QgY29tcHV0ZVBvc2l0aW9uID0gKHJlZmVyZW5jZSwgZmxvYXRpbmcsIG9wdGlvbnMpID0+IHtcbiAgLy8gVGhpcyBjYWNoZXMgdGhlIGV4cGVuc2l2ZSBgZ2V0Q2xpcHBpbmdFbGVtZW50QW5jZXN0b3JzYCBmdW5jdGlvbiBzbyB0aGF0XG4gIC8vIG11bHRpcGxlIGxpZmVjeWNsZSByZXNldHMgcmUtdXNlIHRoZSBzYW1lIHJlc3VsdC4gSXQgb25seSBsaXZlcyBmb3IgYVxuICAvLyBzaW5nbGUgY2FsbC4gSWYgb3RoZXIgZnVuY3Rpb25zIGJlY29tZSBleHBlbnNpdmUsIHdlIGNhbiBhZGQgdGhlbSBhcyB3ZWxsLlxuICBjb25zdCBjYWNoZSA9IG5ldyBNYXAoKTtcbiAgY29uc3QgbWVyZ2VkT3B0aW9ucyA9IHtcbiAgICBwbGF0Zm9ybSxcbiAgICAuLi5vcHRpb25zXG4gIH07XG4gIGNvbnN0IHBsYXRmb3JtV2l0aENhY2hlID0ge1xuICAgIC4uLm1lcmdlZE9wdGlvbnMucGxhdGZvcm0sXG4gICAgX2M6IGNhY2hlXG4gIH07XG4gIHJldHVybiBjb21wdXRlUG9zaXRpb24kMShyZWZlcmVuY2UsIGZsb2F0aW5nLCB7XG4gICAgLi4ubWVyZ2VkT3B0aW9ucyxcbiAgICBwbGF0Zm9ybTogcGxhdGZvcm1XaXRoQ2FjaGVcbiAgfSk7XG59O1xuXG5leHBvcnQgeyBhcnJvdywgYXV0b1BsYWNlbWVudCwgYXV0b1VwZGF0ZSwgY29tcHV0ZVBvc2l0aW9uLCBkZXRlY3RPdmVyZmxvdywgZmxpcCwgaGlkZSwgaW5saW5lLCBsaW1pdFNoaWZ0LCBvZmZzZXQsIHBsYXRmb3JtLCBzaGlmdCwgc2l6ZSB9O1xuIiwiaW1wb3J0IHsgYXJyb3cgYXMgYXJyb3ckMSwgY29tcHV0ZVBvc2l0aW9uIH0gZnJvbSAnQGZsb2F0aW5nLXVpL2RvbSc7XG5leHBvcnQgeyBhdXRvUGxhY2VtZW50LCBhdXRvVXBkYXRlLCBjb21wdXRlUG9zaXRpb24sIGRldGVjdE92ZXJmbG93LCBmbGlwLCBnZXRPdmVyZmxvd0FuY2VzdG9ycywgaGlkZSwgaW5saW5lLCBsaW1pdFNoaWZ0LCBvZmZzZXQsIHBsYXRmb3JtLCBzaGlmdCwgc2l6ZSB9IGZyb20gJ0BmbG9hdGluZy11aS9kb20nO1xuaW1wb3J0IHsgaXNOb2RlLCBnZXROb2RlTmFtZSB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscy9kb20nO1xuaW1wb3J0IHsgdW5yZWYsIGNvbXB1dGVkLCByZWYsIHNoYWxsb3dSZWYsIHdhdGNoLCBnZXRDdXJyZW50U2NvcGUsIG9uU2NvcGVEaXNwb3NlLCBzaGFsbG93UmVhZG9ubHkgfSBmcm9tICd2dWUtZGVtaSc7XG5cbmZ1bmN0aW9uIGlzQ29tcG9uZW50UHVibGljSW5zdGFuY2UodGFyZ2V0KSB7XG4gIHJldHVybiB0YXJnZXQgIT0gbnVsbCAmJiB0eXBlb2YgdGFyZ2V0ID09PSAnb2JqZWN0JyAmJiAnJGVsJyBpbiB0YXJnZXQ7XG59XG5mdW5jdGlvbiB1bndyYXBFbGVtZW50KHRhcmdldCkge1xuICBpZiAoaXNDb21wb25lbnRQdWJsaWNJbnN0YW5jZSh0YXJnZXQpKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IHRhcmdldC4kZWw7XG4gICAgcmV0dXJuIGlzTm9kZShlbGVtZW50KSAmJiBnZXROb2RlTmFtZShlbGVtZW50KSA9PT0gJyNjb21tZW50JyA/IG51bGwgOiBlbGVtZW50O1xuICB9XG4gIHJldHVybiB0YXJnZXQ7XG59XG5cbmZ1bmN0aW9uIHRvVmFsdWUoc291cmNlKSB7XG4gIHJldHVybiB0eXBlb2Ygc291cmNlID09PSAnZnVuY3Rpb24nID8gc291cmNlKCkgOiB1bnJlZihzb3VyY2UpO1xufVxuXG4vKipcbiAqIFBvc2l0aW9ucyBhbiBpbm5lciBlbGVtZW50IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IHN1Y2ggdGhhdCBpdCBpcyBjZW50ZXJlZCB0byB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAcGFyYW0gb3B0aW9ucyBUaGUgYXJyb3cgb3B0aW9ucy5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hcnJvd1xuICovXG5mdW5jdGlvbiBhcnJvdyhvcHRpb25zKSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2Fycm93JyxcbiAgICBvcHRpb25zLFxuICAgIGZuKGFyZ3MpIHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSB1bndyYXBFbGVtZW50KHRvVmFsdWUob3B0aW9ucy5lbGVtZW50KSk7XG4gICAgICBpZiAoZWxlbWVudCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcnJvdyQxKHtcbiAgICAgICAgZWxlbWVudCxcbiAgICAgICAgcGFkZGluZzogb3B0aW9ucy5wYWRkaW5nXG4gICAgICB9KS5mbihhcmdzKTtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldERQUihlbGVtZW50KSB7XG4gIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiAxO1xuICB9XG4gIGNvbnN0IHdpbiA9IGVsZW1lbnQub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldyB8fCB3aW5kb3c7XG4gIHJldHVybiB3aW4uZGV2aWNlUGl4ZWxSYXRpbyB8fCAxO1xufVxuXG5mdW5jdGlvbiByb3VuZEJ5RFBSKGVsZW1lbnQsIHZhbHVlKSB7XG4gIGNvbnN0IGRwciA9IGdldERQUihlbGVtZW50KTtcbiAgcmV0dXJuIE1hdGgucm91bmQodmFsdWUgKiBkcHIpIC8gZHByO1xufVxuXG4vKipcbiAqIENvbXB1dGVzIHRoZSBgeGAgYW5kIGB5YCBjb29yZGluYXRlcyB0aGF0IHdpbGwgcGxhY2UgdGhlIGZsb2F0aW5nIGVsZW1lbnQgbmV4dCB0byBhIHJlZmVyZW5jZSBlbGVtZW50IHdoZW4gaXQgaXMgZ2l2ZW4gYSBjZXJ0YWluIENTUyBwb3NpdGlvbmluZyBzdHJhdGVneS5cbiAqIEBwYXJhbSByZWZlcmVuY2UgVGhlIHJlZmVyZW5jZSB0ZW1wbGF0ZSByZWYuXG4gKiBAcGFyYW0gZmxvYXRpbmcgVGhlIGZsb2F0aW5nIHRlbXBsYXRlIHJlZi5cbiAqIEBwYXJhbSBvcHRpb25zIFRoZSBmbG9hdGluZyBvcHRpb25zLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3Z1ZVxuICovXG5mdW5jdGlvbiB1c2VGbG9hdGluZyhyZWZlcmVuY2UsIGZsb2F0aW5nLCBvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgY29uc3Qgd2hpbGVFbGVtZW50c01vdW50ZWRPcHRpb24gPSBvcHRpb25zLndoaWxlRWxlbWVudHNNb3VudGVkO1xuICBjb25zdCBvcGVuT3B0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHZhciBfdG9WYWx1ZTtcbiAgICByZXR1cm4gKF90b1ZhbHVlID0gdG9WYWx1ZShvcHRpb25zLm9wZW4pKSAhPSBudWxsID8gX3RvVmFsdWUgOiB0cnVlO1xuICB9KTtcbiAgY29uc3QgbWlkZGxld2FyZU9wdGlvbiA9IGNvbXB1dGVkKCgpID0+IHRvVmFsdWUob3B0aW9ucy5taWRkbGV3YXJlKSk7XG4gIGNvbnN0IHBsYWNlbWVudE9wdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICB2YXIgX3RvVmFsdWUyO1xuICAgIHJldHVybiAoX3RvVmFsdWUyID0gdG9WYWx1ZShvcHRpb25zLnBsYWNlbWVudCkpICE9IG51bGwgPyBfdG9WYWx1ZTIgOiAnYm90dG9tJztcbiAgfSk7XG4gIGNvbnN0IHN0cmF0ZWd5T3B0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHZhciBfdG9WYWx1ZTM7XG4gICAgcmV0dXJuIChfdG9WYWx1ZTMgPSB0b1ZhbHVlKG9wdGlvbnMuc3RyYXRlZ3kpKSAhPSBudWxsID8gX3RvVmFsdWUzIDogJ2Fic29sdXRlJztcbiAgfSk7XG4gIGNvbnN0IHRyYW5zZm9ybU9wdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICB2YXIgX3RvVmFsdWU0O1xuICAgIHJldHVybiAoX3RvVmFsdWU0ID0gdG9WYWx1ZShvcHRpb25zLnRyYW5zZm9ybSkpICE9IG51bGwgPyBfdG9WYWx1ZTQgOiB0cnVlO1xuICB9KTtcbiAgY29uc3QgcmVmZXJlbmNlRWxlbWVudCA9IGNvbXB1dGVkKCgpID0+IHVud3JhcEVsZW1lbnQocmVmZXJlbmNlLnZhbHVlKSk7XG4gIGNvbnN0IGZsb2F0aW5nRWxlbWVudCA9IGNvbXB1dGVkKCgpID0+IHVud3JhcEVsZW1lbnQoZmxvYXRpbmcudmFsdWUpKTtcbiAgY29uc3QgeCA9IHJlZigwKTtcbiAgY29uc3QgeSA9IHJlZigwKTtcbiAgY29uc3Qgc3RyYXRlZ3kgPSByZWYoc3RyYXRlZ3lPcHRpb24udmFsdWUpO1xuICBjb25zdCBwbGFjZW1lbnQgPSByZWYocGxhY2VtZW50T3B0aW9uLnZhbHVlKTtcbiAgY29uc3QgbWlkZGxld2FyZURhdGEgPSBzaGFsbG93UmVmKHt9KTtcbiAgY29uc3QgaXNQb3NpdGlvbmVkID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgZmxvYXRpbmdTdHlsZXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgaW5pdGlhbFN0eWxlcyA9IHtcbiAgICAgIHBvc2l0aW9uOiBzdHJhdGVneS52YWx1ZSxcbiAgICAgIGxlZnQ6ICcwJyxcbiAgICAgIHRvcDogJzAnXG4gICAgfTtcbiAgICBpZiAoIWZsb2F0aW5nRWxlbWVudC52YWx1ZSkge1xuICAgICAgcmV0dXJuIGluaXRpYWxTdHlsZXM7XG4gICAgfVxuICAgIGNvbnN0IHhWYWwgPSByb3VuZEJ5RFBSKGZsb2F0aW5nRWxlbWVudC52YWx1ZSwgeC52YWx1ZSk7XG4gICAgY29uc3QgeVZhbCA9IHJvdW5kQnlEUFIoZmxvYXRpbmdFbGVtZW50LnZhbHVlLCB5LnZhbHVlKTtcbiAgICBpZiAodHJhbnNmb3JtT3B0aW9uLnZhbHVlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5pbml0aWFsU3R5bGVzLFxuICAgICAgICB0cmFuc2Zvcm06IFwidHJhbnNsYXRlKFwiICsgeFZhbCArIFwicHgsIFwiICsgeVZhbCArIFwicHgpXCIsXG4gICAgICAgIC4uLihnZXREUFIoZmxvYXRpbmdFbGVtZW50LnZhbHVlKSA+PSAxLjUgJiYge1xuICAgICAgICAgIHdpbGxDaGFuZ2U6ICd0cmFuc2Zvcm0nXG4gICAgICAgIH0pXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgcG9zaXRpb246IHN0cmF0ZWd5LnZhbHVlLFxuICAgICAgbGVmdDogeFZhbCArIFwicHhcIixcbiAgICAgIHRvcDogeVZhbCArIFwicHhcIlxuICAgIH07XG4gIH0pO1xuICBsZXQgd2hpbGVFbGVtZW50c01vdW50ZWRDbGVhbnVwO1xuICBmdW5jdGlvbiB1cGRhdGUoKSB7XG4gICAgaWYgKHJlZmVyZW5jZUVsZW1lbnQudmFsdWUgPT0gbnVsbCB8fCBmbG9hdGluZ0VsZW1lbnQudmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBvcGVuID0gb3Blbk9wdGlvbi52YWx1ZTtcbiAgICBjb21wdXRlUG9zaXRpb24ocmVmZXJlbmNlRWxlbWVudC52YWx1ZSwgZmxvYXRpbmdFbGVtZW50LnZhbHVlLCB7XG4gICAgICBtaWRkbGV3YXJlOiBtaWRkbGV3YXJlT3B0aW9uLnZhbHVlLFxuICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnRPcHRpb24udmFsdWUsXG4gICAgICBzdHJhdGVneTogc3RyYXRlZ3lPcHRpb24udmFsdWVcbiAgICB9KS50aGVuKHBvc2l0aW9uID0+IHtcbiAgICAgIHgudmFsdWUgPSBwb3NpdGlvbi54O1xuICAgICAgeS52YWx1ZSA9IHBvc2l0aW9uLnk7XG4gICAgICBzdHJhdGVneS52YWx1ZSA9IHBvc2l0aW9uLnN0cmF0ZWd5O1xuICAgICAgcGxhY2VtZW50LnZhbHVlID0gcG9zaXRpb24ucGxhY2VtZW50O1xuICAgICAgbWlkZGxld2FyZURhdGEudmFsdWUgPSBwb3NpdGlvbi5taWRkbGV3YXJlRGF0YTtcbiAgICAgIC8qKlxuICAgICAgICogVGhlIGZsb2F0aW5nIGVsZW1lbnQncyBwb3NpdGlvbiBtYXkgYmUgcmVjb21wdXRlZCB3aGlsZSBpdCdzIGNsb3NlZFxuICAgICAgICogYnV0IHN0aWxsIG1vdW50ZWQgKHN1Y2ggYXMgd2hlbiB0cmFuc2l0aW9uaW5nIG91dCkuIFRvIGVuc3VyZVxuICAgICAgICogYGlzUG9zaXRpb25lZGAgd2lsbCBiZSBgZmFsc2VgIGluaXRpYWxseSBvbiB0aGUgbmV4dCBvcGVuLCBhdm9pZFxuICAgICAgICogc2V0dGluZyBpdCB0byBgdHJ1ZWAgd2hlbiBgb3BlbiA9PT0gZmFsc2VgIChtdXN0IGJlIHNwZWNpZmllZCkuXG4gICAgICAgKi9cbiAgICAgIGlzUG9zaXRpb25lZC52YWx1ZSA9IG9wZW4gIT09IGZhbHNlO1xuICAgIH0pO1xuICB9XG4gIGZ1bmN0aW9uIGNsZWFudXAoKSB7XG4gICAgaWYgKHR5cGVvZiB3aGlsZUVsZW1lbnRzTW91bnRlZENsZWFudXAgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHdoaWxlRWxlbWVudHNNb3VudGVkQ2xlYW51cCgpO1xuICAgICAgd2hpbGVFbGVtZW50c01vdW50ZWRDbGVhbnVwID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBhdHRhY2goKSB7XG4gICAgY2xlYW51cCgpO1xuICAgIGlmICh3aGlsZUVsZW1lbnRzTW91bnRlZE9wdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB1cGRhdGUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHJlZmVyZW5jZUVsZW1lbnQudmFsdWUgIT0gbnVsbCAmJiBmbG9hdGluZ0VsZW1lbnQudmFsdWUgIT0gbnVsbCkge1xuICAgICAgd2hpbGVFbGVtZW50c01vdW50ZWRDbGVhbnVwID0gd2hpbGVFbGVtZW50c01vdW50ZWRPcHRpb24ocmVmZXJlbmNlRWxlbWVudC52YWx1ZSwgZmxvYXRpbmdFbGVtZW50LnZhbHVlLCB1cGRhdGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiByZXNldCgpIHtcbiAgICBpZiAoIW9wZW5PcHRpb24udmFsdWUpIHtcbiAgICAgIGlzUG9zaXRpb25lZC52YWx1ZSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuICB3YXRjaChbbWlkZGxld2FyZU9wdGlvbiwgcGxhY2VtZW50T3B0aW9uLCBzdHJhdGVneU9wdGlvbiwgb3Blbk9wdGlvbl0sIHVwZGF0ZSwge1xuICAgIGZsdXNoOiAnc3luYydcbiAgfSk7XG4gIHdhdGNoKFtyZWZlcmVuY2VFbGVtZW50LCBmbG9hdGluZ0VsZW1lbnRdLCBhdHRhY2gsIHtcbiAgICBmbHVzaDogJ3N5bmMnXG4gIH0pO1xuICB3YXRjaChvcGVuT3B0aW9uLCByZXNldCwge1xuICAgIGZsdXNoOiAnc3luYydcbiAgfSk7XG4gIGlmIChnZXRDdXJyZW50U2NvcGUoKSkge1xuICAgIG9uU2NvcGVEaXNwb3NlKGNsZWFudXApO1xuICB9XG4gIHJldHVybiB7XG4gICAgeDogc2hhbGxvd1JlYWRvbmx5KHgpLFxuICAgIHk6IHNoYWxsb3dSZWFkb25seSh5KSxcbiAgICBzdHJhdGVneTogc2hhbGxvd1JlYWRvbmx5KHN0cmF0ZWd5KSxcbiAgICBwbGFjZW1lbnQ6IHNoYWxsb3dSZWFkb25seShwbGFjZW1lbnQpLFxuICAgIG1pZGRsZXdhcmVEYXRhOiBzaGFsbG93UmVhZG9ubHkobWlkZGxld2FyZURhdGEpLFxuICAgIGlzUG9zaXRpb25lZDogc2hhbGxvd1JlYWRvbmx5KGlzUG9zaXRpb25lZCksXG4gICAgZmxvYXRpbmdTdHlsZXMsXG4gICAgdXBkYXRlXG4gIH07XG59XG5cbmV4cG9ydCB7IGFycm93LCB1c2VGbG9hdGluZyB9O1xuIiwiZXhwb3J0IGNvbnN0IGlzQ2xpY2tPdXRzaWRlID0gKGV2ZW50OiBNb3VzZUV2ZW50LCBlbGVtZW50czogSFRNTEVsZW1lbnQgfCBIVE1MRWxlbWVudFtdKTogYm9vbGVhbiA9PiB7XG4gIGNvbnN0IHRhcmdldHMgPSBBcnJheS5pc0FycmF5KGVsZW1lbnRzKSA/IGVsZW1lbnRzIDogW2VsZW1lbnRzXTtcbiAgcmV0dXJuICF0YXJnZXRzLnNvbWUoKGVsKSA9PiBlbC5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSkpO1xufTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGF1dG9QbGFjZW1lbnQsIGF1dG9VcGRhdGUsIG9mZnNldCBhcyBvZmZzZXRNaWRkbGV3YXJlLCBzaGlmdCwgdXNlRmxvYXRpbmcgfSBmcm9tICdAZmxvYXRpbmctdWkvdnVlJztcbiAgaW1wb3J0IHsgY29tcHV0ZWQsIG9uQmVmb3JlTW91bnQsIG9uTW91bnRlZCwgb25Vbm1vdW50ZWQsIHJlZiwgd2F0Y2gsIHdhdGNoRWZmZWN0IH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IGlzQ2xpY2tPdXRzaWRlIH0gZnJvbSAnQC91dGlsaXRpZXMvZXZlbnQnO1xuICBpbXBvcnQgeyBUT1BfTEFZRVJfSUQsIGluaXRGYXV4VG9wTGF5ZXIgfSBmcm9tICdAL3V0aWxpdGllcy92aWV3cG9ydCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgYW5jaG9ySWQ6IHN0cmluZztcbiAgICBvZmZzZXQ/OiBudW1iZXI7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBvZmZzZXQ6IDE2LFxuICB9KTtcblxuICBjb25zdCBhbmNob3I6IFJlZjxIVE1MRWxlbWVudCB8IG51bGw+ID0gcmVmKG51bGwpO1xuICBjb25zdCBmbG9hdGluZzogUmVmPEhUTUxFbGVtZW50IHwgbnVsbD4gPSByZWYobnVsbCk7XG4gIGNvbnN0IHJvb3Q6IFJlZjxIVE1MRWxlbWVudCB8IG51bGw+ID0gcmVmKG51bGwpO1xuICBjb25zdCBpc0hvdmVyZWQgPSByZWYoZmFsc2UpO1xuICBjb25zdCBpc1RvZ2dsZWRPcGVuID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgbWlkZGxld2FyZSA9IHJlZihbYXV0b1BsYWNlbWVudCgpLCBvZmZzZXRNaWRkbGV3YXJlKHsgbWFpbkF4aXM6IHByb3BzLm9mZnNldCB9KSwgc2hpZnQoeyBwYWRkaW5nOiAxNiB9KV0pO1xuXG4gIGNvbnN0IGlzU2hvd1BvcG92ZXIgPSBjb21wdXRlZCgoKSA9PiBpc0hvdmVyZWQudmFsdWUgfHwgaXNUb2dnbGVkT3Blbi52YWx1ZSk7XG5cbiAgY29uc3QgeyBmbG9hdGluZ1N0eWxlcyB9ID0gdXNlRmxvYXRpbmcoYW5jaG9yLCBmbG9hdGluZywge1xuICAgIG1pZGRsZXdhcmUsXG4gICAgc3RyYXRlZ3k6ICdmaXhlZCcsXG4gICAgd2hpbGVFbGVtZW50c01vdW50ZWQ6IGF1dG9VcGRhdGUsXG4gIH0pO1xuXG4gIGNvbnN0IGhhbmRsZVBlcm1hbmVudE9wZW5Cb2R5Q2xpY2sgPSAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgIGlmICghYW5jaG9yLnZhbHVlIHx8ICFmbG9hdGluZy52YWx1ZSkgcmV0dXJuO1xuICAgIGlmIChpc0NsaWNrT3V0c2lkZShlLCBbYW5jaG9yLnZhbHVlLCBmbG9hdGluZy52YWx1ZV0pKSB7XG4gICAgICBpc1RvZ2dsZWRPcGVuLnZhbHVlID0gZmFsc2U7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVBbmNob3JFbGVtZW50TW91c2VPdmVyID0gKCkgPT4ge1xuICAgIGlzSG92ZXJlZC52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQW5jaG9yRWxlbWVudE1vdXNlTGVhdmUgPSAoKSA9PiB7XG4gICAgaXNIb3ZlcmVkLnZhbHVlID0gZmFsc2U7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQW5jaG9yRWxlbWVudENsaWNrID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKGlzVG9nZ2xlZE9wZW4udmFsdWUpIHtcbiAgICAgIGlzVG9nZ2xlZE9wZW4udmFsdWUgPSBmYWxzZTtcbiAgICAgIGlzSG92ZXJlZC52YWx1ZSA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpc1RvZ2dsZWRPcGVuLnZhbHVlID0gdHJ1ZTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgYWRkTGlzdGVuZXJzVG9BbmNob3JFbGVtZW50ID0gKCkgPT4ge1xuICAgIGlmICghYW5jaG9yLnZhbHVlKSByZXR1cm4gbnVsbDtcbiAgICBhbmNob3IudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VvdmVyJywgaGFuZGxlQW5jaG9yRWxlbWVudE1vdXNlT3Zlcik7XG4gICAgYW5jaG9yLnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCBoYW5kbGVBbmNob3JFbGVtZW50TW91c2VMZWF2ZSk7XG4gICAgYW5jaG9yLnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQW5jaG9yRWxlbWVudENsaWNrKTtcbiAgfTtcblxuICBjb25zdCByZW1vdmVMaXN0ZW5lcnNGcm9tQW5jaG9yRWxlbWVudCA9ICgpID0+IHtcbiAgICBpZiAoIWFuY2hvci52YWx1ZSkgcmV0dXJuIG51bGw7XG4gICAgYW5jaG9yLnZhbHVlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlb3ZlcicsIGhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZU92ZXIpO1xuICAgIGFuY2hvci52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgaGFuZGxlQW5jaG9yRWxlbWVudE1vdXNlTGVhdmUpO1xuICAgIGFuY2hvci52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUFuY2hvckVsZW1lbnRDbGljayk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlUGVybWFuZW50T3BlbkJvZHlLZXlkb3duID0gKGU6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICBpZiAoZS5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICBpc1RvZ2dsZWRPcGVuLnZhbHVlID0gZmFsc2U7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGFkZE9wZW5MaXN0ZW5lcnNUb1Jvb3QgPSAoKSA9PiB7XG4gICAgaWYgKCFyb290LnZhbHVlKSByZXR1cm47XG4gICAgcm9vdC52YWx1ZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZVBlcm1hbmVudE9wZW5Cb2R5Q2xpY2ssIHRydWUpO1xuICAgIHJvb3QudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGhhbmRsZVBlcm1hbmVudE9wZW5Cb2R5S2V5ZG93bik7XG4gIH07XG5cbiAgY29uc3QgcmVtb3ZlT3Blbkxpc3RlbmVyc0Zyb21Sb290ID0gKCkgPT4ge1xuICAgIGlmICghcm9vdC52YWx1ZSkgcmV0dXJuO1xuICAgIHJvb3QudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUNsaWNrLCB0cnVlKTtcbiAgICByb290LnZhbHVlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUtleWRvd24pO1xuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZUFuY2hvckVsZW1lbnQgPSAoKSA9PiB7XG4gICAgYW5jaG9yLnZhbHVlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocHJvcHMuYW5jaG9ySWQpO1xuICB9O1xuXG4gIHdhdGNoKFxuICAgICgpID0+IGlzVG9nZ2xlZE9wZW4udmFsdWUsXG4gICAgKG5ld1ZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUpIHtcbiAgICAgICAgYWRkT3Blbkxpc3RlbmVyc1RvUm9vdCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVtb3ZlT3Blbkxpc3RlbmVyc0Zyb21Sb290KCk7XG4gICAgICB9XG4gICAgfVxuICApO1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLmFuY2hvcklkLFxuICAgICgpID0+IHtcbiAgICAgIHJlbW92ZUxpc3RlbmVyc0Zyb21BbmNob3JFbGVtZW50KCk7XG4gICAgICB1cGRhdGVBbmNob3JFbGVtZW50KCk7XG4gICAgICBhZGRMaXN0ZW5lcnNUb0FuY2hvckVsZW1lbnQoKTtcbiAgICB9XG4gICk7XG5cbiAgd2F0Y2hFZmZlY3QoKCkgPT4ge1xuICAgIG1pZGRsZXdhcmUudmFsdWUgPSBbYXV0b1BsYWNlbWVudCgpLCBvZmZzZXRNaWRkbGV3YXJlKHsgbWFpbkF4aXM6IHByb3BzLm9mZnNldCB9KSwgc2hpZnQoeyBwYWRkaW5nOiAxNiB9KV07XG4gIH0pO1xuXG4gIG9uQmVmb3JlTW91bnQoKCkgPT4ge1xuICAgIGluaXRGYXV4VG9wTGF5ZXIoKTtcbiAgfSk7XG5cbiAgb25Nb3VudGVkKCgpID0+IHtcbiAgICB1cGRhdGVBbmNob3JFbGVtZW50KCk7XG4gICAgcm9vdC52YWx1ZSA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICBhZGRMaXN0ZW5lcnNUb0FuY2hvckVsZW1lbnQoKTtcbiAgfSk7XG5cbiAgb25Vbm1vdW50ZWQoKCkgPT4ge1xuICAgIHJlbW92ZUxpc3RlbmVyc0Zyb21BbmNob3JFbGVtZW50KCk7XG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPFRlbGVwb3J0IDp0bz1cImAjJHtUT1BfTEFZRVJfSUR9YFwiPlxuICAgIDxUcmFuc2l0aW9uPlxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtcG9wb3ZlcicsXG4gICAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgICBDU1MuQk9SREVSLkNPTE9SLkxPVyxcbiAgICAgICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzIsXG4gICAgICAgICAgQ1NTLlBBRERJTkcuRlVMTC5PTkUsXG4gICAgICAgICAgQ1NTLlNIQURPVy5CT1RUT00sXG4gICAgICAgIF1cIlxuICAgICAgICByZWY9XCJmbG9hdGluZ1wiXG4gICAgICAgIDpzdHlsZT1cInsgLi4uZmxvYXRpbmdTdHlsZXMgfVwiXG4gICAgICAgIHYtc2hvdz1cImlzU2hvd1BvcG92ZXJcIlxuICAgICAgPlxuICAgICAgICA8c2xvdCAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9UcmFuc2l0aW9uPlxuICA8L1RlbGVwb3J0PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtcG9wb3ZlciB7XG4gICAgbWF4LXdpZHRoOiAyNTZweDtcbiAgfVxuICAudi1lbnRlci1mcm9tLFxuICAudi1sZWF2ZS10byB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuICAudi1lbnRlci1hY3RpdmUsXG4gIC52LWxlYXZlLWFjdGl2ZSB7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG4gIC52LWVudGVyLXRvLFxuICAudi1sZWF2ZS1mcm9tIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBUQVJHRVQgfSBmcm9tICdAL3R5cGVzL1RhcmdldCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBMaW5rIH0gZnJvbSAnQC90eXBlcy9MaW5rJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGhlYWRpbmc/OiBzdHJpbmc7XG4gICAgbGlua3M6IExpbmtbXTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGhlYWRpbmc6ICcnLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxzZWN0aW9uIGNsYXNzPVwidGlkZS1zZW8tbGlua3NcIj5cbiAgICA8aDIgOmNsYXNzPVwiW0NTUy5NQVJHSU4uQk9UVE9NLkhBTEZdXCI+XG4gICAgICB7eyBwcm9wcy5oZWFkaW5nIH19XG4gICAgPC9oMj5cblxuICAgIDx1bCA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguV1JBUCwgQ1NTLkdBUC5UV08sIENTUy5MSVNUX0JVTExFVFMuT0ZGXVwiPlxuICAgICAgPGxpXG4gICAgICAgIDpjbGFzcz1cIlsndGlkZS1zZW8tbGluaycsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5HQVAuUVVBUlRFUiwgQ1NTLkZPTlQuUk9MRS5CT0RZXzJdXCJcbiAgICAgICAgOmtleT1cImxpbmsubGFiZWxcIlxuICAgICAgICB2LWZvcj1cImxpbmsgaW4gcHJvcHMubGlua3NcIlxuICAgICAgPlxuICAgICAgICA8YVxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuVU5ERVJMSU5FLlJFU1QuT0ZGXVwiXG4gICAgICAgICAgOmhyZWY9XCJsaW5rLnVybFwiXG4gICAgICAgICAgOnRhcmdldD1cImxpbmsuaXNOZXdUYWIgPyBUQVJHRVQuQkxBTksgOiBUQVJHRVQuU0VMRlwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBsaW5rLmxhYmVsIH19XG4gICAgICAgIDwvYT5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgPC9zZWN0aW9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLyogVE9ETzogUmVmYWN0b3IgdG8gYWNjZXB0IGJyZWFrcG9pbnQgcHJvcCBpbiBvcmRlciB0byBhY2NvbXBsaXNoIHRoaXMgd2l0aCBuZWl0aGVyIGN1c3RvbSBicmVha3BvaW50cyBub3IgZGVwZW5kZW5jeSBvbiBWaWV3cG9ydFN0b3JlLiAqL1xuICAudGlkZS1zZW8tbGluayB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cblxuICBAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcbiAgICAudGlkZS1zZW8tbGluayB7XG4gICAgICB3aWR0aDogY2FsYygoMTAwJSAtIDJyZW0pIC8gMik7XG4gICAgfVxuICB9XG5cbiAgQG1lZGlhIChtaW4td2lkdGg6IDEyMzJweCkge1xuICAgIC50aWRlLXNlby1saW5rIHtcbiAgICAgIHdpZHRoOiBjYWxjKCgxMDAlIC0gNnJlbSkgLyA0KTtcbiAgICB9XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBvbkJlZm9yZU1vdW50LCBvbk1vdW50ZWQsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlQnV0dG9uSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUJ1dHRvbkljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFBSSU9SSVRZIH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgVE9QX0xBWUVSX0lELCBpbml0RmF1eFRvcExheWVyLCBzZXRTY3JvbGxMb2NrIH0gZnJvbSAnQC91dGlsaXRpZXMvdmlld3BvcnQnO1xuXG4gIGltcG9ydCBUaWRlRGl2aWRlciBmcm9tICcuL1RpZGVEaXZpZGVyLnZ1ZSc7XG5cbiAgaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaXNPcGVuOiBib29sZWFuO1xuICAgIGlzQmFja0J1dHRvbj86IGJvb2xlYW47XG4gIH07XG4gIGNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHM8UHJvcHM+KCk7XG5cbiAgdHlwZSBFbWl0cyA9IHtcbiAgICAoZTogJ2JhY2snKTogdm9pZDtcbiAgICAoZTogJ2Nsb3NlJyk6IHZvaWQ7XG4gIH07XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPEVtaXRzPigpO1xuXG4gIGNvbnN0IGRpYWxvZ0VsZW1lbnQ6IFJlZjxIVE1MRGlhbG9nRWxlbWVudCB8IG51bGw+ID0gcmVmKG51bGwpO1xuXG4gIGNvbnN0IHRyaWdnZXJOYXRpdmVEaWFsb2dPcGVuID0gKCkgPT4ge1xuICAgIGRpYWxvZ0VsZW1lbnQudmFsdWU/LnNob3dNb2RhbCgpO1xuICB9O1xuXG4gIGNvbnN0IHRyaWdnZXJOYXRpdmVEaWFsb2dDbG9zZSA9ICgpID0+IHtcbiAgICBkaWFsb2dFbGVtZW50LnZhbHVlPy5jbG9zZSgpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUJhY2tkcm9wQ2xpY2sgPSAoKSA9PiB7XG4gICAgZW1pdCgnY2xvc2UnKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVFc2NhcGVLZXlkb3duID0gKGU6IEV2ZW50KSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGVtaXQoJ2Nsb3NlJyk7XG4gIH07XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMuaXNPcGVuLFxuICAgIChuZXdWYWx1ZSkgPT4ge1xuICAgICAgaWYgKCFkaWFsb2dFbGVtZW50LnZhbHVlKSByZXR1cm47XG4gICAgICBpZiAobmV3VmFsdWUpIHtcbiAgICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ09wZW4oKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyaWdnZXJOYXRpdmVEaWFsb2dDbG9zZSgpO1xuICAgICAgfVxuICAgICAgc2V0U2Nyb2xsTG9jayhuZXdWYWx1ZSk7XG4gICAgfVxuICApO1xuXG4gIG9uQmVmb3JlTW91bnQoKCkgPT4ge1xuICAgIGluaXRGYXV4VG9wTGF5ZXIoKTtcbiAgfSk7XG5cbiAgb25Nb3VudGVkKCgpID0+IHtcbiAgICBpZiAocHJvcHMuaXNPcGVuKSB7XG4gICAgICB0cmlnZ2VyTmF0aXZlRGlhbG9nT3BlbigpO1xuICAgIH1cbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8VGVsZXBvcnQgOnRvPVwiYCMke1RPUF9MQVlFUl9JRH1gXCI+XG4gICAgPGRpYWxvZ1xuICAgICAgOmNsYXNzPVwiWyd0aWRlLXNoZWV0JywgQ1NTLkJHLklOSVRJQUwsIENTUy5IRUlHSFQuRlVMTCwgQ1NTLldJRFRILkZVTEwsIENTUy5PVkVSRkxPVy5YWS5ISURERU5dXCJcbiAgICAgIHJlZj1cImRpYWxvZ0VsZW1lbnRcIlxuICAgICAgQGNsaWNrLnNlbGY9XCJoYW5kbGVCYWNrZHJvcENsaWNrXCJcbiAgICAgIEBjbG9zZS5wcmV2ZW50XG4gICAgICBAa2V5ZG93bi5lc2NhcGU9XCJoYW5kbGVFc2NhcGVLZXlkb3duXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1zaGVldC1ib2R5JyxcbiAgICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgICAgICBDU1MuSEVJR0hULkZVTEwsXG4gICAgICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgXVwiXG4gICAgICA+XG4gICAgICAgIDxoZWFkZXJcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgICAgQ1NTLklTT0xBVElPTi5JU09MQVRFLFxuICAgICAgICAgICAgQ1NTLlBBRERJTkcuVE9QLk9ORSxcbiAgICAgICAgICAgIENTUy5QQURESU5HLlguT05FLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICAgICAgQ1NTLlpfSU5ERVguT05FLFxuICAgICAgICAgIF1cIlxuICAgICAgICA+XG4gICAgICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZMRVguR1JPVy5PRkYsIENTUy5GTEVYLlNIUklOSy5PRkZdXCJcbiAgICAgICAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX0xFRlRcIlxuICAgICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgICAgICBAY2xpY2s9XCJlbWl0KCdiYWNrJylcIlxuICAgICAgICAgICAgdi1pZj1cImlzQmFja0J1dHRvblwiXG4gICAgICAgICAgLz5cblxuICAgICAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5GTEVYLkdST1cuT0ZGLCBDU1MuRkxFWC5TSFJJTksuT0ZGLCBDU1MuTUFSR0lOLkxFRlQuQVVUT11cIlxuICAgICAgICAgICAgOmljb249XCJJQ09OLkNMT1NFXCJcbiAgICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICAgICAgQGNsaWNrPVwiZW1pdCgnY2xvc2UnKVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgPFRpZGVEaXZpZGVyIC8+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLXNoZWV0LWNvbnRlbnQnLFxuICAgICAgICAgICAgQ1NTLkRJU1BMQVkuR1JJRCxcbiAgICAgICAgICAgIENTUy5PVkVSRkxPVy5ZLkFVVE8sXG4gICAgICAgICAgICBDU1MuT1ZFUkZMT1cuWC5ISURERU4sXG4gICAgICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgICAgIENTUy5QQURESU5HLkJPVFRPTS5PTkUsXG4gICAgICAgICAgICBDU1MuSVNPTEFUSU9OLklTT0xBVEUsXG4gICAgICAgICAgXVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2xvdCAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGlhbG9nPlxuICA8L1RlbGVwb3J0PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtc2hlZXQge1xuICAgIC0tc2hlZXQtcGFkZGluZy14OiB2YXIoLS10aWRlLXNwYWNpbmctMSk7XG4gICAgbWF4LXdpZHRoOiB1bnNldDtcbiAgICBtYXgtaGVpZ2h0OiB1bnNldDtcbiAgICBqdXN0aWZ5LWl0ZW1zOiByaWdodDtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS10aWRlLWFuaW1hdGUpIGFsbG93LWRpc2NyZXRlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbiAgfVxuXG4gIC50aWRlLXNoZWV0W29wZW5dIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSk7XG4gIH1cblxuICAudGlkZS1zaGVldDo6YmFja2Ryb3Age1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS10aWRlLWFuaW1hdGUpIGFsbG93LWRpc2NyZXRlO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigwcHgpO1xuICB9XG5cbiAgLnRpZGUtc2hlZXRbb3Blbl06OmJhY2tkcm9wIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLXRyYW5zcGFyZW50LTQwMCk7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiB2YXIoLS10aWRlLWJnLWJsdXIpO1xuICB9XG5cbiAgLnRpZGUtc2hlZXQtYm9keSB7XG4gICAgbWF4LXdpZHRoOiBtaW4oY2FsYygxMDB2dyAtIHZhcigtLXRpZGUtc3BhY2luZy0yKSksIDMxMXB4KTtcbiAgfVxuXG4gIC50aWRlLXNoZWV0LWNvbnRlbnQge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogdmFyKC0tc2hlZXQtcGFkZGluZy14KSAxZnIgdmFyKC0tc2hlZXQtcGFkZGluZy14KTtcbiAgfVxuXG4gIDp3aGVyZSgudGlkZS1zaGVldC1jb250ZW50KTpkZWVwKD4gOndoZXJlKCopKSB7XG4gICAgZ3JpZC1jb2x1bW46IDI7XG4gIH1cblxuICBAc3RhcnRpbmctc3R5bGUge1xuICAgIC50aWRlLXNoZWV0W29wZW5dIHtcbiAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gICAgfVxuXG4gICAgLnRpZGUtc2hlZXRbb3Blbl06OmJhY2tkcm9wIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYmFja2Ryb3AtZmlsdGVyOiB2YXIoLS10aWRlLWJnLWJsdXIpO1xuICAgIH1cbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgaXNBY3RpdmU/OiBib29sZWFuO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGlzQWN0aXZlOiBmYWxzZSxcbiAgfSk7XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzKFsnY2hhbmdlJ10pO1xuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKCkgPT4ge1xuICAgIGlmICghcHJvcHMuZGlzYWJsZWQpIHtcbiAgICAgIGVtaXQoJ2NoYW5nZScpO1xuICAgIH1cbiAgfTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxidXR0b25cbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1zd2l0Y2gnLFxuICAgICAgcHJvcHMuaXNBY3RpdmUgPyAnYWN0aXZlJyA6ICcnLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgIHByb3BzLmlzQWN0aXZlID8gJycgOiBDU1MuQk9SREVSLkNPTE9SLkRFRkFVTFQsXG4gICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgcHJvcHMuaXNBY3RpdmUgPyBDU1MuQkcuU0VDT05EQVJZIDogQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICBdXCJcbiAgICA6ZGlzYWJsZWQ9XCJwcm9wcy5kaXNhYmxlZFwiXG4gICAgQGNsaWNrPVwiaGFuZGxlQ2xpY2tcIlxuICAgIGFyaWEtbGFiZWw9XCJTd2l0Y2hcIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1zd2l0Y2gtaW5kaWNhdG9yJyxcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgICBwcm9wcy5pc0FjdGl2ZSA/IENTUy5CRy5TVVJGQUNFLkRFRkFVTFQgOiBDU1MuQkcuU0VDT05EQVJZLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDppY29uPVwiSUNPTi5DSEVDS1wiXG4gICAgICAgIDpzaXplPVwiU0laRS5MQVJHRVwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuICA8L2J1dHRvbj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLXN3aXRjaCB7XG4gICAgd2lkdGg6IDY0cHg7XG4gICAgaGVpZ2h0OiAzMnB4O1xuICAgIHRyYW5zaXRpb246IHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogYmFja2dyb3VuZC1jb2xvcjtcbiAgfVxuXG4gIC50aWRlLXN3aXRjaDpkaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogdmFyKC0tdGlkZS1vcGFjaXR5KTtcbiAgfVxuXG4gIC50aWRlLXN3aXRjaC5hY3RpdmUge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1zZWNvbmRhcnkpO1xuICB9XG5cbiAgLnRpZGUtc3dpdGNoLmFjdGl2ZSAudGlkZS1zd2l0Y2gtaW5kaWNhdG9yIHtcbiAgICBsZWZ0OiAzNnB4O1xuICB9XG5cbiAgLnRpZGUtc3dpdGNoLWluZGljYXRvciB7XG4gICAgbGVmdDogNHB4O1xuICAgIHRyYW5zaXRpb246IHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogbGVmdCwgYm9yZGVyLWNvbG9yLCBiYWNrZ3JvdW5kLWNvbG9yO1xuICB9XG48L3N0eWxlPlxuIl0sIm5hbWVzIjpbIk9SSUVOVEFUSU9OIiwiQ1NTIiwidXRpbGl0aWVzIiwiYnJlYWtwb2ludCIsInV0aWxpdHkiLCJwcm9wcyIsIl9fcHJvcHMiLCJfb3BlbkJsb2NrIiwiX2NyZWF0ZUVsZW1lbnRCbG9jayIsIl9ob2lzdGVkXzEiLCJfY3JlYXRlRWxlbWVudFZOb2RlIiwiX25vcm1hbGl6ZUNsYXNzIiwiX3VucmVmIiwiUkVBTE0iLCJTSVpFIiwiU0laRV9CVVRUT04iLCJmb3JtYXROdW1iZXIiLCJpbnB1dCIsIm91dHB1dCIsImRpZ2l0cyIsImZvcm1hdFBhc2NhbENhc2UiLCJ3b3JkIiwiZm9ybWF0UGhvbmUiLCJmb3JtYXRQcmljZSIsImlubmVyU1ZHIiwicmVmIiwid2F0Y2giLCJpZCIsIm5hbWUiLCJwcmVmaXgiLCJyZWFsbUZvbGRlciIsImNvbXBvbmVudCIsImRlZmluZUFzeW5jQ29tcG9uZW50IiwiX192YXJpYWJsZUR5bmFtaWNJbXBvcnRSdW50aW1lSGVscGVyIiwibWFya1JhdyIsIl9jcmVhdGVCbG9jayIsIl9yZXNvbHZlRHluYW1pY0NvbXBvbmVudCIsIklDT04iLCJJQ09OX1JFQUxNIiwiZW1pdCIsIl9fZW1pdCIsImhhbmRsZVRvZ2dsZUNsaWNrIiwiVGlkZURpdmlkZXIiLCJfdG9EaXNwbGF5U3RyaW5nIiwiX2NyZWF0ZVZOb2RlIiwiVGlkZUljb24iLCJfcmVuZGVyU2xvdCIsIl9jdHgiLCJFTEVNRU5UIiwiRUxFTUVOVF9URVhUX0FTX0lDT04iLCJQUklPUklUWSIsIlRBUkdFVCIsIkFMRVJUIiwiaWNvblR5cGUiLCJjb21wdXRlZCIsIlRpZGVCdXR0b25JY29uIiwiQkFER0VfQ09MT1IiLCJCQURHRV9DT0xPUl9ERVRBSUxTIiwiQkFER0VfVFJVU1RFRCIsIl9GcmFnbWVudCIsImNydW1iIiwiaW5kZXgiLCJfaG9pc3RlZF8yIiwiX2hvaXN0ZWRfMyIsIl9jcmVhdGVUZXh0Vk5vZGUiLCJoYW5kbGVDbGljayIsInRhYiIsIiRldmVudCIsIlRZUEVfQ0FSRCIsImNvbnRhaW5lclJlZiIsImlzRmlyc3RTbGlkZSIsImlzTGFzdFNsaWRlIiwic2hvd0J1dHRvbnMiLCJzbGlkZU9ic2VydmVyIiwic2xpZGVzSW5WaWV3Iiwic2xvdE9ic2VydmVyIiwic2xpZGVzIiwiaGFuZGxlU2Nyb2xsIiwidXBkYXRlQ29udGFpbmVyQmxlZWQiLCJvYnNlcnZlU2xpZGVzIiwib3B0aW9ucyIsImVudHJpZXMiLCJzbGlkZXNBZGRlZFRvVmlldyIsImVudHJ5Iiwic2xpZGVJbmRleCIsInNsaWRlIiwiYSIsImNoaWxkIiwib2JzZXJ2ZVNsb3QiLCJvYnNlcnZlckNhbGxiYWNrIiwic2Nyb2xsVG9PZmZzZXQiLCJ0YXJnZXQiLCJzaG93TmV4dFBhZ2UiLCJuZXh0U2xpZGUiLCJzaG93UHJldmlvdXNQYWdlIiwicHJldmlvdXNTbGlkZSIsIl9hIiwic2hvd05leHRTbGlkZSIsInNob3dQcmV2aW91c1NsaWRlIiwib25Nb3VudGVkIiwib25Vbm1vdW50ZWQiLCJfYiIsIl9jYWNoZSIsIl9ob2lzdGVkXzQiLCJfaG9pc3RlZF81IiwiT0JKRUNUX0ZJVCIsImltYWdlRGVmYXVsdCIsInBpY3R1cmUiLCJpbWciLCJvYmplY3RGaXRDbGFzc05hbWUiLCJzZXRJbWFnZUZyb21EZWZhdWx0IiwiY3VycmVudFNyYyIsInBpY3R1cmVTb3VyY2UiLCJfbm9ybWFsaXplU3R5bGUiLCJfcmVuZGVyTGlzdCIsInNvdXJjZSIsIlRpZGVJbWFnZSIsIkZPUk1fS0VZIiwidXNlVGlkZUZvcm0iLCJmb3JjZVNob3dFcnJvcnMiLCJwcm92aWRlIiwidXNlRm9ybUNvbnRleHQiLCJpbmplY3QiLCJlcnJvck1lc3NhZ2VEZWZhdWx0IiwiVkFMSURBVElPTl9SRVNVTFQiLCJjaGVja0Zvcm1hdCIsImZvcm1hdCIsIm1lc3NhZ2UiLCJ2YWx1ZSIsInJlc3VsdCIsImdldEZpZWxkTGVuZ3RoSXNWYWxpZCIsIm1heGxlbmd0aCIsIm1pbmxlbmd0aCIsInJlcXVpcmVkIiwiaXNFbXB0eUFuZFVucmVxdWlyZWQiLCJpc1Rvb0xvbmciLCJnZXRGaWVsZFZhbGlkYXRpb25SZXN1bHQiLCJlcnJvckZyb21Qcm9wcyIsInZhbGlkYXRvcnMiLCJ2YWxpZGF0aW9uIiwidmFsaWRhdGVQcm9wZXJ0eSIsImxlbmd0aFZhbGlkYXRpb24iLCJ2YWxpZGF0ZUxlbmd0aCIsInJlc3BvbnNlIiwidmFsaWRhdG9yIiwibW9kZWxWYWx1ZSIsIl91c2VNb2RlbCIsImZvcm1Db250ZXh0IiwiaXNWYWxpZGF0aW5nIiwiZXJyb3JSZWYiLCJmb3JtYXR0ZWRMYWJlbCIsImlzQ2hlY2tlZCIsInNob3dFcnJvciIsImhhc0Vycm9yRnJvbVByb3AiLCJzdXBwb3J0aW5nVGV4dE1lc3NhZ2UiLCJnZXRDaGVja2JveFZhbGlkYXRpb25SZXN1bHQiLCJ3YXRjaEVmZmVjdCIsIm5ld1ZhbHVlIiwiVGlkZUlucHV0U3VwcG9ydGluZ1RleHQiLCJfX2RlZmF1bHRfXyIsImNoZWNrZWQiLCJvbGRWYWx1ZSIsIkZPUk1BVCIsIkZPUk1BVF9SRUdFWCIsIlZBTElEQVRPUiIsIkVSUk9SX0RJU1BMQVkiLCJoYXNGb2N1cyIsImlucHV0SWQiLCJ1c2VJZCIsInNlbGVjdEVsZW1lbnQiLCJoYXNNaW5pbGFiZWwiLCJpc0VtcHR5IiwiZXhwYW5kT3B0aW9ucyIsImV2ZW50IiwiaGFuZGxlRm9jdXMiLCJoYW5kbGVGb2N1c091dCIsIm9wdGdyb3VwIiwib3B0aW9uIiwiX2hvaXN0ZWRfNiIsImdldEVycm9yTWVzc2FnZSIsImVycm9yRnJvbVJlZiIsImdldEZpZWxkSGFzRXJyb3IiLCJoYW5kbGVGaWVsZFZhbGlkYXRpb24iLCJlcnJvciIsImVycm9yTWVzc2FnZSIsImhhc0Vycm9yIiwiX19leHBvc2UiLCJURVhUX0lOUFVUX1RZUEUiLCJJTlBVVF9NT0RFIiwiZ2V0VGV4dElucHV0TW9kZSIsInR5cGUiLCJpbnB1dG1vZGUiLCJpbnB1dEVsZW1lbnQiLCJzaG93UGFzc3dvcmQiLCJpbnB1dE1vZGVBdHRyaWJ1dGUiLCJpbnB1dFR5cGUiLCJzaG91bGRTaG93Q2xlYXJCdXR0b24iLCJzaG91bGRTaG93UGFzc3dvcmRCdXR0b24iLCJoYW5kbGVDbGVhciIsImhhbmRsZUZpZWxkQ2xpY2siLCJwcmV2ZW50SW5wdXRGb2N1c0xvc3NPbk1vdXNlZG93biIsImUiLCJoYXNDbGVhciIsImhhbmRsZVZhbGlkYXRpb24iLCJoYW5kbGVJbnB1dCIsInVwZGF0ZVZhbHVlIiwidGV4dGFyZWFFbGVtZW50IiwicHJldmVudFRleHRhcmVhRm9jdXNMb3NzT25Nb3VzZWRvd24iLCJCUkVBS1BPSU5UIiwiTUVESUEiLCJzZXRTY3JvbGxMb2NrIiwiaXNMb2NrZWQiLCJib2R5Iiwic2Nyb2xsWSIsIm5leHRUaWNrIiwic2F2ZWRTY3JvbGxZIiwiVE9QX0xBWUVSX0lEIiwiaW5pdEZhdXhUb3BMYXllciIsInRvcExheWVyIiwibW9kYWxDb250ZW50IiwibW9kYWxEaWFsb2ciLCJ0cmlnZ2VyTmF0aXZlRGlhbG9nT3BlbiIsInRyaWdnZXJOYXRpdmVEaWFsb2dDbG9zZSIsInNjcm9sbENvbnRlbnRUb1RvcCIsImhhbmRsZUJhY2tkcm9wQ2xpY2siLCJoYW5kbGVFc2NhcGVLZXlkb3duIiwiJHNsb3RzIiwicGFnZUN1cnJlbnQiLCJwYWdpbmF0aW9uQnV0dG9ucyIsImVtcHR5IiwicGFnaW5hdGlvbkJ1dHRvbiIsIlRpZGVCdXR0b25QYWdpbmF0aW9uIiwic2lkZXMiLCJhbGlnbm1lbnRzIiwicGxhY2VtZW50cyIsImFjYyIsInNpZGUiLCJtaW4iLCJtYXgiLCJyb3VuZCIsImZsb29yIiwiY3JlYXRlQ29vcmRzIiwidiIsIm9wcG9zaXRlU2lkZU1hcCIsIm9wcG9zaXRlQWxpZ25tZW50TWFwIiwiY2xhbXAiLCJzdGFydCIsImVuZCIsImV2YWx1YXRlIiwicGFyYW0iLCJnZXRTaWRlIiwicGxhY2VtZW50IiwiZ2V0QWxpZ25tZW50IiwiZ2V0T3Bwb3NpdGVBeGlzIiwiYXhpcyIsImdldEF4aXNMZW5ndGgiLCJnZXRTaWRlQXhpcyIsImdldEFsaWdubWVudEF4aXMiLCJnZXRBbGlnbm1lbnRTaWRlcyIsInJlY3RzIiwicnRsIiwiYWxpZ25tZW50IiwiYWxpZ25tZW50QXhpcyIsImxlbmd0aCIsIm1haW5BbGlnbm1lbnRTaWRlIiwiZ2V0T3Bwb3NpdGVQbGFjZW1lbnQiLCJnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudCIsImV4cGFuZFBhZGRpbmdPYmplY3QiLCJwYWRkaW5nIiwiZ2V0UGFkZGluZ09iamVjdCIsInJlY3RUb0NsaWVudFJlY3QiLCJyZWN0IiwieCIsInkiLCJ3aWR0aCIsImhlaWdodCIsImNvbXB1dGVDb29yZHNGcm9tUGxhY2VtZW50IiwiX3JlZiIsInJlZmVyZW5jZSIsImZsb2F0aW5nIiwic2lkZUF4aXMiLCJhbGlnbkxlbmd0aCIsImlzVmVydGljYWwiLCJjb21tb25YIiwiY29tbW9uWSIsImNvbW1vbkFsaWduIiwiY29vcmRzIiwiY29tcHV0ZVBvc2l0aW9uIiwiY29uZmlnIiwic3RyYXRlZ3kiLCJtaWRkbGV3YXJlIiwicGxhdGZvcm0iLCJ2YWxpZE1pZGRsZXdhcmUiLCJzdGF0ZWZ1bFBsYWNlbWVudCIsIm1pZGRsZXdhcmVEYXRhIiwicmVzZXRDb3VudCIsImkiLCJmbiIsIm5leHRYIiwibmV4dFkiLCJkYXRhIiwicmVzZXQiLCJkZXRlY3RPdmVyZmxvdyIsInN0YXRlIiwiX2F3YWl0JHBsYXRmb3JtJGlzRWxlIiwiZWxlbWVudHMiLCJib3VuZGFyeSIsInJvb3RCb3VuZGFyeSIsImVsZW1lbnRDb250ZXh0IiwiYWx0Qm91bmRhcnkiLCJwYWRkaW5nT2JqZWN0IiwiZWxlbWVudCIsImNsaXBwaW5nQ2xpZW50UmVjdCIsIm9mZnNldFBhcmVudCIsIm9mZnNldFNjYWxlIiwiZWxlbWVudENsaWVudFJlY3QiLCJnZXRQbGFjZW1lbnRMaXN0IiwiYXV0b0FsaWdubWVudCIsImFsbG93ZWRQbGFjZW1lbnRzIiwiYXV0b1BsYWNlbWVudCIsIl9taWRkbGV3YXJlRGF0YSRhdXRvUCIsIl9taWRkbGV3YXJlRGF0YSRhdXRvUDIiLCJfcGxhY2VtZW50c1RoYXRGaXRPbkUiLCJjcm9zc0F4aXMiLCJkZXRlY3RPdmVyZmxvd09wdGlvbnMiLCJwbGFjZW1lbnRzJDEiLCJvdmVyZmxvdyIsImN1cnJlbnRJbmRleCIsImN1cnJlbnRQbGFjZW1lbnQiLCJhbGlnbm1lbnRTaWRlcyIsImN1cnJlbnRPdmVyZmxvd3MiLCJhbGxPdmVyZmxvd3MiLCJuZXh0UGxhY2VtZW50IiwicGxhY2VtZW50c1NvcnRlZEJ5TW9zdFNwYWNlIiwiZCIsInJlc2V0UGxhY2VtZW50IiwiY29udmVydFZhbHVlVG9Db29yZHMiLCJtYWluQXhpc011bHRpIiwiY3Jvc3NBeGlzTXVsdGkiLCJyYXdWYWx1ZSIsIm1haW5BeGlzIiwib2Zmc2V0IiwiX21pZGRsZXdhcmVEYXRhJG9mZnNlIiwiX21pZGRsZXdhcmVEYXRhJGFycm93IiwiZGlmZkNvb3JkcyIsInNoaWZ0IiwiY2hlY2tNYWluQXhpcyIsImNoZWNrQ3Jvc3NBeGlzIiwibGltaXRlciIsIm1haW5BeGlzQ29vcmQiLCJjcm9zc0F4aXNDb29yZCIsIm1pblNpZGUiLCJtYXhTaWRlIiwibGltaXRlZENvb3JkcyIsImhhc1dpbmRvdyIsImdldE5vZGVOYW1lIiwibm9kZSIsImlzTm9kZSIsImdldFdpbmRvdyIsIl9ub2RlJG93bmVyRG9jdW1lbnQiLCJnZXREb2N1bWVudEVsZW1lbnQiLCJpc0VsZW1lbnQiLCJpc0hUTUxFbGVtZW50IiwiaXNTaGFkb3dSb290IiwiaXNPdmVyZmxvd0VsZW1lbnQiLCJvdmVyZmxvd1giLCJvdmVyZmxvd1kiLCJkaXNwbGF5IiwiZ2V0Q29tcHV0ZWRTdHlsZSIsImlzVGFibGVFbGVtZW50IiwiaXNUb3BMYXllciIsInNlbGVjdG9yIiwiaXNDb250YWluaW5nQmxvY2siLCJlbGVtZW50T3JDc3MiLCJ3ZWJraXQiLCJpc1dlYktpdCIsImNzcyIsImdldENvbnRhaW5pbmdCbG9jayIsImN1cnJlbnROb2RlIiwiZ2V0UGFyZW50Tm9kZSIsImlzTGFzdFRyYXZlcnNhYmxlTm9kZSIsImdldE5vZGVTY3JvbGwiLCJnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3RvciIsInBhcmVudE5vZGUiLCJnZXRPdmVyZmxvd0FuY2VzdG9ycyIsImxpc3QiLCJ0cmF2ZXJzZUlmcmFtZXMiLCJfbm9kZSRvd25lckRvY3VtZW50MiIsInNjcm9sbGFibGVBbmNlc3RvciIsImlzQm9keSIsIndpbiIsImZyYW1lRWxlbWVudCIsImdldEZyYW1lRWxlbWVudCIsImdldENzc0RpbWVuc2lvbnMiLCJoYXNPZmZzZXQiLCJvZmZzZXRXaWR0aCIsIm9mZnNldEhlaWdodCIsInNob3VsZEZhbGxiYWNrIiwidW53cmFwRWxlbWVudCIsImdldFNjYWxlIiwiZG9tRWxlbWVudCIsIiQiLCJub09mZnNldHMiLCJnZXRWaXN1YWxPZmZzZXRzIiwic2hvdWxkQWRkVmlzdWFsT2Zmc2V0cyIsImlzRml4ZWQiLCJmbG9hdGluZ09mZnNldFBhcmVudCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImluY2x1ZGVTY2FsZSIsImlzRml4ZWRTdHJhdGVneSIsImNsaWVudFJlY3QiLCJzY2FsZSIsInZpc3VhbE9mZnNldHMiLCJvZmZzZXRXaW4iLCJjdXJyZW50V2luIiwiY3VycmVudElGcmFtZSIsImlmcmFtZVNjYWxlIiwiaWZyYW1lUmVjdCIsImxlZnQiLCJ0b3AiLCJnZXRXaW5kb3dTY3JvbGxCYXJYIiwibGVmdFNjcm9sbCIsImdldEhUTUxPZmZzZXQiLCJkb2N1bWVudEVsZW1lbnQiLCJzY3JvbGwiLCJpZ25vcmVTY3JvbGxiYXJYIiwiaHRtbFJlY3QiLCJjb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdCIsIm9mZnNldHMiLCJpc09mZnNldFBhcmVudEFuRWxlbWVudCIsIm9mZnNldFJlY3QiLCJodG1sT2Zmc2V0IiwiZ2V0Q2xpZW50UmVjdHMiLCJnZXREb2N1bWVudFJlY3QiLCJodG1sIiwiZ2V0Vmlld3BvcnRSZWN0IiwidmlzdWFsVmlld3BvcnQiLCJ2aXN1YWxWaWV3cG9ydEJhc2VkIiwiZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QiLCJnZXRDbGllbnRSZWN0RnJvbUNsaXBwaW5nQW5jZXN0b3IiLCJjbGlwcGluZ0FuY2VzdG9yIiwiaGFzRml4ZWRQb3NpdGlvbkFuY2VzdG9yIiwic3RvcE5vZGUiLCJnZXRDbGlwcGluZ0VsZW1lbnRBbmNlc3RvcnMiLCJjYWNoZSIsImNhY2hlZFJlc3VsdCIsImVsIiwiY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUiLCJlbGVtZW50SXNGaXhlZCIsImNvbXB1dGVkU3R5bGUiLCJjdXJyZW50Tm9kZUlzQ29udGFpbmluZyIsImFuY2VzdG9yIiwiZ2V0Q2xpcHBpbmdSZWN0IiwiY2xpcHBpbmdBbmNlc3RvcnMiLCJmaXJzdENsaXBwaW5nQW5jZXN0b3IiLCJjbGlwcGluZ1JlY3QiLCJhY2NSZWN0IiwiZ2V0RGltZW5zaW9ucyIsImdldFJlY3RSZWxhdGl2ZVRvT2Zmc2V0UGFyZW50IiwiaXNTdGF0aWNQb3NpdGlvbmVkIiwiZ2V0VHJ1ZU9mZnNldFBhcmVudCIsInBvbHlmaWxsIiwicmF3T2Zmc2V0UGFyZW50IiwiZ2V0T2Zmc2V0UGFyZW50Iiwic3ZnT2Zmc2V0UGFyZW50IiwiZ2V0RWxlbWVudFJlY3RzIiwiZ2V0T2Zmc2V0UGFyZW50Rm4iLCJnZXREaW1lbnNpb25zRm4iLCJmbG9hdGluZ0RpbWVuc2lvbnMiLCJpc1JUTCIsInJlY3RzQXJlRXF1YWwiLCJiIiwib2JzZXJ2ZU1vdmUiLCJvbk1vdmUiLCJpbyIsInRpbWVvdXRJZCIsInJvb3QiLCJjbGVhbnVwIiwiX2lvIiwicmVmcmVzaCIsInNraXAiLCJ0aHJlc2hvbGQiLCJlbGVtZW50UmVjdEZvclJvb3RNYXJnaW4iLCJpbnNldFRvcCIsImluc2V0UmlnaHQiLCJpbnNldEJvdHRvbSIsImluc2V0TGVmdCIsImlzRmlyc3RVcGRhdGUiLCJoYW5kbGVPYnNlcnZlIiwicmF0aW8iLCJhdXRvVXBkYXRlIiwidXBkYXRlIiwiYW5jZXN0b3JTY3JvbGwiLCJhbmNlc3RvclJlc2l6ZSIsImVsZW1lbnRSZXNpemUiLCJsYXlvdXRTaGlmdCIsImFuaW1hdGlvbkZyYW1lIiwicmVmZXJlbmNlRWwiLCJhbmNlc3RvcnMiLCJjbGVhbnVwSW8iLCJyZW9ic2VydmVGcmFtZSIsInJlc2l6ZU9ic2VydmVyIiwiZmlyc3RFbnRyeSIsIl9yZXNpemVPYnNlcnZlciIsImZyYW1lSWQiLCJwcmV2UmVmUmVjdCIsImZyYW1lTG9vcCIsIm5leHRSZWZSZWN0IiwiX3Jlc2l6ZU9ic2VydmVyMiIsIm9mZnNldCQxIiwiYXV0b1BsYWNlbWVudCQxIiwic2hpZnQkMSIsIm1lcmdlZE9wdGlvbnMiLCJwbGF0Zm9ybVdpdGhDYWNoZSIsImNvbXB1dGVQb3NpdGlvbiQxIiwiaXNDb21wb25lbnRQdWJsaWNJbnN0YW5jZSIsInRvVmFsdWUiLCJ1bnJlZiIsImdldERQUiIsInJvdW5kQnlEUFIiLCJkcHIiLCJ1c2VGbG9hdGluZyIsIndoaWxlRWxlbWVudHNNb3VudGVkT3B0aW9uIiwib3Blbk9wdGlvbiIsIl90b1ZhbHVlIiwibWlkZGxld2FyZU9wdGlvbiIsInBsYWNlbWVudE9wdGlvbiIsIl90b1ZhbHVlMiIsInN0cmF0ZWd5T3B0aW9uIiwiX3RvVmFsdWUzIiwidHJhbnNmb3JtT3B0aW9uIiwiX3RvVmFsdWU0IiwicmVmZXJlbmNlRWxlbWVudCIsImZsb2F0aW5nRWxlbWVudCIsInNoYWxsb3dSZWYiLCJpc1Bvc2l0aW9uZWQiLCJmbG9hdGluZ1N0eWxlcyIsImluaXRpYWxTdHlsZXMiLCJ4VmFsIiwieVZhbCIsIndoaWxlRWxlbWVudHNNb3VudGVkQ2xlYW51cCIsIm9wZW4iLCJwb3NpdGlvbiIsImF0dGFjaCIsImdldEN1cnJlbnRTY29wZSIsIm9uU2NvcGVEaXNwb3NlIiwic2hhbGxvd1JlYWRvbmx5IiwiaXNDbGlja091dHNpZGUiLCJhbmNob3IiLCJpc0hvdmVyZWQiLCJpc1RvZ2dsZWRPcGVuIiwib2Zmc2V0TWlkZGxld2FyZSIsImlzU2hvd1BvcG92ZXIiLCJoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUNsaWNrIiwiaGFuZGxlQW5jaG9yRWxlbWVudE1vdXNlT3ZlciIsImhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZUxlYXZlIiwiaGFuZGxlQW5jaG9yRWxlbWVudENsaWNrIiwiYWRkTGlzdGVuZXJzVG9BbmNob3JFbGVtZW50IiwicmVtb3ZlTGlzdGVuZXJzRnJvbUFuY2hvckVsZW1lbnQiLCJoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUtleWRvd24iLCJhZGRPcGVuTGlzdGVuZXJzVG9Sb290IiwicmVtb3ZlT3Blbkxpc3RlbmVyc0Zyb21Sb290IiwidXBkYXRlQW5jaG9yRWxlbWVudCIsIm9uQmVmb3JlTW91bnQiLCJfVGVsZXBvcnQiLCJfVHJhbnNpdGlvbiIsImxpbmsiLCJkaWFsb2dFbGVtZW50Il0sIm1hcHBpbmdzIjoidUdBQWFBLEdBQWMsQ0FDekIsV0FBWSxhQUNaLFNBQVUsVUFDWixFQ0NhQyxFQUFNLENBQ2pCLGVBQWdCLENBQUNDLEVBQXFCQyxJQUM3QkQsRUFBVSxJQUFLRSxHQUFZLEdBQUdELENBQVUsSUFBSUMsQ0FBTyxFQUFFLEVBRTlELE1BQU8sQ0FDTCxFQUFHLENBQ0QsT0FBUSxtQkFDUixRQUFTLG9CQUNULEtBQU0saUJBQ04sTUFBTyxpQkFBQSxFQUVULEVBQUcsQ0FDRCxRQUFTLHFCQUNULE9BQVEsbUJBQUEs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
|