tide-design-system 2.4.5 → 2.4.6

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.
Files changed (45) hide show
  1. package/dist/css/reset.css +1 -1
  2. package/dist/css/utilities-responsive.css +0 -546
  3. package/dist/style.css +1 -1
  4. package/dist/tide-design-system.cjs +2 -2
  5. package/dist/tide-design-system.esm.d.ts +19 -6
  6. package/dist/tide-design-system.esm.js +1201 -1170
  7. package/dist/utilities/storybook.ts +6 -2
  8. package/dist/utilities/validation.ts +1 -1
  9. package/index.ts +4 -4
  10. package/package.json +1 -1
  11. package/src/assets/css/reset.css +1 -1
  12. package/src/assets/css/utilities-responsive.css +0 -546
  13. package/src/components/TideButton.vue +14 -4
  14. package/src/components/TideButtonIcon.vue +12 -2
  15. package/src/components/TideButtonPagination.vue +11 -16
  16. package/src/components/TideButtonSegmented.vue +1 -0
  17. package/src/components/TideCard.vue +11 -2
  18. package/src/components/TideCarousel.vue +9 -4
  19. package/src/components/TideChipAction.vue +1 -0
  20. package/src/components/TideChipFilter.vue +1 -0
  21. package/src/components/TideChipInput.vue +1 -0
  22. package/src/components/TideIcon.vue +1 -1
  23. package/src/components/TideImage.vue +9 -9
  24. package/src/components/TideInputText.vue +2 -0
  25. package/src/components/TideInputTextDeprecated.vue +2 -0
  26. package/src/components/TideInputTextarea.vue +2 -2
  27. package/src/components/TideLink.vue +2 -1
  28. package/src/components/TideModal.vue +91 -85
  29. package/src/components/TideSwitch.vue +1 -0
  30. package/src/stories/TideButtonPagination.stories.ts +6 -6
  31. package/src/stories/TideCarousel.stories.ts +0 -1
  32. package/src/stories/TideInputCheckbox.stories.ts +58 -23
  33. package/src/stories/TideInputRadio.stories.ts +39 -30
  34. package/src/stories/TideInputSelect.stories.ts +51 -27
  35. package/src/stories/TideInputText.stories.ts +83 -23
  36. package/src/stories/TideInputTextarea.stories.ts +66 -17
  37. package/src/stories/TideLink.stories.ts +1 -14
  38. package/src/stories/TidePagination.stories.ts +2 -2
  39. package/src/stories/TidePopover.stories.ts +1 -1
  40. package/src/types/Badge.ts +4 -0
  41. package/src/types/Element.ts +2 -2
  42. package/src/types/Storybook.ts +4 -6
  43. package/src/types/Type.ts +6 -0
  44. package/src/utilities/storybook.ts +6 -2
  45. package/src/utilities/validation.ts +1 -1
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),Ve={HORIZONTAL:"horizontal",VERTICAL:"vertical"},t={withBreakpoint:(n,r)=>n.map(o=>`${r}-${o}`),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"}},Vt={class:e.normalizeClass(["tide-divider"])},wt=e.defineComponent({__name:"TideDivider",props:{orientation:{default:Ve.HORIZONTAL}},setup(n){const r=n;return(o,s)=>(e.openBlock(),e.createElementBlock("div",Vt,[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).BORDER.COLOR.LOW,r.orientation===e.unref(Ve).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,r)=>{const o=n.__vccOpts||n;for(const[s,i]of r)o[s]=i;return o},Te=F(wt,[["__scopeId","data-v-c2dc7d09"]]),Ke=(n,r,o)=>{const s=n[r];return s?typeof s=="function"?s():Promise.resolve(s):new Promise((i,a)=>{(typeof queueMicrotask=="function"?queueMicrotask:setTimeout)(a.bind(null,new Error("Unknown variable dynamic import: "+r+(r.split("/").length!==o?". Note that variables only represent file names one level deep.":""))))})},dt={AERO:"aero",ATV:"atv",BOATMART:"boatmart",CYCLE:"cycle",EQUIPMENT:"equipment",PWC:"pwc",RV:"rv",SNOW:"snow",TRUCK:"truck"},P={LARGE:"large",SMALL:"small"},ae={LARGE:"large",SMALL:"small"},$=n=>{let r=n&&typeof n=="number"?new Intl.NumberFormat().format(n):String(n||""),o=r;return n&&typeof n=="string"&&(o=o.replace(/\D/g,""),Number(o)?r=new Intl.NumberFormat().format(Number(o)):r="0"),r},Gt=n=>n&&typeof n=="string"?n.replace(/([a-z]{1})([A-Z]{1})/g,"$1 $2").replace(/[\s_-]/g," ").toLowerCase().split(" ").map(r=>r.slice(0,1).toUpperCase()+r.slice(1)).join(""):n,xt=n=>{let r=String(n&&typeof n=="number"?n:n||""),o=r;switch(o=o.replace(/\D/g,""),o.length){case 7:r=`${o.slice(0,3)}-${o.slice(3)}`;break;case 10:r=`${o.slice(0,3)}-${o.slice(3,6)}-${o.slice(6)}`;break;case 11:r=`${o.slice(0,1)}-${o.slice(1,4)}-${o.slice(4,7)}-${o.slice(7)}`;break;default:r=o;break}return r},Mt=n=>`$${n?$(n):String(n||"0")}`,S=e.defineComponent({__name:"TideIcon",props:{icon:{},size:{default:P.SMALL}},setup(n){const r=n,o=e.ref();return e.watch(()=>r.icon,async()=>{const s=r.icon,i=Gt(s),[a]=s.split("-"),l=dt[a==null?void 0:a.toUpperCase()],u=e.defineAsyncComponent(()=>l?Ke(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${i}.svg`,7):Ke(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${i}.svg`,5));o.value=e.markRaw(u)},{immediate:!0}),(s,i)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-icon",r.size])},[o.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(o.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",ARROW_UP:"arrow-up",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",STAR_FILLED:"star-filled",STAR_HALF:"star-half",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"},Ht={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"},zt=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:r}){const o=r,s=n,i=()=>{o("toggle")};return(a,l)=>(e.openBlock(),e.createElementBlock("div",Yt,[s.hasTopDivider?(e.openBlock(),e.createBlock(Te,{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:i},[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(s.label),1),s.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(P).LARGE},null,8,["icon","size"])],2),e.createElementVNode("div",{class:e.normalizeClass(["tide-accordion-body",s.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),s.hasBottomDivider?(e.openBlock(),e.createBlock(Te,{key:1})):e.createCommentVNode("",!0)]))}}),Xt=F(zt,[["__scopeId","data-v-d5fdff3b"]]),b={BUTTON:"button",LINK:"a"},J={BUTTON:"button",DIV:"div",LINK:"a"},V={PRIMARY:"primary",SECONDARY:"secondary",TERTIARY:"tertiary",QUATERNARY:"quaternary",FLOATING:"floating"},z={BLANK:"_blank",SELF:void 0},H=e.defineComponent({__name:"TideButtonIcon",props:{disabled:{type:Boolean,default:!1},element:{default:b.BUTTON},href:{default:void 0},icon:{default:void 0},isNewTab:{type:Boolean,default:!1},priority:{default:V.PRIMARY}},setup(n){const r=n;return(o,s)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(r.element===e.unref(b).LINK?"a":"button"),{"aria-label":r.icon,class:e.normalizeClass([r.element===e.unref(b).LINK?"tide-link-as-button-icon":"tide-button-icon",r.priority&&`tide-button-${r.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],r.element===e.unref(b).LINK?[e.unref(t).UNDERLINE.REST.OFF]:""]),disabled:r.element===e.unref(b).BUTTON&&r.disabled,href:r.element===e.unref(b).LINK&&r.href?r.href:void 0,target:r.element===e.unref(b).LINK&&r.isNewTab?e.unref(z).BLANK:e.unref(z).SELF},{default:e.withCtx(()=>[r.icon?(e.openBlock(),e.createBlock(S,{key:0,icon:r.icon,size:e.unref(P).LARGE},null,8,["icon","size"])):e.createCommentVNode("",!0)]),_:1},8,["aria-label","class","disabled","href","target"]))}}),we=e.defineComponent({__name:"TideLink",props:{element:{default:b.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 r=n;return(o,s)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(r.element===e.unref(b).LINK?e.unref(b).LINK:e.unref(b).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:r.href,target:r.isNewTab?e.unref(z).BLANK:e.unref(z).SELF},{default:e.withCtx(()=>[r.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:r.iconLeading},null,8,["class","icon"])):e.createCommentVNode("",!0),e.createElementVNode("span",{class:e.normalizeClass([e.unref(t).ALIGN.Y.MIDDLE])},e.toDisplayString(r.label),3),r.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:r.iconTrailing},null,8,["class","icon"])):e.createCommentVNode("",!0)]),_:1},8,["class","href","target"]))}}),G={ERROR:"error",INFO:"info",SUCCESS:"success",WARNING:"warning"},Wt=e.defineComponent({__name:"TideAlert",props:{heading:{default:void 0},ctaLabel:{default:void 0},isDismissible:{type:Boolean,default:!0},isToast:{type:Boolean,default:!1},type:{default:G.INFO}},emits:["close","ctaClick"],setup(n,{emit:r}){const o=n,s=r,i=e.useSlots(),a=e.computed(()=>{var d;const u=(d=i.default)==null?void 0:d.call(i);return u?u.some(c=>c.type!==e.Comment&&(typeof c.children!="string"||c.children.trim().length>0)):!1}),l=e.computed(()=>o.type===G.ERROR?h.PRIORITY_HIGH:o.type===G.SUCCESS?h.CHECK:o.type===G.WARNING?h.WARNING:h.INFORMATION);return(u,d)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([o.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,!o.isToast&&o.type===e.unref(G).ERROR?[e.unref(t).BG.GLOBAL.SURFACE.ERROR,e.unref(t).BORDER.COLOR.GLOBAL.ERROR]:"",!o.isToast&&o.type===e.unref(G).INFO?[e.unref(t).BG.GLOBAL.SURFACE.INFO,e.unref(t).BORDER.COLOR.GLOBAL.INFO]:"",!o.isToast&&o.type===e.unref(G).SUCCESS?[e.unref(t).BG.GLOBAL.SURFACE.SUCCESS,e.unref(t).BORDER.COLOR.GLOBAL.SUCCESS]:"",!o.isToast&&o.type===e.unref(G).WARNING?[e.unref(t).BG.GLOBAL.SURFACE.WARNING,e.unref(t).BORDER.COLOR.GLOBAL.WARNING]:"",o.isToast?[e.unref(t).BG.SECONDARY,e.unref(t).FONT.COLOR.SECONDARY,e.unref(t).SHADOW.BOTTOM]:e.unref(t).BORDER.LEFT.TWO])},[o.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,o.type===e.unref(G).ERROR&&e.unref(t).BG.GLOBAL.PRIMARY.ERROR,o.type===e.unref(G).INFO&&e.unref(t).BG.GLOBAL.PRIMARY.INFO,o.type===e.unref(G).SUCCESS&&e.unref(t).BG.GLOBAL.PRIMARY.SUCCESS,o.type===e.unref(G).WARNING&&e.unref(t).BG.GLOBAL.PRIMARY.WARNING])},[e.createVNode(S,{icon:l.value,size:e.unref(P).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).FLEX.DIRECTION.ROW,a.value?"":[e.unref(t).AXIS1.BETWEEN,e.unref(t).MARGIN.RIGHT.HALF]])},[e.createElementVNode("span",{class:e.normalizeClass(e.unref(t).FONT.ROLE.LABEL_2_SEMIBOLD)},e.toDisplayString(o.heading),3),o.ctaLabel&&!a.value?(e.openBlock(),e.createBlock(we,{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.LINK_2]),element:e.unref(b).BUTTON,label:o.ctaLabel,onClick:d[0]||(d[0]=c=>s("ctaClick"))},null,8,["class","element","label"])):e.createCommentVNode("",!0)],2),n.isDismissible?(e.openBlock(),e.createBlock(H,{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(V).QUATERNARY,onClick:d[1]||(d[1]=c=>s("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,!o.isToast&&e.unref(t).FONT.COLOR.SURFACE.DEFAULT])},[e.renderSlot(u.$slots,"default",{},void 0,!0),o.ctaLabel&&a.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).MARGIN.TOP.HALF])},[o.ctaLabel?(e.openBlock(),e.createBlock(we,{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.LINK_2]),element:e.unref(b).BUTTON,label:o.ctaLabel,onClick:d[2]||(d[2]=c=>s("ctaClick"))},null,8,["class","element","label"])):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0)],2)],2))}}),qt=F(Wt,[["__scopeId","data-v-959ff8ac"]]),Y={BLACK:"black",BLUE:"blue",GREEN:"green",LIME:"lime",ORANGE:"orange",PURPLE:"purple",RED:"red",SALMON:"salmon",TEAL:"teal",YELLOW:"yellow"},Ge={[Y.BLACK]:{borderColor:t.BORDER.COLOR.HIGH,iconColor:t.FONT.COLOR.SURFACE.DEFAULT},[Y.BLUE]:{borderColor:t.BORDER.COLOR.GLOBAL.BLUE,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.BLUE},[Y.GREEN]:{borderColor:t.BORDER.COLOR.GLOBAL.GREEN,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.GREEN},[Y.LIME]:{borderColor:t.BORDER.COLOR.GLOBAL.LIME,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.LIME},[Y.ORANGE]:{borderColor:t.BORDER.COLOR.GLOBAL.ORANGE,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.ORANGE},[Y.PURPLE]:{borderColor:t.BORDER.COLOR.GLOBAL.PURPLE,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.PURPLE},[Y.RED]:{borderColor:t.BORDER.COLOR.GLOBAL.RED,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.RED},[Y.SALMON]:{borderColor:t.BORDER.COLOR.GLOBAL.SALMON,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.SALMON},[Y.TEAL]:{borderColor:t.BORDER.COLOR.GLOBAL.TEAL,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.TEAL},[Y.YELLOW]:{borderColor:t.BORDER.COLOR.GLOBAL.YELLOW,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.YELLOW}},ft={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 r=n;return(o,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-badge",r.isFloating||r.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,r.color&&[e.unref(t).BORDER.LEFT.TWO,e.unref(Ge)[r.color].borderColor],e.unref(t).ELLIPSIS,e.unref(t).FONT.ROLE.LABEL_2,e.unref(t).WHITESPACE_WRAP.OFF])},[r.iconLeading?(e.openBlock(),e.createBlock(S,{key:0,class:e.normalizeClass([e.unref(t).FLEX.SHRINK.OFF,r.color&&e.unref(Ge)[r.color].iconColor]),icon:r.iconLeading},null,8,["class","icon"])):e.createCommentVNode("",!0),e.createElementVNode("span",{class:e.normalizeClass([e.unref(t).ELLIPSIS])},e.toDisplayString(r.label),3)],2))}}),Kt=e.defineComponent({__name:"TideBadgeTrustedPartner",props:{years:{default:ft.YEARS_5}},setup(n){const r=n;return(o,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(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(r.years)+" year trusted partner",1)],2)],2))}}),Qt=e.defineComponent({__name:"TideBadgeVerifiedVehicle",setup(n){return(r,o)=>(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))}}),Zt=F(Qt,[["__scopeId","data-v-c6d1b806"]]),jt=["data-track","href"],Jt=["data-track"],en={key:0},tn=e.defineComponent({__name:"TideBreadCrumbs",props:{breadCrumbs:{default:void 0}},setup(n){const r=n;return(o,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(r.breadCrumbs,(i,a)=>(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,jt)):(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,Jt))],2),r.breadCrumbs&&a<r.breadCrumbs.length-1?(e.openBlock(),e.createElementBlock("li",en,[e.createVNode(S,{icon:e.unref(h).ARROW_RIGHT,size:e.unref(P).SMALL},null,8,["icon","size"])])):e.createCommentVNode("",!0)],64))),128))],2))}}),nn=e.defineComponent({__name:"TideButton",props:{disabled:{type:Boolean,default:!1},element:{default:b.BUTTON},href:{default:void 0},iconLeading:{default:void 0},iconTrailing:{default:void 0},isNewTab:{type:Boolean,default:!1},label:{default:void 0},priority:{default:V.PRIMARY},size:{default:ae.LARGE}},setup(n){const r=n;return(o,s)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(r.element===e.unref(b).LINK?e.unref(b).LINK:e.unref(b).BUTTON),{class:e.normalizeClass(["tide-button",r.priority&&`tide-button-${r.priority}`,r.element===e.unref(b).LINK?[e.unref(t).DISPLAY.INLINE_FLEX]:[e.unref(t).DISPLAY.FLEX],r.element===e.unref(b).LINK?e.unref(t).UNDERLINE.REST.OFF:"",n.size===e.unref(ae).SMALL&&[e.unref(t).FONT.ROLE.BUTTON_2,e.unref(t).PADDING.X.ONE,e.unref(t).PADDING.Y.HALF],n.size===e.unref(ae).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:r.element===e.unref(b).BUTTON&&r.disabled,href:r.element===e.unref(b).LINK&&r.href?r.href:void 0,target:r.element===e.unref(b).LINK&&r.isNewTab?e.unref(z).BLANK:e.unref(z).SELF},{default:e.withCtx(()=>[r.iconLeading?(e.openBlock(),e.createBlock(S,{key:0,icon:r.iconLeading,size:n.size===e.unref(ae).LARGE?e.unref(P).LARGE:e.unref(P).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString(r.label)+" ",1),r.iconTrailing?(e.openBlock(),e.createBlock(S,{key:1,icon:r.iconTrailing,size:n.size===e.unref(ae).LARGE?e.unref(P).LARGE:e.unref(P).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0)]),_:1},8,["class","disabled","href","target"]))}}),rn=e.defineComponent({__name:"TideButtonPagination",props:{disabled:{type:Boolean,default:!1},element:{default:J.BUTTON},href:{default:void 0},label:{default:void 0}},setup(n){const r=n;return(o,s)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(r.element===e.unref(J).LINK?"a":r.element===e.unref(J).BUTTON?"button":"div"),{class:e.normalizeClass([r.element===e.unref(J).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],r.element===e.unref(J).LINK?[e.unref(t).UNDERLINE.REST.OFF]:"",r.element===e.unref(J).DIV?[e.unref(t).CURSOR.POINTER]:"",[e.unref(t).FONT.ROLE.HEADLINE_3]]),disabled:r.element===e.unref(J).BUTTON&&r.disabled,href:r.element===e.unref(J).LINK&&r.href?r.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(r.label),3)]),_:1},8,["class","disabled","href"]))}}),Et=F(rn,[["__scopeId","data-v-0e4f62c0"]]),on=["data-track","onClick"],sn=e.defineComponent({__name:"TideButtonSegmented",props:{activeTab:{default:0},tabs:{}},emits:["change"],setup(n,{emit:r}){const o=n,s=r,i=a=>{s("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(o.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=>i(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,on))),128))],2))}}),ln=F(sn,[["__scopeId","data-v-4e385d0b"]]),Oe={ACTIONABLE:"action",INFORMATIONAL:"informational",SELECTABLE:"select"},an=e.defineComponent({__name:"TideCard",props:{description:{default:void 0},heading:{},icon:{default:void 0},selected:{type:Boolean,default:void 0},type:{default:Oe.INFORMATIONAL},href:{default:void 0}},setup(n){return(r,o)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.href?"a":n.type===e.unref(Oe).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(Oe).INFORMATIONAL&&"hoverable",n.type===e.unref(Oe).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(P).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"]))}}),un=F(an,[["__scopeId","data-v-07bbeec7"]]),cn=16,Qe=8,Ze=8,dn=e.defineComponent({__name:"TideCarousel",props:{hasDots:{type:Boolean,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},maxDots:{default:5},subtitle:{default:void 0},title:{default:void 0}},emits:["slidesAddedToView"],setup(n,{emit:r}){const o=n,s=r,i=e.ref(null),a=e.ref(0),l=e.ref(0),u=e.ref(null),d=e.ref(0),c=e.ref(!0),E=e.ref(!1),f=e.ref(!0),v=e.ref(null),m=e.ref([]),O=e.ref([]),A=e.ref(null),R=e.computed(()=>l.value+1),I=e.computed(()=>L.value*Ze+(L.value-1)*Qe),L=e.computed(()=>o.maxDots>T.value?T.value:o.maxDots),N=e.computed(()=>T.value-1),T=e.computed(()=>{if(!m.value.length)return 0;if(!o.isScrollByPage)return m.value.length;const y=cn*(m.value.length-1),B=a.value-y,_=Math.round(B/d.value);return B%d.value?_+1:_}),p=y=>{let B="";return y===l.value&&(B="tide-carousel-dot-active"),Math.abs(l.value-y)===1&&(B="tide-carousel-dot-neighbor"),B},g=()=>{i.value&&(a.value=i.value.scrollWidth,d.value=i.value.clientWidth)},C=()=>{const y={root:i==null?void 0:i.value,rootMargin:"0px 1px 0px 0px",threshold:1};v.value=new IntersectionObserver(B=>{let _=[];B.forEach(j=>{const be=m.value.indexOf(j.target);j.isIntersecting?(_.push(be),O.value.push(be)):O.value=O.value.filter(ke=>ke!==be),O.value.sort((ke,_t)=>ke-_t)}),c.value=O.value.includes(0),E.value=O.value.includes(m.value.length-1),_.length>0&&s("slidesAddedToView",_)},y),m.value.forEach(B=>{v.value&&v.value.observe(B)})},w=()=>{const y=()=>{i.value!==null&&(m.value=Array.from(i.value.children),C())};A.value=new MutationObserver(y),i.value&&A.value.observe(i.value,{childList:!0})},M=y=>{if(i.value===null)return;const B=m.value[m.value.length-1].offsetLeft,j=y/B*N.value<=l.value;l.value=j?l.value-1:l.value+1,i.value.scrollTo({behavior:"smooth",left:y}),Ut(j)},D=()=>{if(O.value.length===0)return;const y=O.value[O.value.length-1]+1;M(m.value[y].offsetLeft)},k=()=>{var B;if(O.value.length===0)return;const y=O.value[0]-O.value.length;M(((B=m.value[y])==null?void 0:B.offsetLeft)||0)},q=()=>{if(O.value.length===0)return;const y=O.value.length>1?O.value[1]:O.value[0]+1;M(m.value[y].offsetLeft)},Ae=()=>{if(O.value.length===0)return;const y=O.value[0]-1;M(m.value[y].offsetLeft)},Ut=y=>{if(!u.value||L.value>=T.value)return;const _=L.value%2!==0||y?Math.floor(L.value/2)+1:Math.floor(L.value/2);u.value.scrollTo({behavior:"smooth",left:R.value<_?0:(R.value-_)*(Ze+Qe)})};return e.onMounted(()=>{i.value!==null&&(m.value=Array.from(i.value.children),g(),C(),w(),window&&window.addEventListener("resize",g))}),e.onUnmounted(()=>{var y,B;(y=v.value)==null||y.disconnect(),(B=A.value)==null||B.disconnect(),window.removeEventListener("resize",g)}),(y,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"},[!o.isFloating&&f.value||o.title?(e.openBlock(),e.createElementBlock("section",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,o.title?e.unref(t).AXIS1.BETWEEN:e.unref(t).AXIS1.END,e.unref(t).AXIS2.CENTER,e.unref(t).WIDTH.FULL])},[o.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])},[o.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(o.title),3)):e.createCommentVNode("",!0),o.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(o.subtitle),3)):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0),!o.isFloating&&f.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(H,{disabled:c.value,icon:e.unref(h).CHEVRON_LEFT,priority:e.unref(V).TERTIARY,onClick:B[0]||(B[0]=_=>n.isScrollByPage?k():Ae())},null,8,["disabled","icon","priority"]),e.createVNode(H,{disabled:E.value,icon:e.unref(h).CHEVRON_RIGHT,priority:e.unref(V).TERTIARY,onClick:B[1]||(B[1]=_=>n.isScrollByPage?D():q())},null,8,["disabled","icon","priority"])],2)):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0),e.renderSlot(y.$slots,"misc",{},void 0,!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).POSITION.RELATIVE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER])},[e.createElementVNode("ul",{class:e.normalizeClass(["tide-carousel-container",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:i},[e.renderSlot(y.$slots,"default",{},void 0,!0)],2),n.isScrollByPage&&n.hasDots&&T.value>1?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["tide-carousel-dots-container",e.unref(t).POSITION.ABSOLUTE,e.unref(t).POSITIONING.BOTTOM,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).MARGIN.BOTTOM.HALF,e.unref(t).WIDTH.FULL]),style:e.normalizeStyle({width:`${I.value}px`})},[e.createElementVNode("div",{class:e.normalizeClass(["tide-carousel-dots",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.START,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).OVERFLOW.X.SCROLL,e.unref(t).POINTER_EVENTS.OFF,e.unref(t).SCROLLBAR.OFF]),ref_key:"dotsRef",ref:u},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(T.value,(_,j)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-carousel-dot",e.unref(t).FLEX.SHRINK.OFF,e.unref(t).HEIGHT.ZERO,e.unref(t).WIDTH.ZERO,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).BG.SURFACE.DEFAULT,p(j)]),key:j},null,2))),128))],2)],6)):e.createCommentVNode("",!0),n.isFloating&&f.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,o.isHideawayButtons?"hideaway":""])},[e.createVNode(H,{class:e.normalizeClass([e.unref(t).MARGIN.LEFT.ONE,e.unref(t).POINTER_EVENTS.ON]),disabled:c.value,icon:e.unref(h).CHEVRON_LEFT,priority:e.unref(V).QUATERNARY,onClick:B[2]||(B[2]=_=>n.isScrollByPage?k():Ae())},null,8,["class","disabled","icon","priority"]),e.createVNode(H,{class:e.normalizeClass([e.unref(t).MARGIN.RIGHT.ONE,e.unref(t).POINTER_EVENTS.ON]),disabled:E.value,icon:e.unref(h).CHEVRON_RIGHT,priority:e.unref(V).QUATERNARY,onClick:B[3]||(B[3]=_=>n.isScrollByPage?D():q())},null,8,["class","disabled","icon","priority"])],2)):e.createCommentVNode("",!0)],2)],2))}}),fn=F(dn,[["__scopeId","data-v-2d4550cf"]]),En=e.defineComponent({__name:"TideChipAction",props:{element:{default:b.LINK},href:{default:void 0},isNewTab:{type:Boolean,default:!1},label:{}},setup(n){const r=n;return(o,s)=>(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:r.href,target:r.isNewTab?e.unref(z).BLANK:e.unref(z).SELF},{default:e.withCtx(()=>[e.createVNode(S,{icon:e.unref(h).SEARCH},null,8,["icon"]),e.createElementVNode("span",null,e.toDisplayString(r.label),1)]),_:1},8,["class","href","target"]))}}),mn=F(En,[["__scopeId","data-v-483e4d18"]]),vn=e.defineComponent({__name:"TideChipFilter",props:{isActive:{type:Boolean},label:{}},setup(n){const r=n;return(o,s)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["tide-chip-filter",r.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,r.isActive?"active":""])},[e.renderSlot(o.$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([r.isActive?"":"icon-spacing",e.unref(t).FONT.ROLE.LABEL_1,e.unref(t).WHITESPACE_WRAP.OFF])},e.toDisplayString(r.label),3)],2)],2))}}),On=F(vn,[["__scopeId","data-v-6ddce1c2"]]),Ln=e.defineComponent({__name:"TideChipInput",props:{label:{}},setup(n){const r=n;return(o,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(r.label),1),e.createVNode(S,{icon:e.unref(h).CLOSE},null,8,["icon"])],2))}}),Rn=F(Ln,[["__scopeId","data-v-42611a29"]]),An={class:"tide-columns"},In={class:"tide-columns-column"},Tn={class:"tide-columns-column"},pn={class:"tide-columns-column"},Nn={class:"tide-columns-column"},gn=e.defineComponent({__name:"TideColumns",props:{heading:{default:""}},setup(n){const r=n;return(o,s)=>(e.openBlock(),e.createElementBlock("section",An,[e.createElementVNode("h2",{class:e.normalizeClass([e.unref(t).MARGIN.BOTTOM.HALF])},e.toDisplayString(r.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",In,[e.renderSlot(o.$slots,"section1",{},void 0,!0)]),e.createElementVNode("li",Tn,[e.renderSlot(o.$slots,"section2",{},void 0,!0)]),e.createElementVNode("li",pn,[e.renderSlot(o.$slots,"section3",{},void 0,!0)]),e.createElementVNode("li",Nn,[e.renderSlot(o.$slots,"section4",{},void 0,!0)])],2)]))}}),Cn=F(gn,[["__scopeId","data-v-c92a6639"]]),mt=Symbol("tide-form"),vt=()=>{const n=e.ref(!1);return e.provide(mt,{forceShowErrors:n}),{revealValidationErrors:()=>{n.value=!0}}},he=()=>e.inject(mt),hn=e.defineComponent({__name:"TideForm",emits:["submit"],setup(n,{emit:r}){const o=r,{revealValidationErrors:s}=vt(),i=a=>{s(),o("submit",a)};return(a,l)=>(e.openBlock(),e.createElementBlock("form",{onSubmit:e.withModifiers(i,["prevent"]),novalidate:""},[e.renderSlot(a.$slots,"default")],32))}}),oe={CONTAIN:"contain",COVER:"cover",SCALE_DOWN:"scale-down"},Sn=["media","srcset"],Fn=["alt","fetchpriority","loading","src"],Ue="https://cdn-static.tilabs.io/marketplace/common/image-coming-soon.svg",Dn=e.defineComponent({__name:"TideImage",props:{alt:{default:""},height:{default:void 0},isLazy:{type:Boolean,default:!0},objectFit:{default:oe.COVER},sources:{default:()=>[]},src:{default:void 0},width:{default:void 0}},setup(n){const r=n,o=e.ref(),s=e.ref(),i=e.computed(()=>{switch(r.objectFit){case oe.CONTAIN:return t.OBJECT.CONTAIN;case oe.COVER:return t.OBJECT.COVER;case oe.SCALE_DOWN:return t.OBJECT.SCALE_DOWN;default:return oe.COVER}}),a=()=>{var d,c;const l=(d=s.value)==null?void 0:d.currentSrc,u=(c=o.value)==null?void 0:c.querySelector(`source[srcset="${l}"]`);l&&u?u.srcset=Ue:s.value&&(s.value.src=Ue)};return(l,u)=>(e.openBlock(),e.createElementBlock("picture",{class:e.normalizeClass(["tide-image",e.unref(t).DISPLAY.BLOCK]),ref_key:"picture",ref:o,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(r.sources,d=>(e.openBlock(),e.createElementBlock("source",{key:d.srcset,media:`(min-width:${d.media}px)`,srcset:d.srcset},null,8,Sn))),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,i.value]),fetchpriority:n.isLazy?void 0:"high",loading:r.isLazy?"lazy":"eager",ref_key:"img",ref:s,src:n.src??Ue,onError:a},null,42,Fn)],6))}}),Ot=F(Dn,[["__scopeId","data-v-4ce98c1f"]]),Bn=e.defineComponent({__name:"TideImageBackground",props:{alt:{default:""},isLazy:{type:Boolean,default:!0},sources:{default:()=>[]},src:{default:void 0}},setup(n){const r=n;return(o,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(Ot,{alt:r.alt,class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).HEIGHT.FULL]),"is-lazy":r.isLazy,"object-fit":e.unref(oe).COVER,sources:r.sources,src:r.src},null,8,["alt","class","is-lazy","object-fit","sources","src"])],2),e.renderSlot(o.$slots,"default",{},void 0,!0)],2))}}),yn=F(Bn,[["__scopeId","data-v-8f2f8198"]]),Pn={key:0,class:e.normalizeClass(["tide-indicator-label"])},bn=e.defineComponent({__name:"TideIndicator",props:{label:{default:void 0}},setup(n){const r=n;return(o,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-indicator",r.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,r.label&&r.label.toString().length>1?[e.unref(t).PADDING.X.HALF]:[],r.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]])},[r.label?(e.openBlock(),e.createElementBlock("div",Pn,e.toDisplayString(r.label),1)):e.createCommentVNode("",!0)],2))}}),kn=F(bn,[["__scopeId","data-v-d402ac82"]]),Se=e.defineComponent({__name:"TideInputSupportingText",props:{isError:{type:Boolean},message:{}},setup(n){return(r,o)=>(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(P).SMALL},null,8,["class","icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",null,e.toDisplayString(n.message),1)],2))}}),Lt="Please enter a valid value",ee={NO_ERROR:{message:"",valid:!0},REQUIRED:{message:"Please fill out this field",valid:!1}},me=(n,r)=>o=>{let s=ee.NO_ERROR;return o.trim().match(n)||(s={message:r??Lt,valid:!1}),s},Un=({maxlength:n,minlength:r,required:o,value:s})=>{const i=s.length===0&&!o,a=n&&s.length>n;return!(!i&&r&&s.length<r)&&!a},Me=({errorFromProps:n,maxlength:r,minlength:o,required:s,validators:i,value:a})=>{if(n!=="")return{message:n,valid:!1};if(i){const l=Vn(a.value,i);if(!l.valid)return l}if(s&&a.value.trim()==="")return ee.REQUIRED;if(r||o){const l=_n({maxlength:r,minlength:o,required:s,value:a.value});if(!l.valid)return l}return ee.NO_ERROR},_n=({maxlength:n,minlength:r,required:o,value:s})=>{const i={message:"",valid:!0};return i.valid=Un({maxlength:n,minlength:r,required:o,value:s}),i.valid||(i.message=Lt,n&&r?i.message=`Enter a value between ${$(r)} and ${$(n)} characters`:n?i.message=`Use ${$(n)} characters or fewer`:r&&(i.message=`Enter at least ${$(r)} characters`)),i};function Vn(n,r){for(const o of r){const s=o(n);if(!s.valid)return s}return{message:"",valid:!0}}const wn=["for"],Gn=["checked","disabled","name","id"],xn=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:r}){const o=n,s=r,i=e.useModel(n,"modelValue"),a=he(),l=e.ref(!1),u=e.ref(ee.NO_ERROR),d=e.computed(()=>o.required?`${o.label} *`:o.label),c=e.computed(()=>i.value||o.indeterminate),E=e.computed(()=>f.value?!0:l.value?!u.value.valid:!1),f=e.computed(()=>o.error!==""),v=e.computed(()=>E.value&&u.value.message),m=()=>o.error!==""?{message:o.error,valid:!1}:!o.required||c.value?ee.NO_ERROR:ee.REQUIRED;return e.watchEffect(()=>{u.value=m()}),e.watch(i,()=>{i.value&&(l.value=!0)},{immediate:!0}),e.watch(()=>a==null?void 0:a.forceShowErrors.value,O=>{O&&(l.value=!0)},{immediate:!0}),e.watch(u,()=>{s("valid",u.value.valid)},{deep:!0,immediate:!0}),(O,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=>i.value=R)},null,8,Gn),[[e.vModelCheckbox,i.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(P).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($)(n.number))+") ",3)):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0)],10,wn),v.value?(e.openBlock(),e.createBlock(Se,{key:0,message:v.value,"is-error":""},null,8,["message"])):e.createCommentVNode("",!0)],2))}}),Mn=F(xn,[["__scopeId","data-v-381d09d9"]]),Hn=["checked","disabled","name","id"],Yn=["for"],zn={},Xn=e.defineComponent({...zn,__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 r=n,o=e.computed(()=>r.checked||r.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,n.disabled?["disabled",e.unref(t).POINTER_EVENTS.OFF]:e.unref(t).CURSOR.POINTER])},[e.createElementVNode("input",{checked:o.value,class:e.normalizeClass([e.unref(t).DISPLAY.NONE]),disabled:r.disabled,name:r.name,ref:"input",onClick:i[0]||(i[0]=e.withModifiers(()=>{},["prevent"])),id:r.inputId,type:"checkbox"},null,10,Hn),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,o.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,o.value&&"checked",n.disabled?e.unref(t).CURSOR.NOT_ALLOWED:e.unref(t).CURSOR.POINTER])},[o.value?(e.openBlock(),e.createBlock(S,{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SECONDARY]),icon:r.indeterminate?e.unref(h).REMOVE:e.unref(h).CHECK,size:e.unref(P).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:r.inputId,onClick:i[1]||(i[1]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("span",null,e.toDisplayString(n.label),1),r.number?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SURFACE.VARIANT])}," ("+e.toDisplayString(e.unref($)(r.number))+") ",3)):e.createCommentVNode("",!0)],10,Yn)):e.createCommentVNode("",!0)],2))}}),Wn=F(Xn,[["__scopeId","data-v-345366c5"]]),qn=["for"],$n=["disabled","name","value","id"],Kn=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 r=n,o=e.useModel(n,"modelValue"),s=e.computed(()=>o.value===r.value);return(i,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,r.disabled?[e.unref(t).OPACITY.DISABLED,e.unref(t).CURSOR.NOT_ALLOWED]:[e.unref(t).CURSOR.POINTER]]),for:r.inputId},[e.withDirectives(e.createElementVNode("input",{class:e.normalizeClass(["tide-screen-reader-only"]),disabled:n.disabled,name:n.name,value:n.value,id:r.inputId,type:"radio","onUpdate:modelValue":a[0]||(a[0]=l=>o.value=l)},null,8,$n),[[e.vModelRadio,o.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,s.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,s.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),r.number?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SURFACE.VARIANT])}," ("+e.toDisplayString(e.unref($)(r.number))+") ",3)):e.createCommentVNode("",!0)],2)],10,qn))}}),Qn=F(Kn,[["__scopeId","data-v-33fad71e"]]),Zn=["checked","id"],jn=["for"],Jn={},er=e.defineComponent({...Jn,__name:"TideInputRadioDeprecated",props:{checked:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},inputId:{default:void 0},label:{default:void 0},name:{default:void 0},number:{default:void 0}},setup(n){const r=n,o=e.ref(r.checked);return e.watch(()=>r.checked,(s,i)=>{(s!==i||s!==o.value)&&(o.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,r.disabled&&"disabled"])},[e.createElementVNode("input",{checked:o.value,class:e.normalizeClass([e.unref(t).DISPLAY.NONE]),id:r.inputId,name:"",type:"radio",value:""},null,10,Zn),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,o.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,o.value&&"checked"])},[e.createElementVNode("div",{class:e.normalizeClass(["tide-input-radio-check",e.unref(t).BORDER.RADIUS.FULL,r.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:r.inputId},[e.createElementVNode("span",null,e.toDisplayString(n.label),1),r.number?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SURFACE.VARIANT])}," ("+e.toDisplayString(e.unref($)(r.number))+") ",3)):e.createCommentVNode("",!0)],10,jn)],2))}}),tr=F(er,[["__scopeId","data-v-bde66757"]]),nr={NUMBER:$,PHONE:xt,PRICE:Mt},ue={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})?$/},rr={ALPHA_NUMBER_EMPTY:me(ue.alphaNumberOrEmpty),ALPHA_SPACE:me(ue.alphaSpace),EMAIL:me(ue.email,"Enter a valid email address (e.g. name@example.com)"),NUMBER:me(ue.numberFormatted,"Enter a valid number"),PHONE:me(ue.phone,"Enter a valid phone number")},te={EAGER:"eager",LAZY:"lazy"},or=["for"],sr=["disabled","name","required","id"],ir=["label"],lr=["value"],ar=["selected","value"],ur=["selected","value"],cr=e.defineComponent({__name:"TideInputSelect",props:e.mergeModels({disabled:{type:Boolean,default:!1},error:{default:""},errorDisplay:{default:te.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:r}){const o=n,s=r,i=e.useModel(n,"modelValue"),a=he(),l=e.ref(ee.NO_ERROR),u=e.ref(!1),d=e.useId(),c=e.ref(!1),E=e.ref(null),f=e.computed(()=>o.required?`${o.label} *`:o.label),v=e.computed(()=>m.value?!0:c.value?!l.value.valid:!1),m=e.computed(()=>o.error!==""),O=e.computed(()=>u.value||!A.value),A=e.computed(()=>i.value===""),R=e.computed(()=>v.value&&l.value.message||o.supportingText),I=()=>{var p;const T=new MouseEvent("mousedown");(p=E==null?void 0:E.value)==null||p.dispatchEvent(T)},L=()=>{u.value=!0,o.errorDisplay===te.EAGER&&(c.value=!0)},N=()=>{u.value=!1,o.errorDisplay===te.LAZY&&(c.value=!0)};return e.watchEffect(()=>{l.value=Me({errorFromProps:o.error,required:o.required,value:i})}),e.watch(()=>a==null?void 0:a.forceShowErrors.value,T=>{T&&(c.value=!0)},{immediate:!0}),e.watch(l,()=>{s("valid",l.value.valid)},{deep:!0,immediate:!0}),(T,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,n.disabled&&"disabled",v.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,o.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([O.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,!v.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,e.unref(t).POINTER_EVENTS.OFF]),for:e.unref(d)},e.toDisplayString(f.value),11,or)):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:N,id:e.unref(d),"onUpdate:modelValue":p[0]||(p[0]=g=>i.value=g)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.optgroups,g=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[g.options?(e.openBlock(),e.createElementBlock("optgroup",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:g.label,label:g.label},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(g.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,lr))),128))],10,ir)):(e.openBlock(),e.createElementBlock("option",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:g.value,selected:i.value===g.value?!0:void 0,value:g.value},e.toDisplayString(g.label),11,ar))],64))),256)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.options,g=>(e.openBlock(),e.createElementBlock("option",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:g.value,selected:i.value===g.value?!0:void 0,value:g.value},e.toDisplayString(g.label),11,ur))),128))],42,sr),[[e.vModelSelect,i.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(P).SMALL},null,8,["class","icon","size"])],2),R.value?(e.openBlock(),e.createBlock(Se,{key:0,"is-error":v.value,message:R.value},null,8,["is-error","message"])):e.createCommentVNode("",!0)],2))}}),dr=F(cr,[["__scopeId","data-v-8465bfdd"]]),Rt="Please enter a valid value.",He=(n,r)=>typeof n=="string"&&n.length>0?n:typeof r=="string"&&r.length>0?r:Rt,Ye=(n,r)=>n!==!1||r!==!1,fr=({maxlength:n,minlength:r,required:o,value:s})=>{const i=s.length===0&&!o,a=n&&s.length>n;return!(!i&&r&&s.length<r)&&!a},At=({error:n,errorFromProps:r,maxlength:o,minlength:s,required:i=!1,validators:a,value:l})=>{if(n.value=r||!1,!n.value&&a){const u=mr((l==null?void 0:l.value)||"",a);u.valid||(n.value=u.message)}if(!n.value&&(o||s)){const u=Er({maxlength:o,minlength:s,required:i,value:(l==null?void 0:l.value)||""});u.valid||(n.value=u.message)}},Er=({maxlength:n,minlength:r,required:o=!1,value:s})=>{const i={message:"",valid:!0};return i.valid=fr({maxlength:n,minlength:r,required:o,value:s}),i.valid||(i.message=Rt,n&&r?i.message=`Please enter a value between ${r} and ${n} characters in length.`:n?i.message=`Please enter a value no more than ${n} characters in length.`:r&&(i.message=`Please enter a value no less than ${r} characters in length.`)),i};function mr(n,r){for(const o of r){const s=o(n);if(!s.valid)return s}return{message:"",valid:!0}}const vr=["for"],Or=["disabled","name","required","id"],Lr=["label"],Rr=["value"],Ar=["selected","value"],Ir=["selected","value"],Tr={},pr=e.defineComponent({...Tr,__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:r}){const o=n,s=e.ref(o.error),i=e.ref(!1),a=e.ref(null),l=e.ref(o.required),u=e.ref(o.value),d=e.computed(()=>He(o.error,s.value)),c=e.computed(()=>o.required?`${o.label} *`:o.label),E=e.computed(()=>o.required&&!u.value||Ye(s.value,o.error)),f=e.computed(()=>i.value||!v.value),v=e.computed(()=>u.value===void 0),m=()=>{var I;const R=new MouseEvent("mousedown");(I=a==null?void 0:a.value)==null||I.dispatchEvent(R)},O=()=>{i.value=!0},A=()=>{i.value=!1};return e.watch(()=>o.value,(R,I)=>{(R!==I||R!==u.value)&&(u.value=R)}),r({error:s,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,o.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])},[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:o.inputId},e.toDisplayString(c.value),11,vr)):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:O,onFocusout:A,id:o.inputId,"onUpdate:modelValue":I[0]||(I[0]=L=>u.value=L)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.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,N=>(e.openBlock(),e.createElementBlock("option",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:N.value,value:N.value},e.toDisplayString(N.label),11,Rr))),128))],10,Lr)):(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,Ar))],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,Ir))),128))],42,Or),[[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(P).SMALL},null,8,["class","icon","size"])],2),o.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(P).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:o.supportingText),3)],2)):e.createCommentVNode("",!0)],2))}}),Nr=F(pr,[["__scopeId","data-v-ee7ffd3a"]]),U={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"},ce={DECIMAL:"decimal",EMAIL:"email",NUMERIC:"numeric",SEARCH:"search",TEL:"tel",TEXT:"text",URL:"url"},gr=(n,r)=>{if(r)return r;switch(n){case U.TEL:return ce.TEL;case U.SEARCH:return ce.SEARCH;case U.NUMBER:return ce.NUMERIC;case U.EMAIL:return ce.EMAIL;case U.URL:return ce.URL}},Cr=["for"],hr=["autocomplete","disabled","inputmode","maxlength","minlength","name","required","type","id"],Sr=e.defineComponent({__name:"TideInputText",props:e.mergeModels({autocomplete:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},error:{default:""},errorDisplay:{default:te.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:U.TEXT},validators:{default:void 0}},{modelValue:{required:!0},modelModifiers:{}}),emits:e.mergeModels(["valid"],["update:modelValue"]),setup(n,{emit:r}){const o=n,s=r,i=e.useModel(n,"modelValue"),a=he(),l=e.ref(ee.NO_ERROR),u=e.ref(!1),d=e.ref(null),c=e.ref(!1),E=e.ref(!1),f=e.computed(()=>o.required&&o.label?`${o.label} *`:o.label),v=e.computed(()=>m.value?!0:c.value?!l.value.valid:!1),m=e.computed(()=>o.error!==""),O=e.computed(()=>u.value||!I.value),A=e.computed(()=>gr(o.type,o.inputmode)),R=e.computed(()=>o.type===U.PASSWORD&&E.value===!0?U.TEXT:o.type),I=e.computed(()=>i.value===""),L=e.computed(()=>o.hasClear&&i.value&&o.type!==U.PASSWORD),N=e.computed(()=>o.type===U.PASSWORD),T=e.computed(()=>v.value&&l.value.message||o.supportingText),p=()=>{var D;i.value="",(D=d.value)==null||D.focus()},g=()=>{u.value=!0,o.errorDisplay===te.EAGER&&(c.value=!0)},C=()=>{u.value=!1,o.errorDisplay===te.LAZY&&(c.value=!0)},w=()=>{var D;(D=d.value)==null||D.focus()},M=D=>{u.value&&D.target!==d.value&&D.preventDefault()};return e.watchEffect(()=>{l.value=Me({errorFromProps:o.error,maxlength:o.maxlength,minlength:o.minlength,required:o.required,validators:o.validators,value:i})}),e.watch([i,()=>o.transformValue],()=>{var k,q;if(!o.transformValue)return;const D=((q=(k=i.value)==null?void 0:k.match(/\d/g))==null?void 0:q.join(""))||void 0;i.value=D?o.transformValue(D):""},{immediate:!0}),e.watch(()=>a==null?void 0:a.forceShowErrors.value,D=>{D&&(c.value=!0)},{immediate:!0}),e.watch(l,()=>{s("valid",l.value.valid)},{deep:!0,immediate:!0}),(D,k)=>(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",v.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:w,onMousedown:M},[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(P).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,!v.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,O.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",O.value?["minilabel",e.unref(t).FONT.ROLE.LABEL_3]:e.unref(t).FONT.ROLE.LABEL_1,!v.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:g,onFocusout:C,id:n.inputId,"onUpdate:modelValue":k[0]||(k[0]=q=>i.value=q)},null,42,hr),[[e.vModelDynamic,i.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,!v.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,O.value?"":"offset"])},e.toDisplayString(n.suffix),3)):e.createCommentVNode("",!0)],2),L.value?(e.openBlock(),e.createElementBlock("button",{key:1,onClick:p},[e.createVNode(S,{class:e.normalizeClass([e.unref(t).MARGIN.FULL.HALF]),icon:e.unref(h).CLOSE,size:e.unref(P).SMALL},null,8,["class","icon","size"])])):e.createCommentVNode("",!0),N.value?(e.openBlock(),e.createElementBlock("button",{key:2,onClick:k[1]||(k[1]=q=>E.value=!E.value)},[e.createVNode(S,{class:e.normalizeClass([e.unref(t).MARGIN.FULL.HALF]),icon:e.unref(h).VISIBILITY,size:e.unref(P).SMALL},null,8,["class","icon","size"])])):e.createCommentVNode("",!0)],42,Cr),T.value?(e.openBlock(),e.createBlock(Se,{key:0,"is-error":v.value,message:T.value},null,8,["is-error","message"])):e.createCommentVNode("",!0)],2))}}),Fr=F(Sr,[["__scopeId","data-v-37b90fef"]]),Dr=["for"],Br=["autocomplete","disabled","maxlength","minlength","name","required","type","id"],yr={},Pr=e.defineComponent({...yr,__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:{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:U.TEXT},validators:{default:void 0},value:{default:void 0}},setup(n,{expose:r}){const o=n,s=e.ref(o.error),i=e.ref(!1),a=e.ref(null),l=e.ref(!1),u=e.ref(o.value),d=e.computed(()=>He(o.error,s.value)),c=e.computed(()=>o.required&&o.label?`${o.label} *`:o.label),E=e.computed(()=>o.hasClear&&u.value),f=e.computed(()=>o.required&&u.value!==void 0&&!u.value||Ye(s.value,o.error)),v=e.computed(()=>i.value||!m.value),m=e.computed(()=>u.value===""||u.value===void 0),O=e.computed(()=>o.type===U.PASSWORD&&l.value===!0?U.TEXT:o.type),A=()=>{var p;u.value="",(p=a.value)==null||p.focus()},R=()=>{i.value=!0},I=()=>{i.value=!1,u.value||(u.value=""),N()},L=()=>{var p,g;if(o.transformValue){const C=((g=(p=u.value)==null?void 0:p.match(/\d/g))==null?void 0:g.join(""))||void 0;u.value=C?o.transformValue(C):""}},N=()=>{At({error:s,errorFromProps:o.error,maxlength:o.maxlength,minlength:o.minlength,required:o.required,validators:o.validators,value:u})},T=p=>{u.value=p};return e.watch(()=>o.value,(p,g)=>{(p!==g||p!==u.value)&&(u.value=p)}),r({error:s,required:o.required,updateValue:T,value:u}),(p,g)=>(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(P).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,v.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",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).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:O.value,onChange:N,onFocus:R,onFocusout:I,onInput:L,id:n.inputId,"onUpdate:modelValue":g[0]||(g[0]=C=>u.value=C)},null,42,Br),[[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,v.value?"":"offset"])},e.toDisplayString(n.suffix),3)):e.createCommentVNode("",!0)],2),E.value&&n.type!==e.unref(U).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(P).SMALL},null,8,["class","icon","size"])])):e.createCommentVNode("",!0),n.type===e.unref(U).PASSWORD?(e.openBlock(),e.createElementBlock("button",{key:2,onClick:g[1]||(g[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(P).SMALL},null,8,["class","icon","size"])])):e.createCommentVNode("",!0)],10,Dr),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(P).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))}}),br=F(Pr,[["__scopeId","data-v-c4cc73ca"]]),kr=["for"],Ur=["maxlength","minlength","name","required","rows","id"],_r=e.defineComponent({__name:"TideInputTextarea",props:e.mergeModels({error:{default:""},errorDisplay:{default:te.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:r}){const o=n,s=r,i=e.useModel(n,"modelValue"),a=he(),l=e.ref(ee.NO_ERROR),u=e.ref(!1),d=e.ref(!1),c=e.ref(null),E=e.computed(()=>o.required?`${o.label} *`:o.label),f=e.computed(()=>v.value?!0:d.value?!l.value.valid:!1),v=e.computed(()=>o.error!==""),m=e.computed(()=>u.value||!O.value),O=e.computed(()=>i.value===""),A=e.computed(()=>f.value&&l.value.message||o.supportingText),R=()=>{u.value=!0,o.errorDisplay===te.EAGER&&(d.value=!0)},I=()=>{u.value=!1,o.errorDisplay===te.LAZY&&(d.value=!0)},L=()=>{var T;(T=c.value)==null||T.focus()},N=T=>{u.value&&T.target!==c.value&&T.preventDefault()};return e.watchEffect(()=>{l.value=Me({errorFromProps:o.error,maxlength:o.maxlength,minlength:o.minlength,required:o.required,validators:o.validators,value:i})}),e.watch(()=>a==null?void 0:a.forceShowErrors.value,T=>{T&&(d.value=!0)},{immediate:!0}),e.watch(l,()=>{s("valid",l.value.valid)},{deep:!0,immediate:!0}),(T,p)=>(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:N},[n.label?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["tide-input-textarea-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).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":p[0]||(p[0]=g=>i.value=g)},null,42,Ur),[[e.vModelText,i.value]])],42,kr),A.value?(e.openBlock(),e.createBlock(Se,{key:0,"is-error":f.value,message:A.value},null,8,["is-error","message"])):e.createCommentVNode("",!0)],2))}}),Vr=F(_r,[["__scopeId","data-v-a95001bb"]]),wr=["for"],Gr=["maxlength","minlength","name","required","rows","id"],xr={},Mr=e.defineComponent({...xr,__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:r}){const o=n,s=e.ref(o.error),i=e.ref(!1),a=e.ref(null),l=e.ref(o.value),u=e.computed(()=>He(o.error,s.value)),d=e.computed(()=>o.required?`${o.label} *`:o.label),c=e.computed(()=>o.required&&l.value!==void 0&&!l.value||Ye(s.value,o.error)),E=e.computed(()=>i.value||!f.value),f=e.computed(()=>l.value===""||l.value===void 0),v=()=>{i.value=!0},m=()=>{i.value=!1,l.value||(l.value="")},O=()=>At({error:s,errorFromProps:o.error,maxlength:o.maxlength,minlength:o.minlength,required:o.required,value:l});return e.watch(()=>o.value,(A,R)=>{(A!==R||A!==l.value)&&(l.value=A)}),r({error:s,required:o.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:O,onFocus:v,onFocusout:m,id:n.inputId,"onUpdate:modelValue":R[0]||(R[0]=I=>l.value=I)},null,42,Gr),[[e.vModelText,l.value]])],10,wr),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(P).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))}}),Hr=F(Mr,[["__scopeId","data-v-e3e8dc19"]]),It={SM:"sm",MD:"md",LG:"lg",XL:"xl"},Yr={SM:768,MD:992,LG:1232,XL:1920},Tt=async n=>{const r=document.body;if(n){if(!r.dataset.scrollLockY){const o=window.scrollY;r.dataset.scrollLockY=o.toString(),r.style.setProperty("--saved-scroll-y",`${o}px`),r.style.setProperty("inset","0"),r.style.setProperty("margin-top","calc(0px - var(--saved-scroll-y, 0px))"),r.style.setProperty("overflow-y","scroll"),r.style.setProperty("position","fixed")}}else if(await e.nextTick(),!document.querySelector("dialog[open]")){const o=parseInt(r.dataset.scrollLockY||"0");r.style.removeProperty("inset"),r.style.removeProperty("marginTop"),r.style.removeProperty("overflowY"),r.style.removeProperty("position"),r.style.removeProperty("--saved-scroll-y"),window.scrollTo({behavior:"auto",top:o}),delete r.dataset.scrollLockY}},pe="tide-top-layer",pt=()=>{let n=document.getElementById(pe);n||(n=document.createElement("div"),n.id=pe,n.setAttribute("data-css-scope",""),document.body.appendChild(n)),n.style.isolation="isolate"},zr=["textContent"],Xr=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:r}){const o=n,s=r,i=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(()=>{i.value&&(i.value.scrollTop=0)})},c=()=>{o.isDismissible&&s("close")},E=f=>{f.preventDefault(),o.isDismissible&&s("close")};return e.watch(()=>o.isOpen,f=>{a.value&&(f?(l(),d()):u(),Tt(f))}),e.onMounted(()=>{o.isOpen&&l()}),(f,v)=>(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":o.width}),onClick:e.withModifiers(c,["self"]),onClose:v[2]||(v[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(It).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(H,{key:0,icon:e.unref(h).CHEVRON_LEFT,priority:e.unref(V).QUATERNARY,onClick:v[0]||(v[0]=m=>s("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,zr),n.isDismissible?(e.openBlock(),e.createBlock(H,{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(V).QUATERNARY,onClick:v[1]||(v[1]=m=>s("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:i},[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))}}),Wr=F(Xr,[["__scopeId","data-v-d61edad9"]]),qr=e.defineComponent({__name:"TidePagination",props:{pageCurrent:{default:1},pageTotal:{default:1}},emits:["change"],setup(n,{emit:r}){const o=n,s=r,i=e.ref(o.pageCurrent),a=e.computed(()=>new Array(o.pageTotal).fill("").map((u,d)=>d+1)),l=u=>{i.value=u,s("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(H,{disabled:i.value===1,icon:e.unref(h).CHEVRON_LEFT,priority:e.unref(V).QUATERNARY,onClick:d[0]||(d[0]=c=>l(i.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(Et,{disabled:i.value===c,label:c,priority:e.unref(V).QUATERNARY,onClick:E=>l(c)},null,8,["disabled","label","priority","onClick"])]))),128))],2),e.createVNode(H,{disabled:i.value===a.value[a.value.length-1],icon:e.unref(h).CHEVRON_RIGHT,priority:e.unref(V).QUATERNARY,onClick:d[1]||(d[1]=c=>l(i.value+1))},null,8,["disabled","icon","priority"])],2))}}),$r=["top","right","bottom","left"],je=["start","end"],Je=$r.reduce((n,r)=>n.concat(r,r+"-"+je[0],r+"-"+je[1]),[]),Ne=Math.min,se=Math.max,ge=Math.round,Ie=Math.floor,K=n=>({x:n,y:n}),Kr={left:"right",right:"left",bottom:"top",top:"bottom"},Qr={start:"end",end:"start"};function et(n,r,o){return se(n,Ne(r,o))}function Fe(n,r){return typeof n=="function"?n(r):n}function Ee(n){return n.split("-")[0]}function ne(n){return n.split("-")[1]}function Nt(n){return n==="x"?"y":"x"}function gt(n){return n==="y"?"height":"width"}function De(n){return["top","bottom"].includes(Ee(n))?"y":"x"}function Ct(n){return Nt(De(n))}function Zr(n,r,o){o===void 0&&(o=!1);const s=ne(n),i=Ct(n),a=gt(i);let l=i==="x"?s===(o?"end":"start")?"right":"left":s==="start"?"bottom":"top";return r.reference[a]>r.floating[a]&&(l=tt(l)),[l,tt(l)]}function jr(n){return n.replace(/start|end/g,r=>Qr[r])}function tt(n){return n.replace(/left|right|bottom|top/g,r=>Kr[r])}function Jr(n){return{top:0,right:0,bottom:0,left:0,...n}}function eo(n){return typeof n!="number"?Jr(n):{top:n,right:n,bottom:n,left:n}}function Ce(n){const{x:r,y:o,width:s,height:i}=n;return{width:s,height:i,top:o,left:r,right:r+s,bottom:o+i,x:r,y:o}}function nt(n,r,o){let{reference:s,floating:i}=n;const a=De(r),l=Ct(r),u=gt(l),d=Ee(r),c=a==="y",E=s.x+s.width/2-i.width/2,f=s.y+s.height/2-i.height/2,v=s[u]/2-i[u]/2;let m;switch(d){case"top":m={x:E,y:s.y-i.height};break;case"bottom":m={x:E,y:s.y+s.height};break;case"right":m={x:s.x+s.width,y:f};break;case"left":m={x:s.x-i.width,y:f};break;default:m={x:s.x,y:s.y}}switch(ne(r)){case"start":m[l]-=v*(o&&c?-1:1);break;case"end":m[l]+=v*(o&&c?-1:1);break}return m}const to=async(n,r,o)=>{const{placement:s="bottom",strategy:i="absolute",middleware:a=[],platform:l}=o,u=a.filter(Boolean),d=await(l.isRTL==null?void 0:l.isRTL(r));let c=await l.getElementRects({reference:n,floating:r,strategy:i}),{x:E,y:f}=nt(c,s,d),v=s,m={},O=0;for(let A=0;A<u.length;A++){const{name:R,fn:I}=u[A],{x:L,y:N,data:T,reset:p}=await I({x:E,y:f,initialPlacement:s,placement:v,strategy:i,middlewareData:m,rects:c,platform:l,elements:{reference:n,floating:r}});E=L??E,f=N??f,m={...m,[R]:{...m[R],...T}},p&&O<=50&&(O++,typeof p=="object"&&(p.placement&&(v=p.placement),p.rects&&(c=p.rects===!0?await l.getElementRects({reference:n,floating:r,strategy:i}):p.rects),{x:E,y:f}=nt(c,v,d)),A=-1)}return{x:E,y:f,placement:v,strategy:i,middlewareData:m}};async function ht(n,r){var o;r===void 0&&(r={});const{x:s,y:i,platform:a,rects:l,elements:u,strategy:d}=n,{boundary:c="clippingAncestors",rootBoundary:E="viewport",elementContext:f="floating",altBoundary:v=!1,padding:m=0}=Fe(r,n),O=eo(m),R=u[v?f==="floating"?"reference":"floating":f],I=Ce(await a.getClippingRect({element:(o=await(a.isElement==null?void 0:a.isElement(R)))==null||o?R:R.contextElement||await(a.getDocumentElement==null?void 0:a.getDocumentElement(u.floating)),boundary:c,rootBoundary:E,strategy:d})),L=f==="floating"?{x:s,y:i,width:l.floating.width,height:l.floating.height}:l.reference,N=await(a.getOffsetParent==null?void 0:a.getOffsetParent(u.floating)),T=await(a.isElement==null?void 0:a.isElement(N))?await(a.getScale==null?void 0:a.getScale(N))||{x:1,y:1}:{x:1,y:1},p=Ce(a.convertOffsetParentRelativeRectToViewportRelativeRect?await a.convertOffsetParentRelativeRectToViewportRelativeRect({elements:u,rect:L,offsetParent:N,strategy:d}):L);return{top:(I.top-p.top+O.top)/T.y,bottom:(p.bottom-I.bottom+O.bottom)/T.y,left:(I.left-p.left+O.left)/T.x,right:(p.right-I.right+O.right)/T.x}}function no(n,r,o){return(n?[...o.filter(i=>ne(i)===n),...o.filter(i=>ne(i)!==n)]:o.filter(i=>Ee(i)===i)).filter(i=>n?ne(i)===n||(r?jr(i)!==i:!1):!0)}const ro=function(n){return n===void 0&&(n={}),{name:"autoPlacement",options:n,async fn(r){var o,s,i;const{rects:a,middlewareData:l,placement:u,platform:d,elements:c}=r,{crossAxis:E=!1,alignment:f,allowedPlacements:v=Je,autoAlignment:m=!0,...O}=Fe(n,r),A=f!==void 0||v===Je?no(f||null,m,v):v,R=await ht(r,O),I=((o=l.autoPlacement)==null?void 0:o.index)||0,L=A[I];if(L==null)return{};const N=Zr(L,a,await(d.isRTL==null?void 0:d.isRTL(c.floating)));if(u!==L)return{reset:{placement:A[0]}};const T=[R[Ee(L)],R[N[0]],R[N[1]]],p=[...((s=l.autoPlacement)==null?void 0:s.overflows)||[],{placement:L,overflows:T}],g=A[I+1];if(g)return{data:{index:I+1,overflows:p},reset:{placement:g}};const C=p.map(D=>{const k=ne(D.placement);return[D.placement,k&&E?D.overflows.slice(0,2).reduce((q,Ae)=>q+Ae,0):D.overflows[0],D.overflows]}).sort((D,k)=>D[1]-k[1]),M=((i=C.filter(D=>D[2].slice(0,ne(D[0])?2:3).every(k=>k<=0))[0])==null?void 0:i[0])||C[0][0];return M!==u?{data:{index:I+1,overflows:p},reset:{placement:M}}:{}}}};async function oo(n,r){const{placement:o,platform:s,elements:i}=n,a=await(s.isRTL==null?void 0:s.isRTL(i.floating)),l=Ee(o),u=ne(o),d=De(o)==="y",c=["left","top"].includes(l)?-1:1,E=a&&d?-1:1,f=Fe(r,n);let{mainAxis:v,crossAxis:m,alignmentAxis:O}=typeof f=="number"?{mainAxis:f,crossAxis:0,alignmentAxis:null}:{mainAxis:f.mainAxis||0,crossAxis:f.crossAxis||0,alignmentAxis:f.alignmentAxis};return u&&typeof O=="number"&&(m=u==="end"?O*-1:O),d?{x:m*E,y:v*c}:{x:v*c,y:m*E}}const so=function(n){return n===void 0&&(n=0),{name:"offset",options:n,async fn(r){var o,s;const{x:i,y:a,placement:l,middlewareData:u}=r,d=await oo(r,n);return l===((o=u.offset)==null?void 0:o.placement)&&(s=u.arrow)!=null&&s.alignmentOffset?{}:{x:i+d.x,y:a+d.y,data:{...d,placement:l}}}}},io=function(n){return n===void 0&&(n={}),{name:"shift",options:n,async fn(r){const{x:o,y:s,placement:i}=r,{mainAxis:a=!0,crossAxis:l=!1,limiter:u={fn:R=>{let{x:I,y:L}=R;return{x:I,y:L}}},...d}=Fe(n,r),c={x:o,y:s},E=await ht(r,d),f=De(Ee(i)),v=Nt(f);let m=c[v],O=c[f];if(a){const R=v==="y"?"top":"left",I=v==="y"?"bottom":"right",L=m+E[R],N=m-E[I];m=et(L,m,N)}if(l){const R=f==="y"?"top":"left",I=f==="y"?"bottom":"right",L=O+E[R],N=O-E[I];O=et(L,O,N)}const A=u.fn({...r,[v]:m,[f]:O});return{...A,data:{x:A.x-o,y:A.y-s,enabled:{[v]:a,[f]:l}}}}}};function Be(){return typeof window<"u"}function le(n){return ze(n)?(n.nodeName||"").toLowerCase():"#document"}function x(n){var r;return(n==null||(r=n.ownerDocument)==null?void 0:r.defaultView)||window}function Z(n){var r;return(r=(ze(n)?n.ownerDocument:n.document)||window.document)==null?void 0:r.documentElement}function ze(n){return Be()?n instanceof Node||n instanceof x(n).Node:!1}function X(n){return Be()?n instanceof Element||n instanceof x(n).Element:!1}function Q(n){return Be()?n instanceof HTMLElement||n instanceof x(n).HTMLElement:!1}function rt(n){return!Be()||typeof ShadowRoot>"u"?!1:n instanceof ShadowRoot||n instanceof x(n).ShadowRoot}function Re(n){const{overflow:r,overflowX:o,overflowY:s,display:i}=W(n);return/auto|scroll|overlay|hidden|clip/.test(r+s+o)&&!["inline","contents"].includes(i)}function lo(n){return["table","td","th"].includes(le(n))}function ye(n){return[":popover-open",":modal"].some(r=>{try{return n.matches(r)}catch{return!1}})}function Xe(n){const r=We(),o=X(n)?W(n):n;return["transform","translate","scale","rotate","perspective"].some(s=>o[s]?o[s]!=="none":!1)||(o.containerType?o.containerType!=="normal":!1)||!r&&(o.backdropFilter?o.backdropFilter!=="none":!1)||!r&&(o.filter?o.filter!=="none":!1)||["transform","translate","scale","rotate","perspective","filter"].some(s=>(o.willChange||"").includes(s))||["paint","layout","strict","content"].some(s=>(o.contain||"").includes(s))}function ao(n){let r=re(n);for(;Q(r)&&!fe(r);){if(Xe(r))return r;if(ye(r))return null;r=re(r)}return null}function We(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}function fe(n){return["html","body","#document"].includes(le(n))}function W(n){return x(n).getComputedStyle(n)}function Pe(n){return X(n)?{scrollLeft:n.scrollLeft,scrollTop:n.scrollTop}:{scrollLeft:n.scrollX,scrollTop:n.scrollY}}function re(n){if(le(n)==="html")return n;const r=n.assignedSlot||n.parentNode||rt(n)&&n.host||Z(n);return rt(r)?r.host:r}function St(n){const r=re(n);return fe(r)?n.ownerDocument?n.ownerDocument.body:n.body:Q(r)&&Re(r)?r:St(r)}function Le(n,r,o){var s;r===void 0&&(r=[]),o===void 0&&(o=!0);const i=St(n),a=i===((s=n.ownerDocument)==null?void 0:s.body),l=x(i);if(a){const u=xe(l);return r.concat(l,l.visualViewport||[],Re(i)?i:[],u&&o?Le(u):[])}return r.concat(i,Le(i,[],o))}function xe(n){return n.parent&&Object.getPrototypeOf(n.parent)?n.frameElement:null}function Ft(n){const r=W(n);let o=parseFloat(r.width)||0,s=parseFloat(r.height)||0;const i=Q(n),a=i?n.offsetWidth:o,l=i?n.offsetHeight:s,u=ge(o)!==a||ge(s)!==l;return u&&(o=a,s=l),{width:o,height:s,$:u}}function qe(n){return X(n)?n:n.contextElement}function de(n){const r=qe(n);if(!Q(r))return K(1);const o=r.getBoundingClientRect(),{width:s,height:i,$:a}=Ft(r);let l=(a?ge(o.width):o.width)/s,u=(a?ge(o.height):o.height)/i;return(!l||!Number.isFinite(l))&&(l=1),(!u||!Number.isFinite(u))&&(u=1),{x:l,y:u}}const uo=K(0);function Dt(n){const r=x(n);return!We()||!r.visualViewport?uo:{x:r.visualViewport.offsetLeft,y:r.visualViewport.offsetTop}}function co(n,r,o){return r===void 0&&(r=!1),!o||r&&o!==x(n)?!1:r}function ie(n,r,o,s){r===void 0&&(r=!1),o===void 0&&(o=!1);const i=n.getBoundingClientRect(),a=qe(n);let l=K(1);r&&(s?X(s)&&(l=de(s)):l=de(n));const u=co(a,o,s)?Dt(a):K(0);let d=(i.left+u.x)/l.x,c=(i.top+u.y)/l.y,E=i.width/l.x,f=i.height/l.y;if(a){const v=x(a),m=s&&X(s)?x(s):s;let O=v,A=xe(O);for(;A&&s&&m!==O;){const R=de(A),I=A.getBoundingClientRect(),L=W(A),N=I.left+(A.clientLeft+parseFloat(L.paddingLeft))*R.x,T=I.top+(A.clientTop+parseFloat(L.paddingTop))*R.y;d*=R.x,c*=R.y,E*=R.x,f*=R.y,d+=N,c+=T,O=x(A),A=xe(O)}}return Ce({width:E,height:f,x:d,y:c})}function $e(n,r){const o=Pe(n).scrollLeft;return r?r.left+o:ie(Z(n)).left+o}function Bt(n,r,o){o===void 0&&(o=!1);const s=n.getBoundingClientRect(),i=s.left+r.scrollLeft-(o?0:$e(n,s)),a=s.top+r.scrollTop;return{x:i,y:a}}function fo(n){let{elements:r,rect:o,offsetParent:s,strategy:i}=n;const a=i==="fixed",l=Z(s),u=r?ye(r.floating):!1;if(s===l||u&&a)return o;let d={scrollLeft:0,scrollTop:0},c=K(1);const E=K(0),f=Q(s);if((f||!f&&!a)&&((le(s)!=="body"||Re(l))&&(d=Pe(s)),Q(s))){const m=ie(s);c=de(s),E.x=m.x+s.clientLeft,E.y=m.y+s.clientTop}const v=l&&!f&&!a?Bt(l,d,!0):K(0);return{width:o.width*c.x,height:o.height*c.y,x:o.x*c.x-d.scrollLeft*c.x+E.x+v.x,y:o.y*c.y-d.scrollTop*c.y+E.y+v.y}}function Eo(n){return Array.from(n.getClientRects())}function mo(n){const r=Z(n),o=Pe(n),s=n.ownerDocument.body,i=se(r.scrollWidth,r.clientWidth,s.scrollWidth,s.clientWidth),a=se(r.scrollHeight,r.clientHeight,s.scrollHeight,s.clientHeight);let l=-o.scrollLeft+$e(n);const u=-o.scrollTop;return W(s).direction==="rtl"&&(l+=se(r.clientWidth,s.clientWidth)-i),{width:i,height:a,x:l,y:u}}function vo(n,r){const o=x(n),s=Z(n),i=o.visualViewport;let a=s.clientWidth,l=s.clientHeight,u=0,d=0;if(i){a=i.width,l=i.height;const c=We();(!c||c&&r==="fixed")&&(u=i.offsetLeft,d=i.offsetTop)}return{width:a,height:l,x:u,y:d}}function Oo(n,r){const o=ie(n,!0,r==="fixed"),s=o.top+n.clientTop,i=o.left+n.clientLeft,a=Q(n)?de(n):K(1),l=n.clientWidth*a.x,u=n.clientHeight*a.y,d=i*a.x,c=s*a.y;return{width:l,height:u,x:d,y:c}}function ot(n,r,o){let s;if(r==="viewport")s=vo(n,o);else if(r==="document")s=mo(Z(n));else if(X(r))s=Oo(r,o);else{const i=Dt(n);s={x:r.x-i.x,y:r.y-i.y,width:r.width,height:r.height}}return Ce(s)}function yt(n,r){const o=re(n);return o===r||!X(o)||fe(o)?!1:W(o).position==="fixed"||yt(o,r)}function Lo(n,r){const o=r.get(n);if(o)return o;let s=Le(n,[],!1).filter(u=>X(u)&&le(u)!=="body"),i=null;const a=W(n).position==="fixed";let l=a?re(n):n;for(;X(l)&&!fe(l);){const u=W(l),d=Xe(l);!d&&u.position==="fixed"&&(i=null),(a?!d&&!i:!d&&u.position==="static"&&!!i&&["absolute","fixed"].includes(i.position)||Re(l)&&!d&&yt(n,l))?s=s.filter(E=>E!==l):i=u,l=re(l)}return r.set(n,s),s}function Ro(n){let{element:r,boundary:o,rootBoundary:s,strategy:i}=n;const l=[...o==="clippingAncestors"?ye(r)?[]:Lo(r,this._c):[].concat(o),s],u=l[0],d=l.reduce((c,E)=>{const f=ot(r,E,i);return c.top=se(f.top,c.top),c.right=Ne(f.right,c.right),c.bottom=Ne(f.bottom,c.bottom),c.left=se(f.left,c.left),c},ot(r,u,i));return{width:d.right-d.left,height:d.bottom-d.top,x:d.left,y:d.top}}function Ao(n){const{width:r,height:o}=Ft(n);return{width:r,height:o}}function Io(n,r,o){const s=Q(r),i=Z(r),a=o==="fixed",l=ie(n,!0,a,r);let u={scrollLeft:0,scrollTop:0};const d=K(0);if(s||!s&&!a)if((le(r)!=="body"||Re(i))&&(u=Pe(r)),s){const v=ie(r,!0,a,r);d.x=v.x+r.clientLeft,d.y=v.y+r.clientTop}else i&&(d.x=$e(i));const c=i&&!s&&!a?Bt(i,u):K(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 _e(n){return W(n).position==="static"}function st(n,r){if(!Q(n)||W(n).position==="fixed")return null;if(r)return r(n);let o=n.offsetParent;return Z(n)===o&&(o=o.ownerDocument.body),o}function Pt(n,r){const o=x(n);if(ye(n))return o;if(!Q(n)){let i=re(n);for(;i&&!fe(i);){if(X(i)&&!_e(i))return i;i=re(i)}return o}let s=st(n,r);for(;s&&lo(s)&&_e(s);)s=st(s,r);return s&&fe(s)&&_e(s)&&!Xe(s)?o:s||ao(n)||o}const To=async function(n){const r=this.getOffsetParent||Pt,o=this.getDimensions,s=await o(n.floating);return{reference:Io(n.reference,await r(n.floating),n.strategy),floating:{x:0,y:0,width:s.width,height:s.height}}};function po(n){return W(n).direction==="rtl"}const No={convertOffsetParentRelativeRectToViewportRelativeRect:fo,getDocumentElement:Z,getClippingRect:Ro,getOffsetParent:Pt,getElementRects:To,getClientRects:Eo,getDimensions:Ao,getScale:de,isElement:X,isRTL:po};function bt(n,r){return n.x===r.x&&n.y===r.y&&n.width===r.width&&n.height===r.height}function go(n,r){let o=null,s;const i=Z(n);function a(){var u;clearTimeout(s),(u=o)==null||u.disconnect(),o=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:v,height:m}=c;if(u||r(),!v||!m)return;const O=Ie(f),A=Ie(i.clientWidth-(E+v)),R=Ie(i.clientHeight-(f+m)),I=Ie(E),N={rootMargin:-O+"px "+-A+"px "+-R+"px "+-I+"px",threshold:se(0,Ne(1,d))||1};let T=!0;function p(g){const C=g[0].intersectionRatio;if(C!==d){if(!T)return l();C?l(!1,C):s=setTimeout(()=>{l(!1,1e-7)},1e3)}C===1&&!bt(c,n.getBoundingClientRect())&&l(),T=!1}try{o=new IntersectionObserver(p,{...N,root:i.ownerDocument})}catch{o=new IntersectionObserver(p,N)}o.observe(n)}return l(!0),a}function Co(n,r,o,s){s===void 0&&(s={});const{ancestorScroll:i=!0,ancestorResize:a=!0,elementResize:l=typeof ResizeObserver=="function",layoutShift:u=typeof IntersectionObserver=="function",animationFrame:d=!1}=s,c=qe(n),E=i||a?[...c?Le(c):[],...Le(r)]:[];E.forEach(I=>{i&&I.addEventListener("scroll",o,{passive:!0}),a&&I.addEventListener("resize",o)});const f=c&&u?go(c,o):null;let v=-1,m=null;l&&(m=new ResizeObserver(I=>{let[L]=I;L&&L.target===c&&m&&(m.unobserve(r),cancelAnimationFrame(v),v=requestAnimationFrame(()=>{var N;(N=m)==null||N.observe(r)})),o()}),c&&!d&&m.observe(c),m.observe(r));let O,A=d?ie(n):null;d&&R();function R(){const I=ie(n);A&&!bt(A,I)&&o(),A=I,O=requestAnimationFrame(R)}return o(),()=>{var I;E.forEach(L=>{i&&L.removeEventListener("scroll",o),a&&L.removeEventListener("resize",o)}),f==null||f(),(I=m)==null||I.disconnect(),m=null,d&&cancelAnimationFrame(O)}}const it=so,lt=ro,at=io,ho=(n,r,o)=>{const s=new Map,i={platform:No,...o},a={...i.platform,_c:s};return to(n,r,{...i,platform:a})};function So(n){return n!=null&&typeof n=="object"&&"$el"in n}function ut(n){if(So(n)){const r=n.$el;return ze(r)&&le(r)==="#comment"?null:r}return n}function ve(n){return typeof n=="function"?n():e.unref(n)}function kt(n){return typeof window>"u"?1:(n.ownerDocument.defaultView||window).devicePixelRatio||1}function ct(n,r){const o=kt(n);return Math.round(r*o)/o}function Fo(n,r,o){o===void 0&&(o={});const s=o.whileElementsMounted,i=e.computed(()=>{var C;return(C=ve(o.open))!=null?C:!0}),a=e.computed(()=>ve(o.middleware)),l=e.computed(()=>{var C;return(C=ve(o.placement))!=null?C:"bottom"}),u=e.computed(()=>{var C;return(C=ve(o.strategy))!=null?C:"absolute"}),d=e.computed(()=>{var C;return(C=ve(o.transform))!=null?C:!0}),c=e.computed(()=>ut(n.value)),E=e.computed(()=>ut(r.value)),f=e.ref(0),v=e.ref(0),m=e.ref(u.value),O=e.ref(l.value),A=e.shallowRef({}),R=e.ref(!1),I=e.computed(()=>{const C={position:m.value,left:"0",top:"0"};if(!E.value)return C;const w=ct(E.value,f.value),M=ct(E.value,v.value);return d.value?{...C,transform:"translate("+w+"px, "+M+"px)",...kt(E.value)>=1.5&&{willChange:"transform"}}:{position:m.value,left:w+"px",top:M+"px"}});let L;function N(){if(c.value==null||E.value==null)return;const C=i.value;ho(c.value,E.value,{middleware:a.value,placement:l.value,strategy:u.value}).then(w=>{f.value=w.x,v.value=w.y,m.value=w.strategy,O.value=w.placement,A.value=w.middlewareData,R.value=C!==!1})}function T(){typeof L=="function"&&(L(),L=void 0)}function p(){if(T(),s===void 0){N();return}if(c.value!=null&&E.value!=null){L=s(c.value,E.value,N);return}}function g(){i.value||(R.value=!1)}return e.watch([a,l,u,i],N,{flush:"sync"}),e.watch([c,E],p,{flush:"sync"}),e.watch(i,g,{flush:"sync"}),e.getCurrentScope()&&e.onScopeDispose(T),{x:e.shallowReadonly(f),y:e.shallowReadonly(v),strategy:e.shallowReadonly(m),placement:e.shallowReadonly(O),middlewareData:e.shallowReadonly(A),isPositioned:e.shallowReadonly(R),floatingStyles:I,update:N}}const Do=(n,r)=>!(Array.isArray(r)?r:[r]).some(s=>s.contains(n.target)),Bo=e.defineComponent({__name:"TidePopover",props:{anchorId:{},offset:{default:16}},setup(n){const r=n,o=e.ref(null),s=e.ref(null),i=e.ref(null),a=e.ref(!1),l=e.ref(!1),u=e.ref([lt(),it({mainAxis:r.offset}),at({padding:16})]),d=e.computed(()=>a.value||l.value),{floatingStyles:c}=Fo(o,s,{middleware:u,strategy:"fixed",whileElementsMounted:Co}),E=T=>{!o.value||!s.value||Do(T,[o.value,s.value])&&(l.value=!1,T.preventDefault(),T.stopImmediatePropagation())},f=()=>{a.value=!0},v=()=>{a.value=!1},m=T=>{T.preventDefault(),l.value?(l.value=!1,a.value=!1):l.value=!0},O=()=>{if(!o.value)return null;o.value.addEventListener("mouseover",f),o.value.addEventListener("mouseleave",v),o.value.addEventListener("click",m)},A=()=>{if(!o.value)return null;o.value.removeEventListener("mouseover",f),o.value.removeEventListener("mouseleave",v),o.value.removeEventListener("click",m)},R=T=>{T.key==="Escape"&&(l.value=!1)},I=()=>{i.value&&(i.value.addEventListener("click",E,!0),i.value.addEventListener("keydown",R))},L=()=>{i.value&&(i.value.removeEventListener("click",E,!0),i.value.removeEventListener("keydown",R))},N=()=>{o.value=document.getElementById(r.anchorId)};return e.watch(()=>l.value,T=>{T?I():L()}),e.watch(()=>r.anchorId,()=>{A(),N(),O()}),e.watchEffect(()=>{u.value=[lt(),it({mainAxis:r.offset}),at({padding:16})]}),e.onBeforeMount(()=>{pt()}),e.onMounted(()=>{N(),i.value=document.documentElement,O()}),e.onUnmounted(()=>{A()}),(T,p)=>(e.openBlock(),e.createBlock(e.Teleport,{to:`#${e.unref(pe)}`},[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(c)})},[e.renderSlot(T.$slots,"default",{},void 0,!0)],6),[[e.vShow,d.value]])]),_:3})],8,["to"]))}}),yo=F(Bo,[["__scopeId","data-v-508322dc"]]),Po={class:"tide-seo-links"},bo=["href","target"],ko=e.defineComponent({__name:"TideSeoLinks",props:{heading:{default:""},links:{}},setup(n){const r=n;return(o,s)=>(e.openBlock(),e.createElementBlock("section",Po,[e.createElementVNode("h2",{class:e.normalizeClass([e.unref(t).MARGIN.BOTTOM.HALF])},e.toDisplayString(r.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(r.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(z).BLANK:e.unref(z).SELF},e.toDisplayString(i.label),11,bo)],2))),128))],2)]))}}),Uo=F(ko,[["__scopeId","data-v-e655eb08"]]),_o=e.defineComponent({__name:"TideSheet",props:{isOpen:{type:Boolean},isBackButton:{type:Boolean}},emits:["back","close"],setup(n,{emit:r}){const o=n,s=r,i=e.ref(null),a=()=>{var c;(c=i.value)==null||c.showModal()},l=()=>{var c;(c=i.value)==null||c.close()},u=()=>{s("close")},d=c=>{c.preventDefault(),s("close")};return e.watch(()=>o.isOpen,c=>{i.value&&(c?a():l(),Tt(c))}),e.onBeforeMount(()=>{pt()}),e.onMounted(()=>{o.isOpen&&a()}),(c,E)=>(e.openBlock(),e.createBlock(e.Teleport,{to:`#${e.unref(pe)}`},[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:i,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(H,{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(V).QUATERNARY,onClick:E[0]||(E[0]=f=>s("back"))},null,8,["class","icon","priority"])):e.createCommentVNode("",!0),e.createVNode(H,{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(V).QUATERNARY,onClick:E[1]||(E[1]=f=>s("close"))},null,8,["class","icon","priority"])],2),e.createVNode(Te),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"]))}}),Vo=F(_o,[["__scopeId","data-v-fb4090d4"]]),wo=["disabled"],Go=e.defineComponent({__name:"TideSwitch",props:{disabled:{type:Boolean,default:!1},isActive:{type:Boolean,default:!1}},emits:["change"],setup(n,{emit:r}){const o=n,s=r,i=()=>{o.disabled||s("change")};return(a,l)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["tide-switch",o.isActive?"active":"",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.FULL,o.isActive?"":e.unref(t).BORDER.COLOR.DEFAULT,e.unref(t).OVERFLOW.XY.HIDDEN,o.isActive?e.unref(t).BG.SECONDARY:e.unref(t).BG.SURFACE.DEFAULT]),disabled:o.disabled,onClick:i,"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,o.isActive?e.unref(t).BG.SURFACE.DEFAULT:e.unref(t).BG.SECONDARY])},[e.createVNode(S,{icon:e.unref(h).CHECK,size:e.unref(P).LARGE},null,8,["icon","size"])],2)],10,wo))}}),xo=F(Go,[["__scopeId","data-v-4cd3a737"]]);exports.ALERT=G;exports.BADGE_COLOR=Y;exports.BADGE_COLOR_DETAILS=Ge;exports.BADGE_TRUSTED=ft;exports.BREAKPOINT=It;exports.CSS=t;exports.ELEMENT=b;exports.ELEMENT_TEXT_AS_ICON=J;exports.FORMAT=nr;exports.FORMAT_REGEX=ue;exports.ICON=h;exports.ICON_REALM=Ht;exports.INPUT_MODE=ce;exports.MEDIA=Yr;exports.OBJECT_FIT=oe;exports.ORIENTATION=Ve;exports.PRIORITY=V;exports.REALM=dt;exports.SIZE=P;exports.SIZE_BUTTON=ae;exports.TARGET=z;exports.TEXT_INPUT_TYPE=U;exports.TYPE_CARD=Oe;exports.TideAccordionItem=Xt;exports.TideAlert=qt;exports.TideBadge=$t;exports.TideBadgeTrustedPartner=Kt;exports.TideBadgeVerifiedVehicle=Zt;exports.TideBreadCrumbs=tn;exports.TideButton=nn;exports.TideButtonIcon=H;exports.TideButtonPagination=Et;exports.TideButtonSegmented=ln;exports.TideCard=un;exports.TideCarousel=fn;exports.TideChipAction=mn;exports.TideChipFilter=On;exports.TideChipInput=Rn;exports.TideColumns=Cn;exports.TideDivider=Te;exports.TideForm=hn;exports.TideIcon=S;exports.TideImage=Ot;exports.TideImageBackground=yn;exports.TideIndicator=kn;exports.TideInputCheckbox=Mn;exports.TideInputCheckboxDeprecated=Wn;exports.TideInputRadio=Qn;exports.TideInputRadioDeprecated=tr;exports.TideInputSelect=dr;exports.TideInputSelectDeprecated=Nr;exports.TideInputText=Fr;exports.TideInputTextDeprecated=br;exports.TideInputTextarea=Vr;exports.TideInputTextareaDeprecated=Hr;exports.TideLink=we;exports.TideModal=Wr;exports.TidePagination=qr;exports.TidePopover=yo;exports.TideSeoLinks=Uo;exports.TideSheet=Vo;exports.TideSwitch=xo;exports.VALIDATOR=rr;exports.useTideForm=vt;
2
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlkZS1kZXNpZ24tc3lzdGVtLmNqcyIsInNvdXJjZXMiOlsiLi4vc3JjL3R5cGVzL09yaWVudGF0aW9uLnRzIiwiLi4vc3JjL3R5cGVzL1N0eWxlcy50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVEaXZpZGVyLnZ1ZSIsIi4uL3NyYy90eXBlcy9SZWFsbS50cyIsIi4uL3NyYy90eXBlcy9TaXplLnRzIiwiLi4vc3JjL3V0aWxpdGllcy9mb3JtYXQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSWNvbi52dWUiLCIuLi9zcmMvdHlwZXMvSWNvbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVBY2NvcmRpb25JdGVtLnZ1ZSIsIi4uL3NyYy90eXBlcy9FbGVtZW50LnRzIiwiLi4vc3JjL3R5cGVzL1ByaW9yaXR5LnRzIiwiLi4vc3JjL3R5cGVzL1RhcmdldC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVMaW5rLnZ1ZSIsIi4uL3NyYy90eXBlcy9BbGVydC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVBbGVydC52dWUiLCIuLi9zcmMvdHlwZXMvQmFkZ2UudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQmFkZ2UudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUJhZGdlVHJ1c3RlZFBhcnRuZXIudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUJhZGdlVmVyaWZpZWRWZWhpY2xlLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCcmVhZENydW1icy52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQnV0dG9uLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCdXR0b25QYWdpbmF0aW9uLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCdXR0b25TZWdtZW50ZWQudnVlIiwiLi4vc3JjL3R5cGVzL0NhcmQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQ2FyZC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQ2Fyb3VzZWwudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUNoaXBBY3Rpb24udnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUNoaXBGaWx0ZXIudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUNoaXBJbnB1dC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQ29sdW1ucy52dWUiLCIuLi9zcmMvY29tcG9zYWJsZXMvdXNlVGlkZUZvcm0udHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlRm9ybS52dWUiLCIuLi9zcmMvdHlwZXMvSW1hZ2UudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW1hZ2UudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUltYWdlQmFja2dyb3VuZC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5kaWNhdG9yLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFN1cHBvcnRpbmdUZXh0LnZ1ZSIsIi4uL3NyYy91dGlsaXRpZXMvdmFsaWRhdGlvbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dENoZWNrYm94LnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dENoZWNrYm94RGVwcmVjYXRlZC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRSYWRpby52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRSYWRpb0RlcHJlY2F0ZWQudnVlIiwiLi4vc3JjL3R5cGVzL0Zvcm1hdHRlZC50cyIsIi4uL3NyYy90eXBlcy9WYWxpZGF0aW9uLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0U2VsZWN0LnZ1ZSIsIi4uL3NyYy91dGlsaXRpZXMvdmFsaWRhdGlvbi1kZXByZWNhdGVkLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0U2VsZWN0RGVwcmVjYXRlZC52dWUiLCIuLi9zcmMvdHlwZXMvVGV4dElucHV0LnRzIiwiLi4vc3JjL3V0aWxpdGllcy9mb3Jtcy50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFRleHQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0VGV4dERlcHJlY2F0ZWQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0VGV4dGFyZWEudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0VGV4dGFyZWFEZXByZWNhdGVkLnZ1ZSIsIi4uL3NyYy90eXBlcy9CcmVha3BvaW50LnRzIiwiLi4vc3JjL3V0aWxpdGllcy92aWV3cG9ydC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVNb2RhbC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlUGFnaW5hdGlvbi52dWUiLCIuLi9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL3V0aWxzL2Rpc3QvZmxvYXRpbmctdWkudXRpbHMubWpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbG9hdGluZy11aS9jb3JlL2Rpc3QvZmxvYXRpbmctdWkuY29yZS5tanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL3V0aWxzL2Rpc3QvZmxvYXRpbmctdWkudXRpbHMuZG9tLm1qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvZG9tL2Rpc3QvZmxvYXRpbmctdWkuZG9tLm1qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvdnVlL2Rpc3QvZmxvYXRpbmctdWkudnVlLm1qcyIsIi4uL3NyYy91dGlsaXRpZXMvZXZlbnQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlUG9wb3Zlci52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlU2VvTGlua3MudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZVNoZWV0LnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVTd2l0Y2gudnVlIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBPUklFTlRBVElPTiA9IHtcbiAgSE9SSVpPTlRBTDogJ2hvcml6b250YWwnLFxuICBWRVJUSUNBTDogJ3ZlcnRpY2FsJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIE9yaWVudGF0aW9uID0gKHR5cGVvZiBPUklFTlRBVElPTilba2V5b2YgdHlwZW9mIE9SSUVOVEFUSU9OXTtcbiIsIi8qIGVzbGludC1kaXNhYmxlIHZ1ZS9zb3J0LWtleXMgKi9cblxuaW1wb3J0IHR5cGUgeyBCcmVha3BvaW50IH0gZnJvbSAnQC90eXBlcy9CcmVha3BvaW50JztcblxuZXhwb3J0IGNvbnN0IENTUyA9IHtcbiAgd2l0aEJyZWFrcG9pbnQ6ICh1dGlsaXRpZXM6IHN0cmluZ1tdLCBicmVha3BvaW50OiBCcmVha3BvaW50KTogc3RyaW5nW10gPT4ge1xuICAgIHJldHVybiB1dGlsaXRpZXMubWFwKCh1dGlsaXR5KSA9PiBgJHticmVha3BvaW50fS0ke3V0aWxpdHl9YCk7XG4gIH0sXG4gIEFMSUdOOiB7XG4gICAgWDoge1xuICAgICAgQ0VOVEVSOiAndGlkZS10ZXh0LWNlbnRlcicsXG4gICAgICBKVVNUSUZZOiAndGlkZS10ZXh0LWp1c3RpZnknLFxuICAgICAgTEVGVDogJ3RpZGUtdGV4dC1sZWZ0JyxcbiAgICAgIFJJR0hUOiAndGlkZS10ZXh0LXJpZ2h0JyxcbiAgICB9LFxuICAgIFk6IHtcbiAgICAgIElOSVRJQUw6ICd0aWRlLWFsaWduLWluaXRpYWwnLFxuICAgICAgTUlERExFOiAndGlkZS1hbGlnbi1taWRkbGUnLFxuICAgIH0sXG4gIH0sXG4gIEFYSVMxOiB7XG4gICAgQVJPVU5EOiAndGlkZS1heGlzMS1hcm91bmQnLFxuICAgIEJFVFdFRU46ICd0aWRlLWF4aXMxLWJldHdlZW4nLFxuICAgIENFTlRFUjogJ3RpZGUtYXhpczEtY2VudGVyJyxcbiAgICBFTkQ6ICd0aWRlLWF4aXMxLWVuZCcsXG4gICAgU1RBUlQ6ICd0aWRlLWF4aXMxLXN0YXJ0JyxcbiAgfSxcbiAgQVhJUzI6IHtcbiAgICBBUk9VTkQ6ICd0aWRlLWF4aXMyLWFyb3VuZCcsXG4gICAgQ0VOVEVSOiAndGlkZS1heGlzMi1jZW50ZXInLFxuICAgIEVORDogJ3RpZGUtYXhpczItZW5kJyxcbiAgICBTVEFSVDogJ3RpZGUtYXhpczItc3RhcnQnLFxuICAgIFNUUkVUQ0g6ICd0aWRlLWF4aXMyLXN0cmV0Y2gnLFxuICB9LFxuICBCRzoge1xuICAgIEdMT0JBTDoge1xuICAgICAgUFJJTUFSWToge1xuICAgICAgICBFUlJPUjogJ3RpZGUtYmctcHJpbWFyeS1lcnJvcicsXG4gICAgICAgIElORk86ICd0aWRlLWJnLXByaW1hcnktaW5mbycsXG4gICAgICAgIFNVQ0NFU1M6ICd0aWRlLWJnLXByaW1hcnktc3VjY2VzcycsXG4gICAgICAgIFdBUk5JTkc6ICd0aWRlLWJnLXByaW1hcnktd2FybmluZycsXG4gICAgICB9LFxuICAgICAgU1VSRkFDRToge1xuICAgICAgICBFUlJPUjogJ3RpZGUtYmctc3VyZmFjZS1lcnJvcicsXG4gICAgICAgIElORk86ICd0aWRlLWJnLXN1cmZhY2UtaW5mbycsXG4gICAgICAgIFNVQ0NFU1M6ICd0aWRlLWJnLXN1cmZhY2Utc3VjY2VzcycsXG4gICAgICAgIFdBUk5JTkc6ICd0aWRlLWJnLXN1cmZhY2Utd2FybmluZycsXG5cbiAgICAgICAgQkxVRTogJ3RpZGUtYmctc3VyZmFjZS1ibHVlJyxcbiAgICAgICAgR1JFRU46ICd0aWRlLWJnLXN1cmZhY2UtZ3JlZW4nLFxuICAgICAgICBMSU1FOiAndGlkZS1iZy1zdXJmYWNlLWxpbWUnLFxuICAgICAgICBPUkFOR0U6ICd0aWRlLWJnLXN1cmZhY2Utb3JhbmdlJyxcbiAgICAgICAgUFVSUExFOiAndGlkZS1iZy1zdXJmYWNlLXB1cnBsZScsXG4gICAgICAgIFJFRDogJ3RpZGUtYmctc3VyZmFjZS1yZWQnLFxuICAgICAgICBTQUxNT046ICd0aWRlLWJnLXN1cmZhY2Utc2FsbW9uJyxcbiAgICAgICAgVEVBTDogJ3RpZGUtYmctc3VyZmFjZS10ZWFsJyxcbiAgICAgICAgWUVMTE9XOiAndGlkZS1iZy1zdXJmYWNlLXllbGxvdycsXG4gICAgICB9LFxuICAgIH0sXG4gICAgSU5JVElBTDogJ3RpZGUtYmctaW5pdGlhbCcsXG4gICAgQkxVUjogJ3RpZGUtYmctYmx1cicsXG4gICAgUFJJTUFSWTogJ3RpZGUtYmctcHJpbWFyeScsXG4gICAgU0VDT05EQVJZOiAndGlkZS1iZy1zZWNvbmRhcnknLFxuICAgIFNVUkZBQ0U6IHtcbiAgICAgIEFDQ0VOVDogJ3RpZGUtYmctc3VyZmFjZS1hY2NlbnQnLFxuICAgICAgQlJBTkQ6ICd0aWRlLWJnLXN1cmZhY2UtYnJhbmQnLFxuICAgICAgREVGQVVMVDogJ3RpZGUtYmctc3VyZmFjZScsXG4gICAgICBGTE9BVElORzogJ3RpZGUtYmctc3VyZmFjZS1mbG9hdGluZycsXG4gICAgICBHUkFESUVOVDogJ3RpZGUtYmctc3VyZmFjZS1ncmFkaWVudCcsXG4gICAgICBWQVJJQU5UOiAndGlkZS1iZy1zdXJmYWNlLXZhcmlhbnQnLFxuICAgIH0sXG4gICAgVFJBTlNQQVJFTlQ6IHtcbiAgICAgIE9ORV9IVU5EUkVEOiAndGlkZS10cmFuc3BhcmVudC0xMDAnLFxuICAgICAgVFdPX0hVTkRSRUQ6ICd0aWRlLXRyYW5zcGFyZW50LTIwMCcsXG4gICAgICBUSFJFRV9IVU5EUkVEOiAndGlkZS10cmFuc3BhcmVudC0zMDAnLFxuICAgICAgRk9VUl9IVU5EUkVEOiAndGlkZS10cmFuc3BhcmVudC00MDAnLFxuICAgIH0sXG4gIH0sXG4gIEJPUkRFUjoge1xuICAgIENPTE9SOiB7XG4gICAgICBHTE9CQUw6IHtcbiAgICAgICAgRVJST1I6ICd0aWRlLWJvcmRlci1lcnJvcicsXG4gICAgICAgIElORk86ICd0aWRlLWJvcmRlci1pbmZvJyxcbiAgICAgICAgU1VDQ0VTUzogJ3RpZGUtYm9yZGVyLXN1Y2Nlc3MnLFxuICAgICAgICBXQVJOSU5HOiAndGlkZS1ib3JkZXItd2FybmluZycsXG5cbiAgICAgICAgQkxVRTogJ3RpZGUtYm9yZGVyLWJsdWUnLFxuICAgICAgICBHUkVFTjogJ3RpZGUtYm9yZGVyLWdyZWVuJyxcbiAgICAgICAgTElNRTogJ3RpZGUtYm9yZGVyLWxpbWUnLFxuICAgICAgICBPUkFOR0U6ICd0aWRlLWJvcmRlci1vcmFuZ2UnLFxuICAgICAgICBQVVJQTEU6ICd0aWRlLWJvcmRlci1wdXJwbGUnLFxuICAgICAgICBSRUQ6ICd0aWRlLWJvcmRlci1yZWQnLFxuICAgICAgICBTQUxNT046ICd0aWRlLWJvcmRlci1zYWxtb24nLFxuICAgICAgICBURUFMOiAndGlkZS1ib3JkZXItdGVhbCcsXG4gICAgICAgIFlFTExPVzogJ3RpZGUtYm9yZGVyLXllbGxvdycsXG4gICAgICB9LFxuICAgICAgSU5JVElBTDogJ3RpZGUtYm9yZGVyLWNvbG9yLWluaXRpYWwnLFxuICAgICAgREVGQVVMVDogJ3RpZGUtYm9yZGVyJyxcbiAgICAgIEZMT0FUSU5HOiAndGlkZS1ib3JkZXItZmxvYXRpbmcnLFxuICAgICAgSElHSDogJ3RpZGUtYm9yZGVyLWhpZ2gnLFxuICAgICAgTE9XOiAndGlkZS1ib3JkZXItbG93JyxcbiAgICAgIFBSSU1BUlk6ICd0aWRlLWJvcmRlci1wcmltYXJ5JyxcbiAgICB9LFxuICAgIFJBRElVUzoge1xuICAgICAgWkVSTzogJ3RpZGUtcmFkaXVzLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcmFkaXVzLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1yYWRpdXMtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcmFkaXVzLTEnLFxuICAgICAgRlVMTDogJ3RpZGUtcmFkaXVzLWZ1bGwnLFxuICAgIH0sXG4gICAgU1RZTEU6IHtcbiAgICAgIERBU0hFRDogJ3RpZGUtYm9yZGVyLWRhc2hlZCcsXG4gICAgICBTT0xJRDogJ3RpZGUtYm9yZGVyLXNvbGlkJyxcbiAgICB9LFxuICAgIEJPVFRPTToge1xuICAgICAgWkVSTzogJ3RpZGUtYm9yZGVyLWJvdHRvbS0wJyxcbiAgICAgIE9ORTogJ3RpZGUtYm9yZGVyLWJvdHRvbS0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLWJvdHRvbS0yJyxcbiAgICB9LFxuICAgIEZVTEw6IHtcbiAgICAgIFpFUk86ICd0aWRlLWJvcmRlci0wJyxcbiAgICAgIE9ORTogJ3RpZGUtYm9yZGVyLTEnLFxuICAgICAgVFdPOiAndGlkZS1ib3JkZXItMicsXG4gICAgfSxcbiAgICBMRUZUOiB7XG4gICAgICBaRVJPOiAndGlkZS1ib3JkZXItbGVmdC0wJyxcbiAgICAgIE9ORTogJ3RpZGUtYm9yZGVyLWxlZnQtMScsXG4gICAgICBUV086ICd0aWRlLWJvcmRlci1sZWZ0LTInLFxuICAgIH0sXG4gICAgUklHSFQ6IHtcbiAgICAgIFpFUk86ICd0aWRlLWJvcmRlci1yaWdodC0wJyxcbiAgICAgIE9ORTogJ3RpZGUtYm9yZGVyLXJpZ2h0LTEnLFxuICAgICAgVFdPOiAndGlkZS1ib3JkZXItcmlnaHQtMicsXG4gICAgfSxcbiAgICBUT1A6IHtcbiAgICAgIFpFUk86ICd0aWRlLWJvcmRlci10b3AtMCcsXG4gICAgICBPTkU6ICd0aWRlLWJvcmRlci10b3AtMScsXG4gICAgICBUV086ICd0aWRlLWJvcmRlci10b3AtMicsXG4gICAgfSxcbiAgfSxcbiAgQk9YX1NJWklORzoge1xuICAgIEJPUkRFUl9CT1g6ICd0aWRlLWJveC1ib3JkZXInLFxuICAgIENPTlRFTlRfQk9YOiAndGlkZS1ib3gtY29udGVudCcsXG4gIH0sXG4gIEJSRUFLX0lOU0lERToge1xuICAgIEFWT0lEX0NPTFVNTjogJ3RpZGUtYnJlYWstaW5zaWRlLWF2b2lkLWNvbHVtbicsXG4gIH0sXG4gIEJSRUFLX1dPUkQ6IHtcbiAgICBPRkY6ICd0aWRlLWJyZWFrLWluaXRpYWwnLFxuICAgIE9OOiAndGlkZS1icmVhay13b3JkJyxcbiAgfSxcbiAgQ09MVU1OUzoge1xuICAgIElOSVRJQUw6ICd0aWRlLWNvbHVtbnMtaW5pdGlhbCcsXG4gICAgT05FOiAndGlkZS1jb2x1bW5zLTEnLFxuICAgIFRXTzogJ3RpZGUtY29sdW1ucy0yJyxcbiAgICBUSFJFRTogJ3RpZGUtY29sdW1ucy0zJyxcbiAgICBGT1VSOiAndGlkZS1jb2x1bW5zLTQnLFxuICB9LFxuICBDVVJTT1I6IHtcbiAgICBOT1RfQUxMT1dFRDogJ3RpZGUtY3Vyc29yLW5vdC1hbGxvd2VkJyxcbiAgICBQT0lOVEVSOiAndGlkZS1jdXJzb3ItcG9pbnRlcicsXG4gICAgVEVYVDogJ3RpZGUtY3Vyc29yLXRleHQnLFxuICB9LFxuICBESVNQTEFZOiB7XG4gICAgQkxPQ0s6ICd0aWRlLWRpc3BsYXktYmxvY2snLFxuICAgIENPTlRFTlRTOiAndGlkZS1kaXNwbGF5LWNvbnRlbnRzJyxcbiAgICBGTEVYOiAndGlkZS1kaXNwbGF5LWZsZXgnLFxuICAgIEdSSUQ6ICd0aWRlLWRpc3BsYXktZ3JpZCcsXG4gICAgSU5JVElBTDogJ3RpZGUtZGlzcGxheS1pbml0aWFsJyxcbiAgICBJTkxJTkU6ICd0aWRlLWRpc3BsYXktaW5saW5lJyxcbiAgICBJTkxJTkVfQkxPQ0s6ICd0aWRlLWRpc3BsYXktaW5saW5lLWJsb2NrJyxcbiAgICBJTkxJTkVfRkxFWDogJ3RpZGUtZGlzcGxheS1pbmxpbmUtZmxleCcsXG4gICAgTk9ORTogJ3RpZGUtZGlzcGxheS1ub25lJyxcbiAgfSxcbiAgRUxMSVBTSVM6ICd0aWRlLWVsbGlwc2lzJyxcbiAgRkxFWDoge1xuICAgIEJBU0lTOiB7XG4gICAgICBBVVRPOiAndGlkZS1mbGV4LWJhc2lzLWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtZmxleC1iYXNpcy0wJyxcbiAgICB9LFxuICAgIERJUkVDVElPTjoge1xuICAgICAgQ09MVU1OOiAndGlkZS1mbGV4LWNvbHVtbicsXG4gICAgICBDT0xVTU5fUkVWRVJTRTogJ3RpZGUtZmxleC1jb2x1bW4tcmV2ZXJzZScsXG4gICAgICBST1c6ICd0aWRlLWZsZXgtcm93JyxcbiAgICAgIFJPV19SRVZFUlNFOiAndGlkZS1mbGV4LXJvdy1yZXZlcnNlJyxcbiAgICB9LFxuICAgIEdST1c6IHtcbiAgICAgIE9GRjogJ3RpZGUtZ3Jvdy1ub25lJyxcbiAgICAgIE9OOiAndGlkZS1ncm93JyxcbiAgICB9LFxuICAgIFNIUklOSzoge1xuICAgICAgT0ZGOiAndGlkZS1zaHJpbmstbm9uZScsXG4gICAgICBPTjogJ3RpZGUtc2hyaW5rJyxcbiAgICB9LFxuICAgIFdSQVA6ICd0aWRlLWZsZXgtd3JhcCcsXG4gIH0sXG4gIEZPTlQ6IHtcbiAgICBDT0xPUjoge1xuICAgICAgR0xPQkFMOiB7XG4gICAgICAgIEVSUk9SOiAndGlkZS1mb250LWVycm9yJyxcbiAgICAgICAgSU5GTzogJ3RpZGUtZm9udC1pbmZvJyxcbiAgICAgICAgU1VDQ0VTUzogJ3RpZGUtZm9udC1zdWNjZXNzJyxcbiAgICAgICAgV0FSTklORzogJ3RpZGUtZm9udC13YXJuaW5nJyxcblxuICAgICAgICBCTFVFOiAndGlkZS1mb250LWJsdWUnLFxuICAgICAgICBHUkVFTjogJ3RpZGUtZm9udC1ncmVlbicsXG4gICAgICAgIExJTUU6ICd0aWRlLWZvbnQtbGltZScsXG4gICAgICAgIE9SQU5HRTogJ3RpZGUtZm9udC1vcmFuZ2UnLFxuICAgICAgICBQVVJQTEU6ICd0aWRlLWZvbnQtcHVycGxlJyxcbiAgICAgICAgUkVEOiAndGlkZS1mb250LXJlZCcsXG4gICAgICAgIFNBTE1PTjogJ3RpZGUtZm9udC1zYWxtb24nLFxuICAgICAgICBURUFMOiAndGlkZS1mb250LXRlYWwnLFxuICAgICAgICBZRUxMT1c6ICd0aWRlLWZvbnQteWVsbG93JyxcblxuICAgICAgICBQUklNQVJZOiB7XG4gICAgICAgICAgQkxVRTogJ3RpZGUtZm9udC1wcmltYXJ5LWJsdWUnLFxuICAgICAgICAgIEdSRUVOOiAndGlkZS1mb250LXByaW1hcnktZ3JlZW4nLFxuICAgICAgICAgIExJTUU6ICd0aWRlLWZvbnQtcHJpbWFyeS1saW1lJyxcbiAgICAgICAgICBPUkFOR0U6ICd0aWRlLWZvbnQtcHJpbWFyeS1vcmFuZ2UnLFxuICAgICAgICAgIFBVUlBMRTogJ3RpZGUtZm9udC1wcmltYXJ5LXB1cnBsZScsXG4gICAgICAgICAgUkVEOiAndGlkZS1mb250LXByaW1hcnktcmVkJyxcbiAgICAgICAgICBTQUxNT046ICd0aWRlLWZvbnQtcHJpbWFyeS1zYWxtb24nLFxuICAgICAgICAgIFRFQUw6ICd0aWRlLWZvbnQtcHJpbWFyeS10ZWFsJyxcbiAgICAgICAgICBZRUxMT1c6ICd0aWRlLWZvbnQtcHJpbWFyeS15ZWxsb3cnLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIFBSSU1BUlk6ICd0aWRlLWZvbnQtb24tcHJpbWFyeScsXG4gICAgICBTRUNPTkRBUlk6ICd0aWRlLWZvbnQtb24tc2Vjb25kYXJ5JyxcbiAgICAgIFNVUkZBQ0U6IHtcbiAgICAgICAgQlJBTkQ6ICd0aWRlLWZvbnQtb24tc3VyZmFjZS1icmFuZCcsXG4gICAgICAgIERFRkFVTFQ6ICd0aWRlLWZvbnQtb24tc3VyZmFjZScsXG4gICAgICAgIElOVkVSU0U6ICd0aWRlLWZvbnQtb24tc3VyZmFjZS1pbnZlcnNlJyxcbiAgICAgICAgVkFSSUFOVDogJ3RpZGUtZm9udC1vbi1zdXJmYWNlLXZhcmlhbnQnLFxuICAgICAgICBWQVJJQU5UX0lOVkVSU0U6ICd0aWRlLWZvbnQtb24tc3VyZmFjZS12YXJpYW50LWludmVyc2UnLFxuICAgICAgfSxcbiAgICB9LFxuICAgIFJPTEU6IHtcbiAgICAgIERJU1BMQVlfMTogJ3RpZGUtdHlwb2dyYXBoeS1kaXNwbGF5LTEnLFxuICAgICAgSEVBRExJTkVfMTogJ3RpZGUtdHlwb2dyYXBoeS1oZWFkbGluZS0xJyxcbiAgICAgIEhFQURMSU5FXzI6ICd0aWRlLXR5cG9ncmFwaHktaGVhZGxpbmUtMicsXG4gICAgICBIRUFETElORV8zOiAndGlkZS10eXBvZ3JhcGh5LWhlYWRsaW5lLTMnLFxuICAgICAgVElUTEVfMTogJ3RpZGUtdHlwb2dyYXBoeS10aXRsZS0xJyxcbiAgICAgIFRJVExFXzI6ICd0aWRlLXR5cG9ncmFwaHktdGl0bGUtMicsXG4gICAgICBCT0RZXzE6ICd0aWRlLXR5cG9ncmFwaHktYm9keS0xJyxcbiAgICAgIEJPRFlfMjogJ3RpZGUtdHlwb2dyYXBoeS1ib2R5LTInLFxuICAgICAgTEFCRUxfMTogJ3RpZGUtdHlwb2dyYXBoeS1sYWJlbC0xJyxcbiAgICAgIExBQkVMXzFfU0VNSUJPTEQ6ICd0aWRlLXR5cG9ncmFwaHktbGFiZWwtMS1zZW1pYm9sZCcsXG4gICAgICBMQUJFTF8yOiAndGlkZS10eXBvZ3JhcGh5LWxhYmVsLTInLFxuICAgICAgTEFCRUxfMl9TRU1JQk9MRDogJ3RpZGUtdHlwb2dyYXBoeS1sYWJlbC0yLXNlbWlib2xkJyxcbiAgICAgIExBQkVMXzM6ICd0aWRlLXR5cG9ncmFwaHktbGFiZWwtMycsXG4gICAgICBMSU5LXzE6ICd0aWRlLXR5cG9ncmFwaHktbGluay0xJyxcbiAgICAgIExJTktfMjogJ3RpZGUtdHlwb2dyYXBoeS1saW5rLTInLFxuICAgICAgTElOS18zOiAndGlkZS10eXBvZ3JhcGh5LWxpbmstMycsXG4gICAgICBCVVRUT05fMTogJ3RpZGUtdHlwb2dyYXBoeS1idXR0b24tMScsXG4gICAgICBCVVRUT05fMjogJ3RpZGUtdHlwb2dyYXBoeS1idXR0b24tMicsXG4gICAgfSxcbiAgICBTSVpFOiB7XG4gICAgICBUV0VMVkU6ICd0aWRlLWZvbnQtMTInLFxuICAgICAgRk9VUlRFRU46ICd0aWRlLWZvbnQtMTQnLFxuICAgICAgU0lYVEVFTjogJ3RpZGUtZm9udC0xNicsXG4gICAgICBUV0VOVFk6ICd0aWRlLWZvbnQtMjAnLFxuICAgICAgVFdFTlRZX0ZPVVI6ICd0aWRlLWZvbnQtMjQnLFxuICAgICAgVEhJUlRZX1RXTzogJ3RpZGUtZm9udC0zMicsXG4gICAgfSxcbiAgICBXRUlHSFQ6IHtcbiAgICAgIEZPVVJfSFVORFJFRDogJ3RpZGUtZm9udC00MDAnLFxuICAgICAgRklWRV9IVU5EUkVEOiAndGlkZS1mb250LTUwMCcsXG4gICAgICBTSVhfSFVORFJFRDogJ3RpZGUtZm9udC02MDAnLFxuICAgICAgU0VWRU5fSFVORFJFRDogJ3RpZGUtZm9udC03MDAnLFxuICAgIH0sXG4gIH0sXG4gIEdBUDoge1xuICAgIFpFUk86ICd0aWRlLWdhcC0wJyxcbiAgICBRVUFSVEVSOiAndGlkZS1nYXAtMS80JyxcbiAgICBIQUxGOiAndGlkZS1nYXAtMS8yJyxcbiAgICBPTkU6ICd0aWRlLWdhcC0xJyxcbiAgICBUV086ICd0aWRlLWdhcC0yJyxcbiAgICBGT1VSOiAndGlkZS1nYXAtNCcsXG4gIH0sXG4gIEdSSUQ6IHtcbiAgICBGTFVJRDogJ3RpZGUtZmx1aWQnLFxuICAgIElURU06ICd0aWRlLWdyaWQtaXRlbScsXG4gICAgTEFZT1VUOiAndGlkZS1ncmlkLWxheW91dCcsXG4gICAgWEw6ICd0aWRlLWdyaWQteGwnLFxuICB9LFxuICBIRUlHSFQ6IHtcbiAgICBBVVRPOiAndGlkZS1oZWlnaHQtYXV0bycsXG4gICAgWkVSTzogJ3RpZGUtaGVpZ2h0LTAnLFxuICAgIEZVTEw6ICd0aWRlLWhlaWdodC1mdWxsJyxcbiAgICBNQVhfRlVMTDogJ3RpZGUtbWF4LWhlaWdodC1mdWxsJyxcbiAgICBNSU5fWkVSTzogJ3RpZGUtbWluLWhlaWdodC0wJyxcbiAgfSxcbiAgSVNPTEFUSU9OOiB7XG4gICAgSVNPTEFURTogJ3RpZGUtaXNvbGF0ZScsXG4gIH0sXG4gIExJU1RfQlVMTEVUUzoge1xuICAgIE9GRjogJ3RpZGUtbGlzdC1ub25lJyxcbiAgfSxcbiAgTUFSR0lOOiB7XG4gICAgQk9UVE9NOiB7XG4gICAgICBBVVRPOiAndGlkZS1tYXJnaW4tYm90dG9tLWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLWJvdHRvbS0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi1ib3R0b20tMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi1ib3R0b20tMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLWJvdHRvbS0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLWJvdHRvbS0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi1ib3R0b20tNCcsXG4gICAgfSxcbiAgICBGVUxMOiB7XG4gICAgICBaRVJPOiAndGlkZS1tYXJnaW4tMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4tMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4tMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi00JyxcbiAgICB9LFxuICAgIExFRlQ6IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi1sZWZ0LWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLWxlZnQtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4tbGVmdC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLWxlZnQtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLWxlZnQtMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi1sZWZ0LTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLWxlZnQtNCcsXG4gICAgfSxcbiAgICBSSUdIVDoge1xuICAgICAgQVVUTzogJ3RpZGUtbWFyZ2luLXJpZ2h0LWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLXJpZ2h0LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLXJpZ2h0LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4tcmlnaHQtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLXJpZ2h0LTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4tcmlnaHQtMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4tcmlnaHQtNCcsXG4gICAgfSxcbiAgICBUT1A6IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi10b3AtYXV0bycsXG4gICAgICBaRVJPOiAndGlkZS1tYXJnaW4tdG9wLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLXRvcC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLXRvcC0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4tdG9wLTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4tdG9wLTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLXRvcC00JyxcbiAgICB9LFxuICAgIFg6IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi14LWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLXgtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4teC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLXgtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLXgtMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi14LTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLXgtNCcsXG4gICAgfSxcbiAgICBZOiB7XG4gICAgICBaRVJPOiAndGlkZS1tYXJnaW4teS0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi15LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4teS0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4teS0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLXktMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4teS00JyxcbiAgICB9LFxuICB9LFxuICBPQkpFQ1Q6IHtcbiAgICBDRU5URVI6ICd0aWRlLW9iamVjdC1jZW50ZXInLFxuICAgIENPTlRBSU46ICd0aWRlLW9iamVjdC1jb250YWluJyxcbiAgICBDT1ZFUjogJ3RpZGUtb2JqZWN0LWNvdmVyJyxcbiAgICBTQ0FMRV9ET1dOOiAndGlkZS1vYmplY3Qtc2NhbGUtZG93bicsXG4gIH0sXG4gIE9QQUNJVFk6IHtcbiAgICBESVNBQkxFRDogJ3RpZGUtb3BhY2l0eS1kaXNhYmxlZCcsXG4gICAgT0ZGOiAndGlkZS1vcGFjaXR5LW5vbmUnLFxuICAgIE9OOiAndGlkZS1vcGFjaXR5JyxcbiAgfSxcbiAgT1ZFUkZMT1c6IHtcbiAgICBYOiB7XG4gICAgICBBVVRPOiAndGlkZS14LWF1dG8nLFxuICAgICAgSElEREVOOiAndGlkZS14LWhpZGRlbicsXG4gICAgICBTQ1JPTEw6ICd0aWRlLXgtc2Nyb2xsJyxcbiAgICB9LFxuICAgIFhZOiB7XG4gICAgICBBVVRPOiAndGlkZS14eS1hdXRvJyxcbiAgICAgIEhJRERFTjogJ3RpZGUteHktaGlkZGVuJyxcbiAgICB9LFxuICAgIFk6IHtcbiAgICAgIEFVVE86ICd0aWRlLXktYXV0bycsXG4gICAgICBISURERU46ICd0aWRlLXktaGlkZGVuJyxcbiAgICB9LFxuICB9LFxuICBQQURESU5HOiB7XG4gICAgQk9UVE9NOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLWJvdHRvbS0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmctYm90dG9tLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLWJvdHRvbS0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLWJvdHRvbS0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy1ib3R0b20tMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLWJvdHRvbS00JyxcbiAgICB9LFxuICAgIEZVTEw6IHtcbiAgICAgIFpFUk86ICd0aWRlLXBhZGRpbmctMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmctMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmctMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLTQnLFxuICAgIH0sXG4gICAgTEVGVDoge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy1sZWZ0LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy1sZWZ0LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLWxlZnQtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy1sZWZ0LTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLWxlZnQtMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLWxlZnQtNCcsXG4gICAgfSxcbiAgICBSSUdIVDoge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy1yaWdodC0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmctcmlnaHQtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctcmlnaHQtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy1yaWdodC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy1yaWdodC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctcmlnaHQtNCcsXG4gICAgfSxcbiAgICBUT1A6IHtcbiAgICAgIFpFUk86ICd0aWRlLXBhZGRpbmctdG9wLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy10b3AtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctdG9wLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmctdG9wLTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLXRvcC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctdG9wLTQnLFxuICAgIH0sXG4gICAgWDoge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy14LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy14LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLXgtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy14LTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLXgtMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLXgtNCcsXG4gICAgfSxcbiAgICBZOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLXktMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLXktMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmcteS0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLXktMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmcteS0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmcteS00JyxcbiAgICB9LFxuICB9LFxuICBQT0lOVEVSX0VWRU5UUzoge1xuICAgIE9GRjogJ3RpZGUtcG9pbnRlci1ldmVudHMtbm9uZScsXG4gICAgT046ICd0aWRlLXBvaW50ZXItZXZlbnRzJyxcbiAgfSxcbiAgUE9TSVRJT046IHtcbiAgICBBQlNPTFVURTogJ3RpZGUtcG9zaXRpb24tYWJzb2x1dGUnLFxuICAgIEZJWEVEOiAndGlkZS1wb3NpdGlvbi1maXhlZCcsXG4gICAgUkVMQVRJVkU6ICd0aWRlLXBvc2l0aW9uLXJlbGF0aXZlJyxcbiAgICBTVEFUSUM6ICd0aWRlLXBvc2l0aW9uLXN0YXRpYycsXG4gICAgU1RJQ0tZOiAndGlkZS1wb3NpdGlvbi1zdGlja3knLFxuICB9LFxuICBQT1NJVElPTklORzoge1xuICAgIEJPVFRPTTogJ3RpZGUtYm90dG9tLTAnLFxuICAgIExFRlQ6ICd0aWRlLWxlZnQtMCcsXG4gICAgUklHSFQ6ICd0aWRlLXJpZ2h0LTAnLFxuICAgIFRPUDogJ3RpZGUtdG9wLTAnLFxuICB9LFxuICBSQVRJTzoge1xuICAgIE9ORV9UT19PTkU6ICd0aWRlLXJhdGlvLTEvMScsXG4gICAgU0lYVEVFTl9UT19OSU5FOiAndGlkZS1yYXRpby0xNi85JyxcbiAgICBUSFJFRV9UT19UV086ICd0aWRlLXJhdGlvLTMvMicsXG4gIH0sXG4gIFNDUk9MTEJBUjoge1xuICAgIE9GRjogJ3RpZGUtc2Nyb2xsYmFyLW5vbmUnLFxuICB9LFxuICBTSEFET1c6IHtcbiAgICBJTklUSUFMOiAndGlkZS1zaGFkb3ctaW5pdGlhbCcsXG4gICAgQk9UVE9NOiAndGlkZS1zaGFkb3ctYm90dG9tJyxcbiAgICBUT1A6ICd0aWRlLXNoYWRvdy10b3AnLFxuICAgIFRFWFQ6ICd0aWRlLXNoYWRvdy10ZXh0JyxcbiAgfSxcbiAgU05BUDoge1xuICAgIE9OOiAndGlkZS1zY3JvbGwtc25hcCcsXG4gIH0sXG4gIFNOQVBfQUxJR046IHtcbiAgICBTVEFSVDogJ3RpZGUtc2Nyb2xsLXNuYXAtc3RhcnQnLFxuICB9LFxuICBTVFJJS0VUSFJPVUdIOiB7XG4gICAgT0ZGOiAndGlkZS1zdHJpa2V0aHJvdWdoLW5vbmUnLFxuICAgIE9OOiAndGlkZS1zdHJpa2V0aHJvdWdoJyxcbiAgfSxcbiAgVEVYVF9UUkFOU0ZPUk06IHtcbiAgICBMT1dFUjogJ3RpZGUtdGV4dC10cmFuc2Zvcm0tbG93ZXInLFxuICAgIE5PTkU6ICd0aWRlLXRleHQtdHJhbnNmb3JtLW5vbmUnLFxuICAgIFVQUEVSOiAndGlkZS10ZXh0LXRyYW5zZm9ybS11cHBlcicsXG4gIH0sXG4gIFVOREVSTElORToge1xuICAgIEhPVkVSOiB7XG4gICAgICBPTjogJ3RpZGUtdW5kZXJsaW5lLWhvdmVyJyxcbiAgICAgIE9GRjogJ3RpZGUtdW5kZXJsaW5lLWhvdmVyLW5vbmUnLFxuICAgIH0sXG4gICAgUkVTVDoge1xuICAgICAgT046ICd0aWRlLXVuZGVybGluZScsXG4gICAgICBPRkY6ICd0aWRlLXVuZGVybGluZS1ub25lJyxcbiAgICB9LFxuICB9LFxuICBVU0VSX1NFTEVDVDoge1xuICAgIElOSVRJQUw6ICd0aWRlLXVzZXItc2VsZWN0LWluaXRpYWwnLFxuICAgIE5PTkU6ICd0aWRlLXVzZXItc2VsZWN0LW5vbmUnLFxuICB9LFxuICBWSVNJQklMSVRZOiB7XG4gICAgT0ZGOiAndGlkZS12aXNpYmxlLW5vbmUnLFxuICAgIE9OOiAndGlkZS12aXNpYmxlJyxcbiAgfSxcbiAgV0hJVEVTUEFDRV9XUkFQOiB7XG4gICAgT0ZGOiAndGlkZS13aGl0ZXNwYWNlLW5vd3JhcCcsXG4gIH0sXG4gIFdJRFRIOiB7XG4gICAgQVVUTzogJ3RpZGUtd2lkdGgtYXV0bycsXG4gICAgWkVSTzogJ3RpZGUtd2lkdGgtMCcsXG4gICAgRlVMTDogJ3RpZGUtd2lkdGgtZnVsbCcsXG4gICAgTUFYX0ZVTEw6ICd0aWRlLW1heC13aWR0aC1mdWxsJyxcbiAgICBNSU5fWkVSTzogJ3RpZGUtbWluLXdpZHRoLTAnLFxuICB9LFxuICBaX0lOREVYOiB7XG4gICAgSU5JVElBTDogJ3RpZGUtei1pbmRleC1pbml0aWFsJyxcbiAgICBPTkU6ICd0aWRlLXotaW5kZXgtMScsXG4gIH0sXG59IGFzIGNvbnN0O1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgT1JJRU5UQVRJT04gfSBmcm9tICdAL3R5cGVzL09yaWVudGF0aW9uJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgT3JpZW50YXRpb24gfSBmcm9tICdAL3R5cGVzL09yaWVudGF0aW9uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIG9yaWVudGF0aW9uPzogT3JpZW50YXRpb247XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBvcmllbnRhdGlvbjogT1JJRU5UQVRJT04uSE9SSVpPTlRBTCxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1kaXZpZGVyJ11cIj5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgIENTUy5CT1JERVIuQ09MT1IuTE9XLFxuICAgICAgICBwcm9wcy5vcmllbnRhdGlvbiA9PT0gT1JJRU5UQVRJT04uSE9SSVpPTlRBTFxuICAgICAgICAgID8gW0NTUy5NQVJHSU4uWS5IQUxGLCBDU1MuQk9SREVSLkJPVFRPTS5PTkUsIENTUy5XSURUSC5GVUxMXVxuICAgICAgICAgIDogW0NTUy5NQVJHSU4uWC5IQUxGLCBDU1MuQk9SREVSLlJJR0hULk9ORSwgQ1NTLkhFSUdIVC5GVUxMXSxcbiAgICAgIF1cIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtZGl2aWRlciB7XG4gICAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbiAgfVxuPC9zdHlsZT5cbiIsImV4cG9ydCBjb25zdCBSRUFMTSA9IHtcbiAgQUVSTzogJ2Flcm8nLFxuICBBVFY6ICdhdHYnLFxuICBCT0FUTUFSVDogJ2JvYXRtYXJ0JyxcbiAgQ1lDTEU6ICdjeWNsZScsXG4gIEVRVUlQTUVOVDogJ2VxdWlwbWVudCcsXG4gIFBXQzogJ3B3YycsXG4gIFJWOiAncnYnLFxuICBTTk9XOiAnc25vdycsXG4gIFRSVUNLOiAndHJ1Y2snLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgUmVhbG1LZXkgPSBrZXlvZiB0eXBlb2YgUkVBTE07XG5leHBvcnQgdHlwZSBSZWFsbSA9ICh0eXBlb2YgUkVBTE0pW1JlYWxtS2V5XTtcbiIsImV4cG9ydCBjb25zdCBTSVpFID0ge1xuICBMQVJHRTogJ2xhcmdlJyxcbiAgU01BTEw6ICdzbWFsbCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBTaXplID0gKHR5cGVvZiBTSVpFKVtrZXlvZiB0eXBlb2YgU0laRV07XG5cbmV4cG9ydCBjb25zdCBTSVpFX0JVVFRPTiA9IHtcbiAgTEFSR0U6ICdsYXJnZScsXG4gIFNNQUxMOiAnc21hbGwnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgU2l6ZUJ1dHRvbiA9ICh0eXBlb2YgU0laRSlba2V5b2YgdHlwZW9mIFNJWkVdO1xuIiwiY29uc3QgY2FwaXRhbGl6ZUZpcnN0ID0gKHN0cmluZzogc3RyaW5nKSA9PiB7XG4gIHJldHVybiBzdHJpbmcuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzdHJpbmcuc2xpY2UoMSk7XG59O1xuXG5jb25zdCBmb3JtYXRDYW1lbENhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnXG4gICAgPyBpbnB1dFxuICAgICAgICAucmVwbGFjZSgvXltcXHNfLV0vLCAnJylcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJylcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLm1hcCgod29yZCwgaW5kZXgpID0+IChpbmRleCA9PT0gMCA/IHdvcmQgOiB3b3JkLnNsaWNlKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyB3b3JkLnNsaWNlKDEpKSlcbiAgICAgICAgLmpvaW4oJycpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdEtlYmFiQ2FzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZydcbiAgICA/IGlucHV0XG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnLScpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdExhYmVsID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgbGFiZWxNYXA6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgZmFsc2U6ICdObycsXG4gICAgdHJ1ZTogJ1llcycsXG4gIH07XG4gIHJldHVybiBPYmplY3QuaGFzT3duKGxhYmVsTWFwLCB2YWx1ZSkgPyBsYWJlbE1hcFt2YWx1ZV0gOiB2YWx1ZTtcbn07XG5cbmNvbnN0IGZvcm1hdE51bWJlciA9IChpbnB1dDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgbGV0IG91dHB1dCA9IGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ251bWJlcicgPyBuZXcgSW50bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQoaW5wdXQpIDogU3RyaW5nKGlucHV0IHx8ICcnKTtcbiAgbGV0IGRpZ2l0cyA9IG91dHB1dDtcblxuICBpZiAoaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgIGRpZ2l0cyA9IGRpZ2l0cy5yZXBsYWNlKC9cXEQvZywgJycpO1xuICAgIGlmIChOdW1iZXIoZGlnaXRzKSkge1xuICAgICAgb3V0cHV0ID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0KE51bWJlcihkaWdpdHMpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0cHV0ID0gJzAnO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvdXRwdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRQYXNjYWxDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJylcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLm1hcCgod29yZCkgPT4gd29yZC5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKSlcbiAgICAgICAgLmpvaW4oJycpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdFBob25lID0gKGlucHV0OiBudW1iZXIgfCBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBsZXQgb3V0cHV0ID0gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnbnVtYmVyJyA/IFN0cmluZyhpbnB1dCkgOiBTdHJpbmcoaW5wdXQgfHwgJycpO1xuICBsZXQgZGlnaXRzID0gb3V0cHV0O1xuICBkaWdpdHMgPSBkaWdpdHMucmVwbGFjZSgvXFxEL2csICcnKTtcblxuICBzd2l0Y2ggKGRpZ2l0cy5sZW5ndGgpIHtcbiAgICBjYXNlIDc6XG4gICAgICBvdXRwdXQgPSBgJHtkaWdpdHMuc2xpY2UoMCwgMyl9LSR7ZGlnaXRzLnNsaWNlKDMpfWA7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDEwOlxuICAgICAgb3V0cHV0ID0gYCR7ZGlnaXRzLnNsaWNlKDAsIDMpfS0ke2RpZ2l0cy5zbGljZSgzLCA2KX0tJHtkaWdpdHMuc2xpY2UoNil9YDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTE6XG4gICAgICBvdXRwdXQgPSBgJHtkaWdpdHMuc2xpY2UoMCwgMSl9LSR7ZGlnaXRzLnNsaWNlKDEsIDQpfS0ke2RpZ2l0cy5zbGljZSg0LCA3KX0tJHtkaWdpdHMuc2xpY2UoNyl9YDtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBvdXRwdXQgPSBkaWdpdHM7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIHJldHVybiBvdXRwdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRQcmljZSA9IChpbnB1dDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3Qgb3V0cHV0ID0gaW5wdXQgPyBmb3JtYXROdW1iZXIoaW5wdXQpIDogU3RyaW5nKGlucHV0IHx8ICcwJyk7XG4gIHJldHVybiBgJCR7b3V0cHV0fWA7XG59O1xuXG5jb25zdCBmb3JtYXRRdW90ZXMgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICBpZiAodmFsdWUuc3RhcnRzV2l0aCgnXCInKSAmJiB2YWx1ZS5lbmRzV2l0aCgnXCInKSkge1xuICAgIHJldHVybiB2YWx1ZS5zbGljZSgxLCAtMSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59O1xuXG5jb25zdCBmb3JtYXRTZW50ZW5jZUNhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGxldCBzZW50ZW5jZUNhc2UgPSBpbnB1dDtcblxuICBpZiAoaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgIGNvbnN0IGxvd2VyQ2FzZSA9IGlucHV0XG4gICAgICAucmVwbGFjZSgvKFthLXpdezF9KShbQS1aXXsxfSkvZywgJyQxICQyJylcbiAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnICcpO1xuXG4gICAgc2VudGVuY2VDYXNlID0gbG93ZXJDYXNlLnNsaWNlKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyBsb3dlckNhc2Uuc2xpY2UoMSk7XG4gIH1cblxuICByZXR1cm4gc2VudGVuY2VDYXNlO1xufTtcblxuY29uc3QgZm9ybWF0U25ha2VDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICdfJylcbiAgICA6IGlucHV0O1xufTtcblxuY29uc3QgZm9ybWF0VGl0bGVDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJylcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLm1hcCgod29yZCkgPT4gd29yZC5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKSlcbiAgICAgICAgLmpvaW4oJyAnKVxuICAgIDogaW5wdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRVcmxGcm9tUm9vdCA9ICh1cmw6IHN0cmluZykgPT4ge1xuICBjb25zdCB1cmxGb3JtYXR0ZWQgPSB1cmwuc3BsaXQoJy5jb20vJyk7XG5cbiAgcmV0dXJuIHVybEZvcm1hdHRlZC5sZW5ndGggPiAxID8gYC8ke3VybEZvcm1hdHRlZFsxXX1gIDogdXJsO1xufTtcblxuY29uc3QgZm9ybWF0V2VpZ2h0ID0gKGlucHV0OiBudW1iZXIgfCBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBvdXRwdXQgPSBpbnB1dCA/IGZvcm1hdE51bWJlcihpbnB1dCkgOiBTdHJpbmcoaW5wdXQgfHwgJzAnKTtcbiAgcmV0dXJuIGAke291dHB1dH0gbGJzYDtcbn07XG5cbmNvbnN0IGdldEFydGljbGUgPSAobm91bjogc3RyaW5nLCBpc1BsdXJhbCA9IGZhbHNlLCBpc0RlZmluaXRlID0gZmFsc2UpID0+IHtcbiAgY29uc3Qgdm93ZWxzID0gWydhJywgJ2UnLCAnaScsICdvJywgJ3UnXTtcbiAgY29uc3QgaXNWb3dlbExlYWRpbmcgPSB2b3dlbHMuaW5jbHVkZXMobm91bi5jaGFyQXQoMCkpO1xuXG4gIHJldHVybiBpc0RlZmluaXRlID8gJ3RoZScgOiBpc1BsdXJhbCA/ICdzb21lJyA6IGlzVm93ZWxMZWFkaW5nID8gJ2FuJyA6ICdhJztcbn07XG5cbmNvbnN0IHByaWNlVG9OdW1iZXIgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICBpZiAoTnVtYmVyLmlzTmFOKE51bWJlcih2YWx1ZSkpKSB7XG4gICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKCckJywgJycpO1xuICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvLC9nLCAnJyk7XG4gIH1cbiAgcmV0dXJuIHBhcnNlSW50KHZhbHVlLCAxMCk7XG59O1xuXG5jb25zdCB1bmZvcm1hdFByaWNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBvdXRwdXQgPSBpbnB1dC5yZXBsYWNlKC9cXCQvZywgJycpLnJlcGxhY2UoLywvZywgJycpO1xuICByZXR1cm4gYCR7b3V0cHV0fWA7XG59O1xuXG5leHBvcnQge1xuICBjYXBpdGFsaXplRmlyc3QsXG4gIGZvcm1hdENhbWVsQ2FzZSxcbiAgZm9ybWF0S2ViYWJDYXNlLFxuICBmb3JtYXRMYWJlbCxcbiAgZm9ybWF0TnVtYmVyLFxuICBmb3JtYXRQYXNjYWxDYXNlLFxuICBmb3JtYXRQaG9uZSxcbiAgZm9ybWF0UHJpY2UsXG4gIGZvcm1hdFF1b3RlcyxcbiAgZm9ybWF0U2VudGVuY2VDYXNlLFxuICBmb3JtYXRTbmFrZUNhc2UsXG4gIGZvcm1hdFRpdGxlQ2FzZSxcbiAgZm9ybWF0VXJsRnJvbVJvb3QsXG4gIGZvcm1hdFdlaWdodCxcbiAgZ2V0QXJ0aWNsZSxcbiAgcHJpY2VUb051bWJlcixcbiAgdW5mb3JtYXRQcmljZSxcbn07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBkZWZpbmVBc3luY0NvbXBvbmVudCwgbWFya1JhdywgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHsgUkVBTE0gfSBmcm9tICdAL3R5cGVzL1JlYWxtJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZm9ybWF0UGFzY2FsQ2FzZSB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHR5cGUgeyBTaXplIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHR5cGUgeyBDb21wb25lbnQgfSBmcm9tICd2dWUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaWNvbjogSWNvbjtcbiAgICBzaXplPzogU2l6ZTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIHNpemU6IFNJWkUuU01BTEwsXG4gIH0pO1xuXG4gIGNvbnN0IGlubmVyU1ZHID0gcmVmPENvbXBvbmVudD4oKTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy5pY29uLFxuICAgIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGlkOiBzdHJpbmcgPSBwcm9wcy5pY29uO1xuICAgICAgY29uc3QgbmFtZSA9IGZvcm1hdFBhc2NhbENhc2UoaWQpO1xuICAgICAgY29uc3QgW3ByZWZpeF0gPSBpZC5zcGxpdCgnLScpO1xuICAgICAgY29uc3QgcmVhbG1Gb2xkZXIgPSBSRUFMTVtwcmVmaXg/LnRvVXBwZXJDYXNlKCkgYXMga2V5b2YgdHlwZW9mIFJFQUxNXTtcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGRlZmluZUFzeW5jQ29tcG9uZW50KCgpID0+IHtcbiAgICAgICAgaWYgKHJlYWxtRm9sZGVyKSB7XG4gICAgICAgICAgcmV0dXJuIGltcG9ydChgLi4vYXNzZXRzL3N2Zy9pY29ucy9yZWFsbS8ke3JlYWxtRm9sZGVyfS9JY29uJHtuYW1lfS5zdmc/Y29tcG9uZW50YCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaW1wb3J0KGAuLi9hc3NldHMvc3ZnL2ljb25zL0ljb24ke25hbWV9LnN2Zz9jb21wb25lbnRgKTtcbiAgICAgIH0pO1xuXG4gICAgICBpbm5lclNWRy52YWx1ZSA9IG1hcmtSYXcoY29tcG9uZW50KTtcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWljb24nLCBwcm9wcy5zaXplXVwiPlxuICAgIDxDb21wb25lbnRcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5CTE9DS11cIlxuICAgICAgOmRhdGEtaWNvbj1cImljb25cIlxuICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICA6aXM9XCJpbm5lclNWR1wiXG4gICAgICB2LWlmPVwiaW5uZXJTVkdcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlPlxuICAudGlkZS1pY29uIHtcbiAgICB3aWR0aDogMS41cmVtO1xuICAgIGhlaWdodDogMS41cmVtO1xuICB9XG5cbiAgLnRpZGUtaWNvbi5zbWFsbCB7XG4gICAgd2lkdGg6IDEuMjVyZW07XG4gICAgaGVpZ2h0OiAxLjI1cmVtO1xuICB9XG5cbiAgLnRpZGUtaWNvbiBzdmcge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgfVxuPC9zdHlsZT5cbiIsImltcG9ydCB0eXBlIHsgUmVhbG1LZXkgfSBmcm9tICdAL3R5cGVzL1JlYWxtJztcblxuZXhwb3J0IGNvbnN0IElDT04gPSB7XG4gIEFDQ09VTlRfQkFMQU5DRTogJ2FjY291bnQtYmFsYW5jZScsXG4gIEFDVVRFOiAnYWN1dGUnLFxuICBBREQ6ICdhZGQnLFxuICBBSV9ERVNDUklQVElPTjogJ2FpLWRlc2NyaXB0aW9uJyxcbiAgQUxJR05fU1BBQ0VfRVZFTjogJ2FsaWduLXNwYWNlLWV2ZW4nLFxuICBBUFBMRV9QQVk6ICdhcHBsZS1wYXknLFxuICBBUlJPV19CQUNLOiAnYXJyb3ctYmFjaycsXG4gIEFSUk9XX0NZQ0xFOiAnYXJyb3ctY3ljbGUnLFxuICBBUlJPV19GT1JXQVJEOiAnYXJyb3ctZm9yd2FyZCcsXG4gIEFSUk9XX1JJR0hUOiAnYXJyb3ctcmlnaHQnLFxuICBBUlJPV19VUDogJ2Fycm93LXVwJyxcbiAgQVNTSUdOTUVOVDogJ2Fzc2lnbm1lbnQnLFxuICBBVFRBQ0hfTU9ORVk6ICdhdHRhY2gtbW9uZXknLFxuICBBVVRPX1JFTkVXOiAnYXV0by1yZW5ldycsXG4gIEFXQVJEX1NUQVI6ICdhd2FyZC1zdGFyJyxcbiAgQkVEOiAnYmVkJyxcbiAgQk9MVDogJ2JvbHQnLFxuICBCT09LTUFSSzogJ2Jvb2ttYXJrJyxcbiAgQlVOS0hPVVNFOiAnYnVua2hvdXNlJyxcbiAgQ0FMRU5EQVJfTU9OVEg6ICdjYWxlbmRhci1tb250aCcsXG4gIENBTEw6ICdjYWxsJyxcbiAgQ0FMTF9RVUFMSVRZOiAnY2FsbC1xdWFsaXR5JyxcbiAgQ0FSX1JFTlRBTDogJ2Nhci1yZW50YWwnLFxuICBDSEVDSzogJ2NoZWNrJyxcbiAgQ0hFVlJPTl9MRUZUOiAnY2hldnJvbi1sZWZ0JyxcbiAgQ0hFVlJPTl9SSUdIVDogJ2NoZXZyb24tcmlnaHQnLFxuICBDTEVBUjogJ2NsZWFyJyxcbiAgQ0xPU0U6ICdjbG9zZScsXG4gIENPTlRSQUNUOiAnY29udHJhY3QnLFxuICBDUkFTSDogJ2NyYXNoJyxcbiAgREFTSEJPQVJEX0NVU1RPTUlaRTogJ2Rhc2hib2FyZC1jdXN0b21pemUnLFxuICBERUxFVEU6ICdkZWxldGUnLFxuICBESUFNT05EOiAnZGlhbW9uZCcsXG4gIERJUkVDVElPTlNfQk9BVDogJ2RpcmVjdGlvbnMtYm9hdCcsXG4gIERPTUFJTjogJ2RvbWFpbicsXG4gIERSQUZUOiAnZHJhZnQnLFxuICBFRElUOiAnZWRpdCcsXG4gIEVOR0lORTogJ2VuZ2luZScsXG4gIEVOR0lORUVSSU5HOiAnZW5naW5lZXJpbmcnLFxuICBFUlJPUjogJ2Vycm9yJyxcbiAgRVhQQU5EX0NPTlRFTlQ6ICdleHBhbmQtY29udGVudCcsXG4gIEVYUEFORF9MRVNTOiAnZXhwYW5kLWxlc3MnLFxuICBFWFBBTkRfTU9SRTogJ2V4cGFuZC1tb3JlJyxcbiAgRkFDRUJPT0s6ICdmYWNlYm9vaycsXG4gIEZBVk9SSVRFOiAnZmF2b3JpdGUnLFxuICBGQVZPUklURV9GSUxMRUQ6ICdmYXZvcml0ZS1maWxsZWQnLFxuICBGTEFHOiAnZmxhZycsXG4gIEZPUk1BVF9CT0xEOiAnZm9ybWF0LWJvbGQnLFxuICBGT1JNQVRfSVRBTElDOiAnZm9ybWF0LWl0YWxpYycsXG4gIEZPUk1BVF9MSVNUX0JVTExFVEVEOiAnZm9ybWF0LWxpc3QtYnVsbGV0ZWQnLFxuICBGT1JVTTogJ2ZvcnVtJyxcbiAgR0FTOiAnZ2FzJyxcbiAgR0FWRUw6ICdnYXZlbCcsXG4gIEdFQVJTOiAnZ2VhcnMnLFxuICBHTE9CRV9MT0NBVElPTl9QSU46ICdnbG9iZS1sb2NhdGlvbi1waW4nLFxuICBHT09HTEU6ICdnb29nbGUnLFxuICBHT09HTEVfUEFZOiAnZ29vZ2xlLXBheScsXG4gIEdSSUQ6ICdncmlkJyxcbiAgSEFORFNIQUtFOiAnaGFuZHNoYWtlJyxcbiAgSEFORFlNQU46ICdoYW5keW1hbicsXG4gIEhFSUdIVDogJ2hlaWdodCcsXG4gIEhFTFA6ICdoZWxwJyxcbiAgSU5GTzogJ2luZm8nLFxuICBJTkZPUk1BVElPTjogJ2luZm9ybWF0aW9uJyxcbiAgSU5TRVJUX1RFWFQ6ICdpbnNlcnQtdGV4dCcsXG4gIElOU1RBR1JBTTogJ2luc3RhZ3JhbScsXG4gIElPU19TSEFSRTogJ2lvcy1zaGFyZScsXG4gIExBWU9VVDogJ2xheW91dCcsXG4gIExFVkVMTElOR19KQUNLOiAnbGV2ZWxsaW5nLWphY2snLFxuICBMSU5LRURfSU46ICdsaW5rZWQgaW4nLFxuICBMT0NBTF9TSElQUElORzogJ2xvY2FsLXNoaXBwaW5nJyxcbiAgTE9DSzogJ2xvY2snLFxuICBNQUlMOiAnbWFpbCcsXG4gIE1FTlU6ICdtZW51JyxcbiAgTU9ORVlfQkFHOiAnbW9uZXktYmFnJyxcbiAgTU9SRV9IT1JJWjogJ21vcmUtaG9yaXonLFxuICBOT1RJRklDQVRJT05TOiAnbm90aWZpY2F0aW9ucycsXG4gIE9ET01FVEVSOiAnb2RvbWV0ZXInLFxuICBPUEVOX0lOX05FVzogJ29wZW4taW4tbmV3JyxcbiAgUEFMRVRURTogJ3BhbGV0dGUnLFxuICBQQVlQQUw6ICdwYXlwYWwnLFxuICBQRVJTT046ICdwZXJzb24nLFxuICBQRVJTT05fU0VBUkNIOiAncGVyc29uLXNlYXJjaCcsXG4gIFBIT1RPX0NBTUVSQTogJ3Bob3RvLWNhbWVyYScsXG4gIFBJTlRFUkVTVDogJ3BpbnRlcmVzdCcsXG4gIFBMQVlfQVJST1c6ICdwbGF5LWFycm93JyxcbiAgUE9MSUNZOiAncG9saWN5JyxcbiAgUE9XRVI6ICdwb3dlcicsXG4gIFBPV0VSX09GRjogJ3Bvd2VyLW9mZicsXG4gIFBSSU9SSVRZX0hJR0g6ICdwcmlvcml0eS1oaWdoJyxcbiAgUkVNT1ZFOiAncmVtb3ZlJyxcbiAgUkVRVUVTVF9RVU9URTogJ3JlcXVlc3QtcXVvdGUnLFxuICBSRVNFVF9XUkVOQ0g6ICdyZXNldC13cmVuY2gnLFxuICBST0FEOiAncm9hZCcsXG4gIFJPVU5ERURfQ09STkVSOiAncm91bmRlZC1jb3JuZXInLFxuICBSVUxFUjogJ3J1bGVyJyxcbiAgU0FJTElORzogJ3NhaWxpbmcnLFxuICBTQ0hPT0w6ICdzY2hvb2wnLFxuICBTRUFSQ0g6ICdzZWFyY2gnLFxuICBTRUFUSU5HOiAnc2VhdGluZycsXG4gIFNFTEw6ICdzZWxsJyxcbiAgU0VOU09SUzogJ3NlbnNvcnMnLFxuICBTRVRUSU5HUzogJ3NldHRpbmdzJyxcbiAgU0hBUkU6ICdzaGFyZScsXG4gIFNISUVMRF9DSEVDSzogJ3NoaWVsZC1jaGVjaycsXG4gIFNIT1BQSU5HX0NBUlQ6ICdzaG9wcGluZy1jYXJ0JyxcbiAgU0xFRVBTOiAnc2xlZXBzJyxcbiAgU01TOiAnc21zJyxcbiAgU05PV0ZMQUtFOiAnc25vd2ZsYWtlJyxcbiAgU1RBUjogJ3N0YXInLFxuICBTVEFSX0ZJTExFRDogJ3N0YXItZmlsbGVkJyxcbiAgU1RBUl9IQUxGOiAnc3Rhci1oYWxmJyxcbiAgU1VNTUFSSVpFOiAnc3VtbWFyaXplJyxcbiAgU1dBUF9IT1JJWjogJ3N3YXAtaG9yaXonLFxuICBTV0FQX1ZFUlQ6ICdzd2FwLXZlcnQnLFxuICBUSFJFRV9EX1JPVEFUSU9OOiAndGhyZWUtZC1yb3RhdGlvbicsXG4gIFRIVU1CX1VQOiAndGh1bWItdXAnLFxuICBUUkVORElOR19ET1dOOiAndHJlbmRpbmctZG93bicsXG4gIFRST1BIWTogJ3Ryb3BoeScsXG4gIFRVTkU6ICd0dW5lJyxcbiAgVFdJVFRFUjogJ3R3aXR0ZXInLFxuICBVTUJSRUxMQTogJ3VtYnJlbGxhJyxcbiAgVkVSSUZJRUQ6ICd2ZXJpZmllZCcsXG4gIFZJREVPQ0FNOiAndmlkZW9jYW0nLFxuICBWSUVXX0lOX0FSOiAndmlldy1pbi1hcicsXG4gIFZJU0lCSUxJVFk6ICd2aXNpYmlsaXR5JyxcbiAgVk9MVU1FX09GRjogJ3ZvbHVtZS1vZmYnLFxuICBWT0xVTUVfT046ICd2b2x1bWUtb24nLFxuICBXQVJFSE9VU0U6ICd3YXJlaG91c2UnLFxuICBXQVJOSU5HOiAnd2FybmluZycsXG4gIFdBVEVSOiAnd2F0ZXInLFxuICBXRUlHSFQ6ICd3ZWlnaHQnLFxuICBXSURUSDogJ3dpZHRoJyxcbiAgV09SS1NQQUNFX1BSRU1JVU06ICd3b3Jrc3BhY2UtcHJlbWl1bScsXG4gIFdSRU5DSDogJ3dyZW5jaCcsXG4gIFlPVVRVQkU6ICd5b3V0dWJlJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBJQ09OX1JFQUxNID0ge1xuICBBVFY6IHtcbiAgICBBVFY6ICdhdHYtYXR2JyxcbiAgICBEVU5FX0JVR0dZOiAnYXR2LWR1bmUtYnVnZ3knLFxuICAgIEdPTEZfQ0FSVDogJ2F0di1nb2xmLWNhcnQnLFxuICAgIEdPX0tBUlQ6ICdhdHYtZ28ta2FydCcsXG4gICAgU0FORF9SQUlMOiAnYXR2LXNhbmQtcmFpbCcsXG4gICAgU0lERV9CWV9TSURFOiAnYXR2LXNpZGUtYnktc2lkZScsXG4gICAgVFJBSUxFUjogJ2F0di10cmFpbGVyJyxcbiAgfSxcbiAgQk9BVE1BUlQ6IHtcbiAgICBQV0M6ICdib2F0bWFydC1wd2MnLFxuICAgIFRSQUlMRVI6ICdib2F0bWFydC10cmFpbGVyJyxcbiAgfSxcbiAgUlY6IHtcbiAgICBDTEFTU19BOiAncnYtY2xhc3MtYScsXG4gICAgQ0xBU1NfQjogJ3J2LWNsYXNzLWInLFxuICAgIENMQVNTX0M6ICdydi1jbGFzcy1jJyxcbiAgICBGSUZUSF9XSEVFTDogJ3J2LWZpZnRoLXdoZWVsJyxcbiAgICBGSVNIX0hPVVNFOiAncnYtZmlzaC1ob3VzZScsXG4gICAgUEFSS19NT0RFTDogJ3J2LXBhcmstbW9kZWwnLFxuICAgIFBPUF9VUF9DQU1QRVI6ICdydi1wb3AtdXAtY2FtcGVyJyxcbiAgICBUUkFWRUxfVFJBSUxFUjogJ3J2LXRyYXZlbC10cmFpbGVyJyxcbiAgICBUUlVDS19DQU1QRVI6ICdydi10cnVjay1jYW1wZXInLFxuICB9LFxufSBhcyBjb25zdDtcblxudHlwZSBSZWFsbUtleXNXaXRoSWNvbnMgPSBFeHRyYWN0PFJlYWxtS2V5LCBrZXlvZiB0eXBlb2YgSUNPTl9SRUFMTT47XG50eXBlIFJlYWxtSWNvbiA9IHtcbiAgW1JlYWxtS2V5IGluIFJlYWxtS2V5c1dpdGhJY29uc106ICh0eXBlb2YgSUNPTl9SRUFMTSlbUmVhbG1LZXldW2tleW9mICh0eXBlb2YgSUNPTl9SRUFMTSlbUmVhbG1LZXldXTtcbn1bUmVhbG1LZXlzV2l0aEljb25zXTtcblxuZXhwb3J0IHR5cGUgR2xvYmFsSWNvbiA9ICh0eXBlb2YgSUNPTilba2V5b2YgdHlwZW9mIElDT05dO1xuZXhwb3J0IHR5cGUgSWNvbiA9IEdsb2JhbEljb24gfCBSZWFsbUljb247XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgVGlkZURpdmlkZXIgZnJvbSAnQC9jb21wb25lbnRzL1RpZGVEaXZpZGVyLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzKFsndG9nZ2xlJ10pO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaGFzQm90dG9tRGl2aWRlcj86IGJvb2xlYW47XG4gICAgaGFzVG9wRGl2aWRlcj86IGJvb2xlYW47XG4gICAgaXNFeHBhbmRlZD86IGJvb2xlYW47XG4gICAgaXNPcHRpb25hbD86IGJvb2xlYW47XG4gICAgbGFiZWw6IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGhhc0JvdHRvbURpdmlkZXI6IGZhbHNlLFxuICAgIGhhc1RvcERpdmlkZXI6IGZhbHNlLFxuICAgIGlzRXhwYW5kZWQ6IGZhbHNlLFxuICAgIGlzT3B0aW9uYWw6IGZhbHNlLFxuICAgIGxhYmVsOiAnJyxcbiAgfSk7XG5cbiAgY29uc3QgaGFuZGxlVG9nZ2xlQ2xpY2sgPSAoKSA9PiB7XG4gICAgZW1pdCgndG9nZ2xlJyk7XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwidGlkZS1hY2NvcmRpb24taXRlbVwiPlxuICAgIDxUaWRlRGl2aWRlciB2LWlmPVwicHJvcHMuaGFzVG9wRGl2aWRlclwiIC8+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbJ3RpZGUtYWNjb3JkaW9uLWhlYWQnLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzEuQkVUV0VFTiwgQ1NTLlBBRERJTkcuWS5IQUxGLCBDU1MuQ1VSU09SLlBPSU5URVJdXCJcbiAgICAgIEBjbGljaz1cImhhbmRsZVRvZ2dsZUNsaWNrXCJcbiAgICA+XG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLkhBTEYsIENTUy5GT05ULlJPTEUuTEFCRUxfMV9TRU1JQk9MRF1cIj5cbiAgICAgICAgPHNwYW4+e3sgcHJvcHMubGFiZWwgfX08L3NwYW4+XG5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgICAgdi1pZj1cInByb3BzLmlzT3B0aW9uYWxcIlxuICAgICAgICA+XG4gICAgICAgICAgKG9wdGlvbmFsKVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDppY29uPVwiaXNFeHBhbmRlZCA/IElDT04uRVhQQU5EX0xFU1MgOiBJQ09OLkVYUEFORF9NT1JFXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLkxBUkdFXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1hY2NvcmRpb24tYm9keScsIHByb3BzLmlzRXhwYW5kZWQgPyAnZXhwYW5kZWQnIDogJ2NvbGxhcHNlZCcsIENTUy5ESVNQTEFZLkdSSURdXCI+XG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuT1ZFUkZMT1cuWS5ISURERU4sIENTUy5NQVJHSU4uWS5PTkUsIENTUy5GT05ULlJPTEUuQk9EWV8xLCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFRdXCI+XG4gICAgICAgIDxzbG90IC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxUaWRlRGl2aWRlciB2LWlmPVwicHJvcHMuaGFzQm90dG9tRGl2aWRlclwiIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtYWNjb3JkaW9uLWJvZHkge1xuICAgIHRyYW5zaXRpb246IGdyaWQtdGVtcGxhdGUtcm93cyB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLnRpZGUtYWNjb3JkaW9uLWJvZHkuZXhwYW5kZWQge1xuICAgIGdyaWQtdGVtcGxhdGUtcm93czogMWZyO1xuICB9XG5cbiAgLnRpZGUtYWNjb3JkaW9uLWJvZHkuY29sbGFwc2VkIHtcbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6IDBmcjtcbiAgfVxuPC9zdHlsZT5cbiIsImV4cG9ydCBjb25zdCBFTEVNRU5UID0ge1xuICBCVVRUT046ICdidXR0b24nLFxuICBMSU5LOiAnYScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgRUxFTUVOVF9URVhUX0FTX0lDT04gPSB7XG4gIEJVVFRPTjogJ2J1dHRvbicsXG4gIERJVjogJ2RpdicsXG4gIExJTks6ICdhJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEVsZW1lbnQgPSAodHlwZW9mIEVMRU1FTlQpW2tleW9mIHR5cGVvZiBFTEVNRU5UXTtcbmV4cG9ydCB0eXBlIEVsZW1lbnRUZXh0QXNJY29uID0gKHR5cGVvZiBFTEVNRU5UX1RFWFRfQVNfSUNPTilba2V5b2YgdHlwZW9mIEVMRU1FTlRfVEVYVF9BU19JQ09OXTtcbiIsIi8qIGVzbGludC1kaXNhYmxlIHZ1ZS9zb3J0LWtleXMgKi9cblxuZXhwb3J0IGNvbnN0IFBSSU9SSVRZID0ge1xuICBQUklNQVJZOiAncHJpbWFyeScsXG4gIFNFQ09OREFSWTogJ3NlY29uZGFyeScsXG4gIFRFUlRJQVJZOiAndGVydGlhcnknLFxuICBRVUFURVJOQVJZOiAncXVhdGVybmFyeScsXG4gIEZMT0FUSU5HOiAnZmxvYXRpbmcnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgUHJpb3JpdHkgPSAodHlwZW9mIFBSSU9SSVRZKVtrZXlvZiB0eXBlb2YgUFJJT1JJVFldO1xuIiwiZXhwb3J0IGNvbnN0IFRBUkdFVCA9IHtcbiAgQkxBTks6ICdfYmxhbmsnLFxuICBTRUxGOiB1bmRlZmluZWQsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBUYXJnZXQgPSAodHlwZW9mIFRBUkdFVClba2V5b2YgdHlwZW9mIFRBUkdFVF07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IEVMRU1FTlQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgeyBQUklPUklUWSB9IGZyb20gJ0AvdHlwZXMvUHJpb3JpdHknO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBUQVJHRVQgfSBmcm9tICdAL3R5cGVzL1RhcmdldCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBFbGVtZW50IH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHR5cGUgeyBQcmlvcml0eSB9IGZyb20gJ0AvdHlwZXMvUHJpb3JpdHknO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGVsZW1lbnQ/OiBFbGVtZW50O1xuICAgIGhyZWY/OiBzdHJpbmc7XG4gICAgaWNvbjogSWNvbjtcbiAgICBpc05ld1RhYj86IGJvb2xlYW47XG4gICAgcHJpb3JpdHk/OiBQcmlvcml0eTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlbGVtZW50OiBFTEVNRU5ULkJVVFRPTixcbiAgICBocmVmOiB1bmRlZmluZWQsXG4gICAgaWNvbjogdW5kZWZpbmVkLFxuICAgIGlzTmV3VGFiOiBmYWxzZSxcbiAgICBwcmlvcml0eTogUFJJT1JJVFkuUFJJTUFSWSxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50XG4gICAgOmFyaWEtbGFiZWw9XCJwcm9wcy5pY29uXCJcbiAgICA6Y2xhc3M9XCJbXG4gICAgICBwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgPyAndGlkZS1saW5rLWFzLWJ1dHRvbi1pY29uJyA6ICd0aWRlLWJ1dHRvbi1pY29uJyxcbiAgICAgIHByb3BzLnByaW9yaXR5ICYmIGB0aWRlLWJ1dHRvbi0ke3Byb3BzLnByaW9yaXR5fWAsXG4gICAgICBbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMxLkNFTlRFUiwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCwgQ1NTLlBBRERJTkcuRlVMTC5IQUxGXSxcbiAgICAgIHByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyA/IFtDU1MuVU5ERVJMSU5FLlJFU1QuT0ZGXSA6ICcnLFxuICAgIF1cIlxuICAgIDpkaXNhYmxlZD1cInByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuQlVUVE9OICYmIHByb3BzLmRpc2FibGVkXCJcbiAgICA6aHJlZj1cInByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyAmJiBwcm9wcy5ocmVmID8gcHJvcHMuaHJlZiA6IHVuZGVmaW5lZFwiXG4gICAgOnRhcmdldD1cInByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyAmJiBwcm9wcy5pc05ld1RhYiA/IFRBUkdFVC5CTEFOSyA6IFRBUkdFVC5TRUxGXCJcbiAgICA6aXM9XCJwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgPyAnYScgOiAnYnV0dG9uJ1wiXG4gID5cbiAgICA8VGlkZUljb25cbiAgICAgIDppY29uPVwicHJvcHMuaWNvblwiXG4gICAgICA6c2l6ZT1cIlNJWkUuTEFSR0VcIlxuICAgICAgdi1pZj1cInByb3BzLmljb25cIlxuICAgIC8+XG4gIDwvY29tcG9uZW50PlxuPC90ZW1wbGF0ZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgRUxFTUVOVCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgVEFSR0VUIH0gZnJvbSAnQC90eXBlcy9UYXJnZXQnO1xuXG4gIGltcG9ydCB0eXBlIHsgRWxlbWVudCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBlbGVtZW50PzogRWxlbWVudDtcbiAgICBocmVmPzogc3RyaW5nO1xuICAgIGljb25MZWFkaW5nPzogSWNvbjtcbiAgICBpY29uVHJhaWxpbmc/OiBJY29uO1xuICAgIGlzTmV3VGFiPzogYm9vbGVhbjtcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIHN1YnRsZT86IGJvb2xlYW47XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBlbGVtZW50OiBFTEVNRU5ULkxJTkssXG4gICAgaHJlZjogdW5kZWZpbmVkLFxuICAgIGljb25MZWFkaW5nOiB1bmRlZmluZWQsXG4gICAgaWNvblRyYWlsaW5nOiB1bmRlZmluZWQsXG4gICAgaXNOZXdUYWI6IGZhbHNlLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgc3VidGxlOiBmYWxzZSxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtbGluaycsXG4gICAgICBDU1MuRElTUExBWS5JTkxJTkUsXG4gICAgICBDU1MuQUxJR04uWC5MRUZULFxuICAgICAgc3VidGxlID8gW0NTUy5VTkRFUkxJTkUuUkVTVC5PRkYsIENTUy5VTkRFUkxJTkUuSE9WRVIuT05dIDogW0NTUy5VTkRFUkxJTkUuUkVTVC5PTiwgQ1NTLlVOREVSTElORS5IT1ZFUi5PRkZdLFxuICAgIF1cIlxuICAgIDpocmVmPVwicHJvcHMuaHJlZlwiXG4gICAgOnRhcmdldD1cInByb3BzLmlzTmV3VGFiID8gVEFSR0VULkJMQU5LIDogVEFSR0VULlNFTEZcIlxuICAgIDppcz1cInByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyA/IEVMRU1FTlQuTElOSyA6IEVMRU1FTlQuQlVUVE9OXCJcbiAgPlxuICAgIDxUaWRlSWNvblxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLklOTElORV9CTE9DSywgQ1NTLkFMSUdOLlkuTUlERExFLCBDU1MuTUFSR0lOLlJJR0hULlFVQVJURVJdXCJcbiAgICAgIDppY29uPVwicHJvcHMuaWNvbkxlYWRpbmdcIlxuICAgICAgdi1pZj1cInByb3BzLmljb25MZWFkaW5nXCJcbiAgICAvPlxuXG4gICAgPHNwYW4gOmNsYXNzPVwiW0NTUy5BTElHTi5ZLk1JRERMRV1cIj5cbiAgICAgIHt7IHByb3BzLmxhYmVsIH19XG4gICAgPC9zcGFuPlxuXG4gICAgPFRpZGVJY29uXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuSU5MSU5FX0JMT0NLLCBDU1MuQUxJR04uWS5NSURETEUsIENTUy5NQVJHSU4uTEVGVC5RVUFSVEVSXVwiXG4gICAgICA6aWNvbj1cInByb3BzLmljb25UcmFpbGluZ1wiXG4gICAgICB2LWlmPVwicHJvcHMuaWNvblRyYWlsaW5nXCJcbiAgICAvPlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG4iLCJleHBvcnQgY29uc3QgQUxFUlQgPSB7XG4gIEVSUk9SOiAnZXJyb3InLFxuICBJTkZPOiAnaW5mbycsXG4gIFNVQ0NFU1M6ICdzdWNjZXNzJyxcbiAgV0FSTklORzogJ3dhcm5pbmcnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgQWxlcnQgPSAodHlwZW9mIEFMRVJUKVtrZXlvZiB0eXBlb2YgQUxFUlRdO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgQ29tbWVudCwgY29tcHV0ZWQsIHVzZVNsb3RzIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUJ1dHRvbkljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IFRpZGVMaW5rIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlTGluay52dWUnO1xuICBpbXBvcnQgeyBBTEVSVCB9IGZyb20gJ0AvdHlwZXMvQWxlcnQnO1xuICBpbXBvcnQgeyBFTEVNRU5UIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFBSSU9SSVRZIH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBBbGVydCB9IGZyb20gJ0AvdHlwZXMvQWxlcnQnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaGVhZGluZz86IHN0cmluZztcbiAgICBjdGFMYWJlbD86IHN0cmluZztcbiAgICBpc0Rpc21pc3NpYmxlPzogYm9vbGVhbjtcbiAgICBpc1RvYXN0PzogYm9vbGVhbjtcbiAgICB0eXBlPzogQWxlcnQ7XG4gIH07XG5cbiAgdHlwZSBFbWl0cyA9IHtcbiAgICAoZXZlbnQ6ICdjbG9zZScpOiB2b2lkO1xuICAgIChldmVudDogJ2N0YUNsaWNrJyk6IHZvaWQ7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBjdGFMYWJlbDogdW5kZWZpbmVkLFxuICAgIGhlYWRpbmc6IHVuZGVmaW5lZCxcbiAgICBpc0Rpc21pc3NpYmxlOiB0cnVlLFxuICAgIGlzVG9hc3Q6IGZhbHNlLFxuICAgIHR5cGU6IEFMRVJULklORk8sXG4gIH0pO1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czxFbWl0cz4oKTtcbiAgY29uc3Qgc2xvdHMgPSB1c2VTbG90cygpO1xuICBjb25zdCBoYXNCb2R5ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG5vZGVzID0gc2xvdHMuZGVmYXVsdD8uKCk7XG4gICAgaWYgKCFub2RlcykgcmV0dXJuIGZhbHNlO1xuXG4gICAgcmV0dXJuIG5vZGVzLnNvbWUoXG4gICAgICAobm9kZSkgPT4gbm9kZS50eXBlICE9PSBDb21tZW50ICYmICh0eXBlb2Ygbm9kZS5jaGlsZHJlbiAhPT0gJ3N0cmluZycgfHwgbm9kZS5jaGlsZHJlbi50cmltKCkubGVuZ3RoID4gMClcbiAgICApO1xuICB9KTtcblxuICBjb25zdCBpY29uVHlwZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAocHJvcHMudHlwZSA9PT0gQUxFUlQuRVJST1IpIHJldHVybiBJQ09OLlBSSU9SSVRZX0hJR0g7XG4gICAgaWYgKHByb3BzLnR5cGUgPT09IEFMRVJULlNVQ0NFU1MpIHJldHVybiBJQ09OLkNIRUNLO1xuICAgIGlmIChwcm9wcy50eXBlID09PSBBTEVSVC5XQVJOSU5HKSByZXR1cm4gSUNPTi5XQVJOSU5HO1xuICAgIHJldHVybiBJQ09OLklORk9STUFUSU9OO1xuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICBwcm9wcy50eXBlLFxuICAgICAgJ3RpZGUtYWxlcnQnLFxuICAgICAgQ1NTLkRJU1BMQVkuR1JJRCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgQ1NTLlBBRERJTkcuRlVMTC5PTkUsXG4gICAgICAhcHJvcHMuaXNUb2FzdCAmJiBwcm9wcy50eXBlID09PSBBTEVSVC5FUlJPUiA/IFtDU1MuQkcuR0xPQkFMLlNVUkZBQ0UuRVJST1IsIENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLkVSUk9SXSA6ICcnLFxuICAgICAgIXByb3BzLmlzVG9hc3QgJiYgcHJvcHMudHlwZSA9PT0gQUxFUlQuSU5GTyA/IFtDU1MuQkcuR0xPQkFMLlNVUkZBQ0UuSU5GTywgQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuSU5GT10gOiAnJyxcbiAgICAgICFwcm9wcy5pc1RvYXN0ICYmIHByb3BzLnR5cGUgPT09IEFMRVJULlNVQ0NFU1NcbiAgICAgICAgPyBbQ1NTLkJHLkdMT0JBTC5TVVJGQUNFLlNVQ0NFU1MsIENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLlNVQ0NFU1NdXG4gICAgICAgIDogJycsXG4gICAgICAhcHJvcHMuaXNUb2FzdCAmJiBwcm9wcy50eXBlID09PSBBTEVSVC5XQVJOSU5HXG4gICAgICAgID8gW0NTUy5CRy5HTE9CQUwuU1VSRkFDRS5XQVJOSU5HLCBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5XQVJOSU5HXVxuICAgICAgICA6ICcnLFxuICAgICAgcHJvcHMuaXNUb2FzdCA/IFtDU1MuQkcuU0VDT05EQVJZLCBDU1MuRk9OVC5DT0xPUi5TRUNPTkRBUlksIENTUy5TSEFET1cuQk9UVE9NXSA6IENTUy5CT1JERVIuTEVGVC5UV08sXG4gICAgXVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWFsZXJ0LWljb24nLFxuICAgICAgICBDU1MuUEFERElORy5GVUxMLlFVQVJURVIsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICAgIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuSU5WRVJTRSxcbiAgICAgICAgcHJvcHMudHlwZSA9PT0gQUxFUlQuRVJST1IgJiYgQ1NTLkJHLkdMT0JBTC5QUklNQVJZLkVSUk9SLFxuICAgICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5JTkZPICYmIENTUy5CRy5HTE9CQUwuUFJJTUFSWS5JTkZPLFxuICAgICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5TVUNDRVNTICYmIENTUy5CRy5HTE9CQUwuUFJJTUFSWS5TVUNDRVNTLFxuICAgICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5XQVJOSU5HICYmIENTUy5CRy5HTE9CQUwuUFJJTUFSWS5XQVJOSU5HLFxuICAgICAgXVwiXG4gICAgICB2LWlmPVwiIXByb3BzLmlzVG9hc3RcIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6aWNvbj1cImljb25UeXBlXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWFsZXJ0LWhlYWRpbmcnLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uUk9XLFxuICAgICAgICAhaGFzQm9keSA/IFtDU1MuQVhJUzEuQkVUV0VFTiwgQ1NTLk1BUkdJTi5SSUdIVC5IQUxGXSA6ICcnLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPHNwYW4gOmNsYXNzPVwiQ1NTLkZPTlQuUk9MRS5MQUJFTF8yX1NFTUlCT0xEXCI+e3sgcHJvcHMuaGVhZGluZyB9fTwvc3Bhbj5cblxuICAgICAgPFRpZGVMaW5rXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxJTktfMl1cIlxuICAgICAgICA6ZWxlbWVudD1cIkVMRU1FTlQuQlVUVE9OXCJcbiAgICAgICAgOmxhYmVsPVwicHJvcHMuY3RhTGFiZWxcIlxuICAgICAgICBAY2xpY2s9XCJlbWl0KCdjdGFDbGljaycpXCJcbiAgICAgICAgdi1pZj1cInByb3BzLmN0YUxhYmVsICYmICFoYXNCb2R5XCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgIDpjbGFzcz1cIlsndGlkZS1hbGVydC1jbG9zZScsIENTUy5BWElTMi5DRU5URVIsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgOmljb249XCJJQ09OLkNMT1NFXCJcbiAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgQGNsaWNrPVwiZW1pdCgnY2xvc2UnKVwiXG4gICAgICBhcmlhLWxhYmVsPVwiQ2xvc2UgYWxlcnRcIlxuICAgICAgdi1pZj1cImlzRGlzbWlzc2libGVcIlxuICAgIC8+XG5cbiAgICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1hbGVydC1ib2R5JywgQ1NTLkZPTlQuUk9MRS5CT0RZXzIsICFwcm9wcy5pc1RvYXN0ICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVF1cIj5cbiAgICAgIDxzbG90IC8+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5NQVJHSU4uVE9QLkhBTEZdXCJcbiAgICAgICAgdi1pZj1cInByb3BzLmN0YUxhYmVsICYmIGhhc0JvZHlcIlxuICAgICAgPlxuICAgICAgICA8VGlkZUxpbmtcbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MSU5LXzJdXCJcbiAgICAgICAgICA6ZWxlbWVudD1cIkVMRU1FTlQuQlVUVE9OXCJcbiAgICAgICAgICA6bGFiZWw9XCJwcm9wcy5jdGFMYWJlbFwiXG4gICAgICAgICAgQGNsaWNrPVwiZW1pdCgnY3RhQ2xpY2snKVwiXG4gICAgICAgICAgdi1pZj1cInByb3BzLmN0YUxhYmVsXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWFsZXJ0IHtcbiAgICBncmlkLXRlbXBsYXRlLWFyZWFzOlxuICAgICAgJ2ljb24gaGVhZGluZyBjbG9zZSdcbiAgICAgICcuIGJvZHkgLic7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIDFmciBhdXRvO1xuICAgIGdyaWQtY29sdW1uLWdhcDogMC41cmVtO1xuICAgIG1heC13aWR0aDogNDByZW07XG4gIH1cblxuICAudGlkZS1hbGVydC1pY29uIHtcbiAgICBncmlkLWFyZWE6IGljb247XG4gIH1cblxuICAudGlkZS1hbGVydC1oZWFkaW5nIHtcbiAgICBncmlkLWFyZWE6IGhlYWRpbmc7XG4gIH1cblxuICAudGlkZS1hbGVydC1jbG9zZSB7XG4gICAgZ3JpZC1hcmVhOiBjbG9zZTtcbiAgfVxuXG4gIC50aWRlLWFsZXJ0LWJvZHkge1xuICAgIGdyaWQtYXJlYTogYm9keTtcbiAgfVxuPC9zdHlsZT5cbiIsImltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuZXhwb3J0IGNvbnN0IEJBREdFX0NPTE9SID0ge1xuICBCTEFDSzogJ2JsYWNrJyxcbiAgQkxVRTogJ2JsdWUnLFxuICBHUkVFTjogJ2dyZWVuJyxcbiAgTElNRTogJ2xpbWUnLFxuICBPUkFOR0U6ICdvcmFuZ2UnLFxuICBQVVJQTEU6ICdwdXJwbGUnLFxuICBSRUQ6ICdyZWQnLFxuICBTQUxNT046ICdzYWxtb24nLFxuICBURUFMOiAndGVhbCcsXG4gIFlFTExPVzogJ3llbGxvdycsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgQkFER0VfQ09MT1JfREVUQUlMUzogUmVjb3JkPFxuICBCYWRnZUNvbG9yLFxuICB7XG4gICAgYm9yZGVyQ29sb3I6IHN0cmluZztcbiAgICBpY29uQ29sb3I6IHN0cmluZztcbiAgfVxuPiA9IHtcbiAgW0JBREdFX0NPTE9SLkJMQUNLXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkhJR0gsXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFQsXG4gIH0sXG4gIFtCQURHRV9DT0xPUi5CTFVFXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5CTFVFLFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLlBSSU1BUlkuQkxVRSxcbiAgfSxcbiAgW0JBREdFX0NPTE9SLkdSRUVOXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5HUkVFTixcbiAgICBpY29uQ29sb3I6IENTUy5GT05ULkNPTE9SLkdMT0JBTC5QUklNQVJZLkdSRUVOLFxuICB9LFxuICBbQkFER0VfQ09MT1IuTElNRV06IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuTElNRSxcbiAgICBpY29uQ29sb3I6IENTUy5GT05ULkNPTE9SLkdMT0JBTC5QUklNQVJZLkxJTUUsXG4gIH0sXG4gIFtCQURHRV9DT0xPUi5PUkFOR0VdOiB7XG4gICAgYm9yZGVyQ29sb3I6IENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLk9SQU5HRSxcbiAgICBpY29uQ29sb3I6IENTUy5GT05ULkNPTE9SLkdMT0JBTC5QUklNQVJZLk9SQU5HRSxcbiAgfSxcbiAgW0JBREdFX0NPTE9SLlBVUlBMRV06IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuUFVSUExFLFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLlBSSU1BUlkuUFVSUExFLFxuICB9LFxuICBbQkFER0VfQ09MT1IuUkVEXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5SRUQsXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5SRUQsXG4gIH0sXG4gIFtCQURHRV9DT0xPUi5TQUxNT05dOiB7XG4gICAgYm9yZGVyQ29sb3I6IENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLlNBTE1PTixcbiAgICBpY29uQ29sb3I6IENTUy5GT05ULkNPTE9SLkdMT0JBTC5QUklNQVJZLlNBTE1PTixcbiAgfSxcbiAgW0JBREdFX0NPTE9SLlRFQUxdOiB7XG4gICAgYm9yZGVyQ29sb3I6IENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLlRFQUwsXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5URUFMLFxuICB9LFxuICBbQkFER0VfQ09MT1IuWUVMTE9XXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5ZRUxMT1csXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5ZRUxMT1csXG4gIH0sXG59O1xuXG5leHBvcnQgY29uc3QgQkFER0VfVFJVU1RFRCA9IHtcbiAgWUVBUlNfMTA6ICcxMCcsXG4gIFlFQVJTXzE1OiAnMTUnLFxuICBZRUFSU181OiAnNScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBCYWRnZUNvbG9yID0gKHR5cGVvZiBCQURHRV9DT0xPUilba2V5b2YgdHlwZW9mIEJBREdFX0NPTE9SXTtcbmV4cG9ydCB0eXBlIEJhZGdlVHJ1c3RlZFllYXJzID0gKHR5cGVvZiBCQURHRV9UUlVTVEVEKVtrZXlvZiB0eXBlb2YgQkFER0VfVFJVU1RFRF07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IEJBREdFX0NPTE9SX0RFVEFJTFMgfSBmcm9tICdAL3R5cGVzL0JhZGdlJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgQmFkZ2VDb2xvciB9IGZyb20gJ0AvdHlwZXMvQmFkZ2UnO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgY29sb3I/OiBCYWRnZUNvbG9yO1xuICAgIGljb25MZWFkaW5nPzogSWNvbjtcbiAgICBpc0Zsb2F0aW5nPzogYm9vbGVhbjtcbiAgICBsYWJlbDogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgY29sb3I6IHVuZGVmaW5lZCxcbiAgICBpY29uTGVhZGluZzogdW5kZWZpbmVkLFxuICAgIGlzRmxvYXRpbmc6IGZhbHNlLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1iYWRnZScsXG4gICAgICBwcm9wcy5pc0Zsb2F0aW5nIHx8IHByb3BzLmNvbG9yID8gW0NTUy5CRy5TVVJGQUNFLkZMT0FUSU5HLCBDU1MuU0hBRE9XLkJPVFRPTV0gOiBbQ1NTLkJHLlNVUkZBQ0UuVkFSSUFOVF0sXG4gICAgICBDU1MuRElTUExBWS5JTkxJTkVfRkxFWCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5RVUFSVEVSLFxuICAgICAgQ1NTLlBBRERJTkcuWS5RVUFSVEVSLFxuICAgICAgQ1NTLlBBRERJTkcuWC5IQUxGLFxuICAgICAgcHJvcHMuY29sb3IgJiYgW0NTUy5CT1JERVIuTEVGVC5UV08sIEJBREdFX0NPTE9SX0RFVEFJTFNbcHJvcHMuY29sb3JdLmJvcmRlckNvbG9yXSxcbiAgICAgIENTUy5FTExJUFNJUyxcbiAgICAgIENTUy5GT05ULlJPTEUuTEFCRUxfMixcbiAgICAgIENTUy5XSElURVNQQUNFX1dSQVAuT0ZGLFxuICAgIF1cIlxuICA+XG4gICAgPFRpZGVJY29uXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkZMRVguU0hSSU5LLk9GRiwgcHJvcHMuY29sb3IgJiYgQkFER0VfQ09MT1JfREVUQUlMU1twcm9wcy5jb2xvcl0uaWNvbkNvbG9yXVwiXG4gICAgICA6aWNvbj1cInByb3BzLmljb25MZWFkaW5nXCJcbiAgICAgIHYtaWY9XCJwcm9wcy5pY29uTGVhZGluZ1wiXG4gICAgLz5cblxuICAgIDxzcGFuIDpjbGFzcz1cIltDU1MuRUxMSVBTSVNdXCI+e3sgcHJvcHMubGFiZWwgfX08L3NwYW4+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgQkFER0VfVFJVU1RFRCB9IGZyb20gJ0AvdHlwZXMvQmFkZ2UnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgQmFkZ2VUcnVzdGVkWWVhcnMgfSBmcm9tICdAL3R5cGVzL0JhZGdlJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIHllYXJzPzogQmFkZ2VUcnVzdGVkWWVhcnM7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICB5ZWFyczogQkFER0VfVFJVU1RFRC5ZRUFSU181LFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1iYWRnZS10cnVzdGVkLXBhcnRuZXInLFxuICAgICAgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5CUkFORCxcbiAgICAgIENTUy5ESVNQTEFZLklOTElORV9GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIENTUy5FTExJUFNJUyxcbiAgICAgIENTUy5GT05ULlJPTEUuTEFCRUxfMixcbiAgICAgIENTUy5XSElURVNQQUNFX1dSQVAuT0ZGLFxuICAgIF1cIlxuICA+XG4gICAgPFRpZGVJY29uXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkZMRVguU0hSSU5LLk9GRl1cIlxuICAgICAgOmljb249XCJJQ09OLkFXQVJEX1NUQVJcIlxuICAgIC8+XG5cbiAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRUxMSVBTSVNdXCI+XG4gICAgICA8c3Bhbj57eyBwcm9wcy55ZWFycyB9fSB5ZWFyIHRydXN0ZWQgcGFydG5lcjwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtYmFkZ2UtdmVyaWZpZWQtdmVoaWNsZScsXG4gICAgICBDU1MuQkcuU0VDT05EQVJZLFxuICAgICAgQ1NTLkZPTlQuUk9MRS5MQUJFTF8yLFxuICAgICAgQ1NTLkZPTlQuQ09MT1IuU0VDT05EQVJZLFxuICAgICAgQ1NTLkRJU1BMQVkuSU5MSU5FX0ZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuUVVBUlRFUixcbiAgICAgIENTUy5QQURESU5HLlkuUVVBUlRFUixcbiAgICAgIENTUy5QQURESU5HLlguSEFMRixcbiAgICAgIENTUy5FTExJUFNJUyxcbiAgICAgIENTUy5XSElURVNQQUNFX1dSQVAuT0ZGLFxuICAgIF1cIlxuICA+XG4gICAgPFRpZGVJY29uXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkZMRVguU0hSSU5LLk9GRl1cIlxuICAgICAgOmljb249XCJJQ09OLlZFUklGSUVEXCJcbiAgICAvPlxuXG4gICAgPHNwYW4gOmNsYXNzPVwiW0NTUy5FTExJUFNJU11cIj5WZXJpZmllZCB2ZWhpY2xlPC9zcGFuPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWljb24ge1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLWluZm8tcHJpbWFyeSk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgQnJlYWRDcnVtYiB9IGZyb20gJ0AvdHlwZXMvQnJlYWRDcnVtYic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBicmVhZENydW1iczogQnJlYWRDcnVtYltdO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgYnJlYWRDcnVtYnM6IHVuZGVmaW5lZCxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8dWwgOmNsYXNzPVwiWyd0aWRlLWJyZWFkLWNydW1icycsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUiwgQ1NTLkxJU1RfQlVMTEVUUy5PRkZdXCI+XG4gICAgPHRlbXBsYXRlXG4gICAgICA6a2V5PVwiY3J1bWIubGFiZWxcIlxuICAgICAgdi1mb3I9XCIoY3J1bWIsIGluZGV4KSBpbiBwcm9wcy5icmVhZENydW1ic1wiXG4gICAgPlxuICAgICAgPGxpIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkJPRFlfMl1cIj5cbiAgICAgICAgPGFcbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MSU5LXzIsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgICAgIDpkYXRhLXRyYWNrPVwiY3J1bWIuZGF0YVRyYWNrIHx8IHVuZGVmaW5lZFwiXG4gICAgICAgICAgOmhyZWY9XCJjcnVtYi51cmxcIlxuICAgICAgICAgIHYtaWY9XCJjcnVtYi51cmxcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgY3J1bWIubGFiZWwgfX1cbiAgICAgICAgPC9hPlxuXG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfMiwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgICAgOmRhdGEtdHJhY2s9XCJjcnVtYi5kYXRhVHJhY2sgfHwgdW5kZWZpbmVkXCJcbiAgICAgICAgICB2LWVsc2VcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGNydW1iLmxhYmVsIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvbGk+XG5cbiAgICAgIDxsaSB2LWlmPVwicHJvcHMuYnJlYWRDcnVtYnMgJiYgaW5kZXggPCBwcm9wcy5icmVhZENydW1icy5sZW5ndGggLSAxXCI+XG4gICAgICAgIDxUaWRlSWNvblxuICAgICAgICAgIDppY29uPVwiSUNPTi5BUlJPV19SSUdIVFwiXG4gICAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgLz5cbiAgICAgIDwvbGk+XG4gICAgPC90ZW1wbGF0ZT5cbiAgPC91bD5cbjwvdGVtcGxhdGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IEVMRU1FTlQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgeyBQUklPUklUWSB9IGZyb20gJ0AvdHlwZXMvUHJpb3JpdHknO1xuICBpbXBvcnQgeyBTSVpFLCBTSVpFX0JVVFRPTiB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgVEFSR0VUIH0gZnJvbSAnQC90eXBlcy9UYXJnZXQnO1xuXG4gIGltcG9ydCB0eXBlIHsgRWxlbWVudCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB0eXBlIHsgUHJpb3JpdHkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHR5cGUgeyBTaXplQnV0dG9uIH0gZnJvbSAnQC90eXBlcy9TaXplJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBlbGVtZW50PzogRWxlbWVudDtcbiAgICBocmVmPzogc3RyaW5nO1xuICAgIGljb25MZWFkaW5nPzogSWNvbjtcbiAgICBpY29uVHJhaWxpbmc/OiBJY29uO1xuICAgIGlzTmV3VGFiPzogYm9vbGVhbjtcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIHByaW9yaXR5PzogUHJpb3JpdHk7XG4gICAgc2l6ZT86IFNpemVCdXR0b247XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZWxlbWVudDogRUxFTUVOVC5CVVRUT04sXG4gICAgaHJlZjogdW5kZWZpbmVkLFxuICAgIGljb25MZWFkaW5nOiB1bmRlZmluZWQsXG4gICAgaWNvblRyYWlsaW5nOiB1bmRlZmluZWQsXG4gICAgaXNOZXdUYWI6IGZhbHNlLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgcHJpb3JpdHk6IFBSSU9SSVRZLlBSSU1BUlksXG4gICAgc2l6ZTogU0laRV9CVVRUT04uTEFSR0UsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudFxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWJ1dHRvbicsXG4gICAgICBwcm9wcy5wcmlvcml0eSAmJiBgdGlkZS1idXR0b24tJHtwcm9wcy5wcmlvcml0eX1gLFxuICAgICAgcHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LID8gW0NTUy5ESVNQTEFZLklOTElORV9GTEVYXSA6IFtDU1MuRElTUExBWS5GTEVYXSxcbiAgICAgIHByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyA/IENTUy5VTkRFUkxJTkUuUkVTVC5PRkYgOiAnJyxcbiAgICAgIHNpemUgPT09IFNJWkVfQlVUVE9OLlNNQUxMICYmIFtDU1MuRk9OVC5ST0xFLkJVVFRPTl8yLCBDU1MuUEFERElORy5YLk9ORSwgQ1NTLlBBRERJTkcuWS5IQUxGXSxcbiAgICAgIHNpemUgPT09IFNJWkVfQlVUVE9OLkxBUkdFICYmIFtDU1MuRk9OVC5ST0xFLkJVVFRPTl8xLCBDU1MuUEFERElORy5YLlRXTywgQ1NTLlBBRERJTkcuWS5PTkVdLFxuICAgICAgQ1NTLkFYSVMxLkNFTlRFUixcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgQ1NTLkZPTlQuUk9MRS5MQUJFTF8xX1NFTUlCT0xELFxuICAgIF1cIlxuICAgIDpkaXNhYmxlZD1cInByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuQlVUVE9OICYmIHByb3BzLmRpc2FibGVkXCJcbiAgICA6aHJlZj1cInByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyAmJiBwcm9wcy5ocmVmID8gcHJvcHMuaHJlZiA6IHVuZGVmaW5lZFwiXG4gICAgOnRhcmdldD1cInByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyAmJiBwcm9wcy5pc05ld1RhYiA/IFRBUkdFVC5CTEFOSyA6IFRBUkdFVC5TRUxGXCJcbiAgICA6aXM9XCJwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgPyBFTEVNRU5ULkxJTksgOiBFTEVNRU5ULkJVVFRPTlwiXG4gID5cbiAgICA8VGlkZUljb25cbiAgICAgIDppY29uPVwicHJvcHMuaWNvbkxlYWRpbmdcIlxuICAgICAgOnNpemU9XCJzaXplID09PSBTSVpFX0JVVFRPTi5MQVJHRSA/IFNJWkUuTEFSR0UgOiBTSVpFLlNNQUxMXCJcbiAgICAgIHYtaWY9XCJwcm9wcy5pY29uTGVhZGluZ1wiXG4gICAgLz5cblxuICAgIHt7IHByb3BzLmxhYmVsIH19XG5cbiAgICA8VGlkZUljb25cbiAgICAgIDppY29uPVwicHJvcHMuaWNvblRyYWlsaW5nXCJcbiAgICAgIDpzaXplPVwic2l6ZSA9PT0gU0laRV9CVVRUT04uTEFSR0UgPyBTSVpFLkxBUkdFIDogU0laRS5TTUFMTFwiXG4gICAgICB2LWlmPVwicHJvcHMuaWNvblRyYWlsaW5nXCJcbiAgICAvPlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBFTEVNRU5UX1RFWFRfQVNfSUNPTiB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IEVsZW1lbnRUZXh0QXNJY29uIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBlbGVtZW50PzogRWxlbWVudFRleHRBc0ljb247XG4gICAgaHJlZj86IHN0cmluZztcbiAgICBsYWJlbDogc3RyaW5nIHwgbnVtYmVyO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGVsZW1lbnQ6IEVMRU1FTlRfVEVYVF9BU19JQ09OLkJVVFRPTixcbiAgICBocmVmOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50XG4gICAgOmNsYXNzPVwiW1xuICAgICAgcHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVF9URVhUX0FTX0lDT04uTElOSyA/ICd0aWRlLWxpbmstYXMtYnV0dG9uLWljb24nIDogJ3RpZGUtYnV0dG9uLWljb24nLFxuICAgICAgW0NTUy5ESVNQTEFZLklOTElORV9CTE9DSywgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCwgQ1NTLlBBRERJTkcuRlVMTC5IQUxGXSxcbiAgICAgIHByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlRfVEVYVF9BU19JQ09OLkxJTksgPyBbQ1NTLlVOREVSTElORS5SRVNULk9GRl0gOiAnJyxcbiAgICAgIHByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlRfVEVYVF9BU19JQ09OLkRJViA/IFtDU1MuQ1VSU09SLlBPSU5URVJdIDogJycsXG4gICAgICBbQ1NTLkZPTlQuUk9MRS5IRUFETElORV8zXSxcbiAgICBdXCJcbiAgICA6ZGlzYWJsZWQ9XCJwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5UX1RFWFRfQVNfSUNPTi5CVVRUT04gJiYgcHJvcHMuZGlzYWJsZWRcIlxuICAgIDpocmVmPVwicHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVF9URVhUX0FTX0lDT04uTElOSyAmJiBwcm9wcy5ocmVmID8gcHJvcHMuaHJlZiA6IHVuZGVmaW5lZFwiXG4gICAgOmlzPVwiXG4gICAgICBwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5UX1RFWFRfQVNfSUNPTi5MSU5LXG4gICAgICAgID8gJ2EnXG4gICAgICAgIDogcHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVF9URVhUX0FTX0lDT04uQlVUVE9OXG4gICAgICAgID8gJ2J1dHRvbidcbiAgICAgICAgOiAnZGl2J1xuICAgIFwiXG4gID5cbiAgICA8c3BhbiA6Y2xhc3M9XCJbJ2xhYmVsJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMxLkNFTlRFUiwgQ1NTLkFYSVMyLkNFTlRFUl1cIj5cbiAgICAgIHt7IHByb3BzLmxhYmVsIH19XG4gICAgPC9zcGFuPlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWJ1dHRvbi1pY29uLFxuICAudGlkZS1saW5rLWFzLWJ1dHRvbi1pY29uIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10aWRlLXdoaXRlKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10aWRlLXdoaXRlKTtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1zZWNvbmRhcnkpO1xuICB9XG5cbiAgLnRpZGUtYnV0dG9uLWljb246bm90KDpkaXNhYmxlZCk6aG92ZXIsXG4gIC50aWRlLWxpbmstYXMtYnV0dG9uLWljb246bm90KDpkaXNhYmxlZCk6aG92ZXIge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRpZGUtc3VyZmFjZS12YXJpYW50KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10aWRlLXN1cmZhY2UtdmFyaWFudCk7XG4gIH1cblxuICAudGlkZS1idXR0b24taWNvbjpkaXNhYmxlZCxcbiAgLnRpZGUtbGluay1hcy1idXR0b24taWNvbjpkaXNhYmxlZCB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGlkZS1ib3JkZXItaGlnaCk7XG4gIH1cblxuICAudGlkZS1idXR0b24taWNvbiAubGFiZWwsXG4gIC50aWRlLWxpbmstYXMtYnV0dG9uLWljb24gLmxhYmVsIHtcbiAgICB3aWR0aDogMS41cmVtO1xuICAgIGhlaWdodDogMS41cmVtO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgVGFiIH0gZnJvbSAnQC90eXBlcy9UYWInO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgYWN0aXZlVGFiOiBudW1iZXI7XG4gICAgdGFiczogVGFiW107XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBhY3RpdmVUYWI6IDAsXG4gIH0pO1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0cyhbJ2NoYW5nZSddKTtcblxuICBjb25zdCBoYW5kbGVDbGljayA9IChpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgZW1pdCgnY2hhbmdlJywgaW5kZXgpO1xuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWJ1dHRvbi1zZWdtZW50ZWQnLFxuICAgICAgQ1NTLkJHLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgQ1NTLlBBRERJTkcuRlVMTC5RVUFSVEVSLFxuICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgIF1cIlxuICA+XG4gICAgPGJ1dHRvblxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1idXR0b24tc2VnbWVudGVkLXRhYicsXG4gICAgICAgIGluZGV4ID09PSBhY3RpdmVUYWJcbiAgICAgICAgICA/IFtDU1MuQkcuU1VSRkFDRS5ERUZBVUxULCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFQsIENTUy5TSEFET1cuQk9UVE9NXVxuICAgICAgICAgIDogWydpbmFjdGl2ZScsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF0sXG4gICAgICAgIENTUy5GTEVYLkdST1cuT04sXG4gICAgICAgIENTUy5CT1JERVIuRlVMTC5UV08sXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICAgIENTUy5QQURESU5HLlkuUVVBUlRFUixcbiAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgIENTUy5GT05ULlJPTEUuQlVUVE9OXzEsXG4gICAgICAgIENTUy5XSElURVNQQUNFX1dSQVAuT0ZGLFxuICAgICAgXVwiXG4gICAgICA6ZGF0YS10cmFjaz1cInRhYi5kYXRhVHJhY2sgfHwgdW5kZWZpbmVkXCJcbiAgICAgIDprZXk9XCJ0YWIubGFiZWxcIlxuICAgICAgQGNsaWNrPVwiaGFuZGxlQ2xpY2soaW5kZXgpXCJcbiAgICAgIHYtZm9yPVwiKHRhYiwgaW5kZXgpIGluIHByb3BzLnRhYnNcIlxuICAgID5cbiAgICAgIDxzcGFuIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzJfU0VNSUJPTERdXCI+XG4gICAgICAgIHt7IHRhYi5sYWJlbCB9fVxuICAgICAgPC9zcGFuPlxuXG4gICAgICA8c3BhblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8yX1NFTUlCT0xEXVwiXG4gICAgICAgIHYtaWY9XCJ0YWIuY291bnQgJiYgdGFiLmNvdW50ID4gMFwiXG4gICAgICA+XG4gICAgICAgICh7eyB0YWIuY291bnQgfX0pXG4gICAgICA8L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtYnV0dG9uLXNlZ21lbnRlZCB7XG4gICAgbWF4LXdpZHRoOiAyMy4zcmVtO1xuICB9XG5cbiAgLnRpZGUtYnV0dG9uLXNlZ21lbnRlZC10YWIge1xuICAgIGZsZXg6IDE7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLmluYWN0aXZlOm5vdCg6aG92ZXIpIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS12YXJpYW50KTtcbiAgfVxuXG4gIC5pbmFjdGl2ZTpob3ZlciB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10aWRlLWJvcmRlcik7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS1kZWZhdWx0KTtcbiAgfVxuPC9zdHlsZT5cbiIsImV4cG9ydCBjb25zdCBUWVBFX0NBUkQgPSB7XG4gIEFDVElPTkFCTEU6ICdhY3Rpb24nLFxuICBJTkZPUk1BVElPTkFMOiAnaW5mb3JtYXRpb25hbCcsXG4gIFNFTEVDVEFCTEU6ICdzZWxlY3QnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgQ2FyZFR5cGUgPSAodHlwZW9mIFRZUEVfQ0FSRClba2V5b2YgdHlwZW9mIFRZUEVfQ0FSRF07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IFRZUEVfQ0FSRCB9IGZyb20gJ0AvdHlwZXMvQ2FyZCc7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBDYXJkVHlwZSB9IGZyb20gJ0AvdHlwZXMvQ2FyZCc7XG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICBoZWFkaW5nOiBzdHJpbmc7XG4gICAgaWNvbj86IEljb247XG4gICAgc2VsZWN0ZWQ/OiBib29sZWFuO1xuICAgIHR5cGU/OiBDYXJkVHlwZTtcbiAgICBocmVmPzogc3RyaW5nO1xuICB9O1xuXG4gIHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRlc2NyaXB0aW9uOiB1bmRlZmluZWQsXG4gICAgaHJlZjogdW5kZWZpbmVkLFxuICAgIGljb246IHVuZGVmaW5lZCxcbiAgICBzZWxlY3RlZDogdW5kZWZpbmVkLFxuICAgIHR5cGU6IFRZUEVfQ0FSRC5JTkZPUk1BVElPTkFMLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxjb21wb25lbnRcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1jYXJkJyxcbiAgICAgIENTUy5CT1JERVIuQ09MT1IuTE9XLFxuICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgQ1NTLlBBRERJTkcuRlVMTC5PTkUsXG4gICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgIENTUy5BTElHTi5YLkxFRlQsXG4gICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgdHlwZSAhPT0gVFlQRV9DQVJELklORk9STUFUSU9OQUwgJiYgJ2hvdmVyYWJsZScsXG4gICAgICB0eXBlID09PSBUWVBFX0NBUkQuU0VMRUNUQUJMRSAmJiBzZWxlY3RlZCAmJiAnc2VsZWN0ZWQnLFxuICAgIF1cIlxuICAgIDpocmVmPVwiaHJlZlwiXG4gICAgOmlzPVwiaHJlZiA/ICdhJyA6IHR5cGUgPT09IFRZUEVfQ0FSRC5JTkZPUk1BVElPTkFMID8gJ2RpdicgOiAnYnV0dG9uJ1wiXG4gID5cbiAgICA8VGlkZUljb25cbiAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5HUk9XLk9GRiwgQ1NTLkZMRVguU0hSSU5LLk9GRl1cIlxuICAgICAgOmljb249XCJpY29uXCJcbiAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICB2LWlmPVwiaWNvblwiXG4gICAgLz5cblxuICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5BWElTMi5TVEFSVCwgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLkdBUC5IQUxGXVwiPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8xX1NFTUlCT0xELCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFRdXCI+XG4gICAgICAgIHt7IGhlYWRpbmcgfX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzIsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICB2LWlmPVwiZGVzY3JpcHRpb25cIlxuICAgICAgPlxuICAgICAgICB7eyBkZXNjcmlwdGlvbiB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvY29tcG9uZW50PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtY2FyZC5ob3ZlcmFibGU6bm90KC5zZWxlY3RlZCk6aG92ZXIge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXItcmVzdCk7XG4gIH1cbiAgLnRpZGUtY2FyZC5zZWxlY3RlZCB7XG4gICAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyLWhpZ2gpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiAtMnB4O1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIG9uTW91bnRlZCwgb25Vbm1vdW50ZWQsIHJlZiB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVCdXR0b25JY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQnV0dG9uSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaGFzRG90cz86IGJvb2xlYW47XG4gICAgaXNGbG9hdGluZz86IGJvb2xlYW47XG4gICAgaXNIZWFkbGluZTE/OiBib29sZWFuO1xuICAgIGlzSGlkZWF3YXlCdXR0b25zPzogYm9vbGVhbjtcbiAgICBpc1Njcm9sbEJ5UGFnZT86IGJvb2xlYW47XG4gICAgaXNUb3VjaHNjcmVlbj86IGJvb2xlYW47XG4gICAgbWF4RG90cz86IG51bWJlcjtcbiAgICBzdWJ0aXRsZT86IHN0cmluZztcbiAgICB0aXRsZT86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGhhc0RvdHM6IHVuZGVmaW5lZCxcbiAgICBpc0Zsb2F0aW5nOiBmYWxzZSxcbiAgICBpc0hlYWRsaW5lMTogZmFsc2UsXG4gICAgaXNIaWRlYXdheUJ1dHRvbnM6IHRydWUsXG4gICAgaXNTY3JvbGxCeVBhZ2U6IHRydWUsXG4gICAgaXNUb3VjaHNjcmVlbjogdW5kZWZpbmVkLFxuICAgIG1heERvdHM6IDUsXG4gICAgc3VidGl0bGU6IHVuZGVmaW5lZCxcbiAgICB0aXRsZTogdW5kZWZpbmVkLFxuICB9KTtcblxuICB0eXBlIEVtaXRzID0ge1xuICAgIChldmVudDogJ3NsaWRlc0FkZGVkVG9WaWV3Jywgc2xpZGVzSW5WaWV3OiBudW1iZXJbXSk6IHZvaWQ7XG4gIH07XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPEVtaXRzPigpO1xuXG4gIGNvbnN0IGNvbnRhaW5lclJlZiA9IHJlZjxIVE1MRGl2RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBjb250ZW50V2lkdGggPSByZWY8bnVtYmVyPigwKTtcbiAgY29uc3QgY3VycmVudFBhZ2VJbmRleCA9IHJlZjxudW1iZXI+KDApO1xuICBjb25zdCBkb3RzUmVmID0gcmVmPEhUTUxEaXZFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IGZyYW1lV2lkdGggPSByZWY8bnVtYmVyPigwKTtcbiAgY29uc3QgaXNGaXJzdFNsaWRlID0gcmVmPGJvb2xlYW4+KHRydWUpO1xuICBjb25zdCBpc0xhc3RTbGlkZSA9IHJlZjxib29sZWFuPihmYWxzZSk7XG4gIGNvbnN0IHNob3dCdXR0b25zID0gcmVmPGJvb2xlYW4+KHRydWUpO1xuICBjb25zdCBzbGlkZU9ic2VydmVyID0gcmVmPEludGVyc2VjdGlvbk9ic2VydmVyIHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHNsaWRlcyA9IHJlZjxIVE1MRWxlbWVudFtdPihbXSk7XG4gIGNvbnN0IHNsaWRlc0luVmlldyA9IHJlZjxudW1iZXJbXT4oW10pO1xuICBjb25zdCBzbG90T2JzZXJ2ZXIgPSByZWY8TXV0YXRpb25PYnNlcnZlciB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0IGN1cnJlbnRQYWdlID0gY29tcHV0ZWQoKCkgPT4gY3VycmVudFBhZ2VJbmRleC52YWx1ZSArIDEpO1xuICBjb25zdCBkb3RDb250YWluZXJXaWR0aCA9IGNvbXB1dGVkKCgpID0+IGRvdENvdW50VmlzaWJsZS52YWx1ZSAqIGRvdFdpZHRoICsgKGRvdENvdW50VmlzaWJsZS52YWx1ZSAtIDEpICogZG90R2FwKTtcbiAgY29uc3QgZG90Q291bnRWaXNpYmxlID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLm1heERvdHMgPiB0b3RhbFBhZ2VzLnZhbHVlID8gdG90YWxQYWdlcy52YWx1ZSA6IHByb3BzLm1heERvdHMpKTtcbiAgY29uc3QgbGFzdFBhZ2VJbmRleCA9IGNvbXB1dGVkKCgpID0+IHRvdGFsUGFnZXMudmFsdWUgLSAxKTtcbiAgY29uc3QgdG90YWxQYWdlcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAoIXNsaWRlcy52YWx1ZS5sZW5ndGgpIHJldHVybiAwO1xuICAgIGlmICghcHJvcHMuaXNTY3JvbGxCeVBhZ2UpIHJldHVybiBzbGlkZXMudmFsdWUubGVuZ3RoO1xuXG4gICAgY29uc3QgZ2FwV2lkdGggPSBjYXJkR2FwICogKHNsaWRlcy52YWx1ZS5sZW5ndGggLSAxKTtcbiAgICBjb25zdCBjb250ZW50Tm9HYXAgPSBjb250ZW50V2lkdGgudmFsdWUgLSBnYXBXaWR0aDtcbiAgICBjb25zdCBxdW90aWVudCA9IE1hdGgucm91bmQoY29udGVudE5vR2FwIC8gZnJhbWVXaWR0aC52YWx1ZSk7XG4gICAgY29uc3QgcmVtYWluZGVyID0gY29udGVudE5vR2FwICUgZnJhbWVXaWR0aC52YWx1ZTtcblxuICAgIHJldHVybiByZW1haW5kZXIgPyBxdW90aWVudCArIDEgOiBxdW90aWVudDtcbiAgfSk7XG5cbiAgY29uc3QgY2FyZEdhcDogbnVtYmVyID0gMTY7XG4gIGNvbnN0IGRvdEdhcDogbnVtYmVyID0gODtcbiAgY29uc3QgZG90V2lkdGg6IG51bWJlciA9IDg7XG5cbiAgY29uc3QgZ2V0RG90Q2xhc3MgPSAoZG90SW5kZXg6IG51bWJlcikgPT4ge1xuICAgIGxldCBjbGFzc05hbWUgPSAnJztcblxuICAgIGlmIChkb3RJbmRleCA9PT0gY3VycmVudFBhZ2VJbmRleC52YWx1ZSkgY2xhc3NOYW1lID0gJ3RpZGUtY2Fyb3VzZWwtZG90LWFjdGl2ZSc7XG4gICAgaWYgKE1hdGguYWJzKGN1cnJlbnRQYWdlSW5kZXgudmFsdWUgLSBkb3RJbmRleCkgPT09IDEpIGNsYXNzTmFtZSA9ICd0aWRlLWNhcm91c2VsLWRvdC1uZWlnaGJvcic7XG5cbiAgICByZXR1cm4gY2xhc3NOYW1lO1xuICB9O1xuXG4gIGNvbnN0IG1lYXN1cmVEb20gPSAoKSA9PiB7XG4gICAgaWYgKCFjb250YWluZXJSZWYudmFsdWUpIHJldHVybjtcblxuICAgIGNvbnRlbnRXaWR0aC52YWx1ZSA9IGNvbnRhaW5lclJlZi52YWx1ZS5zY3JvbGxXaWR0aDtcbiAgICBmcmFtZVdpZHRoLnZhbHVlID0gY29udGFpbmVyUmVmLnZhbHVlLmNsaWVudFdpZHRoO1xuICB9O1xuXG4gIGNvbnN0IG9ic2VydmVTbGlkZXMgPSAoKSA9PiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIHJvb3Q6IGNvbnRhaW5lclJlZj8udmFsdWUsXG4gICAgICByb290TWFyZ2luOiAnMHB4IDFweCAwcHggMHB4JyxcbiAgICAgIHRocmVzaG9sZDogMSxcbiAgICB9O1xuXG4gICAgc2xpZGVPYnNlcnZlci52YWx1ZSA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcigoZW50cmllcykgPT4ge1xuICAgICAgbGV0IHNsaWRlc0FkZGVkVG9WaWV3OiBudW1iZXJbXSA9IFtdO1xuXG4gICAgICBlbnRyaWVzLmZvckVhY2goKGVudHJ5KSA9PiB7XG4gICAgICAgIGNvbnN0IHNsaWRlSW5kZXggPSBzbGlkZXMudmFsdWUuaW5kZXhPZihlbnRyeS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpO1xuXG4gICAgICAgIGlmIChlbnRyeS5pc0ludGVyc2VjdGluZykge1xuICAgICAgICAgIHNsaWRlc0FkZGVkVG9WaWV3LnB1c2goc2xpZGVJbmRleCk7XG4gICAgICAgICAgc2xpZGVzSW5WaWV3LnZhbHVlLnB1c2goc2xpZGVJbmRleCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2xpZGVzSW5WaWV3LnZhbHVlID0gc2xpZGVzSW5WaWV3LnZhbHVlLmZpbHRlcigoc2xpZGUpID0+IHNsaWRlICE9PSBzbGlkZUluZGV4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNsaWRlc0luVmlldy52YWx1ZS5zb3J0KChhLCBiKSA9PiBhIC0gYik7XG4gICAgICB9KTtcblxuICAgICAgaXNGaXJzdFNsaWRlLnZhbHVlID0gc2xpZGVzSW5WaWV3LnZhbHVlLmluY2x1ZGVzKDApO1xuICAgICAgaXNMYXN0U2xpZGUudmFsdWUgPSBzbGlkZXNJblZpZXcudmFsdWUuaW5jbHVkZXMoc2xpZGVzLnZhbHVlLmxlbmd0aCAtIDEpO1xuXG4gICAgICBpZiAoc2xpZGVzQWRkZWRUb1ZpZXcubGVuZ3RoID4gMCkgZW1pdCgnc2xpZGVzQWRkZWRUb1ZpZXcnLCBzbGlkZXNBZGRlZFRvVmlldyk7XG4gICAgfSwgb3B0aW9ucyk7XG5cbiAgICBzbGlkZXMudmFsdWUuZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgIGlmIChzbGlkZU9ic2VydmVyLnZhbHVlKSBzbGlkZU9ic2VydmVyLnZhbHVlLm9ic2VydmUoY2hpbGQpO1xuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IG9ic2VydmVTbG90ID0gKCkgPT4ge1xuICAgIGNvbnN0IG9ic2VydmVyQ2FsbGJhY2sgPSAoKSA9PiB7XG4gICAgICBpZiAoY29udGFpbmVyUmVmLnZhbHVlID09PSBudWxsKSByZXR1cm47XG5cbiAgICAgIHNsaWRlcy52YWx1ZSA9IEFycmF5LmZyb20oY29udGFpbmVyUmVmLnZhbHVlLmNoaWxkcmVuKSBhcyBIVE1MRWxlbWVudFtdO1xuICAgICAgb2JzZXJ2ZVNsaWRlcygpO1xuICAgIH07XG5cbiAgICBzbG90T2JzZXJ2ZXIudmFsdWUgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihvYnNlcnZlckNhbGxiYWNrKTtcblxuICAgIGlmIChjb250YWluZXJSZWYudmFsdWUpIHNsb3RPYnNlcnZlci52YWx1ZS5vYnNlcnZlKGNvbnRhaW5lclJlZi52YWx1ZSwgeyBjaGlsZExpc3Q6IHRydWUgfSk7XG4gIH07XG5cbiAgY29uc3Qgc2Nyb2xsVG9PZmZzZXQgPSAodGFyZ2V0OiBudW1iZXIpID0+IHtcbiAgICBpZiAoY29udGFpbmVyUmVmLnZhbHVlID09PSBudWxsKSByZXR1cm47XG5cbiAgICBjb25zdCBsYXN0T2Zmc2V0OiBudW1iZXIgPSBzbGlkZXMudmFsdWVbc2xpZGVzLnZhbHVlLmxlbmd0aCAtIDFdLm9mZnNldExlZnQ7XG4gICAgY29uc3QgcGxhY2VtZW50ID0gKHRhcmdldCAvIGxhc3RPZmZzZXQpICogbGFzdFBhZ2VJbmRleC52YWx1ZTtcbiAgICBjb25zdCBpc1Njcm9sbGluZ0xlZnQgPSBwbGFjZW1lbnQgPD0gY3VycmVudFBhZ2VJbmRleC52YWx1ZTtcblxuICAgIGN1cnJlbnRQYWdlSW5kZXgudmFsdWUgPSBpc1Njcm9sbGluZ0xlZnQgPyBjdXJyZW50UGFnZUluZGV4LnZhbHVlIC0gMSA6IGN1cnJlbnRQYWdlSW5kZXgudmFsdWUgKyAxO1xuXG4gICAgY29udGFpbmVyUmVmLnZhbHVlLnNjcm9sbFRvKHtcbiAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICAgIGxlZnQ6IHRhcmdldCxcbiAgICB9KTtcbiAgICB1cGRhdGVEb3RzKGlzU2Nyb2xsaW5nTGVmdCk7XG4gIH07XG5cbiAgY29uc3Qgc2hvd05leHRQYWdlID0gKCkgPT4ge1xuICAgIGlmIChzbGlkZXNJblZpZXcudmFsdWUubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICBjb25zdCBuZXh0U2xpZGU6IG51bWJlciA9IHNsaWRlc0luVmlldy52YWx1ZVtzbGlkZXNJblZpZXcudmFsdWUubGVuZ3RoIC0gMV0gKyAxO1xuXG4gICAgc2Nyb2xsVG9PZmZzZXQoc2xpZGVzLnZhbHVlW25leHRTbGlkZV0ub2Zmc2V0TGVmdCk7XG4gIH07XG5cbiAgY29uc3Qgc2hvd1ByZXZpb3VzUGFnZSA9ICgpID0+IHtcbiAgICBpZiAoc2xpZGVzSW5WaWV3LnZhbHVlLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgY29uc3QgcHJldmlvdXNTbGlkZTogbnVtYmVyID0gc2xpZGVzSW5WaWV3LnZhbHVlWzBdIC0gc2xpZGVzSW5WaWV3LnZhbHVlLmxlbmd0aDtcblxuICAgIHNjcm9sbFRvT2Zmc2V0KHNsaWRlcy52YWx1ZVtwcmV2aW91c1NsaWRlXT8ub2Zmc2V0TGVmdCB8fCAwKTtcbiAgfTtcblxuICBjb25zdCBzaG93TmV4dFNsaWRlID0gKCkgPT4ge1xuICAgIGlmIChzbGlkZXNJblZpZXcudmFsdWUubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICBjb25zdCBuZXh0U2xpZGU6IG51bWJlciA9IHNsaWRlc0luVmlldy52YWx1ZS5sZW5ndGggPiAxID8gc2xpZGVzSW5WaWV3LnZhbHVlWzFdIDogc2xpZGVzSW5WaWV3LnZhbHVlWzBdICsgMTtcblxuICAgIHNjcm9sbFRvT2Zmc2V0KHNsaWRlcy52YWx1ZVtuZXh0U2xpZGVdLm9mZnNldExlZnQpO1xuICB9O1xuXG4gIGNvbnN0IHNob3dQcmV2aW91c1NsaWRlID0gKCkgPT4ge1xuICAgIGlmIChzbGlkZXNJblZpZXcudmFsdWUubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICBjb25zdCBwcmV2aW91c1NsaWRlOiBudW1iZXIgPSBzbGlkZXNJblZpZXcudmFsdWVbMF0gLSAxO1xuXG4gICAgc2Nyb2xsVG9PZmZzZXQoc2xpZGVzLnZhbHVlW3ByZXZpb3VzU2xpZGVdLm9mZnNldExlZnQpO1xuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZURvdHMgPSAoaXNTY3JvbGxpbmdMZWZ0OiBib29sZWFuKSA9PiB7XG4gICAgaWYgKCFkb3RzUmVmLnZhbHVlIHx8IGRvdENvdW50VmlzaWJsZS52YWx1ZSA+PSB0b3RhbFBhZ2VzLnZhbHVlKSByZXR1cm47XG5cbiAgICBjb25zdCBpc09kZERvdENvdW50ID0gZG90Q291bnRWaXNpYmxlLnZhbHVlICUgMiAhPT0gMDtcbiAgICBjb25zdCBjZW50ZXJEb3QgPVxuICAgICAgaXNPZGREb3RDb3VudCB8fCBpc1Njcm9sbGluZ0xlZnRcbiAgICAgICAgPyBNYXRoLmZsb29yKGRvdENvdW50VmlzaWJsZS52YWx1ZSAvIDIpICsgMVxuICAgICAgICA6IE1hdGguZmxvb3IoZG90Q291bnRWaXNpYmxlLnZhbHVlIC8gMik7XG5cbiAgICBkb3RzUmVmLnZhbHVlLnNjcm9sbFRvKHtcbiAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICAgIGxlZnQ6IGN1cnJlbnRQYWdlLnZhbHVlIDwgY2VudGVyRG90ID8gMCA6IChjdXJyZW50UGFnZS52YWx1ZSAtIGNlbnRlckRvdCkgKiAoZG90V2lkdGggKyBkb3RHYXApLFxuICAgIH0pO1xuICB9O1xuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgaWYgKGNvbnRhaW5lclJlZi52YWx1ZSA9PT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgc2xpZGVzLnZhbHVlID0gQXJyYXkuZnJvbShjb250YWluZXJSZWYudmFsdWUuY2hpbGRyZW4pIGFzIEhUTUxFbGVtZW50W107XG5cbiAgICBtZWFzdXJlRG9tKCk7XG4gICAgb2JzZXJ2ZVNsaWRlcygpO1xuICAgIG9ic2VydmVTbG90KCk7XG5cbiAgICBpZiAod2luZG93KSB7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgbWVhc3VyZURvbSk7XG4gICAgfVxuICB9KTtcblxuICBvblVubW91bnRlZCgoKSA9PiB7XG4gICAgc2xpZGVPYnNlcnZlci52YWx1ZT8uZGlzY29ubmVjdCgpO1xuICAgIHNsb3RPYnNlcnZlci52YWx1ZT8uZGlzY29ubmVjdCgpO1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBtZWFzdXJlRG9tKTtcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8c2VjdGlvblxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWNhcm91c2VsJyxcbiAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgQ1NTLkdBUC5PTkUsXG4gICAgICBDU1MuV0lEVEguTUFYX0ZVTEwsXG4gICAgXVwiXG4gICAgcmVmPVwiY2Fyb3VzZWxSZWZcIlxuICA+XG4gICAgPHNlY3Rpb25cbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBwcm9wcy50aXRsZSA/IENTUy5BWElTMS5CRVRXRUVOIDogQ1NTLkFYSVMxLkVORCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLldJRFRILkZVTExdXCJcbiAgICAgIHYtaWY9XCIoIXByb3BzLmlzRmxvYXRpbmcgJiYgc2hvd0J1dHRvbnMpIHx8IHByb3BzLnRpdGxlXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5XUkFQLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLk9ORV1cIlxuICAgICAgICB2LWlmPVwicHJvcHMudGl0bGVcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSElURVNQQUNFX1dSQVAuT0ZGLCBpc0hlYWRsaW5lMSA/IENTUy5GT05ULlJPTEUuSEVBRExJTkVfMSA6IENTUy5GT05ULlJPTEUuSEVBRExJTkVfMl1cIlxuICAgICAgICAgIHYtaWY9XCJwcm9wcy50aXRsZVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBwcm9wcy50aXRsZSB9fVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSElURVNQQUNFX1dSQVAuT0ZGLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzIsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICAgIHYtaWY9XCJwcm9wcy5zdWJ0aXRsZVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBwcm9wcy5zdWJ0aXRsZSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLk9ORV1cIlxuICAgICAgICB2LWlmPVwiIXByb3BzLmlzRmxvYXRpbmcgJiYgc2hvd0J1dHRvbnNcIlxuICAgICAgPlxuICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJpc0ZpcnN0U2xpZGVcIlxuICAgICAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX0xFRlRcIlxuICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlRFUlRJQVJZXCJcbiAgICAgICAgICBAY2xpY2s9XCJpc1Njcm9sbEJ5UGFnZSA/IHNob3dQcmV2aW91c1BhZ2UoKSA6IHNob3dQcmV2aW91c1NsaWRlKClcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICAgIDpkaXNhYmxlZD1cImlzTGFzdFNsaWRlXCJcbiAgICAgICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9SSUdIVFwiXG4gICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuVEVSVElBUllcIlxuICAgICAgICAgIEBjbGljaz1cImlzU2Nyb2xsQnlQYWdlID8gc2hvd05leHRQYWdlKCkgOiBzaG93TmV4dFNsaWRlKClcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9zZWN0aW9uPlxuXG4gICAgPHNsb3QgbmFtZT1cIm1pc2NcIiAvPlxuXG4gICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzEuQ0VOVEVSXVwiPlxuICAgICAgPHVsXG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1jYXJvdXNlbC1jb250YWluZXInLFxuICAgICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgICAgQ1NTLkdBUC5PTkUsXG4gICAgICAgICAgQ1NTLkxJU1RfQlVMTEVUUy5PRkYsXG4gICAgICAgICAgQ1NTLk9WRVJGTE9XLlguU0NST0xMLFxuICAgICAgICAgIENTUy5TQ1JPTExCQVIuT0ZGLFxuICAgICAgICAgIENTUy5TTkFQLk9OLFxuICAgICAgICBdXCJcbiAgICAgICAgcmVmPVwiY29udGFpbmVyUmVmXCJcbiAgICAgID5cbiAgICAgICAgPHNsb3QgLz5cbiAgICAgIDwvdWw+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLWNhcm91c2VsLWRvdHMtY29udGFpbmVyJyxcbiAgICAgICAgICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLkJPVFRPTSxcbiAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICAgICAgQ1NTLk1BUkdJTi5CT1RUT00uSEFMRixcbiAgICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgXVwiXG4gICAgICAgIDpzdHlsZT1cIntcbiAgICAgICAgICB3aWR0aDogYCR7ZG90Q29udGFpbmVyV2lkdGh9cHhgLFxuICAgICAgICB9XCJcbiAgICAgICAgdi1pZj1cImlzU2Nyb2xsQnlQYWdlICYmIGhhc0RvdHMgJiYgdG90YWxQYWdlcyA+IDFcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgJ3RpZGUtY2Fyb3VzZWwtZG90cycsXG4gICAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgICAgQ1NTLkFYSVMxLlNUQVJULFxuICAgICAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgICAgIENTUy5PVkVSRkxPVy5YLlNDUk9MTCxcbiAgICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgICAgICBDU1MuU0NST0xMQkFSLk9GRixcbiAgICAgICAgICBdXCJcbiAgICAgICAgICByZWY9XCJkb3RzUmVmXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICAgJ3RpZGUtY2Fyb3VzZWwtZG90JyxcbiAgICAgICAgICAgICAgQ1NTLkZMRVguU0hSSU5LLk9GRixcbiAgICAgICAgICAgICAgQ1NTLkhFSUdIVC5aRVJPLFxuICAgICAgICAgICAgICBDU1MuV0lEVEguWkVSTyxcbiAgICAgICAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgICAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgICAgICAgZ2V0RG90Q2xhc3MoaW5kZXgpLFxuICAgICAgICAgICAgXVwiXG4gICAgICAgICAgICA6a2V5PVwiaW5kZXhcIlxuICAgICAgICAgICAgdi1mb3I9XCIoXywgaW5kZXgpIGluIHRvdGFsUGFnZXNcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLWNhcm91c2VsLWJ1dHRvbi1vdmVybGF5JyxcbiAgICAgICAgICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLlRPUCxcbiAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgIENTUy5BWElTMS5CRVRXRUVOLFxuICAgICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgICAgQ1NTLkhFSUdIVC5GVUxMLFxuICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgICAgcHJvcHMuaXNIaWRlYXdheUJ1dHRvbnMgPyAnaGlkZWF3YXknIDogJycsXG4gICAgICAgIF1cIlxuICAgICAgICB2LWlmPVwiaXNGbG9hdGluZyAmJiBzaG93QnV0dG9uc1wiXG4gICAgICA+XG4gICAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuTUFSR0lOLkxFRlQuT05FLCBDU1MuUE9JTlRFUl9FVkVOVFMuT05dXCJcbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJpc0ZpcnN0U2xpZGVcIlxuICAgICAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX0xFRlRcIlxuICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICAgIEBjbGljaz1cImlzU2Nyb2xsQnlQYWdlID8gc2hvd1ByZXZpb3VzUGFnZSgpIDogc2hvd1ByZXZpb3VzU2xpZGUoKVwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5NQVJHSU4uUklHSFQuT05FLCBDU1MuUE9JTlRFUl9FVkVOVFMuT05dXCJcbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJpc0xhc3RTbGlkZVwiXG4gICAgICAgICAgOmljb249XCJJQ09OLkNIRVZST05fUklHSFRcIlxuICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICAgIEBjbGljaz1cImlzU2Nyb2xsQnlQYWdlID8gc2hvd05leHRQYWdlKCkgOiBzaG93TmV4dFNsaWRlKClcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvc2VjdGlvbj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWNhcm91c2VsLWJ1dHRvbi1vdmVybGF5LmhpZGVhd2F5IHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG5cbiAgLnRpZGUtY2Fyb3VzZWw6aG92ZXIgLnRpZGUtY2Fyb3VzZWwtYnV0dG9uLW92ZXJsYXkuaGlkZWF3YXkge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICAudGlkZS1jYXJvdXNlbC1kb3Qge1xuICAgIHdpZHRoOiA4cHg7XG4gICAgaGVpZ2h0OiA4cHg7XG4gICAgb3BhY2l0eTogMC43NTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNSk7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWNhcm91c2VsLWRvdC1uZWlnaGJvciB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwLjc1KTtcbiAgfVxuXG4gIC50aWRlLWNhcm91c2VsLWRvdC1hY3RpdmUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgRUxFTUVOVCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRBUkdFVCB9IGZyb20gJ0AvdHlwZXMvVGFyZ2V0JztcblxuICBpbXBvcnQgdHlwZSB7IEVsZW1lbnQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgZWxlbWVudD86IEVsZW1lbnQ7XG4gICAgaHJlZj86IHN0cmluZztcbiAgICBpc05ld1RhYj86IGJvb2xlYW47XG4gICAgbGFiZWw6IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGVsZW1lbnQ6IEVMRU1FTlQuTElOSyxcbiAgICBocmVmOiB1bmRlZmluZWQsXG4gICAgaXNOZXdUYWI6IGZhbHNlLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxjb21wb25lbnRcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1jaGlwLWFjdGlvbicsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgQ1NTLlBBRERJTkcuWC5PTkUsXG4gICAgICBDU1MuUEFERElORy5ZLkhBTEYsXG4gICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgQ1NTLkZPTlQuUk9MRS5MSU5LXzIsXG4gICAgICBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICBDU1MuVU5ERVJMSU5FLlJFU1QuT0ZGLFxuICAgIF1cIlxuICAgIDpocmVmPVwicHJvcHMuaHJlZlwiXG4gICAgOnRhcmdldD1cInByb3BzLmlzTmV3VGFiID8gVEFSR0VULkJMQU5LIDogVEFSR0VULlNFTEZcIlxuICAgIDppcz1cImVsZW1lbnRcIlxuICA+XG4gICAgPFRpZGVJY29uIDppY29uPVwiSUNPTi5TRUFSQ0hcIiAvPlxuXG4gICAgPHNwYW4+e3sgcHJvcHMubGFiZWwgfX08L3NwYW4+XG4gIDwvY29tcG9uZW50PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtY2hpcC1hY3Rpb246aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS12YXJpYW50KTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtYm9yZGVyLWhpZ2gpO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaXNBY3RpdmU6IGJvb2xlYW47XG4gICAgbGFiZWw6IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IGRlZmluZVByb3BzPFByb3BzPigpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGJ1dHRvblxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWNoaXAtZmlsdGVyJyxcbiAgICAgIHByb3BzLmlzQWN0aXZlXG4gICAgICAgID8gW0NTUy5CRy5TRUNPTkRBUlksIENTUy5GT05ULkNPTE9SLlNFQ09OREFSWV1cbiAgICAgICAgOiBbQ1NTLkJHLlNVUkZBQ0UuVkFSSUFOVCwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxUXSxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICBDU1MuUEFERElORy5YLk9ORSxcbiAgICAgIENTUy5QQURESU5HLlkuSEFMRixcbiAgICAgIENTUy5GT05ULlJPTEUuTEFCRUxfMixcbiAgICAgIHByb3BzLmlzQWN0aXZlID8gJ2FjdGl2ZScgOiAnJyxcbiAgICBdXCJcbiAgPlxuICAgIDxzbG90IC8+XG4gICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMxLkNFTlRFUiwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5IQUxGXVwiPlxuICAgICAgPHNwYW4gOmNsYXNzPVwiW3Byb3BzLmlzQWN0aXZlID8gJycgOiAnaWNvbi1zcGFjaW5nJywgQ1NTLkZPTlQuUk9MRS5MQUJFTF8xLCBDU1MuV0hJVEVTUEFDRV9XUkFQLk9GRl1cIj5cbiAgICAgICAge3sgcHJvcHMubGFiZWwgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9idXR0b24+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAvKiBCb3JkZXIgbXVzdCBhbHdheXMgZXhpc3QgdG8gcHJldmVudCByZXNpemUgb24gaG92ZXIgc3RhdGUsIGJ1dCBtYXRjaCBiYWNrZ3JvdW5kIGNvbG9yIG9uIHJlc3Qgc3RhdGUgdG8gYmxlbmQgaW4uICovXG4gIC50aWRlLWNoaXAtZmlsdGVyIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS12YXJpYW50KTtcbiAgfVxuXG4gIC50aWRlLWNoaXAtZmlsdGVyLmFjdGl2ZSB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10aWRlLXNlY29uZGFyeSk7XG4gIH1cblxuICAudGlkZS1jaGlwLWZpbHRlcjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLXZhcmlhbnQpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLW9uLXN1cmZhY2UpO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IGRlZmluZVByb3BzPFByb3BzPigpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGJ1dHRvblxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWNoaXAtaW5wdXQnLFxuICAgICAgQ1NTLkJHLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgQ1NTLlBBRERJTkcuWC5PTkUsXG4gICAgICBDU1MuUEFERElORy5ZLkhBTEYsXG4gICAgICBDU1MuRk9OVC5ST0xFLkxBQkVMXzIsXG4gICAgXVwiXG4gID5cbiAgICA8c3Bhbj57eyBwcm9wcy5sYWJlbCB9fTwvc3Bhbj5cblxuICAgIDxUaWRlSWNvbiA6aWNvbj1cIklDT04uQ0xPU0VcIiAvPlxuICA8L2J1dHRvbj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWNoaXAtaW5wdXQge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtY2hpcC1pbnB1dDpob3ZlciB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10aWRlLWJvcmRlci1oaWdoKTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGhlYWRpbmc/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBoZWFkaW5nOiAnJyxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8c2VjdGlvbiBjbGFzcz1cInRpZGUtY29sdW1uc1wiPlxuICAgIDxoMiA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5CT1RUT00uSEFMRl1cIj5cbiAgICAgIHt7IHByb3BzLmhlYWRpbmcgfX1cbiAgICA8L2gyPlxuXG4gICAgPHVsIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5XUkFQLCBDU1MuR0FQLlRXTywgQ1NTLkxJU1RfQlVMTEVUUy5PRkZdXCI+XG4gICAgICA8bGkgY2xhc3M9XCJ0aWRlLWNvbHVtbnMtY29sdW1uXCI+XG4gICAgICAgIDxzbG90IG5hbWU9XCJzZWN0aW9uMVwiIC8+XG4gICAgICA8L2xpPlxuXG4gICAgICA8bGkgY2xhc3M9XCJ0aWRlLWNvbHVtbnMtY29sdW1uXCI+XG4gICAgICAgIDxzbG90IG5hbWU9XCJzZWN0aW9uMlwiIC8+XG4gICAgICA8L2xpPlxuXG4gICAgICA8bGkgY2xhc3M9XCJ0aWRlLWNvbHVtbnMtY29sdW1uXCI+XG4gICAgICAgIDxzbG90IG5hbWU9XCJzZWN0aW9uM1wiIC8+XG4gICAgICA8L2xpPlxuXG4gICAgICA8bGkgY2xhc3M9XCJ0aWRlLWNvbHVtbnMtY29sdW1uXCI+XG4gICAgICAgIDxzbG90IG5hbWU9XCJzZWN0aW9uNFwiIC8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gIDwvc2VjdGlvbj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWNvbHVtbnMtY29sdW1uIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gIEBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAgIC50aWRlLWNvbHVtbnMtY29sdW1uIHtcbiAgICAgIHdpZHRoOiBjYWxjKCgxMDAlIC0gMnJlbSkgLyAyKTtcbiAgICB9XG4gIH1cblxuICBAbWVkaWEgKG1pbi13aWR0aDogMTIzMnB4KSB7XG4gICAgLnRpZGUtY29sdW1ucy1jb2x1bW4ge1xuICAgICAgd2lkdGg6IGNhbGMoKDEwMCUgLSA2cmVtKSAvIDQpO1xuICAgIH1cbiAgfVxuPC9zdHlsZT5cbiIsImltcG9ydCB7IGluamVjdCwgcHJvdmlkZSwgcmVmIH0gZnJvbSAndnVlJztcblxuaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuXG50eXBlIFRpZGVGb3JtQ29udGV4dCA9IHtcbiAgZm9yY2VTaG93RXJyb3JzOiBSZWY8Ym9vbGVhbj47XG59O1xuXG5jb25zdCBGT1JNX0tFWSA9IFN5bWJvbCgndGlkZS1mb3JtJyk7XG5cbmV4cG9ydCBjb25zdCB1c2VUaWRlRm9ybSA9ICgpID0+IHtcbiAgY29uc3QgZm9yY2VTaG93RXJyb3JzID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcblxuICBwcm92aWRlPFRpZGVGb3JtQ29udGV4dD4oRk9STV9LRVksIHsgZm9yY2VTaG93RXJyb3JzIH0pO1xuXG4gIGNvbnN0IHJldmVhbFZhbGlkYXRpb25FcnJvcnMgPSAoKSA9PiB7XG4gICAgZm9yY2VTaG93RXJyb3JzLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICByZXR1cm4geyByZXZlYWxWYWxpZGF0aW9uRXJyb3JzIH07XG59O1xuXG5leHBvcnQgY29uc3QgdXNlRm9ybUNvbnRleHQgPSAoKSA9PiB7XG4gIHJldHVybiBpbmplY3Q8VGlkZUZvcm1Db250ZXh0PihGT1JNX0tFWSk7XG59O1xuIiwiPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbiAgaW1wb3J0IHsgdXNlVGlkZUZvcm0gfSBmcm9tICdAL2NvbXBvc2FibGVzL3VzZVRpZGVGb3JtJztcblxuICB0eXBlIEVtaXRzID0ge1xuICAgIChldmVudDogJ3N1Ym1pdCcsIGU6IFN1Ym1pdEV2ZW50KTogdm9pZDtcbiAgfTtcbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPEVtaXRzPigpO1xuXG4gIGNvbnN0IHsgcmV2ZWFsVmFsaWRhdGlvbkVycm9ycyB9ID0gdXNlVGlkZUZvcm0oKTtcblxuICBjb25zdCBoYW5kbGVTdWJtaXQgPSAoZTogU3VibWl0RXZlbnQpID0+IHtcbiAgICByZXZlYWxWYWxpZGF0aW9uRXJyb3JzKCk7XG4gICAgZW1pdCgnc3VibWl0JywgZSk7XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8Zm9ybVxuICAgIEBzdWJtaXQucHJldmVudD1cImhhbmRsZVN1Ym1pdFwiXG4gICAgbm92YWxpZGF0ZVxuICA+XG4gICAgPHNsb3QgLz5cbiAgPC9mb3JtPlxuPC90ZW1wbGF0ZT5cbiIsImV4cG9ydCBjb25zdCBPQkpFQ1RfRklUID0ge1xuICBDT05UQUlOOiAnY29udGFpbicsXG4gIENPVkVSOiAnY292ZXInLFxuICBTQ0FMRV9ET1dOOiAnc2NhbGUtZG93bicsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBPYmplY3RGaXQgPSAodHlwZW9mIE9CSkVDVF9GSVQpW2tleW9mIHR5cGVvZiBPQkpFQ1RfRklUXTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB7IE9CSkVDVF9GSVQgfSBmcm9tICdAL3R5cGVzL0ltYWdlJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgT2JqZWN0Rml0IH0gZnJvbSAnQC90eXBlcy9JbWFnZSc7XG4gIGltcG9ydCB0eXBlIHsgU291cmNlIH0gZnJvbSAnQC90eXBlcy9Tb3VyY2UnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgYWx0Pzogc3RyaW5nO1xuICAgIGhlaWdodD86IHN0cmluZztcbiAgICBpc0xhenk/OiBib29sZWFuO1xuICAgIG9iamVjdEZpdD86IE9iamVjdEZpdDtcbiAgICBzb3VyY2VzPzogU291cmNlW107XG4gICAgc3JjPzogc3RyaW5nO1xuICAgIHdpZHRoPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgYWx0OiAnJyxcbiAgICBoZWlnaHQ6IHVuZGVmaW5lZCxcbiAgICBpc0xhenk6IHRydWUsXG4gICAgb2JqZWN0Rml0OiBPQkpFQ1RfRklULkNPVkVSLFxuICAgIHNvdXJjZXM6ICgpID0+IFtdLFxuICAgIHNyYzogdW5kZWZpbmVkLFxuICAgIHdpZHRoOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IHBpY3R1cmUgPSByZWYoKTtcbiAgY29uc3QgaW1nID0gcmVmKCk7XG5cbiAgY29uc3QgaW1hZ2VEZWZhdWx0ID0gJ2h0dHBzOi8vY2RuLXN0YXRpYy50aWxhYnMuaW8vbWFya2V0cGxhY2UvY29tbW9uL2ltYWdlLWNvbWluZy1zb29uLnN2Zyc7XG5cbiAgY29uc3Qgb2JqZWN0Rml0Q2xhc3NOYW1lID0gY29tcHV0ZWQ8c3RyaW5nPigoKSA9PiB7XG4gICAgc3dpdGNoIChwcm9wcy5vYmplY3RGaXQpIHtcbiAgICAgIGNhc2UgT0JKRUNUX0ZJVC5DT05UQUlOOlxuICAgICAgICByZXR1cm4gQ1NTLk9CSkVDVC5DT05UQUlOO1xuICAgICAgY2FzZSBPQkpFQ1RfRklULkNPVkVSOlxuICAgICAgICByZXR1cm4gQ1NTLk9CSkVDVC5DT1ZFUjtcbiAgICAgIGNhc2UgT0JKRUNUX0ZJVC5TQ0FMRV9ET1dOOlxuICAgICAgICByZXR1cm4gQ1NTLk9CSkVDVC5TQ0FMRV9ET1dOO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIE9CSkVDVF9GSVQuQ09WRVI7XG4gICAgfVxuICB9KTtcblxuICBjb25zdCBzZXRJbWFnZUZyb21EZWZhdWx0ID0gKCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRTcmMgPSBpbWcudmFsdWU/LmN1cnJlbnRTcmM7XG4gICAgY29uc3QgcGljdHVyZVNvdXJjZSA9IHBpY3R1cmUudmFsdWU/LnF1ZXJ5U2VsZWN0b3IoYHNvdXJjZVtzcmNzZXQ9XCIke2N1cnJlbnRTcmN9XCJdYCk7XG5cbiAgICBpZiAoY3VycmVudFNyYyAmJiBwaWN0dXJlU291cmNlKSB7XG4gICAgICBwaWN0dXJlU291cmNlLnNyY3NldCA9IGltYWdlRGVmYXVsdDtcbiAgICB9IGVsc2UgaWYgKGltZy52YWx1ZSkge1xuICAgICAgaW1nLnZhbHVlLnNyYyA9IGltYWdlRGVmYXVsdDtcbiAgICB9XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8cGljdHVyZVxuICAgIDpjbGFzcz1cIlsndGlkZS1pbWFnZScsIENTUy5ESVNQTEFZLkJMT0NLXVwiXG4gICAgcmVmPVwicGljdHVyZVwiXG4gICAgOnN0eWxlPVwiXG4gICAgICB3aWR0aCB8fCBoZWlnaHRcbiAgICAgICAgPyB7XG4gICAgICAgICAgICB3aWR0aDogd2lkdGggfHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHQgfHwgdW5kZWZpbmVkLFxuICAgICAgICAgIH1cbiAgICAgICAgOiB1bmRlZmluZWRcbiAgICBcIlxuICA+XG4gICAgPHNvdXJjZVxuICAgICAgOmtleT1cInNvdXJjZS5zcmNzZXRcIlxuICAgICAgOm1lZGlhPVwiYChtaW4td2lkdGg6JHtzb3VyY2UubWVkaWF9cHgpYFwiXG4gICAgICA6c3Jjc2V0PVwic291cmNlLnNyY3NldFwiXG4gICAgICB2LWZvcj1cInNvdXJjZSBpbiBwcm9wcy5zb3VyY2VzXCJcbiAgICAvPlxuXG4gICAgPGltZ1xuICAgICAgOmFsdD1cImFsdFwiXG4gICAgICA6Y2xhc3M9XCJbJ3RpZGUtaW1hZ2UtaW1nJywgQ1NTLldJRFRILkZVTEwsIENTUy5IRUlHSFQuRlVMTCwgQ1NTLk9CSkVDVC5DRU5URVIsIG9iamVjdEZpdENsYXNzTmFtZV1cIlxuICAgICAgOmZldGNocHJpb3JpdHk9XCJpc0xhenkgPyB1bmRlZmluZWQgOiAnaGlnaCdcIlxuICAgICAgOmxvYWRpbmc9XCJwcm9wcy5pc0xhenkgPyAnbGF6eScgOiAnZWFnZXInXCJcbiAgICAgIHJlZj1cImltZ1wiXG4gICAgICA6c3JjPVwic3JjID8/IGltYWdlRGVmYXVsdFwiXG4gICAgICBAZXJyb3I9XCJzZXRJbWFnZUZyb21EZWZhdWx0XCJcbiAgICAvPlxuICA8L3BpY3R1cmU+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1pbWFnZS1pbWcge1xuICAgIGJvcmRlci1yYWRpdXM6IGluaGVyaXQ7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgVGlkZUltYWdlIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSW1hZ2UudnVlJztcbiAgaW1wb3J0IHsgT0JKRUNUX0ZJVCB9IGZyb20gJ0AvdHlwZXMvSW1hZ2UnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBTb3VyY2UgfSBmcm9tICdAL3R5cGVzL1NvdXJjZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBhbHQ/OiBzdHJpbmc7XG4gICAgaXNMYXp5PzogYm9vbGVhbjtcbiAgICBzb3VyY2VzPzogU291cmNlW107XG4gICAgc3JjPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgYWx0OiAnJyxcbiAgICBpc0xhenk6IHRydWUsXG4gICAgc291cmNlczogKCkgPT4gW10sXG4gICAgc3JjOiB1bmRlZmluZWQsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtaW1hZ2UtYmFja2dyb3VuZCcsIENTUy5QT1NJVElPTi5SRUxBVElWRSwgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTiwgQ1NTLklTT0xBVElPTi5JU09MQVRFXVwiPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICAgICAgICBDU1MuSEVJR0hULkZVTEwsXG4gICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPFRpZGVJbWFnZVxuICAgICAgICA6YWx0PVwicHJvcHMuYWx0XCJcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuSEVJR0hULkZVTExdXCJcbiAgICAgICAgOmlzLWxhenk9XCJwcm9wcy5pc0xhenlcIlxuICAgICAgICA6b2JqZWN0LWZpdD1cIk9CSkVDVF9GSVQuQ09WRVJcIlxuICAgICAgICA6c291cmNlcz1cInByb3BzLnNvdXJjZXNcIlxuICAgICAgICA6c3JjPVwicHJvcHMuc3JjXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8c2xvdCAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIDpkZWVwKC50aWRlLWltYWdlKSB7XG4gICAgei1pbmRleDogLTE7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBsYWJlbD86IHN0cmluZyB8IG51bWJlcjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWluZGljYXRvcicsXG4gICAgICBwcm9wcy5sYWJlbCA/ICcnIDogJ2RvdCcsXG4gICAgICBDU1MuRElTUExBWS5JTkxJTkVfQkxPQ0ssXG4gICAgICBDU1MuQUxJR04uWC5DRU5URVIsXG4gICAgICBDU1MuQkcuR0xPQkFMLlBSSU1BUlkuRVJST1IsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgcHJvcHMubGFiZWwgJiYgcHJvcHMubGFiZWwudG9TdHJpbmcoKS5sZW5ndGggPiAxID8gW0NTUy5QQURESU5HLlguSEFMRl0gOiBbXSxcbiAgICAgIHByb3BzLmxhYmVsXG4gICAgICAgID8gW0NTUy5QT1NJVElPTi5SRUxBVElWRSwgQ1NTLkZPTlQuUk9MRS5MQUJFTF8zLCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLklOVkVSU0VdXG4gICAgICAgIDogW0NTUy5CT1JERVIuRlVMTC5PTkVdLFxuICAgIF1cIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiWyd0aWRlLWluZGljYXRvci1sYWJlbCddXCJcbiAgICAgIHYtaWY9XCJwcm9wcy5sYWJlbFwiXG4gICAgPlxuICAgICAge3sgcHJvcHMubGFiZWwgfX1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1pbmRpY2F0b3I6bm90KC5kb3QpIHtcbiAgICBtaW4td2lkdGg6IDFyZW07XG4gICAgbWluLWhlaWdodDogMXJlbTtcbiAgfVxuXG4gIC50aWRlLWluZGljYXRvci5kb3Qge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1ncmF5LTEwMCk7XG4gICAgd2lkdGg6IDEwcHg7XG4gICAgaGVpZ2h0OiAxMHB4O1xuICB9XG5cbiAgLnRpZGUtaW5kaWNhdG9yLWxhYmVsIHtcbiAgICAvKiBVc2UgYm90dG9tLXdlaWdodGluZyB0byBvZmZzZXQgdGhlIG1hdGhlbWF0aWNhbCBjZW50ZXIgdG8gdGhlIG9wdGljYWwgY2VudGVyLiAqL1xuICAgIG1hcmdpbi10b3A6IC0xcHg7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaXNFcnJvcjogYm9vbGVhbjtcbiAgICBtZXNzYWdlOiBzdHJpbmc7XG4gIH07XG4gIGRlZmluZVByb3BzPFByb3BzPigpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgQ1NTLkZPTlQuUk9MRS5MQUJFTF8zLFxuICAgICAgaXNFcnJvciA/IFtDU1MuRk9OVC5DT0xPUi5HTE9CQUwuRVJST1JdIDogW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVF0sXG4gICAgXVwiXG4gID5cbiAgICA8VGlkZUljb25cbiAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5TSFJJTksuT0ZGXVwiXG4gICAgICA6aWNvbj1cIklDT04uRVJST1JcIlxuICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgIHYtaWY9XCJpc0Vycm9yXCJcbiAgICAvPlxuXG4gICAgPGRpdj5cbiAgICAgIHt7IG1lc3NhZ2UgfX1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuIiwiaW1wb3J0IHsgZm9ybWF0TnVtYmVyIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcblxuaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uTGVuZ3RoLCBWYWxpZGF0aW9uUmVzdWx0LCBWYWxpZGF0b3IgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuXG5leHBvcnQgY29uc3QgZXJyb3JNZXNzYWdlRGVmYXVsdCA9ICdQbGVhc2UgZW50ZXIgYSB2YWxpZCB2YWx1ZSc7XG5cbmV4cG9ydCBjb25zdCBWQUxJREFUSU9OX1JFU1VMVCA9IHtcbiAgTk9fRVJST1I6IHtcbiAgICBtZXNzYWdlOiAnJyxcbiAgICB2YWxpZDogdHJ1ZSxcbiAgfSxcbiAgUkVRVUlSRUQ6IHtcbiAgICBtZXNzYWdlOiAnUGxlYXNlIGZpbGwgb3V0IHRoaXMgZmllbGQnLFxuICAgIHZhbGlkOiBmYWxzZSxcbiAgfSxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBjaGVja0Zvcm1hdCA9IChmb3JtYXQ6IFJlZ0V4cCwgbWVzc2FnZT86IHN0cmluZykgPT4ge1xuICByZXR1cm4gKHZhbHVlOiBzdHJpbmcpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgICBsZXQgcmVzdWx0OiBWYWxpZGF0aW9uUmVzdWx0ID0gVkFMSURBVElPTl9SRVNVTFQuTk9fRVJST1I7XG5cbiAgICBpZiAoIXZhbHVlLnRyaW0oKS5tYXRjaChmb3JtYXQpKSB7XG4gICAgICByZXN1bHQgPSB7XG4gICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UgPz8gZXJyb3JNZXNzYWdlRGVmYXVsdCxcbiAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZpZWxkTGVuZ3RoSXNWYWxpZCA9ICh7IG1heGxlbmd0aCwgbWlubGVuZ3RoLCByZXF1aXJlZCwgdmFsdWUgfTogVmFsaWRhdGlvbkxlbmd0aCkgPT4ge1xuICBjb25zdCBpc0VtcHR5QW5kVW5yZXF1aXJlZCA9IHZhbHVlLmxlbmd0aCA9PT0gMCAmJiAhcmVxdWlyZWQ7XG4gIGNvbnN0IGlzVG9vTG9uZyA9IG1heGxlbmd0aCAmJiB2YWx1ZS5sZW5ndGggPiBtYXhsZW5ndGg7XG4gIGNvbnN0IGlzVG9vU2hvcnQgPSAhaXNFbXB0eUFuZFVucmVxdWlyZWQgJiYgbWlubGVuZ3RoICYmIHZhbHVlLmxlbmd0aCA8IG1pbmxlbmd0aDtcbiAgcmV0dXJuICFpc1Rvb1Nob3J0ICYmICFpc1Rvb0xvbmc7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RmllbGRWYWxpZGF0aW9uUmVzdWx0ID0gKHtcbiAgZXJyb3JGcm9tUHJvcHMsXG4gIG1heGxlbmd0aCxcbiAgbWlubGVuZ3RoLFxuICByZXF1aXJlZCxcbiAgdmFsaWRhdG9ycyxcbiAgdmFsdWUsXG59OiB7XG4gIGVycm9yRnJvbVByb3BzOiBzdHJpbmc7XG4gIG1heGxlbmd0aD86IG51bWJlcjtcbiAgbWlubGVuZ3RoPzogbnVtYmVyO1xuICByZXF1aXJlZDogYm9vbGVhbjtcbiAgdmFsaWRhdG9ycz86IFZhbGlkYXRvcltdO1xuICB2YWx1ZTogUmVmPHN0cmluZz47XG59KTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gIC8vIGVycm9yIGluIHByb3BzIHRha2VzIHByZWNlZGVuY2Ugb3ZlciB2YWxpZGF0aW9uIGVycm9yXG4gIGlmIChlcnJvckZyb21Qcm9wcyAhPT0gJycpXG4gICAgcmV0dXJuIHtcbiAgICAgIG1lc3NhZ2U6IGVycm9yRnJvbVByb3BzLFxuICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgIH07XG5cbiAgLy8gY3VzdG9tIHZhbGlkYXRvciBwcm9wIGVycm9ycyBmcm9tIGhhdmUgc2Vjb25kIGhpZ2hlc3QgcHJlY2VkZW5jZVxuICBpZiAodmFsaWRhdG9ycykge1xuICAgIGNvbnN0IHZhbGlkYXRpb24gPSB2YWxpZGF0ZVByb3BlcnR5KHZhbHVlLnZhbHVlLCB2YWxpZGF0b3JzKTtcblxuICAgIGlmICghdmFsaWRhdGlvbi52YWxpZCkge1xuICAgICAgcmV0dXJuIHZhbGlkYXRpb247XG4gICAgfVxuICB9XG5cbiAgLy8gYWxsIG90aGVyIHByb3AtYmFzZWQgZXJyb3JzIGNvbWUgbGFzdFxuICBpZiAocmVxdWlyZWQgJiYgdmFsdWUudmFsdWUudHJpbSgpID09PSAnJykge1xuICAgIHJldHVybiBWQUxJREFUSU9OX1JFU1VMVC5SRVFVSVJFRDtcbiAgfVxuXG4gIGlmIChtYXhsZW5ndGggfHwgbWlubGVuZ3RoKSB7XG4gICAgY29uc3QgbGVuZ3RoVmFsaWRhdGlvbiA9IHZhbGlkYXRlTGVuZ3RoKHtcbiAgICAgIG1heGxlbmd0aCxcbiAgICAgIG1pbmxlbmd0aCxcbiAgICAgIHJlcXVpcmVkLFxuICAgICAgdmFsdWU6IHZhbHVlLnZhbHVlLFxuICAgIH0pO1xuXG4gICAgaWYgKCFsZW5ndGhWYWxpZGF0aW9uLnZhbGlkKSB7XG4gICAgICByZXR1cm4gbGVuZ3RoVmFsaWRhdGlvbjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFZBTElEQVRJT05fUkVTVUxULk5PX0VSUk9SO1xufTtcblxuZXhwb3J0IGNvbnN0IHZhbGlkYXRlTGVuZ3RoID0gKHsgbWF4bGVuZ3RoLCBtaW5sZW5ndGgsIHJlcXVpcmVkLCB2YWx1ZSB9OiBWYWxpZGF0aW9uTGVuZ3RoKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gIGNvbnN0IHJlc3BvbnNlID0ge1xuICAgIG1lc3NhZ2U6ICcnLFxuICAgIHZhbGlkOiB0cnVlLFxuICB9O1xuXG4gIHJlc3BvbnNlLnZhbGlkID0gZ2V0RmllbGRMZW5ndGhJc1ZhbGlkKHtcbiAgICBtYXhsZW5ndGgsXG4gICAgbWlubGVuZ3RoLFxuICAgIHJlcXVpcmVkLFxuICAgIHZhbHVlLFxuICB9KTtcblxuICBpZiAocmVzcG9uc2UudmFsaWQpIHJldHVybiByZXNwb25zZTtcblxuICByZXNwb25zZS5tZXNzYWdlID0gZXJyb3JNZXNzYWdlRGVmYXVsdDtcblxuICBpZiAobWF4bGVuZ3RoICYmIG1pbmxlbmd0aCkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBgRW50ZXIgYSB2YWx1ZSBiZXR3ZWVuICR7Zm9ybWF0TnVtYmVyKG1pbmxlbmd0aCl9IGFuZCAke2Zvcm1hdE51bWJlcihtYXhsZW5ndGgpfSBjaGFyYWN0ZXJzYDtcbiAgfSBlbHNlIGlmIChtYXhsZW5ndGgpIHtcbiAgICByZXNwb25zZS5tZXNzYWdlID0gYFVzZSAke2Zvcm1hdE51bWJlcihtYXhsZW5ndGgpfSBjaGFyYWN0ZXJzIG9yIGZld2VyYDtcbiAgfSBlbHNlIGlmIChtaW5sZW5ndGgpIHtcbiAgICByZXNwb25zZS5tZXNzYWdlID0gYEVudGVyIGF0IGxlYXN0ICR7Zm9ybWF0TnVtYmVyKG1pbmxlbmd0aCl9IGNoYXJhY3RlcnNgO1xuICB9XG5cbiAgcmV0dXJuIHJlc3BvbnNlO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlUHJvcGVydHkodmFsdWU6IHN0cmluZywgdmFsaWRhdG9yczogKCh2YWx1ZTogc3RyaW5nKSA9PiBWYWxpZGF0aW9uUmVzdWx0KVtdKTogVmFsaWRhdGlvblJlc3VsdCB7XG4gIGZvciAoY29uc3QgdmFsaWRhdG9yIG9mIHZhbGlkYXRvcnMpIHtcbiAgICBjb25zdCB2YWxpZGF0aW9uID0gdmFsaWRhdG9yKHZhbHVlKTtcbiAgICBpZiAoIXZhbGlkYXRpb24udmFsaWQpIHtcbiAgICAgIHJldHVybiB2YWxpZGF0aW9uO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbWVzc2FnZTogJycsXG4gICAgdmFsaWQ6IHRydWUsXG4gIH07XG59XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmLCB3YXRjaCwgd2F0Y2hFZmZlY3QgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IFRpZGVJbnB1dFN1cHBvcnRpbmdUZXh0IGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSW5wdXRTdXBwb3J0aW5nVGV4dC52dWUnO1xuICBpbXBvcnQgeyB1c2VGb3JtQ29udGV4dCB9IGZyb20gJ0AvY29tcG9zYWJsZXMvdXNlVGlkZUZvcm0nO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZm9ybWF0TnVtYmVyIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcbiAgaW1wb3J0IHsgVkFMSURBVElPTl9SRVNVTFQgfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uJztcblxuICBpbXBvcnQgdHlwZSB7IFZhbGlkYXRpb25SZXN1bHQgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGVycm9yPzogc3RyaW5nO1xuICAgIGluZGV0ZXJtaW5hdGU/OiBib29sZWFuO1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIG51bWJlcj86IG51bWJlcjtcbiAgICByZXF1aXJlZD86IGJvb2xlYW47XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZXJyb3I6ICcnLFxuICAgIGluZGV0ZXJtaW5hdGU6IGZhbHNlLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICBudW1iZXI6IHVuZGVmaW5lZCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gIH0pO1xuXG4gIHR5cGUgRW1pdHMgPSB7XG4gICAgKGV2ZW50OiAndmFsaWQnLCB2YWxpZDogYm9vbGVhbik6IHZvaWQ7XG4gIH07XG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czxFbWl0cz4oKTtcblxuICBjb25zdCBtb2RlbFZhbHVlID0gZGVmaW5lTW9kZWw8Ym9vbGVhbj4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICBjb25zdCBmb3JtQ29udGV4dCA9IHVzZUZvcm1Db250ZXh0KCk7XG5cbiAgY29uc3QgaXNWYWxpZGF0aW5nID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgZXJyb3JSZWYgPSByZWY8VmFsaWRhdGlvblJlc3VsdD4oVkFMSURBVElPTl9SRVNVTFQuTk9fRVJST1IpO1xuXG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3QgaXNDaGVja2VkID0gY29tcHV0ZWQoKCkgPT4gbW9kZWxWYWx1ZS52YWx1ZSB8fCBwcm9wcy5pbmRldGVybWluYXRlKTtcbiAgY29uc3Qgc2hvd0Vycm9yID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmIChoYXNFcnJvckZyb21Qcm9wLnZhbHVlKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoIWlzVmFsaWRhdGluZy52YWx1ZSkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiAhZXJyb3JSZWYudmFsdWUudmFsaWQ7XG4gIH0pO1xuICBjb25zdCBoYXNFcnJvckZyb21Qcm9wID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMuZXJyb3IgIT09ICcnKTtcbiAgY29uc3Qgc3VwcG9ydGluZ1RleHRNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4gc2hvd0Vycm9yLnZhbHVlICYmIGVycm9yUmVmLnZhbHVlLm1lc3NhZ2UpO1xuXG4gIGNvbnN0IGdldENoZWNrYm94VmFsaWRhdGlvblJlc3VsdCA9ICgpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgICBpZiAocHJvcHMuZXJyb3IgIT09ICcnKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbWVzc2FnZTogcHJvcHMuZXJyb3IsXG4gICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgIH07XG4gICAgaWYgKCFwcm9wcy5yZXF1aXJlZCB8fCBpc0NoZWNrZWQudmFsdWUpIHJldHVybiBWQUxJREFUSU9OX1JFU1VMVC5OT19FUlJPUjtcbiAgICByZXR1cm4gVkFMSURBVElPTl9SRVNVTFQuUkVRVUlSRUQ7XG4gIH07XG5cbiAgd2F0Y2hFZmZlY3QoKCkgPT4ge1xuICAgIGVycm9yUmVmLnZhbHVlID0gZ2V0Q2hlY2tib3hWYWxpZGF0aW9uUmVzdWx0KCk7XG4gIH0pO1xuXG4gIHdhdGNoKFxuICAgIG1vZGVsVmFsdWUsXG4gICAgKCkgPT4ge1xuICAgICAgaWYgKG1vZGVsVmFsdWUudmFsdWUpIGlzVmFsaWRhdGluZy52YWx1ZSA9IHRydWU7XG4gICAgfSxcbiAgICB7IGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gZm9ybUNvbnRleHQ/LmZvcmNlU2hvd0Vycm9ycy52YWx1ZSxcbiAgICAobmV3VmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSkgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcblxuICB3YXRjaChcbiAgICBlcnJvclJlZixcbiAgICAoKSA9PiB7XG4gICAgICBlbWl0KCd2YWxpZCcsIGVycm9yUmVmLnZhbHVlLnZhbGlkKTtcbiAgICB9LFxuICAgIHsgZGVlcDogdHJ1ZSwgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWlucHV0LWNoZWNrYm94JywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLkdBUC5RVUFSVEVSXVwiPlxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMSxcbiAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICBDU1MuVVNFUl9TRUxFQ1QuTk9ORSxcbiAgICAgICAgc2hvd0Vycm9yID8gQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLkVSUk9SIDogQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBkaXNhYmxlZCA/IFtDU1MuT1BBQ0lUWS5ESVNBQkxFRCwgQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRF0gOiBbQ1NTLkNVUlNPUi5QT0lOVEVSXSxcbiAgICAgIF1cIlxuICAgICAgOmZvcj1cImlucHV0SWRcIlxuICAgID5cbiAgICAgIDxpbnB1dFxuICAgICAgICA6Y2hlY2tlZD1cImlzQ2hlY2tlZFwiXG4gICAgICAgIDpjbGFzcz1cIlsndGlkZS1zY3JlZW4tcmVhZGVyLW9ubHknXVwiXG4gICAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICAgICAgOm5hbWU9XCJuYW1lXCJcbiAgICAgICAgcmVmPVwiaW5wdXRcIlxuICAgICAgICA6aWQ9XCJpbnB1dElkXCJcbiAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgdi1tb2RlbD1cIm1vZGVsVmFsdWVcIlxuICAgICAgLz5cblxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtaW5wdXQtY2hlY2tib3gtY3VzdG9tJyxcbiAgICAgICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5RVUFSVEVSLFxuICAgICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgICAgQ1NTLkZMRVguU0hSSU5LLk9GRixcbiAgICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgICAgaXNDaGVja2VkXG4gICAgICAgICAgICA/IFtzaG93RXJyb3IgPyBDU1MuQkcuR0xPQkFMLlBSSU1BUlkuRVJST1IgOiBbQ1NTLkJHLlNFQ09OREFSWSwgQ1NTLkJPUkRFUi5DT0xPUi5ISUdIXV1cbiAgICAgICAgICAgIDogW1xuICAgICAgICAgICAgICAgIHNob3dFcnJvclxuICAgICAgICAgICAgICAgICAgPyBbQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuRVJST1IsIENTUy5CRy5HTE9CQUwuU1VSRkFDRS5FUlJPUl1cbiAgICAgICAgICAgICAgICAgIDogW0NTUy5CT1JERVIuQ09MT1IuREVGQVVMVCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgIF1cIlxuICAgICAgPlxuICAgICAgICA8VGlkZUljb25cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU0VDT05EQVJZXVwiXG4gICAgICAgICAgOmljb249XCJpbmRldGVybWluYXRlID8gSUNPTi5SRU1PVkUgOiBJQ09OLkNIRUNLXCJcbiAgICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICAgIHYtaWY9XCJpc0NoZWNrZWRcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5BWElTMS5CRVRXRUVOLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5HUk9XLk9OLCBDU1MuRk9OVC5ST0xFLkJPRFlfMV1cIlxuICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgPlxuICAgICAgICA8c3Bhbj57eyBmb3JtYXR0ZWRMYWJlbCB9fTwvc3Bhbj5cblxuICAgICAgICA8c3BhblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgICB2LWlmPVwibnVtYmVyXCJcbiAgICAgICAgPlxuICAgICAgICAgICh7eyBmb3JtYXROdW1iZXIobnVtYmVyKSB9fSlcbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9sYWJlbD5cblxuICAgIDxUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dFxuICAgICAgOm1lc3NhZ2U9XCJzdXBwb3J0aW5nVGV4dE1lc3NhZ2VcIlxuICAgICAgaXMtZXJyb3JcbiAgICAgIHYtaWY9XCJzdXBwb3J0aW5nVGV4dE1lc3NhZ2VcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW5wdXQtY2hlY2tib3gge1xuICAgIGFsaWduLXNlbGY6IHN0YXJ0O1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtY2hlY2tib3gtY3VzdG9tIHtcbiAgICB3aWR0aDogMjRweDtcbiAgICBoZWlnaHQ6IDI0cHg7XG4gIH1cblxuICBsYWJlbDpoYXMoaW5wdXQ6Zm9jdXMtdmlzaWJsZSkge1xuICAgIG91dGxpbmU6IGF1dG87XG4gICAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYFRpZGVJbnB1dENoZWNrYm94LnZ1ZWAgaW1wb3J0ZWQgZnJvbSAndGlkZS1kZXNpZ24tc3lzdGVtJyBucG0gcGFja2FnZSBpbnN0ZWFkLlxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IGZvcm1hdE51bWJlciB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBjaGVja2VkPzogYm9vbGVhbjtcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgaW5kZXRlcm1pbmF0ZT86IGJvb2xlYW47XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBsYWJlbD86IHN0cmluZztcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIG51bWJlcj86IG51bWJlcjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBpbmRldGVybWluYXRlOiBmYWxzZSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBuYW1lOiB1bmRlZmluZWQsXG4gICAgbnVtYmVyOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IGlzQ2hlY2tlZCA9IGNvbXB1dGVkKCgpID0+IHByb3BzLmNoZWNrZWQgfHwgcHJvcHMuaW5kZXRlcm1pbmF0ZSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtaW5wdXQtY2hlY2tib3gnLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMSxcbiAgICAgIGRpc2FibGVkID8gWydkaXNhYmxlZCcsIENTUy5QT0lOVEVSX0VWRU5UUy5PRkZdIDogQ1NTLkNVUlNPUi5QT0lOVEVSLFxuICAgIF1cIlxuICA+XG4gICAgPGlucHV0XG4gICAgICA6Y2hlY2tlZD1cImlzQ2hlY2tlZFwiXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuTk9ORV1cIlxuICAgICAgOmRpc2FibGVkPVwicHJvcHMuZGlzYWJsZWRcIlxuICAgICAgOm5hbWU9XCJwcm9wcy5uYW1lXCJcbiAgICAgIHJlZj1cImlucHV0XCJcbiAgICAgIEBjbGljay5wcmV2ZW50XG4gICAgICA6aWQ9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgLz5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtY2hlY2tib3gtY3VzdG9tJyxcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuRkxFWC5TSFJJTksuT0ZGLFxuICAgICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgICBpc0NoZWNrZWQgPyBbQ1NTLkJPUkRFUi5DT0xPUi5ISUdILCBDU1MuQkcuU0VDT05EQVJZXSA6IFtDU1MuQk9SREVSLkNPTE9SLkRFRkFVTFQsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5RVUFSVEVSLFxuICAgICAgICBpc0NoZWNrZWQgJiYgJ2NoZWNrZWQnLFxuICAgICAgICBkaXNhYmxlZCA/IENTUy5DVVJTT1IuTk9UX0FMTE9XRUQgOiBDU1MuQ1VSU09SLlBPSU5URVIsXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNFQ09OREFSWV1cIlxuICAgICAgICA6aWNvbj1cInByb3BzLmluZGV0ZXJtaW5hdGUgPyBJQ09OLlJFTU9WRSA6IElDT04uQ0hFQ0tcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwiaXNDaGVja2VkXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8bGFiZWxcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMxLkJFVFdFRU4sXG4gICAgICAgIENTUy5GTEVYLkdST1cuT04sXG4gICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICBkaXNhYmxlZCA/IENTUy5DVVJTT1IuTk9UX0FMTE9XRUQgOiBDU1MuQ1VSU09SLlBPSU5URVIsXG4gICAgICBdXCJcbiAgICAgIDpmb3I9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgIEBjbGljay5wcmV2ZW50XG4gICAgICB2LWlmPVwibGFiZWxcIlxuICAgID5cbiAgICAgIDxzcGFuPnt7IGxhYmVsIH19PC9zcGFuPlxuICAgICAgPHNwYW5cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICB2LWlmPVwicHJvcHMubnVtYmVyXCJcbiAgICAgID5cbiAgICAgICAgKHt7IGZvcm1hdE51bWJlcihwcm9wcy5udW1iZXIpIH19KVxuICAgICAgPC9zcGFuPlxuICAgIDwvbGFiZWw+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW5wdXQtY2hlY2tib3guZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IHZhcigtLXRpZGUtZGlzYWJsZWQpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtY2hlY2tib3gtY3VzdG9tIHtcbiAgICB3aWR0aDogMjRweDtcbiAgICBoZWlnaHQ6IDI0cHg7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBmb3JtYXROdW1iZXIgfSBmcm9tICdAL3V0aWxpdGllcy9mb3JtYXQnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgbnVtYmVyPzogbnVtYmVyO1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbnVtYmVyOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IG1vZGVsVmFsdWUgPSBkZWZpbmVNb2RlbDxzdHJpbmc+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3QgaXNDaGVja2VkID0gY29tcHV0ZWQoKCkgPT4gbW9kZWxWYWx1ZS52YWx1ZSA9PT0gcHJvcHMudmFsdWUpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGxhYmVsXG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtaW5wdXQtcmFkaW8nLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICBDU1MuVVNFUl9TRUxFQ1QuTk9ORSxcbiAgICAgIHByb3BzLmRpc2FibGVkID8gW0NTUy5PUEFDSVRZLkRJU0FCTEVELCBDU1MuQ1VSU09SLk5PVF9BTExPV0VEXSA6IFtDU1MuQ1VSU09SLlBPSU5URVJdLFxuICAgIF1cIlxuICAgIDpmb3I9XCJwcm9wcy5pbnB1dElkXCJcbiAgPlxuICAgIDxpbnB1dFxuICAgICAgOmNsYXNzPVwiWyd0aWRlLXNjcmVlbi1yZWFkZXItb25seSddXCJcbiAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICA6dmFsdWU9XCJ2YWx1ZVwiXG4gICAgICA6aWQ9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICB2LW1vZGVsPVwibW9kZWxWYWx1ZVwiXG4gICAgLz5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtcmFkaW8tY3VzdG9tJyxcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgICBpc0NoZWNrZWQgPyBbQ1NTLkJPUkRFUi5DT0xPUi5ISUdIXSA6IFtDU1MuQk9SREVSLkNPTE9SLkRFRkFVTFRdLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBDU1MuQ1VSU09SLlBPSU5URVIsXG4gICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PTixcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWlucHV0LXJhZGlvLWNoZWNrJywgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCwgaXNDaGVja2VkICYmIENTUy5CRy5TRUNPTkRBUlldXCIgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkdST1cuT04sIENTUy5BWElTMS5CRVRXRUVOLCBDU1MuRk9OVC5ST0xFLkJPRFlfMV1cIj5cbiAgICAgIDxzcGFuPnt7IGxhYmVsIH19PC9zcGFuPlxuICAgICAgPHNwYW5cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICB2LWlmPVwicHJvcHMubnVtYmVyXCJcbiAgICAgID5cbiAgICAgICAgKHt7IGZvcm1hdE51bWJlcihwcm9wcy5udW1iZXIpIH19KVxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2xhYmVsPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW5wdXQtcmFkaW8tY3VzdG9tIHtcbiAgICB3aWR0aDogMjRweDtcbiAgICBoZWlnaHQ6IDI0cHg7XG4gIH1cblxuICAudGlkZS1pbnB1dC1yYWRpby1jaGVjayB7XG4gICAgd2lkdGg6IDE2cHg7XG4gICAgaGVpZ2h0OiAxNnB4O1xuICB9XG5cbiAgbGFiZWw6aGFzKGlucHV0OmZvY3VzLXZpc2libGUpIHtcbiAgICBvdXRsaW5lOiBhdXRvO1xuICAgIG91dGxpbmUtb2Zmc2V0OiAycHg7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBUaWRlSW5wdXRSYWRpby52dWVgIGltcG9ydGVkIGZyb20gJ3RpZGUtZGVzaWduLXN5c3RlbScgbnBtIHBhY2thZ2UgaW5zdGVhZC5cbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZm9ybWF0TnVtYmVyIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGNoZWNrZWQ/OiBib29sZWFuO1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBpbnB1dElkPzogc3RyaW5nO1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgbnVtYmVyPzogbnVtYmVyO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgY2hlY2tlZDogZmFsc2UsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICBudW1iZXI6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgY2hlY2tlZCA9IHJlZihwcm9wcy5jaGVja2VkKTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy5jaGVja2VkLFxuICAgIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUgfHwgbmV3VmFsdWUgIT09IGNoZWNrZWQudmFsdWUpIHtcbiAgICAgICAgY2hlY2tlZC52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC1yYWRpbycsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICBwcm9wcy5kaXNhYmxlZCAmJiAnZGlzYWJsZWQnLFxuICAgIF1cIlxuICA+XG4gICAgPGlucHV0XG4gICAgICA6Y2hlY2tlZD1cImNoZWNrZWRcIlxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLk5PTkVdXCJcbiAgICAgIDppZD1cInByb3BzLmlucHV0SWRcIlxuICAgICAgbmFtZT1cIlwiXG4gICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgdmFsdWU9XCJcIlxuICAgIC8+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LXJhZGlvLWN1c3RvbScsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMxLkNFTlRFUixcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgICAgY2hlY2tlZCA/IENTUy5CT1JERVIuQ09MT1IuSElHSCA6IENTUy5CT1JERVIuQ09MT1IuREVGQVVMVCxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgQ1NTLkNVUlNPUi5QT0lOVEVSLFxuICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT04sXG4gICAgICAgIGNoZWNrZWQgJiYgJ2NoZWNrZWQnLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtaW5wdXQtcmFkaW8tY2hlY2snLCBDU1MuQk9SREVSLlJBRElVUy5GVUxMLCBwcm9wcy5jaGVja2VkICYmIENTUy5CRy5TRUNPTkRBUlldXCIgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuRkxFWC5HUk9XLk9OLFxuICAgICAgICBDU1MuQVhJUzEuQkVUV0VFTixcbiAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgIENTUy5DVVJTT1IuUE9JTlRFUixcbiAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9OLFxuICAgICAgXVwiXG4gICAgICA6Zm9yPVwicHJvcHMuaW5wdXRJZFwiXG4gICAgPlxuICAgICAgPHNwYW4+e3sgbGFiZWwgfX08L3NwYW4+XG4gICAgICA8c3BhblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgIHYtaWY9XCJwcm9wcy5udW1iZXJcIlxuICAgICAgPlxuICAgICAgICAoe3sgZm9ybWF0TnVtYmVyKHByb3BzLm51bWJlcikgfX0pXG4gICAgICA8L3NwYW4+XG4gICAgPC9sYWJlbD5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1pbnB1dC1yYWRpby5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogdmFyKC0tdGlkZS1kaXNhYmxlZCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1yYWRpby1jdXN0b20ge1xuICAgIHdpZHRoOiAyNHB4O1xuICAgIGhlaWdodDogMjRweDtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXJhZGlvLWNoZWNrIHtcbiAgICB3aWR0aDogMTZweDtcbiAgICBoZWlnaHQ6IDE2cHg7XG4gIH1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgeyBmb3JtYXROdW1iZXIsIGZvcm1hdFBob25lLCBmb3JtYXRQcmljZSB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbmV4cG9ydCB0eXBlIEZvcm1hdHRlZCA9IHtcbiAgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW10gfCBudW1iZXI7XG59O1xuXG5leHBvcnQgY29uc3QgRk9STUFUID0ge1xuICBOVU1CRVI6IGZvcm1hdE51bWJlcixcbiAgUEhPTkU6IGZvcm1hdFBob25lLFxuICBQUklDRTogZm9ybWF0UHJpY2UsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgRk9STUFUX1JFR0VYID0ge1xuICBhbHBoYTogL15bYS16QS1aXSskL2csXG4gIGFscGhhTnVtYmVyT3JFbXB0eTogL14kfF5bYS16MC05XSskL2ksXG4gIGFscGhhU3BhY2U6IC9eW2EtekEtWiBdKyQvZyxcbiAgZW1haWw6XG4gICAgL14oKFtePD4oKVtcXF1cXFxcLiw7Olxcc0BcIl0rKFxcLltePD4oKVtcXF1cXFxcLiw7Olxcc0BcIl0rKSopfChcIi4rXCIpKUAoKFxcW1swLTldezEsM31cXC5bMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcLlswLTldezEsM31cXF0pfCgoW2EtekEtWlxcLTAtOV0rXFwuKStbYS16QS1aXXsyLH0pKSQvLFxuICBudW1iZXJGb3JtYXR0ZWQ6IC9eJHwoPz0uKV5cXCQ/KChbMS05XVswLTldezAsMn0oLFswLTldezN9KSopfDApPyhcXC5bMC05XXsxLDJ9KT8kLyxcbiAgcGhvbmU6IC9eKD86XFxkezN9LVxcZHszfS1cXGR7NH18XFxkezF9LVxcZHszfS1cXGR7M30tXFxkezR9KT8kLyxcbiAgcHJpY2U6IC8oPz0uKV5cXCQ/KChbMS05XVswLTldezAsMn0oLFswLTldezN9KSopfDApPyhcXC5bMC05XXsxLDJ9KT8kLyxcbn07XG4iLCJpbXBvcnQgeyBGT1JNQVRfUkVHRVggfSBmcm9tICdAL3R5cGVzL0Zvcm1hdHRlZCc7XG5pbXBvcnQgeyBjaGVja0Zvcm1hdCB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24nO1xuXG5leHBvcnQgY29uc3QgVkFMSURBVE9SID0ge1xuICBBTFBIQV9OVU1CRVJfRU1QVFk6IGNoZWNrRm9ybWF0KEZPUk1BVF9SRUdFWC5hbHBoYU51bWJlck9yRW1wdHkpLFxuICBBTFBIQV9TUEFDRTogY2hlY2tGb3JtYXQoRk9STUFUX1JFR0VYLmFscGhhU3BhY2UpLFxuICBFTUFJTDogY2hlY2tGb3JtYXQoRk9STUFUX1JFR0VYLmVtYWlsLCAnRW50ZXIgYSB2YWxpZCBlbWFpbCBhZGRyZXNzIChlLmcuIG5hbWVAZXhhbXBsZS5jb20pJyksXG4gIE5VTUJFUjogY2hlY2tGb3JtYXQoRk9STUFUX1JFR0VYLm51bWJlckZvcm1hdHRlZCwgJ0VudGVyIGEgdmFsaWQgbnVtYmVyJyksXG4gIFBIT05FOiBjaGVja0Zvcm1hdChGT1JNQVRfUkVHRVgucGhvbmUsICdFbnRlciBhIHZhbGlkIHBob25lIG51bWJlcicpLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgVmFsaWRhdGlvbkVycm9yID0gc3RyaW5nIHwgYm9vbGVhbjtcbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25SZXN1bHQgPSB7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgdmFsaWQ6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uTGVuZ3RoID0ge1xuICBtYXhsZW5ndGg/OiBudW1iZXI7XG4gIG1pbmxlbmd0aD86IG51bWJlcjtcbiAgcmVxdWlyZWQ6IGJvb2xlYW47XG4gIHZhbHVlOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBWYWxpZGF0b3IgPSAodmFsdWU6IHN0cmluZykgPT4gVmFsaWRhdGlvblJlc3VsdDtcblxuZXhwb3J0IGNvbnN0IEVSUk9SX0RJU1BMQVkgPSB7XG4gIEVBR0VSOiAnZWFnZXInLFxuICBMQVpZOiAnbGF6eScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBFcnJvckRpc3BsYXkgPSAodHlwZW9mIEVSUk9SX0RJU1BMQVkpW2tleW9mIHR5cGVvZiBFUlJPUl9ESVNQTEFZXTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYsIHVzZUlkLCB3YXRjaCwgd2F0Y2hFZmZlY3QgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IFRpZGVJbnB1dFN1cHBvcnRpbmdUZXh0IGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSW5wdXRTdXBwb3J0aW5nVGV4dC52dWUnO1xuICBpbXBvcnQgeyB1c2VGb3JtQ29udGV4dCB9IGZyb20gJ0AvY29tcG9zYWJsZXMvdXNlVGlkZUZvcm0nO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgRVJST1JfRElTUExBWSB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbic7XG4gIGltcG9ydCB7IFZBTElEQVRJT05fUkVTVUxULCBnZXRGaWVsZFZhbGlkYXRpb25SZXN1bHQgfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uJztcblxuICBpbXBvcnQgdHlwZSB7IFNlbGVjdE9wdGlvbiwgU2VsZWN0T3B0aW9uR3JvdXAgfSBmcm9tICdAL3R5cGVzL1NlbGVjdCc7XG4gIGltcG9ydCB0eXBlIHsgRXJyb3JEaXNwbGF5LCBWYWxpZGF0aW9uUmVzdWx0IH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBlcnJvcj86IHN0cmluZztcbiAgICBlcnJvckRpc3BsYXk/OiBFcnJvckRpc3BsYXk7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICBvcHRncm91cHM/OiAoU2VsZWN0T3B0aW9uIHwgU2VsZWN0T3B0aW9uR3JvdXApW10gfCByZWFkb25seSAoU2VsZWN0T3B0aW9uIHwgU2VsZWN0T3B0aW9uR3JvdXApW107XG4gICAgb3B0aW9ucz86IFNlbGVjdE9wdGlvbltdIHwgcmVhZG9ubHkgU2VsZWN0T3B0aW9uW107XG4gICAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICAgIHN1cHBvcnRpbmdUZXh0Pzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGVycm9yOiAnJyxcbiAgICBlcnJvckRpc3BsYXk6IEVSUk9SX0RJU1BMQVkuTEFaWSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBuYW1lOiB1bmRlZmluZWQsXG4gICAgb3B0Z3JvdXBzOiB1bmRlZmluZWQsXG4gICAgb3B0aW9uczogdW5kZWZpbmVkLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBzdXBwb3J0aW5nVGV4dDogdW5kZWZpbmVkLFxuICB9KTtcblxuICB0eXBlIEVtaXRzID0ge1xuICAgIChldmVudDogJ3ZhbGlkJywgaXNWYWxpZDogYm9vbGVhbik6IHZvaWQ7XG4gIH07XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPEVtaXRzPigpO1xuXG4gIGNvbnN0IG1vZGVsVmFsdWUgPSBkZWZpbmVNb2RlbDxzdHJpbmc+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3QgZm9ybUNvbnRleHQgPSB1c2VGb3JtQ29udGV4dCgpO1xuXG4gIGNvbnN0IGVycm9yUmVmID0gcmVmPFZhbGlkYXRpb25SZXN1bHQ+KFZBTElEQVRJT05fUkVTVUxULk5PX0VSUk9SKTtcbiAgY29uc3QgaGFzRm9jdXMgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBpbnB1dElkID0gdXNlSWQoKTtcbiAgY29uc3QgaXNWYWxpZGF0aW5nID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3Qgc2VsZWN0RWxlbWVudCA9IHJlZjxIVE1MU2VsZWN0RWxlbWVudCB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3Qgc2hvd0Vycm9yID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmIChoYXNFcnJvckZyb21Qcm9wLnZhbHVlKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoIWlzVmFsaWRhdGluZy52YWx1ZSkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiAhZXJyb3JSZWYudmFsdWUudmFsaWQ7XG4gIH0pO1xuICBjb25zdCBoYXNFcnJvckZyb21Qcm9wID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMuZXJyb3IgIT09ICcnKTtcbiAgY29uc3QgaGFzTWluaWxhYmVsID0gY29tcHV0ZWQoKCkgPT4gaGFzRm9jdXMudmFsdWUgfHwgIWlzRW1wdHkudmFsdWUpO1xuICBjb25zdCBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4gbW9kZWxWYWx1ZS52YWx1ZSA9PT0gJycpO1xuICBjb25zdCBzdXBwb3J0aW5nVGV4dE1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiAoc2hvd0Vycm9yLnZhbHVlICYmIGVycm9yUmVmLnZhbHVlLm1lc3NhZ2UpIHx8IHByb3BzLnN1cHBvcnRpbmdUZXh0KTtcblxuICBjb25zdCBleHBhbmRPcHRpb25zID0gKCkgPT4ge1xuICAgIGNvbnN0IGV2ZW50ID0gbmV3IE1vdXNlRXZlbnQoJ21vdXNlZG93bicpO1xuICAgIHNlbGVjdEVsZW1lbnQ/LnZhbHVlPy5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1cyA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IHRydWU7XG4gICAgaWYgKHByb3BzLmVycm9yRGlzcGxheSA9PT0gRVJST1JfRElTUExBWS5FQUdFUikgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c091dCA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IGZhbHNlO1xuICAgIGlmIChwcm9wcy5lcnJvckRpc3BsYXkgPT09IEVSUk9SX0RJU1BMQVkuTEFaWSkgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICB3YXRjaEVmZmVjdCgoKSA9PiB7XG4gICAgZXJyb3JSZWYudmFsdWUgPSBnZXRGaWVsZFZhbGlkYXRpb25SZXN1bHQoe1xuICAgICAgZXJyb3JGcm9tUHJvcHM6IHByb3BzLmVycm9yLFxuICAgICAgcmVxdWlyZWQ6IHByb3BzLnJlcXVpcmVkLFxuICAgICAgdmFsdWU6IG1vZGVsVmFsdWUsXG4gICAgfSk7XG4gIH0pO1xuXG4gIHdhdGNoKFxuICAgICgpID0+IGZvcm1Db250ZXh0Py5mb3JjZVNob3dFcnJvcnMudmFsdWUsXG4gICAgKG5ld1ZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUpIGlzVmFsaWRhdGluZy52YWx1ZSA9IHRydWU7XG4gICAgfSxcbiAgICB7IGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG5cbiAgd2F0Y2goXG4gICAgZXJyb3JSZWYsXG4gICAgKCkgPT4ge1xuICAgICAgZW1pdCgndmFsaWQnLCBlcnJvclJlZi52YWx1ZS52YWxpZCk7XG4gICAgfSxcbiAgICB7IGRlZXA6IHRydWUsIGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtaW5wdXQtc2VsZWN0JyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgZGlzYWJsZWQgJiYgJ2Rpc2FibGVkJyxcbiAgICAgIHNob3dFcnJvciAmJiAnZXJyb3InLFxuICAgIF1cIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC1ib3JkZXInLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgcHJvcHMuZGlzYWJsZWQgPyBDU1MuQ1VSU09SLk5PVF9BTExPV0VEIDogJycsXG4gICAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICBdXCJcbiAgICAgIEBjbGljaz1cImV4cGFuZE9wdGlvbnNcIlxuICAgID5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5XSURUSC5GVUxMXVwiPlxuICAgICAgICA8bGFiZWxcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICBoYXNNaW5pbGFiZWwgPyBbJ21pbmlsYWJlbCcsIENTUy5GT05ULlJPTEUuTEFCRUxfM10gOiBDU1MuRk9OVC5ST0xFLkxBQkVMXzEsXG4gICAgICAgICAgICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gICAgICAgICAgICBDU1MuUE9TSVRJT05JTkcuTEVGVCxcbiAgICAgICAgICAgIENTUy5NQVJHSU4uVE9QLkhBTEYsXG4gICAgICAgICAgICBDU1MuTUFSR0lOLkxFRlQuT05FLFxuICAgICAgICAgICAgIXNob3dFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIDpmb3I9XCJpbnB1dElkXCJcbiAgICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZm9ybWF0dGVkTGFiZWwgfX1cbiAgICAgICAgPC9sYWJlbD5cblxuICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgQ1NTLlBBRERJTkcuQk9UVE9NLkhBTEYsXG4gICAgICAgICAgICBDU1MuUEFERElORy5YLk9ORSxcbiAgICAgICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICAgICAgZGlzYWJsZWQgJiYgQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCxcbiAgICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICAgICAgICA6bmFtZT1cIm5hbWVcIlxuICAgICAgICAgIHJlZj1cInNlbGVjdEVsZW1lbnRcIlxuICAgICAgICAgIDpyZXF1aXJlZD1cInJlcXVpcmVkXCJcbiAgICAgICAgICBAZm9jdXM9XCJoYW5kbGVGb2N1c1wiXG4gICAgICAgICAgQGZvY3Vzb3V0PVwiaGFuZGxlRm9jdXNPdXRcIlxuICAgICAgICAgIDppZD1cImlucHV0SWRcIlxuICAgICAgICAgIHYtbW9kZWw9XCJtb2RlbFZhbHVlXCJcbiAgICAgICAgPlxuICAgICAgICAgIDx0ZW1wbGF0ZSB2LWZvcj1cIm9wdGdyb3VwIGluIHByb3BzLm9wdGdyb3Vwc1wiPlxuICAgICAgICAgICAgPG9wdGdyb3VwXG4gICAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgICAgICAgICA6a2V5PVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbkdyb3VwKS5sYWJlbFwiXG4gICAgICAgICAgICAgIDpsYWJlbD1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb25Hcm91cCkubGFiZWxcIlxuICAgICAgICAgICAgICB2LWlmPVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbkdyb3VwKS5vcHRpb25zXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgICAgICAgICAgIDprZXk9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgICAgIDp2YWx1ZT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICAgICAgdi1mb3I9XCJvcHRpb24gaW4gKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbkdyb3VwKS5vcHRpb25zXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxuICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgIDwvb3B0Z3JvdXA+XG5cbiAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgICAgIDprZXk9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uKS52YWx1ZVwiXG4gICAgICAgICAgICAgIDpzZWxlY3RlZD1cIm1vZGVsVmFsdWUgPT09IChvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLnZhbHVlID8gdHJ1ZSA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgIDp2YWx1ZT1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLnZhbHVlXCJcbiAgICAgICAgICAgICAgdi1lbHNlXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IChvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLmxhYmVsIH19XG4gICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICA8L3RlbXBsYXRlPlxuXG4gICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgICA6a2V5PVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgIDpzZWxlY3RlZD1cIm1vZGVsVmFsdWUgPT09IG9wdGlvbi52YWx1ZSA/IHRydWUgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgOnZhbHVlPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgIHYtZm9yPVwib3B0aW9uIGluIG9wdGlvbnNcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxuICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICA8L3NlbGVjdD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5QT1NJVElPTi5BQlNPTFVURSwgQ1NTLlBPU0lUSU9OSU5HLlJJR0hULCBDU1MuTUFSR0lOLlJJR0hULk9ORSwgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRl1cIlxuICAgICAgICA6aWNvbj1cIklDT04uRVhQQU5EX01PUkVcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dFxuICAgICAgOmlzLWVycm9yPVwic2hvd0Vycm9yXCJcbiAgICAgIDptZXNzYWdlPVwic3VwcG9ydGluZ1RleHRNZXNzYWdlXCJcbiAgICAgIHYtaWY9XCJzdXBwb3J0aW5nVGV4dE1lc3NhZ2VcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgc2VsZWN0IHtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICB9XG5cbiAgbGFiZWwge1xuICAgIGhlaWdodDogMS4xODc1cmVtO1xuICAgIHRyYW5zaXRpb246IGZvbnQtc2l6ZSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIGxhYmVsOm5vdCgubWluaWxhYmVsKSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgY2FsYyg5IC8gMTYgKiAxcmVtKSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IHZhcigtLXRpZGUtZGlzYWJsZWQpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtZXJyb3Itc3VyZmFjZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3I6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0OmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0yKTtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtYm9yZGVyLWhpZ2gpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMSk7XG4gICAgb3V0bGluZTogdmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSBzb2xpZCB2YXIoLS10aWRlLWJvcmRlcik7XG4gICAgb3V0bGluZS1vZmZzZXQ6IGNhbGModmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSAqIC0xKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5lcnJvciB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItcHJpbWFyeSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3Igb3B0aW9uIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1vbi1zdXJmYWNlKTtcbiAgfVxuXG4gIHNlbGVjdCB7XG4gICAgcGFkZGluZy10b3A6IDI3cHg7XG4gIH1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgeyBwcmljZVRvTnVtYmVyIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcblxuaW1wb3J0IHR5cGUgeyBTdHJpbmdJbnB1dCB9IGZyb20gJ0AvdHlwZXMvRm9ybURlcHJlY2F0ZWQnO1xuaW1wb3J0IHR5cGUgeyBTZWxlY3RPcHRpb24gfSBmcm9tICdAL3R5cGVzL1NlbGVjdCc7XG5pbXBvcnQgdHlwZSB7IFZhbGlkYXRpb25FcnJvciwgVmFsaWRhdGlvbkxlbmd0aCwgVmFsaWRhdGlvblJlc3VsdCwgVmFsaWRhdG9yIH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uRGVwcmVjYXRlZCc7XG5pbXBvcnQgdHlwZSB7IFJlZiB9IGZyb20gJ3Z1ZSc7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xudHlwZSBSYW5nZURhdGEgPSB7XG4gIG1pbjogbnVtYmVyIHwgbnVsbDtcbiAgbWF4OiBudW1iZXIgfCBudWxsO1xufTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgZXJyb3JNZXNzYWdlRGVmYXVsdCA9ICdQbGVhc2UgZW50ZXIgYSB2YWxpZCB2YWx1ZS4nO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBub0Vycm9yID0ge1xuICBtZXNzYWdlOiAnJyxcbiAgdmFsaWQ6IHRydWUsXG59IGFzIFJlYWRvbmx5PFZhbGlkYXRpb25SZXN1bHQ+O1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBjaGVja0Zvcm1hdCA9IChmb3JtYXQ6IFJlZ0V4cCkgPT4ge1xuICByZXR1cm4gKHZhbHVlOiBzdHJpbmcpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgICBsZXQgcmVzdWx0ID0gbm9FcnJvcjtcblxuICAgIGlmICghdmFsdWUudHJpbSgpLm1hdGNoKGZvcm1hdCkpIHtcbiAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgbWVzc2FnZTogZXJyb3JNZXNzYWdlRGVmYXVsdCxcbiAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xufTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgZ2V0RXJyb3JNZXNzYWdlID0gKGVycm9yRnJvbVByb3BzOiBWYWxpZGF0aW9uRXJyb3IsIGVycm9yRnJvbVJlZjogVmFsaWRhdGlvbkVycm9yKSA9PiB7XG4gIC8vIGVycm9yIGluIHByb3BzIHRha2VzIHByZWNlZGVuY2Ugb3ZlciB2YWxpZGF0aW9uIGVycm9yXG4gIGlmICh0eXBlb2YgZXJyb3JGcm9tUHJvcHMgPT09ICdzdHJpbmcnICYmIGVycm9yRnJvbVByb3BzLmxlbmd0aCA+IDApIHJldHVybiBlcnJvckZyb21Qcm9wcztcblxuICByZXR1cm4gdHlwZW9mIGVycm9yRnJvbVJlZiA9PT0gJ3N0cmluZycgJiYgZXJyb3JGcm9tUmVmLmxlbmd0aCA+IDAgPyBlcnJvckZyb21SZWYgOiBlcnJvck1lc3NhZ2VEZWZhdWx0O1xufTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgZ2V0RmllbGRIYXNFcnJvciA9IChlcnJvckZyb21Qcm9wczogVmFsaWRhdGlvbkVycm9yLCBlcnJvckZyb21SZWY6IFZhbGlkYXRpb25FcnJvcikgPT5cbiAgZXJyb3JGcm9tUHJvcHMgIT09IGZhbHNlIHx8IGVycm9yRnJvbVJlZiAhPT0gZmFsc2U7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEZpZWxkTGVuZ3RoSXNWYWxpZCA9ICh7IG1heGxlbmd0aCwgbWlubGVuZ3RoLCByZXF1aXJlZCwgdmFsdWUgfTogVmFsaWRhdGlvbkxlbmd0aCkgPT4ge1xuICBjb25zdCBpc0VtcHR5QW5kVW5yZXF1aXJlZCA9IHZhbHVlLmxlbmd0aCA9PT0gMCAmJiAhcmVxdWlyZWQ7XG4gIGNvbnN0IGlzVG9vTG9uZyA9IG1heGxlbmd0aCAmJiB2YWx1ZS5sZW5ndGggPiBtYXhsZW5ndGg7XG4gIGNvbnN0IGlzVG9vU2hvcnQgPSAhaXNFbXB0eUFuZFVucmVxdWlyZWQgJiYgbWlubGVuZ3RoICYmIHZhbHVlLmxlbmd0aCA8IG1pbmxlbmd0aDtcblxuICByZXR1cm4gIWlzVG9vU2hvcnQgJiYgIWlzVG9vTG9uZztcbn07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldE1heFJhbmdlSXNWYWxpZCA9ICh7IG1pbiB9OiBQaWNrPFJhbmdlRGF0YSwgJ21pbic+LCB0eXBlPzogJ3ByaWNlJykgPT4ge1xuICByZXR1cm4gKHZhbHVlOiBzdHJpbmcpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgICBsZXQgbmV3TWF4OiBudW1iZXIgfCBudWxsID0gdHlwZSA9PT0gJ3ByaWNlJyA/IHByaWNlVG9OdW1iZXIodmFsdWUpIDogTnVtYmVyKHZhbHVlKTtcbiAgICBuZXdNYXggPSAhaXNOYU4obmV3TWF4KSA/IG5ld01heCA6IG51bGw7XG4gICAgaWYgKG1pbiAmJiBuZXdNYXgpIHtcbiAgICAgIGlmIChuZXdNYXggPj0gbWluKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1lc3NhZ2U6IGBNdXN0IGJlIGdyZWF0ZXIgdGhhbiBtaW5gLFxuICAgICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5vRXJyb3I7XG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgZ2V0TWluUmFuZ2VJc1ZhbGlkID0gKHsgbWF4IH06IFBpY2s8UmFuZ2VEYXRhLCAnbWF4Jz4sIHR5cGU/OiAncHJpY2UnKSA9PiB7XG4gIHJldHVybiAodmFsdWU6IHN0cmluZyk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICAgIGxldCBuZXdNaW46IG51bWJlciB8IG51bGwgPSB0eXBlID09PSAncHJpY2UnID8gcHJpY2VUb051bWJlcih2YWx1ZSkgOiBOdW1iZXIodmFsdWUpO1xuICAgIG5ld01pbiA9ICFpc05hTihuZXdNaW4pID8gbmV3TWluIDogbnVsbDtcbiAgICBpZiAobWF4ICYmIG5ld01pbikge1xuICAgICAgaWYgKG5ld01pbiA8PSBtYXgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbWVzc2FnZTogYE11c3QgYmUgbGVzcyB0aGFuIG1heGAsXG4gICAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbm9FcnJvcjtcbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRTZWxlY3RPcHRpb25zRnJvbVN0cmluZ3MgPSAoc3RyaW5nczogc3RyaW5nW10pID0+XG4gIHN0cmluZ3MubWFwKFxuICAgIChvcHRpb24pID0+XG4gICAgICAoe1xuICAgICAgICBsYWJlbDogb3B0aW9uLFxuICAgICAgICB2YWx1ZTogb3B0aW9uLFxuICAgICAgfSBhcyBTZWxlY3RPcHRpb24pXG4gICk7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGhhbmRsZUZpZWxkVmFsaWRhdGlvbiA9ICh7XG4gIGVycm9yLFxuICBlcnJvckZyb21Qcm9wcyxcbiAgbWF4bGVuZ3RoLFxuICBtaW5sZW5ndGgsXG4gIHJlcXVpcmVkID0gZmFsc2UsXG4gIHZhbGlkYXRvcnMsXG4gIHZhbHVlLFxufToge1xuICBlcnJvcjogUmVmPFZhbGlkYXRpb25FcnJvcj47XG4gIGVycm9yRnJvbVByb3BzOiBWYWxpZGF0aW9uRXJyb3I7XG4gIG1heGxlbmd0aD86IG51bWJlcjtcbiAgbWlubGVuZ3RoPzogbnVtYmVyO1xuICByZXF1aXJlZD86IGJvb2xlYW47XG4gIHZhbGlkYXRvcnM/OiBWYWxpZGF0b3JbXTtcbiAgdmFsdWU/OiBSZWY8c3RyaW5nIHwgdW5kZWZpbmVkPjtcbn0pID0+IHtcbiAgLy8gZXJyb3IgaW4gcHJvcHMgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHZhbGlkYXRpb24gZXJyb3JcblxuICBlcnJvci52YWx1ZSA9IGVycm9yRnJvbVByb3BzID8gZXJyb3JGcm9tUHJvcHMgOiBmYWxzZTtcblxuICBpZiAoIWVycm9yLnZhbHVlICYmIHZhbGlkYXRvcnMpIHtcbiAgICBjb25zdCB2YWxpZGF0aW9uID0gdmFsaWRhdGVQcm9wZXJ0eSh2YWx1ZT8udmFsdWUgfHwgJycsIHZhbGlkYXRvcnMpO1xuXG4gICAgaWYgKCF2YWxpZGF0aW9uLnZhbGlkKSB7XG4gICAgICBlcnJvci52YWx1ZSA9IHZhbGlkYXRpb24ubWVzc2FnZTtcbiAgICB9XG4gIH1cblxuICBpZiAoIWVycm9yLnZhbHVlICYmIChtYXhsZW5ndGggfHwgbWlubGVuZ3RoKSkge1xuICAgIGNvbnN0IGxlbmd0aFZhbGlkYXRpb24gPSB2YWxpZGF0ZUxlbmd0aCh7XG4gICAgICBtYXhsZW5ndGgsXG4gICAgICBtaW5sZW5ndGgsXG4gICAgICByZXF1aXJlZCxcbiAgICAgIHZhbHVlOiB2YWx1ZT8udmFsdWUgfHwgJycsXG4gICAgfSk7XG5cbiAgICBpZiAoIWxlbmd0aFZhbGlkYXRpb24udmFsaWQpIHtcbiAgICAgIGVycm9yLnZhbHVlID0gbGVuZ3RoVmFsaWRhdGlvbi5tZXNzYWdlO1xuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVGaWVsZHNGcm9tUmVmcyhmaWVsZHM6IHsgW2tleTogc3RyaW5nXTogUmVmPFN0cmluZ0lucHV0IHwgbnVsbD4gfSkge1xuICBsZXQgdmFsaWQgPSB0cnVlO1xuXG4gIGZvciAoY29uc3Qga2V5IGluIGZpZWxkcykge1xuICAgIGlmIChmaWVsZHNba2V5XS52YWx1ZT8ucmVxdWlyZWQpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gZmllbGRzW2tleV0udmFsdWU/LnZhbHVlO1xuICAgICAgdmFsaWQgPSB2YWxpZCAmJiAhIXZhbHVlICYmIHZhbHVlLnRyaW0oKSAhPT0gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgZXJyb3IgPSBmaWVsZHNba2V5XS52YWx1ZT8uZXJyb3I7XG4gICAgdmFsaWQgPSB2YWxpZCAmJiAhZXJyb3I7XG4gIH1cblxuICByZXR1cm4gdmFsaWQ7XG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IHZhbGlkYXRlTGVuZ3RoID0gKHtcbiAgbWF4bGVuZ3RoLFxuICBtaW5sZW5ndGgsXG4gIHJlcXVpcmVkID0gZmFsc2UsXG4gIHZhbHVlLFxufTogVmFsaWRhdGlvbkxlbmd0aCk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICBjb25zdCByZXNwb25zZSA9IHtcbiAgICBtZXNzYWdlOiAnJyxcbiAgICB2YWxpZDogdHJ1ZSxcbiAgfTtcblxuICByZXNwb25zZS52YWxpZCA9IGdldEZpZWxkTGVuZ3RoSXNWYWxpZCh7XG4gICAgbWF4bGVuZ3RoLFxuICAgIG1pbmxlbmd0aCxcbiAgICByZXF1aXJlZCxcbiAgICB2YWx1ZSxcbiAgfSk7XG5cbiAgaWYgKHJlc3BvbnNlLnZhbGlkKSByZXR1cm4gcmVzcG9uc2U7XG5cbiAgcmVzcG9uc2UubWVzc2FnZSA9IGVycm9yTWVzc2FnZURlZmF1bHQ7XG5cbiAgaWYgKG1heGxlbmd0aCAmJiBtaW5sZW5ndGgpIHtcbiAgICByZXNwb25zZS5tZXNzYWdlID0gYFBsZWFzZSBlbnRlciBhIHZhbHVlIGJldHdlZW4gJHttaW5sZW5ndGh9IGFuZCAke21heGxlbmd0aH0gY2hhcmFjdGVycyBpbiBsZW5ndGguYDtcbiAgfSBlbHNlIGlmIChtYXhsZW5ndGgpIHtcbiAgICByZXNwb25zZS5tZXNzYWdlID0gYFBsZWFzZSBlbnRlciBhIHZhbHVlIG5vIG1vcmUgdGhhbiAke21heGxlbmd0aH0gY2hhcmFjdGVycyBpbiBsZW5ndGguYDtcbiAgfSBlbHNlIGlmIChtaW5sZW5ndGgpIHtcbiAgICByZXNwb25zZS5tZXNzYWdlID0gYFBsZWFzZSBlbnRlciBhIHZhbHVlIG5vIGxlc3MgdGhhbiAke21pbmxlbmd0aH0gY2hhcmFjdGVycyBpbiBsZW5ndGguYDtcbiAgfVxuXG4gIHJldHVybiByZXNwb25zZTtcbn07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlUHJvcGVydHkodmFsdWU6IHN0cmluZywgdmFsaWRhdG9yczogKCh2YWx1ZTogc3RyaW5nKSA9PiBWYWxpZGF0aW9uUmVzdWx0KVtdKTogVmFsaWRhdGlvblJlc3VsdCB7XG4gIGZvciAoY29uc3QgdmFsaWRhdG9yIG9mIHZhbGlkYXRvcnMpIHtcbiAgICBjb25zdCB2YWxpZGF0aW9uID0gdmFsaWRhdG9yKHZhbHVlKTtcbiAgICBpZiAoIXZhbGlkYXRpb24udmFsaWQpIHtcbiAgICAgIHJldHVybiB2YWxpZGF0aW9uO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbWVzc2FnZTogJycsXG4gICAgdmFsaWQ6IHRydWUsXG4gIH07XG59XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBUaWRlSW5wdXRTZWxlY3QudnVlYCBpbXBvcnRlZCBmcm9tICd0aWRlLWRlc2lnbi1zeXN0ZW0nIG5wbSBwYWNrYWdlIGluc3RlYWQuXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZ2V0RXJyb3JNZXNzYWdlLCBnZXRGaWVsZEhhc0Vycm9yIH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbi1kZXByZWNhdGVkJztcblxuICBpbXBvcnQgdHlwZSB7IFNlbGVjdEZpZWxkIH0gZnJvbSAnQC90eXBlcy9GaWVsZERlcHJlY2F0ZWQnO1xuICBpbXBvcnQgdHlwZSB7IFNlbGVjdE9wdGlvbiwgU2VsZWN0T3B0aW9uR3JvdXAgfSBmcm9tICdAL3R5cGVzL1NlbGVjdCc7XG5cbiAgZXhwb3J0IGludGVyZmFjZSBQcm9wcyBleHRlbmRzIFNlbGVjdEZpZWxkIHtcbiAgICBpbnB1dElkPzogc3RyaW5nO1xuICAgIHN1cHBvcnRpbmdUZXh0Pzogc3RyaW5nO1xuICB9XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZXJyb3I6IGZhbHNlLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBzdXBwb3J0aW5nVGV4dDogdW5kZWZpbmVkLFxuICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IGVycm9yID0gcmVmKHByb3BzLmVycm9yKTtcbiAgY29uc3QgaGFzRm9jdXMgPSByZWYoZmFsc2UpO1xuICBjb25zdCBpbnB1dCA9IHJlZjxIVE1MU2VsZWN0RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCByZXF1aXJlZCA9IHJlZihwcm9wcy5yZXF1aXJlZCk7XG4gIGNvbnN0IHZhbHVlID0gcmVmPHN0cmluZyB8IHVuZGVmaW5lZD4ocHJvcHMudmFsdWUpO1xuXG4gIGNvbnN0IGVycm9yTWVzc2FnZSA9IGNvbXB1dGVkKCgpID0+IGdldEVycm9yTWVzc2FnZShwcm9wcy5lcnJvciwgZXJyb3IudmFsdWUpKTtcbiAgY29uc3QgZm9ybWF0dGVkTGFiZWwgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgPyBgJHtwcm9wcy5sYWJlbH0gKmAgOiBwcm9wcy5sYWJlbCkpO1xuICBjb25zdCBoYXNFcnJvciA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCAmJiAhdmFsdWUudmFsdWUpIHx8IGdldEZpZWxkSGFzRXJyb3IoZXJyb3IudmFsdWUsIHByb3BzLmVycm9yKSk7XG4gIGNvbnN0IGhhc01pbmlsYWJlbCA9IGNvbXB1dGVkKCgpID0+IGhhc0ZvY3VzLnZhbHVlIHx8ICFpc0VtcHR5LnZhbHVlKTtcbiAgY29uc3QgaXNFbXB0eSA9IGNvbXB1dGVkKCgpID0+IHZhbHVlLnZhbHVlID09PSB1bmRlZmluZWQpO1xuXG4gIGNvbnN0IGV4cGFuZE9wdGlvbnMgPSAoKSA9PiB7XG4gICAgY29uc3QgZXZlbnQgPSBuZXcgTW91c2VFdmVudCgnbW91c2Vkb3duJyk7XG4gICAgaW5wdXQ/LnZhbHVlPy5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1cyA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXNPdXQgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSBmYWxzZTtcbiAgfTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy52YWx1ZSxcbiAgICAobmV3VmFsdWUsIG9sZFZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUgIT09IG9sZFZhbHVlIHx8IG5ld1ZhbHVlICE9PSB2YWx1ZS52YWx1ZSkge1xuICAgICAgICB2YWx1ZS52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgKTtcblxuICBkZWZpbmVFeHBvc2UoeyBlcnJvciwgdmFsdWUgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtaW5wdXQtc2VsZWN0JyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgZGlzYWJsZWQgJiYgJ2Rpc2FibGVkJyxcbiAgICAgIGhhc0Vycm9yICYmICdlcnJvcicsXG4gICAgXVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LWJvcmRlcicsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBwcm9wcy5kaXNhYmxlZCA/IENTUy5DVVJTT1IuTk9UX0FMTE9XRUQgOiAnJyxcbiAgICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgIF1cIlxuICAgICAgQGNsaWNrPVwiZXhwYW5kT3B0aW9uc1wiXG4gICAgPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLldJRFRILkZVTExdXCI+XG4gICAgICAgIDxsYWJlbFxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/IFsnbWluaWxhYmVsJywgQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXSA6IENTUy5GT05ULlJPTEUuTEFCRUxfMSxcbiAgICAgICAgICAgIENTUy5QT1NJVElPTi5BQlNPTFVURSxcbiAgICAgICAgICAgIENTUy5QT1NJVElPTklORy5MRUZULFxuICAgICAgICAgICAgQ1NTLk1BUkdJTi5UT1AuSEFMRixcbiAgICAgICAgICAgIENTUy5NQVJHSU4uTEVGVC5PTkUsXG4gICAgICAgICAgICAhaGFzRXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgICBdXCJcbiAgICAgICAgICA6Zm9yPVwicHJvcHMuaW5wdXRJZFwiXG4gICAgICAgICAgdi1pZj1cImxhYmVsXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGZvcm1hdHRlZExhYmVsIH19XG4gICAgICAgIDwvbGFiZWw+XG5cbiAgICAgICAgPHNlbGVjdFxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgIENTUy5QQURESU5HLkJPVFRPTS5IQUxGLFxuICAgICAgICAgICAgQ1NTLlBBRERJTkcuWC5PTkUsXG4gICAgICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgICAgIGRpc2FibGVkICYmIENTUy5DVVJTT1IuTk9UX0FMTE9XRUQsXG4gICAgICAgICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMSxcbiAgICAgICAgICBdXCJcbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJkaXNhYmxlZFwiXG4gICAgICAgICAgOm5hbWU9XCJuYW1lXCJcbiAgICAgICAgICByZWY9XCJpbnB1dFwiXG4gICAgICAgICAgOnJlcXVpcmVkPVwicmVxdWlyZWRcIlxuICAgICAgICAgIEBmb2N1cz1cImhhbmRsZUZvY3VzXCJcbiAgICAgICAgICBAZm9jdXNvdXQ9XCJoYW5kbGVGb2N1c091dFwiXG4gICAgICAgICAgOmlkPVwicHJvcHMuaW5wdXRJZFwiXG4gICAgICAgICAgdi1tb2RlbD1cInZhbHVlXCJcbiAgICAgICAgPlxuICAgICAgICAgIDx0ZW1wbGF0ZSB2LWZvcj1cIm9wdGdyb3VwIGluIHByb3BzLm9wdGdyb3Vwc1wiPlxuICAgICAgICAgICAgPG9wdGdyb3VwXG4gICAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgICAgICAgICA6a2V5PVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbkdyb3VwKS5sYWJlbFwiXG4gICAgICAgICAgICAgIDpsYWJlbD1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb25Hcm91cCkubGFiZWxcIlxuICAgICAgICAgICAgICB2LWlmPVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbkdyb3VwKS5vcHRpb25zXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgICAgICAgICAgIDprZXk9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgICAgIDp2YWx1ZT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICAgICAgdi1mb3I9XCJvcHRpb24gaW4gKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbkdyb3VwKS5vcHRpb25zXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxuICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgIDwvb3B0Z3JvdXA+XG5cbiAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgICAgIDprZXk9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uKS52YWx1ZVwiXG4gICAgICAgICAgICAgIDpzZWxlY3RlZD1cInZhbHVlID09PSAob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uKS52YWx1ZSA/IHRydWUgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICA6dmFsdWU9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uKS52YWx1ZVwiXG4gICAgICAgICAgICAgIHYtZWxzZVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyAob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uKS5sYWJlbCB9fVxuICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgPC90ZW1wbGF0ZT5cblxuICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgICAgICAgOmtleT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICA6c2VsZWN0ZWQ9XCJ2YWx1ZSA9PT0gb3B0aW9uLnZhbHVlID8gdHJ1ZSA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICA6dmFsdWU9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgdi1mb3I9XCJvcHRpb24gaW4gb3B0aW9uc1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgb3B0aW9uLmxhYmVsIH19XG4gICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLlBPU0lUSU9OLkFCU09MVVRFLCBDU1MuUE9TSVRJT05JTkcuUklHSFQsIENTUy5NQVJHSU4uUklHSFQuT05FLCBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGXVwiXG4gICAgICAgIDppY29uPVwiSUNPTi5FWFBBTkRfTU9SRVwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUl1cIlxuICAgICAgdi1pZj1cInByb3BzLnN1cHBvcnRpbmdUZXh0IHx8IGhhc0Vycm9yXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW11cIlxuICAgICAgICA6aWNvbj1cIklDT04uRVJST1JcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwiaGFzRXJyb3JcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXVwiPlxuICAgICAgICB7eyBoYXNFcnJvciA/IGVycm9yTWVzc2FnZSA6IHByb3BzLnN1cHBvcnRpbmdUZXh0IH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICBzZWxlY3Qge1xuICAgIGFwcGVhcmFuY2U6IG5vbmU7XG4gIH1cblxuICBsYWJlbCB7XG4gICAgaGVpZ2h0OiAxLjE4NzVyZW07XG4gICAgdHJhbnNpdGlvbjogZm9udC1zaXplIHZhcigtLXRpZGUtYW5pbWF0ZSksIHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgbGFiZWw6bm90KC5taW5pbGFiZWwpIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCBjYWxjKDkgLyAxNiAqIDFyZW0pKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogdmFyKC0tdGlkZS1kaXNhYmxlZCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3IgLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5lcnJvcjpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3Q6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTIpO1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS1ib3JkZXItaGlnaCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0xKTtcbiAgICBvdXRsaW5lOiB2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpIHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBvdXRsaW5lLW9mZnNldDogY2FsYyh2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpICogLTEpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1lcnJvci1wcmltYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5lcnJvciBvcHRpb24ge1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLW9uLXN1cmZhY2UpO1xuICB9XG5cbiAgc2VsZWN0IHtcbiAgICBwYWRkaW5nLXRvcDogMjdweDtcbiAgfVxuPC9zdHlsZT5cbiIsImV4cG9ydCBjb25zdCBURVhUX0lOUFVUX1RZUEUgPSB7XG4gIERBVEU6ICdkYXRlJyxcbiAgREFURVRJTUVfTE9DQUw6ICdkYXRldGltZS1sb2NhbCcsXG4gIEVNQUlMOiAnZW1haWwnLFxuICBNT05USDogJ21vbnRoJyxcbiAgTlVNQkVSOiAnbnVtYmVyJyxcbiAgUEFTU1dPUkQ6ICdwYXNzd29yZCcsXG4gIFNFQVJDSDogJ3NlYXJjaCcsXG4gIFRFTDogJ3RlbCcsXG4gIFRFWFQ6ICd0ZXh0JyxcbiAgVElNRTogJ3RpbWUnLFxuICBVUkw6ICd1cmwnLFxuICBXRUVLOiAnd2VlaycsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBUZXh0SW5wdXRUeXBlID0gKHR5cGVvZiBURVhUX0lOUFVUX1RZUEUpW2tleW9mIHR5cGVvZiBURVhUX0lOUFVUX1RZUEVdO1xuXG5leHBvcnQgY29uc3QgSU5QVVRfTU9ERSA9IHtcbiAgREVDSU1BTDogJ2RlY2ltYWwnLFxuICBFTUFJTDogJ2VtYWlsJyxcbiAgTlVNRVJJQzogJ251bWVyaWMnLFxuICBTRUFSQ0g6ICdzZWFyY2gnLFxuICBURUw6ICd0ZWwnLFxuICBURVhUOiAndGV4dCcsXG4gIFVSTDogJ3VybCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBJbnB1dE1vZGUgPSAodHlwZW9mIElOUFVUX01PREUpW2tleW9mIHR5cGVvZiBJTlBVVF9NT0RFXTtcbiIsImltcG9ydCB7IElOUFVUX01PREUsIFRFWFRfSU5QVVRfVFlQRSB9IGZyb20gJ0AvdHlwZXMvVGV4dElucHV0JztcblxuaW1wb3J0IHR5cGUgeyBJbnB1dE1vZGUsIFRleHRJbnB1dFR5cGUgfSBmcm9tICdAL3R5cGVzL1RleHRJbnB1dCc7XG5cbmV4cG9ydCBjb25zdCBnZXRUZXh0SW5wdXRNb2RlID0gKHR5cGU6IFRleHRJbnB1dFR5cGUsIGlucHV0bW9kZT86IElucHV0TW9kZSk6IElucHV0TW9kZSB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmIChpbnB1dG1vZGUpIHJldHVybiBpbnB1dG1vZGU7XG5cbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBURVhUX0lOUFVUX1RZUEUuVEVMOlxuICAgICAgcmV0dXJuIElOUFVUX01PREUuVEVMO1xuICAgIGNhc2UgVEVYVF9JTlBVVF9UWVBFLlNFQVJDSDpcbiAgICAgIHJldHVybiBJTlBVVF9NT0RFLlNFQVJDSDtcbiAgICBjYXNlIFRFWFRfSU5QVVRfVFlQRS5OVU1CRVI6XG4gICAgICByZXR1cm4gSU5QVVRfTU9ERS5OVU1FUklDO1xuICAgIGNhc2UgVEVYVF9JTlBVVF9UWVBFLkVNQUlMOlxuICAgICAgcmV0dXJuIElOUFVUX01PREUuRU1BSUw7XG4gICAgY2FzZSBURVhUX0lOUFVUX1RZUEUuVVJMOlxuICAgICAgcmV0dXJuIElOUFVUX01PREUuVVJMO1xuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn07XG4iLCI8c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmLCB3YXRjaCwgd2F0Y2hFZmZlY3QgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IFRpZGVJbnB1dFN1cHBvcnRpbmdUZXh0IGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSW5wdXRTdXBwb3J0aW5nVGV4dC52dWUnO1xuICBpbXBvcnQgeyB1c2VGb3JtQ29udGV4dCB9IGZyb20gJ0AvY29tcG9zYWJsZXMvdXNlVGlkZUZvcm0nO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgVEVYVF9JTlBVVF9UWVBFIH0gZnJvbSAnQC90eXBlcy9UZXh0SW5wdXQnO1xuICBpbXBvcnQgeyBFUlJPUl9ESVNQTEFZIH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uJztcbiAgaW1wb3J0IHsgZ2V0VGV4dElucHV0TW9kZSB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1zJztcbiAgaW1wb3J0IHsgVkFMSURBVElPTl9SRVNVTFQsIGdldEZpZWxkVmFsaWRhdGlvblJlc3VsdCB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24nO1xuXG4gIGltcG9ydCB0eXBlIHsgRm9ybVZhbHVlVHJhbnNmb3JtZXIgfSBmcm9tICdAL3R5cGVzL0Zvcm0nO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgdHlwZSB7IElucHV0TW9kZSwgVGV4dElucHV0VHlwZSB9IGZyb20gJ0AvdHlwZXMvVGV4dElucHV0JztcbiAgaW1wb3J0IHR5cGUgeyBFcnJvckRpc3BsYXksIFZhbGlkYXRpb25SZXN1bHQsIFZhbGlkYXRvciB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBhdXRvY29tcGxldGU/OiBib29sZWFuO1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBlcnJvcj86IHN0cmluZztcbiAgICBlcnJvckRpc3BsYXk/OiBFcnJvckRpc3BsYXk7XG4gICAgaGFzQ2xlYXI/OiBib29sZWFuO1xuICAgIGljb25MZWFkaW5nPzogSWNvbjtcbiAgICBpbnB1dElkPzogc3RyaW5nO1xuICAgIGlucHV0bW9kZT86IElucHV0TW9kZTtcbiAgICBsYWJlbD86IHN0cmluZztcbiAgICBtYXhsZW5ndGg/OiBudW1iZXI7XG4gICAgbWlubGVuZ3RoPzogbnVtYmVyO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgcHJlZml4Pzogc3RyaW5nO1xuICAgIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgICBzdWZmaXg/OiBzdHJpbmc7XG4gICAgc3VwcG9ydGluZ1RleHQ/OiBzdHJpbmc7XG4gICAgdHJhbnNmb3JtVmFsdWU/OiBGb3JtVmFsdWVUcmFuc2Zvcm1lcjtcbiAgICB0eXBlPzogVGV4dElucHV0VHlwZTtcbiAgICB2YWxpZGF0b3JzPzogVmFsaWRhdG9yW107XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBhdXRvY29tcGxldGU6IGZhbHNlLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlcnJvcjogJycsXG4gICAgZXJyb3JEaXNwbGF5OiBFUlJPUl9ESVNQTEFZLkxBWlksXG4gICAgaGFzQ2xlYXI6IGZhbHNlLFxuICAgIGljb25MZWFkaW5nOiB1bmRlZmluZWQsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGlucHV0bW9kZTogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbWF4bGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgbWlubGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgbmFtZTogdW5kZWZpbmVkLFxuICAgIHByZWZpeDogdW5kZWZpbmVkLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBzdWZmaXg6IHVuZGVmaW5lZCxcbiAgICBzdXBwb3J0aW5nVGV4dDogdW5kZWZpbmVkLFxuICAgIHRyYW5zZm9ybVZhbHVlOiB1bmRlZmluZWQsXG4gICAgdHlwZTogVEVYVF9JTlBVVF9UWVBFLlRFWFQsXG4gICAgdmFsaWRhdG9yczogdW5kZWZpbmVkLFxuICB9KTtcblxuICB0eXBlIEVtaXRzID0ge1xuICAgIChldmVudDogJ3ZhbGlkJywgaXNWYWxpZDogYm9vbGVhbik6IHZvaWQ7XG4gIH07XG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czxFbWl0cz4oKTtcblxuICBjb25zdCBtb2RlbFZhbHVlID0gZGVmaW5lTW9kZWw8c3RyaW5nPih7IHJlcXVpcmVkOiB0cnVlIH0pO1xuXG4gIGNvbnN0IGZvcm1Db250ZXh0ID0gdXNlRm9ybUNvbnRleHQoKTtcblxuICBjb25zdCBlcnJvclJlZiA9IHJlZjxWYWxpZGF0aW9uUmVzdWx0PihWQUxJREFUSU9OX1JFU1VMVC5OT19FUlJPUik7XG4gIGNvbnN0IGhhc0ZvY3VzID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgaW5wdXRFbGVtZW50ID0gcmVmPEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgaXNWYWxpZGF0aW5nID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3Qgc2hvd1Bhc3N3b3JkID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcblxuICBjb25zdCBmb3JtYXR0ZWRMYWJlbCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCAmJiBwcm9wcy5sYWJlbCA/IGAke3Byb3BzLmxhYmVsfSAqYCA6IHByb3BzLmxhYmVsKSk7XG4gIGNvbnN0IHNob3dFcnJvciA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAoaGFzRXJyb3JGcm9tUHJvcC52YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgaWYgKCFpc1ZhbGlkYXRpbmcudmFsdWUpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gIWVycm9yUmVmLnZhbHVlLnZhbGlkO1xuICB9KTtcbiAgY29uc3QgaGFzRXJyb3JGcm9tUHJvcCA9IGNvbXB1dGVkKCgpID0+IHByb3BzLmVycm9yICE9PSAnJyk7XG4gIGNvbnN0IGhhc01pbmlsYWJlbCA9IGNvbXB1dGVkKCgpID0+IGhhc0ZvY3VzLnZhbHVlIHx8ICFpc0VtcHR5LnZhbHVlKTtcbiAgY29uc3QgaW5wdXRNb2RlQXR0cmlidXRlID0gY29tcHV0ZWQ8SW5wdXRNb2RlIHwgdW5kZWZpbmVkPigoKSA9PiBnZXRUZXh0SW5wdXRNb2RlKHByb3BzLnR5cGUsIHByb3BzLmlucHV0bW9kZSkpO1xuICBjb25zdCBpbnB1dFR5cGUgPSBjb21wdXRlZCgoKSA9PlxuICAgIHByb3BzLnR5cGUgPT09IFRFWFRfSU5QVVRfVFlQRS5QQVNTV09SRCAmJiBzaG93UGFzc3dvcmQudmFsdWUgPT09IHRydWUgPyBURVhUX0lOUFVUX1RZUEUuVEVYVCA6IHByb3BzLnR5cGVcbiAgKTtcbiAgY29uc3QgaXNFbXB0eSA9IGNvbXB1dGVkKCgpID0+IG1vZGVsVmFsdWUudmFsdWUgPT09ICcnKTtcbiAgY29uc3Qgc2hvdWxkU2hvd0NsZWFyQnV0dG9uID0gY29tcHV0ZWQoXG4gICAgKCkgPT4gcHJvcHMuaGFzQ2xlYXIgJiYgbW9kZWxWYWx1ZS52YWx1ZSAmJiBwcm9wcy50eXBlICE9PSBURVhUX0lOUFVUX1RZUEUuUEFTU1dPUkRcbiAgKTtcbiAgY29uc3Qgc2hvdWxkU2hvd1Bhc3N3b3JkQnV0dG9uID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMudHlwZSA9PT0gVEVYVF9JTlBVVF9UWVBFLlBBU1NXT1JEKTtcbiAgY29uc3Qgc3VwcG9ydGluZ1RleHRNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4gKHNob3dFcnJvci52YWx1ZSAmJiBlcnJvclJlZi52YWx1ZS5tZXNzYWdlKSB8fCBwcm9wcy5zdXBwb3J0aW5nVGV4dCk7XG5cbiAgY29uc3QgaGFuZGxlQ2xlYXIgPSAoKSA9PiB7XG4gICAgbW9kZWxWYWx1ZS52YWx1ZSA9ICcnO1xuICAgIGlucHV0RWxlbWVudC52YWx1ZT8uZm9jdXMoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1cyA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IHRydWU7XG4gICAgaWYgKHByb3BzLmVycm9yRGlzcGxheSA9PT0gRVJST1JfRElTUExBWS5FQUdFUikgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c091dCA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IGZhbHNlO1xuICAgIGlmIChwcm9wcy5lcnJvckRpc3BsYXkgPT09IEVSUk9SX0RJU1BMQVkuTEFaWSkgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGaWVsZENsaWNrID0gKCkgPT4ge1xuICAgIGlucHV0RWxlbWVudC52YWx1ZT8uZm9jdXMoKTtcbiAgfTtcblxuICBjb25zdCBwcmV2ZW50SW5wdXRGb2N1c0xvc3NPbk1vdXNlZG93biA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgaWYgKCFoYXNGb2N1cy52YWx1ZSkgcmV0dXJuO1xuICAgIGlmIChlLnRhcmdldCAhPT0gaW5wdXRFbGVtZW50LnZhbHVlKSBlLnByZXZlbnREZWZhdWx0KCk7XG4gIH07XG5cbiAgd2F0Y2hFZmZlY3QoKCkgPT4ge1xuICAgIGVycm9yUmVmLnZhbHVlID0gZ2V0RmllbGRWYWxpZGF0aW9uUmVzdWx0KHtcbiAgICAgIGVycm9yRnJvbVByb3BzOiBwcm9wcy5lcnJvcixcbiAgICAgIG1heGxlbmd0aDogcHJvcHMubWF4bGVuZ3RoLFxuICAgICAgbWlubGVuZ3RoOiBwcm9wcy5taW5sZW5ndGgsXG4gICAgICByZXF1aXJlZDogcHJvcHMucmVxdWlyZWQsXG4gICAgICB2YWxpZGF0b3JzOiBwcm9wcy52YWxpZGF0b3JzLFxuICAgICAgdmFsdWU6IG1vZGVsVmFsdWUsXG4gICAgfSk7XG4gIH0pO1xuXG4gIHdhdGNoKFxuICAgIFttb2RlbFZhbHVlLCAoKSA9PiBwcm9wcy50cmFuc2Zvcm1WYWx1ZV0sXG4gICAgKCkgPT4ge1xuICAgICAgaWYgKCFwcm9wcy50cmFuc2Zvcm1WYWx1ZSkgcmV0dXJuO1xuXG4gICAgICBjb25zdCBkaWdpdHMgPSBtb2RlbFZhbHVlLnZhbHVlPy5tYXRjaCgvXFxkL2cpPy5qb2luKCcnKSB8fCB1bmRlZmluZWQ7XG4gICAgICBtb2RlbFZhbHVlLnZhbHVlID0gZGlnaXRzID8gcHJvcHMudHJhbnNmb3JtVmFsdWUoZGlnaXRzKSA6ICcnO1xuICAgIH0sXG4gICAgeyBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuXG4gIHdhdGNoKFxuICAgICgpID0+IGZvcm1Db250ZXh0Py5mb3JjZVNob3dFcnJvcnMudmFsdWUsXG4gICAgKG5ld1ZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUpIGlzVmFsaWRhdGluZy52YWx1ZSA9IHRydWU7XG4gICAgfSxcbiAgICB7IGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG5cbiAgd2F0Y2goXG4gICAgZXJyb3JSZWYsXG4gICAgKCkgPT4ge1xuICAgICAgZW1pdCgndmFsaWQnLCBlcnJvclJlZi52YWx1ZS52YWxpZCk7XG4gICAgfSxcbiAgICB7IGRlZXA6IHRydWUsIGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtaW5wdXQtdGV4dCcsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIGRpc2FibGVkICYmICdkaXNhYmxlZCcsXG4gICAgICBzaG93RXJyb3IgJiYgJ2Vycm9yJyxcbiAgICBdXCJcbiAgPlxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC10ZXh0LWZpZWxkJyxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgIENTUy5QQURESU5HLlkuSEFMRixcbiAgICAgICAgc2hvdWxkU2hvd0NsZWFyQnV0dG9uID8gW0NTUy5QQURESU5HLlJJR0hULkhBTEYsIENTUy5QQURESU5HLkxFRlQuT05FXSA6IFtDU1MuUEFERElORy5YLk9ORV0sXG4gICAgICAgIGRpc2FibGVkID8gQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCA6IENTUy5DVVJTT1IuVEVYVCxcbiAgICAgIF1cIlxuICAgICAgOmZvcj1cImlucHV0SWRcIlxuICAgICAgQGNsaWNrPVwiaGFuZGxlRmllbGRDbGlja1wiXG4gICAgICBAbW91c2Vkb3duPVwicHJldmVudElucHV0Rm9jdXNMb3NzT25Nb3VzZWRvd25cIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgIDppY29uPVwiaWNvbkxlYWRpbmdcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwiaWNvbkxlYWRpbmdcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuV0lEVEguRlVMTF1cIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLWlucHV0LXRleHQtcHJlZml4JyxcbiAgICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICAgICAgIXNob3dFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICBoYXNNaW5pbGFiZWwgPyAnJyA6ICdvZmZzZXQnLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIHYtaWY9XCJwcmVmaXhcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcHJlZml4IH19XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5XSURUSC5GVUxMXVwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dC1sYWJlbCcsXG4gICAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/IFsnbWluaWxhYmVsJywgQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXSA6IENTUy5GT05ULlJPTEUuTEFCRUxfMSxcbiAgICAgICAgICAgICAgIXNob3dFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICAgIENTUy5DVVJTT1IuVEVYVCxcbiAgICAgICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgICAgIF1cIlxuICAgICAgICAgICAgdi1pZj1cImxhYmVsXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICA6YXV0b2NvbXBsZXRlPVwiYXV0b2NvbXBsZXRlID8gJ29uJyA6ICdvZmYnXCJcbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsIGRpc2FibGVkICYmIENTUy5DVVJTT1IuTk9UX0FMTE9XRURdXCJcbiAgICAgICAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIDppbnB1dG1vZGU9XCJpbnB1dE1vZGVBdHRyaWJ1dGVcIlxuICAgICAgICAgICAgOm1heGxlbmd0aD1cIm1heGxlbmd0aFwiXG4gICAgICAgICAgICA6bWlubGVuZ3RoPVwibWlubGVuZ3RoXCJcbiAgICAgICAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICAgICAgICByZWY9XCJpbnB1dEVsZW1lbnRcIlxuICAgICAgICAgICAgOnJlcXVpcmVkPVwicmVxdWlyZWRcIlxuICAgICAgICAgICAgOnR5cGU9XCJpbnB1dFR5cGVcIlxuICAgICAgICAgICAgQGZvY3VzPVwiaGFuZGxlRm9jdXNcIlxuICAgICAgICAgICAgQGZvY3Vzb3V0PVwiaGFuZGxlRm9jdXNPdXRcIlxuICAgICAgICAgICAgOmlkPVwiaW5wdXRJZFwiXG4gICAgICAgICAgICB2LW1vZGVsPVwibW9kZWxWYWx1ZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLWlucHV0LXRleHQtc3VmZml4JyxcbiAgICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICAgICAgIXNob3dFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICBoYXNNaW5pbGFiZWwgPyAnJyA6ICdvZmZzZXQnLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIHYtaWY9XCJzdWZmaXhcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgc3VmZml4IH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxidXR0b25cbiAgICAgICAgQGNsaWNrPVwiaGFuZGxlQ2xlYXJcIlxuICAgICAgICB2LWlmPVwic2hvdWxkU2hvd0NsZWFyQnV0dG9uXCJcbiAgICAgID5cbiAgICAgICAgPFRpZGVJY29uXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5NQVJHSU4uRlVMTC5IQUxGXVwiXG4gICAgICAgICAgOmljb249XCJJQ09OLkNMT1NFXCJcbiAgICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICAvPlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDxidXR0b25cbiAgICAgICAgQGNsaWNrPVwic2hvd1Bhc3N3b3JkID0gIXNob3dQYXNzd29yZFwiXG4gICAgICAgIHYtaWY9XCJzaG91bGRTaG93UGFzc3dvcmRCdXR0b25cIlxuICAgICAgPlxuICAgICAgICA8VGlkZUljb25cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5GVUxMLkhBTEZdXCJcbiAgICAgICAgICA6aWNvbj1cIklDT04uVklTSUJJTElUWVwiXG4gICAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgLz5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbGFiZWw+XG5cbiAgICA8VGlkZUlucHV0U3VwcG9ydGluZ1RleHRcbiAgICAgIDppcy1lcnJvcj1cInNob3dFcnJvclwiXG4gICAgICA6bWVzc2FnZT1cInN1cHBvcnRpbmdUZXh0TWVzc2FnZVwiXG4gICAgICB2LWlmPVwic3VwcG9ydGluZ1RleHRNZXNzYWdlXCJcbiAgICAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWlucHV0LXRleHQtbGFiZWwge1xuICAgIGhlaWdodDogMS4xODc1cmVtO1xuICAgIHRyYW5zaXRpb246IGZvbnQtc2l6ZSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQtbGFiZWw6bm90KC5taW5pbGFiZWwpLFxuICAudGlkZS1pbnB1dC10ZXh0LXByZWZpeDpub3QoLm9mZnNldCksXG4gIC50aWRlLWlucHV0LXRleHQtc3VmZml4Om5vdCgub2Zmc2V0KSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgY2FsYyg5IC8gMTYgKiAxcmVtKSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LXByZWZpeCxcbiAgLnRpZGUtaW5wdXQtdGV4dC1zdWZmaXgge1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogdmFyKC0tdGlkZS1kaXNhYmxlZCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmVycm9yIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1lcnJvci1wcmltYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZXJyb3IgLnRpZGUtaW5wdXQtdGV4dC1maWVsZCB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtZXJyb3Itc3VyZmFjZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmVycm9yOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC10ZXh0LWZpZWxkIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0OmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC10ZXh0LWZpZWxkIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMik7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQgaW5wdXQge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LWZpZWxkIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMSk7XG4gICAgb3V0bGluZTogdmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSBzb2xpZCB2YXIoLS10aWRlLWJvcmRlcik7XG4gICAgb3V0bGluZS1vZmZzZXQ6IGNhbGModmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSAqIC0xKTtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLWZvcmVncm91bmQpO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgVGlkZUlucHV0VGV4dC52dWVgIGltcG9ydGVkIGZyb20gJ3RpZGUtZGVzaWduLXN5c3RlbScgbnBtIHBhY2thZ2UgaW5zdGVhZC5cbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBURVhUX0lOUFVUX1RZUEUgfSBmcm9tICdAL3R5cGVzL1RleHRJbnB1dCc7XG4gIGltcG9ydCB7IGdldEVycm9yTWVzc2FnZSwgZ2V0RmllbGRIYXNFcnJvciwgaGFuZGxlRmllbGRWYWxpZGF0aW9uIH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbi1kZXByZWNhdGVkJztcblxuICBpbXBvcnQgdHlwZSB7IEZvcm1WYWx1ZVRyYW5zZm9ybWVyIH0gZnJvbSAnQC90eXBlcy9Gb3JtRGVwcmVjYXRlZCc7XG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB0eXBlIHsgVGV4dElucHV0VHlwZSB9IGZyb20gJ0AvdHlwZXMvVGV4dElucHV0JztcbiAgaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uRXJyb3IsIFZhbGlkYXRvciB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbkRlcHJlY2F0ZWQnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgYXV0b2NvbXBsZXRlPzogYm9vbGVhbjtcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgZXJyb3I/OiBWYWxpZGF0aW9uRXJyb3I7XG4gICAgaGFzQ2xlYXI/OiBib29sZWFuO1xuICAgIGljb25MZWFkaW5nPzogSWNvbjtcbiAgICBpbnB1dElkPzogc3RyaW5nO1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIG1heGxlbmd0aD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBtaW5sZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICBwcmVmaXg/OiBzdHJpbmc7XG4gICAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICAgIHN1ZmZpeD86IHN0cmluZztcbiAgICBzdXBwb3J0aW5nVGV4dD86IHN0cmluZztcbiAgICB0cmFuc2Zvcm1WYWx1ZT86IEZvcm1WYWx1ZVRyYW5zZm9ybWVyO1xuICAgIHR5cGU/OiBUZXh0SW5wdXRUeXBlO1xuICAgIHZhbGlkYXRvcnM/OiBWYWxpZGF0b3JbXTtcbiAgICB2YWx1ZT86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGF1dG9jb21wbGV0ZTogZmFsc2UsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGVycm9yOiBmYWxzZSxcbiAgICBoYXNDbGVhcjogZmFsc2UsXG4gICAgaWNvbkxlYWRpbmc6IHVuZGVmaW5lZCxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBtYXhsZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBtaW5sZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBuYW1lOiB1bmRlZmluZWQsXG4gICAgcHJlZml4OiB1bmRlZmluZWQsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHN1ZmZpeDogdW5kZWZpbmVkLFxuICAgIHN1cHBvcnRpbmdUZXh0OiB1bmRlZmluZWQsXG4gICAgdHJhbnNmb3JtVmFsdWU6IHVuZGVmaW5lZCxcbiAgICB0eXBlOiBURVhUX0lOUFVUX1RZUEUuVEVYVCxcbiAgICB2YWxpZGF0b3JzOiB1bmRlZmluZWQsXG4gICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgZXJyb3IgPSByZWYocHJvcHMuZXJyb3IpO1xuICBjb25zdCBoYXNGb2N1cyA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IGlucHV0ID0gcmVmPEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3Qgc2hvd1Bhc3N3b3JkID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgdmFsdWUgPSByZWYocHJvcHMudmFsdWUpO1xuXG4gIGNvbnN0IGVycm9yTWVzc2FnZSA9IGNvbXB1dGVkKCgpID0+IGdldEVycm9yTWVzc2FnZShwcm9wcy5lcnJvciwgZXJyb3IudmFsdWUpKTtcbiAgY29uc3QgZm9ybWF0dGVkTGFiZWwgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgJiYgcHJvcHMubGFiZWwgPyBgJHtwcm9wcy5sYWJlbH0gKmAgOiBwcm9wcy5sYWJlbCkpO1xuICBjb25zdCBoYXNDbGVhciA9IGNvbXB1dGVkKCgpID0+IHByb3BzLmhhc0NsZWFyICYmIHZhbHVlLnZhbHVlKTtcbiAgY29uc3QgaGFzRXJyb3IgPSBjb21wdXRlZChcbiAgICAoKSA9PiAocHJvcHMucmVxdWlyZWQgJiYgdmFsdWUudmFsdWUgIT09IHVuZGVmaW5lZCAmJiAhdmFsdWUudmFsdWUpIHx8IGdldEZpZWxkSGFzRXJyb3IoZXJyb3IudmFsdWUsIHByb3BzLmVycm9yKVxuICApO1xuICBjb25zdCBoYXNNaW5pbGFiZWwgPSBjb21wdXRlZCgoKSA9PiBoYXNGb2N1cy52YWx1ZSB8fCAhaXNFbXB0eS52YWx1ZSk7XG4gIGNvbnN0IGlzRW1wdHkgPSBjb21wdXRlZCgoKSA9PiB2YWx1ZS52YWx1ZSA9PT0gJycgfHwgdmFsdWUudmFsdWUgPT09IHVuZGVmaW5lZCk7XG4gIGNvbnN0IGlucHV0VHlwZSA9IGNvbXB1dGVkKCgpID0+XG4gICAgcHJvcHMudHlwZSA9PT0gVEVYVF9JTlBVVF9UWVBFLlBBU1NXT1JEICYmIHNob3dQYXNzd29yZC52YWx1ZSA9PT0gdHJ1ZSA/IFRFWFRfSU5QVVRfVFlQRS5URVhUIDogcHJvcHMudHlwZVxuICApO1xuXG4gIGNvbnN0IGhhbmRsZUNsZWFyID0gKCkgPT4ge1xuICAgIHZhbHVlLnZhbHVlID0gJyc7XG4gICAgaW5wdXQudmFsdWU/LmZvY3VzKCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXMgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzT3V0ID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gZmFsc2U7XG5cbiAgICBpZiAoIXZhbHVlLnZhbHVlKSB7XG4gICAgICB2YWx1ZS52YWx1ZSA9ICcnO1xuICAgIH1cblxuICAgIGhhbmRsZVZhbGlkYXRpb24oKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVJbnB1dCA9ICgpID0+IHtcbiAgICBpZiAocHJvcHMudHJhbnNmb3JtVmFsdWUpIHtcbiAgICAgIGNvbnN0IGRpZ2l0cyA9IHZhbHVlLnZhbHVlPy5tYXRjaCgvXFxkL2cpPy5qb2luKCcnKSB8fCB1bmRlZmluZWQ7XG5cbiAgICAgIHZhbHVlLnZhbHVlID0gZGlnaXRzID8gcHJvcHMudHJhbnNmb3JtVmFsdWUoZGlnaXRzKSA6ICcnO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVWYWxpZGF0aW9uID0gKCkgPT4ge1xuICAgIGhhbmRsZUZpZWxkVmFsaWRhdGlvbih7XG4gICAgICBlcnJvcixcbiAgICAgIGVycm9yRnJvbVByb3BzOiBwcm9wcy5lcnJvcixcbiAgICAgIG1heGxlbmd0aDogcHJvcHMubWF4bGVuZ3RoLFxuICAgICAgbWlubGVuZ3RoOiBwcm9wcy5taW5sZW5ndGgsXG4gICAgICByZXF1aXJlZDogcHJvcHMucmVxdWlyZWQsXG4gICAgICB2YWxpZGF0b3JzOiBwcm9wcy52YWxpZGF0b3JzLFxuICAgICAgdmFsdWUsXG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgdXBkYXRlVmFsdWUgPSAobmV3VmFsdWU6IHN0cmluZykgPT4ge1xuICAgIHZhbHVlLnZhbHVlID0gbmV3VmFsdWU7XG4gIH07XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMudmFsdWUsXG4gICAgKG5ld1ZhbHVlLCBvbGRWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlICE9PSBvbGRWYWx1ZSB8fCBuZXdWYWx1ZSAhPT0gdmFsdWUudmFsdWUpIHtcbiAgICAgICAgdmFsdWUudmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICk7XG5cbiAgZGVmaW5lRXhwb3NlKHtcbiAgICBlcnJvcixcbiAgICByZXF1aXJlZDogcHJvcHMucmVxdWlyZWQsXG4gICAgdXBkYXRlVmFsdWUsXG4gICAgdmFsdWUsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWlucHV0LXRleHQnLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBkaXNhYmxlZCAmJiAnZGlzYWJsZWQnLFxuICAgICAgaGFzRXJyb3IgJiYgJ2Vycm9yJyxcbiAgICBdXCJcbiAgPlxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC10ZXh0LWZpZWxkJyxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgIGhhc0NsZWFyID8gW0NTUy5QQURESU5HLlJJR0hULkhBTEYsIENTUy5QQURESU5HLkxFRlQuT05FXSA6IFtDU1MuUEFERElORy5YLk9ORV0sXG4gICAgICAgIENTUy5QQURESU5HLlkuSEFMRixcbiAgICAgICAgZGlzYWJsZWQgPyBDU1MuQ1VSU09SLk5PVF9BTExPV0VEIDogQ1NTLkNVUlNPUi5URVhULFxuICAgICAgXVwiXG4gICAgICA6Zm9yPVwiaW5wdXRJZFwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgOmljb249XCJpY29uTGVhZGluZ1wiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIHYtaWY9XCJpY29uTGVhZGluZ1wiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVIsIENTUy5XSURUSC5GVUxMXVwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dC1wcmVmaXgnLFxuICAgICAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgICAgICAhaGFzRXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgICAgaGFzTWluaWxhYmVsID8gJycgOiAnb2Zmc2V0JyxcbiAgICAgICAgICBdXCJcbiAgICAgICAgICB2LWlmPVwicHJlZml4XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHByZWZpeCB9fVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuV0lEVEguRlVMTF1cIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAgICd0aWRlLWlucHV0LXRleHQtbGFiZWwnLFxuICAgICAgICAgICAgICBoYXNNaW5pbGFiZWwgPyBbJ21pbmlsYWJlbCcsIENTUy5GT05ULlJPTEUuTEFCRUxfM10gOiBDU1MuRk9OVC5ST0xFLkxBQkVMXzEsXG4gICAgICAgICAgICAgICFoYXNFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICAgIENTUy5DVVJTT1IuVEVYVCxcbiAgICAgICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgICAgIF1cIlxuICAgICAgICAgICAgdi1pZj1cImxhYmVsXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICA6YXV0b2NvbXBsZXRlPVwiYXV0b2NvbXBsZXRlID8gJ29uJyA6ICdvZmYnXCJcbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgZGlzYWJsZWQgJiYgQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCwgQ1NTLkZPTlQuUk9MRS5CT0RZXzFdXCJcbiAgICAgICAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIDptYXhsZW5ndGg9XCJtYXhsZW5ndGhcIlxuICAgICAgICAgICAgOm1pbmxlbmd0aD1cIm1pbmxlbmd0aFwiXG4gICAgICAgICAgICA6bmFtZT1cIm5hbWVcIlxuICAgICAgICAgICAgcmVmPVwiaW5wdXRcIlxuICAgICAgICAgICAgOnJlcXVpcmVkPVwicmVxdWlyZWRcIlxuICAgICAgICAgICAgOnR5cGU9XCJpbnB1dFR5cGVcIlxuICAgICAgICAgICAgQGNoYW5nZT1cImhhbmRsZVZhbGlkYXRpb25cIlxuICAgICAgICAgICAgQGZvY3VzPVwiaGFuZGxlRm9jdXNcIlxuICAgICAgICAgICAgQGZvY3Vzb3V0PVwiaGFuZGxlRm9jdXNPdXRcIlxuICAgICAgICAgICAgQGlucHV0PVwiaGFuZGxlSW5wdXRcIlxuICAgICAgICAgICAgOmlkPVwiaW5wdXRJZFwiXG4gICAgICAgICAgICB2LW1vZGVsPVwidmFsdWVcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAndGlkZS1pbnB1dC10ZXh0LXN1ZmZpeCcsXG4gICAgICAgICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMSxcbiAgICAgICAgICAgICFoYXNFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICBoYXNNaW5pbGFiZWwgPyAnJyA6ICdvZmZzZXQnLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIHYtaWY9XCJzdWZmaXhcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgc3VmZml4IH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxidXR0b25cbiAgICAgICAgQGNsaWNrPVwiaGFuZGxlQ2xlYXJcIlxuICAgICAgICB2LWlmPVwiaGFzQ2xlYXIgJiYgdHlwZSAhPT0gVEVYVF9JTlBVVF9UWVBFLlBBU1NXT1JEXCJcbiAgICAgID5cbiAgICAgICAgPFRpZGVJY29uXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5NQVJHSU4uRlVMTC5IQUxGXVwiXG4gICAgICAgICAgOmljb249XCJJQ09OLkNMT1NFXCJcbiAgICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICAvPlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDxidXR0b25cbiAgICAgICAgQGNsaWNrPVwic2hvd1Bhc3N3b3JkID0gIXNob3dQYXNzd29yZFwiXG4gICAgICAgIHYtaWY9XCJ0eXBlID09PSBURVhUX0lOUFVUX1RZUEUuUEFTU1dPUkRcIlxuICAgICAgPlxuICAgICAgICA8VGlkZUljb25cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5GVUxMLkhBTEZdXCJcbiAgICAgICAgICA6aWNvbj1cIklDT04uVklTSUJJTElUWVwiXG4gICAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgLz5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbGFiZWw+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSXVwiXG4gICAgICB2LWlmPVwic3VwcG9ydGluZ1RleHQgfHwgaGFzRXJyb3JcIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbXVwiXG4gICAgICAgIDppY29uPVwiSUNPTi5FUlJPUlwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIHYtaWY9XCJoYXNFcnJvclwiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzNdXCI+XG4gICAgICAgIHt7IGhhc0Vycm9yID8gZXJyb3JNZXNzYWdlIDogc3VwcG9ydGluZ1RleHQgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWlucHV0LXRleHQtbGFiZWwge1xuICAgIGhlaWdodDogMS4xODc1cmVtO1xuICAgIHRyYW5zaXRpb246IGZvbnQtc2l6ZSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQtbGFiZWw6bm90KC5taW5pbGFiZWwpLFxuICAudGlkZS1pbnB1dC10ZXh0LXByZWZpeDpub3QoLm9mZnNldCksXG4gIC50aWRlLWlucHV0LXRleHQtc3VmZml4Om5vdCgub2Zmc2V0KSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgY2FsYyg5IC8gMTYgKiAxcmVtKSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LXByZWZpeCxcbiAgLnRpZGUtaW5wdXQtdGV4dC1zdWZmaXgge1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogdmFyKC0tdGlkZS1kaXNhYmxlZCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmVycm9yIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1lcnJvci1wcmltYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZXJyb3IgLnRpZGUtaW5wdXQtdGV4dC1maWVsZCB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtZXJyb3Itc3VyZmFjZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmVycm9yOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC10ZXh0LWZpZWxkIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0OmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC10ZXh0LWZpZWxkIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMik7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQgaW5wdXQge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LWZpZWxkIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMSk7XG4gICAgb3V0bGluZTogdmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSBzb2xpZCB2YXIoLS10aWRlLWJvcmRlcik7XG4gICAgb3V0bGluZS1vZmZzZXQ6IGNhbGModmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSAqIC0xKTtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLWZvcmVncm91bmQpO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIHJlZiwgd2F0Y2gsIHdhdGNoRWZmZWN0IH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUlucHV0U3VwcG9ydGluZ1RleHQgZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJbnB1dFN1cHBvcnRpbmdUZXh0LnZ1ZSc7XG4gIGltcG9ydCB7IHVzZUZvcm1Db250ZXh0IH0gZnJvbSAnQC9jb21wb3NhYmxlcy91c2VUaWRlRm9ybSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgRVJST1JfRElTUExBWSB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbic7XG4gIGltcG9ydCB7IFZBTElEQVRJT05fUkVTVUxULCBnZXRGaWVsZFZhbGlkYXRpb25SZXN1bHQgfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uJztcblxuICBpbXBvcnQgdHlwZSB7IEVycm9yRGlzcGxheSwgVmFsaWRhdGlvblJlc3VsdCwgVmFsaWRhdG9yIH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGVycm9yPzogc3RyaW5nO1xuICAgIGVycm9yRGlzcGxheT86IEVycm9yRGlzcGxheTtcbiAgICBpbnB1dElkPzogc3RyaW5nO1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIG1heGxlbmd0aD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBtaW5sZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICByZXF1aXJlZD86IGJvb2xlYW47XG4gICAgcm93cz86IG51bWJlcjtcbiAgICBzdXBwb3J0aW5nVGV4dD86IHN0cmluZztcbiAgICB2YWxpZGF0b3JzPzogVmFsaWRhdG9yW107XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBlcnJvcjogJycsXG4gICAgZXJyb3JEaXNwbGF5OiBFUlJPUl9ESVNQTEFZLkxBWlksXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbWF4bGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgbWlubGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgbmFtZTogdW5kZWZpbmVkLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICByb3dzOiA4LFxuICAgIHN1cHBvcnRpbmdUZXh0OiB1bmRlZmluZWQsXG4gICAgdmFsaWRhdG9yczogdW5kZWZpbmVkLFxuICB9KTtcblxuICB0eXBlIEVtaXRzID0ge1xuICAgIChldmVudDogJ3ZhbGlkJywgaXNWYWxpZDogYm9vbGVhbik6IHZvaWQ7XG4gIH07XG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czxFbWl0cz4oKTtcblxuICBjb25zdCBtb2RlbFZhbHVlID0gZGVmaW5lTW9kZWw8c3RyaW5nPih7IHJlcXVpcmVkOiB0cnVlIH0pO1xuXG4gIGNvbnN0IGZvcm1Db250ZXh0ID0gdXNlRm9ybUNvbnRleHQoKTtcblxuICBjb25zdCBlcnJvclJlZiA9IHJlZjxWYWxpZGF0aW9uUmVzdWx0PihWQUxJREFUSU9OX1JFU1VMVC5OT19FUlJPUik7XG4gIGNvbnN0IGhhc0ZvY3VzID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgaXNWYWxpZGF0aW5nID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgdGV4dGFyZWFFbGVtZW50ID0gcmVmPEhUTUxUZXh0QXJlYUVsZW1lbnQgfCBudWxsPihudWxsKTtcblxuICBjb25zdCBmb3JtYXR0ZWRMYWJlbCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCA/IGAke3Byb3BzLmxhYmVsfSAqYCA6IHByb3BzLmxhYmVsKSk7XG4gIGNvbnN0IHNob3dFcnJvciA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAoaGFzRXJyb3JGcm9tUHJvcC52YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgaWYgKCFpc1ZhbGlkYXRpbmcudmFsdWUpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gIWVycm9yUmVmLnZhbHVlLnZhbGlkO1xuICB9KTtcbiAgY29uc3QgaGFzRXJyb3JGcm9tUHJvcCA9IGNvbXB1dGVkKCgpID0+IHByb3BzLmVycm9yICE9PSAnJyk7XG4gIGNvbnN0IGhhc01pbmlsYWJlbCA9IGNvbXB1dGVkKCgpID0+IGhhc0ZvY3VzLnZhbHVlIHx8ICFpc0VtcHR5LnZhbHVlKTtcbiAgY29uc3QgaXNFbXB0eSA9IGNvbXB1dGVkKCgpID0+IG1vZGVsVmFsdWUudmFsdWUgPT09ICcnKTtcbiAgY29uc3Qgc3VwcG9ydGluZ1RleHRNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4gKHNob3dFcnJvci52YWx1ZSAmJiBlcnJvclJlZi52YWx1ZS5tZXNzYWdlKSB8fCBwcm9wcy5zdXBwb3J0aW5nVGV4dCk7XG5cbiAgY29uc3QgaGFuZGxlRm9jdXMgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSB0cnVlO1xuICAgIGlmIChwcm9wcy5lcnJvckRpc3BsYXkgPT09IEVSUk9SX0RJU1BMQVkuRUFHRVIpIGlzVmFsaWRhdGluZy52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXNPdXQgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSBmYWxzZTtcbiAgICBpZiAocHJvcHMuZXJyb3JEaXNwbGF5ID09PSBFUlJPUl9ESVNQTEFZLkxBWlkpIGlzVmFsaWRhdGluZy52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRmllbGRDbGljayA9ICgpID0+IHtcbiAgICB0ZXh0YXJlYUVsZW1lbnQudmFsdWU/LmZvY3VzKCk7XG4gIH07XG5cbiAgY29uc3QgcHJldmVudFRleHRhcmVhRm9jdXNMb3NzT25Nb3VzZWRvd24gPSAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgIGlmICghaGFzRm9jdXMudmFsdWUpIHJldHVybjtcbiAgICBpZiAoZS50YXJnZXQgIT09IHRleHRhcmVhRWxlbWVudC52YWx1ZSkgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICB9O1xuXG4gIHdhdGNoRWZmZWN0KCgpID0+IHtcbiAgICBlcnJvclJlZi52YWx1ZSA9IGdldEZpZWxkVmFsaWRhdGlvblJlc3VsdCh7XG4gICAgICBlcnJvckZyb21Qcm9wczogcHJvcHMuZXJyb3IsXG4gICAgICBtYXhsZW5ndGg6IHByb3BzLm1heGxlbmd0aCxcbiAgICAgIG1pbmxlbmd0aDogcHJvcHMubWlubGVuZ3RoLFxuICAgICAgcmVxdWlyZWQ6IHByb3BzLnJlcXVpcmVkLFxuICAgICAgdmFsaWRhdG9yczogcHJvcHMudmFsaWRhdG9ycyxcbiAgICAgIHZhbHVlOiBtb2RlbFZhbHVlLFxuICAgIH0pO1xuICB9KTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBmb3JtQ29udGV4dD8uZm9yY2VTaG93RXJyb3JzLnZhbHVlLFxuICAgIChuZXdWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlKSBpc1ZhbGlkYXRpbmcudmFsdWUgPSB0cnVlO1xuICAgIH0sXG4gICAgeyBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuXG4gIHdhdGNoKFxuICAgIGVycm9yUmVmLFxuICAgICgpID0+IHtcbiAgICAgIGVtaXQoJ3ZhbGlkJywgZXJyb3JSZWYudmFsdWUudmFsaWQpO1xuICAgIH0sXG4gICAgeyBkZWVwOiB0cnVlLCBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIlsndGlkZS1pbnB1dC10ZXh0YXJlYScsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5HQVAuUVVBUlRFUiwgc2hvd0Vycm9yICYmICdlcnJvciddXCJcbiAgPlxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCcsXG4gICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgICBDU1MuUEFERElORy5MRUZULk9ORSxcbiAgICAgICAgQ1NTLlBBRERJTkcuVE9QLkhBTEYsXG4gICAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgIENTUy5DVVJTT1IuVEVYVCxcbiAgICAgIF1cIlxuICAgICAgOmZvcj1cImlucHV0SWRcIlxuICAgICAgQGNsaWNrPVwiaGFuZGxlRmllbGRDbGlja1wiXG4gICAgICBAbW91c2Vkb3duPVwicHJldmVudFRleHRhcmVhRm9jdXNMb3NzT25Nb3VzZWRvd25cIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLWlucHV0LXRleHRhcmVhLWxhYmVsJyxcbiAgICAgICAgICBoYXNNaW5pbGFiZWwgPyBbJ21pbmlsYWJlbCcsIENTUy5GT05ULlJPTEUuTEFCRUxfM10gOiBDU1MuRk9OVC5ST0xFLkxBQkVMXzEsXG4gICAgICAgICAgIXNob3dFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgXVwiXG4gICAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgICA+XG4gICAgICAgIHt7IGZvcm1hdHRlZExhYmVsIH19XG4gICAgICA8L2Rpdj5cblxuICAgICAgPHRleHRhcmVhXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5CTE9DSywgQ1NTLldJRFRILkZVTEwsIENTUy5GT05ULlJPTEUuQk9EWV8xXVwiXG4gICAgICAgIDptYXhsZW5ndGg9XCJtYXhsZW5ndGhcIlxuICAgICAgICA6bWlubGVuZ3RoPVwibWlubGVuZ3RoXCJcbiAgICAgICAgOm5hbWU9XCJuYW1lXCJcbiAgICAgICAgcmVmPVwidGV4dGFyZWFFbGVtZW50XCJcbiAgICAgICAgOnJlcXVpcmVkPVwicmVxdWlyZWRcIlxuICAgICAgICA6cm93cz1cInJvd3NcIlxuICAgICAgICBAZm9jdXM9XCJoYW5kbGVGb2N1c1wiXG4gICAgICAgIEBmb2N1c291dD1cImhhbmRsZUZvY3VzT3V0XCJcbiAgICAgICAgOmlkPVwiaW5wdXRJZFwiXG4gICAgICAgIHYtbW9kZWw9XCJtb2RlbFZhbHVlXCJcbiAgICAgIC8+XG4gICAgPC9sYWJlbD5cblxuICAgIDxUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dFxuICAgICAgOmlzLWVycm9yPVwic2hvd0Vycm9yXCJcbiAgICAgIDptZXNzYWdlPVwic3VwcG9ydGluZ1RleHRNZXNzYWdlXCJcbiAgICAgIHYtaWY9XCJzdXBwb3J0aW5nVGV4dE1lc3NhZ2VcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgdGV4dGFyZWEge1xuICAgIHJlc2l6ZTogdmVydGljYWw7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS1sYWJlbCB7XG4gICAgaGVpZ2h0OiAxLjE4NzVyZW07XG4gICAgdHJhbnNpdGlvbjogZm9udC1zaXplIHZhcigtLXRpZGUtYW5pbWF0ZSksIHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEuZXJyb3Ige1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXByaW1hcnkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEuZXJyb3IgLnRpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXN1cmZhY2UpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEuZXJyb3I6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYTpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0yKTtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtYm9yZGVyLWhpZ2gpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEgdGV4dGFyZWEge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTEpO1xuICAgIG91dGxpbmU6IHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgc29saWQgdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiBjYWxjKHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgKiAtMSk7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS1mb3JlZ3JvdW5kKTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYFRpZGVJbnB1dFRleHRhcmVhLnZ1ZWAgaW1wb3J0ZWQgZnJvbSAndGlkZS1kZXNpZ24tc3lzdGVtJyBucG0gcGFja2FnZSBpbnN0ZWFkLlxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IGdldEVycm9yTWVzc2FnZSwgZ2V0RmllbGRIYXNFcnJvciwgaGFuZGxlRmllbGRWYWxpZGF0aW9uIH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbi1kZXByZWNhdGVkJztcblxuICBpbXBvcnQgdHlwZSB7IFZhbGlkYXRpb25FcnJvciB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbkRlcHJlY2F0ZWQnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgZXJyb3I/OiBWYWxpZGF0aW9uRXJyb3I7XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBsYWJlbD86IHN0cmluZztcbiAgICBtYXhsZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgbWlubGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICAgIHJvd3M/OiBudW1iZXI7XG4gICAgc3VwcG9ydGluZ1RleHQ/OiBzdHJpbmc7XG4gICAgdmFsdWU/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBlcnJvcjogZmFsc2UsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbWF4bGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgbWlubGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgbmFtZTogdW5kZWZpbmVkLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICByb3dzOiA4LFxuICAgIHN1cHBvcnRpbmdUZXh0OiB1bmRlZmluZWQsXG4gICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgZXJyb3IgPSByZWYocHJvcHMuZXJyb3IpO1xuICBjb25zdCBoYXNGb2N1cyA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IGlucHV0ID0gcmVmPEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgdmFsdWUgPSByZWYocHJvcHMudmFsdWUpO1xuXG4gIGNvbnN0IGVycm9yTWVzc2FnZSA9IGNvbXB1dGVkKCgpID0+IGdldEVycm9yTWVzc2FnZShwcm9wcy5lcnJvciwgZXJyb3IudmFsdWUpKTtcbiAgY29uc3QgZm9ybWF0dGVkTGFiZWwgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgPyBgJHtwcm9wcy5sYWJlbH0gKmAgOiBwcm9wcy5sYWJlbCkpO1xuICBjb25zdCBoYXNFcnJvciA9IGNvbXB1dGVkKFxuICAgICgpID0+IChwcm9wcy5yZXF1aXJlZCAmJiB2YWx1ZS52YWx1ZSAhPT0gdW5kZWZpbmVkICYmICF2YWx1ZS52YWx1ZSkgfHwgZ2V0RmllbGRIYXNFcnJvcihlcnJvci52YWx1ZSwgcHJvcHMuZXJyb3IpXG4gICk7XG4gIGNvbnN0IGhhc01pbmlsYWJlbCA9IGNvbXB1dGVkKCgpID0+IGhhc0ZvY3VzLnZhbHVlIHx8ICFpc0VtcHR5LnZhbHVlKTtcbiAgY29uc3QgaXNFbXB0eSA9IGNvbXB1dGVkKCgpID0+IHZhbHVlLnZhbHVlID09PSAnJyB8fCB2YWx1ZS52YWx1ZSA9PT0gdW5kZWZpbmVkKTtcblxuICBjb25zdCBoYW5kbGVGb2N1cyA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXNPdXQgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSBmYWxzZTtcblxuICAgIGlmICghdmFsdWUudmFsdWUpIHtcbiAgICAgIHZhbHVlLnZhbHVlID0gJyc7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVZhbGlkYXRpb24gPSAoKSA9PiB7XG4gICAgcmV0dXJuIGhhbmRsZUZpZWxkVmFsaWRhdGlvbih7XG4gICAgICBlcnJvcixcbiAgICAgIGVycm9yRnJvbVByb3BzOiBwcm9wcy5lcnJvcixcbiAgICAgIG1heGxlbmd0aDogcHJvcHMubWF4bGVuZ3RoLFxuICAgICAgbWlubGVuZ3RoOiBwcm9wcy5taW5sZW5ndGgsXG4gICAgICByZXF1aXJlZDogcHJvcHMucmVxdWlyZWQsXG4gICAgICB2YWx1ZSxcbiAgICB9KTtcbiAgfTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy52YWx1ZSxcbiAgICAobmV3VmFsdWUsIG9sZFZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUgIT09IG9sZFZhbHVlIHx8IG5ld1ZhbHVlICE9PSB2YWx1ZS52YWx1ZSkge1xuICAgICAgICB2YWx1ZS52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgKTtcblxuICBkZWZpbmVFeHBvc2Uoe1xuICAgIGVycm9yLFxuICAgIHJlcXVpcmVkOiBwcm9wcy5yZXF1aXJlZCxcbiAgICB2YWx1ZSxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiWyd0aWRlLWlucHV0LXRleHRhcmVhJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLkdBUC5RVUFSVEVSLCBoYXNFcnJvciAmJiAnZXJyb3InXVwiXG4gID5cbiAgICA8bGFiZWxcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQnLFxuICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgICAgQ1NTLlBBRERJTkcuTEVGVC5PTkUsXG4gICAgICAgIENTUy5QQURESU5HLlRPUC5IQUxGLFxuICAgICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBDU1MuQ1VSU09SLlRFWFQsXG4gICAgICBdXCJcbiAgICAgIDpmb3I9XCJpbnB1dElkXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1pbnB1dC10ZXh0YXJlYS1sYWJlbCcsXG4gICAgICAgICAgaGFzTWluaWxhYmVsID8gWydtaW5pbGFiZWwnLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzNdIDogQ1NTLkZPTlQuUk9MRS5MQUJFTF8xLFxuICAgICAgICAgICFoYXNFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgXVwiXG4gICAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgICA+XG4gICAgICAgIHt7IGZvcm1hdHRlZExhYmVsIH19XG4gICAgICA8L2Rpdj5cblxuICAgICAgPHRleHRhcmVhXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5CTE9DSywgQ1NTLldJRFRILkZVTEwsIENTUy5GT05ULlJPTEUuQk9EWV8xXVwiXG4gICAgICAgIDptYXhsZW5ndGg9XCJtYXhsZW5ndGhcIlxuICAgICAgICA6bWlubGVuZ3RoPVwibWlubGVuZ3RoXCJcbiAgICAgICAgOm5hbWU9XCJuYW1lXCJcbiAgICAgICAgcmVmPVwiaW5wdXRcIlxuICAgICAgICA6cmVxdWlyZWQ9XCJyZXF1aXJlZFwiXG4gICAgICAgIDpyb3dzPVwicm93c1wiXG4gICAgICAgIEBjaGFuZ2U9XCJoYW5kbGVWYWxpZGF0aW9uXCJcbiAgICAgICAgQGZvY3VzPVwiaGFuZGxlRm9jdXNcIlxuICAgICAgICBAZm9jdXNvdXQ9XCJoYW5kbGVGb2N1c091dFwiXG4gICAgICAgIDppZD1cImlucHV0SWRcIlxuICAgICAgICB2LW1vZGVsPVwidmFsdWVcIlxuICAgICAgLz5cbiAgICA8L2xhYmVsPlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUl1cIlxuICAgICAgdi1pZj1cInN1cHBvcnRpbmdUZXh0IHx8IGhhc0Vycm9yXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmljb249XCJJQ09OLkVSUk9SXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgdi1pZj1cImhhc0Vycm9yXCJcbiAgICAgIC8+XG5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfM11cIj5cbiAgICAgICAge3sgaGFzRXJyb3IgPyBlcnJvck1lc3NhZ2UgOiBzdXBwb3J0aW5nVGV4dCB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgdGV4dGFyZWEge1xuICAgIHJlc2l6ZTogdmVydGljYWw7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS1sYWJlbCB7XG4gICAgaGVpZ2h0OiAxLjE4NzVyZW07XG4gICAgdHJhbnNpdGlvbjogZm9udC1zaXplIHZhcigtLXRpZGUtYW5pbWF0ZSksIHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEuZXJyb3Ige1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXByaW1hcnkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEuZXJyb3IgLnRpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXN1cmZhY2UpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEuZXJyb3I6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYTpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0yKTtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtYm9yZGVyLWhpZ2gpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEgdGV4dGFyZWEge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTEpO1xuICAgIG91dGxpbmU6IHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgc29saWQgdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiBjYWxjKHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgKiAtMSk7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS1mb3JlZ3JvdW5kKTtcbiAgfVxuPC9zdHlsZT5cbiIsIi8qIGVzbGludC1kaXNhYmxlIHZ1ZS9zb3J0LWtleXMgKi9cblxuZXhwb3J0IGNvbnN0IEJSRUFLUE9JTlQgPSB7XG4gIFNNOiAnc20nLFxuICBNRDogJ21kJyxcbiAgTEc6ICdsZycsXG4gIFhMOiAneGwnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IE1FRElBID0ge1xuICBTTTogNzY4LFxuICBNRDogOTkyLFxuICBMRzogMTIzMixcbiAgWEw6IDE5MjAsXG59O1xuXG5leHBvcnQgdHlwZSBCcmVha3BvaW50ID0gKHR5cGVvZiBCUkVBS1BPSU5UKVtrZXlvZiB0eXBlb2YgQlJFQUtQT0lOVF07XG5leHBvcnQgdHlwZSBNZWRpYSA9ICh0eXBlb2YgTUVESUEpW2tleW9mIHR5cGVvZiBNRURJQV07XG4iLCJpbXBvcnQgeyBuZXh0VGljayB9IGZyb20gJ3Z1ZSc7XG5cbi8qKlxuICogRGlyZWN0bHkgbW9kaWZpZXMgdGhlIGA8Ym9keT5gIGVsZW1lbnQgdG8gYXBwbHkgb3IgcmVtb3ZlIHNjcm9sbCBsb2NrLlxuICogV2hlbiBgZmFsc2VgIGlzIHByb3ZpZGVkLCBpdCBvbmx5IHVubG9ja3Mgc2Nyb2xsIGlmIHRoZXJlIGFyZSBubyBvcGVuXG4gKiBIVE1MIGRpYWxvZyBlbGVtZW50cy5cbiAqL1xuZXhwb3J0IGNvbnN0IHNldFNjcm9sbExvY2sgPSBhc3luYyAoaXNMb2NrZWQ6IGJvb2xlYW4pID0+IHtcbiAgLy8gQ2Fubm90IGJlIGFwcGxpZWQgdG8gYm9keSB0YWcgaW4gbWFya2V0cGxhY2UgcmVwbyBkdWUgdG8gZGF0YS1jc3Mtc2NvcGVcbiAgLy8gY29uc3QgQk9EWV9MT0NLX0NMQVNTID0gJ2JvZHktc2Nyb2xsLWxvY2snO1xuXG4gIGNvbnN0IGJvZHkgPSBkb2N1bWVudC5ib2R5O1xuXG4gIGlmIChpc0xvY2tlZCkge1xuICAgIGlmICghYm9keS5kYXRhc2V0LnNjcm9sbExvY2tZKSB7XG4gICAgICBjb25zdCBzY3JvbGxZID0gd2luZG93LnNjcm9sbFk7XG5cbiAgICAgIGJvZHkuZGF0YXNldC5zY3JvbGxMb2NrWSA9IHNjcm9sbFkudG9TdHJpbmcoKTtcbiAgICAgIGJvZHkuc3R5bGUuc2V0UHJvcGVydHkoJy0tc2F2ZWQtc2Nyb2xsLXknLCBgJHtzY3JvbGxZfXB4YCk7XG4gICAgICBib2R5LnN0eWxlLnNldFByb3BlcnR5KCdpbnNldCcsICcwJyk7XG4gICAgICBib2R5LnN0eWxlLnNldFByb3BlcnR5KCdtYXJnaW4tdG9wJywgYGNhbGMoMHB4IC0gdmFyKC0tc2F2ZWQtc2Nyb2xsLXksIDBweCkpYCk7XG4gICAgICBib2R5LnN0eWxlLnNldFByb3BlcnR5KCdvdmVyZmxvdy15JywgJ3Njcm9sbCcpO1xuICAgICAgYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgncG9zaXRpb24nLCAnZml4ZWQnKTtcblxuICAgICAgLy8gQ2Fubm90IGJlIGFwcGxpZWQgdG8gYm9keSB0YWcgaW4gbWFya2V0cGxhY2UgcmVwbyBkdWUgdG8gZGF0YS1jc3Mtc2NvcGVcbiAgICAgIC8vIGJvZHkuY2xhc3NMaXN0LmFkZChCT0RZX0xPQ0tfQ0xBU1MpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBhd2FpdCBuZXh0VGljaygpO1xuICAgIGlmICghZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZGlhbG9nW29wZW5dJykpIHtcbiAgICAgIGNvbnN0IHNhdmVkU2Nyb2xsWSA9IHBhcnNlSW50KGJvZHkuZGF0YXNldC5zY3JvbGxMb2NrWSB8fCAnMCcpO1xuXG4gICAgICAvLyBDYW5ub3QgYmUgYXBwbGllZCB0byBib2R5IHRhZyBpbiBtYXJrZXRwbGFjZSByZXBvIGR1ZSB0byBkYXRhLWNzcy1zY29wZVxuICAgICAgLy8gYm9keS5jbGFzc0xpc3QucmVtb3ZlKEJPRFlfTE9DS19DTEFTUyk7XG5cbiAgICAgIGJvZHkuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ2luc2V0Jyk7XG4gICAgICBib2R5LnN0eWxlLnJlbW92ZVByb3BlcnR5KCdtYXJnaW5Ub3AnKTtcbiAgICAgIGJvZHkuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ292ZXJmbG93WScpO1xuICAgICAgYm9keS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgncG9zaXRpb24nKTtcbiAgICAgIGJvZHkuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tc2F2ZWQtc2Nyb2xsLXknKTtcblxuICAgICAgd2luZG93LnNjcm9sbFRvKHtcbiAgICAgICAgYmVoYXZpb3I6ICdhdXRvJyxcbiAgICAgICAgdG9wOiBzYXZlZFNjcm9sbFksXG4gICAgICB9KTtcblxuICAgICAgZGVsZXRlIGJvZHkuZGF0YXNldC5zY3JvbGxMb2NrWTtcbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBUT1BfTEFZRVJfSUQgPSAndGlkZS10b3AtbGF5ZXInO1xuXG5leHBvcnQgY29uc3QgaW5pdEZhdXhUb3BMYXllciA9ICgpID0+IHtcbiAgbGV0IHRvcExheWVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoVE9QX0xBWUVSX0lEKTtcbiAgaWYgKCF0b3BMYXllcikge1xuICAgIHRvcExheWVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgdG9wTGF5ZXIuaWQgPSBUT1BfTEFZRVJfSUQ7XG4gICAgdG9wTGF5ZXIuc2V0QXR0cmlidXRlKCdkYXRhLWNzcy1zY29wZScsICcnKTtcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRvcExheWVyKTtcbiAgfVxuICB0b3BMYXllci5zdHlsZS5pc29sYXRpb24gPSAnaXNvbGF0ZSc7XG59O1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgbmV4dFRpY2ssIG9uTW91bnRlZCwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVCdXR0b25JY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQnV0dG9uSWNvbi52dWUnO1xuICBpbXBvcnQgeyBCUkVBS1BPSU5UIH0gZnJvbSAnQC90eXBlcy9CcmVha3BvaW50JztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFBSSU9SSVRZIH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgc2V0U2Nyb2xsTG9jayB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZpZXdwb3J0JztcblxuICBpbXBvcnQgdHlwZSB7IFJlZiB9IGZyb20gJ3Z1ZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBpc0JhY2tCdXR0b24/OiBib29sZWFuO1xuICAgIGlzRGlzbWlzc2libGU/OiBib29sZWFuO1xuICAgIGlzT3BlbjogYm9vbGVhbjtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICB3aWR0aD86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGlzQmFja0J1dHRvbjogZmFsc2UsXG4gICAgaXNEaXNtaXNzaWJsZTogdHJ1ZSxcbiAgICB0aXRsZTogdW5kZWZpbmVkLFxuICAgIHdpZHRoOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIHR5cGUgRW1pdHMgPSB7XG4gICAgKGU6ICdjbG9zZScpOiB2b2lkO1xuICAgIChlOiAnYmFjaycpOiB2b2lkO1xuICB9O1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czxFbWl0cz4oKTtcblxuICBjb25zdCBtb2RhbENvbnRlbnQ6IFJlZjxIVE1MRGl2RWxlbWVudCB8IHVuZGVmaW5lZD4gPSByZWYoKTtcbiAgY29uc3QgbW9kYWxEaWFsb2c6IFJlZjxIVE1MRGlhbG9nRWxlbWVudCB8IHVuZGVmaW5lZD4gPSByZWYoKTtcblxuICBjb25zdCB0cmlnZ2VyTmF0aXZlRGlhbG9nT3BlbiA9ICgpID0+IHtcbiAgICBtb2RhbERpYWxvZy52YWx1ZT8uc2hvd01vZGFsKCk7XG4gIH07XG5cbiAgY29uc3QgdHJpZ2dlck5hdGl2ZURpYWxvZ0Nsb3NlID0gKCkgPT4ge1xuICAgIG1vZGFsRGlhbG9nLnZhbHVlPy5jbG9zZSgpO1xuICB9O1xuXG4gIGNvbnN0IHNjcm9sbENvbnRlbnRUb1RvcCA9ICgpID0+IHtcbiAgICBuZXh0VGljaygoKSA9PiB7XG4gICAgICBpZiAoIW1vZGFsQ29udGVudC52YWx1ZSkgcmV0dXJuO1xuICAgICAgbW9kYWxDb250ZW50LnZhbHVlLnNjcm9sbFRvcCA9IDA7XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQmFja2Ryb3BDbGljayA9ICgpID0+IHtcbiAgICBpZiAocHJvcHMuaXNEaXNtaXNzaWJsZSkgZW1pdCgnY2xvc2UnKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVFc2NhcGVLZXlkb3duID0gKGU6IEV2ZW50KSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmIChwcm9wcy5pc0Rpc21pc3NpYmxlKSBlbWl0KCdjbG9zZScpO1xuICB9O1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLmlzT3BlbixcbiAgICAobmV3VmFsdWUpID0+IHtcbiAgICAgIGlmICghbW9kYWxEaWFsb2cudmFsdWUpIHJldHVybjtcbiAgICAgIGlmIChuZXdWYWx1ZSkge1xuICAgICAgICB0cmlnZ2VyTmF0aXZlRGlhbG9nT3BlbigpO1xuICAgICAgICBzY3JvbGxDb250ZW50VG9Ub3AoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyaWdnZXJOYXRpdmVEaWFsb2dDbG9zZSgpO1xuICAgICAgfVxuICAgICAgc2V0U2Nyb2xsTG9jayhuZXdWYWx1ZSk7XG4gICAgfVxuICApO1xuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgaWYgKHByb3BzLmlzT3Blbikge1xuICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ09wZW4oKTtcbiAgICB9XG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpYWxvZ1xuICAgIDpjbGFzcz1cIlsndGlkZS1tb2RhbCcsIENTUy5CRy5JTklUSUFMLCBDU1MuSEVJR0hULkZVTEwsIENTUy5XSURUSC5GVUxMLCBDU1MuT1ZFUkZMT1cuWFkuSElEREVOXVwiXG4gICAgcmVmPVwibW9kYWxEaWFsb2dcIlxuICAgIDpzdHlsZT1cInsgJy0tbW9kYWwtd2lkdGgnOiBwcm9wcy53aWR0aCB9XCJcbiAgICBAY2xpY2suc2VsZj1cImhhbmRsZUJhY2tkcm9wQ2xpY2tcIlxuICAgIEBjbG9zZS5wcmV2ZW50XG4gICAgQGtleWRvd24uZXNjYXBlPVwiaGFuZGxlRXNjYXBlS2V5ZG93blwiXG4gID5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLW1vZGFsLWJvZHknLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5PTkUsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICAgIENTUy5QT1NJVElPTi5BQlNPTFVURSxcbiAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLkJPVFRPTSxcbiAgICAgICAgQ1NTLlNIQURPVy5UT1AsXG4gICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICBDU1MuV0lEVEguTUFYX0ZVTEwsXG4gICAgICAgIENTUy53aXRoQnJlYWtwb2ludChbQ1NTLlNIQURPVy5CT1RUT01dLCBCUkVBS1BPSU5ULlNNKSxcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxoZWFkZXJcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLW1vZGFsLWhlYWRlcicsXG4gICAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgICBDU1MuQk9SREVSLkJPVFRPTS5PTkUsXG4gICAgICAgICAgQ1NTLkJPUkRFUi5DT0xPUi5MT1csXG4gICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgICAgQ1NTLklTT0xBVElPTi5JU09MQVRFLFxuICAgICAgICAgIENTUy5QQURESU5HLlkuT05FLFxuICAgICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgICBDU1MuWl9JTkRFWC5PTkUsXG4gICAgICAgIF1cIlxuICAgICAgPlxuICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9MRUZUXCJcbiAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgICBAY2xpY2s9XCJlbWl0KCdiYWNrJylcIlxuICAgICAgICAgIHRpdGxlPVwiQmFja1wiXG4gICAgICAgICAgdi1pZj1cImlzQmFja0J1dHRvblwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkhFQURMSU5FXzJdXCJcbiAgICAgICAgICB2LXRleHQ9XCJ0aXRsZVwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GTEVYLkdST1cuT0ZGLCBDU1MuRkxFWC5TSFJJTksuT0ZGLCBDU1MuTUFSR0lOLkxFRlQuQVVUT11cIlxuICAgICAgICAgIDppY29uPVwiSUNPTi5DTE9TRVwiXG4gICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgICAgQGNsaWNrPVwiZW1pdCgnY2xvc2UnKVwiXG4gICAgICAgICAgdi1pZj1cImlzRGlzbWlzc2libGVcIlxuICAgICAgICAvPlxuICAgICAgPC9oZWFkZXI+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLW1vZGFsLWNvbnRlbnQnLFxuICAgICAgICAgIENTUy5ESVNQTEFZLkdSSUQsXG4gICAgICAgICAgQ1NTLklTT0xBVElPTi5JU09MQVRFLFxuICAgICAgICAgIENTUy5PVkVSRkxPVy5YLkhJRERFTixcbiAgICAgICAgICBDU1MuT1ZFUkZMT1cuWS5BVVRPLFxuICAgICAgICAgIENTUy5QQURESU5HLlkuVFdPLFxuICAgICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICBdXCJcbiAgICAgICAgcmVmPVwibW9kYWxDb250ZW50XCJcbiAgICAgID5cbiAgICAgICAgPHNsb3QgLz5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8Zm9vdGVyXG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1tb2RhbC1mb290ZXInLFxuICAgICAgICAgIENTUy5BWElTMS5FTkQsXG4gICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICBDU1MuR0FQLlRXTyxcbiAgICAgICAgICBDU1MuSVNPTEFUSU9OLklTT0xBVEUsXG4gICAgICAgICAgQ1NTLlBBRERJTkcuWS5PTkUsXG4gICAgICAgICAgQ1NTLlNIQURPVy5UT1AsXG4gICAgICAgIF1cIlxuICAgICAgICB2LWlmPVwiJHNsb3RzLmZvb3RlclwiXG4gICAgICA+XG4gICAgICAgIDxzbG90IG5hbWU9XCJmb290ZXJcIiAvPlxuICAgICAgPC9mb290ZXI+XG4gICAgPC9kaXY+XG4gIDwvZGlhbG9nPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtbW9kYWwge1xuICAgIC0tbW9kYWwtcGFkZGluZy14OiAyMHB4O1xuICAgIG1heC13aWR0aDogdW5zZXQ7XG4gICAgbWF4LWhlaWdodDogdW5zZXQ7XG4gICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS10aWRlLWFuaW1hdGUpIGFsbG93LWRpc2NyZXRlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcbiAgfVxuICAudGlkZS1tb2RhbFtvcGVuXSB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCUpO1xuICB9XG4gIC50aWRlLW1vZGFsOjpiYWNrZHJvcCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpZGUtYW5pbWF0ZSkgYWxsb3ctZGlzY3JldGU7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDBweCk7XG4gIH1cbiAgLnRpZGUtbW9kYWxbb3Blbl06OmJhY2tkcm9wIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLXRyYW5zcGFyZW50LTQwMCk7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiB2YXIoLS10aWRlLWJnLWJsdXIpO1xuICB9XG4gIEBzdGFydGluZy1zdHlsZSB7XG4gICAgLnRpZGUtbW9kYWxbb3Blbl0ge1xuICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcbiAgICB9XG4gICAgLnRpZGUtbW9kYWxbb3Blbl06OmJhY2tkcm9wIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYmFja2Ryb3AtZmlsdGVyOiB2YXIoLS10aWRlLWJnLWJsdXIpO1xuICAgIH1cbiAgfVxuICAudGlkZS1tb2RhbC1ib2R5IHtcbiAgICB3aWR0aDogdmFyKC0tbW9kYWwtd2lkdGgsIDU3NnB4KTtcbiAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMCUgLSB2YXIoLS10aWRlLXNwYWNpbmctMikpO1xuICB9XG5cbiAgLnRpZGUtbW9kYWwtaGVhZGVyLFxuICAudGlkZS1tb2RhbC1mb290ZXIge1xuICAgIHBhZGRpbmctaW5saW5lOiB2YXIoLS1tb2RhbC1wYWRkaW5nLXgpO1xuICB9XG4gIC50aWRlLW1vZGFsLWNvbnRlbnQge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogdmFyKC0tbW9kYWwtcGFkZGluZy14KSAxZnIgdmFyKC0tbW9kYWwtcGFkZGluZy14KTtcbiAgfVxuICA6d2hlcmUoLnRpZGUtbW9kYWwtY29udGVudCk6ZGVlcCg+IDp3aGVyZSgqKSkge1xuICAgIGdyaWQtY29sdW1uOiAyO1xuICB9XG5cbiAgQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gICAgLnRpZGUtbW9kYWwtYm9keSB7XG4gICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xuICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG4gICAgfVxuICB9XG4gIEBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAgIC50aWRlLW1vZGFsIHtcbiAgICAgIC0tbW9kYWwtcGFkZGluZy14OiB2YXIoLS10aWRlLXNwYWNpbmctMik7XG4gICAgfVxuICAgIC50aWRlLW1vZGFsLWJvZHkge1xuICAgICAgbWF4LWhlaWdodDogODUlO1xuICAgICAgYm90dG9tOiBpbml0aWFsO1xuICAgIH1cbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlQnV0dG9uSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUJ1dHRvbkljb24udnVlJztcbiAgaW1wb3J0IFRpZGVCdXR0b25QYWdpbmF0aW9uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQnV0dG9uUGFnaW5hdGlvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgcGFnZUN1cnJlbnQ/OiBudW1iZXI7XG4gICAgcGFnZVRvdGFsPzogbnVtYmVyO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgcGFnZUN1cnJlbnQ6IDEsXG4gICAgcGFnZVRvdGFsOiAxLFxuICB9KTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHMoWydjaGFuZ2UnXSk7XG5cbiAgY29uc3QgcGFnZUN1cnJlbnQgPSByZWYocHJvcHMucGFnZUN1cnJlbnQpO1xuXG4gIGNvbnN0IHBhZ2luYXRpb25CdXR0b25zID0gY29tcHV0ZWQoKCkgPT4gbmV3IEFycmF5KHByb3BzLnBhZ2VUb3RhbCkuZmlsbCgnJykubWFwKChlbXB0eSwgaW5kZXgpID0+IGluZGV4ICsgMSkpO1xuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKGluZGV4OiBudW1iZXIpID0+IHtcbiAgICBwYWdlQ3VycmVudC52YWx1ZSA9IGluZGV4O1xuXG4gICAgZW1pdCgnY2hhbmdlJywgZXZlbnQsIGluZGV4KTtcbiAgfTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxzZWN0aW9uXG4gICAgOmNsYXNzPVwiWyd0aWRlLXBhZ2luYXRpb24nLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzEuQ0VOVEVSLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVIsIENTUy5XSURUSC5GVUxMXVwiXG4gID5cbiAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgIDpkaXNhYmxlZD1cInBhZ2VDdXJyZW50ID09PSAxXCJcbiAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX0xFRlRcIlxuICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICBAY2xpY2s9XCJoYW5kbGVDbGljayhwYWdlQ3VycmVudCAtIDEpXCJcbiAgICAvPlxuXG4gICAgPHVsIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVIsIENTUy5MSVNUX0JVTExFVFMuT0ZGXVwiPlxuICAgICAgPGxpXG4gICAgICAgIDprZXk9XCJwYWdpbmF0aW9uQnV0dG9uXCJcbiAgICAgICAgdi1mb3I9XCJwYWdpbmF0aW9uQnV0dG9uIGluIHBhZ2luYXRpb25CdXR0b25zXCJcbiAgICAgID5cbiAgICAgICAgPFRpZGVCdXR0b25QYWdpbmF0aW9uXG4gICAgICAgICAgOmRpc2FibGVkPVwicGFnZUN1cnJlbnQgPT09IHBhZ2luYXRpb25CdXR0b25cIlxuICAgICAgICAgIDpsYWJlbD1cInBhZ2luYXRpb25CdXR0b25cIlxuICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICAgIEBjbGljaz1cImhhbmRsZUNsaWNrKHBhZ2luYXRpb25CdXR0b24pXCJcbiAgICAgICAgLz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cblxuICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgOmRpc2FibGVkPVwicGFnZUN1cnJlbnQgPT09IHBhZ2luYXRpb25CdXR0b25zW3BhZ2luYXRpb25CdXR0b25zLmxlbmd0aCAtIDFdXCJcbiAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX1JJR0hUXCJcbiAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgQGNsaWNrPVwiaGFuZGxlQ2xpY2socGFnZUN1cnJlbnQgKyAxKVwiXG4gICAgLz5cbiAgPC9zZWN0aW9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD48L3N0eWxlPlxuIiwiLyoqXG4gKiBDdXN0b20gcG9zaXRpb25pbmcgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvdmlydHVhbC1lbGVtZW50c1xuICovXG5cbmNvbnN0IHNpZGVzID0gWyd0b3AnLCAncmlnaHQnLCAnYm90dG9tJywgJ2xlZnQnXTtcbmNvbnN0IGFsaWdubWVudHMgPSBbJ3N0YXJ0JywgJ2VuZCddO1xuY29uc3QgcGxhY2VtZW50cyA9IC8qI19fUFVSRV9fKi9zaWRlcy5yZWR1Y2UoKGFjYywgc2lkZSkgPT4gYWNjLmNvbmNhdChzaWRlLCBzaWRlICsgXCItXCIgKyBhbGlnbm1lbnRzWzBdLCBzaWRlICsgXCItXCIgKyBhbGlnbm1lbnRzWzFdKSwgW10pO1xuY29uc3QgbWluID0gTWF0aC5taW47XG5jb25zdCBtYXggPSBNYXRoLm1heDtcbmNvbnN0IHJvdW5kID0gTWF0aC5yb3VuZDtcbmNvbnN0IGZsb29yID0gTWF0aC5mbG9vcjtcbmNvbnN0IGNyZWF0ZUNvb3JkcyA9IHYgPT4gKHtcbiAgeDogdixcbiAgeTogdlxufSk7XG5jb25zdCBvcHBvc2l0ZVNpZGVNYXAgPSB7XG4gIGxlZnQ6ICdyaWdodCcsXG4gIHJpZ2h0OiAnbGVmdCcsXG4gIGJvdHRvbTogJ3RvcCcsXG4gIHRvcDogJ2JvdHRvbSdcbn07XG5jb25zdCBvcHBvc2l0ZUFsaWdubWVudE1hcCA9IHtcbiAgc3RhcnQ6ICdlbmQnLFxuICBlbmQ6ICdzdGFydCdcbn07XG5mdW5jdGlvbiBjbGFtcChzdGFydCwgdmFsdWUsIGVuZCkge1xuICByZXR1cm4gbWF4KHN0YXJ0LCBtaW4odmFsdWUsIGVuZCkpO1xufVxuZnVuY3Rpb24gZXZhbHVhdGUodmFsdWUsIHBhcmFtKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicgPyB2YWx1ZShwYXJhbSkgOiB2YWx1ZTtcbn1cbmZ1bmN0aW9uIGdldFNpZGUocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQuc3BsaXQoJy0nKVswXTtcbn1cbmZ1bmN0aW9uIGdldEFsaWdubWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5zcGxpdCgnLScpWzFdO1xufVxuZnVuY3Rpb24gZ2V0T3Bwb3NpdGVBeGlzKGF4aXMpIHtcbiAgcmV0dXJuIGF4aXMgPT09ICd4JyA/ICd5JyA6ICd4Jztcbn1cbmZ1bmN0aW9uIGdldEF4aXNMZW5ndGgoYXhpcykge1xuICByZXR1cm4gYXhpcyA9PT0gJ3knID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xufVxuZnVuY3Rpb24gZ2V0U2lkZUF4aXMocGxhY2VtZW50KSB7XG4gIHJldHVybiBbJ3RvcCcsICdib3R0b20nXS5pbmNsdWRlcyhnZXRTaWRlKHBsYWNlbWVudCkpID8gJ3knIDogJ3gnO1xufVxuZnVuY3Rpb24gZ2V0QWxpZ25tZW50QXhpcyhwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIGdldE9wcG9zaXRlQXhpcyhnZXRTaWRlQXhpcyhwbGFjZW1lbnQpKTtcbn1cbmZ1bmN0aW9uIGdldEFsaWdubWVudFNpZGVzKHBsYWNlbWVudCwgcmVjdHMsIHJ0bCkge1xuICBpZiAocnRsID09PSB2b2lkIDApIHtcbiAgICBydGwgPSBmYWxzZTtcbiAgfVxuICBjb25zdCBhbGlnbm1lbnQgPSBnZXRBbGlnbm1lbnQocGxhY2VtZW50KTtcbiAgY29uc3QgYWxpZ25tZW50QXhpcyA9IGdldEFsaWdubWVudEF4aXMocGxhY2VtZW50KTtcbiAgY29uc3QgbGVuZ3RoID0gZ2V0QXhpc0xlbmd0aChhbGlnbm1lbnRBeGlzKTtcbiAgbGV0IG1haW5BbGlnbm1lbnRTaWRlID0gYWxpZ25tZW50QXhpcyA9PT0gJ3gnID8gYWxpZ25tZW50ID09PSAocnRsID8gJ2VuZCcgOiAnc3RhcnQnKSA/ICdyaWdodCcgOiAnbGVmdCcgOiBhbGlnbm1lbnQgPT09ICdzdGFydCcgPyAnYm90dG9tJyA6ICd0b3AnO1xuICBpZiAocmVjdHMucmVmZXJlbmNlW2xlbmd0aF0gPiByZWN0cy5mbG9hdGluZ1tsZW5ndGhdKSB7XG4gICAgbWFpbkFsaWdubWVudFNpZGUgPSBnZXRPcHBvc2l0ZVBsYWNlbWVudChtYWluQWxpZ25tZW50U2lkZSk7XG4gIH1cbiAgcmV0dXJuIFttYWluQWxpZ25tZW50U2lkZSwgZ2V0T3Bwb3NpdGVQbGFjZW1lbnQobWFpbkFsaWdubWVudFNpZGUpXTtcbn1cbmZ1bmN0aW9uIGdldEV4cGFuZGVkUGxhY2VtZW50cyhwbGFjZW1lbnQpIHtcbiAgY29uc3Qgb3Bwb3NpdGVQbGFjZW1lbnQgPSBnZXRPcHBvc2l0ZVBsYWNlbWVudChwbGFjZW1lbnQpO1xuICByZXR1cm4gW2dldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KHBsYWNlbWVudCksIG9wcG9zaXRlUGxhY2VtZW50LCBnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudChvcHBvc2l0ZVBsYWNlbWVudCldO1xufVxuZnVuY3Rpb24gZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQucmVwbGFjZSgvc3RhcnR8ZW5kL2csIGFsaWdubWVudCA9PiBvcHBvc2l0ZUFsaWdubWVudE1hcFthbGlnbm1lbnRdKTtcbn1cbmZ1bmN0aW9uIGdldFNpZGVMaXN0KHNpZGUsIGlzU3RhcnQsIHJ0bCkge1xuICBjb25zdCBsciA9IFsnbGVmdCcsICdyaWdodCddO1xuICBjb25zdCBybCA9IFsncmlnaHQnLCAnbGVmdCddO1xuICBjb25zdCB0YiA9IFsndG9wJywgJ2JvdHRvbSddO1xuICBjb25zdCBidCA9IFsnYm90dG9tJywgJ3RvcCddO1xuICBzd2l0Y2ggKHNpZGUpIHtcbiAgICBjYXNlICd0b3AnOlxuICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICBpZiAocnRsKSByZXR1cm4gaXNTdGFydCA/IHJsIDogbHI7XG4gICAgICByZXR1cm4gaXNTdGFydCA/IGxyIDogcmw7XG4gICAgY2FzZSAnbGVmdCc6XG4gICAgY2FzZSAncmlnaHQnOlxuICAgICAgcmV0dXJuIGlzU3RhcnQgPyB0YiA6IGJ0O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gW107XG4gIH1cbn1cbmZ1bmN0aW9uIGdldE9wcG9zaXRlQXhpc1BsYWNlbWVudHMocGxhY2VtZW50LCBmbGlwQWxpZ25tZW50LCBkaXJlY3Rpb24sIHJ0bCkge1xuICBjb25zdCBhbGlnbm1lbnQgPSBnZXRBbGlnbm1lbnQocGxhY2VtZW50KTtcbiAgbGV0IGxpc3QgPSBnZXRTaWRlTGlzdChnZXRTaWRlKHBsYWNlbWVudCksIGRpcmVjdGlvbiA9PT0gJ3N0YXJ0JywgcnRsKTtcbiAgaWYgKGFsaWdubWVudCkge1xuICAgIGxpc3QgPSBsaXN0Lm1hcChzaWRlID0+IHNpZGUgKyBcIi1cIiArIGFsaWdubWVudCk7XG4gICAgaWYgKGZsaXBBbGlnbm1lbnQpIHtcbiAgICAgIGxpc3QgPSBsaXN0LmNvbmNhdChsaXN0Lm1hcChnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudCkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbGlzdDtcbn1cbmZ1bmN0aW9uIGdldE9wcG9zaXRlUGxhY2VtZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnJlcGxhY2UoL2xlZnR8cmlnaHR8Ym90dG9tfHRvcC9nLCBzaWRlID0+IG9wcG9zaXRlU2lkZU1hcFtzaWRlXSk7XG59XG5mdW5jdGlvbiBleHBhbmRQYWRkaW5nT2JqZWN0KHBhZGRpbmcpIHtcbiAgcmV0dXJuIHtcbiAgICB0b3A6IDAsXG4gICAgcmlnaHQ6IDAsXG4gICAgYm90dG9tOiAwLFxuICAgIGxlZnQ6IDAsXG4gICAgLi4ucGFkZGluZ1xuICB9O1xufVxuZnVuY3Rpb24gZ2V0UGFkZGluZ09iamVjdChwYWRkaW5nKSB7XG4gIHJldHVybiB0eXBlb2YgcGFkZGluZyAhPT0gJ251bWJlcicgPyBleHBhbmRQYWRkaW5nT2JqZWN0KHBhZGRpbmcpIDoge1xuICAgIHRvcDogcGFkZGluZyxcbiAgICByaWdodDogcGFkZGluZyxcbiAgICBib3R0b206IHBhZGRpbmcsXG4gICAgbGVmdDogcGFkZGluZ1xuICB9O1xufVxuZnVuY3Rpb24gcmVjdFRvQ2xpZW50UmVjdChyZWN0KSB7XG4gIGNvbnN0IHtcbiAgICB4LFxuICAgIHksXG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0XG4gIH0gPSByZWN0O1xuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB0b3A6IHksXG4gICAgbGVmdDogeCxcbiAgICByaWdodDogeCArIHdpZHRoLFxuICAgIGJvdHRvbTogeSArIGhlaWdodCxcbiAgICB4LFxuICAgIHlcbiAgfTtcbn1cblxuZXhwb3J0IHsgYWxpZ25tZW50cywgY2xhbXAsIGNyZWF0ZUNvb3JkcywgZXZhbHVhdGUsIGV4cGFuZFBhZGRpbmdPYmplY3QsIGZsb29yLCBnZXRBbGlnbm1lbnQsIGdldEFsaWdubWVudEF4aXMsIGdldEFsaWdubWVudFNpZGVzLCBnZXRBeGlzTGVuZ3RoLCBnZXRFeHBhbmRlZFBsYWNlbWVudHMsIGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50LCBnZXRPcHBvc2l0ZUF4aXMsIGdldE9wcG9zaXRlQXhpc1BsYWNlbWVudHMsIGdldE9wcG9zaXRlUGxhY2VtZW50LCBnZXRQYWRkaW5nT2JqZWN0LCBnZXRTaWRlLCBnZXRTaWRlQXhpcywgbWF4LCBtaW4sIHBsYWNlbWVudHMsIHJlY3RUb0NsaWVudFJlY3QsIHJvdW5kLCBzaWRlcyB9O1xuIiwiaW1wb3J0IHsgZ2V0U2lkZUF4aXMsIGdldEFsaWdubWVudEF4aXMsIGdldEF4aXNMZW5ndGgsIGdldFNpZGUsIGdldEFsaWdubWVudCwgZXZhbHVhdGUsIGdldFBhZGRpbmdPYmplY3QsIHJlY3RUb0NsaWVudFJlY3QsIG1pbiwgY2xhbXAsIHBsYWNlbWVudHMsIGdldEFsaWdubWVudFNpZGVzLCBnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudCwgZ2V0T3Bwb3NpdGVQbGFjZW1lbnQsIGdldEV4cGFuZGVkUGxhY2VtZW50cywgZ2V0T3Bwb3NpdGVBeGlzUGxhY2VtZW50cywgc2lkZXMsIG1heCwgZ2V0T3Bwb3NpdGVBeGlzIH0gZnJvbSAnQGZsb2F0aW5nLXVpL3V0aWxzJztcbmV4cG9ydCB7IHJlY3RUb0NsaWVudFJlY3QgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMnO1xuXG5mdW5jdGlvbiBjb21wdXRlQ29vcmRzRnJvbVBsYWNlbWVudChfcmVmLCBwbGFjZW1lbnQsIHJ0bCkge1xuICBsZXQge1xuICAgIHJlZmVyZW5jZSxcbiAgICBmbG9hdGluZ1xuICB9ID0gX3JlZjtcbiAgY29uc3Qgc2lkZUF4aXMgPSBnZXRTaWRlQXhpcyhwbGFjZW1lbnQpO1xuICBjb25zdCBhbGlnbm1lbnRBeGlzID0gZ2V0QWxpZ25tZW50QXhpcyhwbGFjZW1lbnQpO1xuICBjb25zdCBhbGlnbkxlbmd0aCA9IGdldEF4aXNMZW5ndGgoYWxpZ25tZW50QXhpcyk7XG4gIGNvbnN0IHNpZGUgPSBnZXRTaWRlKHBsYWNlbWVudCk7XG4gIGNvbnN0IGlzVmVydGljYWwgPSBzaWRlQXhpcyA9PT0gJ3knO1xuICBjb25zdCBjb21tb25YID0gcmVmZXJlbmNlLnggKyByZWZlcmVuY2Uud2lkdGggLyAyIC0gZmxvYXRpbmcud2lkdGggLyAyO1xuICBjb25zdCBjb21tb25ZID0gcmVmZXJlbmNlLnkgKyByZWZlcmVuY2UuaGVpZ2h0IC8gMiAtIGZsb2F0aW5nLmhlaWdodCAvIDI7XG4gIGNvbnN0IGNvbW1vbkFsaWduID0gcmVmZXJlbmNlW2FsaWduTGVuZ3RoXSAvIDIgLSBmbG9hdGluZ1thbGlnbkxlbmd0aF0gLyAyO1xuICBsZXQgY29vcmRzO1xuICBzd2l0Y2ggKHNpZGUpIHtcbiAgICBjYXNlICd0b3AnOlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiBjb21tb25YLFxuICAgICAgICB5OiByZWZlcmVuY2UueSAtIGZsb2F0aW5nLmhlaWdodFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICBjb29yZHMgPSB7XG4gICAgICAgIHg6IGNvbW1vblgsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55ICsgcmVmZXJlbmNlLmhlaWdodFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgIGNvb3JkcyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLnggKyByZWZlcmVuY2Uud2lkdGgsXG4gICAgICAgIHk6IGNvbW1vbllcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlICdsZWZ0JzpcbiAgICAgIGNvb3JkcyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLnggLSBmbG9hdGluZy53aWR0aCxcbiAgICAgICAgeTogY29tbW9uWVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBjb29yZHMgPSB7XG4gICAgICAgIHg6IHJlZmVyZW5jZS54LFxuICAgICAgICB5OiByZWZlcmVuY2UueVxuICAgICAgfTtcbiAgfVxuICBzd2l0Y2ggKGdldEFsaWdubWVudChwbGFjZW1lbnQpKSB7XG4gICAgY2FzZSAnc3RhcnQnOlxuICAgICAgY29vcmRzW2FsaWdubWVudEF4aXNdIC09IGNvbW1vbkFsaWduICogKHJ0bCAmJiBpc1ZlcnRpY2FsID8gLTEgOiAxKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2VuZCc6XG4gICAgICBjb29yZHNbYWxpZ25tZW50QXhpc10gKz0gY29tbW9uQWxpZ24gKiAocnRsICYmIGlzVmVydGljYWwgPyAtMSA6IDEpO1xuICAgICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIGNvb3Jkcztcbn1cblxuLyoqXG4gKiBDb21wdXRlcyB0aGUgYHhgIGFuZCBgeWAgY29vcmRpbmF0ZXMgdGhhdCB3aWxsIHBsYWNlIHRoZSBmbG9hdGluZyBlbGVtZW50XG4gKiBuZXh0IHRvIGEgZ2l2ZW4gcmVmZXJlbmNlIGVsZW1lbnQuXG4gKlxuICogVGhpcyBleHBvcnQgZG9lcyBub3QgaGF2ZSBhbnkgYHBsYXRmb3JtYCBpbnRlcmZhY2UgbG9naWMuIFlvdSB3aWxsIG5lZWQgdG9cbiAqIHdyaXRlIG9uZSBmb3IgdGhlIHBsYXRmb3JtIHlvdSBhcmUgdXNpbmcgRmxvYXRpbmcgVUkgd2l0aC5cbiAqL1xuY29uc3QgY29tcHV0ZVBvc2l0aW9uID0gYXN5bmMgKHJlZmVyZW5jZSwgZmxvYXRpbmcsIGNvbmZpZykgPT4ge1xuICBjb25zdCB7XG4gICAgcGxhY2VtZW50ID0gJ2JvdHRvbScsXG4gICAgc3RyYXRlZ3kgPSAnYWJzb2x1dGUnLFxuICAgIG1pZGRsZXdhcmUgPSBbXSxcbiAgICBwbGF0Zm9ybVxuICB9ID0gY29uZmlnO1xuICBjb25zdCB2YWxpZE1pZGRsZXdhcmUgPSBtaWRkbGV3YXJlLmZpbHRlcihCb29sZWFuKTtcbiAgY29uc3QgcnRsID0gYXdhaXQgKHBsYXRmb3JtLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc1JUTChmbG9hdGluZykpO1xuICBsZXQgcmVjdHMgPSBhd2FpdCBwbGF0Zm9ybS5nZXRFbGVtZW50UmVjdHMoe1xuICAgIHJlZmVyZW5jZSxcbiAgICBmbG9hdGluZyxcbiAgICBzdHJhdGVneVxuICB9KTtcbiAgbGV0IHtcbiAgICB4LFxuICAgIHlcbiAgfSA9IGNvbXB1dGVDb29yZHNGcm9tUGxhY2VtZW50KHJlY3RzLCBwbGFjZW1lbnQsIHJ0bCk7XG4gIGxldCBzdGF0ZWZ1bFBsYWNlbWVudCA9IHBsYWNlbWVudDtcbiAgbGV0IG1pZGRsZXdhcmVEYXRhID0ge307XG4gIGxldCByZXNldENvdW50ID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWxpZE1pZGRsZXdhcmUubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCB7XG4gICAgICBuYW1lLFxuICAgICAgZm5cbiAgICB9ID0gdmFsaWRNaWRkbGV3YXJlW2ldO1xuICAgIGNvbnN0IHtcbiAgICAgIHg6IG5leHRYLFxuICAgICAgeTogbmV4dFksXG4gICAgICBkYXRhLFxuICAgICAgcmVzZXRcbiAgICB9ID0gYXdhaXQgZm4oe1xuICAgICAgeCxcbiAgICAgIHksXG4gICAgICBpbml0aWFsUGxhY2VtZW50OiBwbGFjZW1lbnQsXG4gICAgICBwbGFjZW1lbnQ6IHN0YXRlZnVsUGxhY2VtZW50LFxuICAgICAgc3RyYXRlZ3ksXG4gICAgICBtaWRkbGV3YXJlRGF0YSxcbiAgICAgIHJlY3RzLFxuICAgICAgcGxhdGZvcm0sXG4gICAgICBlbGVtZW50czoge1xuICAgICAgICByZWZlcmVuY2UsXG4gICAgICAgIGZsb2F0aW5nXG4gICAgICB9XG4gICAgfSk7XG4gICAgeCA9IG5leHRYICE9IG51bGwgPyBuZXh0WCA6IHg7XG4gICAgeSA9IG5leHRZICE9IG51bGwgPyBuZXh0WSA6IHk7XG4gICAgbWlkZGxld2FyZURhdGEgPSB7XG4gICAgICAuLi5taWRkbGV3YXJlRGF0YSxcbiAgICAgIFtuYW1lXToge1xuICAgICAgICAuLi5taWRkbGV3YXJlRGF0YVtuYW1lXSxcbiAgICAgICAgLi4uZGF0YVxuICAgICAgfVxuICAgIH07XG4gICAgaWYgKHJlc2V0ICYmIHJlc2V0Q291bnQgPD0gNTApIHtcbiAgICAgIHJlc2V0Q291bnQrKztcbiAgICAgIGlmICh0eXBlb2YgcmVzZXQgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGlmIChyZXNldC5wbGFjZW1lbnQpIHtcbiAgICAgICAgICBzdGF0ZWZ1bFBsYWNlbWVudCA9IHJlc2V0LnBsYWNlbWVudDtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzZXQucmVjdHMpIHtcbiAgICAgICAgICByZWN0cyA9IHJlc2V0LnJlY3RzID09PSB0cnVlID8gYXdhaXQgcGxhdGZvcm0uZ2V0RWxlbWVudFJlY3RzKHtcbiAgICAgICAgICAgIHJlZmVyZW5jZSxcbiAgICAgICAgICAgIGZsb2F0aW5nLFxuICAgICAgICAgICAgc3RyYXRlZ3lcbiAgICAgICAgICB9KSA6IHJlc2V0LnJlY3RzO1xuICAgICAgICB9XG4gICAgICAgICh7XG4gICAgICAgICAgeCxcbiAgICAgICAgICB5XG4gICAgICAgIH0gPSBjb21wdXRlQ29vcmRzRnJvbVBsYWNlbWVudChyZWN0cywgc3RhdGVmdWxQbGFjZW1lbnQsIHJ0bCkpO1xuICAgICAgfVxuICAgICAgaSA9IC0xO1xuICAgIH1cbiAgfVxuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeSxcbiAgICBwbGFjZW1lbnQ6IHN0YXRlZnVsUGxhY2VtZW50LFxuICAgIHN0cmF0ZWd5LFxuICAgIG1pZGRsZXdhcmVEYXRhXG4gIH07XG59O1xuXG4vKipcbiAqIFJlc29sdmVzIHdpdGggYW4gb2JqZWN0IG9mIG92ZXJmbG93IHNpZGUgb2Zmc2V0cyB0aGF0IGRldGVybWluZSBob3cgbXVjaCB0aGVcbiAqIGVsZW1lbnQgaXMgb3ZlcmZsb3dpbmcgYSBnaXZlbiBjbGlwcGluZyBib3VuZGFyeSBvbiBlYWNoIHNpZGUuXG4gKiAtIHBvc2l0aXZlID0gb3ZlcmZsb3dpbmcgdGhlIGJvdW5kYXJ5IGJ5IHRoYXQgbnVtYmVyIG9mIHBpeGVsc1xuICogLSBuZWdhdGl2ZSA9IGhvdyBtYW55IHBpeGVscyBsZWZ0IGJlZm9yZSBpdCB3aWxsIG92ZXJmbG93XG4gKiAtIDAgPSBsaWVzIGZsdXNoIHdpdGggdGhlIGJvdW5kYXJ5XG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvZGV0ZWN0T3ZlcmZsb3dcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIG9wdGlvbnMpIHtcbiAgdmFyIF9hd2FpdCRwbGF0Zm9ybSRpc0VsZTtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICBjb25zdCB7XG4gICAgeCxcbiAgICB5LFxuICAgIHBsYXRmb3JtLFxuICAgIHJlY3RzLFxuICAgIGVsZW1lbnRzLFxuICAgIHN0cmF0ZWd5XG4gIH0gPSBzdGF0ZTtcbiAgY29uc3Qge1xuICAgIGJvdW5kYXJ5ID0gJ2NsaXBwaW5nQW5jZXN0b3JzJyxcbiAgICByb290Qm91bmRhcnkgPSAndmlld3BvcnQnLFxuICAgIGVsZW1lbnRDb250ZXh0ID0gJ2Zsb2F0aW5nJyxcbiAgICBhbHRCb3VuZGFyeSA9IGZhbHNlLFxuICAgIHBhZGRpbmcgPSAwXG4gIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gIGNvbnN0IHBhZGRpbmdPYmplY3QgPSBnZXRQYWRkaW5nT2JqZWN0KHBhZGRpbmcpO1xuICBjb25zdCBhbHRDb250ZXh0ID0gZWxlbWVudENvbnRleHQgPT09ICdmbG9hdGluZycgPyAncmVmZXJlbmNlJyA6ICdmbG9hdGluZyc7XG4gIGNvbnN0IGVsZW1lbnQgPSBlbGVtZW50c1thbHRCb3VuZGFyeSA/IGFsdENvbnRleHQgOiBlbGVtZW50Q29udGV4dF07XG4gIGNvbnN0IGNsaXBwaW5nQ2xpZW50UmVjdCA9IHJlY3RUb0NsaWVudFJlY3QoYXdhaXQgcGxhdGZvcm0uZ2V0Q2xpcHBpbmdSZWN0KHtcbiAgICBlbGVtZW50OiAoKF9hd2FpdCRwbGF0Zm9ybSRpc0VsZSA9IGF3YWl0IChwbGF0Zm9ybS5pc0VsZW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzRWxlbWVudChlbGVtZW50KSkpICE9IG51bGwgPyBfYXdhaXQkcGxhdGZvcm0kaXNFbGUgOiB0cnVlKSA/IGVsZW1lbnQgOiBlbGVtZW50LmNvbnRleHRFbGVtZW50IHx8IChhd2FpdCAocGxhdGZvcm0uZ2V0RG9jdW1lbnRFbGVtZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5nZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudHMuZmxvYXRpbmcpKSksXG4gICAgYm91bmRhcnksXG4gICAgcm9vdEJvdW5kYXJ5LFxuICAgIHN0cmF0ZWd5XG4gIH0pKTtcbiAgY29uc3QgcmVjdCA9IGVsZW1lbnRDb250ZXh0ID09PSAnZmxvYXRpbmcnID8ge1xuICAgIHgsXG4gICAgeSxcbiAgICB3aWR0aDogcmVjdHMuZmxvYXRpbmcud2lkdGgsXG4gICAgaGVpZ2h0OiByZWN0cy5mbG9hdGluZy5oZWlnaHRcbiAgfSA6IHJlY3RzLnJlZmVyZW5jZTtcbiAgY29uc3Qgb2Zmc2V0UGFyZW50ID0gYXdhaXQgKHBsYXRmb3JtLmdldE9mZnNldFBhcmVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnRzLmZsb2F0aW5nKSk7XG4gIGNvbnN0IG9mZnNldFNjYWxlID0gKGF3YWl0IChwbGF0Zm9ybS5pc0VsZW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzRWxlbWVudChvZmZzZXRQYXJlbnQpKSkgPyAoYXdhaXQgKHBsYXRmb3JtLmdldFNjYWxlID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5nZXRTY2FsZShvZmZzZXRQYXJlbnQpKSkgfHwge1xuICAgIHg6IDEsXG4gICAgeTogMVxuICB9IDoge1xuICAgIHg6IDEsXG4gICAgeTogMVxuICB9O1xuICBjb25zdCBlbGVtZW50Q2xpZW50UmVjdCA9IHJlY3RUb0NsaWVudFJlY3QocGxhdGZvcm0uY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3QgPyBhd2FpdCBwbGF0Zm9ybS5jb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdCh7XG4gICAgZWxlbWVudHMsXG4gICAgcmVjdCxcbiAgICBvZmZzZXRQYXJlbnQsXG4gICAgc3RyYXRlZ3lcbiAgfSkgOiByZWN0KTtcbiAgcmV0dXJuIHtcbiAgICB0b3A6IChjbGlwcGluZ0NsaWVudFJlY3QudG9wIC0gZWxlbWVudENsaWVudFJlY3QudG9wICsgcGFkZGluZ09iamVjdC50b3ApIC8gb2Zmc2V0U2NhbGUueSxcbiAgICBib3R0b206IChlbGVtZW50Q2xpZW50UmVjdC5ib3R0b20gLSBjbGlwcGluZ0NsaWVudFJlY3QuYm90dG9tICsgcGFkZGluZ09iamVjdC5ib3R0b20pIC8gb2Zmc2V0U2NhbGUueSxcbiAgICBsZWZ0OiAoY2xpcHBpbmdDbGllbnRSZWN0LmxlZnQgLSBlbGVtZW50Q2xpZW50UmVjdC5sZWZ0ICsgcGFkZGluZ09iamVjdC5sZWZ0KSAvIG9mZnNldFNjYWxlLngsXG4gICAgcmlnaHQ6IChlbGVtZW50Q2xpZW50UmVjdC5yaWdodCAtIGNsaXBwaW5nQ2xpZW50UmVjdC5yaWdodCArIHBhZGRpbmdPYmplY3QucmlnaHQpIC8gb2Zmc2V0U2NhbGUueFxuICB9O1xufVxuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdG8gcG9zaXRpb24gYW4gaW5uZXIgZWxlbWVudCBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBzbyB0aGF0IGl0XG4gKiBhcHBlYXJzIGNlbnRlcmVkIHRvIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hcnJvd1xuICovXG5jb25zdCBhcnJvdyA9IG9wdGlvbnMgPT4gKHtcbiAgbmFtZTogJ2Fycm93JyxcbiAgb3B0aW9ucyxcbiAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICBjb25zdCB7XG4gICAgICB4LFxuICAgICAgeSxcbiAgICAgIHBsYWNlbWVudCxcbiAgICAgIHJlY3RzLFxuICAgICAgcGxhdGZvcm0sXG4gICAgICBlbGVtZW50cyxcbiAgICAgIG1pZGRsZXdhcmVEYXRhXG4gICAgfSA9IHN0YXRlO1xuICAgIC8vIFNpbmNlIGBlbGVtZW50YCBpcyByZXF1aXJlZCwgd2UgZG9uJ3QgUGFydGlhbDw+IHRoZSB0eXBlLlxuICAgIGNvbnN0IHtcbiAgICAgIGVsZW1lbnQsXG4gICAgICBwYWRkaW5nID0gMFxuICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSkgfHwge307XG4gICAgaWYgKGVsZW1lbnQgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICBjb25zdCBwYWRkaW5nT2JqZWN0ID0gZ2V0UGFkZGluZ09iamVjdChwYWRkaW5nKTtcbiAgICBjb25zdCBjb29yZHMgPSB7XG4gICAgICB4LFxuICAgICAgeVxuICAgIH07XG4gICAgY29uc3QgYXhpcyA9IGdldEFsaWdubWVudEF4aXMocGxhY2VtZW50KTtcbiAgICBjb25zdCBsZW5ndGggPSBnZXRBeGlzTGVuZ3RoKGF4aXMpO1xuICAgIGNvbnN0IGFycm93RGltZW5zaW9ucyA9IGF3YWl0IHBsYXRmb3JtLmdldERpbWVuc2lvbnMoZWxlbWVudCk7XG4gICAgY29uc3QgaXNZQXhpcyA9IGF4aXMgPT09ICd5JztcbiAgICBjb25zdCBtaW5Qcm9wID0gaXNZQXhpcyA/ICd0b3AnIDogJ2xlZnQnO1xuICAgIGNvbnN0IG1heFByb3AgPSBpc1lBeGlzID8gJ2JvdHRvbScgOiAncmlnaHQnO1xuICAgIGNvbnN0IGNsaWVudFByb3AgPSBpc1lBeGlzID8gJ2NsaWVudEhlaWdodCcgOiAnY2xpZW50V2lkdGgnO1xuICAgIGNvbnN0IGVuZERpZmYgPSByZWN0cy5yZWZlcmVuY2VbbGVuZ3RoXSArIHJlY3RzLnJlZmVyZW5jZVtheGlzXSAtIGNvb3Jkc1theGlzXSAtIHJlY3RzLmZsb2F0aW5nW2xlbmd0aF07XG4gICAgY29uc3Qgc3RhcnREaWZmID0gY29vcmRzW2F4aXNdIC0gcmVjdHMucmVmZXJlbmNlW2F4aXNdO1xuICAgIGNvbnN0IGFycm93T2Zmc2V0UGFyZW50ID0gYXdhaXQgKHBsYXRmb3JtLmdldE9mZnNldFBhcmVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnQpKTtcbiAgICBsZXQgY2xpZW50U2l6ZSA9IGFycm93T2Zmc2V0UGFyZW50ID8gYXJyb3dPZmZzZXRQYXJlbnRbY2xpZW50UHJvcF0gOiAwO1xuXG4gICAgLy8gRE9NIHBsYXRmb3JtIGNhbiByZXR1cm4gYHdpbmRvd2AgYXMgdGhlIGBvZmZzZXRQYXJlbnRgLlxuICAgIGlmICghY2xpZW50U2l6ZSB8fCAhKGF3YWl0IChwbGF0Zm9ybS5pc0VsZW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzRWxlbWVudChhcnJvd09mZnNldFBhcmVudCkpKSkge1xuICAgICAgY2xpZW50U2l6ZSA9IGVsZW1lbnRzLmZsb2F0aW5nW2NsaWVudFByb3BdIHx8IHJlY3RzLmZsb2F0aW5nW2xlbmd0aF07XG4gICAgfVxuICAgIGNvbnN0IGNlbnRlclRvUmVmZXJlbmNlID0gZW5kRGlmZiAvIDIgLSBzdGFydERpZmYgLyAyO1xuXG4gICAgLy8gSWYgdGhlIHBhZGRpbmcgaXMgbGFyZ2UgZW5vdWdoIHRoYXQgaXQgY2F1c2VzIHRoZSBhcnJvdyB0byBubyBsb25nZXIgYmVcbiAgICAvLyBjZW50ZXJlZCwgbW9kaWZ5IHRoZSBwYWRkaW5nIHNvIHRoYXQgaXQgaXMgY2VudGVyZWQuXG4gICAgY29uc3QgbGFyZ2VzdFBvc3NpYmxlUGFkZGluZyA9IGNsaWVudFNpemUgLyAyIC0gYXJyb3dEaW1lbnNpb25zW2xlbmd0aF0gLyAyIC0gMTtcbiAgICBjb25zdCBtaW5QYWRkaW5nID0gbWluKHBhZGRpbmdPYmplY3RbbWluUHJvcF0sIGxhcmdlc3RQb3NzaWJsZVBhZGRpbmcpO1xuICAgIGNvbnN0IG1heFBhZGRpbmcgPSBtaW4ocGFkZGluZ09iamVjdFttYXhQcm9wXSwgbGFyZ2VzdFBvc3NpYmxlUGFkZGluZyk7XG5cbiAgICAvLyBNYWtlIHN1cmUgdGhlIGFycm93IGRvZXNuJ3Qgb3ZlcmZsb3cgdGhlIGZsb2F0aW5nIGVsZW1lbnQgaWYgdGhlIGNlbnRlclxuICAgIC8vIHBvaW50IGlzIG91dHNpZGUgdGhlIGZsb2F0aW5nIGVsZW1lbnQncyBib3VuZHMuXG4gICAgY29uc3QgbWluJDEgPSBtaW5QYWRkaW5nO1xuICAgIGNvbnN0IG1heCA9IGNsaWVudFNpemUgLSBhcnJvd0RpbWVuc2lvbnNbbGVuZ3RoXSAtIG1heFBhZGRpbmc7XG4gICAgY29uc3QgY2VudGVyID0gY2xpZW50U2l6ZSAvIDIgLSBhcnJvd0RpbWVuc2lvbnNbbGVuZ3RoXSAvIDIgKyBjZW50ZXJUb1JlZmVyZW5jZTtcbiAgICBjb25zdCBvZmZzZXQgPSBjbGFtcChtaW4kMSwgY2VudGVyLCBtYXgpO1xuXG4gICAgLy8gSWYgdGhlIHJlZmVyZW5jZSBpcyBzbWFsbCBlbm91Z2ggdGhhdCB0aGUgYXJyb3cncyBwYWRkaW5nIGNhdXNlcyBpdCB0b1xuICAgIC8vIHRvIHBvaW50IHRvIG5vdGhpbmcgZm9yIGFuIGFsaWduZWQgcGxhY2VtZW50LCBhZGp1c3QgdGhlIG9mZnNldCBvZiB0aGVcbiAgICAvLyBmbG9hdGluZyBlbGVtZW50IGl0c2VsZi4gVG8gZW5zdXJlIGBzaGlmdCgpYCBjb250aW51ZXMgdG8gdGFrZSBhY3Rpb24sXG4gICAgLy8gYSBzaW5nbGUgcmVzZXQgaXMgcGVyZm9ybWVkIHdoZW4gdGhpcyBpcyB0cnVlLlxuICAgIGNvbnN0IHNob3VsZEFkZE9mZnNldCA9ICFtaWRkbGV3YXJlRGF0YS5hcnJvdyAmJiBnZXRBbGlnbm1lbnQocGxhY2VtZW50KSAhPSBudWxsICYmIGNlbnRlciAhPT0gb2Zmc2V0ICYmIHJlY3RzLnJlZmVyZW5jZVtsZW5ndGhdIC8gMiAtIChjZW50ZXIgPCBtaW4kMSA/IG1pblBhZGRpbmcgOiBtYXhQYWRkaW5nKSAtIGFycm93RGltZW5zaW9uc1tsZW5ndGhdIC8gMiA8IDA7XG4gICAgY29uc3QgYWxpZ25tZW50T2Zmc2V0ID0gc2hvdWxkQWRkT2Zmc2V0ID8gY2VudGVyIDwgbWluJDEgPyBjZW50ZXIgLSBtaW4kMSA6IGNlbnRlciAtIG1heCA6IDA7XG4gICAgcmV0dXJuIHtcbiAgICAgIFtheGlzXTogY29vcmRzW2F4aXNdICsgYWxpZ25tZW50T2Zmc2V0LFxuICAgICAgZGF0YToge1xuICAgICAgICBbYXhpc106IG9mZnNldCxcbiAgICAgICAgY2VudGVyT2Zmc2V0OiBjZW50ZXIgLSBvZmZzZXQgLSBhbGlnbm1lbnRPZmZzZXQsXG4gICAgICAgIC4uLihzaG91bGRBZGRPZmZzZXQgJiYge1xuICAgICAgICAgIGFsaWdubWVudE9mZnNldFxuICAgICAgICB9KVxuICAgICAgfSxcbiAgICAgIHJlc2V0OiBzaG91bGRBZGRPZmZzZXRcbiAgICB9O1xuICB9XG59KTtcblxuZnVuY3Rpb24gZ2V0UGxhY2VtZW50TGlzdChhbGlnbm1lbnQsIGF1dG9BbGlnbm1lbnQsIGFsbG93ZWRQbGFjZW1lbnRzKSB7XG4gIGNvbnN0IGFsbG93ZWRQbGFjZW1lbnRzU29ydGVkQnlBbGlnbm1lbnQgPSBhbGlnbm1lbnQgPyBbLi4uYWxsb3dlZFBsYWNlbWVudHMuZmlsdGVyKHBsYWNlbWVudCA9PiBnZXRBbGlnbm1lbnQocGxhY2VtZW50KSA9PT0gYWxpZ25tZW50KSwgLi4uYWxsb3dlZFBsYWNlbWVudHMuZmlsdGVyKHBsYWNlbWVudCA9PiBnZXRBbGlnbm1lbnQocGxhY2VtZW50KSAhPT0gYWxpZ25tZW50KV0gOiBhbGxvd2VkUGxhY2VtZW50cy5maWx0ZXIocGxhY2VtZW50ID0+IGdldFNpZGUocGxhY2VtZW50KSA9PT0gcGxhY2VtZW50KTtcbiAgcmV0dXJuIGFsbG93ZWRQbGFjZW1lbnRzU29ydGVkQnlBbGlnbm1lbnQuZmlsdGVyKHBsYWNlbWVudCA9PiB7XG4gICAgaWYgKGFsaWdubWVudCkge1xuICAgICAgcmV0dXJuIGdldEFsaWdubWVudChwbGFjZW1lbnQpID09PSBhbGlnbm1lbnQgfHwgKGF1dG9BbGlnbm1lbnQgPyBnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudChwbGFjZW1lbnQpICE9PSBwbGFjZW1lbnQgOiBmYWxzZSk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9KTtcbn1cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IGNob29zaW5nIHRoZSBwbGFjZW1lbnRcbiAqIHRoYXQgaGFzIHRoZSBtb3N0IHNwYWNlIGF2YWlsYWJsZSBhdXRvbWF0aWNhbGx5LCB3aXRob3V0IG5lZWRpbmcgdG8gc3BlY2lmeSBhXG4gKiBwcmVmZXJyZWQgcGxhY2VtZW50LiBBbHRlcm5hdGl2ZSB0byBgZmxpcGAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXV0b1BsYWNlbWVudFxuICovXG5jb25zdCBhdXRvUGxhY2VtZW50ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdhdXRvUGxhY2VtZW50JyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICB2YXIgX21pZGRsZXdhcmVEYXRhJGF1dG9QLCBfbWlkZGxld2FyZURhdGEkYXV0b1AyLCBfcGxhY2VtZW50c1RoYXRGaXRPbkU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHJlY3RzLFxuICAgICAgICBtaWRkbGV3YXJlRGF0YSxcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICBwbGF0Zm9ybSxcbiAgICAgICAgZWxlbWVudHNcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgY3Jvc3NBeGlzID0gZmFsc2UsXG4gICAgICAgIGFsaWdubWVudCxcbiAgICAgICAgYWxsb3dlZFBsYWNlbWVudHMgPSBwbGFjZW1lbnRzLFxuICAgICAgICBhdXRvQWxpZ25tZW50ID0gdHJ1ZSxcbiAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICAgICAgY29uc3QgcGxhY2VtZW50cyQxID0gYWxpZ25tZW50ICE9PSB1bmRlZmluZWQgfHwgYWxsb3dlZFBsYWNlbWVudHMgPT09IHBsYWNlbWVudHMgPyBnZXRQbGFjZW1lbnRMaXN0KGFsaWdubWVudCB8fCBudWxsLCBhdXRvQWxpZ25tZW50LCBhbGxvd2VkUGxhY2VtZW50cykgOiBhbGxvd2VkUGxhY2VtZW50cztcbiAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIGRldGVjdE92ZXJmbG93T3B0aW9ucyk7XG4gICAgICBjb25zdCBjdXJyZW50SW5kZXggPSAoKF9taWRkbGV3YXJlRGF0YSRhdXRvUCA9IG1pZGRsZXdhcmVEYXRhLmF1dG9QbGFjZW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkYXV0b1AuaW5kZXgpIHx8IDA7XG4gICAgICBjb25zdCBjdXJyZW50UGxhY2VtZW50ID0gcGxhY2VtZW50cyQxW2N1cnJlbnRJbmRleF07XG4gICAgICBpZiAoY3VycmVudFBsYWNlbWVudCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGFsaWdubWVudFNpZGVzID0gZ2V0QWxpZ25tZW50U2lkZXMoY3VycmVudFBsYWNlbWVudCwgcmVjdHMsIGF3YWl0IChwbGF0Zm9ybS5pc1JUTCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNSVEwoZWxlbWVudHMuZmxvYXRpbmcpKSk7XG5cbiAgICAgIC8vIE1ha2UgYGNvbXB1dGVDb29yZHNgIHN0YXJ0IGZyb20gdGhlIHJpZ2h0IHBsYWNlLlxuICAgICAgaWYgKHBsYWNlbWVudCAhPT0gY3VycmVudFBsYWNlbWVudCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudHMkMVswXVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGN1cnJlbnRPdmVyZmxvd3MgPSBbb3ZlcmZsb3dbZ2V0U2lkZShjdXJyZW50UGxhY2VtZW50KV0sIG92ZXJmbG93W2FsaWdubWVudFNpZGVzWzBdXSwgb3ZlcmZsb3dbYWxpZ25tZW50U2lkZXNbMV1dXTtcbiAgICAgIGNvbnN0IGFsbE92ZXJmbG93cyA9IFsuLi4oKChfbWlkZGxld2FyZURhdGEkYXV0b1AyID0gbWlkZGxld2FyZURhdGEuYXV0b1BsYWNlbWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRhdXRvUDIub3ZlcmZsb3dzKSB8fCBbXSksIHtcbiAgICAgICAgcGxhY2VtZW50OiBjdXJyZW50UGxhY2VtZW50LFxuICAgICAgICBvdmVyZmxvd3M6IGN1cnJlbnRPdmVyZmxvd3NcbiAgICAgIH1dO1xuICAgICAgY29uc3QgbmV4dFBsYWNlbWVudCA9IHBsYWNlbWVudHMkMVtjdXJyZW50SW5kZXggKyAxXTtcblxuICAgICAgLy8gVGhlcmUgYXJlIG1vcmUgcGxhY2VtZW50cyB0byBjaGVjay5cbiAgICAgIGlmIChuZXh0UGxhY2VtZW50KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgaW5kZXg6IGN1cnJlbnRJbmRleCArIDEsXG4gICAgICAgICAgICBvdmVyZmxvd3M6IGFsbE92ZXJmbG93c1xuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHBsYWNlbWVudDogbmV4dFBsYWNlbWVudFxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBsYWNlbWVudHNTb3J0ZWRCeU1vc3RTcGFjZSA9IGFsbE92ZXJmbG93cy5tYXAoZCA9PiB7XG4gICAgICAgIGNvbnN0IGFsaWdubWVudCA9IGdldEFsaWdubWVudChkLnBsYWNlbWVudCk7XG4gICAgICAgIHJldHVybiBbZC5wbGFjZW1lbnQsIGFsaWdubWVudCAmJiBjcm9zc0F4aXMgP1xuICAgICAgICAvLyBDaGVjayBhbG9uZyB0aGUgbWFpbkF4aXMgYW5kIG1haW4gY3Jvc3NBeGlzIHNpZGUuXG4gICAgICAgIGQub3ZlcmZsb3dzLnNsaWNlKDAsIDIpLnJlZHVjZSgoYWNjLCB2KSA9PiBhY2MgKyB2LCAwKSA6XG4gICAgICAgIC8vIENoZWNrIG9ubHkgdGhlIG1haW5BeGlzLlxuICAgICAgICBkLm92ZXJmbG93c1swXSwgZC5vdmVyZmxvd3NdO1xuICAgICAgfSkuc29ydCgoYSwgYikgPT4gYVsxXSAtIGJbMV0pO1xuICAgICAgY29uc3QgcGxhY2VtZW50c1RoYXRGaXRPbkVhY2hTaWRlID0gcGxhY2VtZW50c1NvcnRlZEJ5TW9zdFNwYWNlLmZpbHRlcihkID0+IGRbMl0uc2xpY2UoMCxcbiAgICAgIC8vIEFsaWduZWQgcGxhY2VtZW50cyBzaG91bGQgbm90IGNoZWNrIHRoZWlyIG9wcG9zaXRlIGNyb3NzQXhpc1xuICAgICAgLy8gc2lkZS5cbiAgICAgIGdldEFsaWdubWVudChkWzBdKSA/IDIgOiAzKS5ldmVyeSh2ID0+IHYgPD0gMCkpO1xuICAgICAgY29uc3QgcmVzZXRQbGFjZW1lbnQgPSAoKF9wbGFjZW1lbnRzVGhhdEZpdE9uRSA9IHBsYWNlbWVudHNUaGF0Rml0T25FYWNoU2lkZVswXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9wbGFjZW1lbnRzVGhhdEZpdE9uRVswXSkgfHwgcGxhY2VtZW50c1NvcnRlZEJ5TW9zdFNwYWNlWzBdWzBdO1xuICAgICAgaWYgKHJlc2V0UGxhY2VtZW50ICE9PSBwbGFjZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBpbmRleDogY3VycmVudEluZGV4ICsgMSxcbiAgICAgICAgICAgIG92ZXJmbG93czogYWxsT3ZlcmZsb3dzXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgcGxhY2VtZW50OiByZXNldFBsYWNlbWVudFxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBmbGlwcGluZyB0aGUgYHBsYWNlbWVudGBcbiAqIGluIG9yZGVyIHRvIGtlZXAgaXQgaW4gdmlldyB3aGVuIHRoZSBwcmVmZXJyZWQgcGxhY2VtZW50KHMpIHdpbGwgb3ZlcmZsb3cgdGhlXG4gKiBjbGlwcGluZyBib3VuZGFyeS4gQWx0ZXJuYXRpdmUgdG8gYGF1dG9QbGFjZW1lbnRgLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2ZsaXBcbiAqL1xuY29uc3QgZmxpcCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnZmxpcCcsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgdmFyIF9taWRkbGV3YXJlRGF0YSRhcnJvdywgX21pZGRsZXdhcmVEYXRhJGZsaXA7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgbWlkZGxld2FyZURhdGEsXG4gICAgICAgIHJlY3RzLFxuICAgICAgICBpbml0aWFsUGxhY2VtZW50LFxuICAgICAgICBwbGF0Zm9ybSxcbiAgICAgICAgZWxlbWVudHNcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgbWFpbkF4aXM6IGNoZWNrTWFpbkF4aXMgPSB0cnVlLFxuICAgICAgICBjcm9zc0F4aXM6IGNoZWNrQ3Jvc3NBeGlzID0gdHJ1ZSxcbiAgICAgICAgZmFsbGJhY2tQbGFjZW1lbnRzOiBzcGVjaWZpZWRGYWxsYmFja1BsYWNlbWVudHMsXG4gICAgICAgIGZhbGxiYWNrU3RyYXRlZ3kgPSAnYmVzdEZpdCcsXG4gICAgICAgIGZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24gPSAnbm9uZScsXG4gICAgICAgIGZsaXBBbGlnbm1lbnQgPSB0cnVlLFxuICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG5cbiAgICAgIC8vIElmIGEgcmVzZXQgYnkgdGhlIGFycm93IHdhcyBjYXVzZWQgZHVlIHRvIGFuIGFsaWdubWVudCBvZmZzZXQgYmVpbmdcbiAgICAgIC8vIGFkZGVkLCB3ZSBzaG91bGQgc2tpcCBhbnkgbG9naWMgbm93IHNpbmNlIGBmbGlwKClgIGhhcyBhbHJlYWR5IGRvbmUgaXRzXG4gICAgICAvLyB3b3JrLlxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2Zsb2F0aW5nLXVpL2Zsb2F0aW5nLXVpL2lzc3Vlcy8yNTQ5I2lzc3VlY29tbWVudC0xNzE5NjAxNjQzXG4gICAgICBpZiAoKF9taWRkbGV3YXJlRGF0YSRhcnJvdyA9IG1pZGRsZXdhcmVEYXRhLmFycm93KSAhPSBudWxsICYmIF9taWRkbGV3YXJlRGF0YSRhcnJvdy5hbGlnbm1lbnRPZmZzZXQpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgICAgY29uc3Qgc2lkZSA9IGdldFNpZGUocGxhY2VtZW50KTtcbiAgICAgIGNvbnN0IGluaXRpYWxTaWRlQXhpcyA9IGdldFNpZGVBeGlzKGluaXRpYWxQbGFjZW1lbnQpO1xuICAgICAgY29uc3QgaXNCYXNlUGxhY2VtZW50ID0gZ2V0U2lkZShpbml0aWFsUGxhY2VtZW50KSA9PT0gaW5pdGlhbFBsYWNlbWVudDtcbiAgICAgIGNvbnN0IHJ0bCA9IGF3YWl0IChwbGF0Zm9ybS5pc1JUTCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNSVEwoZWxlbWVudHMuZmxvYXRpbmcpKTtcbiAgICAgIGNvbnN0IGZhbGxiYWNrUGxhY2VtZW50cyA9IHNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyB8fCAoaXNCYXNlUGxhY2VtZW50IHx8ICFmbGlwQWxpZ25tZW50ID8gW2dldE9wcG9zaXRlUGxhY2VtZW50KGluaXRpYWxQbGFjZW1lbnQpXSA6IGdldEV4cGFuZGVkUGxhY2VtZW50cyhpbml0aWFsUGxhY2VtZW50KSk7XG4gICAgICBjb25zdCBoYXNGYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uID0gZmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbiAhPT0gJ25vbmUnO1xuICAgICAgaWYgKCFzcGVjaWZpZWRGYWxsYmFja1BsYWNlbWVudHMgJiYgaGFzRmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbikge1xuICAgICAgICBmYWxsYmFja1BsYWNlbWVudHMucHVzaCguLi5nZXRPcHBvc2l0ZUF4aXNQbGFjZW1lbnRzKGluaXRpYWxQbGFjZW1lbnQsIGZsaXBBbGlnbm1lbnQsIGZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24sIHJ0bCkpO1xuICAgICAgfVxuICAgICAgY29uc3QgcGxhY2VtZW50cyA9IFtpbml0aWFsUGxhY2VtZW50LCAuLi5mYWxsYmFja1BsYWNlbWVudHNdO1xuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgZGV0ZWN0T3ZlcmZsb3dPcHRpb25zKTtcbiAgICAgIGNvbnN0IG92ZXJmbG93cyA9IFtdO1xuICAgICAgbGV0IG92ZXJmbG93c0RhdGEgPSAoKF9taWRkbGV3YXJlRGF0YSRmbGlwID0gbWlkZGxld2FyZURhdGEuZmxpcCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRmbGlwLm92ZXJmbG93cykgfHwgW107XG4gICAgICBpZiAoY2hlY2tNYWluQXhpcykge1xuICAgICAgICBvdmVyZmxvd3MucHVzaChvdmVyZmxvd1tzaWRlXSk7XG4gICAgICB9XG4gICAgICBpZiAoY2hlY2tDcm9zc0F4aXMpIHtcbiAgICAgICAgY29uc3Qgc2lkZXMgPSBnZXRBbGlnbm1lbnRTaWRlcyhwbGFjZW1lbnQsIHJlY3RzLCBydGwpO1xuICAgICAgICBvdmVyZmxvd3MucHVzaChvdmVyZmxvd1tzaWRlc1swXV0sIG92ZXJmbG93W3NpZGVzWzFdXSk7XG4gICAgICB9XG4gICAgICBvdmVyZmxvd3NEYXRhID0gWy4uLm92ZXJmbG93c0RhdGEsIHtcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICBvdmVyZmxvd3NcbiAgICAgIH1dO1xuXG4gICAgICAvLyBPbmUgb3IgbW9yZSBzaWRlcyBpcyBvdmVyZmxvd2luZy5cbiAgICAgIGlmICghb3ZlcmZsb3dzLmV2ZXJ5KHNpZGUgPT4gc2lkZSA8PSAwKSkge1xuICAgICAgICB2YXIgX21pZGRsZXdhcmVEYXRhJGZsaXAyLCBfb3ZlcmZsb3dzRGF0YSRmaWx0ZXI7XG4gICAgICAgIGNvbnN0IG5leHRJbmRleCA9ICgoKF9taWRkbGV3YXJlRGF0YSRmbGlwMiA9IG1pZGRsZXdhcmVEYXRhLmZsaXApID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkZmxpcDIuaW5kZXgpIHx8IDApICsgMTtcbiAgICAgICAgY29uc3QgbmV4dFBsYWNlbWVudCA9IHBsYWNlbWVudHNbbmV4dEluZGV4XTtcbiAgICAgICAgaWYgKG5leHRQbGFjZW1lbnQpIHtcbiAgICAgICAgICAvLyBUcnkgbmV4dCBwbGFjZW1lbnQgYW5kIHJlLXJ1biB0aGUgbGlmZWN5Y2xlLlxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgIGluZGV4OiBuZXh0SW5kZXgsXG4gICAgICAgICAgICAgIG92ZXJmbG93czogb3ZlcmZsb3dzRGF0YVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICAgIHBsYWNlbWVudDogbmV4dFBsYWNlbWVudFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGaXJzdCwgZmluZCB0aGUgY2FuZGlkYXRlcyB0aGF0IGZpdCBvbiB0aGUgbWFpbkF4aXMgc2lkZSBvZiBvdmVyZmxvdyxcbiAgICAgICAgLy8gdGhlbiBmaW5kIHRoZSBwbGFjZW1lbnQgdGhhdCBmaXRzIHRoZSBiZXN0IG9uIHRoZSBtYWluIGNyb3NzQXhpcyBzaWRlLlxuICAgICAgICBsZXQgcmVzZXRQbGFjZW1lbnQgPSAoX292ZXJmbG93c0RhdGEkZmlsdGVyID0gb3ZlcmZsb3dzRGF0YS5maWx0ZXIoZCA9PiBkLm92ZXJmbG93c1swXSA8PSAwKS5zb3J0KChhLCBiKSA9PiBhLm92ZXJmbG93c1sxXSAtIGIub3ZlcmZsb3dzWzFdKVswXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9vdmVyZmxvd3NEYXRhJGZpbHRlci5wbGFjZW1lbnQ7XG5cbiAgICAgICAgLy8gT3RoZXJ3aXNlIGZhbGxiYWNrLlxuICAgICAgICBpZiAoIXJlc2V0UGxhY2VtZW50KSB7XG4gICAgICAgICAgc3dpdGNoIChmYWxsYmFja1N0cmF0ZWd5KSB7XG4gICAgICAgICAgICBjYXNlICdiZXN0Rml0JzpcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHZhciBfb3ZlcmZsb3dzRGF0YSRmaWx0ZXIyO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBsYWNlbWVudCA9IChfb3ZlcmZsb3dzRGF0YSRmaWx0ZXIyID0gb3ZlcmZsb3dzRGF0YS5maWx0ZXIoZCA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAoaGFzRmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50U2lkZUF4aXMgPSBnZXRTaWRlQXhpcyhkLnBsYWNlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50U2lkZUF4aXMgPT09IGluaXRpYWxTaWRlQXhpcyB8fFxuICAgICAgICAgICAgICAgICAgICAvLyBDcmVhdGUgYSBiaWFzIHRvIHRoZSBgeWAgc2lkZSBheGlzIGR1ZSB0byBob3Jpem9udGFsXG4gICAgICAgICAgICAgICAgICAgIC8vIHJlYWRpbmcgZGlyZWN0aW9ucyBmYXZvcmluZyBncmVhdGVyIHdpZHRoLlxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50U2lkZUF4aXMgPT09ICd5JztcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH0pLm1hcChkID0+IFtkLnBsYWNlbWVudCwgZC5vdmVyZmxvd3MuZmlsdGVyKG92ZXJmbG93ID0+IG92ZXJmbG93ID4gMCkucmVkdWNlKChhY2MsIG92ZXJmbG93KSA9PiBhY2MgKyBvdmVyZmxvdywgMCldKS5zb3J0KChhLCBiKSA9PiBhWzFdIC0gYlsxXSlbMF0pID09IG51bGwgPyB2b2lkIDAgOiBfb3ZlcmZsb3dzRGF0YSRmaWx0ZXIyWzBdO1xuICAgICAgICAgICAgICAgIGlmIChwbGFjZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgIHJlc2V0UGxhY2VtZW50ID0gcGxhY2VtZW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnaW5pdGlhbFBsYWNlbWVudCc6XG4gICAgICAgICAgICAgIHJlc2V0UGxhY2VtZW50ID0gaW5pdGlhbFBsYWNlbWVudDtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChwbGFjZW1lbnQgIT09IHJlc2V0UGxhY2VtZW50KSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICAgIHBsYWNlbWVudDogcmVzZXRQbGFjZW1lbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICB9O1xufTtcblxuZnVuY3Rpb24gZ2V0U2lkZU9mZnNldHMob3ZlcmZsb3csIHJlY3QpIHtcbiAgcmV0dXJuIHtcbiAgICB0b3A6IG92ZXJmbG93LnRvcCAtIHJlY3QuaGVpZ2h0LFxuICAgIHJpZ2h0OiBvdmVyZmxvdy5yaWdodCAtIHJlY3Qud2lkdGgsXG4gICAgYm90dG9tOiBvdmVyZmxvdy5ib3R0b20gLSByZWN0LmhlaWdodCxcbiAgICBsZWZ0OiBvdmVyZmxvdy5sZWZ0IC0gcmVjdC53aWR0aFxuICB9O1xufVxuZnVuY3Rpb24gaXNBbnlTaWRlRnVsbHlDbGlwcGVkKG92ZXJmbG93KSB7XG4gIHJldHVybiBzaWRlcy5zb21lKHNpZGUgPT4gb3ZlcmZsb3dbc2lkZV0gPj0gMCk7XG59XG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdG8gaGlkZSB0aGUgZmxvYXRpbmcgZWxlbWVudCBpbiBhcHBsaWNhYmxlIHNpdHVhdGlvbnMsIHN1Y2ggYXNcbiAqIHdoZW4gaXQgaXMgbm90IGluIHRoZSBzYW1lIGNsaXBwaW5nIGNvbnRleHQgYXMgdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2hpZGVcbiAqL1xuY29uc3QgaGlkZSA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnaGlkZScsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICByZWN0c1xuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBzdHJhdGVneSA9ICdyZWZlcmVuY2VIaWRkZW4nLFxuICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBzd2l0Y2ggKHN0cmF0ZWd5KSB7XG4gICAgICAgIGNhc2UgJ3JlZmVyZW5jZUhpZGRlbic6XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwge1xuICAgICAgICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnMsXG4gICAgICAgICAgICAgIGVsZW1lbnRDb250ZXh0OiAncmVmZXJlbmNlJ1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBvZmZzZXRzID0gZ2V0U2lkZU9mZnNldHMob3ZlcmZsb3csIHJlY3RzLnJlZmVyZW5jZSk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgcmVmZXJlbmNlSGlkZGVuT2Zmc2V0czogb2Zmc2V0cyxcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VIaWRkZW46IGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChvZmZzZXRzKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgY2FzZSAnZXNjYXBlZCc6XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwge1xuICAgICAgICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnMsXG4gICAgICAgICAgICAgIGFsdEJvdW5kYXJ5OiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldHMgPSBnZXRTaWRlT2Zmc2V0cyhvdmVyZmxvdywgcmVjdHMuZmxvYXRpbmcpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIGVzY2FwZWRPZmZzZXRzOiBvZmZzZXRzLFxuICAgICAgICAgICAgICAgIGVzY2FwZWQ6IGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChvZmZzZXRzKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB7XG4gICAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcbn07XG5cbmZ1bmN0aW9uIGdldEJvdW5kaW5nUmVjdChyZWN0cykge1xuICBjb25zdCBtaW5YID0gbWluKC4uLnJlY3RzLm1hcChyZWN0ID0+IHJlY3QubGVmdCkpO1xuICBjb25zdCBtaW5ZID0gbWluKC4uLnJlY3RzLm1hcChyZWN0ID0+IHJlY3QudG9wKSk7XG4gIGNvbnN0IG1heFggPSBtYXgoLi4ucmVjdHMubWFwKHJlY3QgPT4gcmVjdC5yaWdodCkpO1xuICBjb25zdCBtYXhZID0gbWF4KC4uLnJlY3RzLm1hcChyZWN0ID0+IHJlY3QuYm90dG9tKSk7XG4gIHJldHVybiB7XG4gICAgeDogbWluWCxcbiAgICB5OiBtaW5ZLFxuICAgIHdpZHRoOiBtYXhYIC0gbWluWCxcbiAgICBoZWlnaHQ6IG1heFkgLSBtaW5ZXG4gIH07XG59XG5mdW5jdGlvbiBnZXRSZWN0c0J5TGluZShyZWN0cykge1xuICBjb25zdCBzb3J0ZWRSZWN0cyA9IHJlY3RzLnNsaWNlKCkuc29ydCgoYSwgYikgPT4gYS55IC0gYi55KTtcbiAgY29uc3QgZ3JvdXBzID0gW107XG4gIGxldCBwcmV2UmVjdCA9IG51bGw7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc29ydGVkUmVjdHMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCByZWN0ID0gc29ydGVkUmVjdHNbaV07XG4gICAgaWYgKCFwcmV2UmVjdCB8fCByZWN0LnkgLSBwcmV2UmVjdC55ID4gcHJldlJlY3QuaGVpZ2h0IC8gMikge1xuICAgICAgZ3JvdXBzLnB1c2goW3JlY3RdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZ3JvdXBzW2dyb3Vwcy5sZW5ndGggLSAxXS5wdXNoKHJlY3QpO1xuICAgIH1cbiAgICBwcmV2UmVjdCA9IHJlY3Q7XG4gIH1cbiAgcmV0dXJuIGdyb3Vwcy5tYXAocmVjdCA9PiByZWN0VG9DbGllbnRSZWN0KGdldEJvdW5kaW5nUmVjdChyZWN0KSkpO1xufVxuLyoqXG4gKiBQcm92aWRlcyBpbXByb3ZlZCBwb3NpdGlvbmluZyBmb3IgaW5saW5lIHJlZmVyZW5jZSBlbGVtZW50cyB0aGF0IGNhbiBzcGFuXG4gKiBvdmVyIG11bHRpcGxlIGxpbmVzLCBzdWNoIGFzIGh5cGVybGlua3Mgb3IgcmFuZ2Ugc2VsZWN0aW9ucy5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9pbmxpbmVcbiAqL1xuY29uc3QgaW5saW5lID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdpbmxpbmUnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICBlbGVtZW50cyxcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIHBsYXRmb3JtLFxuICAgICAgICBzdHJhdGVneVxuICAgICAgfSA9IHN0YXRlO1xuICAgICAgLy8gQSBNb3VzZUV2ZW50J3MgY2xpZW50e1gsWX0gY29vcmRzIGNhbiBiZSB1cCB0byAyIHBpeGVscyBvZmYgYVxuICAgICAgLy8gQ2xpZW50UmVjdCdzIGJvdW5kcywgZGVzcGl0ZSB0aGUgZXZlbnQgbGlzdGVuZXIgYmVpbmcgdHJpZ2dlcmVkLiBBXG4gICAgICAvLyBwYWRkaW5nIG9mIDIgc2VlbXMgdG8gaGFuZGxlIHRoaXMgaXNzdWUuXG4gICAgICBjb25zdCB7XG4gICAgICAgIHBhZGRpbmcgPSAyLFxuICAgICAgICB4LFxuICAgICAgICB5XG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICAgICAgY29uc3QgbmF0aXZlQ2xpZW50UmVjdHMgPSBBcnJheS5mcm9tKChhd2FpdCAocGxhdGZvcm0uZ2V0Q2xpZW50UmVjdHMgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmdldENsaWVudFJlY3RzKGVsZW1lbnRzLnJlZmVyZW5jZSkpKSB8fCBbXSk7XG4gICAgICBjb25zdCBjbGllbnRSZWN0cyA9IGdldFJlY3RzQnlMaW5lKG5hdGl2ZUNsaWVudFJlY3RzKTtcbiAgICAgIGNvbnN0IGZhbGxiYWNrID0gcmVjdFRvQ2xpZW50UmVjdChnZXRCb3VuZGluZ1JlY3QobmF0aXZlQ2xpZW50UmVjdHMpKTtcbiAgICAgIGNvbnN0IHBhZGRpbmdPYmplY3QgPSBnZXRQYWRkaW5nT2JqZWN0KHBhZGRpbmcpO1xuICAgICAgZnVuY3Rpb24gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkge1xuICAgICAgICAvLyBUaGVyZSBhcmUgdHdvIHJlY3RzIGFuZCB0aGV5IGFyZSBkaXNqb2luZWQuXG4gICAgICAgIGlmIChjbGllbnRSZWN0cy5sZW5ndGggPT09IDIgJiYgY2xpZW50UmVjdHNbMF0ubGVmdCA+IGNsaWVudFJlY3RzWzFdLnJpZ2h0ICYmIHggIT0gbnVsbCAmJiB5ICE9IG51bGwpIHtcbiAgICAgICAgICAvLyBGaW5kIHRoZSBmaXJzdCByZWN0IGluIHdoaWNoIHRoZSBwb2ludCBpcyBmdWxseSBpbnNpZGUuXG4gICAgICAgICAgcmV0dXJuIGNsaWVudFJlY3RzLmZpbmQocmVjdCA9PiB4ID4gcmVjdC5sZWZ0IC0gcGFkZGluZ09iamVjdC5sZWZ0ICYmIHggPCByZWN0LnJpZ2h0ICsgcGFkZGluZ09iamVjdC5yaWdodCAmJiB5ID4gcmVjdC50b3AgLSBwYWRkaW5nT2JqZWN0LnRvcCAmJiB5IDwgcmVjdC5ib3R0b20gKyBwYWRkaW5nT2JqZWN0LmJvdHRvbSkgfHwgZmFsbGJhY2s7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUaGVyZSBhcmUgMiBvciBtb3JlIGNvbm5lY3RlZCByZWN0cy5cbiAgICAgICAgaWYgKGNsaWVudFJlY3RzLmxlbmd0aCA+PSAyKSB7XG4gICAgICAgICAgaWYgKGdldFNpZGVBeGlzKHBsYWNlbWVudCkgPT09ICd5Jykge1xuICAgICAgICAgICAgY29uc3QgZmlyc3RSZWN0ID0gY2xpZW50UmVjdHNbMF07XG4gICAgICAgICAgICBjb25zdCBsYXN0UmVjdCA9IGNsaWVudFJlY3RzW2NsaWVudFJlY3RzLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgY29uc3QgaXNUb3AgPSBnZXRTaWRlKHBsYWNlbWVudCkgPT09ICd0b3AnO1xuICAgICAgICAgICAgY29uc3QgdG9wID0gZmlyc3RSZWN0LnRvcDtcbiAgICAgICAgICAgIGNvbnN0IGJvdHRvbSA9IGxhc3RSZWN0LmJvdHRvbTtcbiAgICAgICAgICAgIGNvbnN0IGxlZnQgPSBpc1RvcCA/IGZpcnN0UmVjdC5sZWZ0IDogbGFzdFJlY3QubGVmdDtcbiAgICAgICAgICAgIGNvbnN0IHJpZ2h0ID0gaXNUb3AgPyBmaXJzdFJlY3QucmlnaHQgOiBsYXN0UmVjdC5yaWdodDtcbiAgICAgICAgICAgIGNvbnN0IHdpZHRoID0gcmlnaHQgLSBsZWZ0O1xuICAgICAgICAgICAgY29uc3QgaGVpZ2h0ID0gYm90dG9tIC0gdG9wO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgdG9wLFxuICAgICAgICAgICAgICBib3R0b20sXG4gICAgICAgICAgICAgIGxlZnQsXG4gICAgICAgICAgICAgIHJpZ2h0LFxuICAgICAgICAgICAgICB3aWR0aCxcbiAgICAgICAgICAgICAgaGVpZ2h0LFxuICAgICAgICAgICAgICB4OiBsZWZ0LFxuICAgICAgICAgICAgICB5OiB0b3BcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGlzTGVmdFNpZGUgPSBnZXRTaWRlKHBsYWNlbWVudCkgPT09ICdsZWZ0JztcbiAgICAgICAgICBjb25zdCBtYXhSaWdodCA9IG1heCguLi5jbGllbnRSZWN0cy5tYXAocmVjdCA9PiByZWN0LnJpZ2h0KSk7XG4gICAgICAgICAgY29uc3QgbWluTGVmdCA9IG1pbiguLi5jbGllbnRSZWN0cy5tYXAocmVjdCA9PiByZWN0LmxlZnQpKTtcbiAgICAgICAgICBjb25zdCBtZWFzdXJlUmVjdHMgPSBjbGllbnRSZWN0cy5maWx0ZXIocmVjdCA9PiBpc0xlZnRTaWRlID8gcmVjdC5sZWZ0ID09PSBtaW5MZWZ0IDogcmVjdC5yaWdodCA9PT0gbWF4UmlnaHQpO1xuICAgICAgICAgIGNvbnN0IHRvcCA9IG1lYXN1cmVSZWN0c1swXS50b3A7XG4gICAgICAgICAgY29uc3QgYm90dG9tID0gbWVhc3VyZVJlY3RzW21lYXN1cmVSZWN0cy5sZW5ndGggLSAxXS5ib3R0b207XG4gICAgICAgICAgY29uc3QgbGVmdCA9IG1pbkxlZnQ7XG4gICAgICAgICAgY29uc3QgcmlnaHQgPSBtYXhSaWdodDtcbiAgICAgICAgICBjb25zdCB3aWR0aCA9IHJpZ2h0IC0gbGVmdDtcbiAgICAgICAgICBjb25zdCBoZWlnaHQgPSBib3R0b20gLSB0b3A7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRvcCxcbiAgICAgICAgICAgIGJvdHRvbSxcbiAgICAgICAgICAgIGxlZnQsXG4gICAgICAgICAgICByaWdodCxcbiAgICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0LFxuICAgICAgICAgICAgeDogbGVmdCxcbiAgICAgICAgICAgIHk6IHRvcFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbGxiYWNrO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVzZXRSZWN0cyA9IGF3YWl0IHBsYXRmb3JtLmdldEVsZW1lbnRSZWN0cyh7XG4gICAgICAgIHJlZmVyZW5jZToge1xuICAgICAgICAgIGdldEJvdW5kaW5nQ2xpZW50UmVjdFxuICAgICAgICB9LFxuICAgICAgICBmbG9hdGluZzogZWxlbWVudHMuZmxvYXRpbmcsXG4gICAgICAgIHN0cmF0ZWd5XG4gICAgICB9KTtcbiAgICAgIGlmIChyZWN0cy5yZWZlcmVuY2UueCAhPT0gcmVzZXRSZWN0cy5yZWZlcmVuY2UueCB8fCByZWN0cy5yZWZlcmVuY2UueSAhPT0gcmVzZXRSZWN0cy5yZWZlcmVuY2UueSB8fCByZWN0cy5yZWZlcmVuY2Uud2lkdGggIT09IHJlc2V0UmVjdHMucmVmZXJlbmNlLndpZHRoIHx8IHJlY3RzLnJlZmVyZW5jZS5oZWlnaHQgIT09IHJlc2V0UmVjdHMucmVmZXJlbmNlLmhlaWdodCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICByZWN0czogcmVzZXRSZWN0c1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBGb3IgdHlwZSBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSwgdGhlIGBPZmZzZXRPcHRpb25zYCB0eXBlIHdhcyBhbHNvXG4vLyBEZXJpdmFibGUuXG5cbmFzeW5jIGZ1bmN0aW9uIGNvbnZlcnRWYWx1ZVRvQ29vcmRzKHN0YXRlLCBvcHRpb25zKSB7XG4gIGNvbnN0IHtcbiAgICBwbGFjZW1lbnQsXG4gICAgcGxhdGZvcm0sXG4gICAgZWxlbWVudHNcbiAgfSA9IHN0YXRlO1xuICBjb25zdCBydGwgPSBhd2FpdCAocGxhdGZvcm0uaXNSVEwgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzUlRMKGVsZW1lbnRzLmZsb2F0aW5nKSk7XG4gIGNvbnN0IHNpZGUgPSBnZXRTaWRlKHBsYWNlbWVudCk7XG4gIGNvbnN0IGFsaWdubWVudCA9IGdldEFsaWdubWVudChwbGFjZW1lbnQpO1xuICBjb25zdCBpc1ZlcnRpY2FsID0gZ2V0U2lkZUF4aXMocGxhY2VtZW50KSA9PT0gJ3knO1xuICBjb25zdCBtYWluQXhpc011bHRpID0gWydsZWZ0JywgJ3RvcCddLmluY2x1ZGVzKHNpZGUpID8gLTEgOiAxO1xuICBjb25zdCBjcm9zc0F4aXNNdWx0aSA9IHJ0bCAmJiBpc1ZlcnRpY2FsID8gLTEgOiAxO1xuICBjb25zdCByYXdWYWx1ZSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWNvbnN0XG4gIGxldCB7XG4gICAgbWFpbkF4aXMsXG4gICAgY3Jvc3NBeGlzLFxuICAgIGFsaWdubWVudEF4aXNcbiAgfSA9IHR5cGVvZiByYXdWYWx1ZSA9PT0gJ251bWJlcicgPyB7XG4gICAgbWFpbkF4aXM6IHJhd1ZhbHVlLFxuICAgIGNyb3NzQXhpczogMCxcbiAgICBhbGlnbm1lbnRBeGlzOiBudWxsXG4gIH0gOiB7XG4gICAgbWFpbkF4aXM6IHJhd1ZhbHVlLm1haW5BeGlzIHx8IDAsXG4gICAgY3Jvc3NBeGlzOiByYXdWYWx1ZS5jcm9zc0F4aXMgfHwgMCxcbiAgICBhbGlnbm1lbnRBeGlzOiByYXdWYWx1ZS5hbGlnbm1lbnRBeGlzXG4gIH07XG4gIGlmIChhbGlnbm1lbnQgJiYgdHlwZW9mIGFsaWdubWVudEF4aXMgPT09ICdudW1iZXInKSB7XG4gICAgY3Jvc3NBeGlzID0gYWxpZ25tZW50ID09PSAnZW5kJyA/IGFsaWdubWVudEF4aXMgKiAtMSA6IGFsaWdubWVudEF4aXM7XG4gIH1cbiAgcmV0dXJuIGlzVmVydGljYWwgPyB7XG4gICAgeDogY3Jvc3NBeGlzICogY3Jvc3NBeGlzTXVsdGksXG4gICAgeTogbWFpbkF4aXMgKiBtYWluQXhpc011bHRpXG4gIH0gOiB7XG4gICAgeDogbWFpbkF4aXMgKiBtYWluQXhpc011bHRpLFxuICAgIHk6IGNyb3NzQXhpcyAqIGNyb3NzQXhpc011bHRpXG4gIH07XG59XG5cbi8qKlxuICogTW9kaWZpZXMgdGhlIHBsYWNlbWVudCBieSB0cmFuc2xhdGluZyB0aGUgZmxvYXRpbmcgZWxlbWVudCBhbG9uZyB0aGVcbiAqIHNwZWNpZmllZCBheGVzLlxuICogQSBudW1iZXIgKHNob3J0aGFuZCBmb3IgYG1haW5BeGlzYCBvciBkaXN0YW5jZSksIG9yIGFuIGF4ZXMgY29uZmlndXJhdGlvblxuICogb2JqZWN0IG1heSBiZSBwYXNzZWQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvb2Zmc2V0XG4gKi9cbmNvbnN0IG9mZnNldCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0gMDtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdvZmZzZXQnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkb2Zmc2UsIF9taWRkbGV3YXJlRGF0YSRhcnJvdztcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgeCxcbiAgICAgICAgeSxcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICBtaWRkbGV3YXJlRGF0YVxuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3QgZGlmZkNvb3JkcyA9IGF3YWl0IGNvbnZlcnRWYWx1ZVRvQ29vcmRzKHN0YXRlLCBvcHRpb25zKTtcblxuICAgICAgLy8gSWYgdGhlIHBsYWNlbWVudCBpcyB0aGUgc2FtZSBhbmQgdGhlIGFycm93IGNhdXNlZCBhbiBhbGlnbm1lbnQgb2Zmc2V0XG4gICAgICAvLyB0aGVuIHdlIGRvbid0IG5lZWQgdG8gY2hhbmdlIHRoZSBwb3NpdGlvbmluZyBjb29yZGluYXRlcy5cbiAgICAgIGlmIChwbGFjZW1lbnQgPT09ICgoX21pZGRsZXdhcmVEYXRhJG9mZnNlID0gbWlkZGxld2FyZURhdGEub2Zmc2V0KSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJG9mZnNlLnBsYWNlbWVudCkgJiYgKF9taWRkbGV3YXJlRGF0YSRhcnJvdyA9IG1pZGRsZXdhcmVEYXRhLmFycm93KSAhPSBudWxsICYmIF9taWRkbGV3YXJlRGF0YSRhcnJvdy5hbGlnbm1lbnRPZmZzZXQpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgeDogeCArIGRpZmZDb29yZHMueCxcbiAgICAgICAgeTogeSArIGRpZmZDb29yZHMueSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIC4uLmRpZmZDb29yZHMsXG4gICAgICAgICAgcGxhY2VtZW50XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgc2hpZnRpbmcgaXQgaW4gb3JkZXIgdG9cbiAqIGtlZXAgaXQgaW4gdmlldyB3aGVuIGl0IHdpbGwgb3ZlcmZsb3cgdGhlIGNsaXBwaW5nIGJvdW5kYXJ5LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3NoaWZ0XG4gKi9cbmNvbnN0IHNoaWZ0ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdzaGlmdCcsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICB4LFxuICAgICAgICB5LFxuICAgICAgICBwbGFjZW1lbnRcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgbWFpbkF4aXM6IGNoZWNrTWFpbkF4aXMgPSB0cnVlLFxuICAgICAgICBjcm9zc0F4aXM6IGNoZWNrQ3Jvc3NBeGlzID0gZmFsc2UsXG4gICAgICAgIGxpbWl0ZXIgPSB7XG4gICAgICAgICAgZm46IF9yZWYgPT4ge1xuICAgICAgICAgICAgbGV0IHtcbiAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgeVxuICAgICAgICAgICAgfSA9IF9yZWY7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICB5XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICAgICAgY29uc3QgY29vcmRzID0ge1xuICAgICAgICB4LFxuICAgICAgICB5XG4gICAgICB9O1xuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgZGV0ZWN0T3ZlcmZsb3dPcHRpb25zKTtcbiAgICAgIGNvbnN0IGNyb3NzQXhpcyA9IGdldFNpZGVBeGlzKGdldFNpZGUocGxhY2VtZW50KSk7XG4gICAgICBjb25zdCBtYWluQXhpcyA9IGdldE9wcG9zaXRlQXhpcyhjcm9zc0F4aXMpO1xuICAgICAgbGV0IG1haW5BeGlzQ29vcmQgPSBjb29yZHNbbWFpbkF4aXNdO1xuICAgICAgbGV0IGNyb3NzQXhpc0Nvb3JkID0gY29vcmRzW2Nyb3NzQXhpc107XG4gICAgICBpZiAoY2hlY2tNYWluQXhpcykge1xuICAgICAgICBjb25zdCBtaW5TaWRlID0gbWFpbkF4aXMgPT09ICd5JyA/ICd0b3AnIDogJ2xlZnQnO1xuICAgICAgICBjb25zdCBtYXhTaWRlID0gbWFpbkF4aXMgPT09ICd5JyA/ICdib3R0b20nIDogJ3JpZ2h0JztcbiAgICAgICAgY29uc3QgbWluID0gbWFpbkF4aXNDb29yZCArIG92ZXJmbG93W21pblNpZGVdO1xuICAgICAgICBjb25zdCBtYXggPSBtYWluQXhpc0Nvb3JkIC0gb3ZlcmZsb3dbbWF4U2lkZV07XG4gICAgICAgIG1haW5BeGlzQ29vcmQgPSBjbGFtcChtaW4sIG1haW5BeGlzQ29vcmQsIG1heCk7XG4gICAgICB9XG4gICAgICBpZiAoY2hlY2tDcm9zc0F4aXMpIHtcbiAgICAgICAgY29uc3QgbWluU2lkZSA9IGNyb3NzQXhpcyA9PT0gJ3knID8gJ3RvcCcgOiAnbGVmdCc7XG4gICAgICAgIGNvbnN0IG1heFNpZGUgPSBjcm9zc0F4aXMgPT09ICd5JyA/ICdib3R0b20nIDogJ3JpZ2h0JztcbiAgICAgICAgY29uc3QgbWluID0gY3Jvc3NBeGlzQ29vcmQgKyBvdmVyZmxvd1ttaW5TaWRlXTtcbiAgICAgICAgY29uc3QgbWF4ID0gY3Jvc3NBeGlzQ29vcmQgLSBvdmVyZmxvd1ttYXhTaWRlXTtcbiAgICAgICAgY3Jvc3NBeGlzQ29vcmQgPSBjbGFtcChtaW4sIGNyb3NzQXhpc0Nvb3JkLCBtYXgpO1xuICAgICAgfVxuICAgICAgY29uc3QgbGltaXRlZENvb3JkcyA9IGxpbWl0ZXIuZm4oe1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgW21haW5BeGlzXTogbWFpbkF4aXNDb29yZCxcbiAgICAgICAgW2Nyb3NzQXhpc106IGNyb3NzQXhpc0Nvb3JkXG4gICAgICB9KTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmxpbWl0ZWRDb29yZHMsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICB4OiBsaW1pdGVkQ29vcmRzLnggLSB4LFxuICAgICAgICAgIHk6IGxpbWl0ZWRDb29yZHMueSAtIHksXG4gICAgICAgICAgZW5hYmxlZDoge1xuICAgICAgICAgICAgW21haW5BeGlzXTogY2hlY2tNYWluQXhpcyxcbiAgICAgICAgICAgIFtjcm9zc0F4aXNdOiBjaGVja0Nyb3NzQXhpc1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gIH07XG59O1xuLyoqXG4gKiBCdWlsdC1pbiBgbGltaXRlcmAgdGhhdCB3aWxsIHN0b3AgYHNoaWZ0KClgIGF0IGEgY2VydGFpbiBwb2ludC5cbiAqL1xuY29uc3QgbGltaXRTaGlmdCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBvcHRpb25zLFxuICAgIGZuKHN0YXRlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHgsXG4gICAgICAgIHksXG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIG1pZGRsZXdhcmVEYXRhXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIG9mZnNldCA9IDAsXG4gICAgICAgIG1haW5BeGlzOiBjaGVja01haW5BeGlzID0gdHJ1ZSxcbiAgICAgICAgY3Jvc3NBeGlzOiBjaGVja0Nyb3NzQXhpcyA9IHRydWVcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBjb29yZHMgPSB7XG4gICAgICAgIHgsXG4gICAgICAgIHlcbiAgICAgIH07XG4gICAgICBjb25zdCBjcm9zc0F4aXMgPSBnZXRTaWRlQXhpcyhwbGFjZW1lbnQpO1xuICAgICAgY29uc3QgbWFpbkF4aXMgPSBnZXRPcHBvc2l0ZUF4aXMoY3Jvc3NBeGlzKTtcbiAgICAgIGxldCBtYWluQXhpc0Nvb3JkID0gY29vcmRzW21haW5BeGlzXTtcbiAgICAgIGxldCBjcm9zc0F4aXNDb29yZCA9IGNvb3Jkc1tjcm9zc0F4aXNdO1xuICAgICAgY29uc3QgcmF3T2Zmc2V0ID0gZXZhbHVhdGUob2Zmc2V0LCBzdGF0ZSk7XG4gICAgICBjb25zdCBjb21wdXRlZE9mZnNldCA9IHR5cGVvZiByYXdPZmZzZXQgPT09ICdudW1iZXInID8ge1xuICAgICAgICBtYWluQXhpczogcmF3T2Zmc2V0LFxuICAgICAgICBjcm9zc0F4aXM6IDBcbiAgICAgIH0gOiB7XG4gICAgICAgIG1haW5BeGlzOiAwLFxuICAgICAgICBjcm9zc0F4aXM6IDAsXG4gICAgICAgIC4uLnJhd09mZnNldFxuICAgICAgfTtcbiAgICAgIGlmIChjaGVja01haW5BeGlzKSB7XG4gICAgICAgIGNvbnN0IGxlbiA9IG1haW5BeGlzID09PSAneScgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG4gICAgICAgIGNvbnN0IGxpbWl0TWluID0gcmVjdHMucmVmZXJlbmNlW21haW5BeGlzXSAtIHJlY3RzLmZsb2F0aW5nW2xlbl0gKyBjb21wdXRlZE9mZnNldC5tYWluQXhpcztcbiAgICAgICAgY29uc3QgbGltaXRNYXggPSByZWN0cy5yZWZlcmVuY2VbbWFpbkF4aXNdICsgcmVjdHMucmVmZXJlbmNlW2xlbl0gLSBjb21wdXRlZE9mZnNldC5tYWluQXhpcztcbiAgICAgICAgaWYgKG1haW5BeGlzQ29vcmQgPCBsaW1pdE1pbikge1xuICAgICAgICAgIG1haW5BeGlzQ29vcmQgPSBsaW1pdE1pbjtcbiAgICAgICAgfSBlbHNlIGlmIChtYWluQXhpc0Nvb3JkID4gbGltaXRNYXgpIHtcbiAgICAgICAgICBtYWluQXhpc0Nvb3JkID0gbGltaXRNYXg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChjaGVja0Nyb3NzQXhpcykge1xuICAgICAgICB2YXIgX21pZGRsZXdhcmVEYXRhJG9mZnNlLCBfbWlkZGxld2FyZURhdGEkb2Zmc2UyO1xuICAgICAgICBjb25zdCBsZW4gPSBtYWluQXhpcyA9PT0gJ3knID8gJ3dpZHRoJyA6ICdoZWlnaHQnO1xuICAgICAgICBjb25zdCBpc09yaWdpblNpZGUgPSBbJ3RvcCcsICdsZWZ0J10uaW5jbHVkZXMoZ2V0U2lkZShwbGFjZW1lbnQpKTtcbiAgICAgICAgY29uc3QgbGltaXRNaW4gPSByZWN0cy5yZWZlcmVuY2VbY3Jvc3NBeGlzXSAtIHJlY3RzLmZsb2F0aW5nW2xlbl0gKyAoaXNPcmlnaW5TaWRlID8gKChfbWlkZGxld2FyZURhdGEkb2Zmc2UgPSBtaWRkbGV3YXJlRGF0YS5vZmZzZXQpID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkb2Zmc2VbY3Jvc3NBeGlzXSkgfHwgMCA6IDApICsgKGlzT3JpZ2luU2lkZSA/IDAgOiBjb21wdXRlZE9mZnNldC5jcm9zc0F4aXMpO1xuICAgICAgICBjb25zdCBsaW1pdE1heCA9IHJlY3RzLnJlZmVyZW5jZVtjcm9zc0F4aXNdICsgcmVjdHMucmVmZXJlbmNlW2xlbl0gKyAoaXNPcmlnaW5TaWRlID8gMCA6ICgoX21pZGRsZXdhcmVEYXRhJG9mZnNlMiA9IG1pZGRsZXdhcmVEYXRhLm9mZnNldCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRvZmZzZTJbY3Jvc3NBeGlzXSkgfHwgMCkgLSAoaXNPcmlnaW5TaWRlID8gY29tcHV0ZWRPZmZzZXQuY3Jvc3NBeGlzIDogMCk7XG4gICAgICAgIGlmIChjcm9zc0F4aXNDb29yZCA8IGxpbWl0TWluKSB7XG4gICAgICAgICAgY3Jvc3NBeGlzQ29vcmQgPSBsaW1pdE1pbjtcbiAgICAgICAgfSBlbHNlIGlmIChjcm9zc0F4aXNDb29yZCA+IGxpbWl0TWF4KSB7XG4gICAgICAgICAgY3Jvc3NBeGlzQ29vcmQgPSBsaW1pdE1heDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgW21haW5BeGlzXTogbWFpbkF4aXNDb29yZCxcbiAgICAgICAgW2Nyb3NzQXhpc106IGNyb3NzQXhpc0Nvb3JkXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0aGF0IGFsbG93cyB5b3UgdG8gY2hhbmdlIHRoZSBzaXplIG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IOKAlFxuICogZm9yIGluc3RhbmNlLCBwcmV2ZW50IGl0IGZyb20gb3ZlcmZsb3dpbmcgdGhlIGNsaXBwaW5nIGJvdW5kYXJ5IG9yIG1hdGNoIHRoZVxuICogd2lkdGggb2YgdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3NpemVcbiAqL1xuY29uc3Qgc2l6ZSA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnc2l6ZScsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgdmFyIF9zdGF0ZSRtaWRkbGV3YXJlRGF0YSwgX3N0YXRlJG1pZGRsZXdhcmVEYXRhMjtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICByZWN0cyxcbiAgICAgICAgcGxhdGZvcm0sXG4gICAgICAgIGVsZW1lbnRzXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGFwcGx5ID0gKCkgPT4ge30sXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIGRldGVjdE92ZXJmbG93T3B0aW9ucyk7XG4gICAgICBjb25zdCBzaWRlID0gZ2V0U2lkZShwbGFjZW1lbnQpO1xuICAgICAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCk7XG4gICAgICBjb25zdCBpc1lBeGlzID0gZ2V0U2lkZUF4aXMocGxhY2VtZW50KSA9PT0gJ3knO1xuICAgICAgY29uc3Qge1xuICAgICAgICB3aWR0aCxcbiAgICAgICAgaGVpZ2h0XG4gICAgICB9ID0gcmVjdHMuZmxvYXRpbmc7XG4gICAgICBsZXQgaGVpZ2h0U2lkZTtcbiAgICAgIGxldCB3aWR0aFNpZGU7XG4gICAgICBpZiAoc2lkZSA9PT0gJ3RvcCcgfHwgc2lkZSA9PT0gJ2JvdHRvbScpIHtcbiAgICAgICAgaGVpZ2h0U2lkZSA9IHNpZGU7XG4gICAgICAgIHdpZHRoU2lkZSA9IGFsaWdubWVudCA9PT0gKChhd2FpdCAocGxhdGZvcm0uaXNSVEwgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzUlRMKGVsZW1lbnRzLmZsb2F0aW5nKSkpID8gJ3N0YXJ0JyA6ICdlbmQnKSA/ICdsZWZ0JyA6ICdyaWdodCc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3aWR0aFNpZGUgPSBzaWRlO1xuICAgICAgICBoZWlnaHRTaWRlID0gYWxpZ25tZW50ID09PSAnZW5kJyA/ICd0b3AnIDogJ2JvdHRvbSc7XG4gICAgICB9XG4gICAgICBjb25zdCBtYXhpbXVtQ2xpcHBpbmdIZWlnaHQgPSBoZWlnaHQgLSBvdmVyZmxvdy50b3AgLSBvdmVyZmxvdy5ib3R0b207XG4gICAgICBjb25zdCBtYXhpbXVtQ2xpcHBpbmdXaWR0aCA9IHdpZHRoIC0gb3ZlcmZsb3cubGVmdCAtIG92ZXJmbG93LnJpZ2h0O1xuICAgICAgY29uc3Qgb3ZlcmZsb3dBdmFpbGFibGVIZWlnaHQgPSBtaW4oaGVpZ2h0IC0gb3ZlcmZsb3dbaGVpZ2h0U2lkZV0sIG1heGltdW1DbGlwcGluZ0hlaWdodCk7XG4gICAgICBjb25zdCBvdmVyZmxvd0F2YWlsYWJsZVdpZHRoID0gbWluKHdpZHRoIC0gb3ZlcmZsb3dbd2lkdGhTaWRlXSwgbWF4aW11bUNsaXBwaW5nV2lkdGgpO1xuICAgICAgY29uc3Qgbm9TaGlmdCA9ICFzdGF0ZS5taWRkbGV3YXJlRGF0YS5zaGlmdDtcbiAgICAgIGxldCBhdmFpbGFibGVIZWlnaHQgPSBvdmVyZmxvd0F2YWlsYWJsZUhlaWdodDtcbiAgICAgIGxldCBhdmFpbGFibGVXaWR0aCA9IG92ZXJmbG93QXZhaWxhYmxlV2lkdGg7XG4gICAgICBpZiAoKF9zdGF0ZSRtaWRkbGV3YXJlRGF0YSA9IHN0YXRlLm1pZGRsZXdhcmVEYXRhLnNoaWZ0KSAhPSBudWxsICYmIF9zdGF0ZSRtaWRkbGV3YXJlRGF0YS5lbmFibGVkLngpIHtcbiAgICAgICAgYXZhaWxhYmxlV2lkdGggPSBtYXhpbXVtQ2xpcHBpbmdXaWR0aDtcbiAgICAgIH1cbiAgICAgIGlmICgoX3N0YXRlJG1pZGRsZXdhcmVEYXRhMiA9IHN0YXRlLm1pZGRsZXdhcmVEYXRhLnNoaWZ0KSAhPSBudWxsICYmIF9zdGF0ZSRtaWRkbGV3YXJlRGF0YTIuZW5hYmxlZC55KSB7XG4gICAgICAgIGF2YWlsYWJsZUhlaWdodCA9IG1heGltdW1DbGlwcGluZ0hlaWdodDtcbiAgICAgIH1cbiAgICAgIGlmIChub1NoaWZ0ICYmICFhbGlnbm1lbnQpIHtcbiAgICAgICAgY29uc3QgeE1pbiA9IG1heChvdmVyZmxvdy5sZWZ0LCAwKTtcbiAgICAgICAgY29uc3QgeE1heCA9IG1heChvdmVyZmxvdy5yaWdodCwgMCk7XG4gICAgICAgIGNvbnN0IHlNaW4gPSBtYXgob3ZlcmZsb3cudG9wLCAwKTtcbiAgICAgICAgY29uc3QgeU1heCA9IG1heChvdmVyZmxvdy5ib3R0b20sIDApO1xuICAgICAgICBpZiAoaXNZQXhpcykge1xuICAgICAgICAgIGF2YWlsYWJsZVdpZHRoID0gd2lkdGggLSAyICogKHhNaW4gIT09IDAgfHwgeE1heCAhPT0gMCA/IHhNaW4gKyB4TWF4IDogbWF4KG92ZXJmbG93LmxlZnQsIG92ZXJmbG93LnJpZ2h0KSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYXZhaWxhYmxlSGVpZ2h0ID0gaGVpZ2h0IC0gMiAqICh5TWluICE9PSAwIHx8IHlNYXggIT09IDAgPyB5TWluICsgeU1heCA6IG1heChvdmVyZmxvdy50b3AsIG92ZXJmbG93LmJvdHRvbSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBhd2FpdCBhcHBseSh7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBhdmFpbGFibGVXaWR0aCxcbiAgICAgICAgYXZhaWxhYmxlSGVpZ2h0XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IG5leHREaW1lbnNpb25zID0gYXdhaXQgcGxhdGZvcm0uZ2V0RGltZW5zaW9ucyhlbGVtZW50cy5mbG9hdGluZyk7XG4gICAgICBpZiAod2lkdGggIT09IG5leHREaW1lbnNpb25zLndpZHRoIHx8IGhlaWdodCAhPT0gbmV4dERpbWVuc2lvbnMuaGVpZ2h0KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHJlY3RzOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfTtcbn07XG5cbmV4cG9ydCB7IGFycm93LCBhdXRvUGxhY2VtZW50LCBjb21wdXRlUG9zaXRpb24sIGRldGVjdE92ZXJmbG93LCBmbGlwLCBoaWRlLCBpbmxpbmUsIGxpbWl0U2hpZnQsIG9mZnNldCwgc2hpZnQsIHNpemUgfTtcbiIsImZ1bmN0aW9uIGhhc1dpbmRvdygpIHtcbiAgcmV0dXJuIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnO1xufVxuZnVuY3Rpb24gZ2V0Tm9kZU5hbWUobm9kZSkge1xuICBpZiAoaXNOb2RlKG5vZGUpKSB7XG4gICAgcmV0dXJuIChub2RlLm5vZGVOYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xuICB9XG4gIC8vIE1vY2tlZCBub2RlcyBpbiB0ZXN0aW5nIGVudmlyb25tZW50cyBtYXkgbm90IGJlIGluc3RhbmNlcyBvZiBOb2RlLiBCeVxuICAvLyByZXR1cm5pbmcgYCNkb2N1bWVudGAgYW4gaW5maW5pdGUgbG9vcCB3b24ndCBvY2N1ci5cbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2Zsb2F0aW5nLXVpL2Zsb2F0aW5nLXVpL2lzc3Vlcy8yMzE3XG4gIHJldHVybiAnI2RvY3VtZW50Jztcbn1cbmZ1bmN0aW9uIGdldFdpbmRvdyhub2RlKSB7XG4gIHZhciBfbm9kZSRvd25lckRvY3VtZW50O1xuICByZXR1cm4gKG5vZGUgPT0gbnVsbCB8fCAoX25vZGUkb3duZXJEb2N1bWVudCA9IG5vZGUub3duZXJEb2N1bWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9ub2RlJG93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcpIHx8IHdpbmRvdztcbn1cbmZ1bmN0aW9uIGdldERvY3VtZW50RWxlbWVudChub2RlKSB7XG4gIHZhciBfcmVmO1xuICByZXR1cm4gKF9yZWYgPSAoaXNOb2RlKG5vZGUpID8gbm9kZS5vd25lckRvY3VtZW50IDogbm9kZS5kb2N1bWVudCkgfHwgd2luZG93LmRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX3JlZi5kb2N1bWVudEVsZW1lbnQ7XG59XG5mdW5jdGlvbiBpc05vZGUodmFsdWUpIHtcbiAgaWYgKCFoYXNXaW5kb3coKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBOb2RlIHx8IHZhbHVlIGluc3RhbmNlb2YgZ2V0V2luZG93KHZhbHVlKS5Ob2RlO1xufVxuZnVuY3Rpb24gaXNFbGVtZW50KHZhbHVlKSB7XG4gIGlmICghaGFzV2luZG93KCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgRWxlbWVudCB8fCB2YWx1ZSBpbnN0YW5jZW9mIGdldFdpbmRvdyh2YWx1ZSkuRWxlbWVudDtcbn1cbmZ1bmN0aW9uIGlzSFRNTEVsZW1lbnQodmFsdWUpIHtcbiAgaWYgKCFoYXNXaW5kb3coKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCB8fCB2YWx1ZSBpbnN0YW5jZW9mIGdldFdpbmRvdyh2YWx1ZSkuSFRNTEVsZW1lbnQ7XG59XG5mdW5jdGlvbiBpc1NoYWRvd1Jvb3QodmFsdWUpIHtcbiAgaWYgKCFoYXNXaW5kb3coKSB8fCB0eXBlb2YgU2hhZG93Um9vdCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgU2hhZG93Um9vdCB8fCB2YWx1ZSBpbnN0YW5jZW9mIGdldFdpbmRvdyh2YWx1ZSkuU2hhZG93Um9vdDtcbn1cbmZ1bmN0aW9uIGlzT3ZlcmZsb3dFbGVtZW50KGVsZW1lbnQpIHtcbiAgY29uc3Qge1xuICAgIG92ZXJmbG93LFxuICAgIG92ZXJmbG93WCxcbiAgICBvdmVyZmxvd1ksXG4gICAgZGlzcGxheVxuICB9ID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbiAgcmV0dXJuIC9hdXRvfHNjcm9sbHxvdmVybGF5fGhpZGRlbnxjbGlwLy50ZXN0KG92ZXJmbG93ICsgb3ZlcmZsb3dZICsgb3ZlcmZsb3dYKSAmJiAhWydpbmxpbmUnLCAnY29udGVudHMnXS5pbmNsdWRlcyhkaXNwbGF5KTtcbn1cbmZ1bmN0aW9uIGlzVGFibGVFbGVtZW50KGVsZW1lbnQpIHtcbiAgcmV0dXJuIFsndGFibGUnLCAndGQnLCAndGgnXS5pbmNsdWRlcyhnZXROb2RlTmFtZShlbGVtZW50KSk7XG59XG5mdW5jdGlvbiBpc1RvcExheWVyKGVsZW1lbnQpIHtcbiAgcmV0dXJuIFsnOnBvcG92ZXItb3BlbicsICc6bW9kYWwnXS5zb21lKHNlbGVjdG9yID0+IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGVsZW1lbnQubWF0Y2hlcyhzZWxlY3Rvcik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSk7XG59XG5mdW5jdGlvbiBpc0NvbnRhaW5pbmdCbG9jayhlbGVtZW50T3JDc3MpIHtcbiAgY29uc3Qgd2Via2l0ID0gaXNXZWJLaXQoKTtcbiAgY29uc3QgY3NzID0gaXNFbGVtZW50KGVsZW1lbnRPckNzcykgPyBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnRPckNzcykgOiBlbGVtZW50T3JDc3M7XG5cbiAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL0NvbnRhaW5pbmdfYmxvY2sjaWRlbnRpZnlpbmdfdGhlX2NvbnRhaW5pbmdfYmxvY2tcbiAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy10cmFuc2Zvcm1zLTIvI2luZGl2aWR1YWwtdHJhbnNmb3Jtc1xuICByZXR1cm4gWyd0cmFuc2Zvcm0nLCAndHJhbnNsYXRlJywgJ3NjYWxlJywgJ3JvdGF0ZScsICdwZXJzcGVjdGl2ZSddLnNvbWUodmFsdWUgPT4gY3NzW3ZhbHVlXSA/IGNzc1t2YWx1ZV0gIT09ICdub25lJyA6IGZhbHNlKSB8fCAoY3NzLmNvbnRhaW5lclR5cGUgPyBjc3MuY29udGFpbmVyVHlwZSAhPT0gJ25vcm1hbCcgOiBmYWxzZSkgfHwgIXdlYmtpdCAmJiAoY3NzLmJhY2tkcm9wRmlsdGVyID8gY3NzLmJhY2tkcm9wRmlsdGVyICE9PSAnbm9uZScgOiBmYWxzZSkgfHwgIXdlYmtpdCAmJiAoY3NzLmZpbHRlciA/IGNzcy5maWx0ZXIgIT09ICdub25lJyA6IGZhbHNlKSB8fCBbJ3RyYW5zZm9ybScsICd0cmFuc2xhdGUnLCAnc2NhbGUnLCAncm90YXRlJywgJ3BlcnNwZWN0aXZlJywgJ2ZpbHRlciddLnNvbWUodmFsdWUgPT4gKGNzcy53aWxsQ2hhbmdlIHx8ICcnKS5pbmNsdWRlcyh2YWx1ZSkpIHx8IFsncGFpbnQnLCAnbGF5b3V0JywgJ3N0cmljdCcsICdjb250ZW50J10uc29tZSh2YWx1ZSA9PiAoY3NzLmNvbnRhaW4gfHwgJycpLmluY2x1ZGVzKHZhbHVlKSk7XG59XG5mdW5jdGlvbiBnZXRDb250YWluaW5nQmxvY2soZWxlbWVudCkge1xuICBsZXQgY3VycmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGVsZW1lbnQpO1xuICB3aGlsZSAoaXNIVE1MRWxlbWVudChjdXJyZW50Tm9kZSkgJiYgIWlzTGFzdFRyYXZlcnNhYmxlTm9kZShjdXJyZW50Tm9kZSkpIHtcbiAgICBpZiAoaXNDb250YWluaW5nQmxvY2soY3VycmVudE5vZGUpKSB7XG4gICAgICByZXR1cm4gY3VycmVudE5vZGU7XG4gICAgfSBlbHNlIGlmIChpc1RvcExheWVyKGN1cnJlbnROb2RlKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGN1cnJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShjdXJyZW50Tm9kZSk7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5mdW5jdGlvbiBpc1dlYktpdCgpIHtcbiAgaWYgKHR5cGVvZiBDU1MgPT09ICd1bmRlZmluZWQnIHx8ICFDU1Muc3VwcG9ydHMpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIENTUy5zdXBwb3J0cygnLXdlYmtpdC1iYWNrZHJvcC1maWx0ZXInLCAnbm9uZScpO1xufVxuZnVuY3Rpb24gaXNMYXN0VHJhdmVyc2FibGVOb2RlKG5vZGUpIHtcbiAgcmV0dXJuIFsnaHRtbCcsICdib2R5JywgJyNkb2N1bWVudCddLmluY2x1ZGVzKGdldE5vZGVOYW1lKG5vZGUpKTtcbn1cbmZ1bmN0aW9uIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkge1xuICByZXR1cm4gZ2V0V2luZG93KGVsZW1lbnQpLmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG59XG5mdW5jdGlvbiBnZXROb2RlU2Nyb2xsKGVsZW1lbnQpIHtcbiAgaWYgKGlzRWxlbWVudChlbGVtZW50KSkge1xuICAgIHJldHVybiB7XG4gICAgICBzY3JvbGxMZWZ0OiBlbGVtZW50LnNjcm9sbExlZnQsXG4gICAgICBzY3JvbGxUb3A6IGVsZW1lbnQuc2Nyb2xsVG9wXG4gICAgfTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHNjcm9sbExlZnQ6IGVsZW1lbnQuc2Nyb2xsWCxcbiAgICBzY3JvbGxUb3A6IGVsZW1lbnQuc2Nyb2xsWVxuICB9O1xufVxuZnVuY3Rpb24gZ2V0UGFyZW50Tm9kZShub2RlKSB7XG4gIGlmIChnZXROb2RlTmFtZShub2RlKSA9PT0gJ2h0bWwnKSB7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cbiAgY29uc3QgcmVzdWx0ID1cbiAgLy8gU3RlcCBpbnRvIHRoZSBzaGFkb3cgRE9NIG9mIHRoZSBwYXJlbnQgb2YgYSBzbG90dGVkIG5vZGUuXG4gIG5vZGUuYXNzaWduZWRTbG90IHx8XG4gIC8vIERPTSBFbGVtZW50IGRldGVjdGVkLlxuICBub2RlLnBhcmVudE5vZGUgfHxcbiAgLy8gU2hhZG93Um9vdCBkZXRlY3RlZC5cbiAgaXNTaGFkb3dSb290KG5vZGUpICYmIG5vZGUuaG9zdCB8fFxuICAvLyBGYWxsYmFjay5cbiAgZ2V0RG9jdW1lbnRFbGVtZW50KG5vZGUpO1xuICByZXR1cm4gaXNTaGFkb3dSb290KHJlc3VsdCkgPyByZXN1bHQuaG9zdCA6IHJlc3VsdDtcbn1cbmZ1bmN0aW9uIGdldE5lYXJlc3RPdmVyZmxvd0FuY2VzdG9yKG5vZGUpIHtcbiAgY29uc3QgcGFyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUobm9kZSk7XG4gIGlmIChpc0xhc3RUcmF2ZXJzYWJsZU5vZGUocGFyZW50Tm9kZSkpIHtcbiAgICByZXR1cm4gbm9kZS5vd25lckRvY3VtZW50ID8gbm9kZS5vd25lckRvY3VtZW50LmJvZHkgOiBub2RlLmJvZHk7XG4gIH1cbiAgaWYgKGlzSFRNTEVsZW1lbnQocGFyZW50Tm9kZSkgJiYgaXNPdmVyZmxvd0VsZW1lbnQocGFyZW50Tm9kZSkpIHtcbiAgICByZXR1cm4gcGFyZW50Tm9kZTtcbiAgfVxuICByZXR1cm4gZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3IocGFyZW50Tm9kZSk7XG59XG5mdW5jdGlvbiBnZXRPdmVyZmxvd0FuY2VzdG9ycyhub2RlLCBsaXN0LCB0cmF2ZXJzZUlmcmFtZXMpIHtcbiAgdmFyIF9ub2RlJG93bmVyRG9jdW1lbnQyO1xuICBpZiAobGlzdCA9PT0gdm9pZCAwKSB7XG4gICAgbGlzdCA9IFtdO1xuICB9XG4gIGlmICh0cmF2ZXJzZUlmcmFtZXMgPT09IHZvaWQgMCkge1xuICAgIHRyYXZlcnNlSWZyYW1lcyA9IHRydWU7XG4gIH1cbiAgY29uc3Qgc2Nyb2xsYWJsZUFuY2VzdG9yID0gZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3Iobm9kZSk7XG4gIGNvbnN0IGlzQm9keSA9IHNjcm9sbGFibGVBbmNlc3RvciA9PT0gKChfbm9kZSRvd25lckRvY3VtZW50MiA9IG5vZGUub3duZXJEb2N1bWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9ub2RlJG93bmVyRG9jdW1lbnQyLmJvZHkpO1xuICBjb25zdCB3aW4gPSBnZXRXaW5kb3coc2Nyb2xsYWJsZUFuY2VzdG9yKTtcbiAgaWYgKGlzQm9keSkge1xuICAgIGNvbnN0IGZyYW1lRWxlbWVudCA9IGdldEZyYW1lRWxlbWVudCh3aW4pO1xuICAgIHJldHVybiBsaXN0LmNvbmNhdCh3aW4sIHdpbi52aXN1YWxWaWV3cG9ydCB8fCBbXSwgaXNPdmVyZmxvd0VsZW1lbnQoc2Nyb2xsYWJsZUFuY2VzdG9yKSA/IHNjcm9sbGFibGVBbmNlc3RvciA6IFtdLCBmcmFtZUVsZW1lbnQgJiYgdHJhdmVyc2VJZnJhbWVzID8gZ2V0T3ZlcmZsb3dBbmNlc3RvcnMoZnJhbWVFbGVtZW50KSA6IFtdKTtcbiAgfVxuICByZXR1cm4gbGlzdC5jb25jYXQoc2Nyb2xsYWJsZUFuY2VzdG9yLCBnZXRPdmVyZmxvd0FuY2VzdG9ycyhzY3JvbGxhYmxlQW5jZXN0b3IsIFtdLCB0cmF2ZXJzZUlmcmFtZXMpKTtcbn1cbmZ1bmN0aW9uIGdldEZyYW1lRWxlbWVudCh3aW4pIHtcbiAgcmV0dXJuIHdpbi5wYXJlbnQgJiYgT2JqZWN0LmdldFByb3RvdHlwZU9mKHdpbi5wYXJlbnQpID8gd2luLmZyYW1lRWxlbWVudCA6IG51bGw7XG59XG5cbmV4cG9ydCB7IGdldENvbXB1dGVkU3R5bGUsIGdldENvbnRhaW5pbmdCbG9jaywgZ2V0RG9jdW1lbnRFbGVtZW50LCBnZXRGcmFtZUVsZW1lbnQsIGdldE5lYXJlc3RPdmVyZmxvd0FuY2VzdG9yLCBnZXROb2RlTmFtZSwgZ2V0Tm9kZVNjcm9sbCwgZ2V0T3ZlcmZsb3dBbmNlc3RvcnMsIGdldFBhcmVudE5vZGUsIGdldFdpbmRvdywgaXNDb250YWluaW5nQmxvY2ssIGlzRWxlbWVudCwgaXNIVE1MRWxlbWVudCwgaXNMYXN0VHJhdmVyc2FibGVOb2RlLCBpc05vZGUsIGlzT3ZlcmZsb3dFbGVtZW50LCBpc1NoYWRvd1Jvb3QsIGlzVGFibGVFbGVtZW50LCBpc1RvcExheWVyLCBpc1dlYktpdCB9O1xuIiwiaW1wb3J0IHsgcmVjdFRvQ2xpZW50UmVjdCwgZGV0ZWN0T3ZlcmZsb3cgYXMgZGV0ZWN0T3ZlcmZsb3ckMSwgb2Zmc2V0IGFzIG9mZnNldCQxLCBhdXRvUGxhY2VtZW50IGFzIGF1dG9QbGFjZW1lbnQkMSwgc2hpZnQgYXMgc2hpZnQkMSwgZmxpcCBhcyBmbGlwJDEsIHNpemUgYXMgc2l6ZSQxLCBoaWRlIGFzIGhpZGUkMSwgYXJyb3cgYXMgYXJyb3ckMSwgaW5saW5lIGFzIGlubGluZSQxLCBsaW1pdFNoaWZ0IGFzIGxpbWl0U2hpZnQkMSwgY29tcHV0ZVBvc2l0aW9uIGFzIGNvbXB1dGVQb3NpdGlvbiQxIH0gZnJvbSAnQGZsb2F0aW5nLXVpL2NvcmUnO1xuaW1wb3J0IHsgcm91bmQsIGNyZWF0ZUNvb3JkcywgbWF4LCBtaW4sIGZsb29yIH0gZnJvbSAnQGZsb2F0aW5nLXVpL3V0aWxzJztcbmltcG9ydCB7IGdldENvbXB1dGVkU3R5bGUsIGlzSFRNTEVsZW1lbnQsIGlzRWxlbWVudCwgZ2V0V2luZG93LCBpc1dlYktpdCwgZ2V0RnJhbWVFbGVtZW50LCBnZXROb2RlU2Nyb2xsLCBnZXREb2N1bWVudEVsZW1lbnQsIGlzVG9wTGF5ZXIsIGdldE5vZGVOYW1lLCBpc092ZXJmbG93RWxlbWVudCwgZ2V0T3ZlcmZsb3dBbmNlc3RvcnMsIGdldFBhcmVudE5vZGUsIGlzTGFzdFRyYXZlcnNhYmxlTm9kZSwgaXNDb250YWluaW5nQmxvY2ssIGlzVGFibGVFbGVtZW50LCBnZXRDb250YWluaW5nQmxvY2sgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMvZG9tJztcbmV4cG9ydCB7IGdldE92ZXJmbG93QW5jZXN0b3JzIH0gZnJvbSAnQGZsb2F0aW5nLXVpL3V0aWxzL2RvbSc7XG5cbmZ1bmN0aW9uIGdldENzc0RpbWVuc2lvbnMoZWxlbWVudCkge1xuICBjb25zdCBjc3MgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xuICAvLyBJbiB0ZXN0aW5nIGVudmlyb25tZW50cywgdGhlIGB3aWR0aGAgYW5kIGBoZWlnaHRgIHByb3BlcnRpZXMgYXJlIGVtcHR5XG4gIC8vIHN0cmluZ3MgZm9yIFNWRyBlbGVtZW50cywgcmV0dXJuaW5nIE5hTi4gRmFsbGJhY2sgdG8gYDBgIGluIHRoaXMgY2FzZS5cbiAgbGV0IHdpZHRoID0gcGFyc2VGbG9hdChjc3Mud2lkdGgpIHx8IDA7XG4gIGxldCBoZWlnaHQgPSBwYXJzZUZsb2F0KGNzcy5oZWlnaHQpIHx8IDA7XG4gIGNvbnN0IGhhc09mZnNldCA9IGlzSFRNTEVsZW1lbnQoZWxlbWVudCk7XG4gIGNvbnN0IG9mZnNldFdpZHRoID0gaGFzT2Zmc2V0ID8gZWxlbWVudC5vZmZzZXRXaWR0aCA6IHdpZHRoO1xuICBjb25zdCBvZmZzZXRIZWlnaHQgPSBoYXNPZmZzZXQgPyBlbGVtZW50Lm9mZnNldEhlaWdodCA6IGhlaWdodDtcbiAgY29uc3Qgc2hvdWxkRmFsbGJhY2sgPSByb3VuZCh3aWR0aCkgIT09IG9mZnNldFdpZHRoIHx8IHJvdW5kKGhlaWdodCkgIT09IG9mZnNldEhlaWdodDtcbiAgaWYgKHNob3VsZEZhbGxiYWNrKSB7XG4gICAgd2lkdGggPSBvZmZzZXRXaWR0aDtcbiAgICBoZWlnaHQgPSBvZmZzZXRIZWlnaHQ7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgJDogc2hvdWxkRmFsbGJhY2tcbiAgfTtcbn1cblxuZnVuY3Rpb24gdW53cmFwRWxlbWVudChlbGVtZW50KSB7XG4gIHJldHVybiAhaXNFbGVtZW50KGVsZW1lbnQpID8gZWxlbWVudC5jb250ZXh0RWxlbWVudCA6IGVsZW1lbnQ7XG59XG5cbmZ1bmN0aW9uIGdldFNjYWxlKGVsZW1lbnQpIHtcbiAgY29uc3QgZG9tRWxlbWVudCA9IHVud3JhcEVsZW1lbnQoZWxlbWVudCk7XG4gIGlmICghaXNIVE1MRWxlbWVudChkb21FbGVtZW50KSkge1xuICAgIHJldHVybiBjcmVhdGVDb29yZHMoMSk7XG4gIH1cbiAgY29uc3QgcmVjdCA9IGRvbUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGNvbnN0IHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgJFxuICB9ID0gZ2V0Q3NzRGltZW5zaW9ucyhkb21FbGVtZW50KTtcbiAgbGV0IHggPSAoJCA/IHJvdW5kKHJlY3Qud2lkdGgpIDogcmVjdC53aWR0aCkgLyB3aWR0aDtcbiAgbGV0IHkgPSAoJCA/IHJvdW5kKHJlY3QuaGVpZ2h0KSA6IHJlY3QuaGVpZ2h0KSAvIGhlaWdodDtcblxuICAvLyAwLCBOYU4sIG9yIEluZmluaXR5IHNob3VsZCBhbHdheXMgZmFsbGJhY2sgdG8gMS5cblxuICBpZiAoIXggfHwgIU51bWJlci5pc0Zpbml0ZSh4KSkge1xuICAgIHggPSAxO1xuICB9XG4gIGlmICgheSB8fCAhTnVtYmVyLmlzRmluaXRlKHkpKSB7XG4gICAgeSA9IDE7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB4LFxuICAgIHlcbiAgfTtcbn1cblxuY29uc3Qgbm9PZmZzZXRzID0gLyojX19QVVJFX18qL2NyZWF0ZUNvb3JkcygwKTtcbmZ1bmN0aW9uIGdldFZpc3VhbE9mZnNldHMoZWxlbWVudCkge1xuICBjb25zdCB3aW4gPSBnZXRXaW5kb3coZWxlbWVudCk7XG4gIGlmICghaXNXZWJLaXQoKSB8fCAhd2luLnZpc3VhbFZpZXdwb3J0KSB7XG4gICAgcmV0dXJuIG5vT2Zmc2V0cztcbiAgfVxuICByZXR1cm4ge1xuICAgIHg6IHdpbi52aXN1YWxWaWV3cG9ydC5vZmZzZXRMZWZ0LFxuICAgIHk6IHdpbi52aXN1YWxWaWV3cG9ydC5vZmZzZXRUb3BcbiAgfTtcbn1cbmZ1bmN0aW9uIHNob3VsZEFkZFZpc3VhbE9mZnNldHMoZWxlbWVudCwgaXNGaXhlZCwgZmxvYXRpbmdPZmZzZXRQYXJlbnQpIHtcbiAgaWYgKGlzRml4ZWQgPT09IHZvaWQgMCkge1xuICAgIGlzRml4ZWQgPSBmYWxzZTtcbiAgfVxuICBpZiAoIWZsb2F0aW5nT2Zmc2V0UGFyZW50IHx8IGlzRml4ZWQgJiYgZmxvYXRpbmdPZmZzZXRQYXJlbnQgIT09IGdldFdpbmRvdyhlbGVtZW50KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gaXNGaXhlZDtcbn1cblxuZnVuY3Rpb24gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIGluY2x1ZGVTY2FsZSwgaXNGaXhlZFN0cmF0ZWd5LCBvZmZzZXRQYXJlbnQpIHtcbiAgaWYgKGluY2x1ZGVTY2FsZSA9PT0gdm9pZCAwKSB7XG4gICAgaW5jbHVkZVNjYWxlID0gZmFsc2U7XG4gIH1cbiAgaWYgKGlzRml4ZWRTdHJhdGVneSA9PT0gdm9pZCAwKSB7XG4gICAgaXNGaXhlZFN0cmF0ZWd5ID0gZmFsc2U7XG4gIH1cbiAgY29uc3QgY2xpZW50UmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGNvbnN0IGRvbUVsZW1lbnQgPSB1bndyYXBFbGVtZW50KGVsZW1lbnQpO1xuICBsZXQgc2NhbGUgPSBjcmVhdGVDb29yZHMoMSk7XG4gIGlmIChpbmNsdWRlU2NhbGUpIHtcbiAgICBpZiAob2Zmc2V0UGFyZW50KSB7XG4gICAgICBpZiAoaXNFbGVtZW50KG9mZnNldFBhcmVudCkpIHtcbiAgICAgICAgc2NhbGUgPSBnZXRTY2FsZShvZmZzZXRQYXJlbnQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzY2FsZSA9IGdldFNjYWxlKGVsZW1lbnQpO1xuICAgIH1cbiAgfVxuICBjb25zdCB2aXN1YWxPZmZzZXRzID0gc2hvdWxkQWRkVmlzdWFsT2Zmc2V0cyhkb21FbGVtZW50LCBpc0ZpeGVkU3RyYXRlZ3ksIG9mZnNldFBhcmVudCkgPyBnZXRWaXN1YWxPZmZzZXRzKGRvbUVsZW1lbnQpIDogY3JlYXRlQ29vcmRzKDApO1xuICBsZXQgeCA9IChjbGllbnRSZWN0LmxlZnQgKyB2aXN1YWxPZmZzZXRzLngpIC8gc2NhbGUueDtcbiAgbGV0IHkgPSAoY2xpZW50UmVjdC50b3AgKyB2aXN1YWxPZmZzZXRzLnkpIC8gc2NhbGUueTtcbiAgbGV0IHdpZHRoID0gY2xpZW50UmVjdC53aWR0aCAvIHNjYWxlLng7XG4gIGxldCBoZWlnaHQgPSBjbGllbnRSZWN0LmhlaWdodCAvIHNjYWxlLnk7XG4gIGlmIChkb21FbGVtZW50KSB7XG4gICAgY29uc3Qgd2luID0gZ2V0V2luZG93KGRvbUVsZW1lbnQpO1xuICAgIGNvbnN0IG9mZnNldFdpbiA9IG9mZnNldFBhcmVudCAmJiBpc0VsZW1lbnQob2Zmc2V0UGFyZW50KSA/IGdldFdpbmRvdyhvZmZzZXRQYXJlbnQpIDogb2Zmc2V0UGFyZW50O1xuICAgIGxldCBjdXJyZW50V2luID0gd2luO1xuICAgIGxldCBjdXJyZW50SUZyYW1lID0gZ2V0RnJhbWVFbGVtZW50KGN1cnJlbnRXaW4pO1xuICAgIHdoaWxlIChjdXJyZW50SUZyYW1lICYmIG9mZnNldFBhcmVudCAmJiBvZmZzZXRXaW4gIT09IGN1cnJlbnRXaW4pIHtcbiAgICAgIGNvbnN0IGlmcmFtZVNjYWxlID0gZ2V0U2NhbGUoY3VycmVudElGcmFtZSk7XG4gICAgICBjb25zdCBpZnJhbWVSZWN0ID0gY3VycmVudElGcmFtZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IGNzcyA9IGdldENvbXB1dGVkU3R5bGUoY3VycmVudElGcmFtZSk7XG4gICAgICBjb25zdCBsZWZ0ID0gaWZyYW1lUmVjdC5sZWZ0ICsgKGN1cnJlbnRJRnJhbWUuY2xpZW50TGVmdCArIHBhcnNlRmxvYXQoY3NzLnBhZGRpbmdMZWZ0KSkgKiBpZnJhbWVTY2FsZS54O1xuICAgICAgY29uc3QgdG9wID0gaWZyYW1lUmVjdC50b3AgKyAoY3VycmVudElGcmFtZS5jbGllbnRUb3AgKyBwYXJzZUZsb2F0KGNzcy5wYWRkaW5nVG9wKSkgKiBpZnJhbWVTY2FsZS55O1xuICAgICAgeCAqPSBpZnJhbWVTY2FsZS54O1xuICAgICAgeSAqPSBpZnJhbWVTY2FsZS55O1xuICAgICAgd2lkdGggKj0gaWZyYW1lU2NhbGUueDtcbiAgICAgIGhlaWdodCAqPSBpZnJhbWVTY2FsZS55O1xuICAgICAgeCArPSBsZWZ0O1xuICAgICAgeSArPSB0b3A7XG4gICAgICBjdXJyZW50V2luID0gZ2V0V2luZG93KGN1cnJlbnRJRnJhbWUpO1xuICAgICAgY3VycmVudElGcmFtZSA9IGdldEZyYW1lRWxlbWVudChjdXJyZW50V2luKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlY3RUb0NsaWVudFJlY3Qoe1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB4LFxuICAgIHlcbiAgfSk7XG59XG5cbi8vIElmIDxodG1sPiBoYXMgYSBDU1Mgd2lkdGggZ3JlYXRlciB0aGFuIHRoZSB2aWV3cG9ydCwgdGhlbiB0aGlzIHdpbGwgYmVcbi8vIGluY29ycmVjdCBmb3IgUlRMLlxuZnVuY3Rpb24gZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50LCByZWN0KSB7XG4gIGNvbnN0IGxlZnRTY3JvbGwgPSBnZXROb2RlU2Nyb2xsKGVsZW1lbnQpLnNjcm9sbExlZnQ7XG4gIGlmICghcmVjdCkge1xuICAgIHJldHVybiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpKS5sZWZ0ICsgbGVmdFNjcm9sbDtcbiAgfVxuICByZXR1cm4gcmVjdC5sZWZ0ICsgbGVmdFNjcm9sbDtcbn1cblxuZnVuY3Rpb24gZ2V0SFRNTE9mZnNldChkb2N1bWVudEVsZW1lbnQsIHNjcm9sbCwgaWdub3JlU2Nyb2xsYmFyWCkge1xuICBpZiAoaWdub3JlU2Nyb2xsYmFyWCA9PT0gdm9pZCAwKSB7XG4gICAgaWdub3JlU2Nyb2xsYmFyWCA9IGZhbHNlO1xuICB9XG4gIGNvbnN0IGh0bWxSZWN0ID0gZG9jdW1lbnRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBjb25zdCB4ID0gaHRtbFJlY3QubGVmdCArIHNjcm9sbC5zY3JvbGxMZWZ0IC0gKGlnbm9yZVNjcm9sbGJhclggPyAwIDpcbiAgLy8gUlRMIDxib2R5PiBzY3JvbGxiYXIuXG4gIGdldFdpbmRvd1Njcm9sbEJhclgoZG9jdW1lbnRFbGVtZW50LCBodG1sUmVjdCkpO1xuICBjb25zdCB5ID0gaHRtbFJlY3QudG9wICsgc2Nyb2xsLnNjcm9sbFRvcDtcbiAgcmV0dXJuIHtcbiAgICB4LFxuICAgIHlcbiAgfTtcbn1cblxuZnVuY3Rpb24gY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3QoX3JlZikge1xuICBsZXQge1xuICAgIGVsZW1lbnRzLFxuICAgIHJlY3QsXG4gICAgb2Zmc2V0UGFyZW50LFxuICAgIHN0cmF0ZWd5XG4gIH0gPSBfcmVmO1xuICBjb25zdCBpc0ZpeGVkID0gc3RyYXRlZ3kgPT09ICdmaXhlZCc7XG4gIGNvbnN0IGRvY3VtZW50RWxlbWVudCA9IGdldERvY3VtZW50RWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICBjb25zdCB0b3BMYXllciA9IGVsZW1lbnRzID8gaXNUb3BMYXllcihlbGVtZW50cy5mbG9hdGluZykgOiBmYWxzZTtcbiAgaWYgKG9mZnNldFBhcmVudCA9PT0gZG9jdW1lbnRFbGVtZW50IHx8IHRvcExheWVyICYmIGlzRml4ZWQpIHtcbiAgICByZXR1cm4gcmVjdDtcbiAgfVxuICBsZXQgc2Nyb2xsID0ge1xuICAgIHNjcm9sbExlZnQ6IDAsXG4gICAgc2Nyb2xsVG9wOiAwXG4gIH07XG4gIGxldCBzY2FsZSA9IGNyZWF0ZUNvb3JkcygxKTtcbiAgY29uc3Qgb2Zmc2V0cyA9IGNyZWF0ZUNvb3JkcygwKTtcbiAgY29uc3QgaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgPSBpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIGlmIChpc09mZnNldFBhcmVudEFuRWxlbWVudCB8fCAhaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgJiYgIWlzRml4ZWQpIHtcbiAgICBpZiAoZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSAhPT0gJ2JvZHknIHx8IGlzT3ZlcmZsb3dFbGVtZW50KGRvY3VtZW50RWxlbWVudCkpIHtcbiAgICAgIHNjcm9sbCA9IGdldE5vZGVTY3JvbGwob2Zmc2V0UGFyZW50KTtcbiAgICB9XG4gICAgaWYgKGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KSkge1xuICAgICAgY29uc3Qgb2Zmc2V0UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChvZmZzZXRQYXJlbnQpO1xuICAgICAgc2NhbGUgPSBnZXRTY2FsZShvZmZzZXRQYXJlbnQpO1xuICAgICAgb2Zmc2V0cy54ID0gb2Zmc2V0UmVjdC54ICsgb2Zmc2V0UGFyZW50LmNsaWVudExlZnQ7XG4gICAgICBvZmZzZXRzLnkgPSBvZmZzZXRSZWN0LnkgKyBvZmZzZXRQYXJlbnQuY2xpZW50VG9wO1xuICAgIH1cbiAgfVxuICBjb25zdCBodG1sT2Zmc2V0ID0gZG9jdW1lbnRFbGVtZW50ICYmICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCA/IGdldEhUTUxPZmZzZXQoZG9jdW1lbnRFbGVtZW50LCBzY3JvbGwsIHRydWUpIDogY3JlYXRlQ29vcmRzKDApO1xuICByZXR1cm4ge1xuICAgIHdpZHRoOiByZWN0LndpZHRoICogc2NhbGUueCxcbiAgICBoZWlnaHQ6IHJlY3QuaGVpZ2h0ICogc2NhbGUueSxcbiAgICB4OiByZWN0LnggKiBzY2FsZS54IC0gc2Nyb2xsLnNjcm9sbExlZnQgKiBzY2FsZS54ICsgb2Zmc2V0cy54ICsgaHRtbE9mZnNldC54LFxuICAgIHk6IHJlY3QueSAqIHNjYWxlLnkgLSBzY3JvbGwuc2Nyb2xsVG9wICogc2NhbGUueSArIG9mZnNldHMueSArIGh0bWxPZmZzZXQueVxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRDbGllbnRSZWN0cyhlbGVtZW50KSB7XG4gIHJldHVybiBBcnJheS5mcm9tKGVsZW1lbnQuZ2V0Q2xpZW50UmVjdHMoKSk7XG59XG5cbi8vIEdldHMgdGhlIGVudGlyZSBzaXplIG9mIHRoZSBzY3JvbGxhYmxlIGRvY3VtZW50IGFyZWEsIGV2ZW4gZXh0ZW5kaW5nIG91dHNpZGVcbi8vIG9mIHRoZSBgPGh0bWw+YCBhbmQgYDxib2R5PmAgcmVjdCBib3VuZHMgaWYgaG9yaXpvbnRhbGx5IHNjcm9sbGFibGUuXG5mdW5jdGlvbiBnZXREb2N1bWVudFJlY3QoZWxlbWVudCkge1xuICBjb25zdCBodG1sID0gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpO1xuICBjb25zdCBzY3JvbGwgPSBnZXROb2RlU2Nyb2xsKGVsZW1lbnQpO1xuICBjb25zdCBib2R5ID0gZWxlbWVudC5vd25lckRvY3VtZW50LmJvZHk7XG4gIGNvbnN0IHdpZHRoID0gbWF4KGh0bWwuc2Nyb2xsV2lkdGgsIGh0bWwuY2xpZW50V2lkdGgsIGJvZHkuc2Nyb2xsV2lkdGgsIGJvZHkuY2xpZW50V2lkdGgpO1xuICBjb25zdCBoZWlnaHQgPSBtYXgoaHRtbC5zY3JvbGxIZWlnaHQsIGh0bWwuY2xpZW50SGVpZ2h0LCBib2R5LnNjcm9sbEhlaWdodCwgYm9keS5jbGllbnRIZWlnaHQpO1xuICBsZXQgeCA9IC1zY3JvbGwuc2Nyb2xsTGVmdCArIGdldFdpbmRvd1Njcm9sbEJhclgoZWxlbWVudCk7XG4gIGNvbnN0IHkgPSAtc2Nyb2xsLnNjcm9sbFRvcDtcbiAgaWYgKGdldENvbXB1dGVkU3R5bGUoYm9keSkuZGlyZWN0aW9uID09PSAncnRsJykge1xuICAgIHggKz0gbWF4KGh0bWwuY2xpZW50V2lkdGgsIGJvZHkuY2xpZW50V2lkdGgpIC0gd2lkdGg7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldFZpZXdwb3J0UmVjdChlbGVtZW50LCBzdHJhdGVneSkge1xuICBjb25zdCB3aW4gPSBnZXRXaW5kb3coZWxlbWVudCk7XG4gIGNvbnN0IGh0bWwgPSBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCk7XG4gIGNvbnN0IHZpc3VhbFZpZXdwb3J0ID0gd2luLnZpc3VhbFZpZXdwb3J0O1xuICBsZXQgd2lkdGggPSBodG1sLmNsaWVudFdpZHRoO1xuICBsZXQgaGVpZ2h0ID0gaHRtbC5jbGllbnRIZWlnaHQ7XG4gIGxldCB4ID0gMDtcbiAgbGV0IHkgPSAwO1xuICBpZiAodmlzdWFsVmlld3BvcnQpIHtcbiAgICB3aWR0aCA9IHZpc3VhbFZpZXdwb3J0LndpZHRoO1xuICAgIGhlaWdodCA9IHZpc3VhbFZpZXdwb3J0LmhlaWdodDtcbiAgICBjb25zdCB2aXN1YWxWaWV3cG9ydEJhc2VkID0gaXNXZWJLaXQoKTtcbiAgICBpZiAoIXZpc3VhbFZpZXdwb3J0QmFzZWQgfHwgdmlzdWFsVmlld3BvcnRCYXNlZCAmJiBzdHJhdGVneSA9PT0gJ2ZpeGVkJykge1xuICAgICAgeCA9IHZpc3VhbFZpZXdwb3J0Lm9mZnNldExlZnQ7XG4gICAgICB5ID0gdmlzdWFsVmlld3BvcnQub2Zmc2V0VG9wO1xuICAgIH1cbiAgfVxuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB4LFxuICAgIHlcbiAgfTtcbn1cblxuLy8gUmV0dXJucyB0aGUgaW5uZXIgY2xpZW50IHJlY3QsIHN1YnRyYWN0aW5nIHNjcm9sbGJhcnMgaWYgcHJlc2VudC5cbmZ1bmN0aW9uIGdldElubmVyQm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIHN0cmF0ZWd5KSB7XG4gIGNvbnN0IGNsaWVudFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgdHJ1ZSwgc3RyYXRlZ3kgPT09ICdmaXhlZCcpO1xuICBjb25zdCB0b3AgPSBjbGllbnRSZWN0LnRvcCArIGVsZW1lbnQuY2xpZW50VG9wO1xuICBjb25zdCBsZWZ0ID0gY2xpZW50UmVjdC5sZWZ0ICsgZWxlbWVudC5jbGllbnRMZWZ0O1xuICBjb25zdCBzY2FsZSA9IGlzSFRNTEVsZW1lbnQoZWxlbWVudCkgPyBnZXRTY2FsZShlbGVtZW50KSA6IGNyZWF0ZUNvb3JkcygxKTtcbiAgY29uc3Qgd2lkdGggPSBlbGVtZW50LmNsaWVudFdpZHRoICogc2NhbGUueDtcbiAgY29uc3QgaGVpZ2h0ID0gZWxlbWVudC5jbGllbnRIZWlnaHQgKiBzY2FsZS55O1xuICBjb25zdCB4ID0gbGVmdCAqIHNjYWxlLng7XG4gIGNvbnN0IHkgPSB0b3AgKiBzY2FsZS55O1xuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB4LFxuICAgIHlcbiAgfTtcbn1cbmZ1bmN0aW9uIGdldENsaWVudFJlY3RGcm9tQ2xpcHBpbmdBbmNlc3RvcihlbGVtZW50LCBjbGlwcGluZ0FuY2VzdG9yLCBzdHJhdGVneSkge1xuICBsZXQgcmVjdDtcbiAgaWYgKGNsaXBwaW5nQW5jZXN0b3IgPT09ICd2aWV3cG9ydCcpIHtcbiAgICByZWN0ID0gZ2V0Vmlld3BvcnRSZWN0KGVsZW1lbnQsIHN0cmF0ZWd5KTtcbiAgfSBlbHNlIGlmIChjbGlwcGluZ0FuY2VzdG9yID09PSAnZG9jdW1lbnQnKSB7XG4gICAgcmVjdCA9IGdldERvY3VtZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkpO1xuICB9IGVsc2UgaWYgKGlzRWxlbWVudChjbGlwcGluZ0FuY2VzdG9yKSkge1xuICAgIHJlY3QgPSBnZXRJbm5lckJvdW5kaW5nQ2xpZW50UmVjdChjbGlwcGluZ0FuY2VzdG9yLCBzdHJhdGVneSk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgdmlzdWFsT2Zmc2V0cyA9IGdldFZpc3VhbE9mZnNldHMoZWxlbWVudCk7XG4gICAgcmVjdCA9IHtcbiAgICAgIHg6IGNsaXBwaW5nQW5jZXN0b3IueCAtIHZpc3VhbE9mZnNldHMueCxcbiAgICAgIHk6IGNsaXBwaW5nQW5jZXN0b3IueSAtIHZpc3VhbE9mZnNldHMueSxcbiAgICAgIHdpZHRoOiBjbGlwcGluZ0FuY2VzdG9yLndpZHRoLFxuICAgICAgaGVpZ2h0OiBjbGlwcGluZ0FuY2VzdG9yLmhlaWdodFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHJlY3RUb0NsaWVudFJlY3QocmVjdCk7XG59XG5mdW5jdGlvbiBoYXNGaXhlZFBvc2l0aW9uQW5jZXN0b3IoZWxlbWVudCwgc3RvcE5vZGUpIHtcbiAgY29uc3QgcGFyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUoZWxlbWVudCk7XG4gIGlmIChwYXJlbnROb2RlID09PSBzdG9wTm9kZSB8fCAhaXNFbGVtZW50KHBhcmVudE5vZGUpIHx8IGlzTGFzdFRyYXZlcnNhYmxlTm9kZShwYXJlbnROb2RlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZShwYXJlbnROb2RlKS5wb3NpdGlvbiA9PT0gJ2ZpeGVkJyB8fCBoYXNGaXhlZFBvc2l0aW9uQW5jZXN0b3IocGFyZW50Tm9kZSwgc3RvcE5vZGUpO1xufVxuXG4vLyBBIFwiY2xpcHBpbmcgYW5jZXN0b3JcIiBpcyBhbiBgb3ZlcmZsb3dgIGVsZW1lbnQgd2l0aCB0aGUgY2hhcmFjdGVyaXN0aWMgb2Zcbi8vIGNsaXBwaW5nIChvciBoaWRpbmcpIGNoaWxkIGVsZW1lbnRzLiBUaGlzIHJldHVybnMgYWxsIGNsaXBwaW5nIGFuY2VzdG9yc1xuLy8gb2YgdGhlIGdpdmVuIGVsZW1lbnQgdXAgdGhlIHRyZWUuXG5mdW5jdGlvbiBnZXRDbGlwcGluZ0VsZW1lbnRBbmNlc3RvcnMoZWxlbWVudCwgY2FjaGUpIHtcbiAgY29uc3QgY2FjaGVkUmVzdWx0ID0gY2FjaGUuZ2V0KGVsZW1lbnQpO1xuICBpZiAoY2FjaGVkUmVzdWx0KSB7XG4gICAgcmV0dXJuIGNhY2hlZFJlc3VsdDtcbiAgfVxuICBsZXQgcmVzdWx0ID0gZ2V0T3ZlcmZsb3dBbmNlc3RvcnMoZWxlbWVudCwgW10sIGZhbHNlKS5maWx0ZXIoZWwgPT4gaXNFbGVtZW50KGVsKSAmJiBnZXROb2RlTmFtZShlbCkgIT09ICdib2R5Jyk7XG4gIGxldCBjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA9IG51bGw7XG4gIGNvbnN0IGVsZW1lbnRJc0ZpeGVkID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5wb3NpdGlvbiA9PT0gJ2ZpeGVkJztcbiAgbGV0IGN1cnJlbnROb2RlID0gZWxlbWVudElzRml4ZWQgPyBnZXRQYXJlbnROb2RlKGVsZW1lbnQpIDogZWxlbWVudDtcblxuICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvQ29udGFpbmluZ19ibG9jayNpZGVudGlmeWluZ190aGVfY29udGFpbmluZ19ibG9ja1xuICB3aGlsZSAoaXNFbGVtZW50KGN1cnJlbnROb2RlKSAmJiAhaXNMYXN0VHJhdmVyc2FibGVOb2RlKGN1cnJlbnROb2RlKSkge1xuICAgIGNvbnN0IGNvbXB1dGVkU3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKGN1cnJlbnROb2RlKTtcbiAgICBjb25zdCBjdXJyZW50Tm9kZUlzQ29udGFpbmluZyA9IGlzQ29udGFpbmluZ0Jsb2NrKGN1cnJlbnROb2RlKTtcbiAgICBpZiAoIWN1cnJlbnROb2RlSXNDb250YWluaW5nICYmIGNvbXB1dGVkU3R5bGUucG9zaXRpb24gPT09ICdmaXhlZCcpIHtcbiAgICAgIGN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlID0gbnVsbDtcbiAgICB9XG4gICAgY29uc3Qgc2hvdWxkRHJvcEN1cnJlbnROb2RlID0gZWxlbWVudElzRml4ZWQgPyAhY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgIWN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlIDogIWN1cnJlbnROb2RlSXNDb250YWluaW5nICYmIGNvbXB1dGVkU3R5bGUucG9zaXRpb24gPT09ICdzdGF0aWMnICYmICEhY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUgJiYgWydhYnNvbHV0ZScsICdmaXhlZCddLmluY2x1ZGVzKGN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlLnBvc2l0aW9uKSB8fCBpc092ZXJmbG93RWxlbWVudChjdXJyZW50Tm9kZSkgJiYgIWN1cnJlbnROb2RlSXNDb250YWluaW5nICYmIGhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvcihlbGVtZW50LCBjdXJyZW50Tm9kZSk7XG4gICAgaWYgKHNob3VsZERyb3BDdXJyZW50Tm9kZSkge1xuICAgICAgLy8gRHJvcCBub24tY29udGFpbmluZyBibG9ja3MuXG4gICAgICByZXN1bHQgPSByZXN1bHQuZmlsdGVyKGFuY2VzdG9yID0+IGFuY2VzdG9yICE9PSBjdXJyZW50Tm9kZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFJlY29yZCBsYXN0IGNvbnRhaW5pbmcgYmxvY2sgZm9yIG5leHQgaXRlcmF0aW9uLlxuICAgICAgY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUgPSBjb21wdXRlZFN0eWxlO1xuICAgIH1cbiAgICBjdXJyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUoY3VycmVudE5vZGUpO1xuICB9XG4gIGNhY2hlLnNldChlbGVtZW50LCByZXN1bHQpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vLyBHZXRzIHRoZSBtYXhpbXVtIGFyZWEgdGhhdCB0aGUgZWxlbWVudCBpcyB2aXNpYmxlIGluIGR1ZSB0byBhbnkgbnVtYmVyIG9mXG4vLyBjbGlwcGluZyBhbmNlc3RvcnMuXG5mdW5jdGlvbiBnZXRDbGlwcGluZ1JlY3QoX3JlZikge1xuICBsZXQge1xuICAgIGVsZW1lbnQsXG4gICAgYm91bmRhcnksXG4gICAgcm9vdEJvdW5kYXJ5LFxuICAgIHN0cmF0ZWd5XG4gIH0gPSBfcmVmO1xuICBjb25zdCBlbGVtZW50Q2xpcHBpbmdBbmNlc3RvcnMgPSBib3VuZGFyeSA9PT0gJ2NsaXBwaW5nQW5jZXN0b3JzJyA/IGlzVG9wTGF5ZXIoZWxlbWVudCkgPyBbXSA6IGdldENsaXBwaW5nRWxlbWVudEFuY2VzdG9ycyhlbGVtZW50LCB0aGlzLl9jKSA6IFtdLmNvbmNhdChib3VuZGFyeSk7XG4gIGNvbnN0IGNsaXBwaW5nQW5jZXN0b3JzID0gWy4uLmVsZW1lbnRDbGlwcGluZ0FuY2VzdG9ycywgcm9vdEJvdW5kYXJ5XTtcbiAgY29uc3QgZmlyc3RDbGlwcGluZ0FuY2VzdG9yID0gY2xpcHBpbmdBbmNlc3RvcnNbMF07XG4gIGNvbnN0IGNsaXBwaW5nUmVjdCA9IGNsaXBwaW5nQW5jZXN0b3JzLnJlZHVjZSgoYWNjUmVjdCwgY2xpcHBpbmdBbmNlc3RvcikgPT4ge1xuICAgIGNvbnN0IHJlY3QgPSBnZXRDbGllbnRSZWN0RnJvbUNsaXBwaW5nQW5jZXN0b3IoZWxlbWVudCwgY2xpcHBpbmdBbmNlc3Rvciwgc3RyYXRlZ3kpO1xuICAgIGFjY1JlY3QudG9wID0gbWF4KHJlY3QudG9wLCBhY2NSZWN0LnRvcCk7XG4gICAgYWNjUmVjdC5yaWdodCA9IG1pbihyZWN0LnJpZ2h0LCBhY2NSZWN0LnJpZ2h0KTtcbiAgICBhY2NSZWN0LmJvdHRvbSA9IG1pbihyZWN0LmJvdHRvbSwgYWNjUmVjdC5ib3R0b20pO1xuICAgIGFjY1JlY3QubGVmdCA9IG1heChyZWN0LmxlZnQsIGFjY1JlY3QubGVmdCk7XG4gICAgcmV0dXJuIGFjY1JlY3Q7XG4gIH0sIGdldENsaWVudFJlY3RGcm9tQ2xpcHBpbmdBbmNlc3RvcihlbGVtZW50LCBmaXJzdENsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KSk7XG4gIHJldHVybiB7XG4gICAgd2lkdGg6IGNsaXBwaW5nUmVjdC5yaWdodCAtIGNsaXBwaW5nUmVjdC5sZWZ0LFxuICAgIGhlaWdodDogY2xpcHBpbmdSZWN0LmJvdHRvbSAtIGNsaXBwaW5nUmVjdC50b3AsXG4gICAgeDogY2xpcHBpbmdSZWN0LmxlZnQsXG4gICAgeTogY2xpcHBpbmdSZWN0LnRvcFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXREaW1lbnNpb25zKGVsZW1lbnQpIHtcbiAgY29uc3Qge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodFxuICB9ID0gZ2V0Q3NzRGltZW5zaW9ucyhlbGVtZW50KTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHRcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0UmVjdFJlbGF0aXZlVG9PZmZzZXRQYXJlbnQoZWxlbWVudCwgb2Zmc2V0UGFyZW50LCBzdHJhdGVneSkge1xuICBjb25zdCBpc09mZnNldFBhcmVudEFuRWxlbWVudCA9IGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgY29uc3QgZG9jdW1lbnRFbGVtZW50ID0gZ2V0RG9jdW1lbnRFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIGNvbnN0IGlzRml4ZWQgPSBzdHJhdGVneSA9PT0gJ2ZpeGVkJztcbiAgY29uc3QgcmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCB0cnVlLCBpc0ZpeGVkLCBvZmZzZXRQYXJlbnQpO1xuICBsZXQgc2Nyb2xsID0ge1xuICAgIHNjcm9sbExlZnQ6IDAsXG4gICAgc2Nyb2xsVG9wOiAwXG4gIH07XG4gIGNvbnN0IG9mZnNldHMgPSBjcmVhdGVDb29yZHMoMCk7XG4gIGlmIChpc09mZnNldFBhcmVudEFuRWxlbWVudCB8fCAhaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgJiYgIWlzRml4ZWQpIHtcbiAgICBpZiAoZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSAhPT0gJ2JvZHknIHx8IGlzT3ZlcmZsb3dFbGVtZW50KGRvY3VtZW50RWxlbWVudCkpIHtcbiAgICAgIHNjcm9sbCA9IGdldE5vZGVTY3JvbGwob2Zmc2V0UGFyZW50KTtcbiAgICB9XG4gICAgaWYgKGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50KSB7XG4gICAgICBjb25zdCBvZmZzZXRSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KG9mZnNldFBhcmVudCwgdHJ1ZSwgaXNGaXhlZCwgb2Zmc2V0UGFyZW50KTtcbiAgICAgIG9mZnNldHMueCA9IG9mZnNldFJlY3QueCArIG9mZnNldFBhcmVudC5jbGllbnRMZWZ0O1xuICAgICAgb2Zmc2V0cy55ID0gb2Zmc2V0UmVjdC55ICsgb2Zmc2V0UGFyZW50LmNsaWVudFRvcDtcbiAgICB9IGVsc2UgaWYgKGRvY3VtZW50RWxlbWVudCkge1xuICAgICAgLy8gSWYgdGhlIDxib2R5PiBzY3JvbGxiYXIgYXBwZWFycyBvbiB0aGUgbGVmdCAoZS5nLiBSVEwgc3lzdGVtcykuIFVzZVxuICAgICAgLy8gRmlyZWZveCB3aXRoIGxheW91dC5zY3JvbGxiYXIuc2lkZSA9IDMgaW4gYWJvdXQ6Y29uZmlnIHRvIHRlc3QgdGhpcy5cbiAgICAgIG9mZnNldHMueCA9IGdldFdpbmRvd1Njcm9sbEJhclgoZG9jdW1lbnRFbGVtZW50KTtcbiAgICB9XG4gIH1cbiAgY29uc3QgaHRtbE9mZnNldCA9IGRvY3VtZW50RWxlbWVudCAmJiAhaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgJiYgIWlzRml4ZWQgPyBnZXRIVE1MT2Zmc2V0KGRvY3VtZW50RWxlbWVudCwgc2Nyb2xsKSA6IGNyZWF0ZUNvb3JkcygwKTtcbiAgY29uc3QgeCA9IHJlY3QubGVmdCArIHNjcm9sbC5zY3JvbGxMZWZ0IC0gb2Zmc2V0cy54IC0gaHRtbE9mZnNldC54O1xuICBjb25zdCB5ID0gcmVjdC50b3AgKyBzY3JvbGwuc2Nyb2xsVG9wIC0gb2Zmc2V0cy55IC0gaHRtbE9mZnNldC55O1xuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeSxcbiAgICB3aWR0aDogcmVjdC53aWR0aCxcbiAgICBoZWlnaHQ6IHJlY3QuaGVpZ2h0XG4gIH07XG59XG5cbmZ1bmN0aW9uIGlzU3RhdGljUG9zaXRpb25lZChlbGVtZW50KSB7XG4gIHJldHVybiBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uID09PSAnc3RhdGljJztcbn1cblxuZnVuY3Rpb24gZ2V0VHJ1ZU9mZnNldFBhcmVudChlbGVtZW50LCBwb2x5ZmlsbCkge1xuICBpZiAoIWlzSFRNTEVsZW1lbnQoZWxlbWVudCkgfHwgZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5wb3NpdGlvbiA9PT0gJ2ZpeGVkJykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmIChwb2x5ZmlsbCkge1xuICAgIHJldHVybiBwb2x5ZmlsbChlbGVtZW50KTtcbiAgfVxuICBsZXQgcmF3T2Zmc2V0UGFyZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7XG5cbiAgLy8gRmlyZWZveCByZXR1cm5zIHRoZSA8aHRtbD4gZWxlbWVudCBhcyB0aGUgb2Zmc2V0UGFyZW50IGlmIGl0J3Mgbm9uLXN0YXRpYyxcbiAgLy8gd2hpbGUgQ2hyb21lIGFuZCBTYWZhcmkgcmV0dXJuIHRoZSA8Ym9keT4gZWxlbWVudC4gVGhlIDxib2R5PiBlbGVtZW50IG11c3RcbiAgLy8gYmUgdXNlZCB0byBwZXJmb3JtIHRoZSBjb3JyZWN0IGNhbGN1bGF0aW9ucyBldmVuIGlmIHRoZSA8aHRtbD4gZWxlbWVudCBpc1xuICAvLyBub24tc3RhdGljLlxuICBpZiAoZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpID09PSByYXdPZmZzZXRQYXJlbnQpIHtcbiAgICByYXdPZmZzZXRQYXJlbnQgPSByYXdPZmZzZXRQYXJlbnQub3duZXJEb2N1bWVudC5ib2R5O1xuICB9XG4gIHJldHVybiByYXdPZmZzZXRQYXJlbnQ7XG59XG5cbi8vIEdldHMgdGhlIGNsb3Nlc3QgYW5jZXN0b3IgcG9zaXRpb25lZCBlbGVtZW50LiBIYW5kbGVzIHNvbWUgZWRnZSBjYXNlcyxcbi8vIHN1Y2ggYXMgdGFibGUgYW5jZXN0b3JzIGFuZCBjcm9zcyBicm93c2VyIGJ1Z3MuXG5mdW5jdGlvbiBnZXRPZmZzZXRQYXJlbnQoZWxlbWVudCwgcG9seWZpbGwpIHtcbiAgY29uc3Qgd2luID0gZ2V0V2luZG93KGVsZW1lbnQpO1xuICBpZiAoaXNUb3BMYXllcihlbGVtZW50KSkge1xuICAgIHJldHVybiB3aW47XG4gIH1cbiAgaWYgKCFpc0hUTUxFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgbGV0IHN2Z09mZnNldFBhcmVudCA9IGdldFBhcmVudE5vZGUoZWxlbWVudCk7XG4gICAgd2hpbGUgKHN2Z09mZnNldFBhcmVudCAmJiAhaXNMYXN0VHJhdmVyc2FibGVOb2RlKHN2Z09mZnNldFBhcmVudCkpIHtcbiAgICAgIGlmIChpc0VsZW1lbnQoc3ZnT2Zmc2V0UGFyZW50KSAmJiAhaXNTdGF0aWNQb3NpdGlvbmVkKHN2Z09mZnNldFBhcmVudCkpIHtcbiAgICAgICAgcmV0dXJuIHN2Z09mZnNldFBhcmVudDtcbiAgICAgIH1cbiAgICAgIHN2Z09mZnNldFBhcmVudCA9IGdldFBhcmVudE5vZGUoc3ZnT2Zmc2V0UGFyZW50KTtcbiAgICB9XG4gICAgcmV0dXJuIHdpbjtcbiAgfVxuICBsZXQgb2Zmc2V0UGFyZW50ID0gZ2V0VHJ1ZU9mZnNldFBhcmVudChlbGVtZW50LCBwb2x5ZmlsbCk7XG4gIHdoaWxlIChvZmZzZXRQYXJlbnQgJiYgaXNUYWJsZUVsZW1lbnQob2Zmc2V0UGFyZW50KSAmJiBpc1N0YXRpY1Bvc2l0aW9uZWQob2Zmc2V0UGFyZW50KSkge1xuICAgIG9mZnNldFBhcmVudCA9IGdldFRydWVPZmZzZXRQYXJlbnQob2Zmc2V0UGFyZW50LCBwb2x5ZmlsbCk7XG4gIH1cbiAgaWYgKG9mZnNldFBhcmVudCAmJiBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUob2Zmc2V0UGFyZW50KSAmJiBpc1N0YXRpY1Bvc2l0aW9uZWQob2Zmc2V0UGFyZW50KSAmJiAhaXNDb250YWluaW5nQmxvY2sob2Zmc2V0UGFyZW50KSkge1xuICAgIHJldHVybiB3aW47XG4gIH1cbiAgcmV0dXJuIG9mZnNldFBhcmVudCB8fCBnZXRDb250YWluaW5nQmxvY2soZWxlbWVudCkgfHwgd2luO1xufVxuXG5jb25zdCBnZXRFbGVtZW50UmVjdHMgPSBhc3luYyBmdW5jdGlvbiAoZGF0YSkge1xuICBjb25zdCBnZXRPZmZzZXRQYXJlbnRGbiA9IHRoaXMuZ2V0T2Zmc2V0UGFyZW50IHx8IGdldE9mZnNldFBhcmVudDtcbiAgY29uc3QgZ2V0RGltZW5zaW9uc0ZuID0gdGhpcy5nZXREaW1lbnNpb25zO1xuICBjb25zdCBmbG9hdGluZ0RpbWVuc2lvbnMgPSBhd2FpdCBnZXREaW1lbnNpb25zRm4oZGF0YS5mbG9hdGluZyk7XG4gIHJldHVybiB7XG4gICAgcmVmZXJlbmNlOiBnZXRSZWN0UmVsYXRpdmVUb09mZnNldFBhcmVudChkYXRhLnJlZmVyZW5jZSwgYXdhaXQgZ2V0T2Zmc2V0UGFyZW50Rm4oZGF0YS5mbG9hdGluZyksIGRhdGEuc3RyYXRlZ3kpLFxuICAgIGZsb2F0aW5nOiB7XG4gICAgICB4OiAwLFxuICAgICAgeTogMCxcbiAgICAgIHdpZHRoOiBmbG9hdGluZ0RpbWVuc2lvbnMud2lkdGgsXG4gICAgICBoZWlnaHQ6IGZsb2F0aW5nRGltZW5zaW9ucy5oZWlnaHRcbiAgICB9XG4gIH07XG59O1xuXG5mdW5jdGlvbiBpc1JUTChlbGVtZW50KSB7XG4gIHJldHVybiBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLmRpcmVjdGlvbiA9PT0gJ3J0bCc7XG59XG5cbmNvbnN0IHBsYXRmb3JtID0ge1xuICBjb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdCxcbiAgZ2V0RG9jdW1lbnRFbGVtZW50LFxuICBnZXRDbGlwcGluZ1JlY3QsXG4gIGdldE9mZnNldFBhcmVudCxcbiAgZ2V0RWxlbWVudFJlY3RzLFxuICBnZXRDbGllbnRSZWN0cyxcbiAgZ2V0RGltZW5zaW9ucyxcbiAgZ2V0U2NhbGUsXG4gIGlzRWxlbWVudCxcbiAgaXNSVExcbn07XG5cbmZ1bmN0aW9uIHJlY3RzQXJlRXF1YWwoYSwgYikge1xuICByZXR1cm4gYS54ID09PSBiLnggJiYgYS55ID09PSBiLnkgJiYgYS53aWR0aCA9PT0gYi53aWR0aCAmJiBhLmhlaWdodCA9PT0gYi5oZWlnaHQ7XG59XG5cbi8vIGh0dHBzOi8vc2FtdGhvci5hdS8yMDIxL29ic2VydmluZy1kb20vXG5mdW5jdGlvbiBvYnNlcnZlTW92ZShlbGVtZW50LCBvbk1vdmUpIHtcbiAgbGV0IGlvID0gbnVsbDtcbiAgbGV0IHRpbWVvdXRJZDtcbiAgY29uc3Qgcm9vdCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgZnVuY3Rpb24gY2xlYW51cCgpIHtcbiAgICB2YXIgX2lvO1xuICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgIChfaW8gPSBpbykgPT0gbnVsbCB8fCBfaW8uZGlzY29ubmVjdCgpO1xuICAgIGlvID0gbnVsbDtcbiAgfVxuICBmdW5jdGlvbiByZWZyZXNoKHNraXAsIHRocmVzaG9sZCkge1xuICAgIGlmIChza2lwID09PSB2b2lkIDApIHtcbiAgICAgIHNraXAgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHRocmVzaG9sZCA9PT0gdm9pZCAwKSB7XG4gICAgICB0aHJlc2hvbGQgPSAxO1xuICAgIH1cbiAgICBjbGVhbnVwKCk7XG4gICAgY29uc3QgZWxlbWVudFJlY3RGb3JSb290TWFyZ2luID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCB7XG4gICAgICBsZWZ0LFxuICAgICAgdG9wLFxuICAgICAgd2lkdGgsXG4gICAgICBoZWlnaHRcbiAgICB9ID0gZWxlbWVudFJlY3RGb3JSb290TWFyZ2luO1xuICAgIGlmICghc2tpcCkge1xuICAgICAgb25Nb3ZlKCk7XG4gICAgfVxuICAgIGlmICghd2lkdGggfHwgIWhlaWdodCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBpbnNldFRvcCA9IGZsb29yKHRvcCk7XG4gICAgY29uc3QgaW5zZXRSaWdodCA9IGZsb29yKHJvb3QuY2xpZW50V2lkdGggLSAobGVmdCArIHdpZHRoKSk7XG4gICAgY29uc3QgaW5zZXRCb3R0b20gPSBmbG9vcihyb290LmNsaWVudEhlaWdodCAtICh0b3AgKyBoZWlnaHQpKTtcbiAgICBjb25zdCBpbnNldExlZnQgPSBmbG9vcihsZWZ0KTtcbiAgICBjb25zdCByb290TWFyZ2luID0gLWluc2V0VG9wICsgXCJweCBcIiArIC1pbnNldFJpZ2h0ICsgXCJweCBcIiArIC1pbnNldEJvdHRvbSArIFwicHggXCIgKyAtaW5zZXRMZWZ0ICsgXCJweFwiO1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICByb290TWFyZ2luLFxuICAgICAgdGhyZXNob2xkOiBtYXgoMCwgbWluKDEsIHRocmVzaG9sZCkpIHx8IDFcbiAgICB9O1xuICAgIGxldCBpc0ZpcnN0VXBkYXRlID0gdHJ1ZTtcbiAgICBmdW5jdGlvbiBoYW5kbGVPYnNlcnZlKGVudHJpZXMpIHtcbiAgICAgIGNvbnN0IHJhdGlvID0gZW50cmllc1swXS5pbnRlcnNlY3Rpb25SYXRpbztcbiAgICAgIGlmIChyYXRpbyAhPT0gdGhyZXNob2xkKSB7XG4gICAgICAgIGlmICghaXNGaXJzdFVwZGF0ZSkge1xuICAgICAgICAgIHJldHVybiByZWZyZXNoKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFyYXRpbykge1xuICAgICAgICAgIC8vIElmIHRoZSByZWZlcmVuY2UgaXMgY2xpcHBlZCwgdGhlIHJhdGlvIGlzIDAuIFRocm90dGxlIHRoZSByZWZyZXNoXG4gICAgICAgICAgLy8gdG8gcHJldmVudCBhbiBpbmZpbml0ZSBsb29wIG9mIHVwZGF0ZXMuXG4gICAgICAgICAgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICByZWZyZXNoKGZhbHNlLCAxZS03KTtcbiAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZWZyZXNoKGZhbHNlLCByYXRpbyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChyYXRpbyA9PT0gMSAmJiAhcmVjdHNBcmVFcXVhbChlbGVtZW50UmVjdEZvclJvb3RNYXJnaW4sIGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpKSB7XG4gICAgICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCBldmVuIHRob3VnaCB0aGUgcmF0aW8gaXMgcmVwb3J0ZWQgYXMgMSwgdGhlXG4gICAgICAgIC8vIGVsZW1lbnQgaXMgbm90IGFjdHVhbGx5IGZ1bGx5IHdpdGhpbiB0aGUgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIncyByb290XG4gICAgICAgIC8vIGFyZWEgYW55bW9yZS4gVGhpcyBjYW4gaGFwcGVuIHVuZGVyIHBlcmZvcm1hbmNlIGNvbnN0cmFpbnRzLiBUaGlzIG1heVxuICAgICAgICAvLyBiZSBhIGJ1ZyBpbiB0aGUgYnJvd3NlcidzIEludGVyc2VjdGlvbk9ic2VydmVyIGltcGxlbWVudGF0aW9uLiBUb1xuICAgICAgICAvLyB3b3JrIGFyb3VuZCB0aGlzLCB3ZSBjb21wYXJlIHRoZSBlbGVtZW50J3MgYm91bmRpbmcgcmVjdCBub3cgd2l0aFxuICAgICAgICAvLyB3aGF0IGl0IHdhcyBhdCB0aGUgdGltZSB3ZSBjcmVhdGVkIHRoZSBJbnRlcnNlY3Rpb25PYnNlcnZlci4gSWYgdGhleVxuICAgICAgICAvLyBhcmUgbm90IGVxdWFsIHRoZW4gdGhlIGVsZW1lbnQgbW92ZWQsIHNvIHdlIHJlZnJlc2guXG4gICAgICAgIHJlZnJlc2goKTtcbiAgICAgIH1cbiAgICAgIGlzRmlyc3RVcGRhdGUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBPbGRlciBicm93c2VycyBkb24ndCBzdXBwb3J0IGEgYGRvY3VtZW50YCBhcyB0aGUgcm9vdCBhbmQgd2lsbCB0aHJvdyBhblxuICAgIC8vIGVycm9yLlxuICAgIHRyeSB7XG4gICAgICBpbyA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihoYW5kbGVPYnNlcnZlLCB7XG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIC8vIEhhbmRsZSA8aWZyYW1lPnNcbiAgICAgICAgcm9vdDogcm9vdC5vd25lckRvY3VtZW50XG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpbyA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihoYW5kbGVPYnNlcnZlLCBvcHRpb25zKTtcbiAgICB9XG4gICAgaW8ub2JzZXJ2ZShlbGVtZW50KTtcbiAgfVxuICByZWZyZXNoKHRydWUpO1xuICByZXR1cm4gY2xlYW51cDtcbn1cblxuLyoqXG4gKiBBdXRvbWF0aWNhbGx5IHVwZGF0ZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IHdoZW4gbmVjZXNzYXJ5LlxuICogU2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdoZW4gdGhlIGZsb2F0aW5nIGVsZW1lbnQgaXMgbW91bnRlZCBvbiB0aGUgRE9NIG9yXG4gKiB2aXNpYmxlIG9uIHRoZSBzY3JlZW4uXG4gKiBAcmV0dXJucyBjbGVhbnVwIGZ1bmN0aW9uIHRoYXQgc2hvdWxkIGJlIGludm9rZWQgd2hlbiB0aGUgZmxvYXRpbmcgZWxlbWVudCBpc1xuICogcmVtb3ZlZCBmcm9tIHRoZSBET00gb3IgaGlkZGVuIGZyb20gdGhlIHNjcmVlbi5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hdXRvVXBkYXRlXG4gKi9cbmZ1bmN0aW9uIGF1dG9VcGRhdGUocmVmZXJlbmNlLCBmbG9hdGluZywgdXBkYXRlLCBvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgY29uc3Qge1xuICAgIGFuY2VzdG9yU2Nyb2xsID0gdHJ1ZSxcbiAgICBhbmNlc3RvclJlc2l6ZSA9IHRydWUsXG4gICAgZWxlbWVudFJlc2l6ZSA9IHR5cGVvZiBSZXNpemVPYnNlcnZlciA9PT0gJ2Z1bmN0aW9uJyxcbiAgICBsYXlvdXRTaGlmdCA9IHR5cGVvZiBJbnRlcnNlY3Rpb25PYnNlcnZlciA9PT0gJ2Z1bmN0aW9uJyxcbiAgICBhbmltYXRpb25GcmFtZSA9IGZhbHNlXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCByZWZlcmVuY2VFbCA9IHVud3JhcEVsZW1lbnQocmVmZXJlbmNlKTtcbiAgY29uc3QgYW5jZXN0b3JzID0gYW5jZXN0b3JTY3JvbGwgfHwgYW5jZXN0b3JSZXNpemUgPyBbLi4uKHJlZmVyZW5jZUVsID8gZ2V0T3ZlcmZsb3dBbmNlc3RvcnMocmVmZXJlbmNlRWwpIDogW10pLCAuLi5nZXRPdmVyZmxvd0FuY2VzdG9ycyhmbG9hdGluZyldIDogW107XG4gIGFuY2VzdG9ycy5mb3JFYWNoKGFuY2VzdG9yID0+IHtcbiAgICBhbmNlc3RvclNjcm9sbCAmJiBhbmNlc3Rvci5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB1cGRhdGUsIHtcbiAgICAgIHBhc3NpdmU6IHRydWVcbiAgICB9KTtcbiAgICBhbmNlc3RvclJlc2l6ZSAmJiBhbmNlc3Rvci5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB1cGRhdGUpO1xuICB9KTtcbiAgY29uc3QgY2xlYW51cElvID0gcmVmZXJlbmNlRWwgJiYgbGF5b3V0U2hpZnQgPyBvYnNlcnZlTW92ZShyZWZlcmVuY2VFbCwgdXBkYXRlKSA6IG51bGw7XG4gIGxldCByZW9ic2VydmVGcmFtZSA9IC0xO1xuICBsZXQgcmVzaXplT2JzZXJ2ZXIgPSBudWxsO1xuICBpZiAoZWxlbWVudFJlc2l6ZSkge1xuICAgIHJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKF9yZWYgPT4ge1xuICAgICAgbGV0IFtmaXJzdEVudHJ5XSA9IF9yZWY7XG4gICAgICBpZiAoZmlyc3RFbnRyeSAmJiBmaXJzdEVudHJ5LnRhcmdldCA9PT0gcmVmZXJlbmNlRWwgJiYgcmVzaXplT2JzZXJ2ZXIpIHtcbiAgICAgICAgLy8gUHJldmVudCB1cGRhdGUgbG9vcHMgd2hlbiB1c2luZyB0aGUgYHNpemVgIG1pZGRsZXdhcmUuXG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mbG9hdGluZy11aS9mbG9hdGluZy11aS9pc3N1ZXMvMTc0MFxuICAgICAgICByZXNpemVPYnNlcnZlci51bm9ic2VydmUoZmxvYXRpbmcpO1xuICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShyZW9ic2VydmVGcmFtZSk7XG4gICAgICAgIHJlb2JzZXJ2ZUZyYW1lID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICB2YXIgX3Jlc2l6ZU9ic2VydmVyO1xuICAgICAgICAgIChfcmVzaXplT2JzZXJ2ZXIgPSByZXNpemVPYnNlcnZlcikgPT0gbnVsbCB8fCBfcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShmbG9hdGluZyk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdXBkYXRlKCk7XG4gICAgfSk7XG4gICAgaWYgKHJlZmVyZW5jZUVsICYmICFhbmltYXRpb25GcmFtZSkge1xuICAgICAgcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShyZWZlcmVuY2VFbCk7XG4gICAgfVxuICAgIHJlc2l6ZU9ic2VydmVyLm9ic2VydmUoZmxvYXRpbmcpO1xuICB9XG4gIGxldCBmcmFtZUlkO1xuICBsZXQgcHJldlJlZlJlY3QgPSBhbmltYXRpb25GcmFtZSA/IGdldEJvdW5kaW5nQ2xpZW50UmVjdChyZWZlcmVuY2UpIDogbnVsbDtcbiAgaWYgKGFuaW1hdGlvbkZyYW1lKSB7XG4gICAgZnJhbWVMb29wKCk7XG4gIH1cbiAgZnVuY3Rpb24gZnJhbWVMb29wKCkge1xuICAgIGNvbnN0IG5leHRSZWZSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KHJlZmVyZW5jZSk7XG4gICAgaWYgKHByZXZSZWZSZWN0ICYmICFyZWN0c0FyZUVxdWFsKHByZXZSZWZSZWN0LCBuZXh0UmVmUmVjdCkpIHtcbiAgICAgIHVwZGF0ZSgpO1xuICAgIH1cbiAgICBwcmV2UmVmUmVjdCA9IG5leHRSZWZSZWN0O1xuICAgIGZyYW1lSWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnJhbWVMb29wKTtcbiAgfVxuICB1cGRhdGUoKTtcbiAgcmV0dXJuICgpID0+IHtcbiAgICB2YXIgX3Jlc2l6ZU9ic2VydmVyMjtcbiAgICBhbmNlc3RvcnMuZm9yRWFjaChhbmNlc3RvciA9PiB7XG4gICAgICBhbmNlc3RvclNjcm9sbCAmJiBhbmNlc3Rvci5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB1cGRhdGUpO1xuICAgICAgYW5jZXN0b3JSZXNpemUgJiYgYW5jZXN0b3IucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdXBkYXRlKTtcbiAgICB9KTtcbiAgICBjbGVhbnVwSW8gPT0gbnVsbCB8fCBjbGVhbnVwSW8oKTtcbiAgICAoX3Jlc2l6ZU9ic2VydmVyMiA9IHJlc2l6ZU9ic2VydmVyKSA9PSBudWxsIHx8IF9yZXNpemVPYnNlcnZlcjIuZGlzY29ubmVjdCgpO1xuICAgIHJlc2l6ZU9ic2VydmVyID0gbnVsbDtcbiAgICBpZiAoYW5pbWF0aW9uRnJhbWUpIHtcbiAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKGZyYW1lSWQpO1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB3aXRoIGFuIG9iamVjdCBvZiBvdmVyZmxvdyBzaWRlIG9mZnNldHMgdGhhdCBkZXRlcm1pbmUgaG93IG11Y2ggdGhlXG4gKiBlbGVtZW50IGlzIG92ZXJmbG93aW5nIGEgZ2l2ZW4gY2xpcHBpbmcgYm91bmRhcnkgb24gZWFjaCBzaWRlLlxuICogLSBwb3NpdGl2ZSA9IG92ZXJmbG93aW5nIHRoZSBib3VuZGFyeSBieSB0aGF0IG51bWJlciBvZiBwaXhlbHNcbiAqIC0gbmVnYXRpdmUgPSBob3cgbWFueSBwaXhlbHMgbGVmdCBiZWZvcmUgaXQgd2lsbCBvdmVyZmxvd1xuICogLSAwID0gbGllcyBmbHVzaCB3aXRoIHRoZSBib3VuZGFyeVxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2RldGVjdE92ZXJmbG93XG4gKi9cbmNvbnN0IGRldGVjdE92ZXJmbG93ID0gZGV0ZWN0T3ZlcmZsb3ckMTtcblxuLyoqXG4gKiBNb2RpZmllcyB0aGUgcGxhY2VtZW50IGJ5IHRyYW5zbGF0aW5nIHRoZSBmbG9hdGluZyBlbGVtZW50IGFsb25nIHRoZVxuICogc3BlY2lmaWVkIGF4ZXMuXG4gKiBBIG51bWJlciAoc2hvcnRoYW5kIGZvciBgbWFpbkF4aXNgIG9yIGRpc3RhbmNlKSwgb3IgYW4gYXhlcyBjb25maWd1cmF0aW9uXG4gKiBvYmplY3QgbWF5IGJlIHBhc3NlZC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9vZmZzZXRcbiAqL1xuY29uc3Qgb2Zmc2V0ID0gb2Zmc2V0JDE7XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IGNob29zaW5nIHRoZSBwbGFjZW1lbnRcbiAqIHRoYXQgaGFzIHRoZSBtb3N0IHNwYWNlIGF2YWlsYWJsZSBhdXRvbWF0aWNhbGx5LCB3aXRob3V0IG5lZWRpbmcgdG8gc3BlY2lmeSBhXG4gKiBwcmVmZXJyZWQgcGxhY2VtZW50LiBBbHRlcm5hdGl2ZSB0byBgZmxpcGAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXV0b1BsYWNlbWVudFxuICovXG5jb25zdCBhdXRvUGxhY2VtZW50ID0gYXV0b1BsYWNlbWVudCQxO1xuXG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBzaGlmdGluZyBpdCBpbiBvcmRlciB0b1xuICoga2VlcCBpdCBpbiB2aWV3IHdoZW4gaXQgd2lsbCBvdmVyZmxvdyB0aGUgY2xpcHBpbmcgYm91bmRhcnkuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvc2hpZnRcbiAqL1xuY29uc3Qgc2hpZnQgPSBzaGlmdCQxO1xuXG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBmbGlwcGluZyB0aGUgYHBsYWNlbWVudGBcbiAqIGluIG9yZGVyIHRvIGtlZXAgaXQgaW4gdmlldyB3aGVuIHRoZSBwcmVmZXJyZWQgcGxhY2VtZW50KHMpIHdpbGwgb3ZlcmZsb3cgdGhlXG4gKiBjbGlwcGluZyBib3VuZGFyeS4gQWx0ZXJuYXRpdmUgdG8gYGF1dG9QbGFjZW1lbnRgLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2ZsaXBcbiAqL1xuY29uc3QgZmxpcCA9IGZsaXAkMTtcblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRoYXQgYWxsb3dzIHlvdSB0byBjaGFuZ2UgdGhlIHNpemUgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQg4oCUXG4gKiBmb3IgaW5zdGFuY2UsIHByZXZlbnQgaXQgZnJvbSBvdmVyZmxvd2luZyB0aGUgY2xpcHBpbmcgYm91bmRhcnkgb3IgbWF0Y2ggdGhlXG4gKiB3aWR0aCBvZiB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvc2l6ZVxuICovXG5jb25zdCBzaXplID0gc2l6ZSQxO1xuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdG8gaGlkZSB0aGUgZmxvYXRpbmcgZWxlbWVudCBpbiBhcHBsaWNhYmxlIHNpdHVhdGlvbnMsIHN1Y2ggYXNcbiAqIHdoZW4gaXQgaXMgbm90IGluIHRoZSBzYW1lIGNsaXBwaW5nIGNvbnRleHQgYXMgdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2hpZGVcbiAqL1xuY29uc3QgaGlkZSA9IGhpZGUkMTtcblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRvIHBvc2l0aW9uIGFuIGlubmVyIGVsZW1lbnQgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgc28gdGhhdCBpdFxuICogYXBwZWFycyBjZW50ZXJlZCB0byB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXJyb3dcbiAqL1xuY29uc3QgYXJyb3cgPSBhcnJvdyQxO1xuXG4vKipcbiAqIFByb3ZpZGVzIGltcHJvdmVkIHBvc2l0aW9uaW5nIGZvciBpbmxpbmUgcmVmZXJlbmNlIGVsZW1lbnRzIHRoYXQgY2FuIHNwYW5cbiAqIG92ZXIgbXVsdGlwbGUgbGluZXMsIHN1Y2ggYXMgaHlwZXJsaW5rcyBvciByYW5nZSBzZWxlY3Rpb25zLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2lubGluZVxuICovXG5jb25zdCBpbmxpbmUgPSBpbmxpbmUkMTtcblxuLyoqXG4gKiBCdWlsdC1pbiBgbGltaXRlcmAgdGhhdCB3aWxsIHN0b3AgYHNoaWZ0KClgIGF0IGEgY2VydGFpbiBwb2ludC5cbiAqL1xuY29uc3QgbGltaXRTaGlmdCA9IGxpbWl0U2hpZnQkMTtcblxuLyoqXG4gKiBDb21wdXRlcyB0aGUgYHhgIGFuZCBgeWAgY29vcmRpbmF0ZXMgdGhhdCB3aWxsIHBsYWNlIHRoZSBmbG9hdGluZyBlbGVtZW50XG4gKiBuZXh0IHRvIGEgZ2l2ZW4gcmVmZXJlbmNlIGVsZW1lbnQuXG4gKi9cbmNvbnN0IGNvbXB1dGVQb3NpdGlvbiA9IChyZWZlcmVuY2UsIGZsb2F0aW5nLCBvcHRpb25zKSA9PiB7XG4gIC8vIFRoaXMgY2FjaGVzIHRoZSBleHBlbnNpdmUgYGdldENsaXBwaW5nRWxlbWVudEFuY2VzdG9yc2AgZnVuY3Rpb24gc28gdGhhdFxuICAvLyBtdWx0aXBsZSBsaWZlY3ljbGUgcmVzZXRzIHJlLXVzZSB0aGUgc2FtZSByZXN1bHQuIEl0IG9ubHkgbGl2ZXMgZm9yIGFcbiAgLy8gc2luZ2xlIGNhbGwuIElmIG90aGVyIGZ1bmN0aW9ucyBiZWNvbWUgZXhwZW5zaXZlLCB3ZSBjYW4gYWRkIHRoZW0gYXMgd2VsbC5cbiAgY29uc3QgY2FjaGUgPSBuZXcgTWFwKCk7XG4gIGNvbnN0IG1lcmdlZE9wdGlvbnMgPSB7XG4gICAgcGxhdGZvcm0sXG4gICAgLi4ub3B0aW9uc1xuICB9O1xuICBjb25zdCBwbGF0Zm9ybVdpdGhDYWNoZSA9IHtcbiAgICAuLi5tZXJnZWRPcHRpb25zLnBsYXRmb3JtLFxuICAgIF9jOiBjYWNoZVxuICB9O1xuICByZXR1cm4gY29tcHV0ZVBvc2l0aW9uJDEocmVmZXJlbmNlLCBmbG9hdGluZywge1xuICAgIC4uLm1lcmdlZE9wdGlvbnMsXG4gICAgcGxhdGZvcm06IHBsYXRmb3JtV2l0aENhY2hlXG4gIH0pO1xufTtcblxuZXhwb3J0IHsgYXJyb3csIGF1dG9QbGFjZW1lbnQsIGF1dG9VcGRhdGUsIGNvbXB1dGVQb3NpdGlvbiwgZGV0ZWN0T3ZlcmZsb3csIGZsaXAsIGhpZGUsIGlubGluZSwgbGltaXRTaGlmdCwgb2Zmc2V0LCBwbGF0Zm9ybSwgc2hpZnQsIHNpemUgfTtcbiIsImltcG9ydCB7IGFycm93IGFzIGFycm93JDEsIGNvbXB1dGVQb3NpdGlvbiB9IGZyb20gJ0BmbG9hdGluZy11aS9kb20nO1xuZXhwb3J0IHsgYXV0b1BsYWNlbWVudCwgYXV0b1VwZGF0ZSwgY29tcHV0ZVBvc2l0aW9uLCBkZXRlY3RPdmVyZmxvdywgZmxpcCwgZ2V0T3ZlcmZsb3dBbmNlc3RvcnMsIGhpZGUsIGlubGluZSwgbGltaXRTaGlmdCwgb2Zmc2V0LCBwbGF0Zm9ybSwgc2hpZnQsIHNpemUgfSBmcm9tICdAZmxvYXRpbmctdWkvZG9tJztcbmltcG9ydCB7IGlzTm9kZSwgZ2V0Tm9kZU5hbWUgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMvZG9tJztcbmltcG9ydCB7IHVucmVmLCBjb21wdXRlZCwgcmVmLCBzaGFsbG93UmVmLCB3YXRjaCwgZ2V0Q3VycmVudFNjb3BlLCBvblNjb3BlRGlzcG9zZSwgc2hhbGxvd1JlYWRvbmx5IH0gZnJvbSAndnVlLWRlbWknO1xuXG5mdW5jdGlvbiBpc0NvbXBvbmVudFB1YmxpY0luc3RhbmNlKHRhcmdldCkge1xuICByZXR1cm4gdGFyZ2V0ICE9IG51bGwgJiYgdHlwZW9mIHRhcmdldCA9PT0gJ29iamVjdCcgJiYgJyRlbCcgaW4gdGFyZ2V0O1xufVxuZnVuY3Rpb24gdW53cmFwRWxlbWVudCh0YXJnZXQpIHtcbiAgaWYgKGlzQ29tcG9uZW50UHVibGljSW5zdGFuY2UodGFyZ2V0KSkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSB0YXJnZXQuJGVsO1xuICAgIHJldHVybiBpc05vZGUoZWxlbWVudCkgJiYgZ2V0Tm9kZU5hbWUoZWxlbWVudCkgPT09ICcjY29tbWVudCcgPyBudWxsIDogZWxlbWVudDtcbiAgfVxuICByZXR1cm4gdGFyZ2V0O1xufVxuXG5mdW5jdGlvbiB0b1ZhbHVlKHNvdXJjZSkge1xuICByZXR1cm4gdHlwZW9mIHNvdXJjZSA9PT0gJ2Z1bmN0aW9uJyA/IHNvdXJjZSgpIDogdW5yZWYoc291cmNlKTtcbn1cblxuLyoqXG4gKiBQb3NpdGlvbnMgYW4gaW5uZXIgZWxlbWVudCBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBzdWNoIHRoYXQgaXQgaXMgY2VudGVyZWQgdG8gdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHBhcmFtIG9wdGlvbnMgVGhlIGFycm93IG9wdGlvbnMuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXJyb3dcbiAqL1xuZnVuY3Rpb24gYXJyb3cob3B0aW9ucykge1xuICByZXR1cm4ge1xuICAgIG5hbWU6ICdhcnJvdycsXG4gICAgb3B0aW9ucyxcbiAgICBmbihhcmdzKSB7XG4gICAgICBjb25zdCBlbGVtZW50ID0gdW53cmFwRWxlbWVudCh0b1ZhbHVlKG9wdGlvbnMuZWxlbWVudCkpO1xuICAgICAgaWYgKGVsZW1lbnQgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgICByZXR1cm4gYXJyb3ckMSh7XG4gICAgICAgIGVsZW1lbnQsXG4gICAgICAgIHBhZGRpbmc6IG9wdGlvbnMucGFkZGluZ1xuICAgICAgfSkuZm4oYXJncyk7XG4gICAgfVxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXREUFIoZWxlbWVudCkge1xuICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuICBjb25zdCB3aW4gPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcgfHwgd2luZG93O1xuICByZXR1cm4gd2luLmRldmljZVBpeGVsUmF0aW8gfHwgMTtcbn1cblxuZnVuY3Rpb24gcm91bmRCeURQUihlbGVtZW50LCB2YWx1ZSkge1xuICBjb25zdCBkcHIgPSBnZXREUFIoZWxlbWVudCk7XG4gIHJldHVybiBNYXRoLnJvdW5kKHZhbHVlICogZHByKSAvIGRwcjtcbn1cblxuLyoqXG4gKiBDb21wdXRlcyB0aGUgYHhgIGFuZCBgeWAgY29vcmRpbmF0ZXMgdGhhdCB3aWxsIHBsYWNlIHRoZSBmbG9hdGluZyBlbGVtZW50IG5leHQgdG8gYSByZWZlcmVuY2UgZWxlbWVudCB3aGVuIGl0IGlzIGdpdmVuIGEgY2VydGFpbiBDU1MgcG9zaXRpb25pbmcgc3RyYXRlZ3kuXG4gKiBAcGFyYW0gcmVmZXJlbmNlIFRoZSByZWZlcmVuY2UgdGVtcGxhdGUgcmVmLlxuICogQHBhcmFtIGZsb2F0aW5nIFRoZSBmbG9hdGluZyB0ZW1wbGF0ZSByZWYuXG4gKiBAcGFyYW0gb3B0aW9ucyBUaGUgZmxvYXRpbmcgb3B0aW9ucy5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy92dWVcbiAqL1xuZnVuY3Rpb24gdXNlRmxvYXRpbmcocmVmZXJlbmNlLCBmbG9hdGluZywgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGNvbnN0IHdoaWxlRWxlbWVudHNNb3VudGVkT3B0aW9uID0gb3B0aW9ucy53aGlsZUVsZW1lbnRzTW91bnRlZDtcbiAgY29uc3Qgb3Blbk9wdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICB2YXIgX3RvVmFsdWU7XG4gICAgcmV0dXJuIChfdG9WYWx1ZSA9IHRvVmFsdWUob3B0aW9ucy5vcGVuKSkgIT0gbnVsbCA/IF90b1ZhbHVlIDogdHJ1ZTtcbiAgfSk7XG4gIGNvbnN0IG1pZGRsZXdhcmVPcHRpb24gPSBjb21wdXRlZCgoKSA9PiB0b1ZhbHVlKG9wdGlvbnMubWlkZGxld2FyZSkpO1xuICBjb25zdCBwbGFjZW1lbnRPcHRpb24gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgdmFyIF90b1ZhbHVlMjtcbiAgICByZXR1cm4gKF90b1ZhbHVlMiA9IHRvVmFsdWUob3B0aW9ucy5wbGFjZW1lbnQpKSAhPSBudWxsID8gX3RvVmFsdWUyIDogJ2JvdHRvbSc7XG4gIH0pO1xuICBjb25zdCBzdHJhdGVneU9wdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICB2YXIgX3RvVmFsdWUzO1xuICAgIHJldHVybiAoX3RvVmFsdWUzID0gdG9WYWx1ZShvcHRpb25zLnN0cmF0ZWd5KSkgIT0gbnVsbCA/IF90b1ZhbHVlMyA6ICdhYnNvbHV0ZSc7XG4gIH0pO1xuICBjb25zdCB0cmFuc2Zvcm1PcHRpb24gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgdmFyIF90b1ZhbHVlNDtcbiAgICByZXR1cm4gKF90b1ZhbHVlNCA9IHRvVmFsdWUob3B0aW9ucy50cmFuc2Zvcm0pKSAhPSBudWxsID8gX3RvVmFsdWU0IDogdHJ1ZTtcbiAgfSk7XG4gIGNvbnN0IHJlZmVyZW5jZUVsZW1lbnQgPSBjb21wdXRlZCgoKSA9PiB1bndyYXBFbGVtZW50KHJlZmVyZW5jZS52YWx1ZSkpO1xuICBjb25zdCBmbG9hdGluZ0VsZW1lbnQgPSBjb21wdXRlZCgoKSA9PiB1bndyYXBFbGVtZW50KGZsb2F0aW5nLnZhbHVlKSk7XG4gIGNvbnN0IHggPSByZWYoMCk7XG4gIGNvbnN0IHkgPSByZWYoMCk7XG4gIGNvbnN0IHN0cmF0ZWd5ID0gcmVmKHN0cmF0ZWd5T3B0aW9uLnZhbHVlKTtcbiAgY29uc3QgcGxhY2VtZW50ID0gcmVmKHBsYWNlbWVudE9wdGlvbi52YWx1ZSk7XG4gIGNvbnN0IG1pZGRsZXdhcmVEYXRhID0gc2hhbGxvd1JlZih7fSk7XG4gIGNvbnN0IGlzUG9zaXRpb25lZCA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IGZsb2F0aW5nU3R5bGVzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGluaXRpYWxTdHlsZXMgPSB7XG4gICAgICBwb3NpdGlvbjogc3RyYXRlZ3kudmFsdWUsXG4gICAgICBsZWZ0OiAnMCcsXG4gICAgICB0b3A6ICcwJ1xuICAgIH07XG4gICAgaWYgKCFmbG9hdGluZ0VsZW1lbnQudmFsdWUpIHtcbiAgICAgIHJldHVybiBpbml0aWFsU3R5bGVzO1xuICAgIH1cbiAgICBjb25zdCB4VmFsID0gcm91bmRCeURQUihmbG9hdGluZ0VsZW1lbnQudmFsdWUsIHgudmFsdWUpO1xuICAgIGNvbnN0IHlWYWwgPSByb3VuZEJ5RFBSKGZsb2F0aW5nRWxlbWVudC52YWx1ZSwgeS52YWx1ZSk7XG4gICAgaWYgKHRyYW5zZm9ybU9wdGlvbi52YWx1ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uaW5pdGlhbFN0eWxlcyxcbiAgICAgICAgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZShcIiArIHhWYWwgKyBcInB4LCBcIiArIHlWYWwgKyBcInB4KVwiLFxuICAgICAgICAuLi4oZ2V0RFBSKGZsb2F0aW5nRWxlbWVudC52YWx1ZSkgPj0gMS41ICYmIHtcbiAgICAgICAgICB3aWxsQ2hhbmdlOiAndHJhbnNmb3JtJ1xuICAgICAgICB9KVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHBvc2l0aW9uOiBzdHJhdGVneS52YWx1ZSxcbiAgICAgIGxlZnQ6IHhWYWwgKyBcInB4XCIsXG4gICAgICB0b3A6IHlWYWwgKyBcInB4XCJcbiAgICB9O1xuICB9KTtcbiAgbGV0IHdoaWxlRWxlbWVudHNNb3VudGVkQ2xlYW51cDtcbiAgZnVuY3Rpb24gdXBkYXRlKCkge1xuICAgIGlmIChyZWZlcmVuY2VFbGVtZW50LnZhbHVlID09IG51bGwgfHwgZmxvYXRpbmdFbGVtZW50LnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgb3BlbiA9IG9wZW5PcHRpb24udmFsdWU7XG4gICAgY29tcHV0ZVBvc2l0aW9uKHJlZmVyZW5jZUVsZW1lbnQudmFsdWUsIGZsb2F0aW5nRWxlbWVudC52YWx1ZSwge1xuICAgICAgbWlkZGxld2FyZTogbWlkZGxld2FyZU9wdGlvbi52YWx1ZSxcbiAgICAgIHBsYWNlbWVudDogcGxhY2VtZW50T3B0aW9uLnZhbHVlLFxuICAgICAgc3RyYXRlZ3k6IHN0cmF0ZWd5T3B0aW9uLnZhbHVlXG4gICAgfSkudGhlbihwb3NpdGlvbiA9PiB7XG4gICAgICB4LnZhbHVlID0gcG9zaXRpb24ueDtcbiAgICAgIHkudmFsdWUgPSBwb3NpdGlvbi55O1xuICAgICAgc3RyYXRlZ3kudmFsdWUgPSBwb3NpdGlvbi5zdHJhdGVneTtcbiAgICAgIHBsYWNlbWVudC52YWx1ZSA9IHBvc2l0aW9uLnBsYWNlbWVudDtcbiAgICAgIG1pZGRsZXdhcmVEYXRhLnZhbHVlID0gcG9zaXRpb24ubWlkZGxld2FyZURhdGE7XG4gICAgICAvKipcbiAgICAgICAqIFRoZSBmbG9hdGluZyBlbGVtZW50J3MgcG9zaXRpb24gbWF5IGJlIHJlY29tcHV0ZWQgd2hpbGUgaXQncyBjbG9zZWRcbiAgICAgICAqIGJ1dCBzdGlsbCBtb3VudGVkIChzdWNoIGFzIHdoZW4gdHJhbnNpdGlvbmluZyBvdXQpLiBUbyBlbnN1cmVcbiAgICAgICAqIGBpc1Bvc2l0aW9uZWRgIHdpbGwgYmUgYGZhbHNlYCBpbml0aWFsbHkgb24gdGhlIG5leHQgb3BlbiwgYXZvaWRcbiAgICAgICAqIHNldHRpbmcgaXQgdG8gYHRydWVgIHdoZW4gYG9wZW4gPT09IGZhbHNlYCAobXVzdCBiZSBzcGVjaWZpZWQpLlxuICAgICAgICovXG4gICAgICBpc1Bvc2l0aW9uZWQudmFsdWUgPSBvcGVuICE9PSBmYWxzZTtcbiAgICB9KTtcbiAgfVxuICBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgIGlmICh0eXBlb2Ygd2hpbGVFbGVtZW50c01vdW50ZWRDbGVhbnVwID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB3aGlsZUVsZW1lbnRzTW91bnRlZENsZWFudXAoKTtcbiAgICAgIHdoaWxlRWxlbWVudHNNb3VudGVkQ2xlYW51cCA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gYXR0YWNoKCkge1xuICAgIGNsZWFudXAoKTtcbiAgICBpZiAod2hpbGVFbGVtZW50c01vdW50ZWRPcHRpb24gPT09IHVuZGVmaW5lZCkge1xuICAgICAgdXBkYXRlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChyZWZlcmVuY2VFbGVtZW50LnZhbHVlICE9IG51bGwgJiYgZmxvYXRpbmdFbGVtZW50LnZhbHVlICE9IG51bGwpIHtcbiAgICAgIHdoaWxlRWxlbWVudHNNb3VudGVkQ2xlYW51cCA9IHdoaWxlRWxlbWVudHNNb3VudGVkT3B0aW9uKHJlZmVyZW5jZUVsZW1lbnQudmFsdWUsIGZsb2F0aW5nRWxlbWVudC52YWx1ZSwgdXBkYXRlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gcmVzZXQoKSB7XG4gICAgaWYgKCFvcGVuT3B0aW9uLnZhbHVlKSB7XG4gICAgICBpc1Bvc2l0aW9uZWQudmFsdWUgPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgd2F0Y2goW21pZGRsZXdhcmVPcHRpb24sIHBsYWNlbWVudE9wdGlvbiwgc3RyYXRlZ3lPcHRpb24sIG9wZW5PcHRpb25dLCB1cGRhdGUsIHtcbiAgICBmbHVzaDogJ3N5bmMnXG4gIH0pO1xuICB3YXRjaChbcmVmZXJlbmNlRWxlbWVudCwgZmxvYXRpbmdFbGVtZW50XSwgYXR0YWNoLCB7XG4gICAgZmx1c2g6ICdzeW5jJ1xuICB9KTtcbiAgd2F0Y2gob3Blbk9wdGlvbiwgcmVzZXQsIHtcbiAgICBmbHVzaDogJ3N5bmMnXG4gIH0pO1xuICBpZiAoZ2V0Q3VycmVudFNjb3BlKCkpIHtcbiAgICBvblNjb3BlRGlzcG9zZShjbGVhbnVwKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHg6IHNoYWxsb3dSZWFkb25seSh4KSxcbiAgICB5OiBzaGFsbG93UmVhZG9ubHkoeSksXG4gICAgc3RyYXRlZ3k6IHNoYWxsb3dSZWFkb25seShzdHJhdGVneSksXG4gICAgcGxhY2VtZW50OiBzaGFsbG93UmVhZG9ubHkocGxhY2VtZW50KSxcbiAgICBtaWRkbGV3YXJlRGF0YTogc2hhbGxvd1JlYWRvbmx5KG1pZGRsZXdhcmVEYXRhKSxcbiAgICBpc1Bvc2l0aW9uZWQ6IHNoYWxsb3dSZWFkb25seShpc1Bvc2l0aW9uZWQpLFxuICAgIGZsb2F0aW5nU3R5bGVzLFxuICAgIHVwZGF0ZVxuICB9O1xufVxuXG5leHBvcnQgeyBhcnJvdywgdXNlRmxvYXRpbmcgfTtcbiIsImV4cG9ydCBjb25zdCBpc0NsaWNrT3V0c2lkZSA9IChldmVudDogTW91c2VFdmVudCwgZWxlbWVudHM6IEhUTUxFbGVtZW50IHwgSFRNTEVsZW1lbnRbXSk6IGJvb2xlYW4gPT4ge1xuICBjb25zdCB0YXJnZXRzID0gQXJyYXkuaXNBcnJheShlbGVtZW50cykgPyBlbGVtZW50cyA6IFtlbGVtZW50c107XG4gIHJldHVybiAhdGFyZ2V0cy5zb21lKChlbCkgPT4gZWwuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpKTtcbn07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBhdXRvUGxhY2VtZW50LCBhdXRvVXBkYXRlLCBvZmZzZXQgYXMgb2Zmc2V0TWlkZGxld2FyZSwgc2hpZnQsIHVzZUZsb2F0aW5nIH0gZnJvbSAnQGZsb2F0aW5nLXVpL3Z1ZSc7XG4gIGltcG9ydCB7IGNvbXB1dGVkLCBvbkJlZm9yZU1vdW50LCBvbk1vdW50ZWQsIG9uVW5tb3VudGVkLCByZWYsIHdhdGNoLCB3YXRjaEVmZmVjdCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBpc0NsaWNrT3V0c2lkZSB9IGZyb20gJ0AvdXRpbGl0aWVzL2V2ZW50JztcbiAgaW1wb3J0IHsgVE9QX0xBWUVSX0lELCBpbml0RmF1eFRvcExheWVyIH0gZnJvbSAnQC91dGlsaXRpZXMvdmlld3BvcnQnO1xuXG4gIGltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSAndnVlJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGFuY2hvcklkOiBzdHJpbmc7XG4gICAgb2Zmc2V0PzogbnVtYmVyO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgb2Zmc2V0OiAxNixcbiAgfSk7XG5cbiAgY29uc3QgYW5jaG9yOiBSZWY8SFRNTEVsZW1lbnQgfCBudWxsPiA9IHJlZihudWxsKTtcbiAgY29uc3QgZmxvYXRpbmc6IFJlZjxIVE1MRWxlbWVudCB8IG51bGw+ID0gcmVmKG51bGwpO1xuICBjb25zdCByb290OiBSZWY8SFRNTEVsZW1lbnQgfCBudWxsPiA9IHJlZihudWxsKTtcbiAgY29uc3QgaXNIb3ZlcmVkID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgaXNUb2dnbGVkT3BlbiA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IG1pZGRsZXdhcmUgPSByZWYoW2F1dG9QbGFjZW1lbnQoKSwgb2Zmc2V0TWlkZGxld2FyZSh7IG1haW5BeGlzOiBwcm9wcy5vZmZzZXQgfSksIHNoaWZ0KHsgcGFkZGluZzogMTYgfSldKTtcblxuICBjb25zdCBpc1Nob3dQb3BvdmVyID0gY29tcHV0ZWQoKCkgPT4gaXNIb3ZlcmVkLnZhbHVlIHx8IGlzVG9nZ2xlZE9wZW4udmFsdWUpO1xuXG4gIGNvbnN0IHsgZmxvYXRpbmdTdHlsZXMgfSA9IHVzZUZsb2F0aW5nKGFuY2hvciwgZmxvYXRpbmcsIHtcbiAgICBtaWRkbGV3YXJlLFxuICAgIHN0cmF0ZWd5OiAnZml4ZWQnLFxuICAgIHdoaWxlRWxlbWVudHNNb3VudGVkOiBhdXRvVXBkYXRlLFxuICB9KTtcblxuICBjb25zdCBoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUNsaWNrID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICBpZiAoIWFuY2hvci52YWx1ZSB8fCAhZmxvYXRpbmcudmFsdWUpIHJldHVybjtcbiAgICBpZiAoaXNDbGlja091dHNpZGUoZSwgW2FuY2hvci52YWx1ZSwgZmxvYXRpbmcudmFsdWVdKSkge1xuICAgICAgaXNUb2dnbGVkT3Blbi52YWx1ZSA9IGZhbHNlO1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQW5jaG9yRWxlbWVudE1vdXNlT3ZlciA9ICgpID0+IHtcbiAgICBpc0hvdmVyZWQudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZUxlYXZlID0gKCkgPT4ge1xuICAgIGlzSG92ZXJlZC52YWx1ZSA9IGZhbHNlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUFuY2hvckVsZW1lbnRDbGljayA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmIChpc1RvZ2dsZWRPcGVuLnZhbHVlKSB7XG4gICAgICBpc1RvZ2dsZWRPcGVuLnZhbHVlID0gZmFsc2U7XG4gICAgICBpc0hvdmVyZWQudmFsdWUgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgaXNUb2dnbGVkT3Blbi52YWx1ZSA9IHRydWU7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGFkZExpc3RlbmVyc1RvQW5jaG9yRWxlbWVudCA9ICgpID0+IHtcbiAgICBpZiAoIWFuY2hvci52YWx1ZSkgcmV0dXJuIG51bGw7XG4gICAgYW5jaG9yLnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlb3ZlcicsIGhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZU92ZXIpO1xuICAgIGFuY2hvci52YWx1ZS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgaGFuZGxlQW5jaG9yRWxlbWVudE1vdXNlTGVhdmUpO1xuICAgIGFuY2hvci52YWx1ZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUFuY2hvckVsZW1lbnRDbGljayk7XG4gIH07XG5cbiAgY29uc3QgcmVtb3ZlTGlzdGVuZXJzRnJvbUFuY2hvckVsZW1lbnQgPSAoKSA9PiB7XG4gICAgaWYgKCFhbmNob3IudmFsdWUpIHJldHVybiBudWxsO1xuICAgIGFuY2hvci52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW92ZXInLCBoYW5kbGVBbmNob3JFbGVtZW50TW91c2VPdmVyKTtcbiAgICBhbmNob3IudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIGhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZUxlYXZlKTtcbiAgICBhbmNob3IudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVBbmNob3JFbGVtZW50Q2xpY2spO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVBlcm1hbmVudE9wZW5Cb2R5S2V5ZG93biA9IChlOiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgaWYgKGUua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgaXNUb2dnbGVkT3Blbi52YWx1ZSA9IGZhbHNlO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBhZGRPcGVuTGlzdGVuZXJzVG9Sb290ID0gKCkgPT4ge1xuICAgIGlmICghcm9vdC52YWx1ZSkgcmV0dXJuO1xuICAgIHJvb3QudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUNsaWNrLCB0cnVlKTtcbiAgICByb290LnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUtleWRvd24pO1xuICB9O1xuXG4gIGNvbnN0IHJlbW92ZU9wZW5MaXN0ZW5lcnNGcm9tUm9vdCA9ICgpID0+IHtcbiAgICBpZiAoIXJvb3QudmFsdWUpIHJldHVybjtcbiAgICByb290LnZhbHVlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlUGVybWFuZW50T3BlbkJvZHlDbGljaywgdHJ1ZSk7XG4gICAgcm9vdC52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgaGFuZGxlUGVybWFuZW50T3BlbkJvZHlLZXlkb3duKTtcbiAgfTtcblxuICBjb25zdCB1cGRhdGVBbmNob3JFbGVtZW50ID0gKCkgPT4ge1xuICAgIGFuY2hvci52YWx1ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHByb3BzLmFuY2hvcklkKTtcbiAgfTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBpc1RvZ2dsZWRPcGVuLnZhbHVlLFxuICAgIChuZXdWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlKSB7XG4gICAgICAgIGFkZE9wZW5MaXN0ZW5lcnNUb1Jvb3QoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlbW92ZU9wZW5MaXN0ZW5lcnNGcm9tUm9vdCgpO1xuICAgICAgfVxuICAgIH1cbiAgKTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy5hbmNob3JJZCxcbiAgICAoKSA9PiB7XG4gICAgICByZW1vdmVMaXN0ZW5lcnNGcm9tQW5jaG9yRWxlbWVudCgpO1xuICAgICAgdXBkYXRlQW5jaG9yRWxlbWVudCgpO1xuICAgICAgYWRkTGlzdGVuZXJzVG9BbmNob3JFbGVtZW50KCk7XG4gICAgfVxuICApO1xuXG4gIHdhdGNoRWZmZWN0KCgpID0+IHtcbiAgICBtaWRkbGV3YXJlLnZhbHVlID0gW2F1dG9QbGFjZW1lbnQoKSwgb2Zmc2V0TWlkZGxld2FyZSh7IG1haW5BeGlzOiBwcm9wcy5vZmZzZXQgfSksIHNoaWZ0KHsgcGFkZGluZzogMTYgfSldO1xuICB9KTtcblxuICBvbkJlZm9yZU1vdW50KCgpID0+IHtcbiAgICBpbml0RmF1eFRvcExheWVyKCk7XG4gIH0pO1xuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgdXBkYXRlQW5jaG9yRWxlbWVudCgpO1xuICAgIHJvb3QudmFsdWUgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgYWRkTGlzdGVuZXJzVG9BbmNob3JFbGVtZW50KCk7XG4gIH0pO1xuXG4gIG9uVW5tb3VudGVkKCgpID0+IHtcbiAgICByZW1vdmVMaXN0ZW5lcnNGcm9tQW5jaG9yRWxlbWVudCgpO1xuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxUZWxlcG9ydCA6dG89XCJgIyR7VE9QX0xBWUVSX0lEfWBcIj5cbiAgICA8VHJhbnNpdGlvbj5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLXBvcG92ZXInLFxuICAgICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgICAgQ1NTLkJPUkRFUi5DT0xPUi5MT1csXG4gICAgICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8yLFxuICAgICAgICAgIENTUy5QQURESU5HLkZVTEwuT05FLFxuICAgICAgICAgIENTUy5TSEFET1cuQk9UVE9NLFxuICAgICAgICBdXCJcbiAgICAgICAgcmVmPVwiZmxvYXRpbmdcIlxuICAgICAgICA6c3R5bGU9XCJ7IC4uLmZsb2F0aW5nU3R5bGVzIH1cIlxuICAgICAgICB2LXNob3c9XCJpc1Nob3dQb3BvdmVyXCJcbiAgICAgID5cbiAgICAgICAgPHNsb3QgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvVHJhbnNpdGlvbj5cbiAgPC9UZWxlcG9ydD5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLXBvcG92ZXIge1xuICAgIG1heC13aWR0aDogMjU2cHg7XG4gIH1cbiAgLnYtZW50ZXItZnJvbSxcbiAgLnYtbGVhdmUtdG8ge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbiAgLnYtZW50ZXItYWN0aXZlLFxuICAudi1sZWF2ZS1hY3RpdmUge1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuICAudi1lbnRlci10byxcbiAgLnYtbGVhdmUtZnJvbSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgVEFSR0VUIH0gZnJvbSAnQC90eXBlcy9UYXJnZXQnO1xuXG4gIGltcG9ydCB0eXBlIHsgTGluayB9IGZyb20gJ0AvdHlwZXMvTGluayc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBoZWFkaW5nPzogc3RyaW5nO1xuICAgIGxpbmtzOiBMaW5rW107XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBoZWFkaW5nOiAnJyxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8c2VjdGlvbiBjbGFzcz1cInRpZGUtc2VvLWxpbmtzXCI+XG4gICAgPGgyIDpjbGFzcz1cIltDU1MuTUFSR0lOLkJPVFRPTS5IQUxGXVwiPlxuICAgICAge3sgcHJvcHMuaGVhZGluZyB9fVxuICAgIDwvaDI+XG5cbiAgICA8dWwgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLldSQVAsIENTUy5HQVAuVFdPLCBDU1MuTElTVF9CVUxMRVRTLk9GRl1cIj5cbiAgICAgIDxsaVxuICAgICAgICA6Y2xhc3M9XCJbJ3RpZGUtc2VvLWxpbmsnLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuR0FQLlFVQVJURVIsIENTUy5GT05ULlJPTEUuQk9EWV8yXVwiXG4gICAgICAgIDprZXk9XCJsaW5rLmxhYmVsXCJcbiAgICAgICAgdi1mb3I9XCJsaW5rIGluIHByb3BzLmxpbmtzXCJcbiAgICAgID5cbiAgICAgICAgPGFcbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLlVOREVSTElORS5SRVNULk9GRl1cIlxuICAgICAgICAgIDpocmVmPVwibGluay51cmxcIlxuICAgICAgICAgIDp0YXJnZXQ9XCJsaW5rLmlzTmV3VGFiID8gVEFSR0VULkJMQU5LIDogVEFSR0VULlNFTEZcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgbGluay5sYWJlbCB9fVxuICAgICAgICA8L2E+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gIDwvc2VjdGlvbj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC8qIFRPRE86IFJlZmFjdG9yIHRvIGFjY2VwdCBicmVha3BvaW50IHByb3AgaW4gb3JkZXIgdG8gYWNjb21wbGlzaCB0aGlzIHdpdGggbmVpdGhlciBjdXN0b20gYnJlYWtwb2ludHMgbm9yIGRlcGVuZGVuY3kgb24gVmlld3BvcnRTdG9yZS4gKi9cbiAgLnRpZGUtc2VvLWxpbmsge1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5cbiAgQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gICAgLnRpZGUtc2VvLWxpbmsge1xuICAgICAgd2lkdGg6IGNhbGMoKDEwMCUgLSAycmVtKSAvIDIpO1xuICAgIH1cbiAgfVxuXG4gIEBtZWRpYSAobWluLXdpZHRoOiAxMjMycHgpIHtcbiAgICAudGlkZS1zZW8tbGluayB7XG4gICAgICB3aWR0aDogY2FsYygoMTAwJSAtIDZyZW0pIC8gNCk7XG4gICAgfVxuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgb25CZWZvcmVNb3VudCwgb25Nb3VudGVkLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUJ1dHRvbkljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBQUklPUklUWSB9IGZyb20gJ0AvdHlwZXMvUHJpb3JpdHknO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRPUF9MQVlFUl9JRCwgaW5pdEZhdXhUb3BMYXllciwgc2V0U2Nyb2xsTG9jayB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZpZXdwb3J0JztcblxuICBpbXBvcnQgVGlkZURpdmlkZXIgZnJvbSAnLi9UaWRlRGl2aWRlci52dWUnO1xuXG4gIGltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSAndnVlJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGlzT3BlbjogYm9vbGVhbjtcbiAgICBpc0JhY2tCdXR0b24/OiBib29sZWFuO1xuICB9O1xuICBjb25zdCBwcm9wcyA9IGRlZmluZVByb3BzPFByb3BzPigpO1xuXG4gIHR5cGUgRW1pdHMgPSB7XG4gICAgKGU6ICdiYWNrJyk6IHZvaWQ7XG4gICAgKGU6ICdjbG9zZScpOiB2b2lkO1xuICB9O1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czxFbWl0cz4oKTtcblxuICBjb25zdCBkaWFsb2dFbGVtZW50OiBSZWY8SFRNTERpYWxvZ0VsZW1lbnQgfCBudWxsPiA9IHJlZihudWxsKTtcblxuICBjb25zdCB0cmlnZ2VyTmF0aXZlRGlhbG9nT3BlbiA9ICgpID0+IHtcbiAgICBkaWFsb2dFbGVtZW50LnZhbHVlPy5zaG93TW9kYWwoKTtcbiAgfTtcblxuICBjb25zdCB0cmlnZ2VyTmF0aXZlRGlhbG9nQ2xvc2UgPSAoKSA9PiB7XG4gICAgZGlhbG9nRWxlbWVudC52YWx1ZT8uY2xvc2UoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVCYWNrZHJvcENsaWNrID0gKCkgPT4ge1xuICAgIGVtaXQoJ2Nsb3NlJyk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRXNjYXBlS2V5ZG93biA9IChlOiBFdmVudCkgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBlbWl0KCdjbG9zZScpO1xuICB9O1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLmlzT3BlbixcbiAgICAobmV3VmFsdWUpID0+IHtcbiAgICAgIGlmICghZGlhbG9nRWxlbWVudC52YWx1ZSkgcmV0dXJuO1xuICAgICAgaWYgKG5ld1ZhbHVlKSB7XG4gICAgICAgIHRyaWdnZXJOYXRpdmVEaWFsb2dPcGVuKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0cmlnZ2VyTmF0aXZlRGlhbG9nQ2xvc2UoKTtcbiAgICAgIH1cbiAgICAgIHNldFNjcm9sbExvY2sobmV3VmFsdWUpO1xuICAgIH1cbiAgKTtcblxuICBvbkJlZm9yZU1vdW50KCgpID0+IHtcbiAgICBpbml0RmF1eFRvcExheWVyKCk7XG4gIH0pO1xuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgaWYgKHByb3BzLmlzT3Blbikge1xuICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ09wZW4oKTtcbiAgICB9XG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPFRlbGVwb3J0IDp0bz1cImAjJHtUT1BfTEFZRVJfSUR9YFwiPlxuICAgIDxkaWFsb2dcbiAgICAgIDpjbGFzcz1cIlsndGlkZS1zaGVldCcsIENTUy5CRy5JTklUSUFMLCBDU1MuSEVJR0hULkZVTEwsIENTUy5XSURUSC5GVUxMLCBDU1MuT1ZFUkZMT1cuWFkuSElEREVOXVwiXG4gICAgICByZWY9XCJkaWFsb2dFbGVtZW50XCJcbiAgICAgIEBjbGljay5zZWxmPVwiaGFuZGxlQmFja2Ryb3BDbGlja1wiXG4gICAgICBAY2xvc2UucHJldmVudFxuICAgICAgQGtleWRvd24uZXNjYXBlPVwiaGFuZGxlRXNjYXBlS2V5ZG93blwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtc2hlZXQtYm9keScsXG4gICAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICAgICAgQ1NTLkhFSUdIVC5GVUxMLFxuICAgICAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgIF1cIlxuICAgICAgPlxuICAgICAgICA8aGVhZGVyXG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICAgIENTUy5JU09MQVRJT04uSVNPTEFURSxcbiAgICAgICAgICAgIENTUy5QQURESU5HLlRPUC5PTkUsXG4gICAgICAgICAgICBDU1MuUEFERElORy5YLk9ORSxcbiAgICAgICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgICAgIENTUy5aX0lOREVYLk9ORSxcbiAgICAgICAgICBdXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5GTEVYLkdST1cuT0ZGLCBDU1MuRkxFWC5TSFJJTksuT0ZGXVwiXG4gICAgICAgICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9MRUZUXCJcbiAgICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICAgICAgQGNsaWNrPVwiZW1pdCgnYmFjaycpXCJcbiAgICAgICAgICAgIHYtaWY9XCJpc0JhY2tCdXR0b25cIlxuICAgICAgICAgIC8+XG5cbiAgICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5HUk9XLk9GRiwgQ1NTLkZMRVguU0hSSU5LLk9GRiwgQ1NTLk1BUkdJTi5MRUZULkFVVE9dXCJcbiAgICAgICAgICAgIDppY29uPVwiSUNPTi5DTE9TRVwiXG4gICAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgICAgIEBjbGljaz1cImVtaXQoJ2Nsb3NlJylcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgIDxUaWRlRGl2aWRlciAvPlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAndGlkZS1zaGVldC1jb250ZW50JyxcbiAgICAgICAgICAgIENTUy5ESVNQTEFZLkdSSUQsXG4gICAgICAgICAgICBDU1MuT1ZFUkZMT1cuWS5BVVRPLFxuICAgICAgICAgICAgQ1NTLk9WRVJGTE9XLlguSElEREVOLFxuICAgICAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgICAgICBDU1MuUEFERElORy5CT1RUT00uT05FLFxuICAgICAgICAgICAgQ1NTLklTT0xBVElPTi5JU09MQVRFLFxuICAgICAgICAgIF1cIlxuICAgICAgICA+XG4gICAgICAgICAgPHNsb3QgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2RpYWxvZz5cbiAgPC9UZWxlcG9ydD5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLXNoZWV0IHtcbiAgICAtLXNoZWV0LXBhZGRpbmcteDogdmFyKC0tdGlkZS1zcGFjaW5nLTEpO1xuICAgIG1heC13aWR0aDogdW5zZXQ7XG4gICAgbWF4LWhlaWdodDogdW5zZXQ7XG4gICAganVzdGlmeS1pdGVtczogcmlnaHQ7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGlkZS1hbmltYXRlKSBhbGxvdy1kaXNjcmV0ZTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gIH1cblxuICAudGlkZS1zaGVldFtvcGVuXSB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpO1xuICB9XG5cbiAgLnRpZGUtc2hlZXQ6OmJhY2tkcm9wIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGlkZS1hbmltYXRlKSBhbGxvdy1kaXNjcmV0ZTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMHB4KTtcbiAgfVxuXG4gIC50aWRlLXNoZWV0W29wZW5dOjpiYWNrZHJvcCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS10cmFuc3BhcmVudC00MDApO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogdmFyKC0tdGlkZS1iZy1ibHVyKTtcbiAgfVxuXG4gIC50aWRlLXNoZWV0LWJvZHkge1xuICAgIG1heC13aWR0aDogbWluKGNhbGMoMTAwdncgLSB2YXIoLS10aWRlLXNwYWNpbmctMikpLCAzMTFweCk7XG4gIH1cblxuICAudGlkZS1zaGVldC1jb250ZW50IHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHZhcigtLXNoZWV0LXBhZGRpbmcteCkgMWZyIHZhcigtLXNoZWV0LXBhZGRpbmcteCk7XG4gIH1cblxuICA6d2hlcmUoLnRpZGUtc2hlZXQtY29udGVudCk6ZGVlcCg+IDp3aGVyZSgqKSkge1xuICAgIGdyaWQtY29sdW1uOiAyO1xuICB9XG5cbiAgQHN0YXJ0aW5nLXN0eWxlIHtcbiAgICAudGlkZS1zaGVldFtvcGVuXSB7XG4gICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xuICAgIH1cblxuICAgIC50aWRlLXNoZWV0W29wZW5dOjpiYWNrZHJvcCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGJhY2tkcm9wLWZpbHRlcjogdmFyKC0tdGlkZS1iZy1ibHVyKTtcbiAgICB9XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGlzQWN0aXZlPzogYm9vbGVhbjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBpc0FjdGl2ZTogZmFsc2UsXG4gIH0pO1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0cyhbJ2NoYW5nZSddKTtcblxuICBjb25zdCBoYW5kbGVDbGljayA9ICgpID0+IHtcbiAgICBpZiAoIXByb3BzLmRpc2FibGVkKSB7XG4gICAgICBlbWl0KCdjaGFuZ2UnKTtcbiAgICB9XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8YnV0dG9uXG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtc3dpdGNoJyxcbiAgICAgIHByb3BzLmlzQWN0aXZlID8gJ2FjdGl2ZScgOiAnJyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICBwcm9wcy5pc0FjdGl2ZSA/ICcnIDogQ1NTLkJPUkRFUi5DT0xPUi5ERUZBVUxULFxuICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgIHByb3BzLmlzQWN0aXZlID8gQ1NTLkJHLlNFQ09OREFSWSA6IENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgXVwiXG4gICAgOmRpc2FibGVkPVwicHJvcHMuZGlzYWJsZWRcIlxuICAgIEBjbGljaz1cImhhbmRsZUNsaWNrXCJcbiAgICBhcmlhLWxhYmVsPVwiU3dpdGNoXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtc3dpdGNoLWluZGljYXRvcicsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMxLkNFTlRFUixcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgICAgcHJvcHMuaXNBY3RpdmUgPyBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUIDogQ1NTLkJHLlNFQ09OREFSWSxcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6aWNvbj1cIklDT04uQ0hFQ0tcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuTEFSR0VcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgPC9idXR0b24+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1zd2l0Y2gge1xuICAgIHdpZHRoOiA2NHB4O1xuICAgIGhlaWdodDogMzJweDtcbiAgICB0cmFuc2l0aW9uOiB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGJhY2tncm91bmQtY29sb3I7XG4gIH1cblxuICAudGlkZS1zd2l0Y2g6ZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IHZhcigtLXRpZGUtb3BhY2l0eSk7XG4gIH1cblxuICAudGlkZS1zd2l0Y2guYWN0aXZlIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtc2Vjb25kYXJ5KTtcbiAgfVxuXG4gIC50aWRlLXN3aXRjaC5hY3RpdmUgLnRpZGUtc3dpdGNoLWluZGljYXRvciB7XG4gICAgbGVmdDogMzZweDtcbiAgfVxuXG4gIC50aWRlLXN3aXRjaC1pbmRpY2F0b3Ige1xuICAgIGxlZnQ6IDRweDtcbiAgICB0cmFuc2l0aW9uOiB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGxlZnQsIGJvcmRlci1jb2xvciwgYmFja2dyb3VuZC1jb2xvcjtcbiAgfVxuPC9zdHlsZT5cbiJdLCJuYW1lcyI6WyJPUklFTlRBVElPTiIsIkNTUyIsInV0aWxpdGllcyIsImJyZWFrcG9pbnQiLCJ1dGlsaXR5IiwicHJvcHMiLCJfX3Byb3BzIiwiX29wZW5CbG9jayIsIl9jcmVhdGVFbGVtZW50QmxvY2siLCJfaG9pc3RlZF8xIiwiX2NyZWF0ZUVsZW1lbnRWTm9kZSIsIl9ub3JtYWxpemVDbGFzcyIsIl91bnJlZiIsIlJFQUxNIiwiU0laRSIsIlNJWkVfQlVUVE9OIiwiZm9ybWF0TnVtYmVyIiwiaW5wdXQiLCJvdXRwdXQiLCJkaWdpdHMiLCJmb3JtYXRQYXNjYWxDYXNlIiwid29yZCIsImZvcm1hdFBob25lIiwiZm9ybWF0UHJpY2UiLCJpbm5lclNWRyIsInJlZiIsIndhdGNoIiwiaWQiLCJuYW1lIiwicHJlZml4IiwicmVhbG1Gb2xkZXIiLCJjb21wb25lbnQiLCJkZWZpbmVBc3luY0NvbXBvbmVudCIsIl9fdmFyaWFibGVEeW5hbWljSW1wb3J0UnVudGltZUhlbHBlciIsIm1hcmtSYXciLCJfY3JlYXRlQmxvY2siLCJfcmVzb2x2ZUR5bmFtaWNDb21wb25lbnQiLCJJQ09OIiwiSUNPTl9SRUFMTSIsImVtaXQiLCJfX2VtaXQiLCJoYW5kbGVUb2dnbGVDbGljayIsIlRpZGVEaXZpZGVyIiwiX3RvRGlzcGxheVN0cmluZyIsIl9jcmVhdGVWTm9kZSIsIlRpZGVJY29uIiwiX3JlbmRlclNsb3QiLCJfY3R4IiwiRUxFTUVOVCIsIkVMRU1FTlRfVEVYVF9BU19JQ09OIiwiUFJJT1JJVFkiLCJUQVJHRVQiLCJBTEVSVCIsInNsb3RzIiwidXNlU2xvdHMiLCJoYXNCb2R5IiwiY29tcHV0ZWQiLCJub2RlcyIsIl9hIiwibm9kZSIsIkNvbW1lbnQiLCJpY29uVHlwZSIsIlRpZGVMaW5rIiwiVGlkZUJ1dHRvbkljb24iLCJCQURHRV9DT0xPUiIsIkJBREdFX0NPTE9SX0RFVEFJTFMiLCJCQURHRV9UUlVTVEVEIiwiX0ZyYWdtZW50IiwiY3J1bWIiLCJpbmRleCIsIl9ob2lzdGVkXzIiLCJfaG9pc3RlZF8zIiwiX2NyZWF0ZVRleHRWTm9kZSIsImhhbmRsZUNsaWNrIiwidGFiIiwiJGV2ZW50IiwiVFlQRV9DQVJEIiwiY2FyZEdhcCIsImRvdEdhcCIsImRvdFdpZHRoIiwiY29udGFpbmVyUmVmIiwiY29udGVudFdpZHRoIiwiY3VycmVudFBhZ2VJbmRleCIsImRvdHNSZWYiLCJmcmFtZVdpZHRoIiwiaXNGaXJzdFNsaWRlIiwiaXNMYXN0U2xpZGUiLCJzaG93QnV0dG9ucyIsInNsaWRlT2JzZXJ2ZXIiLCJzbGlkZXMiLCJzbGlkZXNJblZpZXciLCJzbG90T2JzZXJ2ZXIiLCJjdXJyZW50UGFnZSIsImRvdENvbnRhaW5lcldpZHRoIiwiZG90Q291bnRWaXNpYmxlIiwidG90YWxQYWdlcyIsImxhc3RQYWdlSW5kZXgiLCJnYXBXaWR0aCIsImNvbnRlbnROb0dhcCIsInF1b3RpZW50IiwiZ2V0RG90Q2xhc3MiLCJkb3RJbmRleCIsImNsYXNzTmFtZSIsIm1lYXN1cmVEb20iLCJvYnNlcnZlU2xpZGVzIiwib3B0aW9ucyIsImVudHJpZXMiLCJzbGlkZXNBZGRlZFRvVmlldyIsImVudHJ5Iiwic2xpZGVJbmRleCIsInNsaWRlIiwiYSIsImIiLCJjaGlsZCIsIm9ic2VydmVTbG90Iiwib2JzZXJ2ZXJDYWxsYmFjayIsInNjcm9sbFRvT2Zmc2V0IiwidGFyZ2V0IiwibGFzdE9mZnNldCIsImlzU2Nyb2xsaW5nTGVmdCIsInVwZGF0ZURvdHMiLCJzaG93TmV4dFBhZ2UiLCJuZXh0U2xpZGUiLCJzaG93UHJldmlvdXNQYWdlIiwicHJldmlvdXNTbGlkZSIsInNob3dOZXh0U2xpZGUiLCJzaG93UHJldmlvdXNTbGlkZSIsImNlbnRlckRvdCIsIm9uTW91bnRlZCIsIm9uVW5tb3VudGVkIiwiX2IiLCJfY2FjaGUiLCJfbm9ybWFsaXplU3R5bGUiLCJfcmVuZGVyTGlzdCIsIl9ob2lzdGVkXzQiLCJfaG9pc3RlZF81IiwiRk9STV9LRVkiLCJ1c2VUaWRlRm9ybSIsImZvcmNlU2hvd0Vycm9ycyIsInByb3ZpZGUiLCJ1c2VGb3JtQ29udGV4dCIsImluamVjdCIsInJldmVhbFZhbGlkYXRpb25FcnJvcnMiLCJoYW5kbGVTdWJtaXQiLCJlIiwiT0JKRUNUX0ZJVCIsImltYWdlRGVmYXVsdCIsInBpY3R1cmUiLCJpbWciLCJvYmplY3RGaXRDbGFzc05hbWUiLCJzZXRJbWFnZUZyb21EZWZhdWx0IiwiY3VycmVudFNyYyIsInBpY3R1cmVTb3VyY2UiLCJzb3VyY2UiLCJUaWRlSW1hZ2UiLCJlcnJvck1lc3NhZ2VEZWZhdWx0IiwiVkFMSURBVElPTl9SRVNVTFQiLCJjaGVja0Zvcm1hdCIsImZvcm1hdCIsIm1lc3NhZ2UiLCJ2YWx1ZSIsInJlc3VsdCIsImdldEZpZWxkTGVuZ3RoSXNWYWxpZCIsIm1heGxlbmd0aCIsIm1pbmxlbmd0aCIsInJlcXVpcmVkIiwiaXNFbXB0eUFuZFVucmVxdWlyZWQiLCJpc1Rvb0xvbmciLCJnZXRGaWVsZFZhbGlkYXRpb25SZXN1bHQiLCJlcnJvckZyb21Qcm9wcyIsInZhbGlkYXRvcnMiLCJ2YWxpZGF0aW9uIiwidmFsaWRhdGVQcm9wZXJ0eSIsImxlbmd0aFZhbGlkYXRpb24iLCJ2YWxpZGF0ZUxlbmd0aCIsInJlc3BvbnNlIiwidmFsaWRhdG9yIiwibW9kZWxWYWx1ZSIsIl91c2VNb2RlbCIsImZvcm1Db250ZXh0IiwiaXNWYWxpZGF0aW5nIiwiZXJyb3JSZWYiLCJmb3JtYXR0ZWRMYWJlbCIsImlzQ2hlY2tlZCIsInNob3dFcnJvciIsImhhc0Vycm9yRnJvbVByb3AiLCJzdXBwb3J0aW5nVGV4dE1lc3NhZ2UiLCJnZXRDaGVja2JveFZhbGlkYXRpb25SZXN1bHQiLCJ3YXRjaEVmZmVjdCIsIm5ld1ZhbHVlIiwiVGlkZUlucHV0U3VwcG9ydGluZ1RleHQiLCJfX2RlZmF1bHRfXyIsImNoZWNrZWQiLCJvbGRWYWx1ZSIsIkZPUk1BVCIsIkZPUk1BVF9SRUdFWCIsIlZBTElEQVRPUiIsIkVSUk9SX0RJU1BMQVkiLCJoYXNGb2N1cyIsImlucHV0SWQiLCJ1c2VJZCIsInNlbGVjdEVsZW1lbnQiLCJoYXNNaW5pbGFiZWwiLCJpc0VtcHR5IiwiZXhwYW5kT3B0aW9ucyIsImV2ZW50IiwiaGFuZGxlRm9jdXMiLCJoYW5kbGVGb2N1c091dCIsIm9wdGdyb3VwIiwib3B0aW9uIiwiX2hvaXN0ZWRfNiIsImdldEVycm9yTWVzc2FnZSIsImVycm9yRnJvbVJlZiIsImdldEZpZWxkSGFzRXJyb3IiLCJoYW5kbGVGaWVsZFZhbGlkYXRpb24iLCJlcnJvciIsImVycm9yTWVzc2FnZSIsImhhc0Vycm9yIiwiX19leHBvc2UiLCJURVhUX0lOUFVUX1RZUEUiLCJJTlBVVF9NT0RFIiwiZ2V0VGV4dElucHV0TW9kZSIsInR5cGUiLCJpbnB1dG1vZGUiLCJpbnB1dEVsZW1lbnQiLCJzaG93UGFzc3dvcmQiLCJpbnB1dE1vZGVBdHRyaWJ1dGUiLCJpbnB1dFR5cGUiLCJzaG91bGRTaG93Q2xlYXJCdXR0b24iLCJzaG91bGRTaG93UGFzc3dvcmRCdXR0b24iLCJoYW5kbGVDbGVhciIsImhhbmRsZUZpZWxkQ2xpY2siLCJwcmV2ZW50SW5wdXRGb2N1c0xvc3NPbk1vdXNlZG93biIsImhhc0NsZWFyIiwiaGFuZGxlVmFsaWRhdGlvbiIsImhhbmRsZUlucHV0IiwidXBkYXRlVmFsdWUiLCJ0ZXh0YXJlYUVsZW1lbnQiLCJwcmV2ZW50VGV4dGFyZWFGb2N1c0xvc3NPbk1vdXNlZG93biIsIkJSRUFLUE9JTlQiLCJNRURJQSIsInNldFNjcm9sbExvY2siLCJpc0xvY2tlZCIsImJvZHkiLCJzY3JvbGxZIiwibmV4dFRpY2siLCJzYXZlZFNjcm9sbFkiLCJUT1BfTEFZRVJfSUQiLCJpbml0RmF1eFRvcExheWVyIiwidG9wTGF5ZXIiLCJtb2RhbENvbnRlbnQiLCJtb2RhbERpYWxvZyIsInRyaWdnZXJOYXRpdmVEaWFsb2dPcGVuIiwidHJpZ2dlck5hdGl2ZURpYWxvZ0Nsb3NlIiwic2Nyb2xsQ29udGVudFRvVG9wIiwiaGFuZGxlQmFja2Ryb3BDbGljayIsImhhbmRsZUVzY2FwZUtleWRvd24iLCIkc2xvdHMiLCJwYWdlQ3VycmVudCIsInBhZ2luYXRpb25CdXR0b25zIiwiZW1wdHkiLCJwYWdpbmF0aW9uQnV0dG9uIiwiVGlkZUJ1dHRvblBhZ2luYXRpb24iLCJzaWRlcyIsImFsaWdubWVudHMiLCJwbGFjZW1lbnRzIiwiYWNjIiwic2lkZSIsIm1pbiIsIm1heCIsInJvdW5kIiwiZmxvb3IiLCJjcmVhdGVDb29yZHMiLCJ2Iiwib3Bwb3NpdGVTaWRlTWFwIiwib3Bwb3NpdGVBbGlnbm1lbnRNYXAiLCJjbGFtcCIsInN0YXJ0IiwiZW5kIiwiZXZhbHVhdGUiLCJwYXJhbSIsImdldFNpZGUiLCJwbGFjZW1lbnQiLCJnZXRBbGlnbm1lbnQiLCJnZXRPcHBvc2l0ZUF4aXMiLCJheGlzIiwiZ2V0QXhpc0xlbmd0aCIsImdldFNpZGVBeGlzIiwiZ2V0QWxpZ25tZW50QXhpcyIsImdldEFsaWdubWVudFNpZGVzIiwicmVjdHMiLCJydGwiLCJhbGlnbm1lbnQiLCJhbGlnbm1lbnRBeGlzIiwibGVuZ3RoIiwibWFpbkFsaWdubWVudFNpZGUiLCJnZXRPcHBvc2l0ZVBsYWNlbWVudCIsImdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50IiwiZXhwYW5kUGFkZGluZ09iamVjdCIsInBhZGRpbmciLCJnZXRQYWRkaW5nT2JqZWN0IiwicmVjdFRvQ2xpZW50UmVjdCIsInJlY3QiLCJ4IiwieSIsIndpZHRoIiwiaGVpZ2h0IiwiY29tcHV0ZUNvb3Jkc0Zyb21QbGFjZW1lbnQiLCJfcmVmIiwicmVmZXJlbmNlIiwiZmxvYXRpbmciLCJzaWRlQXhpcyIsImFsaWduTGVuZ3RoIiwiaXNWZXJ0aWNhbCIsImNvbW1vblgiLCJjb21tb25ZIiwiY29tbW9uQWxpZ24iLCJjb29yZHMiLCJjb21wdXRlUG9zaXRpb24iLCJjb25maWciLCJzdHJhdGVneSIsIm1pZGRsZXdhcmUiLCJwbGF0Zm9ybSIsInZhbGlkTWlkZGxld2FyZSIsInN0YXRlZnVsUGxhY2VtZW50IiwibWlkZGxld2FyZURhdGEiLCJyZXNldENvdW50IiwiaSIsImZuIiwibmV4dFgiLCJuZXh0WSIsImRhdGEiLCJyZXNldCIsImRldGVjdE92ZXJmbG93Iiwic3RhdGUiLCJfYXdhaXQkcGxhdGZvcm0kaXNFbGUiLCJlbGVtZW50cyIsImJvdW5kYXJ5Iiwicm9vdEJvdW5kYXJ5IiwiZWxlbWVudENvbnRleHQiLCJhbHRCb3VuZGFyeSIsInBhZGRpbmdPYmplY3QiLCJlbGVtZW50IiwiY2xpcHBpbmdDbGllbnRSZWN0Iiwib2Zmc2V0UGFyZW50Iiwib2Zmc2V0U2NhbGUiLCJlbGVtZW50Q2xpZW50UmVjdCIsImdldFBsYWNlbWVudExpc3QiLCJhdXRvQWxpZ25tZW50IiwiYWxsb3dlZFBsYWNlbWVudHMiLCJhdXRvUGxhY2VtZW50IiwiX21pZGRsZXdhcmVEYXRhJGF1dG9QIiwiX21pZGRsZXdhcmVEYXRhJGF1dG9QMiIsIl9wbGFjZW1lbnRzVGhhdEZpdE9uRSIsImNyb3NzQXhpcyIsImRldGVjdE92ZXJmbG93T3B0aW9ucyIsInBsYWNlbWVudHMkMSIsIm92ZXJmbG93IiwiY3VycmVudEluZGV4IiwiY3VycmVudFBsYWNlbWVudCIsImFsaWdubWVudFNpZGVzIiwiY3VycmVudE92ZXJmbG93cyIsImFsbE92ZXJmbG93cyIsIm5leHRQbGFjZW1lbnQiLCJwbGFjZW1lbnRzU29ydGVkQnlNb3N0U3BhY2UiLCJkIiwicmVzZXRQbGFjZW1lbnQiLCJjb252ZXJ0VmFsdWVUb0Nvb3JkcyIsIm1haW5BeGlzTXVsdGkiLCJjcm9zc0F4aXNNdWx0aSIsInJhd1ZhbHVlIiwibWFpbkF4aXMiLCJvZmZzZXQiLCJfbWlkZGxld2FyZURhdGEkb2Zmc2UiLCJfbWlkZGxld2FyZURhdGEkYXJyb3ciLCJkaWZmQ29vcmRzIiwic2hpZnQiLCJjaGVja01haW5BeGlzIiwiY2hlY2tDcm9zc0F4aXMiLCJsaW1pdGVyIiwibWFpbkF4aXNDb29yZCIsImNyb3NzQXhpc0Nvb3JkIiwibWluU2lkZSIsIm1heFNpZGUiLCJsaW1pdGVkQ29vcmRzIiwiaGFzV2luZG93IiwiZ2V0Tm9kZU5hbWUiLCJpc05vZGUiLCJnZXRXaW5kb3ciLCJfbm9kZSRvd25lckRvY3VtZW50IiwiZ2V0RG9jdW1lbnRFbGVtZW50IiwiaXNFbGVtZW50IiwiaXNIVE1MRWxlbWVudCIsImlzU2hhZG93Um9vdCIsImlzT3ZlcmZsb3dFbGVtZW50Iiwib3ZlcmZsb3dYIiwib3ZlcmZsb3dZIiwiZGlzcGxheSIsImdldENvbXB1dGVkU3R5bGUiLCJpc1RhYmxlRWxlbWVudCIsImlzVG9wTGF5ZXIiLCJzZWxlY3RvciIsImlzQ29udGFpbmluZ0Jsb2NrIiwiZWxlbWVudE9yQ3NzIiwid2Via2l0IiwiaXNXZWJLaXQiLCJjc3MiLCJnZXRDb250YWluaW5nQmxvY2siLCJjdXJyZW50Tm9kZSIsImdldFBhcmVudE5vZGUiLCJpc0xhc3RUcmF2ZXJzYWJsZU5vZGUiLCJnZXROb2RlU2Nyb2xsIiwiZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3IiLCJwYXJlbnROb2RlIiwiZ2V0T3ZlcmZsb3dBbmNlc3RvcnMiLCJsaXN0IiwidHJhdmVyc2VJZnJhbWVzIiwiX25vZGUkb3duZXJEb2N1bWVudDIiLCJzY3JvbGxhYmxlQW5jZXN0b3IiLCJpc0JvZHkiLCJ3aW4iLCJmcmFtZUVsZW1lbnQiLCJnZXRGcmFtZUVsZW1lbnQiLCJnZXRDc3NEaW1lbnNpb25zIiwiaGFzT2Zmc2V0Iiwib2Zmc2V0V2lkdGgiLCJvZmZzZXRIZWlnaHQiLCJzaG91bGRGYWxsYmFjayIsInVud3JhcEVsZW1lbnQiLCJnZXRTY2FsZSIsImRvbUVsZW1lbnQiLCIkIiwibm9PZmZzZXRzIiwiZ2V0VmlzdWFsT2Zmc2V0cyIsInNob3VsZEFkZFZpc3VhbE9mZnNldHMiLCJpc0ZpeGVkIiwiZmxvYXRpbmdPZmZzZXRQYXJlbnQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJpbmNsdWRlU2NhbGUiLCJpc0ZpeGVkU3RyYXRlZ3kiLCJjbGllbnRSZWN0Iiwic2NhbGUiLCJ2aXN1YWxPZmZzZXRzIiwib2Zmc2V0V2luIiwiY3VycmVudFdpbiIsImN1cnJlbnRJRnJhbWUiLCJpZnJhbWVTY2FsZSIsImlmcmFtZVJlY3QiLCJsZWZ0IiwidG9wIiwiZ2V0V2luZG93U2Nyb2xsQmFyWCIsImxlZnRTY3JvbGwiLCJnZXRIVE1MT2Zmc2V0IiwiZG9jdW1lbnRFbGVtZW50Iiwic2Nyb2xsIiwiaWdub3JlU2Nyb2xsYmFyWCIsImh0bWxSZWN0IiwiY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3QiLCJvZmZzZXRzIiwiaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQiLCJvZmZzZXRSZWN0IiwiaHRtbE9mZnNldCIsImdldENsaWVudFJlY3RzIiwiZ2V0RG9jdW1lbnRSZWN0IiwiaHRtbCIsImdldFZpZXdwb3J0UmVjdCIsInZpc3VhbFZpZXdwb3J0IiwidmlzdWFsVmlld3BvcnRCYXNlZCIsImdldElubmVyQm91bmRpbmdDbGllbnRSZWN0IiwiZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yIiwiY2xpcHBpbmdBbmNlc3RvciIsImhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvciIsInN0b3BOb2RlIiwiZ2V0Q2xpcHBpbmdFbGVtZW50QW5jZXN0b3JzIiwiY2FjaGUiLCJjYWNoZWRSZXN1bHQiLCJlbCIsImN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlIiwiZWxlbWVudElzRml4ZWQiLCJjb21wdXRlZFN0eWxlIiwiY3VycmVudE5vZGVJc0NvbnRhaW5pbmciLCJhbmNlc3RvciIsImdldENsaXBwaW5nUmVjdCIsImNsaXBwaW5nQW5jZXN0b3JzIiwiZmlyc3RDbGlwcGluZ0FuY2VzdG9yIiwiY2xpcHBpbmdSZWN0IiwiYWNjUmVjdCIsImdldERpbWVuc2lvbnMiLCJnZXRSZWN0UmVsYXRpdmVUb09mZnNldFBhcmVudCIsImlzU3RhdGljUG9zaXRpb25lZCIsImdldFRydWVPZmZzZXRQYXJlbnQiLCJwb2x5ZmlsbCIsInJhd09mZnNldFBhcmVudCIsImdldE9mZnNldFBhcmVudCIsInN2Z09mZnNldFBhcmVudCIsImdldEVsZW1lbnRSZWN0cyIsImdldE9mZnNldFBhcmVudEZuIiwiZ2V0RGltZW5zaW9uc0ZuIiwiZmxvYXRpbmdEaW1lbnNpb25zIiwiaXNSVEwiLCJyZWN0c0FyZUVxdWFsIiwib2JzZXJ2ZU1vdmUiLCJvbk1vdmUiLCJpbyIsInRpbWVvdXRJZCIsInJvb3QiLCJjbGVhbnVwIiwiX2lvIiwicmVmcmVzaCIsInNraXAiLCJ0aHJlc2hvbGQiLCJlbGVtZW50UmVjdEZvclJvb3RNYXJnaW4iLCJpbnNldFRvcCIsImluc2V0UmlnaHQiLCJpbnNldEJvdHRvbSIsImluc2V0TGVmdCIsImlzRmlyc3RVcGRhdGUiLCJoYW5kbGVPYnNlcnZlIiwicmF0aW8iLCJhdXRvVXBkYXRlIiwidXBkYXRlIiwiYW5jZXN0b3JTY3JvbGwiLCJhbmNlc3RvclJlc2l6ZSIsImVsZW1lbnRSZXNpemUiLCJsYXlvdXRTaGlmdCIsImFuaW1hdGlvbkZyYW1lIiwicmVmZXJlbmNlRWwiLCJhbmNlc3RvcnMiLCJjbGVhbnVwSW8iLCJyZW9ic2VydmVGcmFtZSIsInJlc2l6ZU9ic2VydmVyIiwiZmlyc3RFbnRyeSIsIl9yZXNpemVPYnNlcnZlciIsImZyYW1lSWQiLCJwcmV2UmVmUmVjdCIsImZyYW1lTG9vcCIsIm5leHRSZWZSZWN0IiwiX3Jlc2l6ZU9ic2VydmVyMiIsIm9mZnNldCQxIiwiYXV0b1BsYWNlbWVudCQxIiwic2hpZnQkMSIsIm1lcmdlZE9wdGlvbnMiLCJwbGF0Zm9ybVdpdGhDYWNoZSIsImNvbXB1dGVQb3NpdGlvbiQxIiwiaXNDb21wb25lbnRQdWJsaWNJbnN0YW5jZSIsInRvVmFsdWUiLCJ1bnJlZiIsImdldERQUiIsInJvdW5kQnlEUFIiLCJkcHIiLCJ1c2VGbG9hdGluZyIsIndoaWxlRWxlbWVudHNNb3VudGVkT3B0aW9uIiwib3Blbk9wdGlvbiIsIl90b1ZhbHVlIiwibWlkZGxld2FyZU9wdGlvbiIsInBsYWNlbWVudE9wdGlvbiIsIl90b1ZhbHVlMiIsInN0cmF0ZWd5T3B0aW9uIiwiX3RvVmFsdWUzIiwidHJhbnNmb3JtT3B0aW9uIiwiX3RvVmFsdWU0IiwicmVmZXJlbmNlRWxlbWVudCIsImZsb2F0aW5nRWxlbWVudCIsInNoYWxsb3dSZWYiLCJpc1Bvc2l0aW9uZWQiLCJmbG9hdGluZ1N0eWxlcyIsImluaXRpYWxTdHlsZXMiLCJ4VmFsIiwieVZhbCIsIndoaWxlRWxlbWVudHNNb3VudGVkQ2xlYW51cCIsIm9wZW4iLCJwb3NpdGlvbiIsImF0dGFjaCIsImdldEN1cnJlbnRTY29wZSIsIm9uU2NvcGVEaXNwb3NlIiwic2hhbGxvd1JlYWRvbmx5IiwiaXNDbGlja091dHNpZGUiLCJhbmNob3IiLCJpc0hvdmVyZWQiLCJpc1RvZ2dsZWRPcGVuIiwib2Zmc2V0TWlkZGxld2FyZSIsImlzU2hvd1BvcG92ZXIiLCJoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUNsaWNrIiwiaGFuZGxlQW5jaG9yRWxlbWVudE1vdXNlT3ZlciIsImhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZUxlYXZlIiwiaGFuZGxlQW5jaG9yRWxlbWVudENsaWNrIiwiYWRkTGlzdGVuZXJzVG9BbmNob3JFbGVtZW50IiwicmVtb3ZlTGlzdGVuZXJzRnJvbUFuY2hvckVsZW1lbnQiLCJoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUtleWRvd24iLCJhZGRPcGVuTGlzdGVuZXJzVG9Sb290IiwicmVtb3ZlT3Blbkxpc3RlbmVyc0Zyb21Sb290IiwidXBkYXRlQW5jaG9yRWxlbWVudCIsIm9uQmVmb3JlTW91bnQiLCJfVGVsZXBvcnQiLCJfVHJhbnNpdGlvbiIsImxpbmsiLCJkaWFsb2dFbGVtZW50Il0sIm1hcHBpbmdzIjoidUdBQWFBLEdBQWMsQ0FDekIsV0FBWSxhQUNaLFNBQVUsVUFDWixFQ0NhQyxFQUFNLENBQ2pCLGVBQWdCLENBQUNDLEVBQXFCQyxJQUM3QkQsRUFBVSxJQUFLRSxHQUFZLEdBQUdELENBQVUsSUFBSUMsQ0FBTyxFQUFFLEVBRTlELE1BQU8sQ0FDTCxFQUFHLENBQ0QsT0FBUSxtQkFDUixRQUFTLG9CQUNULEtB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QUksR0FBRyxRQUFRLE9BQUEsR0FXMVQsU0FBVVAsRUFBTSxTQUNoQixRQUFPb0UsRUFDUixhQUFXLFFBQUEsR0FFWC9ELEVBQUFBLG1CQWVNLE1BQUEsQ0FkSCxNQUFLQyxFQUFBQSxlQUFBLHlCQUE2Q0MsUUFBQVgsQ0FBQSxFQUFJLFNBQVMsU0FBa0JXLFFBQUFYLENBQUEsRUFBSSxRQUFRLEtBQWNXLFFBQUFYLENBQUEsRUFBSSxNQUFNLE9BQWdCVyxRQUFBWCxDQUFBLEVBQUksTUFBTSxPQUFnQlcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sT0FBTyxLQUFjSSxFQUFNLFNBQVdPLFFBQUFYLENBQUEsRUFBSSxHQUFHLFFBQVEsUUFBVVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEdBQUcsU0FBQSxLQVVqUDJDLEVBQUFBLFlBR0VDLEVBQUEsQ0FGQyxLQUFNakMsRUFBQUEsTUFBQXlCLENBQUEsRUFBSyxNQUNYLEtBQU16QixFQUFBQSxNQUFBRSxDQUFBLEVBQUssS0FBQSIsInhfZ29vZ2xlX2lnbm9yZUxpc3QiOls1OCw1OSw2MCw2MSw2Ml19
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),Ve={HORIZONTAL:"horizontal",VERTICAL:"vertical"},t={withBreakpoint:(n,r)=>n.map(o=>`${r}-${o}`),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"}},Vt={class:e.normalizeClass(["tide-divider"])},wt=e.defineComponent({__name:"TideDivider",props:{orientation:{default:Ve.HORIZONTAL}},setup(n){const r=n;return(o,i)=>(e.openBlock(),e.createElementBlock("div",Vt,[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).BORDER.COLOR.LOW,r.orientation===e.unref(Ve).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,r)=>{const o=n.__vccOpts||n;for(const[i,s]of r)o[i]=s;return o},pe=F(wt,[["__scopeId","data-v-c2dc7d09"]]),Qe=(n,r,o)=>{const i=n[r];return i?typeof i=="function"?i():Promise.resolve(i):new Promise((s,u)=>{(typeof queueMicrotask=="function"?queueMicrotask:setTimeout)(u.bind(null,new Error("Unknown variable dynamic import: "+r+(r.split("/").length!==o?". Note that variables only represent file names one level deep.":""))))})},ft={AERO:"aero",ATV:"atv",BOATMART:"boatmart",CYCLE:"cycle",EQUIPMENT:"equipment",PWC:"pwc",RV:"rv",SNOW:"snow",TRUCK:"truck"},P={LARGE:"large",SMALL:"small"},ve={LARGE:"large",SMALL:"small"},K=n=>{let r=n&&typeof n=="number"?new Intl.NumberFormat().format(n):String(n||""),o=r;return n&&typeof n=="string"&&(o=o.replace(/\D/g,""),Number(o)?r=new Intl.NumberFormat().format(Number(o)):r="0"),r},Gt=n=>n&&typeof n=="string"?n.replace(/([a-z]{1})([A-Z]{1})/g,"$1 $2").replace(/[\s_-]/g," ").toLowerCase().split(" ").map(r=>r.slice(0,1).toUpperCase()+r.slice(1)).join(""):n,xt=n=>{let r=String(n&&typeof n=="number"?n:n||""),o=r;switch(o=o.replace(/\D/g,""),o.length){case 7:r=`${o.slice(0,3)}-${o.slice(3)}`;break;case 10:r=`${o.slice(0,3)}-${o.slice(3,6)}-${o.slice(6)}`;break;case 11:r=`${o.slice(0,1)}-${o.slice(1,4)}-${o.slice(4,7)}-${o.slice(7)}`;break;default:r=o;break}return r},Mt=n=>`$${n?K(n):String(n||"0")}`,S=e.defineComponent({__name:"TideIcon",props:{icon:{},size:{default:P.SMALL}},setup(n){const r=n,o=e.ref();return e.watch(()=>r.icon,async()=>{const i=r.icon,s=Gt(i),[u]=i.split("-"),l=ft[u==null?void 0:u.toUpperCase()],a=e.defineAsyncComponent(()=>l?Qe(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):Qe(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));o.value=e.markRaw(a)},{immediate:!0}),(i,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-icon",r.size,e.unref(t).FLEX.SHRINK.OFF])},[o.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(o.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",ARROW_UP:"arrow-up",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",STAR_FILLED:"star-filled",STAR_HALF:"star-half",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"},Ht={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"},Xt=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:r}){const o=r,i=n,s=()=>{o("toggle")};return(u,l)=>(e.openBlock(),e.createElementBlock("div",Yt,[i.hasTopDivider?(e.openBlock(),e.createBlock(pe,{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(P).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(u.$slots,"default",{},void 0,!0)],2)],2),i.hasBottomDivider?(e.openBlock(),e.createBlock(pe,{key:1})):e.createCommentVNode("",!0)]))}}),zt=F(Xt,[["__scopeId","data-v-d5fdff3b"]]),b={BUTTON:"button",LINK:"a"},x={BUTTON:"button",DIV:"div",LINK:"a"},V={PRIMARY:"primary",SECONDARY:"secondary",TERTIARY:"tertiary",QUATERNARY:"quaternary",FLOATING:"floating"},z={BLANK:"_blank",SELF:void 0},Y=e.defineComponent({__name:"TideButtonIcon",props:{disabled:{type:Boolean,default:!1},element:{default:b.BUTTON},href:{default:void 0},icon:{default:void 0},isNewTab:{type:Boolean,default:!1},priority:{default:V.PRIMARY},type:{default:void 0}},setup(n){const r=n,o=e.computed(()=>r.element===b.BUTTON?r.type??b.BUTTON:void 0);return(i,s)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.element),{"aria-label":r.icon,class:e.normalizeClass(["tide-button-icon",r.priority&&`tide-button-${r.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],r.element===e.unref(b).LINK?[e.unref(t).UNDERLINE.REST.OFF]:""]),disabled:r.element===e.unref(b).BUTTON&&r.disabled,href:r.element===e.unref(b).LINK&&r.href?r.href:void 0,target:r.element===e.unref(b).LINK&&r.isNewTab?e.unref(z).BLANK:e.unref(z).SELF,type:o.value},{default:e.withCtx(()=>[r.icon?(e.openBlock(),e.createBlock(S,{key:0,icon:r.icon,size:e.unref(P).LARGE},null,8,["icon","size"])):e.createCommentVNode("",!0)]),_:1},8,["aria-label","class","disabled","href","target","type"]))}}),we=e.defineComponent({__name:"TideLink",props:{element:{default:b.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 r=n;return(o,i)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.element),{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:r.href,target:r.isNewTab?e.unref(z).BLANK:e.unref(z).SELF,type:n.element===e.unref(b).BUTTON?e.unref(b).BUTTON:void 0},{default:e.withCtx(()=>[r.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:r.iconLeading},null,8,["class","icon"])):e.createCommentVNode("",!0),e.createElementVNode("span",{class:e.normalizeClass([e.unref(t).ALIGN.Y.MIDDLE])},e.toDisplayString(r.label),3),r.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:r.iconTrailing},null,8,["class","icon"])):e.createCommentVNode("",!0)]),_:1},8,["class","href","target","type"]))}}),G={ERROR:"error",INFO:"info",SUCCESS:"success",WARNING:"warning"},Wt=e.defineComponent({__name:"TideAlert",props:{heading:{default:void 0},ctaLabel:{default:void 0},isDismissible:{type:Boolean,default:!0},isToast:{type:Boolean,default:!1},type:{default:G.INFO}},emits:["close","ctaClick"],setup(n,{emit:r}){const o=n,i=r,s=e.useSlots(),u=e.computed(()=>{var d;const a=(d=s.default)==null?void 0:d.call(s);return a?a.some(c=>c.type!==e.Comment&&(typeof c.children!="string"||c.children.trim().length>0)):!1}),l=e.computed(()=>o.type===G.ERROR?h.PRIORITY_HIGH:o.type===G.SUCCESS?h.CHECK:o.type===G.WARNING?h.WARNING:h.INFORMATION);return(a,d)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([o.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,!o.isToast&&o.type===e.unref(G).ERROR?[e.unref(t).BG.GLOBAL.SURFACE.ERROR,e.unref(t).BORDER.COLOR.GLOBAL.ERROR]:"",!o.isToast&&o.type===e.unref(G).INFO?[e.unref(t).BG.GLOBAL.SURFACE.INFO,e.unref(t).BORDER.COLOR.GLOBAL.INFO]:"",!o.isToast&&o.type===e.unref(G).SUCCESS?[e.unref(t).BG.GLOBAL.SURFACE.SUCCESS,e.unref(t).BORDER.COLOR.GLOBAL.SUCCESS]:"",!o.isToast&&o.type===e.unref(G).WARNING?[e.unref(t).BG.GLOBAL.SURFACE.WARNING,e.unref(t).BORDER.COLOR.GLOBAL.WARNING]:"",o.isToast?[e.unref(t).BG.SECONDARY,e.unref(t).FONT.COLOR.SECONDARY,e.unref(t).SHADOW.BOTTOM]:e.unref(t).BORDER.LEFT.TWO])},[o.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,o.type===e.unref(G).ERROR&&e.unref(t).BG.GLOBAL.PRIMARY.ERROR,o.type===e.unref(G).INFO&&e.unref(t).BG.GLOBAL.PRIMARY.INFO,o.type===e.unref(G).SUCCESS&&e.unref(t).BG.GLOBAL.PRIMARY.SUCCESS,o.type===e.unref(G).WARNING&&e.unref(t).BG.GLOBAL.PRIMARY.WARNING])},[e.createVNode(S,{icon:l.value,size:e.unref(P).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).FLEX.DIRECTION.ROW,u.value?"":[e.unref(t).AXIS1.BETWEEN,e.unref(t).MARGIN.RIGHT.HALF]])},[e.createElementVNode("span",{class:e.normalizeClass(e.unref(t).FONT.ROLE.LABEL_2_SEMIBOLD)},e.toDisplayString(o.heading),3),o.ctaLabel&&!u.value?(e.openBlock(),e.createBlock(we,{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.LINK_2]),element:e.unref(b).BUTTON,label:o.ctaLabel,onClick:d[0]||(d[0]=c=>i("ctaClick"))},null,8,["class","element","label"])):e.createCommentVNode("",!0)],2),n.isDismissible?(e.openBlock(),e.createBlock(Y,{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(V).QUATERNARY,onClick:d[1]||(d[1]=c=>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,!o.isToast&&e.unref(t).FONT.COLOR.SURFACE.DEFAULT])},[e.renderSlot(a.$slots,"default",{},void 0,!0),o.ctaLabel&&u.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).MARGIN.TOP.HALF])},[o.ctaLabel?(e.openBlock(),e.createBlock(we,{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.LINK_2]),element:e.unref(b).BUTTON,label:o.ctaLabel,onClick:d[2]||(d[2]=c=>i("ctaClick"))},null,8,["class","element","label"])):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0)],2)],2))}}),qt=F(Wt,[["__scopeId","data-v-959ff8ac"]]),X={BLACK:"black",BLUE:"blue",GREEN:"green",LIME:"lime",ORANGE:"orange",PURPLE:"purple",RED:"red",SALMON:"salmon",TEAL:"teal",YELLOW:"yellow"},Ge={[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}},Et={YEARS_10:"10",YEARS_15:"15",YEARS_20:"20",YEARS_25:"25",YEARS_30:"30",YEARS_35:"35",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 r=n;return(o,i)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-badge",r.isFloating||r.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,r.color&&[e.unref(t).BORDER.LEFT.TWO,e.unref(Ge)[r.color].borderColor],e.unref(t).ELLIPSIS,e.unref(t).FONT.ROLE.LABEL_2,e.unref(t).WHITESPACE_WRAP.OFF])},[r.iconLeading?(e.openBlock(),e.createBlock(S,{key:0,class:e.normalizeClass([e.unref(t).FLEX.SHRINK.OFF,r.color&&e.unref(Ge)[r.color].iconColor]),icon:r.iconLeading},null,8,["class","icon"])):e.createCommentVNode("",!0),e.createElementVNode("span",{class:e.normalizeClass([e.unref(t).ELLIPSIS])},e.toDisplayString(r.label),3)],2))}}),Kt=e.defineComponent({__name:"TideBadgeTrustedPartner",props:{years:{default:Et.YEARS_5}},setup(n){const r=n;return(o,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(r.years)+" year trusted partner",1)],2)],2))}}),Qt=e.defineComponent({__name:"TideBadgeVerifiedVehicle",setup(n){return(r,o)=>(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))}}),Zt=F(Qt,[["__scopeId","data-v-c6d1b806"]]),jt=["data-track","href"],Jt=["data-track"],en={key:0},tn=e.defineComponent({__name:"TideBreadCrumbs",props:{breadCrumbs:{default:void 0}},setup(n){const r=n;return(o,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(r.breadCrumbs,(s,u)=>(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,jt)):(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,Jt))],2),r.breadCrumbs&&u<r.breadCrumbs.length-1?(e.openBlock(),e.createElementBlock("li",en,[e.createVNode(S,{icon:e.unref(h).ARROW_RIGHT,size:e.unref(P).SMALL},null,8,["icon","size"])])):e.createCommentVNode("",!0)],64))),128))],2))}}),nn=e.defineComponent({__name:"TideButton",props:{disabled:{type:Boolean,default:!1},element:{default:b.BUTTON},href:{default:void 0},iconLeading:{default:void 0},iconTrailing:{default:void 0},isNewTab:{type:Boolean,default:!1},label:{default:void 0},priority:{default:V.PRIMARY},size:{default:ve.LARGE},type:{default:void 0}},setup(n){const r=n,o=e.computed(()=>r.element===b.BUTTON?r.type??b.BUTTON:void 0);return(i,s)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.element),{class:e.normalizeClass(["tide-button",r.priority&&`tide-button-${r.priority}`,r.element===e.unref(b).LINK?[e.unref(t).DISPLAY.INLINE_FLEX]:[e.unref(t).DISPLAY.FLEX],r.element===e.unref(b).LINK?e.unref(t).UNDERLINE.REST.OFF:"",n.size===e.unref(ve).SMALL?[e.unref(t).FONT.ROLE.BUTTON_2,e.unref(t).PADDING.X.ONE,e.unref(t).PADDING.Y.HALF,e.unref(t).BORDER.RADIUS.QUARTER]:[e.unref(t).FONT.ROLE.BUTTON_1,e.unref(t).PADDING.X.TWO,e.unref(t).PADDING.Y.ONE,e.unref(t).BORDER.RADIUS.HALF],e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).FONT.ROLE.LABEL_1_SEMIBOLD]),disabled:r.element===e.unref(b).BUTTON&&r.disabled,href:r.element===e.unref(b).LINK&&r.href?r.href:void 0,target:r.element===e.unref(b).LINK&&r.isNewTab?e.unref(z).BLANK:e.unref(z).SELF,type:o.value},{default:e.withCtx(()=>[r.iconLeading?(e.openBlock(),e.createBlock(S,{key:0,icon:r.iconLeading,size:n.size===e.unref(ve).LARGE?e.unref(P).LARGE:e.unref(P).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString(r.label)+" ",1),r.iconTrailing?(e.openBlock(),e.createBlock(S,{key:1,icon:r.iconTrailing,size:n.size===e.unref(ve).LARGE?e.unref(P).LARGE:e.unref(P).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0)]),_:1},8,["class","disabled","href","target","type"]))}}),rn=e.defineComponent({__name:"TideButtonPagination",props:{disabled:{type:Boolean,default:!1},element:{default:x.BUTTON},href:{default:void 0},label:{default:void 0}},setup(n){const r=n;return(o,i)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.element),{class:e.normalizeClass(["tide-button-icon",[e.unref(t).DISPLAY.INLINE_BLOCK,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).PADDING.FULL.HALF],r.element===e.unref(x).LINK?[e.unref(t).UNDERLINE.REST.OFF]:"",r.element===e.unref(x).DIV?[e.unref(t).CURSOR.POINTER]:"",[e.unref(t).FONT.ROLE.HEADLINE_3]]),disabled:r.element===e.unref(x).BUTTON&&r.disabled,href:r.element===e.unref(x).LINK&&r.href?r.href:void 0,type:n.element===e.unref(x).BUTTON?e.unref(x).BUTTON: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(r.label),3)]),_:1},8,["class","disabled","href","type"]))}}),mt=F(rn,[["__scopeId","data-v-29e0a5fa"]]),on=["data-track","onClick"],sn=e.defineComponent({__name:"TideButtonSegmented",props:{activeTab:{default:0},tabs:{}},emits:["change"],setup(n,{emit:r}){const o=n,i=r,s=u=>{i("change",u)};return(u,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(o.tabs,(a,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":a.dataTrack||void 0,key:a.label,onClick:c=>s(d),type:"button"},[e.createElementVNode("span",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_2_SEMIBOLD])},e.toDisplayString(a.label),3),a.count&&a.count>0?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_2_SEMIBOLD])}," ("+e.toDisplayString(a.count)+") ",3)):e.createCommentVNode("",!0)],10,on))),128))],2))}}),ln=F(sn,[["__scopeId","data-v-ffa9d4ab"]]),Oe={ACTIONABLE:"action",INFORMATIONAL:"informational",SELECTABLE:"select"},an=e.defineComponent({__name:"TideCard",props:{description:{default:void 0},heading:{},icon:{default:void 0},selected:{type:Boolean,default:void 0},type:{default:Oe.INFORMATIONAL},href:{default:void 0}},setup(n){const r=n,o=e.computed(()=>r.href?x.LINK:(r.type===Oe.INFORMATIONAL,x.DIV));return(i,s)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(o.value),{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(Oe).INFORMATIONAL&&"hoverable",n.type===e.unref(Oe).SELECTABLE&&n.selected&&"selected"]),href:n.href,type:o.value===e.unref(x).BUTTON?e.unref(x).BUTTON:void 0},{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(P).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","type"]))}}),un=F(an,[["__scopeId","data-v-bdcade88"]]),cn=16,Ze=8,je=8,dn=e.defineComponent({__name:"TideCarousel",props:{hasDots:{type:Boolean,default:void 0},isFloating:{type:Boolean,default:!1},isHeadline1:{type:Boolean,default:!1},isHideawayButtons:{type:Boolean,default:!0},isScrollByPage:{type:Boolean,default:!0},maxDots:{default:5},subtitle:{default:void 0},title:{default:void 0}},emits:["slidesAddedToView"],setup(n,{emit:r}){const o=n,i=r,s=e.ref(null),u=e.ref(0),l=e.ref(0),a=e.ref(null),d=e.ref(0),c=e.ref(!0),E=e.ref(!1),f=e.ref(!0),v=e.ref(null),m=e.ref([]),O=e.ref([]),A=e.ref(null),L=e.computed(()=>l.value+1),T=e.computed(()=>R.value*je+(R.value-1)*Ze),R=e.computed(()=>o.maxDots>I.value?I.value:o.maxDots),N=e.computed(()=>I.value-1),I=e.computed(()=>{if(!m.value.length)return 0;if(!o.isScrollByPage)return m.value.length;const y=cn*(m.value.length-1),B=u.value-y,_=Math.round(B/d.value);return B%d.value?_+1:_}),p=y=>{let B="";return y===l.value&&(B="tide-carousel-dot-active"),Math.abs(l.value-y)===1&&(B="tide-carousel-dot-neighbor"),B},g=()=>{s.value&&(u.value=s.value.scrollWidth,d.value=s.value.clientWidth,f.value=u.value>d.value)},C=()=>{const y={root:s==null?void 0:s.value,rootMargin:"0px 1px 0px 0px",threshold:1};v.value=new IntersectionObserver(B=>{let _=[];B.forEach(J=>{const be=m.value.indexOf(J.target);J.isIntersecting?(_.push(be),O.value.push(be)):O.value=O.value.filter(ke=>ke!==be),O.value.sort((ke,_t)=>ke-_t)}),c.value=O.value.includes(0),E.value=O.value.includes(m.value.length-1),_.length>0&&i("slidesAddedToView",_)},y),m.value.forEach(B=>{v.value&&v.value.observe(B)})},w=()=>{const y=()=>{s.value!==null&&(m.value=Array.from(s.value.children),C())};A.value=new MutationObserver(y),s.value&&A.value.observe(s.value,{childList:!0})},H=y=>{if(s.value===null)return;const B=m.value[m.value.length-1].offsetLeft,J=y/B*N.value<=l.value;l.value=J?l.value-1:l.value+1,s.value.scrollTo({behavior:"smooth",left:y}),Ut(J)},D=()=>{if(O.value.length===0)return;const y=O.value[O.value.length-1]+1;H(m.value[y].offsetLeft)},k=()=>{var B;if(O.value.length===0)return;const y=O.value[0]-O.value.length;H(((B=m.value[y])==null?void 0:B.offsetLeft)||0)},$=()=>{if(O.value.length===0)return;const y=O.value.length>1?O.value[1]:O.value[0]+1;H(m.value[y].offsetLeft)},Te=()=>{if(O.value.length===0)return;const y=O.value[0]-1;H(m.value[y].offsetLeft)},Ut=y=>{if(!a.value||R.value>=I.value)return;const _=R.value%2!==0||y?Math.floor(R.value/2)+1:Math.floor(R.value/2);a.value.scrollTo({behavior:"smooth",left:L.value<_?0:(L.value-_)*(je+Ze)})};return e.onMounted(()=>{s.value!==null&&(m.value=Array.from(s.value.children),g(),C(),w(),window&&window.addEventListener("resize",g))}),e.onUnmounted(()=>{var y,B;(y=v.value)==null||y.disconnect(),(B=A.value)==null||B.disconnect(),window.removeEventListener("resize",g)}),(y,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"},[!o.isFloating&&f.value||o.title?(e.openBlock(),e.createElementBlock("section",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,o.title?e.unref(t).AXIS1.BETWEEN:e.unref(t).AXIS1.END,e.unref(t).AXIS2.CENTER,e.unref(t).WIDTH.FULL])},[o.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])},[o.title?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([n.isHeadline1?e.unref(t).FONT.ROLE.HEADLINE_1:e.unref(t).FONT.ROLE.HEADLINE_2])},e.toDisplayString(o.title),3)):e.createCommentVNode("",!0),o.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(o.subtitle),3)):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0),!o.isFloating&&f.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(Y,{disabled:c.value,icon:e.unref(h).CHEVRON_LEFT,priority:e.unref(V).TERTIARY,onClick:B[0]||(B[0]=_=>n.isScrollByPage?k():Te())},null,8,["disabled","icon","priority"]),e.createVNode(Y,{disabled:E.value,icon:e.unref(h).CHEVRON_RIGHT,priority:e.unref(V).TERTIARY,onClick:B[1]||(B[1]=_=>n.isScrollByPage?D():$())},null,8,["disabled","icon","priority"])],2)):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0),e.renderSlot(y.$slots,"misc",{},void 0,!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).POSITION.RELATIVE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER])},[e.createElementVNode("ul",{class:e.normalizeClass(["tide-carousel-container",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},[e.renderSlot(y.$slots,"default",{},void 0,!0)],2),n.isScrollByPage&&n.hasDots&&I.value>1?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["tide-carousel-dots-container",e.unref(t).POSITION.ABSOLUTE,e.unref(t).POSITIONING.BOTTOM,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).MARGIN.BOTTOM.HALF,e.unref(t).WIDTH.FULL]),style:e.normalizeStyle({width:`${T.value}px`})},[e.createElementVNode("div",{class:e.normalizeClass(["tide-carousel-dots",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.START,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).OVERFLOW.X.SCROLL,e.unref(t).POINTER_EVENTS.OFF,e.unref(t).SCROLLBAR.OFF]),ref_key:"dotsRef",ref:a},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(I.value,(_,J)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-carousel-dot",e.unref(t).FLEX.SHRINK.OFF,e.unref(t).HEIGHT.ZERO,e.unref(t).WIDTH.ZERO,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).BG.SURFACE.DEFAULT,p(J)]),key:J},null,2))),128))],2)],6)):e.createCommentVNode("",!0),n.isFloating&&f.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,o.isHideawayButtons?"hideaway":""])},[e.createVNode(Y,{class:e.normalizeClass([e.unref(t).MARGIN.LEFT.ONE,e.unref(t).POINTER_EVENTS.ON]),disabled:c.value,icon:e.unref(h).CHEVRON_LEFT,priority:e.unref(V).QUATERNARY,onClick:B[2]||(B[2]=_=>n.isScrollByPage?k():Te())},null,8,["class","disabled","icon","priority"]),e.createVNode(Y,{class:e.normalizeClass([e.unref(t).MARGIN.RIGHT.ONE,e.unref(t).POINTER_EVENTS.ON]),disabled:E.value,icon:e.unref(h).CHEVRON_RIGHT,priority:e.unref(V).QUATERNARY,onClick:B[3]||(B[3]=_=>n.isScrollByPage?D():$())},null,8,["class","disabled","icon","priority"])],2)):e.createCommentVNode("",!0)],2)],2))}}),fn=F(dn,[["__scopeId","data-v-3b467fee"]]),En=e.defineComponent({__name:"TideChipAction",props:{element:{default:b.LINK},href:{default:void 0},isNewTab:{type:Boolean,default:!1},label:{}},setup(n){const r=n;return(o,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:r.href,target:r.isNewTab?e.unref(z).BLANK:e.unref(z).SELF,type:n.element===e.unref(b).BUTTON?e.unref(b).BUTTON:void 0},{default:e.withCtx(()=>[e.createVNode(S,{icon:e.unref(h).SEARCH},null,8,["icon"]),e.createElementVNode("span",null,e.toDisplayString(r.label),1)]),_:1},8,["class","href","target","type"]))}}),mn=F(En,[["__scopeId","data-v-e56ba785"]]),vn=e.defineComponent({__name:"TideChipFilter",props:{isActive:{type:Boolean},label:{}},setup(n){const r=n;return(o,i)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["tide-chip-filter",r.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,r.isActive?"active":""]),type:"button"},[e.renderSlot(o.$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([r.isActive?"":"icon-spacing",e.unref(t).FONT.ROLE.LABEL_1,e.unref(t).WHITESPACE_WRAP.OFF])},e.toDisplayString(r.label),3)],2)],2))}}),On=F(vn,[["__scopeId","data-v-f514ae31"]]),Rn=e.defineComponent({__name:"TideChipInput",props:{label:{}},setup(n){const r=n;return(o,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]),type:"button"},[e.createElementVNode("span",null,e.toDisplayString(r.label),1),e.createVNode(S,{icon:e.unref(h).CLOSE},null,8,["icon"])],2))}}),Ln=F(Rn,[["__scopeId","data-v-ebaa5f06"]]),An={class:"tide-columns"},Tn={class:"tide-columns-column"},In={class:"tide-columns-column"},pn={class:"tide-columns-column"},Nn={class:"tide-columns-column"},gn=e.defineComponent({__name:"TideColumns",props:{heading:{default:""}},setup(n){const r=n;return(o,i)=>(e.openBlock(),e.createElementBlock("section",An,[e.createElementVNode("h2",{class:e.normalizeClass([e.unref(t).MARGIN.BOTTOM.HALF])},e.toDisplayString(r.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",Tn,[e.renderSlot(o.$slots,"section1",{},void 0,!0)]),e.createElementVNode("li",In,[e.renderSlot(o.$slots,"section2",{},void 0,!0)]),e.createElementVNode("li",pn,[e.renderSlot(o.$slots,"section3",{},void 0,!0)]),e.createElementVNode("li",Nn,[e.renderSlot(o.$slots,"section4",{},void 0,!0)])],2)]))}}),Cn=F(gn,[["__scopeId","data-v-c92a6639"]]),vt=Symbol("tide-form"),Ot=()=>{const n=e.ref(!1);return e.provide(vt,{forceShowErrors:n}),{revealValidationErrors:()=>{n.value=!0}}},he=()=>e.inject(vt),hn=e.defineComponent({__name:"TideForm",emits:["submit"],setup(n,{emit:r}){const o=r,{revealValidationErrors:i}=Ot(),s=u=>{i(),o("submit",u)};return(u,l)=>(e.openBlock(),e.createElementBlock("form",{onSubmit:e.withModifiers(s,["prevent"]),novalidate:""},[e.renderSlot(u.$slots,"default")],32))}}),oe={CONTAIN:"contain",COVER:"cover",SCALE_DOWN:"scale-down"},Sn=["media","srcset"],Fn=["alt","fetchpriority","height","loading","src","width"],Ue="https://cdn-static.tilabs.io/marketplace/common/image-coming-soon.svg",Dn=e.defineComponent({__name:"TideImage",props:{alt:{default:""},height:{default:void 0},isLazy:{type:Boolean,default:!0},objectFit:{default:oe.COVER},sources:{default:()=>[]},src:{default:void 0},width:{default:void 0}},setup(n){const r=n,o=e.ref(),i=e.ref(),s=e.computed(()=>{switch(r.objectFit){case oe.CONTAIN:return t.OBJECT.CONTAIN;case oe.COVER:return t.OBJECT.COVER;case oe.SCALE_DOWN:return t.OBJECT.SCALE_DOWN;default:return oe.COVER}}),u=()=>{var d,c;const l=(d=i.value)==null?void 0:d.currentSrc,a=(c=o.value)==null?void 0:c.querySelector(`source[srcset="${l}"]`);l&&a?a.srcset=Ue:i.value&&(i.value.src=Ue)};return(l,a)=>(e.openBlock(),e.createElementBlock("picture",{class:e.normalizeClass(["tide-image",e.unref(t).DISPLAY.BLOCK]),ref_key:"picture",ref:o},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.sources,d=>(e.openBlock(),e.createElementBlock("source",{key:d.srcset,media:`(min-width:${d.media}px)`,srcset:d.srcset},null,8,Sn))),128)),e.createElementVNode("img",{alt:n.alt,class:e.normalizeClass(["tide-image-img",!r.width&&e.unref(t).WIDTH.FULL,!r.height&&e.unref(t).HEIGHT.FULL,e.unref(t).OBJECT.CENTER,s.value]),fetchpriority:n.isLazy?void 0:"high",height:r.height,loading:r.isLazy?"lazy":"eager",ref_key:"img",ref:i,src:n.src??Ue,width:r.width,onError:u},null,42,Fn)],2))}}),Rt=F(Dn,[["__scopeId","data-v-3841f1c1"]]),Bn=e.defineComponent({__name:"TideImageBackground",props:{alt:{default:""},isLazy:{type:Boolean,default:!0},sources:{default:()=>[]},src:{default:void 0}},setup(n){const r=n;return(o,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(Rt,{alt:r.alt,class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).HEIGHT.FULL]),"is-lazy":r.isLazy,"object-fit":e.unref(oe).COVER,sources:r.sources,src:r.src},null,8,["alt","class","is-lazy","object-fit","sources","src"])],2),e.renderSlot(o.$slots,"default",{},void 0,!0)],2))}}),yn=F(Bn,[["__scopeId","data-v-8f2f8198"]]),Pn={key:0,class:e.normalizeClass(["tide-indicator-label"])},bn=e.defineComponent({__name:"TideIndicator",props:{label:{default:void 0}},setup(n){const r=n;return(o,i)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-indicator",r.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,r.label&&r.label.toString().length>1?[e.unref(t).PADDING.X.HALF]:[],r.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]])},[r.label?(e.openBlock(),e.createElementBlock("div",Pn,e.toDisplayString(r.label),1)):e.createCommentVNode("",!0)],2))}}),kn=F(bn,[["__scopeId","data-v-d402ac82"]]),Se=e.defineComponent({__name:"TideInputSupportingText",props:{isError:{type:Boolean},message:{}},setup(n){return(r,o)=>(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(P).SMALL},null,8,["class","icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",null,e.toDisplayString(n.message),1)],2))}}),Lt="Please enter a valid value",ee={NO_ERROR:{message:"",valid:!0},REQUIRED:{message:"Please fill out this field",valid:!1}},Ee=(n,r)=>o=>{let i=ee.NO_ERROR;return o.trim().match(n)||(i={message:r??Lt,valid:!1}),i},Un=({maxlength:n,minlength:r,required:o,value:i})=>{const s=i.length===0&&!o,u=n&&i.length>n;return!(!s&&r&&i.length<r)&&!u},Me=({errorFromProps:n,maxlength:r,minlength:o,required:i,validators:s,value:u})=>{var l;if(n!=="")return{message:n,valid:!1};if(s){const a=Vn(u.value,s);if(!a.valid)return a}if(i&&((l=u.value)==null?void 0:l.trim())==="")return ee.REQUIRED;if(r||o){const a=_n({maxlength:r,minlength:o,required:i,value:u.value});if(!a.valid)return a}return ee.NO_ERROR},_n=({maxlength:n,minlength:r,required:o,value:i})=>{const s={message:"",valid:!0};return s.valid=Un({maxlength:n,minlength:r,required:o,value:i}),s.valid||(s.message=Lt,n&&r?s.message=`Enter a value between ${K(r)} and ${K(n)} characters`:n?s.message=`Use ${K(n)} characters or fewer`:r&&(s.message=`Enter at least ${K(r)} characters`)),s};function Vn(n,r){for(const o of r){const i=o(n);if(!i.valid)return i}return{message:"",valid:!0}}const wn=["for"],Gn=["checked","disabled","name","id"],xn=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:r}){const o=n,i=r,s=e.useModel(n,"modelValue"),u=he(),l=e.ref(!1),a=e.ref(ee.NO_ERROR),d=e.computed(()=>o.required?`${o.label} *`:o.label),c=e.computed(()=>s.value||o.indeterminate),E=e.computed(()=>f.value?!0:l.value?!a.value.valid:!1),f=e.computed(()=>o.error!==""),v=e.computed(()=>E.value&&a.value.message),m=()=>o.error!==""?{message:o.error,valid:!1}:!o.required||c.value?ee.NO_ERROR:ee.REQUIRED;return e.watchEffect(()=>{a.value=m()}),e.watch(s,()=>{s.value&&(l.value=!0)},{immediate:!0}),e.watch(()=>u==null?void 0:u.forceShowErrors.value,O=>{O&&(l.value=!0)},{immediate:!0}),e.watch(a,()=>{i("valid",a.value.valid)},{deep:!0,immediate:!0}),(O,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]=L=>s.value=L)},null,8,Gn),[[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(P).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(K)(n.number))+") ",3)):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0)],10,wn),v.value?(e.openBlock(),e.createBlock(Se,{key:0,message:v.value,"is-error":""},null,8,["message"])):e.createCommentVNode("",!0)],2))}}),Mn=F(xn,[["__scopeId","data-v-381d09d9"]]),Hn=["checked","disabled","name","id"],Yn=["for"],Xn={},zn=e.defineComponent({...Xn,__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 r=n,o=e.computed(()=>r.checked||r.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:o.value,class:e.normalizeClass([e.unref(t).DISPLAY.NONE]),disabled:r.disabled,name:r.name,ref:"input",onClick:s[0]||(s[0]=e.withModifiers(()=>{},["prevent"])),id:r.inputId,type:"checkbox"},null,10,Hn),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,o.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,o.value&&"checked",n.disabled?e.unref(t).CURSOR.NOT_ALLOWED:e.unref(t).CURSOR.POINTER])},[o.value?(e.openBlock(),e.createBlock(S,{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SECONDARY]),icon:r.indeterminate?e.unref(h).REMOVE:e.unref(h).CHECK,size:e.unref(P).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:r.inputId,onClick:s[1]||(s[1]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("span",null,e.toDisplayString(n.label),1),r.number?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SURFACE.VARIANT])}," ("+e.toDisplayString(e.unref(K)(r.number))+") ",3)):e.createCommentVNode("",!0)],10,Yn)):e.createCommentVNode("",!0)],2))}}),Wn=F(zn,[["__scopeId","data-v-345366c5"]]),qn=["for"],$n=["disabled","name","value","id"],Kn=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 r=n,o=e.useModel(n,"modelValue"),i=e.computed(()=>o.value===r.value);return(s,u)=>(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,r.disabled?[e.unref(t).OPACITY.DISABLED,e.unref(t).CURSOR.NOT_ALLOWED]:[e.unref(t).CURSOR.POINTER]]),for:r.inputId},[e.withDirectives(e.createElementVNode("input",{class:e.normalizeClass(["tide-screen-reader-only"]),disabled:n.disabled,name:n.name,value:n.value,id:r.inputId,type:"radio","onUpdate:modelValue":u[0]||(u[0]=l=>o.value=l)},null,8,$n),[[e.vModelRadio,o.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),r.number?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SURFACE.VARIANT])}," ("+e.toDisplayString(e.unref(K)(r.number))+") ",3)):e.createCommentVNode("",!0)],2)],10,qn))}}),Qn=F(Kn,[["__scopeId","data-v-33fad71e"]]),Zn=["checked","id"],jn=["for"],Jn={},er=e.defineComponent({...Jn,__name:"TideInputRadioDeprecated",props:{checked:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},inputId:{default:void 0},label:{default:void 0},name:{default:void 0},number:{default:void 0}},setup(n){const r=n,o=e.ref(r.checked);return e.watch(()=>r.checked,(i,s)=>{(i!==s||i!==o.value)&&(o.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,r.disabled&&"disabled"])},[e.createElementVNode("input",{checked:o.value,class:e.normalizeClass([e.unref(t).DISPLAY.NONE]),id:r.inputId,name:"",type:"radio",value:""},null,10,Zn),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,o.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,o.value&&"checked"])},[e.createElementVNode("div",{class:e.normalizeClass(["tide-input-radio-check",e.unref(t).BORDER.RADIUS.FULL,r.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:r.inputId},[e.createElementVNode("span",null,e.toDisplayString(n.label),1),r.number?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SURFACE.VARIANT])}," ("+e.toDisplayString(e.unref(K)(r.number))+") ",3)):e.createCommentVNode("",!0)],10,jn)],2))}}),tr=F(er,[["__scopeId","data-v-bde66757"]]),nr={NUMBER:K,PHONE:xt,PRICE:Mt},ae={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})?$/},rr={ALPHA_NUMBER_EMPTY:Ee(ae.alphaNumberOrEmpty),ALPHA_SPACE:Ee(ae.alphaSpace),EMAIL:Ee(ae.email,"Enter a valid email address (e.g. name@example.com)"),NUMBER:Ee(ae.numberFormatted,"Enter a valid number"),PHONE:Ee(ae.phone,"Enter a valid phone number")},te={EAGER:"eager",LAZY:"lazy"},or=["for"],sr=["disabled","name","required","id"],ir=["label"],lr=["value"],ar=["selected","value"],ur=["selected","value"],cr=e.defineComponent({__name:"TideInputSelect",props:e.mergeModels({disabled:{type:Boolean,default:!1},error:{default:""},errorDisplay:{default:te.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:r}){const o=n,i=r,s=e.useModel(n,"modelValue"),u=he(),l=e.ref(ee.NO_ERROR),a=e.ref(!1),d=e.useId(),c=e.ref(!1),E=e.ref(null),f=e.computed(()=>o.required?`${o.label} *`:o.label),v=e.computed(()=>m.value?!0:c.value?!l.value.valid:!1),m=e.computed(()=>o.error!==""),O=e.computed(()=>a.value||!A.value),A=e.computed(()=>s.value===""),L=e.computed(()=>v.value&&l.value.message||o.supportingText),T=()=>{var p;const I=new MouseEvent("mousedown");(p=E==null?void 0:E.value)==null||p.dispatchEvent(I)},R=()=>{a.value=!0,o.errorDisplay===te.EAGER&&(c.value=!0)},N=()=>{a.value=!1,o.errorDisplay===te.LAZY&&(c.value=!0)};return e.watchEffect(()=>{l.value=Me({errorFromProps:o.error,required:o.required,value:s})}),e.watch(()=>u==null?void 0:u.forceShowErrors.value,I=>{I&&(c.value=!0)},{immediate:!0}),e.watch(l,()=>{i("valid",l.value.valid)},{deep:!0,immediate:!0}),(I,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,n.disabled&&"disabled",v.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,o.disabled?e.unref(t).CURSOR.NOT_ALLOWED:"",e.unref(t).OVERFLOW.XY.HIDDEN]),onClick:T},[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([O.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,!v.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,e.unref(t).POINTER_EVENTS.OFF]),for:e.unref(d)},e.toDisplayString(f.value),11,or)):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:R,onFocusout:N,id:e.unref(d),"onUpdate:modelValue":p[0]||(p[0]=g=>s.value=g)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.optgroups,g=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[g.options?(e.openBlock(),e.createElementBlock("optgroup",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:g.label,label:g.label},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(g.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,lr))),128))],10,ir)):(e.openBlock(),e.createElementBlock("option",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:g.value,selected:s.value===g.value?!0:void 0,value:g.value},e.toDisplayString(g.label),11,ar))],64))),256)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.options,g=>(e.openBlock(),e.createElementBlock("option",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:g.value,selected:s.value===g.value?!0:void 0,value:g.value},e.toDisplayString(g.label),11,ur))),128))],42,sr),[[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(P).SMALL},null,8,["class","icon","size"])],2),L.value?(e.openBlock(),e.createBlock(Se,{key:0,"is-error":v.value,message:L.value},null,8,["is-error","message"])):e.createCommentVNode("",!0)],2))}}),dr=F(cr,[["__scopeId","data-v-8465bfdd"]]),At="Please enter a valid value.",He=(n,r)=>typeof n=="string"&&n.length>0?n:typeof r=="string"&&r.length>0?r:At,Ye=(n,r)=>n!==!1||r!==!1,fr=({maxlength:n,minlength:r,required:o,value:i})=>{const s=i.length===0&&!o,u=n&&i.length>n;return!(!s&&r&&i.length<r)&&!u},Tt=({error:n,errorFromProps:r,maxlength:o,minlength:i,required:s=!1,validators:u,value:l})=>{if(n.value=r||!1,!n.value&&u){const a=mr((l==null?void 0:l.value)||"",u);a.valid||(n.value=a.message)}if(!n.value&&(o||i)){const a=Er({maxlength:o,minlength:i,required:s,value:(l==null?void 0:l.value)||""});a.valid||(n.value=a.message)}},Er=({maxlength:n,minlength:r,required:o=!1,value:i})=>{const s={message:"",valid:!0};return s.valid=fr({maxlength:n,minlength:r,required:o,value:i}),s.valid||(s.message=At,n&&r?s.message=`Please enter a value between ${r} and ${n} characters in length.`:n?s.message=`Please enter a value no more than ${n} characters in length.`:r&&(s.message=`Please enter a value no less than ${r} characters in length.`)),s};function mr(n,r){for(const o of r){const i=o(n);if(!i.valid)return i}return{message:"",valid:!0}}const vr=["for"],Or=["disabled","name","required","id"],Rr=["label"],Lr=["value"],Ar=["selected","value"],Tr=["selected","value"],Ir={},pr=e.defineComponent({...Ir,__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:r}){const o=n,i=e.ref(o.error),s=e.ref(!1),u=e.ref(null),l=e.ref(o.required),a=e.ref(o.value),d=e.computed(()=>He(o.error,i.value)),c=e.computed(()=>o.required?`${o.label} *`:o.label),E=e.computed(()=>o.required&&!a.value||Ye(i.value,o.error)),f=e.computed(()=>s.value||!v.value),v=e.computed(()=>a.value===void 0),m=()=>{var T;const L=new MouseEvent("mousedown");(T=u==null?void 0:u.value)==null||T.dispatchEvent(L)},O=()=>{s.value=!0},A=()=>{s.value=!1};return e.watch(()=>o.value,(L,T)=>{(L!==T||L!==a.value)&&(a.value=L)}),r({error:i,value:a}),(L,T)=>(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,o.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])},[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:o.inputId},e.toDisplayString(c.value),11,vr)):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:u,required:l.value,onFocus:O,onFocusout:A,id:o.inputId,"onUpdate:modelValue":T[0]||(T[0]=R=>a.value=R)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.optgroups,R=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[R.options?(e.openBlock(),e.createElementBlock("optgroup",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:R.label,label:R.label},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(R.options,N=>(e.openBlock(),e.createElementBlock("option",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:N.value,value:N.value},e.toDisplayString(N.label),11,Lr))),128))],10,Rr)):(e.openBlock(),e.createElementBlock("option",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:R.value,selected:a.value===R.value?!0:void 0,value:R.value},e.toDisplayString(R.label),11,Ar))],64))),256)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.options,R=>(e.openBlock(),e.createElementBlock("option",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:R.value,selected:a.value===R.value?!0:void 0,value:R.value},e.toDisplayString(R.label),11,Tr))),128))],42,Or),[[e.vModelSelect,a.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(P).SMALL},null,8,["class","icon","size"])],2),o.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(P).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:o.supportingText),3)],2)):e.createCommentVNode("",!0)],2))}}),Nr=F(pr,[["__scopeId","data-v-ee7ffd3a"]]),U={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"},ue={DECIMAL:"decimal",EMAIL:"email",NUMERIC:"numeric",SEARCH:"search",TEL:"tel",TEXT:"text",URL:"url"},gr=(n,r)=>{if(r)return r;switch(n){case U.TEL:return ue.TEL;case U.SEARCH:return ue.SEARCH;case U.NUMBER:return ue.NUMERIC;case U.EMAIL:return ue.EMAIL;case U.URL:return ue.URL}},Cr=["for"],hr=["autocomplete","disabled","inputmode","maxlength","minlength","name","required","type","id"],Sr=e.defineComponent({__name:"TideInputText",props:e.mergeModels({autocomplete:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},error:{default:""},errorDisplay:{default:te.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:U.TEXT},validators:{default:void 0}},{modelValue:{required:!0},modelModifiers:{}}),emits:e.mergeModels(["valid"],["update:modelValue"]),setup(n,{emit:r}){const o=n,i=r,s=e.useModel(n,"modelValue"),u=he(),l=e.ref(ee.NO_ERROR),a=e.ref(!1),d=e.ref(null),c=e.ref(!1),E=e.ref(!1),f=e.computed(()=>o.required&&o.label?`${o.label} *`:o.label),v=e.computed(()=>m.value?!0:c.value?!l.value.valid:!1),m=e.computed(()=>o.error!==""),O=e.computed(()=>a.value||!T.value),A=e.computed(()=>gr(o.type,o.inputmode)),L=e.computed(()=>o.type===U.PASSWORD&&E.value===!0?U.TEXT:o.type),T=e.computed(()=>s.value===""),R=e.computed(()=>o.hasClear&&s.value&&o.type!==U.PASSWORD),N=e.computed(()=>o.type===U.PASSWORD),I=e.computed(()=>v.value&&l.value.message||o.supportingText),p=()=>{var D;s.value="",(D=d.value)==null||D.focus()},g=()=>{a.value=!0,o.errorDisplay===te.EAGER&&(c.value=!0)},C=()=>{a.value=!1,o.errorDisplay===te.LAZY&&(c.value=!0)},w=()=>{var D;(D=d.value)==null||D.focus()},H=D=>{a.value&&D.target!==d.value&&D.preventDefault()};return e.watchEffect(()=>{l.value=Me({errorFromProps:o.error,maxlength:o.maxlength,minlength:o.minlength,required:o.required,validators:o.validators,value:s})}),e.watch([s,()=>o.transformValue],()=>{var k,$;if(!o.transformValue)return;const D=(($=(k=s.value)==null?void 0:k.match(/\d/g))==null?void 0:$.join(""))||void 0;s.value=D?o.transformValue(D):""},{immediate:!0}),e.watch(()=>u==null?void 0:u.forceShowErrors.value,D=>{D&&(c.value=!0)},{immediate:!0}),e.watch(l,()=>{i("valid",l.value.valid)},{deep:!0,immediate:!0}),(D,k)=>(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",v.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,R.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:w,onMousedown:H},[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(P).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,!v.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,O.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",O.value?["minilabel",e.unref(t).FONT.ROLE.LABEL_3]:e.unref(t).FONT.ROLE.LABEL_1,!v.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:L.value,onFocus:g,onFocusout:C,id:n.inputId,"onUpdate:modelValue":k[0]||(k[0]=$=>s.value=$)},null,42,hr),[[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,!v.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,O.value?"":"offset"])},e.toDisplayString(n.suffix),3)):e.createCommentVNode("",!0)],2),R.value?(e.openBlock(),e.createElementBlock("button",{key:1,onClick:p,type:"button"},[e.createVNode(S,{class:e.normalizeClass([e.unref(t).MARGIN.FULL.HALF]),icon:e.unref(h).CLOSE,size:e.unref(P).SMALL},null,8,["class","icon","size"])])):e.createCommentVNode("",!0),N.value?(e.openBlock(),e.createElementBlock("button",{key:2,onClick:k[1]||(k[1]=$=>E.value=!E.value),type:"button"},[e.createVNode(S,{class:e.normalizeClass([e.unref(t).MARGIN.FULL.HALF]),icon:e.unref(h).VISIBILITY,size:e.unref(P).SMALL},null,8,["class","icon","size"])])):e.createCommentVNode("",!0)],42,Cr),I.value?(e.openBlock(),e.createBlock(Se,{key:0,"is-error":v.value,message:I.value},null,8,["is-error","message"])):e.createCommentVNode("",!0)],2))}}),Fr=F(Sr,[["__scopeId","data-v-dcbe53a3"]]),Dr=["for"],Br=["autocomplete","disabled","maxlength","minlength","name","required","type","id"],yr={},Pr=e.defineComponent({...yr,__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:{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:U.TEXT},validators:{default:void 0},value:{default:void 0}},setup(n,{expose:r}){const o=n,i=e.ref(o.error),s=e.ref(!1),u=e.ref(null),l=e.ref(!1),a=e.ref(o.value),d=e.computed(()=>He(o.error,i.value)),c=e.computed(()=>o.required&&o.label?`${o.label} *`:o.label),E=e.computed(()=>o.hasClear&&a.value),f=e.computed(()=>o.required&&a.value!==void 0&&!a.value||Ye(i.value,o.error)),v=e.computed(()=>s.value||!m.value),m=e.computed(()=>a.value===""||a.value===void 0),O=e.computed(()=>o.type===U.PASSWORD&&l.value===!0?U.TEXT:o.type),A=()=>{var p;a.value="",(p=u.value)==null||p.focus()},L=()=>{s.value=!0},T=()=>{s.value=!1,a.value||(a.value=""),N()},R=()=>{var p,g;if(o.transformValue){const C=((g=(p=a.value)==null?void 0:p.match(/\d/g))==null?void 0:g.join(""))||void 0;a.value=C?o.transformValue(C):""}},N=()=>{Tt({error:i,errorFromProps:o.error,maxlength:o.maxlength,minlength:o.minlength,required:o.required,validators:o.validators,value:a})},I=p=>{a.value=p};return e.watch(()=>o.value,(p,g)=>{(p!==g||p!==a.value)&&(a.value=p)}),r({error:i,required:o.required,updateValue:I,value:a}),(p,g)=>(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(P).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,v.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",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).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:u,required:n.required,type:O.value,onChange:N,onFocus:L,onFocusout:T,onInput:R,id:n.inputId,"onUpdate:modelValue":g[0]||(g[0]=C=>a.value=C)},null,42,Br),[[e.vModelDynamic,a.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,v.value?"":"offset"])},e.toDisplayString(n.suffix),3)):e.createCommentVNode("",!0)],2),E.value&&n.type!==e.unref(U).PASSWORD?(e.openBlock(),e.createElementBlock("button",{key:1,onClick:A,type:"button"},[e.createVNode(S,{class:e.normalizeClass([e.unref(t).MARGIN.FULL.HALF]),icon:e.unref(h).CLOSE,size:e.unref(P).SMALL},null,8,["class","icon","size"])])):e.createCommentVNode("",!0),n.type===e.unref(U).PASSWORD?(e.openBlock(),e.createElementBlock("button",{key:2,onClick:g[1]||(g[1]=C=>l.value=!l.value),type:"button"},[e.createVNode(S,{class:e.normalizeClass([e.unref(t).MARGIN.FULL.HALF]),icon:e.unref(h).VISIBILITY,size:e.unref(P).SMALL},null,8,["class","icon","size"])])):e.createCommentVNode("",!0)],10,Dr),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(P).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))}}),br=F(Pr,[["__scopeId","data-v-f461a2b3"]]),kr=["for"],Ur=["maxlength","minlength","name","required","rows","id"],_r=e.defineComponent({__name:"TideInputTextarea",props:e.mergeModels({error:{default:""},errorDisplay:{default:te.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:r}){const o=n,i=r,s=e.useModel(n,"modelValue"),u=he(),l=e.ref(ee.NO_ERROR),a=e.ref(!1),d=e.ref(!1),c=e.ref(null),E=e.computed(()=>o.required?`${o.label} *`:o.label),f=e.computed(()=>v.value?!0:d.value?!l.value.valid:!1),v=e.computed(()=>o.error!==""),m=e.computed(()=>a.value||!O.value),O=e.computed(()=>s.value===""),A=e.computed(()=>f.value&&l.value.message||o.supportingText),L=()=>{a.value=!0,o.errorDisplay===te.EAGER&&(d.value=!0)},T=()=>{a.value=!1,o.errorDisplay===te.LAZY&&(d.value=!0)},R=()=>{var I;(I=c.value)==null||I.focus()},N=I=>{a.value&&I.target!==c.value&&I.preventDefault()};return e.watchEffect(()=>{l.value=Me({errorFromProps:o.error,maxlength:o.maxlength,minlength:o.minlength,required:o.required,validators:o.validators,value:s})}),e.watch(()=>u==null?void 0:u.forceShowErrors.value,I=>{I&&(d.value=!0)},{immediate:!0}),e.watch(l,()=>{i("valid",l.value.valid)},{deep:!0,immediate:!0}),(I,p)=>(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.TOP.HALF,e.unref(t).OVERFLOW.XY.HIDDEN,e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).CURSOR.TEXT]),for:n.inputId,onClick:R,onMousedown:N},[n.label?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["tide-input-textarea-label",e.unref(t).PADDING.X.ONE,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).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).FONT.ROLE.BODY_1,e.unref(t).PADDING.X.ONE,e.unref(t).WIDTH.FULL]),maxlength:n.maxlength,minlength:n.minlength,name:n.name,ref_key:"textareaElement",ref:c,required:n.required,rows:n.rows,onFocus:L,onFocusout:T,id:n.inputId,"onUpdate:modelValue":p[0]||(p[0]=g=>s.value=g)},null,42,Ur),[[e.vModelText,s.value]])],42,kr),A.value?(e.openBlock(),e.createBlock(Se,{key:0,"is-error":f.value,message:A.value},null,8,["is-error","message"])):e.createCommentVNode("",!0)],2))}}),Vr=F(_r,[["__scopeId","data-v-f46a098b"]]),wr=["for"],Gr=["maxlength","minlength","name","required","rows","id"],xr={},Mr=e.defineComponent({...xr,__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:r}){const o=n,i=e.ref(o.error),s=e.ref(!1),u=e.ref(null),l=e.ref(o.value),a=e.computed(()=>He(o.error,i.value)),d=e.computed(()=>o.required?`${o.label} *`:o.label),c=e.computed(()=>o.required&&l.value!==void 0&&!l.value||Ye(i.value,o.error)),E=e.computed(()=>s.value||!f.value),f=e.computed(()=>l.value===""||l.value===void 0),v=()=>{s.value=!0},m=()=>{s.value=!1,l.value||(l.value="")},O=()=>Tt({error:i,errorFromProps:o.error,maxlength:o.maxlength,minlength:o.minlength,required:o.required,value:l});return e.watch(()=>o.value,(A,L)=>{(A!==L||A!==l.value)&&(l.value=A)}),r({error:i,required:o.required,value:l}),(A,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,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:u,required:n.required,rows:n.rows,onChange:O,onFocus:v,onFocusout:m,id:n.inputId,"onUpdate:modelValue":L[0]||(L[0]=T=>l.value=T)},null,42,Gr),[[e.vModelText,l.value]])],10,wr),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(P).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?a.value:n.supportingText),3)],2)):e.createCommentVNode("",!0)],2))}}),Hr=F(Mr,[["__scopeId","data-v-e3e8dc19"]]),It={SM:"sm",MD:"md",LG:"lg",XL:"xl"},Yr={SM:768,MD:992,LG:1232,XL:1920},pt=async n=>{const r=document.body;if(n){if(!r.dataset.scrollLockY){const o=window.scrollY;r.dataset.scrollLockY=o.toString(),r.style.setProperty("--saved-scroll-y",`${o}px`),r.style.setProperty("inset","0"),r.style.setProperty("margin-top","calc(0px - var(--saved-scroll-y, 0px))"),r.style.setProperty("overflow-y","scroll"),r.style.setProperty("position","fixed")}}else if(await e.nextTick(),!document.querySelector("dialog[open]")){const o=parseInt(r.dataset.scrollLockY||"0");r.style.removeProperty("inset"),r.style.removeProperty("marginTop"),r.style.removeProperty("overflowY"),r.style.removeProperty("position"),r.style.removeProperty("--saved-scroll-y"),window.scrollTo({behavior:"auto",top:o}),delete r.dataset.scrollLockY}},Re="tide-top-layer",Xe=()=>{let n=document.getElementById(Re);n||(n=document.createElement("div"),n.id=Re,n.setAttribute("data-css-scope",""),document.body.appendChild(n)),n.style.isolation="isolate"},Xr=["textContent"],zr=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:r}){const o=n,i=r,s=e.ref(),u=e.ref(),l=()=>{var f;(f=u.value)==null||f.showModal()},a=()=>{var f;(f=u.value)==null||f.close()},d=()=>{e.nextTick(()=>{s.value&&(s.value.scrollTop=0)})},c=()=>{o.isDismissible&&i("close")},E=f=>{f.preventDefault(),o.isDismissible&&i("close")};return e.watch(()=>o.isOpen,f=>{u.value&&(f?(l(),d()):a(),pt(f))}),e.onBeforeMount(()=>{Xe()}),e.onMounted(()=>{o.isOpen&&l()}),(f,v)=>(e.openBlock(),e.createBlock(e.Teleport,{to:`#${e.unref(Re)}`},[e.createElementVNode("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:u,style:e.normalizeStyle({"--modal-width":o.width}),onClick:e.withModifiers(c,["self"]),onClose:v[2]||(v[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(It).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(Y,{key:0,icon:e.unref(h).CHEVRON_LEFT,priority:e.unref(V).QUATERNARY,onClick:v[0]||(v[0]=m=>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,Xr),n.isDismissible?(e.openBlock(),e.createBlock(Y,{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(V).QUATERNARY,onClick:v[1]||(v[1]=m=>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)],8,["to"]))}}),Wr=F(zr,[["__scopeId","data-v-ff1ee773"]]),qr=e.defineComponent({__name:"TidePagination",props:{pageCurrent:{default:1},pageTotal:{default:1}},emits:["change"],setup(n,{emit:r}){const o=n,i=r,s=e.ref(o.pageCurrent),u=e.computed(()=>new Array(o.pageTotal).fill("").map((a,d)=>d+1)),l=a=>{s.value=a,i("change",event,a)};return(a,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(Y,{disabled:s.value===1,icon:e.unref(h).CHEVRON_LEFT,priority:e.unref(V).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(u.value,c=>(e.openBlock(),e.createElementBlock("li",{key:c},[e.createVNode(mt,{disabled:s.value===c,label:c,priority:e.unref(V).QUATERNARY,onClick:E=>l(c)},null,8,["disabled","label","priority","onClick"])]))),128))],2),e.createVNode(Y,{disabled:s.value===u.value[u.value.length-1],icon:e.unref(h).CHEVRON_RIGHT,priority:e.unref(V).QUATERNARY,onClick:d[1]||(d[1]=c=>l(s.value+1))},null,8,["disabled","icon","priority"])],2))}}),$r=["top","right","bottom","left"],Je=["start","end"],et=$r.reduce((n,r)=>n.concat(r,r+"-"+Je[0],r+"-"+Je[1]),[]),Ne=Math.min,se=Math.max,ge=Math.round,Ie=Math.floor,Q=n=>({x:n,y:n}),Kr={left:"right",right:"left",bottom:"top",top:"bottom"},Qr={start:"end",end:"start"};function tt(n,r,o){return se(n,Ne(r,o))}function Fe(n,r){return typeof n=="function"?n(r):n}function fe(n){return n.split("-")[0]}function ne(n){return n.split("-")[1]}function Nt(n){return n==="x"?"y":"x"}function gt(n){return n==="y"?"height":"width"}function De(n){return["top","bottom"].includes(fe(n))?"y":"x"}function Ct(n){return Nt(De(n))}function Zr(n,r,o){o===void 0&&(o=!1);const i=ne(n),s=Ct(n),u=gt(s);let l=s==="x"?i===(o?"end":"start")?"right":"left":i==="start"?"bottom":"top";return r.reference[u]>r.floating[u]&&(l=nt(l)),[l,nt(l)]}function jr(n){return n.replace(/start|end/g,r=>Qr[r])}function nt(n){return n.replace(/left|right|bottom|top/g,r=>Kr[r])}function Jr(n){return{top:0,right:0,bottom:0,left:0,...n}}function eo(n){return typeof n!="number"?Jr(n):{top:n,right:n,bottom:n,left:n}}function Ce(n){const{x:r,y:o,width:i,height:s}=n;return{width:i,height:s,top:o,left:r,right:r+i,bottom:o+s,x:r,y:o}}function rt(n,r,o){let{reference:i,floating:s}=n;const u=De(r),l=Ct(r),a=gt(l),d=fe(r),c=u==="y",E=i.x+i.width/2-s.width/2,f=i.y+i.height/2-s.height/2,v=i[a]/2-s[a]/2;let m;switch(d){case"top":m={x:E,y:i.y-s.height};break;case"bottom":m={x:E,y:i.y+i.height};break;case"right":m={x:i.x+i.width,y:f};break;case"left":m={x:i.x-s.width,y:f};break;default:m={x:i.x,y:i.y}}switch(ne(r)){case"start":m[l]-=v*(o&&c?-1:1);break;case"end":m[l]+=v*(o&&c?-1:1);break}return m}const to=async(n,r,o)=>{const{placement:i="bottom",strategy:s="absolute",middleware:u=[],platform:l}=o,a=u.filter(Boolean),d=await(l.isRTL==null?void 0:l.isRTL(r));let c=await l.getElementRects({reference:n,floating:r,strategy:s}),{x:E,y:f}=rt(c,i,d),v=i,m={},O=0;for(let A=0;A<a.length;A++){const{name:L,fn:T}=a[A],{x:R,y:N,data:I,reset:p}=await T({x:E,y:f,initialPlacement:i,placement:v,strategy:s,middlewareData:m,rects:c,platform:l,elements:{reference:n,floating:r}});E=R??E,f=N??f,m={...m,[L]:{...m[L],...I}},p&&O<=50&&(O++,typeof p=="object"&&(p.placement&&(v=p.placement),p.rects&&(c=p.rects===!0?await l.getElementRects({reference:n,floating:r,strategy:s}):p.rects),{x:E,y:f}=rt(c,v,d)),A=-1)}return{x:E,y:f,placement:v,strategy:s,middlewareData:m}};async function ht(n,r){var o;r===void 0&&(r={});const{x:i,y:s,platform:u,rects:l,elements:a,strategy:d}=n,{boundary:c="clippingAncestors",rootBoundary:E="viewport",elementContext:f="floating",altBoundary:v=!1,padding:m=0}=Fe(r,n),O=eo(m),L=a[v?f==="floating"?"reference":"floating":f],T=Ce(await u.getClippingRect({element:(o=await(u.isElement==null?void 0:u.isElement(L)))==null||o?L:L.contextElement||await(u.getDocumentElement==null?void 0:u.getDocumentElement(a.floating)),boundary:c,rootBoundary:E,strategy:d})),R=f==="floating"?{x:i,y:s,width:l.floating.width,height:l.floating.height}:l.reference,N=await(u.getOffsetParent==null?void 0:u.getOffsetParent(a.floating)),I=await(u.isElement==null?void 0:u.isElement(N))?await(u.getScale==null?void 0:u.getScale(N))||{x:1,y:1}:{x:1,y:1},p=Ce(u.convertOffsetParentRelativeRectToViewportRelativeRect?await u.convertOffsetParentRelativeRectToViewportRelativeRect({elements:a,rect:R,offsetParent:N,strategy:d}):R);return{top:(T.top-p.top+O.top)/I.y,bottom:(p.bottom-T.bottom+O.bottom)/I.y,left:(T.left-p.left+O.left)/I.x,right:(p.right-T.right+O.right)/I.x}}function no(n,r,o){return(n?[...o.filter(s=>ne(s)===n),...o.filter(s=>ne(s)!==n)]:o.filter(s=>fe(s)===s)).filter(s=>n?ne(s)===n||(r?jr(s)!==s:!1):!0)}const ro=function(n){return n===void 0&&(n={}),{name:"autoPlacement",options:n,async fn(r){var o,i,s;const{rects:u,middlewareData:l,placement:a,platform:d,elements:c}=r,{crossAxis:E=!1,alignment:f,allowedPlacements:v=et,autoAlignment:m=!0,...O}=Fe(n,r),A=f!==void 0||v===et?no(f||null,m,v):v,L=await ht(r,O),T=((o=l.autoPlacement)==null?void 0:o.index)||0,R=A[T];if(R==null)return{};const N=Zr(R,u,await(d.isRTL==null?void 0:d.isRTL(c.floating)));if(a!==R)return{reset:{placement:A[0]}};const I=[L[fe(R)],L[N[0]],L[N[1]]],p=[...((i=l.autoPlacement)==null?void 0:i.overflows)||[],{placement:R,overflows:I}],g=A[T+1];if(g)return{data:{index:T+1,overflows:p},reset:{placement:g}};const C=p.map(D=>{const k=ne(D.placement);return[D.placement,k&&E?D.overflows.slice(0,2).reduce(($,Te)=>$+Te,0):D.overflows[0],D.overflows]}).sort((D,k)=>D[1]-k[1]),H=((s=C.filter(D=>D[2].slice(0,ne(D[0])?2:3).every(k=>k<=0))[0])==null?void 0:s[0])||C[0][0];return H!==a?{data:{index:T+1,overflows:p},reset:{placement:H}}:{}}}};async function oo(n,r){const{placement:o,platform:i,elements:s}=n,u=await(i.isRTL==null?void 0:i.isRTL(s.floating)),l=fe(o),a=ne(o),d=De(o)==="y",c=["left","top"].includes(l)?-1:1,E=u&&d?-1:1,f=Fe(r,n);let{mainAxis:v,crossAxis:m,alignmentAxis:O}=typeof f=="number"?{mainAxis:f,crossAxis:0,alignmentAxis:null}:{mainAxis:f.mainAxis||0,crossAxis:f.crossAxis||0,alignmentAxis:f.alignmentAxis};return a&&typeof O=="number"&&(m=a==="end"?O*-1:O),d?{x:m*E,y:v*c}:{x:v*c,y:m*E}}const so=function(n){return n===void 0&&(n=0),{name:"offset",options:n,async fn(r){var o,i;const{x:s,y:u,placement:l,middlewareData:a}=r,d=await oo(r,n);return l===((o=a.offset)==null?void 0:o.placement)&&(i=a.arrow)!=null&&i.alignmentOffset?{}:{x:s+d.x,y:u+d.y,data:{...d,placement:l}}}}},io=function(n){return n===void 0&&(n={}),{name:"shift",options:n,async fn(r){const{x:o,y:i,placement:s}=r,{mainAxis:u=!0,crossAxis:l=!1,limiter:a={fn:L=>{let{x:T,y:R}=L;return{x:T,y:R}}},...d}=Fe(n,r),c={x:o,y:i},E=await ht(r,d),f=De(fe(s)),v=Nt(f);let m=c[v],O=c[f];if(u){const L=v==="y"?"top":"left",T=v==="y"?"bottom":"right",R=m+E[L],N=m-E[T];m=tt(R,m,N)}if(l){const L=f==="y"?"top":"left",T=f==="y"?"bottom":"right",R=O+E[L],N=O-E[T];O=tt(R,O,N)}const A=a.fn({...r,[v]:m,[f]:O});return{...A,data:{x:A.x-o,y:A.y-i,enabled:{[v]:u,[f]:l}}}}}};function Be(){return typeof window<"u"}function le(n){return ze(n)?(n.nodeName||"").toLowerCase():"#document"}function M(n){var r;return(n==null||(r=n.ownerDocument)==null?void 0:r.defaultView)||window}function j(n){var r;return(r=(ze(n)?n.ownerDocument:n.document)||window.document)==null?void 0:r.documentElement}function ze(n){return Be()?n instanceof Node||n instanceof M(n).Node:!1}function W(n){return Be()?n instanceof Element||n instanceof M(n).Element:!1}function Z(n){return Be()?n instanceof HTMLElement||n instanceof M(n).HTMLElement:!1}function ot(n){return!Be()||typeof ShadowRoot>"u"?!1:n instanceof ShadowRoot||n instanceof M(n).ShadowRoot}function Ae(n){const{overflow:r,overflowX:o,overflowY:i,display:s}=q(n);return/auto|scroll|overlay|hidden|clip/.test(r+i+o)&&!["inline","contents"].includes(s)}function lo(n){return["table","td","th"].includes(le(n))}function ye(n){return[":popover-open",":modal"].some(r=>{try{return n.matches(r)}catch{return!1}})}function We(n){const r=qe(),o=W(n)?q(n):n;return["transform","translate","scale","rotate","perspective"].some(i=>o[i]?o[i]!=="none":!1)||(o.containerType?o.containerType!=="normal":!1)||!r&&(o.backdropFilter?o.backdropFilter!=="none":!1)||!r&&(o.filter?o.filter!=="none":!1)||["transform","translate","scale","rotate","perspective","filter"].some(i=>(o.willChange||"").includes(i))||["paint","layout","strict","content"].some(i=>(o.contain||"").includes(i))}function ao(n){let r=re(n);for(;Z(r)&&!de(r);){if(We(r))return r;if(ye(r))return null;r=re(r)}return null}function qe(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}function de(n){return["html","body","#document"].includes(le(n))}function q(n){return M(n).getComputedStyle(n)}function Pe(n){return W(n)?{scrollLeft:n.scrollLeft,scrollTop:n.scrollTop}:{scrollLeft:n.scrollX,scrollTop:n.scrollY}}function re(n){if(le(n)==="html")return n;const r=n.assignedSlot||n.parentNode||ot(n)&&n.host||j(n);return ot(r)?r.host:r}function St(n){const r=re(n);return de(r)?n.ownerDocument?n.ownerDocument.body:n.body:Z(r)&&Ae(r)?r:St(r)}function Le(n,r,o){var i;r===void 0&&(r=[]),o===void 0&&(o=!0);const s=St(n),u=s===((i=n.ownerDocument)==null?void 0:i.body),l=M(s);if(u){const a=xe(l);return r.concat(l,l.visualViewport||[],Ae(s)?s:[],a&&o?Le(a):[])}return r.concat(s,Le(s,[],o))}function xe(n){return n.parent&&Object.getPrototypeOf(n.parent)?n.frameElement:null}function Ft(n){const r=q(n);let o=parseFloat(r.width)||0,i=parseFloat(r.height)||0;const s=Z(n),u=s?n.offsetWidth:o,l=s?n.offsetHeight:i,a=ge(o)!==u||ge(i)!==l;return a&&(o=u,i=l),{width:o,height:i,$:a}}function $e(n){return W(n)?n:n.contextElement}function ce(n){const r=$e(n);if(!Z(r))return Q(1);const o=r.getBoundingClientRect(),{width:i,height:s,$:u}=Ft(r);let l=(u?ge(o.width):o.width)/i,a=(u?ge(o.height):o.height)/s;return(!l||!Number.isFinite(l))&&(l=1),(!a||!Number.isFinite(a))&&(a=1),{x:l,y:a}}const uo=Q(0);function Dt(n){const r=M(n);return!qe()||!r.visualViewport?uo:{x:r.visualViewport.offsetLeft,y:r.visualViewport.offsetTop}}function co(n,r,o){return r===void 0&&(r=!1),!o||r&&o!==M(n)?!1:r}function ie(n,r,o,i){r===void 0&&(r=!1),o===void 0&&(o=!1);const s=n.getBoundingClientRect(),u=$e(n);let l=Q(1);r&&(i?W(i)&&(l=ce(i)):l=ce(n));const a=co(u,o,i)?Dt(u):Q(0);let d=(s.left+a.x)/l.x,c=(s.top+a.y)/l.y,E=s.width/l.x,f=s.height/l.y;if(u){const v=M(u),m=i&&W(i)?M(i):i;let O=v,A=xe(O);for(;A&&i&&m!==O;){const L=ce(A),T=A.getBoundingClientRect(),R=q(A),N=T.left+(A.clientLeft+parseFloat(R.paddingLeft))*L.x,I=T.top+(A.clientTop+parseFloat(R.paddingTop))*L.y;d*=L.x,c*=L.y,E*=L.x,f*=L.y,d+=N,c+=I,O=M(A),A=xe(O)}}return Ce({width:E,height:f,x:d,y:c})}function Ke(n,r){const o=Pe(n).scrollLeft;return r?r.left+o:ie(j(n)).left+o}function Bt(n,r,o){o===void 0&&(o=!1);const i=n.getBoundingClientRect(),s=i.left+r.scrollLeft-(o?0:Ke(n,i)),u=i.top+r.scrollTop;return{x:s,y:u}}function fo(n){let{elements:r,rect:o,offsetParent:i,strategy:s}=n;const u=s==="fixed",l=j(i),a=r?ye(r.floating):!1;if(i===l||a&&u)return o;let d={scrollLeft:0,scrollTop:0},c=Q(1);const E=Q(0),f=Z(i);if((f||!f&&!u)&&((le(i)!=="body"||Ae(l))&&(d=Pe(i)),Z(i))){const m=ie(i);c=ce(i),E.x=m.x+i.clientLeft,E.y=m.y+i.clientTop}const v=l&&!f&&!u?Bt(l,d,!0):Q(0);return{width:o.width*c.x,height:o.height*c.y,x:o.x*c.x-d.scrollLeft*c.x+E.x+v.x,y:o.y*c.y-d.scrollTop*c.y+E.y+v.y}}function Eo(n){return Array.from(n.getClientRects())}function mo(n){const r=j(n),o=Pe(n),i=n.ownerDocument.body,s=se(r.scrollWidth,r.clientWidth,i.scrollWidth,i.clientWidth),u=se(r.scrollHeight,r.clientHeight,i.scrollHeight,i.clientHeight);let l=-o.scrollLeft+Ke(n);const a=-o.scrollTop;return q(i).direction==="rtl"&&(l+=se(r.clientWidth,i.clientWidth)-s),{width:s,height:u,x:l,y:a}}function vo(n,r){const o=M(n),i=j(n),s=o.visualViewport;let u=i.clientWidth,l=i.clientHeight,a=0,d=0;if(s){u=s.width,l=s.height;const c=qe();(!c||c&&r==="fixed")&&(a=s.offsetLeft,d=s.offsetTop)}return{width:u,height:l,x:a,y:d}}function Oo(n,r){const o=ie(n,!0,r==="fixed"),i=o.top+n.clientTop,s=o.left+n.clientLeft,u=Z(n)?ce(n):Q(1),l=n.clientWidth*u.x,a=n.clientHeight*u.y,d=s*u.x,c=i*u.y;return{width:l,height:a,x:d,y:c}}function st(n,r,o){let i;if(r==="viewport")i=vo(n,o);else if(r==="document")i=mo(j(n));else if(W(r))i=Oo(r,o);else{const s=Dt(n);i={x:r.x-s.x,y:r.y-s.y,width:r.width,height:r.height}}return Ce(i)}function yt(n,r){const o=re(n);return o===r||!W(o)||de(o)?!1:q(o).position==="fixed"||yt(o,r)}function Ro(n,r){const o=r.get(n);if(o)return o;let i=Le(n,[],!1).filter(a=>W(a)&&le(a)!=="body"),s=null;const u=q(n).position==="fixed";let l=u?re(n):n;for(;W(l)&&!de(l);){const a=q(l),d=We(l);!d&&a.position==="fixed"&&(s=null),(u?!d&&!s:!d&&a.position==="static"&&!!s&&["absolute","fixed"].includes(s.position)||Ae(l)&&!d&&yt(n,l))?i=i.filter(E=>E!==l):s=a,l=re(l)}return r.set(n,i),i}function Lo(n){let{element:r,boundary:o,rootBoundary:i,strategy:s}=n;const l=[...o==="clippingAncestors"?ye(r)?[]:Ro(r,this._c):[].concat(o),i],a=l[0],d=l.reduce((c,E)=>{const f=st(r,E,s);return c.top=se(f.top,c.top),c.right=Ne(f.right,c.right),c.bottom=Ne(f.bottom,c.bottom),c.left=se(f.left,c.left),c},st(r,a,s));return{width:d.right-d.left,height:d.bottom-d.top,x:d.left,y:d.top}}function Ao(n){const{width:r,height:o}=Ft(n);return{width:r,height:o}}function To(n,r,o){const i=Z(r),s=j(r),u=o==="fixed",l=ie(n,!0,u,r);let a={scrollLeft:0,scrollTop:0};const d=Q(0);if(i||!i&&!u)if((le(r)!=="body"||Ae(s))&&(a=Pe(r)),i){const v=ie(r,!0,u,r);d.x=v.x+r.clientLeft,d.y=v.y+r.clientTop}else s&&(d.x=Ke(s));const c=s&&!i&&!u?Bt(s,a):Q(0),E=l.left+a.scrollLeft-d.x-c.x,f=l.top+a.scrollTop-d.y-c.y;return{x:E,y:f,width:l.width,height:l.height}}function _e(n){return q(n).position==="static"}function it(n,r){if(!Z(n)||q(n).position==="fixed")return null;if(r)return r(n);let o=n.offsetParent;return j(n)===o&&(o=o.ownerDocument.body),o}function Pt(n,r){const o=M(n);if(ye(n))return o;if(!Z(n)){let s=re(n);for(;s&&!de(s);){if(W(s)&&!_e(s))return s;s=re(s)}return o}let i=it(n,r);for(;i&&lo(i)&&_e(i);)i=it(i,r);return i&&de(i)&&_e(i)&&!We(i)?o:i||ao(n)||o}const Io=async function(n){const r=this.getOffsetParent||Pt,o=this.getDimensions,i=await o(n.floating);return{reference:To(n.reference,await r(n.floating),n.strategy),floating:{x:0,y:0,width:i.width,height:i.height}}};function po(n){return q(n).direction==="rtl"}const No={convertOffsetParentRelativeRectToViewportRelativeRect:fo,getDocumentElement:j,getClippingRect:Lo,getOffsetParent:Pt,getElementRects:Io,getClientRects:Eo,getDimensions:Ao,getScale:ce,isElement:W,isRTL:po};function bt(n,r){return n.x===r.x&&n.y===r.y&&n.width===r.width&&n.height===r.height}function go(n,r){let o=null,i;const s=j(n);function u(){var a;clearTimeout(i),(a=o)==null||a.disconnect(),o=null}function l(a,d){a===void 0&&(a=!1),d===void 0&&(d=1),u();const c=n.getBoundingClientRect(),{left:E,top:f,width:v,height:m}=c;if(a||r(),!v||!m)return;const O=Ie(f),A=Ie(s.clientWidth-(E+v)),L=Ie(s.clientHeight-(f+m)),T=Ie(E),N={rootMargin:-O+"px "+-A+"px "+-L+"px "+-T+"px",threshold:se(0,Ne(1,d))||1};let I=!0;function p(g){const C=g[0].intersectionRatio;if(C!==d){if(!I)return l();C?l(!1,C):i=setTimeout(()=>{l(!1,1e-7)},1e3)}C===1&&!bt(c,n.getBoundingClientRect())&&l(),I=!1}try{o=new IntersectionObserver(p,{...N,root:s.ownerDocument})}catch{o=new IntersectionObserver(p,N)}o.observe(n)}return l(!0),u}function Co(n,r,o,i){i===void 0&&(i={});const{ancestorScroll:s=!0,ancestorResize:u=!0,elementResize:l=typeof ResizeObserver=="function",layoutShift:a=typeof IntersectionObserver=="function",animationFrame:d=!1}=i,c=$e(n),E=s||u?[...c?Le(c):[],...Le(r)]:[];E.forEach(T=>{s&&T.addEventListener("scroll",o,{passive:!0}),u&&T.addEventListener("resize",o)});const f=c&&a?go(c,o):null;let v=-1,m=null;l&&(m=new ResizeObserver(T=>{let[R]=T;R&&R.target===c&&m&&(m.unobserve(r),cancelAnimationFrame(v),v=requestAnimationFrame(()=>{var N;(N=m)==null||N.observe(r)})),o()}),c&&!d&&m.observe(c),m.observe(r));let O,A=d?ie(n):null;d&&L();function L(){const T=ie(n);A&&!bt(A,T)&&o(),A=T,O=requestAnimationFrame(L)}return o(),()=>{var T;E.forEach(R=>{s&&R.removeEventListener("scroll",o),u&&R.removeEventListener("resize",o)}),f==null||f(),(T=m)==null||T.disconnect(),m=null,d&&cancelAnimationFrame(O)}}const lt=so,at=ro,ut=io,ho=(n,r,o)=>{const i=new Map,s={platform:No,...o},u={...s.platform,_c:i};return to(n,r,{...s,platform:u})};function So(n){return n!=null&&typeof n=="object"&&"$el"in n}function ct(n){if(So(n)){const r=n.$el;return ze(r)&&le(r)==="#comment"?null:r}return n}function me(n){return typeof n=="function"?n():e.unref(n)}function kt(n){return typeof window>"u"?1:(n.ownerDocument.defaultView||window).devicePixelRatio||1}function dt(n,r){const o=kt(n);return Math.round(r*o)/o}function Fo(n,r,o){o===void 0&&(o={});const i=o.whileElementsMounted,s=e.computed(()=>{var C;return(C=me(o.open))!=null?C:!0}),u=e.computed(()=>me(o.middleware)),l=e.computed(()=>{var C;return(C=me(o.placement))!=null?C:"bottom"}),a=e.computed(()=>{var C;return(C=me(o.strategy))!=null?C:"absolute"}),d=e.computed(()=>{var C;return(C=me(o.transform))!=null?C:!0}),c=e.computed(()=>ct(n.value)),E=e.computed(()=>ct(r.value)),f=e.ref(0),v=e.ref(0),m=e.ref(a.value),O=e.ref(l.value),A=e.shallowRef({}),L=e.ref(!1),T=e.computed(()=>{const C={position:m.value,left:"0",top:"0"};if(!E.value)return C;const w=dt(E.value,f.value),H=dt(E.value,v.value);return d.value?{...C,transform:"translate("+w+"px, "+H+"px)",...kt(E.value)>=1.5&&{willChange:"transform"}}:{position:m.value,left:w+"px",top:H+"px"}});let R;function N(){if(c.value==null||E.value==null)return;const C=s.value;ho(c.value,E.value,{middleware:u.value,placement:l.value,strategy:a.value}).then(w=>{f.value=w.x,v.value=w.y,m.value=w.strategy,O.value=w.placement,A.value=w.middlewareData,L.value=C!==!1})}function I(){typeof R=="function"&&(R(),R=void 0)}function p(){if(I(),i===void 0){N();return}if(c.value!=null&&E.value!=null){R=i(c.value,E.value,N);return}}function g(){s.value||(L.value=!1)}return e.watch([u,l,a,s],N,{flush:"sync"}),e.watch([c,E],p,{flush:"sync"}),e.watch(s,g,{flush:"sync"}),e.getCurrentScope()&&e.onScopeDispose(I),{x:e.shallowReadonly(f),y:e.shallowReadonly(v),strategy:e.shallowReadonly(m),placement:e.shallowReadonly(O),middlewareData:e.shallowReadonly(A),isPositioned:e.shallowReadonly(L),floatingStyles:T,update:N}}const Do=(n,r)=>!(Array.isArray(r)?r:[r]).some(i=>i.contains(n.target)),Bo=e.defineComponent({__name:"TidePopover",props:{anchorId:{},offset:{default:16}},setup(n){const r=n,o=e.ref(null),i=e.ref(null),s=e.ref(null),u=e.ref(!1),l=e.ref(!1),a=e.ref([at(),lt({mainAxis:r.offset}),ut({padding:16})]),d=e.computed(()=>u.value||l.value),{floatingStyles:c}=Fo(o,i,{middleware:a,strategy:"fixed",whileElementsMounted:Co}),E=I=>{!o.value||!i.value||Do(I,[o.value,i.value])&&(l.value=!1,I.preventDefault(),I.stopImmediatePropagation())},f=()=>{u.value=!0},v=()=>{u.value=!1},m=I=>{I.preventDefault(),l.value?(l.value=!1,u.value=!1):l.value=!0},O=()=>{if(!o.value)return null;o.value.addEventListener("mouseover",f),o.value.addEventListener("mouseleave",v),o.value.addEventListener("click",m)},A=()=>{if(!o.value)return null;o.value.removeEventListener("mouseover",f),o.value.removeEventListener("mouseleave",v),o.value.removeEventListener("click",m)},L=I=>{I.key==="Escape"&&(l.value=!1)},T=()=>{s.value&&(s.value.addEventListener("click",E,!0),s.value.addEventListener("keydown",L))},R=()=>{s.value&&(s.value.removeEventListener("click",E,!0),s.value.removeEventListener("keydown",L))},N=()=>{o.value=document.getElementById(r.anchorId)};return e.watch(()=>l.value,I=>{I?T():R()}),e.watch(()=>r.anchorId,()=>{A(),N(),O()}),e.watchEffect(()=>{a.value=[at(),lt({mainAxis:r.offset}),ut({padding:16})]}),e.onBeforeMount(()=>{Xe()}),e.onMounted(()=>{N(),s.value=document.documentElement,O()}),e.onUnmounted(()=>{A()}),(I,p)=>(e.openBlock(),e.createBlock(e.Teleport,{to:`#${e.unref(Re)}`},[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(I.$slots,"default",{},void 0,!0)],6),[[e.vShow,d.value]])]),_:3})],8,["to"]))}}),yo=F(Bo,[["__scopeId","data-v-508322dc"]]),Po={class:"tide-seo-links"},bo=["href","target"],ko=e.defineComponent({__name:"TideSeoLinks",props:{heading:{default:""},links:{}},setup(n){const r=n;return(o,i)=>(e.openBlock(),e.createElementBlock("section",Po,[e.createElementVNode("h2",{class:e.normalizeClass([e.unref(t).MARGIN.BOTTOM.HALF])},e.toDisplayString(r.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(r.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(z).BLANK:e.unref(z).SELF},e.toDisplayString(s.label),11,bo)],2))),128))],2)]))}}),Uo=F(ko,[["__scopeId","data-v-e655eb08"]]),_o=e.defineComponent({__name:"TideSheet",props:{isOpen:{type:Boolean},isBackButton:{type:Boolean}},emits:["back","close"],setup(n,{emit:r}){const o=n,i=r,s=e.ref(null),u=()=>{var c;(c=s.value)==null||c.showModal()},l=()=>{var c;(c=s.value)==null||c.close()},a=()=>{i("close")},d=c=>{c.preventDefault(),i("close")};return e.watch(()=>o.isOpen,c=>{s.value&&(c?u():l(),pt(c))}),e.onBeforeMount(()=>{Xe()}),e.onMounted(()=>{o.isOpen&&u()}),(c,E)=>(e.openBlock(),e.createBlock(e.Teleport,{to:`#${e.unref(Re)}`},[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(a,["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(Y,{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(V).QUATERNARY,onClick:E[0]||(E[0]=f=>i("back"))},null,8,["class","icon","priority"])):e.createCommentVNode("",!0),e.createVNode(Y,{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(V).QUATERNARY,onClick:E[1]||(E[1]=f=>i("close"))},null,8,["class","icon","priority"])],2),e.createVNode(pe),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"]))}}),Vo=F(_o,[["__scopeId","data-v-fb4090d4"]]),wo=["disabled"],Go=e.defineComponent({__name:"TideSwitch",props:{disabled:{type:Boolean,default:!1},isActive:{type:Boolean,default:!1}},emits:["change"],setup(n,{emit:r}){const o=n,i=r,s=()=>{o.disabled||i("change")};return(u,l)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["tide-switch",o.isActive?"active":"",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.FULL,o.isActive?"":e.unref(t).BORDER.COLOR.DEFAULT,e.unref(t).OVERFLOW.XY.HIDDEN,o.isActive?e.unref(t).BG.SECONDARY:e.unref(t).BG.SURFACE.DEFAULT]),disabled:o.disabled,onClick:s,"aria-label":"Switch",type:"button"},[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,o.isActive?e.unref(t).BG.SURFACE.DEFAULT:e.unref(t).BG.SECONDARY])},[e.createVNode(S,{icon:e.unref(h).CHECK,size:e.unref(P).LARGE},null,8,["icon","size"])],2)],10,wo))}}),xo=F(Go,[["__scopeId","data-v-5c084af4"]]);exports.ALERT=G;exports.BADGE_COLOR=X;exports.BADGE_COLOR_DETAILS=Ge;exports.BADGE_TRUSTED=Et;exports.BREAKPOINT=It;exports.CSS=t;exports.ELEMENT=b;exports.ELEMENT_BROAD=x;exports.FORMAT=nr;exports.FORMAT_REGEX=ae;exports.ICON=h;exports.ICON_REALM=Ht;exports.INPUT_MODE=ue;exports.MEDIA=Yr;exports.OBJECT_FIT=oe;exports.ORIENTATION=Ve;exports.PRIORITY=V;exports.REALM=ft;exports.SIZE=P;exports.SIZE_BUTTON=ve;exports.TARGET=z;exports.TEXT_INPUT_TYPE=U;exports.TYPE_CARD=Oe;exports.TideAccordionItem=zt;exports.TideAlert=qt;exports.TideBadge=$t;exports.TideBadgeTrustedPartner=Kt;exports.TideBadgeVerifiedVehicle=Zt;exports.TideBreadCrumbs=tn;exports.TideButton=nn;exports.TideButtonIcon=Y;exports.TideButtonPagination=mt;exports.TideButtonSegmented=ln;exports.TideCard=un;exports.TideCarousel=fn;exports.TideChipAction=mn;exports.TideChipFilter=On;exports.TideChipInput=Ln;exports.TideColumns=Cn;exports.TideDivider=pe;exports.TideForm=hn;exports.TideIcon=S;exports.TideImage=Rt;exports.TideImageBackground=yn;exports.TideIndicator=kn;exports.TideInputCheckbox=Mn;exports.TideInputCheckboxDeprecated=Wn;exports.TideInputRadio=Qn;exports.TideInputRadioDeprecated=tr;exports.TideInputSelect=dr;exports.TideInputSelectDeprecated=Nr;exports.TideInputText=Fr;exports.TideInputTextDeprecated=br;exports.TideInputTextarea=Vr;exports.TideInputTextareaDeprecated=Hr;exports.TideLink=we;exports.TideModal=Wr;exports.TidePagination=qr;exports.TidePopover=yo;exports.TideSeoLinks=Uo;exports.TideSheet=Vo;exports.TideSwitch=xo;exports.VALIDATOR=rr;exports.useTideForm=Ot;
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlkZS1kZXNpZ24tc3lzdGVtLmNqcyIsInNvdXJjZXMiOlsiLi4vc3JjL3R5cGVzL09yaWVudGF0aW9uLnRzIiwiLi4vc3JjL3R5cGVzL1N0eWxlcy50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVEaXZpZGVyLnZ1ZSIsIi4uL3NyYy90eXBlcy9SZWFsbS50cyIsIi4uL3NyYy90eXBlcy9TaXplLnRzIiwiLi4vc3JjL3V0aWxpdGllcy9mb3JtYXQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSWNvbi52dWUiLCIuLi9zcmMvdHlwZXMvSWNvbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVBY2NvcmRpb25JdGVtLnZ1ZSIsIi4uL3NyYy90eXBlcy9FbGVtZW50LnRzIiwiLi4vc3JjL3R5cGVzL1ByaW9yaXR5LnRzIiwiLi4vc3JjL3R5cGVzL1RhcmdldC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVMaW5rLnZ1ZSIsIi4uL3NyYy90eXBlcy9BbGVydC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVBbGVydC52dWUiLCIuLi9zcmMvdHlwZXMvQmFkZ2UudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQmFkZ2UudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUJhZGdlVHJ1c3RlZFBhcnRuZXIudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUJhZGdlVmVyaWZpZWRWZWhpY2xlLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCcmVhZENydW1icy52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQnV0dG9uLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCdXR0b25QYWdpbmF0aW9uLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCdXR0b25TZWdtZW50ZWQudnVlIiwiLi4vc3JjL3R5cGVzL0NhcmQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQ2FyZC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQ2Fyb3VzZWwudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUNoaXBBY3Rpb24udnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUNoaXBGaWx0ZXIudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUNoaXBJbnB1dC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQ29sdW1ucy52dWUiLCIuLi9zcmMvY29tcG9zYWJsZXMvdXNlVGlkZUZvcm0udHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlRm9ybS52dWUiLCIuLi9zcmMvdHlwZXMvSW1hZ2UudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW1hZ2UudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUltYWdlQmFja2dyb3VuZC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5kaWNhdG9yLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFN1cHBvcnRpbmdUZXh0LnZ1ZSIsIi4uL3NyYy91dGlsaXRpZXMvdmFsaWRhdGlvbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dENoZWNrYm94LnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dENoZWNrYm94RGVwcmVjYXRlZC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRSYWRpby52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRSYWRpb0RlcHJlY2F0ZWQudnVlIiwiLi4vc3JjL3R5cGVzL0Zvcm1hdHRlZC50cyIsIi4uL3NyYy90eXBlcy9WYWxpZGF0aW9uLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0U2VsZWN0LnZ1ZSIsIi4uL3NyYy91dGlsaXRpZXMvdmFsaWRhdGlvbi1kZXByZWNhdGVkLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0U2VsZWN0RGVwcmVjYXRlZC52dWUiLCIuLi9zcmMvdHlwZXMvVGV4dElucHV0LnRzIiwiLi4vc3JjL3V0aWxpdGllcy9mb3Jtcy50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFRleHQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0VGV4dERlcHJlY2F0ZWQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0VGV4dGFyZWEudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0VGV4dGFyZWFEZXByZWNhdGVkLnZ1ZSIsIi4uL3NyYy90eXBlcy9CcmVha3BvaW50LnRzIiwiLi4vc3JjL3V0aWxpdGllcy92aWV3cG9ydC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVNb2RhbC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlUGFnaW5hdGlvbi52dWUiLCIuLi9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL3V0aWxzL2Rpc3QvZmxvYXRpbmctdWkudXRpbHMubWpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbG9hdGluZy11aS9jb3JlL2Rpc3QvZmxvYXRpbmctdWkuY29yZS5tanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL3V0aWxzL2Rpc3QvZmxvYXRpbmctdWkudXRpbHMuZG9tLm1qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvZG9tL2Rpc3QvZmxvYXRpbmctdWkuZG9tLm1qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvdnVlL2Rpc3QvZmxvYXRpbmctdWkudnVlLm1qcyIsIi4uL3NyYy91dGlsaXRpZXMvZXZlbnQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlUG9wb3Zlci52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlU2VvTGlua3MudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZVNoZWV0LnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVTd2l0Y2gudnVlIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBPUklFTlRBVElPTiA9IHtcbiAgSE9SSVpPTlRBTDogJ2hvcml6b250YWwnLFxuICBWRVJUSUNBTDogJ3ZlcnRpY2FsJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIE9yaWVudGF0aW9uID0gKHR5cGVvZiBPUklFTlRBVElPTilba2V5b2YgdHlwZW9mIE9SSUVOVEFUSU9OXTtcbiIsIi8qIGVzbGludC1kaXNhYmxlIHZ1ZS9zb3J0LWtleXMgKi9cblxuaW1wb3J0IHR5cGUgeyBCcmVha3BvaW50IH0gZnJvbSAnQC90eXBlcy9CcmVha3BvaW50JztcblxuZXhwb3J0IGNvbnN0IENTUyA9IHtcbiAgd2l0aEJyZWFrcG9pbnQ6ICh1dGlsaXRpZXM6IHN0cmluZ1tdLCBicmVha3BvaW50OiBCcmVha3BvaW50KTogc3RyaW5nW10gPT4ge1xuICAgIHJldHVybiB1dGlsaXRpZXMubWFwKCh1dGlsaXR5KSA9PiBgJHticmVha3BvaW50fS0ke3V0aWxpdHl9YCk7XG4gIH0sXG4gIEFMSUdOOiB7XG4gICAgWDoge1xuICAgICAgQ0VOVEVSOiAndGlkZS10ZXh0LWNlbnRlcicsXG4gICAgICBKVVNUSUZZOiAndGlkZS10ZXh0LWp1c3RpZnknLFxuICAgICAgTEVGVDogJ3RpZGUtdGV4dC1sZWZ0JyxcbiAgICAgIFJJR0hUOiAndGlkZS10ZXh0LXJpZ2h0JyxcbiAgICB9LFxuICAgIFk6IHtcbiAgICAgIElOSVRJQUw6ICd0aWRlLWFsaWduLWluaXRpYWwnLFxuICAgICAgTUlERExFOiAndGlkZS1hbGlnbi1taWRkbGUnLFxuICAgIH0sXG4gIH0sXG4gIEFYSVMxOiB7XG4gICAgQVJPVU5EOiAndGlkZS1heGlzMS1hcm91bmQnLFxuICAgIEJFVFdFRU46ICd0aWRlLWF4aXMxLWJldHdlZW4nLFxuICAgIENFTlRFUjogJ3RpZGUtYXhpczEtY2VudGVyJyxcbiAgICBFTkQ6ICd0aWRlLWF4aXMxLWVuZCcsXG4gICAgU1RBUlQ6ICd0aWRlLWF4aXMxLXN0YXJ0JyxcbiAgfSxcbiAgQVhJUzI6IHtcbiAgICBBUk9VTkQ6ICd0aWRlLWF4aXMyLWFyb3VuZCcsXG4gICAgQ0VOVEVSOiAndGlkZS1heGlzMi1jZW50ZXInLFxuICAgIEVORDogJ3RpZGUtYXhpczItZW5kJyxcbiAgICBTVEFSVDogJ3RpZGUtYXhpczItc3RhcnQnLFxuICAgIFNUUkVUQ0g6ICd0aWRlLWF4aXMyLXN0cmV0Y2gnLFxuICB9LFxuICBCRzoge1xuICAgIEdMT0JBTDoge1xuICAgICAgUFJJTUFSWToge1xuICAgICAgICBFUlJPUjogJ3RpZGUtYmctcHJpbWFyeS1lcnJvcicsXG4gICAgICAgIElORk86ICd0aWRlLWJnLXByaW1hcnktaW5mbycsXG4gICAgICAgIFNVQ0NFU1M6ICd0aWRlLWJnLXByaW1hcnktc3VjY2VzcycsXG4gICAgICAgIFdBUk5JTkc6ICd0aWRlLWJnLXByaW1hcnktd2FybmluZycsXG4gICAgICB9LFxuICAgICAgU1VSRkFDRToge1xuICAgICAgICBFUlJPUjogJ3RpZGUtYmctc3VyZmFjZS1lcnJvcicsXG4gICAgICAgIElORk86ICd0aWRlLWJnLXN1cmZhY2UtaW5mbycsXG4gICAgICAgIFNVQ0NFU1M6ICd0aWRlLWJnLXN1cmZhY2Utc3VjY2VzcycsXG4gICAgICAgIFdBUk5JTkc6ICd0aWRlLWJnLXN1cmZhY2Utd2FybmluZycsXG5cbiAgICAgICAgQkxVRTogJ3RpZGUtYmctc3VyZmFjZS1ibHVlJyxcbiAgICAgICAgR1JFRU46ICd0aWRlLWJnLXN1cmZhY2UtZ3JlZW4nLFxuICAgICAgICBMSU1FOiAndGlkZS1iZy1zdXJmYWNlLWxpbWUnLFxuICAgICAgICBPUkFOR0U6ICd0aWRlLWJnLXN1cmZhY2Utb3JhbmdlJyxcbiAgICAgICAgUFVSUExFOiAndGlkZS1iZy1zdXJmYWNlLXB1cnBsZScsXG4gICAgICAgIFJFRDogJ3RpZGUtYmctc3VyZmFjZS1yZWQnLFxuICAgICAgICBTQUxNT046ICd0aWRlLWJnLXN1cmZhY2Utc2FsbW9uJyxcbiAgICAgICAgVEVBTDogJ3RpZGUtYmctc3VyZmFjZS10ZWFsJyxcbiAgICAgICAgWUVMTE9XOiAndGlkZS1iZy1zdXJmYWNlLXllbGxvdycsXG4gICAgICB9LFxuICAgIH0sXG4gICAgSU5JVElBTDogJ3RpZGUtYmctaW5pdGlhbCcsXG4gICAgQkxVUjogJ3RpZGUtYmctYmx1cicsXG4gICAgUFJJTUFSWTogJ3RpZGUtYmctcHJpbWFyeScsXG4gICAgU0VDT05EQVJZOiAndGlkZS1iZy1zZWNvbmRhcnknLFxuICAgIFNVUkZBQ0U6IHtcbiAgICAgIEFDQ0VOVDogJ3RpZGUtYmctc3VyZmFjZS1hY2NlbnQnLFxuICAgICAgQlJBTkQ6ICd0aWRlLWJnLXN1cmZhY2UtYnJhbmQnLFxuICAgICAgREVGQVVMVDogJ3RpZGUtYmctc3VyZmFjZScsXG4gICAgICBGTE9BVElORzogJ3RpZGUtYmctc3VyZmFjZS1mbG9hdGluZycsXG4gICAgICBHUkFESUVOVDogJ3RpZGUtYmctc3VyZmFjZS1ncmFkaWVudCcsXG4gICAgICBWQVJJQU5UOiAndGlkZS1iZy1zdXJmYWNlLXZhcmlhbnQnLFxuICAgIH0sXG4gICAgVFJBTlNQQVJFTlQ6IHtcbiAgICAgIE9ORV9IVU5EUkVEOiAndGlkZS10cmFuc3BhcmVudC0xMDAnLFxuICAgICAgVFdPX0hVTkRSRUQ6ICd0aWRlLXRyYW5zcGFyZW50LTIwMCcsXG4gICAgICBUSFJFRV9IVU5EUkVEOiAndGlkZS10cmFuc3BhcmVudC0zMDAnLFxuICAgICAgRk9VUl9IVU5EUkVEOiAndGlkZS10cmFuc3BhcmVudC00MDAnLFxuICAgIH0sXG4gIH0sXG4gIEJPUkRFUjoge1xuICAgIENPTE9SOiB7XG4gICAgICBHTE9CQUw6IHtcbiAgICAgICAgRVJST1I6ICd0aWRlLWJvcmRlci1lcnJvcicsXG4gICAgICAgIElORk86ICd0aWRlLWJvcmRlci1pbmZvJyxcbiAgICAgICAgU1VDQ0VTUzogJ3RpZGUtYm9yZGVyLXN1Y2Nlc3MnLFxuICAgICAgICBXQVJOSU5HOiAndGlkZS1ib3JkZXItd2FybmluZycsXG5cbiAgICAgICAgQkxVRTogJ3RpZGUtYm9yZGVyLWJsdWUnLFxuICAgICAgICBHUkVFTjogJ3RpZGUtYm9yZGVyLWdyZWVuJyxcbiAgICAgICAgTElNRTogJ3RpZGUtYm9yZGVyLWxpbWUnLFxuICAgICAgICBPUkFOR0U6ICd0aWRlLWJvcmRlci1vcmFuZ2UnLFxuICAgICAgICBQVVJQTEU6ICd0aWRlLWJvcmRlci1wdXJwbGUnLFxuICAgICAgICBSRUQ6ICd0aWRlLWJvcmRlci1yZWQnLFxuICAgICAgICBTQUxNT046ICd0aWRlLWJvcmRlci1zYWxtb24nLFxuICAgICAgICBURUFMOiAndGlkZS1ib3JkZXItdGVhbCcsXG4gICAgICAgIFlFTExPVzogJ3RpZGUtYm9yZGVyLXllbGxvdycsXG4gICAgICB9LFxuICAgICAgSU5JVElBTDogJ3RpZGUtYm9yZGVyLWNvbG9yLWluaXRpYWwnLFxuICAgICAgREVGQVVMVDogJ3RpZGUtYm9yZGVyJyxcbiAgICAgIEZMT0FUSU5HOiAndGlkZS1ib3JkZXItZmxvYXRpbmcnLFxuICAgICAgSElHSDogJ3RpZGUtYm9yZGVyLWhpZ2gnLFxuICAgICAgTE9XOiAndGlkZS1ib3JkZXItbG93JyxcbiAgICAgIFBSSU1BUlk6ICd0aWRlLWJvcmRlci1wcmltYXJ5JyxcbiAgICB9LFxuICAgIFJBRElVUzoge1xuICAgICAgWkVSTzogJ3RpZGUtcmFkaXVzLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcmFkaXVzLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1yYWRpdXMtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcmFkaXVzLTEnLFxuICAgICAgRlVMTDogJ3RpZGUtcmFkaXVzLWZ1bGwnLFxuICAgIH0sXG4gICAgU1RZTEU6IHtcbiAgICAgIERBU0hFRDogJ3RpZGUtYm9yZGVyLWRhc2hlZCcsXG4gICAgICBTT0xJRDogJ3RpZGUtYm9yZGVyLXNvbGlkJyxcbiAgICB9LFxuICAgIEJPVFRPTToge1xuICAgICAgWkVSTzogJ3RpZGUtYm9yZGVyLWJvdHRvbS0wJyxcbiAgICAgIE9ORTogJ3RpZGUtYm9yZGVyLWJvdHRvbS0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLWJvdHRvbS0yJyxcbiAgICB9LFxuICAgIEZVTEw6IHtcbiAgICAgIFpFUk86ICd0aWRlLWJvcmRlci0wJyxcbiAgICAgIE9ORTogJ3RpZGUtYm9yZGVyLTEnLFxuICAgICAgVFdPOiAndGlkZS1ib3JkZXItMicsXG4gICAgfSxcbiAgICBMRUZUOiB7XG4gICAgICBaRVJPOiAndGlkZS1ib3JkZXItbGVmdC0wJyxcbiAgICAgIE9ORTogJ3RpZGUtYm9yZGVyLWxlZnQtMScsXG4gICAgICBUV086ICd0aWRlLWJvcmRlci1sZWZ0LTInLFxuICAgIH0sXG4gICAgUklHSFQ6IHtcbiAgICAgIFpFUk86ICd0aWRlLWJvcmRlci1yaWdodC0wJyxcbiAgICAgIE9ORTogJ3RpZGUtYm9yZGVyLXJpZ2h0LTEnLFxuICAgICAgVFdPOiAndGlkZS1ib3JkZXItcmlnaHQtMicsXG4gICAgfSxcbiAgICBUT1A6IHtcbiAgICAgIFpFUk86ICd0aWRlLWJvcmRlci10b3AtMCcsXG4gICAgICBPTkU6ICd0aWRlLWJvcmRlci10b3AtMScsXG4gICAgICBUV086ICd0aWRlLWJvcmRlci10b3AtMicsXG4gICAgfSxcbiAgfSxcbiAgQk9YX1NJWklORzoge1xuICAgIEJPUkRFUl9CT1g6ICd0aWRlLWJveC1ib3JkZXInLFxuICAgIENPTlRFTlRfQk9YOiAndGlkZS1ib3gtY29udGVudCcsXG4gIH0sXG4gIEJSRUFLX0lOU0lERToge1xuICAgIEFWT0lEX0NPTFVNTjogJ3RpZGUtYnJlYWstaW5zaWRlLWF2b2lkLWNvbHVtbicsXG4gIH0sXG4gIEJSRUFLX1dPUkQ6IHtcbiAgICBPRkY6ICd0aWRlLWJyZWFrLWluaXRpYWwnLFxuICAgIE9OOiAndGlkZS1icmVhay13b3JkJyxcbiAgfSxcbiAgQ09MVU1OUzoge1xuICAgIElOSVRJQUw6ICd0aWRlLWNvbHVtbnMtaW5pdGlhbCcsXG4gICAgT05FOiAndGlkZS1jb2x1bW5zLTEnLFxuICAgIFRXTzogJ3RpZGUtY29sdW1ucy0yJyxcbiAgICBUSFJFRTogJ3RpZGUtY29sdW1ucy0zJyxcbiAgICBGT1VSOiAndGlkZS1jb2x1bW5zLTQnLFxuICB9LFxuICBDVVJTT1I6IHtcbiAgICBOT1RfQUxMT1dFRDogJ3RpZGUtY3Vyc29yLW5vdC1hbGxvd2VkJyxcbiAgICBQT0lOVEVSOiAndGlkZS1jdXJzb3ItcG9pbnRlcicsXG4gICAgVEVYVDogJ3RpZGUtY3Vyc29yLXRleHQnLFxuICB9LFxuICBESVNQTEFZOiB7XG4gICAgQkxPQ0s6ICd0aWRlLWRpc3BsYXktYmxvY2snLFxuICAgIENPTlRFTlRTOiAndGlkZS1kaXNwbGF5LWNvbnRlbnRzJyxcbiAgICBGTEVYOiAndGlkZS1kaXNwbGF5LWZsZXgnLFxuICAgIEdSSUQ6ICd0aWRlLWRpc3BsYXktZ3JpZCcsXG4gICAgSU5JVElBTDogJ3RpZGUtZGlzcGxheS1pbml0aWFsJyxcbiAgICBJTkxJTkU6ICd0aWRlLWRpc3BsYXktaW5saW5lJyxcbiAgICBJTkxJTkVfQkxPQ0s6ICd0aWRlLWRpc3BsYXktaW5saW5lLWJsb2NrJyxcbiAgICBJTkxJTkVfRkxFWDogJ3RpZGUtZGlzcGxheS1pbmxpbmUtZmxleCcsXG4gICAgTk9ORTogJ3RpZGUtZGlzcGxheS1ub25lJyxcbiAgfSxcbiAgRUxMSVBTSVM6ICd0aWRlLWVsbGlwc2lzJyxcbiAgRkxFWDoge1xuICAgIEJBU0lTOiB7XG4gICAgICBBVVRPOiAndGlkZS1mbGV4LWJhc2lzLWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtZmxleC1iYXNpcy0wJyxcbiAgICB9LFxuICAgIERJUkVDVElPTjoge1xuICAgICAgQ09MVU1OOiAndGlkZS1mbGV4LWNvbHVtbicsXG4gICAgICBDT0xVTU5fUkVWRVJTRTogJ3RpZGUtZmxleC1jb2x1bW4tcmV2ZXJzZScsXG4gICAgICBST1c6ICd0aWRlLWZsZXgtcm93JyxcbiAgICAgIFJPV19SRVZFUlNFOiAndGlkZS1mbGV4LXJvdy1yZXZlcnNlJyxcbiAgICB9LFxuICAgIEdST1c6IHtcbiAgICAgIE9GRjogJ3RpZGUtZ3Jvdy1ub25lJyxcbiAgICAgIE9OOiAndGlkZS1ncm93JyxcbiAgICB9LFxuICAgIFNIUklOSzoge1xuICAgICAgT0ZGOiAndGlkZS1zaHJpbmstbm9uZScsXG4gICAgICBPTjogJ3RpZGUtc2hyaW5rJyxcbiAgICB9LFxuICAgIFdSQVA6ICd0aWRlLWZsZXgtd3JhcCcsXG4gIH0sXG4gIEZPTlQ6IHtcbiAgICBDT0xPUjoge1xuICAgICAgR0xPQkFMOiB7XG4gICAgICAgIEVSUk9SOiAndGlkZS1mb250LWVycm9yJyxcbiAgICAgICAgSU5GTzogJ3RpZGUtZm9udC1pbmZvJyxcbiAgICAgICAgU1VDQ0VTUzogJ3RpZGUtZm9udC1zdWNjZXNzJyxcbiAgICAgICAgV0FSTklORzogJ3RpZGUtZm9udC13YXJuaW5nJyxcblxuICAgICAgICBCTFVFOiAndGlkZS1mb250LWJsdWUnLFxuICAgICAgICBHUkVFTjogJ3RpZGUtZm9udC1ncmVlbicsXG4gICAgICAgIExJTUU6ICd0aWRlLWZvbnQtbGltZScsXG4gICAgICAgIE9SQU5HRTogJ3RpZGUtZm9udC1vcmFuZ2UnLFxuICAgICAgICBQVVJQTEU6ICd0aWRlLWZvbnQtcHVycGxlJyxcbiAgICAgICAgUkVEOiAndGlkZS1mb250LXJlZCcsXG4gICAgICAgIFNBTE1PTjogJ3RpZGUtZm9udC1zYWxtb24nLFxuICAgICAgICBURUFMOiAndGlkZS1mb250LXRlYWwnLFxuICAgICAgICBZRUxMT1c6ICd0aWRlLWZvbnQteWVsbG93JyxcblxuICAgICAgICBQUklNQVJZOiB7XG4gICAgICAgICAgQkxVRTogJ3RpZGUtZm9udC1wcmltYXJ5LWJsdWUnLFxuICAgICAgICAgIEdSRUVOOiAndGlkZS1mb250LXByaW1hcnktZ3JlZW4nLFxuICAgICAgICAgIExJTUU6ICd0aWRlLWZvbnQtcHJpbWFyeS1saW1lJyxcbiAgICAgICAgICBPUkFOR0U6ICd0aWRlLWZvbnQtcHJpbWFyeS1vcmFuZ2UnLFxuICAgICAgICAgIFBVUlBMRTogJ3RpZGUtZm9udC1wcmltYXJ5LXB1cnBsZScsXG4gICAgICAgICAgUkVEOiAndGlkZS1mb250LXByaW1hcnktcmVkJyxcbiAgICAgICAgICBTQUxNT046ICd0aWRlLWZvbnQtcHJpbWFyeS1zYWxtb24nLFxuICAgICAgICAgIFRFQUw6ICd0aWRlLWZvbnQtcHJpbWFyeS10ZWFsJyxcbiAgICAgICAgICBZRUxMT1c6ICd0aWRlLWZvbnQtcHJpbWFyeS15ZWxsb3cnLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIFBSSU1BUlk6ICd0aWRlLWZvbnQtb24tcHJpbWFyeScsXG4gICAgICBTRUNPTkRBUlk6ICd0aWRlLWZvbnQtb24tc2Vjb25kYXJ5JyxcbiAgICAgIFNVUkZBQ0U6IHtcbiAgICAgICAgQlJBTkQ6ICd0aWRlLWZvbnQtb24tc3VyZmFjZS1icmFuZCcsXG4gICAgICAgIERFRkFVTFQ6ICd0aWRlLWZvbnQtb24tc3VyZmFjZScsXG4gICAgICAgIElOVkVSU0U6ICd0aWRlLWZvbnQtb24tc3VyZmFjZS1pbnZlcnNlJyxcbiAgICAgICAgVkFSSUFOVDogJ3RpZGUtZm9udC1vbi1zdXJmYWNlLXZhcmlhbnQnLFxuICAgICAgICBWQVJJQU5UX0lOVkVSU0U6ICd0aWRlLWZvbnQtb24tc3VyZmFjZS12YXJpYW50LWludmVyc2UnLFxuICAgICAgfSxcbiAgICB9LFxuICAgIFJPTEU6IHtcbiAgICAgIERJU1BMQVlfMTogJ3RpZGUtdHlwb2dyYXBoeS1kaXNwbGF5LTEnLFxuICAgICAgSEVBRExJTkVfMTogJ3RpZGUtdHlwb2dyYXBoeS1oZWFkbGluZS0xJyxcbiAgICAgIEhFQURMSU5FXzI6ICd0aWRlLXR5cG9ncmFwaHktaGVhZGxpbmUtMicsXG4gICAgICBIRUFETElORV8zOiAndGlkZS10eXBvZ3JhcGh5LWhlYWRsaW5lLTMnLFxuICAgICAgVElUTEVfMTogJ3RpZGUtdHlwb2dyYXBoeS10aXRsZS0xJyxcbiAgICAgIFRJVExFXzI6ICd0aWRlLXR5cG9ncmFwaHktdGl0bGUtMicsXG4gICAgICBCT0RZXzE6ICd0aWRlLXR5cG9ncmFwaHktYm9keS0xJyxcbiAgICAgIEJPRFlfMjogJ3RpZGUtdHlwb2dyYXBoeS1ib2R5LTInLFxuICAgICAgTEFCRUxfMTogJ3RpZGUtdHlwb2dyYXBoeS1sYWJlbC0xJyxcbiAgICAgIExBQkVMXzFfU0VNSUJPTEQ6ICd0aWRlLXR5cG9ncmFwaHktbGFiZWwtMS1zZW1pYm9sZCcsXG4gICAgICBMQUJFTF8yOiAndGlkZS10eXBvZ3JhcGh5LWxhYmVsLTInLFxuICAgICAgTEFCRUxfMl9TRU1JQk9MRDogJ3RpZGUtdHlwb2dyYXBoeS1sYWJlbC0yLXNlbWlib2xkJyxcbiAgICAgIExBQkVMXzM6ICd0aWRlLXR5cG9ncmFwaHktbGFiZWwtMycsXG4gICAgICBMSU5LXzE6ICd0aWRlLXR5cG9ncmFwaHktbGluay0xJyxcbiAgICAgIExJTktfMjogJ3RpZGUtdHlwb2dyYXBoeS1saW5rLTInLFxuICAgICAgTElOS18zOiAndGlkZS10eXBvZ3JhcGh5LWxpbmstMycsXG4gICAgICBCVVRUT05fMTogJ3RpZGUtdHlwb2dyYXBoeS1idXR0b24tMScsXG4gICAgICBCVVRUT05fMjogJ3RpZGUtdHlwb2dyYXBoeS1idXR0b24tMicsXG4gICAgfSxcbiAgICBTSVpFOiB7XG4gICAgICBUV0VMVkU6ICd0aWRlLWZvbnQtMTInLFxuICAgICAgRk9VUlRFRU46ICd0aWRlLWZvbnQtMTQnLFxuICAgICAgU0lYVEVFTjogJ3RpZGUtZm9udC0xNicsXG4gICAgICBUV0VOVFk6ICd0aWRlLWZvbnQtMjAnLFxuICAgICAgVFdFTlRZX0ZPVVI6ICd0aWRlLWZvbnQtMjQnLFxuICAgICAgVEhJUlRZX1RXTzogJ3RpZGUtZm9udC0zMicsXG4gICAgfSxcbiAgICBXRUlHSFQ6IHtcbiAgICAgIEZPVVJfSFVORFJFRDogJ3RpZGUtZm9udC00MDAnLFxuICAgICAgRklWRV9IVU5EUkVEOiAndGlkZS1mb250LTUwMCcsXG4gICAgICBTSVhfSFVORFJFRDogJ3RpZGUtZm9udC02MDAnLFxuICAgICAgU0VWRU5fSFVORFJFRDogJ3RpZGUtZm9udC03MDAnLFxuICAgIH0sXG4gIH0sXG4gIEdBUDoge1xuICAgIFpFUk86ICd0aWRlLWdhcC0wJyxcbiAgICBRVUFSVEVSOiAndGlkZS1nYXAtMS80JyxcbiAgICBIQUxGOiAndGlkZS1nYXAtMS8yJyxcbiAgICBPTkU6ICd0aWRlLWdhcC0xJyxcbiAgICBUV086ICd0aWRlLWdhcC0yJyxcbiAgICBGT1VSOiAndGlkZS1nYXAtNCcsXG4gIH0sXG4gIEdSSUQ6IHtcbiAgICBGTFVJRDogJ3RpZGUtZmx1aWQnLFxuICAgIElURU06ICd0aWRlLWdyaWQtaXRlbScsXG4gICAgTEFZT1VUOiAndGlkZS1ncmlkLWxheW91dCcsXG4gICAgWEw6ICd0aWRlLWdyaWQteGwnLFxuICB9LFxuICBIRUlHSFQ6IHtcbiAgICBBVVRPOiAndGlkZS1oZWlnaHQtYXV0bycsXG4gICAgWkVSTzogJ3RpZGUtaGVpZ2h0LTAnLFxuICAgIEZVTEw6ICd0aWRlLWhlaWdodC1mdWxsJyxcbiAgICBNQVhfRlVMTDogJ3RpZGUtbWF4LWhlaWdodC1mdWxsJyxcbiAgICBNSU5fWkVSTzogJ3RpZGUtbWluLWhlaWdodC0wJyxcbiAgfSxcbiAgSVNPTEFUSU9OOiB7XG4gICAgSVNPTEFURTogJ3RpZGUtaXNvbGF0ZScsXG4gIH0sXG4gIExJU1RfQlVMTEVUUzoge1xuICAgIE9GRjogJ3RpZGUtbGlzdC1ub25lJyxcbiAgfSxcbiAgTUFSR0lOOiB7XG4gICAgQk9UVE9NOiB7XG4gICAgICBBVVRPOiAndGlkZS1tYXJnaW4tYm90dG9tLWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLWJvdHRvbS0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi1ib3R0b20tMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi1ib3R0b20tMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLWJvdHRvbS0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLWJvdHRvbS0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi1ib3R0b20tNCcsXG4gICAgfSxcbiAgICBGVUxMOiB7XG4gICAgICBaRVJPOiAndGlkZS1tYXJnaW4tMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4tMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4tMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi00JyxcbiAgICB9LFxuICAgIExFRlQ6IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi1sZWZ0LWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLWxlZnQtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4tbGVmdC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLWxlZnQtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLWxlZnQtMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi1sZWZ0LTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLWxlZnQtNCcsXG4gICAgfSxcbiAgICBSSUdIVDoge1xuICAgICAgQVVUTzogJ3RpZGUtbWFyZ2luLXJpZ2h0LWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLXJpZ2h0LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLXJpZ2h0LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4tcmlnaHQtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLXJpZ2h0LTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4tcmlnaHQtMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4tcmlnaHQtNCcsXG4gICAgfSxcbiAgICBUT1A6IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi10b3AtYXV0bycsXG4gICAgICBaRVJPOiAndGlkZS1tYXJnaW4tdG9wLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLXRvcC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLXRvcC0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4tdG9wLTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4tdG9wLTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLXRvcC00JyxcbiAgICB9LFxuICAgIFg6IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi14LWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLXgtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4teC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLXgtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLXgtMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi14LTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLXgtNCcsXG4gICAgfSxcbiAgICBZOiB7XG4gICAgICBaRVJPOiAndGlkZS1tYXJnaW4teS0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi15LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4teS0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4teS0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLXktMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4teS00JyxcbiAgICB9LFxuICB9LFxuICBPQkpFQ1Q6IHtcbiAgICBDRU5URVI6ICd0aWRlLW9iamVjdC1jZW50ZXInLFxuICAgIENPTlRBSU46ICd0aWRlLW9iamVjdC1jb250YWluJyxcbiAgICBDT1ZFUjogJ3RpZGUtb2JqZWN0LWNvdmVyJyxcbiAgICBTQ0FMRV9ET1dOOiAndGlkZS1vYmplY3Qtc2NhbGUtZG93bicsXG4gIH0sXG4gIE9QQUNJVFk6IHtcbiAgICBESVNBQkxFRDogJ3RpZGUtb3BhY2l0eS1kaXNhYmxlZCcsXG4gICAgT0ZGOiAndGlkZS1vcGFjaXR5LW5vbmUnLFxuICAgIE9OOiAndGlkZS1vcGFjaXR5JyxcbiAgfSxcbiAgT1ZFUkZMT1c6IHtcbiAgICBYOiB7XG4gICAgICBBVVRPOiAndGlkZS14LWF1dG8nLFxuICAgICAgSElEREVOOiAndGlkZS14LWhpZGRlbicsXG4gICAgICBTQ1JPTEw6ICd0aWRlLXgtc2Nyb2xsJyxcbiAgICB9LFxuICAgIFhZOiB7XG4gICAgICBBVVRPOiAndGlkZS14eS1hdXRvJyxcbiAgICAgIEhJRERFTjogJ3RpZGUteHktaGlkZGVuJyxcbiAgICB9LFxuICAgIFk6IHtcbiAgICAgIEFVVE86ICd0aWRlLXktYXV0bycsXG4gICAgICBISURERU46ICd0aWRlLXktaGlkZGVuJyxcbiAgICB9LFxuICB9LFxuICBQQURESU5HOiB7XG4gICAgQk9UVE9NOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLWJvdHRvbS0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmctYm90dG9tLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLWJvdHRvbS0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLWJvdHRvbS0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy1ib3R0b20tMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLWJvdHRvbS00JyxcbiAgICB9LFxuICAgIEZVTEw6IHtcbiAgICAgIFpFUk86ICd0aWRlLXBhZGRpbmctMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmctMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmctMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLTQnLFxuICAgIH0sXG4gICAgTEVGVDoge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy1sZWZ0LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy1sZWZ0LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLWxlZnQtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy1sZWZ0LTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLWxlZnQtMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLWxlZnQtNCcsXG4gICAgfSxcbiAgICBSSUdIVDoge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy1yaWdodC0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmctcmlnaHQtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctcmlnaHQtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy1yaWdodC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy1yaWdodC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctcmlnaHQtNCcsXG4gICAgfSxcbiAgICBUT1A6IHtcbiAgICAgIFpFUk86ICd0aWRlLXBhZGRpbmctdG9wLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy10b3AtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctdG9wLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmctdG9wLTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLXRvcC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctdG9wLTQnLFxuICAgIH0sXG4gICAgWDoge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy14LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy14LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLXgtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy14LTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLXgtMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLXgtNCcsXG4gICAgfSxcbiAgICBZOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLXktMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLXktMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmcteS0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLXktMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmcteS0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmcteS00JyxcbiAgICB9LFxuICB9LFxuICBQT0lOVEVSX0VWRU5UUzoge1xuICAgIE9GRjogJ3RpZGUtcG9pbnRlci1ldmVudHMtbm9uZScsXG4gICAgT046ICd0aWRlLXBvaW50ZXItZXZlbnRzJyxcbiAgfSxcbiAgUE9TSVRJT046IHtcbiAgICBBQlNPTFVURTogJ3RpZGUtcG9zaXRpb24tYWJzb2x1dGUnLFxuICAgIEZJWEVEOiAndGlkZS1wb3NpdGlvbi1maXhlZCcsXG4gICAgUkVMQVRJVkU6ICd0aWRlLXBvc2l0aW9uLXJlbGF0aXZlJyxcbiAgICBTVEFUSUM6ICd0aWRlLXBvc2l0aW9uLXN0YXRpYycsXG4gICAgU1RJQ0tZOiAndGlkZS1wb3NpdGlvbi1zdGlja3knLFxuICB9LFxuICBQT1NJVElPTklORzoge1xuICAgIEJPVFRPTTogJ3RpZGUtYm90dG9tLTAnLFxuICAgIExFRlQ6ICd0aWRlLWxlZnQtMCcsXG4gICAgUklHSFQ6ICd0aWRlLXJpZ2h0LTAnLFxuICAgIFRPUDogJ3RpZGUtdG9wLTAnLFxuICB9LFxuICBSQVRJTzoge1xuICAgIE9ORV9UT19PTkU6ICd0aWRlLXJhdGlvLTEvMScsXG4gICAgU0lYVEVFTl9UT19OSU5FOiAndGlkZS1yYXRpby0xNi85JyxcbiAgICBUSFJFRV9UT19UV086ICd0aWRlLXJhdGlvLTMvMicsXG4gIH0sXG4gIFNDUk9MTEJBUjoge1xuICAgIE9GRjogJ3RpZGUtc2Nyb2xsYmFyLW5vbmUnLFxuICB9LFxuICBTSEFET1c6IHtcbiAgICBJTklUSUFMOiAndGlkZS1zaGFkb3ctaW5pdGlhbCcsXG4gICAgQk9UVE9NOiAndGlkZS1zaGFkb3ctYm90dG9tJyxcbiAgICBUT1A6ICd0aWRlLXNoYWRvdy10b3AnLFxuICAgIFRFWFQ6ICd0aWRlLXNoYWRvdy10ZXh0JyxcbiAgfSxcbiAgU05BUDoge1xuICAgIE9OOiAndGlkZS1zY3JvbGwtc25hcCcsXG4gIH0sXG4gIFNOQVBfQUxJR046IHtcbiAgICBTVEFSVDogJ3RpZGUtc2Nyb2xsLXNuYXAtc3RhcnQnLFxuICB9LFxuICBTVFJJS0VUSFJPVUdIOiB7XG4gICAgT0ZGOiAndGlkZS1zdHJpa2V0aHJvdWdoLW5vbmUnLFxuICAgIE9OOiAndGlkZS1zdHJpa2V0aHJvdWdoJyxcbiAgfSxcbiAgVEVYVF9UUkFOU0ZPUk06IHtcbiAgICBMT1dFUjogJ3RpZGUtdGV4dC10cmFuc2Zvcm0tbG93ZXInLFxuICAgIE5PTkU6ICd0aWRlLXRleHQtdHJhbnNmb3JtLW5vbmUnLFxuICAgIFVQUEVSOiAndGlkZS10ZXh0LXRyYW5zZm9ybS11cHBlcicsXG4gIH0sXG4gIFVOREVSTElORToge1xuICAgIEhPVkVSOiB7XG4gICAgICBPTjogJ3RpZGUtdW5kZXJsaW5lLWhvdmVyJyxcbiAgICAgIE9GRjogJ3RpZGUtdW5kZXJsaW5lLWhvdmVyLW5vbmUnLFxuICAgIH0sXG4gICAgUkVTVDoge1xuICAgICAgT046ICd0aWRlLXVuZGVybGluZScsXG4gICAgICBPRkY6ICd0aWRlLXVuZGVybGluZS1ub25lJyxcbiAgICB9LFxuICB9LFxuICBVU0VSX1NFTEVDVDoge1xuICAgIElOSVRJQUw6ICd0aWRlLXVzZXItc2VsZWN0LWluaXRpYWwnLFxuICAgIE5PTkU6ICd0aWRlLXVzZXItc2VsZWN0LW5vbmUnLFxuICB9LFxuICBWSVNJQklMSVRZOiB7XG4gICAgT0ZGOiAndGlkZS12aXNpYmxlLW5vbmUnLFxuICAgIE9OOiAndGlkZS12aXNpYmxlJyxcbiAgfSxcbiAgV0hJVEVTUEFDRV9XUkFQOiB7XG4gICAgT0ZGOiAndGlkZS13aGl0ZXNwYWNlLW5vd3JhcCcsXG4gIH0sXG4gIFdJRFRIOiB7XG4gICAgQVVUTzogJ3RpZGUtd2lkdGgtYXV0bycsXG4gICAgWkVSTzogJ3RpZGUtd2lkdGgtMCcsXG4gICAgRlVMTDogJ3RpZGUtd2lkdGgtZnVsbCcsXG4gICAgTUFYX0ZVTEw6ICd0aWRlLW1heC13aWR0aC1mdWxsJyxcbiAgICBNSU5fWkVSTzogJ3RpZGUtbWluLXdpZHRoLTAnLFxuICB9LFxuICBaX0lOREVYOiB7XG4gICAgSU5JVElBTDogJ3RpZGUtei1pbmRleC1pbml0aWFsJyxcbiAgICBPTkU6ICd0aWRlLXotaW5kZXgtMScsXG4gIH0sXG59IGFzIGNvbnN0O1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgT1JJRU5UQVRJT04gfSBmcm9tICdAL3R5cGVzL09yaWVudGF0aW9uJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgT3JpZW50YXRpb24gfSBmcm9tICdAL3R5cGVzL09yaWVudGF0aW9uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIG9yaWVudGF0aW9uPzogT3JpZW50YXRpb247XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBvcmllbnRhdGlvbjogT1JJRU5UQVRJT04uSE9SSVpPTlRBTCxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1kaXZpZGVyJ11cIj5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgIENTUy5CT1JERVIuQ09MT1IuTE9XLFxuICAgICAgICBwcm9wcy5vcmllbnRhdGlvbiA9PT0gT1JJRU5UQVRJT04uSE9SSVpPTlRBTFxuICAgICAgICAgID8gW0NTUy5NQVJHSU4uWS5IQUxGLCBDU1MuQk9SREVSLkJPVFRPTS5PTkUsIENTUy5XSURUSC5GVUxMXVxuICAgICAgICAgIDogW0NTUy5NQVJHSU4uWC5IQUxGLCBDU1MuQk9SREVSLlJJR0hULk9ORSwgQ1NTLkhFSUdIVC5GVUxMXSxcbiAgICAgIF1cIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtZGl2aWRlciB7XG4gICAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbiAgfVxuPC9zdHlsZT5cbiIsImV4cG9ydCBjb25zdCBSRUFMTSA9IHtcbiAgQUVSTzogJ2Flcm8nLFxuICBBVFY6ICdhdHYnLFxuICBCT0FUTUFSVDogJ2JvYXRtYXJ0JyxcbiAgQ1lDTEU6ICdjeWNsZScsXG4gIEVRVUlQTUVOVDogJ2VxdWlwbWVudCcsXG4gIFBXQzogJ3B3YycsXG4gIFJWOiAncnYnLFxuICBTTk9XOiAnc25vdycsXG4gIFRSVUNLOiAndHJ1Y2snLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgUmVhbG1LZXkgPSBrZXlvZiB0eXBlb2YgUkVBTE07XG5leHBvcnQgdHlwZSBSZWFsbSA9ICh0eXBlb2YgUkVBTE0pW1JlYWxtS2V5XTtcbiIsImV4cG9ydCBjb25zdCBTSVpFID0ge1xuICBMQVJHRTogJ2xhcmdlJyxcbiAgU01BTEw6ICdzbWFsbCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBTaXplID0gKHR5cGVvZiBTSVpFKVtrZXlvZiB0eXBlb2YgU0laRV07XG5cbmV4cG9ydCBjb25zdCBTSVpFX0JVVFRPTiA9IHtcbiAgTEFSR0U6ICdsYXJnZScsXG4gIFNNQUxMOiAnc21hbGwnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgU2l6ZUJ1dHRvbiA9ICh0eXBlb2YgU0laRSlba2V5b2YgdHlwZW9mIFNJWkVdO1xuIiwiY29uc3QgY2FwaXRhbGl6ZUZpcnN0ID0gKHN0cmluZzogc3RyaW5nKSA9PiB7XG4gIHJldHVybiBzdHJpbmcuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzdHJpbmcuc2xpY2UoMSk7XG59O1xuXG5jb25zdCBmb3JtYXRDYW1lbENhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnXG4gICAgPyBpbnB1dFxuICAgICAgICAucmVwbGFjZSgvXltcXHNfLV0vLCAnJylcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJylcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLm1hcCgod29yZCwgaW5kZXgpID0+IChpbmRleCA9PT0gMCA/IHdvcmQgOiB3b3JkLnNsaWNlKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyB3b3JkLnNsaWNlKDEpKSlcbiAgICAgICAgLmpvaW4oJycpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdEtlYmFiQ2FzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZydcbiAgICA/IGlucHV0XG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnLScpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdExhYmVsID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgbGFiZWxNYXA6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgZmFsc2U6ICdObycsXG4gICAgdHJ1ZTogJ1llcycsXG4gIH07XG4gIHJldHVybiBPYmplY3QuaGFzT3duKGxhYmVsTWFwLCB2YWx1ZSkgPyBsYWJlbE1hcFt2YWx1ZV0gOiB2YWx1ZTtcbn07XG5cbmNvbnN0IGZvcm1hdE51bWJlciA9IChpbnB1dDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgbGV0IG91dHB1dCA9IGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ251bWJlcicgPyBuZXcgSW50bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQoaW5wdXQpIDogU3RyaW5nKGlucHV0IHx8ICcnKTtcbiAgbGV0IGRpZ2l0cyA9IG91dHB1dDtcblxuICBpZiAoaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgIGRpZ2l0cyA9IGRpZ2l0cy5yZXBsYWNlKC9cXEQvZywgJycpO1xuICAgIGlmIChOdW1iZXIoZGlnaXRzKSkge1xuICAgICAgb3V0cHV0ID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0KE51bWJlcihkaWdpdHMpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0cHV0ID0gJzAnO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvdXRwdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRQYXNjYWxDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJylcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLm1hcCgod29yZCkgPT4gd29yZC5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKSlcbiAgICAgICAgLmpvaW4oJycpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdFBob25lID0gKGlucHV0OiBudW1iZXIgfCBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBsZXQgb3V0cHV0ID0gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnbnVtYmVyJyA/IFN0cmluZyhpbnB1dCkgOiBTdHJpbmcoaW5wdXQgfHwgJycpO1xuICBsZXQgZGlnaXRzID0gb3V0cHV0O1xuICBkaWdpdHMgPSBkaWdpdHMucmVwbGFjZSgvXFxEL2csICcnKTtcblxuICBzd2l0Y2ggKGRpZ2l0cy5sZW5ndGgpIHtcbiAgICBjYXNlIDc6XG4gICAgICBvdXRwdXQgPSBgJHtkaWdpdHMuc2xpY2UoMCwgMyl9LSR7ZGlnaXRzLnNsaWNlKDMpfWA7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDEwOlxuICAgICAgb3V0cHV0ID0gYCR7ZGlnaXRzLnNsaWNlKDAsIDMpfS0ke2RpZ2l0cy5zbGljZSgzLCA2KX0tJHtkaWdpdHMuc2xpY2UoNil9YDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTE6XG4gICAgICBvdXRwdXQgPSBgJHtkaWdpdHMuc2xpY2UoMCwgMSl9LSR7ZGlnaXRzLnNsaWNlKDEsIDQpfS0ke2RpZ2l0cy5zbGljZSg0LCA3KX0tJHtkaWdpdHMuc2xpY2UoNyl9YDtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBvdXRwdXQgPSBkaWdpdHM7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIHJldHVybiBvdXRwdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRQcmljZSA9IChpbnB1dDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3Qgb3V0cHV0ID0gaW5wdXQgPyBmb3JtYXROdW1iZXIoaW5wdXQpIDogU3RyaW5nKGlucHV0IHx8ICcwJyk7XG4gIHJldHVybiBgJCR7b3V0cHV0fWA7XG59O1xuXG5jb25zdCBmb3JtYXRRdW90ZXMgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICBpZiAodmFsdWUuc3RhcnRzV2l0aCgnXCInKSAmJiB2YWx1ZS5lbmRzV2l0aCgnXCInKSkge1xuICAgIHJldHVybiB2YWx1ZS5zbGljZSgxLCAtMSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59O1xuXG5jb25zdCBmb3JtYXRTZW50ZW5jZUNhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGxldCBzZW50ZW5jZUNhc2UgPSBpbnB1dDtcblxuICBpZiAoaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgIGNvbnN0IGxvd2VyQ2FzZSA9IGlucHV0XG4gICAgICAucmVwbGFjZSgvKFthLXpdezF9KShbQS1aXXsxfSkvZywgJyQxICQyJylcbiAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnICcpO1xuXG4gICAgc2VudGVuY2VDYXNlID0gbG93ZXJDYXNlLnNsaWNlKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyBsb3dlckNhc2Uuc2xpY2UoMSk7XG4gIH1cblxuICByZXR1cm4gc2VudGVuY2VDYXNlO1xufTtcblxuY29uc3QgZm9ybWF0U25ha2VDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICdfJylcbiAgICA6IGlucHV0O1xufTtcblxuY29uc3QgZm9ybWF0VGl0bGVDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJylcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLm1hcCgod29yZCkgPT4gd29yZC5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKSlcbiAgICAgICAgLmpvaW4oJyAnKVxuICAgIDogaW5wdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRVcmxGcm9tUm9vdCA9ICh1cmw6IHN0cmluZykgPT4ge1xuICBjb25zdCB1cmxGb3JtYXR0ZWQgPSB1cmwuc3BsaXQoJy5jb20vJyk7XG5cbiAgcmV0dXJuIHVybEZvcm1hdHRlZC5sZW5ndGggPiAxID8gYC8ke3VybEZvcm1hdHRlZFsxXX1gIDogdXJsO1xufTtcblxuY29uc3QgZm9ybWF0V2VpZ2h0ID0gKGlucHV0OiBudW1iZXIgfCBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBvdXRwdXQgPSBpbnB1dCA/IGZvcm1hdE51bWJlcihpbnB1dCkgOiBTdHJpbmcoaW5wdXQgfHwgJzAnKTtcbiAgcmV0dXJuIGAke291dHB1dH0gbGJzYDtcbn07XG5cbmNvbnN0IGdldEFydGljbGUgPSAobm91bjogc3RyaW5nLCBpc1BsdXJhbCA9IGZhbHNlLCBpc0RlZmluaXRlID0gZmFsc2UpID0+IHtcbiAgY29uc3Qgdm93ZWxzID0gWydhJywgJ2UnLCAnaScsICdvJywgJ3UnXTtcbiAgY29uc3QgaXNWb3dlbExlYWRpbmcgPSB2b3dlbHMuaW5jbHVkZXMobm91bi5jaGFyQXQoMCkpO1xuXG4gIHJldHVybiBpc0RlZmluaXRlID8gJ3RoZScgOiBpc1BsdXJhbCA/ICdzb21lJyA6IGlzVm93ZWxMZWFkaW5nID8gJ2FuJyA6ICdhJztcbn07XG5cbmNvbnN0IHByaWNlVG9OdW1iZXIgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICBpZiAoTnVtYmVyLmlzTmFOKE51bWJlcih2YWx1ZSkpKSB7XG4gICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKCckJywgJycpO1xuICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvLC9nLCAnJyk7XG4gIH1cbiAgcmV0dXJuIHBhcnNlSW50KHZhbHVlLCAxMCk7XG59O1xuXG5jb25zdCB1bmZvcm1hdFByaWNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBvdXRwdXQgPSBpbnB1dC5yZXBsYWNlKC9cXCQvZywgJycpLnJlcGxhY2UoLywvZywgJycpO1xuICByZXR1cm4gYCR7b3V0cHV0fWA7XG59O1xuXG5leHBvcnQge1xuICBjYXBpdGFsaXplRmlyc3QsXG4gIGZvcm1hdENhbWVsQ2FzZSxcbiAgZm9ybWF0S2ViYWJDYXNlLFxuICBmb3JtYXRMYWJlbCxcbiAgZm9ybWF0TnVtYmVyLFxuICBmb3JtYXRQYXNjYWxDYXNlLFxuICBmb3JtYXRQaG9uZSxcbiAgZm9ybWF0UHJpY2UsXG4gIGZvcm1hdFF1b3RlcyxcbiAgZm9ybWF0U2VudGVuY2VDYXNlLFxuICBmb3JtYXRTbmFrZUNhc2UsXG4gIGZvcm1hdFRpdGxlQ2FzZSxcbiAgZm9ybWF0VXJsRnJvbVJvb3QsXG4gIGZvcm1hdFdlaWdodCxcbiAgZ2V0QXJ0aWNsZSxcbiAgcHJpY2VUb051bWJlcixcbiAgdW5mb3JtYXRQcmljZSxcbn07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBkZWZpbmVBc3luY0NvbXBvbmVudCwgbWFya1JhdywgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHsgUkVBTE0gfSBmcm9tICdAL3R5cGVzL1JlYWxtJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZm9ybWF0UGFzY2FsQ2FzZSB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHR5cGUgeyBTaXplIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHR5cGUgeyBDb21wb25lbnQgfSBmcm9tICd2dWUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaWNvbjogSWNvbjtcbiAgICBzaXplPzogU2l6ZTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIHNpemU6IFNJWkUuU01BTEwsXG4gIH0pO1xuXG4gIGNvbnN0IGlubmVyU1ZHID0gcmVmPENvbXBvbmVudD4oKTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy5pY29uLFxuICAgIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGlkOiBzdHJpbmcgPSBwcm9wcy5pY29uO1xuICAgICAgY29uc3QgbmFtZSA9IGZvcm1hdFBhc2NhbENhc2UoaWQpO1xuICAgICAgY29uc3QgW3ByZWZpeF0gPSBpZC5zcGxpdCgnLScpO1xuICAgICAgY29uc3QgcmVhbG1Gb2xkZXIgPSBSRUFMTVtwcmVmaXg/LnRvVXBwZXJDYXNlKCkgYXMga2V5b2YgdHlwZW9mIFJFQUxNXTtcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGRlZmluZUFzeW5jQ29tcG9uZW50KCgpID0+IHtcbiAgICAgICAgaWYgKHJlYWxtRm9sZGVyKSB7XG4gICAgICAgICAgcmV0dXJuIGltcG9ydChgLi4vYXNzZXRzL3N2Zy9pY29ucy9yZWFsbS8ke3JlYWxtRm9sZGVyfS9JY29uJHtuYW1lfS5zdmc/Y29tcG9uZW50YCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaW1wb3J0KGAuLi9hc3NldHMvc3ZnL2ljb25zL0ljb24ke25hbWV9LnN2Zz9jb21wb25lbnRgKTtcbiAgICAgIH0pO1xuXG4gICAgICBpbm5lclNWRy52YWx1ZSA9IG1hcmtSYXcoY29tcG9uZW50KTtcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWljb24nLCBwcm9wcy5zaXplLCBDU1MuRkxFWC5TSFJJTksuT0ZGXVwiPlxuICAgIDxDb21wb25lbnRcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5CTE9DS11cIlxuICAgICAgOmRhdGEtaWNvbj1cImljb25cIlxuICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICA6aXM9XCJpbm5lclNWR1wiXG4gICAgICB2LWlmPVwiaW5uZXJTVkdcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlPlxuICAudGlkZS1pY29uIHtcbiAgICB3aWR0aDogMS41cmVtO1xuICAgIGhlaWdodDogMS41cmVtO1xuICB9XG5cbiAgLnRpZGUtaWNvbi5zbWFsbCB7XG4gICAgd2lkdGg6IDEuMjVyZW07XG4gICAgaGVpZ2h0OiAxLjI1cmVtO1xuICB9XG5cbiAgLnRpZGUtaWNvbiBzdmcge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgfVxuPC9zdHlsZT5cbiIsImltcG9ydCB0eXBlIHsgUmVhbG1LZXkgfSBmcm9tICdAL3R5cGVzL1JlYWxtJztcblxuZXhwb3J0IGNvbnN0IElDT04gPSB7XG4gIEFDQ09VTlRfQkFMQU5DRTogJ2FjY291bnQtYmFsYW5jZScsXG4gIEFDVVRFOiAnYWN1dGUnLFxuICBBREQ6ICdhZGQnLFxuICBBSV9ERVNDUklQVElPTjogJ2FpLWRlc2NyaXB0aW9uJyxcbiAgQUxJR05fU1BBQ0VfRVZFTjogJ2FsaWduLXNwYWNlLWV2ZW4nLFxuICBBUFBMRV9QQVk6ICdhcHBsZS1wYXknLFxuICBBUlJPV19CQUNLOiAnYXJyb3ctYmFjaycsXG4gIEFSUk9XX0NZQ0xFOiAnYXJyb3ctY3ljbGUnLFxuICBBUlJPV19GT1JXQVJEOiAnYXJyb3ctZm9yd2FyZCcsXG4gIEFSUk9XX1JJR0hUOiAnYXJyb3ctcmlnaHQnLFxuICBBUlJPV19VUDogJ2Fycm93LXVwJyxcbiAgQVNTSUdOTUVOVDogJ2Fzc2lnbm1lbnQnLFxuICBBVFRBQ0hfTU9ORVk6ICdhdHRhY2gtbW9uZXknLFxuICBBVVRPX1JFTkVXOiAnYXV0by1yZW5ldycsXG4gIEFXQVJEX1NUQVI6ICdhd2FyZC1zdGFyJyxcbiAgQkVEOiAnYmVkJyxcbiAgQk9MVDogJ2JvbHQnLFxuICBCT09LTUFSSzogJ2Jvb2ttYXJrJyxcbiAgQlVOS0hPVVNFOiAnYnVua2hvdXNlJyxcbiAgQ0FMRU5EQVJfTU9OVEg6ICdjYWxlbmRhci1tb250aCcsXG4gIENBTEw6ICdjYWxsJyxcbiAgQ0FMTF9RVUFMSVRZOiAnY2FsbC1xdWFsaXR5JyxcbiAgQ0FSX1JFTlRBTDogJ2Nhci1yZW50YWwnLFxuICBDSEVDSzogJ2NoZWNrJyxcbiAgQ0hFVlJPTl9MRUZUOiAnY2hldnJvbi1sZWZ0JyxcbiAgQ0hFVlJPTl9SSUdIVDogJ2NoZXZyb24tcmlnaHQnLFxuICBDTEVBUjogJ2NsZWFyJyxcbiAgQ0xPU0U6ICdjbG9zZScsXG4gIENPTlRSQUNUOiAnY29udHJhY3QnLFxuICBDUkFTSDogJ2NyYXNoJyxcbiAgREFTSEJPQVJEX0NVU1RPTUlaRTogJ2Rhc2hib2FyZC1jdXN0b21pemUnLFxuICBERUxFVEU6ICdkZWxldGUnLFxuICBESUFNT05EOiAnZGlhbW9uZCcsXG4gIERJUkVDVElPTlNfQk9BVDogJ2RpcmVjdGlvbnMtYm9hdCcsXG4gIERPTUFJTjogJ2RvbWFpbicsXG4gIERSQUZUOiAnZHJhZnQnLFxuICBFRElUOiAnZWRpdCcsXG4gIEVOR0lORTogJ2VuZ2luZScsXG4gIEVOR0lORUVSSU5HOiAnZW5naW5lZXJpbmcnLFxuICBFUlJPUjogJ2Vycm9yJyxcbiAgRVhQQU5EX0NPTlRFTlQ6ICdleHBhbmQtY29udGVudCcsXG4gIEVYUEFORF9MRVNTOiAnZXhwYW5kLWxlc3MnLFxuICBFWFBBTkRfTU9SRTogJ2V4cGFuZC1tb3JlJyxcbiAgRkFDRUJPT0s6ICdmYWNlYm9vaycsXG4gIEZBVk9SSVRFOiAnZmF2b3JpdGUnLFxuICBGQVZPUklURV9GSUxMRUQ6ICdmYXZvcml0ZS1maWxsZWQnLFxuICBGTEFHOiAnZmxhZycsXG4gIEZPUk1BVF9CT0xEOiAnZm9ybWF0LWJvbGQnLFxuICBGT1JNQVRfSVRBTElDOiAnZm9ybWF0LWl0YWxpYycsXG4gIEZPUk1BVF9MSVNUX0JVTExFVEVEOiAnZm9ybWF0LWxpc3QtYnVsbGV0ZWQnLFxuICBGT1JVTTogJ2ZvcnVtJyxcbiAgR0FTOiAnZ2FzJyxcbiAgR0FWRUw6ICdnYXZlbCcsXG4gIEdFQVJTOiAnZ2VhcnMnLFxuICBHTE9CRV9MT0NBVElPTl9QSU46ICdnbG9iZS1sb2NhdGlvbi1waW4nLFxuICBHT09HTEU6ICdnb29nbGUnLFxuICBHT09HTEVfUEFZOiAnZ29vZ2xlLXBheScsXG4gIEdSSUQ6ICdncmlkJyxcbiAgSEFORFNIQUtFOiAnaGFuZHNoYWtlJyxcbiAgSEFORFlNQU46ICdoYW5keW1hbicsXG4gIEhFSUdIVDogJ2hlaWdodCcsXG4gIEhFTFA6ICdoZWxwJyxcbiAgSU5GTzogJ2luZm8nLFxuICBJTkZPUk1BVElPTjogJ2luZm9ybWF0aW9uJyxcbiAgSU5TRVJUX1RFWFQ6ICdpbnNlcnQtdGV4dCcsXG4gIElOU1RBR1JBTTogJ2luc3RhZ3JhbScsXG4gIElPU19TSEFSRTogJ2lvcy1zaGFyZScsXG4gIExBWU9VVDogJ2xheW91dCcsXG4gIExFVkVMTElOR19KQUNLOiAnbGV2ZWxsaW5nLWphY2snLFxuICBMSU5LRURfSU46ICdsaW5rZWQgaW4nLFxuICBMT0NBTF9TSElQUElORzogJ2xvY2FsLXNoaXBwaW5nJyxcbiAgTE9DSzogJ2xvY2snLFxuICBNQUlMOiAnbWFpbCcsXG4gIE1FTlU6ICdtZW51JyxcbiAgTU9ORVlfQkFHOiAnbW9uZXktYmFnJyxcbiAgTU9SRV9IT1JJWjogJ21vcmUtaG9yaXonLFxuICBOT1RJRklDQVRJT05TOiAnbm90aWZpY2F0aW9ucycsXG4gIE9ET01FVEVSOiAnb2RvbWV0ZXInLFxuICBPUEVOX0lOX05FVzogJ29wZW4taW4tbmV3JyxcbiAgUEFMRVRURTogJ3BhbGV0dGUnLFxuICBQQVlQQUw6ICdwYXlwYWwnLFxuICBQRVJTT046ICdwZXJzb24nLFxuICBQRVJTT05fU0VBUkNIOiAncGVyc29uLXNlYXJjaCcsXG4gIFBIT1RPX0NBTUVSQTogJ3Bob3RvLWNhbWVyYScsXG4gIFBJTlRFUkVTVDogJ3BpbnRlcmVzdCcsXG4gIFBMQVlfQVJST1c6ICdwbGF5LWFycm93JyxcbiAgUE9MSUNZOiAncG9saWN5JyxcbiAgUE9XRVI6ICdwb3dlcicsXG4gIFBPV0VSX09GRjogJ3Bvd2VyLW9mZicsXG4gIFBSSU9SSVRZX0hJR0g6ICdwcmlvcml0eS1oaWdoJyxcbiAgUkVNT1ZFOiAncmVtb3ZlJyxcbiAgUkVRVUVTVF9RVU9URTogJ3JlcXVlc3QtcXVvdGUnLFxuICBSRVNFVF9XUkVOQ0g6ICdyZXNldC13cmVuY2gnLFxuICBST0FEOiAncm9hZCcsXG4gIFJPVU5ERURfQ09STkVSOiAncm91bmRlZC1jb3JuZXInLFxuICBSVUxFUjogJ3J1bGVyJyxcbiAgU0FJTElORzogJ3NhaWxpbmcnLFxuICBTQ0hPT0w6ICdzY2hvb2wnLFxuICBTRUFSQ0g6ICdzZWFyY2gnLFxuICBTRUFUSU5HOiAnc2VhdGluZycsXG4gIFNFTEw6ICdzZWxsJyxcbiAgU0VOU09SUzogJ3NlbnNvcnMnLFxuICBTRVRUSU5HUzogJ3NldHRpbmdzJyxcbiAgU0hBUkU6ICdzaGFyZScsXG4gIFNISUVMRF9DSEVDSzogJ3NoaWVsZC1jaGVjaycsXG4gIFNIT1BQSU5HX0NBUlQ6ICdzaG9wcGluZy1jYXJ0JyxcbiAgU0xFRVBTOiAnc2xlZXBzJyxcbiAgU01TOiAnc21zJyxcbiAgU05PV0ZMQUtFOiAnc25vd2ZsYWtlJyxcbiAgU1RBUjogJ3N0YXInLFxuICBTVEFSX0ZJTExFRDogJ3N0YXItZmlsbGVkJyxcbiAgU1RBUl9IQUxGOiAnc3Rhci1oYWxmJyxcbiAgU1VNTUFSSVpFOiAnc3VtbWFyaXplJyxcbiAgU1dBUF9IT1JJWjogJ3N3YXAtaG9yaXonLFxuICBTV0FQX1ZFUlQ6ICdzd2FwLXZlcnQnLFxuICBUSFJFRV9EX1JPVEFUSU9OOiAndGhyZWUtZC1yb3RhdGlvbicsXG4gIFRIVU1CX1VQOiAndGh1bWItdXAnLFxuICBUUkVORElOR19ET1dOOiAndHJlbmRpbmctZG93bicsXG4gIFRST1BIWTogJ3Ryb3BoeScsXG4gIFRVTkU6ICd0dW5lJyxcbiAgVFdJVFRFUjogJ3R3aXR0ZXInLFxuICBVTUJSRUxMQTogJ3VtYnJlbGxhJyxcbiAgVkVSSUZJRUQ6ICd2ZXJpZmllZCcsXG4gIFZJREVPQ0FNOiAndmlkZW9jYW0nLFxuICBWSUVXX0lOX0FSOiAndmlldy1pbi1hcicsXG4gIFZJU0lCSUxJVFk6ICd2aXNpYmlsaXR5JyxcbiAgVk9MVU1FX09GRjogJ3ZvbHVtZS1vZmYnLFxuICBWT0xVTUVfT046ICd2b2x1bWUtb24nLFxuICBXQVJFSE9VU0U6ICd3YXJlaG91c2UnLFxuICBXQVJOSU5HOiAnd2FybmluZycsXG4gIFdBVEVSOiAnd2F0ZXInLFxuICBXRUlHSFQ6ICd3ZWlnaHQnLFxuICBXSURUSDogJ3dpZHRoJyxcbiAgV09SS1NQQUNFX1BSRU1JVU06ICd3b3Jrc3BhY2UtcHJlbWl1bScsXG4gIFdSRU5DSDogJ3dyZW5jaCcsXG4gIFlPVVRVQkU6ICd5b3V0dWJlJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBJQ09OX1JFQUxNID0ge1xuICBBVFY6IHtcbiAgICBBVFY6ICdhdHYtYXR2JyxcbiAgICBEVU5FX0JVR0dZOiAnYXR2LWR1bmUtYnVnZ3knLFxuICAgIEdPTEZfQ0FSVDogJ2F0di1nb2xmLWNhcnQnLFxuICAgIEdPX0tBUlQ6ICdhdHYtZ28ta2FydCcsXG4gICAgU0FORF9SQUlMOiAnYXR2LXNhbmQtcmFpbCcsXG4gICAgU0lERV9CWV9TSURFOiAnYXR2LXNpZGUtYnktc2lkZScsXG4gICAgVFJBSUxFUjogJ2F0di10cmFpbGVyJyxcbiAgfSxcbiAgQk9BVE1BUlQ6IHtcbiAgICBQV0M6ICdib2F0bWFydC1wd2MnLFxuICAgIFRSQUlMRVI6ICdib2F0bWFydC10cmFpbGVyJyxcbiAgfSxcbiAgUlY6IHtcbiAgICBDTEFTU19BOiAncnYtY2xhc3MtYScsXG4gICAgQ0xBU1NfQjogJ3J2LWNsYXNzLWInLFxuICAgIENMQVNTX0M6ICdydi1jbGFzcy1jJyxcbiAgICBGSUZUSF9XSEVFTDogJ3J2LWZpZnRoLXdoZWVsJyxcbiAgICBGSVNIX0hPVVNFOiAncnYtZmlzaC1ob3VzZScsXG4gICAgUEFSS19NT0RFTDogJ3J2LXBhcmstbW9kZWwnLFxuICAgIFBPUF9VUF9DQU1QRVI6ICdydi1wb3AtdXAtY2FtcGVyJyxcbiAgICBUUkFWRUxfVFJBSUxFUjogJ3J2LXRyYXZlbC10cmFpbGVyJyxcbiAgICBUUlVDS19DQU1QRVI6ICdydi10cnVjay1jYW1wZXInLFxuICB9LFxufSBhcyBjb25zdDtcblxudHlwZSBSZWFsbUtleXNXaXRoSWNvbnMgPSBFeHRyYWN0PFJlYWxtS2V5LCBrZXlvZiB0eXBlb2YgSUNPTl9SRUFMTT47XG50eXBlIFJlYWxtSWNvbiA9IHtcbiAgW1JlYWxtS2V5IGluIFJlYWxtS2V5c1dpdGhJY29uc106ICh0eXBlb2YgSUNPTl9SRUFMTSlbUmVhbG1LZXldW2tleW9mICh0eXBlb2YgSUNPTl9SRUFMTSlbUmVhbG1LZXldXTtcbn1bUmVhbG1LZXlzV2l0aEljb25zXTtcblxuZXhwb3J0IHR5cGUgR2xvYmFsSWNvbiA9ICh0eXBlb2YgSUNPTilba2V5b2YgdHlwZW9mIElDT05dO1xuZXhwb3J0IHR5cGUgSWNvbiA9IEdsb2JhbEljb24gfCBSZWFsbUljb247XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgVGlkZURpdmlkZXIgZnJvbSAnQC9jb21wb25lbnRzL1RpZGVEaXZpZGVyLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzKFsndG9nZ2xlJ10pO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaGFzQm90dG9tRGl2aWRlcj86IGJvb2xlYW47XG4gICAgaGFzVG9wRGl2aWRlcj86IGJvb2xlYW47XG4gICAgaXNFeHBhbmRlZD86IGJvb2xlYW47XG4gICAgaXNPcHRpb25hbD86IGJvb2xlYW47XG4gICAgbGFiZWw6IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGhhc0JvdHRvbURpdmlkZXI6IGZhbHNlLFxuICAgIGhhc1RvcERpdmlkZXI6IGZhbHNlLFxuICAgIGlzRXhwYW5kZWQ6IGZhbHNlLFxuICAgIGlzT3B0aW9uYWw6IGZhbHNlLFxuICAgIGxhYmVsOiAnJyxcbiAgfSk7XG5cbiAgY29uc3QgaGFuZGxlVG9nZ2xlQ2xpY2sgPSAoKSA9PiB7XG4gICAgZW1pdCgndG9nZ2xlJyk7XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwidGlkZS1hY2NvcmRpb24taXRlbVwiPlxuICAgIDxUaWRlRGl2aWRlciB2LWlmPVwicHJvcHMuaGFzVG9wRGl2aWRlclwiIC8+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbJ3RpZGUtYWNjb3JkaW9uLWhlYWQnLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzEuQkVUV0VFTiwgQ1NTLlBBRERJTkcuWS5IQUxGLCBDU1MuQ1VSU09SLlBPSU5URVJdXCJcbiAgICAgIEBjbGljaz1cImhhbmRsZVRvZ2dsZUNsaWNrXCJcbiAgICA+XG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLkhBTEYsIENTUy5GT05ULlJPTEUuTEFCRUxfMV9TRU1JQk9MRF1cIj5cbiAgICAgICAgPHNwYW4+e3sgcHJvcHMubGFiZWwgfX08L3NwYW4+XG5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgICAgdi1pZj1cInByb3BzLmlzT3B0aW9uYWxcIlxuICAgICAgICA+XG4gICAgICAgICAgKG9wdGlvbmFsKVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDppY29uPVwiaXNFeHBhbmRlZCA/IElDT04uRVhQQU5EX0xFU1MgOiBJQ09OLkVYUEFORF9NT1JFXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLkxBUkdFXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1hY2NvcmRpb24tYm9keScsIHByb3BzLmlzRXhwYW5kZWQgPyAnZXhwYW5kZWQnIDogJ2NvbGxhcHNlZCcsIENTUy5ESVNQTEFZLkdSSURdXCI+XG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuT1ZFUkZMT1cuWS5ISURERU4sIENTUy5NQVJHSU4uWS5PTkUsIENTUy5GT05ULlJPTEUuQk9EWV8xLCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFRdXCI+XG4gICAgICAgIDxzbG90IC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxUaWRlRGl2aWRlciB2LWlmPVwicHJvcHMuaGFzQm90dG9tRGl2aWRlclwiIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtYWNjb3JkaW9uLWJvZHkge1xuICAgIHRyYW5zaXRpb246IGdyaWQtdGVtcGxhdGUtcm93cyB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLnRpZGUtYWNjb3JkaW9uLWJvZHkuZXhwYW5kZWQge1xuICAgIGdyaWQtdGVtcGxhdGUtcm93czogMWZyO1xuICB9XG5cbiAgLnRpZGUtYWNjb3JkaW9uLWJvZHkuY29sbGFwc2VkIHtcbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6IDBmcjtcbiAgfVxuPC9zdHlsZT5cbiIsImV4cG9ydCBjb25zdCBFTEVNRU5UID0ge1xuICBCVVRUT046ICdidXR0b24nLFxuICBMSU5LOiAnYScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgRUxFTUVOVF9CUk9BRCA9IHtcbiAgQlVUVE9OOiAnYnV0dG9uJyxcbiAgRElWOiAnZGl2JyxcbiAgTElOSzogJ2EnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgRWxlbWVudCA9ICh0eXBlb2YgRUxFTUVOVClba2V5b2YgdHlwZW9mIEVMRU1FTlRdO1xuZXhwb3J0IHR5cGUgRWxlbWVudEJyb2FkID0gKHR5cGVvZiBFTEVNRU5UX0JST0FEKVtrZXlvZiB0eXBlb2YgRUxFTUVOVF9CUk9BRF07XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSB2dWUvc29ydC1rZXlzICovXG5cbmV4cG9ydCBjb25zdCBQUklPUklUWSA9IHtcbiAgUFJJTUFSWTogJ3ByaW1hcnknLFxuICBTRUNPTkRBUlk6ICdzZWNvbmRhcnknLFxuICBURVJUSUFSWTogJ3RlcnRpYXJ5JyxcbiAgUVVBVEVSTkFSWTogJ3F1YXRlcm5hcnknLFxuICBGTE9BVElORzogJ2Zsb2F0aW5nJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFByaW9yaXR5ID0gKHR5cGVvZiBQUklPUklUWSlba2V5b2YgdHlwZW9mIFBSSU9SSVRZXTtcbiIsImV4cG9ydCBjb25zdCBUQVJHRVQgPSB7XG4gIEJMQU5LOiAnX2JsYW5rJyxcbiAgU0VMRjogdW5kZWZpbmVkLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgVGFyZ2V0ID0gKHR5cGVvZiBUQVJHRVQpW2tleW9mIHR5cGVvZiBUQVJHRVRdO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgRUxFTUVOVCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB7IFBSSU9SSVRZIH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRBUkdFVCB9IGZyb20gJ0AvdHlwZXMvVGFyZ2V0JztcblxuICBpbXBvcnQgdHlwZSB7IEVsZW1lbnQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgdHlwZSB7IFByaW9yaXR5IH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG4gIGltcG9ydCB0eXBlIHsgQnV0dG9uVHlwZSB9IGZyb20gJ0AvdHlwZXMvVHlwZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgZWxlbWVudD86IEVsZW1lbnQ7XG4gICAgaHJlZj86IHN0cmluZztcbiAgICBpY29uOiBJY29uO1xuICAgIGlzTmV3VGFiPzogYm9vbGVhbjtcbiAgICBwcmlvcml0eT86IFByaW9yaXR5O1xuICAgIHR5cGU/OiBCdXR0b25UeXBlO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGVsZW1lbnQ6IEVMRU1FTlQuQlVUVE9OLFxuICAgIGhyZWY6IHVuZGVmaW5lZCxcbiAgICBpY29uOiB1bmRlZmluZWQsXG4gICAgaXNOZXdUYWI6IGZhbHNlLFxuICAgIHByaW9yaXR5OiBQUklPUklUWS5QUklNQVJZLFxuICAgIHR5cGU6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgdHlwZUF0dHJpYnV0ZSA9IGNvbXB1dGVkPHN0cmluZyB8IHVuZGVmaW5lZD4oKCkgPT5cbiAgICBwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkJVVFRPTiA/IHByb3BzLnR5cGUgPz8gRUxFTUVOVC5CVVRUT04gOiB1bmRlZmluZWRcbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxjb21wb25lbnRcbiAgICA6YXJpYS1sYWJlbD1cInByb3BzLmljb25cIlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWJ1dHRvbi1pY29uJyxcbiAgICAgIHByb3BzLnByaW9yaXR5ICYmIGB0aWRlLWJ1dHRvbi0ke3Byb3BzLnByaW9yaXR5fWAsXG4gICAgICBbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMxLkNFTlRFUiwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCwgQ1NTLlBBRERJTkcuRlVMTC5IQUxGXSxcbiAgICAgIHByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyA/IFtDU1MuVU5ERVJMSU5FLlJFU1QuT0ZGXSA6ICcnLFxuICAgIF1cIlxuICAgIDpkaXNhYmxlZD1cInByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuQlVUVE9OICYmIHByb3BzLmRpc2FibGVkXCJcbiAgICA6aHJlZj1cInByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyAmJiBwcm9wcy5ocmVmID8gcHJvcHMuaHJlZiA6IHVuZGVmaW5lZFwiXG4gICAgOnRhcmdldD1cInByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyAmJiBwcm9wcy5pc05ld1RhYiA/IFRBUkdFVC5CTEFOSyA6IFRBUkdFVC5TRUxGXCJcbiAgICA6dHlwZT1cInR5cGVBdHRyaWJ1dGVcIlxuICAgIDppcz1cImVsZW1lbnRcIlxuICA+XG4gICAgPFRpZGVJY29uXG4gICAgICA6aWNvbj1cInByb3BzLmljb25cIlxuICAgICAgOnNpemU9XCJTSVpFLkxBUkdFXCJcbiAgICAgIHYtaWY9XCJwcm9wcy5pY29uXCJcbiAgICAvPlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IEVMRU1FTlQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRBUkdFVCB9IGZyb20gJ0AvdHlwZXMvVGFyZ2V0JztcblxuICBpbXBvcnQgdHlwZSB7IEVsZW1lbnQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgZWxlbWVudD86IEVsZW1lbnQ7XG4gICAgaHJlZj86IHN0cmluZztcbiAgICBpY29uTGVhZGluZz86IEljb247XG4gICAgaWNvblRyYWlsaW5nPzogSWNvbjtcbiAgICBpc05ld1RhYj86IGJvb2xlYW47XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBzdWJ0bGU/OiBib29sZWFuO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZWxlbWVudDogRUxFTUVOVC5MSU5LLFxuICAgIGhyZWY6IHVuZGVmaW5lZCxcbiAgICBpY29uTGVhZGluZzogdW5kZWZpbmVkLFxuICAgIGljb25UcmFpbGluZzogdW5kZWZpbmVkLFxuICAgIGlzTmV3VGFiOiBmYWxzZSxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIHN1YnRsZTogZmFsc2UsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudFxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWxpbmsnLFxuICAgICAgQ1NTLkRJU1BMQVkuSU5MSU5FLFxuICAgICAgQ1NTLkFMSUdOLlguTEVGVCxcbiAgICAgIHN1YnRsZSA/IFtDU1MuVU5ERVJMSU5FLlJFU1QuT0ZGLCBDU1MuVU5ERVJMSU5FLkhPVkVSLk9OXSA6IFtDU1MuVU5ERVJMSU5FLlJFU1QuT04sIENTUy5VTkRFUkxJTkUuSE9WRVIuT0ZGXSxcbiAgICBdXCJcbiAgICA6aHJlZj1cInByb3BzLmhyZWZcIlxuICAgIDp0YXJnZXQ9XCJwcm9wcy5pc05ld1RhYiA/IFRBUkdFVC5CTEFOSyA6IFRBUkdFVC5TRUxGXCJcbiAgICA6dHlwZT1cImVsZW1lbnQgPT09IEVMRU1FTlQuQlVUVE9OID8gRUxFTUVOVC5CVVRUT04gOiB1bmRlZmluZWRcIlxuICAgIDppcz1cImVsZW1lbnRcIlxuICA+XG4gICAgPFRpZGVJY29uXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuSU5MSU5FX0JMT0NLLCBDU1MuQUxJR04uWS5NSURETEUsIENTUy5NQVJHSU4uUklHSFQuUVVBUlRFUl1cIlxuICAgICAgOmljb249XCJwcm9wcy5pY29uTGVhZGluZ1wiXG4gICAgICB2LWlmPVwicHJvcHMuaWNvbkxlYWRpbmdcIlxuICAgIC8+XG5cbiAgICA8c3BhbiA6Y2xhc3M9XCJbQ1NTLkFMSUdOLlkuTUlERExFXVwiPlxuICAgICAge3sgcHJvcHMubGFiZWwgfX1cbiAgICA8L3NwYW4+XG5cbiAgICA8VGlkZUljb25cbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5JTkxJTkVfQkxPQ0ssIENTUy5BTElHTi5ZLk1JRERMRSwgQ1NTLk1BUkdJTi5MRUZULlFVQVJURVJdXCJcbiAgICAgIDppY29uPVwicHJvcHMuaWNvblRyYWlsaW5nXCJcbiAgICAgIHYtaWY9XCJwcm9wcy5pY29uVHJhaWxpbmdcIlxuICAgIC8+XG4gIDwvY29tcG9uZW50PlxuPC90ZW1wbGF0ZT5cbiIsImV4cG9ydCBjb25zdCBBTEVSVCA9IHtcbiAgRVJST1I6ICdlcnJvcicsXG4gIElORk86ICdpbmZvJyxcbiAgU1VDQ0VTUzogJ3N1Y2Nlc3MnLFxuICBXQVJOSU5HOiAnd2FybmluZycsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBBbGVydCA9ICh0eXBlb2YgQUxFUlQpW2tleW9mIHR5cGVvZiBBTEVSVF07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBDb21tZW50LCBjb21wdXRlZCwgdXNlU2xvdHMgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlQnV0dG9uSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUJ1dHRvbkljb24udnVlJztcbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgVGlkZUxpbmsgZnJvbSAnQC9jb21wb25lbnRzL1RpZGVMaW5rLnZ1ZSc7XG4gIGltcG9ydCB7IEFMRVJUIH0gZnJvbSAnQC90eXBlcy9BbGVydCc7XG4gIGltcG9ydCB7IEVMRU1FTlQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IEFsZXJ0IH0gZnJvbSAnQC90eXBlcy9BbGVydCc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBoZWFkaW5nPzogc3RyaW5nO1xuICAgIGN0YUxhYmVsPzogc3RyaW5nO1xuICAgIGlzRGlzbWlzc2libGU/OiBib29sZWFuO1xuICAgIGlzVG9hc3Q/OiBib29sZWFuO1xuICAgIHR5cGU/OiBBbGVydDtcbiAgfTtcblxuICB0eXBlIEVtaXRzID0ge1xuICAgIChldmVudDogJ2Nsb3NlJyk6IHZvaWQ7XG4gICAgKGV2ZW50OiAnY3RhQ2xpY2snKTogdm9pZDtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGN0YUxhYmVsOiB1bmRlZmluZWQsXG4gICAgaGVhZGluZzogdW5kZWZpbmVkLFxuICAgIGlzRGlzbWlzc2libGU6IHRydWUsXG4gICAgaXNUb2FzdDogZmFsc2UsXG4gICAgdHlwZTogQUxFUlQuSU5GTyxcbiAgfSk7XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPEVtaXRzPigpO1xuICBjb25zdCBzbG90cyA9IHVzZVNsb3RzKCk7XG4gIGNvbnN0IGhhc0JvZHkgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgbm9kZXMgPSBzbG90cy5kZWZhdWx0Py4oKTtcbiAgICBpZiAoIW5vZGVzKSByZXR1cm4gZmFsc2U7XG5cbiAgICByZXR1cm4gbm9kZXMuc29tZShcbiAgICAgIChub2RlKSA9PiBub2RlLnR5cGUgIT09IENvbW1lbnQgJiYgKHR5cGVvZiBub2RlLmNoaWxkcmVuICE9PSAnc3RyaW5nJyB8fCBub2RlLmNoaWxkcmVuLnRyaW0oKS5sZW5ndGggPiAwKVxuICAgICk7XG4gIH0pO1xuXG4gIGNvbnN0IGljb25UeXBlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmIChwcm9wcy50eXBlID09PSBBTEVSVC5FUlJPUikgcmV0dXJuIElDT04uUFJJT1JJVFlfSElHSDtcbiAgICBpZiAocHJvcHMudHlwZSA9PT0gQUxFUlQuU1VDQ0VTUykgcmV0dXJuIElDT04uQ0hFQ0s7XG4gICAgaWYgKHByb3BzLnR5cGUgPT09IEFMRVJULldBUk5JTkcpIHJldHVybiBJQ09OLldBUk5JTkc7XG4gICAgcmV0dXJuIElDT04uSU5GT1JNQVRJT047XG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgIHByb3BzLnR5cGUsXG4gICAgICAndGlkZS1hbGVydCcsXG4gICAgICBDU1MuRElTUExBWS5HUklELFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICBDU1MuUEFERElORy5GVUxMLk9ORSxcbiAgICAgICFwcm9wcy5pc1RvYXN0ICYmIHByb3BzLnR5cGUgPT09IEFMRVJULkVSUk9SID8gW0NTUy5CRy5HTE9CQUwuU1VSRkFDRS5FUlJPUiwgQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuRVJST1JdIDogJycsXG4gICAgICAhcHJvcHMuaXNUb2FzdCAmJiBwcm9wcy50eXBlID09PSBBTEVSVC5JTkZPID8gW0NTUy5CRy5HTE9CQUwuU1VSRkFDRS5JTkZPLCBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5JTkZPXSA6ICcnLFxuICAgICAgIXByb3BzLmlzVG9hc3QgJiYgcHJvcHMudHlwZSA9PT0gQUxFUlQuU1VDQ0VTU1xuICAgICAgICA/IFtDU1MuQkcuR0xPQkFMLlNVUkZBQ0UuU1VDQ0VTUywgQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuU1VDQ0VTU11cbiAgICAgICAgOiAnJyxcbiAgICAgICFwcm9wcy5pc1RvYXN0ICYmIHByb3BzLnR5cGUgPT09IEFMRVJULldBUk5JTkdcbiAgICAgICAgPyBbQ1NTLkJHLkdMT0JBTC5TVVJGQUNFLldBUk5JTkcsIENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLldBUk5JTkddXG4gICAgICAgIDogJycsXG4gICAgICBwcm9wcy5pc1RvYXN0ID8gW0NTUy5CRy5TRUNPTkRBUlksIENTUy5GT05ULkNPTE9SLlNFQ09OREFSWSwgQ1NTLlNIQURPVy5CT1RUT01dIDogQ1NTLkJPUkRFUi5MRUZULlRXTyxcbiAgICBdXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtYWxlcnQtaWNvbicsXG4gICAgICAgIENTUy5QQURESU5HLkZVTEwuUVVBUlRFUixcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgICAgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5JTlZFUlNFLFxuICAgICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5FUlJPUiAmJiBDU1MuQkcuR0xPQkFMLlBSSU1BUlkuRVJST1IsXG4gICAgICAgIHByb3BzLnR5cGUgPT09IEFMRVJULklORk8gJiYgQ1NTLkJHLkdMT0JBTC5QUklNQVJZLklORk8sXG4gICAgICAgIHByb3BzLnR5cGUgPT09IEFMRVJULlNVQ0NFU1MgJiYgQ1NTLkJHLkdMT0JBTC5QUklNQVJZLlNVQ0NFU1MsXG4gICAgICAgIHByb3BzLnR5cGUgPT09IEFMRVJULldBUk5JTkcgJiYgQ1NTLkJHLkdMT0JBTC5QUklNQVJZLldBUk5JTkcsXG4gICAgICBdXCJcbiAgICAgIHYtaWY9XCIhcHJvcHMuaXNUb2FzdFwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDppY29uPVwiaWNvblR5cGVcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtYWxlcnQtaGVhZGluZycsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5ST1csXG4gICAgICAgICFoYXNCb2R5ID8gW0NTUy5BWElTMS5CRVRXRUVOLCBDU1MuTUFSR0lOLlJJR0hULkhBTEZdIDogJycsXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8c3BhbiA6Y2xhc3M9XCJDU1MuRk9OVC5ST0xFLkxBQkVMXzJfU0VNSUJPTERcIj57eyBwcm9wcy5oZWFkaW5nIH19PC9zcGFuPlxuXG4gICAgICA8VGlkZUxpbmtcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTElOS18yXVwiXG4gICAgICAgIDplbGVtZW50PVwiRUxFTUVOVC5CVVRUT05cIlxuICAgICAgICA6bGFiZWw9XCJwcm9wcy5jdGFMYWJlbFwiXG4gICAgICAgIEBjbGljaz1cImVtaXQoJ2N0YUNsaWNrJylcIlxuICAgICAgICB2LWlmPVwicHJvcHMuY3RhTGFiZWwgJiYgIWhhc0JvZHlcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgOmNsYXNzPVwiWyd0aWRlLWFsZXJ0LWNsb3NlJywgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICA6aWNvbj1cIklDT04uQ0xPU0VcIlxuICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICBAY2xpY2s9XCJlbWl0KCdjbG9zZScpXCJcbiAgICAgIGFyaWEtbGFiZWw9XCJDbG9zZSBhbGVydFwiXG4gICAgICB2LWlmPVwiaXNEaXNtaXNzaWJsZVwiXG4gICAgLz5cblxuICAgIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWFsZXJ0LWJvZHknLCBDU1MuRk9OVC5ST0xFLkJPRFlfMiwgIXByb3BzLmlzVG9hc3QgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxUXVwiPlxuICAgICAgPHNsb3QgLz5cblxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5UT1AuSEFMRl1cIlxuICAgICAgICB2LWlmPVwicHJvcHMuY3RhTGFiZWwgJiYgaGFzQm9keVwiXG4gICAgICA+XG4gICAgICAgIDxUaWRlTGlua1xuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxJTktfMl1cIlxuICAgICAgICAgIDplbGVtZW50PVwiRUxFTUVOVC5CVVRUT05cIlxuICAgICAgICAgIDpsYWJlbD1cInByb3BzLmN0YUxhYmVsXCJcbiAgICAgICAgICBAY2xpY2s9XCJlbWl0KCdjdGFDbGljaycpXCJcbiAgICAgICAgICB2LWlmPVwicHJvcHMuY3RhTGFiZWxcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtYWxlcnQge1xuICAgIGdyaWQtdGVtcGxhdGUtYXJlYXM6XG4gICAgICAnaWNvbiBoZWFkaW5nIGNsb3NlJ1xuICAgICAgJy4gYm9keSAuJztcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gMWZyIGF1dG87XG4gICAgZ3JpZC1jb2x1bW4tZ2FwOiAwLjVyZW07XG4gICAgbWF4LXdpZHRoOiA0MHJlbTtcbiAgfVxuXG4gIC50aWRlLWFsZXJ0LWljb24ge1xuICAgIGdyaWQtYXJlYTogaWNvbjtcbiAgfVxuXG4gIC50aWRlLWFsZXJ0LWhlYWRpbmcge1xuICAgIGdyaWQtYXJlYTogaGVhZGluZztcbiAgfVxuXG4gIC50aWRlLWFsZXJ0LWNsb3NlIHtcbiAgICBncmlkLWFyZWE6IGNsb3NlO1xuICB9XG5cbiAgLnRpZGUtYWxlcnQtYm9keSB7XG4gICAgZ3JpZC1hcmVhOiBib2R5O1xuICB9XG48L3N0eWxlPlxuIiwiaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG5leHBvcnQgY29uc3QgQkFER0VfQ09MT1IgPSB7XG4gIEJMQUNLOiAnYmxhY2snLFxuICBCTFVFOiAnYmx1ZScsXG4gIEdSRUVOOiAnZ3JlZW4nLFxuICBMSU1FOiAnbGltZScsXG4gIE9SQU5HRTogJ29yYW5nZScsXG4gIFBVUlBMRTogJ3B1cnBsZScsXG4gIFJFRDogJ3JlZCcsXG4gIFNBTE1PTjogJ3NhbG1vbicsXG4gIFRFQUw6ICd0ZWFsJyxcbiAgWUVMTE9XOiAneWVsbG93Jyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBCQURHRV9DT0xPUl9ERVRBSUxTOiBSZWNvcmQ8XG4gIEJhZGdlQ29sb3IsXG4gIHtcbiAgICBib3JkZXJDb2xvcjogc3RyaW5nO1xuICAgIGljb25Db2xvcjogc3RyaW5nO1xuICB9XG4+ID0ge1xuICBbQkFER0VfQ09MT1IuQkxBQ0tdOiB7XG4gICAgYm9yZGVyQ29sb3I6IENTUy5CT1JERVIuQ09MT1IuSElHSCxcbiAgICBpY29uQ29sb3I6IENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVCxcbiAgfSxcbiAgW0JBREdFX0NPTE9SLkJMVUVdOiB7XG4gICAgYm9yZGVyQ29sb3I6IENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLkJMVUUsXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5CTFVFLFxuICB9LFxuICBbQkFER0VfQ09MT1IuR1JFRU5dOiB7XG4gICAgYm9yZGVyQ29sb3I6IENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLkdSRUVOLFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLlBSSU1BUlkuR1JFRU4sXG4gIH0sXG4gIFtCQURHRV9DT0xPUi5MSU1FXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5MSU1FLFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLlBSSU1BUlkuTElNRSxcbiAgfSxcbiAgW0JBREdFX0NPTE9SLk9SQU5HRV06IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuT1JBTkdFLFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLlBSSU1BUlkuT1JBTkdFLFxuICB9LFxuICBbQkFER0VfQ09MT1IuUFVSUExFXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5QVVJQTEUsXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5QVVJQTEUsXG4gIH0sXG4gIFtCQURHRV9DT0xPUi5SRURdOiB7XG4gICAgYm9yZGVyQ29sb3I6IENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLlJFRCxcbiAgICBpY29uQ29sb3I6IENTUy5GT05ULkNPTE9SLkdMT0JBTC5QUklNQVJZLlJFRCxcbiAgfSxcbiAgW0JBREdFX0NPTE9SLlNBTE1PTl06IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuU0FMTU9OLFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLlBSSU1BUlkuU0FMTU9OLFxuICB9LFxuICBbQkFER0VfQ09MT1IuVEVBTF06IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuVEVBTCxcbiAgICBpY29uQ29sb3I6IENTUy5GT05ULkNPTE9SLkdMT0JBTC5QUklNQVJZLlRFQUwsXG4gIH0sXG4gIFtCQURHRV9DT0xPUi5ZRUxMT1ddOiB7XG4gICAgYm9yZGVyQ29sb3I6IENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLllFTExPVyxcbiAgICBpY29uQ29sb3I6IENTUy5GT05ULkNPTE9SLkdMT0JBTC5QUklNQVJZLllFTExPVyxcbiAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCBCQURHRV9UUlVTVEVEID0ge1xuICBZRUFSU18xMDogJzEwJyxcbiAgWUVBUlNfMTU6ICcxNScsXG4gIFlFQVJTXzIwOiAnMjAnLFxuICBZRUFSU18yNTogJzI1JyxcbiAgWUVBUlNfMzA6ICczMCcsXG4gIFlFQVJTXzM1OiAnMzUnLFxuICBZRUFSU181OiAnNScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBCYWRnZUNvbG9yID0gKHR5cGVvZiBCQURHRV9DT0xPUilba2V5b2YgdHlwZW9mIEJBREdFX0NPTE9SXTtcbmV4cG9ydCB0eXBlIEJhZGdlVHJ1c3RlZFllYXJzID0gKHR5cGVvZiBCQURHRV9UUlVTVEVEKVtrZXlvZiB0eXBlb2YgQkFER0VfVFJVU1RFRF07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IEJBREdFX0NPTE9SX0RFVEFJTFMgfSBmcm9tICdAL3R5cGVzL0JhZGdlJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgQmFkZ2VDb2xvciB9IGZyb20gJ0AvdHlwZXMvQmFkZ2UnO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgY29sb3I/OiBCYWRnZUNvbG9yO1xuICAgIGljb25MZWFkaW5nPzogSWNvbjtcbiAgICBpc0Zsb2F0aW5nPzogYm9vbGVhbjtcbiAgICBsYWJlbDogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgY29sb3I6IHVuZGVmaW5lZCxcbiAgICBpY29uTGVhZGluZzogdW5kZWZpbmVkLFxuICAgIGlzRmxvYXRpbmc6IGZhbHNlLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1iYWRnZScsXG4gICAgICBwcm9wcy5pc0Zsb2F0aW5nIHx8IHByb3BzLmNvbG9yID8gW0NTUy5CRy5TVVJGQUNFLkZMT0FUSU5HLCBDU1MuU0hBRE9XLkJPVFRPTV0gOiBbQ1NTLkJHLlNVUkZBQ0UuVkFSSUFOVF0sXG4gICAgICBDU1MuRElTUExBWS5JTkxJTkVfRkxFWCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5RVUFSVEVSLFxuICAgICAgQ1NTLlBBRERJTkcuWS5RVUFSVEVSLFxuICAgICAgQ1NTLlBBRERJTkcuWC5IQUxGLFxuICAgICAgcHJvcHMuY29sb3IgJiYgW0NTUy5CT1JERVIuTEVGVC5UV08sIEJBREdFX0NPTE9SX0RFVEFJTFNbcHJvcHMuY29sb3JdLmJvcmRlckNvbG9yXSxcbiAgICAgIENTUy5FTExJUFNJUyxcbiAgICAgIENTUy5GT05ULlJPTEUuTEFCRUxfMixcbiAgICAgIENTUy5XSElURVNQQUNFX1dSQVAuT0ZGLFxuICAgIF1cIlxuICA+XG4gICAgPFRpZGVJY29uXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkZMRVguU0hSSU5LLk9GRiwgcHJvcHMuY29sb3IgJiYgQkFER0VfQ09MT1JfREVUQUlMU1twcm9wcy5jb2xvcl0uaWNvbkNvbG9yXVwiXG4gICAgICA6aWNvbj1cInByb3BzLmljb25MZWFkaW5nXCJcbiAgICAgIHYtaWY9XCJwcm9wcy5pY29uTGVhZGluZ1wiXG4gICAgLz5cblxuICAgIDxzcGFuIDpjbGFzcz1cIltDU1MuRUxMSVBTSVNdXCI+e3sgcHJvcHMubGFiZWwgfX08L3NwYW4+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgQkFER0VfVFJVU1RFRCB9IGZyb20gJ0AvdHlwZXMvQmFkZ2UnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgQmFkZ2VUcnVzdGVkWWVhcnMgfSBmcm9tICdAL3R5cGVzL0JhZGdlJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIHllYXJzPzogQmFkZ2VUcnVzdGVkWWVhcnM7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICB5ZWFyczogQkFER0VfVFJVU1RFRC5ZRUFSU181LFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1iYWRnZS10cnVzdGVkLXBhcnRuZXInLFxuICAgICAgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5CUkFORCxcbiAgICAgIENTUy5ESVNQTEFZLklOTElORV9GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIENTUy5FTExJUFNJUyxcbiAgICAgIENTUy5GT05ULlJPTEUuTEFCRUxfMixcbiAgICAgIENTUy5XSElURVNQQUNFX1dSQVAuT0ZGLFxuICAgIF1cIlxuICA+XG4gICAgPFRpZGVJY29uXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkZMRVguU0hSSU5LLk9GRl1cIlxuICAgICAgOmljb249XCJJQ09OLkFXQVJEX1NUQVJcIlxuICAgIC8+XG5cbiAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRUxMSVBTSVNdXCI+XG4gICAgICA8c3Bhbj57eyBwcm9wcy55ZWFycyB9fSB5ZWFyIHRydXN0ZWQgcGFydG5lcjwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtYmFkZ2UtdmVyaWZpZWQtdmVoaWNsZScsXG4gICAgICBDU1MuQkcuU0VDT05EQVJZLFxuICAgICAgQ1NTLkZPTlQuUk9MRS5MQUJFTF8yLFxuICAgICAgQ1NTLkZPTlQuQ09MT1IuU0VDT05EQVJZLFxuICAgICAgQ1NTLkRJU1BMQVkuSU5MSU5FX0ZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuUVVBUlRFUixcbiAgICAgIENTUy5QQURESU5HLlkuUVVBUlRFUixcbiAgICAgIENTUy5QQURESU5HLlguSEFMRixcbiAgICAgIENTUy5FTExJUFNJUyxcbiAgICAgIENTUy5XSElURVNQQUNFX1dSQVAuT0ZGLFxuICAgIF1cIlxuICA+XG4gICAgPFRpZGVJY29uXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkZMRVguU0hSSU5LLk9GRl1cIlxuICAgICAgOmljb249XCJJQ09OLlZFUklGSUVEXCJcbiAgICAvPlxuXG4gICAgPHNwYW4gOmNsYXNzPVwiW0NTUy5FTExJUFNJU11cIj5WZXJpZmllZCB2ZWhpY2xlPC9zcGFuPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWljb24ge1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLWluZm8tcHJpbWFyeSk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgQnJlYWRDcnVtYiB9IGZyb20gJ0AvdHlwZXMvQnJlYWRDcnVtYic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBicmVhZENydW1iczogQnJlYWRDcnVtYltdO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgYnJlYWRDcnVtYnM6IHVuZGVmaW5lZCxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8dWwgOmNsYXNzPVwiWyd0aWRlLWJyZWFkLWNydW1icycsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUiwgQ1NTLkxJU1RfQlVMTEVUUy5PRkZdXCI+XG4gICAgPHRlbXBsYXRlXG4gICAgICA6a2V5PVwiY3J1bWIubGFiZWxcIlxuICAgICAgdi1mb3I9XCIoY3J1bWIsIGluZGV4KSBpbiBwcm9wcy5icmVhZENydW1ic1wiXG4gICAgPlxuICAgICAgPGxpIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkJPRFlfMl1cIj5cbiAgICAgICAgPGFcbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MSU5LXzIsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgICAgIDpkYXRhLXRyYWNrPVwiY3J1bWIuZGF0YVRyYWNrIHx8IHVuZGVmaW5lZFwiXG4gICAgICAgICAgOmhyZWY9XCJjcnVtYi51cmxcIlxuICAgICAgICAgIHYtaWY9XCJjcnVtYi51cmxcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgY3J1bWIubGFiZWwgfX1cbiAgICAgICAgPC9hPlxuXG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfMiwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgICAgOmRhdGEtdHJhY2s9XCJjcnVtYi5kYXRhVHJhY2sgfHwgdW5kZWZpbmVkXCJcbiAgICAgICAgICB2LWVsc2VcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGNydW1iLmxhYmVsIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvbGk+XG5cbiAgICAgIDxsaSB2LWlmPVwicHJvcHMuYnJlYWRDcnVtYnMgJiYgaW5kZXggPCBwcm9wcy5icmVhZENydW1icy5sZW5ndGggLSAxXCI+XG4gICAgICAgIDxUaWRlSWNvblxuICAgICAgICAgIDppY29uPVwiSUNPTi5BUlJPV19SSUdIVFwiXG4gICAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgLz5cbiAgICAgIDwvbGk+XG4gICAgPC90ZW1wbGF0ZT5cbiAgPC91bD5cbjwvdGVtcGxhdGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBFTEVNRU5UIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgU0laRSwgU0laRV9CVVRUT04gfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRBUkdFVCB9IGZyb20gJ0AvdHlwZXMvVGFyZ2V0JztcblxuICBpbXBvcnQgdHlwZSB7IEVsZW1lbnQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgdHlwZSB7IFByaW9yaXR5IH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG4gIGltcG9ydCB0eXBlIHsgU2l6ZUJ1dHRvbiB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB0eXBlIHsgQnV0dG9uVHlwZSB9IGZyb20gJ0AvdHlwZXMvVHlwZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgZWxlbWVudD86IEVsZW1lbnQ7XG4gICAgaHJlZj86IHN0cmluZztcbiAgICBpY29uTGVhZGluZz86IEljb247XG4gICAgaWNvblRyYWlsaW5nPzogSWNvbjtcbiAgICBpc05ld1RhYj86IGJvb2xlYW47XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBwcmlvcml0eT86IFByaW9yaXR5O1xuICAgIHNpemU/OiBTaXplQnV0dG9uO1xuICAgIHR5cGU/OiBCdXR0b25UeXBlO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGVsZW1lbnQ6IEVMRU1FTlQuQlVUVE9OLFxuICAgIGhyZWY6IHVuZGVmaW5lZCxcbiAgICBpY29uTGVhZGluZzogdW5kZWZpbmVkLFxuICAgIGljb25UcmFpbGluZzogdW5kZWZpbmVkLFxuICAgIGlzTmV3VGFiOiBmYWxzZSxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIHByaW9yaXR5OiBQUklPUklUWS5QUklNQVJZLFxuICAgIHNpemU6IFNJWkVfQlVUVE9OLkxBUkdFLFxuICAgIHR5cGU6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgdHlwZUF0dHJpYnV0ZSA9IGNvbXB1dGVkPHN0cmluZyB8IHVuZGVmaW5lZD4oKCkgPT5cbiAgICBwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkJVVFRPTiA/IHByb3BzLnR5cGUgPz8gRUxFTUVOVC5CVVRUT04gOiB1bmRlZmluZWRcbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxjb21wb25lbnRcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1idXR0b24nLFxuICAgICAgcHJvcHMucHJpb3JpdHkgJiYgYHRpZGUtYnV0dG9uLSR7cHJvcHMucHJpb3JpdHl9YCxcbiAgICAgIHByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyA/IFtDU1MuRElTUExBWS5JTkxJTkVfRkxFWF0gOiBbQ1NTLkRJU1BMQVkuRkxFWF0sXG4gICAgICBwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgPyBDU1MuVU5ERVJMSU5FLlJFU1QuT0ZGIDogJycsXG4gICAgICBzaXplID09PSBTSVpFX0JVVFRPTi5TTUFMTFxuICAgICAgICA/IFtDU1MuRk9OVC5ST0xFLkJVVFRPTl8yLCBDU1MuUEFERElORy5YLk9ORSwgQ1NTLlBBRERJTkcuWS5IQUxGLCBDU1MuQk9SREVSLlJBRElVUy5RVUFSVEVSXVxuICAgICAgICA6IFtDU1MuRk9OVC5ST0xFLkJVVFRPTl8xLCBDU1MuUEFERElORy5YLlRXTywgQ1NTLlBBRERJTkcuWS5PTkUsIENTUy5CT1JERVIuUkFESVVTLkhBTEZdLFxuICAgICAgQ1NTLkFYSVMxLkNFTlRFUixcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICBDU1MuRk9OVC5ST0xFLkxBQkVMXzFfU0VNSUJPTEQsXG4gICAgXVwiXG4gICAgOmRpc2FibGVkPVwicHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVC5CVVRUT04gJiYgcHJvcHMuZGlzYWJsZWRcIlxuICAgIDpocmVmPVwicHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LICYmIHByb3BzLmhyZWYgPyBwcm9wcy5ocmVmIDogdW5kZWZpbmVkXCJcbiAgICA6dGFyZ2V0PVwicHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LICYmIHByb3BzLmlzTmV3VGFiID8gVEFSR0VULkJMQU5LIDogVEFSR0VULlNFTEZcIlxuICAgIDp0eXBlPVwidHlwZUF0dHJpYnV0ZVwiXG4gICAgOmlzPVwiZWxlbWVudFwiXG4gID5cbiAgICA8VGlkZUljb25cbiAgICAgIDppY29uPVwicHJvcHMuaWNvbkxlYWRpbmdcIlxuICAgICAgOnNpemU9XCJzaXplID09PSBTSVpFX0JVVFRPTi5MQVJHRSA/IFNJWkUuTEFSR0UgOiBTSVpFLlNNQUxMXCJcbiAgICAgIHYtaWY9XCJwcm9wcy5pY29uTGVhZGluZ1wiXG4gICAgLz5cblxuICAgIHt7IHByb3BzLmxhYmVsIH19XG5cbiAgICA8VGlkZUljb25cbiAgICAgIDppY29uPVwicHJvcHMuaWNvblRyYWlsaW5nXCJcbiAgICAgIDpzaXplPVwic2l6ZSA9PT0gU0laRV9CVVRUT04uTEFSR0UgPyBTSVpFLkxBUkdFIDogU0laRS5TTUFMTFwiXG4gICAgICB2LWlmPVwicHJvcHMuaWNvblRyYWlsaW5nXCJcbiAgICAvPlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBFTEVNRU5UX0JST0FEIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgRWxlbWVudEJyb2FkIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBlbGVtZW50PzogRWxlbWVudEJyb2FkO1xuICAgIGhyZWY/OiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZyB8IG51bWJlcjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlbGVtZW50OiBFTEVNRU5UX0JST0FELkJVVFRPTixcbiAgICBocmVmOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtYnV0dG9uLWljb24nLFxuICAgICAgW0NTUy5ESVNQTEFZLklOTElORV9CTE9DSywgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCwgQ1NTLlBBRERJTkcuRlVMTC5IQUxGXSxcbiAgICAgIHByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlRfQlJPQUQuTElOSyA/IFtDU1MuVU5ERVJMSU5FLlJFU1QuT0ZGXSA6ICcnLFxuICAgICAgcHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVF9CUk9BRC5ESVYgPyBbQ1NTLkNVUlNPUi5QT0lOVEVSXSA6ICcnLFxuICAgICAgW0NTUy5GT05ULlJPTEUuSEVBRExJTkVfM10sXG4gICAgXVwiXG4gICAgOmRpc2FibGVkPVwicHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVF9CUk9BRC5CVVRUT04gJiYgcHJvcHMuZGlzYWJsZWRcIlxuICAgIDpocmVmPVwicHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVF9CUk9BRC5MSU5LICYmIHByb3BzLmhyZWYgPyBwcm9wcy5ocmVmIDogdW5kZWZpbmVkXCJcbiAgICA6dHlwZT1cImVsZW1lbnQgPT09IEVMRU1FTlRfQlJPQUQuQlVUVE9OID8gRUxFTUVOVF9CUk9BRC5CVVRUT04gOiB1bmRlZmluZWRcIlxuICAgIDppcz1cImVsZW1lbnRcIlxuICA+XG4gICAgPHNwYW4gOmNsYXNzPVwiWydsYWJlbCcsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMS5DRU5URVIsIENTUy5BWElTMi5DRU5URVJdXCI+XG4gICAgICB7eyBwcm9wcy5sYWJlbCB9fVxuICAgIDwvc3Bhbj5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1idXR0b24taWNvbixcbiAgLnRpZGUtbGluay1hcy1idXR0b24taWNvbiB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGlkZS13aGl0ZSk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGlkZS13aGl0ZSk7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtc2Vjb25kYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWJ1dHRvbi1pY29uOm5vdCg6ZGlzYWJsZWQpOmhvdmVyLFxuICAudGlkZS1saW5rLWFzLWJ1dHRvbi1pY29uOm5vdCg6ZGlzYWJsZWQpOmhvdmVyIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10aWRlLXN1cmZhY2UtdmFyaWFudCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGlkZS1zdXJmYWNlLXZhcmlhbnQpO1xuICB9XG5cbiAgLnRpZGUtYnV0dG9uLWljb246ZGlzYWJsZWQsXG4gIC50aWRlLWxpbmstYXMtYnV0dG9uLWljb246ZGlzYWJsZWQge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyLWhpZ2gpO1xuICB9XG5cbiAgLnRpZGUtYnV0dG9uLWljb24gLmxhYmVsLFxuICAudGlkZS1saW5rLWFzLWJ1dHRvbi1pY29uIC5sYWJlbCB7XG4gICAgd2lkdGg6IDEuNXJlbTtcbiAgICBoZWlnaHQ6IDEuNXJlbTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IFRhYiB9IGZyb20gJ0AvdHlwZXMvVGFiJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGFjdGl2ZVRhYjogbnVtYmVyO1xuICAgIHRhYnM6IFRhYltdO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgYWN0aXZlVGFiOiAwLFxuICB9KTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHMoWydjaGFuZ2UnXSk7XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoaW5kZXg6IG51bWJlcikgPT4ge1xuICAgIGVtaXQoJ2NoYW5nZScsIGluZGV4KTtcbiAgfTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1idXR0b24tc2VnbWVudGVkJyxcbiAgICAgIENTUy5CRy5TVVJGQUNFLlZBUklBTlQsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgIENTUy5QQURESU5HLkZVTEwuUVVBUlRFUixcbiAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICBdXCJcbiAgPlxuICAgIDxidXR0b25cbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtYnV0dG9uLXNlZ21lbnRlZC10YWInLFxuICAgICAgICBpbmRleCA9PT0gYWN0aXZlVGFiXG4gICAgICAgICAgPyBbQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxULCBDU1MuU0hBRE9XLkJPVFRPTV1cbiAgICAgICAgICA6IFsnaW5hY3RpdmUnLCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdLFxuICAgICAgICBDU1MuRkxFWC5HUk9XLk9OLFxuICAgICAgICBDU1MuQk9SREVSLkZVTEwuVFdPLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgICBDU1MuUEFERElORy5ZLlFVQVJURVIsXG4gICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICBDU1MuRk9OVC5ST0xFLkJVVFRPTl8xLFxuICAgICAgICBDU1MuV0hJVEVTUEFDRV9XUkFQLk9GRixcbiAgICAgIF1cIlxuICAgICAgOmRhdGEtdHJhY2s9XCJ0YWIuZGF0YVRyYWNrIHx8IHVuZGVmaW5lZFwiXG4gICAgICA6a2V5PVwidGFiLmxhYmVsXCJcbiAgICAgIEBjbGljaz1cImhhbmRsZUNsaWNrKGluZGV4KVwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIHYtZm9yPVwiKHRhYiwgaW5kZXgpIGluIHByb3BzLnRhYnNcIlxuICAgID5cbiAgICAgIDxzcGFuIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzJfU0VNSUJPTERdXCI+XG4gICAgICAgIHt7IHRhYi5sYWJlbCB9fVxuICAgICAgPC9zcGFuPlxuXG4gICAgICA8c3BhblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8yX1NFTUlCT0xEXVwiXG4gICAgICAgIHYtaWY9XCJ0YWIuY291bnQgJiYgdGFiLmNvdW50ID4gMFwiXG4gICAgICA+XG4gICAgICAgICh7eyB0YWIuY291bnQgfX0pXG4gICAgICA8L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtYnV0dG9uLXNlZ21lbnRlZCB7XG4gICAgbWF4LXdpZHRoOiAyMy4zcmVtO1xuICB9XG5cbiAgLnRpZGUtYnV0dG9uLXNlZ21lbnRlZC10YWIge1xuICAgIGZsZXg6IDE7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLmluYWN0aXZlOm5vdCg6aG92ZXIpIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS12YXJpYW50KTtcbiAgfVxuXG4gIC5pbmFjdGl2ZTpob3ZlciB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10aWRlLWJvcmRlcik7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS1kZWZhdWx0KTtcbiAgfVxuPC9zdHlsZT5cbiIsImV4cG9ydCBjb25zdCBUWVBFX0NBUkQgPSB7XG4gIEFDVElPTkFCTEU6ICdhY3Rpb24nLFxuICBJTkZPUk1BVElPTkFMOiAnaW5mb3JtYXRpb25hbCcsXG4gIFNFTEVDVEFCTEU6ICdzZWxlY3QnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgQ2FyZFR5cGUgPSAodHlwZW9mIFRZUEVfQ0FSRClba2V5b2YgdHlwZW9mIFRZUEVfQ0FSRF07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBUWVBFX0NBUkQgfSBmcm9tICdAL3R5cGVzL0NhcmQnO1xuICBpbXBvcnQgeyBFTEVNRU5UX0JST0FEIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IENhcmRUeXBlIH0gZnJvbSAnQC90eXBlcy9DYXJkJztcbiAgaW1wb3J0IHR5cGUgeyBFbGVtZW50QnJvYWQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgaGVhZGluZzogc3RyaW5nO1xuICAgIGljb24/OiBJY29uO1xuICAgIHNlbGVjdGVkPzogYm9vbGVhbjtcbiAgICB0eXBlPzogQ2FyZFR5cGU7XG4gICAgaHJlZj86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRlc2NyaXB0aW9uOiB1bmRlZmluZWQsXG4gICAgaHJlZjogdW5kZWZpbmVkLFxuICAgIGljb246IHVuZGVmaW5lZCxcbiAgICBzZWxlY3RlZDogdW5kZWZpbmVkLFxuICAgIHR5cGU6IFRZUEVfQ0FSRC5JTkZPUk1BVElPTkFMLFxuICB9KTtcblxuICBjb25zdCByb290RWxlbWVudCA9IGNvbXB1dGVkPEVsZW1lbnRCcm9hZD4oKCkgPT5cbiAgICBwcm9wcy5ocmVmID8gRUxFTUVOVF9CUk9BRC5MSU5LIDogcHJvcHMudHlwZSA9PT0gVFlQRV9DQVJELklORk9STUFUSU9OQUwgPyBFTEVNRU5UX0JST0FELkRJViA6IEVMRU1FTlRfQlJPQUQuRElWXG4gICk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtY2FyZCcsXG4gICAgICBDU1MuQk9SREVSLkNPTE9SLkxPVyxcbiAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgIENTUy5QQURESU5HLkZVTEwuT05FLFxuICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICBDU1MuQUxJR04uWC5MRUZULFxuICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgIHR5cGUgIT09IFRZUEVfQ0FSRC5JTkZPUk1BVElPTkFMICYmICdob3ZlcmFibGUnLFxuICAgICAgdHlwZSA9PT0gVFlQRV9DQVJELlNFTEVDVEFCTEUgJiYgc2VsZWN0ZWQgJiYgJ3NlbGVjdGVkJyxcbiAgICBdXCJcbiAgICA6aHJlZj1cImhyZWZcIlxuICAgIDp0eXBlPVwicm9vdEVsZW1lbnQgPT09IEVMRU1FTlRfQlJPQUQuQlVUVE9OID8gRUxFTUVOVF9CUk9BRC5CVVRUT04gOiB1bmRlZmluZWRcIlxuICAgIDppcz1cInJvb3RFbGVtZW50XCJcbiAgPlxuICAgIDxUaWRlSWNvblxuICAgICAgOmNsYXNzPVwiW0NTUy5GTEVYLkdST1cuT0ZGLCBDU1MuRkxFWC5TSFJJTksuT0ZGXVwiXG4gICAgICA6aWNvbj1cImljb25cIlxuICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgIHYtaWY9XCJpY29uXCJcbiAgICAvPlxuXG4gICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkFYSVMyLlNUQVJULCBDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuR0FQLkhBTEZdXCI+XG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzFfU0VNSUJPTEQsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVF1cIj5cbiAgICAgICAge3sgaGVhZGluZyB9fVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfMiwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgIHYtaWY9XCJkZXNjcmlwdGlvblwiXG4gICAgICA+XG4gICAgICAgIHt7IGRlc2NyaXB0aW9uIH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1jYXJkLmhvdmVyYWJsZTpub3QoLnNlbGVjdGVkKTpob3ZlciB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10aWRlLWJvcmRlci1yZXN0KTtcbiAgfVxuICAudGlkZS1jYXJkLnNlbGVjdGVkIHtcbiAgICBvdXRsaW5lOiAycHggc29saWQgdmFyKC0tdGlkZS1ib3JkZXItaGlnaCk7XG4gICAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgb25Nb3VudGVkLCBvblVubW91bnRlZCwgcmVmIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUJ1dHRvbkljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBQUklPUklUWSB9IGZyb20gJ0AvdHlwZXMvUHJpb3JpdHknO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBoYXNEb3RzPzogYm9vbGVhbjtcbiAgICBpc0Zsb2F0aW5nPzogYm9vbGVhbjtcbiAgICBpc0hlYWRsaW5lMT86IGJvb2xlYW47XG4gICAgaXNIaWRlYXdheUJ1dHRvbnM/OiBib29sZWFuO1xuICAgIGlzU2Nyb2xsQnlQYWdlPzogYm9vbGVhbjtcbiAgICBtYXhEb3RzPzogbnVtYmVyO1xuICAgIHN1YnRpdGxlPzogc3RyaW5nO1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgaGFzRG90czogdW5kZWZpbmVkLFxuICAgIGlzRmxvYXRpbmc6IGZhbHNlLFxuICAgIGlzSGVhZGxpbmUxOiBmYWxzZSxcbiAgICBpc0hpZGVhd2F5QnV0dG9uczogdHJ1ZSxcbiAgICBpc1Njcm9sbEJ5UGFnZTogdHJ1ZSxcbiAgICBtYXhEb3RzOiA1LFxuICAgIHN1YnRpdGxlOiB1bmRlZmluZWQsXG4gICAgdGl0bGU6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgdHlwZSBFbWl0cyA9IHtcbiAgICAoZXZlbnQ6ICdzbGlkZXNBZGRlZFRvVmlldycsIHNsaWRlc0luVmlldzogbnVtYmVyW10pOiB2b2lkO1xuICB9O1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czxFbWl0cz4oKTtcblxuICBjb25zdCBjb250YWluZXJSZWYgPSByZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgY29udGVudFdpZHRoID0gcmVmPG51bWJlcj4oMCk7XG4gIGNvbnN0IGN1cnJlbnRQYWdlSW5kZXggPSByZWY8bnVtYmVyPigwKTtcbiAgY29uc3QgZG90c1JlZiA9IHJlZjxIVE1MRGl2RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBmcmFtZVdpZHRoID0gcmVmPG51bWJlcj4oMCk7XG4gIGNvbnN0IGlzRmlyc3RTbGlkZSA9IHJlZjxib29sZWFuPih0cnVlKTtcbiAgY29uc3QgaXNMYXN0U2xpZGUgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBzaG93QnV0dG9ucyA9IHJlZjxib29sZWFuPih0cnVlKTtcbiAgY29uc3Qgc2xpZGVPYnNlcnZlciA9IHJlZjxJbnRlcnNlY3Rpb25PYnNlcnZlciB8IG51bGw+KG51bGwpO1xuICBjb25zdCBzbGlkZXMgPSByZWY8SFRNTEVsZW1lbnRbXT4oW10pO1xuICBjb25zdCBzbGlkZXNJblZpZXcgPSByZWY8bnVtYmVyW10+KFtdKTtcbiAgY29uc3Qgc2xvdE9ic2VydmVyID0gcmVmPE11dGF0aW9uT2JzZXJ2ZXIgfCBudWxsPihudWxsKTtcblxuICBjb25zdCBjdXJyZW50UGFnZSA9IGNvbXB1dGVkKCgpID0+IGN1cnJlbnRQYWdlSW5kZXgudmFsdWUgKyAxKTtcbiAgY29uc3QgZG90Q29udGFpbmVyV2lkdGggPSBjb21wdXRlZCgoKSA9PiBkb3RDb3VudFZpc2libGUudmFsdWUgKiBkb3RXaWR0aCArIChkb3RDb3VudFZpc2libGUudmFsdWUgLSAxKSAqIGRvdEdhcCk7XG4gIGNvbnN0IGRvdENvdW50VmlzaWJsZSA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5tYXhEb3RzID4gdG90YWxQYWdlcy52YWx1ZSA/IHRvdGFsUGFnZXMudmFsdWUgOiBwcm9wcy5tYXhEb3RzKSk7XG4gIGNvbnN0IGxhc3RQYWdlSW5kZXggPSBjb21wdXRlZCgoKSA9PiB0b3RhbFBhZ2VzLnZhbHVlIC0gMSk7XG4gIGNvbnN0IHRvdGFsUGFnZXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKCFzbGlkZXMudmFsdWUubGVuZ3RoKSByZXR1cm4gMDtcbiAgICBpZiAoIXByb3BzLmlzU2Nyb2xsQnlQYWdlKSByZXR1cm4gc2xpZGVzLnZhbHVlLmxlbmd0aDtcblxuICAgIGNvbnN0IGdhcFdpZHRoID0gY2FyZEdhcCAqIChzbGlkZXMudmFsdWUubGVuZ3RoIC0gMSk7XG4gICAgY29uc3QgY29udGVudE5vR2FwID0gY29udGVudFdpZHRoLnZhbHVlIC0gZ2FwV2lkdGg7XG4gICAgY29uc3QgcXVvdGllbnQgPSBNYXRoLnJvdW5kKGNvbnRlbnROb0dhcCAvIGZyYW1lV2lkdGgudmFsdWUpO1xuICAgIGNvbnN0IHJlbWFpbmRlciA9IGNvbnRlbnROb0dhcCAlIGZyYW1lV2lkdGgudmFsdWU7XG5cbiAgICByZXR1cm4gcmVtYWluZGVyID8gcXVvdGllbnQgKyAxIDogcXVvdGllbnQ7XG4gIH0pO1xuXG4gIGNvbnN0IGNhcmRHYXA6IG51bWJlciA9IDE2O1xuICBjb25zdCBkb3RHYXA6IG51bWJlciA9IDg7XG4gIGNvbnN0IGRvdFdpZHRoOiBudW1iZXIgPSA4O1xuXG4gIGNvbnN0IGdldERvdENsYXNzID0gKGRvdEluZGV4OiBudW1iZXIpID0+IHtcbiAgICBsZXQgY2xhc3NOYW1lID0gJyc7XG5cbiAgICBpZiAoZG90SW5kZXggPT09IGN1cnJlbnRQYWdlSW5kZXgudmFsdWUpIGNsYXNzTmFtZSA9ICd0aWRlLWNhcm91c2VsLWRvdC1hY3RpdmUnO1xuICAgIGlmIChNYXRoLmFicyhjdXJyZW50UGFnZUluZGV4LnZhbHVlIC0gZG90SW5kZXgpID09PSAxKSBjbGFzc05hbWUgPSAndGlkZS1jYXJvdXNlbC1kb3QtbmVpZ2hib3InO1xuXG4gICAgcmV0dXJuIGNsYXNzTmFtZTtcbiAgfTtcblxuICBjb25zdCBtZWFzdXJlRG9tID0gKCkgPT4ge1xuICAgIGlmICghY29udGFpbmVyUmVmLnZhbHVlKSByZXR1cm47XG5cbiAgICBjb250ZW50V2lkdGgudmFsdWUgPSBjb250YWluZXJSZWYudmFsdWUuc2Nyb2xsV2lkdGg7XG4gICAgZnJhbWVXaWR0aC52YWx1ZSA9IGNvbnRhaW5lclJlZi52YWx1ZS5jbGllbnRXaWR0aDtcbiAgICBzaG93QnV0dG9ucy52YWx1ZSA9IGNvbnRlbnRXaWR0aC52YWx1ZSA+IGZyYW1lV2lkdGgudmFsdWU7XG4gIH07XG5cbiAgY29uc3Qgb2JzZXJ2ZVNsaWRlcyA9ICgpID0+IHtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgcm9vdDogY29udGFpbmVyUmVmPy52YWx1ZSxcbiAgICAgIHJvb3RNYXJnaW46ICcwcHggMXB4IDBweCAwcHgnLFxuICAgICAgdGhyZXNob2xkOiAxLFxuICAgIH07XG5cbiAgICBzbGlkZU9ic2VydmVyLnZhbHVlID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKChlbnRyaWVzKSA9PiB7XG4gICAgICBsZXQgc2xpZGVzQWRkZWRUb1ZpZXc6IG51bWJlcltdID0gW107XG5cbiAgICAgIGVudHJpZXMuZm9yRWFjaCgoZW50cnkpID0+IHtcbiAgICAgICAgY29uc3Qgc2xpZGVJbmRleCA9IHNsaWRlcy52YWx1ZS5pbmRleE9mKGVudHJ5LnRhcmdldCBhcyBIVE1MRWxlbWVudCk7XG5cbiAgICAgICAgaWYgKGVudHJ5LmlzSW50ZXJzZWN0aW5nKSB7XG4gICAgICAgICAgc2xpZGVzQWRkZWRUb1ZpZXcucHVzaChzbGlkZUluZGV4KTtcbiAgICAgICAgICBzbGlkZXNJblZpZXcudmFsdWUucHVzaChzbGlkZUluZGV4KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzbGlkZXNJblZpZXcudmFsdWUgPSBzbGlkZXNJblZpZXcudmFsdWUuZmlsdGVyKChzbGlkZSkgPT4gc2xpZGUgIT09IHNsaWRlSW5kZXgpO1xuICAgICAgICB9XG5cbiAgICAgICAgc2xpZGVzSW5WaWV3LnZhbHVlLnNvcnQoKGEsIGIpID0+IGEgLSBiKTtcbiAgICAgIH0pO1xuXG4gICAgICBpc0ZpcnN0U2xpZGUudmFsdWUgPSBzbGlkZXNJblZpZXcudmFsdWUuaW5jbHVkZXMoMCk7XG4gICAgICBpc0xhc3RTbGlkZS52YWx1ZSA9IHNsaWRlc0luVmlldy52YWx1ZS5pbmNsdWRlcyhzbGlkZXMudmFsdWUubGVuZ3RoIC0gMSk7XG5cbiAgICAgIGlmIChzbGlkZXNBZGRlZFRvVmlldy5sZW5ndGggPiAwKSBlbWl0KCdzbGlkZXNBZGRlZFRvVmlldycsIHNsaWRlc0FkZGVkVG9WaWV3KTtcbiAgICB9LCBvcHRpb25zKTtcblxuICAgIHNsaWRlcy52YWx1ZS5mb3JFYWNoKChjaGlsZCkgPT4ge1xuICAgICAgaWYgKHNsaWRlT2JzZXJ2ZXIudmFsdWUpIHNsaWRlT2JzZXJ2ZXIudmFsdWUub2JzZXJ2ZShjaGlsZCk7XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3Qgb2JzZXJ2ZVNsb3QgPSAoKSA9PiB7XG4gICAgY29uc3Qgb2JzZXJ2ZXJDYWxsYmFjayA9ICgpID0+IHtcbiAgICAgIGlmIChjb250YWluZXJSZWYudmFsdWUgPT09IG51bGwpIHJldHVybjtcblxuICAgICAgc2xpZGVzLnZhbHVlID0gQXJyYXkuZnJvbShjb250YWluZXJSZWYudmFsdWUuY2hpbGRyZW4pIGFzIEhUTUxFbGVtZW50W107XG4gICAgICBvYnNlcnZlU2xpZGVzKCk7XG4gICAgfTtcblxuICAgIHNsb3RPYnNlcnZlci52YWx1ZSA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKG9ic2VydmVyQ2FsbGJhY2spO1xuXG4gICAgaWYgKGNvbnRhaW5lclJlZi52YWx1ZSkgc2xvdE9ic2VydmVyLnZhbHVlLm9ic2VydmUoY29udGFpbmVyUmVmLnZhbHVlLCB7IGNoaWxkTGlzdDogdHJ1ZSB9KTtcbiAgfTtcblxuICBjb25zdCBzY3JvbGxUb09mZnNldCA9ICh0YXJnZXQ6IG51bWJlcikgPT4ge1xuICAgIGlmIChjb250YWluZXJSZWYudmFsdWUgPT09IG51bGwpIHJldHVybjtcblxuICAgIGNvbnN0IGxhc3RPZmZzZXQ6IG51bWJlciA9IHNsaWRlcy52YWx1ZVtzbGlkZXMudmFsdWUubGVuZ3RoIC0gMV0ub2Zmc2V0TGVmdDtcbiAgICBjb25zdCBwbGFjZW1lbnQgPSAodGFyZ2V0IC8gbGFzdE9mZnNldCkgKiBsYXN0UGFnZUluZGV4LnZhbHVlO1xuICAgIGNvbnN0IGlzU2Nyb2xsaW5nTGVmdCA9IHBsYWNlbWVudCA8PSBjdXJyZW50UGFnZUluZGV4LnZhbHVlO1xuXG4gICAgY3VycmVudFBhZ2VJbmRleC52YWx1ZSA9IGlzU2Nyb2xsaW5nTGVmdCA/IGN1cnJlbnRQYWdlSW5kZXgudmFsdWUgLSAxIDogY3VycmVudFBhZ2VJbmRleC52YWx1ZSArIDE7XG5cbiAgICBjb250YWluZXJSZWYudmFsdWUuc2Nyb2xsVG8oe1xuICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxuICAgICAgbGVmdDogdGFyZ2V0LFxuICAgIH0pO1xuICAgIHVwZGF0ZURvdHMoaXNTY3JvbGxpbmdMZWZ0KTtcbiAgfTtcblxuICBjb25zdCBzaG93TmV4dFBhZ2UgPSAoKSA9PiB7XG4gICAgaWYgKHNsaWRlc0luVmlldy52YWx1ZS5sZW5ndGggPT09IDApIHJldHVybjtcblxuICAgIGNvbnN0IG5leHRTbGlkZTogbnVtYmVyID0gc2xpZGVzSW5WaWV3LnZhbHVlW3NsaWRlc0luVmlldy52YWx1ZS5sZW5ndGggLSAxXSArIDE7XG5cbiAgICBzY3JvbGxUb09mZnNldChzbGlkZXMudmFsdWVbbmV4dFNsaWRlXS5vZmZzZXRMZWZ0KTtcbiAgfTtcblxuICBjb25zdCBzaG93UHJldmlvdXNQYWdlID0gKCkgPT4ge1xuICAgIGlmIChzbGlkZXNJblZpZXcudmFsdWUubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICBjb25zdCBwcmV2aW91c1NsaWRlOiBudW1iZXIgPSBzbGlkZXNJblZpZXcudmFsdWVbMF0gLSBzbGlkZXNJblZpZXcudmFsdWUubGVuZ3RoO1xuXG4gICAgc2Nyb2xsVG9PZmZzZXQoc2xpZGVzLnZhbHVlW3ByZXZpb3VzU2xpZGVdPy5vZmZzZXRMZWZ0IHx8IDApO1xuICB9O1xuXG4gIGNvbnN0IHNob3dOZXh0U2xpZGUgPSAoKSA9PiB7XG4gICAgaWYgKHNsaWRlc0luVmlldy52YWx1ZS5sZW5ndGggPT09IDApIHJldHVybjtcblxuICAgIGNvbnN0IG5leHRTbGlkZTogbnVtYmVyID0gc2xpZGVzSW5WaWV3LnZhbHVlLmxlbmd0aCA+IDEgPyBzbGlkZXNJblZpZXcudmFsdWVbMV0gOiBzbGlkZXNJblZpZXcudmFsdWVbMF0gKyAxO1xuXG4gICAgc2Nyb2xsVG9PZmZzZXQoc2xpZGVzLnZhbHVlW25leHRTbGlkZV0ub2Zmc2V0TGVmdCk7XG4gIH07XG5cbiAgY29uc3Qgc2hvd1ByZXZpb3VzU2xpZGUgPSAoKSA9PiB7XG4gICAgaWYgKHNsaWRlc0luVmlldy52YWx1ZS5sZW5ndGggPT09IDApIHJldHVybjtcblxuICAgIGNvbnN0IHByZXZpb3VzU2xpZGU6IG51bWJlciA9IHNsaWRlc0luVmlldy52YWx1ZVswXSAtIDE7XG5cbiAgICBzY3JvbGxUb09mZnNldChzbGlkZXMudmFsdWVbcHJldmlvdXNTbGlkZV0ub2Zmc2V0TGVmdCk7XG4gIH07XG5cbiAgY29uc3QgdXBkYXRlRG90cyA9IChpc1Njcm9sbGluZ0xlZnQ6IGJvb2xlYW4pID0+IHtcbiAgICBpZiAoIWRvdHNSZWYudmFsdWUgfHwgZG90Q291bnRWaXNpYmxlLnZhbHVlID49IHRvdGFsUGFnZXMudmFsdWUpIHJldHVybjtcblxuICAgIGNvbnN0IGlzT2RkRG90Q291bnQgPSBkb3RDb3VudFZpc2libGUudmFsdWUgJSAyICE9PSAwO1xuICAgIGNvbnN0IGNlbnRlckRvdCA9XG4gICAgICBpc09kZERvdENvdW50IHx8IGlzU2Nyb2xsaW5nTGVmdFxuICAgICAgICA/IE1hdGguZmxvb3IoZG90Q291bnRWaXNpYmxlLnZhbHVlIC8gMikgKyAxXG4gICAgICAgIDogTWF0aC5mbG9vcihkb3RDb3VudFZpc2libGUudmFsdWUgLyAyKTtcblxuICAgIGRvdHNSZWYudmFsdWUuc2Nyb2xsVG8oe1xuICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxuICAgICAgbGVmdDogY3VycmVudFBhZ2UudmFsdWUgPCBjZW50ZXJEb3QgPyAwIDogKGN1cnJlbnRQYWdlLnZhbHVlIC0gY2VudGVyRG90KSAqIChkb3RXaWR0aCArIGRvdEdhcCksXG4gICAgfSk7XG4gIH07XG5cbiAgb25Nb3VudGVkKCgpID0+IHtcbiAgICBpZiAoY29udGFpbmVyUmVmLnZhbHVlID09PSBudWxsKSByZXR1cm47XG5cbiAgICBzbGlkZXMudmFsdWUgPSBBcnJheS5mcm9tKGNvbnRhaW5lclJlZi52YWx1ZS5jaGlsZHJlbikgYXMgSFRNTEVsZW1lbnRbXTtcblxuICAgIG1lYXN1cmVEb20oKTtcbiAgICBvYnNlcnZlU2xpZGVzKCk7XG4gICAgb2JzZXJ2ZVNsb3QoKTtcblxuICAgIGlmICh3aW5kb3cpIHtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBtZWFzdXJlRG9tKTtcbiAgICB9XG4gIH0pO1xuXG4gIG9uVW5tb3VudGVkKCgpID0+IHtcbiAgICBzbGlkZU9ic2VydmVyLnZhbHVlPy5kaXNjb25uZWN0KCk7XG4gICAgc2xvdE9ic2VydmVyLnZhbHVlPy5kaXNjb25uZWN0KCk7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIG1lYXN1cmVEb20pO1xuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxzZWN0aW9uXG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtY2Fyb3VzZWwnLFxuICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICBDU1MuR0FQLk9ORSxcbiAgICAgIENTUy5XSURUSC5NQVhfRlVMTCxcbiAgICBdXCJcbiAgICByZWY9XCJjYXJvdXNlbFJlZlwiXG4gID5cbiAgICA8c2VjdGlvblxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIHByb3BzLnRpdGxlID8gQ1NTLkFYSVMxLkJFVFdFRU4gOiBDU1MuQVhJUzEuRU5ELCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuV0lEVEguRlVMTF1cIlxuICAgICAgdi1pZj1cIighcHJvcHMuaXNGbG9hdGluZyAmJiBzaG93QnV0dG9ucykgfHwgcHJvcHMudGl0bGVcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLldSQVAsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuT05FXVwiXG4gICAgICAgIHYtaWY9XCJwcm9wcy50aXRsZVwiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbaXNIZWFkbGluZTEgPyBDU1MuRk9OVC5ST0xFLkhFQURMSU5FXzEgOiBDU1MuRk9OVC5ST0xFLkhFQURMSU5FXzJdXCJcbiAgICAgICAgICB2LWlmPVwicHJvcHMudGl0bGVcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcHJvcHMudGl0bGUgfX1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzIsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICAgIHYtaWY9XCJwcm9wcy5zdWJ0aXRsZVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBwcm9wcy5zdWJ0aXRsZSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLk9ORV1cIlxuICAgICAgICB2LWlmPVwiIXByb3BzLmlzRmxvYXRpbmcgJiYgc2hvd0J1dHRvbnNcIlxuICAgICAgPlxuICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJpc0ZpcnN0U2xpZGVcIlxuICAgICAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX0xFRlRcIlxuICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlRFUlRJQVJZXCJcbiAgICAgICAgICBAY2xpY2s9XCJpc1Njcm9sbEJ5UGFnZSA/IHNob3dQcmV2aW91c1BhZ2UoKSA6IHNob3dQcmV2aW91c1NsaWRlKClcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICAgIDpkaXNhYmxlZD1cImlzTGFzdFNsaWRlXCJcbiAgICAgICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9SSUdIVFwiXG4gICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuVEVSVElBUllcIlxuICAgICAgICAgIEBjbGljaz1cImlzU2Nyb2xsQnlQYWdlID8gc2hvd05leHRQYWdlKCkgOiBzaG93TmV4dFNsaWRlKClcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9zZWN0aW9uPlxuXG4gICAgPHNsb3QgbmFtZT1cIm1pc2NcIiAvPlxuXG4gICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzEuQ0VOVEVSXVwiPlxuICAgICAgPHVsXG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1jYXJvdXNlbC1jb250YWluZXInLFxuICAgICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgICAgQ1NTLkdBUC5PTkUsXG4gICAgICAgICAgQ1NTLkxJU1RfQlVMTEVUUy5PRkYsXG4gICAgICAgICAgQ1NTLk9WRVJGTE9XLlguU0NST0xMLFxuICAgICAgICAgIENTUy5TQ1JPTExCQVIuT0ZGLFxuICAgICAgICAgIENTUy5TTkFQLk9OLFxuICAgICAgICBdXCJcbiAgICAgICAgcmVmPVwiY29udGFpbmVyUmVmXCJcbiAgICAgID5cbiAgICAgICAgPHNsb3QgLz5cbiAgICAgIDwvdWw+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLWNhcm91c2VsLWRvdHMtY29udGFpbmVyJyxcbiAgICAgICAgICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLkJPVFRPTSxcbiAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICAgICAgQ1NTLk1BUkdJTi5CT1RUT00uSEFMRixcbiAgICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgXVwiXG4gICAgICAgIDpzdHlsZT1cIntcbiAgICAgICAgICB3aWR0aDogYCR7ZG90Q29udGFpbmVyV2lkdGh9cHhgLFxuICAgICAgICB9XCJcbiAgICAgICAgdi1pZj1cImlzU2Nyb2xsQnlQYWdlICYmIGhhc0RvdHMgJiYgdG90YWxQYWdlcyA+IDFcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgJ3RpZGUtY2Fyb3VzZWwtZG90cycsXG4gICAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgICAgQ1NTLkFYSVMxLlNUQVJULFxuICAgICAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgICAgIENTUy5PVkVSRkxPVy5YLlNDUk9MTCxcbiAgICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgICAgICBDU1MuU0NST0xMQkFSLk9GRixcbiAgICAgICAgICBdXCJcbiAgICAgICAgICByZWY9XCJkb3RzUmVmXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICAgJ3RpZGUtY2Fyb3VzZWwtZG90JyxcbiAgICAgICAgICAgICAgQ1NTLkZMRVguU0hSSU5LLk9GRixcbiAgICAgICAgICAgICAgQ1NTLkhFSUdIVC5aRVJPLFxuICAgICAgICAgICAgICBDU1MuV0lEVEguWkVSTyxcbiAgICAgICAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgICAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgICAgICAgZ2V0RG90Q2xhc3MoaW5kZXgpLFxuICAgICAgICAgICAgXVwiXG4gICAgICAgICAgICA6a2V5PVwiaW5kZXhcIlxuICAgICAgICAgICAgdi1mb3I9XCIoXywgaW5kZXgpIGluIHRvdGFsUGFnZXNcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLWNhcm91c2VsLWJ1dHRvbi1vdmVybGF5JyxcbiAgICAgICAgICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLlRPUCxcbiAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgIENTUy5BWElTMS5CRVRXRUVOLFxuICAgICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgICAgQ1NTLkhFSUdIVC5GVUxMLFxuICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgICAgcHJvcHMuaXNIaWRlYXdheUJ1dHRvbnMgPyAnaGlkZWF3YXknIDogJycsXG4gICAgICAgIF1cIlxuICAgICAgICB2LWlmPVwiaXNGbG9hdGluZyAmJiBzaG93QnV0dG9uc1wiXG4gICAgICA+XG4gICAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuTUFSR0lOLkxFRlQuT05FLCBDU1MuUE9JTlRFUl9FVkVOVFMuT05dXCJcbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJpc0ZpcnN0U2xpZGVcIlxuICAgICAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX0xFRlRcIlxuICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICAgIEBjbGljaz1cImlzU2Nyb2xsQnlQYWdlID8gc2hvd1ByZXZpb3VzUGFnZSgpIDogc2hvd1ByZXZpb3VzU2xpZGUoKVwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5NQVJHSU4uUklHSFQuT05FLCBDU1MuUE9JTlRFUl9FVkVOVFMuT05dXCJcbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJpc0xhc3RTbGlkZVwiXG4gICAgICAgICAgOmljb249XCJJQ09OLkNIRVZST05fUklHSFRcIlxuICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICAgIEBjbGljaz1cImlzU2Nyb2xsQnlQYWdlID8gc2hvd05leHRQYWdlKCkgOiBzaG93TmV4dFNsaWRlKClcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvc2VjdGlvbj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWNhcm91c2VsLWJ1dHRvbi1vdmVybGF5LmhpZGVhd2F5IHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG5cbiAgLnRpZGUtY2Fyb3VzZWw6aG92ZXIgLnRpZGUtY2Fyb3VzZWwtYnV0dG9uLW92ZXJsYXkuaGlkZWF3YXkge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICAudGlkZS1jYXJvdXNlbC1kb3Qge1xuICAgIHdpZHRoOiA4cHg7XG4gICAgaGVpZ2h0OiA4cHg7XG4gICAgb3BhY2l0eTogMC43NTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNSk7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWNhcm91c2VsLWRvdC1uZWlnaGJvciB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwLjc1KTtcbiAgfVxuXG4gIC50aWRlLWNhcm91c2VsLWRvdC1hY3RpdmUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuXG4gIEBtZWRpYSAocG9pbnRlcjogY29hcnNlKSB7XG4gICAgLnRpZGUtY2Fyb3VzZWwgLnRpZGUtY2Fyb3VzZWwtYnV0dG9uLW92ZXJsYXkge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IEVMRU1FTlQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBUQVJHRVQgfSBmcm9tICdAL3R5cGVzL1RhcmdldCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBFbGVtZW50IH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGVsZW1lbnQ/OiBFbGVtZW50O1xuICAgIGhyZWY/OiBzdHJpbmc7XG4gICAgaXNOZXdUYWI/OiBib29sZWFuO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBlbGVtZW50OiBFTEVNRU5ULkxJTkssXG4gICAgaHJlZjogdW5kZWZpbmVkLFxuICAgIGlzTmV3VGFiOiBmYWxzZSxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtY2hpcC1hY3Rpb24nLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgIENTUy5QQURESU5HLlguT05FLFxuICAgICAgQ1NTLlBBRERJTkcuWS5IQUxGLFxuICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgIENTUy5GT05ULlJPTEUuTElOS18yLFxuICAgICAgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgQ1NTLlVOREVSTElORS5SRVNULk9GRixcbiAgICBdXCJcbiAgICA6aHJlZj1cInByb3BzLmhyZWZcIlxuICAgIDp0YXJnZXQ9XCJwcm9wcy5pc05ld1RhYiA/IFRBUkdFVC5CTEFOSyA6IFRBUkdFVC5TRUxGXCJcbiAgICA6dHlwZT1cImVsZW1lbnQgPT09IEVMRU1FTlQuQlVUVE9OID8gRUxFTUVOVC5CVVRUT04gOiB1bmRlZmluZWRcIlxuICAgIDppcz1cImVsZW1lbnRcIlxuICA+XG4gICAgPFRpZGVJY29uIDppY29uPVwiSUNPTi5TRUFSQ0hcIiAvPlxuXG4gICAgPHNwYW4+e3sgcHJvcHMubGFiZWwgfX08L3NwYW4+XG4gIDwvY29tcG9uZW50PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtY2hpcC1hY3Rpb246aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS12YXJpYW50KTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtYm9yZGVyLWhpZ2gpO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaXNBY3RpdmU6IGJvb2xlYW47XG4gICAgbGFiZWw6IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IGRlZmluZVByb3BzPFByb3BzPigpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGJ1dHRvblxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWNoaXAtZmlsdGVyJyxcbiAgICAgIHByb3BzLmlzQWN0aXZlXG4gICAgICAgID8gW0NTUy5CRy5TRUNPTkRBUlksIENTUy5GT05ULkNPTE9SLlNFQ09OREFSWV1cbiAgICAgICAgOiBbQ1NTLkJHLlNVUkZBQ0UuVkFSSUFOVCwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxUXSxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICBDU1MuUEFERElORy5YLk9ORSxcbiAgICAgIENTUy5QQURESU5HLlkuSEFMRixcbiAgICAgIENTUy5GT05ULlJPTEUuTEFCRUxfMixcbiAgICAgIHByb3BzLmlzQWN0aXZlID8gJ2FjdGl2ZScgOiAnJyxcbiAgICBdXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgPlxuICAgIDxzbG90IC8+XG4gICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMxLkNFTlRFUiwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5IQUxGXVwiPlxuICAgICAgPHNwYW4gOmNsYXNzPVwiW3Byb3BzLmlzQWN0aXZlID8gJycgOiAnaWNvbi1zcGFjaW5nJywgQ1NTLkZPTlQuUk9MRS5MQUJFTF8xLCBDU1MuV0hJVEVTUEFDRV9XUkFQLk9GRl1cIj5cbiAgICAgICAge3sgcHJvcHMubGFiZWwgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9idXR0b24+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAvKiBCb3JkZXIgbXVzdCBhbHdheXMgZXhpc3QgdG8gcHJldmVudCByZXNpemUgb24gaG92ZXIgc3RhdGUsIGJ1dCBtYXRjaCBiYWNrZ3JvdW5kIGNvbG9yIG9uIHJlc3Qgc3RhdGUgdG8gYmxlbmQgaW4uICovXG4gIC50aWRlLWNoaXAtZmlsdGVyIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS12YXJpYW50KTtcbiAgfVxuXG4gIC50aWRlLWNoaXAtZmlsdGVyLmFjdGl2ZSB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10aWRlLXNlY29uZGFyeSk7XG4gIH1cblxuICAudGlkZS1jaGlwLWZpbHRlcjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLXZhcmlhbnQpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLW9uLXN1cmZhY2UpO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IGRlZmluZVByb3BzPFByb3BzPigpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGJ1dHRvblxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWNoaXAtaW5wdXQnLFxuICAgICAgQ1NTLkJHLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgQ1NTLlBBRERJTkcuWC5PTkUsXG4gICAgICBDU1MuUEFERElORy5ZLkhBTEYsXG4gICAgICBDU1MuRk9OVC5ST0xFLkxBQkVMXzIsXG4gICAgXVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gID5cbiAgICA8c3Bhbj57eyBwcm9wcy5sYWJlbCB9fTwvc3Bhbj5cblxuICAgIDxUaWRlSWNvbiA6aWNvbj1cIklDT04uQ0xPU0VcIiAvPlxuICA8L2J1dHRvbj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWNoaXAtaW5wdXQge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtY2hpcC1pbnB1dDpob3ZlciB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10aWRlLWJvcmRlci1oaWdoKTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGhlYWRpbmc/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBoZWFkaW5nOiAnJyxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8c2VjdGlvbiBjbGFzcz1cInRpZGUtY29sdW1uc1wiPlxuICAgIDxoMiA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5CT1RUT00uSEFMRl1cIj5cbiAgICAgIHt7IHByb3BzLmhlYWRpbmcgfX1cbiAgICA8L2gyPlxuXG4gICAgPHVsIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5XUkFQLCBDU1MuR0FQLlRXTywgQ1NTLkxJU1RfQlVMTEVUUy5PRkZdXCI+XG4gICAgICA8bGkgY2xhc3M9XCJ0aWRlLWNvbHVtbnMtY29sdW1uXCI+XG4gICAgICAgIDxzbG90IG5hbWU9XCJzZWN0aW9uMVwiIC8+XG4gICAgICA8L2xpPlxuXG4gICAgICA8bGkgY2xhc3M9XCJ0aWRlLWNvbHVtbnMtY29sdW1uXCI+XG4gICAgICAgIDxzbG90IG5hbWU9XCJzZWN0aW9uMlwiIC8+XG4gICAgICA8L2xpPlxuXG4gICAgICA8bGkgY2xhc3M9XCJ0aWRlLWNvbHVtbnMtY29sdW1uXCI+XG4gICAgICAgIDxzbG90IG5hbWU9XCJzZWN0aW9uM1wiIC8+XG4gICAgICA8L2xpPlxuXG4gICAgICA8bGkgY2xhc3M9XCJ0aWRlLWNvbHVtbnMtY29sdW1uXCI+XG4gICAgICAgIDxzbG90IG5hbWU9XCJzZWN0aW9uNFwiIC8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gIDwvc2VjdGlvbj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWNvbHVtbnMtY29sdW1uIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gIEBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAgIC50aWRlLWNvbHVtbnMtY29sdW1uIHtcbiAgICAgIHdpZHRoOiBjYWxjKCgxMDAlIC0gMnJlbSkgLyAyKTtcbiAgICB9XG4gIH1cblxuICBAbWVkaWEgKG1pbi13aWR0aDogMTIzMnB4KSB7XG4gICAgLnRpZGUtY29sdW1ucy1jb2x1bW4ge1xuICAgICAgd2lkdGg6IGNhbGMoKDEwMCUgLSA2cmVtKSAvIDQpO1xuICAgIH1cbiAgfVxuPC9zdHlsZT5cbiIsImltcG9ydCB7IGluamVjdCwgcHJvdmlkZSwgcmVmIH0gZnJvbSAndnVlJztcblxuaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuXG50eXBlIFRpZGVGb3JtQ29udGV4dCA9IHtcbiAgZm9yY2VTaG93RXJyb3JzOiBSZWY8Ym9vbGVhbj47XG59O1xuXG5jb25zdCBGT1JNX0tFWSA9IFN5bWJvbCgndGlkZS1mb3JtJyk7XG5cbmV4cG9ydCBjb25zdCB1c2VUaWRlRm9ybSA9ICgpID0+IHtcbiAgY29uc3QgZm9yY2VTaG93RXJyb3JzID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcblxuICBwcm92aWRlPFRpZGVGb3JtQ29udGV4dD4oRk9STV9LRVksIHsgZm9yY2VTaG93RXJyb3JzIH0pO1xuXG4gIGNvbnN0IHJldmVhbFZhbGlkYXRpb25FcnJvcnMgPSAoKSA9PiB7XG4gICAgZm9yY2VTaG93RXJyb3JzLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICByZXR1cm4geyByZXZlYWxWYWxpZGF0aW9uRXJyb3JzIH07XG59O1xuXG5leHBvcnQgY29uc3QgdXNlRm9ybUNvbnRleHQgPSAoKSA9PiB7XG4gIHJldHVybiBpbmplY3Q8VGlkZUZvcm1Db250ZXh0PihGT1JNX0tFWSk7XG59O1xuIiwiPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbiAgaW1wb3J0IHsgdXNlVGlkZUZvcm0gfSBmcm9tICdAL2NvbXBvc2FibGVzL3VzZVRpZGVGb3JtJztcblxuICB0eXBlIEVtaXRzID0ge1xuICAgIChldmVudDogJ3N1Ym1pdCcsIGU6IFN1Ym1pdEV2ZW50KTogdm9pZDtcbiAgfTtcbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPEVtaXRzPigpO1xuXG4gIGNvbnN0IHsgcmV2ZWFsVmFsaWRhdGlvbkVycm9ycyB9ID0gdXNlVGlkZUZvcm0oKTtcblxuICBjb25zdCBoYW5kbGVTdWJtaXQgPSAoZTogU3VibWl0RXZlbnQpID0+IHtcbiAgICByZXZlYWxWYWxpZGF0aW9uRXJyb3JzKCk7XG4gICAgZW1pdCgnc3VibWl0JywgZSk7XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8Zm9ybVxuICAgIEBzdWJtaXQucHJldmVudD1cImhhbmRsZVN1Ym1pdFwiXG4gICAgbm92YWxpZGF0ZVxuICA+XG4gICAgPHNsb3QgLz5cbiAgPC9mb3JtPlxuPC90ZW1wbGF0ZT5cbiIsImV4cG9ydCBjb25zdCBPQkpFQ1RfRklUID0ge1xuICBDT05UQUlOOiAnY29udGFpbicsXG4gIENPVkVSOiAnY292ZXInLFxuICBTQ0FMRV9ET1dOOiAnc2NhbGUtZG93bicsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBPYmplY3RGaXQgPSAodHlwZW9mIE9CSkVDVF9GSVQpW2tleW9mIHR5cGVvZiBPQkpFQ1RfRklUXTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB7IE9CSkVDVF9GSVQgfSBmcm9tICdAL3R5cGVzL0ltYWdlJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgT2JqZWN0Rml0IH0gZnJvbSAnQC90eXBlcy9JbWFnZSc7XG4gIGltcG9ydCB0eXBlIHsgU291cmNlIH0gZnJvbSAnQC90eXBlcy9Tb3VyY2UnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgYWx0Pzogc3RyaW5nO1xuICAgIGhlaWdodD86IHN0cmluZztcbiAgICBpc0xhenk/OiBib29sZWFuO1xuICAgIG9iamVjdEZpdD86IE9iamVjdEZpdDtcbiAgICBzb3VyY2VzPzogU291cmNlW107XG4gICAgc3JjPzogc3RyaW5nO1xuICAgIHdpZHRoPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgYWx0OiAnJyxcbiAgICBoZWlnaHQ6IHVuZGVmaW5lZCxcbiAgICBpc0xhenk6IHRydWUsXG4gICAgb2JqZWN0Rml0OiBPQkpFQ1RfRklULkNPVkVSLFxuICAgIHNvdXJjZXM6ICgpID0+IFtdLFxuICAgIHNyYzogdW5kZWZpbmVkLFxuICAgIHdpZHRoOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IHBpY3R1cmUgPSByZWYoKTtcbiAgY29uc3QgaW1nID0gcmVmKCk7XG5cbiAgY29uc3QgaW1hZ2VEZWZhdWx0ID0gJ2h0dHBzOi8vY2RuLXN0YXRpYy50aWxhYnMuaW8vbWFya2V0cGxhY2UvY29tbW9uL2ltYWdlLWNvbWluZy1zb29uLnN2Zyc7XG5cbiAgY29uc3Qgb2JqZWN0Rml0Q2xhc3NOYW1lID0gY29tcHV0ZWQ8c3RyaW5nPigoKSA9PiB7XG4gICAgc3dpdGNoIChwcm9wcy5vYmplY3RGaXQpIHtcbiAgICAgIGNhc2UgT0JKRUNUX0ZJVC5DT05UQUlOOlxuICAgICAgICByZXR1cm4gQ1NTLk9CSkVDVC5DT05UQUlOO1xuICAgICAgY2FzZSBPQkpFQ1RfRklULkNPVkVSOlxuICAgICAgICByZXR1cm4gQ1NTLk9CSkVDVC5DT1ZFUjtcbiAgICAgIGNhc2UgT0JKRUNUX0ZJVC5TQ0FMRV9ET1dOOlxuICAgICAgICByZXR1cm4gQ1NTLk9CSkVDVC5TQ0FMRV9ET1dOO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIE9CSkVDVF9GSVQuQ09WRVI7XG4gICAgfVxuICB9KTtcblxuICBjb25zdCBzZXRJbWFnZUZyb21EZWZhdWx0ID0gKCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRTcmMgPSBpbWcudmFsdWU/LmN1cnJlbnRTcmM7XG4gICAgY29uc3QgcGljdHVyZVNvdXJjZSA9IHBpY3R1cmUudmFsdWU/LnF1ZXJ5U2VsZWN0b3IoYHNvdXJjZVtzcmNzZXQ9XCIke2N1cnJlbnRTcmN9XCJdYCk7XG5cbiAgICBpZiAoY3VycmVudFNyYyAmJiBwaWN0dXJlU291cmNlKSB7XG4gICAgICBwaWN0dXJlU291cmNlLnNyY3NldCA9IGltYWdlRGVmYXVsdDtcbiAgICB9IGVsc2UgaWYgKGltZy52YWx1ZSkge1xuICAgICAgaW1nLnZhbHVlLnNyYyA9IGltYWdlRGVmYXVsdDtcbiAgICB9XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8cGljdHVyZVxuICAgIDpjbGFzcz1cIlsndGlkZS1pbWFnZScsIENTUy5ESVNQTEFZLkJMT0NLXVwiXG4gICAgcmVmPVwicGljdHVyZVwiXG4gID5cbiAgICA8c291cmNlXG4gICAgICA6a2V5PVwic291cmNlLnNyY3NldFwiXG4gICAgICA6bWVkaWE9XCJgKG1pbi13aWR0aDoke3NvdXJjZS5tZWRpYX1weClgXCJcbiAgICAgIDpzcmNzZXQ9XCJzb3VyY2Uuc3Jjc2V0XCJcbiAgICAgIHYtZm9yPVwic291cmNlIGluIHByb3BzLnNvdXJjZXNcIlxuICAgIC8+XG5cbiAgICA8aW1nXG4gICAgICA6YWx0PVwiYWx0XCJcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW1hZ2UtaW1nJyxcbiAgICAgICAgIXByb3BzLndpZHRoICYmIENTUy5XSURUSC5GVUxMLFxuICAgICAgICAhcHJvcHMuaGVpZ2h0ICYmIENTUy5IRUlHSFQuRlVMTCxcbiAgICAgICAgQ1NTLk9CSkVDVC5DRU5URVIsXG4gICAgICAgIG9iamVjdEZpdENsYXNzTmFtZSxcbiAgICAgIF1cIlxuICAgICAgOmZldGNocHJpb3JpdHk9XCJpc0xhenkgPyB1bmRlZmluZWQgOiAnaGlnaCdcIlxuICAgICAgOmhlaWdodD1cInByb3BzLmhlaWdodFwiXG4gICAgICA6bG9hZGluZz1cInByb3BzLmlzTGF6eSA/ICdsYXp5JyA6ICdlYWdlcidcIlxuICAgICAgcmVmPVwiaW1nXCJcbiAgICAgIDpzcmM9XCJzcmMgPz8gaW1hZ2VEZWZhdWx0XCJcbiAgICAgIDp3aWR0aD1cInByb3BzLndpZHRoXCJcbiAgICAgIEBlcnJvcj1cInNldEltYWdlRnJvbURlZmF1bHRcIlxuICAgIC8+XG4gIDwvcGljdHVyZT5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWltYWdlLWltZyB7XG4gICAgYm9yZGVyLXJhZGl1czogaW5oZXJpdDtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCBUaWRlSW1hZ2UgZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJbWFnZS52dWUnO1xuICBpbXBvcnQgeyBPQkpFQ1RfRklUIH0gZnJvbSAnQC90eXBlcy9JbWFnZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IFNvdXJjZSB9IGZyb20gJ0AvdHlwZXMvU291cmNlJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGFsdD86IHN0cmluZztcbiAgICBpc0xhenk/OiBib29sZWFuO1xuICAgIHNvdXJjZXM/OiBTb3VyY2VbXTtcbiAgICBzcmM/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBhbHQ6ICcnLFxuICAgIGlzTGF6eTogdHJ1ZSxcbiAgICBzb3VyY2VzOiAoKSA9PiBbXSxcbiAgICBzcmM6IHVuZGVmaW5lZCxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1pbWFnZS1iYWNrZ3JvdW5kJywgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLCBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLCBDU1MuSVNPTEFUSU9OLklTT0xBVEVdXCI+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gICAgICAgIENTUy5IRUlHSFQuRlVMTCxcbiAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8VGlkZUltYWdlXG4gICAgICAgIDphbHQ9XCJwcm9wcy5hbHRcIlxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5IRUlHSFQuRlVMTF1cIlxuICAgICAgICA6aXMtbGF6eT1cInByb3BzLmlzTGF6eVwiXG4gICAgICAgIDpvYmplY3QtZml0PVwiT0JKRUNUX0ZJVC5DT1ZFUlwiXG4gICAgICAgIDpzb3VyY2VzPVwicHJvcHMuc291cmNlc1wiXG4gICAgICAgIDpzcmM9XCJwcm9wcy5zcmNcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxzbG90IC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgOmRlZXAoLnRpZGUtaW1hZ2UpIHtcbiAgICB6LWluZGV4OiAtMTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGxhYmVsPzogc3RyaW5nIHwgbnVtYmVyO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtaW5kaWNhdG9yJyxcbiAgICAgIHByb3BzLmxhYmVsID8gJycgOiAnZG90JyxcbiAgICAgIENTUy5ESVNQTEFZLklOTElORV9CTE9DSyxcbiAgICAgIENTUy5BTElHTi5YLkNFTlRFUixcbiAgICAgIENTUy5CRy5HTE9CQUwuUFJJTUFSWS5FUlJPUixcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICBwcm9wcy5sYWJlbCAmJiBwcm9wcy5sYWJlbC50b1N0cmluZygpLmxlbmd0aCA+IDEgPyBbQ1NTLlBBRERJTkcuWC5IQUxGXSA6IFtdLFxuICAgICAgcHJvcHMubGFiZWxcbiAgICAgICAgPyBbQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzMsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuSU5WRVJTRV1cbiAgICAgICAgOiBbQ1NTLkJPUkRFUi5GVUxMLk9ORV0sXG4gICAgXVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbJ3RpZGUtaW5kaWNhdG9yLWxhYmVsJ11cIlxuICAgICAgdi1pZj1cInByb3BzLmxhYmVsXCJcbiAgICA+XG4gICAgICB7eyBwcm9wcy5sYWJlbCB9fVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWluZGljYXRvcjpub3QoLmRvdCkge1xuICAgIG1pbi13aWR0aDogMXJlbTtcbiAgICBtaW4taGVpZ2h0OiAxcmVtO1xuICB9XG5cbiAgLnRpZGUtaW5kaWNhdG9yLmRvdCB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10aWRlLWdyYXktMTAwKTtcbiAgICB3aWR0aDogMTBweDtcbiAgICBoZWlnaHQ6IDEwcHg7XG4gIH1cblxuICAudGlkZS1pbmRpY2F0b3ItbGFiZWwge1xuICAgIC8qIFVzZSBib3R0b20td2VpZ2h0aW5nIHRvIG9mZnNldCB0aGUgbWF0aGVtYXRpY2FsIGNlbnRlciB0byB0aGUgb3B0aWNhbCBjZW50ZXIuICovXG4gICAgbWFyZ2luLXRvcDogLTFweDtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBpc0Vycm9yOiBib29sZWFuO1xuICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgfTtcbiAgZGVmaW5lUHJvcHM8UHJvcHM+KCk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBDU1MuRk9OVC5ST0xFLkxBQkVMXzMsXG4gICAgICBpc0Vycm9yID8gW0NTUy5GT05ULkNPTE9SLkdMT0JBTC5FUlJPUl0gOiBbQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxUXSxcbiAgICBdXCJcbiAgPlxuICAgIDxUaWRlSWNvblxuICAgICAgOmNsYXNzPVwiW0NTUy5GTEVYLlNIUklOSy5PRkZdXCJcbiAgICAgIDppY29uPVwiSUNPTi5FUlJPUlwiXG4gICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgdi1pZj1cImlzRXJyb3JcIlxuICAgIC8+XG5cbiAgICA8ZGl2PlxuICAgICAge3sgbWVzc2FnZSB9fVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG4iLCJpbXBvcnQgeyBmb3JtYXROdW1iZXIgfSBmcm9tICdAL3V0aWxpdGllcy9mb3JtYXQnO1xuXG5pbXBvcnQgdHlwZSB7IFZhbGlkYXRpb25MZW5ndGgsIFZhbGlkYXRpb25SZXN1bHQsIFZhbGlkYXRvciB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbic7XG5pbXBvcnQgdHlwZSB7IFJlZiB9IGZyb20gJ3Z1ZSc7XG5cbmV4cG9ydCBjb25zdCBlcnJvck1lc3NhZ2VEZWZhdWx0ID0gJ1BsZWFzZSBlbnRlciBhIHZhbGlkIHZhbHVlJztcblxuZXhwb3J0IGNvbnN0IFZBTElEQVRJT05fUkVTVUxUID0ge1xuICBOT19FUlJPUjoge1xuICAgIG1lc3NhZ2U6ICcnLFxuICAgIHZhbGlkOiB0cnVlLFxuICB9LFxuICBSRVFVSVJFRDoge1xuICAgIG1lc3NhZ2U6ICdQbGVhc2UgZmlsbCBvdXQgdGhpcyBmaWVsZCcsXG4gICAgdmFsaWQ6IGZhbHNlLFxuICB9LFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IGNoZWNrRm9ybWF0ID0gKGZvcm1hdDogUmVnRXhwLCBtZXNzYWdlPzogc3RyaW5nKSA9PiB7XG4gIHJldHVybiAodmFsdWU6IHN0cmluZyk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICAgIGxldCByZXN1bHQ6IFZhbGlkYXRpb25SZXN1bHQgPSBWQUxJREFUSU9OX1JFU1VMVC5OT19FUlJPUjtcblxuICAgIGlmICghdmFsdWUudHJpbSgpLm1hdGNoKGZvcm1hdCkpIHtcbiAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgbWVzc2FnZTogbWVzc2FnZSA/PyBlcnJvck1lc3NhZ2VEZWZhdWx0LFxuICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RmllbGRMZW5ndGhJc1ZhbGlkID0gKHsgbWF4bGVuZ3RoLCBtaW5sZW5ndGgsIHJlcXVpcmVkLCB2YWx1ZSB9OiBWYWxpZGF0aW9uTGVuZ3RoKSA9PiB7XG4gIGNvbnN0IGlzRW1wdHlBbmRVbnJlcXVpcmVkID0gdmFsdWUubGVuZ3RoID09PSAwICYmICFyZXF1aXJlZDtcbiAgY29uc3QgaXNUb29Mb25nID0gbWF4bGVuZ3RoICYmIHZhbHVlLmxlbmd0aCA+IG1heGxlbmd0aDtcbiAgY29uc3QgaXNUb29TaG9ydCA9ICFpc0VtcHR5QW5kVW5yZXF1aXJlZCAmJiBtaW5sZW5ndGggJiYgdmFsdWUubGVuZ3RoIDwgbWlubGVuZ3RoO1xuICByZXR1cm4gIWlzVG9vU2hvcnQgJiYgIWlzVG9vTG9uZztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRGaWVsZFZhbGlkYXRpb25SZXN1bHQgPSAoe1xuICBlcnJvckZyb21Qcm9wcyxcbiAgbWF4bGVuZ3RoLFxuICBtaW5sZW5ndGgsXG4gIHJlcXVpcmVkLFxuICB2YWxpZGF0b3JzLFxuICB2YWx1ZSxcbn06IHtcbiAgZXJyb3JGcm9tUHJvcHM6IHN0cmluZztcbiAgbWF4bGVuZ3RoPzogbnVtYmVyO1xuICBtaW5sZW5ndGg/OiBudW1iZXI7XG4gIHJlcXVpcmVkOiBib29sZWFuO1xuICB2YWxpZGF0b3JzPzogVmFsaWRhdG9yW107XG4gIHZhbHVlOiBSZWY8c3RyaW5nPjtcbn0pOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgLy8gZXJyb3IgaW4gcHJvcHMgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHZhbGlkYXRpb24gZXJyb3JcbiAgaWYgKGVycm9yRnJvbVByb3BzICE9PSAnJylcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3JGcm9tUHJvcHMsXG4gICAgICB2YWxpZDogZmFsc2UsXG4gICAgfTtcblxuICAvLyBjdXN0b20gdmFsaWRhdG9yIHByb3AgZXJyb3JzIGZyb20gaGF2ZSBzZWNvbmQgaGlnaGVzdCBwcmVjZWRlbmNlXG4gIGlmICh2YWxpZGF0b3JzKSB7XG4gICAgY29uc3QgdmFsaWRhdGlvbiA9IHZhbGlkYXRlUHJvcGVydHkodmFsdWUudmFsdWUsIHZhbGlkYXRvcnMpO1xuXG4gICAgaWYgKCF2YWxpZGF0aW9uLnZhbGlkKSB7XG4gICAgICByZXR1cm4gdmFsaWRhdGlvbjtcbiAgICB9XG4gIH1cblxuICAvLyBhbGwgb3RoZXIgcHJvcC1iYXNlZCBlcnJvcnMgY29tZSBsYXN0XG4gIGlmIChyZXF1aXJlZCAmJiB2YWx1ZS52YWx1ZT8udHJpbSgpID09PSAnJykge1xuICAgIHJldHVybiBWQUxJREFUSU9OX1JFU1VMVC5SRVFVSVJFRDtcbiAgfVxuXG4gIGlmIChtYXhsZW5ndGggfHwgbWlubGVuZ3RoKSB7XG4gICAgY29uc3QgbGVuZ3RoVmFsaWRhdGlvbiA9IHZhbGlkYXRlTGVuZ3RoKHtcbiAgICAgIG1heGxlbmd0aCxcbiAgICAgIG1pbmxlbmd0aCxcbiAgICAgIHJlcXVpcmVkLFxuICAgICAgdmFsdWU6IHZhbHVlLnZhbHVlLFxuICAgIH0pO1xuXG4gICAgaWYgKCFsZW5ndGhWYWxpZGF0aW9uLnZhbGlkKSB7XG4gICAgICByZXR1cm4gbGVuZ3RoVmFsaWRhdGlvbjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFZBTElEQVRJT05fUkVTVUxULk5PX0VSUk9SO1xufTtcblxuZXhwb3J0IGNvbnN0IHZhbGlkYXRlTGVuZ3RoID0gKHsgbWF4bGVuZ3RoLCBtaW5sZW5ndGgsIHJlcXVpcmVkLCB2YWx1ZSB9OiBWYWxpZGF0aW9uTGVuZ3RoKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gIGNvbnN0IHJlc3BvbnNlID0ge1xuICAgIG1lc3NhZ2U6ICcnLFxuICAgIHZhbGlkOiB0cnVlLFxuICB9O1xuXG4gIHJlc3BvbnNlLnZhbGlkID0gZ2V0RmllbGRMZW5ndGhJc1ZhbGlkKHtcbiAgICBtYXhsZW5ndGgsXG4gICAgbWlubGVuZ3RoLFxuICAgIHJlcXVpcmVkLFxuICAgIHZhbHVlLFxuICB9KTtcblxuICBpZiAocmVzcG9uc2UudmFsaWQpIHJldHVybiByZXNwb25zZTtcblxuICByZXNwb25zZS5tZXNzYWdlID0gZXJyb3JNZXNzYWdlRGVmYXVsdDtcblxuICBpZiAobWF4bGVuZ3RoICYmIG1pbmxlbmd0aCkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBgRW50ZXIgYSB2YWx1ZSBiZXR3ZWVuICR7Zm9ybWF0TnVtYmVyKG1pbmxlbmd0aCl9IGFuZCAke2Zvcm1hdE51bWJlcihtYXhsZW5ndGgpfSBjaGFyYWN0ZXJzYDtcbiAgfSBlbHNlIGlmIChtYXhsZW5ndGgpIHtcbiAgICByZXNwb25zZS5tZXNzYWdlID0gYFVzZSAke2Zvcm1hdE51bWJlcihtYXhsZW5ndGgpfSBjaGFyYWN0ZXJzIG9yIGZld2VyYDtcbiAgfSBlbHNlIGlmIChtaW5sZW5ndGgpIHtcbiAgICByZXNwb25zZS5tZXNzYWdlID0gYEVudGVyIGF0IGxlYXN0ICR7Zm9ybWF0TnVtYmVyKG1pbmxlbmd0aCl9IGNoYXJhY3RlcnNgO1xuICB9XG5cbiAgcmV0dXJuIHJlc3BvbnNlO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlUHJvcGVydHkodmFsdWU6IHN0cmluZywgdmFsaWRhdG9yczogKCh2YWx1ZTogc3RyaW5nKSA9PiBWYWxpZGF0aW9uUmVzdWx0KVtdKTogVmFsaWRhdGlvblJlc3VsdCB7XG4gIGZvciAoY29uc3QgdmFsaWRhdG9yIG9mIHZhbGlkYXRvcnMpIHtcbiAgICBjb25zdCB2YWxpZGF0aW9uID0gdmFsaWRhdG9yKHZhbHVlKTtcbiAgICBpZiAoIXZhbGlkYXRpb24udmFsaWQpIHtcbiAgICAgIHJldHVybiB2YWxpZGF0aW9uO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbWVzc2FnZTogJycsXG4gICAgdmFsaWQ6IHRydWUsXG4gIH07XG59XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmLCB3YXRjaCwgd2F0Y2hFZmZlY3QgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IFRpZGVJbnB1dFN1cHBvcnRpbmdUZXh0IGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSW5wdXRTdXBwb3J0aW5nVGV4dC52dWUnO1xuICBpbXBvcnQgeyB1c2VGb3JtQ29udGV4dCB9IGZyb20gJ0AvY29tcG9zYWJsZXMvdXNlVGlkZUZvcm0nO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZm9ybWF0TnVtYmVyIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcbiAgaW1wb3J0IHsgVkFMSURBVElPTl9SRVNVTFQgfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uJztcblxuICBpbXBvcnQgdHlwZSB7IFZhbGlkYXRpb25SZXN1bHQgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGVycm9yPzogc3RyaW5nO1xuICAgIGluZGV0ZXJtaW5hdGU/OiBib29sZWFuO1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIG51bWJlcj86IG51bWJlcjtcbiAgICByZXF1aXJlZD86IGJvb2xlYW47XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZXJyb3I6ICcnLFxuICAgIGluZGV0ZXJtaW5hdGU6IGZhbHNlLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICBudW1iZXI6IHVuZGVmaW5lZCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gIH0pO1xuXG4gIHR5cGUgRW1pdHMgPSB7XG4gICAgKGV2ZW50OiAndmFsaWQnLCB2YWxpZDogYm9vbGVhbik6IHZvaWQ7XG4gIH07XG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czxFbWl0cz4oKTtcblxuICBjb25zdCBtb2RlbFZhbHVlID0gZGVmaW5lTW9kZWw8Ym9vbGVhbj4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICBjb25zdCBmb3JtQ29udGV4dCA9IHVzZUZvcm1Db250ZXh0KCk7XG5cbiAgY29uc3QgaXNWYWxpZGF0aW5nID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgZXJyb3JSZWYgPSByZWY8VmFsaWRhdGlvblJlc3VsdD4oVkFMSURBVElPTl9SRVNVTFQuTk9fRVJST1IpO1xuXG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3QgaXNDaGVja2VkID0gY29tcHV0ZWQoKCkgPT4gbW9kZWxWYWx1ZS52YWx1ZSB8fCBwcm9wcy5pbmRldGVybWluYXRlKTtcbiAgY29uc3Qgc2hvd0Vycm9yID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmIChoYXNFcnJvckZyb21Qcm9wLnZhbHVlKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoIWlzVmFsaWRhdGluZy52YWx1ZSkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiAhZXJyb3JSZWYudmFsdWUudmFsaWQ7XG4gIH0pO1xuICBjb25zdCBoYXNFcnJvckZyb21Qcm9wID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMuZXJyb3IgIT09ICcnKTtcbiAgY29uc3Qgc3VwcG9ydGluZ1RleHRNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4gc2hvd0Vycm9yLnZhbHVlICYmIGVycm9yUmVmLnZhbHVlLm1lc3NhZ2UpO1xuXG4gIGNvbnN0IGdldENoZWNrYm94VmFsaWRhdGlvblJlc3VsdCA9ICgpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgICBpZiAocHJvcHMuZXJyb3IgIT09ICcnKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbWVzc2FnZTogcHJvcHMuZXJyb3IsXG4gICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgIH07XG4gICAgaWYgKCFwcm9wcy5yZXF1aXJlZCB8fCBpc0NoZWNrZWQudmFsdWUpIHJldHVybiBWQUxJREFUSU9OX1JFU1VMVC5OT19FUlJPUjtcbiAgICByZXR1cm4gVkFMSURBVElPTl9SRVNVTFQuUkVRVUlSRUQ7XG4gIH07XG5cbiAgd2F0Y2hFZmZlY3QoKCkgPT4ge1xuICAgIGVycm9yUmVmLnZhbHVlID0gZ2V0Q2hlY2tib3hWYWxpZGF0aW9uUmVzdWx0KCk7XG4gIH0pO1xuXG4gIHdhdGNoKFxuICAgIG1vZGVsVmFsdWUsXG4gICAgKCkgPT4ge1xuICAgICAgaWYgKG1vZGVsVmFsdWUudmFsdWUpIGlzVmFsaWRhdGluZy52YWx1ZSA9IHRydWU7XG4gICAgfSxcbiAgICB7IGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gZm9ybUNvbnRleHQ/LmZvcmNlU2hvd0Vycm9ycy52YWx1ZSxcbiAgICAobmV3VmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSkgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcblxuICB3YXRjaChcbiAgICBlcnJvclJlZixcbiAgICAoKSA9PiB7XG4gICAgICBlbWl0KCd2YWxpZCcsIGVycm9yUmVmLnZhbHVlLnZhbGlkKTtcbiAgICB9LFxuICAgIHsgZGVlcDogdHJ1ZSwgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWlucHV0LWNoZWNrYm94JywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLkdBUC5RVUFSVEVSXVwiPlxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMSxcbiAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICBDU1MuVVNFUl9TRUxFQ1QuTk9ORSxcbiAgICAgICAgc2hvd0Vycm9yID8gQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLkVSUk9SIDogQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBkaXNhYmxlZCA/IFtDU1MuT1BBQ0lUWS5ESVNBQkxFRCwgQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRF0gOiBbQ1NTLkNVUlNPUi5QT0lOVEVSXSxcbiAgICAgIF1cIlxuICAgICAgOmZvcj1cImlucHV0SWRcIlxuICAgID5cbiAgICAgIDxpbnB1dFxuICAgICAgICA6Y2hlY2tlZD1cImlzQ2hlY2tlZFwiXG4gICAgICAgIDpjbGFzcz1cIlsndGlkZS1zY3JlZW4tcmVhZGVyLW9ubHknXVwiXG4gICAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICAgICAgOm5hbWU9XCJuYW1lXCJcbiAgICAgICAgcmVmPVwiaW5wdXRcIlxuICAgICAgICA6aWQ9XCJpbnB1dElkXCJcbiAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgdi1tb2RlbD1cIm1vZGVsVmFsdWVcIlxuICAgICAgLz5cblxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtaW5wdXQtY2hlY2tib3gtY3VzdG9tJyxcbiAgICAgICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5RVUFSVEVSLFxuICAgICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgICAgQ1NTLkZMRVguU0hSSU5LLk9GRixcbiAgICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgICAgaXNDaGVja2VkXG4gICAgICAgICAgICA/IFtzaG93RXJyb3IgPyBDU1MuQkcuR0xPQkFMLlBSSU1BUlkuRVJST1IgOiBbQ1NTLkJHLlNFQ09OREFSWSwgQ1NTLkJPUkRFUi5DT0xPUi5ISUdIXV1cbiAgICAgICAgICAgIDogW1xuICAgICAgICAgICAgICAgIHNob3dFcnJvclxuICAgICAgICAgICAgICAgICAgPyBbQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuRVJST1IsIENTUy5CRy5HTE9CQUwuU1VSRkFDRS5FUlJPUl1cbiAgICAgICAgICAgICAgICAgIDogW0NTUy5CT1JERVIuQ09MT1IuREVGQVVMVCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgIF1cIlxuICAgICAgPlxuICAgICAgICA8VGlkZUljb25cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU0VDT05EQVJZXVwiXG4gICAgICAgICAgOmljb249XCJpbmRldGVybWluYXRlID8gSUNPTi5SRU1PVkUgOiBJQ09OLkNIRUNLXCJcbiAgICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICAgIHYtaWY9XCJpc0NoZWNrZWRcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5BWElTMS5CRVRXRUVOLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5HUk9XLk9OLCBDU1MuRk9OVC5ST0xFLkJPRFlfMV1cIlxuICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgPlxuICAgICAgICA8c3Bhbj57eyBmb3JtYXR0ZWRMYWJlbCB9fTwvc3Bhbj5cblxuICAgICAgICA8c3BhblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgICB2LWlmPVwibnVtYmVyXCJcbiAgICAgICAgPlxuICAgICAgICAgICh7eyBmb3JtYXROdW1iZXIobnVtYmVyKSB9fSlcbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9sYWJlbD5cblxuICAgIDxUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dFxuICAgICAgOm1lc3NhZ2U9XCJzdXBwb3J0aW5nVGV4dE1lc3NhZ2VcIlxuICAgICAgaXMtZXJyb3JcbiAgICAgIHYtaWY9XCJzdXBwb3J0aW5nVGV4dE1lc3NhZ2VcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW5wdXQtY2hlY2tib3gge1xuICAgIGFsaWduLXNlbGY6IHN0YXJ0O1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtY2hlY2tib3gtY3VzdG9tIHtcbiAgICB3aWR0aDogMjRweDtcbiAgICBoZWlnaHQ6IDI0cHg7XG4gIH1cblxuICBsYWJlbDpoYXMoaW5wdXQ6Zm9jdXMtdmlzaWJsZSkge1xuICAgIG91dGxpbmU6IGF1dG87XG4gICAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYFRpZGVJbnB1dENoZWNrYm94LnZ1ZWAgaW1wb3J0ZWQgZnJvbSAndGlkZS1kZXNpZ24tc3lzdGVtJyBucG0gcGFja2FnZSBpbnN0ZWFkLlxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IGZvcm1hdE51bWJlciB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBjaGVja2VkPzogYm9vbGVhbjtcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgaW5kZXRlcm1pbmF0ZT86IGJvb2xlYW47XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBsYWJlbD86IHN0cmluZztcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIG51bWJlcj86IG51bWJlcjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBpbmRldGVybWluYXRlOiBmYWxzZSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBuYW1lOiB1bmRlZmluZWQsXG4gICAgbnVtYmVyOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IGlzQ2hlY2tlZCA9IGNvbXB1dGVkKCgpID0+IHByb3BzLmNoZWNrZWQgfHwgcHJvcHMuaW5kZXRlcm1pbmF0ZSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtaW5wdXQtY2hlY2tib3gnLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMSxcbiAgICAgIGRpc2FibGVkID8gWydkaXNhYmxlZCcsIENTUy5QT0lOVEVSX0VWRU5UUy5PRkZdIDogQ1NTLkNVUlNPUi5QT0lOVEVSLFxuICAgIF1cIlxuICA+XG4gICAgPGlucHV0XG4gICAgICA6Y2hlY2tlZD1cImlzQ2hlY2tlZFwiXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuTk9ORV1cIlxuICAgICAgOmRpc2FibGVkPVwicHJvcHMuZGlzYWJsZWRcIlxuICAgICAgOm5hbWU9XCJwcm9wcy5uYW1lXCJcbiAgICAgIHJlZj1cImlucHV0XCJcbiAgICAgIEBjbGljay5wcmV2ZW50XG4gICAgICA6aWQ9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgLz5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtY2hlY2tib3gtY3VzdG9tJyxcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuRkxFWC5TSFJJTksuT0ZGLFxuICAgICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgICBpc0NoZWNrZWQgPyBbQ1NTLkJPUkRFUi5DT0xPUi5ISUdILCBDU1MuQkcuU0VDT05EQVJZXSA6IFtDU1MuQk9SREVSLkNPTE9SLkRFRkFVTFQsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5RVUFSVEVSLFxuICAgICAgICBpc0NoZWNrZWQgJiYgJ2NoZWNrZWQnLFxuICAgICAgICBkaXNhYmxlZCA/IENTUy5DVVJTT1IuTk9UX0FMTE9XRUQgOiBDU1MuQ1VSU09SLlBPSU5URVIsXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNFQ09OREFSWV1cIlxuICAgICAgICA6aWNvbj1cInByb3BzLmluZGV0ZXJtaW5hdGUgPyBJQ09OLlJFTU9WRSA6IElDT04uQ0hFQ0tcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwiaXNDaGVja2VkXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8bGFiZWxcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMxLkJFVFdFRU4sXG4gICAgICAgIENTUy5GTEVYLkdST1cuT04sXG4gICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICBkaXNhYmxlZCA/IENTUy5DVVJTT1IuTk9UX0FMTE9XRUQgOiBDU1MuQ1VSU09SLlBPSU5URVIsXG4gICAgICBdXCJcbiAgICAgIDpmb3I9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgIEBjbGljay5wcmV2ZW50XG4gICAgICB2LWlmPVwibGFiZWxcIlxuICAgID5cbiAgICAgIDxzcGFuPnt7IGxhYmVsIH19PC9zcGFuPlxuICAgICAgPHNwYW5cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICB2LWlmPVwicHJvcHMubnVtYmVyXCJcbiAgICAgID5cbiAgICAgICAgKHt7IGZvcm1hdE51bWJlcihwcm9wcy5udW1iZXIpIH19KVxuICAgICAgPC9zcGFuPlxuICAgIDwvbGFiZWw+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW5wdXQtY2hlY2tib3guZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IHZhcigtLXRpZGUtZGlzYWJsZWQpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtY2hlY2tib3gtY3VzdG9tIHtcbiAgICB3aWR0aDogMjRweDtcbiAgICBoZWlnaHQ6IDI0cHg7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBmb3JtYXROdW1iZXIgfSBmcm9tICdAL3V0aWxpdGllcy9mb3JtYXQnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgbnVtYmVyPzogbnVtYmVyO1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbnVtYmVyOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IG1vZGVsVmFsdWUgPSBkZWZpbmVNb2RlbDxzdHJpbmc+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3QgaXNDaGVja2VkID0gY29tcHV0ZWQoKCkgPT4gbW9kZWxWYWx1ZS52YWx1ZSA9PT0gcHJvcHMudmFsdWUpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGxhYmVsXG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtaW5wdXQtcmFkaW8nLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICBDU1MuVVNFUl9TRUxFQ1QuTk9ORSxcbiAgICAgIHByb3BzLmRpc2FibGVkID8gW0NTUy5PUEFDSVRZLkRJU0FCTEVELCBDU1MuQ1VSU09SLk5PVF9BTExPV0VEXSA6IFtDU1MuQ1VSU09SLlBPSU5URVJdLFxuICAgIF1cIlxuICAgIDpmb3I9XCJwcm9wcy5pbnB1dElkXCJcbiAgPlxuICAgIDxpbnB1dFxuICAgICAgOmNsYXNzPVwiWyd0aWRlLXNjcmVlbi1yZWFkZXItb25seSddXCJcbiAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICA6dmFsdWU9XCJ2YWx1ZVwiXG4gICAgICA6aWQ9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICB2LW1vZGVsPVwibW9kZWxWYWx1ZVwiXG4gICAgLz5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtcmFkaW8tY3VzdG9tJyxcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgICBpc0NoZWNrZWQgPyBbQ1NTLkJPUkRFUi5DT0xPUi5ISUdIXSA6IFtDU1MuQk9SREVSLkNPTE9SLkRFRkFVTFRdLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBDU1MuQ1VSU09SLlBPSU5URVIsXG4gICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PTixcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWlucHV0LXJhZGlvLWNoZWNrJywgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCwgaXNDaGVja2VkICYmIENTUy5CRy5TRUNPTkRBUlldXCIgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkdST1cuT04sIENTUy5BWElTMS5CRVRXRUVOLCBDU1MuRk9OVC5ST0xFLkJPRFlfMV1cIj5cbiAgICAgIDxzcGFuPnt7IGxhYmVsIH19PC9zcGFuPlxuICAgICAgPHNwYW5cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICB2LWlmPVwicHJvcHMubnVtYmVyXCJcbiAgICAgID5cbiAgICAgICAgKHt7IGZvcm1hdE51bWJlcihwcm9wcy5udW1iZXIpIH19KVxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2xhYmVsPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW5wdXQtcmFkaW8tY3VzdG9tIHtcbiAgICB3aWR0aDogMjRweDtcbiAgICBoZWlnaHQ6IDI0cHg7XG4gIH1cblxuICAudGlkZS1pbnB1dC1yYWRpby1jaGVjayB7XG4gICAgd2lkdGg6IDE2cHg7XG4gICAgaGVpZ2h0OiAxNnB4O1xuICB9XG5cbiAgbGFiZWw6aGFzKGlucHV0OmZvY3VzLXZpc2libGUpIHtcbiAgICBvdXRsaW5lOiBhdXRvO1xuICAgIG91dGxpbmUtb2Zmc2V0OiAycHg7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBUaWRlSW5wdXRSYWRpby52dWVgIGltcG9ydGVkIGZyb20gJ3RpZGUtZGVzaWduLXN5c3RlbScgbnBtIHBhY2thZ2UgaW5zdGVhZC5cbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZm9ybWF0TnVtYmVyIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGNoZWNrZWQ/OiBib29sZWFuO1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBpbnB1dElkPzogc3RyaW5nO1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgbnVtYmVyPzogbnVtYmVyO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgY2hlY2tlZDogZmFsc2UsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICBudW1iZXI6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgY2hlY2tlZCA9IHJlZihwcm9wcy5jaGVja2VkKTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy5jaGVja2VkLFxuICAgIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUgfHwgbmV3VmFsdWUgIT09IGNoZWNrZWQudmFsdWUpIHtcbiAgICAgICAgY2hlY2tlZC52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC1yYWRpbycsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICBwcm9wcy5kaXNhYmxlZCAmJiAnZGlzYWJsZWQnLFxuICAgIF1cIlxuICA+XG4gICAgPGlucHV0XG4gICAgICA6Y2hlY2tlZD1cImNoZWNrZWRcIlxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLk5PTkVdXCJcbiAgICAgIDppZD1cInByb3BzLmlucHV0SWRcIlxuICAgICAgbmFtZT1cIlwiXG4gICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgdmFsdWU9XCJcIlxuICAgIC8+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LXJhZGlvLWN1c3RvbScsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMxLkNFTlRFUixcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgICAgY2hlY2tlZCA/IENTUy5CT1JERVIuQ09MT1IuSElHSCA6IENTUy5CT1JERVIuQ09MT1IuREVGQVVMVCxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgQ1NTLkNVUlNPUi5QT0lOVEVSLFxuICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT04sXG4gICAgICAgIGNoZWNrZWQgJiYgJ2NoZWNrZWQnLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtaW5wdXQtcmFkaW8tY2hlY2snLCBDU1MuQk9SREVSLlJBRElVUy5GVUxMLCBwcm9wcy5jaGVja2VkICYmIENTUy5CRy5TRUNPTkRBUlldXCIgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuRkxFWC5HUk9XLk9OLFxuICAgICAgICBDU1MuQVhJUzEuQkVUV0VFTixcbiAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgIENTUy5DVVJTT1IuUE9JTlRFUixcbiAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9OLFxuICAgICAgXVwiXG4gICAgICA6Zm9yPVwicHJvcHMuaW5wdXRJZFwiXG4gICAgPlxuICAgICAgPHNwYW4+e3sgbGFiZWwgfX08L3NwYW4+XG4gICAgICA8c3BhblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgIHYtaWY9XCJwcm9wcy5udW1iZXJcIlxuICAgICAgPlxuICAgICAgICAoe3sgZm9ybWF0TnVtYmVyKHByb3BzLm51bWJlcikgfX0pXG4gICAgICA8L3NwYW4+XG4gICAgPC9sYWJlbD5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1pbnB1dC1yYWRpby5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogdmFyKC0tdGlkZS1kaXNhYmxlZCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1yYWRpby1jdXN0b20ge1xuICAgIHdpZHRoOiAyNHB4O1xuICAgIGhlaWdodDogMjRweDtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXJhZGlvLWNoZWNrIHtcbiAgICB3aWR0aDogMTZweDtcbiAgICBoZWlnaHQ6IDE2cHg7XG4gIH1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgeyBmb3JtYXROdW1iZXIsIGZvcm1hdFBob25lLCBmb3JtYXRQcmljZSB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbmV4cG9ydCB0eXBlIEZvcm1hdHRlZCA9IHtcbiAgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW10gfCBudW1iZXI7XG59O1xuXG5leHBvcnQgY29uc3QgRk9STUFUID0ge1xuICBOVU1CRVI6IGZvcm1hdE51bWJlcixcbiAgUEhPTkU6IGZvcm1hdFBob25lLFxuICBQUklDRTogZm9ybWF0UHJpY2UsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgRk9STUFUX1JFR0VYID0ge1xuICBhbHBoYTogL15bYS16QS1aXSskL2csXG4gIGFscGhhTnVtYmVyT3JFbXB0eTogL14kfF5bYS16MC05XSskL2ksXG4gIGFscGhhU3BhY2U6IC9eW2EtekEtWiBdKyQvZyxcbiAgZW1haWw6XG4gICAgL14oKFtePD4oKVtcXF1cXFxcLiw7Olxcc0BcIl0rKFxcLltePD4oKVtcXF1cXFxcLiw7Olxcc0BcIl0rKSopfChcIi4rXCIpKUAoKFxcW1swLTldezEsM31cXC5bMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcLlswLTldezEsM31cXF0pfCgoW2EtekEtWlxcLTAtOV0rXFwuKStbYS16QS1aXXsyLH0pKSQvLFxuICBudW1iZXJGb3JtYXR0ZWQ6IC9eJHwoPz0uKV5cXCQ/KChbMS05XVswLTldezAsMn0oLFswLTldezN9KSopfDApPyhcXC5bMC05XXsxLDJ9KT8kLyxcbiAgcGhvbmU6IC9eKD86XFxkezN9LVxcZHszfS1cXGR7NH18XFxkezF9LVxcZHszfS1cXGR7M30tXFxkezR9KT8kLyxcbiAgcHJpY2U6IC8oPz0uKV5cXCQ/KChbMS05XVswLTldezAsMn0oLFswLTldezN9KSopfDApPyhcXC5bMC05XXsxLDJ9KT8kLyxcbn07XG4iLCJpbXBvcnQgeyBGT1JNQVRfUkVHRVggfSBmcm9tICdAL3R5cGVzL0Zvcm1hdHRlZCc7XG5pbXBvcnQgeyBjaGVja0Zvcm1hdCB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24nO1xuXG5leHBvcnQgY29uc3QgVkFMSURBVE9SID0ge1xuICBBTFBIQV9OVU1CRVJfRU1QVFk6IGNoZWNrRm9ybWF0KEZPUk1BVF9SRUdFWC5hbHBoYU51bWJlck9yRW1wdHkpLFxuICBBTFBIQV9TUEFDRTogY2hlY2tGb3JtYXQoRk9STUFUX1JFR0VYLmFscGhhU3BhY2UpLFxuICBFTUFJTDogY2hlY2tGb3JtYXQoRk9STUFUX1JFR0VYLmVtYWlsLCAnRW50ZXIgYSB2YWxpZCBlbWFpbCBhZGRyZXNzIChlLmcuIG5hbWVAZXhhbXBsZS5jb20pJyksXG4gIE5VTUJFUjogY2hlY2tGb3JtYXQoRk9STUFUX1JFR0VYLm51bWJlckZvcm1hdHRlZCwgJ0VudGVyIGEgdmFsaWQgbnVtYmVyJyksXG4gIFBIT05FOiBjaGVja0Zvcm1hdChGT1JNQVRfUkVHRVgucGhvbmUsICdFbnRlciBhIHZhbGlkIHBob25lIG51bWJlcicpLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgVmFsaWRhdGlvbkVycm9yID0gc3RyaW5nIHwgYm9vbGVhbjtcbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25SZXN1bHQgPSB7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgdmFsaWQ6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uTGVuZ3RoID0ge1xuICBtYXhsZW5ndGg/OiBudW1iZXI7XG4gIG1pbmxlbmd0aD86IG51bWJlcjtcbiAgcmVxdWlyZWQ6IGJvb2xlYW47XG4gIHZhbHVlOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBWYWxpZGF0b3IgPSAodmFsdWU6IHN0cmluZykgPT4gVmFsaWRhdGlvblJlc3VsdDtcblxuZXhwb3J0IGNvbnN0IEVSUk9SX0RJU1BMQVkgPSB7XG4gIEVBR0VSOiAnZWFnZXInLFxuICBMQVpZOiAnbGF6eScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBFcnJvckRpc3BsYXkgPSAodHlwZW9mIEVSUk9SX0RJU1BMQVkpW2tleW9mIHR5cGVvZiBFUlJPUl9ESVNQTEFZXTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYsIHVzZUlkLCB3YXRjaCwgd2F0Y2hFZmZlY3QgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IFRpZGVJbnB1dFN1cHBvcnRpbmdUZXh0IGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSW5wdXRTdXBwb3J0aW5nVGV4dC52dWUnO1xuICBpbXBvcnQgeyB1c2VGb3JtQ29udGV4dCB9IGZyb20gJ0AvY29tcG9zYWJsZXMvdXNlVGlkZUZvcm0nO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgRVJST1JfRElTUExBWSB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbic7XG4gIGltcG9ydCB7IFZBTElEQVRJT05fUkVTVUxULCBnZXRGaWVsZFZhbGlkYXRpb25SZXN1bHQgfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uJztcblxuICBpbXBvcnQgdHlwZSB7IFNlbGVjdE9wdGlvbiwgU2VsZWN0T3B0aW9uR3JvdXAgfSBmcm9tICdAL3R5cGVzL1NlbGVjdCc7XG4gIGltcG9ydCB0eXBlIHsgRXJyb3JEaXNwbGF5LCBWYWxpZGF0aW9uUmVzdWx0IH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBlcnJvcj86IHN0cmluZztcbiAgICBlcnJvckRpc3BsYXk/OiBFcnJvckRpc3BsYXk7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICBvcHRncm91cHM/OiAoU2VsZWN0T3B0aW9uIHwgU2VsZWN0T3B0aW9uR3JvdXApW10gfCByZWFkb25seSAoU2VsZWN0T3B0aW9uIHwgU2VsZWN0T3B0aW9uR3JvdXApW107XG4gICAgb3B0aW9ucz86IFNlbGVjdE9wdGlvbltdIHwgcmVhZG9ubHkgU2VsZWN0T3B0aW9uW107XG4gICAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICAgIHN1cHBvcnRpbmdUZXh0Pzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGVycm9yOiAnJyxcbiAgICBlcnJvckRpc3BsYXk6IEVSUk9SX0RJU1BMQVkuTEFaWSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBuYW1lOiB1bmRlZmluZWQsXG4gICAgb3B0Z3JvdXBzOiB1bmRlZmluZWQsXG4gICAgb3B0aW9uczogdW5kZWZpbmVkLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBzdXBwb3J0aW5nVGV4dDogdW5kZWZpbmVkLFxuICB9KTtcblxuICB0eXBlIEVtaXRzID0ge1xuICAgIChldmVudDogJ3ZhbGlkJywgaXNWYWxpZDogYm9vbGVhbik6IHZvaWQ7XG4gIH07XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPEVtaXRzPigpO1xuXG4gIGNvbnN0IG1vZGVsVmFsdWUgPSBkZWZpbmVNb2RlbDxzdHJpbmc+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3QgZm9ybUNvbnRleHQgPSB1c2VGb3JtQ29udGV4dCgpO1xuXG4gIGNvbnN0IGVycm9yUmVmID0gcmVmPFZhbGlkYXRpb25SZXN1bHQ+KFZBTElEQVRJT05fUkVTVUxULk5PX0VSUk9SKTtcbiAgY29uc3QgaGFzRm9jdXMgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBpbnB1dElkID0gdXNlSWQoKTtcbiAgY29uc3QgaXNWYWxpZGF0aW5nID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3Qgc2VsZWN0RWxlbWVudCA9IHJlZjxIVE1MU2VsZWN0RWxlbWVudCB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3Qgc2hvd0Vycm9yID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmIChoYXNFcnJvckZyb21Qcm9wLnZhbHVlKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoIWlzVmFsaWRhdGluZy52YWx1ZSkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiAhZXJyb3JSZWYudmFsdWUudmFsaWQ7XG4gIH0pO1xuICBjb25zdCBoYXNFcnJvckZyb21Qcm9wID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMuZXJyb3IgIT09ICcnKTtcbiAgY29uc3QgaGFzTWluaWxhYmVsID0gY29tcHV0ZWQoKCkgPT4gaGFzRm9jdXMudmFsdWUgfHwgIWlzRW1wdHkudmFsdWUpO1xuICBjb25zdCBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4gbW9kZWxWYWx1ZS52YWx1ZSA9PT0gJycpO1xuICBjb25zdCBzdXBwb3J0aW5nVGV4dE1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiAoc2hvd0Vycm9yLnZhbHVlICYmIGVycm9yUmVmLnZhbHVlLm1lc3NhZ2UpIHx8IHByb3BzLnN1cHBvcnRpbmdUZXh0KTtcblxuICBjb25zdCBleHBhbmRPcHRpb25zID0gKCkgPT4ge1xuICAgIGNvbnN0IGV2ZW50ID0gbmV3IE1vdXNlRXZlbnQoJ21vdXNlZG93bicpO1xuICAgIHNlbGVjdEVsZW1lbnQ/LnZhbHVlPy5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1cyA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IHRydWU7XG4gICAgaWYgKHByb3BzLmVycm9yRGlzcGxheSA9PT0gRVJST1JfRElTUExBWS5FQUdFUikgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c091dCA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IGZhbHNlO1xuICAgIGlmIChwcm9wcy5lcnJvckRpc3BsYXkgPT09IEVSUk9SX0RJU1BMQVkuTEFaWSkgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICB3YXRjaEVmZmVjdCgoKSA9PiB7XG4gICAgZXJyb3JSZWYudmFsdWUgPSBnZXRGaWVsZFZhbGlkYXRpb25SZXN1bHQoe1xuICAgICAgZXJyb3JGcm9tUHJvcHM6IHByb3BzLmVycm9yLFxuICAgICAgcmVxdWlyZWQ6IHByb3BzLnJlcXVpcmVkLFxuICAgICAgdmFsdWU6IG1vZGVsVmFsdWUsXG4gICAgfSk7XG4gIH0pO1xuXG4gIHdhdGNoKFxuICAgICgpID0+IGZvcm1Db250ZXh0Py5mb3JjZVNob3dFcnJvcnMudmFsdWUsXG4gICAgKG5ld1ZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUpIGlzVmFsaWRhdGluZy52YWx1ZSA9IHRydWU7XG4gICAgfSxcbiAgICB7IGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG5cbiAgd2F0Y2goXG4gICAgZXJyb3JSZWYsXG4gICAgKCkgPT4ge1xuICAgICAgZW1pdCgndmFsaWQnLCBlcnJvclJlZi52YWx1ZS52YWxpZCk7XG4gICAgfSxcbiAgICB7IGRlZXA6IHRydWUsIGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtaW5wdXQtc2VsZWN0JyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgZGlzYWJsZWQgJiYgJ2Rpc2FibGVkJyxcbiAgICAgIHNob3dFcnJvciAmJiAnZXJyb3InLFxuICAgIF1cIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC1ib3JkZXInLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgcHJvcHMuZGlzYWJsZWQgPyBDU1MuQ1VSU09SLk5PVF9BTExPV0VEIDogJycsXG4gICAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICBdXCJcbiAgICAgIEBjbGljaz1cImV4cGFuZE9wdGlvbnNcIlxuICAgID5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5XSURUSC5GVUxMXVwiPlxuICAgICAgICA8bGFiZWxcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICBoYXNNaW5pbGFiZWwgPyBbJ21pbmlsYWJlbCcsIENTUy5GT05ULlJPTEUuTEFCRUxfM10gOiBDU1MuRk9OVC5ST0xFLkxBQkVMXzEsXG4gICAgICAgICAgICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gICAgICAgICAgICBDU1MuUE9TSVRJT05JTkcuTEVGVCxcbiAgICAgICAgICAgIENTUy5NQVJHSU4uVE9QLkhBTEYsXG4gICAgICAgICAgICBDU1MuTUFSR0lOLkxFRlQuT05FLFxuICAgICAgICAgICAgIXNob3dFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIDpmb3I9XCJpbnB1dElkXCJcbiAgICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZm9ybWF0dGVkTGFiZWwgfX1cbiAgICAgICAgPC9sYWJlbD5cblxuICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgQ1NTLlBBRERJTkcuQk9UVE9NLkhBTEYsXG4gICAgICAgICAgICBDU1MuUEFERElORy5YLk9ORSxcbiAgICAgICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICAgICAgZGlzYWJsZWQgJiYgQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCxcbiAgICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICAgICAgICA6bmFtZT1cIm5hbWVcIlxuICAgICAgICAgIHJlZj1cInNlbGVjdEVsZW1lbnRcIlxuICAgICAgICAgIDpyZXF1aXJlZD1cInJlcXVpcmVkXCJcbiAgICAgICAgICBAZm9jdXM9XCJoYW5kbGVGb2N1c1wiXG4gICAgICAgICAgQGZvY3Vzb3V0PVwiaGFuZGxlRm9jdXNPdXRcIlxuICAgICAgICAgIDppZD1cImlucHV0SWRcIlxuICAgICAgICAgIHYtbW9kZWw9XCJtb2RlbFZhbHVlXCJcbiAgICAgICAgPlxuICAgICAgICAgIDx0ZW1wbGF0ZSB2LWZvcj1cIm9wdGdyb3VwIGluIHByb3BzLm9wdGdyb3Vwc1wiPlxuICAgICAgICAgICAgPG9wdGdyb3VwXG4gICAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgICAgICAgICA6a2V5PVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbkdyb3VwKS5sYWJlbFwiXG4gICAgICAgICAgICAgIDpsYWJlbD1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb25Hcm91cCkubGFiZWxcIlxuICAgICAgICAgICAgICB2LWlmPVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbkdyb3VwKS5vcHRpb25zXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgICAgICAgICAgIDprZXk9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgICAgIDp2YWx1ZT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICAgICAgdi1mb3I9XCJvcHRpb24gaW4gKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbkdyb3VwKS5vcHRpb25zXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxuICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgIDwvb3B0Z3JvdXA+XG5cbiAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgICAgIDprZXk9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uKS52YWx1ZVwiXG4gICAgICAgICAgICAgIDpzZWxlY3RlZD1cIm1vZGVsVmFsdWUgPT09IChvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLnZhbHVlID8gdHJ1ZSA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgIDp2YWx1ZT1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLnZhbHVlXCJcbiAgICAgICAgICAgICAgdi1lbHNlXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IChvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLmxhYmVsIH19XG4gICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICA8L3RlbXBsYXRlPlxuXG4gICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgICA6a2V5PVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgIDpzZWxlY3RlZD1cIm1vZGVsVmFsdWUgPT09IG9wdGlvbi52YWx1ZSA/IHRydWUgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgOnZhbHVlPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgIHYtZm9yPVwib3B0aW9uIGluIG9wdGlvbnNcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxuICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICA8L3NlbGVjdD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5QT1NJVElPTi5BQlNPTFVURSwgQ1NTLlBPU0lUSU9OSU5HLlJJR0hULCBDU1MuTUFSR0lOLlJJR0hULk9ORSwgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRl1cIlxuICAgICAgICA6aWNvbj1cIklDT04uRVhQQU5EX01PUkVcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dFxuICAgICAgOmlzLWVycm9yPVwic2hvd0Vycm9yXCJcbiAgICAgIDptZXNzYWdlPVwic3VwcG9ydGluZ1RleHRNZXNzYWdlXCJcbiAgICAgIHYtaWY9XCJzdXBwb3J0aW5nVGV4dE1lc3NhZ2VcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgc2VsZWN0IHtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICB9XG5cbiAgbGFiZWwge1xuICAgIGhlaWdodDogMS4xODc1cmVtO1xuICAgIHRyYW5zaXRpb246IGZvbnQtc2l6ZSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIGxhYmVsOm5vdCgubWluaWxhYmVsKSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgY2FsYyg5IC8gMTYgKiAxcmVtKSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IHZhcigtLXRpZGUtZGlzYWJsZWQpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtZXJyb3Itc3VyZmFjZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3I6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0OmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0yKTtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtYm9yZGVyLWhpZ2gpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMSk7XG4gICAgb3V0bGluZTogdmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSBzb2xpZCB2YXIoLS10aWRlLWJvcmRlcik7XG4gICAgb3V0bGluZS1vZmZzZXQ6IGNhbGModmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSAqIC0xKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5lcnJvciB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItcHJpbWFyeSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3Igb3B0aW9uIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1vbi1zdXJmYWNlKTtcbiAgfVxuXG4gIHNlbGVjdCB7XG4gICAgcGFkZGluZy10b3A6IDI3cHg7XG4gIH1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgeyBwcmljZVRvTnVtYmVyIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcblxuaW1wb3J0IHR5cGUgeyBTdHJpbmdJbnB1dCB9IGZyb20gJ0AvdHlwZXMvRm9ybURlcHJlY2F0ZWQnO1xuaW1wb3J0IHR5cGUgeyBTZWxlY3RPcHRpb24gfSBmcm9tICdAL3R5cGVzL1NlbGVjdCc7XG5pbXBvcnQgdHlwZSB7IFZhbGlkYXRpb25FcnJvciwgVmFsaWRhdGlvbkxlbmd0aCwgVmFsaWRhdGlvblJlc3VsdCwgVmFsaWRhdG9yIH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uRGVwcmVjYXRlZCc7XG5pbXBvcnQgdHlwZSB7IFJlZiB9IGZyb20gJ3Z1ZSc7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xudHlwZSBSYW5nZURhdGEgPSB7XG4gIG1pbjogbnVtYmVyIHwgbnVsbDtcbiAgbWF4OiBudW1iZXIgfCBudWxsO1xufTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgZXJyb3JNZXNzYWdlRGVmYXVsdCA9ICdQbGVhc2UgZW50ZXIgYSB2YWxpZCB2YWx1ZS4nO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBub0Vycm9yID0ge1xuICBtZXNzYWdlOiAnJyxcbiAgdmFsaWQ6IHRydWUsXG59IGFzIFJlYWRvbmx5PFZhbGlkYXRpb25SZXN1bHQ+O1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBjaGVja0Zvcm1hdCA9IChmb3JtYXQ6IFJlZ0V4cCkgPT4ge1xuICByZXR1cm4gKHZhbHVlOiBzdHJpbmcpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgICBsZXQgcmVzdWx0ID0gbm9FcnJvcjtcblxuICAgIGlmICghdmFsdWUudHJpbSgpLm1hdGNoKGZvcm1hdCkpIHtcbiAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgbWVzc2FnZTogZXJyb3JNZXNzYWdlRGVmYXVsdCxcbiAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xufTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgZ2V0RXJyb3JNZXNzYWdlID0gKGVycm9yRnJvbVByb3BzOiBWYWxpZGF0aW9uRXJyb3IsIGVycm9yRnJvbVJlZjogVmFsaWRhdGlvbkVycm9yKSA9PiB7XG4gIC8vIGVycm9yIGluIHByb3BzIHRha2VzIHByZWNlZGVuY2Ugb3ZlciB2YWxpZGF0aW9uIGVycm9yXG4gIGlmICh0eXBlb2YgZXJyb3JGcm9tUHJvcHMgPT09ICdzdHJpbmcnICYmIGVycm9yRnJvbVByb3BzLmxlbmd0aCA+IDApIHJldHVybiBlcnJvckZyb21Qcm9wcztcblxuICByZXR1cm4gdHlwZW9mIGVycm9yRnJvbVJlZiA9PT0gJ3N0cmluZycgJiYgZXJyb3JGcm9tUmVmLmxlbmd0aCA+IDAgPyBlcnJvckZyb21SZWYgOiBlcnJvck1lc3NhZ2VEZWZhdWx0O1xufTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgZ2V0RmllbGRIYXNFcnJvciA9IChlcnJvckZyb21Qcm9wczogVmFsaWRhdGlvbkVycm9yLCBlcnJvckZyb21SZWY6IFZhbGlkYXRpb25FcnJvcikgPT5cbiAgZXJyb3JGcm9tUHJvcHMgIT09IGZhbHNlIHx8IGVycm9yRnJvbVJlZiAhPT0gZmFsc2U7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEZpZWxkTGVuZ3RoSXNWYWxpZCA9ICh7IG1heGxlbmd0aCwgbWlubGVuZ3RoLCByZXF1aXJlZCwgdmFsdWUgfTogVmFsaWRhdGlvbkxlbmd0aCkgPT4ge1xuICBjb25zdCBpc0VtcHR5QW5kVW5yZXF1aXJlZCA9IHZhbHVlLmxlbmd0aCA9PT0gMCAmJiAhcmVxdWlyZWQ7XG4gIGNvbnN0IGlzVG9vTG9uZyA9IG1heGxlbmd0aCAmJiB2YWx1ZS5sZW5ndGggPiBtYXhsZW5ndGg7XG4gIGNvbnN0IGlzVG9vU2hvcnQgPSAhaXNFbXB0eUFuZFVucmVxdWlyZWQgJiYgbWlubGVuZ3RoICYmIHZhbHVlLmxlbmd0aCA8IG1pbmxlbmd0aDtcblxuICByZXR1cm4gIWlzVG9vU2hvcnQgJiYgIWlzVG9vTG9uZztcbn07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldE1heFJhbmdlSXNWYWxpZCA9ICh7IG1pbiB9OiBQaWNrPFJhbmdlRGF0YSwgJ21pbic+LCB0eXBlPzogJ3ByaWNlJykgPT4ge1xuICByZXR1cm4gKHZhbHVlOiBzdHJpbmcpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgICBsZXQgbmV3TWF4OiBudW1iZXIgfCBudWxsID0gdHlwZSA9PT0gJ3ByaWNlJyA/IHByaWNlVG9OdW1iZXIodmFsdWUpIDogTnVtYmVyKHZhbHVlKTtcbiAgICBuZXdNYXggPSAhaXNOYU4obmV3TWF4KSA/IG5ld01heCA6IG51bGw7XG4gICAgaWYgKG1pbiAmJiBuZXdNYXgpIHtcbiAgICAgIGlmIChuZXdNYXggPj0gbWluKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1lc3NhZ2U6IGBNdXN0IGJlIGdyZWF0ZXIgdGhhbiBtaW5gLFxuICAgICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5vRXJyb3I7XG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgZ2V0TWluUmFuZ2VJc1ZhbGlkID0gKHsgbWF4IH06IFBpY2s8UmFuZ2VEYXRhLCAnbWF4Jz4sIHR5cGU/OiAncHJpY2UnKSA9PiB7XG4gIHJldHVybiAodmFsdWU6IHN0cmluZyk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICAgIGxldCBuZXdNaW46IG51bWJlciB8IG51bGwgPSB0eXBlID09PSAncHJpY2UnID8gcHJpY2VUb051bWJlcih2YWx1ZSkgOiBOdW1iZXIodmFsdWUpO1xuICAgIG5ld01pbiA9ICFpc05hTihuZXdNaW4pID8gbmV3TWluIDogbnVsbDtcbiAgICBpZiAobWF4ICYmIG5ld01pbikge1xuICAgICAgaWYgKG5ld01pbiA8PSBtYXgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbWVzc2FnZTogYE11c3QgYmUgbGVzcyB0aGFuIG1heGAsXG4gICAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbm9FcnJvcjtcbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRTZWxlY3RPcHRpb25zRnJvbVN0cmluZ3MgPSAoc3RyaW5nczogc3RyaW5nW10pID0+XG4gIHN0cmluZ3MubWFwKFxuICAgIChvcHRpb24pID0+XG4gICAgICAoe1xuICAgICAgICBsYWJlbDogb3B0aW9uLFxuICAgICAgICB2YWx1ZTogb3B0aW9uLFxuICAgICAgfSBhcyBTZWxlY3RPcHRpb24pXG4gICk7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGhhbmRsZUZpZWxkVmFsaWRhdGlvbiA9ICh7XG4gIGVycm9yLFxuICBlcnJvckZyb21Qcm9wcyxcbiAgbWF4bGVuZ3RoLFxuICBtaW5sZW5ndGgsXG4gIHJlcXVpcmVkID0gZmFsc2UsXG4gIHZhbGlkYXRvcnMsXG4gIHZhbHVlLFxufToge1xuICBlcnJvcjogUmVmPFZhbGlkYXRpb25FcnJvcj47XG4gIGVycm9yRnJvbVByb3BzOiBWYWxpZGF0aW9uRXJyb3I7XG4gIG1heGxlbmd0aD86IG51bWJlcjtcbiAgbWlubGVuZ3RoPzogbnVtYmVyO1xuICByZXF1aXJlZD86IGJvb2xlYW47XG4gIHZhbGlkYXRvcnM/OiBWYWxpZGF0b3JbXTtcbiAgdmFsdWU/OiBSZWY8c3RyaW5nIHwgdW5kZWZpbmVkPjtcbn0pID0+IHtcbiAgLy8gZXJyb3IgaW4gcHJvcHMgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHZhbGlkYXRpb24gZXJyb3JcblxuICBlcnJvci52YWx1ZSA9IGVycm9yRnJvbVByb3BzID8gZXJyb3JGcm9tUHJvcHMgOiBmYWxzZTtcblxuICBpZiAoIWVycm9yLnZhbHVlICYmIHZhbGlkYXRvcnMpIHtcbiAgICBjb25zdCB2YWxpZGF0aW9uID0gdmFsaWRhdGVQcm9wZXJ0eSh2YWx1ZT8udmFsdWUgfHwgJycsIHZhbGlkYXRvcnMpO1xuXG4gICAgaWYgKCF2YWxpZGF0aW9uLnZhbGlkKSB7XG4gICAgICBlcnJvci52YWx1ZSA9IHZhbGlkYXRpb24ubWVzc2FnZTtcbiAgICB9XG4gIH1cblxuICBpZiAoIWVycm9yLnZhbHVlICYmIChtYXhsZW5ndGggfHwgbWlubGVuZ3RoKSkge1xuICAgIGNvbnN0IGxlbmd0aFZhbGlkYXRpb24gPSB2YWxpZGF0ZUxlbmd0aCh7XG4gICAgICBtYXhsZW5ndGgsXG4gICAgICBtaW5sZW5ndGgsXG4gICAgICByZXF1aXJlZCxcbiAgICAgIHZhbHVlOiB2YWx1ZT8udmFsdWUgfHwgJycsXG4gICAgfSk7XG5cbiAgICBpZiAoIWxlbmd0aFZhbGlkYXRpb24udmFsaWQpIHtcbiAgICAgIGVycm9yLnZhbHVlID0gbGVuZ3RoVmFsaWRhdGlvbi5tZXNzYWdlO1xuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVGaWVsZHNGcm9tUmVmcyhmaWVsZHM6IHsgW2tleTogc3RyaW5nXTogUmVmPFN0cmluZ0lucHV0IHwgbnVsbD4gfSkge1xuICBsZXQgdmFsaWQgPSB0cnVlO1xuXG4gIGZvciAoY29uc3Qga2V5IGluIGZpZWxkcykge1xuICAgIGlmIChmaWVsZHNba2V5XS52YWx1ZT8ucmVxdWlyZWQpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gZmllbGRzW2tleV0udmFsdWU/LnZhbHVlO1xuICAgICAgdmFsaWQgPSB2YWxpZCAmJiAhIXZhbHVlICYmIHZhbHVlLnRyaW0oKSAhPT0gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgZXJyb3IgPSBmaWVsZHNba2V5XS52YWx1ZT8uZXJyb3I7XG4gICAgdmFsaWQgPSB2YWxpZCAmJiAhZXJyb3I7XG4gIH1cblxuICByZXR1cm4gdmFsaWQ7XG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IHZhbGlkYXRlTGVuZ3RoID0gKHtcbiAgbWF4bGVuZ3RoLFxuICBtaW5sZW5ndGgsXG4gIHJlcXVpcmVkID0gZmFsc2UsXG4gIHZhbHVlLFxufTogVmFsaWRhdGlvbkxlbmd0aCk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICBjb25zdCByZXNwb25zZSA9IHtcbiAgICBtZXNzYWdlOiAnJyxcbiAgICB2YWxpZDogdHJ1ZSxcbiAgfTtcblxuICByZXNwb25zZS52YWxpZCA9IGdldEZpZWxkTGVuZ3RoSXNWYWxpZCh7XG4gICAgbWF4bGVuZ3RoLFxuICAgIG1pbmxlbmd0aCxcbiAgICByZXF1aXJlZCxcbiAgICB2YWx1ZSxcbiAgfSk7XG5cbiAgaWYgKHJlc3BvbnNlLnZhbGlkKSByZXR1cm4gcmVzcG9uc2U7XG5cbiAgcmVzcG9uc2UubWVzc2FnZSA9IGVycm9yTWVzc2FnZURlZmF1bHQ7XG5cbiAgaWYgKG1heGxlbmd0aCAmJiBtaW5sZW5ndGgpIHtcbiAgICByZXNwb25zZS5tZXNzYWdlID0gYFBsZWFzZSBlbnRlciBhIHZhbHVlIGJldHdlZW4gJHttaW5sZW5ndGh9IGFuZCAke21heGxlbmd0aH0gY2hhcmFjdGVycyBpbiBsZW5ndGguYDtcbiAgfSBlbHNlIGlmIChtYXhsZW5ndGgpIHtcbiAgICByZXNwb25zZS5tZXNzYWdlID0gYFBsZWFzZSBlbnRlciBhIHZhbHVlIG5vIG1vcmUgdGhhbiAke21heGxlbmd0aH0gY2hhcmFjdGVycyBpbiBsZW5ndGguYDtcbiAgfSBlbHNlIGlmIChtaW5sZW5ndGgpIHtcbiAgICByZXNwb25zZS5tZXNzYWdlID0gYFBsZWFzZSBlbnRlciBhIHZhbHVlIG5vIGxlc3MgdGhhbiAke21pbmxlbmd0aH0gY2hhcmFjdGVycyBpbiBsZW5ndGguYDtcbiAgfVxuXG4gIHJldHVybiByZXNwb25zZTtcbn07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlUHJvcGVydHkodmFsdWU6IHN0cmluZywgdmFsaWRhdG9yczogKCh2YWx1ZTogc3RyaW5nKSA9PiBWYWxpZGF0aW9uUmVzdWx0KVtdKTogVmFsaWRhdGlvblJlc3VsdCB7XG4gIGZvciAoY29uc3QgdmFsaWRhdG9yIG9mIHZhbGlkYXRvcnMpIHtcbiAgICBjb25zdCB2YWxpZGF0aW9uID0gdmFsaWRhdG9yKHZhbHVlKTtcbiAgICBpZiAoIXZhbGlkYXRpb24udmFsaWQpIHtcbiAgICAgIHJldHVybiB2YWxpZGF0aW9uO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbWVzc2FnZTogJycsXG4gICAgdmFsaWQ6IHRydWUsXG4gIH07XG59XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBUaWRlSW5wdXRTZWxlY3QudnVlYCBpbXBvcnRlZCBmcm9tICd0aWRlLWRlc2lnbi1zeXN0ZW0nIG5wbSBwYWNrYWdlIGluc3RlYWQuXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZ2V0RXJyb3JNZXNzYWdlLCBnZXRGaWVsZEhhc0Vycm9yIH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbi1kZXByZWNhdGVkJztcblxuICBpbXBvcnQgdHlwZSB7IFNlbGVjdEZpZWxkIH0gZnJvbSAnQC90eXBlcy9GaWVsZERlcHJlY2F0ZWQnO1xuICBpbXBvcnQgdHlwZSB7IFNlbGVjdE9wdGlvbiwgU2VsZWN0T3B0aW9uR3JvdXAgfSBmcm9tICdAL3R5cGVzL1NlbGVjdCc7XG5cbiAgZXhwb3J0IGludGVyZmFjZSBQcm9wcyBleHRlbmRzIFNlbGVjdEZpZWxkIHtcbiAgICBpbnB1dElkPzogc3RyaW5nO1xuICAgIHN1cHBvcnRpbmdUZXh0Pzogc3RyaW5nO1xuICB9XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZXJyb3I6IGZhbHNlLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBzdXBwb3J0aW5nVGV4dDogdW5kZWZpbmVkLFxuICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IGVycm9yID0gcmVmKHByb3BzLmVycm9yKTtcbiAgY29uc3QgaGFzRm9jdXMgPSByZWYoZmFsc2UpO1xuICBjb25zdCBpbnB1dCA9IHJlZjxIVE1MU2VsZWN0RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCByZXF1aXJlZCA9IHJlZihwcm9wcy5yZXF1aXJlZCk7XG4gIGNvbnN0IHZhbHVlID0gcmVmPHN0cmluZyB8IHVuZGVmaW5lZD4ocHJvcHMudmFsdWUpO1xuXG4gIGNvbnN0IGVycm9yTWVzc2FnZSA9IGNvbXB1dGVkKCgpID0+IGdldEVycm9yTWVzc2FnZShwcm9wcy5lcnJvciwgZXJyb3IudmFsdWUpKTtcbiAgY29uc3QgZm9ybWF0dGVkTGFiZWwgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgPyBgJHtwcm9wcy5sYWJlbH0gKmAgOiBwcm9wcy5sYWJlbCkpO1xuICBjb25zdCBoYXNFcnJvciA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCAmJiAhdmFsdWUudmFsdWUpIHx8IGdldEZpZWxkSGFzRXJyb3IoZXJyb3IudmFsdWUsIHByb3BzLmVycm9yKSk7XG4gIGNvbnN0IGhhc01pbmlsYWJlbCA9IGNvbXB1dGVkKCgpID0+IGhhc0ZvY3VzLnZhbHVlIHx8ICFpc0VtcHR5LnZhbHVlKTtcbiAgY29uc3QgaXNFbXB0eSA9IGNvbXB1dGVkKCgpID0+IHZhbHVlLnZhbHVlID09PSB1bmRlZmluZWQpO1xuXG4gIGNvbnN0IGV4cGFuZE9wdGlvbnMgPSAoKSA9PiB7XG4gICAgY29uc3QgZXZlbnQgPSBuZXcgTW91c2VFdmVudCgnbW91c2Vkb3duJyk7XG4gICAgaW5wdXQ/LnZhbHVlPy5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1cyA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXNPdXQgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSBmYWxzZTtcbiAgfTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy52YWx1ZSxcbiAgICAobmV3VmFsdWUsIG9sZFZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUgIT09IG9sZFZhbHVlIHx8IG5ld1ZhbHVlICE9PSB2YWx1ZS52YWx1ZSkge1xuICAgICAgICB2YWx1ZS52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgKTtcblxuICBkZWZpbmVFeHBvc2UoeyBlcnJvciwgdmFsdWUgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtaW5wdXQtc2VsZWN0JyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgZGlzYWJsZWQgJiYgJ2Rpc2FibGVkJyxcbiAgICAgIGhhc0Vycm9yICYmICdlcnJvcicsXG4gICAgXVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LWJvcmRlcicsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBwcm9wcy5kaXNhYmxlZCA/IENTUy5DVVJTT1IuTk9UX0FMTE9XRUQgOiAnJyxcbiAgICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgIF1cIlxuICAgICAgQGNsaWNrPVwiZXhwYW5kT3B0aW9uc1wiXG4gICAgPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLldJRFRILkZVTExdXCI+XG4gICAgICAgIDxsYWJlbFxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/IFsnbWluaWxhYmVsJywgQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXSA6IENTUy5GT05ULlJPTEUuTEFCRUxfMSxcbiAgICAgICAgICAgIENTUy5QT1NJVElPTi5BQlNPTFVURSxcbiAgICAgICAgICAgIENTUy5QT1NJVElPTklORy5MRUZULFxuICAgICAgICAgICAgQ1NTLk1BUkdJTi5UT1AuSEFMRixcbiAgICAgICAgICAgIENTUy5NQVJHSU4uTEVGVC5PTkUsXG4gICAgICAgICAgICAhaGFzRXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgICBdXCJcbiAgICAgICAgICA6Zm9yPVwicHJvcHMuaW5wdXRJZFwiXG4gICAgICAgICAgdi1pZj1cImxhYmVsXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGZvcm1hdHRlZExhYmVsIH19XG4gICAgICAgIDwvbGFiZWw+XG5cbiAgICAgICAgPHNlbGVjdFxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgIENTUy5QQURESU5HLkJPVFRPTS5IQUxGLFxuICAgICAgICAgICAgQ1NTLlBBRERJTkcuWC5PTkUsXG4gICAgICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgICAgIGRpc2FibGVkICYmIENTUy5DVVJTT1IuTk9UX0FMTE9XRUQsXG4gICAgICAgICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMSxcbiAgICAgICAgICBdXCJcbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJkaXNhYmxlZFwiXG4gICAgICAgICAgOm5hbWU9XCJuYW1lXCJcbiAgICAgICAgICByZWY9XCJpbnB1dFwiXG4gICAgICAgICAgOnJlcXVpcmVkPVwicmVxdWlyZWRcIlxuICAgICAgICAgIEBmb2N1cz1cImhhbmRsZUZvY3VzXCJcbiAgICAgICAgICBAZm9jdXNvdXQ9XCJoYW5kbGVGb2N1c091dFwiXG4gICAgICAgICAgOmlkPVwicHJvcHMuaW5wdXRJZFwiXG4gICAgICAgICAgdi1tb2RlbD1cInZhbHVlXCJcbiAgICAgICAgPlxuICAgICAgICAgIDx0ZW1wbGF0ZSB2LWZvcj1cIm9wdGdyb3VwIGluIHByb3BzLm9wdGdyb3Vwc1wiPlxuICAgICAgICAgICAgPG9wdGdyb3VwXG4gICAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgICAgICAgICA6a2V5PVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbkdyb3VwKS5sYWJlbFwiXG4gICAgICAgICAgICAgIDpsYWJlbD1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb25Hcm91cCkubGFiZWxcIlxuICAgICAgICAgICAgICB2LWlmPVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbkdyb3VwKS5vcHRpb25zXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgICAgICAgICAgIDprZXk9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgICAgIDp2YWx1ZT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICAgICAgdi1mb3I9XCJvcHRpb24gaW4gKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbkdyb3VwKS5vcHRpb25zXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxuICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgIDwvb3B0Z3JvdXA+XG5cbiAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgICAgIDprZXk9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uKS52YWx1ZVwiXG4gICAgICAgICAgICAgIDpzZWxlY3RlZD1cInZhbHVlID09PSAob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uKS52YWx1ZSA/IHRydWUgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICA6dmFsdWU9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uKS52YWx1ZVwiXG4gICAgICAgICAgICAgIHYtZWxzZVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyAob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uKS5sYWJlbCB9fVxuICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgPC90ZW1wbGF0ZT5cblxuICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgICAgICAgOmtleT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICA6c2VsZWN0ZWQ9XCJ2YWx1ZSA9PT0gb3B0aW9uLnZhbHVlID8gdHJ1ZSA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICA6dmFsdWU9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgdi1mb3I9XCJvcHRpb24gaW4gb3B0aW9uc1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgb3B0aW9uLmxhYmVsIH19XG4gICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLlBPU0lUSU9OLkFCU09MVVRFLCBDU1MuUE9TSVRJT05JTkcuUklHSFQsIENTUy5NQVJHSU4uUklHSFQuT05FLCBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGXVwiXG4gICAgICAgIDppY29uPVwiSUNPTi5FWFBBTkRfTU9SRVwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUl1cIlxuICAgICAgdi1pZj1cInByb3BzLnN1cHBvcnRpbmdUZXh0IHx8IGhhc0Vycm9yXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW11cIlxuICAgICAgICA6aWNvbj1cIklDT04uRVJST1JcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwiaGFzRXJyb3JcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXVwiPlxuICAgICAgICB7eyBoYXNFcnJvciA/IGVycm9yTWVzc2FnZSA6IHByb3BzLnN1cHBvcnRpbmdUZXh0IH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICBzZWxlY3Qge1xuICAgIGFwcGVhcmFuY2U6IG5vbmU7XG4gIH1cblxuICBsYWJlbCB7XG4gICAgaGVpZ2h0OiAxLjE4NzVyZW07XG4gICAgdHJhbnNpdGlvbjogZm9udC1zaXplIHZhcigtLXRpZGUtYW5pbWF0ZSksIHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgbGFiZWw6bm90KC5taW5pbGFiZWwpIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCBjYWxjKDkgLyAxNiAqIDFyZW0pKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogdmFyKC0tdGlkZS1kaXNhYmxlZCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3IgLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5lcnJvcjpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3Q6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTIpO1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS1ib3JkZXItaGlnaCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0xKTtcbiAgICBvdXRsaW5lOiB2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpIHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBvdXRsaW5lLW9mZnNldDogY2FsYyh2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpICogLTEpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1lcnJvci1wcmltYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5lcnJvciBvcHRpb24ge1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLW9uLXN1cmZhY2UpO1xuICB9XG5cbiAgc2VsZWN0IHtcbiAgICBwYWRkaW5nLXRvcDogMjdweDtcbiAgfVxuPC9zdHlsZT5cbiIsImV4cG9ydCBjb25zdCBURVhUX0lOUFVUX1RZUEUgPSB7XG4gIERBVEU6ICdkYXRlJyxcbiAgREFURVRJTUVfTE9DQUw6ICdkYXRldGltZS1sb2NhbCcsXG4gIEVNQUlMOiAnZW1haWwnLFxuICBNT05USDogJ21vbnRoJyxcbiAgTlVNQkVSOiAnbnVtYmVyJyxcbiAgUEFTU1dPUkQ6ICdwYXNzd29yZCcsXG4gIFNFQVJDSDogJ3NlYXJjaCcsXG4gIFRFTDogJ3RlbCcsXG4gIFRFWFQ6ICd0ZXh0JyxcbiAgVElNRTogJ3RpbWUnLFxuICBVUkw6ICd1cmwnLFxuICBXRUVLOiAnd2VlaycsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBUZXh0SW5wdXRUeXBlID0gKHR5cGVvZiBURVhUX0lOUFVUX1RZUEUpW2tleW9mIHR5cGVvZiBURVhUX0lOUFVUX1RZUEVdO1xuXG5leHBvcnQgY29uc3QgSU5QVVRfTU9ERSA9IHtcbiAgREVDSU1BTDogJ2RlY2ltYWwnLFxuICBFTUFJTDogJ2VtYWlsJyxcbiAgTlVNRVJJQzogJ251bWVyaWMnLFxuICBTRUFSQ0g6ICdzZWFyY2gnLFxuICBURUw6ICd0ZWwnLFxuICBURVhUOiAndGV4dCcsXG4gIFVSTDogJ3VybCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBJbnB1dE1vZGUgPSAodHlwZW9mIElOUFVUX01PREUpW2tleW9mIHR5cGVvZiBJTlBVVF9NT0RFXTtcbiIsImltcG9ydCB7IElOUFVUX01PREUsIFRFWFRfSU5QVVRfVFlQRSB9IGZyb20gJ0AvdHlwZXMvVGV4dElucHV0JztcblxuaW1wb3J0IHR5cGUgeyBJbnB1dE1vZGUsIFRleHRJbnB1dFR5cGUgfSBmcm9tICdAL3R5cGVzL1RleHRJbnB1dCc7XG5cbmV4cG9ydCBjb25zdCBnZXRUZXh0SW5wdXRNb2RlID0gKHR5cGU6IFRleHRJbnB1dFR5cGUsIGlucHV0bW9kZT86IElucHV0TW9kZSk6IElucHV0TW9kZSB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmIChpbnB1dG1vZGUpIHJldHVybiBpbnB1dG1vZGU7XG5cbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBURVhUX0lOUFVUX1RZUEUuVEVMOlxuICAgICAgcmV0dXJuIElOUFVUX01PREUuVEVMO1xuICAgIGNhc2UgVEVYVF9JTlBVVF9UWVBFLlNFQVJDSDpcbiAgICAgIHJldHVybiBJTlBVVF9NT0RFLlNFQVJDSDtcbiAgICBjYXNlIFRFWFRfSU5QVVRfVFlQRS5OVU1CRVI6XG4gICAgICByZXR1cm4gSU5QVVRfTU9ERS5OVU1FUklDO1xuICAgIGNhc2UgVEVYVF9JTlBVVF9UWVBFLkVNQUlMOlxuICAgICAgcmV0dXJuIElOUFVUX01PREUuRU1BSUw7XG4gICAgY2FzZSBURVhUX0lOUFVUX1RZUEUuVVJMOlxuICAgICAgcmV0dXJuIElOUFVUX01PREUuVVJMO1xuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn07XG4iLCI8c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmLCB3YXRjaCwgd2F0Y2hFZmZlY3QgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IFRpZGVJbnB1dFN1cHBvcnRpbmdUZXh0IGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSW5wdXRTdXBwb3J0aW5nVGV4dC52dWUnO1xuICBpbXBvcnQgeyB1c2VGb3JtQ29udGV4dCB9IGZyb20gJ0AvY29tcG9zYWJsZXMvdXNlVGlkZUZvcm0nO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgVEVYVF9JTlBVVF9UWVBFIH0gZnJvbSAnQC90eXBlcy9UZXh0SW5wdXQnO1xuICBpbXBvcnQgeyBFUlJPUl9ESVNQTEFZIH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uJztcbiAgaW1wb3J0IHsgZ2V0VGV4dElucHV0TW9kZSB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1zJztcbiAgaW1wb3J0IHsgVkFMSURBVElPTl9SRVNVTFQsIGdldEZpZWxkVmFsaWRhdGlvblJlc3VsdCB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24nO1xuXG4gIGltcG9ydCB0eXBlIHsgRm9ybVZhbHVlVHJhbnNmb3JtZXIgfSBmcm9tICdAL3R5cGVzL0Zvcm0nO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgdHlwZSB7IElucHV0TW9kZSwgVGV4dElucHV0VHlwZSB9IGZyb20gJ0AvdHlwZXMvVGV4dElucHV0JztcbiAgaW1wb3J0IHR5cGUgeyBFcnJvckRpc3BsYXksIFZhbGlkYXRpb25SZXN1bHQsIFZhbGlkYXRvciB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBhdXRvY29tcGxldGU/OiBib29sZWFuO1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBlcnJvcj86IHN0cmluZztcbiAgICBlcnJvckRpc3BsYXk/OiBFcnJvckRpc3BsYXk7XG4gICAgaGFzQ2xlYXI/OiBib29sZWFuO1xuICAgIGljb25MZWFkaW5nPzogSWNvbjtcbiAgICBpbnB1dElkPzogc3RyaW5nO1xuICAgIGlucHV0bW9kZT86IElucHV0TW9kZTtcbiAgICBsYWJlbD86IHN0cmluZztcbiAgICBtYXhsZW5ndGg/OiBudW1iZXI7XG4gICAgbWlubGVuZ3RoPzogbnVtYmVyO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgcHJlZml4Pzogc3RyaW5nO1xuICAgIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgICBzdWZmaXg/OiBzdHJpbmc7XG4gICAgc3VwcG9ydGluZ1RleHQ/OiBzdHJpbmc7XG4gICAgdHJhbnNmb3JtVmFsdWU/OiBGb3JtVmFsdWVUcmFuc2Zvcm1lcjtcbiAgICB0eXBlPzogVGV4dElucHV0VHlwZTtcbiAgICB2YWxpZGF0b3JzPzogVmFsaWRhdG9yW107XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBhdXRvY29tcGxldGU6IGZhbHNlLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlcnJvcjogJycsXG4gICAgZXJyb3JEaXNwbGF5OiBFUlJPUl9ESVNQTEFZLkxBWlksXG4gICAgaGFzQ2xlYXI6IGZhbHNlLFxuICAgIGljb25MZWFkaW5nOiB1bmRlZmluZWQsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGlucHV0bW9kZTogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbWF4bGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgbWlubGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgbmFtZTogdW5kZWZpbmVkLFxuICAgIHByZWZpeDogdW5kZWZpbmVkLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBzdWZmaXg6IHVuZGVmaW5lZCxcbiAgICBzdXBwb3J0aW5nVGV4dDogdW5kZWZpbmVkLFxuICAgIHRyYW5zZm9ybVZhbHVlOiB1bmRlZmluZWQsXG4gICAgdHlwZTogVEVYVF9JTlBVVF9UWVBFLlRFWFQsXG4gICAgdmFsaWRhdG9yczogdW5kZWZpbmVkLFxuICB9KTtcblxuICB0eXBlIEVtaXRzID0ge1xuICAgIChldmVudDogJ3ZhbGlkJywgaXNWYWxpZDogYm9vbGVhbik6IHZvaWQ7XG4gIH07XG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czxFbWl0cz4oKTtcblxuICBjb25zdCBtb2RlbFZhbHVlID0gZGVmaW5lTW9kZWw8c3RyaW5nPih7IHJlcXVpcmVkOiB0cnVlIH0pO1xuXG4gIGNvbnN0IGZvcm1Db250ZXh0ID0gdXNlRm9ybUNvbnRleHQoKTtcblxuICBjb25zdCBlcnJvclJlZiA9IHJlZjxWYWxpZGF0aW9uUmVzdWx0PihWQUxJREFUSU9OX1JFU1VMVC5OT19FUlJPUik7XG4gIGNvbnN0IGhhc0ZvY3VzID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgaW5wdXRFbGVtZW50ID0gcmVmPEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgaXNWYWxpZGF0aW5nID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3Qgc2hvd1Bhc3N3b3JkID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcblxuICBjb25zdCBmb3JtYXR0ZWRMYWJlbCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCAmJiBwcm9wcy5sYWJlbCA/IGAke3Byb3BzLmxhYmVsfSAqYCA6IHByb3BzLmxhYmVsKSk7XG4gIGNvbnN0IHNob3dFcnJvciA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAoaGFzRXJyb3JGcm9tUHJvcC52YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgaWYgKCFpc1ZhbGlkYXRpbmcudmFsdWUpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gIWVycm9yUmVmLnZhbHVlLnZhbGlkO1xuICB9KTtcbiAgY29uc3QgaGFzRXJyb3JGcm9tUHJvcCA9IGNvbXB1dGVkKCgpID0+IHByb3BzLmVycm9yICE9PSAnJyk7XG4gIGNvbnN0IGhhc01pbmlsYWJlbCA9IGNvbXB1dGVkKCgpID0+IGhhc0ZvY3VzLnZhbHVlIHx8ICFpc0VtcHR5LnZhbHVlKTtcbiAgY29uc3QgaW5wdXRNb2RlQXR0cmlidXRlID0gY29tcHV0ZWQ8SW5wdXRNb2RlIHwgdW5kZWZpbmVkPigoKSA9PiBnZXRUZXh0SW5wdXRNb2RlKHByb3BzLnR5cGUsIHByb3BzLmlucHV0bW9kZSkpO1xuICBjb25zdCBpbnB1dFR5cGUgPSBjb21wdXRlZCgoKSA9PlxuICAgIHByb3BzLnR5cGUgPT09IFRFWFRfSU5QVVRfVFlQRS5QQVNTV09SRCAmJiBzaG93UGFzc3dvcmQudmFsdWUgPT09IHRydWUgPyBURVhUX0lOUFVUX1RZUEUuVEVYVCA6IHByb3BzLnR5cGVcbiAgKTtcbiAgY29uc3QgaXNFbXB0eSA9IGNvbXB1dGVkKCgpID0+IG1vZGVsVmFsdWUudmFsdWUgPT09ICcnKTtcbiAgY29uc3Qgc2hvdWxkU2hvd0NsZWFyQnV0dG9uID0gY29tcHV0ZWQoXG4gICAgKCkgPT4gcHJvcHMuaGFzQ2xlYXIgJiYgbW9kZWxWYWx1ZS52YWx1ZSAmJiBwcm9wcy50eXBlICE9PSBURVhUX0lOUFVUX1RZUEUuUEFTU1dPUkRcbiAgKTtcbiAgY29uc3Qgc2hvdWxkU2hvd1Bhc3N3b3JkQnV0dG9uID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMudHlwZSA9PT0gVEVYVF9JTlBVVF9UWVBFLlBBU1NXT1JEKTtcbiAgY29uc3Qgc3VwcG9ydGluZ1RleHRNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4gKHNob3dFcnJvci52YWx1ZSAmJiBlcnJvclJlZi52YWx1ZS5tZXNzYWdlKSB8fCBwcm9wcy5zdXBwb3J0aW5nVGV4dCk7XG5cbiAgY29uc3QgaGFuZGxlQ2xlYXIgPSAoKSA9PiB7XG4gICAgbW9kZWxWYWx1ZS52YWx1ZSA9ICcnO1xuICAgIGlucHV0RWxlbWVudC52YWx1ZT8uZm9jdXMoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1cyA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IHRydWU7XG4gICAgaWYgKHByb3BzLmVycm9yRGlzcGxheSA9PT0gRVJST1JfRElTUExBWS5FQUdFUikgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c091dCA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IGZhbHNlO1xuICAgIGlmIChwcm9wcy5lcnJvckRpc3BsYXkgPT09IEVSUk9SX0RJU1BMQVkuTEFaWSkgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGaWVsZENsaWNrID0gKCkgPT4ge1xuICAgIGlucHV0RWxlbWVudC52YWx1ZT8uZm9jdXMoKTtcbiAgfTtcblxuICBjb25zdCBwcmV2ZW50SW5wdXRGb2N1c0xvc3NPbk1vdXNlZG93biA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgaWYgKCFoYXNGb2N1cy52YWx1ZSkgcmV0dXJuO1xuICAgIGlmIChlLnRhcmdldCAhPT0gaW5wdXRFbGVtZW50LnZhbHVlKSBlLnByZXZlbnREZWZhdWx0KCk7XG4gIH07XG5cbiAgd2F0Y2hFZmZlY3QoKCkgPT4ge1xuICAgIGVycm9yUmVmLnZhbHVlID0gZ2V0RmllbGRWYWxpZGF0aW9uUmVzdWx0KHtcbiAgICAgIGVycm9yRnJvbVByb3BzOiBwcm9wcy5lcnJvcixcbiAgICAgIG1heGxlbmd0aDogcHJvcHMubWF4bGVuZ3RoLFxuICAgICAgbWlubGVuZ3RoOiBwcm9wcy5taW5sZW5ndGgsXG4gICAgICByZXF1aXJlZDogcHJvcHMucmVxdWlyZWQsXG4gICAgICB2YWxpZGF0b3JzOiBwcm9wcy52YWxpZGF0b3JzLFxuICAgICAgdmFsdWU6IG1vZGVsVmFsdWUsXG4gICAgfSk7XG4gIH0pO1xuXG4gIHdhdGNoKFxuICAgIFttb2RlbFZhbHVlLCAoKSA9PiBwcm9wcy50cmFuc2Zvcm1WYWx1ZV0sXG4gICAgKCkgPT4ge1xuICAgICAgaWYgKCFwcm9wcy50cmFuc2Zvcm1WYWx1ZSkgcmV0dXJuO1xuXG4gICAgICBjb25zdCBkaWdpdHMgPSBtb2RlbFZhbHVlLnZhbHVlPy5tYXRjaCgvXFxkL2cpPy5qb2luKCcnKSB8fCB1bmRlZmluZWQ7XG4gICAgICBtb2RlbFZhbHVlLnZhbHVlID0gZGlnaXRzID8gcHJvcHMudHJhbnNmb3JtVmFsdWUoZGlnaXRzKSA6ICcnO1xuICAgIH0sXG4gICAgeyBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuXG4gIHdhdGNoKFxuICAgICgpID0+IGZvcm1Db250ZXh0Py5mb3JjZVNob3dFcnJvcnMudmFsdWUsXG4gICAgKG5ld1ZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUpIGlzVmFsaWRhdGluZy52YWx1ZSA9IHRydWU7XG4gICAgfSxcbiAgICB7IGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG5cbiAgd2F0Y2goXG4gICAgZXJyb3JSZWYsXG4gICAgKCkgPT4ge1xuICAgICAgZW1pdCgndmFsaWQnLCBlcnJvclJlZi52YWx1ZS52YWxpZCk7XG4gICAgfSxcbiAgICB7IGRlZXA6IHRydWUsIGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtaW5wdXQtdGV4dCcsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIGRpc2FibGVkICYmICdkaXNhYmxlZCcsXG4gICAgICBzaG93RXJyb3IgJiYgJ2Vycm9yJyxcbiAgICBdXCJcbiAgPlxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC10ZXh0LWZpZWxkJyxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgIENTUy5QQURESU5HLlkuSEFMRixcbiAgICAgICAgc2hvdWxkU2hvd0NsZWFyQnV0dG9uID8gW0NTUy5QQURESU5HLlJJR0hULkhBTEYsIENTUy5QQURESU5HLkxFRlQuT05FXSA6IFtDU1MuUEFERElORy5YLk9ORV0sXG4gICAgICAgIGRpc2FibGVkID8gQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCA6IENTUy5DVVJTT1IuVEVYVCxcbiAgICAgIF1cIlxuICAgICAgOmZvcj1cImlucHV0SWRcIlxuICAgICAgQGNsaWNrPVwiaGFuZGxlRmllbGRDbGlja1wiXG4gICAgICBAbW91c2Vkb3duPVwicHJldmVudElucHV0Rm9jdXNMb3NzT25Nb3VzZWRvd25cIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgIDppY29uPVwiaWNvbkxlYWRpbmdcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwiaWNvbkxlYWRpbmdcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuV0lEVEguRlVMTF1cIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLWlucHV0LXRleHQtcHJlZml4JyxcbiAgICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICAgICAgIXNob3dFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICBoYXNNaW5pbGFiZWwgPyAnJyA6ICdvZmZzZXQnLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIHYtaWY9XCJwcmVmaXhcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcHJlZml4IH19XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5XSURUSC5GVUxMXVwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dC1sYWJlbCcsXG4gICAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/IFsnbWluaWxhYmVsJywgQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXSA6IENTUy5GT05ULlJPTEUuTEFCRUxfMSxcbiAgICAgICAgICAgICAgIXNob3dFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICAgIENTUy5DVVJTT1IuVEVYVCxcbiAgICAgICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgICAgIF1cIlxuICAgICAgICAgICAgdi1pZj1cImxhYmVsXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICA6YXV0b2NvbXBsZXRlPVwiYXV0b2NvbXBsZXRlID8gJ29uJyA6ICdvZmYnXCJcbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsIGRpc2FibGVkICYmIENTUy5DVVJTT1IuTk9UX0FMTE9XRURdXCJcbiAgICAgICAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIDppbnB1dG1vZGU9XCJpbnB1dE1vZGVBdHRyaWJ1dGVcIlxuICAgICAgICAgICAgOm1heGxlbmd0aD1cIm1heGxlbmd0aFwiXG4gICAgICAgICAgICA6bWlubGVuZ3RoPVwibWlubGVuZ3RoXCJcbiAgICAgICAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICAgICAgICByZWY9XCJpbnB1dEVsZW1lbnRcIlxuICAgICAgICAgICAgOnJlcXVpcmVkPVwicmVxdWlyZWRcIlxuICAgICAgICAgICAgOnR5cGU9XCJpbnB1dFR5cGVcIlxuICAgICAgICAgICAgQGZvY3VzPVwiaGFuZGxlRm9jdXNcIlxuICAgICAgICAgICAgQGZvY3Vzb3V0PVwiaGFuZGxlRm9jdXNPdXRcIlxuICAgICAgICAgICAgOmlkPVwiaW5wdXRJZFwiXG4gICAgICAgICAgICB2LW1vZGVsPVwibW9kZWxWYWx1ZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLWlucHV0LXRleHQtc3VmZml4JyxcbiAgICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICAgICAgIXNob3dFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICBoYXNNaW5pbGFiZWwgPyAnJyA6ICdvZmZzZXQnLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIHYtaWY9XCJzdWZmaXhcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgc3VmZml4IH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxidXR0b25cbiAgICAgICAgQGNsaWNrPVwiaGFuZGxlQ2xlYXJcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgdi1pZj1cInNob3VsZFNob3dDbGVhckJ1dHRvblwiXG4gICAgICA+XG4gICAgICAgIDxUaWRlSWNvblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuTUFSR0lOLkZVTEwuSEFMRl1cIlxuICAgICAgICAgIDppY29uPVwiSUNPTi5DTE9TRVwiXG4gICAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgLz5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgIEBjbGljaz1cInNob3dQYXNzd29yZCA9ICFzaG93UGFzc3dvcmRcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgdi1pZj1cInNob3VsZFNob3dQYXNzd29yZEJ1dHRvblwiXG4gICAgICA+XG4gICAgICAgIDxUaWRlSWNvblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuTUFSR0lOLkZVTEwuSEFMRl1cIlxuICAgICAgICAgIDppY29uPVwiSUNPTi5WSVNJQklMSVRZXCJcbiAgICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICAvPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9sYWJlbD5cblxuICAgIDxUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dFxuICAgICAgOmlzLWVycm9yPVwic2hvd0Vycm9yXCJcbiAgICAgIDptZXNzYWdlPVwic3VwcG9ydGluZ1RleHRNZXNzYWdlXCJcbiAgICAgIHYtaWY9XCJzdXBwb3J0aW5nVGV4dE1lc3NhZ2VcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW5wdXQtdGV4dC1sYWJlbCB7XG4gICAgaGVpZ2h0OiAxLjE4NzVyZW07XG4gICAgdHJhbnNpdGlvbjogZm9udC1zaXplIHZhcigtLXRpZGUtYW5pbWF0ZSksIHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC1sYWJlbDpub3QoLm1pbmlsYWJlbCksXG4gIC50aWRlLWlucHV0LXRleHQtcHJlZml4Om5vdCgub2Zmc2V0KSxcbiAgLnRpZGUtaW5wdXQtdGV4dC1zdWZmaXg6bm90KC5vZmZzZXQpIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCBjYWxjKDkgLyAxNiAqIDFyZW0pKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQtcHJlZml4LFxuICAudGlkZS1pbnB1dC10ZXh0LXN1ZmZpeCB7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiB2YXIoLS10aWRlLWRpc2FibGVkKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZXJyb3Ige1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXByaW1hcnkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5lcnJvciAudGlkZS1pbnB1dC10ZXh0LWZpZWxkIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZXJyb3I6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHQtZmllbGQge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQ6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHQtZmllbGQge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0yKTtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtYm9yZGVyLWhpZ2gpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dCBpbnB1dCB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQtZmllbGQge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0xKTtcbiAgICBvdXRsaW5lOiB2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpIHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBvdXRsaW5lLW9mZnNldDogY2FsYyh2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpICogLTEpO1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtZm9yZWdyb3VuZCk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBUaWRlSW5wdXRUZXh0LnZ1ZWAgaW1wb3J0ZWQgZnJvbSAndGlkZS1kZXNpZ24tc3lzdGVtJyBucG0gcGFja2FnZSBpbnN0ZWFkLlxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRFWFRfSU5QVVRfVFlQRSB9IGZyb20gJ0AvdHlwZXMvVGV4dElucHV0JztcbiAgaW1wb3J0IHsgZ2V0RXJyb3JNZXNzYWdlLCBnZXRGaWVsZEhhc0Vycm9yLCBoYW5kbGVGaWVsZFZhbGlkYXRpb24gfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uLWRlcHJlY2F0ZWQnO1xuXG4gIGltcG9ydCB0eXBlIHsgRm9ybVZhbHVlVHJhbnNmb3JtZXIgfSBmcm9tICdAL3R5cGVzL0Zvcm1EZXByZWNhdGVkJztcbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHR5cGUgeyBUZXh0SW5wdXRUeXBlIH0gZnJvbSAnQC90eXBlcy9UZXh0SW5wdXQnO1xuICBpbXBvcnQgdHlwZSB7IFZhbGlkYXRpb25FcnJvciwgVmFsaWRhdG9yIH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uRGVwcmVjYXRlZCc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBhdXRvY29tcGxldGU/OiBib29sZWFuO1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBlcnJvcj86IFZhbGlkYXRpb25FcnJvcjtcbiAgICBoYXNDbGVhcj86IGJvb2xlYW47XG4gICAgaWNvbkxlYWRpbmc/OiBJY29uO1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgbWF4bGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIG1pbmxlbmd0aD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIHByZWZpeD86IHN0cmluZztcbiAgICByZXF1aXJlZD86IGJvb2xlYW47XG4gICAgc3VmZml4Pzogc3RyaW5nO1xuICAgIHN1cHBvcnRpbmdUZXh0Pzogc3RyaW5nO1xuICAgIHRyYW5zZm9ybVZhbHVlPzogRm9ybVZhbHVlVHJhbnNmb3JtZXI7XG4gICAgdHlwZT86IFRleHRJbnB1dFR5cGU7XG4gICAgdmFsaWRhdG9ycz86IFZhbGlkYXRvcltdO1xuICAgIHZhbHVlPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgYXV0b2NvbXBsZXRlOiBmYWxzZSxcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZXJyb3I6IGZhbHNlLFxuICAgIGhhc0NsZWFyOiBmYWxzZSxcbiAgICBpY29uTGVhZGluZzogdW5kZWZpbmVkLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG1heGxlbmd0aDogdW5kZWZpbmVkLFxuICAgIG1pbmxlbmd0aDogdW5kZWZpbmVkLFxuICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICBwcmVmaXg6IHVuZGVmaW5lZCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgc3VmZml4OiB1bmRlZmluZWQsXG4gICAgc3VwcG9ydGluZ1RleHQ6IHVuZGVmaW5lZCxcbiAgICB0cmFuc2Zvcm1WYWx1ZTogdW5kZWZpbmVkLFxuICAgIHR5cGU6IFRFWFRfSU5QVVRfVFlQRS5URVhULFxuICAgIHZhbGlkYXRvcnM6IHVuZGVmaW5lZCxcbiAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBlcnJvciA9IHJlZihwcm9wcy5lcnJvcik7XG4gIGNvbnN0IGhhc0ZvY3VzID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgaW5wdXQgPSByZWY8SFRNTElucHV0RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBzaG93UGFzc3dvcmQgPSByZWYoZmFsc2UpO1xuICBjb25zdCB2YWx1ZSA9IHJlZihwcm9wcy52YWx1ZSk7XG5cbiAgY29uc3QgZXJyb3JNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4gZ2V0RXJyb3JNZXNzYWdlKHByb3BzLmVycm9yLCBlcnJvci52YWx1ZSkpO1xuICBjb25zdCBmb3JtYXR0ZWRMYWJlbCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCAmJiBwcm9wcy5sYWJlbCA/IGAke3Byb3BzLmxhYmVsfSAqYCA6IHByb3BzLmxhYmVsKSk7XG4gIGNvbnN0IGhhc0NsZWFyID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMuaGFzQ2xlYXIgJiYgdmFsdWUudmFsdWUpO1xuICBjb25zdCBoYXNFcnJvciA9IGNvbXB1dGVkKFxuICAgICgpID0+IChwcm9wcy5yZXF1aXJlZCAmJiB2YWx1ZS52YWx1ZSAhPT0gdW5kZWZpbmVkICYmICF2YWx1ZS52YWx1ZSkgfHwgZ2V0RmllbGRIYXNFcnJvcihlcnJvci52YWx1ZSwgcHJvcHMuZXJyb3IpXG4gICk7XG4gIGNvbnN0IGhhc01pbmlsYWJlbCA9IGNvbXB1dGVkKCgpID0+IGhhc0ZvY3VzLnZhbHVlIHx8ICFpc0VtcHR5LnZhbHVlKTtcbiAgY29uc3QgaXNFbXB0eSA9IGNvbXB1dGVkKCgpID0+IHZhbHVlLnZhbHVlID09PSAnJyB8fCB2YWx1ZS52YWx1ZSA9PT0gdW5kZWZpbmVkKTtcbiAgY29uc3QgaW5wdXRUeXBlID0gY29tcHV0ZWQoKCkgPT5cbiAgICBwcm9wcy50eXBlID09PSBURVhUX0lOUFVUX1RZUEUuUEFTU1dPUkQgJiYgc2hvd1Bhc3N3b3JkLnZhbHVlID09PSB0cnVlID8gVEVYVF9JTlBVVF9UWVBFLlRFWFQgOiBwcm9wcy50eXBlXG4gICk7XG5cbiAgY29uc3QgaGFuZGxlQ2xlYXIgPSAoKSA9PiB7XG4gICAgdmFsdWUudmFsdWUgPSAnJztcbiAgICBpbnB1dC52YWx1ZT8uZm9jdXMoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1cyA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXNPdXQgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSBmYWxzZTtcblxuICAgIGlmICghdmFsdWUudmFsdWUpIHtcbiAgICAgIHZhbHVlLnZhbHVlID0gJyc7XG4gICAgfVxuXG4gICAgaGFuZGxlVmFsaWRhdGlvbigpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUlucHV0ID0gKCkgPT4ge1xuICAgIGlmIChwcm9wcy50cmFuc2Zvcm1WYWx1ZSkge1xuICAgICAgY29uc3QgZGlnaXRzID0gdmFsdWUudmFsdWU/Lm1hdGNoKC9cXGQvZyk/LmpvaW4oJycpIHx8IHVuZGVmaW5lZDtcblxuICAgICAgdmFsdWUudmFsdWUgPSBkaWdpdHMgPyBwcm9wcy50cmFuc2Zvcm1WYWx1ZShkaWdpdHMpIDogJyc7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVZhbGlkYXRpb24gPSAoKSA9PiB7XG4gICAgaGFuZGxlRmllbGRWYWxpZGF0aW9uKHtcbiAgICAgIGVycm9yLFxuICAgICAgZXJyb3JGcm9tUHJvcHM6IHByb3BzLmVycm9yLFxuICAgICAgbWF4bGVuZ3RoOiBwcm9wcy5tYXhsZW5ndGgsXG4gICAgICBtaW5sZW5ndGg6IHByb3BzLm1pbmxlbmd0aCxcbiAgICAgIHJlcXVpcmVkOiBwcm9wcy5yZXF1aXJlZCxcbiAgICAgIHZhbGlkYXRvcnM6IHByb3BzLnZhbGlkYXRvcnMsXG4gICAgICB2YWx1ZSxcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCB1cGRhdGVWYWx1ZSA9IChuZXdWYWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgdmFsdWUudmFsdWUgPSBuZXdWYWx1ZTtcbiAgfTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy52YWx1ZSxcbiAgICAobmV3VmFsdWUsIG9sZFZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUgIT09IG9sZFZhbHVlIHx8IG5ld1ZhbHVlICE9PSB2YWx1ZS52YWx1ZSkge1xuICAgICAgICB2YWx1ZS52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgKTtcblxuICBkZWZpbmVFeHBvc2Uoe1xuICAgIGVycm9yLFxuICAgIHJlcXVpcmVkOiBwcm9wcy5yZXF1aXJlZCxcbiAgICB1cGRhdGVWYWx1ZSxcbiAgICB2YWx1ZSxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtaW5wdXQtdGV4dCcsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIGRpc2FibGVkICYmICdkaXNhYmxlZCcsXG4gICAgICBoYXNFcnJvciAmJiAnZXJyb3InLFxuICAgIF1cIlxuICA+XG4gICAgPGxhYmVsXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LXRleHQtZmllbGQnLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgaGFzQ2xlYXIgPyBbQ1NTLlBBRERJTkcuUklHSFQuSEFMRiwgQ1NTLlBBRERJTkcuTEVGVC5PTkVdIDogW0NTUy5QQURESU5HLlguT05FXSxcbiAgICAgICAgQ1NTLlBBRERJTkcuWS5IQUxGLFxuICAgICAgICBkaXNhYmxlZCA/IENTUy5DVVJTT1IuTk9UX0FMTE9XRUQgOiBDU1MuQ1VSU09SLlRFWFQsXG4gICAgICBdXCJcbiAgICAgIDpmb3I9XCJpbnB1dElkXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICA6aWNvbj1cImljb25MZWFkaW5nXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgdi1pZj1cImljb25MZWFkaW5nXCJcbiAgICAgIC8+XG5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUiwgQ1NTLldJRFRILkZVTExdXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAndGlkZS1pbnB1dC10ZXh0LXByZWZpeCcsXG4gICAgICAgICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMSxcbiAgICAgICAgICAgICFoYXNFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICBoYXNNaW5pbGFiZWwgPyAnJyA6ICdvZmZzZXQnLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIHYtaWY9XCJwcmVmaXhcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcHJlZml4IH19XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5XSURUSC5GVUxMXVwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dC1sYWJlbCcsXG4gICAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/IFsnbWluaWxhYmVsJywgQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXSA6IENTUy5GT05ULlJPTEUuTEFCRUxfMSxcbiAgICAgICAgICAgICAgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgICAgQ1NTLkNVUlNPUi5URVhULFxuICAgICAgICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICAgICAgXVwiXG4gICAgICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IGZvcm1hdHRlZExhYmVsIH19XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIDphdXRvY29tcGxldGU9XCJhdXRvY29tcGxldGUgPyAnb24nIDogJ29mZidcIlxuICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBkaXNhYmxlZCAmJiBDU1MuQ1VSU09SLk5PVF9BTExPV0VELCBDU1MuRk9OVC5ST0xFLkJPRFlfMV1cIlxuICAgICAgICAgICAgOmRpc2FibGVkPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgOm1heGxlbmd0aD1cIm1heGxlbmd0aFwiXG4gICAgICAgICAgICA6bWlubGVuZ3RoPVwibWlubGVuZ3RoXCJcbiAgICAgICAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICAgICAgICByZWY9XCJpbnB1dFwiXG4gICAgICAgICAgICA6cmVxdWlyZWQ9XCJyZXF1aXJlZFwiXG4gICAgICAgICAgICA6dHlwZT1cImlucHV0VHlwZVwiXG4gICAgICAgICAgICBAY2hhbmdlPVwiaGFuZGxlVmFsaWRhdGlvblwiXG4gICAgICAgICAgICBAZm9jdXM9XCJoYW5kbGVGb2N1c1wiXG4gICAgICAgICAgICBAZm9jdXNvdXQ9XCJoYW5kbGVGb2N1c091dFwiXG4gICAgICAgICAgICBAaW5wdXQ9XCJoYW5kbGVJbnB1dFwiXG4gICAgICAgICAgICA6aWQ9XCJpbnB1dElkXCJcbiAgICAgICAgICAgIHYtbW9kZWw9XCJ2YWx1ZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLWlucHV0LXRleHQtc3VmZml4JyxcbiAgICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICAgICAgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/ICcnIDogJ29mZnNldCcsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgdi1pZj1cInN1ZmZpeFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBzdWZmaXggfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGJ1dHRvblxuICAgICAgICBAY2xpY2s9XCJoYW5kbGVDbGVhclwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICB2LWlmPVwiaGFzQ2xlYXIgJiYgdHlwZSAhPT0gVEVYVF9JTlBVVF9UWVBFLlBBU1NXT1JEXCJcbiAgICAgID5cbiAgICAgICAgPFRpZGVJY29uXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5NQVJHSU4uRlVMTC5IQUxGXVwiXG4gICAgICAgICAgOmljb249XCJJQ09OLkNMT1NFXCJcbiAgICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICAvPlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDxidXR0b25cbiAgICAgICAgQGNsaWNrPVwic2hvd1Bhc3N3b3JkID0gIXNob3dQYXNzd29yZFwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICB2LWlmPVwidHlwZSA9PT0gVEVYVF9JTlBVVF9UWVBFLlBBU1NXT1JEXCJcbiAgICAgID5cbiAgICAgICAgPFRpZGVJY29uXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5NQVJHSU4uRlVMTC5IQUxGXVwiXG4gICAgICAgICAgOmljb249XCJJQ09OLlZJU0lCSUxJVFlcIlxuICAgICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIC8+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2xhYmVsPlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUl1cIlxuICAgICAgdi1pZj1cInN1cHBvcnRpbmdUZXh0IHx8IGhhc0Vycm9yXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW11cIlxuICAgICAgICA6aWNvbj1cIklDT04uRVJST1JcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwiaGFzRXJyb3JcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXVwiPlxuICAgICAgICB7eyBoYXNFcnJvciA/IGVycm9yTWVzc2FnZSA6IHN1cHBvcnRpbmdUZXh0IH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1pbnB1dC10ZXh0LWxhYmVsIHtcbiAgICBoZWlnaHQ6IDEuMTg3NXJlbTtcbiAgICB0cmFuc2l0aW9uOiBmb250LXNpemUgdmFyKC0tdGlkZS1hbmltYXRlKSwgdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LWxhYmVsOm5vdCgubWluaWxhYmVsKSxcbiAgLnRpZGUtaW5wdXQtdGV4dC1wcmVmaXg6bm90KC5vZmZzZXQpLFxuICAudGlkZS1pbnB1dC10ZXh0LXN1ZmZpeDpub3QoLm9mZnNldCkge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIGNhbGMoOSAvIDE2ICogMXJlbSkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC1wcmVmaXgsXG4gIC50aWRlLWlucHV0LXRleHQtc3VmZml4IHtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IHZhcigtLXRpZGUtZGlzYWJsZWQpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5lcnJvciB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItcHJpbWFyeSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmVycm9yIC50aWRlLWlucHV0LXRleHQtZmllbGQge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXN1cmZhY2UpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5lcnJvcjpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtdGV4dC1maWVsZCB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dDpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtdGV4dC1maWVsZCB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTIpO1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS1ib3JkZXItaGlnaCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0IGlucHV0IHtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC1maWVsZCB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTEpO1xuICAgIG91dGxpbmU6IHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgc29saWQgdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiBjYWxjKHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgKiAtMSk7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS1mb3JlZ3JvdW5kKTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYsIHdhdGNoLCB3YXRjaEVmZmVjdCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJbnB1dFN1cHBvcnRpbmdUZXh0IGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSW5wdXRTdXBwb3J0aW5nVGV4dC52dWUnO1xuICBpbXBvcnQgeyB1c2VGb3JtQ29udGV4dCB9IGZyb20gJ0AvY29tcG9zYWJsZXMvdXNlVGlkZUZvcm0nO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IEVSUk9SX0RJU1BMQVkgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuICBpbXBvcnQgeyBWQUxJREFUSU9OX1JFU1VMVCwgZ2V0RmllbGRWYWxpZGF0aW9uUmVzdWx0IH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbic7XG5cbiAgaW1wb3J0IHR5cGUgeyBFcnJvckRpc3BsYXksIFZhbGlkYXRpb25SZXN1bHQsIFZhbGlkYXRvciB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBlcnJvcj86IHN0cmluZztcbiAgICBlcnJvckRpc3BsYXk/OiBFcnJvckRpc3BsYXk7XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBsYWJlbD86IHN0cmluZztcbiAgICBtYXhsZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgbWlubGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICAgIHJvd3M/OiBudW1iZXI7XG4gICAgc3VwcG9ydGluZ1RleHQ/OiBzdHJpbmc7XG4gICAgdmFsaWRhdG9ycz86IFZhbGlkYXRvcltdO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZXJyb3I6ICcnLFxuICAgIGVycm9yRGlzcGxheTogRVJST1JfRElTUExBWS5MQVpZLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG1heGxlbmd0aDogdW5kZWZpbmVkLFxuICAgIG1pbmxlbmd0aDogdW5kZWZpbmVkLFxuICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgcm93czogOCxcbiAgICBzdXBwb3J0aW5nVGV4dDogdW5kZWZpbmVkLFxuICAgIHZhbGlkYXRvcnM6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgdHlwZSBFbWl0cyA9IHtcbiAgICAoZXZlbnQ6ICd2YWxpZCcsIGlzVmFsaWQ6IGJvb2xlYW4pOiB2b2lkO1xuICB9O1xuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8RW1pdHM+KCk7XG5cbiAgY29uc3QgbW9kZWxWYWx1ZSA9IGRlZmluZU1vZGVsPHN0cmluZz4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICBjb25zdCBmb3JtQ29udGV4dCA9IHVzZUZvcm1Db250ZXh0KCk7XG5cbiAgY29uc3QgZXJyb3JSZWYgPSByZWY8VmFsaWRhdGlvblJlc3VsdD4oVkFMSURBVElPTl9SRVNVTFQuTk9fRVJST1IpO1xuICBjb25zdCBoYXNGb2N1cyA9IHJlZjxib29sZWFuPihmYWxzZSk7XG4gIGNvbnN0IGlzVmFsaWRhdGluZyA9IHJlZjxib29sZWFuPihmYWxzZSk7XG4gIGNvbnN0IHRleHRhcmVhRWxlbWVudCA9IHJlZjxIVE1MVGV4dEFyZWFFbGVtZW50IHwgbnVsbD4obnVsbCk7XG5cbiAgY29uc3QgZm9ybWF0dGVkTGFiZWwgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgPyBgJHtwcm9wcy5sYWJlbH0gKmAgOiBwcm9wcy5sYWJlbCkpO1xuICBjb25zdCBzaG93RXJyb3IgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKGhhc0Vycm9yRnJvbVByb3AudmFsdWUpIHJldHVybiB0cnVlO1xuICAgIGlmICghaXNWYWxpZGF0aW5nLnZhbHVlKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuICFlcnJvclJlZi52YWx1ZS52YWxpZDtcbiAgfSk7XG4gIGNvbnN0IGhhc0Vycm9yRnJvbVByb3AgPSBjb21wdXRlZCgoKSA9PiBwcm9wcy5lcnJvciAhPT0gJycpO1xuICBjb25zdCBoYXNNaW5pbGFiZWwgPSBjb21wdXRlZCgoKSA9PiBoYXNGb2N1cy52YWx1ZSB8fCAhaXNFbXB0eS52YWx1ZSk7XG4gIGNvbnN0IGlzRW1wdHkgPSBjb21wdXRlZCgoKSA9PiBtb2RlbFZhbHVlLnZhbHVlID09PSAnJyk7XG4gIGNvbnN0IHN1cHBvcnRpbmdUZXh0TWVzc2FnZSA9IGNvbXB1dGVkKCgpID0+IChzaG93RXJyb3IudmFsdWUgJiYgZXJyb3JSZWYudmFsdWUubWVzc2FnZSkgfHwgcHJvcHMuc3VwcG9ydGluZ1RleHQpO1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gdHJ1ZTtcbiAgICBpZiAocHJvcHMuZXJyb3JEaXNwbGF5ID09PSBFUlJPUl9ESVNQTEFZLkVBR0VSKSBpc1ZhbGlkYXRpbmcudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzT3V0ID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gZmFsc2U7XG4gICAgaWYgKHByb3BzLmVycm9yRGlzcGxheSA9PT0gRVJST1JfRElTUExBWS5MQVpZKSBpc1ZhbGlkYXRpbmcudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZpZWxkQ2xpY2sgPSAoKSA9PiB7XG4gICAgdGV4dGFyZWFFbGVtZW50LnZhbHVlPy5mb2N1cygpO1xuICB9O1xuXG4gIGNvbnN0IHByZXZlbnRUZXh0YXJlYUZvY3VzTG9zc09uTW91c2Vkb3duID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICBpZiAoIWhhc0ZvY3VzLnZhbHVlKSByZXR1cm47XG4gICAgaWYgKGUudGFyZ2V0ICE9PSB0ZXh0YXJlYUVsZW1lbnQudmFsdWUpIGUucHJldmVudERlZmF1bHQoKTtcbiAgfTtcblxuICB3YXRjaEVmZmVjdCgoKSA9PiB7XG4gICAgZXJyb3JSZWYudmFsdWUgPSBnZXRGaWVsZFZhbGlkYXRpb25SZXN1bHQoe1xuICAgICAgZXJyb3JGcm9tUHJvcHM6IHByb3BzLmVycm9yLFxuICAgICAgbWF4bGVuZ3RoOiBwcm9wcy5tYXhsZW5ndGgsXG4gICAgICBtaW5sZW5ndGg6IHByb3BzLm1pbmxlbmd0aCxcbiAgICAgIHJlcXVpcmVkOiBwcm9wcy5yZXF1aXJlZCxcbiAgICAgIHZhbGlkYXRvcnM6IHByb3BzLnZhbGlkYXRvcnMsXG4gICAgICB2YWx1ZTogbW9kZWxWYWx1ZSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gZm9ybUNvbnRleHQ/LmZvcmNlU2hvd0Vycm9ycy52YWx1ZSxcbiAgICAobmV3VmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSkgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcblxuICB3YXRjaChcbiAgICBlcnJvclJlZixcbiAgICAoKSA9PiB7XG4gICAgICBlbWl0KCd2YWxpZCcsIGVycm9yUmVmLnZhbHVlLnZhbGlkKTtcbiAgICB9LFxuICAgIHsgZGVlcDogdHJ1ZSwgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbJ3RpZGUtaW5wdXQtdGV4dGFyZWEnLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuR0FQLlFVQVJURVIsIHNob3dFcnJvciAmJiAnZXJyb3InXVwiXG4gID5cbiAgICA8bGFiZWxcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQnLFxuICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgICAgQ1NTLlBBRERJTkcuVE9QLkhBTEYsXG4gICAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgIENTUy5DVVJTT1IuVEVYVCxcbiAgICAgIF1cIlxuICAgICAgOmZvcj1cImlucHV0SWRcIlxuICAgICAgQGNsaWNrPVwiaGFuZGxlRmllbGRDbGlja1wiXG4gICAgICBAbW91c2Vkb3duPVwicHJldmVudFRleHRhcmVhRm9jdXNMb3NzT25Nb3VzZWRvd25cIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLWlucHV0LXRleHRhcmVhLWxhYmVsJyxcbiAgICAgICAgICBDU1MuUEFERElORy5YLk9ORSxcbiAgICAgICAgICBoYXNNaW5pbGFiZWwgPyBbJ21pbmlsYWJlbCcsIENTUy5GT05ULlJPTEUuTEFCRUxfM10gOiBDU1MuRk9OVC5ST0xFLkxBQkVMXzEsXG4gICAgICAgICAgIXNob3dFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgXVwiXG4gICAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgICA+XG4gICAgICAgIHt7IGZvcm1hdHRlZExhYmVsIH19XG4gICAgICA8L2Rpdj5cblxuICAgICAgPHRleHRhcmVhXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5CTE9DSywgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsIENTUy5QQURESU5HLlguT05FLCBDU1MuV0lEVEguRlVMTF1cIlxuICAgICAgICA6bWF4bGVuZ3RoPVwibWF4bGVuZ3RoXCJcbiAgICAgICAgOm1pbmxlbmd0aD1cIm1pbmxlbmd0aFwiXG4gICAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICAgIHJlZj1cInRleHRhcmVhRWxlbWVudFwiXG4gICAgICAgIDpyZXF1aXJlZD1cInJlcXVpcmVkXCJcbiAgICAgICAgOnJvd3M9XCJyb3dzXCJcbiAgICAgICAgQGZvY3VzPVwiaGFuZGxlRm9jdXNcIlxuICAgICAgICBAZm9jdXNvdXQ9XCJoYW5kbGVGb2N1c091dFwiXG4gICAgICAgIDppZD1cImlucHV0SWRcIlxuICAgICAgICB2LW1vZGVsPVwibW9kZWxWYWx1ZVwiXG4gICAgICAvPlxuICAgIDwvbGFiZWw+XG5cbiAgICA8VGlkZUlucHV0U3VwcG9ydGluZ1RleHRcbiAgICAgIDppcy1lcnJvcj1cInNob3dFcnJvclwiXG4gICAgICA6bWVzc2FnZT1cInN1cHBvcnRpbmdUZXh0TWVzc2FnZVwiXG4gICAgICB2LWlmPVwic3VwcG9ydGluZ1RleHRNZXNzYWdlXCJcbiAgICAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIHRleHRhcmVhIHtcbiAgICByZXNpemU6IHZlcnRpY2FsO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEtbGFiZWwge1xuICAgIGhlaWdodDogMS4xODc1cmVtO1xuICAgIHRyYW5zaXRpb246IGZvbnQtc2l6ZSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1lcnJvci1wcmltYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWE6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMik7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhIHRleHRhcmVhIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0xKTtcbiAgICBvdXRsaW5lOiB2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpIHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBvdXRsaW5lLW9mZnNldDogY2FsYyh2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpICogLTEpO1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtZm9yZWdyb3VuZCk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBUaWRlSW5wdXRUZXh0YXJlYS52dWVgIGltcG9ydGVkIGZyb20gJ3RpZGUtZGVzaWduLXN5c3RlbScgbnBtIHBhY2thZ2UgaW5zdGVhZC5cbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBnZXRFcnJvck1lc3NhZ2UsIGdldEZpZWxkSGFzRXJyb3IsIGhhbmRsZUZpZWxkVmFsaWRhdGlvbiB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24tZGVwcmVjYXRlZCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb25EZXByZWNhdGVkJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGVycm9yPzogVmFsaWRhdGlvbkVycm9yO1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgbWF4bGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIG1pbmxlbmd0aD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgICByb3dzPzogbnVtYmVyO1xuICAgIHN1cHBvcnRpbmdUZXh0Pzogc3RyaW5nO1xuICAgIHZhbHVlPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZXJyb3I6IGZhbHNlLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG1heGxlbmd0aDogdW5kZWZpbmVkLFxuICAgIG1pbmxlbmd0aDogdW5kZWZpbmVkLFxuICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgcm93czogOCxcbiAgICBzdXBwb3J0aW5nVGV4dDogdW5kZWZpbmVkLFxuICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IGVycm9yID0gcmVmKHByb3BzLmVycm9yKTtcbiAgY29uc3QgaGFzRm9jdXMgPSByZWYoZmFsc2UpO1xuICBjb25zdCBpbnB1dCA9IHJlZjxIVE1MSW5wdXRFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHZhbHVlID0gcmVmKHByb3BzLnZhbHVlKTtcblxuICBjb25zdCBlcnJvck1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiBnZXRFcnJvck1lc3NhZ2UocHJvcHMuZXJyb3IsIGVycm9yLnZhbHVlKSk7XG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3QgaGFzRXJyb3IgPSBjb21wdXRlZChcbiAgICAoKSA9PiAocHJvcHMucmVxdWlyZWQgJiYgdmFsdWUudmFsdWUgIT09IHVuZGVmaW5lZCAmJiAhdmFsdWUudmFsdWUpIHx8IGdldEZpZWxkSGFzRXJyb3IoZXJyb3IudmFsdWUsIHByb3BzLmVycm9yKVxuICApO1xuICBjb25zdCBoYXNNaW5pbGFiZWwgPSBjb21wdXRlZCgoKSA9PiBoYXNGb2N1cy52YWx1ZSB8fCAhaXNFbXB0eS52YWx1ZSk7XG4gIGNvbnN0IGlzRW1wdHkgPSBjb21wdXRlZCgoKSA9PiB2YWx1ZS52YWx1ZSA9PT0gJycgfHwgdmFsdWUudmFsdWUgPT09IHVuZGVmaW5lZCk7XG5cbiAgY29uc3QgaGFuZGxlRm9jdXMgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzT3V0ID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gZmFsc2U7XG5cbiAgICBpZiAoIXZhbHVlLnZhbHVlKSB7XG4gICAgICB2YWx1ZS52YWx1ZSA9ICcnO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVWYWxpZGF0aW9uID0gKCkgPT4ge1xuICAgIHJldHVybiBoYW5kbGVGaWVsZFZhbGlkYXRpb24oe1xuICAgICAgZXJyb3IsXG4gICAgICBlcnJvckZyb21Qcm9wczogcHJvcHMuZXJyb3IsXG4gICAgICBtYXhsZW5ndGg6IHByb3BzLm1heGxlbmd0aCxcbiAgICAgIG1pbmxlbmd0aDogcHJvcHMubWlubGVuZ3RoLFxuICAgICAgcmVxdWlyZWQ6IHByb3BzLnJlcXVpcmVkLFxuICAgICAgdmFsdWUsXG4gICAgfSk7XG4gIH07XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMudmFsdWUsXG4gICAgKG5ld1ZhbHVlLCBvbGRWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlICE9PSBvbGRWYWx1ZSB8fCBuZXdWYWx1ZSAhPT0gdmFsdWUudmFsdWUpIHtcbiAgICAgICAgdmFsdWUudmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICk7XG5cbiAgZGVmaW5lRXhwb3NlKHtcbiAgICBlcnJvcixcbiAgICByZXF1aXJlZDogcHJvcHMucmVxdWlyZWQsXG4gICAgdmFsdWUsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIlsndGlkZS1pbnB1dC10ZXh0YXJlYScsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5HQVAuUVVBUlRFUiwgaGFzRXJyb3IgJiYgJ2Vycm9yJ11cIlxuICA+XG4gICAgPGxhYmVsXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkJyxcbiAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgIENTUy5QQURESU5HLkxFRlQuT05FLFxuICAgICAgICBDU1MuUEFERElORy5UT1AuSEFMRixcbiAgICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgQ1NTLkNVUlNPUi5URVhULFxuICAgICAgXVwiXG4gICAgICA6Zm9yPVwiaW5wdXRJZFwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dGFyZWEtbGFiZWwnLFxuICAgICAgICAgIGhhc01pbmlsYWJlbCA/IFsnbWluaWxhYmVsJywgQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXSA6IENTUy5GT05ULlJPTEUuTEFCRUxfMSxcbiAgICAgICAgICAhaGFzRXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgIF1cIlxuICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgPlxuICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDx0ZXh0YXJlYVxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuQkxPQ0ssIENTUy5XSURUSC5GVUxMLCBDU1MuRk9OVC5ST0xFLkJPRFlfMV1cIlxuICAgICAgICA6bWF4bGVuZ3RoPVwibWF4bGVuZ3RoXCJcbiAgICAgICAgOm1pbmxlbmd0aD1cIm1pbmxlbmd0aFwiXG4gICAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICAgIHJlZj1cImlucHV0XCJcbiAgICAgICAgOnJlcXVpcmVkPVwicmVxdWlyZWRcIlxuICAgICAgICA6cm93cz1cInJvd3NcIlxuICAgICAgICBAY2hhbmdlPVwiaGFuZGxlVmFsaWRhdGlvblwiXG4gICAgICAgIEBmb2N1cz1cImhhbmRsZUZvY3VzXCJcbiAgICAgICAgQGZvY3Vzb3V0PVwiaGFuZGxlRm9jdXNPdXRcIlxuICAgICAgICA6aWQ9XCJpbnB1dElkXCJcbiAgICAgICAgdi1tb2RlbD1cInZhbHVlXCJcbiAgICAgIC8+XG4gICAgPC9sYWJlbD5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVJdXCJcbiAgICAgIHYtaWY9XCJzdXBwb3J0aW5nVGV4dCB8fCBoYXNFcnJvclwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDppY29uPVwiSUNPTi5FUlJPUlwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIHYtaWY9XCJoYXNFcnJvclwiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzNdXCI+XG4gICAgICAgIHt7IGhhc0Vycm9yID8gZXJyb3JNZXNzYWdlIDogc3VwcG9ydGluZ1RleHQgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIHRleHRhcmVhIHtcbiAgICByZXNpemU6IHZlcnRpY2FsO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEtbGFiZWwge1xuICAgIGhlaWdodDogMS4xODc1cmVtO1xuICAgIHRyYW5zaXRpb246IGZvbnQtc2l6ZSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1lcnJvci1wcmltYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWE6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMik7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhIHRleHRhcmVhIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0xKTtcbiAgICBvdXRsaW5lOiB2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpIHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBvdXRsaW5lLW9mZnNldDogY2FsYyh2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpICogLTEpO1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtZm9yZWdyb3VuZCk7XG4gIH1cbjwvc3R5bGU+XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSB2dWUvc29ydC1rZXlzICovXG5cbmV4cG9ydCBjb25zdCBCUkVBS1BPSU5UID0ge1xuICBTTTogJ3NtJyxcbiAgTUQ6ICdtZCcsXG4gIExHOiAnbGcnLFxuICBYTDogJ3hsJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBNRURJQSA9IHtcbiAgU006IDc2OCxcbiAgTUQ6IDk5MixcbiAgTEc6IDEyMzIsXG4gIFhMOiAxOTIwLFxufTtcblxuZXhwb3J0IHR5cGUgQnJlYWtwb2ludCA9ICh0eXBlb2YgQlJFQUtQT0lOVClba2V5b2YgdHlwZW9mIEJSRUFLUE9JTlRdO1xuZXhwb3J0IHR5cGUgTWVkaWEgPSAodHlwZW9mIE1FRElBKVtrZXlvZiB0eXBlb2YgTUVESUFdO1xuIiwiaW1wb3J0IHsgbmV4dFRpY2sgfSBmcm9tICd2dWUnO1xuXG4vKipcbiAqIERpcmVjdGx5IG1vZGlmaWVzIHRoZSBgPGJvZHk+YCBlbGVtZW50IHRvIGFwcGx5IG9yIHJlbW92ZSBzY3JvbGwgbG9jay5cbiAqIFdoZW4gYGZhbHNlYCBpcyBwcm92aWRlZCwgaXQgb25seSB1bmxvY2tzIHNjcm9sbCBpZiB0aGVyZSBhcmUgbm8gb3BlblxuICogSFRNTCBkaWFsb2cgZWxlbWVudHMuXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRTY3JvbGxMb2NrID0gYXN5bmMgKGlzTG9ja2VkOiBib29sZWFuKSA9PiB7XG4gIC8vIENhbm5vdCBiZSBhcHBsaWVkIHRvIGJvZHkgdGFnIGluIG1hcmtldHBsYWNlIHJlcG8gZHVlIHRvIGRhdGEtY3NzLXNjb3BlXG4gIC8vIGNvbnN0IEJPRFlfTE9DS19DTEFTUyA9ICdib2R5LXNjcm9sbC1sb2NrJztcblxuICBjb25zdCBib2R5ID0gZG9jdW1lbnQuYm9keTtcblxuICBpZiAoaXNMb2NrZWQpIHtcbiAgICBpZiAoIWJvZHkuZGF0YXNldC5zY3JvbGxMb2NrWSkge1xuICAgICAgY29uc3Qgc2Nyb2xsWSA9IHdpbmRvdy5zY3JvbGxZO1xuXG4gICAgICBib2R5LmRhdGFzZXQuc2Nyb2xsTG9ja1kgPSBzY3JvbGxZLnRvU3RyaW5nKCk7XG4gICAgICBib2R5LnN0eWxlLnNldFByb3BlcnR5KCctLXNhdmVkLXNjcm9sbC15JywgYCR7c2Nyb2xsWX1weGApO1xuICAgICAgYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgnaW5zZXQnLCAnMCcpO1xuICAgICAgYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgnbWFyZ2luLXRvcCcsIGBjYWxjKDBweCAtIHZhcigtLXNhdmVkLXNjcm9sbC15LCAwcHgpKWApO1xuICAgICAgYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgnb3ZlcmZsb3cteScsICdzY3JvbGwnKTtcbiAgICAgIGJvZHkuc3R5bGUuc2V0UHJvcGVydHkoJ3Bvc2l0aW9uJywgJ2ZpeGVkJyk7XG5cbiAgICAgIC8vIENhbm5vdCBiZSBhcHBsaWVkIHRvIGJvZHkgdGFnIGluIG1hcmtldHBsYWNlIHJlcG8gZHVlIHRvIGRhdGEtY3NzLXNjb3BlXG4gICAgICAvLyBib2R5LmNsYXNzTGlzdC5hZGQoQk9EWV9MT0NLX0NMQVNTKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgYXdhaXQgbmV4dFRpY2soKTtcbiAgICBpZiAoIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2RpYWxvZ1tvcGVuXScpKSB7XG4gICAgICBjb25zdCBzYXZlZFNjcm9sbFkgPSBwYXJzZUludChib2R5LmRhdGFzZXQuc2Nyb2xsTG9ja1kgfHwgJzAnKTtcblxuICAgICAgLy8gQ2Fubm90IGJlIGFwcGxpZWQgdG8gYm9keSB0YWcgaW4gbWFya2V0cGxhY2UgcmVwbyBkdWUgdG8gZGF0YS1jc3Mtc2NvcGVcbiAgICAgIC8vIGJvZHkuY2xhc3NMaXN0LnJlbW92ZShCT0RZX0xPQ0tfQ0xBU1MpO1xuXG4gICAgICBib2R5LnN0eWxlLnJlbW92ZVByb3BlcnR5KCdpbnNldCcpO1xuICAgICAgYm9keS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnbWFyZ2luVG9wJyk7XG4gICAgICBib2R5LnN0eWxlLnJlbW92ZVByb3BlcnR5KCdvdmVyZmxvd1knKTtcbiAgICAgIGJvZHkuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ3Bvc2l0aW9uJyk7XG4gICAgICBib2R5LnN0eWxlLnJlbW92ZVByb3BlcnR5KCctLXNhdmVkLXNjcm9sbC15Jyk7XG5cbiAgICAgIHdpbmRvdy5zY3JvbGxUbyh7XG4gICAgICAgIGJlaGF2aW9yOiAnYXV0bycsXG4gICAgICAgIHRvcDogc2F2ZWRTY3JvbGxZLFxuICAgICAgfSk7XG5cbiAgICAgIGRlbGV0ZSBib2R5LmRhdGFzZXQuc2Nyb2xsTG9ja1k7XG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgY29uc3QgVE9QX0xBWUVSX0lEID0gJ3RpZGUtdG9wLWxheWVyJztcblxuZXhwb3J0IGNvbnN0IGluaXRGYXV4VG9wTGF5ZXIgPSAoKSA9PiB7XG4gIGxldCB0b3BMYXllciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFRPUF9MQVlFUl9JRCk7XG4gIGlmICghdG9wTGF5ZXIpIHtcbiAgICB0b3BMYXllciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHRvcExheWVyLmlkID0gVE9QX0xBWUVSX0lEO1xuICAgIHRvcExheWVyLnNldEF0dHJpYnV0ZSgnZGF0YS1jc3Mtc2NvcGUnLCAnJyk7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0b3BMYXllcik7XG4gIH1cbiAgdG9wTGF5ZXIuc3R5bGUuaXNvbGF0aW9uID0gJ2lzb2xhdGUnO1xufTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IG5leHRUaWNrLCBvbkJlZm9yZU1vdW50LCBvbk1vdW50ZWQsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlQnV0dG9uSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUJ1dHRvbkljb24udnVlJztcbiAgaW1wb3J0IHsgQlJFQUtQT0lOVCB9IGZyb20gJ0AvdHlwZXMvQnJlYWtwb2ludCc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBQUklPUklUWSB9IGZyb20gJ0AvdHlwZXMvUHJpb3JpdHknO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRPUF9MQVlFUl9JRCwgaW5pdEZhdXhUb3BMYXllciwgc2V0U2Nyb2xsTG9jayB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZpZXdwb3J0JztcblxuICBpbXBvcnQgdHlwZSB7IFJlZiB9IGZyb20gJ3Z1ZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBpc0JhY2tCdXR0b24/OiBib29sZWFuO1xuICAgIGlzRGlzbWlzc2libGU/OiBib29sZWFuO1xuICAgIGlzT3BlbjogYm9vbGVhbjtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICB3aWR0aD86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGlzQmFja0J1dHRvbjogZmFsc2UsXG4gICAgaXNEaXNtaXNzaWJsZTogdHJ1ZSxcbiAgICB0aXRsZTogdW5kZWZpbmVkLFxuICAgIHdpZHRoOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIHR5cGUgRW1pdHMgPSB7XG4gICAgKGU6ICdjbG9zZScpOiB2b2lkO1xuICAgIChlOiAnYmFjaycpOiB2b2lkO1xuICB9O1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czxFbWl0cz4oKTtcblxuICBjb25zdCBtb2RhbENvbnRlbnQ6IFJlZjxIVE1MRGl2RWxlbWVudCB8IHVuZGVmaW5lZD4gPSByZWYoKTtcbiAgY29uc3QgbW9kYWxEaWFsb2c6IFJlZjxIVE1MRGlhbG9nRWxlbWVudCB8IHVuZGVmaW5lZD4gPSByZWYoKTtcblxuICBjb25zdCB0cmlnZ2VyTmF0aXZlRGlhbG9nT3BlbiA9ICgpID0+IHtcbiAgICBtb2RhbERpYWxvZy52YWx1ZT8uc2hvd01vZGFsKCk7XG4gIH07XG5cbiAgY29uc3QgdHJpZ2dlck5hdGl2ZURpYWxvZ0Nsb3NlID0gKCkgPT4ge1xuICAgIG1vZGFsRGlhbG9nLnZhbHVlPy5jbG9zZSgpO1xuICB9O1xuXG4gIGNvbnN0IHNjcm9sbENvbnRlbnRUb1RvcCA9ICgpID0+IHtcbiAgICBuZXh0VGljaygoKSA9PiB7XG4gICAgICBpZiAoIW1vZGFsQ29udGVudC52YWx1ZSkgcmV0dXJuO1xuICAgICAgbW9kYWxDb250ZW50LnZhbHVlLnNjcm9sbFRvcCA9IDA7XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQmFja2Ryb3BDbGljayA9ICgpID0+IHtcbiAgICBpZiAocHJvcHMuaXNEaXNtaXNzaWJsZSkgZW1pdCgnY2xvc2UnKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVFc2NhcGVLZXlkb3duID0gKGU6IEV2ZW50KSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmIChwcm9wcy5pc0Rpc21pc3NpYmxlKSBlbWl0KCdjbG9zZScpO1xuICB9O1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLmlzT3BlbixcbiAgICAobmV3VmFsdWUpID0+IHtcbiAgICAgIGlmICghbW9kYWxEaWFsb2cudmFsdWUpIHJldHVybjtcbiAgICAgIGlmIChuZXdWYWx1ZSkge1xuICAgICAgICB0cmlnZ2VyTmF0aXZlRGlhbG9nT3BlbigpO1xuICAgICAgICBzY3JvbGxDb250ZW50VG9Ub3AoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyaWdnZXJOYXRpdmVEaWFsb2dDbG9zZSgpO1xuICAgICAgfVxuICAgICAgc2V0U2Nyb2xsTG9jayhuZXdWYWx1ZSk7XG4gICAgfVxuICApO1xuXG4gIG9uQmVmb3JlTW91bnQoKCkgPT4ge1xuICAgIGluaXRGYXV4VG9wTGF5ZXIoKTtcbiAgfSk7XG5cbiAgb25Nb3VudGVkKCgpID0+IHtcbiAgICBpZiAocHJvcHMuaXNPcGVuKSB7XG4gICAgICB0cmlnZ2VyTmF0aXZlRGlhbG9nT3BlbigpO1xuICAgIH1cbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8VGVsZXBvcnQgOnRvPVwiYCMke1RPUF9MQVlFUl9JRH1gXCI+XG4gICAgPGRpYWxvZ1xuICAgICAgOmNsYXNzPVwiWyd0aWRlLW1vZGFsJywgQ1NTLkJHLklOSVRJQUwsIENTUy5IRUlHSFQuRlVMTCwgQ1NTLldJRFRILkZVTEwsIENTUy5PVkVSRkxPVy5YWS5ISURERU5dXCJcbiAgICAgIHJlZj1cIm1vZGFsRGlhbG9nXCJcbiAgICAgIDpzdHlsZT1cInsgJy0tbW9kYWwtd2lkdGgnOiBwcm9wcy53aWR0aCB9XCJcbiAgICAgIEBjbGljay5zZWxmPVwiaGFuZGxlQmFja2Ryb3BDbGlja1wiXG4gICAgICBAY2xvc2UucHJldmVudFxuICAgICAgQGtleWRvd24uZXNjYXBlPVwiaGFuZGxlRXNjYXBlS2V5ZG93blwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtbW9kYWwtYm9keScsXG4gICAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5PTkUsXG4gICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICAgICAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICAgICAgICAgIENTUy5QT1NJVElPTklORy5CT1RUT00sXG4gICAgICAgICAgQ1NTLlNIQURPVy5UT1AsXG4gICAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgICAgQ1NTLldJRFRILk1BWF9GVUxMLFxuICAgICAgICAgIENTUy53aXRoQnJlYWtwb2ludChbQ1NTLlNIQURPVy5CT1RUT01dLCBCUkVBS1BPSU5ULlNNKSxcbiAgICAgICAgXVwiXG4gICAgICA+XG4gICAgICAgIDxoZWFkZXJcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAndGlkZS1tb2RhbC1oZWFkZXInLFxuICAgICAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgICAgIENTUy5CT1JERVIuQk9UVE9NLk9ORSxcbiAgICAgICAgICAgIENTUy5CT1JERVIuQ09MT1IuTE9XLFxuICAgICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgICAgIENTUy5JU09MQVRJT04uSVNPTEFURSxcbiAgICAgICAgICAgIENTUy5QQURESU5HLlkuT05FLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICAgICAgQ1NTLlpfSU5ERVguT05FLFxuICAgICAgICAgIF1cIlxuICAgICAgICA+XG4gICAgICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9MRUZUXCJcbiAgICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICAgICAgQGNsaWNrPVwiZW1pdCgnYmFjaycpXCJcbiAgICAgICAgICAgIHRpdGxlPVwiQmFja1wiXG4gICAgICAgICAgICB2LWlmPVwiaXNCYWNrQnV0dG9uXCJcbiAgICAgICAgICAvPlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuSEVBRExJTkVfMl1cIlxuICAgICAgICAgICAgdi10ZXh0PVwidGl0bGVcIlxuICAgICAgICAgIC8+XG5cbiAgICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5HUk9XLk9GRiwgQ1NTLkZMRVguU0hSSU5LLk9GRiwgQ1NTLk1BUkdJTi5MRUZULkFVVE9dXCJcbiAgICAgICAgICAgIDppY29uPVwiSUNPTi5DTE9TRVwiXG4gICAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgICAgIEBjbGljaz1cImVtaXQoJ2Nsb3NlJylcIlxuICAgICAgICAgICAgdi1pZj1cImlzRGlzbWlzc2libGVcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAndGlkZS1tb2RhbC1jb250ZW50JyxcbiAgICAgICAgICAgIENTUy5ESVNQTEFZLkdSSUQsXG4gICAgICAgICAgICBDU1MuSVNPTEFUSU9OLklTT0xBVEUsXG4gICAgICAgICAgICBDU1MuT1ZFUkZMT1cuWC5ISURERU4sXG4gICAgICAgICAgICBDU1MuT1ZFUkZMT1cuWS5BVVRPLFxuICAgICAgICAgICAgQ1NTLlBBRERJTkcuWS5UV08sXG4gICAgICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgICBdXCJcbiAgICAgICAgICByZWY9XCJtb2RhbENvbnRlbnRcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNsb3QgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGZvb3RlclxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLW1vZGFsLWZvb3RlcicsXG4gICAgICAgICAgICBDU1MuQVhJUzEuRU5ELFxuICAgICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICAgIENTUy5HQVAuVFdPLFxuICAgICAgICAgICAgQ1NTLklTT0xBVElPTi5JU09MQVRFLFxuICAgICAgICAgICAgQ1NTLlBBRERJTkcuWS5PTkUsXG4gICAgICAgICAgICBDU1MuU0hBRE9XLlRPUCxcbiAgICAgICAgICBdXCJcbiAgICAgICAgICB2LWlmPVwiJHNsb3RzLmZvb3RlclwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2xvdCBuYW1lPVwiZm9vdGVyXCIgLz5cbiAgICAgICAgPC9mb290ZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2RpYWxvZz5cbiAgPC9UZWxlcG9ydD5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLW1vZGFsIHtcbiAgICAtLW1vZGFsLXBhZGRpbmcteDogMjBweDtcbiAgICBtYXgtd2lkdGg6IHVuc2V0O1xuICAgIG1heC1oZWlnaHQ6IHVuc2V0O1xuICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGlkZS1hbmltYXRlKSBhbGxvdy1kaXNjcmV0ZTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XG4gIH1cbiAgLnRpZGUtbW9kYWxbb3Blbl0ge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDAlKTtcbiAgfVxuICAudGlkZS1tb2RhbDo6YmFja2Ryb3Age1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS10aWRlLWFuaW1hdGUpIGFsbG93LWRpc2NyZXRlO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigwcHgpO1xuICB9XG4gIC50aWRlLW1vZGFsW29wZW5dOjpiYWNrZHJvcCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS10cmFuc3BhcmVudC00MDApO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogdmFyKC0tdGlkZS1iZy1ibHVyKTtcbiAgfVxuICBAc3RhcnRpbmctc3R5bGUge1xuICAgIC50aWRlLW1vZGFsW29wZW5dIHtcbiAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XG4gICAgfVxuICAgIC50aWRlLW1vZGFsW29wZW5dOjpiYWNrZHJvcCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGJhY2tkcm9wLWZpbHRlcjogdmFyKC0tdGlkZS1iZy1ibHVyKTtcbiAgICB9XG4gIH1cbiAgLnRpZGUtbW9kYWwtYm9keSB7XG4gICAgd2lkdGg6IHZhcigtLW1vZGFsLXdpZHRoLCA1NzZweCk7XG4gICAgbWF4LWhlaWdodDogY2FsYygxMDAlIC0gdmFyKC0tdGlkZS1zcGFjaW5nLTIpKTtcbiAgfVxuXG4gIC50aWRlLW1vZGFsLWhlYWRlcixcbiAgLnRpZGUtbW9kYWwtZm9vdGVyIHtcbiAgICBwYWRkaW5nLWlubGluZTogdmFyKC0tbW9kYWwtcGFkZGluZy14KTtcbiAgfVxuICAudGlkZS1tb2RhbC1jb250ZW50IHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHZhcigtLW1vZGFsLXBhZGRpbmcteCkgMWZyIHZhcigtLW1vZGFsLXBhZGRpbmcteCk7XG4gIH1cbiAgOndoZXJlKC50aWRlLW1vZGFsLWNvbnRlbnQpOmRlZXAoPiA6d2hlcmUoKikpIHtcbiAgICBncmlkLWNvbHVtbjogMjtcbiAgfVxuXG4gIEBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkge1xuICAgIC50aWRlLW1vZGFsLWJvZHkge1xuICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbiAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xuICAgIH1cbiAgfVxuICBAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgICAudGlkZS1tb2RhbCB7XG4gICAgICAtLW1vZGFsLXBhZGRpbmcteDogdmFyKC0tdGlkZS1zcGFjaW5nLTIpO1xuICAgIH1cbiAgICAudGlkZS1tb2RhbC1ib2R5IHtcbiAgICAgIG1heC1oZWlnaHQ6IDg1JTtcbiAgICAgIGJvdHRvbTogaW5pdGlhbDtcbiAgICB9XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUJ1dHRvbkljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSc7XG4gIGltcG9ydCBUaWRlQnV0dG9uUGFnaW5hdGlvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUJ1dHRvblBhZ2luYXRpb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFBSSU9SSVRZIH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIHBhZ2VDdXJyZW50PzogbnVtYmVyO1xuICAgIHBhZ2VUb3RhbD86IG51bWJlcjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIHBhZ2VDdXJyZW50OiAxLFxuICAgIHBhZ2VUb3RhbDogMSxcbiAgfSk7XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzKFsnY2hhbmdlJ10pO1xuXG4gIGNvbnN0IHBhZ2VDdXJyZW50ID0gcmVmKHByb3BzLnBhZ2VDdXJyZW50KTtcblxuICBjb25zdCBwYWdpbmF0aW9uQnV0dG9ucyA9IGNvbXB1dGVkKCgpID0+IG5ldyBBcnJheShwcm9wcy5wYWdlVG90YWwpLmZpbGwoJycpLm1hcCgoZW1wdHksIGluZGV4KSA9PiBpbmRleCArIDEpKTtcblxuICBjb25zdCBoYW5kbGVDbGljayA9IChpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgcGFnZUN1cnJlbnQudmFsdWUgPSBpbmRleDtcblxuICAgIGVtaXQoJ2NoYW5nZScsIGV2ZW50LCBpbmRleCk7XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8c2VjdGlvblxuICAgIDpjbGFzcz1cIlsndGlkZS1wYWdpbmF0aW9uJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMxLkNFTlRFUiwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuV0lEVEguRlVMTF1cIlxuICA+XG4gICAgPFRpZGVCdXR0b25JY29uXG4gICAgICA6ZGlzYWJsZWQ9XCJwYWdlQ3VycmVudCA9PT0gMVwiXG4gICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9MRUZUXCJcbiAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgQGNsaWNrPVwiaGFuZGxlQ2xpY2socGFnZUN1cnJlbnQgLSAxKVwiXG4gICAgLz5cblxuICAgIDx1bCA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuTElTVF9CVUxMRVRTLk9GRl1cIj5cbiAgICAgIDxsaVxuICAgICAgICA6a2V5PVwicGFnaW5hdGlvbkJ1dHRvblwiXG4gICAgICAgIHYtZm9yPVwicGFnaW5hdGlvbkJ1dHRvbiBpbiBwYWdpbmF0aW9uQnV0dG9uc1wiXG4gICAgICA+XG4gICAgICAgIDxUaWRlQnV0dG9uUGFnaW5hdGlvblxuICAgICAgICAgIDpkaXNhYmxlZD1cInBhZ2VDdXJyZW50ID09PSBwYWdpbmF0aW9uQnV0dG9uXCJcbiAgICAgICAgICA6bGFiZWw9XCJwYWdpbmF0aW9uQnV0dG9uXCJcbiAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgICBAY2xpY2s9XCJoYW5kbGVDbGljayhwYWdpbmF0aW9uQnV0dG9uKVwiXG4gICAgICAgIC8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG5cbiAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgIDpkaXNhYmxlZD1cInBhZ2VDdXJyZW50ID09PSBwYWdpbmF0aW9uQnV0dG9uc1twYWdpbmF0aW9uQnV0dG9ucy5sZW5ndGggLSAxXVwiXG4gICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9SSUdIVFwiXG4gICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgIEBjbGljaz1cImhhbmRsZUNsaWNrKHBhZ2VDdXJyZW50ICsgMSlcIlxuICAgIC8+XG4gIDwvc2VjdGlvbj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+PC9zdHlsZT5cbiIsIi8qKlxuICogQ3VzdG9tIHBvc2l0aW9uaW5nIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3ZpcnR1YWwtZWxlbWVudHNcbiAqL1xuXG5jb25zdCBzaWRlcyA9IFsndG9wJywgJ3JpZ2h0JywgJ2JvdHRvbScsICdsZWZ0J107XG5jb25zdCBhbGlnbm1lbnRzID0gWydzdGFydCcsICdlbmQnXTtcbmNvbnN0IHBsYWNlbWVudHMgPSAvKiNfX1BVUkVfXyovc2lkZXMucmVkdWNlKChhY2MsIHNpZGUpID0+IGFjYy5jb25jYXQoc2lkZSwgc2lkZSArIFwiLVwiICsgYWxpZ25tZW50c1swXSwgc2lkZSArIFwiLVwiICsgYWxpZ25tZW50c1sxXSksIFtdKTtcbmNvbnN0IG1pbiA9IE1hdGgubWluO1xuY29uc3QgbWF4ID0gTWF0aC5tYXg7XG5jb25zdCByb3VuZCA9IE1hdGgucm91bmQ7XG5jb25zdCBmbG9vciA9IE1hdGguZmxvb3I7XG5jb25zdCBjcmVhdGVDb29yZHMgPSB2ID0+ICh7XG4gIHg6IHYsXG4gIHk6IHZcbn0pO1xuY29uc3Qgb3Bwb3NpdGVTaWRlTWFwID0ge1xuICBsZWZ0OiAncmlnaHQnLFxuICByaWdodDogJ2xlZnQnLFxuICBib3R0b206ICd0b3AnLFxuICB0b3A6ICdib3R0b20nXG59O1xuY29uc3Qgb3Bwb3NpdGVBbGlnbm1lbnRNYXAgPSB7XG4gIHN0YXJ0OiAnZW5kJyxcbiAgZW5kOiAnc3RhcnQnXG59O1xuZnVuY3Rpb24gY2xhbXAoc3RhcnQsIHZhbHVlLCBlbmQpIHtcbiAgcmV0dXJuIG1heChzdGFydCwgbWluKHZhbHVlLCBlbmQpKTtcbn1cbmZ1bmN0aW9uIGV2YWx1YXRlKHZhbHVlLCBwYXJhbSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nID8gdmFsdWUocGFyYW0pIDogdmFsdWU7XG59XG5mdW5jdGlvbiBnZXRTaWRlKHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnNwbGl0KCctJylbMF07XG59XG5mdW5jdGlvbiBnZXRBbGlnbm1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQuc3BsaXQoJy0nKVsxXTtcbn1cbmZ1bmN0aW9uIGdldE9wcG9zaXRlQXhpcyhheGlzKSB7XG4gIHJldHVybiBheGlzID09PSAneCcgPyAneScgOiAneCc7XG59XG5mdW5jdGlvbiBnZXRBeGlzTGVuZ3RoKGF4aXMpIHtcbiAgcmV0dXJuIGF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcbn1cbmZ1bmN0aW9uIGdldFNpZGVBeGlzKHBsYWNlbWVudCkge1xuICByZXR1cm4gWyd0b3AnLCAnYm90dG9tJ10uaW5jbHVkZXMoZ2V0U2lkZShwbGFjZW1lbnQpKSA/ICd5JyA6ICd4Jztcbn1cbmZ1bmN0aW9uIGdldEFsaWdubWVudEF4aXMocGxhY2VtZW50KSB7XG4gIHJldHVybiBnZXRPcHBvc2l0ZUF4aXMoZ2V0U2lkZUF4aXMocGxhY2VtZW50KSk7XG59XG5mdW5jdGlvbiBnZXRBbGlnbm1lbnRTaWRlcyhwbGFjZW1lbnQsIHJlY3RzLCBydGwpIHtcbiAgaWYgKHJ0bCA9PT0gdm9pZCAwKSB7XG4gICAgcnRsID0gZmFsc2U7XG4gIH1cbiAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCk7XG4gIGNvbnN0IGFsaWdubWVudEF4aXMgPSBnZXRBbGlnbm1lbnRBeGlzKHBsYWNlbWVudCk7XG4gIGNvbnN0IGxlbmd0aCA9IGdldEF4aXNMZW5ndGgoYWxpZ25tZW50QXhpcyk7XG4gIGxldCBtYWluQWxpZ25tZW50U2lkZSA9IGFsaWdubWVudEF4aXMgPT09ICd4JyA/IGFsaWdubWVudCA9PT0gKHJ0bCA/ICdlbmQnIDogJ3N0YXJ0JykgPyAncmlnaHQnIDogJ2xlZnQnIDogYWxpZ25tZW50ID09PSAnc3RhcnQnID8gJ2JvdHRvbScgOiAndG9wJztcbiAgaWYgKHJlY3RzLnJlZmVyZW5jZVtsZW5ndGhdID4gcmVjdHMuZmxvYXRpbmdbbGVuZ3RoXSkge1xuICAgIG1haW5BbGlnbm1lbnRTaWRlID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQobWFpbkFsaWdubWVudFNpZGUpO1xuICB9XG4gIHJldHVybiBbbWFpbkFsaWdubWVudFNpZGUsIGdldE9wcG9zaXRlUGxhY2VtZW50KG1haW5BbGlnbm1lbnRTaWRlKV07XG59XG5mdW5jdGlvbiBnZXRFeHBhbmRlZFBsYWNlbWVudHMocGxhY2VtZW50KSB7XG4gIGNvbnN0IG9wcG9zaXRlUGxhY2VtZW50ID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQocGxhY2VtZW50KTtcbiAgcmV0dXJuIFtnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudChwbGFjZW1lbnQpLCBvcHBvc2l0ZVBsYWNlbWVudCwgZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQob3Bwb3NpdGVQbGFjZW1lbnQpXTtcbn1cbmZ1bmN0aW9uIGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnJlcGxhY2UoL3N0YXJ0fGVuZC9nLCBhbGlnbm1lbnQgPT4gb3Bwb3NpdGVBbGlnbm1lbnRNYXBbYWxpZ25tZW50XSk7XG59XG5mdW5jdGlvbiBnZXRTaWRlTGlzdChzaWRlLCBpc1N0YXJ0LCBydGwpIHtcbiAgY29uc3QgbHIgPSBbJ2xlZnQnLCAncmlnaHQnXTtcbiAgY29uc3QgcmwgPSBbJ3JpZ2h0JywgJ2xlZnQnXTtcbiAgY29uc3QgdGIgPSBbJ3RvcCcsICdib3R0b20nXTtcbiAgY29uc3QgYnQgPSBbJ2JvdHRvbScsICd0b3AnXTtcbiAgc3dpdGNoIChzaWRlKSB7XG4gICAgY2FzZSAndG9wJzpcbiAgICBjYXNlICdib3R0b20nOlxuICAgICAgaWYgKHJ0bCkgcmV0dXJuIGlzU3RhcnQgPyBybCA6IGxyO1xuICAgICAgcmV0dXJuIGlzU3RhcnQgPyBsciA6IHJsO1xuICAgIGNhc2UgJ2xlZnQnOlxuICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgIHJldHVybiBpc1N0YXJ0ID8gdGIgOiBidDtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIFtdO1xuICB9XG59XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZUF4aXNQbGFjZW1lbnRzKHBsYWNlbWVudCwgZmxpcEFsaWdubWVudCwgZGlyZWN0aW9uLCBydGwpIHtcbiAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCk7XG4gIGxldCBsaXN0ID0gZ2V0U2lkZUxpc3QoZ2V0U2lkZShwbGFjZW1lbnQpLCBkaXJlY3Rpb24gPT09ICdzdGFydCcsIHJ0bCk7XG4gIGlmIChhbGlnbm1lbnQpIHtcbiAgICBsaXN0ID0gbGlzdC5tYXAoc2lkZSA9PiBzaWRlICsgXCItXCIgKyBhbGlnbm1lbnQpO1xuICAgIGlmIChmbGlwQWxpZ25tZW50KSB7XG4gICAgICBsaXN0ID0gbGlzdC5jb25jYXQobGlzdC5tYXAoZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQpKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGxpc3Q7XG59XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZVBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5yZXBsYWNlKC9sZWZ0fHJpZ2h0fGJvdHRvbXx0b3AvZywgc2lkZSA9PiBvcHBvc2l0ZVNpZGVNYXBbc2lkZV0pO1xufVxuZnVuY3Rpb24gZXhwYW5kUGFkZGluZ09iamVjdChwYWRkaW5nKSB7XG4gIHJldHVybiB7XG4gICAgdG9wOiAwLFxuICAgIHJpZ2h0OiAwLFxuICAgIGJvdHRvbTogMCxcbiAgICBsZWZ0OiAwLFxuICAgIC4uLnBhZGRpbmdcbiAgfTtcbn1cbmZ1bmN0aW9uIGdldFBhZGRpbmdPYmplY3QocGFkZGluZykge1xuICByZXR1cm4gdHlwZW9mIHBhZGRpbmcgIT09ICdudW1iZXInID8gZXhwYW5kUGFkZGluZ09iamVjdChwYWRkaW5nKSA6IHtcbiAgICB0b3A6IHBhZGRpbmcsXG4gICAgcmlnaHQ6IHBhZGRpbmcsXG4gICAgYm90dG9tOiBwYWRkaW5nLFxuICAgIGxlZnQ6IHBhZGRpbmdcbiAgfTtcbn1cbmZ1bmN0aW9uIHJlY3RUb0NsaWVudFJlY3QocmVjdCkge1xuICBjb25zdCB7XG4gICAgeCxcbiAgICB5LFxuICAgIHdpZHRoLFxuICAgIGhlaWdodFxuICB9ID0gcmVjdDtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgdG9wOiB5LFxuICAgIGxlZnQ6IHgsXG4gICAgcmlnaHQ6IHggKyB3aWR0aCxcbiAgICBib3R0b206IHkgKyBoZWlnaHQsXG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5cbmV4cG9ydCB7IGFsaWdubWVudHMsIGNsYW1wLCBjcmVhdGVDb29yZHMsIGV2YWx1YXRlLCBleHBhbmRQYWRkaW5nT2JqZWN0LCBmbG9vciwgZ2V0QWxpZ25tZW50LCBnZXRBbGlnbm1lbnRBeGlzLCBnZXRBbGlnbm1lbnRTaWRlcywgZ2V0QXhpc0xlbmd0aCwgZ2V0RXhwYW5kZWRQbGFjZW1lbnRzLCBnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudCwgZ2V0T3Bwb3NpdGVBeGlzLCBnZXRPcHBvc2l0ZUF4aXNQbGFjZW1lbnRzLCBnZXRPcHBvc2l0ZVBsYWNlbWVudCwgZ2V0UGFkZGluZ09iamVjdCwgZ2V0U2lkZSwgZ2V0U2lkZUF4aXMsIG1heCwgbWluLCBwbGFjZW1lbnRzLCByZWN0VG9DbGllbnRSZWN0LCByb3VuZCwgc2lkZXMgfTtcbiIsImltcG9ydCB7IGdldFNpZGVBeGlzLCBnZXRBbGlnbm1lbnRBeGlzLCBnZXRBeGlzTGVuZ3RoLCBnZXRTaWRlLCBnZXRBbGlnbm1lbnQsIGV2YWx1YXRlLCBnZXRQYWRkaW5nT2JqZWN0LCByZWN0VG9DbGllbnRSZWN0LCBtaW4sIGNsYW1wLCBwbGFjZW1lbnRzLCBnZXRBbGlnbm1lbnRTaWRlcywgZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQsIGdldE9wcG9zaXRlUGxhY2VtZW50LCBnZXRFeHBhbmRlZFBsYWNlbWVudHMsIGdldE9wcG9zaXRlQXhpc1BsYWNlbWVudHMsIHNpZGVzLCBtYXgsIGdldE9wcG9zaXRlQXhpcyB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscyc7XG5leHBvcnQgeyByZWN0VG9DbGllbnRSZWN0IH0gZnJvbSAnQGZsb2F0aW5nLXVpL3V0aWxzJztcblxuZnVuY3Rpb24gY29tcHV0ZUNvb3Jkc0Zyb21QbGFjZW1lbnQoX3JlZiwgcGxhY2VtZW50LCBydGwpIHtcbiAgbGV0IHtcbiAgICByZWZlcmVuY2UsXG4gICAgZmxvYXRpbmdcbiAgfSA9IF9yZWY7XG4gIGNvbnN0IHNpZGVBeGlzID0gZ2V0U2lkZUF4aXMocGxhY2VtZW50KTtcbiAgY29uc3QgYWxpZ25tZW50QXhpcyA9IGdldEFsaWdubWVudEF4aXMocGxhY2VtZW50KTtcbiAgY29uc3QgYWxpZ25MZW5ndGggPSBnZXRBeGlzTGVuZ3RoKGFsaWdubWVudEF4aXMpO1xuICBjb25zdCBzaWRlID0gZ2V0U2lkZShwbGFjZW1lbnQpO1xuICBjb25zdCBpc1ZlcnRpY2FsID0gc2lkZUF4aXMgPT09ICd5JztcbiAgY29uc3QgY29tbW9uWCA9IHJlZmVyZW5jZS54ICsgcmVmZXJlbmNlLndpZHRoIC8gMiAtIGZsb2F0aW5nLndpZHRoIC8gMjtcbiAgY29uc3QgY29tbW9uWSA9IHJlZmVyZW5jZS55ICsgcmVmZXJlbmNlLmhlaWdodCAvIDIgLSBmbG9hdGluZy5oZWlnaHQgLyAyO1xuICBjb25zdCBjb21tb25BbGlnbiA9IHJlZmVyZW5jZVthbGlnbkxlbmd0aF0gLyAyIC0gZmxvYXRpbmdbYWxpZ25MZW5ndGhdIC8gMjtcbiAgbGV0IGNvb3JkcztcbiAgc3dpdGNoIChzaWRlKSB7XG4gICAgY2FzZSAndG9wJzpcbiAgICAgIGNvb3JkcyA9IHtcbiAgICAgICAgeDogY29tbW9uWCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnkgLSBmbG9hdGluZy5oZWlnaHRcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlICdib3R0b20nOlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiBjb21tb25YLFxuICAgICAgICB5OiByZWZlcmVuY2UueSArIHJlZmVyZW5jZS5oZWlnaHRcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlICdyaWdodCc6XG4gICAgICBjb29yZHMgPSB7XG4gICAgICAgIHg6IHJlZmVyZW5jZS54ICsgcmVmZXJlbmNlLndpZHRoLFxuICAgICAgICB5OiBjb21tb25ZXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnbGVmdCc6XG4gICAgICBjb29yZHMgPSB7XG4gICAgICAgIHg6IHJlZmVyZW5jZS54IC0gZmxvYXRpbmcud2lkdGgsXG4gICAgICAgIHk6IGNvbW1vbllcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnlcbiAgICAgIH07XG4gIH1cbiAgc3dpdGNoIChnZXRBbGlnbm1lbnQocGxhY2VtZW50KSkge1xuICAgIGNhc2UgJ3N0YXJ0JzpcbiAgICAgIGNvb3Jkc1thbGlnbm1lbnRBeGlzXSAtPSBjb21tb25BbGlnbiAqIChydGwgJiYgaXNWZXJ0aWNhbCA/IC0xIDogMSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdlbmQnOlxuICAgICAgY29vcmRzW2FsaWdubWVudEF4aXNdICs9IGNvbW1vbkFsaWduICogKHJ0bCAmJiBpc1ZlcnRpY2FsID8gLTEgOiAxKTtcbiAgICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiBjb29yZHM7XG59XG5cbi8qKlxuICogQ29tcHV0ZXMgdGhlIGB4YCBhbmQgYHlgIGNvb3JkaW5hdGVzIHRoYXQgd2lsbCBwbGFjZSB0aGUgZmxvYXRpbmcgZWxlbWVudFxuICogbmV4dCB0byBhIGdpdmVuIHJlZmVyZW5jZSBlbGVtZW50LlxuICpcbiAqIFRoaXMgZXhwb3J0IGRvZXMgbm90IGhhdmUgYW55IGBwbGF0Zm9ybWAgaW50ZXJmYWNlIGxvZ2ljLiBZb3Ugd2lsbCBuZWVkIHRvXG4gKiB3cml0ZSBvbmUgZm9yIHRoZSBwbGF0Zm9ybSB5b3UgYXJlIHVzaW5nIEZsb2F0aW5nIFVJIHdpdGguXG4gKi9cbmNvbnN0IGNvbXB1dGVQb3NpdGlvbiA9IGFzeW5jIChyZWZlcmVuY2UsIGZsb2F0aW5nLCBjb25maWcpID0+IHtcbiAgY29uc3Qge1xuICAgIHBsYWNlbWVudCA9ICdib3R0b20nLFxuICAgIHN0cmF0ZWd5ID0gJ2Fic29sdXRlJyxcbiAgICBtaWRkbGV3YXJlID0gW10sXG4gICAgcGxhdGZvcm1cbiAgfSA9IGNvbmZpZztcbiAgY29uc3QgdmFsaWRNaWRkbGV3YXJlID0gbWlkZGxld2FyZS5maWx0ZXIoQm9vbGVhbik7XG4gIGNvbnN0IHJ0bCA9IGF3YWl0IChwbGF0Zm9ybS5pc1JUTCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNSVEwoZmxvYXRpbmcpKTtcbiAgbGV0IHJlY3RzID0gYXdhaXQgcGxhdGZvcm0uZ2V0RWxlbWVudFJlY3RzKHtcbiAgICByZWZlcmVuY2UsXG4gICAgZmxvYXRpbmcsXG4gICAgc3RyYXRlZ3lcbiAgfSk7XG4gIGxldCB7XG4gICAgeCxcbiAgICB5XG4gIH0gPSBjb21wdXRlQ29vcmRzRnJvbVBsYWNlbWVudChyZWN0cywgcGxhY2VtZW50LCBydGwpO1xuICBsZXQgc3RhdGVmdWxQbGFjZW1lbnQgPSBwbGFjZW1lbnQ7XG4gIGxldCBtaWRkbGV3YXJlRGF0YSA9IHt9O1xuICBsZXQgcmVzZXRDb3VudCA9IDA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsaWRNaWRkbGV3YXJlLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3Qge1xuICAgICAgbmFtZSxcbiAgICAgIGZuXG4gICAgfSA9IHZhbGlkTWlkZGxld2FyZVtpXTtcbiAgICBjb25zdCB7XG4gICAgICB4OiBuZXh0WCxcbiAgICAgIHk6IG5leHRZLFxuICAgICAgZGF0YSxcbiAgICAgIHJlc2V0XG4gICAgfSA9IGF3YWl0IGZuKHtcbiAgICAgIHgsXG4gICAgICB5LFxuICAgICAgaW5pdGlhbFBsYWNlbWVudDogcGxhY2VtZW50LFxuICAgICAgcGxhY2VtZW50OiBzdGF0ZWZ1bFBsYWNlbWVudCxcbiAgICAgIHN0cmF0ZWd5LFxuICAgICAgbWlkZGxld2FyZURhdGEsXG4gICAgICByZWN0cyxcbiAgICAgIHBsYXRmb3JtLFxuICAgICAgZWxlbWVudHM6IHtcbiAgICAgICAgcmVmZXJlbmNlLFxuICAgICAgICBmbG9hdGluZ1xuICAgICAgfVxuICAgIH0pO1xuICAgIHggPSBuZXh0WCAhPSBudWxsID8gbmV4dFggOiB4O1xuICAgIHkgPSBuZXh0WSAhPSBudWxsID8gbmV4dFkgOiB5O1xuICAgIG1pZGRsZXdhcmVEYXRhID0ge1xuICAgICAgLi4ubWlkZGxld2FyZURhdGEsXG4gICAgICBbbmFtZV06IHtcbiAgICAgICAgLi4ubWlkZGxld2FyZURhdGFbbmFtZV0sXG4gICAgICAgIC4uLmRhdGFcbiAgICAgIH1cbiAgICB9O1xuICAgIGlmIChyZXNldCAmJiByZXNldENvdW50IDw9IDUwKSB7XG4gICAgICByZXNldENvdW50Kys7XG4gICAgICBpZiAodHlwZW9mIHJlc2V0ID09PSAnb2JqZWN0Jykge1xuICAgICAgICBpZiAocmVzZXQucGxhY2VtZW50KSB7XG4gICAgICAgICAgc3RhdGVmdWxQbGFjZW1lbnQgPSByZXNldC5wbGFjZW1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlc2V0LnJlY3RzKSB7XG4gICAgICAgICAgcmVjdHMgPSByZXNldC5yZWN0cyA9PT0gdHJ1ZSA/IGF3YWl0IHBsYXRmb3JtLmdldEVsZW1lbnRSZWN0cyh7XG4gICAgICAgICAgICByZWZlcmVuY2UsXG4gICAgICAgICAgICBmbG9hdGluZyxcbiAgICAgICAgICAgIHN0cmF0ZWd5XG4gICAgICAgICAgfSkgOiByZXNldC5yZWN0cztcbiAgICAgICAgfVxuICAgICAgICAoe1xuICAgICAgICAgIHgsXG4gICAgICAgICAgeVxuICAgICAgICB9ID0gY29tcHV0ZUNvb3Jkc0Zyb21QbGFjZW1lbnQocmVjdHMsIHN0YXRlZnVsUGxhY2VtZW50LCBydGwpKTtcbiAgICAgIH1cbiAgICAgIGkgPSAtMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB4LFxuICAgIHksXG4gICAgcGxhY2VtZW50OiBzdGF0ZWZ1bFBsYWNlbWVudCxcbiAgICBzdHJhdGVneSxcbiAgICBtaWRkbGV3YXJlRGF0YVxuICB9O1xufTtcblxuLyoqXG4gKiBSZXNvbHZlcyB3aXRoIGFuIG9iamVjdCBvZiBvdmVyZmxvdyBzaWRlIG9mZnNldHMgdGhhdCBkZXRlcm1pbmUgaG93IG11Y2ggdGhlXG4gKiBlbGVtZW50IGlzIG92ZXJmbG93aW5nIGEgZ2l2ZW4gY2xpcHBpbmcgYm91bmRhcnkgb24gZWFjaCBzaWRlLlxuICogLSBwb3NpdGl2ZSA9IG92ZXJmbG93aW5nIHRoZSBib3VuZGFyeSBieSB0aGF0IG51bWJlciBvZiBwaXhlbHNcbiAqIC0gbmVnYXRpdmUgPSBob3cgbWFueSBwaXhlbHMgbGVmdCBiZWZvcmUgaXQgd2lsbCBvdmVyZmxvd1xuICogLSAwID0gbGllcyBmbHVzaCB3aXRoIHRoZSBib3VuZGFyeVxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2RldGVjdE92ZXJmbG93XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGRldGVjdE92ZXJmbG93KHN0YXRlLCBvcHRpb25zKSB7XG4gIHZhciBfYXdhaXQkcGxhdGZvcm0kaXNFbGU7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgY29uc3Qge1xuICAgIHgsXG4gICAgeSxcbiAgICBwbGF0Zm9ybSxcbiAgICByZWN0cyxcbiAgICBlbGVtZW50cyxcbiAgICBzdHJhdGVneVxuICB9ID0gc3RhdGU7XG4gIGNvbnN0IHtcbiAgICBib3VuZGFyeSA9ICdjbGlwcGluZ0FuY2VzdG9ycycsXG4gICAgcm9vdEJvdW5kYXJ5ID0gJ3ZpZXdwb3J0JyxcbiAgICBlbGVtZW50Q29udGV4dCA9ICdmbG9hdGluZycsXG4gICAgYWx0Qm91bmRhcnkgPSBmYWxzZSxcbiAgICBwYWRkaW5nID0gMFxuICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICBjb25zdCBwYWRkaW5nT2JqZWN0ID0gZ2V0UGFkZGluZ09iamVjdChwYWRkaW5nKTtcbiAgY29uc3QgYWx0Q29udGV4dCA9IGVsZW1lbnRDb250ZXh0ID09PSAnZmxvYXRpbmcnID8gJ3JlZmVyZW5jZScgOiAnZmxvYXRpbmcnO1xuICBjb25zdCBlbGVtZW50ID0gZWxlbWVudHNbYWx0Qm91bmRhcnkgPyBhbHRDb250ZXh0IDogZWxlbWVudENvbnRleHRdO1xuICBjb25zdCBjbGlwcGluZ0NsaWVudFJlY3QgPSByZWN0VG9DbGllbnRSZWN0KGF3YWl0IHBsYXRmb3JtLmdldENsaXBwaW5nUmVjdCh7XG4gICAgZWxlbWVudDogKChfYXdhaXQkcGxhdGZvcm0kaXNFbGUgPSBhd2FpdCAocGxhdGZvcm0uaXNFbGVtZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc0VsZW1lbnQoZWxlbWVudCkpKSAhPSBudWxsID8gX2F3YWl0JHBsYXRmb3JtJGlzRWxlIDogdHJ1ZSkgPyBlbGVtZW50IDogZWxlbWVudC5jb250ZXh0RWxlbWVudCB8fCAoYXdhaXQgKHBsYXRmb3JtLmdldERvY3VtZW50RWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnRzLmZsb2F0aW5nKSkpLFxuICAgIGJvdW5kYXJ5LFxuICAgIHJvb3RCb3VuZGFyeSxcbiAgICBzdHJhdGVneVxuICB9KSk7XG4gIGNvbnN0IHJlY3QgPSBlbGVtZW50Q29udGV4dCA9PT0gJ2Zsb2F0aW5nJyA/IHtcbiAgICB4LFxuICAgIHksXG4gICAgd2lkdGg6IHJlY3RzLmZsb2F0aW5nLndpZHRoLFxuICAgIGhlaWdodDogcmVjdHMuZmxvYXRpbmcuaGVpZ2h0XG4gIH0gOiByZWN0cy5yZWZlcmVuY2U7XG4gIGNvbnN0IG9mZnNldFBhcmVudCA9IGF3YWl0IChwbGF0Zm9ybS5nZXRPZmZzZXRQYXJlbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmdldE9mZnNldFBhcmVudChlbGVtZW50cy5mbG9hdGluZykpO1xuICBjb25zdCBvZmZzZXRTY2FsZSA9IChhd2FpdCAocGxhdGZvcm0uaXNFbGVtZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc0VsZW1lbnQob2Zmc2V0UGFyZW50KSkpID8gKGF3YWl0IChwbGF0Zm9ybS5nZXRTY2FsZSA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uZ2V0U2NhbGUob2Zmc2V0UGFyZW50KSkpIHx8IHtcbiAgICB4OiAxLFxuICAgIHk6IDFcbiAgfSA6IHtcbiAgICB4OiAxLFxuICAgIHk6IDFcbiAgfTtcbiAgY29uc3QgZWxlbWVudENsaWVudFJlY3QgPSByZWN0VG9DbGllbnRSZWN0KHBsYXRmb3JtLmNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0ID8gYXdhaXQgcGxhdGZvcm0uY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3Qoe1xuICAgIGVsZW1lbnRzLFxuICAgIHJlY3QsXG4gICAgb2Zmc2V0UGFyZW50LFxuICAgIHN0cmF0ZWd5XG4gIH0pIDogcmVjdCk7XG4gIHJldHVybiB7XG4gICAgdG9wOiAoY2xpcHBpbmdDbGllbnRSZWN0LnRvcCAtIGVsZW1lbnRDbGllbnRSZWN0LnRvcCArIHBhZGRpbmdPYmplY3QudG9wKSAvIG9mZnNldFNjYWxlLnksXG4gICAgYm90dG9tOiAoZWxlbWVudENsaWVudFJlY3QuYm90dG9tIC0gY2xpcHBpbmdDbGllbnRSZWN0LmJvdHRvbSArIHBhZGRpbmdPYmplY3QuYm90dG9tKSAvIG9mZnNldFNjYWxlLnksXG4gICAgbGVmdDogKGNsaXBwaW5nQ2xpZW50UmVjdC5sZWZ0IC0gZWxlbWVudENsaWVudFJlY3QubGVmdCArIHBhZGRpbmdPYmplY3QubGVmdCkgLyBvZmZzZXRTY2FsZS54LFxuICAgIHJpZ2h0OiAoZWxlbWVudENsaWVudFJlY3QucmlnaHQgLSBjbGlwcGluZ0NsaWVudFJlY3QucmlnaHQgKyBwYWRkaW5nT2JqZWN0LnJpZ2h0KSAvIG9mZnNldFNjYWxlLnhcbiAgfTtcbn1cblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRvIHBvc2l0aW9uIGFuIGlubmVyIGVsZW1lbnQgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgc28gdGhhdCBpdFxuICogYXBwZWFycyBjZW50ZXJlZCB0byB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXJyb3dcbiAqL1xuY29uc3QgYXJyb3cgPSBvcHRpb25zID0+ICh7XG4gIG5hbWU6ICdhcnJvdycsXG4gIG9wdGlvbnMsXG4gIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgY29uc3Qge1xuICAgICAgeCxcbiAgICAgIHksXG4gICAgICBwbGFjZW1lbnQsXG4gICAgICByZWN0cyxcbiAgICAgIHBsYXRmb3JtLFxuICAgICAgZWxlbWVudHMsXG4gICAgICBtaWRkbGV3YXJlRGF0YVxuICAgIH0gPSBzdGF0ZTtcbiAgICAvLyBTaW5jZSBgZWxlbWVudGAgaXMgcmVxdWlyZWQsIHdlIGRvbid0IFBhcnRpYWw8PiB0aGUgdHlwZS5cbiAgICBjb25zdCB7XG4gICAgICBlbGVtZW50LFxuICAgICAgcGFkZGluZyA9IDBcbiAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpIHx8IHt9O1xuICAgIGlmIChlbGVtZW50ID09IG51bGwpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgY29uc3QgcGFkZGluZ09iamVjdCA9IGdldFBhZGRpbmdPYmplY3QocGFkZGluZyk7XG4gICAgY29uc3QgY29vcmRzID0ge1xuICAgICAgeCxcbiAgICAgIHlcbiAgICB9O1xuICAgIGNvbnN0IGF4aXMgPSBnZXRBbGlnbm1lbnRBeGlzKHBsYWNlbWVudCk7XG4gICAgY29uc3QgbGVuZ3RoID0gZ2V0QXhpc0xlbmd0aChheGlzKTtcbiAgICBjb25zdCBhcnJvd0RpbWVuc2lvbnMgPSBhd2FpdCBwbGF0Zm9ybS5nZXREaW1lbnNpb25zKGVsZW1lbnQpO1xuICAgIGNvbnN0IGlzWUF4aXMgPSBheGlzID09PSAneSc7XG4gICAgY29uc3QgbWluUHJvcCA9IGlzWUF4aXMgPyAndG9wJyA6ICdsZWZ0JztcbiAgICBjb25zdCBtYXhQcm9wID0gaXNZQXhpcyA/ICdib3R0b20nIDogJ3JpZ2h0JztcbiAgICBjb25zdCBjbGllbnRQcm9wID0gaXNZQXhpcyA/ICdjbGllbnRIZWlnaHQnIDogJ2NsaWVudFdpZHRoJztcbiAgICBjb25zdCBlbmREaWZmID0gcmVjdHMucmVmZXJlbmNlW2xlbmd0aF0gKyByZWN0cy5yZWZlcmVuY2VbYXhpc10gLSBjb29yZHNbYXhpc10gLSByZWN0cy5mbG9hdGluZ1tsZW5ndGhdO1xuICAgIGNvbnN0IHN0YXJ0RGlmZiA9IGNvb3Jkc1theGlzXSAtIHJlY3RzLnJlZmVyZW5jZVtheGlzXTtcbiAgICBjb25zdCBhcnJvd09mZnNldFBhcmVudCA9IGF3YWl0IChwbGF0Zm9ybS5nZXRPZmZzZXRQYXJlbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmdldE9mZnNldFBhcmVudChlbGVtZW50KSk7XG4gICAgbGV0IGNsaWVudFNpemUgPSBhcnJvd09mZnNldFBhcmVudCA/IGFycm93T2Zmc2V0UGFyZW50W2NsaWVudFByb3BdIDogMDtcblxuICAgIC8vIERPTSBwbGF0Zm9ybSBjYW4gcmV0dXJuIGB3aW5kb3dgIGFzIHRoZSBgb2Zmc2V0UGFyZW50YC5cbiAgICBpZiAoIWNsaWVudFNpemUgfHwgIShhd2FpdCAocGxhdGZvcm0uaXNFbGVtZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc0VsZW1lbnQoYXJyb3dPZmZzZXRQYXJlbnQpKSkpIHtcbiAgICAgIGNsaWVudFNpemUgPSBlbGVtZW50cy5mbG9hdGluZ1tjbGllbnRQcm9wXSB8fCByZWN0cy5mbG9hdGluZ1tsZW5ndGhdO1xuICAgIH1cbiAgICBjb25zdCBjZW50ZXJUb1JlZmVyZW5jZSA9IGVuZERpZmYgLyAyIC0gc3RhcnREaWZmIC8gMjtcblxuICAgIC8vIElmIHRoZSBwYWRkaW5nIGlzIGxhcmdlIGVub3VnaCB0aGF0IGl0IGNhdXNlcyB0aGUgYXJyb3cgdG8gbm8gbG9uZ2VyIGJlXG4gICAgLy8gY2VudGVyZWQsIG1vZGlmeSB0aGUgcGFkZGluZyBzbyB0aGF0IGl0IGlzIGNlbnRlcmVkLlxuICAgIGNvbnN0IGxhcmdlc3RQb3NzaWJsZVBhZGRpbmcgPSBjbGllbnRTaXplIC8gMiAtIGFycm93RGltZW5zaW9uc1tsZW5ndGhdIC8gMiAtIDE7XG4gICAgY29uc3QgbWluUGFkZGluZyA9IG1pbihwYWRkaW5nT2JqZWN0W21pblByb3BdLCBsYXJnZXN0UG9zc2libGVQYWRkaW5nKTtcbiAgICBjb25zdCBtYXhQYWRkaW5nID0gbWluKHBhZGRpbmdPYmplY3RbbWF4UHJvcF0sIGxhcmdlc3RQb3NzaWJsZVBhZGRpbmcpO1xuXG4gICAgLy8gTWFrZSBzdXJlIHRoZSBhcnJvdyBkb2Vzbid0IG92ZXJmbG93IHRoZSBmbG9hdGluZyBlbGVtZW50IGlmIHRoZSBjZW50ZXJcbiAgICAvLyBwb2ludCBpcyBvdXRzaWRlIHRoZSBmbG9hdGluZyBlbGVtZW50J3MgYm91bmRzLlxuICAgIGNvbnN0IG1pbiQxID0gbWluUGFkZGluZztcbiAgICBjb25zdCBtYXggPSBjbGllbnRTaXplIC0gYXJyb3dEaW1lbnNpb25zW2xlbmd0aF0gLSBtYXhQYWRkaW5nO1xuICAgIGNvbnN0IGNlbnRlciA9IGNsaWVudFNpemUgLyAyIC0gYXJyb3dEaW1lbnNpb25zW2xlbmd0aF0gLyAyICsgY2VudGVyVG9SZWZlcmVuY2U7XG4gICAgY29uc3Qgb2Zmc2V0ID0gY2xhbXAobWluJDEsIGNlbnRlciwgbWF4KTtcblxuICAgIC8vIElmIHRoZSByZWZlcmVuY2UgaXMgc21hbGwgZW5vdWdoIHRoYXQgdGhlIGFycm93J3MgcGFkZGluZyBjYXVzZXMgaXQgdG9cbiAgICAvLyB0byBwb2ludCB0byBub3RoaW5nIGZvciBhbiBhbGlnbmVkIHBsYWNlbWVudCwgYWRqdXN0IHRoZSBvZmZzZXQgb2YgdGhlXG4gICAgLy8gZmxvYXRpbmcgZWxlbWVudCBpdHNlbGYuIFRvIGVuc3VyZSBgc2hpZnQoKWAgY29udGludWVzIHRvIHRha2UgYWN0aW9uLFxuICAgIC8vIGEgc2luZ2xlIHJlc2V0IGlzIHBlcmZvcm1lZCB3aGVuIHRoaXMgaXMgdHJ1ZS5cbiAgICBjb25zdCBzaG91bGRBZGRPZmZzZXQgPSAhbWlkZGxld2FyZURhdGEuYXJyb3cgJiYgZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkgIT0gbnVsbCAmJiBjZW50ZXIgIT09IG9mZnNldCAmJiByZWN0cy5yZWZlcmVuY2VbbGVuZ3RoXSAvIDIgLSAoY2VudGVyIDwgbWluJDEgPyBtaW5QYWRkaW5nIDogbWF4UGFkZGluZykgLSBhcnJvd0RpbWVuc2lvbnNbbGVuZ3RoXSAvIDIgPCAwO1xuICAgIGNvbnN0IGFsaWdubWVudE9mZnNldCA9IHNob3VsZEFkZE9mZnNldCA/IGNlbnRlciA8IG1pbiQxID8gY2VudGVyIC0gbWluJDEgOiBjZW50ZXIgLSBtYXggOiAwO1xuICAgIHJldHVybiB7XG4gICAgICBbYXhpc106IGNvb3Jkc1theGlzXSArIGFsaWdubWVudE9mZnNldCxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgW2F4aXNdOiBvZmZzZXQsXG4gICAgICAgIGNlbnRlck9mZnNldDogY2VudGVyIC0gb2Zmc2V0IC0gYWxpZ25tZW50T2Zmc2V0LFxuICAgICAgICAuLi4oc2hvdWxkQWRkT2Zmc2V0ICYmIHtcbiAgICAgICAgICBhbGlnbm1lbnRPZmZzZXRcbiAgICAgICAgfSlcbiAgICAgIH0sXG4gICAgICByZXNldDogc2hvdWxkQWRkT2Zmc2V0XG4gICAgfTtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIGdldFBsYWNlbWVudExpc3QoYWxpZ25tZW50LCBhdXRvQWxpZ25tZW50LCBhbGxvd2VkUGxhY2VtZW50cykge1xuICBjb25zdCBhbGxvd2VkUGxhY2VtZW50c1NvcnRlZEJ5QWxpZ25tZW50ID0gYWxpZ25tZW50ID8gWy4uLmFsbG93ZWRQbGFjZW1lbnRzLmZpbHRlcihwbGFjZW1lbnQgPT4gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkgPT09IGFsaWdubWVudCksIC4uLmFsbG93ZWRQbGFjZW1lbnRzLmZpbHRlcihwbGFjZW1lbnQgPT4gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkgIT09IGFsaWdubWVudCldIDogYWxsb3dlZFBsYWNlbWVudHMuZmlsdGVyKHBsYWNlbWVudCA9PiBnZXRTaWRlKHBsYWNlbWVudCkgPT09IHBsYWNlbWVudCk7XG4gIHJldHVybiBhbGxvd2VkUGxhY2VtZW50c1NvcnRlZEJ5QWxpZ25tZW50LmZpbHRlcihwbGFjZW1lbnQgPT4ge1xuICAgIGlmIChhbGlnbm1lbnQpIHtcbiAgICAgIHJldHVybiBnZXRBbGlnbm1lbnQocGxhY2VtZW50KSA9PT0gYWxpZ25tZW50IHx8IChhdXRvQWxpZ25tZW50ID8gZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQocGxhY2VtZW50KSAhPT0gcGxhY2VtZW50IDogZmFsc2UpO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSk7XG59XG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBjaG9vc2luZyB0aGUgcGxhY2VtZW50XG4gKiB0aGF0IGhhcyB0aGUgbW9zdCBzcGFjZSBhdmFpbGFibGUgYXV0b21hdGljYWxseSwgd2l0aG91dCBuZWVkaW5nIHRvIHNwZWNpZnkgYVxuICogcHJlZmVycmVkIHBsYWNlbWVudC4gQWx0ZXJuYXRpdmUgdG8gYGZsaXBgLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2F1dG9QbGFjZW1lbnRcbiAqL1xuY29uc3QgYXV0b1BsYWNlbWVudCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnYXV0b1BsYWNlbWVudCcsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgdmFyIF9taWRkbGV3YXJlRGF0YSRhdXRvUCwgX21pZGRsZXdhcmVEYXRhJGF1dG9QMiwgX3BsYWNlbWVudHNUaGF0Rml0T25FO1xuICAgICAgY29uc3Qge1xuICAgICAgICByZWN0cyxcbiAgICAgICAgbWlkZGxld2FyZURhdGEsXG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgcGxhdGZvcm0sXG4gICAgICAgIGVsZW1lbnRzXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGNyb3NzQXhpcyA9IGZhbHNlLFxuICAgICAgICBhbGlnbm1lbnQsXG4gICAgICAgIGFsbG93ZWRQbGFjZW1lbnRzID0gcGxhY2VtZW50cyxcbiAgICAgICAgYXV0b0FsaWdubWVudCA9IHRydWUsXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IHBsYWNlbWVudHMkMSA9IGFsaWdubWVudCAhPT0gdW5kZWZpbmVkIHx8IGFsbG93ZWRQbGFjZW1lbnRzID09PSBwbGFjZW1lbnRzID8gZ2V0UGxhY2VtZW50TGlzdChhbGlnbm1lbnQgfHwgbnVsbCwgYXV0b0FsaWdubWVudCwgYWxsb3dlZFBsYWNlbWVudHMpIDogYWxsb3dlZFBsYWNlbWVudHM7XG4gICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCBkZXRlY3RPdmVyZmxvd09wdGlvbnMpO1xuICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gKChfbWlkZGxld2FyZURhdGEkYXV0b1AgPSBtaWRkbGV3YXJlRGF0YS5hdXRvUGxhY2VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGF1dG9QLmluZGV4KSB8fCAwO1xuICAgICAgY29uc3QgY3VycmVudFBsYWNlbWVudCA9IHBsYWNlbWVudHMkMVtjdXJyZW50SW5kZXhdO1xuICAgICAgaWYgKGN1cnJlbnRQbGFjZW1lbnQgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgICBjb25zdCBhbGlnbm1lbnRTaWRlcyA9IGdldEFsaWdubWVudFNpZGVzKGN1cnJlbnRQbGFjZW1lbnQsIHJlY3RzLCBhd2FpdCAocGxhdGZvcm0uaXNSVEwgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzUlRMKGVsZW1lbnRzLmZsb2F0aW5nKSkpO1xuXG4gICAgICAvLyBNYWtlIGBjb21wdXRlQ29vcmRzYCBzdGFydCBmcm9tIHRoZSByaWdodCBwbGFjZS5cbiAgICAgIGlmIChwbGFjZW1lbnQgIT09IGN1cnJlbnRQbGFjZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnRzJDFbMF1cbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBjb25zdCBjdXJyZW50T3ZlcmZsb3dzID0gW292ZXJmbG93W2dldFNpZGUoY3VycmVudFBsYWNlbWVudCldLCBvdmVyZmxvd1thbGlnbm1lbnRTaWRlc1swXV0sIG92ZXJmbG93W2FsaWdubWVudFNpZGVzWzFdXV07XG4gICAgICBjb25zdCBhbGxPdmVyZmxvd3MgPSBbLi4uKCgoX21pZGRsZXdhcmVEYXRhJGF1dG9QMiA9IG1pZGRsZXdhcmVEYXRhLmF1dG9QbGFjZW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkYXV0b1AyLm92ZXJmbG93cykgfHwgW10pLCB7XG4gICAgICAgIHBsYWNlbWVudDogY3VycmVudFBsYWNlbWVudCxcbiAgICAgICAgb3ZlcmZsb3dzOiBjdXJyZW50T3ZlcmZsb3dzXG4gICAgICB9XTtcbiAgICAgIGNvbnN0IG5leHRQbGFjZW1lbnQgPSBwbGFjZW1lbnRzJDFbY3VycmVudEluZGV4ICsgMV07XG5cbiAgICAgIC8vIFRoZXJlIGFyZSBtb3JlIHBsYWNlbWVudHMgdG8gY2hlY2suXG4gICAgICBpZiAobmV4dFBsYWNlbWVudCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGluZGV4OiBjdXJyZW50SW5kZXggKyAxLFxuICAgICAgICAgICAgb3ZlcmZsb3dzOiBhbGxPdmVyZmxvd3NcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICBwbGFjZW1lbnQ6IG5leHRQbGFjZW1lbnRcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBjb25zdCBwbGFjZW1lbnRzU29ydGVkQnlNb3N0U3BhY2UgPSBhbGxPdmVyZmxvd3MubWFwKGQgPT4ge1xuICAgICAgICBjb25zdCBhbGlnbm1lbnQgPSBnZXRBbGlnbm1lbnQoZC5wbGFjZW1lbnQpO1xuICAgICAgICByZXR1cm4gW2QucGxhY2VtZW50LCBhbGlnbm1lbnQgJiYgY3Jvc3NBeGlzID9cbiAgICAgICAgLy8gQ2hlY2sgYWxvbmcgdGhlIG1haW5BeGlzIGFuZCBtYWluIGNyb3NzQXhpcyBzaWRlLlxuICAgICAgICBkLm92ZXJmbG93cy5zbGljZSgwLCAyKS5yZWR1Y2UoKGFjYywgdikgPT4gYWNjICsgdiwgMCkgOlxuICAgICAgICAvLyBDaGVjayBvbmx5IHRoZSBtYWluQXhpcy5cbiAgICAgICAgZC5vdmVyZmxvd3NbMF0sIGQub3ZlcmZsb3dzXTtcbiAgICAgIH0pLnNvcnQoKGEsIGIpID0+IGFbMV0gLSBiWzFdKTtcbiAgICAgIGNvbnN0IHBsYWNlbWVudHNUaGF0Rml0T25FYWNoU2lkZSA9IHBsYWNlbWVudHNTb3J0ZWRCeU1vc3RTcGFjZS5maWx0ZXIoZCA9PiBkWzJdLnNsaWNlKDAsXG4gICAgICAvLyBBbGlnbmVkIHBsYWNlbWVudHMgc2hvdWxkIG5vdCBjaGVjayB0aGVpciBvcHBvc2l0ZSBjcm9zc0F4aXNcbiAgICAgIC8vIHNpZGUuXG4gICAgICBnZXRBbGlnbm1lbnQoZFswXSkgPyAyIDogMykuZXZlcnkodiA9PiB2IDw9IDApKTtcbiAgICAgIGNvbnN0IHJlc2V0UGxhY2VtZW50ID0gKChfcGxhY2VtZW50c1RoYXRGaXRPbkUgPSBwbGFjZW1lbnRzVGhhdEZpdE9uRWFjaFNpZGVbMF0pID09IG51bGwgPyB2b2lkIDAgOiBfcGxhY2VtZW50c1RoYXRGaXRPbkVbMF0pIHx8IHBsYWNlbWVudHNTb3J0ZWRCeU1vc3RTcGFjZVswXVswXTtcbiAgICAgIGlmIChyZXNldFBsYWNlbWVudCAhPT0gcGxhY2VtZW50KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgaW5kZXg6IGN1cnJlbnRJbmRleCArIDEsXG4gICAgICAgICAgICBvdmVyZmxvd3M6IGFsbE92ZXJmbG93c1xuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHBsYWNlbWVudDogcmVzZXRQbGFjZW1lbnRcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgZmxpcHBpbmcgdGhlIGBwbGFjZW1lbnRgXG4gKiBpbiBvcmRlciB0byBrZWVwIGl0IGluIHZpZXcgd2hlbiB0aGUgcHJlZmVycmVkIHBsYWNlbWVudChzKSB3aWxsIG92ZXJmbG93IHRoZVxuICogY2xpcHBpbmcgYm91bmRhcnkuIEFsdGVybmF0aXZlIHRvIGBhdXRvUGxhY2VtZW50YC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9mbGlwXG4gKi9cbmNvbnN0IGZsaXAgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2ZsaXAnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkYXJyb3csIF9taWRkbGV3YXJlRGF0YSRmbGlwO1xuICAgICAgY29uc3Qge1xuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIG1pZGRsZXdhcmVEYXRhLFxuICAgICAgICByZWN0cyxcbiAgICAgICAgaW5pdGlhbFBsYWNlbWVudCxcbiAgICAgICAgcGxhdGZvcm0sXG4gICAgICAgIGVsZW1lbnRzXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIG1haW5BeGlzOiBjaGVja01haW5BeGlzID0gdHJ1ZSxcbiAgICAgICAgY3Jvc3NBeGlzOiBjaGVja0Nyb3NzQXhpcyA9IHRydWUsXG4gICAgICAgIGZhbGxiYWNrUGxhY2VtZW50czogc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzLFxuICAgICAgICBmYWxsYmFja1N0cmF0ZWd5ID0gJ2Jlc3RGaXQnLFxuICAgICAgICBmYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uID0gJ25vbmUnLFxuICAgICAgICBmbGlwQWxpZ25tZW50ID0gdHJ1ZSxcbiAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuXG4gICAgICAvLyBJZiBhIHJlc2V0IGJ5IHRoZSBhcnJvdyB3YXMgY2F1c2VkIGR1ZSB0byBhbiBhbGlnbm1lbnQgb2Zmc2V0IGJlaW5nXG4gICAgICAvLyBhZGRlZCwgd2Ugc2hvdWxkIHNraXAgYW55IGxvZ2ljIG5vdyBzaW5jZSBgZmxpcCgpYCBoYXMgYWxyZWFkeSBkb25lIGl0c1xuICAgICAgLy8gd29yay5cbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mbG9hdGluZy11aS9mbG9hdGluZy11aS9pc3N1ZXMvMjU0OSNpc3N1ZWNvbW1lbnQtMTcxOTYwMTY0M1xuICAgICAgaWYgKChfbWlkZGxld2FyZURhdGEkYXJyb3cgPSBtaWRkbGV3YXJlRGF0YS5hcnJvdykgIT0gbnVsbCAmJiBfbWlkZGxld2FyZURhdGEkYXJyb3cuYWxpZ25tZW50T2Zmc2V0KSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNpZGUgPSBnZXRTaWRlKHBsYWNlbWVudCk7XG4gICAgICBjb25zdCBpbml0aWFsU2lkZUF4aXMgPSBnZXRTaWRlQXhpcyhpbml0aWFsUGxhY2VtZW50KTtcbiAgICAgIGNvbnN0IGlzQmFzZVBsYWNlbWVudCA9IGdldFNpZGUoaW5pdGlhbFBsYWNlbWVudCkgPT09IGluaXRpYWxQbGFjZW1lbnQ7XG4gICAgICBjb25zdCBydGwgPSBhd2FpdCAocGxhdGZvcm0uaXNSVEwgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzUlRMKGVsZW1lbnRzLmZsb2F0aW5nKSk7XG4gICAgICBjb25zdCBmYWxsYmFja1BsYWNlbWVudHMgPSBzcGVjaWZpZWRGYWxsYmFja1BsYWNlbWVudHMgfHwgKGlzQmFzZVBsYWNlbWVudCB8fCAhZmxpcEFsaWdubWVudCA/IFtnZXRPcHBvc2l0ZVBsYWNlbWVudChpbml0aWFsUGxhY2VtZW50KV0gOiBnZXRFeHBhbmRlZFBsYWNlbWVudHMoaW5pdGlhbFBsYWNlbWVudCkpO1xuICAgICAgY29uc3QgaGFzRmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbiA9IGZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24gIT09ICdub25lJztcbiAgICAgIGlmICghc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzICYmIGhhc0ZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24pIHtcbiAgICAgICAgZmFsbGJhY2tQbGFjZW1lbnRzLnB1c2goLi4uZ2V0T3Bwb3NpdGVBeGlzUGxhY2VtZW50cyhpbml0aWFsUGxhY2VtZW50LCBmbGlwQWxpZ25tZW50LCBmYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uLCBydGwpKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBsYWNlbWVudHMgPSBbaW5pdGlhbFBsYWNlbWVudCwgLi4uZmFsbGJhY2tQbGFjZW1lbnRzXTtcbiAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIGRldGVjdE92ZXJmbG93T3B0aW9ucyk7XG4gICAgICBjb25zdCBvdmVyZmxvd3MgPSBbXTtcbiAgICAgIGxldCBvdmVyZmxvd3NEYXRhID0gKChfbWlkZGxld2FyZURhdGEkZmxpcCA9IG1pZGRsZXdhcmVEYXRhLmZsaXApID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkZmxpcC5vdmVyZmxvd3MpIHx8IFtdO1xuICAgICAgaWYgKGNoZWNrTWFpbkF4aXMpIHtcbiAgICAgICAgb3ZlcmZsb3dzLnB1c2gob3ZlcmZsb3dbc2lkZV0pO1xuICAgICAgfVxuICAgICAgaWYgKGNoZWNrQ3Jvc3NBeGlzKSB7XG4gICAgICAgIGNvbnN0IHNpZGVzID0gZ2V0QWxpZ25tZW50U2lkZXMocGxhY2VtZW50LCByZWN0cywgcnRsKTtcbiAgICAgICAgb3ZlcmZsb3dzLnB1c2gob3ZlcmZsb3dbc2lkZXNbMF1dLCBvdmVyZmxvd1tzaWRlc1sxXV0pO1xuICAgICAgfVxuICAgICAgb3ZlcmZsb3dzRGF0YSA9IFsuLi5vdmVyZmxvd3NEYXRhLCB7XG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgb3ZlcmZsb3dzXG4gICAgICB9XTtcblxuICAgICAgLy8gT25lIG9yIG1vcmUgc2lkZXMgaXMgb3ZlcmZsb3dpbmcuXG4gICAgICBpZiAoIW92ZXJmbG93cy5ldmVyeShzaWRlID0+IHNpZGUgPD0gMCkpIHtcbiAgICAgICAgdmFyIF9taWRkbGV3YXJlRGF0YSRmbGlwMiwgX292ZXJmbG93c0RhdGEkZmlsdGVyO1xuICAgICAgICBjb25zdCBuZXh0SW5kZXggPSAoKChfbWlkZGxld2FyZURhdGEkZmxpcDIgPSBtaWRkbGV3YXJlRGF0YS5mbGlwKSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGZsaXAyLmluZGV4KSB8fCAwKSArIDE7XG4gICAgICAgIGNvbnN0IG5leHRQbGFjZW1lbnQgPSBwbGFjZW1lbnRzW25leHRJbmRleF07XG4gICAgICAgIGlmIChuZXh0UGxhY2VtZW50KSB7XG4gICAgICAgICAgLy8gVHJ5IG5leHQgcGxhY2VtZW50IGFuZCByZS1ydW4gdGhlIGxpZmVjeWNsZS5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICBpbmRleDogbmV4dEluZGV4LFxuICAgICAgICAgICAgICBvdmVyZmxvd3M6IG92ZXJmbG93c0RhdGFcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgICBwbGFjZW1lbnQ6IG5leHRQbGFjZW1lbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRmlyc3QsIGZpbmQgdGhlIGNhbmRpZGF0ZXMgdGhhdCBmaXQgb24gdGhlIG1haW5BeGlzIHNpZGUgb2Ygb3ZlcmZsb3csXG4gICAgICAgIC8vIHRoZW4gZmluZCB0aGUgcGxhY2VtZW50IHRoYXQgZml0cyB0aGUgYmVzdCBvbiB0aGUgbWFpbiBjcm9zc0F4aXMgc2lkZS5cbiAgICAgICAgbGV0IHJlc2V0UGxhY2VtZW50ID0gKF9vdmVyZmxvd3NEYXRhJGZpbHRlciA9IG92ZXJmbG93c0RhdGEuZmlsdGVyKGQgPT4gZC5vdmVyZmxvd3NbMF0gPD0gMCkuc29ydCgoYSwgYikgPT4gYS5vdmVyZmxvd3NbMV0gLSBiLm92ZXJmbG93c1sxXSlbMF0pID09IG51bGwgPyB2b2lkIDAgOiBfb3ZlcmZsb3dzRGF0YSRmaWx0ZXIucGxhY2VtZW50O1xuXG4gICAgICAgIC8vIE90aGVyd2lzZSBmYWxsYmFjay5cbiAgICAgICAgaWYgKCFyZXNldFBsYWNlbWVudCkge1xuICAgICAgICAgIHN3aXRjaCAoZmFsbGJhY2tTdHJhdGVneSkge1xuICAgICAgICAgICAgY2FzZSAnYmVzdEZpdCc6XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB2YXIgX292ZXJmbG93c0RhdGEkZmlsdGVyMjtcbiAgICAgICAgICAgICAgICBjb25zdCBwbGFjZW1lbnQgPSAoX292ZXJmbG93c0RhdGEkZmlsdGVyMiA9IG92ZXJmbG93c0RhdGEuZmlsdGVyKGQgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKGhhc0ZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFNpZGVBeGlzID0gZ2V0U2lkZUF4aXMoZC5wbGFjZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudFNpZGVBeGlzID09PSBpbml0aWFsU2lkZUF4aXMgfHxcbiAgICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGEgYmlhcyB0byB0aGUgYHlgIHNpZGUgYXhpcyBkdWUgdG8gaG9yaXpvbnRhbFxuICAgICAgICAgICAgICAgICAgICAvLyByZWFkaW5nIGRpcmVjdGlvbnMgZmF2b3JpbmcgZ3JlYXRlciB3aWR0aC5cbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFNpZGVBeGlzID09PSAneSc7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9KS5tYXAoZCA9PiBbZC5wbGFjZW1lbnQsIGQub3ZlcmZsb3dzLmZpbHRlcihvdmVyZmxvdyA9PiBvdmVyZmxvdyA+IDApLnJlZHVjZSgoYWNjLCBvdmVyZmxvdykgPT4gYWNjICsgb3ZlcmZsb3csIDApXSkuc29ydCgoYSwgYikgPT4gYVsxXSAtIGJbMV0pWzBdKSA9PSBudWxsID8gdm9pZCAwIDogX292ZXJmbG93c0RhdGEkZmlsdGVyMlswXTtcbiAgICAgICAgICAgICAgICBpZiAocGxhY2VtZW50KSB7XG4gICAgICAgICAgICAgICAgICByZXNldFBsYWNlbWVudCA9IHBsYWNlbWVudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ2luaXRpYWxQbGFjZW1lbnQnOlxuICAgICAgICAgICAgICByZXNldFBsYWNlbWVudCA9IGluaXRpYWxQbGFjZW1lbnQ7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAocGxhY2VtZW50ICE9PSByZXNldFBsYWNlbWVudCkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgICBwbGFjZW1lbnQ6IHJlc2V0UGxhY2VtZW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfTtcbn07XG5cbmZ1bmN0aW9uIGdldFNpZGVPZmZzZXRzKG92ZXJmbG93LCByZWN0KSB7XG4gIHJldHVybiB7XG4gICAgdG9wOiBvdmVyZmxvdy50b3AgLSByZWN0LmhlaWdodCxcbiAgICByaWdodDogb3ZlcmZsb3cucmlnaHQgLSByZWN0LndpZHRoLFxuICAgIGJvdHRvbTogb3ZlcmZsb3cuYm90dG9tIC0gcmVjdC5oZWlnaHQsXG4gICAgbGVmdDogb3ZlcmZsb3cubGVmdCAtIHJlY3Qud2lkdGhcbiAgfTtcbn1cbmZ1bmN0aW9uIGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChvdmVyZmxvdykge1xuICByZXR1cm4gc2lkZXMuc29tZShzaWRlID0+IG92ZXJmbG93W3NpZGVdID49IDApO1xufVxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRvIGhpZGUgdGhlIGZsb2F0aW5nIGVsZW1lbnQgaW4gYXBwbGljYWJsZSBzaXR1YXRpb25zLCBzdWNoIGFzXG4gKiB3aGVuIGl0IGlzIG5vdCBpbiB0aGUgc2FtZSBjbGlwcGluZyBjb250ZXh0IGFzIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9oaWRlXG4gKi9cbmNvbnN0IGhpZGUgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2hpZGUnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcmVjdHNcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgc3RyYXRlZ3kgPSAncmVmZXJlbmNlSGlkZGVuJyxcbiAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICAgICAgc3dpdGNoIChzdHJhdGVneSkge1xuICAgICAgICBjYXNlICdyZWZlcmVuY2VIaWRkZW4nOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICAgICAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zLFxuICAgICAgICAgICAgICBlbGVtZW50Q29udGV4dDogJ3JlZmVyZW5jZSdcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3Qgb2Zmc2V0cyA9IGdldFNpZGVPZmZzZXRzKG92ZXJmbG93LCByZWN0cy5yZWZlcmVuY2UpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIHJlZmVyZW5jZUhpZGRlbk9mZnNldHM6IG9mZnNldHMsXG4gICAgICAgICAgICAgICAgcmVmZXJlbmNlSGlkZGVuOiBpc0FueVNpZGVGdWxseUNsaXBwZWQob2Zmc2V0cylcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIGNhc2UgJ2VzY2FwZWQnOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICAgICAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zLFxuICAgICAgICAgICAgICBhbHRCb3VuZGFyeTogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBvZmZzZXRzID0gZ2V0U2lkZU9mZnNldHMob3ZlcmZsb3csIHJlY3RzLmZsb2F0aW5nKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBlc2NhcGVkT2Zmc2V0czogb2Zmc2V0cyxcbiAgICAgICAgICAgICAgICBlc2NhcGVkOiBpc0FueVNpZGVGdWxseUNsaXBwZWQob2Zmc2V0cylcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAge1xuICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG59O1xuXG5mdW5jdGlvbiBnZXRCb3VuZGluZ1JlY3QocmVjdHMpIHtcbiAgY29uc3QgbWluWCA9IG1pbiguLi5yZWN0cy5tYXAocmVjdCA9PiByZWN0LmxlZnQpKTtcbiAgY29uc3QgbWluWSA9IG1pbiguLi5yZWN0cy5tYXAocmVjdCA9PiByZWN0LnRvcCkpO1xuICBjb25zdCBtYXhYID0gbWF4KC4uLnJlY3RzLm1hcChyZWN0ID0+IHJlY3QucmlnaHQpKTtcbiAgY29uc3QgbWF4WSA9IG1heCguLi5yZWN0cy5tYXAocmVjdCA9PiByZWN0LmJvdHRvbSkpO1xuICByZXR1cm4ge1xuICAgIHg6IG1pblgsXG4gICAgeTogbWluWSxcbiAgICB3aWR0aDogbWF4WCAtIG1pblgsXG4gICAgaGVpZ2h0OiBtYXhZIC0gbWluWVxuICB9O1xufVxuZnVuY3Rpb24gZ2V0UmVjdHNCeUxpbmUocmVjdHMpIHtcbiAgY29uc3Qgc29ydGVkUmVjdHMgPSByZWN0cy5zbGljZSgpLnNvcnQoKGEsIGIpID0+IGEueSAtIGIueSk7XG4gIGNvbnN0IGdyb3VwcyA9IFtdO1xuICBsZXQgcHJldlJlY3QgPSBudWxsO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHNvcnRlZFJlY3RzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgcmVjdCA9IHNvcnRlZFJlY3RzW2ldO1xuICAgIGlmICghcHJldlJlY3QgfHwgcmVjdC55IC0gcHJldlJlY3QueSA+IHByZXZSZWN0LmhlaWdodCAvIDIpIHtcbiAgICAgIGdyb3Vwcy5wdXNoKFtyZWN0XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGdyb3Vwc1tncm91cHMubGVuZ3RoIC0gMV0ucHVzaChyZWN0KTtcbiAgICB9XG4gICAgcHJldlJlY3QgPSByZWN0O1xuICB9XG4gIHJldHVybiBncm91cHMubWFwKHJlY3QgPT4gcmVjdFRvQ2xpZW50UmVjdChnZXRCb3VuZGluZ1JlY3QocmVjdCkpKTtcbn1cbi8qKlxuICogUHJvdmlkZXMgaW1wcm92ZWQgcG9zaXRpb25pbmcgZm9yIGlubGluZSByZWZlcmVuY2UgZWxlbWVudHMgdGhhdCBjYW4gc3BhblxuICogb3ZlciBtdWx0aXBsZSBsaW5lcywgc3VjaCBhcyBoeXBlcmxpbmtzIG9yIHJhbmdlIHNlbGVjdGlvbnMuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvaW5saW5lXG4gKi9cbmNvbnN0IGlubGluZSA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnaW5saW5lJyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgZWxlbWVudHMsXG4gICAgICAgIHJlY3RzLFxuICAgICAgICBwbGF0Zm9ybSxcbiAgICAgICAgc3RyYXRlZ3lcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIC8vIEEgTW91c2VFdmVudCdzIGNsaWVudHtYLFl9IGNvb3JkcyBjYW4gYmUgdXAgdG8gMiBwaXhlbHMgb2ZmIGFcbiAgICAgIC8vIENsaWVudFJlY3QncyBib3VuZHMsIGRlc3BpdGUgdGhlIGV2ZW50IGxpc3RlbmVyIGJlaW5nIHRyaWdnZXJlZC4gQVxuICAgICAgLy8gcGFkZGluZyBvZiAyIHNlZW1zIHRvIGhhbmRsZSB0aGlzIGlzc3VlLlxuICAgICAgY29uc3Qge1xuICAgICAgICBwYWRkaW5nID0gMixcbiAgICAgICAgeCxcbiAgICAgICAgeVxuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IG5hdGl2ZUNsaWVudFJlY3RzID0gQXJyYXkuZnJvbSgoYXdhaXQgKHBsYXRmb3JtLmdldENsaWVudFJlY3RzID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5nZXRDbGllbnRSZWN0cyhlbGVtZW50cy5yZWZlcmVuY2UpKSkgfHwgW10pO1xuICAgICAgY29uc3QgY2xpZW50UmVjdHMgPSBnZXRSZWN0c0J5TGluZShuYXRpdmVDbGllbnRSZWN0cyk7XG4gICAgICBjb25zdCBmYWxsYmFjayA9IHJlY3RUb0NsaWVudFJlY3QoZ2V0Qm91bmRpbmdSZWN0KG5hdGl2ZUNsaWVudFJlY3RzKSk7XG4gICAgICBjb25zdCBwYWRkaW5nT2JqZWN0ID0gZ2V0UGFkZGluZ09iamVjdChwYWRkaW5nKTtcbiAgICAgIGZ1bmN0aW9uIGdldEJvdW5kaW5nQ2xpZW50UmVjdCgpIHtcbiAgICAgICAgLy8gVGhlcmUgYXJlIHR3byByZWN0cyBhbmQgdGhleSBhcmUgZGlzam9pbmVkLlxuICAgICAgICBpZiAoY2xpZW50UmVjdHMubGVuZ3RoID09PSAyICYmIGNsaWVudFJlY3RzWzBdLmxlZnQgPiBjbGllbnRSZWN0c1sxXS5yaWdodCAmJiB4ICE9IG51bGwgJiYgeSAhPSBudWxsKSB7XG4gICAgICAgICAgLy8gRmluZCB0aGUgZmlyc3QgcmVjdCBpbiB3aGljaCB0aGUgcG9pbnQgaXMgZnVsbHkgaW5zaWRlLlxuICAgICAgICAgIHJldHVybiBjbGllbnRSZWN0cy5maW5kKHJlY3QgPT4geCA+IHJlY3QubGVmdCAtIHBhZGRpbmdPYmplY3QubGVmdCAmJiB4IDwgcmVjdC5yaWdodCArIHBhZGRpbmdPYmplY3QucmlnaHQgJiYgeSA+IHJlY3QudG9wIC0gcGFkZGluZ09iamVjdC50b3AgJiYgeSA8IHJlY3QuYm90dG9tICsgcGFkZGluZ09iamVjdC5ib3R0b20pIHx8IGZhbGxiYWNrO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhlcmUgYXJlIDIgb3IgbW9yZSBjb25uZWN0ZWQgcmVjdHMuXG4gICAgICAgIGlmIChjbGllbnRSZWN0cy5sZW5ndGggPj0gMikge1xuICAgICAgICAgIGlmIChnZXRTaWRlQXhpcyhwbGFjZW1lbnQpID09PSAneScpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0UmVjdCA9IGNsaWVudFJlY3RzWzBdO1xuICAgICAgICAgICAgY29uc3QgbGFzdFJlY3QgPSBjbGllbnRSZWN0c1tjbGllbnRSZWN0cy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIGNvbnN0IGlzVG9wID0gZ2V0U2lkZShwbGFjZW1lbnQpID09PSAndG9wJztcbiAgICAgICAgICAgIGNvbnN0IHRvcCA9IGZpcnN0UmVjdC50b3A7XG4gICAgICAgICAgICBjb25zdCBib3R0b20gPSBsYXN0UmVjdC5ib3R0b207XG4gICAgICAgICAgICBjb25zdCBsZWZ0ID0gaXNUb3AgPyBmaXJzdFJlY3QubGVmdCA6IGxhc3RSZWN0LmxlZnQ7XG4gICAgICAgICAgICBjb25zdCByaWdodCA9IGlzVG9wID8gZmlyc3RSZWN0LnJpZ2h0IDogbGFzdFJlY3QucmlnaHQ7XG4gICAgICAgICAgICBjb25zdCB3aWR0aCA9IHJpZ2h0IC0gbGVmdDtcbiAgICAgICAgICAgIGNvbnN0IGhlaWdodCA9IGJvdHRvbSAtIHRvcDtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHRvcCxcbiAgICAgICAgICAgICAgYm90dG9tLFxuICAgICAgICAgICAgICBsZWZ0LFxuICAgICAgICAgICAgICByaWdodCxcbiAgICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICAgICAgeDogbGVmdCxcbiAgICAgICAgICAgICAgeTogdG9wXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBpc0xlZnRTaWRlID0gZ2V0U2lkZShwbGFjZW1lbnQpID09PSAnbGVmdCc7XG4gICAgICAgICAgY29uc3QgbWF4UmlnaHQgPSBtYXgoLi4uY2xpZW50UmVjdHMubWFwKHJlY3QgPT4gcmVjdC5yaWdodCkpO1xuICAgICAgICAgIGNvbnN0IG1pbkxlZnQgPSBtaW4oLi4uY2xpZW50UmVjdHMubWFwKHJlY3QgPT4gcmVjdC5sZWZ0KSk7XG4gICAgICAgICAgY29uc3QgbWVhc3VyZVJlY3RzID0gY2xpZW50UmVjdHMuZmlsdGVyKHJlY3QgPT4gaXNMZWZ0U2lkZSA/IHJlY3QubGVmdCA9PT0gbWluTGVmdCA6IHJlY3QucmlnaHQgPT09IG1heFJpZ2h0KTtcbiAgICAgICAgICBjb25zdCB0b3AgPSBtZWFzdXJlUmVjdHNbMF0udG9wO1xuICAgICAgICAgIGNvbnN0IGJvdHRvbSA9IG1lYXN1cmVSZWN0c1ttZWFzdXJlUmVjdHMubGVuZ3RoIC0gMV0uYm90dG9tO1xuICAgICAgICAgIGNvbnN0IGxlZnQgPSBtaW5MZWZ0O1xuICAgICAgICAgIGNvbnN0IHJpZ2h0ID0gbWF4UmlnaHQ7XG4gICAgICAgICAgY29uc3Qgd2lkdGggPSByaWdodCAtIGxlZnQ7XG4gICAgICAgICAgY29uc3QgaGVpZ2h0ID0gYm90dG9tIC0gdG9wO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0b3AsXG4gICAgICAgICAgICBib3R0b20sXG4gICAgICAgICAgICBsZWZ0LFxuICAgICAgICAgICAgcmlnaHQsXG4gICAgICAgICAgICB3aWR0aCxcbiAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICAgIHg6IGxlZnQsXG4gICAgICAgICAgICB5OiB0b3BcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxsYmFjaztcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlc2V0UmVjdHMgPSBhd2FpdCBwbGF0Zm9ybS5nZXRFbGVtZW50UmVjdHMoe1xuICAgICAgICByZWZlcmVuY2U6IHtcbiAgICAgICAgICBnZXRCb3VuZGluZ0NsaWVudFJlY3RcbiAgICAgICAgfSxcbiAgICAgICAgZmxvYXRpbmc6IGVsZW1lbnRzLmZsb2F0aW5nLFxuICAgICAgICBzdHJhdGVneVxuICAgICAgfSk7XG4gICAgICBpZiAocmVjdHMucmVmZXJlbmNlLnggIT09IHJlc2V0UmVjdHMucmVmZXJlbmNlLnggfHwgcmVjdHMucmVmZXJlbmNlLnkgIT09IHJlc2V0UmVjdHMucmVmZXJlbmNlLnkgfHwgcmVjdHMucmVmZXJlbmNlLndpZHRoICE9PSByZXNldFJlY3RzLnJlZmVyZW5jZS53aWR0aCB8fCByZWN0cy5yZWZlcmVuY2UuaGVpZ2h0ICE9PSByZXNldFJlY3RzLnJlZmVyZW5jZS5oZWlnaHQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgcmVjdHM6IHJlc2V0UmVjdHNcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICB9O1xufTtcblxuLy8gRm9yIHR5cGUgYmFja3dhcmRzLWNvbXBhdGliaWxpdHksIHRoZSBgT2Zmc2V0T3B0aW9uc2AgdHlwZSB3YXMgYWxzb1xuLy8gRGVyaXZhYmxlLlxuXG5hc3luYyBmdW5jdGlvbiBjb252ZXJ0VmFsdWVUb0Nvb3JkcyhzdGF0ZSwgb3B0aW9ucykge1xuICBjb25zdCB7XG4gICAgcGxhY2VtZW50LFxuICAgIHBsYXRmb3JtLFxuICAgIGVsZW1lbnRzXG4gIH0gPSBzdGF0ZTtcbiAgY29uc3QgcnRsID0gYXdhaXQgKHBsYXRmb3JtLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc1JUTChlbGVtZW50cy5mbG9hdGluZykpO1xuICBjb25zdCBzaWRlID0gZ2V0U2lkZShwbGFjZW1lbnQpO1xuICBjb25zdCBhbGlnbm1lbnQgPSBnZXRBbGlnbm1lbnQocGxhY2VtZW50KTtcbiAgY29uc3QgaXNWZXJ0aWNhbCA9IGdldFNpZGVBeGlzKHBsYWNlbWVudCkgPT09ICd5JztcbiAgY29uc3QgbWFpbkF4aXNNdWx0aSA9IFsnbGVmdCcsICd0b3AnXS5pbmNsdWRlcyhzaWRlKSA/IC0xIDogMTtcbiAgY29uc3QgY3Jvc3NBeGlzTXVsdGkgPSBydGwgJiYgaXNWZXJ0aWNhbCA/IC0xIDogMTtcbiAgY29uc3QgcmF3VmFsdWUgPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICBsZXQge1xuICAgIG1haW5BeGlzLFxuICAgIGNyb3NzQXhpcyxcbiAgICBhbGlnbm1lbnRBeGlzXG4gIH0gPSB0eXBlb2YgcmF3VmFsdWUgPT09ICdudW1iZXInID8ge1xuICAgIG1haW5BeGlzOiByYXdWYWx1ZSxcbiAgICBjcm9zc0F4aXM6IDAsXG4gICAgYWxpZ25tZW50QXhpczogbnVsbFxuICB9IDoge1xuICAgIG1haW5BeGlzOiByYXdWYWx1ZS5tYWluQXhpcyB8fCAwLFxuICAgIGNyb3NzQXhpczogcmF3VmFsdWUuY3Jvc3NBeGlzIHx8IDAsXG4gICAgYWxpZ25tZW50QXhpczogcmF3VmFsdWUuYWxpZ25tZW50QXhpc1xuICB9O1xuICBpZiAoYWxpZ25tZW50ICYmIHR5cGVvZiBhbGlnbm1lbnRBeGlzID09PSAnbnVtYmVyJykge1xuICAgIGNyb3NzQXhpcyA9IGFsaWdubWVudCA9PT0gJ2VuZCcgPyBhbGlnbm1lbnRBeGlzICogLTEgOiBhbGlnbm1lbnRBeGlzO1xuICB9XG4gIHJldHVybiBpc1ZlcnRpY2FsID8ge1xuICAgIHg6IGNyb3NzQXhpcyAqIGNyb3NzQXhpc011bHRpLFxuICAgIHk6IG1haW5BeGlzICogbWFpbkF4aXNNdWx0aVxuICB9IDoge1xuICAgIHg6IG1haW5BeGlzICogbWFpbkF4aXNNdWx0aSxcbiAgICB5OiBjcm9zc0F4aXMgKiBjcm9zc0F4aXNNdWx0aVxuICB9O1xufVxuXG4vKipcbiAqIE1vZGlmaWVzIHRoZSBwbGFjZW1lbnQgYnkgdHJhbnNsYXRpbmcgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYWxvbmcgdGhlXG4gKiBzcGVjaWZpZWQgYXhlcy5cbiAqIEEgbnVtYmVyIChzaG9ydGhhbmQgZm9yIGBtYWluQXhpc2Agb3IgZGlzdGFuY2UpLCBvciBhbiBheGVzIGNvbmZpZ3VyYXRpb25cbiAqIG9iamVjdCBtYXkgYmUgcGFzc2VkLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL29mZnNldFxuICovXG5jb25zdCBvZmZzZXQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IDA7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnb2Zmc2V0JyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICB2YXIgX21pZGRsZXdhcmVEYXRhJG9mZnNlLCBfbWlkZGxld2FyZURhdGEkYXJyb3c7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHgsXG4gICAgICAgIHksXG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgbWlkZGxld2FyZURhdGFcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IGRpZmZDb29yZHMgPSBhd2FpdCBjb252ZXJ0VmFsdWVUb0Nvb3JkcyhzdGF0ZSwgb3B0aW9ucyk7XG5cbiAgICAgIC8vIElmIHRoZSBwbGFjZW1lbnQgaXMgdGhlIHNhbWUgYW5kIHRoZSBhcnJvdyBjYXVzZWQgYW4gYWxpZ25tZW50IG9mZnNldFxuICAgICAgLy8gdGhlbiB3ZSBkb24ndCBuZWVkIHRvIGNoYW5nZSB0aGUgcG9zaXRpb25pbmcgY29vcmRpbmF0ZXMuXG4gICAgICBpZiAocGxhY2VtZW50ID09PSAoKF9taWRkbGV3YXJlRGF0YSRvZmZzZSA9IG1pZGRsZXdhcmVEYXRhLm9mZnNldCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRvZmZzZS5wbGFjZW1lbnQpICYmIChfbWlkZGxld2FyZURhdGEkYXJyb3cgPSBtaWRkbGV3YXJlRGF0YS5hcnJvdykgIT0gbnVsbCAmJiBfbWlkZGxld2FyZURhdGEkYXJyb3cuYWxpZ25tZW50T2Zmc2V0KSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHg6IHggKyBkaWZmQ29vcmRzLngsXG4gICAgICAgIHk6IHkgKyBkaWZmQ29vcmRzLnksXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAuLi5kaWZmQ29vcmRzLFxuICAgICAgICAgIHBsYWNlbWVudFxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IHNoaWZ0aW5nIGl0IGluIG9yZGVyIHRvXG4gKiBrZWVwIGl0IGluIHZpZXcgd2hlbiBpdCB3aWxsIG92ZXJmbG93IHRoZSBjbGlwcGluZyBib3VuZGFyeS5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9zaGlmdFxuICovXG5jb25zdCBzaGlmdCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnc2hpZnQnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgeCxcbiAgICAgICAgeSxcbiAgICAgICAgcGxhY2VtZW50XG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIG1haW5BeGlzOiBjaGVja01haW5BeGlzID0gdHJ1ZSxcbiAgICAgICAgY3Jvc3NBeGlzOiBjaGVja0Nyb3NzQXhpcyA9IGZhbHNlLFxuICAgICAgICBsaW1pdGVyID0ge1xuICAgICAgICAgIGZuOiBfcmVmID0+IHtcbiAgICAgICAgICAgIGxldCB7XG4gICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgIHlcbiAgICAgICAgICAgIH0gPSBfcmVmO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgeVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IGNvb3JkcyA9IHtcbiAgICAgICAgeCxcbiAgICAgICAgeVxuICAgICAgfTtcbiAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIGRldGVjdE92ZXJmbG93T3B0aW9ucyk7XG4gICAgICBjb25zdCBjcm9zc0F4aXMgPSBnZXRTaWRlQXhpcyhnZXRTaWRlKHBsYWNlbWVudCkpO1xuICAgICAgY29uc3QgbWFpbkF4aXMgPSBnZXRPcHBvc2l0ZUF4aXMoY3Jvc3NBeGlzKTtcbiAgICAgIGxldCBtYWluQXhpc0Nvb3JkID0gY29vcmRzW21haW5BeGlzXTtcbiAgICAgIGxldCBjcm9zc0F4aXNDb29yZCA9IGNvb3Jkc1tjcm9zc0F4aXNdO1xuICAgICAgaWYgKGNoZWNrTWFpbkF4aXMpIHtcbiAgICAgICAgY29uc3QgbWluU2lkZSA9IG1haW5BeGlzID09PSAneScgPyAndG9wJyA6ICdsZWZ0JztcbiAgICAgICAgY29uc3QgbWF4U2lkZSA9IG1haW5BeGlzID09PSAneScgPyAnYm90dG9tJyA6ICdyaWdodCc7XG4gICAgICAgIGNvbnN0IG1pbiA9IG1haW5BeGlzQ29vcmQgKyBvdmVyZmxvd1ttaW5TaWRlXTtcbiAgICAgICAgY29uc3QgbWF4ID0gbWFpbkF4aXNDb29yZCAtIG92ZXJmbG93W21heFNpZGVdO1xuICAgICAgICBtYWluQXhpc0Nvb3JkID0gY2xhbXAobWluLCBtYWluQXhpc0Nvb3JkLCBtYXgpO1xuICAgICAgfVxuICAgICAgaWYgKGNoZWNrQ3Jvc3NBeGlzKSB7XG4gICAgICAgIGNvbnN0IG1pblNpZGUgPSBjcm9zc0F4aXMgPT09ICd5JyA/ICd0b3AnIDogJ2xlZnQnO1xuICAgICAgICBjb25zdCBtYXhTaWRlID0gY3Jvc3NBeGlzID09PSAneScgPyAnYm90dG9tJyA6ICdyaWdodCc7XG4gICAgICAgIGNvbnN0IG1pbiA9IGNyb3NzQXhpc0Nvb3JkICsgb3ZlcmZsb3dbbWluU2lkZV07XG4gICAgICAgIGNvbnN0IG1heCA9IGNyb3NzQXhpc0Nvb3JkIC0gb3ZlcmZsb3dbbWF4U2lkZV07XG4gICAgICAgIGNyb3NzQXhpc0Nvb3JkID0gY2xhbXAobWluLCBjcm9zc0F4aXNDb29yZCwgbWF4KTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGxpbWl0ZWRDb29yZHMgPSBsaW1pdGVyLmZuKHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIFttYWluQXhpc106IG1haW5BeGlzQ29vcmQsXG4gICAgICAgIFtjcm9zc0F4aXNdOiBjcm9zc0F4aXNDb29yZFxuICAgICAgfSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5saW1pdGVkQ29vcmRzLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgeDogbGltaXRlZENvb3Jkcy54IC0geCxcbiAgICAgICAgICB5OiBsaW1pdGVkQ29vcmRzLnkgLSB5LFxuICAgICAgICAgIGVuYWJsZWQ6IHtcbiAgICAgICAgICAgIFttYWluQXhpc106IGNoZWNrTWFpbkF4aXMsXG4gICAgICAgICAgICBbY3Jvc3NBeGlzXTogY2hlY2tDcm9zc0F4aXNcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICB9O1xufTtcbi8qKlxuICogQnVpbHQtaW4gYGxpbWl0ZXJgIHRoYXQgd2lsbCBzdG9wIGBzaGlmdCgpYCBhdCBhIGNlcnRhaW4gcG9pbnQuXG4gKi9cbmNvbnN0IGxpbWl0U2hpZnQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgb3B0aW9ucyxcbiAgICBmbihzdGF0ZSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICB4LFxuICAgICAgICB5LFxuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIHJlY3RzLFxuICAgICAgICBtaWRkbGV3YXJlRGF0YVxuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBvZmZzZXQgPSAwLFxuICAgICAgICBtYWluQXhpczogY2hlY2tNYWluQXhpcyA9IHRydWUsXG4gICAgICAgIGNyb3NzQXhpczogY2hlY2tDcm9zc0F4aXMgPSB0cnVlXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICAgICAgY29uc3QgY29vcmRzID0ge1xuICAgICAgICB4LFxuICAgICAgICB5XG4gICAgICB9O1xuICAgICAgY29uc3QgY3Jvc3NBeGlzID0gZ2V0U2lkZUF4aXMocGxhY2VtZW50KTtcbiAgICAgIGNvbnN0IG1haW5BeGlzID0gZ2V0T3Bwb3NpdGVBeGlzKGNyb3NzQXhpcyk7XG4gICAgICBsZXQgbWFpbkF4aXNDb29yZCA9IGNvb3Jkc1ttYWluQXhpc107XG4gICAgICBsZXQgY3Jvc3NBeGlzQ29vcmQgPSBjb29yZHNbY3Jvc3NBeGlzXTtcbiAgICAgIGNvbnN0IHJhd09mZnNldCA9IGV2YWx1YXRlKG9mZnNldCwgc3RhdGUpO1xuICAgICAgY29uc3QgY29tcHV0ZWRPZmZzZXQgPSB0eXBlb2YgcmF3T2Zmc2V0ID09PSAnbnVtYmVyJyA/IHtcbiAgICAgICAgbWFpbkF4aXM6IHJhd09mZnNldCxcbiAgICAgICAgY3Jvc3NBeGlzOiAwXG4gICAgICB9IDoge1xuICAgICAgICBtYWluQXhpczogMCxcbiAgICAgICAgY3Jvc3NBeGlzOiAwLFxuICAgICAgICAuLi5yYXdPZmZzZXRcbiAgICAgIH07XG4gICAgICBpZiAoY2hlY2tNYWluQXhpcykge1xuICAgICAgICBjb25zdCBsZW4gPSBtYWluQXhpcyA9PT0gJ3knID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xuICAgICAgICBjb25zdCBsaW1pdE1pbiA9IHJlY3RzLnJlZmVyZW5jZVttYWluQXhpc10gLSByZWN0cy5mbG9hdGluZ1tsZW5dICsgY29tcHV0ZWRPZmZzZXQubWFpbkF4aXM7XG4gICAgICAgIGNvbnN0IGxpbWl0TWF4ID0gcmVjdHMucmVmZXJlbmNlW21haW5BeGlzXSArIHJlY3RzLnJlZmVyZW5jZVtsZW5dIC0gY29tcHV0ZWRPZmZzZXQubWFpbkF4aXM7XG4gICAgICAgIGlmIChtYWluQXhpc0Nvb3JkIDwgbGltaXRNaW4pIHtcbiAgICAgICAgICBtYWluQXhpc0Nvb3JkID0gbGltaXRNaW47XG4gICAgICAgIH0gZWxzZSBpZiAobWFpbkF4aXNDb29yZCA+IGxpbWl0TWF4KSB7XG4gICAgICAgICAgbWFpbkF4aXNDb29yZCA9IGxpbWl0TWF4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY2hlY2tDcm9zc0F4aXMpIHtcbiAgICAgICAgdmFyIF9taWRkbGV3YXJlRGF0YSRvZmZzZSwgX21pZGRsZXdhcmVEYXRhJG9mZnNlMjtcbiAgICAgICAgY29uc3QgbGVuID0gbWFpbkF4aXMgPT09ICd5JyA/ICd3aWR0aCcgOiAnaGVpZ2h0JztcbiAgICAgICAgY29uc3QgaXNPcmlnaW5TaWRlID0gWyd0b3AnLCAnbGVmdCddLmluY2x1ZGVzKGdldFNpZGUocGxhY2VtZW50KSk7XG4gICAgICAgIGNvbnN0IGxpbWl0TWluID0gcmVjdHMucmVmZXJlbmNlW2Nyb3NzQXhpc10gLSByZWN0cy5mbG9hdGluZ1tsZW5dICsgKGlzT3JpZ2luU2lkZSA/ICgoX21pZGRsZXdhcmVEYXRhJG9mZnNlID0gbWlkZGxld2FyZURhdGEub2Zmc2V0KSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJG9mZnNlW2Nyb3NzQXhpc10pIHx8IDAgOiAwKSArIChpc09yaWdpblNpZGUgPyAwIDogY29tcHV0ZWRPZmZzZXQuY3Jvc3NBeGlzKTtcbiAgICAgICAgY29uc3QgbGltaXRNYXggPSByZWN0cy5yZWZlcmVuY2VbY3Jvc3NBeGlzXSArIHJlY3RzLnJlZmVyZW5jZVtsZW5dICsgKGlzT3JpZ2luU2lkZSA/IDAgOiAoKF9taWRkbGV3YXJlRGF0YSRvZmZzZTIgPSBtaWRkbGV3YXJlRGF0YS5vZmZzZXQpID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkb2Zmc2UyW2Nyb3NzQXhpc10pIHx8IDApIC0gKGlzT3JpZ2luU2lkZSA/IGNvbXB1dGVkT2Zmc2V0LmNyb3NzQXhpcyA6IDApO1xuICAgICAgICBpZiAoY3Jvc3NBeGlzQ29vcmQgPCBsaW1pdE1pbikge1xuICAgICAgICAgIGNyb3NzQXhpc0Nvb3JkID0gbGltaXRNaW47XG4gICAgICAgIH0gZWxzZSBpZiAoY3Jvc3NBeGlzQ29vcmQgPiBsaW1pdE1heCkge1xuICAgICAgICAgIGNyb3NzQXhpc0Nvb3JkID0gbGltaXRNYXg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIFttYWluQXhpc106IG1haW5BeGlzQ29vcmQsXG4gICAgICAgIFtjcm9zc0F4aXNdOiBjcm9zc0F4aXNDb29yZFxuICAgICAgfTtcbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdGhhdCBhbGxvd3MgeW91IHRvIGNoYW5nZSB0aGUgc2l6ZSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCDigJRcbiAqIGZvciBpbnN0YW5jZSwgcHJldmVudCBpdCBmcm9tIG92ZXJmbG93aW5nIHRoZSBjbGlwcGluZyBib3VuZGFyeSBvciBtYXRjaCB0aGVcbiAqIHdpZHRoIG9mIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9zaXplXG4gKi9cbmNvbnN0IHNpemUgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ3NpemUnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIHZhciBfc3RhdGUkbWlkZGxld2FyZURhdGEsIF9zdGF0ZSRtaWRkbGV3YXJlRGF0YTI7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIHBsYXRmb3JtLFxuICAgICAgICBlbGVtZW50c1xuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBhcHBseSA9ICgpID0+IHt9LFxuICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCBkZXRlY3RPdmVyZmxvd09wdGlvbnMpO1xuICAgICAgY29uc3Qgc2lkZSA9IGdldFNpZGUocGxhY2VtZW50KTtcbiAgICAgIGNvbnN0IGFsaWdubWVudCA9IGdldEFsaWdubWVudChwbGFjZW1lbnQpO1xuICAgICAgY29uc3QgaXNZQXhpcyA9IGdldFNpZGVBeGlzKHBsYWNlbWVudCkgPT09ICd5JztcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgd2lkdGgsXG4gICAgICAgIGhlaWdodFxuICAgICAgfSA9IHJlY3RzLmZsb2F0aW5nO1xuICAgICAgbGV0IGhlaWdodFNpZGU7XG4gICAgICBsZXQgd2lkdGhTaWRlO1xuICAgICAgaWYgKHNpZGUgPT09ICd0b3AnIHx8IHNpZGUgPT09ICdib3R0b20nKSB7XG4gICAgICAgIGhlaWdodFNpZGUgPSBzaWRlO1xuICAgICAgICB3aWR0aFNpZGUgPSBhbGlnbm1lbnQgPT09ICgoYXdhaXQgKHBsYXRmb3JtLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc1JUTChlbGVtZW50cy5mbG9hdGluZykpKSA/ICdzdGFydCcgOiAnZW5kJykgPyAnbGVmdCcgOiAncmlnaHQnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2lkdGhTaWRlID0gc2lkZTtcbiAgICAgICAgaGVpZ2h0U2lkZSA9IGFsaWdubWVudCA9PT0gJ2VuZCcgPyAndG9wJyA6ICdib3R0b20nO1xuICAgICAgfVxuICAgICAgY29uc3QgbWF4aW11bUNsaXBwaW5nSGVpZ2h0ID0gaGVpZ2h0IC0gb3ZlcmZsb3cudG9wIC0gb3ZlcmZsb3cuYm90dG9tO1xuICAgICAgY29uc3QgbWF4aW11bUNsaXBwaW5nV2lkdGggPSB3aWR0aCAtIG92ZXJmbG93LmxlZnQgLSBvdmVyZmxvdy5yaWdodDtcbiAgICAgIGNvbnN0IG92ZXJmbG93QXZhaWxhYmxlSGVpZ2h0ID0gbWluKGhlaWdodCAtIG92ZXJmbG93W2hlaWdodFNpZGVdLCBtYXhpbXVtQ2xpcHBpbmdIZWlnaHQpO1xuICAgICAgY29uc3Qgb3ZlcmZsb3dBdmFpbGFibGVXaWR0aCA9IG1pbih3aWR0aCAtIG92ZXJmbG93W3dpZHRoU2lkZV0sIG1heGltdW1DbGlwcGluZ1dpZHRoKTtcbiAgICAgIGNvbnN0IG5vU2hpZnQgPSAhc3RhdGUubWlkZGxld2FyZURhdGEuc2hpZnQ7XG4gICAgICBsZXQgYXZhaWxhYmxlSGVpZ2h0ID0gb3ZlcmZsb3dBdmFpbGFibGVIZWlnaHQ7XG4gICAgICBsZXQgYXZhaWxhYmxlV2lkdGggPSBvdmVyZmxvd0F2YWlsYWJsZVdpZHRoO1xuICAgICAgaWYgKChfc3RhdGUkbWlkZGxld2FyZURhdGEgPSBzdGF0ZS5taWRkbGV3YXJlRGF0YS5zaGlmdCkgIT0gbnVsbCAmJiBfc3RhdGUkbWlkZGxld2FyZURhdGEuZW5hYmxlZC54KSB7XG4gICAgICAgIGF2YWlsYWJsZVdpZHRoID0gbWF4aW11bUNsaXBwaW5nV2lkdGg7XG4gICAgICB9XG4gICAgICBpZiAoKF9zdGF0ZSRtaWRkbGV3YXJlRGF0YTIgPSBzdGF0ZS5taWRkbGV3YXJlRGF0YS5zaGlmdCkgIT0gbnVsbCAmJiBfc3RhdGUkbWlkZGxld2FyZURhdGEyLmVuYWJsZWQueSkge1xuICAgICAgICBhdmFpbGFibGVIZWlnaHQgPSBtYXhpbXVtQ2xpcHBpbmdIZWlnaHQ7XG4gICAgICB9XG4gICAgICBpZiAobm9TaGlmdCAmJiAhYWxpZ25tZW50KSB7XG4gICAgICAgIGNvbnN0IHhNaW4gPSBtYXgob3ZlcmZsb3cubGVmdCwgMCk7XG4gICAgICAgIGNvbnN0IHhNYXggPSBtYXgob3ZlcmZsb3cucmlnaHQsIDApO1xuICAgICAgICBjb25zdCB5TWluID0gbWF4KG92ZXJmbG93LnRvcCwgMCk7XG4gICAgICAgIGNvbnN0IHlNYXggPSBtYXgob3ZlcmZsb3cuYm90dG9tLCAwKTtcbiAgICAgICAgaWYgKGlzWUF4aXMpIHtcbiAgICAgICAgICBhdmFpbGFibGVXaWR0aCA9IHdpZHRoIC0gMiAqICh4TWluICE9PSAwIHx8IHhNYXggIT09IDAgPyB4TWluICsgeE1heCA6IG1heChvdmVyZmxvdy5sZWZ0LCBvdmVyZmxvdy5yaWdodCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGF2YWlsYWJsZUhlaWdodCA9IGhlaWdodCAtIDIgKiAoeU1pbiAhPT0gMCB8fCB5TWF4ICE9PSAwID8geU1pbiArIHlNYXggOiBtYXgob3ZlcmZsb3cudG9wLCBvdmVyZmxvdy5ib3R0b20pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYXdhaXQgYXBwbHkoe1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgYXZhaWxhYmxlV2lkdGgsXG4gICAgICAgIGF2YWlsYWJsZUhlaWdodFxuICAgICAgfSk7XG4gICAgICBjb25zdCBuZXh0RGltZW5zaW9ucyA9IGF3YWl0IHBsYXRmb3JtLmdldERpbWVuc2lvbnMoZWxlbWVudHMuZmxvYXRpbmcpO1xuICAgICAgaWYgKHdpZHRoICE9PSBuZXh0RGltZW5zaW9ucy53aWR0aCB8fCBoZWlnaHQgIT09IG5leHREaW1lbnNpb25zLmhlaWdodCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICByZWN0czogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH07XG59O1xuXG5leHBvcnQgeyBhcnJvdywgYXV0b1BsYWNlbWVudCwgY29tcHV0ZVBvc2l0aW9uLCBkZXRlY3RPdmVyZmxvdywgZmxpcCwgaGlkZSwgaW5saW5lLCBsaW1pdFNoaWZ0LCBvZmZzZXQsIHNoaWZ0LCBzaXplIH07XG4iLCJmdW5jdGlvbiBoYXNXaW5kb3coKSB7XG4gIHJldHVybiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJztcbn1cbmZ1bmN0aW9uIGdldE5vZGVOYW1lKG5vZGUpIHtcbiAgaWYgKGlzTm9kZShub2RlKSkge1xuICAgIHJldHVybiAobm9kZS5ub2RlTmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKTtcbiAgfVxuICAvLyBNb2NrZWQgbm9kZXMgaW4gdGVzdGluZyBlbnZpcm9ubWVudHMgbWF5IG5vdCBiZSBpbnN0YW5jZXMgb2YgTm9kZS4gQnlcbiAgLy8gcmV0dXJuaW5nIGAjZG9jdW1lbnRgIGFuIGluZmluaXRlIGxvb3Agd29uJ3Qgb2NjdXIuXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mbG9hdGluZy11aS9mbG9hdGluZy11aS9pc3N1ZXMvMjMxN1xuICByZXR1cm4gJyNkb2N1bWVudCc7XG59XG5mdW5jdGlvbiBnZXRXaW5kb3cobm9kZSkge1xuICB2YXIgX25vZGUkb3duZXJEb2N1bWVudDtcbiAgcmV0dXJuIChub2RlID09IG51bGwgfHwgKF9ub2RlJG93bmVyRG9jdW1lbnQgPSBub2RlLm93bmVyRG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfbm9kZSRvd25lckRvY3VtZW50LmRlZmF1bHRWaWV3KSB8fCB3aW5kb3c7XG59XG5mdW5jdGlvbiBnZXREb2N1bWVudEVsZW1lbnQobm9kZSkge1xuICB2YXIgX3JlZjtcbiAgcmV0dXJuIChfcmVmID0gKGlzTm9kZShub2RlKSA/IG5vZGUub3duZXJEb2N1bWVudCA6IG5vZGUuZG9jdW1lbnQpIHx8IHdpbmRvdy5kb2N1bWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9yZWYuZG9jdW1lbnRFbGVtZW50O1xufVxuZnVuY3Rpb24gaXNOb2RlKHZhbHVlKSB7XG4gIGlmICghaGFzV2luZG93KCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgTm9kZSB8fCB2YWx1ZSBpbnN0YW5jZW9mIGdldFdpbmRvdyh2YWx1ZSkuTm9kZTtcbn1cbmZ1bmN0aW9uIGlzRWxlbWVudCh2YWx1ZSkge1xuICBpZiAoIWhhc1dpbmRvdygpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIEVsZW1lbnQgfHwgdmFsdWUgaW5zdGFuY2VvZiBnZXRXaW5kb3codmFsdWUpLkVsZW1lbnQ7XG59XG5mdW5jdGlvbiBpc0hUTUxFbGVtZW50KHZhbHVlKSB7XG4gIGlmICghaGFzV2luZG93KCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgfHwgdmFsdWUgaW5zdGFuY2VvZiBnZXRXaW5kb3codmFsdWUpLkhUTUxFbGVtZW50O1xufVxuZnVuY3Rpb24gaXNTaGFkb3dSb290KHZhbHVlKSB7XG4gIGlmICghaGFzV2luZG93KCkgfHwgdHlwZW9mIFNoYWRvd1Jvb3QgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFNoYWRvd1Jvb3QgfHwgdmFsdWUgaW5zdGFuY2VvZiBnZXRXaW5kb3codmFsdWUpLlNoYWRvd1Jvb3Q7XG59XG5mdW5jdGlvbiBpc092ZXJmbG93RWxlbWVudChlbGVtZW50KSB7XG4gIGNvbnN0IHtcbiAgICBvdmVyZmxvdyxcbiAgICBvdmVyZmxvd1gsXG4gICAgb3ZlcmZsb3dZLFxuICAgIGRpc3BsYXlcbiAgfSA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG4gIHJldHVybiAvYXV0b3xzY3JvbGx8b3ZlcmxheXxoaWRkZW58Y2xpcC8udGVzdChvdmVyZmxvdyArIG92ZXJmbG93WSArIG92ZXJmbG93WCkgJiYgIVsnaW5saW5lJywgJ2NvbnRlbnRzJ10uaW5jbHVkZXMoZGlzcGxheSk7XG59XG5mdW5jdGlvbiBpc1RhYmxlRWxlbWVudChlbGVtZW50KSB7XG4gIHJldHVybiBbJ3RhYmxlJywgJ3RkJywgJ3RoJ10uaW5jbHVkZXMoZ2V0Tm9kZU5hbWUoZWxlbWVudCkpO1xufVxuZnVuY3Rpb24gaXNUb3BMYXllcihlbGVtZW50KSB7XG4gIHJldHVybiBbJzpwb3BvdmVyLW9wZW4nLCAnOm1vZGFsJ10uc29tZShzZWxlY3RvciA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBlbGVtZW50Lm1hdGNoZXMoc2VsZWN0b3IpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0pO1xufVxuZnVuY3Rpb24gaXNDb250YWluaW5nQmxvY2soZWxlbWVudE9yQ3NzKSB7XG4gIGNvbnN0IHdlYmtpdCA9IGlzV2ViS2l0KCk7XG4gIGNvbnN0IGNzcyA9IGlzRWxlbWVudChlbGVtZW50T3JDc3MpID8gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50T3JDc3MpIDogZWxlbWVudE9yQ3NzO1xuXG4gIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9Db250YWluaW5nX2Jsb2NrI2lkZW50aWZ5aW5nX3RoZV9jb250YWluaW5nX2Jsb2NrXG4gIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtdHJhbnNmb3Jtcy0yLyNpbmRpdmlkdWFsLXRyYW5zZm9ybXNcbiAgcmV0dXJuIFsndHJhbnNmb3JtJywgJ3RyYW5zbGF0ZScsICdzY2FsZScsICdyb3RhdGUnLCAncGVyc3BlY3RpdmUnXS5zb21lKHZhbHVlID0+IGNzc1t2YWx1ZV0gPyBjc3NbdmFsdWVdICE9PSAnbm9uZScgOiBmYWxzZSkgfHwgKGNzcy5jb250YWluZXJUeXBlID8gY3NzLmNvbnRhaW5lclR5cGUgIT09ICdub3JtYWwnIDogZmFsc2UpIHx8ICF3ZWJraXQgJiYgKGNzcy5iYWNrZHJvcEZpbHRlciA/IGNzcy5iYWNrZHJvcEZpbHRlciAhPT0gJ25vbmUnIDogZmFsc2UpIHx8ICF3ZWJraXQgJiYgKGNzcy5maWx0ZXIgPyBjc3MuZmlsdGVyICE9PSAnbm9uZScgOiBmYWxzZSkgfHwgWyd0cmFuc2Zvcm0nLCAndHJhbnNsYXRlJywgJ3NjYWxlJywgJ3JvdGF0ZScsICdwZXJzcGVjdGl2ZScsICdmaWx0ZXInXS5zb21lKHZhbHVlID0+IChjc3Mud2lsbENoYW5nZSB8fCAnJykuaW5jbHVkZXModmFsdWUpKSB8fCBbJ3BhaW50JywgJ2xheW91dCcsICdzdHJpY3QnLCAnY29udGVudCddLnNvbWUodmFsdWUgPT4gKGNzcy5jb250YWluIHx8ICcnKS5pbmNsdWRlcyh2YWx1ZSkpO1xufVxuZnVuY3Rpb24gZ2V0Q29udGFpbmluZ0Jsb2NrKGVsZW1lbnQpIHtcbiAgbGV0IGN1cnJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcbiAgd2hpbGUgKGlzSFRNTEVsZW1lbnQoY3VycmVudE5vZGUpICYmICFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUoY3VycmVudE5vZGUpKSB7XG4gICAgaWYgKGlzQ29udGFpbmluZ0Jsb2NrKGN1cnJlbnROb2RlKSkge1xuICAgICAgcmV0dXJuIGN1cnJlbnROb2RlO1xuICAgIH0gZWxzZSBpZiAoaXNUb3BMYXllcihjdXJyZW50Tm9kZSkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjdXJyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUoY3VycmVudE5vZGUpO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuZnVuY3Rpb24gaXNXZWJLaXQoKSB7XG4gIGlmICh0eXBlb2YgQ1NTID09PSAndW5kZWZpbmVkJyB8fCAhQ1NTLnN1cHBvcnRzKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiBDU1Muc3VwcG9ydHMoJy13ZWJraXQtYmFja2Ryb3AtZmlsdGVyJywgJ25vbmUnKTtcbn1cbmZ1bmN0aW9uIGlzTGFzdFRyYXZlcnNhYmxlTm9kZShub2RlKSB7XG4gIHJldHVybiBbJ2h0bWwnLCAnYm9keScsICcjZG9jdW1lbnQnXS5pbmNsdWRlcyhnZXROb2RlTmFtZShub2RlKSk7XG59XG5mdW5jdGlvbiBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldFdpbmRvdyhlbGVtZW50KS5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xufVxuZnVuY3Rpb24gZ2V0Tm9kZVNjcm9sbChlbGVtZW50KSB7XG4gIGlmIChpc0VsZW1lbnQoZWxlbWVudCkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2Nyb2xsTGVmdDogZWxlbWVudC5zY3JvbGxMZWZ0LFxuICAgICAgc2Nyb2xsVG9wOiBlbGVtZW50LnNjcm9sbFRvcFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBzY3JvbGxMZWZ0OiBlbGVtZW50LnNjcm9sbFgsXG4gICAgc2Nyb2xsVG9wOiBlbGVtZW50LnNjcm9sbFlcbiAgfTtcbn1cbmZ1bmN0aW9uIGdldFBhcmVudE5vZGUobm9kZSkge1xuICBpZiAoZ2V0Tm9kZU5hbWUobm9kZSkgPT09ICdodG1sJykge1xuICAgIHJldHVybiBub2RlO1xuICB9XG4gIGNvbnN0IHJlc3VsdCA9XG4gIC8vIFN0ZXAgaW50byB0aGUgc2hhZG93IERPTSBvZiB0aGUgcGFyZW50IG9mIGEgc2xvdHRlZCBub2RlLlxuICBub2RlLmFzc2lnbmVkU2xvdCB8fFxuICAvLyBET00gRWxlbWVudCBkZXRlY3RlZC5cbiAgbm9kZS5wYXJlbnROb2RlIHx8XG4gIC8vIFNoYWRvd1Jvb3QgZGV0ZWN0ZWQuXG4gIGlzU2hhZG93Um9vdChub2RlKSAmJiBub2RlLmhvc3QgfHxcbiAgLy8gRmFsbGJhY2suXG4gIGdldERvY3VtZW50RWxlbWVudChub2RlKTtcbiAgcmV0dXJuIGlzU2hhZG93Um9vdChyZXN1bHQpID8gcmVzdWx0Lmhvc3QgOiByZXN1bHQ7XG59XG5mdW5jdGlvbiBnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3Rvcihub2RlKSB7XG4gIGNvbnN0IHBhcmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKG5vZGUpO1xuICBpZiAoaXNMYXN0VHJhdmVyc2FibGVOb2RlKHBhcmVudE5vZGUpKSB7XG4gICAgcmV0dXJuIG5vZGUub3duZXJEb2N1bWVudCA/IG5vZGUub3duZXJEb2N1bWVudC5ib2R5IDogbm9kZS5ib2R5O1xuICB9XG4gIGlmIChpc0hUTUxFbGVtZW50KHBhcmVudE5vZGUpICYmIGlzT3ZlcmZsb3dFbGVtZW50KHBhcmVudE5vZGUpKSB7XG4gICAgcmV0dXJuIHBhcmVudE5vZGU7XG4gIH1cbiAgcmV0dXJuIGdldE5lYXJlc3RPdmVyZmxvd0FuY2VzdG9yKHBhcmVudE5vZGUpO1xufVxuZnVuY3Rpb24gZ2V0T3ZlcmZsb3dBbmNlc3RvcnMobm9kZSwgbGlzdCwgdHJhdmVyc2VJZnJhbWVzKSB7XG4gIHZhciBfbm9kZSRvd25lckRvY3VtZW50MjtcbiAgaWYgKGxpc3QgPT09IHZvaWQgMCkge1xuICAgIGxpc3QgPSBbXTtcbiAgfVxuICBpZiAodHJhdmVyc2VJZnJhbWVzID09PSB2b2lkIDApIHtcbiAgICB0cmF2ZXJzZUlmcmFtZXMgPSB0cnVlO1xuICB9XG4gIGNvbnN0IHNjcm9sbGFibGVBbmNlc3RvciA9IGdldE5lYXJlc3RPdmVyZmxvd0FuY2VzdG9yKG5vZGUpO1xuICBjb25zdCBpc0JvZHkgPSBzY3JvbGxhYmxlQW5jZXN0b3IgPT09ICgoX25vZGUkb3duZXJEb2N1bWVudDIgPSBub2RlLm93bmVyRG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfbm9kZSRvd25lckRvY3VtZW50Mi5ib2R5KTtcbiAgY29uc3Qgd2luID0gZ2V0V2luZG93KHNjcm9sbGFibGVBbmNlc3Rvcik7XG4gIGlmIChpc0JvZHkpIHtcbiAgICBjb25zdCBmcmFtZUVsZW1lbnQgPSBnZXRGcmFtZUVsZW1lbnQod2luKTtcbiAgICByZXR1cm4gbGlzdC5jb25jYXQod2luLCB3aW4udmlzdWFsVmlld3BvcnQgfHwgW10sIGlzT3ZlcmZsb3dFbGVtZW50KHNjcm9sbGFibGVBbmNlc3RvcikgPyBzY3JvbGxhYmxlQW5jZXN0b3IgOiBbXSwgZnJhbWVFbGVtZW50ICYmIHRyYXZlcnNlSWZyYW1lcyA/IGdldE92ZXJmbG93QW5jZXN0b3JzKGZyYW1lRWxlbWVudCkgOiBbXSk7XG4gIH1cbiAgcmV0dXJuIGxpc3QuY29uY2F0KHNjcm9sbGFibGVBbmNlc3RvciwgZ2V0T3ZlcmZsb3dBbmNlc3RvcnMoc2Nyb2xsYWJsZUFuY2VzdG9yLCBbXSwgdHJhdmVyc2VJZnJhbWVzKSk7XG59XG5mdW5jdGlvbiBnZXRGcmFtZUVsZW1lbnQod2luKSB7XG4gIHJldHVybiB3aW4ucGFyZW50ICYmIE9iamVjdC5nZXRQcm90b3R5cGVPZih3aW4ucGFyZW50KSA/IHdpbi5mcmFtZUVsZW1lbnQgOiBudWxsO1xufVxuXG5leHBvcnQgeyBnZXRDb21wdXRlZFN0eWxlLCBnZXRDb250YWluaW5nQmxvY2ssIGdldERvY3VtZW50RWxlbWVudCwgZ2V0RnJhbWVFbGVtZW50LCBnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3RvciwgZ2V0Tm9kZU5hbWUsIGdldE5vZGVTY3JvbGwsIGdldE92ZXJmbG93QW5jZXN0b3JzLCBnZXRQYXJlbnROb2RlLCBnZXRXaW5kb3csIGlzQ29udGFpbmluZ0Jsb2NrLCBpc0VsZW1lbnQsIGlzSFRNTEVsZW1lbnQsIGlzTGFzdFRyYXZlcnNhYmxlTm9kZSwgaXNOb2RlLCBpc092ZXJmbG93RWxlbWVudCwgaXNTaGFkb3dSb290LCBpc1RhYmxlRWxlbWVudCwgaXNUb3BMYXllciwgaXNXZWJLaXQgfTtcbiIsImltcG9ydCB7IHJlY3RUb0NsaWVudFJlY3QsIGRldGVjdE92ZXJmbG93IGFzIGRldGVjdE92ZXJmbG93JDEsIG9mZnNldCBhcyBvZmZzZXQkMSwgYXV0b1BsYWNlbWVudCBhcyBhdXRvUGxhY2VtZW50JDEsIHNoaWZ0IGFzIHNoaWZ0JDEsIGZsaXAgYXMgZmxpcCQxLCBzaXplIGFzIHNpemUkMSwgaGlkZSBhcyBoaWRlJDEsIGFycm93IGFzIGFycm93JDEsIGlubGluZSBhcyBpbmxpbmUkMSwgbGltaXRTaGlmdCBhcyBsaW1pdFNoaWZ0JDEsIGNvbXB1dGVQb3NpdGlvbiBhcyBjb21wdXRlUG9zaXRpb24kMSB9IGZyb20gJ0BmbG9hdGluZy11aS9jb3JlJztcbmltcG9ydCB7IHJvdW5kLCBjcmVhdGVDb29yZHMsIG1heCwgbWluLCBmbG9vciB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscyc7XG5pbXBvcnQgeyBnZXRDb21wdXRlZFN0eWxlLCBpc0hUTUxFbGVtZW50LCBpc0VsZW1lbnQsIGdldFdpbmRvdywgaXNXZWJLaXQsIGdldEZyYW1lRWxlbWVudCwgZ2V0Tm9kZVNjcm9sbCwgZ2V0RG9jdW1lbnRFbGVtZW50LCBpc1RvcExheWVyLCBnZXROb2RlTmFtZSwgaXNPdmVyZmxvd0VsZW1lbnQsIGdldE92ZXJmbG93QW5jZXN0b3JzLCBnZXRQYXJlbnROb2RlLCBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUsIGlzQ29udGFpbmluZ0Jsb2NrLCBpc1RhYmxlRWxlbWVudCwgZ2V0Q29udGFpbmluZ0Jsb2NrIH0gZnJvbSAnQGZsb2F0aW5nLXVpL3V0aWxzL2RvbSc7XG5leHBvcnQgeyBnZXRPdmVyZmxvd0FuY2VzdG9ycyB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscy9kb20nO1xuXG5mdW5jdGlvbiBnZXRDc3NEaW1lbnNpb25zKGVsZW1lbnQpIHtcbiAgY29uc3QgY3NzID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbiAgLy8gSW4gdGVzdGluZyBlbnZpcm9ubWVudHMsIHRoZSBgd2lkdGhgIGFuZCBgaGVpZ2h0YCBwcm9wZXJ0aWVzIGFyZSBlbXB0eVxuICAvLyBzdHJpbmdzIGZvciBTVkcgZWxlbWVudHMsIHJldHVybmluZyBOYU4uIEZhbGxiYWNrIHRvIGAwYCBpbiB0aGlzIGNhc2UuXG4gIGxldCB3aWR0aCA9IHBhcnNlRmxvYXQoY3NzLndpZHRoKSB8fCAwO1xuICBsZXQgaGVpZ2h0ID0gcGFyc2VGbG9hdChjc3MuaGVpZ2h0KSB8fCAwO1xuICBjb25zdCBoYXNPZmZzZXQgPSBpc0hUTUxFbGVtZW50KGVsZW1lbnQpO1xuICBjb25zdCBvZmZzZXRXaWR0aCA9IGhhc09mZnNldCA/IGVsZW1lbnQub2Zmc2V0V2lkdGggOiB3aWR0aDtcbiAgY29uc3Qgb2Zmc2V0SGVpZ2h0ID0gaGFzT2Zmc2V0ID8gZWxlbWVudC5vZmZzZXRIZWlnaHQgOiBoZWlnaHQ7XG4gIGNvbnN0IHNob3VsZEZhbGxiYWNrID0gcm91bmQod2lkdGgpICE9PSBvZmZzZXRXaWR0aCB8fCByb3VuZChoZWlnaHQpICE9PSBvZmZzZXRIZWlnaHQ7XG4gIGlmIChzaG91bGRGYWxsYmFjaykge1xuICAgIHdpZHRoID0gb2Zmc2V0V2lkdGg7XG4gICAgaGVpZ2h0ID0gb2Zmc2V0SGVpZ2h0O1xuICB9XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgICQ6IHNob3VsZEZhbGxiYWNrXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVud3JhcEVsZW1lbnQoZWxlbWVudCkge1xuICByZXR1cm4gIWlzRWxlbWVudChlbGVtZW50KSA/IGVsZW1lbnQuY29udGV4dEVsZW1lbnQgOiBlbGVtZW50O1xufVxuXG5mdW5jdGlvbiBnZXRTY2FsZShlbGVtZW50KSB7XG4gIGNvbnN0IGRvbUVsZW1lbnQgPSB1bndyYXBFbGVtZW50KGVsZW1lbnQpO1xuICBpZiAoIWlzSFRNTEVsZW1lbnQoZG9tRWxlbWVudCkpIHtcbiAgICByZXR1cm4gY3JlYXRlQ29vcmRzKDEpO1xuICB9XG4gIGNvbnN0IHJlY3QgPSBkb21FbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBjb25zdCB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgICRcbiAgfSA9IGdldENzc0RpbWVuc2lvbnMoZG9tRWxlbWVudCk7XG4gIGxldCB4ID0gKCQgPyByb3VuZChyZWN0LndpZHRoKSA6IHJlY3Qud2lkdGgpIC8gd2lkdGg7XG4gIGxldCB5ID0gKCQgPyByb3VuZChyZWN0LmhlaWdodCkgOiByZWN0LmhlaWdodCkgLyBoZWlnaHQ7XG5cbiAgLy8gMCwgTmFOLCBvciBJbmZpbml0eSBzaG91bGQgYWx3YXlzIGZhbGxiYWNrIHRvIDEuXG5cbiAgaWYgKCF4IHx8ICFOdW1iZXIuaXNGaW5pdGUoeCkpIHtcbiAgICB4ID0gMTtcbiAgfVxuICBpZiAoIXkgfHwgIU51bWJlci5pc0Zpbml0ZSh5KSkge1xuICAgIHkgPSAxO1xuICB9XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5cbmNvbnN0IG5vT2Zmc2V0cyA9IC8qI19fUFVSRV9fKi9jcmVhdGVDb29yZHMoMCk7XG5mdW5jdGlvbiBnZXRWaXN1YWxPZmZzZXRzKGVsZW1lbnQpIHtcbiAgY29uc3Qgd2luID0gZ2V0V2luZG93KGVsZW1lbnQpO1xuICBpZiAoIWlzV2ViS2l0KCkgfHwgIXdpbi52aXN1YWxWaWV3cG9ydCkge1xuICAgIHJldHVybiBub09mZnNldHM7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB4OiB3aW4udmlzdWFsVmlld3BvcnQub2Zmc2V0TGVmdCxcbiAgICB5OiB3aW4udmlzdWFsVmlld3BvcnQub2Zmc2V0VG9wXG4gIH07XG59XG5mdW5jdGlvbiBzaG91bGRBZGRWaXN1YWxPZmZzZXRzKGVsZW1lbnQsIGlzRml4ZWQsIGZsb2F0aW5nT2Zmc2V0UGFyZW50KSB7XG4gIGlmIChpc0ZpeGVkID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkID0gZmFsc2U7XG4gIH1cbiAgaWYgKCFmbG9hdGluZ09mZnNldFBhcmVudCB8fCBpc0ZpeGVkICYmIGZsb2F0aW5nT2Zmc2V0UGFyZW50ICE9PSBnZXRXaW5kb3coZWxlbWVudCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGlzRml4ZWQ7XG59XG5cbmZ1bmN0aW9uIGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCBpbmNsdWRlU2NhbGUsIGlzRml4ZWRTdHJhdGVneSwgb2Zmc2V0UGFyZW50KSB7XG4gIGlmIChpbmNsdWRlU2NhbGUgPT09IHZvaWQgMCkge1xuICAgIGluY2x1ZGVTY2FsZSA9IGZhbHNlO1xuICB9XG4gIGlmIChpc0ZpeGVkU3RyYXRlZ3kgPT09IHZvaWQgMCkge1xuICAgIGlzRml4ZWRTdHJhdGVneSA9IGZhbHNlO1xuICB9XG4gIGNvbnN0IGNsaWVudFJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBjb25zdCBkb21FbGVtZW50ID0gdW53cmFwRWxlbWVudChlbGVtZW50KTtcbiAgbGV0IHNjYWxlID0gY3JlYXRlQ29vcmRzKDEpO1xuICBpZiAoaW5jbHVkZVNjYWxlKSB7XG4gICAgaWYgKG9mZnNldFBhcmVudCkge1xuICAgICAgaWYgKGlzRWxlbWVudChvZmZzZXRQYXJlbnQpKSB7XG4gICAgICAgIHNjYWxlID0gZ2V0U2NhbGUob2Zmc2V0UGFyZW50KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc2NhbGUgPSBnZXRTY2FsZShlbGVtZW50KTtcbiAgICB9XG4gIH1cbiAgY29uc3QgdmlzdWFsT2Zmc2V0cyA9IHNob3VsZEFkZFZpc3VhbE9mZnNldHMoZG9tRWxlbWVudCwgaXNGaXhlZFN0cmF0ZWd5LCBvZmZzZXRQYXJlbnQpID8gZ2V0VmlzdWFsT2Zmc2V0cyhkb21FbGVtZW50KSA6IGNyZWF0ZUNvb3JkcygwKTtcbiAgbGV0IHggPSAoY2xpZW50UmVjdC5sZWZ0ICsgdmlzdWFsT2Zmc2V0cy54KSAvIHNjYWxlLng7XG4gIGxldCB5ID0gKGNsaWVudFJlY3QudG9wICsgdmlzdWFsT2Zmc2V0cy55KSAvIHNjYWxlLnk7XG4gIGxldCB3aWR0aCA9IGNsaWVudFJlY3Qud2lkdGggLyBzY2FsZS54O1xuICBsZXQgaGVpZ2h0ID0gY2xpZW50UmVjdC5oZWlnaHQgLyBzY2FsZS55O1xuICBpZiAoZG9tRWxlbWVudCkge1xuICAgIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhkb21FbGVtZW50KTtcbiAgICBjb25zdCBvZmZzZXRXaW4gPSBvZmZzZXRQYXJlbnQgJiYgaXNFbGVtZW50KG9mZnNldFBhcmVudCkgPyBnZXRXaW5kb3cob2Zmc2V0UGFyZW50KSA6IG9mZnNldFBhcmVudDtcbiAgICBsZXQgY3VycmVudFdpbiA9IHdpbjtcbiAgICBsZXQgY3VycmVudElGcmFtZSA9IGdldEZyYW1lRWxlbWVudChjdXJyZW50V2luKTtcbiAgICB3aGlsZSAoY3VycmVudElGcmFtZSAmJiBvZmZzZXRQYXJlbnQgJiYgb2Zmc2V0V2luICE9PSBjdXJyZW50V2luKSB7XG4gICAgICBjb25zdCBpZnJhbWVTY2FsZSA9IGdldFNjYWxlKGN1cnJlbnRJRnJhbWUpO1xuICAgICAgY29uc3QgaWZyYW1lUmVjdCA9IGN1cnJlbnRJRnJhbWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBjc3MgPSBnZXRDb21wdXRlZFN0eWxlKGN1cnJlbnRJRnJhbWUpO1xuICAgICAgY29uc3QgbGVmdCA9IGlmcmFtZVJlY3QubGVmdCArIChjdXJyZW50SUZyYW1lLmNsaWVudExlZnQgKyBwYXJzZUZsb2F0KGNzcy5wYWRkaW5nTGVmdCkpICogaWZyYW1lU2NhbGUueDtcbiAgICAgIGNvbnN0IHRvcCA9IGlmcmFtZVJlY3QudG9wICsgKGN1cnJlbnRJRnJhbWUuY2xpZW50VG9wICsgcGFyc2VGbG9hdChjc3MucGFkZGluZ1RvcCkpICogaWZyYW1lU2NhbGUueTtcbiAgICAgIHggKj0gaWZyYW1lU2NhbGUueDtcbiAgICAgIHkgKj0gaWZyYW1lU2NhbGUueTtcbiAgICAgIHdpZHRoICo9IGlmcmFtZVNjYWxlLng7XG4gICAgICBoZWlnaHQgKj0gaWZyYW1lU2NhbGUueTtcbiAgICAgIHggKz0gbGVmdDtcbiAgICAgIHkgKz0gdG9wO1xuICAgICAgY3VycmVudFdpbiA9IGdldFdpbmRvdyhjdXJyZW50SUZyYW1lKTtcbiAgICAgIGN1cnJlbnRJRnJhbWUgPSBnZXRGcmFtZUVsZW1lbnQoY3VycmVudFdpbik7XG4gICAgfVxuICB9XG4gIHJldHVybiByZWN0VG9DbGllbnRSZWN0KHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgeCxcbiAgICB5XG4gIH0pO1xufVxuXG4vLyBJZiA8aHRtbD4gaGFzIGEgQ1NTIHdpZHRoIGdyZWF0ZXIgdGhhbiB0aGUgdmlld3BvcnQsIHRoZW4gdGhpcyB3aWxsIGJlXG4vLyBpbmNvcnJlY3QgZm9yIFJUTC5cbmZ1bmN0aW9uIGdldFdpbmRvd1Njcm9sbEJhclgoZWxlbWVudCwgcmVjdCkge1xuICBjb25zdCBsZWZ0U2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChlbGVtZW50KS5zY3JvbGxMZWZ0O1xuICBpZiAoIXJlY3QpIHtcbiAgICByZXR1cm4gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSkubGVmdCArIGxlZnRTY3JvbGw7XG4gIH1cbiAgcmV0dXJuIHJlY3QubGVmdCArIGxlZnRTY3JvbGw7XG59XG5cbmZ1bmN0aW9uIGdldEhUTUxPZmZzZXQoZG9jdW1lbnRFbGVtZW50LCBzY3JvbGwsIGlnbm9yZVNjcm9sbGJhclgpIHtcbiAgaWYgKGlnbm9yZVNjcm9sbGJhclggPT09IHZvaWQgMCkge1xuICAgIGlnbm9yZVNjcm9sbGJhclggPSBmYWxzZTtcbiAgfVxuICBjb25zdCBodG1sUmVjdCA9IGRvY3VtZW50RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgeCA9IGh0bWxSZWN0LmxlZnQgKyBzY3JvbGwuc2Nyb2xsTGVmdCAtIChpZ25vcmVTY3JvbGxiYXJYID8gMCA6XG4gIC8vIFJUTCA8Ym9keT4gc2Nyb2xsYmFyLlxuICBnZXRXaW5kb3dTY3JvbGxCYXJYKGRvY3VtZW50RWxlbWVudCwgaHRtbFJlY3QpKTtcbiAgY29uc3QgeSA9IGh0bWxSZWN0LnRvcCArIHNjcm9sbC5zY3JvbGxUb3A7XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0KF9yZWYpIHtcbiAgbGV0IHtcbiAgICBlbGVtZW50cyxcbiAgICByZWN0LFxuICAgIG9mZnNldFBhcmVudCxcbiAgICBzdHJhdGVneVxuICB9ID0gX3JlZjtcbiAgY29uc3QgaXNGaXhlZCA9IHN0cmF0ZWd5ID09PSAnZml4ZWQnO1xuICBjb25zdCBkb2N1bWVudEVsZW1lbnQgPSBnZXREb2N1bWVudEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgY29uc3QgdG9wTGF5ZXIgPSBlbGVtZW50cyA/IGlzVG9wTGF5ZXIoZWxlbWVudHMuZmxvYXRpbmcpIDogZmFsc2U7XG4gIGlmIChvZmZzZXRQYXJlbnQgPT09IGRvY3VtZW50RWxlbWVudCB8fCB0b3BMYXllciAmJiBpc0ZpeGVkKSB7XG4gICAgcmV0dXJuIHJlY3Q7XG4gIH1cbiAgbGV0IHNjcm9sbCA9IHtcbiAgICBzY3JvbGxMZWZ0OiAwLFxuICAgIHNjcm9sbFRvcDogMFxuICB9O1xuICBsZXQgc2NhbGUgPSBjcmVhdGVDb29yZHMoMSk7XG4gIGNvbnN0IG9mZnNldHMgPSBjcmVhdGVDb29yZHMoMCk7XG4gIGNvbnN0IGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ID0gaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICBpZiAoaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgfHwgIWlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ICYmICFpc0ZpeGVkKSB7XG4gICAgaWYgKGdldE5vZGVOYW1lKG9mZnNldFBhcmVudCkgIT09ICdib2R5JyB8fCBpc092ZXJmbG93RWxlbWVudChkb2N1bWVudEVsZW1lbnQpKSB7XG4gICAgICBzY3JvbGwgPSBnZXROb2RlU2Nyb2xsKG9mZnNldFBhcmVudCk7XG4gICAgfVxuICAgIGlmIChpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCkpIHtcbiAgICAgIGNvbnN0IG9mZnNldFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3Qob2Zmc2V0UGFyZW50KTtcbiAgICAgIHNjYWxlID0gZ2V0U2NhbGUob2Zmc2V0UGFyZW50KTtcbiAgICAgIG9mZnNldHMueCA9IG9mZnNldFJlY3QueCArIG9mZnNldFBhcmVudC5jbGllbnRMZWZ0O1xuICAgICAgb2Zmc2V0cy55ID0gb2Zmc2V0UmVjdC55ICsgb2Zmc2V0UGFyZW50LmNsaWVudFRvcDtcbiAgICB9XG4gIH1cbiAgY29uc3QgaHRtbE9mZnNldCA9IGRvY3VtZW50RWxlbWVudCAmJiAhaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgJiYgIWlzRml4ZWQgPyBnZXRIVE1MT2Zmc2V0KGRvY3VtZW50RWxlbWVudCwgc2Nyb2xsLCB0cnVlKSA6IGNyZWF0ZUNvb3JkcygwKTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogcmVjdC53aWR0aCAqIHNjYWxlLngsXG4gICAgaGVpZ2h0OiByZWN0LmhlaWdodCAqIHNjYWxlLnksXG4gICAgeDogcmVjdC54ICogc2NhbGUueCAtIHNjcm9sbC5zY3JvbGxMZWZ0ICogc2NhbGUueCArIG9mZnNldHMueCArIGh0bWxPZmZzZXQueCxcbiAgICB5OiByZWN0LnkgKiBzY2FsZS55IC0gc2Nyb2xsLnNjcm9sbFRvcCAqIHNjYWxlLnkgKyBvZmZzZXRzLnkgKyBodG1sT2Zmc2V0LnlcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0Q2xpZW50UmVjdHMoZWxlbWVudCkge1xuICByZXR1cm4gQXJyYXkuZnJvbShlbGVtZW50LmdldENsaWVudFJlY3RzKCkpO1xufVxuXG4vLyBHZXRzIHRoZSBlbnRpcmUgc2l6ZSBvZiB0aGUgc2Nyb2xsYWJsZSBkb2N1bWVudCBhcmVhLCBldmVuIGV4dGVuZGluZyBvdXRzaWRlXG4vLyBvZiB0aGUgYDxodG1sPmAgYW5kIGA8Ym9keT5gIHJlY3QgYm91bmRzIGlmIGhvcml6b250YWxseSBzY3JvbGxhYmxlLlxuZnVuY3Rpb24gZ2V0RG9jdW1lbnRSZWN0KGVsZW1lbnQpIHtcbiAgY29uc3QgaHRtbCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgY29uc3Qgc2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChlbGVtZW50KTtcbiAgY29uc3QgYm9keSA9IGVsZW1lbnQub3duZXJEb2N1bWVudC5ib2R5O1xuICBjb25zdCB3aWR0aCA9IG1heChodG1sLnNjcm9sbFdpZHRoLCBodG1sLmNsaWVudFdpZHRoLCBib2R5LnNjcm9sbFdpZHRoLCBib2R5LmNsaWVudFdpZHRoKTtcbiAgY29uc3QgaGVpZ2h0ID0gbWF4KGh0bWwuc2Nyb2xsSGVpZ2h0LCBodG1sLmNsaWVudEhlaWdodCwgYm9keS5zY3JvbGxIZWlnaHQsIGJvZHkuY2xpZW50SGVpZ2h0KTtcbiAgbGV0IHggPSAtc2Nyb2xsLnNjcm9sbExlZnQgKyBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQpO1xuICBjb25zdCB5ID0gLXNjcm9sbC5zY3JvbGxUb3A7XG4gIGlmIChnZXRDb21wdXRlZFN0eWxlKGJvZHkpLmRpcmVjdGlvbiA9PT0gJ3J0bCcpIHtcbiAgICB4ICs9IG1heChodG1sLmNsaWVudFdpZHRoLCBib2R5LmNsaWVudFdpZHRoKSAtIHdpZHRoO1xuICB9XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRWaWV3cG9ydFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpIHtcbiAgY29uc3Qgd2luID0gZ2V0V2luZG93KGVsZW1lbnQpO1xuICBjb25zdCBodG1sID0gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpO1xuICBjb25zdCB2aXN1YWxWaWV3cG9ydCA9IHdpbi52aXN1YWxWaWV3cG9ydDtcbiAgbGV0IHdpZHRoID0gaHRtbC5jbGllbnRXaWR0aDtcbiAgbGV0IGhlaWdodCA9IGh0bWwuY2xpZW50SGVpZ2h0O1xuICBsZXQgeCA9IDA7XG4gIGxldCB5ID0gMDtcbiAgaWYgKHZpc3VhbFZpZXdwb3J0KSB7XG4gICAgd2lkdGggPSB2aXN1YWxWaWV3cG9ydC53aWR0aDtcbiAgICBoZWlnaHQgPSB2aXN1YWxWaWV3cG9ydC5oZWlnaHQ7XG4gICAgY29uc3QgdmlzdWFsVmlld3BvcnRCYXNlZCA9IGlzV2ViS2l0KCk7XG4gICAgaWYgKCF2aXN1YWxWaWV3cG9ydEJhc2VkIHx8IHZpc3VhbFZpZXdwb3J0QmFzZWQgJiYgc3RyYXRlZ3kgPT09ICdmaXhlZCcpIHtcbiAgICAgIHggPSB2aXN1YWxWaWV3cG9ydC5vZmZzZXRMZWZ0O1xuICAgICAgeSA9IHZpc3VhbFZpZXdwb3J0Lm9mZnNldFRvcDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5cbi8vIFJldHVybnMgdGhlIGlubmVyIGNsaWVudCByZWN0LCBzdWJ0cmFjdGluZyBzY3JvbGxiYXJzIGlmIHByZXNlbnQuXG5mdW5jdGlvbiBnZXRJbm5lckJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCBzdHJhdGVneSkge1xuICBjb25zdCBjbGllbnRSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIHRydWUsIHN0cmF0ZWd5ID09PSAnZml4ZWQnKTtcbiAgY29uc3QgdG9wID0gY2xpZW50UmVjdC50b3AgKyBlbGVtZW50LmNsaWVudFRvcDtcbiAgY29uc3QgbGVmdCA9IGNsaWVudFJlY3QubGVmdCArIGVsZW1lbnQuY2xpZW50TGVmdDtcbiAgY29uc3Qgc2NhbGUgPSBpc0hUTUxFbGVtZW50KGVsZW1lbnQpID8gZ2V0U2NhbGUoZWxlbWVudCkgOiBjcmVhdGVDb29yZHMoMSk7XG4gIGNvbnN0IHdpZHRoID0gZWxlbWVudC5jbGllbnRXaWR0aCAqIHNjYWxlLng7XG4gIGNvbnN0IGhlaWdodCA9IGVsZW1lbnQuY2xpZW50SGVpZ2h0ICogc2NhbGUueTtcbiAgY29uc3QgeCA9IGxlZnQgKiBzY2FsZS54O1xuICBjb25zdCB5ID0gdG9wICogc2NhbGUueTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5mdW5jdGlvbiBnZXRDbGllbnRSZWN0RnJvbUNsaXBwaW5nQW5jZXN0b3IoZWxlbWVudCwgY2xpcHBpbmdBbmNlc3Rvciwgc3RyYXRlZ3kpIHtcbiAgbGV0IHJlY3Q7XG4gIGlmIChjbGlwcGluZ0FuY2VzdG9yID09PSAndmlld3BvcnQnKSB7XG4gICAgcmVjdCA9IGdldFZpZXdwb3J0UmVjdChlbGVtZW50LCBzdHJhdGVneSk7XG4gIH0gZWxzZSBpZiAoY2xpcHBpbmdBbmNlc3RvciA9PT0gJ2RvY3VtZW50Jykge1xuICAgIHJlY3QgPSBnZXREb2N1bWVudFJlY3QoZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpKTtcbiAgfSBlbHNlIGlmIChpc0VsZW1lbnQoY2xpcHBpbmdBbmNlc3RvcikpIHtcbiAgICByZWN0ID0gZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QoY2xpcHBpbmdBbmNlc3Rvciwgc3RyYXRlZ3kpO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHZpc3VhbE9mZnNldHMgPSBnZXRWaXN1YWxPZmZzZXRzKGVsZW1lbnQpO1xuICAgIHJlY3QgPSB7XG4gICAgICB4OiBjbGlwcGluZ0FuY2VzdG9yLnggLSB2aXN1YWxPZmZzZXRzLngsXG4gICAgICB5OiBjbGlwcGluZ0FuY2VzdG9yLnkgLSB2aXN1YWxPZmZzZXRzLnksXG4gICAgICB3aWR0aDogY2xpcHBpbmdBbmNlc3Rvci53aWR0aCxcbiAgICAgIGhlaWdodDogY2xpcHBpbmdBbmNlc3Rvci5oZWlnaHRcbiAgICB9O1xuICB9XG4gIHJldHVybiByZWN0VG9DbGllbnRSZWN0KHJlY3QpO1xufVxuZnVuY3Rpb24gaGFzRml4ZWRQb3NpdGlvbkFuY2VzdG9yKGVsZW1lbnQsIHN0b3BOb2RlKSB7XG4gIGNvbnN0IHBhcmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGVsZW1lbnQpO1xuICBpZiAocGFyZW50Tm9kZSA9PT0gc3RvcE5vZGUgfHwgIWlzRWxlbWVudChwYXJlbnROb2RlKSB8fCBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUocGFyZW50Tm9kZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUocGFyZW50Tm9kZSkucG9zaXRpb24gPT09ICdmaXhlZCcgfHwgaGFzRml4ZWRQb3NpdGlvbkFuY2VzdG9yKHBhcmVudE5vZGUsIHN0b3BOb2RlKTtcbn1cblxuLy8gQSBcImNsaXBwaW5nIGFuY2VzdG9yXCIgaXMgYW4gYG92ZXJmbG93YCBlbGVtZW50IHdpdGggdGhlIGNoYXJhY3RlcmlzdGljIG9mXG4vLyBjbGlwcGluZyAob3IgaGlkaW5nKSBjaGlsZCBlbGVtZW50cy4gVGhpcyByZXR1cm5zIGFsbCBjbGlwcGluZyBhbmNlc3RvcnNcbi8vIG9mIHRoZSBnaXZlbiBlbGVtZW50IHVwIHRoZSB0cmVlLlxuZnVuY3Rpb24gZ2V0Q2xpcHBpbmdFbGVtZW50QW5jZXN0b3JzKGVsZW1lbnQsIGNhY2hlKSB7XG4gIGNvbnN0IGNhY2hlZFJlc3VsdCA9IGNhY2hlLmdldChlbGVtZW50KTtcbiAgaWYgKGNhY2hlZFJlc3VsdCkge1xuICAgIHJldHVybiBjYWNoZWRSZXN1bHQ7XG4gIH1cbiAgbGV0IHJlc3VsdCA9IGdldE92ZXJmbG93QW5jZXN0b3JzKGVsZW1lbnQsIFtdLCBmYWxzZSkuZmlsdGVyKGVsID0+IGlzRWxlbWVudChlbCkgJiYgZ2V0Tm9kZU5hbWUoZWwpICE9PSAnYm9keScpO1xuICBsZXQgY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUgPSBudWxsO1xuICBjb25zdCBlbGVtZW50SXNGaXhlZCA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkucG9zaXRpb24gPT09ICdmaXhlZCc7XG4gIGxldCBjdXJyZW50Tm9kZSA9IGVsZW1lbnRJc0ZpeGVkID8gZ2V0UGFyZW50Tm9kZShlbGVtZW50KSA6IGVsZW1lbnQ7XG5cbiAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL0NvbnRhaW5pbmdfYmxvY2sjaWRlbnRpZnlpbmdfdGhlX2NvbnRhaW5pbmdfYmxvY2tcbiAgd2hpbGUgKGlzRWxlbWVudChjdXJyZW50Tm9kZSkgJiYgIWlzTGFzdFRyYXZlcnNhYmxlTm9kZShjdXJyZW50Tm9kZSkpIHtcbiAgICBjb25zdCBjb21wdXRlZFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShjdXJyZW50Tm9kZSk7XG4gICAgY29uc3QgY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgPSBpc0NvbnRhaW5pbmdCbG9jayhjdXJyZW50Tm9kZSk7XG4gICAgaWYgKCFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiBjb21wdXRlZFN0eWxlLnBvc2l0aW9uID09PSAnZml4ZWQnKSB7XG4gICAgICBjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA9IG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHNob3VsZERyb3BDdXJyZW50Tm9kZSA9IGVsZW1lbnRJc0ZpeGVkID8gIWN1cnJlbnROb2RlSXNDb250YWluaW5nICYmICFjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA6ICFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiBjb21wdXRlZFN0eWxlLnBvc2l0aW9uID09PSAnc3RhdGljJyAmJiAhIWN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlICYmIFsnYWJzb2x1dGUnLCAnZml4ZWQnXS5pbmNsdWRlcyhjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZS5wb3NpdGlvbikgfHwgaXNPdmVyZmxvd0VsZW1lbnQoY3VycmVudE5vZGUpICYmICFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiBoYXNGaXhlZFBvc2l0aW9uQW5jZXN0b3IoZWxlbWVudCwgY3VycmVudE5vZGUpO1xuICAgIGlmIChzaG91bGREcm9wQ3VycmVudE5vZGUpIHtcbiAgICAgIC8vIERyb3Agbm9uLWNvbnRhaW5pbmcgYmxvY2tzLlxuICAgICAgcmVzdWx0ID0gcmVzdWx0LmZpbHRlcihhbmNlc3RvciA9PiBhbmNlc3RvciAhPT0gY3VycmVudE5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZWNvcmQgbGFzdCBjb250YWluaW5nIGJsb2NrIGZvciBuZXh0IGl0ZXJhdGlvbi5cbiAgICAgIGN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlID0gY29tcHV0ZWRTdHlsZTtcbiAgICB9XG4gICAgY3VycmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGN1cnJlbnROb2RlKTtcbiAgfVxuICBjYWNoZS5zZXQoZWxlbWVudCwgcmVzdWx0KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLy8gR2V0cyB0aGUgbWF4aW11bSBhcmVhIHRoYXQgdGhlIGVsZW1lbnQgaXMgdmlzaWJsZSBpbiBkdWUgdG8gYW55IG51bWJlciBvZlxuLy8gY2xpcHBpbmcgYW5jZXN0b3JzLlxuZnVuY3Rpb24gZ2V0Q2xpcHBpbmdSZWN0KF9yZWYpIHtcbiAgbGV0IHtcbiAgICBlbGVtZW50LFxuICAgIGJvdW5kYXJ5LFxuICAgIHJvb3RCb3VuZGFyeSxcbiAgICBzdHJhdGVneVxuICB9ID0gX3JlZjtcbiAgY29uc3QgZWxlbWVudENsaXBwaW5nQW5jZXN0b3JzID0gYm91bmRhcnkgPT09ICdjbGlwcGluZ0FuY2VzdG9ycycgPyBpc1RvcExheWVyKGVsZW1lbnQpID8gW10gOiBnZXRDbGlwcGluZ0VsZW1lbnRBbmNlc3RvcnMoZWxlbWVudCwgdGhpcy5fYykgOiBbXS5jb25jYXQoYm91bmRhcnkpO1xuICBjb25zdCBjbGlwcGluZ0FuY2VzdG9ycyA9IFsuLi5lbGVtZW50Q2xpcHBpbmdBbmNlc3RvcnMsIHJvb3RCb3VuZGFyeV07XG4gIGNvbnN0IGZpcnN0Q2xpcHBpbmdBbmNlc3RvciA9IGNsaXBwaW5nQW5jZXN0b3JzWzBdO1xuICBjb25zdCBjbGlwcGluZ1JlY3QgPSBjbGlwcGluZ0FuY2VzdG9ycy5yZWR1Y2UoKGFjY1JlY3QsIGNsaXBwaW5nQW5jZXN0b3IpID0+IHtcbiAgICBjb25zdCByZWN0ID0gZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yKGVsZW1lbnQsIGNsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KTtcbiAgICBhY2NSZWN0LnRvcCA9IG1heChyZWN0LnRvcCwgYWNjUmVjdC50b3ApO1xuICAgIGFjY1JlY3QucmlnaHQgPSBtaW4ocmVjdC5yaWdodCwgYWNjUmVjdC5yaWdodCk7XG4gICAgYWNjUmVjdC5ib3R0b20gPSBtaW4ocmVjdC5ib3R0b20sIGFjY1JlY3QuYm90dG9tKTtcbiAgICBhY2NSZWN0LmxlZnQgPSBtYXgocmVjdC5sZWZ0LCBhY2NSZWN0LmxlZnQpO1xuICAgIHJldHVybiBhY2NSZWN0O1xuICB9LCBnZXRDbGllbnRSZWN0RnJvbUNsaXBwaW5nQW5jZXN0b3IoZWxlbWVudCwgZmlyc3RDbGlwcGluZ0FuY2VzdG9yLCBzdHJhdGVneSkpO1xuICByZXR1cm4ge1xuICAgIHdpZHRoOiBjbGlwcGluZ1JlY3QucmlnaHQgLSBjbGlwcGluZ1JlY3QubGVmdCxcbiAgICBoZWlnaHQ6IGNsaXBwaW5nUmVjdC5ib3R0b20gLSBjbGlwcGluZ1JlY3QudG9wLFxuICAgIHg6IGNsaXBwaW5nUmVjdC5sZWZ0LFxuICAgIHk6IGNsaXBwaW5nUmVjdC50b3BcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0RGltZW5zaW9ucyhlbGVtZW50KSB7XG4gIGNvbnN0IHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHRcbiAgfSA9IGdldENzc0RpbWVuc2lvbnMoZWxlbWVudCk7XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldFJlY3RSZWxhdGl2ZVRvT2Zmc2V0UGFyZW50KGVsZW1lbnQsIG9mZnNldFBhcmVudCwgc3RyYXRlZ3kpIHtcbiAgY29uc3QgaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgPSBpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIGNvbnN0IGRvY3VtZW50RWxlbWVudCA9IGdldERvY3VtZW50RWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICBjb25zdCBpc0ZpeGVkID0gc3RyYXRlZ3kgPT09ICdmaXhlZCc7XG4gIGNvbnN0IHJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgdHJ1ZSwgaXNGaXhlZCwgb2Zmc2V0UGFyZW50KTtcbiAgbGV0IHNjcm9sbCA9IHtcbiAgICBzY3JvbGxMZWZ0OiAwLFxuICAgIHNjcm9sbFRvcDogMFxuICB9O1xuICBjb25zdCBvZmZzZXRzID0gY3JlYXRlQ29vcmRzKDApO1xuICBpZiAoaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgfHwgIWlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ICYmICFpc0ZpeGVkKSB7XG4gICAgaWYgKGdldE5vZGVOYW1lKG9mZnNldFBhcmVudCkgIT09ICdib2R5JyB8fCBpc092ZXJmbG93RWxlbWVudChkb2N1bWVudEVsZW1lbnQpKSB7XG4gICAgICBzY3JvbGwgPSBnZXROb2RlU2Nyb2xsKG9mZnNldFBhcmVudCk7XG4gICAgfVxuICAgIGlmIChpc09mZnNldFBhcmVudEFuRWxlbWVudCkge1xuICAgICAgY29uc3Qgb2Zmc2V0UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChvZmZzZXRQYXJlbnQsIHRydWUsIGlzRml4ZWQsIG9mZnNldFBhcmVudCk7XG4gICAgICBvZmZzZXRzLnggPSBvZmZzZXRSZWN0LnggKyBvZmZzZXRQYXJlbnQuY2xpZW50TGVmdDtcbiAgICAgIG9mZnNldHMueSA9IG9mZnNldFJlY3QueSArIG9mZnNldFBhcmVudC5jbGllbnRUb3A7XG4gICAgfSBlbHNlIGlmIChkb2N1bWVudEVsZW1lbnQpIHtcbiAgICAgIC8vIElmIHRoZSA8Ym9keT4gc2Nyb2xsYmFyIGFwcGVhcnMgb24gdGhlIGxlZnQgKGUuZy4gUlRMIHN5c3RlbXMpLiBVc2VcbiAgICAgIC8vIEZpcmVmb3ggd2l0aCBsYXlvdXQuc2Nyb2xsYmFyLnNpZGUgPSAzIGluIGFib3V0OmNvbmZpZyB0byB0ZXN0IHRoaXMuXG4gICAgICBvZmZzZXRzLnggPSBnZXRXaW5kb3dTY3JvbGxCYXJYKGRvY3VtZW50RWxlbWVudCk7XG4gICAgfVxuICB9XG4gIGNvbnN0IGh0bWxPZmZzZXQgPSBkb2N1bWVudEVsZW1lbnQgJiYgIWlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ICYmICFpc0ZpeGVkID8gZ2V0SFRNTE9mZnNldChkb2N1bWVudEVsZW1lbnQsIHNjcm9sbCkgOiBjcmVhdGVDb29yZHMoMCk7XG4gIGNvbnN0IHggPSByZWN0LmxlZnQgKyBzY3JvbGwuc2Nyb2xsTGVmdCAtIG9mZnNldHMueCAtIGh0bWxPZmZzZXQueDtcbiAgY29uc3QgeSA9IHJlY3QudG9wICsgc2Nyb2xsLnNjcm9sbFRvcCAtIG9mZnNldHMueSAtIGh0bWxPZmZzZXQueTtcbiAgcmV0dXJuIHtcbiAgICB4LFxuICAgIHksXG4gICAgd2lkdGg6IHJlY3Qud2lkdGgsXG4gICAgaGVpZ2h0OiByZWN0LmhlaWdodFxuICB9O1xufVxuXG5mdW5jdGlvbiBpc1N0YXRpY1Bvc2l0aW9uZWQoZWxlbWVudCkge1xuICByZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5wb3NpdGlvbiA9PT0gJ3N0YXRpYyc7XG59XG5cbmZ1bmN0aW9uIGdldFRydWVPZmZzZXRQYXJlbnQoZWxlbWVudCwgcG9seWZpbGwpIHtcbiAgaWYgKCFpc0hUTUxFbGVtZW50KGVsZW1lbnQpIHx8IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkucG9zaXRpb24gPT09ICdmaXhlZCcpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAocG9seWZpbGwpIHtcbiAgICByZXR1cm4gcG9seWZpbGwoZWxlbWVudCk7XG4gIH1cbiAgbGV0IHJhd09mZnNldFBhcmVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50O1xuXG4gIC8vIEZpcmVmb3ggcmV0dXJucyB0aGUgPGh0bWw+IGVsZW1lbnQgYXMgdGhlIG9mZnNldFBhcmVudCBpZiBpdCdzIG5vbi1zdGF0aWMsXG4gIC8vIHdoaWxlIENocm9tZSBhbmQgU2FmYXJpIHJldHVybiB0aGUgPGJvZHk+IGVsZW1lbnQuIFRoZSA8Ym9keT4gZWxlbWVudCBtdXN0XG4gIC8vIGJlIHVzZWQgdG8gcGVyZm9ybSB0aGUgY29ycmVjdCBjYWxjdWxhdGlvbnMgZXZlbiBpZiB0aGUgPGh0bWw+IGVsZW1lbnQgaXNcbiAgLy8gbm9uLXN0YXRpYy5cbiAgaWYgKGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSA9PT0gcmF3T2Zmc2V0UGFyZW50KSB7XG4gICAgcmF3T2Zmc2V0UGFyZW50ID0gcmF3T2Zmc2V0UGFyZW50Lm93bmVyRG9jdW1lbnQuYm9keTtcbiAgfVxuICByZXR1cm4gcmF3T2Zmc2V0UGFyZW50O1xufVxuXG4vLyBHZXRzIHRoZSBjbG9zZXN0IGFuY2VzdG9yIHBvc2l0aW9uZWQgZWxlbWVudC4gSGFuZGxlcyBzb21lIGVkZ2UgY2FzZXMsXG4vLyBzdWNoIGFzIHRhYmxlIGFuY2VzdG9ycyBhbmQgY3Jvc3MgYnJvd3NlciBidWdzLlxuZnVuY3Rpb24gZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnQsIHBvbHlmaWxsKSB7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgaWYgKGlzVG9wTGF5ZXIoZWxlbWVudCkpIHtcbiAgICByZXR1cm4gd2luO1xuICB9XG4gIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSkge1xuICAgIGxldCBzdmdPZmZzZXRQYXJlbnQgPSBnZXRQYXJlbnROb2RlKGVsZW1lbnQpO1xuICAgIHdoaWxlIChzdmdPZmZzZXRQYXJlbnQgJiYgIWlzTGFzdFRyYXZlcnNhYmxlTm9kZShzdmdPZmZzZXRQYXJlbnQpKSB7XG4gICAgICBpZiAoaXNFbGVtZW50KHN2Z09mZnNldFBhcmVudCkgJiYgIWlzU3RhdGljUG9zaXRpb25lZChzdmdPZmZzZXRQYXJlbnQpKSB7XG4gICAgICAgIHJldHVybiBzdmdPZmZzZXRQYXJlbnQ7XG4gICAgICB9XG4gICAgICBzdmdPZmZzZXRQYXJlbnQgPSBnZXRQYXJlbnROb2RlKHN2Z09mZnNldFBhcmVudCk7XG4gICAgfVxuICAgIHJldHVybiB3aW47XG4gIH1cbiAgbGV0IG9mZnNldFBhcmVudCA9IGdldFRydWVPZmZzZXRQYXJlbnQoZWxlbWVudCwgcG9seWZpbGwpO1xuICB3aGlsZSAob2Zmc2V0UGFyZW50ICYmIGlzVGFibGVFbGVtZW50KG9mZnNldFBhcmVudCkgJiYgaXNTdGF0aWNQb3NpdGlvbmVkKG9mZnNldFBhcmVudCkpIHtcbiAgICBvZmZzZXRQYXJlbnQgPSBnZXRUcnVlT2Zmc2V0UGFyZW50KG9mZnNldFBhcmVudCwgcG9seWZpbGwpO1xuICB9XG4gIGlmIChvZmZzZXRQYXJlbnQgJiYgaXNMYXN0VHJhdmVyc2FibGVOb2RlKG9mZnNldFBhcmVudCkgJiYgaXNTdGF0aWNQb3NpdGlvbmVkKG9mZnNldFBhcmVudCkgJiYgIWlzQ29udGFpbmluZ0Jsb2NrKG9mZnNldFBhcmVudCkpIHtcbiAgICByZXR1cm4gd2luO1xuICB9XG4gIHJldHVybiBvZmZzZXRQYXJlbnQgfHwgZ2V0Q29udGFpbmluZ0Jsb2NrKGVsZW1lbnQpIHx8IHdpbjtcbn1cblxuY29uc3QgZ2V0RWxlbWVudFJlY3RzID0gYXN5bmMgZnVuY3Rpb24gKGRhdGEpIHtcbiAgY29uc3QgZ2V0T2Zmc2V0UGFyZW50Rm4gPSB0aGlzLmdldE9mZnNldFBhcmVudCB8fCBnZXRPZmZzZXRQYXJlbnQ7XG4gIGNvbnN0IGdldERpbWVuc2lvbnNGbiA9IHRoaXMuZ2V0RGltZW5zaW9ucztcbiAgY29uc3QgZmxvYXRpbmdEaW1lbnNpb25zID0gYXdhaXQgZ2V0RGltZW5zaW9uc0ZuKGRhdGEuZmxvYXRpbmcpO1xuICByZXR1cm4ge1xuICAgIHJlZmVyZW5jZTogZ2V0UmVjdFJlbGF0aXZlVG9PZmZzZXRQYXJlbnQoZGF0YS5yZWZlcmVuY2UsIGF3YWl0IGdldE9mZnNldFBhcmVudEZuKGRhdGEuZmxvYXRpbmcpLCBkYXRhLnN0cmF0ZWd5KSxcbiAgICBmbG9hdGluZzoge1xuICAgICAgeDogMCxcbiAgICAgIHk6IDAsXG4gICAgICB3aWR0aDogZmxvYXRpbmdEaW1lbnNpb25zLndpZHRoLFxuICAgICAgaGVpZ2h0OiBmbG9hdGluZ0RpbWVuc2lvbnMuaGVpZ2h0XG4gICAgfVxuICB9O1xufTtcblxuZnVuY3Rpb24gaXNSVEwoZWxlbWVudCkge1xuICByZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5kaXJlY3Rpb24gPT09ICdydGwnO1xufVxuXG5jb25zdCBwbGF0Zm9ybSA9IHtcbiAgY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3QsXG4gIGdldERvY3VtZW50RWxlbWVudCxcbiAgZ2V0Q2xpcHBpbmdSZWN0LFxuICBnZXRPZmZzZXRQYXJlbnQsXG4gIGdldEVsZW1lbnRSZWN0cyxcbiAgZ2V0Q2xpZW50UmVjdHMsXG4gIGdldERpbWVuc2lvbnMsXG4gIGdldFNjYWxlLFxuICBpc0VsZW1lbnQsXG4gIGlzUlRMXG59O1xuXG5mdW5jdGlvbiByZWN0c0FyZUVxdWFsKGEsIGIpIHtcbiAgcmV0dXJuIGEueCA9PT0gYi54ICYmIGEueSA9PT0gYi55ICYmIGEud2lkdGggPT09IGIud2lkdGggJiYgYS5oZWlnaHQgPT09IGIuaGVpZ2h0O1xufVxuXG4vLyBodHRwczovL3NhbXRob3IuYXUvMjAyMS9vYnNlcnZpbmctZG9tL1xuZnVuY3Rpb24gb2JzZXJ2ZU1vdmUoZWxlbWVudCwgb25Nb3ZlKSB7XG4gIGxldCBpbyA9IG51bGw7XG4gIGxldCB0aW1lb3V0SWQ7XG4gIGNvbnN0IHJvb3QgPSBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCk7XG4gIGZ1bmN0aW9uIGNsZWFudXAoKSB7XG4gICAgdmFyIF9pbztcbiAgICBjbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAoX2lvID0gaW8pID09IG51bGwgfHwgX2lvLmRpc2Nvbm5lY3QoKTtcbiAgICBpbyA9IG51bGw7XG4gIH1cbiAgZnVuY3Rpb24gcmVmcmVzaChza2lwLCB0aHJlc2hvbGQpIHtcbiAgICBpZiAoc2tpcCA9PT0gdm9pZCAwKSB7XG4gICAgICBza2lwID0gZmFsc2U7XG4gICAgfVxuICAgIGlmICh0aHJlc2hvbGQgPT09IHZvaWQgMCkge1xuICAgICAgdGhyZXNob2xkID0gMTtcbiAgICB9XG4gICAgY2xlYW51cCgpO1xuICAgIGNvbnN0IGVsZW1lbnRSZWN0Rm9yUm9vdE1hcmdpbiA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3Qge1xuICAgICAgbGVmdCxcbiAgICAgIHRvcCxcbiAgICAgIHdpZHRoLFxuICAgICAgaGVpZ2h0XG4gICAgfSA9IGVsZW1lbnRSZWN0Rm9yUm9vdE1hcmdpbjtcbiAgICBpZiAoIXNraXApIHtcbiAgICAgIG9uTW92ZSgpO1xuICAgIH1cbiAgICBpZiAoIXdpZHRoIHx8ICFoZWlnaHQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaW5zZXRUb3AgPSBmbG9vcih0b3ApO1xuICAgIGNvbnN0IGluc2V0UmlnaHQgPSBmbG9vcihyb290LmNsaWVudFdpZHRoIC0gKGxlZnQgKyB3aWR0aCkpO1xuICAgIGNvbnN0IGluc2V0Qm90dG9tID0gZmxvb3Iocm9vdC5jbGllbnRIZWlnaHQgLSAodG9wICsgaGVpZ2h0KSk7XG4gICAgY29uc3QgaW5zZXRMZWZ0ID0gZmxvb3IobGVmdCk7XG4gICAgY29uc3Qgcm9vdE1hcmdpbiA9IC1pbnNldFRvcCArIFwicHggXCIgKyAtaW5zZXRSaWdodCArIFwicHggXCIgKyAtaW5zZXRCb3R0b20gKyBcInB4IFwiICsgLWluc2V0TGVmdCArIFwicHhcIjtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgcm9vdE1hcmdpbixcbiAgICAgIHRocmVzaG9sZDogbWF4KDAsIG1pbigxLCB0aHJlc2hvbGQpKSB8fCAxXG4gICAgfTtcbiAgICBsZXQgaXNGaXJzdFVwZGF0ZSA9IHRydWU7XG4gICAgZnVuY3Rpb24gaGFuZGxlT2JzZXJ2ZShlbnRyaWVzKSB7XG4gICAgICBjb25zdCByYXRpbyA9IGVudHJpZXNbMF0uaW50ZXJzZWN0aW9uUmF0aW87XG4gICAgICBpZiAocmF0aW8gIT09IHRocmVzaG9sZCkge1xuICAgICAgICBpZiAoIWlzRmlyc3RVcGRhdGUpIHtcbiAgICAgICAgICByZXR1cm4gcmVmcmVzaCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghcmF0aW8pIHtcbiAgICAgICAgICAvLyBJZiB0aGUgcmVmZXJlbmNlIGlzIGNsaXBwZWQsIHRoZSByYXRpbyBpcyAwLiBUaHJvdHRsZSB0aGUgcmVmcmVzaFxuICAgICAgICAgIC8vIHRvIHByZXZlbnQgYW4gaW5maW5pdGUgbG9vcCBvZiB1cGRhdGVzLlxuICAgICAgICAgIHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgcmVmcmVzaChmYWxzZSwgMWUtNyk7XG4gICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVmcmVzaChmYWxzZSwgcmF0aW8pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocmF0aW8gPT09IDEgJiYgIXJlY3RzQXJlRXF1YWwoZWxlbWVudFJlY3RGb3JSb290TWFyZ2luLCBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKSkge1xuICAgICAgICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgZXZlbiB0aG91Z2ggdGhlIHJhdGlvIGlzIHJlcG9ydGVkIGFzIDEsIHRoZVxuICAgICAgICAvLyBlbGVtZW50IGlzIG5vdCBhY3R1YWxseSBmdWxseSB3aXRoaW4gdGhlIEludGVyc2VjdGlvbk9ic2VydmVyJ3Mgcm9vdFxuICAgICAgICAvLyBhcmVhIGFueW1vcmUuIFRoaXMgY2FuIGhhcHBlbiB1bmRlciBwZXJmb3JtYW5jZSBjb25zdHJhaW50cy4gVGhpcyBtYXlcbiAgICAgICAgLy8gYmUgYSBidWcgaW4gdGhlIGJyb3dzZXIncyBJbnRlcnNlY3Rpb25PYnNlcnZlciBpbXBsZW1lbnRhdGlvbi4gVG9cbiAgICAgICAgLy8gd29yayBhcm91bmQgdGhpcywgd2UgY29tcGFyZSB0aGUgZWxlbWVudCdzIGJvdW5kaW5nIHJlY3Qgbm93IHdpdGhcbiAgICAgICAgLy8gd2hhdCBpdCB3YXMgYXQgdGhlIHRpbWUgd2UgY3JlYXRlZCB0aGUgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuIElmIHRoZXlcbiAgICAgICAgLy8gYXJlIG5vdCBlcXVhbCB0aGVuIHRoZSBlbGVtZW50IG1vdmVkLCBzbyB3ZSByZWZyZXNoLlxuICAgICAgICByZWZyZXNoKCk7XG4gICAgICB9XG4gICAgICBpc0ZpcnN0VXBkYXRlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gT2xkZXIgYnJvd3NlcnMgZG9uJ3Qgc3VwcG9ydCBhIGBkb2N1bWVudGAgYXMgdGhlIHJvb3QgYW5kIHdpbGwgdGhyb3cgYW5cbiAgICAvLyBlcnJvci5cbiAgICB0cnkge1xuICAgICAgaW8gPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoaGFuZGxlT2JzZXJ2ZSwge1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAvLyBIYW5kbGUgPGlmcmFtZT5zXG4gICAgICAgIHJvb3Q6IHJvb3Qub3duZXJEb2N1bWVudFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaW8gPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoaGFuZGxlT2JzZXJ2ZSwgb3B0aW9ucyk7XG4gICAgfVxuICAgIGlvLm9ic2VydmUoZWxlbWVudCk7XG4gIH1cbiAgcmVmcmVzaCh0cnVlKTtcbiAgcmV0dXJuIGNsZWFudXA7XG59XG5cbi8qKlxuICogQXV0b21hdGljYWxseSB1cGRhdGVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCB3aGVuIG5lY2Vzc2FyeS5cbiAqIFNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aGVuIHRoZSBmbG9hdGluZyBlbGVtZW50IGlzIG1vdW50ZWQgb24gdGhlIERPTSBvclxuICogdmlzaWJsZSBvbiB0aGUgc2NyZWVuLlxuICogQHJldHVybnMgY2xlYW51cCBmdW5jdGlvbiB0aGF0IHNob3VsZCBiZSBpbnZva2VkIHdoZW4gdGhlIGZsb2F0aW5nIGVsZW1lbnQgaXNcbiAqIHJlbW92ZWQgZnJvbSB0aGUgRE9NIG9yIGhpZGRlbiBmcm9tIHRoZSBzY3JlZW4uXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXV0b1VwZGF0ZVxuICovXG5mdW5jdGlvbiBhdXRvVXBkYXRlKHJlZmVyZW5jZSwgZmxvYXRpbmcsIHVwZGF0ZSwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICBhbmNlc3RvclNjcm9sbCA9IHRydWUsXG4gICAgYW5jZXN0b3JSZXNpemUgPSB0cnVlLFxuICAgIGVsZW1lbnRSZXNpemUgPSB0eXBlb2YgUmVzaXplT2JzZXJ2ZXIgPT09ICdmdW5jdGlvbicsXG4gICAgbGF5b3V0U2hpZnQgPSB0eXBlb2YgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPT09ICdmdW5jdGlvbicsXG4gICAgYW5pbWF0aW9uRnJhbWUgPSBmYWxzZVxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgcmVmZXJlbmNlRWwgPSB1bndyYXBFbGVtZW50KHJlZmVyZW5jZSk7XG4gIGNvbnN0IGFuY2VzdG9ycyA9IGFuY2VzdG9yU2Nyb2xsIHx8IGFuY2VzdG9yUmVzaXplID8gWy4uLihyZWZlcmVuY2VFbCA/IGdldE92ZXJmbG93QW5jZXN0b3JzKHJlZmVyZW5jZUVsKSA6IFtdKSwgLi4uZ2V0T3ZlcmZsb3dBbmNlc3RvcnMoZmxvYXRpbmcpXSA6IFtdO1xuICBhbmNlc3RvcnMuZm9yRWFjaChhbmNlc3RvciA9PiB7XG4gICAgYW5jZXN0b3JTY3JvbGwgJiYgYW5jZXN0b3IuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdXBkYXRlLCB7XG4gICAgICBwYXNzaXZlOiB0cnVlXG4gICAgfSk7XG4gICAgYW5jZXN0b3JSZXNpemUgJiYgYW5jZXN0b3IuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdXBkYXRlKTtcbiAgfSk7XG4gIGNvbnN0IGNsZWFudXBJbyA9IHJlZmVyZW5jZUVsICYmIGxheW91dFNoaWZ0ID8gb2JzZXJ2ZU1vdmUocmVmZXJlbmNlRWwsIHVwZGF0ZSkgOiBudWxsO1xuICBsZXQgcmVvYnNlcnZlRnJhbWUgPSAtMTtcbiAgbGV0IHJlc2l6ZU9ic2VydmVyID0gbnVsbDtcbiAgaWYgKGVsZW1lbnRSZXNpemUpIHtcbiAgICByZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihfcmVmID0+IHtcbiAgICAgIGxldCBbZmlyc3RFbnRyeV0gPSBfcmVmO1xuICAgICAgaWYgKGZpcnN0RW50cnkgJiYgZmlyc3RFbnRyeS50YXJnZXQgPT09IHJlZmVyZW5jZUVsICYmIHJlc2l6ZU9ic2VydmVyKSB7XG4gICAgICAgIC8vIFByZXZlbnQgdXBkYXRlIGxvb3BzIHdoZW4gdXNpbmcgdGhlIGBzaXplYCBtaWRkbGV3YXJlLlxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmxvYXRpbmctdWkvZmxvYXRpbmctdWkvaXNzdWVzLzE3NDBcbiAgICAgICAgcmVzaXplT2JzZXJ2ZXIudW5vYnNlcnZlKGZsb2F0aW5nKTtcbiAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmVvYnNlcnZlRnJhbWUpO1xuICAgICAgICByZW9ic2VydmVGcmFtZSA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgdmFyIF9yZXNpemVPYnNlcnZlcjtcbiAgICAgICAgICAoX3Jlc2l6ZU9ic2VydmVyID0gcmVzaXplT2JzZXJ2ZXIpID09IG51bGwgfHwgX3Jlc2l6ZU9ic2VydmVyLm9ic2VydmUoZmxvYXRpbmcpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHVwZGF0ZSgpO1xuICAgIH0pO1xuICAgIGlmIChyZWZlcmVuY2VFbCAmJiAhYW5pbWF0aW9uRnJhbWUpIHtcbiAgICAgIHJlc2l6ZU9ic2VydmVyLm9ic2VydmUocmVmZXJlbmNlRWwpO1xuICAgIH1cbiAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKGZsb2F0aW5nKTtcbiAgfVxuICBsZXQgZnJhbWVJZDtcbiAgbGV0IHByZXZSZWZSZWN0ID0gYW5pbWF0aW9uRnJhbWUgPyBnZXRCb3VuZGluZ0NsaWVudFJlY3QocmVmZXJlbmNlKSA6IG51bGw7XG4gIGlmIChhbmltYXRpb25GcmFtZSkge1xuICAgIGZyYW1lTG9vcCgpO1xuICB9XG4gIGZ1bmN0aW9uIGZyYW1lTG9vcCgpIHtcbiAgICBjb25zdCBuZXh0UmVmUmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChyZWZlcmVuY2UpO1xuICAgIGlmIChwcmV2UmVmUmVjdCAmJiAhcmVjdHNBcmVFcXVhbChwcmV2UmVmUmVjdCwgbmV4dFJlZlJlY3QpKSB7XG4gICAgICB1cGRhdGUoKTtcbiAgICB9XG4gICAgcHJldlJlZlJlY3QgPSBuZXh0UmVmUmVjdDtcbiAgICBmcmFtZUlkID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZyYW1lTG9vcCk7XG4gIH1cbiAgdXBkYXRlKCk7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgdmFyIF9yZXNpemVPYnNlcnZlcjI7XG4gICAgYW5jZXN0b3JzLmZvckVhY2goYW5jZXN0b3IgPT4ge1xuICAgICAgYW5jZXN0b3JTY3JvbGwgJiYgYW5jZXN0b3IucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdXBkYXRlKTtcbiAgICAgIGFuY2VzdG9yUmVzaXplICYmIGFuY2VzdG9yLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHVwZGF0ZSk7XG4gICAgfSk7XG4gICAgY2xlYW51cElvID09IG51bGwgfHwgY2xlYW51cElvKCk7XG4gICAgKF9yZXNpemVPYnNlcnZlcjIgPSByZXNpemVPYnNlcnZlcikgPT0gbnVsbCB8fCBfcmVzaXplT2JzZXJ2ZXIyLmRpc2Nvbm5lY3QoKTtcbiAgICByZXNpemVPYnNlcnZlciA9IG51bGw7XG4gICAgaWYgKGFuaW1hdGlvbkZyYW1lKSB7XG4gICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShmcmFtZUlkKTtcbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgd2l0aCBhbiBvYmplY3Qgb2Ygb3ZlcmZsb3cgc2lkZSBvZmZzZXRzIHRoYXQgZGV0ZXJtaW5lIGhvdyBtdWNoIHRoZVxuICogZWxlbWVudCBpcyBvdmVyZmxvd2luZyBhIGdpdmVuIGNsaXBwaW5nIGJvdW5kYXJ5IG9uIGVhY2ggc2lkZS5cbiAqIC0gcG9zaXRpdmUgPSBvdmVyZmxvd2luZyB0aGUgYm91bmRhcnkgYnkgdGhhdCBudW1iZXIgb2YgcGl4ZWxzXG4gKiAtIG5lZ2F0aXZlID0gaG93IG1hbnkgcGl4ZWxzIGxlZnQgYmVmb3JlIGl0IHdpbGwgb3ZlcmZsb3dcbiAqIC0gMCA9IGxpZXMgZmx1c2ggd2l0aCB0aGUgYm91bmRhcnlcbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9kZXRlY3RPdmVyZmxvd1xuICovXG5jb25zdCBkZXRlY3RPdmVyZmxvdyA9IGRldGVjdE92ZXJmbG93JDE7XG5cbi8qKlxuICogTW9kaWZpZXMgdGhlIHBsYWNlbWVudCBieSB0cmFuc2xhdGluZyB0aGUgZmxvYXRpbmcgZWxlbWVudCBhbG9uZyB0aGVcbiAqIHNwZWNpZmllZCBheGVzLlxuICogQSBudW1iZXIgKHNob3J0aGFuZCBmb3IgYG1haW5BeGlzYCBvciBkaXN0YW5jZSksIG9yIGFuIGF4ZXMgY29uZmlndXJhdGlvblxuICogb2JqZWN0IG1heSBiZSBwYXNzZWQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvb2Zmc2V0XG4gKi9cbmNvbnN0IG9mZnNldCA9IG9mZnNldCQxO1xuXG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBjaG9vc2luZyB0aGUgcGxhY2VtZW50XG4gKiB0aGF0IGhhcyB0aGUgbW9zdCBzcGFjZSBhdmFpbGFibGUgYXV0b21hdGljYWxseSwgd2l0aG91dCBuZWVkaW5nIHRvIHNwZWNpZnkgYVxuICogcHJlZmVycmVkIHBsYWNlbWVudC4gQWx0ZXJuYXRpdmUgdG8gYGZsaXBgLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2F1dG9QbGFjZW1lbnRcbiAqL1xuY29uc3QgYXV0b1BsYWNlbWVudCA9IGF1dG9QbGFjZW1lbnQkMTtcblxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgc2hpZnRpbmcgaXQgaW4gb3JkZXIgdG9cbiAqIGtlZXAgaXQgaW4gdmlldyB3aGVuIGl0IHdpbGwgb3ZlcmZsb3cgdGhlIGNsaXBwaW5nIGJvdW5kYXJ5LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3NoaWZ0XG4gKi9cbmNvbnN0IHNoaWZ0ID0gc2hpZnQkMTtcblxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgZmxpcHBpbmcgdGhlIGBwbGFjZW1lbnRgXG4gKiBpbiBvcmRlciB0byBrZWVwIGl0IGluIHZpZXcgd2hlbiB0aGUgcHJlZmVycmVkIHBsYWNlbWVudChzKSB3aWxsIG92ZXJmbG93IHRoZVxuICogY2xpcHBpbmcgYm91bmRhcnkuIEFsdGVybmF0aXZlIHRvIGBhdXRvUGxhY2VtZW50YC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9mbGlwXG4gKi9cbmNvbnN0IGZsaXAgPSBmbGlwJDE7XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0aGF0IGFsbG93cyB5b3UgdG8gY2hhbmdlIHRoZSBzaXplIG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IOKAlFxuICogZm9yIGluc3RhbmNlLCBwcmV2ZW50IGl0IGZyb20gb3ZlcmZsb3dpbmcgdGhlIGNsaXBwaW5nIGJvdW5kYXJ5IG9yIG1hdGNoIHRoZVxuICogd2lkdGggb2YgdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3NpemVcbiAqL1xuY29uc3Qgc2l6ZSA9IHNpemUkMTtcblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRvIGhpZGUgdGhlIGZsb2F0aW5nIGVsZW1lbnQgaW4gYXBwbGljYWJsZSBzaXR1YXRpb25zLCBzdWNoIGFzXG4gKiB3aGVuIGl0IGlzIG5vdCBpbiB0aGUgc2FtZSBjbGlwcGluZyBjb250ZXh0IGFzIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9oaWRlXG4gKi9cbmNvbnN0IGhpZGUgPSBoaWRlJDE7XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBwb3NpdGlvbiBhbiBpbm5lciBlbGVtZW50IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IHNvIHRoYXQgaXRcbiAqIGFwcGVhcnMgY2VudGVyZWQgdG8gdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2Fycm93XG4gKi9cbmNvbnN0IGFycm93ID0gYXJyb3ckMTtcblxuLyoqXG4gKiBQcm92aWRlcyBpbXByb3ZlZCBwb3NpdGlvbmluZyBmb3IgaW5saW5lIHJlZmVyZW5jZSBlbGVtZW50cyB0aGF0IGNhbiBzcGFuXG4gKiBvdmVyIG11bHRpcGxlIGxpbmVzLCBzdWNoIGFzIGh5cGVybGlua3Mgb3IgcmFuZ2Ugc2VsZWN0aW9ucy5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9pbmxpbmVcbiAqL1xuY29uc3QgaW5saW5lID0gaW5saW5lJDE7XG5cbi8qKlxuICogQnVpbHQtaW4gYGxpbWl0ZXJgIHRoYXQgd2lsbCBzdG9wIGBzaGlmdCgpYCBhdCBhIGNlcnRhaW4gcG9pbnQuXG4gKi9cbmNvbnN0IGxpbWl0U2hpZnQgPSBsaW1pdFNoaWZ0JDE7XG5cbi8qKlxuICogQ29tcHV0ZXMgdGhlIGB4YCBhbmQgYHlgIGNvb3JkaW5hdGVzIHRoYXQgd2lsbCBwbGFjZSB0aGUgZmxvYXRpbmcgZWxlbWVudFxuICogbmV4dCB0byBhIGdpdmVuIHJlZmVyZW5jZSBlbGVtZW50LlxuICovXG5jb25zdCBjb21wdXRlUG9zaXRpb24gPSAocmVmZXJlbmNlLCBmbG9hdGluZywgb3B0aW9ucykgPT4ge1xuICAvLyBUaGlzIGNhY2hlcyB0aGUgZXhwZW5zaXZlIGBnZXRDbGlwcGluZ0VsZW1lbnRBbmNlc3RvcnNgIGZ1bmN0aW9uIHNvIHRoYXRcbiAgLy8gbXVsdGlwbGUgbGlmZWN5Y2xlIHJlc2V0cyByZS11c2UgdGhlIHNhbWUgcmVzdWx0LiBJdCBvbmx5IGxpdmVzIGZvciBhXG4gIC8vIHNpbmdsZSBjYWxsLiBJZiBvdGhlciBmdW5jdGlvbnMgYmVjb21lIGV4cGVuc2l2ZSwgd2UgY2FuIGFkZCB0aGVtIGFzIHdlbGwuXG4gIGNvbnN0IGNhY2hlID0gbmV3IE1hcCgpO1xuICBjb25zdCBtZXJnZWRPcHRpb25zID0ge1xuICAgIHBsYXRmb3JtLFxuICAgIC4uLm9wdGlvbnNcbiAgfTtcbiAgY29uc3QgcGxhdGZvcm1XaXRoQ2FjaGUgPSB7XG4gICAgLi4ubWVyZ2VkT3B0aW9ucy5wbGF0Zm9ybSxcbiAgICBfYzogY2FjaGVcbiAgfTtcbiAgcmV0dXJuIGNvbXB1dGVQb3NpdGlvbiQxKHJlZmVyZW5jZSwgZmxvYXRpbmcsIHtcbiAgICAuLi5tZXJnZWRPcHRpb25zLFxuICAgIHBsYXRmb3JtOiBwbGF0Zm9ybVdpdGhDYWNoZVxuICB9KTtcbn07XG5cbmV4cG9ydCB7IGFycm93LCBhdXRvUGxhY2VtZW50LCBhdXRvVXBkYXRlLCBjb21wdXRlUG9zaXRpb24sIGRldGVjdE92ZXJmbG93LCBmbGlwLCBoaWRlLCBpbmxpbmUsIGxpbWl0U2hpZnQsIG9mZnNldCwgcGxhdGZvcm0sIHNoaWZ0LCBzaXplIH07XG4iLCJpbXBvcnQgeyBhcnJvdyBhcyBhcnJvdyQxLCBjb21wdXRlUG9zaXRpb24gfSBmcm9tICdAZmxvYXRpbmctdWkvZG9tJztcbmV4cG9ydCB7IGF1dG9QbGFjZW1lbnQsIGF1dG9VcGRhdGUsIGNvbXB1dGVQb3NpdGlvbiwgZGV0ZWN0T3ZlcmZsb3csIGZsaXAsIGdldE92ZXJmbG93QW5jZXN0b3JzLCBoaWRlLCBpbmxpbmUsIGxpbWl0U2hpZnQsIG9mZnNldCwgcGxhdGZvcm0sIHNoaWZ0LCBzaXplIH0gZnJvbSAnQGZsb2F0aW5nLXVpL2RvbSc7XG5pbXBvcnQgeyBpc05vZGUsIGdldE5vZGVOYW1lIH0gZnJvbSAnQGZsb2F0aW5nLXVpL3V0aWxzL2RvbSc7XG5pbXBvcnQgeyB1bnJlZiwgY29tcHV0ZWQsIHJlZiwgc2hhbGxvd1JlZiwgd2F0Y2gsIGdldEN1cnJlbnRTY29wZSwgb25TY29wZURpc3Bvc2UsIHNoYWxsb3dSZWFkb25seSB9IGZyb20gJ3Z1ZS1kZW1pJztcblxuZnVuY3Rpb24gaXNDb21wb25lbnRQdWJsaWNJbnN0YW5jZSh0YXJnZXQpIHtcbiAgcmV0dXJuIHRhcmdldCAhPSBudWxsICYmIHR5cGVvZiB0YXJnZXQgPT09ICdvYmplY3QnICYmICckZWwnIGluIHRhcmdldDtcbn1cbmZ1bmN0aW9uIHVud3JhcEVsZW1lbnQodGFyZ2V0KSB7XG4gIGlmIChpc0NvbXBvbmVudFB1YmxpY0luc3RhbmNlKHRhcmdldCkpIHtcbiAgICBjb25zdCBlbGVtZW50ID0gdGFyZ2V0LiRlbDtcbiAgICByZXR1cm4gaXNOb2RlKGVsZW1lbnQpICYmIGdldE5vZGVOYW1lKGVsZW1lbnQpID09PSAnI2NvbW1lbnQnID8gbnVsbCA6IGVsZW1lbnQ7XG4gIH1cbiAgcmV0dXJuIHRhcmdldDtcbn1cblxuZnVuY3Rpb24gdG9WYWx1ZShzb3VyY2UpIHtcbiAgcmV0dXJuIHR5cGVvZiBzb3VyY2UgPT09ICdmdW5jdGlvbicgPyBzb3VyY2UoKSA6IHVucmVmKHNvdXJjZSk7XG59XG5cbi8qKlxuICogUG9zaXRpb25zIGFuIGlubmVyIGVsZW1lbnQgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgc3VjaCB0aGF0IGl0IGlzIGNlbnRlcmVkIHRvIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBwYXJhbSBvcHRpb25zIFRoZSBhcnJvdyBvcHRpb25zLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2Fycm93XG4gKi9cbmZ1bmN0aW9uIGFycm93KG9wdGlvbnMpIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnYXJyb3cnLFxuICAgIG9wdGlvbnMsXG4gICAgZm4oYXJncykge1xuICAgICAgY29uc3QgZWxlbWVudCA9IHVud3JhcEVsZW1lbnQodG9WYWx1ZShvcHRpb25zLmVsZW1lbnQpKTtcbiAgICAgIGlmIChlbGVtZW50ID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFycm93JDEoe1xuICAgICAgICBlbGVtZW50LFxuICAgICAgICBwYWRkaW5nOiBvcHRpb25zLnBhZGRpbmdcbiAgICAgIH0pLmZuKGFyZ3MpO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0RFBSKGVsZW1lbnQpIHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgY29uc3Qgd2luID0gZWxlbWVudC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3IHx8IHdpbmRvdztcbiAgcmV0dXJuIHdpbi5kZXZpY2VQaXhlbFJhdGlvIHx8IDE7XG59XG5cbmZ1bmN0aW9uIHJvdW5kQnlEUFIoZWxlbWVudCwgdmFsdWUpIHtcbiAgY29uc3QgZHByID0gZ2V0RFBSKGVsZW1lbnQpO1xuICByZXR1cm4gTWF0aC5yb3VuZCh2YWx1ZSAqIGRwcikgLyBkcHI7XG59XG5cbi8qKlxuICogQ29tcHV0ZXMgdGhlIGB4YCBhbmQgYHlgIGNvb3JkaW5hdGVzIHRoYXQgd2lsbCBwbGFjZSB0aGUgZmxvYXRpbmcgZWxlbWVudCBuZXh0IHRvIGEgcmVmZXJlbmNlIGVsZW1lbnQgd2hlbiBpdCBpcyBnaXZlbiBhIGNlcnRhaW4gQ1NTIHBvc2l0aW9uaW5nIHN0cmF0ZWd5LlxuICogQHBhcmFtIHJlZmVyZW5jZSBUaGUgcmVmZXJlbmNlIHRlbXBsYXRlIHJlZi5cbiAqIEBwYXJhbSBmbG9hdGluZyBUaGUgZmxvYXRpbmcgdGVtcGxhdGUgcmVmLlxuICogQHBhcmFtIG9wdGlvbnMgVGhlIGZsb2F0aW5nIG9wdGlvbnMuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvdnVlXG4gKi9cbmZ1bmN0aW9uIHVzZUZsb2F0aW5nKHJlZmVyZW5jZSwgZmxvYXRpbmcsIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICBjb25zdCB3aGlsZUVsZW1lbnRzTW91bnRlZE9wdGlvbiA9IG9wdGlvbnMud2hpbGVFbGVtZW50c01vdW50ZWQ7XG4gIGNvbnN0IG9wZW5PcHRpb24gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgdmFyIF90b1ZhbHVlO1xuICAgIHJldHVybiAoX3RvVmFsdWUgPSB0b1ZhbHVlKG9wdGlvbnMub3BlbikpICE9IG51bGwgPyBfdG9WYWx1ZSA6IHRydWU7XG4gIH0pO1xuICBjb25zdCBtaWRkbGV3YXJlT3B0aW9uID0gY29tcHV0ZWQoKCkgPT4gdG9WYWx1ZShvcHRpb25zLm1pZGRsZXdhcmUpKTtcbiAgY29uc3QgcGxhY2VtZW50T3B0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHZhciBfdG9WYWx1ZTI7XG4gICAgcmV0dXJuIChfdG9WYWx1ZTIgPSB0b1ZhbHVlKG9wdGlvbnMucGxhY2VtZW50KSkgIT0gbnVsbCA/IF90b1ZhbHVlMiA6ICdib3R0b20nO1xuICB9KTtcbiAgY29uc3Qgc3RyYXRlZ3lPcHRpb24gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgdmFyIF90b1ZhbHVlMztcbiAgICByZXR1cm4gKF90b1ZhbHVlMyA9IHRvVmFsdWUob3B0aW9ucy5zdHJhdGVneSkpICE9IG51bGwgPyBfdG9WYWx1ZTMgOiAnYWJzb2x1dGUnO1xuICB9KTtcbiAgY29uc3QgdHJhbnNmb3JtT3B0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHZhciBfdG9WYWx1ZTQ7XG4gICAgcmV0dXJuIChfdG9WYWx1ZTQgPSB0b1ZhbHVlKG9wdGlvbnMudHJhbnNmb3JtKSkgIT0gbnVsbCA/IF90b1ZhbHVlNCA6IHRydWU7XG4gIH0pO1xuICBjb25zdCByZWZlcmVuY2VFbGVtZW50ID0gY29tcHV0ZWQoKCkgPT4gdW53cmFwRWxlbWVudChyZWZlcmVuY2UudmFsdWUpKTtcbiAgY29uc3QgZmxvYXRpbmdFbGVtZW50ID0gY29tcHV0ZWQoKCkgPT4gdW53cmFwRWxlbWVudChmbG9hdGluZy52YWx1ZSkpO1xuICBjb25zdCB4ID0gcmVmKDApO1xuICBjb25zdCB5ID0gcmVmKDApO1xuICBjb25zdCBzdHJhdGVneSA9IHJlZihzdHJhdGVneU9wdGlvbi52YWx1ZSk7XG4gIGNvbnN0IHBsYWNlbWVudCA9IHJlZihwbGFjZW1lbnRPcHRpb24udmFsdWUpO1xuICBjb25zdCBtaWRkbGV3YXJlRGF0YSA9IHNoYWxsb3dSZWYoe30pO1xuICBjb25zdCBpc1Bvc2l0aW9uZWQgPSByZWYoZmFsc2UpO1xuICBjb25zdCBmbG9hdGluZ1N0eWxlcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBpbml0aWFsU3R5bGVzID0ge1xuICAgICAgcG9zaXRpb246IHN0cmF0ZWd5LnZhbHVlLFxuICAgICAgbGVmdDogJzAnLFxuICAgICAgdG9wOiAnMCdcbiAgICB9O1xuICAgIGlmICghZmxvYXRpbmdFbGVtZW50LnZhbHVlKSB7XG4gICAgICByZXR1cm4gaW5pdGlhbFN0eWxlcztcbiAgICB9XG4gICAgY29uc3QgeFZhbCA9IHJvdW5kQnlEUFIoZmxvYXRpbmdFbGVtZW50LnZhbHVlLCB4LnZhbHVlKTtcbiAgICBjb25zdCB5VmFsID0gcm91bmRCeURQUihmbG9hdGluZ0VsZW1lbnQudmFsdWUsIHkudmFsdWUpO1xuICAgIGlmICh0cmFuc2Zvcm1PcHRpb24udmFsdWUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmluaXRpYWxTdHlsZXMsXG4gICAgICAgIHRyYW5zZm9ybTogXCJ0cmFuc2xhdGUoXCIgKyB4VmFsICsgXCJweCwgXCIgKyB5VmFsICsgXCJweClcIixcbiAgICAgICAgLi4uKGdldERQUihmbG9hdGluZ0VsZW1lbnQudmFsdWUpID49IDEuNSAmJiB7XG4gICAgICAgICAgd2lsbENoYW5nZTogJ3RyYW5zZm9ybSdcbiAgICAgICAgfSlcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBwb3NpdGlvbjogc3RyYXRlZ3kudmFsdWUsXG4gICAgICBsZWZ0OiB4VmFsICsgXCJweFwiLFxuICAgICAgdG9wOiB5VmFsICsgXCJweFwiXG4gICAgfTtcbiAgfSk7XG4gIGxldCB3aGlsZUVsZW1lbnRzTW91bnRlZENsZWFudXA7XG4gIGZ1bmN0aW9uIHVwZGF0ZSgpIHtcbiAgICBpZiAocmVmZXJlbmNlRWxlbWVudC52YWx1ZSA9PSBudWxsIHx8IGZsb2F0aW5nRWxlbWVudC52YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG9wZW4gPSBvcGVuT3B0aW9uLnZhbHVlO1xuICAgIGNvbXB1dGVQb3NpdGlvbihyZWZlcmVuY2VFbGVtZW50LnZhbHVlLCBmbG9hdGluZ0VsZW1lbnQudmFsdWUsIHtcbiAgICAgIG1pZGRsZXdhcmU6IG1pZGRsZXdhcmVPcHRpb24udmFsdWUsXG4gICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudE9wdGlvbi52YWx1ZSxcbiAgICAgIHN0cmF0ZWd5OiBzdHJhdGVneU9wdGlvbi52YWx1ZVxuICAgIH0pLnRoZW4ocG9zaXRpb24gPT4ge1xuICAgICAgeC52YWx1ZSA9IHBvc2l0aW9uLng7XG4gICAgICB5LnZhbHVlID0gcG9zaXRpb24ueTtcbiAgICAgIHN0cmF0ZWd5LnZhbHVlID0gcG9zaXRpb24uc3RyYXRlZ3k7XG4gICAgICBwbGFjZW1lbnQudmFsdWUgPSBwb3NpdGlvbi5wbGFjZW1lbnQ7XG4gICAgICBtaWRkbGV3YXJlRGF0YS52YWx1ZSA9IHBvc2l0aW9uLm1pZGRsZXdhcmVEYXRhO1xuICAgICAgLyoqXG4gICAgICAgKiBUaGUgZmxvYXRpbmcgZWxlbWVudCdzIHBvc2l0aW9uIG1heSBiZSByZWNvbXB1dGVkIHdoaWxlIGl0J3MgY2xvc2VkXG4gICAgICAgKiBidXQgc3RpbGwgbW91bnRlZCAoc3VjaCBhcyB3aGVuIHRyYW5zaXRpb25pbmcgb3V0KS4gVG8gZW5zdXJlXG4gICAgICAgKiBgaXNQb3NpdGlvbmVkYCB3aWxsIGJlIGBmYWxzZWAgaW5pdGlhbGx5IG9uIHRoZSBuZXh0IG9wZW4sIGF2b2lkXG4gICAgICAgKiBzZXR0aW5nIGl0IHRvIGB0cnVlYCB3aGVuIGBvcGVuID09PSBmYWxzZWAgKG11c3QgYmUgc3BlY2lmaWVkKS5cbiAgICAgICAqL1xuICAgICAgaXNQb3NpdGlvbmVkLnZhbHVlID0gb3BlbiAhPT0gZmFsc2U7XG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24gY2xlYW51cCgpIHtcbiAgICBpZiAodHlwZW9mIHdoaWxlRWxlbWVudHNNb3VudGVkQ2xlYW51cCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgd2hpbGVFbGVtZW50c01vdW50ZWRDbGVhbnVwKCk7XG4gICAgICB3aGlsZUVsZW1lbnRzTW91bnRlZENsZWFudXAgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIGF0dGFjaCgpIHtcbiAgICBjbGVhbnVwKCk7XG4gICAgaWYgKHdoaWxlRWxlbWVudHNNb3VudGVkT3B0aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHVwZGF0ZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAocmVmZXJlbmNlRWxlbWVudC52YWx1ZSAhPSBudWxsICYmIGZsb2F0aW5nRWxlbWVudC52YWx1ZSAhPSBudWxsKSB7XG4gICAgICB3aGlsZUVsZW1lbnRzTW91bnRlZENsZWFudXAgPSB3aGlsZUVsZW1lbnRzTW91bnRlZE9wdGlvbihyZWZlcmVuY2VFbGVtZW50LnZhbHVlLCBmbG9hdGluZ0VsZW1lbnQudmFsdWUsIHVwZGF0ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIHJlc2V0KCkge1xuICAgIGlmICghb3Blbk9wdGlvbi52YWx1ZSkge1xuICAgICAgaXNQb3NpdGlvbmVkLnZhbHVlID0gZmFsc2U7XG4gICAgfVxuICB9XG4gIHdhdGNoKFttaWRkbGV3YXJlT3B0aW9uLCBwbGFjZW1lbnRPcHRpb24sIHN0cmF0ZWd5T3B0aW9uLCBvcGVuT3B0aW9uXSwgdXBkYXRlLCB7XG4gICAgZmx1c2g6ICdzeW5jJ1xuICB9KTtcbiAgd2F0Y2goW3JlZmVyZW5jZUVsZW1lbnQsIGZsb2F0aW5nRWxlbWVudF0sIGF0dGFjaCwge1xuICAgIGZsdXNoOiAnc3luYydcbiAgfSk7XG4gIHdhdGNoKG9wZW5PcHRpb24sIHJlc2V0LCB7XG4gICAgZmx1c2g6ICdzeW5jJ1xuICB9KTtcbiAgaWYgKGdldEN1cnJlbnRTY29wZSgpKSB7XG4gICAgb25TY29wZURpc3Bvc2UoY2xlYW51cCk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB4OiBzaGFsbG93UmVhZG9ubHkoeCksXG4gICAgeTogc2hhbGxvd1JlYWRvbmx5KHkpLFxuICAgIHN0cmF0ZWd5OiBzaGFsbG93UmVhZG9ubHkoc3RyYXRlZ3kpLFxuICAgIHBsYWNlbWVudDogc2hhbGxvd1JlYWRvbmx5KHBsYWNlbWVudCksXG4gICAgbWlkZGxld2FyZURhdGE6IHNoYWxsb3dSZWFkb25seShtaWRkbGV3YXJlRGF0YSksXG4gICAgaXNQb3NpdGlvbmVkOiBzaGFsbG93UmVhZG9ubHkoaXNQb3NpdGlvbmVkKSxcbiAgICBmbG9hdGluZ1N0eWxlcyxcbiAgICB1cGRhdGVcbiAgfTtcbn1cblxuZXhwb3J0IHsgYXJyb3csIHVzZUZsb2F0aW5nIH07XG4iLCJleHBvcnQgY29uc3QgaXNDbGlja091dHNpZGUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQsIGVsZW1lbnRzOiBIVE1MRWxlbWVudCB8IEhUTUxFbGVtZW50W10pOiBib29sZWFuID0+IHtcbiAgY29uc3QgdGFyZ2V0cyA9IEFycmF5LmlzQXJyYXkoZWxlbWVudHMpID8gZWxlbWVudHMgOiBbZWxlbWVudHNdO1xuICByZXR1cm4gIXRhcmdldHMuc29tZSgoZWwpID0+IGVsLmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKSk7XG59O1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgYXV0b1BsYWNlbWVudCwgYXV0b1VwZGF0ZSwgb2Zmc2V0IGFzIG9mZnNldE1pZGRsZXdhcmUsIHNoaWZ0LCB1c2VGbG9hdGluZyB9IGZyb20gJ0BmbG9hdGluZy11aS92dWUnO1xuICBpbXBvcnQgeyBjb21wdXRlZCwgb25CZWZvcmVNb3VudCwgb25Nb3VudGVkLCBvblVubW91bnRlZCwgcmVmLCB3YXRjaCwgd2F0Y2hFZmZlY3QgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgaXNDbGlja091dHNpZGUgfSBmcm9tICdAL3V0aWxpdGllcy9ldmVudCc7XG4gIGltcG9ydCB7IFRPUF9MQVlFUl9JRCwgaW5pdEZhdXhUb3BMYXllciB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZpZXdwb3J0JztcblxuICBpbXBvcnQgdHlwZSB7IFJlZiB9IGZyb20gJ3Z1ZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBhbmNob3JJZDogc3RyaW5nO1xuICAgIG9mZnNldD86IG51bWJlcjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIG9mZnNldDogMTYsXG4gIH0pO1xuXG4gIGNvbnN0IGFuY2hvcjogUmVmPEhUTUxFbGVtZW50IHwgbnVsbD4gPSByZWYobnVsbCk7XG4gIGNvbnN0IGZsb2F0aW5nOiBSZWY8SFRNTEVsZW1lbnQgfCBudWxsPiA9IHJlZihudWxsKTtcbiAgY29uc3Qgcm9vdDogUmVmPEhUTUxFbGVtZW50IHwgbnVsbD4gPSByZWYobnVsbCk7XG4gIGNvbnN0IGlzSG92ZXJlZCA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IGlzVG9nZ2xlZE9wZW4gPSByZWYoZmFsc2UpO1xuICBjb25zdCBtaWRkbGV3YXJlID0gcmVmKFthdXRvUGxhY2VtZW50KCksIG9mZnNldE1pZGRsZXdhcmUoeyBtYWluQXhpczogcHJvcHMub2Zmc2V0IH0pLCBzaGlmdCh7IHBhZGRpbmc6IDE2IH0pXSk7XG5cbiAgY29uc3QgaXNTaG93UG9wb3ZlciA9IGNvbXB1dGVkKCgpID0+IGlzSG92ZXJlZC52YWx1ZSB8fCBpc1RvZ2dsZWRPcGVuLnZhbHVlKTtcblxuICBjb25zdCB7IGZsb2F0aW5nU3R5bGVzIH0gPSB1c2VGbG9hdGluZyhhbmNob3IsIGZsb2F0aW5nLCB7XG4gICAgbWlkZGxld2FyZSxcbiAgICBzdHJhdGVneTogJ2ZpeGVkJyxcbiAgICB3aGlsZUVsZW1lbnRzTW91bnRlZDogYXV0b1VwZGF0ZSxcbiAgfSk7XG5cbiAgY29uc3QgaGFuZGxlUGVybWFuZW50T3BlbkJvZHlDbGljayA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgaWYgKCFhbmNob3IudmFsdWUgfHwgIWZsb2F0aW5nLnZhbHVlKSByZXR1cm47XG4gICAgaWYgKGlzQ2xpY2tPdXRzaWRlKGUsIFthbmNob3IudmFsdWUsIGZsb2F0aW5nLnZhbHVlXSkpIHtcbiAgICAgIGlzVG9nZ2xlZE9wZW4udmFsdWUgPSBmYWxzZTtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZU92ZXIgPSAoKSA9PiB7XG4gICAgaXNIb3ZlcmVkLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVBbmNob3JFbGVtZW50TW91c2VMZWF2ZSA9ICgpID0+IHtcbiAgICBpc0hvdmVyZWQudmFsdWUgPSBmYWxzZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVBbmNob3JFbGVtZW50Q2xpY2sgPSAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAoaXNUb2dnbGVkT3Blbi52YWx1ZSkge1xuICAgICAgaXNUb2dnbGVkT3Blbi52YWx1ZSA9IGZhbHNlO1xuICAgICAgaXNIb3ZlcmVkLnZhbHVlID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlzVG9nZ2xlZE9wZW4udmFsdWUgPSB0cnVlO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBhZGRMaXN0ZW5lcnNUb0FuY2hvckVsZW1lbnQgPSAoKSA9PiB7XG4gICAgaWYgKCFhbmNob3IudmFsdWUpIHJldHVybiBudWxsO1xuICAgIGFuY2hvci52YWx1ZS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW92ZXInLCBoYW5kbGVBbmNob3JFbGVtZW50TW91c2VPdmVyKTtcbiAgICBhbmNob3IudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIGhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZUxlYXZlKTtcbiAgICBhbmNob3IudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVBbmNob3JFbGVtZW50Q2xpY2spO1xuICB9O1xuXG4gIGNvbnN0IHJlbW92ZUxpc3RlbmVyc0Zyb21BbmNob3JFbGVtZW50ID0gKCkgPT4ge1xuICAgIGlmICghYW5jaG9yLnZhbHVlKSByZXR1cm4gbnVsbDtcbiAgICBhbmNob3IudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2VvdmVyJywgaGFuZGxlQW5jaG9yRWxlbWVudE1vdXNlT3Zlcik7XG4gICAgYW5jaG9yLnZhbHVlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCBoYW5kbGVBbmNob3JFbGVtZW50TW91c2VMZWF2ZSk7XG4gICAgYW5jaG9yLnZhbHVlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQW5jaG9yRWxlbWVudENsaWNrKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUtleWRvd24gPSAoZTogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgIGlmIChlLmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgIGlzVG9nZ2xlZE9wZW4udmFsdWUgPSBmYWxzZTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgYWRkT3Blbkxpc3RlbmVyc1RvUm9vdCA9ICgpID0+IHtcbiAgICBpZiAoIXJvb3QudmFsdWUpIHJldHVybjtcbiAgICByb290LnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlUGVybWFuZW50T3BlbkJvZHlDbGljaywgdHJ1ZSk7XG4gICAgcm9vdC52YWx1ZS5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgaGFuZGxlUGVybWFuZW50T3BlbkJvZHlLZXlkb3duKTtcbiAgfTtcblxuICBjb25zdCByZW1vdmVPcGVuTGlzdGVuZXJzRnJvbVJvb3QgPSAoKSA9PiB7XG4gICAgaWYgKCFyb290LnZhbHVlKSByZXR1cm47XG4gICAgcm9vdC52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZVBlcm1hbmVudE9wZW5Cb2R5Q2xpY2ssIHRydWUpO1xuICAgIHJvb3QudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGhhbmRsZVBlcm1hbmVudE9wZW5Cb2R5S2V5ZG93bik7XG4gIH07XG5cbiAgY29uc3QgdXBkYXRlQW5jaG9yRWxlbWVudCA9ICgpID0+IHtcbiAgICBhbmNob3IudmFsdWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChwcm9wcy5hbmNob3JJZCk7XG4gIH07XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gaXNUb2dnbGVkT3Blbi52YWx1ZSxcbiAgICAobmV3VmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSkge1xuICAgICAgICBhZGRPcGVuTGlzdGVuZXJzVG9Sb290KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZW1vdmVPcGVuTGlzdGVuZXJzRnJvbVJvb3QoKTtcbiAgICAgIH1cbiAgICB9XG4gICk7XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMuYW5jaG9ySWQsXG4gICAgKCkgPT4ge1xuICAgICAgcmVtb3ZlTGlzdGVuZXJzRnJvbUFuY2hvckVsZW1lbnQoKTtcbiAgICAgIHVwZGF0ZUFuY2hvckVsZW1lbnQoKTtcbiAgICAgIGFkZExpc3RlbmVyc1RvQW5jaG9yRWxlbWVudCgpO1xuICAgIH1cbiAgKTtcblxuICB3YXRjaEVmZmVjdCgoKSA9PiB7XG4gICAgbWlkZGxld2FyZS52YWx1ZSA9IFthdXRvUGxhY2VtZW50KCksIG9mZnNldE1pZGRsZXdhcmUoeyBtYWluQXhpczogcHJvcHMub2Zmc2V0IH0pLCBzaGlmdCh7IHBhZGRpbmc6IDE2IH0pXTtcbiAgfSk7XG5cbiAgb25CZWZvcmVNb3VudCgoKSA9PiB7XG4gICAgaW5pdEZhdXhUb3BMYXllcigpO1xuICB9KTtcblxuICBvbk1vdW50ZWQoKCkgPT4ge1xuICAgIHVwZGF0ZUFuY2hvckVsZW1lbnQoKTtcbiAgICByb290LnZhbHVlID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICAgIGFkZExpc3RlbmVyc1RvQW5jaG9yRWxlbWVudCgpO1xuICB9KTtcblxuICBvblVubW91bnRlZCgoKSA9PiB7XG4gICAgcmVtb3ZlTGlzdGVuZXJzRnJvbUFuY2hvckVsZW1lbnQoKTtcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8VGVsZXBvcnQgOnRvPVwiYCMke1RPUF9MQVlFUl9JRH1gXCI+XG4gICAgPFRyYW5zaXRpb24+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1wb3BvdmVyJyxcbiAgICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICAgIENTUy5CT1JERVIuQ09MT1IuTE9XLFxuICAgICAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMixcbiAgICAgICAgICBDU1MuUEFERElORy5GVUxMLk9ORSxcbiAgICAgICAgICBDU1MuU0hBRE9XLkJPVFRPTSxcbiAgICAgICAgXVwiXG4gICAgICAgIHJlZj1cImZsb2F0aW5nXCJcbiAgICAgICAgOnN0eWxlPVwieyAuLi5mbG9hdGluZ1N0eWxlcyB9XCJcbiAgICAgICAgdi1zaG93PVwiaXNTaG93UG9wb3ZlclwiXG4gICAgICA+XG4gICAgICAgIDxzbG90IC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L1RyYW5zaXRpb24+XG4gIDwvVGVsZXBvcnQ+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1wb3BvdmVyIHtcbiAgICBtYXgtd2lkdGg6IDI1NnB4O1xuICB9XG4gIC52LWVudGVyLWZyb20sXG4gIC52LWxlYXZlLXRvIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG4gIC52LWVudGVyLWFjdGl2ZSxcbiAgLnYtbGVhdmUtYWN0aXZlIHtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cbiAgLnYtZW50ZXItdG8sXG4gIC52LWxlYXZlLWZyb20ge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRBUkdFVCB9IGZyb20gJ0AvdHlwZXMvVGFyZ2V0JztcblxuICBpbXBvcnQgdHlwZSB7IExpbmsgfSBmcm9tICdAL3R5cGVzL0xpbmsnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaGVhZGluZz86IHN0cmluZztcbiAgICBsaW5rczogTGlua1tdO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgaGVhZGluZzogJycsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPHNlY3Rpb24gY2xhc3M9XCJ0aWRlLXNlby1saW5rc1wiPlxuICAgIDxoMiA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5CT1RUT00uSEFMRl1cIj5cbiAgICAgIHt7IHByb3BzLmhlYWRpbmcgfX1cbiAgICA8L2gyPlxuXG4gICAgPHVsIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5XUkFQLCBDU1MuR0FQLlRXTywgQ1NTLkxJU1RfQlVMTEVUUy5PRkZdXCI+XG4gICAgICA8bGlcbiAgICAgICAgOmNsYXNzPVwiWyd0aWRlLXNlby1saW5rJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuRk9OVC5ST0xFLkJPRFlfMl1cIlxuICAgICAgICA6a2V5PVwibGluay5sYWJlbFwiXG4gICAgICAgIHYtZm9yPVwibGluayBpbiBwcm9wcy5saW5rc1wiXG4gICAgICA+XG4gICAgICAgIDxhXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5VTkRFUkxJTkUuUkVTVC5PRkZdXCJcbiAgICAgICAgICA6aHJlZj1cImxpbmsudXJsXCJcbiAgICAgICAgICA6dGFyZ2V0PVwibGluay5pc05ld1RhYiA/IFRBUkdFVC5CTEFOSyA6IFRBUkdFVC5TRUxGXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGxpbmsubGFiZWwgfX1cbiAgICAgICAgPC9hPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICA8L3NlY3Rpb24+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAvKiBUT0RPOiBSZWZhY3RvciB0byBhY2NlcHQgYnJlYWtwb2ludCBwcm9wIGluIG9yZGVyIHRvIGFjY29tcGxpc2ggdGhpcyB3aXRoIG5laXRoZXIgY3VzdG9tIGJyZWFrcG9pbnRzIG5vciBkZXBlbmRlbmN5IG9uIFZpZXdwb3J0U3RvcmUuICovXG4gIC50aWRlLXNlby1saW5rIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gIEBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAgIC50aWRlLXNlby1saW5rIHtcbiAgICAgIHdpZHRoOiBjYWxjKCgxMDAlIC0gMnJlbSkgLyAyKTtcbiAgICB9XG4gIH1cblxuICBAbWVkaWEgKG1pbi13aWR0aDogMTIzMnB4KSB7XG4gICAgLnRpZGUtc2VvLWxpbmsge1xuICAgICAgd2lkdGg6IGNhbGMoKDEwMCUgLSA2cmVtKSAvIDQpO1xuICAgIH1cbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IG9uQmVmb3JlTW91bnQsIG9uTW91bnRlZCwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVCdXR0b25JY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQnV0dG9uSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBUT1BfTEFZRVJfSUQsIGluaXRGYXV4VG9wTGF5ZXIsIHNldFNjcm9sbExvY2sgfSBmcm9tICdAL3V0aWxpdGllcy92aWV3cG9ydCc7XG5cbiAgaW1wb3J0IFRpZGVEaXZpZGVyIGZyb20gJy4vVGlkZURpdmlkZXIudnVlJztcblxuICBpbXBvcnQgdHlwZSB7IFJlZiB9IGZyb20gJ3Z1ZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBpc09wZW46IGJvb2xlYW47XG4gICAgaXNCYWNrQnV0dG9uPzogYm9vbGVhbjtcbiAgfTtcbiAgY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wczxQcm9wcz4oKTtcblxuICB0eXBlIEVtaXRzID0ge1xuICAgIChlOiAnYmFjaycpOiB2b2lkO1xuICAgIChlOiAnY2xvc2UnKTogdm9pZDtcbiAgfTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8RW1pdHM+KCk7XG5cbiAgY29uc3QgZGlhbG9nRWxlbWVudDogUmVmPEhUTUxEaWFsb2dFbGVtZW50IHwgbnVsbD4gPSByZWYobnVsbCk7XG5cbiAgY29uc3QgdHJpZ2dlck5hdGl2ZURpYWxvZ09wZW4gPSAoKSA9PiB7XG4gICAgZGlhbG9nRWxlbWVudC52YWx1ZT8uc2hvd01vZGFsKCk7XG4gIH07XG5cbiAgY29uc3QgdHJpZ2dlck5hdGl2ZURpYWxvZ0Nsb3NlID0gKCkgPT4ge1xuICAgIGRpYWxvZ0VsZW1lbnQudmFsdWU/LmNsb3NlKCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQmFja2Ryb3BDbGljayA9ICgpID0+IHtcbiAgICBlbWl0KCdjbG9zZScpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUVzY2FwZUtleWRvd24gPSAoZTogRXZlbnQpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgZW1pdCgnY2xvc2UnKTtcbiAgfTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy5pc09wZW4sXG4gICAgKG5ld1ZhbHVlKSA9PiB7XG4gICAgICBpZiAoIWRpYWxvZ0VsZW1lbnQudmFsdWUpIHJldHVybjtcbiAgICAgIGlmIChuZXdWYWx1ZSkge1xuICAgICAgICB0cmlnZ2VyTmF0aXZlRGlhbG9nT3BlbigpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ0Nsb3NlKCk7XG4gICAgICB9XG4gICAgICBzZXRTY3JvbGxMb2NrKG5ld1ZhbHVlKTtcbiAgICB9XG4gICk7XG5cbiAgb25CZWZvcmVNb3VudCgoKSA9PiB7XG4gICAgaW5pdEZhdXhUb3BMYXllcigpO1xuICB9KTtcblxuICBvbk1vdW50ZWQoKCkgPT4ge1xuICAgIGlmIChwcm9wcy5pc09wZW4pIHtcbiAgICAgIHRyaWdnZXJOYXRpdmVEaWFsb2dPcGVuKCk7XG4gICAgfVxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxUZWxlcG9ydCA6dG89XCJgIyR7VE9QX0xBWUVSX0lEfWBcIj5cbiAgICA8ZGlhbG9nXG4gICAgICA6Y2xhc3M9XCJbJ3RpZGUtc2hlZXQnLCBDU1MuQkcuSU5JVElBTCwgQ1NTLkhFSUdIVC5GVUxMLCBDU1MuV0lEVEguRlVMTCwgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTl1cIlxuICAgICAgcmVmPVwiZGlhbG9nRWxlbWVudFwiXG4gICAgICBAY2xpY2suc2VsZj1cImhhbmRsZUJhY2tkcm9wQ2xpY2tcIlxuICAgICAgQGNsb3NlLnByZXZlbnRcbiAgICAgIEBrZXlkb3duLmVzY2FwZT1cImhhbmRsZUVzY2FwZUtleWRvd25cIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLXNoZWV0LWJvZHknLFxuICAgICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgICAgIENTUy5IRUlHSFQuRlVMTCxcbiAgICAgICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICBdXCJcbiAgICAgID5cbiAgICAgICAgPGhlYWRlclxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgICAgICBDU1MuSVNPTEFUSU9OLklTT0xBVEUsXG4gICAgICAgICAgICBDU1MuUEFERElORy5UT1AuT05FLFxuICAgICAgICAgICAgQ1NTLlBBRERJTkcuWC5PTkUsXG4gICAgICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgICAgICBDU1MuWl9JTkRFWC5PTkUsXG4gICAgICAgICAgXVwiXG4gICAgICAgID5cbiAgICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5HUk9XLk9GRiwgQ1NTLkZMRVguU0hSSU5LLk9GRl1cIlxuICAgICAgICAgICAgOmljb249XCJJQ09OLkNIRVZST05fTEVGVFwiXG4gICAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgICAgIEBjbGljaz1cImVtaXQoJ2JhY2snKVwiXG4gICAgICAgICAgICB2LWlmPVwiaXNCYWNrQnV0dG9uXCJcbiAgICAgICAgICAvPlxuXG4gICAgICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZMRVguR1JPVy5PRkYsIENTUy5GTEVYLlNIUklOSy5PRkYsIENTUy5NQVJHSU4uTEVGVC5BVVRPXVwiXG4gICAgICAgICAgICA6aWNvbj1cIklDT04uQ0xPU0VcIlxuICAgICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgICAgICBAY2xpY2s9XCJlbWl0KCdjbG9zZScpXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2hlYWRlcj5cblxuICAgICAgICA8VGlkZURpdmlkZXIgLz5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgJ3RpZGUtc2hlZXQtY29udGVudCcsXG4gICAgICAgICAgICBDU1MuRElTUExBWS5HUklELFxuICAgICAgICAgICAgQ1NTLk9WRVJGTE9XLlkuQVVUTyxcbiAgICAgICAgICAgIENTUy5PVkVSRkxPVy5YLkhJRERFTixcbiAgICAgICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICAgICAgQ1NTLlBBRERJTkcuQk9UVE9NLk9ORSxcbiAgICAgICAgICAgIENTUy5JU09MQVRJT04uSVNPTEFURSxcbiAgICAgICAgICBdXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzbG90IC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaWFsb2c+XG4gIDwvVGVsZXBvcnQ+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1zaGVldCB7XG4gICAgLS1zaGVldC1wYWRkaW5nLXg6IHZhcigtLXRpZGUtc3BhY2luZy0xKTtcbiAgICBtYXgtd2lkdGg6IHVuc2V0O1xuICAgIG1heC1oZWlnaHQ6IHVuc2V0O1xuICAgIGp1c3RpZnktaXRlbXM6IHJpZ2h0O1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpZGUtYW5pbWF0ZSkgYWxsb3ctZGlzY3JldGU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xuICB9XG5cbiAgLnRpZGUtc2hlZXRbb3Blbl0ge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKTtcbiAgfVxuXG4gIC50aWRlLXNoZWV0OjpiYWNrZHJvcCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpZGUtYW5pbWF0ZSkgYWxsb3ctZGlzY3JldGU7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDBweCk7XG4gIH1cblxuICAudGlkZS1zaGVldFtvcGVuXTo6YmFja2Ryb3Age1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtdHJhbnNwYXJlbnQtNDAwKTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IHZhcigtLXRpZGUtYmctYmx1cik7XG4gIH1cblxuICAudGlkZS1zaGVldC1ib2R5IHtcbiAgICBtYXgtd2lkdGg6IG1pbihjYWxjKDEwMHZ3IC0gdmFyKC0tdGlkZS1zcGFjaW5nLTIpKSwgMzExcHgpO1xuICB9XG5cbiAgLnRpZGUtc2hlZXQtY29udGVudCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiB2YXIoLS1zaGVldC1wYWRkaW5nLXgpIDFmciB2YXIoLS1zaGVldC1wYWRkaW5nLXgpO1xuICB9XG5cbiAgOndoZXJlKC50aWRlLXNoZWV0LWNvbnRlbnQpOmRlZXAoPiA6d2hlcmUoKikpIHtcbiAgICBncmlkLWNvbHVtbjogMjtcbiAgfVxuXG4gIEBzdGFydGluZy1zdHlsZSB7XG4gICAgLnRpZGUtc2hlZXRbb3Blbl0ge1xuICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbiAgICB9XG5cbiAgICAudGlkZS1zaGVldFtvcGVuXTo6YmFja2Ryb3Age1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBiYWNrZHJvcC1maWx0ZXI6IHZhcigtLXRpZGUtYmctYmx1cik7XG4gICAgfVxuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBpc0FjdGl2ZT86IGJvb2xlYW47XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgaXNBY3RpdmU6IGZhbHNlLFxuICB9KTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHMoWydjaGFuZ2UnXSk7XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKCFwcm9wcy5kaXNhYmxlZCkge1xuICAgICAgZW1pdCgnY2hhbmdlJyk7XG4gICAgfVxuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGJ1dHRvblxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLXN3aXRjaCcsXG4gICAgICBwcm9wcy5pc0FjdGl2ZSA/ICdhY3RpdmUnIDogJycsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgcHJvcHMuaXNBY3RpdmUgPyAnJyA6IENTUy5CT1JERVIuQ09MT1IuREVGQVVMVCxcbiAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICBwcm9wcy5pc0FjdGl2ZSA/IENTUy5CRy5TRUNPTkRBUlkgOiBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgIF1cIlxuICAgIDpkaXNhYmxlZD1cInByb3BzLmRpc2FibGVkXCJcbiAgICBAY2xpY2s9XCJoYW5kbGVDbGlja1wiXG4gICAgYXJpYS1sYWJlbD1cIlN3aXRjaFwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gID5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLXN3aXRjaC1pbmRpY2F0b3InLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICAgIHByb3BzLmlzQWN0aXZlID8gQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCA6IENTUy5CRy5TRUNPTkRBUlksXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmljb249XCJJQ09OLkNIRUNLXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLkxBUkdFXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIDwvYnV0dG9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtc3dpdGNoIHtcbiAgICB3aWR0aDogNjRweDtcbiAgICBoZWlnaHQ6IDMycHg7XG4gICAgdHJhbnNpdGlvbjogdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBiYWNrZ3JvdW5kLWNvbG9yO1xuICB9XG5cbiAgLnRpZGUtc3dpdGNoOmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiB2YXIoLS10aWRlLW9wYWNpdHkpO1xuICB9XG5cbiAgLnRpZGUtc3dpdGNoLmFjdGl2ZSB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10aWRlLXNlY29uZGFyeSk7XG4gIH1cblxuICAudGlkZS1zd2l0Y2guYWN0aXZlIC50aWRlLXN3aXRjaC1pbmRpY2F0b3Ige1xuICAgIGxlZnQ6IDM2cHg7XG4gIH1cblxuICAudGlkZS1zd2l0Y2gtaW5kaWNhdG9yIHtcbiAgICBsZWZ0OiA0cHg7XG4gICAgdHJhbnNpdGlvbjogdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBsZWZ0LCBib3JkZXItY29sb3IsIGJhY2tncm91bmQtY29sb3I7XG4gIH1cbjwvc3R5bGU+XG4iXSwibmFtZXMiOlsiT1JJRU5UQVRJT04iLCJDU1MiLCJ1dGlsaXRpZXMiLCJicmVha3BvaW50IiwidXRpbGl0eSIsInByb3BzIiwiX19wcm9wcyIsIl9vcGVuQmxvY2siLCJfY3JlYXRlRWxlbWVudEJsb2NrIiwiX2hvaXN0ZWRfMSIsIl9jcmVhdGVFbGVtZW50Vk5vZGUiLCJfbm9ybWFsaXplQ2xhc3MiLCJfdW5yZWYiLCJSRUFMTSIsIlNJWkUiLCJTSVpFX0JVVFRPTiIsImZvcm1hdE51bWJlciIsImlucHV0Iiwib3V0cHV0IiwiZGlnaXRzIiwiZm9ybWF0UGFzY2FsQ2FzZSIsIndvcmQiLCJmb3JtYXRQaG9uZSIsImZvcm1hdFByaWNlIiwiaW5uZXJTVkciLCJyZWYiLCJ3YXRjaCIsImlkIiwibmFtZSIsInByZWZpeCIsInJlYWxtRm9sZGVyIiwiY29tcG9uZW50IiwiZGVmaW5lQXN5bmNDb21wb25lbnQiLCJfX3ZhcmlhYmxlRHluYW1pY0ltcG9ydFJ1bnRpbWVIZWxwZXIiLCJtYXJrUmF3IiwiX2NyZWF0ZUJsb2NrIiwiX3Jlc29sdmVEeW5hbWljQ29tcG9uZW50IiwiSUNPTiIsIklDT05fUkVBTE0iLCJlbWl0IiwiX19lbWl0IiwiaGFuZGxlVG9nZ2xlQ2xpY2siLCJUaWRlRGl2aWRlciIsIl90b0Rpc3BsYXlTdHJpbmciLCJfY3JlYXRlVk5vZGUiLCJUaWRlSWNvbiIsIl9yZW5kZXJTbG90IiwiX2N0eCIsIkVMRU1FTlQiLCJFTEVNRU5UX0JST0FEIiwiUFJJT1JJVFkiLCJUQVJHRVQiLCJ0eXBlQXR0cmlidXRlIiwiY29tcHV0ZWQiLCJBTEVSVCIsInNsb3RzIiwidXNlU2xvdHMiLCJoYXNCb2R5Iiwibm9kZXMiLCJfYSIsIm5vZGUiLCJDb21tZW50IiwiaWNvblR5cGUiLCJUaWRlTGluayIsIlRpZGVCdXR0b25JY29uIiwiQkFER0VfQ09MT1IiLCJCQURHRV9DT0xPUl9ERVRBSUxTIiwiQkFER0VfVFJVU1RFRCIsIl9GcmFnbWVudCIsImNydW1iIiwiaW5kZXgiLCJfaG9pc3RlZF8yIiwiX2hvaXN0ZWRfMyIsIl9jcmVhdGVUZXh0Vk5vZGUiLCJoYW5kbGVDbGljayIsInRhYiIsIiRldmVudCIsIlRZUEVfQ0FSRCIsInJvb3RFbGVtZW50IiwiY2FyZEdhcCIsImRvdEdhcCIsImRvdFdpZHRoIiwiY29udGFpbmVyUmVmIiwiY29udGVudFdpZHRoIiwiY3VycmVudFBhZ2VJbmRleCIsImRvdHNSZWYiLCJmcmFtZVdpZHRoIiwiaXNGaXJzdFNsaWRlIiwiaXNMYXN0U2xpZGUiLCJzaG93QnV0dG9ucyIsInNsaWRlT2JzZXJ2ZXIiLCJzbGlkZXMiLCJzbGlkZXNJblZpZXciLCJzbG90T2JzZXJ2ZXIiLCJjdXJyZW50UGFnZSIsImRvdENvbnRhaW5lcldpZHRoIiwiZG90Q291bnRWaXNpYmxlIiwidG90YWxQYWdlcyIsImxhc3RQYWdlSW5kZXgiLCJnYXBXaWR0aCIsImNvbnRlbnROb0dhcCIsInF1b3RpZW50IiwiZ2V0RG90Q2xhc3MiLCJkb3RJbmRleCIsImNsYXNzTmFtZSIsIm1lYXN1cmVEb20iLCJvYnNlcnZlU2xpZGVzIiwib3B0aW9ucyIsImVudHJpZXMiLCJzbGlkZXNBZGRlZFRvVmlldyIsImVudHJ5Iiwic2xpZGVJbmRleCIsInNsaWRlIiwiYSIsImIiLCJjaGlsZCIsIm9ic2VydmVTbG90Iiwib2JzZXJ2ZXJDYWxsYmFjayIsInNjcm9sbFRvT2Zmc2V0IiwidGFyZ2V0IiwibGFzdE9mZnNldCIsImlzU2Nyb2xsaW5nTGVmdCIsInVwZGF0ZURvdHMiLCJzaG93TmV4dFBhZ2UiLCJuZXh0U2xpZGUiLCJzaG93UHJldmlvdXNQYWdlIiwicHJldmlvdXNTbGlkZSIsInNob3dOZXh0U2xpZGUiLCJzaG93UHJldmlvdXNTbGlkZSIsImNlbnRlckRvdCIsIm9uTW91bnRlZCIsIm9uVW5tb3VudGVkIiwiX2IiLCJfY2FjaGUiLCJfbm9ybWFsaXplU3R5bGUiLCJfcmVuZGVyTGlzdCIsIl9ob2lzdGVkXzQiLCJfaG9pc3RlZF81IiwiRk9STV9LRVkiLCJ1c2VUaWRlRm9ybSIsImZvcmNlU2hvd0Vycm9ycyIsInByb3ZpZGUiLCJ1c2VGb3JtQ29udGV4dCIsImluamVjdCIsInJldmVhbFZhbGlkYXRpb25FcnJvcnMiLCJoYW5kbGVTdWJtaXQiLCJlIiwiT0JKRUNUX0ZJVCIsImltYWdlRGVmYXVsdCIsInBpY3R1cmUiLCJpbWciLCJvYmplY3RGaXRDbGFzc05hbWUiLCJzZXRJbWFnZUZyb21EZWZhdWx0IiwiY3VycmVudFNyYyIsInBpY3R1cmVTb3VyY2UiLCJzb3VyY2UiLCJUaWRlSW1hZ2UiLCJlcnJvck1lc3NhZ2VEZWZhdWx0IiwiVkFMSURBVElPTl9SRVNVTFQiLCJjaGVja0Zvcm1hdCIsImZvcm1hdCIsIm1lc3NhZ2UiLCJ2YWx1ZSIsInJlc3VsdCIsImdldEZpZWxkTGVuZ3RoSXNWYWxpZCIsIm1heGxlbmd0aCIsIm1pbmxlbmd0aCIsInJlcXVpcmVkIiwiaXNFbXB0eUFuZFVucmVxdWlyZWQiLCJpc1Rvb0xvbmciLCJnZXRGaWVsZFZhbGlkYXRpb25SZXN1bHQiLCJlcnJvckZyb21Qcm9wcyIsInZhbGlkYXRvcnMiLCJ2YWxpZGF0aW9uIiwidmFsaWRhdGVQcm9wZXJ0eSIsImxlbmd0aFZhbGlkYXRpb24iLCJ2YWxpZGF0ZUxlbmd0aCIsInJlc3BvbnNlIiwidmFsaWRhdG9yIiwibW9kZWxWYWx1ZSIsIl91c2VNb2RlbCIsImZvcm1Db250ZXh0IiwiaXNWYWxpZGF0aW5nIiwiZXJyb3JSZWYiLCJmb3JtYXR0ZWRMYWJlbCIsImlzQ2hlY2tlZCIsInNob3dFcnJvciIsImhhc0Vycm9yRnJvbVByb3AiLCJzdXBwb3J0aW5nVGV4dE1lc3NhZ2UiLCJnZXRDaGVja2JveFZhbGlkYXRpb25SZXN1bHQiLCJ3YXRjaEVmZmVjdCIsIm5ld1ZhbHVlIiwiVGlkZUlucHV0U3VwcG9ydGluZ1RleHQiLCJfX2RlZmF1bHRfXyIsImNoZWNrZWQiLCJvbGRWYWx1ZSIsIkZPUk1BVCIsIkZPUk1BVF9SRUdFWCIsIlZBTElEQVRPUiIsIkVSUk9SX0RJU1BMQVkiLCJoYXNGb2N1cyIsImlucHV0SWQiLCJ1c2VJZCIsInNlbGVjdEVsZW1lbnQiLCJoYXNNaW5pbGFiZWwiLCJpc0VtcHR5IiwiZXhwYW5kT3B0aW9ucyIsImV2ZW50IiwiaGFuZGxlRm9jdXMiLCJoYW5kbGVGb2N1c091dCIsIm9wdGdyb3VwIiwib3B0aW9uIiwiX2hvaXN0ZWRfNiIsImdldEVycm9yTWVzc2FnZSIsImVycm9yRnJvbVJlZiIsImdldEZpZWxkSGFzRXJyb3IiLCJoYW5kbGVGaWVsZFZhbGlkYXRpb24iLCJlcnJvciIsImVycm9yTWVzc2FnZSIsImhhc0Vycm9yIiwiX19leHBvc2UiLCJURVhUX0lOUFVUX1RZUEUiLCJJTlBVVF9NT0RFIiwiZ2V0VGV4dElucHV0TW9kZSIsInR5cGUiLCJpbnB1dG1vZGUiLCJpbnB1dEVsZW1lbnQiLCJzaG93UGFzc3dvcmQiLCJpbnB1dE1vZGVBdHRyaWJ1dGUiLCJpbnB1dFR5cGUiLCJzaG91bGRTaG93Q2xlYXJCdXR0b24iLCJzaG91bGRTaG93UGFzc3dvcmRCdXR0b24iLCJoYW5kbGVDbGVhciIsImhhbmRsZUZpZWxkQ2xpY2siLCJwcmV2ZW50SW5wdXRGb2N1c0xvc3NPbk1vdXNlZG93biIsImhhc0NsZWFyIiwiaGFuZGxlVmFsaWRhdGlvbiIsImhhbmRsZUlucHV0IiwidXBkYXRlVmFsdWUiLCJ0ZXh0YXJlYUVsZW1lbnQiLCJwcmV2ZW50VGV4dGFyZWFGb2N1c0xvc3NPbk1vdXNlZG93biIsIkJSRUFLUE9JTlQiLCJNRURJQSIsInNldFNjcm9sbExvY2siLCJpc0xvY2tlZCIsImJvZHkiLCJzY3JvbGxZIiwibmV4dFRpY2siLCJzYXZlZFNjcm9sbFkiLCJUT1BfTEFZRVJfSUQiLCJpbml0RmF1eFRvcExheWVyIiwidG9wTGF5ZXIiLCJtb2RhbENvbnRlbnQiLCJtb2RhbERpYWxvZyIsInRyaWdnZXJOYXRpdmVEaWFsb2dPcGVuIiwidHJpZ2dlck5hdGl2ZURpYWxvZ0Nsb3NlIiwic2Nyb2xsQ29udGVudFRvVG9wIiwiaGFuZGxlQmFja2Ryb3BDbGljayIsImhhbmRsZUVzY2FwZUtleWRvd24iLCJvbkJlZm9yZU1vdW50IiwiX1RlbGVwb3J0IiwiJHNsb3RzIiwicGFnZUN1cnJlbnQiLCJwYWdpbmF0aW9uQnV0dG9ucyIsImVtcHR5IiwicGFnaW5hdGlvbkJ1dHRvbiIsIlRpZGVCdXR0b25QYWdpbmF0aW9uIiwic2lkZXMiLCJhbGlnbm1lbnRzIiwicGxhY2VtZW50cyIsImFjYyIsInNpZGUiLCJtaW4iLCJtYXgiLCJyb3VuZCIsImZsb29yIiwiY3JlYXRlQ29vcmRzIiwidiIsIm9wcG9zaXRlU2lkZU1hcCIsIm9wcG9zaXRlQWxpZ25tZW50TWFwIiwiY2xhbXAiLCJzdGFydCIsImVuZCIsImV2YWx1YXRlIiwicGFyYW0iLCJnZXRTaWRlIiwicGxhY2VtZW50IiwiZ2V0QWxpZ25tZW50IiwiZ2V0T3Bwb3NpdGVBeGlzIiwiYXhpcyIsImdldEF4aXNMZW5ndGgiLCJnZXRTaWRlQXhpcyIsImdldEFsaWdubWVudEF4aXMiLCJnZXRBbGlnbm1lbnRTaWRlcyIsInJlY3RzIiwicnRsIiwiYWxpZ25tZW50IiwiYWxpZ25tZW50QXhpcyIsImxlbmd0aCIsIm1haW5BbGlnbm1lbnRTaWRlIiwiZ2V0T3Bwb3NpdGVQbGFjZW1lbnQiLCJnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudCIsImV4cGFuZFBhZGRpbmdPYmplY3QiLCJwYWRkaW5nIiwiZ2V0UGFkZGluZ09iamVjdCIsInJlY3RUb0NsaWVudFJlY3QiLCJyZWN0IiwieCIsInkiLCJ3aWR0aCIsImhlaWdodCIsImNvbXB1dGVDb29yZHNGcm9tUGxhY2VtZW50IiwiX3JlZiIsInJlZmVyZW5jZSIsImZsb2F0aW5nIiwic2lkZUF4aXMiLCJhbGlnbkxlbmd0aCIsImlzVmVydGljYWwiLCJjb21tb25YIiwiY29tbW9uWSIsImNvbW1vbkFsaWduIiwiY29vcmRzIiwiY29tcHV0ZVBvc2l0aW9uIiwiY29uZmlnIiwic3RyYXRlZ3kiLCJtaWRkbGV3YXJlIiwicGxhdGZvcm0iLCJ2YWxpZE1pZGRsZXdhcmUiLCJzdGF0ZWZ1bFBsYWNlbWVudCIsIm1pZGRsZXdhcmVEYXRhIiwicmVzZXRDb3VudCIsImkiLCJmbiIsIm5leHRYIiwibmV4dFkiLCJkYXRhIiwicmVzZXQiLCJkZXRlY3RPdmVyZmxvdyIsInN0YXRlIiwiX2F3YWl0JHBsYXRmb3JtJGlzRWxlIiwiZWxlbWVudHMiLCJib3VuZGFyeSIsInJvb3RCb3VuZGFyeSIsImVsZW1lbnRDb250ZXh0IiwiYWx0Qm91bmRhcnkiLCJwYWRkaW5nT2JqZWN0IiwiZWxlbWVudCIsImNsaXBwaW5nQ2xpZW50UmVjdCIsIm9mZnNldFBhcmVudCIsIm9mZnNldFNjYWxlIiwiZWxlbWVudENsaWVudFJlY3QiLCJnZXRQbGFjZW1lbnRMaXN0IiwiYXV0b0FsaWdubWVudCIsImFsbG93ZWRQbGFjZW1lbnRzIiwiYXV0b1BsYWNlbWVudCIsIl9taWRkbGV3YXJlRGF0YSRhdXRvUCIsIl9taWRkbGV3YXJlRGF0YSRhdXRvUDIiLCJfcGxhY2VtZW50c1RoYXRGaXRPbkUiLCJjcm9zc0F4aXMiLCJkZXRlY3RPdmVyZmxvd09wdGlvbnMiLCJwbGFjZW1lbnRzJDEiLCJvdmVyZmxvdyIsImN1cnJlbnRJbmRleCIsImN1cnJlbnRQbGFjZW1lbnQiLCJhbGlnbm1lbnRTaWRlcyIsImN1cnJlbnRPdmVyZmxvd3MiLCJhbGxPdmVyZmxvd3MiLCJuZXh0UGxhY2VtZW50IiwicGxhY2VtZW50c1NvcnRlZEJ5TW9zdFNwYWNlIiwiZCIsInJlc2V0UGxhY2VtZW50IiwiY29udmVydFZhbHVlVG9Db29yZHMiLCJtYWluQXhpc011bHRpIiwiY3Jvc3NBeGlzTXVsdGkiLCJyYXdWYWx1ZSIsIm1haW5BeGlzIiwib2Zmc2V0IiwiX21pZGRsZXdhcmVEYXRhJG9mZnNlIiwiX21pZGRsZXdhcmVEYXRhJGFycm93IiwiZGlmZkNvb3JkcyIsInNoaWZ0IiwiY2hlY2tNYWluQXhpcyIsImNoZWNrQ3Jvc3NBeGlzIiwibGltaXRlciIsIm1haW5BeGlzQ29vcmQiLCJjcm9zc0F4aXNDb29yZCIsIm1pblNpZGUiLCJtYXhTaWRlIiwibGltaXRlZENvb3JkcyIsImhhc1dpbmRvdyIsImdldE5vZGVOYW1lIiwiaXNOb2RlIiwiZ2V0V2luZG93IiwiX25vZGUkb3duZXJEb2N1bWVudCIsImdldERvY3VtZW50RWxlbWVudCIsImlzRWxlbWVudCIsImlzSFRNTEVsZW1lbnQiLCJpc1NoYWRvd1Jvb3QiLCJpc092ZXJmbG93RWxlbWVudCIsIm92ZXJmbG93WCIsIm92ZXJmbG93WSIsImRpc3BsYXkiLCJnZXRDb21wdXRlZFN0eWxlIiwiaXNUYWJsZUVsZW1lbnQiLCJpc1RvcExheWVyIiwic2VsZWN0b3IiLCJpc0NvbnRhaW5pbmdCbG9jayIsImVsZW1lbnRPckNzcyIsIndlYmtpdCIsImlzV2ViS2l0IiwiY3NzIiwiZ2V0Q29udGFpbmluZ0Jsb2NrIiwiY3VycmVudE5vZGUiLCJnZXRQYXJlbnROb2RlIiwiaXNMYXN0VHJhdmVyc2FibGVOb2RlIiwiZ2V0Tm9kZVNjcm9sbCIsImdldE5lYXJlc3RPdmVyZmxvd0FuY2VzdG9yIiwicGFyZW50Tm9kZSIsImdldE92ZXJmbG93QW5jZXN0b3JzIiwibGlzdCIsInRyYXZlcnNlSWZyYW1lcyIsIl9ub2RlJG93bmVyRG9jdW1lbnQyIiwic2Nyb2xsYWJsZUFuY2VzdG9yIiwiaXNCb2R5Iiwid2luIiwiZnJhbWVFbGVtZW50IiwiZ2V0RnJhbWVFbGVtZW50IiwiZ2V0Q3NzRGltZW5zaW9ucyIsImhhc09mZnNldCIsIm9mZnNldFdpZHRoIiwib2Zmc2V0SGVpZ2h0Iiwic2hvdWxkRmFsbGJhY2siLCJ1bndyYXBFbGVtZW50IiwiZ2V0U2NhbGUiLCJkb21FbGVtZW50IiwiJCIsIm5vT2Zmc2V0cyIsImdldFZpc3VhbE9mZnNldHMiLCJzaG91bGRBZGRWaXN1YWxPZmZzZXRzIiwiaXNGaXhlZCIsImZsb2F0aW5nT2Zmc2V0UGFyZW50IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiaW5jbHVkZVNjYWxlIiwiaXNGaXhlZFN0cmF0ZWd5IiwiY2xpZW50UmVjdCIsInNjYWxlIiwidmlzdWFsT2Zmc2V0cyIsIm9mZnNldFdpbiIsImN1cnJlbnRXaW4iLCJjdXJyZW50SUZyYW1lIiwiaWZyYW1lU2NhbGUiLCJpZnJhbWVSZWN0IiwibGVmdCIsInRvcCIsImdldFdpbmRvd1Njcm9sbEJhclgiLCJsZWZ0U2Nyb2xsIiwiZ2V0SFRNTE9mZnNldCIsImRvY3VtZW50RWxlbWVudCIsInNjcm9sbCIsImlnbm9yZVNjcm9sbGJhclgiLCJodG1sUmVjdCIsImNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0Iiwib2Zmc2V0cyIsImlzT2Zmc2V0UGFyZW50QW5FbGVtZW50Iiwib2Zmc2V0UmVjdCIsImh0bWxPZmZzZXQiLCJnZXRDbGllbnRSZWN0cyIsImdldERvY3VtZW50UmVjdCIsImh0bWwiLCJnZXRWaWV3cG9ydFJlY3QiLCJ2aXN1YWxWaWV3cG9ydCIsInZpc3VhbFZpZXdwb3J0QmFzZWQiLCJnZXRJbm5lckJvdW5kaW5nQ2xpZW50UmVjdCIsImdldENsaWVudFJlY3RGcm9tQ2xpcHBpbmdBbmNlc3RvciIsImNsaXBwaW5nQW5jZXN0b3IiLCJoYXNGaXhlZFBvc2l0aW9uQW5jZXN0b3IiLCJzdG9wTm9kZSIsImdldENsaXBwaW5nRWxlbWVudEFuY2VzdG9ycyIsImNhY2hlIiwiY2FjaGVkUmVzdWx0IiwiZWwiLCJjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSIsImVsZW1lbnRJc0ZpeGVkIiwiY29tcHV0ZWRTdHlsZSIsImN1cnJlbnROb2RlSXNDb250YWluaW5nIiwiYW5jZXN0b3IiLCJnZXRDbGlwcGluZ1JlY3QiLCJjbGlwcGluZ0FuY2VzdG9ycyIsImZpcnN0Q2xpcHBpbmdBbmNlc3RvciIsImNsaXBwaW5nUmVjdCIsImFjY1JlY3QiLCJnZXREaW1lbnNpb25zIiwiZ2V0UmVjdFJlbGF0aXZlVG9PZmZzZXRQYXJlbnQiLCJpc1N0YXRpY1Bvc2l0aW9uZWQiLCJnZXRUcnVlT2Zmc2V0UGFyZW50IiwicG9seWZpbGwiLCJyYXdPZmZzZXRQYXJlbnQiLCJnZXRPZmZzZXRQYXJlbnQiLCJzdmdPZmZzZXRQYXJlbnQiLCJnZXRFbGVtZW50UmVjdHMiLCJnZXRPZmZzZXRQYXJlbnRGbiIsImdldERpbWVuc2lvbnNGbiIsImZsb2F0aW5nRGltZW5zaW9ucyIsImlzUlRMIiwicmVjdHNBcmVFcXVhbCIsIm9ic2VydmVNb3ZlIiwib25Nb3ZlIiwiaW8iLCJ0aW1lb3V0SWQiLCJyb290IiwiY2xlYW51cCIsIl9pbyIsInJlZnJlc2giLCJza2lwIiwidGhyZXNob2xkIiwiZWxlbWVudFJlY3RGb3JSb290TWFyZ2luIiwiaW5zZXRUb3AiLCJpbnNldFJpZ2h0IiwiaW5zZXRCb3R0b20iLCJpbnNldExlZnQiLCJpc0ZpcnN0VXBkYXRlIiwiaGFuZGxlT2JzZXJ2ZSIsInJhdGlvIiwiYXV0b1VwZGF0ZSIsInVwZGF0ZSIsImFuY2VzdG9yU2Nyb2xsIiwiYW5jZXN0b3JSZXNpemUiLCJlbGVtZW50UmVzaXplIiwibGF5b3V0U2hpZnQiLCJhbmltYXRpb25GcmFtZSIsInJlZmVyZW5jZUVsIiwiYW5jZXN0b3JzIiwiY2xlYW51cElvIiwicmVvYnNlcnZlRnJhbWUiLCJyZXNpemVPYnNlcnZlciIsImZpcnN0RW50cnkiLCJfcmVzaXplT2JzZXJ2ZXIiLCJmcmFtZUlkIiwicHJldlJlZlJlY3QiLCJmcmFtZUxvb3AiLCJuZXh0UmVmUmVjdCIsIl9yZXNpemVPYnNlcnZlcjIiLCJvZmZzZXQkMSIsImF1dG9QbGFjZW1lbnQkMSIsInNoaWZ0JDEiLCJtZXJnZWRPcHRpb25zIiwicGxhdGZvcm1XaXRoQ2FjaGUiLCJjb21wdXRlUG9zaXRpb24kMSIsImlzQ29tcG9uZW50UHVibGljSW5zdGFuY2UiLCJ0b1ZhbHVlIiwidW5yZWYiLCJnZXREUFIiLCJyb3VuZEJ5RFBSIiwiZHByIiwidXNlRmxvYXRpbmciLCJ3aGlsZUVsZW1lbnRzTW91bnRlZE9wdGlvbiIsIm9wZW5PcHRpb24iLCJfdG9WYWx1ZSIsIm1pZGRsZXdhcmVPcHRpb24iLCJwbGFjZW1lbnRPcHRpb24iLCJfdG9WYWx1ZTIiLCJzdHJhdGVneU9wdGlvbiIsIl90b1ZhbHVlMyIsInRyYW5zZm9ybU9wdGlvbiIsIl90b1ZhbHVlNCIsInJlZmVyZW5jZUVsZW1lbnQiLCJmbG9hdGluZ0VsZW1lbnQiLCJzaGFsbG93UmVmIiwiaXNQb3NpdGlvbmVkIiwiZmxvYXRpbmdTdHlsZXMiLCJpbml0aWFsU3R5bGVzIiwieFZhbCIsInlWYWwiLCJ3aGlsZUVsZW1lbnRzTW91bnRlZENsZWFudXAiLCJvcGVuIiwicG9zaXRpb24iLCJhdHRhY2giLCJnZXRDdXJyZW50U2NvcGUiLCJvblNjb3BlRGlzcG9zZSIsInNoYWxsb3dSZWFkb25seSIsImlzQ2xpY2tPdXRzaWRlIiwiYW5jaG9yIiwiaXNIb3ZlcmVkIiwiaXNUb2dnbGVkT3BlbiIsIm9mZnNldE1pZGRsZXdhcmUiLCJpc1Nob3dQb3BvdmVyIiwiaGFuZGxlUGVybWFuZW50T3BlbkJvZHlDbGljayIsImhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZU92ZXIiLCJoYW5kbGVBbmNob3JFbGVtZW50TW91c2VMZWF2ZSIsImhhbmRsZUFuY2hvckVsZW1lbnRDbGljayIsImFkZExpc3RlbmVyc1RvQW5jaG9yRWxlbWVudCIsInJlbW92ZUxpc3RlbmVyc0Zyb21BbmNob3JFbGVtZW50IiwiaGFuZGxlUGVybWFuZW50T3BlbkJvZHlLZXlkb3duIiwiYWRkT3Blbkxpc3RlbmVyc1RvUm9vdCIsInJlbW92ZU9wZW5MaXN0ZW5lcnNGcm9tUm9vdCIsInVwZGF0ZUFuY2hvckVsZW1lbnQiLCJfVHJhbnNpdGlvbiIsImxpbmsiLCJkaWFsb2dFbGVtZW50Il0sIm1hcHBpbmdzIjoidUdBQWFBLEdBQWMsQ0FDekIsV0FBWSxhQUNaLFNBQVUsVUFDWixFQ0NhQyxFQUFNLENBQ2pCLGVBQWdCLENBQUNDLEVBQXFCQyxJQUM3QkQsRUFBVSxJQUFLRSxHQUFZLEdBQUdELENBQVUsSUFBSUMsQ0FBTyxFQUFFLEVBRTlELE1BQU8sQ0FDTCxFQUFHLENBQ0QsT0FBUSxtQkFDUixRQUFTLG9CQUNULEtBQU0saUJBQ04sTUFBTyxpQkFBQSxFQUVULEVBQUcsQ0FDRCxRQUFTLHFCQUNULE9BQVEsbUJBQUEsQ0FDVixFQUVGLE1BQU8sQ0FDTCxPQUFRLG9CQUNSLFFBQVMscUJBQ1QsT0FBUSxvQkFDUixJQUFLLGlCQUNMLE1BQU8sa0JBQUEsRUFFVCxNQUFPLENBQ0wsT0FBUSxvQkFDUixPQUFRLG9CQUNSLElBQUssaUJBQ0wsTUFBTyxtQkFDUCxRQUFTLG9CQUFBLEVBRVgsR0FBSSxDQUNGLE9BQVEsQ0FDTixRQUFTLENBQ1AsTUFBTyx3QkFDUCxLQUFNLHVCQUNOLFFBQVMsMEJBQ1QsUUFBUyx5QkFBQSxFQUVYLFFBQVMsQ0FDUCxNQUFPLHdCQUNQLEtBQU0sdUJBQ04sUUFBUywwQkFDVCxRQUFTLDBCQUVULEtBQU0sdUJBQ04sTUFBTyx3QkFDUCxLQUFNLHVCQUNOLE9BQVEseUJBQ1IsT0FBUSx5QkFDUixJ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