tide-design-system 2.4.7 → 2.5.2

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 (50) hide show
  1. package/.storybook/main.ts +2 -0
  2. package/README.md +3 -1
  3. package/dist/css/reset.css +5 -1
  4. package/dist/css/utilities-base.css +6 -6
  5. package/dist/css/utilities-responsive.css +24 -24
  6. package/dist/css/variables.css +3 -0
  7. package/dist/style.css +1 -1
  8. package/dist/tide-design-system.cjs +2 -2
  9. package/dist/tide-design-system.esm.d.ts +152 -70
  10. package/dist/tide-design-system.esm.js +1375 -1243
  11. package/docs/assets/full-bleed.gif +0 -0
  12. package/docs/assets/layout-grid-default.webp +0 -0
  13. package/docs/assets/layout-grid-fluid.webp +0 -0
  14. package/docs/assets/layout-grid.webp +0 -0
  15. package/docs/configuation.md +47 -0
  16. package/docs/grid-layout.md +83 -0
  17. package/docs/upgrading.md +79 -0
  18. package/index.ts +4 -0
  19. package/package.json +1 -1
  20. package/src/assets/css/reset.css +5 -1
  21. package/src/assets/css/utilities-base.css +6 -6
  22. package/src/assets/css/utilities-responsive.css +24 -24
  23. package/src/assets/css/variables.css +3 -0
  24. package/src/components/TideAccordionItem.vue +21 -13
  25. package/src/components/TideAlert.vue +1 -1
  26. package/src/components/TideButtonSegmented.vue +14 -15
  27. package/src/components/TideChipFilter.vue +13 -7
  28. package/src/components/TideInputCheckbox.vue +0 -1
  29. package/src/components/TideInputSelect.vue +1 -1
  30. package/src/components/TideInputSelectDeprecated.vue +1 -1
  31. package/src/components/TideInputText.vue +2 -2
  32. package/src/components/TideInputTextDeprecated.vue +2 -2
  33. package/src/components/TideInputTextarea.vue +2 -2
  34. package/src/components/TideInputTextareaDeprecated.vue +2 -2
  35. package/src/components/TideModal.vue +33 -20
  36. package/src/components/TidePagination.vue +17 -19
  37. package/src/components/TideRating.vue +93 -0
  38. package/src/components/TideSheet.vue +24 -21
  39. package/src/components/TideSwitch.vue +23 -20
  40. package/src/components/TideTabs.vue +58 -0
  41. package/src/stories/TideAccordionItem.stories.ts +33 -34
  42. package/src/stories/TideButtonSegmented.stories.ts +33 -25
  43. package/src/stories/TideChipFilter.stories.ts +33 -23
  44. package/src/stories/TideInputCheckbox.stories.ts +18 -10
  45. package/src/stories/TideModal.stories.ts +33 -37
  46. package/src/stories/TidePagination.stories.ts +31 -20
  47. package/src/stories/TideRating.stories.ts +120 -0
  48. package/src/stories/TideSheet.stories.ts +33 -28
  49. package/src/stories/TideSwitch.stories.ts +33 -34
  50. package/src/stories/TideTabs.stories.ts +115 -0
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),we={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"}},xt={class:e.normalizeClass(["tide-divider"])},Mt=e.defineComponent({__name:"TideDivider",props:{orientation:{default:we.HORIZONTAL}},setup(n){const r=n;return(o,i)=>(e.openBlock(),e.createElementBlock("div",xt,[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).BORDER.COLOR.LOW,r.orientation===e.unref(we).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)]))}}),D=(n,r)=>{const o=n.__vccOpts||n;for(const[i,s]of r)o[i]=s;return o},Ne=D(Mt,[["__scopeId","data-v-c2dc7d09"]]),Ze=(n,r,o)=>{const i=n[r];return i?typeof i=="function"?i():Promise.resolve(i):new Promise((s,a)=>{(typeof queueMicrotask=="function"?queueMicrotask:setTimeout)(a.bind(null,new Error("Unknown variable dynamic import: "+r+(r.split("/").length!==o?". Note that variables only represent file names one level deep.":""))))})},Et={AERO:"aero",ATV:"atv",BOATMART:"boatmart",CYCLE:"cycle",EQUIPMENT:"equipment",PWC:"pwc",RV:"rv",SNOW:"snow",TRUCK:"truck"},b={LARGE:"large",SMALL:"small"},Oe={LARGE:"large",SMALL:"small"},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},Ht=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,Yt=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},zt=n=>`$${n?K(n):String(n||"0")}`,F=e.defineComponent({__name:"TideIcon",props:{icon:{},size:{default:b.SMALL}},setup(n){const r=n,o=e.ref();return e.watch(()=>r.icon,async()=>{const i=r.icon,s=Ht(i),[a]=i.split("-"),l=Et[a==null?void 0:a.toUpperCase()],d=await(l?()=>Ze(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):()=>Ze(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(d.default)},{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"},Xt={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"}},Wt={class:"tide-accordion-item"},qt=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(a,l)=>(e.openBlock(),e.createElementBlock("div",Wt,[i.hasTopDivider?(e.openBlock(),e.createBlock(Ne,{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(F,{icon:n.isExpanded?e.unref(h).EXPAND_LESS:e.unref(h).EXPAND_MORE,size:e.unref(b).LARGE},null,8,["icon","size"])],2),e.createElementVNode("div",{class:e.normalizeClass(["tide-accordion-body",i.isExpanded?"expanded":"collapsed",e.unref(t).DISPLAY.GRID])},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).OVERFLOW.Y.HIDDEN,e.unref(t).MARGIN.Y.ONE,e.unref(t).FONT.ROLE.BODY_1,e.unref(t).FONT.COLOR.SURFACE.DEFAULT])},[e.renderSlot(a.$slots,"default",{},void 0,!0)],2)],2),i.hasBottomDivider?(e.openBlock(),e.createBlock(Ne,{key:1})):e.createCommentVNode("",!0)]))}}),$t=D(qt,[["__scopeId","data-v-d5fdff3b"]]),S={BUTTON:"button",LINK:"a"},H={BUTTON:"button",DIV:"div",LINK:"a"},mt={linkComponent:S.LINK},vt=Symbol("tide-config"),Kt=(n={})=>{const r={...mt,...n};e.provide(vt,r)},Qt=()=>e.inject(vt,mt),oe=e.defineComponent({__name:"InternalBaseLink",setup(n){const{linkComponent:r}=Qt();return(o,i)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(r)),null,{default:e.withCtx(()=>[e.renderSlot(o.$slots,"default")]),_:3}))}}),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:S.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===S.BUTTON?r.type??S.BUTTON:void 0),i=e.computed(()=>r.element===S.LINK?oe:r.element);return(s,a)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(i.value),{"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(S).LINK?[e.unref(t).UNDERLINE.REST.OFF]:""]),disabled:r.element===e.unref(S).BUTTON&&r.disabled,href:r.element===e.unref(S).LINK&&r.href?r.href:void 0,target:r.element===e.unref(S).LINK&&r.isNewTab?e.unref(z).BLANK:e.unref(z).SELF,type:o.value},{default:e.withCtx(()=>[r.icon?(e.openBlock(),e.createBlock(F,{key:0,icon:r.icon,size:e.unref(b).LARGE},null,8,["icon","size"])):e.createCommentVNode("",!0)]),_:1},8,["aria-label","class","disabled","href","target","type"]))}}),Ge=e.defineComponent({__name:"TideLink",props:{element:{default:S.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,o=e.computed(()=>r.element===S.LINK?oe:r.element);return(i,s)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(o.value),{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(S).BUTTON?e.unref(S).BUTTON:void 0},{default:e.withCtx(()=>[r.iconLeading?(e.openBlock(),e.createBlock(F,{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.INLINE_BLOCK,e.unref(t).ALIGN.Y.MIDDLE,e.unref(t).MARGIN.RIGHT.QUARTER]),icon: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(F,{key:1,class:e.normalizeClass([e.unref(t).DISPLAY.INLINE_BLOCK,e.unref(t).ALIGN.Y.MIDDLE,e.unref(t).MARGIN.LEFT.QUARTER]),icon:r.iconTrailing},null,8,["class","icon"])):e.createCommentVNode("",!0)]),_:1},8,["class","href","target","type"]))}}),G={ERROR:"error",INFO:"info",SUCCESS:"success",WARNING:"warning"},Zt=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(),a=e.computed(()=>{var d;const u=(d=s.default)==null?void 0:d.call(s);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(F,{icon:l.value,size:e.unref(b).SMALL},null,8,["icon","size"])],2)),e.createElementVNode("div",{class:e.normalizeClass(["tide-alert-heading",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).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(Ge,{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.LINK_2]),element:e.unref(S).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(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(Ge,{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.LINK_2]),element:e.unref(S).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))}}),jt=D(Zt,[["__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"},xe={[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}},Ot={YEARS_10:"10",YEARS_15:"15",YEARS_20:"20",YEARS_25:"25",YEARS_30:"30",YEARS_35:"35",YEARS_5:"5"},Jt=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(xe)[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(F,{key:0,class:e.normalizeClass([e.unref(t).FLEX.SHRINK.OFF,r.color&&e.unref(xe)[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))}}),en=e.defineComponent({__name:"TideBadgeTrustedPartner",props:{years:{default:Ot.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(F,{class:e.normalizeClass([e.unref(t).FLEX.SHRINK.OFF]),icon:e.unref(h).AWARD_STAR},null,8,["class","icon"]),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).ELLIPSIS])},[e.createElementVNode("span",null,e.toDisplayString(r.years)+" year trusted partner",1)],2)],2))}}),tn=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(F,{class:e.normalizeClass([e.unref(t).FLEX.SHRINK.OFF]),icon:e.unref(h).VERIFIED},null,8,["class","icon"]),e.createElementVNode("span",{class:e.normalizeClass([e.unref(t).ELLIPSIS])},"Verified vehicle",2)],2))}}),nn=D(tn,[["__scopeId","data-v-c6d1b806"]]),rn=["data-track"],on={key:0},sn=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,a)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:s.label},[e.createElementVNode("li",{class:e.normalizeClass([e.unref(t).FONT.ROLE.BODY_2])},[s.url?(e.openBlock(),e.createBlock(oe,{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},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(s.label),1)]),_:2},1032,["class","data-track","href"])):(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,rn))],2),r.breadCrumbs&&a<r.breadCrumbs.length-1?(e.openBlock(),e.createElementBlock("li",on,[e.createVNode(F,{icon:e.unref(h).ARROW_RIGHT,size:e.unref(b).SMALL},null,8,["icon","size"])])):e.createCommentVNode("",!0)],64))),128))],2))}}),ln=e.defineComponent({__name:"TideButton",props:{disabled:{type:Boolean,default:!1},element:{default:S.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:Oe.LARGE},type:{default:void 0}},setup(n){const r=n,o=e.computed(()=>r.element===S.BUTTON?r.type??S.BUTTON:void 0),i=e.computed(()=>r.element===S.LINK?oe:r.element);return(s,a)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(i.value),{class:e.normalizeClass(["tide-button",r.priority&&`tide-button-${r.priority}`,r.element===e.unref(S).LINK?[e.unref(t).DISPLAY.INLINE_FLEX]:[e.unref(t).DISPLAY.FLEX],r.element===e.unref(S).LINK?e.unref(t).UNDERLINE.REST.OFF:"",n.size===e.unref(Oe).SMALL?[e.unref(t).FONT.ROLE.BUTTON_2,e.unref(t).PADDING.X.ONE,e.unref(t).PADDING.Y.HALF,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(S).BUTTON&&r.disabled,href:r.element===e.unref(S).LINK&&r.href?r.href:void 0,target:r.element===e.unref(S).LINK&&r.isNewTab?e.unref(z).BLANK:e.unref(z).SELF,type:o.value},{default:e.withCtx(()=>[r.iconLeading?(e.openBlock(),e.createBlock(F,{key:0,icon:r.iconLeading,size:n.size===e.unref(Oe).LARGE?e.unref(b).LARGE:e.unref(b).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString(r.label)+" ",1),r.iconTrailing?(e.openBlock(),e.createBlock(F,{key:1,icon:r.iconTrailing,size:n.size===e.unref(Oe).LARGE?e.unref(b).LARGE:e.unref(b).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0)]),_:1},8,["class","disabled","href","target","type"]))}}),an=e.defineComponent({__name:"TideButtonPagination",props:{disabled:{type:Boolean,default:!1},element:{default:H.BUTTON},href:{default:void 0},label:{default:void 0}},setup(n){const r=n,o=e.computed(()=>r.element===S.LINK?oe:r.element);return(i,s)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(o.value),{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(H).LINK?[e.unref(t).UNDERLINE.REST.OFF]:"",r.element===e.unref(H).DIV?[e.unref(t).CURSOR.POINTER]:"",[e.unref(t).FONT.ROLE.HEADLINE_3]]),disabled:r.element===e.unref(H).BUTTON&&r.disabled,href:r.element===e.unref(H).LINK&&r.href?r.href:void 0,type:n.element===e.unref(H).BUTTON?e.unref(H).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"]))}}),Lt=D(an,[["__scopeId","data-v-c2c8d6bb"]]),un=["data-track","onClick"],cn=e.defineComponent({__name:"TideButtonSegmented",props:{activeTab:{default:0},tabs:{}},emits:["change"],setup(n,{emit:r}){const o=n,i=r,s=a=>{i("change",a)};return(a,l)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-button-segmented",e.unref(t).BG.SURFACE.VARIANT,e.unref(t).DISPLAY.FLEX,e.unref(t).GAP.QUARTER,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).PADDING.FULL.QUARTER,e.unref(t).OVERFLOW.XY.HIDDEN,e.unref(t).WIDTH.FULL])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(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=>s(d),type:"button"},[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,un))),128))],2))}}),dn=D(cn,[["__scopeId","data-v-ffa9d4ab"]]),Le={ACTIONABLE:"action",INFORMATIONAL:"informational",SELECTABLE:"select"},fn=e.defineComponent({__name:"TideCard",props:{description:{default:void 0},heading:{},icon:{default:void 0},selected:{type:Boolean,default:void 0},type:{default:Le.INFORMATIONAL},href:{default:void 0}},setup(n){const r=n,o=e.computed(()=>r.href?oe:(r.type===Le.INFORMATIONAL,H.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(Le).INFORMATIONAL&&"hoverable",n.type===e.unref(Le).SELECTABLE&&n.selected&&"selected"]),href:n.href,type:o.value===e.unref(H).BUTTON?e.unref(H).BUTTON:void 0},{default:e.withCtx(()=>[n.icon?(e.openBlock(),e.createBlock(F,{key:0,class:e.normalizeClass([e.unref(t).FLEX.GROW.OFF,e.unref(t).FLEX.SHRINK.OFF]),icon:n.icon,size:e.unref(b).SMALL},null,8,["class","icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).AXIS2.START,e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.HALF])},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_1_SEMIBOLD,e.unref(t).FONT.COLOR.SURFACE.DEFAULT])},e.toDisplayString(n.heading),3),n.description?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_2,e.unref(t).FONT.COLOR.SURFACE.VARIANT])},e.toDisplayString(n.description),3)):e.createCommentVNode("",!0)],2)]),_:1},8,["class","href","type"]))}}),En=D(fn,[["__scopeId","data-v-910f5dcd"]]),mn=16,je=8,Je=8,vn=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),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),T=e.computed(()=>L.value*Je+(L.value-1)*je),L=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 P=mn*(m.value.length-1),y=a.value-P,_=Math.round(y/d.value);return y%d.value?_+1:_}),p=P=>{let y="";return P===l.value&&(y="tide-carousel-dot-active"),Math.abs(l.value-P)===1&&(y="tide-carousel-dot-neighbor"),y},g=()=>{s.value&&(a.value=s.value.scrollWidth,d.value=s.value.clientWidth,f.value=a.value>d.value)},C=()=>{const P={root:s==null?void 0:s.value,rootMargin:"0px 1px 0px 0px",threshold:1};v.value=new IntersectionObserver(y=>{let _=[];y.forEach(J=>{const ke=m.value.indexOf(J.target);J.isIntersecting?(_.push(ke),O.value.push(ke)):O.value=O.value.filter(Ue=>Ue!==ke),O.value.sort((Ue,Gt)=>Ue-Gt)}),c.value=O.value.includes(0),E.value=O.value.includes(m.value.length-1),_.length>0&&i("slidesAddedToView",_)},P),m.value.forEach(y=>{v.value&&v.value.observe(y)})},w=()=>{const P=()=>{s.value!==null&&(m.value=Array.from(s.value.children),C())};A.value=new MutationObserver(P),s.value&&A.value.observe(s.value,{childList:!0})},M=P=>{if(s.value===null)return;const y=m.value[m.value.length-1].offsetLeft,J=P/y*N.value<=l.value;l.value=J?l.value-1:l.value+1,s.value.scrollTo({behavior:"smooth",left:P}),wt(J)},B=()=>{if(O.value.length===0)return;const P=O.value[O.value.length-1]+1;M(m.value[P].offsetLeft)},k=()=>{var y;if(O.value.length===0)return;const P=O.value[0]-O.value.length;M(((y=m.value[P])==null?void 0:y.offsetLeft)||0)},$=()=>{if(O.value.length===0)return;const P=O.value.length>1?O.value[1]:O.value[0]+1;M(m.value[P].offsetLeft)},Ie=()=>{if(O.value.length===0)return;const P=O.value[0]-1;M(m.value[P].offsetLeft)},wt=P=>{if(!u.value||L.value>=I.value)return;const _=L.value%2!==0||P?Math.floor(L.value/2)+1:Math.floor(L.value/2);u.value.scrollTo({behavior:"smooth",left:R.value<_?0:(R.value-_)*(Je+je)})};return e.onMounted(()=>{s.value!==null&&(m.value=Array.from(s.value.children),g(),C(),w(),window&&window.addEventListener("resize",g))}),e.onUnmounted(()=>{var P,y;(P=v.value)==null||P.disconnect(),(y=A.value)==null||y.disconnect(),window.removeEventListener("resize",g)}),(P,y)=>(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:y[0]||(y[0]=_=>n.isScrollByPage?k():Ie())},null,8,["disabled","icon","priority"]),e.createVNode(Y,{disabled:E.value,icon:e.unref(h).CHEVRON_RIGHT,priority:e.unref(V).TERTIARY,onClick:y[1]||(y[1]=_=>n.isScrollByPage?B():$())},null,8,["disabled","icon","priority"])],2)):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0),e.renderSlot(P.$slots,"misc",{},void 0,!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).POSITION.RELATIVE,e.unref(t).DISPLAY.FLEX])},[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(P.$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:u},[(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:y[2]||(y[2]=_=>n.isScrollByPage?k():Ie())},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:y[3]||(y[3]=_=>n.isScrollByPage?B():$())},null,8,["class","disabled","icon","priority"])],2)):e.createCommentVNode("",!0)],2)],2))}}),On=D(vn,[["__scopeId","data-v-984fc872"]]),Ln=e.defineComponent({__name:"TideChipAction",props:{element:{default:S.LINK},href:{default:void 0},isNewTab:{type:Boolean,default:!1},label:{}},setup(n){const r=n,o=e.computed(()=>r.element===S.LINK?oe:r.element);return(i,s)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(o.value),{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(S).BUTTON?e.unref(S).BUTTON:void 0},{default:e.withCtx(()=>[e.createVNode(F,{icon:e.unref(h).SEARCH},null,8,["icon"]),e.createElementVNode("span",null,e.toDisplayString(r.label),1)]),_:1},8,["class","href","target","type"]))}}),Rn=D(Ln,[["__scopeId","data-v-e16b3c85"]]),An=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))}}),Tn=D(An,[["__scopeId","data-v-f514ae31"]]),In=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(F,{icon:e.unref(h).CLOSE},null,8,["icon"])],2))}}),pn=D(In,[["__scopeId","data-v-ebaa5f06"]]),Nn={class:"tide-columns"},gn={class:"tide-columns-column"},Cn={class:"tide-columns-column"},hn={class:"tide-columns-column"},Sn={class:"tide-columns-column"},Fn=e.defineComponent({__name:"TideColumns",props:{heading:{default:""}},setup(n){const r=n;return(o,i)=>(e.openBlock(),e.createElementBlock("section",Nn,[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",gn,[e.renderSlot(o.$slots,"section1",{},void 0,!0)]),e.createElementVNode("li",Cn,[e.renderSlot(o.$slots,"section2",{},void 0,!0)]),e.createElementVNode("li",hn,[e.renderSlot(o.$slots,"section3",{},void 0,!0)]),e.createElementVNode("li",Sn,[e.renderSlot(o.$slots,"section4",{},void 0,!0)])],2)]))}}),Dn=D(Fn,[["__scopeId","data-v-c92a6639"]]),Rt=Symbol("tide-form"),At=()=>{const n=e.ref(!1);return e.provide(Rt,{forceShowErrors:n}),{revealValidationErrors:()=>{n.value=!0}}},Se=()=>e.inject(Rt),Bn=e.defineComponent({__name:"TideForm",emits:["submit"],setup(n,{emit:r}){const o=r,{revealValidationErrors:i}=At(),s=a=>{i(),o("submit",a)};return(a,l)=>(e.openBlock(),e.createElementBlock("form",{onSubmit:e.withModifiers(s,["prevent"]),novalidate:""},[e.renderSlot(a.$slots,"default")],32))}}),ie={CONTAIN:"contain",COVER:"cover",SCALE_DOWN:"scale-down"},yn=["media","srcset"],Pn=["alt","fetchpriority","height","loading","src","width"],_e="https://cdn-static.tilabs.io/marketplace/common/image-coming-soon.svg",bn=e.defineComponent({__name:"TideImage",props:{alt:{default:""},height:{default:void 0},isLazy:{type:Boolean,default:!0},objectFit:{default:ie.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 ie.CONTAIN:return t.OBJECT.CONTAIN;case ie.COVER:return t.OBJECT.COVER;case ie.SCALE_DOWN:return t.OBJECT.SCALE_DOWN;default:return ie.COVER}}),a=()=>{var d,c;const l=(d=i.value)==null?void 0:d.currentSrc,u=(c=o.value)==null?void 0:c.querySelector(`source[srcset="${l}"]`);l&&u?u.srcset=_e:i.value&&(i.value.src=_e)};return(l,u)=>(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,yn))),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??_e,width:r.width,onError:a},null,42,Pn)],2))}}),Tt=D(bn,[["__scopeId","data-v-3841f1c1"]]),kn=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(Tt,{alt:r.alt,class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).HEIGHT.FULL]),"is-lazy":r.isLazy,"object-fit":e.unref(ie).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))}}),Un=D(kn,[["__scopeId","data-v-8f2f8198"]]),_n={key:0,class:e.normalizeClass(["tide-indicator-label"])},Vn=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",_n,e.toDisplayString(r.label),1)):e.createCommentVNode("",!0)],2))}}),wn=D(Vn,[["__scopeId","data-v-d402ac82"]]),Fe=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(F,{key:0,class:e.normalizeClass([e.unref(t).FLEX.SHRINK.OFF]),icon:e.unref(h).ERROR,size:e.unref(b).SMALL},null,8,["class","icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",null,e.toDisplayString(n.message),1)],2))}}),It="Please enter a valid value",ee={NO_ERROR:{message:"",valid:!0},REQUIRED:{message:"Please fill out this field",valid:!1}},ce=(n,r)=>o=>{let i=ee.NO_ERROR;return o.trim().match(n)||(i={message:r??It,valid:!1}),i},Gn=({maxlength:n,minlength:r,required:o,value:i})=>{const s=i.length===0&&!o,a=n&&i.length>n;return!(!s&&r&&i.length<r)&&!a},He=({errorFromProps:n,maxlength:r,minlength:o,required:i,validators:s,value:a})=>{var l;if(n!=="")return{message:n,valid:!1};if(s){const u=Mn(a.value,s);if(!u.valid)return u}if(i&&((l=a.value)==null?void 0:l.trim())==="")return ee.REQUIRED;if(r||o){const u=xn({maxlength:r,minlength:o,required:i,value:a.value});if(!u.valid)return u}return ee.NO_ERROR},xn=({maxlength:n,minlength:r,required:o,value:i})=>{const s={message:"",valid:!0};return s.valid=Gn({maxlength:n,minlength:r,required:o,value:i}),s.valid||(s.message=It,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 Mn(n,r){for(const o of r){const i=o(n);if(!i.valid)return i}return{message:"",valid:!0}}const Hn=["for"],Yn=["checked","disabled","name","id"],zn=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"),a=Se(),l=e.ref(!1),u=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?!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(s,()=>{s.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,()=>{i("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=>s.value=R)},null,8,Yn),[[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(F,{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SECONDARY]),icon:n.indeterminate?e.unref(h).REMOVE:e.unref(h).CHECK,size:e.unref(b).SMALL},null,8,["class","icon","size"])):e.createCommentVNode("",!0)],2),n.label?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).AXIS1.BETWEEN,e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.GROW.ON,e.unref(t).FONT.ROLE.BODY_1])},[e.createElementVNode("span",null,e.toDisplayString(d.value),1),n.number?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SURFACE.VARIANT])}," ("+e.toDisplayString(e.unref(K)(n.number))+") ",3)):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0)],10,Hn),v.value?(e.openBlock(),e.createBlock(Fe,{key:0,message:v.value,"is-error":""},null,8,["message"])):e.createCommentVNode("",!0)],2))}}),Xn=D(zn,[["__scopeId","data-v-381d09d9"]]),Wn=["checked","disabled","name","id"],qn=["for"],$n={},Kn=e.defineComponent({...$n,__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,Wn),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(F,{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(b).SMALL},null,8,["class","icon","size"])):e.createCommentVNode("",!0)],2),n.label?(e.openBlock(),e.createElementBlock("label",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.BETWEEN,e.unref(t).FLEX.GROW.ON,e.unref(t).FONT.ROLE.BODY_1,n.disabled?e.unref(t).CURSOR.NOT_ALLOWED:e.unref(t).CURSOR.POINTER]),for: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,qn)):e.createCommentVNode("",!0)],2))}}),Qn=D(Kn,[["__scopeId","data-v-345366c5"]]),Zn=["for"],jn=["disabled","name","value","id"],Jn=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,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,jn),[[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,Zn))}}),er=D(Jn,[["__scopeId","data-v-33fad71e"]]),tr=["checked","id"],nr=["for"],rr={},or=e.defineComponent({...rr,__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,tr),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,nr)],2))}}),sr=D(or,[["__scopeId","data-v-bde66757"]]),ir={NUMBER:K,PHONE:Yt,PRICE:zt},se={alpha:/^[a-zA-Z]+$/g,alphaNumberOrEmpty:/^$|^[a-z0-9]+$/i,alphaSpace:/^[a-zA-Z ]+$/g,email:/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,numberFormatted:/^$|(?=.)^\$?(([1-9][0-9]{0,2}(,[0-9]{3})*)|0)?(\.[0-9]{1,2})?$/,phone:/^(?:\d{3}-\d{3}-\d{4}|\d{1}-\d{3}-\d{3}-\d{4})?$/,price:/(?=.)^\$?(([1-9][0-9]{0,2}(,[0-9]{3})*)|0)?(\.[0-9]{1,2})?$/,zip:/^\d{5}$/},lr={ALPHA_NUMBER_EMPTY:ce(se.alphaNumberOrEmpty),ALPHA_SPACE:ce(se.alphaSpace),EMAIL:ce(se.email,"Enter a valid email address (e.g. name@example.com)"),NUMBER:ce(se.numberFormatted,"Enter a valid number"),PHONE:ce(se.phone,"Enter a valid phone number"),ZIP:ce(se.zip,"Enter a valid Zip code")},te={EAGER:"eager",LAZY:"lazy"},ar=["for"],ur=["disabled","name","required","id"],cr=["label"],dr=["value"],fr=["selected","value"],Er=["selected","value"],mr=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"),a=Se(),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(()=>s.value===""),R=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)},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=He({errorFromProps:o.error,required:o.required,value:s})}),e.watch(()=>a==null?void 0:a.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,ar)):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=>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,dr))),128))],10,cr)):(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,fr))],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,Er))),128))],42,ur),[[e.vModelSelect,s.value]])],2),e.createVNode(F,{class:e.normalizeClass([e.unref(t).POSITION.ABSOLUTE,e.unref(t).POSITIONING.RIGHT,e.unref(t).MARGIN.RIGHT.ONE,e.unref(t).POINTER_EVENTS.OFF]),icon:e.unref(h).EXPAND_MORE,size:e.unref(b).SMALL},null,8,["class","icon","size"])],2),R.value?(e.openBlock(),e.createBlock(Fe,{key:0,"is-error":v.value,message:R.value},null,8,["is-error","message"])):e.createCommentVNode("",!0)],2))}}),vr=D(mr,[["__scopeId","data-v-8465bfdd"]]),pt="Please enter a valid value.",Ye=(n,r)=>typeof n=="string"&&n.length>0?n:typeof r=="string"&&r.length>0?r:pt,ze=(n,r)=>n!==!1||r!==!1,Or=({maxlength:n,minlength:r,required:o,value:i})=>{const s=i.length===0&&!o,a=n&&i.length>n;return!(!s&&r&&i.length<r)&&!a},Nt=({error:n,errorFromProps:r,maxlength:o,minlength:i,required:s=!1,validators:a,value:l})=>{if(n.value=r||!1,!n.value&&a){const u=Rr((l==null?void 0:l.value)||"",a);u.valid||(n.value=u.message)}if(!n.value&&(o||i)){const u=Lr({maxlength:o,minlength:i,required:s,value:(l==null?void 0:l.value)||""});u.valid||(n.value=u.message)}},Lr=({maxlength:n,minlength:r,required:o=!1,value:i})=>{const s={message:"",valid:!0};return s.valid=Or({maxlength:n,minlength:r,required:o,value:i}),s.valid||(s.message=pt,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 Rr(n,r){for(const o of r){const i=o(n);if(!i.valid)return i}return{message:"",valid:!0}}const Ar=["for"],Tr=["disabled","name","required","id"],Ir=["label"],pr=["value"],Nr=["selected","value"],gr=["selected","value"],Cr={},hr=e.defineComponent({...Cr,__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),a=e.ref(null),l=e.ref(o.required),u=e.ref(o.value),d=e.computed(()=>Ye(o.error,i.value)),c=e.computed(()=>o.required?`${o.label} *`:o.label),E=e.computed(()=>o.required&&!u.value||ze(i.value,o.error)),f=e.computed(()=>s.value||!v.value),v=e.computed(()=>u.value===void 0),m=()=>{var T;const R=new MouseEvent("mousedown");(T=a==null?void 0:a.value)==null||T.dispatchEvent(R)},O=()=>{s.value=!0},A=()=>{s.value=!1};return e.watch(()=>o.value,(R,T)=>{(R!==T||R!==u.value)&&(u.value=R)}),r({error:i,value:u}),(R,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,Ar)):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":T[0]||(T[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,pr))),128))],10,Ir)):(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,Nr))],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,gr))),128))],42,Tr),[[e.vModelSelect,u.value]])],2),e.createVNode(F,{class:e.normalizeClass([e.unref(t).POSITION.ABSOLUTE,e.unref(t).POSITIONING.RIGHT,e.unref(t).MARGIN.RIGHT.ONE,e.unref(t).POINTER_EVENTS.OFF]),icon:e.unref(h).EXPAND_MORE,size:e.unref(b).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(F,{key:0,class:e.normalizeClass([]),icon:e.unref(h).ERROR,size:e.unref(b).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_3])},e.toDisplayString(E.value?d.value:o.supportingText),3)],2)):e.createCommentVNode("",!0)],2))}}),Sr=D(hr,[["__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"},de={DECIMAL:"decimal",EMAIL:"email",NUMERIC:"numeric",SEARCH:"search",TEL:"tel",TEXT:"text",URL:"url"},Fr=(n,r)=>{if(r)return r;switch(n){case U.TEL:return de.TEL;case U.SEARCH:return de.SEARCH;case U.NUMBER:return de.NUMERIC;case U.EMAIL:return de.EMAIL;case U.URL:return de.URL}},Dr=["for"],Br=["autocomplete","disabled","inputmode","maxlength","minlength","name","required","type","id"],yr=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"),a=Se(),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||!T.value),A=e.computed(()=>Fr(o.type,o.inputmode)),R=e.computed(()=>o.type===U.PASSWORD&&E.value===!0?U.TEXT:o.type),T=e.computed(()=>s.value===""),L=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 B;s.value="",(B=d.value)==null||B.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 B;(B=d.value)==null||B.focus()},M=B=>{u.value&&B.target!==d.value&&B.preventDefault()};return e.watchEffect(()=>{l.value=He({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 B=(($=(k=s.value)==null?void 0:k.match(/\d/g))==null?void 0:$.join(""))||void 0;s.value=B?o.transformValue(B):""},{immediate:!0}),e.watch(()=>a==null?void 0:a.forceShowErrors.value,B=>{B&&(c.value=!0)},{immediate:!0}),e.watch(l,()=>{i("valid",l.value.valid)},{deep:!0,immediate:!0}),(B,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(F,{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SURFACE.VARIANT]),icon:n.iconLeading,size:e.unref(b).SMALL},null,8,["class","icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).WIDTH.FULL])},[n.prefix?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["tide-input-text-prefix",e.unref(t).FONT.ROLE.BODY_1,!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]=$=>s.value=$)},null,42,Br),[[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),L.value?(e.openBlock(),e.createElementBlock("button",{key:1,onClick:p,type:"button"},[e.createVNode(F,{class:e.normalizeClass([e.unref(t).MARGIN.FULL.HALF]),icon:e.unref(h).CLOSE,size:e.unref(b).SMALL},null,8,["class","icon","size"])])):e.createCommentVNode("",!0),N.value?(e.openBlock(),e.createElementBlock("button",{key:2,onClick:k[1]||(k[1]=$=>E.value=!E.value),type:"button"},[e.createVNode(F,{class:e.normalizeClass([e.unref(t).MARGIN.FULL.HALF]),icon:e.unref(h).VISIBILITY,size:e.unref(b).SMALL},null,8,["class","icon","size"])])):e.createCommentVNode("",!0)],42,Dr),I.value?(e.openBlock(),e.createBlock(Fe,{key:0,"is-error":v.value,message:I.value},null,8,["is-error","message"])):e.createCommentVNode("",!0)],2))}}),Pr=D(yr,[["__scopeId","data-v-dcbe53a3"]]),br=["for"],kr=["autocomplete","disabled","maxlength","minlength","name","required","type","id"],Ur={},_r=e.defineComponent({...Ur,__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),a=e.ref(null),l=e.ref(!1),u=e.ref(o.value),d=e.computed(()=>Ye(o.error,i.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||ze(i.value,o.error)),v=e.computed(()=>s.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=()=>{s.value=!0},T=()=>{s.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=()=>{Nt({error:i,errorFromProps:o.error,maxlength:o.maxlength,minlength:o.minlength,required:o.required,validators:o.validators,value:u})},I=p=>{u.value=p};return e.watch(()=>o.value,(p,g)=>{(p!==g||p!==u.value)&&(u.value=p)}),r({error:i,required:o.required,updateValue:I,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(F,{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SURFACE.VARIANT]),icon:n.iconLeading,size:e.unref(b).SMALL},null,8,["class","icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).WIDTH.FULL])},[n.prefix?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["tide-input-text-prefix",e.unref(t).FONT.ROLE.BODY_1,!f.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,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:T,onInput:L,id:n.inputId,"onUpdate:modelValue":g[0]||(g[0]=C=>u.value=C)},null,42,kr),[[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,type:"button"},[e.createVNode(F,{class:e.normalizeClass([e.unref(t).MARGIN.FULL.HALF]),icon:e.unref(h).CLOSE,size:e.unref(b).SMALL},null,8,["class","icon","size"])])):e.createCommentVNode("",!0),n.type===e.unref(U).PASSWORD?(e.openBlock(),e.createElementBlock("button",{key:2,onClick:g[1]||(g[1]=C=>l.value=!l.value),type:"button"},[e.createVNode(F,{class:e.normalizeClass([e.unref(t).MARGIN.FULL.HALF]),icon:e.unref(h).VISIBILITY,size:e.unref(b).SMALL},null,8,["class","icon","size"])])):e.createCommentVNode("",!0)],10,br),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(F,{key:0,class:e.normalizeClass([]),icon:e.unref(h).ERROR,size:e.unref(b).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_3])},e.toDisplayString(f.value?d.value:n.supportingText),3)],2)):e.createCommentVNode("",!0)],2))}}),Vr=D(_r,[["__scopeId","data-v-f461a2b3"]]),wr=["for"],Gr=["maxlength","minlength","name","required","rows","id"],xr=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"),a=Se(),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(()=>s.value===""),A=e.computed(()=>f.value&&l.value.message||o.supportingText),R=()=>{u.value=!0,o.errorDisplay===te.EAGER&&(d.value=!0)},T=()=>{u.value=!1,o.errorDisplay===te.LAZY&&(d.value=!0)},L=()=>{var I;(I=c.value)==null||I.focus()},N=I=>{u.value&&I.target!==c.value&&I.preventDefault()};return e.watchEffect(()=>{l.value=He({errorFromProps:o.error,maxlength:o.maxlength,minlength:o.minlength,required:o.required,validators:o.validators,value:s})}),e.watch(()=>a==null?void 0:a.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:L,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:R,onFocusout:T,id:n.inputId,"onUpdate:modelValue":p[0]||(p[0]=g=>s.value=g)},null,42,Gr),[[e.vModelText,s.value]])],42,wr),A.value?(e.openBlock(),e.createBlock(Fe,{key:0,"is-error":f.value,message:A.value},null,8,["is-error","message"])):e.createCommentVNode("",!0)],2))}}),Mr=D(xr,[["__scopeId","data-v-f46a098b"]]),Hr=["for"],Yr=["maxlength","minlength","name","required","rows","id"],zr={},Xr=e.defineComponent({...zr,__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),a=e.ref(null),l=e.ref(o.value),u=e.computed(()=>Ye(o.error,i.value)),d=e.computed(()=>o.required?`${o.label} *`:o.label),c=e.computed(()=>o.required&&l.value!==void 0&&!l.value||ze(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=()=>Nt({error:i,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:i,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]=T=>l.value=T)},null,42,Yr),[[e.vModelText,l.value]])],10,Hr),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(F,{key:0,icon:e.unref(h).ERROR,size:e.unref(b).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_3])},e.toDisplayString(c.value?u.value:n.supportingText),3)],2)):e.createCommentVNode("",!0)],2))}}),Wr=D(Xr,[["__scopeId","data-v-e3e8dc19"]]),qr={},$r=e.defineComponent({...qr,__name:"TideMenuItem",props:{element:{default:S.LINK},href:{default:void 0},isNewTab:{type:Boolean,default:!1},iconTrailing:{default:void 0},label:{}},setup(n){return(r,o)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.element),{class:e.normalizeClass(["tide-menu-item",e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.RADIUS.ZERO,e.unref(t).DISPLAY.FLEX,e.unref(t).ELLIPSIS,e.unref(t).FONT.ROLE.LABEL_2,e.unref(t).GAP.QUARTER,e.unref(t).PADDING.X.ONE,e.unref(t).PADDING.Y.HALF,e.unref(t).UNDERLINE.REST.OFF,e.unref(t).WIDTH.FULL]),href:n.href,target:n.isNewTab?e.unref(z).BLANK:void 0},{default:e.withCtx(()=>[e.createElementVNode("span",null,e.toDisplayString(n.label),1),n.iconTrailing?(e.openBlock(),e.createBlock(F,{key:0,class:e.normalizeClass([e.unref(t).MARGIN.LEFT.AUTO]),icon:n.iconTrailing,size:e.unref(b).LARGE},null,8,["class","icon","size"])):e.createCommentVNode("",!0)]),_:1},8,["class","href","target"]))}}),Kr=D($r,[["__scopeId","data-v-27e936fd"]]),gt={SM:"sm",MD:"md",LG:"lg",XL:"xl"},Qr={SM:768,MD:992,LG:1232,XL:1920},Ct=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"},Zr=["textContent"],jr=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(),a=e.ref(),l=()=>{var f;(f=a.value)==null||f.showModal()},u=()=>{var f;(f=a.value)==null||f.close()},d=()=>{e.nextTick(()=>{s.value&&(s.value.scrollTop=0)})},c=()=>{o.isDismissible&&i("close")},E=f=>{f.preventDefault(),o.isDismissible&&i("close")};return e.watch(()=>o.isOpen,f=>{a.value&&(f?(l(),d()):u(),Ct(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: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(gt).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,Zr),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"]))}}),Jr=D(jr,[["__scopeId","data-v-ff1ee773"]]),eo=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),a=e.computed(()=>new Array(o.pageTotal).fill("").map((u,d)=>d+1)),l=u=>{s.value=u,i("change",event,u)};return(u,d)=>(e.openBlock(),e.createElementBlock("section",{class:e.normalizeClass(["tide-pagination",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).WIDTH.FULL])},[e.createVNode(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(a.value,c=>(e.openBlock(),e.createElementBlock("li",{key:c},[e.createVNode(Lt,{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===a.value[a.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))}}),to=["top","right","bottom","left"],et=["start","end"],tt=to.reduce((n,r)=>n.concat(r,r+"-"+et[0],r+"-"+et[1]),[]),ge=Math.min,le=Math.max,Ce=Math.round,pe=Math.floor,Q=n=>({x:n,y:n}),no={left:"right",right:"left",bottom:"top",top:"bottom"},ro={start:"end",end:"start"};function nt(n,r,o){return le(n,ge(r,o))}function De(n,r){return typeof n=="function"?n(r):n}function me(n){return n.split("-")[0]}function ne(n){return n.split("-")[1]}function ht(n){return n==="x"?"y":"x"}function St(n){return n==="y"?"height":"width"}function Be(n){return["top","bottom"].includes(me(n))?"y":"x"}function Ft(n){return ht(Be(n))}function oo(n,r,o){o===void 0&&(o=!1);const i=ne(n),s=Ft(n),a=St(s);let l=s==="x"?i===(o?"end":"start")?"right":"left":i==="start"?"bottom":"top";return r.reference[a]>r.floating[a]&&(l=rt(l)),[l,rt(l)]}function so(n){return n.replace(/start|end/g,r=>ro[r])}function rt(n){return n.replace(/left|right|bottom|top/g,r=>no[r])}function io(n){return{top:0,right:0,bottom:0,left:0,...n}}function lo(n){return typeof n!="number"?io(n):{top:n,right:n,bottom:n,left:n}}function he(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 ot(n,r,o){let{reference:i,floating:s}=n;const a=Be(r),l=Ft(r),u=St(l),d=me(r),c=a==="y",E=i.x+i.width/2-s.width/2,f=i.y+i.height/2-s.height/2,v=i[u]/2-s[u]/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 ao=async(n,r,o)=>{const{placement:i="bottom",strategy:s="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:s}),{x:E,y:f}=ot(c,i,d),v=i,m={},O=0;for(let A=0;A<u.length;A++){const{name:R,fn:T}=u[A],{x:L,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=L??E,f=N??f,m={...m,[R]:{...m[R],...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}=ot(c,v,d)),A=-1)}return{x:E,y:f,placement:v,strategy:s,middlewareData:m}};async function Dt(n,r){var o;r===void 0&&(r={});const{x:i,y:s,platform:a,rects:l,elements:u,strategy:d}=n,{boundary:c="clippingAncestors",rootBoundary:E="viewport",elementContext:f="floating",altBoundary:v=!1,padding:m=0}=De(r,n),O=lo(m),R=u[v?f==="floating"?"reference":"floating":f],T=he(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:i,y:s,width:l.floating.width,height:l.floating.height}:l.reference,N=await(a.getOffsetParent==null?void 0:a.getOffsetParent(u.floating)),I=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=he(a.convertOffsetParentRelativeRectToViewportRelativeRect?await a.convertOffsetParentRelativeRectToViewportRelativeRect({elements:u,rect:L,offsetParent:N,strategy:d}):L);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 uo(n,r,o){return(n?[...o.filter(s=>ne(s)===n),...o.filter(s=>ne(s)!==n)]:o.filter(s=>me(s)===s)).filter(s=>n?ne(s)===n||(r?so(s)!==s:!1):!0)}const co=function(n){return n===void 0&&(n={}),{name:"autoPlacement",options:n,async fn(r){var o,i,s;const{rects:a,middlewareData:l,placement:u,platform:d,elements:c}=r,{crossAxis:E=!1,alignment:f,allowedPlacements:v=tt,autoAlignment:m=!0,...O}=De(n,r),A=f!==void 0||v===tt?uo(f||null,m,v):v,R=await Dt(r,O),T=((o=l.autoPlacement)==null?void 0:o.index)||0,L=A[T];if(L==null)return{};const N=oo(L,a,await(d.isRTL==null?void 0:d.isRTL(c.floating)));if(u!==L)return{reset:{placement:A[0]}};const I=[R[me(L)],R[N[0]],R[N[1]]],p=[...((i=l.autoPlacement)==null?void 0:i.overflows)||[],{placement:L,overflows:I}],g=A[T+1];if(g)return{data:{index:T+1,overflows:p},reset:{placement:g}};const C=p.map(B=>{const k=ne(B.placement);return[B.placement,k&&E?B.overflows.slice(0,2).reduce(($,Ie)=>$+Ie,0):B.overflows[0],B.overflows]}).sort((B,k)=>B[1]-k[1]),M=((s=C.filter(B=>B[2].slice(0,ne(B[0])?2:3).every(k=>k<=0))[0])==null?void 0:s[0])||C[0][0];return M!==u?{data:{index:T+1,overflows:p},reset:{placement:M}}:{}}}};async function fo(n,r){const{placement:o,platform:i,elements:s}=n,a=await(i.isRTL==null?void 0:i.isRTL(s.floating)),l=me(o),u=ne(o),d=Be(o)==="y",c=["left","top"].includes(l)?-1:1,E=a&&d?-1:1,f=De(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 Eo=function(n){return n===void 0&&(n=0),{name:"offset",options:n,async fn(r){var o,i;const{x:s,y:a,placement:l,middlewareData:u}=r,d=await fo(r,n);return l===((o=u.offset)==null?void 0:o.placement)&&(i=u.arrow)!=null&&i.alignmentOffset?{}:{x:s+d.x,y:a+d.y,data:{...d,placement:l}}}}},mo=function(n){return n===void 0&&(n={}),{name:"shift",options:n,async fn(r){const{x:o,y:i,placement:s}=r,{mainAxis:a=!0,crossAxis:l=!1,limiter:u={fn:R=>{let{x:T,y:L}=R;return{x:T,y:L}}},...d}=De(n,r),c={x:o,y:i},E=await Dt(r,d),f=Be(me(s)),v=ht(f);let m=c[v],O=c[f];if(a){const R=v==="y"?"top":"left",T=v==="y"?"bottom":"right",L=m+E[R],N=m-E[T];m=nt(L,m,N)}if(l){const R=f==="y"?"top":"left",T=f==="y"?"bottom":"right",L=O+E[R],N=O-E[T];O=nt(L,O,N)}const A=u.fn({...r,[v]:m,[f]:O});return{...A,data:{x:A.x-o,y:A.y-i,enabled:{[v]:a,[f]:l}}}}}};function ye(){return typeof window<"u"}function ue(n){return We(n)?(n.nodeName||"").toLowerCase():"#document"}function x(n){var r;return(n==null||(r=n.ownerDocument)==null?void 0:r.defaultView)||window}function j(n){var r;return(r=(We(n)?n.ownerDocument:n.document)||window.document)==null?void 0:r.documentElement}function We(n){return ye()?n instanceof Node||n instanceof x(n).Node:!1}function W(n){return ye()?n instanceof Element||n instanceof x(n).Element:!1}function Z(n){return ye()?n instanceof HTMLElement||n instanceof x(n).HTMLElement:!1}function st(n){return!ye()||typeof ShadowRoot>"u"?!1:n instanceof ShadowRoot||n instanceof x(n).ShadowRoot}function Te(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 vo(n){return["table","td","th"].includes(ue(n))}function Pe(n){return[":popover-open",":modal"].some(r=>{try{return n.matches(r)}catch{return!1}})}function qe(n){const r=$e(),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 Oo(n){let r=re(n);for(;Z(r)&&!Ee(r);){if(qe(r))return r;if(Pe(r))return null;r=re(r)}return null}function $e(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}function Ee(n){return["html","body","#document"].includes(ue(n))}function q(n){return x(n).getComputedStyle(n)}function be(n){return W(n)?{scrollLeft:n.scrollLeft,scrollTop:n.scrollTop}:{scrollLeft:n.scrollX,scrollTop:n.scrollY}}function re(n){if(ue(n)==="html")return n;const r=n.assignedSlot||n.parentNode||st(n)&&n.host||j(n);return st(r)?r.host:r}function Bt(n){const r=re(n);return Ee(r)?n.ownerDocument?n.ownerDocument.body:n.body:Z(r)&&Te(r)?r:Bt(r)}function Ae(n,r,o){var i;r===void 0&&(r=[]),o===void 0&&(o=!0);const s=Bt(n),a=s===((i=n.ownerDocument)==null?void 0:i.body),l=x(s);if(a){const u=Me(l);return r.concat(l,l.visualViewport||[],Te(s)?s:[],u&&o?Ae(u):[])}return r.concat(s,Ae(s,[],o))}function Me(n){return n.parent&&Object.getPrototypeOf(n.parent)?n.frameElement:null}function yt(n){const r=q(n);let o=parseFloat(r.width)||0,i=parseFloat(r.height)||0;const s=Z(n),a=s?n.offsetWidth:o,l=s?n.offsetHeight:i,u=Ce(o)!==a||Ce(i)!==l;return u&&(o=a,i=l),{width:o,height:i,$:u}}function Ke(n){return W(n)?n:n.contextElement}function fe(n){const r=Ke(n);if(!Z(r))return Q(1);const o=r.getBoundingClientRect(),{width:i,height:s,$:a}=yt(r);let l=(a?Ce(o.width):o.width)/i,u=(a?Ce(o.height):o.height)/s;return(!l||!Number.isFinite(l))&&(l=1),(!u||!Number.isFinite(u))&&(u=1),{x:l,y:u}}const Lo=Q(0);function Pt(n){const r=x(n);return!$e()||!r.visualViewport?Lo:{x:r.visualViewport.offsetLeft,y:r.visualViewport.offsetTop}}function Ro(n,r,o){return r===void 0&&(r=!1),!o||r&&o!==x(n)?!1:r}function ae(n,r,o,i){r===void 0&&(r=!1),o===void 0&&(o=!1);const s=n.getBoundingClientRect(),a=Ke(n);let l=Q(1);r&&(i?W(i)&&(l=fe(i)):l=fe(n));const u=Ro(a,o,i)?Pt(a):Q(0);let d=(s.left+u.x)/l.x,c=(s.top+u.y)/l.y,E=s.width/l.x,f=s.height/l.y;if(a){const v=x(a),m=i&&W(i)?x(i):i;let O=v,A=Me(O);for(;A&&i&&m!==O;){const R=fe(A),T=A.getBoundingClientRect(),L=q(A),N=T.left+(A.clientLeft+parseFloat(L.paddingLeft))*R.x,I=T.top+(A.clientTop+parseFloat(L.paddingTop))*R.y;d*=R.x,c*=R.y,E*=R.x,f*=R.y,d+=N,c+=I,O=x(A),A=Me(O)}}return he({width:E,height:f,x:d,y:c})}function Qe(n,r){const o=be(n).scrollLeft;return r?r.left+o:ae(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:Qe(n,i)),a=i.top+r.scrollTop;return{x:s,y:a}}function Ao(n){let{elements:r,rect:o,offsetParent:i,strategy:s}=n;const a=s==="fixed",l=j(i),u=r?Pe(r.floating):!1;if(i===l||u&&a)return o;let d={scrollLeft:0,scrollTop:0},c=Q(1);const E=Q(0),f=Z(i);if((f||!f&&!a)&&((ue(i)!=="body"||Te(l))&&(d=be(i)),Z(i))){const m=ae(i);c=fe(i),E.x=m.x+i.clientLeft,E.y=m.y+i.clientTop}const v=l&&!f&&!a?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 To(n){return Array.from(n.getClientRects())}function Io(n){const r=j(n),o=be(n),i=n.ownerDocument.body,s=le(r.scrollWidth,r.clientWidth,i.scrollWidth,i.clientWidth),a=le(r.scrollHeight,r.clientHeight,i.scrollHeight,i.clientHeight);let l=-o.scrollLeft+Qe(n);const u=-o.scrollTop;return q(i).direction==="rtl"&&(l+=le(r.clientWidth,i.clientWidth)-s),{width:s,height:a,x:l,y:u}}function po(n,r){const o=x(n),i=j(n),s=o.visualViewport;let a=i.clientWidth,l=i.clientHeight,u=0,d=0;if(s){a=s.width,l=s.height;const c=$e();(!c||c&&r==="fixed")&&(u=s.offsetLeft,d=s.offsetTop)}return{width:a,height:l,x:u,y:d}}function No(n,r){const o=ae(n,!0,r==="fixed"),i=o.top+n.clientTop,s=o.left+n.clientLeft,a=Z(n)?fe(n):Q(1),l=n.clientWidth*a.x,u=n.clientHeight*a.y,d=s*a.x,c=i*a.y;return{width:l,height:u,x:d,y:c}}function it(n,r,o){let i;if(r==="viewport")i=po(n,o);else if(r==="document")i=Io(j(n));else if(W(r))i=No(r,o);else{const s=Pt(n);i={x:r.x-s.x,y:r.y-s.y,width:r.width,height:r.height}}return he(i)}function kt(n,r){const o=re(n);return o===r||!W(o)||Ee(o)?!1:q(o).position==="fixed"||kt(o,r)}function go(n,r){const o=r.get(n);if(o)return o;let i=Ae(n,[],!1).filter(u=>W(u)&&ue(u)!=="body"),s=null;const a=q(n).position==="fixed";let l=a?re(n):n;for(;W(l)&&!Ee(l);){const u=q(l),d=qe(l);!d&&u.position==="fixed"&&(s=null),(a?!d&&!s:!d&&u.position==="static"&&!!s&&["absolute","fixed"].includes(s.position)||Te(l)&&!d&&kt(n,l))?i=i.filter(E=>E!==l):s=u,l=re(l)}return r.set(n,i),i}function Co(n){let{element:r,boundary:o,rootBoundary:i,strategy:s}=n;const l=[...o==="clippingAncestors"?Pe(r)?[]:go(r,this._c):[].concat(o),i],u=l[0],d=l.reduce((c,E)=>{const f=it(r,E,s);return c.top=le(f.top,c.top),c.right=ge(f.right,c.right),c.bottom=ge(f.bottom,c.bottom),c.left=le(f.left,c.left),c},it(r,u,s));return{width:d.right-d.left,height:d.bottom-d.top,x:d.left,y:d.top}}function ho(n){const{width:r,height:o}=yt(n);return{width:r,height:o}}function So(n,r,o){const i=Z(r),s=j(r),a=o==="fixed",l=ae(n,!0,a,r);let u={scrollLeft:0,scrollTop:0};const d=Q(0);if(i||!i&&!a)if((ue(r)!=="body"||Te(s))&&(u=be(r)),i){const v=ae(r,!0,a,r);d.x=v.x+r.clientLeft,d.y=v.y+r.clientTop}else s&&(d.x=Qe(s));const c=s&&!i&&!a?bt(s,u):Q(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 Ve(n){return q(n).position==="static"}function lt(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 Ut(n,r){const o=x(n);if(Pe(n))return o;if(!Z(n)){let s=re(n);for(;s&&!Ee(s);){if(W(s)&&!Ve(s))return s;s=re(s)}return o}let i=lt(n,r);for(;i&&vo(i)&&Ve(i);)i=lt(i,r);return i&&Ee(i)&&Ve(i)&&!qe(i)?o:i||Oo(n)||o}const Fo=async function(n){const r=this.getOffsetParent||Ut,o=this.getDimensions,i=await o(n.floating);return{reference:So(n.reference,await r(n.floating),n.strategy),floating:{x:0,y:0,width:i.width,height:i.height}}};function Do(n){return q(n).direction==="rtl"}const Bo={convertOffsetParentRelativeRectToViewportRelativeRect:Ao,getDocumentElement:j,getClippingRect:Co,getOffsetParent:Ut,getElementRects:Fo,getClientRects:To,getDimensions:ho,getScale:fe,isElement:W,isRTL:Do};function _t(n,r){return n.x===r.x&&n.y===r.y&&n.width===r.width&&n.height===r.height}function yo(n,r){let o=null,i;const s=j(n);function a(){var u;clearTimeout(i),(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=pe(f),A=pe(s.clientWidth-(E+v)),R=pe(s.clientHeight-(f+m)),T=pe(E),N={rootMargin:-O+"px "+-A+"px "+-R+"px "+-T+"px",threshold:le(0,ge(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&&!_t(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),a}function Po(n,r,o,i){i===void 0&&(i={});const{ancestorScroll:s=!0,ancestorResize:a=!0,elementResize:l=typeof ResizeObserver=="function",layoutShift:u=typeof IntersectionObserver=="function",animationFrame:d=!1}=i,c=Ke(n),E=s||a?[...c?Ae(c):[],...Ae(r)]:[];E.forEach(T=>{s&&T.addEventListener("scroll",o,{passive:!0}),a&&T.addEventListener("resize",o)});const f=c&&u?yo(c,o):null;let v=-1,m=null;l&&(m=new ResizeObserver(T=>{let[L]=T;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?ae(n):null;d&&R();function R(){const T=ae(n);A&&!_t(A,T)&&o(),A=T,O=requestAnimationFrame(R)}return o(),()=>{var T;E.forEach(L=>{s&&L.removeEventListener("scroll",o),a&&L.removeEventListener("resize",o)}),f==null||f(),(T=m)==null||T.disconnect(),m=null,d&&cancelAnimationFrame(O)}}const at=Eo,ut=co,ct=mo,bo=(n,r,o)=>{const i=new Map,s={platform:Bo,...o},a={...s.platform,_c:i};return ao(n,r,{...s,platform:a})};function ko(n){return n!=null&&typeof n=="object"&&"$el"in n}function dt(n){if(ko(n)){const r=n.$el;return We(r)&&ue(r)==="#comment"?null:r}return n}function ve(n){return typeof n=="function"?n():e.unref(n)}function Vt(n){return typeof window>"u"?1:(n.ownerDocument.defaultView||window).devicePixelRatio||1}function ft(n,r){const o=Vt(n);return Math.round(r*o)/o}function Uo(n,r,o){o===void 0&&(o={});const i=o.whileElementsMounted,s=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(()=>dt(n.value)),E=e.computed(()=>dt(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),T=e.computed(()=>{const C={position:m.value,left:"0",top:"0"};if(!E.value)return C;const w=ft(E.value,f.value),M=ft(E.value,v.value);return d.value?{...C,transform:"translate("+w+"px, "+M+"px)",...Vt(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=s.value;bo(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 I(){typeof L=="function"&&(L(),L=void 0)}function p(){if(I(),i===void 0){N();return}if(c.value!=null&&E.value!=null){L=i(c.value,E.value,N);return}}function g(){s.value||(R.value=!1)}return e.watch([a,l,u,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(R),floatingStyles:T,update:N}}const _o=(n,r)=>!(Array.isArray(r)?r:[r]).some(i=>i.contains(n.target)),Vo=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),a=e.ref(!1),l=e.ref(!1),u=e.ref([ut(),at({mainAxis:r.offset}),ct({padding:16})]),d=e.computed(()=>a.value||l.value),{floatingStyles:c}=Uo(o,i,{middleware:u,strategy:"fixed",whileElementsMounted:Po}),E=I=>{!o.value||!i.value||_o(I,[o.value,i.value])&&(l.value=!1,I.preventDefault(),I.stopImmediatePropagation())},f=()=>{a.value=!0},v=()=>{a.value=!1},m=I=>{I.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=I=>{I.key==="Escape"&&(l.value=!1)},T=()=>{s.value&&(s.value.addEventListener("click",E,!0),s.value.addEventListener("keydown",R))},L=()=>{s.value&&(s.value.removeEventListener("click",E,!0),s.value.removeEventListener("keydown",R))},N=()=>{o.value=document.getElementById(r.anchorId)};return e.watch(()=>l.value,I=>{I?T():L()}),e.watch(()=>r.anchorId,()=>{A(),N(),O()}),e.watchEffect(()=>{u.value=[ut(),at({mainAxis:r.offset}),ct({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"]))}}),wo=D(Vo,[["__scopeId","data-v-508322dc"]]),Go={class:"tide-seo-links"},xo=e.defineComponent({__name:"TideSeoLinks",props:{heading:{default:""},links:{}},setup(n){const r=n;return(o,i)=>(e.openBlock(),e.createElementBlock("section",Go,[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.createVNode(oe,{class:e.normalizeClass([e.unref(t).UNDERLINE.REST.OFF]),href:s.url,target:s.isNewTab?e.unref(z).BLANK:e.unref(z).SELF},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(s.label),1)]),_:2},1032,["class","href","target"])],2))),128))],2)]))}}),Mo=D(xo,[["__scopeId","data-v-5cd4472f"]]),Ho=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),a=()=>{var c;(c=s.value)==null||c.showModal()},l=()=>{var c;(c=s.value)==null||c.close()},u=()=>{i("close")},d=c=>{c.preventDefault(),i("close")};return e.watch(()=>o.isOpen,c=>{s.value&&(c?a():l(),Ct(c))}),e.onBeforeMount(()=>{Xe()}),e.onMounted(()=>{o.isOpen&&a()}),(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(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(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(Ne),e.createElementVNode("div",{class:e.normalizeClass(["tide-sheet-content",e.unref(t).DISPLAY.GRID,e.unref(t).HEIGHT.FULL,e.unref(t).ISOLATION.ISOLATE,e.unref(t).OVERFLOW.X.HIDDEN,e.unref(t).OVERFLOW.Y.AUTO,e.unref(t).PADDING.BOTTOM.ONE,e.unref(t).POSITION.RELATIVE,e.unref(t).WIDTH.FULL])},[e.renderSlot(c.$slots,"default",{},void 0,!0)],2)],2)],34)],8,["to"]))}}),Yo=D(Ho,[["__scopeId","data-v-7a99c97b"]]),zo=["disabled"],Xo=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(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: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(F,{icon:e.unref(h).CHECK,size:e.unref(b).LARGE},null,8,["icon","size"])],2)],10,zo))}}),Wo=D(Xo,[["__scopeId","data-v-5c084af4"]]);exports.ALERT=G;exports.BADGE_COLOR=X;exports.BADGE_COLOR_DETAILS=xe;exports.BADGE_TRUSTED=Ot;exports.BREAKPOINT=gt;exports.CSS=t;exports.ELEMENT=S;exports.ELEMENT_BROAD=H;exports.FORMAT=ir;exports.FORMAT_REGEX=se;exports.ICON=h;exports.ICON_REALM=Xt;exports.INPUT_MODE=de;exports.MEDIA=Qr;exports.OBJECT_FIT=ie;exports.ORIENTATION=we;exports.PRIORITY=V;exports.REALM=Et;exports.SIZE=b;exports.SIZE_BUTTON=Oe;exports.TARGET=z;exports.TEXT_INPUT_TYPE=U;exports.TYPE_CARD=Le;exports.TideAccordionItem=$t;exports.TideAlert=jt;exports.TideBadge=Jt;exports.TideBadgeTrustedPartner=en;exports.TideBadgeVerifiedVehicle=nn;exports.TideBreadCrumbs=sn;exports.TideButton=ln;exports.TideButtonIcon=Y;exports.TideButtonPagination=Lt;exports.TideButtonSegmented=dn;exports.TideCard=En;exports.TideCarousel=On;exports.TideChipAction=Rn;exports.TideChipFilter=Tn;exports.TideChipInput=pn;exports.TideColumns=Dn;exports.TideDivider=Ne;exports.TideForm=Bn;exports.TideIcon=F;exports.TideImage=Tt;exports.TideImageBackground=Un;exports.TideIndicator=wn;exports.TideInputCheckbox=Xn;exports.TideInputCheckboxDeprecated=Qn;exports.TideInputRadio=er;exports.TideInputRadioDeprecated=sr;exports.TideInputSelect=vr;exports.TideInputSelectDeprecated=Sr;exports.TideInputText=Pr;exports.TideInputTextDeprecated=Vr;exports.TideInputTextarea=Mr;exports.TideInputTextareaDeprecated=Wr;exports.TideLink=Ge;exports.TideMenuItem=Kr;exports.TideModal=Jr;exports.TidePagination=eo;exports.TidePopover=wo;exports.TideSeoLinks=Mo;exports.TideSheet=Yo;exports.TideSwitch=Wo;exports.VALIDATOR=lr;exports.provideTideConfig=Kt;exports.useTideForm=At;
2
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlkZS1kZXNpZ24tc3lzdGVtLmNqcyIsInNvdXJjZXMiOlsiLi4vc3JjL3R5cGVzL09yaWVudGF0aW9uLnRzIiwiLi4vc3JjL3R5cGVzL1N0eWxlcy50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVEaXZpZGVyLnZ1ZSIsIi4uL3NyYy90eXBlcy9SZWFsbS50cyIsIi4uL3NyYy90eXBlcy9TaXplLnRzIiwiLi4vc3JjL3V0aWxpdGllcy9mb3JtYXQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSWNvbi52dWUiLCIuLi9zcmMvdHlwZXMvSWNvbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVBY2NvcmRpb25JdGVtLnZ1ZSIsIi4uL3NyYy90eXBlcy9FbGVtZW50LnRzIiwiLi4vc3JjL2NvbXBvc2FibGVzL3VzZVRpZGVDb25maWcudHMiLCIuLi9zcmMvY29tcG9uZW50cy9JbnRlcm5hbEJhc2VMaW5rLnZ1ZSIsIi4uL3NyYy90eXBlcy9Qcmlvcml0eS50cyIsIi4uL3NyYy90eXBlcy9UYXJnZXQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQnV0dG9uSWNvbi52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlTGluay52dWUiLCIuLi9zcmMvdHlwZXMvQWxlcnQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQWxlcnQudnVlIiwiLi4vc3JjL3R5cGVzL0JhZGdlLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUJhZGdlLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCYWRnZVRydXN0ZWRQYXJ0bmVyLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCYWRnZVZlcmlmaWVkVmVoaWNsZS52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQnJlYWRDcnVtYnMudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUJ1dHRvbi52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQnV0dG9uUGFnaW5hdGlvbi52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQnV0dG9uU2VnbWVudGVkLnZ1ZSIsIi4uL3NyYy90eXBlcy9DYXJkLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUNhcmQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUNhcm91c2VsLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVDaGlwQWN0aW9uLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVDaGlwRmlsdGVyLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVDaGlwSW5wdXQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUNvbHVtbnMudnVlIiwiLi4vc3JjL2NvbXBvc2FibGVzL3VzZVRpZGVGb3JtLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUZvcm0udnVlIiwiLi4vc3JjL3R5cGVzL0ltYWdlLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUltYWdlLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbWFnZUJhY2tncm91bmQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUluZGljYXRvci52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRTdXBwb3J0aW5nVGV4dC52dWUiLCIuLi9zcmMvdXRpbGl0aWVzL3ZhbGlkYXRpb24udHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRDaGVja2JveC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRDaGVja2JveERlcHJlY2F0ZWQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0UmFkaW8udnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0UmFkaW9EZXByZWNhdGVkLnZ1ZSIsIi4uL3NyYy90eXBlcy9Gb3JtYXR0ZWQudHMiLCIuLi9zcmMvdHlwZXMvVmFsaWRhdGlvbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFNlbGVjdC52dWUiLCIuLi9zcmMvdXRpbGl0aWVzL3ZhbGlkYXRpb24tZGVwcmVjYXRlZC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFNlbGVjdERlcHJlY2F0ZWQudnVlIiwiLi4vc3JjL3R5cGVzL1RleHRJbnB1dC50cyIsIi4uL3NyYy91dGlsaXRpZXMvZm9ybXMudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRUZXh0LnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFRleHREZXByZWNhdGVkLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFRleHRhcmVhLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFRleHRhcmVhRGVwcmVjYXRlZC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlTWVudUl0ZW0udnVlIiwiLi4vc3JjL3R5cGVzL0JyZWFrcG9pbnQudHMiLCIuLi9zcmMvdXRpbGl0aWVzL3ZpZXdwb3J0LnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZU1vZGFsLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVQYWdpbmF0aW9uLnZ1ZSIsIi4uL25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvdXRpbHMvZGlzdC9mbG9hdGluZy11aS51dGlscy5tanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL2NvcmUvZGlzdC9mbG9hdGluZy11aS5jb3JlLm1qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvdXRpbHMvZGlzdC9mbG9hdGluZy11aS51dGlscy5kb20ubWpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbG9hdGluZy11aS9kb20vZGlzdC9mbG9hdGluZy11aS5kb20ubWpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbG9hdGluZy11aS92dWUvZGlzdC9mbG9hdGluZy11aS52dWUubWpzIiwiLi4vc3JjL3V0aWxpdGllcy9ldmVudC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVQb3BvdmVyLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVTZW9MaW5rcy52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlU2hlZXQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZVN3aXRjaC52dWUiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IE9SSUVOVEFUSU9OID0ge1xuICBIT1JJWk9OVEFMOiAnaG9yaXpvbnRhbCcsXG4gIFZFUlRJQ0FMOiAndmVydGljYWwnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgT3JpZW50YXRpb24gPSAodHlwZW9mIE9SSUVOVEFUSU9OKVtrZXlvZiB0eXBlb2YgT1JJRU5UQVRJT05dO1xuIiwiLyogZXNsaW50LWRpc2FibGUgdnVlL3NvcnQta2V5cyAqL1xuXG5pbXBvcnQgdHlwZSB7IEJyZWFrcG9pbnQgfSBmcm9tICdAL3R5cGVzL0JyZWFrcG9pbnQnO1xuXG5leHBvcnQgY29uc3QgQ1NTID0ge1xuICB3aXRoQnJlYWtwb2ludDogKHV0aWxpdGllczogc3RyaW5nW10sIGJyZWFrcG9pbnQ6IEJyZWFrcG9pbnQpOiBzdHJpbmdbXSA9PiB7XG4gICAgcmV0dXJuIHV0aWxpdGllcy5tYXAoKHV0aWxpdHkpID0+IGAke2JyZWFrcG9pbnR9LSR7dXRpbGl0eX1gKTtcbiAgfSxcbiAgQUxJR046IHtcbiAgICBYOiB7XG4gICAgICBDRU5URVI6ICd0aWRlLXRleHQtY2VudGVyJyxcbiAgICAgIEpVU1RJRlk6ICd0aWRlLXRleHQtanVzdGlmeScsXG4gICAgICBMRUZUOiAndGlkZS10ZXh0LWxlZnQnLFxuICAgICAgUklHSFQ6ICd0aWRlLXRleHQtcmlnaHQnLFxuICAgIH0sXG4gICAgWToge1xuICAgICAgSU5JVElBTDogJ3RpZGUtYWxpZ24taW5pdGlhbCcsXG4gICAgICBNSURETEU6ICd0aWRlLWFsaWduLW1pZGRsZScsXG4gICAgfSxcbiAgfSxcbiAgQVhJUzE6IHtcbiAgICBBUk9VTkQ6ICd0aWRlLWF4aXMxLWFyb3VuZCcsXG4gICAgQkVUV0VFTjogJ3RpZGUtYXhpczEtYmV0d2VlbicsXG4gICAgQ0VOVEVSOiAndGlkZS1heGlzMS1jZW50ZXInLFxuICAgIEVORDogJ3RpZGUtYXhpczEtZW5kJyxcbiAgICBTVEFSVDogJ3RpZGUtYXhpczEtc3RhcnQnLFxuICB9LFxuICBBWElTMjoge1xuICAgIEFST1VORDogJ3RpZGUtYXhpczItYXJvdW5kJyxcbiAgICBDRU5URVI6ICd0aWRlLWF4aXMyLWNlbnRlcicsXG4gICAgRU5EOiAndGlkZS1heGlzMi1lbmQnLFxuICAgIFNUQVJUOiAndGlkZS1heGlzMi1zdGFydCcsXG4gICAgU1RSRVRDSDogJ3RpZGUtYXhpczItc3RyZXRjaCcsXG4gIH0sXG4gIEJHOiB7XG4gICAgR0xPQkFMOiB7XG4gICAgICBQUklNQVJZOiB7XG4gICAgICAgIEVSUk9SOiAndGlkZS1iZy1wcmltYXJ5LWVycm9yJyxcbiAgICAgICAgSU5GTzogJ3RpZGUtYmctcHJpbWFyeS1pbmZvJyxcbiAgICAgICAgU1VDQ0VTUzogJ3RpZGUtYmctcHJpbWFyeS1zdWNjZXNzJyxcbiAgICAgICAgV0FSTklORzogJ3RpZGUtYmctcHJpbWFyeS13YXJuaW5nJyxcbiAgICAgIH0sXG4gICAgICBTVVJGQUNFOiB7XG4gICAgICAgIEVSUk9SOiAndGlkZS1iZy1zdXJmYWNlLWVycm9yJyxcbiAgICAgICAgSU5GTzogJ3RpZGUtYmctc3VyZmFjZS1pbmZvJyxcbiAgICAgICAgU1VDQ0VTUzogJ3RpZGUtYmctc3VyZmFjZS1zdWNjZXNzJyxcbiAgICAgICAgV0FSTklORzogJ3RpZGUtYmctc3VyZmFjZS13YXJuaW5nJyxcblxuICAgICAgICBCTFVFOiAndGlkZS1iZy1zdXJmYWNlLWJsdWUnLFxuICAgICAgICBHUkVFTjogJ3RpZGUtYmctc3VyZmFjZS1ncmVlbicsXG4gICAgICAgIExJTUU6ICd0aWRlLWJnLXN1cmZhY2UtbGltZScsXG4gICAgICAgIE9SQU5HRTogJ3RpZGUtYmctc3VyZmFjZS1vcmFuZ2UnLFxuICAgICAgICBQVVJQTEU6ICd0aWRlLWJnLXN1cmZhY2UtcHVycGxlJyxcbiAgICAgICAgUkVEOiAndGlkZS1iZy1zdXJmYWNlLXJlZCcsXG4gICAgICAgIFNBTE1PTjogJ3RpZGUtYmctc3VyZmFjZS1zYWxtb24nLFxuICAgICAgICBURUFMOiAndGlkZS1iZy1zdXJmYWNlLXRlYWwnLFxuICAgICAgICBZRUxMT1c6ICd0aWRlLWJnLXN1cmZhY2UteWVsbG93JyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBJTklUSUFMOiAndGlkZS1iZy1pbml0aWFsJyxcbiAgICBCTFVSOiAndGlkZS1iZy1ibHVyJyxcbiAgICBQUklNQVJZOiAndGlkZS1iZy1wcmltYXJ5JyxcbiAgICBTRUNPTkRBUlk6ICd0aWRlLWJnLXNlY29uZGFyeScsXG4gICAgU1VSRkFDRToge1xuICAgICAgQUNDRU5UOiAndGlkZS1iZy1zdXJmYWNlLWFjY2VudCcsXG4gICAgICBCUkFORDogJ3RpZGUtYmctc3VyZmFjZS1icmFuZCcsXG4gICAgICBERUZBVUxUOiAndGlkZS1iZy1zdXJmYWNlJyxcbiAgICAgIEZMT0FUSU5HOiAndGlkZS1iZy1zdXJmYWNlLWZsb2F0aW5nJyxcbiAgICAgIEdSQURJRU5UOiAndGlkZS1iZy1zdXJmYWNlLWdyYWRpZW50JyxcbiAgICAgIFZBUklBTlQ6ICd0aWRlLWJnLXN1cmZhY2UtdmFyaWFudCcsXG4gICAgfSxcbiAgICBUUkFOU1BBUkVOVDoge1xuICAgICAgT05FX0hVTkRSRUQ6ICd0aWRlLXRyYW5zcGFyZW50LTEwMCcsXG4gICAgICBUV09fSFVORFJFRDogJ3RpZGUtdHJhbnNwYXJlbnQtMjAwJyxcbiAgICAgIFRIUkVFX0hVTkRSRUQ6ICd0aWRlLXRyYW5zcGFyZW50LTMwMCcsXG4gICAgICBGT1VSX0hVTkRSRUQ6ICd0aWRlLXRyYW5zcGFyZW50LTQwMCcsXG4gICAgfSxcbiAgfSxcbiAgQk9SREVSOiB7XG4gICAgQ09MT1I6IHtcbiAgICAgIEdMT0JBTDoge1xuICAgICAgICBFUlJPUjogJ3RpZGUtYm9yZGVyLWVycm9yJyxcbiAgICAgICAgSU5GTzogJ3RpZGUtYm9yZGVyLWluZm8nLFxuICAgICAgICBTVUNDRVNTOiAndGlkZS1ib3JkZXItc3VjY2VzcycsXG4gICAgICAgIFdBUk5JTkc6ICd0aWRlLWJvcmRlci13YXJuaW5nJyxcblxuICAgICAgICBCTFVFOiAndGlkZS1ib3JkZXItYmx1ZScsXG4gICAgICAgIEdSRUVOOiAndGlkZS1ib3JkZXItZ3JlZW4nLFxuICAgICAgICBMSU1FOiAndGlkZS1ib3JkZXItbGltZScsXG4gICAgICAgIE9SQU5HRTogJ3RpZGUtYm9yZGVyLW9yYW5nZScsXG4gICAgICAgIFBVUlBMRTogJ3RpZGUtYm9yZGVyLXB1cnBsZScsXG4gICAgICAgIFJFRDogJ3RpZGUtYm9yZGVyLXJlZCcsXG4gICAgICAgIFNBTE1PTjogJ3RpZGUtYm9yZGVyLXNhbG1vbicsXG4gICAgICAgIFRFQUw6ICd0aWRlLWJvcmRlci10ZWFsJyxcbiAgICAgICAgWUVMTE9XOiAndGlkZS1ib3JkZXIteWVsbG93JyxcbiAgICAgIH0sXG4gICAgICBJTklUSUFMOiAndGlkZS1ib3JkZXItY29sb3ItaW5pdGlhbCcsXG4gICAgICBERUZBVUxUOiAndGlkZS1ib3JkZXInLFxuICAgICAgRkxPQVRJTkc6ICd0aWRlLWJvcmRlci1mbG9hdGluZycsXG4gICAgICBISUdIOiAndGlkZS1ib3JkZXItaGlnaCcsXG4gICAgICBMT1c6ICd0aWRlLWJvcmRlci1sb3cnLFxuICAgICAgUFJJTUFSWTogJ3RpZGUtYm9yZGVyLXByaW1hcnknLFxuICAgIH0sXG4gICAgUkFESVVTOiB7XG4gICAgICBaRVJPOiAndGlkZS1yYWRpdXMtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1yYWRpdXMtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXJhZGl1cy0xLzInLFxuICAgICAgT05FOiAndGlkZS1yYWRpdXMtMScsXG4gICAgICBGVUxMOiAndGlkZS1yYWRpdXMtZnVsbCcsXG4gICAgfSxcbiAgICBTVFlMRToge1xuICAgICAgREFTSEVEOiAndGlkZS1ib3JkZXItZGFzaGVkJyxcbiAgICAgIFNPTElEOiAndGlkZS1ib3JkZXItc29saWQnLFxuICAgIH0sXG4gICAgQk9UVE9NOiB7XG4gICAgICBaRVJPOiAndGlkZS1ib3JkZXItYm90dG9tLTAnLFxuICAgICAgT05FOiAndGlkZS1ib3JkZXItYm90dG9tLTEnLFxuICAgICAgVFdPOiAndGlkZS1ib3JkZXItYm90dG9tLTInLFxuICAgIH0sXG4gICAgRlVMTDoge1xuICAgICAgWkVSTzogJ3RpZGUtYm9yZGVyLTAnLFxuICAgICAgT05FOiAndGlkZS1ib3JkZXItMScsXG4gICAgICBUV086ICd0aWRlLWJvcmRlci0yJyxcbiAgICB9LFxuICAgIExFRlQ6IHtcbiAgICAgIFpFUk86ICd0aWRlLWJvcmRlci1sZWZ0LTAnLFxuICAgICAgT05FOiAndGlkZS1ib3JkZXItbGVmdC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLWxlZnQtMicsXG4gICAgfSxcbiAgICBSSUdIVDoge1xuICAgICAgWkVSTzogJ3RpZGUtYm9yZGVyLXJpZ2h0LTAnLFxuICAgICAgT05FOiAndGlkZS1ib3JkZXItcmlnaHQtMScsXG4gICAgICBUV086ICd0aWRlLWJvcmRlci1yaWdodC0yJyxcbiAgICB9LFxuICAgIFRPUDoge1xuICAgICAgWkVSTzogJ3RpZGUtYm9yZGVyLXRvcC0wJyxcbiAgICAgIE9ORTogJ3RpZGUtYm9yZGVyLXRvcC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLXRvcC0yJyxcbiAgICB9LFxuICB9LFxuICBCT1hfU0laSU5HOiB7XG4gICAgQk9SREVSX0JPWDogJ3RpZGUtYm94LWJvcmRlcicsXG4gICAgQ09OVEVOVF9CT1g6ICd0aWRlLWJveC1jb250ZW50JyxcbiAgfSxcbiAgQlJFQUtfSU5TSURFOiB7XG4gICAgQVZPSURfQ09MVU1OOiAndGlkZS1icmVhay1pbnNpZGUtYXZvaWQtY29sdW1uJyxcbiAgfSxcbiAgQlJFQUtfV09SRDoge1xuICAgIE9GRjogJ3RpZGUtYnJlYWstaW5pdGlhbCcsXG4gICAgT046ICd0aWRlLWJyZWFrLXdvcmQnLFxuICB9LFxuICBDT0xVTU5TOiB7XG4gICAgSU5JVElBTDogJ3RpZGUtY29sdW1ucy1pbml0aWFsJyxcbiAgICBPTkU6ICd0aWRlLWNvbHVtbnMtMScsXG4gICAgVFdPOiAndGlkZS1jb2x1bW5zLTInLFxuICAgIFRIUkVFOiAndGlkZS1jb2x1bW5zLTMnLFxuICAgIEZPVVI6ICd0aWRlLWNvbHVtbnMtNCcsXG4gIH0sXG4gIENVUlNPUjoge1xuICAgIE5PVF9BTExPV0VEOiAndGlkZS1jdXJzb3Itbm90LWFsbG93ZWQnLFxuICAgIFBPSU5URVI6ICd0aWRlLWN1cnNvci1wb2ludGVyJyxcbiAgICBURVhUOiAndGlkZS1jdXJzb3ItdGV4dCcsXG4gIH0sXG4gIERJU1BMQVk6IHtcbiAgICBCTE9DSzogJ3RpZGUtZGlzcGxheS1ibG9jaycsXG4gICAgQ09OVEVOVFM6ICd0aWRlLWRpc3BsYXktY29udGVudHMnLFxuICAgIEZMRVg6ICd0aWRlLWRpc3BsYXktZmxleCcsXG4gICAgR1JJRDogJ3RpZGUtZGlzcGxheS1ncmlkJyxcbiAgICBJTklUSUFMOiAndGlkZS1kaXNwbGF5LWluaXRpYWwnLFxuICAgIElOTElORTogJ3RpZGUtZGlzcGxheS1pbmxpbmUnLFxuICAgIElOTElORV9CTE9DSzogJ3RpZGUtZGlzcGxheS1pbmxpbmUtYmxvY2snLFxuICAgIElOTElORV9GTEVYOiAndGlkZS1kaXNwbGF5LWlubGluZS1mbGV4JyxcbiAgICBOT05FOiAndGlkZS1kaXNwbGF5LW5vbmUnLFxuICB9LFxuICBFTExJUFNJUzogJ3RpZGUtZWxsaXBzaXMnLFxuICBGTEVYOiB7XG4gICAgQkFTSVM6IHtcbiAgICAgIEFVVE86ICd0aWRlLWZsZXgtYmFzaXMtYXV0bycsXG4gICAgICBaRVJPOiAndGlkZS1mbGV4LWJhc2lzLTAnLFxuICAgIH0sXG4gICAgRElSRUNUSU9OOiB7XG4gICAgICBDT0xVTU46ICd0aWRlLWZsZXgtY29sdW1uJyxcbiAgICAgIENPTFVNTl9SRVZFUlNFOiAndGlkZS1mbGV4LWNvbHVtbi1yZXZlcnNlJyxcbiAgICAgIFJPVzogJ3RpZGUtZmxleC1yb3cnLFxuICAgICAgUk9XX1JFVkVSU0U6ICd0aWRlLWZsZXgtcm93LXJldmVyc2UnLFxuICAgIH0sXG4gICAgR1JPVzoge1xuICAgICAgT0ZGOiAndGlkZS1ncm93LW5vbmUnLFxuICAgICAgT046ICd0aWRlLWdyb3cnLFxuICAgIH0sXG4gICAgU0hSSU5LOiB7XG4gICAgICBPRkY6ICd0aWRlLXNocmluay1ub25lJyxcbiAgICAgIE9OOiAndGlkZS1zaHJpbmsnLFxuICAgIH0sXG4gICAgV1JBUDogJ3RpZGUtZmxleC13cmFwJyxcbiAgfSxcbiAgRk9OVDoge1xuICAgIENPTE9SOiB7XG4gICAgICBHTE9CQUw6IHtcbiAgICAgICAgRVJST1I6ICd0aWRlLWZvbnQtZXJyb3InLFxuICAgICAgICBJTkZPOiAndGlkZS1mb250LWluZm8nLFxuICAgICAgICBTVUNDRVNTOiAndGlkZS1mb250LXN1Y2Nlc3MnLFxuICAgICAgICBXQVJOSU5HOiAndGlkZS1mb250LXdhcm5pbmcnLFxuXG4gICAgICAgIEJMVUU6ICd0aWRlLWZvbnQtYmx1ZScsXG4gICAgICAgIEdSRUVOOiAndGlkZS1mb250LWdyZWVuJyxcbiAgICAgICAgTElNRTogJ3RpZGUtZm9udC1saW1lJyxcbiAgICAgICAgT1JBTkdFOiAndGlkZS1mb250LW9yYW5nZScsXG4gICAgICAgIFBVUlBMRTogJ3RpZGUtZm9udC1wdXJwbGUnLFxuICAgICAgICBSRUQ6ICd0aWRlLWZvbnQtcmVkJyxcbiAgICAgICAgU0FMTU9OOiAndGlkZS1mb250LXNhbG1vbicsXG4gICAgICAgIFRFQUw6ICd0aWRlLWZvbnQtdGVhbCcsXG4gICAgICAgIFlFTExPVzogJ3RpZGUtZm9udC15ZWxsb3cnLFxuXG4gICAgICAgIFBSSU1BUlk6IHtcbiAgICAgICAgICBCTFVFOiAndGlkZS1mb250LXByaW1hcnktYmx1ZScsXG4gICAgICAgICAgR1JFRU46ICd0aWRlLWZvbnQtcHJpbWFyeS1ncmVlbicsXG4gICAgICAgICAgTElNRTogJ3RpZGUtZm9udC1wcmltYXJ5LWxpbWUnLFxuICAgICAgICAgIE9SQU5HRTogJ3RpZGUtZm9udC1wcmltYXJ5LW9yYW5nZScsXG4gICAgICAgICAgUFVSUExFOiAndGlkZS1mb250LXByaW1hcnktcHVycGxlJyxcbiAgICAgICAgICBSRUQ6ICd0aWRlLWZvbnQtcHJpbWFyeS1yZWQnLFxuICAgICAgICAgIFNBTE1PTjogJ3RpZGUtZm9udC1wcmltYXJ5LXNhbG1vbicsXG4gICAgICAgICAgVEVBTDogJ3RpZGUtZm9udC1wcmltYXJ5LXRlYWwnLFxuICAgICAgICAgIFlFTExPVzogJ3RpZGUtZm9udC1wcmltYXJ5LXllbGxvdycsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgUFJJTUFSWTogJ3RpZGUtZm9udC1vbi1wcmltYXJ5JyxcbiAgICAgIFNFQ09OREFSWTogJ3RpZGUtZm9udC1vbi1zZWNvbmRhcnknLFxuICAgICAgU1VSRkFDRToge1xuICAgICAgICBCUkFORDogJ3RpZGUtZm9udC1vbi1zdXJmYWNlLWJyYW5kJyxcbiAgICAgICAgREVGQVVMVDogJ3RpZGUtZm9udC1vbi1zdXJmYWNlJyxcbiAgICAgICAgSU5WRVJTRTogJ3RpZGUtZm9udC1vbi1zdXJmYWNlLWludmVyc2UnLFxuICAgICAgICBWQVJJQU5UOiAndGlkZS1mb250LW9uLXN1cmZhY2UtdmFyaWFudCcsXG4gICAgICAgIFZBUklBTlRfSU5WRVJTRTogJ3RpZGUtZm9udC1vbi1zdXJmYWNlLXZhcmlhbnQtaW52ZXJzZScsXG4gICAgICB9LFxuICAgIH0sXG4gICAgUk9MRToge1xuICAgICAgRElTUExBWV8xOiAndGlkZS10eXBvZ3JhcGh5LWRpc3BsYXktMScsXG4gICAgICBIRUFETElORV8xOiAndGlkZS10eXBvZ3JhcGh5LWhlYWRsaW5lLTEnLFxuICAgICAgSEVBRExJTkVfMjogJ3RpZGUtdHlwb2dyYXBoeS1oZWFkbGluZS0yJyxcbiAgICAgIEhFQURMSU5FXzM6ICd0aWRlLXR5cG9ncmFwaHktaGVhZGxpbmUtMycsXG4gICAgICBUSVRMRV8xOiAndGlkZS10eXBvZ3JhcGh5LXRpdGxlLTEnLFxuICAgICAgVElUTEVfMjogJ3RpZGUtdHlwb2dyYXBoeS10aXRsZS0yJyxcbiAgICAgIEJPRFlfMTogJ3RpZGUtdHlwb2dyYXBoeS1ib2R5LTEnLFxuICAgICAgQk9EWV8yOiAndGlkZS10eXBvZ3JhcGh5LWJvZHktMicsXG4gICAgICBMQUJFTF8xOiAndGlkZS10eXBvZ3JhcGh5LWxhYmVsLTEnLFxuICAgICAgTEFCRUxfMV9TRU1JQk9MRDogJ3RpZGUtdHlwb2dyYXBoeS1sYWJlbC0xLXNlbWlib2xkJyxcbiAgICAgIExBQkVMXzI6ICd0aWRlLXR5cG9ncmFwaHktbGFiZWwtMicsXG4gICAgICBMQUJFTF8yX1NFTUlCT0xEOiAndGlkZS10eXBvZ3JhcGh5LWxhYmVsLTItc2VtaWJvbGQnLFxuICAgICAgTEFCRUxfMzogJ3RpZGUtdHlwb2dyYXBoeS1sYWJlbC0zJyxcbiAgICAgIExJTktfMTogJ3RpZGUtdHlwb2dyYXBoeS1saW5rLTEnLFxuICAgICAgTElOS18yOiAndGlkZS10eXBvZ3JhcGh5LWxpbmstMicsXG4gICAgICBMSU5LXzM6ICd0aWRlLXR5cG9ncmFwaHktbGluay0zJyxcbiAgICAgIEJVVFRPTl8xOiAndGlkZS10eXBvZ3JhcGh5LWJ1dHRvbi0xJyxcbiAgICAgIEJVVFRPTl8yOiAndGlkZS10eXBvZ3JhcGh5LWJ1dHRvbi0yJyxcbiAgICB9LFxuICAgIFNJWkU6IHtcbiAgICAgIFRXRUxWRTogJ3RpZGUtZm9udC0xMicsXG4gICAgICBGT1VSVEVFTjogJ3RpZGUtZm9udC0xNCcsXG4gICAgICBTSVhURUVOOiAndGlkZS1mb250LTE2JyxcbiAgICAgIFRXRU5UWTogJ3RpZGUtZm9udC0yMCcsXG4gICAgICBUV0VOVFlfRk9VUjogJ3RpZGUtZm9udC0yNCcsXG4gICAgICBUSElSVFlfVFdPOiAndGlkZS1mb250LTMyJyxcbiAgICB9LFxuICAgIFdFSUdIVDoge1xuICAgICAgRk9VUl9IVU5EUkVEOiAndGlkZS1mb250LTQwMCcsXG4gICAgICBGSVZFX0hVTkRSRUQ6ICd0aWRlLWZvbnQtNTAwJyxcbiAgICAgIFNJWF9IVU5EUkVEOiAndGlkZS1mb250LTYwMCcsXG4gICAgICBTRVZFTl9IVU5EUkVEOiAndGlkZS1mb250LTcwMCcsXG4gICAgfSxcbiAgfSxcbiAgR0FQOiB7XG4gICAgWkVSTzogJ3RpZGUtZ2FwLTAnLFxuICAgIFFVQVJURVI6ICd0aWRlLWdhcC0xLzQnLFxuICAgIEhBTEY6ICd0aWRlLWdhcC0xLzInLFxuICAgIE9ORTogJ3RpZGUtZ2FwLTEnLFxuICAgIFRXTzogJ3RpZGUtZ2FwLTInLFxuICAgIEZPVVI6ICd0aWRlLWdhcC00JyxcbiAgfSxcbiAgR1JJRDoge1xuICAgIEZMVUlEOiAndGlkZS1mbHVpZCcsXG4gICAgSVRFTTogJ3RpZGUtZ3JpZC1pdGVtJyxcbiAgICBMQVlPVVQ6ICd0aWRlLWdyaWQtbGF5b3V0JyxcbiAgICBYTDogJ3RpZGUtZ3JpZC14bCcsXG4gIH0sXG4gIEhFSUdIVDoge1xuICAgIEFVVE86ICd0aWRlLWhlaWdodC1hdXRvJyxcbiAgICBaRVJPOiAndGlkZS1oZWlnaHQtMCcsXG4gICAgRlVMTDogJ3RpZGUtaGVpZ2h0LWZ1bGwnLFxuICAgIE1BWF9GVUxMOiAndGlkZS1tYXgtaGVpZ2h0LWZ1bGwnLFxuICAgIE1JTl9aRVJPOiAndGlkZS1taW4taGVpZ2h0LTAnLFxuICB9LFxuICBJU09MQVRJT046IHtcbiAgICBJU09MQVRFOiAndGlkZS1pc29sYXRlJyxcbiAgfSxcbiAgTElTVF9CVUxMRVRTOiB7XG4gICAgT0ZGOiAndGlkZS1saXN0LW5vbmUnLFxuICB9LFxuICBNQVJHSU46IHtcbiAgICBCT1RUT006IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi1ib3R0b20tYXV0bycsXG4gICAgICBaRVJPOiAndGlkZS1tYXJnaW4tYm90dG9tLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLWJvdHRvbS0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLWJvdHRvbS0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4tYm90dG9tLTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4tYm90dG9tLTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLWJvdHRvbS00JyxcbiAgICB9LFxuICAgIEZVTEw6IHtcbiAgICAgIFpFUk86ICd0aWRlLW1hcmdpbi0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLTQnLFxuICAgIH0sXG4gICAgTEVGVDoge1xuICAgICAgQVVUTzogJ3RpZGUtbWFyZ2luLWxlZnQtYXV0bycsXG4gICAgICBaRVJPOiAndGlkZS1tYXJnaW4tbGVmdC0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi1sZWZ0LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4tbGVmdC0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4tbGVmdC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLWxlZnQtMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4tbGVmdC00JyxcbiAgICB9LFxuICAgIFJJR0hUOiB7XG4gICAgICBBVVRPOiAndGlkZS1tYXJnaW4tcmlnaHQtYXV0bycsXG4gICAgICBaRVJPOiAndGlkZS1tYXJnaW4tcmlnaHQtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4tcmlnaHQtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi1yaWdodC0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4tcmlnaHQtMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi1yaWdodC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi1yaWdodC00JyxcbiAgICB9LFxuICAgIFRPUDoge1xuICAgICAgQVVUTzogJ3RpZGUtbWFyZ2luLXRvcC1hdXRvJyxcbiAgICAgIFpFUk86ICd0aWRlLW1hcmdpbi10b3AtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4tdG9wLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4tdG9wLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi10b3AtMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi10b3AtMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4tdG9wLTQnLFxuICAgIH0sXG4gICAgWDoge1xuICAgICAgQVVUTzogJ3RpZGUtbWFyZ2luLXgtYXV0bycsXG4gICAgICBaRVJPOiAndGlkZS1tYXJnaW4teC0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi14LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4teC0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4teC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLXgtMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4teC00JyxcbiAgICB9LFxuICAgIFk6IHtcbiAgICAgIFpFUk86ICd0aWRlLW1hcmdpbi15LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLXktMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi15LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi15LTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4teS0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi15LTQnLFxuICAgIH0sXG4gIH0sXG4gIE9CSkVDVDoge1xuICAgIENFTlRFUjogJ3RpZGUtb2JqZWN0LWNlbnRlcicsXG4gICAgQ09OVEFJTjogJ3RpZGUtb2JqZWN0LWNvbnRhaW4nLFxuICAgIENPVkVSOiAndGlkZS1vYmplY3QtY292ZXInLFxuICAgIFNDQUxFX0RPV046ICd0aWRlLW9iamVjdC1zY2FsZS1kb3duJyxcbiAgfSxcbiAgT1BBQ0lUWToge1xuICAgIERJU0FCTEVEOiAndGlkZS1vcGFjaXR5LWRpc2FibGVkJyxcbiAgICBPRkY6ICd0aWRlLW9wYWNpdHktbm9uZScsXG4gICAgT046ICd0aWRlLW9wYWNpdHknLFxuICB9LFxuICBPVkVSRkxPVzoge1xuICAgIFg6IHtcbiAgICAgIEFVVE86ICd0aWRlLXgtYXV0bycsXG4gICAgICBISURERU46ICd0aWRlLXgtaGlkZGVuJyxcbiAgICAgIFNDUk9MTDogJ3RpZGUteC1zY3JvbGwnLFxuICAgIH0sXG4gICAgWFk6IHtcbiAgICAgIEFVVE86ICd0aWRlLXh5LWF1dG8nLFxuICAgICAgSElEREVOOiAndGlkZS14eS1oaWRkZW4nLFxuICAgIH0sXG4gICAgWToge1xuICAgICAgQVVUTzogJ3RpZGUteS1hdXRvJyxcbiAgICAgIEhJRERFTjogJ3RpZGUteS1oaWRkZW4nLFxuICAgIH0sXG4gIH0sXG4gIFBBRERJTkc6IHtcbiAgICBCT1RUT006IHtcbiAgICAgIFpFUk86ICd0aWRlLXBhZGRpbmctYm90dG9tLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy1ib3R0b20tMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctYm90dG9tLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmctYm90dG9tLTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLWJvdHRvbS0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctYm90dG9tLTQnLFxuICAgIH0sXG4gICAgRlVMTDoge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmctMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctNCcsXG4gICAgfSxcbiAgICBMRUZUOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLWxlZnQtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLWxlZnQtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctbGVmdC0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLWxlZnQtMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmctbGVmdC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctbGVmdC00JyxcbiAgICB9LFxuICAgIFJJR0hUOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLXJpZ2h0LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy1yaWdodC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy1yaWdodC0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLXJpZ2h0LTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLXJpZ2h0LTInLFxuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy1yaWdodC00JyxcbiAgICB9LFxuICAgIFRPUDoge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy10b3AtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLXRvcC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy10b3AtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy10b3AtMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmctdG9wLTInLFxuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy10b3AtNCcsXG4gICAgfSxcbiAgICBYOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLXgtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLXgtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmcteC0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLXgtMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmcteC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmcteC00JyxcbiAgICB9LFxuICAgIFk6IHtcbiAgICAgIFpFUk86ICd0aWRlLXBhZGRpbmcteS0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmcteS0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy15LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmcteS0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy15LTInLFxuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy15LTQnLFxuICAgIH0sXG4gIH0sXG4gIFBPSU5URVJfRVZFTlRTOiB7XG4gICAgT0ZGOiAndGlkZS1wb2ludGVyLWV2ZW50cy1ub25lJyxcbiAgICBPTjogJ3RpZGUtcG9pbnRlci1ldmVudHMnLFxuICB9LFxuICBQT1NJVElPTjoge1xuICAgIEFCU09MVVRFOiAndGlkZS1wb3NpdGlvbi1hYnNvbHV0ZScsXG4gICAgRklYRUQ6ICd0aWRlLXBvc2l0aW9uLWZpeGVkJyxcbiAgICBSRUxBVElWRTogJ3RpZGUtcG9zaXRpb24tcmVsYXRpdmUnLFxuICAgIFNUQVRJQzogJ3RpZGUtcG9zaXRpb24tc3RhdGljJyxcbiAgICBTVElDS1k6ICd0aWRlLXBvc2l0aW9uLXN0aWNreScsXG4gIH0sXG4gIFBPU0lUSU9OSU5HOiB7XG4gICAgQk9UVE9NOiAndGlkZS1ib3R0b20tMCcsXG4gICAgTEVGVDogJ3RpZGUtbGVmdC0wJyxcbiAgICBSSUdIVDogJ3RpZGUtcmlnaHQtMCcsXG4gICAgVE9QOiAndGlkZS10b3AtMCcsXG4gIH0sXG4gIFJBVElPOiB7XG4gICAgT05FX1RPX09ORTogJ3RpZGUtcmF0aW8tMS8xJyxcbiAgICBTSVhURUVOX1RPX05JTkU6ICd0aWRlLXJhdGlvLTE2LzknLFxuICAgIFRIUkVFX1RPX1RXTzogJ3RpZGUtcmF0aW8tMy8yJyxcbiAgfSxcbiAgU0NST0xMQkFSOiB7XG4gICAgT0ZGOiAndGlkZS1zY3JvbGxiYXItbm9uZScsXG4gIH0sXG4gIFNIQURPVzoge1xuICAgIElOSVRJQUw6ICd0aWRlLXNoYWRvdy1pbml0aWFsJyxcbiAgICBCT1RUT006ICd0aWRlLXNoYWRvdy1ib3R0b20nLFxuICAgIFRPUDogJ3RpZGUtc2hhZG93LXRvcCcsXG4gICAgVEVYVDogJ3RpZGUtc2hhZG93LXRleHQnLFxuICB9LFxuICBTTkFQOiB7XG4gICAgT046ICd0aWRlLXNjcm9sbC1zbmFwJyxcbiAgfSxcbiAgU05BUF9BTElHTjoge1xuICAgIFNUQVJUOiAndGlkZS1zY3JvbGwtc25hcC1zdGFydCcsXG4gIH0sXG4gIFNUUklLRVRIUk9VR0g6IHtcbiAgICBPRkY6ICd0aWRlLXN0cmlrZXRocm91Z2gtbm9uZScsXG4gICAgT046ICd0aWRlLXN0cmlrZXRocm91Z2gnLFxuICB9LFxuICBURVhUX1RSQU5TRk9STToge1xuICAgIExPV0VSOiAndGlkZS10ZXh0LXRyYW5zZm9ybS1sb3dlcicsXG4gICAgTk9ORTogJ3RpZGUtdGV4dC10cmFuc2Zvcm0tbm9uZScsXG4gICAgVVBQRVI6ICd0aWRlLXRleHQtdHJhbnNmb3JtLXVwcGVyJyxcbiAgfSxcbiAgVU5ERVJMSU5FOiB7XG4gICAgSE9WRVI6IHtcbiAgICAgIE9OOiAndGlkZS11bmRlcmxpbmUtaG92ZXInLFxuICAgICAgT0ZGOiAndGlkZS11bmRlcmxpbmUtaG92ZXItbm9uZScsXG4gICAgfSxcbiAgICBSRVNUOiB7XG4gICAgICBPTjogJ3RpZGUtdW5kZXJsaW5lJyxcbiAgICAgIE9GRjogJ3RpZGUtdW5kZXJsaW5lLW5vbmUnLFxuICAgIH0sXG4gIH0sXG4gIFVTRVJfU0VMRUNUOiB7XG4gICAgSU5JVElBTDogJ3RpZGUtdXNlci1zZWxlY3QtaW5pdGlhbCcsXG4gICAgTk9ORTogJ3RpZGUtdXNlci1zZWxlY3Qtbm9uZScsXG4gIH0sXG4gIFZJU0lCSUxJVFk6IHtcbiAgICBPRkY6ICd0aWRlLXZpc2libGUtbm9uZScsXG4gICAgT046ICd0aWRlLXZpc2libGUnLFxuICB9LFxuICBXSElURVNQQUNFX1dSQVA6IHtcbiAgICBPRkY6ICd0aWRlLXdoaXRlc3BhY2Utbm93cmFwJyxcbiAgfSxcbiAgV0lEVEg6IHtcbiAgICBBVVRPOiAndGlkZS13aWR0aC1hdXRvJyxcbiAgICBaRVJPOiAndGlkZS13aWR0aC0wJyxcbiAgICBGVUxMOiAndGlkZS13aWR0aC1mdWxsJyxcbiAgICBNQVhfRlVMTDogJ3RpZGUtbWF4LXdpZHRoLWZ1bGwnLFxuICAgIE1JTl9aRVJPOiAndGlkZS1taW4td2lkdGgtMCcsXG4gIH0sXG4gIFpfSU5ERVg6IHtcbiAgICBJTklUSUFMOiAndGlkZS16LWluZGV4LWluaXRpYWwnLFxuICAgIE9ORTogJ3RpZGUtei1pbmRleC0xJyxcbiAgfSxcbn0gYXMgY29uc3Q7XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBPUklFTlRBVElPTiB9IGZyb20gJ0AvdHlwZXMvT3JpZW50YXRpb24nO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBPcmllbnRhdGlvbiB9IGZyb20gJ0AvdHlwZXMvT3JpZW50YXRpb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgb3JpZW50YXRpb24/OiBPcmllbnRhdGlvbjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIG9yaWVudGF0aW9uOiBPUklFTlRBVElPTi5IT1JJWk9OVEFMLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWRpdmlkZXInXVwiPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgQ1NTLkJPUkRFUi5DT0xPUi5MT1csXG4gICAgICAgIHByb3BzLm9yaWVudGF0aW9uID09PSBPUklFTlRBVElPTi5IT1JJWk9OVEFMXG4gICAgICAgICAgPyBbQ1NTLk1BUkdJTi5ZLkhBTEYsIENTUy5CT1JERVIuQk9UVE9NLk9ORSwgQ1NTLldJRFRILkZVTExdXG4gICAgICAgICAgOiBbQ1NTLk1BUkdJTi5YLkhBTEYsIENTUy5CT1JERVIuUklHSFQuT05FLCBDU1MuSEVJR0hULkZVTExdLFxuICAgICAgXVwiXG4gICAgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1kaXZpZGVyIHtcbiAgICBhbGlnbi1zZWxmOiBzdHJldGNoO1xuICB9XG48L3N0eWxlPlxuIiwiZXhwb3J0IGNvbnN0IFJFQUxNID0ge1xuICBBRVJPOiAnYWVybycsXG4gIEFUVjogJ2F0dicsXG4gIEJPQVRNQVJUOiAnYm9hdG1hcnQnLFxuICBDWUNMRTogJ2N5Y2xlJyxcbiAgRVFVSVBNRU5UOiAnZXF1aXBtZW50JyxcbiAgUFdDOiAncHdjJyxcbiAgUlY6ICdydicsXG4gIFNOT1c6ICdzbm93JyxcbiAgVFJVQ0s6ICd0cnVjaycsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBSZWFsbUtleSA9IGtleW9mIHR5cGVvZiBSRUFMTTtcbmV4cG9ydCB0eXBlIFJlYWxtID0gKHR5cGVvZiBSRUFMTSlbUmVhbG1LZXldO1xuIiwiZXhwb3J0IGNvbnN0IFNJWkUgPSB7XG4gIExBUkdFOiAnbGFyZ2UnLFxuICBTTUFMTDogJ3NtYWxsJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFNpemUgPSAodHlwZW9mIFNJWkUpW2tleW9mIHR5cGVvZiBTSVpFXTtcblxuZXhwb3J0IGNvbnN0IFNJWkVfQlVUVE9OID0ge1xuICBMQVJHRTogJ2xhcmdlJyxcbiAgU01BTEw6ICdzbWFsbCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBTaXplQnV0dG9uID0gKHR5cGVvZiBTSVpFKVtrZXlvZiB0eXBlb2YgU0laRV07XG4iLCJjb25zdCBjYXBpdGFsaXplRmlyc3QgPSAoc3RyaW5nOiBzdHJpbmcpID0+IHtcbiAgcmV0dXJuIHN0cmluZy5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHN0cmluZy5zbGljZSgxKTtcbn07XG5cbmNvbnN0IGZvcm1hdENhbWVsQ2FzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZydcbiAgICA/IGlucHV0XG4gICAgICAgIC5yZXBsYWNlKC9eW1xcc18tXS8sICcnKVxuICAgICAgICAucmVwbGFjZSgvKFthLXpdezF9KShbQS1aXXsxfSkvZywgJyQxICQyJylcbiAgICAgICAgLnJlcGxhY2UoL1tcXHNfLV0vZywgJyAnKVxuICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAuc3BsaXQoJyAnKVxuICAgICAgICAubWFwKCh3b3JkLCBpbmRleCkgPT4gKGluZGV4ID09PSAwID8gd29yZCA6IHdvcmQuc2xpY2UoMCwgMSkudG9VcHBlckNhc2UoKSArIHdvcmQuc2xpY2UoMSkpKVxuICAgICAgICAuam9pbignJylcbiAgICA6IGlucHV0O1xufTtcblxuY29uc3QgZm9ybWF0S2ViYWJDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICctJylcbiAgICA6IGlucHV0O1xufTtcblxuY29uc3QgZm9ybWF0TGFiZWwgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICBjb25zdCBsYWJlbE1hcDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICBmYWxzZTogJ05vJyxcbiAgICB0cnVlOiAnWWVzJyxcbiAgfTtcbiAgcmV0dXJuIE9iamVjdC5oYXNPd24obGFiZWxNYXAsIHZhbHVlKSA/IGxhYmVsTWFwW3ZhbHVlXSA6IHZhbHVlO1xufTtcblxuY29uc3QgZm9ybWF0TnVtYmVyID0gKGlucHV0OiBudW1iZXIgfCBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBsZXQgb3V0cHV0ID0gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnbnVtYmVyJyA/IG5ldyBJbnRsLk51bWJlckZvcm1hdCgpLmZvcm1hdChpbnB1dCkgOiBTdHJpbmcoaW5wdXQgfHwgJycpO1xuICBsZXQgZGlnaXRzID0gb3V0cHV0O1xuXG4gIGlmIChpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnKSB7XG4gICAgZGlnaXRzID0gZGlnaXRzLnJlcGxhY2UoL1xcRC9nLCAnJyk7XG4gICAgaWYgKE51bWJlcihkaWdpdHMpKSB7XG4gICAgICBvdXRwdXQgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQoTnVtYmVyKGRpZ2l0cykpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXRwdXQgPSAnMCc7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG91dHB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdFBhc2NhbENhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnXG4gICAgPyBpbnB1dFxuICAgICAgICAucmVwbGFjZSgvKFthLXpdezF9KShbQS1aXXsxfSkvZywgJyQxICQyJylcbiAgICAgICAgLnJlcGxhY2UoL1tcXHNfLV0vZywgJyAnKVxuICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAuc3BsaXQoJyAnKVxuICAgICAgICAubWFwKCh3b3JkKSA9PiB3b3JkLnNsaWNlKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyB3b3JkLnNsaWNlKDEpKVxuICAgICAgICAuam9pbignJylcbiAgICA6IGlucHV0O1xufTtcblxuY29uc3QgZm9ybWF0UGhvbmUgPSAoaW5wdXQ6IG51bWJlciB8IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGxldCBvdXRwdXQgPSBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdudW1iZXInID8gU3RyaW5nKGlucHV0KSA6IFN0cmluZyhpbnB1dCB8fCAnJyk7XG4gIGxldCBkaWdpdHMgPSBvdXRwdXQ7XG4gIGRpZ2l0cyA9IGRpZ2l0cy5yZXBsYWNlKC9cXEQvZywgJycpO1xuXG4gIHN3aXRjaCAoZGlnaXRzLmxlbmd0aCkge1xuICAgIGNhc2UgNzpcbiAgICAgIG91dHB1dCA9IGAke2RpZ2l0cy5zbGljZSgwLCAzKX0tJHtkaWdpdHMuc2xpY2UoMyl9YDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTA6XG4gICAgICBvdXRwdXQgPSBgJHtkaWdpdHMuc2xpY2UoMCwgMyl9LSR7ZGlnaXRzLnNsaWNlKDMsIDYpfS0ke2RpZ2l0cy5zbGljZSg2KX1gO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxMTpcbiAgICAgIG91dHB1dCA9IGAke2RpZ2l0cy5zbGljZSgwLCAxKX0tJHtkaWdpdHMuc2xpY2UoMSwgNCl9LSR7ZGlnaXRzLnNsaWNlKDQsIDcpfS0ke2RpZ2l0cy5zbGljZSg3KX1gO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIG91dHB1dCA9IGRpZ2l0cztcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgcmV0dXJuIG91dHB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdFByaWNlID0gKGlucHV0OiBudW1iZXIgfCBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBvdXRwdXQgPSBpbnB1dCA/IGZvcm1hdE51bWJlcihpbnB1dCkgOiBTdHJpbmcoaW5wdXQgfHwgJzAnKTtcbiAgcmV0dXJuIGAkJHtvdXRwdXR9YDtcbn07XG5cbmNvbnN0IGZvcm1hdFF1b3RlcyA9ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gIGlmICh2YWx1ZS5zdGFydHNXaXRoKCdcIicpICYmIHZhbHVlLmVuZHNXaXRoKCdcIicpKSB7XG4gICAgcmV0dXJuIHZhbHVlLnNsaWNlKDEsIC0xKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn07XG5cbmNvbnN0IGZvcm1hdFNlbnRlbmNlQ2FzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgbGV0IHNlbnRlbmNlQ2FzZSA9IGlucHV0O1xuXG4gIGlmIChpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnKSB7XG4gICAgY29uc3QgbG93ZXJDYXNlID0gaW5wdXRcbiAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJyk7XG5cbiAgICBzZW50ZW5jZUNhc2UgPSBsb3dlckNhc2Uuc2xpY2UoMCwgMSkudG9VcHBlckNhc2UoKSArIGxvd2VyQ2FzZS5zbGljZSgxKTtcbiAgfVxuXG4gIHJldHVybiBzZW50ZW5jZUNhc2U7XG59O1xuXG5jb25zdCBmb3JtYXRTbmFrZUNhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnXG4gICAgPyBpbnB1dFxuICAgICAgICAucmVwbGFjZSgvKFthLXpdezF9KShbQS1aXXsxfSkvZywgJyQxICQyJylcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnJlcGxhY2UoL1tcXHNfLV0vZywgJ18nKVxuICAgIDogaW5wdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRUaXRsZUNhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnXG4gICAgPyBpbnB1dFxuICAgICAgICAucmVwbGFjZSgvKFthLXpdezF9KShbQS1aXXsxfSkvZywgJyQxICQyJylcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnJlcGxhY2UoL1tcXHNfLV0vZywgJyAnKVxuICAgICAgICAuc3BsaXQoJyAnKVxuICAgICAgICAubWFwKCh3b3JkKSA9PiB3b3JkLnNsaWNlKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyB3b3JkLnNsaWNlKDEpKVxuICAgICAgICAuam9pbignICcpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdFVybEZyb21Sb290ID0gKHVybDogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IHVybEZvcm1hdHRlZCA9IHVybC5zcGxpdCgnLmNvbS8nKTtcblxuICByZXR1cm4gdXJsRm9ybWF0dGVkLmxlbmd0aCA+IDEgPyBgLyR7dXJsRm9ybWF0dGVkWzFdfWAgOiB1cmw7XG59O1xuXG5jb25zdCBmb3JtYXRXZWlnaHQgPSAoaW5wdXQ6IG51bWJlciB8IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IG91dHB1dCA9IGlucHV0ID8gZm9ybWF0TnVtYmVyKGlucHV0KSA6IFN0cmluZyhpbnB1dCB8fCAnMCcpO1xuICByZXR1cm4gYCR7b3V0cHV0fSBsYnNgO1xufTtcblxuY29uc3QgZ2V0QXJ0aWNsZSA9IChub3VuOiBzdHJpbmcsIGlzUGx1cmFsID0gZmFsc2UsIGlzRGVmaW5pdGUgPSBmYWxzZSkgPT4ge1xuICBjb25zdCB2b3dlbHMgPSBbJ2EnLCAnZScsICdpJywgJ28nLCAndSddO1xuICBjb25zdCBpc1Zvd2VsTGVhZGluZyA9IHZvd2Vscy5pbmNsdWRlcyhub3VuLmNoYXJBdCgwKSk7XG5cbiAgcmV0dXJuIGlzRGVmaW5pdGUgPyAndGhlJyA6IGlzUGx1cmFsID8gJ3NvbWUnIDogaXNWb3dlbExlYWRpbmcgPyAnYW4nIDogJ2EnO1xufTtcblxuY29uc3QgcHJpY2VUb051bWJlciA9ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gIGlmIChOdW1iZXIuaXNOYU4oTnVtYmVyKHZhbHVlKSkpIHtcbiAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoJyQnLCAnJyk7XG4gICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC8sL2csICcnKTtcbiAgfVxuICByZXR1cm4gcGFyc2VJbnQodmFsdWUsIDEwKTtcbn07XG5cbmNvbnN0IHVuZm9ybWF0UHJpY2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IG91dHB1dCA9IGlucHV0LnJlcGxhY2UoL1xcJC9nLCAnJykucmVwbGFjZSgvLC9nLCAnJyk7XG4gIHJldHVybiBgJHtvdXRwdXR9YDtcbn07XG5cbmV4cG9ydCB7XG4gIGNhcGl0YWxpemVGaXJzdCxcbiAgZm9ybWF0Q2FtZWxDYXNlLFxuICBmb3JtYXRLZWJhYkNhc2UsXG4gIGZvcm1hdExhYmVsLFxuICBmb3JtYXROdW1iZXIsXG4gIGZvcm1hdFBhc2NhbENhc2UsXG4gIGZvcm1hdFBob25lLFxuICBmb3JtYXRQcmljZSxcbiAgZm9ybWF0UXVvdGVzLFxuICBmb3JtYXRTZW50ZW5jZUNhc2UsXG4gIGZvcm1hdFNuYWtlQ2FzZSxcbiAgZm9ybWF0VGl0bGVDYXNlLFxuICBmb3JtYXRVcmxGcm9tUm9vdCxcbiAgZm9ybWF0V2VpZ2h0LFxuICBnZXRBcnRpY2xlLFxuICBwcmljZVRvTnVtYmVyLFxuICB1bmZvcm1hdFByaWNlLFxufTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IG1hcmtSYXcsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB7IFJFQUxNIH0gZnJvbSAnQC90eXBlcy9SZWFsbSc7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IGZvcm1hdFBhc2NhbENhc2UgfSBmcm9tICdAL3V0aWxpdGllcy9mb3JtYXQnO1xuXG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB0eXBlIHsgU2l6ZSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB0eXBlIHsgQ29tcG9uZW50IH0gZnJvbSAndnVlJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGljb246IEljb247XG4gICAgc2l6ZT86IFNpemU7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBzaXplOiBTSVpFLlNNQUxMLFxuICB9KTtcblxuICBjb25zdCBpbm5lclNWRyA9IHJlZjxDb21wb25lbnQ+KCk7XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMuaWNvbixcbiAgICBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBpZDogc3RyaW5nID0gcHJvcHMuaWNvbjtcbiAgICAgIGNvbnN0IG5hbWUgPSBmb3JtYXRQYXNjYWxDYXNlKGlkKTtcbiAgICAgIGNvbnN0IFtwcmVmaXhdID0gaWQuc3BsaXQoJy0nKTtcbiAgICAgIGNvbnN0IHJlYWxtRm9sZGVyID0gUkVBTE1bcHJlZml4Py50b1VwcGVyQ2FzZSgpIGFzIGtleW9mIHR5cGVvZiBSRUFMTV07XG5cbiAgICAgIGNvbnN0IGxvYWRlciA9IHJlYWxtRm9sZGVyXG4gICAgICAgID8gKCkgPT4gaW1wb3J0KGAuLi9hc3NldHMvc3ZnL2ljb25zL3JlYWxtLyR7cmVhbG1Gb2xkZXJ9L0ljb24ke25hbWV9LnN2Zz9jb21wb25lbnRgKVxuICAgICAgICA6ICgpID0+IGltcG9ydChgLi4vYXNzZXRzL3N2Zy9pY29ucy9JY29uJHtuYW1lfS5zdmc/Y29tcG9uZW50YCk7XG5cbiAgICAgIGNvbnN0IG1vZCA9IGF3YWl0IGxvYWRlcigpO1xuXG4gICAgICBpbm5lclNWRy52YWx1ZSA9IG1hcmtSYXcobW9kLmRlZmF1bHQpO1xuICAgIH0sXG4gICAgeyBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtaWNvbicsIHByb3BzLnNpemUsIENTUy5GTEVYLlNIUklOSy5PRkZdXCI+XG4gICAgPENvbXBvbmVudFxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkJMT0NLXVwiXG4gICAgICA6ZGF0YS1pY29uPVwiaWNvblwiXG4gICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgIDppcz1cImlubmVyU1ZHXCJcbiAgICAgIHYtaWY9XCJpbm5lclNWR1wiXG4gICAgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGU+XG4gIC50aWRlLWljb24ge1xuICAgIHdpZHRoOiAxLjVyZW07XG4gICAgaGVpZ2h0OiAxLjVyZW07XG4gIH1cblxuICAudGlkZS1pY29uLnNtYWxsIHtcbiAgICB3aWR0aDogMS4yNXJlbTtcbiAgICBoZWlnaHQ6IDEuMjVyZW07XG4gIH1cblxuICAudGlkZS1pY29uIHN2ZyB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICB9XG48L3N0eWxlPlxuIiwiaW1wb3J0IHR5cGUgeyBSZWFsbUtleSB9IGZyb20gJ0AvdHlwZXMvUmVhbG0nO1xuXG5leHBvcnQgY29uc3QgSUNPTiA9IHtcbiAgQUNDT1VOVF9CQUxBTkNFOiAnYWNjb3VudC1iYWxhbmNlJyxcbiAgQUNVVEU6ICdhY3V0ZScsXG4gIEFERDogJ2FkZCcsXG4gIEFJX0RFU0NSSVBUSU9OOiAnYWktZGVzY3JpcHRpb24nLFxuICBBTElHTl9TUEFDRV9FVkVOOiAnYWxpZ24tc3BhY2UtZXZlbicsXG4gIEFQUExFX1BBWTogJ2FwcGxlLXBheScsXG4gIEFSUk9XX0JBQ0s6ICdhcnJvdy1iYWNrJyxcbiAgQVJST1dfQ1lDTEU6ICdhcnJvdy1jeWNsZScsXG4gIEFSUk9XX0ZPUldBUkQ6ICdhcnJvdy1mb3J3YXJkJyxcbiAgQVJST1dfUklHSFQ6ICdhcnJvdy1yaWdodCcsXG4gIEFSUk9XX1VQOiAnYXJyb3ctdXAnLFxuICBBU1NJR05NRU5UOiAnYXNzaWdubWVudCcsXG4gIEFUVEFDSF9NT05FWTogJ2F0dGFjaC1tb25leScsXG4gIEFVVE9fUkVORVc6ICdhdXRvLXJlbmV3JyxcbiAgQVdBUkRfU1RBUjogJ2F3YXJkLXN0YXInLFxuICBCRUQ6ICdiZWQnLFxuICBCT0xUOiAnYm9sdCcsXG4gIEJPT0tNQVJLOiAnYm9va21hcmsnLFxuICBCVU5LSE9VU0U6ICdidW5raG91c2UnLFxuICBDQUxFTkRBUl9NT05USDogJ2NhbGVuZGFyLW1vbnRoJyxcbiAgQ0FMTDogJ2NhbGwnLFxuICBDQUxMX1FVQUxJVFk6ICdjYWxsLXF1YWxpdHknLFxuICBDQVJfUkVOVEFMOiAnY2FyLXJlbnRhbCcsXG4gIENIRUNLOiAnY2hlY2snLFxuICBDSEVWUk9OX0xFRlQ6ICdjaGV2cm9uLWxlZnQnLFxuICBDSEVWUk9OX1JJR0hUOiAnY2hldnJvbi1yaWdodCcsXG4gIENMRUFSOiAnY2xlYXInLFxuICBDTE9TRTogJ2Nsb3NlJyxcbiAgQ09OVFJBQ1Q6ICdjb250cmFjdCcsXG4gIENSQVNIOiAnY3Jhc2gnLFxuICBEQVNIQk9BUkRfQ1VTVE9NSVpFOiAnZGFzaGJvYXJkLWN1c3RvbWl6ZScsXG4gIERFTEVURTogJ2RlbGV0ZScsXG4gIERJQU1PTkQ6ICdkaWFtb25kJyxcbiAgRElSRUNUSU9OU19CT0FUOiAnZGlyZWN0aW9ucy1ib2F0JyxcbiAgRE9NQUlOOiAnZG9tYWluJyxcbiAgRFJBRlQ6ICdkcmFmdCcsXG4gIEVESVQ6ICdlZGl0JyxcbiAgRU5HSU5FOiAnZW5naW5lJyxcbiAgRU5HSU5FRVJJTkc6ICdlbmdpbmVlcmluZycsXG4gIEVSUk9SOiAnZXJyb3InLFxuICBFWFBBTkRfQ09OVEVOVDogJ2V4cGFuZC1jb250ZW50JyxcbiAgRVhQQU5EX0xFU1M6ICdleHBhbmQtbGVzcycsXG4gIEVYUEFORF9NT1JFOiAnZXhwYW5kLW1vcmUnLFxuICBGQUNFQk9PSzogJ2ZhY2Vib29rJyxcbiAgRkFWT1JJVEU6ICdmYXZvcml0ZScsXG4gIEZBVk9SSVRFX0ZJTExFRDogJ2Zhdm9yaXRlLWZpbGxlZCcsXG4gIEZMQUc6ICdmbGFnJyxcbiAgRk9STUFUX0JPTEQ6ICdmb3JtYXQtYm9sZCcsXG4gIEZPUk1BVF9JVEFMSUM6ICdmb3JtYXQtaXRhbGljJyxcbiAgRk9STUFUX0xJU1RfQlVMTEVURUQ6ICdmb3JtYXQtbGlzdC1idWxsZXRlZCcsXG4gIEZPUlVNOiAnZm9ydW0nLFxuICBHQVM6ICdnYXMnLFxuICBHQVZFTDogJ2dhdmVsJyxcbiAgR0VBUlM6ICdnZWFycycsXG4gIEdMT0JFX0xPQ0FUSU9OX1BJTjogJ2dsb2JlLWxvY2F0aW9uLXBpbicsXG4gIEdPT0dMRTogJ2dvb2dsZScsXG4gIEdPT0dMRV9QQVk6ICdnb29nbGUtcGF5JyxcbiAgR1JJRDogJ2dyaWQnLFxuICBIQU5EU0hBS0U6ICdoYW5kc2hha2UnLFxuICBIQU5EWU1BTjogJ2hhbmR5bWFuJyxcbiAgSEVJR0hUOiAnaGVpZ2h0JyxcbiAgSEVMUDogJ2hlbHAnLFxuICBJTkZPOiAnaW5mbycsXG4gIElORk9STUFUSU9OOiAnaW5mb3JtYXRpb24nLFxuICBJTlNFUlRfVEVYVDogJ2luc2VydC10ZXh0JyxcbiAgSU5TVEFHUkFNOiAnaW5zdGFncmFtJyxcbiAgSU9TX1NIQVJFOiAnaW9zLXNoYXJlJyxcbiAgTEFZT1VUOiAnbGF5b3V0JyxcbiAgTEVWRUxMSU5HX0pBQ0s6ICdsZXZlbGxpbmctamFjaycsXG4gIExJTktFRF9JTjogJ2xpbmtlZCBpbicsXG4gIExPQ0FMX1NISVBQSU5HOiAnbG9jYWwtc2hpcHBpbmcnLFxuICBMT0NLOiAnbG9jaycsXG4gIE1BSUw6ICdtYWlsJyxcbiAgTUVOVTogJ21lbnUnLFxuICBNT05FWV9CQUc6ICdtb25leS1iYWcnLFxuICBNT1JFX0hPUklaOiAnbW9yZS1ob3JpeicsXG4gIE5PVElGSUNBVElPTlM6ICdub3RpZmljYXRpb25zJyxcbiAgT0RPTUVURVI6ICdvZG9tZXRlcicsXG4gIE9QRU5fSU5fTkVXOiAnb3Blbi1pbi1uZXcnLFxuICBQQUxFVFRFOiAncGFsZXR0ZScsXG4gIFBBWVBBTDogJ3BheXBhbCcsXG4gIFBFUlNPTjogJ3BlcnNvbicsXG4gIFBFUlNPTl9TRUFSQ0g6ICdwZXJzb24tc2VhcmNoJyxcbiAgUEhPVE9fQ0FNRVJBOiAncGhvdG8tY2FtZXJhJyxcbiAgUElOVEVSRVNUOiAncGludGVyZXN0JyxcbiAgUExBWV9BUlJPVzogJ3BsYXktYXJyb3cnLFxuICBQT0xJQ1k6ICdwb2xpY3knLFxuICBQT1dFUjogJ3Bvd2VyJyxcbiAgUE9XRVJfT0ZGOiAncG93ZXItb2ZmJyxcbiAgUFJJT1JJVFlfSElHSDogJ3ByaW9yaXR5LWhpZ2gnLFxuICBSRU1PVkU6ICdyZW1vdmUnLFxuICBSRVFVRVNUX1FVT1RFOiAncmVxdWVzdC1xdW90ZScsXG4gIFJFU0VUX1dSRU5DSDogJ3Jlc2V0LXdyZW5jaCcsXG4gIFJPQUQ6ICdyb2FkJyxcbiAgUk9VTkRFRF9DT1JORVI6ICdyb3VuZGVkLWNvcm5lcicsXG4gIFJVTEVSOiAncnVsZXInLFxuICBTQUlMSU5HOiAnc2FpbGluZycsXG4gIFNDSE9PTDogJ3NjaG9vbCcsXG4gIFNFQVJDSDogJ3NlYXJjaCcsXG4gIFNFQVRJTkc6ICdzZWF0aW5nJyxcbiAgU0VMTDogJ3NlbGwnLFxuICBTRU5TT1JTOiAnc2Vuc29ycycsXG4gIFNFVFRJTkdTOiAnc2V0dGluZ3MnLFxuICBTSEFSRTogJ3NoYXJlJyxcbiAgU0hJRUxEX0NIRUNLOiAnc2hpZWxkLWNoZWNrJyxcbiAgU0hPUFBJTkdfQ0FSVDogJ3Nob3BwaW5nLWNhcnQnLFxuICBTTEVFUFM6ICdzbGVlcHMnLFxuICBTTVM6ICdzbXMnLFxuICBTTk9XRkxBS0U6ICdzbm93Zmxha2UnLFxuICBTVEFSOiAnc3RhcicsXG4gIFNUQVJfRklMTEVEOiAnc3Rhci1maWxsZWQnLFxuICBTVEFSX0hBTEY6ICdzdGFyLWhhbGYnLFxuICBTVU1NQVJJWkU6ICdzdW1tYXJpemUnLFxuICBTV0FQX0hPUklaOiAnc3dhcC1ob3JpeicsXG4gIFNXQVBfVkVSVDogJ3N3YXAtdmVydCcsXG4gIFRIUkVFX0RfUk9UQVRJT046ICd0aHJlZS1kLXJvdGF0aW9uJyxcbiAgVEhVTUJfVVA6ICd0aHVtYi11cCcsXG4gIFRSRU5ESU5HX0RPV046ICd0cmVuZGluZy1kb3duJyxcbiAgVFJPUEhZOiAndHJvcGh5JyxcbiAgVFVORTogJ3R1bmUnLFxuICBUV0lUVEVSOiAndHdpdHRlcicsXG4gIFVNQlJFTExBOiAndW1icmVsbGEnLFxuICBWRVJJRklFRDogJ3ZlcmlmaWVkJyxcbiAgVklERU9DQU06ICd2aWRlb2NhbScsXG4gIFZJRVdfSU5fQVI6ICd2aWV3LWluLWFyJyxcbiAgVklTSUJJTElUWTogJ3Zpc2liaWxpdHknLFxuICBWT0xVTUVfT0ZGOiAndm9sdW1lLW9mZicsXG4gIFZPTFVNRV9PTjogJ3ZvbHVtZS1vbicsXG4gIFdBUkVIT1VTRTogJ3dhcmVob3VzZScsXG4gIFdBUk5JTkc6ICd3YXJuaW5nJyxcbiAgV0FURVI6ICd3YXRlcicsXG4gIFdFSUdIVDogJ3dlaWdodCcsXG4gIFdJRFRIOiAnd2lkdGgnLFxuICBXT1JLU1BBQ0VfUFJFTUlVTTogJ3dvcmtzcGFjZS1wcmVtaXVtJyxcbiAgV1JFTkNIOiAnd3JlbmNoJyxcbiAgWU9VVFVCRTogJ3lvdXR1YmUnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IElDT05fUkVBTE0gPSB7XG4gIEFUVjoge1xuICAgIEFUVjogJ2F0di1hdHYnLFxuICAgIERVTkVfQlVHR1k6ICdhdHYtZHVuZS1idWdneScsXG4gICAgR09MRl9DQVJUOiAnYXR2LWdvbGYtY2FydCcsXG4gICAgR09fS0FSVDogJ2F0di1nby1rYXJ0JyxcbiAgICBTQU5EX1JBSUw6ICdhdHYtc2FuZC1yYWlsJyxcbiAgICBTSURFX0JZX1NJREU6ICdhdHYtc2lkZS1ieS1zaWRlJyxcbiAgICBUUkFJTEVSOiAnYXR2LXRyYWlsZXInLFxuICB9LFxuICBCT0FUTUFSVDoge1xuICAgIFBXQzogJ2JvYXRtYXJ0LXB3YycsXG4gICAgVFJBSUxFUjogJ2JvYXRtYXJ0LXRyYWlsZXInLFxuICB9LFxuICBSVjoge1xuICAgIENMQVNTX0E6ICdydi1jbGFzcy1hJyxcbiAgICBDTEFTU19COiAncnYtY2xhc3MtYicsXG4gICAgQ0xBU1NfQzogJ3J2LWNsYXNzLWMnLFxuICAgIEZJRlRIX1dIRUVMOiAncnYtZmlmdGgtd2hlZWwnLFxuICAgIEZJU0hfSE9VU0U6ICdydi1maXNoLWhvdXNlJyxcbiAgICBQQVJLX01PREVMOiAncnYtcGFyay1tb2RlbCcsXG4gICAgUE9QX1VQX0NBTVBFUjogJ3J2LXBvcC11cC1jYW1wZXInLFxuICAgIFRSQVZFTF9UUkFJTEVSOiAncnYtdHJhdmVsLXRyYWlsZXInLFxuICAgIFRSVUNLX0NBTVBFUjogJ3J2LXRydWNrLWNhbXBlcicsXG4gIH0sXG59IGFzIGNvbnN0O1xuXG50eXBlIFJlYWxtS2V5c1dpdGhJY29ucyA9IEV4dHJhY3Q8UmVhbG1LZXksIGtleW9mIHR5cGVvZiBJQ09OX1JFQUxNPjtcbnR5cGUgUmVhbG1JY29uID0ge1xuICBbUmVhbG1LZXkgaW4gUmVhbG1LZXlzV2l0aEljb25zXTogKHR5cGVvZiBJQ09OX1JFQUxNKVtSZWFsbUtleV1ba2V5b2YgKHR5cGVvZiBJQ09OX1JFQUxNKVtSZWFsbUtleV1dO1xufVtSZWFsbUtleXNXaXRoSWNvbnNdO1xuXG5leHBvcnQgdHlwZSBHbG9iYWxJY29uID0gKHR5cGVvZiBJQ09OKVtrZXlvZiB0eXBlb2YgSUNPTl07XG5leHBvcnQgdHlwZSBJY29uID0gR2xvYmFsSWNvbiB8IFJlYWxtSWNvbjtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCBUaWRlRGl2aWRlciBmcm9tICdAL2NvbXBvbmVudHMvVGlkZURpdmlkZXIudnVlJztcbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHMoWyd0b2dnbGUnXSk7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBoYXNCb3R0b21EaXZpZGVyPzogYm9vbGVhbjtcbiAgICBoYXNUb3BEaXZpZGVyPzogYm9vbGVhbjtcbiAgICBpc0V4cGFuZGVkPzogYm9vbGVhbjtcbiAgICBpc09wdGlvbmFsPzogYm9vbGVhbjtcbiAgICBsYWJlbDogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgaGFzQm90dG9tRGl2aWRlcjogZmFsc2UsXG4gICAgaGFzVG9wRGl2aWRlcjogZmFsc2UsXG4gICAgaXNFeHBhbmRlZDogZmFsc2UsXG4gICAgaXNPcHRpb25hbDogZmFsc2UsXG4gICAgbGFiZWw6ICcnLFxuICB9KTtcblxuICBjb25zdCBoYW5kbGVUb2dnbGVDbGljayA9ICgpID0+IHtcbiAgICBlbWl0KCd0b2dnbGUnKTtcbiAgfTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJ0aWRlLWFjY29yZGlvbi1pdGVtXCI+XG4gICAgPFRpZGVEaXZpZGVyIHYtaWY9XCJwcm9wcy5oYXNUb3BEaXZpZGVyXCIgLz5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIlsndGlkZS1hY2NvcmRpb24taGVhZCcsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMS5CRVRXRUVOLCBDU1MuUEFERElORy5ZLkhBTEYsIENTUy5DVVJTT1IuUE9JTlRFUl1cIlxuICAgICAgQGNsaWNrPVwiaGFuZGxlVG9nZ2xlQ2xpY2tcIlxuICAgID5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuSEFMRiwgQ1NTLkZPTlQuUk9MRS5MQUJFTF8xX1NFTUlCT0xEXVwiPlxuICAgICAgICA8c3Bhbj57eyBwcm9wcy5sYWJlbCB9fTwvc3Bhbj5cblxuICAgICAgICA8c3BhblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgICB2LWlmPVwicHJvcHMuaXNPcHRpb25hbFwiXG4gICAgICAgID5cbiAgICAgICAgICAob3B0aW9uYWwpXG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmljb249XCJpc0V4cGFuZGVkID8gSUNPTi5FWFBBTkRfTEVTUyA6IElDT04uRVhQQU5EX01PUkVcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuTEFSR0VcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWFjY29yZGlvbi1ib2R5JywgcHJvcHMuaXNFeHBhbmRlZCA/ICdleHBhbmRlZCcgOiAnY29sbGFwc2VkJywgQ1NTLkRJU1BMQVkuR1JJRF1cIj5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5PVkVSRkxPVy5ZLkhJRERFTiwgQ1NTLk1BUkdJTi5ZLk9ORSwgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVF1cIj5cbiAgICAgICAgPHNsb3QgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPFRpZGVEaXZpZGVyIHYtaWY9XCJwcm9wcy5oYXNCb3R0b21EaXZpZGVyXCIgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1hY2NvcmRpb24tYm9keSB7XG4gICAgdHJhbnNpdGlvbjogZ3JpZC10ZW1wbGF0ZS1yb3dzIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAudGlkZS1hY2NvcmRpb24tYm9keS5leHBhbmRlZCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiAxZnI7XG4gIH1cblxuICAudGlkZS1hY2NvcmRpb24tYm9keS5jb2xsYXBzZWQge1xuICAgIGdyaWQtdGVtcGxhdGUtcm93czogMGZyO1xuICB9XG48L3N0eWxlPlxuIiwiZXhwb3J0IGNvbnN0IEVMRU1FTlQgPSB7XG4gIEJVVFRPTjogJ2J1dHRvbicsXG4gIExJTks6ICdhJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBFTEVNRU5UX0JST0FEID0ge1xuICBCVVRUT046ICdidXR0b24nLFxuICBESVY6ICdkaXYnLFxuICBMSU5LOiAnYScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBFbGVtZW50ID0gKHR5cGVvZiBFTEVNRU5UKVtrZXlvZiB0eXBlb2YgRUxFTUVOVF07XG5leHBvcnQgdHlwZSBFbGVtZW50QnJvYWQgPSAodHlwZW9mIEVMRU1FTlRfQlJPQUQpW2tleW9mIHR5cGVvZiBFTEVNRU5UX0JST0FEXTtcbiIsImltcG9ydCB7IGluamVjdCwgcHJvdmlkZSB9IGZyb20gJ3Z1ZSc7XG5cbmltcG9ydCB7IEVMRU1FTlQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuXG5pbXBvcnQgdHlwZSB7IENvbXBvbmVudCB9IGZyb20gJ3Z1ZSc7XG5cbnR5cGUgVGlkZUNvbmZpZyA9IHtcbiAgbGlua0NvbXBvbmVudDogQ29tcG9uZW50IHwgdHlwZW9mIEVMRU1FTlQuTElOSztcbn07XG5cbmNvbnN0IHRpZGVDb25maWdEZWZhdWx0czogVGlkZUNvbmZpZyA9IHsgbGlua0NvbXBvbmVudDogRUxFTUVOVC5MSU5LIH07XG5cbmNvbnN0IENPTkZJR19LRVkgPSBTeW1ib2woJ3RpZGUtY29uZmlnJyk7XG5cbmV4cG9ydCBjb25zdCBwcm92aWRlVGlkZUNvbmZpZyA9IChjb25maWc6IFBhcnRpYWw8VGlkZUNvbmZpZz4gPSB7fSkgPT4ge1xuICBjb25zdCBjb25maWdXaXRoRGVmYXVsdHM6IFRpZGVDb25maWcgPSB7IC4uLnRpZGVDb25maWdEZWZhdWx0cywgLi4uY29uZmlnIH07XG5cbiAgcHJvdmlkZTxUaWRlQ29uZmlnPihDT05GSUdfS0VZLCBjb25maWdXaXRoRGVmYXVsdHMpO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZVRpZGVDb25maWcgPSAoKSA9PiB7XG4gIHJldHVybiBpbmplY3Q8VGlkZUNvbmZpZz4oQ09ORklHX0tFWSwgdGlkZUNvbmZpZ0RlZmF1bHRzKTtcbn07XG4iLCI8c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxuICBpbXBvcnQgeyB1c2VUaWRlQ29uZmlnIH0gZnJvbSAnQC9jb21wb3NhYmxlcy91c2VUaWRlQ29uZmlnJztcblxuICBjb25zdCB7IGxpbmtDb21wb25lbnQgfSA9IHVzZVRpZGVDb25maWcoKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxjb21wb25lbnQgOmlzPVwibGlua0NvbXBvbmVudFwiPlxuICAgIDxzbG90IC8+XG4gIDwvY29tcG9uZW50PlxuPC90ZW1wbGF0ZT5cbiIsIi8qIGVzbGludC1kaXNhYmxlIHZ1ZS9zb3J0LWtleXMgKi9cblxuZXhwb3J0IGNvbnN0IFBSSU9SSVRZID0ge1xuICBQUklNQVJZOiAncHJpbWFyeScsXG4gIFNFQ09OREFSWTogJ3NlY29uZGFyeScsXG4gIFRFUlRJQVJZOiAndGVydGlhcnknLFxuICBRVUFURVJOQVJZOiAncXVhdGVybmFyeScsXG4gIEZMT0FUSU5HOiAnZmxvYXRpbmcnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgUHJpb3JpdHkgPSAodHlwZW9mIFBSSU9SSVRZKVtrZXlvZiB0eXBlb2YgUFJJT1JJVFldO1xuIiwiZXhwb3J0IGNvbnN0IFRBUkdFVCA9IHtcbiAgQkxBTks6ICdfYmxhbmsnLFxuICBTRUxGOiB1bmRlZmluZWQsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBUYXJnZXQgPSAodHlwZW9mIFRBUkdFVClba2V5b2YgdHlwZW9mIFRBUkdFVF07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IEludGVybmFsQmFzZUxpbmsgZnJvbSAnQC9jb21wb25lbnRzL0ludGVybmFsQmFzZUxpbmsudnVlJztcbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBFTEVNRU5UIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgVEFSR0VUIH0gZnJvbSAnQC90eXBlcy9UYXJnZXQnO1xuXG4gIGltcG9ydCB0eXBlIHsgRWxlbWVudCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB0eXBlIHsgUHJpb3JpdHkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHR5cGUgeyBCdXR0b25UeXBlIH0gZnJvbSAnQC90eXBlcy9UeXBlJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBlbGVtZW50PzogRWxlbWVudDtcbiAgICBocmVmPzogc3RyaW5nO1xuICAgIGljb246IEljb247XG4gICAgaXNOZXdUYWI/OiBib29sZWFuO1xuICAgIHByaW9yaXR5PzogUHJpb3JpdHk7XG4gICAgdHlwZT86IEJ1dHRvblR5cGU7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZWxlbWVudDogRUxFTUVOVC5CVVRUT04sXG4gICAgaHJlZjogdW5kZWZpbmVkLFxuICAgIGljb246IHVuZGVmaW5lZCxcbiAgICBpc05ld1RhYjogZmFsc2UsXG4gICAgcHJpb3JpdHk6IFBSSU9SSVRZLlBSSU1BUlksXG4gICAgdHlwZTogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCB0eXBlQXR0cmlidXRlID0gY29tcHV0ZWQ8c3RyaW5nIHwgdW5kZWZpbmVkPigoKSA9PlxuICAgIHByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuQlVUVE9OID8gcHJvcHMudHlwZSA/PyBFTEVNRU5ULkJVVFRPTiA6IHVuZGVmaW5lZFxuICApO1xuXG4gIGNvbnN0IHJvb3RFbGVtZW50ID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyA/IEludGVybmFsQmFzZUxpbmsgOiBwcm9wcy5lbGVtZW50KSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50XG4gICAgOmFyaWEtbGFiZWw9XCJwcm9wcy5pY29uXCJcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1idXR0b24taWNvbicsXG4gICAgICBwcm9wcy5wcmlvcml0eSAmJiBgdGlkZS1idXR0b24tJHtwcm9wcy5wcmlvcml0eX1gLFxuICAgICAgW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMS5DRU5URVIsIENTUy5BWElTMi5DRU5URVIsIENTUy5CT1JERVIuUkFESVVTLkZVTEwsIENTUy5QQURESU5HLkZVTEwuSEFMRl0sXG4gICAgICBwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgPyBbQ1NTLlVOREVSTElORS5SRVNULk9GRl0gOiAnJyxcbiAgICBdXCJcbiAgICA6ZGlzYWJsZWQ9XCJwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkJVVFRPTiAmJiBwcm9wcy5kaXNhYmxlZFwiXG4gICAgOmhyZWY9XCJwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgJiYgcHJvcHMuaHJlZiA/IHByb3BzLmhyZWYgOiB1bmRlZmluZWRcIlxuICAgIDp0YXJnZXQ9XCJwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgJiYgcHJvcHMuaXNOZXdUYWIgPyBUQVJHRVQuQkxBTksgOiBUQVJHRVQuU0VMRlwiXG4gICAgOnR5cGU9XCJ0eXBlQXR0cmlidXRlXCJcbiAgICA6aXM9XCJyb290RWxlbWVudFwiXG4gID5cbiAgICA8VGlkZUljb25cbiAgICAgIDppY29uPVwicHJvcHMuaWNvblwiXG4gICAgICA6c2l6ZT1cIlNJWkUuTEFSR0VcIlxuICAgICAgdi1pZj1cInByb3BzLmljb25cIlxuICAgIC8+XG4gIDwvY29tcG9uZW50PlxuPC90ZW1wbGF0ZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgSW50ZXJuYWxCYXNlTGluayBmcm9tICdAL2NvbXBvbmVudHMvSW50ZXJuYWxCYXNlTGluay52dWUnO1xuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IEVMRU1FTlQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRBUkdFVCB9IGZyb20gJ0AvdHlwZXMvVGFyZ2V0JztcblxuICBpbXBvcnQgdHlwZSB7IEVsZW1lbnQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgZWxlbWVudD86IEVsZW1lbnQ7XG4gICAgaHJlZj86IHN0cmluZztcbiAgICBpY29uTGVhZGluZz86IEljb247XG4gICAgaWNvblRyYWlsaW5nPzogSWNvbjtcbiAgICBpc05ld1RhYj86IGJvb2xlYW47XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBzdWJ0bGU/OiBib29sZWFuO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZWxlbWVudDogRUxFTUVOVC5MSU5LLFxuICAgIGhyZWY6IHVuZGVmaW5lZCxcbiAgICBpY29uTGVhZGluZzogdW5kZWZpbmVkLFxuICAgIGljb25UcmFpbGluZzogdW5kZWZpbmVkLFxuICAgIGlzTmV3VGFiOiBmYWxzZSxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIHN1YnRsZTogZmFsc2UsXG4gIH0pO1xuXG4gIGNvbnN0IHJvb3RFbGVtZW50ID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyA/IEludGVybmFsQmFzZUxpbmsgOiBwcm9wcy5lbGVtZW50KSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtbGluaycsXG4gICAgICBDU1MuRElTUExBWS5JTkxJTkUsXG4gICAgICBDU1MuQUxJR04uWC5MRUZULFxuICAgICAgc3VidGxlID8gW0NTUy5VTkRFUkxJTkUuUkVTVC5PRkYsIENTUy5VTkRFUkxJTkUuSE9WRVIuT05dIDogW0NTUy5VTkRFUkxJTkUuUkVTVC5PTiwgQ1NTLlVOREVSTElORS5IT1ZFUi5PRkZdLFxuICAgIF1cIlxuICAgIDpocmVmPVwicHJvcHMuaHJlZlwiXG4gICAgOnRhcmdldD1cInByb3BzLmlzTmV3VGFiID8gVEFSR0VULkJMQU5LIDogVEFSR0VULlNFTEZcIlxuICAgIDp0eXBlPVwiZWxlbWVudCA9PT0gRUxFTUVOVC5CVVRUT04gPyBFTEVNRU5ULkJVVFRPTiA6IHVuZGVmaW5lZFwiXG4gICAgOmlzPVwicm9vdEVsZW1lbnRcIlxuICA+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+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgSW50ZXJuYWxCYXNlTGluayBmcm9tICdAL2NvbXBvbmVudHMvSW50ZXJuYWxCYXNlTGluay52dWUnO1xuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgQnJlYWRDcnVtYiB9IGZyb20gJ0AvdHlwZXMvQnJlYWRDcnVtYic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBicmVhZENydW1iczogQnJlYWRDcnVtYltdO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgYnJlYWRDcnVtYnM6IHVuZGVmaW5lZCxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8dWwgOmNsYXNzPVwiWyd0aWRlLWJyZWFkLWNydW1icycsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUiwgQ1NTLkxJU1RfQlVMTEVUUy5PRkZdXCI+XG4gICAgPHRlbXBsYXRlXG4gICAgICA6a2V5PVwiY3J1bWIubGFiZWxcIlxuICAgICAgdi1mb3I9XCIoY3J1bWIsIGluZGV4KSBpbiBwcm9wcy5icmVhZENydW1ic1wiXG4gICAgPlxuICAgICAgPGxpIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkJPRFlfMl1cIj5cbiAgICAgICAgPEludGVybmFsQmFzZUxpbmtcbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MSU5LXzIsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgICAgIDpkYXRhLXRyYWNrPVwiY3J1bWIuZGF0YVRyYWNrIHx8IHVuZGVmaW5lZFwiXG4gICAgICAgICAgOmhyZWY9XCJjcnVtYi51cmxcIlxuICAgICAgICAgIHYtaWY9XCJjcnVtYi51cmxcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgY3J1bWIubGFiZWwgfX1cbiAgICAgICAgPC9JbnRlcm5hbEJhc2VMaW5rPlxuXG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfMiwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgICAgOmRhdGEtdHJhY2s9XCJjcnVtYi5kYXRhVHJhY2sgfHwgdW5kZWZpbmVkXCJcbiAgICAgICAgICB2LWVsc2VcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGNydW1iLmxhYmVsIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvbGk+XG5cbiAgICAgIDxsaSB2LWlmPVwicHJvcHMuYnJlYWRDcnVtYnMgJiYgaW5kZXggPCBwcm9wcy5icmVhZENydW1icy5sZW5ndGggLSAxXCI+XG4gICAgICAgIDxUaWRlSWNvblxuICAgICAgICAgIDppY29uPVwiSUNPTi5BUlJPV19SSUdIVFwiXG4gICAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgLz5cbiAgICAgIDwvbGk+XG4gICAgPC90ZW1wbGF0ZT5cbiAgPC91bD5cbjwvdGVtcGxhdGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IEludGVybmFsQmFzZUxpbmsgZnJvbSAnQC9jb21wb25lbnRzL0ludGVybmFsQmFzZUxpbmsudnVlJztcbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBFTEVNRU5UIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgU0laRSwgU0laRV9CVVRUT04gfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRBUkdFVCB9IGZyb20gJ0AvdHlwZXMvVGFyZ2V0JztcblxuICBpbXBvcnQgdHlwZSB7IEVsZW1lbnQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgdHlwZSB7IFByaW9yaXR5IH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG4gIGltcG9ydCB0eXBlIHsgU2l6ZUJ1dHRvbiB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB0eXBlIHsgQnV0dG9uVHlwZSB9IGZyb20gJ0AvdHlwZXMvVHlwZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgZWxlbWVudD86IEVsZW1lbnQ7XG4gICAgaHJlZj86IHN0cmluZztcbiAgICBpY29uTGVhZGluZz86IEljb247XG4gICAgaWNvblRyYWlsaW5nPzogSWNvbjtcbiAgICBpc05ld1RhYj86IGJvb2xlYW47XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBwcmlvcml0eT86IFByaW9yaXR5O1xuICAgIHNpemU/OiBTaXplQnV0dG9uO1xuICAgIHR5cGU/OiBCdXR0b25UeXBlO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGVsZW1lbnQ6IEVMRU1FTlQuQlVUVE9OLFxuICAgIGhyZWY6IHVuZGVmaW5lZCxcbiAgICBpY29uTGVhZGluZzogdW5kZWZpbmVkLFxuICAgIGljb25UcmFpbGluZzogdW5kZWZpbmVkLFxuICAgIGlzTmV3VGFiOiBmYWxzZSxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIHByaW9yaXR5OiBQUklPUklUWS5QUklNQVJZLFxuICAgIHNpemU6IFNJWkVfQlVUVE9OLkxBUkdFLFxuICAgIHR5cGU6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgdHlwZUF0dHJpYnV0ZSA9IGNvbXB1dGVkPHN0cmluZyB8IHVuZGVmaW5lZD4oKCkgPT5cbiAgICBwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkJVVFRPTiA/IHByb3BzLnR5cGUgPz8gRUxFTUVOVC5CVVRUT04gOiB1bmRlZmluZWRcbiAgKTtcblxuICBjb25zdCByb290RWxlbWVudCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgPyBJbnRlcm5hbEJhc2VMaW5rIDogcHJvcHMuZWxlbWVudCkpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudFxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWJ1dHRvbicsXG4gICAgICBwcm9wcy5wcmlvcml0eSAmJiBgdGlkZS1idXR0b24tJHtwcm9wcy5wcmlvcml0eX1gLFxuICAgICAgcHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LID8gW0NTUy5ESVNQTEFZLklOTElORV9GTEVYXSA6IFtDU1MuRElTUExBWS5GTEVYXSxcbiAgICAgIHByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyA/IENTUy5VTkRFUkxJTkUuUkVTVC5PRkYgOiAnJyxcbiAgICAgIHNpemUgPT09IFNJWkVfQlVUVE9OLlNNQUxMXG4gICAgICAgID8gW0NTUy5GT05ULlJPTEUuQlVUVE9OXzIsIENTUy5QQURESU5HLlguT05FLCBDU1MuUEFERElORy5ZLkhBTEYsIENTUy5CT1JERVIuUkFESVVTLlFVQVJURVJdXG4gICAgICAgIDogW0NTUy5GT05ULlJPTEUuQlVUVE9OXzEsIENTUy5QQURESU5HLlguVFdPLCBDU1MuUEFERElORy5ZLk9ORSwgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRl0sXG4gICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgIENTUy5GT05ULlJPTEUuTEFCRUxfMV9TRU1JQk9MRCxcbiAgICBdXCJcbiAgICA6ZGlzYWJsZWQ9XCJwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkJVVFRPTiAmJiBwcm9wcy5kaXNhYmxlZFwiXG4gICAgOmhyZWY9XCJwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgJiYgcHJvcHMuaHJlZiA/IHByb3BzLmhyZWYgOiB1bmRlZmluZWRcIlxuICAgIDp0YXJnZXQ9XCJwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgJiYgcHJvcHMuaXNOZXdUYWIgPyBUQVJHRVQuQkxBTksgOiBUQVJHRVQuU0VMRlwiXG4gICAgOnR5cGU9XCJ0eXBlQXR0cmlidXRlXCJcbiAgICA6aXM9XCJyb290RWxlbWVudFwiXG4gID5cbiAgICA8VGlkZUljb25cbiAgICAgIDppY29uPVwicHJvcHMuaWNvbkxlYWRpbmdcIlxuICAgICAgOnNpemU9XCJzaXplID09PSBTSVpFX0JVVFRPTi5MQVJHRSA/IFNJWkUuTEFSR0UgOiBTSVpFLlNNQUxMXCJcbiAgICAgIHYtaWY9XCJwcm9wcy5pY29uTGVhZGluZ1wiXG4gICAgLz5cblxuICAgIHt7IHByb3BzLmxhYmVsIH19XG5cbiAgICA8VGlkZUljb25cbiAgICAgIDppY29uPVwicHJvcHMuaWNvblRyYWlsaW5nXCJcbiAgICAgIDpzaXplPVwic2l6ZSA9PT0gU0laRV9CVVRUT04uTEFSR0UgPyBTSVpFLkxBUkdFIDogU0laRS5TTUFMTFwiXG4gICAgICB2LWlmPVwicHJvcHMuaWNvblRyYWlsaW5nXCJcbiAgICAvPlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IEludGVybmFsQmFzZUxpbmsgZnJvbSAnQC9jb21wb25lbnRzL0ludGVybmFsQmFzZUxpbmsudnVlJztcbiAgaW1wb3J0IHsgRUxFTUVOVCwgRUxFTUVOVF9CUk9BRCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IEVsZW1lbnRCcm9hZCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgZWxlbWVudD86IEVsZW1lbnRCcm9hZDtcbiAgICBocmVmPzogc3RyaW5nO1xuICAgIGxhYmVsOiBzdHJpbmcgfCBudW1iZXI7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZWxlbWVudDogRUxFTUVOVF9CUk9BRC5CVVRUT04sXG4gICAgaHJlZjogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IHJvb3RFbGVtZW50ID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyA/IEludGVybmFsQmFzZUxpbmsgOiBwcm9wcy5lbGVtZW50KSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtYnV0dG9uLWljb24nLFxuICAgICAgW0NTUy5ESVNQTEFZLklOTElORV9CTE9DSywgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCwgQ1NTLlBBRERJTkcuRlVMTC5IQUxGXSxcbiAgICAgIHByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlRfQlJPQUQuTElOSyA/IFtDU1MuVU5ERVJMSU5FLlJFU1QuT0ZGXSA6ICcnLFxuICAgICAgcHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVF9CUk9BRC5ESVYgPyBbQ1NTLkNVUlNPUi5QT0lOVEVSXSA6ICcnLFxuICAgICAgW0NTUy5GT05ULlJPTEUuSEVBRExJTkVfM10sXG4gICAgXVwiXG4gICAgOmRpc2FibGVkPVwicHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVF9CUk9BRC5CVVRUT04gJiYgcHJvcHMuZGlzYWJsZWRcIlxuICAgIDpocmVmPVwicHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVF9CUk9BRC5MSU5LICYmIHByb3BzLmhyZWYgPyBwcm9wcy5ocmVmIDogdW5kZWZpbmVkXCJcbiAgICA6dHlwZT1cImVsZW1lbnQgPT09IEVMRU1FTlRfQlJPQUQuQlVUVE9OID8gRUxFTUVOVF9CUk9BRC5CVVRUT04gOiB1bmRlZmluZWRcIlxuICAgIDppcz1cInJvb3RFbGVtZW50XCJcbiAgPlxuICAgIDxzcGFuIDpjbGFzcz1cIlsnbGFiZWwnLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzEuQ0VOVEVSLCBDU1MuQVhJUzIuQ0VOVEVSXVwiPlxuICAgICAge3sgcHJvcHMubGFiZWwgfX1cbiAgICA8L3NwYW4+XG4gIDwvY29tcG9uZW50PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtYnV0dG9uLWljb24sXG4gIC50aWRlLWxpbmstYXMtYnV0dG9uLWljb24ge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRpZGUtd2hpdGUpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXRpZGUtd2hpdGUpO1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLXNlY29uZGFyeSk7XG4gIH1cblxuICAudGlkZS1idXR0b24taWNvbjpub3QoOmRpc2FibGVkKTpob3ZlcixcbiAgLnRpZGUtbGluay1hcy1idXR0b24taWNvbjpub3QoOmRpc2FibGVkKTpob3ZlciB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGlkZS1zdXJmYWNlLXZhcmlhbnQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXRpZGUtc3VyZmFjZS12YXJpYW50KTtcbiAgfVxuXG4gIC50aWRlLWJ1dHRvbi1pY29uOmRpc2FibGVkLFxuICAudGlkZS1saW5rLWFzLWJ1dHRvbi1pY29uOmRpc2FibGVkIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10aWRlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWJ1dHRvbi1pY29uIC5sYWJlbCxcbiAgLnRpZGUtbGluay1hcy1idXR0b24taWNvbiAubGFiZWwge1xuICAgIHdpZHRoOiAxLjVyZW07XG4gICAgaGVpZ2h0OiAxLjVyZW07XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBUYWIgfSBmcm9tICdAL3R5cGVzL1RhYic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBhY3RpdmVUYWI6IG51bWJlcjtcbiAgICB0YWJzOiBUYWJbXTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGFjdGl2ZVRhYjogMCxcbiAgfSk7XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzKFsnY2hhbmdlJ10pO1xuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKGluZGV4OiBudW1iZXIpID0+IHtcbiAgICBlbWl0KCdjaGFuZ2UnLCBpbmRleCk7XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtYnV0dG9uLXNlZ21lbnRlZCcsXG4gICAgICBDU1MuQkcuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICBDU1MuUEFERElORy5GVUxMLlFVQVJURVIsXG4gICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgXVwiXG4gID5cbiAgICA8YnV0dG9uXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWJ1dHRvbi1zZWdtZW50ZWQtdGFiJyxcbiAgICAgICAgaW5kZXggPT09IGFjdGl2ZVRhYlxuICAgICAgICAgID8gW0NTUy5CRy5TVVJGQUNFLkRFRkFVTFQsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVCwgQ1NTLlNIQURPVy5CT1RUT01dXG4gICAgICAgICAgOiBbJ2luYWN0aXZlJywgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXSxcbiAgICAgICAgQ1NTLkZMRVguR1JPVy5PTixcbiAgICAgICAgQ1NTLkJPUkRFUi5GVUxMLlRXTyxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgICAgQ1NTLlBBRERJTkcuWS5RVUFSVEVSLFxuICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgQ1NTLkZPTlQuUk9MRS5CVVRUT05fMSxcbiAgICAgICAgQ1NTLldISVRFU1BBQ0VfV1JBUC5PRkYsXG4gICAgICBdXCJcbiAgICAgIDpkYXRhLXRyYWNrPVwidGFiLmRhdGFUcmFjayB8fCB1bmRlZmluZWRcIlxuICAgICAgOmtleT1cInRhYi5sYWJlbFwiXG4gICAgICBAY2xpY2s9XCJoYW5kbGVDbGljayhpbmRleClcIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICB2LWZvcj1cIih0YWIsIGluZGV4KSBpbiBwcm9wcy50YWJzXCJcbiAgICA+XG4gICAgICA8c3BhbiA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8yX1NFTUlCT0xEXVwiPlxuICAgICAgICB7eyB0YWIubGFiZWwgfX1cbiAgICAgIDwvc3Bhbj5cblxuICAgICAgPHNwYW5cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfMl9TRU1JQk9MRF1cIlxuICAgICAgICB2LWlmPVwidGFiLmNvdW50ICYmIHRhYi5jb3VudCA+IDBcIlxuICAgICAgPlxuICAgICAgICAoe3sgdGFiLmNvdW50IH19KVxuICAgICAgPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWJ1dHRvbi1zZWdtZW50ZWQge1xuICAgIG1heC13aWR0aDogMjMuM3JlbTtcbiAgfVxuXG4gIC50aWRlLWJ1dHRvbi1zZWdtZW50ZWQtdGFiIHtcbiAgICBmbGV4OiAxO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC5pbmFjdGl2ZTpub3QoOmhvdmVyKSB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtdmFyaWFudCk7XG4gIH1cblxuICAuaW5hY3RpdmU6aG92ZXIge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtZGVmYXVsdCk7XG4gIH1cbjwvc3R5bGU+XG4iLCJleHBvcnQgY29uc3QgVFlQRV9DQVJEID0ge1xuICBBQ1RJT05BQkxFOiAnYWN0aW9uJyxcbiAgSU5GT1JNQVRJT05BTDogJ2luZm9ybWF0aW9uYWwnLFxuICBTRUxFQ1RBQkxFOiAnc2VsZWN0Jyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIENhcmRUeXBlID0gKHR5cGVvZiBUWVBFX0NBUkQpW2tleW9mIHR5cGVvZiBUWVBFX0NBUkRdO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBJbnRlcm5hbEJhc2VMaW5rIGZyb20gJ0AvY29tcG9uZW50cy9JbnRlcm5hbEJhc2VMaW5rLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgVFlQRV9DQVJEIH0gZnJvbSAnQC90eXBlcy9DYXJkJztcbiAgaW1wb3J0IHsgRUxFTUVOVF9CUk9BRCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBDYXJkVHlwZSB9IGZyb20gJ0AvdHlwZXMvQ2FyZCc7XG4gIGltcG9ydCB0eXBlIHsgRWxlbWVudEJyb2FkIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIGhlYWRpbmc6IHN0cmluZztcbiAgICBpY29uPzogSWNvbjtcbiAgICBzZWxlY3RlZD86IGJvb2xlYW47XG4gICAgdHlwZT86IENhcmRUeXBlO1xuICAgIGhyZWY/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkZXNjcmlwdGlvbjogdW5kZWZpbmVkLFxuICAgIGhyZWY6IHVuZGVmaW5lZCxcbiAgICBpY29uOiB1bmRlZmluZWQsXG4gICAgc2VsZWN0ZWQ6IHVuZGVmaW5lZCxcbiAgICB0eXBlOiBUWVBFX0NBUkQuSU5GT1JNQVRJT05BTCxcbiAgfSk7XG5cbiAgY29uc3Qgcm9vdEVsZW1lbnQgPSBjb21wdXRlZDxFbGVtZW50QnJvYWQgfCB0eXBlb2YgSW50ZXJuYWxCYXNlTGluaz4oKCkgPT5cbiAgICBwcm9wcy5ocmVmID8gSW50ZXJuYWxCYXNlTGluayA6IHByb3BzLnR5cGUgPT09IFRZUEVfQ0FSRC5JTkZPUk1BVElPTkFMID8gRUxFTUVOVF9CUk9BRC5ESVYgOiBFTEVNRU5UX0JST0FELkRJVlxuICApO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudFxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWNhcmQnLFxuICAgICAgQ1NTLkJPUkRFUi5DT0xPUi5MT1csXG4gICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICBDU1MuUEFERElORy5GVUxMLk9ORSxcbiAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgQ1NTLkFMSUdOLlguTEVGVCxcbiAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICB0eXBlICE9PSBUWVBFX0NBUkQuSU5GT1JNQVRJT05BTCAmJiAnaG92ZXJhYmxlJyxcbiAgICAgIHR5cGUgPT09IFRZUEVfQ0FSRC5TRUxFQ1RBQkxFICYmIHNlbGVjdGVkICYmICdzZWxlY3RlZCcsXG4gICAgXVwiXG4gICAgOmhyZWY9XCJocmVmXCJcbiAgICA6dHlwZT1cInJvb3RFbGVtZW50ID09PSBFTEVNRU5UX0JST0FELkJVVFRPTiA/IEVMRU1FTlRfQlJPQUQuQlVUVE9OIDogdW5kZWZpbmVkXCJcbiAgICA6aXM9XCJyb290RWxlbWVudFwiXG4gID5cbiAgICA8VGlkZUljb25cbiAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5HUk9XLk9GRiwgQ1NTLkZMRVguU0hSSU5LLk9GRl1cIlxuICAgICAgOmljb249XCJpY29uXCJcbiAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICB2LWlmPVwiaWNvblwiXG4gICAgLz5cblxuICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5BWElTMi5TVEFSVCwgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLkdBUC5IQUxGXVwiPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8xX1NFTUlCT0xELCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFRdXCI+XG4gICAgICAgIHt7IGhlYWRpbmcgfX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzIsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICB2LWlmPVwiZGVzY3JpcHRpb25cIlxuICAgICAgPlxuICAgICAgICB7eyBkZXNjcmlwdGlvbiB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvY29tcG9uZW50PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtY2FyZC5ob3ZlcmFibGU6bm90KC5zZWxlY3RlZCk6aG92ZXIge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXItcmVzdCk7XG4gIH1cbiAgLnRpZGUtY2FyZC5zZWxlY3RlZCB7XG4gICAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyLWhpZ2gpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiAtMnB4O1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIG9uTW91bnRlZCwgb25Vbm1vdW50ZWQsIHJlZiB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVCdXR0b25JY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQnV0dG9uSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaGFzRG90cz86IGJvb2xlYW47XG4gICAgaXNGbG9hdGluZz86IGJvb2xlYW47XG4gICAgaXNIZWFkbGluZTE/OiBib29sZWFuO1xuICAgIGlzSGlkZWF3YXlCdXR0b25zPzogYm9vbGVhbjtcbiAgICBpc1Njcm9sbEJ5UGFnZT86IGJvb2xlYW47XG4gICAgbWF4RG90cz86IG51bWJlcjtcbiAgICBzdWJ0aXRsZT86IHN0cmluZztcbiAgICB0aXRsZT86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGhhc0RvdHM6IHVuZGVmaW5lZCxcbiAgICBpc0Zsb2F0aW5nOiBmYWxzZSxcbiAgICBpc0hlYWRsaW5lMTogZmFsc2UsXG4gICAgaXNIaWRlYXdheUJ1dHRvbnM6IHRydWUsXG4gICAgaXNTY3JvbGxCeVBhZ2U6IHRydWUsXG4gICAgbWF4RG90czogNSxcbiAgICBzdWJ0aXRsZTogdW5kZWZpbmVkLFxuICAgIHRpdGxlOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIHR5cGUgRW1pdHMgPSB7XG4gICAgKGV2ZW50OiAnc2xpZGVzQWRkZWRUb1ZpZXcnLCBzbGlkZXNJblZpZXc6IG51bWJlcltdKTogdm9pZDtcbiAgfTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8RW1pdHM+KCk7XG5cbiAgY29uc3QgY29udGFpbmVyUmVmID0gcmVmPEhUTUxEaXZFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IGNvbnRlbnRXaWR0aCA9IHJlZjxudW1iZXI+KDApO1xuICBjb25zdCBjdXJyZW50UGFnZUluZGV4ID0gcmVmPG51bWJlcj4oMCk7XG4gIGNvbnN0IGRvdHNSZWYgPSByZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgZnJhbWVXaWR0aCA9IHJlZjxudW1iZXI+KDApO1xuICBjb25zdCBpc0ZpcnN0U2xpZGUgPSByZWY8Ym9vbGVhbj4odHJ1ZSk7XG4gIGNvbnN0IGlzTGFzdFNsaWRlID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3Qgc2hvd0J1dHRvbnMgPSByZWY8Ym9vbGVhbj4odHJ1ZSk7XG4gIGNvbnN0IHNsaWRlT2JzZXJ2ZXIgPSByZWY8SW50ZXJzZWN0aW9uT2JzZXJ2ZXIgfCBudWxsPihudWxsKTtcbiAgY29uc3Qgc2xpZGVzID0gcmVmPEhUTUxFbGVtZW50W10+KFtdKTtcbiAgY29uc3Qgc2xpZGVzSW5WaWV3ID0gcmVmPG51bWJlcltdPihbXSk7XG4gIGNvbnN0IHNsb3RPYnNlcnZlciA9IHJlZjxNdXRhdGlvbk9ic2VydmVyIHwgbnVsbD4obnVsbCk7XG5cbiAgY29uc3QgY3VycmVudFBhZ2UgPSBjb21wdXRlZCgoKSA9PiBjdXJyZW50UGFnZUluZGV4LnZhbHVlICsgMSk7XG4gIGNvbnN0IGRvdENvbnRhaW5lcldpZHRoID0gY29tcHV0ZWQoKCkgPT4gZG90Q291bnRWaXNpYmxlLnZhbHVlICogZG90V2lkdGggKyAoZG90Q291bnRWaXNpYmxlLnZhbHVlIC0gMSkgKiBkb3RHYXApO1xuICBjb25zdCBkb3RDb3VudFZpc2libGUgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMubWF4RG90cyA+IHRvdGFsUGFnZXMudmFsdWUgPyB0b3RhbFBhZ2VzLnZhbHVlIDogcHJvcHMubWF4RG90cykpO1xuICBjb25zdCBsYXN0UGFnZUluZGV4ID0gY29tcHV0ZWQoKCkgPT4gdG90YWxQYWdlcy52YWx1ZSAtIDEpO1xuICBjb25zdCB0b3RhbFBhZ2VzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICghc2xpZGVzLnZhbHVlLmxlbmd0aCkgcmV0dXJuIDA7XG4gICAgaWYgKCFwcm9wcy5pc1Njcm9sbEJ5UGFnZSkgcmV0dXJuIHNsaWRlcy52YWx1ZS5sZW5ndGg7XG5cbiAgICBjb25zdCBnYXBXaWR0aCA9IGNhcmRHYXAgKiAoc2xpZGVzLnZhbHVlLmxlbmd0aCAtIDEpO1xuICAgIGNvbnN0IGNvbnRlbnROb0dhcCA9IGNvbnRlbnRXaWR0aC52YWx1ZSAtIGdhcFdpZHRoO1xuICAgIGNvbnN0IHF1b3RpZW50ID0gTWF0aC5yb3VuZChjb250ZW50Tm9HYXAgLyBmcmFtZVdpZHRoLnZhbHVlKTtcbiAgICBjb25zdCByZW1haW5kZXIgPSBjb250ZW50Tm9HYXAgJSBmcmFtZVdpZHRoLnZhbHVlO1xuXG4gICAgcmV0dXJuIHJlbWFpbmRlciA/IHF1b3RpZW50ICsgMSA6IHF1b3RpZW50O1xuICB9KTtcblxuICBjb25zdCBjYXJkR2FwOiBudW1iZXIgPSAxNjtcbiAgY29uc3QgZG90R2FwOiBudW1iZXIgPSA4O1xuICBjb25zdCBkb3RXaWR0aDogbnVtYmVyID0gODtcblxuICBjb25zdCBnZXREb3RDbGFzcyA9IChkb3RJbmRleDogbnVtYmVyKSA9PiB7XG4gICAgbGV0IGNsYXNzTmFtZSA9ICcnO1xuXG4gICAgaWYgKGRvdEluZGV4ID09PSBjdXJyZW50UGFnZUluZGV4LnZhbHVlKSBjbGFzc05hbWUgPSAndGlkZS1jYXJvdXNlbC1kb3QtYWN0aXZlJztcbiAgICBpZiAoTWF0aC5hYnMoY3VycmVudFBhZ2VJbmRleC52YWx1ZSAtIGRvdEluZGV4KSA9PT0gMSkgY2xhc3NOYW1lID0gJ3RpZGUtY2Fyb3VzZWwtZG90LW5laWdoYm9yJztcblxuICAgIHJldHVybiBjbGFzc05hbWU7XG4gIH07XG5cbiAgY29uc3QgbWVhc3VyZURvbSA9ICgpID0+IHtcbiAgICBpZiAoIWNvbnRhaW5lclJlZi52YWx1ZSkgcmV0dXJuO1xuXG4gICAgY29udGVudFdpZHRoLnZhbHVlID0gY29udGFpbmVyUmVmLnZhbHVlLnNjcm9sbFdpZHRoO1xuICAgIGZyYW1lV2lkdGgudmFsdWUgPSBjb250YWluZXJSZWYudmFsdWUuY2xpZW50V2lkdGg7XG4gICAgc2hvd0J1dHRvbnMudmFsdWUgPSBjb250ZW50V2lkdGgudmFsdWUgPiBmcmFtZVdpZHRoLnZhbHVlO1xuICB9O1xuXG4gIGNvbnN0IG9ic2VydmVTbGlkZXMgPSAoKSA9PiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIHJvb3Q6IGNvbnRhaW5lclJlZj8udmFsdWUsXG4gICAgICByb290TWFyZ2luOiAnMHB4IDFweCAwcHggMHB4JyxcbiAgICAgIHRocmVzaG9sZDogMSxcbiAgICB9O1xuXG4gICAgc2xpZGVPYnNlcnZlci52YWx1ZSA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcigoZW50cmllcykgPT4ge1xuICAgICAgbGV0IHNsaWRlc0FkZGVkVG9WaWV3OiBudW1iZXJbXSA9IFtdO1xuXG4gICAgICBlbnRyaWVzLmZvckVhY2goKGVudHJ5KSA9PiB7XG4gICAgICAgIGNvbnN0IHNsaWRlSW5kZXggPSBzbGlkZXMudmFsdWUuaW5kZXhPZihlbnRyeS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpO1xuXG4gICAgICAgIGlmIChlbnRyeS5pc0ludGVyc2VjdGluZykge1xuICAgICAgICAgIHNsaWRlc0FkZGVkVG9WaWV3LnB1c2goc2xpZGVJbmRleCk7XG4gICAgICAgICAgc2xpZGVzSW5WaWV3LnZhbHVlLnB1c2goc2xpZGVJbmRleCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2xpZGVzSW5WaWV3LnZhbHVlID0gc2xpZGVzSW5WaWV3LnZhbHVlLmZpbHRlcigoc2xpZGUpID0+IHNsaWRlICE9PSBzbGlkZUluZGV4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNsaWRlc0luVmlldy52YWx1ZS5zb3J0KChhLCBiKSA9PiBhIC0gYik7XG4gICAgICB9KTtcblxuICAgICAgaXNGaXJzdFNsaWRlLnZhbHVlID0gc2xpZGVzSW5WaWV3LnZhbHVlLmluY2x1ZGVzKDApO1xuICAgICAgaXNMYXN0U2xpZGUudmFsdWUgPSBzbGlkZXNJblZpZXcudmFsdWUuaW5jbHVkZXMoc2xpZGVzLnZhbHVlLmxlbmd0aCAtIDEpO1xuXG4gICAgICBpZiAoc2xpZGVzQWRkZWRUb1ZpZXcubGVuZ3RoID4gMCkgZW1pdCgnc2xpZGVzQWRkZWRUb1ZpZXcnLCBzbGlkZXNBZGRlZFRvVmlldyk7XG4gICAgfSwgb3B0aW9ucyk7XG5cbiAgICBzbGlkZXMudmFsdWUuZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgIGlmIChzbGlkZU9ic2VydmVyLnZhbHVlKSBzbGlkZU9ic2VydmVyLnZhbHVlLm9ic2VydmUoY2hpbGQpO1xuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IG9ic2VydmVTbG90ID0gKCkgPT4ge1xuICAgIGNvbnN0IG9ic2VydmVyQ2FsbGJhY2sgPSAoKSA9PiB7XG4gICAgICBpZiAoY29udGFpbmVyUmVmLnZhbHVlID09PSBudWxsKSByZXR1cm47XG5cbiAgICAgIHNsaWRlcy52YWx1ZSA9IEFycmF5LmZyb20oY29udGFpbmVyUmVmLnZhbHVlLmNoaWxkcmVuKSBhcyBIVE1MRWxlbWVudFtdO1xuICAgICAgb2JzZXJ2ZVNsaWRlcygpO1xuICAgIH07XG5cbiAgICBzbG90T2JzZXJ2ZXIudmFsdWUgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihvYnNlcnZlckNhbGxiYWNrKTtcblxuICAgIGlmIChjb250YWluZXJSZWYudmFsdWUpIHNsb3RPYnNlcnZlci52YWx1ZS5vYnNlcnZlKGNvbnRhaW5lclJlZi52YWx1ZSwgeyBjaGlsZExpc3Q6IHRydWUgfSk7XG4gIH07XG5cbiAgY29uc3Qgc2Nyb2xsVG9PZmZzZXQgPSAodGFyZ2V0OiBudW1iZXIpID0+IHtcbiAgICBpZiAoY29udGFpbmVyUmVmLnZhbHVlID09PSBudWxsKSByZXR1cm47XG5cbiAgICBjb25zdCBsYXN0T2Zmc2V0OiBudW1iZXIgPSBzbGlkZXMudmFsdWVbc2xpZGVzLnZhbHVlLmxlbmd0aCAtIDFdLm9mZnNldExlZnQ7XG4gICAgY29uc3QgcGxhY2VtZW50ID0gKHRhcmdldCAvIGxhc3RPZmZzZXQpICogbGFzdFBhZ2VJbmRleC52YWx1ZTtcbiAgICBjb25zdCBpc1Njcm9sbGluZ0xlZnQgPSBwbGFjZW1lbnQgPD0gY3VycmVudFBhZ2VJbmRleC52YWx1ZTtcblxuICAgIGN1cnJlbnRQYWdlSW5kZXgudmFsdWUgPSBpc1Njcm9sbGluZ0xlZnQgPyBjdXJyZW50UGFnZUluZGV4LnZhbHVlIC0gMSA6IGN1cnJlbnRQYWdlSW5kZXgudmFsdWUgKyAxO1xuXG4gICAgY29udGFpbmVyUmVmLnZhbHVlLnNjcm9sbFRvKHtcbiAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICAgIGxlZnQ6IHRhcmdldCxcbiAgICB9KTtcbiAgICB1cGRhdGVEb3RzKGlzU2Nyb2xsaW5nTGVmdCk7XG4gIH07XG5cbiAgY29uc3Qgc2hvd05leHRQYWdlID0gKCkgPT4ge1xuICAgIGlmIChzbGlkZXNJblZpZXcudmFsdWUubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICBjb25zdCBuZXh0U2xpZGU6IG51bWJlciA9IHNsaWRlc0luVmlldy52YWx1ZVtzbGlkZXNJblZpZXcudmFsdWUubGVuZ3RoIC0gMV0gKyAxO1xuXG4gICAgc2Nyb2xsVG9PZmZzZXQoc2xpZGVzLnZhbHVlW25leHRTbGlkZV0ub2Zmc2V0TGVmdCk7XG4gIH07XG5cbiAgY29uc3Qgc2hvd1ByZXZpb3VzUGFnZSA9ICgpID0+IHtcbiAgICBpZiAoc2xpZGVzSW5WaWV3LnZhbHVlLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgY29uc3QgcHJldmlvdXNTbGlkZTogbnVtYmVyID0gc2xpZGVzSW5WaWV3LnZhbHVlWzBdIC0gc2xpZGVzSW5WaWV3LnZhbHVlLmxlbmd0aDtcblxuICAgIHNjcm9sbFRvT2Zmc2V0KHNsaWRlcy52YWx1ZVtwcmV2aW91c1NsaWRlXT8ub2Zmc2V0TGVmdCB8fCAwKTtcbiAgfTtcblxuICBjb25zdCBzaG93TmV4dFNsaWRlID0gKCkgPT4ge1xuICAgIGlmIChzbGlkZXNJblZpZXcudmFsdWUubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICBjb25zdCBuZXh0U2xpZGU6IG51bWJlciA9IHNsaWRlc0luVmlldy52YWx1ZS5sZW5ndGggPiAxID8gc2xpZGVzSW5WaWV3LnZhbHVlWzFdIDogc2xpZGVzSW5WaWV3LnZhbHVlWzBdICsgMTtcblxuICAgIHNjcm9sbFRvT2Zmc2V0KHNsaWRlcy52YWx1ZVtuZXh0U2xpZGVdLm9mZnNldExlZnQpO1xuICB9O1xuXG4gIGNvbnN0IHNob3dQcmV2aW91c1NsaWRlID0gKCkgPT4ge1xuICAgIGlmIChzbGlkZXNJblZpZXcudmFsdWUubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICBjb25zdCBwcmV2aW91c1NsaWRlOiBudW1iZXIgPSBzbGlkZXNJblZpZXcudmFsdWVbMF0gLSAxO1xuXG4gICAgc2Nyb2xsVG9PZmZzZXQoc2xpZGVzLnZhbHVlW3ByZXZpb3VzU2xpZGVdLm9mZnNldExlZnQpO1xuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZURvdHMgPSAoaXNTY3JvbGxpbmdMZWZ0OiBib29sZWFuKSA9PiB7XG4gICAgaWYgKCFkb3RzUmVmLnZhbHVlIHx8IGRvdENvdW50VmlzaWJsZS52YWx1ZSA+PSB0b3RhbFBhZ2VzLnZhbHVlKSByZXR1cm47XG5cbiAgICBjb25zdCBpc09kZERvdENvdW50ID0gZG90Q291bnRWaXNpYmxlLnZhbHVlICUgMiAhPT0gMDtcbiAgICBjb25zdCBjZW50ZXJEb3QgPVxuICAgICAgaXNPZGREb3RDb3VudCB8fCBpc1Njcm9sbGluZ0xlZnRcbiAgICAgICAgPyBNYXRoLmZsb29yKGRvdENvdW50VmlzaWJsZS52YWx1ZSAvIDIpICsgMVxuICAgICAgICA6IE1hdGguZmxvb3IoZG90Q291bnRWaXNpYmxlLnZhbHVlIC8gMik7XG5cbiAgICBkb3RzUmVmLnZhbHVlLnNjcm9sbFRvKHtcbiAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICAgIGxlZnQ6IGN1cnJlbnRQYWdlLnZhbHVlIDwgY2VudGVyRG90ID8gMCA6IChjdXJyZW50UGFnZS52YWx1ZSAtIGNlbnRlckRvdCkgKiAoZG90V2lkdGggKyBkb3RHYXApLFxuICAgIH0pO1xuICB9O1xuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgaWYgKGNvbnRhaW5lclJlZi52YWx1ZSA9PT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgc2xpZGVzLnZhbHVlID0gQXJyYXkuZnJvbShjb250YWluZXJSZWYudmFsdWUuY2hpbGRyZW4pIGFzIEhUTUxFbGVtZW50W107XG5cbiAgICBtZWFzdXJlRG9tKCk7XG4gICAgb2JzZXJ2ZVNsaWRlcygpO1xuICAgIG9ic2VydmVTbG90KCk7XG5cbiAgICBpZiAod2luZG93KSB7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgbWVhc3VyZURvbSk7XG4gICAgfVxuICB9KTtcblxuICBvblVubW91bnRlZCgoKSA9PiB7XG4gICAgc2xpZGVPYnNlcnZlci52YWx1ZT8uZGlzY29ubmVjdCgpO1xuICAgIHNsb3RPYnNlcnZlci52YWx1ZT8uZGlzY29ubmVjdCgpO1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBtZWFzdXJlRG9tKTtcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8c2VjdGlvblxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWNhcm91c2VsJyxcbiAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgQ1NTLkdBUC5PTkUsXG4gICAgICBDU1MuV0lEVEguTUFYX0ZVTEwsXG4gICAgXVwiXG4gICAgcmVmPVwiY2Fyb3VzZWxSZWZcIlxuICA+XG4gICAgPHNlY3Rpb25cbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBwcm9wcy50aXRsZSA/IENTUy5BWElTMS5CRVRXRUVOIDogQ1NTLkFYSVMxLkVORCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLldJRFRILkZVTExdXCJcbiAgICAgIHYtaWY9XCIoIXByb3BzLmlzRmxvYXRpbmcgJiYgc2hvd0J1dHRvbnMpIHx8IHByb3BzLnRpdGxlXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5XUkFQLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLk9ORV1cIlxuICAgICAgICB2LWlmPVwicHJvcHMudGl0bGVcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW2lzSGVhZGxpbmUxID8gQ1NTLkZPTlQuUk9MRS5IRUFETElORV8xIDogQ1NTLkZPTlQuUk9MRS5IRUFETElORV8yXVwiXG4gICAgICAgICAgdi1pZj1cInByb3BzLnRpdGxlXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHByb3BzLnRpdGxlIH19XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8yLCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgICB2LWlmPVwicHJvcHMuc3VidGl0bGVcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcHJvcHMuc3VidGl0bGUgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5PTkVdXCJcbiAgICAgICAgdi1pZj1cIiFwcm9wcy5pc0Zsb2F0aW5nICYmIHNob3dCdXR0b25zXCJcbiAgICAgID5cbiAgICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgICAgOmRpc2FibGVkPVwiaXNGaXJzdFNsaWRlXCJcbiAgICAgICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9MRUZUXCJcbiAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5URVJUSUFSWVwiXG4gICAgICAgICAgQGNsaWNrPVwiaXNTY3JvbGxCeVBhZ2UgPyBzaG93UHJldmlvdXNQYWdlKCkgOiBzaG93UHJldmlvdXNTbGlkZSgpXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJpc0xhc3RTbGlkZVwiXG4gICAgICAgICAgOmljb249XCJJQ09OLkNIRVZST05fUklHSFRcIlxuICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlRFUlRJQVJZXCJcbiAgICAgICAgICBAY2xpY2s9XCJpc1Njcm9sbEJ5UGFnZSA/IHNob3dOZXh0UGFnZSgpIDogc2hvd05leHRTbGlkZSgpXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvc2VjdGlvbj5cblxuICAgIDxzbG90IG5hbWU9XCJtaXNjXCIgLz5cblxuICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5QT1NJVElPTi5SRUxBVElWRSwgQ1NTLkRJU1BMQVkuRkxFWF1cIj5cbiAgICAgIDx1bFxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtY2Fyb3VzZWwtY29udGFpbmVyJyxcbiAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgIENTUy5HQVAuT05FLFxuICAgICAgICAgIENTUy5MSVNUX0JVTExFVFMuT0ZGLFxuICAgICAgICAgIENTUy5PVkVSRkxPVy5YLlNDUk9MTCxcbiAgICAgICAgICBDU1MuU0NST0xMQkFSLk9GRixcbiAgICAgICAgICBDU1MuU05BUC5PTixcbiAgICAgICAgXVwiXG4gICAgICAgIHJlZj1cImNvbnRhaW5lclJlZlwiXG4gICAgICA+XG4gICAgICAgIDxzbG90IC8+XG4gICAgICA8L3VsPlxuXG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1jYXJvdXNlbC1kb3RzLWNvbnRhaW5lcicsXG4gICAgICAgICAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICAgICAgICAgIENTUy5QT1NJVElPTklORy5CT1RUT00sXG4gICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgICAgIENTUy5NQVJHSU4uQk9UVE9NLkhBTEYsXG4gICAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgIF1cIlxuICAgICAgICA6c3R5bGU9XCJ7XG4gICAgICAgICAgd2lkdGg6IGAke2RvdENvbnRhaW5lcldpZHRofXB4YCxcbiAgICAgICAgfVwiXG4gICAgICAgIHYtaWY9XCJpc1Njcm9sbEJ5UGFnZSAmJiBoYXNEb3RzICYmIHRvdGFsUGFnZXMgPiAxXCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLWNhcm91c2VsLWRvdHMnLFxuICAgICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICAgIENTUy5BWElTMS5TVEFSVCxcbiAgICAgICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgICAgICBDU1MuT1ZFUkZMT1cuWC5TQ1JPTEwsXG4gICAgICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICAgICAgQ1NTLlNDUk9MTEJBUi5PRkYsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgcmVmPVwiZG90c1JlZlwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAgICd0aWRlLWNhcm91c2VsLWRvdCcsXG4gICAgICAgICAgICAgIENTUy5GTEVYLlNIUklOSy5PRkYsXG4gICAgICAgICAgICAgIENTUy5IRUlHSFQuWkVSTyxcbiAgICAgICAgICAgICAgQ1NTLldJRFRILlpFUk8sXG4gICAgICAgICAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICAgICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgICAgICAgIGdldERvdENsYXNzKGluZGV4KSxcbiAgICAgICAgICAgIF1cIlxuICAgICAgICAgICAgOmtleT1cImluZGV4XCJcbiAgICAgICAgICAgIHYtZm9yPVwiKF8sIGluZGV4KSBpbiB0b3RhbFBhZ2VzXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1jYXJvdXNlbC1idXR0b24tb3ZlcmxheScsXG4gICAgICAgICAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICAgICAgICAgIENTUy5QT1NJVElPTklORy5UT1AsXG4gICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICBDU1MuQVhJUzEuQkVUV0VFTixcbiAgICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICAgIENTUy5IRUlHSFQuRlVMTCxcbiAgICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICAgIHByb3BzLmlzSGlkZWF3YXlCdXR0b25zID8gJ2hpZGVhd2F5JyA6ICcnLFxuICAgICAgICBdXCJcbiAgICAgICAgdi1pZj1cImlzRmxvYXRpbmcgJiYgc2hvd0J1dHRvbnNcIlxuICAgICAgPlxuICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5MRUZULk9ORSwgQ1NTLlBPSU5URVJfRVZFTlRTLk9OXVwiXG4gICAgICAgICAgOmRpc2FibGVkPVwiaXNGaXJzdFNsaWRlXCJcbiAgICAgICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9MRUZUXCJcbiAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgICBAY2xpY2s9XCJpc1Njcm9sbEJ5UGFnZSA/IHNob3dQcmV2aW91c1BhZ2UoKSA6IHNob3dQcmV2aW91c1NsaWRlKClcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuTUFSR0lOLlJJR0hULk9ORSwgQ1NTLlBPSU5URVJfRVZFTlRTLk9OXVwiXG4gICAgICAgICAgOmRpc2FibGVkPVwiaXNMYXN0U2xpZGVcIlxuICAgICAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX1JJR0hUXCJcbiAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgICBAY2xpY2s9XCJpc1Njcm9sbEJ5UGFnZSA/IHNob3dOZXh0UGFnZSgpIDogc2hvd05leHRTbGlkZSgpXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L3NlY3Rpb24+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1jYXJvdXNlbC1idXR0b24tb3ZlcmxheS5oaWRlYXdheSB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuXG4gIC50aWRlLWNhcm91c2VsOmhvdmVyIC50aWRlLWNhcm91c2VsLWJ1dHRvbi1vdmVybGF5LmhpZGVhd2F5IHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG5cbiAgLnRpZGUtY2Fyb3VzZWwtZG90IHtcbiAgICB3aWR0aDogOHB4O1xuICAgIGhlaWdodDogOHB4O1xuICAgIG9wYWNpdHk6IDAuNzU7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwLjUpO1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgdmFyKC0tdGlkZS1hbmltYXRlKSwgdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAudGlkZS1jYXJvdXNlbC1kb3QtbmVpZ2hib3Ige1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMC43NSk7XG4gIH1cblxuICAudGlkZS1jYXJvdXNlbC1kb3QtYWN0aXZlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICBAbWVkaWEgKHBvaW50ZXI6IGNvYXJzZSkge1xuICAgIC50aWRlLWNhcm91c2VsIC50aWRlLWNhcm91c2VsLWJ1dHRvbi1vdmVybGF5IHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBJbnRlcm5hbEJhc2VMaW5rIGZyb20gJ0AvY29tcG9uZW50cy9JbnRlcm5hbEJhc2VMaW5rLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgRUxFTUVOVCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRBUkdFVCB9IGZyb20gJ0AvdHlwZXMvVGFyZ2V0JztcblxuICBpbXBvcnQgdHlwZSB7IEVsZW1lbnQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgZWxlbWVudD86IEVsZW1lbnQ7XG4gICAgaHJlZj86IHN0cmluZztcbiAgICBpc05ld1RhYj86IGJvb2xlYW47XG4gICAgbGFiZWw6IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGVsZW1lbnQ6IEVMRU1FTlQuTElOSyxcbiAgICBocmVmOiB1bmRlZmluZWQsXG4gICAgaXNOZXdUYWI6IGZhbHNlLFxuICB9KTtcblxuICBjb25zdCByb290RWxlbWVudCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgPyBJbnRlcm5hbEJhc2VMaW5rIDogcHJvcHMuZWxlbWVudCkpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudFxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWNoaXAtYWN0aW9uJyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICBDU1MuUEFERElORy5YLk9ORSxcbiAgICAgIENTUy5QQURESU5HLlkuSEFMRixcbiAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICBDU1MuRk9OVC5ST0xFLkxJTktfMixcbiAgICAgIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgIENTUy5VTkRFUkxJTkUuUkVTVC5PRkYsXG4gICAgXVwiXG4gICAgOmhyZWY9XCJwcm9wcy5ocmVmXCJcbiAgICA6dGFyZ2V0PVwicHJvcHMuaXNOZXdUYWIgPyBUQVJHRVQuQkxBTksgOiBUQVJHRVQuU0VMRlwiXG4gICAgOnR5cGU9XCJlbGVtZW50ID09PSBFTEVNRU5ULkJVVFRPTiA/IEVMRU1FTlQuQlVUVE9OIDogdW5kZWZpbmVkXCJcbiAgICA6aXM9XCJyb290RWxlbWVudFwiXG4gID5cbiAgICA8VGlkZUljb24gOmljb249XCJJQ09OLlNFQVJDSFwiIC8+XG5cbiAgICA8c3Bhbj57eyBwcm9wcy5sYWJlbCB9fTwvc3Bhbj5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1jaGlwLWFjdGlvbjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLXZhcmlhbnQpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXItaGlnaCk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBpc0FjdGl2ZTogYm9vbGVhbjtcbiAgICBsYWJlbDogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHM8UHJvcHM+KCk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8YnV0dG9uXG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtY2hpcC1maWx0ZXInLFxuICAgICAgcHJvcHMuaXNBY3RpdmVcbiAgICAgICAgPyBbQ1NTLkJHLlNFQ09OREFSWSwgQ1NTLkZPTlQuQ09MT1IuU0VDT05EQVJZXVxuICAgICAgICA6IFtDU1MuQkcuU1VSRkFDRS5WQVJJQU5ULCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFRdLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgIENTUy5QQURESU5HLlguT05FLFxuICAgICAgQ1NTLlBBRERJTkcuWS5IQUxGLFxuICAgICAgQ1NTLkZPTlQuUk9MRS5MQUJFTF8yLFxuICAgICAgcHJvcHMuaXNBY3RpdmUgPyAnYWN0aXZlJyA6ICcnLFxuICAgIF1cIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICA+XG4gICAgPHNsb3QgLz5cbiAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzEuQ0VOVEVSLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLkhBTEZdXCI+XG4gICAgICA8c3BhbiA6Y2xhc3M9XCJbcHJvcHMuaXNBY3RpdmUgPyAnJyA6ICdpY29uLXNwYWNpbmcnLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzEsIENTUy5XSElURVNQQUNFX1dSQVAuT0ZGXVwiPlxuICAgICAgICB7eyBwcm9wcy5sYWJlbCB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2J1dHRvbj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC8qIEJvcmRlciBtdXN0IGFsd2F5cyBleGlzdCB0byBwcmV2ZW50IHJlc2l6ZSBvbiBob3ZlciBzdGF0ZSwgYnV0IG1hdGNoIGJhY2tncm91bmQgY29sb3Igb24gcmVzdCBzdGF0ZSB0byBibGVuZCBpbi4gKi9cbiAgLnRpZGUtY2hpcC1maWx0ZXIge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLXZhcmlhbnQpO1xuICB9XG5cbiAgLnRpZGUtY2hpcC1maWx0ZXIuYWN0aXZlIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtc2Vjb25kYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWNoaXAtZmlsdGVyOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtdmFyaWFudCk7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10aWRlLWJvcmRlcik7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtb24tc3VyZmFjZSk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBsYWJlbDogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHM8UHJvcHM+KCk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8YnV0dG9uXG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtY2hpcC1pbnB1dCcsXG4gICAgICBDU1MuQkcuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRSxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICBDU1MuUEFERElORy5YLk9ORSxcbiAgICAgIENTUy5QQURESU5HLlkuSEFMRixcbiAgICAgIENTUy5GT05ULlJPTEUuTEFCRUxfMixcbiAgICBdXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgPlxuICAgIDxzcGFuPnt7IHByb3BzLmxhYmVsIH19PC9zcGFuPlxuXG4gICAgPFRpZGVJY29uIDppY29uPVwiSUNPTi5DTE9TRVwiIC8+XG4gIDwvYnV0dG9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtY2hpcC1pbnB1dCB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10aWRlLWJvcmRlcik7XG4gIH1cblxuICAudGlkZS1jaGlwLWlucHV0OmhvdmVyIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtYm9yZGVyLWhpZ2gpO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaGVhZGluZz86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGhlYWRpbmc6ICcnLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxzZWN0aW9uIGNsYXNzPVwidGlkZS1jb2x1bW5zXCI+XG4gICAgPGgyIDpjbGFzcz1cIltDU1MuTUFSR0lOLkJPVFRPTS5IQUxGXVwiPlxuICAgICAge3sgcHJvcHMuaGVhZGluZyB9fVxuICAgIDwvaDI+XG5cbiAgICA8dWwgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLldSQVAsIENTUy5HQVAuVFdPLCBDU1MuTElTVF9CVUxMRVRTLk9GRl1cIj5cbiAgICAgIDxsaSBjbGFzcz1cInRpZGUtY29sdW1ucy1jb2x1bW5cIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cInNlY3Rpb24xXCIgLz5cbiAgICAgIDwvbGk+XG5cbiAgICAgIDxsaSBjbGFzcz1cInRpZGUtY29sdW1ucy1jb2x1bW5cIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cInNlY3Rpb24yXCIgLz5cbiAgICAgIDwvbGk+XG5cbiAgICAgIDxsaSBjbGFzcz1cInRpZGUtY29sdW1ucy1jb2x1bW5cIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cInNlY3Rpb24zXCIgLz5cbiAgICAgIDwvbGk+XG5cbiAgICAgIDxsaSBjbGFzcz1cInRpZGUtY29sdW1ucy1jb2x1bW5cIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cInNlY3Rpb240XCIgLz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgPC9zZWN0aW9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtY29sdW1ucy1jb2x1bW4ge1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5cbiAgQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gICAgLnRpZGUtY29sdW1ucy1jb2x1bW4ge1xuICAgICAgd2lkdGg6IGNhbGMoKDEwMCUgLSAycmVtKSAvIDIpO1xuICAgIH1cbiAgfVxuXG4gIEBtZWRpYSAobWluLXdpZHRoOiAxMjMycHgpIHtcbiAgICAudGlkZS1jb2x1bW5zLWNvbHVtbiB7XG4gICAgICB3aWR0aDogY2FsYygoMTAwJSAtIDZyZW0pIC8gNCk7XG4gICAgfVxuICB9XG48L3N0eWxlPlxuIiwiaW1wb3J0IHsgaW5qZWN0LCBwcm92aWRlLCByZWYgfSBmcm9tICd2dWUnO1xuXG5pbXBvcnQgdHlwZSB7IFJlZiB9IGZyb20gJ3Z1ZSc7XG5cbnR5cGUgVGlkZUZvcm1Db250ZXh0ID0ge1xuICBmb3JjZVNob3dFcnJvcnM6IFJlZjxib29sZWFuPjtcbn07XG5cbmNvbnN0IEZPUk1fS0VZID0gU3ltYm9sKCd0aWRlLWZvcm0nKTtcblxuZXhwb3J0IGNvbnN0IHVzZVRpZGVGb3JtID0gKCkgPT4ge1xuICBjb25zdCBmb3JjZVNob3dFcnJvcnMgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHByb3ZpZGU8VGlkZUZvcm1Db250ZXh0PihGT1JNX0tFWSwgeyBmb3JjZVNob3dFcnJvcnMgfSk7XG5cbiAgY29uc3QgcmV2ZWFsVmFsaWRhdGlvbkVycm9ycyA9ICgpID0+IHtcbiAgICBmb3JjZVNob3dFcnJvcnMudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIHJldHVybiB7IHJldmVhbFZhbGlkYXRpb25FcnJvcnMgfTtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VGb3JtQ29udGV4dCA9ICgpID0+IHtcbiAgcmV0dXJuIGluamVjdDxUaWRlRm9ybUNvbnRleHQ+KEZPUk1fS0VZKTtcbn07XG4iLCI8c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxuICBpbXBvcnQgeyB1c2VUaWRlRm9ybSB9IGZyb20gJ0AvY29tcG9zYWJsZXMvdXNlVGlkZUZvcm0nO1xuXG4gIHR5cGUgRW1pdHMgPSB7XG4gICAgKGV2ZW50OiAnc3VibWl0JywgZTogU3VibWl0RXZlbnQpOiB2b2lkO1xuICB9O1xuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8RW1pdHM+KCk7XG5cbiAgY29uc3QgeyByZXZlYWxWYWxpZGF0aW9uRXJyb3JzIH0gPSB1c2VUaWRlRm9ybSgpO1xuXG4gIGNvbnN0IGhhbmRsZVN1Ym1pdCA9IChlOiBTdWJtaXRFdmVudCkgPT4ge1xuICAgIHJldmVhbFZhbGlkYXRpb25FcnJvcnMoKTtcbiAgICBlbWl0KCdzdWJtaXQnLCBlKTtcbiAgfTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxmb3JtXG4gICAgQHN1Ym1pdC5wcmV2ZW50PVwiaGFuZGxlU3VibWl0XCJcbiAgICBub3ZhbGlkYXRlXG4gID5cbiAgICA8c2xvdCAvPlxuICA8L2Zvcm0+XG48L3RlbXBsYXRlPlxuIiwiZXhwb3J0IGNvbnN0IE9CSkVDVF9GSVQgPSB7XG4gIENPTlRBSU46ICdjb250YWluJyxcbiAgQ09WRVI6ICdjb3ZlcicsXG4gIFNDQUxFX0RPV046ICdzY2FsZS1kb3duJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIE9iamVjdEZpdCA9ICh0eXBlb2YgT0JKRUNUX0ZJVClba2V5b2YgdHlwZW9mIE9CSkVDVF9GSVRdO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIHJlZiB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHsgT0JKRUNUX0ZJVCB9IGZyb20gJ0AvdHlwZXMvSW1hZ2UnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBPYmplY3RGaXQgfSBmcm9tICdAL3R5cGVzL0ltYWdlJztcbiAgaW1wb3J0IHR5cGUgeyBTb3VyY2UgfSBmcm9tICdAL3R5cGVzL1NvdXJjZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBhbHQ/OiBzdHJpbmc7XG4gICAgaGVpZ2h0Pzogc3RyaW5nO1xuICAgIGlzTGF6eT86IGJvb2xlYW47XG4gICAgb2JqZWN0Rml0PzogT2JqZWN0Rml0O1xuICAgIHNvdXJjZXM/OiBTb3VyY2VbXTtcbiAgICBzcmM/OiBzdHJpbmc7XG4gICAgd2lkdGg/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBhbHQ6ICcnLFxuICAgIGhlaWdodDogdW5kZWZpbmVkLFxuICAgIGlzTGF6eTogdHJ1ZSxcbiAgICBvYmplY3RGaXQ6IE9CSkVDVF9GSVQuQ09WRVIsXG4gICAgc291cmNlczogKCkgPT4gW10sXG4gICAgc3JjOiB1bmRlZmluZWQsXG4gICAgd2lkdGg6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgcGljdHVyZSA9IHJlZigpO1xuICBjb25zdCBpbWcgPSByZWYoKTtcblxuICBjb25zdCBpbWFnZURlZmF1bHQgPSAnaHR0cHM6Ly9jZG4tc3RhdGljLnRpbGFicy5pby9tYXJrZXRwbGFjZS9jb21tb24vaW1hZ2UtY29taW5nLXNvb24uc3ZnJztcblxuICBjb25zdCBvYmplY3RGaXRDbGFzc05hbWUgPSBjb21wdXRlZDxzdHJpbmc+KCgpID0+IHtcbiAgICBzd2l0Y2ggKHByb3BzLm9iamVjdEZpdCkge1xuICAgICAgY2FzZSBPQkpFQ1RfRklULkNPTlRBSU46XG4gICAgICAgIHJldHVybiBDU1MuT0JKRUNULkNPTlRBSU47XG4gICAgICBjYXNlIE9CSkVDVF9GSVQuQ09WRVI6XG4gICAgICAgIHJldHVybiBDU1MuT0JKRUNULkNPVkVSO1xuICAgICAgY2FzZSBPQkpFQ1RfRklULlNDQUxFX0RPV046XG4gICAgICAgIHJldHVybiBDU1MuT0JKRUNULlNDQUxFX0RPV047XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gT0JKRUNUX0ZJVC5DT1ZFUjtcbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0IHNldEltYWdlRnJvbURlZmF1bHQgPSAoKSA9PiB7XG4gICAgY29uc3QgY3VycmVudFNyYyA9IGltZy52YWx1ZT8uY3VycmVudFNyYztcbiAgICBjb25zdCBwaWN0dXJlU291cmNlID0gcGljdHVyZS52YWx1ZT8ucXVlcnlTZWxlY3Rvcihgc291cmNlW3NyY3NldD1cIiR7Y3VycmVudFNyY31cIl1gKTtcblxuICAgIGlmIChjdXJyZW50U3JjICYmIHBpY3R1cmVTb3VyY2UpIHtcbiAgICAgIHBpY3R1cmVTb3VyY2Uuc3Jjc2V0ID0gaW1hZ2VEZWZhdWx0O1xuICAgIH0gZWxzZSBpZiAoaW1nLnZhbHVlKSB7XG4gICAgICBpbWcudmFsdWUuc3JjID0gaW1hZ2VEZWZhdWx0O1xuICAgIH1cbiAgfTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxwaWN0dXJlXG4gICAgOmNsYXNzPVwiWyd0aWRlLWltYWdlJywgQ1NTLkRJU1BMQVkuQkxPQ0tdXCJcbiAgICByZWY9XCJwaWN0dXJlXCJcbiAgPlxuICAgIDxzb3VyY2VcbiAgICAgIDprZXk9XCJzb3VyY2Uuc3Jjc2V0XCJcbiAgICAgIDptZWRpYT1cImAobWluLXdpZHRoOiR7c291cmNlLm1lZGlhfXB4KWBcIlxuICAgICAgOnNyY3NldD1cInNvdXJjZS5zcmNzZXRcIlxuICAgICAgdi1mb3I9XCJzb3VyY2UgaW4gcHJvcHMuc291cmNlc1wiXG4gICAgLz5cblxuICAgIDxpbWdcbiAgICAgIDphbHQ9XCJhbHRcIlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbWFnZS1pbWcnLFxuICAgICAgICAhcHJvcHMud2lkdGggJiYgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgICFwcm9wcy5oZWlnaHQgJiYgQ1NTLkhFSUdIVC5GVUxMLFxuICAgICAgICBDU1MuT0JKRUNULkNFTlRFUixcbiAgICAgICAgb2JqZWN0Rml0Q2xhc3NOYW1lLFxuICAgICAgXVwiXG4gICAgICA6ZmV0Y2hwcmlvcml0eT1cImlzTGF6eSA/IHVuZGVmaW5lZCA6ICdoaWdoJ1wiXG4gICAgICA6aGVpZ2h0PVwicHJvcHMuaGVpZ2h0XCJcbiAgICAgIDpsb2FkaW5nPVwicHJvcHMuaXNMYXp5ID8gJ2xhenknIDogJ2VhZ2VyJ1wiXG4gICAgICByZWY9XCJpbWdcIlxuICAgICAgOnNyYz1cInNyYyA/PyBpbWFnZURlZmF1bHRcIlxuICAgICAgOndpZHRoPVwicHJvcHMud2lkdGhcIlxuICAgICAgQGVycm9yPVwic2V0SW1hZ2VGcm9tRGVmYXVsdFwiXG4gICAgLz5cbiAgPC9waWN0dXJlPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW1hZ2UtaW1nIHtcbiAgICBib3JkZXItcmFkaXVzOiBpbmhlcml0O1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVJbWFnZSBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUltYWdlLnZ1ZSc7XG4gIGltcG9ydCB7IE9CSkVDVF9GSVQgfSBmcm9tICdAL3R5cGVzL0ltYWdlJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgU291cmNlIH0gZnJvbSAnQC90eXBlcy9Tb3VyY2UnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgYWx0Pzogc3RyaW5nO1xuICAgIGlzTGF6eT86IGJvb2xlYW47XG4gICAgc291cmNlcz86IFNvdXJjZVtdO1xuICAgIHNyYz86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGFsdDogJycsXG4gICAgaXNMYXp5OiB0cnVlLFxuICAgIHNvdXJjZXM6ICgpID0+IFtdLFxuICAgIHNyYzogdW5kZWZpbmVkLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWltYWdlLWJhY2tncm91bmQnLCBDU1MuUE9TSVRJT04uUkVMQVRJVkUsIENTUy5PVkVSRkxPVy5YWS5ISURERU4sIENTUy5JU09MQVRJT04uSVNPTEFURV1cIj5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgIENTUy5QT1NJVElPTi5BQlNPTFVURSxcbiAgICAgICAgQ1NTLkhFSUdIVC5GVUxMLFxuICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMxLkNFTlRFUixcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxUaWRlSW1hZ2VcbiAgICAgICAgOmFsdD1cInByb3BzLmFsdFwiXG4gICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkhFSUdIVC5GVUxMXVwiXG4gICAgICAgIDppcy1sYXp5PVwicHJvcHMuaXNMYXp5XCJcbiAgICAgICAgOm9iamVjdC1maXQ9XCJPQkpFQ1RfRklULkNPVkVSXCJcbiAgICAgICAgOnNvdXJjZXM9XCJwcm9wcy5zb3VyY2VzXCJcbiAgICAgICAgOnNyYz1cInByb3BzLnNyY1wiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPHNsb3QgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICA6ZGVlcCgudGlkZS1pbWFnZSkge1xuICAgIHotaW5kZXg6IC0xO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgbGFiZWw/OiBzdHJpbmcgfCBudW1iZXI7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbmRpY2F0b3InLFxuICAgICAgcHJvcHMubGFiZWwgPyAnJyA6ICdkb3QnLFxuICAgICAgQ1NTLkRJU1BMQVkuSU5MSU5FX0JMT0NLLFxuICAgICAgQ1NTLkFMSUdOLlguQ0VOVEVSLFxuICAgICAgQ1NTLkJHLkdMT0JBTC5QUklNQVJZLkVSUk9SLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgIHByb3BzLmxhYmVsICYmIHByb3BzLmxhYmVsLnRvU3RyaW5nKCkubGVuZ3RoID4gMSA/IFtDU1MuUEFERElORy5YLkhBTEZdIDogW10sXG4gICAgICBwcm9wcy5sYWJlbFxuICAgICAgICA/IFtDU1MuUE9TSVRJT04uUkVMQVRJVkUsIENTUy5GT05ULlJPTEUuTEFCRUxfMywgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5JTlZFUlNFXVxuICAgICAgICA6IFtDU1MuQk9SREVSLkZVTEwuT05FXSxcbiAgICBdXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIlsndGlkZS1pbmRpY2F0b3ItbGFiZWwnXVwiXG4gICAgICB2LWlmPVwicHJvcHMubGFiZWxcIlxuICAgID5cbiAgICAgIHt7IHByb3BzLmxhYmVsIH19XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW5kaWNhdG9yOm5vdCguZG90KSB7XG4gICAgbWluLXdpZHRoOiAxcmVtO1xuICAgIG1pbi1oZWlnaHQ6IDFyZW07XG4gIH1cblxuICAudGlkZS1pbmRpY2F0b3IuZG90IHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtZ3JheS0xMDApO1xuICAgIHdpZHRoOiAxMHB4O1xuICAgIGhlaWdodDogMTBweDtcbiAgfVxuXG4gIC50aWRlLWluZGljYXRvci1sYWJlbCB7XG4gICAgLyogVXNlIGJvdHRvbS13ZWlnaHRpbmcgdG8gb2Zmc2V0IHRoZSBtYXRoZW1hdGljYWwgY2VudGVyIHRvIHRoZSBvcHRpY2FsIGNlbnRlci4gKi9cbiAgICBtYXJnaW4tdG9wOiAtMXB4O1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGlzRXJyb3I6IGJvb2xlYW47XG4gICAgbWVzc2FnZTogc3RyaW5nO1xuICB9O1xuICBkZWZpbmVQcm9wczxQcm9wcz4oKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIENTUy5GT05ULlJPTEUuTEFCRUxfMyxcbiAgICAgIGlzRXJyb3IgPyBbQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLkVSUk9SXSA6IFtDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFRdLFxuICAgIF1cIlxuICA+XG4gICAgPFRpZGVJY29uXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkZMRVguU0hSSU5LLk9GRl1cIlxuICAgICAgOmljb249XCJJQ09OLkVSUk9SXCJcbiAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICB2LWlmPVwiaXNFcnJvclwiXG4gICAgLz5cblxuICAgIDxkaXY+XG4gICAgICB7eyBtZXNzYWdlIH19XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cbiIsImltcG9ydCB7IGZvcm1hdE51bWJlciB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbmltcG9ydCB0eXBlIHsgVmFsaWRhdGlvbkxlbmd0aCwgVmFsaWRhdGlvblJlc3VsdCwgVmFsaWRhdG9yIH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uJztcbmltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSAndnVlJztcblxuZXhwb3J0IGNvbnN0IGVycm9yTWVzc2FnZURlZmF1bHQgPSAnUGxlYXNlIGVudGVyIGEgdmFsaWQgdmFsdWUnO1xuXG5leHBvcnQgY29uc3QgVkFMSURBVElPTl9SRVNVTFQgPSB7XG4gIE5PX0VSUk9SOiB7XG4gICAgbWVzc2FnZTogJycsXG4gICAgdmFsaWQ6IHRydWUsXG4gIH0sXG4gIFJFUVVJUkVEOiB7XG4gICAgbWVzc2FnZTogJ1BsZWFzZSBmaWxsIG91dCB0aGlzIGZpZWxkJyxcbiAgICB2YWxpZDogZmFsc2UsXG4gIH0sXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgY2hlY2tGb3JtYXQgPSAoZm9ybWF0OiBSZWdFeHAsIG1lc3NhZ2U/OiBzdHJpbmcpID0+IHtcbiAgcmV0dXJuICh2YWx1ZTogc3RyaW5nKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gICAgbGV0IHJlc3VsdDogVmFsaWRhdGlvblJlc3VsdCA9IFZBTElEQVRJT05fUkVTVUxULk5PX0VSUk9SO1xuXG4gICAgaWYgKCF2YWx1ZS50cmltKCkubWF0Y2goZm9ybWF0KSkge1xuICAgICAgcmVzdWx0ID0ge1xuICAgICAgICBtZXNzYWdlOiBtZXNzYWdlID8/IGVycm9yTWVzc2FnZURlZmF1bHQsXG4gICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRGaWVsZExlbmd0aElzVmFsaWQgPSAoeyBtYXhsZW5ndGgsIG1pbmxlbmd0aCwgcmVxdWlyZWQsIHZhbHVlIH06IFZhbGlkYXRpb25MZW5ndGgpID0+IHtcbiAgY29uc3QgaXNFbXB0eUFuZFVucmVxdWlyZWQgPSB2YWx1ZS5sZW5ndGggPT09IDAgJiYgIXJlcXVpcmVkO1xuICBjb25zdCBpc1Rvb0xvbmcgPSBtYXhsZW5ndGggJiYgdmFsdWUubGVuZ3RoID4gbWF4bGVuZ3RoO1xuICBjb25zdCBpc1Rvb1Nob3J0ID0gIWlzRW1wdHlBbmRVbnJlcXVpcmVkICYmIG1pbmxlbmd0aCAmJiB2YWx1ZS5sZW5ndGggPCBtaW5sZW5ndGg7XG4gIHJldHVybiAhaXNUb29TaG9ydCAmJiAhaXNUb29Mb25nO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZpZWxkVmFsaWRhdGlvblJlc3VsdCA9ICh7XG4gIGVycm9yRnJvbVByb3BzLFxuICBtYXhsZW5ndGgsXG4gIG1pbmxlbmd0aCxcbiAgcmVxdWlyZWQsXG4gIHZhbGlkYXRvcnMsXG4gIHZhbHVlLFxufToge1xuICBlcnJvckZyb21Qcm9wczogc3RyaW5nO1xuICBtYXhsZW5ndGg/OiBudW1iZXI7XG4gIG1pbmxlbmd0aD86IG51bWJlcjtcbiAgcmVxdWlyZWQ6IGJvb2xlYW47XG4gIHZhbGlkYXRvcnM/OiBWYWxpZGF0b3JbXTtcbiAgdmFsdWU6IFJlZjxzdHJpbmc+O1xufSk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICAvLyBlcnJvciBpbiBwcm9wcyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdmFsaWRhdGlvbiBlcnJvclxuICBpZiAoZXJyb3JGcm9tUHJvcHMgIT09ICcnKVxuICAgIHJldHVybiB7XG4gICAgICBtZXNzYWdlOiBlcnJvckZyb21Qcm9wcyxcbiAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICB9O1xuXG4gIC8vIGN1c3RvbSB2YWxpZGF0b3IgcHJvcCBlcnJvcnMgZnJvbSBoYXZlIHNlY29uZCBoaWdoZXN0IHByZWNlZGVuY2VcbiAgaWYgKHZhbGlkYXRvcnMpIHtcbiAgICBjb25zdCB2YWxpZGF0aW9uID0gdmFsaWRhdGVQcm9wZXJ0eSh2YWx1ZS52YWx1ZSwgdmFsaWRhdG9ycyk7XG5cbiAgICBpZiAoIXZhbGlkYXRpb24udmFsaWQpIHtcbiAgICAgIHJldHVybiB2YWxpZGF0aW9uO1xuICAgIH1cbiAgfVxuXG4gIC8vIGFsbCBvdGhlciBwcm9wLWJhc2VkIGVycm9ycyBjb21lIGxhc3RcbiAgaWYgKHJlcXVpcmVkICYmIHZhbHVlLnZhbHVlPy50cmltKCkgPT09ICcnKSB7XG4gICAgcmV0dXJuIFZBTElEQVRJT05fUkVTVUxULlJFUVVJUkVEO1xuICB9XG5cbiAgaWYgKG1heGxlbmd0aCB8fCBtaW5sZW5ndGgpIHtcbiAgICBjb25zdCBsZW5ndGhWYWxpZGF0aW9uID0gdmFsaWRhdGVMZW5ndGgoe1xuICAgICAgbWF4bGVuZ3RoLFxuICAgICAgbWlubGVuZ3RoLFxuICAgICAgcmVxdWlyZWQsXG4gICAgICB2YWx1ZTogdmFsdWUudmFsdWUsXG4gICAgfSk7XG5cbiAgICBpZiAoIWxlbmd0aFZhbGlkYXRpb24udmFsaWQpIHtcbiAgICAgIHJldHVybiBsZW5ndGhWYWxpZGF0aW9uO1xuICAgIH1cbiAgfVxuICByZXR1cm4gVkFMSURBVElPTl9SRVNVTFQuTk9fRVJST1I7XG59O1xuXG5leHBvcnQgY29uc3QgdmFsaWRhdGVMZW5ndGggPSAoeyBtYXhsZW5ndGgsIG1pbmxlbmd0aCwgcmVxdWlyZWQsIHZhbHVlIH06IFZhbGlkYXRpb25MZW5ndGgpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgY29uc3QgcmVzcG9uc2UgPSB7XG4gICAgbWVzc2FnZTogJycsXG4gICAgdmFsaWQ6IHRydWUsXG4gIH07XG5cbiAgcmVzcG9uc2UudmFsaWQgPSBnZXRGaWVsZExlbmd0aElzVmFsaWQoe1xuICAgIG1heGxlbmd0aCxcbiAgICBtaW5sZW5ndGgsXG4gICAgcmVxdWlyZWQsXG4gICAgdmFsdWUsXG4gIH0pO1xuXG4gIGlmIChyZXNwb25zZS52YWxpZCkgcmV0dXJuIHJlc3BvbnNlO1xuXG4gIHJlc3BvbnNlLm1lc3NhZ2UgPSBlcnJvck1lc3NhZ2VEZWZhdWx0O1xuXG4gIGlmIChtYXhsZW5ndGggJiYgbWlubGVuZ3RoKSB7XG4gICAgcmVzcG9uc2UubWVzc2FnZSA9IGBFbnRlciBhIHZhbHVlIGJldHdlZW4gJHtmb3JtYXROdW1iZXIobWlubGVuZ3RoKX0gYW5kICR7Zm9ybWF0TnVtYmVyKG1heGxlbmd0aCl9IGNoYXJhY3RlcnNgO1xuICB9IGVsc2UgaWYgKG1heGxlbmd0aCkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBgVXNlICR7Zm9ybWF0TnVtYmVyKG1heGxlbmd0aCl9IGNoYXJhY3RlcnMgb3IgZmV3ZXJgO1xuICB9IGVsc2UgaWYgKG1pbmxlbmd0aCkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBgRW50ZXIgYXQgbGVhc3QgJHtmb3JtYXROdW1iZXIobWlubGVuZ3RoKX0gY2hhcmFjdGVyc2A7XG4gIH1cblxuICByZXR1cm4gcmVzcG9uc2U7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVQcm9wZXJ0eSh2YWx1ZTogc3RyaW5nLCB2YWxpZGF0b3JzOiAoKHZhbHVlOiBzdHJpbmcpID0+IFZhbGlkYXRpb25SZXN1bHQpW10pOiBWYWxpZGF0aW9uUmVzdWx0IHtcbiAgZm9yIChjb25zdCB2YWxpZGF0b3Igb2YgdmFsaWRhdG9ycykge1xuICAgIGNvbnN0IHZhbGlkYXRpb24gPSB2YWxpZGF0b3IodmFsdWUpO1xuICAgIGlmICghdmFsaWRhdGlvbi52YWxpZCkge1xuICAgICAgcmV0dXJuIHZhbGlkYXRpb247XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBtZXNzYWdlOiAnJyxcbiAgICB2YWxpZDogdHJ1ZSxcbiAgfTtcbn1cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYsIHdhdGNoLCB3YXRjaEVmZmVjdCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgVGlkZUlucHV0U3VwcG9ydGluZ1RleHQgZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJbnB1dFN1cHBvcnRpbmdUZXh0LnZ1ZSc7XG4gIGltcG9ydCB7IHVzZUZvcm1Db250ZXh0IH0gZnJvbSAnQC9jb21wb3NhYmxlcy91c2VUaWRlRm9ybSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBmb3JtYXROdW1iZXIgfSBmcm9tICdAL3V0aWxpdGllcy9mb3JtYXQnO1xuICBpbXBvcnQgeyBWQUxJREFUSU9OX1JFU1VMVCB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24nO1xuXG4gIGltcG9ydCB0eXBlIHsgVmFsaWRhdGlvblJlc3VsdCB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgZXJyb3I/OiBzdHJpbmc7XG4gICAgaW5kZXRlcm1pbmF0ZT86IGJvb2xlYW47XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgbnVtYmVyPzogbnVtYmVyO1xuICAgIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlcnJvcjogJycsXG4gICAgaW5kZXRlcm1pbmF0ZTogZmFsc2UsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbmFtZTogdW5kZWZpbmVkLFxuICAgIG51bWJlcjogdW5kZWZpbmVkLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgfSk7XG5cbiAgdHlwZSBFbWl0cyA9IHtcbiAgICAoZXZlbnQ6ICd2YWxpZCcsIHZhbGlkOiBib29sZWFuKTogdm9pZDtcbiAgfTtcbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPEVtaXRzPigpO1xuXG4gIGNvbnN0IG1vZGVsVmFsdWUgPSBkZWZpbmVNb2RlbDxib29sZWFuPih7IHJlcXVpcmVkOiB0cnVlIH0pO1xuXG4gIGNvbnN0IGZvcm1Db250ZXh0ID0gdXNlRm9ybUNvbnRleHQoKTtcblxuICBjb25zdCBpc1ZhbGlkYXRpbmcgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBlcnJvclJlZiA9IHJlZjxWYWxpZGF0aW9uUmVzdWx0PihWQUxJREFUSU9OX1JFU1VMVC5OT19FUlJPUik7XG5cbiAgY29uc3QgZm9ybWF0dGVkTGFiZWwgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgPyBgJHtwcm9wcy5sYWJlbH0gKmAgOiBwcm9wcy5sYWJlbCkpO1xuICBjb25zdCBpc0NoZWNrZWQgPSBjb21wdXRlZCgoKSA9PiBtb2RlbFZhbHVlLnZhbHVlIHx8IHByb3BzLmluZGV0ZXJtaW5hdGUpO1xuICBjb25zdCBzaG93RXJyb3IgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKGhhc0Vycm9yRnJvbVByb3AudmFsdWUpIHJldHVybiB0cnVlO1xuICAgIGlmICghaXNWYWxpZGF0aW5nLnZhbHVlKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuICFlcnJvclJlZi52YWx1ZS52YWxpZDtcbiAgfSk7XG4gIGNvbnN0IGhhc0Vycm9yRnJvbVByb3AgPSBjb21wdXRlZCgoKSA9PiBwcm9wcy5lcnJvciAhPT0gJycpO1xuICBjb25zdCBzdXBwb3J0aW5nVGV4dE1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiBzaG93RXJyb3IudmFsdWUgJiYgZXJyb3JSZWYudmFsdWUubWVzc2FnZSk7XG5cbiAgY29uc3QgZ2V0Q2hlY2tib3hWYWxpZGF0aW9uUmVzdWx0ID0gKCk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICAgIGlmIChwcm9wcy5lcnJvciAhPT0gJycpXG4gICAgICByZXR1cm4ge1xuICAgICAgICBtZXNzYWdlOiBwcm9wcy5lcnJvcixcbiAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgfTtcbiAgICBpZiAoIXByb3BzLnJlcXVpcmVkIHx8IGlzQ2hlY2tlZC52YWx1ZSkgcmV0dXJuIFZBTElEQVRJT05fUkVTVUxULk5PX0VSUk9SO1xuICAgIHJldHVybiBWQUxJREFUSU9OX1JFU1VMVC5SRVFVSVJFRDtcbiAgfTtcblxuICB3YXRjaEVmZmVjdCgoKSA9PiB7XG4gICAgZXJyb3JSZWYudmFsdWUgPSBnZXRDaGVja2JveFZhbGlkYXRpb25SZXN1bHQoKTtcbiAgfSk7XG5cbiAgd2F0Y2goXG4gICAgbW9kZWxWYWx1ZSxcbiAgICAoKSA9PiB7XG4gICAgICBpZiAobW9kZWxWYWx1ZS52YWx1ZSkgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBmb3JtQ29udGV4dD8uZm9yY2VTaG93RXJyb3JzLnZhbHVlLFxuICAgIChuZXdWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlKSBpc1ZhbGlkYXRpbmcudmFsdWUgPSB0cnVlO1xuICAgIH0sXG4gICAgeyBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuXG4gIHdhdGNoKFxuICAgIGVycm9yUmVmLFxuICAgICgpID0+IHtcbiAgICAgIGVtaXQoJ3ZhbGlkJywgZXJyb3JSZWYudmFsdWUudmFsaWQpO1xuICAgIH0sXG4gICAgeyBkZWVwOiB0cnVlLCBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtaW5wdXQtY2hlY2tib3gnLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuR0FQLlFVQVJURVJdXCI+XG4gICAgPGxhYmVsXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgIENTUy5VU0VSX1NFTEVDVC5OT05FLFxuICAgICAgICBzaG93RXJyb3IgPyBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuRVJST1IgOiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgIGRpc2FibGVkID8gW0NTUy5PUEFDSVRZLkRJU0FCTEVELCBDU1MuQ1VSU09SLk5PVF9BTExPV0VEXSA6IFtDU1MuQ1VSU09SLlBPSU5URVJdLFxuICAgICAgXVwiXG4gICAgICA6Zm9yPVwiaW5wdXRJZFwiXG4gICAgPlxuICAgICAgPGlucHV0XG4gICAgICAgIDpjaGVja2VkPVwiaXNDaGVja2VkXCJcbiAgICAgICAgOmNsYXNzPVwiWyd0aWRlLXNjcmVlbi1yZWFkZXItb25seSddXCJcbiAgICAgICAgOmRpc2FibGVkPVwiZGlzYWJsZWRcIlxuICAgICAgICA6bmFtZT1cIm5hbWVcIlxuICAgICAgICByZWY9XCJpbnB1dFwiXG4gICAgICAgIDppZD1cImlucHV0SWRcIlxuICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICB2LW1vZGVsPVwibW9kZWxWYWx1ZVwiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1pbnB1dC1jaGVja2JveC1jdXN0b20nLFxuICAgICAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgICAgIENTUy5CT1JERVIuUkFESVVTLlFVQVJURVIsXG4gICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICBDU1MuRkxFWC5TSFJJTksuT0ZGLFxuICAgICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgICBpc0NoZWNrZWRcbiAgICAgICAgICAgID8gW3Nob3dFcnJvciA/IENTUy5CRy5HTE9CQUwuUFJJTUFSWS5FUlJPUiA6IFtDU1MuQkcuU0VDT05EQVJZLCBDU1MuQk9SREVSLkNPTE9SLkhJR0hdXVxuICAgICAgICAgICAgOiBbXG4gICAgICAgICAgICAgICAgc2hvd0Vycm9yXG4gICAgICAgICAgICAgICAgICA/IFtDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5FUlJPUiwgQ1NTLkJHLkdMT0JBTC5TVVJGQUNFLkVSUk9SXVxuICAgICAgICAgICAgICAgICAgOiBbQ1NTLkJPUkRFUi5DT0xPUi5ERUZBVUxULCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgXVwiXG4gICAgICA+XG4gICAgICAgIDxUaWRlSWNvblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5DT0xPUi5TRUNPTkRBUlldXCJcbiAgICAgICAgICA6aWNvbj1cImluZGV0ZXJtaW5hdGUgPyBJQ09OLlJFTU9WRSA6IElDT04uQ0hFQ0tcIlxuICAgICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgICAgdi1pZj1cImlzQ2hlY2tlZFwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkFYSVMxLkJFVFdFRU4sIENTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkdST1cuT04sIENTUy5GT05ULlJPTEUuQk9EWV8xXVwiXG4gICAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuPnt7IGZvcm1hdHRlZExhYmVsIH19PC9zcGFuPlxuXG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICAgIHYtaWY9XCJudW1iZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgKHt7IGZvcm1hdE51bWJlcihudW1iZXIpIH19KVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2xhYmVsPlxuXG4gICAgPFRpZGVJbnB1dFN1cHBvcnRpbmdUZXh0XG4gICAgICA6bWVzc2FnZT1cInN1cHBvcnRpbmdUZXh0TWVzc2FnZVwiXG4gICAgICBpcy1lcnJvclxuICAgICAgdi1pZj1cInN1cHBvcnRpbmdUZXh0TWVzc2FnZVwiXG4gICAgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1pbnB1dC1jaGVja2JveCB7XG4gICAgYWxpZ24tc2VsZjogc3RhcnQ7XG4gIH1cblxuICAudGlkZS1pbnB1dC1jaGVja2JveC1jdXN0b20ge1xuICAgIHdpZHRoOiAyNHB4O1xuICAgIGhlaWdodDogMjRweDtcbiAgfVxuXG4gIGxhYmVsOmhhcyhpbnB1dDpmb2N1cy12aXNpYmxlKSB7XG4gICAgb3V0bGluZTogYXV0bztcbiAgICBvdXRsaW5lLW9mZnNldDogMnB4O1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgVGlkZUlucHV0Q2hlY2tib3gudnVlYCBpbXBvcnRlZCBmcm9tICd0aWRlLWRlc2lnbi1zeXN0ZW0nIG5wbSBwYWNrYWdlIGluc3RlYWQuXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZm9ybWF0TnVtYmVyIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGNoZWNrZWQ/OiBib29sZWFuO1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBpbmRldGVybWluYXRlPzogYm9vbGVhbjtcbiAgICBpbnB1dElkPzogc3RyaW5nO1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgbnVtYmVyPzogbnVtYmVyO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgY2hlY2tlZDogZmFsc2UsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGluZGV0ZXJtaW5hdGU6IGZhbHNlLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICBudW1iZXI6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgaXNDaGVja2VkID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMuY2hlY2tlZCB8fCBwcm9wcy5pbmRldGVybWluYXRlKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC1jaGVja2JveCcsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgZGlzYWJsZWQgPyBbJ2Rpc2FibGVkJywgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRl0gOiBDU1MuQ1VSU09SLlBPSU5URVIsXG4gICAgXVwiXG4gID5cbiAgICA8aW5wdXRcbiAgICAgIDpjaGVja2VkPVwiaXNDaGVja2VkXCJcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5OT05FXVwiXG4gICAgICA6ZGlzYWJsZWQ9XCJwcm9wcy5kaXNhYmxlZFwiXG4gICAgICA6bmFtZT1cInByb3BzLm5hbWVcIlxuICAgICAgcmVmPVwiaW5wdXRcIlxuICAgICAgQGNsaWNrLnByZXZlbnRcbiAgICAgIDppZD1cInByb3BzLmlucHV0SWRcIlxuICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAvPlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC1jaGVja2JveC1jdXN0b20nLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5GTEVYLlNIUklOSy5PRkYsXG4gICAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICAgIGlzQ2hlY2tlZCA/IFtDU1MuQk9SREVSLkNPTE9SLkhJR0gsIENTUy5CRy5TRUNPTkRBUlldIDogW0NTUy5CT1JERVIuQ09MT1IuREVGQVVMVCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF0sXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLlFVQVJURVIsXG4gICAgICAgIGlzQ2hlY2tlZCAmJiAnY2hlY2tlZCcsXG4gICAgICAgIGRpc2FibGVkID8gQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCA6IENTUy5DVVJTT1IuUE9JTlRFUixcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU0VDT05EQVJZXVwiXG4gICAgICAgIDppY29uPVwicHJvcHMuaW5kZXRlcm1pbmF0ZSA/IElDT04uUkVNT1ZFIDogSUNPTi5DSEVDS1wiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIHYtaWY9XCJpc0NoZWNrZWRcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzEuQkVUV0VFTixcbiAgICAgICAgQ1NTLkZMRVguR1JPVy5PTixcbiAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgIGRpc2FibGVkID8gQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCA6IENTUy5DVVJTT1IuUE9JTlRFUixcbiAgICAgIF1cIlxuICAgICAgOmZvcj1cInByb3BzLmlucHV0SWRcIlxuICAgICAgQGNsaWNrLnByZXZlbnRcbiAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgPlxuICAgICAgPHNwYW4+e3sgbGFiZWwgfX08L3NwYW4+XG4gICAgICA8c3BhblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgIHYtaWY9XCJwcm9wcy5udW1iZXJcIlxuICAgICAgPlxuICAgICAgICAoe3sgZm9ybWF0TnVtYmVyKHByb3BzLm51bWJlcikgfX0pXG4gICAgICA8L3NwYW4+XG4gICAgPC9sYWJlbD5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1pbnB1dC1jaGVja2JveC5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogdmFyKC0tdGlkZS1kaXNhYmxlZCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1jaGVja2JveC1jdXN0b20ge1xuICAgIHdpZHRoOiAyNHB4O1xuICAgIGhlaWdodDogMjRweDtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IGZvcm1hdE51bWJlciB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBudW1iZXI/OiBudW1iZXI7XG4gICAgdmFsdWU6IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBudW1iZXI6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgbW9kZWxWYWx1ZSA9IGRlZmluZU1vZGVsPHN0cmluZz4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICBjb25zdCBpc0NoZWNrZWQgPSBjb21wdXRlZCgoKSA9PiBtb2RlbFZhbHVlLnZhbHVlID09PSBwcm9wcy52YWx1ZSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8bGFiZWxcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC1yYWRpbycsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgIENTUy5VU0VSX1NFTEVDVC5OT05FLFxuICAgICAgcHJvcHMuZGlzYWJsZWQgPyBbQ1NTLk9QQUNJVFkuRElTQUJMRUQsIENTUy5DVVJTT1IuTk9UX0FMTE9XRURdIDogW0NTUy5DVVJTT1IuUE9JTlRFUl0sXG4gICAgXVwiXG4gICAgOmZvcj1cInByb3BzLmlucHV0SWRcIlxuICA+XG4gICAgPGlucHV0XG4gICAgICA6Y2xhc3M9XCJbJ3RpZGUtc2NyZWVuLXJlYWRlci1vbmx5J11cIlxuICAgICAgOmRpc2FibGVkPVwiZGlzYWJsZWRcIlxuICAgICAgOm5hbWU9XCJuYW1lXCJcbiAgICAgIDp2YWx1ZT1cInZhbHVlXCJcbiAgICAgIDppZD1cInByb3BzLmlucHV0SWRcIlxuICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgIHYtbW9kZWw9XCJtb2RlbFZhbHVlXCJcbiAgICAvPlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC1yYWRpby1jdXN0b20nLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICAgIGlzQ2hlY2tlZCA/IFtDU1MuQk9SREVSLkNPTE9SLkhJR0hdIDogW0NTUy5CT1JERVIuQ09MT1IuREVGQVVMVF0sXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgIENTUy5DVVJTT1IuUE9JTlRFUixcbiAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9OLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtaW5wdXQtcmFkaW8tY2hlY2snLCBDU1MuQk9SREVSLlJBRElVUy5GVUxMLCBpc0NoZWNrZWQgJiYgQ1NTLkJHLlNFQ09OREFSWV1cIiAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguR1JPVy5PTiwgQ1NTLkFYSVMxLkJFVFdFRU4sIENTUy5GT05ULlJPTEUuQk9EWV8xXVwiPlxuICAgICAgPHNwYW4+e3sgbGFiZWwgfX08L3NwYW4+XG4gICAgICA8c3BhblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgIHYtaWY9XCJwcm9wcy5udW1iZXJcIlxuICAgICAgPlxuICAgICAgICAoe3sgZm9ybWF0TnVtYmVyKHByb3BzLm51bWJlcikgfX0pXG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvbGFiZWw+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1pbnB1dC1yYWRpby1jdXN0b20ge1xuICAgIHdpZHRoOiAyNHB4O1xuICAgIGhlaWdodDogMjRweDtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXJhZGlvLWNoZWNrIHtcbiAgICB3aWR0aDogMTZweDtcbiAgICBoZWlnaHQ6IDE2cHg7XG4gIH1cblxuICBsYWJlbDpoYXMoaW5wdXQ6Zm9jdXMtdmlzaWJsZSkge1xuICAgIG91dGxpbmU6IGF1dG87XG4gICAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYFRpZGVJbnB1dFJhZGlvLnZ1ZWAgaW1wb3J0ZWQgZnJvbSAndGlkZS1kZXNpZ24tc3lzdGVtJyBucG0gcGFja2FnZSBpbnN0ZWFkLlxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBmb3JtYXROdW1iZXIgfSBmcm9tICdAL3V0aWxpdGllcy9mb3JtYXQnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgY2hlY2tlZD86IGJvb2xlYW47XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICBudW1iZXI/OiBudW1iZXI7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBjaGVja2VkOiBmYWxzZSxcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbmFtZTogdW5kZWZpbmVkLFxuICAgIG51bWJlcjogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBjaGVja2VkID0gcmVmKHByb3BzLmNoZWNrZWQpO1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLmNoZWNrZWQsXG4gICAgKG5ld1ZhbHVlLCBvbGRWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlICE9PSBvbGRWYWx1ZSB8fCBuZXdWYWx1ZSAhPT0gY2hlY2tlZC52YWx1ZSkge1xuICAgICAgICBjaGVja2VkLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB9XG4gICAgfVxuICApO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWlucHV0LXJhZGlvJyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgIHByb3BzLmRpc2FibGVkICYmICdkaXNhYmxlZCcsXG4gICAgXVwiXG4gID5cbiAgICA8aW5wdXRcbiAgICAgIDpjaGVja2VkPVwiY2hlY2tlZFwiXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuTk9ORV1cIlxuICAgICAgOmlkPVwicHJvcHMuaW5wdXRJZFwiXG4gICAgICBuYW1lPVwiXCJcbiAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICB2YWx1ZT1cIlwiXG4gICAgLz5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtcmFkaW8tY3VzdG9tJyxcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgICBjaGVja2VkID8gQ1NTLkJPUkRFUi5DT0xPUi5ISUdIIDogQ1NTLkJPUkRFUi5DT0xPUi5ERUZBVUxULFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBDU1MuQ1VSU09SLlBPSU5URVIsXG4gICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PTixcbiAgICAgICAgY2hlY2tlZCAmJiAnY2hlY2tlZCcsXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1pbnB1dC1yYWRpby1jaGVjaycsIENTUy5CT1JERVIuUkFESVVTLkZVTEwsIHByb3BzLmNoZWNrZWQgJiYgQ1NTLkJHLlNFQ09OREFSWV1cIiAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGxhYmVsXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5GTEVYLkdST1cuT04sXG4gICAgICAgIENTUy5BWElTMS5CRVRXRUVOLFxuICAgICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMSxcbiAgICAgICAgQ1NTLkNVUlNPUi5QT0lOVEVSLFxuICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT04sXG4gICAgICBdXCJcbiAgICAgIDpmb3I9XCJwcm9wcy5pbnB1dElkXCJcbiAgICA+XG4gICAgICA8c3Bhbj57eyBsYWJlbCB9fTwvc3Bhbj5cbiAgICAgIDxzcGFuXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgdi1pZj1cInByb3BzLm51bWJlclwiXG4gICAgICA+XG4gICAgICAgICh7eyBmb3JtYXROdW1iZXIocHJvcHMubnVtYmVyKSB9fSlcbiAgICAgIDwvc3Bhbj5cbiAgICA8L2xhYmVsPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWlucHV0LXJhZGlvLmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiB2YXIoLS10aWRlLWRpc2FibGVkKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXJhZGlvLWN1c3RvbSB7XG4gICAgd2lkdGg6IDI0cHg7XG4gICAgaGVpZ2h0OiAyNHB4O1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtcmFkaW8tY2hlY2sge1xuICAgIHdpZHRoOiAxNnB4O1xuICAgIGhlaWdodDogMTZweDtcbiAgfVxuPC9zdHlsZT5cbiIsImltcG9ydCB7IGZvcm1hdE51bWJlciwgZm9ybWF0UGhvbmUsIGZvcm1hdFByaWNlIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcblxuZXhwb3J0IHR5cGUgRm9ybWF0dGVkID0ge1xuICBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bWJlcjtcbn07XG5cbmV4cG9ydCBjb25zdCBGT1JNQVQgPSB7XG4gIE5VTUJFUjogZm9ybWF0TnVtYmVyLFxuICBQSE9ORTogZm9ybWF0UGhvbmUsXG4gIFBSSUNFOiBmb3JtYXRQcmljZSxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBGT1JNQVRfUkVHRVggPSB7XG4gIGFscGhhOiAvXlthLXpBLVpdKyQvZyxcbiAgYWxwaGFOdW1iZXJPckVtcHR5OiAvXiR8XlthLXowLTldKyQvaSxcbiAgYWxwaGFTcGFjZTogL15bYS16QS1aIF0rJC9nLFxuICBlbWFpbDpcbiAgICAvXigoW148PigpW1xcXVxcXFwuLDs6XFxzQFwiXSsoXFwuW148PigpW1xcXVxcXFwuLDs6XFxzQFwiXSspKil8KFwiLitcIikpQCgoXFxbWzAtOV17MSwzfVxcLlswLTldezEsM31cXC5bMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcXSl8KChbYS16QS1aXFwtMC05XStcXC4pK1thLXpBLVpdezIsfSkpJC8sXG4gIG51bWJlckZvcm1hdHRlZDogL14kfCg/PS4pXlxcJD8oKFsxLTldWzAtOV17MCwyfSgsWzAtOV17M30pKil8MCk/KFxcLlswLTldezEsMn0pPyQvLFxuICBwaG9uZTogL14oPzpcXGR7M30tXFxkezN9LVxcZHs0fXxcXGR7MX0tXFxkezN9LVxcZHszfS1cXGR7NH0pPyQvLFxuICBwcmljZTogLyg/PS4pXlxcJD8oKFsxLTldWzAtOV17MCwyfSgsWzAtOV17M30pKil8MCk/KFxcLlswLTldezEsMn0pPyQvLFxuICB6aXA6IC9eXFxkezV9JC8sXG59O1xuIiwiaW1wb3J0IHsgRk9STUFUX1JFR0VYIH0gZnJvbSAnQC90eXBlcy9Gb3JtYXR0ZWQnO1xuaW1wb3J0IHsgY2hlY2tGb3JtYXQgfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uJztcblxuZXhwb3J0IGNvbnN0IFZBTElEQVRPUiA9IHtcbiAgQUxQSEFfTlVNQkVSX0VNUFRZOiBjaGVja0Zvcm1hdChGT1JNQVRfUkVHRVguYWxwaGFOdW1iZXJPckVtcHR5KSxcbiAgQUxQSEFfU1BBQ0U6IGNoZWNrRm9ybWF0KEZPUk1BVF9SRUdFWC5hbHBoYVNwYWNlKSxcbiAgRU1BSUw6IGNoZWNrRm9ybWF0KEZPUk1BVF9SRUdFWC5lbWFpbCwgJ0VudGVyIGEgdmFsaWQgZW1haWwgYWRkcmVzcyAoZS5nLiBuYW1lQGV4YW1wbGUuY29tKScpLFxuICBOVU1CRVI6IGNoZWNrRm9ybWF0KEZPUk1BVF9SRUdFWC5udW1iZXJGb3JtYXR0ZWQsICdFbnRlciBhIHZhbGlkIG51bWJlcicpLFxuICBQSE9ORTogY2hlY2tGb3JtYXQoRk9STUFUX1JFR0VYLnBob25lLCAnRW50ZXIgYSB2YWxpZCBwaG9uZSBudW1iZXInKSxcbiAgWklQOiBjaGVja0Zvcm1hdChGT1JNQVRfUkVHRVguemlwLCAnRW50ZXIgYSB2YWxpZCBaaXAgY29kZScpLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgVmFsaWRhdGlvbkVycm9yID0gc3RyaW5nIHwgYm9vbGVhbjtcbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25SZXN1bHQgPSB7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgdmFsaWQ6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uTGVuZ3RoID0ge1xuICBtYXhsZW5ndGg/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+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIGdlbmVyaWMgbWVudSBpdGVtIGludGVuZGVkIHRvIGJlIHVzZWQgaW4gbmF2aWdhdGlvbiBtZW51cyBvciBkcm9wZG93bnMuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVtZW51aXRlbS0tZG9jcykgZm9yIFRpZGVNZW51SXRlbVxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBFTEVNRU5UIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgVEFSR0VUIH0gZnJvbSAnQC90eXBlcy9UYXJnZXQnO1xuXG4gIGltcG9ydCB0eXBlIHsgRWxlbWVudCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogVGhlIGVsZW1lbnQgdG8gcmVuZGVyIHRoZSByb290IGVsZW1lbnQgYXMuICovXG4gICAgZWxlbWVudD86IEVsZW1lbnQ7XG5cbiAgICAvKiogVGhlIGhyZWYgYXR0cmlidXRlIHRvIGFwcGx5IHdoZW4gdGhlIGVsZW1lbnQgaXMgYSBsaW5rLiAqL1xuICAgIGhyZWY/OiBzdHJpbmc7XG5cbiAgICAvKiogV2hldGhlciB0byBvcGVuIGxpbmsgaW4gYSBuZXcgdGFiLiAqL1xuICAgIGlzTmV3VGFiPzogYm9vbGVhbjtcblxuICAgIC8qKiBJY29uIHRvIHNob3cgYWZ0ZXIgdGhlIGxhYmVsLiAqL1xuICAgIGljb25UcmFpbGluZz86IEljb247XG5cbiAgICAvKiogVGhlIGxhYmVsIHRvIGJlIGRpc3BsYXllZC4gKi9cbiAgICBsYWJlbDogc3RyaW5nO1xuICB9O1xuXG4gIHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGVsZW1lbnQ6IEVMRU1FTlQuTElOSyxcbiAgICBocmVmOiB1bmRlZmluZWQsXG4gICAgaWNvblRyYWlsaW5nOiB1bmRlZmluZWQsXG4gICAgaXNOZXdUYWI6IGZhbHNlLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxjb21wb25lbnRcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1tZW51LWl0ZW0nLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLlpFUk8sXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkVMTElQU0lTLFxuICAgICAgQ1NTLkZPTlQuUk9MRS5MQUJFTF8yLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgQ1NTLlBBRERJTkcuWC5PTkUsXG4gICAgICBDU1MuUEFERElORy5ZLkhBTEYsXG4gICAgICBDU1MuVU5ERVJMSU5FLlJFU1QuT0ZGLFxuICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgXVwiXG4gICAgOmhyZWY9XCJocmVmXCJcbiAgICA6dGFyZ2V0PVwiaXNOZXdUYWIgPyBUQVJHRVQuQkxBTksgOiB1bmRlZmluZWRcIlxuICAgIDppcz1cImVsZW1lbnRcIlxuICA+XG4gICAgPHNwYW4+e3sgbGFiZWwgfX08L3NwYW4+XG5cbiAgICA8VGlkZUljb25cbiAgICAgIDpjbGFzcz1cIltDU1MuTUFSR0lOLkxFRlQuQVVUT11cIlxuICAgICAgOmljb249XCJpY29uVHJhaWxpbmdcIlxuICAgICAgOnNpemU9XCJTSVpFLkxBUkdFXCJcbiAgICAgIHYtaWY9XCJpY29uVHJhaWxpbmdcIlxuICAgIC8+XG4gIDwvY29tcG9uZW50PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtbWVudS1pdGVtIHtcbiAgICBoZWlnaHQ6IDQwcHg7XG4gIH1cblxuICAudGlkZS1tZW51LWl0ZW06aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS12YXJpYW50KTtcbiAgfVxuPC9zdHlsZT5cbiIsIi8qIGVzbGludC1kaXNhYmxlIHZ1ZS9zb3J0LWtleXMgKi9cblxuZXhwb3J0IGNvbnN0IEJSRUFLUE9JTlQgPSB7XG4gIFNNOiAnc20nLFxuICBNRDogJ21kJyxcbiAgTEc6ICdsZycsXG4gIFhMOiAneGwnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IE1FRElBID0ge1xuICBTTTogNzY4LFxuICBNRDogOTkyLFxuICBMRzogMTIzMixcbiAgWEw6IDE5MjAsXG59O1xuXG5leHBvcnQgdHlwZSBCcmVha3BvaW50ID0gKHR5cGVvZiBCUkVBS1BPSU5UKVtrZXlvZiB0eXBlb2YgQlJFQUtQT0lOVF07XG5leHBvcnQgdHlwZSBNZWRpYSA9ICh0eXBlb2YgTUVESUEpW2tleW9mIHR5cGVvZiBNRURJQV07XG4iLCJpbXBvcnQgeyBuZXh0VGljayB9IGZyb20gJ3Z1ZSc7XG5cbi8qKlxuICogRGlyZWN0bHkgbW9kaWZpZXMgdGhlIGA8Ym9keT5gIGVsZW1lbnQgdG8gYXBwbHkgb3IgcmVtb3ZlIHNjcm9sbCBsb2NrLlxuICogV2hlbiBgZmFsc2VgIGlzIHByb3ZpZGVkLCBpdCBvbmx5IHVubG9ja3Mgc2Nyb2xsIGlmIHRoZXJlIGFyZSBubyBvcGVuXG4gKiBIVE1MIGRpYWxvZyBlbGVtZW50cy5cbiAqL1xuZXhwb3J0IGNvbnN0IHNldFNjcm9sbExvY2sgPSBhc3luYyAoaXNMb2NrZWQ6IGJvb2xlYW4pID0+IHtcbiAgLy8gQ2Fubm90IGJlIGFwcGxpZWQgdG8gYm9keSB0YWcgaW4gbWFya2V0cGxhY2UgcmVwbyBkdWUgdG8gZGF0YS1jc3Mtc2NvcGVcbiAgLy8gY29uc3QgQk9EWV9MT0NLX0NMQVNTID0gJ2JvZHktc2Nyb2xsLWxvY2snO1xuXG4gIGNvbnN0IGJvZHkgPSBkb2N1bWVudC5ib2R5O1xuXG4gIGlmIChpc0xvY2tlZCkge1xuICAgIGlmICghYm9keS5kYXRhc2V0LnNjcm9sbExvY2tZKSB7XG4gICAgICBjb25zdCBzY3JvbGxZID0gd2luZG93LnNjcm9sbFk7XG5cbiAgICAgIGJvZHkuZGF0YXNldC5zY3JvbGxMb2NrWSA9IHNjcm9sbFkudG9TdHJpbmcoKTtcbiAgICAgIGJvZHkuc3R5bGUuc2V0UHJvcGVydHkoJy0tc2F2ZWQtc2Nyb2xsLXknLCBgJHtzY3JvbGxZfXB4YCk7XG4gICAgICBib2R5LnN0eWxlLnNldFByb3BlcnR5KCdpbnNldCcsICcwJyk7XG4gICAgICBib2R5LnN0eWxlLnNldFByb3BlcnR5KCdtYXJnaW4tdG9wJywgYGNhbGMoMHB4IC0gdmFyKC0tc2F2ZWQtc2Nyb2xsLXksIDBweCkpYCk7XG4gICAgICBib2R5LnN0eWxlLnNldFByb3BlcnR5KCdvdmVyZmxvdy15JywgJ3Njcm9sbCcpO1xuICAgICAgYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgncG9zaXRpb24nLCAnZml4ZWQnKTtcblxuICAgICAgLy8gQ2Fubm90IGJlIGFwcGxpZWQgdG8gYm9keSB0YWcgaW4gbWFya2V0cGxhY2UgcmVwbyBkdWUgdG8gZGF0YS1jc3Mtc2NvcGVcbiAgICAgIC8vIGJvZHkuY2xhc3NMaXN0LmFkZChCT0RZX0xPQ0tfQ0xBU1MpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBhd2FpdCBuZXh0VGljaygpO1xuICAgIGlmICghZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZGlhbG9nW29wZW5dJykpIHtcbiAgICAgIGNvbnN0IHNhdmVkU2Nyb2xsWSA9IHBhcnNlSW50KGJvZHkuZGF0YXNldC5zY3JvbGxMb2NrWSB8fCAnMCcpO1xuXG4gICAgICAvLyBDYW5ub3QgYmUgYXBwbGllZCB0byBib2R5IHRhZyBpbiBtYXJrZXRwbGFjZSByZXBvIGR1ZSB0byBkYXRhLWNzcy1zY29wZVxuICAgICAgLy8gYm9keS5jbGFzc0xpc3QucmVtb3ZlKEJPRFlfTE9DS19DTEFTUyk7XG5cbiAgICAgIGJvZHkuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ2luc2V0Jyk7XG4gICAgICBib2R5LnN0eWxlLnJlbW92ZVByb3BlcnR5KCdtYXJnaW5Ub3AnKTtcbiAgICAgIGJvZHkuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ292ZXJmbG93WScpO1xuICAgICAgYm9keS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgncG9zaXRpb24nKTtcbiAgICAgIGJvZHkuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tc2F2ZWQtc2Nyb2xsLXknKTtcblxuICAgICAgd2luZG93LnNjcm9sbFRvKHtcbiAgICAgICAgYmVoYXZpb3I6ICdhdXRvJyxcbiAgICAgICAgdG9wOiBzYXZlZFNjcm9sbFksXG4gICAgICB9KTtcblxuICAgICAgZGVsZXRlIGJvZHkuZGF0YXNldC5zY3JvbGxMb2NrWTtcbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBUT1BfTEFZRVJfSUQgPSAndGlkZS10b3AtbGF5ZXInO1xuXG5leHBvcnQgY29uc3QgaW5pdEZhdXhUb3BMYXllciA9ICgpID0+IHtcbiAgbGV0IHRvcExheWVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoVE9QX0xBWUVSX0lEKTtcbiAgaWYgKCF0b3BMYXllcikge1xuICAgIHRvcExheWVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgdG9wTGF5ZXIuaWQgPSBUT1BfTEFZRVJfSUQ7XG4gICAgdG9wTGF5ZXIuc2V0QXR0cmlidXRlKCdkYXRhLWNzcy1zY29wZScsICcnKTtcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRvcExheWVyKTtcbiAgfVxuICB0b3BMYXllci5zdHlsZS5pc29sYXRpb24gPSAnaXNvbGF0ZSc7XG59O1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgbmV4dFRpY2ssIG9uQmVmb3JlTW91bnQsIG9uTW91bnRlZCwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVCdXR0b25JY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQnV0dG9uSWNvbi52dWUnO1xuICBpbXBvcnQgeyBCUkVBS1BPSU5UIH0gZnJvbSAnQC90eXBlcy9CcmVha3BvaW50JztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFBSSU9SSVRZIH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgVE9QX0xBWUVSX0lELCBpbml0RmF1eFRvcExheWVyLCBzZXRTY3JvbGxMb2NrIH0gZnJvbSAnQC91dGlsaXRpZXMvdmlld3BvcnQnO1xuXG4gIGltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSAndnVlJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGlzQmFja0J1dHRvbj86IGJvb2xlYW47XG4gICAgaXNEaXNtaXNzaWJsZT86IGJvb2xlYW47XG4gICAgaXNPcGVuOiBib29sZWFuO1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIHdpZHRoPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgaXNCYWNrQnV0dG9uOiBmYWxzZSxcbiAgICBpc0Rpc21pc3NpYmxlOiB0cnVlLFxuICAgIHRpdGxlOiB1bmRlZmluZWQsXG4gICAgd2lkdGg6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgdHlwZSBFbWl0cyA9IHtcbiAgICAoZTogJ2Nsb3NlJyk6IHZvaWQ7XG4gICAgKGU6ICdiYWNrJyk6IHZvaWQ7XG4gIH07XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPEVtaXRzPigpO1xuXG4gIGNvbnN0IG1vZGFsQ29udGVudDogUmVmPEhUTUxEaXZFbGVtZW50IHwgdW5kZWZpbmVkPiA9IHJlZigpO1xuICBjb25zdCBtb2RhbERpYWxvZzogUmVmPEhUTUxEaWFsb2dFbGVtZW50IHwgdW5kZWZpbmVkPiA9IHJlZigpO1xuXG4gIGNvbnN0IHRyaWdnZXJOYXRpdmVEaWFsb2dPcGVuID0gKCkgPT4ge1xuICAgIG1vZGFsRGlhbG9nLnZhbHVlPy5zaG93TW9kYWwoKTtcbiAgfTtcblxuICBjb25zdCB0cmlnZ2VyTmF0aXZlRGlhbG9nQ2xvc2UgPSAoKSA9PiB7XG4gICAgbW9kYWxEaWFsb2cudmFsdWU/LmNsb3NlKCk7XG4gIH07XG5cbiAgY29uc3Qgc2Nyb2xsQ29udGVudFRvVG9wID0gKCkgPT4ge1xuICAgIG5leHRUaWNrKCgpID0+IHtcbiAgICAgIGlmICghbW9kYWxDb250ZW50LnZhbHVlKSByZXR1cm47XG4gICAgICBtb2RhbENvbnRlbnQudmFsdWUuc2Nyb2xsVG9wID0gMDtcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVCYWNrZHJvcENsaWNrID0gKCkgPT4ge1xuICAgIGlmIChwcm9wcy5pc0Rpc21pc3NpYmxlKSBlbWl0KCdjbG9zZScpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUVzY2FwZUtleWRvd24gPSAoZTogRXZlbnQpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKHByb3BzLmlzRGlzbWlzc2libGUpIGVtaXQoJ2Nsb3NlJyk7XG4gIH07XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMuaXNPcGVuLFxuICAgIChuZXdWYWx1ZSkgPT4ge1xuICAgICAgaWYgKCFtb2RhbERpYWxvZy52YWx1ZSkgcmV0dXJuO1xuICAgICAgaWYgKG5ld1ZhbHVlKSB7XG4gICAgICAgIHRyaWdnZXJOYXRpdmVEaWFsb2dPcGVuKCk7XG4gICAgICAgIHNjcm9sbENvbnRlbnRUb1RvcCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ0Nsb3NlKCk7XG4gICAgICB9XG4gICAgICBzZXRTY3JvbGxMb2NrKG5ld1ZhbHVlKTtcbiAgICB9XG4gICk7XG5cbiAgb25CZWZvcmVNb3VudCgoKSA9PiB7XG4gICAgaW5pdEZhdXhUb3BMYXllcigpO1xuICB9KTtcblxuICBvbk1vdW50ZWQoKCkgPT4ge1xuICAgIGlmIChwcm9wcy5pc09wZW4pIHtcbiAgICAgIHRyaWdnZXJOYXRpdmVEaWFsb2dPcGVuKCk7XG4gICAgfVxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxUZWxlcG9ydCA6dG89XCJgIyR7VE9QX0xBWUVSX0lEfWBcIj5cbiAgICA8ZGlhbG9nXG4gICAgICA6Y2xhc3M9XCJbJ3RpZGUtbW9kYWwnLCBDU1MuQkcuSU5JVElBTCwgQ1NTLkhFSUdIVC5GVUxMLCBDU1MuV0lEVEguRlVMTCwgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTl1cIlxuICAgICAgcmVmPVwibW9kYWxEaWFsb2dcIlxuICAgICAgOnN0eWxlPVwieyAnLS1tb2RhbC13aWR0aCc6IHByb3BzLndpZHRoIH1cIlxuICAgICAgQGNsaWNrLnNlbGY9XCJoYW5kbGVCYWNrZHJvcENsaWNrXCJcbiAgICAgIEBjbG9zZS5wcmV2ZW50XG4gICAgICBAa2V5ZG93bi5lc2NhcGU9XCJoYW5kbGVFc2NhcGVLZXlkb3duXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1tb2RhbC1ib2R5JyxcbiAgICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICAgIENTUy5CT1JERVIuUkFESVVTLk9ORSxcbiAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgICAgICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLkJPVFRPTSxcbiAgICAgICAgICBDU1MuU0hBRE9XLlRPUCxcbiAgICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgICBDU1MuV0lEVEguTUFYX0ZVTEwsXG4gICAgICAgICAgQ1NTLndpdGhCcmVha3BvaW50KFtDU1MuU0hBRE9XLkJPVFRPTV0sIEJSRUFLUE9JTlQuU00pLFxuICAgICAgICBdXCJcbiAgICAgID5cbiAgICAgICAgPGhlYWRlclxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLW1vZGFsLWhlYWRlcicsXG4gICAgICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICAgICAgQ1NTLkJPUkRFUi5CT1RUT00uT05FLFxuICAgICAgICAgICAgQ1NTLkJPUkRFUi5DT0xPUi5MT1csXG4gICAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICAgICAgQ1NTLklTT0xBVElPTi5JU09MQVRFLFxuICAgICAgICAgICAgQ1NTLlBBRERJTkcuWS5PTkUsXG4gICAgICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgICAgICBDU1MuWl9JTkRFWC5PTkUsXG4gICAgICAgICAgXVwiXG4gICAgICAgID5cbiAgICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX0xFRlRcIlxuICAgICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgICAgICBAY2xpY2s9XCJlbWl0KCdiYWNrJylcIlxuICAgICAgICAgICAgdGl0bGU9XCJCYWNrXCJcbiAgICAgICAgICAgIHYtaWY9XCJpc0JhY2tCdXR0b25cIlxuICAgICAgICAgIC8+XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5IRUFETElORV8yXVwiXG4gICAgICAgICAgICB2LXRleHQ9XCJ0aXRsZVwiXG4gICAgICAgICAgLz5cblxuICAgICAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5GTEVYLkdST1cuT0ZGLCBDU1MuRkxFWC5TSFJJTksuT0ZGLCBDU1MuTUFSR0lOLkxFRlQuQVVUT11cIlxuICAgICAgICAgICAgOmljb249XCJJQ09OLkNMT1NFXCJcbiAgICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICAgICAgQGNsaWNrPVwiZW1pdCgnY2xvc2UnKVwiXG4gICAgICAgICAgICB2LWlmPVwiaXNEaXNtaXNzaWJsZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLW1vZGFsLWNvbnRlbnQnLFxuICAgICAgICAgICAgQ1NTLkRJU1BMQVkuR1JJRCxcbiAgICAgICAgICAgIENTUy5JU09MQVRJT04uSVNPTEFURSxcbiAgICAgICAgICAgIENTUy5PVkVSRkxPVy5YLkhJRERFTixcbiAgICAgICAgICAgIENTUy5PVkVSRkxPVy5ZLkFVVE8sXG4gICAgICAgICAgICBDU1MuUEFERElORy5ZLlRXTyxcbiAgICAgICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIHJlZj1cIm1vZGFsQ29udGVudFwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2xvdCAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8Zm9vdGVyXG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgJ3RpZGUtbW9kYWwtZm9vdGVyJyxcbiAgICAgICAgICAgIENTUy5BWElTMS5FTkQsXG4gICAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgICAgQ1NTLkdBUC5UV08sXG4gICAgICAgICAgICBDU1MuSVNPTEFUSU9OLklTT0xBVEUsXG4gICAgICAgICAgICBDU1MuUEFERElORy5ZLk9ORSxcbiAgICAgICAgICAgIENTUy5TSEFET1cuVE9QLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIHYtaWY9XCIkc2xvdHMuZm9vdGVyXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzbG90IG5hbWU9XCJmb290ZXJcIiAvPlxuICAgICAgICA8L2Zvb3Rlcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGlhbG9nPlxuICA8L1RlbGVwb3J0PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtbW9kYWwge1xuICAgIC0tbW9kYWwtcGFkZGluZy14OiAyMHB4O1xuICAgIG1heC13aWR0aDogdW5zZXQ7XG4gICAgbWF4LWhlaWdodDogdW5zZXQ7XG4gICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS10aWRlLWFuaW1hdGUpIGFsbG93LWRpc2NyZXRlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcbiAgfVxuICAudGlkZS1tb2RhbFtvcGVuXSB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCUpO1xuICB9XG4gIC50aWRlLW1vZGFsOjpiYWNrZHJvcCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpZGUtYW5pbWF0ZSkgYWxsb3ctZGlzY3JldGU7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDBweCk7XG4gIH1cbiAgLnRpZGUtbW9kYWxbb3Blbl06OmJhY2tkcm9wIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLXRyYW5zcGFyZW50LTQwMCk7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiB2YXIoLS10aWRlLWJnLWJsdXIpO1xuICB9XG4gIEBzdGFydGluZy1zdHlsZSB7XG4gICAgLnRpZGUtbW9kYWxbb3Blbl0ge1xuICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcbiAgICB9XG4gICAgLnRpZGUtbW9kYWxbb3Blbl06OmJhY2tkcm9wIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYmFja2Ryb3AtZmlsdGVyOiB2YXIoLS10aWRlLWJnLWJsdXIpO1xuICAgIH1cbiAgfVxuICAudGlkZS1tb2RhbC1ib2R5IHtcbiAgICB3aWR0aDogdmFyKC0tbW9kYWwtd2lkdGgsIDU3NnB4KTtcbiAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMCUgLSB2YXIoLS10aWRlLXNwYWNpbmctMikpO1xuICB9XG5cbiAgLnRpZGUtbW9kYWwtaGVhZGVyLFxuICAudGlkZS1tb2RhbC1mb290ZXIge1xuICAgIHBhZGRpbmctaW5saW5lOiB2YXIoLS1tb2RhbC1wYWRkaW5nLXgpO1xuICB9XG4gIC50aWRlLW1vZGFsLWNvbnRlbnQge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogdmFyKC0tbW9kYWwtcGFkZGluZy14KSAxZnIgdmFyKC0tbW9kYWwtcGFkZGluZy14KTtcbiAgfVxuICA6d2hlcmUoLnRpZGUtbW9kYWwtY29udGVudCk6ZGVlcCg+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+XG4gIGltcG9ydCBJbnRlcm5hbEJhc2VMaW5rIGZyb20gJ0AvY29tcG9uZW50cy9JbnRlcm5hbEJhc2VMaW5rLnZ1ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgVEFSR0VUIH0gZnJvbSAnQC90eXBlcy9UYXJnZXQnO1xuXG4gIGltcG9ydCB0eXBlIHsgTGluayB9IGZyb20gJ0AvdHlwZXMvTGluayc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBoZWFkaW5nPzogc3RyaW5nO1xuICAgIGxpbmtzOiBMaW5rW107XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBoZWFkaW5nOiAnJyxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8c2VjdGlvbiBjbGFzcz1cInRpZGUtc2VvLWxpbmtzXCI+XG4gICAgPGgyIDpjbGFzcz1cIltDU1MuTUFSR0lOLkJPVFRPTS5IQUxGXVwiPlxuICAgICAge3sgcHJvcHMuaGVhZGluZyB9fVxuICAgIDwvaDI+XG5cbiAgICA8dWwgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLldSQVAsIENTUy5HQVAuVFdPLCBDU1MuTElTVF9CVUxMRVRTLk9GRl1cIj5cbiAgICAgIDxsaVxuICAgICAgICA6Y2xhc3M9XCJbJ3RpZGUtc2VvLWxpbmsnLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuR0FQLlFVQVJURVIsIENTUy5GT05ULlJPTEUuQk9EWV8yXVwiXG4gICAgICAgIDprZXk9XCJsaW5rLmxhYmVsXCJcbiAgICAgICAgdi1mb3I9XCJsaW5rIGluIHByb3BzLmxpbmtzXCJcbiAgICAgID5cbiAgICAgICAgPEludGVybmFsQmFzZUxpbmtcbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLlVOREVSTElORS5SRVNULk9GRl1cIlxuICAgICAgICAgIDpocmVmPVwibGluay51cmxcIlxuICAgICAgICAgIDp0YXJnZXQ9XCJsaW5rLmlzTmV3VGFiID8gVEFSR0VULkJMQU5LIDogVEFSR0VULlNFTEZcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgbGluay5sYWJlbCB9fVxuICAgICAgICA8L0ludGVybmFsQmFzZUxpbms+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gIDwvc2VjdGlvbj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC8qIFRPRE86IFJlZmFjdG9yIHRvIGFjY2VwdCBicmVha3BvaW50IHByb3AgaW4gb3JkZXIgdG8gYWNjb21wbGlzaCB0aGlzIHdpdGggbmVpdGhlciBjdXN0b20gYnJlYWtwb2ludHMgbm9yIGRlcGVuZGVuY3kgb24gVmlld3BvcnRTdG9yZS4gKi9cbiAgLnRpZGUtc2VvLWxpbmsge1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5cbiAgQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gICAgLnRpZGUtc2VvLWxpbmsge1xuICAgICAgd2lkdGg6IGNhbGMoKDEwMCUgLSAycmVtKSAvIDIpO1xuICAgIH1cbiAgfVxuXG4gIEBtZWRpYSAobWluLXdpZHRoOiAxMjMycHgpIHtcbiAgICAudGlkZS1zZW8tbGluayB7XG4gICAgICB3aWR0aDogY2FsYygoMTAwJSAtIDZyZW0pIC8gNCk7XG4gICAgfVxuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgb25CZWZvcmVNb3VudCwgb25Nb3VudGVkLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUJ1dHRvbkljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBQUklPUklUWSB9IGZyb20gJ0AvdHlwZXMvUHJpb3JpdHknO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRPUF9MQVlFUl9JRCwgaW5pdEZhdXhUb3BMYXllciwgc2V0U2Nyb2xsTG9jayB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZpZXdwb3J0JztcblxuICBpbXBvcnQgVGlkZURpdmlkZXIgZnJvbSAnLi9UaWRlRGl2aWRlci52dWUnO1xuXG4gIGltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSAndnVlJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGlzT3BlbjogYm9vbGVhbjtcbiAgICBpc0JhY2tCdXR0b24/OiBib29sZWFuO1xuICB9O1xuICBjb25zdCBwcm9wcyA9IGRlZmluZVByb3BzPFByb3BzPigpO1xuXG4gIHR5cGUgRW1pdHMgPSB7XG4gICAgKGU6ICdiYWNrJyk6IHZvaWQ7XG4gICAgKGU6ICdjbG9zZScpOiB2b2lkO1xuICB9O1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czxFbWl0cz4oKTtcblxuICBjb25zdCBkaWFsb2dFbGVtZW50OiBSZWY8SFRNTERpYWxvZ0VsZW1lbnQgfCBudWxsPiA9IHJlZihudWxsKTtcblxuICBjb25zdCB0cmlnZ2VyTmF0aXZlRGlhbG9nT3BlbiA9ICgpID0+IHtcbiAgICBkaWFsb2dFbGVtZW50LnZhbHVlPy5zaG93TW9kYWwoKTtcbiAgfTtcblxuICBjb25zdCB0cmlnZ2VyTmF0aXZlRGlhbG9nQ2xvc2UgPSAoKSA9PiB7XG4gICAgZGlhbG9nRWxlbWVudC52YWx1ZT8uY2xvc2UoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVCYWNrZHJvcENsaWNrID0gKCkgPT4ge1xuICAgIGVtaXQoJ2Nsb3NlJyk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRXNjYXBlS2V5ZG93biA9IChlOiBFdmVudCkgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBlbWl0KCdjbG9zZScpO1xuICB9O1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLmlzT3BlbixcbiAgICAobmV3VmFsdWUpID0+IHtcbiAgICAgIGlmICghZGlhbG9nRWxlbWVudC52YWx1ZSkgcmV0dXJuO1xuICAgICAgaWYgKG5ld1ZhbHVlKSB7XG4gICAgICAgIHRyaWdnZXJOYXRpdmVEaWFsb2dPcGVuKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0cmlnZ2VyTmF0aXZlRGlhbG9nQ2xvc2UoKTtcbiAgICAgIH1cbiAgICAgIHNldFNjcm9sbExvY2sobmV3VmFsdWUpO1xuICAgIH1cbiAgKTtcblxuICBvbkJlZm9yZU1vdW50KCgpID0+IHtcbiAgICBpbml0RmF1eFRvcExheWVyKCk7XG4gIH0pO1xuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgaWYgKHByb3BzLmlzT3Blbikge1xuICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ09wZW4oKTtcbiAgICB9XG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPFRlbGVwb3J0IDp0bz1cImAjJHtUT1BfTEFZRVJfSUR9YFwiPlxuICAgIDxkaWFsb2dcbiAgICAgIDpjbGFzcz1cIlsndGlkZS1zaGVldCcsIENTUy5CRy5JTklUSUFMLCBDU1MuSEVJR0hULkZVTEwsIENTUy5XSURUSC5GVUxMLCBDU1MuT1ZFUkZMT1cuWFkuSElEREVOXVwiXG4gICAgICByZWY9XCJkaWFsb2dFbGVtZW50XCJcbiAgICAgIEBjbGljay5zZWxmPVwiaGFuZGxlQmFja2Ryb3BDbGlja1wiXG4gICAgICBAY2xvc2UucHJldmVudFxuICAgICAgQGtleWRvd24uZXNjYXBlPVwiaGFuZGxlRXNjYXBlS2V5ZG93blwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtc2hlZXQtYm9keScsXG4gICAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICAgICAgQ1NTLkhFSUdIVC5GVUxMLFxuICAgICAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgIF1cIlxuICAgICAgPlxuICAgICAgICA8aGVhZGVyXG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICAgIENTUy5JU09MQVRJT04uSVNPTEFURSxcbiAgICAgICAgICAgIENTUy5QQURESU5HLlRPUC5PTkUsXG4gICAgICAgICAgICBDU1MuUEFERElORy5YLk9ORSxcbiAgICAgICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgICAgIENTUy5aX0lOREVYLk9ORSxcbiAgICAgICAgICBdXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5GTEVYLkdST1cuT0ZGLCBDU1MuRkxFWC5TSFJJTksuT0ZGXVwiXG4gICAgICAgICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9MRUZUXCJcbiAgICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICAgICAgQGNsaWNrPVwiZW1pdCgnYmFjaycpXCJcbiAgICAgICAgICAgIHYtaWY9XCJpc0JhY2tCdXR0b25cIlxuICAgICAgICAgIC8+XG5cbiAgICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5HUk9XLk9GRiwgQ1NTLkZMRVguU0hSSU5LLk9GRiwgQ1NTLk1BUkdJTi5MRUZULkFVVE9dXCJcbiAgICAgICAgICAgIDppY29uPVwiSUNPTi5DTE9TRVwiXG4gICAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgICAgIEBjbGljaz1cImVtaXQoJ2Nsb3NlJylcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgIDxUaWRlRGl2aWRlciAvPlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAndGlkZS1zaGVldC1jb250ZW50JyxcbiAgICAgICAgICAgIENTUy5ESVNQTEFZLkdSSUQsXG4gICAgICAgICAgICBDU1MuSEVJR0hULkZVTEwsXG4gICAgICAgICAgICBDU1MuSVNPTEFUSU9OLklTT0xBVEUsXG4gICAgICAgICAgICBDU1MuT1ZFUkZMT1cuWC5ISURERU4sXG4gICAgICAgICAgICBDU1MuT1ZFUkZMT1cuWS5BVVRPLFxuICAgICAgICAgICAgQ1NTLlBBRERJTkcuQk9UVE9NLk9ORSxcbiAgICAgICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICAgIF1cIlxuICAgICAgICA+XG4gICAgICAgICAgPHNsb3QgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2RpYWxvZz5cbiAgPC9UZWxlcG9ydD5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLXNoZWV0IHtcbiAgICAtLXNoZWV0LXBhZGRpbmcteDogdmFyKC0tdGlkZS1zcGFjaW5nLTEpO1xuICAgIG1heC13aWR0aDogdW5zZXQ7XG4gICAgbWF4LWhlaWdodDogdW5zZXQ7XG4gICAganVzdGlmeS1pdGVtczogcmlnaHQ7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGlkZS1hbmltYXRlKSBhbGxvdy1kaXNjcmV0ZTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gIH1cblxuICAudGlkZS1zaGVldFtvcGVuXSB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpO1xuICB9XG5cbiAgLnRpZGUtc2hlZXQ6OmJhY2tkcm9wIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGlkZS1hbmltYXRlKSBhbGxvdy1kaXNjcmV0ZTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMHB4KTtcbiAgfVxuXG4gIC50aWRlLXNoZWV0W29wZW5dOjpiYWNrZHJvcCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS10cmFuc3BhcmVudC00MDApO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogdmFyKC0tdGlkZS1iZy1ibHVyKTtcbiAgfVxuXG4gIC50aWRlLXNoZWV0LWJvZHkge1xuICAgIG1heC13aWR0aDogbWluKGNhbGMoMTAwdncgLSB2YXIoLS10aWRlLXNwYWNpbmctMikpLCAzMTFweCk7XG4gIH1cblxuICAudGlkZS1zaGVldC1jb250ZW50IHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHZhcigtLXNoZWV0LXBhZGRpbmcteCkgMWZyIHZhcigtLXNoZWV0LXBhZGRpbmcteCk7XG4gIH1cblxuICA6d2hlcmUoLnRpZGUtc2hlZXQtY29udGVudCk6ZGVlcCg+IDp3aGVyZSgqKSkge1xuICAgIGdyaWQtY29sdW1uOiAyO1xuICB9XG5cbiAgQHN0YXJ0aW5nLXN0eWxlIHtcbiAgICAudGlkZS1zaGVldFtvcGVuXSB7XG4gICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xuICAgIH1cblxuICAgIC50aWRlLXNoZWV0W29wZW5dOjpiYWNrZHJvcCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGJhY2tkcm9wLWZpbHRlcjogdmFyKC0tdGlkZS1iZy1ibHVyKTtcbiAgICB9XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGlzQWN0aXZlPzogYm9vbGVhbjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBpc0FjdGl2ZTogZmFsc2UsXG4gIH0pO1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0cyhbJ2NoYW5nZSddKTtcblxuICBjb25zdCBoYW5kbGVDbGljayA9ICgpID0+IHtcbiAgICBpZiAoIXByb3BzLmRpc2FibGVkKSB7XG4gICAgICBlbWl0KCdjaGFuZ2UnKTtcbiAgICB9XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8YnV0dG9uXG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtc3dpdGNoJyxcbiAgICAgIHByb3BzLmlzQWN0aXZlID8gJ2FjdGl2ZScgOiAnJyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICBwcm9wcy5pc0FjdGl2ZSA/ICcnIDogQ1NTLkJPUkRFUi5DT0xPUi5ERUZBVUxULFxuICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgIHByb3BzLmlzQWN0aXZlID8gQ1NTLkJHLlNFQ09OREFSWSA6IENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgXVwiXG4gICAgOmRpc2FibGVkPVwicHJvcHMuZGlzYWJsZWRcIlxuICAgIEBjbGljaz1cImhhbmRsZUNsaWNrXCJcbiAgICBhcmlhLWxhYmVsPVwiU3dpdGNoXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtc3dpdGNoLWluZGljYXRvcicsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMxLkNFTlRFUixcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgICAgcHJvcHMuaXNBY3RpdmUgPyBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUIDogQ1NTLkJHLlNFQ09OREFSWSxcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6aWNvbj1cIklDT04uQ0hFQ0tcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuTEFSR0VcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgPC9idXR0b24+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1zd2l0Y2gge1xuICAgIHdpZHRoOiA2NHB4O1xuICAgIGhlaWdodDogMzJweDtcbiAgICB0cmFuc2l0aW9uOiB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGJhY2tncm91bmQtY29sb3I7XG4gIH1cblxuICAudGlkZS1zd2l0Y2g6ZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IHZhcigtLXRpZGUtb3BhY2l0eSk7XG4gIH1cblxuICAudGlkZS1zd2l0Y2guYWN0aXZlIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtc2Vjb25kYXJ5KTtcbiAgfVxuXG4gIC50aWRlLXN3aXRjaC5hY3RpdmUgLnRpZGUtc3dpdGNoLWluZGljYXRvciB7XG4gICAgbGVmdDogMzZweDtcbiAgfVxuXG4gIC50aWRlLXN3aXRjaC1pbmRpY2F0b3Ige1xuICAgIGxlZnQ6IDRweDtcbiAgICB0cmFuc2l0aW9uOiB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGxlZnQsIGJvcmRlci1jb2xvciwgYmFja2dyb3VuZC1jb2xvcjtcbiAgfVxuPC9zdHlsZT5cbiJdLCJuYW1lcyI6WyJPUklFTlRBVElPTiIsIkNTUyIsInV0aWxpdGllcyIsImJyZWFrcG9pbnQiLCJ1dGlsaXR5IiwicHJvcHMiLCJfX3Byb3BzIiwiX29wZW5CbG9jayIsIl9jcmVhdGVFbGVtZW50QmxvY2siLCJfaG9pc3RlZF8xIiwiX2NyZWF0ZUVsZW1lbnRWTm9kZSIsIl9ub3JtYWxpemVDbGFzcyIsIl91bnJlZiIsIlJFQUxNIiwiU0laRSIsIlNJWkVfQlVUVE9OIiwiZm9ybWF0TnVtYmVyIiwiaW5wdXQiLCJvdXRwdXQiLCJkaWdpdHMiLCJmb3JtYXRQYXNjYWxDYXNlIiwid29yZCIsImZvcm1hdFBob25lIiwiZm9ybWF0UHJpY2UiLCJpbm5lclNWRyIsInJlZiIsIndhdGNoIiwiaWQiLCJuYW1lIiwicHJlZml4IiwicmVhbG1Gb2xkZXIiLCJtb2QiLCJfX3ZhcmlhYmxlRHluYW1pY0ltcG9ydFJ1bnRpbWVIZWxwZXIiLCJtYXJrUmF3IiwiX2NyZWF0ZUJsb2NrIiwiX3Jlc29sdmVEeW5hbWljQ29tcG9uZW50IiwiSUNPTiIsIklDT05fUkVBTE0iLCJlbWl0IiwiX19lbWl0IiwiaGFuZGxlVG9nZ2xlQ2xpY2siLCJUaWRlRGl2aWRlciIsIl90b0Rpc3BsYXlTdHJpbmciLCJfY3JlYXRlVk5vZGUiLCJUaWRlSWNvbiIsIl9yZW5kZXJTbG90IiwiX2N0eCIsIkVMRU1FTlQiLCJFTEVNRU5UX0JST0FEIiwidGlkZUNvbmZpZ0RlZmF1bHRzIiwiQ09ORklHX0tFWSIsInByb3ZpZGVUaWRlQ29uZmlnIiwiY29uZmlnIiwiY29uZmlnV2l0aERlZmF1bHRzIiwicHJvdmlkZSIsInVzZVRpZGVDb25maWciLCJpbmplY3QiLCJsaW5rQ29tcG9uZW50IiwiUFJJT1JJVFkiLCJUQVJHRVQiLCJ0eXBlQXR0cmlidXRlIiwiY29tcHV0ZWQiLCJyb290RWxlbWVudCIsIkludGVybmFsQmFzZUxpbmsiLCJBTEVSVCIsInNsb3RzIiwidXNlU2xvdHMiLCJoYXNCb2R5Iiwibm9kZXMiLCJfYSIsIm5vZGUiLCJDb21tZW50IiwiaWNvblR5cGUiLCJUaWRlTGluayIsIlRpZGVCdXR0b25JY29uIiwiQkFER0VfQ09MT1IiLCJCQURHRV9DT0xPUl9ERVRBSUxTIiwiQkFER0VfVFJVU1RFRCIsIl9GcmFnbWVudCIsImNydW1iIiwiaW5kZXgiLCJfY3JlYXRlVGV4dFZOb2RlIiwiX2hvaXN0ZWRfMiIsImhhbmRsZUNsaWNrIiwidGFiIiwiJGV2ZW50IiwiVFlQRV9DQVJEIiwiY2FyZEdhcCIsImRvdEdhcCIsImRvdFdpZHRoIiwiY29udGFpbmVyUmVmIiwiY29udGVudFdpZHRoIiwiY3VycmVudFBhZ2VJbmRleCIsImRvdHNSZWYiLCJmcmFtZVdpZHRoIiwiaXNGaXJzdFNsaWRlIiwiaXNMYXN0U2xpZGUiLCJzaG93QnV0dG9ucyIsInNsaWRlT2JzZXJ2ZXIiLCJzbGlkZXMiLCJzbGlkZXNJblZpZXciLCJzbG90T2JzZXJ2ZXIiLCJjdXJyZW50UGFnZSIsImRvdENvbnRhaW5lcldpZHRoIiwiZG90Q291bnRWaXNpYmxlIiwidG90YWxQYWdlcyIsImxhc3RQYWdlSW5kZXgiLCJnYXBXaWR0aCIsImNvbnRlbnROb0dhcCIsInF1b3RpZW50IiwiZ2V0RG90Q2xhc3MiLCJkb3RJbmRleCIsImNsYXNzTmFtZSIsIm1lYXN1cmVEb20iLCJvYnNlcnZlU2xpZGVzIiwib3B0aW9ucyIsImVudHJpZXMiLCJzbGlkZXNBZGRlZFRvVmlldyIsImVudHJ5Iiwic2xpZGVJbmRleCIsInNsaWRlIiwiYSIsImIiLCJjaGlsZCIsIm9ic2VydmVTbG90Iiwib2JzZXJ2ZXJDYWxsYmFjayIsInNjcm9sbFRvT2Zmc2V0IiwidGFyZ2V0IiwibGFzdE9mZnNldCIsImlzU2Nyb2xsaW5nTGVmdCIsInVwZGF0ZURvdHMiLCJzaG93TmV4dFBhZ2UiLCJuZXh0U2xpZGUiLCJzaG93UHJldmlvdXNQYWdlIiwicHJldmlvdXNTbGlkZSIsInNob3dOZXh0U2xpZGUiLCJzaG93UHJldmlvdXNTbGlkZSIsImNlbnRlckRvdCIsIm9uTW91bnRlZCIsIm9uVW5tb3VudGVkIiwiX2IiLCJfY2FjaGUiLCJfbm9ybWFsaXplU3R5bGUiLCJfcmVuZGVyTGlzdCIsIl9ob2lzdGVkXzMiLCJfaG9pc3RlZF80IiwiX2hvaXN0ZWRfNSIsIkZPUk1fS0VZIiwidXNlVGlkZUZvcm0iLCJmb3JjZVNob3dFcnJvcnMiLCJ1c2VGb3JtQ29udGV4dCIsInJldmVhbFZhbGlkYXRpb25FcnJvcnMiLCJoYW5kbGVTdWJtaXQiLCJlIiwiT0JKRUNUX0ZJVCIsImltYWdlRGVmYXVsdCIsInBpY3R1cmUiLCJpbWciLCJvYmplY3RGaXRDbGFzc05hbWUiLCJzZXRJbWFnZUZyb21EZWZhdWx0IiwiY3VycmVudFNyYyIsInBpY3R1cmVTb3VyY2UiLCJzb3VyY2UiLCJUaWRlSW1hZ2UiLCJlcnJvck1lc3NhZ2VEZWZhdWx0IiwiVkFMSURBVElPTl9SRVNVTFQiLCJjaGVja0Zvcm1hdCIsImZvcm1hdCIsIm1lc3NhZ2UiLCJ2YWx1ZSIsInJlc3VsdCIsImdldEZpZWxkTGVuZ3RoSXNWYWxpZCIsIm1heGxlbmd0aCIsIm1pbmxlbmd0aCIsInJlcXVpcmVkIiwiaXNFbXB0eUFuZFVucmVxdWlyZWQiLCJpc1Rvb0xvbmciLCJnZXRGaWVsZFZhbGlkYXRpb25SZXN1bHQiLCJlcnJvckZyb21Qcm9wcyIsInZhbGlkYXRvcnMiLCJ2YWxpZGF0aW9uIiwidmFsaWRhdGVQcm9wZXJ0eSIsImxlbmd0aFZhbGlkYXRpb24iLCJ2YWxpZGF0ZUxlbmd0aCIsInJlc3BvbnNlIiwidmFsaWRhdG9yIiwibW9kZWxWYWx1ZSIsIl91c2VNb2RlbCIsImZvcm1Db250ZXh0IiwiaXNWYWxpZGF0aW5nIiwiZXJyb3JSZWYiLCJmb3JtYXR0ZWRMYWJlbCIsImlzQ2hlY2tlZCIsInNob3dFcnJvciIsImhhc0Vycm9yRnJvbVByb3AiLCJzdXBwb3J0aW5nVGV4dE1lc3NhZ2UiLCJnZXRDaGVja2JveFZhbGlkYXRpb25SZXN1bHQiLCJ3YXRjaEVmZmVjdCIsIm5ld1ZhbHVlIiwiVGlkZUlucHV0U3VwcG9ydGluZ1RleHQiLCJfX2RlZmF1bHRfXyIsImNoZWNrZWQiLCJvbGRWYWx1ZSIsIkZPUk1BVCIsIkZPUk1BVF9SRUdFWCIsIlZBTElEQVRPUiIsIkVSUk9SX0RJU1BMQVkiLCJoYXNGb2N1cyIsImlucHV0SWQiLCJ1c2VJZCIsInNlbGVjdEVsZW1lbnQiLCJoYXNNaW5pbGFiZWwiLCJpc0VtcHR5IiwiZXhwYW5kT3B0aW9ucyIsImV2ZW50IiwiaGFuZGxlRm9jdXMiLCJoYW5kbGVGb2N1c091dCIsIm9wdGdyb3VwIiwib3B0aW9uIiwiX2hvaXN0ZWRfNiIsImdldEVycm9yTWVzc2FnZSIsImVycm9yRnJvbVJlZiIsImdldEZpZWxkSGFzRXJyb3IiLCJoYW5kbGVGaWVsZFZhbGlkYXRpb24iLCJlcnJvciIsImVycm9yTWVzc2FnZSIsImhhc0Vycm9yIiwiX19leHBvc2UiLCJURVhUX0lOUFVUX1RZUEUiLCJJTlBVVF9NT0RFIiwiZ2V0VGV4dElucHV0TW9kZSIsInR5cGUiLCJpbnB1dG1vZGUiLCJpbnB1dEVsZW1lbnQiLCJzaG93UGFzc3dvcmQiLCJpbnB1dE1vZGVBdHRyaWJ1dGUiLCJpbnB1dFR5cGUiLCJzaG91bGRTaG93Q2xlYXJCdXR0b24iLCJzaG91bGRTaG93UGFzc3dvcmRCdXR0b24iLCJoYW5kbGVDbGVhciIsImhhbmRsZUZpZWxkQ2xpY2siLCJwcmV2ZW50SW5wdXRGb2N1c0xvc3NPbk1vdXNlZG93biIsImhhc0NsZWFyIiwiaGFuZGxlVmFsaWRhdGlvbiIsImhhbmRsZUlucHV0IiwidXBkYXRlVmFsdWUiLCJ0ZXh0YXJlYUVsZW1lbnQiLCJwcmV2ZW50VGV4dGFyZWFGb2N1c0xvc3NPbk1vdXNlZG93biIsIkJSRUFLUE9JTlQiLCJNRURJQSIsInNldFNjcm9sbExvY2siLCJpc0xvY2tlZCIsImJvZHkiLCJzY3JvbGxZIiwibmV4dFRpY2siLCJzYXZlZFNjcm9sbFkiLCJUT1BfTEFZRVJfSUQiLCJpbml0RmF1eFRvcExheWVyIiwidG9wTGF5ZXIiLCJtb2RhbENvbnRlbnQiLCJtb2RhbERpYWxvZyIsInRyaWdnZXJOYXRpdmVEaWFsb2dPcGVuIiwidHJpZ2dlck5hdGl2ZURpYWxvZ0Nsb3NlIiwic2Nyb2xsQ29udGVudFRvVG9wIiwiaGFuZGxlQmFja2Ryb3BDbGljayIsImhhbmRsZUVzY2FwZUtleWRvd24iLCJvbkJlZm9yZU1vdW50IiwiX1RlbGVwb3J0IiwiJHNsb3RzIiwicGFnZUN1cnJlbnQiLCJwYWdpbmF0aW9uQnV0dG9ucyIsImVtcHR5IiwicGFnaW5hdGlvbkJ1dHRvbiIsIlRpZGVCdXR0b25QYWdpbmF0aW9uIiwic2lkZXMiLCJhbGlnbm1lbnRzIiwicGxhY2VtZW50cyIsImFjYyIsInNpZGUiLCJtaW4iLCJtYXgiLCJyb3VuZCIsImZsb29yIiwiY3JlYXRlQ29vcmRzIiwidiIsIm9wcG9zaXRlU2lkZU1hcCIsIm9wcG9zaXRlQWxpZ25tZW50TWFwIiwiY2xhbXAiLCJzdGFydCIsImVuZCIsImV2YWx1YXRlIiwicGFyYW0iLCJnZXRTaWRlIiwicGxhY2VtZW50IiwiZ2V0QWxpZ25tZW50IiwiZ2V0T3Bwb3NpdGVBeGlzIiwiYXhpcyIsImdldEF4aXNMZW5ndGgiLCJnZXRTaWRlQXhpcyIsImdldEFsaWdubWVudEF4aXMiLCJnZXRBbGlnbm1lbnRTaWRlcyIsInJlY3RzIiwicnRsIiwiYWxpZ25tZW50IiwiYWxpZ25tZW50QXhpcyIsImxlbmd0aCIsIm1haW5BbGlnbm1lbnRTaWRlIiwiZ2V0T3Bwb3NpdGVQbGFjZW1lbnQiLCJnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudCIsImV4cGFuZFBhZGRpbmdPYmplY3QiLCJwYWRkaW5nIiwiZ2V0UGFkZGluZ09iamVjdCIsInJlY3RUb0NsaWVudFJlY3QiLCJyZWN0IiwieCIsInkiLCJ3aWR0aCIsImhlaWdodCIsImNvbXB1dGVDb29yZHNGcm9tUGxhY2VtZW50IiwiX3JlZiIsInJlZmVyZW5jZSIsImZsb2F0aW5nIiwic2lkZUF4aXMiLCJhbGlnbkxlbmd0aCIsImlzVmVydGljYWwiLCJjb21tb25YIiwiY29tbW9uWSIsImNvbW1vbkFsaWduIiwiY29vcmRzIiwiY29tcHV0ZVBvc2l0aW9uIiwic3RyYXRlZ3kiLCJtaWRkbGV3YXJlIiwicGxhdGZvcm0iLCJ2YWxpZE1pZGRsZXdhcmUiLCJzdGF0ZWZ1bFBsYWNlbWVudCIsIm1pZGRsZXdhcmVEYXRhIiwicmVzZXRDb3VudCIsImkiLCJmbiIsIm5leHRYIiwibmV4dFkiLCJkYXRhIiwicmVzZXQiLCJkZXRlY3RPdmVyZmxvdyIsInN0YXRlIiwiX2F3YWl0JHBsYXRmb3JtJGlzRWxlIiwiZWxlbWVudHMiLCJib3VuZGFyeSIsInJvb3RCb3VuZGFyeSIsImVsZW1lbnRDb250ZXh0IiwiYWx0Qm91bmRhcnkiLCJwYWRkaW5nT2JqZWN0IiwiZWxlbWVudCIsImNsaXBwaW5nQ2xpZW50UmVjdCIsIm9mZnNldFBhcmVudCIsIm9mZnNldFNjYWxlIiwiZWxlbWVudENsaWVudFJlY3QiLCJnZXRQbGFjZW1lbnRMaXN0IiwiYXV0b0FsaWdubWVudCIsImFsbG93ZWRQbGFjZW1lbnRzIiwiYXV0b1BsYWNlbWVudCIsIl9taWRkbGV3YXJlRGF0YSRhdXRvUCIsIl9taWRkbGV3YXJlRGF0YSRhdXRvUDIiLCJfcGxhY2VtZW50c1RoYXRGaXRPbkUiLCJjcm9zc0F4aXMiLCJkZXRlY3RPdmVyZmxvd09wdGlvbnMiLCJwbGFjZW1lbnRzJDEiLCJvdmVyZmxvdyIsImN1cnJlbnRJbmRleCIsImN1cnJlbnRQbGFjZW1lbnQiLCJhbGlnbm1lbnRTaWRlcyIsImN1cnJlbnRPdmVyZmxvd3MiLCJhbGxPdmVyZmxvd3MiLCJuZXh0UGxhY2VtZW50IiwicGxhY2VtZW50c1NvcnRlZEJ5TW9zdFNwYWNlIiwiZCIsInJlc2V0UGxhY2VtZW50IiwiY29udmVydFZhbHVlVG9Db29yZHMiLCJtYWluQXhpc011bHRpIiwiY3Jvc3NBeGlzTXVsdGkiLCJyYXdWYWx1ZSIsIm1haW5BeGlzIiwib2Zmc2V0IiwiX21pZGRsZXdhcmVEYXRhJG9mZnNlIiwiX21pZGRsZXdhcmVEYXRhJGFycm93IiwiZGlmZkNvb3JkcyIsInNoaWZ0IiwiY2hlY2tNYWluQXhpcyIsImNoZWNrQ3Jvc3NBeGlzIiwibGltaXRlciIsIm1haW5BeGlzQ29vcmQiLCJjcm9zc0F4aXNDb29yZCIsIm1pblNpZGUiLCJtYXhTaWRlIiwibGltaXRlZENvb3JkcyIsImhhc1dpbmRvdyIsImdldE5vZGVOYW1lIiwiaXNOb2RlIiwiZ2V0V2luZG93IiwiX25vZGUkb3duZXJEb2N1bWVudCIsImdldERvY3VtZW50RWxlbWVudCIsImlzRWxlbWVudCIsImlzSFRNTEVsZW1lbnQiLCJpc1NoYWRvd1Jvb3QiLCJpc092ZXJmbG93RWxlbWVudCIsIm92ZXJmbG93WCIsIm92ZXJmbG93WSIsImRpc3BsYXkiLCJnZXRDb21wdXRlZFN0eWxlIiwiaXNUYWJsZUVsZW1lbnQiLCJpc1RvcExheWVyIiwic2VsZWN0b3IiLCJpc0NvbnRhaW5pbmdCbG9jayIsImVsZW1lbnRPckNzcyIsIndlYmtpdCIsImlzV2ViS2l0IiwiY3NzIiwiZ2V0Q29udGFpbmluZ0Jsb2NrIiwiY3VycmVudE5vZGUiLCJnZXRQYXJlbnROb2RlIiwiaXNMYXN0VHJhdmVyc2FibGVOb2RlIiwiZ2V0Tm9kZVNjcm9sbCIsImdldE5lYXJlc3RPdmVyZmxvd0FuY2VzdG9yIiwicGFyZW50Tm9kZSIsImdldE92ZXJmbG93QW5jZXN0b3JzIiwibGlzdCIsInRyYXZlcnNlSWZyYW1lcyIsIl9ub2RlJG93bmVyRG9jdW1lbnQyIiwic2Nyb2xsYWJsZUFuY2VzdG9yIiwiaXNCb2R5Iiwid2luIiwiZnJhbWVFbGVtZW50IiwiZ2V0RnJhbWVFbGVtZW50IiwiZ2V0Q3NzRGltZW5zaW9ucyIsImhhc09mZnNldCIsIm9mZnNldFdpZHRoIiwib2Zmc2V0SGVpZ2h0Iiwic2hvdWxkRmFsbGJhY2siLCJ1bndyYXBFbGVtZW50IiwiZ2V0U2NhbGUiLCJkb21FbGVtZW50IiwiJCIsIm5vT2Zmc2V0cyIsImdldFZpc3VhbE9mZnNldHMiLCJzaG91bGRBZGRWaXN1YWxPZmZzZXRzIiwiaXNGaXhlZCIsImZsb2F0aW5nT2Zmc2V0UGFyZW50IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiaW5jbHVkZVNjYWxlIiwiaXNGaXhlZFN0cmF0ZWd5IiwiY2xpZW50UmVjdCIsInNjYWxlIiwidmlzdWFsT2Zmc2V0cyIsIm9mZnNldFdpbiIsImN1cnJlbnRXaW4iLCJjdXJyZW50SUZyYW1lIiwiaWZyYW1lU2NhbGUiLCJpZnJhbWVSZWN0IiwibGVmdCIsInRvcCIsImdldFdpbmRvd1Njcm9sbEJhclgiLCJsZWZ0U2Nyb2xsIiwiZ2V0SFRNTE9mZnNldCIsImRvY3VtZW50RWxlbWVudCIsInNjcm9sbCIsImlnbm9yZVNjcm9sbGJhclgiLCJodG1sUmVjdCIsImNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0Iiwib2Zmc2V0cyIsImlzT2Zmc2V0UGFyZW50QW5FbGVtZW50Iiwib2Zmc2V0UmVjdCIsImh0bWxPZmZzZXQiLCJnZXRDbGllbnRSZWN0cyIsImdldERvY3VtZW50UmVjdCIsImh0bWwiLCJnZXRWaWV3cG9ydFJlY3QiLCJ2aXN1YWxWaWV3cG9ydCIsInZpc3VhbFZpZXdwb3J0QmFzZWQiLCJnZXRJbm5lckJvdW5kaW5nQ2xpZW50UmVjdCIsImdldENsaWVudFJlY3RGcm9tQ2xpcHBpbmdBbmNlc3RvciIsImNsaXBwaW5nQW5jZXN0b3IiLCJoYXNGaXhlZFBvc2l0aW9uQW5jZXN0b3IiLCJzdG9wTm9kZSIsImdldENsaXBwaW5nRWxlbWVudEFuY2VzdG9ycyIsImNhY2hlIiwiY2FjaGVkUmVzdWx0IiwiZWwiLCJjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSIsImVsZW1lbnRJc0ZpeGVkIiwiY29tcHV0ZWRTdHlsZSIsImN1cnJlbnROb2RlSXNDb250YWluaW5nIiwiYW5jZXN0b3IiLCJnZXRDbGlwcGluZ1JlY3QiLCJjbGlwcGluZ0FuY2VzdG9ycyIsImZpcnN0Q2xpcHBpbmdBbmNlc3RvciIsImNsaXBwaW5nUmVjdCIsImFjY1JlY3QiLCJnZXREaW1lbnNpb25zIiwiZ2V0UmVjdFJlbGF0aXZlVG9PZmZzZXRQYXJlbnQiLCJpc1N0YXRpY1Bvc2l0aW9uZWQiLCJnZXRUcnVlT2Zmc2V0UGFyZW50IiwicG9seWZpbGwiLCJyYXdPZmZzZXRQYXJlbnQiLCJnZXRPZmZzZXRQYXJlbnQiLCJzdmdPZmZzZXRQYXJlbnQiLCJnZXRFbGVtZW50UmVjdHMiLCJnZXRPZmZzZXRQYXJlbnRGbiIsImdldERpbWVuc2lvbnNGbiIsImZsb2F0aW5nRGltZW5zaW9ucyIsImlzUlRMIiwicmVjdHNBcmVFcXVhbCIsIm9ic2VydmVNb3ZlIiwib25Nb3ZlIiwiaW8iLCJ0aW1lb3V0SWQiLCJyb290IiwiY2xlYW51cCIsIl9pbyIsInJlZnJlc2giLCJza2lwIiwidGhyZXNob2xkIiwiZWxlbWVudFJlY3RGb3JSb290TWFyZ2luIiwiaW5zZXRUb3AiLCJpbnNldFJpZ2h0IiwiaW5zZXRCb3R0b20iLCJpbnNldExlZnQiLCJpc0ZpcnN0VXBkYXRlIiwiaGFuZGxlT2JzZXJ2ZSIsInJhdGlvIiwiYXV0b1VwZGF0ZSIsInVwZGF0ZSIsImFuY2VzdG9yU2Nyb2xsIiwiYW5jZXN0b3JSZXNpemUiLCJlbGVtZW50UmVzaXplIiwibGF5b3V0U2hpZnQiLCJhbmltYXRpb25GcmFtZSIsInJlZmVyZW5jZUVsIiwiYW5jZXN0b3JzIiwiY2xlYW51cElvIiwicmVvYnNlcnZlRnJhbWUiLCJyZXNpemVPYnNlcnZlciIsImZpcnN0RW50cnkiLCJfcmVzaXplT2JzZXJ2ZXIiLCJmcmFtZUlkIiwicHJldlJlZlJlY3QiLCJmcmFtZUxvb3AiLCJuZXh0UmVmUmVjdCIsIl9yZXNpemVPYnNlcnZlcjIiLCJvZmZzZXQkMSIsImF1dG9QbGFjZW1lbnQkMSIsInNoaWZ0JDEiLCJtZXJnZWRPcHRpb25zIiwicGxhdGZvcm1XaXRoQ2FjaGUiLCJjb21wdXRlUG9zaXRpb24kMSIsImlzQ29tcG9uZW50UHVibGljSW5zdGFuY2UiLCJ0b1ZhbHVlIiwidW5yZWYiLCJnZXREUFIiLCJyb3VuZEJ5RFBSIiwiZHByIiwidXNlRmxvYXRpbmciLCJ3aGlsZUVsZW1lbnRzTW91bnRlZE9wdGlvbiIsIm9wZW5PcHRpb24iLCJfdG9WYWx1ZSIsIm1pZGRsZXdhcmVPcHRpb24iLCJwbGFjZW1lbnRPcHRpb24iLCJfdG9WYWx1ZTIiLCJzdHJhdGVneU9wdGlvbiIsIl90b1ZhbHVlMyIsInRyYW5zZm9ybU9wdGlvbiIsIl90b1ZhbHVlNCIsInJlZmVyZW5jZUVsZW1lbnQiLCJmbG9hdGluZ0VsZW1lbnQiLCJzaGFsbG93UmVmIiwiaXNQb3NpdGlvbmVkIiwiZmxvYXRpbmdTdHlsZXMiLCJpbml0aWFsU3R5bGVzIiwieFZhbCIsInlWYWwiLCJ3aGlsZUVsZW1lbnRzTW91bnRlZENsZWFudXAiLCJvcGVuIiwicG9zaXRpb24iLCJhdHRhY2giLCJnZXRDdXJyZW50U2NvcGUiLCJvblNjb3BlRGlzcG9zZSIsInNoYWxsb3dSZWFkb25seSIsImlzQ2xpY2tPdXRzaWRlIiwiYW5jaG9yIiwiaXNIb3ZlcmVkIiwiaXNUb2dnbGVkT3BlbiIsIm9mZnNldE1pZGRsZXdhcmUiLCJpc1Nob3dQb3BvdmVyIiwiaGFuZGxlUGVybWFuZW50T3BlbkJvZHlDbGljayIsImhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZU92ZXIiLCJoYW5kbGVBbmNob3JFbGVtZW50TW91c2VMZWF2ZSIsImhhbmRsZUFuY2hvckVsZW1lbnRDbGljayIsImFkZExpc3RlbmVyc1RvQW5jaG9yRWxlbWVudCIsInJlbW92ZUxpc3RlbmVyc0Zyb21BbmNob3JFbGVtZW50IiwiaGFuZGxlUGVybWFuZW50T3BlbkJvZHlLZXlkb3duIiwiYWRkT3Blbkxpc3RlbmVyc1RvUm9vdCIsInJlbW92ZU9wZW5MaXN0ZW5lcnNGcm9tUm9vdCIsInVwZGF0ZUFuY2hvckVsZW1lbnQiLCJfVHJhbnNpdGlvbiIsImxpbmsiLCJkaWFsb2dFbGVtZW50Il0sIm1hcHBpbmdzIjoidUdBQWFBLEdBQWMsQ0FDekIsV0FBWSxhQUNaLFNBQVUsVUFDWixFQ0NhQyxFQUFNLENBQ2pCLGVBQWdCLENBQUNDLEVBQXFCQyxJQUM3QkQsRUFBVSxJQUFLRSxHQUFZLEdBQUdELENBQVUsSUFBSUMsQ0FBTyxFQUFFLEVBRTlELE1BQU8sQ0FDTCxFQUFHLENBQ0QsT0FBUSxtQkFDUixRQUFTLG9CQUNULEtBQU0saUJBQ04sTUFBTyxpQkFBQSxFQUVULEVBQUcsQ0FDRCxRQUFTLHFCQUNULE9BQVEsbUJBQUEsQ0FDVixFQUVGLE1BQU8sQ0FDTCxPQUFRLG9CQUNSLFFBQVMscUJBQ1QsT0FBUSxvQkFDUixJQUFLLGlCQUNMLE1BQU8sa0JBQUEsRUFFVCxNQUFPLENBQ0wsT0FBUSxvQkFDUixPQUFRLG9CQUNSLElBQUssaUJBQ0wsTUFBTyxtQkFDUCxRQUFTLG9CQUFBLEVBRVgsR0FBSSxDQUNGLE9BQVEsQ0FDTixRQUFTLENBQ1AsTUFBTyx3QkFDUCxLQUFNLHVCQUNOLFFBQVMsMEJBQ1QsUUFBUyx5QkFBQSxFQUVYLFFBQVMsQ0FDUCxNQUFPLHdCQUNQLEtBQU0sdUJBQ04sUUFBUywwQkFDVCxRQUFTLDBCQUVULEtBQU0sdUJBQ04s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LEVBQUFBLFlBQWVGLEVBQUEsRUFFZi9CLEVBQUFBLG1CQWNNLE1BQUEsQ0FiSCxNQUFLQyxFQUFBQSxlQUFBLHNCQUFrREMsUUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBa0JXLFFBQUFYLENBQUEsRUFBSSxPQUFPLEtBQWtCVyxRQUFBWCxDQUFBLEVBQUksVUFBVSxRQUFxQlcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFNBQVMsRUFBRSxPQUFvQlcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFNBQVMsRUFBRSxLQUFrQlcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFFBQVEsT0FBTyxJQUFpQlcsUUFBQVgsQ0FBQSxFQUFJLFNBQVMsU0FBc0JXLFFBQUFYLENBQUEsRUFBSSxNQUFNLElBQUEsS0FZM1M0QyxFQUFBQSxXQUFRQyxFQUFBLE9BQUEsVUFBQSxDQUFBLEVBQUEsT0FBQSxFQUFBLENBQUEsbVBDdkhoQixNQUFNekMsRUFBUUMsRUFLUmdDLEVBQU9DLEVBRVA0QyxFQUFjLElBQU0sQ0FDbkI5RSxFQUFNLFVBQ1RpQyxFQUFLLFFBQVEsQ0FFakIsOEJBSUE5QixFQUFBQSxtQkFpQ1MsU0FBQSxDQWhDTixNQUFLRyxFQUFBQSxlQUFBLGVBQStCTixFQUFNLFNBQVEsU0FBQSxHQUF3Qk8sUUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBWVcsUUFBQVgsQ0FBQSxFQUFJLE1BQU0sT0FBY1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sS0FBSyxJQUFXVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxPQUFPLEtBQVlJLEVBQU0sU0FBUSxHQUFRTyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxNQUFNLFFBQWVXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxTQUFTLEdBQUcsT0FBY0ksRUFBTSxTQUFXTyxRQUFBWCxDQUFBLEVBQUksR0FBRyxVQUFZVyxXQUFJLEdBQUcsUUFBUSxPQUFBLEdBVzFULFNBQVVQLEVBQU0sU0FDaEIsUUFBTzhFLEVBQ1IsYUFBVyxTQUNYLEtBQUssUUFBQSxHQUVMekUsRUFBQUEsbUJBZU0sTUFBQSxDQWRILE1BQUtDLEVBQUFBLGVBQUEseUJBQTZDQyxRQUFBWCxDQUFBLEVBQUksU0FBUyxTQUFrQlcsUUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBY1csUUFBQVgsQ0FBQSxFQUFJLE1BQU0sT0FBZ0JXLFFBQUFYLENBQUEsRUFBSSxNQUFNLE9BQWdCVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxPQUFPLEtBQWNJLEVBQU0sU0FBV08sUUFBQVgsQ0FBQSxFQUFJLEdBQUcsUUFBUSxRQUFVVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksR0FBRyxTQUFBLEtBVWpQMEMsRUFBQUEsWUFHRUMsRUFBQSxDQUZDLEtBQU1oQyxFQUFBQSxNQUFBd0IsQ0FBQSxFQUFLLE1BQ1gsS0FBTXhCLEVBQUFBLE1BQUFFLENBQUEsRUFBSyxLQUFBIiwieF9nb29nbGVfaWdub3JlTGlzdCI6WzYxLDYyLDYzLDY0LDY1XX0=
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),Ge={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"}},xt={class:e.normalizeClass(["tide-divider"])},Ht=e.defineComponent({__name:"TideDivider",props:{orientation:{default:Ge.HORIZONTAL}},setup(n){const r=n;return(o,s)=>(e.openBlock(),e.createElementBlock("div",xt,[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).BORDER.COLOR.LOW,r.orientation===e.unref(Ge).HORIZONTAL?[e.unref(t).MARGIN.Y.HALF,e.unref(t).BORDER.BOTTOM.ONE,e.unref(t).WIDTH.FULL]:[e.unref(t).MARGIN.X.HALF,e.unref(t).BORDER.RIGHT.ONE,e.unref(t).HEIGHT.FULL]])},null,2)]))}}),S=(n,r)=>{const o=n.__vccOpts||n;for(const[s,l]of r)o[s]=l;return o},Ne=S(Ht,[["__scopeId","data-v-c2dc7d09"]]),Ze=(n,r,o)=>{const s=n[r];return s?typeof s=="function"?s():Promise.resolve(s):new Promise((l,i)=>{(typeof queueMicrotask=="function"?queueMicrotask:setTimeout)(i.bind(null,new Error("Unknown variable dynamic import: "+r+(r.split("/").length!==o?". Note that variables only represent file names one level deep.":""))))})},Et={AERO:"aero",ATV:"atv",BOATMART:"boatmart",CYCLE:"cycle",EQUIPMENT:"equipment",PWC:"pwc",RV:"rv",SNOW:"snow",TRUCK:"truck"},b={LARGE:"large",SMALL:"small"},Oe={LARGE:"large",SMALL:"small"},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},Xt=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,Yt=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},zt=n=>`$${n?K(n):String(n||"0")}`,D=e.defineComponent({__name:"TideIcon",props:{icon:{},size:{default:b.SMALL}},setup(n){const r=n,o=e.ref();return e.watch(()=>r.icon,async()=>{const s=r.icon,l=Xt(s),[i]=s.split("-"),a=Et[i==null?void 0:i.toUpperCase()],d=await(a?()=>Ze(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/${a}/Icon${l}.svg`,7):()=>Ze(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${l}.svg`,5))();o.value=e.markRaw(d.default)},{immediate:!0}),(s,l)=>(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"},Wt={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"}},qt={class:e.normalizeClass(["tide-accordion-item"])},$t=e.defineComponent({__name:"TideAccordionItem",props:e.mergeModels({hasBottomDivider:{type:Boolean,default:!1},hasTopDivider:{type:Boolean,default:!1},isOptional:{type:Boolean,default:!1},label:{}},{modelValue:{type:Boolean,required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const r=n,o=e.useModel(n,"modelValue"),s=()=>{o.value=!o.value};return(l,i)=>(e.openBlock(),e.createElementBlock("div",qt,[r.hasTopDivider?(e.openBlock(),e.createBlock(Ne,{key:0})):e.createCommentVNode("",!0),e.createElementVNode("button",{class:e.normalizeClass(["tide-accordion-head",e.unref(t).ALIGN.X.LEFT,e.unref(t).AXIS1.BETWEEN,e.unref(t).DISPLAY.FLEX,e.unref(t).PADDING.Y.HALF,e.unref(t).WIDTH.FULL]),onClick:s},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).FONT.ROLE.LABEL_1_SEMIBOLD])},[e.createElementVNode("span",null,e.toDisplayString(r.label),1),r.isOptional?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SURFACE.VARIANT])}," (optional) ",2)):e.createCommentVNode("",!0)],2),e.createVNode(D,{icon:o.value?e.unref(h).EXPAND_LESS:e.unref(h).EXPAND_MORE,size:e.unref(b).LARGE},null,8,["icon","size"])],2),e.createElementVNode("div",{class:e.normalizeClass(["tide-accordion-body",o.value?"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(l.$slots,"default",{},void 0,!0)],2)],2),r.hasBottomDivider?(e.openBlock(),e.createBlock(Ne,{key:1})):e.createCommentVNode("",!0)]))}}),Kt=S($t,[["__scopeId","data-v-8c88101f"]]),F={BUTTON:"button",LINK:"a"},H={BUTTON:"button",DIV:"div",LINK:"a"},mt={linkComponent:F.LINK},vt=Symbol("tide-config"),Qt=(n={})=>{const r={...mt,...n};e.provide(vt,r)},Zt=()=>e.inject(vt,mt),oe=e.defineComponent({__name:"InternalBaseLink",setup(n){const{linkComponent:r}=Zt();return(o,s)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(r)),null,{default:e.withCtx(()=>[e.renderSlot(o.$slots,"default")]),_:3}))}}),V={PRIMARY:"primary",SECONDARY:"secondary",TERTIARY:"tertiary",QUATERNARY:"quaternary",FLOATING:"floating"},Y={BLANK:"_blank",SELF:void 0},X=e.defineComponent({__name:"TideButtonIcon",props:{disabled:{type:Boolean,default:!1},element:{default:F.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===F.BUTTON?r.type??F.BUTTON:void 0),s=e.computed(()=>r.element===F.LINK?oe:r.element);return(l,i)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(s.value),{"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(F).LINK?[e.unref(t).UNDERLINE.REST.OFF]:""]),disabled:r.element===e.unref(F).BUTTON&&r.disabled,href:r.element===e.unref(F).LINK&&r.href?r.href:void 0,target:r.element===e.unref(F).LINK&&r.isNewTab?e.unref(Y).BLANK:e.unref(Y).SELF,type:o.value},{default:e.withCtx(()=>[r.icon?(e.openBlock(),e.createBlock(D,{key:0,icon:r.icon,size:e.unref(b).LARGE},null,8,["icon","size"])):e.createCommentVNode("",!0)]),_:1},8,["aria-label","class","disabled","href","target","type"]))}}),ge=e.defineComponent({__name:"TideLink",props:{element:{default:F.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,o=e.computed(()=>r.element===F.LINK?oe:r.element);return(s,l)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(o.value),{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(Y).BLANK:e.unref(Y).SELF,type:n.element===e.unref(F).BUTTON?e.unref(F).BUTTON:void 0},{default:e.withCtx(()=>[r.iconLeading?(e.openBlock(),e.createBlock(D,{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(D,{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"},jt=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,l=e.useSlots(),i=e.computed(()=>{var d;const u=(d=l.default)==null?void 0:d.call(l);return u?u.some(c=>c.type!==e.Comment&&(typeof c.children!="string"||c.children.trim().length>0)):!1}),a=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(D,{icon:a.value,size:e.unref(b).SMALL},null,8,["icon","size"])],2)),e.createElementVNode("div",{class:e.normalizeClass(["tide-alert-heading",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).FLEX.DIRECTION.ROW,i.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&&!i.value?(e.openBlock(),e.createBlock(ge,{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.LINK_2]),element:e.unref(F).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(X,{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&&i.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).MARGIN.TOP.HALF])},[o.ctaLabel?(e.openBlock(),e.createBlock(ge,{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.LINK_2]),element:e.unref(F).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))}}),Jt=S(jt,[["__scopeId","data-v-ef7f6cad"]]),z={BLACK:"black",BLUE:"blue",GREEN:"green",LIME:"lime",ORANGE:"orange",PURPLE:"purple",RED:"red",SALMON:"salmon",TEAL:"teal",YELLOW:"yellow"},Me={[z.BLACK]:{borderColor:t.BORDER.COLOR.HIGH,iconColor:t.FONT.COLOR.SURFACE.DEFAULT},[z.BLUE]:{borderColor:t.BORDER.COLOR.GLOBAL.BLUE,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.BLUE},[z.GREEN]:{borderColor:t.BORDER.COLOR.GLOBAL.GREEN,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.GREEN},[z.LIME]:{borderColor:t.BORDER.COLOR.GLOBAL.LIME,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.LIME},[z.ORANGE]:{borderColor:t.BORDER.COLOR.GLOBAL.ORANGE,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.ORANGE},[z.PURPLE]:{borderColor:t.BORDER.COLOR.GLOBAL.PURPLE,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.PURPLE},[z.RED]:{borderColor:t.BORDER.COLOR.GLOBAL.RED,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.RED},[z.SALMON]:{borderColor:t.BORDER.COLOR.GLOBAL.SALMON,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.SALMON},[z.TEAL]:{borderColor:t.BORDER.COLOR.GLOBAL.TEAL,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.TEAL},[z.YELLOW]:{borderColor:t.BORDER.COLOR.GLOBAL.YELLOW,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.YELLOW}},Ot={YEARS_10:"10",YEARS_15:"15",YEARS_20:"20",YEARS_25:"25",YEARS_30:"30",YEARS_35:"35",YEARS_5:"5"},en=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(Me)[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(D,{key:0,class:e.normalizeClass([e.unref(t).FLEX.SHRINK.OFF,r.color&&e.unref(Me)[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))}}),tn=e.defineComponent({__name:"TideBadgeTrustedPartner",props:{years:{default:Ot.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(D,{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))}}),nn=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(D,{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))}}),rn=S(nn,[["__scopeId","data-v-c6d1b806"]]),on=["data-track"],sn={key:0},ln=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,(l,i)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:l.label},[e.createElementVNode("li",{class:e.normalizeClass([e.unref(t).FONT.ROLE.BODY_2])},[l.url?(e.openBlock(),e.createBlock(oe,{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.LINK_2,e.unref(t).FONT.COLOR.SURFACE.DEFAULT]),"data-track":l.dataTrack||void 0,href:l.url},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(l.label),1)]),_:2},1032,["class","data-track","href"])):(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":l.dataTrack||void 0},e.toDisplayString(l.label),11,on))],2),r.breadCrumbs&&i<r.breadCrumbs.length-1?(e.openBlock(),e.createElementBlock("li",sn,[e.createVNode(D,{icon:e.unref(h).ARROW_RIGHT,size:e.unref(b).SMALL},null,8,["icon","size"])])):e.createCommentVNode("",!0)],64))),128))],2))}}),an=e.defineComponent({__name:"TideButton",props:{disabled:{type:Boolean,default:!1},element:{default:F.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:Oe.LARGE},type:{default:void 0}},setup(n){const r=n,o=e.computed(()=>r.element===F.BUTTON?r.type??F.BUTTON:void 0),s=e.computed(()=>r.element===F.LINK?oe:r.element);return(l,i)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(s.value),{class:e.normalizeClass(["tide-button",r.priority&&`tide-button-${r.priority}`,r.element===e.unref(F).LINK?[e.unref(t).DISPLAY.INLINE_FLEX]:[e.unref(t).DISPLAY.FLEX],r.element===e.unref(F).LINK?e.unref(t).UNDERLINE.REST.OFF:"",n.size===e.unref(Oe).SMALL?[e.unref(t).FONT.ROLE.BUTTON_2,e.unref(t).PADDING.X.ONE,e.unref(t).PADDING.Y.HALF,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(F).BUTTON&&r.disabled,href:r.element===e.unref(F).LINK&&r.href?r.href:void 0,target:r.element===e.unref(F).LINK&&r.isNewTab?e.unref(Y).BLANK:e.unref(Y).SELF,type:o.value},{default:e.withCtx(()=>[r.iconLeading?(e.openBlock(),e.createBlock(D,{key:0,icon:r.iconLeading,size:n.size===e.unref(Oe).LARGE?e.unref(b).LARGE:e.unref(b).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString(r.label)+" ",1),r.iconTrailing?(e.openBlock(),e.createBlock(D,{key:1,icon:r.iconTrailing,size:n.size===e.unref(Oe).LARGE?e.unref(b).LARGE:e.unref(b).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0)]),_:1},8,["class","disabled","href","target","type"]))}}),un=e.defineComponent({__name:"TideButtonPagination",props:{disabled:{type:Boolean,default:!1},element:{default:H.BUTTON},href:{default:void 0},label:{default:void 0}},setup(n){const r=n,o=e.computed(()=>r.element===F.LINK?oe:r.element);return(s,l)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(o.value),{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(H).LINK?[e.unref(t).UNDERLINE.REST.OFF]:"",r.element===e.unref(H).DIV?[e.unref(t).CURSOR.POINTER]:"",[e.unref(t).FONT.ROLE.HEADLINE_3]]),disabled:r.element===e.unref(H).BUTTON&&r.disabled,href:r.element===e.unref(H).LINK&&r.href?r.href:void 0,type:n.element===e.unref(H).BUTTON?e.unref(H).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"]))}}),Lt=S(un,[["__scopeId","data-v-c2c8d6bb"]]),cn=["data-track","onClick"],dn=e.defineComponent({__name:"TideButtonSegmented",props:e.mergeModels({tabs:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const r=e.useModel(n,"modelValue"),o=s=>{r.value=s};return(s,l)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-button-segmented",e.unref(t).BG.SURFACE.VARIANT,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.SHRINK.OFF,e.unref(t).GAP.QUARTER,e.unref(t).OVERFLOW.XY.AUTO,e.unref(t).PADDING.FULL.QUARTER])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.tabs,(i,a)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["tide-button-segmented-tab",a===r.value?[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).BORDER.FULL.TWO,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).FLEX.GROW.ON,e.unref(t).FONT.ROLE.BUTTON_1,e.unref(t).PADDING.X.HALF,e.unref(t).PADDING.Y.QUARTER,e.unref(t).WHITESPACE_WRAP.OFF,e.unref(t).WIDTH.FULL]),"data-track":i.dataTrack||void 0,key:i.label,onClick:u=>o(a),type:"button"},[e.createElementVNode("span",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_2_SEMIBOLD])},e.toDisplayString(i.label),3),i.count&&i.count>0?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_2_SEMIBOLD])}," ("+e.toDisplayString(i.count)+") ",3)):e.createCommentVNode("",!0)],10,cn))),128))],2))}}),fn=S(dn,[["__scopeId","data-v-a67a4351"]]),Le={ACTIONABLE:"action",INFORMATIONAL:"informational",SELECTABLE:"select"},En=e.defineComponent({__name:"TideCard",props:{description:{default:void 0},heading:{},icon:{default:void 0},selected:{type:Boolean,default:void 0},type:{default:Le.INFORMATIONAL},href:{default:void 0}},setup(n){const r=n,o=e.computed(()=>r.href?oe:(r.type===Le.INFORMATIONAL,H.DIV));return(s,l)=>(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(Le).INFORMATIONAL&&"hoverable",n.type===e.unref(Le).SELECTABLE&&n.selected&&"selected"]),href:n.href,type:o.value===e.unref(H).BUTTON?e.unref(H).BUTTON:void 0},{default:e.withCtx(()=>[n.icon?(e.openBlock(),e.createBlock(D,{key:0,class:e.normalizeClass([e.unref(t).FLEX.GROW.OFF,e.unref(t).FLEX.SHRINK.OFF]),icon:n.icon,size:e.unref(b).SMALL},null,8,["class","icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).AXIS2.START,e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.HALF])},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_1_SEMIBOLD,e.unref(t).FONT.COLOR.SURFACE.DEFAULT])},e.toDisplayString(n.heading),3),n.description?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_2,e.unref(t).FONT.COLOR.SURFACE.VARIANT])},e.toDisplayString(n.description),3)):e.createCommentVNode("",!0)],2)]),_:1},8,["class","href","type"]))}}),mn=S(En,[["__scopeId","data-v-910f5dcd"]]),vn=16,je=8,Je=8,On=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,s=r,l=e.ref(null),i=e.ref(0),a=e.ref(0),u=e.ref(null),d=e.ref(0),c=e.ref(!0),f=e.ref(!1),m=e.ref(!0),v=e.ref(null),E=e.ref([]),O=e.ref([]),A=e.ref(null),R=e.computed(()=>a.value+1),T=e.computed(()=>L.value*Je+(L.value-1)*je),L=e.computed(()=>o.maxDots>I.value?I.value:o.maxDots),N=e.computed(()=>I.value-1),I=e.computed(()=>{if(!E.value.length)return 0;if(!o.isScrollByPage)return E.value.length;const P=vn*(E.value.length-1),y=i.value-P,_=Math.round(y/d.value);return y%d.value?_+1:_}),p=P=>{let y="";return P===a.value&&(y="tide-carousel-dot-active"),Math.abs(a.value-P)===1&&(y="tide-carousel-dot-neighbor"),y},g=()=>{l.value&&(i.value=l.value.scrollWidth,d.value=l.value.clientWidth,m.value=i.value>d.value)},C=()=>{const P={root:l==null?void 0:l.value,rootMargin:"0px 1px 0px 0px",threshold:1};v.value=new IntersectionObserver(y=>{let _=[];y.forEach(J=>{const Ue=E.value.indexOf(J.target);J.isIntersecting?(_.push(Ue),O.value.push(Ue)):O.value=O.value.filter(_e=>_e!==Ue),O.value.sort((_e,Mt)=>_e-Mt)}),c.value=O.value.includes(0),f.value=O.value.includes(E.value.length-1),_.length>0&&s("slidesAddedToView",_)},P),E.value.forEach(y=>{v.value&&v.value.observe(y)})},w=()=>{const P=()=>{l.value!==null&&(E.value=Array.from(l.value.children),C())};A.value=new MutationObserver(P),l.value&&A.value.observe(l.value,{childList:!0})},x=P=>{if(l.value===null)return;const y=E.value[E.value.length-1].offsetLeft,J=P/y*N.value<=a.value;a.value=J?a.value-1:a.value+1,l.value.scrollTo({behavior:"smooth",left:P}),Gt(J)},B=()=>{if(O.value.length===0)return;const P=O.value[O.value.length-1]+1;x(E.value[P].offsetLeft)},k=()=>{var y;if(O.value.length===0)return;const P=O.value[0]-O.value.length;x(((y=E.value[P])==null?void 0:y.offsetLeft)||0)},$=()=>{if(O.value.length===0)return;const P=O.value.length>1?O.value[1]:O.value[0]+1;x(E.value[P].offsetLeft)},Ie=()=>{if(O.value.length===0)return;const P=O.value[0]-1;x(E.value[P].offsetLeft)},Gt=P=>{if(!u.value||L.value>=I.value)return;const _=L.value%2!==0||P?Math.floor(L.value/2)+1:Math.floor(L.value/2);u.value.scrollTo({behavior:"smooth",left:R.value<_?0:(R.value-_)*(Je+je)})};return e.onMounted(()=>{l.value!==null&&(E.value=Array.from(l.value.children),g(),C(),w(),window&&window.addEventListener("resize",g))}),e.onUnmounted(()=>{var P,y;(P=v.value)==null||P.disconnect(),(y=A.value)==null||y.disconnect(),window.removeEventListener("resize",g)}),(P,y)=>(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&&m.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&&m.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(X,{disabled:c.value,icon:e.unref(h).CHEVRON_LEFT,priority:e.unref(V).TERTIARY,onClick:y[0]||(y[0]=_=>n.isScrollByPage?k():Ie())},null,8,["disabled","icon","priority"]),e.createVNode(X,{disabled:f.value,icon:e.unref(h).CHEVRON_RIGHT,priority:e.unref(V).TERTIARY,onClick:y[1]||(y[1]=_=>n.isScrollByPage?B():$())},null,8,["disabled","icon","priority"])],2)):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0),e.renderSlot(P.$slots,"misc",{},void 0,!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).POSITION.RELATIVE,e.unref(t).DISPLAY.FLEX])},[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:l},[e.renderSlot(P.$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:u},[(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&&m.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(X,{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:y[2]||(y[2]=_=>n.isScrollByPage?k():Ie())},null,8,["class","disabled","icon","priority"]),e.createVNode(X,{class:e.normalizeClass([e.unref(t).MARGIN.RIGHT.ONE,e.unref(t).POINTER_EVENTS.ON]),disabled:f.value,icon:e.unref(h).CHEVRON_RIGHT,priority:e.unref(V).QUATERNARY,onClick:y[3]||(y[3]=_=>n.isScrollByPage?B():$())},null,8,["class","disabled","icon","priority"])],2)):e.createCommentVNode("",!0)],2)],2))}}),Rt=S(On,[["__scopeId","data-v-984fc872"]]),Ln=e.defineComponent({__name:"TideChipAction",props:{element:{default:F.LINK},href:{default:void 0},isNewTab:{type:Boolean,default:!1},label:{}},setup(n){const r=n,o=e.computed(()=>r.element===F.LINK?oe:r.element);return(s,l)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(o.value),{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(Y).BLANK:e.unref(Y).SELF,type:n.element===e.unref(F).BUTTON?e.unref(F).BUTTON:void 0},{default:e.withCtx(()=>[e.createVNode(D,{icon:e.unref(h).SEARCH},null,8,["icon"]),e.createElementVNode("span",null,e.toDisplayString(r.label),1)]),_:1},8,["class","href","target","type"]))}}),Rn=S(Ln,[["__scopeId","data-v-e16b3c85"]]),An=e.defineComponent({__name:"TideChipFilter",props:e.mergeModels({label:{}},{modelValue:{type:Boolean,required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const r=e.useModel(n,"modelValue"),o=()=>{r.value=!r.value};return(s,l)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["tide-chip-filter",r.value?["active",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]),onClick:o,type:"button"},[e.renderSlot(s.$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([e.unref(t).FONT.ROLE.LABEL_1,e.unref(t).WHITESPACE_WRAP.OFF])},e.toDisplayString(n.label),3)],2)],2))}}),Tn=S(An,[["__scopeId","data-v-d89702d4"]]),In=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]),type:"button"},[e.createElementVNode("span",null,e.toDisplayString(r.label),1),e.createVNode(D,{icon:e.unref(h).CLOSE},null,8,["icon"])],2))}}),pn=S(In,[["__scopeId","data-v-ebaa5f06"]]),Nn={class:"tide-columns"},gn={class:"tide-columns-column"},Cn={class:"tide-columns-column"},hn={class:"tide-columns-column"},Sn={class:"tide-columns-column"},Fn=e.defineComponent({__name:"TideColumns",props:{heading:{default:""}},setup(n){const r=n;return(o,s)=>(e.openBlock(),e.createElementBlock("section",Nn,[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",gn,[e.renderSlot(o.$slots,"section1",{},void 0,!0)]),e.createElementVNode("li",Cn,[e.renderSlot(o.$slots,"section2",{},void 0,!0)]),e.createElementVNode("li",hn,[e.renderSlot(o.$slots,"section3",{},void 0,!0)]),e.createElementVNode("li",Sn,[e.renderSlot(o.$slots,"section4",{},void 0,!0)])],2)]))}}),Dn=S(Fn,[["__scopeId","data-v-c92a6639"]]),At=Symbol("tide-form"),Tt=()=>{const n=e.ref(!1);return e.provide(At,{forceShowErrors:n}),{revealValidationErrors:()=>{n.value=!0}}},Fe=()=>e.inject(At),Bn=e.defineComponent({__name:"TideForm",emits:["submit"],setup(n,{emit:r}){const o=r,{revealValidationErrors:s}=Tt(),l=i=>{s(),o("submit",i)};return(i,a)=>(e.openBlock(),e.createElementBlock("form",{onSubmit:e.withModifiers(l,["prevent"]),novalidate:""},[e.renderSlot(i.$slots,"default")],32))}}),le={CONTAIN:"contain",COVER:"cover",SCALE_DOWN:"scale-down"},yn=["media","srcset"],Pn=["alt","fetchpriority","height","loading","src","width"],Ve="https://cdn-static.tilabs.io/marketplace/common/image-coming-soon.svg",bn=e.defineComponent({__name:"TideImage",props:{alt:{default:""},height:{default:void 0},isLazy:{type:Boolean,default:!0},objectFit:{default:le.COVER},sources:{default:()=>[]},src:{default:void 0},width:{default:void 0}},setup(n){const r=n,o=e.ref(),s=e.ref(),l=e.computed(()=>{switch(r.objectFit){case le.CONTAIN:return t.OBJECT.CONTAIN;case le.COVER:return t.OBJECT.COVER;case le.SCALE_DOWN:return t.OBJECT.SCALE_DOWN;default:return le.COVER}}),i=()=>{var d,c;const a=(d=s.value)==null?void 0:d.currentSrc,u=(c=o.value)==null?void 0:c.querySelector(`source[srcset="${a}"]`);a&&u?u.srcset=Ve:s.value&&(s.value.src=Ve)};return(a,u)=>(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,yn))),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,l.value]),fetchpriority:n.isLazy?void 0:"high",height:r.height,loading:r.isLazy?"lazy":"eager",ref_key:"img",ref:s,src:n.src??Ve,width:r.width,onError:i},null,42,Pn)],2))}}),It=S(bn,[["__scopeId","data-v-3841f1c1"]]),kn=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(It,{alt:r.alt,class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).HEIGHT.FULL]),"is-lazy":r.isLazy,"object-fit":e.unref(le).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))}}),Un=S(kn,[["__scopeId","data-v-8f2f8198"]]),_n={key:0,class:e.normalizeClass(["tide-indicator-label"])},Vn=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",_n,e.toDisplayString(r.label),1)):e.createCommentVNode("",!0)],2))}}),wn=S(Vn,[["__scopeId","data-v-d402ac82"]]),De=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(D,{key:0,class:e.normalizeClass([e.unref(t).FLEX.SHRINK.OFF]),icon:e.unref(h).ERROR,size:e.unref(b).SMALL},null,8,["class","icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",null,e.toDisplayString(n.message),1)],2))}}),pt="Please enter a valid value",ee={NO_ERROR:{message:"",valid:!0},REQUIRED:{message:"Please fill out this field",valid:!1}},ce=(n,r)=>o=>{let s=ee.NO_ERROR;return o.trim().match(n)||(s={message:r??pt,valid:!1}),s},Gn=({maxlength:n,minlength:r,required:o,value:s})=>{const l=s.length===0&&!o,i=n&&s.length>n;return!(!l&&r&&s.length<r)&&!i},He=({errorFromProps:n,maxlength:r,minlength:o,required:s,validators:l,value:i})=>{var a;if(n!=="")return{message:n,valid:!1};if(l){const u=xn(i.value,l);if(!u.valid)return u}if(s&&((a=i.value)==null?void 0:a.trim())==="")return ee.REQUIRED;if(r||o){const u=Mn({maxlength:r,minlength:o,required:s,value:i.value});if(!u.valid)return u}return ee.NO_ERROR},Mn=({maxlength:n,minlength:r,required:o,value:s})=>{const l={message:"",valid:!0};return l.valid=Gn({maxlength:n,minlength:r,required:o,value:s}),l.valid||(l.message=pt,n&&r?l.message=`Enter a value between ${K(r)} and ${K(n)} characters`:n?l.message=`Use ${K(n)} characters or fewer`:r&&(l.message=`Enter at least ${K(r)} characters`)),l};function xn(n,r){for(const o of r){const s=o(n);if(!s.valid)return s}return{message:"",valid:!0}}const Hn=["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,l=e.useModel(n,"modelValue"),i=Fe(),a=e.ref(!1),u=e.ref(ee.NO_ERROR),d=e.computed(()=>o.required?`${o.label} *`:o.label),c=e.computed(()=>l.value||o.indeterminate),f=e.computed(()=>m.value?!0:a.value?!u.value.valid:!1),m=e.computed(()=>o.error!==""),v=e.computed(()=>f.value&&u.value.message),E=()=>o.error!==""?{message:o.error,valid:!1}:!o.required||c.value?ee.NO_ERROR:ee.REQUIRED;return e.watchEffect(()=>{u.value=E()}),e.watch(l,()=>{l.value&&(a.value=!0)},{immediate:!0}),e.watch(()=>i==null?void 0:i.forceShowErrors.value,O=>{O&&(a.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,f.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]])},[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=>l.value=R)},null,8,Hn),[[e.vModelCheckbox,l.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?[f.value?e.unref(t).BG.GLOBAL.PRIMARY.ERROR:[e.unref(t).BG.SECONDARY,e.unref(t).BORDER.COLOR.HIGH]]:[f.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(D,{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SECONDARY]),icon:n.indeterminate?e.unref(h).REMOVE:e.unref(h).CHECK,size:e.unref(b).SMALL},null,8,["class","icon","size"])):e.createCommentVNode("",!0)],2),n.label?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).AXIS1.BETWEEN,e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.GROW.ON,e.unref(t).FONT.ROLE.BODY_1])},[e.createElementVNode("span",null,e.toDisplayString(d.value),1),n.number?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SURFACE.VARIANT])}," ("+e.toDisplayString(e.unref(K)(n.number))+") ",3)):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0)],2),v.value?(e.openBlock(),e.createBlock(De,{key:0,message:v.value,"is-error":""},null,8,["message"])):e.createCommentVNode("",!0)],2))}}),Yn=S(Xn,[["__scopeId","data-v-31774f71"]]),zn=["checked","disabled","name","id"],Wn=["for"],qn={},$n=e.defineComponent({...qn,__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,l)=>(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:l[0]||(l[0]=e.withModifiers(()=>{},["prevent"])),id:r.inputId,type:"checkbox"},null,10,zn),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(D,{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(b).SMALL},null,8,["class","icon","size"])):e.createCommentVNode("",!0)],2),n.label?(e.openBlock(),e.createElementBlock("label",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.BETWEEN,e.unref(t).FLEX.GROW.ON,e.unref(t).FONT.ROLE.BODY_1,n.disabled?e.unref(t).CURSOR.NOT_ALLOWED:e.unref(t).CURSOR.POINTER]),for:r.inputId,onClick:l[1]||(l[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,Wn)):e.createCommentVNode("",!0)],2))}}),Kn=S($n,[["__scopeId","data-v-345366c5"]]),Qn=["for"],Zn=["disabled","name","value","id"],jn=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(l,i)=>(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":i[0]||(i[0]=a=>o.value=a)},null,8,Zn),[[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(K)(r.number))+") ",3)):e.createCommentVNode("",!0)],2)],10,Qn))}}),Jn=S(jn,[["__scopeId","data-v-33fad71e"]]),er=["checked","id"],tr=["for"],nr={},rr=e.defineComponent({...nr,__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,l)=>{(s!==l||s!==o.value)&&(o.value=s)}),(s,l)=>(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,er),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,tr)],2))}}),or=S(rr,[["__scopeId","data-v-bde66757"]]),sr={NUMBER:K,PHONE:Yt,PRICE:zt},se={alpha:/^[a-zA-Z]+$/g,alphaNumberOrEmpty:/^$|^[a-z0-9]+$/i,alphaSpace:/^[a-zA-Z ]+$/g,email:/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,numberFormatted:/^$|(?=.)^\$?(([1-9][0-9]{0,2}(,[0-9]{3})*)|0)?(\.[0-9]{1,2})?$/,phone:/^(?:\d{3}-\d{3}-\d{4}|\d{1}-\d{3}-\d{3}-\d{4})?$/,price:/(?=.)^\$?(([1-9][0-9]{0,2}(,[0-9]{3})*)|0)?(\.[0-9]{1,2})?$/,zip:/^\d{5}$/},lr={ALPHA_NUMBER_EMPTY:ce(se.alphaNumberOrEmpty),ALPHA_SPACE:ce(se.alphaSpace),EMAIL:ce(se.email,"Enter a valid email address (e.g. name@example.com)"),NUMBER:ce(se.numberFormatted,"Enter a valid number"),PHONE:ce(se.phone,"Enter a valid phone number"),ZIP:ce(se.zip,"Enter a valid Zip code")},te={EAGER:"eager",LAZY:"lazy"},ar=["for"],ir=["disabled","name","required","id"],ur=["label"],cr=["value"],dr=["selected","value"],fr=["selected","value"],Er=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,l=e.useModel(n,"modelValue"),i=Fe(),a=e.ref(ee.NO_ERROR),u=e.ref(!1),d=e.useId(),c=e.ref(!1),f=e.ref(null),m=e.computed(()=>o.required?`${o.label} *`:o.label),v=e.computed(()=>E.value?!0:c.value?!a.value.valid:!1),E=e.computed(()=>o.error!==""),O=e.computed(()=>u.value||!A.value),A=e.computed(()=>l.value===""),R=e.computed(()=>v.value&&a.value.message||o.supportingText),T=()=>{var p;const I=new MouseEvent("mousedown");(p=f==null?void 0:f.value)==null||p.dispatchEvent(I)},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(()=>{a.value=He({errorFromProps:o.error,required:o.required,value:l})}),e.watch(()=>i==null?void 0:i.forceShowErrors.value,I=>{I&&(c.value=!0)},{immediate:!0}),e.watch(a,()=>{s("valid",a.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(m.value),11,ar)):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:f,required:n.required,onFocus:L,onFocusout:N,id:e.unref(d),"onUpdate:modelValue":p[0]||(p[0]=g=>l.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,cr))),128))],10,ur)):(e.openBlock(),e.createElementBlock("option",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:g.value,selected:l.value===g.value?!0:void 0,value:g.value},e.toDisplayString(g.label),11,dr))],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:l.value===g.value?!0:void 0,value:g.value},e.toDisplayString(g.label),11,fr))),128))],42,ir),[[e.vModelSelect,l.value]])],2),e.createVNode(D,{class:e.normalizeClass([e.unref(t).POSITION.ABSOLUTE,e.unref(t).POSITIONING.RIGHT,e.unref(t).MARGIN.RIGHT.ONE,e.unref(t).POINTER_EVENTS.OFF]),icon:e.unref(h).EXPAND_MORE,size:e.unref(b).SMALL},null,8,["class","icon","size"])],2),R.value?(e.openBlock(),e.createBlock(De,{key:0,"is-error":v.value,message:R.value},null,8,["is-error","message"])):e.createCommentVNode("",!0)],2))}}),mr=S(Er,[["__scopeId","data-v-ba0a10fe"]]),Nt="Please enter a valid value.",Xe=(n,r)=>typeof n=="string"&&n.length>0?n:typeof r=="string"&&r.length>0?r:Nt,Ye=(n,r)=>n!==!1||r!==!1,vr=({maxlength:n,minlength:r,required:o,value:s})=>{const l=s.length===0&&!o,i=n&&s.length>n;return!(!l&&r&&s.length<r)&&!i},gt=({error:n,errorFromProps:r,maxlength:o,minlength:s,required:l=!1,validators:i,value:a})=>{if(n.value=r||!1,!n.value&&i){const u=Lr((a==null?void 0:a.value)||"",i);u.valid||(n.value=u.message)}if(!n.value&&(o||s)){const u=Or({maxlength:o,minlength:s,required:l,value:(a==null?void 0:a.value)||""});u.valid||(n.value=u.message)}},Or=({maxlength:n,minlength:r,required:o=!1,value:s})=>{const l={message:"",valid:!0};return l.valid=vr({maxlength:n,minlength:r,required:o,value:s}),l.valid||(l.message=Nt,n&&r?l.message=`Please enter a value between ${r} and ${n} characters in length.`:n?l.message=`Please enter a value no more than ${n} characters in length.`:r&&(l.message=`Please enter a value no less than ${r} characters in length.`)),l};function Lr(n,r){for(const o of r){const s=o(n);if(!s.valid)return s}return{message:"",valid:!0}}const Rr=["for"],Ar=["disabled","name","required","id"],Tr=["label"],Ir=["value"],pr=["selected","value"],Nr=["selected","value"],gr={},Cr=e.defineComponent({...gr,__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),l=e.ref(!1),i=e.ref(null),a=e.ref(o.required),u=e.ref(o.value),d=e.computed(()=>Xe(o.error,s.value)),c=e.computed(()=>o.required?`${o.label} *`:o.label),f=e.computed(()=>o.required&&!u.value||Ye(s.value,o.error)),m=e.computed(()=>l.value||!v.value),v=e.computed(()=>u.value===void 0),E=()=>{var T;const R=new MouseEvent("mousedown");(T=i==null?void 0:i.value)==null||T.dispatchEvent(R)},O=()=>{l.value=!0},A=()=>{l.value=!1};return e.watch(()=>o.value,(R,T)=>{(R!==T||R!==u.value)&&(u.value=R)}),r({error:s,value:u}),(R,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",f.value&&"error"])},[e.createElementVNode("div",{class:e.normalizeClass(["tide-input-border",e.unref(t).POSITION.RELATIVE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).BG.SURFACE.DEFAULT,o.disabled?e.unref(t).CURSOR.NOT_ALLOWED:"",e.unref(t).OVERFLOW.XY.HIDDEN]),onClick:E},[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([m.value?["minilabel",e.unref(t).FONT.ROLE.LABEL_3]:e.unref(t).FONT.ROLE.LABEL_1,e.unref(t).POSITION.ABSOLUTE,e.unref(t).POSITIONING.LEFT,e.unref(t).MARGIN.TOP.HALF,e.unref(t).MARGIN.LEFT.ONE,!f.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,e.unref(t).POINTER_EVENTS.OFF]),for:o.inputId},e.toDisplayString(c.value),11,Rr)):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:i,required:a.value,onFocus:O,onFocusout:A,id:o.inputId,"onUpdate:modelValue":T[0]||(T[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,Ir))),128))],10,Tr)):(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,pr))],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,Nr))),128))],42,Ar),[[e.vModelSelect,u.value]])],2),e.createVNode(D,{class:e.normalizeClass([e.unref(t).POSITION.ABSOLUTE,e.unref(t).POSITIONING.RIGHT,e.unref(t).MARGIN.RIGHT.ONE,e.unref(t).POINTER_EVENTS.OFF]),icon:e.unref(h).EXPAND_MORE,size:e.unref(b).SMALL},null,8,["class","icon","size"])],2),o.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(D,{key:0,class:e.normalizeClass([]),icon:e.unref(h).ERROR,size:e.unref(b).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_3])},e.toDisplayString(f.value?d.value:o.supportingText),3)],2)):e.createCommentVNode("",!0)],2))}}),hr=S(Cr,[["__scopeId","data-v-4cfaa9a8"]]),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"},de={DECIMAL:"decimal",EMAIL:"email",NUMERIC:"numeric",SEARCH:"search",TEL:"tel",TEXT:"text",URL:"url"},Sr=(n,r)=>{if(r)return r;switch(n){case U.TEL:return de.TEL;case U.SEARCH:return de.SEARCH;case U.NUMBER:return de.NUMERIC;case U.EMAIL:return de.EMAIL;case U.URL:return de.URL}},Fr=["for"],Dr=["autocomplete","disabled","inputmode","maxlength","minlength","name","required","type","id"],Br=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,l=e.useModel(n,"modelValue"),i=Fe(),a=e.ref(ee.NO_ERROR),u=e.ref(!1),d=e.ref(null),c=e.ref(!1),f=e.ref(!1),m=e.computed(()=>o.required&&o.label?`${o.label} *`:o.label),v=e.computed(()=>E.value?!0:c.value?!a.value.valid:!1),E=e.computed(()=>o.error!==""),O=e.computed(()=>u.value||!T.value),A=e.computed(()=>Sr(o.type,o.inputmode)),R=e.computed(()=>o.type===U.PASSWORD&&f.value===!0?U.TEXT:o.type),T=e.computed(()=>l.value===""),L=e.computed(()=>o.hasClear&&l.value&&o.type!==U.PASSWORD),N=e.computed(()=>o.type===U.PASSWORD),I=e.computed(()=>v.value&&a.value.message||o.supportingText),p=()=>{var B;l.value="",(B=d.value)==null||B.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 B;(B=d.value)==null||B.focus()},x=B=>{u.value&&B.target!==d.value&&B.preventDefault()};return e.watchEffect(()=>{a.value=He({errorFromProps:o.error,maxlength:o.maxlength,minlength:o.minlength,required:o.required,validators:o.validators,value:l})}),e.watch([l,()=>o.transformValue],()=>{var k,$;if(!o.transformValue)return;const B=(($=(k=l.value)==null?void 0:k.match(/\d/g))==null?void 0:$.join(""))||void 0;l.value=B?o.transformValue(B):""},{immediate:!0}),e.watch(()=>i==null?void 0:i.forceShowErrors.value,B=>{B&&(c.value=!0)},{immediate:!0}),e.watch(a,()=>{s("valid",a.value.valid)},{deep:!0,immediate:!0}),(B,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:x},[n.iconLeading?(e.openBlock(),e.createBlock(D,{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SURFACE.VARIANT]),icon:n.iconLeading,size:e.unref(b).SMALL},null,8,["class","icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).WIDTH.FULL])},[n.prefix?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["tide-input-text-prefix",e.unref(t).FONT.ROLE.BODY_1,!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(m.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]=$=>l.value=$)},null,42,Dr),[[e.vModelDynamic,l.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,type:"button"},[e.createVNode(D,{class:e.normalizeClass([e.unref(t).MARGIN.FULL.HALF]),icon:e.unref(h).CLOSE,size:e.unref(b).SMALL},null,8,["class","icon","size"])])):e.createCommentVNode("",!0),N.value?(e.openBlock(),e.createElementBlock("button",{key:2,onClick:k[1]||(k[1]=$=>f.value=!f.value),type:"button"},[e.createVNode(D,{class:e.normalizeClass([e.unref(t).MARGIN.FULL.HALF]),icon:e.unref(h).VISIBILITY,size:e.unref(b).SMALL},null,8,["class","icon","size"])])):e.createCommentVNode("",!0)],42,Fr),I.value?(e.openBlock(),e.createBlock(De,{key:0,"is-error":v.value,message:I.value},null,8,["is-error","message"])):e.createCommentVNode("",!0)],2))}}),yr=S(Br,[["__scopeId","data-v-dd74fdf0"]]),Pr=["for"],br=["autocomplete","disabled","maxlength","minlength","name","required","type","id"],kr={},Ur=e.defineComponent({...kr,__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),l=e.ref(!1),i=e.ref(null),a=e.ref(!1),u=e.ref(o.value),d=e.computed(()=>Xe(o.error,s.value)),c=e.computed(()=>o.required&&o.label?`${o.label} *`:o.label),f=e.computed(()=>o.hasClear&&u.value),m=e.computed(()=>o.required&&u.value!==void 0&&!u.value||Ye(s.value,o.error)),v=e.computed(()=>l.value||!E.value),E=e.computed(()=>u.value===""||u.value===void 0),O=e.computed(()=>o.type===U.PASSWORD&&a.value===!0?U.TEXT:o.type),A=()=>{var p;u.value="",(p=i.value)==null||p.focus()},R=()=>{l.value=!0},T=()=>{l.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=()=>{gt({error:s,errorFromProps:o.error,maxlength:o.maxlength,minlength:o.minlength,required:o.required,validators:o.validators,value:u})},I=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:I,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",m.value&&"error"])},[e.createElementVNode("label",{class:e.normalizeClass(["tide-input-text-field",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).POSITION.RELATIVE,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).BG.SURFACE.DEFAULT,f.value?[e.unref(t).PADDING.RIGHT.HALF,e.unref(t).PADDING.LEFT.ONE]:[e.unref(t).PADDING.X.ONE],e.unref(t).PADDING.Y.HALF,n.disabled?e.unref(t).CURSOR.NOT_ALLOWED:e.unref(t).CURSOR.TEXT]),for:n.inputId},[n.iconLeading?(e.openBlock(),e.createBlock(D,{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SURFACE.VARIANT]),icon:n.iconLeading,size:e.unref(b).SMALL},null,8,["class","icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).WIDTH.FULL])},[n.prefix?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["tide-input-text-prefix",e.unref(t).FONT.ROLE.BODY_1,!m.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,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,!m.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:i,required:n.required,type:O.value,onChange:N,onFocus:R,onFocusout:T,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,!m.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,v.value?"":"offset"])},e.toDisplayString(n.suffix),3)):e.createCommentVNode("",!0)],2),f.value&&n.type!==e.unref(U).PASSWORD?(e.openBlock(),e.createElementBlock("button",{key:1,onClick:A,type:"button"},[e.createVNode(D,{class:e.normalizeClass([e.unref(t).MARGIN.FULL.HALF]),icon:e.unref(h).CLOSE,size:e.unref(b).SMALL},null,8,["class","icon","size"])])):e.createCommentVNode("",!0),n.type===e.unref(U).PASSWORD?(e.openBlock(),e.createElementBlock("button",{key:2,onClick:g[1]||(g[1]=C=>a.value=!a.value),type:"button"},[e.createVNode(D,{class:e.normalizeClass([e.unref(t).MARGIN.FULL.HALF]),icon:e.unref(h).VISIBILITY,size:e.unref(b).SMALL},null,8,["class","icon","size"])])):e.createCommentVNode("",!0)],10,Pr),n.supportingText||m.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])},[m.value?(e.openBlock(),e.createBlock(D,{key:0,class:e.normalizeClass([]),icon:e.unref(h).ERROR,size:e.unref(b).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_3])},e.toDisplayString(m.value?d.value:n.supportingText),3)],2)):e.createCommentVNode("",!0)],2))}}),_r=S(Ur,[["__scopeId","data-v-dbb301e9"]]),Vr=["for"],wr=["maxlength","minlength","name","required","rows","id"],Gr=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,l=e.useModel(n,"modelValue"),i=Fe(),a=e.ref(ee.NO_ERROR),u=e.ref(!1),d=e.ref(!1),c=e.ref(null),f=e.computed(()=>o.required?`${o.label} *`:o.label),m=e.computed(()=>v.value?!0:d.value?!a.value.valid:!1),v=e.computed(()=>o.error!==""),E=e.computed(()=>u.value||!O.value),O=e.computed(()=>l.value===""),A=e.computed(()=>m.value&&a.value.message||o.supportingText),R=()=>{u.value=!0,o.errorDisplay===te.EAGER&&(d.value=!0)},T=()=>{u.value=!1,o.errorDisplay===te.LAZY&&(d.value=!0)},L=()=>{var I;(I=c.value)==null||I.focus()},N=I=>{u.value&&I.target!==c.value&&I.preventDefault()};return e.watchEffect(()=>{a.value=He({errorFromProps:o.error,maxlength:o.maxlength,minlength:o.minlength,required:o.required,validators:o.validators,value:l})}),e.watch(()=>i==null?void 0:i.forceShowErrors.value,I=>{I&&(d.value=!0)},{immediate:!0}),e.watch(a,()=>{s("valid",a.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,m.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:L,onMousedown:N},[n.label?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["tide-input-textarea-label",e.unref(t).PADDING.X.ONE,E.value?["minilabel",e.unref(t).FONT.ROLE.LABEL_3]:e.unref(t).FONT.ROLE.LABEL_1,!m.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,e.unref(t).POINTER_EVENTS.OFF])},e.toDisplayString(f.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:R,onFocusout:T,id:n.inputId,"onUpdate:modelValue":p[0]||(p[0]=g=>l.value=g)},null,42,wr),[[e.vModelText,l.value]])],42,Vr),A.value?(e.openBlock(),e.createBlock(De,{key:0,"is-error":m.value,message:A.value},null,8,["is-error","message"])):e.createCommentVNode("",!0)],2))}}),Mr=S(Gr,[["__scopeId","data-v-234beffe"]]),xr=["for"],Hr=["maxlength","minlength","name","required","rows","id"],Xr={},Yr=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),l=e.ref(!1),i=e.ref(null),a=e.ref(o.value),u=e.computed(()=>Xe(o.error,s.value)),d=e.computed(()=>o.required?`${o.label} *`:o.label),c=e.computed(()=>o.required&&a.value!==void 0&&!a.value||Ye(s.value,o.error)),f=e.computed(()=>l.value||!m.value),m=e.computed(()=>a.value===""||a.value===void 0),v=()=>{l.value=!0},E=()=>{l.value=!1,a.value||(a.value="")},O=()=>gt({error:s,errorFromProps:o.error,maxlength:o.maxlength,minlength:o.minlength,required:o.required,value:a});return e.watch(()=>o.value,(A,R)=>{(A!==R||A!==a.value)&&(a.value=A)}),r({error:s,required:o.required,value:a}),(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",f.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:i,required:n.required,rows:n.rows,onChange:O,onFocus:v,onFocusout:E,id:n.inputId,"onUpdate:modelValue":R[0]||(R[0]=T=>a.value=T)},null,42,Hr),[[e.vModelText,a.value]])],10,xr),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(D,{key:0,icon:e.unref(h).ERROR,size:e.unref(b).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_3])},e.toDisplayString(c.value?u.value:n.supportingText),3)],2)):e.createCommentVNode("",!0)],2))}}),zr=S(Yr,[["__scopeId","data-v-9b7af68f"]]),Wr={},qr=e.defineComponent({...Wr,__name:"TideMenuItem",props:{element:{default:F.LINK},href:{default:void 0},isNewTab:{type:Boolean,default:!1},iconTrailing:{default:void 0},label:{}},setup(n){return(r,o)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.element),{class:e.normalizeClass(["tide-menu-item",e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.RADIUS.ZERO,e.unref(t).DISPLAY.FLEX,e.unref(t).ELLIPSIS,e.unref(t).FONT.ROLE.LABEL_2,e.unref(t).GAP.QUARTER,e.unref(t).PADDING.X.ONE,e.unref(t).PADDING.Y.HALF,e.unref(t).UNDERLINE.REST.OFF,e.unref(t).WIDTH.FULL]),href:n.href,target:n.isNewTab?e.unref(Y).BLANK:void 0},{default:e.withCtx(()=>[e.createElementVNode("span",null,e.toDisplayString(n.label),1),n.iconTrailing?(e.openBlock(),e.createBlock(D,{key:0,class:e.normalizeClass([e.unref(t).MARGIN.LEFT.AUTO]),icon:n.iconTrailing,size:e.unref(b).LARGE},null,8,["class","icon","size"])):e.createCommentVNode("",!0)]),_:1},8,["class","href","target"]))}}),$r=S(qr,[["__scopeId","data-v-27e936fd"]]),Ct={SM:"sm",MD:"md",LG:"lg",XL:"xl"},Kr={SM:768,MD:992,LG:1232,XL:1920},ht=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",ze=()=>{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"},Qr=["textContent"],Zr=e.defineComponent({__name:"TideModal",props:e.mergeModels({beforeClose:{type:Function,default:void 0},isBackButton:{type:Boolean,default:!1},isDismissible:{type:Boolean,default:!0},title:{default:void 0},width:{default:void 0}},{modelValue:{type:Boolean,required:!0},modelModifiers:{}}),emits:e.mergeModels(["back"],["update:modelValue"]),setup(n,{emit:r}){const o=n,s=r,l=e.ref(),i=e.ref(),a=e.useModel(n,"modelValue"),u=()=>{var E;(E=i.value)==null||E.showModal()},d=()=>{var E;(E=i.value)==null||E.close()},c=()=>{e.nextTick(()=>{l.value&&(l.value.scrollTop=0)})},f=async()=>{o.beforeClose&&await o.beforeClose()===!1||(a.value=!1)},m=()=>{o.isDismissible&&f()},v=E=>{E.preventDefault(),o.isDismissible&&f()};return e.watch(a,()=>{i.value&&(a.value?(u(),c()):d(),ht(a.value))}),e.onBeforeMount(()=>{ze()}),e.onMounted(()=>{a.value&&u()}),(E,O)=>(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:i,style:e.normalizeStyle({"--modal-width":n.width}),onClick:e.withModifiers(m,["self"]),onClose:O[1]||(O[1]=e.withModifiers(()=>{},["prevent"])),onKeydown:e.withKeys(v,["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(Ct).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(X,{key:0,icon:e.unref(h).CHEVRON_LEFT,priority:e.unref(V).QUATERNARY,onClick:O[0]||(O[0]=A=>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,Qr),n.isDismissible?(e.openBlock(),e.createBlock(X,{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:f},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:l},[e.renderSlot(E.$slots,"default",{},void 0,!0)],2),E.$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(E.$slots,"footer",{},void 0,!0)],2)):e.createCommentVNode("",!0)],2)],38)],8,["to"]))}}),jr=S(Zr,[["__scopeId","data-v-0c7c9399"]]),Jr=e.defineComponent({__name:"TidePagination",props:e.mergeModels({pageTotal:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const r=n,o=e.useModel(n,"modelValue"),s=e.computed(()=>new Array(r.pageTotal).fill("").map((u,d)=>d+1)),l=u=>{o.value=u},i=()=>{o.value--},a=()=>{o.value++};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(X,{disabled:o.value<=1,icon:e.unref(h).CHEVRON_LEFT,priority:e.unref(V).QUATERNARY,onClick:i},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(s.value,c=>(e.openBlock(),e.createElementBlock("li",{key:c},[e.createVNode(Lt,{disabled:o.value===c,label:c,priority:e.unref(V).QUATERNARY,onClick:f=>l(c)},null,8,["disabled","label","priority","onClick"])]))),128))],2),e.createVNode(X,{disabled:o.value>=s.value[s.value.length-1],icon:e.unref(h).CHEVRON_RIGHT,priority:e.unref(V).QUATERNARY,onClick:a},null,8,["disabled","icon","priority"])],2))}}),eo=["top","right","bottom","left"],et=["start","end"],tt=eo.reduce((n,r)=>n.concat(r,r+"-"+et[0],r+"-"+et[1]),[]),Ce=Math.min,ae=Math.max,he=Math.round,pe=Math.floor,Q=n=>({x:n,y:n}),to={left:"right",right:"left",bottom:"top",top:"bottom"},no={start:"end",end:"start"};function nt(n,r,o){return ae(n,Ce(r,o))}function Be(n,r){return typeof n=="function"?n(r):n}function me(n){return n.split("-")[0]}function ne(n){return n.split("-")[1]}function St(n){return n==="x"?"y":"x"}function Ft(n){return n==="y"?"height":"width"}function ye(n){return["top","bottom"].includes(me(n))?"y":"x"}function Dt(n){return St(ye(n))}function ro(n,r,o){o===void 0&&(o=!1);const s=ne(n),l=Dt(n),i=Ft(l);let a=l==="x"?s===(o?"end":"start")?"right":"left":s==="start"?"bottom":"top";return r.reference[i]>r.floating[i]&&(a=rt(a)),[a,rt(a)]}function oo(n){return n.replace(/start|end/g,r=>no[r])}function rt(n){return n.replace(/left|right|bottom|top/g,r=>to[r])}function so(n){return{top:0,right:0,bottom:0,left:0,...n}}function lo(n){return typeof n!="number"?so(n):{top:n,right:n,bottom:n,left:n}}function Se(n){const{x:r,y:o,width:s,height:l}=n;return{width:s,height:l,top:o,left:r,right:r+s,bottom:o+l,x:r,y:o}}function ot(n,r,o){let{reference:s,floating:l}=n;const i=ye(r),a=Dt(r),u=Ft(a),d=me(r),c=i==="y",f=s.x+s.width/2-l.width/2,m=s.y+s.height/2-l.height/2,v=s[u]/2-l[u]/2;let E;switch(d){case"top":E={x:f,y:s.y-l.height};break;case"bottom":E={x:f,y:s.y+s.height};break;case"right":E={x:s.x+s.width,y:m};break;case"left":E={x:s.x-l.width,y:m};break;default:E={x:s.x,y:s.y}}switch(ne(r)){case"start":E[a]-=v*(o&&c?-1:1);break;case"end":E[a]+=v*(o&&c?-1:1);break}return E}const ao=async(n,r,o)=>{const{placement:s="bottom",strategy:l="absolute",middleware:i=[],platform:a}=o,u=i.filter(Boolean),d=await(a.isRTL==null?void 0:a.isRTL(r));let c=await a.getElementRects({reference:n,floating:r,strategy:l}),{x:f,y:m}=ot(c,s,d),v=s,E={},O=0;for(let A=0;A<u.length;A++){const{name:R,fn:T}=u[A],{x:L,y:N,data:I,reset:p}=await T({x:f,y:m,initialPlacement:s,placement:v,strategy:l,middlewareData:E,rects:c,platform:a,elements:{reference:n,floating:r}});f=L??f,m=N??m,E={...E,[R]:{...E[R],...I}},p&&O<=50&&(O++,typeof p=="object"&&(p.placement&&(v=p.placement),p.rects&&(c=p.rects===!0?await a.getElementRects({reference:n,floating:r,strategy:l}):p.rects),{x:f,y:m}=ot(c,v,d)),A=-1)}return{x:f,y:m,placement:v,strategy:l,middlewareData:E}};async function Bt(n,r){var o;r===void 0&&(r={});const{x:s,y:l,platform:i,rects:a,elements:u,strategy:d}=n,{boundary:c="clippingAncestors",rootBoundary:f="viewport",elementContext:m="floating",altBoundary:v=!1,padding:E=0}=Be(r,n),O=lo(E),R=u[v?m==="floating"?"reference":"floating":m],T=Se(await i.getClippingRect({element:(o=await(i.isElement==null?void 0:i.isElement(R)))==null||o?R:R.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(u.floating)),boundary:c,rootBoundary:f,strategy:d})),L=m==="floating"?{x:s,y:l,width:a.floating.width,height:a.floating.height}:a.reference,N=await(i.getOffsetParent==null?void 0:i.getOffsetParent(u.floating)),I=await(i.isElement==null?void 0:i.isElement(N))?await(i.getScale==null?void 0:i.getScale(N))||{x:1,y:1}:{x:1,y:1},p=Se(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:u,rect:L,offsetParent:N,strategy:d}):L);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 io(n,r,o){return(n?[...o.filter(l=>ne(l)===n),...o.filter(l=>ne(l)!==n)]:o.filter(l=>me(l)===l)).filter(l=>n?ne(l)===n||(r?oo(l)!==l:!1):!0)}const uo=function(n){return n===void 0&&(n={}),{name:"autoPlacement",options:n,async fn(r){var o,s,l;const{rects:i,middlewareData:a,placement:u,platform:d,elements:c}=r,{crossAxis:f=!1,alignment:m,allowedPlacements:v=tt,autoAlignment:E=!0,...O}=Be(n,r),A=m!==void 0||v===tt?io(m||null,E,v):v,R=await Bt(r,O),T=((o=a.autoPlacement)==null?void 0:o.index)||0,L=A[T];if(L==null)return{};const N=ro(L,i,await(d.isRTL==null?void 0:d.isRTL(c.floating)));if(u!==L)return{reset:{placement:A[0]}};const I=[R[me(L)],R[N[0]],R[N[1]]],p=[...((s=a.autoPlacement)==null?void 0:s.overflows)||[],{placement:L,overflows:I}],g=A[T+1];if(g)return{data:{index:T+1,overflows:p},reset:{placement:g}};const C=p.map(B=>{const k=ne(B.placement);return[B.placement,k&&f?B.overflows.slice(0,2).reduce(($,Ie)=>$+Ie,0):B.overflows[0],B.overflows]}).sort((B,k)=>B[1]-k[1]),x=((l=C.filter(B=>B[2].slice(0,ne(B[0])?2:3).every(k=>k<=0))[0])==null?void 0:l[0])||C[0][0];return x!==u?{data:{index:T+1,overflows:p},reset:{placement:x}}:{}}}};async function co(n,r){const{placement:o,platform:s,elements:l}=n,i=await(s.isRTL==null?void 0:s.isRTL(l.floating)),a=me(o),u=ne(o),d=ye(o)==="y",c=["left","top"].includes(a)?-1:1,f=i&&d?-1:1,m=Be(r,n);let{mainAxis:v,crossAxis:E,alignmentAxis:O}=typeof m=="number"?{mainAxis:m,crossAxis:0,alignmentAxis:null}:{mainAxis:m.mainAxis||0,crossAxis:m.crossAxis||0,alignmentAxis:m.alignmentAxis};return u&&typeof O=="number"&&(E=u==="end"?O*-1:O),d?{x:E*f,y:v*c}:{x:v*c,y:E*f}}const fo=function(n){return n===void 0&&(n=0),{name:"offset",options:n,async fn(r){var o,s;const{x:l,y:i,placement:a,middlewareData:u}=r,d=await co(r,n);return a===((o=u.offset)==null?void 0:o.placement)&&(s=u.arrow)!=null&&s.alignmentOffset?{}:{x:l+d.x,y:i+d.y,data:{...d,placement:a}}}}},Eo=function(n){return n===void 0&&(n={}),{name:"shift",options:n,async fn(r){const{x:o,y:s,placement:l}=r,{mainAxis:i=!0,crossAxis:a=!1,limiter:u={fn:R=>{let{x:T,y:L}=R;return{x:T,y:L}}},...d}=Be(n,r),c={x:o,y:s},f=await Bt(r,d),m=ye(me(l)),v=St(m);let E=c[v],O=c[m];if(i){const R=v==="y"?"top":"left",T=v==="y"?"bottom":"right",L=E+f[R],N=E-f[T];E=nt(L,E,N)}if(a){const R=m==="y"?"top":"left",T=m==="y"?"bottom":"right",L=O+f[R],N=O-f[T];O=nt(L,O,N)}const A=u.fn({...r,[v]:E,[m]:O});return{...A,data:{x:A.x-o,y:A.y-s,enabled:{[v]:i,[m]:a}}}}}};function Pe(){return typeof window<"u"}function ue(n){return We(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=(We(n)?n.ownerDocument:n.document)||window.document)==null?void 0:r.documentElement}function We(n){return Pe()?n instanceof Node||n instanceof M(n).Node:!1}function W(n){return Pe()?n instanceof Element||n instanceof M(n).Element:!1}function Z(n){return Pe()?n instanceof HTMLElement||n instanceof M(n).HTMLElement:!1}function st(n){return!Pe()||typeof ShadowRoot>"u"?!1:n instanceof ShadowRoot||n instanceof M(n).ShadowRoot}function Te(n){const{overflow:r,overflowX:o,overflowY:s,display:l}=q(n);return/auto|scroll|overlay|hidden|clip/.test(r+s+o)&&!["inline","contents"].includes(l)}function mo(n){return["table","td","th"].includes(ue(n))}function be(n){return[":popover-open",":modal"].some(r=>{try{return n.matches(r)}catch{return!1}})}function qe(n){const r=$e(),o=W(n)?q(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 vo(n){let r=re(n);for(;Z(r)&&!Ee(r);){if(qe(r))return r;if(be(r))return null;r=re(r)}return null}function $e(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}function Ee(n){return["html","body","#document"].includes(ue(n))}function q(n){return M(n).getComputedStyle(n)}function ke(n){return W(n)?{scrollLeft:n.scrollLeft,scrollTop:n.scrollTop}:{scrollLeft:n.scrollX,scrollTop:n.scrollY}}function re(n){if(ue(n)==="html")return n;const r=n.assignedSlot||n.parentNode||st(n)&&n.host||j(n);return st(r)?r.host:r}function yt(n){const r=re(n);return Ee(r)?n.ownerDocument?n.ownerDocument.body:n.body:Z(r)&&Te(r)?r:yt(r)}function Ae(n,r,o){var s;r===void 0&&(r=[]),o===void 0&&(o=!0);const l=yt(n),i=l===((s=n.ownerDocument)==null?void 0:s.body),a=M(l);if(i){const u=xe(a);return r.concat(a,a.visualViewport||[],Te(l)?l:[],u&&o?Ae(u):[])}return r.concat(l,Ae(l,[],o))}function xe(n){return n.parent&&Object.getPrototypeOf(n.parent)?n.frameElement:null}function Pt(n){const r=q(n);let o=parseFloat(r.width)||0,s=parseFloat(r.height)||0;const l=Z(n),i=l?n.offsetWidth:o,a=l?n.offsetHeight:s,u=he(o)!==i||he(s)!==a;return u&&(o=i,s=a),{width:o,height:s,$:u}}function Ke(n){return W(n)?n:n.contextElement}function fe(n){const r=Ke(n);if(!Z(r))return Q(1);const o=r.getBoundingClientRect(),{width:s,height:l,$:i}=Pt(r);let a=(i?he(o.width):o.width)/s,u=(i?he(o.height):o.height)/l;return(!a||!Number.isFinite(a))&&(a=1),(!u||!Number.isFinite(u))&&(u=1),{x:a,y:u}}const Oo=Q(0);function bt(n){const r=M(n);return!$e()||!r.visualViewport?Oo:{x:r.visualViewport.offsetLeft,y:r.visualViewport.offsetTop}}function Lo(n,r,o){return r===void 0&&(r=!1),!o||r&&o!==M(n)?!1:r}function ie(n,r,o,s){r===void 0&&(r=!1),o===void 0&&(o=!1);const l=n.getBoundingClientRect(),i=Ke(n);let a=Q(1);r&&(s?W(s)&&(a=fe(s)):a=fe(n));const u=Lo(i,o,s)?bt(i):Q(0);let d=(l.left+u.x)/a.x,c=(l.top+u.y)/a.y,f=l.width/a.x,m=l.height/a.y;if(i){const v=M(i),E=s&&W(s)?M(s):s;let O=v,A=xe(O);for(;A&&s&&E!==O;){const R=fe(A),T=A.getBoundingClientRect(),L=q(A),N=T.left+(A.clientLeft+parseFloat(L.paddingLeft))*R.x,I=T.top+(A.clientTop+parseFloat(L.paddingTop))*R.y;d*=R.x,c*=R.y,f*=R.x,m*=R.y,d+=N,c+=I,O=M(A),A=xe(O)}}return Se({width:f,height:m,x:d,y:c})}function Qe(n,r){const o=ke(n).scrollLeft;return r?r.left+o:ie(j(n)).left+o}function kt(n,r,o){o===void 0&&(o=!1);const s=n.getBoundingClientRect(),l=s.left+r.scrollLeft-(o?0:Qe(n,s)),i=s.top+r.scrollTop;return{x:l,y:i}}function Ro(n){let{elements:r,rect:o,offsetParent:s,strategy:l}=n;const i=l==="fixed",a=j(s),u=r?be(r.floating):!1;if(s===a||u&&i)return o;let d={scrollLeft:0,scrollTop:0},c=Q(1);const f=Q(0),m=Z(s);if((m||!m&&!i)&&((ue(s)!=="body"||Te(a))&&(d=ke(s)),Z(s))){const E=ie(s);c=fe(s),f.x=E.x+s.clientLeft,f.y=E.y+s.clientTop}const v=a&&!m&&!i?kt(a,d,!0):Q(0);return{width:o.width*c.x,height:o.height*c.y,x:o.x*c.x-d.scrollLeft*c.x+f.x+v.x,y:o.y*c.y-d.scrollTop*c.y+f.y+v.y}}function Ao(n){return Array.from(n.getClientRects())}function To(n){const r=j(n),o=ke(n),s=n.ownerDocument.body,l=ae(r.scrollWidth,r.clientWidth,s.scrollWidth,s.clientWidth),i=ae(r.scrollHeight,r.clientHeight,s.scrollHeight,s.clientHeight);let a=-o.scrollLeft+Qe(n);const u=-o.scrollTop;return q(s).direction==="rtl"&&(a+=ae(r.clientWidth,s.clientWidth)-l),{width:l,height:i,x:a,y:u}}function Io(n,r){const o=M(n),s=j(n),l=o.visualViewport;let i=s.clientWidth,a=s.clientHeight,u=0,d=0;if(l){i=l.width,a=l.height;const c=$e();(!c||c&&r==="fixed")&&(u=l.offsetLeft,d=l.offsetTop)}return{width:i,height:a,x:u,y:d}}function po(n,r){const o=ie(n,!0,r==="fixed"),s=o.top+n.clientTop,l=o.left+n.clientLeft,i=Z(n)?fe(n):Q(1),a=n.clientWidth*i.x,u=n.clientHeight*i.y,d=l*i.x,c=s*i.y;return{width:a,height:u,x:d,y:c}}function lt(n,r,o){let s;if(r==="viewport")s=Io(n,o);else if(r==="document")s=To(j(n));else if(W(r))s=po(r,o);else{const l=bt(n);s={x:r.x-l.x,y:r.y-l.y,width:r.width,height:r.height}}return Se(s)}function Ut(n,r){const o=re(n);return o===r||!W(o)||Ee(o)?!1:q(o).position==="fixed"||Ut(o,r)}function No(n,r){const o=r.get(n);if(o)return o;let s=Ae(n,[],!1).filter(u=>W(u)&&ue(u)!=="body"),l=null;const i=q(n).position==="fixed";let a=i?re(n):n;for(;W(a)&&!Ee(a);){const u=q(a),d=qe(a);!d&&u.position==="fixed"&&(l=null),(i?!d&&!l:!d&&u.position==="static"&&!!l&&["absolute","fixed"].includes(l.position)||Te(a)&&!d&&Ut(n,a))?s=s.filter(f=>f!==a):l=u,a=re(a)}return r.set(n,s),s}function go(n){let{element:r,boundary:o,rootBoundary:s,strategy:l}=n;const a=[...o==="clippingAncestors"?be(r)?[]:No(r,this._c):[].concat(o),s],u=a[0],d=a.reduce((c,f)=>{const m=lt(r,f,l);return c.top=ae(m.top,c.top),c.right=Ce(m.right,c.right),c.bottom=Ce(m.bottom,c.bottom),c.left=ae(m.left,c.left),c},lt(r,u,l));return{width:d.right-d.left,height:d.bottom-d.top,x:d.left,y:d.top}}function Co(n){const{width:r,height:o}=Pt(n);return{width:r,height:o}}function ho(n,r,o){const s=Z(r),l=j(r),i=o==="fixed",a=ie(n,!0,i,r);let u={scrollLeft:0,scrollTop:0};const d=Q(0);if(s||!s&&!i)if((ue(r)!=="body"||Te(l))&&(u=ke(r)),s){const v=ie(r,!0,i,r);d.x=v.x+r.clientLeft,d.y=v.y+r.clientTop}else l&&(d.x=Qe(l));const c=l&&!s&&!i?kt(l,u):Q(0),f=a.left+u.scrollLeft-d.x-c.x,m=a.top+u.scrollTop-d.y-c.y;return{x:f,y:m,width:a.width,height:a.height}}function we(n){return q(n).position==="static"}function at(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 _t(n,r){const o=M(n);if(be(n))return o;if(!Z(n)){let l=re(n);for(;l&&!Ee(l);){if(W(l)&&!we(l))return l;l=re(l)}return o}let s=at(n,r);for(;s&&mo(s)&&we(s);)s=at(s,r);return s&&Ee(s)&&we(s)&&!qe(s)?o:s||vo(n)||o}const So=async function(n){const r=this.getOffsetParent||_t,o=this.getDimensions,s=await o(n.floating);return{reference:ho(n.reference,await r(n.floating),n.strategy),floating:{x:0,y:0,width:s.width,height:s.height}}};function Fo(n){return q(n).direction==="rtl"}const Do={convertOffsetParentRelativeRectToViewportRelativeRect:Ro,getDocumentElement:j,getClippingRect:go,getOffsetParent:_t,getElementRects:So,getClientRects:Ao,getDimensions:Co,getScale:fe,isElement:W,isRTL:Fo};function Vt(n,r){return n.x===r.x&&n.y===r.y&&n.width===r.width&&n.height===r.height}function Bo(n,r){let o=null,s;const l=j(n);function i(){var u;clearTimeout(s),(u=o)==null||u.disconnect(),o=null}function a(u,d){u===void 0&&(u=!1),d===void 0&&(d=1),i();const c=n.getBoundingClientRect(),{left:f,top:m,width:v,height:E}=c;if(u||r(),!v||!E)return;const O=pe(m),A=pe(l.clientWidth-(f+v)),R=pe(l.clientHeight-(m+E)),T=pe(f),N={rootMargin:-O+"px "+-A+"px "+-R+"px "+-T+"px",threshold:ae(0,Ce(1,d))||1};let I=!0;function p(g){const C=g[0].intersectionRatio;if(C!==d){if(!I)return a();C?a(!1,C):s=setTimeout(()=>{a(!1,1e-7)},1e3)}C===1&&!Vt(c,n.getBoundingClientRect())&&a(),I=!1}try{o=new IntersectionObserver(p,{...N,root:l.ownerDocument})}catch{o=new IntersectionObserver(p,N)}o.observe(n)}return a(!0),i}function yo(n,r,o,s){s===void 0&&(s={});const{ancestorScroll:l=!0,ancestorResize:i=!0,elementResize:a=typeof ResizeObserver=="function",layoutShift:u=typeof IntersectionObserver=="function",animationFrame:d=!1}=s,c=Ke(n),f=l||i?[...c?Ae(c):[],...Ae(r)]:[];f.forEach(T=>{l&&T.addEventListener("scroll",o,{passive:!0}),i&&T.addEventListener("resize",o)});const m=c&&u?Bo(c,o):null;let v=-1,E=null;a&&(E=new ResizeObserver(T=>{let[L]=T;L&&L.target===c&&E&&(E.unobserve(r),cancelAnimationFrame(v),v=requestAnimationFrame(()=>{var N;(N=E)==null||N.observe(r)})),o()}),c&&!d&&E.observe(c),E.observe(r));let O,A=d?ie(n):null;d&&R();function R(){const T=ie(n);A&&!Vt(A,T)&&o(),A=T,O=requestAnimationFrame(R)}return o(),()=>{var T;f.forEach(L=>{l&&L.removeEventListener("scroll",o),i&&L.removeEventListener("resize",o)}),m==null||m(),(T=E)==null||T.disconnect(),E=null,d&&cancelAnimationFrame(O)}}const it=fo,ut=uo,ct=Eo,Po=(n,r,o)=>{const s=new Map,l={platform:Do,...o},i={...l.platform,_c:s};return ao(n,r,{...l,platform:i})};function bo(n){return n!=null&&typeof n=="object"&&"$el"in n}function dt(n){if(bo(n)){const r=n.$el;return We(r)&&ue(r)==="#comment"?null:r}return n}function ve(n){return typeof n=="function"?n():e.unref(n)}function wt(n){return typeof window>"u"?1:(n.ownerDocument.defaultView||window).devicePixelRatio||1}function ft(n,r){const o=wt(n);return Math.round(r*o)/o}function ko(n,r,o){o===void 0&&(o={});const s=o.whileElementsMounted,l=e.computed(()=>{var C;return(C=ve(o.open))!=null?C:!0}),i=e.computed(()=>ve(o.middleware)),a=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(()=>dt(n.value)),f=e.computed(()=>dt(r.value)),m=e.ref(0),v=e.ref(0),E=e.ref(u.value),O=e.ref(a.value),A=e.shallowRef({}),R=e.ref(!1),T=e.computed(()=>{const C={position:E.value,left:"0",top:"0"};if(!f.value)return C;const w=ft(f.value,m.value),x=ft(f.value,v.value);return d.value?{...C,transform:"translate("+w+"px, "+x+"px)",...wt(f.value)>=1.5&&{willChange:"transform"}}:{position:E.value,left:w+"px",top:x+"px"}});let L;function N(){if(c.value==null||f.value==null)return;const C=l.value;Po(c.value,f.value,{middleware:i.value,placement:a.value,strategy:u.value}).then(w=>{m.value=w.x,v.value=w.y,E.value=w.strategy,O.value=w.placement,A.value=w.middlewareData,R.value=C!==!1})}function I(){typeof L=="function"&&(L(),L=void 0)}function p(){if(I(),s===void 0){N();return}if(c.value!=null&&f.value!=null){L=s(c.value,f.value,N);return}}function g(){l.value||(R.value=!1)}return e.watch([i,a,u,l],N,{flush:"sync"}),e.watch([c,f],p,{flush:"sync"}),e.watch(l,g,{flush:"sync"}),e.getCurrentScope()&&e.onScopeDispose(I),{x:e.shallowReadonly(m),y:e.shallowReadonly(v),strategy:e.shallowReadonly(E),placement:e.shallowReadonly(O),middlewareData:e.shallowReadonly(A),isPositioned:e.shallowReadonly(R),floatingStyles:T,update:N}}const Uo=(n,r)=>!(Array.isArray(r)?r:[r]).some(s=>s.contains(n.target)),_o=e.defineComponent({__name:"TidePopover",props:{anchorId:{},offset:{default:16}},setup(n){const r=n,o=e.ref(null),s=e.ref(null),l=e.ref(null),i=e.ref(!1),a=e.ref(!1),u=e.ref([ut(),it({mainAxis:r.offset}),ct({padding:16})]),d=e.computed(()=>i.value||a.value),{floatingStyles:c}=ko(o,s,{middleware:u,strategy:"fixed",whileElementsMounted:yo}),f=I=>{!o.value||!s.value||Uo(I,[o.value,s.value])&&(a.value=!1,I.preventDefault(),I.stopImmediatePropagation())},m=()=>{i.value=!0},v=()=>{i.value=!1},E=I=>{I.preventDefault(),a.value?(a.value=!1,i.value=!1):a.value=!0},O=()=>{if(!o.value)return null;o.value.addEventListener("mouseover",m),o.value.addEventListener("mouseleave",v),o.value.addEventListener("click",E)},A=()=>{if(!o.value)return null;o.value.removeEventListener("mouseover",m),o.value.removeEventListener("mouseleave",v),o.value.removeEventListener("click",E)},R=I=>{I.key==="Escape"&&(a.value=!1)},T=()=>{l.value&&(l.value.addEventListener("click",f,!0),l.value.addEventListener("keydown",R))},L=()=>{l.value&&(l.value.removeEventListener("click",f,!0),l.value.removeEventListener("keydown",R))},N=()=>{o.value=document.getElementById(r.anchorId)};return e.watch(()=>a.value,I=>{I?T():L()}),e.watch(()=>r.anchorId,()=>{A(),N(),O()}),e.watchEffect(()=>{u.value=[ut(),it({mainAxis:r.offset}),ct({padding:16})]}),e.onBeforeMount(()=>{ze()}),e.onMounted(()=>{N(),l.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:s,style:e.normalizeStyle({...e.unref(c)})},[e.renderSlot(I.$slots,"default",{},void 0,!0)],6),[[e.vShow,d.value]])]),_:3})],8,["to"]))}}),Vo=S(_o,[["__scopeId","data-v-508322dc"]]),wo=["onClick"],Go=e.defineComponent({__name:"TideRating",props:e.mergeModels({description:{default:void 0},maxRating:{default:10},showRating:{type:Boolean,default:!1},title:{default:void 0}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const r=n,o=e.useModel(n,"modelValue"),s=e.computed(()=>Array.from({length:r.maxRating},(i,a)=>a+1)),l=i=>{o.value=i};return(i,a)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-rating",e.unref(t).WIDTH.FULL])},[e.createElementVNode("section",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).AXIS1.BETWEEN,e.unref(t).PADDING.BOTTOM.HALF])},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_2])},e.toDisplayString(r.title),3),r.showRating?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_3,e.unref(t).FONT.COLOR.SURFACE.VARIANT])},e.toDisplayString(o.value)+"/"+e.toDisplayString(r.maxRating),3)):e.createCommentVNode("",!0)],2),r.description?(e.openBlock(),e.createElementBlock("section",{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.BODY_2,e.unref(t).PADDING.BOTTOM.ONE,e.unref(t).OVERFLOW.XY.HIDDEN,e.unref(t).ELLIPSIS])},e.toDisplayString(r.description),3)):e.createCommentVNode("",!0),e.createElementVNode("section",{class:e.normalizeClass(["tide-rating-bar",e.unref(t).DISPLAY.FLEX,e.unref(t).GAP.QUARTER,e.unref(t).FLEX.GROW.ON,e.unref(t).FLEX.SHRINK.ON])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,u=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["tide-rating-segment",e.unref(t).BG.SURFACE.VARIANT,e.unref(t).POSITION.RELATIVE,e.unref(t).OVERFLOW.XY.HIDDEN,e.unref(t).FLEX.GROW.ON,e.unref(t).FLEX.SHRINK.ON,e.unref(t).FLEX.BASIS.ZERO,e.unref(t).BORDER.FULL.ZERO,u===1&&["tide-rating-segment-first"],u===s.value.length&&["tide-rating-segment-last"],u<=o.value&&[e.unref(t).BG.SURFACE.GRADIENT]]),key:u,onClick:d=>l(u),type:"button"},null,10,wo))),128))],2)],2))}}),Mo=S(Go,[["__scopeId","data-v-4cf4aad7"]]),xo={class:"tide-seo-links"},Ho=e.defineComponent({__name:"TideSeoLinks",props:{heading:{default:""},links:{}},setup(n){const r=n;return(o,s)=>(e.openBlock(),e.createElementBlock("section",xo,[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,l=>(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:l.label},[e.createVNode(oe,{class:e.normalizeClass([e.unref(t).UNDERLINE.REST.OFF]),href:l.url,target:l.isNewTab?e.unref(Y).BLANK:e.unref(Y).SELF},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(l.label),1)]),_:2},1032,["class","href","target"])],2))),128))],2)]))}}),Xo=S(Ho,[["__scopeId","data-v-5cd4472f"]]),Yo=e.defineComponent({__name:"TideSheet",props:e.mergeModels({isBackButton:{type:Boolean,default:!1}},{modelValue:{type:Boolean,required:!0},modelModifiers:{}}),emits:e.mergeModels(["back"],["update:modelValue"]),setup(n,{emit:r}){const o=r,s=e.ref(null),l=e.useModel(n,"modelValue"),i=()=>{var f;(f=s.value)==null||f.showModal()},a=()=>{var f;(f=s.value)==null||f.close()},u=()=>{l.value=!1},d=()=>{u()},c=f=>{f.preventDefault(),u()};return e.watch(l,()=>{s.value&&(l.value?i():a(),ht(l.value))}),e.onBeforeMount(()=>{ze()}),e.onMounted(()=>{l.value&&i()}),(f,m)=>(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(d,["self"]),onClose:m[1]||(m[1]=e.withModifiers(()=>{},["prevent"])),onKeydown:e.withKeys(c,["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(X,{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:m[0]||(m[0]=v=>o("back"))},null,8,["class","icon","priority"])):e.createCommentVNode("",!0),e.createVNode(X,{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:u},null,8,["class","icon","priority"])],2),e.createVNode(Ne),e.createElementVNode("div",{class:e.normalizeClass(["tide-sheet-content",e.unref(t).DISPLAY.GRID,e.unref(t).HEIGHT.FULL,e.unref(t).ISOLATION.ISOLATE,e.unref(t).OVERFLOW.X.HIDDEN,e.unref(t).OVERFLOW.Y.AUTO,e.unref(t).PADDING.BOTTOM.ONE,e.unref(t).POSITION.RELATIVE,e.unref(t).WIDTH.FULL])},[e.renderSlot(f.$slots,"default",{},void 0,!0)],2)],2)],34)],8,["to"]))}}),zo=S(Yo,[["__scopeId","data-v-9d1728e7"]]),Wo=["disabled"],qo=e.defineComponent({__name:"TideSwitch",props:e.mergeModels({disabled:{type:Boolean,default:!1}},{modelValue:{type:Boolean,required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const r=n,o=e.useModel(n,"modelValue"),s=()=>{r.disabled||(o.value=!o.value)};return(l,i)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["tide-switch",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).OVERFLOW.XY.HIDDEN,e.unref(t).FLEX.SHRINK.OFF,e.unref(t).FLEX.GROW.OFF,o.value?["active",e.unref(t).BG.SECONDARY]:[e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).BORDER.COLOR.DEFAULT],n.disabled&&[e.unref(t).OPACITY.DISABLED]]),disabled:r.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.value?["active",e.unref(t).BG.SURFACE.DEFAULT]:[e.unref(t).BG.SECONDARY]])},[e.createVNode(D,{icon:e.unref(h).CHECK,size:e.unref(b).LARGE},null,8,["icon","size"])],2)],10,Wo))}}),$o=S(qo,[["__scopeId","data-v-c2ce44bc"]]),Ko=e.defineComponent({__name:"TideTabs",props:e.mergeModels({tabs:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const r=e.useModel(n,"modelValue"),o=s=>{r.value=s};return(s,l)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-tabs",e.unref(t).DISPLAY.FLEX,e.unref(t).BORDER.BOTTOM.TWO,e.unref(t).BORDER.COLOR.LOW])},[e.createVNode(Rt,{"is-floating":!0},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.tabs,(i,a)=>(e.openBlock(),e.createElementBlock("li",{key:i.label},[e.createVNode(ge,{class:e.normalizeClass([a===r.value?e.unref(t).FONT.COLOR.SURFACE.BRAND:e.unref(t).FONT.COLOR.SURFACE.VARIANT,e.unref(t).PADDING.BOTTOM.ONE,e.unref(t).FONT.ROLE.LABEL_1,e.unref(t).WHITESPACE_WRAP.OFF]),element:e.unref(F).BUTTON,label:i.label,subtle:!0,onClick:u=>o(a)},null,8,["class","element","label","onClick"]),e.createElementVNode("div",{class:e.normalizeClass(["rounded-border",a===r.value&&"active"])},null,2)]))),128))]),_:1})],2))}}),Qo=S(Ko,[["__scopeId","data-v-9fb51e89"]]);exports.ALERT=G;exports.BADGE_COLOR=z;exports.BADGE_COLOR_DETAILS=Me;exports.BADGE_TRUSTED=Ot;exports.BREAKPOINT=Ct;exports.CSS=t;exports.ELEMENT=F;exports.ELEMENT_BROAD=H;exports.FORMAT=sr;exports.FORMAT_REGEX=se;exports.ICON=h;exports.ICON_REALM=Wt;exports.INPUT_MODE=de;exports.MEDIA=Kr;exports.OBJECT_FIT=le;exports.ORIENTATION=Ge;exports.PRIORITY=V;exports.REALM=Et;exports.SIZE=b;exports.SIZE_BUTTON=Oe;exports.TARGET=Y;exports.TEXT_INPUT_TYPE=U;exports.TYPE_CARD=Le;exports.TideAccordionItem=Kt;exports.TideAlert=Jt;exports.TideBadge=en;exports.TideBadgeTrustedPartner=tn;exports.TideBadgeVerifiedVehicle=rn;exports.TideBreadCrumbs=ln;exports.TideButton=an;exports.TideButtonIcon=X;exports.TideButtonPagination=Lt;exports.TideButtonSegmented=fn;exports.TideCard=mn;exports.TideCarousel=Rt;exports.TideChipAction=Rn;exports.TideChipFilter=Tn;exports.TideChipInput=pn;exports.TideColumns=Dn;exports.TideDivider=Ne;exports.TideForm=Bn;exports.TideIcon=D;exports.TideImage=It;exports.TideImageBackground=Un;exports.TideIndicator=wn;exports.TideInputCheckbox=Yn;exports.TideInputCheckboxDeprecated=Kn;exports.TideInputRadio=Jn;exports.TideInputRadioDeprecated=or;exports.TideInputSelect=mr;exports.TideInputSelectDeprecated=hr;exports.TideInputText=yr;exports.TideInputTextDeprecated=_r;exports.TideInputTextarea=Mr;exports.TideInputTextareaDeprecated=zr;exports.TideLink=ge;exports.TideMenuItem=$r;exports.TideModal=jr;exports.TidePagination=Jr;exports.TidePopover=Vo;exports.TideRating=Mo;exports.TideSeoLinks=Xo;exports.TideSheet=zo;exports.TideSwitch=$o;exports.TideTabs=Qo;exports.VALIDATOR=lr;exports.provideTideConfig=Qt;exports.useTideForm=Tt;
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlkZS1kZXNpZ24tc3lzdGVtLmNqcyIsInNvdXJjZXMiOlsiLi4vc3JjL3R5cGVzL09yaWVudGF0aW9uLnRzIiwiLi4vc3JjL3R5cGVzL1N0eWxlcy50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVEaXZpZGVyLnZ1ZSIsIi4uL3NyYy90eXBlcy9SZWFsbS50cyIsIi4uL3NyYy90eXBlcy9TaXplLnRzIiwiLi4vc3JjL3V0aWxpdGllcy9mb3JtYXQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSWNvbi52dWUiLCIuLi9zcmMvdHlwZXMvSWNvbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVBY2NvcmRpb25JdGVtLnZ1ZSIsIi4uL3NyYy90eXBlcy9FbGVtZW50LnRzIiwiLi4vc3JjL2NvbXBvc2FibGVzL3VzZVRpZGVDb25maWcudHMiLCIuLi9zcmMvY29tcG9uZW50cy9JbnRlcm5hbEJhc2VMaW5rLnZ1ZSIsIi4uL3NyYy90eXBlcy9Qcmlvcml0eS50cyIsIi4uL3NyYy90eXBlcy9UYXJnZXQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQnV0dG9uSWNvbi52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlTGluay52dWUiLCIuLi9zcmMvdHlwZXMvQWxlcnQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQWxlcnQudnVlIiwiLi4vc3JjL3R5cGVzL0JhZGdlLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUJhZGdlLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCYWRnZVRydXN0ZWRQYXJ0bmVyLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCYWRnZVZlcmlmaWVkVmVoaWNsZS52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQnJlYWRDcnVtYnMudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUJ1dHRvbi52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQnV0dG9uUGFnaW5hdGlvbi52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQnV0dG9uU2VnbWVudGVkLnZ1ZSIsIi4uL3NyYy90eXBlcy9DYXJkLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUNhcmQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUNhcm91c2VsLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVDaGlwQWN0aW9uLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVDaGlwRmlsdGVyLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVDaGlwSW5wdXQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUNvbHVtbnMudnVlIiwiLi4vc3JjL2NvbXBvc2FibGVzL3VzZVRpZGVGb3JtLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUZvcm0udnVlIiwiLi4vc3JjL3R5cGVzL0ltYWdlLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUltYWdlLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbWFnZUJhY2tncm91bmQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUluZGljYXRvci52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRTdXBwb3J0aW5nVGV4dC52dWUiLCIuLi9zcmMvdXRpbGl0aWVzL3ZhbGlkYXRpb24udHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRDaGVja2JveC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRDaGVja2JveERlcHJlY2F0ZWQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0UmFkaW8udnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0UmFkaW9EZXByZWNhdGVkLnZ1ZSIsIi4uL3NyYy90eXBlcy9Gb3JtYXR0ZWQudHMiLCIuLi9zcmMvdHlwZXMvVmFsaWRhdGlvbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFNlbGVjdC52dWUiLCIuLi9zcmMvdXRpbGl0aWVzL3ZhbGlkYXRpb24tZGVwcmVjYXRlZC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFNlbGVjdERlcHJlY2F0ZWQudnVlIiwiLi4vc3JjL3R5cGVzL1RleHRJbnB1dC50cyIsIi4uL3NyYy91dGlsaXRpZXMvZm9ybXMudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRUZXh0LnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFRleHREZXByZWNhdGVkLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFRleHRhcmVhLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFRleHRhcmVhRGVwcmVjYXRlZC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlTWVudUl0ZW0udnVlIiwiLi4vc3JjL3R5cGVzL0JyZWFrcG9pbnQudHMiLCIuLi9zcmMvdXRpbGl0aWVzL3ZpZXdwb3J0LnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZU1vZGFsLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVQYWdpbmF0aW9uLnZ1ZSIsIi4uL25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvdXRpbHMvZGlzdC9mbG9hdGluZy11aS51dGlscy5tanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL2NvcmUvZGlzdC9mbG9hdGluZy11aS5jb3JlLm1qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvdXRpbHMvZGlzdC9mbG9hdGluZy11aS51dGlscy5kb20ubWpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbG9hdGluZy11aS9kb20vZGlzdC9mbG9hdGluZy11aS5kb20ubWpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbG9hdGluZy11aS92dWUvZGlzdC9mbG9hdGluZy11aS52dWUubWpzIiwiLi4vc3JjL3V0aWxpdGllcy9ldmVudC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVQb3BvdmVyLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVSYXRpbmcudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZVNlb0xpbmtzLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVTaGVldC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlU3dpdGNoLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVUYWJzLnZ1ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgT1JJRU5UQVRJT04gPSB7XG4gIEhPUklaT05UQUw6ICdob3Jpem9udGFsJyxcbiAgVkVSVElDQUw6ICd2ZXJ0aWNhbCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBPcmllbnRhdGlvbiA9ICh0eXBlb2YgT1JJRU5UQVRJT04pW2tleW9mIHR5cGVvZiBPUklFTlRBVElPTl07XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSB2dWUvc29ydC1rZXlzICovXG5cbmltcG9ydCB0eXBlIHsgQnJlYWtwb2ludCB9IGZyb20gJ0AvdHlwZXMvQnJlYWtwb2ludCc7XG5cbmV4cG9ydCBjb25zdCBDU1MgPSB7XG4gIHdpdGhCcmVha3BvaW50OiAodXRpbGl0aWVzOiBzdHJpbmdbXSwgYnJlYWtwb2ludDogQnJlYWtwb2ludCk6IHN0cmluZ1tdID0+IHtcbiAgICByZXR1cm4gdXRpbGl0aWVzLm1hcCgodXRpbGl0eSkgPT4gYCR7YnJlYWtwb2ludH0tJHt1dGlsaXR5fWApO1xuICB9LFxuICBBTElHTjoge1xuICAgIFg6IHtcbiAgICAgIENFTlRFUjogJ3RpZGUtdGV4dC1jZW50ZXInLFxuICAgICAgSlVTVElGWTogJ3RpZGUtdGV4dC1qdXN0aWZ5JyxcbiAgICAgIExFRlQ6ICd0aWRlLXRleHQtbGVmdCcsXG4gICAgICBSSUdIVDogJ3RpZGUtdGV4dC1yaWdodCcsXG4gICAgfSxcbiAgICBZOiB7XG4gICAgICBJTklUSUFMOiAndGlkZS1hbGlnbi1pbml0aWFsJyxcbiAgICAgIE1JRERMRTogJ3RpZGUtYWxpZ24tbWlkZGxlJyxcbiAgICB9LFxuICB9LFxuICBBWElTMToge1xuICAgIEFST1VORDogJ3RpZGUtYXhpczEtYXJvdW5kJyxcbiAgICBCRVRXRUVOOiAndGlkZS1heGlzMS1iZXR3ZWVuJyxcbiAgICBDRU5URVI6ICd0aWRlLWF4aXMxLWNlbnRlcicsXG4gICAgRU5EOiAndGlkZS1heGlzMS1lbmQnLFxuICAgIFNUQVJUOiAndGlkZS1heGlzMS1zdGFydCcsXG4gIH0sXG4gIEFYSVMyOiB7XG4gICAgQVJPVU5EOiAndGlkZS1heGlzMi1hcm91bmQnLFxuICAgIENFTlRFUjogJ3RpZGUtYXhpczItY2VudGVyJyxcbiAgICBFTkQ6ICd0aWRlLWF4aXMyLWVuZCcsXG4gICAgU1RBUlQ6ICd0aWRlLWF4aXMyLXN0YXJ0JyxcbiAgICBTVFJFVENIOiAndGlkZS1heGlzMi1zdHJldGNoJyxcbiAgfSxcbiAgQkc6IHtcbiAgICBHTE9CQUw6IHtcbiAgICAgIFBSSU1BUlk6IHtcbiAgICAgICAgRVJST1I6ICd0aWRlLWJnLXByaW1hcnktZXJyb3InLFxuICAgICAgICBJTkZPOiAndGlkZS1iZy1wcmltYXJ5LWluZm8nLFxuICAgICAgICBTVUNDRVNTOiAndGlkZS1iZy1wcmltYXJ5LXN1Y2Nlc3MnLFxuICAgICAgICBXQVJOSU5HOiAndGlkZS1iZy1wcmltYXJ5LXdhcm5pbmcnLFxuICAgICAgfSxcbiAgICAgIFNVUkZBQ0U6IHtcbiAgICAgICAgRVJST1I6ICd0aWRlLWJnLXN1cmZhY2UtZXJyb3InLFxuICAgICAgICBJTkZPOiAndGlkZS1iZy1zdXJmYWNlLWluZm8nLFxuICAgICAgICBTVUNDRVNTOiAndGlkZS1iZy1zdXJmYWNlLXN1Y2Nlc3MnLFxuICAgICAgICBXQVJOSU5HOiAndGlkZS1iZy1zdXJmYWNlLXdhcm5pbmcnLFxuXG4gICAgICAgIEJMVUU6ICd0aWRlLWJnLXN1cmZhY2UtYmx1ZScsXG4gICAgICAgIEdSRUVOOiAndGlkZS1iZy1zdXJmYWNlLWdyZWVuJyxcbiAgICAgICAgTElNRTogJ3RpZGUtYmctc3VyZmFjZS1saW1lJyxcbiAgICAgICAgT1JBTkdFOiAndGlkZS1iZy1zdXJmYWNlLW9yYW5nZScsXG4gICAgICAgIFBVUlBMRTogJ3RpZGUtYmctc3VyZmFjZS1wdXJwbGUnLFxuICAgICAgICBSRUQ6ICd0aWRlLWJnLXN1cmZhY2UtcmVkJyxcbiAgICAgICAgU0FMTU9OOiAndGlkZS1iZy1zdXJmYWNlLXNhbG1vbicsXG4gICAgICAgIFRFQUw6ICd0aWRlLWJnLXN1cmZhY2UtdGVhbCcsXG4gICAgICAgIFlFTExPVzogJ3RpZGUtYmctc3VyZmFjZS15ZWxsb3cnLFxuICAgICAgfSxcbiAgICB9LFxuICAgIElOSVRJQUw6ICd0aWRlLWJnLWluaXRpYWwnLFxuICAgIEJMVVI6ICd0aWRlLWJnLWJsdXInLFxuICAgIFBSSU1BUlk6ICd0aWRlLWJnLXByaW1hcnknLFxuICAgIFNFQ09OREFSWTogJ3RpZGUtYmctc2Vjb25kYXJ5JyxcbiAgICBTVVJGQUNFOiB7XG4gICAgICBBQ0NFTlQ6ICd0aWRlLWJnLXN1cmZhY2UtYWNjZW50JyxcbiAgICAgIEJSQU5EOiAndGlkZS1iZy1zdXJmYWNlLWJyYW5kJyxcbiAgICAgIERFRkFVTFQ6ICd0aWRlLWJnLXN1cmZhY2UnLFxuICAgICAgRkxPQVRJTkc6ICd0aWRlLWJnLXN1cmZhY2UtZmxvYXRpbmcnLFxuICAgICAgR1JBRElFTlQ6ICd0aWRlLWJnLXN1cmZhY2UtZ3JhZGllbnQnLFxuICAgICAgVkFSSUFOVDogJ3RpZGUtYmctc3VyZmFjZS12YXJpYW50JyxcbiAgICB9LFxuICAgIFRSQU5TUEFSRU5UOiB7XG4gICAgICBPTkVfSFVORFJFRDogJ3RpZGUtdHJhbnNwYXJlbnQtMTAwJyxcbiAgICAgIFRXT19IVU5EUkVEOiAndGlkZS10cmFuc3BhcmVudC0yMDAnLFxuICAgICAgVEhSRUVfSFVORFJFRDogJ3RpZGUtdHJhbnNwYXJlbnQtMzAwJyxcbiAgICAgIEZPVVJfSFVORFJFRDogJ3RpZGUtdHJhbnNwYXJlbnQtNDAwJyxcbiAgICB9LFxuICB9LFxuICBCT1JERVI6IHtcbiAgICBDT0xPUjoge1xuICAgICAgR0xPQkFMOiB7XG4gICAgICAgIEVSUk9SOiAndGlkZS1ib3JkZXItZXJyb3InLFxuICAgICAgICBJTkZPOiAndGlkZS1ib3JkZXItaW5mbycsXG4gICAgICAgIFNVQ0NFU1M6ICd0aWRlLWJvcmRlci1zdWNjZXNzJyxcbiAgICAgICAgV0FSTklORzogJ3RpZGUtYm9yZGVyLXdhcm5pbmcnLFxuXG4gICAgICAgIEJMVUU6ICd0aWRlLWJvcmRlci1ibHVlJyxcbiAgICAgICAgR1JFRU46ICd0aWRlLWJvcmRlci1ncmVlbicsXG4gICAgICAgIExJTUU6ICd0aWRlLWJvcmRlci1saW1lJyxcbiAgICAgICAgT1JBTkdFOiAndGlkZS1ib3JkZXItb3JhbmdlJyxcbiAgICAgICAgUFVSUExFOiAndGlkZS1ib3JkZXItcHVycGxlJyxcbiAgICAgICAgUkVEOiAndGlkZS1ib3JkZXItcmVkJyxcbiAgICAgICAgU0FMTU9OOiAndGlkZS1ib3JkZXItc2FsbW9uJyxcbiAgICAgICAgVEVBTDogJ3RpZGUtYm9yZGVyLXRlYWwnLFxuICAgICAgICBZRUxMT1c6ICd0aWRlLWJvcmRlci15ZWxsb3cnLFxuICAgICAgfSxcbiAgICAgIElOSVRJQUw6ICd0aWRlLWJvcmRlci1jb2xvci1pbml0aWFsJyxcbiAgICAgIERFRkFVTFQ6ICd0aWRlLWJvcmRlcicsXG4gICAgICBGTE9BVElORzogJ3RpZGUtYm9yZGVyLWZsb2F0aW5nJyxcbiAgICAgIEhJR0g6ICd0aWRlLWJvcmRlci1oaWdoJyxcbiAgICAgIExPVzogJ3RpZGUtYm9yZGVyLWxvdycsXG4gICAgICBQUklNQVJZOiAndGlkZS1ib3JkZXItcHJpbWFyeScsXG4gICAgfSxcbiAgICBSQURJVVM6IHtcbiAgICAgIFpFUk86ICd0aWRlLXJhZGl1cy0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXJhZGl1cy0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcmFkaXVzLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXJhZGl1cy0xJyxcbiAgICAgIEZVTEw6ICd0aWRlLXJhZGl1cy1mdWxsJyxcbiAgICB9LFxuICAgIFNUWUxFOiB7XG4gICAgICBEQVNIRUQ6ICd0aWRlLWJvcmRlci1kYXNoZWQnLFxuICAgICAgU09MSUQ6ICd0aWRlLWJvcmRlci1zb2xpZCcsXG4gICAgfSxcbiAgICBCT1RUT006IHtcbiAgICAgIFpFUk86ICd0aWRlLWJvcmRlci1ib3R0b20tMCcsXG4gICAgICBPTkU6ICd0aWRlLWJvcmRlci1ib3R0b20tMScsXG4gICAgICBUV086ICd0aWRlLWJvcmRlci1ib3R0b20tMicsXG4gICAgfSxcbiAgICBGVUxMOiB7XG4gICAgICBaRVJPOiAndGlkZS1ib3JkZXItMCcsXG4gICAgICBPTkU6ICd0aWRlLWJvcmRlci0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLTInLFxuICAgIH0sXG4gICAgTEVGVDoge1xuICAgICAgWkVSTzogJ3RpZGUtYm9yZGVyLWxlZnQtMCcsXG4gICAgICBPTkU6ICd0aWRlLWJvcmRlci1sZWZ0LTEnLFxuICAgICAgVFdPOiAndGlkZS1ib3JkZXItbGVmdC0yJyxcbiAgICB9LFxuICAgIFJJR0hUOiB7XG4gICAgICBaRVJPOiAndGlkZS1ib3JkZXItcmlnaHQtMCcsXG4gICAgICBPTkU6ICd0aWRlLWJvcmRlci1yaWdodC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLXJpZ2h0LTInLFxuICAgIH0sXG4gICAgVE9QOiB7XG4gICAgICBaRVJPOiAndGlkZS1ib3JkZXItdG9wLTAnLFxuICAgICAgT05FOiAndGlkZS1ib3JkZXItdG9wLTEnLFxuICAgICAgVFdPOiAndGlkZS1ib3JkZXItdG9wLTInLFxuICAgIH0sXG4gIH0sXG4gIEJPWF9TSVpJTkc6IHtcbiAgICBCT1JERVJfQk9YOiAndGlkZS1ib3gtYm9yZGVyJyxcbiAgICBDT05URU5UX0JPWDogJ3RpZGUtYm94LWNvbnRlbnQnLFxuICB9LFxuICBCUkVBS19JTlNJREU6IHtcbiAgICBBVk9JRF9DT0xVTU46ICd0aWRlLWJyZWFrLWluc2lkZS1hdm9pZC1jb2x1bW4nLFxuICB9LFxuICBCUkVBS19XT1JEOiB7XG4gICAgT0ZGOiAndGlkZS1icmVhay1pbml0aWFsJyxcbiAgICBPTjogJ3RpZGUtYnJlYWstd29yZCcsXG4gIH0sXG4gIENPTFVNTlM6IHtcbiAgICBJTklUSUFMOiAndGlkZS1jb2x1bW5zLWluaXRpYWwnLFxuICAgIE9ORTogJ3RpZGUtY29sdW1ucy0xJyxcbiAgICBUV086ICd0aWRlLWNvbHVtbnMtMicsXG4gICAgVEhSRUU6ICd0aWRlLWNvbHVtbnMtMycsXG4gICAgRk9VUjogJ3RpZGUtY29sdW1ucy00JyxcbiAgfSxcbiAgQ1VSU09SOiB7XG4gICAgTk9UX0FMTE9XRUQ6ICd0aWRlLWN1cnNvci1ub3QtYWxsb3dlZCcsXG4gICAgUE9JTlRFUjogJ3RpZGUtY3Vyc29yLXBvaW50ZXInLFxuICAgIFRFWFQ6ICd0aWRlLWN1cnNvci10ZXh0JyxcbiAgfSxcbiAgRElTUExBWToge1xuICAgIEJMT0NLOiAndGlkZS1kaXNwbGF5LWJsb2NrJyxcbiAgICBDT05URU5UUzogJ3RpZGUtZGlzcGxheS1jb250ZW50cycsXG4gICAgRkxFWDogJ3RpZGUtZGlzcGxheS1mbGV4JyxcbiAgICBHUklEOiAndGlkZS1kaXNwbGF5LWdyaWQnLFxuICAgIElOSVRJQUw6ICd0aWRlLWRpc3BsYXktaW5pdGlhbCcsXG4gICAgSU5MSU5FOiAndGlkZS1kaXNwbGF5LWlubGluZScsXG4gICAgSU5MSU5FX0JMT0NLOiAndGlkZS1kaXNwbGF5LWlubGluZS1ibG9jaycsXG4gICAgSU5MSU5FX0ZMRVg6ICd0aWRlLWRpc3BsYXktaW5saW5lLWZsZXgnLFxuICAgIE5PTkU6ICd0aWRlLWRpc3BsYXktbm9uZScsXG4gIH0sXG4gIEVMTElQU0lTOiAndGlkZS1lbGxpcHNpcycsXG4gIEZMRVg6IHtcbiAgICBCQVNJUzoge1xuICAgICAgQVVUTzogJ3RpZGUtZmxleC1iYXNpcy1hdXRvJyxcbiAgICAgIFpFUk86ICd0aWRlLWZsZXgtYmFzaXMtMCcsXG4gICAgfSxcbiAgICBESVJFQ1RJT046IHtcbiAgICAgIENPTFVNTjogJ3RpZGUtZmxleC1jb2x1bW4nLFxuICAgICAgQ09MVU1OX1JFVkVSU0U6ICd0aWRlLWZsZXgtY29sdW1uLXJldmVyc2UnLFxuICAgICAgUk9XOiAndGlkZS1mbGV4LXJvdycsXG4gICAgICBST1dfUkVWRVJTRTogJ3RpZGUtZmxleC1yb3ctcmV2ZXJzZScsXG4gICAgfSxcbiAgICBHUk9XOiB7XG4gICAgICBPRkY6ICd0aWRlLWdyb3ctbm9uZScsXG4gICAgICBPTjogJ3RpZGUtZ3JvdycsXG4gICAgfSxcbiAgICBTSFJJTks6IHtcbiAgICAgIE9GRjogJ3RpZGUtc2hyaW5rLW5vbmUnLFxuICAgICAgT046ICd0aWRlLXNocmluaycsXG4gICAgfSxcbiAgICBXUkFQOiAndGlkZS1mbGV4LXdyYXAnLFxuICB9LFxuICBGT05UOiB7XG4gICAgQ09MT1I6IHtcbiAgICAgIEdMT0JBTDoge1xuICAgICAgICBFUlJPUjogJ3RpZGUtZm9udC1lcnJvcicsXG4gICAgICAgIElORk86ICd0aWRlLWZvbnQtaW5mbycsXG4gICAgICAgIFNVQ0NFU1M6ICd0aWRlLWZvbnQtc3VjY2VzcycsXG4gICAgICAgIFdBUk5JTkc6ICd0aWRlLWZvbnQtd2FybmluZycsXG5cbiAgICAgICAgQkxVRTogJ3RpZGUtZm9udC1ibHVlJyxcbiAgICAgICAgR1JFRU46ICd0aWRlLWZvbnQtZ3JlZW4nLFxuICAgICAgICBMSU1FOiAndGlkZS1mb250LWxpbWUnLFxuICAgICAgICBPUkFOR0U6ICd0aWRlLWZvbnQtb3JhbmdlJyxcbiAgICAgICAgUFVSUExFOiAndGlkZS1mb250LXB1cnBsZScsXG4gICAgICAgIFJFRDogJ3RpZGUtZm9udC1yZWQnLFxuICAgICAgICBTQUxNT046ICd0aWRlLWZvbnQtc2FsbW9uJyxcbiAgICAgICAgVEVBTDogJ3RpZGUtZm9udC10ZWFsJyxcbiAgICAgICAgWUVMTE9XOiAndGlkZS1mb250LXllbGxvdycsXG5cbiAgICAgICAgUFJJTUFSWToge1xuICAgICAgICAgIEJMVUU6ICd0aWRlLWZvbnQtcHJpbWFyeS1ibHVlJyxcbiAgICAgICAgICBHUkVFTjogJ3RpZGUtZm9udC1wcmltYXJ5LWdyZWVuJyxcbiAgICAgICAgICBMSU1FOiAndGlkZS1mb250LXByaW1hcnktbGltZScsXG4gICAgICAgICAgT1JBTkdFOiAndGlkZS1mb250LXByaW1hcnktb3JhbmdlJyxcbiAgICAgICAgICBQVVJQTEU6ICd0aWRlLWZvbnQtcHJpbWFyeS1wdXJwbGUnLFxuICAgICAgICAgIFJFRDogJ3RpZGUtZm9udC1wcmltYXJ5LXJlZCcsXG4gICAgICAgICAgU0FMTU9OOiAndGlkZS1mb250LXByaW1hcnktc2FsbW9uJyxcbiAgICAgICAgICBURUFMOiAndGlkZS1mb250LXByaW1hcnktdGVhbCcsXG4gICAgICAgICAgWUVMTE9XOiAndGlkZS1mb250LXByaW1hcnkteWVsbG93JyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBQUklNQVJZOiAndGlkZS1mb250LW9uLXByaW1hcnknLFxuICAgICAgU0VDT05EQVJZOiAndGlkZS1mb250LW9uLXNlY29uZGFyeScsXG4gICAgICBTVVJGQUNFOiB7XG4gICAgICAgIEJSQU5EOiAndGlkZS1mb250LW9uLXN1cmZhY2UtYnJhbmQnLFxuICAgICAgICBERUZBVUxUOiAndGlkZS1mb250LW9uLXN1cmZhY2UnLFxuICAgICAgICBJTlZFUlNFOiAndGlkZS1mb250LW9uLXN1cmZhY2UtaW52ZXJzZScsXG4gICAgICAgIFZBUklBTlQ6ICd0aWRlLWZvbnQtb24tc3VyZmFjZS12YXJpYW50JyxcbiAgICAgICAgVkFSSUFOVF9JTlZFUlNFOiAndGlkZS1mb250LW9uLXN1cmZhY2UtdmFyaWFudC1pbnZlcnNlJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBST0xFOiB7XG4gICAgICBESVNQTEFZXzE6ICd0aWRlLXR5cG9ncmFwaHktZGlzcGxheS0xJyxcbiAgICAgIEhFQURMSU5FXzE6ICd0aWRlLXR5cG9ncmFwaHktaGVhZGxpbmUtMScsXG4gICAgICBIRUFETElORV8yOiAndGlkZS10eXBvZ3JhcGh5LWhlYWRsaW5lLTInLFxuICAgICAgSEVBRExJTkVfMzogJ3RpZGUtdHlwb2dyYXBoeS1oZWFkbGluZS0zJyxcbiAgICAgIFRJVExFXzE6ICd0aWRlLXR5cG9ncmFwaHktdGl0bGUtMScsXG4gICAgICBUSVRMRV8yOiAndGlkZS10eXBvZ3JhcGh5LXRpdGxlLTInLFxuICAgICAgQk9EWV8xOiAndGlkZS10eXBvZ3JhcGh5LWJvZHktMScsXG4gICAgICBCT0RZXzI6ICd0aWRlLXR5cG9ncmFwaHktYm9keS0yJyxcbiAgICAgIExBQkVMXzE6ICd0aWRlLXR5cG9ncmFwaHktbGFiZWwtMScsXG4gICAgICBMQUJFTF8xX1NFTUlCT0xEOiAndGlkZS10eXBvZ3JhcGh5LWxhYmVsLTEtc2VtaWJvbGQnLFxuICAgICAgTEFCRUxfMjogJ3RpZGUtdHlwb2dyYXBoeS1sYWJlbC0yJyxcbiAgICAgIExBQkVMXzJfU0VNSUJPTEQ6ICd0aWRlLXR5cG9ncmFwaHktbGFiZWwtMi1zZW1pYm9sZCcsXG4gICAgICBMQUJFTF8zOiAndGlkZS10eXBvZ3JhcGh5LWxhYmVsLTMnLFxuICAgICAgTElOS18xOiAndGlkZS10eXBvZ3JhcGh5LWxpbmstMScsXG4gICAgICBMSU5LXzI6ICd0aWRlLXR5cG9ncmFwaHktbGluay0yJyxcbiAgICAgIExJTktfMzogJ3RpZGUtdHlwb2dyYXBoeS1saW5rLTMnLFxuICAgICAgQlVUVE9OXzE6ICd0aWRlLXR5cG9ncmFwaHktYnV0dG9uLTEnLFxuICAgICAgQlVUVE9OXzI6ICd0aWRlLXR5cG9ncmFwaHktYnV0dG9uLTInLFxuICAgIH0sXG4gICAgU0laRToge1xuICAgICAgVFdFTFZFOiAndGlkZS1mb250LTEyJyxcbiAgICAgIEZPVVJURUVOOiAndGlkZS1mb250LTE0JyxcbiAgICAgIFNJWFRFRU46ICd0aWRlLWZvbnQtMTYnLFxuICAgICAgVFdFTlRZOiAndGlkZS1mb250LTIwJyxcbiAgICAgIFRXRU5UWV9GT1VSOiAndGlkZS1mb250LTI0JyxcbiAgICAgIFRISVJUWV9UV086ICd0aWRlLWZvbnQtMzInLFxuICAgIH0sXG4gICAgV0VJR0hUOiB7XG4gICAgICBGT1VSX0hVTkRSRUQ6ICd0aWRlLWZvbnQtNDAwJyxcbiAgICAgIEZJVkVfSFVORFJFRDogJ3RpZGUtZm9udC01MDAnLFxuICAgICAgU0lYX0hVTkRSRUQ6ICd0aWRlLWZvbnQtNjAwJyxcbiAgICAgIFNFVkVOX0hVTkRSRUQ6ICd0aWRlLWZvbnQtNzAwJyxcbiAgICB9LFxuICB9LFxuICBHQVA6IHtcbiAgICBaRVJPOiAndGlkZS1nYXAtMCcsXG4gICAgUVVBUlRFUjogJ3RpZGUtZ2FwLTEvNCcsXG4gICAgSEFMRjogJ3RpZGUtZ2FwLTEvMicsXG4gICAgT05FOiAndGlkZS1nYXAtMScsXG4gICAgVFdPOiAndGlkZS1nYXAtMicsXG4gICAgRk9VUjogJ3RpZGUtZ2FwLTQnLFxuICB9LFxuICBHUklEOiB7XG4gICAgRkxVSUQ6ICd0aWRlLWZsdWlkJyxcbiAgICBJVEVNOiAndGlkZS1ncmlkLWl0ZW0nLFxuICAgIExBWU9VVDogJ3RpZGUtZ3JpZC1sYXlvdXQnLFxuICAgIFhMOiAndGlkZS1ncmlkLXhsJyxcbiAgfSxcbiAgSEVJR0hUOiB7XG4gICAgQVVUTzogJ3RpZGUtaGVpZ2h0LWF1dG8nLFxuICAgIFpFUk86ICd0aWRlLWhlaWdodC0wJyxcbiAgICBGVUxMOiAndGlkZS1oZWlnaHQtZnVsbCcsXG4gICAgTUFYX0ZVTEw6ICd0aWRlLW1heC1oZWlnaHQtZnVsbCcsXG4gICAgTUlOX1pFUk86ICd0aWRlLW1pbi1oZWlnaHQtMCcsXG4gIH0sXG4gIElTT0xBVElPTjoge1xuICAgIElTT0xBVEU6ICd0aWRlLWlzb2xhdGUnLFxuICB9LFxuICBMSVNUX0JVTExFVFM6IHtcbiAgICBPRkY6ICd0aWRlLWxpc3Qtbm9uZScsXG4gIH0sXG4gIE1BUkdJTjoge1xuICAgIEJPVFRPTToge1xuICAgICAgQVVUTzogJ3RpZGUtbWFyZ2luLWJvdHRvbS1hdXRvJyxcbiAgICAgIFpFUk86ICd0aWRlLW1hcmdpbi1ib3R0b20tMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4tYm90dG9tLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4tYm90dG9tLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi1ib3R0b20tMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi1ib3R0b20tMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4tYm90dG9tLTQnLFxuICAgIH0sXG4gICAgRlVMTDoge1xuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4tMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4tMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4tNCcsXG4gICAgfSxcbiAgICBMRUZUOiB7XG4gICAgICBBVVRPOiAndGlkZS1tYXJnaW4tbGVmdC1hdXRvJyxcbiAgICAgIFpFUk86ICd0aWRlLW1hcmdpbi1sZWZ0LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLWxlZnQtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi1sZWZ0LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi1sZWZ0LTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4tbGVmdC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi1sZWZ0LTQnLFxuICAgIH0sXG4gICAgUklHSFQ6IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi1yaWdodC1hdXRvJyxcbiAgICAgIFpFUk86ICd0aWRlLW1hcmdpbi1yaWdodC0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi1yaWdodC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLXJpZ2h0LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi1yaWdodC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLXJpZ2h0LTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLXJpZ2h0LTQnLFxuICAgIH0sXG4gICAgVE9QOiB7XG4gICAgICBBVVRPOiAndGlkZS1tYXJnaW4tdG9wLWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLXRvcC0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi10b3AtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi10b3AtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLXRvcC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLXRvcC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi10b3AtNCcsXG4gICAgfSxcbiAgICBYOiB7XG4gICAgICBBVVRPOiAndGlkZS1tYXJnaW4teC1hdXRvJyxcbiAgICAgIFpFUk86ICd0aWRlLW1hcmdpbi14LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLXgtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi14LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi14LTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4teC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi14LTQnLFxuICAgIH0sXG4gICAgWToge1xuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLXktMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4teS0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLXktMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLXktMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi15LTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLXktNCcsXG4gICAgfSxcbiAgfSxcbiAgT0JKRUNUOiB7XG4gICAgQ0VOVEVSOiAndGlkZS1vYmplY3QtY2VudGVyJyxcbiAgICBDT05UQUlOOiAndGlkZS1vYmplY3QtY29udGFpbicsXG4gICAgQ09WRVI6ICd0aWRlLW9iamVjdC1jb3ZlcicsXG4gICAgU0NBTEVfRE9XTjogJ3RpZGUtb2JqZWN0LXNjYWxlLWRvd24nLFxuICB9LFxuICBPUEFDSVRZOiB7XG4gICAgRElTQUJMRUQ6ICd0aWRlLW9wYWNpdHktZGlzYWJsZWQnLFxuICAgIE9GRjogJ3RpZGUtb3BhY2l0eS1ub25lJyxcbiAgICBPTjogJ3RpZGUtb3BhY2l0eScsXG4gIH0sXG4gIE9WRVJGTE9XOiB7XG4gICAgWDoge1xuICAgICAgQVVUTzogJ3RpZGUteC1hdXRvJyxcbiAgICAgIEhJRERFTjogJ3RpZGUteC1oaWRkZW4nLFxuICAgICAgU0NST0xMOiAndGlkZS14LXNjcm9sbCcsXG4gICAgfSxcbiAgICBYWToge1xuICAgICAgQVVUTzogJ3RpZGUteHktYXV0bycsXG4gICAgICBISURERU46ICd0aWRlLXh5LWhpZGRlbicsXG4gICAgfSxcbiAgICBZOiB7XG4gICAgICBBVVRPOiAndGlkZS15LWF1dG8nLFxuICAgICAgSElEREVOOiAndGlkZS15LWhpZGRlbicsXG4gICAgfSxcbiAgfSxcbiAgUEFERElORzoge1xuICAgIEJPVFRPTToge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy1ib3R0b20tMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLWJvdHRvbS0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy1ib3R0b20tMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy1ib3R0b20tMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmctYm90dG9tLTInLFxuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy1ib3R0b20tNCcsXG4gICAgfSxcbiAgICBGVUxMOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLTInLFxuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy00JyxcbiAgICB9LFxuICAgIExFRlQ6IHtcbiAgICAgIFpFUk86ICd0aWRlLXBhZGRpbmctbGVmdC0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmctbGVmdC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy1sZWZ0LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmctbGVmdC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy1sZWZ0LTInLFxuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy1sZWZ0LTQnLFxuICAgIH0sXG4gICAgUklHSFQ6IHtcbiAgICAgIFpFUk86ICd0aWRlLXBhZGRpbmctcmlnaHQtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLXJpZ2h0LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLXJpZ2h0LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmctcmlnaHQtMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmctcmlnaHQtMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLXJpZ2h0LTQnLFxuICAgIH0sXG4gICAgVE9QOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLXRvcC0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmctdG9wLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLXRvcC0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLXRvcC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy10b3AtMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLXRvcC00JyxcbiAgICB9LFxuICAgIFg6IHtcbiAgICAgIFpFUk86ICd0aWRlLXBhZGRpbmcteC0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmcteC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy14LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmcteC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy14LTInLFxuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy14LTQnLFxuICAgIH0sXG4gICAgWToge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy15LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy15LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLXktMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy15LTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLXktMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLXktNCcsXG4gICAgfSxcbiAgfSxcbiAgUE9JTlRFUl9FVkVOVFM6IHtcbiAgICBPRkY6ICd0aWRlLXBvaW50ZXItZXZlbnRzLW5vbmUnLFxuICAgIE9OOiAndGlkZS1wb2ludGVyLWV2ZW50cycsXG4gIH0sXG4gIFBPU0lUSU9OOiB7XG4gICAgQUJTT0xVVEU6ICd0aWRlLXBvc2l0aW9uLWFic29sdXRlJyxcbiAgICBGSVhFRDogJ3RpZGUtcG9zaXRpb24tZml4ZWQnLFxuICAgIFJFTEFUSVZFOiAndGlkZS1wb3NpdGlvbi1yZWxhdGl2ZScsXG4gICAgU1RBVElDOiAndGlkZS1wb3NpdGlvbi1zdGF0aWMnLFxuICAgIFNUSUNLWTogJ3RpZGUtcG9zaXRpb24tc3RpY2t5JyxcbiAgfSxcbiAgUE9TSVRJT05JTkc6IHtcbiAgICBCT1RUT006ICd0aWRlLWJvdHRvbS0wJyxcbiAgICBMRUZUOiAndGlkZS1sZWZ0LTAnLFxuICAgIFJJR0hUOiAndGlkZS1yaWdodC0wJyxcbiAgICBUT1A6ICd0aWRlLXRvcC0wJyxcbiAgfSxcbiAgUkFUSU86IHtcbiAgICBPTkVfVE9fT05FOiAndGlkZS1yYXRpby0xLzEnLFxuICAgIFNJWFRFRU5fVE9fTklORTogJ3RpZGUtcmF0aW8tMTYvOScsXG4gICAgVEhSRUVfVE9fVFdPOiAndGlkZS1yYXRpby0zLzInLFxuICB9LFxuICBTQ1JPTExCQVI6IHtcbiAgICBPRkY6ICd0aWRlLXNjcm9sbGJhci1ub25lJyxcbiAgfSxcbiAgU0hBRE9XOiB7XG4gICAgSU5JVElBTDogJ3RpZGUtc2hhZG93LWluaXRpYWwnLFxuICAgIEJPVFRPTTogJ3RpZGUtc2hhZG93LWJvdHRvbScsXG4gICAgVE9QOiAndGlkZS1zaGFkb3ctdG9wJyxcbiAgICBURVhUOiAndGlkZS1zaGFkb3ctdGV4dCcsXG4gIH0sXG4gIFNOQVA6IHtcbiAgICBPTjogJ3RpZGUtc2Nyb2xsLXNuYXAnLFxuICB9LFxuICBTTkFQX0FMSUdOOiB7XG4gICAgU1RBUlQ6ICd0aWRlLXNjcm9sbC1zbmFwLXN0YXJ0JyxcbiAgfSxcbiAgU1RSSUtFVEhST1VHSDoge1xuICAgIE9GRjogJ3RpZGUtc3RyaWtldGhyb3VnaC1ub25lJyxcbiAgICBPTjogJ3RpZGUtc3RyaWtldGhyb3VnaCcsXG4gIH0sXG4gIFRFWFRfVFJBTlNGT1JNOiB7XG4gICAgTE9XRVI6ICd0aWRlLXRleHQtdHJhbnNmb3JtLWxvd2VyJyxcbiAgICBOT05FOiAndGlkZS10ZXh0LXRyYW5zZm9ybS1ub25lJyxcbiAgICBVUFBFUjogJ3RpZGUtdGV4dC10cmFuc2Zvcm0tdXBwZXInLFxuICB9LFxuICBVTkRFUkxJTkU6IHtcbiAgICBIT1ZFUjoge1xuICAgICAgT046ICd0aWRlLXVuZGVybGluZS1ob3ZlcicsXG4gICAgICBPRkY6ICd0aWRlLXVuZGVybGluZS1ob3Zlci1ub25lJyxcbiAgICB9LFxuICAgIFJFU1Q6IHtcbiAgICAgIE9OOiAndGlkZS11bmRlcmxpbmUnLFxuICAgICAgT0ZGOiAndGlkZS11bmRlcmxpbmUtbm9uZScsXG4gICAgfSxcbiAgfSxcbiAgVVNFUl9TRUxFQ1Q6IHtcbiAgICBJTklUSUFMOiAndGlkZS11c2VyLXNlbGVjdC1pbml0aWFsJyxcbiAgICBOT05FOiAndGlkZS11c2VyLXNlbGVjdC1ub25lJyxcbiAgfSxcbiAgVklTSUJJTElUWToge1xuICAgIE9GRjogJ3RpZGUtdmlzaWJsZS1ub25lJyxcbiAgICBPTjogJ3RpZGUtdmlzaWJsZScsXG4gIH0sXG4gIFdISVRFU1BBQ0VfV1JBUDoge1xuICAgIE9GRjogJ3RpZGUtd2hpdGVzcGFjZS1ub3dyYXAnLFxuICB9LFxuICBXSURUSDoge1xuICAgIEFVVE86ICd0aWRlLXdpZHRoLWF1dG8nLFxuICAgIFpFUk86ICd0aWRlLXdpZHRoLTAnLFxuICAgIEZVTEw6ICd0aWRlLXdpZHRoLWZ1bGwnLFxuICAgIE1BWF9GVUxMOiAndGlkZS1tYXgtd2lkdGgtZnVsbCcsXG4gICAgTUlOX1pFUk86ICd0aWRlLW1pbi13aWR0aC0wJyxcbiAgfSxcbiAgWl9JTkRFWDoge1xuICAgIElOSVRJQUw6ICd0aWRlLXotaW5kZXgtaW5pdGlhbCcsXG4gICAgT05FOiAndGlkZS16LWluZGV4LTEnLFxuICB9LFxufSBhcyBjb25zdDtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IE9SSUVOVEFUSU9OIH0gZnJvbSAnQC90eXBlcy9PcmllbnRhdGlvbic7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IE9yaWVudGF0aW9uIH0gZnJvbSAnQC90eXBlcy9PcmllbnRhdGlvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBvcmllbnRhdGlvbj86IE9yaWVudGF0aW9uO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgb3JpZW50YXRpb246IE9SSUVOVEFUSU9OLkhPUklaT05UQUwsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtZGl2aWRlciddXCI+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICBDU1MuQk9SREVSLkNPTE9SLkxPVyxcbiAgICAgICAgcHJvcHMub3JpZW50YXRpb24gPT09IE9SSUVOVEFUSU9OLkhPUklaT05UQUxcbiAgICAgICAgICA/IFtDU1MuTUFSR0lOLlkuSEFMRiwgQ1NTLkJPUkRFUi5CT1RUT00uT05FLCBDU1MuV0lEVEguRlVMTF1cbiAgICAgICAgICA6IFtDU1MuTUFSR0lOLlguSEFMRiwgQ1NTLkJPUkRFUi5SSUdIVC5PTkUsIENTUy5IRUlHSFQuRlVMTF0sXG4gICAgICBdXCJcbiAgICAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWRpdmlkZXIge1xuICAgIGFsaWduLXNlbGY6IHN0cmV0Y2g7XG4gIH1cbjwvc3R5bGU+XG4iLCJleHBvcnQgY29uc3QgUkVBTE0gPSB7XG4gIEFFUk86ICdhZXJvJyxcbiAgQVRWOiAnYXR2JyxcbiAgQk9BVE1BUlQ6ICdib2F0bWFydCcsXG4gIENZQ0xFOiAnY3ljbGUnLFxuICBFUVVJUE1FTlQ6ICdlcXVpcG1lbnQnLFxuICBQV0M6ICdwd2MnLFxuICBSVjogJ3J2JyxcbiAgU05PVzogJ3Nub3cnLFxuICBUUlVDSzogJ3RydWNrJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFJlYWxtS2V5ID0ga2V5b2YgdHlwZW9mIFJFQUxNO1xuZXhwb3J0IHR5cGUgUmVhbG0gPSAodHlwZW9mIFJFQUxNKVtSZWFsbUtleV07XG4iLCJleHBvcnQgY29uc3QgU0laRSA9IHtcbiAgTEFSR0U6ICdsYXJnZScsXG4gIFNNQUxMOiAnc21hbGwnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgU2l6ZSA9ICh0eXBlb2YgU0laRSlba2V5b2YgdHlwZW9mIFNJWkVdO1xuXG5leHBvcnQgY29uc3QgU0laRV9CVVRUT04gPSB7XG4gIExBUkdFOiAnbGFyZ2UnLFxuICBTTUFMTDogJ3NtYWxsJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFNpemVCdXR0b24gPSAodHlwZW9mIFNJWkUpW2tleW9mIHR5cGVvZiBTSVpFXTtcbiIsImNvbnN0IGNhcGl0YWxpemVGaXJzdCA9IChzdHJpbmc6IHN0cmluZykgPT4ge1xuICByZXR1cm4gc3RyaW5nLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc3RyaW5nLnNsaWNlKDEpO1xufTtcblxuY29uc3QgZm9ybWF0Q2FtZWxDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoL15bXFxzXy1dLywgJycpXG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnICcpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5zcGxpdCgnICcpXG4gICAgICAgIC5tYXAoKHdvcmQsIGluZGV4KSA9PiAoaW5kZXggPT09IDAgPyB3b3JkIDogd29yZC5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKSkpXG4gICAgICAgIC5qb2luKCcnKVxuICAgIDogaW5wdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRLZWJhYkNhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnXG4gICAgPyBpbnB1dFxuICAgICAgICAucmVwbGFjZSgvKFthLXpdezF9KShbQS1aXXsxfSkvZywgJyQxICQyJylcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnJlcGxhY2UoL1tcXHNfLV0vZywgJy0nKVxuICAgIDogaW5wdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRMYWJlbCA9ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IGxhYmVsTWFwOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgIGZhbHNlOiAnTm8nLFxuICAgIHRydWU6ICdZZXMnLFxuICB9O1xuICByZXR1cm4gT2JqZWN0Lmhhc093bihsYWJlbE1hcCwgdmFsdWUpID8gbGFiZWxNYXBbdmFsdWVdIDogdmFsdWU7XG59O1xuXG5jb25zdCBmb3JtYXROdW1iZXIgPSAoaW5wdXQ6IG51bWJlciB8IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGxldCBvdXRwdXQgPSBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdudW1iZXInID8gbmV3IEludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0KGlucHV0KSA6IFN0cmluZyhpbnB1dCB8fCAnJyk7XG4gIGxldCBkaWdpdHMgPSBvdXRwdXQ7XG5cbiAgaWYgKGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHtcbiAgICBkaWdpdHMgPSBkaWdpdHMucmVwbGFjZSgvXFxEL2csICcnKTtcbiAgICBpZiAoTnVtYmVyKGRpZ2l0cykpIHtcbiAgICAgIG91dHB1dCA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCgpLmZvcm1hdChOdW1iZXIoZGlnaXRzKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dHB1dCA9ICcwJztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gb3V0cHV0O1xufTtcblxuY29uc3QgZm9ybWF0UGFzY2FsQ2FzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZydcbiAgICA/IGlucHV0XG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnICcpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5zcGxpdCgnICcpXG4gICAgICAgIC5tYXAoKHdvcmQpID0+IHdvcmQuc2xpY2UoMCwgMSkudG9VcHBlckNhc2UoKSArIHdvcmQuc2xpY2UoMSkpXG4gICAgICAgIC5qb2luKCcnKVxuICAgIDogaW5wdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRQaG9uZSA9IChpbnB1dDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgbGV0IG91dHB1dCA9IGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ251bWJlcicgPyBTdHJpbmcoaW5wdXQpIDogU3RyaW5nKGlucHV0IHx8ICcnKTtcbiAgbGV0IGRpZ2l0cyA9IG91dHB1dDtcbiAgZGlnaXRzID0gZGlnaXRzLnJlcGxhY2UoL1xcRC9nLCAnJyk7XG5cbiAgc3dpdGNoIChkaWdpdHMubGVuZ3RoKSB7XG4gICAgY2FzZSA3OlxuICAgICAgb3V0cHV0ID0gYCR7ZGlnaXRzLnNsaWNlKDAsIDMpfS0ke2RpZ2l0cy5zbGljZSgzKX1gO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxMDpcbiAgICAgIG91dHB1dCA9IGAke2RpZ2l0cy5zbGljZSgwLCAzKX0tJHtkaWdpdHMuc2xpY2UoMywgNil9LSR7ZGlnaXRzLnNsaWNlKDYpfWA7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDExOlxuICAgICAgb3V0cHV0ID0gYCR7ZGlnaXRzLnNsaWNlKDAsIDEpfS0ke2RpZ2l0cy5zbGljZSgxLCA0KX0tJHtkaWdpdHMuc2xpY2UoNCwgNyl9LSR7ZGlnaXRzLnNsaWNlKDcpfWA7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgb3V0cHV0ID0gZGlnaXRzO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICByZXR1cm4gb3V0cHV0O1xufTtcblxuY29uc3QgZm9ybWF0UHJpY2UgPSAoaW5wdXQ6IG51bWJlciB8IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IG91dHB1dCA9IGlucHV0ID8gZm9ybWF0TnVtYmVyKGlucHV0KSA6IFN0cmluZyhpbnB1dCB8fCAnMCcpO1xuICByZXR1cm4gYCQke291dHB1dH1gO1xufTtcblxuY29uc3QgZm9ybWF0UXVvdGVzID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoJ1wiJykgJiYgdmFsdWUuZW5kc1dpdGgoJ1wiJykpIHtcbiAgICByZXR1cm4gdmFsdWUuc2xpY2UoMSwgLTEpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufTtcblxuY29uc3QgZm9ybWF0U2VudGVuY2VDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBsZXQgc2VudGVuY2VDYXNlID0gaW5wdXQ7XG5cbiAgaWYgKGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25zdCBsb3dlckNhc2UgPSBpbnB1dFxuICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgLnJlcGxhY2UoL1tcXHNfLV0vZywgJyAnKTtcblxuICAgIHNlbnRlbmNlQ2FzZSA9IGxvd2VyQ2FzZS5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgbG93ZXJDYXNlLnNsaWNlKDEpO1xuICB9XG5cbiAgcmV0dXJuIHNlbnRlbmNlQ2FzZTtcbn07XG5cbmNvbnN0IGZvcm1hdFNuYWtlQ2FzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZydcbiAgICA/IGlucHV0XG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnXycpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdFRpdGxlQ2FzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZydcbiAgICA/IGlucHV0XG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnICcpXG4gICAgICAgIC5zcGxpdCgnICcpXG4gICAgICAgIC5tYXAoKHdvcmQpID0+IHdvcmQuc2xpY2UoMCwgMSkudG9VcHBlckNhc2UoKSArIHdvcmQuc2xpY2UoMSkpXG4gICAgICAgIC5qb2luKCcgJylcbiAgICA6IGlucHV0O1xufTtcblxuY29uc3QgZm9ybWF0VXJsRnJvbVJvb3QgPSAodXJsOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgdXJsRm9ybWF0dGVkID0gdXJsLnNwbGl0KCcuY29tLycpO1xuXG4gIHJldHVybiB1cmxGb3JtYXR0ZWQubGVuZ3RoID4gMSA/IGAvJHt1cmxGb3JtYXR0ZWRbMV19YCA6IHVybDtcbn07XG5cbmNvbnN0IGZvcm1hdFdlaWdodCA9IChpbnB1dDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3Qgb3V0cHV0ID0gaW5wdXQgPyBmb3JtYXROdW1iZXIoaW5wdXQpIDogU3RyaW5nKGlucHV0IHx8ICcwJyk7XG4gIHJldHVybiBgJHtvdXRwdXR9IGxic2A7XG59O1xuXG5jb25zdCBnZXRBcnRpY2xlID0gKG5vdW46IHN0cmluZywgaXNQbHVyYWwgPSBmYWxzZSwgaXNEZWZpbml0ZSA9IGZhbHNlKSA9PiB7XG4gIGNvbnN0IHZvd2VscyA9IFsnYScsICdlJywgJ2knLCAnbycsICd1J107XG4gIGNvbnN0IGlzVm93ZWxMZWFkaW5nID0gdm93ZWxzLmluY2x1ZGVzKG5vdW4uY2hhckF0KDApKTtcblxuICByZXR1cm4gaXNEZWZpbml0ZSA/ICd0aGUnIDogaXNQbHVyYWwgPyAnc29tZScgOiBpc1Zvd2VsTGVhZGluZyA/ICdhbicgOiAnYSc7XG59O1xuXG5jb25zdCBwcmljZVRvTnVtYmVyID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgaWYgKE51bWJlci5pc05hTihOdW1iZXIodmFsdWUpKSkge1xuICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgnJCcsICcnKTtcbiAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoLywvZywgJycpO1xuICB9XG4gIHJldHVybiBwYXJzZUludCh2YWx1ZSwgMTApO1xufTtcblxuY29uc3QgdW5mb3JtYXRQcmljZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3Qgb3V0cHV0ID0gaW5wdXQucmVwbGFjZSgvXFwkL2csICcnKS5yZXBsYWNlKC8sL2csICcnKTtcbiAgcmV0dXJuIGAke291dHB1dH1gO1xufTtcblxuZXhwb3J0IHtcbiAgY2FwaXRhbGl6ZUZpcnN0LFxuICBmb3JtYXRDYW1lbENhc2UsXG4gIGZvcm1hdEtlYmFiQ2FzZSxcbiAgZm9ybWF0TGFiZWwsXG4gIGZvcm1hdE51bWJlcixcbiAgZm9ybWF0UGFzY2FsQ2FzZSxcbiAgZm9ybWF0UGhvbmUsXG4gIGZvcm1hdFByaWNlLFxuICBmb3JtYXRRdW90ZXMsXG4gIGZvcm1hdFNlbnRlbmNlQ2FzZSxcbiAgZm9ybWF0U25ha2VDYXNlLFxuICBmb3JtYXRUaXRsZUNhc2UsXG4gIGZvcm1hdFVybEZyb21Sb290LFxuICBmb3JtYXRXZWlnaHQsXG4gIGdldEFydGljbGUsXG4gIHByaWNlVG9OdW1iZXIsXG4gIHVuZm9ybWF0UHJpY2UsXG59O1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgbWFya1JhdywgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHsgUkVBTE0gfSBmcm9tICdAL3R5cGVzL1JlYWxtJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZm9ybWF0UGFzY2FsQ2FzZSB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHR5cGUgeyBTaXplIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHR5cGUgeyBDb21wb25lbnQgfSBmcm9tICd2dWUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaWNvbjogSWNvbjtcbiAgICBzaXplPzogU2l6ZTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIHNpemU6IFNJWkUuU01BTEwsXG4gIH0pO1xuXG4gIGNvbnN0IGlubmVyU1ZHID0gcmVmPENvbXBvbmVudD4oKTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy5pY29uLFxuICAgIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGlkOiBzdHJpbmcgPSBwcm9wcy5pY29uO1xuICAgICAgY29uc3QgbmFtZSA9IGZvcm1hdFBhc2NhbENhc2UoaWQpO1xuICAgICAgY29uc3QgW3ByZWZpeF0gPSBpZC5zcGxpdCgnLScpO1xuICAgICAgY29uc3QgcmVhbG1Gb2xkZXIgPSBSRUFMTVtwcmVmaXg/LnRvVXBwZXJDYXNlKCkgYXMga2V5b2YgdHlwZW9mIFJFQUxNXTtcblxuICAgICAgY29uc3QgbG9hZGVyID0gcmVhbG1Gb2xkZXJcbiAgICAgICAgPyAoKSA9PiBpbXBvcnQoYC4uL2Fzc2V0cy9zdmcvaWNvbnMvcmVhbG0vJHtyZWFsbUZvbGRlcn0vSWNvbiR7bmFtZX0uc3ZnP2NvbXBvbmVudGApXG4gICAgICAgIDogKCkgPT4gaW1wb3J0KGAuLi9hc3NldHMvc3ZnL2ljb25zL0ljb24ke25hbWV9LnN2Zz9jb21wb25lbnRgKTtcblxuICAgICAgY29uc3QgbW9kID0gYXdhaXQgbG9hZGVyKCk7XG5cbiAgICAgIGlubmVyU1ZHLnZhbHVlID0gbWFya1Jhdyhtb2QuZGVmYXVsdCk7XG4gICAgfSxcbiAgICB7IGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1pY29uJywgcHJvcHMuc2l6ZSwgQ1NTLkZMRVguU0hSSU5LLk9GRl1cIj5cbiAgICA8Q29tcG9uZW50XG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuQkxPQ0tdXCJcbiAgICAgIDpkYXRhLWljb249XCJpY29uXCJcbiAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgOmlzPVwiaW5uZXJTVkdcIlxuICAgICAgdi1pZj1cImlubmVyU1ZHXCJcbiAgICAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZT5cbiAgLnRpZGUtaWNvbiB7XG4gICAgd2lkdGg6IDEuNXJlbTtcbiAgICBoZWlnaHQ6IDEuNXJlbTtcbiAgfVxuXG4gIC50aWRlLWljb24uc21hbGwge1xuICAgIHdpZHRoOiAxLjI1cmVtO1xuICAgIGhlaWdodDogMS4yNXJlbTtcbiAgfVxuXG4gIC50aWRlLWljb24gc3ZnIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gIH1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgdHlwZSB7IFJlYWxtS2V5IH0gZnJvbSAnQC90eXBlcy9SZWFsbSc7XG5cbmV4cG9ydCBjb25zdCBJQ09OID0ge1xuICBBQ0NPVU5UX0JBTEFOQ0U6ICdhY2NvdW50LWJhbGFuY2UnLFxuICBBQ1VURTogJ2FjdXRlJyxcbiAgQUREOiAnYWRkJyxcbiAgQUlfREVTQ1JJUFRJT046ICdhaS1kZXNjcmlwdGlvbicsXG4gIEFMSUdOX1NQQUNFX0VWRU46ICdhbGlnbi1zcGFjZS1ldmVuJyxcbiAgQVBQTEVfUEFZOiAnYXBwbGUtcGF5JyxcbiAgQVJST1dfQkFDSzogJ2Fycm93LWJhY2snLFxuICBBUlJPV19DWUNMRTogJ2Fycm93LWN5Y2xlJyxcbiAgQVJST1dfRk9SV0FSRDogJ2Fycm93LWZvcndhcmQnLFxuICBBUlJPV19SSUdIVDogJ2Fycm93LXJpZ2h0JyxcbiAgQVJST1dfVVA6ICdhcnJvdy11cCcsXG4gIEFTU0lHTk1FTlQ6ICdhc3NpZ25tZW50JyxcbiAgQVRUQUNIX01PTkVZOiAnYXR0YWNoLW1vbmV5JyxcbiAgQVVUT19SRU5FVzogJ2F1dG8tcmVuZXcnLFxuICBBV0FSRF9TVEFSOiAnYXdhcmQtc3RhcicsXG4gIEJFRDogJ2JlZCcsXG4gIEJPTFQ6ICdib2x0JyxcbiAgQk9PS01BUks6ICdib29rbWFyaycsXG4gIEJVTktIT1VTRTogJ2J1bmtob3VzZScsXG4gIENBTEVOREFSX01PTlRIOiAnY2FsZW5kYXItbW9udGgnLFxuICBDQUxMOiAnY2FsbCcsXG4gIENBTExfUVVBTElUWTogJ2NhbGwtcXVhbGl0eScsXG4gIENBUl9SRU5UQUw6ICdjYXItcmVudGFsJyxcbiAgQ0hFQ0s6ICdjaGVjaycsXG4gIENIRVZST05fTEVGVDogJ2NoZXZyb24tbGVmdCcsXG4gIENIRVZST05fUklHSFQ6ICdjaGV2cm9uLXJpZ2h0JyxcbiAgQ0xFQVI6ICdjbGVhcicsXG4gIENMT1NFOiAnY2xvc2UnLFxuICBDT05UUkFDVDogJ2NvbnRyYWN0JyxcbiAgQ1JBU0g6ICdjcmFzaCcsXG4gIERBU0hCT0FSRF9DVVNUT01JWkU6ICdkYXNoYm9hcmQtY3VzdG9taXplJyxcbiAgREVMRVRFOiAnZGVsZXRlJyxcbiAgRElBTU9ORDogJ2RpYW1vbmQnLFxuICBESVJFQ1RJT05TX0JPQVQ6ICdkaXJlY3Rpb25zLWJvYXQnLFxuICBET01BSU46ICdkb21haW4nLFxuICBEUkFGVDogJ2RyYWZ0JyxcbiAgRURJVDogJ2VkaXQnLFxuICBFTkdJTkU6ICdlbmdpbmUnLFxuICBFTkdJTkVFUklORzogJ2VuZ2luZWVyaW5nJyxcbiAgRVJST1I6ICdlcnJvcicsXG4gIEVYUEFORF9DT05URU5UOiAnZXhwYW5kLWNvbnRlbnQnLFxuICBFWFBBTkRfTEVTUzogJ2V4cGFuZC1sZXNzJyxcbiAgRVhQQU5EX01PUkU6ICdleHBhbmQtbW9yZScsXG4gIEZBQ0VCT09LOiAnZmFjZWJvb2snLFxuICBGQVZPUklURTogJ2Zhdm9yaXRlJyxcbiAgRkFWT1JJVEVfRklMTEVEOiAnZmF2b3JpdGUtZmlsbGVkJyxcbiAgRkxBRzogJ2ZsYWcnLFxuICBGT1JNQVRfQk9MRDogJ2Zvcm1hdC1ib2xkJyxcbiAgRk9STUFUX0lUQUxJQzogJ2Zvcm1hdC1pdGFsaWMnLFxuICBGT1JNQVRfTElTVF9CVUxMRVRFRDogJ2Zvcm1hdC1saXN0LWJ1bGxldGVkJyxcbiAgRk9SVU06ICdmb3J1bScsXG4gIEdBUzogJ2dhcycsXG4gIEdBVkVMOiAnZ2F2ZWwnLFxuICBHRUFSUzogJ2dlYXJzJyxcbiAgR0xPQkVfTE9DQVRJT05fUElOOiAnZ2xvYmUtbG9jYXRpb24tcGluJyxcbiAgR09PR0xFOiAnZ29vZ2xlJyxcbiAgR09PR0xFX1BBWTogJ2dvb2dsZS1wYXknLFxuICBHUklEOiAnZ3JpZCcsXG4gIEhBTkRTSEFLRTogJ2hhbmRzaGFrZScsXG4gIEhBTkRZTUFOOiAnaGFuZHltYW4nLFxuICBIRUlHSFQ6ICdoZWlnaHQnLFxuICBIRUxQOiAnaGVscCcsXG4gIElORk86ICdpbmZvJyxcbiAgSU5GT1JNQVRJT046ICdpbmZvcm1hdGlvbicsXG4gIElOU0VSVF9URVhUOiAnaW5zZXJ0LXRleHQnLFxuICBJTlNUQUdSQU06ICdpbnN0YWdyYW0nLFxuICBJT1NfU0hBUkU6ICdpb3Mtc2hhcmUnLFxuICBMQVlPVVQ6ICdsYXlvdXQnLFxuICBMRVZFTExJTkdfSkFDSzogJ2xldmVsbGluZy1qYWNrJyxcbiAgTElOS0VEX0lOOiAnbGlua2VkIGluJyxcbiAgTE9DQUxfU0hJUFBJTkc6ICdsb2NhbC1zaGlwcGluZycsXG4gIExPQ0s6ICdsb2NrJyxcbiAgTUFJTDogJ21haWwnLFxuICBNRU5VOiAnbWVudScsXG4gIE1PTkVZX0JBRzogJ21vbmV5LWJhZycsXG4gIE1PUkVfSE9SSVo6ICdtb3JlLWhvcml6JyxcbiAgTk9USUZJQ0FUSU9OUzogJ25vdGlmaWNhdGlvbnMnLFxuICBPRE9NRVRFUjogJ29kb21ldGVyJyxcbiAgT1BFTl9JTl9ORVc6ICdvcGVuLWluLW5ldycsXG4gIFBBTEVUVEU6ICdwYWxldHRlJyxcbiAgUEFZUEFMOiAncGF5cGFsJyxcbiAgUEVSU09OOiAncGVyc29uJyxcbiAgUEVSU09OX1NFQVJDSDogJ3BlcnNvbi1zZWFyY2gnLFxuICBQSE9UT19DQU1FUkE6ICdwaG90by1jYW1lcmEnLFxuICBQSU5URVJFU1Q6ICdwaW50ZXJlc3QnLFxuICBQTEFZX0FSUk9XOiAncGxheS1hcnJvdycsXG4gIFBPTElDWTogJ3BvbGljeScsXG4gIFBPV0VSOiAncG93ZXInLFxuICBQT1dFUl9PRkY6ICdwb3dlci1vZmYnLFxuICBQUklPUklUWV9ISUdIOiAncHJpb3JpdHktaGlnaCcsXG4gIFJFTU9WRTogJ3JlbW92ZScsXG4gIFJFUVVFU1RfUVVPVEU6ICdyZXF1ZXN0LXF1b3RlJyxcbiAgUkVTRVRfV1JFTkNIOiAncmVzZXQtd3JlbmNoJyxcbiAgUk9BRDogJ3JvYWQnLFxuICBST1VOREVEX0NPUk5FUjogJ3JvdW5kZWQtY29ybmVyJyxcbiAgUlVMRVI6ICdydWxlcicsXG4gIFNBSUxJTkc6ICdzYWlsaW5nJyxcbiAgU0NIT09MOiAnc2Nob29sJyxcbiAgU0VBUkNIOiAnc2VhcmNoJyxcbiAgU0VBVElORzogJ3NlYXRpbmcnLFxuICBTRUxMOiAnc2VsbCcsXG4gIFNFTlNPUlM6ICdzZW5zb3JzJyxcbiAgU0VUVElOR1M6ICdzZXR0aW5ncycsXG4gIFNIQVJFOiAnc2hhcmUnLFxuICBTSElFTERfQ0hFQ0s6ICdzaGllbGQtY2hlY2snLFxuICBTSE9QUElOR19DQVJUOiAnc2hvcHBpbmctY2FydCcsXG4gIFNMRUVQUzogJ3NsZWVwcycsXG4gIFNNUzogJ3NtcycsXG4gIFNOT1dGTEFLRTogJ3Nub3dmbGFrZScsXG4gIFNUQVI6ICdzdGFyJyxcbiAgU1RBUl9GSUxMRUQ6ICdzdGFyLWZpbGxlZCcsXG4gIFNUQVJfSEFMRjogJ3N0YXItaGFsZicsXG4gIFNVTU1BUklaRTogJ3N1bW1hcml6ZScsXG4gIFNXQVBfSE9SSVo6ICdzd2FwLWhvcml6JyxcbiAgU1dBUF9WRVJUOiAnc3dhcC12ZXJ0JyxcbiAgVEhSRUVfRF9ST1RBVElPTjogJ3RocmVlLWQtcm90YXRpb24nLFxuICBUSFVNQl9VUDogJ3RodW1iLXVwJyxcbiAgVFJFTkRJTkdfRE9XTjogJ3RyZW5kaW5nLWRvd24nLFxuICBUUk9QSFk6ICd0cm9waHknLFxuICBUVU5FOiAndHVuZScsXG4gIFRXSVRURVI6ICd0d2l0dGVyJyxcbiAgVU1CUkVMTEE6ICd1bWJyZWxsYScsXG4gIFZFUklGSUVEOiAndmVyaWZpZWQnLFxuICBWSURFT0NBTTogJ3ZpZGVvY2FtJyxcbiAgVklFV19JTl9BUjogJ3ZpZXctaW4tYXInLFxuICBWSVNJQklMSVRZOiAndmlzaWJpbGl0eScsXG4gIFZPTFVNRV9PRkY6ICd2b2x1bWUtb2ZmJyxcbiAgVk9MVU1FX09OOiAndm9sdW1lLW9uJyxcbiAgV0FSRUhPVVNFOiAnd2FyZWhvdXNlJyxcbiAgV0FSTklORzogJ3dhcm5pbmcnLFxuICBXQVRFUjogJ3dhdGVyJyxcbiAgV0VJR0hUOiAnd2VpZ2h0JyxcbiAgV0lEVEg6ICd3aWR0aCcsXG4gIFdPUktTUEFDRV9QUkVNSVVNOiAnd29ya3NwYWNlLXByZW1pdW0nLFxuICBXUkVOQ0g6ICd3cmVuY2gnLFxuICBZT1VUVUJFOiAneW91dHViZScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgSUNPTl9SRUFMTSA9IHtcbiAgQVRWOiB7XG4gICAgQVRWOiAnYXR2LWF0dicsXG4gICAgRFVORV9CVUdHWTogJ2F0di1kdW5lLWJ1Z2d5JyxcbiAgICBHT0xGX0NBUlQ6ICdhdHYtZ29sZi1jYXJ0JyxcbiAgICBHT19LQVJUOiAnYXR2LWdvLWthcnQnLFxuICAgIFNBTkRfUkFJTDogJ2F0di1zYW5kLXJhaWwnLFxuICAgIFNJREVfQllfU0lERTogJ2F0di1zaWRlLWJ5LXNpZGUnLFxuICAgIFRSQUlMRVI6ICdhdHYtdHJhaWxlcicsXG4gIH0sXG4gIEJPQVRNQVJUOiB7XG4gICAgUFdDOiAnYm9hdG1hcnQtcHdjJyxcbiAgICBUUkFJTEVSOiAnYm9hdG1hcnQtdHJhaWxlcicsXG4gIH0sXG4gIFJWOiB7XG4gICAgQ0xBU1NfQTogJ3J2LWNsYXNzLWEnLFxuICAgIENMQVNTX0I6ICdydi1jbGFzcy1iJyxcbiAgICBDTEFTU19DOiAncnYtY2xhc3MtYycsXG4gICAgRklGVEhfV0hFRUw6ICdydi1maWZ0aC13aGVlbCcsXG4gICAgRklTSF9IT1VTRTogJ3J2LWZpc2gtaG91c2UnLFxuICAgIFBBUktfTU9ERUw6ICdydi1wYXJrLW1vZGVsJyxcbiAgICBQT1BfVVBfQ0FNUEVSOiAncnYtcG9wLXVwLWNhbXBlcicsXG4gICAgVFJBVkVMX1RSQUlMRVI6ICdydi10cmF2ZWwtdHJhaWxlcicsXG4gICAgVFJVQ0tfQ0FNUEVSOiAncnYtdHJ1Y2stY2FtcGVyJyxcbiAgfSxcbn0gYXMgY29uc3Q7XG5cbnR5cGUgUmVhbG1LZXlzV2l0aEljb25zID0gRXh0cmFjdDxSZWFsbUtleSwga2V5b2YgdHlwZW9mIElDT05fUkVBTE0+O1xudHlwZSBSZWFsbUljb24gPSB7XG4gIFtSZWFsbUtleSBpbiBSZWFsbUtleXNXaXRoSWNvbnNdOiAodHlwZW9mIElDT05fUkVBTE0pW1JlYWxtS2V5XVtrZXlvZiAodHlwZW9mIElDT05fUkVBTE0pW1JlYWxtS2V5XV07XG59W1JlYWxtS2V5c1dpdGhJY29uc107XG5cbmV4cG9ydCB0eXBlIEdsb2JhbEljb24gPSAodHlwZW9mIElDT04pW2tleW9mIHR5cGVvZiBJQ09OXTtcbmV4cG9ydCB0eXBlIEljb24gPSBHbG9iYWxJY29uIHwgUmVhbG1JY29uO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVEaXZpZGVyIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlRGl2aWRlci52dWUnO1xuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaGFzQm90dG9tRGl2aWRlcj86IGJvb2xlYW47XG4gICAgaGFzVG9wRGl2aWRlcj86IGJvb2xlYW47XG4gICAgaXNPcHRpb25hbD86IGJvb2xlYW47XG4gICAgbGFiZWw6IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGhhc0JvdHRvbURpdmlkZXI6IGZhbHNlLFxuICAgIGhhc1RvcERpdmlkZXI6IGZhbHNlLFxuICAgIGlzT3B0aW9uYWw6IGZhbHNlLFxuICB9KTtcblxuICBjb25zdCBpc0V4cGFuZGVkID0gZGVmaW5lTW9kZWw8Ym9vbGVhbj4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICBjb25zdCBoYW5kbGVUb2dnbGVDbGljayA9ICgpID0+IHtcbiAgICBpc0V4cGFuZGVkLnZhbHVlID0gIWlzRXhwYW5kZWQudmFsdWU7XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1hY2NvcmRpb24taXRlbSddXCI+XG4gICAgPFRpZGVEaXZpZGVyIHYtaWY9XCJwcm9wcy5oYXNUb3BEaXZpZGVyXCIgLz5cblxuICAgIDxidXR0b25cbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtYWNjb3JkaW9uLWhlYWQnLFxuICAgICAgICBDU1MuQUxJR04uWC5MRUZULFxuICAgICAgICBDU1MuQVhJUzEuQkVUV0VFTixcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLlBBRERJTkcuWS5IQUxGLFxuICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgIF1cIlxuICAgICAgQGNsaWNrPVwiaGFuZGxlVG9nZ2xlQ2xpY2tcIlxuICAgID5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuSEFMRiwgQ1NTLkZPTlQuUk9MRS5MQUJFTF8xX1NFTUlCT0xEXVwiPlxuICAgICAgICA8c3Bhbj57eyBwcm9wcy5sYWJlbCB9fTwvc3Bhbj5cblxuICAgICAgICA8c3BhblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgICB2LWlmPVwicHJvcHMuaXNPcHRpb25hbFwiXG4gICAgICAgID5cbiAgICAgICAgICAob3B0aW9uYWwpXG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmljb249XCJpc0V4cGFuZGVkID8gSUNPTi5FWFBBTkRfTEVTUyA6IElDT04uRVhQQU5EX01PUkVcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuTEFSR0VcIlxuICAgICAgLz5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWFjY29yZGlvbi1ib2R5JywgaXNFeHBhbmRlZCA/ICdleHBhbmRlZCcgOiAnY29sbGFwc2VkJywgQ1NTLkRJU1BMQVkuR1JJRF1cIj5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5PVkVSRkxPVy5ZLkhJRERFTiwgQ1NTLk1BUkdJTi5ZLk9ORSwgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVF1cIj5cbiAgICAgICAgPHNsb3QgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPFRpZGVEaXZpZGVyIHYtaWY9XCJwcm9wcy5oYXNCb3R0b21EaXZpZGVyXCIgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1hY2NvcmRpb24taXRlbSB7XG4gICAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbiAgfVxuXG4gIC50aWRlLWFjY29yZGlvbi1ib2R5IHtcbiAgICB0cmFuc2l0aW9uOiBncmlkLXRlbXBsYXRlLXJvd3MgdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWFjY29yZGlvbi1ib2R5LmV4cGFuZGVkIHtcbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6IG1pbm1heCgwcHgsIDFmcik7XG4gIH1cblxuICAudGlkZS1hY2NvcmRpb24tYm9keS5jb2xsYXBzZWQge1xuICAgIGdyaWQtdGVtcGxhdGUtcm93czogbWlubWF4KDBweCwgMGZyKTtcbiAgfVxuPC9zdHlsZT5cbiIsImV4cG9ydCBjb25zdCBFTEVNRU5UID0ge1xuICBCVVRUT046ICdidXR0b24nLFxuICBMSU5LOiAnYScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgRUxFTUVOVF9CUk9BRCA9IHtcbiAgQlVUVE9OOiAnYnV0dG9uJyxcbiAgRElWOiAnZGl2JyxcbiAgTElOSzogJ2EnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgRWxlbWVudCA9ICh0eXBlb2YgRUxFTUVOVClba2V5b2YgdHlwZW9mIEVMRU1FTlRdO1xuZXhwb3J0IHR5cGUgRWxlbWVudEJyb2FkID0gKHR5cGVvZiBFTEVNRU5UX0JST0FEKVtrZXlvZiB0eXBlb2YgRUxFTUVOVF9CUk9BRF07XG4iLCJpbXBvcnQgeyBpbmplY3QsIHByb3ZpZGUgfSBmcm9tICd2dWUnO1xuXG5pbXBvcnQgeyBFTEVNRU5UIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcblxuaW1wb3J0IHR5cGUgeyBDb21wb25lbnQgfSBmcm9tICd2dWUnO1xuXG50eXBlIFRpZGVDb25maWcgPSB7XG4gIGxpbmtDb21wb25lbnQ6IENvbXBvbmVudCB8IHR5cGVvZiBFTEVNRU5ULkxJTks7XG59O1xuXG5jb25zdCB0aWRlQ29uZmlnRGVmYXVsdHM6IFRpZGVDb25maWcgPSB7IGxpbmtDb21wb25lbnQ6IEVMRU1FTlQuTElOSyB9O1xuXG5jb25zdCBDT05GSUdfS0VZID0gU3ltYm9sKCd0aWRlLWNvbmZpZycpO1xuXG5leHBvcnQgY29uc3QgcHJvdmlkZVRpZGVDb25maWcgPSAoY29uZmlnOiBQYXJ0aWFsPFRpZGVDb25maWc+ID0ge30pID0+IHtcbiAgY29uc3QgY29uZmlnV2l0aERlZmF1bHRzOiBUaWRlQ29uZmlnID0geyAuLi50aWRlQ29uZmlnRGVmYXVsdHMsIC4uLmNvbmZpZyB9O1xuXG4gIHByb3ZpZGU8VGlkZUNvbmZpZz4oQ09ORklHX0tFWSwgY29uZmlnV2l0aERlZmF1bHRzKTtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VUaWRlQ29uZmlnID0gKCkgPT4ge1xuICByZXR1cm4gaW5qZWN0PFRpZGVDb25maWc+KENPTkZJR19LRVksIHRpZGVDb25maWdEZWZhdWx0cyk7XG59O1xuIiwiPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbiAgaW1wb3J0IHsgdXNlVGlkZUNvbmZpZyB9IGZyb20gJ0AvY29tcG9zYWJsZXMvdXNlVGlkZUNvbmZpZyc7XG5cbiAgY29uc3QgeyBsaW5rQ29tcG9uZW50IH0gPSB1c2VUaWRlQ29uZmlnKCk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50IDppcz1cImxpbmtDb21wb25lbnRcIj5cbiAgICA8c2xvdCAvPlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSB2dWUvc29ydC1rZXlzICovXG5cbmV4cG9ydCBjb25zdCBQUklPUklUWSA9IHtcbiAgUFJJTUFSWTogJ3ByaW1hcnknLFxuICBTRUNPTkRBUlk6ICdzZWNvbmRhcnknLFxuICBURVJUSUFSWTogJ3RlcnRpYXJ5JyxcbiAgUVVBVEVSTkFSWTogJ3F1YXRlcm5hcnknLFxuICBGTE9BVElORzogJ2Zsb2F0aW5nJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFByaW9yaXR5ID0gKHR5cGVvZiBQUklPUklUWSlba2V5b2YgdHlwZW9mIFBSSU9SSVRZXTtcbiIsImV4cG9ydCBjb25zdCBUQVJHRVQgPSB7XG4gIEJMQU5LOiAnX2JsYW5rJyxcbiAgU0VMRjogdW5kZWZpbmVkLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgVGFyZ2V0ID0gKHR5cGVvZiBUQVJHRVQpW2tleW9mIHR5cGVvZiBUQVJHRVRdO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBJbnRlcm5hbEJhc2VMaW5rIGZyb20gJ0AvY29tcG9uZW50cy9JbnRlcm5hbEJhc2VMaW5rLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgRUxFTUVOVCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB7IFBSSU9SSVRZIH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRBUkdFVCB9IGZyb20gJ0AvdHlwZXMvVGFyZ2V0JztcblxuICBpbXBvcnQgdHlwZSB7IEVsZW1lbnQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgdHlwZSB7IFByaW9yaXR5IH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG4gIGltcG9ydCB0eXBlIHsgQnV0dG9uVHlwZSB9IGZyb20gJ0AvdHlwZXMvVHlwZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgZWxlbWVudD86IEVsZW1lbnQ7XG4gICAgaHJlZj86IHN0cmluZztcbiAgICBpY29uOiBJY29uO1xuICAgIGlzTmV3VGFiPzogYm9vbGVhbjtcbiAgICBwcmlvcml0eT86IFByaW9yaXR5O1xuICAgIHR5cGU/OiBCdXR0b25UeXBlO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGVsZW1lbnQ6IEVMRU1FTlQuQlVUVE9OLFxuICAgIGhyZWY6IHVuZGVmaW5lZCxcbiAgICBpY29uOiB1bmRlZmluZWQsXG4gICAgaXNOZXdUYWI6IGZhbHNlLFxuICAgIHByaW9yaXR5OiBQUklPUklUWS5QUklNQVJZLFxuICAgIHR5cGU6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgdHlwZUF0dHJpYnV0ZSA9IGNvbXB1dGVkPHN0cmluZyB8IHVuZGVmaW5lZD4oKCkgPT5cbiAgICBwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkJVVFRPTiA/IHByb3BzLnR5cGUgPz8gRUxFTUVOVC5CVVRUT04gOiB1bmRlZmluZWRcbiAgKTtcblxuICBjb25zdCByb290RWxlbWVudCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgPyBJbnRlcm5hbEJhc2VMaW5rIDogcHJvcHMuZWxlbWVudCkpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudFxuICAgIDphcmlhLWxhYmVsPVwicHJvcHMuaWNvblwiXG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtYnV0dG9uLWljb24nLFxuICAgICAgcHJvcHMucHJpb3JpdHkgJiYgYHRpZGUtYnV0dG9uLSR7cHJvcHMucHJpb3JpdHl9YCxcbiAgICAgIFtDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzEuQ0VOVEVSLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuQk9SREVSLlJBRElVUy5GVUxMLCBDU1MuUEFERElORy5GVUxMLkhBTEZdLFxuICAgICAgcHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LID8gW0NTUy5VTkRFUkxJTkUuUkVTVC5PRkZdIDogJycsXG4gICAgXVwiXG4gICAgOmRpc2FibGVkPVwicHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVC5CVVRUT04gJiYgcHJvcHMuZGlzYWJsZWRcIlxuICAgIDpocmVmPVwicHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LICYmIHByb3BzLmhyZWYgPyBwcm9wcy5ocmVmIDogdW5kZWZpbmVkXCJcbiAgICA6dGFyZ2V0PVwicHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LICYmIHByb3BzLmlzTmV3VGFiID8gVEFSR0VULkJMQU5LIDogVEFSR0VULlNFTEZcIlxuICAgIDp0eXBlPVwidHlwZUF0dHJpYnV0ZVwiXG4gICAgOmlzPVwicm9vdEVsZW1lbnRcIlxuICA+XG4gICAgPFRpZGVJY29uXG4gICAgICA6aWNvbj1cInByb3BzLmljb25cIlxuICAgICAgOnNpemU9XCJTSVpFLkxBUkdFXCJcbiAgICAgIHYtaWY9XCJwcm9wcy5pY29uXCJcbiAgICAvPlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IEludGVybmFsQmFzZUxpbmsgZnJvbSAnQC9jb21wb25lbnRzL0ludGVybmFsQmFzZUxpbmsudnVlJztcbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBFTEVNRU5UIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBUQVJHRVQgfSBmcm9tICdAL3R5cGVzL1RhcmdldCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBFbGVtZW50IH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGVsZW1lbnQ/OiBFbGVtZW50O1xuICAgIGhyZWY/OiBzdHJpbmc7XG4gICAgaWNvbkxlYWRpbmc/OiBJY29uO1xuICAgIGljb25UcmFpbGluZz86IEljb247XG4gICAgaXNOZXdUYWI/OiBib29sZWFuO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgc3VidGxlPzogYm9vbGVhbjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGVsZW1lbnQ6IEVMRU1FTlQuTElOSyxcbiAgICBocmVmOiB1bmRlZmluZWQsXG4gICAgaWNvbkxlYWRpbmc6IHVuZGVmaW5lZCxcbiAgICBpY29uVHJhaWxpbmc6IHVuZGVmaW5lZCxcbiAgICBpc05ld1RhYjogZmFsc2UsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBzdWJ0bGU6IGZhbHNlLFxuICB9KTtcblxuICBjb25zdCByb290RWxlbWVudCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgPyBJbnRlcm5hbEJhc2VMaW5rIDogcHJvcHMuZWxlbWVudCkpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudFxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWxpbmsnLFxuICAgICAgQ1NTLkRJU1BMQVkuSU5MSU5FLFxuICAgICAgQ1NTLkFMSUdOLlguTEVGVCxcbiAgICAgIHN1YnRsZSA/IFtDU1MuVU5ERVJMSU5FLlJFU1QuT0ZGLCBDU1MuVU5ERVJMSU5FLkhPVkVSLk9OXSA6IFtDU1MuVU5ERVJMSU5FLlJFU1QuT04sIENTUy5VTkRFUkxJTkUuSE9WRVIuT0ZGXSxcbiAgICBdXCJcbiAgICA6aHJlZj1cInByb3BzLmhyZWZcIlxuICAgIDp0YXJnZXQ9XCJwcm9wcy5pc05ld1RhYiA/IFRBUkdFVC5CTEFOSyA6IFRBUkdFVC5TRUxGXCJcbiAgICA6dHlwZT1cImVsZW1lbnQgPT09IEVMRU1FTlQuQlVUVE9OID8gRUxFTUVOVC5CVVRUT04gOiB1bmRlZmluZWRcIlxuICAgIDppcz1cInJvb3RFbGVtZW50XCJcbiAgPlxuICAgIDxUaWRlSWNvblxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLklOTElORV9CTE9DSywgQ1NTLkFMSUdOLlkuTUlERExFLCBDU1MuTUFSR0lOLlJJR0hULlFVQVJURVJdXCJcbiAgICAgIDppY29uPVwicHJvcHMuaWNvbkxlYWRpbmdcIlxuICAgICAgdi1pZj1cInByb3BzLmljb25MZWFkaW5nXCJcbiAgICAvPlxuXG4gICAgPHNwYW4gOmNsYXNzPVwiW0NTUy5BTElHTi5ZLk1JRERMRV1cIj5cbiAgICAgIHt7IHByb3BzLmxhYmVsIH19XG4gICAgPC9zcGFuPlxuXG4gICAgPFRpZGVJY29uXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuSU5MSU5FX0JMT0NLLCBDU1MuQUxJR04uWS5NSURETEUsIENTUy5NQVJHSU4uTEVGVC5RVUFSVEVSXVwiXG4gICAgICA6aWNvbj1cInByb3BzLmljb25UcmFpbGluZ1wiXG4gICAgICB2LWlmPVwicHJvcHMuaWNvblRyYWlsaW5nXCJcbiAgICAvPlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG4iLCJleHBvcnQgY29uc3QgQUxFUlQgPSB7XG4gIEVSUk9SOiAnZXJyb3InLFxuICBJTkZPOiAnaW5mbycsXG4gIFNVQ0NFU1M6ICdzdWNjZXNzJyxcbiAgV0FSTklORzogJ3dhcm5pbmcnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgQWxlcnQgPSAodHlwZW9mIEFMRVJUKVtrZXlvZiB0eXBlb2YgQUxFUlRdO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgQ29tbWVudCwgY29tcHV0ZWQsIHVzZVNsb3RzIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUJ1dHRvbkljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IFRpZGVMaW5rIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlTGluay52dWUnO1xuICBpbXBvcnQgeyBBTEVSVCB9IGZyb20gJ0AvdHlwZXMvQWxlcnQnO1xuICBpbXBvcnQgeyBFTEVNRU5UIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFBSSU9SSVRZIH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBBbGVydCB9IGZyb20gJ0AvdHlwZXMvQWxlcnQnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaGVhZGluZz86IHN0cmluZztcbiAgICBjdGFMYWJlbD86IHN0cmluZztcbiAgICBpc0Rpc21pc3NpYmxlPzogYm9vbGVhbjtcbiAgICBpc1RvYXN0PzogYm9vbGVhbjtcbiAgICB0eXBlPzogQWxlcnQ7XG4gIH07XG5cbiAgdHlwZSBFbWl0cyA9IHtcbiAgICAoZXZlbnQ6ICdjbG9zZScpOiB2b2lkO1xuICAgIChldmVudDogJ2N0YUNsaWNrJyk6IHZvaWQ7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBjdGFMYWJlbDogdW5kZWZpbmVkLFxuICAgIGhlYWRpbmc6IHVuZGVmaW5lZCxcbiAgICBpc0Rpc21pc3NpYmxlOiB0cnVlLFxuICAgIGlzVG9hc3Q6IGZhbHNlLFxuICAgIHR5cGU6IEFMRVJULklORk8sXG4gIH0pO1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czxFbWl0cz4oKTtcbiAgY29uc3Qgc2xvdHMgPSB1c2VTbG90cygpO1xuICBjb25zdCBoYXNCb2R5ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG5vZGVzID0gc2xvdHMuZGVmYXVsdD8uKCk7XG4gICAgaWYgKCFub2RlcykgcmV0dXJuIGZhbHNlO1xuXG4gICAgcmV0dXJuIG5vZGVzLnNvbWUoXG4gICAgICAobm9kZSkgPT4gbm9kZS50eXBlICE9PSBDb21tZW50ICYmICh0eXBlb2Ygbm9kZS5jaGlsZHJlbiAhPT0gJ3N0cmluZycgfHwgbm9kZS5jaGlsZHJlbi50cmltKCkubGVuZ3RoID4gMClcbiAgICApO1xuICB9KTtcblxuICBjb25zdCBpY29uVHlwZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAocHJvcHMudHlwZSA9PT0gQUxFUlQuRVJST1IpIHJldHVybiBJQ09OLlBSSU9SSVRZX0hJR0g7XG4gICAgaWYgKHByb3BzLnR5cGUgPT09IEFMRVJULlNVQ0NFU1MpIHJldHVybiBJQ09OLkNIRUNLO1xuICAgIGlmIChwcm9wcy50eXBlID09PSBBTEVSVC5XQVJOSU5HKSByZXR1cm4gSUNPTi5XQVJOSU5HO1xuICAgIHJldHVybiBJQ09OLklORk9STUFUSU9OO1xuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICBwcm9wcy50eXBlLFxuICAgICAgJ3RpZGUtYWxlcnQnLFxuICAgICAgQ1NTLkRJU1BMQVkuR1JJRCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgQ1NTLlBBRERJTkcuRlVMTC5PTkUsXG4gICAgICAhcHJvcHMuaXNUb2FzdCAmJiBwcm9wcy50eXBlID09PSBBTEVSVC5FUlJPUiA/IFtDU1MuQkcuR0xPQkFMLlNVUkZBQ0UuRVJST1IsIENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLkVSUk9SXSA6ICcnLFxuICAgICAgIXByb3BzLmlzVG9hc3QgJiYgcHJvcHMudHlwZSA9PT0gQUxFUlQuSU5GTyA/IFtDU1MuQkcuR0xPQkFMLlNVUkZBQ0UuSU5GTywgQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuSU5GT10gOiAnJyxcbiAgICAgICFwcm9wcy5pc1RvYXN0ICYmIHByb3BzLnR5cGUgPT09IEFMRVJULlNVQ0NFU1NcbiAgICAgICAgPyBbQ1NTLkJHLkdMT0JBTC5TVVJGQUNFLlNVQ0NFU1MsIENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLlNVQ0NFU1NdXG4gICAgICAgIDogJycsXG4gICAgICAhcHJvcHMuaXNUb2FzdCAmJiBwcm9wcy50eXBlID09PSBBTEVSVC5XQVJOSU5HXG4gICAgICAgID8gW0NTUy5CRy5HTE9CQUwuU1VSRkFDRS5XQVJOSU5HLCBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5XQVJOSU5HXVxuICAgICAgICA6ICcnLFxuICAgICAgcHJvcHMuaXNUb2FzdCA/IFtDU1MuQkcuU0VDT05EQVJZLCBDU1MuRk9OVC5DT0xPUi5TRUNPTkRBUlksIENTUy5TSEFET1cuQk9UVE9NXSA6IENTUy5CT1JERVIuTEVGVC5UV08sXG4gICAgXVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWFsZXJ0LWljb24nLFxuICAgICAgICBDU1MuUEFERElORy5GVUxMLlFVQVJURVIsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICAgIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuSU5WRVJTRSxcbiAgICAgICAgcHJvcHMudHlwZSA9PT0gQUxFUlQuRVJST1IgJiYgQ1NTLkJHLkdMT0JBTC5QUklNQVJZLkVSUk9SLFxuICAgICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5JTkZPICYmIENTUy5CRy5HTE9CQUwuUFJJTUFSWS5JTkZPLFxuICAgICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5TVUNDRVNTICYmIENTUy5CRy5HTE9CQUwuUFJJTUFSWS5TVUNDRVNTLFxuICAgICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5XQVJOSU5HICYmIENTUy5CRy5HTE9CQUwuUFJJTUFSWS5XQVJOSU5HLFxuICAgICAgXVwiXG4gICAgICB2LWlmPVwiIXByb3BzLmlzVG9hc3RcIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6aWNvbj1cImljb25UeXBlXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWFsZXJ0LWhlYWRpbmcnLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uUk9XLFxuICAgICAgICAhaGFzQm9keSA/IFtDU1MuQVhJUzEuQkVUV0VFTiwgQ1NTLk1BUkdJTi5SSUdIVC5IQUxGXSA6ICcnLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPHNwYW4gOmNsYXNzPVwiQ1NTLkZPTlQuUk9MRS5MQUJFTF8yX1NFTUlCT0xEXCI+e3sgcHJvcHMuaGVhZGluZyB9fTwvc3Bhbj5cblxuICAgICAgPFRpZGVMaW5rXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxJTktfMl1cIlxuICAgICAgICA6ZWxlbWVudD1cIkVMRU1FTlQuQlVUVE9OXCJcbiAgICAgICAgOmxhYmVsPVwicHJvcHMuY3RhTGFiZWxcIlxuICAgICAgICBAY2xpY2s9XCJlbWl0KCdjdGFDbGljaycpXCJcbiAgICAgICAgdi1pZj1cInByb3BzLmN0YUxhYmVsICYmICFoYXNCb2R5XCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgIDpjbGFzcz1cIlsndGlkZS1hbGVydC1jbG9zZScsIENTUy5BWElTMi5DRU5URVIsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgOmljb249XCJJQ09OLkNMT1NFXCJcbiAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgQGNsaWNrPVwiZW1pdCgnY2xvc2UnKVwiXG4gICAgICBhcmlhLWxhYmVsPVwiQ2xvc2UgYWxlcnRcIlxuICAgICAgdi1pZj1cImlzRGlzbWlzc2libGVcIlxuICAgIC8+XG5cbiAgICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1hbGVydC1ib2R5JywgQ1NTLkZPTlQuUk9MRS5CT0RZXzIsICFwcm9wcy5pc1RvYXN0ICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVF1cIj5cbiAgICAgIDxzbG90IC8+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5NQVJHSU4uVE9QLkhBTEZdXCJcbiAgICAgICAgdi1pZj1cInByb3BzLmN0YUxhYmVsICYmIGhhc0JvZHlcIlxuICAgICAgPlxuICAgICAgICA8VGlkZUxpbmtcbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MSU5LXzJdXCJcbiAgICAgICAgICA6ZWxlbWVudD1cIkVMRU1FTlQuQlVUVE9OXCJcbiAgICAgICAgICA6bGFiZWw9XCJwcm9wcy5jdGFMYWJlbFwiXG4gICAgICAgICAgQGNsaWNrPVwiZW1pdCgnY3RhQ2xpY2snKVwiXG4gICAgICAgICAgdi1pZj1cInByb3BzLmN0YUxhYmVsXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWFsZXJ0IHtcbiAgICBncmlkLXRlbXBsYXRlLWFyZWFzOlxuICAgICAgJ2ljb24gaGVhZGluZyBjbG9zZSdcbiAgICAgICcuIGJvZHkgLic7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIHZhcigtLXRpZGUtc2FmZS1mcikgYXV0bztcbiAgICBncmlkLWNvbHVtbi1nYXA6IDAuNXJlbTtcbiAgICBtYXgtd2lkdGg6IDQwcmVtO1xuICB9XG5cbiAgLnRpZGUtYWxlcnQtaWNvbiB7XG4gICAgZ3JpZC1hcmVhOiBpY29uO1xuICB9XG5cbiAgLnRpZGUtYWxlcnQtaGVhZGluZyB7XG4gICAgZ3JpZC1hcmVhOiBoZWFkaW5nO1xuICB9XG5cbiAgLnRpZGUtYWxlcnQtY2xvc2Uge1xuICAgIGdyaWQtYXJlYTogY2xvc2U7XG4gIH1cblxuICAudGlkZS1hbGVydC1ib2R5IHtcbiAgICBncmlkLWFyZWE6IGJvZHk7XG4gIH1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbmV4cG9ydCBjb25zdCBCQURHRV9DT0xPUiA9IHtcbiAgQkxBQ0s6ICdibGFjaycsXG4gIEJMVUU6ICdibHVlJyxcbiAgR1JFRU46ICdncmVlbicsXG4gIExJTUU6ICdsaW1lJyxcbiAgT1JBTkdFOiAnb3JhbmdlJyxcbiAgUFVSUExFOiAncHVycGxlJyxcbiAgUkVEOiAncmVkJyxcbiAgU0FMTU9OOiAnc2FsbW9uJyxcbiAgVEVBTDogJ3RlYWwnLFxuICBZRUxMT1c6ICd5ZWxsb3cnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IEJBREdFX0NPTE9SX0RFVEFJTFM6IFJlY29yZDxcbiAgQmFkZ2VDb2xvcixcbiAge1xuICAgIGJvcmRlckNvbG9yOiBzdHJpbmc7XG4gICAgaWNvbkNvbG9yOiBzdHJpbmc7XG4gIH1cbj4gPSB7XG4gIFtCQURHRV9DT0xPUi5CTEFDS106IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5ISUdILFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxULFxuICB9LFxuICBbQkFER0VfQ09MT1IuQkxVRV06IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuQkxVRSxcbiAgICBpY29uQ29sb3I6IENTUy5GT05ULkNPTE9SLkdMT0JBTC5QUklNQVJZLkJMVUUsXG4gIH0sXG4gIFtCQURHRV9DT0xPUi5HUkVFTl06IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuR1JFRU4sXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5HUkVFTixcbiAgfSxcbiAgW0JBREdFX0NPTE9SLkxJTUVdOiB7XG4gICAgYm9yZGVyQ29sb3I6IENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLkxJTUUsXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5MSU1FLFxuICB9LFxuICBbQkFER0VfQ09MT1IuT1JBTkdFXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5PUkFOR0UsXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5PUkFOR0UsXG4gIH0sXG4gIFtCQURHRV9DT0xPUi5QVVJQTEVdOiB7XG4gICAgYm9yZGVyQ29sb3I6IENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLlBVUlBMRSxcbiAgICBpY29uQ29sb3I6IENTUy5GT05ULkNPTE9SLkdMT0JBTC5QUklNQVJZLlBVUlBMRSxcbiAgfSxcbiAgW0JBREdFX0NPTE9SLlJFRF06IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuUkVELFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLlBSSU1BUlkuUkVELFxuICB9LFxuICBbQkFER0VfQ09MT1IuU0FMTU9OXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5TQUxNT04sXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5TQUxNT04sXG4gIH0sXG4gIFtCQURHRV9DT0xPUi5URUFMXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5URUFMLFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLlBSSU1BUlkuVEVBTCxcbiAgfSxcbiAgW0JBREdFX0NPTE9SLllFTExPV106IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuWUVMTE9XLFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLlBSSU1BUlkuWUVMTE9XLFxuICB9LFxufTtcblxuZXhwb3J0IGNvbnN0IEJBREdFX1RSVVNURUQgPSB7XG4gIFlFQVJTXzEwOiAnMTAnLFxuICBZRUFSU18xNTogJzE1JyxcbiAgWUVBUlNfMjA6ICcyMCcsXG4gIFlFQVJTXzI1OiAnMjUnLFxuICBZRUFSU18zMDogJzMwJyxcbiAgWUVBUlNfMzU6ICczNScsXG4gIFlFQVJTXzU6ICc1Jyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEJhZGdlQ29sb3IgPSAodHlwZW9mIEJBREdFX0NPTE9SKVtrZXlvZiB0eXBlb2YgQkFER0VfQ09MT1JdO1xuZXhwb3J0IHR5cGUgQmFkZ2VUcnVzdGVkWWVhcnMgPSAodHlwZW9mIEJBREdFX1RSVVNURUQpW2tleW9mIHR5cGVvZiBCQURHRV9UUlVTVEVEXTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgQkFER0VfQ09MT1JfREVUQUlMUyB9IGZyb20gJ0AvdHlwZXMvQmFkZ2UnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBCYWRnZUNvbG9yIH0gZnJvbSAnQC90eXBlcy9CYWRnZSc7XG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBjb2xvcj86IEJhZGdlQ29sb3I7XG4gICAgaWNvbkxlYWRpbmc/OiBJY29uO1xuICAgIGlzRmxvYXRpbmc/OiBib29sZWFuO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBjb2xvcjogdW5kZWZpbmVkLFxuICAgIGljb25MZWFkaW5nOiB1bmRlZmluZWQsXG4gICAgaXNGbG9hdGluZzogZmFsc2UsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWJhZGdlJyxcbiAgICAgIHByb3BzLmlzRmxvYXRpbmcgfHwgcHJvcHMuY29sb3IgPyBbQ1NTLkJHLlNVUkZBQ0UuRkxPQVRJTkcsIENTUy5TSEFET1cuQk9UVE9NXSA6IFtDU1MuQkcuU1VSRkFDRS5WQVJJQU5UXSxcbiAgICAgIENTUy5ESVNQTEFZLklOTElORV9GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLlFVQVJURVIsXG4gICAgICBDU1MuUEFERElORy5ZLlFVQVJURVIsXG4gICAgICBDU1MuUEFERElORy5YLkhBTEYsXG4gICAgICBwcm9wcy5jb2xvciAmJiBbQ1NTLkJPUkRFUi5MRUZULlRXTywgQkFER0VfQ09MT1JfREVUQUlMU1twcm9wcy5jb2xvcl0uYm9yZGVyQ29sb3JdLFxuICAgICAgQ1NTLkVMTElQU0lTLFxuICAgICAgQ1NTLkZPTlQuUk9MRS5MQUJFTF8yLFxuICAgICAgQ1NTLldISVRFU1BBQ0VfV1JBUC5PRkYsXG4gICAgXVwiXG4gID5cbiAgICA8VGlkZUljb25cbiAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5TSFJJTksuT0ZGLCBwcm9wcy5jb2xvciAmJiBCQURHRV9DT0xPUl9ERVRBSUxTW3Byb3BzLmNvbG9yXS5pY29uQ29sb3JdXCJcbiAgICAgIDppY29uPVwicHJvcHMuaWNvbkxlYWRpbmdcIlxuICAgICAgdi1pZj1cInByb3BzLmljb25MZWFkaW5nXCJcbiAgICAvPlxuXG4gICAgPHNwYW4gOmNsYXNzPVwiW0NTUy5FTExJUFNJU11cIj57eyBwcm9wcy5sYWJlbCB9fTwvc3Bhbj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBCQURHRV9UUlVTVEVEIH0gZnJvbSAnQC90eXBlcy9CYWRnZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBCYWRnZVRydXN0ZWRZZWFycyB9IGZyb20gJ0AvdHlwZXMvQmFkZ2UnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgeWVhcnM/OiBCYWRnZVRydXN0ZWRZZWFycztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIHllYXJzOiBCQURHRV9UUlVTVEVELllFQVJTXzUsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWJhZGdlLXRydXN0ZWQtcGFydG5lcicsXG4gICAgICBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkJSQU5ELFxuICAgICAgQ1NTLkRJU1BMQVkuSU5MSU5FX0ZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgQ1NTLkVMTElQU0lTLFxuICAgICAgQ1NTLkZPTlQuUk9MRS5MQUJFTF8yLFxuICAgICAgQ1NTLldISVRFU1BBQ0VfV1JBUC5PRkYsXG4gICAgXVwiXG4gID5cbiAgICA8VGlkZUljb25cbiAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5TSFJJTksuT0ZGXVwiXG4gICAgICA6aWNvbj1cIklDT04uQVdBUkRfU1RBUlwiXG4gICAgLz5cblxuICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5FTExJUFNJU11cIj5cbiAgICAgIDxzcGFuPnt7IHByb3BzLnllYXJzIH19IHllYXIgdHJ1c3RlZCBwYXJ0bmVyPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+PC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1iYWRnZS12ZXJpZmllZC12ZWhpY2xlJyxcbiAgICAgIENTUy5CRy5TRUNPTkRBUlksXG4gICAgICBDU1MuRk9OVC5ST0xFLkxBQkVMXzIsXG4gICAgICBDU1MuRk9OVC5DT0xPUi5TRUNPTkRBUlksXG4gICAgICBDU1MuRElTUExBWS5JTkxJTkVfRkxFWCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5RVUFSVEVSLFxuICAgICAgQ1NTLlBBRERJTkcuWS5RVUFSVEVSLFxuICAgICAgQ1NTLlBBRERJTkcuWC5IQUxGLFxuICAgICAgQ1NTLkVMTElQU0lTLFxuICAgICAgQ1NTLldISVRFU1BBQ0VfV1JBUC5PRkYsXG4gICAgXVwiXG4gID5cbiAgICA8VGlkZUljb25cbiAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5TSFJJTksuT0ZGXVwiXG4gICAgICA6aWNvbj1cIklDT04uVkVSSUZJRURcIlxuICAgIC8+XG5cbiAgICA8c3BhbiA6Y2xhc3M9XCJbQ1NTLkVMTElQU0lTXVwiPlZlcmlmaWVkIHZlaGljbGU8L3NwYW4+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaWNvbiB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtaW5mby1wcmltYXJ5KTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCBJbnRlcm5hbEJhc2VMaW5rIGZyb20gJ0AvY29tcG9uZW50cy9JbnRlcm5hbEJhc2VMaW5rLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBCcmVhZENydW1iIH0gZnJvbSAnQC90eXBlcy9CcmVhZENydW1iJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGJyZWFkQ3J1bWJzOiBCcmVhZENydW1iW107XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBicmVhZENydW1iczogdW5kZWZpbmVkLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDx1bCA6Y2xhc3M9XCJbJ3RpZGUtYnJlYWQtY3J1bWJzJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuTElTVF9CVUxMRVRTLk9GRl1cIj5cbiAgICA8dGVtcGxhdGVcbiAgICAgIDprZXk9XCJjcnVtYi5sYWJlbFwiXG4gICAgICB2LWZvcj1cIihjcnVtYiwgaW5kZXgpIGluIHByb3BzLmJyZWFkQ3J1bWJzXCJcbiAgICA+XG4gICAgICA8bGkgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuQk9EWV8yXVwiPlxuICAgICAgICA8SW50ZXJuYWxCYXNlTGlua1xuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxJTktfMiwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgOmRhdGEtdHJhY2s9XCJjcnVtYi5kYXRhVHJhY2sgfHwgdW5kZWZpbmVkXCJcbiAgICAgICAgICA6aHJlZj1cImNydW1iLnVybFwiXG4gICAgICAgICAgdi1pZj1cImNydW1iLnVybFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBjcnVtYi5sYWJlbCB9fVxuICAgICAgICA8L0ludGVybmFsQmFzZUxpbms+XG5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8yLCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgICA6ZGF0YS10cmFjaz1cImNydW1iLmRhdGFUcmFjayB8fCB1bmRlZmluZWRcIlxuICAgICAgICAgIHYtZWxzZVxuICAgICAgICA+XG4gICAgICAgICAge3sgY3J1bWIubGFiZWwgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9saT5cblxuICAgICAgPGxpIHYtaWY9XCJwcm9wcy5icmVhZENydW1icyAmJiBpbmRleCA8IHByb3BzLmJyZWFkQ3J1bWJzLmxlbmd0aCAtIDFcIj5cbiAgICAgICAgPFRpZGVJY29uXG4gICAgICAgICAgOmljb249XCJJQ09OLkFSUk9XX1JJR0hUXCJcbiAgICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICAvPlxuICAgICAgPC9saT5cbiAgICA8L3RlbXBsYXRlPlxuICA8L3VsPlxuPC90ZW1wbGF0ZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgSW50ZXJuYWxCYXNlTGluayBmcm9tICdAL2NvbXBvbmVudHMvSW50ZXJuYWxCYXNlTGluay52dWUnO1xuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IEVMRU1FTlQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgeyBQUklPUklUWSB9IGZyb20gJ0AvdHlwZXMvUHJpb3JpdHknO1xuICBpbXBvcnQgeyBTSVpFLCBTSVpFX0JVVFRPTiB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgVEFSR0VUIH0gZnJvbSAnQC90eXBlcy9UYXJnZXQnO1xuXG4gIGltcG9ydCB0eXBlIHsgRWxlbWVudCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB0eXBlIHsgUHJpb3JpdHkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHR5cGUgeyBTaXplQnV0dG9uIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHR5cGUgeyBCdXR0b25UeXBlIH0gZnJvbSAnQC90eXBlcy9UeXBlJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBlbGVtZW50PzogRWxlbWVudDtcbiAgICBocmVmPzogc3RyaW5nO1xuICAgIGljb25MZWFkaW5nPzogSWNvbjtcbiAgICBpY29uVHJhaWxpbmc/OiBJY29uO1xuICAgIGlzTmV3VGFiPzogYm9vbGVhbjtcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIHByaW9yaXR5PzogUHJpb3JpdHk7XG4gICAgc2l6ZT86IFNpemVCdXR0b247XG4gICAgdHlwZT86IEJ1dHRvblR5cGU7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZWxlbWVudDogRUxFTUVOVC5CVVRUT04sXG4gICAgaHJlZjogdW5kZWZpbmVkLFxuICAgIGljb25MZWFkaW5nOiB1bmRlZmluZWQsXG4gICAgaWNvblRyYWlsaW5nOiB1bmRlZmluZWQsXG4gICAgaXNOZXdUYWI6IGZhbHNlLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgcHJpb3JpdHk6IFBSSU9SSVRZLlBSSU1BUlksXG4gICAgc2l6ZTogU0laRV9CVVRUT04uTEFSR0UsXG4gICAgdHlwZTogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCB0eXBlQXR0cmlidXRlID0gY29tcHV0ZWQ8c3RyaW5nIHwgdW5kZWZpbmVkPigoKSA9PlxuICAgIHByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuQlVUVE9OID8gcHJvcHMudHlwZSA/PyBFTEVNRU5ULkJVVFRPTiA6IHVuZGVmaW5lZFxuICApO1xuXG4gIGNvbnN0IHJvb3RFbGVtZW50ID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyA/IEludGVybmFsQmFzZUxpbmsgOiBwcm9wcy5lbGVtZW50KSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtYnV0dG9uJyxcbiAgICAgIHByb3BzLnByaW9yaXR5ICYmIGB0aWRlLWJ1dHRvbi0ke3Byb3BzLnByaW9yaXR5fWAsXG4gICAgICBwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgPyBbQ1NTLkRJU1BMQVkuSU5MSU5FX0ZMRVhdIDogW0NTUy5ESVNQTEFZLkZMRVhdLFxuICAgICAgcHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LID8gQ1NTLlVOREVSTElORS5SRVNULk9GRiA6ICcnLFxuICAgICAgc2l6ZSA9PT0gU0laRV9CVVRUT04uU01BTExcbiAgICAgICAgPyBbQ1NTLkZPTlQuUk9MRS5CVVRUT05fMiwgQ1NTLlBBRERJTkcuWC5PTkUsIENTUy5QQURESU5HLlkuSEFMRiwgQ1NTLkJPUkRFUi5SQURJVVMuUVVBUlRFUl1cbiAgICAgICAgOiBbQ1NTLkZPTlQuUk9MRS5CVVRUT05fMSwgQ1NTLlBBRERJTkcuWC5UV08sIENTUy5QQURESU5HLlkuT05FLCBDU1MuQk9SREVSLlJBRElVUy5IQUxGXSxcbiAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgQ1NTLkZPTlQuUk9MRS5MQUJFTF8xX1NFTUlCT0xELFxuICAgIF1cIlxuICAgIDpkaXNhYmxlZD1cInByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuQlVUVE9OICYmIHByb3BzLmRpc2FibGVkXCJcbiAgICA6aHJlZj1cInByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyAmJiBwcm9wcy5ocmVmID8gcHJvcHMuaHJlZiA6IHVuZGVmaW5lZFwiXG4gICAgOnRhcmdldD1cInByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyAmJiBwcm9wcy5pc05ld1RhYiA/IFRBUkdFVC5CTEFOSyA6IFRBUkdFVC5TRUxGXCJcbiAgICA6dHlwZT1cInR5cGVBdHRyaWJ1dGVcIlxuICAgIDppcz1cInJvb3RFbGVtZW50XCJcbiAgPlxuICAgIDxUaWRlSWNvblxuICAgICAgOmljb249XCJwcm9wcy5pY29uTGVhZGluZ1wiXG4gICAgICA6c2l6ZT1cInNpemUgPT09IFNJWkVfQlVUVE9OLkxBUkdFID8gU0laRS5MQVJHRSA6IFNJWkUuU01BTExcIlxuICAgICAgdi1pZj1cInByb3BzLmljb25MZWFkaW5nXCJcbiAgICAvPlxuXG4gICAge3sgcHJvcHMubGFiZWwgfX1cblxuICAgIDxUaWRlSWNvblxuICAgICAgOmljb249XCJwcm9wcy5pY29uVHJhaWxpbmdcIlxuICAgICAgOnNpemU9XCJzaXplID09PSBTSVpFX0JVVFRPTi5MQVJHRSA/IFNJWkUuTEFSR0UgOiBTSVpFLlNNQUxMXCJcbiAgICAgIHYtaWY9XCJwcm9wcy5pY29uVHJhaWxpbmdcIlxuICAgIC8+XG4gIDwvY29tcG9uZW50PlxuPC90ZW1wbGF0ZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgSW50ZXJuYWxCYXNlTGluayBmcm9tICdAL2NvbXBvbmVudHMvSW50ZXJuYWxCYXNlTGluay52dWUnO1xuICBpbXBvcnQgeyBFTEVNRU5ULCBFTEVNRU5UX0JST0FEIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgRWxlbWVudEJyb2FkIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBlbGVtZW50PzogRWxlbWVudEJyb2FkO1xuICAgIGhyZWY/OiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZyB8IG51bWJlcjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlbGVtZW50OiBFTEVNRU5UX0JST0FELkJVVFRPTixcbiAgICBocmVmOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3Qgcm9vdEVsZW1lbnQgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LID8gSW50ZXJuYWxCYXNlTGluayA6IHByb3BzLmVsZW1lbnQpKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxjb21wb25lbnRcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1idXR0b24taWNvbicsXG4gICAgICBbQ1NTLkRJU1BMQVkuSU5MSU5FX0JMT0NLLCBDU1MuQk9SREVSLlJBRElVUy5GVUxMLCBDU1MuUEFERElORy5GVUxMLkhBTEZdLFxuICAgICAgcHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVF9CUk9BRC5MSU5LID8gW0NTUy5VTkRFUkxJTkUuUkVTVC5PRkZdIDogJycsXG4gICAgICBwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5UX0JST0FELkRJViA/IFtDU1MuQ1VSU09SLlBPSU5URVJdIDogJycsXG4gICAgICBbQ1NTLkZPTlQuUk9MRS5IRUFETElORV8zXSxcbiAgICBdXCJcbiAgICA6ZGlzYWJsZWQ9XCJwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5UX0JST0FELkJVVFRPTiAmJiBwcm9wcy5kaXNhYmxlZFwiXG4gICAgOmhyZWY9XCJwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5UX0JST0FELkxJTksgJiYgcHJvcHMuaHJlZiA/IHByb3BzLmhyZWYgOiB1bmRlZmluZWRcIlxuICAgIDp0eXBlPVwiZWxlbWVudCA9PT0gRUxFTUVOVF9CUk9BRC5CVVRUT04gPyBFTEVNRU5UX0JST0FELkJVVFRPTiA6IHVuZGVmaW5lZFwiXG4gICAgOmlzPVwicm9vdEVsZW1lbnRcIlxuICA+XG4gICAgPHNwYW4gOmNsYXNzPVwiWydsYWJlbCcsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMS5DRU5URVIsIENTUy5BWElTMi5DRU5URVJdXCI+XG4gICAgICB7eyBwcm9wcy5sYWJlbCB9fVxuICAgIDwvc3Bhbj5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1idXR0b24taWNvbixcbiAgLnRpZGUtbGluay1hcy1idXR0b24taWNvbiB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGlkZS13aGl0ZSk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGlkZS13aGl0ZSk7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtc2Vjb25kYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWJ1dHRvbi1pY29uOm5vdCg6ZGlzYWJsZWQpOmhvdmVyLFxuICAudGlkZS1saW5rLWFzLWJ1dHRvbi1pY29uOm5vdCg6ZGlzYWJsZWQpOmhvdmVyIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10aWRlLXN1cmZhY2UtdmFyaWFudCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGlkZS1zdXJmYWNlLXZhcmlhbnQpO1xuICB9XG5cbiAgLnRpZGUtYnV0dG9uLWljb246ZGlzYWJsZWQsXG4gIC50aWRlLWxpbmstYXMtYnV0dG9uLWljb246ZGlzYWJsZWQge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyLWhpZ2gpO1xuICB9XG5cbiAgLnRpZGUtYnV0dG9uLWljb24gLmxhYmVsLFxuICAudGlkZS1saW5rLWFzLWJ1dHRvbi1pY29uIC5sYWJlbCB7XG4gICAgd2lkdGg6IDEuNXJlbTtcbiAgICBoZWlnaHQ6IDEuNXJlbTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IFRhYiB9IGZyb20gJ0AvdHlwZXMvVGFiJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIHRhYnM6IFRhYltdIHwgcmVhZG9ubHkgVGFiW107XG4gIH07XG5cbiAgZGVmaW5lUHJvcHM8UHJvcHM+KCk7XG5cbiAgY29uc3QgY3VycmVudEluZGV4ID0gZGVmaW5lTW9kZWw8bnVtYmVyPih7IHJlcXVpcmVkOiB0cnVlIH0pO1xuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKGluZGV4OiBudW1iZXIpID0+IHtcbiAgICBjdXJyZW50SW5kZXgudmFsdWUgPSBpbmRleDtcbiAgfTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1idXR0b24tc2VnbWVudGVkJyxcbiAgICAgIENTUy5CRy5TVVJGQUNFLlZBUklBTlQsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5GTEVYLlNIUklOSy5PRkYsXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBDU1MuT1ZFUkZMT1cuWFkuQVVUTyxcbiAgICAgIENTUy5QQURESU5HLkZVTEwuUVVBUlRFUixcbiAgICBdXCJcbiAgPlxuICAgIDxidXR0b25cbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtYnV0dG9uLXNlZ21lbnRlZC10YWInLFxuICAgICAgICBpbmRleCA9PT0gY3VycmVudEluZGV4XG4gICAgICAgICAgPyBbQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxULCBDU1MuU0hBRE9XLkJPVFRPTV1cbiAgICAgICAgICA6IFsnaW5hY3RpdmUnLCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdLFxuICAgICAgICBDU1MuQk9SREVSLkZVTEwuVFdPLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgICBDU1MuRkxFWC5HUk9XLk9OLFxuICAgICAgICBDU1MuRk9OVC5ST0xFLkJVVFRPTl8xLFxuICAgICAgICBDU1MuUEFERElORy5YLkhBTEYsXG4gICAgICAgIENTUy5QQURESU5HLlkuUVVBUlRFUixcbiAgICAgICAgQ1NTLldISVRFU1BBQ0VfV1JBUC5PRkYsXG4gICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgXVwiXG4gICAgICA6ZGF0YS10cmFjaz1cInRhYi5kYXRhVHJhY2sgfHwgdW5kZWZpbmVkXCJcbiAgICAgIDprZXk9XCJ0YWIubGFiZWxcIlxuICAgICAgQGNsaWNrPVwiaGFuZGxlQ2xpY2soaW5kZXgpXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgdi1mb3I9XCIodGFiLCBpbmRleCkgaW4gdGFic1wiXG4gICAgPlxuICAgICAgPHNwYW4gOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfMl9TRU1JQk9MRF1cIj5cbiAgICAgICAge3sgdGFiLmxhYmVsIH19XG4gICAgICA8L3NwYW4+XG5cbiAgICAgIDxzcGFuXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzJfU0VNSUJPTERdXCJcbiAgICAgICAgdi1pZj1cInRhYi5jb3VudCAmJiB0YWIuY291bnQgPiAwXCJcbiAgICAgID5cbiAgICAgICAgKHt7IHRhYi5jb3VudCB9fSlcbiAgICAgIDwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1idXR0b24tc2VnbWVudGVkIHtcbiAgICBtYXgtd2lkdGg6IDIzLjNyZW07XG4gICAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbiAgfVxuXG4gIC50aWRlLWJ1dHRvbi1zZWdtZW50ZWQtdGFiIHtcbiAgICBmbGV4OiAxO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC5pbmFjdGl2ZTpub3QoOmhvdmVyKSB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtdmFyaWFudCk7XG4gIH1cblxuICAuaW5hY3RpdmU6aG92ZXIge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtZGVmYXVsdCk7XG4gIH1cbjwvc3R5bGU+XG4iLCJleHBvcnQgY29uc3QgVFlQRV9DQVJEID0ge1xuICBBQ1RJT05BQkxFOiAnYWN0aW9uJyxcbiAgSU5GT1JNQVRJT05BTDogJ2luZm9ybWF0aW9uYWwnLFxuICBTRUxFQ1RBQkxFOiAnc2VsZWN0Jyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIENhcmRUeXBlID0gKHR5cGVvZiBUWVBFX0NBUkQpW2tleW9mIHR5cGVvZiBUWVBFX0NBUkRdO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBJbnRlcm5hbEJhc2VMaW5rIGZyb20gJ0AvY29tcG9uZW50cy9JbnRlcm5hbEJhc2VMaW5rLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgVFlQRV9DQVJEIH0gZnJvbSAnQC90eXBlcy9DYXJkJztcbiAgaW1wb3J0IHsgRUxFTUVOVF9CUk9BRCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBDYXJkVHlwZSB9IGZyb20gJ0AvdHlwZXMvQ2FyZCc7XG4gIGltcG9ydCB0eXBlIHsgRWxlbWVudEJyb2FkIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIGhlYWRpbmc6IHN0cmluZztcbiAgICBpY29uPzogSWNvbjtcbiAgICBzZWxlY3RlZD86IGJvb2xlYW47XG4gICAgdHlwZT86IENhcmRUeXBlO1xuICAgIGhyZWY/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkZXNjcmlwdGlvbjogdW5kZWZpbmVkLFxuICAgIGhyZWY6IHVuZGVmaW5lZCxcbiAgICBpY29uOiB1bmRlZmluZWQsXG4gICAgc2VsZWN0ZWQ6IHVuZGVmaW5lZCxcbiAgICB0eXBlOiBUWVBFX0NBUkQuSU5GT1JNQVRJT05BTCxcbiAgfSk7XG5cbiAgY29uc3Qgcm9vdEVsZW1lbnQgPSBjb21wdXRlZDxFbGVtZW50QnJvYWQgfCB0eXBlb2YgSW50ZXJuYWxCYXNlTGluaz4oKCkgPT5cbiAgICBwcm9wcy5ocmVmID8gSW50ZXJuYWxCYXNlTGluayA6IHByb3BzLnR5cGUgPT09IFRZUEVfQ0FSRC5JTkZPUk1BVElPTkFMID8gRUxFTUVOVF9CUk9BRC5ESVYgOiBFTEVNRU5UX0JST0FELkRJVlxuICApO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudFxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWNhcmQnLFxuICAgICAgQ1NTLkJPUkRFUi5DT0xPUi5MT1csXG4gICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICBDU1MuUEFERElORy5GVUxMLk9ORSxcbiAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgQ1NTLkFMSUdOLlguTEVGVCxcbiAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICB0eXBlICE9PSBUWVBFX0NBUkQuSU5GT1JNQVRJT05BTCAmJiAnaG92ZXJhYmxlJyxcbiAgICAgIHR5cGUgPT09IFRZUEVfQ0FSRC5TRUxFQ1RBQkxFICYmIHNlbGVjdGVkICYmICdzZWxlY3RlZCcsXG4gICAgXVwiXG4gICAgOmhyZWY9XCJocmVmXCJcbiAgICA6dHlwZT1cInJvb3RFbGVtZW50ID09PSBFTEVNRU5UX0JST0FELkJVVFRPTiA/IEVMRU1FTlRfQlJPQUQuQlVUVE9OIDogdW5kZWZpbmVkXCJcbiAgICA6aXM9XCJyb290RWxlbWVudFwiXG4gID5cbiAgICA8VGlkZUljb25cbiAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5HUk9XLk9GRiwgQ1NTLkZMRVguU0hSSU5LLk9GRl1cIlxuICAgICAgOmljb249XCJpY29uXCJcbiAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICB2LWlmPVwiaWNvblwiXG4gICAgLz5cblxuICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5BWElTMi5TVEFSVCwgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLkdBUC5IQUxGXVwiPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8xX1NFTUlCT0xELCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFRdXCI+XG4gICAgICAgIHt7IGhlYWRpbmcgfX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzIsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICB2LWlmPVwiZGVzY3JpcHRpb25cIlxuICAgICAgPlxuICAgICAgICB7eyBkZXNjcmlwdGlvbiB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvY29tcG9uZW50PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtY2FyZC5ob3ZlcmFibGU6bm90KC5zZWxlY3RlZCk6aG92ZXIge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXItcmVzdCk7XG4gIH1cbiAgLnRpZGUtY2FyZC5zZWxlY3RlZCB7XG4gICAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyLWhpZ2gpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiAtMnB4O1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIG9uTW91bnRlZCwgb25Vbm1vdW50ZWQsIHJlZiB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVCdXR0b25JY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQnV0dG9uSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaGFzRG90cz86IGJvb2xlYW47XG4gICAgaXNGbG9hdGluZz86IGJvb2xlYW47XG4gICAgaXNIZWFkbGluZTE/OiBib29sZWFuO1xuICAgIGlzSGlkZWF3YXlCdXR0b25zPzogYm9vbGVhbjtcbiAgICBpc1Njcm9sbEJ5UGFnZT86IGJvb2xlYW47XG4gICAgbWF4RG90cz86IG51bWJlcjtcbiAgICBzdWJ0aXRsZT86IHN0cmluZztcbiAgICB0aXRsZT86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGhhc0RvdHM6IHVuZGVmaW5lZCxcbiAgICBpc0Zsb2F0aW5nOiBmYWxzZSxcbiAgICBpc0hlYWRsaW5lMTogZmFsc2UsXG4gICAgaXNIaWRlYXdheUJ1dHRvbnM6IHRydWUsXG4gICAgaXNTY3JvbGxCeVBhZ2U6IHRydWUsXG4gICAgbWF4RG90czogNSxcbiAgICBzdWJ0aXRsZTogdW5kZWZpbmVkLFxuICAgIHRpdGxlOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIHR5cGUgRW1pdHMgPSB7XG4gICAgKGV2ZW50OiAnc2xpZGVzQWRkZWRUb1ZpZXcnLCBzbGlkZXNJblZpZXc6IG51bWJlcltdKTogdm9pZDtcbiAgfTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8RW1pdHM+KCk7XG5cbiAgY29uc3QgY29udGFpbmVyUmVmID0gcmVmPEhUTUxEaXZFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IGNvbnRlbnRXaWR0aCA9IHJlZjxudW1iZXI+KDApO1xuICBjb25zdCBjdXJyZW50UGFnZUluZGV4ID0gcmVmPG51bWJlcj4oMCk7XG4gIGNvbnN0IGRvdHNSZWYgPSByZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgZnJhbWVXaWR0aCA9IHJlZjxudW1iZXI+KDApO1xuICBjb25zdCBpc0ZpcnN0U2xpZGUgPSByZWY8Ym9vbGVhbj4odHJ1ZSk7XG4gIGNvbnN0IGlzTGFzdFNsaWRlID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3Qgc2hvd0J1dHRvbnMgPSByZWY8Ym9vbGVhbj4odHJ1ZSk7XG4gIGNvbnN0IHNsaWRlT2JzZXJ2ZXIgPSByZWY8SW50ZXJzZWN0aW9uT2JzZXJ2ZXIgfCBudWxsPihudWxsKTtcbiAgY29uc3Qgc2xpZGVzID0gcmVmPEhUTUxFbGVtZW50W10+KFtdKTtcbiAgY29uc3Qgc2xpZGVzSW5WaWV3ID0gcmVmPG51bWJlcltdPihbXSk7XG4gIGNvbnN0IHNsb3RPYnNlcnZlciA9IHJlZjxNdXRhdGlvbk9ic2VydmVyIHwgbnVsbD4obnVsbCk7XG5cbiAgY29uc3QgY3VycmVudFBhZ2UgPSBjb21wdXRlZCgoKSA9PiBjdXJyZW50UGFnZUluZGV4LnZhbHVlICsgMSk7XG4gIGNvbnN0IGRvdENvbnRhaW5lcldpZHRoID0gY29tcHV0ZWQoKCkgPT4gZG90Q291bnRWaXNpYmxlLnZhbHVlICogZG90V2lkdGggKyAoZG90Q291bnRWaXNpYmxlLnZhbHVlIC0gMSkgKiBkb3RHYXApO1xuICBjb25zdCBkb3RDb3VudFZpc2libGUgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMubWF4RG90cyA+IHRvdGFsUGFnZXMudmFsdWUgPyB0b3RhbFBhZ2VzLnZhbHVlIDogcHJvcHMubWF4RG90cykpO1xuICBjb25zdCBsYXN0UGFnZUluZGV4ID0gY29tcHV0ZWQoKCkgPT4gdG90YWxQYWdlcy52YWx1ZSAtIDEpO1xuICBjb25zdCB0b3RhbFBhZ2VzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICghc2xpZGVzLnZhbHVlLmxlbmd0aCkgcmV0dXJuIDA7XG4gICAgaWYgKCFwcm9wcy5pc1Njcm9sbEJ5UGFnZSkgcmV0dXJuIHNsaWRlcy52YWx1ZS5sZW5ndGg7XG5cbiAgICBjb25zdCBnYXBXaWR0aCA9IGNhcmRHYXAgKiAoc2xpZGVzLnZhbHVlLmxlbmd0aCAtIDEpO1xuICAgIGNvbnN0IGNvbnRlbnROb0dhcCA9IGNvbnRlbnRXaWR0aC52YWx1ZSAtIGdhcFdpZHRoO1xuICAgIGNvbnN0IHF1b3RpZW50ID0gTWF0aC5yb3VuZChjb250ZW50Tm9HYXAgLyBmcmFtZVdpZHRoLnZhbHVlKTtcbiAgICBjb25zdCByZW1haW5kZXIgPSBjb250ZW50Tm9HYXAgJSBmcmFtZVdpZHRoLnZhbHVlO1xuXG4gICAgcmV0dXJuIHJlbWFpbmRlciA/IHF1b3RpZW50ICsgMSA6IHF1b3RpZW50O1xuICB9KTtcblxuICBjb25zdCBjYXJkR2FwOiBudW1iZXIgPSAxNjtcbiAgY29uc3QgZG90R2FwOiBudW1iZXIgPSA4O1xuICBjb25zdCBkb3RXaWR0aDogbnVtYmVyID0gODtcblxuICBjb25zdCBnZXREb3RDbGFzcyA9IChkb3RJbmRleDogbnVtYmVyKSA9PiB7XG4gICAgbGV0IGNsYXNzTmFtZSA9ICcnO1xuXG4gICAgaWYgKGRvdEluZGV4ID09PSBjdXJyZW50UGFnZUluZGV4LnZhbHVlKSBjbGFzc05hbWUgPSAndGlkZS1jYXJvdXNlbC1kb3QtYWN0aXZlJztcbiAgICBpZiAoTWF0aC5hYnMoY3VycmVudFBhZ2VJbmRleC52YWx1ZSAtIGRvdEluZGV4KSA9PT0gMSkgY2xhc3NOYW1lID0gJ3RpZGUtY2Fyb3VzZWwtZG90LW5laWdoYm9yJztcblxuICAgIHJldHVybiBjbGFzc05hbWU7XG4gIH07XG5cbiAgY29uc3QgbWVhc3VyZURvbSA9ICgpID0+IHtcbiAgICBpZiAoIWNvbnRhaW5lclJlZi52YWx1ZSkgcmV0dXJuO1xuXG4gICAgY29udGVudFdpZHRoLnZhbHVlID0gY29udGFpbmVyUmVmLnZhbHVlLnNjcm9sbFdpZHRoO1xuICAgIGZyYW1lV2lkdGgudmFsdWUgPSBjb250YWluZXJSZWYudmFsdWUuY2xpZW50V2lkdGg7XG4gICAgc2hvd0J1dHRvbnMudmFsdWUgPSBjb250ZW50V2lkdGgudmFsdWUgPiBmcmFtZVdpZHRoLnZhbHVlO1xuICB9O1xuXG4gIGNvbnN0IG9ic2VydmVTbGlkZXMgPSAoKSA9PiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIHJvb3Q6IGNvbnRhaW5lclJlZj8udmFsdWUsXG4gICAgICByb290TWFyZ2luOiAnMHB4IDFweCAwcHggMHB4JyxcbiAgICAgIHRocmVzaG9sZDogMSxcbiAgICB9O1xuXG4gICAgc2xpZGVPYnNlcnZlci52YWx1ZSA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcigoZW50cmllcykgPT4ge1xuICAgICAgbGV0IHNsaWRlc0FkZGVkVG9WaWV3OiBudW1iZXJbXSA9IFtdO1xuXG4gICAgICBlbnRyaWVzLmZvckVhY2goKGVudHJ5KSA9PiB7XG4gICAgICAgIGNvbnN0IHNsaWRlSW5kZXggPSBzbGlkZXMudmFsdWUuaW5kZXhPZihlbnRyeS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpO1xuXG4gICAgICAgIGlmIChlbnRyeS5pc0ludGVyc2VjdGluZykge1xuICAgICAgICAgIHNsaWRlc0FkZGVkVG9WaWV3LnB1c2goc2xpZGVJbmRleCk7XG4gICAgICAgICAgc2xpZGVzSW5WaWV3LnZhbHVlLnB1c2goc2xpZGVJbmRleCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2xpZGVzSW5WaWV3LnZhbHVlID0gc2xpZGVzSW5WaWV3LnZhbHVlLmZpbHRlcigoc2xpZGUpID0+IHNsaWRlICE9PSBzbGlkZUluZGV4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNsaWRlc0luVmlldy52YWx1ZS5zb3J0KChhLCBiKSA9PiBhIC0gYik7XG4gICAgICB9KTtcblxuICAgICAgaXNGaXJzdFNsaWRlLnZhbHVlID0gc2xpZGVzSW5WaWV3LnZhbHVlLmluY2x1ZGVzKDApO1xuICAgICAgaXNMYXN0U2xpZGUudmFsdWUgPSBzbGlkZXNJblZpZXcudmFsdWUuaW5jbHVkZXMoc2xpZGVzLnZhbHVlLmxlbmd0aCAtIDEpO1xuXG4gICAgICBpZiAoc2xpZGVzQWRkZWRUb1ZpZXcubGVuZ3RoID4gMCkgZW1pdCgnc2xpZGVzQWRkZWRUb1ZpZXcnLCBzbGlkZXNBZGRlZFRvVmlldyk7XG4gICAgfSwgb3B0aW9ucyk7XG5cbiAgICBzbGlkZXMudmFsdWUuZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgIGlmIChzbGlkZU9ic2VydmVyLnZhbHVlKSBzbGlkZU9ic2VydmVyLnZhbHVlLm9ic2VydmUoY2hpbGQpO1xuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IG9ic2VydmVTbG90ID0gKCkgPT4ge1xuICAgIGNvbnN0IG9ic2VydmVyQ2FsbGJhY2sgPSAoKSA9PiB7XG4gICAgICBpZiAoY29udGFpbmVyUmVmLnZhbHVlID09PSBudWxsKSByZXR1cm47XG5cbiAgICAgIHNsaWRlcy52YWx1ZSA9IEFycmF5LmZyb20oY29udGFpbmVyUmVmLnZhbHVlLmNoaWxkcmVuKSBhcyBIVE1MRWxlbWVudFtdO1xuICAgICAgb2JzZXJ2ZVNsaWRlcygpO1xuICAgIH07XG5cbiAgICBzbG90T2JzZXJ2ZXIudmFsdWUgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihvYnNlcnZlckNhbGxiYWNrKTtcblxuICAgIGlmIChjb250YWluZXJSZWYudmFsdWUpIHNsb3RPYnNlcnZlci52YWx1ZS5vYnNlcnZlKGNvbnRhaW5lclJlZi52YWx1ZSwgeyBjaGlsZExpc3Q6IHRydWUgfSk7XG4gIH07XG5cbiAgY29uc3Qgc2Nyb2xsVG9PZmZzZXQgPSAodGFyZ2V0OiBudW1iZXIpID0+IHtcbiAgICBpZiAoY29udGFpbmVyUmVmLnZhbHVlID09PSBudWxsKSByZXR1cm47XG5cbiAgICBjb25zdCBsYXN0T2Zmc2V0OiBudW1iZXIgPSBzbGlkZXMudmFsdWVbc2xpZGVzLnZhbHVlLmxlbmd0aCAtIDFdLm9mZnNldExlZnQ7XG4gICAgY29uc3QgcGxhY2VtZW50ID0gKHRhcmdldCAvIGxhc3RPZmZzZXQpICogbGFzdFBhZ2VJbmRleC52YWx1ZTtcbiAgICBjb25zdCBpc1Njcm9sbGluZ0xlZnQgPSBwbGFjZW1lbnQgPD0gY3VycmVudFBhZ2VJbmRleC52YWx1ZTtcblxuICAgIGN1cnJlbnRQYWdlSW5kZXgudmFsdWUgPSBpc1Njcm9sbGluZ0xlZnQgPyBjdXJyZW50UGFnZUluZGV4LnZhbHVlIC0gMSA6IGN1cnJlbnRQYWdlSW5kZXgudmFsdWUgKyAxO1xuXG4gICAgY29udGFpbmVyUmVmLnZhbHVlLnNjcm9sbFRvKHtcbiAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICAgIGxlZnQ6IHRhcmdldCxcbiAgICB9KTtcbiAgICB1cGRhdGVEb3RzKGlzU2Nyb2xsaW5nTGVmdCk7XG4gIH07XG5cbiAgY29uc3Qgc2hvd05leHRQYWdlID0gKCkgPT4ge1xuICAgIGlmIChzbGlkZXNJblZpZXcudmFsdWUubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICBjb25zdCBuZXh0U2xpZGU6IG51bWJlciA9IHNsaWRlc0luVmlldy52YWx1ZVtzbGlkZXNJblZpZXcudmFsdWUubGVuZ3RoIC0gMV0gKyAxO1xuXG4gICAgc2Nyb2xsVG9PZmZzZXQoc2xpZGVzLnZhbHVlW25leHRTbGlkZV0ub2Zmc2V0TGVmdCk7XG4gIH07XG5cbiAgY29uc3Qgc2hvd1ByZXZpb3VzUGFnZSA9ICgpID0+IHtcbiAgICBpZiAoc2xpZGVzSW5WaWV3LnZhbHVlLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgY29uc3QgcHJldmlvdXNTbGlkZTogbnVtYmVyID0gc2xpZGVzSW5WaWV3LnZhbHVlWzBdIC0gc2xpZGVzSW5WaWV3LnZhbHVlLmxlbmd0aDtcblxuICAgIHNjcm9sbFRvT2Zmc2V0KHNsaWRlcy52YWx1ZVtwcmV2aW91c1NsaWRlXT8ub2Zmc2V0TGVmdCB8fCAwKTtcbiAgfTtcblxuICBjb25zdCBzaG93TmV4dFNsaWRlID0gKCkgPT4ge1xuICAgIGlmIChzbGlkZXNJblZpZXcudmFsdWUubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICBjb25zdCBuZXh0U2xpZGU6IG51bWJlciA9IHNsaWRlc0luVmlldy52YWx1ZS5sZW5ndGggPiAxID8gc2xpZGVzSW5WaWV3LnZhbHVlWzFdIDogc2xpZGVzSW5WaWV3LnZhbHVlWzBdICsgMTtcblxuICAgIHNjcm9sbFRvT2Zmc2V0KHNsaWRlcy52YWx1ZVtuZXh0U2xpZGVdLm9mZnNldExlZnQpO1xuICB9O1xuXG4gIGNvbnN0IHNob3dQcmV2aW91c1NsaWRlID0gKCkgPT4ge1xuICAgIGlmIChzbGlkZXNJblZpZXcudmFsdWUubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICBjb25zdCBwcmV2aW91c1NsaWRlOiBudW1iZXIgPSBzbGlkZXNJblZpZXcudmFsdWVbMF0gLSAxO1xuXG4gICAgc2Nyb2xsVG9PZmZzZXQoc2xpZGVzLnZhbHVlW3ByZXZpb3VzU2xpZGVdLm9mZnNldExlZnQpO1xuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZURvdHMgPSAoaXNTY3JvbGxpbmdMZWZ0OiBib29sZWFuKSA9PiB7XG4gICAgaWYgKCFkb3RzUmVmLnZhbHVlIHx8IGRvdENvdW50VmlzaWJsZS52YWx1ZSA+PSB0b3RhbFBhZ2VzLnZhbHVlKSByZXR1cm47XG5cbiAgICBjb25zdCBpc09kZERvdENvdW50ID0gZG90Q291bnRWaXNpYmxlLnZhbHVlICUgMiAhPT0gMDtcbiAgICBjb25zdCBjZW50ZXJEb3QgPVxuICAgICAgaXNPZGREb3RDb3VudCB8fCBpc1Njcm9sbGluZ0xlZnRcbiAgICAgICAgPyBNYXRoLmZsb29yKGRvdENvdW50VmlzaWJsZS52YWx1ZSAvIDIpICsgMVxuICAgICAgICA6IE1hdGguZmxvb3IoZG90Q291bnRWaXNpYmxlLnZhbHVlIC8gMik7XG5cbiAgICBkb3RzUmVmLnZhbHVlLnNjcm9sbFRvKHtcbiAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICAgIGxlZnQ6IGN1cnJlbnRQYWdlLnZhbHVlIDwgY2VudGVyRG90ID8gMCA6IChjdXJyZW50UGFnZS52YWx1ZSAtIGNlbnRlckRvdCkgKiAoZG90V2lkdGggKyBkb3RHYXApLFxuICAgIH0pO1xuICB9O1xuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgaWYgKGNvbnRhaW5lclJlZi52YWx1ZSA9PT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgc2xpZGVzLnZhbHVlID0gQXJyYXkuZnJvbShjb250YWluZXJSZWYudmFsdWUuY2hpbGRyZW4pIGFzIEhUTUxFbGVtZW50W107XG5cbiAgICBtZWFzdXJlRG9tKCk7XG4gICAgb2JzZXJ2ZVNsaWRlcygpO1xuICAgIG9ic2VydmVTbG90KCk7XG5cbiAgICBpZiAod2luZG93KSB7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgbWVhc3VyZURvbSk7XG4gICAgfVxuICB9KTtcblxuICBvblVubW91bnRlZCgoKSA9PiB7XG4gICAgc2xpZGVPYnNlcnZlci52YWx1ZT8uZGlzY29ubmVjdCgpO1xuICAgIHNsb3RPYnNlcnZlci52YWx1ZT8uZGlzY29ubmVjdCgpO1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBtZWFzdXJlRG9tKTtcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8c2VjdGlvblxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWNhcm91c2VsJyxcbiAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgQ1NTLkdBUC5PTkUsXG4gICAgICBDU1MuV0lEVEguTUFYX0ZVTEwsXG4gICAgXVwiXG4gICAgcmVmPVwiY2Fyb3VzZWxSZWZcIlxuICA+XG4gICAgPHNlY3Rpb25cbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBwcm9wcy50aXRsZSA/IENTUy5BWElTMS5CRVRXRUVOIDogQ1NTLkFYSVMxLkVORCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLldJRFRILkZVTExdXCJcbiAgICAgIHYtaWY9XCIoIXByb3BzLmlzRmxvYXRpbmcgJiYgc2hvd0J1dHRvbnMpIHx8IHByb3BzLnRpdGxlXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5XUkFQLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLk9ORV1cIlxuICAgICAgICB2LWlmPVwicHJvcHMudGl0bGVcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW2lzSGVhZGxpbmUxID8gQ1NTLkZPTlQuUk9MRS5IRUFETElORV8xIDogQ1NTLkZPTlQuUk9MRS5IRUFETElORV8yXVwiXG4gICAgICAgICAgdi1pZj1cInByb3BzLnRpdGxlXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHByb3BzLnRpdGxlIH19XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8yLCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgICB2LWlmPVwicHJvcHMuc3VidGl0bGVcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcHJvcHMuc3VidGl0bGUgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5PTkVdXCJcbiAgICAgICAgdi1pZj1cIiFwcm9wcy5pc0Zsb2F0aW5nICYmIHNob3dCdXR0b25zXCJcbiAgICAgID5cbiAgICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgICAgOmRpc2FibGVkPVwiaXNGaXJzdFNsaWRlXCJcbiAgICAgICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9MRUZUXCJcbiAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5URVJUSUFSWVwiXG4gICAgICAgICAgQGNsaWNrPVwiaXNTY3JvbGxCeVBhZ2UgPyBzaG93UHJldmlvdXNQYWdlKCkgOiBzaG93UHJldmlvdXNTbGlkZSgpXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJpc0xhc3RTbGlkZVwiXG4gICAgICAgICAgOmljb249XCJJQ09OLkNIRVZST05fUklHSFRcIlxuICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlRFUlRJQVJZXCJcbiAgICAgICAgICBAY2xpY2s9XCJpc1Njcm9sbEJ5UGFnZSA/IHNob3dOZXh0UGFnZSgpIDogc2hvd05leHRTbGlkZSgpXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvc2VjdGlvbj5cblxuICAgIDxzbG90IG5hbWU9XCJtaXNjXCIgLz5cblxuICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5QT1NJVElPTi5SRUxBVElWRSwgQ1NTLkRJU1BMQVkuRkxFWF1cIj5cbiAgICAgIDx1bFxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtY2Fyb3VzZWwtY29udGFpbmVyJyxcbiAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgIENTUy5HQVAuT05FLFxuICAgICAgICAgIENTUy5MSVNUX0JVTExFVFMuT0ZGLFxuICAgICAgICAgIENTUy5PVkVSRkxPVy5YLlNDUk9MTCxcbiAgICAgICAgICBDU1MuU0NST0xMQkFSLk9GRixcbiAgICAgICAgICBDU1MuU05BUC5PTixcbiAgICAgICAgXVwiXG4gICAgICAgIHJlZj1cImNvbnRhaW5lclJlZlwiXG4gICAgICA+XG4gICAgICAgIDxzbG90IC8+XG4gICAgICA8L3VsPlxuXG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1jYXJvdXNlbC1kb3RzLWNvbnRhaW5lcicsXG4gICAgICAgICAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICAgICAgICAgIENTUy5QT1NJVElPTklORy5CT1RUT00sXG4gICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgICAgIENTUy5NQVJHSU4uQk9UVE9NLkhBTEYsXG4gICAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgIF1cIlxuICAgICAgICA6c3R5bGU9XCJ7XG4gICAgICAgICAgd2lkdGg6IGAke2RvdENvbnRhaW5lcldpZHRofXB4YCxcbiAgICAgICAgfVwiXG4gICAgICAgIHYtaWY9XCJpc1Njcm9sbEJ5UGFnZSAmJiBoYXNEb3RzICYmIHRvdGFsUGFnZXMgPiAxXCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLWNhcm91c2VsLWRvdHMnLFxuICAgICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICAgIENTUy5BWElTMS5TVEFSVCxcbiAgICAgICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgICAgICBDU1MuT1ZFUkZMT1cuWC5TQ1JPTEwsXG4gICAgICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICAgICAgQ1NTLlNDUk9MTEJBUi5PRkYsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgcmVmPVwiZG90c1JlZlwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAgICd0aWRlLWNhcm91c2VsLWRvdCcsXG4gICAgICAgICAgICAgIENTUy5GTEVYLlNIUklOSy5PRkYsXG4gICAgICAgICAgICAgIENTUy5IRUlHSFQuWkVSTyxcbiAgICAgICAgICAgICAgQ1NTLldJRFRILlpFUk8sXG4gICAgICAgICAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICAgICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgICAgICAgIGdldERvdENsYXNzKGluZGV4KSxcbiAgICAgICAgICAgIF1cIlxuICAgICAgICAgICAgOmtleT1cImluZGV4XCJcbiAgICAgICAgICAgIHYtZm9yPVwiKF8sIGluZGV4KSBpbiB0b3RhbFBhZ2VzXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1jYXJvdXNlbC1idXR0b24tb3ZlcmxheScsXG4gICAgICAgICAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICAgICAgICAgIENTUy5QT1NJVElPTklORy5UT1AsXG4gICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICBDU1MuQVhJUzEuQkVUV0VFTixcbiAgICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICAgIENTUy5IRUlHSFQuRlVMTCxcbiAgICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICAgIHByb3BzLmlzSGlkZWF3YXlCdXR0b25zID8gJ2hpZGVhd2F5JyA6ICcnLFxuICAgICAgICBdXCJcbiAgICAgICAgdi1pZj1cImlzRmxvYXRpbmcgJiYgc2hvd0J1dHRvbnNcIlxuICAgICAgPlxuICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5MRUZULk9ORSwgQ1NTLlBPSU5URVJfRVZFTlRTLk9OXVwiXG4gICAgICAgICAgOmRpc2FibGVkPVwiaXNGaXJzdFNsaWRlXCJcbiAgICAgICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9MRUZUXCJcbiAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgICBAY2xpY2s9XCJpc1Njcm9sbEJ5UGFnZSA/IHNob3dQcmV2aW91c1BhZ2UoKSA6IHNob3dQcmV2aW91c1NsaWRlKClcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuTUFSR0lOLlJJR0hULk9ORSwgQ1NTLlBPSU5URVJfRVZFTlRTLk9OXVwiXG4gICAgICAgICAgOmRpc2FibGVkPVwiaXNMYXN0U2xpZGVcIlxuICAgICAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX1JJR0hUXCJcbiAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgICBAY2xpY2s9XCJpc1Njcm9sbEJ5UGFnZSA/IHNob3dOZXh0UGFnZSgpIDogc2hvd05leHRTbGlkZSgpXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L3NlY3Rpb24+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1jYXJvdXNlbC1idXR0b24tb3ZlcmxheS5oaWRlYXdheSB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuXG4gIC50aWRlLWNhcm91c2VsOmhvdmVyIC50aWRlLWNhcm91c2VsLWJ1dHRvbi1vdmVybGF5LmhpZGVhd2F5IHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG5cbiAgLnRpZGUtY2Fyb3VzZWwtZG90IHtcbiAgICB3aWR0aDogOHB4O1xuICAgIGhlaWdodDogOHB4O1xuICAgIG9wYWNpdHk6IDAuNzU7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwLjUpO1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgdmFyKC0tdGlkZS1hbmltYXRlKSwgdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAudGlkZS1jYXJvdXNlbC1kb3QtbmVpZ2hib3Ige1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMC43NSk7XG4gIH1cblxuICAudGlkZS1jYXJvdXNlbC1kb3QtYWN0aXZlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICBAbWVkaWEgKHBvaW50ZXI6IGNvYXJzZSkge1xuICAgIC50aWRlLWNhcm91c2VsIC50aWRlLWNhcm91c2VsLWJ1dHRvbi1vdmVybGF5IHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBJbnRlcm5hbEJhc2VMaW5rIGZyb20gJ0AvY29tcG9uZW50cy9JbnRlcm5hbEJhc2VMaW5rLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgRUxFTUVOVCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRBUkdFVCB9IGZyb20gJ0AvdHlwZXMvVGFyZ2V0JztcblxuICBpbXBvcnQgdHlwZSB7IEVsZW1lbnQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgZWxlbWVudD86IEVsZW1lbnQ7XG4gICAgaHJlZj86IHN0cmluZztcbiAgICBpc05ld1RhYj86IGJvb2xlYW47XG4gICAgbGFiZWw6IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGVsZW1lbnQ6IEVMRU1FTlQuTElOSyxcbiAgICBocmVmOiB1bmRlZmluZWQsXG4gICAgaXNOZXdUYWI6IGZhbHNlLFxuICB9KTtcblxuICBjb25zdCByb290RWxlbWVudCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgPyBJbnRlcm5hbEJhc2VMaW5rIDogcHJvcHMuZWxlbWVudCkpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudFxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWNoaXAtYWN0aW9uJyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICBDU1MuUEFERElORy5YLk9ORSxcbiAgICAgIENTUy5QQURESU5HLlkuSEFMRixcbiAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICBDU1MuRk9OVC5ST0xFLkxJTktfMixcbiAgICAgIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgIENTUy5VTkRFUkxJTkUuUkVTVC5PRkYsXG4gICAgXVwiXG4gICAgOmhyZWY9XCJwcm9wcy5ocmVmXCJcbiAgICA6dGFyZ2V0PVwicHJvcHMuaXNOZXdUYWIgPyBUQVJHRVQuQkxBTksgOiBUQVJHRVQuU0VMRlwiXG4gICAgOnR5cGU9XCJlbGVtZW50ID09PSBFTEVNRU5ULkJVVFRPTiA/IEVMRU1FTlQuQlVUVE9OIDogdW5kZWZpbmVkXCJcbiAgICA6aXM9XCJyb290RWxlbWVudFwiXG4gID5cbiAgICA8VGlkZUljb24gOmljb249XCJJQ09OLlNFQVJDSFwiIC8+XG5cbiAgICA8c3Bhbj57eyBwcm9wcy5sYWJlbCB9fTwvc3Bhbj5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1jaGlwLWFjdGlvbjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLXZhcmlhbnQpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXItaGlnaCk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBsYWJlbDogc3RyaW5nO1xuICB9O1xuXG4gIGRlZmluZVByb3BzPFByb3BzPigpO1xuXG4gIGNvbnN0IGlzQWN0aXZlID0gZGVmaW5lTW9kZWw8Ym9vbGVhbj4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICBjb25zdCBoYW5kbGVDbGljayA9ICgpID0+IHtcbiAgICBpc0FjdGl2ZS52YWx1ZSA9ICFpc0FjdGl2ZS52YWx1ZTtcbiAgfTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxidXR0b25cbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1jaGlwLWZpbHRlcicsXG4gICAgICBpc0FjdGl2ZVxuICAgICAgICA/IFsnYWN0aXZlJywgQ1NTLkJHLlNFQ09OREFSWSwgQ1NTLkZPTlQuQ09MT1IuU0VDT05EQVJZXVxuICAgICAgICA6IFtDU1MuQkcuU1VSRkFDRS5WQVJJQU5ULCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFRdLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgIENTUy5QQURESU5HLlguT05FLFxuICAgICAgQ1NTLlBBRERJTkcuWS5IQUxGLFxuICAgICAgQ1NTLkZPTlQuUk9MRS5MQUJFTF8yLFxuICAgIF1cIlxuICAgIEBjbGljaz1cImhhbmRsZUNsaWNrXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgPlxuICAgIDxzbG90IC8+XG5cbiAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzEuQ0VOVEVSLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLkhBTEZdXCI+XG4gICAgICA8c3BhbiA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8xLCBDU1MuV0hJVEVTUEFDRV9XUkFQLk9GRl1cIj5cbiAgICAgICAge3sgbGFiZWwgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9idXR0b24+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/IFtDU1MuT1BBQ0lUWS5ESVNBQkxFRCwgQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRF0gOiBbQ1NTLkNVUlNPUi5QT0lOVEVSXSxcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxpbnB1dFxuICAgICAgICA6Y2hlY2tlZD1cImlzQ2hlY2tlZFwiXG4gICAgICAgIDpjbGFzcz1cIlsndGlkZS1zY3JlZW4tcmVhZGVyLW9ubHknXVwiXG4gICAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICAgICAgOm5hbWU9XCJuYW1lXCJcbiAgICAgICAgcmVmPVwiaW5wdXRcIlxuICAgICAgICA6aWQ9XCJpbnB1dElkXCJcbiAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgdi1tb2RlbD1cIm1vZGVsVmFsdWVcIlxuICAgICAgLz5cblxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtaW5wdXQtY2hlY2tib3gtY3VzdG9tJyxcbiAgICAgICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5RVUFSVEVSLFxuICAgICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgICAgQ1NTLkZMRVguU0hSSU5LLk9GRixcbiAgICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgICAgaXNDaGVja2VkXG4gICAgICAgICAgICA/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/KChbMS05XVswLTldezAsMn0oLFswLTldezN9KSopfDApPyhcXC5bMC05XXsxLDJ9KT8kLyxcbiAgemlwOiAvXlxcZHs1fSQvLFxufTtcbiIsImltcG9ydCB7IEZPUk1BVF9SRUdFWCB9IGZyb20gJ0AvdHlwZXMvRm9ybWF0dGVkJztcbmltcG9ydCB7IGNoZWNrRm9ybWF0IH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbic7XG5cbmV4cG9ydCBjb25zdCBWQUxJREFUT1IgPSB7XG4gIEFMUEhBX05VTUJFUl9FTVBUWTogY2hlY2tGb3JtYXQoRk9STUFUX1JFR0VYLmFscGhhTnVtYmVyT3JFbXB0eSksXG4gIEFMUEhBX1NQQUNFOiBjaGVja0Zvcm1hdChGT1JNQVRfUkVHRVguYWxwaGFTcGFjZSksXG4gIEVNQUlMOiBjaGVja0Zvcm1hdChGT1JNQVRfUkVHRVguZW1haWwsICdFbnRlciBhIHZhbGlkIGVtYWlsIGFkZHJlc3MgKGUuZy4gbmFtZUBleGFtcGxlLmNvbSknKSxcbiAgTlVNQkVSOiBjaGVja0Zvcm1hdChGT1JNQVRfUkVHRVgubnVtYmVyRm9ybWF0dGVkLCAnRW50ZXIgYSB2YWxpZCBudW1iZXInKSxcbiAgUEhPTkU6IGNoZWNrRm9ybWF0KEZPUk1BVF9SRUdFWC5waG9uZSwgJ0VudGVyIGEgdmFsaWQgcGhvbmUgbnVtYmVyJyksXG4gIFpJUDogY2hlY2tGb3JtYXQoRk9STUFUX1JFR0VYLnppcCwgJ0VudGVyIGEgdmFsaWQgWmlwIGNvZGUnKSxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25FcnJvciA9IHN0cmluZyB8IGJvb2xlYW47XG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uUmVzdWx0ID0ge1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHZhbGlkOiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgVmFsaWRhdGlvbkxlbmd0aCA9IHtcbiAgbWF4bGVuZ3RoPzogbnVtYmVyO1xuICBtaW5sZW5ndGg/OiBudW1iZXI7XG4gIHJlcXVpcmVkOiBib29sZWFuO1xuICB2YWx1ZTogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgVmFsaWRhdG9yID0gKHZhbHVlOiBzdHJpbmcpID0+IFZhbGlkYXRpb25SZXN1bHQ7XG5cbmV4cG9ydCBjb25zdCBFUlJPUl9ESVNQTEFZID0ge1xuICBFQUdFUjogJ2VhZ2VyJyxcbiAgTEFaWTogJ2xhenknLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgRXJyb3JEaXNwbGF5ID0gKHR5cGVvZiBFUlJPUl9ESVNQTEFZKVtrZXlvZiB0eXBlb2YgRVJST1JfRElTUExBWV07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmLCB1c2VJZCwgd2F0Y2gsIHdhdGNoRWZmZWN0IH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dCBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUlucHV0U3VwcG9ydGluZ1RleHQudnVlJztcbiAgaW1wb3J0IHsgdXNlRm9ybUNvbnRleHQgfSBmcm9tICdAL2NvbXBvc2FibGVzL3VzZVRpZGVGb3JtJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IEVSUk9SX0RJU1BMQVkgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuICBpbXBvcnQgeyBWQUxJREFUSU9OX1JFU1VMVCwgZ2V0RmllbGRWYWxpZGF0aW9uUmVzdWx0IH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbic7XG5cbiAgaW1wb3J0IHR5cGUgeyBTZWxlY3RPcHRpb24sIFNlbGVjdE9wdGlvbkdyb3VwIH0gZnJvbSAnQC90eXBlcy9TZWxlY3QnO1xuICBpbXBvcnQgdHlwZSB7IEVycm9yRGlzcGxheSwgVmFsaWRhdGlvblJlc3VsdCB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgZXJyb3I/OiBzdHJpbmc7XG4gICAgZXJyb3JEaXNwbGF5PzogRXJyb3JEaXNwbGF5O1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgb3B0Z3JvdXBzPzogKFNlbGVjdE9wdGlvbiB8IFNlbGVjdE9wdGlvbkdyb3VwKVtdIHwgcmVhZG9ubHkgKFNlbGVjdE9wdGlvbiB8IFNlbGVjdE9wdGlvbkdyb3VwKVtdO1xuICAgIG9wdGlvbnM/OiBTZWxlY3RPcHRpb25bXSB8IHJlYWRvbmx5IFNlbGVjdE9wdGlvbltdO1xuICAgIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgICBzdXBwb3J0aW5nVGV4dD86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlcnJvcjogJycsXG4gICAgZXJyb3JEaXNwbGF5OiBFUlJPUl9ESVNQTEFZLkxBWlksXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbmFtZTogdW5kZWZpbmVkLFxuICAgIG9wdGdyb3VwczogdW5kZWZpbmVkLFxuICAgIG9wdGlvbnM6IHVuZGVmaW5lZCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgc3VwcG9ydGluZ1RleHQ6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgdHlwZSBFbWl0cyA9IHtcbiAgICAoZXZlbnQ6ICd2YWxpZCcsIGlzVmFsaWQ6IGJvb2xlYW4pOiB2b2lkO1xuICB9O1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czxFbWl0cz4oKTtcblxuICBjb25zdCBtb2RlbFZhbHVlID0gZGVmaW5lTW9kZWw8c3RyaW5nPih7IHJlcXVpcmVkOiB0cnVlIH0pO1xuXG4gIGNvbnN0IGZvcm1Db250ZXh0ID0gdXNlRm9ybUNvbnRleHQoKTtcblxuICBjb25zdCBlcnJvclJlZiA9IHJlZjxWYWxpZGF0aW9uUmVzdWx0PihWQUxJREFUSU9OX1JFU1VMVC5OT19FUlJPUik7XG4gIGNvbnN0IGhhc0ZvY3VzID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgaW5wdXRJZCA9IHVzZUlkKCk7XG4gIGNvbnN0IGlzVmFsaWRhdGluZyA9IHJlZjxib29sZWFuPihmYWxzZSk7XG4gIGNvbnN0IHNlbGVjdEVsZW1lbnQgPSByZWY8SFRNTFNlbGVjdEVsZW1lbnQgfCBudWxsPihudWxsKTtcblxuICBjb25zdCBmb3JtYXR0ZWRMYWJlbCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCA/IGAke3Byb3BzLmxhYmVsfSAqYCA6IHByb3BzLmxhYmVsKSk7XG4gIGNvbnN0IHNob3dFcnJvciA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAoaGFzRXJyb3JGcm9tUHJvcC52YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgaWYgKCFpc1ZhbGlkYXRpbmcudmFsdWUpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gIWVycm9yUmVmLnZhbHVlLnZhbGlkO1xuICB9KTtcbiAgY29uc3QgaGFzRXJyb3JGcm9tUHJvcCA9IGNvbXB1dGVkKCgpID0+IHByb3BzLmVycm9yICE9PSAnJyk7XG4gIGNvbnN0IGhhc01pbmlsYWJlbCA9IGNvbXB1dGVkKCgpID0+IGhhc0ZvY3VzLnZhbHVlIHx8ICFpc0VtcHR5LnZhbHVlKTtcbiAgY29uc3QgaXNFbXB0eSA9IGNvbXB1dGVkKCgpID0+IG1vZGVsVmFsdWUudmFsdWUgPT09ICcnKTtcbiAgY29uc3Qgc3VwcG9ydGluZ1RleHRNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4gKHNob3dFcnJvci52YWx1ZSAmJiBlcnJvclJlZi52YWx1ZS5tZXNzYWdlKSB8fCBwcm9wcy5zdXBwb3J0aW5nVGV4dCk7XG5cbiAgY29uc3QgZXhwYW5kT3B0aW9ucyA9ICgpID0+IHtcbiAgICBjb25zdCBldmVudCA9IG5ldyBNb3VzZUV2ZW50KCdtb3VzZWRvd24nKTtcbiAgICBzZWxlY3RFbGVtZW50Py52YWx1ZT8uZGlzcGF0Y2hFdmVudChldmVudCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXMgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSB0cnVlO1xuICAgIGlmIChwcm9wcy5lcnJvckRpc3BsYXkgPT09IEVSUk9SX0RJU1BMQVkuRUFHRVIpIGlzVmFsaWRhdGluZy52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXNPdXQgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSBmYWxzZTtcbiAgICBpZiAocHJvcHMuZXJyb3JEaXNwbGF5ID09PSBFUlJPUl9ESVNQTEFZLkxBWlkpIGlzVmFsaWRhdGluZy52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgd2F0Y2hFZmZlY3QoKCkgPT4ge1xuICAgIGVycm9yUmVmLnZhbHVlID0gZ2V0RmllbGRWYWxpZGF0aW9uUmVzdWx0KHtcbiAgICAgIGVycm9yRnJvbVByb3BzOiBwcm9wcy5lcnJvcixcbiAgICAgIHJlcXVpcmVkOiBwcm9wcy5yZXF1aXJlZCxcbiAgICAgIHZhbHVlOiBtb2RlbFZhbHVlLFxuICAgIH0pO1xuICB9KTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBmb3JtQ29udGV4dD8uZm9yY2VTaG93RXJyb3JzLnZhbHVlLFxuICAgIChuZXdWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlKSBpc1ZhbGlkYXRpbmcudmFsdWUgPSB0cnVlO1xuICAgIH0sXG4gICAgeyBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuXG4gIHdhdGNoKFxuICAgIGVycm9yUmVmLFxuICAgICgpID0+IHtcbiAgICAgIGVtaXQoJ3ZhbGlkJywgZXJyb3JSZWYudmFsdWUudmFsaWQpO1xuICAgIH0sXG4gICAgeyBkZWVwOiB0cnVlLCBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWlucHV0LXNlbGVjdCcsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIGRpc2FibGVkICYmICdkaXNhYmxlZCcsXG4gICAgICBzaG93RXJyb3IgJiYgJ2Vycm9yJyxcbiAgICBdXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtYm9yZGVyJyxcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgIHByb3BzLmRpc2FibGVkID8gQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCA6ICcnLFxuICAgICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgXVwiXG4gICAgICBAY2xpY2s9XCJleHBhbmRPcHRpb25zXCJcbiAgICA+XG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuV0lEVEguRlVMTF1cIj5cbiAgICAgICAgPGxhYmVsXG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgaGFzTWluaWxhYmVsID8gWydtaW5pbGFiZWwnLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzNdIDogQ1NTLkZPTlQuUk9MRS5MQUJFTF8xLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLkxFRlQsXG4gICAgICAgICAgICBDU1MuTUFSR0lOLlRPUC5IQUxGLFxuICAgICAgICAgICAgQ1NTLk1BUkdJTi5MRUZULk9ORSxcbiAgICAgICAgICAgICFzaG93RXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgICBdXCJcbiAgICAgICAgICA6Zm9yPVwiaW5wdXRJZFwiXG4gICAgICAgICAgdi1pZj1cImxhYmVsXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGZvcm1hdHRlZExhYmVsIH19XG4gICAgICAgIDwvbGFiZWw+XG5cbiAgICAgICAgPHNlbGVjdFxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgIENTUy5QQURESU5HLkJPVFRPTS5IQUxGLFxuICAgICAgICAgICAgQ1NTLlBBRERJTkcuWC5PTkUsXG4gICAgICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgICAgIGRpc2FibGVkICYmIENTUy5DVVJTT1IuTk9UX0FMTE9XRUQsXG4gICAgICAgICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMSxcbiAgICAgICAgICBdXCJcbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJkaXNhYmxlZFwiXG4gICAgICAgICAgOm5hbWU9XCJuYW1lXCJcbiAgICAgICAgICByZWY9XCJzZWxlY3RFbGVtZW50XCJcbiAgICAgICAgICA6cmVxdWlyZWQ9XCJyZXF1aXJlZFwiXG4gICAgICAgICAgQGZvY3VzPVwiaGFuZGxlRm9jdXNcIlxuICAgICAgICAgIEBmb2N1c291dD1cImhhbmRsZUZvY3VzT3V0XCJcbiAgICAgICAgICA6aWQ9XCJpbnB1dElkXCJcbiAgICAgICAgICB2LW1vZGVsPVwibW9kZWxWYWx1ZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8dGVtcGxhdGUgdi1mb3I9XCJvcHRncm91cCBpbiBwcm9wcy5vcHRncm91cHNcIj5cbiAgICAgICAgICAgIDxvcHRncm91cFxuICAgICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgICAgOmtleT1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb25Hcm91cCkubGFiZWxcIlxuICAgICAgICAgICAgICA6bGFiZWw9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uR3JvdXApLmxhYmVsXCJcbiAgICAgICAgICAgICAgdi1pZj1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb25Hcm91cCkub3B0aW9uc1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgICAgICA6a2V5PVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgICAgICA6dmFsdWU9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgICAgIHYtZm9yPVwib3B0aW9uIGluIChvcHRncm91cCBhcyBTZWxlY3RPcHRpb25Hcm91cCkub3B0aW9uc1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBvcHRpb24ubGFiZWwgfX1cbiAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICA8L29wdGdyb3VwPlxuXG4gICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgICAgICAgICA6a2V5PVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbikudmFsdWVcIlxuICAgICAgICAgICAgICA6c2VsZWN0ZWQ9XCJtb2RlbFZhbHVlID09PSAob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uKS52YWx1ZSA/IHRydWUgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICA6dmFsdWU9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uKS52YWx1ZVwiXG4gICAgICAgICAgICAgIHYtZWxzZVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyAob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uKS5sYWJlbCB9fVxuICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgPC90ZW1wbGF0ZT5cblxuICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgICAgICAgOmtleT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICA6c2VsZWN0ZWQ9XCJtb2RlbFZhbHVlID09PSBvcHRpb24udmFsdWUgPyB0cnVlIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgIDp2YWx1ZT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICB2LWZvcj1cIm9wdGlvbiBpbiBvcHRpb25zXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBvcHRpb24ubGFiZWwgfX1cbiAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgPC9zZWxlY3Q+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltDU1MuUE9TSVRJT04uQUJTT0xVVEUsIENTUy5QT1NJVElPTklORy5SSUdIVCwgQ1NTLk1BUkdJTi5SSUdIVC5PTkUsIENTUy5QT0lOVEVSX0VWRU5UUy5PRkZdXCJcbiAgICAgICAgOmljb249XCJJQ09OLkVYUEFORF9NT1JFXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8VGlkZUlucHV0U3VwcG9ydGluZ1RleHRcbiAgICAgIDppcy1lcnJvcj1cInNob3dFcnJvclwiXG4gICAgICA6bWVzc2FnZT1cInN1cHBvcnRpbmdUZXh0TWVzc2FnZVwiXG4gICAgICB2LWlmPVwic3VwcG9ydGluZ1RleHRNZXNzYWdlXCJcbiAgICAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIHNlbGVjdCB7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgfVxuXG4gIGxhYmVsIHtcbiAgICBoZWlnaHQ6IDEuMTg3NXJlbTtcbiAgICB0cmFuc2l0aW9uOiBmb250LXNpemUgdmFyKC0tdGlkZS1hbmltYXRlKSwgdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICBsYWJlbDpub3QoLm1pbmlsYWJlbCkge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIGNhbGMoOSAvIDE2ICogMXJlbSkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiB2YXIoLS10aWRlLWRpc2FibGVkKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5lcnJvciAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXN1cmZhY2UpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdDpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMik7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXItaGlnaCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0xKTtcbiAgICBvdXRsaW5lOiB2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpIHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBvdXRsaW5lLW9mZnNldDogY2FsYyh2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpICogLTEpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1lcnJvci1wcmltYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5lcnJvciBvcHRpb24ge1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLW9uLXN1cmZhY2UpO1xuICB9XG5cbiAgc2VsZWN0IHtcbiAgICBwYWRkaW5nLXRvcDogMjdweDtcbiAgfVxuPC9zdHlsZT5cbiIsImltcG9ydCB7IHByaWNlVG9OdW1iZXIgfSBmcm9tICdAL3V0aWxpdGllcy9mb3JtYXQnO1xuXG5pbXBvcnQgdHlwZSB7IFN0cmluZ0lucHV0IH0gZnJvbSAnQC90eXBlcy9Gb3JtRGVwcmVjYXRlZCc7XG5pbXBvcnQgdHlwZSB7IFNlbGVjdE9wdGlvbiB9IGZyb20gJ0AvdHlwZXMvU2VsZWN0JztcbmltcG9ydCB0eXBlIHsgVmFsaWRhdGlvbkVycm9yLCBWYWxpZGF0aW9uTGVuZ3RoLCBWYWxpZGF0aW9uUmVzdWx0LCBWYWxpZGF0b3IgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb25EZXByZWNhdGVkJztcbmltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSAndnVlJztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG50eXBlIFJhbmdlRGF0YSA9IHtcbiAgbWluOiBudW1iZXIgfCBudWxsO1xuICBtYXg6IG51bWJlciB8IG51bGw7XG59O1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBlcnJvck1lc3NhZ2VEZWZhdWx0ID0gJ1BsZWFzZSBlbnRlciBhIHZhbGlkIHZhbHVlLic7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IG5vRXJyb3IgPSB7XG4gIG1lc3NhZ2U6ICcnLFxuICB2YWxpZDogdHJ1ZSxcbn0gYXMgUmVhZG9ubHk8VmFsaWRhdGlvblJlc3VsdD47XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGNoZWNrRm9ybWF0ID0gKGZvcm1hdDogUmVnRXhwKSA9PiB7XG4gIHJldHVybiAodmFsdWU6IHN0cmluZyk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICAgIGxldCByZXN1bHQgPSBub0Vycm9yO1xuXG4gICAgaWYgKCF2YWx1ZS50cmltKCkubWF0Y2goZm9ybWF0KSkge1xuICAgICAgcmVzdWx0ID0ge1xuICAgICAgICBtZXNzYWdlOiBlcnJvck1lc3NhZ2VEZWZhdWx0LFxuICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG59O1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRFcnJvck1lc3NhZ2UgPSAoZXJyb3JGcm9tUHJvcHM6IFZhbGlkYXRpb25FcnJvciwgZXJyb3JGcm9tUmVmOiBWYWxpZGF0aW9uRXJyb3IpID0+IHtcbiAgLy8gZXJyb3IgaW4gcHJvcHMgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHZhbGlkYXRpb24gZXJyb3JcbiAgaWYgKHR5cGVvZiBlcnJvckZyb21Qcm9wcyA9PT0gJ3N0cmluZycgJiYgZXJyb3JGcm9tUHJvcHMubGVuZ3RoID4gMCkgcmV0dXJuIGVycm9yRnJvbVByb3BzO1xuXG4gIHJldHVybiB0eXBlb2YgZXJyb3JGcm9tUmVmID09PSAnc3RyaW5nJyAmJiBlcnJvckZyb21SZWYubGVuZ3RoID4gMCA/IGVycm9yRnJvbVJlZiA6IGVycm9yTWVzc2FnZURlZmF1bHQ7XG59O1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRGaWVsZEhhc0Vycm9yID0gKGVycm9yRnJvbVByb3BzOiBWYWxpZGF0aW9uRXJyb3IsIGVycm9yRnJvbVJlZjogVmFsaWRhdGlvbkVycm9yKSA9PlxuICBlcnJvckZyb21Qcm9wcyAhPT0gZmFsc2UgfHwgZXJyb3JGcm9tUmVmICE9PSBmYWxzZTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgZ2V0RmllbGRMZW5ndGhJc1ZhbGlkID0gKHsgbWF4bGVuZ3RoLCBtaW5sZW5ndGgsIHJlcXVpcmVkLCB2YWx1ZSB9OiBWYWxpZGF0aW9uTGVuZ3RoKSA9PiB7XG4gIGNvbnN0IGlzRW1wdHlBbmRVbnJlcXVpcmVkID0gdmFsdWUubGVuZ3RoID09PSAwICYmICFyZXF1aXJlZDtcbiAgY29uc3QgaXNUb29Mb25nID0gbWF4bGVuZ3RoICYmIHZhbHVlLmxlbmd0aCA+IG1heGxlbmd0aDtcbiAgY29uc3QgaXNUb29TaG9ydCA9ICFpc0VtcHR5QW5kVW5yZXF1aXJlZCAmJiBtaW5sZW5ndGggJiYgdmFsdWUubGVuZ3RoIDwgbWlubGVuZ3RoO1xuXG4gIHJldHVybiAhaXNUb29TaG9ydCAmJiAhaXNUb29Mb25nO1xufTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgZ2V0TWF4UmFuZ2VJc1ZhbGlkID0gKHsgbWluIH06IFBpY2s8UmFuZ2VEYXRhLCAnbWluJz4sIHR5cGU/OiAncHJpY2UnKSA9PiB7XG4gIHJldHVybiAodmFsdWU6IHN0cmluZyk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICAgIGxldCBuZXdNYXg6IG51bWJlciB8IG51bGwgPSB0eXBlID09PSAncHJpY2UnID8gcHJpY2VUb051bWJlcih2YWx1ZSkgOiBOdW1iZXIodmFsdWUpO1xuICAgIG5ld01heCA9ICFpc05hTihuZXdNYXgpID8gbmV3TWF4IDogbnVsbDtcbiAgICBpZiAobWluICYmIG5ld01heCkge1xuICAgICAgaWYgKG5ld01heCA+PSBtaW4pIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbWVzc2FnZTogYE11c3QgYmUgZ3JlYXRlciB0aGFuIG1pbmAsXG4gICAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbm9FcnJvcjtcbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRNaW5SYW5nZUlzVmFsaWQgPSAoeyBtYXggfTogUGljazxSYW5nZURhdGEsICdtYXgnPiwgdHlwZT86ICdwcmljZScpID0+IHtcbiAgcmV0dXJuICh2YWx1ZTogc3RyaW5nKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gICAgbGV0IG5ld01pbjogbnVtYmVyIHwgbnVsbCA9IHR5cGUgPT09ICdwcmljZScgPyBwcmljZVRvTnVtYmVyKHZhbHVlKSA6IE51bWJlcih2YWx1ZSk7XG4gICAgbmV3TWluID0gIWlzTmFOKG5ld01pbikgPyBuZXdNaW4gOiBudWxsO1xuICAgIGlmIChtYXggJiYgbmV3TWluKSB7XG4gICAgICBpZiAobmV3TWluIDw9IG1heCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtZXNzYWdlOiBgTXVzdCBiZSBsZXNzIHRoYW4gbWF4YCxcbiAgICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBub0Vycm9yO1xuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldFNlbGVjdE9wdGlvbnNGcm9tU3RyaW5ncyA9IChzdHJpbmdzOiBzdHJpbmdbXSkgPT5cbiAgc3RyaW5ncy5tYXAoXG4gICAgKG9wdGlvbikgPT5cbiAgICAgICh7XG4gICAgICAgIGxhYmVsOiBvcHRpb24sXG4gICAgICAgIHZhbHVlOiBvcHRpb24sXG4gICAgICB9IGFzIFNlbGVjdE9wdGlvbilcbiAgKTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgaGFuZGxlRmllbGRWYWxpZGF0aW9uID0gKHtcbiAgZXJyb3IsXG4gIGVycm9yRnJvbVByb3BzLFxuICBtYXhsZW5ndGgsXG4gIG1pbmxlbmd0aCxcbiAgcmVxdWlyZWQgPSBmYWxzZSxcbiAgdmFsaWRhdG9ycyxcbiAgdmFsdWUsXG59OiB7XG4gIGVycm9yOiBSZWY8VmFsaWRhdGlvbkVycm9yPjtcbiAgZXJyb3JGcm9tUHJvcHM6IFZhbGlkYXRpb25FcnJvcjtcbiAgbWF4bGVuZ3RoPzogbnVtYmVyO1xuICBtaW5sZW5ndGg/OiBudW1iZXI7XG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgdmFsaWRhdG9ycz86IFZhbGlkYXRvcltdO1xuICB2YWx1ZT86IFJlZjxzdHJpbmcgfCB1bmRlZmluZWQ+O1xufSkgPT4ge1xuICAvLyBlcnJvciBpbiBwcm9wcyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdmFsaWRhdGlvbiBlcnJvclxuXG4gIGVycm9yLnZhbHVlID0gZXJyb3JGcm9tUHJvcHMgPyBlcnJvckZyb21Qcm9wcyA6IGZhbHNlO1xuXG4gIGlmICghZXJyb3IudmFsdWUgJiYgdmFsaWRhdG9ycykge1xuICAgIGNvbnN0IHZhbGlkYXRpb24gPSB2YWxpZGF0ZVByb3BlcnR5KHZhbHVlPy52YWx1ZSB8fCAnJywgdmFsaWRhdG9ycyk7XG5cbiAgICBpZiAoIXZhbGlkYXRpb24udmFsaWQpIHtcbiAgICAgIGVycm9yLnZhbHVlID0gdmFsaWRhdGlvbi5tZXNzYWdlO1xuICAgIH1cbiAgfVxuXG4gIGlmICghZXJyb3IudmFsdWUgJiYgKG1heGxlbmd0aCB8fCBtaW5sZW5ndGgpKSB7XG4gICAgY29uc3QgbGVuZ3RoVmFsaWRhdGlvbiA9IHZhbGlkYXRlTGVuZ3RoKHtcbiAgICAgIG1heGxlbmd0aCxcbiAgICAgIG1pbmxlbmd0aCxcbiAgICAgIHJlcXVpcmVkLFxuICAgICAgdmFsdWU6IHZhbHVlPy52YWx1ZSB8fCAnJyxcbiAgICB9KTtcblxuICAgIGlmICghbGVuZ3RoVmFsaWRhdGlvbi52YWxpZCkge1xuICAgICAgZXJyb3IudmFsdWUgPSBsZW5ndGhWYWxpZGF0aW9uLm1lc3NhZ2U7XG4gICAgfVxuICB9XG59O1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUZpZWxkc0Zyb21SZWZzKGZpZWxkczogeyBba2V5OiBzdHJpbmddOiBSZWY8U3RyaW5nSW5wdXQgfCBudWxsPiB9KSB7XG4gIGxldCB2YWxpZCA9IHRydWU7XG5cbiAgZm9yIChjb25zdCBrZXkgaW4gZmllbGRzKSB7XG4gICAgaWYgKGZpZWxkc1trZXldLnZhbHVlPy5yZXF1aXJlZCkge1xuICAgICAgY29uc3QgdmFsdWUgPSBmaWVsZHNba2V5XS52YWx1ZT8udmFsdWU7XG4gICAgICB2YWxpZCA9IHZhbGlkICYmICEhdmFsdWUgJiYgdmFsdWUudHJpbSgpICE9PSAnJztcbiAgICB9XG5cbiAgICBjb25zdCBlcnJvciA9IGZpZWxkc1trZXldLnZhbHVlPy5lcnJvcjtcbiAgICB2YWxpZCA9IHZhbGlkICYmICFlcnJvcjtcbiAgfVxuXG4gIHJldHVybiB2YWxpZDtcbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgdmFsaWRhdGVMZW5ndGggPSAoe1xuICBtYXhsZW5ndGgsXG4gIG1pbmxlbmd0aCxcbiAgcmVxdWlyZWQgPSBmYWxzZSxcbiAgdmFsdWUsXG59OiBWYWxpZGF0aW9uTGVuZ3RoKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gIGNvbnN0IHJlc3BvbnNlID0ge1xuICAgIG1lc3NhZ2U6ICcnLFxuICAgIHZhbGlkOiB0cnVlLFxuICB9O1xuXG4gIHJlc3BvbnNlLnZhbGlkID0gZ2V0RmllbGRMZW5ndGhJc1ZhbGlkKHtcbiAgICBtYXhsZW5ndGgsXG4gICAgbWlubGVuZ3RoLFxuICAgIHJlcXVpcmVkLFxuICAgIHZhbHVlLFxuICB9KTtcblxuICBpZiAocmVzcG9uc2UudmFsaWQpIHJldHVybiByZXNwb25zZTtcblxuICByZXNwb25zZS5tZXNzYWdlID0gZXJyb3JNZXNzYWdlRGVmYXVsdDtcblxuICBpZiAobWF4bGVuZ3RoICYmIG1pbmxlbmd0aCkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBgUGxlYXNlIGVudGVyIGEgdmFsdWUgYmV0d2VlbiAke21pbmxlbmd0aH0gYW5kICR7bWF4bGVuZ3RofSBjaGFyYWN0ZXJzIGluIGxlbmd0aC5gO1xuICB9IGVsc2UgaWYgKG1heGxlbmd0aCkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBgUGxlYXNlIGVudGVyIGEgdmFsdWUgbm8gbW9yZSB0aGFuICR7bWF4bGVuZ3RofSBjaGFyYWN0ZXJzIGluIGxlbmd0aC5gO1xuICB9IGVsc2UgaWYgKG1pbmxlbmd0aCkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBgUGxlYXNlIGVudGVyIGEgdmFsdWUgbm8gbGVzcyB0aGFuICR7bWlubGVuZ3RofSBjaGFyYWN0ZXJzIGluIGxlbmd0aC5gO1xuICB9XG5cbiAgcmV0dXJuIHJlc3BvbnNlO1xufTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVQcm9wZXJ0eSh2YWx1ZTogc3RyaW5nLCB2YWxpZGF0b3JzOiAoKHZhbHVlOiBzdHJpbmcpID0+IFZhbGlkYXRpb25SZXN1bHQpW10pOiBWYWxpZGF0aW9uUmVzdWx0IHtcbiAgZm9yIChjb25zdCB2YWxpZGF0b3Igb2YgdmFsaWRhdG9ycykge1xuICAgIGNvbnN0IHZhbGlkYXRpb24gPSB2YWxpZGF0b3IodmFsdWUpO1xuICAgIGlmICghdmFsaWRhdGlvbi52YWxpZCkge1xuICAgICAgcmV0dXJuIHZhbGlkYXRpb247XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBtZXNzYWdlOiAnJyxcbiAgICB2YWxpZDogdHJ1ZSxcbiAgfTtcbn1cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYFRpZGVJbnB1dFNlbGVjdC52dWVgIGltcG9ydGVkIGZyb20gJ3RpZGUtZGVzaWduLXN5c3RlbScgbnBtIHBhY2thZ2UgaW5zdGVhZC5cbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBnZXRFcnJvck1lc3NhZ2UsIGdldEZpZWxkSGFzRXJyb3IgfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uLWRlcHJlY2F0ZWQnO1xuXG4gIGltcG9ydCB0eXBlIHsgU2VsZWN0RmllbGQgfSBmcm9tICdAL3R5cGVzL0ZpZWxkRGVwcmVjYXRlZCc7XG4gIGltcG9ydCB0eXBlIHsgU2VsZWN0T3B0aW9uLCBTZWxlY3RPcHRpb25Hcm91cCB9IGZyb20gJ0AvdHlwZXMvU2VsZWN0JztcblxuICBleHBvcnQgaW50ZXJmYWNlIFByb3BzIGV4dGVuZHMgU2VsZWN0RmllbGQge1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgc3VwcG9ydGluZ1RleHQ/OiBzdHJpbmc7XG4gIH1cblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlcnJvcjogZmFsc2UsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHN1cHBvcnRpbmdUZXh0OiB1bmRlZmluZWQsXG4gICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgZXJyb3IgPSByZWYocHJvcHMuZXJyb3IpO1xuICBjb25zdCBoYXNGb2N1cyA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IGlucHV0ID0gcmVmPEhUTUxTZWxlY3RFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHJlcXVpcmVkID0gcmVmKHByb3BzLnJlcXVpcmVkKTtcbiAgY29uc3QgdmFsdWUgPSByZWY8c3RyaW5nIHwgdW5kZWZpbmVkPihwcm9wcy52YWx1ZSk7XG5cbiAgY29uc3QgZXJyb3JNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4gZ2V0RXJyb3JNZXNzYWdlKHByb3BzLmVycm9yLCBlcnJvci52YWx1ZSkpO1xuICBjb25zdCBmb3JtYXR0ZWRMYWJlbCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCA/IGAke3Byb3BzLmxhYmVsfSAqYCA6IHByb3BzLmxhYmVsKSk7XG4gIGNvbnN0IGhhc0Vycm9yID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkICYmICF2YWx1ZS52YWx1ZSkgfHwgZ2V0RmllbGRIYXNFcnJvcihlcnJvci52YWx1ZSwgcHJvcHMuZXJyb3IpKTtcbiAgY29uc3QgaGFzTWluaWxhYmVsID0gY29tcHV0ZWQoKCkgPT4gaGFzRm9jdXMudmFsdWUgfHwgIWlzRW1wdHkudmFsdWUpO1xuICBjb25zdCBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4gdmFsdWUudmFsdWUgPT09IHVuZGVmaW5lZCk7XG5cbiAgY29uc3QgZXhwYW5kT3B0aW9ucyA9ICgpID0+IHtcbiAgICBjb25zdCBldmVudCA9IG5ldyBNb3VzZUV2ZW50KCdtb3VzZWRvd24nKTtcbiAgICBpbnB1dD8udmFsdWU/LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c091dCA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IGZhbHNlO1xuICB9O1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLnZhbHVlLFxuICAgIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUgfHwgbmV3VmFsdWUgIT09IHZhbHVlLnZhbHVlKSB7XG4gICAgICAgIHZhbHVlLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB9XG4gICAgfVxuICApO1xuXG4gIGRlZmluZUV4cG9zZSh7IGVycm9yLCB2YWx1ZSB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC1zZWxlY3QnLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBkaXNhYmxlZCAmJiAnZGlzYWJsZWQnLFxuICAgICAgaGFzRXJyb3IgJiYgJ2Vycm9yJyxcbiAgICBdXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtYm9yZGVyJyxcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgIHByb3BzLmRpc2FibGVkID8gQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCA6ICcnLFxuICAgICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgXVwiXG4gICAgICBAY2xpY2s9XCJleHBhbmRPcHRpb25zXCJcbiAgICA+XG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuV0lEVEguRlVMTF1cIj5cbiAgICAgICAgPGxhYmVsXG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgaGFzTWluaWxhYmVsID8gWydtaW5pbGFiZWwnLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzNdIDogQ1NTLkZPTlQuUk9MRS5MQUJFTF8xLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLkxFRlQsXG4gICAgICAgICAgICBDU1MuTUFSR0lOLlRPUC5IQUxGLFxuICAgICAgICAgICAgQ1NTLk1BUkdJTi5MRUZULk9ORSxcbiAgICAgICAgICAgICFoYXNFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIDpmb3I9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZm9ybWF0dGVkTGFiZWwgfX1cbiAgICAgICAgPC9sYWJlbD5cblxuICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgQ1NTLlBBRERJTkcuQk9UVE9NLkhBTEYsXG4gICAgICAgICAgICBDU1MuUEFERElORy5YLk9ORSxcbiAgICAgICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICAgICAgZGlzYWJsZWQgJiYgQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCxcbiAgICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICAgICAgICA6bmFtZT1cIm5hbWVcIlxuICAgICAgICAgIHJlZj1cImlucHV0XCJcbiAgICAgICAgICA6cmVxdWlyZWQ9XCJyZXF1aXJlZFwiXG4gICAgICAgICAgQGZvY3VzPVwiaGFuZGxlRm9jdXNcIlxuICAgICAgICAgIEBmb2N1c291dD1cImhhbmRsZUZvY3VzT3V0XCJcbiAgICAgICAgICA6aWQ9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgICAgICB2LW1vZGVsPVwidmFsdWVcIlxuICAgICAgICA+XG4gICAgICAgICAgPHRlbXBsYXRlIHYtZm9yPVwib3B0Z3JvdXAgaW4gcHJvcHMub3B0Z3JvdXBzXCI+XG4gICAgICAgICAgICA8b3B0Z3JvdXBcbiAgICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgICAgIDprZXk9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uR3JvdXApLmxhYmVsXCJcbiAgICAgICAgICAgICAgOmxhYmVsPVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbkdyb3VwKS5sYWJlbFwiXG4gICAgICAgICAgICAgIHYtaWY9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uR3JvdXApLm9wdGlvbnNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgICAgICAgOmtleT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICAgICAgOnZhbHVlPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgICAgICB2LWZvcj1cIm9wdGlvbiBpbiAob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uR3JvdXApLm9wdGlvbnNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgb3B0aW9uLmxhYmVsIH19XG4gICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgPC9vcHRncm91cD5cblxuICAgICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgICAgOmtleT1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLnZhbHVlXCJcbiAgICAgICAgICAgICAgOnNlbGVjdGVkPVwidmFsdWUgPT09IChvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLnZhbHVlID8gdHJ1ZSA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgIDp2YWx1ZT1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLnZhbHVlXCJcbiAgICAgICAgICAgICAgdi1lbHNlXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IChvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLmxhYmVsIH19XG4gICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICA8L3RlbXBsYXRlPlxuXG4gICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgICA6a2V5PVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgIDpzZWxlY3RlZD1cInZhbHVlID09PSBvcHRpb24udmFsdWUgPyB0cnVlIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgIDp2YWx1ZT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICB2LWZvcj1cIm9wdGlvbiBpbiBvcHRpb25zXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBvcHRpb24ubGFiZWwgfX1cbiAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgPC9zZWxlY3Q+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltDU1MuUE9TSVRJT04uQUJTT0xVVEUsIENTUy5QT1NJVElPTklORy5SSUdIVCwgQ1NTLk1BUkdJTi5SSUdIVC5PTkUsIENTUy5QT0lOVEVSX0VWRU5UUy5PRkZdXCJcbiAgICAgICAgOmljb249XCJJQ09OLkVYUEFORF9NT1JFXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSXVwiXG4gICAgICB2LWlmPVwicHJvcHMuc3VwcG9ydGluZ1RleHQgfHwgaGFzRXJyb3JcIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbXVwiXG4gICAgICAgIDppY29uPVwiSUNPTi5FUlJPUlwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIHYtaWY9XCJoYXNFcnJvclwiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzNdXCI+XG4gICAgICAgIHt7IGhhc0Vycm9yID8gZXJyb3JNZXNzYWdlIDogcHJvcHMuc3VwcG9ydGluZ1RleHQgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIHNlbGVjdCB7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgfVxuXG4gIGxhYmVsIHtcbiAgICBoZWlnaHQ6IDEuMTg3NXJlbTtcbiAgICB0cmFuc2l0aW9uOiBmb250LXNpemUgdmFyKC0tdGlkZS1hbmltYXRlKSwgdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICBsYWJlbDpub3QoLm1pbmlsYWJlbCkge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIGNhbGMoOSAvIDE2ICogMXJlbSkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiB2YXIoLS10aWRlLWRpc2FibGVkKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5lcnJvciAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXN1cmZhY2UpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdDpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMik7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXItaGlnaCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0xKTtcbiAgICBvdXRsaW5lOiB2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpIHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBvdXRsaW5lLW9mZnNldDogY2FsYyh2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpICogLTEpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1lcnJvci1wcmltYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5lcnJvciBvcHRpb24ge1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLW9uLXN1cmZhY2UpO1xuICB9XG5cbiAgc2VsZWN0IHtcbiAgICBwYWRkaW5nLXRvcDogMjdweDtcbiAgfVxuPC9zdHlsZT5cbiIsImV4cG9ydCBjb25zdCBURVhUX0lOUFVUX1RZUEUgPSB7XG4gIERBVEU6ICdkYXRlJyxcbiAgREFURVRJTUVfTE9DQUw6ICdkYXRldGltZS1sb2NhbCcsXG4gIEVNQUlMOiAnZW1haWwnLFxuICBNT05USDogJ21vbnRoJyxcbiAgTlVNQkVSOiAnbnVtYmVyJyxcbiAgUEFTU1dPUkQ6ICdwYXNzd29yZCcsXG4gIFNFQVJDSDogJ3NlYXJjaCcsXG4gIFRFTDogJ3RlbCcsXG4gIFRFWFQ6ICd0ZXh0JyxcbiAgVElNRTogJ3RpbWUnLFxuICBVUkw6ICd1cmwnLFxuICBXRUVLOiAnd2VlaycsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBUZXh0SW5wdXRUeXBlID0gKHR5cGVvZiBURVhUX0lOUFVUX1RZUEUpW2tleW9mIHR5cGVvZiBURVhUX0lOUFVUX1RZUEVdO1xuXG5leHBvcnQgY29uc3QgSU5QVVRfTU9ERSA9IHtcbiAgREVDSU1BTDogJ2RlY2ltYWwnLFxuICBFTUFJTDogJ2VtYWlsJyxcbiAgTlVNRVJJQzogJ251bWVyaWMnLFxuICBTRUFSQ0g6ICdzZWFyY2gnLFxuICBURUw6ICd0ZWwnLFxuICBURVhUOiAndGV4dCcsXG4gIFVSTDogJ3VybCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBJbnB1dE1vZGUgPSAodHlwZW9mIElOUFVUX01PREUpW2tleW9mIHR5cGVvZiBJTlBVVF9NT0RFXTtcbiIsImltcG9ydCB7IElOUFVUX01PREUsIFRFWFRfSU5QVVRfVFlQRSB9IGZyb20gJ0AvdHlwZXMvVGV4dElucHV0JztcblxuaW1wb3J0IHR5cGUgeyBJbnB1dE1vZGUsIFRleHRJbnB1dFR5cGUgfSBmcm9tICdAL3R5cGVzL1RleHRJbnB1dCc7XG5cbmV4cG9ydCBjb25zdCBnZXRUZXh0SW5wdXRNb2RlID0gKHR5cGU6IFRleHRJbnB1dFR5cGUsIGlucHV0bW9kZT86IElucHV0TW9kZSk6IElucHV0TW9kZSB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmIChpbnB1dG1vZGUpIHJldHVybiBpbnB1dG1vZGU7XG5cbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBURVhUX0lOUFVUX1RZUEUuVEVMOlxuICAgICAgcmV0dXJuIElOUFVUX01PREUuVEVMO1xuICAgIGNhc2UgVEVYVF9JTlBVVF9UWVBFLlNFQVJDSDpcbiAgICAgIHJldHVybiBJTlBVVF9NT0RFLlNFQVJDSDtcbiAgICBjYXNlIFRFWFRfSU5QVVRfVFlQRS5OVU1CRVI6XG4gICAgICByZXR1cm4gSU5QVVRfTU9ERS5OVU1FUklDO1xuICAgIGNhc2UgVEVYVF9JTlBVVF9UWVBFLkVNQUlMOlxuICAgICAgcmV0dXJuIElOUFVUX01PREUuRU1BSUw7XG4gICAgY2FzZSBURVhUX0lOUFVUX1RZUEUuVVJMOlxuICAgICAgcmV0dXJuIElOUFVUX01PREUuVVJMO1xuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn07XG4iLCI8c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmLCB3YXRjaCwgd2F0Y2hFZmZlY3QgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IFRpZGVJbnB1dFN1cHBvcnRpbmdUZXh0IGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSW5wdXRTdXBwb3J0aW5nVGV4dC52dWUnO1xuICBpbXBvcnQgeyB1c2VGb3JtQ29udGV4dCB9IGZyb20gJ0AvY29tcG9zYWJsZXMvdXNlVGlkZUZvcm0nO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgVEVYVF9JTlBVVF9UWVBFIH0gZnJvbSAnQC90eXBlcy9UZXh0SW5wdXQnO1xuICBpbXBvcnQgeyBFUlJPUl9ESVNQTEFZIH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uJztcbiAgaW1wb3J0IHsgZ2V0VGV4dElucHV0TW9kZSB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1zJztcbiAgaW1wb3J0IHsgVkFMSURBVElPTl9SRVNVTFQsIGdldEZpZWxkVmFsaWRhdGlvblJlc3VsdCB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24nO1xuXG4gIGltcG9ydCB0eXBlIHsgRm9ybVZhbHVlVHJhbnNmb3JtZXIgfSBmcm9tICdAL3R5cGVzL0Zvcm0nO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgdHlwZSB7IElucHV0TW9kZSwgVGV4dElucHV0VHlwZSB9IGZyb20gJ0AvdHlwZXMvVGV4dElucHV0JztcbiAgaW1wb3J0IHR5cGUgeyBFcnJvckRpc3BsYXksIFZhbGlkYXRpb25SZXN1bHQsIFZhbGlkYXRvciB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBhdXRvY29tcGxldGU/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+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW5wdXQtdGV4dC1sYWJlbCB7XG4gICAgaGVpZ2h0OiAxLjE4NzVyZW07XG4gICAgdHJhbnNpdGlvbjogZm9udC1zaXplIHZhcigtLXRpZGUtYW5pbWF0ZSksIHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC1sYWJlbDpub3QoLm1pbmlsYWJlbCksXG4gIC50aWRlLWlucHV0LXRleHQtcHJlZml4Om5vdCgub2Zmc2V0KSxcbiAgLnRpZGUtaW5wdXQtdGV4dC1zdWZmaXg6bm90KC5vZmZzZXQpIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCBjYWxjKDkgLyAxNiAqIDFyZW0pKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQtcHJlZml4LFxuICAudGlkZS1pbnB1dC10ZXh0LXN1ZmZpeCB7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiB2YXIoLS10aWRlLWRpc2FibGVkKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZXJyb3Ige1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXByaW1hcnkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5lcnJvciAudGlkZS1pbnB1dC10ZXh0LWZpZWxkIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZXJyb3I6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHQtZmllbGQge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQ6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHQtZmllbGQge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0yKTtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQgaW5wdXQge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LWZpZWxkIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMSk7XG4gICAgb3V0bGluZTogdmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSBzb2xpZCB2YXIoLS10aWRlLWJvcmRlcik7XG4gICAgb3V0bGluZS1vZmZzZXQ6IGNhbGModmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSAqIC0xKTtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1vbi1zdXJmYWNlKTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYFRpZGVJbnB1dFRleHQudnVlYCBpbXBvcnRlZCBmcm9tICd0aWRlLWRlc2lnbi1zeXN0ZW0nIG5wbSBwYWNrYWdlIGluc3RlYWQuXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgVEVYVF9JTlBVVF9UWVBFIH0gZnJvbSAnQC90eXBlcy9UZXh0SW5wdXQnO1xuICBpbXBvcnQgeyBnZXRFcnJvck1lc3NhZ2UsIGdldEZpZWxkSGFzRXJyb3IsIGhhbmRsZUZpZWxkVmFsaWRhdGlvbiB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24tZGVwcmVjYXRlZCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBGb3JtVmFsdWVUcmFuc2Zvcm1lciB9IGZyb20gJ0AvdHlwZXMvRm9ybURlcHJlY2F0ZWQnO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgdHlwZSB7IFRleHRJbnB1dFR5cGUgfSBmcm9tICdAL3R5cGVzL1RleHRJbnB1dCc7XG4gIGltcG9ydCB0eXBlIHsgVmFsaWRhdGlvbkVycm9yLCBWYWxpZGF0b3IgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb25EZXByZWNhdGVkJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGF1dG9jb21wbGV0ZT86IGJvb2xlYW47XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGVycm9yPzogVmFsaWRhdGlvbkVycm9yO1xuICAgIGhhc0NsZWFyPzogYm9vbGVhbjtcbiAgICBpY29uTGVhZGluZz86IEljb247XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBsYWJlbD86IHN0cmluZztcbiAgICBtYXhsZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgbWlubGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgcHJlZml4Pzogc3RyaW5nO1xuICAgIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgICBzdWZmaXg/OiBzdHJpbmc7XG4gICAgc3VwcG9ydGluZ1RleHQ/OiBzdHJpbmc7XG4gICAgdHJhbnNmb3JtVmFsdWU/OiBGb3JtVmFsdWVUcmFuc2Zvcm1lcjtcbiAgICB0eXBlPzogVGV4dElucHV0VHlwZTtcbiAgICB2YWxpZGF0b3JzPzogVmFsaWRhdG9yW107XG4gICAgdmFsdWU/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBhdXRvY29tcGxldGU6IGZhbHNlLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlcnJvcjogZmFsc2UsXG4gICAgaGFzQ2xlYXI6IGZhbHNlLFxuICAgIGljb25MZWFkaW5nOiB1bmRlZmluZWQsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbWF4bGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgbWlubGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgbmFtZTogdW5kZWZpbmVkLFxuICAgIHByZWZpeDogdW5kZWZpbmVkLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBzdWZmaXg6IHVuZGVmaW5lZCxcbiAgICBzdXBwb3J0aW5nVGV4dDogdW5kZWZpbmVkLFxuICAgIHRyYW5zZm9ybVZhbHVlOiB1bmRlZmluZWQsXG4gICAgdHlwZTogVEVYVF9JTlBVVF9UWVBFLlRFWFQsXG4gICAgdmFsaWRhdG9yczogdW5kZWZpbmVkLFxuICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IGVycm9yID0gcmVmKHByb3BzLmVycm9yKTtcbiAgY29uc3QgaGFzRm9jdXMgPSByZWYoZmFsc2UpO1xuICBjb25zdCBpbnB1dCA9IHJlZjxIVE1MSW5wdXRFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHNob3dQYXNzd29yZCA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IHZhbHVlID0gcmVmKHByb3BzLnZhbHVlKTtcblxuICBjb25zdCBlcnJvck1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiBnZXRFcnJvck1lc3NhZ2UocHJvcHMuZXJyb3IsIGVycm9yLnZhbHVlKSk7XG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkICYmIHByb3BzLmxhYmVsID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3QgaGFzQ2xlYXIgPSBjb21wdXRlZCgoKSA9PiBwcm9wcy5oYXNDbGVhciAmJiB2YWx1ZS52YWx1ZSk7XG4gIGNvbnN0IGhhc0Vycm9yID0gY29tcHV0ZWQoXG4gICAgKCkgPT4gKHByb3BzLnJlcXVpcmVkICYmIHZhbHVlLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgIXZhbHVlLnZhbHVlKSB8fCBnZXRGaWVsZEhhc0Vycm9yKGVycm9yLnZhbHVlLCBwcm9wcy5lcnJvcilcbiAgKTtcbiAgY29uc3QgaGFzTWluaWxhYmVsID0gY29tcHV0ZWQoKCkgPT4gaGFzRm9jdXMudmFsdWUgfHwgIWlzRW1wdHkudmFsdWUpO1xuICBjb25zdCBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4gdmFsdWUudmFsdWUgPT09ICcnIHx8IHZhbHVlLnZhbHVlID09PSB1bmRlZmluZWQpO1xuICBjb25zdCBpbnB1dFR5cGUgPSBjb21wdXRlZCgoKSA9PlxuICAgIHByb3BzLnR5cGUgPT09IFRFWFRfSU5QVVRfVFlQRS5QQVNTV09SRCAmJiBzaG93UGFzc3dvcmQudmFsdWUgPT09IHRydWUgPyBURVhUX0lOUFVUX1RZUEUuVEVYVCA6IHByb3BzLnR5cGVcbiAgKTtcblxuICBjb25zdCBoYW5kbGVDbGVhciA9ICgpID0+IHtcbiAgICB2YWx1ZS52YWx1ZSA9ICcnO1xuICAgIGlucHV0LnZhbHVlPy5mb2N1cygpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c091dCA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgaWYgKCF2YWx1ZS52YWx1ZSkge1xuICAgICAgdmFsdWUudmFsdWUgPSAnJztcbiAgICB9XG5cbiAgICBoYW5kbGVWYWxpZGF0aW9uKCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlSW5wdXQgPSAoKSA9PiB7XG4gICAgaWYgKHByb3BzLnRyYW5zZm9ybVZhbHVlKSB7XG4gICAgICBjb25zdCBkaWdpdHMgPSB2YWx1ZS52YWx1ZT8ubWF0Y2goL1xcZC9nKT8uam9pbignJykgfHwgdW5kZWZpbmVkO1xuXG4gICAgICB2YWx1ZS52YWx1ZSA9IGRpZ2l0cyA/IHByb3BzLnRyYW5zZm9ybVZhbHVlKGRpZ2l0cykgOiAnJztcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlVmFsaWRhdGlvbiA9ICgpID0+IHtcbiAgICBoYW5kbGVGaWVsZFZhbGlkYXRpb24oe1xuICAgICAgZXJyb3IsXG4gICAgICBlcnJvckZyb21Qcm9wczogcHJvcHMuZXJyb3IsXG4gICAgICBtYXhsZW5ndGg6IHByb3BzLm1heGxlbmd0aCxcbiAgICAgIG1pbmxlbmd0aDogcHJvcHMubWlubGVuZ3RoLFxuICAgICAgcmVxdWlyZWQ6IHByb3BzLnJlcXVpcmVkLFxuICAgICAgdmFsaWRhdG9yczogcHJvcHMudmFsaWRhdG9ycyxcbiAgICAgIHZhbHVlLFxuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZVZhbHVlID0gKG5ld1ZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICB2YWx1ZS52YWx1ZSA9IG5ld1ZhbHVlO1xuICB9O1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLnZhbHVlLFxuICAgIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUgfHwgbmV3VmFsdWUgIT09IHZhbHVlLnZhbHVlKSB7XG4gICAgICAgIHZhbHVlLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB9XG4gICAgfVxuICApO1xuXG4gIGRlZmluZUV4cG9zZSh7XG4gICAgZXJyb3IsXG4gICAgcmVxdWlyZWQ6IHByb3BzLnJlcXVpcmVkLFxuICAgIHVwZGF0ZVZhbHVlLFxuICAgIHZhbHVlLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC10ZXh0JyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgZGlzYWJsZWQgJiYgJ2Rpc2FibGVkJyxcbiAgICAgIGhhc0Vycm9yICYmICdlcnJvcicsXG4gICAgXVwiXG4gID5cbiAgICA8bGFiZWxcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dC1maWVsZCcsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBoYXNDbGVhciA/IFtDU1MuUEFERElORy5SSUdIVC5IQUxGLCBDU1MuUEFERElORy5MRUZULk9ORV0gOiBbQ1NTLlBBRERJTkcuWC5PTkVdLFxuICAgICAgICBDU1MuUEFERElORy5ZLkhBTEYsXG4gICAgICAgIGRpc2FibGVkID8gQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCA6IENTUy5DVVJTT1IuVEVYVCxcbiAgICAgIF1cIlxuICAgICAgOmZvcj1cImlucHV0SWRcIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgIDppY29uPVwiaWNvbkxlYWRpbmdcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwiaWNvbkxlYWRpbmdcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuV0lEVEguRlVMTF1cIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLWlucHV0LXRleHQtcHJlZml4JyxcbiAgICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICAgICAgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/ICcnIDogJ29mZnNldCcsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgdi1pZj1cInByZWZpeFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBwcmVmaXggfX1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLldJRFRILkZVTExdXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgICAndGlkZS1pbnB1dC10ZXh0LWxhYmVsJyxcbiAgICAgICAgICAgICAgaGFzTWluaWxhYmVsID8gWydtaW5pbGFiZWwnLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzNdIDogQ1NTLkZPTlQuUk9MRS5MQUJFTF8xLFxuICAgICAgICAgICAgICAhaGFzRXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgICAgICBDU1MuQ1VSU09SLlRFWFQsXG4gICAgICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgICAgICBdXCJcbiAgICAgICAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgZm9ybWF0dGVkTGFiZWwgfX1cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgOmF1dG9jb21wbGV0ZT1cImF1dG9jb21wbGV0ZSA/ICdvbicgOiAnb2ZmJ1wiXG4gICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIGRpc2FibGVkICYmIENTUy5DVVJTT1IuTk9UX0FMTE9XRUQsIENTUy5GT05ULlJPTEUuQk9EWV8xXVwiXG4gICAgICAgICAgICA6ZGlzYWJsZWQ9XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICA6bWF4bGVuZ3RoPVwibWF4bGVuZ3RoXCJcbiAgICAgICAgICAgIDptaW5sZW5ndGg9XCJtaW5sZW5ndGhcIlxuICAgICAgICAgICAgOm5hbWU9XCJuYW1lXCJcbiAgICAgICAgICAgIHJlZj1cImlucHV0XCJcbiAgICAgICAgICAgIDpyZXF1aXJlZD1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgIDp0eXBlPVwiaW5wdXRUeXBlXCJcbiAgICAgICAgICAgIEBjaGFuZ2U9XCJoYW5kbGVWYWxpZGF0aW9uXCJcbiAgICAgICAgICAgIEBmb2N1cz1cImhhbmRsZUZvY3VzXCJcbiAgICAgICAgICAgIEBmb2N1c291dD1cImhhbmRsZUZvY3VzT3V0XCJcbiAgICAgICAgICAgIEBpbnB1dD1cImhhbmRsZUlucHV0XCJcbiAgICAgICAgICAgIDppZD1cImlucHV0SWRcIlxuICAgICAgICAgICAgdi1tb2RlbD1cInZhbHVlXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dC1zdWZmaXgnLFxuICAgICAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgICAgICAhaGFzRXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgICAgaGFzTWluaWxhYmVsID8gJycgOiAnb2Zmc2V0JyxcbiAgICAgICAgICBdXCJcbiAgICAgICAgICB2LWlmPVwic3VmZml4XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHN1ZmZpeCB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgIEBjbGljaz1cImhhbmRsZUNsZWFyXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIHYtaWY9XCJoYXNDbGVhciAmJiB0eXBlICE9PSBURVhUX0lOUFVUX1RZUEUuUEFTU1dPUkRcIlxuICAgICAgPlxuICAgICAgICA8VGlkZUljb25cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5GVUxMLkhBTEZdXCJcbiAgICAgICAgICA6aWNvbj1cIklDT04uQ0xPU0VcIlxuICAgICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIC8+XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPGJ1dHRvblxuICAgICAgICBAY2xpY2s9XCJzaG93UGFzc3dvcmQgPSAhc2hvd1Bhc3N3b3JkXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIHYtaWY9XCJ0eXBlID09PSBURVhUX0lOUFVUX1RZUEUuUEFTU1dPUkRcIlxuICAgICAgPlxuICAgICAgICA8VGlkZUljb25cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5GVUxMLkhBTEZdXCJcbiAgICAgICAgICA6aWNvbj1cIklDT04uVklTSUJJTElUWVwiXG4gICAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgLz5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbGFiZWw+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSXVwiXG4gICAgICB2LWlmPVwic3VwcG9ydGluZ1RleHQgfHwgaGFzRXJyb3JcIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbXVwiXG4gICAgICAgIDppY29uPVwiSUNPTi5FUlJPUlwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIHYtaWY9XCJoYXNFcnJvclwiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzNdXCI+XG4gICAgICAgIHt7IGhhc0Vycm9yID8gZXJyb3JNZXNzYWdlIDogc3VwcG9ydGluZ1RleHQgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWlucHV0LXRleHQtbGFiZWwge1xuICAgIGhlaWdodDogMS4xODc1cmVtO1xuICAgIHRyYW5zaXRpb246IGZvbnQtc2l6ZSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQtbGFiZWw6bm90KC5taW5pbGFiZWwpLFxuICAudGlkZS1pbnB1dC10ZXh0LXByZWZpeDpub3QoLm9mZnNldCksXG4gIC50aWRlLWlucHV0LXRleHQtc3VmZml4Om5vdCgub2Zmc2V0KSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgY2FsYyg5IC8gMTYgKiAxcmVtKSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LXByZWZpeCxcbiAgLnRpZGUtaW5wdXQtdGV4dC1zdWZmaXgge1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogdmFyKC0tdGlkZS1kaXNhYmxlZCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmVycm9yIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1lcnJvci1wcmltYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZXJyb3IgLnRpZGUtaW5wdXQtdGV4dC1maWVsZCB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtZXJyb3Itc3VyZmFjZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmVycm9yOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC10ZXh0LWZpZWxkIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0OmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC10ZXh0LWZpZWxkIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMik7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXItaGlnaCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0IGlucHV0IHtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC1maWVsZCB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTEpO1xuICAgIG91dGxpbmU6IHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgc29saWQgdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiBjYWxjKHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgKiAtMSk7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtb24tc3VyZmFjZSk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmLCB3YXRjaCwgd2F0Y2hFZmZlY3QgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dCBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUlucHV0U3VwcG9ydGluZ1RleHQudnVlJztcbiAgaW1wb3J0IHsgdXNlRm9ybUNvbnRleHQgfSBmcm9tICdAL2NvbXBvc2FibGVzL3VzZVRpZGVGb3JtJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBFUlJPUl9ESVNQTEFZIH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uJztcbiAgaW1wb3J0IHsgVkFMSURBVElPTl9SRVNVTFQsIGdldEZpZWxkVmFsaWRhdGlvblJlc3VsdCB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24nO1xuXG4gIGltcG9ydCB0eXBlIHsgRXJyb3JEaXNwbGF5LCBWYWxpZGF0aW9uUmVzdWx0LCBWYWxpZGF0b3IgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgZXJyb3I/OiBzdHJpbmc7XG4gICAgZXJyb3JEaXNwbGF5PzogRXJyb3JEaXNwbGF5O1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgbWF4bGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIG1pbmxlbmd0aD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgICByb3dzPzogbnVtYmVyO1xuICAgIHN1cHBvcnRpbmdUZXh0Pzogc3RyaW5nO1xuICAgIHZhbGlkYXRvcnM/OiBWYWxpZGF0b3JbXTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGVycm9yOiAnJyxcbiAgICBlcnJvckRpc3BsYXk6IEVSUk9SX0RJU1BMQVkuTEFaWSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBtYXhsZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBtaW5sZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBuYW1lOiB1bmRlZmluZWQsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHJvd3M6IDgsXG4gICAgc3VwcG9ydGluZ1RleHQ6IHVuZGVmaW5lZCxcbiAgICB2YWxpZGF0b3JzOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIHR5cGUgRW1pdHMgPSB7XG4gICAgKGV2ZW50OiAndmFsaWQnLCBpc1ZhbGlkOiBib29sZWFuKTogdm9pZDtcbiAgfTtcbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPEVtaXRzPigpO1xuXG4gIGNvbnN0IG1vZGVsVmFsdWUgPSBkZWZpbmVNb2RlbDxzdHJpbmc+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3QgZm9ybUNvbnRleHQgPSB1c2VGb3JtQ29udGV4dCgpO1xuXG4gIGNvbnN0IGVycm9yUmVmID0gcmVmPFZhbGlkYXRpb25SZXN1bHQ+KFZBTElEQVRJT05fUkVTVUxULk5PX0VSUk9SKTtcbiAgY29uc3QgaGFzRm9jdXMgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBpc1ZhbGlkYXRpbmcgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCB0ZXh0YXJlYUVsZW1lbnQgPSByZWY8SFRNTFRleHRBcmVhRWxlbWVudCB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3Qgc2hvd0Vycm9yID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmIChoYXNFcnJvckZyb21Qcm9wLnZhbHVlKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoIWlzVmFsaWRhdGluZy52YWx1ZSkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiAhZXJyb3JSZWYudmFsdWUudmFsaWQ7XG4gIH0pO1xuICBjb25zdCBoYXNFcnJvckZyb21Qcm9wID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMuZXJyb3IgIT09ICcnKTtcbiAgY29uc3QgaGFzTWluaWxhYmVsID0gY29tcHV0ZWQoKCkgPT4gaGFzRm9jdXMudmFsdWUgfHwgIWlzRW1wdHkudmFsdWUpO1xuICBjb25zdCBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4gbW9kZWxWYWx1ZS52YWx1ZSA9PT0gJycpO1xuICBjb25zdCBzdXBwb3J0aW5nVGV4dE1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiAoc2hvd0Vycm9yLnZhbHVlICYmIGVycm9yUmVmLnZhbHVlLm1lc3NhZ2UpIHx8IHByb3BzLnN1cHBvcnRpbmdUZXh0KTtcblxuICBjb25zdCBoYW5kbGVGb2N1cyA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IHRydWU7XG4gICAgaWYgKHByb3BzLmVycm9yRGlzcGxheSA9PT0gRVJST1JfRElTUExBWS5FQUdFUikgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c091dCA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IGZhbHNlO1xuICAgIGlmIChwcm9wcy5lcnJvckRpc3BsYXkgPT09IEVSUk9SX0RJU1BMQVkuTEFaWSkgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGaWVsZENsaWNrID0gKCkgPT4ge1xuICAgIHRleHRhcmVhRWxlbWVudC52YWx1ZT8uZm9jdXMoKTtcbiAgfTtcblxuICBjb25zdCBwcmV2ZW50VGV4dGFyZWFGb2N1c0xvc3NPbk1vdXNlZG93biA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgaWYgKCFoYXNGb2N1cy52YWx1ZSkgcmV0dXJuO1xuICAgIGlmIChlLnRhcmdldCAhPT0gdGV4dGFyZWFFbGVtZW50LnZhbHVlKSBlLnByZXZlbnREZWZhdWx0KCk7XG4gIH07XG5cbiAgd2F0Y2hFZmZlY3QoKCkgPT4ge1xuICAgIGVycm9yUmVmLnZhbHVlID0gZ2V0RmllbGRWYWxpZGF0aW9uUmVzdWx0KHtcbiAgICAgIGVycm9yRnJvbVByb3BzOiBwcm9wcy5lcnJvcixcbiAgICAgIG1heGxlbmd0aDogcHJvcHMubWF4bGVuZ3RoLFxuICAgICAgbWlubGVuZ3RoOiBwcm9wcy5taW5sZW5ndGgsXG4gICAgICByZXF1aXJlZDogcHJvcHMucmVxdWlyZWQsXG4gICAgICB2YWxpZGF0b3JzOiBwcm9wcy52YWxpZGF0b3JzLFxuICAgICAgdmFsdWU6IG1vZGVsVmFsdWUsXG4gICAgfSk7XG4gIH0pO1xuXG4gIHdhdGNoKFxuICAgICgpID0+IGZvcm1Db250ZXh0Py5mb3JjZVNob3dFcnJvcnMudmFsdWUsXG4gICAgKG5ld1ZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUpIGlzVmFsaWRhdGluZy52YWx1ZSA9IHRydWU7XG4gICAgfSxcbiAgICB7IGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG5cbiAgd2F0Y2goXG4gICAgZXJyb3JSZWYsXG4gICAgKCkgPT4ge1xuICAgICAgZW1pdCgndmFsaWQnLCBlcnJvclJlZi52YWx1ZS52YWxpZCk7XG4gICAgfSxcbiAgICB7IGRlZXA6IHRydWUsIGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiWyd0aWRlLWlucHV0LXRleHRhcmVhJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLkdBUC5RVUFSVEVSLCBzaG93RXJyb3IgJiYgJ2Vycm9yJ11cIlxuICA+XG4gICAgPGxhYmVsXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkJyxcbiAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgIENTUy5QQURESU5HLlRPUC5IQUxGLFxuICAgICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBDU1MuQ1VSU09SLlRFWFQsXG4gICAgICBdXCJcbiAgICAgIDpmb3I9XCJpbnB1dElkXCJcbiAgICAgIEBjbGljaz1cImhhbmRsZUZpZWxkQ2xpY2tcIlxuICAgICAgQG1vdXNlZG93bj1cInByZXZlbnRUZXh0YXJlYUZvY3VzTG9zc09uTW91c2Vkb3duXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1pbnB1dC10ZXh0YXJlYS1sYWJlbCcsXG4gICAgICAgICAgQ1NTLlBBRERJTkcuWC5PTkUsXG4gICAgICAgICAgaGFzTWluaWxhYmVsID8gWydtaW5pbGFiZWwnLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzNdIDogQ1NTLkZPTlQuUk9MRS5MQUJFTF8xLFxuICAgICAgICAgICFzaG93RXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgIF1cIlxuICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgPlxuICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDx0ZXh0YXJlYVxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuQkxPQ0ssIENTUy5GT05ULlJPTEUuQk9EWV8xLCBDU1MuUEFERElORy5YLk9ORSwgQ1NTLldJRFRILkZVTExdXCJcbiAgICAgICAgOm1heGxlbmd0aD1cIm1heGxlbmd0aFwiXG4gICAgICAgIDptaW5sZW5ndGg9XCJtaW5sZW5ndGhcIlxuICAgICAgICA6bmFtZT1cIm5hbWVcIlxuICAgICAgICByZWY9XCJ0ZXh0YXJlYUVsZW1lbnRcIlxuICAgICAgICA6cmVxdWlyZWQ9XCJyZXF1aXJlZFwiXG4gICAgICAgIDpyb3dzPVwicm93c1wiXG4gICAgICAgIEBmb2N1cz1cImhhbmRsZUZvY3VzXCJcbiAgICAgICAgQGZvY3Vzb3V0PVwiaGFuZGxlRm9jdXNPdXRcIlxuICAgICAgICA6aWQ9XCJpbnB1dElkXCJcbiAgICAgICAgdi1tb2RlbD1cIm1vZGVsVmFsdWVcIlxuICAgICAgLz5cbiAgICA8L2xhYmVsPlxuXG4gICAgPFRpZGVJbnB1dFN1cHBvcnRpbmdUZXh0XG4gICAgICA6aXMtZXJyb3I9XCJzaG93RXJyb3JcIlxuICAgICAgOm1lc3NhZ2U9XCJzdXBwb3J0aW5nVGV4dE1lc3NhZ2VcIlxuICAgICAgdi1pZj1cInN1cHBvcnRpbmdUZXh0TWVzc2FnZVwiXG4gICAgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICB0ZXh0YXJlYSB7XG4gICAgcmVzaXplOiB2ZXJ0aWNhbDtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLWxhYmVsIHtcbiAgICBoZWlnaHQ6IDEuMTg3NXJlbTtcbiAgICB0cmFuc2l0aW9uOiBmb250LXNpemUgdmFyKC0tdGlkZS1hbmltYXRlKSwgdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS5lcnJvciB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItcHJpbWFyeSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS5lcnJvciAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtZXJyb3Itc3VyZmFjZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS5lcnJvcjpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTIpO1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtYm9yZGVyLWhpZ2gpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEgdGV4dGFyZWEge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTEpO1xuICAgIG91dGxpbmU6IHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgc29saWQgdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiBjYWxjKHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgKiAtMSk7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtb24tc3VyZmFjZSk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBUaWRlSW5wdXRUZXh0YXJlYS52dWVgIGltcG9ydGVkIGZyb20gJ3RpZGUtZGVzaWduLXN5c3RlbScgbnBtIHBhY2thZ2UgaW5zdGVhZC5cbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBnZXRFcnJvck1lc3NhZ2UsIGdldEZpZWxkSGFzRXJyb3IsIGhhbmRsZUZpZWxkVmFsaWRhdGlvbiB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24tZGVwcmVjYXRlZCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb25EZXByZWNhdGVkJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGVycm9yPzogVmFsaWRhdGlvbkVycm9yO1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgbWF4bGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIG1pbmxlbmd0aD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgICByb3dzPzogbnVtYmVyO1xuICAgIHN1cHBvcnRpbmdUZXh0Pzogc3RyaW5nO1xuICAgIHZhbHVlPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZXJyb3I6IGZhbHNlLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG1heGxlbmd0aDogdW5kZWZpbmVkLFxuICAgIG1pbmxlbmd0aDogdW5kZWZpbmVkLFxuICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgcm93czogOCxcbiAgICBzdXBwb3J0aW5nVGV4dDogdW5kZWZpbmVkLFxuICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IGVycm9yID0gcmVmKHByb3BzLmVycm9yKTtcbiAgY29uc3QgaGFzRm9jdXMgPSByZWYoZmFsc2UpO1xuICBjb25zdCBpbnB1dCA9IHJlZjxIVE1MSW5wdXRFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHZhbHVlID0gcmVmKHByb3BzLnZhbHVlKTtcblxuICBjb25zdCBlcnJvck1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiBnZXRFcnJvck1lc3NhZ2UocHJvcHMuZXJyb3IsIGVycm9yLnZhbHVlKSk7XG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3QgaGFzRXJyb3IgPSBjb21wdXRlZChcbiAgICAoKSA9PiAocHJvcHMucmVxdWlyZWQgJiYgdmFsdWUudmFsdWUgIT09IHVuZGVmaW5lZCAmJiAhdmFsdWUudmFsdWUpIHx8IGdldEZpZWxkSGFzRXJyb3IoZXJyb3IudmFsdWUsIHByb3BzLmVycm9yKVxuICApO1xuICBjb25zdCBoYXNNaW5pbGFiZWwgPSBjb21wdXRlZCgoKSA9PiBoYXNGb2N1cy52YWx1ZSB8fCAhaXNFbXB0eS52YWx1ZSk7XG4gIGNvbnN0IGlzRW1wdHkgPSBjb21wdXRlZCgoKSA9PiB2YWx1ZS52YWx1ZSA9PT0gJycgfHwgdmFsdWUudmFsdWUgPT09IHVuZGVmaW5lZCk7XG5cbiAgY29uc3QgaGFuZGxlRm9jdXMgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzT3V0ID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gZmFsc2U7XG5cbiAgICBpZiAoIXZhbHVlLnZhbHVlKSB7XG4gICAgICB2YWx1ZS52YWx1ZSA9ICcnO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVWYWxpZGF0aW9uID0gKCkgPT4ge1xuICAgIHJldHVybiBoYW5kbGVGaWVsZFZhbGlkYXRpb24oe1xuICAgICAgZXJyb3IsXG4gICAgICBlcnJvckZyb21Qcm9wczogcHJvcHMuZXJyb3IsXG4gICAgICBtYXhsZW5ndGg6IHByb3BzLm1heGxlbmd0aCxcbiAgICAgIG1pbmxlbmd0aDogcHJvcHMubWlubGVuZ3RoLFxuICAgICAgcmVxdWlyZWQ6IHByb3BzLnJlcXVpcmVkLFxuICAgICAgdmFsdWUsXG4gICAgfSk7XG4gIH07XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMudmFsdWUsXG4gICAgKG5ld1ZhbHVlLCBvbGRWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlICE9PSBvbGRWYWx1ZSB8fCBuZXdWYWx1ZSAhPT0gdmFsdWUudmFsdWUpIHtcbiAgICAgICAgdmFsdWUudmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICk7XG5cbiAgZGVmaW5lRXhwb3NlKHtcbiAgICBlcnJvcixcbiAgICByZXF1aXJlZDogcHJvcHMucmVxdWlyZWQsXG4gICAgdmFsdWUsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIlsndGlkZS1pbnB1dC10ZXh0YXJlYScsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5HQVAuUVVBUlRFUiwgaGFzRXJyb3IgJiYgJ2Vycm9yJ11cIlxuICA+XG4gICAgPGxhYmVsXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkJyxcbiAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgIENTUy5QQURESU5HLkxFRlQuT05FLFxuICAgICAgICBDU1MuUEFERElORy5UT1AuSEFMRixcbiAgICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgQ1NTLkNVUlNPUi5URVhULFxuICAgICAgXVwiXG4gICAgICA6Zm9yPVwiaW5wdXRJZFwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dGFyZWEtbGFiZWwnLFxuICAgICAgICAgIGhhc01pbmlsYWJlbCA/IFsnbWluaWxhYmVsJywgQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXSA6IENTUy5GT05ULlJPTEUuTEFCRUxfMSxcbiAgICAgICAgICAhaGFzRXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgIF1cIlxuICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgPlxuICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDx0ZXh0YXJlYVxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuQkxPQ0ssIENTUy5XSURUSC5GVUxMLCBDU1MuRk9OVC5ST0xFLkJPRFlfMV1cIlxuICAgICAgICA6bWF4bGVuZ3RoPVwibWF4bGVuZ3RoXCJcbiAgICAgICAgOm1pbmxlbmd0aD1cIm1pbmxlbmd0aFwiXG4gICAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICAgIHJlZj1cImlucHV0XCJcbiAgICAgICAgOnJlcXVpcmVkPVwicmVxdWlyZWRcIlxuICAgICAgICA6cm93cz1cInJvd3NcIlxuICAgICAgICBAY2hhbmdlPVwiaGFuZGxlVmFsaWRhdGlvblwiXG4gICAgICAgIEBmb2N1cz1cImhhbmRsZUZvY3VzXCJcbiAgICAgICAgQGZvY3Vzb3V0PVwiaGFuZGxlRm9jdXNPdXRcIlxuICAgICAgICA6aWQ9XCJpbnB1dElkXCJcbiAgICAgICAgdi1tb2RlbD1cInZhbHVlXCJcbiAgICAgIC8+XG4gICAgPC9sYWJlbD5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVJdXCJcbiAgICAgIHYtaWY9XCJzdXBwb3J0aW5nVGV4dCB8fCBoYXNFcnJvclwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDppY29uPVwiSUNPTi5FUlJPUlwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIHYtaWY9XCJoYXNFcnJvclwiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzNdXCI+XG4gICAgICAgIHt7IGhhc0Vycm9yID8gZXJyb3JNZXNzYWdlIDogc3VwcG9ydGluZ1RleHQgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIHRleHRhcmVhIHtcbiAgICByZXNpemU6IHZlcnRpY2FsO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEtbGFiZWwge1xuICAgIGhlaWdodDogMS4xODc1cmVtO1xuICAgIHRyYW5zaXRpb246IGZvbnQtc2l6ZSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1lcnJvci1wcmltYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWE6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMik7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXItaGlnaCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYSB0ZXh0YXJlYSB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMSk7XG4gICAgb3V0bGluZTogdmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSBzb2xpZCB2YXIoLS10aWRlLWJvcmRlcik7XG4gICAgb3V0bGluZS1vZmZzZXQ6IGNhbGModmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSAqIC0xKTtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1vbi1zdXJmYWNlKTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgZ2VuZXJpYyBtZW51IGl0ZW0gaW50ZW5kZWQgdG8gYmUgdXNlZCBpbiBuYXZpZ2F0aW9uIG1lbnVzIG9yIGRyb3Bkb3ducy5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZW1lbnVpdGVtLS1kb2NzKSBmb3IgVGlkZU1lbnVJdGVtXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IEVMRU1FTlQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBUQVJHRVQgfSBmcm9tICdAL3R5cGVzL1RhcmdldCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBFbGVtZW50IH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBUaGUgZWxlbWVudCB0byByZW5kZXIgdGhlIHJvb3QgZWxlbWVudCBhcy4gKi9cbiAgICBlbGVtZW50PzogRWxlbWVudDtcblxuICAgIC8qKiBUaGUgaHJlZiBhdHRyaWJ1dGUgdG8gYXBwbHkgd2hlbiB0aGUgZWxlbWVudCBpcyBhIGxpbmsuICovXG4gICAgaHJlZj86IHN0cmluZztcblxuICAgIC8qKiBXaGV0aGVyIHRvIG9wZW4gbGluayBpbiBhIG5ldyB0YWIuICovXG4gICAgaXNOZXdUYWI/OiBib29sZWFuO1xuXG4gICAgLyoqIEljb24gdG8gc2hvdyBhZnRlciB0aGUgbGFiZWwuICovXG4gICAgaWNvblRyYWlsaW5nPzogSWNvbjtcblxuICAgIC8qKiBUaGUgbGFiZWwgdG8gYmUgZGlzcGxheWVkLiAqL1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gIH07XG5cbiAgd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZWxlbWVudDogRUxFTUVOVC5MSU5LLFxuICAgIGhyZWY6IHVuZGVmaW5lZCxcbiAgICBpY29uVHJhaWxpbmc6IHVuZGVmaW5lZCxcbiAgICBpc05ld1RhYjogZmFsc2UsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudFxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLW1lbnUtaXRlbScsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuWkVSTyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuRUxMSVBTSVMsXG4gICAgICBDU1MuRk9OVC5ST0xFLkxBQkVMXzIsXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBDU1MuUEFERElORy5YLk9ORSxcbiAgICAgIENTUy5QQURESU5HLlkuSEFMRixcbiAgICAgIENTUy5VTkRFUkxJTkUuUkVTVC5PRkYsXG4gICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICBdXCJcbiAgICA6aHJlZj1cImhyZWZcIlxuICAgIDp0YXJnZXQ9XCJpc05ld1RhYiA/IFRBUkdFVC5CTEFOSyA6IHVuZGVmaW5lZFwiXG4gICAgOmlzPVwiZWxlbWVudFwiXG4gID5cbiAgICA8c3Bhbj57eyBsYWJlbCB9fTwvc3Bhbj5cblxuICAgIDxUaWRlSWNvblxuICAgICAgOmNsYXNzPVwiW0NTUy5NQVJHSU4uTEVGVC5BVVRPXVwiXG4gICAgICA6aWNvbj1cImljb25UcmFpbGluZ1wiXG4gICAgICA6c2l6ZT1cIlNJWkUuTEFSR0VcIlxuICAgICAgdi1pZj1cImljb25UcmFpbGluZ1wiXG4gICAgLz5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1tZW51LWl0ZW0ge1xuICAgIGhlaWdodDogNDBweDtcbiAgfVxuXG4gIC50aWRlLW1lbnUtaXRlbTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLXZhcmlhbnQpO1xuICB9XG48L3N0eWxlPlxuIiwiLyogZXNsaW50LWRpc2FibGUgdnVlL3NvcnQta2V5cyAqL1xuXG5leHBvcnQgY29uc3QgQlJFQUtQT0lOVCA9IHtcbiAgU006ICdzbScsXG4gIE1EOiAnbWQnLFxuICBMRzogJ2xnJyxcbiAgWEw6ICd4bCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgTUVESUEgPSB7XG4gIFNNOiA3NjgsXG4gIE1EOiA5OTIsXG4gIExHOiAxMjMyLFxuICBYTDogMTkyMCxcbn07XG5cbmV4cG9ydCB0eXBlIEJyZWFrcG9pbnQgPSAodHlwZW9mIEJSRUFLUE9JTlQpW2tleW9mIHR5cGVvZiBCUkVBS1BPSU5UXTtcbmV4cG9ydCB0eXBlIE1lZGlhID0gKHR5cGVvZiBNRURJQSlba2V5b2YgdHlwZW9mIE1FRElBXTtcbiIsImltcG9ydCB7IG5leHRUaWNrIH0gZnJvbSAndnVlJztcblxuLyoqXG4gKiBEaXJlY3RseSBtb2RpZmllcyB0aGUgYDxib2R5PmAgZWxlbWVudCB0byBhcHBseSBvciByZW1vdmUgc2Nyb2xsIGxvY2suXG4gKiBXaGVuIGBmYWxzZWAgaXMgcHJvdmlkZWQsIGl0IG9ubHkgdW5sb2NrcyBzY3JvbGwgaWYgdGhlcmUgYXJlIG5vIG9wZW5cbiAqIEhUTUwgZGlhbG9nIGVsZW1lbnRzLlxuICovXG5leHBvcnQgY29uc3Qgc2V0U2Nyb2xsTG9jayA9IGFzeW5jIChpc0xvY2tlZDogYm9vbGVhbikgPT4ge1xuICAvLyBDYW5ub3QgYmUgYXBwbGllZCB0byBib2R5IHRhZyBpbiBtYXJrZXRwbGFjZSByZXBvIGR1ZSB0byBkYXRhLWNzcy1zY29wZVxuICAvLyBjb25zdCBCT0RZX0xPQ0tfQ0xBU1MgPSAnYm9keS1zY3JvbGwtbG9jayc7XG5cbiAgY29uc3QgYm9keSA9IGRvY3VtZW50LmJvZHk7XG5cbiAgaWYgKGlzTG9ja2VkKSB7XG4gICAgaWYgKCFib2R5LmRhdGFzZXQuc2Nyb2xsTG9ja1kpIHtcbiAgICAgIGNvbnN0IHNjcm9sbFkgPSB3aW5kb3cuc2Nyb2xsWTtcblxuICAgICAgYm9keS5kYXRhc2V0LnNjcm9sbExvY2tZID0gc2Nyb2xsWS50b1N0cmluZygpO1xuICAgICAgYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zYXZlZC1zY3JvbGwteScsIGAke3Njcm9sbFl9cHhgKTtcbiAgICAgIGJvZHkuc3R5bGUuc2V0UHJvcGVydHkoJ2luc2V0JywgJzAnKTtcbiAgICAgIGJvZHkuc3R5bGUuc2V0UHJvcGVydHkoJ21hcmdpbi10b3AnLCBgY2FsYygwcHggLSB2YXIoLS1zYXZlZC1zY3JvbGwteSwgMHB4KSlgKTtcbiAgICAgIGJvZHkuc3R5bGUuc2V0UHJvcGVydHkoJ292ZXJmbG93LXknLCAnc2Nyb2xsJyk7XG4gICAgICBib2R5LnN0eWxlLnNldFByb3BlcnR5KCdwb3NpdGlvbicsICdmaXhlZCcpO1xuXG4gICAgICAvLyBDYW5ub3QgYmUgYXBwbGllZCB0byBib2R5IHRhZyBpbiBtYXJrZXRwbGFjZSByZXBvIGR1ZSB0byBkYXRhLWNzcy1zY29wZVxuICAgICAgLy8gYm9keS5jbGFzc0xpc3QuYWRkKEJPRFlfTE9DS19DTEFTUyk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGF3YWl0IG5leHRUaWNrKCk7XG4gICAgaWYgKCFkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdkaWFsb2dbb3Blbl0nKSkge1xuICAgICAgY29uc3Qgc2F2ZWRTY3JvbGxZID0gcGFyc2VJbnQoYm9keS5kYXRhc2V0LnNjcm9sbExvY2tZIHx8ICcwJyk7XG5cbiAgICAgIC8vIENhbm5vdCBiZSBhcHBsaWVkIHRvIGJvZHkgdGFnIGluIG1hcmtldHBsYWNlIHJlcG8gZHVlIHRvIGRhdGEtY3NzLXNjb3BlXG4gICAgICAvLyBib2R5LmNsYXNzTGlzdC5yZW1vdmUoQk9EWV9MT0NLX0NMQVNTKTtcblxuICAgICAgYm9keS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnaW5zZXQnKTtcbiAgICAgIGJvZHkuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ21hcmdpblRvcCcpO1xuICAgICAgYm9keS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnb3ZlcmZsb3dZJyk7XG4gICAgICBib2R5LnN0eWxlLnJlbW92ZVByb3BlcnR5KCdwb3NpdGlvbicpO1xuICAgICAgYm9keS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnLS1zYXZlZC1zY3JvbGwteScpO1xuXG4gICAgICB3aW5kb3cuc2Nyb2xsVG8oe1xuICAgICAgICBiZWhhdmlvcjogJ2F1dG8nLFxuICAgICAgICB0b3A6IHNhdmVkU2Nyb2xsWSxcbiAgICAgIH0pO1xuXG4gICAgICBkZWxldGUgYm9keS5kYXRhc2V0LnNjcm9sbExvY2tZO1xuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IFRPUF9MQVlFUl9JRCA9ICd0aWRlLXRvcC1sYXllcic7XG5cbmV4cG9ydCBjb25zdCBpbml0RmF1eFRvcExheWVyID0gKCkgPT4ge1xuICBsZXQgdG9wTGF5ZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChUT1BfTEFZRVJfSUQpO1xuICBpZiAoIXRvcExheWVyKSB7XG4gICAgdG9wTGF5ZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICB0b3BMYXllci5pZCA9IFRPUF9MQVlFUl9JRDtcbiAgICB0b3BMYXllci5zZXRBdHRyaWJ1dGUoJ2RhdGEtY3NzLXNjb3BlJywgJycpO1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodG9wTGF5ZXIpO1xuICB9XG4gIHRvcExheWVyLnN0eWxlLmlzb2xhdGlvbiA9ICdpc29sYXRlJztcbn07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBuZXh0VGljaywgb25CZWZvcmVNb3VudCwgb25Nb3VudGVkLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUJ1dHRvbkljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSc7XG4gIGltcG9ydCB7IEJSRUFLUE9JTlQgfSBmcm9tICdAL3R5cGVzL0JyZWFrcG9pbnQnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBUT1BfTEFZRVJfSUQsIGluaXRGYXV4VG9wTGF5ZXIsIHNldFNjcm9sbExvY2sgfSBmcm9tICdAL3V0aWxpdGllcy92aWV3cG9ydCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqXG4gICAgICogQ2FsbGVkIGJlZm9yZSB0aGUgbW9kYWwgY2xvc2VzLlxuICAgICAqXG4gICAgICogUmV0dXJuIGBmYWxzZWAgdG8gY2FuY2VsIHRoZSBjbG9zZSBldmVudC5cbiAgICAgKi9cbiAgICBiZWZvcmVDbG9zZT86ICgpID0+IHZvaWQgfCBib29sZWFuIHwgUHJvbWlzZTx2b2lkIHwgYm9vbGVhbj47XG4gICAgaXNCYWNrQnV0dG9uPzogYm9vbGVhbjtcbiAgICBpc0Rpc21pc3NpYmxlPzogYm9vbGVhbjtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICB3aWR0aD86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGJlZm9yZUNsb3NlOiB1bmRlZmluZWQsXG4gICAgaXNCYWNrQnV0dG9uOiBmYWxzZSxcbiAgICBpc0Rpc21pc3NpYmxlOiB0cnVlLFxuICAgIHRpdGxlOiB1bmRlZmluZWQsXG4gICAgd2lkdGg6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgdHlwZSBFbWl0cyA9IHtcbiAgICAoZTogJ2JhY2snKTogdm9pZDtcbiAgfTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8RW1pdHM+KCk7XG5cbiAgY29uc3QgbW9kYWxDb250ZW50OiBSZWY8SFRNTERpdkVsZW1lbnQgfCB1bmRlZmluZWQ+ID0gcmVmKCk7XG4gIGNvbnN0IG1vZGFsRGlhbG9nOiBSZWY8SFRNTERpYWxvZ0VsZW1lbnQgfCB1bmRlZmluZWQ+ID0gcmVmKCk7XG5cbiAgY29uc3QgaXNPcGVuID0gZGVmaW5lTW9kZWw8Ym9vbGVhbj4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICBjb25zdCB0cmlnZ2VyTmF0aXZlRGlhbG9nT3BlbiA9ICgpID0+IHtcbiAgICBtb2RhbERpYWxvZy52YWx1ZT8uc2hvd01vZGFsKCk7XG4gIH07XG5cbiAgY29uc3QgdHJpZ2dlck5hdGl2ZURpYWxvZ0Nsb3NlID0gKCkgPT4ge1xuICAgIG1vZGFsRGlhbG9nLnZhbHVlPy5jbG9zZSgpO1xuICB9O1xuXG4gIGNvbnN0IHNjcm9sbENvbnRlbnRUb1RvcCA9ICgpID0+IHtcbiAgICBuZXh0VGljaygoKSA9PiB7XG4gICAgICBpZiAoIW1vZGFsQ29udGVudC52YWx1ZSkgcmV0dXJuO1xuICAgICAgbW9kYWxDb250ZW50LnZhbHVlLnNjcm9sbFRvcCA9IDA7XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgY2xvc2UgPSBhc3luYyAoKSA9PiB7XG4gICAgaWYgKHByb3BzLmJlZm9yZUNsb3NlKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwcm9wcy5iZWZvcmVDbG9zZSgpO1xuICAgICAgaWYgKHJlc3VsdCA9PT0gZmFsc2UpIHJldHVybjtcbiAgICB9XG5cbiAgICBpc09wZW4udmFsdWUgPSBmYWxzZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVCYWNrZHJvcENsaWNrID0gKCkgPT4ge1xuICAgIGlmIChwcm9wcy5pc0Rpc21pc3NpYmxlKSBjbG9zZSgpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUVzY2FwZUtleWRvd24gPSAoZTogRXZlbnQpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKHByb3BzLmlzRGlzbWlzc2libGUpIGNsb3NlKCk7XG4gIH07XG5cbiAgd2F0Y2goaXNPcGVuLCAoKSA9PiB7XG4gICAgaWYgKCFtb2RhbERpYWxvZy52YWx1ZSkgcmV0dXJuO1xuICAgIGlmIChpc09wZW4udmFsdWUpIHtcbiAgICAgIHRyaWdnZXJOYXRpdmVEaWFsb2dPcGVuKCk7XG4gICAgICBzY3JvbGxDb250ZW50VG9Ub3AoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ0Nsb3NlKCk7XG4gICAgfVxuICAgIHNldFNjcm9sbExvY2soaXNPcGVuLnZhbHVlKTtcbiAgfSk7XG5cbiAgb25CZWZvcmVNb3VudCgoKSA9PiB7XG4gICAgaW5pdEZhdXhUb3BMYXllcigpO1xuICB9KTtcblxuICBvbk1vdW50ZWQoKCkgPT4ge1xuICAgIGlmIChpc09wZW4udmFsdWUpIHtcbiAgICAgIHRyaWdnZXJOYXRpdmVEaWFsb2dPcGVuKCk7XG4gICAgfVxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxUZWxlcG9ydCA6dG89XCJgIyR7VE9QX0xBWUVSX0lEfWBcIj5cbiAgICA8ZGlhbG9nXG4gICAgICA6Y2xhc3M9XCJbJ3RpZGUtbW9kYWwnLCBDU1MuQkcuSU5JVElBTCwgQ1NTLkhFSUdIVC5GVUxMLCBDU1MuV0lEVEguRlVMTCwgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTl1cIlxuICAgICAgcmVmPVwibW9kYWxEaWFsb2dcIlxuICAgICAgOnN0eWxlPVwieyAnLS1tb2RhbC13aWR0aCc6IHdpZHRoIH1cIlxuICAgICAgQGNsaWNrLnNlbGY9XCJoYW5kbGVCYWNrZHJvcENsaWNrXCJcbiAgICAgIEBjbG9zZS5wcmV2ZW50XG4gICAgICBAa2V5ZG93bi5lc2NhcGU9XCJoYW5kbGVFc2NhcGVLZXlkb3duXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1tb2RhbC1ib2R5JyxcbiAgICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICAgIENTUy5CT1JERVIuUkFESVVTLk9ORSxcbiAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgICAgICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLkJPVFRPTSxcbiAgICAgICAgICBDU1MuU0hBRE9XLlRPUCxcbiAgICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgICBDU1MuV0lEVEguTUFYX0ZVTEwsXG4gICAgICAgICAgQ1NTLndpdGhCcmVha3BvaW50KFtDU1MuU0hBRE9XLkJPVFRPTV0sIEJSRUFLUE9JTlQuU00pLFxuICAgICAgICBdXCJcbiAgICAgID5cbiAgICAgICAgPGhlYWRlclxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLW1vZGFsLWhlYWRlcicsXG4gICAgICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICAgICAgQ1NTLkJPUkRFUi5CT1RUT00uT05FLFxuICAgICAgICAgICAgQ1NTLkJPUkRFUi5DT0xPUi5MT1csXG4gICAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICAgICAgQ1NTLklTT0xBVElPTi5JU09MQVRFLFxuICAgICAgICAgICAgQ1NTLlBBRERJTkcuWS5PTkUsXG4gICAgICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgICAgICBDU1MuWl9JTkRFWC5PTkUsXG4gICAgICAgICAgXVwiXG4gICAgICAgID5cbiAgICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX0xFRlRcIlxuICAgICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgICAgICBAY2xpY2s9XCJlbWl0KCdiYWNrJylcIlxuICAgICAgICAgICAgdGl0bGU9XCJCYWNrXCJcbiAgICAgICAgICAgIHYtaWY9XCJpc0JhY2tCdXR0b25cIlxuICAgICAgICAgIC8+XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5IRUFETElORV8yXVwiXG4gICAgICAgICAgICB2LXRleHQ9XCJ0aXRsZVwiXG4gICAgICAgICAgLz5cblxuICAgICAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5GTEVYLkdST1cuT0ZGLCBDU1MuRkxFWC5TSFJJTksuT0ZGLCBDU1MuTUFSR0lOLkxFRlQuQVVUT11cIlxuICAgICAgICAgICAgOmljb249XCJJQ09OLkNMT1NFXCJcbiAgICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICAgICAgQGNsaWNrPVwiY2xvc2VcIlxuICAgICAgICAgICAgdi1pZj1cImlzRGlzbWlzc2libGVcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAndGlkZS1tb2RhbC1jb250ZW50JyxcbiAgICAgICAgICAgIENTUy5ESVNQTEFZLkdSSUQsXG4gICAgICAgICAgICBDU1MuSVNPTEFUSU9OLklTT0xBVEUsXG4gICAgICAgICAgICBDU1MuT1ZFUkZMT1cuWC5ISURERU4sXG4gICAgICAgICAgICBDU1MuT1ZFUkZMT1cuWS5BVVRPLFxuICAgICAgICAgICAgQ1NTLlBBRERJTkcuWS5UV08sXG4gICAgICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgICBdXCJcbiAgICAgICAgICByZWY9XCJtb2RhbENvbnRlbnRcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNsb3QgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGZvb3RlclxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLW1vZGFsLWZvb3RlcicsXG4gICAgICAgICAgICBDU1MuQVhJUzEuRU5ELFxuICAgICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICAgIENTUy5HQVAuVFdPLFxuICAgICAgICAgICAgQ1NTLklTT0xBVElPTi5JU09MQVRFLFxuICAgICAgICAgICAgQ1NTLlBBRERJTkcuWS5PTkUsXG4gICAgICAgICAgICBDU1MuU0hBRE9XLlRPUCxcbiAgICAgICAgICBdXCJcbiAgICAgICAgICB2LWlmPVwiJHNsb3RzLmZvb3RlclwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2xvdCBuYW1lPVwiZm9vdGVyXCIgLz5cbiAgICAgICAgPC9mb290ZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2RpYWxvZz5cbiAgPC9UZWxlcG9ydD5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLW1vZGFsIHtcbiAgICAtLW1vZGFsLXBhZGRpbmcteDogMjBweDtcbiAgICBtYXgtd2lkdGg6IHVuc2V0O1xuICAgIG1heC1oZWlnaHQ6IHVuc2V0O1xuICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGlkZS1hbmltYXRlKSBhbGxvdy1kaXNjcmV0ZTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XG4gIH1cbiAgLnRpZGUtbW9kYWxbb3Blbl0ge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDAlKTtcbiAgfVxuICAudGlkZS1tb2RhbDo6YmFja2Ryb3Age1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS10aWRlLWFuaW1hdGUpIGFsbG93LWRpc2NyZXRlO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigwcHgpO1xuICB9XG4gIC50aWRlLW1vZGFsW29wZW5dOjpiYWNrZHJvcCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS10cmFuc3BhcmVudC00MDApO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogdmFyKC0tdGlkZS1iZy1ibHVyKTtcbiAgfVxuICBAc3RhcnRpbmctc3R5bGUge1xuICAgIC50aWRlLW1vZGFsW29wZW5dIHtcbiAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XG4gICAgfVxuICAgIC50aWRlLW1vZGFsW29wZW5dOjpiYWNrZHJvcCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGJhY2tkcm9wLWZpbHRlcjogdmFyKC0tdGlkZS1iZy1ibHVyKTtcbiAgICB9XG4gIH1cbiAgLnRpZGUtbW9kYWwtYm9keSB7XG4gICAgd2lkdGg6IHZhcigtLW1vZGFsLXdpZHRoLCA1NzZweCk7XG4gICAgbWF4LWhlaWdodDogY2FsYygxMDAlIC0gdmFyKC0tdGlkZS1zcGFjaW5nLTIpKTtcbiAgfVxuXG4gIC50aWRlLW1vZGFsLWhlYWRlcixcbiAgLnRpZGUtbW9kYWwtZm9vdGVyIHtcbiAgICBwYWRkaW5nLWlubGluZTogdmFyKC0tbW9kYWwtcGFkZGluZy14KTtcbiAgfVxuICAudGlkZS1tb2RhbC1jb250ZW50IHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHZhcigtLW1vZGFsLXBhZGRpbmcteCkgdmFyKC0tdGlkZS1zYWZlLWZyKSB2YXIoLS1tb2RhbC1wYWRkaW5nLXgpO1xuICB9XG4gIDp3aGVyZSgudGlkZS1tb2RhbC1jb250ZW50KTpkZWVwKD4gOndoZXJlKCopKSB7XG4gICAgZ3JpZC1jb2x1bW46IDI7XG4gIH1cblxuICBAbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgICAudGlkZS1tb2RhbC1ib2R5IHtcbiAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7XG4gICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcbiAgICB9XG4gIH1cbiAgQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gICAgLnRpZGUtbW9kYWwge1xuICAgICAgLS1tb2RhbC1wYWRkaW5nLXg6IHZhcigtLXRpZGUtc3BhY2luZy0yKTtcbiAgICB9XG4gICAgLnRpZGUtbW9kYWwtYm9keSB7XG4gICAgICBtYXgtaGVpZ2h0OiA4NSU7XG4gICAgICBib3R0b206IGluaXRpYWw7XG4gICAgfVxuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlQnV0dG9uSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUJ1dHRvbkljb24udnVlJztcbiAgaW1wb3J0IFRpZGVCdXR0b25QYWdpbmF0aW9uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQnV0dG9uUGFnaW5hdGlvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgcGFnZVRvdGFsOiBudW1iZXI7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wczxQcm9wcz4oKTtcblxuICBjb25zdCBjdXJyZW50SW5kZXggPSBkZWZpbmVNb2RlbDxudW1iZXI+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3QgcGFnaW5hdGlvbkJ1dHRvbnMgPSBjb21wdXRlZCgoKSA9PiBuZXcgQXJyYXkocHJvcHMucGFnZVRvdGFsKS5maWxsKCcnKS5tYXAoKGVtcHR5LCBpbmRleCkgPT4gaW5kZXggKyAxKSk7XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoaW5kZXg6IG51bWJlcikgPT4ge1xuICAgIGN1cnJlbnRJbmRleC52YWx1ZSA9IGluZGV4O1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVByZXZpb3VzQ2xpY2sgPSAoKSA9PiB7XG4gICAgY3VycmVudEluZGV4LnZhbHVlLS07XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlTmV4dENsaWNrID0gKCkgPT4ge1xuICAgIGN1cnJlbnRJbmRleC52YWx1ZSsrO1xuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPHNlY3Rpb25cbiAgICA6Y2xhc3M9XCJbJ3RpZGUtcGFnaW5hdGlvbicsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMS5DRU5URVIsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUiwgQ1NTLldJRFRILkZVTExdXCJcbiAgPlxuICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgOmRpc2FibGVkPVwiY3VycmVudEluZGV4IDw9IDFcIlxuICAgICAgOmljb249XCJJQ09OLkNIRVZST05fTEVGVFwiXG4gICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgIEBjbGljaz1cImhhbmRsZVByZXZpb3VzQ2xpY2tcIlxuICAgIC8+XG5cbiAgICA8dWwgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUiwgQ1NTLkxJU1RfQlVMTEVUUy5PRkZdXCI+XG4gICAgICA8bGlcbiAgICAgICAgOmtleT1cInBhZ2luYXRpb25CdXR0b25cIlxuICAgICAgICB2LWZvcj1cInBhZ2luYXRpb25CdXR0b24gaW4gcGFnaW5hdGlvbkJ1dHRvbnNcIlxuICAgICAgPlxuICAgICAgICA8VGlkZUJ1dHRvblBhZ2luYXRpb25cbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJjdXJyZW50SW5kZXggPT09IHBhZ2luYXRpb25CdXR0b25cIlxuICAgICAgICAgIDpsYWJlbD1cInBhZ2luYXRpb25CdXR0b25cIlxuICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICAgIEBjbGljaz1cImhhbmRsZUNsaWNrKHBhZ2luYXRpb25CdXR0b24pXCJcbiAgICAgICAgLz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cblxuICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgOmRpc2FibGVkPVwiY3VycmVudEluZGV4ID49IHBhZ2luYXRpb25CdXR0b25zW3BhZ2luYXRpb25CdXR0b25zLmxlbmd0aCAtIDFdXCJcbiAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX1JJR0hUXCJcbiAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgQGNsaWNrPVwiaGFuZGxlTmV4dENsaWNrXCJcbiAgICAvPlxuICA8L3NlY3Rpb24+XG48L3RlbXBsYXRlPlxuIiwiLyoqXG4gKiBDdXN0b20gcG9zaXRpb25pbmcgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvdmlydHVhbC1lbGVtZW50c1xuICovXG5cbmNvbnN0IHNpZGVzID0gWyd0b3AnLCAncmlnaHQnLCAnYm90dG9tJywgJ2xlZnQnXTtcbmNvbnN0IGFsaWdubWVudHMgPSBbJ3N0YXJ0JywgJ2VuZCddO1xuY29uc3QgcGxhY2VtZW50cyA9IC8qI19fUFVSRV9fKi9zaWRlcy5yZWR1Y2UoKGFjYywgc2lkZSkgPT4gYWNjLmNvbmNhdChzaWRlLCBzaWRlICsgXCItXCIgKyBhbGlnbm1lbnRzWzBdLCBzaWRlICsgXCItXCIgKyBhbGlnbm1lbnRzWzFdKSwgW10pO1xuY29uc3QgbWluID0gTWF0aC5taW47XG5jb25zdCBtYXggPSBNYXRoLm1heDtcbmNvbnN0IHJvdW5kID0gTWF0aC5yb3VuZDtcbmNvbnN0IGZsb29yID0gTWF0aC5mbG9vcjtcbmNvbnN0IGNyZWF0ZUNvb3JkcyA9IHYgPT4gKHtcbiAgeDogdixcbiAgeTogdlxufSk7XG5jb25zdCBvcHBvc2l0ZVNpZGVNYXAgPSB7XG4gIGxlZnQ6ICdyaWdodCcsXG4gIHJpZ2h0OiAnbGVmdCcsXG4gIGJvdHRvbTogJ3RvcCcsXG4gIHRvcDogJ2JvdHRvbSdcbn07XG5jb25zdCBvcHBvc2l0ZUFsaWdubWVudE1hcCA9IHtcbiAgc3RhcnQ6ICdlbmQnLFxuICBlbmQ6ICdzdGFydCdcbn07XG5mdW5jdGlvbiBjbGFtcChzdGFydCwgdmFsdWUsIGVuZCkge1xuICByZXR1cm4gbWF4KHN0YXJ0LCBtaW4odmFsdWUsIGVuZCkpO1xufVxuZnVuY3Rpb24gZXZhbHVhdGUodmFsdWUsIHBhcmFtKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicgPyB2YWx1ZShwYXJhbSkgOiB2YWx1ZTtcbn1cbmZ1bmN0aW9uIGdldFNpZGUocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQuc3BsaXQoJy0nKVswXTtcbn1cbmZ1bmN0aW9uIGdldEFsaWdubWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5zcGxpdCgnLScpWzFdO1xufVxuZnVuY3Rpb24gZ2V0T3Bwb3NpdGVBeGlzKGF4aXMpIHtcbiAgcmV0dXJuIGF4aXMgPT09ICd4JyA/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+XG4gIGltcG9ydCB7IGNvbXB1dGVkIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICBtYXhSYXRpbmc/OiBudW1iZXI7XG4gICAgc2hvd1JhdGluZz86IGJvb2xlYW47XG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkZXNjcmlwdGlvbjogdW5kZWZpbmVkLFxuICAgIG1heFJhdGluZzogMTAsXG4gICAgc2hvd1JhdGluZzogZmFsc2UsXG4gICAgdGl0bGU6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgcmF0aW5nVmFsdWUgPSBkZWZpbmVNb2RlbDxudW1iZXI+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3Qgc2VnbWVudHMgPSBjb21wdXRlZCgoKSA9PiBBcnJheS5mcm9tKHsgbGVuZ3RoOiBwcm9wcy5tYXhSYXRpbmcgfSwgKF8sIGluZGV4KSA9PiBpbmRleCArIDEpKTtcblxuICBjb25zdCBoYW5kbGVDbGljayA9IChzZWdtZW50OiBudW1iZXIpID0+IHtcbiAgICByYXRpbmdWYWx1ZS52YWx1ZSA9IHNlZ21lbnQ7XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1yYXRpbmcnLCBDU1MuV0lEVEguRlVMTF1cIj5cbiAgICA8c2VjdGlvbiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkFYSVMxLkJFVFdFRU4sIENTUy5QQURESU5HLkJPVFRPTS5IQUxGXVwiPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8yXVwiPlxuICAgICAgICB7eyBwcm9wcy50aXRsZSB9fVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzMsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICB2LWlmPVwicHJvcHMuc2hvd1JhdGluZ1wiXG4gICAgICA+XG4gICAgICAgIHt7IHJhdGluZ1ZhbHVlIH19L3t7IHByb3BzLm1heFJhdGluZyB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9zZWN0aW9uPlxuICAgIDxzZWN0aW9uXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5CT0RZXzIsIENTUy5QQURESU5HLkJPVFRPTS5PTkUsIENTUy5PVkVSRkxPVy5YWS5ISURERU4sIENTUy5FTExJUFNJU11cIlxuICAgICAgdi1pZj1cInByb3BzLmRlc2NyaXB0aW9uXCJcbiAgICA+XG4gICAgICB7eyBwcm9wcy5kZXNjcmlwdGlvbiB9fVxuICAgIDwvc2VjdGlvbj5cblxuICAgIDxzZWN0aW9uIDpjbGFzcz1cIlsndGlkZS1yYXRpbmctYmFyJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuRkxFWC5HUk9XLk9OLCBDU1MuRkxFWC5TSFJJTksuT05dXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1yYXRpbmctc2VnbWVudCcsXG4gICAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgICAgICBDU1MuRkxFWC5HUk9XLk9OLFxuICAgICAgICAgIENTUy5GTEVYLlNIUklOSy5PTixcbiAgICAgICAgICBDU1MuRkxFWC5CQVNJUy5aRVJPLFxuICAgICAgICAgIENTUy5CT1JERVIuRlVMTC5aRVJPLFxuICAgICAgICAgIHNlZ21lbnQgPT09IDEgJiYgWyd0aWRlLXJhdGluZy1zZWdtZW50LWZpcnN0J10sXG4gICAgICAgICAgc2VnbWVudCA9PT0gc2VnbWVudHMubGVuZ3RoICYmIFsndGlkZS1yYXRpbmctc2VnbWVudC1sYXN0J10sXG4gICAgICAgICAgc2VnbWVudCA8PSByYXRpbmdWYWx1ZSAmJiBbQ1NTLkJHLlNVUkZBQ0UuR1JBRElFTlRdLFxuICAgICAgICBdXCJcbiAgICAgICAgOmtleT1cInNlZ21lbnRcIlxuICAgICAgICBAY2xpY2s9XCJoYW5kbGVDbGljayhzZWdtZW50KVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICB2LWZvcj1cInNlZ21lbnQgaW4gc2VnbWVudHNcIlxuICAgICAgLz5cbiAgICA8L3NlY3Rpb24+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtcmF0aW5nLWJhciB7XG4gICAgaGVpZ2h0OiAyOHB4O1xuICB9XG5cbiAgLnRpZGUtcmF0aW5nLXNlZ21lbnQge1xuICAgIGNsaXAtcGF0aDogcG9seWdvbigxMiUgMCwgMTAwJSAwLCA4OCUgMTAwJSwgMCAxMDAlKTtcbiAgfVxuXG4gIC50aWRlLXJhdGluZy1zZWdtZW50LWZpcnN0IHtcbiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA5OTk5cHg7XG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogOTk5OXB4O1xuICAgIGNsaXAtcGF0aDogcG9seWdvbigwIDAsIDEwMCUgMCwgODglIDEwMCUsIDAgMTAwJSk7XG4gIH1cblxuICAudGlkZS1yYXRpbmctc2VnbWVudC1sYXN0IHtcbiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogOTk5OXB4O1xuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA5OTk5cHg7XG4gICAgY2xpcC1wYXRoOiBwb2x5Z29uKDEyJSAwLCAxMDAlIDAsIDEwMCUgMTAwJSwgMCAxMDAlKTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCBJbnRlcm5hbEJhc2VMaW5rIGZyb20gJ0AvY29tcG9uZW50cy9JbnRlcm5hbEJhc2VMaW5rLnZ1ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgVEFSR0VUIH0gZnJvbSAnQC90eXBlcy9UYXJnZXQnO1xuXG4gIGltcG9ydCB0eXBlIHsgTGluayB9IGZyb20gJ0AvdHlwZXMvTGluayc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBoZWFkaW5nPzogc3RyaW5nO1xuICAgIGxpbmtzOiBMaW5rW107XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBoZWFkaW5nOiAnJyxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8c2VjdGlvbiBjbGFzcz1cInRpZGUtc2VvLWxpbmtzXCI+XG4gICAgPGgyIDpjbGFzcz1cIltDU1MuTUFSR0lOLkJPVFRPTS5IQUxGXVwiPlxuICAgICAge3sgcHJvcHMuaGVhZGluZyB9fVxuICAgIDwvaDI+XG5cbiAgICA8dWwgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLldSQVAsIENTUy5HQVAuVFdPLCBDU1MuTElTVF9CVUxMRVRTLk9GRl1cIj5cbiAgICAgIDxsaVxuICAgICAgICA6Y2xhc3M9XCJbJ3RpZGUtc2VvLWxpbmsnLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuR0FQLlFVQVJURVIsIENTUy5GT05ULlJPTEUuQk9EWV8yXVwiXG4gICAgICAgIDprZXk9XCJsaW5rLmxhYmVsXCJcbiAgICAgICAgdi1mb3I9XCJsaW5rIGluIHByb3BzLmxpbmtzXCJcbiAgICAgID5cbiAgICAgICAgPEludGVybmFsQmFzZUxpbmtcbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLlVOREVSTElORS5SRVNULk9GRl1cIlxuICAgICAgICAgIDpocmVmPVwibGluay51cmxcIlxuICAgICAgICAgIDp0YXJnZXQ9XCJsaW5rLmlzTmV3VGFiID8gVEFSR0VULkJMQU5LIDogVEFSR0VULlNFTEZcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgbGluay5sYWJlbCB9fVxuICAgICAgICA8L0ludGVybmFsQmFzZUxpbms+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gIDwvc2VjdGlvbj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC8qIFRPRE86IFJlZmFjdG9yIHRvIGFjY2VwdCBicmVha3BvaW50IHByb3AgaW4gb3JkZXIgdG8gYWNjb21wbGlzaCB0aGlzIHdpdGggbmVpdGhlciBjdXN0b20gYnJlYWtwb2ludHMgbm9yIGRlcGVuZGVuY3kgb24gVmlld3BvcnRTdG9yZS4gKi9cbiAgLnRpZGUtc2VvLWxpbmsge1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5cbiAgQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gICAgLnRpZGUtc2VvLWxpbmsge1xuICAgICAgd2lkdGg6IGNhbGMoKDEwMCUgLSAycmVtKSAvIDIpO1xuICAgIH1cbiAgfVxuXG4gIEBtZWRpYSAobWluLXdpZHRoOiAxMjMycHgpIHtcbiAgICAudGlkZS1zZW8tbGluayB7XG4gICAgICB3aWR0aDogY2FsYygoMTAwJSAtIDZyZW0pIC8gNCk7XG4gICAgfVxuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgb25CZWZvcmVNb3VudCwgb25Nb3VudGVkLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUJ1dHRvbkljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSc7XG4gIGltcG9ydCBUaWRlRGl2aWRlciBmcm9tICdAL2NvbXBvbmVudHMvVGlkZURpdmlkZXIudnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFBSSU9SSVRZIH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgVE9QX0xBWUVSX0lELCBpbml0RmF1eFRvcExheWVyLCBzZXRTY3JvbGxMb2NrIH0gZnJvbSAnQC91dGlsaXRpZXMvdmlld3BvcnQnO1xuXG4gIGltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSAndnVlJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGlzQmFja0J1dHRvbj86IGJvb2xlYW47XG4gIH07XG5cbiAgd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgaXNCYWNrQnV0dG9uOiBmYWxzZSxcbiAgfSk7XG5cbiAgdHlwZSBFbWl0cyA9IHtcbiAgICAoZTogJ2JhY2snKTogdm9pZDtcbiAgfTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8RW1pdHM+KCk7XG5cbiAgY29uc3QgZGlhbG9nRWxlbWVudDogUmVmPEhUTUxEaWFsb2dFbGVtZW50IHwgbnVsbD4gPSByZWYobnVsbCk7XG5cbiAgY29uc3QgaXNPcGVuID0gZGVmaW5lTW9kZWw8Ym9vbGVhbj4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICBjb25zdCB0cmlnZ2VyTmF0aXZlRGlhbG9nT3BlbiA9ICgpID0+IHtcbiAgICBkaWFsb2dFbGVtZW50LnZhbHVlPy5zaG93TW9kYWwoKTtcbiAgfTtcblxuICBjb25zdCB0cmlnZ2VyTmF0aXZlRGlhbG9nQ2xvc2UgPSAoKSA9PiB7XG4gICAgZGlhbG9nRWxlbWVudC52YWx1ZT8uY2xvc2UoKTtcbiAgfTtcblxuICBjb25zdCBjbG9zZSA9ICgpID0+IHtcbiAgICBpc09wZW4udmFsdWUgPSBmYWxzZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVCYWNrZHJvcENsaWNrID0gKCkgPT4ge1xuICAgIGNsb3NlKCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRXNjYXBlS2V5ZG93biA9IChlOiBFdmVudCkgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBjbG9zZSgpO1xuICB9O1xuXG4gIHdhdGNoKGlzT3BlbiwgKCkgPT4ge1xuICAgIGlmICghZGlhbG9nRWxlbWVudC52YWx1ZSkgcmV0dXJuO1xuICAgIGlmIChpc09wZW4udmFsdWUpIHtcbiAgICAgIHRyaWdnZXJOYXRpdmVEaWFsb2dPcGVuKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRyaWdnZXJOYXRpdmVEaWFsb2dDbG9zZSgpO1xuICAgIH1cbiAgICBzZXRTY3JvbGxMb2NrKGlzT3Blbi52YWx1ZSk7XG4gIH0pO1xuXG4gIG9uQmVmb3JlTW91bnQoKCkgPT4ge1xuICAgIGluaXRGYXV4VG9wTGF5ZXIoKTtcbiAgfSk7XG5cbiAgb25Nb3VudGVkKCgpID0+IHtcbiAgICBpZiAoaXNPcGVuLnZhbHVlKSB7XG4gICAgICB0cmlnZ2VyTmF0aXZlRGlhbG9nT3BlbigpO1xuICAgIH1cbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8VGVsZXBvcnQgOnRvPVwiYCMke1RPUF9MQVlFUl9JRH1gXCI+XG4gICAgPGRpYWxvZ1xuICAgICAgOmNsYXNzPVwiWyd0aWRlLXNoZWV0JywgQ1NTLkJHLklOSVRJQUwsIENTUy5IRUlHSFQuRlVMTCwgQ1NTLldJRFRILkZVTEwsIENTUy5PVkVSRkxPVy5YWS5ISURERU5dXCJcbiAgICAgIHJlZj1cImRpYWxvZ0VsZW1lbnRcIlxuICAgICAgQGNsaWNrLnNlbGY9XCJoYW5kbGVCYWNrZHJvcENsaWNrXCJcbiAgICAgIEBjbG9zZS5wcmV2ZW50XG4gICAgICBAa2V5ZG93bi5lc2NhcGU9XCJoYW5kbGVFc2NhcGVLZXlkb3duXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1zaGVldC1ib2R5JyxcbiAgICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgICAgICBDU1MuSEVJR0hULkZVTEwsXG4gICAgICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgXVwiXG4gICAgICA+XG4gICAgICAgIDxoZWFkZXJcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgICAgQ1NTLklTT0xBVElPTi5JU09MQVRFLFxuICAgICAgICAgICAgQ1NTLlBBRERJTkcuVE9QLk9ORSxcbiAgICAgICAgICAgIENTUy5QQURESU5HLlguT05FLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICAgICAgQ1NTLlpfSU5ERVguT05FLFxuICAgICAgICAgIF1cIlxuICAgICAgICA+XG4gICAgICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZMRVguR1JPVy5PRkYsIENTUy5GTEVYLlNIUklOSy5PRkZdXCJcbiAgICAgICAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX0xFRlRcIlxuICAgICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgICAgICBAY2xpY2s9XCJlbWl0KCdiYWNrJylcIlxuICAgICAgICAgICAgdi1pZj1cImlzQmFja0J1dHRvblwiXG4gICAgICAgICAgLz5cblxuICAgICAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5GTEVYLkdST1cuT0ZGLCBDU1MuRkxFWC5TSFJJTksuT0ZGLCBDU1MuTUFSR0lOLkxFRlQuQVVUT11cIlxuICAgICAgICAgICAgOmljb249XCJJQ09OLkNMT1NFXCJcbiAgICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICAgICAgQGNsaWNrPVwiY2xvc2VcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgIDxUaWRlRGl2aWRlciAvPlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAndGlkZS1zaGVldC1jb250ZW50JyxcbiAgICAgICAgICAgIENTUy5ESVNQTEFZLkdSSUQsXG4gICAgICAgICAgICBDU1MuSEVJR0hULkZVTEwsXG4gICAgICAgICAgICBDU1MuSVNPTEFUSU9OLklTT0xBVEUsXG4gICAgICAgICAgICBDU1MuT1ZFUkZMT1cuWC5ISURERU4sXG4gICAgICAgICAgICBDU1MuT1ZFUkZMT1cuWS5BVVRPLFxuICAgICAgICAgICAgQ1NTLlBBRERJTkcuQk9UVE9NLk9ORSxcbiAgICAgICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICAgIF1cIlxuICAgICAgICA+XG4gICAgICAgICAgPHNsb3QgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2RpYWxvZz5cbiAgPC9UZWxlcG9ydD5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLXNoZWV0IHtcbiAgICAtLXNoZWV0LXBhZGRpbmcteDogdmFyKC0tdGlkZS1zcGFjaW5nLTEpO1xuICAgIG1heC13aWR0aDogdW5zZXQ7XG4gICAgbWF4LWhlaWdodDogdW5zZXQ7XG4gICAganVzdGlmeS1pdGVtczogcmlnaHQ7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGlkZS1hbmltYXRlKSBhbGxvdy1kaXNjcmV0ZTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gIH1cblxuICAudGlkZS1zaGVldFtvcGVuXSB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpO1xuICB9XG5cbiAgLnRpZGUtc2hlZXQ6OmJhY2tkcm9wIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGlkZS1hbmltYXRlKSBhbGxvdy1kaXNjcmV0ZTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMHB4KTtcbiAgfVxuXG4gIC50aWRlLXNoZWV0W29wZW5dOjpiYWNrZHJvcCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS10cmFuc3BhcmVudC00MDApO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogdmFyKC0tdGlkZS1iZy1ibHVyKTtcbiAgfVxuXG4gIC50aWRlLXNoZWV0LWJvZHkge1xuICAgIG1heC13aWR0aDogbWluKGNhbGMoMTAwdncgLSB2YXIoLS10aWRlLXNwYWNpbmctMikpLCAzMTFweCk7XG4gIH1cblxuICAudGlkZS1zaGVldC1jb250ZW50IHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHZhcigtLXNoZWV0LXBhZGRpbmcteCkgdmFyKC0tdGlkZS1zYWZlLWZyKSB2YXIoLS1zaGVldC1wYWRkaW5nLXgpO1xuICB9XG5cbiAgOndoZXJlKC50aWRlLXNoZWV0LWNvbnRlbnQpOmRlZXAoPiA6d2hlcmUoKikpIHtcbiAgICBncmlkLWNvbHVtbjogMjtcbiAgfVxuXG4gIEBzdGFydGluZy1zdHlsZSB7XG4gICAgLnRpZGUtc2hlZXRbb3Blbl0ge1xuICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbiAgICB9XG5cbiAgICAudGlkZS1zaGVldFtvcGVuXTo6YmFja2Ryb3Age1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBiYWNrZHJvcC1maWx0ZXI6IHZhcigtLXRpZGUtYmctYmx1cik7XG4gICAgfVxuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgfSk7XG5cbiAgY29uc3QgaXNBY3RpdmUgPSBkZWZpbmVNb2RlbDxib29sZWFuPih7IHJlcXVpcmVkOiB0cnVlIH0pO1xuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKCkgPT4ge1xuICAgIGlmICghcHJvcHMuZGlzYWJsZWQpIHtcbiAgICAgIGlzQWN0aXZlLnZhbHVlID0gIWlzQWN0aXZlLnZhbHVlO1xuICAgIH1cbiAgfTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxidXR0b25cbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1zd2l0Y2gnLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICBDU1MuRkxFWC5TSFJJTksuT0ZGLFxuICAgICAgQ1NTLkZMRVguR1JPVy5PRkYsXG4gICAgICBpc0FjdGl2ZSA/IFsnYWN0aXZlJywgQ1NTLkJHLlNFQ09OREFSWV0gOiBbQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCwgQ1NTLkJPUkRFUi5DT0xPUi5ERUZBVUxUXSxcbiAgICAgIGRpc2FibGVkICYmIFtDU1MuT1BBQ0lUWS5ESVNBQkxFRF0sXG4gICAgXVwiXG4gICAgOmRpc2FibGVkPVwicHJvcHMuZGlzYWJsZWRcIlxuICAgIEBjbGljaz1cImhhbmRsZUNsaWNrXCJcbiAgICBhcmlhLWxhYmVsPVwiU3dpdGNoXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtc3dpdGNoLWluZGljYXRvcicsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMxLkNFTlRFUixcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgICAgaXNBY3RpdmUgPyBbJ2FjdGl2ZScsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdIDogW0NTUy5CRy5TRUNPTkRBUlldLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDppY29uPVwiSUNPTi5DSEVDS1wiXG4gICAgICAgIDpzaXplPVwiU0laRS5MQVJHRVwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuICA8L2J1dHRvbj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLXN3aXRjaCB7XG4gICAgLS1zd2l0Y2gtaW5kaWNhdG9yLXNpemU6IDI0cHg7XG4gICAgLS1zd2l0Y2gtaW5kaWNhdG9yLW1hcmdpbjogdmFyKC0tdGlkZS1zcGFjaW5nLTFcXC80KTtcbiAgICAtLXN3aXRjaC1ib3JkZXItd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTEpO1xuICAgIC0tc3dpdGNoLXdpZHRoOiBjYWxjKHZhcigtLXN3aXRjaC1pbmRpY2F0b3Itc2l6ZSkgKiAyICsgdmFyKC0tc3dpdGNoLWluZGljYXRvci1tYXJnaW4pICogNCk7XG4gICAgLS1zd2l0Y2gtaGVpZ2h0OiBjYWxjKHZhcigtLXN3aXRjaC1pbmRpY2F0b3Itc2l6ZSkgKyB2YXIoLS1zd2l0Y2gtaW5kaWNhdG9yLW1hcmdpbikgKiAyKTtcblxuICAgIHdpZHRoOiB2YXIoLS1zd2l0Y2gtd2lkdGgpO1xuICAgIGhlaWdodDogdmFyKC0tc3dpdGNoLWhlaWdodCk7XG4gICAgdHJhbnNpdGlvbjogdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBiYWNrZ3JvdW5kLWNvbG9yLCBib3JkZXItY29sb3I7XG4gIH1cblxuICAudGlkZS1zd2l0Y2guYWN0aXZlIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtc2Vjb25kYXJ5KTtcbiAgfVxuXG4gIC50aWRlLXN3aXRjaC1pbmRpY2F0b3Ige1xuICAgIGxlZnQ6IHZhcigtLXN3aXRjaC1pbmRpY2F0b3ItbWFyZ2luKTtcbiAgICB0cmFuc2l0aW9uOiB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGxlZnQsIGJvcmRlci1jb2xvciwgYmFja2dyb3VuZC1jb2xvcjtcbiAgfVxuXG4gIC50aWRlLXN3aXRjaC1pbmRpY2F0b3IuYWN0aXZlIHtcbiAgICBsZWZ0OiBjYWxjKFxuICAgICAgdmFyKC0tc3dpdGNoLXdpZHRoKSAtIHZhcigtLXN3aXRjaC1pbmRpY2F0b3Itc2l6ZSkgLSB2YXIoLS1zd2l0Y2gtaW5kaWNhdG9yLW1hcmdpbikgLSB2YXIoLS1zd2l0Y2gtYm9yZGVyLXdpZHRoKVxuICAgICk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxuICBpbXBvcnQgVGlkZUNhcm91c2VsIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQ2Fyb3VzZWwudnVlJztcbiAgaW1wb3J0IFRpZGVMaW5rIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlTGluay52dWUnO1xuICBpbXBvcnQgeyBFTEVNRU5UIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgVGFiIH0gZnJvbSAnQC90eXBlcy9UYWInO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgdGFiczogVGFiW107XG4gIH07XG5cbiAgZGVmaW5lUHJvcHM8UHJvcHM+KCk7XG5cbiAgY29uc3QgY3VycmVudFRhYiA9IGRlZmluZU1vZGVsPG51bWJlcj4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICBjb25zdCBoYW5kbGVDbGljayA9IChpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgY3VycmVudFRhYi52YWx1ZSA9IGluZGV4O1xuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtdGFicycsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5CT1JERVIuQk9UVE9NLlRXTywgQ1NTLkJPUkRFUi5DT0xPUi5MT1ddXCI+XG4gICAgPFRpZGVDYXJvdXNlbCA6aXMtZmxvYXRpbmc9XCJ0cnVlXCI+XG4gICAgICA8bGlcbiAgICAgICAgOmtleT1cInRhYi5sYWJlbFwiXG4gICAgICAgIHYtZm9yPVwiKHRhYiwgaW5kZXgpIGluIHRhYnNcIlxuICAgICAgPlxuICAgICAgICA8VGlkZUxpbmtcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICBpbmRleCA9PT0gY3VycmVudFRhYiA/IENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuQlJBTkQgOiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICBDU1MuUEFERElORy5CT1RUT00uT05FLFxuICAgICAgICAgICAgQ1NTLkZPTlQuUk9MRS5MQUJFTF8xLFxuICAgICAgICAgICAgQ1NTLldISVRFU1BBQ0VfV1JBUC5PRkYsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgOmVsZW1lbnQ9XCJFTEVNRU5ULkJVVFRPTlwiXG4gICAgICAgICAgOmxhYmVsPVwidGFiLmxhYmVsXCJcbiAgICAgICAgICA6c3VidGxlPVwidHJ1ZVwiXG4gICAgICAgICAgQGNsaWNrPVwiaGFuZGxlQ2xpY2soaW5kZXgpXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGRpdiA6Y2xhc3M9XCJbJ3JvdW5kZWQtYm9yZGVyJywgaW5kZXggPT09IGN1cnJlbnRUYWIgJiYgJ2FjdGl2ZSddXCIgLz5cbiAgICAgIDwvbGk+XG4gICAgPC9UaWRlQ2Fyb3VzZWw+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnJvdW5kZWQtYm9yZGVyIHtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10aWRlLXJhZGl1cy1mdWxsKSB2YXIoLS10aWRlLXJhZGl1cy1mdWxsKSAwIDA7XG4gICAgYm9yZGVyLXRvcC13aWR0aDogNHB4O1xuICAgIGJvcmRlci10b3Atc3R5bGU6IHNvbGlkO1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIH1cblxuICAuYWN0aXZlIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtb24tc3VyZmFjZS1icmFuZCk7XG4gIH1cbjwvc3R5bGU+XG4iXSwibmFtZXMiOlsiT1JJRU5UQVRJT04iLCJDU1MiLCJ1dGlsaXRpZXMiLCJicmVha3BvaW50IiwidXRpbGl0eSIsInByb3BzIiwiX19wcm9wcyIsIl9vcGVuQmxvY2siLCJfY3JlYXRlRWxlbWVudEJsb2NrIiwiX2hvaXN0ZWRfMSIsIl9jcmVhdGVFbGVtZW50Vk5vZGUiLCJfbm9ybWFsaXplQ2xhc3MiLCJfdW5yZWYiLCJSRUFMTSIsIlNJWkUiLCJTSVpFX0JVVFRPTiIsImZvcm1hdE51bWJlciIsImlucHV0Iiwib3V0cHV0IiwiZGlnaXRzIiwiZm9ybWF0UGFzY2FsQ2FzZSIsIndvcmQiLCJmb3JtYXRQaG9uZSIsImZvcm1hdFByaWNlIiwiaW5uZXJTVkciLCJyZWYiLCJ3YXRjaCIsImlkIiwibmFtZSIsInByZWZpeCIsInJlYWxtRm9sZGVyIiwibW9kIiwiX192YXJpYWJsZUR5bmFtaWNJbXBvcnRSdW50aW1lSGVscGVyIiwibWFya1JhdyIsIl9jcmVhdGVCbG9jayIsIl9yZXNvbHZlRHluYW1pY0NvbXBvbmVudCIsIklDT04iLCJJQ09OX1JFQUxNIiwiaXNFeHBhbmRlZCIsIl91c2VNb2RlbCIsImhhbmRsZVRvZ2dsZUNsaWNrIiwiVGlkZURpdmlkZXIiLCJfdG9EaXNwbGF5U3RyaW5nIiwiX2NyZWF0ZVZOb2RlIiwiVGlkZUljb24iLCJfcmVuZGVyU2xvdCIsIl9jdHgiLCJFTEVNRU5UIiwiRUxFTUVOVF9CUk9BRCIsInRpZGVDb25maWdEZWZhdWx0cyIsIkNPTkZJR19LRVkiLCJwcm92aWRlVGlkZUNvbmZpZyIsImNvbmZpZyIsImNvbmZpZ1dpdGhEZWZhdWx0cyIsInByb3ZpZGUiLCJ1c2VUaWRlQ29uZmlnIiwiaW5qZWN0IiwibGlua0NvbXBvbmVudCIsIlBSSU9SSVRZIiwiVEFSR0VUIiwidHlwZUF0dHJpYnV0ZSIsImNvbXB1dGVkIiwicm9vdEVsZW1lbnQiLCJJbnRlcm5hbEJhc2VMaW5rIiwiQUxFUlQiLCJlbWl0IiwiX19lbWl0Iiwic2xvdHMiLCJ1c2VTbG90cyIsImhhc0JvZHkiLCJub2RlcyIsIl9hIiwibm9kZSIsIkNvbW1lbnQiLCJpY29uVHlwZSIsIlRpZGVMaW5rIiwiVGlkZUJ1dHRvbkljb24iLCJCQURHRV9DT0xPUiIsIkJBREdFX0NPTE9SX0RFVEFJTFMiLCJCQURHRV9UUlVTVEVEIiwiX0ZyYWdtZW50IiwiY3J1bWIiLCJpbmRleCIsIl9jcmVhdGVUZXh0Vk5vZGUiLCJfaG9pc3RlZF8yIiwiY3VycmVudEluZGV4IiwiaGFuZGxlQ2xpY2siLCJfcmVuZGVyTGlzdCIsInRhYiIsIiRldmVudCIsIlRZUEVfQ0FSRCIsImNhcmRHYXAiLCJkb3RHYXAiLCJkb3RXaWR0aCIsImNvbnRhaW5lclJlZiIsImNvbnRlbnRXaWR0aCIsImN1cnJlbnRQYWdlSW5kZXgiLCJkb3RzUmVmIiwiZnJhbWVXaWR0aCIsImlzRmlyc3RTbGlkZSIsImlzTGFzdFNsaWRlIiwic2hvd0J1dHRvbnMiLCJzbGlkZU9ic2VydmVyIiwic2xpZGVzIiwic2xpZGVzSW5WaWV3Iiwic2xvdE9ic2VydmVyIiwiY3VycmVudFBhZ2UiLCJkb3RDb250YWluZXJXaWR0aCIsImRvdENvdW50VmlzaWJsZSIsInRvdGFsUGFnZXMiLCJsYXN0UGFnZUluZGV4IiwiZ2FwV2lkdGgiLCJjb250ZW50Tm9HYXAiLCJxdW90aWVudCIsImdldERvdENsYXNzIiwiZG90SW5kZXgiLCJjbGFzc05hbWUiLCJtZWFzdXJlRG9tIiwib2JzZXJ2ZVNsaWRlcyIsIm9wdGlvbnMiLCJlbnRyaWVzIiwic2xpZGVzQWRkZWRUb1ZpZXciLCJlbnRyeSIsInNsaWRlSW5kZXgiLCJzbGlkZSIsImEiLCJiIiwiY2hpbGQiLCJvYnNlcnZlU2xvdCIsIm9ic2VydmVyQ2FsbGJhY2siLCJzY3JvbGxUb09mZnNldCIsInRhcmdldCIsImxhc3RPZmZzZXQiLCJpc1Njcm9sbGluZ0xlZnQiLCJ1cGRhdGVEb3RzIiwic2hvd05leHRQYWdlIiwibmV4dFNsaWRlIiwic2hvd1ByZXZpb3VzUGFnZSIsInByZXZpb3VzU2xpZGUiLCJzaG93TmV4dFNsaWRlIiwic2hvd1ByZXZpb3VzU2xpZGUiLCJjZW50ZXJEb3QiLCJvbk1vdW50ZWQiLCJvblVubW91bnRlZCIsIl9iIiwiX2NhY2hlIiwiX25vcm1hbGl6ZVN0eWxlIiwiaXNBY3RpdmUiLCJfaG9pc3RlZF8zIiwiX2hvaXN0ZWRfNCIsIl9ob2lzdGVkXzUiLCJGT1JNX0tFWSIsInVzZVRpZGVGb3JtIiwiZm9yY2VTaG93RXJyb3JzIiwidXNlRm9ybUNvbnRleHQiLCJyZXZlYWxWYWxpZGF0aW9uRXJyb3JzIiwiaGFuZGxlU3VibWl0IiwiZSIsIk9CSkVDVF9GSVQiLCJpbWFnZURlZmF1bHQiLCJwaWN0dXJlIiwiaW1nIiwib2JqZWN0Rml0Q2xhc3NOYW1lIiwic2V0SW1hZ2VGcm9tRGVmYXVsdCIsImN1cnJlbnRTcmMiLCJwaWN0dXJlU291cmNlIiwic291cmNlIiwiVGlkZUltYWdlIiwiZXJyb3JNZXNzYWdlRGVmYXVsdCIsIlZBTElEQVRJT05fUkVTVUxUIiwiY2hlY2tGb3JtYXQiLCJmb3JtYXQiLCJtZXNzYWdlIiwidmFsdWUiLCJyZXN1bHQiLCJnZXRGaWVsZExlbmd0aElzVmFsaWQiLCJtYXhsZW5ndGgiLCJtaW5sZW5ndGgiLCJyZXF1aXJlZCIsImlzRW1wdHlBbmRVbnJlcXVpcmVkIiwiaXNUb29Mb25nIiwiZ2V0RmllbGRWYWxpZGF0aW9uUmVzdWx0IiwiZXJyb3JGcm9tUHJvcHMiLCJ2YWxpZGF0b3JzIiwidmFsaWRhdGlvbiIsInZhbGlkYXRlUHJvcGVydHkiLCJsZW5ndGhWYWxpZGF0aW9uIiwidmFsaWRhdGVMZW5ndGgiLCJyZXNwb25zZSIsInZhbGlkYXRvciIsIm1vZGVsVmFsdWUiLCJmb3JtQ29udGV4dCIsImlzVmFsaWRhdGluZyIsImVycm9yUmVmIiwiZm9ybWF0dGVkTGFiZWwiLCJpc0NoZWNrZWQiLCJzaG93RXJyb3IiLCJoYXNFcnJvckZyb21Qcm9wIiwic3VwcG9ydGluZ1RleHRNZXNzYWdlIiwiZ2V0Q2hlY2tib3hWYWxpZGF0aW9uUmVzdWx0Iiwid2F0Y2hFZmZlY3QiLCJuZXdWYWx1ZSIsIlRpZGVJbnB1dFN1cHBvcnRpbmdUZXh0IiwiX19kZWZhdWx0X18iLCJjaGVja2VkIiwib2xkVmFsdWUiLCJGT1JNQVQiLCJGT1JNQVRfUkVHRVgiLCJWQUxJREFUT1IiLCJFUlJPUl9ESVNQTEFZIiwiaGFzRm9jdXMiLCJpbnB1dElkIiwidXNlSWQiLCJzZWxlY3RFbGVtZW50IiwiaGFzTWluaWxhYmVsIiwiaXNFbXB0eSIsImV4cGFuZE9wdGlvbnMiLCJldmVudCIsImhhbmRsZUZvY3VzIiwiaGFuZGxlRm9jdXNPdXQiLCJvcHRncm91cCIsIm9wdGlvbiIsIl9ob2lzdGVkXzYiLCJnZXRFcnJvck1lc3NhZ2UiLCJlcnJvckZyb21SZWYiLCJnZXRGaWVsZEhhc0Vycm9yIiwiaGFuZGxlRmllbGRWYWxpZGF0aW9uIiwiZXJyb3IiLCJlcnJvck1lc3NhZ2UiLCJoYXNFcnJvciIsIl9fZXhwb3NlIiwiVEVYVF9JTlBVVF9UWVBFIiwiSU5QVVRfTU9ERSIsImdldFRleHRJbnB1dE1vZGUiLCJ0eXBlIiwiaW5wdXRtb2RlIiwiaW5wdXRFbGVtZW50Iiwic2hvd1Bhc3N3b3JkIiwiaW5wdXRNb2RlQXR0cmlidXRlIiwiaW5wdXRUeXBlIiwic2hvdWxkU2hvd0NsZWFyQnV0dG9uIiwic2hvdWxkU2hvd1Bhc3N3b3JkQnV0dG9uIiwiaGFuZGxlQ2xlYXIiLCJoYW5kbGVGaWVsZENsaWNrIiwicHJldmVudElucHV0Rm9jdXNMb3NzT25Nb3VzZWRvd24iLCJoYXNDbGVhciIsImhhbmRsZVZhbGlkYXRpb24iLCJoYW5kbGVJbnB1dCIsInVwZGF0ZVZhbHVlIiwidGV4dGFyZWFFbGVtZW50IiwicHJldmVudFRleHRhcmVhRm9jdXNMb3NzT25Nb3VzZWRvd24iLCJCUkVBS1BPSU5UIiwiTUVESUEiLCJzZXRTY3JvbGxMb2NrIiwiaXNMb2NrZWQiLCJib2R5Iiwic2Nyb2xsWSIsIm5leHRUaWNrIiwic2F2ZWRTY3JvbGxZIiwiVE9QX0xBWUVSX0lEIiwiaW5pdEZhdXhUb3BMYXllciIsInRvcExheWVyIiwibW9kYWxDb250ZW50IiwibW9kYWxEaWFsb2ciLCJpc09wZW4iLCJ0cmlnZ2VyTmF0aXZlRGlhbG9nT3BlbiIsInRyaWdnZXJOYXRpdmVEaWFsb2dDbG9zZSIsInNjcm9sbENvbnRlbnRUb1RvcCIsImNsb3NlIiwiaGFuZGxlQmFja2Ryb3BDbGljayIsImhhbmRsZUVzY2FwZUtleWRvd24iLCJvbkJlZm9yZU1vdW50IiwiX1RlbGVwb3J0IiwiJHNsb3RzIiwicGFnaW5hdGlvbkJ1dHRvbnMiLCJlbXB0eSIsImhhbmRsZVByZXZpb3VzQ2xpY2siLCJoYW5kbGVOZXh0Q2xpY2siLCJwYWdpbmF0aW9uQnV0dG9uIiwiVGlkZUJ1dHRvblBhZ2luYXRpb24iLCJzaWRlcyIsImFsaWdubWVudHMiLCJwbGFjZW1lbnRzIiwiYWNjIiwic2lkZSIsIm1pbiIsIm1heCIsInJvdW5kIiwiZmxvb3IiLCJjcmVhdGVDb29yZHMiLCJ2Iiwib3Bwb3NpdGVTaWRlTWFwIiwib3Bwb3NpdGVBbGlnbm1lbnRNYXAiLCJjbGFtcCIsInN0YXJ0IiwiZW5kIiwiZXZhbHVhdGUiLCJwYXJhbSIsImdldFNpZGUiLCJwbGFjZW1lbnQiLCJnZXRBbGlnbm1lbnQiLCJnZXRPcHBvc2l0ZUF4aXMiLCJheGlzIiwiZ2V0QXhpc0xlbmd0aCIsImdldFNpZGVBeGlzIiwiZ2V0QWxpZ25tZW50QXhpcyIsImdldEFsaWdubWVudFNpZGVzIiwicmVjdHMiLCJydGwiLCJhbGlnbm1lbnQiLCJhbGlnbm1lbnRBeGlzIiwibGVuZ3RoIiwibWFpbkFsaWdubWVudFNpZGUiLCJnZXRPcHBvc2l0ZVBsYWNlbWVudCIsImdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50IiwiZXhwYW5kUGFkZGluZ09iamVjdCIsInBhZGRpbmciLCJnZXRQYWRkaW5nT2JqZWN0IiwicmVjdFRvQ2xpZW50UmVjdCIsInJlY3QiLCJ4IiwieSIsIndpZHRoIiwiaGVpZ2h0IiwiY29tcHV0ZUNvb3Jkc0Zyb21QbGFjZW1lbnQiLCJfcmVmIiwicmVmZXJlbmNlIiwiZmxvYXRpbmciLCJzaWRlQXhpcyIsImFsaWduTGVuZ3RoIiwiaXNWZXJ0aWNhbCIsImNvbW1vblgiLCJjb21tb25ZIiwiY29tbW9uQWxpZ24iLCJjb29yZHMiLCJjb21wdXRlUG9zaXRpb24iLCJzdHJhdGVneSIsIm1pZGRsZXdhcmUiLCJwbGF0Zm9ybSIsInZhbGlkTWlkZGxld2FyZSIsInN0YXRlZnVsUGxhY2VtZW50IiwibWlkZGxld2FyZURhdGEiLCJyZXNldENvdW50IiwiaSIsImZuIiwibmV4dFgiLCJuZXh0WSIsImRhdGEiLCJyZXNldCIsImRldGVjdE92ZXJmbG93Iiwic3RhdGUiLCJfYXdhaXQkcGxhdGZvcm0kaXNFbGUiLCJlbGVtZW50cyIsImJvdW5kYXJ5Iiwicm9vdEJvdW5kYXJ5IiwiZWxlbWVudENvbnRleHQiLCJhbHRCb3VuZGFyeSIsInBhZGRpbmdPYmplY3QiLCJlbGVtZW50IiwiY2xpcHBpbmdDbGllbnRSZWN0Iiwib2Zmc2V0UGFyZW50Iiwib2Zmc2V0U2NhbGUiLCJlbGVtZW50Q2xpZW50UmVjdCIsImdldFBsYWNlbWVudExpc3QiLCJhdXRvQWxpZ25tZW50IiwiYWxsb3dlZFBsYWNlbWVudHMiLCJhdXRvUGxhY2VtZW50IiwiX21pZGRsZXdhcmVEYXRhJGF1dG9QIiwiX21pZGRsZXdhcmVEYXRhJGF1dG9QMiIsIl9wbGFjZW1lbnRzVGhhdEZpdE9uRSIsImNyb3NzQXhpcyIsImRldGVjdE92ZXJmbG93T3B0aW9ucyIsInBsYWNlbWVudHMkMSIsIm92ZXJmbG93IiwiY3VycmVudFBsYWNlbWVudCIsImFsaWdubWVudFNpZGVzIiwiY3VycmVudE92ZXJmbG93cyIsImFsbE92ZXJmbG93cyIsIm5leHRQbGFjZW1lbnQiLCJwbGFjZW1lbnRzU29ydGVkQnlNb3N0U3BhY2UiLCJkIiwicmVzZXRQbGFjZW1lbnQiLCJjb252ZXJ0VmFsdWVUb0Nvb3JkcyIsIm1haW5BeGlzTXVsdGkiLCJjcm9zc0F4aXNNdWx0aSIsInJhd1ZhbHVlIiwibWFpbkF4aXMiLCJvZmZzZXQiLCJfbWlkZGxld2FyZURhdGEkb2Zmc2UiLCJfbWlkZGxld2FyZURhdGEkYXJyb3ciLCJkaWZmQ29vcmRzIiwic2hpZnQiLCJjaGVja01haW5BeGlzIiwiY2hlY2tDcm9zc0F4aXMiLCJsaW1pdGVyIiwibWFpbkF4aXNDb29yZCIsImNyb3NzQXhpc0Nvb3JkIiwibWluU2lkZSIsIm1heFNpZGUiLCJsaW1pdGVkQ29vcmRzIiwiaGFzV2luZG93IiwiZ2V0Tm9kZU5hbWUiLCJpc05vZGUiLCJnZXRXaW5kb3ciLCJfbm9kZSRvd25lckRvY3VtZW50IiwiZ2V0RG9jdW1lbnRFbGVtZW50IiwiaXNFbGVtZW50IiwiaXNIVE1MRWxlbWVudCIsImlzU2hhZG93Um9vdCIsImlzT3ZlcmZsb3dFbGVtZW50Iiwib3ZlcmZsb3dYIiwib3ZlcmZsb3dZIiwiZGlzcGxheSIsImdldENvbXB1dGVkU3R5bGUiLCJpc1RhYmxlRWxlbWVudCIsImlzVG9wTGF5ZXIiLCJzZWxlY3RvciIsImlzQ29udGFpbmluZ0Jsb2NrIiwiZWxlbWVudE9yQ3NzIiwid2Via2l0IiwiaXNXZWJLaXQiLCJjc3MiLCJnZXRDb250YWluaW5nQmxvY2siLCJjdXJyZW50Tm9kZSIsImdldFBhcmVudE5vZGUiLCJpc0xhc3RUcmF2ZXJzYWJsZU5vZGUiLCJnZXROb2RlU2Nyb2xsIiwiZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3IiLCJwYXJlbnROb2RlIiwiZ2V0T3ZlcmZsb3dBbmNlc3RvcnMiLCJsaXN0IiwidHJhdmVyc2VJZnJhbWVzIiwiX25vZGUkb3duZXJEb2N1bWVudDIiLCJzY3JvbGxhYmxlQW5jZXN0b3IiLCJpc0JvZHkiLCJ3aW4iLCJmcmFtZUVsZW1lbnQiLCJnZXRGcmFtZUVsZW1lbnQiLCJnZXRDc3NEaW1lbnNpb25zIiwiaGFzT2Zmc2V0Iiwib2Zmc2V0V2lkdGgiLCJvZmZzZXRIZWlnaHQiLCJzaG91bGRGYWxsYmFjayIsInVud3JhcEVsZW1lbnQiLCJnZXRTY2FsZSIsImRvbUVsZW1lbnQiLCIkIiwibm9PZmZzZXRzIiwiZ2V0VmlzdWFsT2Zmc2V0cyIsInNob3VsZEFkZFZpc3VhbE9mZnNldHMiLCJpc0ZpeGVkIiwiZmxvYXRpbmdPZmZzZXRQYXJlbnQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJpbmNsdWRlU2NhbGUiLCJpc0ZpeGVkU3RyYXRlZ3kiLCJjbGllbnRSZWN0Iiwic2NhbGUiLCJ2aXN1YWxPZmZzZXRzIiwib2Zmc2V0V2luIiwiY3VycmVudFdpbiIsImN1cnJlbnRJRnJhbWUiLCJpZnJhbWVTY2FsZSIsImlmcmFtZVJlY3QiLCJsZWZ0IiwidG9wIiwiZ2V0V2luZG93U2Nyb2xsQmFyWCIsImxlZnRTY3JvbGwiLCJnZXRIVE1MT2Zmc2V0IiwiZG9jdW1lbnRFbGVtZW50Iiwic2Nyb2xsIiwiaWdub3JlU2Nyb2xsYmFyWCIsImh0bWxSZWN0IiwiY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3QiLCJvZmZzZXRzIiwiaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQiLCJvZmZzZXRSZWN0IiwiaHRtbE9mZnNldCIsImdldENsaWVudFJlY3RzIiwiZ2V0RG9jdW1lbnRSZWN0IiwiaHRtbCIsImdldFZpZXdwb3J0UmVjdCIsInZpc3VhbFZpZXdwb3J0IiwidmlzdWFsVmlld3BvcnRCYXNlZCIsImdldElubmVyQm91bmRpbmdDbGllbnRSZWN0IiwiZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yIiwiY2xpcHBpbmdBbmNlc3RvciIsImhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvciIsInN0b3BOb2RlIiwiZ2V0Q2xpcHBpbmdFbGVtZW50QW5jZXN0b3JzIiwiY2FjaGUiLCJjYWNoZWRSZXN1bHQiLCJlbCIsImN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlIiwiZWxlbWVudElzRml4ZWQiLCJjb21wdXRlZFN0eWxlIiwiY3VycmVudE5vZGVJc0NvbnRhaW5pbmciLCJhbmNlc3RvciIsImdldENsaXBwaW5nUmVjdCIsImNsaXBwaW5nQW5jZXN0b3JzIiwiZmlyc3RDbGlwcGluZ0FuY2VzdG9yIiwiY2xpcHBpbmdSZWN0IiwiYWNjUmVjdCIsImdldERpbWVuc2lvbnMiLCJnZXRSZWN0UmVsYXRpdmVUb09mZnNldFBhcmVudCIsImlzU3RhdGljUG9zaXRpb25lZCIsImdldFRydWVPZmZzZXRQYXJlbnQiLCJwb2x5ZmlsbCIsInJhd09mZnNldFBhcmVudCIsImdldE9mZnNldFBhcmVudCIsInN2Z09mZnNldFBhcmVudCIsImdldEVsZW1lbnRSZWN0cyIsImdldE9mZnNldFBhcmVudEZuIiwiZ2V0RGltZW5zaW9uc0ZuIiwiZmxvYXRpbmdEaW1lbnNpb25zIiwiaXNSVEwiLCJyZWN0c0FyZUVxdWFsIiwib2JzZXJ2ZU1vdmUiLCJvbk1vdmUiLCJpbyIsInRpbWVvdXRJZCIsInJvb3QiLCJjbGVhbnVwIiwiX2lvIiwicmVmcmVzaCIsInNraXAiLCJ0aHJlc2hvbGQiLCJlbGVtZW50UmVjdEZvclJvb3RNYXJnaW4iLCJpbnNldFRvcCIsImluc2V0UmlnaHQiLCJpbnNldEJvdHRvbSIsImluc2V0TGVmdCIsImlzRmlyc3RVcGRhdGUiLCJoYW5kbGVPYnNlcnZlIiwicmF0aW8iLCJhdXRvVXBkYXRlIiwidXBkYXRlIiwiYW5jZXN0b3JTY3JvbGwiLCJhbmNlc3RvclJlc2l6ZSIsImVsZW1lbnRSZXNpemUiLCJsYXlvdXRTaGlmdCIsImFuaW1hdGlvbkZyYW1lIiwicmVmZXJlbmNlRWwiLCJhbmNlc3RvcnMiLCJjbGVhbnVwSW8iLCJyZW9ic2VydmVGcmFtZSIsInJlc2l6ZU9ic2VydmVyIiwiZmlyc3RFbnRyeSIsIl9yZXNpemVPYnNlcnZlciIsImZyYW1lSWQiLCJwcmV2UmVmUmVjdCIsImZyYW1lTG9vcCIsIm5leHRSZWZSZWN0IiwiX3Jlc2l6ZU9ic2VydmVyMiIsIm9mZnNldCQxIiwiYXV0b1BsYWNlbWVudCQxIiwic2hpZnQkMSIsIm1lcmdlZE9wdGlvbnMiLCJwbGF0Zm9ybVdpdGhDYWNoZSIsImNvbXB1dGVQb3NpdGlvbiQxIiwiaXNDb21wb25lbnRQdWJsaWNJbnN0YW5jZSIsInRvVmFsdWUiLCJ1bnJlZiIsImdldERQUiIsInJvdW5kQnlEUFIiLCJkcHIiLCJ1c2VGbG9hdGluZyIsIndoaWxlRWxlbWVudHNNb3VudGVkT3B0aW9uIiwib3Blbk9wdGlvbiIsIl90b1ZhbHVlIiwibWlkZGxld2FyZU9wdGlvbiIsInBsYWNlbWVudE9wdGlvbiIsIl90b1ZhbHVlMiIsInN0cmF0ZWd5T3B0aW9uIiwiX3RvVmFsdWUzIiwidHJhbnNmb3JtT3B0aW9uIiwiX3RvVmFsdWU0IiwicmVmZXJlbmNlRWxlbWVudCIsImZsb2F0aW5nRWxlbWVudCIsInNoYWxsb3dSZWYiLCJpc1Bvc2l0aW9uZWQiLCJmbG9hdGluZ1N0eWxlcyIsImluaXRpYWxTdHlsZXMiLCJ4VmFsIiwieVZhbCIsIndoaWxlRWxlbWVudHNNb3VudGVkQ2xlYW51cCIsIm9wZW4iLCJwb3NpdGlvbiIsImF0dGFjaCIsImdldEN1cnJlbnRTY29wZSIsIm9uU2NvcGVEaXNwb3NlIiwic2hhbGxvd1JlYWRvbmx5IiwiaXNDbGlja091dHNpZGUiLCJhbmNob3IiLCJpc0hvdmVyZWQiLCJpc1RvZ2dsZWRPcGVuIiwib2Zmc2V0TWlkZGxld2FyZSIsImlzU2hvd1BvcG92ZXIiLCJoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUNsaWNrIiwiaGFuZGxlQW5jaG9yRWxlbWVudE1vdXNlT3ZlciIsImhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZUxlYXZlIiwiaGFuZGxlQW5jaG9yRWxlbWVudENsaWNrIiwiYWRkTGlzdGVuZXJzVG9BbmNob3JFbGVtZW50IiwicmVtb3ZlTGlzdGVuZXJzRnJvbUFuY2hvckVsZW1lbnQiLCJoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUtleWRvd24iLCJhZGRPcGVuTGlzdGVuZXJzVG9Sb290IiwicmVtb3ZlT3Blbkxpc3RlbmVyc0Zyb21Sb290IiwidXBkYXRlQW5jaG9yRWxlbWVudCIsIl9UcmFuc2l0aW9uIiwicmF0aW5nVmFsdWUiLCJzZWdtZW50cyIsIl8iLCJzZWdtZW50IiwibGluayIsImRpYWxvZ0VsZW1lbnQiLCJjdXJyZW50VGFiIiwiVGlkZUNhcm91c2VsIl0sIm1hcHBpbmdzIjoidUdBQWFBLEdBQWMsQ0FDekIsV0FBWSxhQUNaLFNBQVUsVUFDWixFQ0NhQyxFQUFNLENBQ2pCLGVBQWdCLENBQUNDLEVBQXFCQyxJQUM3QkQsRUFBVSxJQUFLRSxHQUFZLEdBQUdELENBQVUsSUFBSUMsQ0FBTyxFQUFFLEVBRTlELE1BQU8sQ0FDTCxFQUFHLENBQ0QsT0FBUSxtQkFDUixRQUFTLG9CQUNULEtBQU0saUJBQ04sTUFBTyxpQkFBQSxFQUVULEVBQUcsQ0FDRCxRQUFTLHFCQUNULE9BQVEsbUJBQUEsQ0FDVixFQUVGLE1BQU8sQ0FDTCxPQUFRLG9CQUNSLFFBQVMscUJBQ1QsT0FBUSxvQkFDUixJQUFLLGlCQUNMLE1BQU8sa0JBQUEsRUFFVCxNQUFPLENBQ0wsT0FBUSxvQkFDUixPQUFRLG9CQUNSLElBQUssaUJBQ0wsTUFBTyxtQkFDUCxRQUFTLG9CQUFBLEVBRVgsR0FBSSxDQUNGLE9BQVEsQ0FDTixRQUFTLENBQ1AsTUFBTyx3QkFDUCxLQUFNLHVCQUNOLFFBQVMsMEJBQ1QsUUFBUyx5QkFBQSxFQUVYLFFBQVMsQ0FDUCxNQUFPLHdCQUNQLEtBQU0sdUJBQ04sUUFBUywwQkFDVCxRQUFTLDBCQUVULEtBQU0sdUJBQ04sTUFBTyx3QkFDUCxLQUFNLHVCQUNOLE9BQVEseUJBQ1IsT0FBUSx5QkFDUixJQUFLLHNCQUNMLE9BQVEseUJBQ1IsS0FBTSx1QkFDTixPQUFRLHdCQUFBLENBQ1YsRUFFRixRQUFTLGtCQUNULEtBQU0sZUFDTixRQUFTLGtCQUNULFVBQVcsb0JBQ1gsUUFBUyxDQUNQLE9BQVEseUJBQ1IsTUFBTyx3QkFDUCxRQUFTLGtCQUNULFNBQVUsMkJBQ1YsU0FBVSwyQkFDVixRQUFTLHlCQUFBLEVBRVgsWUFBYSxDQUNYLFlBQWEsdUJBQ2IsWUFBYSx1QkFDYixjQUFlLHVCQUNmLGFBQWMsc0JBQUEsQ0FDaEIsRUFFRixPQUFRLENBQ04sTUFBTyxDQUNMLE9BQVEsQ0FDTixNQUFPLG9CQUNQLEtBQU0sbUJBQ04sUUFBUyxzQkFDVCxRQUFTLHNCQUVULEtBQU0sbUJBQ04sTUFBTyxvQkFDUCxLQUFNLG1CQUNOLE9BQVEscUJBQ1IsT0FBUSxxQkFDUixJQUFLLGtCQUNMLE9BQVEscUJBQ1IsS0FBTSxtQkFDTixPQUFRLG9CQUFBLEVBRVYsUUFBUyw0QkFDVCxRQUFTLGNBQ1QsU0FBVSx1QkFDVixLQUFNLG1CQUNOLElBQUssa0JBQ0wsUUFBUyxxQkFBQSxFQUVYLE9BQVEsQ0FDTixLQUFNLGdCQUNOLFFBQVMsa0JBQ1QsS0FBTSxrQkFDTixJQUFLLGdCQUNMLEtBQU0sa0JBQUEsRUFFUixNQUFPLENBQ0wsT0FBUSxxQkFDUixNQUFPLG1CQUFBLEVBRVQsT0FBUSxDQUNOLEtBQU0sdUJBQ04sSUFBSyx1QkFDTCxJQUFLLHNCQUFBLEVBRVAsS0FBTSxDQUNKLEtBQU0sZ0JBQ04sSUFBSyxnQkFDTCxJQUFLLGVBQUEsRUFFUCxLQUFNLENBQ0osS0FBTSxxQkFDTixJQUFLLHFCQUNMLElBQUssb0JBQUEsRUFFUCxNQUFPLENBQ0wsS0FBTSxzQkFDTixJQUFLLHNCQUNMLElBQUsscUJBQUEsRUFFUCxJQUFLLENBQ0gsS0FBTSxvQkFDTixJQUFLLG9CQUNMLElBQUssbUJBQUEsQ0FDUCxFQUVGLFdBQVksQ0FDVixXQUFZLGtCQUNaLFlBQWEsa0JBQUEsRUFFZixhQUFjLENBQ1osYUFBYyxnQ0FBQSxFQUVoQixXQUFZLENBQ1YsSUFBSyxxQkFDTCxHQUFJLGlCQUFBLEVBRU4sUUFBUyxDQUNQLFFBQVMsdUJBQ1QsSUFBSyxpQkFDTCxJQUFLLGlCQUNMLE1BQU8saUJBQ1AsS0FBTSxnQkFBQSxFQUVSLE9BQVEsQ0FDTixZQUFhLDBCQUNiLFFBQVMsc0JBQ1QsS0FBTSxrQkFBQSxFQUVSLFFBQVMsQ0FDUCxNQUFPLHFCQUNQLFNBQVUsd0JBQ1YsS0FBTSxvQkFDTixLQUFNLG9CQUNOLFFBQVMsdUJBQ1QsT0FBUSxzQkFDUixhQUFjLDRCQUNkLFlBQWEsMkJBQ2IsS0FBTSxtQkFBQSxFQUVSLFNBQVUsZ0JBQ1YsS0FBTSxDQUNKLE1BQU8sQ0FDTCxLQUFNLHVCQUNOLEtBQU0sbUJBQUEsRUFFUixVQUFXLENBQ1QsT0FBUSxtQkFDUixlQUFnQiwyQkFDaEIsSUFBSyxnQkFDTCxZQUFhLHVCQUFBLEVBRWYsS0FBTSxDQUNKLElBQUssaUJBQ0wsR0FBSSxXQUFBLEVBRU4sT0FBUSxDQUNOLElBQUssbUJBQ0wsR0FBSSxhQUFBLEVBRU4sS0FBTSxnQkFBQSxFQUVSLEtBQU0sQ0FDSixNQUFPLENBQ0wsT0FBUSxDQUNOLE1BQU8sa0JBQ1AsS0FBTSxpQkFDTixRQUFTLG9CQUNULFFBQVMsb0JBRVQsS0FBTSxpQkFDTixNQUFPLGtCQUNQLEtBQU0saUJBQ04sT0FBUSxtQkFDUixPQUFRLG1CQUNSLElBQUssZ0JBQ0wsT0FBUSxtQkFDUixLQUFNLGlCQUNOLE9BQVEsbUJBRVIsUUFBUyxDQUNQLEtBQU0seUJBQ04sTUFBTywwQkFDUCxLQUFNLHlCQUNOLE9BQVEsMkJBQ1IsT0FBUSwyQkFDUixJQUFLLHdCQUNMLE9BQVEsMkJBQ1IsS0FBTSx5QkFDTixPQUFRLDBCQUFBLENBQ1YsRUFFRixRQUFTLHVCQUNULFVBQVcseUJBQ1gsUUFBUyxDQUNQLE1BQU8sNkJBQ1AsUUFBUyx1QkFDVCxRQUFTLCtCQUNULFFBQVMsK0JBQ1QsZ0JBQWlCLHNDQUFBLENBQ25CLEVBRUYsS0FBTSxDQUNKLFVBQVcsNEJBQ1gsV0FBWSw2QkFDWixXQUFZLDZCQUNaLFdBQVksNkJBQ1osUUFBUywwQkFDVCxRQUFTLDBCQUNULE9BQVEseUJBQ1IsT0FBUSx5QkFDUixRQUFTLDBCQUNULGlCQUFrQixtQ0FDbEIsUUFBUywwQkFDVCxpQkFBa0IsbUNBQ2xCLFFBQVMsMEJBQ1QsT0FBUSx5QkFDUixPQUFRLHlCQUNSLE9BQVEseUJBQ1IsU0FBVSwyQkFDVixTQUFVLDBCQUFBLEVBRVosS0FBTSxDQUNKLE9BQVEsZUFDUixTQUFVLGVBQ1YsUUFBUyxlQUNULE9BQVEsZUFDUixZQUFhLGVBQ2IsV0FBWSxjQUFBLEVBRWQsT0FBUSxDQUNOLGFBQWMsZ0JBQ2QsYUFBYyxnQkFDZCxZQUFhLGdCQUNiLGNBQWUsZUFBQSxDQUNqQixFQUVGLElBQUssQ0FDSCxLQUFNLGFBQ04sUUFBUyxlQUNULEtBQU0sZUFDTixJQUFLLGFBQ0wsSUFBSyxhQUNMLEtBQU0sWUFBQSxFQUVSLEtBQU0sQ0FDSixNQUFPLGFBQ1AsS0FBTSxpQkFDTixPQUFRLG1CQUNSLEdBQUksY0FBQSxFQUVOLE9BQVEsQ0FDTixLQUFNLG1CQUNOLEtBQU0sZ0JBQ04sS0FBTSxtQkFDTixTQUFVLHVCQUNWLFNBQVUsbUJBQUEsRUFFWixVQUFXLENBQ1QsUUFBUyxjQUFBLEVBRVgsYUFBYyxDQUNaLElBQUssZ0JBQUEsRUFFUCxPQUFRLENBQ04sT0FBUSxDQUNOLEtBQU0sMEJBQ04sS0FBTSx1QkFDTixRQUFTLHlCQUNULEtBQU0seUJBQ04sSUFBSyx1QkFDTCxJQUFLLHVCQUNMLEtBQU0sc0JBQUEsRUFFUixLQUFNLENBQ0osS0FBTSxnQkFDTixRQUFTLGtCQUNULEtBQU0sa0JBQ04sSUFBSyxnQkFDTCxJQUFLLGdCQUNMLEtBQU0sZUFBQSxFQUVSLEtBQU0sQ0FDSixLQUFNLHdCQUNOLEtBQU0scUJBQ04sUUFBUyx1QkFDVCxLQUFNLHVCQUNOLElBQUsscUJBQ0wsSUFBSyxxQkFDTCxLQUFNLG9CQUFBLEVBRVIsTUFBTyxDQUNMLEtBQU0seUJBQ04sS0FBTSxzQkFDTixRQUFTLHdCQUNULEtBQU0sd0JBQ04sSUFBSyxzQkFDTCxJQUFLLHNCQUNMLEtBQU0scUJBQUEsRUFFUixJQUFLLENBQ0gsS0FBTSx1QkFDTixLQUFNLG9CQUNOLFFBQVMsc0JBQ1QsS0FBTSxzQkFDTixJQUFLLG9CQUNMLElBQUssb0JBQ0wsS0FBTSxtQkFBQSxFQUVSLEVBQUcsQ0FDRCxLQUFNLHFCQUNOLEtBQU0sa0JBQ04sUUFBUyxvQkFDVCxLQUFNLG9CQUNOLElBQUssa0JBQ0wsSUFBSyxrQkFDTCxLQUFNLGlCQUFBLEVBRVIsRUFBRyxDQUNELEtBQU0sa0JBQ04sUUFBUyxvQkFDVCxLQUFNLG9CQUNOLElBQUssa0JBQ0wsSUFBSyxrQkFDTCxLQUFNLGlCQUFBLENBQ1IsRUFFRixPQUFRLENBQ04sT0FBUSxxQkFDUixRQUFTLHNCQUNULE1BQU8sb0JBQ1AsV0FBWSx3QkFBQSxFQUVkLFFBQVMsQ0FDUCxTQUFVLHdCQUNWLElBQUssb0JBQ0wsR0FBSSxjQUFBLEVBRU4sU0FBVSxDQUNSLEVBQUcsQ0FDRCxLQUFNLGNBQ04sT0FBUSxnQkFDUixPQUFRLGVBQUEsRUFFVixHQUFJLENBQ0YsS0FBTSxlQUNOLE9BQVEsZ0JBQUEsRUFFVixFQUFHLENBQ0QsS0FBTSxjQUNOLE9BQVEsZUFBQSxDQUNWLEVBRUYsUUFBUyxDQUNQLE9BQVEsQ0FDTixLQUFNLHdCQUNOLFFBQVMsMEJBQ1QsS0FBTSwwQkFDTixJQUFLLHdCQUNMLElBQUssd0JBQ0wsS0FBTSx1QkFBQSxFQUVSLEtBQU0sQ0FDSixLQUFNLGlCQUNOLFFBQVMsbUJBQ1QsS0FBTSxtQkFDTixJQUFLLGlCQUNMLElBQUssaUJBQ0wsS0FBTSxnQkFBQSxFQUVSLEtBQU0sQ0FDSixLQUFNLHNCQUNOLFFBQVMsd0JBQ1QsS0FBTSx3QkFDTixJQUFLLHNCQUNMLElBQUssc0JBQ0wsS0FBTSxxQkFBQSxFQUVSLE1BQU8sQ0FDTCxLQUFNLHVCQUNOLFFBQVMseUJBQ1QsS0FBTSx5QkFDTixJQUFLLHVCQUNMLElBQUssdUJBQ0wsS0FBTSxzQkFBQSxFQUVSLElBQUssQ0FDSCxLQUFNLHFCQUNOLFFBQVMsdUJBQ1QsS0FBTSx1QkFDTixJQUFLLHFCQUNMLElBQUsscUJBQ0wsS0FBTSxvQkFBQSxFQUVSLEVBQUcsQ0FDRCxLQUFNLG1CQUNOLFFBQVMscUJBQ1QsS0FBTSxxQkFDTixJQUFLLG1CQUNMLElBQUssbUJBQ0wsS0FBTSxrQkFBQSxFQUVSLEVBQUcsQ0FDRCxLQUFNLG1CQUNOLFFBQVMscUJBQ1QsS0FBTSxxQkFDTixJQUFLLG1CQUNMLElBQUssbUJBQ0wsS0FBTSxrQkFBQSxDQUNSLEVBRUYsZUFBZ0IsQ0FDZCxJQUFLLDJCQUNMLEdBQUkscUJBQUEsRUFFTixTQUFVLENBQ1IsU0FBVSx5QkFDVixNQUFPLHNCQUNQLFNBQVUseUJBQ1YsT0FBUSx1QkFDUixPQUFRLHNCQUFBLEVBRVYsWUFBYSxDQUNYLE9BQVEsZ0JBQ1IsS0FBTSxjQUNOLE1BQU8sZUFDUCxJQUFLLFlBQUEsRUFFUCxNQUFPLENBQ0wsV0FBWSxpQkFDWixnQkFBaUIsa0JBQ2pCLGFBQWMsZ0JBQUEsRUFFaEIsVUFBVyxDQUNULElBQUsscUJBQUEsRUFFUCxPQUFRLENBQ04sUUFBUyxzQkFDVCxPQUFRLHFCQUNSLElBQUssa0JBQ0wsS0FBTSxrQkFBQSxFQUVSLEtBQU0sQ0FDSixHQUFJLGtCQUFBLEVBRU4sV0FBWSxDQUNWLE1BQU8sd0JBQUEsRUFFVCxjQUFlLENBQ2IsSUFBSywwQkFDTCxHQUFJLG9CQUFBLEVBRU4sZUFBZ0IsQ0FDZCxNQUFPLDRCQUNQLEtBQU0sMkJBQ04sTUFBTywyQkFBQSxFQUVULFVBQVcsQ0FDVCxNQUFPLENBQ0wsR0FBSSx1QkFDSixJQUFLLDJCQUFBLEVBRVAsS0FBTSxDQUNKLEdBQUksaUJBQ0osSUFBSyxxQkFBQSxDQUNQLEVBRUYsWUFBYSxDQUNYLFFBQVMsMkJBQ1QsS0FBTSx1QkFBQSxFQUVSLFdBQVksQ0FDVixJQUFLLG9CQUNMLEdBQUksY0FBQSxFQUVOLGdCQUFpQixDQUNmLElBQUssd0JBQUEsRUFFUCxNQUFPLENBQ0wsS0FBTSxrQkFDTixLQUFNLGVBQ04sS0FBTSxrQkFDTixTQUFVLHNCQUNWLFNBQVUsa0JBQUEsRUFFWixRQUFTLENBQ1AsUUFBUyx1QkFDVCxJQUFLLGdCQUFBLENBRVQsZ0pDamdCRSxNQUFNQyxFQUFRQyxnQkFNZEMsWUFBQSxFQUFBQyxxQkFTTSxNQVROQyxHQVNNLENBUkpDLEVBQUFBLG1CQU9FLE1BQUEsQ0FOQyxNQUFLQyxFQUFBQSxlQUFBLENBQVlDLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLE1BQU0sSUFBYUksRUFBTSxjQUFnQk8sUUFBQVosRUFBQSxFQUFZLFdBQXdCLENBQUFZLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLEVBQUUsS0FBTVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sT0FBTyxJQUFLVyxXQUFJLE1BQU0sSUFBSSxFQUFlLENBQUFBLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLEVBQUUsS0FBTVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sTUFBTSxJQUFLVyxFQUFBQSxTQUFJLE9BQU8sSUFBSSxDQUFBLG9jQ2xCbE9DLEdBQVEsQ0FDbkIsS0FBTSxPQUNOLElBQUssTUFDTCxTQUFVLFdBQ1YsTUFBTyxRQUNQLFVBQVcsWUFDWCxJQUFLLE1BQ0wsR0FBSSxLQUNKLEtBQU0sT0FDTixNQUFPLE9BQ1QsRUNWYUMsRUFBTyxDQUNsQixNQUFPLFFBQ1AsTUFBTyxPQUNULEVBSWFDLEdBQWMsQ0FDekIsTUFBTyxRQUNQLE1BQU8sT0FDVCxFQ3dCTUMsRUFBZ0JDLEdBQW1DLENBQ3ZELElBQUlDLEVBQVNELEdBQVMsT0FBT0EsR0FBVSxTQUFXLElBQUksS0FBSyxhQUFBLEVBQWUsT0FBT0EsQ0FBSyxFQUFJLE9BQU9BLEdBQVMsRUFBRSxFQUN4R0UsRUFBU0QsRUFFYixPQUFJRCxHQUFTLE9BQU9BLEdBQVUsV0FDNUJFLEVBQVNBLEVBQU8sUUFBUSxNQUFPLEVBQUUsRUFDN0IsT0FBT0EsQ0FBTSxFQUNmRCxFQUFTLElBQUksS0FBSyxhQUFBLEVBQWUsT0FBTyxPQUFPQyxDQUFNLENBQUMsRUFFdERELEVBQVMsS0FJTkEsQ0FDVCxFQUVNRSxHQUFvQkgsR0FDakJBLEdBQVMsT0FBT0EsR0FBVSxTQUM3QkEsRUFDRyxRQUFRLHdCQUF5QixPQUFPLEVBQ3hDLFFBQVEsVUFBVyxHQUFHLEVBQ3RCLFlBQUEsRUFDQSxNQUFNLEdBQUcsRUFDVCxJQUFLSSxHQUFTQSxFQUFLLE1BQU0sRUFBRyxDQUFDLEVBQUUsWUFBQSxFQUFnQkEsRUFBSyxNQUFNLENBQUMsQ0FBQyxFQUM1RCxLQUFLLEVBQUUsRUFDVkosRUFHQUssR0FBZUwsR0FBbUMsQ0FDdEQsSUFBSUMsRUFBOEMsT0FBckNELEdBQVMsT0FBT0EsR0FBVSxTQUFrQkEsRUFBZ0JBLEdBQVMsRUFBcEIsRUFDMURFLEVBQVNELEVBR2IsT0FGQUMsRUFBU0EsRUFBTyxRQUFRLE1BQU8sRUFBRSxFQUV6QkEsRUFBTyxPQUFBLENBQ2IsSUFBSyxHQUNIRCxFQUFTLEdBQUdDLEVBQU8sTUFBTSxFQUFHLENBQUMsQ0FBQyxJQUFJQSxFQUFPLE1BQU0sQ0FBQyxDQUFDLEdBQ2pELE1BQ0YsSUFBSyxJQUNIRCxFQUFTLEdBQUdDLEVBQU8sTUFBTSxFQUFHLENBQUMsQ0FBQyxJQUFJQSxFQUFPLE1BQU0sRUFBRyxDQUFDLENBQUMsSUFBSUEsRUFBTyxNQUFNLENBQUMsQ0FBQyxHQUN2RSxNQUNGLElBQUssSUFDSEQsRUFBUyxHQUFHQyxFQUFPLE1BQU0sRUFBRyxDQUFDLENBQUMsSUFBSUEsRUFBTyxNQUFNLEVBQUcsQ0FBQyxDQUFDLElBQUlBLEVBQU8sTUFBTSxFQUFHLENBQUMsQ0FBQyxJQUFJQSxFQUFPLE1BQU0sQ0FBQyxDQUFDLEdBQzdGLE1BQ0YsUUFDRUQsRUFBU0MsRUFDVCxLQUFBLENBR0osT0FBT0QsQ0FDVCxFQUVNSyxHQUFlTixHQUVaLElBRFFBLEVBQVFELEVBQWFDLENBQUssRUFBSSxPQUFPQSxHQUFTLEdBQUcsQ0FDL0MsMEZDdEVqQixNQUFNWixFQUFRQyxFQUlSa0IsRUFBV0MsRUFBQUEsSUFBQSxFQUVqQkMsT0FBQUEsRUFBQUEsTUFDRSxJQUFNckIsRUFBTSxLQUNaLFNBQVksQ0FDVixNQUFNc0IsRUFBYXRCLEVBQU0sS0FDbkJ1QixFQUFPUixHQUFpQk8sQ0FBRSxFQUMxQixDQUFDRSxDQUFNLEVBQUlGLEVBQUcsTUFBTSxHQUFHLEVBQ3ZCRyxFQUFjakIsR0FBTWdCLEdBQUEsWUFBQUEsRUFBUSxhQUFtQyxFQU0vREUsRUFBTSxNQUpHRCxFQUNYLElBQU1FLGd5RUFDTixJQUFNQSxxdWRBRVEsRUFFbEJSLEVBQVMsTUFBUVMsVUFBUUYsRUFBSSxPQUFPLENBQ3RDLEVBQ0EsQ0FBRSxVQUFXLEVBQUEsQ0FBSyx3QkFLcEJ2QixFQUFBQSxtQkFRTSxNQUFBLENBUkEsTUFBS0csRUFBQUEsZUFBQSxDQUFBLFlBQWdCTixFQUFNLEtBQU1PLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLE9BQU8sR0FBRyxDQUFBLENBQUEsR0FNaER1QixFQUFBLE9BTFJqQixZQUFBLEVBQUEyQixFQUFBQSxZQU1FQywwQkFGS1gsRUFBQSxLQUFRLEVBQUEsT0FIWixNQUFLYixFQUFBQSxlQUFBLENBQUdDLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLEtBQUssQ0FBQSxFQUN6QixZQUFXSyxFQUFBLEtBQ1osS0FBSyxjQUFBLHFFQzlDRThCLEVBQU8sQ0FDbEIsZ0JBQWlCLGtCQUNqQixNQUFPLFFBQ1AsSUFBSyxNQUNMLGVBQWdCLGlCQUNoQixpQkFBa0IsbUJBQ2xCLFVBQVcsWUFDWCxXQUFZLGFBQ1osWUFBYSxjQUNiLGNBQWUsZ0JBQ2YsWUFBYSxjQUNiLFNBQVUsV0FDVixXQUFZLGFBQ1osYUFBYyxlQUNkLFdBQVksYUFDWixXQUFZLGFBQ1osSUFBSyxNQUNMLEtBQU0sT0FDTixTQUFVLFdBQ1YsVUFBVyxZQUNYLGVBQWdCLGlCQUNoQixLQUFNLE9BQ04sYUFBYyxlQUNkLFdBQVksYUFDWixNQUFPLFFBQ1AsYUFBYyxlQUNkLGNBQWUsZ0JBQ2YsTUFBTyxRQUNQLE1BQU8sUUFDUCxTQUFVLFdBQ1YsTUFBTyxRQUNQLG9CQUFxQixzQkFDckIsT0FBUSxTQUNSLFFBQVMsVUFDVCxnQkFBaUIsa0JBQ2pCLE9BQVEsU0FDUixNQUFPLFFBQ1AsS0FBTSxPQUNOLE9BQVEsU0FDUixZQUFhLGNBQ2IsTUFBTyxRQUNQLGVBQWdCLGlCQUNoQixZQUFhLGNBQ2IsWUFBYSxjQUNiLFNBQVUsV0FDVixTQUFVLFdBQ1YsZ0JBQWlCLGtCQUNqQixLQUFNLE9BQ04sWUFBYSxjQUNiLGNBQWUsZ0JBQ2YscUJBQXNCLHVCQUN0QixNQUFPLFFBQ1AsSUFBSyxNQUNMLE1BQU8sUUFDUCxNQUFPLFFBQ1AsbUJBQW9CLHFCQUNwQixPQUFRLFNBQ1IsV0FBWSxhQUNaLEtBQU0sT0FDTixVQUFXLFlBQ1gsU0FBVSxXQUNWLE9BQVEsU0FDUixLQUFNLE9BQ04sS0FBTSxPQUNOLFlBQWEsY0FDYixZQUFhLGNBQ2IsVUFBVyxZQUNYLFVBQVcsWUFDWCxPQUFRLFNBQ1IsZUFBZ0IsaUJBQ2hCLFVBQVcsWUFDWCxlQUFnQixpQkFDaEIsS0FBTSxPQUNOLEtBQU0sT0FDTixLQUFNLE9BQ04sVUFBVyxZQUNYLFdBQVksYUFDWixjQUFlLGdCQUNmLFNBQVUsV0FDVixZQUFhLGNBQ2IsUUFBUyxVQUNULE9BQVEsU0FDUixPQUFRLFNBQ1IsY0FBZSxnQkFDZixhQUFjLGVBQ2QsVUFBVyxZQUNYLFdBQVksYUFDWixPQUFRLFNBQ1IsTUFBTyxRQUNQLFVBQVcsWUFDWCxjQUFlLGdCQUNmLE9BQVEsU0FDUixjQUFlLGdCQUNmLGFBQWMsZUFDZCxLQUFNLE9BQ04sZUFBZ0IsaUJBQ2hCLE1BQU8sUUFDUCxRQUFTLFVBQ1QsT0FBUSxTQUNSLE9BQVEsU0FDUixRQUFTLFVBQ1QsS0FBTSxPQUNOLFFBQVMsVUFDVCxTQUFVLFdBQ1YsTUFBTyxRQUNQLGFBQWMsZUFDZCxjQUFlLGdCQUNmLE9BQVEsU0FDUixJQUFLLE1BQ0wsVUFBVyxZQUNYLEtBQU0sT0FDTixZQUFhLGNBQ2IsVUFBVyxZQUNYLFVBQVcsWUFDWCxXQUFZLGFBQ1osVUFBVyxZQUNYLGlCQUFrQixtQkFDbEIsU0FBVSxXQUNWLGNBQWUsZ0JBQ2YsT0FBUSxTQUNSLEtBQU0sT0FDTixRQUFTLFVBQ1QsU0FBVSxXQUNWLFNBQVUsV0FDVixTQUFVLFdBQ1YsV0FBWSxhQUNaLFdBQVksYUFDWixXQUFZLGFBQ1osVUFBVyxZQUNYLFVBQVcsWUFDWCxRQUFTLFVBQ1QsTUFBTyxRQUNQLE9BQVEsU0FDUixNQUFPLFFBQ1Asa0JBQW1CLG9CQUNuQixPQUFRLFNBQ1IsUUFBUyxTQUNYLEVBRWFDLEdBQWEsQ0FDeEIsSUFBSyxDQUNILElBQUssVUFDTCxXQUFZLGlCQUNaLFVBQVcsZ0JBQ1gsUUFBUyxjQUNULFVBQVcsZ0JBQ1gsYUFBYyxtQkFDZCxRQUFTLGFBQUEsRUFFWCxTQUFVLENBQ1IsSUFBSyxlQUNMLFFBQVMsa0JBQUEsRUFFWCxHQUFJLENBQ0YsUUFBUyxhQUNULFFBQVMsYUFDVCxRQUFTLGFBQ1QsWUFBYSxpQkFDYixXQUFZLGdCQUNaLFdBQVksZ0JBQ1osY0FBZSxtQkFDZixlQUFnQixvQkFDaEIsYUFBYyxpQkFBQSxDQUVsQiwrVkN4SkUsTUFBTWhDLEVBQVFDLEVBTVJnQyxFQUFhQyxFQUFBQSx1QkFBdUMsRUFFcERDLEVBQW9CLElBQU0sQ0FDOUJGLEVBQVcsTUFBUSxDQUFDQSxFQUFXLEtBQ2pDLGdCQUlBL0IsWUFBQSxFQUFBQyxxQkFzQ00sTUF0Q05DLEdBc0NNLENBckNlSixFQUFNLDZCQUF6QjZCLEVBQUFBLFlBQTBDTyxHQUFBLENBQUEsSUFBQSxDQUFBLENBQUEsK0JBRTFDL0IsRUFBQUEsbUJBMEJTLFNBQUEsQ0F6Qk4sTUFBS0MsRUFBQUEsZUFBQSx1QkFBMkNDLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxNQUFNLEVBQUUsS0FBY1csUUFBQVgsQ0FBQSxFQUFJLE1BQU0sUUFBaUJXLFFBQUFYLENBQUEsRUFBSSxRQUFRLEtBQWNXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLEVBQUUsS0FBY1csUUFBQVgsQ0FBQSxFQUFJLE1BQU0sSUFBQSxHQVFySyxRQUFPdUMsQ0FBQSxHQUVSOUIsRUFBQUEsbUJBU00sTUFBQSxDQVRBLE1BQUtDLEVBQUFBLGVBQUEsQ0FBR0MsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBTVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE1BQU0sT0FBUVcsUUFBQVgsQ0FBQSxFQUFJLElBQUksS0FBTVcsUUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxnQkFBZ0IsQ0FBQSxDQUFBLEdBQzVGUyxFQUFBQSxtQkFBOEIsT0FBQSxLQUFBZ0MsRUFBQUEsZ0JBQXJCckMsRUFBTSxLQUFLLEVBQUEsQ0FBQSxFQUlaQSxFQUFNLDBCQUZkRyxFQUFBQSxtQkFLTyxPQUFBLE9BSkosTUFBS0csRUFBQUEsZUFBQSxDQUFHQyxXQUFJLEtBQUssTUFBTSxRQUFRLE9BQU8sQ0FBQSxDQUFBLEVBRXhDLGVBRUQsQ0FBQSxtQ0FHRitCLEVBQUFBLFlBR0VDLEVBQUEsQ0FGQyxLQUFNTixRQUFhMUIsUUFBQXdCLENBQUEsRUFBSyxZQUFjeEIsRUFBQUEsTUFBQXdCLENBQUEsRUFBSyxZQUMzQyxLQUFNeEIsRUFBQUEsTUFBQUUsQ0FBQSxFQUFLLEtBQUEsOEJBSWhCSixFQUFBQSxtQkFJTSxNQUFBLENBSkEsOENBQStCNEIsRUFBQSxNQUFVLFdBQUEsWUFBNkIxQixFQUFBQSxTQUFJLFFBQVEsSUFBSSxDQUFBLENBQUEsR0FDMUZGLEVBQUFBLG1CQUVNLE1BQUEsQ0FGQSxNQUFLQyxFQUFBQSxlQUFBLENBQUdDLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxTQUFTLEVBQUUsT0FBUVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sRUFBRSxJQUFLVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLE9BQVFXLFFBQUFYLENBQUEsRUFBSSxLQUFLLE1BQU0sUUFBUSxPQUFPLENBQUEsQ0FBQSxHQUN6RzRDLEVBQUFBLFdBQVFDLEVBQUEsT0FBQSxVQUFBLENBQUEsRUFBQSxPQUFBLEVBQUEsQ0FBQSxTQUlPekMsRUFBTSxnQ0FBekI2QixFQUFBQSxZQUE2Q08sR0FBQSxDQUFBLElBQUEsQ0FBQSxDQUFBLGdGQ2pFcENNLEVBQVUsQ0FDckIsT0FBUSxTQUNSLEtBQU0sR0FDUixFQUVhQyxFQUFnQixDQUMzQixPQUFRLFNBQ1IsSUFBSyxNQUNMLEtBQU0sR0FDUixFQ0NNQyxHQUFpQyxDQUFFLGNBQWVGLEVBQVEsSUFBQSxFQUUxREcsR0FBYSxPQUFPLGFBQWEsRUFFMUJDLEdBQW9CLENBQUNDLEVBQThCLEtBQU8sQ0FDckUsTUFBTUMsRUFBaUMsQ0FBRSxHQUFHSixHQUFvQixHQUFHRyxDQUFBLEVBRW5FRSxFQUFBQSxRQUFvQkosR0FBWUcsQ0FBa0IsQ0FDcEQsRUFFYUUsR0FBZ0IsSUFDcEJDLEVBQUFBLE9BQW1CTixHQUFZRCxFQUFrQiwyRENsQnhELEtBQU0sQ0FBRSxjQUFBUSxDQUFBLEVBQWtCRixHQUFBLGdCQUkxQmhELEVBQUFBLFVBQUEsRUFBQTJCLGNBRVlDLEVBQUFBLHdCQUZJdkIsRUFBQUEsTUFBQTZDLENBQUEsQ0FBYSxFQUFBLEtBQUEsbUJBQzNCLElBQVEsQ0FBUlosYUFBUUMsRUFBQSxPQUFBLFNBQUEsQ0FBQSxhQ05DWSxFQUFXLENBQ3RCLFFBQVMsVUFDVCxVQUFXLFlBQ1gsU0FBVSxXQUNWLFdBQVksYUFDWixTQUFVLFVBQ1osRUNSYUMsRUFBUyxDQUNwQixNQUFPLFNBQ1AsS0FBTSxNQUNSLGdRQ3VCRSxNQUFNdEQsRUFBUUMsRUFVUnNELEVBQWdCQyxFQUFBQSxTQUE2QixJQUNqRHhELEVBQU0sVUFBWTBDLEVBQVEsT0FBUzFDLEVBQU0sTUFBUTBDLEVBQVEsT0FBUyxNQUFBLEVBRzlEZSxFQUFjRCxXQUFTLElBQU94RCxFQUFNLFVBQVkwQyxFQUFRLEtBQU9nQixHQUFtQjFELEVBQU0sT0FBUSxnQkFJdEdFLEVBQUFBLFlBQUEyQixFQUFBQSxZQW1CWUMsRUFBQUEsd0JBUEwyQixFQUFBLEtBQVcsRUFBQSxDQVhmLGFBQVl6RCxFQUFNLEtBQ2xCLE1BQUtNLEVBQUFBLGVBQUEsb0JBQW9DTixFQUFNLFVBQVEsZUFBbUJBLEVBQU0sUUFBUSxHQUFXLENBQUFPLFFBQUFYLENBQUEsRUFBSSxRQUFRLEtBQU1XLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxNQUFNLE9BQVFXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxNQUFNLE9BQVFXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLE9BQU8sS0FBTVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBSyxJQUFJLEVBQVNJLEVBQU0sVUFBWU8sUUFBQW1DLENBQUEsRUFBUSxLQUFJLENBQUluQyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksVUFBVSxLQUFLLEdBQUcsRUFBQSxFQUFBLEdBTXZRLFNBQVVJLEVBQU0sVUFBWU8sRUFBQUEsTUFBQW1DLENBQUEsRUFBUSxRQUFVMUMsRUFBTSxTQUNwRCxLQUFNQSxFQUFNLFVBQVlPLEVBQUFBLFNBQVEsTUFBUVAsRUFBTSxLQUFPQSxFQUFNLEtBQU8sT0FDbEUsT0FBUUEsRUFBTSxVQUFZTyxFQUFBQSxNQUFBbUMsQ0FBQSxFQUFRLE1BQVExQyxFQUFNLFNBQVdPLEVBQUFBLE1BQUErQyxDQUFBLEVBQU8sTUFBUS9DLEVBQUFBLE1BQUErQyxDQUFBLEVBQU8sS0FDakYsS0FBTUMsRUFBQSxLQUFBLHFCQUdQLElBSUUsQ0FETXZELEVBQU0sb0JBSGQ2QixFQUFBQSxZQUlFVSxFQUFBLE9BSEMsS0FBTXZDLEVBQU0sS0FDWixLQUFNTyxFQUFBQSxNQUFBRSxDQUFBLEVBQUssS0FBQSw0WEN0Q2hCLE1BQU1ULEVBQVFDLEVBVVJ3RCxFQUFjRCxXQUFTLElBQU94RCxFQUFNLFVBQVkwQyxFQUFRLEtBQU9nQixHQUFtQjFELEVBQU0sT0FBUSxnQkFJdEdFLEVBQUFBLFlBQUEyQixFQUFBQSxZQTJCWUMsRUFBQUEsd0JBakJMMkIsRUFBQSxLQUFXLEVBQUEsQ0FUZixNQUFLbkQsRUFBQUEsZUFBQSxhQUE2QkMsUUFBQVgsQ0FBQSxFQUFJLFFBQVEsT0FBY1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE1BQU0sRUFBRSxLQUFZSyxFQUFBLE9BQU0sQ0FBSU0sRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFVBQVUsS0FBSyxJQUFLVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksVUFBVSxNQUFNLEVBQUUsRUFBQSxDQUFLVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksVUFBVSxLQUFLLEdBQUlXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxVQUFVLE1BQU0sR0FBRyxDQUFBLEdBTS9MLEtBQU1JLEVBQU0sS0FDWixPQUFRQSxFQUFNLFNBQVdPLFFBQUErQyxDQUFBLEVBQU8sTUFBUS9DLEVBQUFBLE1BQUErQyxDQUFBLEVBQU8sS0FDL0MsS0FBTXJELEVBQUEsVUFBWU0sUUFBQW1DLENBQUEsRUFBUSxPQUFTbkMsRUFBQUEsTUFBQW1DLENBQUEsRUFBUSxPQUFTLE1BQUEscUJBR3JELElBSUUsQ0FETTFDLEVBQU0sMkJBSGQ2QixFQUFBQSxZQUlFVSxFQUFBLE9BSEMsTUFBS2pDLEVBQUFBLGVBQUEsQ0FBR0MsV0FBSSxRQUFRLGFBQWNBLEVBQUFBLFNBQUksTUFBTSxFQUFFLE9BQVFBLFFBQUFYLENBQUEsRUFBSSxPQUFPLE1BQU0sT0FBTyxDQUFBLEVBQzlFLEtBQU1JLEVBQU0sV0FBQSx3REFJZkssRUFBQUEsbUJBRU8sT0FBQSxDQUZBLHdCQUFRRSxFQUFBQSxNQUFBWCxDQUFBLEVBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQSxDQUFBLEVBQzVCeUMsa0JBQUFyQyxFQUFNLEtBQUssRUFBQSxDQUFBLEVBTVJBLEVBQU0sNEJBSGQ2QixFQUFBQSxZQUlFVSxFQUFBLE9BSEMsTUFBS2pDLEVBQUFBLGVBQUEsQ0FBR0MsV0FBSSxRQUFRLGFBQWNBLEVBQUFBLFNBQUksTUFBTSxFQUFFLE9BQVFBLFFBQUFYLENBQUEsRUFBSSxPQUFPLEtBQUssT0FBTyxDQUFBLEVBQzdFLEtBQU1JLEVBQU0sWUFBQSx1R0M1RE4yRCxFQUFRLENBQ25CLE1BQU8sUUFDUCxLQUFNLE9BQ04sUUFBUyxVQUNULFFBQVMsU0FDWCxtUEN1QkUsTUFBTTNELEVBQVFDLEVBUVIyRCxFQUFPQyxFQUNQQyxFQUFRQyxFQUFBQSxTQUFBLEVBQ1JDLEVBQVVSLEVBQUFBLFNBQVMsSUFBTSxPQUM3QixNQUFNUyxHQUFRQyxFQUFBSixFQUFNLFVBQU4sWUFBQUksRUFBQSxLQUFBSixHQUNkLE9BQUtHLEVBRUVBLEVBQU0sS0FDVkUsR0FBU0EsRUFBSyxPQUFTQyxFQUFBQSxVQUFZLE9BQU9ELEVBQUssVUFBYSxVQUFZQSxFQUFLLFNBQVMsS0FBQSxFQUFPLE9BQVMsRUFBQSxFQUh0RixFQUtyQixDQUFDLEVBRUtFLEVBQVdiLEVBQUFBLFNBQVMsSUFDcEJ4RCxFQUFNLE9BQVMyRCxFQUFNLE1BQWM1QixFQUFLLGNBQ3hDL0IsRUFBTSxPQUFTMkQsRUFBTSxRQUFnQjVCLEVBQUssTUFDMUMvQixFQUFNLE9BQVMyRCxFQUFNLFFBQWdCNUIsRUFBSyxRQUN2Q0EsRUFBSyxXQUNiLDhCQUlENUIsRUFBQUEsbUJBbUZNLE1BQUEsQ0FsRkgsTUFBS0csRUFBQUEsZUFBQSxDQUFVTixFQUFNLGtCQUFnQ08sUUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBWVcsUUFBQVgsQ0FBQSxFQUFJLE1BQU0sT0FBY1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sT0FBTyxLQUFZVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksUUFBUSxLQUFLLElBQVksQ0FBQUksRUFBTSxTQUFXQSxFQUFNLE9BQVNPLEVBQUFBLE1BQUFvRCxDQUFBLEVBQU0sTUFBSyxDQUFJcEQsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEdBQUcsT0FBTyxRQUFRLE1BQU9XLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLE1BQU0sT0FBTyxLQUFLLEVBQUEsR0FBZSxDQUFBSSxFQUFNLFNBQVdBLEVBQU0sT0FBU08sRUFBQUEsTUFBQW9ELENBQUEsRUFBTSxLQUFJLENBQUlwRCxFQUFBQSxNQUFBWCxDQUFBLEVBQUksR0FBRyxPQUFPLFFBQVEsS0FBTVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sTUFBTSxPQUFPLElBQUksRUFBQSxJQUFlSSxFQUFNLFNBQVdBLEVBQU0sT0FBU08sRUFBQUEsTUFBQW9ELENBQUEsRUFBTSxRQUFtQixDQUFBcEQsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEdBQUcsT0FBTyxRQUFRLFFBQVNXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLE1BQU0sT0FBTyxPQUFPLE1BQXVCSSxFQUFNLFNBQVdBLEVBQU0sT0FBU08sRUFBQUEsTUFBQW9ELENBQUEsRUFBTSxRQUFtQixDQUFBcEQsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEdBQUcsT0FBTyxRQUFRLFFBQVNXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLE1BQU0sT0FBTyxPQUFPLEtBQXNCSSxFQUFNLFFBQU8sQ0FBSU8sRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEdBQUcsVUFBV1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssTUFBTSxVQUFXVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxNQUFNLEVBQUlXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLEtBQUssR0FBQSxLQTZCbHdCSSxFQUFNLG1EQVhmRyxFQUFBQSxtQkFpQk0sTUFBQSxPQWhCSCxNQUFLRyxFQUFBQSxlQUFBLG1CQUF1Q0MsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBSyxRQUFpQlcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sT0FBTyxLQUFjVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxNQUFNLFFBQVEsUUFBaUJJLEVBQU0sT0FBU08sUUFBQW9ELENBQUEsRUFBTSxPQUFTcEQsUUFBQVgsQ0FBQSxFQUFJLEdBQUcsT0FBTyxRQUFRLE1BQWVJLEVBQU0sT0FBU08sUUFBQW9ELENBQUEsRUFBTSxNQUFRcEQsUUFBQVgsQ0FBQSxFQUFJLEdBQUcsT0FBTyxRQUFRLEtBQWNJLEVBQU0sT0FBU08sUUFBQW9ELENBQUEsRUFBTSxTQUFXcEQsUUFBQVgsQ0FBQSxFQUFJLEdBQUcsT0FBTyxRQUFRLFFBQWlCSSxFQUFNLE9BQVNPLFFBQUFvRCxDQUFBLEVBQU0sU0FBV3BELEVBQUFBLE1BQUFYLENBQUEsRUFBSSxHQUFHLE9BQU8sUUFBUSxPQUFBLEtBWXhaMEMsRUFBQUEsWUFHRUMsRUFBQSxDQUZDLEtBQU04QixFQUFBLE1BQ04sS0FBTTlELEVBQUFBLE1BQUFFLENBQUEsRUFBSyxLQUFBLCtCQUloQkosRUFBQUEsbUJBa0JNLE1BQUEsQ0FqQkgsTUFBS0MsRUFBQUEsZUFBQSxzQkFBMENDLFFBQUFYLENBQUEsRUFBSSxRQUFRLEtBQWNXLFFBQUFYLENBQUEsRUFBSSxNQUFNLE9BQWdCVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxVQUFVLElBQWNvRSxFQUFBLE1BQW1ELEdBQTVDLENBQUl6RCxFQUFBQSxNQUFBWCxDQUFBLEVBQUksTUFBTSxRQUFTVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxNQUFNLElBQUksQ0FBQSxLQVF4TFMsRUFBQUEsbUJBQXdFLE9BQUEsQ0FBakUsdUJBQU9FLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLEtBQUssZ0JBQWdCLENBQUEsRUFBS3lDLGtCQUFBckMsRUFBTSxPQUFPLEVBQUEsQ0FBQSxFQU90REEsRUFBTSxVQUFRLENBQUtnRSxFQUFBLHFCQUwzQm5DLEVBQUFBLFlBTUV5QyxHQUFBLE9BTEMsd0JBQVEvRCxRQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLE1BQU0sQ0FBQSxFQUM1QixRQUFTVyxFQUFBQSxNQUFBbUMsQ0FBQSxFQUFRLE9BQ2pCLE1BQU8xQyxFQUFNLFNBQ2IsdUJBQU80RCxFQUFJLFVBQUEsRUFBQSx1RUFXUjNELEVBQUEsNkJBTlI0QixFQUFBQSxZQU9FMEMsRUFBQSxPQU5DLE1BQUtqRSxFQUFBQSxlQUFBLENBQUEsbUJBQXVCQyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksTUFBTSxPQUFRVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxNQUFNLFFBQVEsT0FBTyxDQUFBLEVBQzVFLEtBQU1XLEVBQUFBLE1BQUF3QixDQUFBLEVBQUssTUFDWCxTQUFVeEIsRUFBQUEsTUFBQThDLENBQUEsRUFBUyxXQUNuQix1QkFBT08sRUFBSSxPQUFBLEdBQ1osYUFBVyxhQUFBLG1FQUlidkQsRUFBQUEsbUJBZU0sTUFBQSxDQWZBLE1BQUtDLEVBQUFBLGVBQUEsQ0FBQSxrQkFBc0JDLEVBQUFBLFNBQUksS0FBSyxLQUFLLE9BQU0sQ0FBR1AsRUFBTSxTQUFXTyxFQUFBQSxTQUFJLEtBQUssTUFBTSxRQUFRLE9BQU8sQ0FBQSxDQUFBLEdBQ3JHaUMsRUFBQUEsV0FBUUMsRUFBQSxPQUFBLFVBQUEsQ0FBQSxFQUFBLE9BQUEsRUFBQSxFQUlBekMsRUFBTSxVQUFZZ0UsRUFBQSxxQkFGMUI3RCxFQUFBQSxtQkFXTSxNQUFBLE9BVkgsd0JBQVFJLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLElBQUksSUFBSSxDQUFBLENBQUEsR0FRcEJJLEVBQU0sd0JBTGQ2QixFQUFBQSxZQU1FeUMsR0FBQSxPQUxDLHdCQUFRL0QsUUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxNQUFNLENBQUEsRUFDNUIsUUFBU1csRUFBQUEsTUFBQW1DLENBQUEsRUFBUSxPQUNqQixNQUFPMUMsRUFBTSxTQUNiLHVCQUFPNEQsRUFBSSxVQUFBLEVBQUEsMkpDcElUWSxFQUFjLENBQ3pCLE1BQU8sUUFDUCxLQUFNLE9BQ04sTUFBTyxRQUNQLEtBQU0sT0FDTixPQUFRLFNBQ1IsT0FBUSxTQUNSLElBQUssTUFDTCxPQUFRLFNBQ1IsS0FBTSxPQUNOLE9BQVEsUUFDVixFQUVhQyxHQU1ULENBQ0YsQ0FBQ0QsRUFBWSxLQUFLLEVBQUcsQ0FDbkIsWUFBYTVFLEVBQUksT0FBTyxNQUFNLEtBQzlCLFVBQVdBLEVBQUksS0FBSyxNQUFNLFFBQVEsT0FBQSxFQUVwQyxDQUFDNEUsRUFBWSxJQUFJLEVBQUcsQ0FDbEIsWUFBYTVFLEVBQUksT0FBTyxNQUFNLE9BQU8sS0FDckMsVUFBV0EsRUFBSSxLQUFLLE1BQU0sT0FBTyxRQUFRLElBQUEsRUFFM0MsQ0FBQzRFLEVBQVksS0FBSyxFQUFHLENBQ25CLFlBQWE1RSxFQUFJLE9BQU8sTUFBTSxPQUFPLE1BQ3JDLFVBQVdBLEVBQUksS0FBSyxNQUFNLE9BQU8sUUFBUSxLQUFBLEVBRTNDLENBQUM0RSxFQUFZLElBQUksRUFBRyxDQUNsQixZQUFhNUUsRUFBSSxPQUFPLE1BQU0sT0FBTyxLQUNyQyxVQUFXQSxFQUFJLEtBQUssTUFBTSxPQUFPLFFBQVEsSUFBQSxFQUUzQyxDQUFDNEUsRUFBWSxNQUFNLEVBQUcsQ0FDcEIsWUFBYTVFLEVBQUksT0FBTyxNQUFNLE9BQU8sT0FDckMsVUFBV0EsRUFBSSxLQUFLLE1BQU0sT0FBTyxRQUFRLE1BQUEsRUFFM0MsQ0FBQzRFLEVBQVksTUFBTSxFQUFHLENBQ3BCLFlBQWE1RSxFQUFJLE9BQU8sTUFBTSxPQUFPLE9BQ3JDLFVBQVdBLEVBQUksS0FBSyxNQUFNLE9BQU8sUUFBUSxNQUFBLEVBRTNDLENBQUM0RSxFQUFZLEdBQUcsRUFBRyxDQUNqQixZQUFhNUUsRUFBSSxPQUFPLE1BQU0sT0FBTyxJQUNyQyxVQUFXQSxFQUFJLEtBQUssTUFBTSxPQUFPLFFBQVEsR0FBQSxFQUUzQyxDQUFDNEUsRUFBWSxNQUFNLEVBQUcsQ0FDcEIsWUFBYTVFLEVBQUksT0FBTyxNQUFNLE9BQU8sT0FDckMsVUFBV0EsRUFBSSxLQUFLLE1BQU0sT0FBTyxRQUFRLE1BQUEsRUFFM0MsQ0FBQzRFLEVBQVksSUFBSSxFQUFHLENBQ2xCLFlBQWE1RSxFQUFJLE9BQU8sTUFBTSxPQUFPLEtBQ3JDLFVBQVdBLEVBQUksS0FBSyxNQUFNLE9BQU8sUUFBUSxJQUFBLEVBRTNDLENBQUM0RSxFQUFZLE1BQU0sRUFBRyxDQUNwQixZQUFhNUUsRUFBSSxPQUFPLE1BQU0sT0FBTyxPQUNyQyxVQUFXQSxFQUFJLEtBQUssTUFBTSxPQUFPLFFBQVEsTUFBQSxDQUU3QyxFQUVhOEUsR0FBZ0IsQ0FDM0IsU0FBVSxLQUNWLFNBQVUsS0FDVixTQUFVLEtBQ1YsU0FBVSxLQUNWLFNBQVUsS0FDVixTQUFVLEtBQ1YsUUFBUyxHQUNYLDhKQ3pERSxNQUFNMUUsRUFBUUMsOEJBUWRFLEVBQUFBLG1CQXVCTSxNQUFBLENBdEJILE1BQUtHLEVBQUFBLGVBQUEsY0FBOEJOLEVBQU0sWUFBY0EsRUFBTSxNQUFLLENBQUlPLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxHQUFHLFFBQVEsU0FBVVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sTUFBTSxFQUFBLENBQUtXLFFBQUFYLENBQUEsRUFBSSxHQUFHLFFBQVEsT0FBTyxFQUFTVyxRQUFBWCxDQUFBLEVBQUksUUFBUSxZQUFtQlcsUUFBQVgsQ0FBQSxFQUFJLE1BQU0sT0FBY1csUUFBQVgsQ0FBQSxFQUFJLElBQUksUUFBZVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sT0FBTyxRQUFlVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksUUFBUSxFQUFFLFFBQWVXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLEVBQUUsS0FBWUksRUFBTSxPQUFLLENBQUtPLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLEtBQUssSUFBS1csRUFBQUEsTUFBQWtFLEVBQUEsRUFBb0J6RSxFQUFNLEtBQUssRUFBRSxXQUFXLEVBQVNPLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxTQUFnQlcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxRQUFlVyxRQUFBWCxDQUFBLEVBQUksZ0JBQWdCLEdBQUEsS0FrQmxkSSxFQUFNLDJCQUhkNkIsRUFBQUEsWUFJRVUsRUFBQSxPQUhDLHdCQUFRaEMsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssT0FBTyxJQUFLSSxFQUFNLE9BQVNPLEVBQUFBLE1BQUFrRSxFQUFBLEVBQW9CekUsRUFBTSxLQUFLLEVBQUUsU0FBUyxDQUFBLEVBQ3RGLEtBQU1BLEVBQU0sV0FBQSx3REFJZkssRUFBQUEsbUJBQXNELE9BQUEsQ0FBL0MsTUFBS0MsRUFBQUEsZUFBQSxDQUFHQyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksUUFBUSxDQUFBLENBQUEsRUFBTXlDLGtCQUFBckMsRUFBTSxLQUFLLEVBQUEsQ0FBQSxDQUFBLDRHQ2pDOUMsTUFBTUEsRUFBUUMsOEJBTWRFLEVBQUFBLG1CQW9CTSxNQUFBLENBbkJILE1BQUtHLEVBQUFBLGVBQUEsOEJBQThDQyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxNQUFNLFFBQVEsTUFBYVcsUUFBQVgsQ0FBQSxFQUFJLFFBQVEsWUFBbUJXLFFBQUFYLENBQUEsRUFBSSxNQUFNLE9BQWNXLFFBQUFYLENBQUEsRUFBSSxJQUFJLFFBQWVXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxTQUFnQlcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxRQUFlVyxRQUFBWCxDQUFBLEVBQUksZ0JBQWdCLEdBQUEsS0FXM08wQyxFQUFBQSxZQUdFQyxFQUFBLENBRkMsd0JBQVFoQyxRQUFBWCxDQUFBLEVBQUksS0FBSyxPQUFPLEdBQUcsQ0FBQSxFQUMzQixLQUFNVyxFQUFBQSxNQUFBd0IsQ0FBQSxFQUFLLFVBQUEsMkJBR2QxQixFQUFBQSxtQkFFTSxNQUFBLENBRkEsTUFBS0MsRUFBQUEsZUFBQSxDQUFHQyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksUUFBUSxDQUFBLENBQUEsR0FDeEJTLEVBQUFBLG1CQUFtRCxPQUFBLEtBQUFnQyxFQUFBQSxnQkFBMUNyQyxFQUFNLEtBQUssRUFBRyx3QkFBcUIsQ0FBQSxDQUFBLDBHQzdCaERHLEVBQUFBLG1CQXNCTSxNQUFBLENBckJILE1BQUtHLEVBQUFBLGVBQUEsK0JBQStDQyxRQUFBWCxDQUFBLEVBQUksR0FBRyxVQUFpQlcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxRQUFlVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxNQUFNLFVBQWlCVyxRQUFBWCxDQUFBLEVBQUksUUFBUSxZQUFtQlcsUUFBQVgsQ0FBQSxFQUFJLE1BQU0sT0FBY1csUUFBQVgsQ0FBQSxFQUFJLElBQUksUUFBZVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sT0FBTyxRQUFlVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksUUFBUSxFQUFFLFFBQWVXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLEVBQUUsS0FBWVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFNBQWdCVyxRQUFBWCxDQUFBLEVBQUksZ0JBQWdCLEdBQUEsS0FleFYwQyxFQUFBQSxZQUdFQyxFQUFBLENBRkMsd0JBQVFoQyxRQUFBWCxDQUFBLEVBQUksS0FBSyxPQUFPLEdBQUcsQ0FBQSxFQUMzQixLQUFNVyxFQUFBQSxNQUFBd0IsQ0FBQSxFQUFLLFFBQUEsMkJBR2QxQixFQUFBQSxtQkFBcUQsT0FBQSxDQUE5QyxNQUFLQyxFQUFBQSxlQUFBLENBQUdDLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLENBQUEsQ0FBQSxFQUFHLG1CQUFnQixDQUFBLENBQUEsOEtDZmhELE1BQU1JLEVBQVFDLDhCQU1kRSxFQUFBQSxtQkErQkssS0FBQSxDQS9CQSxNQUFLRyxFQUFBQSxlQUFBLENBQUEsb0JBQXdCQyxFQUFBQSxTQUFJLFFBQVEsS0FBTUEsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE1BQU0sT0FBUVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLElBQUksUUFBU1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLGFBQWEsR0FBRyxDQUFBLENBQUEsSUFDekdNLEVBQUFBLFVBQUEsRUFBQSxFQUFBQyxFQUFBQSxtQkE2Qld3RSw2QkEzQmdCM0UsRUFBTSxZQUFXLENBQWxDNEUsRUFBT0Msb0RBRFQsSUFBQUQsRUFBTSxLQUFBLEdBR1p2RSxFQUFBQSxtQkFpQkssS0FBQSxDQWpCQSx3QkFBUUUsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxNQUFNLENBQUEsQ0FBQSxHQUt2QmdGLEVBQU0sbUJBSmQvQyxFQUFBQSxZQU9tQjZCLEdBQUEsT0FOaEIsd0JBQVFuRCxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLE9BQVFXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLE1BQU0sUUFBUSxPQUFPLENBQUEsRUFDNUQsYUFBWWdGLEVBQU0sV0FBYSxPQUMvQixLQUFNQSxFQUFNLEdBQUEscUJBR2IsSUFBaUIsQ0FBZEUsRUFBQUEsZ0JBQUF6QyxFQUFBQSxnQkFBQXVDLEVBQU0sS0FBSyxFQUFBLENBQUEsQ0FBQSw0REFHaEJ6RSxFQUFBQSxtQkFNTyxPQUFBLE9BTEosd0JBQVFJLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLEtBQUssUUFBU1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssTUFBTSxRQUFRLE9BQU8sQ0FBQSxFQUM3RCxhQUFZZ0YsRUFBTSxXQUFhLE1BQUEsRUFHN0J2QyxFQUFBQSxnQkFBQXVDLEVBQU0sS0FBSyxFQUFBLEdBQUF4RSxFQUFBLEVBQUEsS0FJUkosRUFBTSxhQUFlNkUsRUFBUTdFLEVBQU0sWUFBWSxPQUFNLGlCQUEvREcscUJBS0ssS0FBQTRFLEdBQUEsQ0FKSHpDLEVBQUFBLFlBR0VDLEVBQUEsQ0FGQyxLQUFNaEMsRUFBQUEsTUFBQXdCLENBQUEsRUFBSyxZQUNYLEtBQU14QixFQUFBQSxNQUFBRSxDQUFBLEVBQUssS0FBQSw2WkNoQnBCLE1BQU1ULEVBQVFDLEVBYVJzRCxFQUFnQkMsRUFBQUEsU0FBNkIsSUFDakR4RCxFQUFNLFVBQVkwQyxFQUFRLE9BQVMxQyxFQUFNLE1BQVEwQyxFQUFRLE9BQVMsTUFBQSxFQUc5RGUsRUFBY0QsV0FBUyxJQUFPeEQsRUFBTSxVQUFZMEMsRUFBUSxLQUFPZ0IsR0FBbUIxRCxFQUFNLE9BQVEsZ0JBSXRHRSxFQUFBQSxZQUFBMkIsRUFBQUEsWUFpQ1lDLEVBQUFBLHdCQWZMMkIsRUFBQSxLQUFXLEVBQUEsQ0FqQmYsTUFBS25ELEVBQUFBLGVBQUEsZUFBK0JOLEVBQU0sVUFBUSxlQUFtQkEsRUFBTSxRQUFRLEdBQVVBLEVBQU0sVUFBWU8sRUFBQUEsTUFBQW1DLENBQUEsRUFBUSxLQUFJLENBQUluQyxRQUFBWCxDQUFBLEVBQUksUUFBUSxXQUFXLEVBQUEsQ0FBS1csRUFBQUEsU0FBSSxRQUFRLElBQUksRUFBU1AsRUFBTSxVQUFZTyxRQUFBbUMsQ0FBQSxFQUFRLEtBQU9uQyxRQUFBWCxDQUFBLEVBQUksVUFBVSxLQUFLLElBQUcsR0FBYUssRUFBQSxPQUFTTSxRQUFBRyxFQUFBLEVBQVksTUFBaUIsQ0FBQUgsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxTQUFVVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksUUFBUSxFQUFFLElBQUtXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLEVBQUUsS0FBTVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sT0FBTyxPQUFPLEVBQWEsQ0FBQVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxTQUFVVyxRQUFBWCxDQUFBLEVBQUksUUFBUSxFQUFFLElBQUtXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLEVBQUUsSUFBS1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sT0FBTyxJQUFJLEVBQVNXLFFBQUFYLENBQUEsRUFBSSxNQUFNLE9BQWNXLFFBQUFYLENBQUEsRUFBSSxNQUFNLE9BQWNXLFFBQUFYLENBQUEsRUFBSSxJQUFJLEtBQVlXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLEtBQUssZ0JBQUEsR0FhbGpCLFNBQVVJLEVBQU0sVUFBWU8sRUFBQUEsTUFBQW1DLENBQUEsRUFBUSxRQUFVMUMsRUFBTSxTQUNwRCxLQUFNQSxFQUFNLFVBQVlPLEVBQUFBLFNBQVEsTUFBUVAsRUFBTSxLQUFPQSxFQUFNLEtBQU8sT0FDbEUsT0FBUUEsRUFBTSxVQUFZTyxFQUFBQSxNQUFBbUMsQ0FBQSxFQUFRLE1BQVExQyxFQUFNLFNBQVdPLEVBQUFBLE1BQUErQyxDQUFBLEVBQU8sTUFBUS9DLEVBQUFBLE1BQUErQyxDQUFBLEVBQU8sS0FDakYsS0FBTUMsRUFBQSxLQUFBLHFCQUdQLElBSUUsQ0FETXZELEVBQU0sMkJBSGQ2QixFQUFBQSxZQUlFVSxFQUFBLE9BSEMsS0FBTXZDLEVBQU0sWUFDWixLQUFNQyxFQUFBLE9BQVNNLEVBQUFBLE1BQUFHLEVBQUEsRUFBWSxNQUFRSCxFQUFBQSxNQUFBRSxDQUFBLEVBQUssTUFBUUYsRUFBQUEsTUFBQUUsQ0FBQSxFQUFLLEtBQUEsdURBRXREcUUsRUFBQUEsZ0JBQUEsSUFFRnpDLGtCQUFHckMsRUFBTSxLQUFLLEVBQUcsSUFFakIsQ0FBQSxFQUdRQSxFQUFNLDRCQUhkNkIsRUFBQUEsWUFJRVUsRUFBQSxPQUhDLEtBQU12QyxFQUFNLGFBQ1osS0FBTUMsRUFBQSxPQUFTTSxFQUFBQSxNQUFBRyxFQUFBLEVBQVksTUFBUUgsRUFBQUEsTUFBQUUsQ0FBQSxFQUFLLE1BQVFGLEVBQUFBLE1BQUFFLENBQUEsRUFBSyxLQUFBLGlTQ2pFMUQsTUFBTVQsRUFBUUMsRUFPUndELEVBQWNELFdBQVMsSUFBT3hELEVBQU0sVUFBWTBDLEVBQVEsS0FBT2dCLEdBQW1CMUQsRUFBTSxPQUFRLGdCQUl0R0UsRUFBQUEsWUFBQTJCLEVBQUFBLFlBZ0JZQyxFQUFBQSx3QkFMTDJCLEVBQUEsS0FBVyxFQUFBLENBVmYsTUFBS25ELEVBQUFBLGVBQUEsb0JBQXFDLENBQUFDLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLGFBQWNXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLE9BQU8sS0FBTVcsUUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBSyxJQUFJLEVBQVNJLEVBQU0sVUFBWU8sRUFBQUEsTUFBQW9DLENBQUEsRUFBYyxLQUFJLENBQUlwQyxRQUFBWCxDQUFBLEVBQUksVUFBVSxLQUFLLEdBQUcsRUFBQSxHQUFjSSxFQUFNLFVBQVlPLFFBQUFvQyxDQUFBLEVBQWMsSUFBRyxDQUFJcEMsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sT0FBTyxFQUFBLEdBQWUsQ0FBQVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxVQUFVLENBQUEsR0FPdFMsU0FBVUksRUFBTSxVQUFZTyxFQUFBQSxNQUFBb0MsQ0FBQSxFQUFjLFFBQVUzQyxFQUFNLFNBQzFELEtBQU1BLEVBQU0sVUFBWU8sRUFBQUEsU0FBYyxNQUFRUCxFQUFNLEtBQU9BLEVBQU0sS0FBTyxPQUN4RSxLQUFNQyxFQUFBLFVBQVlNLFFBQUFvQyxDQUFBLEVBQWMsT0FBU3BDLEVBQUFBLE1BQUFvQyxDQUFBLEVBQWMsT0FBUyxNQUFBLHFCQUdqRSxJQUVPLENBRlB0QyxFQUFBQSxtQkFFTyxPQUFBLENBRkEsZ0NBQWlCRSxFQUFBQSxNQUFBWCxDQUFBLEVBQUksUUFBUSxLQUFNVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksTUFBTSxPQUFRVyxFQUFBQSxTQUFJLE1BQU0sTUFBTSxDQUFBLENBQUEsRUFDdkU4QixrQkFBQXJDLEVBQU0sS0FBSyxFQUFBLENBQUEsQ0FBQSw2UkM5QmxCLE1BQU1nRixFQUFlOUMsRUFBQUEsdUJBQXNDLEVBRXJEK0MsRUFBZUosR0FBa0IsQ0FDckNHLEVBQWEsTUFBUUgsQ0FDdkIsOEJBSUExRSxFQUFBQSxtQkE0Q00sTUFBQSxDQTNDSCxNQUFLRyxFQUFBQSxlQUFBLHlCQUF5Q0MsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEdBQUcsUUFBUSxRQUFlVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxPQUFPLEtBQVlXLFFBQUFYLENBQUEsRUFBSSxRQUFRLEtBQVlXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLE9BQU8sSUFBV1csUUFBQVgsQ0FBQSxFQUFJLElBQUksUUFBZVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFNBQVMsR0FBRyxLQUFZVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksUUFBUSxLQUFLLE9BQUEsTUFXbE9NLEVBQUFBLFVBQUEsRUFBQSxFQUFBQyxFQUFBQSxtQkErQlN3RSxXQUFBLEtBQUFPLEVBQUFBLFdBWmdCakYsRUFBQSxLQUFJLENBQW5Ca0YsRUFBS04sbUJBbkJmMUUsRUFBQUEsbUJBK0JTLFNBQUEsQ0E5Qk4sTUFBS0csRUFBQUEsZUFBQSw2QkFBaUR1RSxJQUFVRyxFQUFBLE9BQTBCekUsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEdBQUcsUUFBUSxRQUFTVyxFQUFBQSxTQUFJLEtBQUssTUFBTSxRQUFRLFFBQVNBLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLE1BQU0sRUFBMkIsQ0FBQSxXQUFBVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxNQUFNLFFBQVEsT0FBTyxFQUFXVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxLQUFLLElBQWFXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLE9BQU8sS0FBY1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxHQUFZVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLFNBQWtCVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksUUFBUSxFQUFFLEtBQWNXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLEVBQUUsUUFBaUJXLFFBQUFYLENBQUEsRUFBSSxnQkFBZ0IsSUFBYVcsUUFBQVgsQ0FBQSxFQUFJLE1BQU0sSUFBQSxHQWNwYyxhQUFZdUYsRUFBSSxXQUFhLE9BQzdCLElBQUtBLEVBQUksTUFDVCxRQUFLQyxHQUFFSCxFQUFZSixDQUFLLEVBQ3pCLEtBQUssUUFBQSxHQUdMeEUsRUFBQUEsbUJBRU8sT0FBQSxDQUZBLHdCQUFRRSxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLGdCQUFnQixDQUFBLENBQUEsRUFDeEN5QyxrQkFBQThDLEVBQUksS0FBSyxFQUFBLENBQUEsRUFLTkEsRUFBSSxPQUFTQSxFQUFJLE1BQUssaUJBRjlCaEYsRUFBQUEsbUJBS08sT0FBQSxPQUpKLHdCQUFRSSxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLGdCQUFnQixDQUFBLENBQUEsRUFFeEMsS0FDRXlDLGtCQUFHOEMsRUFBSSxLQUFLLEVBQUcsS0FDbEIsQ0FBQSxrR0M3RE9FLEdBQVksQ0FDdkIsV0FBWSxTQUNaLGNBQWUsZ0JBQ2YsV0FBWSxRQUNkLHNOQ21CRSxNQUFNckYsRUFBUUMsRUFRUndELEVBQWNELEVBQUFBLFNBQWlELElBQ25FeEQsRUFBTSxLQUFPMEQsSUFBbUIxRCxFQUFNLE9BQVNxRixHQUFVLGNBQWdCMUMsRUFBYyxJQUFvQixnQkFLN0d6QyxFQUFBQSxZQUFBMkIsRUFBQUEsWUFzQ1lDLEVBQUFBLHdCQXJCTDJCLEVBQUEsS0FBVyxFQUFBLENBaEJmLE1BQUtuRCxFQUFBQSxlQUFBLGFBQTZCQyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxNQUFNLElBQVdXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLEtBQUssSUFBV1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sT0FBTyxLQUFZVyxRQUFBWCxDQUFBLEVBQUksUUFBUSxLQUFZVyxRQUFBWCxDQUFBLEVBQUksSUFBSSxLQUFZVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksUUFBUSxLQUFLLElBQVdXLFFBQUFYLENBQUEsRUFBSSxNQUFNLEtBQVlXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxNQUFNLEVBQUUsS0FBWVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssVUFBVSxPQUFjSyxFQUFBLE9BQVNNLEVBQUFBLE1BQUE4RSxFQUFBLEVBQVUsZUFBYSxZQUF1QnBGLEVBQUEsT0FBU00sUUFBQThFLEVBQUEsRUFBVSxZQUFjcEYsRUFBQSxVQUFRLFVBQUEsR0FjOVcsS0FBTUEsRUFBQSxLQUNOLEtBQU13RCxFQUFBLFFBQWdCbEQsUUFBQW9DLENBQUEsRUFBYyxPQUFTcEMsRUFBQUEsTUFBQW9DLENBQUEsRUFBYyxPQUFTLE1BQUEscUJBR3JFLElBS0UsQ0FETTFDLEVBQUEsb0JBSlI0QixFQUFBQSxZQUtFVSxFQUFBLE9BSkMsTUFBS2pDLEVBQUFBLGVBQUEsQ0FBR0MsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxJQUFLVyxFQUFBQSxTQUFJLEtBQUssT0FBTyxHQUFHLENBQUEsRUFDOUMsS0FBTU4sRUFBQSxLQUNOLEtBQU1NLEVBQUFBLE1BQUFFLENBQUEsRUFBSyxLQUFBLCtEQUlkSixFQUFBQSxtQkFXTSxNQUFBLENBWEEsTUFBS0MsRUFBQUEsZUFBQSxDQUFHQyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksTUFBTSxNQUFPVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksUUFBUSxLQUFNVyxRQUFBWCxDQUFBLEVBQUksS0FBSyxVQUFVLE9BQVFXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxJQUFJLElBQUksQ0FBQSxDQUFBLEdBQ3RGUyxFQUFBQSxtQkFFTSxNQUFBLENBRkEsd0JBQVFFLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLEtBQUssaUJBQWtCVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxNQUFNLFFBQVEsT0FBTyxDQUFBLENBQUEsb0JBQ3ZFSyxFQUFBLE9BQU8sRUFBQSxDQUFBLEVBS0pBLEVBQUEsMkJBRlJFLEVBQUFBLG1CQUtNLE1BQUEsT0FKSCx3QkFBUUksRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxRQUFTVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxNQUFNLFFBQVEsT0FBTyxDQUFBLENBQUEsb0JBRzNESyxFQUFBLFdBQVcsRUFBQSxDQUFBLG9IQ1BkcUYsR0FBa0IsR0FDbEJDLEdBQWlCLEVBQ2pCQyxHQUFtQiwrV0FoRHpCLE1BQU14RixFQUFRQyxFQWVSMkQsRUFBT0MsRUFFUDRCLEVBQWVyRSxFQUFBQSxJQUEyQixJQUFJLEVBQzlDc0UsRUFBZXRFLEVBQUFBLElBQVksQ0FBQyxFQUM1QnVFLEVBQW1CdkUsRUFBQUEsSUFBWSxDQUFDLEVBQ2hDd0UsRUFBVXhFLEVBQUFBLElBQTJCLElBQUksRUFDekN5RSxFQUFhekUsRUFBQUEsSUFBWSxDQUFDLEVBQzFCMEUsRUFBZTFFLEVBQUFBLElBQWEsRUFBSSxFQUNoQzJFLEVBQWMzRSxFQUFBQSxJQUFhLEVBQUssRUFDaEM0RSxFQUFjNUUsRUFBQUEsSUFBYSxFQUFJLEVBQy9CNkUsRUFBZ0I3RSxFQUFBQSxJQUFpQyxJQUFJLEVBQ3JEOEUsRUFBUzlFLEVBQUFBLElBQW1CLEVBQUUsRUFDOUIrRSxFQUFlL0UsRUFBQUEsSUFBYyxFQUFFLEVBQy9CZ0YsRUFBZWhGLEVBQUFBLElBQTZCLElBQUksRUFFaERpRixFQUFjN0MsRUFBQUEsU0FBUyxJQUFNbUMsRUFBaUIsTUFBUSxDQUFDLEVBQ3ZEVyxFQUFvQjlDLEVBQUFBLFNBQVMsSUFBTStDLEVBQWdCLE1BQVFmLElBQVllLEVBQWdCLE1BQVEsR0FBS2hCLEVBQU0sRUFDMUdnQixFQUFrQi9DLEVBQUFBLFNBQVMsSUFBT3hELEVBQU0sUUFBVXdHLEVBQVcsTUFBUUEsRUFBVyxNQUFReEcsRUFBTSxPQUFRLEVBQ3RHeUcsRUFBZ0JqRCxFQUFBQSxTQUFTLElBQU1nRCxFQUFXLE1BQVEsQ0FBQyxFQUNuREEsRUFBYWhELEVBQUFBLFNBQVMsSUFBTSxDQUNoQyxHQUFJLENBQUMwQyxFQUFPLE1BQU0sT0FBUSxNQUFPLEdBQ2pDLEdBQUksQ0FBQ2xHLEVBQU0sZUFBZ0IsT0FBT2tHLEVBQU8sTUFBTSxPQUUvQyxNQUFNUSxFQUFXcEIsSUFBV1ksRUFBTyxNQUFNLE9BQVMsR0FDNUNTLEVBQWVqQixFQUFhLE1BQVFnQixFQUNwQ0UsRUFBVyxLQUFLLE1BQU1ELEVBQWVkLEVBQVcsS0FBSyxFQUczRCxPQUZrQmMsRUFBZWQsRUFBVyxNQUV6QmUsRUFBVyxFQUFJQSxDQUNwQyxDQUFDLEVBTUtDLEVBQWVDLEdBQXFCLENBQ3hDLElBQUlDLEVBQVksR0FFaEIsT0FBSUQsSUFBYW5CLEVBQWlCLFFBQU9vQixFQUFZLDRCQUNqRCxLQUFLLElBQUlwQixFQUFpQixNQUFRbUIsQ0FBUSxJQUFNLElBQUdDLEVBQVksOEJBRTVEQSxDQUNULEVBRU1DLEVBQWEsSUFBTSxDQUNsQnZCLEVBQWEsUUFFbEJDLEVBQWEsTUFBUUQsRUFBYSxNQUFNLFlBQ3hDSSxFQUFXLE1BQVFKLEVBQWEsTUFBTSxZQUN0Q08sRUFBWSxNQUFRTixFQUFhLE1BQVFHLEVBQVcsTUFDdEQsRUFFTW9CLEVBQWdCLElBQU0sQ0FDMUIsTUFBTUMsRUFBVSxDQUNkLEtBQU16QixHQUFBLFlBQUFBLEVBQWMsTUFDcEIsV0FBWSxrQkFDWixVQUFXLENBQUEsRUFHYlEsRUFBYyxNQUFRLElBQUkscUJBQXNCa0IsR0FBWSxDQUMxRCxJQUFJQyxFQUE4QixDQUFBLEVBRWxDRCxFQUFRLFFBQVNFLEdBQVUsQ0FDekIsTUFBTUMsR0FBYXBCLEVBQU8sTUFBTSxRQUFRbUIsRUFBTSxNQUFxQixFQUUvREEsRUFBTSxnQkFDUkQsRUFBa0IsS0FBS0UsRUFBVSxFQUNqQ25CLEVBQWEsTUFBTSxLQUFLbUIsRUFBVSxHQUVsQ25CLEVBQWEsTUFBUUEsRUFBYSxNQUFNLE9BQVFvQixJQUFVQSxLQUFVRCxFQUFVLEVBR2hGbkIsRUFBYSxNQUFNLEtBQUssQ0FBQ3FCLEdBQUdDLEtBQU1ELEdBQUlDLEVBQUMsQ0FDekMsQ0FBQyxFQUVEM0IsRUFBYSxNQUFRSyxFQUFhLE1BQU0sU0FBUyxDQUFDLEVBQ2xESixFQUFZLE1BQVFJLEVBQWEsTUFBTSxTQUFTRCxFQUFPLE1BQU0sT0FBUyxDQUFDLEVBRW5Fa0IsRUFBa0IsT0FBUyxHQUFHeEQsRUFBSyxvQkFBcUJ3RCxDQUFpQixDQUMvRSxFQUFHRixDQUFPLEVBRVZoQixFQUFPLE1BQU0sUUFBU3dCLEdBQVUsQ0FDMUJ6QixFQUFjLE9BQU9BLEVBQWMsTUFBTSxRQUFReUIsQ0FBSyxDQUM1RCxDQUFDLENBQ0gsRUFFTUMsRUFBYyxJQUFNLENBQ3hCLE1BQU1DLEVBQW1CLElBQU0sQ0FDekJuQyxFQUFhLFFBQVUsT0FFM0JTLEVBQU8sTUFBUSxNQUFNLEtBQUtULEVBQWEsTUFBTSxRQUFRLEVBQ3JEd0IsRUFBQSxFQUNGLEVBRUFiLEVBQWEsTUFBUSxJQUFJLGlCQUFpQndCLENBQWdCLEVBRXREbkMsRUFBYSxPQUFPVyxFQUFhLE1BQU0sUUFBUVgsRUFBYSxNQUFPLENBQUUsVUFBVyxHQUFNLENBQzVGLEVBRU1vQyxFQUFrQkMsR0FBbUIsQ0FDekMsR0FBSXJDLEVBQWEsUUFBVSxLQUFNLE9BRWpDLE1BQU1zQyxFQUFxQjdCLEVBQU8sTUFBTUEsRUFBTyxNQUFNLE9BQVMsQ0FBQyxFQUFFLFdBRTNEOEIsRUFEYUYsRUFBU0MsRUFBY3RCLEVBQWMsT0FDbkJkLEVBQWlCLE1BRXREQSxFQUFpQixNQUFRcUMsRUFBa0JyQyxFQUFpQixNQUFRLEVBQUlBLEVBQWlCLE1BQVEsRUFFakdGLEVBQWEsTUFBTSxTQUFTLENBQzFCLFNBQVUsU0FDVixLQUFNcUMsQ0FBQSxDQUNQLEVBQ0RHLEdBQVdELENBQWUsQ0FDNUIsRUFFTUUsRUFBZSxJQUFNLENBQ3pCLEdBQUkvQixFQUFhLE1BQU0sU0FBVyxFQUFHLE9BRXJDLE1BQU1nQyxFQUFvQmhDLEVBQWEsTUFBTUEsRUFBYSxNQUFNLE9BQVMsQ0FBQyxFQUFJLEVBRTlFMEIsRUFBZTNCLEVBQU8sTUFBTWlDLENBQVMsRUFBRSxVQUFVLENBQ25ELEVBRU1DLEVBQW1CLElBQU0sT0FDN0IsR0FBSWpDLEVBQWEsTUFBTSxTQUFXLEVBQUcsT0FFckMsTUFBTWtDLEVBQXdCbEMsRUFBYSxNQUFNLENBQUMsRUFBSUEsRUFBYSxNQUFNLE9BRXpFMEIsSUFBZTNELEVBQUFnQyxFQUFPLE1BQU1tQyxDQUFhLElBQTFCLFlBQUFuRSxFQUE2QixhQUFjLENBQUMsQ0FDN0QsRUFFTW9FLEVBQWdCLElBQU0sQ0FDMUIsR0FBSW5DLEVBQWEsTUFBTSxTQUFXLEVBQUcsT0FFckMsTUFBTWdDLEVBQW9CaEMsRUFBYSxNQUFNLE9BQVMsRUFBSUEsRUFBYSxNQUFNLENBQUMsRUFBSUEsRUFBYSxNQUFNLENBQUMsRUFBSSxFQUUxRzBCLEVBQWUzQixFQUFPLE1BQU1pQyxDQUFTLEVBQUUsVUFBVSxDQUNuRCxFQUVNSSxHQUFvQixJQUFNLENBQzlCLEdBQUlwQyxFQUFhLE1BQU0sU0FBVyxFQUFHLE9BRXJDLE1BQU1rQyxFQUF3QmxDLEVBQWEsTUFBTSxDQUFDLEVBQUksRUFFdEQwQixFQUFlM0IsRUFBTyxNQUFNbUMsQ0FBYSxFQUFFLFVBQVUsQ0FDdkQsRUFFTUosR0FBY0QsR0FBNkIsQ0FDL0MsR0FBSSxDQUFDcEMsRUFBUSxPQUFTVyxFQUFnQixPQUFTQyxFQUFXLE1BQU8sT0FHakUsTUFBTWdDLEVBRGdCakMsRUFBZ0IsTUFBUSxJQUFNLEdBRWpDeUIsRUFDYixLQUFLLE1BQU16QixFQUFnQixNQUFRLENBQUMsRUFBSSxFQUN4QyxLQUFLLE1BQU1BLEVBQWdCLE1BQVEsQ0FBQyxFQUUxQ1gsRUFBUSxNQUFNLFNBQVMsQ0FDckIsU0FBVSxTQUNWLEtBQU1TLEVBQVksTUFBUW1DLEVBQVksR0FBS25DLEVBQVksTUFBUW1DLElBQWNoRCxHQUFXRCxHQUFBLENBQ3pGLENBQ0gsRUFFQWtELE9BQUFBLEVBQUFBLFVBQVUsSUFBTSxDQUNWaEQsRUFBYSxRQUFVLE9BRTNCUyxFQUFPLE1BQVEsTUFBTSxLQUFLVCxFQUFhLE1BQU0sUUFBUSxFQUVyRHVCLEVBQUEsRUFDQUMsRUFBQSxFQUNBVSxFQUFBLEVBRUksUUFDRixPQUFPLGlCQUFpQixTQUFVWCxDQUFVLEVBRWhELENBQUMsRUFFRDBCLEVBQUFBLFlBQVksSUFBTSxVQUNoQnhFLEVBQUErQixFQUFjLFFBQWQsTUFBQS9CLEVBQXFCLGNBQ3JCeUUsRUFBQXZDLEVBQWEsUUFBYixNQUFBdUMsRUFBb0IsYUFDcEIsT0FBTyxvQkFBb0IsU0FBVTNCLENBQVUsQ0FDakQsQ0FBQyx3QkFJRDdHLEVBQUFBLG1CQW9KVSxVQUFBLENBbkpQLE1BQUtHLEVBQUFBLGVBQUEsaUJBQWlDQyxRQUFBWCxDQUFBLEVBQUksU0FBUyxTQUFnQlcsUUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBWVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssVUFBVSxPQUFjVyxRQUFBWCxDQUFBLEVBQUksSUFBSSxJQUFXVyxRQUFBWCxDQUFBLEVBQUksTUFBTSxRQUFBLEdBUTFKLElBQUksYUFBQSxHQUlNLENBQUFJLEVBQU0sWUFBY2dHLFNBQWdCaEcsRUFBTSxxQkFGcERHLEVBQUFBLG1CQXlDVSxVQUFBLE9BeENQLE1BQUtHLEVBQUFBLGVBQUEsQ0FBR0MsUUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBTUksRUFBTSxNQUFRTyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksTUFBTSxRQUFVVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksTUFBTSxJQUFLVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksTUFBTSxPQUFRVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksTUFBTSxJQUFJLENBQUEsQ0FBQSxHQUtwR0ksRUFBTSxxQkFGZEcsRUFBQUEsbUJBaUJNLE1BQUEsT0FoQkgsTUFBS0csRUFBQUEsZUFBQSxDQUFHQyxFQUFBQSxTQUFJLFFBQVEsS0FBTUEsUUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBTVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE1BQU0sT0FBUVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLElBQUksR0FBRyxDQUFBLENBQUEsR0FLL0RJLEVBQU0scUJBRmRHLEVBQUFBLG1CQUtNLE1BQUEsT0FKSCx3QkFBUUYsRUFBQSxZQUFjTSxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLFdBQWFXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLEtBQUssVUFBVSxDQUFBLENBQUEsRUFHdkV5QyxFQUFBQSxnQkFBQXJDLEVBQU0sS0FBSyxFQUFBLENBQUEsK0JBS1JBLEVBQU0sd0JBRmRHLEVBQUFBLG1CQUtNLE1BQUEsT0FKSCx3QkFBUUksRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxRQUFTVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxNQUFNLFFBQVEsT0FBTyxDQUFBLENBQUEsRUFHM0R5QyxFQUFBQSxnQkFBQXJDLEVBQU0sUUFBUSxFQUFBLENBQUEsaUVBTVpBLEVBQU0sWUFBY2dHLEVBQUEscUJBRjdCN0YsRUFBQUEsbUJBaUJNLE1BQUEsT0FoQkgsd0JBQVFJLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLEtBQU1XLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxNQUFNLE9BQVFXLEVBQUFBLFNBQUksSUFBSSxHQUFHLENBQUEsQ0FBQSxHQUd4RCtCLEVBQUFBLFlBS0VpQyxFQUFBLENBSkMsU0FBVXVCLEVBQUEsTUFDVixLQUFNdkYsRUFBQUEsTUFBQXdCLENBQUEsRUFBSyxhQUNYLFNBQVV4QixFQUFBQSxNQUFBOEMsQ0FBQSxFQUFTLFNBQ25CLFFBQUt1RixFQUFBLENBQUEsSUFBQUEsRUFBQSxDQUFBLEVBQUF4RCxHQUFFbkYsRUFBQSxlQUFpQm1JLEVBQUEsRUFBcUJHLEdBQUEsRUFBaUIseUNBR2pFakcsRUFBQUEsWUFLRWlDLEVBQUEsQ0FKQyxTQUFVd0IsRUFBQSxNQUNWLEtBQU14RixFQUFBQSxNQUFBd0IsQ0FBQSxFQUFLLGNBQ1gsU0FBVXhCLEVBQUFBLE1BQUE4QyxDQUFBLEVBQVMsU0FDbkIsUUFBS3VGLEVBQUEsQ0FBQSxJQUFBQSxFQUFBLENBQUEsRUFBQXhELEdBQUVuRixFQUFBLGVBQWlCaUksRUFBQSxFQUFpQkksRUFBQSxFQUFhLDJHQUs3RDlGLEVBQUFBLFdBQW9CQyxFQUFBLE9BQUEsT0FBQSxDQUFBLEVBQUEsT0FBQSxFQUFBLEVBRXBCcEMsRUFBQUEsbUJBMkZNLE1BQUEsQ0EzRkEsTUFBS0MsRUFBQUEsZUFBQSxDQUFHQyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksU0FBUyxTQUFVVyxRQUFBWCxDQUFBLEVBQUksUUFBUSxJQUFJLENBQUEsQ0FBQSxHQUNuRFMsRUFBQUEsbUJBYUssS0FBQSxDQVpGLE1BQUtDLEVBQUFBLGVBQUEsMkJBQW1EQyxRQUFBWCxDQUFBLEVBQUksUUFBUSxLQUFnQlcsUUFBQVgsQ0FBQSxFQUFJLElBQUksSUFBZVcsUUFBQVgsQ0FBQSxFQUFJLGFBQWEsSUFBZVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFNBQVMsRUFBRSxPQUFrQlcsUUFBQVgsQ0FBQSxFQUFJLFVBQVUsSUFBZVcsUUFBQVgsQ0FBQSxFQUFJLEtBQUssRUFBQSxXQVMvTSxlQUFKLElBQUk2RixDQUFBLEdBRUpqRCxFQUFBQSxXQUFRQyxFQUFBLE9BQUEsVUFBQSxDQUFBLEVBQUEsT0FBQSxFQUFBLENBQUEsS0FnQkZ4QyxFQUFBLGdCQUFrQkEsRUFBQSxTQUFXdUcsRUFBQSxNQUFVLGlCQWIvQ3JHLEVBQUFBLG1CQTBDTSxNQUFBLE9BekNILE1BQUtHLEVBQUFBLGVBQUEsZ0NBQXdEQyxRQUFBWCxDQUFBLEVBQUksU0FBUyxTQUFvQlcsUUFBQVgsQ0FBQSxFQUFJLFlBQVksT0FBa0JXLFFBQUFYLENBQUEsRUFBSSxRQUFRLEtBQWdCVyxRQUFBWCxDQUFBLEVBQUksTUFBTSxPQUFrQlcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sT0FBTyxLQUFnQlcsUUFBQVgsQ0FBQSxFQUFJLE1BQU0sSUFBQSxHQVNwTyxNQUFLaUosRUFBQUEsZUFBQSxVQUF3QnZDLEVBQUEsS0FBaUIsSUFBQSxLQUsvQ2pHLEVBQUFBLG1CQTBCTSxNQUFBLENBekJILE1BQUtDLEVBQUFBLGVBQUEsc0JBQWtEQyxRQUFBWCxDQUFBLEVBQUksUUFBUSxLQUFrQlcsUUFBQVgsQ0FBQSxFQUFJLE1BQU0sTUFBbUJXLFFBQUFYLENBQUEsRUFBSSxNQUFNLE9BQW9CVyxRQUFBWCxDQUFBLEVBQUksSUFBSSxLQUFrQlcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFNBQVMsRUFBRSxPQUFvQlcsUUFBQVgsQ0FBQSxFQUFJLGVBQWUsSUFBaUJXLFFBQUFYLENBQUEsRUFBSSxVQUFVLEdBQUEsV0FVNVAsVUFBSixJQUFJZ0csQ0FBQSxJQUVKMUYsRUFBQUEsVUFBQSxFQUFBLEVBQUFDLEVBQUFBLG1CQVlFd0UsV0FBQSxLQUFBTyxFQUFBQSxXQURxQnNCLEVBQUEsTUFBVSxDQUF2QixFQUFHM0IsbUJBWGIxRSxFQUFBQSxtQkFZRSxNQUFBLENBWEMsTUFBS0csRUFBQUEsZUFBQSxxQkFBcURDLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLE9BQU8sSUFBbUJXLFFBQUFYLENBQUEsRUFBSSxPQUFPLEtBQW9CVyxRQUFBWCxDQUFBLEVBQUksTUFBTSxLQUFvQlcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sT0FBTyxLQUFvQlcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEdBQUcsUUFBUSxRQUF1QmlILEVBQVloQyxDQUFLLENBQUEsR0FTdlAsSUFBS0EsQ0FBQSx1REFtQko1RSxFQUFBLFlBQWMrRixFQUFBLHFCQWJ0QjdGLEVBQUFBLG1CQThCTSxNQUFBLE9BN0JILE1BQUtHLEVBQUFBLGVBQUEsZ0NBQXdEQyxRQUFBWCxDQUFBLEVBQUksU0FBUyxTQUFvQlcsUUFBQVgsQ0FBQSxFQUFJLFlBQVksSUFBZVcsUUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBZ0JXLFFBQUFYLENBQUEsRUFBSSxNQUFNLFFBQW1CVyxRQUFBWCxDQUFBLEVBQUksTUFBTSxPQUFrQlcsUUFBQVgsQ0FBQSxFQUFJLE1BQU0sS0FBZ0JXLFFBQUFYLENBQUEsRUFBSSxPQUFPLEtBQWdCVyxRQUFBWCxDQUFBLEVBQUksZUFBZSxJQUFlSSxFQUFNLGtCQUFpQixXQUFBLEVBQUEsS0FjalVzQyxFQUFBQSxZQU1FaUMsRUFBQSxDQUxDLE1BQUtqRSxFQUFBQSxlQUFBLENBQUdDLFFBQUFYLENBQUEsRUFBSSxPQUFPLEtBQUssSUFBS1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLGVBQWUsRUFBRSxDQUFBLEVBQ2xELFNBQVVrRyxFQUFBLE1BQ1YsS0FBTXZGLEVBQUFBLE1BQUF3QixDQUFBLEVBQUssYUFDWCxTQUFVeEIsRUFBQUEsTUFBQThDLENBQUEsRUFBUyxXQUNuQixRQUFLdUYsRUFBQSxDQUFBLElBQUFBLEVBQUEsQ0FBQSxFQUFBeEQsR0FBRW5GLEVBQUEsZUFBaUJtSSxFQUFBLEVBQXFCRyxHQUFBLEVBQWlCLGlEQUdqRWpHLEVBQUFBLFlBTUVpQyxFQUFBLENBTEMsTUFBS2pFLEVBQUFBLGVBQUEsQ0FBR0MsUUFBQVgsQ0FBQSxFQUFJLE9BQU8sTUFBTSxJQUFLVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksZUFBZSxFQUFFLENBQUEsRUFDbkQsU0FBVW1HLEVBQUEsTUFDVixLQUFNeEYsRUFBQUEsTUFBQXdCLENBQUEsRUFBSyxjQUNYLFNBQVV4QixFQUFBQSxNQUFBOEMsQ0FBQSxFQUFTLFdBQ25CLFFBQUt1RixFQUFBLENBQUEsSUFBQUEsRUFBQSxDQUFBLEVBQUF4RCxHQUFFbkYsRUFBQSxlQUFpQmlJLEVBQUEsRUFBaUJJLEVBQUEsRUFBYSxtU0N2Vi9ELE1BQU10SSxFQUFRQyxFQU1Sd0QsRUFBY0QsV0FBUyxJQUFPeEQsRUFBTSxVQUFZMEMsRUFBUSxLQUFPZ0IsR0FBbUIxRCxFQUFNLE9BQVEsZ0JBSXRHRSxFQUFBQSxZQUFBMkIsRUFBQUEsWUF1QllDLEVBQUFBLHdCQUxMMkIsRUFBQSxLQUFXLEVBQUEsQ0FqQmYsTUFBS25ELEVBQUFBLGVBQUEsb0JBQW9DQyxRQUFBWCxDQUFBLEVBQUksUUFBUSxLQUFZVyxRQUFBWCxDQUFBLEVBQUksTUFBTSxPQUFjVyxRQUFBWCxDQUFBLEVBQUksSUFBSSxLQUFZVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxLQUFLLElBQVdXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLE9BQU8sS0FBWVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFFBQVEsRUFBRSxJQUFXVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksUUFBUSxFQUFFLEtBQVlXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxHQUFHLFFBQVEsUUFBZVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxPQUFjVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxNQUFNLFFBQVEsUUFBZVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFVBQVUsS0FBSyxHQUFBLEdBYzVVLEtBQU1JLEVBQU0sS0FDWixPQUFRQSxFQUFNLFNBQVdPLFFBQUErQyxDQUFBLEVBQU8sTUFBUS9DLEVBQUFBLE1BQUErQyxDQUFBLEVBQU8sS0FDL0MsS0FBTXJELEVBQUEsVUFBWU0sUUFBQW1DLENBQUEsRUFBUSxPQUFTbkMsRUFBQUEsTUFBQW1DLENBQUEsRUFBUSxPQUFTLE1BQUEscUJBR3JELElBQWdDLENBQWhDSixFQUFBQSxZQUFnQ0MsRUFBQSxDQUFyQixLQUFNaEMsRUFBQUEsTUFBQXdCLENBQUEsRUFBSyxNQUFBLG1CQUV0QjFCLEVBQUFBLG1CQUE4QixPQUFBLEtBQUFnQyxFQUFBQSxnQkFBckJyQyxFQUFNLEtBQUssRUFBQSxDQUFBLENBQUEsd1FDMUN0QixNQUFNOEksRUFBVzVHLEVBQUFBLHVCQUF1QyxFQUVsRCtDLEVBQWMsSUFBTSxDQUN4QjZELEVBQVMsTUFBUSxDQUFDQSxFQUFTLEtBQzdCLDhCQUlBM0ksRUFBQUEsbUJBeUJTLFNBQUEsQ0F4Qk4sTUFBS0csRUFBQUEsZUFBQSxvQkFBb0N3SSxFQUFBLGdCQUE4QnZJLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxHQUFHLFVBQVdXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLE1BQU0sU0FBUyxFQUFhLENBQUFXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxHQUFHLFFBQVEsUUFBU1csUUFBQVgsQ0FBQSxFQUFJLEtBQUssTUFBTSxRQUFRLE9BQU8sRUFBU1csUUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBWVcsUUFBQVgsQ0FBQSxFQUFJLE1BQU0sT0FBY1csUUFBQVgsQ0FBQSxFQUFJLElBQUksS0FBWVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sS0FBSyxJQUFXVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxPQUFPLEtBQVlXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLEVBQUUsSUFBV1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFFBQVEsRUFBRSxLQUFZVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLE9BQUEsR0FjM1gsUUFBT3FGLEVBQ1IsS0FBSyxRQUFBLEdBRUx6QyxFQUFBQSxXQUFRQyxFQUFBLE9BQUEsVUFBQSxDQUFBLEVBQUEsT0FBQSxFQUFBLEVBRVJwQyxFQUFBQSxtQkFJTSxNQUFBLENBSkEsTUFBS0MsRUFBQUEsZUFBQSxDQUFHQyxFQUFBQSxTQUFJLFFBQVEsS0FBTUEsUUFBQVgsQ0FBQSxFQUFJLE1BQU0sT0FBUVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE1BQU0sT0FBUVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLElBQUksSUFBSSxDQUFBLENBQUEsR0FDOUVTLEVBQUFBLG1CQUVPLE9BQUEsQ0FGQSxNQUFLQyxFQUFBQSxlQUFBLENBQUdDLFFBQUFYLENBQUEsRUFBSSxLQUFLLEtBQUssUUFBU1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLGdCQUFnQixHQUFHLENBQUEsQ0FBQSxvQkFDeERLLEVBQUEsS0FBSyxFQUFBLENBQUEsQ0FBQSwrSEM5QmQsTUFBTUQsRUFBUUMsOEJBSWRFLEVBQUFBLG1CQW1CUyxTQUFBLENBbEJOLE1BQUtHLEVBQUFBLGVBQUEsbUJBQW1DQyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksR0FBRyxRQUFRLFFBQWVXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLE1BQU0sUUFBZVcsUUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBWVcsUUFBQVgsQ0FBQSxFQUFJLE1BQU0sT0FBY1csUUFBQVgsQ0FBQSxFQUFJLElBQUksS0FBWVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sS0FBSyxJQUFXVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxPQUFPLEtBQVlXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLEVBQUUsSUFBV1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFFBQVEsRUFBRSxLQUFZVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLE9BQUEsR0FhblMsS0FBSyxRQUFBLEdBRUxTLEVBQUFBLG1CQUE4QixPQUFBLEtBQUFnQyxFQUFBQSxnQkFBckJyQyxFQUFNLEtBQUssRUFBQSxDQUFBLEVBRXBCc0MsRUFBQUEsWUFBK0JDLEVBQUEsQ0FBcEIsS0FBTWhDLEVBQUFBLE1BQUF3QixDQUFBLEVBQUssS0FBQSxxVEN4QnhCLE1BQU0vQixFQUFRQyxnQkFNZEMsWUFBQSxFQUFBQyxxQkFzQlUsVUF0QlZDLEdBc0JVLENBckJSQyxFQUFBQSxtQkFFSyxLQUFBLENBRkEsd0JBQVFFLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLE9BQU8sSUFBSSxDQUFBLENBQUEsRUFDOUJ5QyxrQkFBQXJDLEVBQU0sT0FBTyxFQUFBLENBQUEsRUFHbEJLLEVBQUFBLG1CQWdCSyxLQUFBLENBaEJBLE1BQUtDLEVBQUFBLGVBQUEsQ0FBR0MsRUFBQUEsU0FBSSxRQUFRLEtBQU1BLFFBQUFYLENBQUEsRUFBSSxLQUFLLEtBQU1XLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxJQUFJLElBQUtXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxhQUFhLEdBQUcsQ0FBQSxDQUFBLEdBQzdFUyxFQUFBQSxtQkFFSyxLQUZMMEUsR0FFSyxDQURIdkMsRUFBQUEsV0FBd0JDLEVBQUEsT0FBQSxXQUFBLENBQUEsRUFBQSxPQUFBLEVBQUEsQ0FBQSxHQUcxQnBDLEVBQUFBLG1CQUVLLEtBRkwwSSxHQUVLLENBREh2RyxFQUFBQSxXQUF3QkMsRUFBQSxPQUFBLFdBQUEsQ0FBQSxFQUFBLE9BQUEsRUFBQSxDQUFBLEdBRzFCcEMsRUFBQUEsbUJBRUssS0FGTDJJLEdBRUssQ0FESHhHLEVBQUFBLFdBQXdCQyxFQUFBLE9BQUEsV0FBQSxDQUFBLEVBQUEsT0FBQSxFQUFBLENBQUEsR0FHMUJwQyxFQUFBQSxtQkFFSyxLQUZMNEksR0FFSyxDQURIekcsRUFBQUEsV0FBd0JDLEVBQUEsT0FBQSxXQUFBLENBQUEsRUFBQSxPQUFBLEVBQUEsQ0FBQSx3REN4QjFCeUcsR0FBVyxPQUFPLFdBQVcsRUFFdEJDLEdBQWMsSUFBTSxDQUMvQixNQUFNQyxFQUFrQmhJLEVBQUFBLElBQWEsRUFBSyxFQUUxQzZCLE9BQUFBLFVBQXlCaUcsR0FBVSxDQUFFLGdCQUFBRSxFQUFpQixFQU0vQyxDQUFFLHVCQUpzQixJQUFNLENBQ25DQSxFQUFnQixNQUFRLEVBQzFCLENBRVMsQ0FDWCxFQUVhQyxHQUFpQixJQUNyQmxHLEVBQUFBLE9BQXdCK0YsRUFBUSw2RUNqQnZDLE1BQU10RixFQUFPQyxFQUVQLENBQUUsdUJBQUF5RixDQUFBLEVBQTJCSCxHQUFBLEVBRTdCSSxFQUFnQkMsR0FBbUIsQ0FDdkNGLEVBQUEsRUFDQTFGLEVBQUssU0FBVTRGLENBQUMsQ0FDbEIsOEJBSUFySixFQUFBQSxtQkFLTyxPQUFBLENBSkoseUJBQWdCb0osRUFBWSxDQUFBLFNBQUEsQ0FBQSxFQUM3QixXQUFBLEVBQUEsR0FFQS9HLGFBQVFDLEVBQUEsT0FBQSxTQUFBLENBQUEsVUNyQkNnSCxHQUFhLENBQ3hCLFFBQVMsVUFDVCxNQUFPLFFBQ1AsV0FBWSxZQUNkLG9GQzRCUUMsR0FBZSw4U0FickIsTUFBTTFKLEVBQVFDLEVBVVIwSixFQUFVdkksRUFBQUEsSUFBQSxFQUNWd0ksRUFBTXhJLEVBQUFBLElBQUEsRUFJTnlJLEVBQXFCckcsRUFBQUEsU0FBaUIsSUFBTSxDQUNoRCxPQUFReEQsRUFBTSxVQUFBLENBQ1osS0FBS3lKLEdBQVcsUUFDZCxPQUFPN0osRUFBSSxPQUFPLFFBQ3BCLEtBQUs2SixHQUFXLE1BQ2QsT0FBTzdKLEVBQUksT0FBTyxNQUNwQixLQUFLNkosR0FBVyxXQUNkLE9BQU83SixFQUFJLE9BQU8sV0FDcEIsUUFDRSxPQUFPNkosR0FBVyxLQUFBLENBRXhCLENBQUMsRUFFS0ssRUFBc0IsSUFBTSxTQUNoQyxNQUFNQyxHQUFhN0YsRUFBQTBGLEVBQUksUUFBSixZQUFBMUYsRUFBVyxXQUN4QjhGLEdBQWdCckIsRUFBQWdCLEVBQVEsUUFBUixZQUFBaEIsRUFBZSxjQUFjLGtCQUFrQm9CLENBQVUsTUFFM0VBLEdBQWNDLEVBQ2hCQSxFQUFjLE9BQVNOLEdBQ2RFLEVBQUksUUFDYkEsRUFBSSxNQUFNLElBQU1GLEdBRXBCLDhCQUlBdkosRUFBQUEsbUJBNEJVLFVBQUEsQ0EzQlAsTUFBS0csRUFBQUEsZUFBQSxDQUFBLGFBQWlCQyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksUUFBUSxLQUFLLENBQUEsVUFDcEMsVUFBSixJQUFJK0osQ0FBQSxJQUVKekosWUFBQSxFQUFBLEVBQUFDLEVBQUFBLG1CQUtFd0UsRUFBQUEsU0FBQSxLQUFBTyxFQUFBQSxXQURpQmxGLEVBQU0sUUFBaEJpSyxrQkFKVDlKLEVBQUFBLG1CQUtFLFNBQUEsQ0FKQyxJQUFLOEosRUFBTyxPQUNaLE1BQUssY0FBZ0JBLEVBQU8sS0FBSyxNQUNqQyxPQUFRQSxFQUFPLE1BQUEscUJBSWxCNUosRUFBQUEsbUJBZ0JFLE1BQUEsQ0FmQyxJQUFLSixFQUFBLElBQ0wsTUFBS0ssRUFBQUEsZUFBQSxrQkFBdUMsQ0FBQU4sRUFBTSxPQUFTTyxFQUFBQSxTQUFJLE1BQU0sS0FBZSxDQUFBUCxFQUFNLFFBQVVPLEVBQUFBLFNBQUksT0FBTyxLQUFjQSxRQUFBWCxDQUFBLEVBQUksT0FBTyxPQUFnQmlLLEVBQUEsS0FBQSxHQU94SixjQUFlNUosRUFBQSxPQUFTLE9BQVMsT0FDakMsT0FBUUQsRUFBTSxPQUNkLFFBQVNBLEVBQU0sT0FBTSxPQUFBLGdCQUNsQixNQUFKLElBQUk0SixFQUNILElBQUszSixFQUFBLEtBQU95SixHQUNaLE1BQU8xSixFQUFNLE1BQ2IsUUFBTzhKLENBQUEscU9DeEVaLE1BQU05SixFQUFRQyw4QkFTZEUsRUFBQUEsbUJBc0JNLE1BQUEsQ0F0QkEsZ0RBQWlDSSxFQUFBQSxNQUFBWCxDQUFBLEVBQUksU0FBUyxTQUFVVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksU0FBUyxHQUFHLE9BQVFXLEVBQUFBLFNBQUksVUFBVSxPQUFPLENBQUEsQ0FBQSxHQUN6R0YsRUFBQUEsbUJBa0JNLE1BQUEsQ0FqQkgsTUFBS0MsRUFBQUEsZUFBQSxDQUFZQyxRQUFBWCxDQUFBLEVBQUksU0FBUyxTQUFrQlcsUUFBQVgsQ0FBQSxFQUFJLE9BQU8sS0FBY1csUUFBQVgsQ0FBQSxFQUFJLE1BQU0sS0FBY1csUUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBY1csUUFBQVgsQ0FBQSxFQUFJLE1BQU0sT0FBZ0JXLFFBQUFYLENBQUEsRUFBSSxNQUFNLE1BQUEsS0FTaEswQyxFQUFBQSxZQU9FNEgsR0FBQSxDQU5DLElBQUtsSyxFQUFNLElBQ1gsTUFBS00sRUFBQUEsZUFBQSxDQUFHQyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksTUFBTSxLQUFNVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxJQUFJLENBQUEsRUFDdkMsVUFBU0ksRUFBTSxPQUNmLGFBQVlPLEVBQUFBLE1BQUFrSixFQUFBLEVBQVcsTUFDdkIsUUFBU3pKLEVBQU0sUUFDZixJQUFLQSxFQUFNLEdBQUEscUVBSWhCd0MsRUFBQUEsV0FBUUMsRUFBQSxPQUFBLFVBQUEsQ0FBQSxFQUFBLE9BQUEsRUFBQSxDQUFBLHFNQ3JDVixNQUFNekMsRUFBUUMsOEJBTWRFLEVBQUFBLG1CQW9CTSxNQUFBLENBbkJILE1BQUtHLEVBQUFBLGVBQUEsa0JBQWtDTixFQUFNLE1BQUssR0FBQSxNQUFxQk8sUUFBQVgsQ0FBQSxFQUFJLFFBQVEsYUFBb0JXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxNQUFNLEVBQUUsT0FBY1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEdBQUcsT0FBTyxRQUFRLE1BQWFXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLE9BQU8sS0FBWUksRUFBTSxPQUFTQSxFQUFNLE1BQU0sU0FBQSxFQUFXLFVBQWNPLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLEVBQUUsSUFBSSxFQUFBLENBQUEsRUFBY0ksRUFBTSxPQUFpQk8sRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFNBQVMsU0FBVVcsUUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxRQUFTVyxFQUFBQSxTQUFJLEtBQUssTUFBTSxRQUFRLE9BQU8sRUFBYSxDQUFBQSxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxLQUFLLEdBQUcsQ0FBQSxLQWVsWkksRUFBTSxPQUZkRSxFQUFBQSxVQUFBLEVBQUFDLEVBQUFBLG1CQUtNLE1BTE5DLEdBS01pQyxFQUFBQSxnQkFERHJDLEVBQU0sS0FBSyxFQUFBLENBQUEsd05DakJsQkcsRUFBQUEsbUJBbUJNLE1BQUEsQ0FsQkgsTUFBS0csRUFBQUEsZUFBQSxDQUFVQyxRQUFBWCxDQUFBLEVBQUksUUFBUSxLQUFZVyxRQUFBWCxDQUFBLEVBQUksTUFBTSxPQUFjVyxRQUFBWCxDQUFBLEVBQUksSUFBSSxRQUFlVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLFFBQWVLLEVBQUEsU0FBV00sRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssTUFBTSxPQUFPLEtBQUssRUFBQSxDQUFLVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxNQUFNLFFBQVEsT0FBTyxDQUFBLEtBWXJMSyxFQUFBLHVCQUpSNEIsRUFBQUEsWUFLRVUsRUFBQSxPQUpDLHdCQUFRaEMsUUFBQVgsQ0FBQSxFQUFJLEtBQUssT0FBTyxHQUFHLENBQUEsRUFDM0IsS0FBTVcsRUFBQUEsTUFBQXdCLENBQUEsRUFBSyxNQUNYLEtBQU14QixFQUFBQSxNQUFBRSxDQUFBLEVBQUssS0FBQSwrREFJZEosRUFBQUEsbUJBRU0sNkJBRERKLEVBQUEsT0FBTyxFQUFBLENBQUEsQ0FBQSxTQzFCSGtLLEdBQXNCLDZCQUV0QkMsR0FBb0IsQ0FDL0IsU0FBVSxDQUNSLFFBQVMsR0FDVCxNQUFPLEVBQUEsRUFFVCxTQUFVLENBQ1IsUUFBUyw2QkFDVCxNQUFPLEVBQUEsQ0FFWCxFQUVhQyxHQUFjLENBQUNDLEVBQWdCQyxJQUNsQ0MsR0FBb0MsQ0FDMUMsSUFBSUMsRUFBMkJMLEdBQWtCLFNBRWpELE9BQUtJLEVBQU0sS0FBQSxFQUFPLE1BQU1GLENBQU0sSUFDNUJHLEVBQVMsQ0FDUCxRQUFTRixHQUFXSixHQUNwQixNQUFPLEVBQUEsR0FJSk0sQ0FDVCxFQUdXQyxHQUF3QixDQUFDLENBQUUsVUFBQUMsRUFBVyxVQUFBQyxFQUFXLFNBQUFDLEVBQVUsTUFBQUwsS0FBOEIsQ0FDcEcsTUFBTU0sRUFBdUJOLEVBQU0sU0FBVyxHQUFLLENBQUNLLEVBQzlDRSxFQUFZSixHQUFhSCxFQUFNLE9BQVNHLEVBRTlDLE1BQU8sRUFEWSxDQUFDRyxHQUF3QkYsR0FBYUosRUFBTSxPQUFTSSxJQUNsRCxDQUFDRyxDQUN6QixFQUVhQyxHQUEyQixDQUFDLENBQ3ZDLGVBQUFDLEVBQ0EsVUFBQU4sRUFDQSxVQUFBQyxFQUNBLFNBQUFDLEVBQ0EsV0FBQUssRUFDQSxNQUFBVixDQUNGLElBT3dCLE9BRXRCLEdBQUlTLElBQW1CLEdBQ3JCLE1BQU8sQ0FDTCxRQUFTQSxFQUNULE1BQU8sRUFBQSxFQUlYLEdBQUlDLEVBQVksQ0FDZCxNQUFNQyxFQUFhQyxHQUFpQlosRUFBTSxNQUFPVSxDQUFVLEVBRTNELEdBQUksQ0FBQ0MsRUFBVyxNQUNkLE9BQU9BLENBRVgsQ0FHQSxHQUFJTixLQUFZM0csRUFBQXNHLEVBQU0sUUFBTixZQUFBdEcsRUFBYSxVQUFXLEdBQ3RDLE9BQU9rRyxHQUFrQixTQUczQixHQUFJTyxHQUFhQyxFQUFXLENBQzFCLE1BQU1TLEVBQW1CQyxHQUFlLENBQ3RDLFVBQUFYLEVBQ0EsVUFBQUMsRUFDQSxTQUFBQyxFQUNBLE1BQU9MLEVBQU0sS0FBQSxDQUNkLEVBRUQsR0FBSSxDQUFDYSxFQUFpQixNQUNwQixPQUFPQSxDQUVYLENBQ0EsT0FBT2pCLEdBQWtCLFFBQzNCLEVBRWFrQixHQUFpQixDQUFDLENBQUUsVUFBQVgsRUFBVyxVQUFBQyxFQUFXLFNBQUFDLEVBQVUsTUFBQUwsS0FBZ0QsQ0FDL0csTUFBTWUsRUFBVyxDQUNmLFFBQVMsR0FDVCxNQUFPLEVBQUEsRUFVVCxPQVBBQSxFQUFTLE1BQVFiLEdBQXNCLENBQ3JDLFVBQUFDLEVBQ0EsVUFBQUMsRUFDQSxTQUFBQyxFQUNBLE1BQUFMLENBQUEsQ0FDRCxFQUVHZSxFQUFTLFFBRWJBLEVBQVMsUUFBVXBCLEdBRWZRLEdBQWFDLEVBQ2ZXLEVBQVMsUUFBVSx5QkFBeUI1SyxFQUFhaUssQ0FBUyxDQUFDLFFBQVFqSyxFQUFhZ0ssQ0FBUyxDQUFDLGNBQ3pGQSxFQUNUWSxFQUFTLFFBQVUsT0FBTzVLLEVBQWFnSyxDQUFTLENBQUMsdUJBQ3hDQyxJQUNUVyxFQUFTLFFBQVUsa0JBQWtCNUssRUFBYWlLLENBQVMsQ0FBQyxnQkFHdkRXLENBQ1QsRUFFTyxTQUFTSCxHQUFpQlosRUFBZVUsRUFBdUUsQ0FDckgsVUFBV00sS0FBYU4sRUFBWSxDQUNsQyxNQUFNQyxFQUFhSyxFQUFVaEIsQ0FBSyxFQUNsQyxHQUFJLENBQUNXLEVBQVcsTUFDZCxPQUFPQSxDQUVYLENBRUEsTUFBTyxDQUNMLFFBQVMsR0FDVCxNQUFPLEVBQUEsQ0FFWCxxZEMxR0UsTUFBTW5MLEVBQVFDLEVBY1IyRCxFQUFPQyxFQUVQNEgsRUFBYXZKLEVBQUFBLHVCQUF1QyxFQUVwRHdKLEVBQWNyQyxHQUFBLEVBRWRzQyxFQUFldkssRUFBQUEsSUFBYSxFQUFLLEVBQ2pDd0ssRUFBV3hLLEVBQUFBLElBQXNCZ0osR0FBa0IsUUFBUSxFQUUzRHlCLEVBQWlCckksRUFBQUEsU0FBUyxJQUFPeEQsRUFBTSxTQUFXLEdBQUdBLEVBQU0sS0FBSyxLQUFPQSxFQUFNLEtBQU0sRUFDbkY4TCxFQUFZdEksRUFBQUEsU0FBUyxJQUFNaUksRUFBVyxPQUFTekwsRUFBTSxhQUFhLEVBQ2xFK0wsRUFBWXZJLEVBQUFBLFNBQVMsSUFDckJ3SSxFQUFpQixNQUFjLEdBQzlCTCxFQUFhLE1BQ1gsQ0FBQ0MsRUFBUyxNQUFNLE1BRFMsRUFFakMsRUFDS0ksRUFBbUJ4SSxFQUFBQSxTQUFTLElBQU14RCxFQUFNLFFBQVUsRUFBRSxFQUNwRGlNLEVBQXdCekksRUFBQUEsU0FBUyxJQUFNdUksRUFBVSxPQUFTSCxFQUFTLE1BQU0sT0FBTyxFQUVoRk0sRUFBOEIsSUFDOUJsTSxFQUFNLFFBQVUsR0FDWCxDQUNMLFFBQVNBLEVBQU0sTUFDZixNQUFPLEVBQUEsRUFFUCxDQUFDQSxFQUFNLFVBQVk4TCxFQUFVLE1BQWMxQixHQUFrQixTQUMxREEsR0FBa0IsU0FHM0IrQixPQUFBQSxFQUFBQSxZQUFZLElBQU0sQ0FDaEJQLEVBQVMsTUFBUU0sRUFBQSxDQUNuQixDQUFDLEVBRUQ3SyxFQUFBQSxNQUNFb0ssRUFDQSxJQUFNLENBQ0FBLEVBQVcsUUFBT0UsRUFBYSxNQUFRLEdBQzdDLEVBQ0EsQ0FBRSxVQUFXLEVBQUEsQ0FBSyxFQUdwQnRLLEVBQUFBLE1BQ0UsSUFBTXFLLEdBQUEsWUFBQUEsRUFBYSxnQkFBZ0IsTUFDbENVLEdBQWEsQ0FDUkEsTUFBdUIsTUFBUSxHQUNyQyxFQUNBLENBQUUsVUFBVyxFQUFBLENBQUssRUFHcEIvSyxFQUFBQSxNQUNFdUssRUFDQSxJQUFNLENBQ0poSSxFQUFLLFFBQVNnSSxFQUFTLE1BQU0sS0FBSyxDQUNwQyxFQUNBLENBQUUsS0FBTSxHQUFNLFVBQVcsRUFBQSxDQUFLLHdCQUtoQ3pMLEVBQUFBLG1CQXNFTSxNQUFBLENBdEVBLDhDQUErQkksRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBTVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssVUFBVSxPQUFRVyxFQUFBQSxTQUFJLElBQUksT0FBTyxDQUFBLENBQUEsR0FDL0ZGLEVBQUFBLG1CQThEUSxRQUFBLENBN0RMLE1BQUtDLEVBQUFBLGVBQUEsQ0FBWUMsUUFBQVgsQ0FBQSxFQUFJLE1BQU0sT0FBZ0JXLFFBQUFYLENBQUEsRUFBSSxRQUFRLEtBQWNXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLEtBQUssT0FBZ0JXLFFBQUFYLENBQUEsRUFBSSxJQUFJLEtBQWNXLFFBQUFYLENBQUEsRUFBSSxZQUFZLEtBQWNtTSxFQUFBLE1BQVl4TCxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxNQUFNLE9BQU8sTUFBUVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssTUFBTSxRQUFRLFFBQWlCSyxFQUFBLFVBQVlNLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLFNBQVVXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLFdBQVcsRUFBQSxDQUFLVyxFQUFBQSxTQUFJLE9BQU8sT0FBTyxDQUFBLHNCQVV6VEYsRUFBQUEsbUJBU0UsUUFBQSxDQVJDLFFBQVN5TCxFQUFBLE1BQ1QsdUJBQU8sQ0FBQSx5QkFBQSxDQUEyQixFQUNsQyxTQUFVN0wsRUFBQSxTQUNWLEtBQU1BLEVBQUEsS0FDUCxJQUFJLFFBQ0gsR0FBSUEsRUFBQSxRQUNMLEtBQUssZ0RBQ0l3TCxFQUFVLE1BQUFyRyxFQUFBLGdDQUFWcUcsRUFBQSxLQUFVLENBQUEsR0FHckJwTCxFQUFBQSxtQkF5Qk0sTUFBQSxDQXhCSCxNQUFLQyxFQUFBQSxlQUFBLDhCQUFzREMsUUFBQVgsQ0FBQSxFQUFJLE1BQU0sT0FBa0JXLFFBQUFYLENBQUEsRUFBSSxNQUFNLE9BQWtCVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxLQUFLLElBQWVXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLE9BQU8sUUFBbUJXLFFBQUFYLENBQUEsRUFBSSxRQUFRLEtBQWdCVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxPQUFPLElBQWVXLFFBQUFYLENBQUEsRUFBSSxTQUFTLFNBQW9Ca00sRUFBQSxPQUF5QkMsRUFBQSxNQUFZeEwsRUFBQUEsU0FBSSxHQUFHLE9BQU8sUUFBUSxNQUFLLENBQUlBLEVBQUFBLFNBQUksR0FBRyxVQUFXQSxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxNQUFNLElBQUksQ0FBQSxHQUFtQ21NLEVBQUEsTUFBK0IsQ0FBQXhMLFFBQUFYLENBQUEsRUFBSSxPQUFPLE1BQU0sT0FBTyxNQUFPVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksR0FBRyxPQUFPLFFBQVEsS0FBSyxFQUF1QixDQUFBVyxRQUFBWCxDQUFBLEVBQUksT0FBTyxNQUFNLFFBQVNXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxHQUFHLFFBQVEsT0FBTyxDQUFBLE1Bc0IxakJrTSxFQUFBLHFCQUpSakssRUFBQUEsWUFLRVUsRUFBQSxPQUpDLHdCQUFRaEMsUUFBQVgsQ0FBQSxFQUFJLEtBQUssTUFBTSxTQUFTLENBQUEsRUFDaEMsS0FBTUssZ0JBQWdCTSxRQUFBd0IsQ0FBQSxFQUFLLE9BQVN4QixFQUFBQSxNQUFBd0IsQ0FBQSxFQUFLLE1BQ3pDLEtBQU14QixFQUFBQSxNQUFBRSxDQUFBLEVBQUssS0FBQSxtRUFPUlIsRUFBQSxxQkFGUkUsRUFBQUEsbUJBWU0sTUFBQSxPQVhILE1BQUtHLEVBQUFBLGVBQUEsQ0FBR0MsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE1BQU0sUUFBU1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBTVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxHQUFJVyxRQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLE1BQU0sQ0FBQSxDQUFBLEdBR3BGUyxFQUFBQSxtQkFBaUMsOEJBQXhCd0wsRUFBQSxLQUFjLEVBQUEsQ0FBQSxFQUlmNUwsRUFBQSxzQkFGUkUsRUFBQUEsbUJBS08sT0FBQSxPQUpKLE1BQUtHLEVBQUFBLGVBQUEsQ0FBR0MsV0FBSSxLQUFLLE1BQU0sUUFBUSxPQUFPLENBQUEsQ0FBQSxFQUV4QyxLQUNFOEIsRUFBQUEsZ0JBQUc5QixRQUFBSSxDQUFBLEVBQWFWLEVBQUEsTUFBTSxHQUFJLEtBQzdCLENBQUEsb0VBT0lnTSxFQUFBLHFCQUhScEssRUFBQUEsWUFJRXdLLEdBQUEsT0FIQyxRQUFTSixFQUFBLE1BQ1YsV0FBQSxFQUFBLHVKQ2pLSkssR0FBZSxDQUFBLCtSQXNCZixNQUFNdE0sRUFBUUMsRUFVUjZMLEVBQVl0SSxFQUFBQSxTQUFTLElBQU14RCxFQUFNLFNBQVdBLEVBQU0sYUFBYSw4QkFJckVHLEVBQUFBLG1CQWdFTSxNQUFBLENBL0RILE1BQUtHLEVBQUFBLGVBQUEsdUJBQXVDQyxRQUFBWCxDQUFBLEVBQUksUUFBUSxLQUFZVyxRQUFBWCxDQUFBLEVBQUksTUFBTSxPQUFjVyxRQUFBWCxDQUFBLEVBQUksSUFBSSxLQUFZVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLE9BQWNLLEVBQUEsU0FBUSxDQUFBLFdBQWdCTSxFQUFBQSxNQUFBWCxDQUFBLEVBQUksZUFBZSxHQUFHLEVBQUlXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLE9BQUEsS0FTMU1TLEVBQUFBLG1CQVNFLFFBQUEsQ0FSQyxRQUFTeUwsRUFBQSxNQUNULE1BQUt4TCxFQUFBQSxlQUFBLENBQUdDLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLElBQUksQ0FBQSxFQUN4QixTQUFVSSxFQUFNLFNBQ2hCLEtBQU1BLEVBQU0sS0FDYixJQUFJLFFBQ0gsb0NBQUQsSUFBQSxDQUFBLEVBQWMsQ0FBQSxTQUFBLENBQUEsR0FDYixHQUFJQSxFQUFNLFFBQ1gsS0FBSyxVQUFBLGNBR1BLLEVBQUFBLG1CQXFCTSxNQUFBLENBcEJILE1BQUtDLEVBQUFBLGVBQUEsOEJBQWtEQyxRQUFBWCxDQUFBLEVBQUksU0FBUyxTQUFrQlcsUUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBY1csUUFBQVgsQ0FBQSxFQUFJLE1BQU0sT0FBZ0JXLFFBQUFYLENBQUEsRUFBSSxNQUFNLE9BQWdCVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxPQUFPLElBQWFXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLEtBQUssSUFBYWtNLEVBQUEsTUFBUyxDQUFJdkwsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sTUFBTSxLQUFNVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksR0FBRyxTQUFTLEVBQUEsQ0FBS1csUUFBQVgsQ0FBQSxFQUFJLE9BQU8sTUFBTSxRQUFTVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksR0FBRyxRQUFRLE9BQU8sRUFBV1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sT0FBTyxRQUFpQmtNLEVBQUEsT0FBUyxVQUF1QjdMLEVBQUEsU0FBV00sRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sWUFBY1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sT0FBQSxLQWtCN2JrTSxFQUFBLHFCQUpSakssRUFBQUEsWUFLRVUsRUFBQSxPQUpDLHdCQUFRaEMsUUFBQVgsQ0FBQSxFQUFJLEtBQUssTUFBTSxTQUFTLENBQUEsRUFDaEMsS0FBTUksRUFBTSxjQUFnQk8sUUFBQXdCLENBQUEsRUFBSyxPQUFTeEIsRUFBQUEsTUFBQXdCLENBQUEsRUFBSyxNQUMvQyxLQUFNeEIsRUFBQUEsTUFBQUUsQ0FBQSxFQUFLLEtBQUEsbUVBZVJSLEVBQUEscUJBVlJFLEVBQUFBLG1CQW1CUSxRQUFBLE9BbEJMLE1BQUtHLEVBQUFBLGVBQUEsQ0FBWUMsUUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBY1csUUFBQVgsQ0FBQSxFQUFJLE1BQU0sUUFBaUJXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLEtBQUssR0FBWVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxPQUFnQkssRUFBQSxTQUFXTSxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxZQUFjVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxPQUFBLEdBTzdLLElBQUtJLEVBQU0sUUFDWCxvQ0FBRCxJQUFBLENBQUEsRUFBYyxDQUFBLFNBQUEsQ0FBQSxFQUFBLEdBR2RLLEVBQUFBLG1CQUF3Qiw4QkFBZkosRUFBQSxLQUFLLEVBQUEsQ0FBQSxFQUdORCxFQUFNLHNCQUZkRyxFQUFBQSxtQkFLTyxPQUFBLE9BSkosTUFBS0csRUFBQUEsZUFBQSxDQUFHQyxXQUFJLEtBQUssTUFBTSxRQUFRLE9BQU8sQ0FBQSxDQUFBLEVBRXhDLHVCQUNLQSxRQUFBSSxDQUFBLEVBQWFYLEVBQU0sTUFBTSxHQUFJLEtBQ25DLENBQUEseWJDdkZKLE1BQU1BLEVBQVFDLEVBT1J3TCxFQUFhdkosRUFBQUEsdUJBQXNDLEVBRW5ENEosRUFBWXRJLEVBQUFBLFNBQVMsSUFBTWlJLEVBQVcsUUFBVXpMLEVBQU0sS0FBSyw4QkFJakVHLEVBQUFBLG1CQWdEUSxRQUFBLENBL0NMLE1BQUtHLEVBQUFBLGVBQUEsb0JBQW9DQyxRQUFBWCxDQUFBLEVBQUksUUFBUSxLQUFZVyxRQUFBWCxDQUFBLEVBQUksTUFBTSxPQUFjVyxRQUFBWCxDQUFBLEVBQUksSUFBSSxLQUFZVyxRQUFBWCxDQUFBLEVBQUksWUFBWSxLQUFZSSxFQUFNLFNBQVEsQ0FBSU8sRUFBQUEsU0FBSSxRQUFRLFNBQVVBLEVBQUFBLFNBQUksT0FBTyxXQUFXLEVBQUEsQ0FBS0EsRUFBQUEsU0FBSSxPQUFPLE9BQU8sQ0FBQSxHQVE5TixJQUFLUCxFQUFNLE9BQUEsb0JBRVpLLEVBQUFBLG1CQVFFLFFBQUEsQ0FQQyx1QkFBTyxDQUFBLHlCQUFBLENBQTJCLEVBQ2xDLFNBQVVKLEVBQUEsU0FDVixLQUFNQSxFQUFBLEtBQ04sTUFBT0EsRUFBQSxNQUNQLEdBQUlELEVBQU0sUUFDWCxLQUFLLDZDQUNJeUwsRUFBVSxNQUFBckcsRUFBQSw2QkFBVnFHLEVBQUEsS0FBVSxDQUFBLEdBR3JCcEwsRUFBQUEsbUJBZ0JNLE1BQUEsQ0FmSCxNQUFLQyxFQUFBQSxlQUFBLDJCQUErQ0MsUUFBQVgsQ0FBQSxFQUFJLFNBQVMsU0FBa0JXLFFBQUFYLENBQUEsRUFBSSxRQUFRLEtBQWNXLFFBQUFYLENBQUEsRUFBSSxNQUFNLE9BQWdCVyxRQUFBWCxDQUFBLEVBQUksTUFBTSxPQUFnQlcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sS0FBSyxJQUFha00sRUFBQSxNQUFTLENBQUl2TCxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxNQUFNLElBQUksRUFBQSxDQUFLVyxFQUFBQSxTQUFJLE9BQU8sTUFBTSxPQUFPLEVBQVdBLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLE9BQU8sS0FBY1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEdBQUcsUUFBUSxRQUFpQlcsUUFBQVgsQ0FBQSxFQUFJLE9BQU8sUUFBaUJXLFFBQUFYLENBQUEsRUFBSSxlQUFlLEVBQUEsS0FjeFhTLEVBQUFBLG1CQUFrRyxNQUFBLENBQTVGLE1BQUtDLEVBQUFBLGVBQUEsQ0FBQSx5QkFBNkJDLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLE9BQU8sS0FBTWtNLFNBQWF2TCxFQUFBQSxNQUFBWCxDQUFBLEVBQUksR0FBRyxTQUFTLENBQUEsQ0FBQSxjQUcvRlMsRUFBQUEsbUJBUU0sTUFBQSxDQVJBLE1BQUtDLEVBQUFBLGVBQUEsQ0FBR0MsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBTVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxHQUFJVyxRQUFBWCxDQUFBLEVBQUksTUFBTSxRQUFTVyxRQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLE1BQU0sQ0FBQSxDQUFBLEdBQ3ZGUyxFQUFBQSxtQkFBd0IsOEJBQWZKLEVBQUEsS0FBSyxFQUFBLENBQUEsRUFHTkQsRUFBTSxzQkFGZEcsRUFBQUEsbUJBS08sT0FBQSxPQUpKLE1BQUtHLEVBQUFBLGVBQUEsQ0FBR0MsV0FBSSxLQUFLLE1BQU0sUUFBUSxPQUFPLENBQUEsQ0FBQSxFQUV4Qyx1QkFDS0EsUUFBQUksQ0FBQSxFQUFhWCxFQUFNLE1BQU0sR0FBSSxLQUNuQyxDQUFBLHlIQ3RFSnNNLEdBQWUsQ0FBQSxvUEFrQmYsTUFBTXRNLEVBQVFDLEVBU1JzTSxFQUFVbkwsRUFBQUEsSUFBSXBCLEVBQU0sT0FBTyxFQUVqQ3FCLE9BQUFBLEVBQUFBLE1BQ0UsSUFBTXJCLEVBQU0sUUFDWixDQUFDb00sRUFBVUksSUFBYSxFQUNsQkosSUFBYUksR0FBWUosSUFBYUcsRUFBUSxTQUNoREEsRUFBUSxNQUFRSCxFQUVwQixDQUFBLHdCQUtGak0sRUFBQUEsbUJBeURNLE1BQUEsQ0F4REgsTUFBS0csRUFBQUEsZUFBQSxvQkFBb0NDLFFBQUFYLENBQUEsRUFBSSxRQUFRLEtBQVlXLFFBQUFYLENBQUEsRUFBSSxNQUFNLE9BQWNXLFFBQUFYLENBQUEsRUFBSSxJQUFJLEtBQVlXLFFBQUFYLENBQUEsRUFBSSxlQUFlLElBQVdJLEVBQU0sVUFBUSxVQUFBLEtBUzFKSyxFQUFBQSxtQkFPRSxRQUFBLENBTkMsUUFBU2tNLEVBQUEsTUFDVCxNQUFLak0sRUFBQUEsZUFBQSxDQUFHQyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksUUFBUSxJQUFJLENBQUEsRUFDeEIsR0FBSUksRUFBTSxRQUNYLEtBQUssR0FDTCxLQUFLLFFBQ0wsTUFBTSxFQUFBLGNBR1JLLEVBQUFBLG1CQWlCTSxNQUFBLENBaEJILE1BQUtDLEVBQUFBLGVBQUEsMkJBQStDQyxRQUFBWCxDQUFBLEVBQUksU0FBUyxTQUFrQlcsUUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBY1csUUFBQVgsQ0FBQSxFQUFJLE1BQU0sT0FBZ0JXLFFBQUFYLENBQUEsRUFBSSxNQUFNLE9BQWdCVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxLQUFLLElBQWEyTSxFQUFBLE1BQVVoTSxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxNQUFNLEtBQU9XLEVBQUFBLFNBQUksT0FBTyxNQUFNLFFBQWlCQSxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxPQUFPLEtBQWNXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxHQUFHLFFBQVEsUUFBaUJXLFFBQUFYLENBQUEsRUFBSSxPQUFPLFFBQWlCVyxRQUFBWCxDQUFBLEVBQUksZUFBZSxHQUFZMk0sRUFBQSxPQUFPLFNBQUEsS0FlcllsTSxFQUFBQSxtQkFBc0csTUFBQSxDQUFoRyxpREFBa0NFLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLE9BQU8sS0FBTUksRUFBTSxTQUFXTyxFQUFBQSxTQUFJLEdBQUcsU0FBUyxDQUFBLENBQUEsY0FHbkdGLEVBQUFBLG1CQWtCUSxRQUFBLENBakJMLE1BQUtDLEVBQUFBLGVBQUEsQ0FBWUMsUUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBY1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxHQUFZVyxRQUFBWCxDQUFBLEVBQUksTUFBTSxRQUFpQlcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxPQUFnQlcsUUFBQVgsQ0FBQSxFQUFJLE9BQU8sUUFBaUJXLFFBQUFYLENBQUEsRUFBSSxlQUFlLEVBQUEsR0FRN0ssSUFBS0ksRUFBTSxPQUFBLEdBRVpLLEVBQUFBLG1CQUF3Qiw4QkFBZkosRUFBQSxLQUFLLEVBQUEsQ0FBQSxFQUdORCxFQUFNLHNCQUZkRyxFQUFBQSxtQkFLTyxPQUFBLE9BSkosTUFBS0csRUFBQUEsZUFBQSxDQUFHQyxXQUFJLEtBQUssTUFBTSxRQUFRLE9BQU8sQ0FBQSxDQUFBLEVBRXhDLHVCQUNLQSxRQUFBSSxDQUFBLEVBQWFYLEVBQU0sTUFBTSxHQUFJLEtBQ25DLENBQUEsMEZDN0ZPeU0sR0FBUyxDQUNwQixPQUFROUwsRUFDUixNQUFPTSxHQUNQLE1BQU9DLEVBQ1QsRUFFYXdMLEdBQWUsQ0FDMUIsTUFBTyxlQUNQLG1CQUFvQixrQkFDcEIsV0FBWSxnQkFDWixNQUNFLHdKQUNGLGdCQUFpQixpRUFDakIsTUFBTyxtREFDUCxNQUFPLDhEQUNQLElBQUssU0FDUCxFQ25CYUMsR0FBWSxDQUN2QixtQkFBb0J0QyxHQUFZcUMsR0FBYSxrQkFBa0IsRUFDL0QsWUFBYXJDLEdBQVlxQyxHQUFhLFVBQVUsRUFDaEQsTUFBT3JDLEdBQVlxQyxHQUFhLE1BQU8scURBQXFELEVBQzVGLE9BQVFyQyxHQUFZcUMsR0FBYSxnQkFBaUIsc0JBQXNCLEVBQ3hFLE1BQU9yQyxHQUFZcUMsR0FBYSxNQUFPLDRCQUE0QixFQUNuRSxJQUFLckMsR0FBWXFDLEdBQWEsSUFBSyx3QkFBd0IsQ0FDN0QsRUFpQmFFLEdBQWdCLENBQzNCLE1BQU8sUUFDUCxLQUFNLE1BQ1IsaWpCQ0hFLE1BQU01TSxFQUFRQyxFQWlCUjJELEVBQU9DLEVBRVA0SCxFQUFhdkosRUFBQUEsdUJBQXNDLEVBRW5Ed0osRUFBY3JDLEdBQUEsRUFFZHVDLEVBQVd4SyxFQUFBQSxJQUFzQmdKLEdBQWtCLFFBQVEsRUFDM0R5QyxFQUFXekwsRUFBQUEsSUFBYSxFQUFLLEVBQzdCMEwsRUFBVUMsRUFBQUEsTUFBQSxFQUNWcEIsRUFBZXZLLEVBQUFBLElBQWEsRUFBSyxFQUNqQzRMLEVBQWdCNUwsRUFBQUEsSUFBOEIsSUFBSSxFQUVsRHlLLEVBQWlCckksRUFBQUEsU0FBUyxJQUFPeEQsRUFBTSxTQUFXLEdBQUdBLEVBQU0sS0FBSyxLQUFPQSxFQUFNLEtBQU0sRUFDbkYrTCxFQUFZdkksRUFBQUEsU0FBUyxJQUNyQndJLEVBQWlCLE1BQWMsR0FDOUJMLEVBQWEsTUFDWCxDQUFDQyxFQUFTLE1BQU0sTUFEUyxFQUVqQyxFQUNLSSxFQUFtQnhJLEVBQUFBLFNBQVMsSUFBTXhELEVBQU0sUUFBVSxFQUFFLEVBQ3BEaU4sRUFBZXpKLEVBQUFBLFNBQVMsSUFBTXFKLEVBQVMsT0FBUyxDQUFDSyxFQUFRLEtBQUssRUFDOURBLEVBQVUxSixFQUFBQSxTQUFTLElBQU1pSSxFQUFXLFFBQVUsRUFBRSxFQUNoRFEsRUFBd0J6SSxXQUFTLElBQU91SSxFQUFVLE9BQVNILEVBQVMsTUFBTSxTQUFZNUwsRUFBTSxjQUFjLEVBRTFHbU4sRUFBZ0IsSUFBTSxPQUMxQixNQUFNQyxFQUFRLElBQUksV0FBVyxXQUFXLEdBQ3hDbEosRUFBQThJLEdBQUEsWUFBQUEsRUFBZSxRQUFmLE1BQUE5SSxFQUFzQixjQUFja0osRUFDdEMsRUFFTUMsRUFBYyxJQUFNLENBQ3hCUixFQUFTLE1BQVEsR0FDYjdNLEVBQU0sZUFBaUI0TSxHQUFjLFVBQW9CLE1BQVEsR0FDdkUsRUFFTVUsRUFBaUIsSUFBTSxDQUMzQlQsRUFBUyxNQUFRLEdBQ2I3TSxFQUFNLGVBQWlCNE0sR0FBYyxTQUFtQixNQUFRLEdBQ3RFLEVBRUFULE9BQUFBLEVBQUFBLFlBQVksSUFBTSxDQUNoQlAsRUFBUyxNQUFRWixHQUF5QixDQUN4QyxlQUFnQmhMLEVBQU0sTUFDdEIsU0FBVUEsRUFBTSxTQUNoQixNQUFPeUwsQ0FBQSxDQUNSLENBQ0gsQ0FBQyxFQUVEcEssRUFBQUEsTUFDRSxJQUFNcUssR0FBQSxZQUFBQSxFQUFhLGdCQUFnQixNQUNsQ1UsR0FBYSxDQUNSQSxNQUF1QixNQUFRLEdBQ3JDLEVBQ0EsQ0FBRSxVQUFXLEVBQUEsQ0FBSyxFQUdwQi9LLEVBQUFBLE1BQ0V1SyxFQUNBLElBQU0sQ0FDSmhJLEVBQUssUUFBU2dJLEVBQVMsTUFBTSxLQUFLLENBQ3BDLEVBQ0EsQ0FBRSxLQUFNLEdBQU0sVUFBVyxFQUFBLENBQUssd0JBS2hDekwsRUFBQUEsbUJBOEdNLE1BQUEsQ0E3R0gsTUFBS0csRUFBQUEsZUFBQSxxQkFBcUNDLFFBQUFYLENBQUEsRUFBSSxRQUFRLEtBQVlXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLFVBQVUsT0FBY1csUUFBQVgsQ0FBQSxFQUFJLElBQUksUUFBZUssRUFBQSxVQUFRLFdBQXNCOEwsRUFBQSxPQUFTLE9BQUEsS0FTbEsxTCxFQUFBQSxtQkE2Rk0sTUFBQSxDQTVGSCxNQUFLQyxFQUFBQSxlQUFBLHFCQUF5Q0MsUUFBQVgsQ0FBQSxFQUFJLFNBQVMsU0FBa0JXLFFBQUFYLENBQUEsRUFBSSxRQUFRLEtBQWNXLFFBQUFYLENBQUEsRUFBSSxNQUFNLE9BQWdCVyxRQUFBWCxDQUFBLEVBQUksSUFBSSxLQUFjVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxPQUFPLEtBQWNXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxHQUFHLFFBQVEsUUFBaUJJLEVBQU0sU0FBV08sRUFBQUEsU0FBSSxPQUFPLFlBQVcsR0FBZUEsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFNBQVMsR0FBRyxNQUFBLEdBVzdSLFFBQU91TixDQUFBLEdBRVI5TSxFQUFBQSxtQkF3RU0sTUFBQSxDQXhFQSx3QkFBUUUsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBTVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssVUFBVSxPQUFRVyxFQUFBQSxTQUFJLE1BQU0sSUFBSSxDQUFBLENBQUEsR0FZL0ROLEVBQUEscUJBWFJFLEVBQUFBLG1CQWNRLFFBQUEsT0FiTCxNQUFLRyxFQUFBQSxlQUFBLENBQWdCMk0sRUFBQSxNQUFZLENBQUEsWUFBaUIxTSxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLE9BQU8sRUFBSVcsRUFBQUEsU0FBSSxLQUFLLEtBQUssUUFBcUJBLFFBQUFYLENBQUEsRUFBSSxTQUFTLFNBQXNCVyxRQUFBWCxDQUFBLEVBQUksWUFBWSxLQUFrQlcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sSUFBSSxLQUFrQlcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sS0FBSyxLQUFrQm1NLEVBQUEsT0FBYXhMLFdBQUksS0FBSyxNQUFNLFFBQVEsUUFBcUJBLFFBQUFYLENBQUEsRUFBSSxlQUFlLEdBQUEsR0FTbFUsSUFBS1csRUFBQUEsTUFBQXVNLENBQUEsQ0FBQSxvQkFHSGpCLEVBQUEsS0FBYyxFQUFBLEdBQUF6TCxFQUFBLGdEQUduQkMsRUFBQUEsbUJBc0RTLFNBQUEsQ0FyRE4sTUFBS0MsRUFBQUEsZUFBQSxDQUFnQkMsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFFBQVEsT0FBTyxLQUFrQlcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFFBQVEsRUFBRSxJQUFpQlcsUUFBQVgsQ0FBQSxFQUFJLE1BQU0sS0FBa0JLLEVBQUEsVUFBWU0sRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sWUFBeUJXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLEtBQUssTUFBQSxHQU9uTCxTQUFVSyxFQUFBLFNBQ1YsS0FBTUEsRUFBQSxhQUNILGdCQUFKLElBQUkrTSxFQUNILFNBQVUvTSxFQUFBLFNBQ1YsUUFBT29OLEVBQ1AsV0FBVUMsRUFDVixHQUFJL00sRUFBQUEsTUFBQXVNLENBQUEsdUNBQ0lyQixFQUFVLE1BQUFyRyxFQUFBLElBRW5CbEYsWUFBQSxFQUFBLEVBQUFDLEVBQUFBLG1CQTBCV3dFLEVBQUFBLFNBQUEsS0FBQU8sRUFBQUEsV0ExQmtCbEYsRUFBTSxVQUFsQnVOLHdEQUtOQSxFQUErQix1QkFKeENwTixFQUFBQSxtQkFjVyxXQUFBLENBYlIsTUFBS0csRUFBQUEsZUFBQSxDQUFHQyxRQUFBWCxDQUFBLEVBQUksTUFBTSxLQUFNVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksR0FBRyxRQUFRLE9BQU8sQ0FBQSxFQUM5QyxJQUFNMk4sRUFBK0IsTUFDckMsTUFBUUEsRUFBK0IsS0FBQSxJQUd4Q3JOLFlBQUEsRUFBQSxFQUFBQyxFQUFBQSxtQkFPU3dFLEVBQUFBLFNBQUEsS0FBQU8sRUFBQUEsV0FIV3FJLEVBQStCLFFBQTFDQyxrQkFKVHJOLEVBQUFBLG1CQU9TLFNBQUEsQ0FOTixNQUFLRyxFQUFBQSxlQUFBLENBQUdDLFFBQUFYLENBQUEsRUFBSSxNQUFNLEtBQU1XLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxHQUFHLFFBQVEsT0FBTyxDQUFBLEVBQzlDLElBQUs0TixFQUFPLE1BQ1osTUFBT0EsRUFBTyxLQUFBLEVBR1puTCxFQUFBQSxnQkFBQW1MLEVBQU8sS0FBSyxFQUFBLEdBQUF4RSxFQUFBLGtDQUluQjdJLEVBQUFBLG1CQVFTLFNBQUEsQ0FQTixNQUFLRyxFQUFBQSxlQUFBLENBQUdDLFFBQUFYLENBQUEsRUFBSSxNQUFNLEtBQU1XLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxHQUFHLFFBQVEsT0FBTyxDQUFBLEVBQzlDLElBQU0yTixFQUEwQixNQUNoQyxTQUFVOUIsRUFBQSxRQUFnQjhCLEVBQTBCLFNBQWUsT0FDbkUsTUFBUUEsRUFBMEIsS0FBQSxFQUcvQmxMLEVBQUFBLGdCQUFBa0wsRUFBMEIsS0FBSyxFQUFBLEdBQUF0RSxFQUFBLEVBQUEsK0JBSXZDOUksRUFBQUEsbUJBUVN3RSxFQUFBQSxTQUFBLEtBQUFPLEVBQUFBLFdBSFVqRixFQUFBLFFBQVZ1TixrQkFMVHJOLEVBQUFBLG1CQVFTLFNBQUEsQ0FQTixNQUFLRyxFQUFBQSxlQUFBLENBQUdDLFFBQUFYLENBQUEsRUFBSSxNQUFNLEtBQU1XLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxHQUFHLFFBQVEsT0FBTyxDQUFBLEVBQzlDLElBQUs0TixFQUFPLE1BQ1osU0FBVS9CLEVBQUEsUUFBZStCLEVBQU8sU0FBZSxPQUMvQyxNQUFPQSxFQUFPLEtBQUEsRUFHWm5MLEVBQUFBLGdCQUFBbUwsRUFBTyxLQUFLLEVBQUEsR0FBQUMsRUFBQSxtQ0FyQ1JoQyxFQUFBLEtBQVUsQ0FBQSxPQTBDdkJuSixFQUFBQSxZQUlFQyxFQUFBLENBSEMsTUFBS2pDLEVBQUFBLGVBQUEsQ0FBR0MsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFNBQVMsU0FBVVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFlBQVksTUFBT1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sTUFBTSxJQUFLVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksZUFBZSxHQUFHLENBQUEsRUFDbEcsS0FBTVcsRUFBQUEsTUFBQXdCLENBQUEsRUFBSyxZQUNYLEtBQU14QixFQUFBQSxNQUFBRSxDQUFBLEVBQUssS0FBQSxzQ0FPUndMLEVBQUEscUJBSFJwSyxFQUFBQSxZQUlFd0ssR0FBQSxPQUhDLFdBQVVOLEVBQUEsTUFDVixRQUFTRSxFQUFBLEtBQUEsaUhDck1IOUIsR0FBc0IsOEJBK0J0QnVELEdBQWtCLENBQUN6QyxFQUFpQzBDLElBRTNELE9BQU8xQyxHQUFtQixVQUFZQSxFQUFlLE9BQVMsRUFBVUEsRUFFckUsT0FBTzBDLEdBQWlCLFVBQVlBLEVBQWEsT0FBUyxFQUFJQSxFQUFleEQsR0FNekV5RCxHQUFtQixDQUFDM0MsRUFBaUMwQyxJQUNoRTFDLElBQW1CLElBQVMwQyxJQUFpQixHQUtsQ2pELEdBQXdCLENBQUMsQ0FBRSxVQUFBQyxFQUFXLFVBQUFDLEVBQVcsU0FBQUMsRUFBVSxNQUFBTCxLQUE4QixDQUNwRyxNQUFNTSxFQUF1Qk4sRUFBTSxTQUFXLEdBQUssQ0FBQ0ssRUFDOUNFLEVBQVlKLEdBQWFILEVBQU0sT0FBU0csRUFHOUMsTUFBTyxFQUZZLENBQUNHLEdBQXdCRixHQUFhSixFQUFNLE9BQVNJLElBRWxELENBQUNHLENBQ3pCLEVBbUVhOEMsR0FBd0IsQ0FBQyxDQUNwQyxNQUFBQyxFQUNBLGVBQUE3QyxFQUNBLFVBQUFOLEVBQ0EsVUFBQUMsRUFDQSxTQUFBQyxFQUFXLEdBQ1gsV0FBQUssRUFDQSxNQUFBVixDQUNGLElBUU0sQ0FLSixHQUZBc0QsRUFBTSxNQUFRN0MsR0FBa0MsR0FFNUMsQ0FBQzZDLEVBQU0sT0FBUzVDLEVBQVksQ0FDOUIsTUFBTUMsRUFBYUMsSUFBaUJaLEdBQUEsWUFBQUEsRUFBTyxRQUFTLEdBQUlVLENBQVUsRUFFN0RDLEVBQVcsUUFDZDJDLEVBQU0sTUFBUTNDLEVBQVcsUUFFN0IsQ0FFQSxHQUFJLENBQUMyQyxFQUFNLFFBQVVuRCxHQUFhQyxHQUFZLENBQzVDLE1BQU1TLEVBQW1CQyxHQUFlLENBQ3RDLFVBQUFYLEVBQ0EsVUFBQUMsRUFDQSxTQUFBQyxFQUNBLE9BQU9MLEdBQUEsWUFBQUEsRUFBTyxRQUFTLEVBQUEsQ0FDeEIsRUFFSWEsRUFBaUIsUUFDcEJ5QyxFQUFNLE1BQVF6QyxFQUFpQixRQUVuQyxDQUNGLEVBd0JhQyxHQUFpQixDQUFDLENBQzdCLFVBQUFYLEVBQ0EsVUFBQUMsRUFDQSxTQUFBQyxFQUFXLEdBQ1gsTUFBQUwsQ0FDRixJQUEwQyxDQUN4QyxNQUFNZSxFQUFXLENBQ2YsUUFBUyxHQUNULE1BQU8sRUFBQSxFQVVULE9BUEFBLEVBQVMsTUFBUWIsR0FBc0IsQ0FDckMsVUFBQUMsRUFDQSxVQUFBQyxFQUNBLFNBQUFDLEVBQ0EsTUFBQUwsQ0FBQSxDQUNELEVBRUdlLEVBQVMsUUFFYkEsRUFBUyxRQUFVcEIsR0FFZlEsR0FBYUMsRUFDZlcsRUFBUyxRQUFVLGdDQUFnQ1gsQ0FBUyxRQUFRRCxDQUFTLHlCQUNwRUEsRUFDVFksRUFBUyxRQUFVLHFDQUFxQ1osQ0FBUyx5QkFDeERDLElBQ1RXLEVBQVMsUUFBVSxxQ0FBcUNYLENBQVMsMkJBRzVEVyxDQUNULEVBS08sU0FBU0gsR0FBaUJaLEVBQWVVLEVBQXVFLENBQ3JILFVBQVdNLEtBQWFOLEVBQVksQ0FDbEMsTUFBTUMsRUFBYUssRUFBVWhCLENBQUssRUFDbEMsR0FBSSxDQUFDVyxFQUFXLE1BQ2QsT0FBT0EsQ0FFWCxDQUVBLE1BQU8sQ0FDTCxRQUFTLEdBQ1QsTUFBTyxFQUFBLENBRVgsbUlDdlBFbUIsR0FBZSxDQUFBLG1WQW9CZixNQUFNdE0sRUFBUUMsRUFVUjZOLEVBQVExTSxFQUFBQSxJQUFJcEIsRUFBTSxLQUFLLEVBQ3ZCNk0sRUFBV3pMLEVBQUFBLElBQUksRUFBSyxFQUNwQlIsRUFBUVEsRUFBQUEsSUFBOEIsSUFBSSxFQUMxQ3lKLEVBQVd6SixFQUFBQSxJQUFJcEIsRUFBTSxRQUFRLEVBQzdCd0ssRUFBUXBKLEVBQUFBLElBQXdCcEIsRUFBTSxLQUFLLEVBRTNDK04sRUFBZXZLLEVBQUFBLFNBQVMsSUFBTWtLLEdBQWdCMU4sRUFBTSxNQUFPOE4sRUFBTSxLQUFLLENBQUMsRUFDdkVqQyxFQUFpQnJJLEVBQUFBLFNBQVMsSUFBT3hELEVBQU0sU0FBVyxHQUFHQSxFQUFNLEtBQUssS0FBT0EsRUFBTSxLQUFNLEVBQ25GZ08sRUFBV3hLLEVBQUFBLFNBQVMsSUFBT3hELEVBQU0sVUFBWSxDQUFDd0ssRUFBTSxPQUFVb0QsR0FBaUJFLEVBQU0sTUFBTzlOLEVBQU0sS0FBSyxDQUFDLEVBQ3hHaU4sRUFBZXpKLEVBQUFBLFNBQVMsSUFBTXFKLEVBQVMsT0FBUyxDQUFDSyxFQUFRLEtBQUssRUFDOURBLEVBQVUxSixFQUFBQSxTQUFTLElBQU1nSCxFQUFNLFFBQVUsTUFBUyxFQUVsRDJDLEVBQWdCLElBQU0sT0FDMUIsTUFBTUMsRUFBUSxJQUFJLFdBQVcsV0FBVyxHQUN4Q2xKLEVBQUF0RCxHQUFBLFlBQUFBLEVBQU8sUUFBUCxNQUFBc0QsRUFBYyxjQUFja0osRUFDOUIsRUFFTUMsRUFBYyxJQUFNLENBQ3hCUixFQUFTLE1BQVEsRUFDbkIsRUFFTVMsRUFBaUIsSUFBTSxDQUMzQlQsRUFBUyxNQUFRLEVBQ25CLEVBRUF4TCxPQUFBQSxFQUFBQSxNQUNFLElBQU1yQixFQUFNLE1BQ1osQ0FBQ29NLEVBQVVJLElBQWEsRUFDbEJKLElBQWFJLEdBQVlKLElBQWE1QixFQUFNLFNBQzlDQSxFQUFNLE1BQVE0QixFQUVsQixDQUFBLEVBR0Y2QixFQUFhLENBQUUsTUFBQUgsRUFBTyxNQUFBdEQsRUFBTyx3QkFJN0JySyxFQUFBQSxtQkF3SE0sTUFBQSxDQXZISCxNQUFLRyxFQUFBQSxlQUFBLHFCQUFxQ0MsUUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBWVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssVUFBVSxPQUFjVyxRQUFBWCxDQUFBLEVBQUksSUFBSSxRQUFlSyxFQUFBLFVBQVEsV0FBc0IrTixFQUFBLE9BQVEsT0FBQSxLQVNqSzNOLEVBQUFBLG1CQTZGTSxNQUFBLENBNUZILE1BQUtDLEVBQUFBLGVBQUEscUJBQXlDQyxRQUFBWCxDQUFBLEVBQUksU0FBUyxTQUFrQlcsUUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBY1csUUFBQVgsQ0FBQSxFQUFJLE1BQU0sT0FBZ0JXLFFBQUFYLENBQUEsRUFBSSxJQUFJLEtBQWNXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLE9BQU8sS0FBY1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEdBQUcsUUFBUSxRQUFpQkksRUFBTSxTQUFXTyxFQUFBQSxTQUFJLE9BQU8sWUFBVyxHQUFlQSxFQUFBQSxNQUFBWCxDQUFBLEVBQUksU0FBUyxHQUFHLE1BQUEsR0FXN1IsUUFBT3VOLENBQUEsR0FFUjlNLEVBQUFBLG1CQXdFTSxNQUFBLENBeEVBLHdCQUFRRSxFQUFBQSxNQUFBWCxDQUFBLEVBQUksUUFBUSxLQUFNVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxVQUFVLE9BQVFXLEVBQUFBLFNBQUksTUFBTSxJQUFJLENBQUEsQ0FBQSxHQVkvRE4sRUFBQSxxQkFYUkUsRUFBQUEsbUJBY1EsUUFBQSxPQWJMLE1BQUtHLEVBQUFBLGVBQUEsQ0FBZ0IyTSxFQUFBLE1BQVksQ0FBQSxZQUFpQjFNLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLEtBQUssT0FBTyxFQUFJVyxFQUFBQSxTQUFJLEtBQUssS0FBSyxRQUFxQkEsUUFBQVgsQ0FBQSxFQUFJLFNBQVMsU0FBc0JXLFFBQUFYLENBQUEsRUFBSSxZQUFZLEtBQWtCVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxJQUFJLEtBQWtCVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxLQUFLLEtBQWtCb08sRUFBQSxPQUFZek4sV0FBSSxLQUFLLE1BQU0sUUFBUSxRQUFxQkEsUUFBQVgsQ0FBQSxFQUFJLGVBQWUsR0FBQSxHQVNqVSxJQUFLSSxFQUFNLE9BQUEsb0JBR1Q2TCxFQUFBLEtBQWMsRUFBQSxHQUFBekwsRUFBQSxnREFHbkJDLEVBQUFBLG1CQXNEUyxTQUFBLENBckROLE1BQUtDLEVBQUFBLGVBQUEsQ0FBZ0JDLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLE9BQU8sS0FBa0JXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLEVBQUUsSUFBaUJXLFFBQUFYLENBQUEsRUFBSSxNQUFNLEtBQWtCSyxFQUFBLFVBQVlNLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLFlBQXlCVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLE1BQUEsR0FPbkwsU0FBVUssRUFBQSxTQUNWLEtBQU1BLEVBQUEsYUFDSCxRQUFKLElBQUlXLEVBQ0gsU0FBVWlLLEVBQUEsTUFDVixRQUFPd0MsRUFDUCxXQUFVQyxFQUNWLEdBQUl0TixFQUFNLDZDQUNGd0ssRUFBSyxNQUFBcEYsRUFBQSxJQUVkbEYsWUFBQSxFQUFBLEVBQUFDLEVBQUFBLG1CQTBCV3dFLEVBQUFBLFNBQUEsS0FBQU8sRUFBQUEsV0ExQmtCbEYsRUFBTSxVQUFsQnVOLHdEQUtOQSxFQUErQix1QkFKeENwTixFQUFBQSxtQkFjVyxXQUFBLENBYlIsTUFBS0csRUFBQUEsZUFBQSxDQUFHQyxRQUFBWCxDQUFBLEVBQUksTUFBTSxLQUFNVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksR0FBRyxRQUFRLE9BQU8sQ0FBQSxFQUM5QyxJQUFNMk4sRUFBK0IsTUFDckMsTUFBUUEsRUFBK0IsS0FBQSxJQUd4Q3JOLFlBQUEsRUFBQSxFQUFBQyxFQUFBQSxtQkFPU3dFLEVBQUFBLFNBQUEsS0FBQU8sRUFBQUEsV0FIV3FJLEVBQStCLFFBQTFDQyxrQkFKVHJOLEVBQUFBLG1CQU9TLFNBQUEsQ0FOTixNQUFLRyxFQUFBQSxlQUFBLENBQUdDLFFBQUFYLENBQUEsRUFBSSxNQUFNLEtBQU1XLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxHQUFHLFFBQVEsT0FBTyxDQUFBLEVBQzlDLElBQUs0TixFQUFPLE1BQ1osTUFBT0EsRUFBTyxLQUFBLEVBR1puTCxFQUFBQSxnQkFBQW1MLEVBQU8sS0FBSyxFQUFBLEdBQUF4RSxFQUFBLGtDQUluQjdJLEVBQUFBLG1CQVFTLFNBQUEsQ0FQTixNQUFLRyxFQUFBQSxlQUFBLENBQUdDLFFBQUFYLENBQUEsRUFBSSxNQUFNLEtBQU1XLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxHQUFHLFFBQVEsT0FBTyxDQUFBLEVBQzlDLElBQU0yTixFQUEwQixNQUNoQyxTQUFVL0MsRUFBQSxRQUFXK0MsRUFBMEIsU0FBZSxPQUM5RCxNQUFRQSxFQUEwQixLQUFBLEVBRy9CbEwsRUFBQUEsZ0JBQUFrTCxFQUEwQixLQUFLLEVBQUEsR0FBQXRFLEVBQUEsRUFBQSwrQkFJdkM5SSxFQUFBQSxtQkFRU3dFLEVBQUFBLFNBQUEsS0FBQU8sRUFBQUEsV0FIVWpGLEVBQUEsUUFBVnVOLGtCQUxUck4sRUFBQUEsbUJBUVMsU0FBQSxDQVBOLE1BQUtHLEVBQUFBLGVBQUEsQ0FBR0MsUUFBQVgsQ0FBQSxFQUFJLE1BQU0sS0FBTVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEdBQUcsUUFBUSxPQUFPLENBQUEsRUFDOUMsSUFBSzROLEVBQU8sTUFDWixTQUFVaEQsRUFBQSxRQUFVZ0QsRUFBTyxTQUFlLE9BQzFDLE1BQU9BLEVBQU8sS0FBQSxFQUdabkwsRUFBQUEsZ0JBQUFtTCxFQUFPLEtBQUssRUFBQSxHQUFBQyxFQUFBLG1DQXJDUmpELEVBQUEsS0FBSyxDQUFBLE9BMENsQmxJLEVBQUFBLFlBSUVDLEVBQUEsQ0FIQyxNQUFLakMsRUFBQUEsZUFBQSxDQUFHQyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksU0FBUyxTQUFVVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksWUFBWSxNQUFPVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxNQUFNLElBQUtXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxlQUFlLEdBQUcsQ0FBQSxFQUNsRyxLQUFNVyxFQUFBQSxNQUFBd0IsQ0FBQSxFQUFLLFlBQ1gsS0FBTXhCLEVBQUFBLE1BQUFFLENBQUEsRUFBSyxLQUFBLHNDQU1SVCxFQUFNLGdCQUFrQmdPLEVBQUEscUJBRmhDN04sRUFBQUEsbUJBY00sTUFBQSxPQWJILHdCQUFRSSxFQUFBQSxNQUFBWCxDQUFBLEVBQUksUUFBUSxLQUFNVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksTUFBTSxPQUFRVyxFQUFBQSxTQUFJLElBQUksT0FBTyxDQUFBLENBQUEsR0FPcER5TixFQUFBLHFCQUpSbk0sRUFBQUEsWUFLRVUsRUFBQSxPQUpDLHVCQUFPLEVBQUUsRUFDVCxLQUFNaEMsRUFBQUEsTUFBQXdCLENBQUEsRUFBSyxNQUNYLEtBQU14QixFQUFBQSxNQUFBRSxDQUFBLEVBQUssS0FBQSx1REFJZEosRUFBQUEsbUJBRU0sTUFBQSxDQUZBLHdCQUFRRSxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLE9BQU8sQ0FBQSxDQUFBLEVBQzlCeUMsRUFBQUEsZ0JBQUEyTCxFQUFBLE1BQVdELEVBQUEsTUFBZS9OLEVBQU0sY0FBYyxFQUFBLENBQUEsQ0FBQSxxRkM3TDVDa08sRUFBa0IsQ0FDN0IsS0FBTSxPQUNOLGVBQWdCLGlCQUNoQixNQUFPLFFBQ1AsTUFBTyxRQUNQLE9BQVEsU0FDUixTQUFVLFdBQ1YsT0FBUSxTQUNSLElBQUssTUFDTCxLQUFNLE9BQ04sS0FBTSxPQUNOLElBQUssTUFDTCxLQUFNLE1BQ1IsRUFJYUMsR0FBYSxDQUN4QixRQUFTLFVBQ1QsTUFBTyxRQUNQLFFBQVMsVUFDVCxPQUFRLFNBQ1IsSUFBSyxNQUNMLEtBQU0sT0FDTixJQUFLLEtBQ1AsRUNyQmFDLEdBQW1CLENBQUNDLEVBQXFCQyxJQUFpRCxDQUNyRyxHQUFJQSxFQUFXLE9BQU9BLEVBRXRCLE9BQVFELEVBQUEsQ0FDTixLQUFLSCxFQUFnQixJQUNuQixPQUFPQyxHQUFXLElBQ3BCLEtBQUtELEVBQWdCLE9BQ25CLE9BQU9DLEdBQVcsT0FDcEIsS0FBS0QsRUFBZ0IsT0FDbkIsT0FBT0MsR0FBVyxRQUNwQixLQUFLRCxFQUFnQixNQUNuQixPQUFPQyxHQUFXLE1BQ3BCLEtBQUtELEVBQWdCLElBQ25CLE9BQU9DLEdBQVcsR0FBQSxDQUl4Qiw0MEJDb0JFLE1BQU1uTyxFQUFRQyxFQXlCUjJELEVBQU9DLEVBRVA0SCxFQUFhdkosRUFBQUEsdUJBQXNDLEVBRW5Ed0osRUFBY3JDLEdBQUEsRUFFZHVDLEVBQVd4SyxFQUFBQSxJQUFzQmdKLEdBQWtCLFFBQVEsRUFDM0R5QyxFQUFXekwsRUFBQUEsSUFBYSxFQUFLLEVBQzdCbU4sRUFBZW5OLEVBQUFBLElBQTZCLElBQUksRUFDaER1SyxFQUFldkssRUFBQUEsSUFBYSxFQUFLLEVBQ2pDb04sRUFBZXBOLEVBQUFBLElBQWEsRUFBSyxFQUVqQ3lLLEVBQWlCckksRUFBQUEsU0FBUyxJQUFPeEQsRUFBTSxVQUFZQSxFQUFNLE1BQVEsR0FBR0EsRUFBTSxLQUFLLEtBQU9BLEVBQU0sS0FBTSxFQUNsRytMLEVBQVl2SSxFQUFBQSxTQUFTLElBQ3JCd0ksRUFBaUIsTUFBYyxHQUM5QkwsRUFBYSxNQUNYLENBQUNDLEVBQVMsTUFBTSxNQURTLEVBRWpDLEVBQ0tJLEVBQW1CeEksRUFBQUEsU0FBUyxJQUFNeEQsRUFBTSxRQUFVLEVBQUUsRUFDcERpTixFQUFlekosRUFBQUEsU0FBUyxJQUFNcUosRUFBUyxPQUFTLENBQUNLLEVBQVEsS0FBSyxFQUM5RHVCLEVBQXFCakwsRUFBQUEsU0FBZ0MsSUFBTTRLLEdBQWlCcE8sRUFBTSxLQUFNQSxFQUFNLFNBQVMsQ0FBQyxFQUN4RzBPLEVBQVlsTCxFQUFBQSxTQUFTLElBQ3pCeEQsRUFBTSxPQUFTa08sRUFBZ0IsVUFBWU0sRUFBYSxRQUFVLEdBQU9OLEVBQWdCLEtBQU9sTyxFQUFNLElBQUEsRUFFbEdrTixFQUFVMUosRUFBQUEsU0FBUyxJQUFNaUksRUFBVyxRQUFVLEVBQUUsRUFDaERrRCxFQUF3Qm5MLEVBQUFBLFNBQzVCLElBQU14RCxFQUFNLFVBQVl5TCxFQUFXLE9BQVN6TCxFQUFNLE9BQVNrTyxFQUFnQixRQUFBLEVBRXZFVSxFQUEyQnBMLEVBQUFBLFNBQVMsSUFBTXhELEVBQU0sT0FBU2tPLEVBQWdCLFFBQVEsRUFDakZqQyxFQUF3QnpJLFdBQVMsSUFBT3VJLEVBQVUsT0FBU0gsRUFBUyxNQUFNLFNBQVk1TCxFQUFNLGNBQWMsRUFFMUc2TyxFQUFjLElBQU0sT0FDeEJwRCxFQUFXLE1BQVEsSUFDbkJ2SCxFQUFBcUssRUFBYSxRQUFiLE1BQUFySyxFQUFvQixPQUN0QixFQUVNbUosRUFBYyxJQUFNLENBQ3hCUixFQUFTLE1BQVEsR0FDYjdNLEVBQU0sZUFBaUI0TSxHQUFjLFVBQW9CLE1BQVEsR0FDdkUsRUFFTVUsRUFBaUIsSUFBTSxDQUMzQlQsRUFBUyxNQUFRLEdBQ2I3TSxFQUFNLGVBQWlCNE0sR0FBYyxTQUFtQixNQUFRLEdBQ3RFLEVBRU1rQyxFQUFtQixJQUFNLFFBQzdCNUssRUFBQXFLLEVBQWEsUUFBYixNQUFBckssRUFBb0IsT0FDdEIsRUFFTTZLLEVBQW9DdkYsR0FBa0IsQ0FDckRxRCxFQUFTLE9BQ1ZyRCxFQUFFLFNBQVcrRSxFQUFhLFNBQVMsZUFBQSxDQUN6QyxFQUVBcEMsT0FBQUEsRUFBQUEsWUFBWSxJQUFNLENBQ2hCUCxFQUFTLE1BQVFaLEdBQXlCLENBQ3hDLGVBQWdCaEwsRUFBTSxNQUN0QixVQUFXQSxFQUFNLFVBQ2pCLFVBQVdBLEVBQU0sVUFDakIsU0FBVUEsRUFBTSxTQUNoQixXQUFZQSxFQUFNLFdBQ2xCLE1BQU95TCxDQUFBLENBQ1IsQ0FDSCxDQUFDLEVBRURwSyxFQUFBQSxNQUNFLENBQUNvSyxFQUFZLElBQU16TCxFQUFNLGNBQWMsRUFDdkMsSUFBTSxTQUNKLEdBQUksQ0FBQ0EsRUFBTSxlQUFnQixPQUUzQixNQUFNYyxJQUFTNkgsR0FBQXpFLEVBQUF1SCxFQUFXLFFBQVgsWUFBQXZILEVBQWtCLE1BQU0sU0FBeEIsWUFBQXlFLEVBQWdDLEtBQUssTUFBTyxPQUMzRDhDLEVBQVcsTUFBUTNLLEVBQVNkLEVBQU0sZUFBZWMsQ0FBTSxFQUFJLEVBQzdELEVBQ0EsQ0FBRSxVQUFXLEVBQUEsQ0FBSyxFQUdwQk8sRUFBQUEsTUFDRSxJQUFNcUssR0FBQSxZQUFBQSxFQUFhLGdCQUFnQixNQUNsQ1UsR0FBYSxDQUNSQSxNQUF1QixNQUFRLEdBQ3JDLEVBQ0EsQ0FBRSxVQUFXLEVBQUEsQ0FBSyxFQUdwQi9LLEVBQUFBLE1BQ0V1SyxFQUNBLElBQU0sQ0FDSmhJLEVBQUssUUFBU2dJLEVBQVMsTUFBTSxLQUFLLENBQ3BDLEVBQ0EsQ0FBRSxLQUFNLEdBQU0sVUFBVyxFQUFBLENBQUssd0JBS2hDekwsRUFBQUEsbUJBMEhNLE1BQUEsQ0F6SEgsTUFBS0csRUFBQUEsZUFBQSxtQkFBbUNDLFFBQUFYLENBQUEsRUFBSSxRQUFRLEtBQVlXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLFVBQVUsT0FBY1csUUFBQVgsQ0FBQSxFQUFJLElBQUksUUFBZUssRUFBQSxVQUFRLFdBQXNCOEwsRUFBQSxPQUFTLE9BQUEsS0FTaEsxTCxFQUFBQSxtQkF5R1EsUUFBQSxDQXhHTCxNQUFLQyxFQUFBQSxlQUFBLHlCQUE2Q0MsUUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBY1csUUFBQVgsQ0FBQSxFQUFJLE1BQU0sT0FBZ0JXLFFBQUFYLENBQUEsRUFBSSxJQUFJLEtBQWNXLFFBQUFYLENBQUEsRUFBSSxTQUFTLFNBQWtCVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxPQUFPLEtBQWNXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxHQUFHLFFBQVEsUUFBaUJXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLEVBQUUsS0FBYytPLEVBQUEsTUFBcUIsQ0FBSXBPLFdBQUksUUFBUSxNQUFNLEtBQU1BLFFBQUFYLENBQUEsRUFBSSxRQUFRLEtBQUssR0FBRyxFQUFBLENBQUtXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLEVBQUUsR0FBRyxFQUFXSyxFQUFBLFNBQVdNLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLFlBQWNXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLElBQUEsR0FZNVksSUFBS0ssRUFBQSxRQUNMLFFBQU82TyxFQUNQLFlBQVdDLENBQUEsR0FNSjlPLEVBQUEsMkJBSlI0QixFQUFBQSxZQUtFVSxFQUFBLE9BSkMsTUFBS2pDLEVBQUFBLGVBQUEsQ0FBR0MsRUFBQUEsU0FBSSxLQUFLLE1BQU0sUUFBUSxPQUFPLENBQUEsRUFDdEMsS0FBTU4sRUFBQSxZQUNOLEtBQU1NLEVBQUFBLE1BQUFFLENBQUEsRUFBSyxLQUFBLCtEQUlkSixFQUFBQSxtQkF3RE0sTUFBQSxDQXhEQSxNQUFLQyxFQUFBQSxlQUFBLENBQUdDLEVBQUFBLFNBQUksUUFBUSxLQUFNQSxRQUFBWCxDQUFBLEVBQUksTUFBTSxPQUFRVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksSUFBSSxRQUFTVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksTUFBTSxJQUFJLENBQUEsQ0FBQSxHQVF2RUssRUFBQSxzQkFQUkUsRUFBQUEsbUJBVU0sTUFBQSxPQVRILE1BQUtHLEVBQUFBLGVBQUEsMEJBQXNEQyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLFFBQXFCbU0sRUFBQSxPQUFheEwsV0FBSSxLQUFLLE1BQU0sUUFBUSxRQUFxQjBNLEVBQUEsTUFBWSxHQUFBLFFBQUEsc0JBUWpLaE4sRUFBQSxNQUFNLEVBQUEsQ0FBQSwrQkFHWEksRUFBQUEsbUJBOEJNLE1BQUEsQ0E5QkEsd0JBQVFFLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLEtBQU1XLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLFVBQVUsT0FBUVcsRUFBQUEsU0FBSSxNQUFNLElBQUksQ0FBQSxDQUFBLEdBUy9ETixFQUFBLHFCQVJSRSxFQUFBQSxtQkFXTSxNQUFBLE9BVkgsTUFBS0csRUFBQUEsZUFBQSx5QkFBeUQyTSxFQUFBLE1BQVksQ0FBQSxZQUFpQjFNLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLEtBQUssT0FBTyxFQUFJVyxFQUFBQSxTQUFJLEtBQUssS0FBSyxTQUF3QndMLEVBQUEsT0FBYXhMLFdBQUksS0FBSyxNQUFNLFFBQVEsUUFBdUJBLFFBQUFYLENBQUEsRUFBSSxPQUFPLEtBQW9CVyxRQUFBWCxDQUFBLEVBQUksZUFBZSxHQUFBLHNCQVNyUWlNLEVBQUEsS0FBYyxFQUFBLENBQUEsZ0RBR25CeEwsRUFBQUEsbUJBZUUsUUFBQSxDQWRDLGFBQWNKLEVBQUEsYUFBWSxLQUFBLE1BQzFCLE1BQUtLLEVBQUFBLGVBQUEsQ0FBR0MsV0FBSSxNQUFNLEtBQU1BLEVBQUFBLFNBQUksS0FBSyxLQUFLLE9BQVFOLEVBQUEsVUFBWU0sRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sV0FBVyxDQUFBLEVBQ2hGLFNBQVVLLEVBQUEsU0FDVixVQUFXd08sRUFBQSxNQUNYLFVBQVd4TyxFQUFBLFVBQ1gsVUFBV0EsRUFBQSxVQUNYLEtBQU1BLEVBQUEsYUFDSCxlQUFKLElBQUlzTyxFQUNILFNBQVV0TyxFQUFBLFNBQ1YsS0FBTXlPLEVBQUEsTUFDTixRQUFPckIsRUFDUCxXQUFVQyxFQUNWLEdBQUlyTixFQUFBLDZDQUNJd0wsRUFBVSxNQUFBckcsRUFBQSxnQ0FBVnFHLEVBQUEsS0FBVSxDQUFBLE9BV2Z4TCxFQUFBLHNCQVBSRSxFQUFBQSxtQkFVTSxNQUFBLE9BVEgsTUFBS0csRUFBQUEsZUFBQSwwQkFBc0RDLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLEtBQUssUUFBcUJtTSxFQUFBLE9BQWF4TCxXQUFJLEtBQUssTUFBTSxRQUFRLFFBQXFCME0sRUFBQSxNQUFZLEdBQUEsUUFBQSxzQkFRaktoTixFQUFBLE1BQU0sRUFBQSxDQUFBLG1DQU9MME8sRUFBQSxxQkFIUnhPLEVBQUFBLG1CQVVTLFNBQUEsT0FUTixRQUFPME8sRUFDUixLQUFLLFFBQUEsR0FHTHZNLEVBQUFBLFlBSUVDLEVBQUEsQ0FIQyx3QkFBUWhDLFFBQUFYLENBQUEsRUFBSSxPQUFPLEtBQUssSUFBSSxDQUFBLEVBQzVCLEtBQU1XLEVBQUFBLE1BQUF3QixDQUFBLEVBQUssTUFDWCxLQUFNeEIsRUFBQUEsTUFBQUUsQ0FBQSxFQUFLLEtBQUEsaUVBT1JtTyxFQUFBLHFCQUhSek8sRUFBQUEsbUJBVVMsU0FBQSxPQVROLFFBQUt5SSxFQUFBLENBQUEsSUFBQUEsRUFBQSxDQUFBLEVBQUF4RCxHQUFFb0osRUFBQSxNQUFZLENBQUlBLEVBQUEsT0FDeEIsS0FBSyxRQUFBLEdBR0xsTSxFQUFBQSxZQUlFQyxFQUFBLENBSEMsd0JBQVFoQyxRQUFBWCxDQUFBLEVBQUksT0FBTyxLQUFLLElBQUksQ0FBQSxFQUM1QixLQUFNVyxFQUFBQSxNQUFBd0IsQ0FBQSxFQUFLLFdBQ1gsS0FBTXhCLEVBQUFBLE1BQUFFLENBQUEsRUFBSyxLQUFBLHlFQVFWd0wsRUFBQSxxQkFIUnBLLEVBQUFBLFlBSUV3SyxHQUFBLE9BSEMsV0FBVU4sRUFBQSxNQUNWLFFBQVNFLEVBQUEsS0FBQSxpTkNwUmRLLEdBQWUsQ0FBQSxvbkJBdUNmLE1BQU10TSxFQUFRQyxFQXFCUjZOLEVBQVExTSxFQUFBQSxJQUFJcEIsRUFBTSxLQUFLLEVBQ3ZCNk0sRUFBV3pMLEVBQUFBLElBQUksRUFBSyxFQUNwQlIsRUFBUVEsRUFBQUEsSUFBNkIsSUFBSSxFQUN6Q29OLEVBQWVwTixFQUFBQSxJQUFJLEVBQUssRUFDeEJvSixFQUFRcEosRUFBQUEsSUFBSXBCLEVBQU0sS0FBSyxFQUV2QitOLEVBQWV2SyxFQUFBQSxTQUFTLElBQU1rSyxHQUFnQjFOLEVBQU0sTUFBTzhOLEVBQU0sS0FBSyxDQUFDLEVBQ3ZFakMsRUFBaUJySSxFQUFBQSxTQUFTLElBQU94RCxFQUFNLFVBQVlBLEVBQU0sTUFBUSxHQUFHQSxFQUFNLEtBQUssS0FBT0EsRUFBTSxLQUFNLEVBQ2xHZ1AsRUFBV3hMLEVBQUFBLFNBQVMsSUFBTXhELEVBQU0sVUFBWXdLLEVBQU0sS0FBSyxFQUN2RHdELEVBQVd4SyxFQUFBQSxTQUNmLElBQU94RCxFQUFNLFVBQVl3SyxFQUFNLFFBQVUsUUFBYSxDQUFDQSxFQUFNLE9BQVVvRCxHQUFpQkUsRUFBTSxNQUFPOU4sRUFBTSxLQUFLLENBQUEsRUFFNUdpTixFQUFlekosRUFBQUEsU0FBUyxJQUFNcUosRUFBUyxPQUFTLENBQUNLLEVBQVEsS0FBSyxFQUM5REEsRUFBVTFKLEVBQUFBLFNBQVMsSUFBTWdILEVBQU0sUUFBVSxJQUFNQSxFQUFNLFFBQVUsTUFBUyxFQUN4RWtFLEVBQVlsTCxFQUFBQSxTQUFTLElBQ3pCeEQsRUFBTSxPQUFTa08sRUFBZ0IsVUFBWU0sRUFBYSxRQUFVLEdBQU9OLEVBQWdCLEtBQU9sTyxFQUFNLElBQUEsRUFHbEc2TyxFQUFjLElBQU0sT0FDeEJyRSxFQUFNLE1BQVEsSUFDZHRHLEVBQUF0RCxFQUFNLFFBQU4sTUFBQXNELEVBQWEsT0FDZixFQUVNbUosRUFBYyxJQUFNLENBQ3hCUixFQUFTLE1BQVEsRUFDbkIsRUFFTVMsRUFBaUIsSUFBTSxDQUMzQlQsRUFBUyxNQUFRLEdBRVpyQyxFQUFNLFFBQ1RBLEVBQU0sTUFBUSxJQUdoQnlFLEVBQUEsQ0FDRixFQUVNQyxFQUFjLElBQU0sU0FDeEIsR0FBSWxQLEVBQU0sZUFBZ0IsQ0FDeEIsTUFBTWMsSUFBUzZILEdBQUF6RSxFQUFBc0csRUFBTSxRQUFOLFlBQUF0RyxFQUFhLE1BQU0sU0FBbkIsWUFBQXlFLEVBQTJCLEtBQUssTUFBTyxPQUV0RDZCLEVBQU0sTUFBUTFKLEVBQVNkLEVBQU0sZUFBZWMsQ0FBTSxFQUFJLEVBQ3hELENBQ0YsRUFFTW1PLEVBQW1CLElBQU0sQ0FDN0JwQixHQUFzQixDQUNwQixNQUFBQyxFQUNBLGVBQWdCOU4sRUFBTSxNQUN0QixVQUFXQSxFQUFNLFVBQ2pCLFVBQVdBLEVBQU0sVUFDakIsU0FBVUEsRUFBTSxTQUNoQixXQUFZQSxFQUFNLFdBQ2xCLE1BQUF3SyxDQUFBLENBQ0QsQ0FDSCxFQUVNMkUsRUFBZS9DLEdBQXFCLENBQ3hDNUIsRUFBTSxNQUFRNEIsQ0FDaEIsRUFFQS9LLE9BQUFBLEVBQUFBLE1BQ0UsSUFBTXJCLEVBQU0sTUFDWixDQUFDb00sRUFBVUksSUFBYSxFQUNsQkosSUFBYUksR0FBWUosSUFBYTVCLEVBQU0sU0FDOUNBLEVBQU0sTUFBUTRCLEVBRWxCLENBQUEsRUFHRjZCLEVBQWEsQ0FDWCxNQUFBSCxFQUNBLFNBQVU5TixFQUFNLFNBQ2hCLFlBQUFtUCxFQUNBLE1BQUEzRSxDQUFBLENBQ0Qsd0JBSURySyxFQUFBQSxtQkFtSU0sTUFBQSxDQWxJSCxNQUFLRyxFQUFBQSxlQUFBLG1CQUFtQ0MsUUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBWVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssVUFBVSxPQUFjVyxRQUFBWCxDQUFBLEVBQUksSUFBSSxRQUFlSyxFQUFBLFVBQVEsV0FBc0IrTixFQUFBLE9BQVEsT0FBQSxLQVMvSjNOLEVBQUFBLG1CQXdHUSxRQUFBLENBdkdMLE1BQUtDLEVBQUFBLGVBQUEseUJBQTZDQyxRQUFBWCxDQUFBLEVBQUksUUFBUSxLQUFjVyxRQUFBWCxDQUFBLEVBQUksTUFBTSxPQUFnQlcsUUFBQVgsQ0FBQSxFQUFJLElBQUksS0FBY1csUUFBQVgsQ0FBQSxFQUFJLFNBQVMsU0FBa0JXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLE9BQU8sS0FBY1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEdBQUcsUUFBUSxRQUFpQm9QLEVBQUEsTUFBUSxDQUFJek8sV0FBSSxRQUFRLE1BQU0sS0FBTUEsUUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBSyxHQUFHLEVBQUEsQ0FBS1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFFBQVEsRUFBRSxHQUFHLEVBQVdXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLEVBQUUsS0FBY0ssRUFBQSxTQUFXTSxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxZQUFjVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxJQUFBLEdBWS9YLElBQUtLLEVBQUEsT0FBQSxHQU1FQSxFQUFBLDJCQUpSNEIsRUFBQUEsWUFLRVUsRUFBQSxPQUpDLE1BQUtqQyxFQUFBQSxlQUFBLENBQUdDLEVBQUFBLFNBQUksS0FBSyxNQUFNLFFBQVEsT0FBTyxDQUFBLEVBQ3RDLEtBQU1OLEVBQUEsWUFDTixLQUFNTSxFQUFBQSxNQUFBRSxDQUFBLEVBQUssS0FBQSwrREFJZEosRUFBQUEsbUJBeURNLE1BQUEsQ0F6REEsTUFBS0MsRUFBQUEsZUFBQSxDQUFHQyxFQUFBQSxTQUFJLFFBQVEsS0FBTUEsUUFBQVgsQ0FBQSxFQUFJLE1BQU0sT0FBUVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLElBQUksUUFBU1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE1BQU0sSUFBSSxDQUFBLENBQUEsR0FRdkVLLEVBQUEsc0JBUFJFLEVBQUFBLG1CQVVNLE1BQUEsT0FUSCxNQUFLRyxFQUFBQSxlQUFBLDBCQUFzREMsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxRQUFxQm9PLEVBQUEsT0FBWXpOLFdBQUksS0FBSyxNQUFNLFFBQVEsUUFBcUIwTSxFQUFBLE1BQVksR0FBQSxRQUFBLHNCQVFoS2hOLEVBQUEsTUFBTSxFQUFBLENBQUEsK0JBR1hJLEVBQUFBLG1CQStCTSxNQUFBLENBL0JBLHdCQUFRRSxFQUFBQSxNQUFBWCxDQUFBLEVBQUksUUFBUSxLQUFNVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxVQUFVLE9BQVFXLEVBQUFBLFNBQUksTUFBTSxJQUFJLENBQUEsQ0FBQSxHQVMvRE4sRUFBQSxxQkFSUkUsRUFBQUEsbUJBV00sTUFBQSxPQVZILE1BQUtHLEVBQUFBLGVBQUEseUJBQXlEMk0sRUFBQSxNQUFZLENBQUEsWUFBaUIxTSxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLE9BQU8sRUFBSVcsRUFBQUEsU0FBSSxLQUFLLEtBQUssU0FBd0J5TixFQUFBLE9BQVl6TixXQUFJLEtBQUssTUFBTSxRQUFRLFFBQXVCQSxRQUFBWCxDQUFBLEVBQUksT0FBTyxLQUFvQlcsUUFBQVgsQ0FBQSxFQUFJLGVBQWUsR0FBQSxzQkFTcFFpTSxFQUFBLEtBQWMsRUFBQSxDQUFBLGdEQUduQnhMLEVBQUFBLG1CQWdCRSxRQUFBLENBZkMsYUFBY0osRUFBQSxhQUFZLEtBQUEsTUFDMUIsTUFBS0ssRUFBQUEsZUFBQSxDQUFHQyxXQUFJLE1BQU0sS0FBTU4sWUFBWU0sRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sWUFBYVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxNQUFNLENBQUEsRUFDaEYsU0FBVUssRUFBQSxTQUNWLFVBQVdBLEVBQUEsVUFDWCxVQUFXQSxFQUFBLFVBQ1gsS0FBTUEsRUFBQSxhQUNILFFBQUosSUFBSVcsRUFDSCxTQUFVWCxFQUFBLFNBQ1YsS0FBTXlPLEVBQUEsTUFDTixTQUFRTyxFQUNSLFFBQU81QixFQUNQLFdBQVVDLEVBQ1YsUUFBTzRCLEVBQ1AsR0FBSWpQLEVBQUEsNkNBQ0l1SyxFQUFLLE1BQUFwRixFQUFBLGdDQUFMb0YsRUFBQSxLQUFLLENBQUEsT0FXVnZLLEVBQUEsc0JBUFJFLEVBQUFBLG1CQVVNLE1BQUEsT0FUSCxNQUFLRyxFQUFBQSxlQUFBLDBCQUFzREMsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxRQUFxQm9PLEVBQUEsT0FBWXpOLFdBQUksS0FBSyxNQUFNLFFBQVEsUUFBcUIwTSxFQUFBLE1BQVksR0FBQSxRQUFBLHNCQVFoS2hOLEVBQUEsTUFBTSxFQUFBLENBQUEsbUNBT0wrTyxFQUFBLE9BQVkvTyxFQUFBLE9BQVNNLEVBQUFBLE1BQUEyTixDQUFBLEVBQWdCLHdCQUg3Qy9OLEVBQUFBLG1CQVVTLFNBQUEsT0FUTixRQUFPME8sRUFDUixLQUFLLFFBQUEsR0FHTHZNLEVBQUFBLFlBSUVDLEVBQUEsQ0FIQyx3QkFBUWhDLFFBQUFYLENBQUEsRUFBSSxPQUFPLEtBQUssSUFBSSxDQUFBLEVBQzVCLEtBQU1XLEVBQUFBLE1BQUF3QixDQUFBLEVBQUssTUFDWCxLQUFNeEIsRUFBQUEsTUFBQUUsQ0FBQSxFQUFLLEtBQUEsaUVBT1JSLEVBQUEsT0FBU00sRUFBQUEsTUFBQTJOLENBQUEsRUFBZ0Isd0JBSGpDL04sRUFBQUEsbUJBVVMsU0FBQSxPQVROLFFBQUt5SSxFQUFBLENBQUEsSUFBQUEsRUFBQSxDQUFBLEVBQUF4RCxHQUFFb0osRUFBQSxNQUFZLENBQUlBLEVBQUEsT0FDeEIsS0FBSyxRQUFBLEdBR0xsTSxFQUFBQSxZQUlFQyxFQUFBLENBSEMsd0JBQVFoQyxRQUFBWCxDQUFBLEVBQUksT0FBTyxLQUFLLElBQUksQ0FBQSxFQUM1QixLQUFNVyxFQUFBQSxNQUFBd0IsQ0FBQSxFQUFLLFdBQ1gsS0FBTXhCLEVBQUFBLE1BQUFFLENBQUEsRUFBSyxLQUFBLHlFQU9WUixFQUFBLGdCQUFrQitOLEVBQUEscUJBRjFCN04sRUFBQUEsbUJBY00sTUFBQSxPQWJILHdCQUFRSSxFQUFBQSxNQUFBWCxDQUFBLEVBQUksUUFBUSxLQUFNVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksTUFBTSxPQUFRVyxFQUFBQSxTQUFJLElBQUksT0FBTyxDQUFBLENBQUEsR0FPcER5TixFQUFBLHFCQUpSbk0sRUFBQUEsWUFLRVUsRUFBQSxPQUpDLHVCQUFPLEVBQUUsRUFDVCxLQUFNaEMsRUFBQUEsTUFBQXdCLENBQUEsRUFBSyxNQUNYLEtBQU14QixFQUFBQSxNQUFBRSxDQUFBLEVBQUssS0FBQSx1REFJZEosRUFBQUEsbUJBRU0sTUFBQSxDQUZBLHdCQUFRRSxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLE9BQU8sQ0FBQSxDQUFBLG9CQUM5Qm9PLEVBQUEsTUFBV0QsRUFBQSxNQUFlOU4sRUFBQSxjQUFjLEVBQUEsQ0FBQSxDQUFBLHFuQkN0UGpELE1BQU1ELEVBQVFDLEVBaUJSMkQsRUFBT0MsRUFFUDRILEVBQWF2SixFQUFBQSx1QkFBc0MsRUFFbkR3SixFQUFjckMsR0FBQSxFQUVkdUMsRUFBV3hLLEVBQUFBLElBQXNCZ0osR0FBa0IsUUFBUSxFQUMzRHlDLEVBQVd6TCxFQUFBQSxJQUFhLEVBQUssRUFDN0J1SyxFQUFldkssRUFBQUEsSUFBYSxFQUFLLEVBQ2pDZ08sRUFBa0JoTyxFQUFBQSxJQUFnQyxJQUFJLEVBRXREeUssRUFBaUJySSxFQUFBQSxTQUFTLElBQU94RCxFQUFNLFNBQVcsR0FBR0EsRUFBTSxLQUFLLEtBQU9BLEVBQU0sS0FBTSxFQUNuRitMLEVBQVl2SSxFQUFBQSxTQUFTLElBQ3JCd0ksRUFBaUIsTUFBYyxHQUM5QkwsRUFBYSxNQUNYLENBQUNDLEVBQVMsTUFBTSxNQURTLEVBRWpDLEVBQ0tJLEVBQW1CeEksRUFBQUEsU0FBUyxJQUFNeEQsRUFBTSxRQUFVLEVBQUUsRUFDcERpTixFQUFlekosRUFBQUEsU0FBUyxJQUFNcUosRUFBUyxPQUFTLENBQUNLLEVBQVEsS0FBSyxFQUM5REEsRUFBVTFKLEVBQUFBLFNBQVMsSUFBTWlJLEVBQVcsUUFBVSxFQUFFLEVBQ2hEUSxFQUF3QnpJLFdBQVMsSUFBT3VJLEVBQVUsT0FBU0gsRUFBUyxNQUFNLFNBQVk1TCxFQUFNLGNBQWMsRUFFMUdxTixFQUFjLElBQU0sQ0FDeEJSLEVBQVMsTUFBUSxHQUNiN00sRUFBTSxlQUFpQjRNLEdBQWMsVUFBb0IsTUFBUSxHQUN2RSxFQUVNVSxFQUFpQixJQUFNLENBQzNCVCxFQUFTLE1BQVEsR0FDYjdNLEVBQU0sZUFBaUI0TSxHQUFjLFNBQW1CLE1BQVEsR0FDdEUsRUFFTWtDLEVBQW1CLElBQU0sUUFDN0I1SyxFQUFBa0wsRUFBZ0IsUUFBaEIsTUFBQWxMLEVBQXVCLE9BQ3pCLEVBRU1tTCxFQUF1QzdGLEdBQWtCLENBQ3hEcUQsRUFBUyxPQUNWckQsRUFBRSxTQUFXNEYsRUFBZ0IsU0FBUyxlQUFBLENBQzVDLEVBRUFqRCxPQUFBQSxFQUFBQSxZQUFZLElBQU0sQ0FDaEJQLEVBQVMsTUFBUVosR0FBeUIsQ0FDeEMsZUFBZ0JoTCxFQUFNLE1BQ3RCLFVBQVdBLEVBQU0sVUFDakIsVUFBV0EsRUFBTSxVQUNqQixTQUFVQSxFQUFNLFNBQ2hCLFdBQVlBLEVBQU0sV0FDbEIsTUFBT3lMLENBQUEsQ0FDUixDQUNILENBQUMsRUFFRHBLLEVBQUFBLE1BQ0UsSUFBTXFLLEdBQUEsWUFBQUEsRUFBYSxnQkFBZ0IsTUFDbENVLEdBQWEsQ0FDUkEsTUFBdUIsTUFBUSxHQUNyQyxFQUNBLENBQUUsVUFBVyxFQUFBLENBQUssRUFHcEIvSyxFQUFBQSxNQUNFdUssRUFDQSxJQUFNLENBQ0poSSxFQUFLLFFBQVNnSSxFQUFTLE1BQU0sS0FBSyxDQUNwQyxFQUNBLENBQUUsS0FBTSxHQUFNLFVBQVcsRUFBQSxDQUFLLHdCQUtoQ3pMLEVBQUFBLG1CQW1ETSxNQUFBLENBbERILE1BQUtHLEVBQUFBLGVBQUEsQ0FBQSxzQkFBMEJDLEVBQUFBLFNBQUksUUFBUSxLQUFNQSxFQUFBQSxTQUFJLEtBQUssVUFBVSxPQUFRQSxFQUFBQSxNQUFBWCxDQUFBLEVBQUksSUFBSSxRQUFTbU0sRUFBQSxPQUFTLE9BQUEsQ0FBQSxDQUFBLEdBRXZHMUwsRUFBQUEsbUJBeUNRLFFBQUEsQ0F4Q0wsTUFBS0MsRUFBQUEsZUFBQSw2QkFBaURDLFFBQUFYLENBQUEsRUFBSSxJQUFJLEtBQWNXLFFBQUFYLENBQUEsRUFBSSxTQUFTLFNBQWtCVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxPQUFPLEtBQWNXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLElBQUksS0FBY1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFNBQVMsR0FBRyxPQUFnQlcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEdBQUcsUUFBUSxRQUFpQlcsUUFBQVgsQ0FBQSxFQUFJLE9BQU8sSUFBQSxHQVVwUCxJQUFLSyxFQUFBLFFBQ0wsUUFBTzZPLEVBQ1AsWUFBV08sQ0FBQSxHQVVKcFAsRUFBQSxxQkFSUkUsRUFBQUEsbUJBV00sTUFBQSxPQVZILE1BQUtHLEVBQUFBLGVBQUEsNkJBQXFEQyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksUUFBUSxFQUFFLElBQWVxTixFQUFBLE1BQVksQ0FBQSxZQUFpQjFNLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLEtBQUssT0FBTyxFQUFJVyxFQUFBQSxTQUFJLEtBQUssS0FBSyxTQUFvQndMLEVBQUEsT0FBYXhMLFdBQUksS0FBSyxNQUFNLFFBQVEsUUFBbUJBLFFBQUFYLENBQUEsRUFBSSxlQUFlLEdBQUEsc0JBU3ZQaU0sRUFBQSxLQUFjLEVBQUEsQ0FBQSxnREFHbkJ4TCxFQUFBQSxtQkFZRSxXQUFBLENBWEMsTUFBS0MsRUFBQUEsZUFBQSxDQUFHQyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksUUFBUSxNQUFPVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLE9BQVFXLFFBQUFYLENBQUEsRUFBSSxRQUFRLEVBQUUsSUFBS1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE1BQU0sSUFBSSxDQUFBLEVBQ2xGLFVBQVdLLEVBQUEsVUFDWCxVQUFXQSxFQUFBLFVBQ1gsS0FBTUEsRUFBQSxhQUNILGtCQUFKLElBQUltUCxFQUNILFNBQVVuUCxFQUFBLFNBQ1YsS0FBTUEsRUFBQSxLQUNOLFFBQU9vTixFQUNQLFdBQVVDLEVBQ1YsR0FBSXJOLEVBQUEsNkNBQ0l3TCxFQUFVLE1BQUFyRyxFQUFBLDZCQUFWcUcsRUFBQSxLQUFVLENBQUEsV0FPZlEsRUFBQSxxQkFIUnBLLEVBQUFBLFlBSUV3SyxHQUFBLE9BSEMsV0FBVU4sRUFBQSxNQUNWLFFBQVNFLEVBQUEsS0FBQSx1TEM1SmRLLEdBQWUsQ0FBQSwrV0EyQmYsTUFBTXRNLEVBQVFDLEVBYVI2TixFQUFRMU0sRUFBQUEsSUFBSXBCLEVBQU0sS0FBSyxFQUN2QjZNLEVBQVd6TCxFQUFBQSxJQUFJLEVBQUssRUFDcEJSLEVBQVFRLEVBQUFBLElBQTZCLElBQUksRUFDekNvSixFQUFRcEosRUFBQUEsSUFBSXBCLEVBQU0sS0FBSyxFQUV2QitOLEVBQWV2SyxFQUFBQSxTQUFTLElBQU1rSyxHQUFnQjFOLEVBQU0sTUFBTzhOLEVBQU0sS0FBSyxDQUFDLEVBQ3ZFakMsRUFBaUJySSxFQUFBQSxTQUFTLElBQU94RCxFQUFNLFNBQVcsR0FBR0EsRUFBTSxLQUFLLEtBQU9BLEVBQU0sS0FBTSxFQUNuRmdPLEVBQVd4SyxFQUFBQSxTQUNmLElBQU94RCxFQUFNLFVBQVl3SyxFQUFNLFFBQVUsUUFBYSxDQUFDQSxFQUFNLE9BQVVvRCxHQUFpQkUsRUFBTSxNQUFPOU4sRUFBTSxLQUFLLENBQUEsRUFFNUdpTixFQUFlekosRUFBQUEsU0FBUyxJQUFNcUosRUFBUyxPQUFTLENBQUNLLEVBQVEsS0FBSyxFQUM5REEsRUFBVTFKLEVBQUFBLFNBQVMsSUFBTWdILEVBQU0sUUFBVSxJQUFNQSxFQUFNLFFBQVUsTUFBUyxFQUV4RTZDLEVBQWMsSUFBTSxDQUN4QlIsRUFBUyxNQUFRLEVBQ25CLEVBRU1TLEVBQWlCLElBQU0sQ0FDM0JULEVBQVMsTUFBUSxHQUVackMsRUFBTSxRQUNUQSxFQUFNLE1BQVEsR0FFbEIsRUFFTXlFLEVBQW1CLElBQ2hCcEIsR0FBc0IsQ0FDM0IsTUFBQUMsRUFDQSxlQUFnQjlOLEVBQU0sTUFDdEIsVUFBV0EsRUFBTSxVQUNqQixVQUFXQSxFQUFNLFVBQ2pCLFNBQVVBLEVBQU0sU0FDaEIsTUFBQXdLLENBQUEsQ0FDRCxFQUdIbkosT0FBQUEsRUFBQUEsTUFDRSxJQUFNckIsRUFBTSxNQUNaLENBQUNvTSxFQUFVSSxJQUFhLEVBQ2xCSixJQUFhSSxHQUFZSixJQUFhNUIsRUFBTSxTQUM5Q0EsRUFBTSxNQUFRNEIsRUFFbEIsQ0FBQSxFQUdGNkIsRUFBYSxDQUNYLE1BQUFILEVBQ0EsU0FBVTlOLEVBQU0sU0FDaEIsTUFBQXdLLENBQUEsQ0FDRCx3QkFJRHJLLEVBQUFBLG1CQTJETSxNQUFBLENBMURILE1BQUtHLEVBQUFBLGVBQUEsQ0FBQSxzQkFBMEJDLEVBQUFBLFNBQUksUUFBUSxLQUFNQSxFQUFBQSxTQUFJLEtBQUssVUFBVSxPQUFRQSxFQUFBQSxNQUFBWCxDQUFBLEVBQUksSUFBSSxRQUFTb08sRUFBQSxPQUFRLE9BQUEsQ0FBQSxDQUFBLEdBRXRHM04sRUFBQUEsbUJBd0NRLFFBQUEsQ0F2Q0wsTUFBS0MsRUFBQUEsZUFBQSw2QkFBaURDLFFBQUFYLENBQUEsRUFBSSxJQUFJLEtBQWNXLFFBQUFYLENBQUEsRUFBSSxTQUFTLFNBQWtCVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxPQUFPLEtBQWNXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLEtBQUssSUFBYVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFFBQVEsSUFBSSxLQUFjVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksU0FBUyxHQUFHLE9BQWdCVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksR0FBRyxRQUFRLFFBQWlCVyxRQUFBWCxDQUFBLEVBQUksT0FBTyxJQUFBLEdBV2xSLElBQUtLLEVBQUEsT0FBQSxHQVNFQSxFQUFBLHFCQVBSRSxFQUFBQSxtQkFVTSxNQUFBLE9BVEgsTUFBS0csRUFBQUEsZUFBQSw2QkFBcUQyTSxFQUFBLE1BQVksQ0FBQSxZQUFpQjFNLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLEtBQUssT0FBTyxFQUFJVyxFQUFBQSxTQUFJLEtBQUssS0FBSyxTQUFvQnlOLEVBQUEsT0FBWXpOLFdBQUksS0FBSyxNQUFNLFFBQVEsUUFBbUJBLFFBQUFYLENBQUEsRUFBSSxlQUFlLEdBQUEsc0JBUXpOaU0sRUFBQSxLQUFjLEVBQUEsQ0FBQSxnREFHbkJ4TCxFQUFBQSxtQkFhRSxXQUFBLENBWkMsd0JBQVFFLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLE1BQU9XLFFBQUFYLENBQUEsRUFBSSxNQUFNLEtBQU1XLFFBQUFYLENBQUEsRUFBSSxLQUFLLEtBQUssTUFBTSxDQUFBLEVBQy9ELFVBQVdLLEVBQUEsVUFDWCxVQUFXQSxFQUFBLFVBQ1gsS0FBTUEsRUFBQSxhQUNILFFBQUosSUFBSVcsRUFDSCxTQUFVWCxFQUFBLFNBQ1YsS0FBTUEsRUFBQSxLQUNOLFNBQVFnUCxFQUNSLFFBQU81QixFQUNQLFdBQVVDLEVBQ1YsR0FBSXJOLEVBQUEsNkNBQ0l1SyxFQUFLLE1BQUFwRixFQUFBLDZCQUFMb0YsRUFBQSxLQUFLLENBQUEsV0FNVnZLLEVBQUEsZ0JBQWtCK04sRUFBQSxxQkFGMUI3TixFQUFBQSxtQkFhTSxNQUFBLE9BWkgsd0JBQVFJLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLEtBQU1XLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxNQUFNLE9BQVFXLEVBQUFBLFNBQUksSUFBSSxPQUFPLENBQUEsQ0FBQSxHQU1wRHlOLEVBQUEscUJBSFJuTSxFQUFBQSxZQUlFVSxFQUFBLE9BSEMsS0FBTWhDLEVBQUFBLE1BQUF3QixDQUFBLEVBQUssTUFDWCxLQUFNeEIsRUFBQUEsTUFBQUUsQ0FBQSxFQUFLLEtBQUEsdURBSWRKLEVBQUFBLG1CQUVNLE1BQUEsQ0FGQSx3QkFBUUUsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxPQUFPLENBQUEsQ0FBQSxvQkFDOUJvTyxFQUFBLE1BQVdELEVBQUEsTUFBZTlOLEVBQUEsY0FBYyxFQUFBLENBQUEsQ0FBQSxxRkNuSmpEcU0sR0FBZSxDQUFBLDRNQXVDZnBNLEVBQUFBLFlBQUEyQixFQUFBQSxZQTBCWUMsRUFBQUEsd0JBVkw3QixFQUFBLE9BQU8sRUFBQSxDQWZYLE1BQUtLLEVBQUFBLGVBQUEsa0JBQWtDQyxRQUFBWCxDQUFBLEVBQUksTUFBTSxPQUFjVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxPQUFPLEtBQVlXLFFBQUFYLENBQUEsRUFBSSxRQUFRLEtBQVlXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxTQUFnQlcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxRQUFlVyxRQUFBWCxDQUFBLEVBQUksSUFBSSxRQUFlVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksUUFBUSxFQUFFLElBQVdXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLEVBQUUsS0FBWVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFVBQVUsS0FBSyxJQUFXVyxRQUFBWCxDQUFBLEVBQUksTUFBTSxJQUFBLEdBYXhSLEtBQU1LLEVBQUEsS0FDTixPQUFRQSxFQUFBLFNBQVdNLEVBQUFBLFNBQU8sTUFBUSxNQUFBLHFCQUduQyxJQUF3QixDQUF4QkYsRUFBQUEsbUJBQXdCLDhCQUFmSixFQUFBLEtBQUssRUFBQSxDQUFBLEVBTU5BLEVBQUEsNEJBSlI0QixFQUFBQSxZQUtFVSxFQUFBLE9BSkMsd0JBQVFoQyxRQUFBWCxDQUFBLEVBQUksT0FBTyxLQUFLLElBQUksQ0FBQSxFQUM1QixLQUFNSyxFQUFBLGFBQ04sS0FBTU0sRUFBQUEsTUFBQUUsQ0FBQSxFQUFLLEtBQUEsa0pDbEVMNk8sR0FBYSxDQUN4QixHQUFJLEtBQ0osR0FBSSxLQUNKLEdBQUksS0FDSixHQUFJLElBQ04sRUFFYUMsR0FBUSxDQUNuQixHQUFJLElBQ0osR0FBSSxJQUNKLEdBQUksS0FDSixHQUFJLElBQ04sRUNQYUMsR0FBZ0IsTUFBT0MsR0FBc0IsQ0FJeEQsTUFBTUMsRUFBTyxTQUFTLEtBRXRCLEdBQUlELEdBQ0YsR0FBSSxDQUFDQyxFQUFLLFFBQVEsWUFBYSxDQUM3QixNQUFNQyxFQUFVLE9BQU8sUUFFdkJELEVBQUssUUFBUSxZQUFjQyxFQUFRLFNBQUEsRUFDbkNELEVBQUssTUFBTSxZQUFZLG1CQUFvQixHQUFHQyxDQUFPLElBQUksRUFDekRELEVBQUssTUFBTSxZQUFZLFFBQVMsR0FBRyxFQUNuQ0EsRUFBSyxNQUFNLFlBQVksYUFBYyx3Q0FBd0MsRUFDN0VBLEVBQUssTUFBTSxZQUFZLGFBQWMsUUFBUSxFQUM3Q0EsRUFBSyxNQUFNLFlBQVksV0FBWSxPQUFPLENBSTVDLFVBRUEsTUFBTUUsV0FBQSxFQUNGLENBQUMsU0FBUyxjQUFjLGNBQWMsRUFBRyxDQUMzQyxNQUFNQyxFQUFlLFNBQVNILEVBQUssUUFBUSxhQUFlLEdBQUcsRUFLN0RBLEVBQUssTUFBTSxlQUFlLE9BQU8sRUFDakNBLEVBQUssTUFBTSxlQUFlLFdBQVcsRUFDckNBLEVBQUssTUFBTSxlQUFlLFdBQVcsRUFDckNBLEVBQUssTUFBTSxlQUFlLFVBQVUsRUFDcENBLEVBQUssTUFBTSxlQUFlLGtCQUFrQixFQUU1QyxPQUFPLFNBQVMsQ0FDZCxTQUFVLE9BQ1YsSUFBS0csQ0FBQSxDQUNOLEVBRUQsT0FBT0gsRUFBSyxRQUFRLFdBQ3RCLENBRUosRUFFYUksR0FBZSxpQkFFZkMsR0FBbUIsSUFBTSxDQUNwQyxJQUFJQyxFQUFXLFNBQVMsZUFBZUYsRUFBWSxFQUM5Q0UsSUFDSEEsRUFBVyxTQUFTLGNBQWMsS0FBSyxFQUN2Q0EsRUFBUyxHQUFLRixHQUNkRSxFQUFTLGFBQWEsaUJBQWtCLEVBQUUsRUFDMUMsU0FBUyxLQUFLLFlBQVlBLENBQVEsR0FFcENBLEVBQVMsTUFBTSxVQUFZLFNBQzdCLDZYQ3JDRSxNQUFNaFEsRUFBUUMsRUFZUjJELEVBQU9DLEVBRVBvTSxFQUFnRDdPLEVBQUFBLElBQUEsRUFDaEQ4TyxFQUFrRDlPLEVBQUFBLElBQUEsRUFFbEQrTyxFQUFTak8sRUFBQUEsU0FBb0JqQyxFQUFBLFlBQW1CLEVBRWhEbVEsRUFBMEIsSUFBTSxRQUNwQ2xNLEVBQUFnTSxFQUFZLFFBQVosTUFBQWhNLEVBQW1CLFdBQ3JCLEVBRU1tTSxFQUEyQixJQUFNLFFBQ3JDbk0sRUFBQWdNLEVBQVksUUFBWixNQUFBaE0sRUFBbUIsT0FDckIsRUFFTW9NLEVBQXFCLElBQU0sQ0FDL0JWLEVBQUFBLFNBQVMsSUFBTSxDQUNSSyxFQUFhLFFBQ2xCQSxFQUFhLE1BQU0sVUFBWSxFQUNqQyxDQUFDLENBQ0gsRUFFTU0sRUFBUSxTQUFZLENBQ3BCdlEsRUFBTSxhQUNPLE1BQU1BLEVBQU0sWUFBQSxJQUNaLEtBR2pCbVEsRUFBTyxNQUFRLEdBQ2pCLEVBRU1LLEVBQXNCLElBQU0sQ0FDNUJ4USxFQUFNLGVBQWV1USxFQUFBLENBQzNCLEVBRU1FLEVBQXVCakgsR0FBYSxDQUN4Q0EsRUFBRSxlQUFBLEVBQ0V4SixFQUFNLGVBQWV1USxFQUFBLENBQzNCLEVBRUFsUCxPQUFBQSxFQUFBQSxNQUFNOE8sRUFBUSxJQUFNLENBQ2JELEVBQVksUUFDYkMsRUFBTyxPQUNUQyxFQUFBLEVBQ0FFLEVBQUEsR0FFQUQsRUFBQSxFQUVGYixHQUFjVyxFQUFPLEtBQUssRUFDNUIsQ0FBQyxFQUVETyxFQUFBQSxjQUFjLElBQU0sQ0FDbEJYLEdBQUEsQ0FDRixDQUFDLEVBRUR0SCxFQUFBQSxVQUFVLElBQU0sQ0FDVjBILEVBQU8sT0FDVEMsRUFBQSxDQUVKLENBQUMsd0JBSUR2TyxFQUFBQSxZQTRGVzhPLFdBQUEsQ0E1RkEsT0FBUXBRLEVBQUFBLE1BQUF1UCxFQUFBLENBQVksRUFBQSxHQUM3QnpQLEVBQUFBLG1CQTBGUyxTQUFBLENBekZOLE1BQUtDLEVBQUFBLGVBQUEsQ0FBQSxhQUFpQkMsUUFBQVgsQ0FBQSxFQUFJLEdBQUcsUUFBU1csUUFBQVgsQ0FBQSxFQUFJLE9BQU8sS0FBTVcsUUFBQVgsQ0FBQSxFQUFJLE1BQU0sS0FBTVcsUUFBQVgsQ0FBQSxFQUFJLFNBQVMsR0FBRyxNQUFNLENBQUEsVUFDMUYsY0FBSixJQUFJc1EsRUFDSCx3Q0FBMEJqUSxFQUFBLE1BQUssRUFDL0Isd0JBQVl1USxFQUFtQixDQUFBLE1BQUEsQ0FBQSxFQUMvQixvQ0FBRCxJQUFBLENBQUEsRUFBYyxDQUFBLFNBQUEsQ0FBQSxHQUNiLHFCQUFnQkMsRUFBbUIsQ0FBQSxRQUFBLENBQUEsQ0FBQSxHQUVwQ3BRLEVBQUFBLG1CQWlGTSxNQUFBLENBaEZILE1BQUtDLEVBQUFBLGVBQUEsbUJBQTJDQyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksR0FBRyxRQUFRLFFBQW1CVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxPQUFPLElBQWVXLFFBQUFYLENBQUEsRUFBSSxRQUFRLEtBQWdCVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxVQUFVLE9BQWtCVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksU0FBUyxHQUFHLE9BQWtCVyxRQUFBWCxDQUFBLEVBQUksU0FBUyxTQUFvQlcsUUFBQVgsQ0FBQSxFQUFJLFlBQVksT0FBa0JXLFFBQUFYLENBQUEsRUFBSSxPQUFPLElBQWVXLFFBQUFYLENBQUEsRUFBSSxNQUFNLEtBQWdCVyxRQUFBWCxDQUFBLEVBQUksTUFBTSxTQUFvQlcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLGVBQWMsQ0FBRVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sTUFBTSxFQUFHVyxRQUFBK08sRUFBQSxFQUFXLEVBQUUsQ0FBQSxLQWVqYWpQLEVBQUFBLG1CQWtDUyxTQUFBLENBakNOLE1BQUtDLEVBQUFBLGVBQUEscUJBQWlEQyxRQUFBWCxDQUFBLEVBQUksTUFBTSxPQUFvQlcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sT0FBTyxJQUFpQlcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sTUFBTSxJQUFpQlcsUUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBa0JXLFFBQUFYLENBQUEsRUFBSSxJQUFJLEtBQWtCVyxRQUFBWCxDQUFBLEVBQUksVUFBVSxRQUFxQlcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFFBQVEsRUFBRSxJQUFpQlcsUUFBQVgsQ0FBQSxFQUFJLFNBQVMsU0FBc0JXLFFBQUFYLENBQUEsRUFBSSxRQUFRLEdBQUEsS0FrQjNUSyxFQUFBLDRCQUxSNEIsRUFBQUEsWUFNRTBDLEVBQUEsT0FMQyxLQUFNaEUsRUFBQUEsTUFBQXdCLENBQUEsRUFBSyxhQUNYLFNBQVV4QixFQUFBQSxNQUFBOEMsQ0FBQSxFQUFTLFdBQ25CLHVCQUFPTyxFQUFJLE1BQUEsR0FDWixNQUFNLE1BQUEsMkRBSVJ2RCxFQUFBQSxtQkFHRSxNQUFBLENBRkMsd0JBQVFFLFFBQUFYLENBQUEsRUFBSSxLQUFLLEtBQUssVUFBVSxDQUFBLEVBQ2pDLFlBQUF5QyxFQUFBQSxnQkFBUXBDLEVBQU0sS0FBRCxDQUFBLGNBUVBBLEVBQUEsNkJBTFI0QixFQUFBQSxZQU1FMEMsRUFBQSxPQUxDLE1BQUtqRSxFQUFBQSxlQUFBLENBQUdDLFdBQUksS0FBSyxLQUFLLElBQUtBLFFBQUFYLENBQUEsRUFBSSxLQUFLLE9BQU8sSUFBS1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sS0FBSyxJQUFJLENBQUEsRUFDcEUsS0FBTVcsRUFBQUEsTUFBQXdCLENBQUEsRUFBSyxNQUNYLFNBQVV4QixFQUFBQSxNQUFBOEMsQ0FBQSxFQUFTLFdBQ25CLFFBQU9rTixDQUFBLHVFQUtabFEsRUFBQUEsbUJBYU0sTUFBQSxDQVpILE1BQUtDLEVBQUFBLGVBQUEsc0JBQWtEQyxRQUFBWCxDQUFBLEVBQUksUUFBUSxLQUFrQlcsUUFBQVgsQ0FBQSxFQUFJLFVBQVUsUUFBcUJXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxTQUFTLEVBQUUsT0FBb0JXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxTQUFTLEVBQUUsS0FBa0JXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLEVBQUUsSUFBaUJXLFFBQUFYLENBQUEsRUFBSSxNQUFNLElBQUEsV0FTbE8sZUFBSixJQUFJcVEsQ0FBQSxHQUVKek4sRUFBQUEsV0FBUUMsRUFBQSxPQUFBLFVBQUEsQ0FBQSxFQUFBLE9BQUEsRUFBQSxDQUFBLEtBYUZtTyxFQUFBQSxPQUFPLHNCQVZmelEsRUFBQUEsbUJBYVMsU0FBQSxPQVpOLE1BQUtHLEVBQUFBLGVBQUEscUJBQWlEQyxRQUFBWCxDQUFBLEVBQUksTUFBTSxJQUFpQlcsUUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBa0JXLFFBQUFYLENBQUEsRUFBSSxJQUFJLElBQWlCVyxRQUFBWCxDQUFBLEVBQUksVUFBVSxRQUFxQlcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFFBQVEsRUFBRSxJQUFpQlcsUUFBQVgsQ0FBQSxFQUFJLE9BQU8sR0FBQSxLQVd0TjRDLEVBQUFBLFdBQXNCQyxFQUFBLE9BQUEsU0FBQSxDQUFBLEVBQUEsT0FBQSxFQUFBLENBQUEseVFDL0s5QixNQUFNekMsRUFBUUMsRUFFUitFLEVBQWU5QyxFQUFBQSx1QkFBc0MsRUFFckQyTyxFQUFvQnJOLEVBQUFBLFNBQVMsSUFBTSxJQUFJLE1BQU14RCxFQUFNLFNBQVMsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLENBQUM4USxFQUFPak0sSUFBVUEsRUFBUSxDQUFDLENBQUMsRUFFdkdJLEVBQWVKLEdBQWtCLENBQ3JDRyxFQUFhLE1BQVFILENBQ3ZCLEVBRU1rTSxFQUFzQixJQUFNLENBQ2hDL0wsRUFBYSxPQUNmLEVBRU1nTSxFQUFrQixJQUFNLENBQzVCaE0sRUFBYSxPQUNmLDhCQUlBN0UsRUFBQUEsbUJBOEJVLFVBQUEsQ0E3QlAsTUFBS0csRUFBQUEsZUFBQSxDQUFBLGtCQUFzQkMsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBTVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE1BQU0sT0FBUVcsUUFBQVgsQ0FBQSxFQUFJLE1BQU0sT0FBUVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLElBQUksUUFBU1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE1BQU0sSUFBSSxDQUFBLENBQUEsR0FFakgwQyxFQUFBQSxZQUtFaUMsRUFBQSxDQUpDLFNBQVVTLEVBQUEsT0FBWSxFQUN0QixLQUFNekUsRUFBQUEsTUFBQXdCLENBQUEsRUFBSyxhQUNYLFNBQVV4QixFQUFBQSxNQUFBOEMsQ0FBQSxFQUFTLFdBQ25CLFFBQU8wTixDQUFBLHlDQUdWMVEsRUFBQUEsbUJBWUssS0FBQSxDQVpBLE1BQUtDLEVBQUFBLGVBQUEsQ0FBR0MsRUFBQUEsU0FBSSxRQUFRLEtBQU1BLFFBQUFYLENBQUEsRUFBSSxNQUFNLE9BQVFXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxJQUFJLFFBQVNXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxhQUFhLEdBQUcsQ0FBQSxDQUFBLG9CQUNwRk8sRUFBQUEsbUJBVUt3RSxFQUFBQSxTQUFBLEtBQUFPLEVBQUFBLFdBUndCMkwsRUFBQSxNQUFwQkksa0JBRlQ5USxFQUFBQSxtQkFVSyxLQUFBLENBVEYsSUFBSzhRLEdBQWdCLENBR3RCM08sRUFBQUEsWUFLRTRPLEdBQUEsQ0FKQyxTQUFVbE0sRUFBQSxRQUFpQmlNLEVBQzNCLE1BQU9BLEVBQ1AsU0FBVTFRLEVBQUFBLE1BQUE4QyxDQUFBLEVBQVMsV0FDbkIsUUFBSytCLEdBQUVILEVBQVlnTSxDQUFnQixDQUFBLGtFQUsxQzNPLEVBQUFBLFlBS0VpQyxFQUFBLENBSkMsU0FBVVMsRUFBQSxPQUFnQjZMLFFBQWtCQSxFQUFBLE1BQWtCLE9BQU0sQ0FBQSxFQUNwRSxLQUFNdFEsRUFBQUEsTUFBQXdCLENBQUEsRUFBSyxjQUNYLFNBQVV4QixFQUFBQSxNQUFBOEMsQ0FBQSxFQUFTLFdBQ25CLFFBQU8yTixDQUFBLGlEQ3hEUkcsR0FBUSxDQUFDLE1BQU8sUUFBUyxTQUFVLE1BQU0sRUFDekNDLEdBQWEsQ0FBQyxRQUFTLEtBQUssRUFDNUJDLEdBQTBCRixHQUFNLE9BQU8sQ0FBQ0csRUFBS0MsSUFBU0QsRUFBSSxPQUFPQyxFQUFNQSxFQUFPLElBQU1ILEdBQVcsQ0FBQyxFQUFHRyxFQUFPLElBQU1ILEdBQVcsQ0FBQyxDQUFDLEVBQUcsRUFBRSxFQUNsSUksR0FBTSxLQUFLLElBQ1hDLEdBQU0sS0FBSyxJQUNYQyxHQUFRLEtBQUssTUFDYkMsR0FBUSxLQUFLLE1BQ2JDLEVBQWVDLElBQU0sQ0FDekIsRUFBR0EsRUFDSCxFQUFHQSxDQUNMLEdBQ01DLEdBQWtCLENBQ3RCLEtBQU0sUUFDTixNQUFPLE9BQ1AsT0FBUSxNQUNSLElBQUssUUFDUCxFQUNNQyxHQUF1QixDQUMzQixNQUFPLE1BQ1AsSUFBSyxPQUNQLEVBQ0EsU0FBU0MsR0FBTUMsRUFBT3pILEVBQU8wSCxFQUFLLENBQ2hDLE9BQU9ULEdBQUlRLEVBQU9ULEdBQUloSCxFQUFPMEgsQ0FBRyxDQUFDLENBQ25DLENBQ0EsU0FBU0MsR0FBUzNILEVBQU80SCxFQUFPLENBQzlCLE9BQU8sT0FBTzVILEdBQVUsV0FBYUEsRUFBTTRILENBQUssRUFBSTVILENBQ3RELENBQ0EsU0FBUzZILEdBQVFDLEVBQVcsQ0FDMUIsT0FBT0EsRUFBVSxNQUFNLEdBQUcsRUFBRSxDQUFDLENBQy9CLENBQ0EsU0FBU0MsR0FBYUQsRUFBVyxDQUMvQixPQUFPQSxFQUFVLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FDL0IsQ0FDQSxTQUFTRSxHQUFnQkMsRUFBTSxDQUM3QixPQUFPQSxJQUFTLElBQU0sSUFBTSxHQUM5QixDQUNBLFNBQVNDLEdBQWNELEVBQU0sQ0FDM0IsT0FBT0EsSUFBUyxJQUFNLFNBQVcsT0FDbkMsQ0FDQSxTQUFTRSxHQUFZTCxFQUFXLENBQzlCLE1BQU8sQ0FBQyxNQUFPLFFBQVEsRUFBRSxTQUFTRCxHQUFRQyxDQUFTLENBQUMsRUFBSSxJQUFNLEdBQ2hFLENBQ0EsU0FBU00sR0FBaUJOLEVBQVcsQ0FDbkMsT0FBT0UsR0FBZ0JHLEdBQVlMLENBQVMsQ0FBQyxDQUMvQyxDQUNBLFNBQVNPLEdBQWtCUCxFQUFXUSxFQUFPQyxFQUFLLENBQzVDQSxJQUFRLFNBQ1ZBLEVBQU0sSUFFUixNQUFNQyxFQUFZVCxHQUFhRCxDQUFTLEVBQ2xDVyxFQUFnQkwsR0FBaUJOLENBQVMsRUFDMUNZLEVBQVNSLEdBQWNPLENBQWEsRUFDMUMsSUFBSUUsRUFBb0JGLElBQWtCLElBQU1ELEtBQWVELEVBQU0sTUFBUSxTQUFXLFFBQVUsT0FBU0MsSUFBYyxRQUFVLFNBQVcsTUFDOUksT0FBSUYsRUFBTSxVQUFVSSxDQUFNLEVBQUlKLEVBQU0sU0FBU0ksQ0FBTSxJQUNqREMsRUFBb0JDLEdBQXFCRCxDQUFpQixHQUVyRCxDQUFDQSxFQUFtQkMsR0FBcUJELENBQWlCLENBQUMsQ0FDcEUsQ0FLQSxTQUFTRSxHQUE4QmYsRUFBVyxDQUNoRCxPQUFPQSxFQUFVLFFBQVEsYUFBY1UsR0FBYWpCLEdBQXFCaUIsQ0FBUyxDQUFDLENBQ3JGLENBNkJBLFNBQVNJLEdBQXFCZCxFQUFXLENBQ3ZDLE9BQU9BLEVBQVUsUUFBUSx5QkFBMEJmLEdBQVFPLEdBQWdCUCxDQUFJLENBQUMsQ0FDbEYsQ0FDQSxTQUFTK0IsR0FBb0JDLEVBQVMsQ0FDcEMsTUFBTyxDQUNMLElBQUssRUFDTCxNQUFPLEVBQ1AsT0FBUSxFQUNSLEtBQU0sRUFDTixHQUFHQSxDQUNQLENBQ0EsQ0FDQSxTQUFTQyxHQUFpQkQsRUFBUyxDQUNqQyxPQUFPLE9BQU9BLEdBQVksU0FBV0QsR0FBb0JDLENBQU8sRUFBSSxDQUNsRSxJQUFLQSxFQUNMLE1BQU9BLEVBQ1AsT0FBUUEsRUFDUixLQUFNQSxDQUNWLENBQ0EsQ0FDQSxTQUFTRSxHQUFpQkMsRUFBTSxDQUM5QixLQUFNLENBQ0osRUFBQUMsRUFDQSxFQUFBQyxFQUNBLE1BQUFDLEVBQ0EsT0FBQUMsQ0FDSixFQUFNSixFQUNKLE1BQU8sQ0FDTCxNQUFBRyxFQUNBLE9BQUFDLEVBQ0EsSUFBS0YsRUFDTCxLQUFNRCxFQUNOLE1BQU9BLEVBQUlFLEVBQ1gsT0FBUUQsRUFBSUUsRUFDWixFQUFBSCxFQUNBLEVBQUFDLENBQ0osQ0FDQSxDQ3BJQSxTQUFTRyxHQUEyQkMsRUFBTTFCLEVBQVdTLEVBQUssQ0FDeEQsR0FBSSxDQUNGLFVBQUFrQixFQUNBLFNBQUFDLENBQ0osRUFBTUYsRUFDSixNQUFNRyxFQUFXeEIsR0FBWUwsQ0FBUyxFQUNoQ1csRUFBZ0JMLEdBQWlCTixDQUFTLEVBQzFDOEIsRUFBYzFCLEdBQWNPLENBQWEsRUFDekMxQixFQUFPYyxHQUFRQyxDQUFTLEVBQ3hCK0IsRUFBYUYsSUFBYSxJQUMxQkcsRUFBVUwsRUFBVSxFQUFJQSxFQUFVLE1BQVEsRUFBSUMsRUFBUyxNQUFRLEVBQy9ESyxFQUFVTixFQUFVLEVBQUlBLEVBQVUsT0FBUyxFQUFJQyxFQUFTLE9BQVMsRUFDakVNLEVBQWNQLEVBQVVHLENBQVcsRUFBSSxFQUFJRixFQUFTRSxDQUFXLEVBQUksRUFDekUsSUFBSUssRUFDSixPQUFRbEQsRUFBSSxDQUNWLElBQUssTUFDSGtELEVBQVMsQ0FDUCxFQUFHSCxFQUNILEVBQUdMLEVBQVUsRUFBSUMsRUFBUyxNQUNsQyxFQUNNLE1BQ0YsSUFBSyxTQUNITyxFQUFTLENBQ1AsRUFBR0gsRUFDSCxFQUFHTCxFQUFVLEVBQUlBLEVBQVUsTUFDbkMsRUFDTSxNQUNGLElBQUssUUFDSFEsRUFBUyxDQUNQLEVBQUdSLEVBQVUsRUFBSUEsRUFBVSxNQUMzQixFQUFHTSxDQUNYLEVBQ00sTUFDRixJQUFLLE9BQ0hFLEVBQVMsQ0FDUCxFQUFHUixFQUFVLEVBQUlDLEVBQVMsTUFDMUIsRUFBR0ssQ0FDWCxFQUNNLE1BQ0YsUUFDRUUsRUFBUyxDQUNQLEVBQUdSLEVBQVUsRUFDYixFQUFHQSxFQUFVLENBQ3JCLENBQ0EsQ0FDRSxPQUFRMUIsR0FBYUQsQ0FBUyxFQUFDLENBQzdCLElBQUssUUFDSG1DLEVBQU94QixDQUFhLEdBQUt1QixHQUFlekIsR0FBT3NCLEVBQWEsR0FBSyxHQUNqRSxNQUNGLElBQUssTUFDSEksRUFBT3hCLENBQWEsR0FBS3VCLEdBQWV6QixHQUFPc0IsRUFBYSxHQUFLLEdBQ2pFLEtBQ04sQ0FDRSxPQUFPSSxDQUNULENBU0EsTUFBTUMsR0FBa0IsTUFBT1QsRUFBV0MsRUFBVW5SLElBQVcsQ0FDN0QsS0FBTSxDQUNKLFVBQUF1UCxFQUFZLFNBQ1osU0FBQXFDLEVBQVcsV0FDWCxXQUFBQyxFQUFhLENBQUEsRUFDYixTQUFBQyxDQUNKLEVBQU05UixFQUNFK1IsRUFBa0JGLEVBQVcsT0FBTyxPQUFPLEVBQzNDN0IsRUFBTSxNQUFPOEIsRUFBUyxPQUFTLEtBQU8sT0FBU0EsRUFBUyxNQUFNWCxDQUFRLEdBQzVFLElBQUlwQixFQUFRLE1BQU0rQixFQUFTLGdCQUFnQixDQUN6QyxVQUFBWixFQUNBLFNBQUFDLEVBQ0EsU0FBQVMsQ0FDSixDQUFHLEVBQ0csQ0FDRixFQUFBaEIsRUFDQSxFQUFBQyxDQUNKLEVBQU1HLEdBQTJCakIsRUFBT1IsRUFBV1MsQ0FBRyxFQUNoRGdDLEVBQW9CekMsRUFDcEIwQyxFQUFpQixDQUFBLEVBQ2pCQyxFQUFhLEVBQ2pCLFFBQVNDLEVBQUksRUFBR0EsRUFBSUosRUFBZ0IsT0FBUUksSUFBSyxDQUMvQyxLQUFNLENBQ0osS0FBQTNULEVBQ0EsR0FBQTRULENBQ04sRUFBUUwsRUFBZ0JJLENBQUMsRUFDZixDQUNKLEVBQUdFLEVBQ0gsRUFBR0MsRUFDSCxLQUFBQyxFQUNBLE1BQUFDLENBQ04sRUFBUSxNQUFNSixFQUFHLENBQ1gsRUFBQXhCLEVBQ0EsRUFBQUMsRUFDQSxpQkFBa0J0QixFQUNsQixVQUFXeUMsRUFDWCxTQUFBSixFQUNBLGVBQUFLLEVBQ0EsTUFBQWxDLEVBQ0EsU0FBQStCLEVBQ0EsU0FBVSxDQUNSLFVBQUFaLEVBQ0EsU0FBQUMsQ0FDUixDQUNBLENBQUssRUFDRFAsRUFBSXlCLEdBQXdCekIsRUFDNUJDLEVBQUl5QixHQUF3QnpCLEVBQzVCb0IsRUFBaUIsQ0FDZixHQUFHQSxFQUNILENBQUN6VCxDQUFJLEVBQUcsQ0FDTixHQUFHeVQsRUFBZXpULENBQUksRUFDdEIsR0FBRytULENBQ1gsQ0FDQSxFQUNRQyxHQUFTTixHQUFjLEtBQ3pCQSxJQUNJLE9BQU9NLEdBQVUsV0FDZkEsRUFBTSxZQUNSUixFQUFvQlEsRUFBTSxXQUV4QkEsRUFBTSxRQUNSekMsRUFBUXlDLEVBQU0sUUFBVSxHQUFPLE1BQU1WLEVBQVMsZ0JBQWdCLENBQzVELFVBQUFaLEVBQ0EsU0FBQUMsRUFDQSxTQUFBUyxDQUNaLENBQVcsRUFBSVksRUFBTSxPQUVaLENBQ0MsRUFBQTVCLEVBQ0EsRUFBQUMsQ0FDVixFQUFZRyxHQUEyQmpCLEVBQU9pQyxFQUFtQmhDLENBQUcsR0FFOURtQyxFQUFJLEdBRVIsQ0FDQSxNQUFPLENBQ0wsRUFBQXZCLEVBQ0EsRUFBQUMsRUFDQSxVQUFXbUIsRUFDWCxTQUFBSixFQUNBLGVBQUFLLENBQ0osQ0FDQSxFQVVBLGVBQWVRLEdBQWVDLEVBQU92TyxFQUFTLENBQzVDLElBQUl3TyxFQUNBeE8sSUFBWSxTQUNkQSxFQUFVLENBQUEsR0FFWixLQUFNLENBQ0osRUFBQXlNLEVBQ0EsRUFBQUMsRUFDQSxTQUFBaUIsRUFDQSxNQUFBL0IsRUFDQSxTQUFBNkMsRUFDQSxTQUFBaEIsQ0FDSixFQUFNYyxFQUNFLENBQ0osU0FBQUcsRUFBVyxvQkFDWCxhQUFBQyxFQUFlLFdBQ2YsZUFBQUMsRUFBaUIsV0FDakIsWUFBQUMsRUFBYyxHQUNkLFFBQUF4QyxFQUFVLENBQ2QsRUFBTXBCLEdBQVNqTCxFQUFTdU8sQ0FBSyxFQUNyQk8sRUFBZ0J4QyxHQUFpQkQsQ0FBTyxFQUV4QzBDLEVBQVVOLEVBQVNJLEVBRE5ELElBQW1CLFdBQWEsWUFBYyxXQUNiQSxDQUFjLEVBQzVESSxFQUFxQnpDLEdBQWlCLE1BQU1vQixFQUFTLGdCQUFnQixDQUN6RSxTQUFXYSxFQUF3QixNQUFPYixFQUFTLFdBQWEsS0FBTyxPQUFTQSxFQUFTLFVBQVVvQixDQUFPLEtBQU8sTUFBT1AsRUFBZ0NPLEVBQVVBLEVBQVEsZ0JBQW1CLE1BQU9wQixFQUFTLG9CQUFzQixLQUFPLE9BQVNBLEVBQVMsbUJBQW1CYyxFQUFTLFFBQVEsR0FDaFMsU0FBQUMsRUFDQSxhQUFBQyxFQUNBLFNBQUFsQixDQUNKLENBQUcsQ0FBQyxFQUNJakIsRUFBT29DLElBQW1CLFdBQWEsQ0FDM0MsRUFBQW5DLEVBQ0EsRUFBQUMsRUFDQSxNQUFPZCxFQUFNLFNBQVMsTUFDdEIsT0FBUUEsRUFBTSxTQUFTLE1BQzNCLEVBQU1BLEVBQU0sVUFDSnFELEVBQWUsTUFBT3RCLEVBQVMsaUJBQW1CLEtBQU8sT0FBU0EsRUFBUyxnQkFBZ0JjLEVBQVMsUUFBUSxHQUM1R1MsRUFBZSxNQUFPdkIsRUFBUyxXQUFhLEtBQU8sT0FBU0EsRUFBUyxVQUFVc0IsQ0FBWSxHQUFPLE1BQU90QixFQUFTLFVBQVksS0FBTyxPQUFTQSxFQUFTLFNBQVNzQixDQUFZLElBQU8sQ0FDdkwsRUFBRyxFQUNILEVBQUcsQ0FDUCxFQUFNLENBQ0YsRUFBRyxFQUNILEVBQUcsQ0FDUCxFQUNRRSxFQUFvQjVDLEdBQWlCb0IsRUFBUyxzREFBd0QsTUFBTUEsRUFBUyxzREFBc0QsQ0FDL0ssU0FBQWMsRUFDQSxLQUFBakMsRUFDQSxhQUFBeUMsRUFDQSxTQUFBeEIsQ0FDSixDQUFHLEVBQUlqQixDQUFJLEVBQ1QsTUFBTyxDQUNMLEtBQU13QyxFQUFtQixJQUFNRyxFQUFrQixJQUFNTCxFQUFjLEtBQU9JLEVBQVksRUFDeEYsUUFBU0MsRUFBa0IsT0FBU0gsRUFBbUIsT0FBU0YsRUFBYyxRQUFVSSxFQUFZLEVBQ3BHLE1BQU9GLEVBQW1CLEtBQU9HLEVBQWtCLEtBQU9MLEVBQWMsTUFBUUksRUFBWSxFQUM1RixPQUFRQyxFQUFrQixNQUFRSCxFQUFtQixNQUFRRixFQUFjLE9BQVNJLEVBQVksQ0FDcEcsQ0FDQSxDQW9GQSxTQUFTRSxHQUFpQnRELEVBQVd1RCxFQUFlQyxFQUFtQixDQUVyRSxPQUQyQ3hELEVBQVksQ0FBQyxHQUFHd0QsRUFBa0IsT0FBT2xFLEdBQWFDLEdBQWFELENBQVMsSUFBTVUsQ0FBUyxFQUFHLEdBQUd3RCxFQUFrQixPQUFPbEUsR0FBYUMsR0FBYUQsQ0FBUyxJQUFNVSxDQUFTLENBQUMsRUFBSXdELEVBQWtCLE9BQU9sRSxHQUFhRCxHQUFRQyxDQUFTLElBQU1BLENBQVMsR0FDeFAsT0FBT0EsR0FDM0NVLEVBQ0tULEdBQWFELENBQVMsSUFBTVUsSUFBY3VELEVBQWdCbEQsR0FBOEJmLENBQVMsSUFBTUEsRUFBWSxJQUVySCxFQUNSLENBQ0gsQ0FPQSxNQUFNbUUsR0FBZ0IsU0FBVXZQLEVBQVMsQ0FDdkMsT0FBSUEsSUFBWSxTQUNkQSxFQUFVLENBQUEsR0FFTCxDQUNMLEtBQU0sZ0JBQ04sUUFBQUEsRUFDQSxNQUFNLEdBQUd1TyxFQUFPLENBQ2QsSUFBSWlCLEVBQXVCQyxFQUF3QkMsRUFDbkQsS0FBTSxDQUNKLE1BQUE5RCxFQUNBLGVBQUFrQyxFQUNBLFVBQUExQyxFQUNBLFNBQUF1QyxFQUNBLFNBQUFjLENBQ1IsRUFBVUYsRUFDRSxDQUNKLFVBQUFvQixFQUFZLEdBQ1osVUFBQTdELEVBQ0Esa0JBQUF3RCxFQUFvQm5GLEdBQ3BCLGNBQUFrRixFQUFnQixHQUNoQixHQUFHTyxDQUNYLEVBQVUzRSxHQUFTakwsRUFBU3VPLENBQUssRUFDckJzQixFQUFlL0QsSUFBYyxRQUFhd0QsSUFBc0JuRixHQUFhaUYsR0FBaUJ0RCxHQUFhLEtBQU11RCxFQUFlQyxDQUFpQixFQUFJQSxFQUNySlEsRUFBVyxNQUFNeEIsR0FBZUMsRUFBT3FCLENBQXFCLEVBQzVEOVIsSUFBaUIwUixFQUF3QjFCLEVBQWUsZ0JBQWtCLEtBQU8sT0FBUzBCLEVBQXNCLFFBQVUsRUFDMUhPLEVBQW1CRixFQUFhL1IsQ0FBWSxFQUNsRCxHQUFJaVMsR0FBb0IsS0FDdEIsTUFBTyxDQUFBLEVBRVQsTUFBTUMsRUFBaUJyRSxHQUFrQm9FLEVBQWtCbkUsRUFBTyxNQUFPK0IsRUFBUyxPQUFTLEtBQU8sT0FBU0EsRUFBUyxNQUFNYyxFQUFTLFFBQVEsRUFBRSxFQUc3SSxHQUFJckQsSUFBYzJFLEVBQ2hCLE1BQU8sQ0FDTCxNQUFPLENBQ0wsVUFBV0YsRUFBYSxDQUFDLENBQ3JDLENBQ0EsRUFFTSxNQUFNSSxFQUFtQixDQUFDSCxFQUFTM0UsR0FBUTRFLENBQWdCLENBQUMsRUFBR0QsRUFBU0UsRUFBZSxDQUFDLENBQUMsRUFBR0YsRUFBU0UsRUFBZSxDQUFDLENBQUMsQ0FBQyxFQUNqSEUsRUFBZSxDQUFDLEtBQU1ULEVBQXlCM0IsRUFBZSxnQkFBa0IsS0FBTyxPQUFTMkIsRUFBdUIsWUFBYyxDQUFBLEVBQUssQ0FDOUksVUFBV00sRUFDWCxVQUFXRSxDQUNuQixDQUFPLEVBQ0tFLEVBQWdCTixFQUFhL1IsRUFBZSxDQUFDLEVBR25ELEdBQUlxUyxFQUNGLE1BQU8sQ0FDTCxLQUFNLENBQ0osTUFBT3JTLEVBQWUsRUFDdEIsVUFBV29TLENBQ3ZCLEVBQ1UsTUFBTyxDQUNMLFVBQVdDLENBQ3ZCLENBQ0EsRUFFTSxNQUFNQyxFQUE4QkYsRUFBYSxJQUFJRyxHQUFLLENBQ3hELE1BQU12RSxFQUFZVCxHQUFhZ0YsRUFBRSxTQUFTLEVBQzFDLE1BQU8sQ0FBQ0EsRUFBRSxVQUFXdkUsR0FBYTZELEVBRWxDVSxFQUFFLFVBQVUsTUFBTSxFQUFHLENBQUMsRUFBRSxPQUFPLENBQUNqRyxFQUFLTyxLQUFNUCxFQUFNTyxHQUFHLENBQUMsRUFFckQwRixFQUFFLFVBQVUsQ0FBQyxFQUFHQSxFQUFFLFNBQVMsQ0FDN0IsQ0FBQyxFQUFFLEtBQUssQ0FBQy9QLEVBQUdDLElBQU1ELEVBQUUsQ0FBQyxFQUFJQyxFQUFFLENBQUMsQ0FBQyxFQUt2QitQLElBQW1CWixFQUpXVSxFQUE0QixPQUFPQyxHQUFLQSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBR3ZGaEYsR0FBYWdGLEVBQUUsQ0FBQyxDQUFDLEVBQUksRUFBSSxDQUFDLEVBQUUsTUFBTTFGLEdBQUtBLEdBQUssQ0FBQyxDQUFDLEVBQytCLENBQUMsSUFBTSxLQUFPLE9BQVMrRSxFQUFzQixDQUFDLElBQU1VLEVBQTRCLENBQUMsRUFBRSxDQUFDLEVBQ2pLLE9BQUlFLElBQW1CbEYsRUFDZCxDQUNMLEtBQU0sQ0FDSixNQUFPdE4sRUFBZSxFQUN0QixVQUFXb1MsQ0FDdkIsRUFDVSxNQUFPLENBQ0wsVUFBV0ksQ0FDdkIsQ0FDQSxFQUVhLENBQUEsQ0FDVCxDQUNKLENBQ0EsRUEyVUEsZUFBZUMsR0FBcUJoQyxFQUFPdk8sRUFBUyxDQUNsRCxLQUFNLENBQ0osVUFBQW9MLEVBQ0EsU0FBQXVDLEVBQ0EsU0FBQWMsQ0FDSixFQUFNRixFQUNFMUMsRUFBTSxNQUFPOEIsRUFBUyxPQUFTLEtBQU8sT0FBU0EsRUFBUyxNQUFNYyxFQUFTLFFBQVEsR0FDL0VwRSxFQUFPYyxHQUFRQyxDQUFTLEVBQ3hCVSxFQUFZVCxHQUFhRCxDQUFTLEVBQ2xDK0IsRUFBYTFCLEdBQVlMLENBQVMsSUFBTSxJQUN4Q29GLEVBQWdCLENBQUMsT0FBUSxLQUFLLEVBQUUsU0FBU25HLENBQUksRUFBSSxHQUFLLEVBQ3REb0csRUFBaUI1RSxHQUFPc0IsRUFBYSxHQUFLLEVBQzFDdUQsRUFBV3pGLEdBQVNqTCxFQUFTdU8sQ0FBSyxFQUd4QyxHQUFJLENBQ0YsU0FBQW9DLEVBQ0EsVUFBQWhCLEVBQ0EsY0FBQTVELENBQ0osRUFBTSxPQUFPMkUsR0FBYSxTQUFXLENBQ2pDLFNBQVVBLEVBQ1YsVUFBVyxFQUNYLGNBQWUsSUFDbkIsRUFBTSxDQUNGLFNBQVVBLEVBQVMsVUFBWSxFQUMvQixVQUFXQSxFQUFTLFdBQWEsRUFDakMsY0FBZUEsRUFBUyxhQUM1QixFQUNFLE9BQUk1RSxHQUFhLE9BQU9DLEdBQWtCLFdBQ3hDNEQsRUFBWTdELElBQWMsTUFBUUMsRUFBZ0IsR0FBS0EsR0FFbERvQixFQUFhLENBQ2xCLEVBQUd3QyxFQUFZYyxFQUNmLEVBQUdFLEVBQVdILENBQ2xCLEVBQU0sQ0FDRixFQUFHRyxFQUFXSCxFQUNkLEVBQUdiLEVBQVljLENBQ25CLENBQ0EsQ0FTQSxNQUFNRyxHQUFTLFNBQVU1USxFQUFTLENBQ2hDLE9BQUlBLElBQVksU0FDZEEsRUFBVSxHQUVMLENBQ0wsS0FBTSxTQUNOLFFBQUFBLEVBQ0EsTUFBTSxHQUFHdU8sRUFBTyxDQUNkLElBQUlzQyxFQUF1QkMsRUFDM0IsS0FBTSxDQUNKLEVBQUFyRSxFQUNBLEVBQUFDLEVBQ0EsVUFBQXRCLEVBQ0EsZUFBQTBDLENBQ1IsRUFBVVMsRUFDRXdDLEVBQWEsTUFBTVIsR0FBcUJoQyxFQUFPdk8sQ0FBTyxFQUk1RCxPQUFJb0wsTUFBZ0J5RixFQUF3Qi9DLEVBQWUsU0FBVyxLQUFPLE9BQVMrQyxFQUFzQixhQUFlQyxFQUF3QmhELEVBQWUsUUFBVSxNQUFRZ0QsRUFBc0IsZ0JBQ2pNLENBQUEsRUFFRixDQUNMLEVBQUdyRSxFQUFJc0UsRUFBVyxFQUNsQixFQUFHckUsRUFBSXFFLEVBQVcsRUFDbEIsS0FBTSxDQUNKLEdBQUdBLEVBQ0gsVUFBQTNGLENBQ1YsQ0FDQSxDQUNJLENBQ0osQ0FDQSxFQU9NNEYsR0FBUSxTQUFVaFIsRUFBUyxDQUMvQixPQUFJQSxJQUFZLFNBQ2RBLEVBQVUsQ0FBQSxHQUVMLENBQ0wsS0FBTSxRQUNOLFFBQUFBLEVBQ0EsTUFBTSxHQUFHdU8sRUFBTyxDQUNkLEtBQU0sQ0FDSixFQUFBOUIsRUFDQSxFQUFBQyxFQUNBLFVBQUF0QixDQUNSLEVBQVVtRCxFQUNFLENBQ0osU0FBVTBDLEVBQWdCLEdBQzFCLFVBQVdDLEVBQWlCLEdBQzVCLFFBQUFDLEVBQVUsQ0FDUixHQUFJckUsR0FBUSxDQUNWLEdBQUksQ0FDRixFQUFBTCxFQUNBLEVBQUFDLENBQ2QsRUFBZ0JJLEVBQ0osTUFBTyxDQUNMLEVBQUFMLEVBQ0EsRUFBQUMsQ0FDZCxDQUNVLENBQ1YsRUFDUSxHQUFHa0QsQ0FDWCxFQUFVM0UsR0FBU2pMLEVBQVN1TyxDQUFLLEVBQ3JCaEIsRUFBUyxDQUNiLEVBQUFkLEVBQ0EsRUFBQUMsQ0FDUixFQUNZb0QsRUFBVyxNQUFNeEIsR0FBZUMsRUFBT3FCLENBQXFCLEVBQzVERCxFQUFZbEUsR0FBWU4sR0FBUUMsQ0FBUyxDQUFDLEVBQzFDdUYsRUFBV3JGLEdBQWdCcUUsQ0FBUyxFQUMxQyxJQUFJeUIsRUFBZ0I3RCxFQUFPb0QsQ0FBUSxFQUMvQlUsRUFBaUI5RCxFQUFPb0MsQ0FBUyxFQUNyQyxHQUFJc0IsRUFBZSxDQUNqQixNQUFNSyxFQUFVWCxJQUFhLElBQU0sTUFBUSxPQUNyQ1ksRUFBVVosSUFBYSxJQUFNLFNBQVcsUUFDeENyRyxFQUFNOEcsRUFBZ0J0QixFQUFTd0IsQ0FBTyxFQUN0Qy9HLEVBQU02RyxFQUFnQnRCLEVBQVN5QixDQUFPLEVBQzVDSCxFQUFnQnRHLEdBQU1SLEVBQUs4RyxFQUFlN0csQ0FBRyxDQUMvQyxDQUNBLEdBQUkyRyxFQUFnQixDQUNsQixNQUFNSSxFQUFVM0IsSUFBYyxJQUFNLE1BQVEsT0FDdEM0QixFQUFVNUIsSUFBYyxJQUFNLFNBQVcsUUFDekNyRixFQUFNK0csRUFBaUJ2QixFQUFTd0IsQ0FBTyxFQUN2Qy9HLEVBQU04RyxFQUFpQnZCLEVBQVN5QixDQUFPLEVBQzdDRixFQUFpQnZHLEdBQU1SLEVBQUsrRyxFQUFnQjlHLENBQUcsQ0FDakQsQ0FDQSxNQUFNaUgsRUFBZ0JMLEVBQVEsR0FBRyxDQUMvQixHQUFHNUMsRUFDSCxDQUFDb0MsQ0FBUSxFQUFHUyxFQUNaLENBQUN6QixDQUFTLEVBQUcwQixDQUNyQixDQUFPLEVBQ0QsTUFBTyxDQUNMLEdBQUdHLEVBQ0gsS0FBTSxDQUNKLEVBQUdBLEVBQWMsRUFBSS9FLEVBQ3JCLEVBQUcrRSxFQUFjLEVBQUk5RSxFQUNyQixRQUFTLENBQ1AsQ0FBQ2lFLENBQVEsRUFBR00sRUFDWixDQUFDdEIsQ0FBUyxFQUFHdUIsQ0FDekIsQ0FDQSxDQUNBLENBQ0ksQ0FDSixDQUNBLEVDdDNCQSxTQUFTTyxJQUFZLENBQ25CLE9BQU8sT0FBTyxPQUFXLEdBQzNCLENBQ0EsU0FBU0MsR0FBWXpVLEVBQU0sQ0FDekIsT0FBSTBVLEdBQU8xVSxDQUFJLEdBQ0xBLEVBQUssVUFBWSxJQUFJLFlBQVcsRUFLbkMsV0FDVCxDQUNBLFNBQVMyVSxFQUFVM1UsRUFBTSxDQUN2QixJQUFJNFUsRUFDSixPQUFRNVUsR0FBUSxPQUFTNFUsRUFBc0I1VSxFQUFLLGdCQUFrQixLQUFPLE9BQVM0VSxFQUFvQixjQUFnQixNQUM1SCxDQUNBLFNBQVNDLEVBQW1CN1UsRUFBTSxDQUNoQyxJQUFJNlAsRUFDSixPQUFRQSxHQUFRNkUsR0FBTzFVLENBQUksRUFBSUEsRUFBSyxjQUFnQkEsRUFBSyxXQUFhLE9BQU8sV0FBYSxLQUFPLE9BQVM2UCxFQUFLLGVBQ2pILENBQ0EsU0FBUzZFLEdBQU9yTyxFQUFPLENBQ3JCLE9BQUttTyxHQUFTLEVBR1BuTyxhQUFpQixNQUFRQSxhQUFpQnNPLEVBQVV0TyxDQUFLLEVBQUUsS0FGekQsRUFHWCxDQUNBLFNBQVN5TyxFQUFVek8sRUFBTyxDQUN4QixPQUFLbU8sR0FBUyxFQUdQbk8sYUFBaUIsU0FBV0EsYUFBaUJzTyxFQUFVdE8sQ0FBSyxFQUFFLFFBRjVELEVBR1gsQ0FDQSxTQUFTME8sRUFBYzFPLEVBQU8sQ0FDNUIsT0FBS21PLEdBQVMsRUFHUG5PLGFBQWlCLGFBQWVBLGFBQWlCc08sRUFBVXRPLENBQUssRUFBRSxZQUZoRSxFQUdYLENBQ0EsU0FBUzJPLEdBQWEzTyxFQUFPLENBQzNCLE1BQUksQ0FBQ21PLEdBQVMsR0FBTSxPQUFPLFdBQWUsSUFDakMsR0FFRm5PLGFBQWlCLFlBQWNBLGFBQWlCc08sRUFBVXRPLENBQUssRUFBRSxVQUMxRSxDQUNBLFNBQVM0TyxHQUFrQm5ELEVBQVMsQ0FDbEMsS0FBTSxDQUNKLFNBQUFlLEVBQ0EsVUFBQXFDLEVBQ0EsVUFBQUMsRUFDQSxRQUFBQyxDQUNKLEVBQU1DLEVBQWlCdkQsQ0FBTyxFQUM1QixNQUFPLGtDQUFrQyxLQUFLZSxFQUFXc0MsRUFBWUQsQ0FBUyxHQUFLLENBQUMsQ0FBQyxTQUFVLFVBQVUsRUFBRSxTQUFTRSxDQUFPLENBQzdILENBQ0EsU0FBU0UsR0FBZXhELEVBQVMsQ0FDL0IsTUFBTyxDQUFDLFFBQVMsS0FBTSxJQUFJLEVBQUUsU0FBUzJDLEdBQVkzQyxDQUFPLENBQUMsQ0FDNUQsQ0FDQSxTQUFTeUQsR0FBV3pELEVBQVMsQ0FDM0IsTUFBTyxDQUFDLGdCQUFpQixRQUFRLEVBQUUsS0FBSzBELEdBQVksQ0FDbEQsR0FBSSxDQUNGLE9BQU8xRCxFQUFRLFFBQVEwRCxDQUFRLENBQ2pDLE1BQVksQ0FDVixNQUFPLEVBQ1QsQ0FDRixDQUFDLENBQ0gsQ0FDQSxTQUFTQyxHQUFrQkMsRUFBYyxDQUN2QyxNQUFNQyxFQUFTQyxHQUFRLEVBQ2pCQyxFQUFNZixFQUFVWSxDQUFZLEVBQUlMLEVBQWlCSyxDQUFZLEVBQUlBLEVBSXZFLE1BQU8sQ0FBQyxZQUFhLFlBQWEsUUFBUyxTQUFVLGFBQWEsRUFBRSxLQUFLclAsR0FBU3dQLEVBQUl4UCxDQUFLLEVBQUl3UCxFQUFJeFAsQ0FBSyxJQUFNLE9BQVMsRUFBSyxJQUFNd1AsRUFBSSxjQUFnQkEsRUFBSSxnQkFBa0IsU0FBVyxLQUFVLENBQUNGLElBQVdFLEVBQUksZUFBaUJBLEVBQUksaUJBQW1CLE9BQVMsS0FBVSxDQUFDRixJQUFXRSxFQUFJLE9BQVNBLEVBQUksU0FBVyxPQUFTLEtBQVUsQ0FBQyxZQUFhLFlBQWEsUUFBUyxTQUFVLGNBQWUsUUFBUSxFQUFFLEtBQUt4UCxJQUFVd1AsRUFBSSxZQUFjLElBQUksU0FBU3hQLENBQUssQ0FBQyxHQUFLLENBQUMsUUFBUyxTQUFVLFNBQVUsU0FBUyxFQUFFLEtBQUtBLElBQVV3UCxFQUFJLFNBQVcsSUFBSSxTQUFTeFAsQ0FBSyxDQUFDLENBQ25pQixDQUNBLFNBQVN5UCxHQUFtQmhFLEVBQVMsQ0FDbkMsSUFBSWlFLEVBQWNDLEdBQWNsRSxDQUFPLEVBQ3ZDLEtBQU9pRCxFQUFjZ0IsQ0FBVyxHQUFLLENBQUNFLEdBQXNCRixDQUFXLEdBQUcsQ0FDeEUsR0FBSU4sR0FBa0JNLENBQVcsRUFDL0IsT0FBT0EsRUFDRixHQUFJUixHQUFXUSxDQUFXLEVBQy9CLE9BQU8sS0FFVEEsRUFBY0MsR0FBY0QsQ0FBVyxDQUN6QyxDQUNBLE9BQU8sSUFDVCxDQUNBLFNBQVNILElBQVcsQ0FDbEIsT0FBSSxPQUFPLElBQVEsS0FBZSxDQUFDLElBQUksU0FBaUIsR0FDakQsSUFBSSxTQUFTLDBCQUEyQixNQUFNLENBQ3ZELENBQ0EsU0FBU0ssR0FBc0JqVyxFQUFNLENBQ25DLE1BQU8sQ0FBQyxPQUFRLE9BQVEsV0FBVyxFQUFFLFNBQVN5VSxHQUFZelUsQ0FBSSxDQUFDLENBQ2pFLENBQ0EsU0FBU3FWLEVBQWlCdkQsRUFBUyxDQUNqQyxPQUFPNkMsRUFBVTdDLENBQU8sRUFBRSxpQkFBaUJBLENBQU8sQ0FDcEQsQ0FDQSxTQUFTb0UsR0FBY3BFLEVBQVMsQ0FDOUIsT0FBSWdELEVBQVVoRCxDQUFPLEVBQ1osQ0FDTCxXQUFZQSxFQUFRLFdBQ3BCLFVBQVdBLEVBQVEsU0FDekIsRUFFUyxDQUNMLFdBQVlBLEVBQVEsUUFDcEIsVUFBV0EsRUFBUSxPQUN2QixDQUNBLENBQ0EsU0FBU2tFLEdBQWNoVyxFQUFNLENBQzNCLEdBQUl5VSxHQUFZelUsQ0FBSSxJQUFNLE9BQ3hCLE9BQU9BLEVBRVQsTUFBTXNHLEVBRU50RyxFQUFLLGNBRUxBLEVBQUssWUFFTGdWLEdBQWFoVixDQUFJLEdBQUtBLEVBQUssTUFFM0I2VSxFQUFtQjdVLENBQUksRUFDdkIsT0FBT2dWLEdBQWExTyxDQUFNLEVBQUlBLEVBQU8sS0FBT0EsQ0FDOUMsQ0FDQSxTQUFTNlAsR0FBMkJuVyxFQUFNLENBQ3hDLE1BQU1vVyxFQUFhSixHQUFjaFcsQ0FBSSxFQUNyQyxPQUFJaVcsR0FBc0JHLENBQVUsRUFDM0JwVyxFQUFLLGNBQWdCQSxFQUFLLGNBQWMsS0FBT0EsRUFBSyxLQUV6RCtVLEVBQWNxQixDQUFVLEdBQUtuQixHQUFrQm1CLENBQVUsRUFDcERBLEVBRUZELEdBQTJCQyxDQUFVLENBQzlDLENBQ0EsU0FBU0MsR0FBcUJyVyxFQUFNc1csRUFBTUMsRUFBaUIsQ0FDekQsSUFBSUMsRUFDQUYsSUFBUyxTQUNYQSxFQUFPLENBQUEsR0FFTEMsSUFBb0IsU0FDdEJBLEVBQWtCLElBRXBCLE1BQU1FLEVBQXFCTixHQUEyQm5XLENBQUksRUFDcEQwVyxFQUFTRCxNQUF5QkQsRUFBdUJ4VyxFQUFLLGdCQUFrQixLQUFPLE9BQVN3VyxFQUFxQixNQUNySEcsRUFBTWhDLEVBQVU4QixDQUFrQixFQUN4QyxHQUFJQyxFQUFRLENBQ1YsTUFBTUUsRUFBZUMsR0FBZ0JGLENBQUcsRUFDeEMsT0FBT0wsRUFBSyxPQUFPSyxFQUFLQSxFQUFJLGdCQUFrQixDQUFBLEVBQUkxQixHQUFrQndCLENBQWtCLEVBQUlBLEVBQXFCLENBQUEsRUFBSUcsR0FBZ0JMLEVBQWtCRixHQUFxQk8sQ0FBWSxFQUFJLEVBQUUsQ0FDOUwsQ0FDQSxPQUFPTixFQUFLLE9BQU9HLEVBQW9CSixHQUFxQkksRUFBb0IsQ0FBQSxFQUFJRixDQUFlLENBQUMsQ0FDdEcsQ0FDQSxTQUFTTSxHQUFnQkYsRUFBSyxDQUM1QixPQUFPQSxFQUFJLFFBQVUsT0FBTyxlQUFlQSxFQUFJLE1BQU0sRUFBSUEsRUFBSSxhQUFlLElBQzlFLENDbEpBLFNBQVNHLEdBQWlCaEYsRUFBUyxDQUNqQyxNQUFNK0QsRUFBTVIsRUFBaUJ2RCxDQUFPLEVBR3BDLElBQUlwQyxFQUFRLFdBQVdtRyxFQUFJLEtBQUssR0FBSyxFQUNqQ2xHLEVBQVMsV0FBV2tHLEVBQUksTUFBTSxHQUFLLEVBQ3ZDLE1BQU1rQixFQUFZaEMsRUFBY2pELENBQU8sRUFDakNrRixFQUFjRCxFQUFZakYsRUFBUSxZQUFjcEMsRUFDaER1SCxFQUFlRixFQUFZakYsRUFBUSxhQUFlbkMsRUFDbER1SCxFQUFpQjNKLEdBQU1tQyxDQUFLLElBQU1zSCxHQUFlekosR0FBTW9DLENBQU0sSUFBTXNILEVBQ3pFLE9BQUlDLElBQ0Z4SCxFQUFRc0gsRUFDUnJILEVBQVNzSCxHQUVKLENBQ0wsTUFBQXZILEVBQ0EsT0FBQUMsRUFDQSxFQUFHdUgsQ0FDUCxDQUNBLENBRUEsU0FBU0MsR0FBY3JGLEVBQVMsQ0FDOUIsT0FBUWdELEVBQVVoRCxDQUFPLEVBQTZCQSxFQUF6QkEsRUFBUSxjQUN2QyxDQUVBLFNBQVNzRixHQUFTdEYsRUFBUyxDQUN6QixNQUFNdUYsRUFBYUYsR0FBY3JGLENBQU8sRUFDeEMsR0FBSSxDQUFDaUQsRUFBY3NDLENBQVUsRUFDM0IsT0FBTzVKLEVBQWEsQ0FBQyxFQUV2QixNQUFNOEIsRUFBTzhILEVBQVcsc0JBQXFCLEVBQ3ZDLENBQ0osTUFBQTNILEVBQ0EsT0FBQUMsRUFDQSxFQUFBMkgsQ0FDSixFQUFNUixHQUFpQk8sQ0FBVSxFQUMvQixJQUFJN0gsR0FBSzhILEVBQUkvSixHQUFNZ0MsRUFBSyxLQUFLLEVBQUlBLEVBQUssT0FBU0csRUFDM0NELEdBQUs2SCxFQUFJL0osR0FBTWdDLEVBQUssTUFBTSxFQUFJQSxFQUFLLFFBQVVJLEVBSWpELE9BQUksQ0FBQ0gsR0FBSyxDQUFDLE9BQU8sU0FBU0EsQ0FBQyxLQUMxQkEsRUFBSSxJQUVGLENBQUNDLEdBQUssQ0FBQyxPQUFPLFNBQVNBLENBQUMsS0FDMUJBLEVBQUksR0FFQyxDQUNMLEVBQUFELEVBQ0EsRUFBQUMsQ0FDSixDQUNBLENBRUEsTUFBTThILEdBQXlCOUosRUFBYSxDQUFDLEVBQzdDLFNBQVMrSixHQUFpQjFGLEVBQVMsQ0FDakMsTUFBTTZFLEVBQU1oQyxFQUFVN0MsQ0FBTyxFQUM3QixNQUFJLENBQUM4RCxHQUFRLEdBQU0sQ0FBQ2UsRUFBSSxlQUNmWSxHQUVGLENBQ0wsRUFBR1osRUFBSSxlQUFlLFdBQ3RCLEVBQUdBLEVBQUksZUFBZSxTQUMxQixDQUNBLENBQ0EsU0FBU2MsR0FBdUIzRixFQUFTNEYsRUFBU0MsRUFBc0IsQ0FJdEUsT0FISUQsSUFBWSxTQUNkQSxFQUFVLElBRVIsQ0FBQ0MsR0FBd0JELEdBQVdDLElBQXlCaEQsRUFBVTdDLENBQU8sRUFDekUsR0FFRjRGLENBQ1QsQ0FFQSxTQUFTRSxHQUFzQjlGLEVBQVMrRixFQUFjQyxFQUFpQjlGLEVBQWMsQ0FDL0U2RixJQUFpQixTQUNuQkEsRUFBZSxJQUViQyxJQUFvQixTQUN0QkEsRUFBa0IsSUFFcEIsTUFBTUMsRUFBYWpHLEVBQVEsc0JBQXFCLEVBQzFDdUYsRUFBYUYsR0FBY3JGLENBQU8sRUFDeEMsSUFBSWtHLEVBQVF2SyxFQUFhLENBQUMsRUFDdEJvSyxJQUNFN0YsRUFDRThDLEVBQVU5QyxDQUFZLElBQ3hCZ0csRUFBUVosR0FBU3BGLENBQVksR0FHL0JnRyxFQUFRWixHQUFTdEYsQ0FBTyxHQUc1QixNQUFNbUcsRUFBZ0JSLEdBQXVCSixFQUFZUyxFQUFpQjlGLENBQVksRUFBSXdGLEdBQWlCSCxDQUFVLEVBQUk1SixFQUFhLENBQUMsRUFDdkksSUFBSStCLEdBQUt1SSxFQUFXLEtBQU9FLEVBQWMsR0FBS0QsRUFBTSxFQUNoRHZJLEdBQUtzSSxFQUFXLElBQU1FLEVBQWMsR0FBS0QsRUFBTSxFQUMvQ3RJLEVBQVFxSSxFQUFXLE1BQVFDLEVBQU0sRUFDakNySSxFQUFTb0ksRUFBVyxPQUFTQyxFQUFNLEVBQ3ZDLEdBQUlYLEVBQVksQ0FDZCxNQUFNVixFQUFNaEMsRUFBVTBDLENBQVUsRUFDMUJhLEVBQVlsRyxHQUFnQjhDLEVBQVU5QyxDQUFZLEVBQUkyQyxFQUFVM0MsQ0FBWSxFQUFJQSxFQUN0RixJQUFJbUcsRUFBYXhCLEVBQ2J5QixFQUFnQnZCLEdBQWdCc0IsQ0FBVSxFQUM5QyxLQUFPQyxHQUFpQnBHLEdBQWdCa0csSUFBY0MsR0FBWSxDQUNoRSxNQUFNRSxFQUFjakIsR0FBU2dCLENBQWEsRUFDcENFLEVBQWFGLEVBQWMsc0JBQXFCLEVBQ2hEdkMsRUFBTVIsRUFBaUIrQyxDQUFhLEVBQ3BDRyxFQUFPRCxFQUFXLE1BQVFGLEVBQWMsV0FBYSxXQUFXdkMsRUFBSSxXQUFXLEdBQUt3QyxFQUFZLEVBQ2hHRyxFQUFNRixFQUFXLEtBQU9GLEVBQWMsVUFBWSxXQUFXdkMsRUFBSSxVQUFVLEdBQUt3QyxFQUFZLEVBQ2xHN0ksR0FBSzZJLEVBQVksRUFDakI1SSxHQUFLNEksRUFBWSxFQUNqQjNJLEdBQVMySSxFQUFZLEVBQ3JCMUksR0FBVTBJLEVBQVksRUFDdEI3SSxHQUFLK0ksRUFDTDlJLEdBQUsrSSxFQUNMTCxFQUFheEQsRUFBVXlELENBQWEsRUFDcENBLEVBQWdCdkIsR0FBZ0JzQixDQUFVLENBQzVDLENBQ0YsQ0FDQSxPQUFPN0ksR0FBaUIsQ0FDdEIsTUFBQUksRUFDQSxPQUFBQyxFQUNBLEVBQUFILEVBQ0EsRUFBQUMsQ0FDSixDQUFHLENBQ0gsQ0FJQSxTQUFTZ0osR0FBb0IzRyxFQUFTdkMsRUFBTSxDQUMxQyxNQUFNbUosRUFBYXhDLEdBQWNwRSxDQUFPLEVBQUUsV0FDMUMsT0FBS3ZDLEVBR0VBLEVBQUssS0FBT21KLEVBRlZkLEdBQXNCL0MsRUFBbUIvQyxDQUFPLENBQUMsRUFBRSxLQUFPNEcsQ0FHckUsQ0FFQSxTQUFTQyxHQUFjQyxFQUFpQkMsRUFBUUMsRUFBa0IsQ0FDNURBLElBQXFCLFNBQ3ZCQSxFQUFtQixJQUVyQixNQUFNQyxFQUFXSCxFQUFnQixzQkFBcUIsRUFDaERwSixFQUFJdUosRUFBUyxLQUFPRixFQUFPLFlBQWNDLEVBQW1CLEVBRWxFTCxHQUFvQkcsRUFBaUJHLENBQVEsR0FDdkN0SixFQUFJc0osRUFBUyxJQUFNRixFQUFPLFVBQ2hDLE1BQU8sQ0FDTCxFQUFBckosRUFDQSxFQUFBQyxDQUNKLENBQ0EsQ0FFQSxTQUFTdUosR0FBc0RuSixFQUFNLENBQ25FLEdBQUksQ0FDRixTQUFBMkIsRUFDQSxLQUFBakMsRUFDQSxhQUFBeUMsRUFDQSxTQUFBeEIsQ0FDSixFQUFNWCxFQUNKLE1BQU02SCxFQUFVbEgsSUFBYSxRQUN2Qm9JLEVBQWtCL0QsRUFBbUI3QyxDQUFZLEVBQ2pEbkcsRUFBVzJGLEVBQVcrRCxHQUFXL0QsRUFBUyxRQUFRLEVBQUksR0FDNUQsR0FBSVEsSUFBaUI0RyxHQUFtQi9NLEdBQVk2TCxFQUNsRCxPQUFPbkksRUFFVCxJQUFJc0osRUFBUyxDQUNYLFdBQVksRUFDWixVQUFXLENBQ2YsRUFDTWIsRUFBUXZLLEVBQWEsQ0FBQyxFQUMxQixNQUFNd0wsRUFBVXhMLEVBQWEsQ0FBQyxFQUN4QnlMLEVBQTBCbkUsRUFBYy9DLENBQVksRUFDMUQsSUFBSWtILEdBQTJCLENBQUNBLEdBQTJCLENBQUN4QixNQUN0RGpELEdBQVl6QyxDQUFZLElBQU0sUUFBVWlELEdBQWtCMkQsQ0FBZSxLQUMzRUMsRUFBUzNDLEdBQWNsRSxDQUFZLEdBRWpDK0MsRUFBYy9DLENBQVksR0FBRyxDQUMvQixNQUFNbUgsRUFBYXZCLEdBQXNCNUYsQ0FBWSxFQUNyRGdHLEVBQVFaLEdBQVNwRixDQUFZLEVBQzdCaUgsRUFBUSxFQUFJRSxFQUFXLEVBQUluSCxFQUFhLFdBQ3hDaUgsRUFBUSxFQUFJRSxFQUFXLEVBQUluSCxFQUFhLFNBQzFDLENBRUYsTUFBTW9ILEVBQWFSLEdBQW1CLENBQUNNLEdBQTJCLENBQUN4QixFQUFVaUIsR0FBY0MsRUFBaUJDLEVBQVEsRUFBSSxFQUFJcEwsRUFBYSxDQUFDLEVBQzFJLE1BQU8sQ0FDTCxNQUFPOEIsRUFBSyxNQUFReUksRUFBTSxFQUMxQixPQUFRekksRUFBSyxPQUFTeUksRUFBTSxFQUM1QixFQUFHekksRUFBSyxFQUFJeUksRUFBTSxFQUFJYSxFQUFPLFdBQWFiLEVBQU0sRUFBSWlCLEVBQVEsRUFBSUcsRUFBVyxFQUMzRSxFQUFHN0osRUFBSyxFQUFJeUksRUFBTSxFQUFJYSxFQUFPLFVBQVliLEVBQU0sRUFBSWlCLEVBQVEsRUFBSUcsRUFBVyxDQUM5RSxDQUNBLENBRUEsU0FBU0MsR0FBZXZILEVBQVMsQ0FDL0IsT0FBTyxNQUFNLEtBQUtBLEVBQVEsZUFBYyxDQUFFLENBQzVDLENBSUEsU0FBU3dILEdBQWdCeEgsRUFBUyxDQUNoQyxNQUFNeUgsRUFBTzFFLEVBQW1CL0MsQ0FBTyxFQUNqQytHLEVBQVMzQyxHQUFjcEUsQ0FBTyxFQUM5QnZHLEVBQU91RyxFQUFRLGNBQWMsS0FDN0JwQyxFQUFRcEMsR0FBSWlNLEVBQUssWUFBYUEsRUFBSyxZQUFhaE8sRUFBSyxZQUFhQSxFQUFLLFdBQVcsRUFDbEZvRSxFQUFTckMsR0FBSWlNLEVBQUssYUFBY0EsRUFBSyxhQUFjaE8sRUFBSyxhQUFjQSxFQUFLLFlBQVksRUFDN0YsSUFBSWlFLEVBQUksQ0FBQ3FKLEVBQU8sV0FBYUosR0FBb0IzRyxDQUFPLEVBQ3hELE1BQU1yQyxFQUFJLENBQUNvSixFQUFPLFVBQ2xCLE9BQUl4RCxFQUFpQjlKLENBQUksRUFBRSxZQUFjLFFBQ3ZDaUUsR0FBS2xDLEdBQUlpTSxFQUFLLFlBQWFoTyxFQUFLLFdBQVcsRUFBSW1FLEdBRTFDLENBQ0wsTUFBQUEsRUFDQSxPQUFBQyxFQUNBLEVBQUFILEVBQ0EsRUFBQUMsQ0FDSixDQUNBLENBRUEsU0FBUytKLEdBQWdCMUgsRUFBU3RCLEVBQVUsQ0FDMUMsTUFBTW1HLEVBQU1oQyxFQUFVN0MsQ0FBTyxFQUN2QnlILEVBQU8xRSxFQUFtQi9DLENBQU8sRUFDakMySCxFQUFpQjlDLEVBQUksZUFDM0IsSUFBSWpILEVBQVE2SixFQUFLLFlBQ2I1SixFQUFTNEosRUFBSyxhQUNkL0osRUFBSSxFQUNKQyxFQUFJLEVBQ1IsR0FBSWdLLEVBQWdCLENBQ2xCL0osRUFBUStKLEVBQWUsTUFDdkI5SixFQUFTOEosRUFBZSxPQUN4QixNQUFNQyxFQUFzQjlELEdBQVEsR0FDaEMsQ0FBQzhELEdBQXVCQSxHQUF1QmxKLElBQWEsV0FDOURoQixFQUFJaUssRUFBZSxXQUNuQmhLLEVBQUlnSyxFQUFlLFVBRXZCLENBQ0EsTUFBTyxDQUNMLE1BQUEvSixFQUNBLE9BQUFDLEVBQ0EsRUFBQUgsRUFDQSxFQUFBQyxDQUNKLENBQ0EsQ0FHQSxTQUFTa0ssR0FBMkI3SCxFQUFTdEIsRUFBVSxDQUNyRCxNQUFNdUgsRUFBYUgsR0FBc0I5RixFQUFTLEdBQU10QixJQUFhLE9BQU8sRUFDdEVnSSxFQUFNVCxFQUFXLElBQU1qRyxFQUFRLFVBQy9CeUcsRUFBT1IsRUFBVyxLQUFPakcsRUFBUSxXQUNqQ2tHLEVBQVFqRCxFQUFjakQsQ0FBTyxFQUFJc0YsR0FBU3RGLENBQU8sRUFBSXJFLEVBQWEsQ0FBQyxFQUNuRWlDLEVBQVFvQyxFQUFRLFlBQWNrRyxFQUFNLEVBQ3BDckksRUFBU21DLEVBQVEsYUFBZWtHLEVBQU0sRUFDdEN4SSxFQUFJK0ksRUFBT1AsRUFBTSxFQUNqQnZJLEVBQUkrSSxFQUFNUixFQUFNLEVBQ3RCLE1BQU8sQ0FDTCxNQUFBdEksRUFDQSxPQUFBQyxFQUNBLEVBQUFILEVBQ0EsRUFBQUMsQ0FDSixDQUNBLENBQ0EsU0FBU21LLEdBQWtDOUgsRUFBUytILEVBQWtCckosRUFBVSxDQUM5RSxJQUFJakIsRUFDSixHQUFJc0ssSUFBcUIsV0FDdkJ0SyxFQUFPaUssR0FBZ0IxSCxFQUFTdEIsQ0FBUSxVQUMvQnFKLElBQXFCLFdBQzlCdEssRUFBTytKLEdBQWdCekUsRUFBbUIvQyxDQUFPLENBQUMsVUFDekNnRCxFQUFVK0UsQ0FBZ0IsRUFDbkN0SyxFQUFPb0ssR0FBMkJFLEVBQWtCckosQ0FBUSxNQUN2RCxDQUNMLE1BQU15SCxFQUFnQlQsR0FBaUIxRixDQUFPLEVBQzlDdkMsRUFBTyxDQUNMLEVBQUdzSyxFQUFpQixFQUFJNUIsRUFBYyxFQUN0QyxFQUFHNEIsRUFBaUIsRUFBSTVCLEVBQWMsRUFDdEMsTUFBTzRCLEVBQWlCLE1BQ3hCLE9BQVFBLEVBQWlCLE1BQy9CLENBQ0UsQ0FDQSxPQUFPdkssR0FBaUJDLENBQUksQ0FDOUIsQ0FDQSxTQUFTdUssR0FBeUJoSSxFQUFTaUksRUFBVSxDQUNuRCxNQUFNM0QsRUFBYUosR0FBY2xFLENBQU8sRUFDeEMsT0FBSXNFLElBQWUyRCxHQUFZLENBQUNqRixFQUFVc0IsQ0FBVSxHQUFLSCxHQUFzQkcsQ0FBVSxFQUNoRixHQUVGZixFQUFpQmUsQ0FBVSxFQUFFLFdBQWEsU0FBVzBELEdBQXlCMUQsRUFBWTJELENBQVEsQ0FDM0csQ0FLQSxTQUFTQyxHQUE0QmxJLEVBQVNtSSxFQUFPLENBQ25ELE1BQU1DLEVBQWVELEVBQU0sSUFBSW5JLENBQU8sRUFDdEMsR0FBSW9JLEVBQ0YsT0FBT0EsRUFFVCxJQUFJNVQsRUFBUytQLEdBQXFCdkUsRUFBUyxDQUFBLEVBQUksRUFBSyxFQUFFLE9BQU9xSSxHQUFNckYsRUFBVXFGLENBQUUsR0FBSzFGLEdBQVkwRixDQUFFLElBQU0sTUFBTSxFQUMxR0MsRUFBc0MsS0FDMUMsTUFBTUMsRUFBaUJoRixFQUFpQnZELENBQU8sRUFBRSxXQUFhLFFBQzlELElBQUlpRSxFQUFjc0UsRUFBaUJyRSxHQUFjbEUsQ0FBTyxFQUFJQSxFQUc1RCxLQUFPZ0QsRUFBVWlCLENBQVcsR0FBSyxDQUFDRSxHQUFzQkYsQ0FBVyxHQUFHLENBQ3BFLE1BQU11RSxFQUFnQmpGLEVBQWlCVSxDQUFXLEVBQzVDd0UsRUFBMEI5RSxHQUFrQk0sQ0FBVyxFQUN6RCxDQUFDd0UsR0FBMkJELEVBQWMsV0FBYSxVQUN6REYsRUFBc0MsT0FFVkMsRUFBaUIsQ0FBQ0UsR0FBMkIsQ0FBQ0gsRUFBc0MsQ0FBQ0csR0FBMkJELEVBQWMsV0FBYSxVQUFZLENBQUMsQ0FBQ0YsR0FBdUMsQ0FBQyxXQUFZLE9BQU8sRUFBRSxTQUFTQSxFQUFvQyxRQUFRLEdBQUtuRixHQUFrQmMsQ0FBVyxHQUFLLENBQUN3RSxHQUEyQlQsR0FBeUJoSSxFQUFTaUUsQ0FBVyxHQUd2WnpQLEVBQVNBLEVBQU8sT0FBT2tVLEdBQVlBLElBQWF6RSxDQUFXLEVBRzNEcUUsRUFBc0NFLEVBRXhDdkUsRUFBY0MsR0FBY0QsQ0FBVyxDQUN6QyxDQUNBLE9BQUFrRSxFQUFNLElBQUluSSxFQUFTeEwsQ0FBTSxFQUNsQkEsQ0FDVCxDQUlBLFNBQVNtVSxHQUFnQjVLLEVBQU0sQ0FDN0IsR0FBSSxDQUNGLFFBQUFpQyxFQUNBLFNBQUFMLEVBQ0EsYUFBQUMsRUFDQSxTQUFBbEIsQ0FDSixFQUFNWCxFQUVKLE1BQU02SyxFQUFvQixDQUFDLEdBRE1qSixJQUFhLG9CQUFzQjhELEdBQVd6RCxDQUFPLEVBQUksQ0FBQSxFQUFLa0ksR0FBNEJsSSxFQUFTLEtBQUssRUFBRSxFQUFJLENBQUEsRUFBRyxPQUFPTCxDQUFRLEVBQ3pHQyxDQUFZLEVBQzlEaUosRUFBd0JELEVBQWtCLENBQUMsRUFDM0NFLEVBQWVGLEVBQWtCLE9BQU8sQ0FBQ0csRUFBU2hCLElBQXFCLENBQzNFLE1BQU10SyxFQUFPcUssR0FBa0M5SCxFQUFTK0gsRUFBa0JySixDQUFRLEVBQ2xGLE9BQUFxSyxFQUFRLElBQU12TixHQUFJaUMsRUFBSyxJQUFLc0wsRUFBUSxHQUFHLEVBQ3ZDQSxFQUFRLE1BQVF4TixHQUFJa0MsRUFBSyxNQUFPc0wsRUFBUSxLQUFLLEVBQzdDQSxFQUFRLE9BQVN4TixHQUFJa0MsRUFBSyxPQUFRc0wsRUFBUSxNQUFNLEVBQ2hEQSxFQUFRLEtBQU92TixHQUFJaUMsRUFBSyxLQUFNc0wsRUFBUSxJQUFJLEVBQ25DQSxDQUNULEVBQUdqQixHQUFrQzlILEVBQVM2SSxFQUF1Qm5LLENBQVEsQ0FBQyxFQUM5RSxNQUFPLENBQ0wsTUFBT29LLEVBQWEsTUFBUUEsRUFBYSxLQUN6QyxPQUFRQSxFQUFhLE9BQVNBLEVBQWEsSUFDM0MsRUFBR0EsRUFBYSxLQUNoQixFQUFHQSxFQUFhLEdBQ3BCLENBQ0EsQ0FFQSxTQUFTRSxHQUFjaEosRUFBUyxDQUM5QixLQUFNLENBQ0osTUFBQXBDLEVBQ0EsT0FBQUMsQ0FDSixFQUFNbUgsR0FBaUJoRixDQUFPLEVBQzVCLE1BQU8sQ0FDTCxNQUFBcEMsRUFDQSxPQUFBQyxDQUNKLENBQ0EsQ0FFQSxTQUFTb0wsR0FBOEJqSixFQUFTRSxFQUFjeEIsRUFBVSxDQUN0RSxNQUFNMEksRUFBMEJuRSxFQUFjL0MsQ0FBWSxFQUNwRDRHLEVBQWtCL0QsRUFBbUI3QyxDQUFZLEVBQ2pEMEYsRUFBVWxILElBQWEsUUFDdkJqQixFQUFPcUksR0FBc0I5RixFQUFTLEdBQU00RixFQUFTMUYsQ0FBWSxFQUN2RSxJQUFJNkcsRUFBUyxDQUNYLFdBQVksRUFDWixVQUFXLENBQ2YsRUFDRSxNQUFNSSxFQUFVeEwsRUFBYSxDQUFDLEVBQzlCLEdBQUl5TCxHQUEyQixDQUFDQSxHQUEyQixDQUFDeEIsRUFJMUQsSUFISWpELEdBQVl6QyxDQUFZLElBQU0sUUFBVWlELEdBQWtCMkQsQ0FBZSxLQUMzRUMsRUFBUzNDLEdBQWNsRSxDQUFZLEdBRWpDa0gsRUFBeUIsQ0FDM0IsTUFBTUMsRUFBYXZCLEdBQXNCNUYsRUFBYyxHQUFNMEYsRUFBUzFGLENBQVksRUFDbEZpSCxFQUFRLEVBQUlFLEVBQVcsRUFBSW5ILEVBQWEsV0FDeENpSCxFQUFRLEVBQUlFLEVBQVcsRUFBSW5ILEVBQWEsU0FDMUMsTUFBVzRHLElBR1RLLEVBQVEsRUFBSVIsR0FBb0JHLENBQWUsR0FHbkQsTUFBTVEsRUFBYVIsR0FBbUIsQ0FBQ00sR0FBMkIsQ0FBQ3hCLEVBQVVpQixHQUFjQyxFQUFpQkMsQ0FBTSxFQUFJcEwsRUFBYSxDQUFDLEVBQzlIK0IsRUFBSUQsRUFBSyxLQUFPc0osRUFBTyxXQUFhSSxFQUFRLEVBQUlHLEVBQVcsRUFDM0QzSixFQUFJRixFQUFLLElBQU1zSixFQUFPLFVBQVlJLEVBQVEsRUFBSUcsRUFBVyxFQUMvRCxNQUFPLENBQ0wsRUFBQTVKLEVBQ0EsRUFBQUMsRUFDQSxNQUFPRixFQUFLLE1BQ1osT0FBUUEsRUFBSyxNQUNqQixDQUNBLENBRUEsU0FBU3lMLEdBQW1CbEosRUFBUyxDQUNuQyxPQUFPdUQsRUFBaUJ2RCxDQUFPLEVBQUUsV0FBYSxRQUNoRCxDQUVBLFNBQVNtSixHQUFvQm5KLEVBQVNvSixFQUFVLENBQzlDLEdBQUksQ0FBQ25HLEVBQWNqRCxDQUFPLEdBQUt1RCxFQUFpQnZELENBQU8sRUFBRSxXQUFhLFFBQ3BFLE9BQU8sS0FFVCxHQUFJb0osRUFDRixPQUFPQSxFQUFTcEosQ0FBTyxFQUV6QixJQUFJcUosRUFBa0JySixFQUFRLGFBTTlCLE9BQUkrQyxFQUFtQi9DLENBQU8sSUFBTXFKLElBQ2xDQSxFQUFrQkEsRUFBZ0IsY0FBYyxNQUUzQ0EsQ0FDVCxDQUlBLFNBQVNDLEdBQWdCdEosRUFBU29KLEVBQVUsQ0FDMUMsTUFBTXZFLEVBQU1oQyxFQUFVN0MsQ0FBTyxFQUM3QixHQUFJeUQsR0FBV3pELENBQU8sRUFDcEIsT0FBTzZFLEVBRVQsR0FBSSxDQUFDNUIsRUFBY2pELENBQU8sRUFBRyxDQUMzQixJQUFJdUosRUFBa0JyRixHQUFjbEUsQ0FBTyxFQUMzQyxLQUFPdUosR0FBbUIsQ0FBQ3BGLEdBQXNCb0YsQ0FBZSxHQUFHLENBQ2pFLEdBQUl2RyxFQUFVdUcsQ0FBZSxHQUFLLENBQUNMLEdBQW1CSyxDQUFlLEVBQ25FLE9BQU9BLEVBRVRBLEVBQWtCckYsR0FBY3FGLENBQWUsQ0FDakQsQ0FDQSxPQUFPMUUsQ0FDVCxDQUNBLElBQUkzRSxFQUFlaUosR0FBb0JuSixFQUFTb0osQ0FBUSxFQUN4RCxLQUFPbEosR0FBZ0JzRCxHQUFldEQsQ0FBWSxHQUFLZ0osR0FBbUJoSixDQUFZLEdBQ3BGQSxFQUFlaUosR0FBb0JqSixFQUFja0osQ0FBUSxFQUUzRCxPQUFJbEosR0FBZ0JpRSxHQUFzQmpFLENBQVksR0FBS2dKLEdBQW1CaEosQ0FBWSxHQUFLLENBQUN5RCxHQUFrQnpELENBQVksRUFDckgyRSxFQUVGM0UsR0FBZ0I4RCxHQUFtQmhFLENBQU8sR0FBSzZFLENBQ3hELENBRUEsTUFBTTJFLEdBQWtCLGVBQWdCbkssRUFBTSxDQUM1QyxNQUFNb0ssRUFBb0IsS0FBSyxpQkFBbUJILEdBQzVDSSxFQUFrQixLQUFLLGNBQ3ZCQyxFQUFxQixNQUFNRCxFQUFnQnJLLEVBQUssUUFBUSxFQUM5RCxNQUFPLENBQ0wsVUFBVzRKLEdBQThCNUosRUFBSyxVQUFXLE1BQU1vSyxFQUFrQnBLLEVBQUssUUFBUSxFQUFHQSxFQUFLLFFBQVEsRUFDOUcsU0FBVSxDQUNSLEVBQUcsRUFDSCxFQUFHLEVBQ0gsTUFBT3NLLEVBQW1CLE1BQzFCLE9BQVFBLEVBQW1CLE1BQ2pDLENBQ0EsQ0FDQSxFQUVBLFNBQVNDLEdBQU01SixFQUFTLENBQ3RCLE9BQU91RCxFQUFpQnZELENBQU8sRUFBRSxZQUFjLEtBQ2pELENBRUEsTUFBTXBCLEdBQVcsQ0FDZixzREFBQXNJLEdBQ0EsbUJBQUFuRSxFQUNBLGdCQUFBNEYsR0FDQSxnQkFBQVcsR0FDQSxnQkFBQUUsR0FDQSxlQUFBakMsR0FDQSxjQUFBeUIsR0FDQSxTQUFBMUQsR0FDQSxVQUFBdEMsRUFDQSxNQUFBNEcsRUFDRixFQUVBLFNBQVNDLEdBQWN0WSxFQUFHQyxFQUFHLENBQzNCLE9BQU9ELEVBQUUsSUFBTUMsRUFBRSxHQUFLRCxFQUFFLElBQU1DLEVBQUUsR0FBS0QsRUFBRSxRQUFVQyxFQUFFLE9BQVNELEVBQUUsU0FBV0MsRUFBRSxNQUM3RSxDQUdBLFNBQVNzWSxHQUFZOUosRUFBUytKLEVBQVEsQ0FDcEMsSUFBSUMsRUFBSyxLQUNMQyxFQUNKLE1BQU1DLEVBQU9uSCxFQUFtQi9DLENBQU8sRUFDdkMsU0FBU21LLEdBQVUsQ0FDakIsSUFBSUMsRUFDSixhQUFhSCxDQUFTLEdBQ3JCRyxFQUFNSixJQUFPLE1BQVFJLEVBQUksV0FBVSxFQUNwQ0osRUFBSyxJQUNQLENBQ0EsU0FBU0ssRUFBUUMsRUFBTUMsRUFBVyxDQUM1QkQsSUFBUyxTQUNYQSxFQUFPLElBRUxDLElBQWMsU0FDaEJBLEVBQVksR0FFZEosRUFBTyxFQUNQLE1BQU1LLEVBQTJCeEssRUFBUSxzQkFBcUIsRUFDeEQsQ0FDSixLQUFBeUcsRUFDQSxJQUFBQyxFQUNBLE1BQUE5SSxFQUNBLE9BQUFDLENBQ04sRUFBUTJNLEVBSUosR0FIS0YsR0FDSFAsRUFBTSxFQUVKLENBQUNuTSxHQUFTLENBQUNDLEVBQ2IsT0FFRixNQUFNNE0sRUFBVy9PLEdBQU1nTCxDQUFHLEVBQ3BCZ0UsRUFBYWhQLEdBQU13TyxFQUFLLGFBQWV6RCxFQUFPN0ksRUFBTSxFQUNwRCtNLEVBQWNqUCxHQUFNd08sRUFBSyxjQUFnQnhELEVBQU03SSxFQUFPLEVBQ3REK00sRUFBWWxQLEdBQU0rSyxDQUFJLEVBRXRCeFYsRUFBVSxDQUNkLFdBRmlCLENBQUN3WixFQUFXLE1BQVEsQ0FBQ0MsRUFBYSxNQUFRLENBQUNDLEVBQWMsTUFBUSxDQUFDQyxFQUFZLEtBRy9GLFVBQVdwUCxHQUFJLEVBQUdELEdBQUksRUFBR2dQLENBQVMsQ0FBQyxHQUFLLENBQzlDLEVBQ0ksSUFBSU0sRUFBZ0IsR0FDcEIsU0FBU0MsRUFBYzVaLEVBQVMsQ0FDOUIsTUFBTTZaLEVBQVE3WixFQUFRLENBQUMsRUFBRSxrQkFDekIsR0FBSTZaLElBQVVSLEVBQVcsQ0FDdkIsR0FBSSxDQUFDTSxFQUNILE9BQU9SLEVBQU8sRUFFWFUsRUFPSFYsRUFBUSxHQUFPVSxDQUFLLEVBSnBCZCxFQUFZLFdBQVcsSUFBTSxDQUMzQkksRUFBUSxHQUFPLElBQUksQ0FDckIsRUFBRyxHQUFJLENBSVgsQ0FDSVUsSUFBVSxHQUFLLENBQUNsQixHQUFjVyxFQUEwQnhLLEVBQVEsc0JBQXFCLENBQUUsR0FRekZxSyxFQUFPLEVBRVRRLEVBQWdCLEVBQ2xCLENBSUEsR0FBSSxDQUNGYixFQUFLLElBQUkscUJBQXFCYyxFQUFlLENBQzNDLEdBQUc3WixFQUVILEtBQU1pWixFQUFLLGFBQ25CLENBQU8sQ0FDSCxNQUFZLENBQ1ZGLEVBQUssSUFBSSxxQkFBcUJjLEVBQWU3WixDQUFPLENBQ3RELENBQ0ErWSxFQUFHLFFBQVFoSyxDQUFPLENBQ3BCLENBQ0EsT0FBQXFLLEVBQVEsRUFBSSxFQUNMRixDQUNULENBVUEsU0FBU2EsR0FBV2hOLEVBQVdDLEVBQVVnTixFQUFRaGEsRUFBUyxDQUNwREEsSUFBWSxTQUNkQSxFQUFVLENBQUEsR0FFWixLQUFNLENBQ0osZUFBQWlhLEVBQWlCLEdBQ2pCLGVBQUFDLEVBQWlCLEdBQ2pCLGNBQUFDLEVBQWdCLE9BQU8sZ0JBQW1CLFdBQzFDLFlBQUFDLEVBQWMsT0FBTyxzQkFBeUIsV0FDOUMsZUFBQUMsRUFBaUIsRUFDckIsRUFBTXJhLEVBQ0VzYSxFQUFjbEcsR0FBY3JILENBQVMsRUFDckN3TixFQUFZTixHQUFrQkMsRUFBaUIsQ0FBQyxHQUFJSSxFQUFjaEgsR0FBcUJnSCxDQUFXLEVBQUksQ0FBQSxFQUFLLEdBQUdoSCxHQUFxQnRHLENBQVEsQ0FBQyxFQUFJLENBQUEsRUFDdEp1TixFQUFVLFFBQVE5QyxHQUFZLENBQzVCd0MsR0FBa0J4QyxFQUFTLGlCQUFpQixTQUFVdUMsRUFBUSxDQUM1RCxRQUFTLEVBQ2YsQ0FBSyxFQUNERSxHQUFrQnpDLEVBQVMsaUJBQWlCLFNBQVV1QyxDQUFNLENBQzlELENBQUMsRUFDRCxNQUFNUSxFQUFZRixHQUFlRixFQUFjdkIsR0FBWXlCLEVBQWFOLENBQU0sRUFBSSxLQUNsRixJQUFJUyxFQUFpQixHQUNqQkMsRUFBaUIsS0FDakJQLElBQ0ZPLEVBQWlCLElBQUksZUFBZTVOLEdBQVEsQ0FDMUMsR0FBSSxDQUFDNk4sQ0FBVSxFQUFJN04sRUFDZjZOLEdBQWNBLEVBQVcsU0FBV0wsR0FBZUksSUFHckRBLEVBQWUsVUFBVTFOLENBQVEsRUFDakMscUJBQXFCeU4sQ0FBYyxFQUNuQ0EsRUFBaUIsc0JBQXNCLElBQU0sQ0FDM0MsSUFBSUcsR0FDSEEsRUFBa0JGLElBQW1CLE1BQVFFLEVBQWdCLFFBQVE1TixDQUFRLENBQ2hGLENBQUMsR0FFSGdOLEVBQU0sQ0FDUixDQUFDLEVBQ0dNLEdBQWUsQ0FBQ0QsR0FDbEJLLEVBQWUsUUFBUUosQ0FBVyxFQUVwQ0ksRUFBZSxRQUFRMU4sQ0FBUSxHQUVqQyxJQUFJNk4sRUFDQUMsRUFBY1QsRUFBaUJ4RixHQUFzQjlILENBQVMsRUFBSSxLQUNsRXNOLEdBQ0ZVLEVBQVMsRUFFWCxTQUFTQSxHQUFZLENBQ25CLE1BQU1DLEVBQWNuRyxHQUFzQjlILENBQVMsRUFDL0MrTixHQUFlLENBQUNsQyxHQUFja0MsRUFBYUUsQ0FBVyxHQUN4RGhCLEVBQU0sRUFFUmMsRUFBY0UsRUFDZEgsRUFBVSxzQkFBc0JFLENBQVMsQ0FDM0MsQ0FDQSxPQUFBZixFQUFNLEVBQ0MsSUFBTSxDQUNYLElBQUlpQixFQUNKVixFQUFVLFFBQVE5QyxHQUFZLENBQzVCd0MsR0FBa0J4QyxFQUFTLG9CQUFvQixTQUFVdUMsQ0FBTSxFQUMvREUsR0FBa0J6QyxFQUFTLG9CQUFvQixTQUFVdUMsQ0FBTSxDQUNqRSxDQUFDLEVBQ0RRLEdBQWEsTUFBUUEsRUFBUyxHQUM3QlMsRUFBbUJQLElBQW1CLE1BQVFPLEVBQWlCLFdBQVUsRUFDMUVQLEVBQWlCLEtBQ2JMLEdBQ0YscUJBQXFCUSxDQUFPLENBRWhDLENBQ0YsQ0FtQkEsTUFBTWpLLEdBQVNzSyxHQVFUM0wsR0FBZ0I0TCxHQU9oQm5LLEdBQVFvSyxHQWdEUjVOLEdBQWtCLENBQUNULEVBQVdDLEVBQVVoTixJQUFZLENBSXhELE1BQU1rWCxFQUFRLElBQUksSUFDWm1FLEVBQWdCLENBQ3BCLFNBQUExTixHQUNBLEdBQUczTixDQUNQLEVBQ1FzYixFQUFvQixDQUN4QixHQUFHRCxFQUFjLFNBQ2pCLEdBQUluRSxDQUNSLEVBQ0UsT0FBT3FFLEdBQWtCeE8sRUFBV0MsRUFBVSxDQUM1QyxHQUFHcU8sRUFDSCxTQUFVQyxDQUNkLENBQUcsQ0FDSCxFQ3h1QkEsU0FBU0UsR0FBMEI1YSxFQUFRLENBQ3pDLE9BQU9BLEdBQVUsTUFBUSxPQUFPQSxHQUFXLFVBQVksUUFBU0EsQ0FDbEUsQ0FDQSxTQUFTd1QsR0FBY3hULEVBQVEsQ0FDN0IsR0FBSTRhLEdBQTBCNWEsQ0FBTSxFQUFHLENBQ3JDLE1BQU1tTyxFQUFVbk8sRUFBTyxJQUN2QixPQUFPK1EsR0FBTzVDLENBQU8sR0FBSzJDLEdBQVkzQyxDQUFPLElBQU0sV0FBYSxLQUFPQSxDQUN6RSxDQUNBLE9BQU9uTyxDQUNULENBRUEsU0FBUzZhLEdBQVExWSxFQUFRLENBQ3ZCLE9BQU8sT0FBT0EsR0FBVyxXQUFhQSxFQUFNLEVBQUsyWSxFQUFBQSxNQUFNM1ksQ0FBTSxDQUMvRCxDQXdCQSxTQUFTNFksR0FBTzVNLEVBQVMsQ0FDdkIsT0FBSSxPQUFPLE9BQVcsSUFDYixHQUVHQSxFQUFRLGNBQWMsYUFBZSxRQUN0QyxrQkFBb0IsQ0FDakMsQ0FFQSxTQUFTNk0sR0FBVzdNLEVBQVN6TCxFQUFPLENBQ2xDLE1BQU11WSxFQUFNRixHQUFPNU0sQ0FBTyxFQUMxQixPQUFPLEtBQUssTUFBTXpMLEVBQVF1WSxDQUFHLEVBQUlBLENBQ25DLENBU0EsU0FBU0MsR0FBWS9PLEVBQVdDLEVBQVVoTixFQUFTLENBQzdDQSxJQUFZLFNBQ2RBLEVBQVUsQ0FBQSxHQUVaLE1BQU0rYixFQUE2Qi9iLEVBQVEscUJBQ3JDZ2MsRUFBYTFmLEVBQUFBLFNBQVMsSUFBTSxDQUNoQyxJQUFJMmYsRUFDSixPQUFRQSxFQUFXUixHQUFRemIsRUFBUSxJQUFJLElBQU0sS0FBT2ljLEVBQVcsRUFDakUsQ0FBQyxFQUNLQyxFQUFtQjVmLEVBQUFBLFNBQVMsSUFBTW1mLEdBQVF6YixFQUFRLFVBQVUsQ0FBQyxFQUM3RG1jLEVBQWtCN2YsRUFBQUEsU0FBUyxJQUFNLENBQ3JDLElBQUk4ZixFQUNKLE9BQVFBLEVBQVlYLEdBQVF6YixFQUFRLFNBQVMsSUFBTSxLQUFPb2MsRUFBWSxRQUN4RSxDQUFDLEVBQ0tDLEVBQWlCL2YsRUFBQUEsU0FBUyxJQUFNLENBQ3BDLElBQUlnZ0IsRUFDSixPQUFRQSxFQUFZYixHQUFRemIsRUFBUSxRQUFRLElBQU0sS0FBT3NjLEVBQVksVUFDdkUsQ0FBQyxFQUNLQyxFQUFrQmpnQixFQUFBQSxTQUFTLElBQU0sQ0FDckMsSUFBSWtnQixFQUNKLE9BQVFBLEVBQVlmLEdBQVF6YixFQUFRLFNBQVMsSUFBTSxLQUFPd2MsRUFBWSxFQUN4RSxDQUFDLEVBQ0tDLEVBQW1CbmdCLEVBQUFBLFNBQVMsSUFBTThYLEdBQWNySCxFQUFVLEtBQUssQ0FBQyxFQUNoRTJQLEVBQWtCcGdCLEVBQUFBLFNBQVMsSUFBTThYLEdBQWNwSCxFQUFTLEtBQUssQ0FBQyxFQUM5RFAsRUFBSXZTLEVBQUFBLElBQUksQ0FBQyxFQUNUd1MsRUFBSXhTLEVBQUFBLElBQUksQ0FBQyxFQUNUdVQsRUFBV3ZULEVBQUFBLElBQUltaUIsRUFBZSxLQUFLLEVBQ25DalIsRUFBWWxSLEVBQUFBLElBQUlpaUIsRUFBZ0IsS0FBSyxFQUNyQ3JPLEVBQWlCNk8sRUFBQUEsV0FBVyxFQUFFLEVBQzlCQyxFQUFlMWlCLEVBQUFBLElBQUksRUFBSyxFQUN4QjJpQixFQUFpQnZnQixFQUFBQSxTQUFTLElBQU0sQ0FDcEMsTUFBTXdnQixFQUFnQixDQUNwQixTQUFVclAsRUFBUyxNQUNuQixLQUFNLElBQ04sSUFBSyxHQUNYLEVBQ0ksR0FBSSxDQUFDaVAsRUFBZ0IsTUFDbkIsT0FBT0ksRUFFVCxNQUFNQyxFQUFPbkIsR0FBV2MsRUFBZ0IsTUFBT2pRLEVBQUUsS0FBSyxFQUNoRHVRLEVBQU9wQixHQUFXYyxFQUFnQixNQUFPaFEsRUFBRSxLQUFLLEVBQ3RELE9BQUk2UCxFQUFnQixNQUNYLENBQ0wsR0FBR08sRUFDSCxVQUFXLGFBQWVDLEVBQU8sT0FBU0MsRUFBTyxNQUNqRCxHQUFJckIsR0FBT2UsRUFBZ0IsS0FBSyxHQUFLLEtBQU8sQ0FDMUMsV0FBWSxXQUN0QixDQUNBLEVBRVcsQ0FDTCxTQUFValAsRUFBUyxNQUNuQixLQUFNc1AsRUFBTyxLQUNiLElBQUtDLEVBQU8sSUFDbEIsQ0FDRSxDQUFDLEVBQ0QsSUFBSUMsRUFDSixTQUFTakQsR0FBUyxDQUNoQixHQUFJeUMsRUFBaUIsT0FBUyxNQUFRQyxFQUFnQixPQUFTLEtBQzdELE9BRUYsTUFBTVEsRUFBT2xCLEVBQVcsTUFDeEJ4TyxHQUFnQmlQLEVBQWlCLE1BQU9DLEVBQWdCLE1BQU8sQ0FDN0QsV0FBWVIsRUFBaUIsTUFDN0IsVUFBV0MsRUFBZ0IsTUFDM0IsU0FBVUUsRUFBZSxLQUMvQixDQUFLLEVBQUUsS0FBS2MsR0FBWSxDQUNsQjFRLEVBQUUsTUFBUTBRLEVBQVMsRUFDbkJ6USxFQUFFLE1BQVF5USxFQUFTLEVBQ25CMVAsRUFBUyxNQUFRMFAsRUFBUyxTQUMxQi9SLEVBQVUsTUFBUStSLEVBQVMsVUFDM0JyUCxFQUFlLE1BQVFxUCxFQUFTLGVBT2hDUCxFQUFhLE1BQVFNLElBQVMsRUFDaEMsQ0FBQyxDQUNILENBQ0EsU0FBU2hFLEdBQVUsQ0FDYixPQUFPK0QsR0FBZ0MsYUFDekNBLEVBQTJCLEVBQzNCQSxFQUE4QixPQUVsQyxDQUNBLFNBQVNHLEdBQVMsQ0FFaEIsR0FEQWxFLEVBQU8sRUFDSDZDLElBQStCLE9BQVcsQ0FDNUMvQixFQUFNLEVBQ04sTUFDRixDQUNBLEdBQUl5QyxFQUFpQixPQUFTLE1BQVFDLEVBQWdCLE9BQVMsS0FBTSxDQUNuRU8sRUFBOEJsQixFQUEyQlUsRUFBaUIsTUFBT0MsRUFBZ0IsTUFBTzFDLENBQU0sRUFDOUcsTUFDRixDQUNGLENBQ0EsU0FBUzNMLEdBQVEsQ0FDVjJOLEVBQVcsUUFDZFksRUFBYSxNQUFRLEdBRXpCLENBQ0F6aUIsT0FBQUEsRUFBQUEsTUFBTSxDQUFDK2hCLEVBQWtCQyxFQUFpQkUsRUFBZ0JMLENBQVUsRUFBR2hDLEVBQVEsQ0FDN0UsTUFBTyxNQUNYLENBQUcsRUFDRDdmLEVBQUFBLE1BQU0sQ0FBQ3NpQixFQUFrQkMsQ0FBZSxFQUFHVSxFQUFRLENBQ2pELE1BQU8sTUFDWCxDQUFHLEVBQ0RqakIsRUFBQUEsTUFBTTZoQixFQUFZM04sRUFBTyxDQUN2QixNQUFPLE1BQ1gsQ0FBRyxFQUNHZ1AsRUFBQUEsZ0JBQWUsR0FDakJDLEVBQUFBLGVBQWVwRSxDQUFPLEVBRWpCLENBQ0wsRUFBR3FFLEVBQUFBLGdCQUFnQjlRLENBQUMsRUFDcEIsRUFBRzhRLEVBQUFBLGdCQUFnQjdRLENBQUMsRUFDcEIsU0FBVTZRLEVBQUFBLGdCQUFnQjlQLENBQVEsRUFDbEMsVUFBVzhQLEVBQUFBLGdCQUFnQm5TLENBQVMsRUFDcEMsZUFBZ0JtUyxFQUFBQSxnQkFBZ0J6UCxDQUFjLEVBQzlDLGFBQWN5UCxFQUFBQSxnQkFBZ0JYLENBQVksRUFDMUMsZUFBQUMsRUFDQSxPQUFBN0MsQ0FDSixDQUNBLENDM0xPLE1BQU13RCxHQUFpQixDQUFDdFgsRUFBbUJ1SSxJQUV6QyxFQURTLE1BQU0sUUFBUUEsQ0FBUSxFQUFJQSxFQUFXLENBQUNBLENBQVEsR0FDOUMsS0FBTTJJLEdBQU9BLEVBQUcsU0FBU2xSLEVBQU0sTUFBYyxDQUFDLDhGQ2E5RCxNQUFNcE4sRUFBUUMsRUFJUjBrQixFQUFrQ3ZqQixFQUFBQSxJQUFJLElBQUksRUFDMUM4UyxFQUFvQzlTLEVBQUFBLElBQUksSUFBSSxFQUM1QytlLEVBQWdDL2UsRUFBQUEsSUFBSSxJQUFJLEVBQ3hDd2pCLEVBQVl4akIsRUFBQUEsSUFBSSxFQUFLLEVBQ3JCeWpCLEVBQWdCempCLEVBQUFBLElBQUksRUFBSyxFQUN6QndULEVBQWF4VCxFQUFBQSxJQUFJLENBQUNxVixLQUFpQnFPLEdBQWlCLENBQUUsU0FBVTlrQixFQUFNLE1BQUEsQ0FBUSxFQUFHa1ksR0FBTSxDQUFFLFFBQVMsRUFBQSxDQUFJLENBQUMsQ0FBQyxFQUV4RzZNLEVBQWdCdmhCLEVBQUFBLFNBQVMsSUFBTW9oQixFQUFVLE9BQVNDLEVBQWMsS0FBSyxFQUVyRSxDQUFFLGVBQUFkLENBQUEsRUFBbUJmLEdBQVkyQixFQUFRelEsRUFBVSxDQUN2RCxXQUFBVSxFQUNBLFNBQVUsUUFDVixxQkFBc0JxTSxFQUFBLENBQ3ZCLEVBRUsrRCxFQUFnQ3hiLEdBQWtCLENBQ2xELENBQUNtYixFQUFPLE9BQVMsQ0FBQ3pRLEVBQVMsT0FDM0J3USxHQUFlbGIsRUFBRyxDQUFDbWIsRUFBTyxNQUFPelEsRUFBUyxLQUFLLENBQUMsSUFDbEQyUSxFQUFjLE1BQVEsR0FDdEJyYixFQUFFLGVBQUEsRUFDRkEsRUFBRSx5QkFBQSxFQUVOLEVBRU15YixFQUErQixJQUFNLENBQ3pDTCxFQUFVLE1BQVEsRUFDcEIsRUFFTU0sRUFBZ0MsSUFBTSxDQUMxQ04sRUFBVSxNQUFRLEVBQ3BCLEVBRU1PLEVBQTRCM2IsR0FBa0IsQ0FDbERBLEVBQUUsZUFBQSxFQUNFcWIsRUFBYyxPQUNoQkEsRUFBYyxNQUFRLEdBQ3RCRCxFQUFVLE1BQVEsSUFFbEJDLEVBQWMsTUFBUSxFQUUxQixFQUVNTyxFQUE4QixJQUFNLENBQ3hDLEdBQUksQ0FBQ1QsRUFBTyxNQUFPLE9BQU8sS0FDMUJBLEVBQU8sTUFBTSxpQkFBaUIsWUFBYU0sQ0FBNEIsRUFDdkVOLEVBQU8sTUFBTSxpQkFBaUIsYUFBY08sQ0FBNkIsRUFDekVQLEVBQU8sTUFBTSxpQkFBaUIsUUFBU1EsQ0FBd0IsQ0FDakUsRUFFTUUsRUFBbUMsSUFBTSxDQUM3QyxHQUFJLENBQUNWLEVBQU8sTUFBTyxPQUFPLEtBQzFCQSxFQUFPLE1BQU0sb0JBQW9CLFlBQWFNLENBQTRCLEVBQzFFTixFQUFPLE1BQU0sb0JBQW9CLGFBQWNPLENBQTZCLEVBQzVFUCxFQUFPLE1BQU0sb0JBQW9CLFFBQVNRLENBQXdCLENBQ3BFLEVBRU1HLEVBQWtDOWIsR0FBcUIsQ0FDdkRBLEVBQUUsTUFBUSxXQUNacWIsRUFBYyxNQUFRLEdBRTFCLEVBRU1VLEVBQXlCLElBQU0sQ0FDOUJwRixFQUFLLFFBQ1ZBLEVBQUssTUFBTSxpQkFBaUIsUUFBUzZFLEVBQThCLEVBQUksRUFDdkU3RSxFQUFLLE1BQU0saUJBQWlCLFVBQVdtRixDQUE4QixFQUN2RSxFQUVNRSxFQUE4QixJQUFNLENBQ25DckYsRUFBSyxRQUNWQSxFQUFLLE1BQU0sb0JBQW9CLFFBQVM2RSxFQUE4QixFQUFJLEVBQzFFN0UsRUFBSyxNQUFNLG9CQUFvQixVQUFXbUYsQ0FBOEIsRUFDMUUsRUFFTUcsRUFBc0IsSUFBTSxDQUNoQ2QsRUFBTyxNQUFRLFNBQVMsZUFBZTNrQixFQUFNLFFBQVEsQ0FDdkQsRUFFQXFCLE9BQUFBLEVBQUFBLE1BQ0UsSUFBTXdqQixFQUFjLE1BQ25CelksR0FBYSxDQUNSQSxFQUNGbVosRUFBQSxFQUVBQyxFQUFBLENBRUosQ0FBQSxFQUdGbmtCLEVBQUFBLE1BQ0UsSUFBTXJCLEVBQU0sU0FDWixJQUFNLENBQ0pxbEIsRUFBQSxFQUNBSSxFQUFBLEVBQ0FMLEVBQUEsQ0FDRixDQUFBLEVBR0ZqWixFQUFBQSxZQUFZLElBQU0sQ0FDaEJ5SSxFQUFXLE1BQVEsQ0FBQzZCLEdBQUEsRUFBaUJxTyxHQUFpQixDQUFFLFNBQVU5a0IsRUFBTSxNQUFBLENBQVEsRUFBR2tZLEdBQU0sQ0FBRSxRQUFTLEVBQUEsQ0FBSSxDQUFDLENBQzNHLENBQUMsRUFFRHhILEVBQUFBLGNBQWMsSUFBTSxDQUNsQlgsR0FBQSxDQUNGLENBQUMsRUFFRHRILEVBQUFBLFVBQVUsSUFBTSxDQUNkZ2QsRUFBQSxFQUNBdEYsRUFBSyxNQUFRLFNBQVMsZ0JBQ3RCaUYsRUFBQSxDQUNGLENBQUMsRUFFRDFjLEVBQUFBLFlBQVksSUFBTSxDQUNoQjJjLEVBQUEsQ0FDRixDQUFDLHdCQUlEeGpCLEVBQUFBLFlBb0JXOE8sV0FBQSxDQXBCQSxPQUFRcFEsRUFBQUEsTUFBQXVQLEVBQUEsQ0FBWSxFQUFBLEdBQzdCeE4sRUFBQUEsWUFrQmFvakIsRUFBQUEsV0FBQSxLQUFBLG1CQWpCWCxJQWdCTSxrQkFoQk5ybEIsRUFBQUEsbUJBZ0JNLE1BQUEsQ0FmSCxNQUFLQyxFQUFBQSxlQUFBLGdCQUF3Q0MsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEdBQUcsUUFBUSxRQUFtQlcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sTUFBTSxJQUFlVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxLQUFLLElBQWVXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLE9BQU8sS0FBZ0JXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLEtBQUssT0FBa0JXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLEtBQUssSUFBZVcsUUFBQVgsQ0FBQSxFQUFJLE9BQU8sTUFBQSxXQVV4UCxXQUFKLElBQUlzVSxFQUNILDJCQUFZM1QsRUFBQUEsTUFBQXdqQixDQUFBLEVBQWMsQ0FBQSxHQUczQnZoQixFQUFBQSxXQUFRQyxFQUFBLE9BQUEsVUFBQSxDQUFBLEVBQUEsT0FBQSxFQUFBLENBQUEsZUFGQXNpQixFQUFBLEtBQWEsQ0FBQSx1VkM1STNCLE1BQU0va0IsRUFBUUMsRUFPUjBsQixFQUFjempCLEVBQUFBLHVCQUFzQyxFQUVwRDBqQixFQUFXcGlCLEVBQUFBLFNBQVMsSUFBTSxNQUFNLEtBQUssQ0FBRSxPQUFReEQsRUFBTSxTQUFBLEVBQWEsQ0FBQzZsQixFQUFHaGhCLElBQVVBLEVBQVEsQ0FBQyxDQUFDLEVBRTFGSSxFQUFlNmdCLEdBQW9CLENBQ3ZDSCxFQUFZLE1BQVFHLENBQ3RCLDhCQUlBM2xCLEVBQUFBLG1CQXdDTSxNQUFBLENBeENBLE1BQUtHLEVBQUFBLGVBQUEsQ0FBQSxjQUFrQkMsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE1BQU0sSUFBSSxDQUFBLENBQUEsR0FDekNTLEVBQUFBLG1CQVVVLFVBQUEsQ0FWQSxNQUFLQyxFQUFBQSxlQUFBLENBQUdDLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLEtBQU1XLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxNQUFNLE9BQVFXLFFBQUFYLENBQUEsRUFBSSxNQUFNLFFBQVNXLFFBQUFYLENBQUEsRUFBSSxRQUFRLE9BQU8sSUFBSSxDQUFBLENBQUEsR0FDOUZTLEVBQUFBLG1CQUVNLE1BQUEsQ0FGQSx3QkFBUUUsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxPQUFPLENBQUEsQ0FBQSxFQUM5QnlDLGtCQUFBckMsRUFBTSxLQUFLLEVBQUEsQ0FBQSxFQUlSQSxFQUFNLDBCQUZkRyxFQUFBQSxtQkFLTSxNQUFBLE9BSkgsd0JBQVFJLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLEtBQUssUUFBU1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssTUFBTSxRQUFRLE9BQU8sQ0FBQSxDQUFBLEVBRzNEeUMsRUFBQUEsZ0JBQUFzakIsRUFBQSxLQUFXLEVBQUcsSUFBQ3RqQixFQUFBQSxnQkFBR3JDLEVBQU0sU0FBUyxFQUFBLENBQUEsbUNBS2hDQSxFQUFNLDJCQUZkRyxFQUFBQSxtQkFLVSxVQUFBLE9BSlAsTUFBS0csRUFBQUEsZUFBQSxDQUFHQyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLE9BQVFXLFFBQUFYLENBQUEsRUFBSSxRQUFRLE9BQU8sSUFBS1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFNBQVMsR0FBRyxPQUFRVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksUUFBUSxDQUFBLENBQUEsRUFHeEZ5QyxFQUFBQSxnQkFBQXJDLEVBQU0sV0FBVyxFQUFBLENBQUEsK0JBR3RCSyxFQUFBQSxtQkFvQlUsVUFBQSxDQXBCQSxNQUFLQyxFQUFBQSxlQUFBLENBQUEsa0JBQXNCQyxRQUFBWCxDQUFBLEVBQUksUUFBUSxLQUFNVyxRQUFBWCxDQUFBLEVBQUksSUFBSSxRQUFTVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLEdBQUlXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFBLENBQUEsb0JBQzFHTyxFQUFBQSxtQkFrQkV3RSxFQUFBQSxTQUFBLEtBQUFPLEVBQUFBLFdBRGtCMGdCLEVBQUEsTUFBWEUsa0JBakJUM2xCLEVBQUFBLG1CQWtCRSxTQUFBLENBakJDLE1BQUtHLEVBQUFBLGVBQUEsdUJBQStDQyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksR0FBRyxRQUFRLFFBQW1CVyxRQUFBWCxDQUFBLEVBQUksU0FBUyxTQUFvQlcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFNBQVMsR0FBRyxPQUFrQlcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxHQUFjVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxPQUFPLEdBQWNXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLE1BQU0sS0FBZ0JXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLEtBQUssS0FBZ0JrbUIsSUFBTyxHQUFBLENBQUEsMkJBQUEsRUFBbURBLElBQVlGLEVBQUEsTUFBUyxRQUFNLENBQUEsMEJBQUEsRUFBNENFLEdBQVdILFNBQVcsQ0FBS3BsQixFQUFBQSxNQUFBWCxDQUFBLEVBQUksR0FBRyxRQUFRLFFBQVEsQ0FBQSxHQWFyYyxJQUFLa21CLEVBQ0wsUUFBSzFnQixHQUFFSCxFQUFZNmdCLENBQU8sRUFDM0IsS0FBSyxRQUFBLG9NQ3JEWCxNQUFNOWxCLEVBQVFDLGdCQU1kQyxZQUFBLEVBQUFDLHFCQW9CVSxVQXBCVkMsR0FvQlUsQ0FuQlJDLEVBQUFBLG1CQUVLLEtBQUEsQ0FGQSx3QkFBUUUsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sT0FBTyxJQUFJLENBQUEsQ0FBQSxFQUM5QnlDLGtCQUFBckMsRUFBTSxPQUFPLEVBQUEsQ0FBQSxFQUdsQkssRUFBQUEsbUJBY0ssS0FBQSxDQWRBLE1BQUtDLEVBQUFBLGVBQUEsQ0FBR0MsRUFBQUEsU0FBSSxRQUFRLEtBQU1BLFFBQUFYLENBQUEsRUFBSSxLQUFLLEtBQU1XLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxJQUFJLElBQUtXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxhQUFhLEdBQUcsQ0FBQSxDQUFBLElBQzdFTSxZQUFBLEVBQUEsRUFBQUMsRUFBQUEsbUJBWUt3RSxFQUFBQSxTQUFBLEtBQUFPLEVBQUFBLFdBVFlsRixFQUFNLE1BQWQrbEIsa0JBSFQ1bEIsRUFBQUEsbUJBWUssS0FBQSxDQVhGLE1BQUtHLEVBQUFBLGVBQUEsQ0FBQSxnQkFBb0JDLFFBQUFYLENBQUEsRUFBSSxRQUFRLEtBQU1XLFFBQUFYLENBQUEsRUFBSSxLQUFLLFVBQVUsT0FBUVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLElBQUksUUFBU1csUUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxNQUFNLENBQUEsRUFDM0csSUFBS21tQixFQUFLLEtBQUEsR0FHWHpqQixFQUFBQSxZQU1tQm9CLEdBQUEsQ0FMaEIsd0JBQVFuRCxRQUFBWCxDQUFBLEVBQUksVUFBVSxLQUFLLEdBQUcsQ0FBQSxFQUM5QixLQUFNbW1CLEVBQUssSUFDWCxPQUFRQSxFQUFLLFNBQVd4bEIsRUFBQUEsTUFBQStDLENBQUEsRUFBTyxNQUFRL0MsUUFBQStDLENBQUEsRUFBTyxJQUFBLHFCQUUvQyxJQUFnQixDQUFid0IsRUFBQUEsZ0JBQUF6QyxFQUFBQSxnQkFBQTBqQixFQUFLLEtBQUssRUFBQSxDQUFBLENBQUEsZ1ZDVnJCLE1BQU1uaUIsRUFBT0MsRUFFUG1pQixFQUErQzVrQixFQUFBQSxJQUFJLElBQUksRUFFdkQrTyxFQUFTak8sRUFBQUEsU0FBb0JqQyxFQUFBLFlBQW1CLEVBRWhEbVEsRUFBMEIsSUFBTSxRQUNwQ2xNLEVBQUE4aEIsRUFBYyxRQUFkLE1BQUE5aEIsRUFBcUIsV0FDdkIsRUFFTW1NLEVBQTJCLElBQU0sUUFDckNuTSxFQUFBOGhCLEVBQWMsUUFBZCxNQUFBOWhCLEVBQXFCLE9BQ3ZCLEVBRU1xTSxFQUFRLElBQU0sQ0FDbEJKLEVBQU8sTUFBUSxFQUNqQixFQUVNSyxFQUFzQixJQUFNLENBQ2hDRCxFQUFBLENBQ0YsRUFFTUUsRUFBdUJqSCxHQUFhLENBQ3hDQSxFQUFFLGVBQUEsRUFDRitHLEVBQUEsQ0FDRixFQUVBbFAsT0FBQUEsRUFBQUEsTUFBTThPLEVBQVEsSUFBTSxDQUNiNlYsRUFBYyxRQUNmN1YsRUFBTyxNQUNUQyxFQUFBLEVBRUFDLEVBQUEsRUFFRmIsR0FBY1csRUFBTyxLQUFLLEVBQzVCLENBQUMsRUFFRE8sRUFBQUEsY0FBYyxJQUFNLENBQ2xCWCxHQUFBLENBQ0YsQ0FBQyxFQUVEdEgsRUFBQUEsVUFBVSxJQUFNLENBQ1YwSCxFQUFPLE9BQ1RDLEVBQUEsQ0FFSixDQUFDLHdCQUlEdk8sRUFBQUEsWUFnRVc4TyxXQUFBLENBaEVBLE9BQVFwUSxFQUFBQSxNQUFBdVAsRUFBQSxDQUFZLEVBQUEsR0FDN0J6UCxFQUFBQSxtQkE4RFMsU0FBQSxDQTdETixNQUFLQyxFQUFBQSxlQUFBLENBQUEsYUFBaUJDLFFBQUFYLENBQUEsRUFBSSxHQUFHLFFBQVNXLFFBQUFYLENBQUEsRUFBSSxPQUFPLEtBQU1XLFFBQUFYLENBQUEsRUFBSSxNQUFNLEtBQU1XLFFBQUFYLENBQUEsRUFBSSxTQUFTLEdBQUcsTUFBTSxDQUFBLFVBQzFGLGdCQUFKLElBQUlvbUIsRUFDSCx3QkFBWXhWLEVBQW1CLENBQUEsTUFBQSxDQUFBLEVBQy9CLG9DQUFELElBQUEsQ0FBQSxFQUFjLENBQUEsU0FBQSxDQUFBLEdBQ2IscUJBQWdCQyxFQUFtQixDQUFBLFFBQUEsQ0FBQSxDQUFBLEdBRXBDcFEsRUFBQUEsbUJBc0RNLE1BQUEsQ0FyREgsTUFBS0MsRUFBQUEsZUFBQSxtQkFBMkNDLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxHQUFHLFFBQVEsUUFBbUJXLFFBQUFYLENBQUEsRUFBSSxRQUFRLEtBQWdCVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxVQUFVLE9BQWtCVyxRQUFBWCxDQUFBLEVBQUksT0FBTyxLQUFnQlcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFNBQVMsR0FBRyxPQUFrQlcsUUFBQVgsQ0FBQSxFQUFJLE1BQU0sSUFBQSxLQVUzTlMsRUFBQUEsbUJBd0JTLFNBQUEsQ0F2Qk4sTUFBS0MsRUFBQUEsZUFBQSxDQUFnQkMsUUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBa0JXLFFBQUFYLENBQUEsRUFBSSxVQUFVLFFBQXFCVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksUUFBUSxJQUFJLElBQWlCVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksUUFBUSxFQUFFLElBQWlCVyxRQUFBWCxDQUFBLEVBQUksU0FBUyxTQUFzQlcsUUFBQVgsQ0FBQSxFQUFJLFFBQVEsR0FBQSxLQWM5TEssRUFBQSw0QkFMUjRCLEVBQUFBLFlBTUUwQyxFQUFBLE9BTEMsTUFBS2pFLEVBQUFBLGVBQUEsQ0FBR0MsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxJQUFLVyxFQUFBQSxTQUFJLEtBQUssT0FBTyxHQUFHLENBQUEsRUFDOUMsS0FBTUEsRUFBQUEsTUFBQXdCLENBQUEsRUFBSyxhQUNYLFNBQVV4QixFQUFBQSxNQUFBOEMsQ0FBQSxFQUFTLFdBQ25CLHVCQUFPTyxFQUFJLE1BQUEsRUFBQSxtRUFJZHRCLEVBQUFBLFlBS0VpQyxFQUFBLENBSkMsTUFBS2pFLEVBQUFBLGVBQUEsQ0FBR0MsV0FBSSxLQUFLLEtBQUssSUFBS0EsUUFBQVgsQ0FBQSxFQUFJLEtBQUssT0FBTyxJQUFLVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxLQUFLLElBQUksQ0FBQSxFQUNwRSxLQUFNVyxFQUFBQSxNQUFBd0IsQ0FBQSxFQUFLLE1BQ1gsU0FBVXhCLEVBQUFBLE1BQUE4QyxDQUFBLEVBQVMsV0FDbkIsUUFBT2tOLENBQUEsMENBSVpqTyxFQUFBQSxZQUFlRixFQUFBLEVBRWYvQixFQUFBQSxtQkFjTSxNQUFBLENBYkgsTUFBS0MsRUFBQUEsZUFBQSxzQkFBa0RDLFFBQUFYLENBQUEsRUFBSSxRQUFRLEtBQWtCVyxRQUFBWCxDQUFBLEVBQUksT0FBTyxLQUFrQlcsUUFBQVgsQ0FBQSxFQUFJLFVBQVUsUUFBcUJXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxTQUFTLEVBQUUsT0FBb0JXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxTQUFTLEVBQUUsS0FBa0JXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLE9BQU8sSUFBaUJXLFFBQUFYLENBQUEsRUFBSSxTQUFTLFNBQXNCVyxRQUFBWCxDQUFBLEVBQUksTUFBTSxJQUFBLEtBWTNTNEMsRUFBQUEsV0FBUUMsRUFBQSxPQUFBLFVBQUEsQ0FBQSxFQUFBLE9BQUEsRUFBQSxDQUFBLDJSQzNIaEIsTUFBTXpDLEVBQVFDLEVBSVI2SSxFQUFXNUcsRUFBQUEsdUJBQXVDLEVBRWxEK0MsRUFBYyxJQUFNLENBQ25CakYsRUFBTSxXQUNUOEksRUFBUyxNQUFRLENBQUNBLEVBQVMsTUFFL0IsOEJBSUEzSSxFQUFBQSxtQkFrQ1MsU0FBQSxDQWpDTixNQUFLRyxFQUFBQSxlQUFBLGVBQStCQyxRQUFBWCxDQUFBLEVBQUksUUFBUSxLQUFZVyxRQUFBWCxDQUFBLEVBQUksTUFBTSxPQUFjVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxLQUFLLElBQVdXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLE9BQU8sS0FBWVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFNBQVMsR0FBRyxPQUFjVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxPQUFPLElBQVdXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLEtBQUssSUFBV2tKLEVBQUEsTUFBUSxDQUFBLFNBQWN2SSxFQUFBQSxTQUFJLEdBQUcsU0FBUyxFQUFBLENBQUtBLEVBQUFBLFNBQUksR0FBRyxRQUFRLFFBQVNBLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLE1BQU0sT0FBTyxFQUFTSyxFQUFBLFVBQVEsQ0FBS00sRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFFBQVEsUUFBUSxDQUFBLEdBWXBXLFNBQVVJLEVBQU0sU0FDaEIsUUFBT2lGLEVBQ1IsYUFBVyxTQUNYLEtBQUssUUFBQSxHQUVMNUUsRUFBQUEsbUJBZU0sTUFBQSxDQWRILE1BQUtDLEVBQUFBLGVBQUEseUJBQTZDQyxRQUFBWCxDQUFBLEVBQUksU0FBUyxTQUFrQlcsUUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBY1csUUFBQVgsQ0FBQSxFQUFJLE1BQU0sT0FBZ0JXLFFBQUFYLENBQUEsRUFBSSxNQUFNLE9BQWdCVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxPQUFPLEtBQWNrSixFQUFBLE1BQVEsQ0FBQSxTQUFjdkksRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEdBQUcsUUFBUSxPQUFPLEVBQUEsQ0FBS1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEdBQUcsU0FBUyxDQUFBLEtBVWpRMEMsRUFBQUEsWUFHRUMsRUFBQSxDQUZDLEtBQU1oQyxFQUFBQSxNQUFBd0IsQ0FBQSxFQUFLLE1BQ1gsS0FBTXhCLEVBQUFBLE1BQUFFLENBQUEsRUFBSyxLQUFBLDhPQ3pDbEIsTUFBTXdsQixFQUFhL2pCLEVBQUFBLHVCQUFzQyxFQUVuRCtDLEVBQWVKLEdBQWtCLENBQ3JDb2hCLEVBQVcsTUFBUXBoQixDQUNyQiw4QkFJQTFFLEVBQUFBLG1CQXFCTSxNQUFBLENBckJBLE1BQUtHLEVBQUFBLGVBQUEsQ0FBQSxZQUFnQkMsRUFBQUEsU0FBSSxRQUFRLEtBQU1BLEVBQUFBLFNBQUksT0FBTyxPQUFPLElBQUtBLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLE1BQU0sR0FBRyxDQUFBLENBQUEsR0FDdEYwQyxFQUFBQSxZQW1CZTRqQixHQUFBLENBbkJBLGNBQWEsSUFBSSxtQkFHNUIsSUFBNEIsRUFGOUJobUIsRUFBQUEsVUFBQSxFQUFBLEVBQUFDLEVBQUFBLG1CQWlCS3dFLFdBQUEsS0FBQU8sRUFBQUEsV0Fmb0JqRixFQUFBLEtBQUksQ0FBbkJrRixFQUFLTixtQkFGZjFFLEVBQUFBLG1CQWlCSyxLQUFBLENBaEJGLElBQUtnRixFQUFJLEtBQUEsR0FHVjdDLEVBQUFBLFlBV0VnQyxHQUFBLENBVkMsTUFBS2hFLEVBQUFBLGVBQUEsQ0FBZ0J1RSxJQUFVb2hCLFFBQWExbEIsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssTUFBTSxRQUFRLE1BQVFXLEVBQUFBLFNBQUksS0FBSyxNQUFNLFFBQVEsUUFBcUJBLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLE9BQU8sSUFBaUJXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLEtBQUssUUFBcUJXLFFBQUFYLENBQUEsRUFBSSxnQkFBZ0IsR0FBQSxHQU1sTixRQUFTVyxFQUFBQSxNQUFBbUMsQ0FBQSxFQUFRLE9BQ2pCLE1BQU95QyxFQUFJLE1BQ1gsT0FBUSxHQUNSLFFBQUtDLEdBQUVILEVBQVlKLENBQUssQ0FBQSxnREFFM0J4RSxFQUFBQSxtQkFBcUUsTUFBQSxDQUEvRCxNQUFLQyxFQUFBQSxlQUFBLENBQUEsaUJBQXFCdUUsSUFBVW9oQixFQUFBLE9BQVUsUUFBQSxDQUFBLENBQUEiLCJ4X2dvb2dsZV9pZ25vcmVMaXN0IjpbNjEsNjIsNjMsNjQsNjVdfQ==